Merge commit '4512b2ca328e179ab758ecd330039eaddc0c35ca' into cros_sdk

Update chromiumos-overlay to CrOS version 14056.0.0

BUG=b/192265868
TEST=local BE run
RELEASE_NOTE=Updated ChromeOS base to ChromeOS version 14056.0.0.

Signed-off-by: Robert Kolchmeyer <rkolchmeyer@google.com>
Change-Id: I701a0c39685d7c9a82b85b3a04f9d722025d9f16
diff --git a/app-accessibility/brltty/Manifest b/app-accessibility/brltty/Manifest
index b106a6b..8390af4 100644
--- a/app-accessibility/brltty/Manifest
+++ b/app-accessibility/brltty/Manifest
@@ -1 +1 @@
-DIST brltty-6.1.tar.xz 3394852 RMD160 e8c73a11ad5dca8cb7a92eea19f511a68ae2e4ad SHA1 720271372d2cd728b4315bbd12e3857fbdb3a398 SHA256 4a28e3f1879aee9082f9ce4100fd4053be47add7f8ab0f2af6d6a20590934b62
+DIST brltty-6.3.tar.xz 3186240 RMD160 0d172b9f4f249e0930c94bf6b01a9d0cafd06883 SHA1 3d5b68f2f9b5bfe699a1002887c00bd33c340f7c SHA256 b256df8f86b4d6a597cfe982cc5a7c831915de37cfece683ddb02b2329256a8a
diff --git a/app-accessibility/brltty/brltty-6.1.ebuild b/app-accessibility/brltty/brltty-6.1.ebuild
deleted file mode 100644
index 4e3c6a2..0000000
--- a/app-accessibility/brltty/brltty-6.1.ebuild
+++ /dev/null
@@ -1,169 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=5
-
-FINDLIB_USE="ocaml"
-
-inherit findlib eutils multilib toolchain-funcs java-pkg-opt-2 flag-o-matic \
-	autotools udev user cros-sanitizers
-
-DESCRIPTION="Daemon that provides access to the Linux/Unix console for a blind person"
-HOMEPAGE="http://mielke.cc/brltty/"
-SRC_URI="http://mielke.cc/brltty/archive/${P}.tar.xz"
-
-LICENSE="GPL-2 LGPL-2.1"
-SLOT="0"
-KEYWORDS="*"
-IUSE="+api +beeper bluetooth +contracted-braille doc +fm gpm iconv icu
-		java +midi ncurses nls ocaml +pcm python usb +speech
-		tcl X"
-REQUIRED_USE="doc? ( api )
-	java? ( api )
-	ocaml? ( api )
-	python? ( api )
-	tcl? ( api )"
-
-COMMON_DEP="bluetooth? ( net-wireless/bluez )
-	gpm? ( >=sys-libs/gpm-1.20 )
-	iconv? ( virtual/libiconv )
-	icu? ( dev-libs/icu )
-	ncurses? ( sys-libs/ncurses )
-	nls? ( virtual/libintl )
-	python? ( >=dev-python/cython-0.16 )
-	tcl? ( >=dev-lang/tcl-8.4.15 )
-	usb? ( virtual/libusb:0 )
-	X? ( x11-libs/libXaw )"
-DEPEND="virtual/pkgconfig
-	java? ( >=virtual/jdk-1.4 )
-	${COMMON_DEP}"
-RDEPEND="java? ( >=virtual/jre-1.4 )
-	${COMMON_DEP}"
-
-src_prepare() {
-	java-pkg-opt-2_src_prepare
-
-	# The code runs `pkg-config` directly instead of locating a suitable
-	# pkg-config wrapper (or respecting $PKG_CONFIG).
-	sed -i \
-		-e 's/\<pkg-config\>/${PKG_CONFIG:-pkg-config}/' \
-		aclocal.m4 configure.ac || die
-
-	# We run eautoconf instead of using eautoreconf because brltty uses
-	# a custom build system that uses autoconf without the rest of the
-	# autotools.
-	eautoconf
-}
-
-src_configure() {
-	sanitizers-setup-env
-	tc-export AR LD PKG_CONFIG
-	# override prefix in order to install into /
-	# braille terminal needs to be available as soon in the boot process as
-	# possible
-	# Also override localstatedir so that the lib/brltty directory is installed
-	# correctly.
-	# Disable stripping since we do that ourselves.
-	# Change the directory for the api unix socket from its default
-	# (under /var/lib) to a location under /run because the latter
-	# is backed by tmpfs.
-	local myconf=(
-		--prefix=/
-		--includedir=/usr/include
-		--localstatedir=/var
-		--disable-stripping
-		--without-attributes-table
-		--without-text-table
-		--with-install-root="${D}"
-		--with-writable-directory=/run/brltty
-		--with-api-socket-path=/run/brltty/BrlAPI
-		$(use_enable api)
-		$(use_with beeper beep-package)
-		$(use_enable contracted-braille)
-		$(use_with fm fm-package)
-		$(use_enable gpm)
-		$(use_enable iconv)
-		$(use_enable icu)
-		$(use_enable java java-bindings)
-		$(use_enable python python-bindings)
-		$(use_with midi midi-package)
-		$(use_enable nls i18n)
-		$(use_enable ocaml ocaml-bindings)
-		$(use_with pcm pcm-package)
-		$(use_enable speech speech-support)
-		$(use_enable tcl tcl-bindings)
-		$(use_enable X x)
-		$(use_with bluetooth bluetooth-package)
-		$(use_with ncurses curses)
-		$(use_with usb usb-package) )
-
-	econf "${myconf[@]}"
-}
-
-src_compile() {
-	local JAVAC_CONF=""
-	local OUR_JNI_FLAGS=""
-	if use java; then
-		OUR_JNI_FLAGS="$(java-pkg_get-jni-cflags)"
-		JAVAC_CONF="${JAVAC} -encoding UTF-8 $(java-pkg_javac-args)"
-	fi
-
-	# workaround for parallel build failure, bug #340903.
-	emake JAVA_JNI_FLAGS="${OUR_JNI_FLAGS}" JAVAC="${JAVAC_CONF}"
-}
-
-src_install() {
-	if use ocaml; then
-		findlib_src_preinst
-	fi
-
-	emake OCAML_LDCONF= install
-
-	if use java; then
-		# make install puts the _java.so there, and no it's not $(get_libdir)
-		rm -rf "${D}/usr/lib/java"
-		java-pkg_doso Bindings/Java/libbrlapi_java.so
-		java-pkg_dojar Bindings/Java/brlapi.jar
-	fi
-
-	insinto /etc
-	doins Documents/brltty.conf
-	udev_newrules Autostart/Udev/rules 70-brltty.rules
-	newinitd "${FILESDIR}"/brltty.rc brltty
-
-	libdir="$(get_libdir)"
-	mkdir -p "${D}"/usr/${libdir}/
-	mv "${D}"/${libdir}/*.a "${D}"/usr/${libdir}/
-	gen_usr_ldscript libbrlapi.so
-
-	cd Documents
-	mv Manual-BRLTTY/English/BRLTTY.txt BRLTTY-en.txt
-	mv Manual-BRLTTY/French/BRLTTY.txt BRLTTY-fr.txt
-	mv Manual-BrlAPI/English/BrlAPI.txt BrlAPI-en.txt
-	dodoc CONTRIBUTORS ChangeLog HISTORY README* TODO BRLTTY-*.txt
-	dohtml -r Manual-BRLTTY
-	if use doc; then
-		dohtml -r Manual-BrlAPI
-		dodoc BrlAPI-*.txt
-	fi
-
-	insinto /etc/init
-	doins "${FILESDIR}"/etc/init/brltty.conf
-	insinto /etc/dbus-1/system.d
-	doins "${FILESDIR}"/etc/dbus-1/org.chromium.Brltty.conf
-}
-
-pkg_preinst() {
-	enewgroup brltty
-	enewuser brltty
-}
-
-pkg_postinst() {
-	elog
-	elog please be sure "${ROOT}"etc/brltty.conf is correct for your system.
-	elog
-	elog To make brltty start on boot, type this command as root:
-	elog
-	elog rc-update add brltty boot
-}
diff --git a/app-accessibility/brltty/brltty-6.3-r3.ebuild b/app-accessibility/brltty/brltty-6.3-r3.ebuild
new file mode 120000
index 0000000..497ac94
--- /dev/null
+++ b/app-accessibility/brltty/brltty-6.3-r3.ebuild
@@ -0,0 +1 @@
+brltty-6.3.ebuild
\ No newline at end of file
diff --git a/app-accessibility/brltty/brltty-6.3.ebuild b/app-accessibility/brltty/brltty-6.3.ebuild
new file mode 100644
index 0000000..a45aabb
--- /dev/null
+++ b/app-accessibility/brltty/brltty-6.3.ebuild
@@ -0,0 +1,160 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+FINDLIB_USE="ocaml"
+
+inherit findlib eutils multilib toolchain-funcs java-pkg-opt-2 flag-o-matic \
+	autotools udev user cros-sanitizers
+
+DESCRIPTION="Daemon that provides access to the Linux/Unix console for a blind person"
+HOMEPAGE="http://brltty.app/"
+SRC_URI="http://brltty.app/archive/${P}.tar.xz"
+
+LICENSE="GPL-2 LGPL-2.1"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+api +beeper bluetooth +contracted-braille +fm gpm iconv icu
+		java +midi ncurses nls ocaml +pcm python usb +speech
+		tcl X"
+REQUIRED_USE="
+	java? ( api )
+	ocaml? ( api )
+	python? ( api )
+	tcl? ( api )
+"
+
+COMMON_DEP="bluetooth? ( net-wireless/bluez )
+	gpm? ( >=sys-libs/gpm-1.20 )
+	iconv? ( virtual/libiconv )
+	icu? ( dev-libs/icu )
+	ncurses? ( sys-libs/ncurses )
+	nls? ( virtual/libintl )
+	python? ( >=dev-python/cython-0.16 )
+	tcl? ( >=dev-lang/tcl-8.4.15 )
+	usb? ( virtual/libusb:0 )
+	X? ( x11-libs/libXaw )"
+DEPEND="virtual/pkgconfig
+	java? ( >=virtual/jdk-1.4 )
+	${COMMON_DEP}"
+RDEPEND="java? ( >=virtual/jre-1.4 )
+	${COMMON_DEP}"
+
+src_prepare() {
+	java-pkg-opt-2_src_prepare
+
+	# The code runs `pkg-config` directly instead of locating a suitable
+	# pkg-config wrapper (or respecting $PKG_CONFIG).
+	sed -i \
+		-e 's/\<pkg-config\>/${PKG_CONFIG:-pkg-config}/' \
+		aclocal.m4 configure.ac || die
+
+	# We run eautoconf instead of using eautoreconf because brltty uses
+	# a custom build system that uses autoconf without the rest of the
+	# autotools.
+	eautoconf
+}
+
+src_configure() {
+	sanitizers-setup-env
+	tc-export AR LD PKG_CONFIG
+	# override prefix in order to install into /
+	# braille terminal needs to be available as soon in the boot process as
+	# possible
+	# Also override localstatedir so that the lib/brltty directory is installed
+	# correctly.
+	# Disable stripping since we do that ourselves.
+	# Change the directory for the api unix socket from its default
+	# (under /var/lib) to a location under /run because the latter
+	# is backed by tmpfs.
+	local myconf=(
+		--prefix=/
+		--includedir=/usr/include
+		--localstatedir=/var
+		--disable-stripping
+		--without-attributes-table
+		--without-text-table
+		--with-install-root="${D}"
+		--with-writable-directory=/run/brltty
+		--with-api-socket-path=/run/brltty/BrlAPI
+		$(use_enable api)
+		$(use_with beeper beep-package)
+		$(use_enable contracted-braille)
+		$(use_with fm fm-package)
+		$(use_enable gpm)
+		$(use_enable iconv)
+		$(use_enable icu)
+		$(use_enable java java-bindings)
+		$(use_enable python python-bindings)
+		$(use_with midi midi-package)
+		$(use_enable nls i18n)
+		$(use_enable ocaml ocaml-bindings)
+		$(use_with pcm pcm-package)
+		$(use_enable speech speech-support)
+		$(use_enable tcl tcl-bindings)
+		$(use_enable X x)
+		$(use_with bluetooth bluetooth-package)
+		$(use_with ncurses curses)
+		$(use_with usb usb-package) )
+
+	econf "${myconf[@]}"
+}
+
+src_compile() {
+	local JAVAC_CONF=""
+	local OUR_JNI_FLAGS=""
+	if use java; then
+		OUR_JNI_FLAGS="$(java-pkg_get-jni-cflags)"
+		JAVAC_CONF="${JAVAC} -encoding UTF-8 $(java-pkg_javac-args)"
+	fi
+
+	# workaround for parallel build failure, bug #340903.
+	emake JAVA_JNI_FLAGS="${OUR_JNI_FLAGS}" JAVAC="${JAVAC_CONF}"
+}
+
+src_install() {
+	if use ocaml; then
+		findlib_src_preinst
+	fi
+
+	emake OCAML_LDCONF= install
+
+	if use java; then
+		# make install puts the _java.so there, and no it's not $(get_libdir)
+		rm -rf "${D}/usr/lib/java"
+		java-pkg_doso Bindings/Java/libbrlapi_java.so
+		java-pkg_dojar Bindings/Java/brlapi.jar
+	fi
+
+	insinto /etc
+	doins Documents/brltty.conf
+	udev_newrules Autostart/Udev/device.rules 70-brltty-device.rules
+	udev_newrules Autostart/Udev/uinput.rules 70-brltty-uinput.rules
+	newinitd "${FILESDIR}"/brltty.rc brltty
+
+	libdir="$(get_libdir)"
+	mkdir -p "${D}"/usr/${libdir}/
+	mv "${D}"/${libdir}/*.a "${D}"/usr/${libdir}/
+	gen_usr_ldscript libbrlapi.so
+
+	insinto /etc/init
+	doins "${FILESDIR}"/etc/init/brltty.conf
+	insinto /etc/dbus-1/system.d
+	doins "${FILESDIR}"/etc/dbus-1/org.chromium.Brltty.conf
+}
+
+pkg_preinst() {
+	enewgroup brltty
+	enewuser brltty
+}
+
+pkg_postinst() {
+	elog
+	elog please be sure "${ROOT}"etc/brltty.conf is correct for your system.
+	elog
+	elog To make brltty start on boot, type this command as root:
+	elog
+	elog rc-update add brltty boot
+}
diff --git a/app-accessibility/brltty/brltty.bashrc b/app-accessibility/brltty/brltty.bashrc
index dc91b8a..40b5868 100644
--- a/app-accessibility/brltty/brltty.bashrc
+++ b/app-accessibility/brltty/brltty.bashrc
@@ -3,7 +3,11 @@
 # found in the LICENSE file.
 
 cros_pre_src_prepare_brltty_config() {
-	epatch "${FILESDIR}"/${P}-fix-build.patch
+	epatch "${FILESDIR}"/${P}-aph-firmware-upgrade.patch
+	epatch "${FILESDIR}"/${P}-gettext-as-format-string.patch
+	epatch "${FILESDIR}"/${P}-locale-not-found-log.patch
+	epatch "${FILESDIR}"/${P}-use-fchmod-on-socket.patch
+	epatch "${FILESDIR}"/${P}-sticky-brlapi-dir.patch
 }
 
 cros_post_src_prepare_brltty_config() {
@@ -16,7 +20,7 @@
 	# modify the usb device definitions in the C source, and for those
 	# to be picked up by updusbdevs, those patches need to be applied
 	# before the below line.
-	./updusbdevs -nogeneric udev:Autostart/Udev/rules || die
+	./updusbdevs -nogeneric udev:Autostart/Udev/device.rules.in || die
 }
 
 cros_post_src_install_brltty_config() {
diff --git a/app-accessibility/brltty/files/brltty b/app-accessibility/brltty/files/brltty
index b0b5dad..3723f9b 100755
--- a/app-accessibility/brltty/files/brltty
+++ b/app-accessibility/brltty/files/brltty
@@ -4,68 +4,303 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-# This script starts brltty in a minijail sandbox.
-if [ $# -ne 0 ]; then
-  echo "ERROR: $0 takes no arguments"
-  exit 1
-fi
+# Define some script constants.
+scriptName="${0##*/}"
 
-BRLTTY_RUNDIR=/run/brltty
-BRLAPI_SOCKETDIR="${BRLTTY_RUNDIR}"/BrlAPI
+BRLTTY_USER="brltty"
+BRLTTY_GROUP="brltty"
+
+BRLTTY_SUBDIR="brltty"
+BRLTTY_VARDIR="/var/lib/${BRLTTY_SUBDIR}"
+BRLTTY_RUNDIR="/run/${BRLTTY_SUBDIR}"
+
+BRLTTY_CFGFILE="/etc/brltty.conf"
+BRLTTY_DEVFILE="${BRLTTY_RUNDIR}/device"
+BRLTTY_DRVFILE="${BRLTTY_RUNDIR}/driver"
+BRLTTY_ENVFILE="${BRLTTY_RUNDIR}/env"
+BRLTTY_LOGFILE="${BRLTTY_RUNDIR}/log"
+BRLTTY_PIDFILE="${BRLTTY_RUNDIR}/pid"
+
+BRLAPI_SUBDIR="BrlAPI"
+BRLAPI_SOCDIR="${BRLTTY_RUNDIR}/${BRLAPI_SUBDIR}"
 # The number (0) must be kept in sync with the Host api parameter in
 # brltty.conf.
-BRLAPI_SOCKETFILE="${BRLAPI_SOCKETDIR}/0"
+BRLAPI_SOCFILE="${BRLAPI_SOCDIR}/0"
+
+showUsageSummary() {
+cat <<END-OF-USAGE-SUMMARY
+Usage: ${scriptName} [-option ...] [action [argument ...]]
+
+These options may be specified:
+  -h  show this usage summary and then exit
+  -q  be quiet - don't show informative output
+  -v  be verbose - show host commands, etc
+
+These actions may be specified:
+  device
+  driver
+  pid
+  prepare
+  run [brltty-argument ...]
+  stop
+  test
+  wait
+END-OF-USAGE-SUMMARY
+}
+
+putLine() {
+  local line="${1}"
+
+  "${quietRequested}" || echo "${line}"
+}
+
+putFile() {
+  local file="${1}"
+
+  [ -f "${file}" ] || return 8
+  "${quietRequested}" && return 0
+  cat "${file}"
+}
+
+writeMessage() {
+  local message="${1}"
+
+  echo >&2 "${scriptName}: ${message}"
+}
+
+syntaxError() {
+  local message="${1}"
+
+  writeMessage "${message}"
+  exit 2
+}
+
+# Set the option defaults.
+helpRequested=false
+quietRequested=false
+verboseRequested=false
+
+# Process the options.
+while getopts ":hqv" option
+do
+  case "${option}"
+  in
+    h) helpRequested=true;;
+    q) quietRequested=true;;
+    v) verboseRequested=true;;
+
+    :) syntaxError "missing operand: -${OPTARG}";;
+   \?) syntaxError "unknown option: -${OPTARG}";;
+    *) syntaxError "unimplemented option: -${option}";;
+  esac
+done
+
+# Remove the options from the command line.
+shift $((OPTIND - 1))
+
+# If help was requested then just show the usage summary.
+"${helpRequested}" && {
+  showUsageSummary
+  exit 0
+}
+
+# Set the default action (and its arguments).
+[ "${#}" -eq 0 ] && set -- run
 
 log() {
-  logger -t brltty_udev "$@"
+  local message="${*}"
+
+  [ -t 2 ] && writeMessage "${message}"
+  logger -t brltty_udev "${Message}"
 }
 
-# Kill any stale brltty processes that might be holding on to the
-# BrlAPI socket.  We try hard, because failure to free up the socket will lock
-# the braille user out from the machine!
-kill_stale_brltty() {
-  local SIGTERM_MAX_TRIES=5
-  if fuser -s -k -TERM "${BRLAPI_SOCKETFILE}"; then
-    log "Waiting for stale brltty process to terminate"
-    local i=0
-    while [ ${i} -lt ${SIGTERM_MAX_TRIES} ]; do
-      sleep .1
-      if ! fuser -s -k -TERM "${BRLAPI_SOCKETFILE}"; then
-        return
-      fi
-      : $(( i += 1 ))
-    done
-    log "Sending SIGKILL to stale brltty process"
-    fuser -s -k -KILL "${BRLAPI_SOCKET_FILE}"
-  fi
+executeHostCommand() {
+  "${verboseRequested}" && writeMessage "host command: ${*}"
+
+  "${@}"
+  local exitStatus="${?}"
+
+  "${verboseRequested}" && {
+    [ "${exitStatus}" -eq 0 ] || writeMessage "exit status: ${exitStatus}"
+  }
+
+  return "${exitStatus}"
 }
-kill_stale_brltty
 
-# Ensure that the directories exist and have the right permissions.
-# NOTE: Chrome is observing ${BRLAPI_SOCKETDIR} for changes.
-# It is important to only remove world-readability *after* setting the
-# group ownership so that the browser doesn't lose read access.
-# This is a race that would cause chrome to stop observing the directory
-# and therefore not get notified when a braille display is connected.
-mkdir -p -m 0755 "${BRLTTY_RUNDIR}" "${BRLAPI_SOCKETDIR}"
-chown -R brltty:brltty "${BRLTTY_RUNDIR}" "${BRLAPI_SOCKETDIR}"
-chmod 750 "${BRLTTY_RUNDIR}" "${BRLAPI_SOCKETDIR}"
+# Ensure that the needed directories exist and have the right ownership and permissions.
+prepareNeededDirectories() {
+  # NOTE: Chrome is observing ${BRLAPI_SOCDIR} for changes.
+  # It is important to only remove world-readability *after* setting the
+  # group ownership so that the browser doesn't lose read access.
+  # This is a race that would cause chrome to stop observing the directory
+  # and therefore not get notified when a braille display is connected.
 
-# Files created by the daemon shouldn't be accessible by users not in the
-# brltty group.
-umask 0007
+  set -- "${BRLTTY_VARDIR}" "${BRLTTY_RUNDIR}" "${BRLAPI_SOCDIR}"
+  executeHostCommand mkdir -p -m 0755 "${@}"
+  executeHostCommand chown -R "${BRLTTY_USER}:${BRLTTY_GROUP}" "${@}"
+  executeHostCommand chmod 750 "${@}"
+}
 
-log "Starting brltty, device: ${BRLTTY_BRAILLE_DEVICE}, " \
-    "driver: ${BRLTTY_BRAILLE_DRIVER}"
+# Send a signal to the process that owns the BrlAPI server socket.
+sendSignal() {
+  local signal="${1}"
 
-# -d: device for accessing braille.
-if [ -n "${ADDRESS}" ]; then
-  set -- "$@" -d "bluetooth:${ADDRESS}"
-fi
+  # This must be the last command so that we return its exit status.
+  [ -e "${BRLAPI_SOCFILE}" ] && {
+    executeHostCommand fuser -s -k -"${signal}" "${BRLAPI_SOCFILE}"
+  }
+}
 
-# Start brltty in the jail.
-# The options used below are:
-# - -q: No startup announcement of brltty's version on the braille display.
-# - -E: Get some arguments (driver, device, etc) from the environment.
-# - -n: makes Brltty run without forking (keeping this job started/stoppable).
-exec /sbin/minijail0 -u brltty -g brltty -G -- /bin/brltty -q -E -n "$@"
+isProcessRunning() {
+  # This must be the last command so that we return its exit status.
+  sendSignal 0
+}
+
+# Stop any brltty processes that might be holding on to the
+# BrlAPI server socket.  We try hard, because failure to free up the socket
+# will lock the braille user out from the machine!
+stopProcess() {
+  sendSignal TERM || return 0
+
+  log "waiting for brltty to terminate"
+  local delay=0.1 # in seconds
+  local limit=5
+  local try=0
+
+  while [ $((try += 1)) -le "${limit}" ]
+  do
+    executeHostCommand sleep "${delay}"
+    sendSignal TERM || return 0
+  done
+
+  log "forcing brltty to terminate"
+  sendSignal KILL
+}
+
+noMoreParameters() {
+  [ "${#}" -eq 0 ] || syntaxError "too many parameters"
+}
+
+action_device() {
+  noMoreParameters "${@}"
+
+  putFile "${BRLTTY_DEVFILE}"
+  exit "${?}"
+}
+
+action_driver() {
+  noMoreParameters "${@}"
+
+  putFile "${BRLTTY_DRVFILE}"
+  exit "${?}"
+}
+
+action_pid() {
+  noMoreParameters "${@}"
+
+  putFile "${BRLTTY_PIDFILE}"
+  exit "${?}"
+}
+
+action_prepare() {
+  noMoreParameters "${@}"
+
+  prepareNeededDirectories
+  exit "${?}"
+}
+
+# Run brltty within a minijail.
+action_run() {
+  stopProcess
+  prepareNeededDirectories
+
+  # Files created by the daemon shouldn't be accessible by users not in the
+  # brltty group.
+  executeHostCommand umask 0007
+
+  # If the Bluetooth address is defined then use that device.
+  [ -n "${ADDRESS}" ] && {
+    executeHostCommand export BRLTTY_BRAILLE_DEVICE="bluetooth:${ADDRESS}"
+  }
+
+  echo "${BRLTTY_BRAILLE_DEVICE}" >"${BRLTTY_DEVFILE}"
+  echo "${BRLTTY_BRAILLE_DRIVER}" >"${BRLTTY_DRVFILE}"
+
+  log "starting brltty -" \
+      "device:${BRLTTY_BRAILLE_DEVICE:-unknown}" \
+      "driver:${BRLTTY_BRAILLE_DRIVER:-unknown}"
+
+  executeHostCommand export BRLTTY_CONFIGURATION_FILE="${BRLTTY_CFGFILE}"
+  executeHostCommand export BRLTTY_UPDATABLE_DIRECTORY="${BRLTTY_VARDIR}"
+  executeHostCommand export BRLTTY_WRITABLE_DIRECTORY="${BRLTTY_RUNDIR}"
+  executeHostCommand export BRLTTY_PID_FILE="${BRLTTY_PIDFILE}"
+  executeHostCommand export BRLTTY_LOG_FILE="${BRLTTY_LOGFILE}"
+
+  # The provided arguments for brltty are in ${@}.
+  # Add ours before them in case they contain syntax errors.
+  set -- -E "${@}" # Allow options to be specified via environment variables.
+  set -- -n "${@}" # Keep brltty in the foreground.
+  set -- -q "${@}" # Suppress the start message.
+
+  # Run brltty within a restricted environment.
+  env >"${BRLTTY_ENVFILE}"
+  executeHostCommand exec \
+    /sbin/minijail0 -u "${BRLTTY_USER}" -g "${BRLTTY_GROUP}" -G -- \
+    /bin/brltty "${@}"
+
+  # We shouldn't get here - but we might because exec can fail.
+  exit "${?}"
+}
+
+action_stop() {
+  noMoreParameters "${@}"
+
+  stopProcess
+  exit "${?}"
+}
+
+action_test() {
+  noMoreParameters "${@}"
+
+  isProcessRunning
+  local exitStatus="${?}"
+
+  [ "${exitStatus}" -eq 0 ] && putLine "running" || putLine "stopped"
+  exit "${exitStatus}"
+}
+
+action_wait() {
+  noMoreParameters "${@}"
+
+  local delay=0.5
+  local limit=10
+  local try=0
+
+  while isProcessRunning
+  do
+    [ $((try += 1)) -gt "${limit}" ] && {
+      log "brltty has not terminated"
+      exit 9
+    }
+
+    executeHostCommand sleep "${delay}"
+  done
+
+  exit 0
+}
+
+[ "${#}" -eq 0 ] && syntaxError "missing action"
+action="${1}"
+shift
+
+case "${action}"
+in
+  device | driver | pid | prepare | run | stop | test | wait)
+    "action_${action}" "${@}"
+    ;;
+
+  *) syntaxError "unknown action: ${action}";;
+esac
+
+# Just in case we get here.
+exit 0
diff --git a/app-accessibility/brltty/files/brltty-6.1-fix-build.patch b/app-accessibility/brltty/files/brltty-6.1-fix-build.patch
deleted file mode 100644
index 3623e77..0000000
--- a/app-accessibility/brltty/files/brltty-6.1-fix-build.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-commit 5f9a609f278a6b3934b46f036ec671ecfe15fadc
-Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
-Date:   Tue Apr 7 11:01:08 2020 +0200
-
-    brlapi server: Fix build with -fno-common and --disable-contracted-braille
-
-diff --git a/Programs/brlapi_server.c b/Programs/brlapi_server.c
-index 242b1f0ea..8136d4ce2 100644
---- a/Programs/brlapi_server.c
-+++ b/Programs/brlapi_server.c
-@@ -1964,6 +1964,7 @@ PARAM_WRITER(computerBrailleTable)
-   return param_writeString(changeTextTable, data, size);
- }
- 
-+#ifdef ENABLE_CONTRACTED_BRAILLE
- /* BRLAPI_PARAM_LITERARY_BRAILLE_TABLE */
- PARAM_READER(literaryBrailleTable)
- {
-@@ -1975,6 +1976,7 @@ PARAM_WRITER(literaryBrailleTable)
- {
-   return param_writeString(changeContractionTable, data, size);
- }
-+#endif
- 
- /* BRLAPI_PARAM_MESSAGE_LOCALE */
- PARAM_READER(messageLocale)
-@@ -2173,11 +2175,13 @@ static const ParamDispatch paramDispatch[BRLAPI_PARAM_COUNT] = {
-     .write = param_computerBrailleTable_write,
-   },
- 
-+#ifdef ENABLE_CONTRACTED_BRAILLE
-   [BRLAPI_PARAM_LITERARY_BRAILLE_TABLE] = {
-     .global = 1,
-     .read = param_literaryBrailleTable_read,
-     .write = param_literaryBrailleTable_write,
-   },
-+#endif /* ENABLE_CONTRACTED_BRAILLE */
- 
-   [BRLAPI_PARAM_MESSAGE_LOCALE] = {
-     .global = 1,
diff --git a/app-accessibility/brltty/files/brltty-6.3-aph-firmware-upgrade.patch b/app-accessibility/brltty/files/brltty-6.3-aph-firmware-upgrade.patch
new file mode 100644
index 0000000..9575847
--- /dev/null
+++ b/app-accessibility/brltty/files/brltty-6.3-aph-firmware-upgrade.patch
@@ -0,0 +1,89 @@
+commit 6b5a86f342e4b6b086f13b5b50d1eb1209a0045c
+Author: Dave Mielke <Dave@Mielke.cc>
+Date:   Mon Mar 8 18:31:49 2021 -0500
+
+    Fix support for the APH Chameleon 20 with firmware version 1.1. (dm)
+
+diff --git a/Drivers/Braille/HumanWare/braille.c b/Drivers/Braille/HumanWare/braille.c
+index 8a2b2f233..1feb40fd0 100644
+--- a/Drivers/Braille/HumanWare/braille.c
++++ b/Drivers/Braille/HumanWare/braille.c
+@@ -946,34 +946,74 @@ connectResource (BrailleDisplay *brl, const char *identifier) {
+       .data = &resourceData_HID_touch
+     },
+ 
+-    { /* APH Chameleon 20 (HID protocol) */
++    { /* APH Chameleon 20 (HID protocol, firmware 1.0) */
+       .vendor=0X1C71, .product=0XC101, 
+       .configuration=1, .interface=1, .alternative=0,
+       .inputEndpoint=4, .outputEndpoint=5,
++      .verifyInterface = 1,
+       .data = &resourceData_HID_C20,
+       .resetDevice = 1
+     },
+ 
+-    { /* APH Mantis Q40 (HID protocol) */
++    { /* APH Chameleon 20 (HID protocol, firmware 1.1) */
++      .vendor=0X1C71, .product=0XC101, 
++      .configuration=1, .interface=0, .alternative=0,
++      .inputEndpoint=1, .outputEndpoint=2,
++      .verifyInterface = 1,
++      .data = &resourceData_HID_C20,
++      .resetDevice = 1
++    },
++
++    { /* APH Mantis Q40 (HID protocol, firmware 1.0) */
+       .vendor=0X1C71, .product=0XC111, 
+       .configuration=1, .interface=1, .alternative=0,
+       .inputEndpoint=4, .outputEndpoint=5,
++      .verifyInterface = 1,
++      .data = &resourceData_HID_M40,
++      .resetDevice = 1
++    },
++
++    { /* APH Mantis Q40 (HID protocol, firmware 1.1) */
++      .vendor=0X1C71, .product=0XC111, 
++      .configuration=1, .interface=0, .alternative=0,
++      .inputEndpoint=1, .outputEndpoint=2,
++      .verifyInterface = 1,
+       .data = &resourceData_HID_M40,
+       .resetDevice = 1
+     },
+ 
+-    { /* NLS eReader (HID protocol) */
++    { /* NLS eReader (HID protocol, firmware 1.0) */
+       .vendor=0X1C71, .product=0XCE01, 
+       .configuration=1, .interface=1, .alternative=0,
+       .inputEndpoint=4, .outputEndpoint=5,
++      .verifyInterface = 1,
+       .data = &resourceData_HID_NLS,
+       .resetDevice = 1
+     },
+ 
+-    { /* Humanware BrailleOne (HID protocol) */
++    { /* NLS eReader (HID protocol, firmware 1.1) */
++      .vendor=0X1C71, .product=0XCE01, 
++      .configuration=1, .interface=0, .alternative=0,
++      .inputEndpoint=1, .outputEndpoint=2,
++      .verifyInterface = 1,
++      .data = &resourceData_HID_NLS,
++      .resetDevice = 1
++    },
++
++    { /* Humanware BrailleOne (HID protocol, firmware 1.0) */
+       .vendor=0X1C71, .product=0XC121, 
+       .configuration=1, .interface=1, .alternative=0,
+       .inputEndpoint=4, .outputEndpoint=5,
++      .verifyInterface = 1,
++      .data = &resourceData_HID_one,
++      .resetDevice = 1
++    },
++
++    { /* Humanware BrailleOne (HID protocol, firmware 1.1) */
++      .vendor=0X1C71, .product=0XC121, 
++      .configuration=1, .interface=0, .alternative=0,
++      .inputEndpoint=1, .outputEndpoint=2,
++      .verifyInterface = 1,
+       .data = &resourceData_HID_one,
+       .resetDevice = 1
+     },
diff --git a/app-accessibility/brltty/files/brltty-6.3-gettext-as-format-string.patch b/app-accessibility/brltty/files/brltty-6.3-gettext-as-format-string.patch
new file mode 100644
index 0000000..edfd3e1
--- /dev/null
+++ b/app-accessibility/brltty/files/brltty-6.3-gettext-as-format-string.patch
@@ -0,0 +1,37 @@
+commit c84843f822a3cedf97a96f200cd55b38f5c1f147
+Author: Dave Mielke <Dave@Mielke.cc>
+Date:   Sat Feb 6 17:10:21 2021 -0500
+
+    Tell gcc that our gettext() returns a format string. (dm)
+
+diff --git a/Headers/prologue.h b/Headers/prologue.h
+index bd2f1c233..0ac9dcd77 100644
+--- a/Headers/prologue.h
++++ b/Headers/prologue.h
+@@ -23,6 +23,12 @@
+ extern "C" {
+ #endif /* __cplusplus */
+ 
++#ifdef __GNUC__
++#define FORMAT_ARG(n) __attribute__((format_arg((n))))
++#else /* __GNUC__ */
++#define FORMAT_ARG(n)
++#endif /* __GNUC__ */
++
+ #undef HAVE_BUILTIN_POPCOUNT
+ #ifdef __has_builtin
+ #if __has_builtin(__builtin_popcount)
+@@ -429,8 +435,11 @@ mempcpy (void *dest, const void *src, size_t size) {
+ #ifdef ENABLE_I18N_SUPPORT
+ #include <libintl.h>
+ #else /* ENABLE_I18N_SUPPORT */
+-extern char *gettext (const char *text);
+-extern char *ngettext (const char *singular, const char *plural, unsigned long int count);
++extern char *gettext (const char *text) FORMAT_ARG(1);
++
++extern char *ngettext (
++  const char *singular, const char *plural, unsigned long int count
++) FORMAT_ARG(1) FORMAT_ARG(2);
+ #endif /* ENABLE_I18N_SUPPORT */
+ #define strtext(string) string
+ 
diff --git a/app-accessibility/brltty/files/brltty-6.3-locale-not-found-log.patch b/app-accessibility/brltty/files/brltty-6.3-locale-not-found-log.patch
new file mode 100644
index 0000000..132d67b
--- /dev/null
+++ b/app-accessibility/brltty/files/brltty-6.3-locale-not-found-log.patch
@@ -0,0 +1,87 @@
+commit 74241c9aa71b94ba157ab6700339b7868159cc98
+Author: Dave Mielke <Dave@Mielke.cc>
+Date:   Sat Feb 6 14:00:02 2021 -0500
+
+    The "messages locale not found" log should be debug (not warning). (dm)
+
+diff --git a/Programs/messages.c b/Programs/messages.c
+index 9b6606186..cba73ded8 100644
+--- a/Programs/messages.c
++++ b/Programs/messages.c
+@@ -159,12 +159,12 @@ makeLocaleDirectoryPath (void) {
+     code += 1;
+   }
+ 
+-  logMessage(LOG_WARNING, "messages locale not found: %s", localeSpecifier);
++  logMessage(LOG_DEBUG, "messages locale not found: %s", localeSpecifier);
+   return NULL;
+ }
+ 
+ static char *
+-makeMessagesFilePath (void) {
++makeMessageCatalogPath (void) {
+   char *locale = makeLocaleDirectoryPath();
+ 
+   if (locale) {
+@@ -174,12 +174,12 @@ makeMessagesFilePath (void) {
+     locale = NULL;
+ 
+     if (category) {
+-      char *file = makeFilePath(category, domainName, ".mo");
++      char *catalog = makeFilePath(category, domainName, ".mo");
+ 
+       free(category);
+       category = NULL;
+ 
+-      if (file) return file;
++      if (catalog) return catalog;
+     }
+   }
+ 
+@@ -192,7 +192,7 @@ loadMessagesData (void) {
+   ensureAllMessagesProperties();
+ 
+   int loaded = 0;
+-  char *path = makeMessagesFilePath();
++  char *path = makeMessageCatalogPath();
+ 
+   if (path) {
+     int fd = open(path, (O_RDONLY | O_BINARY));
+@@ -210,12 +210,12 @@ loadMessagesData (void) {
+ 
+             if (count == -1) {
+               logMessage(LOG_WARNING,
+-                "messages data read error: %s: %s",
++                "message catalog read error: %s: %s",
+                 path, strerror(errno)
+               );
+             } else if (count < size) {
+               logMessage(LOG_WARNING,
+-                "truncated messages data: %"PRIssize" < %"PRIsize": %s",
++                "truncated message catalog: %"PRIssize" < %"PRIsize": %s",
+                 count, size, path
+               );
+             } else {
+@@ -236,11 +236,11 @@ loadMessagesData (void) {
+             logMallocError();
+           }
+         } else {
+-          logMessage(LOG_WARNING, "no messages data");
++          logMessage(LOG_WARNING, "empty message catalog");
+         }
+       } else {
+         logMessage(LOG_WARNING,
+-          "messages file stat error: %s: %s",
++          "message catalog stat error: %s: %s",
+           path, strerror(errno)
+         );
+       }
+@@ -248,7 +248,7 @@ loadMessagesData (void) {
+       close(fd);
+     } else {
+       logMessage(LOG_WARNING,
+-        "messages file open error: %s: %s",
++        "message catalog open error: %s: %s",
+         path, strerror(errno)
+       );
+     }
diff --git a/app-accessibility/brltty/files/brltty-6.3-sticky-brlapi-dir.patch b/app-accessibility/brltty/files/brltty-6.3-sticky-brlapi-dir.patch
new file mode 100644
index 0000000..c9f8421
--- /dev/null
+++ b/app-accessibility/brltty/files/brltty-6.3-sticky-brlapi-dir.patch
@@ -0,0 +1,32 @@
+commit 7aa173007fc3109c0de4604153f2e71bf2de2629
+Author: Dave Mielke <Dave@Mielke.cc>
+Date:   Fri Jun 18 05:59:30 2021 -0400
+
+    Set the sticky bit on the BrAPI sockets directory. (dm)
+
+diff --git a/Programs/brlapi_server.c b/Programs/brlapi_server.c
+index c567264fb..0eb346b7e 100644
+--- a/Programs/brlapi_server.c
++++ b/Programs/brlapi_server.c
+@@ -3056,18 +3056,18 @@ adjustPermissions (
+ 
+   if (adjust) {
+     struct stat status;
+-
+     if (!getStatus(object, &status)) return 0;
+ 
+     {
+       mode_t oldPermissions = status.st_mode & ~S_IFMT;
+       mode_t newPermissions = oldPermissions;
+ 
+-#ifdef S_IRGRP
++      #ifdef S_IRGRP
+       if (oldPermissions & S_IRUSR) newPermissions |= S_IRGRP | S_IROTH;
+       if (oldPermissions & S_IWUSR) newPermissions |= S_IWGRP | S_IWOTH;
+       if (oldPermissions & S_IXUSR) newPermissions |= S_IXGRP | S_IXOTH;
+-#endif
++      if (S_ISDIR(status.st_mode)) newPermissions |= S_ISVTX | S_IXOTH;
++      #endif
+ 
+       if (newPermissions != oldPermissions) {
+         if (!setPermissions(object, newPermissions)) {
diff --git a/app-accessibility/brltty/files/brltty-6.3-use-fchmod-on-socket.patch b/app-accessibility/brltty/files/brltty-6.3-use-fchmod-on-socket.patch
new file mode 100644
index 0000000..960b8df
--- /dev/null
+++ b/app-accessibility/brltty/files/brltty-6.3-use-fchmod-on-socket.patch
@@ -0,0 +1,145 @@
+commit 81cc72e023f6ca0fe6952d9b266ed937b38d28bc
+Author: Dave Mielke <Dave@Mielke.cc>
+Date:   Thu Jun 17 21:07:40 2021 -0400
+
+    Use fchmod (not chmod) to adjust the BrlAPI socket permissions. (dm)
+
+diff --git a/Programs/brlapi_server.c b/Programs/brlapi_server.c
+index 74bac5b09..c567264fb 100644
+--- a/Programs/brlapi_server.c
++++ b/Programs/brlapi_server.c
+@@ -3036,32 +3036,28 @@ static int readPid(char *path)
+ }
+ 
+ static int
+-adjustPermissions (const char *path) {
+-  int adjust = !geteuid();
++adjustPermissions (
++  const void *object, const char *container,
++  int (*getStatus) (const void *object, struct stat *status),
++  int (*setPermissions) (const void *object, mode_t permissions)
++) {
++  uid_t user = geteuid();
++  int adjust = !user;
+ 
+   if (!adjust) {
+-    char *directory = getPathDirectory(path);
+-
+-    if (directory) {
+-      struct stat status;
+-
+-      if (stat(directory, &status) == -1) {
+-        logSystemError("stat");
+-      } else if (status.st_uid == geteuid()) {
+-        adjust = 1;
+-      }
++    struct stat status;
+ 
+-      free(directory);
++    if (stat(container, &status) == -1) {
++      logSystemError("stat");
++    } else if (status.st_uid == user) {
++      adjust = 1;
+     }
+   }
+ 
+   if (adjust) {
+     struct stat status;
+ 
+-    if (stat(path, &status) == -1) {
+-      logSystemError("stat");
+-      return 0;
+-    }
++    if (!getStatus(object, &status)) return 0;
+ 
+     {
+       mode_t oldPermissions = status.st_mode & ~S_IFMT;
+@@ -3074,8 +3070,7 @@ adjustPermissions (const char *path) {
+ #endif
+ 
+       if (newPermissions != oldPermissions) {
+-        if (chmod(path, newPermissions) == -1) {
+-          logSystemError("chmod");
++        if (!setPermissions(object, newPermissions)) {
+           return 0;
+         }
+       }
+@@ -3084,6 +3079,60 @@ adjustPermissions (const char *path) {
+ 
+   return 1;
+ }
++
++static int
++getPathStatus (const void *object, struct stat *status) {
++  const char *path = object;
++  if (stat(path, status) != -1) return 1;
++  logSystemError("stat");
++  return 0;
++}
++
++static int
++setPathPermissions (const void *object, mode_t permissions) {
++  const char *path = object;
++  if (chmod(path, permissions) != -1) return 1;
++  logSystemError("chmod");
++  return 0;
++}
++
++static int
++adjustPathPermissions (const char *path) {
++  int ok = 0;
++  char *parent = getPathDirectory(path);
++
++  if (parent) {
++    if (adjustPermissions(path, parent, getPathStatus, setPathPermissions)) ok = 1;
++    free(parent);
++  }
++
++  return ok;
++}
++
++static int
++getFileStatus (const void *object, struct stat *status) {
++  const int *fd = object;
++  if (fstat(*fd, status) != -1) return 1;
++  logSystemError("fstat");
++  return 0;
++}
++
++static int
++setFilePermissions (const void *object, mode_t permissions) {
++  const int *fd = object;
++  if (fchmod(*fd, permissions) != -1) return 1;
++  logSystemError("fchmod");
++  return 0;
++}
++
++static int
++adjustFilePermissions (int fd, const char *directory) {
++  return adjustPermissions(
++    &fd, directory,
++    getFileStatus,
++    setFilePermissions
++  );
++}
+ #endif /* __MINGW32__ */
+ 
+ /* Function : createLocalSocket */
+@@ -3169,7 +3218,7 @@ static FileDescriptor createLocalSocket(struct socketInfo *info)
+     approximateDelay(1000);
+   }
+ 
+-  if (!adjustPermissions(BRLAPI_SOCKETPATH)) {
++  if (!adjustPathPermissions(BRLAPI_SOCKETPATH)) {
+     goto outfd;
+   }
+ 
+@@ -3281,7 +3330,7 @@ static FileDescriptor createLocalSocket(struct socketInfo *info)
+     goto outfd;
+   }
+ 
+-  if (!adjustPermissions(sa.sun_path)) {
++  if (!adjustFilePermissions(fd, BRLAPI_SOCKETPATH)) {
+     goto outfd;
+   }
+ 
diff --git a/app-accessibility/brltty/files/brltty.conf b/app-accessibility/brltty/files/brltty.conf
index 7610240..6b4b8f7 100644
--- a/app-accessibility/brltty/files/brltty.conf
+++ b/app-accessibility/brltty/files/brltty.conf
@@ -2,12 +2,15 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-# Only allow the chronos user to access brlapi and limit the api to accept
-# connections only on a local socket.
-api-parameters Auth=user:chronos,Host=:0
+# Only allow the chronos user to connect to the BrlAPI server.
+api-parameters Auth=user:chronos
 
-# Interpret braille keyboard input as dots rather than translate them to characters.
-override-preference braille-quick-space=yes
+# Only listen for BrlAPI connections from the local host.
+api-parameters Host=:0
+
+# Interpret braille keyboard input as dot combinations
+# rather than translate it to characters.
+override-preferences braille-quick-space=yes
 
 # Display this message when the braille driver starts.
 start-message braille\sstarting
@@ -15,10 +18,13 @@
 # Display this message when the braille driver stops.
 stop-message braille\sstopped
 
-# Display this message:
-assign msgNoBraille braille\snot\savailable
-# When the screen device(s) can't be opened.
-screen-parameters no:message=\{msgNoBraille}
-# When not using a text console or when the console is unused or unreadable.
-screen-parameters lx:fallbacktext=\{msgNoBraille}
+# The Linux screen driver isn't useful since the /dev/vcs* devices don't exist.
+# There isn't a screen driver for frecon yet.
+screen-driver no
+
+# Display this message when BrlAPI isn't connected.
+screen-parameters no:message=braille\snot\savailable
+
+# Set the default log level.
+log-level info
 
diff --git a/app-accessibility/brltty/files/etc/init/brltty.conf b/app-accessibility/brltty/files/etc/init/brltty.conf
index c673a35ef..7d3af57 100644
--- a/app-accessibility/brltty/files/etc/init/brltty.conf
+++ b/app-accessibility/brltty/files/etc/init/brltty.conf
@@ -5,12 +5,21 @@
 description     "Brltty daemon"
 author          "chromium-os-dev@chromium.org"
 
+# The service is started by Chrome via UpstartClient::StartBrltty() for
+# Bluetooth connections and by /lib/udev/rules.d/70-brltty.rules for USB
+# connections.
+
+# Initialize the device and driver to what we want for their defaults.
+env BRLTTY_BRAILLE_DEVICE=usb:
+env BRLTTY_BRAILLE_DRIVER=auto
+
+# Allow our udev rules to tell us what the device and driver are.
+import BRLTTY_BRAILLE_DEVICE
+import BRLTTY_BRAILLE_DRIVER
+
+# This is how the ui tells us what the Bluetooth device address is.
+env ADDRESS
 import ADDRESS
 
-env ADDRESS
-
-# The service is started by Chrome via UpstartClient::StartBrltty() for
-# bluetooth connections and by /lib/udev/rules.d/70-brltty.rules for usb
-# connections.
-stop on stopping ui
-exec /lib/udev/brltty
+exec /lib/udev/brltty run
+post-stop exec /lib/udev/brltty wait
diff --git a/app-accessibility/espeak-ng/Manifest b/app-accessibility/espeak-ng/Manifest
index eaa29c1..9943fcc 100644
--- a/app-accessibility/espeak-ng/Manifest
+++ b/app-accessibility/espeak-ng/Manifest
@@ -1 +1 @@
-DIST espeak-ng-1.49.3.7.tar.gz 15408235 BLAKE2B 49249d7ba79987285c8e4766738606e12a9835832995d57801f779b2aa9529330bf5cb4d01b4f69dacb2001f32e403594164c3a342f3ac236ab79050a7ec0ada SHA512 8f6b89661958818c18710bdf903ad3481f70e9ce5c0bc0572e883553c657a8716cb728b01b67704c5b88ba4315ced49e0d058f79071fe60c893239165dd84f4a
+DIST espeak-ng-1.49.3.12.tar.gz 15407875 BLAKE2B 8850ef4464ae8d491120673b74fe7be02e466b9d031725656b497f8e27fe910fb22ca2a688fcf226347a7d85efc1a367dfa581d0d94e1a4e6a7e891a03b50550 SHA512 96b3aff54590333df50c95194d47a42b616e4fcfb8416d14810747f3b4b25865d687b41c75b4ad9ecf790408f23a2ba69dea44a35566369ae553a9bfcefbe285
diff --git a/app-accessibility/espeak-ng/espeak-ng-1.49.3.7.ebuild b/app-accessibility/espeak-ng/espeak-ng-1.49.3.12.ebuild
similarity index 100%
rename from app-accessibility/espeak-ng/espeak-ng-1.49.3.7.ebuild
rename to app-accessibility/espeak-ng/espeak-ng-1.49.3.12.ebuild
diff --git a/app-accessibility/googletts/Manifest b/app-accessibility/googletts/Manifest
index ca457ab..697d05c 100644
--- a/app-accessibility/googletts/Manifest
+++ b/app-accessibility/googletts/Manifest
@@ -1 +1 @@
-DIST googletts-14.7.tar.xz 119923304 BLAKE2B d1780dd47c0e243fe8e0490c4d05070a2a713e03dd9049ccf9cee49afc66526600399decfb3d9580734d2043d7f88f6375c2f4c5d38f641317f6d83c16e8f80b SHA512 5253c244ff1da570c1f8b324f4dbb340a70173b97b8a67ab0793989740e3c3302330ed51a75e001b8d1a165431735b488715c45b5d539614925a7301d524bd42
+DIST googletts-26.5.tar.xz 118800272 BLAKE2B 8d3d03337f229b4b54c30d958f543d952f92d141f521e4e06b2b2fc262e128183c7e3c8263576bbc0c78c5d2ad123fe898017b31a48063a0aed2dc19cc3b9514 SHA512 478f7a17bfc8bb0c99f9768cf9c8d1c9dc255f3cbda12c59abebf1815d46dd3c1f7c789c9eda521012f6a1ffad620c9737ab056b3a0816a64f4989c33b2d4d37
diff --git a/app-accessibility/googletts/googletts-14.7.ebuild b/app-accessibility/googletts/googletts-26.5.ebuild
similarity index 100%
rename from app-accessibility/googletts/googletts-14.7.ebuild
rename to app-accessibility/googletts/googletts-26.5.ebuild
diff --git a/app-admin/rsyslog/Manifest b/app-admin/rsyslog/Manifest
index 2bd80d8..bd1ca52 100644
--- a/app-admin/rsyslog/Manifest
+++ b/app-admin/rsyslog/Manifest
@@ -1,2 +1,2 @@
-DIST rsyslog-8.1904.0.tar.gz 2902708 BLAKE2B 515d5e32c2dc6cdd8dd51fc595ad775503438603f28828e9f1a427b184a5a61de32af2ee90334b7d56a9404106d74da47386a18a370278d5a16422a6bb09f556 SHA512 cccb48f06508d7e7c2dd788903f4d7ddb3020cdf6079aea1d52387c56b920f10b08957a79b5d420ccdb54cae50d1da6e5eb80cde9498bceaeda4f6ce37f694fd
-DIST rsyslog-doc-8.1904.0.tar.gz 8042650 BLAKE2B 585fe5c63eee1fb46f94dcd3d529045b3900e08c291e0e71ed9bf32a6200e6c7283820b262bd56e9aeb74cc227ecd518caafec5a8f87c1d8523d5d7fd95030aa SHA512 da0ff00fbe71756b3c27fd8b94e88611452c3ba611e583862556393faaaa596ca8f32f694ad40a3e1df67385d9f9ca80db6a58f5d2e336fe95639dd7cd0de828
+DIST rsyslog-8.2102.0.tar.gz 3123684 BLAKE2B f5c4e00d68ec82ed3f7b89dd5e888bebda9c4eb38185dfd8ecd96c1bf77380385aaddac73ab1de8364e1239a3de746f160c18b0f135d006f473f9e40be2c18a1 SHA512 281b0e5d5cb548c39a6e514e5fd5b1bdbe8ca0bdd9234f4fea581ed7679f76d2d75b65d14c3c5e799f86f91600074ff75b467aa1ff27cdbec0f4197261c5aec0
+DIST rsyslog-doc-8.2102.0.tar.gz 6419104 BLAKE2B 134c7ccde6f7435b35840fa37f5774223ac1ebd7dc10db961900a7b1600483156518433c7f70d0981e96ea750e1916ab53e346abacf58066bf141e85c719ae00 SHA512 a5dc4fb9bd8892fac693c5692b926c8d7d9fa36667d6b4c6eccba750713af88d4317f6232efc2a16de38c2e58c4a8bc4d04c9ebb2e7ebc3b0878d53eef20dd2e
diff --git a/app-admin/rsyslog/OWNERS b/app-admin/rsyslog/OWNERS
new file mode 100644
index 0000000..5744455
--- /dev/null
+++ b/app-admin/rsyslog/OWNERS
@@ -0,0 +1 @@
+include /chromeos-base/croslog/OWNERS
diff --git a/app-admin/rsyslog/files/rsyslog.service b/app-admin/rsyslog/files/rsyslog.service
new file mode 100644
index 0000000..8af064d
--- /dev/null
+++ b/app-admin/rsyslog/files/rsyslog.service
@@ -0,0 +1,25 @@
+[Unit]
+Description=System Logging Service
+;Requires=syslog.socket
+Conflicts=syslog-ng.service syslogd.service
+Documentation=man:rsyslogd(8)
+Documentation=man:rsyslog.conf(5)
+Documentation=https://www.rsyslog.com/doc/
+
+[Service]
+Type=notify
+Environment=RSYSLOGD_PARAMS=
+EnvironmentFile=-/etc/default/rsyslog
+ExecStart=/usr/sbin/rsyslogd -n -iNONE $RSYSLOGD_PARAMS
+ExecReload=/bin/kill -HUP $MAINPID
+UMask=0066
+StandardOutput=null
+Restart=on-failure
+
+# Increase the default a bit in order to allow many simultaneous
+# files to be monitored, we might need a lot of fds.
+LimitNOFILE=16384
+
+[Install]
+WantedBy=multi-user.target
+Alias=syslog.service
diff --git a/app-admin/rsyslog/metadata.xml b/app-admin/rsyslog/metadata.xml
index 7334da4..8edddd3 100644
--- a/app-admin/rsyslog/metadata.xml
+++ b/app-admin/rsyslog/metadata.xml
@@ -12,12 +12,14 @@
 		<flag name="elasticsearch">Build the Elasticsearch output module (requires <pkg>net-misc/curl</pkg>)</flag>
 		<flag name="gcrypt">Add support for encrypted log files using <pkg>dev-libs/libgcrypt</pkg></flag>
 		<flag name="gnutls">Build the GnuTLS network stream driver (requires <pkg>net-libs/gnutls</pkg>)</flag>
+		<flag name="imhttp">Build the http input module (requires <pkg>www-servers/civetweb</pkg>)</flag>
+		<flag name="impcap">Build the pcap input module (requires <pkg>net-libs/libpcap</pkg>)</flag>
 		<flag name="kafka">Build the Apache Kafka input/output module (requires <pkg>dev-libs/librdkafka</pkg>)</flag>
 		<flag name="kerberos">Build the GSSAPI input and output module (requires <pkg>virtual/krb5</pkg>)</flag>
 		<flag name="kubernetes">Build the kubernetes modify plugin (requires <pkg>net-misc/curl</pkg>)</flag>
 		<flag name="libressl">Use <pkg>dev-libs/libressl</pkg> instead of <pkg>dev-libs/openssl</pkg> (you still need to enable functionality which requires OpenSSL)</flag>
 		<flag name="mdblookup">Build the MaxMind DB lookup message modify plugin using <pkg>dev-libs/libmaxminddb</pkg></flag>
-		<flag name="mongodb">Build the MongoDB output module (requires <pkg>dev-libs/libmongo-client</pkg>)</flag>
+		<flag name="mongodb">Build the MongoDB output module (requires <pkg>dev-libs/mongo-c-driver</pkg>)</flag>
 		<flag name="mysql">Build the MySQL database output module (requires <pkg>virtual/mysql</pkg>)</flag>
 		<flag name="normalize">Build the normalize modify module (requires <pkg>dev-libs/libee</pkg> and <pkg>dev-libs/liblognorm</pkg>)</flag>
 		<flag name="omhttp">Build the http output module (requires <pkg>net-misc/curl</pkg>)</flag>
diff --git a/app-admin/rsyslog/rsyslog-8.1904.0-r3.ebuild b/app-admin/rsyslog/rsyslog-8.1904.0-r3.ebuild
deleted file mode 120000
index 2e733ab..0000000
--- a/app-admin/rsyslog/rsyslog-8.1904.0-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-rsyslog-8.1904.0.ebuild
\ No newline at end of file
diff --git a/app-admin/rsyslog/rsyslog-8.1904.0.ebuild b/app-admin/rsyslog/rsyslog-8.1904.0.ebuild
deleted file mode 100644
index 9b6887f..0000000
--- a/app-admin/rsyslog/rsyslog-8.1904.0.ebuild
+++ /dev/null
@@ -1,468 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-PYTHON_COMPAT=( python{2_7,3_5,3_6,3_7} )
-
-inherit autotools eutils linux-info python-any-r1 systemd
-
-DESCRIPTION="An enhanced multi-threaded syslogd with database support and more"
-HOMEPAGE="https://www.rsyslog.com/"
-
-if [[ ${PV} == "9999" ]]; then
-	EGIT_REPO_URI="https://github.com/rsyslog/${PN}.git"
-
-	DOC_REPO_URI="https://github.com/rsyslog/${PN}-doc.git"
-
-	inherit git-r3
-else
-	KEYWORDS="*"
-
-	SRC_URI="
-		https://www.rsyslog.com/files/download/${PN}/${P}.tar.gz
-		doc? ( https://www.rsyslog.com/files/download/${PN}/${PN}-doc-${PV}.tar.gz )
-	"
-fi
-
-LICENSE="GPL-3 LGPL-3 Apache-2.0"
-SLOT="0"
-IUSE="curl dbi debug doc elasticsearch +gcrypt gnutls jemalloc kafka kerberos kubernetes libressl mdblookup"
-IUSE+=" mongodb mysql normalize clickhouse omhttp omhttpfs omudpspoof openssl postgres"
-IUSE+=" rabbitmq redis relp rfc3195 rfc5424hmac snmp ssl systemd test usertools +uuid xxhash zeromq"
-RESTRICT="!test? ( test )"
-
-PATCHES=( "${FILESDIR}/001-add-imstdoutsock-plugin.patch" )
-
-RDEPEND="
-	>=dev-libs/libfastjson-0.99.8:=
-	>=dev-libs/libestr-0.1.9
-	>=sys-libs/zlib-1.2.5
-	chromeos-base/syslog-cat
-	curl? ( >=net-misc/curl-7.35.0 )
-	dbi? ( >=dev-db/libdbi-0.8.3 )
-	elasticsearch? ( >=net-misc/curl-7.35.0 )
-	gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= )
-	jemalloc? ( >=dev-libs/jemalloc-3.3.1:= )
-	kafka? ( >=dev-libs/librdkafka-0.9.0.99:= )
-	kerberos? ( virtual/krb5 )
-	kubernetes? ( >=net-misc/curl-7.35.0 )
-	mdblookup? ( dev-libs/libmaxminddb:= )
-	mongodb? ( >=dev-libs/mongo-c-driver-1.1.10:= )
-	mysql? ( virtual/libmysqlclient:= )
-	normalize? (
-		>=dev-libs/libee-0.4.0
-		>=dev-libs/liblognorm-2.0.3:=
-	)
-	clickhouse? ( >=net-misc/curl-7.35.0 )
-	omhttpfs? ( >=net-misc/curl-7.35.0 )
-	omudpspoof? ( >=net-libs/libnet-1.1.6 )
-	postgres? ( >=dev-db/postgresql-8.4.20:= )
-	rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0:= )
-	redis? ( >=dev-libs/hiredis-0.11.0:= )
-	relp? ( >=dev-libs/librelp-1.2.17:= )
-	rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] )
-	rfc5424hmac? (
-		!libressl? ( >=dev-libs/openssl-0.9.8y:0= )
-		libressl? ( dev-libs/libressl:= )
-	)
-	snmp? ( >=net-analyzer/net-snmp-5.7.2 )
-	ssl? (
-		gnutls? ( >=net-libs/gnutls-2.12.23:0= )
-		openssl? (
-			!libressl? ( dev-libs/openssl:0= )
-			libressl? ( dev-libs/libressl:0= )
-		)
-	)
-	systemd? ( >=sys-apps/systemd-234 )
-	uuid? ( sys-apps/util-linux:0= )
-	xxhash? ( dev-libs/xxhash:= )
-	zeromq? (
-		>=net-libs/czmq-3.0.2
-	)"
-DEPEND="${RDEPEND}
-	>=sys-devel/autoconf-archive-2015.02.24
-	virtual/pkgconfig
-	elibc_musl? ( sys-libs/queue-standalone )
-	test? (
-		>=dev-libs/liblogging-1.0.1[stdlog]
-		jemalloc? ( <sys-libs/libfaketime-0.9.7 )
-		!jemalloc? ( sys-libs/libfaketime )
-		${PYTHON_DEPS}
-	)"
-
-REQUIRED_USE="
-	kubernetes? ( normalize )
-	ssl? ( || ( gnutls openssl ) )
-"
-
-if [[ ${PV} == "9999" ]]; then
-	DEPEND+=" doc? ( >=dev-python/sphinx-1.1.3-r7 )"
-	DEPEND+=" >=sys-devel/flex-2.5.39-r1"
-	DEPEND+=" >=sys-devel/bison-2.4.3"
-	DEPEND+=" >=dev-python/docutils-0.12"
-fi
-
-CONFIG_CHECK="~INOTIFY_USER"
-WARNING_INOTIFY_USER="CONFIG_INOTIFY_USER isn't set. Imfile module on this system will only support polling mode!"
-
-pkg_setup() {
-	use test && python-any-r1_pkg_setup
-}
-
-src_unpack() {
-	if [[ ${PV} == "9999" ]]; then
-		git-r3_fetch
-		git-r3_checkout
-	else
-		unpack ${P}.tar.gz
-	fi
-
-	cp -rf "${FILESDIR}/001-add-imstdoutsock-plugin" "./${PN}-${PV}/plugins/imstdoutsock"
-
-	if use doc; then
-		if [[ ${PV} == "9999" ]]; then
-			local _EGIT_BRANCH=
-			if [[ -n "${EGIT_BRANCH}" ]]; then
-				# Cannot use rsyslog commits/branches for documentation repository
-				_EGIT_BRANCH=${EGIT_BRANCH}
-				unset EGIT_BRANCH
-			fi
-
-			git-r3_fetch "${DOC_REPO_URI}"
-			git-r3_checkout "${DOC_REPO_URI}" "${S}"/docs
-
-			if [[ -n "${_EGIT_BRANCH}" ]]; then
-				# Restore previous EGIT_BRANCH information
-				EGIT_BRANCH=${_EGIT_BRANCH}
-			fi
-		else
-			cd "${S}" || die "Cannot change dir into '${S}'"
-			mkdir docs || die "Failed to create docs directory"
-			cd docs || die "Failed to change dir into '${S}/docs'"
-			unpack ${PN}-doc-${PV}.tar.gz
-		fi
-	fi
-}
-
-src_prepare() {
-	default
-
-	# https://github.com/rsyslog/rsyslog/issues/3626
-	sed -i \
-		-e '\|^#!/bin/bash$|a exit 77' \
-		tests/mmkubernetes-cache-expir*.sh \
-		|| die "Failed to disabled known test failure mmkubernetes-cache-expir*.sh"
-
-	eautoreconf
-}
-
-src_configure() {
-	# Maintainer notes:
-	# * Guardtime support is missing because libgt isn't yet available
-	#   in portage.
-	# * Hadoop's HDFS file system output module is currently not
-	#   supported in Gentoo because nobody is able to test it
-	#   (JAVA dependency).
-	# * dev-libs/hiredis doesn't provide pkg-config (see #504614,
-	#   upstream PR 129 and 136) so we need to export HIREDIS_*
-	#   variables because rsyslog's build system depends on pkg-config.
-
-	if use redis; then
-		export HIREDIS_LIBS="-L${EPREFIX}/usr/$(get_libdir) -lhiredis"
-		export HIREDIS_CFLAGS="-I${EPREFIX}/usr/include"
-	fi
-
-	local myeconfargs=(
-		--disable-debug-symbols
-		--disable-generate-man-pages
-		--without-valgrind-testbench
-		--disable-liblogging-stdlog
-		$(use_enable test testbench)
-		$(use_enable test libfaketime)
-		$(use_enable test extended-tests)
-		# Input Plugins without depedencies
-		--enable-imdiag
-		--enable-imfile
-		--enable-impstats
-		--enable-imptcp
-		# Message Modificiation Plugins without depedencies
-		--enable-mmanon
-		--enable-mmaudit
-		--enable-mmcount
-		--enable-mmfields
-		--enable-mmjsonparse
-		--enable-mmpstrucdata
-		--enable-mmrm1stspace
-		--enable-mmsequence
-		--enable-mmutf8fix
-		# Output Modification Plugins without dependencies
-		--enable-mail
-		--enable-omprog
-		--enable-omruleset
-		--enable-omstdout
-		--enable-omuxsock
-		# Misc
-		--enable-fmhash
-		$(use_enable xxhash fmhash-xxhash)
-		--enable-pmaixforwardedfrom
-		--enable-pmciscoios
-		--enable-pmcisconames
-		--enable-pmlastmsg
-		$(use_enable normalize pmnormalize)
-		--enable-pmnull
-		--enable-pmpanngfw
-		--enable-pmsnare
-		# DB
-		$(use_enable dbi libdbi)
-		$(use_enable mongodb ommongodb)
-		$(use_enable mysql)
-		$(use_enable postgres pgsql)
-		$(use_enable redis omhiredis)
-		# Debug
-		$(use_enable debug)
-		$(use_enable debug diagtools)
-		$(use_enable debug valgrind)
-		# Misc
-		$(use_enable clickhouse)
-		$(use_enable curl fmhttp)
-		$(use_enable elasticsearch)
-		$(use_enable gcrypt libgcrypt)
-		$(use_enable jemalloc)
-		$(use_enable kafka imkafka)
-		$(use_enable kafka omkafka)
-		$(use_enable kerberos gssapi-krb5)
-		$(use_enable kubernetes mmkubernetes)
-		$(use_enable normalize mmnormalize)
-		$(use_enable mdblookup mmdblookup)
-		$(use_enable omhttp)
-		$(use_enable omhttpfs)
-		$(use_enable omudpspoof)
-		$(use_enable rabbitmq omrabbitmq)
-		$(use_enable relp)
-		$(use_enable rfc3195)
-		$(use_enable rfc5424hmac mmrfc5424addhmac)
-		$(use_enable snmp)
-		$(use_enable snmp mmsnmptrapd)
-		$(use_enable gnutls)
-		$(use_enable openssl)
-		$(use_enable systemd imjournal)
-		$(use_enable systemd omjournal)
-		$(use_enable usertools)
-		$(use_enable uuid)
-		$(use_enable zeromq imczmq)
-		$(use_enable zeromq omczmq)
-		--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
-	)
-
-	econf "${myeconfargs[@]}"
-}
-
-src_compile() {
-	default
-
-	if use doc && [[ "${PV}" == "9999" ]]; then
-		einfo "Building documentation ..."
-		local doc_dir="${S}/docs"
-		cd "${doc_dir}" || die "Cannot chdir into \"${doc_dir}\"!"
-		sphinx-build -b html source build || die "Building documentation failed!"
-	fi
-}
-
-src_test() {
-	local _has_increased_ulimit=
-
-	# Sometimes tests aren't executable (i.e. when added via patch)
-	einfo "Adjusting permissions of test scripts ..."
-	find "${S}"/tests -type f -name '*.sh' \! -perm -111 -exec chmod a+x '{}' \; || \
-		die "Failed to adjust test scripts permission"
-
-	if ulimit -n 3072; then
-		_has_increased_ulimit="true"
-	fi
-
-	if ! emake --jobs 1 check; then
-		eerror "Test suite failed! :("
-
-		if [[ -z "${_has_increased_ulimit}" ]]; then
-			eerror "Probably because open file limit couldn't be set to 3072."
-		fi
-
-		if has userpriv ${FEATURES}; then
-			eerror "Please try to reproduce the test suite failure with FEATURES=-userpriv " \
-				"before you submit a bug report."
-		fi
-
-	fi
-}
-
-src_install() {
-	local DOCS=(
-		AUTHORS
-		ChangeLog
-		"${FILESDIR}"/README.gentoo
-	)
-
-	use doc && local HTML_DOCS=( "${S}/docs/build/." )
-
-	default
-
-	newconfd "${FILESDIR}/${PN}.confd-r1" ${PN}
-	newinitd "${FILESDIR}/${PN}.initd-r1" ${PN}
-
-	keepdir /var/empty/dev
-	keepdir /var/spool/${PN}
-	keepdir /etc/ssl/${PN}
-	keepdir /etc/${PN}.d
-
-	insinto /etc
-	newins "${FILESDIR}/${PN}.conf" ${PN}.conf
-
-	insinto /etc/rsyslog.d/
-	newins "${FILESDIR}/50-default-r1.conf" 50-default.conf
-
-	insinto /etc/logrotate.d/
-	newins "${FILESDIR}/${PN}-r1.logrotate" ${PN}
-
-	if use mysql; then
-		insinto /usr/share/doc/${PF}/scripts/mysql
-		doins plugins/ommysql/createDB.sql
-	fi
-
-	if use postgres; then
-		insinto /usr/share/doc/${PF}/scripts/pgsql
-		doins plugins/ompgsql/createDB.sql
-	fi
-
-	#prune_libtool_files --modules
-}
-
-pkg_postinst() {
-	local advertise_readme=0
-
-	if [[ -z "${REPLACING_VERSIONS}" ]]; then
-		# This is a new installation
-
-		advertise_readme=1
-
-		if use mysql || use postgres; then
-			echo
-			elog "Sample SQL scripts for MySQL & PostgreSQL have been installed to:"
-			elog "  /usr/share/doc/${PF}/scripts"
-		fi
-
-		if use ssl; then
-			echo
-			elog "To create a default CA and certificates for your server and clients, run:"
-			elog "  emerge --config =${PF}"
-			elog "on your logging server. You can run it several times,"
-			elog "once for each logging client. The client certificates will be signed"
-			elog "using the CA certificate generated during the first run."
-		fi
-	fi
-
-	if [[ ${advertise_readme} -gt 0 ]]; then
-		# We need to show the README file location
-
-		echo ""
-		elog "Please read"
-		elog ""
-		elog "  ${EPREFIX}/usr/share/doc/${PF}/README.gentoo*"
-		elog ""
-		elog "for more details."
-	fi
-}
-
-pkg_config() {
-	if ! use ssl ; then
-		einfo "There is nothing to configure for rsyslog unless you"
-		einfo "used USE=ssl to build it."
-		return 0
-	fi
-
-	# Make sure the certificates directory exists
-	local CERTDIR="${EROOT}/etc/ssl/${PN}"
-	if [[ ! -d "${CERTDIR}" ]]; then
-		mkdir "${CERTDIR}" || die
-	fi
-	einfo "Your certificates will be stored in ${CERTDIR}"
-
-	# Create a default CA if needed
-	if [[ ! -f "${CERTDIR}/${PN}_ca.cert.pem" ]]; then
-		einfo "No CA key and certificate found in ${CERTDIR}, creating them for you..."
-		certtool --generate-privkey \
-			--outfile "${CERTDIR}/${PN}_ca.privkey.pem" &>/dev/null
-		chmod 400 "${CERTDIR}/${PN}_ca.privkey.pem"
-
-		cat > "${T}/${PF}.$$" <<- _EOF
-		cn = Portage automated CA
-		ca
-		cert_signing_key
-		expiration_days = 3650
-		_EOF
-
-		certtool --generate-self-signed \
-			--load-privkey "${CERTDIR}/${PN}_ca.privkey.pem" \
-			--outfile "${CERTDIR}/${PN}_ca.cert.pem" \
-			--template "${T}/${PF}.$$" &>/dev/null
-		chmod 400 "${CERTDIR}/${PN}_ca.privkey.pem"
-
-		# Create the server certificate
-		echo
-		einfon "Please type the Common Name of the SERVER you wish to create a certificate for: "
-		read -r CN
-
-		einfo "Creating private key and certificate for server ${CN}..."
-		certtool --generate-privkey \
-			--outfile "${CERTDIR}/${PN}_${CN}.key.pem" &>/dev/null
-		chmod 400 "${CERTDIR}/${PN}_${CN}.key.pem"
-
-		cat > "${T}/${PF}.$$" <<- _EOF
-		cn = ${CN}
-		tls_www_server
-		dns_name = ${CN}
-		expiration_days = 3650
-		_EOF
-
-		certtool --generate-certificate \
-			--outfile "${CERTDIR}/${PN}_${CN}.cert.pem" \
-			--load-privkey "${CERTDIR}/${PN}_${CN}.key.pem" \
-			--load-ca-certificate "${CERTDIR}/${PN}_ca.cert.pem" \
-			--load-ca-privkey "${CERTDIR}/${PN}_ca.privkey.pem" \
-			--template "${T}/${PF}.$$" &>/dev/null
-		chmod 400 "${CERTDIR}/${PN}_${CN}.cert.pem"
-
-	else
-		einfo "Found existing ${CERTDIR}/${PN}_ca.cert.pem, skipping CA and SERVER creation."
-	fi
-
-	# Create a client certificate
-	echo
-	einfon "Please type the Common Name of the CLIENT you wish to create a certificate for: "
-	read -r CN
-
-	einfo "Creating private key and certificate for client ${CN}..."
-	certtool --generate-privkey \
-		--outfile "${CERTDIR}/${PN}_${CN}.key.pem" &>/dev/null
-	chmod 400 "${CERTDIR}/${PN}_${CN}.key.pem"
-
-	cat > "${T}/${PF}.$$" <<- _EOF
-	cn = ${CN}
-	tls_www_client
-	dns_name = ${CN}
-	expiration_days = 3650
-	_EOF
-
-	certtool --generate-certificate \
-		--outfile "${CERTDIR}/${PN}_${CN}.cert.pem" \
-		--load-privkey "${CERTDIR}/${PN}_${CN}.key.pem" \
-		--load-ca-certificate "${CERTDIR}/${PN}_ca.cert.pem" \
-		--load-ca-privkey "${CERTDIR}/${PN}_ca.privkey.pem" \
-		--template "${T}/${PF}.$$" &>/dev/null
-	chmod 400 "${CERTDIR}/${PN}_${CN}.cert.pem"
-
-	rm -f "${T}/${PF}.$$"
-
-	echo
-	einfo "Here is the documentation on how to encrypt your log traffic:"
-	einfo " https://www.rsyslog.com/doc/rsyslog_tls.html"
-}
diff --git a/app-admin/rsyslog/rsyslog-8.2102.0-r3.ebuild b/app-admin/rsyslog/rsyslog-8.2102.0-r3.ebuild
new file mode 120000
index 0000000..4c16c31
--- /dev/null
+++ b/app-admin/rsyslog/rsyslog-8.2102.0-r3.ebuild
@@ -0,0 +1 @@
+rsyslog-8.2102.0.ebuild
\ No newline at end of file
diff --git a/app-admin/rsyslog/rsyslog-8.2102.0.ebuild b/app-admin/rsyslog/rsyslog-8.2102.0.ebuild
new file mode 100644
index 0000000..115bcd9
--- /dev/null
+++ b/app-admin/rsyslog/rsyslog-8.2102.0.ebuild
@@ -0,0 +1,450 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+PYTHON_COMPAT=( python3_{6..9} )
+
+inherit autotools linux-info python-any-r1 systemd
+
+DESCRIPTION="An enhanced multi-threaded syslogd with database support and more"
+HOMEPAGE="https://www.rsyslog.com/"
+
+if [[ ${PV} == "9999" ]]; then
+	EGIT_REPO_URI="https://github.com/rsyslog/${PN}.git"
+
+	DOC_REPO_URI="https://github.com/rsyslog/${PN}-doc.git"
+
+	inherit git-r3
+else
+	KEYWORDS="*"
+
+	SRC_URI="
+		https://www.rsyslog.com/files/download/${PN}/${P}.tar.gz
+		doc? ( https://www.rsyslog.com/files/download/${PN}/${PN}-doc-${PV}.tar.gz )
+	"
+fi
+
+LICENSE="GPL-3 LGPL-3 Apache-2.0"
+SLOT="0"
+
+IUSE="clickhouse curl dbi debug doc elasticsearch +gcrypt gnutls imhttp"
+IUSE+=" impcap jemalloc kafka kerberos kubernetes libressl mdblookup"
+IUSE+=" mongodb mysql normalize omhttp omhttpfs omudpspoof +openssl"
+IUSE+=" postgres rabbitmq redis relp rfc3195 rfc5424hmac snmp +ssl"
+IUSE+=" systemd test usertools +uuid xxhash zeromq"
+
+RESTRICT="!test? ( test )"
+
+REQUIRED_USE="
+	kubernetes? ( normalize )
+	ssl? ( || ( gnutls openssl ) )
+"
+
+BDEPEND=">=sys-devel/autoconf-archive-2015.02.24
+	virtual/pkgconfig
+	elibc_musl? ( sys-libs/queue-standalone )
+	test? (
+		jemalloc? ( <sys-libs/libfaketime-0.9.7 )
+		!jemalloc? ( sys-libs/libfaketime )
+		${PYTHON_DEPS}
+	)"
+
+PATCHES=( "${FILESDIR}/001-add-imstdoutsock-plugin.patch" )
+
+RDEPEND="
+	>=dev-libs/libfastjson-0.99.8:=
+	>=dev-libs/libestr-0.1.9
+	>=sys-libs/zlib-1.2.5
+	chromeos-base/syslog-cat
+	curl? ( >=net-misc/curl-7.35.0 )
+	dbi? ( >=dev-db/libdbi-0.8.3 )
+	elasticsearch? ( >=net-misc/curl-7.35.0 )
+	gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= )
+	imhttp? ( www-servers/civetweb )
+	impcap? ( net-libs/libpcap )
+	jemalloc? ( >=dev-libs/jemalloc-3.3.1:= )
+	kafka? ( >=dev-libs/librdkafka-0.9.0.99:= )
+	kerberos? ( virtual/krb5 )
+	kubernetes? ( >=net-misc/curl-7.35.0 )
+	mdblookup? ( dev-libs/libmaxminddb:= )
+	mongodb? ( >=dev-libs/mongo-c-driver-1.1.10:= )
+	mysql? ( dev-db/mysql-connector-c:= )
+	normalize? (
+		>=dev-libs/liblognorm-2.0.3:=
+	)
+	clickhouse? ( >=net-misc/curl-7.35.0 )
+	omhttpfs? ( >=net-misc/curl-7.35.0 )
+	omudpspoof? ( >=net-libs/libnet-1.1.6 )
+	postgres? ( >=dev-db/postgresql-8.4.20:= )
+	rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0:= )
+	redis? ( >=dev-libs/hiredis-0.11.0:= )
+	relp? ( >=dev-libs/librelp-1.2.17:= )
+	rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] )
+	rfc5424hmac? (
+		!libressl? ( >=dev-libs/openssl-0.9.8y:0= )
+		libressl? ( dev-libs/libressl:= )
+	)
+	snmp? ( >=net-analyzer/net-snmp-5.7.2 )
+	ssl? (
+		gnutls? ( >=net-libs/gnutls-2.12.23:0= )
+		openssl? (
+			!libressl? ( dev-libs/openssl:0= )
+			libressl? ( dev-libs/libressl:0= )
+		)
+	)
+	systemd? ( >=sys-apps/systemd-234 )
+	uuid? ( sys-apps/util-linux:0= )
+	xxhash? ( dev-libs/xxhash:= )
+	zeromq? (
+		>=net-libs/czmq-4:=[drafts]
+	)"
+DEPEND="${RDEPEND}
+	test? (
+		>=dev-libs/liblogging-1.0.1[stdlog]
+	)"
+
+if [[ ${PV} == "9999" ]]; then
+	BDEPEND+=" doc? ( >=dev-python/sphinx-1.1.3-r7 )"
+	BDEPEND+=" >=sys-devel/flex-2.5.39-r1"
+	BDEPEND+=" >=sys-devel/bison-2.4.3"
+	BDEPEND+=" >=dev-python/docutils-0.12"
+fi
+
+CONFIG_CHECK="~INOTIFY_USER"
+WARNING_INOTIFY_USER="CONFIG_INOTIFY_USER isn't set. Imfile module on this system will only support polling mode!"
+
+pkg_setup() {
+	use test && python-any-r1_pkg_setup
+}
+
+src_unpack() {
+	if [[ ${PV} == "9999" ]]; then
+		git-r3_fetch
+		git-r3_checkout
+	else
+		unpack ${P}.tar.gz
+	fi
+
+	cp -rf "${FILESDIR}/001-add-imstdoutsock-plugin" "./${PN}-${PV}/plugins/imstdoutsock"
+
+	if use doc; then
+		if [[ ${PV} == "9999" ]]; then
+			local _EGIT_BRANCH=
+			if [[ -n "${EGIT_BRANCH}" ]]; then
+				# Cannot use rsyslog commits/branches for documentation repository
+				_EGIT_BRANCH=${EGIT_BRANCH}
+				unset EGIT_BRANCH
+			fi
+
+			git-r3_fetch "${DOC_REPO_URI}"
+			git-r3_checkout "${DOC_REPO_URI}" "${S}"/docs
+
+			if [[ -n "${_EGIT_BRANCH}" ]]; then
+				# Restore previous EGIT_BRANCH information
+				EGIT_BRANCH=${_EGIT_BRANCH}
+			fi
+		else
+			cd "${S}" || die "Cannot change dir into '${S}'"
+			mkdir docs || die "Failed to create docs directory"
+			cd docs || die "Failed to change dir into '${S}/docs'"
+			unpack ${PN}-doc-${PV}.tar.gz
+		fi
+	fi
+}
+
+src_prepare() {
+	default
+
+	# https://github.com/rsyslog/rsyslog/issues/3626
+	sed -i \
+		-e '\|^#!/bin/bash$|a exit 77' \
+		tests/mmkubernetes-cache-expir*.sh \
+		|| die "Failed to disabled known test failure mmkubernetes-cache-expir*.sh"
+
+	eautoreconf
+}
+
+src_configure() {
+	# Maintainer notes:
+	# * Guardtime support is missing because libgt isn't yet available
+	#   in portage.
+	# * Hadoop's HDFS file system output module is currently not
+	#   supported in Gentoo because nobody is able to test it
+	#   (JAVA dependency).
+	# * dev-libs/hiredis doesn't provide pkg-config (see #504614,
+	#   upstream PR 129 and 136) so we need to export HIREDIS_*
+	#   variables because rsyslog's build system depends on pkg-config.
+
+	if use redis; then
+		export HIREDIS_LIBS="-L${EPREFIX}/usr/$(get_libdir) -lhiredis"
+		export HIREDIS_CFLAGS="-I${EPREFIX}/usr/include"
+	fi
+
+	local myeconfargs=(
+		--disable-debug-symbols
+		--disable-generate-man-pages
+		--without-valgrind-testbench
+		--disable-liblogging-stdlog
+		$(use_enable test testbench)
+		$(use_enable test libfaketime)
+		$(use_enable test extended-tests)
+		# Input Plugins without dependencies
+		--enable-imbatchreport
+		--enable-imdiag
+		--enable-imfile
+		--enable-improg
+		--enable-impstats
+		--enable-imptcp
+		# Message Modificiation Plugins without dependencies
+		--enable-mmanon
+		--enable-mmaudit
+		--enable-mmcount
+		--enable-mmfields
+		--enable-mmjsonparse
+		--enable-mmpstrucdata
+		--enable-mmrm1stspace
+		--enable-mmsequence
+		--enable-mmtaghostname
+		--enable-mmutf8fix
+		# Output Modification Plugins without dependencies
+		--enable-mail
+		--enable-omprog
+		--enable-omruleset
+		--enable-omstdout
+		--enable-omuxsock
+		# Misc
+		--enable-fmhash
+		$(use_enable xxhash fmhash-xxhash)
+		--enable-pmaixforwardedfrom
+		--enable-pmciscoios
+		--enable-pmcisconames
+		--enable-pmdb2diag
+		--enable-pmlastmsg
+		$(use_enable normalize pmnormalize)
+		--enable-pmnull
+		--enable-pmpanngfw
+		--enable-pmsnare
+		# DB
+		$(use_enable dbi libdbi)
+		$(use_enable mongodb ommongodb)
+		$(use_enable mysql)
+		$(use_enable postgres pgsql)
+		$(use_enable redis omhiredis)
+		# Debug
+		$(use_enable debug)
+		$(use_enable debug diagtools)
+		$(use_enable debug valgrind)
+		# Misc
+		$(use_enable clickhouse)
+		$(use_enable curl fmhttp)
+		$(use_enable elasticsearch)
+		$(use_enable gcrypt libgcrypt)
+		$(use_enable imhttp)
+		$(use_enable impcap)
+		$(use_enable jemalloc)
+		$(use_enable kafka imkafka)
+		$(use_enable kafka omkafka)
+		$(use_enable kerberos gssapi-krb5)
+		$(use_enable kubernetes mmkubernetes)
+		$(use_enable normalize mmnormalize)
+		$(use_enable mdblookup mmdblookup)
+		$(use_enable omhttp)
+		$(use_enable omhttpfs)
+		$(use_enable omudpspoof)
+		$(use_enable rabbitmq omrabbitmq)
+		$(use_enable relp)
+		$(use_enable rfc3195)
+		$(use_enable rfc5424hmac mmrfc5424addhmac)
+		$(use_enable snmp)
+		$(use_enable snmp mmsnmptrapd)
+		$(use_enable gnutls)
+		$(use_enable openssl)
+		$(use_enable systemd imjournal)
+		$(use_enable systemd omjournal)
+		$(use_enable usertools)
+		$(use_enable uuid)
+		$(use_enable zeromq imczmq)
+		$(use_enable zeromq omczmq)
+		--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+	)
+
+	econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+	default
+
+	if use doc && [[ "${PV}" == "9999" ]]; then
+		einfo "Building documentation ..."
+		local doc_dir="${S}/docs"
+		cd "${doc_dir}" || die "Cannot chdir into \"${doc_dir}\"!"
+		sphinx-build -b html source build || die "Building documentation failed!"
+	fi
+}
+
+src_test() {
+	local _has_increased_ulimit=
+
+	# Sometimes tests aren't executable (i.e. when added via patch)
+	einfo "Adjusting permissions of test scripts ..."
+	find "${S}"/tests -type f -name '*.sh' \! -perm -111 -exec chmod a+x '{}' \; || \
+		die "Failed to adjust test scripts permission"
+
+	if ulimit -n 3072; then
+		_has_increased_ulimit="true"
+	fi
+
+	if ! emake --jobs 1 check; then
+		eerror "Test suite failed! :("
+
+		if [[ -z "${_has_increased_ulimit}" ]]; then
+			eerror "Probably because open file limit couldn't be set to 3072."
+		fi
+
+		if has userpriv ${FEATURES}; then
+			eerror "Please try to reproduce the test suite failure with FEATURES=-userpriv " \
+				"before you submit a bug report."
+		fi
+
+	fi
+}
+
+src_install() {
+	local DOCS=(
+		AUTHORS
+		ChangeLog
+		"${FILESDIR}"/README.gentoo
+	)
+
+	use doc && local HTML_DOCS=( "${S}/docs/build/." )
+
+	default
+
+	newconfd "${FILESDIR}/${PN}.confd-r1" ${PN}
+	newinitd "${FILESDIR}/${PN}.initd-r1" ${PN}
+
+	use systemd && systemd_newunit "${FILESDIR}/${PN}.service" ${PN}.service
+
+	keepdir /etc/ssl/${PN}
+	keepdir /etc/${PN}.d
+
+	insinto /etc
+	newins "${FILESDIR}/${PN}.conf" ${PN}.conf
+
+	insinto /etc/rsyslog.d/
+	newins "${FILESDIR}/50-default-r1.conf" 50-default.conf
+
+	insinto /etc/logrotate.d/
+	newins "${FILESDIR}/${PN}-r1.logrotate" ${PN}
+
+	if use mysql; then
+		insinto /usr/share/${PN}/scripts/mysql
+		doins plugins/ommysql/createDB.sql
+	fi
+
+	if use postgres; then
+		insinto /usr/share/${PN}/scripts/pgsql
+		doins plugins/ompgsql/createDB.sql
+	fi
+
+	find "${ED}" -name '*.la' -delete || die
+}
+
+pkg_config() {
+	if ! use ssl; then
+		einfo "There is nothing to configure for rsyslog unless you"
+		einfo "used USE=ssl to build it."
+		return 0
+	fi
+
+	if ! hash certtool &>/dev/null; then
+		die "certtool not found! Is net-libs/gnutls[tools] is installed?"
+	fi
+
+	# Make sure the certificates directory exists
+	local CERTDIR="${EROOT}/etc/ssl/${PN}"
+	if [[ ! -d "${CERTDIR}" ]]; then
+		mkdir "${CERTDIR}" || die
+	fi
+	einfo "Your certificates will be stored in ${CERTDIR}"
+
+	# Create a default CA if needed
+	if [[ ! -f "${CERTDIR}/${PN}_ca.cert.pem" ]]; then
+		einfo "No CA key and certificate found in ${CERTDIR}, creating them for you..."
+		certtool --generate-privkey \
+			--outfile "${CERTDIR}/${PN}_ca.privkey.pem" || die
+		chmod 400 "${CERTDIR}/${PN}_ca.privkey.pem"
+
+		cat > "${T}/${PF}.$$" <<- _EOF
+		cn = Portage automated CA
+		ca
+		cert_signing_key
+		expiration_days = 3650
+		_EOF
+
+		certtool --generate-self-signed \
+			--load-privkey "${CERTDIR}/${PN}_ca.privkey.pem" \
+			--outfile "${CERTDIR}/${PN}_ca.cert.pem" \
+			--template "${T}/${PF}.$$" || die
+		chmod 400 "${CERTDIR}/${PN}_ca.privkey.pem"
+
+		# Create the server certificate
+		echo
+		einfon "Please type the Common Name of the SERVER you wish to create a certificate for: "
+		read -r CN
+
+		einfo "Creating private key and certificate for server ${CN}..."
+		certtool --generate-privkey \
+			--outfile "${CERTDIR}/${PN}_${CN}.key.pem" || die
+		chmod 400 "${CERTDIR}/${PN}_${CN}.key.pem"
+
+		cat > "${T}/${PF}.$$" <<- _EOF
+		cn = ${CN}
+		tls_www_server
+		dns_name = ${CN}
+		expiration_days = 3650
+		_EOF
+
+		certtool --generate-certificate \
+			--outfile "${CERTDIR}/${PN}_${CN}.cert.pem" \
+			--load-privkey "${CERTDIR}/${PN}_${CN}.key.pem" \
+			--load-ca-certificate "${CERTDIR}/${PN}_ca.cert.pem" \
+			--load-ca-privkey "${CERTDIR}/${PN}_ca.privkey.pem" \
+			--template "${T}/${PF}.$$" &>/dev/null
+		chmod 400 "${CERTDIR}/${PN}_${CN}.cert.pem"
+
+	else
+		einfo "Found existing ${CERTDIR}/${PN}_ca.cert.pem, skipping CA and SERVER creation."
+	fi
+
+	# Create a client certificate
+	echo
+	einfon "Please type the Common Name of the CLIENT you wish to create a certificate for: "
+	read -r CN
+
+	einfo "Creating private key and certificate for client ${CN}..."
+	certtool --generate-privkey \
+		--outfile "${CERTDIR}/${PN}_${CN}.key.pem" || die
+	chmod 400 "${CERTDIR}/${PN}_${CN}.key.pem"
+
+	cat > "${T}/${PF}.$$" <<- _EOF
+	cn = ${CN}
+	tls_www_client
+	dns_name = ${CN}
+	expiration_days = 3650
+	_EOF
+
+	certtool --generate-certificate \
+		--outfile "${CERTDIR}/${PN}_${CN}.cert.pem" \
+		--load-privkey "${CERTDIR}/${PN}_${CN}.key.pem" \
+		--load-ca-certificate "${CERTDIR}/${PN}_ca.cert.pem" \
+		--load-ca-privkey "${CERTDIR}/${PN}_ca.privkey.pem" \
+		--template "${T}/${PF}.$$" || die
+	chmod 400 "${CERTDIR}/${PN}_${CN}.cert.pem"
+
+	rm -f "${T}/${PF}.$$"
+
+	echo
+	einfo "Here is the documentation on how to encrypt your log traffic:"
+	einfo " https://www.rsyslog.com/doc/rsyslog_tls.html"
+}
diff --git a/app-crypt/nss/files/nss-3.44-prefer-writable-tokens-for-trust.patch b/app-crypt/nss/files/nss-3.44-prefer-writable-tokens-for-trust.patch
new file mode 100644
index 0000000..f291903
--- /dev/null
+++ b/app-crypt/nss/files/nss-3.44-prefer-writable-tokens-for-trust.patch
@@ -0,0 +1,87 @@
+This patch makes CERT_SetCertTrust prefer writable tokens that already contain
+the certificate when choosing where to store trust settings.
+See crbug.com/1132030 .
+
+Upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1680453
+Upstream review: https://phabricator.services.mozilla.com/D99840
+
+--- nss/lib/pki/pki3hack.c
++++ nss/lib/pki/pki3hack.c
+@@ -1048,9 +1048,9 @@ static NSSToken *
+ stan_GetTrustToken(
+     NSSCertificate *c)
+ {
+-    NSSToken *ttok = NULL;
+-    NSSToken *rtok = NULL;
+-    NSSToken *tok = NULL;
++    NSSToken *token_with_trust_object = NULL;
++    NSSToken *ro_token_without_trust_object = NULL;
++    NSSToken *rw_token_without_trust_object = NULL;
+     nssCryptokiObject **ip;
+     nssCryptokiObject **instances = nssPKIObject_GetInstances(&c->object);
+     if (!instances) {
+@@ -1058,30 +1058,48 @@ stan_GetTrustToken(
+     }
+     for (ip = instances; *ip; ip++) {
+         nssCryptokiObject *instance = *ip;
+-        nssCryptokiObject *to =
++        nssCryptokiObject *trust_object =
+             nssToken_FindTrustForCertificate(instance->token, NULL,
+                                              &c->encoding, &c->issuer, &c->serial,
+                                              nssTokenSearchType_TokenOnly);
+-        NSSToken *ctok = instance->token;
+-        PRBool ro = PK11_IsReadOnly(ctok->pk11slot);
+-
+-        if (to) {
+-            nssCryptokiObject_Destroy(to);
+-            ttok = ctok;
+-            if (!ro) {
++        NSSToken *current_token = instance->token;
++        PRBool is_read_only = PK11_IsReadOnly(current_token->pk11slot);
++
++        if (trust_object) {
++            nssCryptokiObject_Destroy(trust_object);
++            token_with_trust_object = current_token;
++            if (!is_read_only) {
++                // No point iterating further, as the read-write token that
++                // already has a trust object will be preferred anyway.
+                 break;
+             }
+-        } else {
+-            if (!rtok && ro) {
+-                rtok = ctok;
+-            }
+-            if (!tok && !ro) {
+-                tok = ctok;
+-            }
++            continue;
++        }
++        if (!rw_token_without_trust_object && !is_read_only) {
++          rw_token_without_trust_object = current_token;
++          continue;
++        }
++        if (!ro_token_without_trust_object && is_read_only) {
++          ro_token_without_trust_object = current_token;
+         }
+     }
+     nssCryptokiObjectArray_Destroy(instances);
+-    return ttok ? ttok : (tok ? tok : rtok);
++
++    // Precedence rules:
++    // Note that all tokens considered here have the certificate on them.
++    // read-write token with trust object > any read-write token >
++    //    read-only token with trust object > any read-only token
++    if (token_with_trust_object &&
++        !PK11_IsReadOnly(token_with_trust_object->pk11slot)) {
++      return token_with_trust_object;
++    }
++    if (rw_token_without_trust_object ) {
++      return rw_token_without_trust_object;
++    }
++    if (token_with_trust_object) {
++      return token_with_trust_object;
++    }
++    return ro_token_without_trust_object;
+ }
+ 
+ NSS_EXTERN PRStatus
diff --git a/app-crypt/nss/nss-3.44-r2.ebuild b/app-crypt/nss/nss-3.44-r2.ebuild
index 50019a4..794fbfa 100644
--- a/app-crypt/nss/nss-3.44-r2.ebuild
+++ b/app-crypt/nss/nss-3.44-r2.ebuild
@@ -40,6 +40,7 @@
 	"${FILESDIR}/${PN}-3.32-gentoo-fixups.patch"
 	"${FILESDIR}/${PN}-3.21-gentoo-fixup-warnings.patch"
 	"${FILESDIR}/${PN}-3.23-hppa-byte_order.patch"
+	"${FILESDIR}/${PN}-3.44-prefer-writable-tokens-for-trust.patch"
 )
 
 src_unpack() {
diff --git a/app-crypt/nss/nss-3.44-r3.ebuild b/app-crypt/nss/nss-3.44-r4.ebuild
similarity index 100%
rename from app-crypt/nss/nss-3.44-r3.ebuild
rename to app-crypt/nss/nss-3.44-r4.ebuild
diff --git a/app-crypt/trousers-tests/trousers-tests-0.0.1-r86.ebuild b/app-crypt/trousers-tests/trousers-tests-0.0.1-r86.ebuild
deleted file mode 100644
index 7521882..0000000
--- a/app-crypt/trousers-tests/trousers-tests-0.0.1-r86.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="e72db95c4e3ed7e2306c22511fb54a8b014f6ed0"
-CROS_WORKON_TREE="aba7980808012c4eedfe9cffe497881ab62ea0ef"
-CROS_WORKON_PROJECT="chromiumos/third_party/trousers"
-CROS_WORKON_EGIT_BRANCH="master-0.3.13"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Trousers TPM tests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/trousers/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-DEPEND="
-	app-crypt/trousers
-	!<chromeos-base/autotest-tests-0.0.1-r1521
-"
-RDEPEND="${DEPEND}"
-
-# Enable autotest by default.
-IUSE="${IUSE} +autotest"
-
-IUSE_TESTS="
-	+tests_hardware_TPM
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-CROS_WORKON_LOCALNAME=trousers
-
-# path from root of repo
-AUTOTEST_CLIENT_SITE_TESTS=autotest
-
-src_compile() {
-	# for Makefile
-	export TROUSERS_DIR=${WORKDIR}/${P}
-	autotest_src_compile
-}
-
diff --git a/app-crypt/trousers-tests/trousers-tests-0.0.1-r90.ebuild b/app-crypt/trousers-tests/trousers-tests-0.0.1-r90.ebuild
new file mode 100644
index 0000000..80154e5
--- /dev/null
+++ b/app-crypt/trousers-tests/trousers-tests-0.0.1-r90.ebuild
@@ -0,0 +1,43 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="21ea14eb031957f9cf8d00a57dd45a7a1e9dae84"
+CROS_WORKON_TREE="60ed0f862fd08a2c848734d206da47d7666a8524"
+CROS_WORKON_PROJECT="chromiumos/third_party/trousers"
+CROS_WORKON_EGIT_BRANCH="master-0.3.13"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Trousers TPM tests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/trousers/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+DEPEND="
+	app-crypt/trousers
+	!<chromeos-base/autotest-tests-0.0.1-r1521
+"
+RDEPEND="${DEPEND}"
+
+# Enable autotest by default.
+IUSE="${IUSE} +autotest"
+
+IUSE_TESTS="
+	+tests_hardware_TPM
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+CROS_WORKON_LOCALNAME=trousers
+
+# path from root of repo
+AUTOTEST_CLIENT_SITE_TESTS=autotest
+
+src_compile() {
+	# for Makefile
+	export TROUSERS_DIR=${WORKDIR}/${P}
+	autotest_src_compile
+}
+
diff --git a/app-crypt/trousers/trousers-0.3.3-r105.ebuild b/app-crypt/trousers/trousers-0.3.3-r105.ebuild
new file mode 100644
index 0000000..bf6e387
--- /dev/null
+++ b/app-crypt/trousers/trousers-0.3.3-r105.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Copyright 2010 Google, Inc.
+# Distributed under the terms of the GNU General Public License v2
+# $Header$
+
+EAPI="5"
+CROS_WORKON_COMMIT="21ea14eb031957f9cf8d00a57dd45a7a1e9dae84"
+CROS_WORKON_TREE="60ed0f862fd08a2c848734d206da47d7666a8524"
+CROS_WORKON_PROJECT="chromiumos/third_party/trousers"
+CROS_WORKON_EGIT_BRANCH="chromeos-0.3.13"
+
+inherit autotools base cros-debug cros-sanitizers cros-workon flag-o-matic libchrome systemd tmpfiles user
+
+DESCRIPTION="An open-source TCG Software Stack (TSS) v1.1 implementation"
+HOMEPAGE="http://trousers.sf.net"
+LICENSE="CPL-1.0"
+KEYWORDS="*"
+SLOT="0"
+IUSE="asan doc mocktpm systemd tss_trace"
+
+COMMON_DEPEND="
+	chromeos-base/libhwsec-foundation
+	>=chromeos-base/metrics-0.0.1-r3152
+	>=dev-libs/openssl-0.9.7:0="
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	dev-util/pkgconfig"
+
+## TODO: Check if this patch is useful for us.
+## PATCHES=(	"${FILESDIR}/${PN}-0.2.3-nouseradd.patch" )
+
+pkg_setup() {
+	# New user/group for the daemon
+	enewgroup tss
+	enewuser tss
+}
+
+src_prepare() {
+	base_src_prepare
+
+	sed -e "s/-Werror //" -i configure.in
+	eautoreconf
+}
+
+src_configure() {
+	sanitizers-setup-env
+	use tss_trace && append-cppflags -DTSS_TRACE
+	use mocktpm && append-cppflags -DMOCK_TPM
+
+	cros-debug-add-NDEBUG
+	export BASE_VER="$(libchrome_ver)"
+	econf
+}
+
+src_install() {
+	default
+	dodoc NICETOHAVES
+	use doc && dodoc doc/*
+
+	# Install the empty system.data files
+	dodir /etc/trousers
+	insinto /etc/trousers
+	doins "${S}"/dist/system.data.*
+
+	# Install the init scripts
+	if use systemd; then
+		systemd_dounit init/*.service
+		systemd_enable_service boot-services.target tcsd.service
+		systemd_enable_service boot-services.target tpm-probe.service
+	else
+		insinto /etc/init
+		doins init/*.conf
+	fi
+	exeinto /usr/share/cros/init
+	doexe init/tcsd-pre-start.sh
+	dotmpfiles tmpfiles.d/tcsd.conf
+}
+
+pkg_postinst() {
+	elog "If you have problems starting tcsd, please check permissions and"
+	elog "ownership on /dev/tpm* and ~tss/system.data"
+}
diff --git a/app-crypt/trousers/trousers-0.3.3-r99.ebuild b/app-crypt/trousers/trousers-0.3.3-r99.ebuild
deleted file mode 100644
index b57adae..0000000
--- a/app-crypt/trousers/trousers-0.3.3-r99.ebuild
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Copyright 2010 Google, Inc.
-# Distributed under the terms of the GNU General Public License v2
-# $Header$
-
-EAPI="5"
-CROS_WORKON_COMMIT="e72db95c4e3ed7e2306c22511fb54a8b014f6ed0"
-CROS_WORKON_TREE="aba7980808012c4eedfe9cffe497881ab62ea0ef"
-CROS_WORKON_PROJECT="chromiumos/third_party/trousers"
-CROS_WORKON_EGIT_BRANCH="master-0.3.13"
-
-inherit autotools base cros-debug cros-sanitizers cros-workon flag-o-matic libchrome systemd user
-
-DESCRIPTION="An open-source TCG Software Stack (TSS) v1.1 implementation"
-HOMEPAGE="http://trousers.sf.net"
-LICENSE="CPL-1.0"
-KEYWORDS="*"
-SLOT="0"
-IUSE="asan doc mocktpm systemd tss_trace"
-
-COMMON_DEPEND="
-	>=chromeos-base/metrics-0.0.1-r3152
-	>=dev-libs/openssl-0.9.7:0="
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	dev-util/pkgconfig"
-
-## TODO: Check if this patch is useful for us.
-## PATCHES=(	"${FILESDIR}/${PN}-0.2.3-nouseradd.patch" )
-
-pkg_setup() {
-	# New user/group for the daemon
-	enewgroup tss
-	enewuser tss
-}
-
-src_prepare() {
-	base_src_prepare
-
-	sed -e "s/-Werror //" -i configure.in
-	eautoreconf
-}
-
-src_configure() {
-	sanitizers-setup-env
-	use tss_trace && append-cppflags -DTSS_TRACE
-	use mocktpm && append-cppflags -DMOCK_TPM
-
-	cros-debug-add-NDEBUG
-	export BASE_VER="$(libchrome_ver)"
-	econf
-}
-
-src_install() {
-	default
-	dodoc NICETOHAVES
-	use doc && dodoc doc/*
-
-	# Install the empty system.data files
-	dodir /etc/trousers
-	insinto /etc/trousers
-	doins "${S}"/dist/system.data.*
-
-	# Install the init scripts
-	if use systemd; then
-		systemd_dounit init/*.service
-		systemd_enable_service boot-services.target tcsd.service
-		systemd_enable_service boot-services.target tpm-probe.service
-	else
-		insinto /etc/init
-		doins init/*.conf
-	fi
-	exeinto /usr/share/cros/init
-	doexe init/tcsd-pre-start.sh
-}
-
-pkg_postinst() {
-	elog "If you have problems starting tcsd, please check permissions and"
-	elog "ownership on /dev/tpm* and ~tss/system.data"
-}
diff --git a/app-crypt/trousers/trousers-9999.ebuild b/app-crypt/trousers/trousers-9999.ebuild
index 98acf56..4474712 100644
--- a/app-crypt/trousers/trousers-9999.ebuild
+++ b/app-crypt/trousers/trousers-9999.ebuild
@@ -5,9 +5,9 @@
 
 EAPI="5"
 CROS_WORKON_PROJECT="chromiumos/third_party/trousers"
-CROS_WORKON_EGIT_BRANCH="master-0.3.13"
+CROS_WORKON_EGIT_BRANCH="chromeos-0.3.13"
 
-inherit autotools base cros-debug cros-sanitizers cros-workon flag-o-matic libchrome systemd user
+inherit autotools base cros-debug cros-sanitizers cros-workon flag-o-matic libchrome systemd tmpfiles user
 
 DESCRIPTION="An open-source TCG Software Stack (TSS) v1.1 implementation"
 HOMEPAGE="http://trousers.sf.net"
@@ -17,6 +17,7 @@
 IUSE="asan doc mocktpm systemd tss_trace"
 
 COMMON_DEPEND="
+	chromeos-base/libhwsec-foundation
 	>=chromeos-base/metrics-0.0.1-r3152
 	>=dev-libs/openssl-0.9.7:0="
 
@@ -72,6 +73,7 @@
 	fi
 	exeinto /usr/share/cros/init
 	doexe init/tcsd-pre-start.sh
+	dotmpfiles tmpfiles.d/tcsd.conf
 }
 
 pkg_postinst() {
diff --git a/app-emulation/lxc/Manifest b/app-emulation/lxc/Manifest
index 4133ad3..be6144f 100644
--- a/app-emulation/lxc/Manifest
+++ b/app-emulation/lxc/Manifest
@@ -1 +1,3 @@
+DIST lxc-4.0.9.tar.gz 1500310 BLAKE2B 3796d36b6f76ec595dc28207e66ec9f5a7c1a39f5c5ebc851638c519be35f59b4ec06a71b2866cd8fef0a6140f61fd4b70c900f5a8ffd42d7da7a30d3ff59975 SHA512 4ef9d9efdd4118fdffde8b49c6ae71cf5eb060be51daaa4f4ceb804c743fbf3278e6518e6a694faefc720f2834f98ac48d67842d589a2120b8f7ec4c3b61fa84
+DIST lxc-4.0.9.tar.gz.asc 833 BLAKE2B 2d275c968831410d987aa7f8062f4e35ba15043f92f38fd3bdd6bf80964906741d05ccd93789132d421ee1c8778cec6a2e76c4f0eb2165cf0107261495fa6856 SHA512 4c90dfbdba90959ee8df5da8ca8b240f65ab03ab91637833c677e2a73592c09f9c5a55b9a261be6efb0888156c916223ff1aa9003b18d46e667908aaa550c944
 DIST lxc-3.0.3.tar.gz 1263371 SHA256 620cb832cc02c63bf4d330657bf6176544e145da281ee384a34d689635a19841 SHA512 cdc411364153d7ed494bab604260f5cbdfd5bd7734a59af970b3198c7b3cb340b6736856a2189d5989e169945a817ac8b531bc3ab62217a4285dd63a851f9c8a WHIRLPOOL d2ee6f15747c3a746f2994344abc74239bddab82f5370dece3da9ce8379324db2a050b52d151d3c1c0b77bfeeb6b708af3eac28cabda0960cacf071c43b73d1c
diff --git a/app-emulation/lxc/files/lxc.initd.8 b/app-emulation/lxc/files/lxc.initd.8
new file mode 100644
index 0000000..727f6d5
--- /dev/null
+++ b/app-emulation/lxc/files/lxc.initd.8
@@ -0,0 +1,131 @@
+#!/sbin/openrc-run
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+CONTAINER=${SVCNAME#*.}
+
+LXC_PATH=`lxc-config lxc.lxcpath`
+
+lxc_get_configfile() {
+	if [ -f "${LXC_PATH}/${CONTAINER}.conf" ]; then
+		echo "${LXC_PATH}/${CONTAINER}.conf"
+	elif [ -f "${LXC_PATH}/${CONTAINER}/config" ]; then
+		echo "${LXC_PATH}/${CONTAINER}/config"
+	else
+		eerror "Unable to find a suitable configuration file."
+		eerror "If you set up the container in a non-standard"
+		eerror "location, please set the CONFIGFILE variable."
+		return 1
+	fi
+}
+
+[ $CONTAINER != $SVCNAME ] && CONFIGFILE=${CONFIGFILE:-$(lxc_get_configfile)}
+
+lxc_get_var() {
+	awk 'BEGIN { FS="[ \t]*=[ \t]*" } $1 == "'$1'" { print $2; exit }' ${CONFIGFILE}
+}
+
+lxc_get_net_link_type() {
+	awk 'BEGIN { FS="[ \t]*=[ \t]*"; _link=""; _type="" }
+		$1 == "lxc.network.type" {_type=$2;}
+		$1 == "lxc.network.link" {_link=$2;}
+		match($1, /lxc\.net\.[[:digit:]]+\.type/) {_type=$2;}
+		match($1, /lxc\.net\.[[:digit:]]+\.link/) {_link=$2;}
+		{if(_link != "" && _type != ""){
+			printf("%s:%s\n", _link, _type );
+			_link=""; _type="";
+		}; }' <${CONFIGFILE}
+}
+
+checkconfig() {
+	if [ ${CONTAINER} = ${SVCNAME} ]; then
+		eerror "You have to create an init script for each container:"
+		eerror " ln -s lxc /etc/init.d/lxc.container"
+		return 1
+	fi
+
+	# no need to output anything, the function takes care of that.
+	[ -z "${CONFIGFILE}" ] && return 1
+
+	utsname=$(lxc_get_var lxc.uts.name)
+	if [ -z "$utsname" ] ; then
+		utsname=$(lxc_get_var lxc.utsname)
+	fi
+
+	if [ "${CONTAINER}" != "${utsname}" ]; then
+	    eerror "You should use the same name for the service and the"
+	    eerror "container. Right now the container is called ${utsname}"
+	    return 1
+	fi
+}
+
+depend() {
+	# be quiet, since we have to run depend() also for the
+	# non-muxed init script, unfortunately.
+	checkconfig 2>/dev/null || return 0
+
+	config ${CONFIGFILE}
+	need localmount
+	use lxcfs
+
+	local _x _if
+	for _x in $(lxc_get_net_link_type); do
+		_if=${_x%:*}
+		case "${_x##*:}" in
+			# when the network type is set to phys, we can make use of a
+			# network service (for instance to set it up before we disable
+			# the net_admin capability), but we might also  not set it up
+			# at all on the host and leave the net_admin capable service
+			# to take care of it.
+			phys)	use net.${_if} ;;
+			*)	need net.${_if} ;;
+		esac
+	done
+}
+
+start() {
+	checkconfig || return 1
+	rm -f /var/log/lxc/${CONTAINER}.log
+
+	rootpath=$(lxc_get_var lxc.rootfs)
+
+	# Check the format of our init and the chroot's init, to see
+	# if we have to use linux32 or linux64; always use setarch
+	# when required, as that makes it easier to deal with
+	# x32-based containers.
+	case $(scanelf -BF '%a#f' ${rootpath}/sbin/init) in
+		EM_X86_64)	setarch=linux64;;
+		EM_386)		setarch=linux32;;
+	esac
+
+	ebegin "Starting LXC container ${CONTAINER}"
+	env -i ${setarch} $(which lxc-start) -n ${CONTAINER} -f ${CONFIGFILE} -d -o /var/log/lxc/${CONTAINER}.log
+	sleep 1
+
+	# lxc-start -d will _always_ report a correct startup, even if it
+	# failed, so rather than trust that, check that the cgroup exists.
+	# fix for LXC 3.1	
+
+	STATE="$(lxc-info -s -H ${CONTAINER})"
+	[ "$STATE" = "RUNNING" ]
+	
+	eend $?
+}
+
+stop() {
+	checkconfig || return 1
+
+	STATE="$(lxc-info -s -H ${CONTAINER})"
+	
+	if ! [ "$STATE" = "RUNNING" ]; then
+	    ewarn "${CONTAINER} doesn't seem to be started."
+	    return 0
+	fi
+
+	# 30s should be enough to shut everything down
+	# lxc-stop will return back anyway as soon as successful shutdown
+	# after 30s, lxc-stop sends SIGKILL (dirty shotdown)
+	ebegin "Stopping LXC container ${CONTAINER}"
+	lxc-stop -t 30 -n ${CONTAINER}
+	eend $?
+}
diff --git a/app-emulation/lxc/files/lxc_at.service.4.0.0 b/app-emulation/lxc/files/lxc_at.service.4.0.0
new file mode 100644
index 0000000..b354bc5
--- /dev/null
+++ b/app-emulation/lxc/files/lxc_at.service.4.0.0
@@ -0,0 +1,15 @@
+[Unit]
+Description=Linux Container %i
+After=network.target
+Wants=lxcfs.service
+
+[Service]
+Type=forking
+ExecStart=/usr/bin/lxc-start -d -n %i -p /run/lxc-%i.pid
+PIDFile=/run/lxc-%i.pid
+ExecStop=/usr/bin/lxc-stop -n %i
+Delegate=true
+TasksMax=32768
+
+[Install]
+WantedBy=multi-user.target
diff --git a/app-emulation/lxc/lxc-4.0.9.ebuild b/app-emulation/lxc/lxc-4.0.9.ebuild
new file mode 100644
index 0000000..b6b7555
--- /dev/null
+++ b/app-emulation/lxc/lxc-4.0.9.ebuild
@@ -0,0 +1,177 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# TODO(crbug.com/1097610) Once stabilized, this can probably go back
+# to portage-stable
+
+EAPI=7
+
+inherit autotools bash-completion-r1 linux-info flag-o-matic optfeature pam readme.gentoo-r1 systemd verify-sig
+
+DESCRIPTION="A userspace interface for the Linux kernel containment features"
+HOMEPAGE="https://linuxcontainers.org/ https://github.com/lxc/lxc"
+SRC_URI="https://linuxcontainers.org/downloads/lxc/${P}.tar.gz
+	verify-sig? ( https://linuxcontainers.org/downloads/lxc/${P}.tar.gz.asc )"
+
+KEYWORDS="*"
+
+LICENSE="LGPL-3"
+SLOT="4"
+IUSE="apparmor +caps doc man pam selinux +ssl +tools verify-sig"
+
+RDEPEND="app-misc/pax-utils
+	sys-apps/util-linux
+	sys-libs/libcap
+	sys-libs/libseccomp
+	virtual/awk
+	caps? ( sys-libs/libcap )
+	pam? ( sys-libs/pam )
+	selinux? ( sys-libs/libselinux )
+	ssl? (
+		dev-libs/openssl:0=
+	)"
+DEPEND="${RDEPEND}
+	>=sys-kernel/linux-headers-4
+	apparmor? ( sys-apps/apparmor )"
+BDEPEND="doc? ( app-doc/doxygen )
+	man? ( app-text/docbook-sgml-utils )
+	verify-sig? ( app-crypt/openpgp-keys-linuxcontainers )"
+
+CONFIG_CHECK="~!NETPRIO_CGROUP
+	~CGROUPS
+	~CGROUP_CPUACCT
+	~CGROUP_DEVICE
+	~CGROUP_FREEZER
+
+	~CGROUP_SCHED
+	~CPUSETS
+	~IPC_NS
+	~MACVLAN
+
+	~MEMCG
+	~NAMESPACES
+	~NET_NS
+	~PID_NS
+
+	~POSIX_MQUEUE
+	~USER_NS
+	~UTS_NS
+	~VETH"
+
+ERROR_CGROUP_FREEZER="CONFIG_CGROUP_FREEZER: needed to freeze containers"
+ERROR_MACVLAN="CONFIG_MACVLAN: needed for internal (inter-container) networking"
+ERROR_MEMCG="CONFIG_MEMCG: needed for memory resource control in containers"
+ERROR_NET_NS="CONFIG_NET_NS: needed for unshared network"
+ERROR_POSIX_MQUEUE="CONFIG_POSIX_MQUEUE: needed for lxc-execute command"
+ERROR_UTS_NS="CONFIG_UTS_NS: needed to unshare hostnames and uname info"
+ERROR_VETH="CONFIG_VETH: needed for internal (host-to-container) networking"
+
+DOCS=( AUTHORS CONTRIBUTING MAINTAINERS NEWS README doc/FAQ.txt )
+
+pkg_setup() {
+	linux-info_pkg_setup
+}
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-3.0.0-bash-completion.patch
+	"${FILESDIR}"/${PN}-2.0.5-omit-sysconfig.patch # bug 558854
+)
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/linuxcontainers.asc
+
+src_prepare() {
+	default
+	eautoreconf
+}
+
+src_configure() {
+	append-flags -fno-strict-aliasing
+
+	prefix="${EPREFIX}"/opt/google/lxd-next
+
+	local myeconfargs=(
+		--prefix="${prefix}"
+		--bindir="${prefix}"/usr/bin
+		--localstatedir=/var
+		--sbindir="${prefix}"/usr/bin
+		--datadir="${prefix}"/usr/share
+		--sysconfdir="${prefix}"/etc
+
+		--with-config-path=/var/lib/lxc
+		--with-distro=gentoo
+		--with-init-script=systemd
+		--with-rootfs-path="${prefix}"/var/lib/lxc/rootfs
+		--with-runtime-path=/run
+		--with-systemdsystemunitdir="${prefix}$(systemd_get_systemunitdir)"
+
+		--disable-coverity-build
+		--disable-dlog
+		--disable-fuzzers
+		--disable-mutex-debugging
+		--disable-no-undefined
+		--disable-rpath
+		--disable-sanitizers
+		--disable-tests
+		--disable-werror
+
+		--enable-bash
+		--enable-commands
+		--enable-memfd-rexec
+		--enable-seccomp
+		--enable-thread-safety
+
+		$(use_enable apparmor)
+		$(use_enable caps capabilities)
+		$(use_enable doc api-docs)
+		$(use_enable doc examples)
+		$(use_enable man doc)
+		$(use_enable pam)
+		$(use_enable selinux)
+		$(use_enable ssl openssl)
+		$(use_enable tools)
+
+		$(use_with pam pamdir "${prefix}$(getpam_mod_dir)")
+	)
+
+	econf "${myeconfargs[@]}"
+}
+
+src_install() {
+	default
+
+	prefix="${ED}/opt/google/lxd-next"
+
+	mv "${prefix}"/usr/share/bash-completion/completions/${PN} "${prefix}"/$(get_bashcompdir)/${PN}-start || die
+	bashcomp_alias ${PN}-start \
+		${PN}-{attach,cgroup,copy,console,create,destroy,device,execute,freeze,info,monitor,snapshot,stop,unfreeze,wait}
+
+	keepdir /etc/lxc /var/lib/lxc/rootfs /var/log/lxc
+	rmdir "${D}"/var/cache/lxc "${D}"/var/cache || die "rmdir failed"
+
+	find "${D}" -name '*.la' -delete -o -name '*.a' -delete || die
+
+	# Gentoo-specific additions!
+	newinitd "${FILESDIR}/${PN}.initd.8" ${PN}
+
+	DOC_CONTENTS="
+		For openrc, there is an init script provided with the package.
+		You should only need to symlink /etc/init.d/lxc to
+		/etc/init.d/lxc.configname to start the container defined in
+		/etc/lxc/configname.conf.
+
+		Correspondingly, for systemd a service file lxc@.service is installed.
+		Enable and start lxc@configname in order to start the container defined
+		in /etc/lxc/configname.conf."
+	DISABLE_AUTOFORMATTING=true
+	readme.gentoo_create_doc
+}
+
+pkg_postinst() {
+	readme.gentoo_print_elog
+
+	elog "Please run 'lxc-checkconfig' to see optional kernel features."
+	elog
+	optfeature "automatic template scripts" app-emulation/lxc-templates
+	optfeature "Debian-based distribution container image support" dev-util/debootstrap
+	optfeature "snapshot & restore functionality" sys-process/criu
+}
diff --git a/app-emulation/lxc/metadata.xml b/app-emulation/lxc/metadata.xml
index b0c9c68..b332e72 100644
--- a/app-emulation/lxc/metadata.xml
+++ b/app-emulation/lxc/metadata.xml
@@ -1,17 +1,19 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
-  <herd>virtualization</herd>
-  <maintainer>
-    <email>flameeyes@gentoo.org</email>
+  <maintainer type="person">
+    <email>juippis@gentoo.org</email>
+    <name>Joonas Niilola</name>
   </maintainer>
-  <maintainer>
-    <email>dev-zero@gentoo.org</email>
-  </maintainer>
-  <maintainer>
-    <email>hwoarang@gentoo.org</email>
+  <maintainer type="project">
+    <email>virtualization@gentoo.org</email>
+    <name>Gentoo Virtualization Project</name>
   </maintainer>
   <use>
-    <flag name="seccomp">Use seccomp syscall filters using <pkg>sys-libs/libseccomp</pkg></flag>
+    <flag name="apparmor">Enable AppArmor support</flag>
+    <flag name="tools">Build and install additional command line tools</flag>
   </use>
+  <upstream>
+    <remote-id type="github">lxc/lxc</remote-id>
+  </upstream>
 </pkgmetadata>
diff --git a/app-emulation/lxd/Manifest b/app-emulation/lxd/Manifest
index 2662800..54e38c1 100644
--- a/app-emulation/lxd/Manifest
+++ b/app-emulation/lxd/Manifest
@@ -1 +1,3 @@
 DIST lxd-3.17.tar.gz 23494267 BLAKE2B 69948c1a032b2d22f298416205aed457b3a94d42c6239b360a7c63a20a89f85dd67557c8864328055419627fb24b003dba8b386bfbe98e3a860cce24204f82ba SHA512 5dcfb423d091733736fb7df7ed14a638ecab1280863836d91e63823683521d4f4e1ee52f364cb76b0abf8382dc115598d96037c90d772a0b664476cb6917e7d7
+DIST lxd-4.0.6.tar.gz 15353779 BLAKE2B f699e91c53b407e5a0e47fe40b133d6216754b1e5c5829ee68993468565f2080c12cbcbf8373d6da16ca94a3648ec51b874e66ff589be09dc95f2382d18f3e12 SHA512 58efaac50dbcbb3cf0e7aa1b3b43085beae4546dfcd081720b049c2b88bf120b9a74e7db1238bbdd8cc2449e039b076ece3734e8f46f3ddbdc70aaae8b326963
+DIST lxd-4.0.6.tar.gz.asc 833 BLAKE2B 6d1756b130a944a98e62d809c45129178bfc39158c71e09319cdaff7461b14bda467e44a781bb5c15d40afdae4d3ec86f98919738a8c169d3fff910d8e9fe58a SHA512 6c59bd8ec9bf0d9bd90c8ab2970cf6928c0bef3736631ea2a56ebc464f33940366d35925ddfc4104c13fa0fd4e1bea42796e0a2eb82a8bf395957829f938c7db
diff --git a/app-emulation/lxd/files/lxd-3.17-Fix-lxd-import-error.patch b/app-emulation/lxd/files/lxd-3.17-Fix-lxd-import-error.patch
new file mode 100644
index 0000000..1273e21
--- /dev/null
+++ b/app-emulation/lxd/files/lxd-3.17-Fix-lxd-import-error.patch
@@ -0,0 +1,45 @@
+From 595c704bab036cfb74a350103e48e233315ba402 Mon Sep 17 00:00:00 2001
+From: Fergus Dall <sidereal@google.com>
+Date: Thu, 1 Apr 2021 15:57:51 +1100
+Subject: [PATCH] Fix lxd import error
+
+Currently if the snapshots directory doesn't exist, and backup.yaml
+had snapshots listed, this is a hard error, whereas other conflicts
+can be bypassed by adding --force. This happens because if there are
+no snapshots, the directory containing them doesn't exist
+either. Change the handling to treat a non-existent directory as "no
+snapshots" rather then as an error.
+---
+ lxd/api_internal.go | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/lxd/api_internal.go b/lxd/api_internal.go
+index 758f17b40..6b4d6e7dd 100644
+--- a/lxd/api_internal.go
++++ b/lxd/api_internal.go
+@@ -547,15 +547,16 @@ func internalImport(d *Daemon, r *http.Request) Response {
+ 		case "btrfs":
+ 			snapshotsDirPath := driver.GetSnapshotMountPoint(projectName, poolName, req.Name)
+ 			snapshotsDir, err := os.Open(snapshotsDirPath)
+-			if err != nil {
++			if err != nil && !os.IsNotExist(err) {
+ 				return InternalError(err)
+-			}
+-			onDiskSnapshots, err = snapshotsDir.Readdirnames(-1)
+-			if err != nil {
++			} else if err == nil {
++				onDiskSnapshots, err = snapshotsDir.Readdirnames(-1)
++				if err != nil {
++					snapshotsDir.Close()
++					return InternalError(err)
++				}
+ 				snapshotsDir.Close()
+-				return InternalError(err)
+ 			}
+-			snapshotsDir.Close()
+ 		case "dir":
+ 			snapshotsDirPath := driver.GetSnapshotMountPoint(projectName, poolName, req.Name)
+ 			snapshotsDir, err := os.Open(snapshotsDirPath)
+-- 
+2.31.0.291.g576ba9dcdaf-goog
+
diff --git a/app-emulation/lxd/files/lxd-4.0.6-set-path.sh b/app-emulation/lxd/files/lxd-4.0.6-set-path.sh
new file mode 100644
index 0000000..2c03565
--- /dev/null
+++ b/app-emulation/lxd/files/lxd-4.0.6-set-path.sh
@@ -0,0 +1,22 @@
+# shellcheck shell=bash
+#
+# Copyright 2021 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.
+#
+# Append lxd-next paths to PATH and LD_LIBRARY_PATH
+#
+# We have to do this both here and in maitred for three reasons:
+#  1) vshd is started before the StartTermina RPC, so it's environment variables
+#     don't reflect information about which LXD should be used
+#  2) /etc/profile adds the "normal" PATH entries *before* existing PATH values,
+#     whereas we need the lxd-next paths to come first, so even if vshd did have
+#     a correct PATH the resulting login shell wouldn't.
+#  3) vshd clears the environment before exec anyway
+#
+# This file is installed as a dot-file in /etc/bash/bashrc.d/ (which will be
+# ignored) and bind-mounted over an empty file in the same directory if it is
+# needed.
+
+export PATH="/opt/google/lxd-next/bin:/opt/google/lxd-next/usr/bin:${PATH}"
+export LD_LIBRARY_PATH="/opt/google/lxd-next/lib:/opt/google/lxd-next/lib64:/opt/google/lxd-next/usr/lib:/opt/google/lxd-next/usr/lib64:${LD_LIBRARY_PATH}"
diff --git a/app-emulation/lxd/lxd-3.17-r3.ebuild b/app-emulation/lxd/lxd-3.17-r4.ebuild
similarity index 100%
rename from app-emulation/lxd/lxd-3.17-r3.ebuild
rename to app-emulation/lxd/lxd-3.17-r4.ebuild
diff --git a/app-emulation/lxd/lxd-3.17.ebuild b/app-emulation/lxd/lxd-3.17.ebuild
index fe4080d..211f544 100644
--- a/app-emulation/lxd/lxd-3.17.ebuild
+++ b/app-emulation/lxd/lxd-3.17.ebuild
@@ -90,7 +90,7 @@
 RDEPEND="
 	daemon? (
 		app-arch/xz-utils
-		>=app-emulation/lxc-2.0.7[seccomp]
+		>=app-emulation/lxc-2.0.7:0[seccomp]
 		dev-libs/libuv
 		dev-libs/lzo
 		dev-util/xdelta:3
@@ -104,7 +104,7 @@
 		net-misc/rsync[xattr]
 		sys-apps/iproute2[ipv6?]
 		sys-fs/fuse
-		sys-fs/lxcfs
+		sys-fs/lxcfs:0
 		sys-fs/squashfs-tools
 		virtual/acl
 	)
@@ -162,6 +162,9 @@
 }
 
 src_prepare() {
+	cd "${S}/_dist/src/github.com/lxc/lxd"
+	eapply "${FILESDIR}/${P}-Fix-lxd-import-error.patch" # crbug.com/1194406
+
 	cd "${S}/_dist/src/${EGO_PN}"
 	eapply "${FILESDIR}/0001-lxd-util-Add-HasFilesystem.patch" # crbug.com/1024327
 	eapply "${FILESDIR}/0002-lxd-Detect-built-in-shiftfs-too.patch" # crbug.com/1024327
diff --git a/app-emulation/lxd/lxd-4.0.6.ebuild b/app-emulation/lxd/lxd-4.0.6.ebuild
new file mode 100644
index 0000000..15045a3
--- /dev/null
+++ b/app-emulation/lxd/lxd-4.0.6.ebuild
@@ -0,0 +1,199 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+#
+# shellcheck disable=SC2034
+
+EAPI=7
+
+DESCRIPTION="Fast, dense and secure container management"
+HOMEPAGE="https://linuxcontainers.org/lxd/introduction/ https://github.com/lxc/lxd"
+
+# TODO(crbug/1097610) tremplin requires that someone install the lxd client
+# library. Currently this is done in the 3.17 ebuild, but when this becomes the
+# main ebuild it will need to be moved here.
+CROS_GO_PACKAGES=(
+)
+
+CROS_GO_WORKSPACE="${S}/_dist"
+EGO_PN="github.com/lxc/lxd"
+BIN_PATH="/opt/google/lxd-next/usr/bin"
+CROS_GO_BINARIES=(
+	"${EGO_PN}/lxd:${BIN_PATH}/lxd"
+	"${EGO_PN}/fuidshift:${BIN_PATH}/fuidshift"
+	"${EGO_PN}/lxd-agent:${BIN_PATH}/lxd-agent"
+	"${EGO_PN}/lxd-benchmark:${BIN_PATH}/lxd-benchmark"
+	"${EGO_PN}/lxd-p2c:${BIN_PATH}/lxd-p2c"
+	"${EGO_PN}/lxc:${BIN_PATH}/lxc"
+	"${EGO_PN}/lxc-to-lxd:${BIN_PATH}/lxc-to-lxd"
+)
+
+# Needs to include licenses for all bundled programs and libraries.
+LICENSE="Apache-2.0 BSD BSD-2 LGPL-3 MIT MPL-2.0"
+SLOT="4"
+KEYWORDS="*"
+
+IUSE="apparmor ipv6 nls verify-sig"
+
+inherit autotools bash-completion-r1 linux-info optfeature systemd verify-sig cros-go user
+
+SRC_URI="https://linuxcontainers.org/downloads/lxd/${P}.tar.gz
+	verify-sig? ( https://linuxcontainers.org/downloads/lxd/${P}.tar.gz.asc )"
+
+DEPEND="app-arch/xz-utils
+	>=app-emulation/lxc-3.0.0:4[apparmor?,seccomp(+)]
+	dev-db/sqlite
+	dev-libs/libuv
+	dev-libs/lzo
+	net-dns/dnsmasq[dhcp,ipv6?]
+	virtual/libudev"
+RDEPEND="${DEPEND}
+	net-firewall/ebtables
+	net-firewall/iptables[ipv6?]
+	sys-apps/iproute2[ipv6?]
+	sys-fs/fuse:0=
+	sys-fs/lxcfs:4
+	sys-fs/squashfs-tools[lzma]
+	virtual/acl"
+BDEPEND="dev-lang/go
+	nls? ( sys-devel/gettext )
+	verify-sig? ( app-crypt/openpgp-keys-linuxcontainers )"
+
+CONFIG_CHECK="
+	~CGROUPS
+	~IPC_NS
+	~NET_NS
+	~PID_NS
+
+	~SECCOMP
+	~USER_NS
+	~UTS_NS
+"
+
+ERROR_IPC_NS="CONFIG_IPC_NS is required."
+ERROR_NET_NS="CONFIG_NET_NS is required."
+ERROR_PID_NS="CONFIG_PID_NS is required."
+ERROR_SECCOMP="CONFIG_SECCOMP is required."
+ERROR_UTS_NS="CONFIG_UTS_NS is required."
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/linuxcontainers.asc
+
+src_unpack() {
+	unpack "${A}"
+	cd "${S}" || die
+
+	# Instead of using the lxd symlink in the dist directory, move the lxd
+	# source into that directory. Otherwise, the cros-go_src_install stage
+	# will fail since it won't traverse symlinks.
+	rm "${S}/_dist/src/${EGO_PN}"
+	mkdir "${S}/_dist/src/${EGO_PN}"
+	find "${S}"/* -maxdepth 0 \
+				-type d \
+				! -name "_dist" \
+				-exec mv {} "${S}/_dist/src/${EGO_PN}" \;
+}
+
+src_configure() {
+	DEPS="${S}/_dist/deps"
+
+	cd "${DEPS}/raft" || die "Can't cd to raft dir"
+	eautoreconf
+	econf --enable-static=no
+
+	cd "${DEPS}/dqlite" || die "Can't cd to dqlite dir"
+	export RAFT_CFLAGS="-I${DEPS}/raft/include/"
+	export RAFT_LIBS="${DEPS}/raft/.libs"
+	eautoreconf
+	econf --enable-static=no
+}
+
+src_compile() {
+	DEPS="${S}/_dist/deps"
+
+	cd "${DEPS}/raft" || die "Can't cd to raft dir"
+	emake
+
+	cd "${DEPS}/dqlite" || die "Can't cd to dqlite dir"
+	emake
+
+	cd "${S}" || die
+
+	# Taken from the output of make deps
+	export CGO_CFLAGS="-I${DEPS}/raft/include/ -I${DEPS}/dqlite/include/"
+	export CGO_LDFLAGS="-L${DEPS}/raft/.libs -L${DEPS}/dqlite/.libs/"
+	export LD_LIBRARY_PATH="${DEPS}/raft/.libs/:${DEPS}/dqlite/.libs/"
+	export CGO_LDFLAGS_ALLOW="-Wl,-wrap,pthread_create"
+
+	# TODO(crbug/1097610) Because we're installing everything to different
+	# paths, we need to tell pkg-config and cgo where to find it. This can
+	# be removed when we commit to LXD 4.0
+	install_root="${SYSROOT}/opt/google/lxd-next"
+	export PKG_CONFIG_LIBDIR="${install_root}/$(get_libdir)/pkgconfig:${SYSROOT}/$(get_libdir)/pkgconfig"
+	export PKG_CONFIG_SYSROOT_DIR="${SYSROOT}"
+	export PKG_CONFIG="/usr/bin/pkg-config"
+	export CGO_CFLAGS="${CGO_CFLAGS} -I${install_root}/include"
+	export CGO_LDFLAGS="${CGO_LDFLAGS} -L${install_root}/$(get_libdir)"
+
+	cros-go_src_compile
+
+	if use nls; then
+		cd "${S}/_dist/src/${EGO_PN}" || die
+		emake -f "${S}/Makefile" build-mo
+	fi
+}
+
+src_test() {
+	DEPS="${S}/_dist/deps"
+
+	# Taken from the output of make deps
+	export CGO_CFLAGS="-I${DEPS}/raft/include/ -I${DEPS}/dqlite/include/"
+	export CGO_LDFLAGS="-L${DEPS}/raft/.libs -L${DEPS}/dqlite/.libs/"
+	export LD_LIBRARY_PATH="${DEPS}/raft/.libs/:${DEPS}/dqlite/.libs/"
+	export CGO_LDFLAGS_ALLOW="-Wl,-wrap,pthread_create"
+
+	# TODO(sidereal) would be nice to enable more tests here
+	cros_go test -v ${EGO_PN}/lxd || die
+}
+
+src_install() {
+	cros-go_src_install
+
+	DEPS="${S}/_dist/deps"
+
+	cd "${DEPS}/raft" || die
+	emake DESTDIR="${D}/opt/google/lxd-next" install
+
+	cd "${DEPS}/dqlite" || die
+	emake DESTDIR="${D}/opt/google/lxd-next" install
+
+	cd "${S}" || die
+	newbashcomp "${S}/_dist/src/${EGO_PN}/scripts/bash/lxd-client" lxc
+
+	dodoc AUTHORS _dist/src/${EGO_PN}/doc/*
+	use nls && domo "${S}/_dist/src/${EGO_PN}/po/"*.mo
+
+	# TODO(crbug/1097610) Remove this once we no longer need to do weird
+	# things with PATH
+	insinto /etc/bash/bashrc.d
+	newins "${FILESDIR}/${P}-set-path.sh" ".set-path-for-lxd-next.sh"
+	newins "$(mktemp)" "set-path-for-lxd-next.sh"
+}
+
+pkg_postinst() {
+	cros-go_pkg_postinst
+
+	# The control socket will be owned by (and writeable by) this group.
+	enewgroup lxd
+
+	elog
+	elog "Consult https://wiki.gentoo.org/wiki/LXD for more information,"
+	elog "including a Quick Start."
+	elog
+	elog "Please run 'lxc-checkconfig' to see all optional kernel features."
+	elog
+	elog "Optional features:"
+	optfeature "btrfs storage backend" sys-fs/btrfs-progs
+	optfeature "lvm2 storage backend" sys-fs/lvm2
+	optfeature "zfs storage backend" sys-fs/zfs
+	elog
+	elog "Be sure to add your local user to the lxd group."
+}
diff --git a/app-emulation/lxd/metadata.xml b/app-emulation/lxd/metadata.xml
index d4ab64b..db7a11f 100644
--- a/app-emulation/lxd/metadata.xml
+++ b/app-emulation/lxd/metadata.xml
@@ -1,33 +1,24 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
-	<maintainer type="person">
-		<email>stasibear@gentoo.org</email>
-		<name>Erik Mackdanz</name>
-	</maintainer>
-	<maintainer type="person">
-		<email>hsoft@hardcoded.net</email>
-		<name>Virgil Dupras</name>
-	</maintainer>
-	<maintainer type="project">
-		<email>proxy-maint@gentoo.org</email>
-		<name>Proxy Maintainers</name>
-	</maintainer>
-	<longdescription>
-		By combining the speed and density of containers with
-		the security of traditional virtual machines, LXD is
-		the next-generation of container hypervisor for Linux
-		from Canonical.
-	</longdescription>
-	<upstream>
-		<remote-id type="github">lxc/lxd</remote-id>
-	</upstream>
-	<use>
-		<flag name="daemon">
-			Build the system daemon, not just the client tool
-		</flag>
-		<flag name="dnsmasq">
-			Depend on dnsmasq to provide DHCP and DNS.
-		</flag>
-	</use>
+  <maintainer type="person">
+    <email>juippis@gentoo.org</email>
+    <name>Joonas Niilola</name>
+  </maintainer>
+  <maintainer type="project">
+    <email>virtualization@gentoo.org</email>
+    <name>Gentoo Virtualization Project</name>
+  </maintainer>
+  <use>
+    <flag name="apparmor">Enable AppArmor support</flag>
+  </use>
+  <longdescription>
+    By combining the speed and density of containers with
+    the security of traditional virtual machines, LXD is
+    the next-generation of container hypervisor for Linux
+    from Canonical.
+  </longdescription>
+  <upstream>
+    <remote-id type="github">lxc/lxd</remote-id>
+  </upstream>
 </pkgmetadata>
diff --git a/app-emulation/qemu/qemu.bashrc b/app-emulation/qemu/qemu.bashrc
new file mode 100644
index 0000000..91d918f
--- /dev/null
+++ b/app-emulation/qemu/qemu.bashrc
@@ -0,0 +1,33 @@
+# Copyright 2021 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.
+
+cros_pre_src_configure_xopensource() {
+	# Workaround to build qemu 5.2 with ncurses 5.
+	# ncurses 6 does not appear to need it.
+	append-cppflags "-D_XOPEN_SOURCE_EXTENDED"
+}
+
+cros_post_src_install_lddtree() {
+	# Create a package we can use outside the SDK.
+	# Only do this for the few tools we use for chromite.lib.vm.
+	local prog progs=( qemu-img qemu-system-x86_64 )
+	/mnt/host/source/chromite/bin/lddtree \
+		--copy-to "${D}/usr/libexec/qemu" \
+		--libdir /lib \
+		--bindir /bin \
+		--generate-wrappers \
+		"${progs[@]/#/${D}/usr/bin/}" || die
+	# glibc dynamically loads these based on /etc/nsswich.conf, so we have
+	# to copy them over manually.
+	cp "${SYSROOT}/$(get_libdir)/libnss_"{compat,db,dns,files}.so.2 \
+		"${D}/usr/libexec/qemu/lib/" || die
+	# No need to duplicate this in the package itself.
+	for prog in "${progs[@]}"; do
+		dosym ../../../bin/"${prog}" /usr/libexec/qemu/bin/"${prog}".elf
+	done
+	# QEMU searches for its bios files relative to itself.  Add a symlink so it
+	# can find the installed bios files under /usr/share/qemu/.
+	dosym ../../share/qemu /usr/libexec/qemu/pc-bios
+	dosym ../../share /usr/libexec/qemu/share
+}
diff --git a/app-i18n/libhangul/Manifest b/app-i18n/libhangul/Manifest
deleted file mode 100644
index ae722f6..0000000
--- a/app-i18n/libhangul/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST libhangul-0.0.10.tar.gz 2828525 RMD160 88c03fbbf954addb8c534491a9e3cfd0fdc373dc SHA1 3fdbb1b4ea2f5f12bd3c6760bb2ad609e2eebbaa SHA256 af0722012632ab2afc2016aa6643bd6979e140facc56a911a5a45f97fe61d4c5
diff --git a/app-i18n/libhangul/libhangul-0.0.10.ebuild b/app-i18n/libhangul/libhangul-0.0.10.ebuild
deleted file mode 100644
index e108de9..0000000
--- a/app-i18n/libhangul/libhangul-0.0.10.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/app-i18n/libhangul/libhangul-0.0.10.ebuild,v
-# 1.1 2009/11/05 23:14:11 matsuu Exp $
-
-DESCRIPTION="libhangul is a generalized and portable library for processing
-hangul."
-HOMEPAGE="http://kldp.net/projects/hangul/"
-SRC_URI="mirror://gentoo/${P}.tar.gz"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-src_install() {
-    emake DESTDIR="${D}" install || die "emake install failed"
-
-    dodoc AUTHORS ChangeLog NEWS README
-}
diff --git a/app-i18n/libhangul/metadata.xml b/app-i18n/libhangul/metadata.xml
deleted file mode 100644
index 7264771..0000000
--- a/app-i18n/libhangul/metadata.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-	<herd>cjk</herd>
-	<upstream>
-		<remote-id type="google-code">libhangul</remote-id>
-	</upstream>
-</pkgmetadata>
diff --git a/app-shells/bash/bash.bashrc b/app-shells/bash/bash.bashrc
index 553955a..1884d6f 100644
--- a/app-shells/bash/bash.bashrc
+++ b/app-shells/bash/bash.bashrc
@@ -3,7 +3,8 @@
 # found in the LICENSE file.
 
 cros_pre_src_prepare_patches() {
-	epatch "${BASHRC_FILESDIR}"/${PN}-4.3-noexec.patch || die
+  # Not using ${P} to refer to patch to avoid updating it on every _p# change.
+	eapply "${BASHRC_FILESDIR}"/${PN}-4.4-noexec.patch || die
 
 	# Disable this logic for SDK builds.
 	if [[ $(cros_target) == "cros_host" ]]; then
diff --git a/app-shells/bash/files/bash-4.3-noexec.patch b/app-shells/bash/files/bash-4.3-noexec.patch
deleted file mode 100644
index bbbf739..0000000
--- a/app-shells/bash/files/bash-4.3-noexec.patch
+++ /dev/null
@@ -1,248 +0,0 @@
-From 77f549b03ecde43e926482092ecad6cd6f3cda7b Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@chromium.org>
-Date: Sat, 12 Dec 2015 15:18:25 -0500
-Subject: [PATCH] do not source/exec scripts on noexec mount points
-
-Today, if you have a script that lives on a noexec mount point, the
-kernel will reject attempts to run it directly:
-  $ printf '#!/bin/sh\necho hi\n' > /dev/shm/test.sh
-  $ chmod a+rx /dev/shm/test.sh
-  $ /dev/shm/test.sh
-  bash: /dev/shm/test.sh: Permission denied
-
-But bash itself has no problem running this file:
-  $ bash /dev/shm/test.sh
-  hi
-Or with letting other scripts run this file:
-  $ bash -c '. /dev/shm/test.sh'
-  hi
-Or with reading the script from stdin:
-  $ bash </dev/shm/test.sh
-  hi
-Or indirect loading:
-  $ ln -s test.sh /dev/shm/.profile
-  $ HOME=/dev/shm bash -l
-  hi
-
-This detracts from the security of the overall system.  People writing
-scripts sometimes want to save/restore state (like variables) and will
-restore the content from a noexec point using the aforementioned source
-command without realizing that it executes code too.  Of course their
-code is wrong, but it would be nice if the system would catch & reject
-it explicitly to stave of inadvertent usage.
-
-This is not a perfect solution as it can still be worked around by
-inlining the code itself:
-  $ bash -c "$(cat /dev/shm/test.sh)"
-  hi
-Or forcing interactive mode:
-  $ bash -i </dev/shm/test.sh
-  hi
-Or piping it:
-  $ cat /dev/shm/test.sh | bash
-  hi
-
-But this makes things a bit harder for malicious attackers (depending
-how exactly they've managed to escalate), and it also helps developers
-avoid getting it wrong in the first place.
-
-There are some compile-time knobs provided:
-* SHELL_IGNORE_NOEXEC: If defined, allow scripts on noexec mounts.
-* SHELL_NOEXEC_CRASH_REPORTS: If defined, generate crash reports when
-  noexec scripts are attempted.
-* SHELL_NOEXEC_REPORT_ONLY: If defined, don't halt script execution,
-  only emit warnings to stderr.
-
-URL: https://crbug.com/569168
-URL: https://chromium.googlesource.com/chromiumos/docs/+/master/security/noexec_shell_scripts.md
----
- builtins/evalfile.c | 24 ++++++++++++++++++++++++
- config.h.in         |  3 +++
- configure           |  2 +-
- configure.ac        |  2 +-
- shell.c             | 31 +++++++++++++++++++++++++++++++
- 5 files changed, 60 insertions(+), 2 deletions(-)
-
-diff --git a/builtins/evalfile.c b/builtins/evalfile.c
-index 4539b637ded4..f7e03d808262 100644
---- a/builtins/evalfile.c
-+++ b/builtins/evalfile.c
-@@ -32,6 +32,10 @@
- #include <signal.h>
- #include <errno.h>
- 
-+#if defined (HAVE_SYS_STATVFS_H)
-+#  include <sys/statvfs.h>
-+#endif
-+
- #include "../bashansi.h"
- #include "../bashintl.h"
- 
-@@ -155,6 +159,9 @@ file_error_and_exit:
-       return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
-     }      
-
-+  if (interactive_shell == 0)
-+    check_noexec (fd, filename);
-+
-   if (S_ISREG (finfo.st_mode) && file_size <= SSIZE_MAX)
-     {
-       string = (char *)xmalloc (1 + file_size);
-diff --git a/config.h.in b/config.h.in
-index 1e4b71d1e7fe..4c7e5c605524 100644
---- a/config.h.in
-+++ b/config.h.in
-@@ -1052,6 +1052,9 @@
- /* Define if you have the <sys/stat.h> header file. */
- #undef HAVE_SYS_STAT_H
- 
-+/* Define if you have <sys/statvfs.h>.  */
-+#undef HAVE_SYS_STATVFS_H
-+
- /* Define if you have the <sys/stream.h> header file.  */
- #undef HAVE_SYS_STREAM_H
- 
-diff --git a/configure b/configure
-index b9c012961cf2..5457d87be2f4 100755
---- a/configure
-+++ b/configure
-@@ -9289,7 +9289,7 @@ fi
- 
- # On IRIX 5.3, sys/types and inttypes.h are conflicting.
- for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
--		  inttypes.h stdint.h unistd.h
-+		  inttypes.h stdint.h unistd.h sys/statvfs.h
- do :
-   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
- ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-diff --git a/configure.ac b/configure.ac
-index 5080265a96b0..351cabbb0c8c 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -711,7 +711,7 @@ AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
- 		 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
- 		 regex.h syslog.h ulimit.h)
- AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h \
--		 sys/resource.h sys/param.h sys/socket.h sys/stat.h \
-+		 sys/resource.h sys/param.h sys/socket.h sys/stat.h sys/statvfs.h \
- 		 sys/time.h sys/times.h sys/types.h sys/wait.h)
- AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
- 
-diff --git a/shell.c b/shell.c
-index 0179e1e4512b..7d313d671b21 100644
---- a/shell.c
-+++ b/shell.c
-@@ -46,6 +46,10 @@
- #  include <unistd.h>
- #endif
- 
-+#if defined (HAVE_SYS_STATVFS_H)
-+#  include <sys/statvfs.h>
-+#endif
-+
- #include "bashintl.h"
- 
- #define NEED_SH_SETLINEBUF_DECL		/* used in externs.h */
-@@ -747,11 +751,14 @@ main (argc, argv, env)
-   else if (interactive == 0)
-     /* In this mode, bash is reading a script from stdin, which is a
-        pipe or redirected file. */
-+    {
-+      check_noexec (0, "stdin");
- #if defined (BUFFERED_INPUT)
-     default_buffered_input = fileno (stdin);	/* == 0 */
- #else
-     setbuf (default_input, (char *)NULL);
- #endif /* !BUFFERED_INPUT */
-+    }
- 
-   set_bash_input ();
- 
-@@ -1483,6 +1490,63 @@ start_debugger ()
- #endif
- }
- 
-+#ifndef SHELL_IGNORE_NOEXEC
-+
-+/*
-+ * We'll fork a child who will then crash.  This will signal to the system
-+ * that we ran into a problem without actually halting the script.  This is
-+ * useful for tracking down users on releases w/out breaking them.
-+ */
-+static void
-+maybe_generate_crash_report (void)
-+{
-+# ifdef SHELL_NOEXEC_CRASH_REPORTS
-+  if (fork () == 0)
-+    abort ();
-+# endif
-+}
-+
-+/*
-+ * See if the fd is coming from a noexec partition.
-+ * If so, fall over and complain.
-+ */
-+void
-+check_noexec (int fd, const char *source)
-+{
-+#if defined (HAVE_SYS_STATVFS_H) && defined (ST_NOEXEC)
-+  /* Make sure the file isn't on a noexec mount point. */
-+  struct statvfs stvfs;
-+
-+  if (fstatvfs (fd, &stvfs) == -1)
-+    {
-+      maybe_generate_crash_report ();
-+
-+      sys_error ("Can't fstatvfs %s", source);
-+# ifdef SHELL_NOEXEC_REPORT_ONLY
-+      /* Clear the flag to avoid the code path below. */
-+      stvfs.f_flag = 0;
-+# else
-+      exit_shell (EX_NOTFOUND);
-+# endif
-+    }
-+
-+  if (stvfs.f_flag & ST_NOEXEC)
-+    {
-+      const char docs[] = "https://chromium.googlesource.com/chromiumos/docs/+/master/security/noexec_shell_scripts.md";
-+      maybe_generate_crash_report ();
-+
-+# ifdef SHELL_NOEXEC_REPORT_ONLY
-+      internal_warning ("%s: warning: script from noexec mount; see %s", source, docs);
-+# else
-+      internal_error ("Refusing to exec %s from noexec mount; see %s", source, docs);
-+      exit_shell (EX_NOEXEC);
-+# endif
-+    }
-+#endif
-+}
-+
-+#endif
-+
- static int
- open_shell_script (script_name)
-      char *script_name;
-@@ -1517,6 +1582,8 @@ open_shell_script (script_name)
-     SET_CLOSE_ON_EXEC (fileno (default_input));
- #endif /* !BUFFERED_INPUT */
- 
-+  check_noexec (fd, filename);
-+
-   /* Just about the only way for this code to be executed is if something
-      like `bash -i /dev/stdin' is executed. */
-   if (interactive_shell && fd_is_tty)
---- a/shell.h
-+++ b/shell.h
-@@ -184,3 +184,9 @@ extern void restore_parser_state __P((sh_parser_state_t *));
- 
- extern sh_input_line_state_t *save_input_line_state __P((sh_input_line_state_t *));
- extern void restore_input_line_state __P((sh_input_line_state_t *));
-+
-+#ifndef SHELL_IGNORE_NOEXEC
-+extern void check_noexec __P((int, const char *));
-+#else
-+static inline void check_noexec (int fd, const char *source) {}
-+#endif
--- 
-2.12.0
-
diff --git a/app-shells/bash/files/bash-4.4-noexec.patch b/app-shells/bash/files/bash-4.4-noexec.patch
new file mode 100644
index 0000000..8ebb99b
--- /dev/null
+++ b/app-shells/bash/files/bash-4.4-noexec.patch
@@ -0,0 +1,244 @@
+From 77f549b03ecde43e926482092ecad6cd6f3cda7b Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@chromium.org>
+Date: Sat, 12 Dec 2015 15:18:25 -0500
+Subject: [PATCH] do not source/exec scripts on noexec mount points
+
+Today, if you have a script that lives on a noexec mount point, the
+kernel will reject attempts to run it directly:
+  $ printf '#!/bin/sh\necho hi\n' > /dev/shm/test.sh
+  $ chmod a+rx /dev/shm/test.sh
+  $ /dev/shm/test.sh
+  bash: /dev/shm/test.sh: Permission denied
+
+But bash itself has no problem running this file:
+  $ bash /dev/shm/test.sh
+  hi
+Or with letting other scripts run this file:
+  $ bash -c '. /dev/shm/test.sh'
+  hi
+Or with reading the script from stdin:
+  $ bash </dev/shm/test.sh
+  hi
+Or indirect loading:
+  $ ln -s test.sh /dev/shm/.profile
+  $ HOME=/dev/shm bash -l
+  hi
+
+This detracts from the security of the overall system.  People writing
+scripts sometimes want to save/restore state (like variables) and will
+restore the content from a noexec point using the aforementioned source
+command without realizing that it executes code too.  Of course their
+code is wrong, but it would be nice if the system would catch & reject
+it explicitly to stave of inadvertent usage.
+
+This is not a perfect solution as it can still be worked around by
+inlining the code itself:
+  $ bash -c "$(cat /dev/shm/test.sh)"
+  hi
+Or forcing interactive mode:
+  $ bash -i </dev/shm/test.sh
+  hi
+Or piping it:
+  $ cat /dev/shm/test.sh | bash
+  hi
+
+But this makes things a bit harder for malicious attackers (depending
+how exactly they've managed to escalate), and it also helps developers
+avoid getting it wrong in the first place.
+
+There are some compile-time knobs provided:
+* SHELL_IGNORE_NOEXEC: If defined, allow scripts on noexec mounts.
+* SHELL_NOEXEC_CRASH_REPORTS: If defined, generate crash reports when
+  noexec scripts are attempted.
+* SHELL_NOEXEC_REPORT_ONLY: If defined, don't halt script execution,
+  only emit warnings to stderr.
+
+URL: https://crbug.com/569168
+URL: https://chromium.googlesource.com/chromiumos/docs/+/master/security/noexec_shell_scripts.md
+---
+ builtins/evalfile.c |  7 +++++
+ config.h.in         |  3 +++
+ configure           |  2 +-
+ configure.ac        |  2 +-
+ shell.c             | 64 +++++++++++++++++++++++++++++++++++++++++++++
+ shell.h             |  6 +++++
+ 6 files changed, 82 insertions(+), 2 deletions(-)
+
+diff --git a/builtins/evalfile.c b/builtins/evalfile.c
+index 316b794..10ed7a6 100644
+--- a/builtins/evalfile.c
++++ b/builtins/evalfile.c
+@@ -32,6 +32,10 @@
+ #include <signal.h>
+ #include <errno.h>
+ 
++#if defined (HAVE_SYS_STATVFS_H)
++#  include <sys/statvfs.h>
++#endif
++
+ #include "../bashansi.h"
+ #include "../bashintl.h"
+ 
+@@ -161,6 +165,9 @@ file_error_and_exit:
+       return ((flags & FEVAL_BUILTIN) ? EXECUTION_FAILURE : -1);
+     }      
+ 
++  if (interactive_shell == 0)
++    check_noexec (fd, filename);
++
+   if (S_ISREG (finfo.st_mode) && file_size <= SSIZE_MAX)
+     {
+       string = (char *)xmalloc (1 + file_size);
+diff --git a/config.h.in b/config.h.in
+index a5ad9e7..84f9ab5 100644
+--- a/config.h.in
++++ b/config.h.in
+@@ -1045,6 +1045,9 @@
+ /* Define if you have the <sys/stat.h> header file. */
+ #undef HAVE_SYS_STAT_H
+ 
++/* Define if you have <sys/statvfs.h>.  */
++#undef HAVE_SYS_STATVFS_H
++
+ /* Define if you have the <sys/stream.h> header file.  */
+ #undef HAVE_SYS_STREAM_H
+ 
+diff --git a/configure b/configure
+index dc57ff9..9a7845e 100755
+--- a/configure
++++ b/configure
+@@ -4599,7 +4599,7 @@ fi
+ 
+ # On IRIX 5.3, sys/types and inttypes.h are conflicting.
+ for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+-		  inttypes.h stdint.h unistd.h
++		  inttypes.h stdint.h unistd.h sys/statvfs.h
+ do :
+   as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+diff --git a/configure.ac b/configure.ac
+index ce4e9b6..3b13cd9 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -702,7 +702,7 @@ AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \
+ 		 stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \
+ 		 regex.h syslog.h ulimit.h)
+ AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
+-		 sys/param.h sys/socket.h sys/stat.h \
++		 sys/param.h sys/socket.h sys/stat.h sys/statvfs.h \
+ 		 sys/time.h sys/times.h sys/types.h sys/wait.h)
+ AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
+ 
+diff --git a/shell.c b/shell.c
+index 45b77f9..6eaf165 100644
+--- a/shell.c
++++ b/shell.c
+@@ -46,6 +46,10 @@
+ #  include <unistd.h>
+ #endif
+ 
++#if defined (HAVE_SYS_STATVFS_H)
++#  include <sys/statvfs.h>
++#endif
++
+ #include "bashintl.h"
+ 
+ #define NEED_SH_SETLINEBUF_DECL		/* used in externs.h */
+@@ -740,6 +744,7 @@ main (argc, argv, env)
+     {
+       /* In this mode, bash is reading a script from stdin, which is a
+ 	 pipe or redirected file. */
++      check_noexec (0, "stdin");
+ #if defined (BUFFERED_INPUT)
+       default_buffered_input = fileno (stdin);	/* == 0 */
+ #else
+@@ -1467,6 +1472,63 @@ start_debugger ()
+ #endif
+ }
+ 
++#ifndef SHELL_IGNORE_NOEXEC
++
++/*
++ * We'll fork a child who will then crash.  This will signal to the system
++ * that we ran into a problem without actually halting the script.  This is
++ * useful for tracking down users on releases w/out breaking them.
++ */
++static void
++maybe_generate_crash_report (void)
++{
++# ifdef SHELL_NOEXEC_CRASH_REPORTS
++  if (fork () == 0)
++    abort ();
++# endif
++}
++
++/*
++ * See if the fd is coming from a noexec partition.
++ * If so, fall over and complain.
++ */
++void
++check_noexec (int fd, const char *source)
++{
++#if defined (HAVE_SYS_STATVFS_H) && defined (ST_NOEXEC)
++  /* Make sure the file isn't on a noexec mount point. */
++  struct statvfs stvfs;
++
++  if (fstatvfs (fd, &stvfs) == -1)
++    {
++      maybe_generate_crash_report ();
++
++      sys_error ("Can't fstatvfs %s", source);
++# ifdef SHELL_NOEXEC_REPORT_ONLY
++      /* Clear the flag to avoid the code path below. */
++      stvfs.f_flag = 0;
++# else
++      exit_shell (EX_NOTFOUND);
++# endif
++    }
++
++  if (stvfs.f_flag & ST_NOEXEC)
++    {
++      const char docs[] = "https://chromium.googlesource.com/chromiumos/docs/+/master/security/noexec_shell_scripts.md";
++      maybe_generate_crash_report ();
++
++# ifdef SHELL_NOEXEC_REPORT_ONLY
++      internal_warning ("%s: warning: script from noexec mount; see %s", source, docs);
++# else
++      internal_error ("Refusing to exec %s from noexec mount; see %s", source, docs);
++      exit_shell (EX_NOEXEC);
++# endif
++    }
++#endif
++}
++
++#endif
++
+ static int
+ open_shell_script (script_name)
+      char *script_name;
+@@ -1604,6 +1666,8 @@ open_shell_script (script_name)
+     SET_CLOSE_ON_EXEC (fileno (default_input));
+ #endif /* !BUFFERED_INPUT */
+ 
++  check_noexec (fd, filename);
++
+   /* Just about the only way for this code to be executed is if something
+      like `bash -i /dev/stdin' is executed. */
+   if (interactive_shell && fd_is_tty)
+diff --git a/shell.h b/shell.h
+index ce08879..e8b8ad0 100644
+--- a/shell.h
++++ b/shell.h
+@@ -193,3 +193,9 @@ extern void restore_parser_state __P((sh_parser_state_t *));
+ 
+ extern sh_input_line_state_t *save_input_line_state __P((sh_input_line_state_t *));
+ extern void restore_input_line_state __P((sh_input_line_state_t *));
++
++#ifndef SHELL_IGNORE_NOEXEC
++extern void check_noexec __P((int, const char *));
++#else
++static inline void check_noexec (int fd, const char *source) {}
++#endif
+-- 
+2.29.2
+
diff --git a/app-text/ghostscript-gpl/Manifest b/app-text/ghostscript-gpl/Manifest
index bdcc670..cb05e44 100644
--- a/app-text/ghostscript-gpl/Manifest
+++ b/app-text/ghostscript-gpl/Manifest
@@ -1,2 +1 @@
-DIST ghostscript-9.53.3.tar.xz 41368160 BLAKE2B 6b5840a420d7527c7155bfb707fe19b3412bdd3a6707f44d058c20f607e6695cfc878cf5df4c4528686c1c1f488b2dbdb81ef5fdf38b950eb15751d2ebafb0a9 SHA512 eb832c27eecd30f15e346408c592d7096fd23ef0a6fa59bd50ca327578915434530a4868e69249c2594def0910c527302e99d54f0877f726a8ca8bea6f0f17b7
-DIST ghostscript-gpl-9.53-patchset-01.tar.xz 2340 BLAKE2B 55d82c88f1b57c084318839e1382ffa112461d074411b1f6586a5a9ace37772b144abdda9f742defd077ce937df590d63bd7a2306bad52438949d1036bb7900c SHA512 ab58485df9152bb32c6f0eb25bd45689089bd17ffb0323c54e1977c5f810ec5eb09f358637251c428591749bfb42c6f8489c74d4bd0a7ae5d696eb2346503c44
+DIST ghostscript-9.54.0.tar.xz 56001768 BLAKE2B 4a98b1af74c4b4caf8d263cd5529059304a76884418c90401b0fc9a89e0f5de5417a439f6e08b95374e62158eec65528ef5f949497d5050a6408fb7c87e54aa9 SHA512 a3c96925f4dbf5e276fc543b88df185a0435c68166db15ac532094329ba8db314d739a292da18be7954daaafeeb290e641ea03edf888854d7e752998ec6062cc
diff --git a/app-text/ghostscript-gpl/files/ghostscript-9.20-Fix-error-when-using-ImageMagick-s-convert.patch b/app-text/ghostscript-gpl/files/ghostscript-9.20-Fix-error-when-using-ImageMagick-s-convert.patch
index 83933a9..d435933 100644
--- a/app-text/ghostscript-gpl/files/ghostscript-9.20-Fix-error-when-using-ImageMagick-s-convert.patch
+++ b/app-text/ghostscript-gpl/files/ghostscript-9.20-Fix-error-when-using-ImageMagick-s-convert.patch
@@ -1,7 +1,7 @@
-From 6e7c8d30f74088ba3ba96f539bcee624fdf8b438 Mon Sep 17 00:00:00 2001
+From e374e21f52d049b2f56c8cd29dcfe1b3de0975bf Mon Sep 17 00:00:00 2001
 From: "David Kaspar [Dee'Kej]" <dkaspar@redhat.com>
 Date: Fri, 7 Oct 2016 12:20:29 +0200
-Subject: [PATCH 1/4] Fix error when using ImageMagick's convert:
+Subject: [PATCH 1/6] Fix error when using ImageMagick's convert:
 
   Error: /undefined in .runlibfileexists
 ---
@@ -10,7 +10,7 @@
  2 files changed, 21 insertions(+), 3 deletions(-)
 
 diff --git a/Resource/Init/gs_fonts.ps b/Resource/Init/gs_fonts.ps
-index 8e361552b..686563274 100644
+index f1e26b093..46fff5576 100644
 --- a/Resource/Init/gs_fonts.ps
 +++ b/Resource/Init/gs_fonts.ps
 @@ -139,10 +139,19 @@ userdict /.nativeFontmap .FontDirectory maxlength dict put
@@ -37,10 +37,10 @@
                  % This is a real entry.
                  % Read and pop tokens until a semicolon.
 diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
-index 722b57c1e..333b3cd1c 100644
+index 088c8583e..9b6ffffe3 100644
 --- a/Resource/Init/gs_init.ps
 +++ b/Resource/Init/gs_init.ps
-@@ -858,6 +858,14 @@ currentdict /.makeinternaldict .undef
+@@ -870,6 +870,14 @@ currentdict /.makeinternaldict .undef
             { /undefinedfilename signalerror }
            ifelse
          } bind def
@@ -55,7 +55,7 @@
  /selectdevice
          { finddevice setdevice .setdefaultscreen } bind def
  /signalerror		% <object> <errorname> signalerror -
-@@ -986,6 +994,7 @@ def
+@@ -998,6 +1006,7 @@ def
          } bind def
  % Temporarily substitute it for the real runlibfile.
  /.runlibfile /runlibfile load def
@@ -64,5 +64,5 @@
  currentdict /runlibfile0 .undef
  
 -- 
-2.25.0.341.g760bfbb309-goog
+2.31.0.208.g409f899ff0-goog
 
diff --git a/app-text/ghostscript-gpl/files/ghostscript-9.20-Make-sure-customizations-to-etc-ghostscript-Fontmap.patch b/app-text/ghostscript-gpl/files/ghostscript-9.20-Make-sure-customizations-to-etc-ghostscript-Fontmap.patch
index d24d256..9da1b66 100644
--- a/app-text/ghostscript-gpl/files/ghostscript-9.20-Make-sure-customizations-to-etc-ghostscript-Fontmap.patch
+++ b/app-text/ghostscript-gpl/files/ghostscript-9.20-Make-sure-customizations-to-etc-ghostscript-Fontmap.patch
@@ -1,7 +1,7 @@
-From a2c13ee2160d9214399264443d09f4c1ca63128c Mon Sep 17 00:00:00 2001
+From 5a0dfe5f42f6c7b6fc07e2aca9dce2bad61e624e Mon Sep 17 00:00:00 2001
 From: "David Kaspar [Dee'Kej]" <dkaspar@redhat.com>
 Date: Fri, 7 Oct 2016 12:57:06 +0200
-Subject: [PATCH 2/4] Make sure customizations to
+Subject: [PATCH 2/6] Make sure customizations to
  /etc/ghostscript/Fontmap.local are used
 
   For more info, see: https://bugzilla.redhat.com/show_bug.cgi?id=610301
@@ -20,5 +20,5 @@
 +% must be at the bottom of line to allow people overriding everything.
 +(Fontmap.local) .runlibfileifexists
 -- 
-2.25.0.341.g760bfbb309-goog
+2.31.0.208.g409f899ff0-goog
 
diff --git a/app-text/ghostscript-gpl/files/ghostscript-9.52-pacify-valgrind-gxclipm.patch b/app-text/ghostscript-gpl/files/ghostscript-9.52-pacify-valgrind-gxclipm.patch
index 9041c23..2a96cf8 100644
--- a/app-text/ghostscript-gpl/files/ghostscript-9.52-pacify-valgrind-gxclipm.patch
+++ b/app-text/ghostscript-gpl/files/ghostscript-9.52-pacify-valgrind-gxclipm.patch
@@ -1,14 +1,14 @@
-From ab3050411139bfad554dc623e2af698a6b6f2c9a Mon Sep 17 00:00:00 2001
+From 6480cd111eed9cc420c00072bb155975f2dc60b6 Mon Sep 17 00:00:00 2001
 From: Kalvin Lee <kdlee@chromium.org>
 Date: Thu, 8 Oct 2020 13:59:37 -0700
-Subject: [PATCH] activate PACIFY_VALGRIND
+Subject: [PATCH 3/6] activate PACIFY_VALGRIND
 
 ---
  base/gxclipm.c | 4 ----
  1 file changed, 4 deletions(-)
 
 diff --git a/base/gxclipm.c b/base/gxclipm.c
-index 0a98eb0..2bc83c5 100644
+index 59f1e765f..b19a9c62d 100644
 --- a/base/gxclipm.c
 +++ b/base/gxclipm.c
 @@ -261,16 +261,12 @@ mask_clip_copy_mono(gx_device * dev,
@@ -29,5 +29,5 @@
  /*
   * Define the run enumerator for the other copying operations.  We can't use
 -- 
-2.28.0.1011.ga647a8990f-goog
+2.31.0.208.g409f899ff0-goog
 
diff --git a/app-text/ghostscript-gpl/files/ghostscript-9.52-prune-contrib-directory.patch b/app-text/ghostscript-gpl/files/ghostscript-9.52-prune-contrib-directory.patch
deleted file mode 100644
index d413a39..0000000
--- a/app-text/ghostscript-gpl/files/ghostscript-9.52-prune-contrib-directory.patch
+++ /dev/null
@@ -1,584 +0,0 @@
-From 58547b6654f708c191c08df90418f711f137a2b5 Mon Sep 17 00:00:00 2001
-From: Piotr Pawliczek <pawliczek@chromium.org>
-Date: Tue, 9 Oct 2018 16:05:45 -0700
-Subject: [PATCH] Remove from contrib directory all drivers with undefined,
- unclear or forbidden licenses. Configuration files were adjusted accordingly.
-
----
- configure.ac                             |    8 +-
- contrib/contrib.mak                      |  361 +-
- contrib/epson740/README                  |   25 -
- contrib/epson740/printerdb_rh5.2         | 1173 ------
- contrib/epson740/printerdb_rh6.0         | 1166 ------
- contrib/epson740/ps-to-printer.fpi_rh5.2 |   95 -
- contrib/epson740/upp-HowTo-to-be         |   59 -
- contrib/gdevgdi.c                        | 1473 --------
- contrib/gdevln03.c                       |  395 ---
- contrib/gdevlx7.c                        |  844 -----
- contrib/gdevmd2k.c                       |  792 -----
- contrib/gdevop4w.c                       |  283 --
- contrib/gdevxes.c                        |  219 --
- contrib/japanese/doc/Gdevlips.htm        | 1901 ----------
- contrib/japanese/doc/README.gs550j       |   35 -
- contrib/japanese/doc/cdj880.txt          |  120 -
- contrib/japanese/doc/dj505j.txt          |   62 -
- contrib/japanese/doc/gdev10v.txt         |   52 -
- contrib/japanese/doc/gdevalps.txt        |   50 -
- contrib/japanese/doc/gdevcd8.txt         |  146 -
- contrib/japanese/doc/gdevfmlbp.txt       |   81 -
- contrib/japanese/doc/gdevj100.txt        |   28 -
- contrib/japanese/doc/gdevlbp3.txt        |   37 -
- contrib/japanese/doc/gdevmd2k.txt        |  179 -
- contrib/japanese/doc/gdevmjc.txt         |   58 -
- contrib/japanese/doc/gdevml6.txt         |   47 -
- contrib/japanese/doc/gdevp201.txt        |   30 -
- contrib/japanese/dviprlib.h              |  357 --
- contrib/japanese/gdev10v.c               |  347 --
- contrib/japanese/gdevalps.c              |  401 ---
- contrib/japanese/gdevespg.c              |  303 --
- contrib/japanese/gdevfmlbp.c             |  229 --
- contrib/japanese/gdevfmpr.c              |  210 --
- contrib/japanese/gdevj100.c              |  198 --
- contrib/japanese/gdevlbp3.c              |  277 --
- contrib/japanese/gdevmjc.c               | 1840 ----------
- contrib/japanese/gdevmjc.h               | 3220 -----------------
- contrib/japanese/gdevml6.c               |  342 --
- contrib/japanese/gdevnpdl.c              |  710 ----
- contrib/japanese/gdevp201.c              |  291 --
- contrib/japanese/gdevrpdl.c              |  295 --
- contrib/md2k_md5k/README.jis             |  179 -
- contrib/pscolor/Makefile                 |   12 -
- contrib/pscolor/black.pdf                |  Bin 12804 -> 0 bytes
- contrib/pscolor/black.ps                 | 3642 -------------------
- contrib/pscolor/color.pdf                |  Bin 10518 -> 0 bytes
- contrib/pscolor/color.ps                 | 3368 ------------------
- contrib/pscolor/colorsplit.vcproj        |   73 -
- contrib/pscolor/common.mak               |   24 -
- contrib/pscolor/input.ps                 | 4141 ----------------------
- contrib/pscolor/instream.yy              |   23 -
- contrib/pscolor/test.c                   |  342 --
- contrib/pscolor/windows.mak              |   13 -
- contrib/uniprint/PM760p.upp              |   34 -
- contrib/uniprint/PM760pl.upp             |   34 -
- contrib/uniprint/PM820p.upp              |   34 -
- contrib/uniprint/PM820pl.upp             |   34 -
- contrib/uniprint/Stc670p.upp             |   35 -
- contrib/uniprint/Stc670pl.upp            |   35 -
- contrib/uniprint/Stc680p.upp             |   34 -
- contrib/uniprint/Stc680pl.upp            |   34 -
- contrib/uniprint/Stc740p.upp             |   34 -
- contrib/uniprint/Stc740pl.upp            |   35 -
- contrib/uniprint/Stc760p.upp             |   35 -
- contrib/uniprint/Stc760pl.upp            |   34 -
- contrib/uniprint/Stc777p.upp             |   34 -
- contrib/uniprint/Stc777pl.upp            |   34 -
- contrib/uniprint/Stp720p.upp             |   34 -
- contrib/uniprint/Stp720pl.upp            |   34 -
- contrib/uniprint/Stp870p.upp             |   34 -
- contrib/uniprint/Stp870pl.upp            |   34 -
- contrib/uniprint/bjc6000a1.upp           |   48 -
- contrib/uniprint/bjc6000b1.upp           |   48 -
- contrib/uniprint/s400a1.upp              |   44 -
- contrib/uniprint/s400b1.upp              |   48 -
- contrib/uniprint/sharp.upp               |   58 -
- contrib/uniprint/sipixa6.upp             |   23 -
- contrib/uniprint/stc740ih.upp            |   58 -
- 78 files changed, 5 insertions(+), 31494 deletions(-)
- delete mode 100644 contrib/epson740/README
- delete mode 100644 contrib/epson740/printerdb_rh5.2
- delete mode 100644 contrib/epson740/printerdb_rh6.0
- delete mode 100755 contrib/epson740/ps-to-printer.fpi_rh5.2
- delete mode 100644 contrib/epson740/upp-HowTo-to-be
- delete mode 100644 contrib/gdevgdi.c
- delete mode 100644 contrib/gdevln03.c
- delete mode 100644 contrib/gdevlx7.c
- delete mode 100644 contrib/gdevmd2k.c
- delete mode 100644 contrib/gdevop4w.c
- delete mode 100644 contrib/gdevxes.c
- delete mode 100644 contrib/japanese/doc/Gdevlips.htm
- delete mode 100644 contrib/japanese/doc/README.gs550j
- delete mode 100644 contrib/japanese/doc/cdj880.txt
- delete mode 100644 contrib/japanese/doc/dj505j.txt
- delete mode 100644 contrib/japanese/doc/gdev10v.txt
- delete mode 100644 contrib/japanese/doc/gdevalps.txt
- delete mode 100644 contrib/japanese/doc/gdevcd8.txt
- delete mode 100644 contrib/japanese/doc/gdevfmlbp.txt
- delete mode 100644 contrib/japanese/doc/gdevj100.txt
- delete mode 100644 contrib/japanese/doc/gdevlbp3.txt
- delete mode 100644 contrib/japanese/doc/gdevmd2k.txt
- delete mode 100644 contrib/japanese/doc/gdevmjc.txt
- delete mode 100644 contrib/japanese/doc/gdevml6.txt
- delete mode 100644 contrib/japanese/doc/gdevp201.txt
- delete mode 100644 contrib/japanese/dviprlib.h
- delete mode 100644 contrib/japanese/gdev10v.c
- delete mode 100644 contrib/japanese/gdevalps.c
- delete mode 100644 contrib/japanese/gdevespg.c
- delete mode 100644 contrib/japanese/gdevfmlbp.c
- delete mode 100644 contrib/japanese/gdevfmpr.c
- delete mode 100644 contrib/japanese/gdevj100.c
- delete mode 100644 contrib/japanese/gdevlbp3.c
- delete mode 100644 contrib/japanese/gdevmjc.c
- delete mode 100644 contrib/japanese/gdevmjc.h
- delete mode 100644 contrib/japanese/gdevml6.c
- delete mode 100644 contrib/japanese/gdevnpdl.c
- delete mode 100644 contrib/japanese/gdevp201.c
- delete mode 100644 contrib/japanese/gdevrpdl.c
- delete mode 100644 contrib/md2k_md5k/README.jis
- delete mode 100644 contrib/pscolor/Makefile
- delete mode 100644 contrib/pscolor/black.pdf
- delete mode 100644 contrib/pscolor/black.ps
- delete mode 100644 contrib/pscolor/color.pdf
- delete mode 100644 contrib/pscolor/color.ps
- delete mode 100644 contrib/pscolor/colorsplit.vcproj
- delete mode 100644 contrib/pscolor/common.mak
- delete mode 100644 contrib/pscolor/input.ps
- delete mode 100644 contrib/pscolor/instream.yy
- delete mode 100644 contrib/pscolor/test.c
- delete mode 100644 contrib/pscolor/windows.mak
- delete mode 100644 contrib/uniprint/PM760p.upp
- delete mode 100644 contrib/uniprint/PM760pl.upp
- delete mode 100644 contrib/uniprint/PM820p.upp
- delete mode 100644 contrib/uniprint/PM820pl.upp
- delete mode 100644 contrib/uniprint/Stc670p.upp
- delete mode 100644 contrib/uniprint/Stc670pl.upp
- delete mode 100644 contrib/uniprint/Stc680p.upp
- delete mode 100644 contrib/uniprint/Stc680pl.upp
- delete mode 100644 contrib/uniprint/Stc740p.upp
- delete mode 100644 contrib/uniprint/Stc740pl.upp
- delete mode 100644 contrib/uniprint/Stc760p.upp
- delete mode 100644 contrib/uniprint/Stc760pl.upp
- delete mode 100644 contrib/uniprint/Stc777p.upp
- delete mode 100644 contrib/uniprint/Stc777pl.upp
- delete mode 100644 contrib/uniprint/Stp720p.upp
- delete mode 100644 contrib/uniprint/Stp720pl.upp
- delete mode 100644 contrib/uniprint/Stp870p.upp
- delete mode 100644 contrib/uniprint/Stp870pl.upp
- delete mode 100644 contrib/uniprint/bjc6000a1.upp
- delete mode 100644 contrib/uniprint/bjc6000b1.upp
- delete mode 100644 contrib/uniprint/s400a1.upp
- delete mode 100644 contrib/uniprint/s400b1.upp
- delete mode 100644 contrib/uniprint/sharp.upp
- delete mode 100644 contrib/uniprint/sipixa6.upp
- delete mode 100644 contrib/uniprint/stc740ih.upp
-
-diff --git a/configure.ac b/configure.ac
-index d6f346b76..83b39312a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -2619,13 +2619,13 @@ HP_DEVS='cdj500 djet500 djet500c dnj650c cljet5pr deskjet laserjet ljetplus ljet
- PCLXL_DEVS='pxlmono pxlcolor'
- EPSON_DEVS='eps9high eps9mid epson epsonc escp lp8000 lq850 photoex st800 stcolor alc1900 alc2000 alc4000 alc4100 alc8500 alc8600 alc9100 lp3000c lp8000c lp8200c lp8300c lp8500c lp8800c lp9000c lp9200c lp9500c lp9800c lps6500 epl2050 epl2050p epl2120 epl2500 epl2750 epl5800 epl5900 epl6100 epl6200 lp1800 lp1900 lp2200 lp2400 lp2500 lp7500 lp7700 lp7900 lp8100 lp8300f lp8400f lp8600 lp8600f lp8700 lp8900 lp9000b lp9100 lp9200b lp9300 lp9400 lp9600 lp9600s lps4500 eplcolor eplmono'
- CANON_DEVS='bj10e bj200 bjc600 bjc800 lbp8 lips3 bjcmono bjcgray bjccmyk bjccolor'
--LEXMARK_DEVS='lxm5700m lxm3200 lex2050 lex3200 lex5700 lex7000'
-+LEXMARK_DEVS='lxm5700m lxm3200'
- BROTHER_DEVS='hl7x0 hl1240 hl1250'
- APPLE_DEVS='appledmp iwhi iwlo iwlq'
- IBM_DEVS='ibmpro jetp3852'
--OKI_DEVS='oki182 okiibm oki4w'
--JAPAN_DEVS='lips4 lips4v ljet4pjl lj4dithp dj505j picty180 lips2p bjc880j pr201 pr150 pr1000 pr1000_4 jj100 bj10v bj10vh mj700v2c mj500c mj6000c mj8000c fmpr fmlbp ml600 lbp310 lbp320 md50Mono md50Eco md1xMono escpage lp2000 npdl rpdl'
--MISC_PDEVS='uniprint ap3250 atx23 atx24 atx38 itk24i itk38 coslw2p coslwxl declj250 fs600 imagen lj250 m8510 necp6 oce9050 r4081 sj48 tek4696 t4693d2 t4693d4 t4693d8 dl2100 la50 la70 la75 la75plus ln03 xes md2k md5k gdi samsunggdi'
-+OKI_DEVS='oki182 okiibm'
-+JAPAN_DEVS='lips4 lips4v ljet4pjl lj4dithp dj505j picty180 lips2p bjc880j'
-+MISC_PDEVS='uniprint ap3250 atx23 atx24 atx38 itk24i itk38 coslw2p coslwxl declj250 fs600 imagen lj250 m8510 necp6 oce9050 r4081 sj48 tek4696 t4693d2 t4693d4 t4693d8'
- 
- AC_ARG_WITH([openprinting],, OPVP_DEVS='opvp oprp', OPVP_DEVS='')
- 
-diff --git a/contrib/contrib.mak b/contrib/contrib.mak
-index 2edee7af4..a81d1a350 100644
---- a/contrib/contrib.mak
-+++ b/contrib/contrib.mak
-@@ -284,25 +284,6 @@ $(DD)chp2200.dev : $(cdeskjet8_) $(DD)page.dev \
- 	$(SETPDEV2) $(DD)chp2200 $(cdeskjet8_)
- 
- 
--### ---------------- The Samsung SmartGDI laser printer devices --------- ###
--### Note : this driver is used by Samsung SmartGDI compatible printers.   ###
--###
--
--GDIMONO=$(DEVOBJ)gdevgdi.$(OBJ) $(HPPCL)
--
--$(DD)gdi.dev : $(GDIMONO) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)gdi $(GDIMONO)
--
--$(DD)samsunggdi.dev : $(GDIMONO) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)samsunggdi $(GDIMONO)
--
--$(DEVOBJ)gdevgdi.$(OBJ) : $(CONTRIBSRC)gdevgdi.c $(PDEVH) $(gdevpcl_h) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(DEVO_)gdevgdi.$(OBJ) $(C_) $(CONTRIBSRC)gdevgdi.c
--
--
- ### ---------------- The Brother HL-1240/HL-1250 printers --------------- ###
- ### These printers are ljet4-compatible, plus support for source tray     ###
- ### selection and special 1200x600 dpi mode.                              ###
-@@ -323,51 +304,6 @@ $(DEVOBJ)gdevhl12.$(OBJ) : $(CONTRIBSRC)gdevhl12.c $(PDEVH) $(gdevdljm_h) \
- 	$(DEVCC) $(DEVO_)gdevhl12.$(OBJ) $(C_) $(CONTRIBSRC)gdevhl12.c
- 
- 
--### -------- The DEC LN03/DL2100/LA50/LA70/LA75 printer devices -------- ###
--
--ln03_=$(DEVOBJ)gdevln03.$(OBJ)
--
--# Author: Ulrich Mueller (ulm@vsnhd1.cern.ch)
--# Printer: DEC LN03
--$(DD)ln03.dev : $(ln03_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)ln03 $(ln03_)
--
--# Author: Nick Brown (nick.brown@coe.int)
--# Printer: DEClaser 2100
--$(DD)dl2100.dev : $(ln03_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)dl2100 $(ln03_)
--
--# Author: Ian MacPhedran (macphed@dvinci.USask.CA)
--# Printer: DEC LA50
--$(DD)la50.dev : $(ln03_) $(DD)page.dev \
--                          $(CONTDEV)  $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)la50 $(ln03_)
--
--# Author: Bruce Lowekamp (lowekamp@csugrad.cs.vt.edu)
--# Printer: DEC LA70
--$(DD)la70.dev : $(ln03_) $(DD)page.dev \
--                         $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)la70 $(ln03_)
--
--# Author: Ian MacPhedran (macphed@dvinci.USask.CA)
--# Printer: DEC LA75
--$(DD)la75.dev : $(ln03_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)la75 $(ln03_)
--
--# Author: Andre' Beck (Andre_Beck@IRS.Inf.TU-Dresden.de)
--# Printer: DEC LA75plus
--$(DD)la75plus.dev : $(ln03_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)la75plus $(ln03_)
--
--$(DEVOBJ)gdevln03.$(OBJ) : $(CONTRIBSRC)gdevln03.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(DEVO_)gdevln03.$(OBJ) $(C_) $(CONTRIBSRC)gdevln03.c
--
--
- ### -------------------------- EPSON Page/Color -------------------------- ###
- ###
- ###
-@@ -590,33 +526,6 @@ $(DD)eplmono.dev: $(escv_) $(DD)page.dev \
-                            $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
- 	$(SETPDEV) $(DD)eplmono $(escv_)
- 
--# ------ The Lexmark 5700 and 7000 devices ------ #
--
--lex7000_=$(DEVOBJ)gdevlx7.$(OBJ)
--$(DD)lex7000.dev : $(lex7000_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)lex7000 $(lex7000_)
--
--lex5700_=$(DEVOBJ)gdevlx7.$(OBJ)
--$(DD)lex5700.dev : $(lex5700_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)lex5700 $(lex5700_)
--
--lex3200_=$(DEVOBJ)gdevlx7.$(OBJ)
--$(DD)lex3200.dev : $(lex3200_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)lex3200 $(lex3200_)
--
--lex2050_=$(DEVOBJ)gdevlx7.$(OBJ)
--$(DD)lex2050.dev : $(lex2050_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)lex2050 $(lex2050_)
--
--$(DEVOBJ)gdevlx7.$(OBJ) : $(CONTRIBSRC)gdevlx7.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(DEVO_)gdevlx7.$(OBJ) $(C_) $(CONTRIBSRC)gdevlx7.c
--
--
- ### ----------- Lexmark 3200 device ------------ ###
- 
- lxm3200_=$(DEVOBJ)gdevlx32.$(OBJ)
-@@ -679,37 +588,6 @@ $(DD)bjc880j.dev : $(lipsr_) $(DD)page.dev \
- 	$(SETPDEV) $(DD)bjc880j $(lipsr_)
- 
- 
--### ------------ ALPS MD series printer devices ------------ ###
--
--md2k_=$(DEVOBJ)gdevmd2k.$(OBJ)
--
--$(DD)md2k.dev : $(md2k_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)md2k $(md2k_)
--
--$(DD)md5k.dev : $(md2k_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)md5k $(md2k_)
--
--$(DEVOBJ)gdevmd2k.$(OBJ) : $(CONTRIBSRC)gdevmd2k.c $(PDEVH) $(gsparam_h) \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(DEVO_)gdevmd2k.$(OBJ) $(C_) $(CONTRIBSRC)gdevmd2k.c
-- 
--
--### ----------------- The Okidata OkiPage 4w+ device ------------------- ###
--
--oki4w_=$(DEVOBJ)gdevop4w.$(OBJ)
--$(DD)oki4w.dev : $(oki4w_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)oki4w $(oki4w_)
--
--# Author: Ivan Schreter (ivan@shadow.sk)
--# Printer: Okidata OkiPage 4w+
--$(DEVOBJ)gdevop4w.$(OBJ) : $(CONTRIBSRC)gdevop4w.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(DEVO_)gdevop4w.$(OBJ) $(C_) $(CONTRIBSRC)gdevop4w.c
--
--
- ### ---------------- OpenPrinting Vector Printer Driver ---------------- ###
- ###                                                                      ###
- OPVP_DIR=$(CONTRIBSRC)opvp
-@@ -1008,243 +886,6 @@ pcl3-install:
- 	$(INSTALL_PROGRAM) $(BINDIR)$(D)pcl3opts$(XE) $(DESTDIR)$(bindir)
- 
- 
--### ----------------- The Xerox XES printer device --------------------- ###
--
--xes_=$(DEVOBJ)gdevxes.$(OBJ)
--$(DD)xes.dev : $(xes_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)xes $(xes_)
--
--# Author: Peter Flass (flass@lbdrscs.bitnet)
--# Printer: Xerox XES (2700, 3700, 4045, etc.)
--$(DEVOBJ)gdevxes.$(OBJ) : $(CONTRIBSRC)gdevxes.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(DEVO_)gdevxes.$(OBJ) $(C_) $(CONTRIBSRC)gdevxes.c
--
--#########################################################################
--### --------------------Japanese printer addons --------------------- ###
--#########################################################################
--
--JAPDIR=$(CONTRIBSRC)japanese
--JAPSRC=$(JAPDIR)$(D)
--
--### ----------------- The NEC PC-PR201 printer device ----------------- ###
--
--pr201_=$(DEVOBJ)gdevp201.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
--
--$(DD)pr201.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)pr201 $(pr201_)
--
--$(DD)pr150.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)pr150 $(pr201_)
--
--$(DD)pr1000.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)pr1000 $(pr201_)
--
--$(DD)pr1000_4.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)pr1000_4 $(pr201_)
--
--$(DEVOBJ)gdevp201.$(OBJ) : $(JAPSRC)gdevp201.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(DEVO_)gdevp201.$(OBJ) $(C_) $(JAPSRC)gdevp201.c
--
--### ----------------- The Star JJ-100 printer device ----------------- ###
--
--jj100_=$(DEVOBJ)gdevj100.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
--
--$(DD)jj100.dev : $(jj100_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)jj100 $(jj100_)
--
--$(DEVOBJ)gdevj100.$(OBJ) : $(JAPSRC)gdevj100.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)gdevj100.c
--
--### ----------------- The Canon BubbleJet BJ10v device ----------------- ###
--
--bj10v_=$(DEVOBJ)gdev10v.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
--
--$(DD)bj10v.dev : $(bj10v_) \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)bj10v $(bj10v_)
--
--$(DD)bj10vh.dev : $(bj10v_) \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)bj10vh $(bj10v_)
--
--# Uncomment the following line if you are using MS-DOS on PC9801 series.
--
--$(DEVOBJ)gdev10v.$(OBJ) : $(JAPSRC)gdev10v.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)gdev10v.c
--#	$(DEVCC) -DPC9801 $(O_)$@ $(C_) $(JAPSRC)gdev10v.c
--
--
--##
--## EPSON MachJet driver 
--##
--
--mj700v2c_=$(DEVOBJ)gdevmjc.$(OBJ) $(HPPCL)
--
--$(DEVOBJ)gdevmjc.$(OBJ) : $(JAPSRC)gdevmjc.c $(JAPSRC)gdevmjc.h $(PDEVH) $(gdevpcl_h) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) -DA4 $(DEVO_)gdevmjc.$(OBJ) $(C_) $(JAPSRC)gdevmjc.c
--
--$(DD)mj700v2c.dev : $(mj700v2c_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)mj700v2c $(mj700v2c_)
--
--$(DD)mj500c.dev : $(mj700v2c_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)mj500c $(mj700v2c_)
--
--$(DD)mj6000c.dev : $(mj700v2c_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)mj6000c $(mj700v2c_)
--
--$(DD)mj8000c.dev : $(mj700v2c_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)mj8000c $(mj700v2c_)
--
--### ----------------- The Fujitsu FMPR printer device ----------------- ###
--
--fmpr_=$(DEVOBJ)gdevfmpr.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
--
--$(DD)fmpr.dev : $(fmpr_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)fmpr $(fmpr_)
--
--$(DEVOBJ)gdevfmpr.$(OBJ) : $(JAPSRC)gdevfmpr.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(DEVO_)gdevfmpr.$(OBJ) $(C_) $(JAPSRC)gdevfmpr.c
--
--### --------------- The Fujitsu FMLBP-2xx printer device --------------- ###
--
--fmlbp_=$(DEVOBJ)gdevfmlbp.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
--
--$(DD)fmlbp.dev : $(fmlbp_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)fmlbp $(fmlbp_)
--
--$(DEVOBJ)gdevfmlbp.$(OBJ) : $(JAPSRC)gdevfmlbp.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) -DFMLBP_NOADJUST_MARGIN $(O_)$@ $(C_) $(JAPSRC)gdevfmlbp.c
--
--### ------ The OKI MICROLINE620CL (IPL) printer device ------- ###
--#
--#  by N.Tagawa
--#
--#  $Id: gdevml6.mak,v 1.2 1998/03/16 13:32:33 tagawa Exp $
--#
--
--ml6_=$(DEVOBJ)gdevml6.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
--
--$(DD)ml600.dev : $(ml6_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)ml600 $(ml6_)
--
--$(DEVOBJ)gdevml6.$(OBJ) : $(JAPSRC)gdevml6.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)gdevml6.c
--
--
--#----------------------------------------------------------------------#
--
--lbp3x0_=$(DEVOBJ)gdevlbp3.$(OBJ)
--
--$(DD)lbp310.dev :$(lbp3x0_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)lbp310 $(lbp3x0_)
--
--$(DD)lbp320.dev :$(lbp3x0_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)lbp320 $(lbp3x0_)
--
--$(DEVOBJ)gdevlbp3.$(OBJ) : $(JAPSRC)gdevlbp3.c $(PDEVH)
--	$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)gdevlbp3.c
--
--### --- The NEC NPDL language printer device ------ ###
--
--npdl_=$(DEVOBJ)gdevnpdl.$(OBJ) $(DEVOBJ)gdevlprn.$(OBJ)
--
--$(DEVOBJ)gdevnpdl.$(OBJ) : $(JAPSRC)gdevnpdl.c $(LIPS_SRC)gdevlprn.h $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) -DA4 $(DEVO_)gdevnpdl.$(OBJ) $(LIPS_OPT) $(C_) $(JAPSRC)gdevnpdl.c
--
--$(DD)npdl.dev : $(npdl_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)npdl $(npdl_)
--
--### ------- EPSON ESC/Page printer device ----------------- ###
--
--escpage_=$(DEVOBJ)gdevespg.$(OBJ) $(DEVOBJ)gdevlprn.$(OBJ) $(DEVOBJ)gdevlips.$(OBJ)
--
--$(DEVOBJ)gdevespg.$(OBJ) : $(JAPSRC)gdevespg.c $(LIPS_SRC)gdevlprn.h $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) -DA4 $(DEVO_)gdevespg.$(OBJ) $(LIPS_OPT) $(C_) $(JAPSRC)gdevespg.c
--
--$(DD)escpage.dev : $(escpage_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)escpage $(escpage_)
--
--$(DD)lp2000.dev : $(escpage_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)lp2000 $(escpage_)
--
--### --- The RICOH RPDL language printer device ------ ###
--
--rpdl_=$(DEVOBJ)gdevrpdl.$(OBJ) $(DEVOBJ)gdevlprn.$(OBJ)
--$(DEVOBJ)gdevrpdl.$(OBJ) : $(JAPSRC)gdevrpdl.c $(LIPS_SRC)gdevlprn.h $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(DEVO_)gdevrpdl.$(OBJ) $(LIPS_OPT) $(C_) $(JAPSRC)gdevrpdl.c
--
--$(DD)rpdl.dev : $(rpdl_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)rpdl $(rpdl_)
--
--### ---------- RICOH RPDL IV(600dpi) printer devices ---------- ###
--#rpdl_=$(DEVOBJ)gdevrpdl.$(OBJ)
--#$(DEVOBJ)gdevrpdl.$(OBJ) : $(JAPSRC)gdevrpdl.c \
--#                           $(CONTRIB_MAK) $(MAKEDIRS)
--#	$(DEVCC) $(DEVO_)gdevrpdl.$(OBJ) $(C_) $(JAPSRC)gdevrpdl.c
--#
--#$(DD)nx100f.dev : $(rpdl_) $(DD)page.dev \
--#                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--#	$(SETPDEV2) $(DD)nx100f $(rpdl_)
--#
--#$(DD)nx100v.dev : $(rpdl_) $(DD)page.dev \
--#                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--#	$(SETPDEV2) $(DD)nx100v $(rpdl_)
--
--### ------------ The ALPS Micro Dry printer devices ------------ ###
--
--alps_=$(DEVOBJ)gdevalps.$(OBJ)
--
--$(DD)md50Mono.dev : $(alps_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)md50Mono $(alps_)
--
--$(DD)md50Eco.dev : $(alps_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)md50Eco $(alps_)
--
--$(DD)md1xMono.dev : $(alps_) $(DD)page.dev \
--                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
--	$(SETPDEV) $(DD)md1xMono $(alps_)
--
--$(DEVOBJ)gdevalps.$(OBJ) : $(JAPSRC)gdevalps.c $(PDEVH) \
--                           $(CONTRIB_MAK) $(MAKEDIRS)
--	$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)gdevalps.c
--
--#########################################################################
--#########################################################################
--
--### ----------------- Additional .upp files ---------------- ###
--
--extra-upp-install: install-libdata
--	for f in $(CONTRIBSRC)uniprint$(D)*.upp; do \
--	    $(INSTALL_DATA) $$f $(DESTDIR)$(gsdatadir)$(D)lib || exit 1; \
--	done
--
- ### ------------ Build/Install special features ------------ ###
- 
--install-contrib-extras: extra-upp-install
-+install-contrib-extras:
diff --git a/app-text/ghostscript-gpl/files/ghostscript-9.52-remove-font-deps.patch b/app-text/ghostscript-gpl/files/ghostscript-9.52-remove-font-deps.patch
index 5f639e6..e014943 100644
--- a/app-text/ghostscript-gpl/files/ghostscript-9.52-remove-font-deps.patch
+++ b/app-text/ghostscript-gpl/files/ghostscript-9.52-remove-font-deps.patch
@@ -1,6 +1,14 @@
+From 8f1323126b0f1ee3c47132876b1f03d5810eeb1f Mon Sep 17 00:00:00 2001
 From: Pranav Batra <batrapranav@chromium.org>
-Subject: [PATCH] Do not use font resources
+Date: Sat, 3 Apr 2021 00:37:21 +0000
+Subject: [PATCH 5/6] Do not use font resources
 
+---
+ psi/psromfs.mak | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/psi/psromfs.mak b/psi/psromfs.mak
+index 6a336b3e2..9b3e594d9 100644
 --- a/psi/psromfs.mak
 +++ b/psi/psromfs.mak
 @@ -430,5 +430,5 @@ PS_MISC_DEPS=\
@@ -10,3 +18,6 @@
 -	$(PS_FONT_DEPS) $(PS_IDIOMSET_DEPS) $(PS_PROCSET_DEPS) $(PS_INIT_DEPS) $(PS_SUBSTCID_DEPS) \
 +	$(PS_IDIOMSET_DEPS) $(PS_PROCSET_DEPS) $(PS_INIT_DEPS) $(PS_SUBSTCID_DEPS) \
  	$(PS_MISC_DEPS)
+-- 
+2.31.0.208.g409f899ff0-goog
+
diff --git a/app-text/ghostscript-gpl/files/ghostscript-9.53-Disallow-NOSAFER.patch b/app-text/ghostscript-gpl/files/ghostscript-9.53-Disallow-NOSAFER.patch
new file mode 100644
index 0000000..2e90352
--- /dev/null
+++ b/app-text/ghostscript-gpl/files/ghostscript-9.53-Disallow-NOSAFER.patch
@@ -0,0 +1,31 @@
+From b37721b52923ac2c34186e953007930c36bc87ee Mon Sep 17 00:00:00 2001
+From: Sean Kau <skau@chromium.org>
+Date: Fri, 22 Jan 2021 15:02:27 -0800
+Subject: [PATCH 6/6] Disallow -dNOSAFER
+
+ChromiumOS only uses PPDs that run with -dSAFER.  Disallow the
+less safe option.
+---
+ psi/imainarg.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/psi/imainarg.c b/psi/imainarg.c
+index f5fe1f3e0..43834d647 100644
+--- a/psi/imainarg.c
++++ b/psi/imainarg.c
+@@ -806,6 +806,12 @@ run_stdin:
+                     return gs_error_Fatal;
+                 eqp = strchr(adef, '=');
+ 
++                if (strncmp(adef, "NOSAFER", 7) == 0) {
++                    puts(minst->heap, "-dNOSAFER is not allowed");
++                    arg_free((char *)adef, minst->heap);
++                    return gs_error_Fatal;
++                }
++
+                 if (eqp == NULL)
+                     eqp = strchr(adef, '#');
+                 /* Initialize the object memory, scanner, and */
+-- 
+2.31.0.208.g409f899ff0-goog
+
diff --git a/app-text/ghostscript-gpl/files/ghostscript-9.54-Always-stop-on-pdf-errors.patch b/app-text/ghostscript-gpl/files/ghostscript-9.54-Always-stop-on-pdf-errors.patch
new file mode 100644
index 0000000..b57fbf9
--- /dev/null
+++ b/app-text/ghostscript-gpl/files/ghostscript-9.54-Always-stop-on-pdf-errors.patch
@@ -0,0 +1,25 @@
+From bc62fcf8157574abe01898e16848bafb5cc02a12 Mon Sep 17 00:00:00 2001
+From: Sean Kau <skau@chromium.org>
+Date: Fri, 30 Apr 2021 15:36:45 -0700
+Subject: [PATCH] PDFSTOPONERROR is always true
+
+---
+ Resource/Init/gs_init.ps | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Resource/Init/gs_init.ps b/Resource/Init/gs_init.ps
+index 088c8583e..058c731a2 100644
+--- a/Resource/Init/gs_init.ps
++++ b/Resource/Init/gs_init.ps
+@@ -108,7 +108,7 @@ currentdict /PDFSTEP known /PDFSTEP exch def
+ % if PDFSTEP is on, turn on PDFDEBUG
+ PDFSTEP { /PDFDEBUG //true def } if
+ 
+-currentdict /PDFSTOPONERROR known /PDFSTOPONERROR exch def
++/PDFSTOPONERROR //true def
+ currentdict /PDFSTOPONWARNING known {/PDFSTOPONWARNING //true def /PDFSTOPONERROR //true def}{/PDFSTOPONWARNING //false def} ifelse
+ currentdict /PDFNOCIDFALLBACK known /PDFNOCIDFALLBACK exch def
+ /.bind /bind load def
+-- 
+2.31.1.527.g47e6f16901-goog
+
diff --git a/app-text/ghostscript-gpl/files/ghostscript-9.54-prune-contrib-directory.patch b/app-text/ghostscript-gpl/files/ghostscript-9.54-prune-contrib-directory.patch
new file mode 100644
index 0000000..d43505a
--- /dev/null
+++ b/app-text/ghostscript-gpl/files/ghostscript-9.54-prune-contrib-directory.patch
@@ -0,0 +1,422 @@
+From: Marcin Wojtas <mw@semihalf.com>
+Subject: [PATCH] Remove from contrib directory all drivers with undefined,
+ unclear or forbidden licenses. Configuration files were adjusted accordingly.
+
+Updated to enable the npdl driver.
+--- a/configure.ac
++++ b/configure.ac
+@@ -2576,14 +2576,14 @@ HP_DEVS='cdj500 djet500 djet500c dnj650c cljet5pr deskjet laserjet ljetplus ljet
+ PCLXL_DEVS='pxlmono pxlcolor'
+ EPSON_DEVS='eps9high eps9mid epson epsonc escp lp8000 lq850 photoex st800 stcolor alc1900 alc2000 alc4000 alc4100 alc8500 alc8600 alc9100 lp3000c lp8000c lp8200c lp8300c lp8500c lp8800c lp9000c lp9200c lp9500c lp9800c lps6500 epl2050 epl2050p epl2120 epl2500 epl2750 epl5800 epl5900 epl6100 epl6200 lp1800 lp1900 lp2200 lp2400 lp2500 lp7500 lp7700 lp7900 lp8100 lp8300f lp8400f lp8600 lp8600f lp8700 lp8900 lp9000b lp9100 lp9200b lp9300 lp9400 lp9600 lp9600s lps4500 eplcolor eplmono'
+ CANON_DEVS='bj10e bj200 bjc600 bjc800 lbp8 lips3 bjcmono bjcgray bjccmyk bjccolor'
+-LEXMARK_DEVS='lxm5700m lxm3200 lex2050 lex3200 lex5700 lex7000'
++LEXMARK_DEVS='lxm5700m lxm3200'
+ BROTHER_DEVS='hl7x0 hl1240 hl1250'
+ APPLE_DEVS='appledmp iwhi iwlo iwlq'
+ IBM_DEVS='ibmpro jetp3852'
+-OKI_DEVS='oki182 okiibm oki4w'
+-JAPAN_DEVS='lips4 lips4v ljet4pjl lj4dithp dj505j picty180 lips2p bjc880j pr201 pr150 pr1000 pr1000_4 jj100 bj10v bj10vh mj700v2c mj500c mj6000c mj8000c fmpr fmlbp ml600 lbp310 lbp320 md50Mono md50Eco md1xMono escpage lp2000 npdl rpdl'
+-MISC_PDEVS='uniprint ap3250 atx23 atx24 atx38 itk24i itk38 coslw2p coslwxl declj250 fs600 imagen lj250 m8510 necp6 oce9050 r4081 sj48 tek4696 t4693d2 t4693d4 t4693d8 dl2100 la50 la70 la75 la75plus ln03 xes md2k md5k gdi samsunggdi'
+-OPVP_DEVS='opvp oprp'
++OKI_DEVS='oki182 okiibm'
++JAPAN_DEVS='lips4 lips4v ljet4pjl lj4dithp dj505j picty180 lips2p bjc880j npdl'
++MISC_PDEVS='uniprint ap3250 atx23 atx24 atx38 itk24i itk38 coslw2p coslwxl declj250 fs600 imagen lj250 m8510 necp6 oce9050 r4081 sj48 tek4696 t4693d2 t4693d4 t4693d8'
++OPVP_DEVS=''
+ 
+ ETS_HALFTONING_DEVS='rinkj'
+ 
+--- a/contrib/contrib.mak
++++ b/contrib/contrib.mak
+@@ -283,25 +283,6 @@ $(DD)chp2200.dev : $(cdeskjet8_) $(DD)page.dev \
+ 	$(SETPDEV2) $(DD)chp2200 $(cdeskjet8_)
+ 
+ 
+-### ---------------- The Samsung SmartGDI laser printer devices --------- ###
+-### Note : this driver is used by Samsung SmartGDI compatible printers.   ###
+-###
+-
+-GDIMONO=$(DEVOBJ)gdevgdi.$(OBJ) $(HPPCL)
+-
+-$(DD)gdi.dev : $(GDIMONO) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)gdi $(GDIMONO)
+-
+-$(DD)samsunggdi.dev : $(GDIMONO) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)samsunggdi $(GDIMONO)
+-
+-$(DEVOBJ)gdevgdi.$(OBJ) : $(CONTRIBSRC)gdevgdi.c $(PDEVH) $(gdevpcl_h) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(DEVO_)gdevgdi.$(OBJ) $(C_) $(CONTRIBSRC)gdevgdi.c
+-
+-
+ ### ---------------- The Brother HL-1240/HL-1250 printers --------------- ###
+ ### These printers are ljet4-compatible, plus support for source tray     ###
+ ### selection and special 1200x600 dpi mode.                              ###
+@@ -322,51 +303,6 @@ $(DEVOBJ)gdevhl12.$(OBJ) : $(CONTRIBSRC)gdevhl12.c $(PDEVH) $(gdevdljm_h) \
+ 	$(DEVCC) $(DEVO_)gdevhl12.$(OBJ) $(C_) $(CONTRIBSRC)gdevhl12.c
+ 
+ 
+-### -------- The DEC LN03/DL2100/LA50/LA70/LA75 printer devices -------- ###
+-
+-ln03_=$(DEVOBJ)gdevln03.$(OBJ)
+-
+-# Author: Ulrich Mueller (ulm@vsnhd1.cern.ch)
+-# Printer: DEC LN03
+-$(DD)ln03.dev : $(ln03_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)ln03 $(ln03_)
+-
+-# Author: Nick Brown (nick.brown@coe.int)
+-# Printer: DEClaser 2100
+-$(DD)dl2100.dev : $(ln03_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)dl2100 $(ln03_)
+-
+-# Author: Ian MacPhedran (macphed@dvinci.USask.CA)
+-# Printer: DEC LA50
+-$(DD)la50.dev : $(ln03_) $(DD)page.dev \
+-                          $(CONTDEV)  $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)la50 $(ln03_)
+-
+-# Author: Bruce Lowekamp (lowekamp@csugrad.cs.vt.edu)
+-# Printer: DEC LA70
+-$(DD)la70.dev : $(ln03_) $(DD)page.dev \
+-                         $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)la70 $(ln03_)
+-
+-# Author: Ian MacPhedran (macphed@dvinci.USask.CA)
+-# Printer: DEC LA75
+-$(DD)la75.dev : $(ln03_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)la75 $(ln03_)
+-
+-# Author: Andre' Beck (Andre_Beck@IRS.Inf.TU-Dresden.de)
+-# Printer: DEC LA75plus
+-$(DD)la75plus.dev : $(ln03_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)la75plus $(ln03_)
+-
+-$(DEVOBJ)gdevln03.$(OBJ) : $(CONTRIBSRC)gdevln03.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(DEVO_)gdevln03.$(OBJ) $(C_) $(CONTRIBSRC)gdevln03.c
+-
+-
+ ### -------------------------- EPSON Page/Color -------------------------- ###
+ ###
+ ###
+@@ -589,33 +525,6 @@ $(DD)eplmono.dev: $(escv_) $(DD)page.dev \
+                            $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+ 	$(SETPDEV) $(DD)eplmono $(escv_)
+ 
+-# ------ The Lexmark 5700 and 7000 devices ------ #
+-
+-lex7000_=$(DEVOBJ)gdevlx7.$(OBJ)
+-$(DD)lex7000.dev : $(lex7000_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)lex7000 $(lex7000_)
+-
+-lex5700_=$(DEVOBJ)gdevlx7.$(OBJ)
+-$(DD)lex5700.dev : $(lex5700_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)lex5700 $(lex5700_)
+-
+-lex3200_=$(DEVOBJ)gdevlx7.$(OBJ)
+-$(DD)lex3200.dev : $(lex3200_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)lex3200 $(lex3200_)
+-
+-lex2050_=$(DEVOBJ)gdevlx7.$(OBJ)
+-$(DD)lex2050.dev : $(lex2050_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)lex2050 $(lex2050_)
+-
+-$(DEVOBJ)gdevlx7.$(OBJ) : $(CONTRIBSRC)gdevlx7.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(DEVO_)gdevlx7.$(OBJ) $(C_) $(CONTRIBSRC)gdevlx7.c
+-
+-
+ ### ----------- Lexmark 3200 device ------------ ###
+ 
+ lxm3200_=$(DEVOBJ)gdevlx32.$(OBJ)
+@@ -678,37 +587,6 @@ $(DD)bjc880j.dev : $(lipsr_) $(DD)page.dev \
+ 	$(SETPDEV) $(DD)bjc880j $(lipsr_)
+ 
+ 
+-### ------------ ALPS MD series printer devices ------------ ###
+-
+-md2k_=$(DEVOBJ)gdevmd2k.$(OBJ)
+-
+-$(DD)md2k.dev : $(md2k_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)md2k $(md2k_)
+-
+-$(DD)md5k.dev : $(md2k_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)md5k $(md2k_)
+-
+-$(DEVOBJ)gdevmd2k.$(OBJ) : $(CONTRIBSRC)gdevmd2k.c $(PDEVH) $(gsparam_h) \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(DEVO_)gdevmd2k.$(OBJ) $(C_) $(CONTRIBSRC)gdevmd2k.c
+-
+-
+-### ----------------- The Okidata OkiPage 4w+ device ------------------- ###
+-
+-oki4w_=$(DEVOBJ)gdevop4w.$(OBJ)
+-$(DD)oki4w.dev : $(oki4w_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)oki4w $(oki4w_)
+-
+-# Author: Ivan Schreter (ivan@shadow.sk)
+-# Printer: Okidata OkiPage 4w+
+-$(DEVOBJ)gdevop4w.$(OBJ) : $(CONTRIBSRC)gdevop4w.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(DEVO_)gdevop4w.$(OBJ) $(C_) $(CONTRIBSRC)gdevop4w.c
+-
+-
+ ### ---------------- OpenPrinting Vector Printer Driver ---------------- ###
+ ###                                                                      ###
+ OPVP_DIR=$(CONTRIBSRC)opvp
+@@ -1008,19 +886,6 @@ pcl3-install:
+ 	$(INSTALL_PROGRAM) $(BINDIR)$(D)pcl3opts$(XE) $(DESTDIR)$(bindir)
+ 
+ 
+-### ----------------- The Xerox XES printer device --------------------- ###
+-
+-xes_=$(DEVOBJ)gdevxes.$(OBJ)
+-$(DD)xes.dev : $(xes_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)xes $(xes_)
+-
+-# Author: Peter Flass (flass@lbdrscs.bitnet)
+-# Printer: Xerox XES (2700, 3700, 4045, etc.)
+-$(DEVOBJ)gdevxes.$(OBJ) : $(CONTRIBSRC)gdevxes.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(DEVO_)gdevxes.$(OBJ) $(C_) $(CONTRIBSRC)gdevxes.c
+-
+ #########################################################################
+ ### --------------------Japanese printer addons --------------------- ###
+ #########################################################################
+@@ -1028,140 +893,6 @@ $(DEVOBJ)gdevxes.$(OBJ) : $(CONTRIBSRC)gdevxes.c $(PDEVH) \
+ JAPDIR=$(CONTRIBSRC)japanese
+ JAPSRC=$(JAPDIR)$(D)
+ 
+-### ----------------- The NEC PC-PR201 printer device ----------------- ###
+-
+-pr201_=$(DEVOBJ)gdevp201.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
+-
+-$(DD)pr201.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)pr201 $(pr201_)
+-
+-$(DD)pr150.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)pr150 $(pr201_)
+-
+-$(DD)pr1000.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)pr1000 $(pr201_)
+-
+-$(DD)pr1000_4.dev : $(pr201_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)pr1000_4 $(pr201_)
+-
+-$(DEVOBJ)gdevp201.$(OBJ) : $(JAPSRC)gdevp201.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(DEVO_)gdevp201.$(OBJ) $(C_) $(JAPSRC)gdevp201.c
+-
+-### ----------------- The Star JJ-100 printer device ----------------- ###
+-
+-jj100_=$(DEVOBJ)gdevj100.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
+-
+-$(DD)jj100.dev : $(jj100_) $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)jj100 $(jj100_)
+-
+-$(DEVOBJ)gdevj100.$(OBJ) : $(JAPSRC)gdevj100.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)gdevj100.c
+-
+-### ----------------- The Canon BubbleJet BJ10v device ----------------- ###
+-
+-bj10v_=$(DEVOBJ)gdev10v.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
+-
+-$(DD)bj10v.dev : $(bj10v_) \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)bj10v $(bj10v_)
+-
+-$(DD)bj10vh.dev : $(bj10v_) \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)bj10vh $(bj10v_)
+-
+-# Uncomment the following line if you are using MS-DOS on PC9801 series.
+-
+-$(DEVOBJ)gdev10v.$(OBJ) : $(JAPSRC)gdev10v.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)gdev10v.c
+-#	$(DEVCC) -DPC9801 $(O_)$@ $(C_) $(JAPSRC)gdev10v.c
+-
+-
+-##
+-## EPSON MachJet driver
+-##
+-
+-mj700v2c_=$(DEVOBJ)gdevmjc.$(OBJ) $(HPPCL)
+-
+-$(DEVOBJ)gdevmjc.$(OBJ) : $(JAPSRC)gdevmjc.c $(JAPSRC)gdevmjc.h $(PDEVH) $(gdevpcl_h) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) -DA4 $(DEVO_)gdevmjc.$(OBJ) $(C_) $(JAPSRC)gdevmjc.c
+-
+-$(DD)mj700v2c.dev : $(mj700v2c_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)mj700v2c $(mj700v2c_)
+-
+-$(DD)mj500c.dev : $(mj700v2c_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)mj500c $(mj700v2c_)
+-
+-$(DD)mj6000c.dev : $(mj700v2c_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)mj6000c $(mj700v2c_)
+-
+-$(DD)mj8000c.dev : $(mj700v2c_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)mj8000c $(mj700v2c_)
+-
+-### ----------------- The Fujitsu FMPR printer device ----------------- ###
+-
+-fmpr_=$(DEVOBJ)gdevfmpr.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
+-
+-$(DD)fmpr.dev : $(fmpr_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)fmpr $(fmpr_)
+-
+-$(DEVOBJ)gdevfmpr.$(OBJ) : $(JAPSRC)gdevfmpr.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(DEVO_)gdevfmpr.$(OBJ) $(C_) $(JAPSRC)gdevfmpr.c
+-
+-### --------------- The Fujitsu FMLBP-2xx printer device --------------- ###
+-
+-fmlbp_=$(DEVOBJ)gdevfmlbp.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
+-
+-$(DD)fmlbp.dev : $(fmlbp_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)fmlbp $(fmlbp_)
+-
+-$(DEVOBJ)gdevfmlbp.$(OBJ) : $(JAPSRC)gdevfmlbp.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) -DFMLBP_NOADJUST_MARGIN $(O_)$@ $(C_) $(JAPSRC)gdevfmlbp.c
+-
+-### ------ The OKI MICROLINE620CL (IPL) printer device ------- ###
+-#
+-#  by N.Tagawa
+-#
+-#  $Id: gdevml6.mak,v 1.2 1998/03/16 13:32:33 tagawa Exp $
+-#
+-
+-ml6_=$(DEVOBJ)gdevml6.$(OBJ) $(DEVOBJ)gdevprn.$(OBJ)
+-
+-$(DD)ml600.dev : $(ml6_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)ml600 $(ml6_)
+-
+-$(DEVOBJ)gdevml6.$(OBJ) : $(JAPSRC)gdevml6.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)gdevml6.c
+-
+-
+-#----------------------------------------------------------------------#
+-
+-lbp3x0_=$(DEVOBJ)gdevlbp3.$(OBJ)
+-
+-$(DD)lbp310.dev :$(lbp3x0_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)lbp310 $(lbp3x0_)
+-
+-$(DD)lbp320.dev :$(lbp3x0_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)lbp320 $(lbp3x0_)
+-
+-$(DEVOBJ)gdevlbp3.$(OBJ) : $(JAPSRC)gdevlbp3.c $(PDEVH)
+-	$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)gdevlbp3.c
+-
+ ### --- The NEC NPDL language printer device ------ ###
+ 
+ npdl_=$(DEVOBJ)gdevnpdl.$(OBJ) $(DEVOBJ)gdevlprn.$(OBJ)
+@@ -1174,77 +905,6 @@ $(DD)npdl.dev : $(npdl_) $(DD)page.dev \
+                            $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+ 	$(SETPDEV) $(DD)npdl $(npdl_)
+ 
+-### ------- EPSON ESC/Page printer device ----------------- ###
+-
+-escpage_=$(DEVOBJ)gdevespg.$(OBJ) $(DEVOBJ)gdevlprn.$(OBJ) $(DEVOBJ)gdevlips.$(OBJ)
+-
+-$(DEVOBJ)gdevespg.$(OBJ) : $(JAPSRC)gdevespg.c $(LIPS_SRC)gdevlprn.h $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) -DA4 $(DEVO_)gdevespg.$(OBJ) $(LIPS_OPT) $(C_) $(JAPSRC)gdevespg.c
+-
+-$(DD)escpage.dev : $(escpage_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)escpage $(escpage_)
+-
+-$(DD)lp2000.dev : $(escpage_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)lp2000 $(escpage_)
+-
+-### --- The RICOH RPDL language printer device ------ ###
+-
+-rpdl_=$(DEVOBJ)gdevrpdl.$(OBJ) $(DEVOBJ)gdevlprn.$(OBJ)
+-$(DEVOBJ)gdevrpdl.$(OBJ) : $(JAPSRC)gdevrpdl.c $(LIPS_SRC)gdevlprn.h $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(DEVO_)gdevrpdl.$(OBJ) $(LIPS_OPT) $(C_) $(JAPSRC)gdevrpdl.c
+-
+-$(DD)rpdl.dev : $(rpdl_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)rpdl $(rpdl_)
+-
+-### ---------- RICOH RPDL IV(600dpi) printer devices ---------- ###
+-#rpdl_=$(DEVOBJ)gdevrpdl.$(OBJ)
+-#$(DEVOBJ)gdevrpdl.$(OBJ) : $(JAPSRC)gdevrpdl.c \
+-#                           $(CONTRIB_MAK) $(MAKEDIRS)
+-#	$(DEVCC) $(DEVO_)gdevrpdl.$(OBJ) $(C_) $(JAPSRC)gdevrpdl.c
+-#
+-#$(DD)nx100f.dev : $(rpdl_) $(DD)page.dev \
+-#                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-#	$(SETPDEV2) $(DD)nx100f $(rpdl_)
+-#
+-#$(DD)nx100v.dev : $(rpdl_) $(DD)page.dev \
+-#                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-#	$(SETPDEV2) $(DD)nx100v $(rpdl_)
+-
+-### ------------ The ALPS Micro Dry printer devices ------------ ###
+-
+-alps_=$(DEVOBJ)gdevalps.$(OBJ)
+-
+-$(DD)md50Mono.dev : $(alps_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)md50Mono $(alps_)
+-
+-$(DD)md50Eco.dev : $(alps_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)md50Eco $(alps_)
+-
+-$(DD)md1xMono.dev : $(alps_) $(DD)page.dev \
+-                           $(CONTDEV) $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(SETPDEV) $(DD)md1xMono $(alps_)
+-
+-$(DEVOBJ)gdevalps.$(OBJ) : $(JAPSRC)gdevalps.c $(PDEVH) \
+-                           $(CONTRIB_MAK) $(MAKEDIRS)
+-	$(DEVCC) $(O_)$@ $(C_) $(JAPSRC)gdevalps.c
+-
+-#########################################################################
+-#########################################################################
+-
+-### ----------------- Additional .upp files ---------------- ###
+-
+-extra-upp-install: install-libdata
+-	for f in $(CONTRIBSRC)uniprint$(D)*.upp; do \
+-	    $(INSTALL_DATA) $$f $(DESTDIR)$(gsdatadir)$(D)lib || exit 1; \
+-	done
+-
+ ### ------------ Build/Install special features ------------ ###
+ 
+-install-contrib-extras: extra-upp-install
++install-contrib-extras:
+-- 
+2.31.0.208.g409f899ff0-goog
+
diff --git a/app-text/ghostscript-gpl/ghostscript-gpl-9.53.3-r1.ebuild b/app-text/ghostscript-gpl/ghostscript-gpl-9.53.3-r1.ebuild
deleted file mode 120000
index 41fb419..0000000
--- a/app-text/ghostscript-gpl/ghostscript-gpl-9.53.3-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-ghostscript-gpl-9.53.3.ebuild
\ No newline at end of file
diff --git a/app-text/ghostscript-gpl/ghostscript-gpl-9.53.3.ebuild b/app-text/ghostscript-gpl/ghostscript-gpl-9.53.3.ebuild
deleted file mode 100644
index 09b5d06..0000000
--- a/app-text/ghostscript-gpl/ghostscript-gpl-9.53.3.ebuild
+++ /dev/null
@@ -1,238 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit autotools cros-fuzzer cros-sanitizers flag-o-matic multilib \
-				toolchain-funcs versionator
-
-
-DESCRIPTION="Interpreter for the PostScript language and PDF"
-HOMEPAGE="https://ghostscript.com/"
-
-MY_P=${P/-gpl}
-PVM=$(get_version_component_range 1-3)
-PVM_S=$(replace_all_version_separators "" ${PVM})
-
-SRC_URI="
-	https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${PVM_S}/${MY_P}.tar.xz
-"
-
-# Google has a commercial license for ghostscript when distributed with
-# Chrome OS (not Chromium OS). So toggle the license to the required
-# copyright when building for Chrome OS, and use the open source licensing
-# text otherwise.
-LICENSE="
-	internal? ( LICENSE.artifex_commercial )
-	!internal? ( AGPL-3 CPL-1.0 )
-"
-SLOT="0"
-KEYWORDS="*"
-IUSE="
-	asan cups dbus fuzzer gtk idn internal linguas_de crosfonts static-libs
-	tiff unicode X
-"
-
-LANGS="ja ko zh_CN zh_TW"
-for X in ${LANGS} ; do
-	IUSE="${IUSE} linguas_${X}"
-done
-
-COMMON_DEPEND="
-	app-text/libpaper
-	media-libs/fontconfig
-	>=media-libs/freetype-2.4.9:2=
-	>=media-libs/lcms-2.6:2
-	>=media-libs/libpng-1.6.2:0=
-	>=sys-libs/zlib-1.2.7
-	virtual/jpeg:0
-	cups? ( >=net-print/cups-1.3.8 )
-	dbus? ( sys-apps/dbus )
-	gtk? ( || ( x11-libs/gtk+:3 x11-libs/gtk+:2 ) )
-	idn? ( net-dns/libidn )
-	tiff? ( >=media-libs/tiff-4.0.1:0= )
-	X? ( x11-libs/libXt x11-libs/libXext )
-	!!media-libs/jbig2dec
-"
-
-DEPEND="${COMMON_DEPEND}
-	virtual/pkgconfig
-"
-
-# We need urw-fonts for the 35 base postscript level 2 fonts,
-# eg CenturySchL-Roma is not included in the Noto fonts.
-RDEPEND="${COMMON_DEPEND}
-	!crosfonts? ( >=media-fonts/urw-fonts-2.4.9 )
-	linguas_ja? ( media-fonts/kochi-substitute )
-	linguas_ko? ( media-fonts/baekmuk-fonts )
-	linguas_zh_CN? ( media-fonts/arphicfonts )
-	linguas_zh_TW? ( media-fonts/arphicfonts )
-"
-
-S="${WORKDIR}/${MY_P}"
-
-PATCHES=(
-	"${FILESDIR}/"
-)
-
-src_prepare() {
-	# apply various patches, many borrowed from Fedora
-	# http://pkgs.fedoraproject.org/cgit/ghostscript.git
-	# in the same breath, apply patches specific to Chrome OS
-	default
-
-	# remove internal copies of various libraries
-	rm -r "${S}"/cups/libs || die
-	rm -r "${S}"/freetype || die
-	rm -r "${S}"/lcms2mt || die
-	rm -r "${S}"/libpng || die
-	rm -r "${S}"/tiff || die
-	rm -r "${S}"/zlib || die
-
-	# Enable compilation of select contributed drivers,
-	# but prune ones with incompatible or unclear licenses
-	# (c.f. commit 0334118d6279640cb860f2f4a9af64b0fd008b49).
-	rm -r "${S}"/contrib/epson740/ || die
-	rm -r "${S}"/contrib/japanese || die
-	rm -r "${S}"/contrib/md2k_md5k/ || die
-	rm -r "${S}"/contrib/pscolor || die
-	rm -r "${S}"/contrib/uniprint || die
-	rm "${S}"/contrib/gdevgdi.c || die
-	rm "${S}"/contrib/gdevln03.c || die
-	rm "${S}"/contrib/gdevlx7.c || die
-	rm "${S}"/contrib/gdevmd2k.c || die
-	rm "${S}"/contrib/gdevop4w.c || die
-	rm "${S}"/contrib/gdevxes.c || die
-
-	if ! use gtk ; then
-		sed -e "s:\$(GSSOX)::" \
-			-e "s:.*\$(GSSOX_XENAME)$::" \
-			-i "${S}"/base/unix-dll.mak || die "sed failed"
-	fi
-
-	if use crosfonts; then
-		rm -rf "${S}/Resource/Font" || die
-		cat "${FILESDIR}/Fontmap.cros" >> "${S}/Resource/Init/Fontmap.GS" || die
-	fi
-
-	# Force the include dirs to a neutral location.
-	sed -e "/^ZLIBDIR=/s:=.*:=${T}:" \
-		-i "${S}"/configure.ac || die
-	# Some files depend on zlib.h directly.  Redirect them. #573248
-	# Also make sure to not define OPJ_STATIC to avoid linker errors due to
-	# hidden symbols (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=203327#c1)
-	sed -e '/^zlib_h/s:=.*:=:' \
-		-e 's|-DOPJ_STATIC ||' \
-		-i "${S}"/base/lib.mak || die
-
-	# search path fix
-	# put LDFLAGS after BINDIR, bug #383447
-	sed -e "s:\$\(gsdatadir\)/lib:@datarootdir@/ghostscript/${PVM}/$(get_libdir):" \
-		-e "s:exdir=.*:exdir=@datarootdir@/doc/${PF}/examples:" \
-		-e "s:docdir=.*:docdir=@datarootdir@/doc/${PF}/html:" \
-		-e "s:GS_DOCDIR=.*:GS_DOCDIR=@datarootdir@/doc/${PF}/html:" \
-		-e 's:-L$(BINDIR):& $(LDFLAGS):g' \
-		-i "${S}"/Makefile.in "${S}"/base/*.mak || die "sed failed"
-
-	# remove incorrect symlink, bug 590384
-	rm ijs/ltmain.sh || die
-	eautoreconf
-
-	cd "${S}"/ijs || die
-	eautoreconf
-}
-
-src_configure() {
-	sanitizers-setup-env
-
-	local FONTPATH
-	for path in \
-		/usr/share/fonts/urw-fonts \
-		/usr/share/fonts/Type1 \
-		/usr/share/fonts
-	do
-		FONTPATH="$FONTPATH${FONTPATH:+:}${EPREFIX}$path"
-	done
-
-	tc-export_build_env BUILD_CC
-
-	# This list contains all ghostscript devices used by CUPS/PPD files.
-	# It was built basing on an output from platform_PrinterPpds autotest.
-	# See the readme.txt file in the autotest directory to learn how the list
-	# was created.
-	local devices=(
-		ap3250 bit bj10e bj200 bjc600 bjc800 bjc880j bjccolor cdj500
-		cdj550 cdnj500 cljet5c declj250 djet500 dnj650c epl2050 eplcolor
-		eps9high eps9mid epson epsonc hl1250 ibmpro imagen jetp3852 laserjet
-		lbp8 lips2p lips3 lips4 ljet2p ljet3 ljet4 ljetplus lp1800 lp1900
-		lp2200 lp2400 lp2500 lp2563 lp3000c lp7500 lp7700 lp7900 lp8000
-		lp8000c lp8100 lp8200c lp8300c lp8300f lp8400f lp8500c lp8600 lp8600f
-		lp8700 lp8800c lp8900 lp9000b lp9000c lp9100 lp9200b lp9200c lp9300
-		lp9400 lp9500c lp9600 lp9600s lp9800c lps4500 lps6500 lq850 lxm5700m
-		m8510 necp6 oce9050 oki182 okiibm pdfwrite pcl3 picty180 pjxl300
-		ps2write pxlcolor pxlmono r4081 sj48 stcolor t4693d4 tek4696 uniprint
-		# The "cups" driver is added if and only if we are building with CUPS.
-		$(usev cups)
-	)
-
-	econf \
-		CUPSCONFIG="${EROOT}/usr/bin/${CHOST}-cups-config" \
-		CCAUX="${BUILD_CC}" \
-		CFLAGSAUX="${BUILD_CFLAGS}" \
-		LDFLAGSAUX="${BUILD_LDFLAGS}" \
-		--enable-dynamic \
-		--enable-freetype \
-		--enable-fontconfig \
-		--enable-openjpeg \
-		$(use_enable crosfonts compile-inits) \
-		--with-drivers="$(printf %s, "${devices[@]}")" \
-		--with-fontpath="$FONTPATH" \
-		--with-ijs \
-		--with-jbig2dec \
-		--with-libpaper \
-		--without-luratech \
-		$(use_enable cups) \
-		$(use_enable dbus) \
-		$(use_enable gtk) \
-		$(use_with cups pdftoraster) \
-		$(use_with idn libidn) \
-		$(use_with tiff libtiff) \
-		$(use_with tiff system-libtiff) \
-		$(use_with X x)
-
-	cd "${S}/ijs" || die
-	econf \
-		--enable-shared \
-		$(use_enable static-libs static)
-}
-
-src_compile() {
-	emake -j8 so all
-
-	cd "${S}"/ijs || die
-	emake
-}
-
-src_install() {
-	emake DESTDIR="${D}" install-so install
-
-	# move gsc to gs, bug #343447
-	# gsc collides with gambit, bug #253064
-	mv -f "${ED}"/usr/bin/{gsc,gs} || die
-
-	cd "${S}/ijs" || die
-	emake DESTDIR="${D}" install
-
-	insinto /usr/share/ghostscript/${PVM}/Resource/Init
-
-	if ! use static-libs; then
-		find "${ED}" -name '*.la' -delete || die
-	fi
-
-	if ! use linguas_de; then
-		rm -r "${ED}"/usr/share/man/de || die
-	fi
-
-	# set environment variables
-	doenvd "${FILESDIR}"/02ghostscript
-}
diff --git a/app-text/ghostscript-gpl/ghostscript-gpl-9.54.0-r3.ebuild b/app-text/ghostscript-gpl/ghostscript-gpl-9.54.0-r3.ebuild
new file mode 120000
index 0000000..83366e1
--- /dev/null
+++ b/app-text/ghostscript-gpl/ghostscript-gpl-9.54.0-r3.ebuild
@@ -0,0 +1 @@
+ghostscript-gpl-9.54.0.ebuild
\ No newline at end of file
diff --git a/app-text/ghostscript-gpl/ghostscript-gpl-9.54.0.ebuild b/app-text/ghostscript-gpl/ghostscript-gpl-9.54.0.ebuild
new file mode 100644
index 0000000..dcadb12
--- /dev/null
+++ b/app-text/ghostscript-gpl/ghostscript-gpl-9.54.0.ebuild
@@ -0,0 +1,238 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit autotools cros-fuzzer cros-sanitizers flag-o-matic multilib \
+				toolchain-funcs versionator
+
+
+DESCRIPTION="Interpreter for the PostScript language and PDF"
+HOMEPAGE="https://ghostscript.com/"
+
+MY_P=${P/-gpl}
+PVM=$(get_version_component_range 1-3)
+PVM_S=$(replace_all_version_separators "" ${PVM})
+
+SRC_URI="
+	https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs${PVM_S}/${MY_P}.tar.xz
+"
+
+# Google has a commercial license for ghostscript when distributed with
+# Chrome OS (not Chromium OS). So toggle the license to the required
+# copyright when building for Chrome OS, and use the open source licensing
+# text otherwise.
+LICENSE="
+	internal? ( LICENSE.artifex_commercial )
+	!internal? ( AGPL-3 CPL-1.0 )
+"
+SLOT="0"
+KEYWORDS="*"
+IUSE="
+	asan cups dbus fuzzer gtk idn internal linguas_de crosfonts static-libs
+	tiff unicode X
+"
+
+LANGS="ja ko zh_CN zh_TW"
+for X in ${LANGS} ; do
+	IUSE="${IUSE} linguas_${X}"
+done
+
+COMMON_DEPEND="
+	app-text/libpaper
+	media-libs/fontconfig
+	>=media-libs/freetype-2.4.9:2=
+	>=media-libs/lcms-2.6:2
+	>=media-libs/libpng-1.6.2:0=
+	>=sys-libs/zlib-1.2.7
+	virtual/jpeg:0
+	cups? ( >=net-print/cups-1.3.8 )
+	dbus? ( sys-apps/dbus )
+	gtk? ( || ( x11-libs/gtk+:3 x11-libs/gtk+:2 ) )
+	idn? ( net-dns/libidn )
+	tiff? ( >=media-libs/tiff-4.0.1:0= )
+	X? ( x11-libs/libXt x11-libs/libXext )
+	!!media-libs/jbig2dec
+"
+
+DEPEND="${COMMON_DEPEND}
+	virtual/pkgconfig
+"
+
+# We need urw-fonts for the 35 base postscript level 2 fonts,
+# eg CenturySchL-Roma is not included in the Noto fonts.
+RDEPEND="${COMMON_DEPEND}
+	!crosfonts? ( >=media-fonts/urw-fonts-2.4.9 )
+	linguas_ja? ( media-fonts/kochi-substitute )
+	linguas_ko? ( media-fonts/baekmuk-fonts )
+	linguas_zh_CN? ( media-fonts/arphicfonts )
+	linguas_zh_TW? ( media-fonts/arphicfonts )
+"
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+	"${FILESDIR}/"
+)
+
+src_prepare() {
+	# apply various patches, many borrowed from Fedora
+	# http://pkgs.fedoraproject.org/cgit/ghostscript.git
+	# in the same breath, apply patches specific to Chrome OS
+	default
+
+	# remove internal copies of various libraries
+	rm -r "${S}"/cups/libs || die
+	rm -r "${S}"/freetype || die
+	rm -r "${S}"/lcms2mt || die
+	rm -r "${S}"/libpng || die
+	rm -r "${S}"/tiff || die
+	rm -r "${S}"/zlib || die
+
+	# Enable compilation of select contributed drivers,
+	# but prune ones with incompatible or unclear licenses
+	# (c.f. commit 0334118d6279640cb860f2f4a9af64b0fd008b49).
+	rm -r "${S}"/contrib/epson740/ || die
+	rm -r "${S}"/contrib/md2k_md5k/ || die
+	rm -r "${S}"/contrib/pscolor || die
+	rm -r "${S}"/contrib/uniprint || die
+	rm "${S}"/contrib/gdevgdi.c || die
+	rm "${S}"/contrib/gdevln03.c || die
+	rm "${S}"/contrib/gdevlx7.c || die
+	rm "${S}"/contrib/gdevmd2k.c || die
+	rm "${S}"/contrib/gdevop4w.c || die
+	rm "${S}"/contrib/gdevxes.c || die
+
+	if ! use gtk ; then
+		sed -e "s:\$(GSSOX)::" \
+			-e "s:.*\$(GSSOX_XENAME)$::" \
+			-i "${S}"/base/unix-dll.mak || die "sed failed"
+	fi
+
+	if use crosfonts; then
+		rm -rf "${S}/Resource/Font" || die
+		cat "${FILESDIR}/Fontmap.cros" >> "${S}/Resource/Init/Fontmap.GS" || die
+	fi
+
+	# Force the include dirs to a neutral location.
+	sed -e "/^ZLIBDIR=/s:=.*:=${T}:" \
+		-i "${S}"/configure.ac || die
+	# Some files depend on zlib.h directly.  Redirect them. #573248
+	# Also make sure to not define OPJ_STATIC to avoid linker errors due to
+	# hidden symbols (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=203327#c1)
+	sed -e '/^zlib_h/s:=.*:=:' \
+		-e 's|-DOPJ_STATIC ||' \
+		-i "${S}"/base/lib.mak || die
+
+	# search path fix
+	# put LDFLAGS after BINDIR, bug #383447
+	sed -e "s:\$\(gsdatadir\)/lib:@datarootdir@/ghostscript/${PVM}/$(get_libdir):" \
+		-e "s:exdir=.*:exdir=@datarootdir@/doc/${PF}/examples:" \
+		-e "s:docdir=.*:docdir=@datarootdir@/doc/${PF}/html:" \
+		-e "s:GS_DOCDIR=.*:GS_DOCDIR=@datarootdir@/doc/${PF}/html:" \
+		-e 's:-L$(BINDIR):& $(LDFLAGS):g' \
+		-i "${S}"/Makefile.in "${S}"/base/*.mak || die "sed failed"
+
+	# remove incorrect symlink, bug 590384
+	rm ijs/ltmain.sh || die
+	eautoreconf
+
+	cd "${S}"/ijs || die
+	eautoreconf
+}
+
+src_configure() {
+	sanitizers-setup-env
+
+	local FONTPATH
+	for path in \
+		/usr/share/fonts/urw-fonts \
+		/usr/share/fonts/Type1 \
+		/usr/share/fonts
+	do
+		FONTPATH="$FONTPATH${FONTPATH:+:}${EPREFIX}$path"
+	done
+
+	tc-export_build_env BUILD_CC
+
+	# This list contains all ghostscript devices used by CUPS/PPD files.
+	# It was built basing on an output from platform_PrinterPpds autotest.
+	# See the readme.txt file in the autotest directory to learn how the list
+	# was created.
+	local devices=(
+		ap3250 bit bj10e bj200 bjc600 bjc800 bjc880j bjccolor cdj500
+		cdj550 cdnj500 cljet5c declj250 djet500 dnj650c epl2050 eplcolor
+		eps9high eps9mid epson epsonc hl1250 ibmpro imagen jetp3852 laserjet
+		lbp8 lips2p lips3 lips4 ljet2p ljet3 ljet4 ljetplus lp1800 lp1900
+		lp2200 lp2400 lp2500 lp2563 lp3000c lp7500 lp7700 lp7900 lp8000
+		lp8000c lp8100 lp8200c lp8300c lp8300f lp8400f lp8500c lp8600 lp8600f
+		lp8700 lp8800c lp8900 lp9000b lp9000c lp9100 lp9200b lp9200c lp9300
+		lp9400 lp9500c lp9600 lp9600s lp9800c lps4500 lps6500 lq850 lxm5700m
+		m8510 necp6 npdl oce9050 oki182 okiibm pdfwrite pcl3 picty180 pjxl300
+		ps2write pxlcolor pxlmono r4081 sj48 stcolor t4693d4 tek4696 uniprint
+		# The "cups" driver is added if and only if we are building with CUPS.
+		$(usev cups)
+	)
+
+	econf \
+		CUPSCONFIG="${EROOT}/usr/bin/${CHOST}-cups-config" \
+		CCAUX="${BUILD_CC}" \
+		CFLAGSAUX="${BUILD_CFLAGS}" \
+		LDFLAGSAUX="${BUILD_LDFLAGS}" \
+		--enable-dynamic \
+		--enable-freetype \
+		--enable-fontconfig \
+		--enable-openjpeg \
+		$(use_enable crosfonts compile-inits) \
+		--with-drivers="$(printf %s, "${devices[@]}")" \
+		--with-fontpath="$FONTPATH" \
+		--with-ijs \
+		--with-jbig2dec \
+		--with-libpaper \
+		--without-luratech \
+		--without-tesseract \
+		$(use_enable cups) \
+		$(use_enable dbus) \
+		$(use_enable gtk) \
+		$(use_with cups pdftoraster) \
+		$(use_with idn libidn) \
+		$(use_with tiff libtiff) \
+		$(use_with tiff system-libtiff) \
+		$(use_with X x)
+
+	cd "${S}/ijs" || die
+	econf \
+		--enable-shared \
+		$(use_enable static-libs static)
+}
+
+src_compile() {
+	emake -j8 so all
+
+	cd "${S}"/ijs || die
+	emake
+}
+
+src_install() {
+	emake DESTDIR="${D}" install-so install
+
+	# move gsc to gs, bug #343447
+	# gsc collides with gambit, bug #253064
+	mv -f "${ED}"/usr/bin/{gsc,gs} || die
+
+	cd "${S}/ijs" || die
+	emake DESTDIR="${D}" install
+
+	insinto /usr/share/ghostscript/${PVM}/Resource/Init
+
+	if ! use static-libs; then
+		find "${ED}" -name '*.la' -delete || die
+	fi
+
+	if ! use linguas_de; then
+		rm -r "${ED}"/usr/share/man/de || die
+	fi
+
+	# set environment variables
+	doenvd "${FILESDIR}"/02ghostscript
+}
diff --git a/brillo-base/libsparse/libsparse-0.0.1-r8.ebuild b/brillo-base/libsparse/libsparse-0.0.1-r8.ebuild
deleted file mode 100644
index 0da165d..0000000
--- a/brillo-base/libsparse/libsparse-0.0.1-r8.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="630e05b6af5f76bd7f063840e543186bde40ff0a"
-CROS_WORKON_TREE="42c814a9b71ac7619efa0d47b68cb55fef759095"
-CROS_WORKON_MANUAL_UPREV=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform/core"
-CROS_WORKON_PROJECT="platform/system/core"
-CROS_WORKON_REPO="https://android.googlesource.com"
-
-inherit cros-workon
-
-DESCRIPTION="Library and cli tools for Android sparse files"
-HOMEPAGE="https://android.googlesource.com/platform/system/core"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	sys-libs/zlib:=
-"
-DEPEND="${RDEPEND}"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/${PN}"
-}
-
-src_prepare() {
-	default
-	cp "${FILESDIR}/Makefile" "${S}" || die "Copying Makefile"
-}
-
-src_configure() {
-	export GENTOO_LIBDIR=$(get_libdir)
-	tc-export CC
-	default
-}
diff --git a/brillo-base/libsparse/libsparse-0.0.1-r9.ebuild b/brillo-base/libsparse/libsparse-0.0.1-r9.ebuild
new file mode 100644
index 0000000..fd90b77
--- /dev/null
+++ b/brillo-base/libsparse/libsparse-0.0.1-r9.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-constants
+
+CROS_WORKON_COMMIT="630e05b6af5f76bd7f063840e543186bde40ff0a"
+CROS_WORKON_TREE="42c814a9b71ac7619efa0d47b68cb55fef759095"
+CROS_WORKON_MANUAL_UPREV=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform/core"
+CROS_WORKON_PROJECT="platform/system/core"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+
+inherit cros-workon
+
+DESCRIPTION="Library and cli tools for Android sparse files"
+HOMEPAGE="https://android.googlesource.com/platform/system/core"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	sys-libs/zlib:=
+"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/${PN}"
+}
+
+src_prepare() {
+	default
+	cp "${FILESDIR}/Makefile" "${S}" || die "Copying Makefile"
+}
+
+src_configure() {
+	export GENTOO_LIBDIR=$(get_libdir)
+	tc-export CC
+	default
+}
diff --git a/brillo-base/libsparse/libsparse-9999.ebuild b/brillo-base/libsparse/libsparse-9999.ebuild
index 940c72e..0e97430 100644
--- a/brillo-base/libsparse/libsparse-9999.ebuild
+++ b/brillo-base/libsparse/libsparse-9999.ebuild
@@ -3,11 +3,14 @@
 
 EAPI="7"
 
+inherit cros-constants
+
 CROS_WORKON_MANUAL_UPREV=1
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="platform/core"
 CROS_WORKON_PROJECT="platform/system/core"
-CROS_WORKON_REPO="https://android.googlesource.com"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
 
 inherit cros-workon
 
diff --git a/chromeos-base/android-installer/android-installer-0.0.1-r6.ebuild b/chromeos-base/android-installer/android-installer-0.0.1-r6.ebuild
deleted file mode 100644
index dc0f7af..0000000
--- a/chromeos-base/android-installer/android-installer-0.0.1-r6.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="8d996397d3d660327d2123dca8efdeeeadd01711"
-CROS_WORKON_TREE="096e46695d63714714d945b5b9e8378beb18891c"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="arc/android-installer"
-
-PYTHON_COMPAT=(python3_{6,7,8})
-
-inherit cros-workon distutils-r1
-
-DESCRIPTION="Android Installer for Chrome OS"
-LICENSE="BSD-Google"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/android-installer/"
-SLOT="0"
-KEYWORDS="*"
-
-BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
-
-distutils_enable_tests unittest
-
-src_test() {
-	distutils-r1_src_test
-}
-
-src_compile() {
-	S+="/${CROS_WORKON_SUBTREE}"
-	cd "${S}" || die "This should never happen"
-	distutils-r1_src_compile
-}
diff --git a/chromeos-base/android-installer/android-installer-9999.ebuild b/chromeos-base/android-installer/android-installer-9999.ebuild
deleted file mode 100644
index 45d1f5c..0000000
--- a/chromeos-base/android-installer/android-installer-9999.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=7
-
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="arc/android-installer"
-
-PYTHON_COMPAT=(python3_{6,7,8})
-
-inherit cros-workon distutils-r1
-
-DESCRIPTION="Android Installer for Chrome OS"
-LICENSE="BSD-Google"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/android-installer/"
-SLOT="0"
-KEYWORDS="~*"
-
-BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
-
-distutils_enable_tests unittest
-
-src_test() {
-	distutils-r1_src_test
-}
-
-src_compile() {
-	S+="/${CROS_WORKON_SUBTREE}"
-	cd "${S}" || die "This should never happen"
-	distutils-r1_src_compile
-}
diff --git a/chromeos-base/android-sdk/Manifest b/chromeos-base/android-sdk/Manifest
index 58d0d02..f33d7a6 100644
--- a/chromeos-base/android-sdk/Manifest
+++ b/chromeos-base/android-sdk/Manifest
@@ -1,2 +1,2 @@
+DIST android-sdk_6877874_linux-x86.zip 842904010 BLAKE2B 9de37ed4eb8c3e2284a1fda7b5ff997286453dd1a47d41341af14ef8cafa324e3ec7b38b2eb0758133bfda36131a19cfbc4d122fc056fca75e4007f279737462 SHA512 91f5fa1169f9351e6c0d7a5832c9908e55521ad007a12f67c212f1a70ddd4d4097c4c6f51f34b196bf45fd44e4c6d1a36a04322db69c7dfc03e21bf0b72aa774
 DIST sdk-repo-linux-platforms-4953408.zip 72718200 BLAKE2B 50fd48d633944e23e20df646b7bf3fa3e6cade8cb9fc380523be765844b2361e5c52bde93904b04658a5b339cc4e89ed7c5d6bdeead69b83194f3c8e5e0128db SHA512 856631fca64f76b4a0b9eb92fd5d8b26ee29205e9dccc3a5e7b01157d67276334470935401ff798f5aedce07f520be53bfd0e9faada3e63295a1e8b3e1419f8a
-DIST android-sdk_5303910_linux-x86.zip 815121172 BLAKE2B bf625dae798b08276dc0e3a39bc9fd36b38293a47e2dd2186e085710baea262c6684a993ca97319342227a9e682eb1f1c027f24b19eff24a43206959039df373 SHA512 9ba5ddfea5ca07d4df4d8dad052e9b2235d37d2b3e87dec8b9b911501e07cc932523734b225db0baab0c018cf060fd47f6b9a87cd90a04e41b176fc713ac55f0
diff --git a/chromeos-base/android-sdk/android-sdk-5303910-r4.ebuild b/chromeos-base/android-sdk/android-sdk-5303910-r4.ebuild
deleted file mode 120000
index 580e574..0000000
--- a/chromeos-base/android-sdk/android-sdk-5303910-r4.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-android-sdk-5303910.ebuild
\ No newline at end of file
diff --git a/chromeos-base/android-sdk/android-sdk-5303910.ebuild b/chromeos-base/android-sdk/android-sdk-5303910.ebuild
deleted file mode 100644
index 55b369c..0000000
--- a/chromeos-base/android-sdk/android-sdk-5303910.ebuild
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright 2020 Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-DESCRIPTION="Android SDK"
-HOMEPAGE="http://developer.android.com"
-
-# NOTE: Due to possible licensing issues, only use AOSP SDK:
-# https://ci.android.com/builds/branches/aosp-sdk-release/grid?
-SRC_URI="https://ci.android.com/builds/submitted/${PV}/sdk/latest/android-sdk_${PV}_linux-x86.zip
-	https://ci.android.com/builds/submitted/4953408/sdk/latest/sdk-repo-linux-platforms-4953408.zip"
-
-LICENSE="
-	Apache-2.0
-	BSD
-	BSD-2
-	BSD-4
-	CPL-1.0
-	EPL-1.0
-	FTL
-	GPL-2
-	IJG
-	ISC
-	icu
-	LGPL-2
-	LGPL-2.1
-	libpng
-	MIT
-	MPL-1.1
-	openssl
-	SGI-B-2.0
-	UoI-NCSA
-	ZLIB
-	W3C
-	"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-RESTRICT="strip"
-
-DEPEND=""
-# CTS P depends on Java 8 or 9. CTS R depends on Java 9 or later.
-# Include both JDK8 and JDK11 in the chroot.
-RDEPEND="
-	<=virtual/jdk-9
-	>=virtual/jdk-9
-	>=dev-java/ant-core-1.6.5
-	sys-libs/zlib"
-BDEPEND=""
-
-ANDROID_SDK_DIR="/opt/android-sdk"
-
-S="${WORKDIR}"
-
-src_install() {
-	# NOTE: The two downloaded zips use "android-Q" for their directories.
-	# It seems that they take the name of the latest Android SDK at the
-	# moment it was built, even if they were compiled from a different
-	# branch. See build.prop: notice conflict between SDK version and name:
-	# https://ci.android.com/builds/submitted/5303910/sdk/latest/view/build.prop
-
-	# Zips to be installed:
-	#  - Android SDK 28: both build-tools and platforms
-	#  - Android SDK 27: only platforms
-
-	# TODO(ricardoq): Rename "android-Q" to "android-28" (and not 29!)
-	insinto "${ANDROID_SDK_DIR}"
-	doins -r ${PN}_${PV}_linux-x86/platforms
-	insopts "-m0755"
-	doins -r ${PN}_${PV}_linux-x86/build-tools
-
-	# In addition to SDK P, some APKs need the older android-platform-27
-	# to compile correctly.
-	insinto "${ANDROID_SDK_DIR}/platforms"
-
-	# Rename directory to match correct version. Zipped directory has the
-	# wrong name.
-	# Also use numbers instead of letters to honor the convention used
-	# by Android Studio.
-	mv "${WORKDIR}/android-Q" "${WORKDIR}/android-27"
-
-	doins -r "android-27"
-}
diff --git a/chromeos-base/android-sdk/android-sdk-6877874-r1.ebuild b/chromeos-base/android-sdk/android-sdk-6877874-r1.ebuild
new file mode 120000
index 0000000..b8b151c
--- /dev/null
+++ b/chromeos-base/android-sdk/android-sdk-6877874-r1.ebuild
@@ -0,0 +1 @@
+android-sdk-6877874.ebuild
\ No newline at end of file
diff --git a/chromeos-base/android-sdk/android-sdk-6877874.ebuild b/chromeos-base/android-sdk/android-sdk-6877874.ebuild
new file mode 100644
index 0000000..630ec40
--- /dev/null
+++ b/chromeos-base/android-sdk/android-sdk-6877874.ebuild
@@ -0,0 +1,65 @@
+# Copyright 2020 Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Android SDK"
+HOMEPAGE="http://developer.android.com"
+
+# NOTE: Due to possible licensing issues, only use AOSP SDK:
+# https://ci.android.com/builds/branches/aosp-sdk-release/grid?
+SRC_URI="https://ci.android.com/builds/submitted/${PV}/sdk/latest/android-sdk_${PV}_linux-x86.zip
+	https://ci.android.com/builds/submitted/4953408/sdk/latest/sdk-repo-linux-platforms-4953408.zip"
+
+LICENSE="
+	AOSP-SDK
+	"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+RESTRICT="strip"
+
+DEPEND=""
+# CTS P depends on Java 8 or 9. CTS R depends on Java 9 or later.
+# Include both JDK8 and JDK11 in the chroot.
+RDEPEND="
+	<=virtual/jdk-9
+	>=virtual/jdk-9
+	>=dev-java/ant-core-1.6.5
+	sys-libs/zlib"
+BDEPEND=""
+
+ANDROID_SDK_DIR="/opt/android-sdk"
+
+S="${WORKDIR}"
+
+src_install() {
+	# NOTE: The two downloaded zips use "android-S" for their directories.
+	# It seems that they take the name of the latest Android SDK at the
+	# moment it was built, even if they were compiled from a different
+	# branch. See build.prop: notice conflict between SDK version and name:
+	# https://ci.android.com/builds/submitted/5303910/sdk/latest/view/build.prop
+
+	# Zips to be installed:
+	#  - Android SDK 30: both build-tools and platforms
+	#  - Android SDK 27: only platforms
+
+	# License file for platforms and build-tools is in licenses/AOSP-SDK
+	# TODO(ricardoq): Rename "android-S" to "android-30"
+	insinto "${ANDROID_SDK_DIR}"
+	doins -r ${PN}_${PV}_linux-x86/platforms
+	insopts "-m0755"
+	doins -r ${PN}_${PV}_linux-x86/build-tools
+
+	# In addition to SDK P, some APKs need the older android-platform-27
+	# to compile correctly.
+	insinto "${ANDROID_SDK_DIR}/platforms"
+
+	# Rename directory to match correct version. Zipped directory has the
+	# wrong name.
+	# Also use numbers instead of letters to honor the convention used
+	# by Android Studio.
+	mv "${WORKDIR}/android-Q" "${WORKDIR}/android-27"
+
+	doins -r "android-27"
+}
diff --git a/chromeos-base/android-sdk/conbine-notice.sh b/chromeos-base/android-sdk/conbine-notice.sh
new file mode 100755
index 0000000..9c7f1ef
--- /dev/null
+++ b/chromeos-base/android-sdk/conbine-notice.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+# Copyright 2021 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.
+
+# USAGE
+# Download android-sdk from ab/aosp-sdk-release and expand.
+# First Argument: path to the expanded android-sdk
+# Second Argument: path to the lisence file ex) licenses/AOSP-SDK
+
+source_dir=$1
+target_file=$2
+
+set -o pipefail
+
+# Combine license files in the directories which we install.
+find "${source_dir}"/platforms/ "${source_dir}"/build-tools/ '(' -name 'NOTICE*' -o -name '*LICENSE*' ')' -print0 | \
+  xargs -0 sha256sum | \
+  sort | \
+  uniq -w 64 | \
+  cut -b67- | \
+  sort -z | \
+  xargs -d'\n' cat > "${target_file}"
diff --git a/chromeos-base/aosp-frameworks-ml-nn-vts/OWNERS b/chromeos-base/aosp-frameworks-ml-nn-vts/OWNERS
new file mode 100644
index 0000000..6ceece7
--- /dev/null
+++ b/chromeos-base/aosp-frameworks-ml-nn-vts/OWNERS
@@ -0,0 +1,2 @@
+jmpollock@google.com
+slangley@google.com
diff --git a/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-0.0.1-r27.ebuild b/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-0.0.1-r27.ebuild
new file mode 100644
index 0000000..dcafc82
--- /dev/null
+++ b/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-0.0.1-r27.ebuild
@@ -0,0 +1,74 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("5dfd9e4dfe21b6eac6ed7d243bbdaa5e8864715f" "707d4b9ddbbec5c5d0efe448b4a98d1bf39d3210" "fd0a01eb09dcc34f1a42e5c0f6ebf0f384fd9abd")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "4c0cc8d00d5d746519a55a17088ff6173845837c" "7a08574830b90bb538e281ba8c2240d2826fefb9")
+inherit cros-constants
+
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform2"
+	"aosp/platform/frameworks/ml"
+	"aosp/platform/hardware/interfaces/neuralnetworks"
+)
+CROS_WORKON_REPO=(
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+)
+CROS_WORKON_EGIT_BRANCH=(
+	"main"
+	"master"
+	"master"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform2"
+	"aosp/frameworks/ml"
+	"aosp/hardware/interfaces/neuralnetworks"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/platform2"
+	"${S}/platform2/aosp/frameworks/ml"
+	"${S}/platform2/aosp/hardware/interfaces/neuralnetworks"
+)
+CROS_WORKON_SUBTREE=(
+	"common-mk .gn"
+	"nn"
+	""
+)
+
+PLATFORM_SUBDIR="aosp/frameworks/ml/nn/chromeos/tests"
+
+inherit cros-workon platform flag-o-matic
+
+DESCRIPTION="HAL / Driver Vendor and Compatability Test Tools for NNAPI"
+HOMEPAGE="https://developer.android.com/ndk/guides/neuralnetworks"
+
+LICENSE="BSD-Google Apache-2.0"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/aosp-frameworks-ml-nn:=
+"
+
+DEPEND="
+	${RDEPEND}
+"
+
+src_configure() {
+	if use x86 || use amd64; then
+		append-cppflags "-D_Float16=__fp16"
+		append-cxxflags "-Xclang -fnative-half-type"
+		append-cxxflags "-Xclang -fallow-half-arguments-and-returns"
+	fi
+	platform_src_configure
+}
+
+src_install() {
+	dobin "${OUT}/cros_nnapi_vts_1_0"
+	dobin "${OUT}/cros_nnapi_vts_1_1"
+	dobin "${OUT}/cros_nnapi_vts_1_2"
+	dobin "${OUT}/cros_nnapi_vts_1_3"
+	dobin "${OUT}/cros_nnapi_cts"
+}
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
new file mode 100644
index 0000000..2d7848e9
--- /dev/null
+++ b/chromeos-base/aosp-frameworks-ml-nn-vts/aosp-frameworks-ml-nn-vts-9999.ebuild
@@ -0,0 +1,72 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cros-constants
+
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform2"
+	"aosp/platform/frameworks/ml"
+	"aosp/platform/hardware/interfaces/neuralnetworks"
+)
+CROS_WORKON_REPO=(
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+)
+CROS_WORKON_EGIT_BRANCH=(
+	"main"
+	"master"
+	"master"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform2"
+	"aosp/frameworks/ml"
+	"aosp/hardware/interfaces/neuralnetworks"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/platform2"
+	"${S}/platform2/aosp/frameworks/ml"
+	"${S}/platform2/aosp/hardware/interfaces/neuralnetworks"
+)
+CROS_WORKON_SUBTREE=(
+	"common-mk .gn"
+	"nn"
+	""
+)
+
+PLATFORM_SUBDIR="aosp/frameworks/ml/nn/chromeos/tests"
+
+inherit cros-workon platform flag-o-matic
+
+DESCRIPTION="HAL / Driver Vendor and Compatability Test Tools for NNAPI"
+HOMEPAGE="https://developer.android.com/ndk/guides/neuralnetworks"
+
+LICENSE="BSD-Google Apache-2.0"
+KEYWORDS="~*"
+
+RDEPEND="
+	chromeos-base/aosp-frameworks-ml-nn:=
+"
+
+DEPEND="
+	${RDEPEND}
+"
+
+src_configure() {
+	if use x86 || use amd64; then
+		append-cppflags "-D_Float16=__fp16"
+		append-cxxflags "-Xclang -fnative-half-type"
+		append-cxxflags "-Xclang -fallow-half-arguments-and-returns"
+	fi
+	platform_src_configure
+}
+
+src_install() {
+	dobin "${OUT}/cros_nnapi_vts_1_0"
+	dobin "${OUT}/cros_nnapi_vts_1_1"
+	dobin "${OUT}/cros_nnapi_vts_1_2"
+	dobin "${OUT}/cros_nnapi_vts_1_3"
+	dobin "${OUT}/cros_nnapi_cts"
+}
diff --git a/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r158.ebuild b/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r158.ebuild
deleted file mode 100644
index be41405..0000000
--- a/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r158.ebuild
+++ /dev/null
@@ -1,192 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("9ebed9f9a378f5e35dc85a70cc07504e337be5cb" "258763b7673d899b87820166a3a9543ad414d428" "fd0a01eb09dcc34f1a42e5c0f6ebf0f384fd9abd")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "fa7b54dd4d1d381945bb11e0d349aedf3e178cde" "7a08574830b90bb538e281ba8c2240d2826fefb9")
-inherit cros-constants
-
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform2"
-	"aosp/platform/frameworks/ml"
-	"aosp/platform/hardware/interfaces/neuralnetworks"
-)
-CROS_WORKON_REPO=(
-	"${CROS_GIT_HOST_URL}"
-	"${CROS_GIT_HOST_URL}"
-	"${CROS_GIT_HOST_URL}"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform2"
-	"aosp/frameworks/ml"
-	"aosp/hardware/interfaces/neuralnetworks"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}/platform2"
-	"${S}/platform2/aosp/frameworks/ml"
-	"${S}/platform2/aosp/hardware/interfaces/neuralnetworks"
-)
-CROS_WORKON_SUBTREE=(
-	"common-mk .gn"
-	"nn"
-	""
-)
-
-PLATFORM_SUBDIR="aosp/frameworks/ml/nn"
-
-inherit cros-workon platform flag-o-matic
-
-DESCRIPTION="Chrome OS port of the Android Neural Network API"
-HOMEPAGE="https://developer.android.com/ndk/guides/neuralnetworks"
-
-LICENSE="BSD-Google Apache-2.0"
-KEYWORDS="*"
-IUSE="cpu_flags_x86_avx2 vendor-nnhal minimal-driver nnapi_driver_tests"
-
-RDEPEND="
-	chromeos-base/nnapi:=
-	dev-libs/openssl:=
-	sci-libs/tensorflow:=
-"
-
-DEPEND="
-	${RDEPEND}
-	dev-libs/libtextclassifier
-	>=dev-cpp/eigen-3
-"
-
-cros-debug-add-NDEBUG() {
-	# Don't set NDEBUG, overriding from cros-debug eclass.
-	# If this is set, tests will fail and is also explicitly checked in
-	# runtime/test/RequireDebug.cpp
-	use cros-debug || echo "Not doing append-cppflags -NDEBUG";
-}
-
-src_configure() {
-	if use x86 || use amd64; then
-		append-cppflags "-D_Float16=__fp16"
-		append-cxxflags "-Xclang -fnative-half-type"
-		append-cxxflags "-Xclang -fallow-half-arguments-and-returns"
-	fi
-	if use minimal-driver; then
-		append-cppflags "-DNNAPI_USE_MINIMAL_DRIVER"
-	fi
-	platform_src_configure
-}
-
-platform_pkg_test() {
-	local tests=(
-		chromeos common driver_cache runtime runtime_generated
-	)
-
-	# When running in qemu, these tests freeze the emulator when hitting
-	# EventFlag::wake from libfmq. The error printed is:
-	# Error in event flag wake attempt: Function not implemented
-	# This is a known issue, see:
-	# https://chromium.googlesource.com/chromiumos/docs/+/master/testing/running_unit_tests.md#caveats
-	# TODO(http://crbug.com/1117470): tracking bug for qemu fix
-	local qemu_gtest_excl_filter="-"
-	qemu_gtest_excl_filter+="Flavor/ExecutionTest10.Wait/*:"
-	qemu_gtest_excl_filter+="Flavor/ExecutionTest11.Wait/*:"
-	qemu_gtest_excl_filter+="Flavor/ExecutionTest12.Wait/*:"
-	qemu_gtest_excl_filter+="Flavor/ExecutionTest13.Wait/*:"
-	qemu_gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/*:"
-	qemu_gtest_excl_filter+="Unfenced/TimingTest.Test/12:"
-	qemu_gtest_excl_filter+="Unfenced/TimingTest.Test/15:"
-	qemu_gtest_excl_filter+="Unfenced/TimingTest.Test/18:"
-	qemu_gtest_excl_filter+="Unfenced/TimingTest.Test/21:"
-	qemu_gtest_excl_filter+="Unfenced/TimingTest.Test/24:"
-	qemu_gtest_excl_filter+="ValidationTestBurst.BurstComputeBadCompilation:"
-	qemu_gtest_excl_filter+="ValidationTestBurst.BurstComputeConcurrent:"
-	qemu_gtest_excl_filter+="ValidationTestBurst.BurstComputeDifferentCompilations:"
-	qemu_gtest_excl_filter+="ValidationTestBurst.BurstComputeNull:"
-	qemu_gtest_excl_filter+="ValidationTestBurst.FreeBurstBeforeMemory:"
-	qemu_gtest_excl_filter+="ValidationTestBurst.FreeMemoryBeforeBurst:"
-	qemu_gtest_excl_filter+="ValidationTestCompilation.ExecutionUsability:"
-	qemu_gtest_excl_filter+="ValidationTestCompilationForDevices_1.ExecutionTiming:"
-	qemu_gtest_excl_filter+="ValidationTestCompilationForDevices_1.ExecutionSetTimeout:"
-	qemu_gtest_excl_filter+="ValidationTestCompilationForDevices_1.ExecutionSetTimeoutMaximum:"
-
-
-	local gtest_excl_filter="-"
-	if use asan; then
-		# Some tests do not correctly clean up the Execution object and it is
-		# left 'in-flight', which gets ignored by ANeuralNetworksExecution_free.
-		# See b/161844605.
-		# Look for 'passed an in-flight ANeuralNetworksExecution' in log output
-		gtest_excl_filter+="Fenced/TimingTest.Test/2:"
-		gtest_excl_filter+="Fenced/TimingTest.Test/19:"
-		gtest_excl_filter+="Flavor/ExecutionTest10.Wait/1:"
-		gtest_excl_filter+="Flavor/ExecutionTest10.Wait/2:"
-		gtest_excl_filter+="Flavor/ExecutionTest10.Wait/4:"
-		gtest_excl_filter+="Flavor/ExecutionTest11.Wait/1:"
-		gtest_excl_filter+="Flavor/ExecutionTest11.Wait/2:"
-		gtest_excl_filter+="Flavor/ExecutionTest11.Wait/4:"
-		gtest_excl_filter+="Flavor/ExecutionTest12.Wait/1:"
-		gtest_excl_filter+="Flavor/ExecutionTest12.Wait/2:"
-		gtest_excl_filter+="Flavor/ExecutionTest12.Wait/4:"
-		gtest_excl_filter+="Flavor/ExecutionTest13.Wait/1:"
-		gtest_excl_filter+="Flavor/ExecutionTest13.Wait/2:"
-		gtest_excl_filter+="Flavor/ExecutionTest13.Wait/4:"
-		gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/1:"
-		gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/2:"
-		gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/4:"
-
-		# TODO(b/163081732): Fix tests that freeze in asan (jmpollock)
-		# Now we have a situation where these tests are hanging in asan, but I can't
-		# reproduce this locally (Flavor/ExecutionTest13.Wait/0).
-		# The duplication to the above is intentional, as fixing this issue will not
-		# fix the one above.
-		gtest_excl_filter+="Flavor/ExecutionTest10.Wait/*:"
-		gtest_excl_filter+="Flavor/ExecutionTest11.Wait/*:"
-		gtest_excl_filter+="Flavor/ExecutionTest12.Wait/*:"
-		gtest_excl_filter+="Flavor/ExecutionTest13.Wait/*:"
-		gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/*:"
-
-		# This is due to a leak caused when copying the memory pools
-		# into the request object in this test. lsan_suppressions doesn't
-		# work due to the lack of /usr/bin/llvm-symbolizer, so just exclude.
-		gtest_excl_filter+="ComplianceTest.DeviceMemory:"
-		gtest_excl_filter+="ValidateRequestTest.ScalarOutput:"
-		gtest_excl_filter+="ValidateRequestTest.UnknownOutputRank:"
-
-		# Disable asan container overflow checks that are coming from gtest,
-		# not our code. Strangely this only started happening once we made
-		# common a shared library.
-		# See: https://crbug.com/1067977, https://crbug.com/1069722
-		# https://github.com/google/sanitizers/wiki/AddressSanitizerContainerOverflow#false-positives
-		export ASAN_OPTIONS+=":detect_container_overflow=0:"
-	fi
-
-	local test_target
-	for test_target in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_target}_testrunner" "0" "${gtest_excl_filter}" "${qemu_gtest_excl_filter}"
-	done
-}
-
-src_install() {
-	einfo "Installing runtime & common Headers."
-	insinto /usr/include/aosp/frameworks/ml/nn/common
-	doins -r "${S}"/common/include
-	insinto /usr/include/aosp/frameworks/ml/nn/runtime
-	doins -r "${S}"/runtime/include
-
-	einfo "Installing libs."
-	dolib.so "${OUT}/lib/libneuralnetworks.so"
-	dolib.so "${OUT}/lib/libnn-common.so"
-
-	if ! use vendor-nnhal ; then
-		einfo "Installing reference vendor hal."
-		dolib.so "${OUT}/lib/libvendor-nn-hal.so"
-	fi
-
-	if use nnapi_driver_tests; then
-		einfo "Installing hal driver tests."
-		dobin "${OUT}/cros_nnapi_vts_1_0"
-		dobin "${OUT}/cros_nnapi_vts_1_1"
-		dobin "${OUT}/cros_nnapi_vts_1_2"
-		dobin "${OUT}/cros_nnapi_vts_1_3"
-		dobin "${OUT}/cros_nnapi_cts"
-	fi
-}
diff --git a/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r199.ebuild b/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r199.ebuild
new file mode 100644
index 0000000..a246db3
--- /dev/null
+++ b/chromeos-base/aosp-frameworks-ml-nn/aosp-frameworks-ml-nn-0.0.1-r199.ebuild
@@ -0,0 +1,174 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("5dfd9e4dfe21b6eac6ed7d243bbdaa5e8864715f" "707d4b9ddbbec5c5d0efe448b4a98d1bf39d3210" "fd0a01eb09dcc34f1a42e5c0f6ebf0f384fd9abd")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "4c0cc8d00d5d746519a55a17088ff6173845837c" "7a08574830b90bb538e281ba8c2240d2826fefb9")
+inherit cros-constants
+
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform2"
+	"aosp/platform/frameworks/ml"
+	"aosp/platform/hardware/interfaces/neuralnetworks"
+)
+CROS_WORKON_REPO=(
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform2"
+	"aosp/frameworks/ml"
+	"aosp/hardware/interfaces/neuralnetworks"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/platform2"
+	"${S}/platform2/aosp/frameworks/ml"
+	"${S}/platform2/aosp/hardware/interfaces/neuralnetworks"
+)
+CROS_WORKON_SUBTREE=(
+	"common-mk .gn"
+	"nn"
+	""
+)
+
+PLATFORM_SUBDIR="aosp/frameworks/ml/nn"
+
+inherit cros-workon platform flag-o-matic
+
+DESCRIPTION="Chrome OS port of the Android Neural Network API"
+HOMEPAGE="https://developer.android.com/ndk/guides/neuralnetworks"
+
+LICENSE="BSD-Google Apache-2.0"
+KEYWORDS="*"
+IUSE="cpu_flags_x86_avx2 vendor-nnhal minimal-driver"
+
+RDEPEND="
+	chromeos-base/nnapi:=
+	dev-libs/openssl:=
+	sci-libs/tensorflow:=
+"
+
+DEPEND="
+	${RDEPEND}
+	dev-libs/libtextclassifier
+	>=dev-cpp/eigen-3
+"
+
+src_configure() {
+	if use x86 || use amd64; then
+		append-cppflags "-D_Float16=__fp16"
+		append-cxxflags "-Xclang -fnative-half-type"
+		append-cxxflags "-Xclang -fallow-half-arguments-and-returns"
+	fi
+	if use minimal-driver; then
+		append-cppflags "-DNNAPI_USE_MINIMAL_DRIVER"
+	fi
+	platform_src_configure
+}
+
+platform_pkg_test() {
+	local tests=(
+		chromeos common runtime runtime_generated
+	)
+	local gtest_excl_filter="-"
+	local qemu_gtest_excl_filter="-"
+
+	# These tests fail with Tensorflow 2.5.0. Don't want to block
+	# the uprev on that, since nothing in production is using this
+	# package yet. Tracking this test failure in following bug.
+	# TODO: b/189803299
+	gtest_excl_filter+="TestGenerated/*.Test/svdf_bias_present*:"
+	qemu_gtest_excl_filter+="TestGenerated/*.Test/svdf_bias_present*:"
+
+	# When running in qemu, these tests freeze the emulator when hitting
+	# EventFlag::wake from libfmq. The error printed is:
+	# Error in event flag wake attempt: Function not implemented
+	# This is a known issue, see:
+	# https://chromium.googlesource.com/chromiumos/docs/+/master/testing/running_unit_tests.md#caveats
+	# TODO(http://crbug.com/1117470): tracking bug for qemu fix
+	qemu_gtest_excl_filter+="Flavor/ExecutionTest10.Wait/*:"
+	qemu_gtest_excl_filter+="Flavor/ExecutionTest11.Wait/*:"
+	qemu_gtest_excl_filter+="Flavor/ExecutionTest12.Wait/*:"
+	qemu_gtest_excl_filter+="Flavor/ExecutionTest13.Wait/*:"
+	qemu_gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/*:"
+	qemu_gtest_excl_filter+="Unfenced/TimingTest.Test/12:"
+	qemu_gtest_excl_filter+="Unfenced/TimingTest.Test/15:"
+	qemu_gtest_excl_filter+="Unfenced/TimingTest.Test/18:"
+	qemu_gtest_excl_filter+="Unfenced/TimingTest.Test/21:"
+	qemu_gtest_excl_filter+="Unfenced/TimingTest.Test/24:"
+	qemu_gtest_excl_filter+="ValidationTestBurst.BurstComputeBadCompilation:"
+	qemu_gtest_excl_filter+="ValidationTestBurst.BurstComputeConcurrent:"
+	qemu_gtest_excl_filter+="ValidationTestBurst.BurstComputeDifferentCompilations:"
+	qemu_gtest_excl_filter+="ValidationTestBurst.BurstComputeNull:"
+	qemu_gtest_excl_filter+="ValidationTestBurst.FreeBurstBeforeMemory:"
+	qemu_gtest_excl_filter+="ValidationTestBurst.FreeMemoryBeforeBurst:"
+	qemu_gtest_excl_filter+="ValidationTestCompilation.ExecutionUsability:"
+	qemu_gtest_excl_filter+="ValidationTestCompilationForDevices_1.ExecutionTiming:"
+	qemu_gtest_excl_filter+="ValidationTestCompilationForDevices_1.ExecutionSetTimeout:"
+	qemu_gtest_excl_filter+="ValidationTestCompilationForDevices_1.ExecutionSetTimeoutMaximum:"
+
+	if use asan; then
+		# Some tests do not correctly clean up the Execution object and it is
+		# left 'in-flight', which gets ignored by ANeuralNetworksExecution_free.
+		# See b/161844605.
+		# Look for 'passed an in-flight ANeuralNetworksExecution' in log output
+		gtest_excl_filter+="Fenced/TimingTest.Test/2:"
+		gtest_excl_filter+="Fenced/TimingTest.Test/19:"
+		gtest_excl_filter+="Flavor/ExecutionTest10.Wait/1:"
+		gtest_excl_filter+="Flavor/ExecutionTest10.Wait/2:"
+		gtest_excl_filter+="Flavor/ExecutionTest10.Wait/4:"
+		gtest_excl_filter+="Flavor/ExecutionTest11.Wait/1:"
+		gtest_excl_filter+="Flavor/ExecutionTest11.Wait/2:"
+		gtest_excl_filter+="Flavor/ExecutionTest11.Wait/4:"
+		gtest_excl_filter+="Flavor/ExecutionTest12.Wait/1:"
+		gtest_excl_filter+="Flavor/ExecutionTest12.Wait/2:"
+		gtest_excl_filter+="Flavor/ExecutionTest12.Wait/4:"
+		gtest_excl_filter+="Flavor/ExecutionTest13.Wait/1:"
+		gtest_excl_filter+="Flavor/ExecutionTest13.Wait/2:"
+		gtest_excl_filter+="Flavor/ExecutionTest13.Wait/4:"
+		gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/1:"
+		gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/2:"
+		gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/4:"
+
+		# This is due to a leak caused when copying the memory pools
+		# into the request object in this test. lsan_suppressions doesn't
+		# work due to the lack of /usr/bin/llvm-symbolizer, so just exclude.
+		gtest_excl_filter+="ComplianceTest.DeviceMemory:"
+		gtest_excl_filter+="ValidateRequestTest.ScalarOutput:"
+		gtest_excl_filter+="ValidateRequestTest.UnknownOutputRank:"
+
+		# Disable asan container overflow checks that are coming from gtest,
+		# not our code. Strangely this only started happening once we made
+		# common a shared library.
+		# See: https://crbug.com/1067977, https://crbug.com/1069722
+		# https://github.com/google/sanitizers/wiki/AddressSanitizerContainerOverflow#false-positives
+		export ASAN_OPTIONS+=":detect_container_overflow=0:"
+	fi
+
+	local test_target
+	for test_target in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_target}_testrunner" "0" "${gtest_excl_filter}" "${qemu_gtest_excl_filter}"
+	done
+}
+
+src_install() {
+	einfo "Installing runtime & common Headers."
+	insinto /usr/include/aosp/frameworks/ml/nn/common
+	doins -r "${S}"/common/include
+	insinto /usr/include/aosp/frameworks/ml/nn/runtime
+	doins -r "${S}"/runtime/include
+	insinto /usr/include/aosp/frameworks/ml/nn/driver/cache
+	doins "${S}"/driver/cache/nnCache/nnCache.h
+	doins "${S}"/driver/cache/BlobCache/BlobCache.h
+
+	einfo "Installing libs."
+	dolib.so "${OUT}/lib/libneuralnetworks.so"
+	dolib.so "${OUT}/lib/libnn-common.so"
+
+	if ! use vendor-nnhal ; then
+		einfo "Installing reference vendor hal."
+		dolib.so "${OUT}/lib/libvendor-nn-hal.so"
+	fi
+}
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 1734780..c5b22c8 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
@@ -40,7 +40,7 @@
 
 LICENSE="BSD-Google Apache-2.0"
 KEYWORDS="~*"
-IUSE="cpu_flags_x86_avx2 vendor-nnhal minimal-driver nnapi_driver_tests"
+IUSE="cpu_flags_x86_avx2 vendor-nnhal minimal-driver"
 
 RDEPEND="
 	chromeos-base/nnapi:=
@@ -54,13 +54,6 @@
 	>=dev-cpp/eigen-3
 "
 
-cros-debug-add-NDEBUG() {
-	# Don't set NDEBUG, overriding from cros-debug eclass.
-	# If this is set, tests will fail and is also explicitly checked in
-	# runtime/test/RequireDebug.cpp
-	use cros-debug || echo "Not doing append-cppflags -NDEBUG";
-}
-
 src_configure() {
 	if use x86 || use amd64; then
 		append-cppflags "-D_Float16=__fp16"
@@ -75,8 +68,17 @@
 
 platform_pkg_test() {
 	local tests=(
-		chromeos common driver_cache runtime runtime_generated
+		chromeos common runtime runtime_generated
 	)
+	local gtest_excl_filter="-"
+	local qemu_gtest_excl_filter="-"
+
+	# These tests fail with Tensorflow 2.5.0. Don't want to block
+	# the uprev on that, since nothing in production is using this
+	# package yet. Tracking this test failure in following bug.
+	# TODO: b/189803299
+	gtest_excl_filter+="TestGenerated/*.Test/svdf_bias_present*:"
+	qemu_gtest_excl_filter+="TestGenerated/*.Test/svdf_bias_present*:"
 
 	# When running in qemu, these tests freeze the emulator when hitting
 	# EventFlag::wake from libfmq. The error printed is:
@@ -84,7 +86,6 @@
 	# This is a known issue, see:
 	# https://chromium.googlesource.com/chromiumos/docs/+/master/testing/running_unit_tests.md#caveats
 	# TODO(http://crbug.com/1117470): tracking bug for qemu fix
-	local qemu_gtest_excl_filter="-"
 	qemu_gtest_excl_filter+="Flavor/ExecutionTest10.Wait/*:"
 	qemu_gtest_excl_filter+="Flavor/ExecutionTest11.Wait/*:"
 	qemu_gtest_excl_filter+="Flavor/ExecutionTest12.Wait/*:"
@@ -106,8 +107,6 @@
 	qemu_gtest_excl_filter+="ValidationTestCompilationForDevices_1.ExecutionSetTimeout:"
 	qemu_gtest_excl_filter+="ValidationTestCompilationForDevices_1.ExecutionSetTimeoutMaximum:"
 
-
-	local gtest_excl_filter="-"
 	if use asan; then
 		# Some tests do not correctly clean up the Execution object and it is
 		# left 'in-flight', which gets ignored by ANeuralNetworksExecution_free.
@@ -131,17 +130,6 @@
 		gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/2:"
 		gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/4:"
 
-		# TODO(b/163081732): Fix tests that freeze in asan (jmpollock)
-		# Now we have a situation where these tests are hanging in asan, but I can't
-		# reproduce this locally (Flavor/ExecutionTest13.Wait/0).
-		# The duplication to the above is intentional, as fixing this issue will not
-		# fix the one above.
-		gtest_excl_filter+="Flavor/ExecutionTest10.Wait/*:"
-		gtest_excl_filter+="Flavor/ExecutionTest11.Wait/*:"
-		gtest_excl_filter+="Flavor/ExecutionTest12.Wait/*:"
-		gtest_excl_filter+="Flavor/ExecutionTest13.Wait/*:"
-		gtest_excl_filter+="IntrospectionFlavor/ExecutionTest13.Wait/*:"
-
 		# This is due to a leak caused when copying the memory pools
 		# into the request object in this test. lsan_suppressions doesn't
 		# work due to the lack of /usr/bin/llvm-symbolizer, so just exclude.
@@ -169,6 +157,9 @@
 	doins -r "${S}"/common/include
 	insinto /usr/include/aosp/frameworks/ml/nn/runtime
 	doins -r "${S}"/runtime/include
+	insinto /usr/include/aosp/frameworks/ml/nn/driver/cache
+	doins "${S}"/driver/cache/nnCache/nnCache.h
+	doins "${S}"/driver/cache/BlobCache/BlobCache.h
 
 	einfo "Installing libs."
 	dolib.so "${OUT}/lib/libneuralnetworks.so"
@@ -178,13 +169,4 @@
 		einfo "Installing reference vendor hal."
 		dolib.so "${OUT}/lib/libvendor-nn-hal.so"
 	fi
-
-	if use nnapi_driver_tests; then
-		einfo "Installing hal driver tests."
-		dobin "${OUT}/cros_nnapi_vts_1_0"
-		dobin "${OUT}/cros_nnapi_vts_1_1"
-		dobin "${OUT}/cros_nnapi_vts_1_2"
-		dobin "${OUT}/cros_nnapi_vts_1_3"
-		dobin "${OUT}/cros_nnapi_cts"
-	fi
 }
diff --git a/chromeos-base/arc-adbd/arc-adbd-0.0.1-r340.ebuild b/chromeos-base/arc-adbd/arc-adbd-0.0.1-r340.ebuild
deleted file mode 100644
index 595ad87..0000000
--- a/chromeos-base/arc-adbd/arc-adbd-0.0.1-r340.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("a2c45ab60a41214142130b1d1051df94cac1e37a" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="arc/adbd common-mk .gn"
-
-PLATFORM_SUBDIR="arc/adbd"
-
-inherit cros-workon platform
-
-DESCRIPTION="Container to run Android's adbd proxy."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/adbd"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+seccomp fuzzer arcvm"
-
-RDEPEND="
-	chromeos-base/minijail
-"
-
-src_install() {
-	insinto /etc/init
-	if use arcvm; then
-		doins init/arcvm-adbd.conf
-	else
-		doins init/arc-adbd.conf
-	fi
-
-	insinto /usr/share/policy
-	use seccomp && newins "seccomp/arc$(usex arcvm vm '')-adbd-${ARCH}.policy" "arc$(usex arcvm vm '')-adbd-seccomp.policy"
-
-	dosbin "${OUT}/arc-adbd"
-
-	# Install fuzzers.
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc-adbd-setup-config-fs-fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc-adbd-setup-function-fs-fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc-adbd-create-pipe-fuzzer
-}
diff --git a/chromeos-base/arc-adbd/arc-adbd-0.0.1-r368.ebuild b/chromeos-base/arc-adbd/arc-adbd-0.0.1-r368.ebuild
new file mode 100644
index 0000000..6370817
--- /dev/null
+++ b/chromeos-base/arc-adbd/arc-adbd-0.0.1-r368.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="7cc682322dc60e43d949f6055d5b3885536bea07"
+CROS_WORKON_TREE=("d5666e714c30f8f7921e63e91f60431992f31333" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="arc/adbd common-mk .gn"
+
+PLATFORM_SUBDIR="arc/adbd"
+
+inherit cros-workon platform
+
+DESCRIPTION="Container to run Android's adbd proxy."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/adbd"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+seccomp fuzzer arcvm"
+
+RDEPEND="
+	chromeos-base/minijail
+"
+
+src_install() {
+	insinto /etc/init
+	if use arcvm; then
+		doins init/arcvm-adbd.conf
+		insinto /etc/dbus-1/system.d
+		doins init/dbus-1/ArcVmAdbd.conf
+	else
+		doins init/arc-adbd.conf
+	fi
+
+	insinto /usr/share/policy
+	use seccomp && newins "seccomp/arc$(usex arcvm vm '')-adbd-${ARCH}.policy" "arc$(usex arcvm vm '')-adbd-seccomp.policy"
+
+	dosbin "${OUT}/arc-adbd"
+
+	# Install fuzzers.
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc-adbd-setup-config-fs-fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc-adbd-setup-function-fs-fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc-adbd-create-pipe-fuzzer
+}
diff --git a/chromeos-base/arc-adbd/arc-adbd-9999.ebuild b/chromeos-base/arc-adbd/arc-adbd-9999.ebuild
index 2c08141..acd2eea6 100644
--- a/chromeos-base/arc-adbd/arc-adbd-9999.ebuild
+++ b/chromeos-base/arc-adbd/arc-adbd-9999.ebuild
@@ -28,6 +28,8 @@
 	insinto /etc/init
 	if use arcvm; then
 		doins init/arcvm-adbd.conf
+		insinto /etc/dbus-1/system.d
+		doins init/dbus-1/ArcVmAdbd.conf
 	else
 		doins init/arc-adbd.conf
 	fi
diff --git a/chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r346.ebuild b/chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r346.ebuild
deleted file mode 100644
index 042a1f7..0000000
--- a/chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r346.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e79a39f8f3a26e740eca5db95629cfb2e5d434aa" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/apk-cache .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="arc/apk-cache"
-
-inherit cros-workon platform
-
-DESCRIPTION="Maintains APK cache in ARC."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/apk-cache"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+seccomp"
-
-RDEPEND="
-	chromeos-base/minijail
-	dev-db/sqlite:=
-"
-
-DEPEND="
-	dev-db/sqlite:=
-"
-
-src_install() {
-	insinto /etc/init
-	doins init/apk-cache-cleaner.conf
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	use seccomp && newins \
-		"seccomp/apk-cache-cleaner-seccomp-${ARCH}.policy" \
-		apk-cache-cleaner-seccomp.policy
-
-	dosbin "${OUT}/apk-cache-cleaner"
-	dobin  "${OUT}/apk-cache-ctl"
-	dosbin apk-cache-cleaner-jailed
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/apk-cache-cleaner_testrunner"
-	platform_test "run" "${OUT}/apk-cache-ctl_testrunner"
-}
diff --git a/chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r374.ebuild b/chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r374.ebuild
new file mode 100644
index 0000000..fd2b92b
--- /dev/null
+++ b/chromeos-base/arc-apk-cache/arc-apk-cache-0.0.1-r374.ebuild
@@ -0,0 +1,53 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "4c6e571afb4a8fe4d876184e2d85fe856c411540" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/apk-cache .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="arc/apk-cache"
+
+inherit cros-workon platform
+
+DESCRIPTION="Maintains APK cache in ARC."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/apk-cache"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+seccomp"
+
+RDEPEND="
+	chromeos-base/minijail
+	dev-db/sqlite:=
+"
+
+DEPEND="
+	dev-db/sqlite:=
+"
+
+src_install() {
+	insinto /etc/init
+	doins init/apk-cache-cleaner.conf
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	use seccomp && newins \
+		"seccomp/apk-cache-cleaner-seccomp-${ARCH}.policy" \
+		apk-cache-cleaner-seccomp.policy
+
+	dosbin "${OUT}/apk-cache-cleaner"
+	dobin  "${OUT}/apk-cache-ctl"
+	dosbin apk-cache-cleaner-jailed
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/apk-cache-cleaner_testrunner"
+	platform_test "run" "${OUT}/apk-cache-ctl_testrunner"
+}
diff --git a/chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r273.ebuild b/chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r273.ebuild
deleted file mode 100644
index 68da338..0000000
--- a/chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r273.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "870cb50e86dd81c388ef1d394f6a1c290dfe726d" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/container/appfuse .gn"
-
-PLATFORM_SUBDIR="arc/container/appfuse"
-
-inherit cros-workon platform user
-
-DESCRIPTION="D-Bus service to provide ARC Appfuse"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/appfuse"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="
-	sys-apps/dbus:=
-	sys-fs/fuse:=
-"
-
-DEPEND="${RDEPEND}
-	chromeos-base/system_api:=
-"
-
-BDEPEND="
-	virtual/pkgconfig
-"
-
-src_install() {
-	platform_install
-}
-
-pkg_preinst() {
-	enewuser "arc-appfuse-provider"
-	enewgroup "arc-appfuse-provider"
-}
-
-platform_pkg_test() {
-	platform test_all
-}
diff --git a/chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r307.ebuild b/chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r307.ebuild
new file mode 100644
index 0000000..f03a11e
--- /dev/null
+++ b/chromeos-base/arc-appfuse/arc-appfuse-0.0.1-r307.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "ac2c9f71de71bb13b6d64a1245a8ea072da49f28" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/container/appfuse .gn"
+
+PLATFORM_SUBDIR="arc/container/appfuse"
+
+inherit cros-workon platform user
+
+DESCRIPTION="D-Bus service to provide ARC Appfuse"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/appfuse"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="
+	sys-apps/dbus:=
+	sys-fs/fuse:=
+"
+
+DEPEND="${RDEPEND}
+	chromeos-base/system_api:=
+"
+
+BDEPEND="
+	virtual/pkgconfig
+"
+
+src_install() {
+	platform_install
+}
+
+pkg_preinst() {
+	enewuser "arc-appfuse-provider"
+	enewgroup "arc-appfuse-provider"
+}
+
+platform_pkg_test() {
+	platform test_all
+}
diff --git a/chromeos-base/arc-base/arc-base-0.0.1-r368.ebuild b/chromeos-base/arc-base/arc-base-0.0.1-r368.ebuild
deleted file mode 100644
index 6063c4d..0000000
--- a/chromeos-base/arc-base/arc-base-0.0.1-r368.ebuild
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "9fc9c94a2d45e1fa0d13e8eab0e41814a9cd8c42" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/container/bundle .gn"
-
-inherit cros-workon user
-
-DESCRIPTION="Container to run Android."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/bundle"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-IUSE="
-	arcpp
-	arcvm
-	"
-
-REQUIRED_USE="|| ( arcpp arcvm )"
-
-RDEPEND="!<chromeos-base/chromeos-cheets-scripts-0.0.3"
-DEPEND="${RDEPEND}"
-
-CONTAINER_ROOTFS="/opt/google/containers/android/rootfs"
-
-src_install() {
-	if use arcpp; then
-		insinto /opt/google/containers/android
-		doins arc/container/bundle/pi/config.json
-
-		# Install exception file for FIFO blocking policy on stateful partition.
-		insinto /usr/share/cros/startup/fifo_exceptions
-		doins arc/container/bundle/arc-fifo-exceptions.txt
-
-		# Install exception file for symlink blocking policy on stateful partition.
-		insinto /usr/share/cros/startup/symlink_exceptions
-		doins arc/container/bundle/arc-symlink-exceptions.txt
-	fi
-}
-
-pkg_preinst() {
-	# ARCVM also needs these users on the host side for proper ugid remapping.
-	enewuser "wayland"
-	enewgroup "wayland"
-	enewuser "arc-bridge"
-	enewgroup "arc-bridge"
-	enewuser "android-root"
-	enewgroup "android-root"
-	enewgroup "arc-sensor"
-	enewgroup "android-everybody"
-	enewgroup "android-reserved-disk"
-}
-
-pkg_postinst() {
-	if use arcpp; then
-		local root_uid=$(egetent passwd android-root | cut -d: -f3)
-		local root_gid=$(egetent group android-root | cut -d: -f3)
-
-		# Create a rootfs directory, and then a subdirectory mount point. We
-		# use 0500 for CONTAINER_ROOTFS instead of 0555 so that non-system
-		# processes running outside the container don't start depending on
-		# files in system.raw.img.
-		# These are created here rather than at
-		# install because some of them may already exist and have mounts.
-		install -d --mode=0500 "--owner=${root_uid}" "--group=${root_gid}" \
-			"${ROOT}${CONTAINER_ROOTFS}" \
-			|| true
-		# This CONTAINER_ROOTFS/root directory works as a mount point for
-		# system.raw.img, and once it's mounted, the image's root directory's
-		# permissions override the mode, owner, and group mkdir sets here.
-		mkdir -p "${ROOT}${CONTAINER_ROOTFS}/root" || true
-		install -d --mode=0500 "--owner=${root_uid}" "--group=${root_gid}" \
-			"${ROOT}${CONTAINER_ROOTFS}/android-data" \
-			|| true
-	fi
-}
diff --git a/chromeos-base/arc-base/arc-base-0.0.1-r395.ebuild b/chromeos-base/arc-base/arc-base-0.0.1-r395.ebuild
new file mode 100644
index 0000000..9807576
--- /dev/null
+++ b/chromeos-base/arc-base/arc-base-0.0.1-r395.ebuild
@@ -0,0 +1,84 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "9fc9c94a2d45e1fa0d13e8eab0e41814a9cd8c42" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/container/bundle .gn"
+
+inherit cros-workon user
+
+DESCRIPTION="Container to run Android."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/bundle"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+IUSE="
+	arcpp
+	arcvm
+	"
+
+REQUIRED_USE="|| ( arcpp arcvm )"
+
+RDEPEND="!<chromeos-base/chromeos-cheets-scripts-0.0.3"
+DEPEND="${RDEPEND}"
+
+CONTAINER_ROOTFS="/opt/google/containers/android/rootfs"
+
+src_install() {
+	if use arcpp; then
+		insinto /opt/google/containers/android
+		doins arc/container/bundle/pi/config.json
+
+		# Install exception file for FIFO blocking policy on stateful partition.
+		insinto /usr/share/cros/startup/fifo_exceptions
+		doins arc/container/bundle/arc-fifo-exceptions.txt
+
+		# Install exception file for symlink blocking policy on stateful partition.
+		insinto /usr/share/cros/startup/symlink_exceptions
+		doins arc/container/bundle/arc-symlink-exceptions.txt
+	fi
+}
+
+pkg_preinst() {
+	# ARCVM also needs these users on the host side for proper ugid remapping.
+	enewuser "wayland"
+	enewgroup "wayland"
+	enewuser "arc-bridge"
+	enewgroup "arc-bridge"
+	enewuser "android-root"
+	enewgroup "android-root"
+	enewgroup "arc-sensor"
+	enewgroup "android-everybody"
+	enewgroup "android-reserved-disk"
+}
+
+pkg_postinst() {
+	if use arcpp; then
+		local root_uid=$(egetent passwd android-root | cut -d: -f3)
+		local root_gid=$(egetent group android-root | cut -d: -f3)
+
+		# Create a rootfs directory, and then a subdirectory mount point. We
+		# use 0500 for CONTAINER_ROOTFS instead of 0555 so that non-system
+		# processes running outside the container don't start depending on
+		# files in system.raw.img.
+		# These are created here rather than at
+		# install because some of them may already exist and have mounts.
+		install -d --mode=0500 "--owner=${root_uid}" "--group=${root_gid}" \
+			"${ROOT}${CONTAINER_ROOTFS}" \
+			|| true
+		# This CONTAINER_ROOTFS/root directory works as a mount point for
+		# system.raw.img, and once it's mounted, the image's root directory's
+		# permissions override the mode, owner, and group mkdir sets here.
+		mkdir -p "${ROOT}${CONTAINER_ROOTFS}/root" || true
+		install -d --mode=0500 "--owner=${root_uid}" "--group=${root_gid}" \
+			"${ROOT}${CONTAINER_ROOTFS}/android-data" \
+			|| true
+	fi
+}
diff --git a/chromeos-base/arc-common-scripts/arc-common-scripts-0.0.1-r152.ebuild b/chromeos-base/arc-common-scripts/arc-common-scripts-0.0.1-r152.ebuild
deleted file mode 100644
index 5a6f5b4..0000000
--- a/chromeos-base/arc-common-scripts/arc-common-scripts-0.0.1-r152.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "3635cafaa1e2fe54b2dd06c40c2a17b4e4659039" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/container/scripts .gn"
-
-inherit cros-workon
-
-DESCRIPTION="ARC++ common scripts."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/scripts"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-IUSE="arcpp"
-RDEPEND="
-	!<=chromeos-base/arc-base-0.0.1-r349
-	!<chromeos-base/arc-setup-0.0.1-r1084
-	app-misc/jq"
-DEPEND=""
-
-src_install() {
-	dosbin arc/container/scripts/android-sh
-	insinto /etc/init
-	doins arc/container/scripts/arc-kmsg-logger.conf
-	doins arc/container/scripts/arc-sensor.conf
-	doins arc/container/scripts/arc-sysctl.conf
-	doins arc/container/scripts/arc-ureadahead.conf
-	insinto /etc/sysctl.d
-	doins arc/container/scripts/01-sysctl-arc.conf
-	# Redirect ARC logs to arc.log.
-	insinto /etc/rsyslog.d
-	doins arc/container/scripts/rsyslog.arc.conf
-}
diff --git a/chromeos-base/arc-common-scripts/arc-common-scripts-0.0.1-r183.ebuild b/chromeos-base/arc-common-scripts/arc-common-scripts-0.0.1-r183.ebuild
new file mode 100644
index 0000000..3afb658
--- /dev/null
+++ b/chromeos-base/arc-common-scripts/arc-common-scripts-0.0.1-r183.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="513e5662d18591543021a62874f49792a30fd2e7"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "bb51f9f8da453999f939ccb6a91e5c1a73b89308" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/container/scripts .gn"
+
+inherit cros-workon
+
+DESCRIPTION="ARC++ common scripts."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/scripts"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+IUSE="arcpp iioservice"
+RDEPEND="
+	!<=chromeos-base/arc-base-0.0.1-r349
+	!<chromeos-base/arc-setup-0.0.1-r1084
+	app-misc/jq"
+DEPEND=""
+
+src_install() {
+	dosbin arc/container/scripts/android-sh
+	insinto /etc/init
+	doins arc/container/scripts/arc-kmsg-logger.conf
+	use iioservice || doins arc/container/scripts/arc-sensor.conf
+	doins arc/container/scripts/arc-ureadahead.conf
+	insinto /etc/sysctl.d
+	doins arc/container/scripts/01-sysctl-arc.conf
+	# Redirect ARC logs to arc.log.
+	insinto /etc/rsyslog.d
+	doins arc/container/scripts/rsyslog.arc.conf
+}
diff --git a/chromeos-base/arc-common-scripts/arc-common-scripts-9999.ebuild b/chromeos-base/arc-common-scripts/arc-common-scripts-9999.ebuild
index 168b4ce..e3d6dae 100644
--- a/chromeos-base/arc-common-scripts/arc-common-scripts-9999.ebuild
+++ b/chromeos-base/arc-common-scripts/arc-common-scripts-9999.ebuild
@@ -18,7 +18,7 @@
 SLOT="0/0"
 KEYWORDS="~*"
 
-IUSE="arcpp"
+IUSE="arcpp iioservice"
 RDEPEND="
 	!<=chromeos-base/arc-base-0.0.1-r349
 	!<chromeos-base/arc-setup-0.0.1-r1084
@@ -29,8 +29,7 @@
 	dosbin arc/container/scripts/android-sh
 	insinto /etc/init
 	doins arc/container/scripts/arc-kmsg-logger.conf
-	doins arc/container/scripts/arc-sensor.conf
-	doins arc/container/scripts/arc-sysctl.conf
+	use iioservice || doins arc/container/scripts/arc-sensor.conf
 	doins arc/container/scripts/arc-ureadahead.conf
 	insinto /etc/sysctl.d
 	doins arc/container/scripts/01-sysctl-arc.conf
diff --git a/chromeos-base/arc-data-snapshotd/arc-data-snapshotd-0.0.1-r40.ebuild b/chromeos-base/arc-data-snapshotd/arc-data-snapshotd-0.0.1-r40.ebuild
deleted file mode 100644
index 751a4a5a..0000000
--- a/chromeos-base/arc-data-snapshotd/arc-data-snapshotd-0.0.1-r40.ebuild
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "7eabed196d01863338304dc38454608d554693f5" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-inherit cros-constants
-
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="common-mk arc/data-snapshotd .gn"
-
-PLATFORM_SUBDIR="arc/data-snapshotd"
-
-inherit cros-workon platform user
-
-DESCRIPTION="ARC data snapshotd daemon in Chrome OS."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/data-snapshotd"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+seccomp selinux"
-
-RDEPEND="
-	chromeos-base/bootlockbox-client:=
-	chromeos-base/minijail:=
-"
-
-DEPEND="
-	${RDEPEND}
-	chromeos-base/system_api:=
-	dev-libs/protobuf:=
-	selinux? (
-		sys-libs/libselinux:=
-	)
-"
-
-src_install() {
-	insinto /etc/init
-	doins init/arc-data-snapshotd.conf
-
-	# Install DBUS configuration file.
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.ArcDataSnapshotd.conf
-	doins dbus/ArcDataSnapshotdUpstart.conf
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	use seccomp && newins \
-		"seccomp/arc-data-snapshotd-seccomp-${ARCH}.policy" \
-		arc-data-snapshotd-seccomp.policy
-
-	dobin "${OUT}/arc-data-snapshotd"
-}
-
-pkg_preinst() {
-	enewuser "arc-data-snapshotd"
-	enewgroup "arc-data-snapshotd"
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/arc-data-snapshotd_test"
-}
diff --git a/chromeos-base/arc-data-snapshotd/arc-data-snapshotd-0.0.1-r84.ebuild b/chromeos-base/arc-data-snapshotd/arc-data-snapshotd-0.0.1-r84.ebuild
new file mode 100644
index 0000000..8a5e97e
--- /dev/null
+++ b/chromeos-base/arc-data-snapshotd/arc-data-snapshotd-0.0.1-r84.ebuild
@@ -0,0 +1,81 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "9107f8d50d8863fe8587f75a2d4d7560450cf59d" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+inherit cros-constants
+
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="common-mk arc/data-snapshotd .gn"
+
+PLATFORM_SUBDIR="arc/data-snapshotd"
+
+inherit cros-workon platform user
+
+DESCRIPTION="ARC data snapshotd daemon in Chrome OS."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/data-snapshotd"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+seccomp selinux"
+
+RDEPEND="
+	chromeos-base/bootlockbox-client:=
+	chromeos-base/minijail:=
+"
+
+DEPEND="
+	${RDEPEND}
+	chromeos-base/system_api:=
+	dev-libs/protobuf:=
+	selinux? (
+		sys-libs/libselinux:=
+	)
+"
+
+src_install() {
+	insinto /etc/init
+	doins init/arc-data-snapshotd.conf
+	doins init/arc-data-snapshotd-worker.conf
+
+	# Install DBUS configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.ArcDataSnapshotd.conf
+	doins dbus/org.chromium.ArcDataSnapshotdWorker.conf
+	doins dbus/ArcDataSnapshotdUpstart.conf
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	use seccomp && newins \
+		"seccomp/arc-data-snapshotd-seccomp-${ARCH}.policy" \
+		arc-data-snapshotd-seccomp.policy
+
+	dobin "${OUT}/arc-data-snapshotd"
+	dobin "${OUT}/arc-data-snapshotd-worker"
+}
+
+pkg_preinst() {
+	enewuser "arc-data-snapshotd"
+	enewgroup "arc-data-snapshotd"
+}
+
+platform_pkg_test() {
+	# Disable tests that invoke arc::data_snapshotd::CopySnapshotDirectory
+	# on qemu.
+	local gtest_filter_qemu=""
+	gtest_filter_qemu+="-DBusAdaptorTest.TakeSnapshotAndroidDataSymLink:"
+	gtest_filter_qemu+="DBusAdaptorTest.TakeSnapshotDouble:"
+	gtest_filter_qemu+="DBusAdaptorTest.LoadSnapshotUnknownUser:"
+	gtest_filter_qemu+="DBusAdaptorTest.LoadSnapshotSuccess:"
+	gtest_filter_qemu+="DBusAdaptorTest.LoadSnapshotPreviousSuccess:"
+
+	platform_test "run" "${OUT}/arc-data-snapshotd_test" "" "" \
+		"${gtest_filter_qemu}"
+	platform_test "run" "${OUT}/arc-data-snapshotd-worker_test" "" "" \
+		"${gtest_filter_qemu}"
+}
diff --git a/chromeos-base/arc-data-snapshotd/arc-data-snapshotd-9999.ebuild b/chromeos-base/arc-data-snapshotd/arc-data-snapshotd-9999.ebuild
index 02416d5..07dd873 100644
--- a/chromeos-base/arc-data-snapshotd/arc-data-snapshotd-9999.ebuild
+++ b/chromeos-base/arc-data-snapshotd/arc-data-snapshotd-9999.ebuild
@@ -39,10 +39,12 @@
 src_install() {
 	insinto /etc/init
 	doins init/arc-data-snapshotd.conf
+	doins init/arc-data-snapshotd-worker.conf
 
 	# Install DBUS configuration file.
 	insinto /etc/dbus-1/system.d
 	doins dbus/org.chromium.ArcDataSnapshotd.conf
+	doins dbus/org.chromium.ArcDataSnapshotdWorker.conf
 	doins dbus/ArcDataSnapshotdUpstart.conf
 
 	# Install seccomp policy file.
@@ -52,6 +54,7 @@
 		arc-data-snapshotd-seccomp.policy
 
 	dobin "${OUT}/arc-data-snapshotd"
+	dobin "${OUT}/arc-data-snapshotd-worker"
 }
 
 pkg_preinst() {
@@ -60,5 +63,17 @@
 }
 
 platform_pkg_test() {
-	platform_test "run" "${OUT}/arc-data-snapshotd_test"
+	# Disable tests that invoke arc::data_snapshotd::CopySnapshotDirectory
+	# on qemu.
+	local gtest_filter_qemu=""
+	gtest_filter_qemu+="-DBusAdaptorTest.TakeSnapshotAndroidDataSymLink:"
+	gtest_filter_qemu+="DBusAdaptorTest.TakeSnapshotDouble:"
+	gtest_filter_qemu+="DBusAdaptorTest.LoadSnapshotUnknownUser:"
+	gtest_filter_qemu+="DBusAdaptorTest.LoadSnapshotSuccess:"
+	gtest_filter_qemu+="DBusAdaptorTest.LoadSnapshotPreviousSuccess:"
+
+	platform_test "run" "${OUT}/arc-data-snapshotd_test" "" "" \
+		"${gtest_filter_qemu}"
+	platform_test "run" "${OUT}/arc-data-snapshotd-worker_test" "" "" \
+		"${gtest_filter_qemu}"
 }
diff --git a/chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r33.ebuild b/chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r33.ebuild
deleted file mode 100644
index 0dad2e7..0000000
--- a/chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r33.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "bd7a8b8c2a72289b8a9bad9133c39c6184921fe2" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/vm/host_clock .gn"
-
-PLATFORM_SUBDIR="arc/vm/host_clock"
-
-inherit cros-workon platform user
-
-DESCRIPTION="ARC host clock service"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/vm/host_clock"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="
-"
-
-DEPEND="
-	${RDEPEND}
-	chromeos-base/system_api
-"
-
-src_install() {
-	dobin "${OUT}"/arc-host-clock-service
-
-	insinto /etc/init
-	doins arc-host-clock-service.conf
-}
-
-pkg_preinst() {
-	enewuser "arc-host-clock"
-	enewgroup "arc-host-clock"
-}
diff --git a/chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r59.ebuild b/chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r59.ebuild
new file mode 100644
index 0000000..052ed4f
--- /dev/null
+++ b/chromeos-base/arc-host-clock-service/arc-host-clock-service-0.0.1-r59.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "d5ebac6b78340ae031e643c6ddb2afdb32017e76" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/vm/host_clock .gn"
+
+PLATFORM_SUBDIR="arc/vm/host_clock"
+
+inherit cros-workon platform user
+
+DESCRIPTION="ARC host clock service"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/vm/host_clock"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="
+"
+
+DEPEND="
+	${RDEPEND}
+	chromeos-base/system_api
+"
+
+src_install() {
+	dobin "${OUT}"/arc-host-clock-service
+
+	insinto /etc/init
+	doins arc-host-clock-service.conf
+}
+
+pkg_preinst() {
+	enewuser "arc-host-clock"
+	enewgroup "arc-host-clock"
+}
diff --git a/chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r210.ebuild b/chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r210.ebuild
deleted file mode 100644
index 3d504bf..0000000
--- a/chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r210.ebuild
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("31f27149a8789a1ea56d607fb2d2309c9e0ad932" "49dfc58d6c4c66f5d0b0d06f0161da4e602a1293")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "7cbff7c391e32cecd310a2bbbc8b41ddb0e6d233" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "6dbc19849752c206e135ab59349ebb1cc62bb435")
-inherit cros-constants
-
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_PROJECT=("chromiumos/platform2" "platform/system/keymaster")
-CROS_WORKON_REPO=(
-	"${CROS_GIT_HOST_URL}"
-	"${CROS_GIT_AOSP_URL}"
-)
-CROS_WORKON_EGIT_BRANCH=("master" "pie-release")
-CROS_WORKON_LOCALNAME=("platform2" "aosp/system/keymaster")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/aosp/system/keymaster")
-CROS_WORKON_SUBTREE=("common-mk arc/keymaster .gn" "")
-
-PLATFORM_SUBDIR="arc/keymaster"
-
-# This BoringSSL integration follows go/boringssl-cros.
-# DO NOT COPY TO OTHER PACKAGES WITHOUT CONSULTING SECURITY TEAM.
-BORINGSSL_PN="boringssl"
-BORINGSSL_PV="430a7423039682e4bbc7b522e3b57b2c8dca5e3b"
-BORINGSSL_P="${BORINGSSL_PN}-${BORINGSSL_PV}"
-BORINGSSL_OUTDIR="${WORKDIR}/boringssl_outputs/"
-
-CMAKE_USE_DIR="${WORKDIR}/${BORINGSSL_P}"
-BUILD_DIR="${WORKDIR}/${BORINGSSL_P}_build"
-
-inherit flag-o-matic cmake-utils cros-workon platform user
-
-DESCRIPTION="Android keymaster service in Chrome OS."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/keymaster"
-SRC_URI="https://github.com/google/${BORINGSSL_PN}/archive/${BORINGSSL_PV}.tar.gz -> ${BORINGSSL_P}.tar.gz"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+seccomp"
-
-RDEPEND="
-	chromeos-base/chaps:=
-	chromeos-base/cryptohome:=
-	chromeos-base/minijail:=
-	dev-libs/protobuf:=
-"
-
-DEPEND="
-	${RDEPEND}
-	chromeos-base/session_manager-client:=
-	chromeos-base/system_api:=
-"
-
-HEADER_TAINT="#ifdef CHROMEOS_OPENSSL_IS_OPENSSL
-#error \"Do not mix OpenSSL and BoringSSL headers.\"
-#endif
-#define CHROMEOS_OPENSSL_IS_BORINGSSL\n"
-
-src_unpack() {
-	platform_src_unpack
-	unpack "${BORINGSSL_P}.tar.gz"
-	# 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}' {} \;
-}
-
-src_prepare() {
-	cmake-utils_src_prepare
-
-	# Expose libhardware headers from arc-toolchain-p.
-	local arc_arch="${ARCH}"
-	# arm needs to use arm64 directory, which provides combined arm/arm64
-	# headers.
-	if [[ "${ARCH}" == "arm" ]]; then
-		arc_arch="arm64"
-	fi
-	mkdir -p "${WORKDIR}/libhardware/include" || die
-	cp -rfp "/opt/android-p/${arc_arch}/usr/include/hardware" "${WORKDIR}/libhardware/include" || die
-	append-cxxflags "-I${WORKDIR}/libhardware/include"
-
-	# Expose BoringSSL headers and outputs.
-	append-cxxflags "-I${WORKDIR}/${BORINGSSL_P}/include"
-	append-ldflags "-L${BORINGSSL_OUTDIR}"
-	# Verify upstream hasn't changed relevant context code.
-	cd "${WORKDIR}/${P}/aosp/system/keymaster" || die
-	eapply --dry-run "${FILESDIR}/keymaster-context-hooks.patch"
-	# Fix C++17 compilation. Can be removed once we update to newer version of
-	# keymaster that contains https://r.android.com/1412947.
-	cd "${WORKDIR}/${P}/aosp/system/keymaster" || die
-	eapply "${FILESDIR}/0001-keymaster-fix-C-17-compilation.patch"
-	# Make P Keymaster compatible with latest BoringSSL.
-	eapply "${FILESDIR}/keymaster-boringssl-update.patch"
-}
-
-src_configure() {
-	local mycmakeargs=(
-		"-DCMAKE_BUILD_TYPE=Release"
-		"-DCMAKE_SYSTEM_PROCESSOR=${CHOST%%-*}"
-		"-DBUILD_SHARED_LIBS=OFF"
-	)
-	cmake-utils_src_configure
-	platform_src_configure
-}
-
-src_compile() {
-	# Compile BoringSSL and expose libcrypto.a.
-	cmake-utils_src_compile
-	mkdir -p "${BORINGSSL_OUTDIR}" || die
-	cp -p "${BUILD_DIR}/crypto/libcrypto.a" "${BORINGSSL_OUTDIR}/libboringcrypto.a" || die
-
-	platform_src_compile
-}
-
-src_install() {
-	insinto /etc/init
-	doins init/arc-keymasterd.conf
-
-	# Install DBUS configuration file.
-	insinto /etc/dbus-1/system.d
-	doins dbus_permissions/org.chromium.ArcKeymaster.conf
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	use seccomp && newins \
-		"seccomp/arc-keymasterd-seccomp-${ARCH}.policy" \
-		arc-keymasterd-seccomp.policy
-
-	# Install shared libs and binary.
-	dolib.so "${OUT}/lib/libarckeymaster_context.so"
-	dolib.so "${OUT}/lib/libkeymaster.so"
-	dosbin "${OUT}/arc-keymasterd"
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc_keymasterd_fuzzer
-}
-
-pkg_preinst() {
-	enewuser "arc-keymasterd"
-	enewgroup "arc-keymasterd"
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/arc-keymasterd_testrunner"
-}
diff --git a/chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r246.ebuild b/chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r246.ebuild
new file mode 100644
index 0000000..5962cf7
--- /dev/null
+++ b/chromeos-base/arc-keymaster/arc-keymaster-0.0.1-r246.ebuild
@@ -0,0 +1,145 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("6f9011123f3656c45bb34148673aa110a22326b3" "49dfc58d6c4c66f5d0b0d06f0161da4e602a1293")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "cd360f89c2a9c43343acba09894918cb5ef94620" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "6dbc19849752c206e135ab59349ebb1cc62bb435")
+inherit cros-constants
+
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT=("chromiumos/platform2" "platform/system/keymaster")
+CROS_WORKON_REPO=(
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_AOSP_URL}"
+)
+CROS_WORKON_EGIT_BRANCH=("master" "pie-release")
+CROS_WORKON_LOCALNAME=("platform2" "aosp/system/keymaster")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/aosp/system/keymaster")
+CROS_WORKON_SUBTREE=("common-mk arc/keymaster .gn" "")
+
+PLATFORM_SUBDIR="arc/keymaster"
+
+# This BoringSSL integration follows go/boringssl-cros.
+# DO NOT COPY TO OTHER PACKAGES WITHOUT CONSULTING SECURITY TEAM.
+BORINGSSL_PN="boringssl"
+BORINGSSL_PV="430a7423039682e4bbc7b522e3b57b2c8dca5e3b"
+BORINGSSL_P="${BORINGSSL_PN}-${BORINGSSL_PV}"
+BORINGSSL_OUTDIR="${WORKDIR}/boringssl_outputs/"
+
+CMAKE_USE_DIR="${WORKDIR}/${BORINGSSL_P}"
+BUILD_DIR="${WORKDIR}/${BORINGSSL_P}_build"
+
+inherit flag-o-matic cmake-utils cros-workon platform user
+
+DESCRIPTION="Android keymaster service in Chrome OS."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/keymaster"
+SRC_URI="https://github.com/google/${BORINGSSL_PN}/archive/${BORINGSSL_PV}.tar.gz -> ${BORINGSSL_P}.tar.gz"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+seccomp"
+
+RDEPEND="
+	chromeos-base/chaps:=
+	chromeos-base/cryptohome:=
+	chromeos-base/minijail:=
+	dev-libs/protobuf:=
+"
+
+DEPEND="
+	${RDEPEND}
+	chromeos-base/session_manager-client:=
+	chromeos-base/system_api:=
+"
+
+HEADER_TAINT="#ifdef CHROMEOS_OPENSSL_IS_OPENSSL
+#error \"Do not mix OpenSSL and BoringSSL headers.\"
+#endif
+#define CHROMEOS_OPENSSL_IS_BORINGSSL\n"
+
+src_unpack() {
+	platform_src_unpack
+	unpack "${BORINGSSL_P}.tar.gz"
+	# 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}' {} \;
+}
+
+src_prepare() {
+	cmake-utils_src_prepare
+
+	# Expose libhardware headers from arc-toolchain-p.
+	local arc_arch="${ARCH}"
+	# arm needs to use arm64 directory, which provides combined arm/arm64
+	# headers.
+	if [[ "${ARCH}" == "arm" ]]; then
+		arc_arch="arm64"
+	fi
+	mkdir -p "${WORKDIR}/libhardware/include" || die
+	cp -rfp "/opt/android-p/${arc_arch}/usr/include/hardware" "${WORKDIR}/libhardware/include" || die
+	append-cxxflags "-I${WORKDIR}/libhardware/include"
+
+	# Expose BoringSSL headers and outputs.
+	append-cxxflags "-I${WORKDIR}/${BORINGSSL_P}/include"
+	append-ldflags "-L${BORINGSSL_OUTDIR}"
+	# Verify upstream hasn't changed relevant context code.
+	cd "${WORKDIR}/${P}/aosp/system/keymaster" || die
+	eapply --dry-run "${FILESDIR}/keymaster-context-hooks.patch"
+	# Fix C++17 compilation. Can be removed once we update to newer version of
+	# keymaster that contains https://r.android.com/1412947.
+	cd "${WORKDIR}/${P}/aosp/system/keymaster" || die
+	eapply "${FILESDIR}/0001-keymaster-fix-C-17-compilation.patch"
+	# Make P Keymaster compatible with latest BoringSSL.
+	eapply "${FILESDIR}/keymaster-boringssl-update.patch"
+}
+
+src_configure() {
+	local mycmakeargs=(
+		"-DCMAKE_BUILD_TYPE=Release"
+		"-DCMAKE_SYSTEM_PROCESSOR=${CHOST%%-*}"
+		"-DBUILD_SHARED_LIBS=OFF"
+	)
+	cmake-utils_src_configure
+	platform_src_configure
+}
+
+src_compile() {
+	# Compile BoringSSL and expose libcrypto.a.
+	cmake-utils_src_compile
+	mkdir -p "${BORINGSSL_OUTDIR}" || die
+	cp -p "${BUILD_DIR}/crypto/libcrypto.a" "${BORINGSSL_OUTDIR}/libboringcrypto.a" || die
+
+	platform_src_compile
+}
+
+src_install() {
+	insinto /etc/init
+	doins init/arc-keymasterd.conf
+
+	# Install DBUS configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus_permissions/org.chromium.ArcKeymaster.conf
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	use seccomp && newins \
+		"seccomp/arc-keymasterd-seccomp-${ARCH}.policy" \
+		arc-keymasterd-seccomp.policy
+
+	# Install shared libs and binary.
+	dolib.so "${OUT}/lib/libarckeymaster_context.so"
+	dolib.so "${OUT}/lib/libkeymaster.so"
+	dosbin "${OUT}/arc-keymasterd"
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc_keymasterd_fuzzer
+}
+
+pkg_preinst() {
+	enewuser "arc-keymasterd"
+	enewgroup "arc-keymasterd"
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/arc-keymasterd_testrunner"
+}
diff --git a/chromeos-base/arc-myfiles/arc-myfiles-0.0.1-r174.ebuild b/chromeos-base/arc-myfiles/arc-myfiles-0.0.1-r174.ebuild
deleted file mode 100644
index f77b14b..0000000
--- a/chromeos-base/arc-myfiles/arc-myfiles-0.0.1-r174.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="891275e43ab2ed3070c377dd889259604911e046"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "44e015c48512f5c1bd9e73c1c350d3af9423c262" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/container/myfiles .gn"
-
-inherit cros-workon
-
-DESCRIPTION="Container to run Android's MyFiles daemon."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/myfiles"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="chromeos-base/mount-passthrough
-	!<chromeos-base/chromeos-cheets-scripts-0.0.2-r470
-"
-
-src_install() {
-	insinto /etc/init
-	doins arc/container/myfiles/arc-myfiles.conf
-	doins arc/container/myfiles/arc-myfiles-default.conf
-	doins arc/container/myfiles/arc-myfiles-read.conf
-	doins arc/container/myfiles/arc-myfiles-write.conf
-}
diff --git a/chromeos-base/arc-myfiles/arc-myfiles-0.0.1-r201.ebuild b/chromeos-base/arc-myfiles/arc-myfiles-0.0.1-r201.ebuild
new file mode 100644
index 0000000..1b9dfae
--- /dev/null
+++ b/chromeos-base/arc-myfiles/arc-myfiles-0.0.1-r201.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "c8a2550e2697f391dc686b4a72841d4568a5de73" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/container/myfiles .gn"
+
+inherit cros-workon
+
+DESCRIPTION="Container to run Android's MyFiles daemon."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/myfiles"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="chromeos-base/mount-passthrough
+	!<chromeos-base/chromeos-cheets-scripts-0.0.2-r470
+"
+
+src_install() {
+	insinto /etc/init
+	doins arc/container/myfiles/arc-myfiles.conf
+	doins arc/container/myfiles/arc-myfiles-default.conf
+	doins arc/container/myfiles/arc-myfiles-read.conf
+	doins arc/container/myfiles/arc-myfiles-write.conf
+}
diff --git a/chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r423.ebuild b/chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r423.ebuild
deleted file mode 100644
index 869c223..0000000
--- a/chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r423.ebuild
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "d530cceec5d2c60c71f02b70f0cdd617e82f2d0c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/container/obb-mounter .gn"
-
-PLATFORM_SUBDIR="arc/container/obb-mounter"
-
-inherit cros-workon platform
-
-DESCRIPTION="D-Bus service to mount OBB files"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/obb-mounter"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="
-	sys-fs/fuse:=
-	sys-libs/libcap:=
-"
-
-DEPEND="${RDEPEND}"
-
-BDEPEND="
-	virtual/pkgconfig
-"
-
-
-CONTAINER_DIR="/opt/google/containers/arc-obb-mounter"
-
-src_install() {
-	dobin "${OUT}"/arc-obb-mounter
-	dobin "${OUT}"/mount-obb
-
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.ArcObbMounter.conf
-
-	insinto /etc/init
-	doins init/arc-obb-mounter.conf
-
-	insinto "${CONTAINER_DIR}"
-	doins "${OUT}"/rootfs.squashfs
-
-	# Keep the parent directory of mountpoints inaccessible from non-root
-	# users because mountpoints themselves are often world-readable but we
-	# do not want to expose them.
-	# container-root is where the root filesystem of the container in which
-	# arc-obb-mounter daemon runs is mounted.
-	diropts --mode=0700 --owner=root --group=root
-	keepdir "${CONTAINER_DIR}"/mountpoints/
-	keepdir "${CONTAINER_DIR}"/mountpoints/container-root
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/mount-obb_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/arc-obb-mounter_testrunner"
-}
diff --git a/chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r451.ebuild b/chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r451.ebuild
new file mode 100644
index 0000000..bc78232
--- /dev/null
+++ b/chromeos-base/arc-obb-mounter/arc-obb-mounter-0.0.2-r451.ebuild
@@ -0,0 +1,65 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e77993554f66d7d254d4cdb7210c63195cd7d453" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/container/obb-mounter .gn"
+
+PLATFORM_SUBDIR="arc/container/obb-mounter"
+
+inherit cros-workon platform
+
+DESCRIPTION="D-Bus service to mount OBB files"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/obb-mounter"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="
+	sys-fs/fuse:=
+	sys-libs/libcap:=
+"
+
+DEPEND="${RDEPEND}"
+
+BDEPEND="
+	virtual/pkgconfig
+"
+
+
+CONTAINER_DIR="/opt/google/containers/arc-obb-mounter"
+
+src_install() {
+	dobin "${OUT}"/arc-obb-mounter
+	dobin "${OUT}"/mount-obb
+
+	insinto /etc/dbus-1/system.d
+	doins org.chromium.ArcObbMounter.conf
+
+	insinto /etc/init
+	doins init/arc-obb-mounter.conf
+
+	insinto "${CONTAINER_DIR}"
+	doins "${OUT}"/rootfs.squashfs
+
+	# Keep the parent directory of mountpoints inaccessible from non-root
+	# users because mountpoints themselves are often world-readable but we
+	# do not want to expose them.
+	# container-root is where the root filesystem of the container in which
+	# arc-obb-mounter daemon runs is mounted.
+	diropts --mode=0700 --owner=root --group=root
+	keepdir "${CONTAINER_DIR}"/mountpoints/
+	keepdir "${CONTAINER_DIR}"/mountpoints/container-root
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/mount-obb_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/arc-obb-mounter_testrunner"
+}
diff --git a/chromeos-base/arc-removable-media/arc-removable-media-0.0.1-r266.ebuild b/chromeos-base/arc-removable-media/arc-removable-media-0.0.1-r266.ebuild
deleted file mode 100644
index d28e277..0000000
--- a/chromeos-base/arc-removable-media/arc-removable-media-0.0.1-r266.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="891275e43ab2ed3070c377dd889259604911e046"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "09c638306b818afa68992fcdd0d069ccbdcb3caa" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/container/removable-media .gn"
-
-inherit cros-workon
-
-DESCRIPTION="Container to run Android's removable-media daemon."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/removable-media"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="chromeos-base/mount-passthrough
-	!<chromeos-base/chromeos-cheets-scripts-0.0.2-r470
-"
-
-src_install() {
-	insinto /etc/init
-	doins arc/container/removable-media/arc-removable-media.conf
-	doins arc/container/removable-media/arc-removable-media-default.conf
-	doins arc/container/removable-media/arc-removable-media-read.conf
-	doins arc/container/removable-media/arc-removable-media-write.conf
-}
diff --git a/chromeos-base/arc-removable-media/arc-removable-media-0.0.1-r293.ebuild b/chromeos-base/arc-removable-media/arc-removable-media-0.0.1-r293.ebuild
new file mode 100644
index 0000000..729b047
--- /dev/null
+++ b/chromeos-base/arc-removable-media/arc-removable-media-0.0.1-r293.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a668f1f1ed688f833488719ca2ccefc7e1e4272b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/container/removable-media .gn"
+
+inherit cros-workon
+
+DESCRIPTION="Container to run Android's removable-media daemon."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/removable-media"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="chromeos-base/mount-passthrough
+	!<chromeos-base/chromeos-cheets-scripts-0.0.2-r470
+"
+
+src_install() {
+	insinto /etc/init
+	doins arc/container/removable-media/arc-removable-media.conf
+	doins arc/container/removable-media/arc-removable-media-default.conf
+	doins arc/container/removable-media/arc-removable-media-read.conf
+	doins arc/container/removable-media/arc-removable-media-write.conf
+}
diff --git a/chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r267.ebuild b/chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r267.ebuild
deleted file mode 100644
index ad63110..0000000
--- a/chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r267.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "2bd3f2208f90e7c6e42e1b037e211615995f768a" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/container/sdcard .gn"
-
-PLATFORM_SUBDIR="arc/container/sdcard"
-
-inherit cros-workon platform
-
-DESCRIPTION="Container to run Android's sdcard daemon."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/sdcard"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="esdfs"
-
-CONTAINER_DIR="/opt/google/containers/arc-sdcard"
-
-RDEPEND="!esdfs? ( chromeos-base/arc-setup )"
-DEPEND="${DEPEND}"
-
-src_install() {
-	if ! use esdfs; then
-		insinto /etc/init
-		doins arc-sdcard.conf
-	fi
-
-	insinto "${CONTAINER_DIR}"
-	doins "${OUT}"/rootfs.squashfs
-
-	# Keep the parent directory of mountpoints inaccessible from non-root
-	# users because mountpoints themselves are often world-readable but we
-	# do not want to expose them.
-	# container-root is where the root filesystem of the container in which
-	# arc-obb-mounter daemon runs is mounted.
-	diropts --mode=0700 --owner=root --group=root
-	keepdir "${CONTAINER_DIR}"/mountpoints/
-	keepdir "${CONTAINER_DIR}"/mountpoints/container-root
-}
diff --git a/chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r293.ebuild b/chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r293.ebuild
new file mode 100644
index 0000000..a1f0f26
--- /dev/null
+++ b/chromeos-base/arc-sdcard/arc-sdcard-0.0.1-r293.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8d42b591edbde62798f5c6399507eb627c83326f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/container/sdcard .gn"
+
+PLATFORM_SUBDIR="arc/container/sdcard"
+
+inherit cros-workon platform
+
+DESCRIPTION="Container to run Android's sdcard daemon."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/sdcard"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="esdfs"
+
+CONTAINER_DIR="/opt/google/containers/arc-sdcard"
+
+RDEPEND="!esdfs? ( chromeos-base/arc-setup )"
+DEPEND="${DEPEND}"
+
+src_install() {
+	if ! use esdfs; then
+		insinto /etc/init
+		doins arc-sdcard.conf
+	fi
+
+	insinto "${CONTAINER_DIR}"
+	doins "${OUT}"/rootfs.squashfs
+
+	# Keep the parent directory of mountpoints inaccessible from non-root
+	# users because mountpoints themselves are often world-readable but we
+	# do not want to expose them.
+	# container-root is where the root filesystem of the container in which
+	# arc-obb-mounter daemon runs is mounted.
+	diropts --mode=0700 --owner=root --group=root
+	keepdir "${CONTAINER_DIR}"/mountpoints/
+	keepdir "${CONTAINER_DIR}"/mountpoints/container-root
+}
diff --git a/chromeos-base/arc-sensor-service/arc-sensor-service-0.0.1-r50.ebuild b/chromeos-base/arc-sensor-service/arc-sensor-service-0.0.1-r50.ebuild
deleted file mode 100644
index 23dcef7..0000000
--- a/chromeos-base/arc-sensor-service/arc-sensor-service-0.0.1-r50.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="dd196af2250030dd395b4dece667eb87afbab09a"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "c4df5a89c2fa9fe19a2f058dd32ea9c45ed9d1b7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/vm/sensor_service .gn"
-
-PLATFORM_SUBDIR="arc/vm/sensor_service"
-
-inherit cros-workon platform
-
-DESCRIPTION="ARC sensor service."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/sensor_service"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="
-"
-
-DEPEND="
-	${RDEPEND}
-"
-
-src_install() {
-	dobin "${OUT}"/arc_sensor_service
-
-	insinto /etc/init
-	doins init/arc-sensor-service.conf
-
-	insinto /etc/dbus-1/system.d
-	doins init/dbus-1/org.chromium.ArcSensorService.conf
-}
diff --git a/chromeos-base/arc-sensor-service/arc-sensor-service-0.0.1-r79.ebuild b/chromeos-base/arc-sensor-service/arc-sensor-service-0.0.1-r79.ebuild
new file mode 100644
index 0000000..87d77cb
--- /dev/null
+++ b/chromeos-base/arc-sensor-service/arc-sensor-service-0.0.1-r79.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "37d18ee31b53064c7077aaf9c02849897112588c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/vm/sensor_service .gn"
+
+PLATFORM_SUBDIR="arc/vm/sensor_service"
+
+inherit cros-workon platform
+
+DESCRIPTION="ARC sensor service."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/sensor_service"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="
+"
+
+DEPEND="
+	${RDEPEND}
+"
+
+src_install() {
+	dobin "${OUT}"/arc_sensor_service
+
+	insinto /etc/init
+	doins init/arc-sensor-service.conf
+
+	insinto /etc/dbus-1/system.d
+	doins init/dbus-1/org.chromium.ArcSensorService.conf
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/arc_sensor_service_testrunner"
+}
diff --git a/chromeos-base/arc-sensor-service/arc-sensor-service-9999.ebuild b/chromeos-base/arc-sensor-service/arc-sensor-service-9999.ebuild
index 34a629e..7bca23e 100644
--- a/chromeos-base/arc-sensor-service/arc-sensor-service-9999.ebuild
+++ b/chromeos-base/arc-sensor-service/arc-sensor-service-9999.ebuild
@@ -35,3 +35,7 @@
 	insinto /etc/dbus-1/system.d
 	doins init/dbus-1/org.chromium.ArcSensorService.conf
 }
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/arc_sensor_service_testrunner"
+}
diff --git a/chromeos-base/arc-setup/arc-setup-0.0.1-r1136.ebuild b/chromeos-base/arc-setup/arc-setup-0.0.1-r1136.ebuild
deleted file mode 100644
index f85febe..0000000
--- a/chromeos-base/arc-setup/arc-setup-0.0.1-r1136.ebuild
+++ /dev/null
@@ -1,140 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="109363d0a03be594cf5611441597c607960c4f3d"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8e053bc08c1c1a3cabfd68002a489024009a06e1" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="arc/setup"
-
-inherit cros-workon platform
-
-DESCRIPTION="Set up environment to run ARC."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/setup"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="
-	arcpp
-	arcvm
-	esdfs
-	fuzzer
-	generated_cros_config
-	houdini
-	houdini64
-	ndk_translation
-	unibuild"
-
-REQUIRED_USE="|| ( arcpp arcvm )"
-
-COMMON_DEPEND="
-	esdfs? ( chromeos-base/arc-sdcard )
-	chromeos-base/bootstat:=
-	chromeos-base/chromeos-config-tools:=
-	chromeos-base/cryptohome-client:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/patchpanel-client:=
-	dev-libs/dbus-glib:=
-	dev-libs/protobuf:=
-	sys-libs/libselinux:=
-	chromeos-base/minijail:=
-"
-
-RDEPEND="${COMMON_DEPEND}
-	!<chromeos-base/arc-common-scripts-0.0.1-r131
-	!<chromeos-base/arcvm-common-scripts-0.0.1-r77
-	chromeos-base/patchpanel
-	arcvm? ( chromeos-base/crosvm )
-	arcpp? (
-		chromeos-base/swap-init
-		esdfs? ( sys-apps/restorecon )
-	)
-"
-
-DEPEND="${COMMON_DEPEND}
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-
-enable_esdfs() {
-	[[ -f "$1" ]] || die
-	local data=$(jq ".USE_ESDFS=true" "$1")
-	echo "${data}" > "$1" || die
-}
-
-
-src_install() {
-	# Used for both ARCVM and ARC.
-	dosbin "${OUT}"/arc-remove-data
-	dosbin "${OUT}"/arc-remove-stale-data
-	insinto /etc/init
-	doins init/arc-remove-data.conf
-	doins init/arc-stale-directory-remover.conf
-
-	# Some binaries are only for ARCVM
-	if use arcvm; then
-		dosbin "${OUT}"/arc-apply-per-board-config
-		dosbin "${OUT}"/arc-create-data
-		dosbin "${OUT}"/arc-handle-upgrade
-		insinto /etc/init
-		doins init/arcvm-per-board-features.conf
-		doins init/arc-create-data.conf
-		doins init/arc-handle-upgrade.conf
-		insinto /etc/dbus-1/system.d
-		doins init/dbus-1/ArcVmSetupUpstart.conf
-	fi
-
-	# Other files are only for ARC.
-	if use arcpp; then
-		dosbin "${OUT}"/arc-setup
-		insinto /etc/init
-		doins init/arc-boot-continue.conf
-		doins init/arc-lifetime.conf
-		doins init/arc-update-restorecon-last.conf
-		if use esdfs; then
-			doins init/arc-sdcard.conf
-			doins init/arc-sdcard-mount.conf
-		fi
-		doins init/arc-system-mount.conf
-		insinto /etc/dbus-1/system.d
-		doins init/dbus-1/ArcSetupUpstart.conf
-
-		insinto /usr/share/arc-setup
-		doins init/arc-setup/config.json
-
-		if use esdfs; then
-			enable_esdfs "${D}/usr/share/arc-setup/config.json"
-		fi
-
-		insinto /opt/google/containers/arc-art
-		doins "${OUT}/dev-rootfs.squashfs"
-
-		# container-root is where the root filesystem of the container in which
-		# patchoat and dex2oat runs is mounted. dev-rootfs is mount point
-		# for squashfs.
-		diropts --mode=0700 --owner=root --group=root
-		keepdir /opt/google/containers/arc-art/mountpoints/container-root
-		keepdir /opt/google/containers/arc-art/mountpoints/dev-rootfs
-		keepdir /opt/google/containers/arc-art/mountpoints/vendor
-
-		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc_setup_util_find_all_properties_fuzzer
-		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc_setup_util_find_fingerprint_and_sdk_version_fuzzer
-		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc_property_util_expand_property_contents_fuzzer
-	fi
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/arc-setup_testrunner"
-}
diff --git a/chromeos-base/arc-setup/arc-setup-0.0.1-r1248.ebuild b/chromeos-base/arc-setup/arc-setup-0.0.1-r1248.ebuild
new file mode 100644
index 0000000..cb5f976
--- /dev/null
+++ b/chromeos-base/arc-setup/arc-setup-0.0.1-r1248.ebuild
@@ -0,0 +1,148 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="7ad3c0d318ab6cd2ff9a75d1b99ef69d423e433d"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "f4925a46fc9b9ab39b7c7a11ad97e12a0d0bb39d" "aa0612733aca2d5ffa65470f07408228b473ebdb" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="arc/setup"
+
+inherit cros-workon platform
+
+DESCRIPTION="Set up environment to run ARC."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/setup"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="
+	arcpp
+	arcvm
+	esdfs
+	fuzzer
+	generated_cros_config
+	houdini
+	houdini64
+	iioservice
+	ndk_translation
+	unibuild
+	test"
+
+REQUIRED_USE="|| ( arcpp arcvm )"
+
+COMMON_DEPEND="
+	arcpp? (
+		esdfs? ( chromeos-base/arc-sdcard )
+	)
+	chromeos-base/bootstat:=
+	chromeos-base/chromeos-config-tools:=
+	chromeos-base/cryptohome-client:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/patchpanel-client:=
+	dev-libs/libxml2:=
+	dev-libs/protobuf:=
+	sys-libs/libselinux:=
+	chromeos-base/minijail:=
+"
+
+RDEPEND="${COMMON_DEPEND}
+	!<chromeos-base/arc-common-scripts-0.0.1-r131
+	!<chromeos-base/arcvm-common-scripts-0.0.1-r77
+	chromeos-base/patchpanel
+	arcvm? ( chromeos-base/crosvm )
+	arcpp? (
+		chromeos-base/swap-init
+		esdfs? ( sys-apps/restorecon )
+	)
+"
+
+DEPEND="${COMMON_DEPEND}
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	chromeos-base/system_api:=[fuzzer?]
+	test? ( chromeos-base/arc-base )
+"
+
+
+enable_esdfs() {
+	[[ -f "$1" ]] || die
+	local data=$(jq ".USE_ESDFS=true" "$1")
+	echo "${data}" > "$1" || die
+}
+
+
+src_install() {
+	# Used for both ARCVM and ARC.
+	dosbin "${OUT}"/arc-prepare-host-generated-dir
+	dosbin "${OUT}"/arc-remove-data
+	dosbin "${OUT}"/arc-remove-stale-data
+	insinto /etc/init
+	doins init/arc-prepare-host-generated-dir.conf
+	doins init/arc-remove-data.conf
+	doins init/arc-stale-directory-remover.conf
+
+	# Some binaries are only for ARCVM
+	if use arcvm; then
+		dosbin "${OUT}"/arc-apply-per-board-config
+		dosbin "${OUT}"/arc-create-data
+		dosbin "${OUT}"/arc-handle-upgrade
+		insinto /etc/init
+		doins init/arcvm-per-board-features.conf
+		doins init/arc-create-data.conf
+		doins init/arc-handle-upgrade.conf
+		insinto /etc/dbus-1/system.d
+		doins init/dbus-1/ArcVmSetupUpstart.conf
+	fi
+
+	# Other files are only for ARC.
+	if use arcpp; then
+		dosbin "${OUT}"/arc-setup
+		insinto /etc/init
+		doins init/arc-boot-continue.conf
+		doins init/arc-lifetime.conf
+		doins init/arc-update-restorecon-last.conf
+		doins init/arcpp-post-login-services.conf
+		if use esdfs; then
+			doins init/arc-sdcard.conf
+			doins init/arc-sdcard-mount.conf
+		fi
+		doins init/arc-system-mount.conf
+		insinto /etc/dbus-1/system.d
+		doins init/dbus-1/ArcSetupUpstart.conf
+
+		insinto /usr/share/arc-setup
+		doins init/arc-setup/config.json
+
+		if use esdfs; then
+			enable_esdfs "${D}/usr/share/arc-setup/config.json"
+		fi
+
+		insinto /opt/google/containers/arc-art
+		doins "${OUT}/dev-rootfs.squashfs"
+
+		# container-root is where the root filesystem of the container in which
+		# patchoat and dex2oat runs is mounted. dev-rootfs is mount point
+		# for squashfs.
+		diropts --mode=0700 --owner=root --group=root
+		keepdir /opt/google/containers/arc-art/mountpoints/container-root
+		keepdir /opt/google/containers/arc-art/mountpoints/dev-rootfs
+		keepdir /opt/google/containers/arc-art/mountpoints/vendor
+
+		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc_setup_util_find_all_properties_fuzzer
+		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc_setup_util_find_fingerprint_and_sdk_version_fuzzer
+		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/arc_property_util_expand_property_contents_fuzzer
+	fi
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/arc-setup_testrunner"
+}
diff --git a/chromeos-base/arc-setup/arc-setup-9999.ebuild b/chromeos-base/arc-setup/arc-setup-9999.ebuild
index 52541c2..b66958c 100644
--- a/chromeos-base/arc-setup/arc-setup-9999.ebuild
+++ b/chromeos-base/arc-setup/arc-setup-9999.ebuild
@@ -28,19 +28,23 @@
 	generated_cros_config
 	houdini
 	houdini64
+	iioservice
 	ndk_translation
-	unibuild"
+	unibuild
+	test"
 
 REQUIRED_USE="|| ( arcpp arcvm )"
 
 COMMON_DEPEND="
-	esdfs? ( chromeos-base/arc-sdcard )
+	arcpp? (
+		esdfs? ( chromeos-base/arc-sdcard )
+	)
 	chromeos-base/bootstat:=
 	chromeos-base/chromeos-config-tools:=
 	chromeos-base/cryptohome-client:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/patchpanel-client:=
-	dev-libs/dbus-glib:=
+	dev-libs/libxml2:=
 	dev-libs/protobuf:=
 	sys-libs/libselinux:=
 	chromeos-base/minijail:=
@@ -63,6 +67,7 @@
 		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
 	)
 	chromeos-base/system_api:=[fuzzer?]
+	test? ( chromeos-base/arc-base )
 "
 
 
@@ -75,9 +80,11 @@
 
 src_install() {
 	# Used for both ARCVM and ARC.
+	dosbin "${OUT}"/arc-prepare-host-generated-dir
 	dosbin "${OUT}"/arc-remove-data
 	dosbin "${OUT}"/arc-remove-stale-data
 	insinto /etc/init
+	doins init/arc-prepare-host-generated-dir.conf
 	doins init/arc-remove-data.conf
 	doins init/arc-stale-directory-remover.conf
 
@@ -101,6 +108,7 @@
 		doins init/arc-boot-continue.conf
 		doins init/arc-lifetime.conf
 		doins init/arc-update-restorecon-last.conf
+		doins init/arcpp-post-login-services.conf
 		if use esdfs; then
 			doins init/arc-sdcard.conf
 			doins init/arc-sdcard-mount.conf
diff --git a/chromeos-base/arc-sslh-init/arc-sslh-init-0.0.1-r15.ebuild b/chromeos-base/arc-sslh-init/arc-sslh-init-0.0.1-r19.ebuild
similarity index 100%
rename from chromeos-base/arc-sslh-init/arc-sslh-init-0.0.1-r15.ebuild
rename to chromeos-base/arc-sslh-init/arc-sslh-init-0.0.1-r19.ebuild
diff --git a/chromeos-base/arc-sslh-init/files/sslh-seccomp-amd64.policy b/chromeos-base/arc-sslh-init/files/sslh-seccomp-amd64.policy
index f07258f..29cf14a 100644
--- a/chromeos-base/arc-sslh-init/files/sslh-seccomp-amd64.policy
+++ b/chromeos-base/arc-sslh-init/files/sslh-seccomp-amd64.policy
@@ -19,6 +19,7 @@
 stat: 1
 mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
 fstat: 1
+newfstatat: 1
 mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
 rt_sigaction: 1
 brk: 1
@@ -42,3 +43,5 @@
 ioctl: arg1 == SIOCGIFNAME
 # When we catch a SIGTERM, we kill children with SIGTERM too.
 kill: 1
+lseek: 1
+fstatfs: 1
diff --git a/chromeos-base/arc-sslh-init/files/sslh-seccomp-arm.policy b/chromeos-base/arc-sslh-init/files/sslh-seccomp-arm.policy
index 1ad24fe..978f5f0 100644
--- a/chromeos-base/arc-sslh-init/files/sslh-seccomp-arm.policy
+++ b/chromeos-base/arc-sslh-init/files/sslh-seccomp-arm.policy
@@ -42,3 +42,6 @@
 # When we catch a SIGTERM, we kill children with SIGTERM too.
 kill: 1
 sigreturn: 1
+lseek: 1
+_llseek: 1
+fstatfs64: 1
diff --git a/chromeos-base/arc-sslh-init/files/sslh-seccomp-arm64.policy b/chromeos-base/arc-sslh-init/files/sslh-seccomp-arm64.policy
index 9ad3660..a2308475 100644
--- a/chromeos-base/arc-sslh-init/files/sslh-seccomp-arm64.policy
+++ b/chromeos-base/arc-sslh-init/files/sslh-seccomp-arm64.policy
@@ -40,3 +40,5 @@
 ioctl: arg1 == SIOCGIFNAME
 # When we catch a SIGTERM, we kill children with SIGTERM too.
 kill: 1
+lseek: 1
+fstatfs: 1
diff --git a/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r102.ebuild b/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r102.ebuild
new file mode 100644
index 0000000..490ed8c
--- /dev/null
+++ b/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r102.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2020 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="95515b5e08fc2fa008e47885fda8bd443d8c5b0b"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "0c5d891fa800a59e0e40fbece73b10a84f3fde65" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/vm/boot_notification_server .gn"
+
+PLATFORM_SUBDIR="arc/vm/boot_notification_server"
+
+inherit cros-workon platform user
+
+DESCRIPTION="ARCVM boot notification server"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/boot_notification_server"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+SLOT="0/0"
+IUSE="+seccomp"
+
+src_install() {
+	newsbin "${OUT}/boot_notification_server" arcvm_boot_notification_server
+
+	insinto /etc/init
+	doins arcvm-boot-notification-server.conf
+
+	insinto /usr/share/policy
+	use seccomp && newins "arcvm_boot_notification_server-seccomp-${ARCH}.policy" arcvm_boot_notification_server-seccomp.policy
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/boot_notification_server_testrunner"
+}
+
+pkg_preinst() {
+	enewuser arcvm-boot-notification-server
+	enewgroup arcvm-boot-notification-server
+}
diff --git a/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r71.ebuild b/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r71.ebuild
deleted file mode 100644
index 9d55915..0000000
--- a/chromeos-base/arcvm-boot-notification-server/arcvm-boot-notification-server-0.0.1-r71.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "546ca65e6631a7978be69ea8f13df0d99a1bc230" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/vm/boot_notification_server .gn"
-
-PLATFORM_SUBDIR="arc/vm/boot_notification_server"
-
-inherit cros-workon platform user
-
-DESCRIPTION="ARCVM boot notification server"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/boot_notification_server"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-SLOT="0/0"
-IUSE="+seccomp"
-
-src_install() {
-	newsbin "${OUT}/boot_notification_server" arcvm_boot_notification_server
-
-	insinto /etc/init
-	doins arcvm-boot-notification-server.conf
-
-	insinto /usr/share/policy
-	use seccomp && newins "arcvm_boot_notification_server-seccomp-${ARCH}.policy" arcvm_boot_notification_server-seccomp.policy
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/boot_notification_server_testrunner"
-}
-
-pkg_preinst() {
-	enewuser arcvm-boot-notification-server
-	enewgroup arcvm-boot-notification-server
-}
diff --git a/chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r104.ebuild b/chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r104.ebuild
deleted file mode 100644
index 101fb47..0000000
--- a/chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r104.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="891275e43ab2ed3070c377dd889259604911e046"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "ecb73efb7df94308415446f7ae5df12d18f3f098" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/vm/scripts .gn"
-
-inherit cros-workon
-
-DESCRIPTION="ARCVM common scripts."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/scripts"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="
-	${RDEPEND}
-	!<=chromeos-base/arc-base-0.0.1-r349
-	!<=chromeos-base/arc-common-scripts-0.0.1-r132
-	chromeos-base/arcvm-mount-media-dirs
-"
-
-src_install() {
-	dosbin arc/vm/scripts/android-sh
-
-	insinto /etc/init
-	doins arc/vm/scripts/init/arcvm-fsverity-certs.conf
-	doins arc/vm/scripts/init/arcvm-host.conf
-	doins arc/vm/scripts/init/arcvm-post-login-services.conf
-	doins arc/vm/scripts/init/arcvm-post-vm-start-services.conf
-	doins arc/vm/scripts/init/arcvm-pre-login-services.conf
-	doins arc/vm/scripts/init/arcvm-ureadahead.conf
-
-	insinto /etc/dbus-1/system.d
-	doins arc/vm/scripts/init/dbus-1/ArcVmScripts.conf
-
-	insinto /usr/share/arcvm
-	doins arc/vm/scripts/init/config.json
-
-	insinto /usr/share/arcvm/fsverity-certs
-	doins arc/vm/scripts/init/certs/fsverity-release.x509.der
-	doins arc/vm/scripts/init/certs/play_store_fsi_cert.der
-
-	# Redirect ARCVM logs to arc.log.
-	insinto /etc/rsyslog.d
-	doins arc/vm/scripts/rsyslog.arc.conf
-}
diff --git a/chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r140.ebuild b/chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r140.ebuild
new file mode 100644
index 0000000..abb1d17
--- /dev/null
+++ b/chromeos-base/arcvm-common-scripts/arcvm-common-scripts-0.0.1-r140.ebuild
@@ -0,0 +1,53 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "68f4c05e6bc458438aeae9eaf6c21df9bbf74427" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/vm/scripts .gn"
+
+inherit cros-workon
+
+DESCRIPTION="ARCVM common scripts."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/scripts"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="
+	${RDEPEND}
+	!<=chromeos-base/arc-base-0.0.1-r349
+	!<=chromeos-base/arc-common-scripts-0.0.1-r132
+	chromeos-base/arcvm-mount-media-dirs
+"
+
+src_install() {
+	dosbin arc/vm/scripts/android-sh
+
+	insinto /etc/init
+	doins arc/vm/scripts/init/arcvm-fsverity-certs.conf
+	doins arc/vm/scripts/init/arcvm-host.conf
+	doins arc/vm/scripts/init/arcvm-post-login-services.conf
+	doins arc/vm/scripts/init/arcvm-post-vm-start-services.conf
+	doins arc/vm/scripts/init/arcvm-pre-login-services.conf
+	doins arc/vm/scripts/init/arcvm-ureadahead.conf
+
+	insinto /etc/dbus-1/system.d
+	doins arc/vm/scripts/init/dbus-1/ArcVmScripts.conf
+
+	insinto /usr/share/arcvm
+	doins arc/vm/scripts/init/config.json
+
+	insinto /usr/share/arcvm/fsverity-certs
+	doins arc/vm/scripts/init/certs/fsverity-release.x509.der
+	doins arc/vm/scripts/init/certs/play_store_fsi_cert.der
+
+	# Redirect ARCVM logs to arc.log.
+	insinto /etc/rsyslog.d
+	doins arc/vm/scripts/rsyslog.arc.conf
+}
diff --git a/chromeos-base/arcvm-forward-pstore/arcvm-forward-pstore-0.0.1-r175.ebuild b/chromeos-base/arcvm-forward-pstore/arcvm-forward-pstore-0.0.1-r175.ebuild
new file mode 100644
index 0000000..2bc64ea
--- /dev/null
+++ b/chromeos-base/arcvm-forward-pstore/arcvm-forward-pstore-0.0.1-r175.ebuild
@@ -0,0 +1,59 @@
+# Copyright 2020 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "7743fe686ef9bd5ed2f18d1eb6cf820611970167" "7ef75a42aba67052842459f221271e681184cc89" "c1bde153626532428bf7409bc0597e79452c5eb8")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+PLATFORM2_PATHS=(
+	common-mk
+	.gn
+
+	arc/vm/forward-pstore
+
+	vm_tools/BUILD.gn
+	vm_tools/common
+)
+CROS_WORKON_SUBTREE="${PLATFORM2_PATHS[*]}"
+
+PLATFORM_SUBDIR="arc/vm/forward-pstore"
+
+inherit cros-workon platform
+
+DESCRIPTION="Forwards pstore file for ARCVM after upgrade."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/vm/forward-pstore"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+SLOT="0/0"
+IUSE="+seccomp"
+
+RDEPEND="
+	dev-libs/protobuf:=
+"
+DEPEND="
+	${RDEPEND}
+	chromeos-base/system_api:=
+	chromeos-base/vm_protos:=
+"
+
+src_install() {
+	newsbin "${OUT}/arcvm-forward-pstore" arcvm-forward-pstore
+
+	insinto /etc/init
+	doins arcvm-forward-pstore.conf
+
+	# Install DBUS configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.ArcVmForwardPstore.conf
+
+	# Install seccomp policy
+	insinto /usr/share/policy
+	use seccomp && newins "seccomp-${ARCH}.policy" arcvm-forward-pstore-seccomp.policy
+}
diff --git a/chromeos-base/arcvm-forward-pstore/arcvm-forward-pstore-0.0.1-r41.ebuild b/chromeos-base/arcvm-forward-pstore/arcvm-forward-pstore-0.0.1-r41.ebuild
deleted file mode 100644
index 1d85719..0000000
--- a/chromeos-base/arcvm-forward-pstore/arcvm-forward-pstore-0.0.1-r41.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b52f5cd0677f40bb863e7f8a9308f344fd5520c6"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "fbd3e931f69a0bf810c1f26f1aa1368486c77944" "ae1f8f0fd10bc02bc924cdd421366393d90769bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/vm/forward-pstore vm_tools .gn"
-
-PLATFORM_SUBDIR="arc/vm/forward-pstore"
-
-inherit cros-workon platform
-
-DESCRIPTION="Forwards pstore file for ARCVM after upgrade."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/vm/forward-pstore"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-SLOT="0/0"
-IUSE="+seccomp"
-
-RDEPEND="
-	dev-libs/protobuf:=
-"
-DEPEND="
-	${RDEPEND}
-	chromeos-base/system_api:=
-	chromeos-base/vm_protos:=
-"
-
-src_install() {
-	newsbin "${OUT}/arcvm-forward-pstore" arcvm-forward-pstore
-
-	insinto /etc/init
-	doins arcvm-forward-pstore.conf
-
-	# Install DBUS configuration file.
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.ArcVmForwardPstore.conf
-
-	# Install seccomp policy
-	insinto /usr/share/policy
-	use seccomp && newins "seccomp-${ARCH}.policy" arcvm-forward-pstore-seccomp.policy
-}
diff --git a/chromeos-base/arcvm-forward-pstore/arcvm-forward-pstore-9999.ebuild b/chromeos-base/arcvm-forward-pstore/arcvm-forward-pstore-9999.ebuild
index bed9603..ea5c80e 100644
--- a/chromeos-base/arcvm-forward-pstore/arcvm-forward-pstore-9999.ebuild
+++ b/chromeos-base/arcvm-forward-pstore/arcvm-forward-pstore-9999.ebuild
@@ -8,7 +8,17 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/vm/forward-pstore vm_tools .gn"
+
+PLATFORM2_PATHS=(
+	common-mk
+	.gn
+
+	arc/vm/forward-pstore
+
+	vm_tools/BUILD.gn
+	vm_tools/common
+)
+CROS_WORKON_SUBTREE="${PLATFORM2_PATHS[*]}"
 
 PLATFORM_SUBDIR="arc/vm/forward-pstore"
 
diff --git a/chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r34.ebuild b/chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r34.ebuild
new file mode 100644
index 0000000..03976f3
--- /dev/null
+++ b/chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r34.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e23cacccf4a8be891ad29fabf2c717600327a772" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/vm/mojo_proxy .gn"
+
+PLATFORM_SUBDIR="arc/vm/mojo_proxy"
+
+inherit cros-workon platform
+
+DESCRIPTION="ARCVM mojo proxy."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/mojo_proxy"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+# This package was renamed from  arcvm-vsock-proxy. Put a blocker to uninstall
+# the old package.
+# TODO(hashimoto): Remove this blocker later.
+RDEPEND="
+	!chromeos-base/arcvm-vsock-proxy
+
+	dev-libs/protobuf:=
+	sys-fs/fuse
+"
+
+DEPEND="
+	${RDEPEND}
+"
+
+src_install() {
+	newbin "${OUT}"/server_proxy arcvm_server_proxy
+
+	insinto /etc/init
+	doins init/arcvm-server-proxy.conf
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/mojo_proxy_test"
+}
diff --git a/chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r4.ebuild b/chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r4.ebuild
deleted file mode 100644
index 65c0832..0000000
--- a/chromeos-base/arcvm-mojo-proxy/arcvm-mojo-proxy-0.0.1-r4.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "0598f6aab193a1da93fd10036c100a1d800350bc" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/vm/mojo_proxy .gn"
-
-PLATFORM_SUBDIR="arc/vm/mojo_proxy"
-
-inherit cros-workon platform
-
-DESCRIPTION="ARCVM mojo proxy."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/mojo_proxy"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-# This package was renamed from  arcvm-vsock-proxy. Put a blocker to uninstall
-# the old package.
-# TODO(hashimoto): Remove this blocker later.
-RDEPEND="
-	!chromeos-base/arcvm-vsock-proxy
-
-	dev-libs/protobuf:=
-	sys-fs/fuse
-"
-
-DEPEND="
-	${RDEPEND}
-"
-
-src_install() {
-	newbin "${OUT}"/server_proxy arcvm_server_proxy
-
-	insinto /etc/init
-	doins init/arcvm-server-proxy.conf
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/mojo_proxy_test"
-}
diff --git a/chromeos-base/arcvm-mount-media-dirs/arcvm-mount-media-dirs-0.0.1-r39.ebuild b/chromeos-base/arcvm-mount-media-dirs/arcvm-mount-media-dirs-0.0.1-r39.ebuild
deleted file mode 100644
index 17e8a2e..0000000
--- a/chromeos-base/arcvm-mount-media-dirs/arcvm-mount-media-dirs-0.0.1-r39.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="891275e43ab2ed3070c377dd889259604911e046"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "c9f42ec607fcaf0dc1770080e49f9705bf7c5301" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/vm/scripts/init/mount-media-dirs .gn"
-
-inherit cros-workon
-
-DESCRIPTION="Mount media directories on a mount point shared with ARCVM."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/scripts/init/mount-media-dirs"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="
-	chromeos-base/mount-passthrough
-"
-
-src_install() {
-	insinto /etc/init
-	doins arc/vm/scripts/init/mount-media-dirs/arcvm-mount-myfiles.conf
-	doins arc/vm/scripts/init/mount-media-dirs/arcvm-mount-removable-media.conf
-}
diff --git a/chromeos-base/arcvm-mount-media-dirs/arcvm-mount-media-dirs-0.0.1-r70.ebuild b/chromeos-base/arcvm-mount-media-dirs/arcvm-mount-media-dirs-0.0.1-r70.ebuild
new file mode 100644
index 0000000..cfb8269
--- /dev/null
+++ b/chromeos-base/arcvm-mount-media-dirs/arcvm-mount-media-dirs-0.0.1-r70.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "954e934fa76d67253d978d97346b24a1fce9be2c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/vm/scripts/init/mount-media-dirs .gn"
+
+inherit cros-workon
+
+DESCRIPTION="Mount media directories on a mount point shared with ARCVM."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/scripts/init/mount-media-dirs"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/mount-passthrough
+"
+
+src_install() {
+	insinto /etc/init
+	doins arc/vm/scripts/init/mount-media-dirs/arcvm-mount-myfiles.conf
+	doins arc/vm/scripts/init/mount-media-dirs/arcvm-mount-play-files.conf
+	doins arc/vm/scripts/init/mount-media-dirs/arcvm-mount-removable-media.conf
+	doins arc/vm/scripts/init/mount-media-dirs/arcvm-mount-sdcard-dir.conf
+}
diff --git a/chromeos-base/arcvm-mount-media-dirs/arcvm-mount-media-dirs-9999.ebuild b/chromeos-base/arcvm-mount-media-dirs/arcvm-mount-media-dirs-9999.ebuild
index a2f9aa5..92076b1 100644
--- a/chromeos-base/arcvm-mount-media-dirs/arcvm-mount-media-dirs-9999.ebuild
+++ b/chromeos-base/arcvm-mount-media-dirs/arcvm-mount-media-dirs-9999.ebuild
@@ -24,5 +24,7 @@
 src_install() {
 	insinto /etc/init
 	doins arc/vm/scripts/init/mount-media-dirs/arcvm-mount-myfiles.conf
+	doins arc/vm/scripts/init/mount-media-dirs/arcvm-mount-play-files.conf
 	doins arc/vm/scripts/init/mount-media-dirs/arcvm-mount-removable-media.conf
+	doins arc/vm/scripts/init/mount-media-dirs/arcvm-mount-sdcard-dir.conf
 }
diff --git a/chromeos-base/atrusctl/atrusctl-0.0.1-r946.ebuild b/chromeos-base/atrusctl/atrusctl-0.0.1-r946.ebuild
deleted file mode 100644
index 9b1b5fa..0000000
--- a/chromeos-base/atrusctl/atrusctl-0.0.1-r946.ebuild
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("3878b0f0387af837629fbf9b68fb4c7bf6e29c6c" "c50a9b98e7025a59f10f7d1d9f844dc48dd05645")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "bf3ca2cf751d3dcbf605278a8a41d0851e52d360")
-CROS_WORKON_LOCALNAME=("platform2" "third_party/atrusctl")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/atrusctl")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/atrusctl")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_SUBDIR="atrusctl"
-
-inherit cros-workon platform udev user
-
-DESCRIPTION="CrOS daemon for the Atrus speakerphone"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/atrusctl/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-DEPEND="
-	virtual/libusb:1
-	virtual/libudev:0=
-"
-RDEPEND="
-	${DEPEND}
-	!sys-apps/atrusctl
-"
-
-src_install() {
-	dosbin "${OUT}/atrusd"
-
-	insinto /etc/rsyslog.d
-	newins conf/rsyslog-atrus.conf atrus.conf
-
-	udev_newrules conf/udev-atrus.rules 99-atrus.rules
-
-	insinto /etc/init
-	doins init/atrusd.conf
-
-	insinto /etc/dbus-1/system.d
-	doins dbus_permissions/org.chromium.Atrusctl.conf
-}
-
-pkg_preinst() {
-	enewuser atrus
-	enewgroup atrus
-}
diff --git a/chromeos-base/atrusctl/atrusctl-0.0.1-r973.ebuild b/chromeos-base/atrusctl/atrusctl-0.0.1-r973.ebuild
new file mode 100644
index 0000000..5a90fcd
--- /dev/null
+++ b/chromeos-base/atrusctl/atrusctl-0.0.1-r973.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("e3e4d3ec57ebaf15c52d430687a3c5263bb0b23e" "77a0ad988406a971fc45b4e66befc240fbf0d48a")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "90cfa2a210ebed49a8ce050686db523ef372c62c")
+CROS_WORKON_LOCALNAME=("platform2" "third_party/atrusctl")
+CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/atrusctl")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/atrusctl")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+
+PLATFORM_SUBDIR="atrusctl"
+
+inherit cros-workon platform udev user
+
+DESCRIPTION="CrOS daemon for the Atrus speakerphone"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/atrusctl/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+DEPEND="
+	virtual/libusb:1
+	virtual/libudev:0=
+"
+RDEPEND="
+	${DEPEND}
+	!sys-apps/atrusctl
+"
+
+src_install() {
+	dosbin "${OUT}/atrusd"
+
+	insinto /etc/rsyslog.d
+	newins conf/rsyslog-atrus.conf atrus.conf
+
+	udev_newrules conf/udev-atrus.rules 99-atrus.rules
+
+	insinto /etc/init
+	doins init/atrusd.conf
+
+	insinto /etc/dbus-1/system.d
+	doins dbus_permissions/org.chromium.Atrusctl.conf
+}
+
+pkg_preinst() {
+	enewuser atrus
+	enewgroup atrus
+}
diff --git a/chromeos-base/attestation-client/attestation-client-0.0.1-r260.ebuild b/chromeos-base/attestation-client/attestation-client-0.0.1-r260.ebuild
deleted file mode 100644
index bc2f6f6..0000000
--- a/chromeos-base/attestation-client/attestation-client-0.0.1-r260.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="93c9e332867c5b0b8283c37f7d5ce1bb4b13e074"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e2d4b5c2a34733c2112e0a9a8d0a2171f90ec316" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 .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/+/master/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:=
-"
-
-# 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() {
-	# Install D-Bus client library.
-	platform_install_dbus_client_lib "attestation"
-}
diff --git a/chromeos-base/attestation-client/attestation-client-0.0.1-r318.ebuild b/chromeos-base/attestation-client/attestation-client-0.0.1-r318.ebuild
new file mode 100644
index 0000000..21d7008
--- /dev/null
+++ b/chromeos-base/attestation-client/attestation-client-0.0.1-r318.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8a6aa0783afea740fe52cec225aef91187cbcde6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 .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/+/master/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:=
+"
+
+# 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() {
+	# Install D-Bus client library.
+	platform_install_dbus_client_lib "attestation"
+}
diff --git a/chromeos-base/attestation/attestation-0.0.1-r3041.ebuild b/chromeos-base/attestation/attestation-0.0.1-r3041.ebuild
deleted file mode 100644
index 857afa1..0000000
--- a/chromeos-base/attestation/attestation-0.0.1-r3041.ebuild
+++ /dev/null
@@ -1,109 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5fc770072f3c76a5fff2f346ec832ddc44970226"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e2d4b5c2a34733c2112e0a9a8d0a2171f90ec316" "5956de9997bc0735d9aeff6edc4d0098fb571b9b" "989d840598227b15d78525d5f92c806011a9c158" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e3bf102d9535965e9911dc352202c6927e8f5514" "20ed8021024637e492670d20fa5969a2ad75e4b6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 attestation chaps libhwsec metrics tpm_manager trunks .gn"
-
-PLATFORM_SUBDIR="attestation"
-
-inherit cros-workon libchrome platform user
-
-DESCRIPTION="Attestation service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/attestation/"
-
-LICENSE="Apache-2.0"
-KEYWORDS="*"
-IUSE="test tpm tpm2"
-
-REQUIRED_USE="tpm2? ( !tpm )"
-
-RDEPEND="
-	tpm? (
-		app-crypt/trousers:=
-	)
-	tpm2? (
-		chromeos-base/trunks:=
-	)
-	chromeos-base/chaps:=
-	chromeos-base/system_api:=[fuzzer?]
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/minijail:=
-	chromeos-base/tpm_manager:=
-	"
-
-DEPEND="
-	${RDEPEND}
-	test? ( chromeos-base/libhwsec:= )
-	chromeos-base/vboot_reference:=
-	tpm2? (
-		chromeos-base/trunks:=[test?]
-		chromeos-base/chromeos-ec-headers:=
-	)
-	"
-
-pkg_preinst() {
-	# Create user and group for attestation.
-	enewuser "attestation"
-	enewgroup "attestation"
-	# Create group for /mnt/stateful_partition/unencrypted/preserve.
-	enewgroup "preserve"
-}
-
-src_install() {
-	insinto /etc/dbus-1/system.d
-	doins server/org.chromium.Attestation.conf
-
-	insinto /etc/init
-	doins server/attestationd.conf
-
-	dosbin "${OUT}"/attestationd
-	dobin "${OUT}"/attestation_client
-
-	insinto /usr/share/policy
-	newins server/attestationd-seccomp-${ARCH}.policy attestationd-seccomp.policy
-
-	insinto /etc/dbus-1/system.d
-	doins pca_agent/server/org.chromium.PcaAgent.conf
-	insinto /etc/init
-	doins pca_agent/server/pca_agentd.conf
-	dosbin "${OUT}"/pca_agentd
-	dobin "${OUT}"/pca_agent_client
-
-	dolib.so "${OUT}"/lib/libattestation.so
-
-
-	insinto /usr/include/attestation/client
-	doins client/dbus_proxy.h
-	insinto /usr/include/attestation/common
-	doins common/attestation_interface.h
-	doins common/print_attestation_ca_proto.h
-	doins common/print_interface_proto.h
-	doins common/print_keystore_proto.h
-
-	# Install the generated dbus-binding for fake pca agent.
-	# It does no harm to install the header even for non-test image build.
-	insinto /usr/include/attestation/pca-agent/dbus_adaptors
-	doins "${OUT}"/gen/include/attestation/pca-agent/dbus_adaptors/org.chromium.PcaAgent.h
-
-	insinto /usr/share/policy
-	newins "pca_agent/server/pca_agentd-seccomp-${ARCH}.policy" pca_agentd-seccomp.policy
-}
-
-platform_pkg_test() {
-	local tests=(
-		attestation_testrunner
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/attestation/attestation-0.0.1-r3188.ebuild b/chromeos-base/attestation/attestation-0.0.1-r3188.ebuild
new file mode 100644
index 0000000..e2ce139
--- /dev/null
+++ b/chromeos-base/attestation/attestation-0.0.1-r3188.ebuild
@@ -0,0 +1,107 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="d27dfb81bc87df4db16849f5da1b96f1cf5cd10b"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8a6aa0783afea740fe52cec225aef91187cbcde6" "8640df3a4aff4084b644aeefc4d31752a1d97665" "81dfbbc1756a3b4224b447e7bf10a916d97c4f66" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6" "a06a3f47395fb7b584188c6852764bc773e5497e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 attestation chaps libhwsec metrics tpm_manager trunks .gn"
+
+PLATFORM_SUBDIR="attestation"
+
+inherit cros-workon libchrome platform user
+
+DESCRIPTION="Attestation service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/attestation/"
+
+LICENSE="Apache-2.0"
+KEYWORDS="*"
+IUSE="generic_tpm2 test tpm tpm2"
+
+REQUIRED_USE="tpm2? ( !tpm )"
+
+RDEPEND="
+	tpm? (
+		app-crypt/trousers:=
+	)
+	tpm2? (
+		chromeos-base/trunks:=
+	)
+	chromeos-base/chaps:=
+	chromeos-base/system_api:=[fuzzer?]
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/minijail:=
+	chromeos-base/tpm_manager:=
+	chromeos-base/attestation-client
+	"
+
+DEPEND="
+	${RDEPEND}
+	test? ( chromeos-base/libhwsec:= )
+	chromeos-base/vboot_reference:=
+	tpm2? (
+		chromeos-base/trunks:=[test?]
+		chromeos-base/chromeos-ec-headers:=
+	)
+	"
+
+pkg_preinst() {
+	# Create user and group for attestation.
+	enewuser "attestation"
+	enewgroup "attestation"
+	# Create group for /mnt/stateful_partition/unencrypted/preserve.
+	enewgroup "preserve"
+}
+
+src_install() {
+	insinto /etc/dbus-1/system.d
+	doins server/org.chromium.Attestation.conf
+
+	insinto /etc/init
+	doins server/attestationd.conf
+
+	dosbin "${OUT}"/attestationd
+	dobin "${OUT}"/attestation_client
+
+	insinto /usr/share/policy
+	newins server/attestationd-seccomp-${ARCH}.policy attestationd-seccomp.policy
+
+	insinto /etc/dbus-1/system.d
+	doins pca_agent/server/org.chromium.PcaAgent.conf
+	insinto /etc/init
+	doins pca_agent/server/pca_agentd.conf
+	dosbin "${OUT}"/pca_agentd
+	dobin "${OUT}"/pca_agent_client
+
+	dolib.so "${OUT}"/lib/libattestation.so
+
+	insinto /usr/include/attestation/common
+	doins common/attestation_interface.h
+	doins common/print_attestation_ca_proto.h
+	doins common/print_interface_proto.h
+	doins common/print_keystore_proto.h
+
+	# Install the generated dbus-binding for fake pca agent.
+	# It does no harm to install the header even for non-test image build.
+	insinto /usr/include/attestation/pca-agent/dbus_adaptors
+	doins "${OUT}"/gen/include/attestation/pca-agent/dbus_adaptors/org.chromium.PcaAgent.h
+
+	insinto /usr/share/policy
+	newins "pca_agent/server/pca_agentd-seccomp-${ARCH}.policy" pca_agentd-seccomp.policy
+}
+
+platform_pkg_test() {
+	local tests=(
+		attestation_testrunner
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/attestation/attestation-9999.ebuild b/chromeos-base/attestation/attestation-9999.ebuild
index 70b2a53..f6c538d 100644
--- a/chromeos-base/attestation/attestation-9999.ebuild
+++ b/chromeos-base/attestation/attestation-9999.ebuild
@@ -19,7 +19,7 @@
 
 LICENSE="Apache-2.0"
 KEYWORDS="~*"
-IUSE="test tpm tpm2"
+IUSE="generic_tpm2 test tpm tpm2"
 
 REQUIRED_USE="tpm2? ( !tpm )"
 
@@ -35,6 +35,7 @@
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/minijail:=
 	chromeos-base/tpm_manager:=
+	chromeos-base/attestation-client
 	"
 
 DEPEND="
@@ -77,9 +78,6 @@
 
 	dolib.so "${OUT}"/lib/libattestation.so
 
-
-	insinto /usr/include/attestation/client
-	doins client/dbus_proxy.h
 	insinto /usr/include/attestation/common
 	doins common/attestation_interface.h
 	doins common/print_attestation_ca_proto.h
diff --git a/chromeos-base/audiotest/audiotest-0.0.1-r90.ebuild b/chromeos-base/audiotest/audiotest-0.0.1-r90.ebuild
deleted file mode 100644
index 040544e..0000000
--- a/chromeos-base/audiotest/audiotest-0.0.1-r90.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="254f8cbe7baba9e9263a23901e7cf33314ff00dd"
-CROS_WORKON_TREE="73626da07ec9a713034e026f65d181db14f62037"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_PROJECT="chromiumos/platform/audiotest"
-CROS_WORKON_LOCALNAME="platform/audiotest"
-
-inherit cros-sanitizers cros-workon cros-common.mk
-
-DESCRIPTION="Audio test tools"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/audiotest"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan"
-
-RDEPEND="media-libs/alsa-lib
-	media-sound/adhd"
-DEPEND="${RDEPEND}"
-
-src_configure() {
-	sanitizers-setup-env
-	cros-common.mk_src_configure
-}
-
-src_install() {
-	# Install built tools
-	pushd "${OUT}" >/dev/null
-	dobin src/alsa_api_test
-	dobin alsa_conformance_test/alsa_conformance_test
-	dobin src/alsa_helpers
-	dobin src/audiofuntest
-	dobin src/cras_api_test
-	dobin src/loopback_latency
-	dobin script/alsa_conformance_test.py
-	popd >/dev/null
-}
diff --git a/chromeos-base/audiotest/audiotest-0.0.1-r93.ebuild b/chromeos-base/audiotest/audiotest-0.0.1-r93.ebuild
new file mode 100644
index 0000000..5791e91
--- /dev/null
+++ b/chromeos-base/audiotest/audiotest-0.0.1-r93.ebuild
@@ -0,0 +1,42 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="edd4bdfaf196016350c0def3fa2e6eabc502339d"
+CROS_WORKON_TREE="e51a0909385bb2619e4b4e099e8a7e3dcd5e629c"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_PROJECT="chromiumos/platform/audiotest"
+CROS_WORKON_LOCALNAME="platform/audiotest"
+
+inherit cros-sanitizers cros-workon cros-common.mk
+
+DESCRIPTION="Audio test tools"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/audiotest"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="-asan"
+
+RDEPEND="media-libs/alsa-lib
+	media-sound/adhd"
+DEPEND="${RDEPEND}"
+
+src_configure() {
+	sanitizers-setup-env
+	cros-common.mk_src_configure
+}
+
+src_install() {
+	# Install built tools
+	pushd "${OUT}" >/dev/null
+	dobin src/alsa_api_test
+	dobin alsa_conformance_test/alsa_conformance_test
+	dobin src/alsa_helpers
+	dobin src/audiofuntest
+	dobin src/cras_api_test
+	dobin src/loopback_latency
+	dobin script/alsa_conformance_test.py
+	popd >/dev/null
+}
diff --git a/chromeos-base/authpolicy/authpolicy-0.0.1-r1576.ebuild b/chromeos-base/authpolicy/authpolicy-0.0.1-r1576.ebuild
deleted file mode 100644
index ebaab3a..0000000
--- a/chromeos-base/authpolicy/authpolicy-0.0.1-r1576.ebuild
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "b5d7fbdfbfcbc31321752d83e713f53f67bbb443" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 authpolicy metrics .gn"
-
-PLATFORM_SUBDIR="authpolicy"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Provides authentication to LDAP and fetching device/user policies"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/authpolicy/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="+samba asan fuzzer"
-
-COMMMON_DEPEND="
-	app-crypt/mit-krb5:=
-	chromeos-base/libbrillo:=[asan?,fuzzer?]
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	>=chromeos-base/minijail-0.0.1-r1477:=
-	dev-libs/protobuf:=
-	samba? ( >=net-fs/samba-4.5.3-r6:= )
-	sys-apps/dbus:=
-	sys-libs/libcap:=
-"
-RDEPEND="${COMMMON_DEPEND}"
-DEPEND="
-	${COMMMON_DEPEND}
-	>=chromeos-base/protofiles-0.0.39:=
-	chromeos-base/session_manager-client:=
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-pkg_setup() {
-	# Has to be done in pkg_setup() instead of pkg_preinst() since
-	# src_install() needs authpolicyd.
-	enewuser "authpolicyd"
-	enewgroup "authpolicyd"
-	enewuser "authpolicyd-exec"
-	enewgroup "authpolicyd-exec"
-	cros-workon_pkg_setup
-}
-
-src_install() {
-	dosbin "${OUT}"/authpolicyd
-	dosbin "${OUT}"/authpolicy_parser
-	insinto /etc/dbus-1/system.d
-	doins etc/dbus-1/org.chromium.AuthPolicy.conf
-	insinto /etc/init
-	doins etc/init/authpolicyd.conf
-	insinto /usr/share/policy
-	doins seccomp_filters/*.policy
-	insinto /usr/share/cros/startup/process_management_policies
-	doins setuid_restrictions/authpolicyd_whitelist.txt
-
-	# Create daemon store folder prototype, see
-	# https://chromium.googlesource.com/chromiumos/docs/+/master/sandboxing.md#securely-mounting-cryptohome-daemon-store-folders
-	local daemon_store="/etc/daemon-store/authpolicyd"
-	dodir "${daemon_store}"
-	fperms 0700 "${daemon_store}"
-	fowners authpolicyd:authpolicyd "${daemon_store}"
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/preg_parser_fuzzer \
-		--dict "${S}"/policy/testdata/preg_parser_fuzzer.dict
-}
-
-platform_pkg_test() {
-	local tests=(
-		authpolicy_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-
-	platform_fuzzer_test "${OUT}"/preg_parser_fuzzer
-}
diff --git a/chromeos-base/authpolicy/authpolicy-0.0.1-r1646.ebuild b/chromeos-base/authpolicy/authpolicy-0.0.1-r1646.ebuild
new file mode 100644
index 0000000..fd9ac3b
--- /dev/null
+++ b/chromeos-base/authpolicy/authpolicy-0.0.1-r1646.ebuild
@@ -0,0 +1,89 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="0553127ef2b660a5c71f12a9417ed4ad35f07120"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8e29f11c718c4a832c570433a5cf1e5382d6576f" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 authpolicy metrics .gn"
+
+PLATFORM_SUBDIR="authpolicy"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Provides authentication to LDAP and fetching device/user policies"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/authpolicy/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="+samba asan fuzzer"
+
+COMMMON_DEPEND="
+	app-crypt/mit-krb5:=
+	chromeos-base/libbrillo:=[asan?,fuzzer?]
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	>=chromeos-base/minijail-0.0.1-r1477:=
+	dev-libs/protobuf:=
+	samba? ( >=net-fs/samba-4.5.3-r6:= )
+	sys-apps/dbus:=
+	sys-libs/libcap:=
+"
+RDEPEND="${COMMMON_DEPEND}"
+DEPEND="
+	${COMMMON_DEPEND}
+	>=chromeos-base/protofiles-0.0.45:=
+	chromeos-base/session_manager-client:=
+	chromeos-base/system_api:=[fuzzer?]
+"
+
+pkg_setup() {
+	# Has to be done in pkg_setup() instead of pkg_preinst() since
+	# src_install() needs authpolicyd.
+	enewuser "authpolicyd"
+	enewgroup "authpolicyd"
+	enewuser "authpolicyd-exec"
+	enewgroup "authpolicyd-exec"
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	dosbin "${OUT}"/authpolicyd
+	dosbin "${OUT}"/authpolicy_parser
+	insinto /etc/dbus-1/system.d
+	doins etc/dbus-1/org.chromium.AuthPolicy.conf
+	insinto /etc/init
+	doins etc/init/authpolicyd.conf
+	insinto /usr/share/policy
+	doins seccomp_filters/*.policy
+	insinto /usr/share/cros/startup/process_management_policies
+	doins setuid_restrictions/authpolicyd_whitelist.txt
+
+	# Create daemon store folder prototype, see
+	# https://chromium.googlesource.com/chromiumos/docs/+/master/sandboxing.md#securely-mounting-cryptohome-daemon-store-folders
+	local daemon_store="/etc/daemon-store/authpolicyd"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners authpolicyd:authpolicyd "${daemon_store}"
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/preg_parser_fuzzer \
+		--dict "${S}"/policy/testdata/preg_parser_fuzzer.dict
+}
+
+platform_pkg_test() {
+	local tests=(
+		authpolicy_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+
+	platform_fuzzer_test "${OUT}"/preg_parser_fuzzer
+}
diff --git a/chromeos-base/authpolicy/authpolicy-9999.ebuild b/chromeos-base/authpolicy/authpolicy-9999.ebuild
index 3cf0ecf..076483d 100644
--- a/chromeos-base/authpolicy/authpolicy-9999.ebuild
+++ b/chromeos-base/authpolicy/authpolicy-9999.ebuild
@@ -35,7 +35,7 @@
 RDEPEND="${COMMMON_DEPEND}"
 DEPEND="
 	${COMMMON_DEPEND}
-	>=chromeos-base/protofiles-0.0.39:=
+	>=chromeos-base/protofiles-0.0.45:=
 	chromeos-base/session_manager-client:=
 	chromeos-base/system_api:=[fuzzer?]
 "
diff --git a/chromeos-base/autotest-capability-default/autotest-capability-default-0.0.5-r2.ebuild b/chromeos-base/autotest-capability-default/autotest-capability-default-0.0.5-r4.ebuild
similarity index 100%
rename from chromeos-base/autotest-capability-default/autotest-capability-default-0.0.5-r2.ebuild
rename to chromeos-base/autotest-capability-default/autotest-capability-default-0.0.5-r4.ebuild
diff --git a/chromeos-base/autotest-capability-default/files/managed-capabilities.yaml b/chromeos-base/autotest-capability-default/files/managed-capabilities.yaml
index 8bc30c5..2fdacbc 100644
--- a/chromeos-base/autotest-capability-default/files/managed-capabilities.yaml
+++ b/chromeos-base/autotest-capability-default/files/managed-capabilities.yaml
@@ -45,10 +45,39 @@
 - hw_dec_av1_2160_30_10bpp
 - hw_dec_av1_2160_60_10bpp
 
+## HEVC (Profile Main)
+- hw_dec_hevc_1080_30
+- hw_dec_hevc_1080_60
+- hw_dec_hevc_2160_30
+- hw_dec_hevc_2160_60
+- hw_dec_hevc_1080_30_10bpp
+- hw_dec_hevc_1080_60_10bpp
+- hw_dec_hevc_2160_30_10bpp
+- hw_dec_hevc_2160_60_10bpp
+
 ## JPEG
 ## hw_dec_jpeg is marked if a device supports JPEG HW decoding.
 - hw_dec_jpeg
 
+# HW protected decoding
+## H264 for CENCv1/3 with AES-CBC/AES-CTR
+- hw_video_prot_cencv1_h264_cbc
+- hw_video_prot_cencv1_h264_ctr
+- hw_video_prot_cencv3_h264_cbc
+- hw_video_prot_cencv3_h264_ctr
+
+## VP9/VP9.2 for CENCv3 with AES-CBC/AES-CTR
+- hw_video_prot_cencv3_vp9_cbc
+- hw_video_prot_cencv3_vp9_ctr
+
+## AV1 for CENCv3 with AES-CBC/AES-CTR
+- hw_video_prot_cencv3_av1_cbc
+- hw_video_prot_cencv3_av1_ctr
+
+## HEVC for CENCv3 with AES-CBC/AES-CTR
+- hw_video_prot_cencv3_hevc_cbc
+- hw_video_prot_cencv3_hevc_ctr
+
 
 # HW encoding
 ## Not all HW encoders support odd dimension encoding (e.g. trogdor).
diff --git a/chromeos-base/autotest-chrome/autotest-chrome-0.0.1-r7775.ebuild b/chromeos-base/autotest-chrome/autotest-chrome-0.0.1-r7775.ebuild
deleted file mode 100644
index b25b9ef..0000000
--- a/chromeos-base/autotest-chrome/autotest-chrome-0.0.1-r7775.ebuild
+++ /dev/null
@@ -1,270 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="765d3931033a82d56d6b8689d68f25860398d97f"
-CROS_WORKON_TREE="8a5e4b77219713e15dd9d0c5567b70e2e344a509"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Autotest tests that require chrome_binary_test, or telemetry deps"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Enable autotest by default.
-IUSE="
-	${IUSE}
-	+autotest
-	+cellular
-	drm_atomic
-	+shill
-	+tpm
-	tpm2
-	vaapi
-"
-
-RDEPEND="
-	!chromeos-base/autotest-telemetry
-	!<chromeos-base/autotest-tests-0.0.4
-	!<chromeos-base/autotest-tests-cellular-0.0.1-r3203
-	chromeos-base/autotest-deps-graphics
-	chromeos-base/autotest-deps-policy
-	chromeos-base/autotest-deps-webgl-mpd
-	chromeos-base/chromeos-chrome
-	dev-python/mkvparse
-	shill? ( chromeos-base/shill-test-scripts )
-	chromeos-base/telemetry
-	sys-apps/ethtool
-	vaapi? ( x11-libs/libva )
-	tests_graphics_WebGLAquarium? ( app-benchmarks/microbenchmarks dev-util/memory-eater-locked )
-	virtual/autotest-private-libs
-"
-
-DEPEND="${RDEPEND}"
-
-IUSE_TESTS=(
-	# Tests that depend on telemetry.
-	+tests_accessibility_Sanity
-	+tests_accessibility_ChromeVoxSound
-	+tests_audio_ActiveStreamStress
-	+tests_audio_AudioCorruption
-	+tests_audio_CrasSanity
-	+tests_audio_PlaybackPower
-	+tests_audio_SeekAudioFeedback
-	+tests_autoupdate_EOL
-	+tests_autoupdate_LoginStartUpdateLogout
-	+tests_autoupdate_StartOOBEUpdate
-	+tests_autoupdate_UpdateFromUI
-	+tests_autoupdate_UserData
-	+tests_bluetooth_AdapterReboot
-	+tests_bluetooth_AdapterHealth
-	+tests_bluetooth_IDCheck
-	+tests_bluetooth_RegressionClient
-	+tests_bluetooth_TurnOnOffUI
-	+tests_desktopui_AudioFeedback
-	+tests_desktopui_CheckRlzPingSent
-	+tests_desktopui_ChromeSanity
-	tests_desktopui_ConnectivityDiagnostics
-	+tests_desktopui_MediaAudioFeedback
-	+tests_desktopui_ScreenLocker
-	+tests_desktopui_SimpleLogin
-	+tests_desktopui_UrlFetchWithChromeDriver
-	+tests_display_ClientChameleonConnection
-	+tests_display_DisplayContainEdid
-	+tests_dummy_IdleSuspend
-	+tests_enterprise_FakeEnrollment
-	+tests_enterprise_KioskEnrollment
-	+tests_enterprise_OnlineDemoModeEnrollment
-	+tests_enterprise_PowerManagement
-	+tests_enterprise_RemoraRequisition
-	+tests_graphics_Chrome
-	+tests_graphics_Stress
-	+tests_graphics_VideoRenderingPower
-	+tests_graphics_VTSwitch
-	+tests_graphics_WebGLAquarium
-	+tests_graphics_WebGLManyPlanetsDeep
-	tests_logging_AsanCrash
-	+tests_logging_CrashServices
-	+tests_logging_FeedbackReport
-	+tests_login_ChromeProfileSanitary
-	+tests_login_CryptohomeDataLeak
-	+tests_login_CryptohomeIncognito
-	+tests_login_GaiaLogin
-	+tests_login_LoginSuccess
-	+tests_login_OobeLocalization
-	+tests_login_SavePassword
-	+tests_login_UnicornLogin
-	+tests_longevity_Tracker
-	+tests_network_CastTDLS
-	+tests_network_ChromeWifiConfigure
-	+tests_platform_ChromeCgroups
-	+tests_platform_InitLoginPerf
-	+tests_platform_InputBrightness
-	+tests_platform_InputBrowserNav
-	+tests_platform_InputNewTab
-	+tests_platform_InputScreenshot
-	+tests_platform_InputVolume
-	+tests_platform_LogoutPerf
-	+tests_platform_LowMemoryTest
-	+tests_platform_MouseScrollTest
-	+tests_platform_PrintJob
-	+tests_platform_SessionManagerBlockDevmodeSetting
-	+tests_platform_ScrollTest
-	+tests_policy_AccessibilityTest
-	+tests_policy_ArcAudioCaptureAllowed
-	+tests_policy_ArcBackupRestoreServiceEnabled
-	+tests_policy_ArcExternalStorageDisabled
-	+tests_policy_ArcVideoCaptureAllowed
-	+tests_policy_ArcDisableScreenshots
-	+tests_policy_AudioOutputAllowed
-	+tests_policy_AutotestSanity
-	+tests_policy_ChromeOsLockOnIdleSuspend
-	+tests_policy_CookiesAllowedForUrls
-	+tests_policy_CookiesBlockedForUrls
-	+tests_policy_CookiesSessionOnlyForUrls
-	+tests_policy_DefaultSearchProvider
-	+tests_policy_DeveloperToolsAvailability
-	+tests_policy_DeviceAllowBluetooth
-	+tests_policy_DeviceAutoUpdateDisabled
-	+tests_policy_DeviceCharging
-	+tests_policy_DeviceDockMacAddressSource
-	+tests_policy_DeviceScheduledCharging
-	+tests_policy_DisableScreenshots
-	+tests_policy_DownloadDirectory
-	+tests_policy_DriveDisabled
-	+tests_policy_DeviceEphemeralUsersEnabled
-	+tests_policy_EnrollmentRetainment
-	+tests_policy_EnterpriseForceInstallCustom
-	+tests_policy_ExtensionPolicy
-	+tests_policy_ExternalStorageDisabled
-	+tests_policy_ExternalStorageReadOnly
-	+tests_policy_ForceYouTubeRestrict
-	+tests_policy_ForceYouTubeSafetyMode
-	+tests_policy_KeyPermissions
-	+tests_policy_KioskModeEnabled
-	+tests_policy_NativePrintersBulkAccessMode
-	+tests_policy_PinnedLauncherApps
-	+tests_policy_PlatformKeys
-	+tests_policy_PolicyRefreshRate
-	+tests_policy_PowerManagementIdleSettings
-	+tests_policy_PrintingEnabled
-	+tests_policy_ProxySettings
-	+tests_policy_ReportUploadFrequency
-	+tests_policy_RestoreOnStartupURLs
-	+tests_policy_SystemTimezone
-	+tests_policy_VirtualMachinesAllowed
-	+tests_policy_WilcoOnNonWilcoDevice
-	+tests_policy_WilcoUSBPowershare
-	+tests_power_AudioDetector
-	+tests_power_BatteryDrain
-	+tests_power_Consumption
-	+tests_power_Display
-	+tests_power_FlashVideoSuspend
-	+tests_power_Idle
-	+tests_power_IdleSuspend
-	+tests_power_LoadTest
-	+tests_power_LowMemorySuspend
-	+tests_power_MeetClient
-	+tests_power_Speedometer2
-	+tests_power_ThermalLoad
-	+tests_power_UiResume
-	+tests_power_VideoCall
-	+tests_power_VideoDetector
-	+tests_power_VideoEncode
-	+tests_power_VideoPlayback
-	+tests_power_VideoSuspend
-	+tests_power_WebGL
-	+tests_power_WifiIdle
-	+tests_security_BundledExtensions
-	+tests_telemetry_AFDOGenerateClient
-	+tests_telemetry_Sanity
-	+tests_telemetry_UnitTests
-	+tests_telemetry_UnitTestsServer
-	+tests_touch_GestureNav
-	+tests_touch_MouseScroll
-	+tests_touch_ScrollDirection
-	+tests_touch_TapSettings
-	+tests_touch_TabSwitch
-	+tests_touch_TouchscreenScroll
-	+tests_touch_TouchscreenTaps
-	+tests_touch_TouchscreenZoom
-	+tests_touch_StylusTaps
-	+tests_video_AVAnalysis
-)
-
-IUSE_TESTS_CELLULAR="
-	cellular? (
-		+tests_cellular_ModemControl
-		+tests_cellular_SuspendResume
-		+tests_network_ChromeCellularEndToEnd
-		+tests_network_ChromeCellularNetworkPresent
-		+tests_network_ChromeCellularNetworkProperties
-		+tests_network_ChromeCellularSmokeTest
-	)
-"
-
-IUSE_TESTS_SHILL="
-	shill? (
-		+tests_network_ChromeWifiEndToEnd
-		+tests_network_FirewallHolePunch
-		+tests_network_RackWiFiConnect
-		+tests_network_RoamSuspendEndToEnd
-		+tests_network_RoamWifiEndToEnd
-		+tests_policy_GlobalNetworkSettings
-		+tests_policy_WiFiAutoconnect
-		+tests_policy_WiFiPrecedence
-		+tests_policy_WiFiTypes
-	)
-"
-
-# This is here instead of in autotest-tests-tpm because it would be far more
-# work and duplication to add telemetry dependencies there.
-IUSE_TESTS_TPM="
-	tpm? ( +tests_platform_Pkcs11InitOnLogin )
-	tpm2? ( +tests_platform_Pkcs11InitOnLogin )
-"
-
-IUSE_TESTS_ARC="
-	+tests_graphics_Idle
-"
-
-IUSE_TESTS_ATOMIC="
-	drm_atomic? ( +tests_graphics_HwOverlays )
-"
-
-IUSE_TESTS="
-	${IUSE_TESTS[*]}
-	${IUSE_TESTS_CELLULAR}
-	${IUSE_TESTS_SHILL}
-	${IUSE_TESTS_TPM}
-	${IUSE_TESTS_ARC}
-	${IUSE_TESTS_ATOMIC}
-"
-
-IUSE="
-	${IUSE}
-	${IUSE_TESTS}
-"
-
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-AUTOTEST_DEPS_LIST=""
-AUTOTEST_CONFIG_LIST=""
-AUTOTEST_PROFILERS_LIST=""
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-src_prepare() {
-	# Telemetry tests require the path to telemetry source to exist in order to
-	# build. Copy the telemetry source to a temporary directory that is writable,
-	# so that file removals in Telemetry source can be performed properly.
-	export TMP_DIR="$(mktemp -d)"
-	rsync -a --exclude=third_party/trace-viewer/test_data/ \
-		"${SYSROOT}"/usr/local/telemetry/src/ "${TMP_DIR}"
-	export PYTHONPATH="${TMP_DIR}/third_party/catapult/telemetry"
-	autotest_src_prepare
-}
diff --git a/chromeos-base/autotest-chrome/autotest-chrome-0.0.1-r7821.ebuild b/chromeos-base/autotest-chrome/autotest-chrome-0.0.1-r7821.ebuild
new file mode 100644
index 0000000..f85b828
--- /dev/null
+++ b/chromeos-base/autotest-chrome/autotest-chrome-0.0.1-r7821.ebuild
@@ -0,0 +1,270 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="17d46ec5c4ae09655632d7486cd6d835cc822125"
+CROS_WORKON_TREE="6973c3a9a86e204afe2b17cab6b9e3e258fd648d"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Autotest tests that require chrome_binary_test, or telemetry deps"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Enable autotest by default.
+IUSE="
+	${IUSE}
+	+autotest
+	+cellular
+	drm_atomic
+	+shill
+	+tpm
+	tpm2
+	vaapi
+"
+
+RDEPEND="
+	!chromeos-base/autotest-telemetry
+	!<chromeos-base/autotest-tests-0.0.4
+	!<chromeos-base/autotest-tests-cellular-0.0.1-r3203
+	chromeos-base/autotest-deps-graphics
+	chromeos-base/autotest-deps-policy
+	chromeos-base/autotest-deps-webgl-mpd
+	chromeos-base/chromeos-chrome
+	dev-python/mkvparse
+	shill? ( chromeos-base/shill-test-scripts )
+	chromeos-base/telemetry
+	sys-apps/ethtool
+	vaapi? ( x11-libs/libva )
+	tests_graphics_WebGLAquarium? ( app-benchmarks/microbenchmarks dev-util/memory-eater-locked )
+	virtual/autotest-private-libs
+"
+
+DEPEND="${RDEPEND}"
+
+IUSE_TESTS=(
+	# Tests that depend on telemetry.
+	+tests_accessibility_Check
+	+tests_accessibility_ChromeVoxSound
+	+tests_audio_ActiveStreamStress
+	+tests_audio_AudioCorruption
+	+tests_audio_CrasCheck
+	+tests_audio_PlaybackPower
+	+tests_audio_SeekAudioFeedback
+	+tests_autoupdate_EOL
+	+tests_autoupdate_LoginStartUpdateLogout
+	+tests_autoupdate_StartOOBEUpdate
+	+tests_autoupdate_UpdateFromUI
+	+tests_autoupdate_UserData
+	+tests_bluetooth_AdapterReboot
+	+tests_bluetooth_AdapterHealth
+	+tests_bluetooth_IDCheck
+	+tests_bluetooth_RegressionClient
+	+tests_bluetooth_TurnOnOffUI
+	+tests_desktopui_AudioFeedback
+	+tests_desktopui_CheckRlzPingSent
+	+tests_desktopui_ChromeCheck
+	tests_desktopui_ConnectivityDiagnostics
+	+tests_desktopui_MediaAudioFeedback
+	+tests_desktopui_ScreenLocker
+	+tests_desktopui_SimpleLogin
+	+tests_desktopui_UrlFetchWithChromeDriver
+	+tests_display_ClientChameleonConnection
+	+tests_display_DisplayContainEdid
+	+tests_enterprise_FakeEnrollment
+	+tests_enterprise_KioskEnrollment
+	+tests_enterprise_OnlineDemoModeEnrollment
+	+tests_enterprise_PowerManagement
+	+tests_enterprise_RemoraRequisition
+	+tests_graphics_Chrome
+	+tests_graphics_Stress
+	+tests_graphics_VideoRenderingPower
+	+tests_graphics_VTSwitch
+	+tests_graphics_WebGLAquarium
+	+tests_graphics_WebGLManyPlanetsDeep
+	tests_logging_AsanCrash
+	+tests_logging_CrashServices
+	+tests_logging_FeedbackReport
+	+tests_login_ChromeProfileSanitary
+	+tests_login_CryptohomeDataLeak
+	+tests_login_CryptohomeIncognito
+	+tests_login_GaiaLogin
+	+tests_login_LoginSuccess
+	+tests_login_OobeLocalization
+	+tests_login_SavePassword
+	+tests_login_UnicornLogin
+	+tests_login_UserPolicyKeys
+	+tests_longevity_Tracker
+	+tests_network_CastTDLS
+	+tests_network_ChromeWifiConfigure
+	+tests_platform_ChromeCgroups
+	+tests_platform_InitLoginPerf
+	+tests_platform_InputBrightness
+	+tests_platform_InputBrowserNav
+	+tests_platform_InputNewTab
+	+tests_platform_InputScreenshot
+	+tests_platform_InputVolume
+	+tests_platform_LogoutPerf
+	+tests_platform_LowMemoryTest
+	+tests_platform_MouseScrollTest
+	+tests_platform_PrintJob
+	+tests_platform_SessionManagerBlockDevmodeSetting
+	+tests_platform_ScrollTest
+	+tests_policy_ArcAudioCaptureAllowed
+	+tests_policy_ArcBackupRestoreServiceEnabled
+	+tests_policy_ArcExternalStorageDisabled
+	+tests_policy_ArcVideoCaptureAllowed
+	+tests_policy_ArcDisableScreenshots
+	+tests_policy_AudioOutputAllowed
+	+tests_policy_AutotestCheck
+	+tests_policy_ChromeOsLockOnIdleSuspend
+	+tests_policy_CookiesAllowedForUrls
+	+tests_policy_CookiesBlockedForUrls
+	+tests_policy_CookiesSessionOnlyForUrls
+	+tests_policy_DefaultSearchProvider
+	+tests_policy_DeveloperToolsAvailability
+	+tests_policy_DeviceAllowBluetooth
+	+tests_policy_DeviceAutoUpdateDisabled
+	+tests_policy_DeviceCharging
+	+tests_policy_DeviceDockMacAddressSource
+	+tests_policy_DeviceScheduledCharging
+	+tests_policy_DisableScreenshots
+	+tests_policy_DownloadDirectory
+	+tests_policy_DriveDisabled
+	+tests_policy_DeviceEphemeralUsersEnabled
+	+tests_policy_EnrollmentRetainment
+	+tests_policy_EnterpriseForceInstallCustom
+	+tests_policy_ExtensionPolicy
+	+tests_policy_ExternalStorageDisabled
+	+tests_policy_ExternalStorageReadOnly
+	+tests_policy_ForceYouTubeRestrict
+	+tests_policy_ForceYouTubeSafetyMode
+	+tests_policy_KeyPermissions
+	+tests_policy_KioskModeEnabled
+	+tests_policy_NativePrintersBulkAccessMode
+	+tests_policy_PinnedLauncherApps
+	+tests_policy_PlatformKeys
+	+tests_policy_PolicyRefreshRate
+	+tests_policy_PowerManagementIdleSettings
+	+tests_policy_PrintingEnabled
+	+tests_policy_ProxySettings
+	+tests_policy_ReportUploadFrequency
+	+tests_policy_RestoreOnStartupURLs
+	+tests_policy_SystemTimezone
+	+tests_policy_VirtualMachinesAllowed
+	+tests_policy_WilcoOnNonWilcoDevice
+	+tests_policy_WilcoUSBPowershare
+	+tests_power_AudioDetector
+	+tests_power_BatteryDrain
+	+tests_power_Consumption
+	+tests_power_Display
+	+tests_power_FlashVideoSuspend
+	+tests_power_Idle
+	+tests_power_IdleSuspend
+	+tests_power_LoadTest
+	+tests_power_LowMemorySuspend
+	+tests_power_MeetClient
+	+tests_power_Speedometer2
+	+tests_power_ThermalLoad
+	+tests_power_UiResume
+	+tests_power_VideoCall
+	+tests_power_VideoDetector
+	+tests_power_VideoEncode
+	+tests_power_VideoPlayback
+	+tests_power_VideoSuspend
+	+tests_power_WebGL
+	+tests_power_WifiIdle
+	+tests_security_BundledExtensions
+	+tests_stub_IdleSuspend
+	+tests_telemetry_AFDOGenerateClient
+	+tests_telemetry_Check
+	+tests_telemetry_UnitTests
+	+tests_telemetry_UnitTestsServer
+	+tests_touch_GestureNav
+	+tests_touch_MouseScroll
+	+tests_touch_ScrollDirection
+	+tests_touch_TapSettings
+	+tests_touch_TabSwitch
+	+tests_touch_TouchscreenScroll
+	+tests_touch_TouchscreenTaps
+	+tests_touch_TouchscreenZoom
+	+tests_touch_StylusTaps
+	+tests_video_AVAnalysis
+)
+
+IUSE_TESTS_CELLULAR="
+	cellular? (
+		+tests_cellular_ModemControl
+		+tests_cellular_SuspendResume
+		+tests_network_ChromeCellularEndToEnd
+		+tests_network_ChromeCellularNetworkPresent
+		+tests_network_ChromeCellularNetworkProperties
+		+tests_network_ChromeCellularSmokeTest
+	)
+"
+
+IUSE_TESTS_SHILL="
+	shill? (
+		+tests_network_ChromeWifiEndToEnd
+		+tests_network_FirewallHolePunch
+		+tests_network_RackWiFiConnect
+		+tests_network_RoamSuspendEndToEnd
+		+tests_network_RoamWifiEndToEnd
+		+tests_policy_GlobalNetworkSettings
+		+tests_policy_WiFiAutoconnect
+		+tests_policy_WiFiPrecedence
+		+tests_policy_WiFiTypes
+	)
+"
+
+# This is here instead of in autotest-tests-tpm because it would be far more
+# work and duplication to add telemetry dependencies there.
+IUSE_TESTS_TPM="
+	tpm? ( +tests_platform_Pkcs11InitOnLogin )
+	tpm2? ( +tests_platform_Pkcs11InitOnLogin )
+"
+
+IUSE_TESTS_ARC="
+	+tests_graphics_Idle
+"
+
+IUSE_TESTS_ATOMIC="
+	drm_atomic? ( +tests_graphics_HwOverlays )
+"
+
+IUSE_TESTS="
+	${IUSE_TESTS[*]}
+	${IUSE_TESTS_CELLULAR}
+	${IUSE_TESTS_SHILL}
+	${IUSE_TESTS_TPM}
+	${IUSE_TESTS_ARC}
+	${IUSE_TESTS_ATOMIC}
+"
+
+IUSE="
+	${IUSE}
+	${IUSE_TESTS}
+"
+
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+AUTOTEST_DEPS_LIST=""
+AUTOTEST_CONFIG_LIST=""
+AUTOTEST_PROFILERS_LIST=""
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+src_prepare() {
+	# Telemetry tests require the path to telemetry source to exist in order to
+	# build. Copy the telemetry source to a temporary directory that is writable,
+	# so that file removals in Telemetry source can be performed properly.
+	export TMP_DIR="$(mktemp -d)"
+	rsync -a --exclude=third_party/trace-viewer/test_data/ \
+		"${SYSROOT}"/usr/local/telemetry/src/ "${TMP_DIR}"
+	export PYTHONPATH="${TMP_DIR}/third_party/catapult/telemetry"
+	autotest_src_prepare
+}
diff --git a/chromeos-base/autotest-chrome/autotest-chrome-9999.ebuild b/chromeos-base/autotest-chrome/autotest-chrome-9999.ebuild
index bd49126..1c23ac9 100644
--- a/chromeos-base/autotest-chrome/autotest-chrome-9999.ebuild
+++ b/chromeos-base/autotest-chrome/autotest-chrome-9999.ebuild
@@ -46,11 +46,11 @@
 
 IUSE_TESTS=(
 	# Tests that depend on telemetry.
-	+tests_accessibility_Sanity
+	+tests_accessibility_Check
 	+tests_accessibility_ChromeVoxSound
 	+tests_audio_ActiveStreamStress
 	+tests_audio_AudioCorruption
-	+tests_audio_CrasSanity
+	+tests_audio_CrasCheck
 	+tests_audio_PlaybackPower
 	+tests_audio_SeekAudioFeedback
 	+tests_autoupdate_EOL
@@ -65,7 +65,7 @@
 	+tests_bluetooth_TurnOnOffUI
 	+tests_desktopui_AudioFeedback
 	+tests_desktopui_CheckRlzPingSent
-	+tests_desktopui_ChromeSanity
+	+tests_desktopui_ChromeCheck
 	tests_desktopui_ConnectivityDiagnostics
 	+tests_desktopui_MediaAudioFeedback
 	+tests_desktopui_ScreenLocker
@@ -73,7 +73,6 @@
 	+tests_desktopui_UrlFetchWithChromeDriver
 	+tests_display_ClientChameleonConnection
 	+tests_display_DisplayContainEdid
-	+tests_dummy_IdleSuspend
 	+tests_enterprise_FakeEnrollment
 	+tests_enterprise_KioskEnrollment
 	+tests_enterprise_OnlineDemoModeEnrollment
@@ -96,6 +95,7 @@
 	+tests_login_OobeLocalization
 	+tests_login_SavePassword
 	+tests_login_UnicornLogin
+	+tests_login_UserPolicyKeys
 	+tests_longevity_Tracker
 	+tests_network_CastTDLS
 	+tests_network_ChromeWifiConfigure
@@ -112,14 +112,13 @@
 	+tests_platform_PrintJob
 	+tests_platform_SessionManagerBlockDevmodeSetting
 	+tests_platform_ScrollTest
-	+tests_policy_AccessibilityTest
 	+tests_policy_ArcAudioCaptureAllowed
 	+tests_policy_ArcBackupRestoreServiceEnabled
 	+tests_policy_ArcExternalStorageDisabled
 	+tests_policy_ArcVideoCaptureAllowed
 	+tests_policy_ArcDisableScreenshots
 	+tests_policy_AudioOutputAllowed
-	+tests_policy_AutotestSanity
+	+tests_policy_AutotestCheck
 	+tests_policy_ChromeOsLockOnIdleSuspend
 	+tests_policy_CookiesAllowedForUrls
 	+tests_policy_CookiesBlockedForUrls
@@ -178,8 +177,9 @@
 	+tests_power_WebGL
 	+tests_power_WifiIdle
 	+tests_security_BundledExtensions
+	+tests_stub_IdleSuspend
 	+tests_telemetry_AFDOGenerateClient
-	+tests_telemetry_Sanity
+	+tests_telemetry_Check
 	+tests_telemetry_UnitTests
 	+tests_telemetry_UnitTestsServer
 	+tests_touch_GestureNav
diff --git a/chromeos-base/autotest-client/autotest-client-0.0.1-r2.ebuild b/chromeos-base/autotest-client/autotest-client-0.0.1-r3.ebuild
similarity index 100%
rename from chromeos-base/autotest-client/autotest-client-0.0.1-r2.ebuild
rename to chromeos-base/autotest-client/autotest-client-0.0.1-r3.ebuild
diff --git a/chromeos-base/autotest-client/autotest-client-0.0.1.ebuild b/chromeos-base/autotest-client/autotest-client-0.0.1.ebuild
index da6c7ea..401b061 100644
--- a/chromeos-base/autotest-client/autotest-client-0.0.1.ebuild
+++ b/chromeos-base/autotest-client/autotest-client-0.0.1.ebuild
@@ -8,7 +8,7 @@
 DESCRIPTION="Client portion of autotest installed at image creation time"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="GPL-2"
 SLOT="0"
 KEYWORDS="*"
 IUSE="-moblab"
diff --git a/chromeos-base/autotest-deps-camera-hal3/autotest-deps-camera-hal3-0.0.1-r5465.ebuild b/chromeos-base/autotest-deps-camera-hal3/autotest-deps-camera-hal3-0.0.1-r5465.ebuild
deleted file mode 100644
index e78687c..0000000
--- a/chromeos-base/autotest-deps-camera-hal3/autotest-deps-camera-hal3-0.0.1-r5465.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest-deponly
-
-DESCRIPTION="Dependencies for camera_HAL3 autotest"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-# Autotest enabled by default.
-IUSE="+autotest"
-
-AUTOTEST_DEPS_LIST="camera_hal3"
-
-RDEPEND="
-	media-libs/cros-camera-test
-"
-
-DEPEND="${RDEPEND}"
diff --git a/chromeos-base/autotest-deps-camera-hal3/autotest-deps-camera-hal3-0.0.1-r6311.ebuild b/chromeos-base/autotest-deps-camera-hal3/autotest-deps-camera-hal3-0.0.1-r6311.ebuild
new file mode 100644
index 0000000..bbe13de
--- /dev/null
+++ b/chromeos-base/autotest-deps-camera-hal3/autotest-deps-camera-hal3-0.0.1-r6311.ebuild
@@ -0,0 +1,27 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest-deponly
+
+DESCRIPTION="Dependencies for camera_HAL3 autotest"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+# Autotest enabled by default.
+IUSE="+autotest"
+
+AUTOTEST_DEPS_LIST="camera_hal3"
+
+RDEPEND="
+	media-libs/cros-camera-test
+"
+
+DEPEND="${RDEPEND}"
diff --git a/chromeos-base/autotest-deps-cellular/autotest-deps-cellular-0.0.1-r8254.ebuild b/chromeos-base/autotest-deps-cellular/autotest-deps-cellular-0.0.1-r8254.ebuild
deleted file mode 100644
index d7c90a3..0000000
--- a/chromeos-base/autotest-deps-cellular/autotest-deps-cellular-0.0.1-r8254.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest-deponly
-
-DESCRIPTION="Autotest cellular deps"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Autotest enabled by default.
-IUSE="+autotest"
-
-AUTOTEST_DEPS_LIST="fakegudev fakemodem"
-AUTOTEST_CONFIG_LIST=
-AUTOTEST_PROFILERS_LIST=
-
-# NOTE: For deps, we need to keep *.a
-AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-RDEPEND="!<chromeos-base/autotest-deps-0.0.3"
-
-# deps/fakegudev
-RDEPEND="${RDEPEND}
-	virtual/libgudev
-"
-
-# deps/fakemodem
-RDEPEND="${RDEPEND}
-	chromeos-base/autotest-fakemodem-conf
-	dev-libs/dbus-glib
-"
-DEPEND="${RDEPEND}"
diff --git a/chromeos-base/autotest-deps-cellular/autotest-deps-cellular-0.0.1-r9100.ebuild b/chromeos-base/autotest-deps-cellular/autotest-deps-cellular-0.0.1-r9100.ebuild
new file mode 100644
index 0000000..0682548
--- /dev/null
+++ b/chromeos-base/autotest-deps-cellular/autotest-deps-cellular-0.0.1-r9100.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest-deponly
+
+DESCRIPTION="Autotest cellular deps"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Autotest enabled by default.
+IUSE="+autotest"
+
+AUTOTEST_DEPS_LIST="fakegudev fakemodem"
+AUTOTEST_CONFIG_LIST=
+AUTOTEST_PROFILERS_LIST=
+
+# NOTE: For deps, we need to keep *.a
+AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+RDEPEND="!<chromeos-base/autotest-deps-0.0.3"
+
+# deps/fakegudev
+RDEPEND="${RDEPEND}
+	virtual/libgudev
+"
+
+# deps/fakemodem
+RDEPEND="${RDEPEND}
+	chromeos-base/autotest-fakemodem-conf
+	dev-libs/dbus-glib
+"
+DEPEND="${RDEPEND}"
diff --git a/chromeos-base/autotest-deps-dbus/autotest-deps-dbus-0.0.1-r4138.ebuild b/chromeos-base/autotest-deps-dbus/autotest-deps-dbus-0.0.1-r4138.ebuild
deleted file mode 100644
index de4e7e8..0000000
--- a/chromeos-base/autotest-deps-dbus/autotest-deps-dbus-0.0.1-r4138.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest-deponly
-
-DESCRIPTION="Autotest D-Bus deps"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-# Autotest enabled by default.
-IUSE="+autotest"
-
-AUTOTEST_DEPS_LIST="dbus_protos"
-
-# NOTE: For deps, we need to keep *.a
-AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-DEPEND="chromeos-base/system_api
-	dev-libs/protobuf:=
-"
-
-# Calling this here, so tests using this dep don't have to call setup_dep().
-src_prepare() {
-	autotest-deponly_src_prepare
-}
diff --git a/chromeos-base/autotest-deps-dbus/autotest-deps-dbus-0.0.1-r4984.ebuild b/chromeos-base/autotest-deps-dbus/autotest-deps-dbus-0.0.1-r4984.ebuild
new file mode 100644
index 0000000..4a7663a
--- /dev/null
+++ b/chromeos-base/autotest-deps-dbus/autotest-deps-dbus-0.0.1-r4984.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest-deponly
+
+DESCRIPTION="Autotest D-Bus deps"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+# Autotest enabled by default.
+IUSE="+autotest"
+
+AUTOTEST_DEPS_LIST="dbus_protos"
+
+# NOTE: For deps, we need to keep *.a
+AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+DEPEND="chromeos-base/system_api
+	dev-libs/protobuf:=
+"
+
+# Calling this here, so tests using this dep don't have to call setup_dep().
+src_prepare() {
+	autotest-deponly_src_prepare
+}
diff --git a/chromeos-base/autotest-deps-glmark2/autotest-deps-glmark2-0.0.1-r8625.ebuild b/chromeos-base/autotest-deps-glmark2/autotest-deps-glmark2-0.0.1-r8625.ebuild
deleted file mode 100644
index 20b479a..0000000
--- a/chromeos-base/autotest-deps-glmark2/autotest-deps-glmark2-0.0.1-r8625.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-sanitizers cros-workon autotest-deponly
-
-DESCRIPTION="Autotest glmark2 dependency"
-HOMEPAGE="https://launchpad.net/glmark2"
-SRC_URI=""
-
-LICENSE="GPL-3"
-SLOT="0"
-KEYWORDS="*"
-
-# Autotest enabled by default.
-IUSE="-asan +autotest"
-
-AUTOTEST_DEPS_LIST="glmark2"
-
-# deps/glmark2
-RDEPEND="
-	app-benchmarks/glmark2
-"
-
-DEPEND="${RDEPEND}"
-
-src_configure() {
-	sanitizers-setup-env
-	default
-}
diff --git a/chromeos-base/autotest-deps-glmark2/autotest-deps-glmark2-0.0.1-r9471.ebuild b/chromeos-base/autotest-deps-glmark2/autotest-deps-glmark2-0.0.1-r9471.ebuild
new file mode 100644
index 0000000..f241a04
--- /dev/null
+++ b/chromeos-base/autotest-deps-glmark2/autotest-deps-glmark2-0.0.1-r9471.ebuild
@@ -0,0 +1,35 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-sanitizers cros-workon autotest-deponly
+
+DESCRIPTION="Autotest glmark2 dependency"
+HOMEPAGE="https://launchpad.net/glmark2"
+SRC_URI=""
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="*"
+
+# Autotest enabled by default.
+IUSE="-asan +autotest"
+
+AUTOTEST_DEPS_LIST="glmark2"
+
+# deps/glmark2
+RDEPEND="
+	app-benchmarks/glmark2
+"
+
+DEPEND="${RDEPEND}"
+
+src_configure() {
+	sanitizers-setup-env
+	default
+}
diff --git a/chromeos-base/autotest-deps-graphics/autotest-deps-graphics-0.0.1-r8605.ebuild b/chromeos-base/autotest-deps-graphics/autotest-deps-graphics-0.0.1-r8605.ebuild
deleted file mode 100644
index 6b1a6fd..0000000
--- a/chromeos-base/autotest-deps-graphics/autotest-deps-graphics-0.0.1-r8605.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=4
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest-deponly
-
-DESCRIPTION="Dependencies for graphics autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Autotest enabled by default.
-IUSE="+autotest"
-
-AUTOTEST_DEPS_LIST="graphics"
-
-# NOTE: For deps, we need to keep *.a
-AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-RDEPEND="!<chromeos-base/autotest-deps-0.0.4"
-DEPEND="${RDEPEND}"
diff --git a/chromeos-base/autotest-deps-graphics/autotest-deps-graphics-0.0.1-r9451.ebuild b/chromeos-base/autotest-deps-graphics/autotest-deps-graphics-0.0.1-r9451.ebuild
new file mode 100644
index 0000000..931209b
--- /dev/null
+++ b/chromeos-base/autotest-deps-graphics/autotest-deps-graphics-0.0.1-r9451.ebuild
@@ -0,0 +1,28 @@
+# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=4
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest-deponly
+
+DESCRIPTION="Dependencies for graphics autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Autotest enabled by default.
+IUSE="+autotest"
+
+AUTOTEST_DEPS_LIST="graphics"
+
+# NOTE: For deps, we need to keep *.a
+AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+RDEPEND="!<chromeos-base/autotest-deps-0.0.4"
+DEPEND="${RDEPEND}"
diff --git a/chromeos-base/autotest-deps-p2p/autotest-deps-p2p-0.0.1-r8217.ebuild b/chromeos-base/autotest-deps-p2p/autotest-deps-p2p-0.0.1-r8217.ebuild
deleted file mode 100644
index 5fff5b0..0000000
--- a/chromeos-base/autotest-deps-p2p/autotest-deps-p2p-0.0.1-r8217.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-PYTHON_COMPAT=( python2_7 )
-inherit cros-workon autotest-deponly python-any-r1
-
-DESCRIPTION="Autotest p2p deps"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Autotest enabled by default.
-IUSE="+autotest"
-
-AUTOTEST_DEPS_LIST="lansim"
-
-# NOTE: For deps, we need to keep *.a
-AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-RDEPEND="!<chromeos-base/autotest-deps-0.0.4"
-
-# deps/lansim
-RDEPEND="${RDEPEND}
-	dev-python/dpkt
-"
-DEPEND="${RDEPEND}"
diff --git a/chromeos-base/autotest-deps-p2p/autotest-deps-p2p-0.0.1-r9063.ebuild b/chromeos-base/autotest-deps-p2p/autotest-deps-p2p-0.0.1-r9063.ebuild
new file mode 100644
index 0000000..9be103f
--- /dev/null
+++ b/chromeos-base/autotest-deps-p2p/autotest-deps-p2p-0.0.1-r9063.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+PYTHON_COMPAT=( python2_7 )
+inherit cros-workon autotest-deponly python-any-r1
+
+DESCRIPTION="Autotest p2p deps"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Autotest enabled by default.
+IUSE="+autotest"
+
+AUTOTEST_DEPS_LIST="lansim"
+
+# NOTE: For deps, we need to keep *.a
+AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+RDEPEND="!<chromeos-base/autotest-deps-0.0.4"
+
+# deps/lansim
+RDEPEND="${RDEPEND}
+	dev-python/dpkt
+"
+DEPEND="${RDEPEND}"
diff --git a/chromeos-base/autotest-deps-policy/autotest-deps-policy-0.0.1-r4214.ebuild b/chromeos-base/autotest-deps-policy/autotest-deps-policy-0.0.1-r4214.ebuild
deleted file mode 100644
index 95711ca..0000000
--- a/chromeos-base/autotest-deps-policy/autotest-deps-policy-0.0.1-r4214.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest-deponly
-
-DESCRIPTION="Autotest policy deps"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Autotest enabled by default.
-IUSE="+autotest"
-
-AUTOTEST_DEPS_LIST="policy_protos"
-
-# NOTE: For deps, we need to keep *.a
-AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-DEPEND="
-	>=chromeos-base/protofiles-0.0.39:=
-	chromeos-base/system_api
-	dev-libs/protobuf:=
-"
-
-# Calling this here, so tests using this dep don't have to call setup_dep().
-src_prepare() {
-	autotest-deponly_src_prepare
-}
diff --git a/chromeos-base/autotest-deps-policy/autotest-deps-policy-0.0.1-r5060.ebuild b/chromeos-base/autotest-deps-policy/autotest-deps-policy-0.0.1-r5060.ebuild
new file mode 100644
index 0000000..e2ec3a1
--- /dev/null
+++ b/chromeos-base/autotest-deps-policy/autotest-deps-policy-0.0.1-r5060.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest-deponly
+
+DESCRIPTION="Autotest policy deps"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Autotest enabled by default.
+IUSE="+autotest"
+
+AUTOTEST_DEPS_LIST="policy_protos"
+
+# NOTE: For deps, we need to keep *.a
+AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+DEPEND="
+	>=chromeos-base/protofiles-0.0.43:=
+	chromeos-base/system_api
+	dev-libs/protobuf:=
+"
+
+# Calling this here, so tests using this dep don't have to call setup_dep().
+src_prepare() {
+	autotest-deponly_src_prepare
+}
diff --git a/chromeos-base/autotest-deps-policy/autotest-deps-policy-9999.ebuild b/chromeos-base/autotest-deps-policy/autotest-deps-policy-9999.ebuild
index fd2fedb..6bdcb10 100644
--- a/chromeos-base/autotest-deps-policy/autotest-deps-policy-9999.ebuild
+++ b/chromeos-base/autotest-deps-policy/autotest-deps-policy-9999.ebuild
@@ -23,7 +23,7 @@
 AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
 
 DEPEND="
-	>=chromeos-base/protofiles-0.0.39:=
+	>=chromeos-base/protofiles-0.0.43:=
 	chromeos-base/system_api
 	dev-libs/protobuf:=
 "
diff --git a/chromeos-base/autotest-deps-touchpad/autotest-deps-touchpad-0.0.1-r10073.ebuild b/chromeos-base/autotest-deps-touchpad/autotest-deps-touchpad-0.0.1-r10073.ebuild
new file mode 100644
index 0000000..faa715b
--- /dev/null
+++ b/chromeos-base/autotest-deps-touchpad/autotest-deps-touchpad-0.0.1-r10073.ebuild
@@ -0,0 +1,35 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest-deponly
+
+DESCRIPTION="Autotest touchpad deps"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Autotest enabled by default.
+IUSE="+autotest"
+
+AUTOTEST_DEPS_LIST="touchpad-tests"
+AUTOTEST_CONFIG_LIST=
+AUTOTEST_PROFILERS_LIST=
+
+# NOTE: For deps, we need to keep *.a
+AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+# deps/touchpad-tests
+RDEPEND="
+	x11-drivers/touchpad-tests
+	chromeos-base/touch_firmware_test
+	chromeos-base/mttools
+"
+
+DEPEND="${RDEPEND}"
diff --git a/chromeos-base/autotest-deps-touchpad/autotest-deps-touchpad-0.0.1-r9227.ebuild b/chromeos-base/autotest-deps-touchpad/autotest-deps-touchpad-0.0.1-r9227.ebuild
deleted file mode 100644
index 4c04b82..0000000
--- a/chromeos-base/autotest-deps-touchpad/autotest-deps-touchpad-0.0.1-r9227.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest-deponly
-
-DESCRIPTION="Autotest touchpad deps"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Autotest enabled by default.
-IUSE="+autotest"
-
-AUTOTEST_DEPS_LIST="touchpad-tests"
-AUTOTEST_CONFIG_LIST=
-AUTOTEST_PROFILERS_LIST=
-
-# NOTE: For deps, we need to keep *.a
-AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-# deps/touchpad-tests
-RDEPEND="
-	x11-drivers/touchpad-tests
-	chromeos-base/touch_firmware_test
-	chromeos-base/mttools
-"
-
-DEPEND="${RDEPEND}"
diff --git a/chromeos-base/autotest-deps-webgl-mpd/autotest-deps-webgl-mpd-0.0.1-r8777.ebuild b/chromeos-base/autotest-deps-webgl-mpd/autotest-deps-webgl-mpd-0.0.1-r8777.ebuild
deleted file mode 100644
index c9be68f..0000000
--- a/chromeos-base/autotest-deps-webgl-mpd/autotest-deps-webgl-mpd-0.0.1-r8777.ebuild
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest-deponly
-
-DESCRIPTION="Dependencies for WebGL many planets deep test"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-KEYWORDS="*"
-
-# Autotest enabled by default.
-IUSE="+autotest"
-
-AUTOTEST_DEPS_LIST="webgl_mpd"
-
-# NOTE: For deps, we need to keep *.a
-AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-deps-webgl-mpd/autotest-deps-webgl-mpd-0.0.1-r9623.ebuild b/chromeos-base/autotest-deps-webgl-mpd/autotest-deps-webgl-mpd-0.0.1-r9623.ebuild
new file mode 100644
index 0000000..bff4d57
--- /dev/null
+++ b/chromeos-base/autotest-deps-webgl-mpd/autotest-deps-webgl-mpd-0.0.1-r9623.ebuild
@@ -0,0 +1,25 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest-deponly
+
+DESCRIPTION="Dependencies for WebGL many planets deep test"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+KEYWORDS="*"
+
+# Autotest enabled by default.
+IUSE="+autotest"
+
+AUTOTEST_DEPS_LIST="webgl_mpd"
+
+# NOTE: For deps, we need to keep *.a
+AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-deps/autotest-deps-0.0.4-r13444.ebuild b/chromeos-base/autotest-deps/autotest-deps-0.0.4-r13444.ebuild
deleted file mode 100644
index d1c4c1f..0000000
--- a/chromeos-base/autotest-deps/autotest-deps-0.0.4-r13444.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest-deponly
-
-DESCRIPTION="Autotest common deps"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Autotest enabled by default.
-IUSE="+autotest"
-
-# following deps don't compile: boottool, mysql, pgpool, pgsql, systemtap, # dejagnu, libcap, libnet
-# following deps are not deps: factory
-# following tests are going to be moved: chrome_test
-AUTOTEST_DEPS_LIST="gtest iwcap"
-AUTOTEST_CONFIG_LIST=*
-AUTOTEST_PROFILERS_LIST=*
-
-# NOTE: For deps, we need to keep *.a
-AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-# deps/gtest
-RDEPEND="
-	dev-cpp/gtest:=
-"
-
-# deps/iwcap
-RDEPEND="${RDEPEND}
-	dev-libs/libnl:0
-"
-
-# deps/grpcio
-RDEPEND="${RDEPEND}
-	>=dev-python/grpcio-1.19
-"
-
-# deps/psutil
-RDEPEND="${RDEPEND}
-	>=dev-python/psutil-5.5.0
-"
-
-RDEPEND="${RDEPEND}
-	sys-devel/binutils
-"
-DEPEND="${RDEPEND}"
-
-src_prepare() {
-	autotest-deponly_src_prepare
-
-	# To avoid a file collision with autotest.ebuild, remove
-	# one particular __init__.py file from working directory.
-	# See crbug.com/324963 for context.
-	rm "${AUTOTEST_WORKDIR}/client/profilers/__init__.py"
-}
diff --git a/chromeos-base/autotest-deps/autotest-deps-0.0.4-r14291.ebuild b/chromeos-base/autotest-deps/autotest-deps-0.0.4-r14291.ebuild
new file mode 100644
index 0000000..6d34433
--- /dev/null
+++ b/chromeos-base/autotest-deps/autotest-deps-0.0.4-r14291.ebuild
@@ -0,0 +1,52 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest-deponly
+
+DESCRIPTION="Autotest common deps"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Autotest enabled by default.
+IUSE="+autotest"
+
+# following deps don't compile: boottool, mysql, pgpool, pgsql, systemtap, # dejagnu, libcap, libnet
+# following deps are not deps: factory
+# following tests are going to be moved: chrome_test
+AUTOTEST_DEPS_LIST="gtest iwcap"
+AUTOTEST_CONFIG_LIST=*
+AUTOTEST_PROFILERS_LIST=*
+
+# NOTE: For deps, we need to keep *.a
+AUTOTEST_FILE_MASK="*.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+# deps/gtest
+RDEPEND="
+	dev-cpp/gtest:=
+	dev-libs/libnl:0
+	>=dev-python/grpcio-1.19
+	>=dev-python/psutil-5.5.0
+	sys-devel/binutils
+"
+
+DEPEND="${RDEPEND}
+	chromeos-base/cros-config-api
+"
+
+src_prepare() {
+	autotest-deponly_src_prepare
+
+	# To avoid a file collision with autotest.ebuild, remove
+	# one particular __init__.py file from working directory.
+	# See crbug.com/324963 for context.
+	rm "${AUTOTEST_WORKDIR}/client/profilers/__init__.py"
+}
diff --git a/chromeos-base/autotest-deps/autotest-deps-9999.ebuild b/chromeos-base/autotest-deps/autotest-deps-9999.ebuild
index 173758d..627f581 100644
--- a/chromeos-base/autotest-deps/autotest-deps-9999.ebuild
+++ b/chromeos-base/autotest-deps/autotest-deps-9999.ebuild
@@ -30,27 +30,15 @@
 # deps/gtest
 RDEPEND="
 	dev-cpp/gtest:=
-"
-
-# deps/iwcap
-RDEPEND="${RDEPEND}
 	dev-libs/libnl:0
-"
-
-# deps/grpcio
-RDEPEND="${RDEPEND}
 	>=dev-python/grpcio-1.19
-"
-
-# deps/psutil
-RDEPEND="${RDEPEND}
 	>=dev-python/psutil-5.5.0
-"
-
-RDEPEND="${RDEPEND}
 	sys-devel/binutils
 "
-DEPEND="${RDEPEND}"
+
+DEPEND="${RDEPEND}
+	chromeos-base/cros-config-api
+"
 
 src_prepare() {
 	autotest-deponly_src_prepare
diff --git a/chromeos-base/autotest-server-tests-bluetooth/autotest-server-tests-bluetooth-0.0.1-r3402.ebuild b/chromeos-base/autotest-server-tests-bluetooth/autotest-server-tests-bluetooth-0.0.1-r3402.ebuild
deleted file mode 100644
index 58f641c..0000000
--- a/chromeos-base/autotest-server-tests-bluetooth/autotest-server-tests-bluetooth-0.0.1-r3402.ebuild
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Autotest server tests for Bluetooth"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Enable autotest by default.
-IUSE="+autotest"
-
-RDEPEND="
-	!<chromeos-base/autotest-server-tests-0.0.2-r4126
-"
-
-SERVER_IUSE_TESTS="
-	+tests_bluetooth_AdapterAdvHealth
-	+tests_bluetooth_AdapterAdvMonitor
-	+tests_bluetooth_AdapterAudioLink
-	+tests_bluetooth_AdapterAUHealth
-	+tests_bluetooth_AdapterCLHealth
-	+tests_bluetooth_AdapterLEAdvertising
-	+tests_bluetooth_AdapterLEBetterTogether
-	+tests_bluetooth_AdapterLEHIDHealth
-	+tests_bluetooth_AdapterLEHealth
-	+tests_bluetooth_AdapterMDHealth
-	+tests_bluetooth_AdapterMTBF
-	+tests_bluetooth_AdapterPowerMeasure
-	+tests_bluetooth_AdapterQuickHealth
-	+tests_bluetooth_AdapterSAHealth
-	+tests_bluetooth_PeerUpdate
-	+tests_bluetooth_AdapterSRHealth
-"
-
-IUSE_TESTS="${IUSE_TESTS}
-	${SERVER_IUSE_TESTS}
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-server-tests-bluetooth/autotest-server-tests-bluetooth-0.0.1-r3429.ebuild b/chromeos-base/autotest-server-tests-bluetooth/autotest-server-tests-bluetooth-0.0.1-r3429.ebuild
new file mode 100644
index 0000000..fa66f6f
--- /dev/null
+++ b/chromeos-base/autotest-server-tests-bluetooth/autotest-server-tests-bluetooth-0.0.1-r3429.ebuild
@@ -0,0 +1,53 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+CROS_WORKON_COMMIT="5d62145665a2692184d4b36e65ef3cfc6e6edd9a"
+CROS_WORKON_TREE="f3c2c1b6ad950d4f0da89332f1e47d33bdda1857"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Autotest server tests for Bluetooth"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Enable autotest by default.
+IUSE="+autotest"
+
+RDEPEND="
+	!<chromeos-base/autotest-server-tests-0.0.2-r4126
+"
+
+SERVER_IUSE_TESTS="
+	+tests_bluetooth_AdapterAdvHealth
+	+tests_bluetooth_AdapterAdvMonitor
+	+tests_bluetooth_AdapterAudioLink
+	+tests_bluetooth_AdapterAUHealth
+	+tests_bluetooth_AdapterCLHealth
+	+tests_bluetooth_AdapterEPHealth
+	+tests_bluetooth_AdapterLEAdvertising
+	+tests_bluetooth_AdapterLEBetterTogether
+	+tests_bluetooth_AdapterLEHIDHealth
+	+tests_bluetooth_AdapterLEHealth
+	+tests_bluetooth_AdapterLLTHealth
+	+tests_bluetooth_AdapterMDHealth
+	+tests_bluetooth_AdapterMTBF
+	+tests_bluetooth_AdapterPowerMeasure
+	+tests_bluetooth_AdapterQuickHealth
+	+tests_bluetooth_AdapterSAHealth
+	+tests_bluetooth_AdapterSRHealth
+	+tests_bluetooth_PeerUpdate
+"
+
+IUSE_TESTS="${IUSE_TESTS}
+	${SERVER_IUSE_TESTS}
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-server-tests-bluetooth/autotest-server-tests-bluetooth-9999.ebuild b/chromeos-base/autotest-server-tests-bluetooth/autotest-server-tests-bluetooth-9999.ebuild
index e6fdb5c..8eb25cf 100644
--- a/chromeos-base/autotest-server-tests-bluetooth/autotest-server-tests-bluetooth-9999.ebuild
+++ b/chromeos-base/autotest-server-tests-bluetooth/autotest-server-tests-bluetooth-9999.ebuild
@@ -27,17 +27,19 @@
 	+tests_bluetooth_AdapterAudioLink
 	+tests_bluetooth_AdapterAUHealth
 	+tests_bluetooth_AdapterCLHealth
+	+tests_bluetooth_AdapterEPHealth
 	+tests_bluetooth_AdapterLEAdvertising
 	+tests_bluetooth_AdapterLEBetterTogether
 	+tests_bluetooth_AdapterLEHIDHealth
 	+tests_bluetooth_AdapterLEHealth
+	+tests_bluetooth_AdapterLLTHealth
 	+tests_bluetooth_AdapterMDHealth
 	+tests_bluetooth_AdapterMTBF
 	+tests_bluetooth_AdapterPowerMeasure
 	+tests_bluetooth_AdapterQuickHealth
 	+tests_bluetooth_AdapterSAHealth
-	+tests_bluetooth_PeerUpdate
 	+tests_bluetooth_AdapterSRHealth
+	+tests_bluetooth_PeerUpdate
 "
 
 IUSE_TESTS="${IUSE_TESTS}
diff --git a/chromeos-base/autotest-server-tests-shill/autotest-server-tests-shill-0.0.1-r3355.ebuild b/chromeos-base/autotest-server-tests-shill/autotest-server-tests-shill-0.0.1-r3355.ebuild
deleted file mode 100644
index 99c8795..0000000
--- a/chromeos-base/autotest-server-tests-shill/autotest-server-tests-shill-0.0.1-r3355.ebuild
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="4"
-CROS_WORKON_COMMIT="1521b89a2238df3d685fc5ee36b5271327611214"
-CROS_WORKON_TREE="67c30b01c0b67d27e2ee30c3a08130d0b95a70ab"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Autotest server tests for shill"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Enable autotest by default.
-IUSE="-chromeless_tests +autotest -chromeless_tty"
-
-SERVER_IUSE_TESTS="
-	+tests_network_WiFi_APSupportedRates
-	+tests_network_WiFi_AssocConfigPerformance
-	+tests_network_WiFi_AttenuatedPerf
-	+tests_network_WiFi_BeaconInterval
-	+tests_network_WiFi_BgscanBackoff
-	+tests_network_WiFi_BluetoothScanPerf
-	+tests_network_WiFi_BluetoothStreamPerf
-	+tests_network_WiFi_BSSTMReq
-	+tests_network_WiFi_BT_AntennaCoex
-	+tests_network_WiFi_ChannelHop
-	+tests_network_WiFi_ChannelScanDwellTime
-	+tests_network_WiFi_ChaosConfigFailure
-	+tests_network_WiFi_ChaosConnectDisconnect
-	+tests_network_WiFi_ChaosLongConnect
-	!chromeless_tty (
-		!chromeless_tests (
-			+tests_cellular_ChromeEndToEnd
-			+tests_network_WiFi_ChromeEndToEnd
-			+tests_network_WiFi_RoamEndToEnd
-			+tests_network_WiFi_RoamSuspendEndToEnd
-		)
-	)
-	+tests_network_WiFi_ConnectionIdentifier
-	+tests_network_WiFi_CSA
-	+tests_network_WiFi_CSADisconnect
-	+tests_network_WiFi_DarkResumeActiveScans
-	+tests_network_WiFi_DisableEnable
-	+tests_network_WiFi_DisableRandomMACAddress
-	+tests_network_WiFi_DisconnectReason
-	+tests_network_WiFi_DTIMPeriod
-	+tests_network_WiFi_FastReconnectInDarkResume
-	+tests_network_WiFi_GTK
-	+tests_network_WiFi_HiddenRemains
-	+tests_network_WiFi_HiddenScan
-	+tests_network_WiFi_LinkMonitorFailure
-	+tests_network_WiFi_MalformedProbeResp
-	+tests_network_WiFi_MultiAuth
-	+tests_network_WiFi_OverlappingBSSScan
-	+tests_network_WiFi_Perf
-	+tests_network_WiFi_PMKSACaching
-	+tests_network_WiFi_Prefer5Ghz
-	+tests_network_WiFi_ProfileBasic
-	+tests_network_WiFi_ProfileGUID
-	+tests_network_WiFi_PTK
-	+tests_network_WiFi_RandomMACAddress
-	+tests_network_WiFi_RateControl
-	+tests_network_WiFi_Reassociate
-	+tests_network_WiFi_ReconnectInDarkResume
-	+tests_network_WiFi_Reset
-	+tests_network_WiFi_Roam
-	+tests_network_WiFi_RoamDbus
-	+tests_network_WiFi_RoamFT
-	+tests_network_WiFi_RoamSuspendTimeout
-	+tests_network_WiFi_SecChange
-	+tests_network_WiFi_SetOptionalDhcpProperties
-	+tests_network_WiFi_SimpleConnect
-	+tests_network_WiFi_SSIDSwitchBack
-	+tests_network_WiFi_SuspendStress
-	+tests_network_WiFi_StressTest
-	+tests_network_WiFi_Throttle
-	+tests_network_WiFi_UpdateRouter
-	+tests_network_WiFi_VerifyRouter
-	+tests_network_WiFi_VisibleScan
-	+tests_network_WiFi_WakeOnDisconnect
-	+tests_network_WiFi_WakeOnSSID
-	+tests_network_WiFi_WakeOnWiFiThrottling
-	+tests_network_WiFi_WoWLAN
-	+tests_network_WiFi_WMM
-"
-
-IUSE_TESTS="${IUSE_TESTS}
-	${SERVER_IUSE_TESTS}
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-server-tests-shill/autotest-server-tests-shill-0.0.1-r3402.ebuild b/chromeos-base/autotest-server-tests-shill/autotest-server-tests-shill-0.0.1-r3402.ebuild
new file mode 100644
index 0000000..98c2958
--- /dev/null
+++ b/chromeos-base/autotest-server-tests-shill/autotest-server-tests-shill-0.0.1-r3402.ebuild
@@ -0,0 +1,96 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="4"
+CROS_WORKON_COMMIT="776277f05c512cf1ff0033b55e58d4629e277cd5"
+CROS_WORKON_TREE="45230f81767e1e2835752c13a07d5ebd03df8a04"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Autotest server tests for shill"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Enable autotest by default.
+IUSE="-chromeless_tests +autotest -chromeless_tty"
+
+SERVER_IUSE_TESTS="
+	+tests_network_WiFi_APSupportedRates
+	+tests_network_WiFi_AssocConfigPerformance
+	+tests_network_WiFi_AttenuatedPerf
+	+tests_network_WiFi_BeaconInterval
+	+tests_network_WiFi_BgscanBackoff
+	+tests_network_WiFi_BluetoothScanPerf
+	+tests_network_WiFi_BluetoothStreamPerf
+	+tests_network_WiFi_BSSTMReq
+	+tests_network_WiFi_BT_AntennaCoex
+	+tests_network_WiFi_ChannelHop
+	+tests_network_WiFi_ChannelScanDwellTime
+	+tests_network_WiFi_ChaosConfigFailure
+	+tests_network_WiFi_ChaosConnectDisconnect
+	+tests_network_WiFi_ChaosLongConnect
+	!chromeless_tty (
+		!chromeless_tests (
+			+tests_cellular_ChromeEndToEnd
+			+tests_network_WiFi_ChromeEndToEnd
+			+tests_network_WiFi_RoamEndToEnd
+			+tests_network_WiFi_RoamSuspendEndToEnd
+		)
+	)
+	+tests_network_WiFi_CSA
+	+tests_network_WiFi_DarkResumeActiveScans
+	+tests_network_WiFi_DisableEnable
+	+tests_network_WiFi_DisableRandomMACAddress
+	+tests_network_WiFi_DisconnectReason
+	+tests_network_WiFi_DTIMPeriod
+	+tests_network_WiFi_FastReconnectInDarkResume
+	+tests_network_WiFi_GTK
+	+tests_network_WiFi_HiddenRemains
+	+tests_network_WiFi_HiddenScan
+	+tests_network_WiFi_LinkMonitorFailure
+	+tests_network_WiFi_MalformedProbeResp
+	+tests_network_WiFi_MultiAuth
+	+tests_network_WiFi_OverlappingBSSScan
+	+tests_network_WiFi_Perf
+	+tests_network_WiFi_PMKSACaching
+	+tests_network_WiFi_Prefer5Ghz
+	+tests_network_WiFi_ProfileBasic
+	+tests_network_WiFi_ProfileGUID
+	+tests_network_WiFi_PTK
+	+tests_network_WiFi_RandomMACAddress
+	+tests_network_WiFi_Reassociate
+	+tests_network_WiFi_ReconnectInDarkResume
+	+tests_network_WiFi_Reset
+	+tests_network_WiFi_Roam
+	+tests_network_WiFi_RoamDbus
+	+tests_network_WiFi_RoamFT
+	+tests_network_WiFi_RoamSuspendTimeout
+	+tests_network_WiFi_SecChange
+	+tests_network_WiFi_SetOptionalDhcpProperties
+	+tests_network_WiFi_SimpleConnect
+	+tests_network_WiFi_SSIDSwitchBack
+	+tests_network_WiFi_SuspendStress
+	+tests_network_WiFi_StressTest
+	+tests_network_WiFi_Throttle
+	+tests_network_WiFi_UpdateRouter
+	+tests_network_WiFi_VerifyRouter
+	+tests_network_WiFi_VisibleScan
+	+tests_network_WiFi_WakeOnDisconnect
+	+tests_network_WiFi_WakeOnSSID
+	+tests_network_WiFi_WakeOnWiFiThrottling
+	+tests_network_WiFi_WoWLAN
+	+tests_network_WiFi_WMM
+"
+
+IUSE_TESTS="${IUSE_TESTS}
+	${SERVER_IUSE_TESTS}
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-server-tests-shill/autotest-server-tests-shill-9999.ebuild b/chromeos-base/autotest-server-tests-shill/autotest-server-tests-shill-9999.ebuild
index c8d7021..d25fa72 100644
--- a/chromeos-base/autotest-server-tests-shill/autotest-server-tests-shill-9999.ebuild
+++ b/chromeos-base/autotest-server-tests-shill/autotest-server-tests-shill-9999.ebuild
@@ -40,9 +40,7 @@
 			+tests_network_WiFi_RoamSuspendEndToEnd
 		)
 	)
-	+tests_network_WiFi_ConnectionIdentifier
 	+tests_network_WiFi_CSA
-	+tests_network_WiFi_CSADisconnect
 	+tests_network_WiFi_DarkResumeActiveScans
 	+tests_network_WiFi_DisableEnable
 	+tests_network_WiFi_DisableRandomMACAddress
@@ -63,7 +61,6 @@
 	+tests_network_WiFi_ProfileGUID
 	+tests_network_WiFi_PTK
 	+tests_network_WiFi_RandomMACAddress
-	+tests_network_WiFi_RateControl
 	+tests_network_WiFi_Reassociate
 	+tests_network_WiFi_ReconnectInDarkResume
 	+tests_network_WiFi_Reset
diff --git a/chromeos-base/autotest-server-tests-tast/autotest-server-tests-tast-0.0.1-r145.ebuild b/chromeos-base/autotest-server-tests-tast/autotest-server-tests-tast-0.0.1-r145.ebuild
deleted file mode 100644
index 228288c..0000000
--- a/chromeos-base/autotest-server-tests-tast/autotest-server-tests-tast-0.0.1-r145.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="3424545f542759a471d05c8d18560af22362775b"
-CROS_WORKON_TREE="ba13741a280b0dc0bdbe0f5e0bf11ec5bb91921e"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Autotest server tests for running Tast-based tests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-IUSE="+autotest"
-
-RDEPEND=""
-DEPEND=""
-
-IUSE_TESTS="
-	+tests_graphics_TraceReplayExtended
-	+tests_tast
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-server-tests-tast/autotest-server-tests-tast-0.0.1-r206.ebuild b/chromeos-base/autotest-server-tests-tast/autotest-server-tests-tast-0.0.1-r206.ebuild
new file mode 100644
index 0000000..2eba9b3
--- /dev/null
+++ b/chromeos-base/autotest-server-tests-tast/autotest-server-tests-tast-0.0.1-r206.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="db0799fdd3989ae3c6e92f8a8583a7515a496435"
+CROS_WORKON_TREE="92d41e1d76de84e19ce924a08931bf722c8a6b57"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Autotest server tests for running Tast-based tests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+IUSE="+autotest"
+
+RDEPEND=""
+DEPEND=""
+
+IUSE_TESTS="
+	+tests_graphics_TraceReplayExtended
+	+tests_tast
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-server-tests-telemetry/autotest-server-tests-telemetry-0.0.1-r3240.ebuild b/chromeos-base/autotest-server-tests-telemetry/autotest-server-tests-telemetry-0.0.1-r3240.ebuild
deleted file mode 100644
index 03952d9..0000000
--- a/chromeos-base/autotest-server-tests-telemetry/autotest-server-tests-telemetry-0.0.1-r3240.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="4"
-CROS_WORKON_COMMIT="0a1bf28efd1b19766576c7563e9de7c54237010b"
-CROS_WORKON_TREE="a57877543603549c8eedff95ea99018cde9019a6"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Autotest server tests for shill"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Enable autotest by default.
-IUSE="+autotest"
-
-RDEPEND=""
-DEPEND="${RDEPEND}
-	!<chromeos-base/autotest-server-tests-0.0.2
-"
-
-SERVER_IUSE_TESTS="
-	+tests_telemetry_AFDOGenerate
-	+tests_telemetry_Benchmarks
-	+tests_telemetry_Crosperf
-	+tests_telemetry_CrosTests
-"
-
-IUSE_TESTS="${IUSE_TESTS}
-	${SERVER_IUSE_TESTS}
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-server-tests-telemetry/autotest-server-tests-telemetry-0.0.1-r3244.ebuild b/chromeos-base/autotest-server-tests-telemetry/autotest-server-tests-telemetry-0.0.1-r3244.ebuild
new file mode 100644
index 0000000..827b533
--- /dev/null
+++ b/chromeos-base/autotest-server-tests-telemetry/autotest-server-tests-telemetry-0.0.1-r3244.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="4"
+CROS_WORKON_COMMIT="a403192d37da97d51cd43a1b253f1a18541e37cc"
+CROS_WORKON_TREE="d65e30706766190d6734a91965f32105b55496cf"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Autotest server tests for shill"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Enable autotest by default.
+IUSE="+autotest"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+	!<chromeos-base/autotest-server-tests-0.0.2
+"
+
+SERVER_IUSE_TESTS="
+	+tests_telemetry_AFDOGenerate
+	+tests_telemetry_Benchmarks
+	+tests_telemetry_Crosperf
+	+tests_telemetry_CrosTests
+"
+
+IUSE_TESTS="${IUSE_TESTS}
+	${SERVER_IUSE_TESTS}
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-server-tests/autotest-server-tests-0.0.2-r4930.ebuild b/chromeos-base/autotest-server-tests/autotest-server-tests-0.0.2-r4930.ebuild
deleted file mode 100644
index 06b6c6b..0000000
--- a/chromeos-base/autotest-server-tests/autotest-server-tests-0.0.2-r4930.ebuild
+++ /dev/null
@@ -1,358 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-CROS_WORKON_COMMIT="d3a40192c195a6cbf0c4c5de7513d0d396542b1d"
-CROS_WORKON_TREE="ee02c6712e3c791c059e42e7d66d1626aaea7162"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Autotest server tests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-# Enable autotest by default.
-IUSE="android-container android-container-pi android-vm-rvc +autotest biod +cellular cheets_user_64 -chromeless_tests -chromeless_tty cros_p2p debugd dlc_test has-kernelnext is-kernelnext -moblab +power_management +readahead +tpm tpm2"
-REQUIRED_USE="?? ( has-kernelnext is-kernelnext )"
-
-RDEPEND=""
-DEPEND="${RDEPEND}
-	!<chromeos-base/autotest-0.0.2
-"
-
-SERVER_IUSE_TESTS="
-	+tests_android_ACTS
-	+tests_android_EasySetup
-	+tests_audio_AudioAfterReboot
-	+tests_audio_AudioAfterSuspend
-	+tests_audio_AudioArtifacts
-	+tests_audio_AudioARCPlayback
-	+tests_audio_AudioARCRecord
-	+tests_audio_AudioBasicAssistant
-	+tests_audio_AudioBasicBluetoothPlayback
-	+tests_audio_AudioBasicBluetoothPlaybackRecord
-	+tests_audio_AudioBasicBluetoothRecord
-	+tests_audio_AudioBasicExternalMicrophone
-	+tests_audio_AudioBasicHDMI
-	+tests_audio_AudioBasicHeadphone
-	+tests_audio_AudioBasicHotwording
-	+tests_audio_AudioBasicInternalMicrophone
-	+tests_audio_AudioBasicInternalSpeaker
-	+tests_audio_AudioBasicUSBPlayback
-	+tests_audio_AudioBasicUSBPlaybackRecord
-	+tests_audio_AudioBasicUSBRecord
-	+tests_audio_AudioBluetoothConnectionStability
-	+tests_audio_AudioNodeSwitch
-	+tests_audio_AudioPinnedStream
-	+tests_audio_AudioQualityAfterSuspend
-	+tests_audio_AudioSanityCheck
-	+tests_audio_AudioVolume
-	+tests_audio_AudioWebRTCLoopback
-	+tests_audio_InternalCardNodes
-	+tests_audio_LeftRightInternalSpeaker
-	+tests_audio_MediaBasicVerification
-	+tests_audio_PowerConsumption
-	+tests_audiovideo_AVSync
-	+tests_autoupdate_Basic
-	+tests_autoupdate_CatchBadSignatures
-	+tests_autoupdate_Cellular
-	+tests_autoupdate_DataPreserved
-	+tests_autoupdate_ForcedOOBEUpdate
-	+tests_autoupdate_FromUI
-	+tests_autoupdate_Interruptions
-	+tests_autoupdate_NonBlockingOOBEUpdate
-	+tests_autoupdate_OmahaResponse
-	+tests_autoupdate_P2P
-	+tests_autoupdate_Periodic
-	+tests_autoupdate_Rollback
-	dlc_test? ( +tests_autoupdate_WithDLC )
-	has-kernelnext? ( +tests_autoupdate_StatefulCompatibility )
-	is-kernelnext? ( +tests_autoupdate_StatefulCompatibility )
-	cellular? ( +tests_cellular_StaleModemReboot )
-	android-container-pi? (
-		+tests_cheets_CTS_Instant
-		+tests_cheets_CTS_P
-		+tests_cheets_GTS
-	)
-	android-vm-rvc? (
-		cheets_user_64? (
-			+tests_cheets_CTS_R
-			+tests_cheets_GTS_R
-		)
-		!cheets_user_64? (
-			+tests_cheets_VTS_R
-		)
-	)
-	+tests_cheets_LabDependencies
-	debugd? ( +tests_debugd_DevTools )
-	+tests_crosperf_Wrapper
-	+tests_display_EdidStress
-	+tests_display_HDCPScreen
-	+tests_display_HotPlugAtBoot
-	+tests_display_HotPlugAtSuspend
-	+tests_display_HotPlugNoisy
-	+tests_display_LidCloseOpen
-	+tests_display_NoEdid
-	+tests_display_Resolution
-	+tests_display_ResolutionList
-	+tests_display_ServerChameleonConnection
-	+tests_display_SuspendStress
-	+tests_display_SwitchMode
-	+tests_dummy_PassServer
-	+tests_dummy_FailServer
-	+tests_dummy_FlakyTestServer
-	+tests_dummy_SynchronousOffloadServer
-	+tests_enterprise_ClearTPM
-	+tests_enterprise_KioskEnrollmentServer
-	+tests_enterprise_LongevityTrackerServer
-	+tests_enterprise_OnlineDemoMode
-	+tests_factory_Basic
-	+tests_firmware_Bmpblk
-	+tests_firmware_CgptStress
-	+tests_firmware_ClearTPMOwnerAndReset
-	+tests_firmware_ConsecutiveBoot
-	+tests_firmware_ConsecutiveBootPowerButton
-	+tests_firmware_ConsecutiveLidSwitch
-	+tests_firmware_CorruptBothFwBodyAB
-	+tests_firmware_CorruptBothFwSigAB
-	+tests_firmware_CorruptBothKernelAB
-	+tests_firmware_CorruptFwBodyA
-	+tests_firmware_CorruptFwBodyB
-	+tests_firmware_CorruptFwSigA
-	+tests_firmware_CorruptFwSigB
-	+tests_firmware_CorruptKernelA
-	+tests_firmware_CorruptKernelB
-	+tests_firmware_CorruptRecoveryCache
-	+tests_firmware_Cr50BID
-	+tests_firmware_Cr50CCDServoCap
-	+tests_firmware_Cr50CCDUartStress
-	+tests_firmware_Cr50CheckCap
-	+tests_firmware_Cr50ConsoleCommands
-	+tests_firmware_Cr50DeepSleepStress
-	+tests_firmware_Cr50DeferredECReset
-	+tests_firmware_Cr50DeviceState
-	+tests_firmware_Cr50DevMode
-	+tests_firmware_Cr50ECReset
-	+tests_firmware_Cr50FactoryResetVC
-	+tests_firmware_Cr50CCDFirmwareUpdate
-	+tests_firmware_Cr50GetName
-	+tests_firmware_Cr50InvalidateRW
-	+tests_firmware_Cr50Open
-	+tests_firmware_Cr50OpenWhileAPOff
-	+tests_firmware_Cr50PartialBoardId
-	+tests_firmware_Cr50Password
-	+tests_firmware_Cr50PinWeaverServer
-	+tests_firmware_Cr50RddG3
-	+tests_firmware_Cr50RejectUpdate
-	+tests_firmware_Cr50RMAOpen
-	+tests_firmware_Cr50SetBoardId
-	+tests_firmware_Cr50ShortECC
-	+tests_firmware_Cr50Testlab
-	+tests_firmware_Cr50TpmManufactured
-	+tests_firmware_Cr50TpmMode
-	+tests_firmware_Cr50U2fCommands
-	+tests_firmware_Cr50Unlock
-	+tests_firmware_Cr50Update
-	+tests_firmware_Cr50UpdateScriptStress
-	+tests_firmware_Cr50USB
-	+tests_firmware_Cr50WilcoEcrst
-	+tests_firmware_Cr50WilcoRmaFactoryMode
-	+tests_firmware_Cr50WPG3
-	+tests_firmware_DevBootUSB
-	+tests_firmware_DevDefaultBoot
-	+tests_firmware_DevMode
-	+tests_firmware_DevModeStress
-	+tests_firmware_DevScreenTimeout
-	+tests_firmware_ECBattery
-	+tests_firmware_ECBootTime
-	+tests_firmware_ECCbiEeprom
-	+tests_firmware_ECCharging
-	+tests_firmware_ECChargingState
-	+tests_firmware_ECHash
-	+tests_firmware_ECKeyboard
-	+tests_firmware_ECKeyboardReboot
-	+tests_firmware_ECLidShutdown
-	+tests_firmware_ECLidSwitch
-	+tests_firmware_ECPowerButton
-	+tests_firmware_ECPowerG3
-	+tests_firmware_ECSharedMem
-	+tests_firmware_ECThermal
-	+tests_firmware_ECUpdateId
-	+tests_firmware_ECUsbPorts
-	+tests_firmware_ECWakeSource
-	+tests_firmware_ECWatchdog
-	+tests_firmware_EventLog
-	+tests_firmware_FAFTPrepare
-	+tests_firmware_FAFTModeTransitions
-	+tests_firmware_FAFTRPC
-	+tests_firmware_FAFTSetup
-	biod? (
-		+tests_firmware_Fingerprint
-		+tests_firmware_FingerprintSigner
-	)
-	+tests_firmware_FMap
-	+tests_firmware_FWMPDisableCCD
-	+tests_firmware_FwScreenCloseLid
-	+tests_firmware_FwScreenPressPower
-	+tests_firmware_FWupdateWP
-	+tests_firmware_FWtries
-	+tests_firmware_FWupdateThenSleep
-	+tests_firmware_FWupdateWP
-	+tests_firmware_IntegratedU2F
-	+tests_firmware_InvalidUSB
-	+tests_firmware_LegacyRecovery
-	+tests_firmware_MenuModeTransition
-	+tests_firmware_Mosys
-	+tests_firmware_PDConnect
-	+tests_firmware_PDDataSwap
-	+tests_firmware_PDPowerSwap
-	+tests_firmware_PDProtocol
-	+tests_firmware_PDResetHard
-	+tests_firmware_PDResetSoft
-	+tests_firmware_PDTrySrc
-	+tests_firmware_PDVbusRequest
-	+tests_firmware_RecoveryButton
-	+tests_firmware_RecoveryCacheBootKeys
-	+tests_firmware_RollbackFirmware
-	+tests_firmware_RollbackKernel
-	+tests_firmware_SelfSignedBoot
-	+tests_firmware_SetSerialNumber
-	+tests_firmware_SoftwareSync
-	+tests_firmware_StandbyPowerConsumption
-	+tests_firmware_SysfsVPD
-	+tests_firmware_TPMNotCorruptedDevMode
-	tpm? ( +tests_firmware_TPMExtend )
-	tpm? ( +tests_firmware_TPMVersionCheck )
-	tpm? ( +tests_firmware_TPMKernelVersion )
-	tpm2? ( +tests_firmware_TPMExtend )
-	tpm2? ( +tests_firmware_TPMVersionCheck )
-	tpm2? ( +tests_firmware_TPMKernelVersion )
-	+tests_firmware_TryFwB
-	+tests_firmware_TypeCCharging
-	+tests_firmware_TypeCProbeUSB3
-	+tests_firmware_UpdateFirmwareDataKeyVersion
-	+tests_firmware_UpdateFirmwareVersion
-	+tests_firmware_UpdateKernelDataKeyVersion
-	+tests_firmware_UpdateKernelSubkeyVersion
-	+tests_firmware_UpdateKernelVersion
-	+tests_firmware_UpdaterModes
-	+tests_firmware_UserRequestRecovery
-	+tests_firmware_WilcoDiagnosticsMode
-	+tests_firmware_WriteProtect
-	+tests_firmware_WriteProtectFunc
-	+tests_graphics_MultipleDisplays
-	+tests_graphics_PowerConsumption
-	+tests_hardware_DiskFirmwareUpgrade
-	+tests_hardware_MemoryIntegrity
-	+tests_hardware_StorageQual
-	+tests_hardware_StorageQualBase
-	+tests_hardware_StorageQualCheckSetup
-	+tests_hardware_StorageQualSuspendStress
-	+tests_hardware_StorageQualTrimStress
-	+tests_hardware_StorageQualV2
-	+tests_hardware_StorageStress
-	+tests_infra_TLSExecDUTCommand
-	+tests_kernel_EmptyLines
-	+tests_kernel_ExternalUsbPeripheralsDetectionTest
-	+tests_kernel_IdlePerf
-	+tests_kernel_MemoryRamoop
-	moblab? (
-		+tests_moblab_RunSuite
-		+tests_moblab_StorageQual
-	)
-	+tests_moblab_Setup
-	cros_p2p? ( +tests_p2p_EndToEndTest )
-	+tests_network_FirewallHolePunchServer
-	+tests_platform_ActivateDate
-	+tests_platform_BootDevice
-	+tests_platform_BootLockboxServer
-	+tests_platform_BootPerfServer
-	+tests_platform_CompromisedStatefulPartition
-	+tests_platform_CorruptRootfs
-	+tests_platform_CrashStateful
-	+tests_platform_ExternalUsbPeripherals
-	+tests_platform_FlashErasers
-	+tests_platform_Flashrom
-	+tests_platform_HWwatchdog
-	+tests_platform_InitLoginPerfServer
-	+tests_platform_InstallTestImage
-	+tests_platform_InternalDisplay
-	+tests_platform_KernelErrorPaths
-	power_management? (
-		+tests_platform_PowerStatusStress
-		+tests_power_DeferForFlashrom
-		+tests_power_WakeSources
-	)
-	+tests_platform_Powerwash
-	+tests_platform_RotationFps
-	+tests_platform_ServoPowerStateController
-	+tests_platform_StageAndRecover
-	+tests_platform_SuspendResumeTiming
-	+tests_platform_SyncCrash
-	readahead? ( +tests_platform_UReadAheadServer )
-	+tests_platform_Vpd
-	+tests_policy_AUServer
-	+tests_policy_DeviceChargingServer
-	+tests_policy_DeviceServer
-	+tests_policy_ExternalStorageServer
-	+tests_policy_GlobalNetworkSettingsServer
-	+tests_policy_WiFiAutoconnectServer
-	+tests_policy_WiFiPrecedenceServer
-	+tests_policy_WiFiTypesServer
-	+tests_policy_WilcoServerDeviceDockMacAddressSource
-	+tests_policy_WilcoServerOnNonWilcoDevice
-	+tests_policy_WilcoServerUSBPowershare
-	+tests_power_BrightnessResetAfterReboot
-	+tests_power_ChargeControlWrapper
-	+tests_power_MeetCall
-	+tests_power_Monitoring
-	+tests_power_LW
-	+tests_power_PowerlogWrapper
-	+tests_power_RPMTest
-	+tests_power_ServoChargeStress
-	+tests_power_ServodWrapper
-	+tests_provision_CheetsUpdate
-	+tests_provision_Cr50TOT
-	+tests_provision_Cr50Update
-	+tests_provision_FactoryImage
-	+tests_provision_FirmwareUpdate
-	+tests_provision_QuickProvision
-	+tests_rlz_CheckPing
-	+tests_sequences
-	+tests_servo_LabControlVerification
-	+tests_servo_LabstationVerification
-	+tests_servo_USBMuxVerification
-	+tests_servo_LogGrab
-	+tests_servo_Verification
-	+tests_servohost_Reboot
-	+tests_stress_ClientTestReboot
-	+tests_stress_EnrollmentRetainment
-"
-
-IUSE_TESTS="${IUSE_TESTS}
-	${SERVER_IUSE_TESTS}
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-INIT_FILE="__init__.py"
-
-src_install() {
-	# Make sure we install all |SERVER_IUSE_TESTS| first.
-	autotest_src_install
-	# Autotest depends on a few strategically placed INIT_FILEs to allow
-	# importing python code. In particular we want to allow importing
-	# server.site_tests.tast to be able to launch tast local tests.
-	# This INIT_FILE exists in git, but needs to be installed and finally
-	# packaged via chromite/lib/autotest_util.py into
-	# autotest_server_package.tar.bz2 to be served by devservers.
-	insinto "${AUTOTEST_BASE}/${AUTOTEST_SERVER_SITE_TESTS}"
-	doins "${AUTOTEST_SERVER_SITE_TESTS}/${INIT_FILE}"
-}
diff --git a/chromeos-base/autotest-server-tests/autotest-server-tests-0.0.2-r5175.ebuild b/chromeos-base/autotest-server-tests/autotest-server-tests-0.0.2-r5175.ebuild
new file mode 100644
index 0000000..3bf8184
--- /dev/null
+++ b/chromeos-base/autotest-server-tests/autotest-server-tests-0.0.2-r5175.ebuild
@@ -0,0 +1,375 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+CROS_WORKON_COMMIT="573ffe2c31769ef60bc4f9dc037eca01d149345c"
+CROS_WORKON_TREE="f322f40e82140ffae58282b019287a4c64e642bc"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Autotest server tests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+# Enable autotest by default.
+IUSE="android-container android-container-pi android-vm-rvc +autotest biod +cellular +cheets_user cheets_user_64 cheets_userdebug_64 -chromeless_tests -chromeless_tty cros_p2p debugd dlc_test has-kernelnext is-kernelnext -moblab +power_management +readahead +tpm tpm2"
+REQUIRED_USE="?? ( has-kernelnext is-kernelnext )"
+
+RDEPEND=""
+DEPEND="${RDEPEND}
+	!<chromeos-base/autotest-0.0.2
+"
+
+SERVER_IUSE_TESTS="
+	+tests_android_ACTS
+	+tests_android_EasySetup
+	+tests_audio_AudioAfterReboot
+	+tests_audio_AudioAfterSuspend
+	+tests_audio_AudioArtifacts
+	+tests_audio_AudioBasicAssistant
+	+tests_audio_AudioBasicBluetoothPlayback
+	+tests_audio_AudioBasicBluetoothPlaybackRecord
+	+tests_audio_AudioBasicBluetoothRecord
+	+tests_audio_AudioBasicExternalMicrophone
+	+tests_audio_AudioBasicHDMI
+	+tests_audio_AudioBasicHeadphone
+	+tests_audio_AudioBasicHotwording
+	+tests_audio_AudioBasicInternalMicrophone
+	+tests_audio_AudioBasicInternalSpeaker
+	+tests_audio_AudioBasicUSBPlayback
+	+tests_audio_AudioBasicUSBPlaybackRecord
+	+tests_audio_AudioBasicUSBRecord
+	+tests_audio_AudioBluetoothConnectionStability
+	+tests_audio_AudioNodeSwitch
+	+tests_audio_AudioPinnedStream
+	+tests_audio_AudioQualityAfterSuspend
+	+tests_audio_AudioTestAssumptionCheck
+	+tests_audio_AudioVolume
+	+tests_audio_AudioWebRTCLoopback
+	+tests_audio_InternalCardNodes
+	+tests_audio_LeftRightInternalSpeaker
+	+tests_audio_MediaBasicVerification
+	+tests_audio_PowerConsumption
+	+tests_audiovideo_AVSync
+	+tests_autoupdate_Basic
+	+tests_autoupdate_CatchBadSignatures
+	+tests_autoupdate_Cellular
+	+tests_autoupdate_ConsecutiveUpdatesBeforeReboot
+	+tests_autoupdate_DataPreserved
+	+tests_autoupdate_ForcedOOBEUpdate
+	+tests_autoupdate_FromUI
+	+tests_autoupdate_Interruptions
+	+tests_autoupdate_NonBlockingOOBEUpdate
+	+tests_autoupdate_OmahaResponse
+	+tests_autoupdate_P2P
+	+tests_autoupdate_Periodic
+	+tests_autoupdate_RejectDuplicateUpdate
+	+tests_autoupdate_Rollback
+	dlc_test? ( +tests_autoupdate_WithDLC )
+	has-kernelnext? ( +tests_autoupdate_StatefulCompatibility )
+	is-kernelnext? ( +tests_autoupdate_StatefulCompatibility )
+	cellular? ( +tests_cellular_StaleModemReboot )
+	android-container-pi? (
+		cheets_user? (
+			+tests_cheets_CTS_Instant
+			+tests_cheets_CTS_P
+			+tests_cheets_GTS
+		)
+		cheets_user_64? (
+			+tests_cheets_CTS_Instant
+			+tests_cheets_CTS_P
+			+tests_cheets_GTS
+		)
+	)
+	android-vm-rvc? (
+		cheets_user_64? (
+			+tests_cheets_CTS_R
+			+tests_cheets_GTS_R
+		)
+		cheets_userdebug_64? (
+			+tests_cheets_VTS_R
+		)
+	)
+	+tests_cellular_Callbox_AssertCellularData
+	+tests_cheets_LabDependencies
+	debugd? ( +tests_debugd_DevTools )
+	+tests_crosperf_Wrapper
+	+tests_display_EdidStress
+	+tests_display_HDCPScreen
+	+tests_display_HotPlugAtBoot
+	+tests_display_HotPlugAtSuspend
+	+tests_display_HotPlugNoisy
+	+tests_display_LidCloseOpen
+	+tests_display_NoEdid
+	+tests_display_Resolution
+	+tests_display_ResolutionList
+	+tests_display_ServerChameleonConnection
+	+tests_display_SuspendStress
+	+tests_display_SwitchMode
+	+tests_dummy_PassServer
+	+tests_dummy_FailServer
+	+tests_dummy_FlakyTestServer
+	+tests_stub_SynchronousOffloadServer
+	+tests_enterprise_ClearTPM
+	+tests_enterprise_KioskEnrollmentServer
+	+tests_enterprise_LongevityTrackerServer
+	+tests_enterprise_OnlineDemoMode
+	+tests_factory_Basic
+	+tests_firmware_Bmpblk
+	+tests_firmware_CgptStress
+	+tests_firmware_ClearTPMOwnerAndReset
+	+tests_firmware_ConsecutiveBoot
+	+tests_firmware_ConsecutiveBootPowerButton
+	+tests_firmware_ConsecutiveLidSwitch
+	+tests_firmware_CorruptBothFwBodyAB
+	+tests_firmware_CorruptBothFwSigAB
+	+tests_firmware_CorruptBothKernelAB
+	+tests_firmware_CorruptFwBodyA
+	+tests_firmware_CorruptFwBodyB
+	+tests_firmware_CorruptFwSigA
+	+tests_firmware_CorruptFwSigB
+	+tests_firmware_CorruptKernelA
+	+tests_firmware_CorruptKernelB
+	+tests_firmware_CorruptRecoveryCache
+	+tests_firmware_Cr50BID
+	+tests_firmware_Cr50CCDServoCap
+	+tests_firmware_Cr50CCDUartStress
+	+tests_firmware_Cr50CheckCap
+	+tests_firmware_Cr50ConsoleCommands
+	+tests_firmware_Cr50DeepSleepStress
+	+tests_firmware_Cr50DeferredECReset
+	+tests_firmware_Cr50DeviceState
+	+tests_firmware_Cr50DevMode
+	+tests_firmware_Cr50ECReset
+	+tests_firmware_Cr50FactoryResetVC
+	+tests_firmware_Cr50CCDFirmwareUpdate
+	+tests_firmware_Cr50GetName
+	+tests_firmware_Cr50InvalidateRW
+	+tests_firmware_Cr50Keygen
+	+tests_firmware_Cr50Open
+	+tests_firmware_Cr50OpenWhileAPOff
+	+tests_firmware_Cr50PartialBoardId
+	+tests_firmware_Cr50Password
+	+tests_firmware_Cr50PinWeaverServer
+	+tests_firmware_Cr50RddG3
+	+tests_firmware_Cr50RejectUpdate
+	+tests_firmware_Cr50RMAOpen
+	+tests_firmware_Cr50SetBoardId
+	+tests_firmware_Cr50ShortECC
+	+tests_firmware_Cr50Testlab
+	+tests_firmware_Cr50TpmManufactured
+	+tests_firmware_Cr50TpmMode
+	+tests_firmware_Cr50U2fCommands
+	+tests_firmware_Cr50Unlock
+	+tests_firmware_Cr50Update
+	+tests_firmware_Cr50UpdateScriptStress
+	+tests_firmware_Cr50USB
+	+tests_firmware_Cr50VerifyEK
+	+tests_firmware_Cr50WilcoEcrst
+	+tests_firmware_Cr50WilcoRmaFactoryMode
+	+tests_firmware_Cr50WPG3
+	+tests_firmware_CsmeFwUpdate
+	+tests_firmware_DevBootUSB
+	+tests_firmware_DevDefaultBoot
+	+tests_firmware_DevMode
+	+tests_firmware_DevModeStress
+	+tests_firmware_DevScreenTimeout
+	+tests_firmware_ECBattery
+	+tests_firmware_ECBootTime
+	+tests_firmware_ECCbiEeprom
+	+tests_firmware_ECCharging
+	+tests_firmware_ECChargingState
+	+tests_firmware_ECHash
+	+tests_firmware_ECKeyboard
+	+tests_firmware_ECKeyboardReboot
+	+tests_firmware_ECLidShutdown
+	+tests_firmware_ECLidSwitch
+	+tests_firmware_ECPowerButton
+	+tests_firmware_ECPowerG3
+	+tests_firmware_ECSharedMem
+	+tests_firmware_ECSystemLocked
+	+tests_firmware_ECThermal
+	+tests_firmware_ECUpdateId
+	+tests_firmware_ECUsbPorts
+	+tests_firmware_ECWakeSource
+	+tests_firmware_ECWatchdog
+	+tests_firmware_EmmcWriteLoad
+	+tests_firmware_EventLog
+	+tests_firmware_FAFTPrepare
+	+tests_firmware_FAFTModeTransitions
+	+tests_firmware_FAFTRPC
+	+tests_firmware_FAFTSetup
+	biod? (
+		+tests_firmware_Fingerprint
+		+tests_firmware_FingerprintCrosConfig
+		+tests_firmware_FingerprintSigner
+	)
+	+tests_firmware_FMap
+	+tests_firmware_FWMPDisableCCD
+	+tests_firmware_FwScreenCloseLid
+	+tests_firmware_FwScreenPressPower
+	+tests_firmware_FWupdateWP
+	+tests_firmware_FWtries
+	+tests_firmware_FWupdateThenSleep
+	+tests_firmware_FWupdateWP
+	+tests_firmware_IntegratedU2F
+	+tests_firmware_InvalidUSB
+	+tests_firmware_LegacyRecovery
+	+tests_firmware_MenuModeTransition
+	+tests_firmware_Mosys
+	+tests_firmware_PDConnect
+	+tests_firmware_PDDataSwap
+	+tests_firmware_PDPowerSwap
+	+tests_firmware_PDProtocol
+	+tests_firmware_PDResetHard
+	+tests_firmware_PDResetSoft
+	+tests_firmware_PDTrySrc
+	+tests_firmware_PDVbusRequest
+	+tests_firmware_RecoveryButton
+	+tests_firmware_RecoveryCacheBootKeys
+	+tests_firmware_RollbackFirmware
+	+tests_firmware_RollbackKernel
+	+tests_firmware_SelfSignedBoot
+	+tests_firmware_SetSerialNumber
+	+tests_firmware_SoftwareSync
+	+tests_firmware_StandbyPowerConsumption
+	+tests_firmware_SysfsVPD
+	+tests_firmware_TPMNotCorruptedDevMode
+	tpm? ( +tests_firmware_TPMExtend )
+	tpm? ( +tests_firmware_TPMVersionCheck )
+	tpm? ( +tests_firmware_TPMKernelVersion )
+	tpm2? ( +tests_firmware_TPMExtend )
+	tpm2? ( +tests_firmware_TPMVersionCheck )
+	tpm2? ( +tests_firmware_TPMKernelVersion )
+	+tests_firmware_TryFwB
+	+tests_firmware_TypeCCharging
+	+tests_firmware_TypeCProbeUSB3
+	+tests_firmware_UpdateFirmwareDataKeyVersion
+	+tests_firmware_UpdateFirmwareVersion
+	+tests_firmware_UpdateKernelDataKeyVersion
+	+tests_firmware_UpdateKernelSubkeyVersion
+	+tests_firmware_UpdateKernelVersion
+	+tests_firmware_UpdaterModes
+	+tests_firmware_UserRequestRecovery
+	+tests_firmware_WilcoDiagnosticsMode
+	+tests_firmware_WriteProtect
+	+tests_firmware_WriteProtectFunc
+	+tests_graphics_MultipleDisplays
+	+tests_graphics_PowerConsumption
+	+tests_hardware_DiskFirmwareUpgrade
+	+tests_hardware_MemoryIntegrity
+	+tests_hardware_StorageQual
+	+tests_hardware_StorageQualBase
+	+tests_hardware_StorageQualCheckSetup
+	+tests_hardware_StorageQualSuspendStress
+	+tests_hardware_StorageQualTrimStress
+	+tests_hardware_StorageQualV2
+	+tests_hardware_StorageStress
+	+tests_infra_TLSExecDUTCommand
+	+tests_kernel_EmptyLines
+	+tests_kernel_ExternalUsbPeripheralsDetectionTest
+	+tests_kernel_IdlePerf
+	+tests_kernel_MemoryRamoop
+	moblab? (
+		+tests_moblab_RunSuite
+		+tests_moblab_StorageQual
+	)
+	+tests_moblab_Setup
+	cros_p2p? ( +tests_p2p_EndToEndTest )
+	+tests_network_FirewallHolePunchServer
+	+tests_platform_ActivateDate
+	+tests_platform_BootDevice
+	+tests_platform_BootLockboxServer
+	+tests_platform_BootPerfServer
+	+tests_platform_CompromisedStatefulPartition
+	+tests_platform_CorruptRootfs
+	+tests_platform_CrashStateful
+	+tests_platform_ExternalUsbPeripherals
+	+tests_platform_FetchCloudConfig
+	+tests_platform_FlashErasers
+	+tests_platform_Flashrom
+	+tests_platform_HWwatchdog
+	+tests_platform_InitLoginPerfServer
+	+tests_platform_InstallTestImage
+	+tests_platform_InternalDisplay
+	+tests_platform_KernelErrorPaths
+	+tests_platform_MTBF
+	power_management? (
+		+tests_platform_PowerStatusStress
+		+tests_power_DeferForFlashrom
+		+tests_power_WakeSources
+	)
+	+tests_platform_Powerwash
+	+tests_platform_RotationFps
+	+tests_platform_ServoPowerStateController
+	+tests_platform_StageAndRecover
+	+tests_platform_SuspendResumeTiming
+	+tests_platform_SyncCrash
+	readahead? ( +tests_platform_UReadAheadServer )
+	+tests_platform_Vpd
+	+tests_policy_AUServer
+	+tests_policy_DeviceChargingServer
+	+tests_policy_DeviceServer
+	+tests_policy_ExternalStorageServer
+	+tests_policy_GlobalNetworkSettingsServer
+	+tests_policy_WiFiAutoconnectServer
+	+tests_policy_WiFiPrecedenceServer
+	+tests_policy_WiFiTypesServer
+	+tests_policy_WilcoServerDeviceDockMacAddressSource
+	+tests_policy_WilcoServerOnNonWilcoDevice
+	+tests_policy_WilcoServerUSBPowershare
+	+tests_power_BrightnessResetAfterReboot
+	+tests_power_ChargeControlWrapper
+	+tests_power_MeetCall
+	+tests_power_Monitoring
+	+tests_power_LW
+	+tests_power_PowerlogWrapper
+	+tests_power_RPMTest
+	+tests_power_ServoChargeStress
+	+tests_power_ServodWrapper
+	+tests_provision_CheetsUpdate
+	+tests_provision_Cr50TOT
+	+tests_provision_Cr50Update
+	+tests_provision_FactoryImage
+	+tests_provision_FirmwareUpdate
+	+tests_provision_QuickProvision
+	+tests_rlz_CheckPing
+	+tests_sequences
+	+tests_servo_LabControlVerification
+	+tests_servo_LabstationVerification
+	+tests_servo_USBMuxVerification
+	+tests_servo_LogGrab
+	+tests_servo_Verification
+	+tests_servohost_Reboot
+	+tests_stress_ClientTestReboot
+	+tests_stress_EnrollmentRetainment
+	+tests_stub_ServerToClientPass
+"
+
+IUSE_TESTS="${IUSE_TESTS}
+	${SERVER_IUSE_TESTS}
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+INIT_FILE="__init__.py"
+
+src_install() {
+	# Make sure we install all |SERVER_IUSE_TESTS| first.
+	autotest_src_install
+	# Autotest depends on a few strategically placed INIT_FILEs to allow
+	# importing python code. In particular we want to allow importing
+	# server.site_tests.tast to be able to launch tast local tests.
+	# This INIT_FILE exists in git, but needs to be installed and finally
+	# packaged via chromite/lib/autotest_util.py into
+	# autotest_server_package.tar.bz2 to be served by devservers.
+	insinto "${AUTOTEST_BASE}/${AUTOTEST_SERVER_SITE_TESTS}"
+	doins "${AUTOTEST_SERVER_SITE_TESTS}/${INIT_FILE}"
+}
diff --git a/chromeos-base/autotest-server-tests/autotest-server-tests-9999.ebuild b/chromeos-base/autotest-server-tests/autotest-server-tests-9999.ebuild
index 6c5621a..27a6ce0 100644
--- a/chromeos-base/autotest-server-tests/autotest-server-tests-9999.ebuild
+++ b/chromeos-base/autotest-server-tests/autotest-server-tests-9999.ebuild
@@ -15,7 +15,7 @@
 KEYWORDS="~*"
 
 # Enable autotest by default.
-IUSE="android-container android-container-pi android-vm-rvc +autotest biod +cellular cheets_user_64 -chromeless_tests -chromeless_tty cros_p2p debugd dlc_test has-kernelnext is-kernelnext -moblab +power_management +readahead +tpm tpm2"
+IUSE="android-container android-container-pi android-vm-rvc +autotest biod +cellular +cheets_user cheets_user_64 cheets_userdebug_64 -chromeless_tests -chromeless_tty cros_p2p debugd dlc_test has-kernelnext is-kernelnext -moblab +power_management +readahead +tpm tpm2"
 REQUIRED_USE="?? ( has-kernelnext is-kernelnext )"
 
 RDEPEND=""
@@ -29,8 +29,6 @@
 	+tests_audio_AudioAfterReboot
 	+tests_audio_AudioAfterSuspend
 	+tests_audio_AudioArtifacts
-	+tests_audio_AudioARCPlayback
-	+tests_audio_AudioARCRecord
 	+tests_audio_AudioBasicAssistant
 	+tests_audio_AudioBasicBluetoothPlayback
 	+tests_audio_AudioBasicBluetoothPlaybackRecord
@@ -48,7 +46,7 @@
 	+tests_audio_AudioNodeSwitch
 	+tests_audio_AudioPinnedStream
 	+tests_audio_AudioQualityAfterSuspend
-	+tests_audio_AudioSanityCheck
+	+tests_audio_AudioTestAssumptionCheck
 	+tests_audio_AudioVolume
 	+tests_audio_AudioWebRTCLoopback
 	+tests_audio_InternalCardNodes
@@ -59,6 +57,7 @@
 	+tests_autoupdate_Basic
 	+tests_autoupdate_CatchBadSignatures
 	+tests_autoupdate_Cellular
+	+tests_autoupdate_ConsecutiveUpdatesBeforeReboot
 	+tests_autoupdate_DataPreserved
 	+tests_autoupdate_ForcedOOBEUpdate
 	+tests_autoupdate_FromUI
@@ -67,25 +66,34 @@
 	+tests_autoupdate_OmahaResponse
 	+tests_autoupdate_P2P
 	+tests_autoupdate_Periodic
+	+tests_autoupdate_RejectDuplicateUpdate
 	+tests_autoupdate_Rollback
 	dlc_test? ( +tests_autoupdate_WithDLC )
 	has-kernelnext? ( +tests_autoupdate_StatefulCompatibility )
 	is-kernelnext? ( +tests_autoupdate_StatefulCompatibility )
 	cellular? ( +tests_cellular_StaleModemReboot )
 	android-container-pi? (
-		+tests_cheets_CTS_Instant
-		+tests_cheets_CTS_P
-		+tests_cheets_GTS
+		cheets_user? (
+			+tests_cheets_CTS_Instant
+			+tests_cheets_CTS_P
+			+tests_cheets_GTS
+		)
+		cheets_user_64? (
+			+tests_cheets_CTS_Instant
+			+tests_cheets_CTS_P
+			+tests_cheets_GTS
+		)
 	)
 	android-vm-rvc? (
 		cheets_user_64? (
 			+tests_cheets_CTS_R
 			+tests_cheets_GTS_R
 		)
-		!cheets_user_64? (
+		cheets_userdebug_64? (
 			+tests_cheets_VTS_R
 		)
 	)
+	+tests_cellular_Callbox_AssertCellularData
 	+tests_cheets_LabDependencies
 	debugd? ( +tests_debugd_DevTools )
 	+tests_crosperf_Wrapper
@@ -104,7 +112,7 @@
 	+tests_dummy_PassServer
 	+tests_dummy_FailServer
 	+tests_dummy_FlakyTestServer
-	+tests_dummy_SynchronousOffloadServer
+	+tests_stub_SynchronousOffloadServer
 	+tests_enterprise_ClearTPM
 	+tests_enterprise_KioskEnrollmentServer
 	+tests_enterprise_LongevityTrackerServer
@@ -140,6 +148,7 @@
 	+tests_firmware_Cr50CCDFirmwareUpdate
 	+tests_firmware_Cr50GetName
 	+tests_firmware_Cr50InvalidateRW
+	+tests_firmware_Cr50Keygen
 	+tests_firmware_Cr50Open
 	+tests_firmware_Cr50OpenWhileAPOff
 	+tests_firmware_Cr50PartialBoardId
@@ -158,9 +167,11 @@
 	+tests_firmware_Cr50Update
 	+tests_firmware_Cr50UpdateScriptStress
 	+tests_firmware_Cr50USB
+	+tests_firmware_Cr50VerifyEK
 	+tests_firmware_Cr50WilcoEcrst
 	+tests_firmware_Cr50WilcoRmaFactoryMode
 	+tests_firmware_Cr50WPG3
+	+tests_firmware_CsmeFwUpdate
 	+tests_firmware_DevBootUSB
 	+tests_firmware_DevDefaultBoot
 	+tests_firmware_DevMode
@@ -179,11 +190,13 @@
 	+tests_firmware_ECPowerButton
 	+tests_firmware_ECPowerG3
 	+tests_firmware_ECSharedMem
+	+tests_firmware_ECSystemLocked
 	+tests_firmware_ECThermal
 	+tests_firmware_ECUpdateId
 	+tests_firmware_ECUsbPorts
 	+tests_firmware_ECWakeSource
 	+tests_firmware_ECWatchdog
+	+tests_firmware_EmmcWriteLoad
 	+tests_firmware_EventLog
 	+tests_firmware_FAFTPrepare
 	+tests_firmware_FAFTModeTransitions
@@ -191,6 +204,7 @@
 	+tests_firmware_FAFTSetup
 	biod? (
 		+tests_firmware_Fingerprint
+		+tests_firmware_FingerprintCrosConfig
 		+tests_firmware_FingerprintSigner
 	)
 	+tests_firmware_FMap
@@ -274,6 +288,7 @@
 	+tests_platform_CorruptRootfs
 	+tests_platform_CrashStateful
 	+tests_platform_ExternalUsbPeripherals
+	+tests_platform_FetchCloudConfig
 	+tests_platform_FlashErasers
 	+tests_platform_Flashrom
 	+tests_platform_HWwatchdog
@@ -281,6 +296,7 @@
 	+tests_platform_InstallTestImage
 	+tests_platform_InternalDisplay
 	+tests_platform_KernelErrorPaths
+	+tests_platform_MTBF
 	power_management? (
 		+tests_platform_PowerStatusStress
 		+tests_power_DeferForFlashrom
@@ -330,6 +346,7 @@
 	+tests_servohost_Reboot
 	+tests_stress_ClientTestReboot
 	+tests_stress_EnrollmentRetainment
+	+tests_stub_ServerToClientPass
 "
 
 IUSE_TESTS="${IUSE_TESTS}
diff --git a/chromeos-base/autotest-tests-arc-public/autotest-tests-arc-public-0.0.1-r1162.ebuild b/chromeos-base/autotest-tests-arc-public/autotest-tests-arc-public-0.0.1-r1162.ebuild
deleted file mode 100644
index 0a84d14..0000000
--- a/chromeos-base/autotest-tests-arc-public/autotest-tests-arc-public-0.0.1-r1162.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit autotest cros-workon flag-o-matic
-
-DESCRIPTION="Public ARC autotests"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	dev-python/pyxattr
-	chromeos-base/chromeos-chrome
-	chromeos-base/autotest-chrome
-	chromeos-base/telemetry
-	"
-
-DEPEND="${RDEPEND}"
-
-IUSE="
-	+autotest
-"
-
-src_prepare() {
-	# Telemetry tests require the path to telemetry source to exist in order to
-	# build. Copy the telemetry source to a temporary directory that is writable,
-	# so that file removals in Telemetry source can be performed properly.
-	export TMP_DIR="$(mktemp -d)"
-	cp -r "${SYSROOT}/usr/local/telemetry" "${TMP_DIR}"
-	export PYTHONPATH="${TMP_DIR}/telemetry/src/third_party/catapult/telemetry"
-	autotest_src_prepare
-}
-
diff --git a/chromeos-base/autotest-tests-arc-public/autotest-tests-arc-public-0.0.1-r2008.ebuild b/chromeos-base/autotest-tests-arc-public/autotest-tests-arc-public-0.0.1-r2008.ebuild
new file mode 100644
index 0000000..2372044
--- /dev/null
+++ b/chromeos-base/autotest-tests-arc-public/autotest-tests-arc-public-0.0.1-r2008.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit autotest cros-workon flag-o-matic
+
+DESCRIPTION="Public ARC autotests"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	dev-python/pyxattr
+	chromeos-base/chromeos-chrome
+	chromeos-base/autotest-chrome
+	chromeos-base/telemetry
+	"
+
+DEPEND="${RDEPEND}"
+
+IUSE="
+	+autotest
+"
+
+src_prepare() {
+	# Telemetry tests require the path to telemetry source to exist in order to
+	# build. Copy the telemetry source to a temporary directory that is writable,
+	# so that file removals in Telemetry source can be performed properly.
+	export TMP_DIR="$(mktemp -d)"
+	cp -r "${SYSROOT}/usr/local/telemetry" "${TMP_DIR}"
+	export PYTHONPATH="${TMP_DIR}/telemetry/src/third_party/catapult/telemetry"
+	autotest_src_prepare
+}
+
diff --git a/chromeos-base/autotest-tests-audio/autotest-tests-audio-0.0.1-r3215.ebuild b/chromeos-base/autotest-tests-audio/autotest-tests-audio-0.0.1-r3215.ebuild
deleted file mode 100644
index 4bd4ee6..0000000
--- a/chromeos-base/autotest-tests-audio/autotest-tests-audio-0.0.1-r3215.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="f87b49edd46ee81d6238c1aeac57b8cfe66482aa"
-CROS_WORKON_TREE="f93558b8a70c6080afd69871b0752fdf060d768c"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Audio autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="+autotest -chromeless_tty"
-
-RDEPEND="
-	!<chromeos-base/autotest-tests-0.0.3
-	chromeos-base/audiotest
-	!chromeless_tty? ( chromeos-base/telemetry )
-"
-DEPEND="${RDEPEND}"
-
-# audio_AudioInputGain and audio_CrasGetNodes depend on telemetry.
-IUSE_TESTS="
-	+tests_audio_Aconnect
-	+tests_audio_Aplay
-	!chromeless_tty? (
-		+tests_audio_AudioInputGain
-		+tests_audio_CrasGetNodes
-	)
-	+tests_audio_CRASFormatConversion
-	+tests_audio_CrasDevSwitchStress
-	+tests_audio_CrasPinnedStream
-	+tests_audio_CrasStress
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-src_prepare() {
-	if ! use chromeless_tty; then
-		# Telemetry tests require the path to telemetry source to exist in order to
-		# build. Copy the telemetry source to a temporary directory that is writable,
-		# so that file removals in Telemetry source can be performed properly.
-		export TMP_DIR="$(mktemp -d)"
-		cp -r "${SYSROOT}/usr/local/telemetry" "${TMP_DIR}"
-		export PYTHONPATH="${TMP_DIR}/telemetry/src/third_party/catapult/telemetry"
-	fi
-	autotest_src_prepare
-}
diff --git a/chromeos-base/autotest-tests-audio/autotest-tests-audio-0.0.1-r3219.ebuild b/chromeos-base/autotest-tests-audio/autotest-tests-audio-0.0.1-r3219.ebuild
new file mode 100644
index 0000000..cb3cb00
--- /dev/null
+++ b/chromeos-base/autotest-tests-audio/autotest-tests-audio-0.0.1-r3219.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="1866e839a7c7dc7d1fc1f6d31604edbf1ac1ac6e"
+CROS_WORKON_TREE="cb26b1124d2937d6e84fa895d1cdab8a4d3c5fd0"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Audio autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="+autotest -chromeless_tty"
+
+RDEPEND="
+	!<chromeos-base/autotest-tests-0.0.3
+	chromeos-base/audiotest
+	!chromeless_tty? ( chromeos-base/telemetry )
+"
+DEPEND="${RDEPEND}"
+
+# audio_AudioInputGain and audio_CrasGetNodes depend on telemetry.
+IUSE_TESTS="
+	+tests_audio_Aconnect
+	+tests_audio_Aplay
+	!chromeless_tty? (
+		+tests_audio_AudioInputGain
+		+tests_audio_CrasGetNodes
+	)
+	+tests_audio_CRASFormatConversion
+	+tests_audio_CrasDevSwitchStress
+	+tests_audio_CrasPinnedStream
+	+tests_audio_CrasStress
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+src_prepare() {
+	if ! use chromeless_tty; then
+		# Telemetry tests require the path to telemetry source to exist in order to
+		# build. Copy the telemetry source to a temporary directory that is writable,
+		# so that file removals in Telemetry source can be performed properly.
+		export TMP_DIR="$(mktemp -d)"
+		cp -r "${SYSROOT}/usr/local/telemetry" "${TMP_DIR}"
+		export PYTHONPATH="${TMP_DIR}/telemetry/src/third_party/catapult/telemetry"
+	fi
+	autotest_src_prepare
+}
diff --git a/chromeos-base/autotest-tests-cellular/autotest-tests-cellular-0.0.1-r3238.ebuild b/chromeos-base/autotest-tests-cellular/autotest-tests-cellular-0.0.1-r3238.ebuild
deleted file mode 100644
index 8263292..0000000
--- a/chromeos-base/autotest-tests-cellular/autotest-tests-cellular-0.0.1-r3238.ebuild
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="2e31794146dec95bac0eac32010673dd27f30c3c"
-CROS_WORKON_TREE="35be4be4da4554ecafb38df95bb1526d806a11c9"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Cellular autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="${IUSE} +autotest"
-
-RDEPEND="
-	!<chromeos-base/autotest-tests-0.0.2
-	chromeos-base/autotest-deps-cellular
-	chromeos-base/shill-test-scripts
-	dev-python/pygobject
-	dev-python/pyusb
-	sys-apps/ethtool
-"
-DEPEND="${RDEPEND}"
-
-IUSE_TESTS="
-	+tests_cellular_ActivateLTE
-	+tests_cellular_ConnectFailure
-	+tests_cellular_DeferredRegistration
-	+tests_cellular_DisableWhileConnecting
-	+tests_cellular_DisconnectFailure
-	+tests_cellular_Identifiers
-	+tests_cellular_OutOfCreditsSubscriptionState
-	+tests_cellular_SIMLocking
-	+tests_cellular_SafetyDance
-	+tests_cellular_ScanningProperty
-	+tests_cellular_ServiceName
-	+tests_cellular_Smoke
-	+tests_cellular_StressEnable
-"
-
-IUSE_MBIM_TESTS="
-	+tests_cellular_MbimComplianceControlCommand
-	+tests_cellular_MbimComplianceControlRequest
-	+tests_cellular_MbimComplianceDataTransfer
-	+tests_cellular_MbimComplianceDescriptor
-	+tests_cellular_MbimComplianceError
-"
-
-IUSE_TESTS="${IUSE_TESTS} ${IUSE_MBIM_TESTS}"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-AUTOTEST_DEPS_LIST=""
-AUTOTEST_CONFIG_LIST=""
-AUTOTEST_PROFILERS_LIST=""
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-cellular/autotest-tests-cellular-0.0.1-r3257.ebuild b/chromeos-base/autotest-tests-cellular/autotest-tests-cellular-0.0.1-r3257.ebuild
new file mode 100644
index 0000000..bd0b50b
--- /dev/null
+++ b/chromeos-base/autotest-tests-cellular/autotest-tests-cellular-0.0.1-r3257.ebuild
@@ -0,0 +1,71 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="7517e96310872b85043a1b420dcdcbf1141bfc9b"
+CROS_WORKON_TREE="a3840d3e11f296901738b7aa519b87390dae70e7"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Cellular autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="${IUSE} +autotest"
+
+RDEPEND="
+	!<chromeos-base/autotest-tests-0.0.2
+	chromeos-base/autotest-deps-cellular
+	chromeos-base/shill-test-scripts
+	dev-python/pygobject
+	dev-python/pyusb
+	sys-apps/ethtool
+"
+DEPEND="${RDEPEND}"
+
+IUSE_TESTS="
+	+tests_cellular_ActivateLTE
+	+tests_cellular_ConnectFailure
+	+tests_cellular_DeferredRegistration
+	+tests_cellular_DisableWhileConnecting
+	+tests_cellular_DisconnectFailure
+	+tests_cellular_HermesErrorScenarios
+	+tests_cellular_HermesMM_InstallEnable
+	+tests_cellular_Hermes_MultiProfile
+	+tests_cellular_Hermes_Restart_SlotSwitch
+	+tests_cellular_Hermes_SingleProfile
+	+tests_cellular_Identifiers
+	+tests_cellular_OutOfCreditsSubscriptionState
+	+tests_cellular_SIMLocking
+	+tests_cellular_SafetyDance
+	+tests_cellular_ScanningProperty
+	+tests_cellular_ServiceName
+	+tests_cellular_Smoke
+	+tests_cellular_StressEnable
+	+tests_cellular_ValidateTestEnvironment
+"
+
+IUSE_MBIM_TESTS="
+	+tests_cellular_MbimComplianceControlCommand
+	+tests_cellular_MbimComplianceControlRequest
+	+tests_cellular_MbimComplianceDataTransfer
+	+tests_cellular_MbimComplianceDescriptor
+	+tests_cellular_MbimComplianceError
+"
+
+IUSE_TESTS="${IUSE_TESTS} ${IUSE_MBIM_TESTS}"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+AUTOTEST_DEPS_LIST=""
+AUTOTEST_CONFIG_LIST=""
+AUTOTEST_PROFILERS_LIST=""
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-cellular/autotest-tests-cellular-9999.ebuild b/chromeos-base/autotest-tests-cellular/autotest-tests-cellular-9999.ebuild
index 09fcb2c..6f60084 100644
--- a/chromeos-base/autotest-tests-cellular/autotest-tests-cellular-9999.ebuild
+++ b/chromeos-base/autotest-tests-cellular/autotest-tests-cellular-9999.ebuild
@@ -32,6 +32,11 @@
 	+tests_cellular_DeferredRegistration
 	+tests_cellular_DisableWhileConnecting
 	+tests_cellular_DisconnectFailure
+	+tests_cellular_HermesErrorScenarios
+	+tests_cellular_HermesMM_InstallEnable
+	+tests_cellular_Hermes_MultiProfile
+	+tests_cellular_Hermes_Restart_SlotSwitch
+	+tests_cellular_Hermes_SingleProfile
 	+tests_cellular_Identifiers
 	+tests_cellular_OutOfCreditsSubscriptionState
 	+tests_cellular_SIMLocking
@@ -40,6 +45,7 @@
 	+tests_cellular_ServiceName
 	+tests_cellular_Smoke
 	+tests_cellular_StressEnable
+	+tests_cellular_ValidateTestEnvironment
 "
 
 IUSE_MBIM_TESTS="
diff --git a/chromeos-base/autotest-tests-cryptohome/autotest-tests-cryptohome-0.0.1-r3183.ebuild b/chromeos-base/autotest-tests-cryptohome/autotest-tests-cryptohome-0.0.1-r3183.ebuild
deleted file mode 100644
index 2f8a9b9..0000000
--- a/chromeos-base/autotest-tests-cryptohome/autotest-tests-cryptohome-0.0.1-r3183.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="2167d36da223b9dae9c2699d46caab77fe205fce"
-CROS_WORKON_TREE="64027579f73b432680a0fca8450ace233c20134c"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Cryptohome autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="+autotest"
-
-COMMON_DEPEND="
-	!<chromeos-base/autotest-tests-0.0.3
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/cryptohome-dev-utils
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-"
-
-IUSE_TESTS="
-	+tests_platform_BootLockbox
-	+tests_platform_CryptohomeBadPerms
-	+tests_platform_CryptohomeChangePassword
-	+tests_platform_CryptohomeFio
-	+tests_platform_CryptohomeKeyEviction
-	+tests_platform_CryptohomeLECredentialManager
-	+tests_platform_CryptohomeLECredentialManagerServer
-	+tests_platform_CryptohomeMigrateChapsToken
-	+tests_platform_CryptohomeMigrateChapsTokenClient
-	+tests_platform_CryptohomeMigrateKey
-	+tests_platform_CryptohomeMount
-	+tests_platform_CryptohomeMultiple
-	+tests_platform_CryptohomeNonDirs
-	+tests_platform_CryptohomeStress
-	+tests_platform_CryptohomeTestAuth
-	+tests_platform_CryptohomeTpmLiveTest
-	+tests_platform_CryptohomeTpmLiveTestServer
-	+tests_platform_CryptohomeTPMReOwn
-	+tests_platform_CryptohomeTPMReOwnServer
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-cryptohome/autotest-tests-cryptohome-0.0.1-r3187.ebuild b/chromeos-base/autotest-tests-cryptohome/autotest-tests-cryptohome-0.0.1-r3187.ebuild
new file mode 100644
index 0000000..a96501a
--- /dev/null
+++ b/chromeos-base/autotest-tests-cryptohome/autotest-tests-cryptohome-0.0.1-r3187.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="08d3cc9c6917d029c01338f2eee4692e4ce2e152"
+CROS_WORKON_TREE="9d4e01e2ade94f263bd118fa7c26d4a67d8810ed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Cryptohome autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="+autotest"
+
+COMMON_DEPEND="
+	!<chromeos-base/autotest-tests-0.0.3
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/cryptohome-dev-utils
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+"
+
+IUSE_TESTS="
+	+tests_platform_CryptohomeFio
+	+tests_platform_CryptohomeStress
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-cryptohome/autotest-tests-cryptohome-9999.ebuild b/chromeos-base/autotest-tests-cryptohome/autotest-tests-cryptohome-9999.ebuild
index c6cfe3e..467beed 100644
--- a/chromeos-base/autotest-tests-cryptohome/autotest-tests-cryptohome-9999.ebuild
+++ b/chromeos-base/autotest-tests-cryptohome/autotest-tests-cryptohome-9999.ebuild
@@ -31,25 +31,8 @@
 "
 
 IUSE_TESTS="
-	+tests_platform_BootLockbox
-	+tests_platform_CryptohomeBadPerms
-	+tests_platform_CryptohomeChangePassword
 	+tests_platform_CryptohomeFio
-	+tests_platform_CryptohomeKeyEviction
-	+tests_platform_CryptohomeLECredentialManager
-	+tests_platform_CryptohomeLECredentialManagerServer
-	+tests_platform_CryptohomeMigrateChapsToken
-	+tests_platform_CryptohomeMigrateChapsTokenClient
-	+tests_platform_CryptohomeMigrateKey
-	+tests_platform_CryptohomeMount
-	+tests_platform_CryptohomeMultiple
-	+tests_platform_CryptohomeNonDirs
 	+tests_platform_CryptohomeStress
-	+tests_platform_CryptohomeTestAuth
-	+tests_platform_CryptohomeTpmLiveTest
-	+tests_platform_CryptohomeTpmLiveTestServer
-	+tests_platform_CryptohomeTPMReOwn
-	+tests_platform_CryptohomeTPMReOwnServer
 "
 
 IUSE="${IUSE} ${IUSE_TESTS}"
diff --git a/chromeos-base/autotest-tests-debugd/autotest-tests-debugd-0.0.1-r3177.ebuild b/chromeos-base/autotest-tests-debugd/autotest-tests-debugd-0.0.1-r3177.ebuild
deleted file mode 100644
index 470d37f..0000000
--- a/chromeos-base/autotest-tests-debugd/autotest-tests-debugd-0.0.1-r3177.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="bd537770848ddec105efbc7d0c5b2ee36a3bc28c"
-CROS_WORKON_TREE="7abe0fa6c1f4184fbc880685f156357a5ec6a435"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="debugd autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="+autotest"
-
-RDEPEND="
-	!<chromeos-base/autotest-tests-0.0.3
-"
-
-IUSE_TESTS="
-	+tests_platform_TraceClockMonotonic
-	+tests_platform_DebugDaemonGetNetworkStatus
-	+tests_platform_DebugDaemonGetPerfData
-	+tests_platform_DebugDaemonGetPerfOutputFd
-	+tests_platform_DebugDaemonGetRoutes
-	+tests_platform_DebugDaemonPerfDataInFeedbackLogs
-	+tests_platform_DebugDaemonPing
-	+tests_platform_DebugDaemonTracePath
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-debugd/autotest-tests-debugd-0.0.1-r3178.ebuild b/chromeos-base/autotest-tests-debugd/autotest-tests-debugd-0.0.1-r3178.ebuild
new file mode 100644
index 0000000..7f3a3d3
--- /dev/null
+++ b/chromeos-base/autotest-tests-debugd/autotest-tests-debugd-0.0.1-r3178.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="0bb6d29703e005a7b7f584a86104c9c30e25185f"
+CROS_WORKON_TREE="6b7edca2573c9555e1eb7e2ca4abe3432cb63fe2"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="debugd autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="+autotest"
+
+RDEPEND="
+	!<chromeos-base/autotest-tests-0.0.3
+"
+
+IUSE_TESTS="
+	+tests_platform_TraceClockMonotonic
+	+tests_platform_DebugDaemonGetNetworkStatus
+	+tests_platform_DebugDaemonGetPerfData
+	+tests_platform_DebugDaemonGetPerfOutputFd
+	+tests_platform_DebugDaemonGetRoutes
+	+tests_platform_DebugDaemonPerfDataInFeedbackLogs
+	+tests_platform_DebugDaemonPing
+	+tests_platform_DebugDaemonTracePath
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-graphics/autotest-tests-graphics-0.0.1-r3245.ebuild b/chromeos-base/autotest-tests-graphics/autotest-tests-graphics-0.0.1-r3245.ebuild
deleted file mode 100644
index 7fa9339..0000000
--- a/chromeos-base/autotest-tests-graphics/autotest-tests-graphics-0.0.1-r3245.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="c40e190f7b27e0e6ba8ef27aa8a7b157c44fd53e"
-CROS_WORKON_TREE="e7baac7cbb860b4652858adc33327facd8bd1642"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-sanitizers cros-workon autotest
-
-DESCRIPTION="Graphics autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="+autotest"
-
-RDEPEND="
-	!<chromeos-base/autotest-tests-0.0.3
-	chromeos-base/autotest-deps-graphics
-	tests_graphics_Gbm? ( media-libs/minigbm )
-	tests_graphics_GLBench? ( chromeos-base/glbench )
-	tests_graphics_GLMark2? ( chromeos-base/autotest-deps-glmark2 )
-	tests_graphics_SanAngeles? ( media-libs/waffle )
-"
-DEPEND="${RDEPEND}"
-
-IUSE_TESTS="
-	+tests_graphics_dEQP
-	+tests_graphics_Gbm
-	+tests_graphics_GLAPICheck
-	+tests_graphics_GLBench
-	+tests_graphics_GLMark2
-	+tests_graphics_KernelConfig
-	+tests_graphics_KernelMemory
-	+tests_graphics_LibDRM
-	+tests_graphics_PerfControl
-	+tests_graphics_SanAngeles
-	+tests_graphics_SyncControlTest
-	+tests_graphics_Power
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-src_configure() {
-	sanitizers-setup-env
-	default
-}
diff --git a/chromeos-base/autotest-tests-graphics/autotest-tests-graphics-0.0.1-r3265.ebuild b/chromeos-base/autotest-tests-graphics/autotest-tests-graphics-0.0.1-r3265.ebuild
new file mode 100644
index 0000000..f39eaac
--- /dev/null
+++ b/chromeos-base/autotest-tests-graphics/autotest-tests-graphics-0.0.1-r3265.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="f76617cf8f9dfe3ba4b5953e3dc2c8a97cd52c81"
+CROS_WORKON_TREE="c0ffc312566b015e40f68885e0fc926bbce4d139"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-sanitizers cros-workon autotest
+
+DESCRIPTION="Graphics autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="+autotest"
+
+RDEPEND="
+	!<chromeos-base/autotest-tests-0.0.3
+	chromeos-base/autotest-deps-graphics
+	tests_graphics_Gbm? ( media-libs/minigbm )
+	tests_graphics_GLBench? ( chromeos-base/glbench )
+	tests_graphics_GLMark2? ( chromeos-base/autotest-deps-glmark2 )
+	tests_graphics_SanAngeles? ( media-libs/waffle )
+"
+DEPEND="${RDEPEND}"
+
+IUSE_TESTS="
+	+tests_graphics_dEQP
+	+tests_graphics_Gbm
+	+tests_graphics_GLAPICheck
+	+tests_graphics_GLBench
+	+tests_graphics_GLMark2
+	+tests_graphics_KernelConfig
+	+tests_graphics_KernelMemory
+	+tests_graphics_LibDRM
+	+tests_graphics_PerfControl
+	+tests_graphics_SanAngeles
+	+tests_graphics_SyncControlTest
+	+tests_graphics_parallel_dEQP
+	+tests_graphics_Power
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+src_configure() {
+	sanitizers-setup-env
+	default
+}
diff --git a/chromeos-base/autotest-tests-graphics/autotest-tests-graphics-9999.ebuild b/chromeos-base/autotest-tests-graphics/autotest-tests-graphics-9999.ebuild
index 2443d404..317356d 100644
--- a/chromeos-base/autotest-tests-graphics/autotest-tests-graphics-9999.ebuild
+++ b/chromeos-base/autotest-tests-graphics/autotest-tests-graphics-9999.ebuild
@@ -39,6 +39,7 @@
 	+tests_graphics_PerfControl
 	+tests_graphics_SanAngeles
 	+tests_graphics_SyncControlTest
+	+tests_graphics_parallel_dEQP
 	+tests_graphics_Power
 "
 
diff --git a/chromeos-base/autotest-tests-ownershipapi/autotest-tests-ownershipapi-0.0.1-r7891.ebuild b/chromeos-base/autotest-tests-ownershipapi/autotest-tests-ownershipapi-0.0.1-r7891.ebuild
deleted file mode 100644
index ebae6e1..0000000
--- a/chromeos-base/autotest-tests-ownershipapi/autotest-tests-ownershipapi-0.0.1-r7891.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="edf345c66d0eece43912c9c813a24825fdd338dd"
-CROS_WORKON_TREE="0403c48eb6c76d705968f240a92353631701a279"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-
-inherit cros-workon autotest
-
-DESCRIPTION="login_OwnershipApi autotest"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="+xset +tpmtools"
-# Enable autotest by default.
-IUSE="${IUSE} +autotest"
-
-RDEPEND="${RDEPEND}
-	chromeos-base/autotest-deps-dbus
-	chromeos-base/autotest-deps-policy
-	chromeos-base/chromeos-chrome
-	chromeos-base/telemetry
-	dev-python/protobuf-python
-	dev-python/pygobject
-"
-
-DEPEND="${RDEPEND}"
-
-# The telemetry dependency comes from the chrome.py import in some of the tests.
-IUSE_TESTS="
-	+tests_login_CryptohomeOwnerQuery
-	+tests_login_MultipleSessions
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-AUTOTEST_DEPS_LIST=""
-AUTOTEST_CONFIG_LIST=""
-AUTOTEST_PROFILERS_LIST=""
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
-
-src_prepare() {
-	# Telemetry tests require the path to telemetry source to exist in order to
-	# build.  Copy the telemetry source to a temporary directory that is writable,
-	# so that file removals in Telemetry source can be performed properly.
-	export TMP_DIR="$(mktemp -d)"
-	cp -r "${SYSROOT}/usr/local/telemetry" "${TMP_DIR}"
-	export PYTHONPATH="${TMP_DIR}/telemetry/src/third_party/catapult/telemetry"
-	autotest_src_prepare
-}
diff --git a/chromeos-base/autotest-tests-ownershipapi/autotest-tests-ownershipapi-0.0.1-r7892.ebuild b/chromeos-base/autotest-tests-ownershipapi/autotest-tests-ownershipapi-0.0.1-r7892.ebuild
new file mode 100644
index 0000000..9da4883
--- /dev/null
+++ b/chromeos-base/autotest-tests-ownershipapi/autotest-tests-ownershipapi-0.0.1-r7892.ebuild
@@ -0,0 +1,57 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="99e5f02e736eab3dd1445834c1f26f46db85e452"
+CROS_WORKON_TREE="54ff09d88d01f0b74b519616c18d7e964daafc53"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+
+inherit cros-workon autotest
+
+DESCRIPTION="login_OwnershipApi autotest"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+xset +tpmtools"
+# Enable autotest by default.
+IUSE="${IUSE} +autotest"
+
+RDEPEND="${RDEPEND}
+	chromeos-base/autotest-deps-dbus
+	chromeos-base/autotest-deps-policy
+	chromeos-base/chromeos-chrome
+	chromeos-base/telemetry
+	dev-python/protobuf-python
+	dev-python/pygobject
+"
+
+DEPEND="${RDEPEND}"
+
+# The telemetry dependency comes from the chrome.py import in some of the tests.
+IUSE_TESTS="
+	+tests_login_CryptohomeOwnerQuery
+	+tests_login_MultipleSessions
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+AUTOTEST_DEPS_LIST=""
+AUTOTEST_CONFIG_LIST=""
+AUTOTEST_PROFILERS_LIST=""
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
+
+src_prepare() {
+	# Telemetry tests require the path to telemetry source to exist in order to
+	# build.  Copy the telemetry source to a temporary directory that is writable,
+	# so that file removals in Telemetry source can be performed properly.
+	export TMP_DIR="$(mktemp -d)"
+	cp -r "${SYSROOT}/usr/local/telemetry" "${TMP_DIR}"
+	export PYTHONPATH="${TMP_DIR}/telemetry/src/third_party/catapult/telemetry"
+	autotest_src_prepare
+}
diff --git a/chromeos-base/autotest-tests-power/autotest-tests-power-0.0.1-r3227.ebuild b/chromeos-base/autotest-tests-power/autotest-tests-power-0.0.1-r3227.ebuild
deleted file mode 100644
index 1439932..0000000
--- a/chromeos-base/autotest-tests-power/autotest-tests-power-0.0.1-r3227.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=4
-CROS_WORKON_COMMIT="0450a0732282ad63eddf9f80dc5f3c0b68a6cbc5"
-CROS_WORKON_TREE="9aef706603aa7bf550934b087dbf633d2371b94e"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="power autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="+autotest +shill"
-
-RDEPEND="
-	shill? ( chromeos-base/shill-test-scripts )
-	!<chromeos-base/autotest-tests-0.0.3
-"
-DEPEND="${RDEPEND}"
-
-# cros/power_suspend depends on shill-test-scripts.
-IUSE_TESTS="
-	+tests_hardware_Backlight
-	+tests_power_ARMSettings
-	+tests_power_Backlight
-	+tests_power_BacklightControl
-	+tests_power_BacklightSuspend
-	+tests_power_BatteryCharge
-	+tests_power_CheckAC
-	+tests_power_CheckAfterSuspend
-	+tests_power_CPUFreq
-	+tests_power_CPUIdle
-	+tests_power_Draw
-	+tests_power_Dummy
-	+tests_power_HotCPUSuspend
-	+tests_power_KernelSuspend
-	+tests_power_MemorySuspend
-	+tests_power_NoConsoleSuspend
-	+tests_power_ProbeDriver
-	shill? ( +tests_power_Resume )
-	+tests_power_Standby
-	+tests_power_StatsCPUFreq
-	+tests_power_StatsCPUIdle
-	+tests_power_StatsUSB
-	+tests_power_Status
-	shill? (
-		+tests_power_SuspendStress
-		+tests_power_SuspendToIdle
-	)
-	+tests_power_WaitForCoolDown
-	+tests_power_WakeupRTC
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-power/autotest-tests-power-0.0.1-r3240.ebuild b/chromeos-base/autotest-tests-power/autotest-tests-power-0.0.1-r3240.ebuild
new file mode 100644
index 0000000..e91ebe3
--- /dev/null
+++ b/chromeos-base/autotest-tests-power/autotest-tests-power-0.0.1-r3240.ebuild
@@ -0,0 +1,64 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=4
+CROS_WORKON_COMMIT="e81b4aa0b4edc96b29fa83a5a62ac5a46d7b07e1"
+CROS_WORKON_TREE="fafed70d3d1eef417289a57d9ace6237a0f33399"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="power autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="+autotest +shill"
+
+RDEPEND="
+	shill? ( chromeos-base/shill-test-scripts )
+	!<chromeos-base/autotest-tests-0.0.3
+"
+DEPEND="${RDEPEND}"
+
+# cros/power_suspend depends on shill-test-scripts.
+IUSE_TESTS="
+	+tests_hardware_Backlight
+	+tests_power_ARMSettings
+	+tests_power_Backlight
+	+tests_power_BacklightControl
+	+tests_power_BacklightSuspend
+	+tests_power_BatteryCharge
+	+tests_power_BatteryDesignCapacity
+	+tests_power_CheckAC
+	+tests_power_CheckAfterSuspend
+	+tests_power_CPUFreq
+	+tests_power_CPUIdle
+	+tests_power_Draw
+	+tests_power_Dummy
+	+tests_power_HotCPUSuspend
+	+tests_power_KernelSuspend
+	+tests_power_MemorySuspend
+	+tests_power_NoConsoleSuspend
+	+tests_power_ProbeDriver
+	shill? ( +tests_power_Resume )
+	+tests_power_Standby
+	+tests_power_StatsCPUFreq
+	+tests_power_StatsCPUIdle
+	+tests_power_StatsUSB
+	+tests_power_Status
+	shill? (
+		+tests_power_SuspendStress
+		+tests_power_SuspendToIdle
+	)
+	+tests_power_WaitForCoolDown
+	+tests_power_WakeupRTC
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-power/autotest-tests-power-9999.ebuild b/chromeos-base/autotest-tests-power/autotest-tests-power-9999.ebuild
index c92090e..3b66dc9 100644
--- a/chromeos-base/autotest-tests-power/autotest-tests-power-9999.ebuild
+++ b/chromeos-base/autotest-tests-power/autotest-tests-power-9999.ebuild
@@ -31,6 +31,7 @@
 	+tests_power_BacklightControl
 	+tests_power_BacklightSuspend
 	+tests_power_BatteryCharge
+	+tests_power_BatteryDesignCapacity
 	+tests_power_CheckAC
 	+tests_power_CheckAfterSuspend
 	+tests_power_CPUFreq
diff --git a/chromeos-base/autotest-tests-security/autotest-tests-security-0.0.1-r3303.ebuild b/chromeos-base/autotest-tests-security/autotest-tests-security-0.0.1-r3303.ebuild
deleted file mode 100644
index a8d9865..0000000
--- a/chromeos-base/autotest-tests-security/autotest-tests-security-0.0.1-r3303.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="37ae74af76030e8b8c599d636c17dccd4be80feb"
-CROS_WORKON_TREE="5ead5abe2e6a4f51e0785d23469ea9886901b155"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest libchrome
-
-DESCRIPTION="Security autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="+autotest -chromeless_tests -chromeless_tty containers +seccomp selinux"
-
-RDEPEND="
-	!<chromeos-base/autotest-tests-0.0.3
-	containers? (
-		tests_security_Libcontainer? (
-			chromeos-base/minijail
-			chromeos-base/libcontainer
-		)
-	)
-"
-DEPEND="${RDEPEND}"
-
-IUSE_TESTS="
-	!chromeless_tty? (
-		!chromeless_tests? (
-			+tests_security_RendererSandbox
-			+tests_security_SessionManagerDbusEndpoints
-		)
-	)
-	seccomp? (
-		+tests_security_SeccompSyscallFilters
-	)
-	containers? ( +tests_security_Libcontainer )
-	+tests_security_NosymfollowMountOption
-	+tests_security_ProcessManagementPolicy
-	+tests_security_RootfsOwners
-	+tests_security_SysVIPC
-	x86? ( +tests_security_x86Registers )
-	amd64? ( +tests_security_x86Registers )
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-security/autotest-tests-security-0.0.1-r3305.ebuild b/chromeos-base/autotest-tests-security/autotest-tests-security-0.0.1-r3305.ebuild
new file mode 100644
index 0000000..9d6aae3
--- /dev/null
+++ b/chromeos-base/autotest-tests-security/autotest-tests-security-0.0.1-r3305.ebuild
@@ -0,0 +1,54 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="99e5f02e736eab3dd1445834c1f26f46db85e452"
+CROS_WORKON_TREE="54ff09d88d01f0b74b519616c18d7e964daafc53"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest libchrome
+
+DESCRIPTION="Security autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="+autotest -chromeless_tests -chromeless_tty containers +seccomp selinux"
+
+RDEPEND="
+	!<chromeos-base/autotest-tests-0.0.3
+	containers? (
+		tests_security_Libcontainer? (
+			chromeos-base/minijail
+			chromeos-base/libcontainer
+		)
+	)
+"
+DEPEND="${RDEPEND}"
+
+IUSE_TESTS="
+	!chromeless_tty? (
+		!chromeless_tests? (
+			+tests_security_RendererSandbox
+			+tests_security_SessionManagerDbusEndpoints
+		)
+	)
+	seccomp? (
+		+tests_security_SeccompSyscallFilters
+	)
+	containers? ( +tests_security_Libcontainer )
+	+tests_security_NosymfollowMountOption
+	+tests_security_ProcessManagementPolicy
+	+tests_security_RootfsOwners
+	+tests_security_SysVIPC
+	x86? ( +tests_security_x86Registers )
+	amd64? ( +tests_security_x86Registers )
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-shill/autotest-tests-shill-0.0.1-r3231.ebuild b/chromeos-base/autotest-tests-shill/autotest-tests-shill-0.0.1-r3231.ebuild
deleted file mode 100644
index 83a0b8f..0000000
--- a/chromeos-base/autotest-tests-shill/autotest-tests-shill-0.0.1-r3231.ebuild
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="1991f6bff55fa8bed367e7fd629a56f0c8ee4ab6"
-CROS_WORKON_TREE="dade62ef55fc7299cc303101e72215df02cbb3a7"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="shill autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="+autotest +tpm tpm2"
-
-RDEPEND="
-	!<chromeos-base/autotest-tests-0.0.3
-	chromeos-base/shill-test-scripts
-"
-DEPEND="${RDEPEND}"
-
-IUSE_TESTS="
-	+tests_network_DhcpClasslessStaticRoute
-	+tests_network_DhcpFailureWithStaticIP
-	+tests_network_DhcpNak
-	+tests_network_DhcpNegotiationSuccess
-	+tests_network_DhcpNegotiationTimeout
-	+tests_network_DhcpNonAsciiParameter
-	+tests_network_DhcpRenew
-	+tests_network_DhcpRenewWithOptionSubset
-	+tests_network_DhcpRequestHostName
-	+tests_network_DhcpStaticIP
-	+tests_network_DhcpVendorEncapsulatedOptions
-	+tests_network_DhcpWpadNegotiation
-	+tests_network_WiFiInvalidParameters
-	+tests_network_WiFiResume
-	+tests_network_WlanPresent
-	+tests_network_WlanRegulatory
-	+tests_network_WlanHasIP
-	tpm? ( +tests_network_VPNConnect )
-	tpm2? ( +tests_network_VPNConnect )
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-shill/autotest-tests-shill-0.0.1-r3233.ebuild b/chromeos-base/autotest-tests-shill/autotest-tests-shill-0.0.1-r3233.ebuild
new file mode 100644
index 0000000..9657be2
--- /dev/null
+++ b/chromeos-base/autotest-tests-shill/autotest-tests-shill-0.0.1-r3233.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="66f00db8190f4927b1cca8203cc30eeefe2cc353"
+CROS_WORKON_TREE="8b8c2ee1306693fc53479eeeb8eab79cd41ba97e"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="shill autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="+autotest +tpm tpm2"
+
+RDEPEND="
+	!<chromeos-base/autotest-tests-0.0.3
+	chromeos-base/shill-test-scripts
+"
+DEPEND="${RDEPEND}"
+
+IUSE_TESTS="
+	+tests_network_DhcpClasslessStaticRoute
+	+tests_network_DhcpFailureWithStaticIP
+	+tests_network_DhcpNak
+	+tests_network_DhcpNegotiationSuccess
+	+tests_network_DhcpNegotiationTimeout
+	+tests_network_DhcpNonAsciiParameter
+	+tests_network_DhcpRenew
+	+tests_network_DhcpRenewWithOptionSubset
+	+tests_network_DhcpRequestHostName
+	+tests_network_DhcpStaticIP
+	+tests_network_DhcpVendorEncapsulatedOptions
+	+tests_network_DhcpWpadNegotiation
+	+tests_network_WiFiInvalidParameters
+	+tests_network_WiFiResume
+	+tests_network_WlanPresent
+	+tests_network_WlanRegulatory
+	+tests_network_WlanHasIP
+	tpm? ( +tests_network_VPNConnect )
+	tpm2? ( +tests_network_VPNConnect )
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-smbprovider/autotest-tests-smbprovider-0.0.1-r8.ebuild b/chromeos-base/autotest-tests-smbprovider/autotest-tests-smbprovider-0.0.1-r8.ebuild
deleted file mode 100644
index 3199d57..0000000
--- a/chromeos-base/autotest-tests-smbprovider/autotest-tests-smbprovider-0.0.1-r8.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="edf345c66d0eece43912c9c813a24825fdd338dd"
-CROS_WORKON_TREE="0403c48eb6c76d705968f240a92353631701a279"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="SmbProvider Autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="${IUSE} +autotest"
-
-RDEPEND="
-	chromeos-base/chromeos-chrome
-	chromeos-base/autotest-chrome
-"
-
-DEPEND="${RDEPEND}"
-
-IUSE_TESTS="
-	+tests_enterprise_SmbProviderDaemon
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-smbprovider/autotest-tests-smbprovider-0.0.1-r9.ebuild b/chromeos-base/autotest-tests-smbprovider/autotest-tests-smbprovider-0.0.1-r9.ebuild
new file mode 100644
index 0000000..19c91f8
--- /dev/null
+++ b/chromeos-base/autotest-tests-smbprovider/autotest-tests-smbprovider-0.0.1-r9.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="5acfb2eacf53ae16a2976645d71e4ef541595c0e"
+CROS_WORKON_TREE="3cc870d4d7579e9ae029a6f9936868e4436148a7"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="SmbProvider Autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="${IUSE} +autotest"
+
+RDEPEND="
+	chromeos-base/chromeos-chrome
+	chromeos-base/autotest-chrome
+"
+
+DEPEND="${RDEPEND}"
+
+IUSE_TESTS="
+	+tests_enterprise_SmbProviderDaemon
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-toolchain/autotest-tests-toolchain-0.0.1-r10.ebuild b/chromeos-base/autotest-tests-toolchain/autotest-tests-toolchain-0.0.1-r10.ebuild
deleted file mode 100644
index ea4f6cb..0000000
--- a/chromeos-base/autotest-tests-toolchain/autotest-tests-toolchain-0.0.1-r10.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="f9b45836f8e426a25a1cdef77948fff024417e1e"
-CROS_WORKON_TREE="cd710543ff9c84e60725841b3c7f665a683a12fe"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Compilation and runtime tests for toolchain"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-
-LICENSE="GPL-2"
-SLOT=0
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="+autotest"
-
-RDEPEND="
-	!<chromeos-base/autotest-tests-0.0.3
-	chromeos-base/toolchain-tests
-"
-DEPEND="${RDEPEND}"
-
-IUSE_TESTS="
-	+tests_platform_ToolchainTests
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-toolchain/autotest-tests-toolchain-0.0.1-r12.ebuild b/chromeos-base/autotest-tests-toolchain/autotest-tests-toolchain-0.0.1-r12.ebuild
new file mode 100644
index 0000000..e4c84ca
--- /dev/null
+++ b/chromeos-base/autotest-tests-toolchain/autotest-tests-toolchain-0.0.1-r12.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="b737d4562f6687a684613ef67f9978665d031acf"
+CROS_WORKON_TREE="b5b6acaf59878be095d31a8a414321e24bb3cce3"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Compilation and runtime tests for toolchain"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+
+LICENSE="GPL-2"
+SLOT=0
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="+autotest"
+
+RDEPEND="
+	!<chromeos-base/autotest-tests-0.0.3
+	chromeos-base/toolchain-tests
+"
+DEPEND="${RDEPEND}"
+
+IUSE_TESTS="
+	+tests_platform_ToolchainTests
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-tpm/autotest-tests-tpm-0.0.1-r3185.ebuild b/chromeos-base/autotest-tests-tpm/autotest-tests-tpm-0.0.1-r3185.ebuild
deleted file mode 100644
index fb577da..0000000
--- a/chromeos-base/autotest-tests-tpm/autotest-tests-tpm-0.0.1-r3185.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="7347e345b650b3a52b167dfc3dc2a4f94a86485c"
-CROS_WORKON_TREE="4a255fc35c89bb76e753c432dcabb1fd70619597"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="Autotests involving the tpm"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# Enable autotest by default.
-IUSE="+autotest tpm2"
-
-RDEPEND="
-	!<chromeos-base/autotest-tests-0.0.3
-	tpm2? ( chromeos-base/g2f_tools )
-"
-DEPEND="${RDEPEND}"
-
-IUSE_TESTS="
-	+tests_firmware_Cr50VirtualNVRam
-	+tests_firmware_Cr50VirtualNVRamServer
-	+tests_firmware_Cr50U2fPowerwash
-	+tests_hardware_TPMCheck
-	+tests_kernel_TPMStress
-	+tests_platform_Pkcs11InitUnderErrors
-	+tests_platform_Pkcs11ChangeAuthData
-	+tests_platform_Pkcs11Events
-	+tests_platform_Pkcs11LoadPerf
-	+tests_platform_TPMEvict
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-tpm/autotest-tests-tpm-0.0.1-r3189.ebuild b/chromeos-base/autotest-tests-tpm/autotest-tests-tpm-0.0.1-r3189.ebuild
new file mode 100644
index 0000000..3953fa2
--- /dev/null
+++ b/chromeos-base/autotest-tests-tpm/autotest-tests-tpm-0.0.1-r3189.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="06e80b36b25d6bb18277869044b6caff43c96bc8"
+CROS_WORKON_TREE="d5fca090b73d08131aee571109b77a337c42fd39"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="Autotests involving the tpm"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+# Enable autotest by default.
+IUSE="+autotest tpm2"
+
+RDEPEND="
+	!<chromeos-base/autotest-tests-0.0.3
+	tpm2? ( chromeos-base/g2f_tools )
+"
+DEPEND="${RDEPEND}"
+
+IUSE_TESTS="
+	+tests_firmware_Cr50VirtualNVRam
+	+tests_firmware_Cr50VirtualNVRamServer
+	+tests_firmware_Cr50U2fPowerwash
+	+tests_hardware_TPMCheck
+	+tests_kernel_TPMStress
+	+tests_platform_Pkcs11InitUnderErrors
+	+tests_platform_Pkcs11ChangeAuthData
+	+tests_platform_Pkcs11Events
+	+tests_platform_Pkcs11LoadPerf
+	+tests_platform_TPMEvict
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-vm-host/autotest-tests-vm-host-0.0.1-r1800.ebuild b/chromeos-base/autotest-tests-vm-host/autotest-tests-vm-host-0.0.1-r1800.ebuild
deleted file mode 100644
index 8d329da..0000000
--- a/chromeos-base/autotest-tests-vm-host/autotest-tests-vm-host-0.0.1-r1800.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon autotest
-
-DESCRIPTION="kvm host autotests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="+autotest"
-
-RDEPEND=""
-DEPEND="${RDEPEND}"
-
-IUSE_TESTS="
-	+tests_vm_CrosVmStart
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests-vm-host/autotest-tests-vm-host-0.0.1-r2646.ebuild b/chromeos-base/autotest-tests-vm-host/autotest-tests-vm-host-0.0.1-r2646.ebuild
new file mode 100644
index 0000000..bdf5f25
--- /dev/null
+++ b/chromeos-base/autotest-tests-vm-host/autotest-tests-vm-host-0.0.1-r2646.ebuild
@@ -0,0 +1,30 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon autotest
+
+DESCRIPTION="kvm host autotests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+autotest"
+
+RDEPEND=""
+DEPEND="${RDEPEND}"
+
+IUSE_TESTS="
+	+tests_vm_CrosVmStart
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests/autotest-tests-0.0.4-r8872.ebuild b/chromeos-base/autotest-tests/autotest-tests-0.0.4-r8872.ebuild
deleted file mode 100644
index 171621c..0000000
--- a/chromeos-base/autotest-tests/autotest-tests-0.0.4-r8872.ebuild
+++ /dev/null
@@ -1,225 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-CROS_WORKON_COMMIT="85fe7868e582ad34edff478d04d959eaa1656f6c"
-CROS_WORKON_TREE="bc717cc5e57b98e8bc662c4e14dca891ba53d5ad"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-
-inherit libchrome cros-workon autotest
-
-DESCRIPTION="Autotest tests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="arc-camera3 biod -chromeless_tests -chromeless_tty +crash_reporting cups dlc_test +encrypted_stateful +network_time +passive_metrics +profile vaapi"
-# Enable autotest by default.
-IUSE="${IUSE} +autotest"
-
-# pygobject is used in the following tests:
-#   platform_CrosDisks*
-RDEPEND="
-	>=chromeos-base/autotest-deps-0.0.3
-	!<=chromeos-base/autotest-factory-0.0.1-r4445
-	dev-python/numpy
-	dev-python/pygobject
-	dev-python/pytest
-	dev-python/python-uinput
-	media-sound/sox
-	sys-apps/ethtool
-	vaapi? ( x11-libs/libva )
-	virtual/autotest-tests
-"
-
-RDEPEND="${RDEPEND}
-	tests_dbench? ( dev-libs/libaio )
-	tests_platform_MetricsUploader? (
-		>=chromeos-base/metrics-0.0.1-r3152
-		dev-python/protobuf-python
-	)
-	tests_platform_SecureEraseFile? ( chromeos-base/secure-erase-file )
-	tests_hardware_MemoryLatency? ( app-benchmarks/lmbench )
-	tests_hardware_MemoryThroughput? ( app-benchmarks/lmbench )
-	tests_hardware_MemoryZRAMThroughput? ( app-benchmarks/microbenchmarks )
-	tests_kernel_Lmbench? ( app-benchmarks/lmbench )
-	arc-camera3? (
-		tests_camera_HAL3? ( chromeos-base/autotest-deps-camera-hal3 )
-		tests_camera_HAL3Perf? ( chromeos-base/autotest-deps-camera-hal3 )
-	)
-	tests_camera_V4L2? ( media-libs/libyuv dev-libs/re2 )
-	tests_xfsFilesystemTestSuite? ( app-benchmarks/xfstests )
-"
-
-DEPEND="${RDEPEND}"
-
-X86_IUSE_TESTS="
-	+tests_xfsFilesystemTestSuite
-	+tests_hardware_UnsafeMemory
-"
-
-CLIENT_IUSE_TESTS="
-	x86? ( ${X86_IUSE_TESTS} )
-	amd64? ( ${X86_IUSE_TESTS} )
-	+tests_profiler_sync
-	+tests_compilebench
-	+tests_crashme
-	+tests_dbench
-	+tests_ddtest
-	+tests_disktest
-	+tests_fsx
-	+tests_hackbench
-	+tests_iperf
-	+tests_bonnie
-	+tests_iozone
-	+tests_netpipe
-	+tests_sleeptest
-	+tests_kernel_sysrq_info
-	+tests_unixbench
-	+tests_autoupdate_Backoff
-	+tests_autoupdate_BadMetadata
-	+tests_autoupdate_CannedOmahaUpdate
-	+tests_autoupdate_DisconnectReconnectNetwork
-	dlc_test? ( +tests_autoupdate_InstallAndUpdateDLC )
-	+tests_autoupdate_PeriodicCheck
-	+tests_autoupdate_UrlSwitch
-	+tests_blktestsSuiteAll
-	+tests_blktestsSuiteLoopOverBlk
-	+tests_blktestsSuiteLoopOverFile
-	+tests_blktestsSuiteRealBlk
-	+tests_camera_V4L2
-	arc-camera3? (
-		+tests_camera_HAL3
-		+tests_camera_HAL3Perf
-	)
-	+tests_dummy_Fail
-	+tests_dummy_Pass
-	+tests_dummy_SynchronousOffload
-	tests_example_UnitTest
-	+tests_firmware_LockedME
-	+tests_firmware_RomSize
-	+tests_firmware_SetFWMP
-	+tests_firmware_VbootCrypto
-	+tests_flaky_test
-	+tests_hardware_Badblocks
-	+tests_hardware_DiskSize
-	+tests_hardware_EC
-	+tests_hardware_EepromWriteProtect
-	+tests_hardware_GobiGPS
-	+tests_hardware_GPIOSwitches
-	+tests_hardware_GPS
-	+tests_hardware_I2CProbe
-	+tests_hardware_Interrupt
-	+tests_hardware_Keyboard
-	+tests_hardware_LightSensor
-	+tests_hardware_MemoryLatency
-	+tests_hardware_MemoryThroughput
-	+tests_hardware_MemoryZRAMThroughput
-	+tests_hardware_Memtester
-	+tests_hardware_MultiReader
-	+tests_hardware_ProbeComponents
-	+tests_hardware_RamFio
-	+tests_hardware_RealtekCardReader
-	+tests_hardware_Resolution
-	+tests_hardware_SAT
-	+tests_hardware_Smartctl
-	+tests_hardware_SsdDetection
-	+tests_hardware_StorageFio
-	+tests_hardware_StorageFioOther
-	+tests_hardware_StorageTrim
-	+tests_hardware_StorageWearoutDetect
-	+tests_hardware_TouchScreenPowerCycles
-	tests_hardware_TouchScreenPresent
-	+tests_hardware_TrimIntegrity
-	+tests_infra_FirmwareAutoupdate
-	+tests_kernel_AsyncDriverProbe
-	+tests_kernel_FirmwareRequest
-	+tests_kernel_CrosECSysfsAccel
-	+tests_kernel_Delay
-	+tests_kernel_fs_Punybench
-	+tests_kernel_Ktime
-	+tests_kernel_Lmbench
-	+tests_kernel_Memory_Ramoop
-	+tests_kernel_SchedBandwith
-	crash_reporting? (
-		+tests_logging_CrashSender
-		+tests_logging_KernelCrash
-		+tests_logging_UdevCrash
-		+tests_logging_UserCrash
-		+tests_platform_AnomalyDetector
-	)
-	+tests_network_EthCaps
-	+tests_network_EthernetStressPlug
-	+tests_network_Ipv6SimpleNegotiation
-	+tests_network_NegotiatedLANSpeed
-	+tests_platform_AccurateTime
-	+tests_platform_AesThroughput
-	!chromeless_tty? (
-		+tests_platform_BootPerf
-	)
-	+tests_platform_CheckErrorsInLog
-	+tests_platform_CleanShutdown
-	+tests_platform_Crossystem
-	+tests_platform_Crouton
-	+tests_platform_DaemonsRespawn
-	+tests_platform_DBusMachineIdRotation
-	encrypted_stateful? ( +tests_platform_EncryptedStateful )
-	+tests_platform_ExternalUSBBootStress
-	+tests_platform_ExternalUSBStress
-	+tests_platform_FileNum
-	+tests_platform_FileSize
-	biod? ( +tests_platform_Fingerprint )
-	+tests_platform_Firewall
-	+tests_platform_FullyChargedPowerStatus
-	+tests_platform_HighResTimers
-	+tests_platform_ImageLoader
-	+tests_platform_ImageLoaderServer
-	+tests_platform_KernelVersion
-	+tests_platform_LibCBench
-	+tests_platform_LogDupSuppression
-	+tests_platform_LogNonKernelKmsg
-	+tests_platform_MemCheck
-	+tests_platform_MemoryMonitor
-	chromeless_tty? ( +tests_platform_MetricsUploader )
-	+tests_platform_NetParms
-	+tests_platform_OpenSSLActual
-	profile? (
-		+tests_platform_Perf
-		+tests_platform_Quipper
-	)
-	cups? ( +tests_platform_PrinterPpds )
-	+tests_platform_Rootdev
-	+tests_platform_SecureEraseFile
-	!chromeless_tty? ( +tests_platform_SessionManagerStateKeyGeneration )
-	+tests_platform_TabletMode
-	+tests_platform_TempFS
-	network_time? (
-		+tests_platform_TLSDate
-		+tests_platform_TLSDateActual
-	)
-	+tests_platform_UdevVars
-	+tests_suite_HWConfig
-	+tests_suite_HWQual
-	+tests_system_ColdBoot
-	+tests_touch_HasInput
-	+tests_touch_UpdateErrors
-	+tests_touch_WakeupSource
-	+tests_usbpd_DisplayPortSink
-	+tests_vpd_ReadWrite
-"
-
-IUSE_TESTS="${IUSE_TESTS}
-	${CLIENT_IUSE_TESTS}
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-AUTOTEST_DEPS_LIST=""
-AUTOTEST_CONFIG_LIST=""
-AUTOTEST_PROFILERS_LIST=""
-
-AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests/autotest-tests-0.0.4-r8903.ebuild b/chromeos-base/autotest-tests/autotest-tests-0.0.4-r8903.ebuild
new file mode 100644
index 0000000..6a5f25c
--- /dev/null
+++ b/chromeos-base/autotest-tests/autotest-tests-0.0.4-r8903.ebuild
@@ -0,0 +1,227 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+CROS_WORKON_COMMIT="776277f05c512cf1ff0033b55e58d4629e277cd5"
+CROS_WORKON_TREE="45230f81767e1e2835752c13a07d5ebd03df8a04"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+
+inherit libchrome cros-workon autotest
+
+DESCRIPTION="Autotest tests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="arc-camera3 biod -chromeless_tests -chromeless_tty +crash_reporting cups dlc_test +encrypted_stateful +network_time +passive_metrics +profile vaapi"
+# Enable autotest by default.
+IUSE="${IUSE} +autotest"
+
+# pygobject is used in the following tests:
+#   platform_CrosDisks*
+RDEPEND="
+	>=chromeos-base/autotest-deps-0.0.3
+	!<=chromeos-base/autotest-factory-0.0.1-r4445
+	dev-python/numpy
+	dev-python/pygobject
+	dev-python/pytest
+	dev-python/python-uinput
+	media-sound/sox
+	sys-apps/ethtool
+	vaapi? ( x11-libs/libva )
+	virtual/autotest-tests
+"
+
+RDEPEND="${RDEPEND}
+	tests_dbench? ( dev-libs/libaio )
+	tests_platform_MetricsUploader? (
+		>=chromeos-base/metrics-0.0.1-r3152
+		dev-python/protobuf-python
+	)
+	tests_platform_SecureEraseFile? ( chromeos-base/secure-erase-file )
+	tests_hardware_MemoryLatency? ( app-benchmarks/lmbench )
+	tests_hardware_MemoryThroughput? ( app-benchmarks/lmbench )
+	tests_hardware_MemoryZRAMThroughput? ( app-benchmarks/microbenchmarks )
+	tests_kernel_Lmbench? ( app-benchmarks/lmbench )
+	arc-camera3? (
+		tests_camera_HAL3? ( chromeos-base/autotest-deps-camera-hal3 )
+		tests_camera_HAL3Perf? ( chromeos-base/autotest-deps-camera-hal3 )
+	)
+	tests_camera_V4L2? ( media-libs/libyuv dev-libs/re2 )
+	tests_xfsFilesystemTestSuite? ( app-benchmarks/xfstests )
+"
+
+DEPEND="${RDEPEND}"
+
+X86_IUSE_TESTS="
+	+tests_xfsFilesystemTestSuite
+	+tests_hardware_UnsafeMemory
+"
+
+CLIENT_IUSE_TESTS="
+	x86? ( ${X86_IUSE_TESTS} )
+	amd64? ( ${X86_IUSE_TESTS} )
+	+tests_profiler_sync
+	+tests_compilebench
+	+tests_crashme
+	+tests_dbench
+	+tests_ddtest
+	+tests_disktest
+	+tests_fsx
+	+tests_hackbench
+	+tests_iperf
+	+tests_bonnie
+	+tests_iozone
+	+tests_netpipe
+	+tests_sleeptest
+	+tests_kernel_sysrq_info
+	+tests_unixbench
+	+tests_autoupdate_Backoff
+	+tests_autoupdate_BadMetadata
+	+tests_autoupdate_CannedOmahaUpdate
+	+tests_autoupdate_DisconnectReconnectNetwork
+	dlc_test? ( +tests_autoupdate_InstallAndUpdateDLC )
+	+tests_autoupdate_PeriodicCheck
+	+tests_autoupdate_UrlSwitch
+	+tests_blktestsSuiteAll
+	+tests_blktestsSuiteLoopOverBlk
+	+tests_blktestsSuiteLoopOverFile
+	+tests_blktestsSuiteRealBlk
+	+tests_camera_V4L2
+	arc-camera3? (
+		+tests_camera_HAL3
+		+tests_camera_HAL3Perf
+	)
+	+tests_dummy_Fail
+	+tests_dummy_Pass
+	+tests_dummy_SynchronousOffload
+	tests_example_UnitTest
+	+tests_firmware_CbfsMcache
+	+tests_firmware_LockedME
+	+tests_firmware_CheckEOPState
+	+tests_firmware_RomSize
+	+tests_firmware_SetFWMP
+	+tests_firmware_VbootCrypto
+	+tests_flaky_test
+	+tests_hardware_Badblocks
+	+tests_hardware_DiskSize
+	+tests_hardware_EC
+	+tests_hardware_EepromWriteProtect
+	+tests_hardware_GobiGPS
+	+tests_hardware_GPIOSwitches
+	+tests_hardware_GPS
+	+tests_hardware_I2CProbe
+	+tests_hardware_Interrupt
+	+tests_hardware_Keyboard
+	+tests_hardware_LightSensor
+	+tests_hardware_MemoryLatency
+	+tests_hardware_MemoryThroughput
+	+tests_hardware_MemoryZRAMThroughput
+	+tests_hardware_Memtester
+	+tests_hardware_MultiReader
+	+tests_hardware_ProbeComponents
+	+tests_hardware_RamFio
+	+tests_hardware_RealtekCardReader
+	+tests_hardware_Resolution
+	+tests_hardware_SAT
+	+tests_hardware_Smartctl
+	+tests_hardware_SsdDetection
+	+tests_hardware_StorageFio
+	+tests_hardware_StorageFioOther
+	+tests_hardware_StorageTrim
+	+tests_hardware_StorageWearoutDetect
+	+tests_hardware_TouchScreenPowerCycles
+	tests_hardware_TouchScreenPresent
+	+tests_hardware_TrimIntegrity
+	+tests_infra_FirmwareAutoupdate
+	+tests_kernel_AsyncDriverProbe
+	+tests_kernel_FirmwareRequest
+	+tests_kernel_CrosECSysfsAccel
+	+tests_kernel_Delay
+	+tests_kernel_fs_Punybench
+	+tests_kernel_Ktime
+	+tests_kernel_Lmbench
+	+tests_kernel_Memory_Ramoop
+	+tests_kernel_SchedBandwith
+	crash_reporting? (
+		+tests_logging_CrashSender
+		+tests_logging_KernelCrash
+		+tests_logging_UdevCrash
+		+tests_logging_UserCrash
+		+tests_platform_AnomalyDetector
+	)
+	+tests_network_EthCaps
+	+tests_network_EthernetStressPlug
+	+tests_network_Ipv6SimpleNegotiation
+	+tests_network_NegotiatedLANSpeed
+	+tests_platform_AccurateTime
+	+tests_platform_AesThroughput
+	!chromeless_tty? (
+		+tests_platform_BootPerf
+	)
+	+tests_platform_CheckErrorsInLog
+	+tests_platform_CleanShutdown
+	+tests_platform_Crossystem
+	+tests_platform_Crouton
+	+tests_platform_DaemonsRespawn
+	+tests_platform_DBusMachineIdRotation
+	encrypted_stateful? ( +tests_platform_EncryptedStateful )
+	+tests_platform_ExternalUSBBootStress
+	+tests_platform_ExternalUSBStress
+	+tests_platform_FileNum
+	+tests_platform_FileSize
+	biod? ( +tests_platform_Fingerprint )
+	+tests_platform_Firewall
+	+tests_platform_FullyChargedPowerStatus
+	+tests_platform_HighResTimers
+	+tests_platform_ImageLoader
+	+tests_platform_ImageLoaderServer
+	+tests_platform_KernelVersion
+	+tests_platform_LibCBench
+	+tests_platform_LogDupSuppression
+	+tests_platform_LogNonKernelKmsg
+	+tests_platform_MemCheck
+	+tests_platform_MemoryMonitor
+	chromeless_tty? ( +tests_platform_MetricsUploader )
+	+tests_platform_NetParms
+	+tests_platform_OpenSSLActual
+	profile? (
+		+tests_platform_Perf
+		+tests_platform_Quipper
+	)
+	cups? ( +tests_platform_PrinterPpds )
+	+tests_platform_Rootdev
+	+tests_platform_SecureEraseFile
+	!chromeless_tty? ( +tests_platform_SessionManagerStateKeyGeneration )
+	+tests_platform_TabletMode
+	+tests_platform_TempFS
+	network_time? (
+		+tests_platform_TLSDate
+		+tests_platform_TLSDateActual
+	)
+	+tests_platform_UdevVars
+	+tests_suite_HWConfig
+	+tests_suite_HWQual
+	+tests_system_ColdBoot
+	+tests_touch_HasInput
+	+tests_touch_UpdateErrors
+	+tests_touch_WakeupSource
+	+tests_usbpd_DisplayPortSink
+	+tests_vpd_ReadWrite
+"
+
+IUSE_TESTS="${IUSE_TESTS}
+	${CLIENT_IUSE_TESTS}
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+AUTOTEST_DEPS_LIST=""
+AUTOTEST_CONFIG_LIST=""
+AUTOTEST_PROFILERS_LIST=""
+
+AUTOTEST_FILE_MASK="*.a *.tar.bz2 *.tbz2 *.tgz *.tar.gz"
diff --git a/chromeos-base/autotest-tests/autotest-tests-9999.ebuild b/chromeos-base/autotest-tests/autotest-tests-9999.ebuild
index 9d24283..ea64c08 100644
--- a/chromeos-base/autotest-tests/autotest-tests-9999.ebuild
+++ b/chromeos-base/autotest-tests/autotest-tests-9999.ebuild
@@ -96,7 +96,9 @@
 	+tests_dummy_Pass
 	+tests_dummy_SynchronousOffload
 	tests_example_UnitTest
+	+tests_firmware_CbfsMcache
 	+tests_firmware_LockedME
+	+tests_firmware_CheckEOPState
 	+tests_firmware_RomSize
 	+tests_firmware_SetFWMP
 	+tests_firmware_VbootCrypto
diff --git a/chromeos-base/autotest/autotest-0.0.2-r13480.ebuild b/chromeos-base/autotest/autotest-0.0.2-r13480.ebuild
deleted file mode 100644
index 74d4f41..0000000
--- a/chromeos-base/autotest/autotest-0.0.2-r13480.ebuild
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("db48601acf9d646e8f4b4c223e67da2d40cf02e6" "360170e747b466e5b884cb5f50a303dfedaba6be")
-CROS_WORKON_TREE=("9c318efb5bd9aef8b16389f9f2573412b9e576cc" "7c21ad286a49cc09ef2bd9f6c03939f016e9c889")
-CROS_WORKON_PROJECT=(
-	"chromiumos/third_party/autotest"
-	"chromiumos/platform/fw-testing-configs"
-)
-CROS_WORKON_LOCALNAME=(
-	"third_party/autotest/files"
-	"third_party/autotest/files/server/cros/faft/fw-testing-configs"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}"
-	"${S}/server/cros/faft/fw-testing-configs"
-)
-
-inherit cros-workon cros-constants
-
-DESCRIPTION="Autotest scripts and tools"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-SRC_URI=""
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	!<chromeos-base/autotest-chrome-0.0.1-r1788
-	!<chromeos-base/autotest-tests-0.0.1-r3291
-	!<chromeos-base/autotest-deps-0.0.2
-	virtual/autotest-libs
-	virtual/autotest-assistant-libs
-"
-
-# We don't want Python on the base image, however, there're several base
-# chromeos dependent ebuilds that depend on this ebuild.
-DEPEND="${RDEPEND}"
-
-# Ensure the configures run by autotest pick up the right config.site
-export CONFIG_SITE=/usr/share/config.site
-
-AUTOTEST_WORK="${WORKDIR}/autotest-work"
-
-src_prepare() {
-	mkdir -p "${AUTOTEST_WORK}/client"
-	mkdir -p "${AUTOTEST_WORK}/server"
-	cp -fpu "${S}"/client/* "${AUTOTEST_WORK}/client" &>/dev/null
-	cp -fpru "${S}"/client/{bin,common_lib,tools} "${AUTOTEST_WORK}/client"
-	cp -fpu "${S}"/server/* "${AUTOTEST_WORK}/server" &>/dev/null
-	cp -fpru "${S}"/server/{bin,control_segments,hosts,lib} "${AUTOTEST_WORK}/server"
-	cp -fpru "${S}"/{tko,utils,site_utils,test_suites,frontend} "${AUTOTEST_WORK}"
-
-	# cros directory is not from autotest upstream but cros project specific.
-	cp -fpru "${S}"/client/cros "${AUTOTEST_WORK}/client"
-
-	cp -fpru "${S}"/server/cros "${AUTOTEST_WORK}/server"
-
-	# Pre-create test directories.
-	local test_dirs="
-		client/tests client/site_tests
-		client/config client/deps client/profilers
-		server/tests server/site_tests packages"
-	local dir
-	for dir in ${test_dirs}; do
-		mkdir "${AUTOTEST_WORK}/${dir}"
-		touch "${AUTOTEST_WORK}/${dir}"/.keep
-	done
-	touch "${AUTOTEST_WORK}/client/profilers/__init__.py"
-
-	sed "/^enable_server_prebuild/d" "${S}/global_config.ini" > \
-		"${AUTOTEST_WORK}/global_config.ini"
-	default
-}
-
-src_install() {
-	insinto ${AUTOTEST_BASE}
-	doins -r "${AUTOTEST_WORK}"/*
-
-	# base __init__.py
-	touch "${D}"${AUTOTEST_BASE}/__init__.py
-
-	# TODO: This should be more selective
-	chmod -R a+x "${D}"${AUTOTEST_BASE}
-
-	# setup stuff needed for read/write operation
-	chmod a+wx "${D}${AUTOTEST_BASE}/packages"
-
-	dodir "${AUTOTEST_BASE}/client/packages"
-	chmod a+wx "${D}${AUTOTEST_BASE}/client/packages"
-
-	dodir "${AUTOTEST_BASE}/server/tmp"
-	chmod a+wx "${D}${AUTOTEST_BASE}/server/tmp"
-
-	# Set up symlinks so that debug info works for autotests.
-	dodir /usr/lib/debug${AUTOTEST_BASE}/
-	dosym client/site_tests /usr/lib/debug${AUTOTEST_BASE}/tests
-
-	# Punt any nested .git dirs.
-	find "${D}" -name .git -exec rm -rf {} +
-}
-
-src_test() {
-	# Run the autotest unit tests.
-	./utils/unittest_suite.py --debug || die "Autotest unit tests failed."
-}
-
-# Packages client.
-pkg_postinst() {
-	local root_autotest_dir="${ROOT}${AUTOTEST_BASE}"
-	flock "${root_autotest_dir}/packages" \
-			-c "PYTHONDONTWRITEBYTECODE=1 ${root_autotest_dir}/utils/packager.py \
-				-r ${root_autotest_dir}/packages --client -a upload"
-}
diff --git a/chromeos-base/autotest/autotest-0.0.2-r14343.ebuild b/chromeos-base/autotest/autotest-0.0.2-r14343.ebuild
new file mode 100644
index 0000000..ff914eb
--- /dev/null
+++ b/chromeos-base/autotest/autotest-0.0.2-r14343.ebuild
@@ -0,0 +1,126 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("0e103e3821ffbc575b67d6d9c426cac3ee4402b3" "22c5b21a61f6477ec943cde45a66526c0f2c11ad")
+CROS_WORKON_TREE=("210df4cb14c4f7c420a697e85e6a7bec211d5bed" "19a599e153588e7beddcc62b22f526879f2985cf")
+CROS_WORKON_PROJECT=(
+	"chromiumos/third_party/autotest"
+	"chromiumos/platform/fw-testing-configs"
+)
+CROS_WORKON_LOCALNAME=(
+	"third_party/autotest/files"
+	"third_party/autotest/files/server/cros/faft/fw-testing-configs"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}"
+	"${S}/server/cros/faft/fw-testing-configs"
+)
+
+inherit cros-workon cros-constants
+
+DESCRIPTION="Autotest scripts and tools"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+SRC_URI=""
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	!<chromeos-base/autotest-chrome-0.0.1-r1788
+	!<chromeos-base/autotest-tests-0.0.1-r3291
+	!<chromeos-base/autotest-deps-0.0.2
+	virtual/autotest-libs
+	virtual/autotest-assistant-libs
+"
+
+# We don't want Python on the base image, however, there're several base
+# chromeos dependent ebuilds that depend on this ebuild.
+DEPEND="${RDEPEND}"
+
+# Ensure the configures run by autotest pick up the right config.site
+export CONFIG_SITE=/usr/share/config.site
+
+AUTOTEST_WORK="${WORKDIR}/autotest-work"
+
+src_prepare() {
+	mkdir -p "${AUTOTEST_WORK}/client"
+	mkdir -p "${AUTOTEST_WORK}/server"
+	cp -fpu "${S}"/client/* "${AUTOTEST_WORK}/client" &>/dev/null
+	cp -fpru "${S}"/client/{bin,common_lib,tools} "${AUTOTEST_WORK}/client"
+	cp -fpu "${S}"/server/* "${AUTOTEST_WORK}/server" &>/dev/null
+	cp -fpru "${S}"/server/{bin,control_segments,hosts,lib} "${AUTOTEST_WORK}/server"
+	cp -fpru "${S}"/{tko,utils,site_utils,test_suites,frontend} "${AUTOTEST_WORK}"
+
+	# cros directory is not from autotest upstream but cros project specific.
+	cp -fpru "${S}"/client/cros "${AUTOTEST_WORK}/client"
+
+	cp -fpru "${S}"/server/cros "${AUTOTEST_WORK}/server"
+
+	# Pre-create test directories.
+	local test_dirs="
+		client/tests client/site_tests
+		client/config client/deps client/profilers
+		server/tests server/site_tests packages"
+	local dir
+	for dir in ${test_dirs}; do
+		mkdir "${AUTOTEST_WORK}/${dir}"
+		touch "${AUTOTEST_WORK}/${dir}"/.keep
+	done
+	touch "${AUTOTEST_WORK}/client/profilers/__init__.py"
+
+	# Symlinks are needed for new setup_modules
+	# delete the top level symlink beforehand (if it exists).
+	find "${AUTOTEST_WORK}" -name "autotest_lib" -delete \
+		|| echo "Top level symlink did not exist!"
+
+	# Create the top level symlink (want autotest_lib --> .)
+	ln -s . "${AUTOTEST_WORK}/autotest_lib" \
+		|| die "Could not create autotest_lib symlink"
+
+	sed "/^enable_server_prebuild/d" "${S}/global_config.ini" > \
+		"${AUTOTEST_WORK}/global_config.ini"
+	default
+}
+
+src_install() {
+	insinto ${AUTOTEST_BASE}
+	doins -r "${AUTOTEST_WORK}"/*
+	python3 ${S}/utils/generate_metadata.py -autotest_path=${S} -output_file="${D}"${AUTOTEST_BASE}/autotest_metadata
+
+	# base __init__.py
+	touch "${D}"${AUTOTEST_BASE}/__init__.py
+
+	# TODO: This should be more selective
+	chmod -R a+x "${D}"${AUTOTEST_BASE}
+
+	# setup stuff needed for read/write operation
+	chmod a+wx "${D}${AUTOTEST_BASE}/packages"
+
+	dodir "${AUTOTEST_BASE}/client/packages"
+	chmod a+wx "${D}${AUTOTEST_BASE}/client/packages"
+
+	dodir "${AUTOTEST_BASE}/server/tmp"
+	chmod a+wx "${D}${AUTOTEST_BASE}/server/tmp"
+
+	# Set up symlinks so that debug info works for autotests.
+	dodir /usr/lib/debug${AUTOTEST_BASE}/
+	dosym client/site_tests /usr/lib/debug${AUTOTEST_BASE}/tests
+
+	# Punt any nested .git dirs.
+	find "${D}" -name .git -exec rm -rf {} +
+}
+
+src_test() {
+	# Run the autotest unit tests.
+	./utils/unittest_suite.py --debug || die "Autotest unit tests failed."
+}
+
+# Packages client.
+pkg_postinst() {
+	local root_autotest_dir="${ROOT}${AUTOTEST_BASE}"
+	flock "${root_autotest_dir}/packages" \
+			-c "PYTHONDONTWRITEBYTECODE=1 ${root_autotest_dir}/utils/packager.py \
+				-r ${root_autotest_dir}/packages --client -a upload"
+}
diff --git a/chromeos-base/autotest/autotest-9999.ebuild b/chromeos-base/autotest/autotest-9999.ebuild
index 98f2f61..af06a7f 100644
--- a/chromeos-base/autotest/autotest-9999.ebuild
+++ b/chromeos-base/autotest/autotest-9999.ebuild
@@ -68,6 +68,15 @@
 	done
 	touch "${AUTOTEST_WORK}/client/profilers/__init__.py"
 
+	# Symlinks are needed for new setup_modules
+	# delete the top level symlink beforehand (if it exists).
+	find "${AUTOTEST_WORK}" -name "autotest_lib" -delete \
+		|| echo "Top level symlink did not exist!"
+
+	# Create the top level symlink (want autotest_lib --> .)
+	ln -s . "${AUTOTEST_WORK}/autotest_lib" \
+		|| die "Could not create autotest_lib symlink"
+
 	sed "/^enable_server_prebuild/d" "${S}/global_config.ini" > \
 		"${AUTOTEST_WORK}/global_config.ini"
 	default
@@ -76,6 +85,7 @@
 src_install() {
 	insinto ${AUTOTEST_BASE}
 	doins -r "${AUTOTEST_WORK}"/*
+	python3 ${S}/utils/generate_metadata.py -autotest_path=${S} -output_file="${D}"${AUTOTEST_BASE}/autotest_metadata
 
 	# base __init__.py
 	touch "${D}"${AUTOTEST_BASE}/__init__.py
diff --git a/chromeos-base/avtest_label_detect/avtest_label_detect-0.0.1-r3041.ebuild b/chromeos-base/avtest_label_detect/avtest_label_detect-0.0.1-r3041.ebuild
deleted file mode 100644
index e3784ce..0000000
--- a/chromeos-base/avtest_label_detect/avtest_label_detect-0.0.1-r3041.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2014 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.
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="e17d85021220d89f89a1db189358a8dcea232e8f"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "34c95610bbb2e5b9e5a08f0ffc45a96171f940ff" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_DESTDIR="${S}"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk avtest_label_detect .gn"
-
-inherit cros-sanitizers cros-workon cros-common.mk
-
-DESCRIPTION="Autotest label detector for audio/video/camera"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/avtest_label_detect"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan v4l2_codec vaapi"
-
-RDEPEND="vaapi? ( x11-libs/libva )"
-DEPEND="${RDEPEND}"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/avtest_label_detect"
-}
-
-src_configure() {
-	export USE_VAAPI=$(usex vaapi)
-	export USE_V4L2_CODEC=$(usex v4l2_codec)
-	sanitizers-setup-env
-	cros-common.mk_src_configure
-}
-
-src_install() {
-	# Install built tools
-	pushd "${OUT}" >/dev/null
-	dobin avtest_label_detect
-	popd >/dev/null
-
-	insinto /etc
-	doins "${S}"/avtest_label_detect.conf
-}
diff --git a/chromeos-base/avtest_label_detect/avtest_label_detect-0.0.1-r3070.ebuild b/chromeos-base/avtest_label_detect/avtest_label_detect-0.0.1-r3070.ebuild
new file mode 100644
index 0000000..17ded4a
--- /dev/null
+++ b/chromeos-base/avtest_label_detect/avtest_label_detect-0.0.1-r3070.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2014 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.
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "396263bc402f0a6170b30ba28fb6694fd2c0ad06" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_DESTDIR="${S}"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk avtest_label_detect .gn"
+
+inherit cros-sanitizers cros-workon cros-common.mk
+
+DESCRIPTION="Autotest label detector for audio/video/camera"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/avtest_label_detect"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="-asan v4l2_codec vaapi"
+
+RDEPEND="vaapi? ( x11-libs/libva )"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/avtest_label_detect"
+}
+
+src_configure() {
+	export USE_VAAPI=$(usex vaapi)
+	export USE_V4L2_CODEC=$(usex v4l2_codec)
+	sanitizers-setup-env
+	cros-common.mk_src_configure
+}
+
+src_install() {
+	# Install built tools
+	pushd "${OUT}" >/dev/null
+	dobin avtest_label_detect
+	popd >/dev/null
+
+	insinto /etc
+	doins "${S}"/avtest_label_detect.conf
+}
diff --git a/chromeos-base/biod/biod-0.0.1-r1936.ebuild b/chromeos-base/biod/biod-0.0.1-r1936.ebuild
deleted file mode 100644
index 86a816f..0000000
--- a/chromeos-base/biod/biod-0.0.1-r1936.ebuild
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="5251066fa4f265c3a7bbb7d1f1bb17233f43eaaf"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "51edb0458f48b8592c9ba25d6b4d45f408e63998" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 metrics .gn"
-
-PLATFORM_SUBDIR="biod"
-
-inherit cros-fuzzer cros-sanitizers cros-workon platform udev user
-
-DESCRIPTION="Biometrics Daemon for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/README.md"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="
-	fp_on_power_button
-	fpmcu_firmware_bloonchipper
-	fpmcu_firmware_dartmonkey
-	fpmcu_firmware_nami
-	fpmcu_firmware_nocturne
-	fuzzer
-	generated_cros_config
-	unibuild
-"
-
-COMMON_DEPEND="
-	chromeos-base/chromeos-config-tools:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	sys-apps/flashmap:=
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-"
-
-# For biod_client_tool. The biod_proxy library will be built on all boards but
-# biod_client_tool will be built only on boards with biod.
-COMMON_DEPEND+="
-	chromeos-base/biod_proxy:=
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	sys-apps/flashrom
-	virtual/chromeos-firmware-fpmcu
-	"
-
-# Release branch firmware.
-# The USE flags below come from USE_EXPAND variables.
-# See third_party/chromiumos-overlay/profiles/base/make.defaults.
-RDEPEND+="
-	fpmcu_firmware_bloonchipper? ( sys-firmware/chromeos-fpmcu-release-bloonchipper )
-	fpmcu_firmware_dartmonkey? ( sys-firmware/chromeos-fpmcu-release-dartmonkey )
-	fpmcu_firmware_nami? ( sys-firmware/chromeos-fpmcu-release-nami )
-	fpmcu_firmware_nocturne? ( sys-firmware/chromeos-fpmcu-release-nocturne )
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/chromeos-ec-headers:=
-	chromeos-base/power_manager-client:=
-	chromeos-base/system_api:=[fuzzer?]
-	dev-libs/openssl:=
-"
-
-pkg_setup() {
-	enewuser biod
-	enewgroup biod
-}
-
-src_install() {
-	dobin "${OUT}"/biod
-
-	dobin "${OUT}"/bio_crypto_init
-	dobin "${OUT}"/bio_wash
-
-	dosbin "${OUT}"/bio_fw_updater
-
-	into /usr/local
-	dobin "${OUT}"/biod_client_tool
-
-	insinto /usr/share/policy
-	local seccomp_src_dir="init/seccomp"
-
-	newins "${seccomp_src_dir}/biod-seccomp-${ARCH}.policy" \
-		biod-seccomp.policy
-
-	newins "${seccomp_src_dir}/bio-crypto-init-seccomp-${ARCH}.policy" \
-		bio-crypto-init-seccomp.policy
-
-	insinto /etc/init
-	doins init/*.conf
-
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.BiometricsDaemon.conf
-
-	udev_dorules udev/99-biod.rules
-
-	# Set up cryptohome daemon mount store in daemon's mount
-	# namespace.
-	local daemon_store="/etc/daemon-store/biod"
-	dodir "${daemon_store}"
-	fperms 0700 "${daemon_store}"
-	fowners biod:biod "${daemon_store}"
-
-	platform_fuzzer_install "${S}/OWNERS" "${OUT}"/biod_storage_fuzzer
-
-	platform_fuzzer_install "${S}/OWNERS" "${OUT}"/biod_crypto_validation_value_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/biod_test_runner"
-}
diff --git a/chromeos-base/biod/biod-0.0.1-r2064.ebuild b/chromeos-base/biod/biod-0.0.1-r2064.ebuild
new file mode 100644
index 0000000..923ee97
--- /dev/null
+++ b/chromeos-base/biod/biod-0.0.1-r2064.ebuild
@@ -0,0 +1,121 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "b1f4ad4ab3cbb07f7d6d2756b7c06a950376ea88" "aa0612733aca2d5ffa65470f07408228b473ebdb" "667180eb5db7eb65a292552b106b32aa5881c9eb" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_SUBDIR="biod"
+
+inherit cros-fuzzer cros-sanitizers cros-workon platform udev user
+
+DESCRIPTION="Biometrics Daemon for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/README.md"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="
+	fp_on_power_button
+	fpmcu_firmware_bloonchipper
+	fpmcu_firmware_dartmonkey
+	fpmcu_firmware_nami
+	fpmcu_firmware_nocturne
+	fuzzer
+	generated_cros_config
+	unibuild
+"
+
+COMMON_DEPEND="
+	chromeos-base/chromeos-config-tools:=
+	chromeos-base/libec:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	sys-apps/flashmap:=
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+"
+
+# For biod_client_tool. The biod_proxy library will be built on all boards but
+# biod_client_tool will be built only on boards with biod.
+COMMON_DEPEND+="
+	chromeos-base/biod_proxy:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	sys-apps/flashrom
+	virtual/chromeos-firmware-fpmcu
+	"
+
+# Release branch firmware.
+# The USE flags below come from USE_EXPAND variables.
+# See third_party/chromiumos-overlay/profiles/base/make.defaults.
+RDEPEND+="
+	fpmcu_firmware_bloonchipper? ( sys-firmware/chromeos-fpmcu-release-bloonchipper )
+	fpmcu_firmware_dartmonkey? ( sys-firmware/chromeos-fpmcu-release-dartmonkey )
+	fpmcu_firmware_nami? ( sys-firmware/chromeos-fpmcu-release-nami )
+	fpmcu_firmware_nocturne? ( sys-firmware/chromeos-fpmcu-release-nocturne )
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/chromeos-ec-headers:=
+	chromeos-base/power_manager-client:=
+	chromeos-base/system_api:=[fuzzer?]
+	dev-libs/openssl:=
+"
+
+pkg_setup() {
+	enewuser biod
+	enewgroup biod
+}
+
+src_install() {
+	dobin "${OUT}"/biod
+
+	dobin "${OUT}"/bio_crypto_init
+	dobin "${OUT}"/bio_wash
+
+	dosbin "${OUT}"/bio_fw_updater
+
+	into /usr/local
+	dobin "${OUT}"/biod_client_tool
+
+	insinto /usr/share/policy
+	local seccomp_src_dir="init/seccomp"
+
+	newins "${seccomp_src_dir}/biod-seccomp-${ARCH}.policy" \
+		biod-seccomp.policy
+
+	newins "${seccomp_src_dir}/bio-crypto-init-seccomp-${ARCH}.policy" \
+		bio-crypto-init-seccomp.policy
+
+	insinto /etc/init
+	doins init/*.conf
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.BiometricsDaemon.conf
+
+	udev_dorules udev/99-biod.rules
+
+	# Set up cryptohome daemon mount store in daemon's mount
+	# namespace.
+	local daemon_store="/etc/daemon-store/biod"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners biod:biod "${daemon_store}"
+
+	platform_fuzzer_install "${S}/OWNERS" "${OUT}"/biod_storage_fuzzer
+
+	platform_fuzzer_install "${S}/OWNERS" "${OUT}"/biod_crypto_validation_value_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/biod_test_runner"
+}
diff --git a/chromeos-base/biod/biod-9999.ebuild b/chromeos-base/biod/biod-9999.ebuild
index 6e6596d..a3c421b 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 metrics .gn"
+CROS_WORKON_SUBTREE="common-mk biod chromeos-config libec metrics .gn"
 
 PLATFORM_SUBDIR="biod"
 
@@ -30,6 +30,7 @@
 
 COMMON_DEPEND="
 	chromeos-base/chromeos-config-tools:=
+	chromeos-base/libec:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	sys-apps/flashmap:=
 	unibuild? (
diff --git a/chromeos-base/biod_proxy/biod_proxy-0.0.1-r120.ebuild b/chromeos-base/biod_proxy/biod_proxy-0.0.1-r120.ebuild
deleted file mode 100644
index d33180e..0000000
--- a/chromeos-base/biod_proxy/biod_proxy-0.0.1-r120.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="67b30051d9937f721cc5b3f5d18e31d159829e2a"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "51edb0458f48b8592c9ba25d6b4d45f408e63998" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 .gn"
-
-PLATFORM_SUBDIR="biod/biod_proxy"
-
-inherit cros-workon platform
-
-DESCRIPTION="DBus Proxy Library for Biometrics Daemon for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/README.md"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND=""
-
-DEPEND="
-	chromeos-base/libbrillo:=
-	chromeos-base/system_api:=
-"
-
-src_install() {
-	dolib.so "${OUT}"/lib/libbiod_proxy.so
-	insinto /usr/include/biod/biod_proxy/
-	doins ./*.h
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/biod_proxy_test_runner"
-}
diff --git a/chromeos-base/biod_proxy/biod_proxy-0.0.1-r189.ebuild b/chromeos-base/biod_proxy/biod_proxy-0.0.1-r189.ebuild
new file mode 100644
index 0000000..4f146d0
--- /dev/null
+++ b/chromeos-base/biod_proxy/biod_proxy-0.0.1-r189.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "b1f4ad4ab3cbb07f7d6d2756b7c06a950376ea88" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 .gn"
+
+PLATFORM_SUBDIR="biod/biod_proxy"
+
+inherit cros-workon platform
+
+DESCRIPTION="DBus Proxy Library for Biometrics Daemon for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/README.md"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND=""
+
+DEPEND="
+	chromeos-base/libbrillo:=
+	chromeos-base/system_api:=
+"
+
+src_install() {
+	dolib.so "${OUT}"/lib/libbiod_proxy.so
+	insinto /usr/include/biod/biod_proxy/
+	doins ./*.h
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/biod_proxy_test_runner"
+}
diff --git a/chromeos-base/bluetooth/bluetooth-0.0.1-r626.ebuild b/chromeos-base/bluetooth/bluetooth-0.0.1-r626.ebuild
deleted file mode 100644
index e5e9de7..0000000
--- a/chromeos-base/bluetooth/bluetooth-0.0.1-r626.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="5251066fa4f265c3a7bbb7d1f1bb17233f43eaaf"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "1110d3ab53ee11f181e1853ce8d9dfe37b41a8ec" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk chromeos-config bluetooth .gn"
-
-PLATFORM_SUBDIR="bluetooth"
-
-inherit cros-workon platform
-
-DESCRIPTION="Bluetooth service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/bluetooth"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+bluetooth_suspend_management fuzzer generated_cros_config seccomp unibuild"
-
-RDEPEND="
-	chromeos-base/chromeos-config-tools:=
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	net-wireless/bluez:=
-"
-
-DEPEND="${RDEPEND}
-	chromeos-base/system_api:=[fuzzer?]"
-
-src_install() {
-	dobin "${OUT}"/btdispatch
-
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.Bluetooth.conf
-
-	insinto /etc/init
-	doins init/upstart/btdispatch.conf
-
-	if use seccomp; then
-		# Install seccomp policy files.
-		insinto /usr/share/policy
-		newins "seccomp_filters/btdispatch-seccomp-${ARCH}.policy" btdispatch-seccomp.policy
-	else
-		# Remove seccomp flags from minijail parameters.
-		sed -i '/^env seccomp_flags=/s:=.*:="":' "${ED}"/etc/init/btdispatch.conf || die
-	fi
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/bluetooth_test"
-}
diff --git a/chromeos-base/bluetooth/bluetooth-9999.ebuild b/chromeos-base/bluetooth/bluetooth-9999.ebuild
deleted file mode 100644
index c4d01c7..0000000
--- a/chromeos-base/bluetooth/bluetooth-9999.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk chromeos-config bluetooth .gn"
-
-PLATFORM_SUBDIR="bluetooth"
-
-inherit cros-workon platform
-
-DESCRIPTION="Bluetooth service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/bluetooth"
-
-LICENSE="BSD-Google"
-KEYWORDS="~*"
-IUSE="+bluetooth_suspend_management fuzzer generated_cros_config seccomp unibuild"
-
-RDEPEND="
-	chromeos-base/chromeos-config-tools:=
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	net-wireless/bluez:=
-"
-
-DEPEND="${RDEPEND}
-	chromeos-base/system_api:=[fuzzer?]"
-
-src_install() {
-	dobin "${OUT}"/btdispatch
-
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.Bluetooth.conf
-
-	insinto /etc/init
-	doins init/upstart/btdispatch.conf
-
-	if use seccomp; then
-		# Install seccomp policy files.
-		insinto /usr/share/policy
-		newins "seccomp_filters/btdispatch-seccomp-${ARCH}.policy" btdispatch-seccomp.policy
-	else
-		# Remove seccomp flags from minijail parameters.
-		sed -i '/^env seccomp_flags=/s:=.*:="":' "${ED}"/etc/init/btdispatch.conf || die
-	fi
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/bluetooth_test"
-}
diff --git a/chromeos-base/bootid-logger/OWNERS b/chromeos-base/bootid-logger/OWNERS
new file mode 100644
index 0000000..e30b726
--- /dev/null
+++ b/chromeos-base/bootid-logger/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/bootid-logger/OWNERS
diff --git a/chromeos-base/bootid-logger/bootid-logger-0.0.1-r27.ebuild b/chromeos-base/bootid-logger/bootid-logger-0.0.1-r27.ebuild
deleted file mode 100644
index 5a51936..0000000
--- a/chromeos-base/bootid-logger/bootid-logger-0.0.1-r27.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-CROS_WORKON_COMMIT="57779f9c27d62896f66cced9cc88443ae9585372"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "bb5eb47ba9b31a6ebc7856fdea2150a5756db444" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk bootid-logger .gn"
-
-PLATFORM_SUBDIR="bootid-logger"
-
-inherit cros-workon platform
-
-DESCRIPTION="Program to record the current boot ID to the log"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/bootid-logger"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="!<=chromeos-base/croslog-0.0.1-r44"
-
-src_install() {
-	platform_install
-
-	insinto /etc/init
-	doins log-bootid-on-boot.conf
-}
-
-platform_pkg_test() {
-	platform test_all
-}
-
diff --git a/chromeos-base/bootid-logger/bootid-logger-0.0.1-r72.ebuild b/chromeos-base/bootid-logger/bootid-logger-0.0.1-r72.ebuild
new file mode 100644
index 0000000..21204bc
--- /dev/null
+++ b/chromeos-base/bootid-logger/bootid-logger-0.0.1-r72.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2020 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.
+
+EAPI=7
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "3f9bd291ca1a611db3eaaff6cce78f4ebaa0c7eb" "fa823f91c6f2d1432f2bfaf49b5785eeb4e6e6fb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="common-mk bootid-logger croslog .gn"
+
+PLATFORM_SUBDIR="bootid-logger"
+
+inherit cros-workon platform
+
+DESCRIPTION="Program to record the current boot ID to the log"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/bootid-logger"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="!<=chromeos-base/croslog-0.0.1-r44"
+
+src_install() {
+	platform_install
+
+	insinto /etc/init
+	doins log-bootid-on-boot.conf
+}
+
+platform_pkg_test() {
+	platform test_all
+}
+
diff --git a/chromeos-base/bootid-logger/bootid-logger-9999.ebuild b/chromeos-base/bootid-logger/bootid-logger-9999.ebuild
index 670fbb3..ef9fe6c 100644
--- a/chromeos-base/bootid-logger/bootid-logger-9999.ebuild
+++ b/chromeos-base/bootid-logger/bootid-logger-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk bootid-logger .gn"
+CROS_WORKON_SUBTREE="common-mk bootid-logger croslog .gn"
 
 PLATFORM_SUBDIR="bootid-logger"
 
diff --git a/chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r1166.ebuild b/chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r1166.ebuild
new file mode 100644
index 0000000..17c3d03
--- /dev/null
+++ b/chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r1166.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk cryptohome .gn"
+
+PLATFORM_SUBDIR="cryptohome/bootlockbox-client"
+
+inherit cros-workon platform
+
+DESCRIPTION="BootLockbox DBus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/"
+
+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.
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+src_install() {
+	# Export neccessary header files:
+	insinto /usr/include/bootlockbox-client/bootlockbox
+	doins ../bootlockbox/boot_lockbox_client.h
+
+	# Export necessary for crytphome header files:
+	insinto /usr/include/cryptohome/bootlockbox
+	doins "${OUT}"/gen/include/cryptohome/bootlockbox/*.h
+
+	dolib.a "${OUT}"/libbootlockbox-proto.a
+	# Install libbootlockbox-client.so:
+	dolib.so "${OUT}"/lib/libbootlockbox-client.so
+
+	# Install DBus client library.
+	platform_install_dbus_client_lib "bootlockbox"
+}
diff --git a/chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r973.ebuild b/chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r973.ebuild
deleted file mode 100644
index 2f80616..0000000
--- a/chromeos-base/bootlockbox-client/bootlockbox-client-0.0.1-r973.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2d4bfe07dbbf6ce72542ee79545ce618699fdb78"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk cryptohome .gn"
-
-PLATFORM_SUBDIR="cryptohome/bootlockbox-client"
-
-inherit cros-workon platform
-
-DESCRIPTION="BootLockbox DBus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/"
-
-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.
-BDEPEND="
-	chromeos-base/chromeos-dbus-bindings
-"
-
-src_install() {
-	# Export neccessary header files:
-	insinto /usr/include/bootlockbox-client/bootlockbox
-	doins ../bootlockbox/boot_lockbox_client.h
-
-	# Export necessary for crytphome header files:
-	insinto /usr/include/cryptohome/bootlockbox
-	doins "${OUT}"/gen/include/cryptohome/bootlockbox/*.h
-
-	dolib.a "${OUT}"/libbootlockbox-proto.a
-	# Install libbootlockbox-client.so:
-	dolib.so "${OUT}"/lib/libbootlockbox-client.so
-
-	# Install DBus client library.
-	platform_install_dbus_client_lib "bootlockbox"
-}
diff --git a/chromeos-base/bootstat/bootstat-0.0.2-r3081.ebuild b/chromeos-base/bootstat/bootstat-0.0.2-r3081.ebuild
deleted file mode 100644
index 3b2a7da..0000000
--- a/chromeos-base/bootstat/bootstat-0.0.2-r3081.ebuild
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8e460b4319aa509e57ba887ac56806030aa85ccd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk bootstat .gn"
-
-PLATFORM_SUBDIR="bootstat"
-
-inherit cros-workon platform
-
-DESCRIPTION="Chrome OS Boot Time Statistics Utilities"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/bootstat/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND="
-	sys-apps/rootdev:=
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-"
-
-src_install() {
-	dosbin "${OUT}"/bootstat
-	dosbin bootstat_archive
-	dosbin bootstat_get_last
-	dobin bootstat_summary
-
-	dolib.so "${OUT}"/lib/libbootstat.so
-
-	insinto /usr/include/metrics
-	doins bootstat.h
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/libbootstat_unittests"
-}
diff --git a/chromeos-base/bootstat/bootstat-0.0.2-r3116.ebuild b/chromeos-base/bootstat/bootstat-0.0.2-r3116.ebuild
new file mode 100644
index 0000000..235c591
--- /dev/null
+++ b/chromeos-base/bootstat/bootstat-0.0.2-r3116.ebuild
@@ -0,0 +1,51 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "b871cc16ed8888c27944a61b1162d608b0921572" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk bootstat .gn"
+
+PLATFORM_SUBDIR="bootstat"
+
+inherit cros-workon platform
+
+DESCRIPTION="Chrome OS Boot Time Statistics Utilities"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/bootstat/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+COMMON_DEPEND="
+	sys-apps/rootdev:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+"
+
+src_install() {
+	dosbin "${OUT}"/bootstat
+	dosbin bootstat_archive
+	dosbin bootstat_get_last
+	dobin bootstat_summary
+
+	dolib.so "${OUT}"/lib/libbootstat.so
+
+	insinto /usr/include/metrics
+	doins bootstat.h
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/libbootstat_unittests"
+}
diff --git a/chromeos-base/buffet/buffet-0.0.1-r2902.ebuild b/chromeos-base/buffet/buffet-0.0.1-r2902.ebuild
deleted file mode 100644
index 9d9a00c..0000000
--- a/chromeos-base/buffet/buffet-0.0.1-r2902.ebuild
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "da25eefd3c0c9f59c7ef606fbc9c4ac8dacf0228" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk buffet .gn"
-
-PLATFORM_SUBDIR="buffet"
-
-inherit cros-workon libchrome platform user
-
-DESCRIPTION="Local and cloud communication services for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/buffet/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND="
-	chromeos-base/libweave:=
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/shill-client:=
-	chromeos-base/system_api:=
-"
-
-pkg_preinst() {
-	# Create user and group for buffet.
-	enewuser "buffet"
-	enewgroup "buffet"
-}
-
-src_install() {
-	insinto "/usr/$(get_libdir)/pkgconfig"
-
-	dobin "${OUT}"/buffet
-	dobin "${OUT}"/buffet_client
-
-	# DBus configuration.
-	insinto /etc/dbus-1/system.d
-	doins etc/dbus-1/org.chromium.Buffet.conf
-
-	# Upstart script.
-	insinto /etc/init
-	doins etc/init/buffet.conf
-	sed -i 's/\(BUFFET_DISABLE_PRIVET=\).*$/\1true/g' \
-		"${ED}"/etc/init/buffet.conf
-}
-
-platform_pkg_test() {
-	local tests=(
-		buffet_testrunner
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/buffet/buffet-0.0.1-r2930.ebuild b/chromeos-base/buffet/buffet-0.0.1-r2930.ebuild
new file mode 100644
index 0000000..11a1b68
--- /dev/null
+++ b/chromeos-base/buffet/buffet-0.0.1-r2930.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "47f6ceba57219100723f2671e0d507bd7605f22f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk buffet .gn"
+
+PLATFORM_SUBDIR="buffet"
+
+inherit cros-workon libchrome platform user
+
+DESCRIPTION="Local and cloud communication services for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/buffet/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+COMMON_DEPEND="
+	chromeos-base/libweave:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=
+"
+
+pkg_preinst() {
+	# Create user and group for buffet.
+	enewuser "buffet"
+	enewgroup "buffet"
+}
+
+src_install() {
+	insinto "/usr/$(get_libdir)/pkgconfig"
+
+	dobin "${OUT}"/buffet
+	dobin "${OUT}"/buffet_client
+
+	# DBus configuration.
+	insinto /etc/dbus-1/system.d
+	doins etc/dbus-1/org.chromium.Buffet.conf
+
+	# Upstart script.
+	insinto /etc/init
+	doins etc/init/buffet.conf
+	sed -i 's/\(BUFFET_DISABLE_PRIVET=\).*$/\1true/g' \
+		"${ED}"/etc/init/buffet.conf
+}
+
+platform_pkg_test() {
+	local tests=(
+		buffet_testrunner
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/cbor/cbor-0.0.1-r101.ebuild b/chromeos-base/cbor/cbor-0.0.1-r101.ebuild
new file mode 100644
index 0000000..2647d59
--- /dev/null
+++ b/chromeos-base/cbor/cbor-0.0.1-r101.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("f34cf3a06f7b17b7829185630d886a5d9d3f0e75" "6d5abcafdfda3c78f64cb242c8d7e8076c5af451")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "f5f3d15e265fd3d3816c4b9533ecd5f3c05cf927")
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform2"
+	"chromiumos/platform/cbor"
+)
+
+CROS_WORKON_LOCALNAME=(
+	"platform2"
+	"platform/cbor"
+)
+
+CROS_WORKON_DESTDIR=(
+	"${S}/platform2"
+	# This needs to be platform2/cbor instead of platform/cbor because we are
+	# using the platform2 build system.
+	"${S}/platform2/cbor"
+)
+
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+
+PLATFORM_SUBDIR="cbor"
+
+inherit cros-workon platform
+
+DESCRIPTION="Concise Binary Object Representation (CBOR) library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/cbor"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+src_install() {
+	dolib.so "${OUT}"/lib/libcbor.so
+	insinto /usr/include/chromeos/cbor/
+	doins ./*.h
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}"/obj/cbor/cbor.pc
+
+	platform_fuzzer_install "${S}/OWNERS" "${OUT}"/reader_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/cbor_unittests"
+}
diff --git a/chromeos-base/cbor/cbor-0.0.1-r75.ebuild b/chromeos-base/cbor/cbor-0.0.1-r75.ebuild
deleted file mode 100644
index 45f917d..0000000
--- a/chromeos-base/cbor/cbor-0.0.1-r75.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("b05e4a6b92b2cfe608b6cd8d5d37168680fc080e" "6ffaf0f4bc9506c53a50a8b90a0f44d08f62395b")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "44021ce5241d712ce75d8be72c55f0e61dde192b")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform2"
-	"chromiumos/platform/cbor"
-)
-
-CROS_WORKON_LOCALNAME=(
-	"platform2"
-	"platform/cbor"
-)
-
-CROS_WORKON_DESTDIR=(
-	"${S}/platform2"
-	# This needs to be platform2/cbor instead of platform/cbor because we are
-	# using the platform2 build system.
-	"${S}/platform2/cbor"
-)
-
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_SUBDIR="cbor"
-
-inherit cros-workon platform
-
-DESCRIPTION="Concise Binary Object Representation (CBOR) library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/cbor"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-src_install() {
-	dolib.so "${OUT}"/lib/libcbor.so
-	insinto /usr/include/chromeos/cbor/
-	doins ./*.h
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}"/obj/cbor/cbor.pc
-
-	platform_fuzzer_install "${S}/OWNERS" "${OUT}"/reader_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/cbor_unittests"
-}
diff --git a/chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r104.ebuild b/chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r104.ebuild
new file mode 100644
index 0000000..d11eb86
--- /dev/null
+++ b/chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r104.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "63862a9eebc1145ee434295657abeeefaf884645" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="common-mk cfm-dfu-notification .gn"
+CROS_WORKON_DESTDIR="${S}/platform2"
+
+PLATFORM_SUBDIR="cfm-dfu-notification"
+
+inherit cros-workon platform
+
+DESCRIPTION="Library to send firmware update notifications to CFM"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+RDEPEND=""
+DEPEND="${RDEPEND}"
+
+src_install() {
+	dolib.so "${OUT}"/lib/libcfm_dfu_notification.so
+
+	"${S}"/platform2_preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}"/cfm-dfu-notification.pc
+
+	insinto "/usr/include/chromeos/cfm-dfu-notification"
+	doins ./*.h
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}"/cfm_dfu_notification_test
+}
diff --git a/chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r77.ebuild b/chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r77.ebuild
deleted file mode 100644
index 0a4bc62..0000000
--- a/chromeos-base/cfm-dfu-notification/cfm-dfu-notification-0.0.1-r77.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "cb0770fe9b162f3437511fca1b23395c2a4758e9" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="common-mk cfm-dfu-notification .gn"
-CROS_WORKON_DESTDIR="${S}/platform2"
-
-PLATFORM_SUBDIR="cfm-dfu-notification"
-
-inherit cros-workon platform
-
-DESCRIPTION="Library to send firmware update notifications to CFM"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-RDEPEND=""
-DEPEND="${RDEPEND}"
-
-src_install() {
-	dolib.so "${OUT}"/lib/libcfm_dfu_notification.so
-
-	"${S}"/platform2_preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}"/cfm-dfu-notification.pc
-
-	insinto "/usr/include/chromeos/cfm-dfu-notification"
-	doins ./*.h
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}"/cfm_dfu_notification_test
-}
diff --git a/chromeos-base/chameleon/chameleon-0.0.2-r395.ebuild b/chromeos-base/chameleon/chameleon-0.0.2-r395.ebuild
deleted file mode 100644
index b3057ff..0000000
--- a/chromeos-base/chameleon/chameleon-0.0.2-r395.ebuild
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=4
-CROS_WORKON_COMMIT="086f28c0991bd6306e9507f4ffcf6f81ba8e3488"
-CROS_WORKON_TREE="bba3df3298c8ad0d5b58d9e01de04bdbedded81b"
-CROS_WORKON_PROJECT="chromiumos/platform/chameleon"
-
-inherit cros-workon
-
-DESCRIPTION="Chameleon bundle for Autotest lab deployment"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/chameleon/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="dev-lang/python"
-DEPEND="${RDEPEND}"
-
-src_install() {
-	local base_dir="/usr/share/chameleon-bundle"
-	insinto "${base_dir}"
-	newins dist/chameleond-*.tar.gz chameleond-${PVR}.tar.gz
-}
diff --git a/chromeos-base/chameleon/chameleon-0.0.2-r445.ebuild b/chromeos-base/chameleon/chameleon-0.0.2-r445.ebuild
new file mode 100644
index 0000000..8920f4b
--- /dev/null
+++ b/chromeos-base/chameleon/chameleon-0.0.2-r445.ebuild
@@ -0,0 +1,26 @@
+# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=4
+CROS_WORKON_COMMIT="881f0e056f21431428db3b2dc9f1c0307c3dc321"
+CROS_WORKON_TREE="5d4fe40c80ce462da9b210a2d334f988a40123f2"
+CROS_WORKON_PROJECT="chromiumos/platform/chameleon"
+
+inherit cros-workon
+
+DESCRIPTION="Chameleon bundle for Autotest lab deployment"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/chameleon/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="dev-lang/python"
+DEPEND="${RDEPEND}"
+
+src_install() {
+	local base_dir="/usr/share/chameleon-bundle"
+	insinto "${base_dir}"
+	newins dist/chameleond-*.tar.gz chameleond-${PVR}.tar.gz
+}
diff --git a/chromeos-base/chaps/chaps-0.0.1-r3258.ebuild b/chromeos-base/chaps/chaps-0.0.1-r3258.ebuild
deleted file mode 100644
index 8213551..0000000
--- a/chromeos-base/chaps/chaps-0.0.1-r3258.ebuild
+++ /dev/null
@@ -1,166 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="3a98d5ca7fdeaf9f087b8ff96dc94c634e0e627f"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "5956de9997bc0735d9aeff6edc4d0098fb571b9b" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "20ed8021024637e492670d20fa5969a2ad75e4b6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-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 chaps metrics trunks .gn"
-
-PLATFORM_SUBDIR="chaps"
-
-inherit cros-workon platform systemd user
-
-DESCRIPTION="PKCS #11 layer over TrouSerS"
-HOMEPAGE="http://www.chromium.org/developers/design-documents/chaps-technical-design"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="systemd test tpm tpm2 fuzzer"
-
-REQUIRED_USE="tpm2? ( !tpm )"
-
-RDEPEND="
-	!tpm2? (
-		app-crypt/trousers:=
-	)
-	tpm2? (
-		chromeos-base/trunks:=
-	)
-	chromeos-base/minijail:=
-	chromeos-base/system_api:=[fuzzer?]
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	!dev-db/leveldb
-	dev-libs/leveldb:=
-	dev-libs/openssl:=
-	dev-libs/protobuf:=
-"
-
-DEPEND="${RDEPEND}
-	test? (
-		app-arch/gzip
-		app-arch/tar
-	)
-	chromeos-base/system_api:=[fuzzer?]
-	fuzzer? ( dev-libs/libprotobuf-mutator )
-	tpm2? ( chromeos-base/trunks:=[test?] )
-	"
-
-pkg_setup() {
-	enewgroup "chronos-access"
-	enewuser "chaps"
-	cros-workon_pkg_setup
-}
-
-src_install() {
-	dosbin "${OUT}"/chapsd
-	dobin "${OUT}"/chaps_client
-	dobin "${OUT}"/p11_replay
-	dolib.so "${OUT}"/lib/libchaps.so
-
-	# Install D-Bus config file.
-	dodir /etc/dbus-1/system.d
-	sed 's,@POLICY_PERMISSIONS@,group="pkcs11",' \
-		"org.chromium.Chaps.conf.in" \
-		> "${D}/etc/dbus-1/system.d/org.chromium.Chaps.conf"
-
-	# Install init scripts.
-	if use systemd; then
-		if use tpm2; then
-			sed 's/tcsd.service/trunksd.service' \
-				init/chapsd.service \
-				> "${T}/chapsd.service"
-			systemd_dounit "${T}/chapsd.service"
-		else
-			systemd_dounit init/chapsd.service
-		fi
-		systemd_enable_service boot-services.target chapsd.service
-		systemd_dotmpfilesd init/chapsd_directories.conf
-	else
-		insinto /etc/init
-		doins init/chapsd.conf
-		if use tpm2; then
-			sed -i 's/started tcsd/started trunksd/' \
-				"${D}/etc/init/chapsd.conf" ||
-				die "Can't replace tcsd with trunksd in chapsd.conf"
-		fi
-	fi
-	exeinto /usr/share/cros/init
-
-	# Install headers for use by clients.
-	insinto /usr/include/chaps
-	doins token_manager_client.h
-	doins token_manager_client_mock.h
-	doins token_manager_interface.h
-	doins isolate.h
-	doins chaps_proxy_mock.h
-	doins chaps_interface.h
-	doins chaps.h
-	doins attributes.h
-
-	# Install live tests
-	if use test; then
-		dosbin "${OUT}"/chapsd_test
-		dosbin "${OUT}"/tpm_utility_test
-	fi
-
-	insinto /usr/include/chaps/pkcs11
-	doins pkcs11/*.h
-
-	# Chaps keeps database inside the user's cryptohome.
-	local daemon_store="/etc/daemon-store/chaps"
-	dodir "${daemon_store}"
-	fperms 0750 "${daemon_store}"
-	fowners chaps:chronos-access "${daemon_store}"
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/chaps_attributes_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/chaps_object_store_fuzzer
-}
-
-platform_pkg_test() {
-	local tests=(
-		chaps_test
-		chaps_service_test
-		dbus_test
-		slot_manager_test
-		session_test
-		object_test
-		object_policy_test
-		object_pool_test
-		object_store_test
-		opencryptoki_importer_test
-		isolate_login_client_test
-	)
-	use tpm2 && tests+=(
-		tpm2_utility_test
-	)
-
-	local gtest_filter_qemu=""
-	gtest_filter_qemu+="-*DeathTest*"
-	gtest_filter_qemu+=":*ImportSample*"
-	gtest_filter_qemu+=":TestSession.RSA*"
-	gtest_filter_qemu+=":TestSession.KeyTypeMismatch"
-	gtest_filter_qemu+=":TestSession.KeyFunctionPermission"
-	gtest_filter_qemu+=":TestSession.BadKeySize"
-	gtest_filter_qemu+=":TestSession.BadSignature.*"
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}" "" "" "${gtest_filter_qemu}"
-	done
-}
-
-pkg_preinst() {
-	local ug
-	for ug in attestation pkcs11 chaps; do
-		enewuser "${ug}"
-		enewgroup "${ug}"
-	done
-}
diff --git a/chromeos-base/chaps/chaps-0.0.1-r3376.ebuild b/chromeos-base/chaps/chaps-0.0.1-r3376.ebuild
new file mode 100644
index 0000000..4465f9b
--- /dev/null
+++ b/chromeos-base/chaps/chaps-0.0.1-r3376.ebuild
@@ -0,0 +1,182 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="d27dfb81bc87df4db16849f5da1b96f1cf5cd10b"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8640df3a4aff4084b644aeefc4d31752a1d97665" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "a06a3f47395fb7b584188c6852764bc773e5497e" "8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+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 chaps metrics trunks tpm_manager .gn"
+
+PLATFORM_SUBDIR="chaps"
+
+inherit cros-workon platform systemd user
+
+DESCRIPTION="PKCS #11 layer over TrouSerS"
+HOMEPAGE="http://www.chromium.org/developers/design-documents/chaps-technical-design"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="systemd test tpm tpm2 fuzzer"
+
+REQUIRED_USE="tpm2? ( !tpm )"
+
+RDEPEND="
+	!tpm2? (
+		app-crypt/trousers:=
+	)
+	tpm2? (
+		chromeos-base/trunks:=
+	)
+	chromeos-base/minijail:=
+	chromeos-base/system_api:=[fuzzer?]
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/tpm_manager:=
+	!dev-db/leveldb
+	dev-libs/leveldb:=
+	dev-libs/openssl:=
+	dev-libs/protobuf:=
+"
+
+# Note: We need dev-libs/nss and dev-libs/nspr for the pkcs11 headers.
+DEPEND="${RDEPEND}
+	test? (
+		app-arch/gzip
+		app-arch/tar
+	)
+	chromeos-base/system_api:=[fuzzer?]
+	fuzzer? ( dev-libs/libprotobuf-mutator )
+	tpm2? ( chromeos-base/trunks:=[test?] )
+	dev-libs/nss:=
+	dev-libs/nspr:=
+	"
+
+pkg_setup() {
+	enewgroup "chronos-access"
+	enewuser "chaps"
+	cros-workon_pkg_setup
+}
+
+src_compile() {
+	platform_src_compile
+
+	# After compile, check the output for link dependency on nss.
+	# We should NOT have any link dependency on nss because nss imports chaps.
+	local out=$(scanelf -qRyn "${OUT}" | grep nss)
+	[[ -n "${out}" ]] && die "No link dependency on nss allowed:\n${out}"
+	# No dependency on nspr as well, same as above.
+	out=$(scanelf -qRyn "${OUT}" | grep nspr)
+	[[ -n "${out}" ]] && die "No link dependency on nspr allowed:\n${out}"
+}
+
+src_install() {
+	dosbin "${OUT}"/chapsd
+	dobin "${OUT}"/chaps_client
+	dobin "${OUT}"/p11_replay
+	dolib.so "${OUT}"/lib/libchaps.so
+
+	# Install D-Bus config file.
+	dodir /etc/dbus-1/system.d
+	sed 's,@POLICY_PERMISSIONS@,group="pkcs11",' \
+		"org.chromium.Chaps.conf.in" \
+		> "${D}/etc/dbus-1/system.d/org.chromium.Chaps.conf"
+
+	# Install init scripts.
+	if use systemd; then
+		if use tpm2; then
+			sed 's/tcsd.service/trunksd.service' \
+				init/chapsd.service \
+				> "${T}/chapsd.service"
+			systemd_dounit "${T}/chapsd.service"
+		else
+			systemd_dounit init/chapsd.service
+		fi
+		systemd_enable_service boot-services.target chapsd.service
+		systemd_dotmpfilesd init/chapsd_directories.conf
+	else
+		insinto /etc/init
+		doins init/chapsd.conf
+		if use tpm2; then
+			sed -i 's/started tcsd/started trunksd/' \
+				"${D}/etc/init/chapsd.conf" ||
+				die "Can't replace tcsd with trunksd in chapsd.conf"
+		fi
+	fi
+	exeinto /usr/share/cros/init
+
+	# Install headers for use by clients.
+	insinto /usr/include/chaps
+	doins token_manager_client.h
+	doins token_manager_client_mock.h
+	doins token_manager_interface.h
+	doins isolate.h
+	doins chaps_proxy_mock.h
+	doins chaps_interface.h
+	doins chaps.h
+	doins attributes.h
+
+	# Install live tests
+	if use test; then
+		dosbin "${OUT}"/chapsd_test
+		dosbin "${OUT}"/tpm_utility_test
+	fi
+
+	insinto /usr/include/chaps/pkcs11
+	doins pkcs11/*.h
+
+	# Chaps keeps database inside the user's cryptohome.
+	local daemon_store="/etc/daemon-store/chaps"
+	dodir "${daemon_store}"
+	fperms 0750 "${daemon_store}"
+	fowners chaps:chronos-access "${daemon_store}"
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/chaps_attributes_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/chaps_object_store_fuzzer
+}
+
+platform_pkg_test() {
+	local tests=(
+		chaps_test
+		chaps_service_test
+		dbus_test
+		slot_manager_test
+		session_test
+		object_test
+		object_policy_test
+		object_pool_test
+		object_store_test
+		opencryptoki_importer_test
+		isolate_login_client_test
+	)
+	use tpm2 && tests+=(
+		tpm2_utility_test
+	)
+
+	local gtest_filter_qemu=""
+	gtest_filter_qemu+="-*DeathTest*"
+	gtest_filter_qemu+=":*ImportSample*"
+	gtest_filter_qemu+=":TestSession.RSA*"
+	gtest_filter_qemu+=":TestSession.KeyTypeMismatch"
+	gtest_filter_qemu+=":TestSession.KeyFunctionPermission"
+	gtest_filter_qemu+=":TestSession.BadKeySize"
+	gtest_filter_qemu+=":TestSession.BadSignature.*"
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}" "" "" "${gtest_filter_qemu}"
+	done
+}
+
+pkg_preinst() {
+	local ug
+	for ug in attestation pkcs11 chaps; do
+		enewuser "${ug}"
+		enewgroup "${ug}"
+	done
+}
diff --git a/chromeos-base/chaps/chaps-9999.ebuild b/chromeos-base/chaps/chaps-9999.ebuild
index 7432455..639461d 100644
--- a/chromeos-base/chaps/chaps-9999.ebuild
+++ b/chromeos-base/chaps/chaps-9999.ebuild
@@ -9,7 +9,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 chaps metrics trunks .gn"
+CROS_WORKON_SUBTREE="common-mk chaps metrics trunks tpm_manager .gn"
 
 PLATFORM_SUBDIR="chaps"
 
@@ -35,12 +35,14 @@
 	chromeos-base/minijail:=
 	chromeos-base/system_api:=[fuzzer?]
 	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/tpm_manager:=
 	!dev-db/leveldb
 	dev-libs/leveldb:=
 	dev-libs/openssl:=
 	dev-libs/protobuf:=
 "
 
+# Note: We need dev-libs/nss and dev-libs/nspr for the pkcs11 headers.
 DEPEND="${RDEPEND}
 	test? (
 		app-arch/gzip
@@ -49,6 +51,8 @@
 	chromeos-base/system_api:=[fuzzer?]
 	fuzzer? ( dev-libs/libprotobuf-mutator )
 	tpm2? ( chromeos-base/trunks:=[test?] )
+	dev-libs/nss:=
+	dev-libs/nspr:=
 	"
 
 pkg_setup() {
@@ -57,6 +61,18 @@
 	cros-workon_pkg_setup
 }
 
+src_compile() {
+	platform_src_compile
+
+	# After compile, check the output for link dependency on nss.
+	# We should NOT have any link dependency on nss because nss imports chaps.
+	local out=$(scanelf -qRyn "${OUT}" | grep nss)
+	[[ -n "${out}" ]] && die "No link dependency on nss allowed:\n${out}"
+	# No dependency on nspr as well, same as above.
+	out=$(scanelf -qRyn "${OUT}" | grep nspr)
+	[[ -n "${out}" ]] && die "No link dependency on nspr allowed:\n${out}"
+}
+
 src_install() {
 	dosbin "${OUT}"/chapsd
 	dobin "${OUT}"/chaps_client
diff --git a/chromeos-base/chrome-binary-tests/chrome-binary-tests-0.0.1-r16.ebuild b/chromeos-base/chrome-binary-tests/chrome-binary-tests-0.0.1-r18.ebuild
similarity index 100%
rename from chromeos-base/chrome-binary-tests/chrome-binary-tests-0.0.1-r16.ebuild
rename to chromeos-base/chrome-binary-tests/chrome-binary-tests-0.0.1-r18.ebuild
diff --git a/chromeos-base/chrome-binary-tests/chrome-binary-tests-0.0.1.ebuild b/chromeos-base/chrome-binary-tests/chrome-binary-tests-0.0.1.ebuild
index 53507fd..8694f88 100644
--- a/chromeos-base/chrome-binary-tests/chrome-binary-tests-0.0.1.ebuild
+++ b/chromeos-base/chrome-binary-tests/chrome-binary-tests-0.0.1.ebuild
@@ -11,7 +11,7 @@
 
 SLOT="0"
 KEYWORDS="*"
-IUSE="vaapi"
+IUSE="vaapi v4l2_codec"
 S="${WORKDIR}"
 
 DEPEND="chromeos-base/chromeos-chrome"
@@ -31,17 +31,18 @@
 	doexe "${BINARY_DIR}/dawn_end2end_tests"
 	doexe "${BINARY_DIR}/dawn_unittests"
 	doexe "${BINARY_DIR}/jpeg_decode_accelerator_unittest"
-	doexe "${BINARY_DIR}/jpeg_encode_accelerator_unittest"
 	doexe "${BINARY_DIR}/ozone_gl_unittests"
 	doexe "${BINARY_DIR}/sandbox_linux_unittests"
-	doexe "${BINARY_DIR}/video_decode_accelerator_perf_tests"
-	doexe "${BINARY_DIR}/video_decode_accelerator_tests"
-	doexe "${BINARY_DIR}/video_encode_accelerator_perf_tests"
-	doexe "${BINARY_DIR}/video_encode_accelerator_tests"
-	# TODO(crbug.com/1045825): Remove video_encode_accelerator_unittest.
-	doexe "${BINARY_DIR}/video_encode_accelerator_unittest"
 	doexe "${BINARY_DIR}/wayland_client_perftests"
 
+	if use vaapi || use v4l2_codec; then
+		doexe "${BINARY_DIR}/jpeg_encode_accelerator_unittest"
+		doexe "${BINARY_DIR}/video_decode_accelerator_perf_tests"
+		doexe "${BINARY_DIR}/video_decode_accelerator_tests"
+		doexe "${BINARY_DIR}/video_encode_accelerator_perf_tests"
+		doexe "${BINARY_DIR}/video_encode_accelerator_tests"
+	fi
+
 	if use vaapi; then
 		doexe "${BINARY_DIR}/decode_test"
 		doexe "${BINARY_DIR}/vaapi_unittest"
diff --git a/chromeos-base/chrome-icu/OWNERS b/chromeos-base/chrome-icu/OWNERS
new file mode 100644
index 0000000..4f139fe
--- /dev/null
+++ b/chromeos-base/chrome-icu/OWNERS
@@ -0,0 +1 @@
+chromeos-ci-prod@chromeos-bot.iam.gserviceaccount.com
diff --git a/chromeos-base/chrome-icu/README.md b/chromeos-base/chrome-icu/README.md
new file mode 100644
index 0000000..ac42a90
--- /dev/null
+++ b/chromeos-base/chrome-icu/README.md
@@ -0,0 +1,107 @@
+# The Chrome ICU package
+
+This ebuild builds and installs the [icu package in chrome][chrome-icu-location]
+so that it can be used in Chrome OS. Compared with the vanilla ICU library, it
+is customised for Chrome so there are some missing functionality and encoding
+(e.g. ISO-2022-CN and ISO-2022-KR). But it should be powerful enough for most
+usages. (It supports the i18n of Chrome!)
+
+[TOC]
+
+## Why chrome-icu?
+
+The biggest reason is to save resources. Chrome-icu saves,
+
+1.  10MB of rootfs disk space due to sharing the icu data.
+2.  Up to 10MB of RAM because of sharing the icu data.
+3.  Maintaining effort in Chrome OS (icu needs regular major uprev every 6
+    months and small bug fixes from time to time).
+
+## How to use it?
+
+> Please give us a heads-up if you want to use it. This is because chrome-icu
+> is currently a static library, so linking it will non-trivially increase the
+> disk space. And if the users of chrome-icu become more and more, we will
+> spend the effort to make it into a shared library. (This will not affect your
+> usage, please see [the tracker][make-into-shared-library].)
+
+1.  Add `chrome-icu` as a dependency in your ebuild.
+2.  Link `icui18n-chrome` and `icuuc-chrome` libraries.
+3.  Add header paths `${sysroot}/usr/include/icu-chrome/common` and
+    `${sysroot}/usr/include/icu-chrome/i18n`.
+4.  If some headers are missing, you can add them to [here][chrome-icu-headers].
+5.  At run time, load the icu data file from `/opt/google/chrome/icudtl.dat`.
+    You can follow the example [here][ml-service-load-icu-data].
+
+## TODO
+
+1.  We should consider
+    [setting up a CQ tryjob for chrome-icu][chrome-side-tryjob-tracker],
+    although this has become not very urgent after we
+    [only configure the icu package][cl-that-only-configure-icu] in compiling
+    chrome-icu.
+2.  We should consider having a `build-chrome.eclass` and avoid the duplication
+    between `chromeos-chrome.ebuild` and `chrome-icu.ebuild`. (We used to
+    duplicate the code because chrome-icu used to be very experimental so we do
+    not want to greatly change the `chromeos-chrome.ebuild` for it. With
+    chrome-icu method becoming stable, we can consider it now.)
+
+## Other questions
+
+### Emerging chrome-icu in cros chroot takes ages. What happened and how to resolve it?
+
+This normally means that there is no prebuilt binary available for chrome-icu
+so it has to build chrome-icu from source and this needs the whole chrome repo.
+Because chrome-icu and chrome share a similar build mechanism, this usually
+implies that there is no prebuilt binary available for chrome too. So if you
+just did a repo sync and found it has to build chrome-icu from source in running
+`build_packages`, it means you will also need to build chrome from source too
+--- it is only because chrome depends on chrome-icu so the latter will be built
+first.
+
+How to resolve it: There are a few methods that you could try,
+
+1.  Run `emerge-$BOARD -G chrome-icu` and see if this succeeds and
+    satisfies your needs. (This command enforce emerging chrome-icu from
+    prebuilt binary.)
+2.  If this is because the repo synced is very fresh, consider syncing to an
+    older version of Chrome OS (e.g. [sync to green][sync-to-green]).
+3.  If this is caused by changing configurations (e.g. USE flag changes), you
+    could let chrome-icu built from your local chrome checkout. First, you
+    need to enter your chroot with the `--chrome-root` option pointing to your
+    local chrome checkout. Then after entering the chroot, the chrome checkout
+    is located at "~/chrome_root". Second, now you can run
+    `CHROME_ORIGIN=LOCAL_SOURCE emerge-$BOARD chrome-icu` to build it form
+    local chrome checkout.
+
+### Why is chrome-icu a static library, not a shared library?
+
+This is because: First, making it into a static library is easier and
+requires less modifications in chrome; Second, currently only two packages
+are using it, and total size increase of linking it statically is smaller
+than that of making it into a shared library.
+
+### After we make chrome-icu into a shared library, can chrome use it too to save more disk space?
+
+The answer is no. This is because in chrome, icu is compiled with
+"control-flow integrity (CFI)" turned on. And CFI currently does not work
+well with shared libraries.
+
+### I want to use the chrome-icu mechanism to share other code in Chrome with Chrome OS. How should I do this?
+
+Theoretically, the method used by chrome-icu should be able to share any
+code in chrome to Chrome OS. But considering that 1) the chrome-icu method
+is still very new and 2) it requires changes in both chrome and the infra
+configurations, we recommend you to first chat with the Chrome OS build team
+to discuss about your problem before moving forward. And there are other
+(e.g. more lightweight) [sharing methods](http://go/chromeos-code-sharing) which
+may be more suitable.
+
+
+[chrome-side-tryjob-tracker]: https://crbug.com/1133101
+[cl-that-only-configure-icu]: https://crrev.com/c/2524460
+[sync-to-green]: https://chromium.googlesource.com/chromiumos/docs/+/HEAD/developer_guide.md#sync-to-green
+[make-into-shared-library]: https://crbug.com/1152936
+[chrome-icu-headers]: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/HEAD/chromeos-base/chrome-icu/chrome-icu-9999.ebuild#629
+[ml-service-load-icu-data]: https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ml/machine_learning_service_impl.cc#75
+[chrome-icu-location]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/icu/
diff --git a/chromeos-base/chrome-icu/chrome-icu-89.0.4387.0_rc-r1.ebuild b/chromeos-base/chrome-icu/chrome-icu-89.0.4387.0_rc-r1.ebuild
deleted file mode 100644
index 6a53f89..0000000
--- a/chromeos-base/chrome-icu/chrome-icu-89.0.4387.0_rc-r1.ebuild
+++ /dev/null
@@ -1,688 +0,0 @@
-# Copyright 2020 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.
-
-# This ebuild is based on "chromeos-chrome.ebuild" to compile the chrome/icu
-# package into shared libraries and install them. The essential difference is to
-# do "chrome_make icu" rather than "chrome_make chrome". Besides, some other
-# non-trivial modifications are:
-#   - "chromium-source.eclass" is used to download chrome source code. Because
-#     "chromeos-chrome.ebuild" and "chromium-source.eclass" download the chrome
-#     source into the same location, the variables of "chromeos-chrome.ebuild"
-#     are kept.
-#   - "Control-flow integrity" (|is_cfi=false| and |use_cfi_cast=false|) is
-#     turned off otherwise the generated .so will crash (Illegal instruction).
-#   - Unrelated resource downloads (like for telemetry) are removed.
-#   - Unrelated configuration (like ozone platforms) are removed.
-#   - Unrelated features (like nacl) are disabled.
-#   - Header folders and libraries are postfixed with "${CHROME_ICU_POSTFIX}".
-#
-# Significant changes from "chromeos-chrome.ebuild" are highlighted by "[Mod]".
-#
-# The GN output folder is named as "out_icu_${BOARD}".
-
-EAPI=5
-
-# TODO(crbug.com/984182): We force Python 2 because depot_tools doesn't support Python 3.
-PYTHON_COMPAT=( python2_7 )
-inherit binutils-funcs chromium-source cros-constants cros-sanitizers flag-o-matic multilib toolchain-funcs python-any-r1
-
-DESCRIPTION="The ICU library copied from chrome/third_party"
-HOMEPAGE="https://cs.chromium.org/chromium/src/third_party/icu/"
-
-LICENSE="icu-58"
-
-SLOT="0/${PVR}"
-KEYWORDS="*"
-
-# [Mod] Most of non-related IUSE flags are removed.
-IUSE="
-	asan
-	chrome_internal
-	component_build
-	cups
-	+libcxx
-	msan
-	neon
-	+runhooks
-	thinlto
-	ubsan
-	verbose
-	xkbcommon
-	"
-
-# [Mod] clear REQUIRED_USE.
-REQUIRED_USE=""
-
-# [Mod] Ozone platform variables are removed.
-
-# The gclient hooks that run in src_prepare hit the network.
-# https://crbug.com/731905
-RESTRICT="network-sandbox mirror"
-
-# Portage version without optional portage suffix.
-CHROME_VERSION="${PV/_*/}"
-
-# chrome destination directory
-CHROME_DIR=/opt/google/chrome
-
-# For compilation
-BUILDTYPE="${BUILDTYPE:-Release}"
-BOARD="${BOARD:-${SYSROOT##/build/}}"
-# [Mod] GN output dir is named as "out_icu_${BOARD}".
-BUILD_OUT="${BUILD_OUT:-out_icu_${BOARD}}"
-
-# [Mod] Change from "c" to avoid potential conflict with chromeos-chrome.ebuild.
-BUILD_OUT_SYM="c_icu"
-
-# [Mod] To differentiate with the standard ICU, we postfix the include headers
-# folder and library names by "chrome". (see crbug.com/1059133 and b/151439301)
-CHROME_ICU_POSTFIX="-chrome"
-
-# [Mod] Order file and AFDO file variables/functions declared here are removed.
-
-# [Mod] chrome/icu depends on nothing. Blocking the canonical icu package can
-# let us notice the potential repetitions.
-# [Mod] Old Chrome ebuilds installed icudtl.dat.
-# Add `xkbcommon` related libraries to make xkbcommon handling identical with
-# chromeos-chrome. This will make it more likely to catch potential xkbcommon
-# related chromeos-icu.ebuild failures by testing chromeos-chrome.ebuild.
-RDEPEND="
-	!dev-libs/icu
-	!<chromeos-base/chromeos-chrome-83.0.4098.4
-	xkbcommon? (
-		x11-libs/libxkbcommon
-		x11-misc/xkeyboard-config
-	)
-"
-DEPEND="
-	net-print/cups
-	x11-libs/libdrm
-"
-
-# [Mod] NaCl utilities are removed.
-
-usetf()  { usex $1 true false ; }
-
-set_build_args() {
-	# [Mod] 1. Add a new arg "icu_disable_thin_archive=true".
-	#       2. Set the values according to IUSE default value but disable
-	#          unnecessary feature
-	#       3. Set "is_cfi=false".
-	BUILD_ARGS=(
-		"is_chromeos_device=true"
-		"icu_disable_thin_archive=true"
-
-		# is_official_build sometimes implies extra optimizations (e.g. it will allow
-		# ThinLTO to optimize more aggressively, if ThinLTO is enabled). Please note
-		# that, despite the name, it should be usable by external users.
-		#
-		# Sanitizers don't like official builds.
-		"is_official_build=$(use_sanitizers false true)"
-
-		"is_debug=false"
-		"${EXTRA_GN_ARGS}"
-		"use_ozone=true"
-		"use_evdev_gestures=false"
-		# Use the Chrome OS toolchain and not the one bundled with Chromium.
-		"linux_use_bundled_binutils=false"
-		"use_debug_fission=false"
-		"enable_remoting=false"
-		"enable_nacl=false"
-		"enable_nacl=false"
-		"icu_use_data_file=true"
-		# Add this to make xkbcommon handling identical with chromeos-chrome.
-		# This will make it more likely to catch potential xkbcommon related
-		# chromeos-icu.ebuild failures by testing chromeos-chrome.ebuild
-		"use_xkbcommon=$(usetf xkbcommon)"
-		# use_system_minigbm is set below.
-		# HarfBuzz and FreeType need to be built together in a specific way
-		# to get FreeType autohinting to work properly. Chromium bundles
-		# FreeType and HarfBuzz to meet that need.
-		# See crbug.com/694137 .
-		"use_system_harfbuzz=false"
-		"use_system_freetype=false"
-		"use_system_libsync=false"
-		"use_cups=$(usetf cups)"
-		"use_bundled_fontconfig=false"
-
-		# Clang features.
-		"is_asan=$(usetf asan)"
-		"is_msan=$(usetf msan)"
-		"is_ubsan=$(usetf ubsan)"
-		"is_clang=true"
-		"cros_host_is_clang=true"
-		"clang_use_chrome_plugins=false"
-		"use_thin_lto=$(usetf thinlto)"
-		"clang_use_chrome_plugins=false"
-		"is_cfi=false"
-		"use_cfi_cast=false"
-		"use_cras=false"
-	)
-
-	# BUILD_STRING_ARGS needs appropriate quoting. So, we keep them separate and
-	# add them to BUILD_ARGS at the end.
-	BUILD_STRING_ARGS=(
-		"target_sysroot=${SYSROOT}"
-		"system_libdir=$(get_libdir)"
-		"pkg_config=$(tc-getPKG_CONFIG)"
-		"target_os=chromeos"
-		"host_pkg_config=$(tc-getBUILD_PKG_CONFIG)"
-	)
-
-	# [Mod] Ozone platform configrations are removed.
-
-	# Set proper build args for the arch
-	case "${ARCH}" in
-	x86)
-		BUILD_STRING_ARGS+=( "target_cpu=x86" )
-		;;
-	arm)
-		BUILD_ARGS+=(
-			"arm_use_neon=$(usetf neon)"
-			# To workaround the 4GB debug limit. crbug.com/792999.
-			"blink_symbol_level=1"
-		)
-		BUILD_STRING_ARGS+=(
-			"target_cpu=arm"
-			"arm_float_abi=hard"
-		)
-		local arm_arch=$(get-flag march)
-		if [[ -n "${arm_arch}" ]]; then
-			BUILD_STRING_ARGS+=( "arm_arch=${arm_arch}" )
-		fi
-		;;
-	arm64)
-		BUILD_STRING_ARGS+=(
-			"target_cpu=arm64"
-		)
-		local arm_arch=$(get-flag march)
-		if [[ -n "${arm_arch}" ]]; then
-			BUILD_STRING_ARGS+=( "arm_arch=${arm_arch}" )
-		fi
-		;;
-	amd64)
-		BUILD_STRING_ARGS+=( "target_cpu=x64" )
-		;;
-	mips)
-		local mips_arch target_arch
-
-		mips_arch="$($(tc-getCPP) ${CFLAGS} ${CPPFLAGS} -E -P - <<<_MIPS_ARCH)"
-		# Strip away any enclosing quotes.
-		mips_arch="${mips_arch//\"}"
-		# TODO(benchan): Use tc-endian from toolchain-func to determine endianess
-		# when Chrome later cares about big-endian.
-		case "${mips_arch}" in
-		mips64*)
-			target_arch=mips64el
-			;;
-		*)
-			target_arch=mipsel
-			;;
-		esac
-
-		BUILD_STRING_ARGS+=(
-			"target_cpu=${target_arch}"
-			"mips_arch_variant=${mips_arch}"
-		)
-		;;
-	*)
-		die "Unsupported architecture: ${ARCH}"
-		;;
-	esac
-
-	# [Mod] chrome_media configurations are removed.
-	if use chrome_internal; then
-		# Adding chrome branding specific variables.
-		BUILD_ARGS+=( "is_chrome_branded=true" )
-		# This test can only be build from internal sources.
-		BUILD_ARGS+=( "internal_gles2_conform_tests=true" )
-		export CHROMIUM_BUILD='_google_Chrome'
-		export OFFICIAL_BUILD='1'
-		export CHROME_BUILD_TYPE='_official'
-	fi
-
-	BUILD_ARGS+=(
-		"treat_warnings_as_errors=false"
-	)
-
-	if use component_build; then
-		BUILD_ARGS+=( "is_component_build=true" )
-	fi
-
-	# [Mod] goma is disabled.
-	BUILD_ARGS+=( "use_goma=false" )
-
-	# [Mod] chrome_debug and debug_fission configurations are removed.
-}
-
-# [Mod] Main content of unpack_chrome() is replaced by the unpack function in
-# chromium-source.eclass.
-unpack_chrome() {
-	# Add depot_tools to PATH, local chroot builds fail otherwise.
-	export PATH=${PATH}:${DEPOT_TOOLS}
-
-	chromium-source_src_unpack
-}
-
-decide_chrome_origin() {
-	if [[ "${PV}" == "9999" ]]; then
-		# LOCAL_SOURCE is the default for cros_workon
-		# Warn the user if CHROME_ORIGIN is already set
-		if [[ -n "${CHROME_ORIGIN}" && "${CHROME_ORIGIN}" != LOCAL_SOURCE ]]; then
-			ewarn "CHROME_ORIGIN is already set to ${CHROME_ORIGIN}."
-			ewarn "This will prevent you from building from your local checkout."
-			ewarn "Please run 'unset CHROME_ORIGIN' to reset Chrome"
-			ewarn "to the default source location."
-		fi
-		: "${CHROME_ORIGIN:=LOCAL_SOURCE}"
-	else
-		# By default, pull from server
-		: "${CHROME_ORIGIN:=SERVER_SOURCE}"
-	fi
-}
-
-sandboxless_ensure_directory() {
-	local dir
-	for dir in "$@"; do
-		if [[ ! -d "${dir}" ]] ; then
-			# We need root access to create these directories, so we need to
-			# use sudo. This implicitly disables the sandbox.
-			sudo mkdir -p "${dir}" || die
-			sudo chown "${PORTAGE_USERNAME}:portage" "${dir}" || die
-			sudo chmod 0755 "${dir}" || die
-		fi
-	done
-}
-
-src_unpack() {
-	tc-export CC CXX
-	local WHOAMI=$(whoami)
-
-	CHROME_SRC="chrome-src"
-	if use chrome_internal; then
-		CHROME_SRC+="-internal"
-	fi
-
-	# CHROME_CACHE_DIR is used for storing output artifacts, and is always a
-	# regular directory inside the chroot (i.e. it's never mounted in, so it's
-	# always safe to use cp -al for these artifacts).
-	: "${CHROME_CACHE_DIR:="/var/cache/chromeos-chrome/${CHROME_SRC}"}"
-	addwrite "${CHROME_CACHE_DIR}"
-
-	# CHROME_DISTDIR is used for storing the source code, if any source code
-	# needs to be unpacked at build time (e.g. in the SERVER_SOURCE scenario.)
-	# It will be mounted into the chroot, so it is never safe to use cp -al
-	# for these files.
-	: "${CHROME_DISTDIR:="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/${CHROME_SRC}"}"
-	addwrite "${CHROME_DISTDIR}"
-
-	# Create storage directories.
-	sandboxless_ensure_directory "${CHROME_DISTDIR}" "${CHROME_CACHE_DIR}"
-
-	# [Mod] Calls of cros-credentials_setup is removed.
-
-	decide_chrome_origin
-
-	# [Mod] LOCAL_BINARY is not supported because chromium-source.eclass does not
-	# support it.
-	case "${CHROME_ORIGIN}" in
-	LOCAL_SOURCE|SERVER_SOURCE)
-		elog "CHROME_ORIGIN VALUE is ${CHROME_ORIGIN}"
-		;;
-	*)
-		die "CHROME_ORIGIN not one of LOCAL_SOURCE, SERVER_SOURCE"
-		;;
-	esac
-
-	# Prepare and set CHROME_ROOT based on CHROME_ORIGIN.
-	# CHROME_ROOT is the location where the source code is used for compilation.
-	# If we're in SERVER_SOURCE mode, CHROME_ROOT is CHROME_DISTDIR. In LOCAL_SOURCE
-	# mode, this directory may be set manually to any directory. It may be mounted
-	# into the chroot, so it is not safe to use cp -al for these files.
-	# These are set here because $(whoami) returns the proper user here,
-	# but 'root' at the root level of the file
-	case "${CHROME_ORIGIN}" in
-	(SERVER_SOURCE)
-		elog "Using CHROME_VERSION = ${CHROME_VERSION}"
-		if [[ ${WHOAMI} == "chrome-bot" ]]; then
-			# TODO: Should add a sanity check that the version checked out is
-			# what we actually want.  Not sure how to do that though.
-			elog "Skipping syncing as cbuildbot ran SyncChrome for us."
-		else
-			unpack_chrome
-		fi
-
-		elog "set the chrome source root to ${CHROME_DISTDIR}"
-		elog "From this point onwards there is no difference between \
-			SERVER_SOURCE and LOCAL_SOURCE, since the fetch is done"
-		CHROME_ROOT=${CHROME_DISTDIR}
-		;;
-	(LOCAL_SOURCE)
-		: "${CHROME_ROOT:=/home/${WHOAMI}/chrome_root}"
-		if [[ ! -d "${CHROME_ROOT}/src" ]]; then
-			die "${CHROME_ROOT} does not contain a valid chromium checkout!"
-		fi
-		addwrite "${CHROME_ROOT}"
-		;;
-	esac
-
-	# [Mod] Always call this because the case CHROME_ORIGIN=LOCAL_BINARY is
-	# excluded.
-	set_build_args
-
-	ln -sf "${CHROME_ROOT}" "${WORKDIR}/${P}"
-
-	# [Mod] Use flags internal_gles_conform, afdo_use, afdo_verify,
-	# orderfile_verify and orderfile_use are all disabled.
-	BUILD_STRING_ARGS+=( "chrome_orderfile_path=" )
-}
-
-# [Mod] add_api_keys() is removed because we do not need to access Google
-# services.
-
-# [Mod] src_prepare() is simplied because 1) we do not need to access Google
-# services; 2) we exclude the case CHROME_ORIGIN=LOCAL_BINARY and 3) we do
-# not need patches.
-src_prepare() {
-	cd "${CHROME_ROOT}/src" || die "Cannot chdir to ${CHROME_ROOT}"
-	mkdir -p "${CHROME_CACHE_DIR}/src/${BUILD_OUT}"
-	if [[ -n "${BUILD_OUT_SYM}" ]]; then
-		rm -rf "${BUILD_OUT_SYM}" || die "Could not remove symlink"
-		ln -sfT "${CHROME_CACHE_DIR}/src/${BUILD_OUT}" "${BUILD_OUT_SYM}" ||
-			die "Could not create symlink for output directory"
-	fi
-}
-
-# [Mod] setup_test_lists() is removed.
-
-# Handle all CFLAGS/CXXFLAGS/etc... munging here.
-setup_compile_flags() {
-	# Chrome controls its own optimization settings, so this would be a nop
-	# if we were to run it. Leave it here anyway as a grep-friendly marker.
-	# cros_optimize_package_for_speed
-
-	# The chrome makefiles specify -O and -g flags already, so remove the
-	# portage flags.
-	filter-flags -g -O*
-
-	# Remove unsupported arm64 linker flag on arm32 builds.
-	# https://crbug.com/889079
-	use arm && filter-flags "-Wl,--fix-cortex-a53-843419"
-
-	# There are some flags we want to only use in the ebuild.
-	# The rest will be exported to the simple chrome workflow.
-	EBUILD_CFLAGS=()
-	EBUILD_CXXFLAGS=()
-	EBUILD_LDFLAGS=()
-
-	# LLVM needs this when parsing profiles.
-	# See README on https://github.com/google/autofdo
-	# For ARM, we do not need this flag because we don't get profiles
-	# from ARM machines. And it triggers an llvm assertion when thinlto
-	# and debug fission is used together.
-	# See https://bugs.llvm.org/show_bug.cgi?id=37255
-	use arm || append-flags -fdebug-info-for-profiling
-
-	if use thinlto; then
-		# We need to change the default value of import-instr-limit in
-		# LLVM to limit the text size increase. The default value is
-		# 100, and we change it to 30 to reduce the text size increase
-		# from 25% to 10%. The performance number of page_cycler is the
-		# same on two of the thinLTO configurations, we got 1% slowdown
-		# on speedometer when changing import-instr-limit from 100 to 30.
-		# We need to further reduce it to 20 for arm to limit the size
-		# increase to 10%.
-		local thinlto_ldflag="-Wl,-plugin-opt,-import-instr-limit=30"
-		if use arm; then
-			thinlto_ldflag="-Wl,-plugin-opt,-import-instr-limit=20"
-			EBUILD_LDFLAGS+=( -gsplit-dwarf )
-		fi
-		EBUILD_LDFLAGS+=( "${thinlto_ldflag}" )
-		# if using thinlto, we need to pass the equivalent of
-		# -fdebug-types-section to the backend, to prevent out-of-range
-		# relocations (see
-		# https://bugs.chromium.org/p/chromium/issues/detail?id=1032159).
-		append-ldflags -Wl,-mllvm
-		append-ldflags -Wl,-generate-type-units
-	fi
-
-	# [Mod] Configurations related to orderfile_generate USE flag are removed.
-
-	# Turn off call graph profile sort (C3), when new pass manager is enabled.
-	# Only allow it when we want to generate orderfile.
-	# This is a temporary option and will need to be removed once orderfile is on.
-	EBUILD_LDFLAGS+=( "-Wl,--no-call-graph-profile-sort" )
-
-	# Enable std::vector []-operator bounds checking.
-	append-cxxflags -D__google_stl_debug_vector=1
-
-	# Chrome and Chrome OS versions of the compiler may not be in
-	# sync. So, don't complain if Chrome uses a diagnostic
-	# option that is not yet implemented in the compiler version used
-	# by Chrome OS.
-	# Turns out this is only really supported by Clang. See crosbug.com/615466
-	# Add "-faddrsig" flag required to efficiently support "--icf=all".
-	append-flags -faddrsig
-	append-flags -Wno-unknown-warning-option
-	export CXXFLAGS_host+=" -Wno-unknown-warning-option"
-	export CFLAGS_host+=" -Wno-unknown-warning-option"
-	if use libcxx; then
-		append-cxxflags "-stdlib=libc++"
-		append-ldflags "-stdlib=libc++"
-	fi
-
-	# Workaround: Disable fatal linker warnings on arm64/lld.
-	# https://crbug.com/913071
-	# [mod] vtable_verify is disabled.
-	use arm64 && append-ldflags "-Wl,--no-fatal-warnings"
-
-	local flags
-	einfo "Building with the compiler settings:"
-	for flags in {C,CXX,CPP,LD}FLAGS; do
-		einfo "  ${flags} = ${!flags}"
-	done
-}
-
-src_configure() {
-	tc-export CXX CC AR AS NM RANLIB STRIP
-	export CC_host=$(tc-getBUILD_CC)
-	export CXX_host=$(tc-getBUILD_CXX)
-	export NM_host=$(tc-getBUILD_NM)
-	export READELF="llvm-readelf"
-	export READELF_host="llvm-readelf"
-
-	# Use C++ compiler as the linker driver.
-	export LD="${CXX}"
-	export LD_host=${CXX_host}
-
-	# We need below change when USE="thinlto" is set. We set this globally
-	# so that users can turn on the "use_thin_lto" in the simplechrome
-	# flow more easily.
-	# use nm from llvm, https://crbug.com/917193
-	export NM="llvm-nm"
-	export NM_host="llvm-nm"
-	export AR="llvm-ar"
-	# USE=thinlto affects host build, we need to set host AR to
-	# llvm-ar to make sure host package builds with thinlto.
-	# crbug.com/731335
-	export AR_host="llvm-ar"
-	export RANLIB="llvm-ranlib"
-
-	# Set binutils path for goma.
-	CC_host+=" -B$(get_binutils_path "${LD_host}")"
-	CXX_host+=" -B$(get_binutils_path "${LD_host}")"
-
-	setup_compile_flags
-
-	# We might set BOTO_CONFIG in the builder environment in case the
-	# existing file needs modifications (e.g. for working with older
-	# branches). So don't overwrite it if it's already set.
-	# See https://crbug.com/847676 for details.
-	export BOTO_CONFIG="${BOTO_CONFIG:-/home/$(whoami)/.boto}"
-	export PATH=${PATH}:${DEPOT_TOOLS}
-
-	export DEPOT_TOOLS_GSUTIL_BIN_DIR="${CHROME_CACHE_DIR}/gsutil_bin"
-	# The venv logic seems to misbehave when cross-compiling.  Since our SDK
-	# should include all the necessary modules, just disable it (for now).
-	# https://crbug.com/808434
-	export VPYTHON_BYPASS="manually managed python not supported by chrome operations"
-
-	# TODO(rcui): crosbug.com/20435. Investigate removal of runhooks
-	# useflag when chrome build switches to Ninja inside the chroot.
-	if use runhooks; then
-		local cmd=( "${EGCLIENT}" runhooks --force )
-		echo "${cmd[@]}"
-		CFLAGS="${CFLAGS} ${EBUILD_CFLAGS[*]}" \
-		CXXFLAGS="${CXXFLAGS} ${EBUILD_CXXFLAGS[*]}" \
-		LDFLAGS="${LDFLAGS} ${EBUILD_LDFLAGS[*]}" \
-		"${cmd[@]}" || die
-	fi
-
-	# [Mod] Unrelated V8 configurations are removed.
-	BUILD_STRING_ARGS+=(
-		"cros_target_ar=${AR}"
-		"cros_target_cc=${CC}"
-		"cros_target_cxx=${CXX}"
-		"host_toolchain=//build/toolchain/cros:host"
-		"custom_toolchain=//build/toolchain/cros:target"
-		"cros_target_ld=${LD}"
-		"cros_target_nm=${NM}"
-		"cros_target_readelf=${READELF}"
-		"cros_target_extra_cflags=${CFLAGS} ${EBUILD_CFLAGS[*]}"
-		"cros_target_extra_cppflags=${CPPFLAGS}"
-		"cros_target_extra_cxxflags=${CXXFLAGS} ${EBUILD_CXXFLAGS[*]}"
-		"cros_target_extra_ldflags=${LDFLAGS} ${EBUILD_LDFLAGS[*]}"
-		"cros_host_cc=${CC_host}"
-		"cros_host_cxx=${CXX_host}"
-		"cros_host_ar=${AR_host}"
-		"cros_host_ld=${LD_host}"
-		"cros_host_nm=${NM_host}"
-		"cros_host_readelf=${READELF_host}"
-		"cros_host_extra_cflags=${CFLAGS_host}"
-		"cros_host_extra_cxxflags=${CXXFLAGS_host}"
-		"cros_host_extra_cppflags=${CPPFLAGS_host}"
-		"cros_host_extra_ldflags=${LDFLAGS_host}"
-	)
-
-	local arg
-	for arg in "${BUILD_STRING_ARGS[@]}"; do
-		BUILD_ARGS+=("${arg%%=*}=\"${arg#*=}\"")
-	done
-	export GN_ARGS="${BUILD_ARGS[*]}"
-	einfo "GN_ARGS = ${GN_ARGS}"
-	local gn=(
-		"${CHROME_ROOT}/src/buildtools/linux64/gn" gen
-		"${CHROME_ROOT}/src/${BUILD_OUT_SYM}/${BUILDTYPE}"
-		--args="${GN_ARGS}" --root="${CHROME_ROOT}/src"
-		--root-target="//third_party/icu"
-	)
-	echo "${gn[@]}"
-	"${gn[@]}" || die
-
-	# [Mod] setup_test_lists and clang_tidy are removed.
-}
-
-chrome_make() {
-	local build_dir="${BUILD_OUT_SYM}/${BUILDTYPE}"
-
-	# If ThinLTO is enabled, we may have a cache from a previous link. Due
-	# to fears about lack of reproducibility, we don't allow cache reuse
-	# across rebuilds. The cache is still useful for artifacts shared
-	# between multiple links done by this build (e.g. tests).
-	use thinlto && rm -rf "${build_dir}/thinlto-cache"
-
-	local command=(
-		"${ENINJA}"
-		"${MAKEOPTS}"
-		-C "${build_dir}"
-		$(usex verbose -v "")
-		"$@"
-	)
-
-	PATH=${PATH}:${DEPOT_TOOLS} "${command[@]}"
-	local ret=$?
-	[[ "${ret}" -eq 0 ]] || die
-}
-
-# [Mod] src_compile() is simplied because 1) the case CHROME_LOCAL=LOCAL_BINARY
-# is excluded. 2) we do not need nacl or tests.
-src_compile() {
-	cd "${CHROME_ROOT}"/src || die "Cannot chdir to ${CHROME_ROOT}/src"
-
-	chrome_make "icu"
-}
-
-# [Mod] src_install() is greatly simplied and totally new.
-src_install() {
-	local build_dir="src/${BUILD_OUT_SYM}/${BUILDTYPE}"
-	local icu_lib_dir="${build_dir}/obj/third_party/icu/"
-	mv "${icu_lib_dir}/libicui18n.a" "${icu_lib_dir}/libicui18n${CHROME_ICU_POSTFIX}.a"
-	mv "${icu_lib_dir}/libicuuc.a" "${icu_lib_dir}/libicuuc${CHROME_ICU_POSTFIX}.a"
-	dolib.a "${icu_lib_dir}/libicui18n${CHROME_ICU_POSTFIX}.a"
-	dolib.a "${icu_lib_dir}/libicuuc${CHROME_ICU_POSTFIX}.a"
-	# Install to chrome folder to make chrome work.
-	insinto "${CHROME_DIR}"
-	doins "${build_dir}/icudtl.dat"
-
-	# Install icu header to /usr/include/icu${CHROME_ICU_POSTFIX}/.
-	local icu_headers=(
-		"common/unicode/brkiter.h"
-		"common/unicode/bytestream.h"
-		"common/unicode/char16ptr.h"
-		"common/unicode/chariter.h"
-		"common/unicode/errorcode.h"
-		"common/unicode/localpointer.h"
-		"common/unicode/locid.h"
-		"common/unicode/parseerr.h"
-		"common/unicode/platform.h"
-		"common/unicode/ptypes.h"
-		"common/unicode/putil.h"
-		"common/unicode/rep.h"
-		"common/unicode/std_string.h"
-		"common/unicode/strenum.h"
-		"common/unicode/stringoptions.h"
-		"common/unicode/stringpiece.h"
-		"common/unicode/ubrk.h"
-		"common/unicode/uchar.h"
-		"common/unicode/uclean.h"
-		"common/unicode/ucnv.h"
-		"common/unicode/ucnv_err.h"
-		"common/unicode/uconfig.h"
-		"common/unicode/ucpmap.h"
-		"common/unicode/ucurr.h"
-		"common/unicode/udata.h"
-		"common/unicode/udisplaycontext.h"
-		"common/unicode/uenum.h"
-		"common/unicode/uloc.h"
-		"common/unicode/umachine.h"
-		"common/unicode/umisc.h"
-		"common/unicode/unistr.h"
-		"common/unicode/uobject.h"
-		"common/unicode/urename.h"
-		"common/unicode/ures.h"
-		"common/unicode/utext.h"
-		"common/unicode/utf.h"
-		"common/unicode/utf16.h"
-		"common/unicode/utf8.h"
-		"common/unicode/utf_old.h"
-		"common/unicode/utypes.h"
-		"common/unicode/uvernum.h"
-		"common/unicode/uversion.h"
-		"i18n/unicode/calendar.h"
-		"i18n/unicode/gregocal.h"
-		"i18n/unicode/regex.h"
-		"i18n/unicode/timezone.h"
-		"i18n/unicode/ucal.h"
-		"i18n/unicode/ucsdet.h"
-		"i18n/unicode/ufieldpositer.h"
-		"i18n/unicode/uformattable.h"
-		"i18n/unicode/unum.h"
-		"i18n/unicode/uregex.h"
-	)
-	local f
-	for f in "${icu_headers[@]}"; do
-		insinto "/usr/include/icu${CHROME_ICU_POSTFIX}/${f%/*}"
-		doins "${CHROME_ROOT}/src/third_party/icu/source/${f}"
-	done
-}
diff --git a/chromeos-base/chrome-icu/chrome-icu-93.0.4554.0_rc-r1.ebuild b/chromeos-base/chrome-icu/chrome-icu-93.0.4554.0_rc-r1.ebuild
new file mode 100644
index 0000000..be2fcdb
--- /dev/null
+++ b/chromeos-base/chrome-icu/chrome-icu-93.0.4554.0_rc-r1.ebuild
@@ -0,0 +1,697 @@
+# Copyright 2020 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.
+
+# This ebuild is based on "chromeos-chrome.ebuild" to compile the chrome/icu
+# package into shared libraries and install them. The essential difference is to
+# do "chrome_make icu" rather than "chrome_make chrome". Besides, some other
+# non-trivial modifications are:
+#   - "chromium-source.eclass" is used to download chrome source code. Because
+#     "chromeos-chrome.ebuild" and "chromium-source.eclass" download the chrome
+#     source into the same location, the variables of "chromeos-chrome.ebuild"
+#     are kept.
+#   - "Control-flow integrity" (|is_cfi=false| and |use_cfi_cast=false|) is
+#     turned off otherwise the generated .so will crash (Illegal instruction).
+#   - Unrelated resource downloads (like for telemetry) are removed.
+#   - Unrelated configuration (like ozone platforms) are removed.
+#   - Unrelated features (like nacl) are disabled.
+#   - Header folders and libraries are postfixed with "${CHROME_ICU_POSTFIX}".
+#
+# Significant changes from "chromeos-chrome.ebuild" are highlighted by "[Mod]".
+#
+# The GN output folder is named as "out_icu_${BOARD}".
+
+EAPI=5
+
+# TODO(crbug.com/984182): We force Python 2 because depot_tools doesn't support Python 3.
+PYTHON_COMPAT=( python2_7 )
+inherit binutils-funcs chromium-source cros-constants cros-sanitizers flag-o-matic multilib toolchain-funcs python-any-r1 multiprocessing
+
+DESCRIPTION="The ICU library copied from chrome/third_party"
+HOMEPAGE="https://cs.chromium.org/chromium/src/third_party/icu/"
+
+LICENSE="icu-58"
+
+SLOT="0/${PVR}"
+KEYWORDS="*"
+
+# [Mod] Most of non-related IUSE flags are removed.
+IUSE="
+	asan
+	chrome_internal
+	component_build
+	cups
+	+libcxx
+	msan
+	neon
+	+runhooks
+	thinlto
+	ubsan
+	verbose
+	xkbcommon
+	"
+
+# [Mod] clear REQUIRED_USE.
+REQUIRED_USE=""
+
+# [Mod] Ozone platform variables are removed.
+
+# The gclient hooks that run in src_prepare hit the network.
+# https://crbug.com/731905
+RESTRICT="network-sandbox mirror"
+
+# Portage version without optional portage suffix.
+CHROME_VERSION="${PV/_*/}"
+
+# chrome destination directory
+CHROME_DIR=/opt/google/chrome
+
+# For compilation
+BUILDTYPE="${BUILDTYPE:-Release}"
+BOARD="${BOARD:-${SYSROOT##/build/}}"
+# [Mod] GN output dir is named as "out_icu_${BOARD}".
+BUILD_OUT="${BUILD_OUT:-out_icu_${BOARD}}"
+
+# [Mod] Change from "c" to avoid potential conflict with chromeos-chrome.ebuild.
+BUILD_OUT_SYM="c_icu"
+
+# [Mod] To differentiate with the standard ICU, we postfix the include headers
+# folder and library names by "chrome". (see crbug.com/1059133 and b/151439301)
+CHROME_ICU_POSTFIX="-chrome"
+
+# [Mod] Order file and AFDO file variables/functions declared here are removed.
+
+# [Mod] chrome/icu depends on nothing. Blocking the canonical icu package can
+# let us notice the potential repetitions.
+# [Mod] Old Chrome ebuilds installed icudtl.dat.
+# Add `xkbcommon` related libraries to make xkbcommon handling identical with
+# chromeos-chrome. This will make it more likely to catch potential xkbcommon
+# related chromeos-icu.ebuild failures by testing chromeos-chrome.ebuild.
+RDEPEND="
+	!dev-libs/icu
+	!<chromeos-base/chromeos-chrome-83.0.4098.4
+	xkbcommon? (
+		x11-libs/libxkbcommon
+		x11-misc/xkeyboard-config
+	)
+"
+DEPEND="
+	net-print/cups
+	x11-libs/libdrm
+"
+
+# [Mod] NaCl utilities are removed.
+
+usetf()  { usex $1 true false ; }
+
+set_build_args() {
+	# [Mod] 1. Add a new arg "icu_disable_thin_archive=true".
+	#       2. Set the values according to IUSE default value but disable
+	#          unnecessary feature
+	#       3. Set "is_cfi=false".
+	BUILD_ARGS=(
+		"is_chromeos_device=true"
+		"icu_disable_thin_archive=true"
+
+		# is_official_build sometimes implies extra optimizations (e.g. it will allow
+		# ThinLTO to optimize more aggressively, if ThinLTO is enabled). Please note
+		# that, despite the name, it should be usable by external users.
+		#
+		# Sanitizers don't like official builds.
+		"is_official_build=$(use_sanitizers false true)"
+
+		"is_debug=false"
+		"${EXTRA_GN_ARGS}"
+		"use_ozone=true"
+		"use_evdev_gestures=false"
+		# Use the Chrome OS toolchain and not the one bundled with Chromium.
+		"linux_use_bundled_binutils=false"
+		"use_debug_fission=false"
+		"enable_remoting=false"
+		"enable_nacl=false"
+		"enable_nacl=false"
+		"icu_use_data_file=true"
+		# Add this to make xkbcommon handling identical with chromeos-chrome.
+		# This will make it more likely to catch potential xkbcommon related
+		# chromeos-icu.ebuild failures by testing chromeos-chrome.ebuild
+		"use_xkbcommon=$(usetf xkbcommon)"
+		# use_system_minigbm is set below.
+		# HarfBuzz and FreeType need to be built together in a specific way
+		# to get FreeType autohinting to work properly. Chromium bundles
+		# FreeType and HarfBuzz to meet that need.
+		# See crbug.com/694137 .
+		"use_system_harfbuzz=false"
+		"use_system_freetype=false"
+		"use_system_libsync=false"
+		"use_cups=$(usetf cups)"
+		"use_bundled_fontconfig=false"
+
+		# Clang features.
+		"is_asan=$(usetf asan)"
+		"is_msan=$(usetf msan)"
+		"is_ubsan=$(usetf ubsan)"
+		"is_clang=true"
+		"cros_host_is_clang=true"
+		"clang_use_chrome_plugins=false"
+		"use_thin_lto=$(usetf thinlto)"
+		"clang_use_chrome_plugins=false"
+		"is_cfi=false"
+		"use_cfi_cast=false"
+		"use_cras=false"
+	)
+
+	# BUILD_STRING_ARGS needs appropriate quoting. So, we keep them separate and
+	# add them to BUILD_ARGS at the end.
+	BUILD_STRING_ARGS=(
+		"target_sysroot=${SYSROOT}"
+		"system_libdir=$(get_libdir)"
+		"pkg_config=$(tc-getPKG_CONFIG)"
+		"target_os=chromeos"
+		"host_pkg_config=$(tc-getBUILD_PKG_CONFIG)"
+	)
+
+	# [Mod] Ozone platform configrations are removed.
+
+	# Set proper build args for the arch
+	case "${ARCH}" in
+	x86)
+		BUILD_STRING_ARGS+=( "target_cpu=x86" )
+		;;
+	arm)
+		BUILD_ARGS+=(
+			"arm_use_neon=$(usetf neon)"
+			# To workaround the 4GB debug limit. crbug.com/792999.
+			"blink_symbol_level=1"
+		)
+		BUILD_STRING_ARGS+=(
+			"target_cpu=arm"
+			"arm_float_abi=hard"
+		)
+		local arm_arch=$(get-flag march)
+		if [[ -n "${arm_arch}" ]]; then
+			BUILD_STRING_ARGS+=( "arm_arch=${arm_arch}" )
+		fi
+		;;
+	arm64)
+		BUILD_STRING_ARGS+=(
+			"target_cpu=arm64"
+		)
+		local arm_arch=$(get-flag march)
+		if [[ -n "${arm_arch}" ]]; then
+			BUILD_STRING_ARGS+=( "arm_arch=${arm_arch}" )
+		fi
+		;;
+	amd64)
+		BUILD_STRING_ARGS+=( "target_cpu=x64" )
+		;;
+	mips)
+		local mips_arch target_arch
+
+		mips_arch="$($(tc-getCPP) ${CFLAGS} ${CPPFLAGS} -E -P - <<<_MIPS_ARCH)"
+		# Strip away any enclosing quotes.
+		mips_arch="${mips_arch//\"}"
+		# TODO(benchan): Use tc-endian from toolchain-func to determine endianess
+		# when Chrome later cares about big-endian.
+		case "${mips_arch}" in
+		mips64*)
+			target_arch=mips64el
+			;;
+		*)
+			target_arch=mipsel
+			;;
+		esac
+
+		BUILD_STRING_ARGS+=(
+			"target_cpu=${target_arch}"
+			"mips_arch_variant=${mips_arch}"
+		)
+		;;
+	*)
+		die "Unsupported architecture: ${ARCH}"
+		;;
+	esac
+
+	# [Mod] chrome_media configurations are removed.
+	if use chrome_internal; then
+		# Adding chrome branding specific variables.
+		BUILD_ARGS+=( "is_chrome_branded=true" )
+		# This test can only be build from internal sources.
+		BUILD_ARGS+=( "internal_gles2_conform_tests=true" )
+		export CHROMIUM_BUILD='_google_Chrome'
+		export OFFICIAL_BUILD='1'
+		export CHROME_BUILD_TYPE='_official'
+	fi
+
+	BUILD_ARGS+=(
+		"treat_warnings_as_errors=false"
+	)
+
+	if use component_build; then
+		BUILD_ARGS+=( "is_component_build=true" )
+	fi
+
+	# [Mod] goma is disabled.
+	BUILD_ARGS+=( "use_goma=false" )
+
+	# [Mod] chrome_debug and debug_fission configurations are removed.
+}
+
+# [Mod] Main content of unpack_chrome() is replaced by the unpack function in
+# chromium-source.eclass.
+unpack_chrome() {
+	# Add depot_tools to PATH, local chroot builds fail otherwise.
+	export PATH=${PATH}:${DEPOT_TOOLS}
+
+	chromium-source_src_unpack
+}
+
+decide_chrome_origin() {
+	if [[ "${PV}" == "9999" ]]; then
+		# LOCAL_SOURCE is the default for cros_workon
+		# Warn the user if CHROME_ORIGIN is already set
+		if [[ -n "${CHROME_ORIGIN}" && "${CHROME_ORIGIN}" != LOCAL_SOURCE ]]; then
+			ewarn "CHROME_ORIGIN is already set to ${CHROME_ORIGIN}."
+			ewarn "This will prevent you from building from your local checkout."
+			ewarn "Please run 'unset CHROME_ORIGIN' to reset Chrome"
+			ewarn "to the default source location."
+		fi
+		: "${CHROME_ORIGIN:=LOCAL_SOURCE}"
+	else
+		# By default, pull from server
+		: "${CHROME_ORIGIN:=SERVER_SOURCE}"
+	fi
+}
+
+sandboxless_ensure_directory() {
+	local dir
+	for dir in "$@"; do
+		if [[ ! -d "${dir}" ]] ; then
+			# We need root access to create these directories, so we need to
+			# use sudo. This implicitly disables the sandbox.
+			sudo mkdir -p "${dir}" || die
+			sudo chown "${PORTAGE_USERNAME}:portage" "${dir}" || die
+			sudo chmod 0755 "${dir}" || die
+		fi
+	done
+}
+
+src_unpack() {
+	tc-export CC CXX
+	local WHOAMI=$(whoami)
+
+	CHROME_SRC="chrome-src"
+	if use chrome_internal; then
+		CHROME_SRC+="-internal"
+	fi
+
+	# CHROME_CACHE_DIR is used for storing output artifacts, and is always a
+	# regular directory inside the chroot (i.e. it's never mounted in, so it's
+	# always safe to use cp -al for these artifacts).
+	: "${CHROME_CACHE_DIR:="/var/cache/chromeos-chrome/${CHROME_SRC}"}"
+	addwrite "${CHROME_CACHE_DIR}"
+
+	# CHROME_DISTDIR is used for storing the source code, if any source code
+	# needs to be unpacked at build time (e.g. in the SERVER_SOURCE scenario.)
+	# It will be mounted into the chroot, so it is never safe to use cp -al
+	# for these files.
+	: "${CHROME_DISTDIR:="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/${CHROME_SRC}"}"
+	addwrite "${CHROME_DISTDIR}"
+
+	# Create storage directories.
+	sandboxless_ensure_directory "${CHROME_DISTDIR}" "${CHROME_CACHE_DIR}"
+
+	# [Mod] Calls of cros-credentials_setup is removed.
+
+	decide_chrome_origin
+
+	# [Mod] LOCAL_BINARY is not supported because chromium-source.eclass does not
+	# support it.
+	case "${CHROME_ORIGIN}" in
+	LOCAL_SOURCE|SERVER_SOURCE)
+		elog "CHROME_ORIGIN VALUE is ${CHROME_ORIGIN}"
+		;;
+	*)
+		die "CHROME_ORIGIN not one of LOCAL_SOURCE, SERVER_SOURCE"
+		;;
+	esac
+
+	# Prepare and set CHROME_ROOT based on CHROME_ORIGIN.
+	# CHROME_ROOT is the location where the source code is used for compilation.
+	# If we're in SERVER_SOURCE mode, CHROME_ROOT is CHROME_DISTDIR. In LOCAL_SOURCE
+	# mode, this directory may be set manually to any directory. It may be mounted
+	# into the chroot, so it is not safe to use cp -al for these files.
+	# These are set here because $(whoami) returns the proper user here,
+	# but 'root' at the root level of the file
+	case "${CHROME_ORIGIN}" in
+	(SERVER_SOURCE)
+		elog "Using CHROME_VERSION = ${CHROME_VERSION}"
+		if [[ ${WHOAMI} == "chrome-bot" ]]; then
+			# TODO: Should add a sanity check that the version checked out is
+			# what we actually want.  Not sure how to do that though.
+			elog "Skipping syncing as cbuildbot ran SyncChrome for us."
+		else
+			unpack_chrome
+		fi
+
+		elog "set the chrome source root to ${CHROME_DISTDIR}"
+		elog "From this point onwards there is no difference between \
+			SERVER_SOURCE and LOCAL_SOURCE, since the fetch is done"
+		CHROME_ROOT=${CHROME_DISTDIR}
+		;;
+	(LOCAL_SOURCE)
+		: "${CHROME_ROOT:=/home/${WHOAMI}/chrome_root}"
+		if [[ ! -d "${CHROME_ROOT}/src" ]]; then
+			die "${CHROME_ROOT} does not contain a valid chromium checkout!"
+		fi
+		addwrite "${CHROME_ROOT}"
+		;;
+	esac
+
+	# [Mod] Always call this because the case CHROME_ORIGIN=LOCAL_BINARY is
+	# excluded.
+	set_build_args
+
+	ln -sf "${CHROME_ROOT}" "${WORKDIR}/${P}"
+
+	# [Mod] Use flags internal_gles_conform, afdo_use, afdo_verify,
+	# orderfile_verify and orderfile_use are all disabled.
+	BUILD_STRING_ARGS+=( "chrome_orderfile_path=" )
+}
+
+# [Mod] add_api_keys() is removed because we do not need to access Google
+# services.
+
+# [Mod] src_prepare() is simplied because 1) we do not need to access Google
+# services; 2) we exclude the case CHROME_ORIGIN=LOCAL_BINARY and 3) we do
+# not need patches.
+src_prepare() {
+	cd "${CHROME_ROOT}/src" || die "Cannot chdir to ${CHROME_ROOT}"
+	mkdir -p "${CHROME_CACHE_DIR}/src/${BUILD_OUT}"
+	if [[ -n "${BUILD_OUT_SYM}" ]]; then
+		rm -rf "${BUILD_OUT_SYM}" || die "Could not remove symlink"
+		ln -sfT "${CHROME_CACHE_DIR}/src/${BUILD_OUT}" "${BUILD_OUT_SYM}" ||
+			die "Could not create symlink for output directory"
+	fi
+}
+
+# [Mod] setup_test_lists() is removed.
+
+# Handle all CFLAGS/CXXFLAGS/etc... munging here.
+setup_compile_flags() {
+	# Chrome controls its own optimization settings, so this would be a nop
+	# if we were to run it. Leave it here anyway as a grep-friendly marker.
+	# cros_optimize_package_for_speed
+
+	# The chrome makefiles specify -O and -g flags already, so remove the
+	# portage flags.
+	filter-flags -g -O*
+
+	# Remove unsupported arm64 linker flag on arm32 builds.
+	# https://crbug.com/889079
+	use arm && filter-flags "-Wl,--fix-cortex-a53-843419"
+
+	# There are some flags we want to only use in the ebuild.
+	# The rest will be exported to the simple chrome workflow.
+	EBUILD_CFLAGS=()
+	EBUILD_CXXFLAGS=()
+	EBUILD_LDFLAGS=()
+
+	# LLVM needs this when parsing profiles.
+	# See README on https://github.com/google/autofdo
+	# For ARM, we do not need this flag because we don't get profiles
+	# from ARM machines. And it triggers an llvm assertion when thinlto
+	# and debug fission is used together.
+	# See https://bugs.llvm.org/show_bug.cgi?id=37255
+	use arm || append-flags -fdebug-info-for-profiling
+
+	if use thinlto; then
+		# We need to change the default value of import-instr-limit in
+		# LLVM to limit the text size increase. The default value is
+		# 100, and we change it to 30 to reduce the text size increase
+		# from 25% to 10%. The performance number of page_cycler is the
+		# same on two of the thinLTO configurations, we got 1% slowdown
+		# on speedometer when changing import-instr-limit from 100 to 30.
+		# We need to further reduce it to 20 for arm to limit the size
+		# increase to 10%.
+		local thinlto_ldflag="-Wl,-plugin-opt,-import-instr-limit=30"
+		if use arm; then
+			thinlto_ldflag="-Wl,-plugin-opt,-import-instr-limit=20"
+			EBUILD_LDFLAGS+=( -gsplit-dwarf )
+		fi
+		EBUILD_LDFLAGS+=( "${thinlto_ldflag}" )
+		# if using thinlto, we need to pass the equivalent of
+		# -fdebug-types-section to the backend, to prevent out-of-range
+		# relocations (see
+		# https://bugs.chromium.org/p/chromium/issues/detail?id=1032159).
+		append-ldflags -Wl,-mllvm
+		append-ldflags -Wl,-generate-type-units
+	fi
+
+	# [Mod] Configurations related to orderfile_generate USE flag are removed.
+
+	# Turn off call graph profile sort (C3), when new pass manager is enabled.
+	# Only allow it when we want to generate orderfile.
+	# This is a temporary option and will need to be removed once orderfile is on.
+	EBUILD_LDFLAGS+=( "-Wl,--no-call-graph-profile-sort" )
+
+	# Enable std::vector []-operator bounds checking.
+	append-cxxflags -D__google_stl_debug_vector=1
+
+	# Chrome and Chrome OS versions of the compiler may not be in
+	# sync. So, don't complain if Chrome uses a diagnostic
+	# option that is not yet implemented in the compiler version used
+	# by Chrome OS.
+	# Turns out this is only really supported by Clang. See crosbug.com/615466
+	# Add "-faddrsig" flag required to efficiently support "--icf=all".
+	append-flags -faddrsig
+	append-flags -Wno-unknown-warning-option
+	export CXXFLAGS_host+=" -Wno-unknown-warning-option"
+	export CFLAGS_host+=" -Wno-unknown-warning-option"
+	if use libcxx; then
+		append-cxxflags "-stdlib=libc++"
+		append-ldflags "-stdlib=libc++"
+	fi
+
+	# Workaround: Disable fatal linker warnings on arm64/lld.
+	# https://crbug.com/913071
+	# [mod] vtable_verify is disabled.
+	use arm64 && append-ldflags "-Wl,--no-fatal-warnings"
+
+	local flags
+	einfo "Building with the compiler settings:"
+	for flags in {C,CXX,CPP,LD}FLAGS; do
+		einfo "  ${flags} = ${!flags}"
+	done
+}
+
+src_configure() {
+	tc-export CXX CC AR AS NM RANLIB STRIP
+	export CC_host=$(tc-getBUILD_CC)
+	export CXX_host=$(tc-getBUILD_CXX)
+	export NM_host=$(tc-getBUILD_NM)
+	export READELF="llvm-readelf"
+	export READELF_host="llvm-readelf"
+
+	# Use C++ compiler as the linker driver.
+	export LD="${CXX}"
+	export LD_host=${CXX_host}
+
+	# We need below change when USE="thinlto" is set. We set this globally
+	# so that users can turn on the "use_thin_lto" in the simplechrome
+	# flow more easily.
+	# use nm from llvm, https://crbug.com/917193
+	export NM="llvm-nm"
+	export NM_host="llvm-nm"
+	export AR="llvm-ar"
+	# USE=thinlto affects host build, we need to set host AR to
+	# llvm-ar to make sure host package builds with thinlto.
+	# crbug.com/731335
+	export AR_host="llvm-ar"
+	export RANLIB="llvm-ranlib"
+
+	# Set binutils path for goma.
+	CC_host+=" -B$(get_binutils_path "${LD_host}")"
+	CXX_host+=" -B$(get_binutils_path "${LD_host}")"
+
+	setup_compile_flags
+
+	# We might set BOTO_CONFIG in the builder environment in case the
+	# existing file needs modifications (e.g. for working with older
+	# branches). So don't overwrite it if it's already set.
+	# See https://crbug.com/847676 for details.
+	export BOTO_CONFIG="${BOTO_CONFIG:-/home/$(whoami)/.boto}"
+	export PATH=${PATH}:${DEPOT_TOOLS}
+
+	export DEPOT_TOOLS_GSUTIL_BIN_DIR="${CHROME_CACHE_DIR}/gsutil_bin"
+	# The venv logic seems to misbehave when cross-compiling.  Since our SDK
+	# should include all the necessary modules, just disable it (for now).
+	# https://crbug.com/808434
+	export VPYTHON_BYPASS="manually managed python not supported by chrome operations"
+
+	# TODO(rcui): crosbug.com/20435. Investigate removal of runhooks
+	# useflag when chrome build switches to Ninja inside the chroot.
+	if use runhooks; then
+		local cmd=( "${EGCLIENT}" runhooks --force )
+		echo "${cmd[@]}"
+		CFLAGS="${CFLAGS} ${EBUILD_CFLAGS[*]}" \
+		CXXFLAGS="${CXXFLAGS} ${EBUILD_CXXFLAGS[*]}" \
+		LDFLAGS="${LDFLAGS} ${EBUILD_LDFLAGS[*]}" \
+		"${cmd[@]}" || die
+	fi
+
+	# [Mod] Unrelated V8 configurations are removed.
+	BUILD_STRING_ARGS+=(
+		"cros_target_ar=${AR}"
+		"cros_target_cc=${CC}"
+		"cros_target_cxx=${CXX}"
+		"host_toolchain=//build/toolchain/cros:host"
+		"custom_toolchain=//build/toolchain/cros:target"
+		"cros_target_ld=${LD}"
+		"cros_target_nm=${NM}"
+		"cros_target_readelf=${READELF}"
+		"cros_target_extra_cflags=${CFLAGS} ${EBUILD_CFLAGS[*]}"
+		"cros_target_extra_cppflags=${CPPFLAGS}"
+		"cros_target_extra_cxxflags=${CXXFLAGS} ${EBUILD_CXXFLAGS[*]}"
+		"cros_target_extra_ldflags=${LDFLAGS} ${EBUILD_LDFLAGS[*]}"
+		"cros_host_cc=${CC_host}"
+		"cros_host_cxx=${CXX_host}"
+		"cros_host_ar=${AR_host}"
+		"cros_host_ld=${LD_host}"
+		"cros_host_nm=${NM_host}"
+		"cros_host_readelf=${READELF_host}"
+		"cros_host_extra_cflags=${CFLAGS_host}"
+		"cros_host_extra_cxxflags=${CXXFLAGS_host}"
+		"cros_host_extra_cppflags=${CPPFLAGS_host}"
+		"cros_host_extra_ldflags=${LDFLAGS_host}"
+	)
+
+	local arg
+	for arg in "${BUILD_STRING_ARGS[@]}"; do
+		BUILD_ARGS+=("${arg%%=*}=\"${arg#*=}\"")
+	done
+	export GN_ARGS="${BUILD_ARGS[*]}"
+	einfo "GN_ARGS = ${GN_ARGS}"
+	local gn=(
+		"${CHROME_ROOT}/src/buildtools/linux64/gn" gen
+		"${CHROME_ROOT}/src/${BUILD_OUT_SYM}/${BUILDTYPE}"
+		--args="${GN_ARGS}" --root="${CHROME_ROOT}/src"
+		--root-target="//third_party/icu"
+	)
+	echo "${gn[@]}"
+	"${gn[@]}" || die
+
+	# [Mod] setup_test_lists and clang_tidy are removed.
+}
+
+chrome_make() {
+	local build_dir="${BUILD_OUT_SYM}/${BUILDTYPE}"
+
+	# If ThinLTO is enabled, we may have a cache from a previous link. Due
+	# to fears about lack of reproducibility, we don't allow cache reuse
+	# across rebuilds. The cache is still useful for artifacts shared
+	# between multiple links done by this build (e.g. tests).
+	use thinlto && rm -rf "${build_dir}/thinlto-cache"
+
+	local command=(
+		"${ENINJA}"
+		-j"$(makeopts_jobs)"
+		-C "${build_dir}"
+		$(usex verbose -v "")
+		"$@"
+	)
+
+	PATH=${PATH}:${DEPOT_TOOLS} "${command[@]}"
+	local ret=$?
+	[[ "${ret}" -eq 0 ]] || die
+}
+
+# [Mod] src_compile() is simplied because 1) the case CHROME_LOCAL=LOCAL_BINARY
+# is excluded. 2) we do not need nacl or tests.
+src_compile() {
+	cd "${CHROME_ROOT}"/src || die "Cannot chdir to ${CHROME_ROOT}/src"
+
+	chrome_make "icu"
+}
+
+# [Mod] src_install() is greatly simplied and totally new.
+src_install() {
+	local build_dir="src/${BUILD_OUT_SYM}/${BUILDTYPE}"
+	local icu_lib_dir="${build_dir}/obj/third_party/icu/"
+	mv "${icu_lib_dir}/libicui18n.a" "${icu_lib_dir}/libicui18n${CHROME_ICU_POSTFIX}.a"
+	mv "${icu_lib_dir}/libicuuc.a" "${icu_lib_dir}/libicuuc${CHROME_ICU_POSTFIX}.a"
+	dolib.a "${icu_lib_dir}/libicui18n${CHROME_ICU_POSTFIX}.a"
+	dolib.a "${icu_lib_dir}/libicuuc${CHROME_ICU_POSTFIX}.a"
+	# Install to chrome folder to make chrome work.
+	insinto "${CHROME_DIR}"
+	doins "${build_dir}/icudtl.dat"
+
+	# Install icu header to /usr/include/icu${CHROME_ICU_POSTFIX}/.
+	local icu_headers=(
+		"common/unicode/appendable.h"
+		"common/unicode/brkiter.h"
+		"common/unicode/bytestream.h"
+		"common/unicode/char16ptr.h"
+		"common/unicode/chariter.h"
+		"common/unicode/errorcode.h"
+		"common/unicode/localpointer.h"
+		"common/unicode/locid.h"
+		"common/unicode/parseerr.h"
+		"common/unicode/platform.h"
+		"common/unicode/ptypes.h"
+		"common/unicode/putil.h"
+		"common/unicode/rep.h"
+		"common/unicode/schriter.h"
+		"common/unicode/std_string.h"
+		"common/unicode/strenum.h"
+		"common/unicode/stringoptions.h"
+		"common/unicode/stringpiece.h"
+		"common/unicode/ubrk.h"
+		"common/unicode/uchar.h"
+		"common/unicode/uchriter.h"
+		"common/unicode/uclean.h"
+		"common/unicode/ucnv.h"
+		"common/unicode/ucnv_err.h"
+		"common/unicode/uconfig.h"
+		"common/unicode/ucpmap.h"
+		"common/unicode/ucurr.h"
+		"common/unicode/udata.h"
+		"common/unicode/udisplaycontext.h"
+		"common/unicode/uenum.h"
+		"common/unicode/uloc.h"
+		"common/unicode/umachine.h"
+		"common/unicode/umisc.h"
+		"common/unicode/unifilt.h"
+		"common/unicode/unifunct.h"
+		"common/unicode/unimatch.h"
+		"common/unicode/uniset.h"
+		"common/unicode/unistr.h"
+		"common/unicode/uobject.h"
+		"common/unicode/urename.h"
+		"common/unicode/ures.h"
+		"common/unicode/uscript.h"
+		"common/unicode/uset.h"
+		"common/unicode/utext.h"
+		"common/unicode/utf.h"
+		"common/unicode/utf16.h"
+		"common/unicode/utf8.h"
+		"common/unicode/utf_old.h"
+		"common/unicode/utypes.h"
+		"common/unicode/uvernum.h"
+		"common/unicode/uversion.h"
+		"i18n/unicode/calendar.h"
+		"i18n/unicode/gregocal.h"
+		"i18n/unicode/regex.h"
+		"i18n/unicode/timezone.h"
+		"i18n/unicode/ucal.h"
+		"i18n/unicode/ucsdet.h"
+		"i18n/unicode/ufieldpositer.h"
+		"i18n/unicode/uformattable.h"
+		"i18n/unicode/unum.h"
+		"i18n/unicode/uregex.h"
+	)
+	local f
+	for f in "${icu_headers[@]}"; do
+		insinto "/usr/include/icu${CHROME_ICU_POSTFIX}/${f%/*}"
+		doins "${CHROME_ROOT}/src/third_party/icu/source/${f}"
+	done
+}
diff --git a/chromeos-base/chrome-icu/chrome-icu-9999.ebuild b/chromeos-base/chrome-icu/chrome-icu-9999.ebuild
index cf58502..1759932 100644
--- a/chromeos-base/chrome-icu/chrome-icu-9999.ebuild
+++ b/chromeos-base/chrome-icu/chrome-icu-9999.ebuild
@@ -25,7 +25,7 @@
 
 # TODO(crbug.com/984182): We force Python 2 because depot_tools doesn't support Python 3.
 PYTHON_COMPAT=( python2_7 )
-inherit binutils-funcs chromium-source cros-constants cros-sanitizers flag-o-matic multilib toolchain-funcs python-any-r1
+inherit binutils-funcs chromium-source cros-constants cros-sanitizers flag-o-matic multilib toolchain-funcs python-any-r1 multiprocessing
 
 DESCRIPTION="The ICU library copied from chrome/third_party"
 HOMEPAGE="https://cs.chromium.org/chromium/src/third_party/icu/"
@@ -594,7 +594,7 @@
 
 	local command=(
 		"${ENINJA}"
-		"${MAKEOPTS}"
+		-j"$(makeopts_jobs)"
 		-C "${build_dir}"
 		$(usex verbose -v "")
 		"$@"
@@ -627,6 +627,7 @@
 
 	# Install icu header to /usr/include/icu${CHROME_ICU_POSTFIX}/.
 	local icu_headers=(
+		"common/unicode/appendable.h"
 		"common/unicode/brkiter.h"
 		"common/unicode/bytestream.h"
 		"common/unicode/char16ptr.h"
@@ -639,12 +640,14 @@
 		"common/unicode/ptypes.h"
 		"common/unicode/putil.h"
 		"common/unicode/rep.h"
+		"common/unicode/schriter.h"
 		"common/unicode/std_string.h"
 		"common/unicode/strenum.h"
 		"common/unicode/stringoptions.h"
 		"common/unicode/stringpiece.h"
 		"common/unicode/ubrk.h"
 		"common/unicode/uchar.h"
+		"common/unicode/uchriter.h"
 		"common/unicode/uclean.h"
 		"common/unicode/ucnv.h"
 		"common/unicode/ucnv_err.h"
@@ -657,10 +660,16 @@
 		"common/unicode/uloc.h"
 		"common/unicode/umachine.h"
 		"common/unicode/umisc.h"
+		"common/unicode/unifilt.h"
+		"common/unicode/unifunct.h"
+		"common/unicode/unimatch.h"
+		"common/unicode/uniset.h"
 		"common/unicode/unistr.h"
 		"common/unicode/uobject.h"
 		"common/unicode/urename.h"
 		"common/unicode/ures.h"
+		"common/unicode/uscript.h"
+		"common/unicode/uset.h"
 		"common/unicode/utext.h"
 		"common/unicode/utf.h"
 		"common/unicode/utf16.h"
diff --git a/chromeos-base/chromeos-accelerometer-init/chromeos-accelerometer-init-0.0.1-r25.ebuild b/chromeos-base/chromeos-accelerometer-init/chromeos-accelerometer-init-0.0.1-r27.ebuild
similarity index 100%
rename from chromeos-base/chromeos-accelerometer-init/chromeos-accelerometer-init-0.0.1-r25.ebuild
rename to chromeos-base/chromeos-accelerometer-init/chromeos-accelerometer-init-0.0.1-r27.ebuild
diff --git a/chromeos-base/chromeos-accelerometer-init/chromeos-accelerometer-init-0.0.1.ebuild b/chromeos-base/chromeos-accelerometer-init/chromeos-accelerometer-init-0.0.1.ebuild
index c15d21f..e8159cf 100644
--- a/chromeos-base/chromeos-accelerometer-init/chromeos-accelerometer-init-0.0.1.ebuild
+++ b/chromeos-base/chromeos-accelerometer-init/chromeos-accelerometer-init-0.0.1.ebuild
@@ -36,8 +36,6 @@
 }
 
 src_install() {
-	udev_dorules "${FILESDIR}"/udev/99-cros-ec-accel.rules
-
 	insinto /etc/init
 	doins "${FILESDIR}"/init/cros-ec-accel.conf
 }
diff --git a/chromeos-base/chromeos-accelerometer-init/files/udev/99-cros-ec-accel.rules b/chromeos-base/chromeos-accelerometer-init/files/udev/99-cros-ec-accel.rules
deleted file mode 100644
index d7c88d5..0000000
--- a/chromeos-base/chromeos-accelerometer-init/files/udev/99-cros-ec-accel.rules
+++ /dev/null
@@ -1,9 +0,0 @@
-ACTION=="add", ATTR{name}=="cros-ec-accel*", RUN+="/usr/sbin/mems_setup --device_id=%n --sensor_kind=accel"
-ACTION=="add", ATTR{name}=="cros-ec-gyro", RUN+="/usr/sbin/mems_setup --device_id=%n --sensor_kind=anglvel"
-ACTION=="add", ATTR{name}=="cros-ec-light", RUN+="/usr/sbin/mems_setup --device_id=%n --sensor_kind=illuminance"
-ACTION=="add", ATTR{name}=="acpi-als", RUN+="/usr/sbin/mems_setup --device_id=%n --sensor_kind=illuminance"
-ACTION=="add", ATTR{name}=="cros-ec-sync", RUN+="/usr/sbin/mems_setup --device_id=%n --sensor_kind=count"
-ACTION=="add", ATTR{name}=="cros-ec-mag", RUN+="/usr/sbin/mems_setup --device_id=%n --sensor_kind=magn"
-ACTION=="add", ATTR{name}=="cros-ec-lid-angle", RUN+="/usr/sbin/mems_setup --device_id=%n --sensor_kind=angl"
-ACTION=="add", ATTR{name}=="cros-ec-baro", RUN+="/usr/sbin/mems_setup --device_id=%n --sensor_kind=baro"
-ACTION!="remove", ATTR{name}=="cros-ec-accel*", SYMLINK+="cros-ec-accel/%n", MODE="640", GROUP="chronos"
diff --git a/chromeos-base/chromeos-base/chromeos-base-1-r3.ebuild b/chromeos-base/chromeos-base/chromeos-base-1-r6.ebuild
similarity index 100%
rename from chromeos-base/chromeos-base/chromeos-base-1-r3.ebuild
rename to chromeos-base/chromeos-base/chromeos-base-1-r6.ebuild
diff --git a/chromeos-base/chromeos-base/files/00-sysctl.conf b/chromeos-base/chromeos-base/files/00-sysctl.conf
index c2ae378..8b94fda 100644
--- a/chromeos-base/chromeos-base/files/00-sysctl.conf
+++ b/chromeos-base/chromeos-base/files/00-sysctl.conf
@@ -113,6 +113,9 @@
 # Increase shared memory segment limit for plugins rendering large areas
 kernel.shmmax = 134217728
 
+# Disable ebpf syscall for unprivileged users.
+kernel.unprivileged_bpf_disabled = 1
+
 # Enable crash reporting for setuid programs too.
 fs.suid_dumpable = 2
 
diff --git a/chromeos-base/chromeos-base/files/udev-rules/99-powerd-proximity.rules b/chromeos-base/chromeos-base/files/udev-rules/99-powerd-proximity.rules
new file mode 100644
index 0000000..e16b369
--- /dev/null
+++ b/chromeos-base/chromeos-base/files/udev-rules/99-powerd-proximity.rules
@@ -0,0 +1,4 @@
+ACTION=="add", SUBSYSTEM=="iio", ATTR{name}=="sx9310|sx9311|sx932x|cros-ec-mkbp-proximity", \
+ATTR{label}=="proximity-*" \
+  SYMLINK+="%s{label}" \
+  GROUP="power"
diff --git a/chromeos-base/chromeos-base/files/udev-rules/99-powerd-sx9310.rules b/chromeos-base/chromeos-base/files/udev-rules/99-powerd-sx9310.rules
deleted file mode 100644
index 9966094..0000000
--- a/chromeos-base/chromeos-base/files/udev-rules/99-powerd-sx9310.rules
+++ /dev/null
@@ -1,4 +0,0 @@
-ACTION=="add", SUBSYSTEM=="iio", ATTR{name}=="sx9310|sx9311", \
-ATTR{label}=="proximity-*" \
-  SYMLINK+="%s{label}" \
-  GROUP="power"
diff --git a/chromeos-base/chromeos-chrome/OWNERS b/chromeos-base/chromeos-chrome/OWNERS
new file mode 100644
index 0000000..4f139fe
--- /dev/null
+++ b/chromeos-base/chromeos-chrome/OWNERS
@@ -0,0 +1 @@
+chromeos-ci-prod@chromeos-bot.iam.gserviceaccount.com
diff --git a/chromeos-base/chromeos-chrome/chromeos-chrome-89.0.4387.0_rc-r1.ebuild b/chromeos-base/chromeos-chrome/chromeos-chrome-89.0.4387.0_rc-r1.ebuild
deleted file mode 100644
index 8072a38..0000000
--- a/chromeos-base/chromeos-chrome/chromeos-chrome-89.0.4387.0_rc-r1.ebuild
+++ /dev/null
@@ -1,1378 +0,0 @@
-# Copyright 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# Usage: by default, downloads chromium browser from the build server.
-# If CHROME_ORIGIN is set to one of {SERVER_SOURCE, LOCAL_SOURCE, LOCAL_BINARY},
-# the build comes from the chromimum source repository (gclient sync),
-# build server, locally provided source, or locally provided binary.
-# If you are using SERVER_SOURCE, a gclient template file that is in the files
-# directory which will be copied automatically during the build and used as
-# the .gclient for 'gclient sync'.
-# If building from LOCAL_SOURCE or LOCAL_BINARY specifying BUILDTYPE
-# will allow you to specify "Debug" or another build type; "Release" is
-# the default.
-
-EAPI=7
-
-# TODO(crbug.com/984182): We force Python 2 because depot_tools doesn't support Python 3.
-PYTHON_COMPAT=( python2_7 )
-inherit autotest-deponly binutils-funcs chromium-source cros-credentials cros-constants cros-sanitizers eutils flag-o-matic git-2 multilib toolchain-funcs user python-any-r1
-
-DESCRIPTION="Open-source version of Google Chrome web browser"
-HOMEPAGE="http://www.chromium.org/"
-SRC_URI=""
-
-LICENSE="BSD-Google chrome_internal? ( Google-TOS )"
-SLOT="0"
-KEYWORDS="*"
-IUSE="
-	+afdo_use
-	afdo_verify
-	+accessibility
-	app_shell
-	asan
-	+authpolicy
-	+build_tests
-	cdm_factory_daemon
-	+chrome_debug
-	+cfi
-	cfm
-	chrome_debug_tests
-	chrome_dcheck
-	chrome_internal
-	chrome_media
-	+chrome_remoting
-	clang_tidy
-	component_build
-	+debug_fission
-	+fonts
-	goma
-	goma_thinlto
-	+highdpi
-	internal_gles_conform
-	+libcxx
-	mojo
-	msan
-	+nacl
-	neon
-	oobe_config
-	opengl
-	opengles
-	orderfile_generate
-	+orderfile_use
-	orderfile_verify
-	+runhooks
-	strict_toolchain_checks
-	+thinlto
-	touchview
-	ubsan
-	v4l2_codec
-	v4lplugin
-	vaapi
-	verbose
-	vtable_verify
-	xkbcommon
-	"
-REQUIRED_USE="
-	cfi? ( thinlto )
-	afdo_verify? ( !afdo_use )
-	orderfile_generate? ( !orderfile_use )
-	"
-
-OZONE_PLATFORM_PREFIX=ozone_platform_
-OZONE_PLATFORMS=(gbm cast headless egltest caca)
-IUSE_OZONE_PLATFORMS="${OZONE_PLATFORMS[@]/#/${OZONE_PLATFORM_PREFIX}}"
-IUSE+=" ${IUSE_OZONE_PLATFORMS}"
-OZONE_PLATFORM_DEFAULT_PREFIX=ozone_platform_default_
-IUSE_OZONE_PLATFORM_DEFAULTS="${OZONE_PLATFORMS[@]/#/${OZONE_PLATFORM_DEFAULT_PREFIX}}"
-IUSE+=" ${IUSE_OZONE_PLATFORM_DEFAULTS}"
-REQUIRED_USE+=" ^^ ( ${IUSE_OZONE_PLATFORM_DEFAULTS} )"
-
-# The gclient hooks that run in src_prepare hit the network.
-# https://crbug.com/731905
-RESTRICT="network-sandbox mirror"
-
-# Do not strip the nacl_helper_bootstrap binary because the binutils
-# objcopy/strip mangles the ELF program headers.
-# TODO(mcgrathr,vapier): This should be removed after portage's prepstrip
-# script is changed to use eu-strip instead of objcopy and strip.
-STRIP_MASK+=" */nacl_helper_bootstrap"
-
-# Portage version without optional portage suffix.
-CHROME_VERSION="${PV/_*/}"
-
-# chrome destination directory
-CHROME_DIR=/opt/google/chrome
-D_CHROME_DIR="${D}/${CHROME_DIR}"
-
-# For compilation/local chrome
-BUILDTYPE="${BUILDTYPE:-Release}"
-BOARD="${BOARD:-${SYSROOT##/build/}}"
-BUILD_OUT="${BUILD_OUT:-out_${BOARD}}"
-# WARNING: We are using a symlink now for the build directory to work around
-# command line length limits. This will cause problems if you are doing
-# parallel builds of different boards/variants.
-# Unsetting BUILD_OUT_SYM will revert this behavior
-BUILD_OUT_SYM="c"
-
-UNVETTED_ORDERFILE_LOCATION=${AFDO_GS_DIRECTORY:-"gs://chromeos-toolchain-artifacts/orderfile/unvetted"}
-
-# The following entry will be modified automatically for verifying orderfile or AFDO profile.
-UNVETTED_ORDERFILE=""
-UNVETTED_AFDO_FILE=""
-
-add_orderfiles() {
-	# For verify orderfile, only for a toolchain special build.
-	if [[ -n ${UNVETTED_ORDERFILE} ]]; then
-		SRC_URI+=" orderfile_verify? ( ${UNVETTED_ORDERFILE_LOCATION}/${UNVETTED_ORDERFILE}.xz )"
-	fi
-}
-
-add_orderfiles
-
-RDEPEND="${RDEPEND}
-	app-arch/bzip2
-	app-crypt/mit-krb5
-	app-misc/edid-decode
-	authpolicy? ( chromeos-base/authpolicy )
-	~chromeos-base/chrome-icu-${PV}
-	chromeos-base/gestures
-	chromeos-base/libevdev
-	fonts? ( chromeos-base/chromeos-fonts )
-	chrome_internal? ( chromeos-base/quickoffice )
-	dev-libs/nspr
-	>=dev-libs/nss-3.12.2
-	>=media-libs/alsa-lib-1.0.19
-	media-libs/fontconfig
-	media-libs/libsync
-	x11-libs/libdrm
-	ozone_platform_gbm? ( media-libs/minigbm )
-	v4lplugin? ( media-libs/libv4lplugins )
-	>=media-sound/adhd-0.0.1-r310
-	net-print/cups
-	opengl? ( virtual/opengl )
-	opengles? ( virtual/opengles )
-	sys-apps/dbus
-	sys-apps/pciutils
-	virtual/udev
-	sys-libs/libcap
-	chrome_remoting? ( sys-libs/pam )
-	vaapi? ( x11-libs/libva )
-	xkbcommon? (
-		x11-libs/libxkbcommon
-		x11-misc/xkeyboard-config
-	)
-	accessibility? (
-		app-accessibility/brltty
-		app-accessibility/espeak-ng
-		app-accessibility/googletts
-	)
-	libcxx? (
-		sys-libs/libcxxabi
-		sys-libs/libcxx
-	)
-	oobe_config? ( chromeos-base/oobe_config )
-	"
-
-DEPEND="${DEPEND}
-	${RDEPEND}
-	chromeos-base/protofiles
-	>=dev-util/gperf-3.0.3
-	>=dev-util/pkgconfig-0.23
-	arm? ( x11-libs/libdrm )
-"
-
-PATCHES=()
-
-AUTOTEST_COMMON="src/chrome/test/chromeos/autotest/files"
-AUTOTEST_DEPS="${AUTOTEST_COMMON}/client/deps"
-AUTOTEST_DEPS_LIST="chrome_test telemetry_dep"
-
-IUSE="${IUSE} +autotest"
-
-
-QA_TEXTRELS="*"
-QA_EXECSTACK="*"
-QA_PRESTRIPPED="*"
-
-use_nacl() {
-	# 32bit asan conflicts with nacl: crosbug.com/38980
-	! (use asan && [[ ${ARCH} == "x86" ]]) && \
-	! use component_build && use nacl
-}
-
-# Like the `usex` helper:
-# Usage: echox [int] [echo-if-true] [echo-if-false]
-# If [int] is 0, then echo the 2nd arg (default of yes), else
-# echo the 3rd arg (default of no).
-echox() {
-	# Like the `usex` helper.
-	[[ ${1:-$?} -eq 0 ]] && echo "${2:-yes}" || echo "${3:-no}"
-}
-echotf() { echox ${1:-$?} true false ; }
-usetf()  { usex $1 true false ; }
-
-use_goma() {
-	[[ "${USE_GOMA:-$(usetf goma)}" == "true" ]]
-}
-should_upload_build_logs() {
-	[[ -n "${GOMA_TMP_DIR}" && -n "${GLOG_log_dir}" && \
-		"${GLOG_log_dir}" == "${GOMA_TMP_DIR}"* ]]
-}
-
-set_build_args() {
-	# use goma_thinlto says that if we are using Goma and ThinLTO, use
-	# Goma for distributed code generation. So only set the corresponding
-	# gn arg to true if all three conditions are met.
-	use_goma_thin_lto=$(use goma_thinlto && use_goma && use thinlto; echotf)
-	BUILD_ARGS=(
-		"is_chromeos_device=true"
-		# is_official_build sometimes implies extra optimizations (e.g. it will allow
-		# ThinLTO to optimize more aggressively, if ThinLTO is enabled). Please note
-		# that, despite the name, it should be usable by external users.
-		#
-		# Sanitizers don't like official builds.
-		"is_official_build=$(use_sanitizers false true)"
-
-		"is_debug=false"
-		"${EXTRA_GN_ARGS}"
-		"use_chromeos_protected_media=$(usetf cdm_factory_daemon)"
-		"use_v4l2_codec=$(usetf v4l2_codec)"
-		"use_v4lplugin=$(usetf v4lplugin)"
-		"use_vaapi=$(usetf vaapi)"
-		"use_xkbcommon=$(usetf xkbcommon)"
-		"enable_remoting=$(usetf chrome_remoting)"
-		"enable_nacl=$(use_nacl; echotf)"
-		# use_system_minigbm is set below.
-
-		"is_cfm=$(usetf cfm)"
-
-		# Clang features.
-		"is_asan=$(usetf asan)"
-		"is_msan=$(usetf msan)"
-		"is_ubsan=$(usetf ubsan)"
-		"is_clang=true"
-		"use_thin_lto=$(usetf thinlto)"
-		"use_goma_thin_lto=${use_goma_thin_lto}"
-		"is_cfi=$(usetf cfi)"
-
-		# Assistant integration tests are only run on the Chromium bots,
-		# but they increase the size of libassistant.so by 1.3MB so we
-		# disable them here.
-		"enable_assistant_integration_tests=false"
-	)
-
-	# BUILD_STRING_ARGS needs appropriate quoting. So, we keep them separate and
-	# add them to BUILD_ARGS at the end.
-	BUILD_STRING_ARGS=(
-		"target_sysroot=${SYSROOT}"
-		"system_libdir=$(get_libdir)"
-		"pkg_config=$(tc-getPKG_CONFIG)"
-		"target_os=chromeos"
-		"host_pkg_config=$(tc-getBUILD_PKG_CONFIG)"
-		"clang_diagnostic_dir=/tmp/clang_crash_diagnostics"
-	)
-	use internal_gles_conform && BUILD_ARGS+=( "internal_gles2_conform_tests=true" )
-
-	# Ozone platforms.
-	local platform
-	for platform in ${OZONE_PLATFORMS[@]}; do
-		local flag="${OZONE_PLATFORM_DEFAULT_PREFIX}${platform}"
-		if use "${flag}"; then
-			BUILD_STRING_ARGS+=( "ozone_platform=${platform}" )
-		fi
-	done
-	BUILD_ARGS+=(
-		"ozone_auto_platforms=false"
-	)
-	for platform in ${IUSE_OZONE_PLATFORMS}; do
-		if use "${platform}"; then
-			BUILD_ARGS+=( "${platform}=true" )
-		fi
-	done
-	if use "ozone_platform_gbm"; then
-		BUILD_ARGS+=( "use_system_minigbm=true" )
-		BUILD_ARGS+=( "use_system_libdrm=true" )
-	fi
-	if use "touchview"; then
-		BUILD_ARGS+=( "subpixel_font_rendering_disabled=true" )
-	fi
-
-	# Set proper build args for the arch
-	case "${ARCH}" in
-	x86)
-		BUILD_STRING_ARGS+=( "target_cpu=x86" )
-		;;
-	arm)
-		BUILD_ARGS+=(
-			"arm_use_neon=$(usetf neon)"
-			# To workaround the 4GB debug limit. crbug.com/792999.
-			"blink_symbol_level=1"
-		)
-		BUILD_STRING_ARGS+=(
-			"target_cpu=arm"
-			"arm_float_abi=hard"
-		)
-		local arm_arch=$(get-flag march)
-		if [[ -n "${arm_arch}" ]]; then
-			BUILD_STRING_ARGS+=( "arm_arch=${arm_arch}" )
-		fi
-		;;
-	arm64)
-		BUILD_STRING_ARGS+=(
-			"target_cpu=arm64"
-		)
-		local arm_arch=$(get-flag march)
-		if [[ -n "${arm_arch}" ]]; then
-			BUILD_STRING_ARGS+=( "arm_arch=${arm_arch}" )
-		fi
-		;;
-	amd64)
-		BUILD_STRING_ARGS+=( "target_cpu=x64" )
-		;;
-	mips)
-		local mips_arch target_arch
-
-		mips_arch="$($(tc-getCPP) ${CFLAGS} ${CPPFLAGS} -E -P - <<<_MIPS_ARCH)"
-		# Strip away any enclosing quotes.
-		mips_arch="${mips_arch//\"}"
-		# TODO(benchan): Use tc-endian from toolchain-func to determine endianess
-		# when Chrome later cares about big-endian.
-		case "${mips_arch}" in
-		mips64*)
-			target_arch=mips64el
-			;;
-		*)
-			target_arch=mipsel
-			;;
-		esac
-
-		BUILD_STRING_ARGS+=(
-			"target_cpu=${target_arch}"
-			"mips_arch_variant=${mips_arch}"
-		)
-		;;
-	*)
-		die "Unsupported architecture: ${ARCH}"
-		;;
-	esac
-
-	if use chrome_internal; then
-		# Adding chrome branding specific variables.
-		BUILD_ARGS+=( "is_chrome_branded=true" )
-		# This test can only be build from internal sources.
-		BUILD_ARGS+=( "internal_gles2_conform_tests=true" )
-		export CHROMIUM_BUILD='_google_Chrome'
-		export OFFICIAL_BUILD='1'
-		export CHROME_BUILD_TYPE='_official'
-	elif use chrome_media; then
-		echo "Building Chromium with additional media codecs and containers."
-		BUILD_ARGS+=( "proprietary_codecs=true" )
-		BUILD_STRING_ARGS+=( "ffmpeg_branding=ChromeOS" )
-	fi
-
-	if use component_build; then
-		BUILD_ARGS+=( "is_component_build=true" )
-	fi
-	if use_goma; then
-		BUILD_ARGS+=( "use_goma=true" )
-		BUILD_STRING_ARGS+=( "goma_dir=${GOMA_DIR:-/home/${WHOAMI}/goma}" )
-
-		# Goma compiler proxy runs outside of portage build.
-		# Practically, because TMPDIR is set in portage, it is
-		# different from the directory used when the compiler proxy
-		# started.
-		# If GOMA_TMP_DIR is not set, the compiler proxy uses
-		# TMPDIR/goma_${WHOAMI} for its tmpdir as fallback, which
-		# causes unexpected behavior.
-		# Specifically, named socket used to communicate with compiler
-		# proxy is ${GOMA_TMP_DIR}/goma.ipc by default, so the compiler
-		# proxy cannot be reached.
-		# Thus, here set GOMA_TMP_DIR to /tmp/goma_${WHOAMI} if it is
-		# not yet set.
-		if [[ -z "${GOMA_TMP_DIR}" ]]; then
-			export GOMA_TMP_DIR="/tmp/goma_${WHOAMI}"
-		fi
-	fi
-
-	if use chrome_debug; then
-		# Use debug fission to avoid 4GB limit of ELF32 (see crbug.com/595763).
-		# Using -g1 causes problems with crash server (see crbug.com/601854).
-		# Set use_debug_fission=true to prevent slow link (see crbug.com/703468).
-		# Disable debug_fission for bots which generate Afdo profile. (see crbug.com/704602).
-		BUILD_ARGS+=(
-			"use_debug_fission=$(usetf debug_fission)"
-			"symbol_level=2"
-		)
-		if use debug_fission; then
-			# The breakpad cannot handle the debug files generated by
-			# llvm and debug fission properly. crosbug.com/710605
-			append-flags -fno-split-dwarf-inlining
-		fi
-	fi
-
-	if use chrome_dcheck; then
-		BUILD_ARGS+=("dcheck_always_on=true")
-	fi
-}
-
-unpack_chrome() {
-	# Add depot_tools to PATH, local chroot builds fail otherwise.
-	export PATH=${PATH}:${DEPOT_TOOLS}
-
-	local cmd=( "${CHROMITE_BIN_DIR}"/sync_chrome )
-	use chrome_internal && cmd+=( --internal )
-	if [[ "${CHROME_VERSION}" != "9999" ]]; then
-		cmd+=( "--tag=${CHROME_VERSION}" )
-	fi
-	# --reset tells sync_chrome to blow away local changes and to feel
-	# free to delete any directories that get in the way of syncing. This
-	# is needed for unattended operation.
-	cmd+=( --reset "--gclient=${EGCLIENT}" "${CHROME_DISTDIR}" )
-	elog "${cmd[*]}"
-	# TODO(crbug.com/1103048): Disable the sandbox when syncing the code.
-	# It seems to break gclient execution at random for unknown reasons.
-	# Children stop being tracked, or no git repos actually get cloned.
-	SANDBOX_ON=0 "${cmd[@]}" || die
-}
-
-decide_chrome_origin() {
-	if [[ "${PV}" == "9999" ]]; then
-		# LOCAL_SOURCE is the default for cros_workon.
-		# Warn the user if CHROME_ORIGIN is already set.
-		if [[ -n "${CHROME_ORIGIN}" && "${CHROME_ORIGIN}" != LOCAL_SOURCE ]]; then
-			ewarn "CHROME_ORIGIN is already set to ${CHROME_ORIGIN}."
-			ewarn "This will prevent you from building from your local checkout."
-			ewarn "Please run 'unset CHROME_ORIGIN' to reset Chrome"
-			ewarn "to the default source location."
-		fi
-		: "${CHROME_ORIGIN:=LOCAL_SOURCE}"
-	else
-		# By default, pull from server.
-		: "${CHROME_ORIGIN:=SERVER_SOURCE}"
-	fi
-}
-
-sandboxless_ensure_directory() {
-	local dir
-	for dir in "$@"; do
-		if [[ ! -d "${dir}" ]] ; then
-			# We need root access to create these directories, so we need to
-			# use sudo. This implicitly disables the sandbox.
-			sudo mkdir -p "${dir}" || die
-			sudo chown "${PORTAGE_USERNAME}:portage" "${dir}" || die
-			sudo chmod 0755 "${dir}" || die
-		fi
-	done
-}
-
-src_unpack() {
-	echo
-	ewarn "If you want to develop or hack on the browser itself, you should follow the"
-	ewarn "simple chrome workflow instead of using emerge:"
-	ewarn "https://chromium.googlesource.com/chromiumos/docs/+/master/simple_chrome_workflow.md"
-	echo
-
-	tc-export CC CXX
-	local WHOAMI=$(whoami)
-
-	CHROME_SRC="chrome-src"
-	if use chrome_internal; then
-		CHROME_SRC+="-internal"
-	fi
-
-	# CHROME_CACHE_DIR is used for storing output artifacts, and is always a
-	# regular directory inside the chroot (i.e. it's never mounted in, so it's
-	# always safe to use cp -al for these artifacts).
-	: "${CHROME_CACHE_DIR:="/var/cache/chromeos-chrome/${CHROME_SRC}"}"
-	addwrite "${CHROME_CACHE_DIR}"
-
-	# CHROME_DISTDIR is used for storing the source code, if any source code
-	# needs to be unpacked at build time (e.g. in the SERVER_SOURCE scenario.)
-	# It will be mounted into the chroot, so it is never safe to use cp -al
-	# for these files.
-	: "${CHROME_DISTDIR:="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/${CHROME_SRC}"}"
-	addwrite "${CHROME_DISTDIR}"
-
-	# Create storage directories.
-	sandboxless_ensure_directory "${CHROME_DISTDIR}" "${CHROME_CACHE_DIR}"
-
-	cros-credentials_setup
-
-	decide_chrome_origin
-
-	case "${CHROME_ORIGIN}" in
-	LOCAL_SOURCE|SERVER_SOURCE|LOCAL_BINARY)
-		elog "CHROME_ORIGIN VALUE is ${CHROME_ORIGIN}"
-		;;
-	*)
-		die "CHROME_ORIGIN not one of LOCAL_SOURCE, SERVER_SOURCE, LOCAL_BINARY"
-		;;
-	esac
-
-	# Prepare and set CHROME_ROOT based on CHROME_ORIGIN.
-	# CHROME_ROOT is the location where the source code is used for compilation.
-	# If we're in SERVER_SOURCE mode, CHROME_ROOT is CHROME_DISTDIR. In LOCAL_SOURCE
-	# mode, this directory may be set manually to any directory. It may be mounted
-	# into the chroot, so it is not safe to use cp -al for these files.
-	# These are set here because $(whoami) returns the proper user here,
-	# but 'root' at the root level of the file
-	case "${CHROME_ORIGIN}" in
-	(SERVER_SOURCE)
-		elog "Using CHROME_VERSION = ${CHROME_VERSION}"
-		if [[ ${WHOAMI} == "chrome-bot" ]]; then
-			# TODO: Should add a sanity check that the version checked out is
-			# what we actually want.  Not sure how to do that though.
-			elog "Skipping syncing as cbuildbot ran SyncChrome for us."
-		else
-			unpack_chrome
-		fi
-
-		elog "set the chrome source root to ${CHROME_DISTDIR}"
-		elog "From this point onwards there is no difference between \
-			SERVER_SOURCE and LOCAL_SOURCE, since the fetch is done"
-		CHROME_ROOT=${CHROME_DISTDIR}
-		;;
-	(LOCAL_SOURCE)
-		: ${CHROME_ROOT:=/home/${WHOAMI}/chrome_root}
-		if [[ ! -d "${CHROME_ROOT}/src" ]]; then
-			die "${CHROME_ROOT} does not contain a valid chromium checkout!"
-		fi
-		addwrite "${CHROME_ROOT}"
-		;;
-	esac
-
-	case "${CHROME_ORIGIN}" in
-	LOCAL_SOURCE|SERVER_SOURCE)
-		set_build_args
-		;;
-	esac
-
-	# FIXME: This is the normal path where ebuild stores its working data.
-	# Chrome builds inside distfiles because of speed, so we at least make
-	# a symlink here to add compatibility with autotest eclass which uses this.
-	ln -sf "${CHROME_ROOT}" "${WORKDIR}/${P}"
-
-	if use internal_gles_conform; then
-		local CHROME_GLES2_CONFORM=${CHROME_ROOT}/src/third_party/gles2_conform
-		local CROS_GLES2_CONFORM=/home/${WHOAMI}/trunk/src/third_party/gles2_conform
-		if [[ ! -d "${CHROME_GLES2_CONFORM}" ]]; then
-			if [[ -d "${CROS_GLES2_CONFORM}" ]]; then
-				ln -s "${CROS_GLES2_CONFORM}" "${CHROME_GLES2_CONFORM}"
-				einfo "Using GLES2 conformance test suite from ${CROS_GLES2_CONFORM}"
-			else
-				die "Trying to build GLES2 conformance test suite without ${CHROME_GLES2_CONFORM} or ${CROS_GLES2_CONFORM}"
-			fi
-		fi
-	fi
-
-	if use afdo_use; then
-		# Use AFDO profile downloaded in Chromium source code
-		# If needed profiles other than "silvermont", please set the variable
-		# ${AFDO_PROFILE_SOURCE} accordingly.
-		local afdo_src="${AFDO_PROFILE_SOURCE:-atom}"
-		BUILD_ARGS+=( "clang_use_default_sample_profile=true" )
-		BUILD_STRING_ARGS+=( "chromeos_afdo_platform=${afdo_src}" )
-	fi
-
-	# Use to verify a local unvetted AFDO file.
-	if use afdo_verify; then
-		if [[ ! -e "${UNVETTED_AFDO_FILE}" ]]; then
-			die "Cannot find ${UNVETTED_AFDO_FILE} to build Chrome."
-		fi
-		BUILD_STRING_ARGS+=( "clang_sample_profile_path=${UNVETTED_AFDO_FILE}" )
-	fi
-
-	# Unpack unvetted orderfile.
-	if use orderfile_verify; then
-		local orderfile_dir="${WORKDIR}/orderfile"
-		mkdir "${orderfile_dir}"
-		local orderfile_file=${UNVETTED_ORDERFILE}
-		(cd "${orderfile_dir}" && unpack "${orderfile_file}.xz") || die
-
-		local orderfile_loc="${orderfile_dir}/${orderfile_file}"
-		einfo "Using ${orderfile_loc} as orderfile for ordering Chrome"
-
-		# Pass the path to orderfile to GN args.
-		BUILD_STRING_ARGS+=( "chrome_orderfile_path=${orderfile_loc}" )
-	fi
-
-	if ! use orderfile_use; then
-		# If not using orderfile, override the default orderfile path to empty.
-		BUILD_STRING_ARGS+=( "chrome_orderfile_path=" )
-	fi
-}
-
-add_api_keys() {
-	# awk script to extract the values out of the file.
-	local EXTRACT="{ gsub(/[',]/, \"\", \$2); print \$2 }"
-	local api_key=$(awk "/google_api_key/ ${EXTRACT}" "$1")
-	local client_id=$(awk "/google_default_client_id/ ${EXTRACT}" "$1")
-	local client_secret=$(awk "/google_default_client_secret/ ${EXTRACT}" "$1")
-
-	BUILD_STRING_ARGS+=(
-		"google_api_key=${api_key}"
-		"google_default_client_id=${client_id}"
-		"google_default_client_secret=${client_secret}"
-	)
-}
-
-src_prepare() {
-	# Must call eapply_user in EAPI 7, but this function is a no-op here.
-	eapply_user
-
-	if [[ "${CHROME_ORIGIN}" != "LOCAL_SOURCE" &&
-			"${CHROME_ORIGIN}" != "SERVER_SOURCE" ]]; then
-		return
-	fi
-
-	elog "${CHROME_ROOT} should be set here properly"
-	cd "${CHROME_ROOT}/src" || die "Cannot chdir to ${CHROME_ROOT}"
-
-	# We do symlink creation here if appropriate.
-	mkdir -p "${CHROME_CACHE_DIR}/src/${BUILD_OUT}"
-	if [[ ! -z "${BUILD_OUT_SYM}" ]]; then
-		rm -rf "${BUILD_OUT_SYM}" || die "Could not remove symlink"
-		ln -sfT "${CHROME_CACHE_DIR}/src/${BUILD_OUT}" "${BUILD_OUT_SYM}" ||
-			die "Could not create symlink for output directory"
-	fi
-
-
-	# Apply patches for non-localsource builds.
-	if [[ "${CHROME_ORIGIN}" == "SERVER_SOURCE" && ${#PATCHES[@]} -gt 0 ]]; then
-		eapply "${PATCHES[@]}"
-	fi
-
-	local WHOAMI=$(whoami)
-	# Get the credentials to fake home directory so that the version of chromium
-	# we build can access Google services. First, check for Chrome credentials.
-	if [[ ! -d google_apis/internal ]]; then
-		# Then look for Chrome OS supplied credentials.
-		local PRIVATE_OVERLAYS_DIR=/home/${WHOAMI}/trunk/src/private-overlays
-		local GAPI_CONFIG_FILE=${PRIVATE_OVERLAYS_DIR}/chromeos-overlay/googleapikeys
-		if [[ ! -f "${GAPI_CONFIG_FILE}" ]]; then
-			# Then developer credentials.
-			GAPI_CONFIG_FILE=/home/${WHOAMI}/.googleapikeys
-		fi
-		if [[ -f "${GAPI_CONFIG_FILE}" ]]; then
-			add_api_keys "${GAPI_CONFIG_FILE}"
-		fi
-	fi
-}
-
-setup_test_lists() {
-	TEST_FILES=(
-		capture_unittests
-		dawn_end2end_tests
-		dawn_unittests
-		gl_tests
-		jpeg_decode_accelerator_unittest
-		jpeg_encode_accelerator_unittest
-		ozone_gl_unittests
-		sandbox_linux_unittests
-		video_decode_accelerator_perf_tests
-		video_decode_accelerator_tests
-		video_encode_accelerator_perf_tests
-		video_encode_accelerator_tests
-		# TODO(crbug.com/1045825): Remove video_encode_accelerator_unittest.
-		video_encode_accelerator_unittest
-		wayland_client_perftests
-	)
-
-	TEST_FILES+=( ppapi/examples/video_decode )
-
-	if use vaapi; then
-		TEST_FILES+=(
-			decode_test
-			vaapi_unittest
-		)
-	fi
-
-	# TODO(ihf): Figure out how to keep this in sync with telemetry.
-	TOOLS_TELEMETRY_BIN=(
-		bitmaptools
-		clear_system_cache
-		minidump_stackwalk
-	)
-
-	PPAPI_TEST_FILES=(
-		lib{32,64}
-		mock_nacl_gdb
-		ppapi_nacl_tests_{newlib,glibc}.nmf
-		ppapi_nacl_tests_{newlib,glibc}_{x32,x64,arm,arm64}.nexe
-		test_case.html
-		test_case.html.mock-http-headers
-		test_page.css
-		test_url_loader_data
-	)
-}
-
-# Handle all CFLAGS/CXXFLAGS/etc... munging here.
-setup_compile_flags() {
-	# Chrome controls its own optimization settings, so this would be a nop
-	# if we were to run it. Leave it here anyway as a grep-friendly marker.
-	# cros_optimize_package_for_speed
-
-	# The chrome makefiles specify -O and -g flags already, so remove the
-	# portage flags.
-	filter-flags -g "-O*"
-
-	# Remove unsupported arm64 linker flag on arm32 builds.
-	# https://crbug.com/889079
-	use arm && filter-flags "-Wl,--fix-cortex-a53-843419"
-
-	# There are some flags we want to only use in the ebuild.
-	# The rest will be exported to the simple chrome workflow.
-	EBUILD_CFLAGS=()
-	EBUILD_CXXFLAGS=()
-	EBUILD_LDFLAGS=()
-
-	# LLVM needs this when parsing profiles.
-	# See README on https://github.com/google/autofdo
-	# For ARM, we do not need this flag because we don't get profiles
-	# from ARM machines. And it triggers an llvm assertion when thinlto
-	# and debug fission is used together.
-	# See https://bugs.llvm.org/show_bug.cgi?id=37255
-	use arm || append-flags -fdebug-info-for-profiling
-
-	if use thinlto; then
-		if use arm; then
-			EBUILD_LDFLAGS+=( -gsplit-dwarf )
-		fi
-		# if using thinlto, we need to pass the equivalent of
-		# -fdebug-types-section to the backend, to prevent out-of-range
-		# relocations (see
-		# https://bugs.chromium.org/p/chromium/issues/detail?id=1032159).
-		append-ldflags -Wl,-mllvm
-		append-ldflags -Wl,-generate-type-units
-	else
-		# Non-ThinLTO builds with symbol_level=2 may have out-of-range
-		# relocations, too: crbug.com/1050819.
-		append-flags -fdebug-types-section
-	fi
-
-	if use orderfile_generate; then
-		local chrome_outdir="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
-		BUILD_STRING_ARGS+=( "dump_call_chain_clustering_order=${chrome_outdir}/chrome.orderfile.txt" )
-		# Enable call graph profile sort (C3) to generate orderfile.
-		BUILD_ARGS+=( "enable_call_graph_profile_sort=true" )
-	fi
-
-	# Enable std::vector []-operator bounds checking.
-	append-cxxflags -D__google_stl_debug_vector=1
-
-	# Chrome and Chrome OS versions of the compiler may not be in
-	# sync. So, don't complain if Chrome uses a diagnostic
-	# option that is not yet implemented in the compiler version used
-	# by Chrome OS.
-	# Turns out this is only really supported by Clang. See crosbug.com/615466
-	# Add "-faddrsig" flag required to efficiently support "--icf=all".
-	append-flags -faddrsig
-	append-flags -Wno-unknown-warning-option
-	export CXXFLAGS_host+=" -Wno-unknown-warning-option"
-	export CFLAGS_host+=" -Wno-unknown-warning-option"
-	if use libcxx; then
-		append-cxxflags "-stdlib=libc++"
-		append-ldflags "-stdlib=libc++"
-	fi
-
-	# Workaround: Disable fatal linker warnings on arm64/lld.
-	# https://crbug.com/913071
-	use arm64 && append-ldflags "-Wl,--no-fatal-warnings"
-	use vtable_verify && append-ldflags -fvtable-verify=preinit
-
-	local flags
-	einfo "Building with the compiler settings:"
-	for flags in {C,CXX,CPP,LD}FLAGS; do
-		einfo "  ${flags} = ${!flags}"
-	done
-}
-
-src_configure() {
-	tc-export CXX CC AR AS NM RANLIB STRIP
-	export CC_host=$(tc-getBUILD_CC)
-	export CXX_host=$(tc-getBUILD_CXX)
-	export NM_host=$(tc-getBUILD_NM)
-	export READELF="llvm-readelf"
-	export READELF_host="llvm-readelf"
-
-	# Use C++ compiler as the linker driver.
-	export LD="${CXX}"
-	export LD_host=${CXX_host}
-
-	# We need below change when USE="thinlto" is set. We set this globally
-	# so that users can turn on the "use_thin_lto" in the simplechrome
-	# flow more easily.
-	# use nm from llvm, https://crbug.com/917193
-	export NM="llvm-nm"
-	export NM_host="llvm-nm"
-	export AR="llvm-ar"
-	# USE=thinlto affects host build, we need to set host AR to
-	# llvm-ar to make sure host package builds with thinlto.
-	# crbug.com/731335
-	export AR_host="llvm-ar"
-	export RANLIB="llvm-ranlib"
-	# Use llvm's objcopy instead of GNU
-	export OBJCOPY="llvm-objcopy"
-
-	# Set binutils path for goma.
-	CC_host+=" -B$(get_binutils_path "${LD_host}")"
-	CXX_host+=" -B$(get_binutils_path "${LD_host}")"
-
-	setup_compile_flags
-
-	# We might set BOTO_CONFIG in the builder environment in case the
-	# existing file needs modifications (e.g. for working with older
-	# branches). So don't overwrite it if it's already set.
-	# See https://crbug.com/847676 for details.
-	export BOTO_CONFIG="${BOTO_CONFIG:-/home/$(whoami)/.boto}"
-	export PATH=${PATH}:${DEPOT_TOOLS}
-
-	export DEPOT_TOOLS_GSUTIL_BIN_DIR="${CHROME_CACHE_DIR}/gsutil_bin"
-	# The venv logic seems to misbehave when cross-compiling.  Since our SDK
-	# should include all the necessary modules, just disable it (for now).
-	# https://crbug.com/808434
-	export VPYTHON_BYPASS="manually managed python not supported by chrome operations"
-
-	# TODO(rcui): crosbug.com/20435. Investigate removal of runhooks
-	# useflag when chrome build switches to Ninja inside the chroot.
-	if use runhooks; then
-		local cmd=( "${EGCLIENT}" runhooks --force )
-		echo "${cmd[@]}"
-		CFLAGS="${CFLAGS} ${EBUILD_CFLAGS[*]}" \
-		CXXFLAGS="${CXXFLAGS} ${EBUILD_CXXFLAGS[*]}" \
-		LDFLAGS="${LDFLAGS} ${EBUILD_LDFLAGS[*]}" \
-		"${cmd[@]}" || die
-	fi
-
-	BUILD_STRING_ARGS+=(
-		"cros_target_ar=${AR}"
-		"cros_target_cc=${CC}"
-		"cros_target_cxx=${CXX}"
-		"host_toolchain=//build/toolchain/cros:host"
-		"custom_toolchain=//build/toolchain/cros:target"
-		"v8_snapshot_toolchain=//build/toolchain/cros:v8_snapshot"
-		"cros_target_ld=${LD}"
-		"cros_target_nm=${NM}"
-		"cros_target_readelf=${READELF}"
-		"cros_target_extra_cflags=${CFLAGS} ${EBUILD_CFLAGS[*]}"
-		"cros_target_extra_cppflags=${CPPFLAGS}"
-		"cros_target_extra_cxxflags=${CXXFLAGS} ${EBUILD_CXXFLAGS[*]}"
-		"cros_target_extra_ldflags=${LDFLAGS} ${EBUILD_LDFLAGS[*]}"
-		"cros_host_cc=${CC_host}"
-		"cros_host_cxx=${CXX_host}"
-		"cros_host_ar=${AR_host}"
-		"cros_host_ld=${LD_host}"
-		"cros_host_nm=${NM_host}"
-		"cros_host_readelf=${READELF_host}"
-		"cros_host_extra_cflags=${CFLAGS_host}"
-		"cros_host_extra_cxxflags=${CXXFLAGS_host}"
-		"cros_host_extra_cppflags=${CPPFLAGS_host}"
-		"cros_host_extra_ldflags=${LDFLAGS_host}"
-		"cros_v8_snapshot_cc=${CC_host}"
-		"cros_v8_snapshot_cxx=${CXX_host}"
-		"cros_v8_snapshot_ar=${AR_host}"
-		"cros_v8_snapshot_ld=${LD_host}"
-		"cros_v8_snapshot_nm=${NM_host}"
-		"cros_v8_snapshot_readelf=${READELF_host}"
-		"cros_v8_snapshot_extra_cflags=${CFLAGS_host}"
-		"cros_v8_snapshot_extra_cxxflags=${CXXFLAGS_host}"
-		"cros_v8_snapshot_extra_cppflags=${CPPFLAGS_host}"
-		"cros_v8_snapshot_extra_ldflags=${LDFLAGS_host}"
-	)
-
-	local arg
-	for arg in "${BUILD_STRING_ARGS[@]}"; do
-		BUILD_ARGS+=("${arg%%=*}=\"${arg#*=}\"")
-	done
-	export GN_ARGS="${BUILD_ARGS[*]}"
-	einfo "GN_ARGS = ${GN_ARGS}"
-	local gn=(
-		"${CHROME_ROOT}/src/buildtools/linux64/gn" gen
-		"${CHROME_ROOT}/src/${BUILD_OUT_SYM}/${BUILDTYPE}"
-		--args="${GN_ARGS}" --root="${CHROME_ROOT}/src"
-	)
-	echo "${gn[@]}"
-	"${gn[@]}" || die
-
-	setup_test_lists
-
-	if use clang_tidy; then
-		export WITH_TIDY=1
-	fi
-}
-
-chrome_make() {
-	local build_dir="${BUILD_OUT_SYM}/${BUILDTYPE}"
-
-	# If ThinLTO is enabled, we may have a cache from a previous link. Due
-	# to fears about lack of reproducibility, we don't allow cache reuse
-	# across rebuilds. The cache is still useful for artifacts shared
-	# between multiple links done by this build (e.g. tests).
-	use thinlto && rm -rf "${build_dir}/thinlto-cache"
-
-	# If goma is enabled, increase the number of parallel run to
-	# 10 * {number of processors}. Though, if it is too large the
-	# performance gets slow down, so limit by 200 heuristically.
-	if use_goma; then
-		local num_parallel=$(($(nproc) * 10))
-		local j_limit=200
-		set -- -j $((num_parallel < j_limit ? num_parallel : j_limit)) "$@"
-	fi
-	local command=(
-		${ENINJA}
-		${MAKEOPTS}
-		-C "${build_dir}"
-		$(usex verbose -v "")
-		"$@"
-	)
-	# If goma is used, log the command, cwd and env vars, which will be
-	# uploaded to the logging server.
-	if should_upload_build_logs; then
-		env --null > "${GLOG_log_dir}/ninja_env"
-		pwd > "${GLOG_log_dir}/ninja_cwd"
-		echo "${command[@]}" > "${GLOG_log_dir}/ninja_command"
-	fi
-	PATH=${PATH}:${DEPOT_TOOLS} "${command[@]}"
-	local ret=$?
-	if should_upload_build_logs; then
-		echo "${ret}" > "${GLOG_log_dir}/ninja_exit"
-		cp -p "${BUILD_OUT_SYM}/${BUILDTYPE}/.ninja_log" "${GLOG_log_dir}/ninja_log"
-	fi
-	[[ "${ret}" -eq 0 ]] || die
-
-	# Still use a script to check if the orderfile is used properly, i.e.
-	# Builtin_ functions are placed between the markers, etc.
-	if use strict_toolchain_checks && (use orderfile_use || use orderfile_verify); then
-		"${FILESDIR}/check_orderfile.py" "${build_dir}/chrome" || die
-	fi
-}
-
-src_compile() {
-	if [[ "${CHROME_ORIGIN}" != "LOCAL_SOURCE" &&
-			"${CHROME_ORIGIN}" != "SERVER_SOURCE" ]]; then
-		return
-	fi
-
-	cd "${CHROME_ROOT}"/src || die "Cannot chdir to ${CHROME_ROOT}/src"
-
-	local chrome_targets=( $(usex mojo "mojo_shell" "") )
-	if use app_shell; then
-		chrome_targets+=( app_shell )
-	else
-		chrome_targets+=( chrome )
-	fi
-	if use build_tests; then
-		chrome_targets+=(
-			"${TEST_FILES[@]}"
-			"${TOOLS_TELEMETRY_BIN[@]}"
-			chromedriver
-		)
-		if use chrome_internal; then
-			chrome_targets+=( libassistant_debug.so )
-		fi
-	fi
-	use_nacl && chrome_targets+=( nacl_helper_bootstrap nacl_helper )
-
-	chrome_make "${chrome_targets[@]}"
-
-	if use build_tests; then
-		install_chrome_test_resources "${WORKDIR}/test_src"
-		install_telemetry_dep_resources "${WORKDIR}/telemetry_src"
-
-		# NOTE: Since chrome is built inside distfiles, we have to get
-		# rid of the previous instance first.
-		# We remove only what we will overwrite with the mv below.
-		local deps="${WORKDIR}/${P}/${AUTOTEST_DEPS}"
-
-		rm -rf "${deps}/chrome_test/test_src"
-		mv "${WORKDIR}/test_src" "${deps}/chrome_test/"
-
-		rm -rf "${deps}/telemetry_dep/test_src"
-		mv "${WORKDIR}/telemetry_src" "${deps}/telemetry_dep/test_src"
-
-		# The autotest eclass wants this for some reason.
-		get_paths() { :; }
-
-		# HACK: It would make more sense to call autotest_src_prepare in
-		# src_prepare, but we need to call install_chrome_test_resources first.
-		autotest-deponly_src_prepare
-
-		# Remove .git dirs
-		find "${AUTOTEST_WORKDIR}" -type d -name .git -prune -exec rm -rf {} +
-
-		autotest_src_compile
-	fi
-}
-
-install_test_resources() {
-	# Install test resources from chrome source directory to destination.
-	# We keep a cache of test resources inside the chroot to avoid copying
-	# multiple times.
-	local test_dir="${1}"
-	einfo "install_test_resources to ${test_dir}"
-	shift
-
-	# To speed things up, we write the list of files to a temporary file so
-	# we can use rsync with --files-from.
-	local tmp_list_file="${T}/${test_dir##*/}.files"
-	printf "%s\n" "$@" > "${tmp_list_file}"
-
-	# Copy the specific files to the cache from the source directory.
-	# Note: we need to specify -r when using --files-from and -a to get a
-	# recursive copy.
-	# TODO(ihf): Make failures here fatal.
-	rsync -r -a --delete --exclude=.git --exclude="*.pyc" \
-		--files-from="${tmp_list_file}" "${CHROME_ROOT}/src/" \
-		"${CHROME_CACHE_DIR}/src/"
-
-	# Create hard links in the destination based on the cache.
-	# Note: we need to specify -r when using --files-from and -a to get a
-	# recursive copy.
-	# TODO(ihf): Make failures here fatal.
-	rsync -r -a --link-dest="${CHROME_CACHE_DIR}/src" \
-		--files-from="${tmp_list_file}" "${CHROME_CACHE_DIR}/src/" "${test_dir}/"
-}
-
-test_strip_install() {
-	local from="${1}"
-	local dest="${2}"
-	shift 2
-	mkdir -p "${dest}"
-	local f
-	for f in "$@"; do
-		$(tc-getSTRIP) --strip-debug \
-			"${from}"/${f} -o "${dest}/$(basename ${f})"
-	done
-}
-
-install_chrome_test_resources() {
-	# NOTE: This is a duplicate from src_install, because it's required here.
-	local from="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
-	local test_dir="${1}"
-	local dest="${test_dir}/out/Release"
-
-	echo Copying Chrome tests into "${test_dir}"
-
-	# Even if chrome_debug_tests is enabled, we don't need to include detailed
-	# debug info for tests in the binary package, so save some time by stripping
-	# everything but the symbol names. Developers who need more detailed debug
-	# info on the tests can use the original unstripped tests from the ${from}
-	# directory.
-	TEST_INSTALL_TARGETS=(
-		"${TEST_FILES[@]}"
-		"libppapi_tests.so" )
-
-	einfo "Installing test targets: ${TEST_INSTALL_TARGETS[@]}"
-	test_strip_install "${from}" "${dest}" "${TEST_INSTALL_TARGETS[@]}"
-
-	# Copy Chrome test data.
-	mkdir -p "${dest}"/test_data
-	# WARNING: Only copy subdirectories of |test_data|.
-	# The full |test_data| directory is huge and kills our VMs.
-	# Example:
-	# cp -al "${from}"/test_data/<subdir> "${test_dir}"/out/Release/<subdir>
-
-	# Add the fake bidi locale.
-	mkdir -p "${dest}"/pseudo_locales
-	cp -al "${from}"/pseudo_locales/fake-bidi.pak \
-		"${dest}"/pseudo_locales
-
-	for f in "${PPAPI_TEST_FILES[@]}"; do
-		cp -al "${from}/${f}" "${dest}"
-	done
-
-	# Install Chrome test resources.
-	# WARNING: Only install subdirectories of |chrome/test|.
-	# The full |chrome/test| directory is huge and kills our VMs.
-	install_test_resources "${test_dir}" \
-		base/base_paths_posix.cc \
-		chrome/test/data/chromeos \
-		chrome/test/functional \
-		chrome/third_party/mock4js/mock4js.js  \
-		content/common/gpu/testdata \
-		media/test/data \
-		content/test/data \
-		net/data/ssl/certificates \
-		ppapi/tests/test_case.html \
-		ppapi/tests/test_url_loader_data \
-		third_party/bidichecker/bidichecker_packaged.js \
-		third_party/accessibility-developer-tools/gen/axs_testing.js
-
-	# Add the pdf test data if needed.
-	if use chrome_internal; then
-		install_test_resources "${test_dir}" pdf/test
-	fi
-	# Add the gles_conform test data if needed.
-	if use chrome_internal || use internal_gles_conform; then
-		install_test_resources "${test_dir}" gpu/gles2_conform_support/gles2_conform_test_expectations.txt
-	fi
-
-	cp -a "${CHROME_ROOT}"/"${AUTOTEST_DEPS}"/chrome_test/setup_test_links.sh \
-		"${dest}"
-}
-
-install_telemetry_dep_resources() {
-	local test_dir="${1}"
-
-	TELEMETRY=${CHROME_ROOT}/src/third_party/catapult/telemetry
-	if [[ -r "${TELEMETRY}" ]]; then
-		echo "Copying Telemetry Framework into ${test_dir}"
-		mkdir -p "${test_dir}"
-		# We are going to call chromium code but can't trust that it is clean
-		# of precompiled code. See crbug.com/590762.
-		find "${TELEMETRY}" -name "*.pyc" -type f -delete
-		# Get deps from Chrome.
-		FIND_DEPS=${CHROME_ROOT}/src/tools/perf/find_dependencies
-		PERF_DEPS=${CHROME_ROOT}/src/tools/perf/bootstrap_deps
-		CROS_DEPS=${CHROME_ROOT}/src/tools/cros/bootstrap_deps
-		# sed removes the leading path including src/ converting it to relative.
-		# To avoid silent failures assert the success.
-		DEPS_LIST=$(python ${FIND_DEPS} ${PERF_DEPS} ${CROS_DEPS} | \
-			sed -e 's|^'${CHROME_ROOT}/src/'||'; assert)
-		install_test_resources "${test_dir}" "${DEPS_LIST}"
-		# For crosperf, which uses some tests only available on internal builds.
-		if use chrome_internal; then
-			install_test_resources "${test_dir}" \
-				data/page_cycler/morejs \
-				data/page_cycler/moz
-		fi
-	fi
-
-	local from="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
-	local dest="${test_dir}/src/out/${BUILDTYPE}"
-	einfo "Installing telemetry binaries: ${TOOLS_TELEMETRY_BIN[@]}"
-	test_strip_install "${from}" "${dest}" "${TOOLS_TELEMETRY_BIN[@]}"
-
-	# When copying only a portion of the Chrome source that telemetry needs,
-	# some symlinks can end up broken. Thus clean these up before packaging.
-	find -L "${test_dir}" -type l -delete
-}
-
-# Add any new artifacts generated by the Chrome build targets to deploy_chrome.py.
-# We deal with miscellaneous artifacts here in the ebuild.
-src_install() {
-	FROM="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
-
-	# Override default strip flags and lose the '-R .comment'
-	# in order to play nice with the crash server.
-	if [[ -z "${KEEP_CHROME_DEBUG_SYMBOLS}" ]]; then
-		if [[ "${STRIP}" == "llvm-strip" ]]; then
-			export PORTAGE_STRIP_FLAGS="--strip-all-gnu"
-		else
-			export PORTAGE_STRIP_FLAGS=""
-		fi
-	else
-		export PORTAGE_STRIP_FLAGS="--strip-debug"
-	fi
-	einfo "PORTAGE_STRIP_FLAGS=${PORTAGE_STRIP_FLAGS}"
-	LS=$(ls -alhS ${FROM})
-	einfo "CHROME_DIR after build\n${LS}"
-
-	# Copy a D-Bus config file that includes other configs that are installed to
-	# /opt/google/chrome/dbus by deploy_chrome.
-	insinto /etc/dbus-1/system.d
-	doins "${FILESDIR}"/chrome.conf
-
-	# Copy Quickoffice resources for official build.
-	# Quickoffice is not yet available for arm64, https://crbug.com/881489
-	if use chrome_internal && [[ "${ARCH}" != "arm64" ]]; then
-		local qo_install_root="/usr/share/chromeos-assets/quickoffice"
-		insinto "${qo_install_root}"
-		QUICKOFFICE="${CHROME_ROOT}"/src/chrome/browser/resources/chromeos/quickoffice
-		doins -r "${QUICKOFFICE}"/_locales
-		doins -r "${QUICKOFFICE}"/css
-		doins -r "${QUICKOFFICE}"/img
-		doins -r "${QUICKOFFICE}"/plugin
-		doins -r "${QUICKOFFICE}"/scripts
-		doins -r "${QUICKOFFICE}"/views
-
-		local qo_path=""
-		case "${ARCH}" in
-		arm)
-			qo_path="${QUICKOFFICE}"/_platform_specific/arm
-			;;
-		amd64)
-			qo_path="${QUICKOFFICE}"/_platform_specific/x86_64
-			;;
-		*)
-			die "Unsupported architecture: ${ARCH}"
-			;;
-		esac
-
-		# Compress the platform-specific NaCl binaries with squashfs to
-		# save space on the rootfs.
-		# - compress with LZO and 1M blocks to optimize trade-off
-		# between compression ratio and decompression speed.
-		# - use "-keep-as-directory" option so the squash file will
-		# include the folder with the name of the CPU architecture,
-		# which is expected by the scripts on device.
-		# - use "-root-mode 0755" to ensure that the mountpoint has
-		# permissions 0755 instead of the default 0777.
-		# - use "-4k-align" option so individual files inside the squash
-		# file will be aligned to 4K blocks, which improves the
-		# efficiency of the delta updates.
-		mksquashfs "${qo_path}" "${WORKDIR}/quickoffice.squash" \
-			-all-root -noappend -no-recovery -no-exports \
-			-exit-on-error -comp lzo -b 1M -keep-as-directory \
-			-4k-align -root-mode 0755 -no-progress \
-			|| die "Failed to create Quickoffice squashfs"
-
-		# The squashfs will be mounted at boot time by an upstart script
-		# installed by chromeos-base/quickoffice.
-		doins "${WORKDIR}/quickoffice.squash"
-	fi
-
-	# Chrome test resources
-	# Test binaries are only available when building chrome from source
-	if use build_tests && [[ "${CHROME_ORIGIN}" == "LOCAL_SOURCE" ||
-		"${CHROME_ORIGIN}" == "SERVER_SOURCE" ]]; then
-		autotest-deponly_src_install
-		#env -uRESTRICT prepstrip "${D}${AUTOTEST_BASE}"
-	fi
-
-	# Copy input_methods.txt for XkbToKcmConverter & auto-test.
-	if [[ "${CHROME_ORIGIN}" == "LOCAL_SOURCE" ||
-			"${CHROME_ORIGIN}" == "SERVER_SOURCE" ]]; then
-		insinto /usr/share/chromeos-assets/input_methods
-		sed -E -e '/^#/d' -e '/^$/d' -e 's:  +: :g' \
-			"${CHROME_ROOT}"/src/chromeos/ime/input_methods.txt > "${T}/input_methods.txt" || die
-		doins "${T}/input_methods.txt"
-	fi
-
-	# Fix some perms.
-	# TODO(rcui): Remove this - shouldn't be needed, and is just covering up
-	# potential permissions bugs.
-	chmod -R a+r "${D}"
-	find "${D}" -perm /111 -print0 | xargs -0 chmod a+x
-
-	# The following symlinks are needed in order to run chrome.
-	# TODO(rcui): Remove this.  Not needed for running Chrome.
-	dosym libnss3.so /usr/lib/libnss3.so.1d
-	dosym libnssutil3.so.12 /usr/lib/libnssutil3.so.1d
-	dosym libsmime3.so.12 /usr/lib/libsmime3.so.1d
-	dosym libssl3.so.12 /usr/lib/libssl3.so.1d
-	dosym libplds4.so /usr/lib/libplds4.so.0d
-	dosym libplc4.so /usr/lib/libplc4.so.0d
-	dosym libnspr4.so /usr/lib/libnspr4.so.0d
-
-	# Create the main Chrome install directory.
-	dodir "${CHROME_DIR}"
-	insinto "${CHROME_DIR}"
-
-	# Install the orderfile into the chrome directory
-	if use orderfile_generate; then
-		[[ -f "${FROM}/chrome.orderfile.txt" ]] || die "No orderfile generated."
-		doins "${FROM}/chrome.orderfile.txt"
-	fi
-
-	# Install the unvetted orderfile into the chrome directory for upload.
-	if use orderfile_verify; then
-		[[ -f "${DISTDIR}/${UNVETTED_ORDERFILE}.xz" ]] || die "Lost the unvetted orderfile."
-		doins "${DISTDIR}/${UNVETTED_ORDERFILE}.xz"
-	fi
-
-	# Use the deploy_chrome from the *Chrome* checkout.  The benefit of
-	# doing this is if a new buildspec of Chrome requires a non-backwards
-	# compatible change to deploy_chrome, we can commit the fix to
-	# deploy_chrome without breaking existing Chrome OS release builds,
-	# and then roll the DEPS for chromite in the Chrome checkout.
-	#
-	# Another benefit is each version of Chrome will have the right
-	# corresponding version of deploy_chrome.
-	local cmd=( "${CHROME_ROOT}"/src/third_party/chromite/bin/deploy_chrome )
-	# Disable stripping for now, as deploy_chrome doesn't generate splitdebug files.
-	cmd+=(
-		"--board=${BOARD}"
-		"--build-dir=${FROM}"
-		"--gn-args=${GN_ARGS}"
-		# If this is enabled, we need to re-enable `prepstrip` above for autotests.
-		# You'll also have to re-add "strip" to the RESTRICT at the top of the file.
-		--nostrip
-		"--staging-dir=${D_CHROME_DIR}"
-		"--staging-flags=${USE}"
-		--staging-only
-		"--strip-bin=${STRIP}"
-		"--strip-flags=${PORTAGE_STRIP_FLAGS}"
-		--verbose
-	)
-	einfo "${cmd[*]}"
-	"${cmd[@]}" || die
-	LS=$(ls -alhS ${D}/${CHROME_DIR})
-	einfo "CHROME_DIR after deploy_chrome\n${LS}"
-
-	# Keep the .dwp file for debugging.  On AMD64 systems, dwo files aren't
-	# generated even when using debug fission.
-	if use arm && use chrome_debug && use debug_fission; then
-		mkdir -p "${D}/usr/lib/debug/${CHROME_DIR}"
-		DWP="${CHOST}"-dwp
-		cd "${D}/${CHROME_DIR}"
-		# Iterate over all ELF files in current directory
-		while read i; do
-			cd "${FROM}"
-			# There two files does not build with -gsplit-dwarf,
-			# so we do not need to get .dwp file from them.
-			if [[ "${i}" == "./nacl_helper_nonsfi" ]] ||
-				[[ "${i}" == "./nacl_irt_x86_32.nexe" ]] ; then
-				continue
-			fi
-			source="${i}"
-			${DWP} -e "${FROM}/${source}" -o "${D}/usr/lib/debug/${CHROME_DIR}/${i}.dwp" || die
-		done < <(scanelf -ByF '%F' ".")
-	fi
-
-	if use build_tests; then
-		# Install Chrome Driver to test image.
-		local chromedriver_dir='/usr/local/chromedriver'
-		dodir "${chromedriver_dir}"
-		cp -pPR "${FROM}"/chromedriver "${D}/${chromedriver_dir}" || die
-
-		if use chrome_internal; then
-			# Install LibAssistant test library to test image.
-			into /usr/local/
-			dolib.so "${FROM}"/libassistant_debug.so
-		fi
-
-		# Install a testing script to run Lacros from command line.
-		into /usr/local
-		dobin "${CHROME_ROOT}"/src/build/lacros/mojo_connection_lacros_launcher.py
-	fi
-	# The icu data is used by both chromeos-base/chrome-icu and this package.
-	# chromeos-base/chrome-icu is responsible for installing the icu
-	# data, so we remove it from ${D} here.
-	rm "${D_CHROME_DIR}/icudtl.dat" || die
-}
-
-pkg_preinst() {
-	enewuser "wayland"
-	enewgroup "wayland"
-	LS=$(ls -alhS ${ED}/${CHROME_DIR})
-	einfo "CHROME_DIR after installation\n${LS}"
-	CHROME_SIZE=$(stat --printf="%s" ${ED}/${CHROME_DIR}/chrome)
-	einfo "CHROME_SIZE = ${CHROME_SIZE}"
-
-	# Non-internal builds come with >10MB of unwinding info built-in. Size
-	# checks on those are less profitable.
-	if [[ ${CHROME_SIZE} -ge 250000000 && -z "${KEEP_CHROME_DEBUG_SYMBOLS}" ]] && use chrome_internal && ! use chrome_dcheck; then
-		die "Installed chrome binary got suspiciously large (size=${CHROME_SIZE})."
-	fi
-	if use arm; then
-		local files=$(find "${ED}/usr/lib/debug${CHROME_DIR}" -size +$((4 * 1024 * 1024 * 1024 - 1))c)
-		[[ -n ${files} ]] && die "Debug files exceed 4GiB: ${files}"
-	fi
-	# Verify that the elf program headers in splitdebug binary match the chrome
-	# binary, this is needed for correct symbolization in CWP.
-	# b/128861198, https://crbug.com/1007548 .
-	if [[ ${MERGE_TYPE} != binary ]] && use strict_toolchain_checks; then
-		local chrome_headers=$(${READELF} --program-headers --wide \
-			"${ED}/${CHROME_DIR}"/chrome | grep LOAD)
-		local chrome_debug_headers=$(${READELF} --program-headers --wide \
-			"${ED}/usr/lib/debug${CHROME_DIR}"/chrome.debug | grep LOAD)
-		[[ "${chrome_headers}" != "${chrome_debug_headers}" ]] && \
-			die "chrome program headers do not match chrome.debug"
-	fi
-}
-
-pkg_postinst() {
-	autotest_pkg_postinst
-}
diff --git a/chromeos-base/chromeos-chrome/chromeos-chrome-93.0.4554.0_rc-r1.ebuild b/chromeos-base/chromeos-chrome/chromeos-chrome-93.0.4554.0_rc-r1.ebuild
new file mode 100644
index 0000000..c238a6a
--- /dev/null
+++ b/chromeos-base/chromeos-chrome/chromeos-chrome-93.0.4554.0_rc-r1.ebuild
@@ -0,0 +1,1391 @@
+# Copyright 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# Usage: by default, downloads chromium browser from the build server.
+# If CHROME_ORIGIN is set to one of {SERVER_SOURCE, LOCAL_SOURCE, LOCAL_BINARY},
+# the build comes from the chromimum source repository (gclient sync),
+# build server, locally provided source, or locally provided binary.
+# If you are using SERVER_SOURCE, a gclient template file that is in the files
+# directory which will be copied automatically during the build and used as
+# the .gclient for 'gclient sync'.
+# If building from LOCAL_SOURCE or LOCAL_BINARY specifying BUILDTYPE
+# will allow you to specify "Debug" or another build type; "Release" is
+# the default.
+
+EAPI=7
+
+# TODO(crbug.com/984182): We force Python 2 because depot_tools doesn't support Python 3.
+PYTHON_COMPAT=( python2_7 )
+inherit autotest-deponly binutils-funcs chromium-source cros-credentials cros-constants cros-sanitizers eutils flag-o-matic git-2 multilib toolchain-funcs user python-any-r1 multiprocessing
+
+DESCRIPTION="Open-source version of Google Chrome web browser"
+HOMEPAGE="http://www.chromium.org/"
+SRC_URI=""
+
+LICENSE="BSD-Google chrome_internal? ( Google-TOS )"
+SLOT="0"
+KEYWORDS="*"
+IUSE="
+	+afdo_use
+	afdo_verify
+	+accessibility
+	app_shell
+	asan
+	+authpolicy
+	+build_tests
+	cdm_factory_daemon
+	+chrome_debug
+	+cfi
+	cfm
+	chrome_debug_tests
+	chrome_dcheck
+	chrome_internal
+	chrome_media
+	+chrome_remoting
+	clang_tidy
+	component_build
+	cros-debug
+	debug_fission
+	+dwarf5
+	+fonts
+	goma
+	goma_thinlto
+	+highdpi
+	iioservice
+	internal_gles_conform
+	+libcxx
+	mojo
+	msan
+	+nacl
+	neon
+	oobe_config
+	opengl
+	opengles
+	orderfile_generate
+	+orderfile_use
+	orderfile_verify
+	+runhooks
+	strict_toolchain_checks
+	+thinlto
+	touchview
+	ubsan
+	v4l2_codec
+	v4lplugin
+	vaapi
+	verbose
+	vtable_verify
+	xkbcommon
+	"
+REQUIRED_USE="
+	cfi? ( thinlto )
+	afdo_verify? ( !afdo_use )
+	orderfile_generate? ( !orderfile_use )
+	"
+
+OZONE_PLATFORM_PREFIX=ozone_platform_
+OZONE_PLATFORMS=(gbm cast headless egltest caca)
+IUSE_OZONE_PLATFORMS="${OZONE_PLATFORMS[@]/#/${OZONE_PLATFORM_PREFIX}}"
+IUSE+=" ${IUSE_OZONE_PLATFORMS}"
+OZONE_PLATFORM_DEFAULT_PREFIX=ozone_platform_default_
+IUSE_OZONE_PLATFORM_DEFAULTS="${OZONE_PLATFORMS[@]/#/${OZONE_PLATFORM_DEFAULT_PREFIX}}"
+IUSE+=" ${IUSE_OZONE_PLATFORM_DEFAULTS}"
+REQUIRED_USE+=" ^^ ( ${IUSE_OZONE_PLATFORM_DEFAULTS} )"
+
+# The gclient hooks that run in src_prepare hit the network.
+# https://crbug.com/731905
+RESTRICT="network-sandbox mirror"
+
+# Do not strip the nacl_helper_bootstrap binary because the binutils
+# objcopy/strip mangles the ELF program headers.
+# TODO(mcgrathr,vapier): This should be removed after portage's prepstrip
+# script is changed to use eu-strip instead of objcopy and strip.
+STRIP_MASK+=" */nacl_helper_bootstrap"
+
+# Portage version without optional portage suffix.
+CHROME_VERSION="${PV/_*/}"
+
+# chrome destination directory
+CHROME_DIR=/opt/google/chrome
+D_CHROME_DIR="${D}/${CHROME_DIR}"
+
+# For compilation/local chrome
+BUILDTYPE="${BUILDTYPE:-Release}"
+BOARD="${BOARD:-${SYSROOT##/build/}}"
+BUILD_OUT="${BUILD_OUT:-out_${BOARD}}"
+# WARNING: We are using a symlink now for the build directory to work around
+# command line length limits. This will cause problems if you are doing
+# parallel builds of different boards/variants.
+# Unsetting BUILD_OUT_SYM will revert this behavior
+BUILD_OUT_SYM="c"
+
+UNVETTED_ORDERFILE_LOCATION=${AFDO_GS_DIRECTORY:-"gs://chromeos-toolchain-artifacts/orderfile/unvetted"}
+
+# The following entry will be modified automatically for verifying orderfile or AFDO profile.
+UNVETTED_ORDERFILE=""
+UNVETTED_AFDO_FILE=""
+
+add_orderfiles() {
+	# For verify orderfile, only for a toolchain special build.
+	if [[ -n ${UNVETTED_ORDERFILE} ]]; then
+		SRC_URI+=" orderfile_verify? ( ${UNVETTED_ORDERFILE_LOCATION}/${UNVETTED_ORDERFILE}.xz )"
+	fi
+}
+
+add_orderfiles
+
+RDEPEND="${RDEPEND}
+	app-arch/bzip2
+	app-crypt/mit-krb5
+	app-misc/edid-decode
+	authpolicy? ( chromeos-base/authpolicy )
+	~chromeos-base/chrome-icu-${PV}
+	chromeos-base/gestures
+	chromeos-base/libevdev:=
+	fonts? ( chromeos-base/chromeos-fonts )
+	chrome_internal? ( chromeos-base/quickoffice )
+	dev-libs/nspr
+	>=dev-libs/nss-3.12.2
+	>=media-libs/alsa-lib-1.0.19
+	media-libs/fontconfig
+	media-libs/libsync
+	x11-libs/libdrm
+	ozone_platform_gbm? ( media-libs/minigbm )
+	v4lplugin? ( media-libs/libv4lplugins )
+	>=media-sound/adhd-0.0.1-r310
+	net-print/cups
+	opengl? ( virtual/opengl )
+	opengles? ( virtual/opengles )
+	sys-apps/dbus
+	sys-apps/pciutils
+	virtual/udev
+	sys-libs/libcap
+	chrome_remoting? ( sys-libs/pam )
+	vaapi? ( x11-libs/libva )
+	xkbcommon? (
+		x11-libs/libxkbcommon
+		x11-misc/xkeyboard-config
+	)
+	accessibility? (
+		app-accessibility/brltty
+		app-accessibility/espeak-ng
+		app-accessibility/googletts
+	)
+	libcxx? (
+		sys-libs/libcxxabi
+		sys-libs/libcxx
+	)
+	oobe_config? ( chromeos-base/oobe_config )
+	iioservice? ( chromeos-base/iioservice )
+	"
+
+DEPEND="${DEPEND}
+	${RDEPEND}
+	chromeos-base/protofiles
+	>=dev-util/gperf-3.0.3
+	>=dev-util/pkgconfig-0.23
+	arm? ( x11-libs/libdrm )
+"
+
+PATCHES=()
+
+AUTOTEST_COMMON="src/chrome/test/chromeos/autotest/files"
+AUTOTEST_DEPS="${AUTOTEST_COMMON}/client/deps"
+AUTOTEST_DEPS_LIST="chrome_test telemetry_dep"
+
+IUSE="${IUSE} +autotest"
+
+
+QA_TEXTRELS="*"
+QA_EXECSTACK="*"
+QA_PRESTRIPPED="*"
+
+use_nacl() {
+	# 32bit asan conflicts with nacl: crosbug.com/38980
+	! (use asan && [[ ${ARCH} == "x86" ]]) && \
+	! use component_build && use nacl
+}
+
+# Like the `usex` helper:
+# Usage: echox [int] [echo-if-true] [echo-if-false]
+# If [int] is 0, then echo the 2nd arg (default of yes), else
+# echo the 3rd arg (default of no).
+echox() {
+	# Like the `usex` helper.
+	[[ ${1:-$?} -eq 0 ]] && echo "${2:-yes}" || echo "${3:-no}"
+}
+echotf() { echox ${1:-$?} true false ; }
+usetf()  { usex $1 true false ; }
+
+use_goma() {
+	[[ "${USE_GOMA:-$(usetf goma)}" == "true" ]]
+}
+should_upload_build_logs() {
+	[[ -n "${GOMA_TMP_DIR}" && -n "${GLOG_log_dir}" && \
+		"${GLOG_log_dir}" == "${GOMA_TMP_DIR}"* ]]
+}
+
+set_build_args() {
+	# use goma_thinlto says that if we are using Goma and ThinLTO, use
+	# Goma for distributed code generation. So only set the corresponding
+	# gn arg to true if all three conditions are met.
+	use_goma_thin_lto=$(use goma_thinlto && use_goma && use thinlto; echotf)
+	BUILD_ARGS=(
+		"is_chromeos_device=true"
+		# is_official_build sometimes implies extra optimizations (e.g. it will allow
+		# ThinLTO to optimize more aggressively, if ThinLTO is enabled). Please note
+		# that, despite the name, it should be usable by external users.
+		#
+		# Sanitizers don't like official builds.
+		"is_official_build=$(use_sanitizers false true)"
+
+		"is_debug=false"
+		"${EXTRA_GN_ARGS}"
+		"enable_pseudolocales=$(usetf cros-debug)"
+		"use_chromeos_protected_media=$(usetf cdm_factory_daemon)"
+		"use_iioservice=$(usetf iioservice)"
+		"use_v4l2_codec=$(usetf v4l2_codec)"
+		"use_v4lplugin=$(usetf v4lplugin)"
+		"use_vaapi=$(usetf vaapi)"
+		"use_xkbcommon=$(usetf xkbcommon)"
+		"enable_remoting=$(usetf chrome_remoting)"
+		"enable_nacl=$(use_nacl; echotf)"
+		# use_system_minigbm is set below.
+
+		"is_cfm=$(usetf cfm)"
+
+		# Clang features.
+		"is_asan=$(usetf asan)"
+		"is_msan=$(usetf msan)"
+		"is_ubsan=$(usetf ubsan)"
+		"is_clang=true"
+		"use_thin_lto=$(usetf thinlto)"
+		"use_goma_thin_lto=${use_goma_thin_lto}"
+		"is_cfi=$(usetf cfi)"
+		"use_dwarf5=$(usetf dwarf5)"
+
+		# Assistant integration tests are only run on the Chromium bots,
+		# but they increase the size of libassistant.so by 1.3MB so we
+		# disable them here.
+		"enable_assistant_integration_tests=false"
+	)
+
+	# BUILD_STRING_ARGS needs appropriate quoting. So, we keep them separate and
+	# add them to BUILD_ARGS at the end.
+	BUILD_STRING_ARGS=(
+		"target_sysroot=${SYSROOT}"
+		"system_libdir=$(get_libdir)"
+		"pkg_config=$(tc-getPKG_CONFIG)"
+		"target_os=chromeos"
+		"host_pkg_config=$(tc-getBUILD_PKG_CONFIG)"
+		"clang_diagnostic_dir=/tmp/clang_crash_diagnostics"
+	)
+	use internal_gles_conform && BUILD_ARGS+=( "internal_gles2_conform_tests=true" )
+
+	# Ozone platforms.
+	local platform
+	for platform in ${OZONE_PLATFORMS[@]}; do
+		local flag="${OZONE_PLATFORM_DEFAULT_PREFIX}${platform}"
+		if use "${flag}"; then
+			BUILD_STRING_ARGS+=( "ozone_platform=${platform}" )
+		fi
+	done
+	BUILD_ARGS+=(
+		"ozone_auto_platforms=false"
+	)
+	for platform in ${IUSE_OZONE_PLATFORMS}; do
+		if use "${platform}"; then
+			BUILD_ARGS+=( "${platform}=true" )
+		fi
+	done
+	if use "ozone_platform_gbm"; then
+		BUILD_ARGS+=( "use_system_minigbm=true" )
+		BUILD_ARGS+=( "use_system_libdrm=true" )
+	fi
+	if use "touchview"; then
+		BUILD_ARGS+=( "subpixel_font_rendering_disabled=true" )
+	fi
+
+	# Set proper build args for the arch
+	case "${ARCH}" in
+	x86)
+		BUILD_STRING_ARGS+=( "target_cpu=x86" )
+		;;
+	arm)
+		BUILD_ARGS+=(
+			"arm_use_neon=$(usetf neon)"
+			# To workaround the 4GB debug limit. crbug.com/792999.
+			"blink_symbol_level=1"
+		)
+		BUILD_STRING_ARGS+=(
+			"target_cpu=arm"
+			"arm_float_abi=hard"
+		)
+		local arm_arch=$(get-flag march)
+		if [[ -n "${arm_arch}" ]]; then
+			BUILD_STRING_ARGS+=( "arm_arch=${arm_arch}" )
+		fi
+		;;
+	arm64)
+		BUILD_STRING_ARGS+=(
+			"target_cpu=arm64"
+		)
+		local arm_arch=$(get-flag march)
+		if [[ -n "${arm_arch}" ]]; then
+			BUILD_STRING_ARGS+=( "arm_arch=${arm_arch}" )
+		fi
+		;;
+	amd64)
+		BUILD_STRING_ARGS+=( "target_cpu=x64" )
+		;;
+	mips)
+		local mips_arch target_arch
+
+		mips_arch="$($(tc-getCPP) ${CFLAGS} ${CPPFLAGS} -E -P - <<<_MIPS_ARCH)"
+		# Strip away any enclosing quotes.
+		mips_arch="${mips_arch//\"}"
+		# TODO(benchan): Use tc-endian from toolchain-func to determine endianess
+		# when Chrome later cares about big-endian.
+		case "${mips_arch}" in
+		mips64*)
+			target_arch=mips64el
+			;;
+		*)
+			target_arch=mipsel
+			;;
+		esac
+
+		BUILD_STRING_ARGS+=(
+			"target_cpu=${target_arch}"
+			"mips_arch_variant=${mips_arch}"
+		)
+		;;
+	*)
+		die "Unsupported architecture: ${ARCH}"
+		;;
+	esac
+
+	if use chrome_internal; then
+		# Adding chrome branding specific variables.
+		BUILD_ARGS+=( "is_chrome_branded=true" )
+		# This test can only be build from internal sources.
+		BUILD_ARGS+=( "internal_gles2_conform_tests=true" )
+		export CHROMIUM_BUILD='_google_Chrome'
+		export OFFICIAL_BUILD='1'
+		export CHROME_BUILD_TYPE='_official'
+	elif use chrome_media; then
+		echo "Building Chromium with additional media codecs and containers."
+		BUILD_ARGS+=( "proprietary_codecs=true" )
+		BUILD_STRING_ARGS+=( "ffmpeg_branding=ChromeOS" )
+	fi
+
+	if use component_build; then
+		BUILD_ARGS+=( "is_component_build=true" )
+	fi
+	if use_goma; then
+		BUILD_ARGS+=( "use_goma=true" )
+		BUILD_STRING_ARGS+=( "goma_dir=${GOMA_DIR:-/home/${WHOAMI}/goma}" )
+
+		# Goma compiler proxy runs outside of portage build.
+		# Practically, because TMPDIR is set in portage, it is
+		# different from the directory used when the compiler proxy
+		# started.
+		# If GOMA_TMP_DIR is not set, the compiler proxy uses
+		# TMPDIR/goma_${WHOAMI} for its tmpdir as fallback, which
+		# causes unexpected behavior.
+		# Specifically, named socket used to communicate with compiler
+		# proxy is ${GOMA_TMP_DIR}/goma.ipc by default, so the compiler
+		# proxy cannot be reached.
+		# Thus, here set GOMA_TMP_DIR to /tmp/goma_${WHOAMI} if it is
+		# not yet set.
+		if [[ -z "${GOMA_TMP_DIR}" ]]; then
+			export GOMA_TMP_DIR="/tmp/goma_${WHOAMI}"
+		fi
+	fi
+
+	if use chrome_debug; then
+		# Use debug fission to avoid 4GB limit of ELF32 (see crbug.com/595763).
+		# Using -g1 causes problems with crash server (see crbug.com/601854).
+		# Set use_debug_fission=true to prevent slow link (see crbug.com/703468).
+		# Disable debug_fission for bots which generate Afdo profile. (see crbug.com/704602).
+		BUILD_ARGS+=(
+			"use_debug_fission=$(usetf debug_fission)"
+			"symbol_level=2"
+		)
+		if use debug_fission; then
+			# The breakpad cannot handle the debug files generated by
+			# llvm and debug fission properly. crosbug.com/710605
+			append-flags -fno-split-dwarf-inlining
+		fi
+	fi
+
+	if use chrome_dcheck; then
+		BUILD_ARGS+=("dcheck_always_on=true")
+	fi
+}
+
+unpack_chrome() {
+	# Add depot_tools to PATH, local chroot builds fail otherwise.
+	export PATH=${PATH}:${DEPOT_TOOLS}
+
+	local cmd=( "${CHROMITE_BIN_DIR}"/sync_chrome )
+	use chrome_internal && cmd+=( --internal )
+	if [[ "${CHROME_VERSION}" != "9999" ]]; then
+		cmd+=( "--tag=${CHROME_VERSION}" )
+	fi
+	# --reset tells sync_chrome to blow away local changes and to feel
+	# free to delete any directories that get in the way of syncing. This
+	# is needed for unattended operation.
+	cmd+=( --reset "--gclient=${EGCLIENT}" "${CHROME_DISTDIR}" )
+	elog "${cmd[*]}"
+	# TODO(crbug.com/1103048): Disable the sandbox when syncing the code.
+	# It seems to break gclient execution at random for unknown reasons.
+	# Children stop being tracked, or no git repos actually get cloned.
+	SANDBOX_ON=0 "${cmd[@]}" || die
+}
+
+decide_chrome_origin() {
+	if [[ "${PV}" == "9999" ]]; then
+		# LOCAL_SOURCE is the default for cros_workon.
+		# Warn the user if CHROME_ORIGIN is already set.
+		if [[ -n "${CHROME_ORIGIN}" && "${CHROME_ORIGIN}" != LOCAL_SOURCE ]]; then
+			ewarn "CHROME_ORIGIN is already set to ${CHROME_ORIGIN}."
+			ewarn "This will prevent you from building from your local checkout."
+			ewarn "Please run 'unset CHROME_ORIGIN' to reset Chrome"
+			ewarn "to the default source location."
+		fi
+		: "${CHROME_ORIGIN:=LOCAL_SOURCE}"
+	else
+		# By default, pull from server.
+		: "${CHROME_ORIGIN:=SERVER_SOURCE}"
+	fi
+}
+
+sandboxless_ensure_directory() {
+	local dir
+	for dir in "$@"; do
+		if [[ ! -d "${dir}" ]] ; then
+			# We need root access to create these directories, so we need to
+			# use sudo. This implicitly disables the sandbox.
+			sudo mkdir -p "${dir}" || die
+			sudo chown "${PORTAGE_USERNAME}:portage" "${dir}" || die
+			sudo chmod 0755 "${dir}" || die
+		fi
+	done
+}
+
+src_unpack() {
+	echo
+	ewarn "If you want to develop or hack on the browser itself, you should follow the"
+	ewarn "simple chrome workflow instead of using emerge:"
+	ewarn "https://chromium.googlesource.com/chromiumos/docs/+/master/simple_chrome_workflow.md"
+	echo
+
+	tc-export CC CXX
+	local WHOAMI=$(whoami)
+
+	CHROME_SRC="chrome-src"
+	if use chrome_internal; then
+		CHROME_SRC+="-internal"
+	fi
+
+	# CHROME_CACHE_DIR is used for storing output artifacts, and is always a
+	# regular directory inside the chroot (i.e. it's never mounted in, so it's
+	# always safe to use cp -al for these artifacts).
+	: "${CHROME_CACHE_DIR:="/var/cache/chromeos-chrome/${CHROME_SRC}"}"
+	addwrite "${CHROME_CACHE_DIR}"
+
+	# CHROME_DISTDIR is used for storing the source code, if any source code
+	# needs to be unpacked at build time (e.g. in the SERVER_SOURCE scenario.)
+	# It will be mounted into the chroot, so it is never safe to use cp -al
+	# for these files.
+	: "${CHROME_DISTDIR:="${PORTAGE_ACTUAL_DISTDIR:-${DISTDIR}}/${CHROME_SRC}"}"
+	addwrite "${CHROME_DISTDIR}"
+
+	# Create storage directories.
+	sandboxless_ensure_directory "${CHROME_DISTDIR}" "${CHROME_CACHE_DIR}"
+
+	cros-credentials_setup
+
+	decide_chrome_origin
+
+	case "${CHROME_ORIGIN}" in
+	LOCAL_SOURCE|SERVER_SOURCE|LOCAL_BINARY)
+		elog "CHROME_ORIGIN VALUE is ${CHROME_ORIGIN}"
+		;;
+	*)
+		die "CHROME_ORIGIN not one of LOCAL_SOURCE, SERVER_SOURCE, LOCAL_BINARY"
+		;;
+	esac
+
+	# Prepare and set CHROME_ROOT based on CHROME_ORIGIN.
+	# CHROME_ROOT is the location where the source code is used for compilation.
+	# If we're in SERVER_SOURCE mode, CHROME_ROOT is CHROME_DISTDIR. In LOCAL_SOURCE
+	# mode, this directory may be set manually to any directory. It may be mounted
+	# into the chroot, so it is not safe to use cp -al for these files.
+	# These are set here because $(whoami) returns the proper user here,
+	# but 'root' at the root level of the file
+	case "${CHROME_ORIGIN}" in
+	(SERVER_SOURCE)
+		elog "Using CHROME_VERSION = ${CHROME_VERSION}"
+		if [[ ${WHOAMI} == "chrome-bot" ]]; then
+			# TODO: Should add a sanity check that the version checked out is
+			# what we actually want.  Not sure how to do that though.
+			elog "Skipping syncing as cbuildbot ran SyncChrome for us."
+		else
+			unpack_chrome
+		fi
+
+		elog "set the chrome source root to ${CHROME_DISTDIR}"
+		elog "From this point onwards there is no difference between \
+			SERVER_SOURCE and LOCAL_SOURCE, since the fetch is done"
+		CHROME_ROOT=${CHROME_DISTDIR}
+		;;
+	(LOCAL_SOURCE)
+		: ${CHROME_ROOT:=/home/${WHOAMI}/chrome_root}
+		if [[ ! -d "${CHROME_ROOT}/src" ]]; then
+			die "${CHROME_ROOT} does not contain a valid chromium checkout!"
+		fi
+		addwrite "${CHROME_ROOT}"
+		;;
+	esac
+
+	case "${CHROME_ORIGIN}" in
+	LOCAL_SOURCE|SERVER_SOURCE)
+		set_build_args
+		;;
+	esac
+
+	# FIXME: This is the normal path where ebuild stores its working data.
+	# Chrome builds inside distfiles because of speed, so we at least make
+	# a symlink here to add compatibility with autotest eclass which uses this.
+	ln -sf "${CHROME_ROOT}" "${WORKDIR}/${P}"
+
+	if use internal_gles_conform; then
+		local CHROME_GLES2_CONFORM=${CHROME_ROOT}/src/third_party/gles2_conform
+		local CROS_GLES2_CONFORM=/home/${WHOAMI}/trunk/src/third_party/gles2_conform
+		if [[ ! -d "${CHROME_GLES2_CONFORM}" ]]; then
+			if [[ -d "${CROS_GLES2_CONFORM}" ]]; then
+				ln -s "${CROS_GLES2_CONFORM}" "${CHROME_GLES2_CONFORM}"
+				einfo "Using GLES2 conformance test suite from ${CROS_GLES2_CONFORM}"
+			else
+				die "Trying to build GLES2 conformance test suite without ${CHROME_GLES2_CONFORM} or ${CROS_GLES2_CONFORM}"
+			fi
+		fi
+	fi
+
+	if use afdo_use; then
+		# Use AFDO profile downloaded in Chromium source code
+		# If needed profiles other than "silvermont", please set the variable
+		# ${AFDO_PROFILE_SOURCE} accordingly.
+		local afdo_src="${AFDO_PROFILE_SOURCE:-atom}"
+		BUILD_ARGS+=( "clang_use_default_sample_profile=true" )
+		BUILD_STRING_ARGS+=( "chromeos_afdo_platform=${afdo_src}" )
+	fi
+
+	# Use to verify a local unvetted AFDO file.
+	if use afdo_verify; then
+		if [[ ! -e "${UNVETTED_AFDO_FILE}" ]]; then
+			die "Cannot find ${UNVETTED_AFDO_FILE} to build Chrome."
+		fi
+		BUILD_STRING_ARGS+=( "clang_sample_profile_path=${UNVETTED_AFDO_FILE}" )
+	fi
+
+	# Unpack unvetted orderfile.
+	if use orderfile_verify; then
+		local orderfile_dir="${WORKDIR}/orderfile"
+		mkdir "${orderfile_dir}"
+		local orderfile_file=${UNVETTED_ORDERFILE}
+		(cd "${orderfile_dir}" && unpack "${orderfile_file}.xz") || die
+
+		local orderfile_loc="${orderfile_dir}/${orderfile_file}"
+		einfo "Using ${orderfile_loc} as orderfile for ordering Chrome"
+
+		# Pass the path to orderfile to GN args.
+		BUILD_STRING_ARGS+=( "chrome_orderfile_path=${orderfile_loc}" )
+	fi
+
+	if ! use orderfile_use; then
+		# If not using orderfile, override the default orderfile path to empty.
+		BUILD_STRING_ARGS+=( "chrome_orderfile_path=" )
+	fi
+}
+
+add_api_keys() {
+	# awk script to extract the values out of the file.
+	local EXTRACT="{ gsub(/[',]/, \"\", \$2); print \$2 }"
+	local api_key=$(awk "/google_api_key/ ${EXTRACT}" "$1")
+	local client_id=$(awk "/google_default_client_id/ ${EXTRACT}" "$1")
+	local client_secret=$(awk "/google_default_client_secret/ ${EXTRACT}" "$1")
+
+	BUILD_STRING_ARGS+=(
+		"google_api_key=${api_key}"
+		"google_default_client_id=${client_id}"
+		"google_default_client_secret=${client_secret}"
+	)
+}
+
+src_prepare() {
+	# Must call eapply_user in EAPI 7, but this function is a no-op here.
+	eapply_user
+
+	if [[ "${CHROME_ORIGIN}" != "LOCAL_SOURCE" &&
+			"${CHROME_ORIGIN}" != "SERVER_SOURCE" ]]; then
+		return
+	fi
+
+	elog "${CHROME_ROOT} should be set here properly"
+	cd "${CHROME_ROOT}/src" || die "Cannot chdir to ${CHROME_ROOT}"
+
+	# We do symlink creation here if appropriate.
+	mkdir -p "${CHROME_CACHE_DIR}/src/${BUILD_OUT}"
+	if [[ ! -z "${BUILD_OUT_SYM}" ]]; then
+		rm -rf "${BUILD_OUT_SYM}" || die "Could not remove symlink"
+		ln -sfT "${CHROME_CACHE_DIR}/src/${BUILD_OUT}" "${BUILD_OUT_SYM}" ||
+			die "Could not create symlink for output directory"
+	fi
+
+
+	# Apply patches for non-localsource builds.
+	if [[ "${CHROME_ORIGIN}" == "SERVER_SOURCE" && ${#PATCHES[@]} -gt 0 ]]; then
+		eapply "${PATCHES[@]}"
+	fi
+
+	local WHOAMI=$(whoami)
+	# Get the credentials to fake home directory so that the version of chromium
+	# we build can access Google services. First, check for Chrome credentials.
+	if [[ ! -d google_apis/internal ]]; then
+		# Then look for Chrome OS supplied credentials.
+		local PRIVATE_OVERLAYS_DIR=/home/${WHOAMI}/trunk/src/private-overlays
+		local GAPI_CONFIG_FILE=${PRIVATE_OVERLAYS_DIR}/chromeos-overlay/googleapikeys
+		if [[ ! -f "${GAPI_CONFIG_FILE}" ]]; then
+			# Then developer credentials.
+			GAPI_CONFIG_FILE=/home/${WHOAMI}/.googleapikeys
+		fi
+		if [[ -f "${GAPI_CONFIG_FILE}" ]]; then
+			add_api_keys "${GAPI_CONFIG_FILE}"
+		fi
+	fi
+}
+
+setup_test_lists() {
+	TEST_FILES=(
+		capture_unittests
+		dawn_end2end_tests
+		dawn_unittests
+		gl_tests
+		jpeg_decode_accelerator_unittest
+		ozone_gl_unittests
+		sandbox_linux_unittests
+		wayland_client_perftests
+	)
+
+	TEST_FILES+=( ppapi/examples/video_decode )
+
+	if use vaapi || use v4l2_codec; then
+		TEST_FILES+=(
+			jpeg_encode_accelerator_unittest
+			video_decode_accelerator_perf_tests
+			video_decode_accelerator_tests
+			video_encode_accelerator_perf_tests
+			video_encode_accelerator_tests
+		)
+	fi
+
+	if use vaapi; then
+		TEST_FILES+=(
+			decode_test
+			vaapi_unittest
+		)
+	fi
+
+	# TODO(ihf): Figure out how to keep this in sync with telemetry.
+	TOOLS_TELEMETRY_BIN=(
+		bitmaptools
+		clear_system_cache
+		minidump_stackwalk
+	)
+
+	PPAPI_TEST_FILES=(
+		lib{32,64}
+		mock_nacl_gdb
+		ppapi_nacl_tests_{newlib,glibc}.nmf
+		ppapi_nacl_tests_{newlib,glibc}_{x32,x64,arm,arm64}.nexe
+		test_case.html
+		test_case.html.mock-http-headers
+		test_page.css
+		test_url_loader_data
+	)
+}
+
+# Handle all CFLAGS/CXXFLAGS/etc... munging here.
+setup_compile_flags() {
+	# Chrome controls its own optimization settings, so this would be a nop
+	# if we were to run it. Leave it here anyway as a grep-friendly marker.
+	# cros_optimize_package_for_speed
+
+	# The chrome makefiles specify -O and -g flags already, so remove the
+	# portage flags.
+	filter-flags -g "-O*"
+
+	# Remove unsupported arm64 linker flag on arm32 builds.
+	# https://crbug.com/889079
+	use arm && filter-flags "-Wl,--fix-cortex-a53-843419"
+
+	# There are some flags we want to only use in the ebuild.
+	# The rest will be exported to the simple chrome workflow.
+	EBUILD_CFLAGS=()
+	EBUILD_CXXFLAGS=()
+	EBUILD_LDFLAGS=()
+
+	# LLVM needs this when parsing profiles.
+	# See README on https://github.com/google/autofdo
+	# For ARM, we do not need this flag because we don't get profiles
+	# from ARM machines. And it triggers an llvm assertion when thinlto
+	# and debug fission is used together.
+	# See https://bugs.llvm.org/show_bug.cgi?id=37255
+	use arm || append-flags -fdebug-info-for-profiling
+
+	if use thinlto; then
+		# if using thinlto, we need to pass the equivalent of
+		# -fdebug-types-section to the backend, to prevent out-of-range
+		# relocations (see
+		# https://bugs.chromium.org/p/chromium/issues/detail?id=1032159).
+		append-ldflags -Wl,-mllvm
+		append-ldflags -Wl,-generate-type-units
+	else
+		# Non-ThinLTO builds with symbol_level=2 may have out-of-range
+		# relocations, too: crbug.com/1050819.
+		append-flags -fdebug-types-section
+	fi
+
+	if use orderfile_generate; then
+		local chrome_outdir="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
+		BUILD_STRING_ARGS+=( "dump_call_chain_clustering_order=${chrome_outdir}/chrome.orderfile.txt" )
+		# Enable call graph profile sort (C3) to generate orderfile.
+		BUILD_ARGS+=( "enable_call_graph_profile_sort=true" )
+	fi
+
+	# Enable std::vector []-operator bounds checking.
+	append-cxxflags -D__google_stl_debug_vector=1
+
+	# Chrome and Chrome OS versions of the compiler may not be in
+	# sync. So, don't complain if Chrome uses a diagnostic
+	# option that is not yet implemented in the compiler version used
+	# by Chrome OS.
+	# Turns out this is only really supported by Clang. See crosbug.com/615466
+	# Add "-faddrsig" flag required to efficiently support "--icf=all".
+	append-flags -faddrsig
+	append-flags -Wno-unknown-warning-option
+	export CXXFLAGS_host+=" -Wno-unknown-warning-option"
+	export CFLAGS_host+=" -Wno-unknown-warning-option"
+	export LDFLAGS_host+=" --unwindlib=libgcc"
+	if use libcxx; then
+		append-cxxflags "-stdlib=libc++"
+		append-ldflags "-stdlib=libc++"
+	fi
+
+	# Workaround: Disable fatal linker warnings on arm64/lld.
+	# https://crbug.com/913071
+	use arm64 && append-ldflags "-Wl,--no-fatal-warnings"
+	# Workaround: Disable fatal linker warnings on arm/lld.
+	# https://crbug.com/1190544
+	use arm && append-ldflags "-Wl,--no-fatal-warnings"
+	use vtable_verify && append-ldflags -fvtable-verify=preinit
+
+	local flags
+	einfo "Building with the compiler settings:"
+	for flags in {C,CXX,CPP,LD}FLAGS; do
+		einfo "  ${flags} = ${!flags}"
+	done
+}
+
+src_configure() {
+	tc-export CXX CC AR AS NM RANLIB STRIP
+	export CC_host=$(tc-getBUILD_CC)
+	export CXX_host=$(tc-getBUILD_CXX)
+	export NM_host=$(tc-getBUILD_NM)
+	export READELF="llvm-readelf"
+	export READELF_host="llvm-readelf"
+
+	# Use C++ compiler as the linker driver.
+	export LD="${CXX}"
+	export LD_host=${CXX_host}
+
+	# We need below change when USE="thinlto" is set. We set this globally
+	# so that users can turn on the "use_thin_lto" in the simplechrome
+	# flow more easily.
+	# use nm from llvm, https://crbug.com/917193
+	export NM="llvm-nm"
+	export NM_host="llvm-nm"
+	export AR="llvm-ar"
+	# USE=thinlto affects host build, we need to set host AR to
+	# llvm-ar to make sure host package builds with thinlto.
+	# crbug.com/731335
+	export AR_host="llvm-ar"
+	export RANLIB="llvm-ranlib"
+	# Use llvm's objcopy instead of GNU
+	export OBJCOPY="llvm-objcopy"
+
+	# Set binutils path for goma.
+	CC_host+=" -B$(get_binutils_path "${LD_host}")"
+	CXX_host+=" -B$(get_binutils_path "${LD_host}")"
+
+	setup_compile_flags
+
+	# We might set BOTO_CONFIG in the builder environment in case the
+	# existing file needs modifications (e.g. for working with older
+	# branches). So don't overwrite it if it's already set.
+	# See https://crbug.com/847676 for details.
+	export BOTO_CONFIG="${BOTO_CONFIG:-/home/$(whoami)/.boto}"
+	export PATH=${PATH}:${DEPOT_TOOLS}
+
+	export DEPOT_TOOLS_GSUTIL_BIN_DIR="${CHROME_CACHE_DIR}/gsutil_bin"
+	# The venv logic seems to misbehave when cross-compiling.  Since our SDK
+	# should include all the necessary modules, just disable it (for now).
+	# https://crbug.com/808434
+	export VPYTHON_BYPASS="manually managed python not supported by chrome operations"
+
+	# TODO(rcui): crosbug.com/20435. Investigate removal of runhooks
+	# useflag when chrome build switches to Ninja inside the chroot.
+	if use runhooks; then
+		local cmd=( "${EGCLIENT}" runhooks --force )
+		echo "${cmd[@]}"
+		CFLAGS="${CFLAGS} ${EBUILD_CFLAGS[*]}" \
+		CXXFLAGS="${CXXFLAGS} ${EBUILD_CXXFLAGS[*]}" \
+		LDFLAGS="${LDFLAGS} ${EBUILD_LDFLAGS[*]}" \
+		"${cmd[@]}" || die
+	fi
+
+	BUILD_STRING_ARGS+=(
+		"cros_target_ar=${AR}"
+		"cros_target_cc=${CC}"
+		"cros_target_cxx=${CXX}"
+		"host_toolchain=//build/toolchain/cros:host"
+		"custom_toolchain=//build/toolchain/cros:target"
+		"v8_snapshot_toolchain=//build/toolchain/cros:v8_snapshot"
+		"cros_target_ld=${LD}"
+		"cros_target_nm=${NM}"
+		"cros_target_readelf=${READELF}"
+		"cros_target_extra_cflags=${CFLAGS} ${EBUILD_CFLAGS[*]}"
+		"cros_target_extra_cppflags=${CPPFLAGS}"
+		"cros_target_extra_cxxflags=${CXXFLAGS} ${EBUILD_CXXFLAGS[*]}"
+		"cros_target_extra_ldflags=${LDFLAGS} ${EBUILD_LDFLAGS[*]}"
+		"cros_host_cc=${CC_host}"
+		"cros_host_cxx=${CXX_host}"
+		"cros_host_ar=${AR_host}"
+		"cros_host_ld=${LD_host}"
+		"cros_host_nm=${NM_host}"
+		"cros_host_readelf=${READELF_host}"
+		"cros_host_extra_cflags=${CFLAGS_host}"
+		"cros_host_extra_cxxflags=${CXXFLAGS_host}"
+		"cros_host_extra_cppflags=${CPPFLAGS_host}"
+		"cros_host_extra_ldflags=${LDFLAGS_host}"
+		"cros_v8_snapshot_cc=${CC_host}"
+		"cros_v8_snapshot_cxx=${CXX_host}"
+		"cros_v8_snapshot_ar=${AR_host}"
+		"cros_v8_snapshot_ld=${LD_host}"
+		"cros_v8_snapshot_nm=${NM_host}"
+		"cros_v8_snapshot_readelf=${READELF_host}"
+		"cros_v8_snapshot_extra_cflags=${CFLAGS_host}"
+		"cros_v8_snapshot_extra_cxxflags=${CXXFLAGS_host}"
+		"cros_v8_snapshot_extra_cppflags=${CPPFLAGS_host}"
+		"cros_v8_snapshot_extra_ldflags=${LDFLAGS_host}"
+	)
+
+	local arg
+	for arg in "${BUILD_STRING_ARGS[@]}"; do
+		BUILD_ARGS+=("${arg%%=*}=\"${arg#*=}\"")
+	done
+	export GN_ARGS="${BUILD_ARGS[*]}"
+	einfo "GN_ARGS = ${GN_ARGS}"
+	local gn=(
+		"${CHROME_ROOT}/src/buildtools/linux64/gn" gen
+		"${CHROME_ROOT}/src/${BUILD_OUT_SYM}/${BUILDTYPE}"
+		--args="${GN_ARGS}" --root="${CHROME_ROOT}/src"
+	)
+	echo "${gn[@]}"
+	"${gn[@]}" || die
+
+	setup_test_lists
+
+	if use clang_tidy; then
+		export WITH_TIDY=1
+	fi
+}
+
+chrome_make() {
+	local build_dir="${BUILD_OUT_SYM}/${BUILDTYPE}"
+
+	# If ThinLTO is enabled, we may have a cache from a previous link. Due
+	# to fears about lack of reproducibility, we don't allow cache reuse
+	# across rebuilds. The cache is still useful for artifacts shared
+	# between multiple links done by this build (e.g. tests).
+	use thinlto && rm -rf "${build_dir}/thinlto-cache"
+
+	# If goma is enabled, increase the number of parallel run to
+	# 10 * {number of processors}. Though, if it is too large the
+	# performance gets slow down, so limit by 200 heuristically.
+	if use_goma; then
+		local num_parallel=$(($(nproc) * 10))
+		local j_limit=200
+		set -- -j $((num_parallel < j_limit ? num_parallel : j_limit)) "$@"
+	fi
+	local command=(
+		"${ENINJA}"
+		-j"$(makeopts_jobs)"
+		-C "${build_dir}"
+		$(usex verbose -v "")
+		-d "keeprsp"
+		"$@"
+	)
+	# If goma is used, log the command, cwd and env vars, which will be
+	# uploaded to the logging server.
+	if should_upload_build_logs; then
+		env --null > "${GLOG_log_dir}/ninja_env"
+		pwd > "${GLOG_log_dir}/ninja_cwd"
+		echo "${command[@]}" > "${GLOG_log_dir}/ninja_command"
+	fi
+	PATH=${PATH}:${DEPOT_TOOLS} "${command[@]}"
+	local ret=$?
+	if should_upload_build_logs; then
+		echo "${ret}" > "${GLOG_log_dir}/ninja_exit"
+		cp -p "${BUILD_OUT_SYM}/${BUILDTYPE}/.ninja_log" "${GLOG_log_dir}/ninja_log"
+	fi
+	[[ "${ret}" -eq 0 ]] || die
+
+	# Still use a script to check if the orderfile is used properly, i.e.
+	# Builtin_ functions are placed between the markers, etc.
+	if use strict_toolchain_checks && (use orderfile_use || use orderfile_verify); then
+		"${FILESDIR}/check_orderfile.py" "${build_dir}/chrome" || die
+	fi
+}
+
+src_compile() {
+	if [[ "${CHROME_ORIGIN}" != "LOCAL_SOURCE" &&
+			"${CHROME_ORIGIN}" != "SERVER_SOURCE" ]]; then
+		return
+	fi
+
+	cd "${CHROME_ROOT}"/src || die "Cannot chdir to ${CHROME_ROOT}/src"
+
+	local chrome_targets=( $(usex mojo "mojo_shell" "") )
+	if use app_shell; then
+		chrome_targets+=( app_shell )
+	else
+		chrome_targets+=( chrome )
+	fi
+	if use build_tests; then
+		chrome_targets+=(
+			"${TEST_FILES[@]}"
+			"${TOOLS_TELEMETRY_BIN[@]}"
+			chromedriver
+		)
+		if use chrome_internal; then
+			chrome_targets+=( libassistant_debug.so )
+		fi
+	fi
+	use_nacl && chrome_targets+=( nacl_helper_bootstrap nacl_helper )
+
+	chrome_make "${chrome_targets[@]}"
+
+	if use build_tests; then
+		install_chrome_test_resources "${WORKDIR}/test_src"
+		install_telemetry_dep_resources "${WORKDIR}/telemetry_src"
+
+		# NOTE: Since chrome is built inside distfiles, we have to get
+		# rid of the previous instance first.
+		# We remove only what we will overwrite with the mv below.
+		local deps="${WORKDIR}/${P}/${AUTOTEST_DEPS}"
+
+		rm -rf "${deps}/chrome_test/test_src"
+		mv "${WORKDIR}/test_src" "${deps}/chrome_test/"
+
+		rm -rf "${deps}/telemetry_dep/test_src"
+		mv "${WORKDIR}/telemetry_src" "${deps}/telemetry_dep/test_src"
+
+		# The autotest eclass wants this for some reason.
+		get_paths() { :; }
+
+		# HACK: It would make more sense to call autotest_src_prepare in
+		# src_prepare, but we need to call install_chrome_test_resources first.
+		autotest-deponly_src_prepare
+
+		# Remove .git dirs
+		find "${AUTOTEST_WORKDIR}" -type d -name .git -prune -exec rm -rf {} +
+
+		autotest_src_compile
+	fi
+}
+
+install_test_resources() {
+	# Install test resources from chrome source directory to destination.
+	# We keep a cache of test resources inside the chroot to avoid copying
+	# multiple times.
+	local test_dir="${1}"
+	einfo "install_test_resources to ${test_dir}"
+	shift
+
+	# To speed things up, we write the list of files to a temporary file so
+	# we can use rsync with --files-from.
+	local tmp_list_file="${T}/${test_dir##*/}.files"
+	printf "%s\n" "$@" > "${tmp_list_file}"
+
+	# Copy the specific files to the cache from the source directory.
+	# Note: we need to specify -r when using --files-from and -a to get a
+	# recursive copy.
+	# TODO(ihf): Make failures here fatal.
+	rsync -r -a --delete --exclude=.git --exclude="*.pyc" \
+		--files-from="${tmp_list_file}" "${CHROME_ROOT}/src/" \
+		"${CHROME_CACHE_DIR}/src/"
+
+	# Create hard links in the destination based on the cache.
+	# Note: we need to specify -r when using --files-from and -a to get a
+	# recursive copy.
+	# TODO(ihf): Make failures here fatal.
+	rsync -r -a --link-dest="${CHROME_CACHE_DIR}/src" \
+		--files-from="${tmp_list_file}" "${CHROME_CACHE_DIR}/src/" "${test_dir}/"
+}
+
+test_strip_install() {
+	local from="${1}"
+	local dest="${2}"
+	shift 2
+	mkdir -p "${dest}"
+	local f
+	for f in "$@"; do
+		$(tc-getSTRIP) --strip-debug \
+			"${from}"/${f} -o "${dest}/$(basename ${f})"
+	done
+}
+
+install_chrome_test_resources() {
+	# NOTE: This is a duplicate from src_install, because it's required here.
+	local from="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
+	local test_dir="${1}"
+	local dest="${test_dir}/out/Release"
+
+	echo Copying Chrome tests into "${test_dir}"
+
+	# Even if chrome_debug_tests is enabled, we don't need to include detailed
+	# debug info for tests in the binary package, so save some time by stripping
+	# everything but the symbol names. Developers who need more detailed debug
+	# info on the tests can use the original unstripped tests from the ${from}
+	# directory.
+	TEST_INSTALL_TARGETS=(
+		"${TEST_FILES[@]}"
+		"libppapi_tests.so" )
+
+	einfo "Installing test targets: ${TEST_INSTALL_TARGETS[@]}"
+	test_strip_install "${from}" "${dest}" "${TEST_INSTALL_TARGETS[@]}"
+
+	# Copy Chrome test data.
+	mkdir -p "${dest}"/test_data
+	# WARNING: Only copy subdirectories of |test_data|.
+	# The full |test_data| directory is huge and kills our VMs.
+	# Example:
+	# cp -al "${from}"/test_data/<subdir> "${test_dir}"/out/Release/<subdir>
+
+	for f in "${PPAPI_TEST_FILES[@]}"; do
+		cp -al "${from}/${f}" "${dest}"
+	done
+
+	# Install Chrome test resources.
+	# WARNING: Only install subdirectories of |chrome/test|.
+	# The full |chrome/test| directory is huge and kills our VMs.
+	install_test_resources "${test_dir}" \
+		base/base_paths_posix.cc \
+		chrome/test/data/chromeos \
+		chrome/test/functional \
+		chrome/third_party/mock4js/mock4js.js  \
+		content/common/gpu/testdata \
+		media/test/data \
+		content/test/data \
+		net/data/ssl/certificates \
+		ppapi/tests/test_case.html \
+		ppapi/tests/test_url_loader_data \
+		third_party/bidichecker/bidichecker_packaged.js \
+		third_party/accessibility-developer-tools/gen/axs_testing.js
+
+	# Add the pdf test data if needed.
+	if use chrome_internal; then
+		install_test_resources "${test_dir}" pdf/test
+	fi
+	# Add the gles_conform test data if needed.
+	if use chrome_internal || use internal_gles_conform; then
+		install_test_resources "${test_dir}" gpu/gles2_conform_support/gles2_conform_test_expectations.txt
+	fi
+
+	cp -a "${CHROME_ROOT}"/"${AUTOTEST_DEPS}"/chrome_test/setup_test_links.sh \
+		"${dest}"
+}
+
+install_telemetry_dep_resources() {
+	local test_dir="${1}"
+
+	TELEMETRY=${CHROME_ROOT}/src/third_party/catapult/telemetry
+	if [[ -r "${TELEMETRY}" ]]; then
+		echo "Copying Telemetry Framework into ${test_dir}"
+		mkdir -p "${test_dir}"
+		# We are going to call chromium code but can't trust that it is clean
+		# of precompiled code. See crbug.com/590762.
+		find "${TELEMETRY}" -name "*.pyc" -type f -delete
+		# Get deps from Chrome.
+		FIND_DEPS=${CHROME_ROOT}/src/tools/perf/find_dependencies
+		PERF_DEPS=${CHROME_ROOT}/src/tools/perf/bootstrap_deps
+		CROS_DEPS=${CHROME_ROOT}/src/tools/cros/bootstrap_deps
+		# sed removes the leading path including src/ converting it to relative.
+		# To avoid silent failures assert the success.
+		DEPS_LIST=$(python ${FIND_DEPS} ${PERF_DEPS} ${CROS_DEPS} | \
+			sed -e 's|^'${CHROME_ROOT}/src/'||'; assert)
+		install_test_resources "${test_dir}" "${DEPS_LIST}"
+		# For crosperf, which uses some tests only available on internal builds.
+		if use chrome_internal; then
+			install_test_resources "${test_dir}" \
+				data/page_cycler/morejs \
+				data/page_cycler/moz
+		fi
+	fi
+
+	local from="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
+	local dest="${test_dir}/src/out/${BUILDTYPE}"
+	einfo "Installing telemetry binaries: ${TOOLS_TELEMETRY_BIN[@]}"
+	test_strip_install "${from}" "${dest}" "${TOOLS_TELEMETRY_BIN[@]}"
+
+	# When copying only a portion of the Chrome source that telemetry needs,
+	# some symlinks can end up broken. Thus clean these up before packaging.
+	find -L "${test_dir}" -type l -delete
+}
+
+# Add any new artifacts generated by the Chrome build targets to deploy_chrome.py.
+# We deal with miscellaneous artifacts here in the ebuild.
+src_install() {
+	FROM="${CHROME_CACHE_DIR}/src/${BUILD_OUT}/${BUILDTYPE}"
+
+	# Override default strip flags and lose the '-R .comment'
+	# in order to play nice with the crash server.
+	if [[ -z "${KEEP_CHROME_DEBUG_SYMBOLS}" ]]; then
+		if [[ "${STRIP}" == "llvm-strip" ]]; then
+			export PORTAGE_STRIP_FLAGS="--strip-all-gnu"
+		else
+			export PORTAGE_STRIP_FLAGS=""
+		fi
+	else
+		export PORTAGE_STRIP_FLAGS="--strip-debug"
+	fi
+	einfo "PORTAGE_STRIP_FLAGS=${PORTAGE_STRIP_FLAGS}"
+	LS=$(ls -alhS ${FROM})
+	einfo "CHROME_DIR after build\n${LS}"
+
+	# Copy a D-Bus config file that includes other configs that are installed to
+	# /opt/google/chrome/dbus by deploy_chrome.
+	insinto /etc/dbus-1/system.d
+	doins "${FILESDIR}"/chrome.conf
+
+	# Copy Quickoffice resources for official build.
+	# Quickoffice is not yet available for arm64, https://crbug.com/881489
+	if use chrome_internal && [[ "${ARCH}" != "arm64" ]]; then
+		local qo_install_root="/usr/share/chromeos-assets/quickoffice"
+		insinto "${qo_install_root}"
+		QUICKOFFICE="${CHROME_ROOT}"/src/chrome/browser/resources/chromeos/quickoffice
+		doins -r "${QUICKOFFICE}"/_locales
+		doins -r "${QUICKOFFICE}"/css
+		doins -r "${QUICKOFFICE}"/img
+		doins -r "${QUICKOFFICE}"/plugin
+		doins -r "${QUICKOFFICE}"/scripts
+		doins -r "${QUICKOFFICE}"/views
+
+		local qo_path=""
+		case "${ARCH}" in
+		arm)
+			qo_path="${QUICKOFFICE}"/_platform_specific/arm
+			;;
+		amd64)
+			qo_path="${QUICKOFFICE}"/_platform_specific/x86_64
+			;;
+		*)
+			die "Unsupported architecture: ${ARCH}"
+			;;
+		esac
+
+		# Compress the platform-specific NaCl binaries with squashfs to
+		# save space on the rootfs.
+		# - compress with LZO and 1M blocks to optimize trade-off
+		# between compression ratio and decompression speed.
+		# - use "-keep-as-directory" option so the squash file will
+		# include the folder with the name of the CPU architecture,
+		# which is expected by the scripts on device.
+		# - use "-root-mode 0755" to ensure that the mountpoint has
+		# permissions 0755 instead of the default 0777.
+		# - use "-4k-align" option so individual files inside the squash
+		# file will be aligned to 4K blocks, which improves the
+		# efficiency of the delta updates.
+		mksquashfs "${qo_path}" "${WORKDIR}/quickoffice.squash" \
+			-all-root -noappend -no-recovery -no-exports \
+			-exit-on-error -comp lzo -b 1M -keep-as-directory \
+			-4k-align -root-mode 0755 -no-progress \
+			|| die "Failed to create Quickoffice squashfs"
+
+		# The squashfs will be mounted at boot time by an upstart script
+		# installed by chromeos-base/quickoffice.
+		doins "${WORKDIR}/quickoffice.squash"
+	fi
+
+	# Chrome test resources
+	# Test binaries are only available when building chrome from source
+	if use build_tests && [[ "${CHROME_ORIGIN}" == "LOCAL_SOURCE" ||
+		"${CHROME_ORIGIN}" == "SERVER_SOURCE" ]]; then
+		autotest-deponly_src_install
+		#env -uRESTRICT prepstrip "${D}${AUTOTEST_BASE}"
+	fi
+
+	# Copy input_methods.txt for XkbToKcmConverter & auto-test.
+	if [[ "${CHROME_ORIGIN}" == "LOCAL_SOURCE" ||
+			"${CHROME_ORIGIN}" == "SERVER_SOURCE" ]]; then
+		insinto /usr/share/chromeos-assets/input_methods
+		sed -E -e '/^#/d' -e '/^$/d' -e 's:  +: :g' \
+			"${CHROME_ROOT}"/src/chromeos/ime/input_methods.txt > "${T}/input_methods.txt" || die
+		doins "${T}/input_methods.txt"
+	fi
+
+	# Fix some perms.
+	# TODO(rcui): Remove this - shouldn't be needed, and is just covering up
+	# potential permissions bugs.
+	chmod -R a+r "${D}"
+	find "${D}" -perm /111 -print0 | xargs -0 chmod a+x
+
+	# The following symlinks are needed in order to run chrome.
+	# TODO(rcui): Remove this.  Not needed for running Chrome.
+	dosym libnss3.so /usr/lib/libnss3.so.1d
+	dosym libnssutil3.so.12 /usr/lib/libnssutil3.so.1d
+	dosym libsmime3.so.12 /usr/lib/libsmime3.so.1d
+	dosym libssl3.so.12 /usr/lib/libssl3.so.1d
+	dosym libplds4.so /usr/lib/libplds4.so.0d
+	dosym libplc4.so /usr/lib/libplc4.so.0d
+	dosym libnspr4.so /usr/lib/libnspr4.so.0d
+
+	# Create the main Chrome install directory.
+	dodir "${CHROME_DIR}"
+	insinto "${CHROME_DIR}"
+
+	# Install the orderfile into the chrome directory
+	if use orderfile_generate; then
+		[[ -f "${FROM}/chrome.orderfile.txt" ]] || die "No orderfile generated."
+		doins "${FROM}/chrome.orderfile.txt"
+	fi
+
+	# Install the unvetted orderfile into the chrome directory for upload.
+	if use orderfile_verify; then
+		[[ -f "${DISTDIR}/${UNVETTED_ORDERFILE}.xz" ]] || die "Lost the unvetted orderfile."
+		doins "${DISTDIR}/${UNVETTED_ORDERFILE}.xz"
+	fi
+
+	# Use the deploy_chrome from the *Chrome* checkout.  The benefit of
+	# doing this is if a new buildspec of Chrome requires a non-backwards
+	# compatible change to deploy_chrome, we can commit the fix to
+	# deploy_chrome without breaking existing Chrome OS release builds,
+	# and then roll the DEPS for chromite in the Chrome checkout.
+	#
+	# Another benefit is each version of Chrome will have the right
+	# corresponding version of deploy_chrome.
+	local cmd=( "${CHROME_ROOT}"/src/third_party/chromite/bin/deploy_chrome )
+	# Disable stripping for now, as deploy_chrome doesn't generate splitdebug files.
+	cmd+=(
+		"--board=${BOARD}"
+		"--build-dir=${FROM}"
+		"--gn-args=${GN_ARGS}"
+		# If this is enabled, we need to re-enable `prepstrip` above for autotests.
+		# You'll also have to re-add "strip" to the RESTRICT at the top of the file.
+		--nostrip
+		"--staging-dir=${D_CHROME_DIR}"
+		"--staging-flags=${USE}"
+		--staging-only
+		"--strip-bin=${STRIP}"
+		"--strip-flags=${PORTAGE_STRIP_FLAGS}"
+		--verbose
+	)
+	einfo "${cmd[*]}"
+	"${cmd[@]}" || die
+	LS=$(ls -alhS ${D}/${CHROME_DIR})
+	einfo "CHROME_DIR after deploy_chrome\n${LS}"
+
+	# Keep the .dwp files with debug fission.
+	if use chrome_debug && use debug_fission; then
+		mkdir -p "${D}/usr/lib/debug/${CHROME_DIR}"
+		DWP="${CHOST}"-dwp
+		cd "${D}/${CHROME_DIR}"
+		# Iterate over all ELF files in current directory
+		while read i; do
+			cd "${FROM}"
+			# These files do not build with -gsplit-dwarf,
+			# so we do not need to get a .dwp file from them.
+			if [[ "${i}" == "./libassistant.so"		|| \
+				"${i}" == "./nacl_helper_nonsfi"	|| \
+				"${i}" == "./nacl_helper_bootstrap"	|| \
+				"${i}" == "./nacl_irt_arm.nexe"		|| \
+				"${i}" == "./nacl_irt_x86_64.exe"	|| \
+				"${i}" == "./nacl_irt_x86_64.nexe"	|| \
+				"${i}" == "./libmojo_core_arc64.so"	|| \
+				"${i}" == "./libmojo_core_arc32.so"	|| \
+				"${i}" == "./libwidevinecdm.so" ]] ; then
+				continue
+			fi
+			source="${i}"
+			${DWP} -e "${FROM}/${source}" -o "${D}/usr/lib/debug/${CHROME_DIR}/${i}.dwp" || die
+		done < <(scanelf -ByF '%F' ".")
+	fi
+
+	if use build_tests; then
+		# Install Chrome Driver to test image.
+		local chromedriver_dir='/usr/local/chromedriver'
+		dodir "${chromedriver_dir}"
+		cp -pPR "${FROM}"/chromedriver "${D}/${chromedriver_dir}" || die
+
+		if use chrome_internal; then
+			# Install LibAssistant test library to test image.
+			into /usr/local/
+			dolib.so "${FROM}"/libassistant_debug.so
+		fi
+
+		# Install a testing script to run Lacros from command line.
+		into /usr/local
+		dobin "${CHROME_ROOT}"/src/build/lacros/mojo_connection_lacros_launcher.py
+	fi
+	# The icu data is used by both chromeos-base/chrome-icu and this package.
+	# chromeos-base/chrome-icu is responsible for installing the icu
+	# data, so we remove it from ${D} here.
+	rm "${D_CHROME_DIR}/icudtl.dat" || die
+}
+
+pkg_preinst() {
+	enewuser "wayland"
+	enewgroup "wayland"
+	LS=$(ls -alhS ${ED}/${CHROME_DIR})
+	einfo "CHROME_DIR after installation\n${LS}"
+	CHROME_SIZE=$(stat --printf="%s" ${ED}/${CHROME_DIR}/chrome)
+	einfo "CHROME_SIZE = ${CHROME_SIZE}"
+
+	# Non-internal builds come with >10MB of unwinding info built-in. Size
+	# checks on those are less profitable.
+	if [[ ${CHROME_SIZE} -ge 250000000 && -z "${KEEP_CHROME_DEBUG_SYMBOLS}" ]] && use chrome_internal && ! use chrome_dcheck; then
+		die "Installed chrome binary got suspiciously large (size=${CHROME_SIZE})."
+	fi
+	if use arm; then
+		local files=$(find "${ED}/usr/lib/debug${CHROME_DIR}" -size +$((4 * 1024 * 1024 * 1024 - 1))c)
+		[[ -n ${files} ]] && die "Debug files exceed 4GiB: ${files}"
+	fi
+	# Verify that the elf program headers in splitdebug binary match the chrome
+	# binary, this is needed for correct symbolization in CWP.
+	# b/128861198, https://crbug.com/1007548 .
+	if [[ ${MERGE_TYPE} != binary ]] && use strict_toolchain_checks; then
+		local chrome_headers=$(${READELF} --program-headers --wide \
+			"${ED}/${CHROME_DIR}"/chrome | grep LOAD)
+		local chrome_debug_headers=$(${READELF} --program-headers --wide \
+			"${ED}/usr/lib/debug${CHROME_DIR}"/chrome.debug | grep LOAD)
+		[[ "${chrome_headers}" != "${chrome_debug_headers}" ]] && \
+			die "chrome program headers do not match chrome.debug"
+	fi
+}
+
+pkg_postinst() {
+	autotest_pkg_postinst
+}
diff --git a/chromeos-base/chromeos-chrome/chromeos-chrome-9999.ebuild b/chromeos-base/chromeos-chrome/chromeos-chrome-9999.ebuild
index 94f46b7..f016610 100644
--- a/chromeos-base/chromeos-chrome/chromeos-chrome-9999.ebuild
+++ b/chromeos-base/chromeos-chrome/chromeos-chrome-9999.ebuild
@@ -16,7 +16,7 @@
 
 # TODO(crbug.com/984182): We force Python 2 because depot_tools doesn't support Python 3.
 PYTHON_COMPAT=( python2_7 )
-inherit autotest-deponly binutils-funcs chromium-source cros-credentials cros-constants cros-sanitizers eutils flag-o-matic git-2 multilib toolchain-funcs user python-any-r1
+inherit autotest-deponly binutils-funcs chromium-source cros-credentials cros-constants cros-sanitizers eutils flag-o-matic git-2 multilib toolchain-funcs user python-any-r1 multiprocessing
 
 DESCRIPTION="Open-source version of Google Chrome web browser"
 HOMEPAGE="http://www.chromium.org/"
@@ -44,7 +44,9 @@
 	+chrome_remoting
 	clang_tidy
 	component_build
-	+debug_fission
+	cros-debug
+	debug_fission
+	+dwarf5
 	+fonts
 	goma
 	goma_thinlto
@@ -138,7 +140,7 @@
 	authpolicy? ( chromeos-base/authpolicy )
 	~chromeos-base/chrome-icu-${PV}
 	chromeos-base/gestures
-	chromeos-base/libevdev
+	chromeos-base/libevdev:=
 	fonts? ( chromeos-base/chromeos-fonts )
 	chrome_internal? ( chromeos-base/quickoffice )
 	dev-libs/nspr
@@ -238,6 +240,7 @@
 
 		"is_debug=false"
 		"${EXTRA_GN_ARGS}"
+		"enable_pseudolocales=$(usetf cros-debug)"
 		"use_chromeos_protected_media=$(usetf cdm_factory_daemon)"
 		"use_iioservice=$(usetf iioservice)"
 		"use_v4l2_codec=$(usetf v4l2_codec)"
@@ -258,6 +261,7 @@
 		"use_thin_lto=$(usetf thinlto)"
 		"use_goma_thin_lto=${use_goma_thin_lto}"
 		"is_cfi=$(usetf cfi)"
+		"use_dwarf5=$(usetf dwarf5)"
 
 		# Assistant integration tests are only run on the Chromium bots,
 		# but they increase the size of libassistant.so by 1.3MB so we
@@ -670,20 +674,23 @@
 		dawn_unittests
 		gl_tests
 		jpeg_decode_accelerator_unittest
-		jpeg_encode_accelerator_unittest
 		ozone_gl_unittests
 		sandbox_linux_unittests
-		video_decode_accelerator_perf_tests
-		video_decode_accelerator_tests
-		video_encode_accelerator_perf_tests
-		video_encode_accelerator_tests
-		# TODO(crbug.com/1045825): Remove video_encode_accelerator_unittest.
-		video_encode_accelerator_unittest
 		wayland_client_perftests
 	)
 
 	TEST_FILES+=( ppapi/examples/video_decode )
 
+	if use vaapi || use v4l2_codec; then
+		TEST_FILES+=(
+			jpeg_encode_accelerator_unittest
+			video_decode_accelerator_perf_tests
+			video_decode_accelerator_tests
+			video_encode_accelerator_perf_tests
+			video_encode_accelerator_tests
+		)
+	fi
+
 	if use vaapi; then
 		TEST_FILES+=(
 			decode_test
@@ -739,9 +746,6 @@
 	use arm || append-flags -fdebug-info-for-profiling
 
 	if use thinlto; then
-		if use arm; then
-			EBUILD_LDFLAGS+=( -gsplit-dwarf )
-		fi
 		# if using thinlto, we need to pass the equivalent of
 		# -fdebug-types-section to the backend, to prevent out-of-range
 		# relocations (see
@@ -774,6 +778,7 @@
 	append-flags -Wno-unknown-warning-option
 	export CXXFLAGS_host+=" -Wno-unknown-warning-option"
 	export CFLAGS_host+=" -Wno-unknown-warning-option"
+	export LDFLAGS_host+=" --unwindlib=libgcc"
 	if use libcxx; then
 		append-cxxflags "-stdlib=libc++"
 		append-ldflags "-stdlib=libc++"
@@ -782,6 +787,9 @@
 	# Workaround: Disable fatal linker warnings on arm64/lld.
 	# https://crbug.com/913071
 	use arm64 && append-ldflags "-Wl,--no-fatal-warnings"
+	# Workaround: Disable fatal linker warnings on arm/lld.
+	# https://crbug.com/1190544
+	use arm && append-ldflags "-Wl,--no-fatal-warnings"
 	use vtable_verify && append-ldflags -fvtable-verify=preinit
 
 	local flags
@@ -923,10 +931,11 @@
 		set -- -j $((num_parallel < j_limit ? num_parallel : j_limit)) "$@"
 	fi
 	local command=(
-		${ENINJA}
-		${MAKEOPTS}
+		"${ENINJA}"
+		-j"$(makeopts_jobs)"
 		-C "${build_dir}"
 		$(usex verbose -v "")
+		-d "keeprsp"
 		"$@"
 	)
 	# If goma is used, log the command, cwd and env vars, which will be
@@ -1076,11 +1085,6 @@
 	# Example:
 	# cp -al "${from}"/test_data/<subdir> "${test_dir}"/out/Release/<subdir>
 
-	# Add the fake bidi locale.
-	mkdir -p "${dest}"/pseudo_locales
-	cp -al "${from}"/pseudo_locales/fake-bidi.pak \
-		"${dest}"/pseudo_locales
-
 	for f in "${PPAPI_TEST_FILES[@]}"; do
 		cp -al "${from}/${f}" "${dest}"
 	done
@@ -1304,9 +1308,8 @@
 	LS=$(ls -alhS ${D}/${CHROME_DIR})
 	einfo "CHROME_DIR after deploy_chrome\n${LS}"
 
-	# Keep the .dwp file for debugging.  On AMD64 systems, dwo files aren't
-	# generated even when using debug fission.
-	if use arm && use chrome_debug && use debug_fission; then
+	# Keep the .dwp files with debug fission.
+	if use chrome_debug && use debug_fission; then
 		mkdir -p "${D}/usr/lib/debug/${CHROME_DIR}"
 		DWP="${CHOST}"-dwp
 		cd "${D}/${CHROME_DIR}"
@@ -1315,12 +1318,15 @@
 			cd "${FROM}"
 			# These files do not build with -gsplit-dwarf,
 			# so we do not need to get a .dwp file from them.
-			if [[ "${i}" == "./nacl_helper_nonsfi"		|| \
+			if [[ "${i}" == "./libassistant.so"		|| \
+				"${i}" == "./nacl_helper_nonsfi"	|| \
 				"${i}" == "./nacl_helper_bootstrap"	|| \
 				"${i}" == "./nacl_irt_arm.nexe"		|| \
 				"${i}" == "./nacl_irt_x86_64.exe"	|| \
+				"${i}" == "./nacl_irt_x86_64.nexe"	|| \
 				"${i}" == "./libmojo_core_arc64.so"	|| \
-				"${i}" == "./libmojo_core_arc32.so" ]] ; then
+				"${i}" == "./libmojo_core_arc32.so"	|| \
+				"${i}" == "./libwidevinecdm.so" ]] ; then
 				continue
 			fi
 			source="${i}"
diff --git a/chromeos-base/chromeos-common-script/chromeos-common-script-0.0.1-r254.ebuild b/chromeos-base/chromeos-common-script/chromeos-common-script-0.0.1-r254.ebuild
deleted file mode 100644
index 663a5e6..0000000
--- a/chromeos-base/chromeos-common-script/chromeos-common-script-0.0.1-r254.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="0f4f2e09dc2ab3255685c3005d3f60081f3a2a09"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "f2131ce9c8ad903ceb133ba94152c94b28643590" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk chromeos-common-script .gn"
-
-PLATFORM_SUBDIR="chromeos-common-script"
-
-inherit cros-workon platform
-
-DESCRIPTION="Chrome OS storage info tools"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-common-script/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="direncryption fsverity kernel-3_18 kernel-4_4 prjquota"
-
-REQUIRED_USE="prjquota? ( !kernel-4_4 !kernel-3_18 )"
-
-src_install() {
-	insinto /usr/share/misc
-	doins share/chromeos-common.sh
-	doins share/lvm-utils.sh
-	if use direncryption; then
-		sed -i '/local direncryption_enabled=/s/false/true/' \
-			"${D}/usr/share/misc/chromeos-common.sh" ||
-			die "Can not set directory encryption in common library"
-	fi
-	if use fsverity; then
-		sed -i '/local fsverity_enabled=/s/false/true/' \
-			"${D}/usr/share/misc/chromeos-common.sh" ||
-			die "Can not set fs-verity in common library"
-	fi
-	if use prjquota; then
-		sed -i '/local prjquota_enabled=/s/false/true/' \
-			"${D}/usr/share/misc/chromeos-common.sh" ||
-			die "Can not set project quota in common library"
-	fi
-}
diff --git a/chromeos-base/chromeos-common-script/chromeos-common-script-0.0.1-r280.ebuild b/chromeos-base/chromeos-common-script/chromeos-common-script-0.0.1-r280.ebuild
new file mode 100644
index 0000000..e6c1a22
--- /dev/null
+++ b/chromeos-base/chromeos-common-script/chromeos-common-script-0.0.1-r280.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "1e7b7af56eebd756a7256d798a6d7680d470250d" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk chromeos-common-script .gn"
+
+PLATFORM_SUBDIR="chromeos-common-script"
+
+inherit cros-workon platform
+
+DESCRIPTION="Chrome OS storage info tools"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-common-script/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="direncryption fsverity kernel-3_18 kernel-4_4 prjquota"
+
+REQUIRED_USE="prjquota? ( !kernel-4_4 !kernel-3_18 )"
+
+src_install() {
+	insinto /usr/share/misc
+	doins share/chromeos-common.sh
+	doins share/lvm-utils.sh
+	if use direncryption; then
+		sed -i '/local direncryption_enabled=/s/false/true/' \
+			"${D}/usr/share/misc/chromeos-common.sh" ||
+			die "Can not set directory encryption in common library"
+	fi
+	if use fsverity; then
+		sed -i '/local fsverity_enabled=/s/false/true/' \
+			"${D}/usr/share/misc/chromeos-common.sh" ||
+			die "Can not set fs-verity in common library"
+	fi
+	if use prjquota; then
+		sed -i '/local prjquota_enabled=/s/false/true/' \
+			"${D}/usr/share/misc/chromeos-common.sh" ||
+			die "Can not set project quota in common library"
+	fi
+}
diff --git a/chromeos-base/chromeos-config-host/chromeos-config-host-0.0.2-r602.ebuild b/chromeos-base/chromeos-config-host/chromeos-config-host-0.0.2-r602.ebuild
deleted file mode 100644
index 89401d9..0000000
--- a/chromeos-base/chromeos-config-host/chromeos-config-host-0.0.2-r602.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="5251066fa4f265c3a7bbb7d1f1bb17233f43eaaf"
-CROS_WORKON_TREE="4a9d701c1716dbba6b3de3a9927299f399ec4580"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="chromeos-config"
-
-PYTHON_COMPAT=( python{3_6,3_7} )
-
-inherit cros-workon distutils-r1
-
-DESCRIPTION="Chrome OS configuration host tools"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-config"
-
-LICENSE="BSD-Google"
-SLOT=0
-KEYWORDS="*"
-
-RDEPEND="
-	>=sys-fs/squashfs-tools-4.3
-	dev-python/jinja[${PYTHON_USEDEP}]
-	!<chromeos-base/chromeos-config-tools-0.0.4
-"
-
-DEPEND="
-	${RDEPEND}
-	dev-python/setuptools[${PYTHON_USEDEP}]
-"
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/chromeos-config"
-}
diff --git a/chromeos-base/chromeos-config-host/chromeos-config-host-0.0.2-r625.ebuild b/chromeos-base/chromeos-config-host/chromeos-config-host-0.0.2-r625.ebuild
new file mode 100644
index 0000000..61a6d16
--- /dev/null
+++ b/chromeos-base/chromeos-config-host/chromeos-config-host-0.0.2-r625.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="3117ca92548f3c66aa086af6f98336a50186706f"
+CROS_WORKON_TREE="aa0612733aca2d5ffa65470f07408228b473ebdb"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="chromeos-config"
+
+PYTHON_COMPAT=( python{3_6,3_7} )
+
+inherit cros-workon distutils-r1
+
+DESCRIPTION="Chrome OS configuration host tools"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-config"
+
+LICENSE="BSD-Google"
+SLOT=0
+KEYWORDS="*"
+
+RDEPEND="
+	>=sys-fs/squashfs-tools-4.3
+	dev-python/jinja[${PYTHON_USEDEP}]
+	!<chromeos-base/chromeos-config-tools-0.0.4
+"
+
+DEPEND="
+	${RDEPEND}
+	dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/chromeos-config"
+}
diff --git a/chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.4-r1679.ebuild b/chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.4-r1679.ebuild
deleted file mode 100644
index 71541ea..0000000
--- a/chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.4-r1679.ebuild
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="5251066fa4f265c3a7bbb7d1f1bb17233f43eaaf"
-CROS_WORKON_TREE=("4fdfdbe461ccedeaaf176391c0bbb0f74943be45" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "f89d62f067e47fc70b2a70153729f6d4e5067414")
-CROS_WORKON_INCREMENTAL_BUILD=1
-
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform2"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform2"
-)
-CROS_WORKON_SUBTREE=(
-	".clang-format common-mk chromeos-config .gn power_manager"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}/platform2"
-)
-PLATFORM_SUBDIR="chromeos-config"
-
-inherit cros-workon platform
-
-DESCRIPTION="Chrome OS configuration tools"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-config"
-
-LICENSE="BSD-Google"
-SLOT=0
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND=""
-
-DEPEND="${RDEPEND}"
-
-src_install() {
-	dolib.so "${OUT}/lib/libcros_config.so"
-
-	insinto "/usr/include/chromeos/chromeos-config/libcros_config"
-	doins "${S}"/libcros_config/*.h
-
-	"${S}"/platform2_preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}"/libcros_config.pc
-
-	insinto "/usr/include/cros_config"
-	doins "libcros_config/cros_config_interface.h"
-	doins "libcros_config/cros_config.h"
-	doins "libcros_config/fake_cros_config.h"
-
-	dobin "${OUT}"/cros_config
-	newbin cros_config_mock.sh cros_config_mock
-	dosbin "${OUT}"/cros_configfs
-
-	# Install init scripts.
-	insinto /etc/init
-	doins init/*.conf
-}
-
-platform_pkg_test() {
-	# Run this here since we may not run cros_config_main_test.
-	./chromeos-config-test-setup.sh
-	local tests=(
-		fake_cros_config_test
-		cros_config_test
-		cros_config_main_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-	./run_tests.sh || die "cros_config unit tests have errors"
-}
diff --git a/chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.4-r1780.ebuild b/chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.4-r1780.ebuild
new file mode 100644
index 0000000..340d585
--- /dev/null
+++ b/chromeos-base/chromeos-config-tools/chromeos-config-tools-0.0.4-r1780.ebuild
@@ -0,0 +1,76 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="bc0dd38e943097b1788d08f7b76ff4167c1d0efd"
+CROS_WORKON_TREE=("4fdfdbe461ccedeaaf176391c0bbb0f74943be45" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "aa0612733aca2d5ffa65470f07408228b473ebdb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "71cce620cf464ad17334cff4d450f8805cd6c507")
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform2"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform2"
+)
+CROS_WORKON_SUBTREE=(
+	".clang-format common-mk chromeos-config .gn power_manager"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/platform2"
+)
+PLATFORM_SUBDIR="chromeos-config"
+
+inherit cros-workon platform
+
+DESCRIPTION="Chrome OS configuration tools"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-config"
+
+LICENSE="BSD-Google"
+SLOT=0
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND=""
+
+DEPEND="${RDEPEND}"
+
+src_install() {
+	dolib.so "${OUT}/lib/libcros_config.so"
+
+	insinto "/usr/include/chromeos/chromeos-config/libcros_config"
+	doins "${S}"/libcros_config/*.h
+
+	"${S}"/platform2_preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}"/libcros_config.pc
+
+	insinto "/usr/include/cros_config"
+	doins "libcros_config/cros_config_interface.h"
+	doins "libcros_config/cros_config.h"
+	doins "libcros_config/fake_cros_config.h"
+
+	dobin "${OUT}"/cros_config
+	newbin cros_config_mock.sh cros_config_mock
+	dosbin "${OUT}"/cros_configfs
+
+	# Install init scripts.
+	insinto /etc/init
+	doins init/*.conf
+}
+
+platform_pkg_test() {
+	# Run this here since we may not run cros_config_main_test.
+	./chromeos-config-test-setup.sh
+	local tests=(
+		fake_cros_config_test
+		cros_config_test
+		cros_config_main_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+	./run_tests.sh || die "cros_config unit tests have errors"
+}
diff --git a/chromeos-base/chromeos-config/chromeos-config-0.0.2-r126.ebuild b/chromeos-base/chromeos-config/chromeos-config-0.0.2-r126.ebuild
deleted file mode 100644
index e5aa4f9..0000000
--- a/chromeos-base/chromeos-config/chromeos-config-0.0.2-r126.ebuild
+++ /dev/null
@@ -1,153 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# We can drop this if cros-uniboard stops using cros-board.
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_BOARDS=( none )
-
-# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
-# the canonical empty project.
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="platform/empty-project"
-
-inherit cros-unibuild cros-workon
-
-DESCRIPTION="Chromium OS-specific configuration"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/config/"
-SRC_URI=""
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="fuzzer generated_cros_config"
-
-DEPEND="
-	!fuzzer? ( virtual/chromeos-config-bsp:= )
-"
-RDEPEND="${DEPEND}"
-
-# This ebuild creates the Chrome OS master configuration file stored in
-# ${UNIBOARD_JSON_INSTALL_PATH}. See go/cros-unified-builds-design for
-# more information.
-
-# Merges all of the source YAML config files and generates the
-# corresponding build config and platform config files.
-src_compile() {
-	if use generated_cros_config ; then
-		einfo "Config files already generated, nothing to compile."
-		return 0
-	fi
-
-	local yaml_files=( "${SYSROOT}${UNIBOARD_YAML_DIR}/"*.yaml )
-	local input_yaml_files=()
-	local yaml="${WORKDIR}/config.yaml"
-	local c_file="${WORKDIR}/config.c"
-	local configfs_image="${WORKDIR}/configfs.img"
-	local gen_yaml="${SYSROOT}${UNIBOARD_YAML_DIR}/config.yaml"
-	# Protobuf based configs generate JSON directly with no YAML.
-	if [[ -f "${SYSROOT}${UNIBOARD_YAML_DIR}/project-config.json" ]]; then
-		cp "${SYSROOT}${UNIBOARD_YAML_DIR}/project-config.json" "${yaml}" || die
-	elif [[ "${yaml_files[0]}" =~ .*[a-z_]+\.yaml$ ]]; then
-		echo "# Generated YAML config file" > "${yaml}"
-		for source_yaml in "${yaml_files[@]}"; do
-			if [[ "${source_yaml}" != "${gen_yaml}" ]]; then
-				einfo "Adding source YAML file ${source_yaml}"
-				# Order matters here.  This will control how YAML files
-				# are merged.  To control the order, change the name
-				# of the input files to be in the order desired.
-				input_yaml_files+=("${source_yaml}")
-			fi
-		done
-		cros_config_schema -o "${yaml}" -m "${input_yaml_files[@]}" \
-			|| die "cros_config_schema failed for build config."
-	fi
-
-	if [[ -f "${yaml}" ]]; then
-		cros_config_schema -c "${yaml}" \
-			--configfs-output "${configfs_image}" -g "${WORKDIR}" -f "True" \
-			|| die "cros_config_schema failed for platform config."
-	else
-		einfo "Emitting empty C interface config for mosys."
-		cp "${FILESDIR}/empty_config.c" "${c_file}"
-	fi
-}
-
-src_install() {
-	if use generated_cros_config ; then
-		einfo "Config files already generated, nothing to install."
-		return 0
-	fi
-
-	# Get the directory name only, and use that as the install directory.
-	insinto "${UNIBOARD_JSON_INSTALL_PATH%/*}"
-	if [[ -e "${WORKDIR}/configfs.img" ]]; then
-		doins "${WORKDIR}/configfs.img"
-	fi
-
-	insinto "${UNIBOARD_YAML_DIR}"
-	doins "${WORKDIR}/config.c"
-	if [[ -e "${WORKDIR}/config.yaml" ]]; then
-		doins "${WORKDIR}/config.yaml"
-	fi
-}
-
-# @FUNCTION: _verify_config_dump
-# @USAGE: [source-yaml] [expected-json]
-# @INTERNAL
-# @DESCRIPTION:
-# Dumps the cros_config_host contents and verifies expected file match.
-#   $1: Source YAML config file used to generate JSON dump.
-#   $2: Expected JSON output file that is verified against.
-_verify_config_dump() {
-	local source_yaml="$1"
-	local expected_json="$2"
-
-	local expected_path="${SYSROOT}${CROS_CONFIG_TEST_DIR}/${expected_json}"
-	local source_path="${SYSROOT}${UNIBOARD_YAML_DIR}/${source_yaml}"
-	local actual_path="${WORKDIR}/${expected_json}"
-	local merged_path="${WORKDIR}/${source_yaml}"
-	if [[ -e "${expected_path}" ]]; then
-		if [[ -e "${source_path}" ]]; then
-			cros_config_schema -o "${merged_path}" -m "${source_path}" \
-				|| die "cros_config_schema failed for build config."
-			cros_config_host -c "${merged_path}" dump-config > "${actual_path}"
-			verify_file_match "${expected_path}" "${actual_path}"
-		else
-			eerror "Source YAML ${source_path} doesn't exist for checking" \
-				"against expected JSON dump ${expected_path}"
-			die
-		fi
-	fi
-}
-
-# @FUNCTION: _verify_generated_files
-# @USAGE:
-# @INTERNAL
-# @DESCRIPTION:
-# Verifies that all generated files are installed. Should only be called when
-# the generated_cros_config USE flag is set.
-_verify_generated_files() {
-	local expected_files=(
-		"${SYSROOT}${UNIBOARD_JSON_INSTALL_PATH}"
-		"${SYSROOT}${UNIBOARD_YAML_DIR}/config.yaml"
-		"${SYSROOT}${UNIBOARD_YAML_DIR}/config.c"
-	)
-
-	for f in "${expected_files[@]}"; do
-		if [[ ! -e "${f}" ]]; then
-			eerror "${f} not found."
-			die
-		fi
-	done
-}
-
-src_test() {
-	if use generated_cros_config; then
-		_verify_generated_files
-	else
-		_verify_config_dump model.yaml config_dump.json
-		_verify_config_dump private-model.yaml config_dump-private.json
-	fi
-}
-
diff --git a/chromeos-base/chromeos-config/chromeos-config-0.0.2-r129.ebuild b/chromeos-base/chromeos-config/chromeos-config-0.0.2-r129.ebuild
new file mode 100644
index 0000000..41b4f65
--- /dev/null
+++ b/chromeos-base/chromeos-config/chromeos-config-0.0.2-r129.ebuild
@@ -0,0 +1,121 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="platform/empty-project"
+
+inherit cros-unibuild cros-workon
+
+DESCRIPTION="Chromium OS-specific configuration"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/config/"
+SRC_URI=""
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="fuzzer zephyr_ec"
+
+DEPEND="
+	!fuzzer? ( virtual/chromeos-config-bsp:= )
+"
+RDEPEND="${DEPEND}"
+
+# This ebuild creates the Chrome OS master configuration file stored in
+# ${UNIBOARD_JSON_INSTALL_PATH}. See go/cros-unified-builds-design for
+# more information.
+
+# Merges all of the source YAML config files and generates the
+# corresponding build config and platform config files.
+src_compile() {
+	local yaml_files=( "${SYSROOT}${UNIBOARD_YAML_DIR}/"*.yaml )
+	local input_yaml_files=()
+	local schema_flags=()
+	local yaml="${WORKDIR}/config.yaml"
+	local c_file="${WORKDIR}/config.c"
+	local configfs_image="${WORKDIR}/configfs.img"
+	local gen_yaml="${SYSROOT}${UNIBOARD_YAML_DIR}/config.yaml"
+
+	# Protobuf based configs generate JSON directly with no YAML.
+	if [[ -f "${SYSROOT}${UNIBOARD_YAML_DIR}/project-config.json" ]]; then
+		yaml_files=( "${SYSROOT}${UNIBOARD_YAML_DIR}/project-config.json" )
+	fi
+
+	for source_yaml in "${yaml_files[@]}"; do
+		if [[ -f "${source_yaml}" && "${source_yaml}" != "${gen_yaml}" ]]; then
+			einfo "Adding source YAML file ${source_yaml}"
+			# Order matters here.  This will control how YAML files
+			# are merged.  To control the order, change the name
+			# of the input files to be in the order desired.
+			input_yaml_files+=("${source_yaml}")
+		fi
+	done
+
+	if use zephyr_ec; then
+		schema_flags+=( --zephyr-ec-configs-only )
+	fi
+
+	if [[ "${#input_yaml_files[@]}" -ne 0 ]]; then
+		cros_config_schema "${schema_flags[@]}" -o "${yaml}" \
+			-m "${input_yaml_files[@]}" \
+			|| die "cros_config_schema failed for build config."
+
+		cros_config_schema -c "${yaml}" \
+			--configfs-output "${configfs_image}" -g "${WORKDIR}" -f "True" \
+			|| die "cros_config_schema failed for platform config."
+	else
+		einfo "Emitting empty C interface config for mosys."
+		cp "${FILESDIR}/empty_config.c" "${c_file}"
+	fi
+}
+
+src_install() {
+	# Get the directory name only, and use that as the install directory.
+	insinto "${UNIBOARD_JSON_INSTALL_PATH%/*}"
+	if [[ -e "${WORKDIR}/configfs.img" ]]; then
+		doins "${WORKDIR}/configfs.img"
+	fi
+
+	insinto "${UNIBOARD_YAML_DIR}"
+	doins "${WORKDIR}/config.c"
+	if [[ -e "${WORKDIR}/config.yaml" ]]; then
+		doins "${WORKDIR}/config.yaml"
+	fi
+}
+
+# @FUNCTION: _verify_config_dump
+# @USAGE: [source-yaml] [expected-json]
+# @INTERNAL
+# @DESCRIPTION:
+# Dumps the cros_config_host contents and verifies expected file match.
+#   $1: Source YAML config file used to generate JSON dump.
+#   $2: Expected JSON output file that is verified against.
+_verify_config_dump() {
+	local source_yaml="$1"
+	local expected_json="$2"
+
+	local expected_path="${SYSROOT}${CROS_CONFIG_TEST_DIR}/${expected_json}"
+	local source_path="${SYSROOT}${UNIBOARD_YAML_DIR}/${source_yaml}"
+	local actual_path="${WORKDIR}/${expected_json}"
+	local merged_path="${WORKDIR}/${source_yaml}"
+	if [[ -e "${expected_path}" ]]; then
+		if [[ -e "${source_path}" ]]; then
+			cros_config_schema -o "${merged_path}" -m "${source_path}" \
+				|| die "cros_config_schema failed for build config."
+			cros_config_host -c "${merged_path}" dump-config > "${actual_path}"
+			verify_file_match "${expected_path}" "${actual_path}"
+		else
+			eerror "Source YAML ${source_path} doesn't exist for checking" \
+				"against expected JSON dump ${expected_path}"
+			die
+		fi
+	fi
+}
+
+src_test() {
+	_verify_config_dump model.yaml config_dump.json
+	_verify_config_dump private-model.yaml config_dump-private.json
+}
diff --git a/chromeos-base/chromeos-config/chromeos-config-9999.ebuild b/chromeos-base/chromeos-config/chromeos-config-9999.ebuild
index 8552c95..f86a483 100644
--- a/chromeos-base/chromeos-config/chromeos-config-9999.ebuild
+++ b/chromeos-base/chromeos-config/chromeos-config-9999.ebuild
@@ -3,9 +3,6 @@
 
 EAPI=7
 
-# We can drop this if cros-uniboard stops using cros-board.
-CROS_BOARDS=( none )
-
 # This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
 # the canonical empty project.
 CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
@@ -18,7 +15,7 @@
 SRC_URI=""
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="fuzzer generated_cros_config"
+IUSE="fuzzer zephyr_ec"
 
 DEPEND="
 	!fuzzer? ( virtual/chromeos-config-bsp:= )
@@ -32,36 +29,38 @@
 # Merges all of the source YAML config files and generates the
 # corresponding build config and platform config files.
 src_compile() {
-	if use generated_cros_config ; then
-		einfo "Config files already generated, nothing to compile."
-		return 0
-	fi
-
 	local yaml_files=( "${SYSROOT}${UNIBOARD_YAML_DIR}/"*.yaml )
 	local input_yaml_files=()
+	local schema_flags=()
 	local yaml="${WORKDIR}/config.yaml"
 	local c_file="${WORKDIR}/config.c"
 	local configfs_image="${WORKDIR}/configfs.img"
 	local gen_yaml="${SYSROOT}${UNIBOARD_YAML_DIR}/config.yaml"
+
 	# Protobuf based configs generate JSON directly with no YAML.
 	if [[ -f "${SYSROOT}${UNIBOARD_YAML_DIR}/project-config.json" ]]; then
-		cp "${SYSROOT}${UNIBOARD_YAML_DIR}/project-config.json" "${yaml}" || die
-	elif [[ "${yaml_files[0]}" =~ .*[a-z_]+\.yaml$ ]]; then
-		echo "# Generated YAML config file" > "${yaml}"
-		for source_yaml in "${yaml_files[@]}"; do
-			if [[ "${source_yaml}" != "${gen_yaml}" ]]; then
-				einfo "Adding source YAML file ${source_yaml}"
-				# Order matters here.  This will control how YAML files
-				# are merged.  To control the order, change the name
-				# of the input files to be in the order desired.
-				input_yaml_files+=("${source_yaml}")
-			fi
-		done
-		cros_config_schema -o "${yaml}" -m "${input_yaml_files[@]}" \
-			|| die "cros_config_schema failed for build config."
+		yaml_files=( "${SYSROOT}${UNIBOARD_YAML_DIR}/project-config.json" )
 	fi
 
-	if [[ -f "${yaml}" ]]; then
+	for source_yaml in "${yaml_files[@]}"; do
+		if [[ -f "${source_yaml}" && "${source_yaml}" != "${gen_yaml}" ]]; then
+			einfo "Adding source YAML file ${source_yaml}"
+			# Order matters here.  This will control how YAML files
+			# are merged.  To control the order, change the name
+			# of the input files to be in the order desired.
+			input_yaml_files+=("${source_yaml}")
+		fi
+	done
+
+	if use zephyr_ec; then
+		schema_flags+=( --zephyr-ec-configs-only )
+	fi
+
+	if [[ "${#input_yaml_files[@]}" -ne 0 ]]; then
+		cros_config_schema "${schema_flags[@]}" -o "${yaml}" \
+			-m "${input_yaml_files[@]}" \
+			|| die "cros_config_schema failed for build config."
+
 		cros_config_schema -c "${yaml}" \
 			--configfs-output "${configfs_image}" -g "${WORKDIR}" -f "True" \
 			|| die "cros_config_schema failed for platform config."
@@ -72,11 +71,6 @@
 }
 
 src_install() {
-	if use generated_cros_config ; then
-		einfo "Config files already generated, nothing to install."
-		return 0
-	fi
-
 	# Get the directory name only, and use that as the install directory.
 	insinto "${UNIBOARD_JSON_INSTALL_PATH%/*}"
 	if [[ -e "${WORKDIR}/configfs.img" ]]; then
@@ -119,33 +113,7 @@
 	fi
 }
 
-# @FUNCTION: _verify_generated_files
-# @USAGE:
-# @INTERNAL
-# @DESCRIPTION:
-# Verifies that all generated files are installed. Should only be called when
-# the generated_cros_config USE flag is set.
-_verify_generated_files() {
-	local expected_files=(
-		"${SYSROOT}${UNIBOARD_JSON_INSTALL_PATH}"
-		"${SYSROOT}${UNIBOARD_YAML_DIR}/config.yaml"
-		"${SYSROOT}${UNIBOARD_YAML_DIR}/config.c"
-	)
-
-	for f in "${expected_files[@]}"; do
-		if [[ ! -e "${f}" ]]; then
-			eerror "${f} not found."
-			die
-		fi
-	done
-}
-
 src_test() {
-	if use generated_cros_config; then
-		_verify_generated_files
-	else
-		_verify_config_dump model.yaml config_dump.json
-		_verify_config_dump private-model.yaml config_dump-private.json
-	fi
+	_verify_config_dump model.yaml config_dump.json
+	_verify_config_dump private-model.yaml config_dump-private.json
 }
-
diff --git a/chromeos-base/chromeos-cr50-dev/chromeos-cr50-dev-0.0.1-r169.ebuild b/chromeos-base/chromeos-cr50-dev/chromeos-cr50-dev-0.0.1-r169.ebuild
deleted file mode 100644
index 6954ac5..0000000
--- a/chromeos-base/chromeos-cr50-dev/chromeos-cr50-dev-0.0.1-r169.ebuild
+++ /dev/null
@@ -1,211 +0,0 @@
-# Copyright 2019 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.makefile file.
-
-EAPI="7"
-
-CROS_WORKON_COMMIT=("72a3dd167c24a20a6df568d0c84c77dd45a6d2cf" "069cb5acb1d4a8a001404dfecdfab465de639ad1" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
-CROS_WORKON_TREE=("1d1c66467f1ce5e5b0117438c1c104b51f954f5d" "80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/ec"
-	"chromiumos/third_party/tpm2"
-	"chromiumos/third_party/cryptoc"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform/cr50"
-	"third_party/tpm2"
-	"third_party/cryptoc"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}/platform/ec"
-	"${S}/third_party/tpm2"
-	"${S}/third_party/cryptoc"
-)
-CROS_WORKON_EGIT_BRANCH=(
-	"cr50_stab"
-	"master"
-	"master"
-)
-
-inherit coreboot-sdk cros-ec-board cros-workon toolchain-funcs
-
-DESCRIPTION="Google Security Chip firmware code"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/refs/heads/cr50_stab"
-MIRROR_PATH="gs://chromeos-localmirror/distfiles/"
-CR50_ROS=(cr50.prod.ro.A.0.0.11 cr50.prod.ro.B.0.0.11)
-SRC_URI="${CR50_ROS[*]/#/${MIRROR_PATH}}"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="asan cros_host fuzzer msan quiet ubsan verbose"
-
-COMMON_DEPEND="
-	dev-libs/openssl:0=
-	virtual/libusb:1=
-	fuzzer? (
-		dev-libs/protobuf:=
-	)
-"
-
-RDEPEND="
-	!<chromeos-base/chromeos-ec-0.0.2
-	!<chromeos-base/ec-utils-0.0.2
-	${COMMON_DEPEND}
-"
-
-# Need to control versions of chromeos-ec and chromeos-config packages to
-# prevent file collision in /firmware/cr50.
-DEPEND="
-	${COMMON_DEPEND}
-	fuzzer? ( dev-libs/libprotobuf-mutator:= )
-"
-
-# We don't want binchecks since we're cross-compiling firmware images using
-# non-standard layout.
-RESTRICT="binchecks"
-
-# Cr50 signer manifest converted into proper json format.
-CR50_JSON='prod.json'
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/platform/ec"
-}
-
-set_build_env() {
-	cros_use_gcc
-
-	export CROSS_COMPILE=${COREBOOT_SDK_PREFIX_arm}
-
-	tc-export CC BUILD_CC PKG_CONFIG
-	export HOSTCC=${CC}
-	export BUILDCC=${BUILD_CC}
-
-	get_ec_boards
-
-	EC_OPTS=()
-	use quiet && EC_OPTS+=( -s 'V=0' )
-	use verbose && EC_OPTS+=( 'V=1' )
-}
-
-#
-# Convert internal representation of the signer manifest into conventional
-# json.
-#
-prepare_cr50_signer_aid () {
-	local signer_manifest="util/signer/ec_RW-manifest-prod.json"
-	local codesigner="cr50-codesigner"
-
-	elog "Converting prod manifest into json format"
-
-	if ! type -P "${codesigner}" >/dev/null; then
-		ewarn "${codesigner} not available, not preparing ${CR50_JSON}"
-		return
-	fi
-
-	"${codesigner}" --convert-json -i "${signer_manifest}" \
-			-o "${S}/${CR50_JSON}" || \
-		die "failed to convert signer manifest ${signer_manifest}"
-}
-
-src_compile() {
-	set_build_env
-
-	export BOARD=cr50
-	emake -C extra/usb_updater clean
-	emake -C extra/usb_updater gsctool
-
-	if use fuzzer ; then
-		local sanitizers=()
-		use asan && sanitizers+=( 'TEST_ASAN=y' )
-		use msan && sanitizers+=( 'TEST_MSAN=y' )
-		use ubsan && sanitizers+=( 'TEST_UBSAN=y' )
-		emake buildfuzztests "${sanitizers[@]}"
-	fi
-
-	if [[ "${EC_BOARDS[0]}" != "reef" ]]; then
-		elog "Not building Cr50 binaries"
-		return
-	fi
-
-	emake clean
-	emake "${EC_OPTS[@]}"
-	prepare_cr50_signer_aid
-}
-
-#
-# Install additional files, necessary for Cr50 signer inputs.
-#
-install_cr50_signer_aid () {
-	local blob
-
-	if [[ ! -f ${S}/${CR50_JSON} ]]; then
-		ewarn "Not installing Cr50 support files"
-		return
-	fi
-
-	elog "Installing Cr50 signer support files"
-
-	for blob in "${CR50_ROS[@]}"; do
-		local dest_name
-
-		# Carve out prod.ro.? from the RO blob file name. It is known
-		# to follow the pattern of "*prod.ro.[AB]*".
-		dest_name="${blob/*prod.ro/prod.ro}"
-		newins "${DISTDIR}/${blob}" "${dest_name::9}"
-	done
-
-	doins "${S}/board/cr50/rma_key_blob".*.{prod,test}
-	doins "${S}/${CR50_JSON}"
-	doins "${S}/util/signer/fuses.xml"
-}
-
-src_install() {
-	local build_dir
-	local dest_dir
-
-	dosbin "extra/usb_updater/gsctool"
-	dosbin "util/chargen"
-	dosym "gsctool" "/usr/sbin/usb_updater"
-
-	if use fuzzer ; then
-		local f
-
-		insinto /usr/libexec/fuzzers
-		exeinto /usr/libexec/fuzzers
-		for f in build/host/*_fuzz/*_fuzz.exe; do
-			local fuzzer="$(basename "${f}")"
-			local custom_owners="${S}/fuzz/${fuzzer%exe}owners"
-			fuzzer="ec_${fuzzer%_fuzz.exe}_fuzzer"
-			newexe "${f}" "${fuzzer}"
-			einfo "CUSTOM OWNERS = '${custom_owners}'"
-			if [[ -f "${custom_owners}" ]]; then
-				newins "${custom_owners}" "${fuzzer}.owners"
-			else
-				newins "${S}/OWNERS" "${fuzzer}.owners"
-			fi
-		done
-	fi
-
-	if ! use cros_host; then
-		exeinto /usr/local/bin
-		doexe "util/ap_ro_hash.py"
-	fi
-
-	if [[ "${EC_BOARDS[0]}" != "reef" ]]; then
-		elog "Not installing Cr50 binaries"
-		return
-	fi
-
-	build_dir="build/cr50"
-	dest_dir='/firmware/cr50'
-	einfo "Installing cr50 from ${build_dir} into ${dest_dir}"
-
-	insinto "${dest_dir}"
-	doins "${build_dir}/ec.bin"
-	doins "${build_dir}/RW/ec.RW.elf"
-	doins "${build_dir}/RW/ec.RW_B.elf"
-
-	install_cr50_signer_aid
-}
-
diff --git a/chromeos-base/chromeos-cr50-dev/chromeos-cr50-dev-0.0.1-r210.ebuild b/chromeos-base/chromeos-cr50-dev/chromeos-cr50-dev-0.0.1-r210.ebuild
new file mode 100644
index 0000000..b212e32
--- /dev/null
+++ b/chromeos-base/chromeos-cr50-dev/chromeos-cr50-dev-0.0.1-r210.ebuild
@@ -0,0 +1,211 @@
+# Copyright 2019 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.makefile file.
+
+EAPI="7"
+
+CROS_WORKON_COMMIT=("c6095192742c9f59f72a6178ece5a2dd8cea4e43" "37335af9c5488ed349271a8ba9ff209c940a5e2c" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
+CROS_WORKON_TREE=("231827d025fd8a333ffb02249aee9960ae19a701" "679fa8b14bd105ad9959a0f82eaa928d5b18890d" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/ec"
+	"chromiumos/third_party/tpm2"
+	"chromiumos/third_party/cryptoc"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform/cr50"
+	"third_party/tpm2"
+	"third_party/cryptoc"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/platform/ec"
+	"${S}/third_party/tpm2"
+	"${S}/third_party/cryptoc"
+)
+CROS_WORKON_EGIT_BRANCH=(
+	"cr50_stab"
+	"main"
+	"main"
+)
+
+inherit coreboot-sdk cros-ec-board cros-workon toolchain-funcs
+
+DESCRIPTION="Google Security Chip firmware code"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/refs/heads/cr50_stab"
+MIRROR_PATH="gs://chromeos-localmirror/distfiles/"
+CR50_ROS=(cr50.prod.ro.A.0.0.11 cr50.prod.ro.B.0.0.11)
+SRC_URI="${CR50_ROS[*]/#/${MIRROR_PATH}}"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="asan cros_host fuzzer msan quiet ubsan verbose"
+
+COMMON_DEPEND="
+	dev-libs/openssl:0=
+	virtual/libusb:1=
+	fuzzer? (
+		dev-libs/protobuf:=
+	)
+"
+
+RDEPEND="
+	!<chromeos-base/chromeos-ec-0.0.2
+	!<chromeos-base/ec-utils-0.0.2
+	${COMMON_DEPEND}
+"
+
+# Need to control versions of chromeos-ec and chromeos-config packages to
+# prevent file collision in /firmware/cr50.
+DEPEND="
+	${COMMON_DEPEND}
+	fuzzer? ( dev-libs/libprotobuf-mutator:= )
+"
+
+# We don't want binchecks since we're cross-compiling firmware images using
+# non-standard layout.
+RESTRICT="binchecks"
+
+# Cr50 signer manifest converted into proper json format.
+CR50_JSON='prod.json'
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/platform/ec"
+}
+
+set_build_env() {
+	cros_use_gcc
+
+	export CROSS_COMPILE=${COREBOOT_SDK_PREFIX_arm}
+
+	tc-export CC BUILD_CC PKG_CONFIG
+	export HOSTCC=${CC}
+	export BUILDCC=${BUILD_CC}
+
+	get_ec_boards
+
+	EC_OPTS=()
+	use quiet && EC_OPTS+=( -s 'V=0' )
+	use verbose && EC_OPTS+=( 'V=1' )
+}
+
+#
+# Convert internal representation of the signer manifest into conventional
+# json.
+#
+prepare_cr50_signer_aid () {
+	local signer_manifest="util/signer/ec_RW-manifest-prod.json"
+	local codesigner="cr50-codesigner"
+
+	elog "Converting prod manifest into json format"
+
+	if ! type -P "${codesigner}" >/dev/null; then
+		ewarn "${codesigner} not available, not preparing ${CR50_JSON}"
+		return
+	fi
+
+	"${codesigner}" --convert-json -i "${signer_manifest}" \
+			-o "${S}/${CR50_JSON}" || \
+		die "failed to convert signer manifest ${signer_manifest}"
+}
+
+src_compile() {
+	set_build_env
+
+	export BOARD=cr50
+	emake -C extra/usb_updater clean
+	emake -C extra/usb_updater gsctool
+
+	if use fuzzer ; then
+		local sanitizers=()
+		use asan && sanitizers+=( 'TEST_ASAN=y' )
+		use msan && sanitizers+=( 'TEST_MSAN=y' )
+		use ubsan && sanitizers+=( 'TEST_UBSAN=y' )
+		emake buildfuzztests "${sanitizers[@]}"
+	fi
+
+	if [[ "${EC_BOARDS[0]}" != "reef" ]]; then
+		elog "Not building Cr50 binaries"
+		return
+	fi
+
+	emake clean
+	emake "${EC_OPTS[@]}"
+	prepare_cr50_signer_aid
+}
+
+#
+# Install additional files, necessary for Cr50 signer inputs.
+#
+install_cr50_signer_aid () {
+	local blob
+
+	if [[ ! -f ${S}/${CR50_JSON} ]]; then
+		ewarn "Not installing Cr50 support files"
+		return
+	fi
+
+	elog "Installing Cr50 signer support files"
+
+	for blob in "${CR50_ROS[@]}"; do
+		local dest_name
+
+		# Carve out prod.ro.? from the RO blob file name. It is known
+		# to follow the pattern of "*prod.ro.[AB]*".
+		dest_name="${blob/*prod.ro/prod.ro}"
+		newins "${DISTDIR}/${blob}" "${dest_name::9}"
+	done
+
+	doins "${S}/board/cr50/rma_key_blob".*.{prod,test}
+	doins "${S}/${CR50_JSON}"
+	doins "${S}/util/signer/fuses.xml"
+}
+
+src_install() {
+	local build_dir
+	local dest_dir
+
+	dosbin "extra/usb_updater/gsctool"
+	dosbin "util/chargen"
+	dosym "gsctool" "/usr/sbin/usb_updater"
+
+	if use fuzzer ; then
+		local f
+
+		insinto /usr/libexec/fuzzers
+		exeinto /usr/libexec/fuzzers
+		for f in build/host/*_fuzz/*_fuzz.exe; do
+			local fuzzer="$(basename "${f}")"
+			local custom_owners="${S}/fuzz/${fuzzer%exe}owners"
+			fuzzer="ec_${fuzzer%_fuzz.exe}_fuzzer"
+			newexe "${f}" "${fuzzer}"
+			einfo "CUSTOM OWNERS = '${custom_owners}'"
+			if [[ -f "${custom_owners}" ]]; then
+				newins "${custom_owners}" "${fuzzer}.owners"
+			else
+				newins "${S}/OWNERS" "${fuzzer}.owners"
+			fi
+		done
+	fi
+
+	if ! use cros_host; then
+		exeinto /usr/local/bin
+		doexe "util/ap_ro_hash.py"
+	fi
+
+	if [[ "${EC_BOARDS[0]}" != "reef" ]]; then
+		elog "Not installing Cr50 binaries"
+		return
+	fi
+
+	build_dir="build/cr50"
+	dest_dir='/firmware/cr50'
+	einfo "Installing cr50 from ${build_dir} into ${dest_dir}"
+
+	insinto "${dest_dir}"
+	doins "${build_dir}/ec.bin"
+	doins "${build_dir}/RW/ec.RW.elf"
+	doins "${build_dir}/RW/ec.RW_B.elf"
+
+	install_cr50_signer_aid
+}
+
diff --git a/chromeos-base/chromeos-cr50-dev/chromeos-cr50-dev-9999.ebuild b/chromeos-base/chromeos-cr50-dev/chromeos-cr50-dev-9999.ebuild
index 738a1a3..80ea72a 100644
--- a/chromeos-base/chromeos-cr50-dev/chromeos-cr50-dev-9999.ebuild
+++ b/chromeos-base/chromeos-cr50-dev/chromeos-cr50-dev-9999.ebuild
@@ -21,8 +21,8 @@
 )
 CROS_WORKON_EGIT_BRANCH=(
 	"cr50_stab"
-	"master"
-	"master"
+	"main"
+	"main"
 )
 
 inherit coreboot-sdk cros-ec-board cros-workon toolchain-funcs
diff --git a/chromeos-base/chromeos-cr50-scripts/chromeos-cr50-scripts-0.0.1-r72.ebuild b/chromeos-base/chromeos-cr50-scripts/chromeos-cr50-scripts-0.0.1-r74.ebuild
similarity index 100%
rename from chromeos-base/chromeos-cr50-scripts/chromeos-cr50-scripts-0.0.1-r72.ebuild
rename to chromeos-base/chromeos-cr50-scripts/chromeos-cr50-scripts-0.0.1-r74.ebuild
diff --git a/chromeos-base/chromeos-cr50-scripts/files/cr50-reset.sh b/chromeos-base/chromeos-cr50-scripts/files/cr50-reset.sh
index e3c3735..ca2894c 100755
--- a/chromeos-base/chromeos-cr50-scripts/files/cr50-reset.sh
+++ b/chromeos-base/chromeos-cr50-scripts/files/cr50-reset.sh
@@ -18,7 +18,7 @@
 gbb_force_dev_mode() {
   # Disable SW WP and set GBB_FLAG_FORCE_DEV_SWITCH_ON (0x8) to force boot in
   # developer mode after RMA reset.
-  flashrom -p host --wp-disable --wp-range 0 0 > /dev/null 2>&1
+  flashrom -p host --wp-disable --wp-range 0,0 > /dev/null 2>&1
   local flags="$(/usr/share/vboot/bin/get_gbb_flags.sh 2>/dev/null \
     | awk '/Chrome OS GBB set flags:/ {print $NF}')"
   local new_flags="$(printf '0x%x' "$(( ${flags} | 0x8 ))")"
diff --git a/chromeos-base/chromeos-cr50-scripts/files/cr50-set-board-id.sh b/chromeos-base/chromeos-cr50-scripts/files/cr50-set-board-id.sh
index 31f7ee7..beabc88 100755
--- a/chromeos-base/chromeos-cr50-scripts/files/cr50-set-board-id.sh
+++ b/chromeos-base/chromeos-cr50-scripts/files/cr50-set-board-id.sh
@@ -210,7 +210,7 @@
       # The check_device function will not return
       check_device
       ;;
-    "whitelabel_flags")
+    "whitelabel_pvt_flags")
       # Whitelabel flags are set by using 0xffffffff as the rlz and the
       # whitelabel flags. Cr50 images that support partial board id will ignore
       # the board id type if it's 0xffffffff and only set the flags.
@@ -225,9 +225,21 @@
       rlz="0xffffffff"
       flag="0x3f80"
       ;;
-    "whitelabel")
+    "whitelabel_dev_flags")
+      # See "whitelabel_pvt_flags" for more details.
+      check_cr50_support "0.3.24" "0.4.24" "partial board id"
+
+      rlz="0xffffffff"
+      # Per discussion in b/179626571
+      flag="0x3f7f"
+      ;;
+    "whitelabel_pvt")
       flag="0x3f80"
       ;;
+    "whitelabel_dev")
+      # Per discussion in b/179626571
+      flag="0x3f7f"
+      ;;
     "unknown")
       flag="0xff00"
       ;;
diff --git a/chromeos-base/chromeos-cr50/Manifest b/chromeos-base/chromeos-cr50/Manifest
index 127846b..b77ff50 100644
--- a/chromeos-base/chromeos-cr50/Manifest
+++ b/chromeos-base/chromeos-cr50/Manifest
@@ -1,2 +1,2 @@
-DIST cr50.r0.0.11.w0.5.7.tbz2 205797 BLAKE2B d706bfcbcd39e8bb9bb6a629d7ccd669e6077d19828269bb7a2c4327bbcbcd70f43acbb0b5f9bdbffb5f305fbe5a1ce5dc4171c274b17e71ae34faae9c9623a0 SHA512 9169ec67c7de9ff284a7105dec203606cb6811925ab8dc2ac3771799607b5e7296458b703c7d5b233d563d9e6e19865e141a254da6758eb7ddd7b98af7d36455
-DIST cr50.r0.0.11.w0.6.7_FFFF_00000000_00000010.tbz2 205728 BLAKE2B c479b5832511a4d3ecb87380d6519f4702f1385a83a767938ca263b511643540be983a747b1128394056296423333b4493ed844988809bb51b2a321d9bf3efca SHA512 79c86a44484b5f902913df21a3f34bc8e968e019e3b986ae19eff56ea51323a05da36e79f4ab6bc256ab6076ead75f079cf17f0e87a5a7ff374cc62c55cae0f3
+DIST cr50.r0.0.11.w0.5.30.tbz2 205669 BLAKE2B 5977c3834a06d18b493ce8650e904dbcc9f827ad7b0bcd5a755fbaeee79bde60cfe1b3f60e64458fb9326e224c8e12f8a14e719b37ce5a43398fa09a63535e37 SHA512 2b2150c74078ca7d6d3471890eb014be4b60262a539f64f01d7dbbfa33ed015d736d6f0f4bc4908b7871d4552a3b009e556c9e916a68ba286c8342f60b64524b
+DIST cr50.r0.0.11.w0.6.30_FFFF_00000000_00000010.tbz2 205687 BLAKE2B 9d67bbf8e08183a4ffc9e6f7cbc9f0661b61367379766558def331cbc0380178735fbb4245c73ac5008e92042f33299e396e92bb03ab0d51a73ba4505b2573a3 SHA512 9d85e12e9da8cbfb5852a6e638870741130fed2b6ab9cf08b31ac693b95d24ba8de918aafa85dcacf38f5482d987362a7ddfff5e76389ebfa226934a9a5f4fc3
diff --git a/chromeos-base/chromeos-cr50/chromeos-cr50-0.0.1-r95.ebuild b/chromeos-base/chromeos-cr50/chromeos-cr50-0.0.1-r103.ebuild
similarity index 100%
rename from chromeos-base/chromeos-cr50/chromeos-cr50-0.0.1-r95.ebuild
rename to chromeos-base/chromeos-cr50/chromeos-cr50-0.0.1-r103.ebuild
diff --git a/chromeos-base/chromeos-cr50/chromeos-cr50-0.0.1.ebuild b/chromeos-base/chromeos-cr50/chromeos-cr50-0.0.1.ebuild
index 4204d50..2990e05 100644
--- a/chromeos-base/chromeos-cr50/chromeos-cr50-0.0.1.ebuild
+++ b/chromeos-base/chromeos-cr50/chromeos-cr50-0.0.1.ebuild
@@ -17,8 +17,8 @@
 #
 # Some boards can be using their custom Cr50 images, for those board the image
 # name is overridden in the board's overlay chromeos-cr50 ebuild.
-PROD_IMAGE="cr50.r0.0.11.w0.5.7"
-PRE_PVT_IMAGE="cr50.r0.0.11.w0.6.7_FFFF_00000000_00000010"
+PROD_IMAGE="cr50.r0.0.11.w0.5.30"
+PRE_PVT_IMAGE="cr50.r0.0.11.w0.6.30_FFFF_00000000_00000010"
 
 # Let's make sure that both are pulled in and included in the manifest.
 CR50_BASE_NAMES=( "${PROD_IMAGE}" "${PRE_PVT_IMAGE}" )
diff --git a/chromeos-base/chromeos-dbus-bindings/chromeos-dbus-bindings-0.0.1-r2627.ebuild b/chromeos-base/chromeos-dbus-bindings/chromeos-dbus-bindings-0.0.1-r2627.ebuild
deleted file mode 100644
index 9360ccd..0000000
--- a/chromeos-base/chromeos-dbus-bindings/chromeos-dbus-bindings-0.0.1-r2627.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="0f2e3a8a1c828743be75fb7caeae33a4ad0c056b"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "9d31c60be7abd29c5a17c96bb681ea5d094c8a97" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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-dbus-bindings .gn"
-
-PLATFORM_SUBDIR="${PN}"
-PLATFORM_NATIVE_TEST="yes"
-
-inherit cros-workon platform
-
-DESCRIPTION="Utility for building Chrome D-Bus bindings from an XML description"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-dbus-bindings"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	dev-libs/expat
-	sys-apps/dbus"
-DEPEND="${RDEPEND}"
-
-src_install() {
-	dobin "${OUT}"/generate-chromeos-dbus-bindings
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/chromeos_dbus_bindings_unittest"
-}
diff --git a/chromeos-base/chromeos-dbus-bindings/chromeos-dbus-bindings-0.0.1-r2655.ebuild b/chromeos-base/chromeos-dbus-bindings/chromeos-dbus-bindings-0.0.1-r2655.ebuild
new file mode 100644
index 0000000..79b4e9a
--- /dev/null
+++ b/chromeos-base/chromeos-dbus-bindings/chromeos-dbus-bindings-0.0.1-r2655.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e8023258ebab0150d1674664c16f6d197136cc8b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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-dbus-bindings .gn"
+
+PLATFORM_SUBDIR="${PN}"
+PLATFORM_NATIVE_TEST="yes"
+
+inherit cros-workon platform
+
+DESCRIPTION="Utility for building Chrome D-Bus bindings from an XML description"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-dbus-bindings"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	dev-libs/expat
+	sys-apps/dbus"
+DEPEND="${RDEPEND}"
+
+src_install() {
+	dobin "${OUT}"/generate-chromeos-dbus-bindings
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/chromeos_dbus_bindings_unittest"
+}
diff --git a/chromeos-base/chromeos-ec-headers/chromeos-ec-headers-0.0.1-r4231.ebuild b/chromeos-base/chromeos-ec-headers/chromeos-ec-headers-0.0.1-r4231.ebuild
deleted file mode 100644
index 61255e9..0000000
--- a/chromeos-base/chromeos-ec-headers/chromeos-ec-headers-0.0.1-r4231.ebuild
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright 2018 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("9e422c3c05fdd324565049b09be27c446f9dc0ca" "72a3dd167c24a20a6df568d0c84c77dd45a6d2cf")
-CROS_WORKON_TREE=("b4694ca5abc8c1be1000a1efe7a7bd8a02ddd856" "1d1c66467f1ce5e5b0117438c1c104b51f954f5d")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/ec"
-	"chromiumos/platform/ec"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform/ec"
-	"platform/cr50"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}/platform/ec"
-	"${S}/platform/cr50"
-)
-CROS_WORKON_EGIT_BRANCH=(
-	"master"
-	"cr50_stab"
-)
-
-CROS_WORKON_INCREMENTAL_BUILD=1
-
-inherit cros-workon
-
-DESCRIPTION="Exported headers from the embedded controller codebase."
-HOMEPAGE="https://www.chromium.org/chromium-os/ec-development"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND=""
-DEPEND=""
-
-# No configuration or compilation necessary. This is a header only package.
-src_configure() { :; }
-src_compile() { :; }
-
-src_install() {
-	dir_ec=${CROS_WORKON_DESTDIR[0]}
-	dir_cr50=${CROS_WORKON_DESTDIR[1]}
-
-	insinto /usr/include/trunks/cr50_headers/
-	doins "${dir_cr50}"/include/pinweaver_types.h
-	doins "${dir_cr50}"/include/u2f.h
-	doins "${dir_cr50}"/board/cr50/tpm2/virtual_nvmem.h
-	insinto /usr/include/chromeos/ec/
-	doins "${dir_ec}"/include/ec_commands.h
-	doins "${dir_ec}"/util/cros_ec_dev.h
-}
diff --git a/chromeos-base/chromeos-ec-headers/chromeos-ec-headers-0.0.1-r5531.ebuild b/chromeos-base/chromeos-ec-headers/chromeos-ec-headers-0.0.1-r5531.ebuild
new file mode 100644
index 0000000..0db47d8
--- /dev/null
+++ b/chromeos-base/chromeos-ec-headers/chromeos-ec-headers-0.0.1-r5531.ebuild
@@ -0,0 +1,56 @@
+# Copyright 2018 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("ba5d0fb018cf200320efad9cc91b89e1f4a6d80c" "c6095192742c9f59f72a6178ece5a2dd8cea4e43")
+CROS_WORKON_TREE=("ef831ef09b8fdc0da7cceb25def086f853ae97cd" "231827d025fd8a333ffb02249aee9960ae19a701")
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/ec"
+	"chromiumos/platform/ec"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform/ec"
+	"platform/cr50"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/platform/ec"
+	"${S}/platform/cr50"
+)
+CROS_WORKON_EGIT_BRANCH=(
+	"master"
+	"cr50_stab"
+)
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+inherit cros-workon
+
+DESCRIPTION="Exported headers from the embedded controller codebase."
+HOMEPAGE="https://www.chromium.org/chromium-os/ec-development"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND=""
+DEPEND=""
+
+# No configuration or compilation necessary. This is a header only package.
+src_configure() { :; }
+src_compile() { :; }
+
+src_install() {
+	dir_ec=${CROS_WORKON_DESTDIR[0]}
+	dir_cr50=${CROS_WORKON_DESTDIR[1]}
+
+	insinto /usr/include/trunks/cr50_headers/
+	doins "${dir_cr50}"/include/pinweaver_types.h
+	doins "${dir_cr50}"/include/u2f.h
+	doins "${dir_cr50}"/board/cr50/tpm2/virtual_nvmem.h
+	insinto /usr/include/chromeos/ec/
+	doins "${dir_ec}"/include/ec_commands.h
+	doins "${dir_ec}"/util/cros_ec_dev.h
+}
diff --git a/chromeos-base/chromeos-ec/chromeos-ec-0.0.2-r10238.ebuild b/chromeos-base/chromeos-ec/chromeos-ec-0.0.2-r10238.ebuild
new file mode 100644
index 0000000..6031824
--- /dev/null
+++ b/chromeos-base/chromeos-ec/chromeos-ec-0.0.2-r10238.ebuild
@@ -0,0 +1,45 @@
+# Copyright (C) 2012 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.makefile file.
+
+# A note about this ebuild: this ebuild is Unified Build enabled but
+# not in the way in which most other ebuilds with Unified Build
+# knowledge are: the primary use for this ebuild is for engineer-local
+# work or firmware builder work. In both cases, the build might be
+# happening on a branch in which only one of many of the models are
+# available to build. The logic in this ebuild succeeds so long as one
+# of the many models successfully builds.
+
+# Increment the "eclass bug workaround count" below when you change
+# "cros-ec.eclass" to work around http://crbug.com/220902.
+#
+# eclass bug workaround count: 2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("ba5d0fb018cf200320efad9cc91b89e1f4a6d80c" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
+CROS_WORKON_TREE=("ef831ef09b8fdc0da7cceb25def086f853ae97cd" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/ec"
+	"chromiumos/third_party/cryptoc"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform/ec"
+	"third_party/cryptoc"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/platform/ec"
+	"${S}/third_party/cryptoc"
+)
+
+inherit cros-ec cros-workon
+
+# Make sure config tools use the latest schema.
+BDEPEND=">=chromeos-base/chromeos-config-host-0.0.2"
+
+MIRROR_PATH="gs://chromeos-localmirror/distfiles/"
+DESCRIPTION="Embedded Controller firmware code"
+KEYWORDS="*"
+
+# Restrict strip because chromeos-ec package installs unstrippable firmware.
+RESTRICT="strip"
diff --git a/chromeos-base/chromeos-ec/chromeos-ec-0.0.2-r8959.ebuild b/chromeos-base/chromeos-ec/chromeos-ec-0.0.2-r8959.ebuild
deleted file mode 100644
index 2c05b46..0000000
--- a/chromeos-base/chromeos-ec/chromeos-ec-0.0.2-r8959.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2012 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.makefile file.
-
-# A note about this ebuild: this ebuild is Unified Build enabled but
-# not in the way in which most other ebuilds with Unified Build
-# knowledge are: the primary use for this ebuild is for engineer-local
-# work or firmware builder work. In both cases, the build might be
-# happening on a branch in which only one of many of the models are
-# available to build. The logic in this ebuild succeeds so long as one
-# of the many models successfully builds.
-
-# Increment the "eclass bug workaround count" below when you change
-# "cros-ec.eclass" to work around http://crbug.com/220902.
-#
-# eclass bug workaround count: 2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("9e422c3c05fdd324565049b09be27c446f9dc0ca" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
-CROS_WORKON_TREE=("b4694ca5abc8c1be1000a1efe7a7bd8a02ddd856" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/ec"
-	"chromiumos/third_party/cryptoc"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform/ec"
-	"third_party/cryptoc"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}/platform/ec"
-	"${S}/third_party/cryptoc"
-)
-
-inherit cros-ec cros-workon
-
-# Make sure config tools use the latest schema.
-BDEPEND=">=chromeos-base/chromeos-config-host-0.0.2"
-
-MIRROR_PATH="gs://chromeos-localmirror/distfiles/"
-DESCRIPTION="Embedded Controller firmware code"
-KEYWORDS="*"
diff --git a/chromeos-base/chromeos-ec/chromeos-ec-9999.ebuild b/chromeos-base/chromeos-ec/chromeos-ec-9999.ebuild
index 6b9ede5..ba47806 100644
--- a/chromeos-base/chromeos-ec/chromeos-ec-9999.ebuild
+++ b/chromeos-base/chromeos-ec/chromeos-ec-9999.ebuild
@@ -38,3 +38,6 @@
 MIRROR_PATH="gs://chromeos-localmirror/distfiles/"
 DESCRIPTION="Embedded Controller firmware code"
 KEYWORDS="~*"
+
+# Restrict strip because chromeos-ec package installs unstrippable firmware.
+RESTRICT="strip"
diff --git a/chromeos-base/chromeos-firmware-null/chromeos-firmware-null-0.0.3-r161.ebuild b/chromeos-base/chromeos-firmware-null/chromeos-firmware-null-0.0.3-r161.ebuild
deleted file mode 100644
index a7ad388..0000000
--- a/chromeos-base/chromeos-firmware-null/chromeos-firmware-null-0.0.3-r161.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="b4185213e5b7376dbcccd6561ce01b74ed68fa26"
-CROS_WORKON_TREE="579ceeab90c24c84d387d7f87159b3343c29e804"
-CROS_WORKON_LOCALNAME="platform/firmware"
-CROS_WORKON_PROJECT="chromiumos/platform/firmware"
-
-inherit cros-workon cros-firmware
-
-DESCRIPTION="Chrome OS Firmware (Template - change to board name)"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/firmware/"
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND=""
-
-### FIRMWARE IMAGES ###
-# Specify the firmware images to update. You can use file path or URLs (in
-# ebuild SRC_URI syntax). Most projects will use Binary Component Server (BCS)
-# links. To do that, archive only the image file as a tbz2 and upload to CPFE
-# web site (http://www.google.com/chromeos/partner/fe/) with relative path
-# chromeos-base/chromeos-firmware-${BOARD}. Then you can refer to the file as
-# "bcs://filename.tbz2".
-#
-# MAIN_IMAGE controls AP RO firmware (also RW if MAIN_RW_IMAGE is empty).
-# MAIN_RW_IMAGE controls AP RW firmware when you need different RO & RW.
-# EC_IMAGE controls EC RO firmware (RW will be synced from MAIN_[RW_]IMAGE).
-# For more details, read
-# https://chromium.googlesource.com/chromiumos/platform/firmware/+/master/README.md
-#
-# When you modify any image files below, please also update manifest file:
-#  (chroot) ebuild chromeos-firmware-${BOARD}-9999.ebuild manifest
-CROS_FIRMWARE_MAIN_IMAGE=""
-CROS_FIRMWARE_MAIN_RW_IMAGE=""
-CROS_FIRMWARE_EC_IMAGE=""
-
-### EXTRA FILES ###
-# ${FILESDIR}/extra will be automatically merged into updater package.
-# ${FILESDIR}/sbin will be automatically installed to /usr/sbin on rootfs.
-# Put board customization (updater_custom.sh) in ${FILESDIR}/extra.
-# If you need more files, define a CROS_FIRMWARE_EXTRA_LIST with the file names
-# and directory names to include, delimited by semicolon.
-
-cros-firmware_setup_source
-
-# Remove/Adapt script below here when using the template.
-src_unpack() {
-	einfo "Dummy implementation to replace cros-firmware.eclass"
-	cros-workon_src_unpack
-}
-
-src_compile() {
-	einfo "Dummy implementation to replace cros-firmware.eclass"
-}
-
-src_install() {
-	einfo "Dummy implementation to replace cros-firmware.eclass"
-}
diff --git a/chromeos-base/chromeos-firmware-null/chromeos-firmware-null-0.0.3-r162.ebuild b/chromeos-base/chromeos-firmware-null/chromeos-firmware-null-0.0.3-r162.ebuild
new file mode 100644
index 0000000..47c2c76
--- /dev/null
+++ b/chromeos-base/chromeos-firmware-null/chromeos-firmware-null-0.0.3-r162.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="07591e49e9dd9b33b49b0e791feecb5cb8d6dee0"
+CROS_WORKON_TREE="6f2eebf22cd242e9c01723dd03405fdd47e15478"
+CROS_WORKON_LOCALNAME="platform/firmware"
+CROS_WORKON_PROJECT="chromiumos/platform/firmware"
+
+inherit cros-workon cros-firmware
+
+DESCRIPTION="Chrome OS Firmware (Template - change to board name)"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/firmware/"
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND=""
+
+### FIRMWARE IMAGES ###
+# Specify the firmware images to update. You can use file path or URLs (in
+# ebuild SRC_URI syntax). Most projects will use Binary Component Server (BCS)
+# links. To do that, archive only the image file as a tbz2 and upload to CPFE
+# web site (http://www.google.com/chromeos/partner/fe/) with relative path
+# chromeos-base/chromeos-firmware-${BOARD}. Then you can refer to the file as
+# "bcs://filename.tbz2".
+#
+# MAIN_IMAGE controls AP RO firmware (also RW if MAIN_RW_IMAGE is empty).
+# MAIN_RW_IMAGE controls AP RW firmware when you need different RO & RW.
+# EC_IMAGE controls EC RO firmware (RW will be synced from MAIN_[RW_]IMAGE).
+# For more details, read
+# https://chromium.googlesource.com/chromiumos/platform/firmware/+/master/README.md
+#
+# When you modify any image files below, please also update manifest file:
+#  (chroot) ebuild chromeos-firmware-${BOARD}-9999.ebuild manifest
+CROS_FIRMWARE_MAIN_IMAGE=""
+CROS_FIRMWARE_MAIN_RW_IMAGE=""
+CROS_FIRMWARE_EC_IMAGE=""
+
+### EXTRA FILES ###
+# ${FILESDIR}/extra will be automatically merged into updater package.
+# ${FILESDIR}/sbin will be automatically installed to /usr/sbin on rootfs.
+# Put board customization (updater_custom.sh) in ${FILESDIR}/extra.
+# If you need more files, define a CROS_FIRMWARE_EXTRA_LIST with the file names
+# and directory names to include, delimited by semicolon.
+
+cros-firmware_setup_source
+
+# Remove/Adapt script below here when using the template.
+src_unpack() {
+	einfo "Dummy implementation to replace cros-firmware.eclass"
+	cros-workon_src_unpack
+}
+
+src_compile() {
+	einfo "Dummy implementation to replace cros-firmware.eclass"
+}
+
+src_install() {
+	einfo "Dummy implementation to replace cros-firmware.eclass"
+}
diff --git a/chromeos-base/chromeos-fpmcu-unittests/chromeos-fpmcu-unittests-0.0.1-r2095.ebuild b/chromeos-base/chromeos-fpmcu-unittests/chromeos-fpmcu-unittests-0.0.1-r2095.ebuild
new file mode 100644
index 0000000..044b21e
--- /dev/null
+++ b/chromeos-base/chromeos-fpmcu-unittests/chromeos-fpmcu-unittests-0.0.1-r2095.ebuild
@@ -0,0 +1,68 @@
+# Copyright 2020 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.makefile file.
+
+# Increment the "eclass bug workaround count" below when you change
+# "cros-ec.eclass" to work around http://crbug.com/220902.
+#
+# eclass bug workaround count: 1
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("ba5d0fb018cf200320efad9cc91b89e1f4a6d80c" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
+CROS_WORKON_TREE=("ef831ef09b8fdc0da7cceb25def086f853ae97cd" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/ec"
+	"chromiumos/third_party/cryptoc"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform/ec"
+	"third_party/cryptoc"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/platform/ec"
+	"${S}/third_party/cryptoc"
+)
+
+inherit coreboot-sdk cros-ec cros-workon
+
+DESCRIPTION="ChromeOS fingerprint MCU unittest binaries"
+KEYWORDS="*"
+
+# Make sure config tools use the latest schema.
+BDEPEND=">=chromeos-base/chromeos-config-host-0.0.2"
+
+get_target_boards() {
+	# TODO(yichengli): Add other FPMCUs once the test lab has them.
+	EC_BOARDS=("bloonchipper")
+}
+
+src_compile() {
+	cros-ec_set_build_env
+	get_target_boards
+
+	# TODO(yichengli): Add other FPMCU boards once the test lab has them.
+	# NOTE: Any changes here must also be reflected in
+	# platform/ec/firmware_builder.py which is used for the ec cq
+	local target
+	einfo "Building FPMCU unittest binary for targets: ${EC_BOARDS[*]}"
+	for target in "${EC_BOARDS[@]}"; do
+		emake CROSS_COMPILE="${COREBOOT_SDK_PREFIX_arm}" BOARD="${target}" \
+			"${EC_OPTS[@]}" clean
+		emake CROSS_COMPILE="${COREBOOT_SDK_PREFIX_arm}" BOARD="${target}" \
+			"${EC_OPTS[@]}" tests
+	done
+}
+
+src_install() {
+	local target
+	for target in "${EC_BOARDS[@]}"; do
+		insinto /firmware/chromeos-fpmcu-unittests/"${target}"
+		doins build/"${target}"/*.bin
+	done
+}
+
+# Do not run cros-ec's tests.
+src_test() {
+	:
+}
diff --git a/chromeos-base/chromeos-fpmcu-unittests/chromeos-fpmcu-unittests-0.0.1-r817.ebuild b/chromeos-base/chromeos-fpmcu-unittests/chromeos-fpmcu-unittests-0.0.1-r817.ebuild
deleted file mode 100644
index 67ccba5..0000000
--- a/chromeos-base/chromeos-fpmcu-unittests/chromeos-fpmcu-unittests-0.0.1-r817.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2020 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.makefile file.
-
-# Increment the "eclass bug workaround count" below when you change
-# "cros-ec.eclass" to work around http://crbug.com/220902.
-#
-# eclass bug workaround count: 1
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("9e422c3c05fdd324565049b09be27c446f9dc0ca" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
-CROS_WORKON_TREE=("b4694ca5abc8c1be1000a1efe7a7bd8a02ddd856" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/ec"
-	"chromiumos/third_party/cryptoc"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform/ec"
-	"third_party/cryptoc"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}/platform/ec"
-	"${S}/third_party/cryptoc"
-)
-
-inherit coreboot-sdk cros-ec cros-workon
-
-DESCRIPTION="ChromeOS fingerprint MCU unittest binaries"
-KEYWORDS="*"
-
-# Make sure config tools use the latest schema.
-BDEPEND=">=chromeos-base/chromeos-config-host-0.0.2"
-
-get_target_boards() {
-	# TODO(yichengli): Add other FPMCUs once the test lab has them.
-	EC_BOARDS=("bloonchipper")
-}
-
-src_compile() {
-	cros-ec_set_build_env
-	get_target_boards
-
-	# TODO(yichengli): Add other FPMCU boards once the test lab has them.
-	# NOTE: Any changes here must also be reflected in
-	# platform/ec/firmware_builder.py which is used for the ec cq
-	local target
-	einfo "Building FPMCU unittest binary for targets: ${EC_BOARDS[*]}"
-	for target in "${EC_BOARDS[@]}"; do
-		emake CROSS_COMPILE="${COREBOOT_SDK_PREFIX_arm}" BOARD="${target}" \
-			"${EC_OPTS[@]}" clean
-		emake CROSS_COMPILE="${COREBOOT_SDK_PREFIX_arm}" BOARD="${target}" \
-			"${EC_OPTS[@]}" tests
-	done
-}
-
-src_install() {
-	local target
-	for target in "${EC_BOARDS[@]}"; do
-		insinto /firmware/chromeos-fpmcu-unittests/"${target}"
-		doins build/"${target}"/*.bin
-	done
-}
-
-# Do not run cros-ec's tests.
-src_test() {
-	:
-}
diff --git a/chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3100.ebuild b/chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3100.ebuild
deleted file mode 100644
index 0de9a02..0000000
--- a/chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3100.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "5bb685cc7bac46b747661bbf7fdc73e737421c15" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk image-burner .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="image-burner"
-
-inherit cros-workon platform
-
-DESCRIPTION="Image-burning service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/image-burner/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	dev-libs/dbus-glib
-	dev-libs/glib
-	sys-apps/rootdev
-"
-DEPEND="${RDEPEND}
-	chromeos-base/system_api
-"
-
-src_install() {
-	dosbin "${OUT}"/image_burner
-
-	insinto /etc/dbus-1/system.d
-	doins ImageBurner.conf
-
-	insinto /usr/share/dbus-1/system-services
-	doins org.chromium.ImageBurner.service
-
-	insinto /etc/init
-	doins init/image-burner.conf
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/unittest_runner"
-}
diff --git a/chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3133.ebuild b/chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3133.ebuild
new file mode 100644
index 0000000..0086651
--- /dev/null
+++ b/chromeos-base/chromeos-imageburner/chromeos-imageburner-0.0.1-r3133.ebuild
@@ -0,0 +1,63 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "78bbddcb5c152ba63cb9408b189179ad60cfd2bc" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk image-burner .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="image-burner"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Image-burning service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/image-burner/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="user_session_isolation"
+
+RDEPEND="
+	sys-apps/rootdev
+"
+DEPEND="${RDEPEND}
+	chromeos-base/system_api
+"
+
+pkg_preinst() {
+	# Create user and group for image-burner.
+	enewuser "image-burner"
+	enewgroup "image-burner"
+}
+
+src_install() {
+	dosbin "${OUT}"/image_burner
+
+	insinto /etc/dbus-1/system.d
+	doins ImageBurner.conf
+
+	insinto /usr/share/dbus-1/system-services
+	doins org.chromium.ImageBurner.service
+
+	insinto /etc/init
+	doins init/image-burner.conf
+
+	# TODO(crbug/766130): Remove the following sed block when non-root mount
+	# namespace is by default enabled.
+	# Remove the env var value related to mount namespace if USE flag
+	# user_session_isolation is not present.
+	if ! use user_session_isolation; then
+		sed -i -e "/env MNT_NS_ARGS=/s:=.*:=:" \
+			"${D}"/etc/init/image-burner.conf || die
+	fi
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/unittest_runner"
+}
diff --git a/chromeos-base/chromeos-imageburner/chromeos-imageburner-9999.ebuild b/chromeos-base/chromeos-imageburner/chromeos-imageburner-9999.ebuild
index ebc9623..33fa0a9 100644
--- a/chromeos-base/chromeos-imageburner/chromeos-imageburner-9999.ebuild
+++ b/chromeos-base/chromeos-imageburner/chromeos-imageburner-9999.ebuild
@@ -1,7 +1,7 @@
 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
 # 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
@@ -10,7 +10,7 @@
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="image-burner"
 
-inherit cros-workon platform
+inherit cros-workon platform user
 
 DESCRIPTION="Image-burning service for Chromium OS"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/image-burner/"
@@ -19,17 +19,21 @@
 LICENSE="BSD-Google"
 SLOT="0"
 KEYWORDS="~*"
-IUSE=""
+IUSE="user_session_isolation"
 
 RDEPEND="
-	dev-libs/dbus-glib
-	dev-libs/glib
 	sys-apps/rootdev
 "
 DEPEND="${RDEPEND}
 	chromeos-base/system_api
 "
 
+pkg_preinst() {
+	# Create user and group for image-burner.
+	enewuser "image-burner"
+	enewgroup "image-burner"
+}
+
 src_install() {
 	dosbin "${OUT}"/image_burner
 
@@ -41,6 +45,15 @@
 
 	insinto /etc/init
 	doins init/image-burner.conf
+
+	# TODO(crbug/766130): Remove the following sed block when non-root mount
+	# namespace is by default enabled.
+	# Remove the env var value related to mount namespace if USE flag
+	# user_session_isolation is not present.
+	if ! use user_session_isolation; then
+		sed -i -e "/env MNT_NS_ARGS=/s:=.*:=:" \
+			"${D}"/etc/init/image-burner.conf || die
+	fi
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/chromeos-init/chromeos-init-0.0.25-r4184.ebuild b/chromeos-base/chromeos-init/chromeos-init-0.0.25-r4184.ebuild
deleted file mode 100644
index a288ee1..0000000
--- a/chromeos-base/chromeos-init/chromeos-init-0.0.25-r4184.ebuild
+++ /dev/null
@@ -1,239 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "0be9b01657e3488badf97e2e2160b2c16db87cef" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-# TODO(crbug.com/809389): Avoid #include-ing platform2 headers directly.
-CROS_WORKON_SUBTREE="common-mk init metrics .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="init"
-
-inherit tmpfiles cros-workon platform user
-
-DESCRIPTION="Upstart init scripts for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/init/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="
-	arcpp arcvm cros_embedded +debugd +encrypted_stateful +encrypted_reboot_vault
-	frecon -lvm_stateful_partition kernel-3_8 kernel-3_10 kernel-3_14
-	kernel-3_18 +midi -s3halt +syslog systemd +udev vivid vtconsole"
-
-# secure-erase-file, vboot_reference, and rootdev are needed for clobber-state.
-COMMON_DEPEND="
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/secure-erase-file:=
-	chromeos-base/vboot_reference:=
-	sys-apps/rootdev:=
-"
-
-DEPEND="${COMMON_DEPEND}
-	test? (
-		sys-process/psmisc
-		dev-util/shunit2
-		sys-apps/diffutils
-	)
-"
-
-RDEPEND="${COMMON_DEPEND}
-	app-arch/tar
-	app-misc/jq
-	chromeos-base/bootstat
-	!chromeos-base/chromeos-disableecho
-	chromeos-base/chromeos-common-script
-	chromeos-base/tty
-	sys-apps/upstart
-	sys-process/lsof
-	virtual/chromeos-bootcomplete
-	!cros_embedded? (
-		chromeos-base/common-assets
-		chromeos-base/chromeos-storage-info
-		chromeos-base/swap-init
-		sys-fs/e2fsprogs
-	)
-	frecon? (
-		sys-apps/frecon
-	)
-"
-
-platform_pkg_test() {
-	local shell_tests=(
-		killers_unittest
-		tests/chromeos-disk-metrics-test.sh
-		tests/send-kernel-errors-test.sh
-	)
-
-	local test_bin
-	for test_bin in "${shell_tests[@]}"; do
-		platform_test "run" "./${test_bin}"
-	done
-
-	local cpp_tests=(
-		clobber_state_test
-		file_attrs_cleaner_test
-		periodic_scheduler_test
-		usermode-helper_test
-	)
-
-	for test_bin in "${cpp_tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
-
-src_install_upstart() {
-	insinto /etc/init
-
-	if use cros_embedded; then
-		doins upstart/startup.conf
-		doins upstart/embedded-init/boot-services.conf
-
-		doins upstart/report-boot-complete.conf
-		doins upstart/failsafe-delay.conf upstart/failsafe.conf
-		doins upstart/pre-shutdown.conf upstart/pre-startup.conf
-		doins upstart/pstore.conf upstart/reboot.conf
-		doins upstart/system-services.conf
-		doins upstart/uinput.conf
-		doins upstart/sysrq-init.conf
-
-		if use syslog; then
-			doins upstart/log-rotate.conf upstart/syslog.conf upstart/journald.conf
-			dotmpfiles tmpfiles.d/syslog.conf
-		fi
-		if use !systemd; then
-			doins upstart/cgroups.conf
-			doins upstart/dbus.conf
-			dotmpfiles tmpfiles.d/dbus.conf
-			if use udev; then
-				doins upstart/udev.conf upstart/udev-trigger.conf
-				doins upstart/udev-trigger-early.conf
-			fi
-		fi
-		if use frecon; then
-			doins upstart/boot-splash.conf
-		fi
-	else
-		doins upstart/*.conf
-		dotmpfiles tmpfiles.d/*.conf
-
-		if ! use arcpp && use arcvm; then
-			sed -i '/^env IS_ARCVM=/s:=0:=1:' \
-				"${D}/etc/init/rt-limits.conf" || \
-				die "Failed to replace is_arcvm in rt-limits.conf"
-		fi
-
-		dosbin chromeos-disk-metrics
-		dosbin chromeos-send-kernel-errors
-		dosbin display_low_battery_alert
-	fi
-
-	if ! use debugd; then
-		sed -i '/^env PSTORE_GROUP=/s:=.*:=root:' \
-			"${D}/etc/init/pstore.conf" || \
-			die "Failed to replace PSTORE_GROUP in pstore.conf"
-	fi
-
-	if use midi; then
-		if use kernel-3_8 || use kernel-3_10 || use kernel-3_14 || use kernel-3_18; then
-			doins upstart/workaround-init/midi-workaround.conf
-		fi
-	fi
-
-	if use s3halt; then
-		newins upstart/halt/s3halt.conf halt.conf
-	else
-		doins upstart/halt/halt.conf
-	fi
-
-	if use vivid; then
-		doins upstart/vivid/vivid.conf
-	fi
-
-	use vtconsole && doins upstart/vtconsole/*.conf
-}
-
-src_install() {
-	# Install helper to run periodic tasks.
-	dobin "${OUT}"/periodic_scheduler
-
-	if use syslog; then
-		# Install log cleaning script and run it daily.
-		dosbin chromeos-cleanup-logs
-
-		insinto /etc
-		doins rsyslog.chromeos
-	fi
-
-	insinto /usr/share/cros
-	doins *_utils.sh
-
-	exeinto /usr/share/cros/init
-	doexe is_feature_enabled.sh
-
-	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
-	dosbin "${OUT}"/net_poll_tool
-	dosbin "${OUT}"/file_attrs_cleaner_tool
-	dosbin "${OUT}"/usermode-helper
-
-	# Install startup/shutdown scripts.
-	dosbin chromeos_startup 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" ||
-			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" ||
-			die "Failed to replace USE_LVM_STATEFUL_PARTITION in chromeos_startup"
-	fi
-
-	dosbin "${OUT}"/clobber-state
-
-	dosbin clobber-log
-	dosbin chromeos-boot-alert
-
-	# Install Upstart scripts.
-	src_install_upstart
-
-	insinto /usr/share/cros
-	doins $(usex encrypted_stateful encrypted_stateful \
-		unencrypted_stateful)/startup_utils.sh
-
-	# Install LVM conf files.
-	if use lvm_stateful_partition; then
-		insinto /etc/lvm
-		doins lvm.conf
-	fi
-}
-
-pkg_preinst() {
-	# Add the syslog user
-	enewuser syslog
-	enewgroup syslog
-
-	# Create debugfs-access user and group, which is needed by the
-	# chromeos_startup script to mount /sys/kernel/debug.  This is needed
-	# by bootstat and ureadahead.
-	enewuser "debugfs-access"
-	enewgroup "debugfs-access"
-}
diff --git a/chromeos-base/chromeos-init/chromeos-init-0.0.25-r4299.ebuild b/chromeos-base/chromeos-init/chromeos-init-0.0.25-r4299.ebuild
new file mode 100644
index 0000000..97fa94e
--- /dev/null
+++ b/chromeos-base/chromeos-init/chromeos-init-0.0.25-r4299.ebuild
@@ -0,0 +1,240 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="04062a724af44093e07dca4ecc0fddeb952da690"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "895c06f0f8e72deaf75137b0c309d0d15da65e21" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+# TODO(crbug.com/809389): Avoid #include-ing platform2 headers directly.
+CROS_WORKON_SUBTREE="common-mk init metrics .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="init"
+
+inherit tmpfiles cros-workon platform user
+
+DESCRIPTION="Upstart init scripts for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/init/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="
+	arcpp arcvm cros_embedded +debugd +encrypted_stateful +encrypted_reboot_vault
+	frecon lvm_stateful_partition kernel-3_18 +midi -s3halt +syslog systemd
+	+udev vivid vtconsole"
+
+# secure-erase-file, vboot_reference, and rootdev are needed for clobber-state.
+COMMON_DEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/secure-erase-file:=
+	chromeos-base/vboot_reference:=
+	sys-apps/rootdev:=
+"
+
+DEPEND="${COMMON_DEPEND}
+	test? (
+		sys-process/psmisc
+		dev-util/shflags
+		dev-util/shunit2
+		sys-apps/diffutils
+	)
+"
+
+RDEPEND="${COMMON_DEPEND}
+	app-arch/tar
+	app-misc/jq
+	chromeos-base/bootstat
+	!chromeos-base/chromeos-disableecho
+	chromeos-base/chromeos-common-script
+	chromeos-base/tty
+	sys-apps/upstart
+	!systemd? ( sys-apps/systemd-tmpfiles )
+	sys-process/lsof
+	virtual/chromeos-bootcomplete
+	!cros_embedded? (
+		chromeos-base/common-assets
+		chromeos-base/chromeos-storage-info
+		chromeos-base/swap-init
+		sys-fs/e2fsprogs
+	)
+	frecon? (
+		sys-apps/frecon
+	)
+"
+
+platform_pkg_test() {
+	local shell_tests=(
+		killers_unittest
+		tests/chromeos-disk-metrics-test.sh
+		tests/send-kernel-errors-test.sh
+	)
+
+	local test_bin
+	for test_bin in "${shell_tests[@]}"; do
+		platform_test "run" "./${test_bin}"
+	done
+
+	local cpp_tests=(
+		clobber_state_test
+		file_attrs_cleaner_test
+		periodic_scheduler_test
+		usermode-helper_test
+	)
+
+	for test_bin in "${cpp_tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
+
+src_install_upstart() {
+	insinto /etc/init
+
+	if use cros_embedded; then
+		doins upstart/startup.conf
+		dotmpfiles tmpfiles.d/chromeos.conf
+		doins upstart/embedded-init/boot-services.conf
+
+		doins upstart/report-boot-complete.conf
+		doins upstart/failsafe-delay.conf upstart/failsafe.conf
+		doins upstart/pre-shutdown.conf upstart/pre-startup.conf
+		doins upstart/pstore.conf upstart/reboot.conf
+		doins upstart/system-services.conf
+		doins upstart/uinput.conf
+		doins upstart/sysrq-init.conf
+
+		if use syslog; then
+			doins upstart/collect-early-logs.conf
+			doins upstart/log-rotate.conf upstart/syslog.conf
+			dotmpfiles tmpfiles.d/syslog.conf
+		fi
+		if use !systemd; then
+			doins upstart/cgroups.conf
+			doins upstart/dbus.conf
+			dotmpfiles tmpfiles.d/dbus.conf
+			if use udev; then
+				doins upstart/udev*.conf
+			fi
+		fi
+		if use frecon; then
+			doins upstart/boot-splash.conf
+		fi
+	else
+		doins upstart/*.conf
+		dotmpfiles tmpfiles.d/*.conf
+
+		if ! use arcpp && use arcvm; then
+			sed -i '/^env IS_ARCVM=/s:=0:=1:' \
+				"${D}/etc/init/rt-limits.conf" || \
+				die "Failed to replace is_arcvm in rt-limits.conf"
+		fi
+
+		dosbin chromeos-disk-metrics
+		dosbin chromeos-send-kernel-errors
+		dosbin display_low_battery_alert
+	fi
+
+	if ! use debugd; then
+		sed -i '/^env PSTORE_GROUP=/s:=.*:=root:' \
+			"${D}/etc/init/pstore.conf" || \
+			die "Failed to replace PSTORE_GROUP in pstore.conf"
+	fi
+
+	if use midi; then
+		if use kernel-3_18; then
+			doins upstart/workaround-init/midi-workaround.conf
+		fi
+	fi
+
+	if use s3halt; then
+		newins upstart/halt/s3halt.conf halt.conf
+	else
+		doins upstart/halt/halt.conf
+	fi
+
+	if use vivid; then
+		doins upstart/vivid/vivid.conf
+	fi
+
+	use vtconsole && doins upstart/vtconsole/*.conf
+}
+
+src_install() {
+	# Install helper to run periodic tasks.
+	dobin "${OUT}"/periodic_scheduler
+
+	if use syslog; then
+		# Install log cleaning script and run it daily.
+		dosbin chromeos-cleanup-logs
+
+		insinto /etc
+		doins rsyslog.chromeos
+	fi
+
+	insinto /usr/share/cros
+	doins *_utils.sh
+
+	exeinto /usr/share/cros/init
+	doexe is_feature_enabled.sh
+
+	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
+	dosbin "${OUT}"/net_poll_tool
+	dosbin "${OUT}"/file_attrs_cleaner_tool
+	dosbin "${OUT}"/usermode-helper
+
+	# Install startup/shutdown scripts.
+	dosbin chromeos_startup 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" ||
+			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" ||
+			die "Failed to replace USE_LVM_STATEFUL_PARTITION in chromeos_startup"
+	fi
+
+	dosbin "${OUT}"/clobber-state
+
+	dosbin clobber-log
+	dosbin chromeos-boot-alert
+
+	# Install Upstart scripts.
+	src_install_upstart
+
+	insinto /usr/share/cros
+	doins $(usex encrypted_stateful encrypted_stateful \
+		unencrypted_stateful)/startup_utils.sh
+
+	# Install LVM conf files.
+	insinto /etc/lvm
+	doins lvm.conf
+}
+
+pkg_preinst() {
+	# Add the syslog user
+	enewuser syslog
+	enewgroup syslog
+
+	# Create debugfs-access user and group, which is needed by the
+	# chromeos_startup script to mount /sys/kernel/debug.  This is needed
+	# by bootstat and ureadahead.
+	enewuser "debugfs-access"
+	enewgroup "debugfs-access"
+}
diff --git a/chromeos-base/chromeos-init/chromeos-init-9999.ebuild b/chromeos-base/chromeos-init/chromeos-init-9999.ebuild
index e24b200..f0fc69b 100644
--- a/chromeos-base/chromeos-init/chromeos-init-9999.ebuild
+++ b/chromeos-base/chromeos-init/chromeos-init-9999.ebuild
@@ -23,8 +23,8 @@
 KEYWORDS="~*"
 IUSE="
 	arcpp arcvm cros_embedded +debugd +encrypted_stateful +encrypted_reboot_vault
-	frecon -lvm_stateful_partition kernel-3_8 kernel-3_10 kernel-3_14
-	kernel-3_18 +midi -s3halt +syslog systemd +udev vivid vtconsole"
+	frecon lvm_stateful_partition kernel-3_18 +midi -s3halt +syslog systemd
+	+udev vivid vtconsole"
 
 # secure-erase-file, vboot_reference, and rootdev are needed for clobber-state.
 COMMON_DEPEND="
@@ -37,6 +37,7 @@
 DEPEND="${COMMON_DEPEND}
 	test? (
 		sys-process/psmisc
+		dev-util/shflags
 		dev-util/shunit2
 		sys-apps/diffutils
 	)
@@ -50,6 +51,7 @@
 	chromeos-base/chromeos-common-script
 	chromeos-base/tty
 	sys-apps/upstart
+	!systemd? ( sys-apps/systemd-tmpfiles )
 	sys-process/lsof
 	virtual/chromeos-bootcomplete
 	!cros_embedded? (
@@ -92,6 +94,7 @@
 
 	if use cros_embedded; then
 		doins upstart/startup.conf
+		dotmpfiles tmpfiles.d/chromeos.conf
 		doins upstart/embedded-init/boot-services.conf
 
 		doins upstart/report-boot-complete.conf
@@ -103,7 +106,8 @@
 		doins upstart/sysrq-init.conf
 
 		if use syslog; then
-			doins upstart/log-rotate.conf upstart/syslog.conf upstart/journald.conf
+			doins upstart/collect-early-logs.conf
+			doins upstart/log-rotate.conf upstart/syslog.conf
 			dotmpfiles tmpfiles.d/syslog.conf
 		fi
 		if use !systemd; then
@@ -111,8 +115,7 @@
 			doins upstart/dbus.conf
 			dotmpfiles tmpfiles.d/dbus.conf
 			if use udev; then
-				doins upstart/udev.conf upstart/udev-trigger.conf
-				doins upstart/udev-trigger-early.conf
+				doins upstart/udev*.conf
 			fi
 		fi
 		if use frecon; then
@@ -140,7 +143,7 @@
 	fi
 
 	if use midi; then
-		if use kernel-3_8 || use kernel-3_10 || use kernel-3_14 || use kernel-3_18; then
+		if use kernel-3_18; then
 			doins upstart/workaround-init/midi-workaround.conf
 		fi
 	fi
@@ -218,10 +221,8 @@
 		unencrypted_stateful)/startup_utils.sh
 
 	# Install LVM conf files.
-	if use lvm_stateful_partition; then
-		insinto /etc/lvm
-		doins lvm.conf
-	fi
+	insinto /etc/lvm
+	doins lvm.conf
 }
 
 pkg_preinst() {
diff --git a/chromeos-base/chromeos-initramfs/chromeos-initramfs-0.0.1-r403.ebuild b/chromeos-base/chromeos-initramfs/chromeos-initramfs-0.0.1-r403.ebuild
deleted file mode 100644
index 6ffb072..0000000
--- a/chromeos-base/chromeos-initramfs/chromeos-initramfs-0.0.1-r403.ebuild
+++ /dev/null
@@ -1,180 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-CROS_WORKON_COMMIT="3556d7625c9fed6cf5dd0f77f5aa119d6be288d4"
-CROS_WORKON_TREE="2246e62d1522bdc5bcd164b8fdc867e3271537f7"
-CROS_WORKON_PROJECT="chromiumos/platform/initramfs"
-CROS_WORKON_LOCALNAME="platform/initramfs"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-
-inherit cros-workon cros-board cros-constants
-
-DESCRIPTION="Create Chrome OS initramfs"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/initramfs/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="+cros_ec_utils detachable device_tree +interactive_recovery"
-IUSE="${IUSE} legacy_firmware_ui -mtd +power_management"
-IUSE="${IUSE} physical_presence_power physical_presence_recovery"
-IUSE="${IUSE} unibuild +oobe_config"
-
-# Build Targets
-TARGETS_IUSE="
-	factory_netboot_ramfs
-	factory_shim_ramfs
-	hypervisor_ramfs
-	recovery_ramfs
-	minios_ramfs
-"
-IUSE+=" ${TARGETS_IUSE}"
-REQUIRED_USE="|| ( ${TARGETS_IUSE} )"
-
-# Packages required for building recovery initramfs.
-RECOVERY_DEPENDS="
-	chromeos-base/chromeos-installer
-	chromeos-base/common-assets
-	chromeos-base/vboot_reference
-	chromeos-base/vpd
-	sys-apps/flashrom
-	sys-apps/pv
-	virtual/assets
-	virtual/chromeos-regions
-	"
-
-MINIOS_DEPENDS="
-	chromeos-base/minios
-	dev-util/strace
-	net-misc/curl
-	net-misc/dhcp
-	net-misc/dhcpcd
-	net-wireless/wpa_supplicant-2_9
-	chromeos-base/minijail
-	chromeos-base/chromeos-installer
-	chromeos-base/factory_installer
-	chromeos-base/common-assets
-	chromeos-base/vboot_reference
-	chromeos-base/vpd
-	sys-apps/flashrom
-	sys-apps/pv
-	virtual/assets
-	virtual/chromeos-regions
-	"
-
-# Packages required for building factory installer shim initramfs.
-FACTORY_SHIM_DEPENDS="
-	chromeos-base/factory_installer
-	chromeos-base/vboot_reference
-	"
-
-# Packages required for building factory netboot installer initramfs.
-FACTORY_NETBOOT_DEPENDS="
-	app-arch/lbzip2
-	app-arch/pigz
-	app-arch/sharutils
-	app-misc/jq
-	app-shells/bash
-	chromeos-base/chromeos-base
-	chromeos-base/chromeos-installer
-	chromeos-base/chromeos-installshim
-	chromeos-base/chromeos-storage-info
-	chromeos-base/ec-utils
-	chromeos-base/factory_installer
-	chromeos-base/vboot_reference
-	chromeos-base/vpd
-	dev-libs/openssl:0=
-	dev-util/shflags
-	dev-util/xxd
-	net-misc/curl
-	net-misc/htpdate
-	net-misc/uftp
-	net-misc/wget
-	sys-apps/coreutils
-	sys-apps/flashrom
-	sys-apps/iproute2
-	sys-apps/mosys
-	sys-apps/util-linux
-	sys-block/parted
-	sys-fs/dosfstools
-	sys-fs/e2fsprogs
-	sys-libs/ncurses
-	virtual/udev
-	"
-
-# Packages required for building hypervisor initramfs.
-HYPERVISOR_DEPENDS="
-	chromeos-base/crosvm
-	chromeos-base/sirenia
-	virtual/linux-sources
-	"
-
-DEPEND="
-	factory_netboot_ramfs? ( ${FACTORY_NETBOOT_DEPENDS} )
-	factory_shim_ramfs? ( ${FACTORY_SHIM_DEPENDS} )
-	recovery_ramfs? ( ${RECOVERY_DEPENDS} )
-	hypervisor_ramfs? ( ${HYPERVISOR_DEPENDS} )
-	minios_ramfs? ( ${MINIOS_DEPENDS} )
-	sys-apps/busybox[-make-symlinks]
-	sys-fs/lvm2
-	virtual/chromeos-bsp-initramfs
-	chromeos-base/chromeos-init
-	sys-apps/frecon-lite
-	power_management? ( chromeos-base/power_manager )
-	unibuild? ( chromeos-base/chromeos-config )
-	chromeos-base/chromeos-config-tools"
-
-RDEPEND=""
-
-src_prepare() {
-	export BUILD_LIBRARY_DIR="${CHROOT_SOURCE_ROOT}/src/scripts/build_library"
-	export INTERACTIVE_COMPLETE="$(usex interactive_recovery true false)"
-
-	# Need the lddtree from the chromite dir.
-	export PATH="${CHROMITE_BIN_DIR}:${PATH}"
-
-	eapply_user
-}
-
-src_compile() {
-	local deps=()
-	use mtd && deps+=(/usr/bin/cgpt)
-	if use factory_netboot_ramfs; then
-		use power_management && deps+=(/usr/bin/backlight_tool)
-	fi
-
-	local targets=()
-	for target in ${TARGETS_IUSE}; do
-		use "${target}" && targets+=("${target%_ramfs}")
-	done
-	einfo "Building targets: ${targets[*]}"
-
-	local physical_presence
-	if use physical_presence_power ; then
-		physical_presence="power"
-	elif use physical_presence_recovery ; then
-		physical_presence="recovery"
-	else
-		physical_presence="keyboard"
-	fi
-
-	emake SYSROOT="${SYSROOT}" BOARD="$(get_current_board_with_variant)" \
-		INCLUDE_FIT_PICKER="$(usex device_tree 1 0)" \
-		INCLUDE_ECTOOL="$(usex cros_ec_utils 1 0)" \
-		DETACHABLE="$(usex detachable 1 0)" \
-		LEGACY_UI="$(usex legacy_firmware_ui 1 0)" \
-		UNIBUILD="$(usex unibuild 1 0)" \
-		OOBE_CONFIG="$(usex oobe_config 1 0)" \
-		PHYSICAL_PRESENCE="${physical_presence}" \
-		OUTPUT_DIR="${WORKDIR}" EXTRA_BIN_DEPS="${deps[*]}" \
-		LOCALE_LIST="${RECOVERY_LOCALES}" "${targets[@]}"
-}
-
-src_install() {
-	insinto /var/lib/initramfs
-	for target in ${TARGETS_IUSE}; do
-		use "${target}" &&
-			doins "${WORKDIR}/${target}.cpio.xz"
-	done
-}
diff --git a/chromeos-base/chromeos-initramfs/chromeos-initramfs-0.0.1-r429.ebuild b/chromeos-base/chromeos-initramfs/chromeos-initramfs-0.0.1-r429.ebuild
new file mode 100644
index 0000000..6c7839c
--- /dev/null
+++ b/chromeos-base/chromeos-initramfs/chromeos-initramfs-0.0.1-r429.ebuild
@@ -0,0 +1,179 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+CROS_WORKON_COMMIT="7fb7b133bb213c69db57aa9fee6d5ab9030d4b2d"
+CROS_WORKON_TREE="d2f3f9e688579f2bd08ba34bb2fbe237ba83bd1c"
+CROS_WORKON_PROJECT="chromiumos/platform/initramfs"
+CROS_WORKON_LOCALNAME="platform/initramfs"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+
+inherit cros-workon cros-board cros-constants
+
+DESCRIPTION="Create Chrome OS initramfs"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/initramfs/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+cros_ec_utils detachable device_tree +interactive_recovery"
+IUSE="${IUSE} legacy_firmware_ui -mtd +power_management"
+IUSE="${IUSE} physical_presence_power physical_presence_recovery"
+IUSE="${IUSE} unibuild +oobe_config"
+
+# Build Targets
+TARGETS_IUSE="
+	factory_netboot_ramfs
+	factory_shim_ramfs
+	hypervisor_ramfs
+	recovery_ramfs
+	minios_ramfs
+"
+IUSE+=" ${TARGETS_IUSE}"
+REQUIRED_USE="|| ( ${TARGETS_IUSE} )"
+
+# Packages required for building recovery initramfs.
+RECOVERY_DEPENDS="
+	chromeos-base/chromeos-installer
+	chromeos-base/common-assets
+	chromeos-base/vboot_reference
+	chromeos-base/vpd
+	sys-apps/flashrom
+	sys-apps/pv
+	virtual/assets
+	virtual/chromeos-regions
+	"
+
+MINIOS_DEPENDS="
+	chromeos-base/minios
+	dev-util/strace
+	net-misc/curl
+	net-misc/dhcp
+	net-misc/dhcpcd
+	net-wireless/wpa_supplicant-2_9
+	chromeos-base/minijail
+	chromeos-base/chromeos-installer
+	chromeos-base/factory_installer
+	chromeos-base/common-assets
+	chromeos-base/vboot_reference
+	chromeos-base/vpd
+	sys-apps/flashrom
+	sys-apps/pv
+	virtual/assets
+	virtual/chromeos-regions
+	"
+
+# Packages required for building factory installer shim initramfs.
+FACTORY_SHIM_DEPENDS="
+	chromeos-base/factory_installer
+	chromeos-base/vboot_reference
+	"
+
+# Packages required for building factory netboot installer initramfs.
+FACTORY_NETBOOT_DEPENDS="
+	app-arch/lbzip2
+	app-arch/pigz
+	app-arch/sharutils
+	app-misc/jq
+	app-shells/bash
+	chromeos-base/chromeos-base
+	chromeos-base/chromeos-installer
+	chromeos-base/chromeos-installshim
+	chromeos-base/chromeos-storage-info
+	chromeos-base/ec-utils
+	chromeos-base/factory_installer
+	chromeos-base/vboot_reference
+	chromeos-base/vpd
+	dev-libs/openssl:0=
+	dev-util/shflags
+	dev-util/xxd
+	net-misc/curl
+	net-misc/htpdate
+	net-misc/uftp
+	net-misc/wget
+	sys-apps/coreutils
+	sys-apps/flashrom
+	sys-apps/iproute2
+	sys-apps/mosys
+	sys-apps/util-linux
+	sys-fs/dosfstools
+	sys-fs/e2fsprogs
+	sys-libs/ncurses
+	virtual/udev
+	"
+
+# Packages required for building hypervisor initramfs.
+HYPERVISOR_DEPENDS="
+	chromeos-base/crosvm
+	chromeos-base/sirenia
+	virtual/linux-sources
+	"
+
+DEPEND="
+	factory_netboot_ramfs? ( ${FACTORY_NETBOOT_DEPENDS} )
+	factory_shim_ramfs? ( ${FACTORY_SHIM_DEPENDS} )
+	recovery_ramfs? ( ${RECOVERY_DEPENDS} )
+	hypervisor_ramfs? ( ${HYPERVISOR_DEPENDS} )
+	minios_ramfs? ( ${MINIOS_DEPENDS} )
+	sys-apps/busybox[-make-symlinks]
+	sys-fs/lvm2
+	virtual/chromeos-bsp-initramfs
+	chromeos-base/chromeos-init
+	sys-apps/frecon-lite
+	power_management? ( chromeos-base/power_manager )
+	unibuild? ( chromeos-base/chromeos-config )
+	chromeos-base/chromeos-config-tools"
+
+RDEPEND=""
+
+src_prepare() {
+	export BUILD_LIBRARY_DIR="${CHROOT_SOURCE_ROOT}/src/scripts/build_library"
+	export INTERACTIVE_COMPLETE="$(usex interactive_recovery true false)"
+
+	# Need the lddtree from the chromite dir.
+	export PATH="${CHROMITE_BIN_DIR}:${PATH}"
+
+	eapply_user
+}
+
+src_compile() {
+	local deps=()
+	use mtd && deps+=(/usr/bin/cgpt)
+	if use factory_netboot_ramfs; then
+		use power_management && deps+=(/usr/bin/backlight_tool)
+	fi
+
+	local targets=()
+	for target in ${TARGETS_IUSE}; do
+		use "${target}" && targets+=("${target%_ramfs}")
+	done
+	einfo "Building targets: ${targets[*]}"
+
+	local physical_presence
+	if use physical_presence_power ; then
+		physical_presence="power"
+	elif use physical_presence_recovery ; then
+		physical_presence="recovery"
+	else
+		physical_presence="keyboard"
+	fi
+
+	emake SYSROOT="${SYSROOT}" BOARD="$(get_current_board_with_variant)" \
+		INCLUDE_FIT_PICKER="$(usex device_tree 1 0)" \
+		INCLUDE_ECTOOL="$(usex cros_ec_utils 1 0)" \
+		DETACHABLE="$(usex detachable 1 0)" \
+		LEGACY_UI="$(usex legacy_firmware_ui 1 0)" \
+		UNIBUILD="$(usex unibuild 1 0)" \
+		OOBE_CONFIG="$(usex oobe_config 1 0)" \
+		PHYSICAL_PRESENCE="${physical_presence}" \
+		OUTPUT_DIR="${WORKDIR}" EXTRA_BIN_DEPS="${deps[*]}" \
+		LOCALE_LIST="${RECOVERY_LOCALES}" "${targets[@]}"
+}
+
+src_install() {
+	insinto /var/lib/initramfs
+	for target in ${TARGETS_IUSE}; do
+		use "${target}" &&
+			doins "${WORKDIR}/${target}.cpio.xz"
+	done
+}
diff --git a/chromeos-base/chromeos-initramfs/chromeos-initramfs-9999.ebuild b/chromeos-base/chromeos-initramfs/chromeos-initramfs-9999.ebuild
index 0080393..f50e7bc 100644
--- a/chromeos-base/chromeos-initramfs/chromeos-initramfs-9999.ebuild
+++ b/chromeos-base/chromeos-initramfs/chromeos-initramfs-9999.ebuild
@@ -94,7 +94,6 @@
 	sys-apps/iproute2
 	sys-apps/mosys
 	sys-apps/util-linux
-	sys-block/parted
 	sys-fs/dosfstools
 	sys-fs/e2fsprogs
 	sys-libs/ncurses
diff --git a/chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r3448.ebuild b/chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r3448.ebuild
deleted file mode 100644
index 2e69389..0000000
--- a/chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r3448.ebuild
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="0f4f2e09dc2ab3255685c3005d3f60081f3a2a09"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "04eb33e4a1a28c4e52176cad04e7d44c0fc80b33" "2b6d4230c92e83e39209823855064483eed04754" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk installer verity .gn"
-
-PLATFORM_SUBDIR="installer"
-
-inherit cros-workon platform systemd
-
-DESCRIPTION="Chrome OS Installer"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/installer/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="cros_embedded enable_slow_boot_notify -mtd pam systemd +oobe_config lvm_stateful_partition"
-
-COMMON_DEPEND="
-	chromeos-base/libbrillo:=
-	chromeos-base/vboot_reference
-	x11-libs/libxkbcommon:=
-	x11-misc/xkeyboard-config:=
-"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/verity
-	dev-libs/openssl:0=
-"
-
-RDEPEND="${COMMON_DEPEND}
-	pam? ( app-admin/sudo )
-	chromeos-base/chromeos-common-script
-	!cros_embedded? ( chromeos-base/chromeos-storage-info )
-	oobe_config? ( chromeos-base/oobe_config )
-	dev-libs/openssl:0=
-	dev-util/shflags
-	sys-apps/rootdev
-	sys-apps/util-linux
-	sys-apps/which
-	sys-fs/e2fsprogs"
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/cros_installer_test"
-}
-
-src_install() {
-	dobin "${OUT}"/{cros_installer,cros_oobe_crypto}
-	if use mtd ; then
-		dobin "${OUT}"/nand_partition
-	fi
-	dosbin chromeos-* encrypted_import "${OUT}"/{evwaitkey,key_reader}
-	dosym usr/sbin/chromeos-postinst /postinst
-
-	# Enable lvm stateful partition.
-	if use lvm_stateful_partition; then
-		sed -i '/DEFINE_boolean lvm_stateful "/s:\${FLAGS_FALSE}:\${FLAGS_TRUE}:' \
-			"${D}/usr/sbin/chromeos-install" ||
-			die "Failed to set 'lvm_stateful' in chromeos-install"
-	fi
-
-	# Install init scripts.
-	if use systemd; then
-		systemd_dounit init/install-completed.service
-		systemd_enable_service boot-services.target install-completed.service
-		systemd_dounit init/crx-import.service
-		systemd_enable_service system-services.target crx-import.service
-	else
-		insinto /etc/init
-		doins init/*.conf
-	fi
-	exeinto /usr/share/cros/init
-	doexe init/crx-import.sh
-}
diff --git a/chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r3492.ebuild b/chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r3492.ebuild
new file mode 100644
index 0000000..c6fd00b
--- /dev/null
+++ b/chromeos-base/chromeos-installer/chromeos-installer-0.0.3-r3492.ebuild
@@ -0,0 +1,81 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+CROS_WORKON_COMMIT="65240bb3b66b94f15c5c9b5ecde982d5ea9a3f66"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "186518012127f8b531f1bb71d661edbbe08ac304" "33de53739dbe0fd2911d58694b622539ef0a2416" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk installer verity .gn"
+
+PLATFORM_SUBDIR="installer"
+
+inherit cros-workon platform systemd
+
+DESCRIPTION="Chrome OS Installer"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/installer/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="cros_embedded enable_slow_boot_notify -mtd pam systemd +oobe_config lvm_stateful_partition"
+
+COMMON_DEPEND="
+	chromeos-base/libbrillo:=
+	chromeos-base/vboot_reference
+	chromeos-base/verity
+"
+
+DEPEND="${COMMON_DEPEND}
+	dev-libs/openssl:0=
+"
+
+RDEPEND="${COMMON_DEPEND}
+	pam? ( app-admin/sudo )
+	chromeos-base/chromeos-common-script
+	!cros_embedded? ( chromeos-base/chromeos-storage-info )
+	oobe_config? ( chromeos-base/oobe_config )
+	dev-libs/openssl:0=
+	dev-util/shflags
+	sys-apps/rootdev
+	sys-apps/util-linux
+	sys-apps/which
+	sys-fs/e2fsprogs"
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/cros_installer_test"
+}
+
+src_install() {
+	dobin "${OUT}"/{cros_installer,cros_oobe_crypto}
+	if use mtd ; then
+		dobin "${OUT}"/nand_partition
+	fi
+	dosbin chromeos-* encrypted_import "${OUT}"/evwaitkey
+	dosym usr/sbin/chromeos-postinst /postinst
+
+	# Enable lvm stateful partition.
+	if use lvm_stateful_partition; then
+		sed -i '/DEFINE_boolean lvm_stateful "/s:\${FLAGS_FALSE}:\${FLAGS_TRUE}:' \
+			"${D}/usr/sbin/chromeos-install" ||
+			die "Failed to set 'lvm_stateful' in chromeos-install"
+	fi
+
+	# Install init scripts.
+	if use systemd; then
+		systemd_dounit init/install-completed.service
+		systemd_enable_service boot-services.target install-completed.service
+		systemd_dounit init/crx-import.service
+		systemd_enable_service system-services.target crx-import.service
+	else
+		insinto /etc/init
+		doins init/*.conf
+	fi
+	exeinto /usr/share/cros/init
+	doexe init/crx-import.sh
+}
diff --git a/chromeos-base/chromeos-installer/chromeos-installer-9999.ebuild b/chromeos-base/chromeos-installer/chromeos-installer-9999.ebuild
index 883ded9..73f9d25 100644
--- a/chromeos-base/chromeos-installer/chromeos-installer-9999.ebuild
+++ b/chromeos-base/chromeos-installer/chromeos-installer-9999.ebuild
@@ -26,12 +26,10 @@
 COMMON_DEPEND="
 	chromeos-base/libbrillo:=
 	chromeos-base/vboot_reference
-	x11-libs/libxkbcommon:=
-	x11-misc/xkeyboard-config:=
+	chromeos-base/verity
 "
 
 DEPEND="${COMMON_DEPEND}
-	chromeos-base/verity
 	dev-libs/openssl:0=
 "
 
@@ -56,7 +54,7 @@
 	if use mtd ; then
 		dobin "${OUT}"/nand_partition
 	fi
-	dosbin chromeos-* encrypted_import "${OUT}"/{evwaitkey,key_reader}
+	dosbin chromeos-* encrypted_import "${OUT}"/evwaitkey
 	dosym usr/sbin/chromeos-postinst /postinst
 
 	# Enable lvm stateful partition.
diff --git a/chromeos-base/chromeos-lacros/Manifest b/chromeos-base/chromeos-lacros/Manifest
new file mode 100644
index 0000000..a2885c9
--- /dev/null
+++ b/chromeos-base/chromeos-lacros/Manifest
@@ -0,0 +1,2 @@
+DIST chromeos-lacros-metadata-92.0.4511.2 77 BLAKE2B c36f257b8f50c631d24de35b287e2a9e03d0bb3960ba50148e5aa88d878289692c9529619793c27ea51001543780de39144218eb10cc649685da7c68361b2955 SHA512 07a3dedcc15b1f3be748f31eaa727af8fe62fd8d37c8f8025bb2b67404c20f0c8bac29eee3c7416948ff8e170d193e0ea0c318e6404d446f49f37a51ed069369
+DIST chromeos-lacros-squash-92.0.4511.2 115482624 BLAKE2B 3e2f21a4dec4bbe68c3907c8992054e9a2ff475c3856a54d153b5aedb1996b6d6f759a134977ec8169668ec483609f9858086d5c29e88e28f8b7ddcb4379a7ae SHA512 7254ed8974c24cb18a0c6b1ed49830dfe948b5b5db25155b88dad6d795d4352d7959e2ba80afb8b512a530e38345874f8ed2a1cdf6da48a324f2a8d0188f9e6a
diff --git a/chromeos-base/chromeos-lacros/OWNERS b/chromeos-base/chromeos-lacros/OWNERS
new file mode 100644
index 0000000..ff072f2
--- /dev/null
+++ b/chromeos-base/chromeos-lacros/OWNERS
@@ -0,0 +1,2 @@
+include chromiumos/chromite:/OWNERS.au
+chromeos-ci-prod@chromeos-bot.iam.gserviceaccount.com
diff --git a/chromeos-base/chromeos-lacros/chromeos-lacros-92.0.4511.2-r5.ebuild b/chromeos-base/chromeos-lacros/chromeos-lacros-92.0.4511.2-r5.ebuild
new file mode 100644
index 0000000..d0ef59d
--- /dev/null
+++ b/chromeos-base/chromeos-lacros/chromeos-lacros-92.0.4511.2-r5.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# No git repo for this so use empty-project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="platform/empty-project"
+
+inherit cros-workon
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+# All runtime dependencies should already be part of
+# chromeos-base/chromeos-chrome, the ones that aren't will be handled in
+# crbug.com/1199441.
+RDEPEND="chromeos-base/chromeos-chrome"
+# Omit DEPEND as nothing is built in this ebuild.
+DEPEND=""
+
+if [[ ${PV} != 9999 ]]; then
+	ORIG_GS_URI_PREFIX="gs://chrome-unsigned/desktop-5c0tCh"
+	LACROS_SQUASHFS="${PN}-squash-${PV}"
+	LACROS_METADATA="${PN}-metadata-${PV}"
+	SRC_URI="
+		${ORIG_GS_URI_PREFIX}/${LACROS_SQUASHFS}
+		${ORIG_GS_URI_PREFIX}/${LACROS_METADATA}
+	"
+fi
+
+src_install() {
+	insinto /opt/google/lacros
+	newins "${DISTDIR}/${LACROS_SQUASHFS}" lacros.squash
+	newins "${DISTDIR}/${LACROS_METADATA}" metadata.json
+
+	# Upstart configuration
+	insinto /etc/init
+	doins "${FILESDIR}/lacros-mounter.conf"
+	doins "${FILESDIR}/lacros-unmounter.conf"
+
+	# D-Bus configuration
+	insinto /etc/dbus-1/system.d
+	doins "${FILESDIR}/Lacros.conf"
+}
diff --git a/chromeos-base/chromeos-lacros/chromeos-lacros-9999.ebuild b/chromeos-base/chromeos-lacros/chromeos-lacros-9999.ebuild
new file mode 100644
index 0000000..4295d5a
--- /dev/null
+++ b/chromeos-base/chromeos-lacros/chromeos-lacros-9999.ebuild
@@ -0,0 +1,46 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# No git repo for this so use empty-project.
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="platform/empty-project"
+
+inherit cros-workon
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="~*"
+
+# All runtime dependencies should already be part of
+# chromeos-base/chromeos-chrome, the ones that aren't will be handled in
+# crbug.com/1199441.
+RDEPEND="chromeos-base/chromeos-chrome"
+# Omit DEPEND as nothing is built in this ebuild.
+DEPEND=""
+
+if [[ ${PV} != 9999 ]]; then
+	ORIG_GS_URI_PREFIX="gs://chrome-unsigned/desktop-5c0tCh"
+	LACROS_SQUASHFS="${PN}-squash-${PV}"
+	LACROS_METADATA="${PN}-metadata-${PV}"
+	SRC_URI="
+		${ORIG_GS_URI_PREFIX}/${LACROS_SQUASHFS}
+		${ORIG_GS_URI_PREFIX}/${LACROS_METADATA}
+	"
+fi
+
+src_install() {
+	insinto /opt/google/lacros
+	newins "${DISTDIR}/${LACROS_SQUASHFS}" lacros.squash
+	newins "${DISTDIR}/${LACROS_METADATA}" metadata.json
+
+	# Upstart configuration
+	insinto /etc/init
+	doins "${FILESDIR}/lacros-mounter.conf"
+	doins "${FILESDIR}/lacros-unmounter.conf"
+
+	# D-Bus configuration
+	insinto /etc/dbus-1/system.d
+	doins "${FILESDIR}/Lacros.conf"
+}
diff --git a/chromeos-base/chromeos-lacros/files/Lacros.conf b/chromeos-base/chromeos-lacros/files/Lacros.conf
new file mode 100644
index 0000000..e99549b
--- /dev/null
+++ b/chromeos-base/chromeos-lacros/files/Lacros.conf
@@ -0,0 +1,25 @@
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+
+<!--
+  Copyright 2021 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.
+-->
+
+<!-- Security policies allowing the Chrome browser to start and manage the
+     lacros-chrome image mount points -->
+
+<busconfig>
+  <policy user="chronos">
+    <!-- Chrome browser starts these upstart jobs. -->
+    <allow send_destination="com.ubuntu.Upstart"
+           send_interface="com.ubuntu.Upstart0_6.Job"
+           send_type="method_call"
+           send_path="/com/ubuntu/Upstart/jobs/lacros_2dmounter" />
+    <allow send_destination="com.ubuntu.Upstart"
+           send_interface="com.ubuntu.Upstart0_6.Job"
+           send_type="method_call"
+           send_path="/com/ubuntu/Upstart/jobs/lacros_2dunmounter" />
+  </policy>
+</busconfig>
diff --git a/chromeos-base/chromeos-lacros/files/chromeos-version.sh b/chromeos-base/chromeos-lacros/files/chromeos-version.sh
new file mode 100644
index 0000000..5c4574a
--- /dev/null
+++ b/chromeos-base/chromeos-lacros/files/chromeos-version.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Copyright 2021 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.
+#
+# This echo statement sets the package base version (without its -r value).
+# If it is necessary to add a new blocker or version dependency on this ebuild
+# at the same time as revving the ebuild to a known version value, editing this
+# version can be useful.
+
+echo 92.0.4511.2
diff --git a/chromeos-base/chromeos-lacros/files/lacros-mounter.conf b/chromeos-base/chromeos-lacros/files/lacros-mounter.conf
new file mode 100644
index 0000000..658b740
--- /dev/null
+++ b/chromeos-base/chromeos-lacros/files/lacros-mounter.conf
@@ -0,0 +1,18 @@
+# Copyright 2021 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.
+
+description "Chrome OS Rootfs lacros-chrome mounter"
+author "chromium-os-dev@chromium.org"
+
+# This job is started by ash-chrome.
+oom score never
+task
+
+pre-start script
+  LACROS_MOUNT_POINT="/run/lacros"
+  mkdir -p "${LACROS_MOUNT_POINT}"
+  chown chronos:chronos "${LACROS_MOUNT_POINT}"
+end script
+
+exec mount -o ro /opt/google/lacros/lacros.squash /run/lacros
diff --git a/chromeos-base/chromeos-lacros/files/lacros-unmounter.conf b/chromeos-base/chromeos-lacros/files/lacros-unmounter.conf
new file mode 100644
index 0000000..98b7b1d
--- /dev/null
+++ b/chromeos-base/chromeos-lacros/files/lacros-unmounter.conf
@@ -0,0 +1,19 @@
+# Copyright 2021 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.
+
+description "Chrome OS Rootfs lacros-chrome unmounter"
+author "chromium-os-dev@chromium.org"
+
+# This job is started by ash-chrome.
+oom score never
+task
+
+env LACROS_MOUNT_POINT="/run/lacros"
+
+script
+  if [ -d "${LACROS_MOUNT_POINT}" ]; then
+    umount "${LACROS_MOUNT_POINT}"
+    rm -rf "${LACROS_MOUNT_POINT}"
+  fi
+end script
diff --git a/chromeos-base/chromeos-login/chromeos-login-0.0.2-r4572.ebuild b/chromeos-base/chromeos-login/chromeos-login-0.0.2-r4572.ebuild
deleted file mode 100644
index 8a7f36d..0000000
--- a/chromeos-base/chromeos-login/chromeos-login-0.0.2-r4572.ebuild
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="109363d0a03be594cf5611441597c607960c4f3d"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "ed310628c7b59ac5528ea8347990fc4f5e95c915" "5c6a69ae1a339332642149aa39da47d14efbe3fd" "fd58c41eff96201518af10b01b66391e72895365" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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"
-
-PLATFORM_SUBDIR="login_manager"
-
-inherit cros-workon platform systemd user
-
-DESCRIPTION="Login manager for Chromium OS."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-login/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="arc_adb_sideloading cheets fuzzer generated_cros_config systemd unibuild user_session_isolation"
-
-COMMON_DEPEND="chromeos-base/bootstat:=
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	chromeos-base/chromeos-config-tools:=
-	chromeos-base/minijail:=
-	chromeos-base/cryptohome:=
-	chromeos-base/libchromeos-ui:=
-	chromeos-base/libcontainer:=
-	chromeos-base/libpasswordprovider:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/nss:=
-	dev-libs/protobuf:=
-	fuzzer? ( dev-libs/libprotobuf-mutator:= )
-	sys-apps/util-linux:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	>=chromeos-base/protofiles-0.0.39:=
-	chromeos-base/system_api:=[fuzzer?]
-	chromeos-base/vboot_reference:=
-"
-
-pkg_preinst() {
-	enewgroup policy-readers
-}
-
-platform_pkg_test() {
-	local tests=( session_manager_test )
-
-	# Qemu doesn't support signalfd currently, and it's not clear how
-	# feasible it is to implement :(.
-	# So, filter out the tests that rely on signalfd().
-	local gtest_qemu_filter=""
-	if ! use x86 && ! use amd64; then
-		gtest_qemu_filter+="-ChildExitHandlerTest.*"
-		gtest_qemu_filter+=":SessionManagerProcessTest.*"
-	fi
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}" "0" "" "${gtest_qemu_filter}"
-	done
-}
-
-src_install() {
-	into /
-	dosbin "${OUT}/keygen"
-	dosbin "${OUT}/session_manager"
-
-	# Install DBus configuration.
-	insinto /usr/share/dbus-1/interfaces
-	doins dbus_bindings/org.chromium.SessionManagerInterface.xml
-
-	insinto /etc/dbus-1/system.d
-	doins SessionManager.conf
-
-	# Adding init scripts.
-	if use systemd; then
-		systemd_dounit init/systemd/*
-		systemd_enable_service x-started.target
-		systemd_enable_service multi-user.target ui.target
-		systemd_enable_service ui.target ui.service
-		systemd_enable_service ui.service machine-info.service
-		systemd_enable_service login-prompt-visible.target send-uptime-metrics.service
-		systemd_enable_service login-prompt-visible.target ui-init-late.service
-		systemd_enable_service start-user-session.target login.service
-		systemd_enable_service system-services.target ui-collect-machine-info.service
-	else
-		insinto /etc/init
-		doins init/upstart/*.conf
-	fi
-	exeinto /usr/share/cros/init/
-	doexe init/scripts/*
-
-	# For user session processes.
-	dodir /etc/skel/log
-
-	# For user NSS database
-	diropts -m0700
-	# Need to dodir each directory in order to get the opts right.
-	dodir /etc/skel/.pki
-	dodir /etc/skel/.pki/nssdb
-	# Yes, the created (empty) DB does work on ARM, x86 and x86_64.
-	certutil -N -d "sql:${D}/etc/skel/.pki/nssdb" -f <(echo '') || die
-
-	insinto /etc
-	doins chrome_dev.conf
-
-	# Create daemon store directories.
-	local daemon_store="/etc/daemon-store/session_manager"
-	dodir "${daemon_store}"
-	fperms 0700 "${daemon_store}"
-	fowners root:root "${daemon_store}"
-
-	local fuzzers=(
-		login_manager_validator_utils_fuzzer
-		login_manager_validator_utils_policy_desc_fuzzer
-	)
-
-	local fuzzer
-	for fuzzer in "${fuzzers[@]}"; do
-		platform_fuzzer_install "${S}"/OWNERS "${OUT}/${fuzzer}"
-	done
-}
diff --git a/chromeos-base/chromeos-login/chromeos-login-0.0.2-r4693.ebuild b/chromeos-base/chromeos-login/chromeos-login-0.0.2-r4693.ebuild
new file mode 100644
index 0000000..ca0a6b4
--- /dev/null
+++ b/chromeos-base/chromeos-login/chromeos-login-0.0.2-r4693.ebuild
@@ -0,0 +1,139 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="c812693846f14fc4b8c3988e5de7dd9310d8f36c"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "aa0612733aca2d5ffa65470f07408228b473ebdb" "a2ab6048637d439be995dd4cdc3ef91d0291fb42" "eae0546f4ee5132d4544af4770755eb05f60cba6" "705938420b278cc4b739150868d71128b855d23e" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_SUBDIR="login_manager"
+
+inherit tmpfiles cros-workon platform systemd user
+
+DESCRIPTION="Login manager for Chromium OS."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-login/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="arc_adb_sideloading cheets fuzzer generated_cros_config systemd unibuild user_session_isolation"
+
+COMMON_DEPEND="chromeos-base/bootstat:=
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	chromeos-base/chromeos-config-tools:=
+	chromeos-base/minijail:=
+	chromeos-base/cryptohome:=
+	chromeos-base/libchromeos-ui:=
+	chromeos-base/libcontainer:=
+	chromeos-base/libpasswordprovider:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/nss:=
+	dev-libs/protobuf:=
+	fuzzer? ( dev-libs/libprotobuf-mutator:= )
+	sys-apps/util-linux:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	>=chromeos-base/protofiles-0.0.43:=
+	chromeos-base/system_api:=[fuzzer?]
+	chromeos-base/vboot_reference:=
+"
+
+pkg_preinst() {
+	enewgroup policy-readers
+}
+
+platform_pkg_test() {
+	local tests=( session_manager_test )
+
+	# Qemu doesn't support signalfd currently, and it's not clear how
+	# feasible it is to implement :(.
+	# So, filter out the tests that rely on signalfd().
+	local gtest_qemu_filter=""
+	if ! use x86 && ! use amd64; then
+		gtest_qemu_filter+="-ChildExitHandlerTest.*"
+		gtest_qemu_filter+=":SessionManagerProcessTest.*"
+	fi
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}" "0" "" "${gtest_qemu_filter}"
+	done
+}
+
+src_install() {
+	into /
+	dosbin "${OUT}/keygen"
+	dosbin "${OUT}/session_manager"
+
+	# Install DBus configuration.
+	insinto /usr/share/dbus-1/interfaces
+	doins dbus_bindings/org.chromium.SessionManagerInterface.xml
+
+	insinto /etc/dbus-1/system.d
+	doins SessionManager.conf
+
+	# Adding init scripts.
+	if use systemd; then
+		systemd_dounit init/systemd/*
+		systemd_enable_service x-started.target
+		systemd_enable_service multi-user.target ui.target
+		systemd_enable_service ui.target ui.service
+		systemd_enable_service ui.service machine-info.service
+		systemd_enable_service login-prompt-visible.target send-uptime-metrics.service
+		systemd_enable_service login-prompt-visible.target ui-init-late.service
+		systemd_enable_service start-user-session.target login.service
+		systemd_enable_service system-services.target ui-collect-machine-info.service
+	else
+		insinto /etc/init
+		doins init/upstart/*.conf
+	fi
+	exeinto /usr/share/cros/init/
+	doexe init/scripts/*
+
+	dotmpfiles tmpfiles.d/chromeos-login.conf
+
+	# For user session processes.
+	dodir /etc/skel/log
+
+	# For user NSS database
+	diropts -m0700
+	# Need to dodir each directory in order to get the opts right.
+	dodir /etc/skel/.pki
+	dodir /etc/skel/.pki/nssdb
+	# Yes, the created (empty) DB does work on ARM, x86 and x86_64.
+	certutil -N -d "sql:${D}/etc/skel/.pki/nssdb" -f <(echo '') || die
+
+	insinto /etc
+	doins chrome_dev.conf
+
+	insinto /usr/share/power_manager
+	doins powerd_prefs/suspend_freezer_deps_*
+
+	# Create daemon store directories.
+	local daemon_store="/etc/daemon-store/session_manager"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners root:root "${daemon_store}"
+
+	local fuzzers=(
+		login_manager_validator_utils_fuzzer
+		login_manager_validator_utils_policy_desc_fuzzer
+	)
+
+	local fuzzer
+	for fuzzer in "${fuzzers[@]}"; do
+		platform_fuzzer_install "${S}"/OWNERS "${OUT}/${fuzzer}"
+	done
+}
diff --git a/chromeos-base/chromeos-login/chromeos-login-9999.ebuild b/chromeos-base/chromeos-login/chromeos-login-9999.ebuild
index fa13acd..e362e5d 100644
--- a/chromeos-base/chromeos-login/chromeos-login-9999.ebuild
+++ b/chromeos-base/chromeos-login/chromeos-login-9999.ebuild
@@ -12,7 +12,7 @@
 
 PLATFORM_SUBDIR="login_manager"
 
-inherit cros-workon platform systemd user
+inherit tmpfiles cros-workon platform systemd user
 
 DESCRIPTION="Login manager for Chromium OS."
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-login/"
@@ -43,7 +43,7 @@
 RDEPEND="${COMMON_DEPEND}"
 
 DEPEND="${COMMON_DEPEND}
-	>=chromeos-base/protofiles-0.0.39:=
+	>=chromeos-base/protofiles-0.0.43:=
 	chromeos-base/system_api:=[fuzzer?]
 	chromeos-base/vboot_reference:=
 "
@@ -100,6 +100,8 @@
 	exeinto /usr/share/cros/init/
 	doexe init/scripts/*
 
+	dotmpfiles tmpfiles.d/chromeos-login.conf
+
 	# For user session processes.
 	dodir /etc/skel/log
 
@@ -114,6 +116,9 @@
 	insinto /etc
 	doins chrome_dev.conf
 
+	insinto /usr/share/power_manager
+	doins powerd_prefs/suspend_freezer_deps_*
+
 	# Create daemon store directories.
 	local daemon_store="/etc/daemon-store/session_manager"
 	dodir "${daemon_store}"
diff --git a/chromeos-base/chromeos-nvt-tcon-updater/chromeos-nvt-tcon-updater-0.0.1-r3.ebuild b/chromeos-base/chromeos-nvt-tcon-updater/chromeos-nvt-tcon-updater-0.0.1-r3.ebuild
deleted file mode 100644
index c6e4dbf..0000000
--- a/chromeos-base/chromeos-nvt-tcon-updater/chromeos-nvt-tcon-updater-0.0.1-r3.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the BSD license.
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="ae5803da73f35c115c22da4df92e23407b5ff95d"
-CROS_WORKON_TREE="6834738aeee587979fa49506d78791429a21b272"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="chromeos-nvt-tcon-updater"
-
-inherit cros-workon user
-
-DESCRIPTION="Shell library for integrating the Novatek TCON Firmware updater"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-RDEPEND="
-	chromeos-base/chromeos-init
-	chromeos-base/common-assets
-	chromeos-base/minijail
-	sys-apps/novatek-tcon-fw-update-tool
-"
-
-pkg_preinst() {
-	enewgroup fwupdate-drm_dp_aux-i2c
-	enewuser fwupdate-drm_dp_aux-i2c
-}
-
-src_install() {
-	insinto "/opt/google/tcon/policies"
-	doins chromeos-nvt-tcon-updater/policies/"${ARCH}"/nvt-tcon-fw-updater.update.policy
-
-	insinto "/opt/google/tcon/scripts"
-	doins chromeos-nvt-tcon-updater/scripts/chromeos-nvt-tcon-firmware-update.sh
-}
diff --git a/chromeos-base/chromeos-nvt-tcon-updater/chromeos-nvt-tcon-updater-0.0.1-r5.ebuild b/chromeos-base/chromeos-nvt-tcon-updater/chromeos-nvt-tcon-updater-0.0.1-r5.ebuild
new file mode 100644
index 0000000..63f760e
--- /dev/null
+++ b/chromeos-base/chromeos-nvt-tcon-updater/chromeos-nvt-tcon-updater-0.0.1-r5.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the BSD license.
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="c2e0a76ececf0566758e921a6e1791d201ee30f6"
+CROS_WORKON_TREE="46004e0e5781880050cd53e1f573fda1e540cec5"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="chromeos-nvt-tcon-updater"
+
+inherit cros-workon user
+
+DESCRIPTION="Shell library for integrating the Novatek TCON Firmware updater"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/chromeos-init
+	chromeos-base/common-assets
+	chromeos-base/minijail
+	sys-apps/novatek-tcon-fw-update-tool
+"
+
+pkg_preinst() {
+	enewgroup fwupdate-drm_dp_aux-i2c
+	enewuser fwupdate-drm_dp_aux-i2c
+}
+
+src_install() {
+	insinto "/opt/google/tcon/policies"
+	doins chromeos-nvt-tcon-updater/policies/"${ARCH}"/nvt-tcon-fw-updater.update.policy
+
+	insinto "/opt/google/tcon/scripts"
+	doins chromeos-nvt-tcon-updater/scripts/chromeos-nvt-tcon-firmware-update.sh
+}
diff --git a/chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r243.ebuild b/chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r243.ebuild
deleted file mode 100644
index c602934..0000000
--- a/chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r243.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="0f4f2e09dc2ab3255685c3005d3f60081f3a2a09"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d5d5e575da16bb48f735ef93feedcfae4b1586e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk storage_info .gn"
-
-PLATFORM_SUBDIR="storage_info"
-
-inherit cros-workon platform
-
-DESCRIPTION="Chrome OS storage info tools"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/storage_info/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="+mmc nvme +sata test"
-
-DEPEND=""
-
-RDEPEND="${DEPEND}
-	chromeos-base/chromeos-common-script
-	sata? ( sys-apps/hdparm sys-apps/smartmontools )
-	nvme? ( sys-apps/smartmontools )
-	mmc? ( sys-apps/mmc-utils )"
-
-platform_pkg_test() {
-	platform_test "run" "test/storage_info_unit_test"
-}
-
-src_install() {
-	insinto /usr/share/misc
-	doins share/storage-info-common.sh
-}
diff --git a/chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r268.ebuild b/chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r268.ebuild
new file mode 100644
index 0000000..df56df3
--- /dev/null
+++ b/chromeos-base/chromeos-storage-info/chromeos-storage-info-0.0.1-r268.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8d5d5e575da16bb48f735ef93feedcfae4b1586e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk storage_info .gn"
+
+PLATFORM_SUBDIR="storage_info"
+
+inherit cros-workon platform
+
+DESCRIPTION="Chrome OS storage info tools"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/storage_info/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="+mmc nvme +sata test"
+
+DEPEND=""
+
+RDEPEND="${DEPEND}
+	chromeos-base/chromeos-common-script
+	sata? ( sys-apps/hdparm sys-apps/smartmontools )
+	nvme? ( sys-apps/smartmontools )
+	mmc? ( sys-apps/mmc-utils )"
+
+platform_pkg_test() {
+	platform_test "run" "test/storage_info_unit_test"
+}
+
+src_install() {
+	insinto /usr/share/misc
+	doins share/storage-info-common.sh
+}
diff --git a/chromeos-base/chromeos-test-init/chromeos-test-init-0.0.1-r3160.ebuild b/chromeos-base/chromeos-test-init/chromeos-test-init-0.0.1-r3160.ebuild
deleted file mode 100644
index 590de0a..0000000
--- a/chromeos-base/chromeos-test-init/chromeos-test-init-0.0.1-r3160.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-CROS_WORKON_COMMIT="dc2a3fe8d1a0cc593a0532a2d2bd9be4d2507aec"
-CROS_WORKON_TREE="fb9ead379c6de47f8f051c3460a4f382026edcd1"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_DESTDIR="${S}"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="init/upstart/test-init"
-
-inherit cros-workon
-
-DESCRIPTION="Additional upstart jobs that will be installed on test images"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/init/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="+encrypted_stateful tpm2"
-
-# File cryptohome-dbus-perf.conf moved from hwsec-test-utils.
-RDEPEND="!<chromeos-base/hwsec-test-utils-0.0.1-r83"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/init"
-}
-
-src_install() {
-	insinto /etc/init
-	doins upstart/test-init/*.conf
-
-	insinto /usr/share/cros
-	doins upstart/test-init/*_utils.sh
-
-	if use encrypted_stateful && use tpm2; then
-		insinto /etc/init
-		doins upstart/test-init/encrypted_stateful/create-system-key.conf
-
-		insinto /usr/share/cros
-		doins upstart/test-init/encrypted_stateful/system_key_utils.sh
-	fi
-}
diff --git a/chromeos-base/chromeos-test-init/chromeos-test-init-0.0.1-r3163.ebuild b/chromeos-base/chromeos-test-init/chromeos-test-init-0.0.1-r3163.ebuild
new file mode 100644
index 0000000..b9d81b3
--- /dev/null
+++ b/chromeos-base/chromeos-test-init/chromeos-test-init-0.0.1-r3163.ebuild
@@ -0,0 +1,45 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+CROS_WORKON_COMMIT="e087ae01bda1dd9ce8045f20fd204ea82878b801"
+CROS_WORKON_TREE="b82396efede47db2d3ecbb1e88bcb0b38713b6dd"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_DESTDIR="${S}"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="init/upstart/test-init"
+
+inherit cros-workon
+
+DESCRIPTION="Additional upstart jobs that will be installed on test images"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/init/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+encrypted_stateful tpm2"
+
+# File cryptohome-dbus-perf.conf moved from hwsec-test-utils.
+RDEPEND="!<chromeos-base/hwsec-test-utils-0.0.1-r83"
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/init"
+}
+
+src_install() {
+	insinto /etc/init
+	doins upstart/test-init/*.conf
+
+	insinto /usr/share/cros
+	doins upstart/test-init/*_utils.sh
+
+	if use encrypted_stateful && use tpm2; then
+		insinto /etc/init
+		doins upstart/test-init/encrypted_stateful/create-system-key.conf
+
+		insinto /usr/share/cros
+		doins upstart/test-init/encrypted_stateful/system_key_utils.sh
+	fi
+}
diff --git a/chromeos-base/chromeos-test-root/chromeos-test-root-0.0.1-r10.ebuild b/chromeos-base/chromeos-test-root/chromeos-test-root-0.0.1-r11.ebuild
similarity index 100%
rename from chromeos-base/chromeos-test-root/chromeos-test-root-0.0.1-r10.ebuild
rename to chromeos-base/chromeos-test-root/chromeos-test-root-0.0.1-r11.ebuild
diff --git a/chromeos-base/chromeos-test-root/chromeos-test-root-0.0.1.ebuild b/chromeos-base/chromeos-test-root/chromeos-test-root-0.0.1.ebuild
index 6980bb4..7fe8c1e 100644
--- a/chromeos-base/chromeos-test-root/chromeos-test-root-0.0.1.ebuild
+++ b/chromeos-base/chromeos-test-root/chromeos-test-root-0.0.1.ebuild
@@ -22,6 +22,7 @@
 RDEPEND="
 	bootchart? ( app-benchmarks/bootchart )
 	chromeos-base/chromeos-test-init
+	chromeos-base/update-utils
 	virtual/chromeos-test-testauthkeys
 	virtual/chromeos-bsp-test-root
 "
diff --git a/chromeos-base/chromeos-ti50/Manifest b/chromeos-base/chromeos-ti50/Manifest
new file mode 100644
index 0000000..39ef4c5
--- /dev/null
+++ b/chromeos-base/chromeos-ti50/Manifest
@@ -0,0 +1 @@
+DIST ti50.ro.0.0.11.rw.0.0.10.tar.xz 216940 BLAKE2B 21a0687ec3d6b112f60b3b4208f855c594d97ca910f2a08e8f7b35e3b37e1c0c3bbc92421298fb0ee288c228455be1415a07672aa3d6b9b1ced828c017105fc9 SHA512 3c7210553fb760e15ce64df6f4456a19bbac0cff63a8df5a7f60125eb7caeba31693c85169dc12f022045c0dd09cf3bdd7bdff37660711240e0311649296de88
diff --git a/chromeos-base/chromeos-ti50/OWNERS b/chromeos-base/chromeos-ti50/OWNERS
new file mode 100644
index 0000000..70304720
--- /dev/null
+++ b/chromeos-base/chromeos-ti50/OWNERS
@@ -0,0 +1,7 @@
+# Chromium Ti50 owners
+apronin@chromium.org
+jettrink@chromium.org
+mruthven@chromium.org
+namyoon@chromium.org
+sukhomlinov@chromium.org
+vbendeb@chromium.org
diff --git a/chromeos-base/chromeos-ti50/chromeos-ti50-0.0.1-r4.ebuild b/chromeos-base/chromeos-ti50/chromeos-ti50-0.0.1-r4.ebuild
new file mode 120000
index 0000000..565e698
--- /dev/null
+++ b/chromeos-base/chromeos-ti50/chromeos-ti50-0.0.1-r4.ebuild
@@ -0,0 +1 @@
+chromeos-ti50-0.0.1.ebuild
\ No newline at end of file
diff --git a/chromeos-base/chromeos-ti50/chromeos-ti50-0.0.1.ebuild b/chromeos-base/chromeos-ti50/chromeos-ti50-0.0.1.ebuild
new file mode 100644
index 0000000..38a9e13
--- /dev/null
+++ b/chromeos-base/chromeos-ti50/chromeos-ti50-0.0.1.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+DESCRIPTION="Ebuild to support the Chrome OS TI50 device."
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+# CR50 and TI50 share the same development tools, e.g. gsctool
+RDEPEND="chromeos-base/chromeos-cr50-dev
+	chromeos-base/chromeos-cr50-scripts"
+
+# There are two major types of images of Ti50, prod (used on most MP devices)
+# and pre-pvt, used on devices still not fully released.
+#
+# For now only the PrePVT image is installed until ti50 development gets
+# further along
+PRE_PVT_IMAGE="ti50.ro.0.0.11.rw.0.0.10"
+
+# Ensure all images and included in the manifest.
+TI50_BASE_NAMES=( "${PRE_PVT_IMAGE}" )
+MIRROR_PATH="gs://chromeos-localmirror/distfiles/"
+SRC_URI="$(printf " ${MIRROR_PATH}/%s.tar.xz" "${TI50_BASE_NAMES[@]}")"
+
+S="${WORKDIR}"
+
+src_install() {
+	# Always install both pre-pvt and MP Ti50 images, let the updater at
+	# run time decide which one to use, based on the H1 Board ID flags
+	# value.
+
+	insinto /opt/google/ti50/firmware
+
+	einfo "Will install ${PRE_PVT_IMAGE}"
+
+	newins "${PRE_PVT_IMAGE}"/*.bin.prod ti50.bin.prepvt
+}
diff --git a/chromeos-base/chromeos-touch-common/chromeos-touch-common-0.0.1-r12.ebuild b/chromeos-base/chromeos-touch-common/chromeos-touch-common-0.0.1-r12.ebuild
new file mode 100644
index 0000000..00833f6
--- /dev/null
+++ b/chromeos-base/chromeos-touch-common/chromeos-touch-common-0.0.1-r12.ebuild
@@ -0,0 +1,29 @@
+# Copyright (c) 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the BSD license.
+
+EAPI=7
+CROS_WORKON_COMMIT="935f179960a9c8fe01ddd80a9b88265293a33279"
+CROS_WORKON_TREE="145f674e7339af04f66e124d84cf65762c0a7fc4"
+CROS_WORKON_PROJECT="chromiumos/platform/touch_updater"
+CROS_WORKON_LOCALNAME="touch_updater"
+CROS_WORKON_SUBTREE="common"
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+inherit cros-workon
+
+DESCRIPTION="Common shell libraries for touch firmware updater wrapper scripts"
+HOMEPAGE="https://www.chromium.org/chromium-os"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+RDEPEND="
+	sys-apps/mosys
+	!<chromeos-base/touch_updater-0.0.1-r167
+"
+
+src_install() {
+	insinto "/opt/google/touch/scripts"
+	doins common/scripts/*.sh
+}
diff --git a/chromeos-base/chromeos-touch-common/chromeos-touch-common-0.0.1-r8.ebuild b/chromeos-base/chromeos-touch-common/chromeos-touch-common-0.0.1-r8.ebuild
deleted file mode 100644
index 9300a8e..0000000
--- a/chromeos-base/chromeos-touch-common/chromeos-touch-common-0.0.1-r8.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (c) 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the BSD license.
-
-EAPI=7
-CROS_WORKON_COMMIT="09b14345b3845c264aae31a77ca8afaeed584aa8"
-CROS_WORKON_TREE="03eaeab5fc69cbf8992e481f207bd10eb1eb9764"
-CROS_WORKON_PROJECT="chromiumos/platform/touch_updater"
-CROS_WORKON_LOCALNAME="touch_updater"
-CROS_WORKON_SUBTREE="common"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit cros-workon
-
-DESCRIPTION="Common shell libraries for touch firmware updater wrapper scripts"
-HOMEPAGE="https://www.chromium.org/chromium-os"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-RDEPEND="
-	sys-apps/mosys
-	!<chromeos-base/touch_updater-0.0.1-r167
-"
-
-src_install() {
-	insinto "/opt/google/touch/scripts"
-	doins common/scripts/*.sh
-}
diff --git a/chromeos-base/chromeos-touch-etphidiap/OWNERS b/chromeos-base/chromeos-touch-etphidiap/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/chromeos-touch-etphidiap/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/chromeos-touch-etphidiap/chromeos-touch-etphidiap-0.0.1-r13.ebuild b/chromeos-base/chromeos-touch-etphidiap/chromeos-touch-etphidiap-0.0.1-r13.ebuild
new file mode 100644
index 0000000..cc6ab27
--- /dev/null
+++ b/chromeos-base/chromeos-touch-etphidiap/chromeos-touch-etphidiap-0.0.1-r13.ebuild
@@ -0,0 +1,40 @@
+# Copyright (c) 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the BSD license.
+
+EAPI=7
+CROS_WORKON_COMMIT="3bdddd254b3fd5d391fae4990e0ae10205174433"
+CROS_WORKON_TREE="d27b69b780b7531fbca51927de61c58296c2d86d"
+CROS_WORKON_PROJECT="chromiumos/platform/touch_updater"
+CROS_WORKON_LOCALNAME="touch_updater"
+CROS_WORKON_SUBTREE="etphidiap"
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+inherit cros-workon user
+
+DESCRIPTION="Wrapper for etphidiap touch firmware updater."
+HOMEPAGE="https://www.chromium.org/chromium-os"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/chromeos-touch-common
+	sys-apps/etphidiap
+	!<chromeos-base/touch_updater-0.0.1-r167
+"
+
+pkg_preinst() {
+	enewgroup fwupdate-i2c
+	enewuser fwupdate-i2c
+}
+
+src_install() {
+	exeinto "/opt/google/touch/scripts"
+	doexe etphidiap/scripts/*.sh
+
+	if [ -d "etphidiap/policies/${ARCH}" ]; then
+		insinto "/opt/google/touch/policies"
+		doins etphidiap/policies/"${ARCH}"/*.policy
+	fi
+}
diff --git a/chromeos-base/chromeos-touch-etphidiap/chromeos-touch-etphidiap-0.0.1-r7.ebuild b/chromeos-base/chromeos-touch-etphidiap/chromeos-touch-etphidiap-0.0.1-r7.ebuild
deleted file mode 100644
index b73420b..0000000
--- a/chromeos-base/chromeos-touch-etphidiap/chromeos-touch-etphidiap-0.0.1-r7.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (c) 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the BSD license.
-
-EAPI=7
-CROS_WORKON_COMMIT="6459e2b146a0c75d5b6c03286779bcf7d9506116"
-CROS_WORKON_TREE="642051d4a136d75b9511905d33fd47e13dbf39e2"
-CROS_WORKON_PROJECT="chromiumos/platform/touch_updater"
-CROS_WORKON_LOCALNAME="touch_updater"
-CROS_WORKON_SUBTREE="etphidiap"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit cros-workon user
-
-DESCRIPTION="Wrapper for etphidiap touch firmware updater."
-HOMEPAGE="https://www.chromium.org/chromium-os"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-RDEPEND="
-	chromeos-base/chromeos-touch-common
-	sys-apps/etphidiap
-	!<chromeos-base/touch_updater-0.0.1-r167
-"
-
-pkg_preinst() {
-	enewgroup fwupdate-i2c
-	enewuser fwupdate-i2c
-}
-
-src_install() {
-	exeinto "/opt/google/touch/scripts"
-	doexe etphidiap/scripts/*.sh
-
-	if [ -d "etphidiap/policies/${ARCH}" ]; then
-		insinto "/opt/google/touch/policies"
-		doins etphidiap/policies/"${ARCH}"/*.policy
-	fi
-}
diff --git a/chromeos-base/chromeos-touch-stupdate/OWNERS b/chromeos-base/chromeos-touch-stupdate/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/chromeos-touch-stupdate/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/chromeos-touch-stupdate/chromeos-touch-stupdate-0.0.1-r10.ebuild b/chromeos-base/chromeos-touch-stupdate/chromeos-touch-stupdate-0.0.1-r10.ebuild
new file mode 100644
index 0000000..80151df
--- /dev/null
+++ b/chromeos-base/chromeos-touch-stupdate/chromeos-touch-stupdate-0.0.1-r10.ebuild
@@ -0,0 +1,40 @@
+# Copyright (c) 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the BSD license.
+
+EAPI=7
+CROS_WORKON_COMMIT="3bdddd254b3fd5d391fae4990e0ae10205174433"
+CROS_WORKON_TREE="f3cfb0e19c23daa6dedda7e9b060a0979560343c"
+CROS_WORKON_PROJECT="chromiumos/platform/touch_updater"
+CROS_WORKON_LOCALNAME="touch_updater"
+CROS_WORKON_SUBTREE="stupdate"
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+inherit cros-workon user
+
+DESCRIPTION="Wrapper for ST touch firmware updater."
+HOMEPAGE="https://www.chromium.org/chromium-os"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/chromeos-touch-common
+	sys-apps/st-touch-fw-updater
+	!<chromeos-base/touch_updater-0.0.1-r167
+"
+
+pkg_preinst() {
+	enewgroup fwupdate-i2c
+	enewuser fwupdate-i2c
+}
+
+src_install() {
+	exeinto "/opt/google/touch/scripts"
+	doexe stupdate/scripts/*.sh
+
+	if [ -d "stupdate/policies/${ARCH}" ]; then
+		insinto "/opt/google/touch/policies"
+		doins stupdate/policies/"${ARCH}"/*.policy
+	fi
+}
diff --git a/chromeos-base/chromeos-touch-stupdate/chromeos-touch-stupdate-0.0.1-r6.ebuild b/chromeos-base/chromeos-touch-stupdate/chromeos-touch-stupdate-0.0.1-r6.ebuild
deleted file mode 100644
index 79d4156..0000000
--- a/chromeos-base/chromeos-touch-stupdate/chromeos-touch-stupdate-0.0.1-r6.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (c) 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the BSD license.
-
-EAPI=7
-CROS_WORKON_COMMIT="b21eaa13ef54fff576d0bea30db4770447082705"
-CROS_WORKON_TREE="5185e2274b83c9f287ab11e0dc5fa489aec2d615"
-CROS_WORKON_PROJECT="chromiumos/platform/touch_updater"
-CROS_WORKON_LOCALNAME="touch_updater"
-CROS_WORKON_SUBTREE="stupdate"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit cros-workon user
-
-DESCRIPTION="Wrapper for ST touch firmware updater."
-HOMEPAGE="https://www.chromium.org/chromium-os"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-RDEPEND="
-	chromeos-base/chromeos-touch-common
-	sys-apps/st-touch-fw-updater
-	!<chromeos-base/touch_updater-0.0.1-r167
-"
-
-pkg_preinst() {
-	enewgroup fwupdate-i2c
-	enewuser fwupdate-i2c
-}
-
-src_install() {
-	exeinto "/opt/google/touch/scripts"
-	doexe stupdate/scripts/*.sh
-
-	if [ -d "stupdate/policies/${ARCH}" ]; then
-		insinto "/opt/google/touch/policies"
-		doins stupdate/policies/"${ARCH}"/*.policy
-	fi
-}
diff --git a/chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1628.ebuild b/chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1628.ebuild
deleted file mode 100644
index 1867b45..0000000
--- a/chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1628.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "1e69ede3d074afd135fa6f2136ea5d99c425702b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk trim .gn"
-
-PLATFORM_SUBDIR="trim"
-
-inherit cros-workon platform
-
-DESCRIPTION="Stateful partition periodic trimmer"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/trim/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND=""
-
-RDEPEND="${DEPEND}
-	chromeos-base/chromeos-common-script
-	chromeos-base/chromeos-init
-	sys-apps/util-linux"
-
-platform_pkg_test() {
-	platform_test "run" "tests/chromeos-trim-test"
-	platform_test "run" "tests/chromeos-do_trim-test"
-}
-
-src_install() {
-	insinto "/etc/init"
-	doins "init/trim.conf"
-
-	insinto "/usr/share/cros"
-	doins "share/trim_utils.sh"
-
-	dosbin "scripts/chromeos-trim"
-}
diff --git a/chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1653.ebuild b/chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1653.ebuild
new file mode 100644
index 0000000..1606b13
--- /dev/null
+++ b/chromeos-base/chromeos-trim/chromeos-trim-0.0.1-r1653.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "1e69ede3d074afd135fa6f2136ea5d99c425702b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk trim .gn"
+
+PLATFORM_SUBDIR="trim"
+
+inherit cros-workon platform
+
+DESCRIPTION="Stateful partition periodic trimmer"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/trim/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND=""
+
+RDEPEND="${DEPEND}
+	chromeos-base/chromeos-common-script
+	chromeos-base/chromeos-init
+	sys-apps/util-linux"
+
+platform_pkg_test() {
+	platform_test "run" "tests/chromeos-trim-test"
+	platform_test "run" "tests/chromeos-do_trim-test"
+}
+
+src_install() {
+	insinto "/etc/init"
+	doins "init/trim.conf"
+
+	insinto "/usr/share/cros"
+	doins "share/trim_utils.sh"
+
+	dosbin "scripts/chromeos-trim"
+}
diff --git a/chromeos-base/chromeos-zephyr-2_3/chromeos-zephyr-2_3-0.0.1-r110.ebuild b/chromeos-base/chromeos-zephyr-2_3/chromeos-zephyr-2_3-0.0.1-r110.ebuild
deleted file mode 100644
index 560de4a..0000000
--- a/chromeos-base/chromeos-zephyr-2_3/chromeos-zephyr-2_3-0.0.1-r110.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("1083289f056cea0baefefacf5f197911e33029aa" "3d45bbfa2d7a20159cc65eefe8be697f3c5ef4f2" "542b2296e6d515b265e25c6b7208e8fea3014f90" "d1bc80d021f4ebc31f6e8b36f14b738cc26c7b03")
-CROS_WORKON_TREE=("b38a9da11233b738387851e23ac9563d73a84aa3" "c8b449c296158acf7ce11ac65e2ac577247560da" "c7037905e78a10c0920e0834700c2b5888c8d114" "cbfc2404c2e411908f5e8db083daf3041b408522")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/zephyr-chrome"
-	"chromiumos/third_party/zephyr"
-	"chromiumos/third_party/zephyr/cmsis"
-	"chromiumos/third_party/zephyr/hal_stm32"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform/zephyr-chrome"
-	"third_party/zephyr/main/v2.3"
-	"third_party/zephyr/cmsis/v2.3"
-	"third_party/zephyr/hal_stm32/v2.3"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}/zephyr-chrome"
-	"${S}/zephyr-base"
-	"${S}/modules/cmsis"
-	"${S}/modules/hal_stm32"
-)
-
-inherit cros-zephyr cros-workon
-
-DESCRIPTION="Zephyr v2.3 based embedded controller firmware"
-HOMEPAGE="http://src.chromium.org"
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
diff --git a/chromeos-base/chromeos-zephyr-2_3/chromeos-zephyr-2_3-9999.ebuild b/chromeos-base/chromeos-zephyr-2_3/chromeos-zephyr-2_3-9999.ebuild
deleted file mode 100644
index 4090bbb..0000000
--- a/chromeos-base/chromeos-zephyr-2_3/chromeos-zephyr-2_3-9999.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/zephyr-chrome"
-	"chromiumos/third_party/zephyr"
-	"chromiumos/third_party/zephyr/cmsis"
-	"chromiumos/third_party/zephyr/hal_stm32"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform/zephyr-chrome"
-	"third_party/zephyr/main/v2.3"
-	"third_party/zephyr/cmsis/v2.3"
-	"third_party/zephyr/hal_stm32/v2.3"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}/zephyr-chrome"
-	"${S}/zephyr-base"
-	"${S}/modules/cmsis"
-	"${S}/modules/hal_stm32"
-)
-
-inherit cros-zephyr cros-workon
-
-DESCRIPTION="Zephyr v2.3 based embedded controller firmware"
-HOMEPAGE="http://src.chromium.org"
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
diff --git a/chromeos-base/chromeos-zephyr/OWNERS b/chromeos-base/chromeos-zephyr/OWNERS
new file mode 100644
index 0000000..a8f6a78
--- /dev/null
+++ b/chromeos-base/chromeos-zephyr/OWNERS
@@ -0,0 +1,9 @@
+dawidn@google.com
+dlaurie@google.com
+dossym@google.com
+fabiobaltieri@google.com
+jrosenth@google.com
+keithshort@google.com
+peress@google.com
+pgeorgi@google.com
+sjg@google.com
diff --git a/chromeos-base/chromeos-zephyr/chromeos-zephyr-0.0.1-r711.ebuild b/chromeos-base/chromeos-zephyr/chromeos-zephyr-0.0.1-r711.ebuild
new file mode 100644
index 0000000..ce6d2e5
--- /dev/null
+++ b/chromeos-base/chromeos-zephyr/chromeos-zephyr-0.0.1-r711.ebuild
@@ -0,0 +1,94 @@
+# Copyright (C) 2021 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.makefile file.
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("1343ad59f05dd3fa6551d339aae7b4e7f13bb030" "c3bd2094f92d574377f7af2aec147ae181aa5f8e" "8eb12e4466cc73f2a95292073832878814b8ed31" "ba5d0fb018cf200320efad9cc91b89e1f4a6d80c")
+CROS_WORKON_TREE=("060f5aa8b2726d17e2d12f764587a6a3ab7eeb81" "781df7da13c4275a2328c09e75fd937991d80e29" "049362d45a6362cbdede3ebd10c38ed8d446410a" "ef831ef09b8fdc0da7cceb25def086f853ae97cd")
+CROS_WORKON_USE_VCSID=1
+CROS_WORKON_PROJECT=(
+	"chromiumos/third_party/zephyr"
+	"chromiumos/third_party/zephyr/cmsis"
+	"chromiumos/third_party/zephyr/hal_stm32"
+	"chromiumos/platform/ec"
+)
+CROS_WORKON_LOCALNAME=(
+	"third_party/zephyr/main/v2.5"
+	"third_party/zephyr/cmsis/v2.5"
+	"third_party/zephyr/hal_stm32/v2.5"
+	"platform/ec"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/zephyr-base"
+	"${S}/modules/cmsis"
+	"${S}/modules/hal_stm32"
+	"${S}/modules/ec"
+)
+
+inherit cros-workon cros-unibuild coreboot-sdk toolchain-funcs
+
+DESCRIPTION="Zephyr based Embedded Controller firmware"
+KEYWORDS="*"
+LICENSE="Apache-2.0 BSD-Google"
+IUSE="unibuild"
+REQUIRED_USE="unibuild"
+
+BDEPEND="
+	chromeos-base/zephyr-build-tools
+	dev-python/docopt
+	dev-python/pykwalify
+	dev-util/ninja
+"
+
+DEPEND="
+	chromeos-base/chromeos-config
+"
+RDEPEND="${DEPEND}"
+
+ZEPHYR_EC_BUILD_DIRECTORIES=()
+
+src_configure() {
+	tc-export CC
+
+	while read -r board && read -r path; do
+		if [[ -z "${path}" ]]; then
+			continue
+		fi
+		if [[ ! -d "${S}/modules/ec/zephyr/${path}" ]]; then
+			die "Specified path for Zephyr project does not exist."
+		fi
+		local build_dir="build-${board}"
+
+		zmake \
+			--modules-dir "${S}/modules" \
+			--zephyr-base "${S}/zephyr-base" \
+			configure \
+			"modules/ec/zephyr/${path}" \
+			-B "${build_dir}"
+
+		ZEPHYR_EC_BUILD_DIRECTORIES+=("${build_dir}")
+	done < <(cros_config_host "get-firmware-build-combinations" zephyr-ec || die)
+}
+
+src_compile() {
+	tc-export CC
+
+	for build_dir in "${ZEPHYR_EC_BUILD_DIRECTORIES[@]}"; do
+		zmake \
+			--modules-dir "${S}/modules" \
+			--zephyr-base "${S}/zephyr-base" \
+			build \
+			"${build_dir}"
+	done
+}
+
+src_install() {
+	for build_dir in "${ZEPHYR_EC_BUILD_DIRECTORIES[@]}"; do
+		board="$(echo "${build_dir}" |cut -d/ -f1)"
+		board="${board#build-}"
+
+		insinto "/firmware/${board}"
+		doins "${build_dir}/output/zephyr.bin"
+	done
+}
diff --git a/chromeos-base/chromeos-zephyr/chromeos-zephyr-9999.ebuild b/chromeos-base/chromeos-zephyr/chromeos-zephyr-9999.ebuild
new file mode 100644
index 0000000..7babdf2
--- /dev/null
+++ b/chromeos-base/chromeos-zephyr/chromeos-zephyr-9999.ebuild
@@ -0,0 +1,92 @@
+# Copyright (C) 2021 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.makefile file.
+
+EAPI=7
+
+CROS_WORKON_USE_VCSID=1
+CROS_WORKON_PROJECT=(
+	"chromiumos/third_party/zephyr"
+	"chromiumos/third_party/zephyr/cmsis"
+	"chromiumos/third_party/zephyr/hal_stm32"
+	"chromiumos/platform/ec"
+)
+CROS_WORKON_LOCALNAME=(
+	"third_party/zephyr/main/v2.5"
+	"third_party/zephyr/cmsis/v2.5"
+	"third_party/zephyr/hal_stm32/v2.5"
+	"platform/ec"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/zephyr-base"
+	"${S}/modules/cmsis"
+	"${S}/modules/hal_stm32"
+	"${S}/modules/ec"
+)
+
+inherit cros-workon cros-unibuild coreboot-sdk toolchain-funcs
+
+DESCRIPTION="Zephyr based Embedded Controller firmware"
+KEYWORDS="~*"
+LICENSE="Apache-2.0 BSD-Google"
+IUSE="unibuild"
+REQUIRED_USE="unibuild"
+
+BDEPEND="
+	chromeos-base/zephyr-build-tools
+	dev-python/docopt
+	dev-python/pykwalify
+	dev-util/ninja
+"
+
+DEPEND="
+	chromeos-base/chromeos-config
+"
+RDEPEND="${DEPEND}"
+
+ZEPHYR_EC_BUILD_DIRECTORIES=()
+
+src_configure() {
+	tc-export CC
+
+	while read -r board && read -r path; do
+		if [[ -z "${path}" ]]; then
+			continue
+		fi
+		if [[ ! -d "${S}/modules/ec/zephyr/${path}" ]]; then
+			die "Specified path for Zephyr project does not exist."
+		fi
+		local build_dir="build-${board}"
+
+		zmake \
+			--modules-dir "${S}/modules" \
+			--zephyr-base "${S}/zephyr-base" \
+			configure \
+			"modules/ec/zephyr/${path}" \
+			-B "${build_dir}"
+
+		ZEPHYR_EC_BUILD_DIRECTORIES+=("${build_dir}")
+	done < <(cros_config_host "get-firmware-build-combinations" zephyr-ec || die)
+}
+
+src_compile() {
+	tc-export CC
+
+	for build_dir in "${ZEPHYR_EC_BUILD_DIRECTORIES[@]}"; do
+		zmake \
+			--modules-dir "${S}/modules" \
+			--zephyr-base "${S}/zephyr-base" \
+			build \
+			"${build_dir}"
+	done
+}
+
+src_install() {
+	for build_dir in "${ZEPHYR_EC_BUILD_DIRECTORIES[@]}"; do
+		board="$(echo "${build_dir}" |cut -d/ -f1)"
+		board="${board#build-}"
+
+		insinto "/firmware/${board}"
+		doins "${build_dir}/output/zephyr.bin"
+	done
+}
diff --git a/chromeos-base/chromite-sdk/chromite-sdk-1-r1.ebuild b/chromeos-base/chromite-sdk/chromite-sdk-1-r2.ebuild
similarity index 100%
rename from chromeos-base/chromite-sdk/chromite-sdk-1-r1.ebuild
rename to chromeos-base/chromite-sdk/chromite-sdk-1-r2.ebuild
diff --git a/chromeos-base/chromite-sdk/chromite-sdk-1.ebuild b/chromeos-base/chromite-sdk/chromite-sdk-1.ebuild
index 3001dc8..3e46813 100644
--- a/chromeos-base/chromite-sdk/chromite-sdk-1.ebuild
+++ b/chromeos-base/chromite-sdk/chromite-sdk-1.ebuild
@@ -7,7 +7,7 @@
 
 EAPI="7"
 
-PYTHON_COMPAT=( python{2_7,3_6,3_7} )
+PYTHON_COMPAT=( python3_{6..9} )
 
 inherit cros-constants python-r1
 
diff --git a/chromeos-base/chromite/chromite-0.0.2-r7540.ebuild b/chromeos-base/chromite/chromite-0.0.2-r7540.ebuild
deleted file mode 100644
index dd1947c..0000000
--- a/chromeos-base/chromite/chromite-0.0.2-r7540.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="5fcf0fa9382ef09d010f2ffdcb1ee90dce670efc"
-CROS_WORKON_TREE="d6b8223abd7183f83b74acd57e7d01aebb212821"
-CROS_WORKON_PROJECT="chromiumos/chromite"
-CROS_WORKON_LOCALNAME="../chromite"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-PYTHON_COMPAT=( python{2_7,3_6,3_7} )
-
-inherit cros-constants cros-workon python-r1
-
-DESCRIPTION="Subset of chromite libs for importing on DUTs"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/chromite/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-# We don't have unittests, so make sure the cros_run_unit_tests script
-# doesn't waste time rebuilding us all the time.
-RESTRICT="test"
-
-src_install() {
-	install_python() {
-		# TODO(crbug.com/771085): Figure out this SYSROOT business.
-		local dir="$(python_get_sitedir | sed "s:^${SYSROOT}::")/chromite"
-
-		insinto "${dir}"
-		doins -r "${S}"/*
-
-		# TODO (crbug.com/346859) Convert to using distutils and a setup.py
-		# to specify which files should be installed.
-		cd "${D}/${dir}"
-		rm -rf \
-			api \
-			appengine \
-			bin \
-			config \
-			contrib \
-			cidb \
-			cros_bisect \
-			infra \
-			lib/datafiles/ \
-			lib/testdata/ \
-			licensing \
-			service \
-			signing \
-			test \
-			third_party/pyelftools/examples \
-			third_party/pyelftools/test \
-			mobmonitor \
-			venv
-		find '(' \
-			-name 'OWNERS*' -o \
-			-name '*.py[co]' -o \
-			-name '*unittest.py' -o \
-			-name '*unittest' -o \
-			-name '*.go' -o \
-			-name '*.md' \
-			')' -delete || die
-		find -name '.git' -exec rm -rf {} + || die
-	}
-	python_foreach_impl install_python
-}
diff --git a/chromeos-base/chromite/chromite-9999.ebuild b/chromeos-base/chromite/chromite-9999.ebuild
deleted file mode 100644
index 15e69db..0000000
--- a/chromeos-base/chromite/chromite-9999.ebuild
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_PROJECT="chromiumos/chromite"
-CROS_WORKON_LOCALNAME="../chromite"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-PYTHON_COMPAT=( python{2_7,3_6,3_7} )
-
-inherit cros-constants cros-workon python-r1
-
-DESCRIPTION="Subset of chromite libs for importing on DUTs"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/chromite/"
-
-LICENSE="BSD-Google"
-KEYWORDS="~*"
-IUSE=""
-
-# We don't have unittests, so make sure the cros_run_unit_tests script
-# doesn't waste time rebuilding us all the time.
-RESTRICT="test"
-
-src_install() {
-	install_python() {
-		# TODO(crbug.com/771085): Figure out this SYSROOT business.
-		local dir="$(python_get_sitedir | sed "s:^${SYSROOT}::")/chromite"
-
-		insinto "${dir}"
-		doins -r "${S}"/*
-
-		# TODO (crbug.com/346859) Convert to using distutils and a setup.py
-		# to specify which files should be installed.
-		cd "${D}/${dir}"
-		rm -rf \
-			api \
-			appengine \
-			bin \
-			config \
-			contrib \
-			cidb \
-			cros_bisect \
-			infra \
-			lib/datafiles/ \
-			lib/testdata/ \
-			licensing \
-			service \
-			signing \
-			test \
-			third_party/pyelftools/examples \
-			third_party/pyelftools/test \
-			mobmonitor \
-			venv
-		find '(' \
-			-name 'OWNERS*' -o \
-			-name '*.py[co]' -o \
-			-name '*unittest.py' -o \
-			-name '*unittest' -o \
-			-name '*.go' -o \
-			-name '*.md' \
-			')' -delete || die
-		find -name '.git' -exec rm -rf {} + || die
-	}
-	python_foreach_impl install_python
-}
diff --git a/chromeos-base/chromite/files/chromeos-version.sh b/chromeos-base/chromite/files/chromeos-version.sh
deleted file mode 100755
index c95d45e..0000000
--- a/chromeos-base/chromite/files/chromeos-version.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2015 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.
-#
-# This echo statement sets the package base version (without its -r value).
-# If it is necessary to add a new blocker or version dependency on this ebuild
-# at the same time as revving the ebuild to a known version value, editing this
-# version can be useful.
-echo 0.0.2
diff --git a/chromeos-base/chromium-source/chromium-source-89.0.4387.0_rc-r1.ebuild b/chromeos-base/chromium-source/chromium-source-93.0.4554.0_rc-r1.ebuild
similarity index 100%
rename from chromeos-base/chromium-source/chromium-source-89.0.4387.0_rc-r1.ebuild
rename to chromeos-base/chromium-source/chromium-source-93.0.4554.0_rc-r1.ebuild
diff --git a/chromeos-base/chunnel/chunnel-0.1.0-r16.ebuild b/chromeos-base/chunnel/chunnel-0.1.0-r16.ebuild
deleted file mode 100644
index 06457aa..0000000
--- a/chromeos-base/chunnel/chunnel-0.1.0-r16.ebuild
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="e2ae0b1627d081187ae2cb21c1b76663a1d9eab4"
-CROS_WORKON_TREE="3500e9b09b6a848a59446fbd4b38b1df9cdd0f8e"
-CROS_RUST_SUBDIR="vm_tools/chunnel"
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-workon cros-rust user
-
-DESCRIPTION="Tunnel between localhost in different netns"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/chunnel"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="kvm_host"
-
-DEPEND="
-	chromeos-base/system_api:=
-	dev-rust/libchromeos:=
-	dev-rust/sys_util:=
-	=dev-rust/dbus-0.8*:=
-	=dev-rust/getopts-0.2*:=
-	=dev-rust/libc-0.2*:=
-	=dev-rust/log-0.4*:=
-	>=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3
-	>=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3
-	=dev-rust/tempfile-3*:=
-	=dev-rust/remain-0.2*:=
-"
-
-RDEPEND="sys-apps/dbus"
-
-src_compile() {
-	ecargo_build
-	use test && ecargo_test --no-run --workspace
-}
-
-src_test() {
-	cros-rust_src_test --workspace
-}
-
-src_install() {
-	local build_dir="$(cros-rust_get_build_dir)"
-
-	if use kvm_host; then
-		dobin "${build_dir}/chunneld"
-
-		insinto /etc/init
-		doins init/chunneld.conf
-
-		insinto /etc/dbus-1/system.d
-		doins dbus/org.chromium.Chunneld.conf
-
-		insinto /usr/share/policy
-		newins "seccomp/chunneld-seccomp-${ARCH}.policy" chunneld-seccomp.policy
-	else
-		dobin "${build_dir}/chunnel"
-	fi
-}
-
-pkg_preinst() {
-	if use kvm_host; then
-		enewuser chunneld
-		enewgroup chunneld
-	fi
-}
diff --git a/chromeos-base/chunnel/chunnel-0.1.0-r19.ebuild b/chromeos-base/chunnel/chunnel-0.1.0-r19.ebuild
new file mode 100644
index 0000000..8b13d6b
--- /dev/null
+++ b/chromeos-base/chunnel/chunnel-0.1.0-r19.ebuild
@@ -0,0 +1,75 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="4a82047a4fc487bfd5a74bf9bf540c7952c5230c"
+CROS_WORKON_TREE="bac3b594c76e24ac386a4a97b24374325db5b73c"
+CROS_RUST_SUBDIR="vm_tools/chunnel"
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust user
+
+DESCRIPTION="Tunnel between localhost in different netns"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/chunnel"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="kvm_host"
+
+DEPEND="
+	chromeos-base/system_api:=
+	dev-rust/libchromeos:=
+	dev-rust/sys_util:=
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/getopts-0.2*:=
+	=dev-rust/libc-0.2*:=
+	=dev-rust/log-0.4*:=
+	>=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3
+	>=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3
+	=dev-rust/remain-0.2*:=
+	dev-rust/sys_util:=
+	=dev-rust/tempfile-3*:=
+"
+
+RDEPEND="sys-apps/dbus"
+
+src_compile() {
+	ecargo_build
+	use test && ecargo_test --no-run --workspace
+}
+
+src_test() {
+	cros-rust_src_test --workspace
+}
+
+src_install() {
+	local build_dir="$(cros-rust_get_build_dir)"
+
+	if use kvm_host; then
+		dobin "${build_dir}/chunneld"
+
+		insinto /etc/init
+		doins init/chunneld.conf
+
+		insinto /etc/dbus-1/system.d
+		doins dbus/org.chromium.Chunneld.conf
+
+		insinto /usr/share/policy
+		newins "seccomp/chunneld-seccomp-${ARCH}.policy" chunneld-seccomp.policy
+	else
+		dobin "${build_dir}/chunnel"
+	fi
+}
+
+pkg_preinst() {
+	if use kvm_host; then
+		enewuser chunneld
+		enewgroup chunneld
+	fi
+	cros-rust_pkg_preinst
+}
diff --git a/chromeos-base/chunnel/chunnel-9999.ebuild b/chromeos-base/chunnel/chunnel-9999.ebuild
index 2007bc5..ec0772e 100644
--- a/chromeos-base/chunnel/chunnel-9999.ebuild
+++ b/chromeos-base/chunnel/chunnel-9999.ebuild
@@ -29,8 +29,9 @@
 	=dev-rust/log-0.4*:=
 	>=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3
 	>=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3
-	=dev-rust/tempfile-3*:=
 	=dev-rust/remain-0.2*:=
+	dev-rust/sys_util:=
+	=dev-rust/tempfile-3*:=
 "
 
 RDEPEND="sys-apps/dbus"
@@ -68,4 +69,5 @@
 		enewuser chunneld
 		enewgroup chunneld
 	fi
+	cros-rust_pkg_preinst
 }
diff --git a/chromeos-base/cirque_fw_update/OWNERS b/chromeos-base/cirque_fw_update/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/cirque_fw_update/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/codelab/codelab-0.0.1-r125.ebuild b/chromeos-base/codelab/codelab-0.0.1-r125.ebuild
deleted file mode 100644
index 9cf763c..0000000
--- a/chromeos-base/codelab/codelab-0.0.1-r125.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "c8339e925dbb6132281f13d2df57ba1cad2d6a62" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk codelab .gn"
-
-PLATFORM_SUBDIR="codelab"
-
-inherit cros-workon platform
-
-DESCRIPTION="Developer codelab for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/codelab/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-src_install() {
-	dobin "${OUT}"/codelab
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/codelab_test"
-}
diff --git a/chromeos-base/codelab/codelab-0.0.1-r150.ebuild b/chromeos-base/codelab/codelab-0.0.1-r150.ebuild
new file mode 100644
index 0000000..101571c
--- /dev/null
+++ b/chromeos-base/codelab/codelab-0.0.1-r150.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "c8339e925dbb6132281f13d2df57ba1cad2d6a62" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk codelab .gn"
+
+PLATFORM_SUBDIR="codelab"
+
+inherit cros-workon platform
+
+DESCRIPTION="Developer codelab for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/codelab/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+src_install() {
+	dobin "${OUT}"/codelab
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/codelab_test"
+}
diff --git a/chromeos-base/common-assets/common-assets-0.0.2-r132.ebuild b/chromeos-base/common-assets/common-assets-0.0.2-r132.ebuild
deleted file mode 100644
index 549992a..0000000
--- a/chromeos-base/common-assets/common-assets-0.0.2-r132.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="fc499a80d7eb7689a45328c4e660e731ce76fac0"
-CROS_WORKON_TREE="79888e3275ab32c8e75d68a7a940d996c1dfa8c8"
-CROS_WORKON_PROJECT="chromiumos/platform/assets"
-CROS_WORKON_LOCALNAME="platform/assets"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-
-inherit cros-workon
-
-DESCRIPTION="Common Chromium OS assets (images, sounds, etc.)"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/assets"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="
-	+fonts
-"
-
-# display_boot_message calls the pango-view program.
-RDEPEND="
-	fonts? ( chromeos-base/chromeos-fonts )
-	x11-libs/pango"
-
-# Don't strip NaCl executables. These are not linux executables and the
-# linux host's strip command doesn't know how to handle them correctly.
-STRIP_MASK="*.nexe"
-
-src_install() {
-	insinto /usr/share/chromeos-assets/images
-	doins -r images/*
-
-	insinto /usr/share/chromeos-assets/images_100_percent
-	doins -r images_100_percent/*
-
-	insinto /usr/share/chromeos-assets/images_200_percent
-	doins -r images_200_percent/*
-
-	insinto /usr/share/chromeos-assets/text
-	doins -r text/boot_messages
-	dosbin text/display_boot_message
-
-	insinto /usr/share/chromeos-assets
-	doins -r connectivity_diagnostics
-	doins -r connectivity_diagnostics_launcher
-
-	# These files aren't used at runtime.
-	find "${D}" -name '*.grd' -delete
-}
diff --git a/chromeos-base/common-assets/common-assets-0.0.2-r137.ebuild b/chromeos-base/common-assets/common-assets-0.0.2-r137.ebuild
new file mode 100644
index 0000000..58924c7
--- /dev/null
+++ b/chromeos-base/common-assets/common-assets-0.0.2-r137.ebuild
@@ -0,0 +1,50 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+CROS_WORKON_COMMIT="ed1bce40cdd948cb92c7c190354383b5ed17f2a4"
+CROS_WORKON_TREE="bee194c2ea879bf27d08e1ebaf64d33e61d7dbff"
+CROS_WORKON_PROJECT="chromiumos/platform/assets"
+CROS_WORKON_LOCALNAME="platform/assets"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+inherit cros-workon
+
+DESCRIPTION="Common Chromium OS assets (images, sounds, etc.)"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/assets"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="
+	+fonts
+"
+
+# display_boot_message calls the pango-view program.
+RDEPEND="
+	fonts? ( chromeos-base/chromeos-fonts )
+	x11-libs/pango"
+
+# Don't strip NaCl executables. These are not linux executables and the
+# linux host's strip command doesn't know how to handle them correctly.
+STRIP_MASK="*.nexe"
+
+src_install() {
+	insinto /usr/share/chromeos-assets/images
+	doins -r images/*
+
+	insinto /usr/share/chromeos-assets/images_100_percent
+	doins -r images_100_percent/*
+
+	insinto /usr/share/chromeos-assets/images_200_percent
+	doins -r images_200_percent/*
+
+	insinto /usr/share/chromeos-assets/text
+	doins -r text/boot_messages
+	dosbin text/display_boot_message
+
+	# These files aren't used at runtime.
+	find "${D}" -name '*.grd' -delete
+}
diff --git a/chromeos-base/common-assets/common-assets-9999.ebuild b/chromeos-base/common-assets/common-assets-9999.ebuild
index 2173222..ac32570 100644
--- a/chromeos-base/common-assets/common-assets-9999.ebuild
+++ b/chromeos-base/common-assets/common-assets-9999.ebuild
@@ -43,10 +43,6 @@
 	doins -r text/boot_messages
 	dosbin text/display_boot_message
 
-	insinto /usr/share/chromeos-assets
-	doins -r connectivity_diagnostics
-	doins -r connectivity_diagnostics_launcher
-
 	# These files aren't used at runtime.
 	find "${D}" -name '*.grd' -delete
 }
diff --git a/chromeos-base/crash-reporter/crash-reporter-0.0.1-r3468.ebuild b/chromeos-base/crash-reporter/crash-reporter-0.0.1-r3468.ebuild
deleted file mode 100644
index 3291115..0000000
--- a/chromeos-base/crash-reporter/crash-reporter-0.0.1-r3468.ebuild
+++ /dev/null
@@ -1,164 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="45dd364815081c1e013ea0321820d74afb2f4693"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "611a40579a57ba857d4fec4a8dedb5b5c40f9615" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 crash-reporter metrics .gn"
-
-PLATFORM_SUBDIR="crash-reporter"
-
-inherit cros-arm64 cros-i686 cros-workon platform systemd udev user
-
-DESCRIPTION="Crash reporting service that uploads crash reports with debug information"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crash-reporter/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="cheets chromeless_tty cros_ec cros_embedded -direncryption kvm_guest systemd fuzzer"
-
-COMMON_DEPEND="
-	chromeos-base/minijail:=
-	chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?]
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/protobuf:=
-	dev-libs/re2:=
-	kvm_guest? ( net-libs/grpc:= )
-	net-misc/curl:=
-	sys-libs/zlib:=
-"
-RDEPEND="${COMMON_DEPEND}
-	chromeos-base/chromeos-ca-certificates
-	|| ( sys-apps/journald:= sys-apps/systemd:= )
-	direncryption? ( sys-apps/keyutils:= )
-	cros_ec? ( chromeos-base/ec-utils )
-"
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/debugd-client:=
-	chromeos-base/session_manager-client:=
-	chromeos-base/shill-client:=
-	chromeos-base/system_api:=[fuzzer?]
-	chromeos-base/vboot_reference:=
-	chromeos-base/vm_protos:=
-"
-
-PATCHES="
-	${FILESDIR}/0001-crash-reporter-Fix-anomaly_detector-build.patch
-"
-
-src_configure() {
-	platform_src_configure
-	use cheets && use_i686 && platform_src_configure_i686
-	use cheets && use_arm64 && platform_src_configure_arm64
-}
-
-src_compile() {
-	platform_src_compile
-	use cheets && use_i686 && platform_src_compile_i686 "core_collector"
-	use cheets && use_arm64 && platform_src_compile_arm64 "core_collector"
-}
-
-pkg_setup() {
-	# Has to be done in pkg_setup() instead of pkg_preinst() since
-	# src_install() will need the crash user and group.
-	enewuser "crash"
-	enewgroup "crash"
-	# A group to manage file permissions for files that crash reporter
-	# components need to access.
-	enewgroup "crash-access"
-	# A group to grant access to the user's crash directory (in /home)
-	enewgroup "crash-user-access"
-	cros-workon_pkg_setup
-}
-
-src_install() {
-	into /
-	dosbin "${OUT}"/crash_reporter
-	dosbin "${OUT}"/crash_sender
-
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.AnomalyEventService.conf
-
-	local daemon_store="/etc/daemon-store/crash"
-	dodir "${daemon_store}"
-	fperms 3770 "${daemon_store}"
-	fowners crash:crash-user-access "${daemon_store}"
-
-	into /usr
-	use cros_embedded || dobin "${OUT}"/anomaly_detector
-	dosbin kernel_log_collector.sh
-
-	if use cheets; then
-		dobin "${OUT}"/core_collector
-		use_i686 && newbin "$(platform_out_i686)"/core_collector "core_collector32"
-		use_arm64 && newbin "$(platform_out_arm64)"/core_collector "core_collector64"
-	fi
-
-	if use systemd; then
-		systemd_dounit init/crash-reporter.service
-		systemd_dounit init/crash-boot-collect.service
-		systemd_enable_service multi-user.target crash-reporter.service
-		systemd_enable_service multi-user.target crash-boot-collect.service
-		systemd_dounit init/crash-sender.service
-		systemd_enable_service multi-user.target crash-sender.service
-		systemd_dounit init/crash-sender.timer
-		systemd_enable_service timers.target crash-sender.timer
-		if ! use cros_embedded; then
-			systemd_dounit init/anomaly-detector.service
-			systemd_enable_service multi-user.target anomaly-detector.service
-		fi
-	else
-		insinto /etc/init
-		doins init/crash-reporter.conf
-		doins init/crash-reporter-early-init.conf
-		doins init/crash-boot-collect.conf
-		doins init/crash-sender.conf
-		use cros_embedded || doins init/anomaly-detector.conf
-	fi
-
-	insinto /etc
-	doins crash_reporter_logs.conf
-
-	udev_dorules 99-crash-reporter.rules
-
-	# Install metrics/OWNERS as the owners file for the fuzzers.
-	# The owners files need to have actual email addresses, not
-	# an include-link.
-	platform_fuzzer_install "${S}"/../metrics/OWNERS \
-		"${OUT}"/crash_sender_fuzzer \
-		--dict "${S}"/crash_sender_fuzzer.dict
-
-	platform_fuzzer_install "${S}"/../metrics/OWNERS \
-		"${OUT}"/chrome_collector_fuzzer \
-		--dict "${S}"/chrome_collector_fuzzer.dict
-
-	platform_fuzzer_install "${S}"/../metrics/OWNERS \
-		"${OUT}"/anomaly_detector_fuzzer \
-		--dict "${S}"/anomaly_detector_fuzzer.dict
-
-	# Install crash_serializer into /usr/local/sbin, which is only present
-	# on test images. See:
-	# https://chromium.googlesource.com/chromiumos/platform2/+/refs/heads/master/dev-install/README.md#Environments
-	into /usr/local
-	dosbin "${OUT}"/crash_serializer
-}
-
-platform_pkg_test() {
-	local gtest_filter_user_tests="-*.RunAsRoot*:"
-	local gtest_filter_root_tests="*.RunAsRoot*-"
-
-	platform_test "run" "${OUT}/crash_reporter_test" "0" \
-		"${gtest_filter_user_tests}"
-	platform_test "run" "${OUT}/crash_reporter_test" "1" \
-		"${gtest_filter_root_tests}"
-	platform_test "run" "${OUT}/anomaly_detector_test"
-	platform_test "run" "${OUT}/anomaly_detector_text_file_reader_test"
-	platform_test "run" "${OUT}/anomaly_detector_log_reader_test"
-}
diff --git a/chromeos-base/crash-reporter/crash-reporter-0.0.1-r3586.ebuild b/chromeos-base/crash-reporter/crash-reporter-0.0.1-r3586.ebuild
new file mode 100644
index 0000000..194f5e3
--- /dev/null
+++ b/chromeos-base/crash-reporter/crash-reporter-0.0.1-r3586.ebuild
@@ -0,0 +1,172 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="9af083c78a329699153cc604ee62cd02f3a87b2b"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "6801629d7f37434bc503901837418db96ea3fc51" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 crash-reporter metrics .gn"
+
+PLATFORM_SUBDIR="crash-reporter"
+
+inherit cros-arm64 cros-i686 cros-workon platform systemd udev user
+
+DESCRIPTION="Crash reporting service that uploads crash reports with debug information"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crash-reporter/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="arcpp arcvm chromeless_tty cros_ec cros_embedded -direncryption kvm_guest systemd fuzzer test vm-containers"
+
+COMMON_DEPEND="
+	chromeos-base/minijail:=
+	chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?]
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/protobuf:=
+	dev-libs/re2:=
+	kvm_guest? ( net-libs/grpc:= )
+	net-misc/curl:=
+	sys-libs/zlib:=
+"
+RDEPEND="${COMMON_DEPEND}
+	chromeos-base/chromeos-ca-certificates
+	direncryption? ( sys-apps/keyutils:= )
+	cros_ec? ( chromeos-base/ec-utils )
+"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/debugd-client:=
+	chromeos-base/session_manager-client:=
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=[fuzzer?]
+	chromeos-base/vboot_reference:=
+	chromeos-base/vm_protos:=
+	test? (
+		app-arch/gzip
+	)
+"
+
+PATCHES="
+	${FILESDIR}/0001-crash-reporter-Fix-anomaly_detector-build.patch
+"
+
+src_configure() {
+	platform_src_configure
+	use arcpp && use_i686 && platform_src_configure_i686
+	use arcpp && use_arm64 && platform_src_configure_arm64
+}
+
+src_compile() {
+	platform_src_compile
+	use arcpp && use_i686 && platform_src_compile_i686 "core_collector"
+	use arcpp && use_arm64 && platform_src_compile_arm64 "core_collector"
+}
+
+pkg_setup() {
+	# Has to be done in pkg_setup() instead of pkg_preinst() since
+	# src_install() will need the crash user and group.
+	enewuser "crash"
+	enewgroup "crash"
+	# A group to manage file permissions for files that crash reporter
+	# components need to access.
+	enewgroup "crash-access"
+	# A group to grant access to the user's crash directory (in /home)
+	enewgroup "crash-user-access"
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	into /
+	dosbin "${OUT}"/crash_reporter
+	if ! use vm-containers; then
+		dosbin "${OUT}"/crash_sender
+	fi
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.AnomalyEventService.conf
+
+	local daemon_store="/etc/daemon-store/crash"
+	dodir "${daemon_store}"
+	fperms 3770 "${daemon_store}"
+	fowners crash:crash-user-access "${daemon_store}"
+
+	into /usr
+	use cros_embedded || dobin "${OUT}"/anomaly_detector
+	dosbin kernel_log_collector.sh
+
+	if use arcpp; then
+		dobin "${OUT}"/core_collector
+		use_i686 && newbin "$(platform_out_i686)"/core_collector "core_collector32"
+		use_arm64 && newbin "$(platform_out_arm64)"/core_collector "core_collector64"
+	fi
+
+	if use systemd; then
+		systemd_dounit init/crash-reporter.service
+		systemd_dounit init/crash-boot-collect.service
+		systemd_enable_service multi-user.target crash-reporter.service
+		systemd_enable_service multi-user.target crash-boot-collect.service
+		if ! use vm-containers; then
+			systemd_dounit init/crash-sender.service
+			systemd_enable_service multi-user.target crash-sender.service
+			systemd_dounit init/crash-sender.timer
+			systemd_enable_service timers.target crash-sender.timer
+		fi
+		if ! use cros_embedded; then
+			systemd_dounit init/anomaly-detector.service
+			systemd_enable_service multi-user.target anomaly-detector.service
+		fi
+	else
+		insinto /etc/init
+		doins init/crash-reporter.conf
+		doins init/crash-reporter-early-init.conf
+		doins init/crash-boot-collect.conf
+		if ! use vm-containers; then
+			doins init/crash-sender.conf
+		fi
+		use cros_embedded || doins init/anomaly-detector.conf
+	fi
+
+	insinto /etc
+	doins crash_reporter_logs.conf
+
+	udev_dorules 99-crash-reporter.rules
+
+	# Install metrics/OWNERS as the owners file for the fuzzers.
+	# The owners files need to have actual email addresses, not
+	# an include-link.
+	platform_fuzzer_install "${S}"/../metrics/OWNERS \
+		"${OUT}"/crash_sender_fuzzer \
+		--dict "${S}"/crash_sender_fuzzer.dict
+
+	platform_fuzzer_install "${S}"/../metrics/OWNERS \
+		"${OUT}"/chrome_collector_fuzzer \
+		--dict "${S}"/chrome_collector_fuzzer.dict
+
+	platform_fuzzer_install "${S}"/../metrics/OWNERS \
+		"${OUT}"/anomaly_detector_fuzzer \
+		--dict "${S}"/anomaly_detector_fuzzer.dict
+
+	# Install crash_serializer into /usr/local/sbin, which is only present
+	# on test images. See:
+	# https://chromium.googlesource.com/chromiumos/platform2/+/refs/heads/master/dev-install/README.md#Environments
+	into /usr/local
+	dosbin "${OUT}"/crash_serializer
+}
+
+platform_pkg_test() {
+	local gtest_filter_user_tests="-*.RunAsRoot*:"
+	local gtest_filter_root_tests="*.RunAsRoot*-"
+
+	platform_test "run" "${OUT}/crash_reporter_test" "0" \
+		"${gtest_filter_user_tests}"
+	platform_test "run" "${OUT}/crash_reporter_test" "1" \
+		"${gtest_filter_root_tests}"
+	platform_test "run" "${OUT}/anomaly_detector_test"
+	platform_test "run" "${OUT}/anomaly_detector_text_file_reader_test"
+	platform_test "run" "${OUT}/anomaly_detector_log_reader_test"
+}
diff --git a/chromeos-base/crash-reporter/crash-reporter-9999.ebuild b/chromeos-base/crash-reporter/crash-reporter-9999.ebuild
index 191c457..08ad742 100644
--- a/chromeos-base/crash-reporter/crash-reporter-9999.ebuild
+++ b/chromeos-base/crash-reporter/crash-reporter-9999.ebuild
@@ -19,7 +19,7 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="cheets chromeless_tty cros_ec cros_embedded -direncryption kvm_guest systemd fuzzer"
+IUSE="arcpp arcvm chromeless_tty cros_ec cros_embedded -direncryption kvm_guest systemd fuzzer test vm-containers"
 
 COMMON_DEPEND="
 	chromeos-base/minijail:=
@@ -33,7 +33,6 @@
 "
 RDEPEND="${COMMON_DEPEND}
 	chromeos-base/chromeos-ca-certificates
-	|| ( sys-apps/journald:= sys-apps/systemd:= )
 	direncryption? ( sys-apps/keyutils:= )
 	cros_ec? ( chromeos-base/ec-utils )
 "
@@ -45,6 +44,9 @@
 	chromeos-base/system_api:=[fuzzer?]
 	chromeos-base/vboot_reference:=
 	chromeos-base/vm_protos:=
+	test? (
+		app-arch/gzip
+	)
 "
 
 PATCHES="
@@ -53,14 +55,14 @@
 
 src_configure() {
 	platform_src_configure
-	use cheets && use_i686 && platform_src_configure_i686
-	use cheets && use_arm64 && platform_src_configure_arm64
+	use arcpp && use_i686 && platform_src_configure_i686
+	use arcpp && use_arm64 && platform_src_configure_arm64
 }
 
 src_compile() {
 	platform_src_compile
-	use cheets && use_i686 && platform_src_compile_i686 "core_collector"
-	use cheets && use_arm64 && platform_src_compile_arm64 "core_collector"
+	use arcpp && use_i686 && platform_src_compile_i686 "core_collector"
+	use arcpp && use_arm64 && platform_src_compile_arm64 "core_collector"
 }
 
 pkg_setup() {
@@ -79,7 +81,9 @@
 src_install() {
 	into /
 	dosbin "${OUT}"/crash_reporter
-	dosbin "${OUT}"/crash_sender
+	if ! use vm-containers; then
+		dosbin "${OUT}"/crash_sender
+	fi
 
 	insinto /etc/dbus-1/system.d
 	doins dbus/org.chromium.AnomalyEventService.conf
@@ -93,7 +97,7 @@
 	use cros_embedded || dobin "${OUT}"/anomaly_detector
 	dosbin kernel_log_collector.sh
 
-	if use cheets; then
+	if use arcpp; then
 		dobin "${OUT}"/core_collector
 		use_i686 && newbin "$(platform_out_i686)"/core_collector "core_collector32"
 		use_arm64 && newbin "$(platform_out_arm64)"/core_collector "core_collector64"
@@ -104,10 +108,12 @@
 		systemd_dounit init/crash-boot-collect.service
 		systemd_enable_service multi-user.target crash-reporter.service
 		systemd_enable_service multi-user.target crash-boot-collect.service
-		systemd_dounit init/crash-sender.service
-		systemd_enable_service multi-user.target crash-sender.service
-		systemd_dounit init/crash-sender.timer
-		systemd_enable_service timers.target crash-sender.timer
+		if ! use vm-containers; then
+			systemd_dounit init/crash-sender.service
+			systemd_enable_service multi-user.target crash-sender.service
+			systemd_dounit init/crash-sender.timer
+			systemd_enable_service timers.target crash-sender.timer
+		fi
 		if ! use cros_embedded; then
 			systemd_dounit init/anomaly-detector.service
 			systemd_enable_service multi-user.target anomaly-detector.service
@@ -117,7 +123,9 @@
 		doins init/crash-reporter.conf
 		doins init/crash-reporter-early-init.conf
 		doins init/crash-boot-collect.conf
-		doins init/crash-sender.conf
+		if ! use vm-containers; then
+			doins init/crash-sender.conf
+		fi
 		use cros_embedded || doins init/anomaly-detector.conf
 	fi
 
diff --git a/chromeos-base/crash-reporter/files/0001-crash-reporter-Fix-anomaly_detector-build.patch b/chromeos-base/crash-reporter/files/0001-crash-reporter-Fix-anomaly_detector-build.patch
index 497c163..8ec2d81 100644
--- a/chromeos-base/crash-reporter/files/0001-crash-reporter-Fix-anomaly_detector-build.patch
+++ b/chromeos-base/crash-reporter/files/0001-crash-reporter-Fix-anomaly_detector-build.patch
@@ -18,14 +18,14 @@
 index 0e6f0c2b21a..1c385b75556 100644
 --- a/BUILD.gn
 +++ b/BUILD.gn
-@@ -50,6 +50,9 @@ static_library("libcrash") {
+@@ -49,6 +49,9 @@ static_library("libcrash") {
      "paths.cc",
      "util.cc",
    ]
 +  deps = [
 +    ":libcrash_reporter",
 +  ]
- 
+   all_dependent_configs = [ ":libcrash_config" ]
    defines = [ "USE_DIRENCRYPTION=${use.direncryption}" ]
  
 -- 
diff --git a/chromeos-base/cronista/OWNERS b/chromeos-base/cronista/OWNERS
new file mode 100644
index 0000000..1f72510
--- /dev/null
+++ b/chromeos-base/cronista/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/cronista/OWNERS
diff --git a/chromeos-base/cronista/cronista-0.24.52-r7.ebuild b/chromeos-base/cronista/cronista-0.24.52-r7.ebuild
new file mode 100644
index 0000000..5042cd6
--- /dev/null
+++ b/chromeos-base/cronista/cronista-0.24.52-r7.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="1ee46243dce2991eddf488b7b19ab6bac7d3acdd"
+CROS_WORKON_TREE="88e9197eef6172639e45852afa826fa1c6e0eb20"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="cronista"
+
+inherit user cros-workon cros-rust
+
+DESCRIPTION="Authenticated storage daemon."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cronista/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="manatee"
+
+RDEPEND="sys-apps/dbus"
+
+DEPEND="
+	chromeos-base/libsirenia:=
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/getopts-0.2*:=
+	dev-rust/libchromeos:=
+	>=dev-rust/openssl-0.10.25:= <dev-rust/openssl-0.11.0
+	>=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3
+	>=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3
+	>=dev-rust/serde-1.0.114:= <dev-rust/serde-2.0.0
+	>=dev-rust/serde_derive-1.0.114:= <dev-rust/serde_derive-2.0.0
+	dev-rust/sys_util:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+	dev-rust/system_api:=
+"
+
+pkg_setup() {
+	enewuser cronista
+	enewgroup cronista
+	cros-rust_pkg_setup
+}
+
+src_install() {
+	local build_dir="$(cros-rust_get_build_dir)"
+	dobin "${build_dir}/cronista"
+
+	local daemon_store="/etc/daemon-store/cronista"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners cronista:cronista "${daemon_store}"
+
+	if use manatee ;  then
+		insinto /etc/init
+		doins upstart/cronista.conf
+	fi
+}
diff --git a/chromeos-base/cronista/cronista-9999.ebuild b/chromeos-base/cronista/cronista-9999.ebuild
new file mode 100644
index 0000000..46eea96
--- /dev/null
+++ b/chromeos-base/cronista/cronista-9999.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="cronista"
+
+inherit user cros-workon cros-rust
+
+DESCRIPTION="Authenticated storage daemon."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cronista/"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE="manatee"
+
+RDEPEND="sys-apps/dbus"
+
+DEPEND="
+	chromeos-base/libsirenia:=
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/getopts-0.2*:=
+	dev-rust/libchromeos:=
+	>=dev-rust/openssl-0.10.25:= <dev-rust/openssl-0.11.0
+	>=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3
+	>=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3
+	>=dev-rust/serde-1.0.114:= <dev-rust/serde-2.0.0
+	>=dev-rust/serde_derive-1.0.114:= <dev-rust/serde_derive-2.0.0
+	dev-rust/sys_util:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+	dev-rust/system_api:=
+"
+
+pkg_setup() {
+	enewuser cronista
+	enewgroup cronista
+	cros-rust_pkg_setup
+}
+
+src_install() {
+	local build_dir="$(cros-rust_get_build_dir)"
+	dobin "${build_dir}/cronista"
+
+	local daemon_store="/etc/daemon-store/cronista"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners cronista:cronista "${daemon_store}"
+
+	if use manatee ;  then
+		insinto /etc/init
+		doins upstart/cronista.conf
+	fi
+}
diff --git a/chromeos-base/cronista/files/chromeos-version.sh b/chromeos-base/cronista/files/chromeos-version.sh
new file mode 100644
index 0000000..c0bfba7
--- /dev/null
+++ b/chromeos-base/cronista/files/chromeos-version.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# Copyright 2021 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.
+
+# Assumes the first 'version =' line in the Cargo.toml is the version for the
+# crate.
+awk '/^version = / { gsub(/"/, "", $0); print $3; exit }' "$1/cronista/Cargo.toml"
diff --git a/chromeos-base/cros-camera-android-deps/OWNERS b/chromeos-base/cros-camera-android-deps/OWNERS
new file mode 100644
index 0000000..8f44c3e
--- /dev/null
+++ b/chromeos-base/cros-camera-android-deps/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/camera/OWNERS
diff --git a/chromeos-base/cros-camera-android-deps/cros-camera-android-deps-0.0.1-r31.ebuild b/chromeos-base/cros-camera-android-deps/cros-camera-android-deps-0.0.1-r31.ebuild
new file mode 100644
index 0000000..5049dcd
--- /dev/null
+++ b/chromeos-base/cros-camera-android-deps/cros-camera-android-deps-0.0.1-r31.ebuild
@@ -0,0 +1,56 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "9696a94a7fbf4f5e2b41c543f362ed1a22899468" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/android common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/android"
+
+inherit cros-workon platform
+
+DESCRIPTION="Android dependencies needed by cros-camera service and vendor HALs"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	!media-libs/cros-camera-android-headers
+	!media-libs/cros-camera-libcamera_client
+	!media-libs/cros-camera-libcamera_metadata
+"
+
+src_configure() {
+	cros_optimize_package_for_speed
+	platform_src_configure
+}
+
+src_install() {
+	platform_src_install
+
+	local include_dir="/usr/include/android"
+
+	insinto "${include_dir}"
+	doins -r header_files/include/*
+
+	insinto "${include_dir}"/system
+	doins libcamera_metadata/include/system/*.h
+	# Install into the system folder to avoid cros lint complaint of
+	# "include the directory when naming .h files"
+	doins libcamera_metadata/include/camera_metadata_hidden.h
+
+	insinto "${include_dir}"/camera
+	doins libcamera_client/include/camera/*.h
+
+	dolib.so "${OUT}"/lib/libcros_camera_android_deps.so
+
+	insinto /usr/"$(get_libdir)"/pkgconfig
+	doins "${OUT}"/obj/camera/android/libcros_camera_android_deps.pc
+}
diff --git a/chromeos-base/cros-camera-android-deps/cros-camera-android-deps-9999.ebuild b/chromeos-base/cros-camera-android-deps/cros-camera-android-deps-9999.ebuild
new file mode 100644
index 0000000..c31a04b
--- /dev/null
+++ b/chromeos-base/cros-camera-android-deps/cros-camera-android-deps-9999.ebuild
@@ -0,0 +1,54 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/android common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/android"
+
+inherit cros-workon platform
+
+DESCRIPTION="Android dependencies needed by cros-camera service and vendor HALs"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="~*"
+
+RDEPEND="
+	!media-libs/cros-camera-android-headers
+	!media-libs/cros-camera-libcamera_client
+	!media-libs/cros-camera-libcamera_metadata
+"
+
+src_configure() {
+	cros_optimize_package_for_speed
+	platform_src_configure
+}
+
+src_install() {
+	platform_src_install
+
+	local include_dir="/usr/include/android"
+
+	insinto "${include_dir}"
+	doins -r header_files/include/*
+
+	insinto "${include_dir}"/system
+	doins libcamera_metadata/include/system/*.h
+	# Install into the system folder to avoid cros lint complaint of
+	# "include the directory when naming .h files"
+	doins libcamera_metadata/include/camera_metadata_hidden.h
+
+	insinto "${include_dir}"/camera
+	doins libcamera_client/include/camera/*.h
+
+	dolib.so "${OUT}"/lib/libcros_camera_android_deps.so
+
+	insinto /usr/"$(get_libdir)"/pkgconfig
+	doins "${OUT}"/obj/camera/android/libcros_camera_android_deps.pc
+}
diff --git a/chromeos-base/cros-camera-libs/OWNERS b/chromeos-base/cros-camera-libs/OWNERS
new file mode 100644
index 0000000..8f44c3e
--- /dev/null
+++ b/chromeos-base/cros-camera-libs/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/camera/OWNERS
diff --git a/chromeos-base/cros-camera-libs/cros-camera-libs-0.0.1-r115.ebuild b/chromeos-base/cros-camera-libs/cros-camera-libs-0.0.1-r115.ebuild
new file mode 100644
index 0000000..fd0d543
--- /dev/null
+++ b/chromeos-base/cros-camera-libs/cros-camera-libs-0.0.1-r115.ebuild
@@ -0,0 +1,120 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "049eedf136293a1ab81617017200cb31032eb384" "6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "0c32b7c859889403e93cba02daed08c9537ba10f" "903fe92b2526a414ef04db27fd52554a9693158a" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk iioservice/libiioservice_ipc iioservice/mojo metrics"
+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="*"
+IUSE="camera_feature_portrait_mode ipu6se"
+
+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/cros-camera-android-deps:=
+	camera_feature_portrait_mode? ( media-libs/cros-camera-effect-portrait-mode:= )
+	media-libs/libexif:=
+	media-libs/libsync:=
+	media-libs/minigbm:=
+	media-libs/cros-camera-facessd:=
+	virtual/libudev:=
+	x11-libs/libdrm:=
+"
+
+DEPEND="
+	${RDEPEND}
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	media-libs/cros-camera-libcamera_connector_headers:=
+	media-libs/libyuv:=
+"
+
+src_configure() {
+	cros_optimize_package_for_speed
+	platform_src_configure
+}
+
+src_install() {
+	# Install the sandboxed algorithm service.
+	dobin "${OUT}"/cros_camera_algo
+
+	insinto /etc/init
+	doins init/cros-camera-algo.conf
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/CrosCameraAlgo.conf
+
+	insinto /usr/share/policy
+	newins "seccomp_filter/cros-camera-algo-${ARCH}.policy" cros-camera-algo.policy
+
+	# The sandboxed GPU service is used by Portrait Mode feature and IPU6SE
+	# camera HAL.
+	if use camera_feature_portrait_mode || use ipu6se; then
+		insinto /etc/init
+		doins init/cros-camera-gpu-algo.conf
+
+		insinto /usr/share/policy
+		newins "seccomp_filter/cros-camera-gpu-algo-${ARCH}.policy" cros-camera-gpu-algo.policy
+	fi
+
+	# Install libcros_camera required by the camera HAL implementations.
+	insinto /usr/include/cros-camera/
+	doins -r ../include/cros-camera/*
+	# TODO(crbug.com/1197394): Remove after the issue is resolved.
+	camera_mojo_files=$(find "${OUT}"/gen/include/camera/mojo -name '*.mojom.h')
+	einfo "${camera_mojo_files}"
+	insinto /usr/include/cros-camera/mojo/camera
+	doins -r "${OUT}"/gen/include/camera/mojo
+
+	insinto /usr/include/cros-camera/mojo/iioservice
+	doins -r "${OUT}"/gen/include/iioservice/mojo
+
+	dolib.so "${OUT}"/lib/libcros_camera.so
+	dolib.a "${OUT}"/libcros_camera_mojom.a
+	# Project Pita libraries need libcamera_connector.so to run.
+	dosym libcros_camera.so /usr/"$(get_libdir)"/libcamera_connector.so
+
+	insinto /usr/"$(get_libdir)"/pkgconfig
+	doins "${OUT}"/obj/camera/common/libcros_camera.pc
+
+	platform_src_install
+}
+
+platform_pkg_test() {
+	local cros_camera_tests=(
+		cbm_test
+		embed_file_toc_test
+		future_test
+	)
+	local test_bin
+	for test_bin in "${cros_camera_tests[@]}"; do
+		platform_test run "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/cros-camera-libs/cros-camera-libs-9999.ebuild b/chromeos-base/cros-camera-libs/cros-camera-libs-9999.ebuild
new file mode 100644
index 0000000..fcbb228
--- /dev/null
+++ b/chromeos-base/cros-camera-libs/cros-camera-libs-9999.ebuild
@@ -0,0 +1,118 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk iioservice/libiioservice_ipc iioservice/mojo metrics"
+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="~*"
+IUSE="camera_feature_portrait_mode ipu6se"
+
+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/cros-camera-android-deps:=
+	camera_feature_portrait_mode? ( media-libs/cros-camera-effect-portrait-mode:= )
+	media-libs/libexif:=
+	media-libs/libsync:=
+	media-libs/minigbm:=
+	media-libs/cros-camera-facessd:=
+	virtual/libudev:=
+	x11-libs/libdrm:=
+"
+
+DEPEND="
+	${RDEPEND}
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	media-libs/cros-camera-libcamera_connector_headers:=
+	media-libs/libyuv:=
+"
+
+src_configure() {
+	cros_optimize_package_for_speed
+	platform_src_configure
+}
+
+src_install() {
+	# Install the sandboxed algorithm service.
+	dobin "${OUT}"/cros_camera_algo
+
+	insinto /etc/init
+	doins init/cros-camera-algo.conf
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/CrosCameraAlgo.conf
+
+	insinto /usr/share/policy
+	newins "seccomp_filter/cros-camera-algo-${ARCH}.policy" cros-camera-algo.policy
+
+	# The sandboxed GPU service is used by Portrait Mode feature and IPU6SE
+	# camera HAL.
+	if use camera_feature_portrait_mode || use ipu6se; then
+		insinto /etc/init
+		doins init/cros-camera-gpu-algo.conf
+
+		insinto /usr/share/policy
+		newins "seccomp_filter/cros-camera-gpu-algo-${ARCH}.policy" cros-camera-gpu-algo.policy
+	fi
+
+	# Install libcros_camera required by the camera HAL implementations.
+	insinto /usr/include/cros-camera/
+	doins -r ../include/cros-camera/*
+	# TODO(crbug.com/1197394): Remove after the issue is resolved.
+	camera_mojo_files=$(find "${OUT}"/gen/include/camera/mojo -name '*.mojom.h')
+	einfo "${camera_mojo_files}"
+	insinto /usr/include/cros-camera/mojo/camera
+	doins -r "${OUT}"/gen/include/camera/mojo
+
+	insinto /usr/include/cros-camera/mojo/iioservice
+	doins -r "${OUT}"/gen/include/iioservice/mojo
+
+	dolib.so "${OUT}"/lib/libcros_camera.so
+	dolib.a "${OUT}"/libcros_camera_mojom.a
+	# Project Pita libraries need libcamera_connector.so to run.
+	dosym libcros_camera.so /usr/"$(get_libdir)"/libcamera_connector.so
+
+	insinto /usr/"$(get_libdir)"/pkgconfig
+	doins "${OUT}"/obj/camera/common/libcros_camera.pc
+
+	platform_src_install
+}
+
+platform_pkg_test() {
+	local cros_camera_tests=(
+		cbm_test
+		embed_file_toc_test
+		future_test
+	)
+	local test_bin
+	for test_bin in "${cros_camera_tests[@]}"; do
+		platform_test run "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r301.ebuild b/chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r301.ebuild
deleted file mode 100644
index 374a43b..0000000
--- a/chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r301.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "871bb7e6654a823f1468a5857b4c74f12aaedbb5" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/tools common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/tools/cros_camera_tool"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera test utility."
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-BDEPEND="virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dobin "${OUT}/cros-camera-tool"
-}
diff --git a/chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r331.ebuild b/chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r331.ebuild
new file mode 100644
index 0000000..9a6de32
--- /dev/null
+++ b/chromeos-base/cros-camera-tool/cros-camera-tool-0.0.1-r331.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "d1fd07ac03f1ac6e670181ebd45b30e31efe5a87" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/tools common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/tools/cros_camera_tool"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="Chrome OS camera test utility."
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+BDEPEND="virtual/pkgconfig"
+
+src_install() {
+	platform_src_install
+	dobin "${OUT}/cros-camera-tool"
+}
diff --git a/chromeos-base/cros-camera/OWNERS b/chromeos-base/cros-camera/OWNERS
new file mode 100644
index 0000000..8f44c3e
--- /dev/null
+++ b/chromeos-base/cros-camera/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/camera/OWNERS
diff --git a/chromeos-base/cros-camera/cros-camera-0.0.1-r814.ebuild b/chromeos-base/cros-camera/cros-camera-0.0.1-r814.ebuild
deleted file mode 100644
index 3dceeab..0000000
--- a/chromeos-base/cros-camera/cros-camera-0.0.1-r814.ebuild
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b21df3934baae3e61588cbb62bf9c4c55fbd8e63" "8ef0124cfbd41e24ef10c73dd08c957e8b9e7ea1" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb")
-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/hal camera/hal_adapter camera/include camera/mojo common-mk metrics"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/hal_adapter"
-
-inherit cros-camera cros-constants cros-workon platform 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="arc-camera1 cheets +cros-camera-algo-sandbox -libcamera"
-
-BDEPEND="virtual/pkgconfig"
-
-COMMON_DEPEND="
-	!media-libs/arc-camera3
-	cros-camera-algo-sandbox? ( media-libs/cros-camera-libcab:= )
-	media-libs/cros-camera-hal-usb:=
-	media-libs/cros-camera-libcamera_common:=
-	media-libs/cros-camera-libcamera_ipc:=
-	media-libs/cros-camera-libcamera_metadata:=
-	media-libs/libsync:=
-	libcamera? ( media-libs/libcamera )
-	!libcamera? (
-		virtual/cros-camera-hal
-		virtual/cros-camera-hal-configs
-	)"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	media-libs/cros-camera-android-headers:=
-	media-libs/minigbm:=
-	x11-libs/libdrm:="
-
-src_install() {
-	platform_src_install
-	dobin "${OUT}/cros_camera_service"
-
-	insinto /etc/init
-	doins init/cros-camera.conf
-	doins init/cros-camera-failsafe.conf
-
-	udev_dorules udev/99-camera.rules
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	newins "seccomp_filter/cros-camera-${ARCH}.policy" cros-camera.policy
-
-	if use cheets && ! use arc-camera1; then
-		insinto "${ARC_VENDOR_DIR}/etc/init"
-		doins init/init.camera.rc
-	fi
-}
-
-pkg_preinst() {
-	enewuser "arc-camera"
-	enewgroup "arc-camera"
-}
diff --git a/chromeos-base/cros-camera/cros-camera-0.0.1-r963.ebuild b/chromeos-base/cros-camera/cros-camera-0.0.1-r963.ebuild
new file mode 100644
index 0000000..64edc6c
--- /dev/null
+++ b/chromeos-base/cros-camera/cros-camera-0.0.1-r963.ebuild
@@ -0,0 +1,85 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "3853c1aaf018392449473e3155a42a6de4c514b5" "9b0d49af4849355f570451641ca09d759740be73" "049eedf136293a1ab81617017200cb31032eb384" "6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+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/hal camera/hal_adapter camera/include camera/mojo common-mk"
+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="arc-camera1 cheets -libcamera"
+
+BDEPEND="virtual/pkgconfig"
+
+RDEPEND="
+	>=chromeos-base/cros-camera-libs-0.0.1-r34:=
+	chromeos-base/cros-camera-android-deps:=
+	media-libs/cros-camera-hal-usb:=
+	media-libs/libsync:=
+	libcamera? ( media-libs/libcamera )
+	!libcamera? (
+		virtual/cros-camera-hal
+		virtual/cros-camera-hal-configs
+	)"
+
+DEPEND="${RDEPEND}
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	media-libs/minigbm:=
+	x11-libs/libdrm:="
+
+src_configure() {
+	cros_optimize_package_for_speed
+	platform_src_configure
+}
+
+src_install() {
+	platform_src_install
+	dobin "${OUT}/cros_camera_service"
+
+	insinto /etc/init
+	doins init/cros-camera.conf
+	doins init/cros-camera-failsafe.conf
+
+	udev_dorules udev/99-camera.rules
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "seccomp_filter/cros-camera-${ARCH}.policy" cros-camera.policy
+
+	dotmpfiles tmpfiles.d/*.conf
+
+	if use cheets && ! use arc-camera1; then
+		insinto "${ARC_VENDOR_DIR}/etc/init"
+		doins init/init.camera.rc
+	fi
+}
+
+pkg_preinst() {
+	enewuser "arc-camera"
+	enewgroup "arc-camera"
+}
+
+platform_pkg_test() {
+	local tests=(
+		zsl_helper_test
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test run "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/cros-camera/cros-camera-9999.ebuild b/chromeos-base/cros-camera/cros-camera-9999.ebuild
index bf6f561..f648863 100644
--- a/chromeos-base/cros-camera/cros-camera-9999.ebuild
+++ b/chromeos-base/cros-camera/cros-camera-9999.ebuild
@@ -7,30 +7,27 @@
 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/hal camera/hal_adapter camera/include camera/mojo common-mk metrics"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/hal camera/hal_adapter camera/include camera/mojo common-mk"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
 PLATFORM_SUBDIR="camera/hal_adapter"
 
-inherit cros-camera cros-constants cros-workon platform user udev
+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="arc-camera1 cheets +cros-camera-algo-sandbox -libcamera"
+IUSE="arc-camera1 cheets -libcamera"
 
 BDEPEND="virtual/pkgconfig"
 
-COMMON_DEPEND="
-	!media-libs/arc-camera3
-	cros-camera-algo-sandbox? ( media-libs/cros-camera-libcab:= )
+RDEPEND="
+	>=chromeos-base/cros-camera-libs-0.0.1-r34:=
+	chromeos-base/cros-camera-android-deps:=
 	media-libs/cros-camera-hal-usb:=
-	media-libs/cros-camera-libcamera_common:=
-	media-libs/cros-camera-libcamera_ipc:=
-	media-libs/cros-camera-libcamera_metadata:=
 	media-libs/libsync:=
 	libcamera? ( media-libs/libcamera )
 	!libcamera? (
@@ -38,14 +35,16 @@
 		virtual/cros-camera-hal-configs
 	)"
 
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
+DEPEND="${RDEPEND}
 	>=chromeos-base/metrics-0.0.1-r3152:=
-	media-libs/cros-camera-android-headers:=
 	media-libs/minigbm:=
 	x11-libs/libdrm:="
 
+src_configure() {
+	cros_optimize_package_for_speed
+	platform_src_configure
+}
+
 src_install() {
 	platform_src_install
 	dobin "${OUT}/cros_camera_service"
@@ -60,6 +59,8 @@
 	insinto /usr/share/policy
 	newins "seccomp_filter/cros-camera-${ARCH}.policy" cros-camera.policy
 
+	dotmpfiles tmpfiles.d/*.conf
+
 	if use cheets && ! use arc-camera1; then
 		insinto "${ARC_VENDOR_DIR}/etc/init"
 		doins init/init.camera.rc
@@ -70,3 +71,13 @@
 	enewuser "arc-camera"
 	enewgroup "arc-camera"
 }
+
+platform_pkg_test() {
+	local tests=(
+		zsl_helper_test
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test run "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/cros-config-api/cros-config-api-0.0.1-r162.ebuild b/chromeos-base/cros-config-api/cros-config-api-0.0.1-r162.ebuild
deleted file mode 100644
index 99ef8ba..0000000
--- a/chromeos-base/cros-config-api/cros-config-api-0.0.1-r162.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="56c2746a9bd0b32465676fad7022339cb7ddadac"
-CROS_WORKON_TREE=("686a112b5f4cd87e9b30d9da284dd5ea5549e4d0" "faeb0efb28f3d19cdfbc1d4a389e0cede598869b")
-CROS_WORKON_PROJECT="chromiumos/config"
-CROS_WORKON_LOCALNAME="config"
-CROS_WORKON_SUBTREE="python go"
-
-PYTHON_COMPAT=( python{3_6,3_7} )
-
-inherit cros-workon distutils-r1
-
-DESCRIPTION="Provides python and go bindings to the config API"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/config/+/master/python/"
-
-LICENSE="BSD-Google"
-SLOT=0
-KEYWORDS="*"
-
-RDEPEND=""
-
-DEPEND="
-	${RDEPEND}
-	dev-python/setuptools[${PYTHON_USEDEP}]
-"
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-src_unpack() {
-	cros-workon_src_unpack
-	# distutils-r1 provides src_configure, src_install and src_test steps for
-	# python bindings, and they require S to be set to the Python source base
-	# directory.
-	S+="/python"
-}
-
-src_install() {
-	distutils-r1_src_install
-
-	# cros-go_src_install requires the directory names (which is also the go
-	# package name) match between the source and destination directories.
-	# However we want to add some prefix to the destination directory name.
-	# source: src/config/go/api...
-	# destination: src/go.chromium.org/chromiumos/config/go/api/...
-	# Therefore insinto/doins are directly called here, instead of using
-	# cros-go_src_install in cros-go.eclass.
-	insinto /usr/lib/gopath/src/go.chromium.org/chromiumos/config
-	# One directory up, because $S is modified in src_unpack in this file.
-	doins -r ../go
-}
diff --git a/chromeos-base/cros-config-api/cros-config-api-0.0.1-r236.ebuild b/chromeos-base/cros-config-api/cros-config-api-0.0.1-r236.ebuild
new file mode 100644
index 0000000..6db63b9
--- /dev/null
+++ b/chromeos-base/cros-config-api/cros-config-api-0.0.1-r236.ebuild
@@ -0,0 +1,56 @@
+# Copyright 2020 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="7e9d43858407a2c29d3b3ae474a3127278025046"
+CROS_WORKON_TREE=("b81f24d0e9d14f4915eb0e73889e64eb5167ebc8" "675640ffa98cd9dec94ff67a2fb998e4f1609223")
+CROS_WORKON_PROJECT="chromiumos/config"
+CROS_WORKON_LOCALNAME="config"
+CROS_WORKON_SUBTREE="python go"
+
+PYTHON_COMPAT=( python{3_6,3_7} )
+
+inherit cros-workon distutils-r1
+
+DESCRIPTION="Provides python and go bindings to the config API"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/config/+/master/python/"
+
+LICENSE="BSD-Google"
+SLOT=0
+KEYWORDS="*"
+
+RDEPEND="
+	dev-go/genproto
+"
+
+DEPEND="
+	${RDEPEND}
+	dev-python/setuptools[${PYTHON_USEDEP}]
+"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+src_unpack() {
+	cros-workon_src_unpack
+	# distutils-r1 provides src_configure, src_install and src_test steps for
+	# python bindings, and they require S to be set to the Python source base
+	# directory.
+	S+="/python"
+}
+
+src_install() {
+	distutils-r1_src_install
+
+	# cros-go_src_install requires the directory names (which is also the go
+	# package name) match between the source and destination directories.
+	# However we want to add some prefix to the destination directory name.
+	# source: src/config/go/api...
+	# destination: src/go.chromium.org/chromiumos/config/go/api/...
+	# Therefore insinto/doins are directly called here, instead of using
+	# cros-go_src_install in cros-go.eclass.
+	insinto /usr/lib/gopath/src/go.chromium.org/chromiumos/config
+	# One directory up, because $S is modified in src_unpack in this file.
+	doins -r ../go
+}
diff --git a/chromeos-base/cros-config-api/cros-config-api-9999.ebuild b/chromeos-base/cros-config-api/cros-config-api-9999.ebuild
index e0a4600..6a0bf44 100644
--- a/chromeos-base/cros-config-api/cros-config-api-9999.ebuild
+++ b/chromeos-base/cros-config-api/cros-config-api-9999.ebuild
@@ -19,7 +19,9 @@
 SLOT=0
 KEYWORDS="~*"
 
-RDEPEND=""
+RDEPEND="
+	dev-go/genproto
+"
 
 DEPEND="
 	${RDEPEND}
diff --git a/chromeos-base/cros-devutils/OWNERS b/chromeos-base/cros-devutils/OWNERS
new file mode 100644
index 0000000..995488c
--- /dev/null
+++ b/chromeos-base/cros-devutils/OWNERS
@@ -0,0 +1 @@
+include chromiumos/chromite:/OWNERS.build
diff --git a/chromeos-base/cros-devutils/cros-devutils-1-r1247.ebuild b/chromeos-base/cros-devutils/cros-devutils-1-r1247.ebuild
deleted file mode 100644
index 9a12d85..0000000
--- a/chromeos-base/cros-devutils/cros-devutils-1-r1247.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="1bf1475c5f75d1874174e8b0185b8c84db4dfa83"
-CROS_WORKON_TREE="69c210f0bcc8749f08b8782fc1413367c25a78b7"
-CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
-CROS_WORKON_LOCALNAME="dev"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="host"
-
-inherit cros-workon
-
-DESCRIPTION="Development utilities for ChromiumOS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/host/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="app-portage/gentoolkit
-	>=chromeos-base/devserver-0.0.2
-	dev-lang/python
-	dev-util/shflags
-	dev-util/toolchain-utils
-	sys-apps/flashmap
-	"
-# These are all either bash / python scripts.  No actual builds DEPS.
-DEPEND=""
-
-src_compile() { :; }
-
-src_install() {
-	local host_tools=(
-		cros_workon_make
-		netboot_firmware_settings.py
-	)
-	dobin "${host_tools[@]/#/host/}"
-
-	# Repo and git bash completion.
-	insinto /usr/share/bash-completion
-	newins host/repo_bash_completion repo
-	dosym /usr/share/bash-completion/repo /etc/bash_completion.d/repo
-	dosym /usr/share/bash-completion/completions/git /etc/bash_completion.d/git
-}
diff --git a/chromeos-base/cros-devutils/cros-devutils-1-r1252.ebuild b/chromeos-base/cros-devutils/cros-devutils-1-r1252.ebuild
new file mode 100644
index 0000000..18ca5d6
--- /dev/null
+++ b/chromeos-base/cros-devutils/cros-devutils-1-r1252.ebuild
@@ -0,0 +1,39 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="11821b983f1227bc86f29b3a67cf3be41d833795"
+CROS_WORKON_TREE="0bcd941cfe6b3a9446ded078cab2e84fbab54ff8"
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME="dev"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="host"
+
+inherit cros-workon
+
+DESCRIPTION="Development utilities for ChromiumOS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/host/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="app-portage/gentoolkit
+	>=chromeos-base/devserver-0.0.2
+	dev-util/shflags
+	dev-util/toolchain-utils
+	"
+# These are all either bash / python scripts.  No actual builds DEPS.
+DEPEND=""
+
+src_compile() { :; }
+
+src_install() {
+	dobin host/cros_workon_make
+
+	# Repo and git bash completion.
+	dosym /usr/share/bash-completion/completions/repo /etc/bash_completion.d/repo
+	dosym /usr/share/bash-completion/completions/git /etc/bash_completion.d/git
+}
diff --git a/chromeos-base/cros-devutils/cros-devutils-9999.ebuild b/chromeos-base/cros-devutils/cros-devutils-9999.ebuild
index 2f5ae3a..ebb28fd 100644
--- a/chromeos-base/cros-devutils/cros-devutils-9999.ebuild
+++ b/chromeos-base/cros-devutils/cros-devutils-9999.ebuild
@@ -20,10 +20,8 @@
 
 RDEPEND="app-portage/gentoolkit
 	>=chromeos-base/devserver-0.0.2
-	dev-lang/python
 	dev-util/shflags
 	dev-util/toolchain-utils
-	sys-apps/flashmap
 	"
 # These are all either bash / python scripts.  No actual builds DEPS.
 DEPEND=""
@@ -31,15 +29,9 @@
 src_compile() { :; }
 
 src_install() {
-	local host_tools=(
-		cros_workon_make
-		netboot_firmware_settings.py
-	)
-	dobin "${host_tools[@]/#/host/}"
+	dobin host/cros_workon_make
 
 	# Repo and git bash completion.
-	insinto /usr/share/bash-completion
-	newins host/repo_bash_completion repo
-	dosym /usr/share/bash-completion/repo /etc/bash_completion.d/repo
+	dosym /usr/share/bash-completion/completions/repo /etc/bash_completion.d/repo
 	dosym /usr/share/bash-completion/completions/git /etc/bash_completion.d/git
 }
diff --git a/chromeos-base/cros-disks/cros-disks-0.0.1-r3121.ebuild b/chromeos-base/cros-disks/cros-disks-0.0.1-r3121.ebuild
deleted file mode 100644
index e8bf438..0000000
--- a/chromeos-base/cros-disks/cros-disks-0.0.1-r3121.ebuild
+++ /dev/null
@@ -1,128 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b0673d8ae00f482e096844e127a0423cc6390ad3"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "34fa407c32f72e1e617af42b0b444d0d2cdd1a04" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk cros-disks metrics .gn"
-
-PLATFORM_SUBDIR="cros-disks"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Disk mounting daemon for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cros-disks/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="chromeless_tty fuzzer +seccomp"
-
-COMMON_DEPEND="
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/minijail:=
-	chromeos-base/session_manager-client:=
-	sys-apps/rootdev:=
-	sys-apps/util-linux:=
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	net-fs/sshfs
-	sys-fs/dosfstools
-	sys-fs/exfat-utils
-	sys-fs/fuse-exfat
-	sys-fs/fuse-zip
-	sys-fs/ntfs3g
-	sys-fs/rar2fs
-	virtual/udev
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-pkg_preinst() {
-	enewuser "cros-disks"
-	enewgroup "cros-disks"
-
-	enewuser "ntfs-3g"
-	enewgroup "ntfs-3g"
-
-	enewuser "fuse-exfat"
-	enewgroup "fuse-exfat"
-
-	enewuser "fuse-rar2fs"
-	enewgroup "fuse-rar2fs"
-
-	enewuser "fuse-zip"
-	enewgroup "fuse-zip"
-
-	enewuser "fuse-sshfs"
-	enewgroup "fuse-sshfs"
-
-	enewuser "fuse-drivefs"
-	enewgroup "fuse-drivefs"
-}
-
-src_install() {
-	dobin "${OUT}"/cros-disks
-
-	# Install USB device IDs file.
-	insinto /usr/share/cros-disks
-	doins usb-device-info
-
-	# Install seccomp policy files.
-	insinto /usr/share/policy
-	use seccomp && newins fuse-zip-seccomp-${ARCH}.policy fuse-zip-seccomp.policy
-	use seccomp && newins rar2fs-seccomp-${ARCH}.policy rar2fs-seccomp.policy
-
-	# Install upstart config file.
-	insinto /etc/init
-	doins cros-disks.conf
-	# Insert the --no-session-manager flag if needed.
-	if use chromeless_tty; then
-		sed -i -E "s/(CROS_DISKS_OPTS=')/\1--no_session_manager /" "${D}"/etc/init/cros-disks.conf || die
-	fi
-
-	# Install D-Bus config file.
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.CrosDisks.conf
-
-	# Install setuid restrictions file.
-	insinto /usr/share/cros/startup/process_management_policies
-	doins setuid_restrictions/cros_disks_whitelist.txt
-
-	local fuzzers=(
-		filesystem_label_fuzzer
-	)
-
-	local fuzzer
-	for fuzzer in "${fuzzers[@]}"; do
-		platform_fuzzer_install "${S}"/OWNERS "${OUT}/${PN}_${fuzzer}"
-	done
-}
-
-platform_pkg_test() {
-	local gtest_filter_qemu_common=""
-	gtest_filter_qemu_common+="DiskManagerTest.*"
-	gtest_filter_qemu_common+=":ExternalMounterTest.*"
-	gtest_filter_qemu_common+=":UdevDeviceTest.*"
-	gtest_filter_qemu_common+=":MountInfoTest.RetrieveFromCurrentProcess"
-	gtest_filter_qemu_common+=":GlibProcessTest.*"
-
-	local gtest_filter_user_tests="-*RunAsRoot*:"
-	! use x86 && ! use amd64 && gtest_filter_user_tests+="${gtest_filter_qemu_common}"
-
-	local gtest_filter_root_tests="*RunAsRoot*-"
-	! use x86 && ! use amd64 && gtest_filter_root_tests+="${gtest_filter_qemu_common}"
-
-	platform_test "run" "${OUT}/disks_testrunner" "1" \
-		"${gtest_filter_root_tests}"
-	platform_test "run" "${OUT}/disks_testrunner" "0" \
-		"${gtest_filter_user_tests}"
-}
diff --git a/chromeos-base/cros-disks/cros-disks-0.0.1-r3209.ebuild b/chromeos-base/cros-disks/cros-disks-0.0.1-r3209.ebuild
new file mode 100644
index 0000000..4ba044a
--- /dev/null
+++ b/chromeos-base/cros-disks/cros-disks-0.0.1-r3209.ebuild
@@ -0,0 +1,137 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a54bf486599e8f5d48317634dce7086ad82932c9" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk cros-disks metrics .gn"
+
+PLATFORM_SUBDIR="cros-disks"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Disk mounting daemon for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cros-disks/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="chromeless_tty fuzzer +seccomp"
+
+COMMON_DEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/minijail:=
+	chromeos-base/session_manager-client:=
+	sys-apps/rootdev:=
+	sys-apps/util-linux:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	net-fs/sshfs
+	sys-fs/archivemount
+	sys-fs/dosfstools
+	sys-fs/exfat-utils
+	sys-fs/fuse-exfat
+	sys-fs/fuse-zip
+	sys-fs/ntfs3g
+	sys-fs/rar2fs
+	virtual/udev
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api:=[fuzzer?]
+"
+
+pkg_preinst() {
+	enewuser "cros-disks"
+	enewgroup "cros-disks"
+
+	enewuser "ntfs-3g"
+	enewgroup "ntfs-3g"
+
+	enewuser "fuse-archivemount"
+	enewgroup "fuse-archivemount"
+
+	enewuser "fuse-exfat"
+	enewgroup "fuse-exfat"
+
+	enewuser "fuse-rar2fs"
+	enewgroup "fuse-rar2fs"
+
+	enewuser "fuse-zip"
+	enewgroup "fuse-zip"
+
+	enewuser "fuse-sshfs"
+	enewgroup "fuse-sshfs"
+
+	enewuser "fuse-drivefs"
+	enewgroup "fuse-drivefs"
+}
+
+src_install() {
+	dobin "${OUT}"/cros-disks
+
+	# Install USB device IDs file.
+	insinto /usr/share/cros-disks
+	doins usb-device-info
+
+	# Install seccomp policy files.
+	insinto /usr/share/policy
+	use seccomp && newins archivemount-seccomp-${ARCH}.policy archivemount-seccomp.policy
+	use seccomp && newins fuse-zip-seccomp-${ARCH}.policy fuse-zip-seccomp.policy
+	use seccomp && newins rar2fs-seccomp-${ARCH}.policy rar2fs-seccomp.policy
+
+	# Install upstart config file.
+	insinto /etc/init
+	doins cros-disks.conf
+	# Insert the --no-session-manager flag if needed.
+	if use chromeless_tty; then
+		sed -i -E "s/(CROS_DISKS_OPTS=')/\1--no_session_manager /" "${D}"/etc/init/cros-disks.conf || die
+	fi
+
+	# Install D-Bus config file.
+	insinto /etc/dbus-1/system.d
+	doins org.chromium.CrosDisks.conf
+
+	# Install setuid restrictions file.
+	insinto /usr/share/cros/startup/process_management_policies
+	doins setuid_restrictions/cros_disks_whitelist.txt
+
+	# Install powerd prefs for FUSE freeze ordering.
+	insinto /usr/share/power_manager
+	doins powerd_prefs/suspend_freezer_deps_*
+
+	local fuzzers=(
+		filesystem_label_fuzzer
+	)
+
+	local fuzzer
+	for fuzzer in "${fuzzers[@]}"; do
+		platform_fuzzer_install "${S}"/OWNERS "${OUT}/${PN}_${fuzzer}"
+	done
+}
+
+platform_pkg_test() {
+	local gtest_filter_qemu_common=""
+	gtest_filter_qemu_common+="DiskManagerTest.*"
+	gtest_filter_qemu_common+=":ExternalMounterTest.*"
+	gtest_filter_qemu_common+=":UdevDeviceTest.*"
+	gtest_filter_qemu_common+=":MountInfoTest.RetrieveFromCurrentProcess"
+	gtest_filter_qemu_common+=":GlibProcessTest.*"
+
+	local gtest_filter_user_tests="-*RunAsRoot*:"
+	! use x86 && ! use amd64 && gtest_filter_user_tests+="${gtest_filter_qemu_common}"
+
+	local gtest_filter_root_tests="*RunAsRoot*-"
+	! use x86 && ! use amd64 && gtest_filter_root_tests+="${gtest_filter_qemu_common}"
+
+	platform_test "run" "${OUT}/disks_testrunner" "1" \
+		"${gtest_filter_root_tests}"
+	platform_test "run" "${OUT}/disks_testrunner" "0" \
+		"${gtest_filter_user_tests}"
+}
diff --git a/chromeos-base/cros-disks/cros-disks-9999.ebuild b/chromeos-base/cros-disks/cros-disks-9999.ebuild
index 1240235..66985c6 100644
--- a/chromeos-base/cros-disks/cros-disks-9999.ebuild
+++ b/chromeos-base/cros-disks/cros-disks-9999.ebuild
@@ -30,6 +30,7 @@
 RDEPEND="
 	${COMMON_DEPEND}
 	net-fs/sshfs
+	sys-fs/archivemount
 	sys-fs/dosfstools
 	sys-fs/exfat-utils
 	sys-fs/fuse-exfat
@@ -51,6 +52,9 @@
 	enewuser "ntfs-3g"
 	enewgroup "ntfs-3g"
 
+	enewuser "fuse-archivemount"
+	enewgroup "fuse-archivemount"
+
 	enewuser "fuse-exfat"
 	enewgroup "fuse-exfat"
 
@@ -76,6 +80,7 @@
 
 	# Install seccomp policy files.
 	insinto /usr/share/policy
+	use seccomp && newins archivemount-seccomp-${ARCH}.policy archivemount-seccomp.policy
 	use seccomp && newins fuse-zip-seccomp-${ARCH}.policy fuse-zip-seccomp.policy
 	use seccomp && newins rar2fs-seccomp-${ARCH}.policy rar2fs-seccomp.policy
 
@@ -95,6 +100,10 @@
 	insinto /usr/share/cros/startup/process_management_policies
 	doins setuid_restrictions/cros_disks_whitelist.txt
 
+	# Install powerd prefs for FUSE freeze ordering.
+	insinto /usr/share/power_manager
+	doins powerd_prefs/suspend_freezer_deps_*
+
 	local fuzzers=(
 		filesystem_label_fuzzer
 	)
diff --git a/chromeos-base/cros-testutils/cros-testutils-0.0.1-r593.ebuild b/chromeos-base/cros-testutils/cros-testutils-0.0.1-r593.ebuild
deleted file mode 100644
index 91de9b0..0000000
--- a/chromeos-base/cros-testutils/cros-testutils-0.0.1-r593.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="7666ad6d68f381a9de17d682c01803ca2f1c985d"
-CROS_WORKON_TREE="4f7ec40608856b0e545c41a19603298affba3429"
-CROS_WORKON_PROJECT="chromiumos/platform/crostestutils"
-CROS_WORKON_LOCALNAME="platform/crostestutils"
-
-inherit cros-workon
-
-DESCRIPTION="Host test utilities for ChromiumOS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crostestutils/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="app-emulation/qemu
-	app-portage/gentoolkit
-	app-shells/bash
-	chromeos-base/cros-devutils
-	dev-python/django
-	"
-
-# These are all either bash / python scripts.  No actual builds DEPS.
-DEPEND=""
-
-# Use default src_compile and src_install which use Makefile.
diff --git a/chromeos-base/cros-testutils/cros-testutils-0.0.1-r615.ebuild b/chromeos-base/cros-testutils/cros-testutils-0.0.1-r615.ebuild
new file mode 100644
index 0000000..fc7cb27
--- /dev/null
+++ b/chromeos-base/cros-testutils/cros-testutils-0.0.1-r615.ebuild
@@ -0,0 +1,28 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="fd9120658cb5253b7feffa8903742a367ed7571c"
+CROS_WORKON_TREE="b2f14f8919270f945f2fe0a397e2de5b19eecac8"
+CROS_WORKON_PROJECT="chromiumos/platform/crostestutils"
+CROS_WORKON_LOCALNAME="platform/crostestutils"
+
+inherit cros-workon
+
+DESCRIPTION="Host test utilities for ChromiumOS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crostestutils/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="app-emulation/qemu
+	app-portage/gentoolkit
+	app-shells/bash
+	chromeos-base/cros-devutils
+	dev-python/django
+	"
+
+# These are all either bash / python scripts.  No actual builds DEPS.
+DEPEND=""
+
+# Use default src_compile and src_install which use Makefile.
diff --git a/chromeos-base/crosdns/crosdns-0.0.1-r260.ebuild b/chromeos-base/crosdns/crosdns-0.0.1-r260.ebuild
deleted file mode 100644
index f708e88..0000000
--- a/chromeos-base/crosdns/crosdns-0.0.1-r260.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "09d4f564fd3af2f98535a78dcb18a9d60fbf12c7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk crosdns .gn"
-
-PLATFORM_SUBDIR="crosdns"
-
-inherit cros-fuzzer cros-sanitizers cros-workon platform user
-
-DESCRIPTION="Local hostname modifier service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/crosdns"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="+seccomp asan fuzzer"
-
-COMMON_DEPEND="
-	chromeos-base/libbrillo:=[asan?,fuzzer?]
-	chromeos-base/minijail:="
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/system_api:=[fuzzer?]"
-
-src_install() {
-	# Install our binary.
-	dosbin "${OUT}"/crosdns
-
-	# Install D-Bus configuration.
-	insinto /etc/dbus-1/system.d
-	doins dbus_permissions/org.chromium.CrosDns.conf
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	if use seccomp; then
-		newins "init/crosdns-seccomp-${ARCH}.policy" crosdns-seccomp.policy
-	fi
-
-	# Install the init script.
-	insinto /etc/init
-	doins init/crosdns.conf
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/hosts_modifier_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/run_tests"
-}
-
-pkg_preinst() {
-	enewuser "crosdns"
-	enewgroup "crosdns"
-}
diff --git a/chromeos-base/crosdns/crosdns-0.0.1-r295.ebuild b/chromeos-base/crosdns/crosdns-0.0.1-r295.ebuild
new file mode 100644
index 0000000..1559694
--- /dev/null
+++ b/chromeos-base/crosdns/crosdns-0.0.1-r295.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "33b74b183dbb5431627e063dee32ca62eb6e8937" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="common-mk crosdns .gn"
+
+PLATFORM_SUBDIR="crosdns"
+
+inherit cros-fuzzer cros-sanitizers cros-workon platform user
+
+DESCRIPTION="Local hostname modifier service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/crosdns"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="+seccomp asan fuzzer"
+
+COMMON_DEPEND="
+	chromeos-base/libbrillo:=[asan?,fuzzer?]
+	chromeos-base/minijail:="
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api:=[fuzzer?]"
+
+src_install() {
+	# Install our binary.
+	dosbin "${OUT}"/crosdns
+
+	# Install D-Bus configuration.
+	insinto /etc/dbus-1/system.d
+	doins dbus_permissions/org.chromium.CrosDns.conf
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	if use seccomp; then
+		newins "init/crosdns-seccomp-${ARCH}.policy" crosdns-seccomp.policy
+	fi
+
+	# Install the init script.
+	insinto /etc/init
+	doins init/crosdns.conf
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/hosts_modifier_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/run_tests"
+}
+
+pkg_preinst() {
+	enewuser "crosdns"
+	enewgroup "crosdns"
+}
diff --git a/chromeos-base/crosh-extension/Manifest b/chromeos-base/crosh-extension/Manifest
index 8cfef1d..978090f 100644
--- a/chromeos-base/crosh-extension/Manifest
+++ b/chromeos-base/crosh-extension/Manifest
@@ -1,4 +1,5 @@
-DIST 4572d3801500bcbebafadf203056d6263c840cda 22909629 BLAKE2B 9806e433b1bd40e5c86c22efd0f20a3a3d2bc235746421a894906b1b66acbbef838023cb44875dab111eff0d29dda85abaca410fb39ec2aa08ba3216f44550d5 SHA512 7fd04ac997c8817ec0fff96ce6250a426d9354851b832e0a17f964a608026dd900e1fa379bc6316f3ec029a48f20629ee9cca14762841590aaee9b91482fe919
+DIST b2e40ddbac04d05baafbb007f203c6663c9d4ca9 33663330 BLAKE2B 6e5eead2c632ff65a2ef5a565ec7d5317eea9fe3b93f480815111e310563d6aace36611059c4e1d603e008a52275474a5fc248421ba70b2d2f26736b06e83808 SHA512 c56cfefc81e45e0e9dedd893422fcef067efc2e6ddc159010c852f955f1200d85e1ef606e88609d1667355de7c8b05e9063436d8d08e541201b0f806dfde9309
 DIST fonts-d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506.tar.xz 620240 BLAKE2B eef8974714529c570ed44d334b4bda5969443c48b0295f9dd1c6ae878bf36359fbe43de460f477b042574be68be6f3a2f32b89462b7efef70e19d2e7c44590c8 SHA512 c0090b406d6a4113e0de0de062a95b54817754d18ea7775a477f1f7551c99930226ebda203cc79f9cd660a8fb207cc63e1a2617cd620afe6e620aa3e1019d959
+DIST node_modules-16e0b36c0c3d448c7fd00d1db3ba27ff8477007fb4b0eae31ae25960aeae3fbc.tar.xz 17908008 BLAKE2B b5140bbf8bd98f4e7d2c8437282a7660da0dafedd8af3ae71741cb55da690fe8cfaf47f157560eb7f183c919fa5dbd91cd95ffe24c2db3b2f527f963c08941d7 SHA512 3976154cae711505074f0faf656ab5ab48202fe63e206b11838ffd790eb10adbc6b91ae85c1bc86f323439b323c4739ec0715d0ffecc62235a3bef8b1431b0d6
 DIST node_modules-2cd2dd365999ae139b6b0fb62a5a09e2a7fb5ab1c0926cf1968a1dec9b74fea5.tar.xz 10898084 BLAKE2B ab2ed6e70183d59e257d7dc79e77c17b9636d4538705d17fb3483d29d4ea556c65125b948b09bb254eadfb2ca67245bc78fee1b3903f94dca92a111ef0bc7cf6 SHA512 155ce79bacf8723914c5ee5ce5772307d9130723f681e529710559c9e1f604c7b8426330232412836ce36adcddb534915275a81e51245ebc5f5fd0b94f80b0f1
 DIST node_modules-bc482f2b229bd0797c104263dc60cb884a1c90f6e65f07050d0b94b165b3a255.tar.xz 10434548 BLAKE2B 1d015e3262ea98f1e4e3b53269fc220ce2f8f26b4b0a679fdeae0e23818bf82c63d09d5acc96ea03e00bb2623129f28b5f2690770c1b79caa9704cd560492ef8 SHA512 baad4fdecbd4e1c155a1d6e8f158c2c482f11c0b9542ec06643ff80427906116f7c4c6fe395ae7acac0499de8a336ae647692c56475cb7aef02b2950ae5f5d06
diff --git a/chromeos-base/crosh-extension/crosh-extension-0.38-r1066.ebuild b/chromeos-base/crosh-extension/crosh-extension-0.38-r1066.ebuild
deleted file mode 100644
index e83e27e..0000000
--- a/chromeos-base/crosh-extension/crosh-extension-0.38-r1066.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a952cfd1553a6d1c4d38070caaaf24587e7606c"
-CROS_WORKON_TREE=("4375efd3f1ac8e87f0ceddd0e44abcbc88f7e536" "67de3c6ed499a979b86bd94d59f3e05ceddb6152" "e95e9883faf2bf625041c6a14c4f4390a712fe83" "77ae5fe07f633a914ecfb9c4e2e4587ed3bf9d11" "cd4a1b0ea75caed81d3d789912588a3c5ff0dd51")
-CROS_WORKON_PROJECT="apps/libapps"
-CROS_WORKON_LOCALNAME="third_party/libapps"
-CROS_WORKON_SUBTREE="libdot hterm nassh ssh_client terminal"
-
-inherit cros-workon
-
-DESCRIPTION="The Chromium OS Shell extension (the HTML/JS rendering part)"
-HOMEPAGE="https://chromium.googlesource.com/apps/libapps/+/master/nassh/doc/chromeos-crosh.md"
-# These are kept in sync with libdot.py settings.
-FONTS_HASHES=(
-	# Current one.
-	d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506
-	# Next one.
-	d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506
-)
-NPM_HASHES=(
-	# Current one.
-	bc482f2b229bd0797c104263dc60cb884a1c90f6e65f07050d0b94b165b3a255
-	# Next one.
-	2cd2dd365999ae139b6b0fb62a5a09e2a7fb5ab1c0926cf1968a1dec9b74fea5
-)
-SRC_URI="
-	https://storage.googleapis.com/chromium-nodejs/12.14.1/4572d3801500bcbebafadf203056d6263c840cda
-	$(printf 'https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-%s.tar.xz ' \
-		"${FONTS_HASHES[@]}")
-	$(printf 'https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-%s.tar.xz ' \
-		"${NPM_HASHES[@]}")
-"
-
-# The archives above live on Google maintained sites.
-RESTRICT="nomirror"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="!<chromeos-base/common-assets-0.0.2"
-
-e() {
-	echo "$@"
-	"$@" || die
-}
-
-src_compile() {
-	export VCSID="${CROS_WORKON_COMMIT:-${PF}}"
-	e ./nassh/bin/mkdist --crosh-only
-}
-
-src_install() {
-	local dir="/usr/share/chromeos-assets/crosh_builtin"
-	dodir "${dir}"
-	unzip -d "${D}${dir}" nassh/dist/crosh.zip || die
-}
diff --git a/chromeos-base/crosh-extension/crosh-extension-0.41-r1094.ebuild b/chromeos-base/crosh-extension/crosh-extension-0.41-r1094.ebuild
new file mode 100644
index 0000000..a5bf241
--- /dev/null
+++ b/chromeos-base/crosh-extension/crosh-extension-0.41-r1094.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="466aafb63e5bfb21e3719d9477d676aa76291292"
+CROS_WORKON_TREE=("c8e4301d10abb183fbcae5129cdfb4e39976794e" "cf64b2ab94d17914fa8012c04d643fd2b4d70c87" "4cff3943e175c2e8020a0c3d373503026fc448bc" "d0acc31ea3395f8ee93a30762441b4aaa5c1ab0d" "6b8af6a0c88be075c60fe9fa728f4f6f998fd1ac")
+CROS_WORKON_PROJECT="apps/libapps"
+CROS_WORKON_LOCALNAME="third_party/libapps"
+CROS_WORKON_SUBTREE="libdot hterm nassh ssh_client terminal"
+
+inherit cros-workon
+
+DESCRIPTION="The Chromium OS Shell extension (the HTML/JS rendering part)"
+HOMEPAGE="https://chromium.googlesource.com/apps/libapps/+/master/nassh/doc/chromeos-crosh.md"
+# These are kept in sync with libdot.py settings.
+FONTS_HASHES=(
+	# Current one.
+	d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506
+	# Next one.
+	d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506
+)
+NPM_HASHES=(
+	# Current one.
+	2cd2dd365999ae139b6b0fb62a5a09e2a7fb5ab1c0926cf1968a1dec9b74fea5
+	# Next one.
+	16e0b36c0c3d448c7fd00d1db3ba27ff8477007fb4b0eae31ae25960aeae3fbc
+)
+SRC_URI="
+	https://storage.googleapis.com/chromium-nodejs/14.15.4/b2e40ddbac04d05baafbb007f203c6663c9d4ca9
+	$(printf 'https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-%s.tar.xz ' \
+		"${FONTS_HASHES[@]}")
+	$(printf 'https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-%s.tar.xz ' \
+		"${NPM_HASHES[@]}")
+"
+
+# The archives above live on Google maintained sites.
+RESTRICT="nomirror"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="!<chromeos-base/common-assets-0.0.2"
+
+e() {
+	echo "$@"
+	"$@" || die
+}
+
+src_compile() {
+	export VCSID="${CROS_WORKON_COMMIT:-${PF}}"
+	e ./nassh/bin/mkdist --crosh-only
+}
+
+src_install() {
+	local dir="/usr/share/chromeos-assets/crosh_builtin"
+	dodir "${dir}"
+	unzip -d "${D}${dir}" nassh/dist/crosh.zip || die
+}
diff --git a/chromeos-base/crosh-extension/crosh-extension-9999.ebuild b/chromeos-base/crosh-extension/crosh-extension-9999.ebuild
index 866c247..3291403 100644
--- a/chromeos-base/crosh-extension/crosh-extension-9999.ebuild
+++ b/chromeos-base/crosh-extension/crosh-extension-9999.ebuild
@@ -20,12 +20,12 @@
 )
 NPM_HASHES=(
 	# Current one.
-	bc482f2b229bd0797c104263dc60cb884a1c90f6e65f07050d0b94b165b3a255
-	# Next one.
 	2cd2dd365999ae139b6b0fb62a5a09e2a7fb5ab1c0926cf1968a1dec9b74fea5
+	# Next one.
+	16e0b36c0c3d448c7fd00d1db3ba27ff8477007fb4b0eae31ae25960aeae3fbc
 )
 SRC_URI="
-	https://storage.googleapis.com/chromium-nodejs/12.14.1/4572d3801500bcbebafadf203056d6263c840cda
+	https://storage.googleapis.com/chromium-nodejs/14.15.4/b2e40ddbac04d05baafbb007f203c6663c9d4ca9
 	$(printf 'https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-%s.tar.xz ' \
 		"${FONTS_HASHES[@]}")
 	$(printf 'https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-%s.tar.xz ' \
diff --git a/chromeos-base/crosh/crosh-0.24.52-r3020.ebuild b/chromeos-base/crosh/crosh-0.24.52-r3020.ebuild
deleted file mode 100644
index 366bb38..0000000
--- a/chromeos-base/crosh/crosh-0.24.52-r3020.ebuild
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="f2a083a59388940eae9bd41b943e86a773c26b2c"
-CROS_WORKON_TREE="3b568ba353360379cea8574233c6504235632402"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_DESTDIR="${S}"
-CROS_WORKON_SUBTREE="crosh"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Chrome OS developer command-line shell"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crosh/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="+rust-crosh"
-
-DEPEND="
-	=dev-rust/dbus-0.8*:=
-	=dev-rust/getopts-0.2*:=
-	dev-rust/libchromeos:=
-	>=dev-rust/regex-1.0.6:= <dev-rust/regex-2.0.0
-	dev-rust/remain:=
-	=dev-rust/rustyline-7*:=
-	dev-rust/shell-words:=
-	dev-rust/sys_util:=
-	dev-rust/system_api:=
-	dev-rust/tempfile:=
-	>dev-rust/tlsdate_dbus-0.24.52-r8:=
-"
-RDEPEND="app-admin/sudo
-	chromeos-base/vboot_reference
-	net-misc/iputils
-	net-misc/openssh
-	net-wireless/iw
-	sys-apps/dbus
-	sys-apps/net-tools
-"
-
-src_compile() {
-	# File order is important here.
-	sed \
-		-e '/^#/d' \
-		-e '/^$/d' \
-		inputrc.safe inputrc.extra \
-		> "${WORKDIR}"/inputrc.crosh || die
-
-	cros-rust_src_compile
-}
-
-src_test() {
-	./run_tests.sh || die
-
-	cros-rust_src_test
-}
-
-src_install() {
-	if use rust-crosh; then
-		dobin "$(cros-rust_get_build_dir)/crosh"
-		newbin crosh crosh.sh
-	else
-		dobin crosh
-	fi
-	dobin network_diag
-	local d="/usr/share/crosh"
-	insinto "${d}/dev.d"
-	doins dev.d/*.sh
-	insinto "${d}/removable.d"
-	doins removable.d/*.sh
-	insinto "${d}"
-	doins "${WORKDIR}"/inputrc.crosh
-}
diff --git a/chromeos-base/crosh/crosh-0.24.52-r3041.ebuild b/chromeos-base/crosh/crosh-0.24.52-r3041.ebuild
new file mode 100644
index 0000000..180373e
--- /dev/null
+++ b/chromeos-base/crosh/crosh-0.24.52-r3041.ebuild
@@ -0,0 +1,78 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="48715b2a980b87b3e8e1db871cb1b89c42e7f89d"
+CROS_WORKON_TREE="2fd1803e069e2dd096b39bb1b606f9527e268319"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_DESTDIR="${S}"
+CROS_WORKON_SUBTREE="crosh"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Chrome OS developer command-line shell"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crosh/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="+rust-crosh"
+
+DEPEND="
+	=dev-rust/chrono-0.4*:=
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/getopts-0.2*:=
+	dev-rust/libchromeos:=
+	=dev-rust/rand-0.7*:=
+	>=dev-rust/regex-1.0.6:= <dev-rust/regex-2.0.0
+	dev-rust/remain:=
+	=dev-rust/rustyline-7*:=
+	dev-rust/shell-words:=
+	dev-rust/sys_util:=
+	dev-rust/system_api:=
+	dev-rust/tempfile:=
+	>dev-rust/tlsdate_dbus-0.24.52-r8:=
+"
+RDEPEND="app-admin/sudo
+	chromeos-base/vboot_reference
+	net-misc/iputils
+	net-misc/openssh
+	net-wireless/iw
+	sys-apps/dbus
+	sys-apps/net-tools
+"
+
+src_compile() {
+	# File order is important here.
+	sed \
+		-e '/^#/d' \
+		-e '/^$/d' \
+		inputrc.safe inputrc.extra \
+		> "${WORKDIR}"/inputrc.crosh || die
+
+	cros-rust_src_compile
+}
+
+src_test() {
+	./run_tests.sh || die
+
+	cros-rust_src_test
+}
+
+src_install() {
+	if use rust-crosh; then
+		dobin "$(cros-rust_get_build_dir)/crosh"
+		newbin crosh crosh.sh
+	else
+		dobin crosh
+	fi
+	dobin network_diag
+	local d="/usr/share/crosh"
+	insinto "${d}/dev.d"
+	doins dev.d/*.sh
+	insinto "${d}/removable.d"
+	doins removable.d/*.sh
+	insinto "${d}"
+	doins "${WORKDIR}"/inputrc.crosh
+}
diff --git a/chromeos-base/crosh/crosh-9999.ebuild b/chromeos-base/crosh/crosh-9999.ebuild
index 96d4ba1..02950bd 100644
--- a/chromeos-base/crosh/crosh-9999.ebuild
+++ b/chromeos-base/crosh/crosh-9999.ebuild
@@ -18,9 +18,11 @@
 IUSE="+rust-crosh"
 
 DEPEND="
+	=dev-rust/chrono-0.4*:=
 	=dev-rust/dbus-0.8*:=
 	=dev-rust/getopts-0.2*:=
 	dev-rust/libchromeos:=
+	=dev-rust/rand-0.7*:=
 	>=dev-rust/regex-1.0.6:= <dev-rust/regex-2.0.0
 	dev-rust/remain:=
 	=dev-rust/rustyline-7*:=
diff --git a/chromeos-base/croslog/OWNERS b/chromeos-base/croslog/OWNERS
new file mode 100644
index 0000000..9dac36f
--- /dev/null
+++ b/chromeos-base/croslog/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/croslog/OWNERS
diff --git a/chromeos-base/croslog/croslog-0.0.1-r157.ebuild b/chromeos-base/croslog/croslog-0.0.1-r157.ebuild
new file mode 100644
index 0000000..ef524c7
--- /dev/null
+++ b/chromeos-base/croslog/croslog-0.0.1-r157.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2020 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.
+
+EAPI=7
+CROS_WORKON_COMMIT="0553127ef2b660a5c71f12a9417ed4ad35f07120"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "fa823f91c6f2d1432f2bfaf49b5785eeb4e6e6fb" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="common-mk croslog metrics .gn"
+
+PLATFORM_SUBDIR="croslog"
+
+inherit cros-workon platform
+
+DESCRIPTION="Log viewer for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/croslog"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	"
+
+src_install() {
+	platform_install
+}
+
+platform_pkg_test() {
+	platform test_all
+}
+
diff --git a/chromeos-base/croslog/croslog-0.0.1-r77.ebuild b/chromeos-base/croslog/croslog-0.0.1-r77.ebuild
deleted file mode 100644
index bd9384e..0000000
--- a/chromeos-base/croslog/croslog-0.0.1-r77.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8fa9939ad3373da3aa1080b56644e815ce3b1e13" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk croslog .gn"
-
-PLATFORM_SUBDIR="croslog"
-
-inherit cros-workon platform
-
-DESCRIPTION="Log viewer for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/croslog"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="chromeos-base/bootid-logger"
-
-src_install() {
-	platform_install
-}
-
-platform_pkg_test() {
-	platform test_all
-}
-
diff --git a/chromeos-base/croslog/croslog-9999.ebuild b/chromeos-base/croslog/croslog-9999.ebuild
index 1e041ca..1ca3a87 100644
--- a/chromeos-base/croslog/croslog-9999.ebuild
+++ b/chromeos-base/croslog/croslog-9999.ebuild
@@ -7,7 +7,7 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk croslog .gn"
+CROS_WORKON_SUBTREE="common-mk croslog metrics .gn"
 
 PLATFORM_SUBDIR="croslog"
 
@@ -21,7 +21,9 @@
 KEYWORDS="~*"
 IUSE=""
 
-RDEPEND="chromeos-base/bootid-logger"
+DEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	"
 
 src_install() {
 	platform_install
diff --git a/chromeos-base/crostini_client/crostini_client-0.1.0-r68.ebuild b/chromeos-base/crostini_client/crostini_client-0.1.0-r68.ebuild
deleted file mode 100644
index ea87332..0000000
--- a/chromeos-base/crostini_client/crostini_client-0.1.0-r68.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-CROS_WORKON_COMMIT="e2ae0b1627d081187ae2cb21c1b76663a1d9eab4"
-CROS_WORKON_TREE="60c2e566309cbc45609497df23ada5ab2bbfe25f"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="vm_tools/crostini_client"
-CROS_WORKON_INCREMENTAL_BUILD=1
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Command-line client for controlling crostini"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/crostini_client/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-DEPEND="chromeos-base/system_api
-	=dev-rust/dbus-0.8*:=
-	=dev-rust/getopts-0.2*:=
-	=dev-rust/lazy_static-1*:=
-	>=dev-rust/libc-0.2.44:=
-	!>=dev-rust/libc-0.3
-	>=dev-rust/protobuf-2.16:= <dev-rust/protobuf-3
-	>=dev-rust/protoc-rust-2.16:= <dev-rust/protoc-rust-3
-"
-
-RDEPEND="sys-apps/dbus"
-
-src_unpack() {
-	cros-workon_src_unpack
-	# The compilation happens in the crostini_client subdirectory.
-	S+="/vm_tools/crostini_client"
-	cros-rust_src_unpack
-}
-
-src_compile() {
-	ecargo_build
-	use test && ecargo_test --no-run
-}
-
-src_test() {
-	if ! use x86 && ! use amd64 ; then
-		elog "Skipping unit tests on non-x86 platform"
-	else
-		ecargo_test --all
-	fi
-}
-
-src_install() {
-	local build_dir="$(cros-rust_get_build_dir)"
-	dobin "${build_dir}/crostini_client"
-	dosym "crostini_client" "/usr/bin/vmc"
-}
diff --git a/chromeos-base/crostini_client/crostini_client-0.1.0-r90.ebuild b/chromeos-base/crostini_client/crostini_client-0.1.0-r90.ebuild
new file mode 100644
index 0000000..c371eab
--- /dev/null
+++ b/chromeos-base/crostini_client/crostini_client-0.1.0-r90.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+CROS_WORKON_COMMIT="06073d9fd7c548b028fa7340631290296c88829b"
+CROS_WORKON_TREE="ae9d28d78fee99f92d94d00406be35dd80bae0ac"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="vm_tools/crostini_client"
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Command-line client for controlling crostini"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/crostini_client/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+DEPEND="chromeos-base/system_api
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/getopts-0.2*:=
+	=dev-rust/lazy_static-1*:=
+	>=dev-rust/libc-0.2.44:=
+	!>=dev-rust/libc-0.3
+	>=dev-rust/protobuf-2.16:= <dev-rust/protobuf-3
+	>=dev-rust/protoc-rust-2.16:= <dev-rust/protoc-rust-3
+"
+
+RDEPEND="sys-apps/dbus"
+
+src_unpack() {
+	cros-workon_src_unpack
+	# The compilation happens in the crostini_client subdirectory.
+	S+="/vm_tools/crostini_client"
+	cros-rust_src_unpack
+}
+
+src_compile() {
+	ecargo_build
+	use test && ecargo_test --no-run
+}
+
+src_test() {
+	if ! use x86 && ! use amd64 ; then
+		elog "Skipping unit tests on non-x86 platform"
+	else
+		ecargo_test --all
+	fi
+}
+
+src_install() {
+	local build_dir="$(cros-rust_get_build_dir)"
+	dobin "${build_dir}/crostini_client"
+	dosym "crostini_client" "/usr/bin/vmc"
+}
diff --git a/chromeos-base/crosvm/Manifest b/chromeos-base/crosvm/Manifest
index bf71fa7..436d32c 100644
--- a/chromeos-base/crosvm/Manifest
+++ b/chromeos-base/crosvm/Manifest
@@ -1 +1,2 @@
-DIST crosvm-bzImage-2019_10_10_00_22 6309424 BLAKE2B 3d6bc31650799165d76fe0ca3bd2a8194b752a1dd3159883ad9ed93fe177c43fac0718353bb8babda71587a96f1295bc992bcfb65bc1b357541a405db829a6bc SHA512 397157e8adbd1c6e7fbbffa8b809de494f757cbccf29e79829a88020df46d3ebf0995184f56dcd7372d4f379140fc1d7a94656bbc6e2ec1a73eff98cd7495af0
+DIST crosvm-testing-bzimage-x86_64-r0000 6262784 BLAKE2B e6ed7f7e472c1438c1bb7bbec31a9e9a343039236b54e7099cda2907e80388951663c67033e159722cdf052063595acb5b52e5b3df888e408c1d6a3c53d723d1 SHA512 57c6cc10e58c42b9ba444fc9aa2c7ea6a154f86310b84f59825410b547847e197e8b45e6dbd8048223614669cfcf93c6eb4219c57aacac6c0b6c84b2b7b9eba8
+DIST crosvm-testing-rootfs-x86_64-r0000 4157440 BLAKE2B c820d1bc284bdfea71d545951027b8fde25e4177d4e265df86777abfeacdf44ee5580b0b2204f51f2d21f2b8ae08278e9ab5d01842a4676725aaf0be53e53606 SHA512 4ceb6de59926de5d78a2feb9cce0ae4e5063074c577c09a54e61e97edabeb9c3938241f2f9f5210d0ec99881530dc62f382607c65b27e8beaddc1390302eb9c1
diff --git a/chromeos-base/crosvm/OWNERS b/chromeos-base/crosvm/OWNERS
new file mode 100644
index 0000000..ddf4b25
--- /dev/null
+++ b/chromeos-base/crosvm/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:OWNERS
\ No newline at end of file
diff --git a/chromeos-base/crosvm/crosvm-0.1.0-r1150.ebuild b/chromeos-base/crosvm/crosvm-0.1.0-r1150.ebuild
deleted file mode 100644
index 2cb07fa..0000000
--- a/chromeos-base/crosvm/crosvm-0.1.0-r1150.ebuild
+++ /dev/null
@@ -1,302 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="f35d2c43ff19520855cffee761dc8899c5a439a1"
-CROS_WORKON_TREE="c7761aa088dd972cecf4fd74712582943c187fb3"
-CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
-CROS_WORKON_LOCALNAME="platform/crosvm"
-CROS_WORKON_INCREMENTAL_BUILD=1
-# We don't use CROS_WORKON_OUTOFTREE_BUILD here since crosvm/Cargo.toml is
-# using "# ignored by ebuild" macro which supported by cros-rust.
-
-inherit cros-fuzzer cros-rust cros-workon user
-
-KERNEL_PREBUILT_DATE="2019_10_10_00_22"
-
-DESCRIPTION="Utility for running VMs on Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/"
-SRC_URI="test? ( https://storage.googleapis.com/crosvm-testing/x86_64/${KERNEL_PREBUILT_DATE}/bzImage -> crosvm-bzImage-${KERNEL_PREBUILT_DATE} )"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test cros-debug crosvm-gpu -crosvm-plugin +crosvm-power-monitor-powerd +crosvm-video-decoder +crosvm-video-encoder +crosvm-wl-dmabuf fuzzer tpm2 arcvm_gce_l1"
-
-COMMON_DEPEND="
-	sys-apps/dtc:=
-	sys-libs/libcap:=
-	chromeos-base/libvda:=
-	chromeos-base/minijail:=
-	dev-libs/wayland:=
-	crosvm-gpu? (
-		media-libs/virglrenderer:=
-	)
-	crosvm-wl-dmabuf? ( media-libs/minigbm:= )
-	dev-rust/libchromeos:=
-	virtual/libusb:1=
-"
-
-RDEPEND="${COMMON_DEPEND}
-	!chromeos-base/crosvm-bin
-	crosvm-power-monitor-powerd? ( sys-apps/dbus )
-	tpm2? ( sys-apps/dbus )
-"
-
-DEPEND="${COMMON_DEPEND}
-	=dev-rust/android_log-sys-0.2*:=
-	>=dev-rust/anyhow-1.0.32:= <dev-rust/anyhow-2.0
-	=dev-rust/async-trait-0.1*:=
-	fuzzer? (
-		dev-rust/cros_fuzz:=
-		=dev-rust/rand-0.6*:=
-	)
-	=dev-rust/bitflags-1*:=
-	~dev-rust/cc-1.0.25:=
-	>=dev-rust/downcast-rs-1.2.0:= <dev-rust/downcast-rs-2.0
-	=dev-rust/futures-0.3*:=
-	=dev-rust/gdbstub-0.4*:=
-	~dev-rust/getopts-0.2.18:=
-	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
-	dev-rust/libvda:=
-	dev-rust/minijail:=
-	~dev-rust/num_cpus-1.9.0:=
-	dev-rust/p9:=
-	=dev-rust/paste-1*:=
-	=dev-rust/pin-utils-0.1*:=
-	~dev-rust/pkg-config-0.3.11:=
-	=dev-rust/proc-macro2-1*:=
-	>=dev-rust/protobuf-2.8:=
-	!>=dev-rust/protobuf-3
-	>=dev-rust/protoc-rust-2.8:=
-	!>=dev-rust/protoc-rust-3
-	=dev-rust/quote-1*:=
-	=dev-rust/syn-1*:=
-	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
-	dev-rust/trace_events:=
-	dev-rust/remain:=
-	tpm2? (
-		chromeos-base/tpm2:=
-		chromeos-base/trunks:=
-		=dev-rust/dbus-0.6*:=
-	)
-	media-sound/audio_streams:=
-	media-sound/libcras:=
-	crosvm-power-monitor-powerd? (
-		chromeos-base/system_api
-		=dev-rust/dbus-0.6*:=
-	)
-"
-
-get_seccomp_path() {
-	local seccomp_arch="unknown"
-	case ${ARCH} in
-		amd64) seccomp_arch=x86_64;;
-		arm) seccomp_arch=arm;;
-		arm64) seccomp_arch=aarch64;;
-	esac
-
-	echo "seccomp/${seccomp_arch}"
-}
-
-FUZZERS=(
-	crosvm_block_fuzzer
-	crosvm_fs_server_fuzzer
-	crosvm_qcow_fuzzer
-	crosvm_usb_descriptor_fuzzer
-	crosvm_virtqueue_fuzzer
-	crosvm_zimage_fuzzer
-)
-
-src_unpack() {
-	# Unpack both the project and dependency source code
-	cros-workon_src_unpack
-	cros-rust_src_unpack
-}
-
-src_prepare() {
-	cros-rust_src_prepare
-
-	if use arcvm_gce_l1; then
-		eapply "${FILESDIR}"/0001-betty-arcvm-Loose-mprotect-mmap-for-software-renderi.patch
-	fi
-
-	default
-}
-
-src_configure() {
-	cros-rust_src_configure
-
-	# Change the path used for the minijail pivot root from /var/empty.
-	# See: https://crbug.com/934513
-	export DEFAULT_PIVOT_ROOT="/mnt/empty"
-}
-
-src_compile() {
-	local features=(
-		$(usex crosvm-gpu virgl_renderer "")
-		$(usex crosvm-gpu virgl_renderer_next "")
-		$(usex crosvm-plugin plugin "")
-		$(usex crosvm-power-monitor-powerd power-monitor-powerd "")
-		$(usex crosvm-video-decoder video-decoder "")
-		$(usex crosvm-video-encoder video-encoder "")
-		$(usex crosvm-wl-dmabuf wl-dmabuf "")
-		$(usex tpm2 tpm "")
-		$(usex cros-debug gdb "")
-		chromeos
-	)
-
-	local packages=(
-		qcow_utils
-		crosvm
-	)
-
-	for pkg in "${packages[@]}"; do
-		ecargo_build -v \
-			--features="${features[*]}" \
-			-p "${pkg}" \
-			|| die "cargo build failed"
-	done
-
-	if use fuzzer; then
-		cd fuzz
-		local f
-		for f in "${FUZZERS[@]}"; do
-			ecargo_build_fuzzer --bin "${f}"
-		done
-	fi
-}
-
-src_test() {
-	# Some of the tests will use /dev/kvm.
-	addwrite /dev/kvm
-	local test_opts=()
-	use tpm2 || test_opts+=( --exclude tpm2 --exclude tpm2-sys )
-
-	# io_jail tests fork the process, which cause memory leak errors when
-	# run under sanitizers.
-	cros-rust_use_sanitizers && test_opts+=( --exclude io_jail )
-
-	local kernel_binary="${DISTDIR}/crosvm-bzImage-${KERNEL_PREBUILT_DATE}"
-	[[ -e "${kernel_binary}" ]] || die "expected to find kernel binary at ${kernel_binary}"
-	CROS_RUST_PLATFORM_TEST_ARGS+=(
-		"--env" "CROSVM_CARGO_TEST_KERNEL_BINARY=${kernel_binary}"
-	)
-
-	local skip_tests=()
-	# The memfd_create() system call first appeared in Linux 3.17.  Skip
-	# the boot test, which relies on this functionality, on older kernels.
-	local cut_version=$(ver_cut 1-2 "$(uname -r)")
-	if ver_test 3.17 -gt "${cut_version}"; then
-		skip_tests+=( --skip "boot" )
-	fi
-
-	if ! use x86 && ! use amd64; then
-		test_opts+=( --exclude "x86_64" )
-		test_opts+=( --no-run )
-	fi
-
-	if ! use arm64; then
-		test_opts+=( --exclude "aarch64" )
-	fi
-
-	if ! use crosvm-plugin; then
-		test_opts+=( --exclude "crosvm_plugin" )
-	fi
-
-	# Excluding tests that run on a different arch, use /dev/dri,
-	# /dev/net/tun, or wayland access because the bots don't support these.
-	local args=(
-		--workspace -v
-		--exclude net_util
-		--exclude gpu_buffer
-		--exclude gpu_display
-		--exclude gpu_renderer
-		# Also exclude the following since their tests are run in their ebuilds.
-		--exclude enumn
-		--exclude sys_util
-		"${test_opts[@]}"
-	)
-
-	# Non-x86 platforms set --no-run to disable executing the tests.
-	if ! has "--no-run" "${args[@]}"; then
-		# Run the "boot" test on the host until the syslog is properly passed
-		# into the sandbox.
-		# TODO(crbug.com/1154084) Run these on the host until libtest and libstd
-		# are available on the target.
-		cros-rust_get_host_test_executables "${args[@]}" --lib --tests
-	fi
-
-	ecargo_test "${args[@]}" \
-		-- --test-threads=1 \
-		"${skip_tests[@]}" \
-		|| die "cargo test failed"
-
-	# Plugin tests all require /dev/kvm, but we want to make sure they build
-	# at least.
-	if use crosvm-plugin; then
-		ecargo_test --no-run --features plugin \
-			|| die "cargo build with plugin feature failed"
-	fi
-}
-
-src_install() {
-	# cargo doesn't know how to install cross-compiled binaries.  It will
-	# always install native binaries for the host system.  Manually install
-	# crosvm instead.
-	local build_dir="$(cros-rust_get_build_dir)"
-	dobin "${build_dir}/crosvm"
-
-	# Install seccomp policy files.
-	local seccomp_path="${S}/$(get_seccomp_path)"
-	if [[ -d "${seccomp_path}" ]] ; then
-		local policy
-		for policy in "${seccomp_path}"/*.policy; do
-			sed -i "s:/usr/share/policy/crosvm:${seccomp_path}:g" "${policy}" \
-				|| die "failed to modify seccomp policy ${policy}"
-		done
-		for policy in "${seccomp_path}"/*.policy; do
-			local policy_output="${policy%.policy}.bpf"
-			compile_seccomp_policy \
-				--arch-json "${SYSROOT}/build/share/constants.json" \
-				--default-action trap "${policy}" "${policy_output}" \
-				|| die "failed to compile seccomp policy ${policy}"
-		done
-		rm "${seccomp_path}"/common_device.bpf
-		insinto /usr/share/policy/crosvm
-		doins "${seccomp_path}"/*.bpf
-	fi
-
-	# Install qcow utils library, header, and pkgconfig files.
-	dolib.so "${build_dir}/deps/libqcow_utils.so"
-
-	local include_dir="/usr/include/crosvm"
-
-	"${S}"/qcow_utils/platform2_preinstall.sh "${PV}" "${include_dir}" \
-		"${WORKDIR}"
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${WORKDIR}/libqcow_utils.pc"
-
-	insinto "${include_dir}"
-	doins "${S}"/qcow_utils/src/qcow_utils.h
-
-	# Install plugin library, when requested.
-	if use crosvm-plugin ; then
-		insinto "${include_dir}"
-		doins "${S}/crosvm_plugin/crosvm.h"
-		dolib.so "${build_dir}/deps/libcrosvm_plugin.so"
-	fi
-
-	if use fuzzer; then
-		cd fuzz
-		local f
-		for f in "${FUZZERS[@]}"; do
-			fuzzer_install "${S}/fuzz/OWNERS" \
-				"${build_dir}/${f}"
-		done
-	fi
-}
-
-pkg_preinst() {
-	enewuser "crosvm"
-	enewgroup "crosvm"
-}
diff --git a/chromeos-base/crosvm/crosvm-0.1.0-r1401.ebuild b/chromeos-base/crosvm/crosvm-0.1.0-r1401.ebuild
new file mode 100644
index 0000000..c2fe133
--- /dev/null
+++ b/chromeos-base/crosvm/crosvm-0.1.0-r1401.ebuild
@@ -0,0 +1,378 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="e2a61d3289c5fb93c5379799603bc85888523480"
+CROS_WORKON_TREE="46859998bfa9cb66ba0df2968d5f3615c5b19e11"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+CROS_WORKON_LOCALNAME="platform/crosvm"
+CROS_WORKON_INCREMENTAL_BUILD=1
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since crosvm/Cargo.toml is
+# using "# ignored by ebuild" macro which supported by cros-rust.
+
+inherit cros-fuzzer cros-rust cros-workon user
+
+PREBUILT_VERSION="r0000"
+KERNEL_FILE="crosvm-testing-bzimage-x86_64-${PREBUILT_VERSION}"
+ROOTFS_FILE="crosvm-testing-rootfs-x86_64-${PREBUILT_VERSION}"
+
+PREBUILT_URL="https://storage.googleapis.com/chromeos-localmirror"
+
+DESCRIPTION="Utility for running VMs on Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/"
+SRC_URI="
+	test? (
+		${PREBUILT_URL}/${KERNEL_FILE}
+		${PREBUILT_URL}/${ROOTFS_FILE}
+	)
+"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test cros-debug crosvm-gpu -crosvm-direct -crosvm-plugin +crosvm-power-monitor-powerd +crosvm-video-decoder +crosvm-video-encoder +crosvm-wl-dmabuf fuzzer tpm2 android-vm-master arcvm_gce_l1 vhost-user-devices"
+
+COMMON_DEPEND="
+	sys-apps/dtc:=
+	sys-libs/libcap:=
+	chromeos-base/libvda:=
+	chromeos-base/minijail:=
+	dev-libs/wayland:=
+	crosvm-gpu? (
+		media-libs/virglrenderer:=
+	)
+	crosvm-wl-dmabuf? ( media-libs/minigbm:= )
+	dev-rust/libchromeos:=
+	virtual/libusb:1=
+"
+
+RDEPEND="${COMMON_DEPEND}
+	!chromeos-base/crosvm-bin
+	crosvm-power-monitor-powerd? ( sys-apps/dbus )
+	tpm2? ( sys-apps/dbus )
+"
+
+DEPEND="${COMMON_DEPEND}
+	dev-libs/wayland-protocols:=
+	=dev-rust/android_log-sys-0.2*:=
+	>=dev-rust/anyhow-1.0.32:= <dev-rust/anyhow-2.0
+	=dev-rust/async-task-4*:=
+	=dev-rust/async-trait-0.1*:=
+	=dev-rust/bitflags-1*:=
+	~dev-rust/cc-1.0.25:=
+	dev-rust/cros_fuzz:=
+	>=dev-rust/downcast-rs-1.2.0:= <dev-rust/downcast-rs-2.0
+	=dev-rust/futures-0.3*:=
+	dev-rust/intrusive-collections:=
+	=dev-rust/gdbstub-0.4*:=
+	~dev-rust/getopts-0.2.18:=
+	>=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3.0
+	dev-rust/libvda:=
+	dev-rust/minijail:=
+	~dev-rust/num_cpus-1.9.0:=
+	>=dev-rust/once_cell-1.7.2:= <dev-rust/once_cell-2
+	dev-rust/p9:=
+	=dev-rust/paste-1*:=
+	=dev-rust/pin-utils-0.1*:=
+	~dev-rust/pkg-config-0.3.11:=
+	=dev-rust/proc-macro2-1*:=
+	>=dev-rust/protobuf-2.8:=
+	!>=dev-rust/protobuf-3
+	>=dev-rust/protoc-rust-2.8:=
+	!>=dev-rust/protoc-rust-3
+	=dev-rust/quote-1*:=
+	=dev-rust/rand-0.6*:=
+	=dev-rust/serde-1*:=
+	=dev-rust/serde_json-1*:=
+	>=dev-rust/smallvec-1.6.1:= <dev-rust/smallvec-2
+	=dev-rust/syn-1*:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+	dev-rust/remain:=
+	dev-rust/vmm_vhost:=
+	tpm2? (
+		chromeos-base/tpm2:=
+		chromeos-base/trunks:=
+		=dev-rust/dbus-0.6*:=
+	)
+	media-sound/audio_streams:=
+	media-sound/libcras:=
+	crosvm-power-monitor-powerd? (
+		chromeos-base/system_api
+		=dev-rust/dbus-0.6*:=
+	)
+"
+
+get_seccomp_path() {
+	local seccomp_arch="unknown"
+	case ${ARCH} in
+		amd64) seccomp_arch=x86_64;;
+		arm) seccomp_arch=arm;;
+		arm64) seccomp_arch=aarch64;;
+	esac
+
+	echo "seccomp/${seccomp_arch}"
+}
+
+FUZZERS=(
+	crosvm_block_fuzzer
+	crosvm_fs_server_fuzzer
+	crosvm_qcow_fuzzer
+	crosvm_usb_descriptor_fuzzer
+	crosvm_virtqueue_fuzzer
+	crosvm_zimage_fuzzer
+)
+
+# Array of "<features>/<binary name>"
+VHOST_USER_BINARIES=(
+	"net/vhost-user-net-device"
+	"wl/vhost-user-wl-device"
+)
+
+src_unpack() {
+	# Unpack both the project and dependency source code
+	cros-workon_src_unpack
+	cros-rust_src_unpack
+}
+
+src_prepare() {
+	cros-rust_src_prepare
+
+	if use arcvm_gce_l1; then
+		eapply "${FILESDIR}"/0001-betty-arcvm-Loose-mprotect-mmap-for-software-renderi.patch
+	fi
+
+	default
+}
+
+src_configure() {
+	cros-rust_src_configure
+
+	# Change the path used for the minijail pivot root from /var/empty.
+	# See: https://crbug.com/934513
+	export DEFAULT_PIVOT_ROOT="/mnt/empty"
+}
+
+src_compile() {
+	local features=(
+		$(usex crosvm-gpu virgl_renderer "")
+		$(usex crosvm-gpu virgl_renderer_next "")
+		$(usex crosvm-plugin plugin "")
+		$(usex crosvm-power-monitor-powerd power-monitor-powerd "")
+		$(usex crosvm-video-decoder video-decoder "")
+		$(usex crosvm-video-encoder video-encoder "")
+		$(usex crosvm-wl-dmabuf wl-dmabuf "")
+		$(usex tpm2 tpm "")
+		$(usex cros-debug gdb "")
+		chromeos
+		$(usex android-vm-master composite-disk "")
+	)
+
+	local packages=(
+		qcow_utils
+		crosvm
+	)
+
+	for pkg in "${packages[@]}"; do
+		ecargo_build -v \
+			--features="${features[*]}" \
+			-p "${pkg}" \
+			|| die "cargo build failed"
+	done
+
+	if use crosvm-direct ; then
+		ecargo_build -v \
+			--no-default-features --features="direct" \
+			-p "crosvm" --bin crosvm-direct \
+			|| die "cargo build failed"
+	fi
+
+	if use fuzzer; then
+		cd fuzz || die "failed to move directory"
+		local f
+		for f in "${FUZZERS[@]}"; do
+			ecargo_build_fuzzer --bin "${f}"
+		done
+		cd .. || die "failed to move directory"
+	fi
+
+	if use vhost-user-devices; then
+		cd vhost_user_devices || die "failed to move directory"
+		for tuple in "${VHOST_USER_BINARIES[@]}"; do
+			local vhost_features="${tuple%/*}"
+			local binary="${tuple#*/}"
+			ecargo_build -v \
+				--features "${vhost_features}" \
+				--bin "${binary}" \
+				|| die "cargo build failed"
+		done
+		cd .. || die "failed to move directory"
+	fi
+}
+
+src_test() {
+	# Some of the tests will use /dev/kvm.
+	addwrite /dev/kvm
+	local test_opts=()
+	use tpm2 || test_opts+=( --exclude tpm2 --exclude tpm2-sys )
+
+	# io_jail tests fork the process, which cause memory leak errors when
+	# run under sanitizers.
+	cros-rust_use_sanitizers && test_opts+=( --exclude io_jail )
+
+	# Pass kernel/rootfs prebuilts to integration tests.
+	# See crosvm/integration_tests/README.md for details.
+	local CROSVM_CARGO_TEST_PREBUILT_VERSION="${PREBUILT_VERSION}"
+	local kernel_binary="${DISTDIR}/${KERNEL_FILE}"
+	[[ -e "${kernel_binary}" ]] || die "expected to find kernel binary at ${kernel_binary}"
+	CROS_RUST_PLATFORM_TEST_ARGS+=(
+		"--env" "CROSVM_CARGO_TEST_KERNEL_BINARY=${kernel_binary}"
+	)
+
+	local rootfs_image="${DISTDIR}/${ROOTFS_FILE}"
+	[[ -e "${rootfs_image}" ]] || die "expected to find rootfs image at ${rootfs_image}"
+	CROS_RUST_PLATFORM_TEST_ARGS+=(
+		"--env" "CROSVM_CARGO_TEST_ROOTFS_IMAGE=${rootfs_image}"
+	)
+
+	# crosvm does not work on kernel versions between 5.1 and 5.10 due to
+	# io_uring bugs. Skip the integration tests on these platforms.
+	# See b/189879899
+	local cut_version=$(ver_cut 1-2 "$(uname -r)")
+	if ver_test 5.10 -gt "${cut_version}"; then
+		test_opts+=( --exclude "integration_tests" )
+		test_opts+=( --exclude "io_uring" )
+	fi
+
+	if ! use x86 && ! use amd64; then
+		test_opts+=( --exclude "x86_64" )
+		test_opts+=( --no-run )
+	fi
+
+	if ! use arm64; then
+		test_opts+=( --exclude "aarch64" )
+	fi
+
+	if ! use crosvm-plugin; then
+		test_opts+=( --exclude "crosvm_plugin" )
+	fi
+
+	# Excluding tests that run on a different arch, use /dev/dri,
+	# /dev/net/tun, or wayland access because the bots don't support these.
+	local args=(
+		--workspace -v
+		--exclude net_util
+		--exclude gpu_display
+		--exclude rutabaga_gfx
+		--exclude crosvm-fuzz
+		# Also exclude the following since their tests are run in their ebuilds.
+		--exclude enumn
+		--exclude sys_util
+		"${test_opts[@]}"
+	)
+
+	# Non-x86 platforms set --no-run to disable executing the tests.
+	if ! has "--no-run" "${args[@]}"; then
+		# Run the "boot" test on the host until the syslog is properly passed
+		# into the sandbox.
+		# TODO(crbug.com/1154084) Run these on the host until libtest and libstd
+		# are available on the target.
+		cros-rust_get_host_test_executables "${args[@]}" --lib --tests
+	fi
+
+	ecargo_test "${args[@]}" \
+		-- --test-threads=1 \
+		|| die "cargo test failed"
+
+	# Plugin tests all require /dev/kvm, but we want to make sure they build
+	# at least.
+	if use crosvm-plugin; then
+		ecargo_test --no-run --features plugin \
+			|| die "cargo build with plugin feature failed"
+	fi
+
+	if use vhost-user-devices; then
+		cd vhost_user_devices || die "failed to move directory"
+		ecargo_test --all-targets --all-features \
+			|| die "cargo test vhost-user-devices"
+		cd .. || die "failed to move directory"
+	fi
+}
+
+src_install() {
+	# cargo doesn't know how to install cross-compiled binaries.  It will
+	# always install native binaries for the host system.  Manually install
+	# crosvm instead.
+	local build_dir="$(cros-rust_get_build_dir)"
+	dobin "${build_dir}/crosvm"
+
+	# Install seccomp policy files.
+	local seccomp_path="${S}/$(get_seccomp_path)"
+	if [[ -d "${seccomp_path}" ]] ; then
+		local policy
+		for policy in "${seccomp_path}"/*.policy; do
+			sed -i "s:/usr/share/policy/crosvm:${seccomp_path}:g" "${policy}" \
+				|| die "failed to modify seccomp policy ${policy}"
+		done
+		for policy in "${seccomp_path}"/*.policy; do
+			local policy_output="${policy%.policy}.bpf"
+			compile_seccomp_policy \
+				--arch-json "${SYSROOT}/build/share/constants.json" \
+				--default-action trap "${policy}" "${policy_output}" \
+				|| die "failed to compile seccomp policy ${policy}"
+		done
+		rm "${seccomp_path}"/common_device.bpf
+		insinto /usr/share/policy/crosvm
+		doins "${seccomp_path}"/*.bpf
+	fi
+
+	# Install qcow utils library, header, and pkgconfig files.
+	dolib.so "${build_dir}/deps/libqcow_utils.so"
+
+	local include_dir="/usr/include/crosvm"
+
+	"${S}"/qcow_utils/platform2_preinstall.sh "${PV}" "${include_dir}" \
+		"${WORKDIR}"
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${WORKDIR}/libqcow_utils.pc"
+
+	insinto "${include_dir}"
+	doins "${S}"/qcow_utils/src/qcow_utils.h
+
+	# Install plugin library, when requested.
+	if use crosvm-plugin ; then
+		insinto "${include_dir}"
+		doins "${S}/crosvm_plugin/crosvm.h"
+		dolib.so "${build_dir}/deps/libcrosvm_plugin.so"
+	fi
+
+	# Install vhost-user device executable.
+	if use vhost-user-devices; then
+		local build_dir="$(cros-rust_get_build_dir)"
+		for tuple in "${VHOST_USER_BINARIES[@]}"; do
+			local binary="${tuple#*/}"
+			dobin "${build_dir}/${binary}"
+		done
+	fi
+
+	# Install crosvm-direct, when requested.
+	if use crosvm-direct ; then
+		into /build/manatee
+		dobin "${build_dir}/crosvm-direct"
+	fi
+
+	if use fuzzer; then
+		cd fuzz || die "failed to move directory"
+		local f
+		for f in "${FUZZERS[@]}"; do
+			fuzzer_install "${S}/fuzz/OWNERS" \
+				"${build_dir}/${f}"
+		done
+		cd .. || die "failed to move directory"
+	fi
+}
+
+pkg_preinst() {
+	enewuser "crosvm"
+	enewgroup "crosvm"
+
+	cros-rust_pkg_preinst
+}
diff --git a/chromeos-base/crosvm/crosvm-9999.ebuild b/chromeos-base/crosvm/crosvm-9999.ebuild
index af1f189..0854d76 100644
--- a/chromeos-base/crosvm/crosvm-9999.ebuild
+++ b/chromeos-base/crosvm/crosvm-9999.ebuild
@@ -10,15 +10,24 @@
 
 inherit cros-fuzzer cros-rust cros-workon user
 
-KERNEL_PREBUILT_DATE="2019_10_10_00_22"
+PREBUILT_VERSION="r0000"
+KERNEL_FILE="crosvm-testing-bzimage-x86_64-${PREBUILT_VERSION}"
+ROOTFS_FILE="crosvm-testing-rootfs-x86_64-${PREBUILT_VERSION}"
+
+PREBUILT_URL="https://storage.googleapis.com/chromeos-localmirror"
 
 DESCRIPTION="Utility for running VMs on Chrome OS"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/"
-SRC_URI="test? ( https://storage.googleapis.com/crosvm-testing/x86_64/${KERNEL_PREBUILT_DATE}/bzImage -> crosvm-bzImage-${KERNEL_PREBUILT_DATE} )"
+SRC_URI="
+	test? (
+		${PREBUILT_URL}/${KERNEL_FILE}
+		${PREBUILT_URL}/${ROOTFS_FILE}
+	)
+"
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="test cros-debug crosvm-gpu -crosvm-plugin +crosvm-power-monitor-powerd +crosvm-video-decoder +crosvm-video-encoder +crosvm-wl-dmabuf fuzzer tpm2 arcvm_gce_l1"
+IUSE="test cros-debug crosvm-gpu -crosvm-direct -crosvm-plugin +crosvm-power-monitor-powerd +crosvm-video-decoder +crosvm-video-encoder +crosvm-wl-dmabuf fuzzer tpm2 android-vm-master arcvm_gce_l1 vhost-user-devices"
 
 COMMON_DEPEND="
 	sys-apps/dtc:=
@@ -41,23 +50,24 @@
 "
 
 DEPEND="${COMMON_DEPEND}
+	dev-libs/wayland-protocols:=
 	=dev-rust/android_log-sys-0.2*:=
 	>=dev-rust/anyhow-1.0.32:= <dev-rust/anyhow-2.0
+	=dev-rust/async-task-4*:=
 	=dev-rust/async-trait-0.1*:=
-	fuzzer? (
-		dev-rust/cros_fuzz:=
-		=dev-rust/rand-0.6*:=
-	)
 	=dev-rust/bitflags-1*:=
 	~dev-rust/cc-1.0.25:=
+	dev-rust/cros_fuzz:=
 	>=dev-rust/downcast-rs-1.2.0:= <dev-rust/downcast-rs-2.0
 	=dev-rust/futures-0.3*:=
+	dev-rust/intrusive-collections:=
 	=dev-rust/gdbstub-0.4*:=
 	~dev-rust/getopts-0.2.18:=
-	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
+	>=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3.0
 	dev-rust/libvda:=
 	dev-rust/minijail:=
 	~dev-rust/num_cpus-1.9.0:=
+	>=dev-rust/once_cell-1.7.2:= <dev-rust/once_cell-2
 	dev-rust/p9:=
 	=dev-rust/paste-1*:=
 	=dev-rust/pin-utils-0.1*:=
@@ -68,10 +78,14 @@
 	>=dev-rust/protoc-rust-2.8:=
 	!>=dev-rust/protoc-rust-3
 	=dev-rust/quote-1*:=
+	=dev-rust/rand-0.6*:=
+	=dev-rust/serde-1*:=
+	=dev-rust/serde_json-1*:=
+	>=dev-rust/smallvec-1.6.1:= <dev-rust/smallvec-2
 	=dev-rust/syn-1*:=
 	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
-	dev-rust/trace_events:=
 	dev-rust/remain:=
+	dev-rust/vmm_vhost:=
 	tpm2? (
 		chromeos-base/tpm2:=
 		chromeos-base/trunks:=
@@ -105,6 +119,12 @@
 	crosvm_zimage_fuzzer
 )
 
+# Array of "<features>/<binary name>"
+VHOST_USER_BINARIES=(
+	"net/vhost-user-net-device"
+	"wl/vhost-user-wl-device"
+)
+
 src_unpack() {
 	# Unpack both the project and dependency source code
 	cros-workon_src_unpack
@@ -141,6 +161,7 @@
 		$(usex tpm2 tpm "")
 		$(usex cros-debug gdb "")
 		chromeos
+		$(usex android-vm-master composite-disk "")
 	)
 
 	local packages=(
@@ -155,12 +176,33 @@
 			|| die "cargo build failed"
 	done
 
+	if use crosvm-direct ; then
+		ecargo_build -v \
+			--no-default-features --features="direct" \
+			-p "crosvm" --bin crosvm-direct \
+			|| die "cargo build failed"
+	fi
+
 	if use fuzzer; then
-		cd fuzz
+		cd fuzz || die "failed to move directory"
 		local f
 		for f in "${FUZZERS[@]}"; do
 			ecargo_build_fuzzer --bin "${f}"
 		done
+		cd .. || die "failed to move directory"
+	fi
+
+	if use vhost-user-devices; then
+		cd vhost_user_devices || die "failed to move directory"
+		for tuple in "${VHOST_USER_BINARIES[@]}"; do
+			local vhost_features="${tuple%/*}"
+			local binary="${tuple#*/}"
+			ecargo_build -v \
+				--features "${vhost_features}" \
+				--bin "${binary}" \
+				|| die "cargo build failed"
+		done
+		cd .. || die "failed to move directory"
 	fi
 }
 
@@ -174,18 +216,28 @@
 	# run under sanitizers.
 	cros-rust_use_sanitizers && test_opts+=( --exclude io_jail )
 
-	local kernel_binary="${DISTDIR}/crosvm-bzImage-${KERNEL_PREBUILT_DATE}"
+	# Pass kernel/rootfs prebuilts to integration tests.
+	# See crosvm/integration_tests/README.md for details.
+	local CROSVM_CARGO_TEST_PREBUILT_VERSION="${PREBUILT_VERSION}"
+	local kernel_binary="${DISTDIR}/${KERNEL_FILE}"
 	[[ -e "${kernel_binary}" ]] || die "expected to find kernel binary at ${kernel_binary}"
 	CROS_RUST_PLATFORM_TEST_ARGS+=(
 		"--env" "CROSVM_CARGO_TEST_KERNEL_BINARY=${kernel_binary}"
 	)
 
-	local skip_tests=()
-	# The memfd_create() system call first appeared in Linux 3.17.  Skip
-	# the boot test, which relies on this functionality, on older kernels.
+	local rootfs_image="${DISTDIR}/${ROOTFS_FILE}"
+	[[ -e "${rootfs_image}" ]] || die "expected to find rootfs image at ${rootfs_image}"
+	CROS_RUST_PLATFORM_TEST_ARGS+=(
+		"--env" "CROSVM_CARGO_TEST_ROOTFS_IMAGE=${rootfs_image}"
+	)
+
+	# crosvm does not work on kernel versions between 5.1 and 5.10 due to
+	# io_uring bugs. Skip the integration tests on these platforms.
+	# See b/189879899
 	local cut_version=$(ver_cut 1-2 "$(uname -r)")
-	if ver_test 3.17 -gt "${cut_version}"; then
-		skip_tests+=( --skip "boot" )
+	if ver_test 5.10 -gt "${cut_version}"; then
+		test_opts+=( --exclude "integration_tests" )
+		test_opts+=( --exclude "io_uring" )
 	fi
 
 	if ! use x86 && ! use amd64; then
@@ -206,9 +258,9 @@
 	local args=(
 		--workspace -v
 		--exclude net_util
-		--exclude gpu_buffer
 		--exclude gpu_display
-		--exclude gpu_renderer
+		--exclude rutabaga_gfx
+		--exclude crosvm-fuzz
 		# Also exclude the following since their tests are run in their ebuilds.
 		--exclude enumn
 		--exclude sys_util
@@ -226,7 +278,6 @@
 
 	ecargo_test "${args[@]}" \
 		-- --test-threads=1 \
-		"${skip_tests[@]}" \
 		|| die "cargo test failed"
 
 	# Plugin tests all require /dev/kvm, but we want to make sure they build
@@ -235,6 +286,13 @@
 		ecargo_test --no-run --features plugin \
 			|| die "cargo build with plugin feature failed"
 	fi
+
+	if use vhost-user-devices; then
+		cd vhost_user_devices || die "failed to move directory"
+		ecargo_test --all-targets --all-features \
+			|| die "cargo test vhost-user-devices"
+		cd .. || die "failed to move directory"
+	fi
 }
 
 src_install() {
@@ -284,17 +342,35 @@
 		dolib.so "${build_dir}/deps/libcrosvm_plugin.so"
 	fi
 
+	# Install vhost-user device executable.
+	if use vhost-user-devices; then
+		local build_dir="$(cros-rust_get_build_dir)"
+		for tuple in "${VHOST_USER_BINARIES[@]}"; do
+			local binary="${tuple#*/}"
+			dobin "${build_dir}/${binary}"
+		done
+	fi
+
+	# Install crosvm-direct, when requested.
+	if use crosvm-direct ; then
+		into /build/manatee
+		dobin "${build_dir}/crosvm-direct"
+	fi
+
 	if use fuzzer; then
-		cd fuzz
+		cd fuzz || die "failed to move directory"
 		local f
 		for f in "${FUZZERS[@]}"; do
 			fuzzer_install "${S}/fuzz/OWNERS" \
 				"${build_dir}/${f}"
 		done
+		cd .. || die "failed to move directory"
 	fi
 }
 
 pkg_preinst() {
 	enewuser "crosvm"
 	enewgroup "crosvm"
+
+	cros-rust_pkg_preinst
 }
diff --git a/chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r1155.ebuild b/chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r1155.ebuild
deleted file mode 100644
index cd45c2d..0000000
--- a/chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r1155.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2d4bfe07dbbf6ce72542ee79545ce618699fdb78"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk cryptohome .gn"
-
-PLATFORM_SUBDIR="cryptohome/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="Cryptohome D-Bus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome"
-
-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
-"
-
-RDEPEND="
-	!<chromeos-base/cryptohome-0.0.1
-"
-
-src_install() {
-	# Install D-Bus client library.
-	platform_install_dbus_client_lib "cryptohome"
-}
diff --git a/chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r1348.ebuild b/chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r1348.ebuild
new file mode 100644
index 0000000..37f0a57
--- /dev/null
+++ b/chromeos-base/cryptohome-client/cryptohome-client-0.0.1-r1348.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk cryptohome .gn"
+
+PLATFORM_SUBDIR="cryptohome/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="Cryptohome D-Bus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome"
+
+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
+"
+
+RDEPEND="
+	!<chromeos-base/cryptohome-0.0.1
+"
+
+src_install() {
+	# Install D-Bus client library.
+	platform_install_dbus_client_lib "cryptohome"
+}
diff --git a/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r1185.ebuild b/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r1185.ebuild
new file mode 100644
index 0000000..d3a974e
--- /dev/null
+++ b/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r1185.ebuild
@@ -0,0 +1,60 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9" "1a305e65cfaf27dd42734a37eda080d40b377d6c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 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/+/master/cryptohome"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="tpm tpm2"
+
+REQUIRED_USE="tpm2? ( !tpm )"
+
+COMMON_DEPEND="
+	tpm? (
+		app-crypt/trousers:=
+	)
+	tpm2? (
+		chromeos-base/trunks:=
+	)
+	chromeos-base/attestation:=
+	chromeos-base/biod_proxy:=
+	chromeos-base/chaps:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	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:=
+"
+
+src_install() {
+	dosbin "${OUT}"/cryptohome-test-tool
+	dosbin "${OUT}"/cryptohome-tpm-live-test
+}
diff --git a/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r989.ebuild b/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r989.ebuild
deleted file mode 100644
index 890b387..0000000
--- a/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-0.0.1-r989.ebuild
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2d4bfe07dbbf6ce72542ee79545ce618699fdb78"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901" "4f428eceb77ddeae2a9cdbc99367fd321c975f15" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 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/+/master/cryptohome"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="tpm tpm2"
-
-REQUIRED_USE="tpm2? ( !tpm )"
-
-COMMON_DEPEND="
-	tpm? (
-		app-crypt/trousers:=
-	)
-	tpm2? (
-		chromeos-base/trunks:=
-	)
-	chromeos-base/attestation:=
-	chromeos-base/biod_proxy:=
-	chromeos-base/chaps:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/tpm_manager:=
-	chromeos-base/secure-erase-file:=
-	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:=
-"
-
-src_install() {
-	dosbin "${OUT}"/cryptohome-tpm-live-test
-}
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 fbba9ea..0538f34 100644
--- a/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-9999.ebuild
+++ b/chromeos-base/cryptohome-dev-utils/cryptohome-dev-utils-9999.ebuild
@@ -37,6 +37,7 @@
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/tpm_manager:=
 	chromeos-base/secure-erase-file:=
+	dev-libs/flatbuffers:=
 	dev-libs/glib:=
 	dev-libs/openssl:=
 	dev-libs/protobuf:=
@@ -52,5 +53,6 @@
 "
 
 src_install() {
+	dosbin "${OUT}"/cryptohome-test-tool
 	dosbin "${OUT}"/cryptohome-tpm-live-test
 }
diff --git a/chromeos-base/cryptohome/cryptohome-0.0.1-r3508.ebuild b/chromeos-base/cryptohome/cryptohome-0.0.1-r3508.ebuild
deleted file mode 100644
index 5f7cb79..0000000
--- a/chromeos-base/cryptohome/cryptohome-0.0.1-r3508.ebuild
+++ /dev/null
@@ -1,222 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2d4bfe07dbbf6ce72542ee79545ce618699fdb78"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901" "989d840598227b15d78525d5f92c806011a9c158" "4f428eceb77ddeae2a9cdbc99367fd321c975f15" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 secure_erase_file .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="cryptohome"
-
-inherit cros-workon platform systemd udev user
-
-DESCRIPTION="Encrypted home directories for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="-cert_provision cryptohome_userdataauth_interface +device_mapper
-	-direncryption double_extend_pcr_issue fuzzer
-	generated_cros_config mount_oop +vault_legacy_mount +downloads_bind_mount
-	lvm_stateful_partition pinweaver selinux systemd test tpm tpm2 tpm2_simulator unibuild
-	user_session_isolation"
-
-REQUIRED_USE="
-	device_mapper
-	tpm2? ( !tpm )
-"
-
-COMMON_DEPEND="
-	!chromeos-base/chromeos-cryptohome
-	tpm? (
-		app-crypt/trousers:=
-	)
-	fuzzer? (
-		app-crypt/trousers:=
-	)
-	tpm2? (
-		chromeos-base/trunks:=
-	)
-	selinux? (
-		sys-libs/libselinux:=
-	)
-	chromeos-base/attestation:=
-	chromeos-base/biod_proxy:=
-	chromeos-base/bootlockbox-client:=
-	chromeos-base/cbor:=
-	chromeos-base/chaps:=
-	chromeos-base/chromeos-config-tools:=
-	chromeos-base/libhwsec:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/secure-erase-file:=
-	chromeos-base/tpm_manager:=
-	dev-libs/dbus-glib:=
-	dev-libs/glib:=
-	dev-libs/openssl:=
-	dev-libs/protobuf:=
-	sys-apps/flashmap:=
-	sys-apps/keyutils:=
-	sys-apps/rootdev:=
-	sys-fs/e2fsprogs:=
-	sys-fs/ecryptfs-utils:=
-	sys-fs/lvm2:=
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-"
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}
-	tpm2? ( chromeos-base/trunks:=[test?] )
-	chromeos-base/attestation-client:=
-	chromeos-base/cryptohome-client:=
-	chromeos-base/power_manager-client:=
-	chromeos-base/protofiles:=
-	chromeos-base/system_api:=[fuzzer?]
-	chromeos-base/tpm_manager-client:=
-	chromeos-base/vboot_reference:=
-	chromeos-base/libhwsec:=
-"
-
-src_install() {
-	pushd "${OUT}" >/dev/null
-	dosbin cryptohomed cryptohome cryptohome-proxy cryptohome-path homedirs_initializer \
-		lockbox-cache tpm-manager
-	dosbin cryptohome-namespace-mounter
-	dosbin mount-encrypted
-	dosbin encrypted-reboot-vault
-	if use tpm2; then
-		dosbin bootlockboxd bootlockboxtool
-	fi
-	if use cert_provision; then
-		dolib.so lib/libcert_provision.so
-		dosbin cert_provision_client
-	fi
-	popd >/dev/null
-
-	insinto /etc/dbus-1/system.d
-	doins etc/Cryptohome.conf
-	doins etc/org.chromium.UserDataAuth.conf
-	if use tpm2; then
-		doins etc/BootLockbox.conf
-	fi
-
-	# Install init scripts
-	if use systemd; then
-		if use tpm2; then
-			sed 's/tcsd.service/attestationd.service/' \
-				init/cryptohomed.service \
-				> "${T}/cryptohomed.service"
-			systemd_dounit "${T}/cryptohomed.service"
-		else
-			systemd_dounit init/cryptohomed.service
-		fi
-		systemd_dounit init/mount-encrypted.service
-		systemd_dounit init/lockbox-cache.service
-		systemd_enable_service boot-services.target cryptohomed.service
-		systemd_enable_service system-services.target mount-encrypted.service
-		systemd_enable_service ui.target lockbox-cache.service
-	else
-		insinto /etc/init
-		doins init/cryptohomed-client.conf
-		doins init/cryptohomed.conf
-		doins init/cryptohome-proxy.conf
-		doins init/cryptohome-update-userdataauth.conf
-		doins init/init-homedirs.conf
-		doins init/mount-encrypted.conf
-		doins init/send-mount-encrypted-metrics.conf
-		if use tpm2_simulator; then
-			newins init/lockbox-cache.conf.tpm2_simulator lockbox-cache.conf
-		else
-			doins init/lockbox-cache.conf
-		fi
-		if use tpm2; then
-			insinto /usr/share/policy
-			newins bootlockbox/seccomp/bootlockboxd-seccomp-${ARCH}.policy \
-				bootlockboxd-seccomp.policy
-			insinto /etc/init
-			doins bootlockbox/bootlockboxd.conf
-		else
-			sed -i '/env DISTRIBUTED_MODE_FLAG=/s:=.*:="--attestation_mode=dbus":' \
-				"${D}/etc/init/cryptohomed.conf" ||
-				die "Can't activate distributed mode in cryptohomed.conf"
-		fi
-		if use direncryption; then
-			sed -i '/env DIRENCRYPTION_FLAG=/s:=.*:="--direncryption":' \
-				"${D}/etc/init/cryptohomed.conf" ||
-				die "Can't replace direncryption flag in cryptohomed.conf"
-		fi
-		if use !vault_legacy_mount; then
-			sed -i '/env NO_LEGACY_MOUNT_FLAG=/s:=.*:="--nolegacymount":' \
-				"${D}/etc/init/cryptohomed.conf" ||
-				die "Can't replace nolegacymount flag in cryptohomed.conf"
-		fi
-		if use !downloads_bind_mount; then
-			sed -i '/env NO_DOWNLOAD_BINDMOUNT_FLAG=/s:=.*:="--no_downloads_bind_mount":' \
-				"${D}/etc/init/cryptohomed.conf" ||
-				die "Can't replace no_downloads_bind_mount flag in cryptohomed.conf"
-		fi
-	fi
-	exeinto /usr/share/cros/init
-	if use tpm2_simulator; then
-		newexe init/lockbox-cache.sh.tpm2_simulator lockbox-cache.sh
-	else
-		doexe init/lockbox-cache.sh
-	fi
-	if use cert_provision; then
-		insinto /usr/include/cryptohome
-		doins cert_provision.h
-	fi
-
-	# Install the configuration file and utility for detecting if the new
-	# (UserDataAuth) or old interface is used.
-	insinto /etc/
-	doins cryptohome_userdataauth_interface.conf
-	exeinto /usr/libexec/cryptohome
-	doexe shall-use-userdataauth.sh
-	doexe update_userdataauth_from_features.sh
-
-	# Install seccomp policy for cryptohome-proxy
-	insinto /usr/share/policy
-	newins "seccomp/cryptohome-proxy-${ARCH}.policy" cryptohome-proxy.policy
-
-	sed -i 's/killswitch=on/killswitch=off/' \
-		"${D}/usr/libexec/cryptohome/shall-use-userdataauth.sh" ||
-		die "Can't disable kill switch in shall-use-userdataauth.sh"
-
-	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/cryptohome_cryptolib_rsa_oaep_decrypt_fuzzer \
-		fuzzers/data/*
-
-	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/cryptohome_cryptolib_blob_to_hex_fuzzer
-
-	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/cryptohome_tpm1_cmk_migration_parser_fuzzer \
-		fuzzers/data/*
-}
-
-pkg_preinst() {
-	enewuser "bootlockboxd"
-	enewgroup "bootlockboxd"
-	enewuser "cryptohome"
-	enewgroup "cryptohome"
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/cryptohome_testrunner"
-	platform_test "run" "${OUT}/mount_encrypted_unittests"
-	if use tpm2; then
-		platform_test "run" "${OUT}/boot_lockbox_unittests"
-	fi
-}
diff --git a/chromeos-base/cryptohome/cryptohome-0.0.1-r3707.ebuild b/chromeos-base/cryptohome/cryptohome-0.0.1-r3707.ebuild
new file mode 100644
index 0000000..6629777
--- /dev/null
+++ b/chromeos-base/cryptohome/cryptohome-0.0.1-r3707.ebuild
@@ -0,0 +1,226 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9" "81dfbbc1756a3b4224b447e7bf10a916d97c4f66" "1a305e65cfaf27dd42734a37eda080d40b377d6c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 secure_erase_file .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="cryptohome"
+
+inherit tmpfiles cros-workon platform systemd udev user
+
+DESCRIPTION="Encrypted home directories for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="-cert_provision +device_mapper -direncription_allow_v2 -direncryption
+	double_extend_pcr_issue +downloads_bind_mount fuzzer
+	generated_cros_config generic_tpm2 kernel-5_10 kernel-5_4 kernel-upstream
+	lvm_stateful_partition mount_oop pinweaver selinux slow_mount systemd
+	test tpm tpm2 tpm2_simulator unibuild uprev-4-to-5
+	user_session_isolation +vault_legacy_mount vtpm_proxy"
+
+REQUIRED_USE="
+	device_mapper
+	tpm2? ( !tpm )
+"
+
+COMMON_DEPEND="
+	!chromeos-base/chromeos-cryptohome
+	tpm? (
+		app-crypt/trousers:=
+	)
+	fuzzer? (
+		app-crypt/trousers:=
+	)
+	tpm2? (
+		chromeos-base/trunks:=
+	)
+	selinux? (
+		sys-libs/libselinux:=
+	)
+	chromeos-base/attestation:=
+	chromeos-base/biod_proxy:=
+	chromeos-base/bootlockbox-client:=
+	chromeos-base/cbor:=
+	chromeos-base/chaps:=
+	chromeos-base/chromeos-config-tools:=
+	chromeos-base/libhwsec:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/secure-erase-file:=
+	chromeos-base/tpm_manager:=
+	dev-libs/dbus-glib:=
+	dev-libs/flatbuffers:=
+	dev-libs/glib:=
+	dev-libs/openssl:=
+	dev-libs/protobuf:=
+	sys-apps/flashmap:=
+	sys-apps/keyutils:=
+	sys-apps/rootdev:=
+	sys-fs/e2fsprogs:=
+	sys-fs/ecryptfs-utils:=
+	sys-fs/lvm2:=
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	tpm2? ( chromeos-base/trunks:=[test?] )
+	chromeos-base/attestation-client:=
+	chromeos-base/cryptohome-client:=
+	chromeos-base/power_manager-client:=
+	chromeos-base/protofiles:=
+	chromeos-base/system_api:=[fuzzer?]
+	chromeos-base/tpm_manager-client:=
+	chromeos-base/vboot_reference:=
+	chromeos-base/libhwsec:=
+"
+
+src_install() {
+	pushd "${OUT}" >/dev/null
+	dosbin cryptohomed cryptohome cryptohome-proxy cryptohome-path homedirs_initializer \
+		lockbox-cache tpm-manager
+	dosbin cryptohome-namespace-mounter
+	dosbin mount-encrypted
+	dosbin encrypted-reboot-vault
+	if use tpm2; then
+		dosbin bootlockboxd bootlockboxtool
+	fi
+	if use cert_provision; then
+		dolib.so lib/libcert_provision.so
+		dosbin cert_provision_client
+	fi
+	popd >/dev/null
+
+	insinto /etc/dbus-1/system.d
+	doins etc/Cryptohome.conf
+	doins etc/org.chromium.UserDataAuth.conf
+	if use tpm2; then
+		doins etc/BootLockbox.conf
+	fi
+
+	if use direncription_allow_v2 && ( (use !kernel-5_4 && use !kernel-5_10 && use !kernel-upstream) || use uprev-4-to-5); then
+		die "direncription_allow_v2 is enabled where it shouldn't be. Do you need to change the board overlay? Note, uprev boards should have it disabled!"
+	fi
+
+	if use !direncription_allow_v2 && (use kernel-5_4 || use kernel-5_10 || use kernel-upstream) && use !uprev-4-to-5; then
+		die "direncription_allow_v2 is not enabled where it should be. Do you need to change the board overlay? Note, uprev boards should have it disabled!"
+	fi
+
+	# Install init scripts
+	if use systemd; then
+		if use tpm2; then
+			sed 's/tcsd.service/attestationd.service/' \
+				init/cryptohomed.service \
+				> "${T}/cryptohomed.service"
+			systemd_dounit "${T}/cryptohomed.service"
+		else
+			systemd_dounit init/cryptohomed.service
+		fi
+		systemd_dounit init/mount-encrypted.service
+		systemd_dounit init/lockbox-cache.service
+		systemd_enable_service boot-services.target cryptohomed.service
+		systemd_enable_service system-services.target mount-encrypted.service
+		systemd_enable_service ui.target lockbox-cache.service
+	else
+		insinto /etc/init
+		doins init/cryptohomed-client.conf
+		doins init/cryptohomed.conf
+		doins init/cryptohome-proxy.conf
+		doins init/init-homedirs.conf
+		doins init/mount-encrypted.conf
+		doins init/send-mount-encrypted-metrics.conf
+		if use tpm2_simulator && ! use vtpm_proxy; then
+			newins init/lockbox-cache.conf.tpm2_simulator lockbox-cache.conf
+		else
+			doins init/lockbox-cache.conf
+		fi
+		if use tpm2; then
+			insinto /usr/share/policy
+			newins bootlockbox/seccomp/bootlockboxd-seccomp-${ARCH}.policy \
+				bootlockboxd-seccomp.policy
+			insinto /etc/init
+			doins bootlockbox/bootlockboxd.conf
+		else
+			sed -i '/env DISTRIBUTED_MODE_FLAG=/s:=.*:="--attestation_mode=dbus":' \
+				"${D}/etc/init/cryptohomed.conf" ||
+				die "Can't activate distributed mode in cryptohomed.conf"
+		fi
+		if use direncryption; then
+			sed -i '/env DIRENCRYPTION_FLAG=/s:=.*:="--direncryption":' \
+				"${D}/etc/init/cryptohomed.conf" ||
+				die "Can't replace direncryption flag in cryptohomed.conf"
+		fi
+		if use !vault_legacy_mount; then
+			sed -i '/env NO_LEGACY_MOUNT_FLAG=/s:=.*:="--nolegacymount":' \
+				"${D}/etc/init/cryptohomed.conf" ||
+				die "Can't replace nolegacymount flag in cryptohomed.conf"
+		fi
+		if use !downloads_bind_mount; then
+			sed -i '/env NO_DOWNLOAD_BINDMOUNT_FLAG=/s:=.*:="--no_downloads_bind_mount":' \
+				"${D}/etc/init/cryptohomed.conf" ||
+				die "Can't replace no_downloads_bind_mount flag in cryptohomed.conf"
+		fi
+		if use direncription_allow_v2; then
+			sed -i '/env FSCRYPT_V2_FLAG=/s:=.*:="--fscrypt_v2":' \
+				"${D}/etc/init/cryptohomed.conf" ||
+				die "Can't replace fscrypt_v2 flag in cryptohomed.conf"
+		fi
+	fi
+	exeinto /usr/share/cros/init
+	if use tpm2_simulator && ! use vtpm_proxy; then
+		newexe init/lockbox-cache.sh.tpm2_simulator lockbox-cache.sh
+	else
+		doexe init/lockbox-cache.sh
+	fi
+	if use cert_provision; then
+		insinto /usr/include/cryptohome
+		doins cert_provision.h
+	fi
+
+	# Install seccomp policy for cryptohome-proxy
+	insinto /usr/share/policy
+	newins "seccomp/cryptohome-proxy-${ARCH}.policy" cryptohome-proxy.policy
+
+	dotmpfiles tmpfiles.d/cryptohome.conf
+
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/cryptohome_cryptolib_rsa_oaep_decrypt_fuzzer \
+		fuzzers/data/*
+
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/cryptohome_cryptolib_blob_to_hex_fuzzer
+
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/cryptohome_tpm1_cmk_migration_parser_fuzzer \
+		fuzzers/data/*
+}
+
+pkg_preinst() {
+	enewuser "bootlockboxd"
+	enewgroup "bootlockboxd"
+	enewuser "cryptohome"
+	enewgroup "cryptohome"
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/cryptohome_testrunner"
+	platform_test "run" "${OUT}/mount_encrypted_unittests"
+	if use tpm2; then
+		platform_test "run" "${OUT}/boot_lockbox_unittests"
+	fi
+}
diff --git a/chromeos-base/cryptohome/cryptohome-9999.ebuild b/chromeos-base/cryptohome/cryptohome-9999.ebuild
index 22b5e93..ab25f10 100644
--- a/chromeos-base/cryptohome/cryptohome-9999.ebuild
+++ b/chromeos-base/cryptohome/cryptohome-9999.ebuild
@@ -13,7 +13,7 @@
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="cryptohome"
 
-inherit cros-workon platform systemd udev user
+inherit tmpfiles cros-workon platform systemd udev user
 
 DESCRIPTION="Encrypted home directories for Chromium OS"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/"
@@ -22,11 +22,12 @@
 LICENSE="BSD-Google"
 SLOT="0/0"
 KEYWORDS="~*"
-IUSE="-cert_provision cryptohome_userdataauth_interface +device_mapper
-	-direncryption double_extend_pcr_issue fuzzer
-	generated_cros_config mount_oop +vault_legacy_mount +downloads_bind_mount
-	lvm_stateful_partition pinweaver selinux systemd test tpm tpm2 tpm2_simulator unibuild
-	user_session_isolation"
+IUSE="-cert_provision +device_mapper -direncription_allow_v2 -direncryption
+	double_extend_pcr_issue +downloads_bind_mount fuzzer
+	generated_cros_config generic_tpm2 kernel-5_10 kernel-5_4 kernel-upstream
+	lvm_stateful_partition mount_oop pinweaver selinux slow_mount systemd
+	test tpm tpm2 tpm2_simulator unibuild uprev-4-to-5
+	user_session_isolation +vault_legacy_mount vtpm_proxy"
 
 REQUIRED_USE="
 	device_mapper
@@ -58,6 +59,7 @@
 	chromeos-base/secure-erase-file:=
 	chromeos-base/tpm_manager:=
 	dev-libs/dbus-glib:=
+	dev-libs/flatbuffers:=
 	dev-libs/glib:=
 	dev-libs/openssl:=
 	dev-libs/protobuf:=
@@ -109,6 +111,14 @@
 		doins etc/BootLockbox.conf
 	fi
 
+	if use direncription_allow_v2 && ( (use !kernel-5_4 && use !kernel-5_10 && use !kernel-upstream) || use uprev-4-to-5); then
+		die "direncription_allow_v2 is enabled where it shouldn't be. Do you need to change the board overlay? Note, uprev boards should have it disabled!"
+	fi
+
+	if use !direncription_allow_v2 && (use kernel-5_4 || use kernel-5_10 || use kernel-upstream) && use !uprev-4-to-5; then
+		die "direncription_allow_v2 is not enabled where it should be. Do you need to change the board overlay? Note, uprev boards should have it disabled!"
+	fi
+
 	# Install init scripts
 	if use systemd; then
 		if use tpm2; then
@@ -129,11 +139,10 @@
 		doins init/cryptohomed-client.conf
 		doins init/cryptohomed.conf
 		doins init/cryptohome-proxy.conf
-		doins init/cryptohome-update-userdataauth.conf
 		doins init/init-homedirs.conf
 		doins init/mount-encrypted.conf
 		doins init/send-mount-encrypted-metrics.conf
-		if use tpm2_simulator; then
+		if use tpm2_simulator && ! use vtpm_proxy; then
 			newins init/lockbox-cache.conf.tpm2_simulator lockbox-cache.conf
 		else
 			doins init/lockbox-cache.conf
@@ -164,9 +173,14 @@
 				"${D}/etc/init/cryptohomed.conf" ||
 				die "Can't replace no_downloads_bind_mount flag in cryptohomed.conf"
 		fi
+		if use direncription_allow_v2; then
+			sed -i '/env FSCRYPT_V2_FLAG=/s:=.*:="--fscrypt_v2":' \
+				"${D}/etc/init/cryptohomed.conf" ||
+				die "Can't replace fscrypt_v2 flag in cryptohomed.conf"
+		fi
 	fi
 	exeinto /usr/share/cros/init
-	if use tpm2_simulator; then
+	if use tpm2_simulator && ! use vtpm_proxy; then
 		newexe init/lockbox-cache.sh.tpm2_simulator lockbox-cache.sh
 	else
 		doexe init/lockbox-cache.sh
@@ -176,21 +190,11 @@
 		doins cert_provision.h
 	fi
 
-	# Install the configuration file and utility for detecting if the new
-	# (UserDataAuth) or old interface is used.
-	insinto /etc/
-	doins cryptohome_userdataauth_interface.conf
-	exeinto /usr/libexec/cryptohome
-	doexe shall-use-userdataauth.sh
-	doexe update_userdataauth_from_features.sh
-
 	# Install seccomp policy for cryptohome-proxy
 	insinto /usr/share/policy
 	newins "seccomp/cryptohome-proxy-${ARCH}.policy" cryptohome-proxy.policy
 
-	sed -i 's/killswitch=on/killswitch=off/' \
-		"${D}/usr/libexec/cryptohome/shall-use-userdataauth.sh" ||
-		die "Can't disable kill switch in shall-use-userdataauth.sh"
+	dotmpfiles tmpfiles.d/cryptohome.conf
 
 	platform_fuzzer_install "${S}"/OWNERS \
 		"${OUT}"/cryptohome_cryptolib_rsa_oaep_decrypt_fuzzer \
diff --git a/chromeos-base/cups-fuzz/cups-fuzz-2.3.3-r11.ebuild b/chromeos-base/cups-fuzz/cups-fuzz-2.3.3-r11.ebuild
deleted file mode 100644
index 7f2deaf..0000000
--- a/chromeos-base/cups-fuzz/cups-fuzz-2.3.3-r11.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="141a557b0d85ad255bad184d9a1d71f6dd7b0be6"
-CROS_WORKON_TREE="6c56a58a6808e59bd763896a3b4e5fc1228d1c94"
-CROS_WORKON_LOCALNAME="third_party/cups"
-CROS_WORKON_PROJECT="chromiumos/third_party/cups"
-CROS_WORKON_EGIT_BRANCH="v2.3"
-CROS_WORKON_SUBTREE="fuzzers"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit cros-fuzzer cros-sanitizers cros-workon flag-o-matic libchrome toolchain-funcs
-
-DESCRIPTION="Fuzzer for PPD and IPP functions in CUPS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/cups/+/cups-2-2-8/fuzzers/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="asan fuzzer"
-
-COMMON_DEPEND="net-print/cups:=[fuzzer]"
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-# We really don't want to be building this otherwise.
-REQUIRED_USE="fuzzer"
-
-src_unpack() {
-	cros-workon_src_unpack
-}
-
-src_configure() {
-	sanitizers-setup-env || die
-	fuzzer-setup-binary || die
-	append-ldflags "$(${CHOST}-cups-config --libs)"
-	append-ldflags "$($(tc-getPKG_CONFIG) --libs libchrome)"
-	append-cppflags "$($(tc-getPKG_CONFIG) --cflags libchrome)"
-}
-
-src_compile() {
-	local build_dir="$(cros-workon_get_build_dir)"
-	VPATH="${S}"/fuzzers emake -C "${build_dir}" cups_ppdopen_fuzzer
-	VPATH="${S}"/fuzzers emake -C "${build_dir}" cups_ippreadio_fuzzer
-}
-
-src_install() {
-	local build_dir="$(cros-workon_get_build_dir)"
-	fuzzer_install "${S}"/fuzzers/OWNERS "${build_dir}"/cups_ppdopen_fuzzer
-	fuzzer_install "${S}"/fuzzers/OWNERS "${build_dir}"/cups_ippreadio_fuzzer
-}
diff --git a/chromeos-base/cups-fuzz/cups-fuzz-2.3.3-r18.ebuild b/chromeos-base/cups-fuzz/cups-fuzz-2.3.3-r18.ebuild
new file mode 100644
index 0000000..8092f40
--- /dev/null
+++ b/chromeos-base/cups-fuzz/cups-fuzz-2.3.3-r18.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6da01a55ea3c20d17183e8861af58dc1e4f13725"
+CROS_WORKON_TREE="281e66bb2bfff2994b709d4209668c558742dee8"
+CROS_WORKON_LOCALNAME="third_party/cups"
+CROS_WORKON_PROJECT="chromiumos/third_party/cups"
+CROS_WORKON_EGIT_BRANCH="v2.3"
+CROS_WORKON_SUBTREE="fuzzers"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+inherit cros-fuzzer cros-sanitizers cros-workon flag-o-matic libchrome toolchain-funcs
+
+DESCRIPTION="Fuzzer for PPD and IPP functions in CUPS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/cups/+/HEAD/fuzzers/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="asan fuzzer"
+
+COMMON_DEPEND="net-print/cups:=[fuzzer]"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+# We really don't want to be building this otherwise.
+REQUIRED_USE="fuzzer"
+
+src_unpack() {
+	cros-workon_src_unpack
+}
+
+src_configure() {
+	sanitizers-setup-env || die
+	fuzzer-setup-binary || die
+	append-ldflags "$(${CHOST}-cups-config --libs)"
+	append-ldflags "$($(tc-getPKG_CONFIG) --libs libchrome)"
+	append-cppflags "$($(tc-getPKG_CONFIG) --cflags libchrome)"
+}
+
+src_compile() {
+	local build_dir="$(cros-workon_get_build_dir)"
+	VPATH="${S}"/fuzzers emake -C "${build_dir}" cups_ppdopen_fuzzer
+	VPATH="${S}"/fuzzers emake -C "${build_dir}" cups_ippreadio_fuzzer
+	VPATH="${S}"/fuzzers emake -C "${build_dir}" cups_ipp_t_fuzzer
+}
+
+src_install() {
+	local build_dir="$(cros-workon_get_build_dir)"
+	fuzzer_install "${S}"/fuzzers/OWNERS "${build_dir}"/cups_ppdopen_fuzzer
+	fuzzer_install "${S}"/fuzzers/OWNERS "${build_dir}"/cups_ippreadio_fuzzer
+	fuzzer_install "${S}"/fuzzers/OWNERS "${build_dir}"/cups_ipp_t_fuzzer
+}
diff --git a/chromeos-base/cups-fuzz/cups-fuzz-9999.ebuild b/chromeos-base/cups-fuzz/cups-fuzz-9999.ebuild
index bac35a1..76062ef 100644
--- a/chromeos-base/cups-fuzz/cups-fuzz-9999.ebuild
+++ b/chromeos-base/cups-fuzz/cups-fuzz-9999.ebuild
@@ -13,7 +13,7 @@
 inherit cros-fuzzer cros-sanitizers cros-workon flag-o-matic libchrome toolchain-funcs
 
 DESCRIPTION="Fuzzer for PPD and IPP functions in CUPS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/cups/+/cups-2-2-8/fuzzers/"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/cups/+/HEAD/fuzzers/"
 SRC_URI=""
 
 LICENSE="BSD-Google"
@@ -44,10 +44,12 @@
 	local build_dir="$(cros-workon_get_build_dir)"
 	VPATH="${S}"/fuzzers emake -C "${build_dir}" cups_ppdopen_fuzzer
 	VPATH="${S}"/fuzzers emake -C "${build_dir}" cups_ippreadio_fuzzer
+	VPATH="${S}"/fuzzers emake -C "${build_dir}" cups_ipp_t_fuzzer
 }
 
 src_install() {
 	local build_dir="$(cros-workon_get_build_dir)"
 	fuzzer_install "${S}"/fuzzers/OWNERS "${build_dir}"/cups_ppdopen_fuzzer
 	fuzzer_install "${S}"/fuzzers/OWNERS "${build_dir}"/cups_ippreadio_fuzzer
+	fuzzer_install "${S}"/fuzzers/OWNERS "${build_dir}"/cups_ipp_t_fuzzer
 }
diff --git a/chromeos-base/cups-fuzz/files/chromeos-version.sh b/chromeos-base/cups-fuzz/files/chromeos-version.sh
deleted file mode 100755
index ebb0dce..0000000
--- a/chromeos-base/cups-fuzz/files/chromeos-version.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2019 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.
-#
-# This script is given one argument: the base of the source directory of
-# the package, and it prints a string on stdout with the numerical version
-# number for said repo.
-
-"$1"/configure --version | head -1 | awk '{print $3}'
diff --git a/chromeos-base/debugd-client/debugd-client-0.0.1-r1965.ebuild b/chromeos-base/debugd-client/debugd-client-0.0.1-r1965.ebuild
deleted file mode 100644
index 43c1fd7..0000000
--- a/chromeos-base/debugd-client/debugd-client-0.0.1-r1965.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="0e373cca9dd96d78b6b89fa747518280806c9ae1"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8134ac0ea3a59bcb920a3d64f4192a4d36e881ae" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk debugd .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="debugd/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="Chrome OS debugd client library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/debugd/"
-SRC_URI=""
-
-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. 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
-"
-
-src_install() {
-  # Install DBus client library.
-  platform_install_dbus_client_lib "debugd"
-}
diff --git a/chromeos-base/debugd-client/debugd-client-0.0.1-r2045.ebuild b/chromeos-base/debugd-client/debugd-client-0.0.1-r2045.ebuild
new file mode 100644
index 0000000..bb9eea0
--- /dev/null
+++ b/chromeos-base/debugd-client/debugd-client-0.0.1-r2045.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="fdf9a7706a3e7c362702ffce73bc7e8a7d537c78"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "4ad17d812996a69d326586115483cd71328fae07" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk debugd .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="debugd/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="Chrome OS debugd client library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/debugd/"
+SRC_URI=""
+
+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. 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
+"
+
+src_install() {
+  # Install DBus client library.
+  platform_install_dbus_client_lib "debugd"
+}
diff --git a/chromeos-base/debugd/debugd-0.0.1-r2979.ebuild b/chromeos-base/debugd/debugd-0.0.1-r2979.ebuild
deleted file mode 100644
index ecd69ab..0000000
--- a/chromeos-base/debugd/debugd-0.0.1-r2979.ebuild
+++ /dev/null
@@ -1,123 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="0e373cca9dd96d78b6b89fa747518280806c9ae1"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8134ac0ea3a59bcb920a3d64f4192a4d36e881ae" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk debugd .gn"
-
-PLATFORM_SUBDIR="debugd"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Chrome OS debugging service"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/debugd/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="arcvm cellular iwlwifi_dump nvme sata tpm"
-
-COMMON_DEPEND="
-	chromeos-base/chromeos-login:=
-	chromeos-base/minijail:=
-	chromeos-base/shill-client:=
-	chromeos-base/vboot_reference:=
-	dev-libs/protobuf:=
-	net-libs/libpcap:=
-	net-wireless/iw:=
-	sys-apps/rootdev:=
-	sata? ( sys-apps/smartmontools:= )
-"
-RDEPEND="${COMMON_DEPEND}
-	iwlwifi_dump? ( chromeos-base/intel-wifi-fw-dump )
-	nvme? ( sys-apps/nvme-cli )
-	chromeos-base/chromeos-ssh-testkeys
-	chromeos-base/chromeos-sshd-init
-	!chromeos-base/workarounds
-	sys-apps/iproute2
-	sys-apps/memtester
-"
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/debugd-client:=
-	chromeos-base/system_api:=
-	sys-apps/dbus:="
-
-pkg_setup() {
-	# Has to be done in pkg_setup() instead of pkg_preinst() since
-	# src_install() needs debugd.
-	enewuser "debugd"
-	enewgroup "debugd"
-
-	cros-workon_pkg_setup
-}
-
-pkg_preinst() {
-	enewuser "debugd-logs"
-	enewgroup "debugd-logs"
-
-	enewgroup "daemon-store"
-	enewgroup "logs-access"
-}
-
-src_install() {
-	dobin "${OUT}"/generate_logs
-
-	into /
-	dosbin "${OUT}"/debugd
-
-	exeinto /usr/libexec/debugd/helpers
-	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}"/icmp
-	doexe "${OUT}"/netif
-	doexe "${OUT}"/network_status
-
-	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
-
-		insinto /usr/share/policy
-		newins "${debugd_seccomp_dir}/scheduler-configuration-helper-${ARCH}.policy" scheduler-configuration-helper.policy
-	fi
-
-	# Install seccomp policy for the CUPS URI helper.
-	insinto /usr/share/policy
-	newins "${debugd_seccomp_dir}/cups-uri-helper-${ARCH}.policy" \
-		cups-uri-helper.policy
-
-
-	# Install DBus configuration.
-	insinto /etc/dbus-1/system.d
-	doins share/org.chromium.debugd.conf
-
-	insinto /etc/init
-	doins share/{debugd,trace_marker-test}.conf
-
-	insinto /etc/perf_commands
-	doins -r share/perf_commands/*
-
-	local daemon_store="/etc/daemon-store/debugd"
-	dodir "${daemon_store}"
-	fperms 0660 "${daemon_store}"
-	fowners debugd:debugd "${daemon_store}"
-}
-
-platform_pkg_test() {
-	pushd "${S}/src" >/dev/null
-	platform_test "run" "${OUT}/debugd_testrunner"
-	./helpers/capture_utility_test.sh || die
-	popd >/dev/null
-}
diff --git a/chromeos-base/debugd/debugd-0.0.1-r3060.ebuild b/chromeos-base/debugd/debugd-0.0.1-r3060.ebuild
new file mode 100644
index 0000000..3fc6031
--- /dev/null
+++ b/chromeos-base/debugd/debugd-0.0.1-r3060.ebuild
@@ -0,0 +1,128 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="fdf9a7706a3e7c362702ffce73bc7e8a7d537c78"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "4ad17d812996a69d326586115483cd71328fae07" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk debugd .gn"
+
+PLATFORM_SUBDIR="debugd"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Chrome OS debugging service"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/debugd/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="arcvm cellular iwlwifi_dump nvme sata tpm"
+
+COMMON_DEPEND="
+	chromeos-base/chromeos-login:=
+	chromeos-base/minijail:=
+	chromeos-base/shill-client:=
+	chromeos-base/vboot_reference:=
+	dev-libs/protobuf:=
+	dev-libs/re2:=
+	net-libs/libpcap:=
+	net-wireless/iw:=
+	sys-apps/rootdev:=
+	sys-libs/libcap:=
+	sata? ( sys-apps/smartmontools:= )
+"
+RDEPEND="${COMMON_DEPEND}
+	iwlwifi_dump? ( chromeos-base/intel-wifi-fw-dump )
+	nvme? ( sys-apps/nvme-cli )
+	chromeos-base/chromeos-ssh-testkeys
+	chromeos-base/chromeos-sshd-init
+	!chromeos-base/workarounds
+	sys-apps/iproute2
+	sys-apps/memtester
+"
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/debugd-client:=
+	chromeos-base/system_api:=
+	sys-apps/dbus:="
+
+pkg_setup() {
+	# Has to be done in pkg_setup() instead of pkg_preinst() since
+	# src_install() needs debugd.
+	enewuser "debugd"
+	enewgroup "debugd"
+
+	cros-workon_pkg_setup
+}
+
+pkg_preinst() {
+	enewuser "debugd-logs"
+	enewgroup "debugd-logs"
+
+	enewgroup "daemon-store"
+	enewgroup "logs-access"
+}
+
+src_install() {
+	dobin "${OUT}"/generate_logs
+
+	into /
+	dosbin "${OUT}"/debugd
+
+	exeinto /usr/libexec/debugd/helpers
+	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}"/icmp
+	doexe "${OUT}"/netif
+	doexe "${OUT}"/network_status
+	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
+	for policy in "${debugd_seccomp_dir}"/*-${ARCH}.policy; do
+		local policy_basename="${policy##*/}"
+		local policy_name="${policy_basename/-${ARCH}}"
+		newins "${policy}" "${policy_name}"
+	done
+
+
+	# Install DBus configuration.
+	insinto /etc/dbus-1/system.d
+	doins share/org.chromium.debugd.conf
+
+	insinto /etc/init
+	doins share/{debugd,trace_marker-test}.conf share/kernel-features.json
+
+	insinto /etc/perf_commands
+	doins -r share/perf_commands/*
+
+	local daemon_store="/etc/daemon-store/debugd"
+	dodir "${daemon_store}"
+	fperms 0660 "${daemon_store}"
+	fowners debugd:debugd "${daemon_store}"
+}
+
+platform_pkg_test() {
+	pushd "${S}/src" >/dev/null
+	platform_test "run" "${OUT}/debugd_testrunner"
+	./helpers/capture_utility_test.sh || die
+	popd >/dev/null
+}
diff --git a/chromeos-base/debugd/debugd-9999.ebuild b/chromeos-base/debugd/debugd-9999.ebuild
index caca63c..d7c0385 100644
--- a/chromeos-base/debugd/debugd-9999.ebuild
+++ b/chromeos-base/debugd/debugd-9999.ebuild
@@ -24,9 +24,11 @@
 	chromeos-base/shill-client:=
 	chromeos-base/vboot_reference:=
 	dev-libs/protobuf:=
+	dev-libs/re2:=
 	net-libs/libpcap:=
 	net-wireless/iw:=
 	sys-apps/rootdev:=
+	sys-libs/libcap:=
 	sata? ( sys-apps/smartmontools:= )
 "
 RDEPEND="${COMMON_DEPEND}
@@ -77,6 +79,8 @@
 	doexe "${OUT}"/icmp
 	doexe "${OUT}"/netif
 	doexe "${OUT}"/network_status
+	doexe "${OUT}"/usb4_devinfo_helper
+	doexe "${OUT}"/bt_usb_disconnect_helper
 
 	doexe src/helpers/{capture_utility,minijail-setuid-hack,systrace}.sh
 
@@ -86,15 +90,16 @@
 	if use amd64 ; then
 		exeinto /usr/libexec/debugd/helpers
 		doexe "${OUT}"/scheduler_configuration_helper
-
-		insinto /usr/share/policy
-		newins "${debugd_seccomp_dir}/scheduler-configuration-helper-${ARCH}.policy" scheduler-configuration-helper.policy
 	fi
 
-	# Install seccomp policy for the CUPS URI helper.
+	# Install seccomp policies.
 	insinto /usr/share/policy
-	newins "${debugd_seccomp_dir}/cups-uri-helper-${ARCH}.policy" \
-		cups-uri-helper.policy
+	local policy
+	for policy in "${debugd_seccomp_dir}"/*-${ARCH}.policy; do
+		local policy_basename="${policy##*/}"
+		local policy_name="${policy_basename/-${ARCH}}"
+		newins "${policy}" "${policy_name}"
+	done
 
 
 	# Install DBus configuration.
@@ -102,7 +107,7 @@
 	doins share/org.chromium.debugd.conf
 
 	insinto /etc/init
-	doins share/{debugd,trace_marker-test}.conf
+	doins share/{debugd,trace_marker-test}.conf share/kernel-features.json
 
 	insinto /etc/perf_commands
 	doins -r share/perf_commands/*
diff --git a/chromeos-base/dev-install/dev-install-0.0.1-r1200.ebuild b/chromeos-base/dev-install/dev-install-0.0.1-r1200.ebuild
deleted file mode 100644
index 2cfba96..0000000
--- a/chromeos-base/dev-install/dev-install-0.0.1-r1200.ebuild
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "502a8a422d806ada8ab91dece10e72d4ce63a77e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk dev-install .gn"
-
-PLATFORM_SUBDIR="dev-install"
-
-inherit cros-workon platform
-
-DESCRIPTION="Chromium OS Developer Packages installer"
-HOMEPAGE="http://dev.chromium.org/chromium-os/how-tos-and-troubleshooting/install-software-on-base-images"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="chromeos-base/vboot_reference:="
-RDEPEND="${DEPEND}
-	app-arch/bzip2
-	app-arch/tar
-	net-misc/curl"
-
-fixup_make_defaults() {
-	local file=$1
-
-	sed -i \
-		-e "s/@IUSE_IMPLICIT@/${IUSE_IMPLICIT}/g" \
-		-e "s/@ARCH@/${ARCH}/g" \
-		-e "s/@ELIBC@/${ELIBC}/g" \
-		-e "s/@USERLAND@/${USERLAND}/g" \
-		-e "s/@KERNEL@/${KERNEL}/g" \
-		-e "s/@USE_EXPAND_IMPLICIT@/${USE_EXPAND_IMPLICIT}/g" \
-		${file} || die
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/dev_install_test"
-}
-
-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
-}
-
-pkg_preinst() {
-	if [[ $(cros_target) == "target_image" ]]; then
-		# We don't want to install these files into the normal /build/
-		# dir because we need different settings at build time vs what
-		# we want at runtime in release images.  Thus, install the files
-		# into /usr/share but symlink them into /etc for the images.
-		dosym "/usr/share/${PN}/portage" /etc/portage
-
-		# The parent file content needs to be kept in sync with the
-		# dev_install code.
-		dodir /usr/local/etc/portage/make.profile
-		echo /etc/portage/make.profile \
-			>"${D}"/usr/local/etc/portage/make.profile/parent || die
-	fi
-}
diff --git a/chromeos-base/dev-install/dev-install-0.0.1-r1226.ebuild b/chromeos-base/dev-install/dev-install-0.0.1-r1226.ebuild
new file mode 100644
index 0000000..27c65c8
--- /dev/null
+++ b/chromeos-base/dev-install/dev-install-0.0.1-r1226.ebuild
@@ -0,0 +1,80 @@
+# Copyright 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "d23a0367563b6fee09db7bcd5f0b7bcdd246b4b6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk dev-install .gn"
+
+PLATFORM_SUBDIR="dev-install"
+
+inherit cros-workon platform
+
+DESCRIPTION="Chromium OS Developer Packages installer"
+HOMEPAGE="http://dev.chromium.org/chromium-os/how-tos-and-troubleshooting/install-software-on-base-images"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="chromeos-base/vboot_reference:="
+RDEPEND="${DEPEND}
+	app-arch/bzip2
+	app-arch/tar
+	net-misc/curl"
+
+fixup_make_defaults() {
+	local file=$1
+
+	sed -i \
+		-e "s/@IUSE_IMPLICIT@/${IUSE_IMPLICIT}/g" \
+		-e "s/@ARCH@/${ARCH}/g" \
+		-e "s/@ELIBC@/${ELIBC}/g" \
+		-e "s/@USERLAND@/${USERLAND}/g" \
+		-e "s/@KERNEL@/${KERNEL}/g" \
+		-e "s/@USE_EXPAND_IMPLICIT@/${USE_EXPAND_IMPLICIT}/g" \
+		${file} || die
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/dev_install_test"
+}
+
+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
+}
+
+pkg_preinst() {
+	if [[ $(cros_target) == "target_image" ]]; then
+		# We don't want to install these files into the normal /build/
+		# dir because we need different settings at build time vs what
+		# we want at runtime in release images.  Thus, install the files
+		# into /usr/share but symlink them into /etc for the images.
+		dosym "/usr/share/${PN}/portage" /etc/portage
+
+		# The parent file content needs to be kept in sync with the
+		# dev_install code.
+		dodir /usr/local/etc/portage/make.profile
+		echo /etc/portage/make.profile \
+			>"${D}"/usr/local/etc/portage/make.profile/parent || die
+	fi
+}
diff --git a/chromeos-base/devserver/devserver-0.0.3-r851.ebuild b/chromeos-base/devserver/devserver-0.0.3-r851.ebuild
deleted file mode 100644
index 8ffddb3..0000000
--- a/chromeos-base/devserver/devserver-0.0.3-r851.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="99635d40593425e35f2154cb8b8b77ecab277896"
-CROS_WORKON_TREE="834304e1303f3b8cf891e206cf4b83a239e0ead7"
-CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
-CROS_WORKON_LOCALNAME="platform/dev"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-
-inherit cros-workon
-
-DESCRIPTION="Server to cache Chromium OS build artifacts from Google Storage."
-HOMEPAGE="http://dev.chromium.org/chromium-os/how-tos-and-troubleshooting/using-the-dev-server"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="
-	dev-lang/python
-	dev-python/protobuf-python
-	dev-python/cherrypy
-	net-misc/gsutil
-	!<chromeos-base/cros-devutils-1
-"
-DEPEND="
-	dev-python/psutil
-"
-
-src_install() {
-	emake install DESTDIR="${D}"
-
-	# Install Mob* Monitor checkfiles for the devserver.
-	insinto "/etc/mobmonitor/checkfiles/devserver/"
-	doins -r "${S}/checkfiles/devserver/"*
-}
-
-src_test() {
-	# Run the unit tests.
-	./run_unittests || die
-}
diff --git a/chromeos-base/devserver/devserver-0.0.3-r977.ebuild b/chromeos-base/devserver/devserver-0.0.3-r977.ebuild
new file mode 100644
index 0000000..6ec4f02
--- /dev/null
+++ b/chromeos-base/devserver/devserver-0.0.3-r977.ebuild
@@ -0,0 +1,37 @@
+# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="3295e677c8f2e9236d520373c77a9115a0a36fa9"
+CROS_WORKON_TREE="9f106081447f3fb142fa0718f95458437296f96d"
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME="platform/dev"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+
+inherit cros-workon
+
+DESCRIPTION="Server to cache Chromium OS build artifacts from Google Storage."
+HOMEPAGE="http://dev.chromium.org/chromium-os/how-tos-and-troubleshooting/using-the-dev-server"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="
+	dev-lang/python
+	dev-python/protobuf-python
+	dev-python/cherrypy
+	net-misc/gsutil
+	!<chromeos-base/cros-devutils-1
+"
+DEPEND="
+	dev-python/psutil
+"
+
+src_install() {
+	emake install DESTDIR="${D}"
+}
+
+src_test() {
+	# Run the unit tests.
+	./run_unittests || die
+}
diff --git a/chromeos-base/devserver/devserver-9999.ebuild b/chromeos-base/devserver/devserver-9999.ebuild
index fc4b118..6900de6 100644
--- a/chromeos-base/devserver/devserver-9999.ebuild
+++ b/chromeos-base/devserver/devserver-9999.ebuild
@@ -27,10 +27,6 @@
 
 src_install() {
 	emake install DESTDIR="${D}"
-
-	# Install Mob* Monitor checkfiles for the devserver.
-	insinto "/etc/mobmonitor/checkfiles/devserver/"
-	doins -r "${S}/checkfiles/devserver/"*
 }
 
 src_test() {
diff --git a/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r573.ebuild b/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r573.ebuild
deleted file mode 100644
index 458c268..0000000
--- a/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r573.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-CROS_WORKON_COMMIT="45dd364815081c1e013ea0321820d74afb2f4693"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "fefa2f91d7023fde4f9d09c405fa2e7a56b9e864" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="common-mk diagnostics .gn"
-
-PLATFORM_SUBDIR="diagnostics/dpsl"
-
-inherit cros-workon platform
-
-DESCRIPTION="Diagnostics DPSL test designed to be run inside VM"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics/dpsl/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="
-	chromeos-base/libbrillo:=
-"
-RDEPEND="
-	net-libs/grpc:=
-	dev-libs/protobuf:=
-"
-
-src_install() {
-	dobin "${OUT}/diagnostics_dpsl_test_listener"
-	dobin "${OUT}/diagnostics_dpsl_test_requester"
-}
-
-platform_pkg_test() {
-	local tests=(
-		libdpsl_test
-	)
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r657.ebuild b/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r657.ebuild
new file mode 100644
index 0000000..bbd2a2c
--- /dev/null
+++ b/chromeos-base/diagnostics-dpsl-test/diagnostics-dpsl-test-0.0.1-r657.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "afcd353b9d8c8408cf7fb45f9b3d934434a16eb5" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="common-mk diagnostics .gn"
+
+PLATFORM_SUBDIR="diagnostics/dpsl"
+
+inherit cros-workon platform
+
+DESCRIPTION="Diagnostics DPSL test designed to be run inside VM"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics/dpsl/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	chromeos-base/libbrillo:=
+"
+RDEPEND="
+	net-libs/grpc:=
+	dev-libs/protobuf:=
+"
+
+src_install() {
+	dobin "${OUT}/diagnostics_dpsl_test_listener"
+	dobin "${OUT}/diagnostics_dpsl_test_requester"
+}
+
+platform_pkg_test() {
+	local tests=(
+		libdpsl_test
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/diagnostics/diagnostics-0.0.1-r886.ebuild b/chromeos-base/diagnostics/diagnostics-0.0.1-r886.ebuild
deleted file mode 100644
index ccd731d..0000000
--- a/chromeos-base/diagnostics/diagnostics-0.0.1-r886.ebuild
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="45dd364815081c1e013ea0321820d74afb2f4693"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "fefa2f91d7023fde4f9d09c405fa2e7a56b9e864" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_PROJECT="chromiumos/platform2"
-# TODO(crbug.com/1044813): Remove chromeos-config once its public headers are fixed.
-CROS_WORKON_SUBTREE="common-mk chromeos-config diagnostics .gn"
-
-PLATFORM_SUBDIR="diagnostics"
-
-inherit cros-workon platform udev user
-
-DESCRIPTION="Device telemetry and diagnostics for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="fuzzer wilco generated_cros_config unibuild"
-
-COMMON_DEPEND="
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config:= )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	chromeos-base/chromeos-config-tools:=
-	dev-libs/protobuf:=
-	dev-libs/re2:=
-	net-libs/grpc:=
-	virtual/libudev:=
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/debugd-client:=
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-# 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.
-RDEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/minijail
-	dev-util/stressapptest
-	wilco? (
-		sys-block/fio
-		chromeos-base/chromeos-dtc-vm
-		chromeos-base/vpd
-	)
-"
-
-pkg_preinst() {
-	enewgroup cros_ec-access
-	enewuser cros_healthd
-	enewgroup cros_healthd
-	enewuser healthd_ec
-	enewgroup healthd_ec
-
-	if use wilco; then
-		enewuser wilco_dtc
-		enewgroup wilco_dtc
-	fi
-}
-
-src_install() {
-	dobin "${OUT}/cros_healthd"
-	dobin "${OUT}/cros-health-tool"
-
-	if use wilco; then
-		dobin "${OUT}/wilco_dtc_supportd"
-
-		# Install seccomp policy files.
-		insinto /usr/share/policy
-		newins "init/wilco_dtc_supportd-seccomp-${ARCH}.policy" \
-			wilco_dtc_supportd-seccomp.policy
-		newins "init/wilco-dtc-e2fsck-seccomp-${ARCH}.policy" \
-			wilco-dtc-e2fsck-seccomp.policy
-		newins "init/wilco-dtc-resize2fs-seccomp-${ARCH}.policy" \
-			wilco-dtc-resize2fs-seccomp.policy
-
-		# Install D-Bus configuration file.
-		insinto /etc/dbus-1/system.d
-		doins dbus/org.chromium.WilcoDtcSupportd.conf
-		doins dbus/WilcoDtcUpstart.conf
-
-		# Install the init scripts.
-		insinto /etc/init
-		doins init/wilco_dtc_dispatcher.conf
-		doins init/wilco_dtc_supportd.conf
-		doins init/wilco_dtc.conf
-
-		# Install udev rules.
-		udev_dorules udev/99-ec_driver_files.rules
-	fi
-
-	# Install seccomp policy files.
-	insinto /usr/share/policy
-	newins "init/cros_healthd-seccomp-${ARCH}.policy" \
-		cros_healthd-seccomp.policy
-	newins "cros_healthd/seccomp/ectool_i2cread-seccomp-${ARCH}.policy" \
-		ectool_i2cread-seccomp.policy
-	newins "cros_healthd/seccomp/ectool_pwmgetfanrpm-seccomp-${ARCH}.policy" \
-		ectool_pwmgetfanrpm-seccomp.policy
-	newins "seccomp/memtester-seccomp-${ARCH}.policy" memtester-seccomp.policy
-
-	# Install D-Bus configuration file.
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.CrosHealthd.conf
-
-	# Install the init scripts.
-	insinto /etc/init
-	doins init/cros_healthd.conf
-
-	# Install the diagnostic routine executables.
-	exeinto /usr/libexec/diagnostics
-	doexe "${OUT}/floating-point-accuracy"
-	doexe "${OUT}/prime-search"
-	doexe "${OUT}/smartctl-check"
-	doexe "${OUT}/urandom"
-
-	# Install udev rules.
-	udev_dorules udev/99-chown_dmi_dir.rules
-
-	# Install fuzzers.
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/fetch_block_device_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/fetch_system_info_fuzzer
-}
-
-platform_pkg_test() {
-	local tests=(
-		cros_healthd_mojo_adapter_test
-		cros_healthd_test
-		libcommon_test
-		libcros_healthd_events_test
-		libcros_healthd_fetchers_test
-		libcros_healthd_utils_test
-		network_test
-		network_diagnostics_test
-		routine_test
-		system_config_test
-	)
-	if use wilco; then
-		tests+=(
-			wilco_dtc_supportd_test
-		)
-	fi
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/diagnostics/diagnostics-0.0.1-r991.ebuild b/chromeos-base/diagnostics/diagnostics-0.0.1-r991.ebuild
new file mode 100644
index 0000000..217535f
--- /dev/null
+++ b/chromeos-base/diagnostics/diagnostics-0.0.1-r991.ebuild
@@ -0,0 +1,158 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "aa0612733aca2d5ffa65470f07408228b473ebdb" "afcd353b9d8c8408cf7fb45f9b3d934434a16eb5" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_PROJECT="chromiumos/platform2"
+# TODO(crbug.com/1044813): Remove chromeos-config once its public headers are fixed.
+CROS_WORKON_SUBTREE="common-mk chromeos-config diagnostics .gn"
+
+PLATFORM_SUBDIR="diagnostics"
+
+inherit cros-workon platform udev user
+
+DESCRIPTION="Device telemetry and diagnostics for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="fuzzer wilco generated_cros_config unibuild"
+
+COMMON_DEPEND="
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config:= )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	chromeos-base/chromeos-config-tools:=
+	dev-libs/protobuf:=
+	dev-libs/re2:=
+	net-libs/grpc:=
+	virtual/libudev:=
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/debugd-client:=
+	chromeos-base/system_api:=[fuzzer?]
+	media-sound/adhd:=
+"
+
+# 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.
+RDEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/minijail
+	dev-util/stressapptest
+	wilco? (
+		sys-block/fio
+		chromeos-base/chromeos-dtc-vm
+		chromeos-base/vpd
+	)
+"
+
+pkg_preinst() {
+	enewgroup cros_ec-access
+	enewuser cros_healthd
+	enewgroup cros_healthd
+	enewuser healthd_ec
+	enewgroup healthd_ec
+
+	if use wilco; then
+		enewuser wilco_dtc
+		enewgroup wilco_dtc
+	fi
+}
+
+src_install() {
+	dobin "${OUT}/cros_healthd"
+	dobin "${OUT}/cros-health-tool"
+
+	if use wilco; then
+		dobin "${OUT}/wilco_dtc_supportd"
+
+		# Install seccomp policy files.
+		insinto /usr/share/policy
+		newins "init/wilco_dtc_supportd-seccomp-${ARCH}.policy" \
+			wilco_dtc_supportd-seccomp.policy
+		newins "init/wilco-dtc-e2fsck-seccomp-${ARCH}.policy" \
+			wilco-dtc-e2fsck-seccomp.policy
+		newins "init/wilco-dtc-resize2fs-seccomp-${ARCH}.policy" \
+			wilco-dtc-resize2fs-seccomp.policy
+
+		# Install D-Bus configuration file.
+		insinto /etc/dbus-1/system.d
+		doins dbus/org.chromium.WilcoDtcSupportd.conf
+		doins dbus/WilcoDtcUpstart.conf
+
+		# Install the init scripts.
+		insinto /etc/init
+		doins init/wilco_dtc_dispatcher.conf
+		doins init/wilco_dtc_supportd.conf
+		doins init/wilco_dtc.conf
+
+		# Install udev rules.
+		udev_dorules udev/99-ec_driver_files.rules
+	fi
+
+	# Install seccomp policy files.
+	insinto /usr/share/policy
+	newins "init/cros_healthd-seccomp-${ARCH}.policy" \
+		cros_healthd-seccomp.policy
+	newins "cros_healthd/seccomp/ectool_i2cread-seccomp-${ARCH}.policy" \
+		ectool_i2cread-seccomp.policy
+	newins "cros_healthd/seccomp/ectool_pwmgetfanrpm-seccomp-${ARCH}.policy" \
+		ectool_pwmgetfanrpm-seccomp.policy
+	newins "seccomp/memtester-seccomp-${ARCH}.policy" memtester-seccomp.policy
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.CrosHealthd.conf
+
+	# Install the init scripts.
+	insinto /etc/init
+	doins init/cros_healthd.conf
+
+	# Install the diagnostic routine executables.
+	exeinto /usr/libexec/diagnostics
+	doexe "${OUT}/floating-point-accuracy"
+	doexe "${OUT}/prime-search"
+	doexe "${OUT}/smartctl-check"
+	doexe "${OUT}/urandom"
+
+	# Install udev rules.
+	udev_dorules udev/99-chown_dmi_dir.rules
+
+	# Install fuzzers.
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/fetch_system_info_fuzzer
+}
+
+platform_pkg_test() {
+	local tests=(
+		cros_healthd_mojo_adapter_test
+		cros_healthd_test
+		libcommon_test
+		libcros_healthd_events_test
+		libcros_healthd_fetchers_test
+		libcros_healthd_utils_test
+		network_test
+		network_diagnostics_test
+		routine_test
+		system_config_test
+	)
+	if use wilco; then
+		tests+=(
+			wilco_dtc_supportd_test
+		)
+	fi
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/diagnostics/diagnostics-9999.ebuild b/chromeos-base/diagnostics/diagnostics-9999.ebuild
index e9c9af35..2d58ac9 100644
--- a/chromeos-base/diagnostics/diagnostics-9999.ebuild
+++ b/chromeos-base/diagnostics/diagnostics-9999.ebuild
@@ -37,6 +37,7 @@
 	${COMMON_DEPEND}
 	chromeos-base/debugd-client:=
 	chromeos-base/system_api:=[fuzzer?]
+	media-sound/adhd:=
 "
 
 # TODO(crbug/1085169): Replace sys-block/fio dependency with an alternative as
@@ -126,7 +127,6 @@
 	udev_dorules udev/99-chown_dmi_dir.rules
 
 	# Install fuzzers.
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/fetch_block_device_fuzzer
 	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/fetch_system_info_fuzzer
 }
 
diff --git a/chromeos-base/disk_updater/disk_updater-0.0.1-r3055.ebuild b/chromeos-base/disk_updater/disk_updater-0.0.1-r3055.ebuild
deleted file mode 100644
index 4d75d38..0000000
--- a/chromeos-base/disk_updater/disk_updater-0.0.1-r3055.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "a84edaa470edc69e27335f718e4784a8fcc883f9" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk disk_updater .gn"
-
-PLATFORM_SUBDIR="disk_updater"
-
-inherit cros-workon platform
-
-DESCRIPTION="Root disk firmware updater"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/disk_updater/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+sata mmc nvme"
-
-DEPEND=""
-
-RDEPEND="${DEPEND}
-	chromeos-base/chromeos-common-script
-	sata? ( sys-apps/hdparm )
-	mmc? ( sys-apps/mmc-utils )
-	nvme? ( sys-apps/nvme-cli )"
-
-platform_pkg_test() {
-	# We can test all, even if mmc or nvme are not installed.
-	local tests=( 'ata' 'mmc' 'nvme')
-
-	local test_type
-	for test_type in "${tests[@]}"; do
-		platform_test "run" "tests/chromeos-disk-firmware-${test_type}-test.sh"
-	done
-}
-
-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-0.0.1-r3081.ebuild b/chromeos-base/disk_updater/disk_updater-0.0.1-r3081.ebuild
new file mode 100644
index 0000000..7b46754
--- /dev/null
+++ b/chromeos-base/disk_updater/disk_updater-0.0.1-r3081.ebuild
@@ -0,0 +1,48 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a84edaa470edc69e27335f718e4784a8fcc883f9" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk disk_updater .gn"
+
+PLATFORM_SUBDIR="disk_updater"
+
+inherit cros-workon platform
+
+DESCRIPTION="Root disk firmware updater"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/disk_updater/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+sata mmc nvme"
+
+DEPEND=""
+
+RDEPEND="${DEPEND}
+	chromeos-base/chromeos-common-script
+	dev-util/shflags
+	sata? ( sys-apps/hdparm )
+	mmc? ( sys-apps/mmc-utils )
+	nvme? ( sys-apps/nvme-cli )"
+
+platform_pkg_test() {
+	# We can test all, even if mmc or nvme are not installed.
+	local tests=( 'ata' 'mmc' 'nvme')
+
+	local test_type
+	for test_type in "${tests[@]}"; do
+		platform_test "run" "tests/chromeos-disk-firmware-${test_type}-test.sh"
+	done
+}
+
+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 a3d227d..0caa413 100644
--- a/chromeos-base/disk_updater/disk_updater-9999.ebuild
+++ b/chromeos-base/disk_updater/disk_updater-9999.ebuild
@@ -23,6 +23,7 @@
 
 RDEPEND="${DEPEND}
 	chromeos-base/chromeos-common-script
+	dev-util/shflags
 	sata? ( sys-apps/hdparm )
 	mmc? ( sys-apps/mmc-utils )
 	nvme? ( sys-apps/nvme-cli )"
diff --git a/chromeos-base/dlcservice-client/dlcservice-client-0.0.1-r403.ebuild b/chromeos-base/dlcservice-client/dlcservice-client-0.0.1-r403.ebuild
deleted file mode 100644
index 4c27baf..0000000
--- a/chromeos-base/dlcservice-client/dlcservice-client-0.0.1-r403.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="0cc18569fb95eb88ea2fc495d1891c9f1c90af3b"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "3c5d846076bd47c52c409ba0132a36304e48a2b0" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk dlcservice .gn"
-
-PLATFORM_SUBDIR="dlcservice/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="DlcService D-Bus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice/client"
-
-LICENSE="BSD-Google"
-SLOT="0"
-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.
-DEPEND="
-	chromeos-base/chromeos-dbus-bindings
-"
-
-src_install() {
-	# Install DBus client library.
-	platform_install_dbus_client_lib "dlcservice"
-}
diff --git a/chromeos-base/dlcservice-client/dlcservice-client-0.0.1-r450.ebuild b/chromeos-base/dlcservice-client/dlcservice-client-0.0.1-r450.ebuild
new file mode 100644
index 0000000..581d09a
--- /dev/null
+++ b/chromeos-base/dlcservice-client/dlcservice-client-0.0.1-r450.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e0da5eb8dbe45cc4e72a44ebaca7260e14bc4d22" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk dlcservice .gn"
+
+PLATFORM_SUBDIR="dlcservice/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="DlcService D-Bus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice/client"
+
+LICENSE="BSD-Google"
+SLOT="0"
+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.
+DEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+src_install() {
+	# Install DBus client library.
+	platform_install_dbus_client_lib "dlcservice"
+}
diff --git a/chromeos-base/dlcservice/dlcservice-0.0.1-r493.ebuild b/chromeos-base/dlcservice/dlcservice-0.0.1-r493.ebuild
deleted file mode 100644
index 1cbf676..0000000
--- a/chromeos-base/dlcservice/dlcservice-0.0.1-r493.ebuild
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "3c5d846076bd47c52c409ba0132a36304e48a2b0" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(crbug.com/809389): Avoid #include-ing platform2 headers directly.
-CROS_WORKON_SUBTREE="common-mk dlcservice metrics .gn"
-
-PLATFORM_SUBDIR="dlcservice"
-
-inherit cros-workon platform user
-
-DESCRIPTION="A D-Bus service for Downloadable Content (DLC)"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="fuzzer"
-
-RDEPEND="
-	chromeos-base/imageloader:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/protobuf:="
-
-DEPEND="${RDEPEND}
-	chromeos-base/dlcservice-client:=
-	chromeos-base/imageloader-client:=
-	chromeos-base/system_api:=[fuzzer?]
-	chromeos-base/session_manager-client:=
-	chromeos-base/update_engine-client:="
-
-src_install() {
-	dosbin "${OUT}/dlcservice"
-	# Technically we don't need the dlcservice_util in rootfs, but the QA team
-	# will need this to test with sample-dlc.
-	dobin "${OUT}/dlcservice_util"
-
-	# Seccomp policy files.
-	insinto /usr/share/policy
-	newins seccomp/dlcservice-seccomp-${ARCH}.policy \
-		dlcservice-seccomp.policy
-
-	# Upstart configuration
-	insinto /etc/init
-	doins dlcservice.conf
-
-	# D-Bus configuration
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.DlcService.conf
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/dlcservice_boot_device_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/dlcservice_boot_slot_fuzzer
-
-	into /usr/local
-	dobin "${S}/tools/dlctool"
-}
-
-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() {
-	enewuser "dlcservice"
-	enewgroup "dlcservice"
-}
diff --git a/chromeos-base/dlcservice/dlcservice-0.0.1-r574.ebuild b/chromeos-base/dlcservice/dlcservice-0.0.1-r574.ebuild
new file mode 100644
index 0000000..4f5ef5e
--- /dev/null
+++ b/chromeos-base/dlcservice/dlcservice-0.0.1-r574.ebuild
@@ -0,0 +1,73 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e0da5eb8dbe45cc4e72a44ebaca7260e14bc4d22" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug.com/809389): Avoid #include-ing platform2 headers directly.
+CROS_WORKON_SUBTREE="common-mk dlcservice metrics .gn"
+
+PLATFORM_SUBDIR="dlcservice"
+
+inherit cros-workon platform user
+
+DESCRIPTION="A D-Bus service for Downloadable Content (DLC)"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="fuzzer"
+
+RDEPEND="
+	chromeos-base/imageloader:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/protobuf:="
+
+DEPEND="${RDEPEND}
+	chromeos-base/dlcservice-client:=
+	chromeos-base/imageloader-client:=
+	chromeos-base/system_api:=[fuzzer?]
+	chromeos-base/session_manager-client:=
+	chromeos-base/update_engine-client:="
+
+src_install() {
+	dosbin "${OUT}/dlcservice"
+	# Technically we don't need the dlcservice_util in rootfs, but the QA team
+	# will need this to test with sample-dlc.
+	dobin "${OUT}/dlcservice_util"
+
+	# Seccomp policy files.
+	insinto /usr/share/policy
+	newins seccomp/dlcservice-seccomp-${ARCH}.policy \
+		dlcservice-seccomp.policy
+
+	# Upstart configuration
+	insinto /etc/init
+	doins dlcservice.conf
+
+	# D-Bus configuration
+	insinto /etc/dbus-1/system.d
+	doins org.chromium.DlcService.conf
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/dlcservice_boot_device_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/dlcservice_boot_slot_fuzzer
+
+	into /usr/local
+	dobin "${S}/tools/dlctool"
+}
+
+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() {
+	enewuser "dlcservice"
+	enewgroup "dlcservice"
+}
diff --git a/chromeos-base/dlp/OWNERS b/chromeos-base/dlp/OWNERS
new file mode 100644
index 0000000..bb766c6
--- /dev/null
+++ b/chromeos-base/dlp/OWNERS
@@ -0,0 +1,2 @@
+ayaelattar@chromium.org
+poromov@chromium.org
diff --git a/chromeos-base/dlp/dlp-0.0.1-r32.ebuild b/chromeos-base/dlp/dlp-0.0.1-r32.ebuild
new file mode 100644
index 0000000..28fd402
--- /dev/null
+++ b/chromeos-base/dlp/dlp-0.0.1-r32.ebuild
@@ -0,0 +1,65 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="1560ad57ea9147d2e7444dc95d453d89be6a74b5"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a85255af9133dcdacc994706bf7f95bf246eb918" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk dlp .gn"
+
+PLATFORM_SUBDIR="dlp"
+
+inherit cros-workon libchrome platform user
+
+DESCRIPTION="A daemon that provides support for Data Leak Prevention restrictions for file accesses."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/dlp/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	chromeos-base/minijail:=
+	!dev-db/leveldb
+	dev-libs/leveldb:=
+	dev-libs/protobuf:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	sys-apps/dbus:=
+"
+
+src_install() {
+	dosbin "${OUT}"/dlp
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Dlp.conf
+
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.Dlp.service
+
+	insinto /etc/init
+	doins init/dlp.conf
+
+	local daemon_store="/etc/daemon-store/dlp"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners dlp:dlp "${daemon_store}"
+}
+
+platform_pkg_test() {
+	local gtest_filter_user_tests="-*.RunAsRoot*:"
+	local gtest_filter_root_tests="*.RunAsRoot*-"
+
+	platform_test "run" "${OUT}/dlp_test" "0" "${gtest_filter_user_tests}"
+	platform_test "run" "${OUT}/dlp_test" "1" "${gtest_filter_root_tests}"
+}
+
+pkg_setup() {
+	enewuser "dlp"
+	enewgroup "dlp"
+	cros-workon_pkg_setup
+}
diff --git a/chromeos-base/dlp/dlp-9999.ebuild b/chromeos-base/dlp/dlp-9999.ebuild
new file mode 100644
index 0000000..73a17e9
--- /dev/null
+++ b/chromeos-base/dlp/dlp-9999.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk dlp .gn"
+
+PLATFORM_SUBDIR="dlp"
+
+inherit cros-workon libchrome platform user
+
+DESCRIPTION="A daemon that provides support for Data Leak Prevention restrictions for file accesses."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/dlp/"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+
+COMMON_DEPEND="
+	chromeos-base/minijail:=
+	!dev-db/leveldb
+	dev-libs/leveldb:=
+	dev-libs/protobuf:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	sys-apps/dbus:=
+"
+
+src_install() {
+	dosbin "${OUT}"/dlp
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Dlp.conf
+
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.Dlp.service
+
+	insinto /etc/init
+	doins init/dlp.conf
+
+	local daemon_store="/etc/daemon-store/dlp"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners dlp:dlp "${daemon_store}"
+}
+
+platform_pkg_test() {
+	local gtest_filter_user_tests="-*.RunAsRoot*:"
+	local gtest_filter_root_tests="*.RunAsRoot*-"
+
+	platform_test "run" "${OUT}/dlp_test" "0" "${gtest_filter_user_tests}"
+	platform_test "run" "${OUT}/dlp_test" "1" "${gtest_filter_root_tests}"
+}
+
+pkg_setup() {
+	enewuser "dlp"
+	enewgroup "dlp"
+	cros-workon_pkg_setup
+}
diff --git a/chromeos-base/dns-proxy/OWNERS b/chromeos-base/dns-proxy/OWNERS
new file mode 100644
index 0000000..dca5898
--- /dev/null
+++ b/chromeos-base/dns-proxy/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/dns-proxy/OWNERS
diff --git a/chromeos-base/dns-proxy/dns-proxy-0.0.1-r71.ebuild b/chromeos-base/dns-proxy/dns-proxy-0.0.1-r71.ebuild
new file mode 100644
index 0000000..c1fa323
--- /dev/null
+++ b/chromeos-base/dns-proxy/dns-proxy-0.0.1-r71.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "6a93087f6ddb4402b72ae9b5f4f7da5535f33c7e" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "0589da423746e4e20fe7e50f7a19e2ac46e715a8" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 .gn"
+
+PLATFORM_SUBDIR="dns-proxy"
+
+inherit cros-workon platform user
+
+DESCRIPTION="A daemon that provides DNS proxying services."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/dns-proxy/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	chromeos-base/metrics:=
+	chromeos-base/minijail:=
+	chromeos-base/patchpanel:=
+	chromeos-base/patchpanel-client:=
+	chromeos-base/shill-dbus-client:=
+	dev-libs/protobuf:=
+	dev-libs/dbus-glib:=
+	sys-apps/dbus:=
+	net-misc/curl:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/permission_broker-client:=
+"
+
+pkg_preinst() {
+	enewuser "dns-proxy"
+	enewgroup "dns-proxy"
+}
+
+src_install() {
+	dosbin "${OUT}"/dnsproxyd
+
+	insinto /etc/init
+	doins init/dns-proxy.conf
+
+	insinto /usr/share/policy
+	newins seccomp/dns-proxy-seccomp-"${ARCH}".policy dns-proxy-seccomp.policy
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/ares_client_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/doh_curl_client_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/resolver_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/dns-proxy_test"
+}
diff --git a/chromeos-base/dns-proxy/dns-proxy-9999.ebuild b/chromeos-base/dns-proxy/dns-proxy-9999.ebuild
new file mode 100644
index 0000000..00e059e
--- /dev/null
+++ b/chromeos-base/dns-proxy/dns-proxy-9999.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk dns-proxy metrics shill/dbus/client .gn"
+
+PLATFORM_SUBDIR="dns-proxy"
+
+inherit cros-workon platform user
+
+DESCRIPTION="A daemon that provides DNS proxying services."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/dns-proxy/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="~*"
+
+COMMON_DEPEND="
+	chromeos-base/metrics:=
+	chromeos-base/minijail:=
+	chromeos-base/patchpanel:=
+	chromeos-base/patchpanel-client:=
+	chromeos-base/shill-dbus-client:=
+	dev-libs/protobuf:=
+	dev-libs/dbus-glib:=
+	sys-apps/dbus:=
+	net-misc/curl:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/permission_broker-client:=
+"
+
+pkg_preinst() {
+	enewuser "dns-proxy"
+	enewgroup "dns-proxy"
+}
+
+src_install() {
+	dosbin "${OUT}"/dnsproxyd
+
+	insinto /etc/init
+	doins init/dns-proxy.conf
+
+	insinto /usr/share/policy
+	newins seccomp/dns-proxy-seccomp-"${ARCH}".policy dns-proxy-seccomp.policy
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/ares_client_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/doh_curl_client_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/resolver_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/dns-proxy_test"
+}
diff --git a/chromeos-base/drm-tests/drm-tests-0.0.1-r179.ebuild b/chromeos-base/drm-tests/drm-tests-0.0.1-r179.ebuild
deleted file mode 100644
index b345ec2..0000000
--- a/chromeos-base/drm-tests/drm-tests-0.0.1-r179.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="032a955025009c7cf7726a87b67ec544a8efb46c"
-CROS_WORKON_TREE="b0b4e2ecd58e285d228e46eebb54bc1aadae79ba"
-CROS_WORKON_PROJECT="chromiumos/platform/drm-tests"
-
-inherit cros-sanitizers cros-workon toolchain-funcs
-
-DESCRIPTION="Chrome OS DRM Tests"
-
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/drm-tests/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="vulkan"
-
-RDEPEND="virtual/opengles
-	|| ( media-libs/mesa[gbm] media-libs/minigbm )
-	media-libs/libsync
-	vulkan? (
-		media-libs/vulkan-loader
-		virtual/vulkan-icd
-	)"
-DEPEND="${RDEPEND}
-	x11-drivers/opengles-headers"
-
-src_configure() {
-	sanitizers-setup-env
-	default
-}
-
-src_compile() {
-	tc-export CC
-	emake USE_VULKAN="$(usex vulkan 1 0)"
-}
-
-src_install() {
-	cd build-opt-local || return
-	dobin atomictest drm_cursor_test dmabuf_test gamma_test linear_bo_test \
-	mapped_texture_test mmap_test null_platform_test plane_test \
-	synctest swrast_test udmabuf_create_test
-
-	if use vulkan; then
-		dobin vk_glow
-	fi
-}
diff --git a/chromeos-base/drm-tests/drm-tests-0.0.1-r212.ebuild b/chromeos-base/drm-tests/drm-tests-0.0.1-r212.ebuild
new file mode 100644
index 0000000..4fd5d87
--- /dev/null
+++ b/chromeos-base/drm-tests/drm-tests-0.0.1-r212.ebuild
@@ -0,0 +1,61 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="9c0f5917f0143bfc7a417833ceac2864f1b2c2ab"
+CROS_WORKON_TREE="9a8e6ab4c6d0c8ba694c15ce3b52b0e45c78e382"
+CROS_WORKON_PROJECT="chromiumos/platform/drm-tests"
+
+inherit cros-sanitizers cros-workon toolchain-funcs
+
+DESCRIPTION="Chrome OS DRM Tests"
+
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/drm-tests/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="vulkan"
+
+RDEPEND="virtual/opengles
+	|| ( media-libs/mesa[gbm] media-libs/minigbm )
+	media-libs/libsync
+	vulkan? (
+		media-libs/vulkan-loader
+		virtual/vulkan-icd
+	)"
+DEPEND="${RDEPEND}
+	x11-drivers/opengles-headers"
+
+src_configure() {
+	sanitizers-setup-env
+	default
+}
+
+src_compile() {
+	tc-export CC
+	emake USE_VULKAN="$(usex vulkan 1 0)"
+}
+
+src_install() {
+	cd build-opt-local || return
+	dobin atomictest \
+		drm_cursor_test \
+		dmabuf_test \
+		gamma_test \
+		linear_bo_test \
+		mapped_access_perf_test \
+		mapped_texture_test \
+		mmap_test \
+		null_platform_test \
+		plane_test \
+		synctest swrast_test \
+		v4l2_stateful_decoder \
+		v4l2_stateful_encoder \
+		udmabuf_create_test
+
+	if use vulkan; then
+		dobin vk_glow
+	fi
+}
diff --git a/chromeos-base/drm-tests/drm-tests-9999.ebuild b/chromeos-base/drm-tests/drm-tests-9999.ebuild
index 8004ee2..a0001b4 100644
--- a/chromeos-base/drm-tests/drm-tests-9999.ebuild
+++ b/chromeos-base/drm-tests/drm-tests-9999.ebuild
@@ -38,9 +38,20 @@
 
 src_install() {
 	cd build-opt-local || return
-	dobin atomictest drm_cursor_test dmabuf_test gamma_test linear_bo_test \
-	mapped_texture_test mmap_test null_platform_test plane_test \
-	synctest swrast_test udmabuf_create_test
+	dobin atomictest \
+		drm_cursor_test \
+		dmabuf_test \
+		gamma_test \
+		linear_bo_test \
+		mapped_access_perf_test \
+		mapped_texture_test \
+		mmap_test \
+		null_platform_test \
+		plane_test \
+		synctest swrast_test \
+		v4l2_stateful_decoder \
+		v4l2_stateful_encoder \
+		udmabuf_create_test
 
 	if use vulkan; then
 		dobin vk_glow
diff --git a/chromeos-base/easy-unlock/easy-unlock-0.0.1-r2955.ebuild b/chromeos-base/easy-unlock/easy-unlock-0.0.1-r2955.ebuild
deleted file mode 100644
index 1a179b3..0000000
--- a/chromeos-base/easy-unlock/easy-unlock-0.0.1-r2955.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "ef83a68e71f0fc4deac90a21a6a5e93412707ca8" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_USE_VCSID=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk easy-unlock .gn"
-
-PLATFORM_SUBDIR="easy-unlock"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Service for supporting Easy Unlock in Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/easy-unlock/"
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND="
-	chromeos-base/easy-unlock-crypto:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/system_api:=
-"
-
-pkg_preinst() {
-	enewuser easy-unlock
-	enewgroup easy-unlock
-}
-
-src_install() {
-	exeinto /opt/google/easy_unlock
-	doexe "${OUT}/easy_unlock"
-
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.EasyUnlock.conf
-
-	insinto /usr/share/dbus-1/system-services
-	doins org.chromium.EasyUnlock.service
-
-	insinto /etc/init
-	doins init/easy-unlock.conf
-
-	insinto /usr/share/dbus-1/interfaces
-	doins dbus_bindings/org.chromium.EasyUnlockInterface.xml
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/easy_unlock_test_runner"
-}
diff --git a/chromeos-base/easy-unlock/easy-unlock-0.0.1-r2982.ebuild b/chromeos-base/easy-unlock/easy-unlock-0.0.1-r2982.ebuild
new file mode 100644
index 0000000..cfc33c1
--- /dev/null
+++ b/chromeos-base/easy-unlock/easy-unlock-0.0.1-r2982.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "defc5f8c0627d2e120d6d81f092dd68ae4d5e440" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_USE_VCSID=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk easy-unlock .gn"
+
+PLATFORM_SUBDIR="easy-unlock"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Service for supporting Easy Unlock in Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/easy-unlock/"
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+COMMON_DEPEND="
+	chromeos-base/easy-unlock-crypto:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api:=
+"
+
+pkg_preinst() {
+	enewuser easy-unlock
+	enewgroup easy-unlock
+}
+
+src_install() {
+	exeinto /opt/google/easy_unlock
+	doexe "${OUT}/easy_unlock"
+
+	insinto /etc/dbus-1/system.d
+	doins org.chromium.EasyUnlock.conf
+
+	insinto /usr/share/dbus-1/system-services
+	doins org.chromium.EasyUnlock.service
+
+	insinto /etc/init
+	doins init/easy-unlock.conf
+
+	insinto /usr/share/dbus-1/interfaces
+	doins dbus_bindings/org.chromium.EasyUnlockInterface.xml
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/easy_unlock_test_runner"
+}
diff --git a/chromeos-base/ec-devutils/ec-devutils-0.0.2-r6964.ebuild b/chromeos-base/ec-devutils/ec-devutils-0.0.2-r6964.ebuild
deleted file mode 100644
index 3cd9240..0000000
--- a/chromeos-base/ec-devutils/ec-devutils-0.0.2-r6964.ebuild
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-CROS_WORKON_COMMIT="9e422c3c05fdd324565049b09be27c446f9dc0ca"
-CROS_WORKON_TREE="b4694ca5abc8c1be1000a1efe7a7bd8a02ddd856"
-CROS_WORKON_PROJECT="chromiumos/platform/ec"
-CROS_WORKON_LOCALNAME="platform/ec"
-PYTHON_COMPAT=( python2_7 python3_6 )
-
-inherit cros-workon distutils-r1
-
-DESCRIPTION="Host development utilities for Chromium OS EC"
-HOMEPAGE="https://www.chromium.org/chromium-os/ec-development"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="hammerd"
-
-DEPEND="virtual/libusb:1=
-	sys-apps/flashmap:=
-	"
-RDEPEND="
-	${DEPEND}
-	app-mobilephone/dfu-util
-	sys-firmware/servo-firmware
-	sys-apps/flashrom
-	!<chromeos-base/ec-utils-0.0.1-r6153
-	chromeos-base/ec-utils
-	>=dev-python/pyusb-1.0.2[${PYTHON_USEDEP}]
-	"
-BDEPEND="
-	dev-python/setuptools[${PYTHON_USEDEP}]
-	virtual/pkgconfig
-	"
-
-set_board() {
-	# No need to be board specific, no tools below build code that is
-	# EC specific. bds works for forst side compilation.
-	export BOARD="bds"
-}
-
-src_configure() {
-	distutils-r1_src_configure
-}
-
-src_compile() {
-	tc-export AR CC PKG_CONFIG RANLIB
-	# In platform/ec Makefile, it uses "CC" to specify target chipset and
-	# "HOSTCC" to compile the utility program because it assumes developers
-	# want to run the utility from same host (build machine).
-	# In this ebuild file, we only build utility
-	# and we may want to build it so it can
-	# be executed on target devices (i.e., arm/x86/amd64), not the build
-	# host (BUILDCC, amd64). So we need to override HOSTCC by target "CC".
-	export HOSTCC="${CC}"
-	set_board
-	emake utils-host
-	# Add usb_updater2 for servo or hammer updates.
-	emake -C extra/usb_updater usb_updater2
-	if use hammerd; then
-		# Add touchpad_updater for TP update on hammer.
-		emake -C extra/touchpad_updater touchpad_updater
-	fi
-	distutils-r1_src_compile
-}
-
-src_install() {
-	set_board
-	dobin "build/${BOARD}/util/stm32mon"
-	dobin "build/${BOARD}/util/ec_parse_panicinfo"
-	dobin "build/${BOARD}/util/uartupdatetool"
-	dobin "build/${BOARD}/util/iteflash"
-
-	# Add usb_updater2 for servo or hammer updates.
-	dosbin "extra/usb_updater/usb_updater2"
-	if use hammerd; then
-		# Add touchpad_updater for TP update on hammer.
-		newsbin "extra/touchpad_updater/touchpad_updater" ec_touchpad_updater
-	fi
-
-	dobin "util/flash_ec"
-	dobin "util/uart_stress_tester.py"
-	insinto /usr/share/ec-devutils
-	doins util/openocd/*
-
-	distutils-r1_src_install
-}
diff --git a/chromeos-base/ec-devutils/ec-devutils-0.0.2-r8243.ebuild b/chromeos-base/ec-devutils/ec-devutils-0.0.2-r8243.ebuild
new file mode 100644
index 0000000..2e26f2a
--- /dev/null
+++ b/chromeos-base/ec-devutils/ec-devutils-0.0.2-r8243.ebuild
@@ -0,0 +1,89 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+CROS_WORKON_COMMIT="ba5d0fb018cf200320efad9cc91b89e1f4a6d80c"
+CROS_WORKON_TREE="ef831ef09b8fdc0da7cceb25def086f853ae97cd"
+CROS_WORKON_PROJECT="chromiumos/platform/ec"
+CROS_WORKON_LOCALNAME="platform/ec"
+PYTHON_COMPAT=( python3_6 )
+
+inherit cros-workon distutils-r1
+
+DESCRIPTION="Host development utilities for Chromium OS EC"
+HOMEPAGE="https://www.chromium.org/chromium-os/ec-development"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="hammerd"
+
+DEPEND="virtual/libusb:1=
+	sys-apps/flashmap:=
+	"
+RDEPEND="
+	${DEPEND}
+	app-mobilephone/dfu-util
+	sys-firmware/servo-firmware
+	sys-apps/flashrom
+	!<chromeos-base/ec-utils-0.0.1-r6153
+	chromeos-base/ec-utils
+	>=dev-python/pyusb-1.0.2[${PYTHON_USEDEP}]
+	"
+BDEPEND="
+	dev-python/setuptools[${PYTHON_USEDEP}]
+	virtual/pkgconfig
+	"
+
+set_board() {
+	# No need to be board specific, no tools below build code that is
+	# EC specific. bds works for forst side compilation.
+	export BOARD="bds"
+}
+
+src_configure() {
+	distutils-r1_src_configure
+}
+
+src_compile() {
+	tc-export AR CC PKG_CONFIG RANLIB
+	# In platform/ec Makefile, it uses "CC" to specify target chipset and
+	# "HOSTCC" to compile the utility program because it assumes developers
+	# want to run the utility from same host (build machine).
+	# In this ebuild file, we only build utility
+	# and we may want to build it so it can
+	# be executed on target devices (i.e., arm/x86/amd64), not the build
+	# host (BUILDCC, amd64). So we need to override HOSTCC by target "CC".
+	export HOSTCC="${CC}"
+	set_board
+	emake utils-host
+	# Add usb_updater2 for servo or hammer updates.
+	emake -C extra/usb_updater usb_updater2
+	if use hammerd; then
+		# Add touchpad_updater for TP update on hammer.
+		emake -C extra/touchpad_updater touchpad_updater
+	fi
+	distutils-r1_src_compile
+}
+
+src_install() {
+	set_board
+	dobin "build/${BOARD}/util/stm32mon"
+	dobin "build/${BOARD}/util/ec_parse_panicinfo"
+	dobin "build/${BOARD}/util/uartupdatetool"
+	dobin "build/${BOARD}/util/iteflash"
+
+	# Add usb_updater2 for servo or hammer updates.
+	dosbin "extra/usb_updater/usb_updater2"
+	if use hammerd; then
+		# Add touchpad_updater for TP update on hammer.
+		newsbin "extra/touchpad_updater/touchpad_updater" ec_touchpad_updater
+	fi
+
+	dobin "util/flash_ec"
+	dobin "util/uart_stress_tester.py"
+	insinto /usr/share/ec-devutils
+	doins util/openocd/*
+
+	distutils-r1_src_install
+}
diff --git a/chromeos-base/ec-devutils/ec-devutils-9999.ebuild b/chromeos-base/ec-devutils/ec-devutils-9999.ebuild
index b300e41..08c1021 100644
--- a/chromeos-base/ec-devutils/ec-devutils-9999.ebuild
+++ b/chromeos-base/ec-devutils/ec-devutils-9999.ebuild
@@ -4,7 +4,7 @@
 EAPI="7"
 CROS_WORKON_PROJECT="chromiumos/platform/ec"
 CROS_WORKON_LOCALNAME="platform/ec"
-PYTHON_COMPAT=( python2_7 python3_6 )
+PYTHON_COMPAT=( python3_6 )
 
 inherit cros-workon distutils-r1
 
diff --git a/chromeos-base/ec-utils-test/ec-utils-test-0.0.1-r6068.ebuild b/chromeos-base/ec-utils-test/ec-utils-test-0.0.1-r6068.ebuild
deleted file mode 100644
index 4b24b27..0000000
--- a/chromeos-base/ec-utils-test/ec-utils-test-0.0.1-r6068.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="9e422c3c05fdd324565049b09be27c446f9dc0ca"
-CROS_WORKON_TREE="b4694ca5abc8c1be1000a1efe7a7bd8a02ddd856"
-CROS_WORKON_PROJECT="chromiumos/platform/ec"
-CROS_WORKON_LOCALNAME="platform/ec"
-CROS_WORKON_INCREMENTAL_BUILD=1
-
-inherit cros-workon
-
-DESCRIPTION="Chrome OS EC Utility Helper"
-
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="biod -cr50_onboard"
-
-RDEPEND="chromeos-base/ec-utils
-	biod? ( dev-util/shflags )"
-
-src_compile() {
-	tc-export CC
-
-	if use cr50_onboard; then
-		emake -C extra/rma_reset
-	fi
-}
-
-src_install() {
-	dobin "util/battery_temp"
-	dosbin "util/inject-keys.py"
-
-	if use cr50_onboard; then
-		dobin "extra/rma_reset/rma_reset"
-	fi
-
-	if use biod; then
-		einfo "Installing flash_fp_mcu"
-		dobin "util/flash_fp_mcu"
-	fi
-}
diff --git a/chromeos-base/ec-utils-test/ec-utils-test-0.0.1-r7347.ebuild b/chromeos-base/ec-utils-test/ec-utils-test-0.0.1-r7347.ebuild
new file mode 100644
index 0000000..6c3e84c
--- /dev/null
+++ b/chromeos-base/ec-utils-test/ec-utils-test-0.0.1-r7347.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="ba5d0fb018cf200320efad9cc91b89e1f4a6d80c"
+CROS_WORKON_TREE="ef831ef09b8fdc0da7cceb25def086f853ae97cd"
+CROS_WORKON_PROJECT="chromiumos/platform/ec"
+CROS_WORKON_LOCALNAME="platform/ec"
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+inherit cros-workon
+
+DESCRIPTION="Chrome OS EC Utility Helper"
+
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="biod -cr50_onboard"
+
+# flash_fp_mcu depends on stm32mon (ec-devutils)
+RDEPEND="
+	chromeos-base/ec-utils
+	biod? (
+		chromeos-base/ec-devutils
+		dev-util/shflags
+	      )
+"
+
+src_compile() {
+	tc-export CC
+
+	if use cr50_onboard; then
+		emake -C extra/rma_reset
+	fi
+}
+
+src_install() {
+	dobin "util/battery_temp"
+	dosbin "util/inject-keys.py"
+
+	if use cr50_onboard; then
+		dobin "extra/rma_reset/rma_reset"
+	fi
+
+	if use biod; then
+		einfo "Installing flash_fp_mcu"
+		dobin "util/flash_fp_mcu"
+	fi
+}
diff --git a/chromeos-base/ec-utils-test/ec-utils-test-9999.ebuild b/chromeos-base/ec-utils-test/ec-utils-test-9999.ebuild
index b537eaa..1b79c93 100644
--- a/chromeos-base/ec-utils-test/ec-utils-test-9999.ebuild
+++ b/chromeos-base/ec-utils-test/ec-utils-test-9999.ebuild
@@ -18,8 +18,14 @@
 KEYWORDS="~*"
 IUSE="biod -cr50_onboard"
 
-RDEPEND="chromeos-base/ec-utils
-	biod? ( dev-util/shflags )"
+# flash_fp_mcu depends on stm32mon (ec-devutils)
+RDEPEND="
+	chromeos-base/ec-utils
+	biod? (
+		chromeos-base/ec-devutils
+		dev-util/shflags
+	      )
+"
 
 src_compile() {
 	tc-export CC
diff --git a/chromeos-base/ec-utils/ec-utils-0.0.2-r10177.ebuild b/chromeos-base/ec-utils/ec-utils-0.0.2-r10177.ebuild
new file mode 100644
index 0000000..673a94f
--- /dev/null
+++ b/chromeos-base/ec-utils/ec-utils-0.0.2-r10177.ebuild
@@ -0,0 +1,73 @@
+# Copyright 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="ba5d0fb018cf200320efad9cc91b89e1f4a6d80c"
+CROS_WORKON_TREE="ef831ef09b8fdc0da7cceb25def086f853ae97cd"
+CROS_WORKON_PROJECT="chromiumos/platform/ec"
+CROS_WORKON_LOCALNAME="platform/ec"
+
+inherit cros-workon user
+
+DESCRIPTION="Chrome OS EC Utility"
+
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="static -updater_utils"
+IUSE="${IUSE} cros_host +cros_ec_utils"
+
+COMMON_DEPEND="dev-embedded/libftdi:=
+	dev-libs/openssl:0=
+	sys-libs/zlib:=
+	virtual/libusb:1="
+DEPEND="${COMMON_DEPEND}"
+RDEPEND="${COMMON_DEPEND}"
+
+pkg_preinst() {
+	enewgroup "dialout"
+}
+
+src_compile_cros_ec_utils() {
+	BOARD=host emake utils-host CC="${CC}"
+}
+
+src_compile() {
+	tc-export AR CC PKG_CONFIG RANLIB
+	# In platform/ec Makefile, it uses "CC" to specify target chipset and
+	# "HOSTCC" to compile the utility program because it assumes developers
+	# want to run the utility from same host (build machine).
+	# In this ebuild file, we only build utility
+	# and we may want to build it so it can
+	# be executed on target devices (i.e., arm/x86/amd64), not the build
+	# host (BUILDCC, amd64). So we need to override HOSTCC by target "CC".
+	export HOSTCC="${CC} $(usex static '-static' '')"
+
+	# Build Chromium EC utilities.
+	use cros_ec_utils && src_compile_cros_ec_utils
+}
+
+src_install_cros_ec_utils() {
+	if use cros_host; then
+		dobin "build/host/util/cbi-util"
+	else
+		dosbin "build/host/util/ectool"
+		dosbin "build/host/util/ec_parse_panicinfo"
+		dosbin "build/host/util/ec_sb_firmware_update"
+	fi
+}
+
+src_install() {
+	# Install Chromium EC utilities.
+	use cros_ec_utils && src_install_cros_ec_utils
+}
+
+pkg_postinst() {
+	if ! $(id -Gn "$(logname)" | grep -qw "dialout") ; then
+		usermod -a -G "dialout" "$(logname)"
+		einfo "A new group, dialout is added." \
+			"Please re-login to apply this change."
+	fi
+}
diff --git a/chromeos-base/ec-utils/ec-utils-0.0.2-r8897.ebuild b/chromeos-base/ec-utils/ec-utils-0.0.2-r8897.ebuild
deleted file mode 100644
index 06cd3f9..0000000
--- a/chromeos-base/ec-utils/ec-utils-0.0.2-r8897.ebuild
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="9e422c3c05fdd324565049b09be27c446f9dc0ca"
-CROS_WORKON_TREE="b4694ca5abc8c1be1000a1efe7a7bd8a02ddd856"
-CROS_WORKON_PROJECT="chromiumos/platform/ec"
-CROS_WORKON_LOCALNAME="platform/ec"
-
-inherit cros-workon user
-
-DESCRIPTION="Chrome OS EC Utility"
-
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="static -updater_utils"
-IUSE="${IUSE} cros_host +cros_ec_utils"
-
-COMMON_DEPEND="dev-embedded/libftdi:=
-	dev-libs/openssl:0=
-	virtual/libusb:1="
-DEPEND="${COMMON_DEPEND}"
-RDEPEND="${COMMON_DEPEND}"
-
-pkg_preinst() {
-	enewgroup "dialout"
-}
-
-src_compile_cros_ec_utils() {
-	BOARD=host emake utils-host
-}
-
-src_compile() {
-	tc-export AR CC PKG_CONFIG RANLIB
-	# In platform/ec Makefile, it uses "CC" to specify target chipset and
-	# "HOSTCC" to compile the utility program because it assumes developers
-	# want to run the utility from same host (build machine).
-	# In this ebuild file, we only build utility
-	# and we may want to build it so it can
-	# be executed on target devices (i.e., arm/x86/amd64), not the build
-	# host (BUILDCC, amd64). So we need to override HOSTCC by target "CC".
-	export HOSTCC="${CC} $(usex static '-static' '')"
-
-	# Build Chromium EC utilities.
-	use cros_ec_utils && src_compile_cros_ec_utils
-}
-
-src_install_cros_ec_utils() {
-	if use cros_host; then
-		dobin "build/host/util/cbi-util"
-	else
-		dosbin "build/host/util/ectool"
-		dosbin "build/host/util/ec_parse_panicinfo"
-		dosbin "build/host/util/ec_sb_firmware_update"
-	fi
-}
-
-src_install() {
-	# Install Chromium EC utilities.
-	use cros_ec_utils && src_install_cros_ec_utils
-}
-
-pkg_postinst() {
-	if ! $(id -Gn "$(logname)" | grep -qw "dialout") ; then
-		usermod -a -G "dialout" "$(logname)"
-		einfo "A new group, dialout is added." \
-			"Please re-login to apply this change."
-	fi
-}
diff --git a/chromeos-base/ec-utils/ec-utils-9999.ebuild b/chromeos-base/ec-utils/ec-utils-9999.ebuild
index 1396532..1c9fdd0 100644
--- a/chromeos-base/ec-utils/ec-utils-9999.ebuild
+++ b/chromeos-base/ec-utils/ec-utils-9999.ebuild
@@ -19,6 +19,7 @@
 
 COMMON_DEPEND="dev-embedded/libftdi:=
 	dev-libs/openssl:0=
+	sys-libs/zlib:=
 	virtual/libusb:1="
 DEPEND="${COMMON_DEPEND}"
 RDEPEND="${COMMON_DEPEND}"
@@ -28,7 +29,7 @@
 }
 
 src_compile_cros_ec_utils() {
-	BOARD=host emake utils-host
+	BOARD=host emake utils-host CC="${CC}"
 }
 
 src_compile() {
diff --git a/chromeos-base/elan_i2chid_tools/OWNERS b/chromeos-base/elan_i2chid_tools/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/elan_i2chid_tools/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/elan_i2chid_tools/elan_i2chid_tools-1.12-r11.ebuild b/chromeos-base/elan_i2chid_tools/elan_i2chid_tools-1.12-r11.ebuild
new file mode 100644
index 0000000..238670f
--- /dev/null
+++ b/chromeos-base/elan_i2chid_tools/elan_i2chid_tools-1.12-r11.ebuild
@@ -0,0 +1,27 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+inherit toolchain-funcs
+
+DESCRIPTION="Elan Touchscreen I2C-HID Tools for Firmware Update"
+HOMEPAGE="https://github.com/PaulLiang01043/elan_i2chid_tools"
+SRC_URI="http://storage.googleapis.com/chromeos-localmirror/distfiles/elan_i2chid_tools-${PV}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+src_configure() {
+	tc-export CC
+}
+
+src_install() {
+	newsbin i2chid_read_fwid/bin/i2chid_read_fwid elan_i2chid_read_fwid
+	newsbin i2chid_iap_v2/bin/i2chid_iap_v2 elan_i2chid_iap
+
+	insinto /usr/share/${PN}
+	doins "${FILESDIR}"/fwid_mapping_table.txt
+}
diff --git a/chromeos-base/elan_i2chid_tools/elan_i2chid_tools-1.12-r7.ebuild b/chromeos-base/elan_i2chid_tools/elan_i2chid_tools-1.12-r7.ebuild
deleted file mode 100644
index 1b82983..0000000
--- a/chromeos-base/elan_i2chid_tools/elan_i2chid_tools-1.12-r7.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit toolchain-funcs
-
-DESCRIPTION="Elan Touchscreen I2C-HID Tools for Firmware Update"
-HOMEPAGE="https://github.com/PaulLiang01043/elan_i2chid_tools"
-SRC_URI="http://storage.googleapis.com/chromeos-localmirror/distfiles/elan_i2chid_tools-${PV}.tar.gz"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-src_configure() {
-	tc-export CC
-}
-
-src_install() {
-	newsbin i2chid_read_fwid/bin/i2chid_read_fwid elan_i2chid_read_fwid
-	newsbin i2chid_iap_v2/bin/i2chid_iap_v2 elan_i2chid_iap
-
-	insinto /usr/share/${PN}
-	doins "${FILESDIR}"/fwid_mapping_table.txt
-}
-
diff --git a/chromeos-base/elan_i2chid_tools/files/fwid_mapping_table.txt b/chromeos-base/elan_i2chid_tools/files/fwid_mapping_table.txt
index 7fd545b..7c5116b 100644
--- a/chromeos-base/elan_i2chid_tools/files/fwid_mapping_table.txt
+++ b/chromeos-base/elan_i2chid_tools/files/fwid_mapping_table.txt
@@ -1,15 +1,20 @@
 manufacturer.product,chrome_fwid,windows_fwid,
+04f3.2ca6,33f3,,
+06af.8fa4,3572,,
 06af.3d24,32e0,2e38,
 06af.3d31,2fca,2e36,
+06af.3d32,,,
 06af.3d40,1fa5,,
 06af.5c61,,,
 06af.8b81,,,
+09e5.b109,3573,,
 09e5.2d08,1fa6,,
 09e5.6609,,,
 09e5.7e08,328f,328d,
 09e5.da08,,,
 09e5.bc08,1f6a,,
 09e5.fa08,1eb9,,
+0dae.0214,3558,,
 0dae.0614,,,
 0dae.e814,32e4,2e3e,
 0dae.e914,30e4,2e3e,
diff --git a/chromeos-base/emright_fw_updater/OWNERS b/chromeos-base/emright_fw_updater/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/emright_fw_updater/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/epstps2iap/OWNERS b/chromeos-base/epstps2iap/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/epstps2iap/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/factory-mini/factory-mini-0.0.1-r2037.ebuild b/chromeos-base/factory-mini/factory-mini-0.0.1-r2037.ebuild
deleted file mode 100644
index a5021f3..0000000
--- a/chromeos-base/factory-mini/factory-mini-0.0.1-r2037.ebuild
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright 2014 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.
-
-# factory-mini is a subset of the factory software that can
-# be used to run utilities like gooftool, hwid, and regcode, which may
-# be useful in the CrOS test environment.  For instance, this would
-# allow "gooftool probe" to be used to probe hardware components in
-# Moblab.
-#
-# We don't want to install the entire chromeos-factory package in the
-# test image, since it is quite large, so this package comprises a
-# small ".par" file (/usr/local/factory-mini/factory-mini.par)
-# containing the necessary subset of factory Python code, and symlinks
-# from /usr/local/bin to that file.
-
-EAPI=7
-CROS_WORKON_COMMIT="4110e6bb8e970fd645dd1caa63783858b428e98a"
-CROS_WORKON_TREE="d971542dd40752467b234475febda9011d37afbc"
-CROS_WORKON_PROJECT="chromiumos/platform/factory"
-CROS_WORKON_LOCALNAME="platform/factory"
-PYTHON_COMPAT=( python3_{4,5,6,7} )
-
-inherit cros-workon python-r1
-
-# TODO(b/155841952): Merge installer and factory-mini.par
-
-# External dependencies (sync with factory.ebuild)
-LOCAL_MIRROR_URL="http://commondatastorage.googleapis.com/chromeos-localmirror/"
-WEBGL_AQUARIUM_URI="${LOCAL_MIRROR_URL}/distfiles/webgl-aquarium-20130524.tar.bz2"
-SRC_URI="${WEBGL_AQUARIUM_URI}"
-
-DESCRIPTION="Subset of factory software to be installed in test images"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="${PYTHON_DEPS}
-	dev-python/jsonrpclib:=
-	dev-python/pyyaml:=
-	dev-python/protobuf-python:=
-	virtual/chromeos-bsp-factory:=
-	virtual/chromeos-regions:=
-"
-
-pkg_setup() {
-	cros-workon_pkg_setup
-	python_setup
-}
-
-src_unpack() {
-	cros-workon_src_unpack
-	default
-}
-
-src_configure() {
-	default
-
-	# Export build settings
-	export PYTHON="${EPYTHON}"
-	export PYTHON_SITEDIR="${ESYSROOT}$(python_get_sitedir)"
-	export SRCROOT="${CROS_WORKON_SRCROOT}"
-	export FROM_EBUILD=1
-
-	# Export factory toolkit build settings
-	export BOARD="${SYSROOT##*/}"
-	export TARGET_DIR=/usr/local/factory
-	export WEBGL_AQUARIUM_DIR="${WORKDIR}/webgl_aquarium_static"
-}
-
-src_compile() {
-	emake par MAKE_PAR_ARGS=--mini PAR_NAME=factory-mini.par
-
-	emake toolkit
-}
-
-src_install() {
-	exeinto /usr/local/factory-mini
-	doexe build/par/factory-mini.par
-
-	# Sanity check: make sure we can run gooftool --help with only
-	# the -mini.par file.
-	build/par/factory-mini.par gooftool --help |
-		grep -q "^usage: gooftool" || die
-
-	# Install only symlinks for binaries usable with factory-mini.par.
-	"${S}/bin/install_symlinks" \
-		--mode mini --target ../factory-mini/factory-mini.par \
-		"${D}"/usr/local/bin || die
-
-	exeinto /usr/local/factory-toolkit
-	doexe build/install_factory_toolkit.run
-}
diff --git a/chromeos-base/factory-mini/factory-mini-0.0.1-r2184.ebuild b/chromeos-base/factory-mini/factory-mini-0.0.1-r2184.ebuild
new file mode 100644
index 0000000..97019de
--- /dev/null
+++ b/chromeos-base/factory-mini/factory-mini-0.0.1-r2184.ebuild
@@ -0,0 +1,94 @@
+# Copyright 2014 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.
+
+# factory-mini is a subset of the factory software that can
+# be used to run utilities like gooftool, hwid, and regcode, which may
+# be useful in the CrOS test environment.  For instance, this would
+# allow "gooftool probe" to be used to probe hardware components in
+# Moblab.
+#
+# We don't want to install the entire chromeos-factory package in the
+# test image, since it is quite large, so this package comprises a
+# small ".par" file (/usr/local/factory-mini/factory-mini.par)
+# containing the necessary subset of factory Python code, and symlinks
+# from /usr/local/bin to that file.
+
+EAPI=7
+CROS_WORKON_COMMIT="d8752e21dc6b41f37e2ab2d5db97eaf1bfb2514e"
+CROS_WORKON_TREE="0b71b982ad2195029b3bd1de56bc77376f9e8d3c"
+CROS_WORKON_PROJECT="chromiumos/platform/factory"
+CROS_WORKON_LOCALNAME="platform/factory"
+PYTHON_COMPAT=( python3_{4,5,6,7} )
+
+inherit cros-workon python-r1
+
+# TODO(b/155841952): Merge installer and factory-mini.par
+
+# External dependencies (sync with factory.ebuild)
+LOCAL_MIRROR_URL="http://commondatastorage.googleapis.com/chromeos-localmirror/"
+WEBGL_AQUARIUM_URI="${LOCAL_MIRROR_URL}/distfiles/webgl-aquarium-20130524.tar.bz2"
+SRC_URI="${WEBGL_AQUARIUM_URI}"
+
+DESCRIPTION="Subset of factory software to be installed in test images"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="${PYTHON_DEPS}
+	dev-python/jsonrpclib:=
+	dev-python/pyyaml:=
+	dev-python/protobuf-python:=
+	virtual/chromeos-bsp-factory:=
+	virtual/chromeos-regions:=
+"
+
+pkg_setup() {
+	cros-workon_pkg_setup
+	python_setup
+}
+
+src_unpack() {
+	cros-workon_src_unpack
+	default
+}
+
+src_configure() {
+	default
+
+	# Export build settings
+	export PYTHON="${EPYTHON}"
+	export PYTHON_SITEDIR="${ESYSROOT}$(python_get_sitedir)"
+	export SRCROOT="${CROS_WORKON_SRCROOT}"
+	export FROM_EBUILD=1
+
+	# Export factory toolkit build settings
+	export BOARD="${SYSROOT##*/}"
+	export TARGET_DIR=/usr/local/factory
+	export WEBGL_AQUARIUM_DIR="${WORKDIR}/webgl_aquarium_static"
+}
+
+src_compile() {
+	emake par MAKE_PAR_ARGS=--mini PAR_NAME=factory-mini.par
+
+	emake toolkit
+}
+
+src_install() {
+	exeinto /usr/local/factory-mini
+	doexe build/par/factory-mini.par
+
+	# Sanity check: make sure we can run gooftool --help with only
+	# the -mini.par file.
+	build/par/factory-mini.par gooftool --help |
+		grep -q "^usage: gooftool" || die
+
+	# Install only symlinks for binaries usable with factory-mini.par.
+	"${S}/bin/install_symlinks" \
+		--mode mini --target ../factory-mini/factory-mini.par \
+		"${D}"/usr/local/bin || die
+
+	exeinto /usr/local/factory-toolkit
+	doexe build/install_factory_toolkit.run
+}
diff --git a/chromeos-base/factory/OWNERS b/chromeos-base/factory/OWNERS
new file mode 100644
index 0000000..b2cda88
--- /dev/null
+++ b/chromeos-base/factory/OWNERS
@@ -0,0 +1 @@
+include /chromiumos/platform/factory:/OWNERS
diff --git a/chromeos-base/factory/factory-0.2.0-r1967.ebuild b/chromeos-base/factory/factory-0.2.0-r1967.ebuild
deleted file mode 100644
index 0a896fd..0000000
--- a/chromeos-base/factory/factory-0.2.0-r1967.ebuild
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="4110e6bb8e970fd645dd1caa63783858b428e98a"
-CROS_WORKON_TREE="d971542dd40752467b234475febda9011d37afbc"
-CROS_WORKON_PROJECT="chromiumos/platform/factory"
-CROS_WORKON_LOCALNAME="platform/factory"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-# TODO(crbug.com/999876): Upgrade to Python 3 at some point.
-PYTHON_COMPAT=( python3_{4,5,6,7} )
-
-inherit cros-workon python-r1 cros-constants cros-factory
-
-# External dependencies
-LOCAL_MIRROR_URL=http://commondatastorage.googleapis.com/chromeos-localmirror/
-WEBGL_AQUARIUM_URI=${LOCAL_MIRROR_URL}/distfiles/webgl-aquarium-20130524.tar.bz2
-
-DESCRIPTION="Chrome OS Factory Software Platform"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/factory/"
-SRC_URI="${WEBGL_AQUARIUM_URI}"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-DEPEND="virtual/chromeos-bsp-factory:=
-	virtual/chromeos-regions:=
-	dev-python/jsonrpclib:=
-	dev-python/pyyaml:=
-	dev-python/protobuf-python:=
-"
-
-BUILD_DIR="${WORKDIR}/build"
-
-pkg_setup() {
-	cros-workon_pkg_setup
-	python_setup
-}
-
-src_prepare() {
-	default
-	# Need the lddtree from the chromite dir.
-	export PATH="${CHROMITE_BIN_DIR}:${PATH}"
-}
-
-src_configure() {
-	default
-
-	# Export build settings
-	export BOARD="${SYSROOT##*/}"
-	export OUTOFTREE_BUILD="${CROS_WORKON_OUTOFTREE_BUILD}"
-	export PYTHON="${EPYTHON}"
-	export PYTHON_SITEDIR="${ESYSROOT}$(python_get_sitedir)"
-	export SRCROOT="${CROS_WORKON_SRCROOT}"
-	export TARGET_DIR=/usr/local/factory
-	export WEBGL_AQUARIUM_DIR="${WORKDIR}/webgl_aquarium_static"
-	export FROM_EBUILD=1
-
-	# Support out-of-tree build.
-	export BUILD_DIR="${WORKDIR}/build"
-
-	export BUNDLE_DIR="${WORKDIR}/bundle"
-}
-
-src_unpack() {
-	cros-workon_src_unpack
-	default
-}
-
-src_compile() {
-	emake bundle
-}
-
-src_test() {
-	emake ebuild-test
-}
-
-src_install() {
-	# The path of bundle is defined in chromite/cbuildbot/commands.py
-	insinto "/usr/local/factory"
-	doins -r "${WORKDIR}/bundle"
-	insinto "${CROS_FACTORY_BOARD_RESOURCES_DIR}"
-	doins "${BUILD_DIR}/resource/installer.tar"
-}
diff --git a/chromeos-base/factory/factory-0.2.0-r2116.ebuild b/chromeos-base/factory/factory-0.2.0-r2116.ebuild
new file mode 100644
index 0000000..53496b8
--- /dev/null
+++ b/chromeos-base/factory/factory-0.2.0-r2116.ebuild
@@ -0,0 +1,96 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="d8752e21dc6b41f37e2ab2d5db97eaf1bfb2514e"
+CROS_WORKON_TREE="0b71b982ad2195029b3bd1de56bc77376f9e8d3c"
+CROS_WORKON_PROJECT="chromiumos/platform/factory"
+CROS_WORKON_LOCALNAME="platform/factory"
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+# TODO(crbug.com/999876): Upgrade to Python 3 at some point.
+PYTHON_COMPAT=( python3_{4,5,6,7} )
+
+inherit cros-workon python-r1 cros-constants cros-factory
+
+# External dependencies
+LOCAL_MIRROR_URL=http://commondatastorage.googleapis.com/chromeos-localmirror/
+WEBGL_AQUARIUM_URI=${LOCAL_MIRROR_URL}/distfiles/webgl-aquarium-20130524.tar.bz2
+
+DESCRIPTION="Chrome OS Factory Software Platform"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/factory/"
+SRC_URI="${WEBGL_AQUARIUM_URI}"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+DEPEND="virtual/chromeos-bsp-factory:=
+	virtual/chromeos-regions:=
+	dev-python/jsonrpclib:=
+	dev-python/pyyaml:=
+	dev-python/protobuf-python:=
+"
+
+BUILD_DIR="${WORKDIR}/build"
+
+pkg_setup() {
+	cros-workon_pkg_setup
+	python_setup
+}
+
+src_prepare() {
+	default
+	# Need the lddtree from the chromite dir.
+	export PATH="${CHROMITE_BIN_DIR}:${PATH}"
+}
+
+src_configure() {
+	default
+
+	# Export build settings
+	export BOARD="${SYSROOT##*/}"
+	export OUTOFTREE_BUILD="${CROS_WORKON_OUTOFTREE_BUILD}"
+	export PYTHON="${EPYTHON}"
+	export PYTHON_SITEDIR="${ESYSROOT}$(python_get_sitedir)"
+	export SRCROOT="${CROS_WORKON_SRCROOT}"
+	export TARGET_DIR=/usr/local/factory
+	export WEBGL_AQUARIUM_DIR="${WORKDIR}/webgl_aquarium_static"
+	export FROM_EBUILD=1
+
+	# Support out-of-tree build.
+	export BUILD_DIR="${WORKDIR}/build"
+
+	export BUNDLE_DIR="${WORKDIR}/bundle"
+}
+
+src_unpack() {
+	cros-workon_src_unpack
+	default
+}
+
+src_compile() {
+	emake bundle
+	emake project-toolkits
+}
+
+src_test() {
+	emake ebuild-test
+}
+
+src_install() {
+	# The path of bundle is defined in chromite/cbuildbot/commands.py
+	local bundle_dest
+	bundle_dest="${ED}/usr/local/factory"
+	mkdir -p "${bundle_dest}"
+	mv "${WORKDIR}/bundle" "${bundle_dest}"
+
+	exeinto "${TARGET_DIR}/project_toolkits"
+	local toolkit
+	shopt -s nullglob
+	for toolkit in "${BUILD_DIR}/"*"_install_factory_toolkit.run"; do
+		doexe "${toolkit}"
+	done
+	shopt -u nullglob
+
+	insinto "${CROS_FACTORY_BOARD_RESOURCES_DIR}"
+	doins "${BUILD_DIR}/resource/installer.tar"
+}
diff --git a/chromeos-base/factory/factory-9999.ebuild b/chromeos-base/factory/factory-9999.ebuild
index 67a80841..ef5deb8 100644
--- a/chromeos-base/factory/factory-9999.ebuild
+++ b/chromeos-base/factory/factory-9999.ebuild
@@ -67,6 +67,7 @@
 
 src_compile() {
 	emake bundle
+	emake project-toolkits
 }
 
 src_test() {
@@ -75,8 +76,19 @@
 
 src_install() {
 	# The path of bundle is defined in chromite/cbuildbot/commands.py
-	insinto "/usr/local/factory"
-	doins -r "${WORKDIR}/bundle"
+	local bundle_dest
+	bundle_dest="${ED}/usr/local/factory"
+	mkdir -p "${bundle_dest}"
+	mv "${WORKDIR}/bundle" "${bundle_dest}"
+
+	exeinto "${TARGET_DIR}/project_toolkits"
+	local toolkit
+	shopt -s nullglob
+	for toolkit in "${BUILD_DIR}/"*"_install_factory_toolkit.run"; do
+		doexe "${toolkit}"
+	done
+	shopt -u nullglob
+
 	insinto "${CROS_FACTORY_BOARD_RESOURCES_DIR}"
 	doins "${BUILD_DIR}/resource/installer.tar"
 }
diff --git a/chromeos-base/factory_installer/factory_installer-0.0.1-r147.ebuild b/chromeos-base/factory_installer/factory_installer-0.0.1-r147.ebuild
deleted file mode 100644
index 40ecc37..0000000
--- a/chromeos-base/factory_installer/factory_installer-0.0.1-r147.ebuild
+++ /dev/null
@@ -1,179 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="a6cf8a90d3bc12652af10a706e4c357adb9da57b"
-CROS_WORKON_TREE="f37a6f205f4d34d77c68fa26c950ddb21ccb94d4"
-CROS_WORKON_PROJECT="chromiumos/platform/factory_installer"
-CROS_WORKON_LOCALNAME="platform/factory_installer"
-
-inherit cros-sanitizers cros-workon toolchain-funcs cros-factory
-
-DESCRIPTION="Chrome OS Factory Installer"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/factory_installer/"
-SRC_URI=""
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-USE_PREFIX="tty_console_"
-ALL_PORTS=(
-	ttyAMA{0..5}
-	ttyHSL{0..5}
-	ttyMSM{0..5}
-	ttymxc{0..5}
-	ttyO{0..5}
-	ttyS{0..5}
-	ttySAC{0..5}
-	ttyUSB{0..5}
-	tty{0..5}
-)
-IUSE_PORTS="${ALL_PORTS[@]/#/${USE_PREFIX}}"
-IUSE="${IUSE_PORTS} -asan test"
-
-# Factory install images operate by downloading content from a
-# server.  In some cases, the downloaded content contains programs
-# to be executed.  The downloaded programs may not be complete;
-# they could have dependencies on shared libraries or commands
-# that must be present in the factory install image.
-#
-# PROVIDED_DEPEND captures a minimal set of packages promised to be
-# provided for use by any downloaded program.  The list must contain
-# any package depended on by any downloaded program.
-#
-# Currently, the only downloaded program is the firmware installer;
-# the dependencies below are gleaned from eclass/cros-firmware.eclass.
-# Changes in that eclass must be reflected here.
-PROVIDED_DEPEND="
-	app-arch/gzip
-	app-arch/sharutils
-	app-arch/tar
-	app-misc/figlet
-	chromeos-base/chromeos-config-tools
-	chromeos-base/vboot_reference
-	sys-apps/mosys
-	sys-apps/util-linux"
-
-# Tests are run on the build host and execute the "secure-wipe.sh" from
-# the build directory.  Unfortunately that script, in turn, includes
-# "/usr/share/misc/chromeos-common.sh" via an absolute path which requires
-# the script to be present on the build host itself.  Let's make sure it's
-# there.
-BDEPEND="
-	test? ( chromeos-base/chromeos-common-script )"
-
-# COMMON_DEPEND tracks dependencies common to both DEPEND and
-# RDEPEND.
-#
-# For chromeos-init there's a runtime dependency because the factory
-# jobs depend on upstart jobs in that package.  There's a build-time
-# dependency because pkg_postinst in this ebuild edits specifc jobs
-# in that package.
-COMMON_DEPEND="
-	chromeos-base/chromeos-init:=
-	!chromeos-base/chromeos-factoryinstall
-	!chromeos-base/chromeos-factory"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/factory:=
-	test? ( chromeos-base/secure-wipe:= )
-	x86? ( sys-boot/syslinux:= )"
-
-RDEPEND="${COMMON_DEPEND}
-	${PROVIDED_DEPEND}
-	app-arch/lbzip2
-	app-arch/pigz
-	app-misc/jq
-	chromeos-base/chromeos-installer
-	chromeos-base/chromeos-storage-info
-	chromeos-base/ec-utils
-	chromeos-base/secure-wipe
-	chromeos-base/vpd
-	dev-util/stressapptest
-	net-misc/htpdate
-	net-wireless/iw
-	sys-apps/flashrom
-	sys-apps/net-tools
-	sys-apps/upstart
-	sys-apps/util-linux
-	sys-block/parted
-	sys-fs/e2fsprogs"
-
-
-src_configure() {
-	sanitizers-setup-env
-	default
-}
-
-src_compile() {
-	tc-export AR CC CXX RANLIB
-	emake
-}
-
-src_test() {
-	tests/secure-wipe.sh || die "integration test failed"
-}
-
-src_install() {
-	local service_file="factory_tty.sh"
-	local tmp_service_file="${T}/${service_file}"
-	local scripts=(*.sh)
-	scripts=(${scripts[@]#${service_file}})
-
-	if [[ -n "${TTY_CONSOLE}" ]]; then
-		local item ports=()
-		for item in ${IUSE_PORTS}; do
-			if use ${item}; then
-				ports+=("${item#${USE_PREFIX}}")
-			fi
-		done
-		sed -e "s/^TTY_CONSOLE=.*$/TTY_CONSOLE=\"${ports[*]}\"/" \
-			"${service_file}" >"${tmp_service_file}" || \
-			die "Failed to change TTY_CONSOLE"
-		service_file="${tmp_service_file}"
-		einfo "Changed TTY_CONSOLE to ${ports[*]}."
-	fi
-	dosbin "${scripts[@]}" "${service_file}"
-
-	insinto /usr/share/factory_installer/init
-	doins init/*.conf
-
-	insinto /root
-	newins $FILESDIR/dot.factory_installer .factory_installer
-	# install PMBR code
-	case "$(tc-arch)" in
-		"x86")
-		einfo "using x86 PMBR code from syslinux"
-		PMBR_SOURCE="${ROOT}/usr/share/syslinux/gptmbr.bin"
-		;;
-		*)
-		einfo "using default PMBR code"
-		PMBR_SOURCE=$FILESDIR/dot.pmbr_code
-		;;
-	esac
-	newins $PMBR_SOURCE .pmbr_code
-
-	einfo "Install resources from chromeos-base/factory."
-	factory_unpack_resource installer "${ED}/usr"
-
-	if [[ -f "$(factory_get_resource_archive_path installer-board)" ]]; then
-		einfo "Install resources from chromeos-base/factory-board."
-		factory_unpack_resource installer-board "${ED}"
-	fi
-}
-
-pkg_postinst() {
-	[[ "$(cros_target)" != "target_image" ]] && return 0
-
-	STATEFUL="${ROOT}/usr/local"
-	STATEFUL_LSB="${STATEFUL}/etc/lsb-factory"
-
-	: "${FACTORY_SERVER:=$(hostname -f)}"
-
-	mkdir -p "${STATEFUL}/etc"
-	sudo dd of="${STATEFUL_LSB}" <<EOF
-CHROMEOS_AUSERVER=http://${FACTORY_SERVER}:8080/update
-CHROMEOS_DEVSERVER=http://${FACTORY_SERVER}:8080/update
-FACTORY_INSTALL=1
-HTTP_SERVER_OVERRIDE=true
-EOF
-}
diff --git a/chromeos-base/factory_installer/factory_installer-0.0.1-r153.ebuild b/chromeos-base/factory_installer/factory_installer-0.0.1-r153.ebuild
new file mode 100644
index 0000000..dca3ba9
--- /dev/null
+++ b/chromeos-base/factory_installer/factory_installer-0.0.1-r153.ebuild
@@ -0,0 +1,182 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="a65b6843f07d1050f0add6b7a562137d96626a4b"
+CROS_WORKON_TREE="4642a1742fa6ffde33b68b83d1e684a2e95980bd"
+CROS_WORKON_PROJECT="chromiumos/platform/factory_installer"
+CROS_WORKON_LOCALNAME="platform/factory_installer"
+
+inherit cros-sanitizers cros-workon toolchain-funcs cros-factory
+
+DESCRIPTION="Chrome OS Factory Installer"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/factory_installer/"
+SRC_URI=""
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+USE_PREFIX="tty_console_"
+ALL_PORTS=(
+	ttyAMA{0..5}
+	ttyHSL{0..5}
+	ttyMSM{0..5}
+	ttymxc{0..5}
+	ttyO{0..5}
+	ttyS{0..5}
+	ttySAC{0..5}
+	ttyUSB{0..5}
+	tty{0..5}
+)
+IUSE_PORTS="${ALL_PORTS[@]/#/${USE_PREFIX}}"
+IUSE="${IUSE_PORTS} -asan test"
+
+# Factory install images operate by downloading content from a
+# server.  In some cases, the downloaded content contains programs
+# to be executed.  The downloaded programs may not be complete;
+# they could have dependencies on shared libraries or commands
+# that must be present in the factory install image.
+#
+# PROVIDED_DEPEND captures a minimal set of packages promised to be
+# provided for use by any downloaded program.  The list must contain
+# any package depended on by any downloaded program.
+#
+# Currently, the only downloaded program is the firmware installer;
+# the dependencies below are gleaned from eclass/cros-firmware.eclass.
+# Changes in that eclass must be reflected here.
+PROVIDED_DEPEND="
+	app-arch/gzip
+	app-arch/sharutils
+	app-arch/tar
+	app-misc/figlet
+	chromeos-base/chromeos-config-tools
+	chromeos-base/vboot_reference
+	sys-apps/mosys
+	sys-apps/util-linux"
+
+# Tests are run on the build host and execute the "secure-wipe.sh" from
+# the build directory.  Unfortunately that script, in turn, includes
+# "/usr/share/misc/chromeos-common.sh" via an absolute path which requires
+# the script to be present on the build host itself.  Let's make sure it's
+# there.
+BDEPEND="
+	test? ( chromeos-base/chromeos-common-script )"
+
+# COMMON_DEPEND tracks dependencies common to both DEPEND and
+# RDEPEND.
+#
+# For chromeos-init there's a runtime dependency because the factory
+# jobs depend on upstart jobs in that package.  There's a build-time
+# dependency because pkg_postinst in this ebuild edits specifc jobs
+# in that package.
+COMMON_DEPEND="
+	chromeos-base/chromeos-init:=
+	!chromeos-base/chromeos-factoryinstall
+	!chromeos-base/chromeos-factory"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/factory:=
+	test? ( chromeos-base/secure-wipe:= )
+	x86? ( sys-boot/syslinux:= )"
+
+RDEPEND="${COMMON_DEPEND}
+	${PROVIDED_DEPEND}
+	app-arch/lbzip2
+	app-arch/pigz
+	app-misc/jq
+	chromeos-base/chromeos-installer
+	chromeos-base/chromeos-storage-info
+	chromeos-base/ec-utils
+	chromeos-base/secure-wipe
+	chromeos-base/vpd
+	dev-util/stressapptest
+	net-misc/htpdate
+	net-wireless/iw
+	sys-apps/flashrom
+	sys-apps/net-tools
+	sys-apps/upstart
+	sys-apps/util-linux
+	sys-block/parted
+	sys-fs/e2fsprogs"
+
+
+src_configure() {
+	sanitizers-setup-env
+	default
+}
+
+src_compile() {
+	tc-export AR CC CXX RANLIB
+	emake
+}
+
+src_test() {
+	tests/secure-wipe.sh || die "integration test failed"
+}
+
+src_install() {
+	local service_file="factory_tty.sh"
+	local tmp_service_file="${T}/${service_file}"
+	local scripts=(*.sh)
+	scripts=(${scripts[@]#${service_file}})
+
+	if [[ -n "${TTY_CONSOLE}" ]]; then
+		local item ports=()
+		for item in ${IUSE_PORTS}; do
+			if use ${item}; then
+				ports+=("${item#${USE_PREFIX}}")
+			fi
+		done
+		sed -e "s/^TTY_CONSOLE=.*$/TTY_CONSOLE=\"${ports[*]}\"/" \
+			"${service_file}" >"${tmp_service_file}" || \
+			die "Failed to change TTY_CONSOLE"
+		service_file="${tmp_service_file}"
+		einfo "Changed TTY_CONSOLE to ${ports[*]}."
+	fi
+	dosbin "${scripts[@]}" "${service_file}"
+
+	insinto /usr/share/factory_installer/tpm
+	doins tpm/*.sh
+
+	insinto /usr/share/factory_installer/init
+	doins init/*.conf
+
+	insinto /root
+	newins $FILESDIR/dot.factory_installer .factory_installer
+	# install PMBR code
+	case "$(tc-arch)" in
+		"x86")
+		einfo "using x86 PMBR code from syslinux"
+		PMBR_SOURCE="${ROOT}/usr/share/syslinux/gptmbr.bin"
+		;;
+		*)
+		einfo "using default PMBR code"
+		PMBR_SOURCE=$FILESDIR/dot.pmbr_code
+		;;
+	esac
+	newins $PMBR_SOURCE .pmbr_code
+
+	einfo "Install resources from chromeos-base/factory."
+	factory_unpack_resource installer "${ED}/usr"
+
+	if [[ -f "$(factory_get_resource_archive_path installer-board)" ]]; then
+		einfo "Install resources from chromeos-base/factory-board."
+		factory_unpack_resource installer-board "${ED}"
+	fi
+}
+
+pkg_postinst() {
+	[[ "$(cros_target)" != "target_image" ]] && return 0
+
+	STATEFUL="${ROOT}/usr/local"
+	STATEFUL_LSB="${STATEFUL}/etc/lsb-factory"
+
+	: "${FACTORY_SERVER:=$(hostname -f)}"
+
+	mkdir -p "${STATEFUL}/etc"
+	sudo dd of="${STATEFUL_LSB}" <<EOF
+CHROMEOS_AUSERVER=http://${FACTORY_SERVER}:8080/update
+CHROMEOS_DEVSERVER=http://${FACTORY_SERVER}:8080/update
+FACTORY_INSTALL=1
+HTTP_SERVER_OVERRIDE=true
+EOF
+}
diff --git a/chromeos-base/factory_installer/factory_installer-9999.ebuild b/chromeos-base/factory_installer/factory_installer-9999.ebuild
index ba5b245..97e84d6 100644
--- a/chromeos-base/factory_installer/factory_installer-9999.ebuild
+++ b/chromeos-base/factory_installer/factory_installer-9999.ebuild
@@ -132,6 +132,9 @@
 	fi
 	dosbin "${scripts[@]}" "${service_file}"
 
+	insinto /usr/share/factory_installer/tpm
+	doins tpm/*.sh
+
 	insinto /usr/share/factory_installer/init
 	doins init/*.conf
 
diff --git a/chromeos-base/factory_runtime_probe/OWNERS b/chromeos-base/factory_runtime_probe/OWNERS
new file mode 100644
index 0000000..8aab9fd
--- /dev/null
+++ b/chromeos-base/factory_runtime_probe/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/runtiem_probe/OWNERS
diff --git a/chromeos-base/factory_runtime_probe/factory_runtime_probe-0.0.1-r24.ebuild b/chromeos-base/factory_runtime_probe/factory_runtime_probe-0.0.1-r24.ebuild
new file mode 100644
index 0000000..ab73f2f
--- /dev/null
+++ b/chromeos-base/factory_runtime_probe/factory_runtime_probe-0.0.1-r24.ebuild
@@ -0,0 +1,62 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="67f002ffc6f157b2d2c102d78f76b8ae8cc309d8"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "aa0612733aca2d5ffa65470f07408228b473ebdb" "5bcd4487aea45b91806e5db9af44e6b3d9290c13" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 runtime_probe .gn"
+
+PLATFORM_SUBDIR="runtime_probe"
+
+inherit cros-workon platform
+
+DESCRIPTION="Device component probe tool **for factory environment**."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/runtime_probe/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cros-debug generated_cros_config unibuild +factory_runtime_probe"
+
+# TODO(yhong): Extract common parts with runtime_probe-9999.ebuild to a shared
+#     eclass.
+
+COMMON_DEPEND="
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config:= )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	chromeos-base/chromeos-config-tools:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/ec-utils
+"
+
+# Add vboot_reference as build time dependency to read cros_debug status
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=
+	chromeos-base/vboot_reference:=
+"
+
+pkg_setup() {
+	cros-workon_pkg_setup
+
+	# Assert that the package is not "directly" installed into Chrome OS
+	# images.  We currently only anticipate that files introduced by this
+	# package being used as the source materials for other packages.
+	if [[ "$(cros_target)" != "board_sysroot" ]]; then
+		die "${PN} should never be installed into Chrome OS images directly."
+	fi
+}
+
+src_install() {
+	dobin "${OUT}/factory_runtime_probe"
+	dobin "${OUT}/factory_runtime_probe_installer"
+}
diff --git a/chromeos-base/factory_runtime_probe/factory_runtime_probe-9999.ebuild b/chromeos-base/factory_runtime_probe/factory_runtime_probe-9999.ebuild
new file mode 100644
index 0000000..943bd04
--- /dev/null
+++ b/chromeos-base/factory_runtime_probe/factory_runtime_probe-9999.ebuild
@@ -0,0 +1,60 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk chromeos-config runtime_probe .gn"
+
+PLATFORM_SUBDIR="runtime_probe"
+
+inherit cros-workon platform
+
+DESCRIPTION="Device component probe tool **for factory environment**."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/runtime_probe/"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE="cros-debug generated_cros_config unibuild +factory_runtime_probe"
+
+# TODO(yhong): Extract common parts with runtime_probe-9999.ebuild to a shared
+#     eclass.
+
+COMMON_DEPEND="
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config:= )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	chromeos-base/chromeos-config-tools:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/ec-utils
+"
+
+# Add vboot_reference as build time dependency to read cros_debug status
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=
+	chromeos-base/vboot_reference:=
+"
+
+pkg_setup() {
+	cros-workon_pkg_setup
+
+	# Assert that the package is not "directly" installed into Chrome OS
+	# images.  We currently only anticipate that files introduced by this
+	# package being used as the source materials for other packages.
+	if [[ "$(cros_target)" != "board_sysroot" ]]; then
+		die "${PN} should never be installed into Chrome OS images directly."
+	fi
+}
+
+src_install() {
+	dobin "${OUT}/factory_runtime_probe"
+	dobin "${OUT}/factory_runtime_probe_installer"
+}
diff --git a/chromeos-base/federated-service/OWNERS b/chromeos-base/federated-service/OWNERS
new file mode 100644
index 0000000..7bd30112
--- /dev/null
+++ b/chromeos-base/federated-service/OWNERS
@@ -0,0 +1,3 @@
+include chromiumos/platform2:/federated/OWNERS
+
+martis@chromium.org
diff --git a/chromeos-base/federated-service/federated-service-0.0.1-r9.ebuild b/chromeos-base/federated-service/federated-service-0.0.1-r9.ebuild
new file mode 100644
index 0000000..f1964c1
--- /dev/null
+++ b/chromeos-base/federated-service/federated-service-0.0.1-r9.ebuild
@@ -0,0 +1,72 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "bcf783a53d9171afe89622df54180eececb2b69f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk federated .gn"
+
+PLATFORM_SUBDIR="federated"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Federated Computation service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/federated"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+#TODO(alanlxl): add federated_library
+RDEPEND="
+	dev-db/sqlite:=
+	chromeos-base/session_manager-client:=
+	chromeos-base/system_api:=
+"
+
+DEPEND="
+	${RDEPEND}
+"
+
+pkg_setup() {
+	# Has to be done in pkg_setup() instead of pkg_preinst() since
+	# src_install() needs the federated-service user and group.
+	enewuser "federated-service"
+	enewgroup "federated-service"
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	dobin "${OUT}"/federated_service
+
+	# Install upstart configuration.
+	insinto /etc/init
+	doins init/*.conf
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "seccomp/federated_service-seccomp-${ARCH}.policy" federated_service-seccomp.policy
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Federated.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.Federated.service
+
+	# Storage path for examples, will be mounted as
+	# /run/daemon-store/federated/<user_hash> after user logs in.
+	local daemon_store="/etc/daemon-store/federated"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners federated-service:federated-service "${daemon_store}"
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/federated_service_test"
+}
diff --git a/chromeos-base/federated-service/federated-service-9999.ebuild b/chromeos-base/federated-service/federated-service-9999.ebuild
new file mode 100644
index 0000000..0f6177b
--- /dev/null
+++ b/chromeos-base/federated-service/federated-service-9999.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk federated .gn"
+
+PLATFORM_SUBDIR="federated"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Federated Computation service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/federated"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="~*"
+IUSE=""
+
+#TODO(alanlxl): add federated_library
+RDEPEND="
+	dev-db/sqlite:=
+	chromeos-base/session_manager-client:=
+	chromeos-base/system_api:=
+"
+
+DEPEND="
+	${RDEPEND}
+"
+
+pkg_setup() {
+	# Has to be done in pkg_setup() instead of pkg_preinst() since
+	# src_install() needs the federated-service user and group.
+	enewuser "federated-service"
+	enewgroup "federated-service"
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	dobin "${OUT}"/federated_service
+
+	# Install upstart configuration.
+	insinto /etc/init
+	doins init/*.conf
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "seccomp/federated_service-seccomp-${ARCH}.policy" federated_service-seccomp.policy
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Federated.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.Federated.service
+
+	# Storage path for examples, will be mounted as
+	# /run/daemon-store/federated/<user_hash> after user logs in.
+	local daemon_store="/etc/daemon-store/federated"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners federated-service:federated-service "${daemon_store}"
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/federated_service_test"
+}
diff --git a/chromeos-base/feedback/feedback-0.0.1-r791.ebuild b/chromeos-base/feedback/feedback-0.0.1-r791.ebuild
deleted file mode 100644
index 6fbbfc7..0000000
--- a/chromeos-base/feedback/feedback-0.0.1-r791.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="94ece9ebf19435642dc1b8d59a2eff6c195b5e8c"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "53956281966054116af6855ac4e859d6eb6533d7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk feedback .gn"
-
-PLATFORM_SUBDIR="feedback"
-
-inherit cros-constants cros-workon git-2 platform
-
-DESCRIPTION="Feedback service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/feedback/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND=""
-DEPEND="chromeos-base/system_api:="
-
-src_install() {
-	dobin "${OUT}"/feedback_client
-	dobin "${OUT}"/feedback_daemon
-
-	insinto /etc/init
-	doins init/feedback_daemon.conf
-
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.feedback.conf
-
-	insinto /usr/include/feedback
-	doins components/feedback/feedback_common.h
-	doins feedback_service_interface.h
-}
-
-platform_pkg_test() {
-	local tests=(
-		feedback_daemon_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/feedback/feedback-0.0.1-r817.ebuild b/chromeos-base/feedback/feedback-0.0.1-r817.ebuild
new file mode 100644
index 0000000..9619b03
--- /dev/null
+++ b/chromeos-base/feedback/feedback-0.0.1-r817.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "2a3b0ac1cf74d264898023f64759235fdc90aa74" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk feedback .gn"
+
+PLATFORM_SUBDIR="feedback"
+
+inherit cros-constants cros-workon git-2 platform
+
+DESCRIPTION="Feedback service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/feedback/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND=""
+DEPEND="chromeos-base/system_api:="
+
+src_install() {
+	dobin "${OUT}"/feedback_client
+	dobin "${OUT}"/feedback_daemon
+
+	insinto /etc/init
+	doins init/feedback_daemon.conf
+
+	insinto /etc/dbus-1/system.d
+	doins org.chromium.feedback.conf
+
+	insinto /usr/include/feedback
+	doins components/feedback/feedback_common.h
+	doins feedback_service_interface.h
+}
+
+platform_pkg_test() {
+	local tests=(
+		feedback_daemon_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/fingerprint_study/fingerprint_study-0.0.1-r23.ebuild b/chromeos-base/fingerprint_study/fingerprint_study-0.0.1-r23.ebuild
deleted file mode 100644
index 80fd46a..0000000
--- a/chromeos-base/fingerprint_study/fingerprint_study-0.0.1-r23.ebuild
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="67b30051d9937f721cc5b3f5d18e31d159829e2a"
-CROS_WORKON_TREE="6af6dff2eb93d08a39ac84f045b89a4e485d94e9"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="biod/study"
-PYTHON_COMPAT=( python3_{6,7,8} pypy3 )
-
-inherit cros-workon python-r1
-
-DESCRIPTION="Chromium OS Fingerprint user study software"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/study"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-# The fingerprint study can optionally make use of the private package
-# virtual/chromeos-fpmcu-test, which holds the C+python fputils lib.
-# This library is also used for factory tests, thus it was labeled fpmcu-test.
-DEPEND=""
-RDEPEND="
-	${PYTHON_DEPS}
-	chromeos-base/ec-utils
-	dev-python/cherrypy[${PYTHON_USEDEP}]
-	dev-python/python-gnupg[${PYTHON_USEDEP}]
-	dev-python/ws4py[${PYTHON_USEDEP}]
-	virtual/chromeos-fpmcu-test
-	"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/biod/study"
-}
-
-src_install() {
-	# install the study local server
-	exeinto /opt/google/fingerprint_study
-	newexe study_serve.py study_serve
-
-	# Content to serve
-	insinto /opt/google/fingerprint_study/html
-	doins html/index.html
-	doins html/bootstrap-3.3.7.min.css
-	doins html/fingerprint.svg
-
-	insinto /etc/init
-	doins init/fingerprint_study.conf
-	doins init/syslog_fingerprint_study.conf
-
-	insinto /etc/bash/bashrc.d
-	doins shell-audit.sh
-
-	insinto /etc/rsyslog.d
-	doins rsyslog.fpstudy-audit.conf
-}
diff --git a/chromeos-base/fingerprint_study/fingerprint_study-0.0.1-r27.ebuild b/chromeos-base/fingerprint_study/fingerprint_study-0.0.1-r27.ebuild
new file mode 100644
index 0000000..0c52707
--- /dev/null
+++ b/chromeos-base/fingerprint_study/fingerprint_study-0.0.1-r27.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="24b418b1c56d694a576ab04322042142fc255ce2"
+CROS_WORKON_TREE="2436963e97a3c61ae366a6d52c012917afd63236"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="biod/study"
+PYTHON_COMPAT=( python3_{6,7,8} pypy3 )
+
+inherit cros-workon python-r1
+
+DESCRIPTION="Chromium OS Fingerprint user study software"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/study"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+# The fingerprint study can optionally make use of the private package
+# virtual/chromeos-fpmcu-test, which holds the C+python fputils lib.
+# This library is also used for factory tests, thus it was labeled fpmcu-test.
+# The chromeos-base/ec-utils pkg provides ectool.
+# The chromeos-base/ec-utils-test pkg provides flash_fp_mcu for test operator.
+DEPEND=""
+RDEPEND="
+	${PYTHON_DEPS}
+	chromeos-base/ec-utils
+	chromeos-base/ec-utils-test
+	dev-python/cherrypy[${PYTHON_USEDEP}]
+	dev-python/python-gnupg[${PYTHON_USEDEP}]
+	dev-python/ws4py[${PYTHON_USEDEP}]
+	virtual/chromeos-fpmcu-test
+	"
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/biod/study"
+}
+
+src_install() {
+	# install the study local server
+	exeinto /opt/google/fingerprint_study
+	newexe study_serve.py study_serve
+
+	# Content to serve
+	insinto /opt/google/fingerprint_study/html
+	doins html/index.html
+	doins html/bootstrap-3.3.7.min.css
+	doins html/fingerprint.svg
+
+	insinto /etc/init
+	doins init/fingerprint_study.conf
+	doins init/syslog_fingerprint_study.conf
+
+	insinto /etc/bash/bashrc.d
+	doins shell-audit.sh
+
+	insinto /etc/rsyslog.d
+	doins rsyslog.fpstudy-audit.conf
+}
diff --git a/chromeos-base/fingerprint_study/fingerprint_study-9999.ebuild b/chromeos-base/fingerprint_study/fingerprint_study-9999.ebuild
index dd33176..7cc14a5 100644
--- a/chromeos-base/fingerprint_study/fingerprint_study-9999.ebuild
+++ b/chromeos-base/fingerprint_study/fingerprint_study-9999.ebuild
@@ -18,10 +18,13 @@
 # The fingerprint study can optionally make use of the private package
 # virtual/chromeos-fpmcu-test, which holds the C+python fputils lib.
 # This library is also used for factory tests, thus it was labeled fpmcu-test.
+# The chromeos-base/ec-utils pkg provides ectool.
+# The chromeos-base/ec-utils-test pkg provides flash_fp_mcu for test operator.
 DEPEND=""
 RDEPEND="
 	${PYTHON_DEPS}
 	chromeos-base/ec-utils
+	chromeos-base/ec-utils-test
 	dev-python/cherrypy[${PYTHON_USEDEP}]
 	dev-python/python-gnupg[${PYTHON_USEDEP}]
 	dev-python/ws4py[${PYTHON_USEDEP}]
diff --git a/chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r30.ebuild b/chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r30.ebuild
deleted file mode 100644
index da6df6a..0000000
--- a/chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r30.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "6b587aaada80ee2933381273c81abeeae91ff0ee" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk foomatic_shell .gn"
-
-PLATFORM_SUBDIR="foomatic_shell"
-
-inherit cros-workon platform
-
-DESCRIPTION="Mini shell used by foomatic-rip to execute scripts in PPD files."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/foomatic_shell/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-src_install() {
-	dobin "${OUT}/foomatic_shell"
-
-	# Install fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/foomatic_shell_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/foomatic_shell_test"
-}
diff --git a/chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r59.ebuild b/chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r59.ebuild
new file mode 100644
index 0000000..fa6aa63
--- /dev/null
+++ b/chromeos-base/foomatic_shell/foomatic_shell-0.0.1-r59.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "92250239305f99e58bf74de7db462c841dfa3c4b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk foomatic_shell .gn"
+
+PLATFORM_SUBDIR="foomatic_shell"
+
+inherit cros-workon platform
+
+DESCRIPTION="Mini shell used by foomatic-rip to execute scripts in PPD files."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/foomatic_shell/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+src_install() {
+	dobin "${OUT}/foomatic_shell"
+
+	# Install fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/foomatic_shell_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/foomatic_shell_test"
+}
diff --git a/chromeos-base/g2f_tools/g2f_tools-0.0.1-r438.ebuild b/chromeos-base/g2f_tools/g2f_tools-0.0.1-r438.ebuild
deleted file mode 100644
index 7caba3d..0000000
--- a/chromeos-base/g2f_tools/g2f_tools-0.0.1-r438.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "989d840598227b15d78525d5f92c806011a9c158" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "20ed8021024637e492670d20fa5969a2ad75e4b6" "0a4c2a4309ae045cba89a234a75d29007f13cf92" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk libhwsec metrics trunks u2fd .gn"
-
-PLATFORM_SUBDIR="u2fd"
-
-inherit cros-workon platform
-
-DESCRIPTION="G2F gnubby (U2F+GCSE) development and testing tools"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/u2fd"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-COMMON_DEPEND="
-	chromeos-base/libhwsec:=
-	dev-libs/hidapi:=
-	"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/chromeos-ec-headers:=
-	chromeos-base/u2fd:=
-	"
-
-src_install() {
-	dobin "${OUT}"/g2ftool
-	dobin "${OUT}"/webauthntool
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/g2f_client_test"
-}
diff --git a/chromeos-base/g2f_tools/g2f_tools-0.0.1-r550.ebuild b/chromeos-base/g2f_tools/g2f_tools-0.0.1-r550.ebuild
new file mode 100644
index 0000000..fd22ee0
--- /dev/null
+++ b/chromeos-base/g2f_tools/g2f_tools-0.0.1-r550.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="ecd28d2c26fbe86b6822c6d6afb80f118a8f7f03"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "81dfbbc1756a3b4224b447e7bf10a916d97c4f66" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "a06a3f47395fb7b584188c6852764bc773e5497e" "e4bdb36b8b1e5f01a3bbb9b825a32cf55222bfeb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk libhwsec metrics trunks u2fd .gn"
+
+PLATFORM_SUBDIR="u2fd"
+
+inherit cros-workon platform
+
+DESCRIPTION="G2F gnubby (U2F+GCSE) development and testing tools"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/u2fd"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	chromeos-base/libhwsec:=
+	dev-libs/hidapi:=
+	"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/chromeos-ec-headers:=
+	chromeos-base/u2fd:=
+	"
+
+src_install() {
+	dobin "${OUT}"/g2ftool
+	dobin "${OUT}"/webauthntool
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/g2f_client_test"
+}
diff --git a/chromeos-base/g2update_tool/OWNERS b/chromeos-base/g2update_tool/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/g2update_tool/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/gdix_hid_firmware_update/Manifest b/chromeos-base/gdix_hid_firmware_update/Manifest
index ce95918..62346ad 100644
--- a/chromeos-base/gdix_hid_firmware_update/Manifest
+++ b/chromeos-base/gdix_hid_firmware_update/Manifest
@@ -1 +1 @@
-DIST gdix_hid_firmware_update-1.7.0.tar.gz 20967 BLAKE2B 46e3945dd7df3dff41d24b03b4b44cfa0b99fc0b4cf75a90911ce0a6336595045d13e941c5097d5ec02be30e06de7524579283ed6cf3a3bab82b82c3d9d5c6bf SHA512 137ff758c4408741720e19c76101ab80eca5dcddbbf830efa3c027f149f373c629bbf23000d52e511ca2429b22e2e8c6d87704b790c23d6623b0facbfbed8412
+DIST gdix_hid_firmware_update-1.7.4.tar.gz 24765 SHA256 38228d0fae1a6f21806da2a9070b3be3a597af46663453b3fd18236053ed6c88 SHA512 6636fc59c84834574fa3cd080cb3bb46d64eb2d02b54c2e3a39d0e682aa7c9824bea5e2484d5b153b16d52f42c6d8a0c4480030a8f140ae7e60278aa62f54e0f WHIRLPOOL 46326ac17d6bca06b2bbeed02b848360138f68eafaca13b4b643209061bf8f2bf7f42362d049733f71ce3fccca1c8dbf782a79665f3069535644be1a6fff84aa
diff --git a/chromeos-base/gdix_hid_firmware_update/OWNERS b/chromeos-base/gdix_hid_firmware_update/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/gdix_hid_firmware_update/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/gdix_hid_firmware_update/gdix_hid_firmware_update-1.7.0-r1.ebuild b/chromeos-base/gdix_hid_firmware_update/gdix_hid_firmware_update-1.7.0-r1.ebuild
deleted file mode 120000
index 40d6a46..0000000
--- a/chromeos-base/gdix_hid_firmware_update/gdix_hid_firmware_update-1.7.0-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-gdix_hid_firmware_update-1.7.0.ebuild
\ No newline at end of file
diff --git a/chromeos-base/gdix_hid_firmware_update/gdix_hid_firmware_update-1.7.4-r1.ebuild b/chromeos-base/gdix_hid_firmware_update/gdix_hid_firmware_update-1.7.4-r1.ebuild
new file mode 120000
index 0000000..6532f13
--- /dev/null
+++ b/chromeos-base/gdix_hid_firmware_update/gdix_hid_firmware_update-1.7.4-r1.ebuild
@@ -0,0 +1 @@
+gdix_hid_firmware_update-1.7.4.ebuild
\ No newline at end of file
diff --git a/chromeos-base/gdix_hid_firmware_update/gdix_hid_firmware_update-1.7.0.ebuild b/chromeos-base/gdix_hid_firmware_update/gdix_hid_firmware_update-1.7.4.ebuild
similarity index 100%
rename from chromeos-base/gdix_hid_firmware_update/gdix_hid_firmware_update-1.7.0.ebuild
rename to chromeos-base/gdix_hid_firmware_update/gdix_hid_firmware_update-1.7.4.ebuild
diff --git a/chromeos-base/gestures-conf/gestures-conf-0.0.1-r130.ebuild b/chromeos-base/gestures-conf/gestures-conf-0.0.1-r130.ebuild
deleted file mode 100644
index 963a1ae..0000000
--- a/chromeos-base/gestures-conf/gestures-conf-0.0.1-r130.ebuild
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="5903b0faae3e2935c7e15a944d7d9323e50a8b02"
-CROS_WORKON_TREE="13e786e69d512c02c96419fbea8cc4bbf41de6af"
-CROS_WORKON_LOCALNAME="xorg-conf"
-CROS_WORKON_PROJECT="chromiumos/platform/xorg-conf"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit cros-board cros-workon user
-
-DESCRIPTION="Board specific gestures library configuration file."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/xorg-conf/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="elan"
-
-RDEPEND="!chromeos-base/touchpad-linearity"
-DEPEND=""
-
-src_install() {
-	local board=$(get_current_board_no_variant)
-	local board_variant=$(get_current_board_with_variant)
-
-	insinto /etc/gesture
-
-	# Some boards have experimental variants, such as -cheets, -arcnext,
-	# -campfire, -kvm, -kernelnext or -arm64, which are running on the same
-	# hardware as their base boards. As opposed to board variants, which use
-	# underscore to separate from board name, they use a dash, so we can just
-	# strip anything matching.
-	board_variant=${board_variant%%-*}
-	board=${board%%-*}
-
-	# Enable exactly one evdev-compatible X input touchpad driver.
-	#
-	# Note: If possible, use the following xorg config names to allow
-	# this ebuild to install them automatically:
-	#    - 50-touchpad-cmt-$BOARD.conf
-	#    - 60-touchpad-cmt-$BOARD_VARIANT.conf
-	# e.g. daisy_skate will include the files:
-	#    - 50-touchpad-cmt-daisy.conf
-	#    - 60-touchpad-cmt-daisy_skate.conf
-	doins 40-touchpad-cmt.conf
-	if use elan; then
-		doins 50-touchpad-cmt-elan.conf
-	elif [[ "${board}" = "daisy" && "${board_variant}" = "${board}" ]]; then
-		doins 50-touchpad-cmt-daisy.conf
-		doins 50-touchpad-cmt-pit.conf # Some Lucas's use Pit Touchpad module
-	elif [ "${board_variant}" = "daisy_spring" ]; then
-		doins 50-touchpad-cmt-spring.conf
-	elif [ "${board_variant}" = "peach_pit" ]; then
-		doins 50-touchpad-cmt-pit.conf
-	elif [ "${board_variant}" = "peach_pi" ]; then
-		doins 50-touchpad-cmt-pi.conf
-	else
-		if [ -f "50-touchpad-cmt-${board}.conf" ]; then
-			doins "50-touchpad-cmt-${board}.conf"
-		fi
-		if [ -f "60-touchpad-cmt-${board_variant}.conf" ]; then
-			doins "60-touchpad-cmt-${board_variant}.conf"
-		fi
-	fi
-	doins 20-mouse.conf
-
-	insinto "/usr/share/gestures"
-	case ${board} in
-	daisy)
-		doins "files/daisy_linearity.dat" ;;
-	esac
-}
-
diff --git a/chromeos-base/gestures-conf/gestures-conf-0.0.1-r138.ebuild b/chromeos-base/gestures-conf/gestures-conf-0.0.1-r138.ebuild
new file mode 100644
index 0000000..2a7df78
--- /dev/null
+++ b/chromeos-base/gestures-conf/gestures-conf-0.0.1-r138.ebuild
@@ -0,0 +1,75 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="8fe78b5a0e2d97eaeca95da1598643d37120ff4a"
+CROS_WORKON_TREE="b2fb9cd3688231f48d3af4596cc6144c4beff52c"
+CROS_WORKON_LOCALNAME="xorg-conf"
+CROS_WORKON_PROJECT="chromiumos/platform/xorg-conf"
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+inherit cros-board cros-workon user
+
+DESCRIPTION="Board specific gestures library configuration file."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/xorg-conf/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="elan"
+
+RDEPEND="!chromeos-base/touchpad-linearity"
+DEPEND=""
+
+src_install() {
+	local board=$(get_current_board_no_variant)
+	local board_variant=$(get_current_board_with_variant)
+
+	insinto /etc/gesture
+
+	# Some boards have experimental variants, such as -cheets, -arcnext,
+	# -campfire, -kvm, -kernelnext or -arm64, which are running on the same
+	# hardware as their base boards. As opposed to board variants, which use
+	# underscore to separate from board name, they use a dash, so we can just
+	# strip anything matching.
+	board_variant=${board_variant%%-*}
+	board=${board%%-*}
+
+	# Enable exactly one evdev-compatible X input touchpad driver.
+	#
+	# Note: If possible, use the following xorg config names to allow
+	# this ebuild to install them automatically:
+	#    - 50-touchpad-cmt-$BOARD.conf
+	#    - 60-touchpad-cmt-$BOARD_VARIANT.conf
+	# e.g. daisy_skate will include the files:
+	#    - 50-touchpad-cmt-daisy.conf
+	#    - 60-touchpad-cmt-daisy_skate.conf
+	doins 40-touchpad-cmt.conf
+	if use elan; then
+		doins 50-touchpad-cmt-elan.conf
+	elif [[ "${board}" = "daisy" && "${board_variant}" = "${board}" ]]; then
+		doins 50-touchpad-cmt-daisy.conf
+		doins 50-touchpad-cmt-pit.conf # Some Lucas's use Pit Touchpad module
+	elif [ "${board_variant}" = "daisy_spring" ]; then
+		doins 50-touchpad-cmt-spring.conf
+	elif [ "${board_variant}" = "peach_pit" ]; then
+		doins 50-touchpad-cmt-pit.conf
+	elif [ "${board_variant}" = "peach_pi" ]; then
+		doins 50-touchpad-cmt-pi.conf
+	else
+		if [ -f "50-touchpad-cmt-${board}.conf" ]; then
+			doins "50-touchpad-cmt-${board}.conf"
+		fi
+		if [ -f "60-touchpad-cmt-${board_variant}.conf" ]; then
+			doins "60-touchpad-cmt-${board_variant}.conf"
+		fi
+	fi
+	doins 20-mouse.conf
+
+	insinto "/usr/share/gestures"
+	case ${board} in
+	daisy)
+		doins "files/daisy_linearity.dat" ;;
+	esac
+}
+
diff --git a/chromeos-base/gestures/gestures-0.0.1-r601.ebuild b/chromeos-base/gestures/gestures-0.0.1-r601.ebuild
deleted file mode 100644
index 8018562..0000000
--- a/chromeos-base/gestures/gestures-0.0.1-r601.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="e496caa035b379836c447b2b85bd4b05b17fb233"
-CROS_WORKON_TREE="4a446aa60563ea150004879ca2fd6f0ddc2e72cc"
-CROS_WORKON_PROJECT="chromiumos/platform/gestures"
-CROS_WORKON_LOCALNAME="platform/gestures"
-CROS_WORKON_USE_VCSID=1
-
-inherit toolchain-funcs cros-debug cros-sanitizers cros-workon
-
-DESCRIPTION="Gesture recognizer library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/gestures/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="-asan +X"
-
-RDEPEND="chromeos-base/gestures-conf:=
-	chromeos-base/libevdev:=
-	dev-libs/jsoncpp:=
-	virtual/udev"
-DEPEND="dev-cpp/gtest:=
-	X? ( x11-libs/libXi:= )
-	${RDEPEND}"
-
-# The last dir must be named "gestures" for include path reasons.
-S="${WORKDIR}/gestures"
-
-src_configure() {
-	cros_optimize_package_for_speed
-	sanitizers-setup-env
-	export USE_X11=$(usex X 1 0)
-	tc-export CXX PKG_CONFIG
-	cros-debug-add-NDEBUG
-	default
-}
-
-src_compile() {
-	emake clean  # TODO(adlr): remove when a better solution exists
-	emake
-}
-
-src_test() {
-	emake test
-
-	if ! use x86 && ! use amd64 ; then
-		einfo "Skipping tests on non-x86 platform..."
-	else
-		# This is an ugly hack that happens to work, but should not be copied.
-		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir)" \
-		./test || die
-	fi
-}
-
-src_install() {
-	emake DESTDIR="${D}" LIBDIR="/usr/$(get_libdir)" install
-}
diff --git a/chromeos-base/gestures/gestures-0.0.1-r608.ebuild b/chromeos-base/gestures/gestures-0.0.1-r608.ebuild
new file mode 100644
index 0000000..8075d9f
--- /dev/null
+++ b/chromeos-base/gestures/gestures-0.0.1-r608.ebuild
@@ -0,0 +1,60 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="0f66f2bb008707c79d5f34f700ccddc75a64aad6"
+CROS_WORKON_TREE="f61862266364ee29a7990560bf5e6b7b6e151873"
+CROS_WORKON_PROJECT="chromiumos/platform/gestures"
+CROS_WORKON_LOCALNAME="platform/gestures"
+CROS_WORKON_USE_VCSID=1
+
+inherit toolchain-funcs cros-debug cros-sanitizers cros-workon
+
+DESCRIPTION="Gesture recognizer library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/gestures/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="-asan +X"
+
+RDEPEND="chromeos-base/gestures-conf:=
+	chromeos-base/libevdev:=
+	dev-libs/jsoncpp:=
+	virtual/udev"
+DEPEND="dev-cpp/gtest:=
+	X? ( x11-libs/libXi:= )
+	${RDEPEND}"
+
+# The last dir must be named "gestures" for include path reasons.
+S="${WORKDIR}/gestures"
+
+src_configure() {
+	cros_optimize_package_for_speed
+	sanitizers-setup-env
+	export USE_X11=$(usex X 1 0)
+	tc-export CXX PKG_CONFIG
+	cros-debug-add-NDEBUG
+	default
+}
+
+src_compile() {
+	emake clean  # TODO(adlr): remove when a better solution exists
+	emake
+}
+
+src_test() {
+	emake test
+
+	if ! use x86 && ! use amd64 ; then
+		einfo "Skipping tests on non-x86 platform..."
+	else
+		# This is an ugly hack that happens to work, but should not be copied.
+		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir)" \
+		./test || die
+	fi
+}
+
+src_install() {
+	emake DESTDIR="${D}" LIBDIR="/usr/$(get_libdir)" install
+}
diff --git a/chromeos-base/ghostscript-fuzz/files/OWNERS b/chromeos-base/ghostscript-fuzz/files/OWNERS
index a26fbfb..8f8ebcd 100644
--- a/chromeos-base/ghostscript-fuzz/files/OWNERS
+++ b/chromeos-base/ghostscript-fuzz/files/OWNERS
@@ -1,4 +1,3 @@
-briannorris@chromium.org
 luum@chromium.org
 pawliczek@chromium.org
 skau@chromium.org
diff --git a/chromeos-base/glbench/glbench-0.0.1-r15.ebuild b/chromeos-base/glbench/glbench-0.0.1-r15.ebuild
deleted file mode 100644
index a395335..0000000
--- a/chromeos-base/glbench/glbench-0.0.1-r15.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2019 The Chromium OS Authros. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="7c9c8dde6e5540bc13e4ec3ad9a7da357011411d"
-CROS_WORKON_TREE="a06262f549ab04d57db55306d37d111faa5e47a9"
-CROS_WORKON_PROJECT="chromiumos/platform/glbench"
-
-inherit cros-workon
-
-DESCRIPTION="Microbenchmark for opengl/gles"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/glbench/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="opengl opengles"
-
-COMMON_DEPEND="
-	>=dev-cpp/gflags-2.0:=
-	media-libs/libpng:=
-	virtual/opengles:=
-	media-libs/waffle:="
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}
-	x11-drivers/opengles-headers:="
-
-src_compile() {
-	emake -C src
-}
-
-src_install() {
-	local glbench_dir="/usr/local/${PN}"
-
-	# Install the executable.
-	exeinto "${glbench_dir}/bin"
-	doexe glbench windowmanagertest
-
-	# Install the list files.
-	insinto "${glbench_dir}/files"
-	doins glbench_fixedbad_images.txt
-	doins glbench_knownbad_images.txt
-	doins glbench_reference_images.txt
-}
diff --git a/chromeos-base/glbench/glbench-0.0.1-r17.ebuild b/chromeos-base/glbench/glbench-0.0.1-r17.ebuild
new file mode 100644
index 0000000..fa76190
--- /dev/null
+++ b/chromeos-base/glbench/glbench-0.0.1-r17.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2019 The Chromium OS Authros. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="e96d7c6a57b16c7f4a265506f86ea827f8e23c6f"
+CROS_WORKON_TREE="809488d2c59844b032584c7972e75eb3fe498bba"
+CROS_WORKON_PROJECT="chromiumos/platform/glbench"
+
+inherit cros-workon
+
+DESCRIPTION="Microbenchmark for opengl/gles"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/glbench/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="opengl opengles"
+
+COMMON_DEPEND="
+	>=dev-cpp/gflags-2.0:=
+	media-libs/libpng:=
+	virtual/opengles:=
+	media-libs/waffle:="
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	x11-drivers/opengles-headers:="
+
+src_compile() {
+	emake -C src
+}
+
+src_install() {
+	local glbench_dir="/usr/local/${PN}"
+
+	# Install the executable.
+	exeinto "${glbench_dir}/bin"
+	doexe glbench windowmanagertest
+
+	# Install the list files.
+	insinto "${glbench_dir}/files"
+	doins glbench_fixedbad_images.txt
+	doins glbench_knownbad_images.txt
+	doins glbench_reference_images.txt
+}
diff --git a/chromeos-base/glib-bridge/glib-bridge-0.0.1-r175.ebuild b/chromeos-base/glib-bridge/glib-bridge-0.0.1-r175.ebuild
deleted file mode 100644
index acf92a6..0000000
--- a/chromeos-base/glib-bridge/glib-bridge-0.0.1-r175.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "0477fd01ac7704e38511a9cccaa4b4c3377ba146" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk glib-bridge .gn"
-
-PLATFORM_SUBDIR="glib-bridge"
-
-inherit cros-workon platform
-
-DESCRIPTION="libchrome-glib message loop bridge"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/glib-bridge"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	dev-libs/glib:="
-
-DEPEND="${RDEPEND}"
-
-src_install() {
-	dolib.so "${OUT}"/lib/libglib_bridge.so
-
-	# Install headers.
-	insinto /usr/include/glib-bridge
-	doins *.h
-
-	# Install pc file.
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}"/obj/glib-bridge/libglib_bridge.pc
-}
-
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/glib_bridge_test_runner"
-}
diff --git a/chromeos-base/glib-bridge/glib-bridge-0.0.1-r202.ebuild b/chromeos-base/glib-bridge/glib-bridge-0.0.1-r202.ebuild
new file mode 100644
index 0000000..7554b1b
--- /dev/null
+++ b/chromeos-base/glib-bridge/glib-bridge-0.0.1-r202.ebuild
@@ -0,0 +1,46 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a0d78fc5cbcc8bce3d024656c530b5b8a045d633" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk glib-bridge .gn"
+
+PLATFORM_SUBDIR="glib-bridge"
+
+inherit cros-workon platform
+
+DESCRIPTION="libchrome-glib message loop bridge"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/glib-bridge"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	dev-libs/glib:="
+
+DEPEND="${RDEPEND}"
+
+src_install() {
+	dolib.so "${OUT}"/lib/libglib_bridge.so
+
+	# Install headers.
+	insinto /usr/include/glib-bridge
+	doins *.h
+
+	# Install pc file.
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}"/obj/glib-bridge/libglib_bridge.pc
+}
+
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/glib_bridge_test_runner"
+}
diff --git a/chromeos-base/goldctl/Manifest b/chromeos-base/goldctl/Manifest
new file mode 100644
index 0000000..661d60c
--- /dev/null
+++ b/chromeos-base/goldctl/Manifest
@@ -0,0 +1,4 @@
+DIST goldctl-2021.03.31-amd64.zip 9940456 BLAKE2B 05a7c03e2e8ef8916b2ae2bb257d23d7f14b29c5fb9ed42edcfdb62285a4e852c8174261fb9f3438a2960ee4c629243dc994d76154bb561c6f856730799fec8c SHA512 75b4b9234c71698f239985ef50e7beb9bfba98238d3dd5ae99fe8fe485c40206031391494951d5160d8bf9bcf72e74493042e715790fd5610bea0ce874bb8a4d
+DIST goldctl-2021.03.31-arm.zip 9270000 BLAKE2B 51dc540a6eb855922c1bcd3cfc368d39a5234df18ac284ddc7c0672d2fa3821423bbd371aa75ec3f39a113b35c1f7f073d1c171479f802ae5680c52d50d97a68 SHA512 d36a4e95158536f02a686ce862f35ae4bfd9fdd8c8ee2b0c15b452d3df9ad01067931fdcdec65dbb419188b4242f5f7be4ff34dbd6969c84c21c1ca459a57675
+DIST goldctl-2021.03.31-arm64.zip 9316162 BLAKE2B 45ef1c2e6a6eed7a979b9b9fa5b2127cfedd9f56a97b601eba57ec953fab82209bd323a60685d89b5d73e539c59493976212ceb0da66f1e5d6e2a71f91298a46 SHA512 2f267a7226734aa0bba079a31b925e290f6aa4538639155b9df665cf407bb84ed905c3bf737216f997f5f410d1260684a2cc57d5cc15b984c59a4ae44ffbee48
+DIST goldctl-2021.03.31-x86.zip 9646559 BLAKE2B 87c4bc4ab3c843c3d486e5635e5a44184ff8b859fd1423c1840dd66cb8ebc757200651c8eddd2bf18093c5d433f0f7d6a7d97b05824cec551d4d558771229195 SHA512 61fd52c7bbdacc4987eae3b5747b14a8fe07347fd6d881fd66297ae7db7a79a3211b69a38f0f519b2a39ef9fe9062b95cf89b6b073a4d196ffac66b61d0938d9
diff --git a/chromeos-base/goldctl/OWNERS b/chromeos-base/goldctl/OWNERS
new file mode 100644
index 0000000..95bc836
--- /dev/null
+++ b/chromeos-base/goldctl/OWNERS
@@ -0,0 +1,5 @@
+msta@chromium.org
+mwarton@chromium.org
+
+# Also owned by tast framework owners, since they're the ones that use this.
+include chromiumos/platform/tast:/OWNERS
diff --git a/chromeos-base/goldctl/goldctl-2021.03.31-r1.ebuild b/chromeos-base/goldctl/goldctl-2021.03.31-r1.ebuild
new file mode 100644
index 0000000..415e1f6
--- /dev/null
+++ b/chromeos-base/goldctl/goldctl-2021.03.31-r1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# When the time comes to roll to a new version, run the following for each architecture:
+# $ cipd resolve skia/tools/goldctl/linux-${ARCH} -version latest
+# Latest as of 2021-03-31
+SRC_URI="
+	amd64? ( cipd://skia/tools/goldctl/linux-amd64:0ov3TUTdHjrpXdmomZUYhtozjUPAOWj5pFnLb_wSN3cC  -> ${P}-amd64.zip )
+	x86?   ( cipd://skia/tools/goldctl/linux-386:lSVGG0WGcohimf9T2UCs35aMvQ4T8-cfZ84hZEZfrLsC    -> ${P}-x86.zip )
+	arm64? ( cipd://skia/tools/goldctl/linux-arm64:NphODeY7HYsq6sZxzXGhwKkVtuoXWQkJT0rsVuzuwsIC  -> ${P}-arm64.zip )
+	arm?   ( cipd://skia/tools/goldctl/linux-armv6l:R5kIju7TxEtjEaSnw9Q0coLcVVcCeIm0p5VQM2ka00oC -> ${P}-arm.zip )
+"
+
+DESCRIPTION="This command-line tool lets clients upload images to gold"
+HOMEPAGE="https://skia.googlesource.com/buildbot/+/HEAD/gold-client/"
+RESTRICT="mirror"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+S="${WORKDIR}"
+
+src_install() {
+	if [[ ! -e "goldctl" ]]; then
+		cat > "goldctl" <<EOF
+#!/bin/sh
+
+echo "Goldctl binary is not supported on the architecture ${ARCH}." >&2
+exit 1
+
+EOF
+	fi
+	dobin goldctl
+}
diff --git a/chromeos-base/goldfishd/goldfishd-0.0.1-r482.ebuild b/chromeos-base/goldfishd/goldfishd-0.0.1-r482.ebuild
deleted file mode 100644
index 4b95b6a..0000000
--- a/chromeos-base/goldfishd/goldfishd-0.0.1-r482.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "639a8c5a575a0d7908a87bf99839c62c8af18e2b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk goldfishd .gn"
-
-PLATFORM_SUBDIR="goldfishd"
-
-inherit cros-workon platform
-
-DESCRIPTION="Android Emulator Daemon for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/goldfishd/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-RDEPEND="
-	chromeos-base/autotest-client
-	"
-
-src_install() {
-	dobin "${OUT}"/goldfishd
-
-	insinto /etc/init
-	doins init/*.conf
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/goldfishd_test_runner"
-}
diff --git a/chromeos-base/goldfishd/goldfishd-0.0.1-r508.ebuild b/chromeos-base/goldfishd/goldfishd-0.0.1-r508.ebuild
new file mode 100644
index 0000000..6edfbe9
--- /dev/null
+++ b/chromeos-base/goldfishd/goldfishd-0.0.1-r508.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "4c8cf5f4cf1d65ee1fbdfee54cce3754acaa9159" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk goldfishd .gn"
+
+PLATFORM_SUBDIR="goldfishd"
+
+inherit cros-workon platform
+
+DESCRIPTION="Android Emulator Daemon for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/goldfishd/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/autotest-client
+	"
+
+src_install() {
+	dobin "${OUT}"/goldfishd
+
+	insinto /etc/init
+	doins init/*.conf
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/goldfishd_test_runner"
+}
diff --git a/chromeos-base/google-breakpad/google-breakpad-2021.01.04.224921-r194.ebuild b/chromeos-base/google-breakpad/google-breakpad-2021.01.04.224921-r194.ebuild
deleted file mode 100644
index f9828d5..0000000
--- a/chromeos-base/google-breakpad/google-breakpad-2021.01.04.224921-r194.ebuild
+++ /dev/null
@@ -1,155 +0,0 @@
-# Copyright 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("f469cab97b56b79107ce943e13b375add2676d17" "fd00dbbd0c06a309c657d89e9430143b179ff6db")
-CROS_WORKON_TREE=("184089dceb0b42d62ecd2f855f5631f6e6382c75" "5df994fdcdfab0b9b21d11fa25545442eae001e5")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/google-breakpad"
-	"linux-syscall-support"
-)
-CROS_WORKON_LOCALNAME=(
-	"third_party/breakpad"
-	"third_party/breakpad/src/third_party/lss"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}"
-	"${S}/src/third_party/lss"
-)
-
-inherit cros-arm64 cros-i686 cros-workon flag-o-matic multiprocessing
-
-DESCRIPTION="Google crash reporting"
-HOMEPAGE="https://chromium.googlesource.com/breakpad/breakpad"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="-alltests cros_host test"
-
-COMMON_DEPEND="net-misc/curl:="
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}
-	test? (
-		dev-cpp/gtest:=
-	)
-"
-
-src_prepare() {
-	default
-	find "${S}" -type f -exec touch -r "${S}"/configure {} +
-}
-
-src_configure() {
-	append-flags -g
-
-	# Disable flaky tests by default.  Do it here because the CPPFLAGS
-	# are recorded at configure time and not read on the fly.
-	# http://crbug.com/359999
-	use alltests && append-cppflags -DENABLE_FLAKY_TESTS
-
-	multijob_init
-
-	mkdir build
-	pushd build >/dev/null || die
-	ECONF_SOURCE=${S} multijob_child_init econf --enable-system-test-libs
-	popd >/dev/null || die
-
-	if use cros_host || use_i686; then
-		# The mindump code is still wordsize specific.  Needs to be redone
-		# like https://chromium.googlesource.com/breakpad/breakpad/+/4116671cbff9e99fbd834a1b2cdd174226b78c7c
-		einfo "Configuring 32-bit build"
-		mkdir work32
-		pushd work32 >/dev/null
-		use cros_host && append-flags "-m32"
-		use_i686 && push_i686_env
-		ECONF_SOURCE=${S} multijob_child_init econf
-		use_i686 && pop_i686_env
-		use cros_host && filter-flags "-m32"
-		popd >/dev/null
-	fi
-
-	if use_arm64; then
-		# The mindump code is still wordsize specific.  Needs to be redone
-		# like https://chromium.googlesource.com/breakpad/breakpad/+/4116671cbff9e99fbd834a1b2cdd174226b78c7c
-		einfo "Configuring 64-bit build"
-		mkdir work64
-		pushd work64 >/dev/null
-		use_arm64 && push_arm64_env
-		ECONF_SOURCE=${S} multijob_child_init econf
-		use_arm64 && pop_arm64_env
-		popd >/dev/null
-	fi
-
-	multijob_finish
-}
-
-src_compile() {
-	emake -C build
-
-	if use cros_host; then
-		einfo "Building 32-bit tools"
-		emake -C work32 \
-			src/tools/linux/md2core/minidump-2-core
-	fi
-
-	if use_i686; then
-		einfo "Building 32-bit library"
-		push_i686_env
-		emake -C work32 src/client/linux/libbreakpad_client.a
-		pop_i686_env
-	fi
-
-	if use_arm64; then
-		einfo "Building 64-bit library"
-		push_arm64_env
-		emake -C work64 src/client/linux/libbreakpad_client.a
-		pop_arm64_env
-	fi
-}
-
-src_test() {
-	if ! use x86 && ! use amd64 ; then
-		einfo Skipping unit tests on non-x86 platform
-		return
-	fi
-	emake -C build check
-}
-
-src_install() {
-	pushd build >/dev/null
-	emake DESTDIR="${D}" install
-	dobin src/tools/linux/core2md/core2md \
-	      src/tools/linux/md2core/minidump-2-core \
-	      src/tools/linux/dump_syms/dump_syms \
-	      src/tools/linux/symupload/sym_upload \
-	      src/tools/linux/symupload/minidump_upload
-	popd >/dev/null
-
-	insinto /usr/include/google-breakpad/client/linux/handler
-	doins src/client/linux/handler/*.h
-	insinto /usr/include/google-breakpad/client/linux/crash_generation
-	doins src/client/linux/crash_generation/*.h
-	insinto /usr/include/google-breakpad/common/linux
-	doins src/common/linux/*.h
-	insinto /usr/include/google-breakpad/processor
-	doins src/processor/*.h
-
-	if use cros_host; then
-		newbin work32/src/tools/linux/md2core/minidump-2-core \
-		       minidump-2-core.32
-	fi
-
-	if use_i686; then
-		push_i686_env
-		dolib.a work32/src/client/linux/libbreakpad_client.a
-		pop_i686_env
-	fi
-
-	if use_arm64; then
-		push_arm64_env
-		dolib.a work64/src/client/linux/libbreakpad_client.a
-		pop_arm64_env
-	fi
-}
diff --git a/chromeos-base/google-breakpad/google-breakpad-2021.06.11.172551-r204.ebuild b/chromeos-base/google-breakpad/google-breakpad-2021.06.11.172551-r204.ebuild
new file mode 100644
index 0000000..b821e45
--- /dev/null
+++ b/chromeos-base/google-breakpad/google-breakpad-2021.06.11.172551-r204.ebuild
@@ -0,0 +1,156 @@
+# Copyright 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("a524a1e24b19dcb3605190e5e9bb1b0f10ca8be8" "e1e7b0ad8ee99a875b272c8e33e308472e897660")
+CROS_WORKON_TREE=("e6ad581adc61b514dfbd11029be8b43a1c0f52a1" "c2034bc1106379848e2c8c7b68f40d13b3c09097")
+CROS_WORKON_PROJECT=(
+	"breakpad/breakpad"
+	"linux-syscall-support"
+)
+CROS_WORKON_LOCALNAME=(
+	"third_party/breakpad"
+	"third_party/breakpad/src/third_party/lss"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}"
+	"${S}/src/third_party/lss"
+)
+
+inherit cros-arm64 cros-i686 cros-workon flag-o-matic multiprocessing
+
+DESCRIPTION="Google crash reporting"
+HOMEPAGE="https://chromium.googlesource.com/breakpad/breakpad"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="-alltests cros_host test"
+
+COMMON_DEPEND="net-misc/curl:="
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	test? (
+		dev-cpp/gtest:=
+	)
+"
+
+src_prepare() {
+	default
+	find "${S}" -type f -exec touch -r "${S}"/configure {} +
+}
+
+src_configure() {
+	append-flags -g
+
+	# Disable flaky tests by default.  Do it here because the CPPFLAGS
+	# are recorded at configure time and not read on the fly.
+	# http://crbug.com/359999
+	use alltests && append-cppflags -DENABLE_FLAKY_TESTS
+
+	multijob_init
+
+	mkdir build
+	pushd build >/dev/null || die
+	ECONF_SOURCE=${S} multijob_child_init econf --enable-system-test-libs \
+		--bindir="$(usex cros_host /usr/bin /usr/local/bin)"
+	popd >/dev/null || die
+
+	if use cros_host || use_i686; then
+		# The mindump code is still wordsize specific.  Needs to be redone
+		# like https://chromium.googlesource.com/breakpad/breakpad/+/4116671cbff9e99fbd834a1b2cdd174226b78c7c
+		einfo "Configuring 32-bit build"
+		mkdir work32
+		pushd work32 >/dev/null
+		use cros_host && append-flags "-m32"
+		use_i686 && push_i686_env
+		ECONF_SOURCE=${S} multijob_child_init econf
+		use_i686 && pop_i686_env
+		use cros_host && filter-flags "-m32"
+		popd >/dev/null
+	fi
+
+	if use_arm64; then
+		# The mindump code is still wordsize specific.  Needs to be redone
+		# like https://chromium.googlesource.com/breakpad/breakpad/+/4116671cbff9e99fbd834a1b2cdd174226b78c7c
+		einfo "Configuring 64-bit build"
+		mkdir work64
+		pushd work64 >/dev/null
+		use_arm64 && push_arm64_env
+		ECONF_SOURCE=${S} multijob_child_init econf
+		use_arm64 && pop_arm64_env
+		popd >/dev/null
+	fi
+
+	multijob_finish
+}
+
+src_compile() {
+	emake -C build
+
+	if use cros_host; then
+		einfo "Building 32-bit tools"
+		emake -C work32 \
+			src/tools/linux/md2core/minidump-2-core
+	fi
+
+	if use_i686; then
+		einfo "Building 32-bit library"
+		push_i686_env
+		emake -C work32 src/client/linux/libbreakpad_client.a
+		pop_i686_env
+	fi
+
+	if use_arm64; then
+		einfo "Building 64-bit library"
+		push_arm64_env
+		emake -C work64 src/client/linux/libbreakpad_client.a
+		pop_arm64_env
+	fi
+}
+
+src_test() {
+	if ! use x86 && ! use amd64 ; then
+		einfo Skipping unit tests on non-x86 platform
+		return
+	fi
+	emake -C build check
+}
+
+src_install() {
+	emake -C build DESTDIR="${D}" install
+
+	# Move core2md to the rootfs. It's not only for tests but also used on
+	# shipped devices.
+	dodir /usr/bin
+	if ! use cros_host; then
+		mv "${D}/usr/local/bin/core2md" "${D}/usr/bin/core2md" || die
+	fi
+
+	insinto /usr/include/google-breakpad/client/linux/handler
+	doins src/client/linux/handler/*.h
+	insinto /usr/include/google-breakpad/client/linux/crash_generation
+	doins src/client/linux/crash_generation/*.h
+	insinto /usr/include/google-breakpad/common/linux
+	doins src/common/linux/*.h
+	insinto /usr/include/google-breakpad/processor
+	doins src/processor/*.h
+
+	if use cros_host; then
+		newbin work32/src/tools/linux/md2core/minidump-2-core \
+		       minidump-2-core.32
+	fi
+
+	if use_i686; then
+		push_i686_env
+		dolib.a work32/src/client/linux/libbreakpad_client.a
+		pop_i686_env
+	fi
+
+	if use_arm64; then
+		push_arm64_env
+		dolib.a work64/src/client/linux/libbreakpad_client.a
+		pop_arm64_env
+	fi
+}
diff --git a/chromeos-base/google-breakpad/google-breakpad-9999.ebuild b/chromeos-base/google-breakpad/google-breakpad-9999.ebuild
index 25db4f5..73f0abb 100644
--- a/chromeos-base/google-breakpad/google-breakpad-9999.ebuild
+++ b/chromeos-base/google-breakpad/google-breakpad-9999.ebuild
@@ -4,7 +4,7 @@
 EAPI=7
 
 CROS_WORKON_PROJECT=(
-	"chromiumos/platform/google-breakpad"
+	"breakpad/breakpad"
 	"linux-syscall-support"
 )
 CROS_WORKON_LOCALNAME=(
@@ -51,7 +51,8 @@
 
 	mkdir build
 	pushd build >/dev/null || die
-	ECONF_SOURCE=${S} multijob_child_init econf --enable-system-test-libs
+	ECONF_SOURCE=${S} multijob_child_init econf --enable-system-test-libs \
+		--bindir="$(usex cros_host /usr/bin /usr/local/bin)"
 	popd >/dev/null || die
 
 	if use cros_host || use_i686; then
@@ -116,14 +117,14 @@
 }
 
 src_install() {
-	pushd build >/dev/null
-	emake DESTDIR="${D}" install
-	dobin src/tools/linux/core2md/core2md \
-	      src/tools/linux/md2core/minidump-2-core \
-	      src/tools/linux/dump_syms/dump_syms \
-	      src/tools/linux/symupload/sym_upload \
-	      src/tools/linux/symupload/minidump_upload
-	popd >/dev/null
+	emake -C build DESTDIR="${D}" install
+
+	# Move core2md to the rootfs. It's not only for tests but also used on
+	# shipped devices.
+	dodir /usr/bin
+	if ! use cros_host; then
+		mv "${D}/usr/local/bin/core2md" "${D}/usr/bin/core2md" || die
+	fi
 
 	insinto /usr/include/google-breakpad/client/linux/handler
 	doins src/client/linux/handler/*.h
diff --git a/chromeos-base/graphics-utils-go/graphics-utils-go-0.0.1-r85.ebuild b/chromeos-base/graphics-utils-go/graphics-utils-go-0.0.1-r85.ebuild
deleted file mode 100644
index 47a2587..0000000
--- a/chromeos-base/graphics-utils-go/graphics-utils-go-0.0.1-r85.ebuild
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="c742a876c331d74ba271a5e80a1cbfeb3df0c6e3"
-CROS_WORKON_TREE="3ef0e7f190df0b27d79a06832b6ec37e064166a6"
-CROS_WORKON_PROJECT="chromiumos/platform/graphics"
-CROS_WORKON_LOCALNAME="platform/graphics"
-
-INSTALL_DIR="/usr/local/graphics"
-
-CROS_GO_BINARIES=(
-	# Add more apps here.
-	"sanity/cmd/pass:${INSTALL_DIR}/pass"
-	"trace_profiling/cmd/analyze:${INSTALL_DIR}/analyze"
-	"trace_profiling/cmd/gen_db_result:${INSTALL_DIR}/get_device_info"
-	"trace_profiling/cmd/harvest:${INSTALL_DIR}/harvest"
-	"trace_profiling/cmd/merge:${INSTALL_DIR}/merge"
-	"trace_profiling/cmd/profile:${INSTALL_DIR}/profile"
-	"trace_replay/cmd/trace_replay:${INSTALL_DIR}/trace_replay"
-)
-
-CROS_GO_TEST=(
-	"sanity/cmd/pass"
-	"trace_profiling/cmd/analyze"
-	"trace_profiling/cmd/gen_db_result"
-	"trace_profiling/cmd/merge"
-	"trace_profiling/cmd/profile"
-	"trace_replay/cmd/trace_replay"
-)
-
-CROS_GO_VET=(
-	"${CROS_GO_TEST[@]}"
-)
-
-inherit cros-go cros-workon
-SRC_URI="$(cros-go_src_uri)"
-
-DESCRIPTION="Portable graphics utils written in go"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/graphics/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="
-	chromeos-base/cros-config-api
-	dev-go/crypto
-	dev-go/fogleman-gg
-	dev-go/go-image
-	dev-go/gofpdf
-	dev-go/golang-freetype
-	dev-go/gonum-plot
-	dev-go/protobuf
-	dev-go/readline
-	dev-go/svgo
-"
-
-RDEPEND="${DEPEND}"
-
-src_prepare() {
-	# Disable cgo and PIE on building Tast binaries. See:
-	# https://crbug.com/976196
-	# https://github.com/golang/go/issues/30986#issuecomment-475626018
-	export CGO_ENABLED=0
-	export GOPIE=0
-
-	default
-}
diff --git a/chromeos-base/graphics-utils-go/graphics-utils-go-0.0.1-r92.ebuild b/chromeos-base/graphics-utils-go/graphics-utils-go-0.0.1-r92.ebuild
new file mode 100644
index 0000000..b8f5649
--- /dev/null
+++ b/chromeos-base/graphics-utils-go/graphics-utils-go-0.0.1-r92.ebuild
@@ -0,0 +1,72 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="48357ff580552576c8163ad53d1cc9bf75f113dc"
+CROS_WORKON_TREE="ee2a831469eb4e62c271b95b55a9b8eaa7706529"
+CROS_WORKON_PROJECT="chromiumos/platform/graphics"
+CROS_WORKON_LOCALNAME="platform/graphics"
+
+INSTALL_DIR="/usr/local/graphics"
+
+CROS_GO_BINARIES=(
+	# Add more apps here.
+	"platform_decoding/cmd/validate:${INSTALL_DIR}/validate"
+	"sanity/cmd/pass:${INSTALL_DIR}/pass"
+	"trace_profiling/cmd/analyze:${INSTALL_DIR}/analyze"
+	"trace_profiling/cmd/gen_db_result:${INSTALL_DIR}/get_device_info"
+	"trace_profiling/cmd/harvest:${INSTALL_DIR}/harvest"
+	"trace_profiling/cmd/merge:${INSTALL_DIR}/merge"
+	"trace_profiling/cmd/profile:${INSTALL_DIR}/profile"
+	"trace_replay/cmd/trace_replay:${INSTALL_DIR}/trace_replay"
+)
+
+CROS_GO_TEST=(
+	"platform_decoding/cmd/validate"
+	"sanity/cmd/pass"
+	"trace_profiling/cmd/analyze"
+	"trace_profiling/cmd/gen_db_result"
+	"trace_profiling/cmd/merge"
+	"trace_profiling/cmd/profile"
+	"trace_replay/cmd/trace_replay"
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+inherit cros-go cros-workon
+SRC_URI="$(cros-go_src_uri)"
+
+DESCRIPTION="Portable graphics utils written in go"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/graphics/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	chromeos-base/cros-config-api
+	dev-go/crypto
+	dev-go/fogleman-gg
+	dev-go/go-image
+	dev-go/gofpdf
+	dev-go/golang-freetype
+	dev-go/gonum-plot
+	dev-go/protobuf
+	dev-go/readline
+	dev-go/svgo
+"
+
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+	# Disable cgo and PIE on building Tast binaries. See:
+	# https://crbug.com/976196
+	# https://github.com/golang/go/issues/30986#issuecomment-475626018
+	export CGO_ENABLED=0
+	export GOPIE=0
+
+	default
+}
diff --git a/chromeos-base/graphics-utils-go/graphics-utils-go-9999.ebuild b/chromeos-base/graphics-utils-go/graphics-utils-go-9999.ebuild
index 769a2ed..ab45e50 100644
--- a/chromeos-base/graphics-utils-go/graphics-utils-go-9999.ebuild
+++ b/chromeos-base/graphics-utils-go/graphics-utils-go-9999.ebuild
@@ -9,6 +9,7 @@
 
 CROS_GO_BINARIES=(
 	# Add more apps here.
+	"platform_decoding/cmd/validate:${INSTALL_DIR}/validate"
 	"sanity/cmd/pass:${INSTALL_DIR}/pass"
 	"trace_profiling/cmd/analyze:${INSTALL_DIR}/analyze"
 	"trace_profiling/cmd/gen_db_result:${INSTALL_DIR}/get_device_info"
@@ -19,6 +20,7 @@
 )
 
 CROS_GO_TEST=(
+	"platform_decoding/cmd/validate"
 	"sanity/cmd/pass"
 	"trace_profiling/cmd/analyze"
 	"trace_profiling/cmd/gen_db_result"
diff --git a/chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r533.ebuild b/chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r533.ebuild
deleted file mode 100644
index 3c79cc7..0000000
--- a/chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r533.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="85109a843d7310588ec7feea6775ace121125882"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4b29e9b6cad8bdca14a0c7b30b204bffcee041c7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk hammerd .gn"
-
-PLATFORM_SUBDIR="hammerd"
-
-PYTHON_COMPAT=( python3_{6..8} )
-
-inherit cros-workon platform distutils-r1
-
-DESCRIPTION="Python wrapper of hammerd API and some python utility scripts."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/hammerd/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+hammerd_api"
-
-BDEPEND="
-	dev-python/setuptools[${PYTHON_USEDEP}]
-"
-RDEPEND="
-	chromeos-base/hammerd:=
-"
-DEPEND="${RDEPEND}"
-
-src_configure() {
-	platform_src_configure
-	distutils-r1_src_configure
-}
-
-src_compile() {
-	platform_src_compile
-	distutils-r1_src_compile
-}
-
-src_install() {
-	# Install exposed API.
-	dolib.so "${OUT}"/lib/libhammerd-api.so
-	insinto /usr/include/hammerd/
-	doins hammerd_api.h
-	distutils-r1_src_install
-
-	# Install hammer base tests on dut
-	dodir /usr/local/bin/hammertests
-	cp -R "${S}/hammertests" "${D}/usr/local/bin"
-}
diff --git a/chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r568.ebuild b/chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r568.ebuild
new file mode 100644
index 0000000..15b5c8b
--- /dev/null
+++ b/chromeos-base/hammerd-test-utils/hammerd-test-utils-0.0.1-r568.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "34e232daea866bc143a645ad413e0abb368929ee" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk hammerd .gn"
+
+PLATFORM_SUBDIR="hammerd"
+
+PYTHON_COMPAT=( python3_{6..8} )
+
+inherit cros-workon platform distutils-r1
+
+DESCRIPTION="Python wrapper of hammerd API and some python utility scripts."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/hammerd/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+hammerd_api"
+
+BDEPEND="
+	dev-python/setuptools[${PYTHON_USEDEP}]
+"
+RDEPEND="
+	chromeos-base/hammerd:=
+"
+DEPEND="${RDEPEND}"
+
+src_configure() {
+	platform_src_configure
+	distutils-r1_src_configure
+}
+
+src_compile() {
+	platform_src_compile
+	distutils-r1_src_compile
+}
+
+src_install() {
+	# Install exposed API.
+	dolib.so "${OUT}"/lib/libhammerd-api.so
+	insinto /usr/include/hammerd/
+	doins hammerd_api.h
+	distutils-r1_src_install
+
+	# Install hammer base tests on dut
+	dodir /usr/local/bin/hammertests
+	cp -R "${S}/hammertests" "${D}/usr/local/bin"
+}
diff --git a/chromeos-base/hammerd/hammerd-0.0.1-r1030.ebuild b/chromeos-base/hammerd/hammerd-0.0.1-r1030.ebuild
new file mode 100644
index 0000000..4b06837
--- /dev/null
+++ b/chromeos-base/hammerd/hammerd-0.0.1-r1030.ebuild
@@ -0,0 +1,66 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "34e232daea866bc143a645ad413e0abb368929ee" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk hammerd .gn"
+
+PLATFORM_SUBDIR="hammerd"
+
+inherit cros-workon platform user
+
+DESCRIPTION="A daemon to update EC firmware of hammer, the base of the detachable."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/hammerd/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="-hammerd_api fuzzer"
+
+RDEPEND="
+	chromeos-base/ec-utils:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/vboot_reference:=
+	dev-libs/openssl:0=
+	sys-apps/flashmap:=
+"
+DEPEND="
+	${RDEPEND}
+	chromeos-base/system_api:=[fuzzer?]
+"
+
+pkg_preinst() {
+	# Create user and group for hammerd
+	enewuser "hammerd"
+	enewgroup "hammerd"
+}
+
+src_install() {
+	dobin "${OUT}/hammerd"
+
+	# Install upstart configs and scripts.
+	insinto /etc/init
+	doins init/*.conf
+	exeinto /usr/share/cros/init
+	doexe init/*.sh
+
+	# Install DBus config.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.hammerd.conf
+
+	# Install rsyslog config.
+	insinto /etc/rsyslog.d
+	doins rsyslog/rsyslog.hammerd.conf
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/hammerd_load_ec_image_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/hammerd_update_fw_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/unittest_runner"
+}
diff --git a/chromeos-base/hammerd/hammerd-0.0.1-r995.ebuild b/chromeos-base/hammerd/hammerd-0.0.1-r995.ebuild
deleted file mode 100644
index 77516e4..0000000
--- a/chromeos-base/hammerd/hammerd-0.0.1-r995.ebuild
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="85109a843d7310588ec7feea6775ace121125882"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4b29e9b6cad8bdca14a0c7b30b204bffcee041c7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk hammerd .gn"
-
-PLATFORM_SUBDIR="hammerd"
-
-inherit cros-workon platform user
-
-DESCRIPTION="A daemon to update EC firmware of hammer, the base of the detachable."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/hammerd/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="-hammerd_api fuzzer"
-
-RDEPEND="
-	chromeos-base/ec-utils:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/vboot_reference:=
-	dev-libs/openssl:0=
-	sys-apps/flashmap:=
-"
-DEPEND="
-	${RDEPEND}
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-pkg_preinst() {
-	# Create user and group for hammerd
-	enewuser "hammerd"
-	enewgroup "hammerd"
-}
-
-src_install() {
-	dobin "${OUT}/hammerd"
-
-	# Install upstart configs and scripts.
-	insinto /etc/init
-	doins init/*.conf
-	exeinto /usr/share/cros/init
-	doexe init/*.sh
-
-	# Install DBus config.
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.hammerd.conf
-
-	# Install rsyslog config.
-	insinto /etc/rsyslog.d
-	doins rsyslog/rsyslog.hammerd.conf
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/hammerd_load_ec_image_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/hammerd_update_fw_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/unittest_runner"
-}
diff --git a/chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r209.ebuild b/chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r209.ebuild
deleted file mode 100644
index fa0be07..0000000
--- a/chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r209.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "580e5f512f707afbf93a05e1bfc01b7413e8a60f" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk hardware_verifier metrics .gn"
-
-PLATFORM_SUBDIR="hardware_verifier"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Hardware Verifier Tool/Lib for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/hardware_verifier/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-DEPEND="
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/system_api:=
-	chromeos-base/vboot_reference:=
-"
-
-pkg_preinst() {
-	# Create user and group for hardware_verifier
-	enewuser "hardware_verifier"
-	enewgroup "hardware_verifier"
-}
-
-src_install() {
-	dobin "${OUT}/hardware_verifier"
-
-	insinto /etc/init
-	doins init/hardware-verifier.conf
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/unittest_runner"
-}
diff --git a/chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r282.ebuild b/chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r282.ebuild
new file mode 100644
index 0000000..3999d20
--- /dev/null
+++ b/chromeos-base/hardware_verifier/hardware_verifier-0.0.1-r282.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="0553127ef2b660a5c71f12a9417ed4ad35f07120"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "aa0612733aca2d5ffa65470f07408228b473ebdb" "55818261ee7cf7ee7aaa319bfc67f186c8143b31" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 hardware_verifier metrics .gn"
+
+PLATFORM_SUBDIR="hardware_verifier"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Hardware Verifier Tool/Lib for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/hardware_verifier/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="generated_cros_config unibuild"
+
+DEPEND="
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config:= )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	chromeos-base/chromeos-config-tools:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/system_api:=
+	chromeos-base/vboot_reference:=
+"
+
+pkg_preinst() {
+	# Create user and group for hardware_verifier
+	enewuser "hardware_verifier"
+	enewgroup "hardware_verifier"
+}
+
+src_install() {
+	dobin "${OUT}/hardware_verifier"
+
+	insinto /etc/init
+	doins init/hardware-verifier.conf
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/unittest_runner"
+}
diff --git a/chromeos-base/hardware_verifier/hardware_verifier-9999.ebuild b/chromeos-base/hardware_verifier/hardware_verifier-9999.ebuild
index 811a6fc..32a93df 100644
--- a/chromeos-base/hardware_verifier/hardware_verifier-9999.ebuild
+++ b/chromeos-base/hardware_verifier/hardware_verifier-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 hardware_verifier metrics .gn"
+CROS_WORKON_SUBTREE="common-mk chromeos-config hardware_verifier metrics .gn"
 
 PLATFORM_SUBDIR="hardware_verifier"
 
@@ -18,8 +18,14 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
+IUSE="generated_cros_config unibuild"
 
 DEPEND="
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config:= )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	chromeos-base/chromeos-config-tools:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/system_api:=
 	chromeos-base/vboot_reference:=
diff --git a/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r110.ebuild b/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r110.ebuild
deleted file mode 100644
index fa7cee3..0000000
--- a/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r110.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "580e5f512f707afbf93a05e1bfc01b7413e8a60f" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_GO_PACKAGES=(
-	"chromiumos/hardware_verifier/..."
-)
-
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk hardware_verifier metrics .gn"
-
-PLATFORM_SUBDIR="hardware_verifier/proto"
-
-inherit cros-workon cros-go platform
-
-DESCRIPTION="Hardware Verifier go proto for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/hardware_verifier/proto"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-DEPEND="
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/system_api:=
-	chromeos-base/vboot_reference:=
-	dev-go/protobuf
-"
-
-src_unpack() {
-	platform_src_unpack
-	CROS_GO_WORKSPACE="${OUT}/gen/go"
-}
-
-src_install() {
-	cros-go_src_install
-}
diff --git a/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r182.ebuild b/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r182.ebuild
new file mode 100644
index 0000000..5285cc2
--- /dev/null
+++ b/chromeos-base/hardware_verifier_proto/hardware_verifier_proto-0.0.1-r182.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="0553127ef2b660a5c71f12a9417ed4ad35f07120"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "55818261ee7cf7ee7aaa319bfc67f186c8143b31" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_GO_PACKAGES=(
+	"chromiumos/hardware_verifier/..."
+)
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk hardware_verifier metrics .gn"
+
+PLATFORM_SUBDIR="hardware_verifier/proto"
+
+inherit cros-workon cros-go platform
+
+DESCRIPTION="Hardware Verifier go proto for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/hardware_verifier/proto"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+DEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/system_api:=
+	chromeos-base/vboot_reference:=
+	dev-go/protobuf
+"
+
+src_unpack() {
+	platform_src_unpack
+	CROS_GO_WORKSPACE="${OUT}/gen/go"
+}
+
+src_install() {
+	cros-go_src_install
+}
diff --git a/chromeos-base/hps-tool/OWNERS b/chromeos-base/hps-tool/OWNERS
new file mode 100644
index 0000000..0df2e32
--- /dev/null
+++ b/chromeos-base/hps-tool/OWNERS
@@ -0,0 +1,2 @@
+set noparent
+include chromiumos/platform2:/hps/OWNERS
diff --git a/chromeos-base/hps-tool/hps-tool-0.0.1-r49.ebuild b/chromeos-base/hps-tool/hps-tool-0.0.1-r49.ebuild
new file mode 100644
index 0000000..3444ecc
--- /dev/null
+++ b/chromeos-base/hps-tool/hps-tool-0.0.1-r49.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="1af5e10724a3a74cd6fb7fae4e802f044d458f8d"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "bd22f6fa6d8ddce914d34c02064afe2f9e6abaf3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="common-mk hps .gn"
+
+PLATFORM_SUBDIR="hps/util"
+
+inherit cros-workon platform
+
+DESCRIPTION="HPS utilities and tool"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/main/hps"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	dev-libs/libusb:=
+	dev-embedded/libftdi:=
+	"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="
+	${COMMON_DEPEND}
+	"
+
+src_install() {
+	dobin "${OUT}"/hps
+}
diff --git a/chromeos-base/hps-tool/hps-tool-9999.ebuild b/chromeos-base/hps-tool/hps-tool-9999.ebuild
new file mode 100644
index 0000000..845fcd7
--- /dev/null
+++ b/chromeos-base/hps-tool/hps-tool-9999.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="common-mk hps .gn"
+
+PLATFORM_SUBDIR="hps/util"
+
+inherit cros-workon platform
+
+DESCRIPTION="HPS utilities and tool"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/main/hps"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="~*"
+
+COMMON_DEPEND="
+	dev-libs/libusb:=
+	dev-embedded/libftdi:=
+	"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="
+	${COMMON_DEPEND}
+	"
+
+src_install() {
+	dobin "${OUT}"/hps
+}
diff --git a/chromeos-base/hpsd/OWNERS b/chromeos-base/hpsd/OWNERS
new file mode 100644
index 0000000..0df2e32
--- /dev/null
+++ b/chromeos-base/hpsd/OWNERS
@@ -0,0 +1,2 @@
+set noparent
+include chromiumos/platform2:/hps/OWNERS
diff --git a/chromeos-base/hpsd/hpsd-0.0.1-r37.ebuild b/chromeos-base/hpsd/hpsd-0.0.1-r37.ebuild
new file mode 100644
index 0000000..86abc55
--- /dev/null
+++ b/chromeos-base/hpsd/hpsd-0.0.1-r37.ebuild
@@ -0,0 +1,59 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="1af5e10724a3a74cd6fb7fae4e802f044d458f8d"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "bd22f6fa6d8ddce914d34c02064afe2f9e6abaf3" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE=".gn hps common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="hps"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Chrome OS HPS daemon."
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+"
+
+DEPEND="${RDEPEND}
+	chromeos-base/system_api:=
+	dev-embedded/libftdi:=
+"
+
+pkg_preinst() {
+	enewuser "hpsd"
+	enewgroup "hpsd"
+}
+
+src_install() {
+
+	dosbin "${OUT}"/hpsd
+
+	# Install upstart configuration.
+	insinto /etc/init
+	doins daemon/init/*.conf
+
+	insinto /etc/dbus-1/system.d
+	doins daemon/dbus/org.chromium.Hps.conf
+}
+
+platform_pkg_test() {
+	local tests=(
+		dev_test
+		hps_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test run "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/hpsd/hpsd-9999.ebuild b/chromeos-base/hpsd/hpsd-9999.ebuild
new file mode 100644
index 0000000..c4b3dd1
--- /dev/null
+++ b/chromeos-base/hpsd/hpsd-9999.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE=".gn hps common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="hps"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Chrome OS HPS daemon."
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE=""
+
+RDEPEND="
+"
+
+DEPEND="${RDEPEND}
+	chromeos-base/system_api:=
+	dev-embedded/libftdi:=
+"
+
+pkg_preinst() {
+	enewuser "hpsd"
+	enewgroup "hpsd"
+}
+
+src_install() {
+
+	dosbin "${OUT}"/hpsd
+
+	# Install upstart configuration.
+	insinto /etc/init
+	doins daemon/init/*.conf
+
+	insinto /etc/dbus-1/system.d
+	doins daemon/dbus/org.chromium.Hps.conf
+}
+
+platform_pkg_test() {
+	local tests=(
+		dev_test
+		hps_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test run "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/hwid_extractor/OWNERS b/chromeos-base/hwid_extractor/OWNERS
new file mode 100644
index 0000000..820963a
--- /dev/null
+++ b/chromeos-base/hwid_extractor/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/factory:/OWNERS
\ No newline at end of file
diff --git a/chromeos-base/hwid_extractor/hwid_extractor-0.0.1-r275.ebuild b/chromeos-base/hwid_extractor/hwid_extractor-0.0.1-r275.ebuild
new file mode 100644
index 0000000..abc853d
--- /dev/null
+++ b/chromeos-base/hwid_extractor/hwid_extractor-0.0.1-r275.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT=("d8752e21dc6b41f37e2ab2d5db97eaf1bfb2514e" "affa5945aeb260f229adc432f6bb91855d1f907a")
+CROS_WORKON_TREE=("787e61f61f8f834c455b1f09040b8c883b56e1bc" "023c756f20b8f5566813867e074a4d444a80d343")
+CROS_WORKON_PROJECT=("chromiumos/platform/factory" "chromiumos/chromite")
+CROS_WORKON_LOCALNAME=("platform/factory" "../chromite")
+CROS_WORKON_SUBTREE=("py" "lib")
+CROS_WORKON_DESTDIR=("${S}" "${S}/chromite")
+
+inherit cros-workon
+
+DESCRIPTION="Chrome OS HWID Extractor"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/factory/"
+SRC_URI=""
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cros_host"
+
+RDEPEND="chromeos-base/vboot_reference
+	chromeos-base/vpd
+	dev-python/pyserial
+	dev-util/hdctools
+	sys-apps/flashrom
+"
+
+src_install() {
+	local lib="/usr/local"
+	if use cros_host; then
+		lib="/usr/lib"
+	fi
+	emake -C py/hwid_extractor \
+		DESTDIR="${D}" \
+		LIB_DIR="${lib}" \
+		CHROMITE_SRC_PATH="${S}/chromite/lib" \
+		install
+}
diff --git a/chromeos-base/hwid_extractor/hwid_extractor-9999.ebuild b/chromeos-base/hwid_extractor/hwid_extractor-9999.ebuild
new file mode 100644
index 0000000..8920fa8
--- /dev/null
+++ b/chromeos-base/hwid_extractor/hwid_extractor-9999.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT=("chromiumos/platform/factory" "chromiumos/chromite")
+CROS_WORKON_LOCALNAME=("platform/factory" "../chromite")
+CROS_WORKON_SUBTREE=("py" "lib")
+CROS_WORKON_DESTDIR=("${S}" "${S}/chromite")
+
+inherit cros-workon
+
+DESCRIPTION="Chrome OS HWID Extractor"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/factory/"
+SRC_URI=""
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE="cros_host"
+
+RDEPEND="chromeos-base/vboot_reference
+	chromeos-base/vpd
+	dev-python/pyserial
+	dev-util/hdctools
+	sys-apps/flashrom
+"
+
+src_install() {
+	local lib="/usr/local"
+	if use cros_host; then
+		lib="/usr/lib"
+	fi
+	emake -C py/hwid_extractor \
+		DESTDIR="${D}" \
+		LIB_DIR="${lib}" \
+		CHROMITE_SRC_PATH="${S}/chromite/lib" \
+		install
+}
diff --git a/chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r138.ebuild b/chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r138.ebuild
deleted file mode 100644
index 80175cb..0000000
--- a/chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r138.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="d590e8a01b2514eecc78cb101a7ce85fe9c36fa4"
-CROS_WORKON_TREE=("e2d4b5c2a34733c2112e0a9a8d0a2171f90ec316" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e032004ea0f80ca4d1d9b01cebb46311ac2d8b33" "20ed8021024637e492670d20fa5969a2ad75e4b6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="attestation common-mk hwsec-test-utils trunks .gn"
-
-PLATFORM_SUBDIR="hwsec-test-utils"
-
-inherit cros-workon platform
-
-DESCRIPTION="Hwsec-related test-only features. This package resides in test images only."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/hwsec-test-utils/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test tpm tpm2"
-REQUIRED_USE="tpm2? ( !tpm )"
-
-RDEPEND="
-	tpm2? (
-		chromeos-base/trunks:=
-	)
-	!tpm2? (
-		app-crypt/trousers:=
-	)
-"
-
-DEPEND="${RDEPEND}
-	tpm2? (
-		chromeos-base/trunks:=[test?]
-	)
-	chromeos-base/attestation:=
-	chromeos-base/system_api:=
-	dev-libs/openssl:=
-	dev-libs/protobuf:=
-"
-
-src_install() {
-
-	# Installs attestation-injected-keys
-	dobin "${OUT}/attestation-injected-keys"
-
-	# Installs hwsec-test-va
-	dobin "${OUT}/hwsec-test-va"
-
-	# Install fake pca agent
-	dobin "${OUT}"/fake_pca_agentd
-
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/hwsec-test-utils_testrunner"
-}
diff --git a/chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r220.ebuild b/chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r220.ebuild
new file mode 100644
index 0000000..d9a1a34
--- /dev/null
+++ b/chromeos-base/hwsec-test-utils/hwsec-test-utils-0.0.1-r220.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2020 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("8a6aa0783afea740fe52cec225aef91187cbcde6" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "13b6cac5121d40667689f2d48faddcb1bb34e1bb" "a06a3f47395fb7b584188c6852764bc773e5497e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="attestation common-mk hwsec-test-utils trunks .gn"
+
+PLATFORM_SUBDIR="hwsec-test-utils"
+
+inherit cros-workon platform
+
+DESCRIPTION="Hwsec-related test-only features. This package resides in test images only."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/hwsec-test-utils/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test tpm tpm2"
+REQUIRED_USE="tpm2? ( !tpm )"
+
+RDEPEND="
+	tpm2? (
+		chromeos-base/trunks:=
+	)
+	!tpm2? (
+		app-crypt/trousers:=
+	)
+"
+
+DEPEND="${RDEPEND}
+	tpm2? (
+		chromeos-base/trunks:=[test?]
+	)
+	chromeos-base/attestation:=
+	chromeos-base/system_api:=
+	dev-libs/openssl:=
+	dev-libs/protobuf:=
+"
+
+src_install() {
+
+	# Installs attestation-injected-keys
+	dobin "${OUT}/attestation-injected-keys"
+
+	# Installs hwsec-test-va
+	dobin "${OUT}/hwsec-test-va"
+
+	# Install fake pca agent
+	dobin "${OUT}"/fake_pca_agentd
+
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/hwsec-test-utils_testrunner"
+}
diff --git a/chromeos-base/iioservice/iioservice-0.0.1-r146.ebuild b/chromeos-base/iioservice/iioservice-0.0.1-r146.ebuild
new file mode 100644
index 0000000..a9303f8
--- /dev/null
+++ b/chromeos-base/iioservice/iioservice-0.0.1-r146.ebuild
@@ -0,0 +1,65 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="08aee9d7a91dddd5977b31ca2a2833ba54f8d89a"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "da73aae6d89c8e69c3740af612610792ce42b1a8" "359903647899af99fb1bc9ba9d666b0e78fcb3a8" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+# TODO(crbug.com/809389): Remove libmems from this list.
+CROS_WORKON_SUBTREE=".gn iioservice libmems common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="iioservice/daemon"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Chrome OS sensor HAL IPC util."
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+seccomp"
+
+RDEPEND="
+	chromeos-base/libiioservice_ipc:=
+	chromeos-base/libmems:=
+	chromeos-base/mems_setup
+	virtual/chromeos-ec-driver-init
+"
+
+DEPEND="${RDEPEND}
+	chromeos-base/system_api:=
+"
+
+pkg_preinst() {
+	enewuser "iioservice"
+	enewgroup "iioservice"
+}
+
+src_install() {
+	dosbin "${OUT}"/iioservice
+
+	# Install upstart configuration.
+	insinto /etc/init
+	doins init/*.conf
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Iioservice.conf
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	use seccomp && newins "seccomp/iioservice-${ARCH}.policy" iioservice-seccomp.policy
+}
+
+platform_pkg_test() {
+	local tests=(
+		iioservice_testrunner
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/iioservice/iioservice-0.0.1-r88.ebuild b/chromeos-base/iioservice/iioservice-0.0.1-r88.ebuild
deleted file mode 100644
index 649f968..0000000
--- a/chromeos-base/iioservice/iioservice-0.0.1-r88.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="74a18769fbd5903778ea23c3be2db076c01b4dec"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "871fd3a6dccaf2c2099f6200b55691f4ce8f07cb" "fd9664c67f7b5bf90e85d620439201bab8f5ba3a" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-# TODO(crbug.com/809389): Remove libmems from this list.
-CROS_WORKON_SUBTREE=".gn iioservice libmems common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="iioservice/daemon"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Chrome OS sensor HAL IPC util."
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+seccomp"
-
-RDEPEND="
-	chromeos-base/libiioservice_ipc:=
-	chromeos-base/libmems:=
-"
-
-DEPEND="${RDEPEND}
-	chromeos-base/system_api:=
-"
-
-pkg_preinst() {
-	enewuser "iioservice"
-	enewgroup "iioservice"
-}
-
-src_install() {
-	dosbin "${OUT}"/iioservice
-
-	# Install upstart configuration.
-	insinto /etc/init
-	doins init/iioservice.conf
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	use seccomp && newins "seccomp/iioservice-${ARCH}.policy" iioservice-seccomp.policy
-}
-
-platform_pkg_test() {
-	local tests=(
-		iioservice_testrunner
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/iioservice/iioservice-9999.ebuild b/chromeos-base/iioservice/iioservice-9999.ebuild
index 921ba6e..d143df7 100644
--- a/chromeos-base/iioservice/iioservice-9999.ebuild
+++ b/chromeos-base/iioservice/iioservice-9999.ebuild
@@ -23,6 +23,8 @@
 RDEPEND="
 	chromeos-base/libiioservice_ipc:=
 	chromeos-base/libmems:=
+	chromeos-base/mems_setup
+	virtual/chromeos-ec-driver-init
 "
 
 DEPEND="${RDEPEND}
@@ -39,7 +41,10 @@
 
 	# Install upstart configuration.
 	insinto /etc/init
-	doins init/iioservice.conf
+	doins init/*.conf
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Iioservice.conf
 
 	# Install seccomp policy file.
 	insinto /usr/share/policy
diff --git a/chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r33.ebuild b/chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r33.ebuild
deleted file mode 100644
index 367cb71..0000000
--- a/chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r33.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="74a18769fbd5903778ea23c3be2db076c01b4dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "871fd3a6dccaf2c2099f6200b55691f4ce8f07cb" "fd9664c67f7b5bf90e85d620439201bab8f5ba3a" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 iioservice libmems .gn"
-
-PLATFORM_SUBDIR="iioservice/iioservice_simpleclient"
-
-inherit cros-workon platform
-
-DESCRIPTION="A simple client to test iioservice's mojo IPC for Chromium OS."
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	chromeos-base/libiioservice_ipc:=
-	chromeos-base/libmems:=
-"
-
-DEPEND="${RDEPEND}
-	chromeos-base/system_api:=
-"
-
-src_install() {
-	dosbin "${OUT}"/iioservice_simpleclient
-}
diff --git a/chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r90.ebuild b/chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r90.ebuild
new file mode 100644
index 0000000..d9157c9
--- /dev/null
+++ b/chromeos-base/iioservice_simpleclient/iioservice_simpleclient-0.0.1-r90.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="08aee9d7a91dddd5977b31ca2a2833ba54f8d89a"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "da73aae6d89c8e69c3740af612610792ce42b1a8" "359903647899af99fb1bc9ba9d666b0e78fcb3a8" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 iioservice libmems .gn"
+
+PLATFORM_SUBDIR="iioservice/iioservice_simpleclient"
+
+inherit cros-workon platform
+
+DESCRIPTION="A simple client to test iioservice's mojo IPC for Chromium OS."
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	chromeos-base/libiioservice_ipc:=
+	chromeos-base/libmems:=
+"
+
+DEPEND="${RDEPEND}
+	chromeos-base/system_api:=
+"
+
+src_install() {
+	dosbin "${OUT}"/iioservice_simpleclient
+}
diff --git a/chromeos-base/imageloader-client/imageloader-client-0.0.1-r602.ebuild b/chromeos-base/imageloader-client/imageloader-client-0.0.1-r602.ebuild
deleted file mode 100644
index 52b4bfc..0000000
--- a/chromeos-base/imageloader-client/imageloader-client-0.0.1-r602.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "a69ccb0af9f1534326c864d2e43e8021d0a62245" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk imageloader .gn"
-
-PLATFORM_SUBDIR="imageloader/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="ImageLoader DBus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/imageloader/"
-
-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:= )
-"
-
-RDEPEND="chromeos-base/imageloader"
-
-src_install() {
-	# Install DBus client library.
-	platform_install_dbus_client_lib "imageloader"
-}
diff --git a/chromeos-base/imageloader-client/imageloader-client-0.0.1-r646.ebuild b/chromeos-base/imageloader-client/imageloader-client-0.0.1-r646.ebuild
new file mode 100644
index 0000000..a1bb899
--- /dev/null
+++ b/chromeos-base/imageloader-client/imageloader-client-0.0.1-r646.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8742508828a5be4d730c2310952b9abe1398d014" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk imageloader .gn"
+
+PLATFORM_SUBDIR="imageloader/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="ImageLoader DBus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/imageloader/"
+
+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:= )
+"
+
+RDEPEND="chromeos-base/imageloader"
+
+src_install() {
+	# Install DBus client library.
+	platform_install_dbus_client_lib "imageloader"
+}
diff --git a/chromeos-base/imageloader/imageloader-0.0.1-r1560.ebuild b/chromeos-base/imageloader/imageloader-0.0.1-r1560.ebuild
deleted file mode 100644
index 6ba4ade..0000000
--- a/chromeos-base/imageloader/imageloader-0.0.1-r1560.ebuild
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "a69ccb0af9f1534326c864d2e43e8021d0a62245" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk imageloader .gn"
-
-PLATFORM_SUBDIR="imageloader"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Allow mounting verified utility images"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/imageloader/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="fuzzer"
-
-RDEPEND="dev-libs/openssl:=
-	dev-libs/protobuf:=
-	fuzzer? ( dev-libs/libprotobuf-mutator:= )
-	sys-fs/lvm2:="
-
-DEPEND="${RDEPEND}
-	chromeos-base/system_api:=[fuzzer?]"
-
-src_install() {
-	# Install manifest parsing libraries
-	dolib.so "${OUT}/lib/libimageloader-manifest.so"
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins libimageloader-manifest.pc
-
-	insinto "/usr/include/libimageloader"
-	doins manifest.h
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	newins "seccomp/imageloader-seccomp-${ARCH}.policy" imageloader-seccomp.policy
-	newins "seccomp/imageloader-helper-seccomp-${ARCH}.policy" imageloader-helper-seccomp.policy
-	cd "${OUT}"
-	dosbin imageloader
-	cd "${S}"
-	insinto /etc/dbus-1/system.d
-	doins dbus_permissions/org.chromium.ImageLoader.conf
-	insinto /usr/share/dbus-1/system-services
-	doins dbus_service/org.chromium.ImageLoader.service
-	insinto /etc/init
-	doins init/imageloader.conf
-	doins init/imageloader-init.conf
-	doins init/imageloader-shutdown.conf
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/imageloader_helper_process_receiver_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/imageloader_manifest_fuzzer \
-		--dict "${S}"/fuzz/manifest.dict
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/run_tests"
-}
-
-pkg_preinst() {
-	enewuser "imageloaderd"
-	enewgroup "imageloaderd"
-}
diff --git a/chromeos-base/imageloader/imageloader-0.0.1-r1604.ebuild b/chromeos-base/imageloader/imageloader-0.0.1-r1604.ebuild
new file mode 100644
index 0000000..6ee60a5
--- /dev/null
+++ b/chromeos-base/imageloader/imageloader-0.0.1-r1604.ebuild
@@ -0,0 +1,72 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8742508828a5be4d730c2310952b9abe1398d014" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk imageloader .gn"
+
+PLATFORM_SUBDIR="imageloader"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Allow mounting verified utility images"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/imageloader/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="fuzzer"
+
+RDEPEND="
+	chromeos-base/vboot_reference:=
+	dev-libs/openssl:=
+	dev-libs/protobuf:=
+	fuzzer? ( dev-libs/libprotobuf-mutator:= )
+	sys-fs/lvm2:="
+
+DEPEND="${RDEPEND}
+	chromeos-base/system_api:=[fuzzer?]"
+
+src_install() {
+	# Install manifest parsing libraries
+	dolib.so "${OUT}/lib/libimageloader-manifest.so"
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins libimageloader-manifest.pc
+
+	insinto "/usr/include/libimageloader"
+	doins manifest.h
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "seccomp/imageloader-seccomp-${ARCH}.policy" imageloader-seccomp.policy
+	newins "seccomp/imageloader-helper-seccomp-${ARCH}.policy" imageloader-helper-seccomp.policy
+	cd "${OUT}"
+	dosbin imageloader
+	cd "${S}"
+	insinto /etc/dbus-1/system.d
+	doins dbus_permissions/org.chromium.ImageLoader.conf
+	insinto /usr/share/dbus-1/system-services
+	doins dbus_service/org.chromium.ImageLoader.service
+	insinto /etc/init
+	doins init/imageloader.conf
+	doins init/imageloader-init.conf
+	doins init/imageloader-shutdown.conf
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/imageloader_helper_process_receiver_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/imageloader_manifest_fuzzer \
+		--dict "${S}"/fuzz/manifest.dict
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/run_tests"
+}
+
+pkg_preinst() {
+	enewuser "imageloaderd"
+	enewgroup "imageloaderd"
+}
diff --git a/chromeos-base/imageloader/imageloader-9999.ebuild b/chromeos-base/imageloader/imageloader-9999.ebuild
index ab13cd7..0564455 100644
--- a/chromeos-base/imageloader/imageloader-9999.ebuild
+++ b/chromeos-base/imageloader/imageloader-9999.ebuild
@@ -20,7 +20,9 @@
 KEYWORDS="~*"
 IUSE="fuzzer"
 
-RDEPEND="dev-libs/openssl:=
+RDEPEND="
+	chromeos-base/vboot_reference:=
+	dev-libs/openssl:=
 	dev-libs/protobuf:=
 	fuzzer? ( dev-libs/libprotobuf-mutator:= )
 	sys-fs/lvm2:="
diff --git a/chromeos-base/intel-gnalib/Manifest b/chromeos-base/intel-gnalib/Manifest
new file mode 100644
index 0000000..c38e2b6
--- /dev/null
+++ b/chromeos-base/intel-gnalib/Manifest
@@ -0,0 +1 @@
+DIST intel-gna-6e42dc7a.tar.gz 347431 BLAKE2B 7d53800c32f3b857f29c1a96240398e6cf424ed1a9ca5c10301cd1d5dedeeaf17e074216a9dd0cd0b44713c637ebee24cc9085394e65188b9ab0b4db0a65fd1e SHA512 b46260123009b5b30eafb5051a9f2d023fe4dd6f95a2658848ea4e95c781a3fd5bee88665a9a0285d606eab920aac7bd1038f6c560f45448edc86a0c107ce956
diff --git a/chromeos-base/intel-gnalib/OWNERS b/chromeos-base/intel-gnalib/OWNERS
new file mode 100644
index 0000000..1c82673
--- /dev/null
+++ b/chromeos-base/intel-gnalib/OWNERS
@@ -0,0 +1,3 @@
+anisha.dattatraya.kulkarni@intel.corp-partner.google.com
+jmpollock@google.com
+raviraj.p.sitaram@intel.corp-partner.google.com
diff --git a/chromeos-base/intel-gnalib/files/0001-Enable-changes-needed-for-ChromeOS-build.patch b/chromeos-base/intel-gnalib/files/0001-Enable-changes-needed-for-ChromeOS-build.patch
new file mode 100644
index 0000000..797186d
--- /dev/null
+++ b/chromeos-base/intel-gnalib/files/0001-Enable-changes-needed-for-ChromeOS-build.patch
@@ -0,0 +1,71 @@
+From 814e71e5ef28b728951de9f2ded3a67904740784 Mon Sep 17 00:00:00 2001
+From: Anisha Kulkarni <anisha.dattatraya.kulkarni@intel.com>
+Date: Tue, 23 Feb 2021 15:49:43 -0800
+Subject: [PATCH] Enable changes needed for ChromeOS build
+
+- Add TARGET_OS variable to build without lto
+  optimizations.
+- Add defaulted destructor and assignment operator
+  when constructor is default.
+
+Change-Id: I041f567b58f513916bcc132c6ff8d260574a9d4f
+Signed-off-by: Anisha Kulkarni <anisha.dattatraya.kulkarni@intel.com>
+---
+ build/cmake/gna_compile_flags.cmake   |  6 +++++-
+ src/gna-lib/kernels/KernelArguments.h | 16 ++++++++++++++--
+ 
+diff --git a/build/cmake/gna_compile_flags.cmake b/build/cmake/gna_compile_flags.cmake
+index 8d4d370..e915b08 100644
+--- a/build/cmake/gna_compile_flags.cmake
++++ b/build/cmake/gna_compile_flags.cmake
+@@ -152,7 +152,11 @@ else()
+     if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
+       set(GNA_COMPILE_FLAGS_RELEASE ${GNA_COMPILE_FLAGS_RELEASE} -ipo)
+     else()
+-      set(GNA_COMPILE_FLAGS_RELEASE ${GNA_COMPILE_FLAGS_RELEASE} -flto -fno-fat-lto-objects)
++      if(${TARGET_OS} STREQUAL "ChromeOS")
++	set(GNA_COMPILE_FLAGS_RELEASE ${GNA_COMPILE_FLAGS_RELEASE})
++      else()
++	set(GNA_COMPILE_FLAGS_RELEASE ${GNA_COMPILE_FLAGS_RELEASE} -flto -fno-fat-lto-objects)
++      endif()
+     endif()
+   elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Android")
+     if(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
+diff --git a/src/gna-lib/kernels/KernelArguments.h b/src/gna-lib/kernels/KernelArguments.h
+index a74ec4f..45711ed 100644
+--- a/src/gna-lib/kernels/KernelArguments.h
++++ b/src/gna-lib/kernels/KernelArguments.h
+@@ -109,7 +109,14 @@ struct KernelConfig : public BaseConfig
+ 
+ struct ExecutionConfig
+ {
+-    ExecutionConfig() = default;
++    const ExecutionConfig& operator =(const ExecutionConfig& right)
++    {
++	*this->SaturationCount = *right.SaturationCount;
++	return *this;
++    }
++    ~ExecutionConfig() = default;
++    ExecutionConfig(const ExecutionConfig&) = default;
++
+     ExecutionConfig(KernelBuffers * intermediate, uint32_t * saturationCount, uint32_t const * bufferElementCount) :
+         Intermediate{ intermediate },
+         SaturationCount{ saturationCount },
+@@ -135,8 +142,13 @@ struct ExecutionKernelConfig : public ExecutionConfig
+ 
+ struct ActivationConfig
+ {
+-    ActivationConfig() = default;
+     ActivationConfig(ActivationConfig const & source) = default;
++    ~ActivationConfig() = default;
++    const ActivationConfig& operator =(const ActivationConfig& right)
++    {
++	this->ElementCount = right.ElementCount;
++	return *this;
++    }
+     ActivationConfig(uint32_t elementCount, GNA::PwlCached const * kernel);
+ 
+     uint32_t ElementCount;
+-- 
+2.17.1
+
diff --git a/chromeos-base/intel-gnalib/intel-gnalib-0.0.2-r2.ebuild b/chromeos-base/intel-gnalib/intel-gnalib-0.0.2-r2.ebuild
new file mode 120000
index 0000000..2e835ee
--- /dev/null
+++ b/chromeos-base/intel-gnalib/intel-gnalib-0.0.2-r2.ebuild
@@ -0,0 +1 @@
+intel-gnalib-0.0.2.ebuild
\ No newline at end of file
diff --git a/chromeos-base/intel-gnalib/intel-gnalib-0.0.2.ebuild b/chromeos-base/intel-gnalib/intel-gnalib-0.0.2.ebuild
new file mode 100644
index 0000000..2098735
--- /dev/null
+++ b/chromeos-base/intel-gnalib/intel-gnalib-0.0.2.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake-utils flag-o-matic unpacker
+
+DESCRIPTION="Intel GNA library for Gemini Lake and Tiger Lake"
+HOMEPAGE="https://github.com/intel/gna"
+GIT_HASH="6e42dc7a53fff9d7e644ea48dac70c841c72a14b"
+GIT_SHORT_HASH=${GIT_HASH::8}
+SRC_URI="https://github.com/intel/gna/archive/${GIT_HASH}.tar.gz -> intel-gna-${GIT_SHORT_HASH}.tar.gz"
+
+LICENSE="LGPL-2.1"
+KEYWORDS="-* amd64"
+IUSE="+clang"
+SLOT="0"
+
+S="${WORKDIR}/gna-${GIT_HASH}"
+
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+	eapply "${FILESDIR}/0001-Enable-changes-needed-for-ChromeOS-build.patch"
+	eapply_user
+	cmake-utils_src_prepare
+}
+
+src_configure() {
+	cros_enable_cxx_exceptions
+	append-flags "-fvisibility=default"
+	local mycmakeargs=(
+		-DCMAKE_BUILD_TYPE=Release
+		-DTARGET_OS="ChromeOS"
+	)
+
+	cmake-utils_src_configure
+}
+
+src_compile() {
+	cmake-utils_src_compile
+
+	cp -fpru "${CMAKE_USE_DIR}"/bin/gna-lib/LNX-RELEASE/x64/libgna.so.2.0.0.0 "${WORKDIR}"
+	cp -fpru "${CMAKE_USE_DIR}"/bin/gna-lib/LNX-RELEASE/x64/libgna.so.2 "${WORKDIR}"
+	cp -fpru "${CMAKE_USE_DIR}"/bin/gna-lib/LNX-RELEASE/x64/libgna.so "${WORKDIR}"
+	cp -fpru "${S}"/bin/gna-lib/include "${WORKDIR}"
+	cp -fpru "${S}"/src/common/gna*.h "${WORKDIR}"/include
+}
+
+src_install() {
+	dolib.so "${WORKDIR}"/libgna.so.2.0.0.0
+	dolib.so "${WORKDIR}"/libgna.so.2
+	dolib.so "${WORKDIR}"/libgna.so
+	insinto "/usr/include"
+	doins "${WORKDIR}"/include/*
+}
diff --git a/chromeos-base/intel-nnhal/Manifest b/chromeos-base/intel-nnhal/Manifest
new file mode 100644
index 0000000..ba8148d
--- /dev/null
+++ b/chromeos-base/intel-nnhal/Manifest
@@ -0,0 +1,3 @@
+DIST intel-nn-hal-1fed40d8.tar.gz 207233 BLAKE2B 487b7224666923d3d2a8b8d655b959bf3f2f71dcc11acf0eff8132c932b900bb234c6e5c526fb9c9352c3d2d758269a2cc857f394984cbea93248b95098c1e95 SHA512 c1480109b724a8f248127db19f6ae25a2433d548112665957235fcfb2efadeb3644a6e721971a90f40349ed60848e0dc7fa80ef21be69e90f991ebb9b2050398
+DIST intel-nn-hal-9607e7e7.tar.gz 203664 BLAKE2B 6591700e53d4a2595967ef8119250f1c7c13a69db9810762c8ca3f3620b0bcc51c5094863218ef83c382a22a1ce85bebec5d358432045ca4be18751e1e053f9d SHA512 91b5540f83a65fa704699b54939ff1673ca3559d714fa1636094b6585fa5db0e277cdb8240c51e6f3f5d77206ac80f78308021cd63fb3caa8398a4bfe732b7cd
+DIST intel-openvino-a4a1bff1.tar.xz 15979364 BLAKE2B 3f91aed68a3c68580d3772a7e6222ba70505fa2666f441eb2edf763051e122b8df163a66b77fe58d05eba84e663f221db323f939607d10b85afa7a89807e086d SHA512 5f70c0c4e8e7ef99222943ef0574be73d9dac7d54544ae18172ec5c38941086ab7cded2065e09167d627d698c15697e5a0c7e3fdc6aec371bbfc46186ad94743
diff --git a/chromeos-base/intel-nnhal/OWNERS b/chromeos-base/intel-nnhal/OWNERS
new file mode 100644
index 0000000..9347d5d
--- /dev/null
+++ b/chromeos-base/intel-nnhal/OWNERS
@@ -0,0 +1,4 @@
+anisha.dattatraya.kulkarni@intel.corp-partner.google.com
+jmpollock@google.com
+slangley@google.com
+raviraj.p.sitaram@intel.corp-partner.google.com
diff --git a/chromeos-base/intel-nnhal/intel-nnhal-0.0.1-r57.ebuild b/chromeos-base/intel-nnhal/intel-nnhal-0.0.1-r57.ebuild
new file mode 100644
index 0000000..a68bc10
--- /dev/null
+++ b/chromeos-base/intel-nnhal/intel-nnhal-0.0.1-r57.ebuild
@@ -0,0 +1,71 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="200ef2c67ab271519f18bac41f065de2cd22d96e"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+inherit base cros-workon platform unpacker
+
+DESCRIPTION="Intel NNAPI HAL"
+HOMEPAGE="https://github.com/intel/nn-hal"
+NNHAL_GIT_HASH="1fed40d8b7cc73f47d19c488d52ba2d9c4ef6925"
+NNHAL_GIT_SHORT_HASH=${NNHAL_GIT_HASH::8}
+OPENVINO_GIT_HASH="a4a1bff1cc5a6b22f806adac8845d2806772dacd"
+OPENVINO_GIT_SHORT_HASH=${OPENVINO_GIT_HASH::8}
+SRC_URI="
+	https://github.com/intel/nn-hal/archive/${NNHAL_GIT_HASH}.tar.gz -> intel-nn-hal-${NNHAL_GIT_SHORT_HASH}.tar.gz
+	https://github.com/openvinotoolkit/openvino/archive/${OPENVINO_GIT_HASH}.tar.xz -> intel-openvino-${OPENVINO_GIT_SHORT_HASH}.tar.xz
+"
+
+
+LICENSE="BSD-Google"
+KEYWORDS="-* amd64"
+IUSE="vendor-nnhal"
+RESTRICT="strip"
+
+CROS_WORKON_PROJECT=("chromiumos/platform2")
+CROS_WORKON_LOCALNAME=("platform2")
+CROS_WORKON_DESTDIR=("${S}/platform2")
+CROS_WORKON_SUBTREE=("common-mk .gn")
+
+PLATFORM_SUBDIR="nn-hal-${NNHAL_GIT_HASH}"
+
+RDEPEND="
+	chromeos-base/aosp-frameworks-ml-nn
+	chromeos-base/intel-openvino
+	chromeos-base/intel-gnalib
+"
+
+DEPEND="
+	${RDEPEND}
+"
+src_unpack() {
+	platform_src_unpack
+
+	# Need to unpack the SRC_URI's into the platform2 dir
+	cd "${WORKDIR}/${PN}-${PV}/platform2"
+	unpacker_src_unpack
+}
+
+src_configure() {
+	if use x86 || use amd64; then
+		append-cppflags "-D_Float16=__fp16"
+		append-cxxflags "-Xclang -fnative-half-type"
+		append-cxxflags "-Xclang -fallow-half-arguments-and-returns"
+	fi
+	platform_src_configure
+}
+
+src_prepare() {
+	cros_enable_cxx_exceptions
+	eapply_user
+}
+
+src_install() {
+	if use vendor-nnhal ; then
+		einfo "Installing Intel GNA vendor hal."
+		dolib.so "${OUT}/lib/libvendor-nn-hal.so"
+		dolib.so "${OUT}/lib/libintel_nnhal.so"
+	fi
+}
diff --git a/chromeos-base/intel-nnhal/intel-nnhal-9999.ebuild b/chromeos-base/intel-nnhal/intel-nnhal-9999.ebuild
new file mode 100644
index 0000000..23a4c08
--- /dev/null
+++ b/chromeos-base/intel-nnhal/intel-nnhal-9999.ebuild
@@ -0,0 +1,69 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit base cros-workon platform unpacker
+
+DESCRIPTION="Intel NNAPI HAL"
+HOMEPAGE="https://github.com/intel/nn-hal"
+NNHAL_GIT_HASH="1fed40d8b7cc73f47d19c488d52ba2d9c4ef6925"
+NNHAL_GIT_SHORT_HASH=${NNHAL_GIT_HASH::8}
+OPENVINO_GIT_HASH="a4a1bff1cc5a6b22f806adac8845d2806772dacd"
+OPENVINO_GIT_SHORT_HASH=${OPENVINO_GIT_HASH::8}
+SRC_URI="
+	https://github.com/intel/nn-hal/archive/${NNHAL_GIT_HASH}.tar.gz -> intel-nn-hal-${NNHAL_GIT_SHORT_HASH}.tar.gz
+	https://github.com/openvinotoolkit/openvino/archive/${OPENVINO_GIT_HASH}.tar.xz -> intel-openvino-${OPENVINO_GIT_SHORT_HASH}.tar.xz
+"
+
+
+LICENSE="BSD-Google"
+KEYWORDS="-* ~amd64"
+IUSE="vendor-nnhal"
+RESTRICT="strip"
+
+CROS_WORKON_PROJECT=("chromiumos/platform2")
+CROS_WORKON_LOCALNAME=("platform2")
+CROS_WORKON_DESTDIR=("${S}/platform2")
+CROS_WORKON_SUBTREE=("common-mk .gn")
+
+PLATFORM_SUBDIR="nn-hal-${NNHAL_GIT_HASH}"
+
+RDEPEND="
+	chromeos-base/aosp-frameworks-ml-nn
+	chromeos-base/intel-openvino
+	chromeos-base/intel-gnalib
+"
+
+DEPEND="
+	${RDEPEND}
+"
+src_unpack() {
+	platform_src_unpack
+
+	# Need to unpack the SRC_URI's into the platform2 dir
+	cd "${WORKDIR}/${PN}-${PV}/platform2"
+	unpacker_src_unpack
+}
+
+src_configure() {
+	if use x86 || use amd64; then
+		append-cppflags "-D_Float16=__fp16"
+		append-cxxflags "-Xclang -fnative-half-type"
+		append-cxxflags "-Xclang -fallow-half-arguments-and-returns"
+	fi
+	platform_src_configure
+}
+
+src_prepare() {
+	cros_enable_cxx_exceptions
+	eapply_user
+}
+
+src_install() {
+	if use vendor-nnhal ; then
+		einfo "Installing Intel GNA vendor hal."
+		dolib.so "${OUT}/lib/libvendor-nn-hal.so"
+		dolib.so "${OUT}/lib/libintel_nnhal.so"
+	fi
+}
diff --git a/chromeos-base/intel-openvino/Manifest b/chromeos-base/intel-openvino/Manifest
new file mode 100644
index 0000000..3f920e7
--- /dev/null
+++ b/chromeos-base/intel-openvino/Manifest
@@ -0,0 +1 @@
+DIST intel-openvino-a4a1bff1.tar.xz 15979364 BLAKE2B 3f91aed68a3c68580d3772a7e6222ba70505fa2666f441eb2edf763051e122b8df163a66b77fe58d05eba84e663f221db323f939607d10b85afa7a89807e086d SHA512 5f70c0c4e8e7ef99222943ef0574be73d9dac7d54544ae18172ec5c38941086ab7cded2065e09167d627d698c15697e5a0c7e3fdc6aec371bbfc46186ad94743
diff --git a/chromeos-base/intel-openvino/OWNERS b/chromeos-base/intel-openvino/OWNERS
new file mode 100644
index 0000000..9347d5d
--- /dev/null
+++ b/chromeos-base/intel-openvino/OWNERS
@@ -0,0 +1,4 @@
+anisha.dattatraya.kulkarni@intel.corp-partner.google.com
+jmpollock@google.com
+slangley@google.com
+raviraj.p.sitaram@intel.corp-partner.google.com
diff --git a/chromeos-base/intel-openvino/files/0001-Disable-samples.patch b/chromeos-base/intel-openvino/files/0001-Disable-samples.patch
new file mode 100644
index 0000000..fc29247
--- /dev/null
+++ b/chromeos-base/intel-openvino/files/0001-Disable-samples.patch
@@ -0,0 +1,84 @@
+From cdca2987541990d894283b763fb5cf1db47c5896 Mon Sep 17 00:00:00 2001
+From: Anisha Kulkarni
+ <anisha.dattatraya.kulkarni@intel.corp-partner.google.com>
+Date: Thu, 18 Mar 2021 09:56:30 -0700
+Subject: [PATCH] Disable samples
+
+---
+ inference-engine/CMakeLists.txt | 35 +++++++++++++++++++++++----------
+ 1 file changed, 25 insertions(+), 10 deletions(-)
+
+diff --git a/inference-engine/CMakeLists.txt b/inference-engine/CMakeLists.txt
+index f9758d52b..1bcae1891 100644
+--- a/inference-engine/CMakeLists.txt
++++ b/inference-engine/CMakeLists.txt
+@@ -59,17 +59,20 @@ if(ENABLE_TESTS)
+     add_subdirectory(tests)
+ endif()
+ 
+-add_subdirectory(tools)
++#add_subdirectory(tools)
+ 
+ # gflags and format_reader targets are kept inside of samples directory and
+ # they must be built even if samples build is disabled (required for tests and tools).
+-add_subdirectory(samples)
+-
+-file(GLOB_RECURSE SAMPLES_SOURCES samples/*.cpp samples/*.hpp samples/*.h)
+-add_cpplint_target(sample_cpplint
+-    FOR_SOURCES ${SAMPLES_SOURCES}
+-    EXCLUDE_PATTERNS "thirdparty/*" "pugixml/*")
++if (${TARGET_OS} STREQUAL "CHROMEOS")
++	message(STATUS "Skipping samples")
++else()
++	add_subdirectory(samples)
+ 
++	file(GLOB_RECURSE SAMPLES_SOURCES samples/*.cpp samples/*.hpp samples/*.h)
++	add_cpplint_target(sample_cpplint
++    	FOR_SOURCES ${SAMPLES_SOURCES}
++    	EXCLUDE_PATTERNS "thirdparty/*" "pugixml/*")
++endif()
+ if (ENABLE_PYTHON)
+     add_subdirectory(ie_bridges/python)
+ endif()
+@@ -82,7 +85,11 @@ add_cpplint_report_target()
+ 
+ # install C++ samples
+ 
+-ie_cpack_add_component(cpp_samples REQUIRED DEPENDS core)
++if (${TARGET_OS} STREQUAL "CHROMEOS")
++	message(STATUS "Skipping cpp_samples")
++else()
++	ie_cpack_add_component(cpp_samples REQUIRED DEPENDS core)
++endif()
+ 
+ if(UNIX)
+ 	if (${TARGET_OS} STREQUAL "CHROMEOS")
+@@ -104,7 +111,11 @@ endif()
+ 
+ # install C samples
+ 
+-ie_cpack_add_component(c_samples REQUIRED DEPENDS core)
++if (${TARGET_OS} STREQUAL "CHROMEOS")
++	message(STATUS "Skipping c_samples")
++else()
++	ie_cpack_add_component(c_samples REQUIRED DEPENDS core)
++endif()
+ 
+ if(UNIX)
+ 	if (${TARGET_OS} STREQUAL "CHROMEOS")
+@@ -149,7 +160,11 @@ endif()
+ add_custom_target(ie_dev_targets ALL DEPENDS inference_engine HeteroPlugin)
+ 
+ # Developer package
+-ie_developer_export_targets(format_reader)
++if (${TARGET_OS} STREQUAL "CHROMEOS")
++	message(STATUS "Skipping format reader")
++else()
++	ie_developer_export_targets(format_reader)
++endif()
+ 
+ if (ENABLE_NGRAPH)
+     ie_developer_export_targets(${NGRAPH_LIBRARIES})
+-- 
+2.17.1
+
diff --git a/chromeos-base/intel-openvino/intel-openvino-0.0.1-r6.ebuild b/chromeos-base/intel-openvino/intel-openvino-0.0.1-r6.ebuild
new file mode 120000
index 0000000..65cd062
--- /dev/null
+++ b/chromeos-base/intel-openvino/intel-openvino-0.0.1-r6.ebuild
@@ -0,0 +1 @@
+intel-openvino-0.0.1.ebuild
\ No newline at end of file
diff --git a/chromeos-base/intel-openvino/intel-openvino-0.0.1.ebuild b/chromeos-base/intel-openvino/intel-openvino-0.0.1.ebuild
new file mode 100644
index 0000000..9710c17
--- /dev/null
+++ b/chromeos-base/intel-openvino/intel-openvino-0.0.1.ebuild
@@ -0,0 +1,85 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cmake-utils flag-o-matic unpacker
+
+DESCRIPTION="Intel OpenVino Toolkit"
+HOMEPAGE="https://github.com/openvinotoolkit/openvino"
+GIT_HASH="a4a1bff1cc5a6b22f806adac8845d2806772dacd"
+GIT_SHORT_HASH=${GIT_HASH::8}
+
+# This tarball needs to be manually created due to the use of submodules. Downloading
+#   -> https://github.com/openvinotoolkit/openvino/archive/${GIT_HASH}.tar.gz
+# wouldn't work because it will not contain the submodules.
+#
+# Steps to reproduce tarball:
+# $ git clone https://github.com/openvinotoolkit/openvino.git
+# $ cd openvino
+# $ git checkout ${GIT_HASH}
+# $ git submodule init
+# $ git submodule update
+# $ rm -rf .git
+# $ cd ..
+# $ tar -Jcvf intel-openvino-${GIT_SHORT_HASH}.tar.xz openvino
+
+SRC_URI="gs://chromeos-localmirror/distfiles/intel-openvino-${GIT_SHORT_HASH}.tar.xz"
+
+LICENSE="Apache-2.0"
+KEYWORDS="-* amd64"
+IUSE="+clang"
+SLOT="0"
+
+S="${WORKDIR}/openvino"
+
+RDEPEND="
+	chromeos-base/intel-gnalib
+"
+
+DEPEND="
+	${RDEPEND}
+"
+
+src_prepare() {
+	eapply "${FILESDIR}/0001-Disable-samples.patch"
+	cros_enable_cxx_exceptions
+	eapply_user
+	cmake-utils_src_prepare
+}
+
+src_configure() {
+	cros_enable_cxx_exceptions
+	append-flags "-frtti -msse4.2"
+	CPPFLAGS="-I${S}/ngraph/src -I${S}/inference_engine/ngraph_ops ${CPPFLAGS}"
+	CMAKE_BUILD_TYPE="Release"
+
+	local mycmakeargs=(
+		-DCMAKE_BUILD_TYPE=Release
+		-DENABLE_CLDNN=OFF
+		-DENABLE_GNA=ON
+		-DGNA_LIBRARY_VERSION=GNA2
+		-DENABLE_NGRAPH=OFF
+		-DTHREADING=SEQ
+		-DENABLE_MKL_DNN=OFF
+		-DGNA_DIR="gna"
+		-DTARGET_OS="CHROMEOS"
+		-DENABLE_OPENCV=OFF
+		-DENABLE_SAMPLES=OFF
+		-DCMAKE_INSTALL_PREFIX="/usr/local"
+		-DBUILD_SHARED_LIBS=ON
+	)
+
+	cmake-utils_src_configure
+}
+
+src_install() {
+	cmake-utils_src_install
+
+	dolib.so "${D}"/usr/local/deployment_tools/inference_engine/lib/intel64/libinference_engine.so
+	dolib.so "${D}"/usr/local/deployment_tools/inference_engine/lib/intel64/libinference_engine_nn_builder.so
+	dolib.so "${D}"/usr/local/deployment_tools/inference_engine/lib/intel64/libinference_engine_preproc.so
+	dolib.so "${D}"/usr/local/deployment_tools/inference_engine/lib/intel64/libGNAPlugin.so
+	dolib.so "${D}"/usr/local/deployment_tools/inference_engine/lib/intel64/libinference_engine_c_api.so
+	dolib.so "${D}"/usr/local/deployment_tools/inference_engine/lib/intel64/plugins.xml
+}
diff --git a/chromeos-base/ippusb_bridge/ippusb_bridge-0.0.1-r13.ebuild b/chromeos-base/ippusb_bridge/ippusb_bridge-0.0.1-r13.ebuild
deleted file mode 100644
index 6fcaedf..0000000
--- a/chromeos-base/ippusb_bridge/ippusb_bridge-0.0.1-r13.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="178d940c8fa20666117208b3a6e40ed28579f122"
-CROS_WORKON_TREE="47e1af9ab53267f4ae483933f7acd7f1f0c30a53"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="ippusb_bridge"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="A proxy for HTTP traffic over an IPP-USB printer connection"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ippusb_bridge/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND="
-	virtual/libusb:1=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="
-	${COMMON_DEPEND}
-	>=dev-rust/chunked_transfer-1:= <dev-rust/chunked_transfer-2
-	>=dev-rust/getopts-0.2.18:= <dev-rust/getopts-0.3
-	>=dev-rust/httparse-1.3.4:= <dev-rust/httparse-1.4
-	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3
-	>=dev-rust/rusb-0.6.2:= <dev-rust/rusb-0.7
-	dev-rust/sync:=
-	dev-rust/sys_util:=
-	>=dev-rust/tiny_http-0.7:= <dev-rust/tiny_http-0.8
-"
-
-src_install() {
-	dobin "$(cros-rust_get_build_dir)"/ippusb_bridge
-
-	# Install policy files.
-	insinto /usr/share/policy
-	newins "seccomp/ippusb-bridge-seccomp-${ARCH}.policy" \
-		ippusb-bridge-seccomp.policy
-}
diff --git a/chromeos-base/ippusb_bridge/ippusb_bridge-0.0.1-r34.ebuild b/chromeos-base/ippusb_bridge/ippusb_bridge-0.0.1-r34.ebuild
new file mode 100644
index 0000000..f17723d
--- /dev/null
+++ b/chromeos-base/ippusb_bridge/ippusb_bridge-0.0.1-r34.ebuild
@@ -0,0 +1,67 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="c358c785af6e611f5abacd2c2dfa280f2f5a82bf"
+CROS_WORKON_TREE="197db4a2e529e4b31180ffea01f85f4905be77e7"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="ippusb_bridge"
+
+inherit cros-workon cros-rust udev user
+
+DESCRIPTION="A proxy for HTTP traffic over an IPP-USB printer connection"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ippusb_bridge/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+COMMON_DEPEND="
+	virtual/libusb:1=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	!chromeos-base/ippusb_manager
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	>=dev-rust/chunked_transfer-1:= <dev-rust/chunked_transfer-2
+	>=dev-rust/getopts-0.2.18:= <dev-rust/getopts-0.3
+	>=dev-rust/httparse-1.3.4:= <dev-rust/httparse-1.4
+	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3
+	>=dev-rust/rusb-0.6.2:= <dev-rust/rusb-0.7
+	dev-rust/sync:=
+	dev-rust/sys_util:=
+	>=dev-rust/tiny_http-0.8:= <dev-rust/tiny_http-0.9
+"
+
+pkg_preinst() {
+	enewgroup ippusb
+	enewuser ippusb
+
+	cros-rust_pkg_preinst
+}
+
+src_install() {
+	dobin "$(cros-rust_get_build_dir)"/ippusb_bridge
+
+	# Install policy files.
+	insinto /usr/share/policy
+	newins "seccomp/ippusb-bridge-seccomp-${ARCH}.policy" \
+		ippusb-bridge-seccomp.policy
+
+	udev_dorules udev/*.rules
+
+	insinto /etc/init
+	newins "init/ippusb-bridge.conf" "ippusb-bridge.conf"
+
+	exeinto /usr/libexec/ippusb
+	doexe "init/bridge_start"
+	doexe "init/bridge_stop"
+}
diff --git a/chromeos-base/ippusb_bridge/ippusb_bridge-9999.ebuild b/chromeos-base/ippusb_bridge/ippusb_bridge-9999.ebuild
index 00bbd05..b66ae2c 100644
--- a/chromeos-base/ippusb_bridge/ippusb_bridge-9999.ebuild
+++ b/chromeos-base/ippusb_bridge/ippusb_bridge-9999.ebuild
@@ -8,7 +8,7 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_SUBTREE="ippusb_bridge"
 
-inherit cros-workon cros-rust
+inherit cros-workon cros-rust udev user
 
 DESCRIPTION="A proxy for HTTP traffic over an IPP-USB printer connection"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ippusb_bridge/"
@@ -22,7 +22,10 @@
 	virtual/libusb:1=
 "
 
-RDEPEND="${COMMON_DEPEND}"
+RDEPEND="
+	${COMMON_DEPEND}
+	!chromeos-base/ippusb_manager
+"
 
 DEPEND="
 	${COMMON_DEPEND}
@@ -33,9 +36,16 @@
 	>=dev-rust/rusb-0.6.2:= <dev-rust/rusb-0.7
 	dev-rust/sync:=
 	dev-rust/sys_util:=
-	>=dev-rust/tiny_http-0.7:= <dev-rust/tiny_http-0.8
+	>=dev-rust/tiny_http-0.8:= <dev-rust/tiny_http-0.9
 "
 
+pkg_preinst() {
+	enewgroup ippusb
+	enewuser ippusb
+
+	cros-rust_pkg_preinst
+}
+
 src_install() {
 	dobin "$(cros-rust_get_build_dir)"/ippusb_bridge
 
@@ -43,4 +53,13 @@
 	insinto /usr/share/policy
 	newins "seccomp/ippusb-bridge-seccomp-${ARCH}.policy" \
 		ippusb-bridge-seccomp.policy
+
+	udev_dorules udev/*.rules
+
+	insinto /etc/init
+	newins "init/ippusb-bridge.conf" "ippusb-bridge.conf"
+
+	exeinto /usr/libexec/ippusb
+	doexe "init/bridge_start"
+	doexe "init/bridge_stop"
 }
diff --git a/chromeos-base/ippusb_manager/ippusb_manager-0.0.1-r343.ebuild b/chromeos-base/ippusb_manager/ippusb_manager-0.0.1-r343.ebuild
deleted file mode 100644
index 6989603..0000000
--- a/chromeos-base/ippusb_manager/ippusb_manager-0.0.1-r343.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "3dbd85f43fb55bdce2d3c7c6303e360189727eee" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk ippusb_manager .gn"
-
-PLATFORM_SUBDIR="ippusb_manager"
-
-inherit cros-workon platform udev user
-
-DESCRIPTION="Service which manages communication between ippusb printers and cups."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/ippusb_manager/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND="
-	chromeos-base/minijail:=
-	virtual/libusb:1=
-"
-RDEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/ippusb_bridge
-"
-DEPEND="${COMMON_DEPEND}"
-
-pkg_preinst() {
-	enewgroup ippusb
-	enewuser ippusb
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/ippusb_manager_testrunner"
-}
-
-src_install() {
-	dobin "${OUT}"/ippusb_manager
-
-	# udev rules.
-	udev_dorules udev/*.rules
-
-	# Install policy files.
-	insinto /usr/share/policy
-	newins seccomp/ippusb-manager-seccomp-${ARCH}.policy \
-		ippusb-manager-seccomp.policy
-
-	# Upstart script.
-	insinto /etc/init
-	doins etc/init/*.conf
-
-	# Install fuzzer
-	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/ippusb_manager_usb_fuzzer
-}
diff --git a/chromeos-base/ippusb_manager/ippusb_manager-9999.ebuild b/chromeos-base/ippusb_manager/ippusb_manager-9999.ebuild
deleted file mode 100644
index e280fd1..0000000
--- a/chromeos-base/ippusb_manager/ippusb_manager-9999.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk ippusb_manager .gn"
-
-PLATFORM_SUBDIR="ippusb_manager"
-
-inherit cros-workon platform udev user
-
-DESCRIPTION="Service which manages communication between ippusb printers and cups."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/ippusb_manager/"
-
-LICENSE="BSD-Google"
-KEYWORDS="~*"
-IUSE=""
-
-COMMON_DEPEND="
-	chromeos-base/minijail:=
-	virtual/libusb:1=
-"
-RDEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/ippusb_bridge
-"
-DEPEND="${COMMON_DEPEND}"
-
-pkg_preinst() {
-	enewgroup ippusb
-	enewuser ippusb
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/ippusb_manager_testrunner"
-}
-
-src_install() {
-	dobin "${OUT}"/ippusb_manager
-
-	# udev rules.
-	udev_dorules udev/*.rules
-
-	# Install policy files.
-	insinto /usr/share/policy
-	newins seccomp/ippusb-manager-seccomp-${ARCH}.policy \
-		ippusb-manager-seccomp.policy
-
-	# Upstart script.
-	insinto /etc/init
-	doins etc/init/*.conf
-
-	# Install fuzzer
-	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/ippusb_manager_usb_fuzzer
-}
diff --git a/chromeos-base/kerberos/kerberos-0.0.1-r280.ebuild b/chromeos-base/kerberos/kerberos-0.0.1-r280.ebuild
deleted file mode 100644
index 46d5bcf..0000000
--- a/chromeos-base/kerberos/kerberos-0.0.1-r280.ebuild
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "9bee196bdd33a6196f11fb48dea1fee7e0e331b4" "5c6a69ae1a339332642149aa39da47d14efbe3fd" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 kerberos libpasswordprovider metrics .gn"
-
-PLATFORM_SUBDIR="kerberos"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Requests and manages Kerberos tickets to enable Kerberos SSO"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/kerberos/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="asan fuzzer"
-
-COMMON_DEPEND="
-	app-crypt/mit-krb5:=
-	chromeos-base/libbrillo:=[asan?,fuzzer?]
-	chromeos-base/libpasswordprovider:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/minijail:=
-	dev-libs/protobuf:=
-	sys-apps/dbus:=
-"
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/protofiles:=
-	chromeos-base/session_manager-client:=
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-pkg_setup() {
-	# Has to be done in pkg_setup() instead of pkg_preinst() since
-	# src_install() needs kerberosd.
-	enewuser kerberosd
-	enewgroup kerberosd
-	enewuser kerberosd-exec
-	enewgroup kerberosd-exec
-	cros-workon_pkg_setup
-}
-
-src_install() {
-	dosbin "${OUT}"/kerberosd
-
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.Kerberos.conf
-
-	insinto /usr/share/dbus-1/system-services
-	doins dbus/org.chromium.Kerberos.service
-
-	insinto /etc/init
-	doins init/kerberosd.conf
-
-	insinto /usr/share/policy
-	newins seccomp/kerberosd-seccomp-"${ARCH}".policy kerberosd-seccomp.policy
-
-	insinto /usr/share/cros/startup/process_management_policies
-	doins setuid_restrictions/kerberosd_whitelist.txt
-
-	# Create daemon store folder prototype, see
-	# https://chromium.googlesource.com/chromiumos/docs/+/master/sandboxing.md#securely-mounting-cryptohome-daemon-store-folders
-	local daemon_store="/etc/daemon-store/kerberosd"
-	dodir "${daemon_store}"
-	fperms 0770 "${daemon_store}"
-	fowners kerberosd:kerberosd "${daemon_store}"
-
-	platform_fuzzer_install "${S}/OWNERS" "${OUT}"/config_parser_fuzzer \
-		--dict "${S}"/config_parser_fuzzer.dict || die
-}
-
-platform_pkg_test() {
-	local tests=(
-		kerberos_test
-	)
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/kerberos/kerberos-0.0.1-r350.ebuild b/chromeos-base/kerberos/kerberos-0.0.1-r350.ebuild
new file mode 100644
index 0000000..33fe908
--- /dev/null
+++ b/chromeos-base/kerberos/kerberos-0.0.1-r350.ebuild
@@ -0,0 +1,90 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="7cc682322dc60e43d949f6055d5b3885536bea07"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "c30e2764e005547102b3c9a8051a886d32d11f70" "eae0546f4ee5132d4544af4770755eb05f60cba6" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 kerberos libpasswordprovider metrics .gn"
+
+PLATFORM_SUBDIR="kerberos"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Requests and manages Kerberos tickets to enable Kerberos SSO"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/kerberos/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="asan fuzzer"
+
+COMMON_DEPEND="
+	app-crypt/mit-krb5:=
+	chromeos-base/libbrillo:=[asan?,fuzzer?]
+	chromeos-base/libpasswordprovider:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/minijail:=
+	dev-libs/protobuf:=
+	sys-apps/dbus:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/protofiles:=
+	chromeos-base/session_manager-client:=
+	chromeos-base/system_api:=[fuzzer?]
+"
+
+pkg_setup() {
+	# Has to be done in pkg_setup() instead of pkg_preinst() since
+	# src_install() needs kerberosd.
+	enewuser kerberosd
+	enewgroup kerberosd
+	enewuser kerberosd-exec
+	enewgroup kerberosd-exec
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	dosbin "${OUT}"/kerberosd
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Kerberos.conf
+
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.Kerberos.service
+
+	insinto /etc/init
+	doins init/kerberosd.conf
+
+	insinto /usr/share/policy
+	newins seccomp/kerberosd-seccomp-"${ARCH}".policy kerberosd-seccomp.policy
+
+	insinto /usr/share/cros/startup/process_management_policies
+	doins setuid_restrictions/kerberosd_whitelist.txt
+
+	# Create daemon store folder prototype, see
+	# https://chromium.googlesource.com/chromiumos/docs/+/master/sandboxing.md#securely-mounting-cryptohome-daemon-store-folders
+	local daemon_store="/etc/daemon-store/kerberosd"
+	dodir "${daemon_store}"
+	fperms 0770 "${daemon_store}"
+	fowners kerberosd:kerberosd "${daemon_store}"
+
+	platform_fuzzer_install "${S}/OWNERS" "${OUT}"/config_parser_fuzzer \
+		--dict "${S}"/config_parser_fuzzer.dict || die
+}
+
+platform_pkg_test() {
+	local tests=(
+		kerberos_test
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r43.ebuild b/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r43.ebuild
deleted file mode 100644
index ff827d8..0000000
--- a/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r43.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("b05e4a6b92b2cfe608b6cd8d5d37168680fc080e" "f131d8f851366e6a2f8e8fa8f3042285d021d6c6")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "4c04b0ebf35112629d2f6bc7e478514dcb5805cb")
-CROS_WORKON_LOCALNAME=("platform2" "third_party/lexmark-fax-pnh")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/lexmark-fax-pnh")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/lexmark-fax-pnh")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_SUBDIR="lexmark-fax-pnh"
-
-inherit cros-workon platform
-
-DESCRIPTION="ChromeOS implementation of the Lexmark fax-pnh-filter"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/lexmark-fax-pnh/"
-
-LICENSE="MPL-2.0"
-KEYWORDS="*"
-
-IUSE=""
-
-RDEPEND="
-	net-print/cups
-"
-DEPEND="${RDEPEND}"
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/token_replacer_testrunner"
-}
-
-src_install() {
-	exeinto /usr/libexec/cups/filter
-	doexe "${OUT}"/fax-pnh-filter
-}
diff --git a/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r69.ebuild b/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r69.ebuild
new file mode 100644
index 0000000..d8ba3b7
--- /dev/null
+++ b/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-0.0.1-r69.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("f34cf3a06f7b17b7829185630d886a5d9d3f0e75" "f131d8f851366e6a2f8e8fa8f3042285d021d6c6")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "4c04b0ebf35112629d2f6bc7e478514dcb5805cb")
+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")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/lexmark-fax-pnh")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+
+PLATFORM_SUBDIR="lexmark-fax-pnh"
+
+inherit cros-workon platform
+
+DESCRIPTION="ChromeOS implementation of the Lexmark fax-pnh-filter"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/lexmark-fax-pnh/"
+
+LICENSE="MPL-2.0"
+KEYWORDS="*"
+
+IUSE=""
+
+RDEPEND="
+	net-print/cups
+"
+DEPEND="${RDEPEND}"
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/token_replacer_testrunner"
+}
+
+src_install() {
+	exeinto /usr/libexec/cups/filter
+	doexe "${OUT}"/fax-pnh-filter
+}
diff --git a/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-9999.ebuild b/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-9999.ebuild
index 2b3e14e..351809a 100644
--- a/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-9999.ebuild
+++ b/chromeos-base/lexmark-fax-pnh/lexmark-fax-pnh-9999.ebuild
@@ -4,6 +4,7 @@
 EAPI=7
 
 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")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/lexmark-fax-pnh")
 CROS_WORKON_INCREMENTAL_BUILD=1
@@ -33,4 +34,4 @@
 src_install() {
 	exeinto /usr/libexec/cups/filter
 	doexe "${OUT}"/fax-pnh-filter
-}
\ No newline at end of file
+}
diff --git a/chromeos-base/libbrillo/libbrillo-0.0.1-r1754.ebuild b/chromeos-base/libbrillo/libbrillo-0.0.1-r1754.ebuild
deleted file mode 100644
index cd9c72c..0000000
--- a/chromeos-base/libbrillo/libbrillo-0.0.1-r1754.ebuild
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="ff79604d68b28f6077aa8d50765a317d26a76064"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "0dd1d84426488d6fef8310e3fba4e6790bd5e9e1" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libbrillo .gn"
-
-PLATFORM_SUBDIR="libbrillo"
-
-# platform.eclass automatically add dependency to libbrillo by default,
-# but this package should not have the dependency.
-WANT_LIBBRILLO="no"
-
-inherit cros-workon platform
-
-DESCRIPTION="Base library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libbrillo/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="cros_host +dbus +device_mapper fuzzer -lvm_stateful_partition +udev"
-
-COMMON_DEPEND="
-	chromeos-base/minijail:=
-	chromeos-base/vboot_reference:=
-	dbus? ( dev-libs/dbus-glib:= )
-	dev-libs/openssl:=
-	dev-libs/protobuf:=
-	net-libs/grpc:=
-	net-misc/curl:=
-	sys-apps/rootdev:=
-	device_mapper? ( sys-fs/lvm2:= )
-	lvm_stateful_partition? ( sys-fs/lvm2:= )
-	udev? ( virtual/libudev )
-"
-RDEPEND="
-	${COMMON_DEPEND}
-	!cros_host? ( chromeos-base/libchromeos-use-flags )
-	chromeos-base/chromeos-ca-certificates
-	!chromeos-base/libchromeos
-"
-DEPEND="
-	${COMMON_DEPEND}
-	>=chromeos-base/protofiles-0.0.41:=
-	dbus? ( chromeos-base/system_api:=[fuzzer?] )
-	dev-libs/modp_b64:=
-"
-
-src_install() {
-	insinto "/usr/$(get_libdir)/pkgconfig"
-
-	dolib.so "${OUT}"/lib/lib{brillo,installattributes,policy}*.so
-	dolib.a "${OUT}"/libbrillo*.a
-	# Install libbrillo with and without version number as a temporary
-	# measure.
-	doins "${OUT}"/obj/libbrillo/libbrillo*.pc
-
-	# Install all the header files from libbrillo/brillo/*.h into
-	# /usr/include/brillo (recursively, with sub-directories).
-	local dir
-	while read -d $'\0' -r dir; do
-		insinto "/usr/include/${dir}"
-		doins "${dir}"/*.h
-	done < <(find brillo -type d -print0)
-
-	insinto /usr/include/policy
-	doins policy/*.h
-	insinto /usr/include/install_attributes
-	doins install_attributes/libinstallattributes.h
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/libbrillo_data_encoding_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/libbrillo_dbus_data_serialization_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/libbrillo_http_form_data_fuzzer
-}
-
-platform_pkg_test() {
-	local gtest_filter_qemu="-*DeathTest*"
-	platform_test "run" "${OUT}/libbrillo_tests" "" "" "${gtest_filter_qemu}"
-	platform_test "run" "${OUT}/libinstallattributes_tests"
-	platform_test "run" "${OUT}/libpolicy_tests"
-	platform_test "run" "${OUT}/libbrillo-grpc_tests"
-}
diff --git a/chromeos-base/libbrillo/libbrillo-0.0.1-r1810.ebuild b/chromeos-base/libbrillo/libbrillo-0.0.1-r1810.ebuild
new file mode 100644
index 0000000..075143a
--- /dev/null
+++ b/chromeos-base/libbrillo/libbrillo-0.0.1-r1810.ebuild
@@ -0,0 +1,89 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="08aee9d7a91dddd5977b31ca2a2833ba54f8d89a"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "b2715142a8baa452d041e27303d53d2e097d3113" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk libbrillo .gn"
+
+PLATFORM_SUBDIR="libbrillo"
+
+# platform.eclass automatically add dependency to libbrillo by default,
+# but this package should not have the dependency.
+WANT_LIBBRILLO="no"
+
+inherit cros-workon platform
+
+DESCRIPTION="Base library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libbrillo/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cros_host +dbus +device_mapper fuzzer -lvm_stateful_partition +udev"
+
+COMMON_DEPEND="
+	chromeos-base/minijail:=
+	chromeos-base/vboot_reference:=
+	dbus? ( dev-libs/dbus-glib:= )
+	dev-libs/openssl:=
+	dev-libs/protobuf:=
+	net-libs/grpc:=
+	net-misc/curl:=
+	sys-apps/rootdev:=
+	device_mapper? ( sys-fs/lvm2:=[thin] )
+	lvm_stateful_partition? ( sys-fs/lvm2:= )
+	udev? ( virtual/libudev )
+"
+RDEPEND="
+	${COMMON_DEPEND}
+	!cros_host? ( chromeos-base/libchromeos-use-flags )
+	chromeos-base/chromeos-ca-certificates
+	!chromeos-base/libchromeos
+"
+DEPEND="
+	${COMMON_DEPEND}
+	>=chromeos-base/protofiles-0.0.45:=
+	dbus? ( chromeos-base/system_api:=[fuzzer?] )
+	dev-libs/modp_b64:=
+"
+
+src_install() {
+	insinto "/usr/$(get_libdir)/pkgconfig"
+
+	dolib.so "${OUT}"/lib/lib{brillo,installattributes,policy}*.so
+	dolib.a "${OUT}"/libbrillo*.a
+	# Install libbrillo with and without version number as a temporary
+	# measure.
+	doins "${OUT}"/obj/libbrillo/libbrillo*.pc
+
+	# Install all the header files from libbrillo/brillo/*.h into
+	# /usr/include/brillo (recursively, with sub-directories).
+	local dir
+	while read -d $'\0' -r dir; do
+		insinto "/usr/include/${dir}"
+		doins "${dir}"/*.h
+	done < <(find brillo -type d -print0)
+
+	insinto /usr/include/policy
+	doins policy/*.h
+	insinto /usr/include/install_attributes
+	doins install_attributes/libinstallattributes.h
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/libbrillo_data_encoding_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/libbrillo_dbus_data_serialization_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/libbrillo_http_form_data_fuzzer
+}
+
+platform_pkg_test() {
+	local gtest_filter_qemu="-*DeathTest*"
+	platform_test "run" "${OUT}/libbrillo_tests" "" "" "${gtest_filter_qemu}"
+	platform_test "run" "${OUT}/libinstallattributes_tests"
+	platform_test "run" "${OUT}/libpolicy_tests"
+	platform_test "run" "${OUT}/libbrillo-grpc_tests"
+}
diff --git a/chromeos-base/libbrillo/libbrillo-9999.ebuild b/chromeos-base/libbrillo/libbrillo-9999.ebuild
index ee4e816..3d63fc8 100644
--- a/chromeos-base/libbrillo/libbrillo-9999.ebuild
+++ b/chromeos-base/libbrillo/libbrillo-9999.ebuild
@@ -33,7 +33,7 @@
 	net-libs/grpc:=
 	net-misc/curl:=
 	sys-apps/rootdev:=
-	device_mapper? ( sys-fs/lvm2:= )
+	device_mapper? ( sys-fs/lvm2:=[thin] )
 	lvm_stateful_partition? ( sys-fs/lvm2:= )
 	udev? ( virtual/libudev )
 "
@@ -45,7 +45,7 @@
 "
 DEPEND="
 	${COMMON_DEPEND}
-	>=chromeos-base/protofiles-0.0.41:=
+	>=chromeos-base/protofiles-0.0.45:=
 	dbus? ( chromeos-base/system_api:=[fuzzer?] )
 	dev-libs/modp_b64:=
 "
diff --git a/chromeos-base/libchrome/libchrome-0.0.1-r118.ebuild b/chromeos-base/libchrome/libchrome-0.0.1-r118.ebuild
deleted file mode 100644
index f167bf8..0000000
--- a/chromeos-base/libchrome/libchrome-0.0.1-r118.ebuild
+++ /dev/null
@@ -1,257 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT=("d9f0aed011ba9a79f4ba999ff562d7995c9777ca" "013ad467b861503efffea6495a1c7cef761f5e42")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "2ba090802d2c1273cc7f04bf8f4c8414cdb5fde4")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/external/libchrome")
-CROS_WORKON_LOCALNAME=("platform2" "aosp/external/libchrome")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libchrome")
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-WANT_LIBCHROME="no"
-IS_LIBCHROME="yes"
-inherit cros-workon libchrome-version platform
-
-DESCRIPTION="Chrome base/ and dbus/ libraries extracted for use on Chrome OS"
-HOMEPAGE="http://dev.chromium.org/chromium-os/packages/libchrome"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="cros_host +crypto +dbus fuzzer +mojo +timers"
-
-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="
-	dev-libs/double-conversion:=
-	dev-libs/glib:2=
-	dev-libs/libevent:=
-	dev-libs/modp_b64:=
-	crypto? (
-		dev-libs/nss:=
-		dev-libs/openssl:=
-	)
-	dbus? (
-		sys-apps/dbus:=
-		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 )"
-
-src_prepare() {
-	# epatch "${FILESDIR}"/${PN}-Replace-std-unordered_map-with-std-map-for-dbus-Prop.patch
-	# epatch "${FILESDIR}"/${PN}-dbus-Filter-signal-by-the-sender-we-are-interested-i.patch
-	# epatch "${FILESDIR}"/${PN}-dbus-Make-MockObjectManager-useful.patch
-	# epatch "${FILESDIR}"/${PN}-dbus-Don-t-DCHECK-unexpected-message-type-but-ignore.patch
-	# epatch "${FILESDIR}"/${PN}-Mock-more-methods-of-dbus-Bus-in-dbus-MockBus.patch
-
-	# Disable custom memory allocator when asan is used.
-	# https://crbug.com/807685
-	use_sanitizers && epatch "${FILESDIR}"/${PN}-Disable-memory-allocator.patch
-
-	# Disable object lifetime tracking since it cuases memory leaks in
-	# sanitizer builds, https://crbug.com/908138
-	# TODO
-	# epatch "${FILESDIR}"/${PN}-Disable-object-tracking.patch
-
-	# Apply patches
-	while read -r patch; do
-		epatch "${S}/libchrome_tools/patches/${patch}" || die "failed to patch ${patch}"
-	done < <(grep -E '^[^#]' "${S}/libchrome_tools/patches/patches")
-}
-
-src_configure() {
-	cros_optimize_package_for_speed
-	platform_src_configure
-}
-
-src_test() {
-	pushd libchrome_tools || die
-	python3 -m unittest check_libchrome_test || die "failed python3 check-libchrome-test.py"
-	popd || die
-}
-
-src_install() {
-	export BASE_VER="$(cat BASE_VER)"
-	dolib.so "${OUT}"/lib/libbase*.so
-	dolib.a "${OUT}"/libbase*.a
-
-	local mojom_dirs=()
-	local header_dirs=(
-		base
-		base/allocator
-		base/containers
-		base/debug
-		base/files
-		base/hash
-		base/i18n
-		base/json
-		base/memory
-		base/message_loop
-		base/metrics
-		base/numerics
-		base/posix
-		base/process
-		base/strings
-		base/synchronization
-		base/system
-		base/task
-		base/task/common
-		base/task/sequence_manager
-		base/task/thread_pool
-		base/third_party/icu
-		base/third_party/nspr
-		base/third_party/valgrind
-		base/threading
-		base/time
-		base/timer
-		base/trace_event
-		base/trace_event/common
-		build
-		components/policy
-		components/policy/core/common
-		testing/gmock/include/gmock
-		testing/gtest/include/gtest
-	)
-	use dbus && header_dirs+=( dbus )
-	use timers && header_dirs+=( components/timers )
-
-	insinto /usr/include/libchrome/base/test
-	doins \
-		base/test/bind_test_util.h \
-		base/test/task_environment.h \
-		base/test/scoped_run_loop_timeout.h \
-		base/test/simple_test_clock.h \
-		base/test/simple_test_tick_clock.h \
-		base/test/task_environment.h \
-		base/test/test_mock_time_task_runner.h \
-		base/test/test_pending_task.h \
-		base/test/test_timeouts.h \
-
-	if use crypto; then
-		insinto /usr/include/libchrome/crypto
-		doins \
-			crypto/crypto_export.h \
-			crypto/hmac.h \
-			crypto/libcrypto-compat.h \
-			crypto/nss_key_util.h \
-			crypto/nss_util.h \
-			crypto/nss_util_internal.h \
-			crypto/openssl_util.h \
-			crypto/p224.h \
-			crypto/p224_spake.h \
-			crypto/random.h \
-			crypto/rsa_private_key.h \
-			crypto/scoped_nss_types.h \
-			crypto/scoped_openssl_types.h \
-			crypto/scoped_test_nss_db.h \
-			crypto/secure_hash.h \
-			crypto/secure_util.h \
-			crypto/sha2.h \
-			crypto/signature_creator.h \
-			crypto/signature_verifier.h
-	fi
-
-	insinto /usr/$(get_libdir)/pkgconfig
-	doins "${OUT}"/obj/libchrome/libchrome*.pc
-
-	# Install libmojo.
-	if use mojo; then
-		# Install binary.
-		dolib.a "${OUT}"/libmojo.a
-
-		# Install headers.
-		header_dirs+=(
-			ipc
-			mojo/core/
-			mojo/core/embedder
-			mojo/core/ports
-			mojo/public/c/system
-			mojo/public/cpp/base
-			mojo/public/cpp/bindings
-			mojo/public/cpp/bindings/lib
-			mojo/public/cpp/platform
-			mojo/public/cpp/system
-		)
-		mojom_dirs+=(
-			mojo/public/interfaces/bindings
-			mojo/public/mojom/base
-		)
-
-		# Install libmojo.pc.
-		insinto /usr/$(get_libdir)/pkgconfig
-		doins "${OUT}"/obj/libchrome/libmojo.pc
-
-		# Install generate_mojom_bindings.
-		# TODO(hidehiko): Clean up tools' install directory.
-		insinto /usr/src/libmojo/mojo
-		doins -r mojo/public/tools/bindings/*
-		doins -r mojo/public/tools/mojom/*
-		doins build/gn_helpers.py
-		doins -r build/android/gyp/util
-		doins -r build/android/pylib
-		exeinto /usr/src/libmojo/mojo
-		doexe libchrome_tools/mojom_generate_type_mappings.py
-
-		insinto /usr/src/libmojo/third_party
-		doins -r third_party/jinja2
-		doins -r third_party/markupsafe
-		doins -r third_party/ply
-
-		# Mark scripts executable.
-		fperms +x \
-			/usr/src/libmojo/mojo/generate_type_mappings.py \
-			/usr/src/libmojo/mojo/mojom_bindings_generator.py \
-			/usr/src/libmojo/mojo/mojom_parser.py
-	fi
-
-	# Install header files.
-	local d
-	for d in "${header_dirs[@]}" ; do
-		insinto /usr/include/libchrome/"${d}"
-		doins "${d}"/*.h
-	done
-	for d in "${mojom_dirs[@]}"; do
-		insinto /usr/include/libchrome/"${d}"
-		doins "${OUT}"/gen/include/"${d}"/*.h
-		# Not to install mojom and pickle file to prevent misuse until Chromium IPC
-		# team is ready to have a stable mojo_base. see crbug.com/1055379
-		# insinto /usr/src/libchrome/mojom/"${d}"
-		# doins "${S}"/"${d}"/*.mojom
-		# insinto /usr/share/libchrome/pickle/"${d}"
-		# doins "${OUT}"/gen/include/"${d}"/*.p
-	done
-
-	# TODO(fqj): Revisit later for type mapping (see libchrome/BUILD.gn)
-	# Install libchrome base type mojo mapping
-	# if use mojo; then
-		# insinto /usr/share/libchrome/mojom_type_mappings_typemapping
-		# doins "${OUT}"/gen/libchrome/mojom_type_mappings_typemapping
-	# fi
-
-	insinto /usr/share/libchrome
-	doins BASE_VER
-}
diff --git a/chromeos-base/libchrome/libchrome-0.0.1-r184.ebuild b/chromeos-base/libchrome/libchrome-0.0.1-r184.ebuild
new file mode 100644
index 0000000..498e809
--- /dev/null
+++ b/chromeos-base/libchrome/libchrome-0.0.1-r184.ebuild
@@ -0,0 +1,281 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+CROS_WORKON_COMMIT=("208b1d02d9b9a4065171dea01fc31ec28f277649" "425bbc2b9a1928afe1ff8c2060ef02b57a266503")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "3673ac409de15259cda121e9bfa103473a032b99")
+CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/external/libchrome")
+CROS_WORKON_LOCALNAME=("platform2" "aosp/external/libchrome")
+CROS_WORKON_EGIT_BRANCH=("main" "master")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libchrome")
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+
+WANT_LIBCHROME="no"
+IS_LIBCHROME="yes"
+inherit cros-workon libchrome-version platform
+
+DESCRIPTION="Chrome base/ and dbus/ libraries extracted for use on Chrome OS"
+HOMEPAGE="http://dev.chromium.org/chromium-os/packages/libchrome"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cros_host +crypto +dbus fuzzer +mojo +timers libchrome_b182295239"
+
+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-13.0:=
+	>=dev-cpp/absl-20200923-r4:=
+	dev-libs/double-conversion:=
+	dev-libs/glib:2=
+	dev-libs/libevent:=
+	dev-libs/modp_b64:=
+	crypto? (
+		dev-libs/nss:=
+		dev-libs/openssl:=
+	)
+	dbus? (
+		sys-apps/dbus:=
+		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 )"
+
+src_prepare() {
+	# epatch "${FILESDIR}"/${PN}-Replace-std-unordered_map-with-std-map-for-dbus-Prop.patch
+	# epatch "${FILESDIR}"/${PN}-dbus-Filter-signal-by-the-sender-we-are-interested-i.patch
+	# epatch "${FILESDIR}"/${PN}-dbus-Make-MockObjectManager-useful.patch
+	# epatch "${FILESDIR}"/${PN}-dbus-Don-t-DCHECK-unexpected-message-type-but-ignore.patch
+	# epatch "${FILESDIR}"/${PN}-Mock-more-methods-of-dbus-Bus-in-dbus-MockBus.patch
+
+	# Disable custom memory allocator when asan is used.
+	# https://crbug.com/807685
+	use_sanitizers && epatch "${FILESDIR}"/${PN}-Disable-memory-allocator.patch
+
+	# Disable object lifetime tracking since it cuases memory leaks in
+	# sanitizer builds, https://crbug.com/908138
+	# TODO
+	# epatch "${FILESDIR}"/${PN}-Disable-object-tracking.patch
+
+	# Apply patches
+	while read -r patch; do
+		epatch "${S}/libchrome_tools/patches/${patch}" || die "failed to patch ${patch}"
+	done < <(grep -E '^[^#]' "${S}/libchrome_tools/patches/patches")
+}
+
+src_configure() {
+	cros_optimize_package_for_speed
+	# TODO(b/182295239): Revert when root cause is identified.
+	# For reasons unknown yet at b/182295239, gale didn't boot if getrandom is called.
+	# Currently we suspect some seccomp filters or kernel/glibc version but
+	# there's no deterministic evidence to point to any of them.
+	# Use this workaround to skip to /dev/urandom fallback.
+	if use libchrome_b182295239; then
+		append-cxxflags "-DLIBCHROME_USE_DEV_URANDOM"
+	fi
+	platform_src_configure
+}
+
+src_test() {
+	pushd libchrome_tools || die
+	python3 -m unittest check_libchrome_test || die "failed python3 check-libchrome-test.py"
+	pushd uprev || die
+	python3 ./run_tests.py || die "failed python3 libchrome/uprev/run_tests.py"
+	popd || die
+	popd || die
+}
+
+src_install() {
+	export BASE_VER="$(cat BASE_VER)"
+	dolib.so "${OUT}"/lib/libbase*.so
+	dolib.a "${OUT}"/libbase*.a
+
+	local mojom_dirs=()
+	local header_dirs=(
+		base
+		base/allocator
+		base/containers
+		base/debug
+		base/files
+		base/functional
+		base/hash
+		base/i18n
+		base/json
+		base/memory
+		base/message_loop
+		base/metrics
+		base/numerics
+		base/posix
+		base/process
+		base/ranges
+		base/strings
+		base/synchronization
+		base/system
+		base/task
+		base/task/common
+		base/task/sequence_manager
+		base/task/thread_pool
+		base/third_party/icu
+		base/third_party/nspr
+		base/third_party/valgrind
+		base/threading
+		base/time
+		base/timer
+		base/trace_event
+		base/trace_event/common
+		base/types
+		base/util/type_safety
+		build
+		components/policy
+		components/policy/core/common
+		testing/gmock/include/gmock
+		testing/gtest/include/gtest
+		third_party/abseil-cpp/absl/types
+		third_party/perfetto/include/perfetto/tracing/
+		third_party/perfetto/include/perfetto/protozero/
+		third_party/perfetto/protos/perfetto/trace/track_event/
+	)
+	use dbus && header_dirs+=( dbus )
+	use timers && header_dirs+=( components/timers )
+
+	insinto /usr/include/libchrome/base/test
+	doins \
+		base/test/bind.h \
+		base/test/task_environment.h \
+		base/test/scoped_chromeos_version_info.h \
+		base/test/scoped_running_on_chromeos.h \
+		base/test/scoped_run_loop_timeout.h \
+		base/test/simple_test_clock.h \
+		base/test/simple_test_tick_clock.h \
+		base/test/task_environment.h \
+		base/test/test_mock_time_task_runner.h \
+		base/test/test_pending_task.h \
+		base/test/test_timeouts.h \
+
+	if use crypto; then
+		insinto /usr/include/libchrome/crypto
+		doins \
+			crypto/crypto_export.h \
+			crypto/hmac.h \
+			crypto/libcrypto-compat.h \
+			crypto/nss_key_util.h \
+			crypto/nss_util.h \
+			crypto/nss_util_internal.h \
+			crypto/openssl_util.h \
+			crypto/p224.h \
+			crypto/p224_spake.h \
+			crypto/random.h \
+			crypto/rsa_private_key.h \
+			crypto/scoped_nss_types.h \
+			crypto/scoped_openssl_types.h \
+			crypto/scoped_test_nss_db.h \
+			crypto/secure_hash.h \
+			crypto/secure_util.h \
+			crypto/sha2.h \
+			crypto/signature_creator.h \
+			crypto/signature_verifier.h
+	fi
+
+	insinto /usr/$(get_libdir)/pkgconfig
+	doins "${OUT}"/obj/libchrome/libchrome*.pc
+
+	# Install libmojo.
+	if use mojo; then
+		# Install binary.
+		dolib.so "${OUT}"/lib/libmojo.so
+
+		# Install headers.
+		header_dirs+=(
+			ipc
+			mojo/core/
+			mojo/core/embedder
+			mojo/core/ports
+			mojo/public/c/system
+			mojo/public/cpp/base
+			mojo/public/cpp/bindings
+			mojo/public/cpp/bindings/lib
+			mojo/public/cpp/platform
+			mojo/public/cpp/system
+		)
+		mojom_dirs+=(
+			mojo/public/interfaces/bindings
+			mojo/public/mojom/base
+		)
+
+		# Install libmojo.pc.
+		insinto /usr/$(get_libdir)/pkgconfig
+		doins "${OUT}"/obj/libchrome/libmojo.pc
+
+		# Install generate_mojom_bindings.
+		# TODO(hidehiko): Clean up tools' install directory.
+		insinto /usr/src/libmojo/mojo
+		doins -r mojo/public/tools/bindings/*
+		doins -r mojo/public/tools/mojom/*
+		doins build/gn_helpers.py
+		doins -r build/android/gyp/util
+		doins -r build/android/pylib
+		exeinto /usr/src/libmojo/mojo
+		doexe libchrome_tools/mojom_generate_type_mappings.py
+
+		insinto /usr/src/libmojo/third_party
+		doins -r third_party/jinja2
+		doins -r third_party/markupsafe
+		doins -r third_party/ply
+
+		# Mark scripts executable.
+		fperms +x \
+			/usr/src/libmojo/mojo/generate_type_mappings.py \
+			/usr/src/libmojo/mojo/mojom_bindings_generator.py \
+			/usr/src/libmojo/mojo/mojom_parser.py
+	fi
+
+	# Install header files.
+	local d
+	for d in "${header_dirs[@]}" ; do
+		insinto /usr/include/libchrome/"${d}"
+		doins "${d}"/*.h
+	done
+	for d in "${mojom_dirs[@]}"; do
+		insinto /usr/include/libchrome/"${d}"
+		doins "${OUT}"/gen/include/"${d}"/*.h
+		# Not to install mojom and pickle file to prevent misuse until Chromium IPC
+		# team is ready to have a stable mojo_base. see crbug.com/1055379
+		# insinto /usr/src/libchrome/mojom/"${d}"
+		# doins "${S}"/"${d}"/*.mojom
+		# insinto /usr/share/libchrome/pickle/"${d}"
+		# doins "${OUT}"/gen/include/"${d}"/*.p
+	done
+
+	# TODO(fqj): Revisit later for type mapping (see libchrome/BUILD.gn)
+	# Install libchrome base type mojo mapping
+	# if use mojo; then
+		# insinto /usr/share/libchrome/mojom_type_mappings_typemapping
+		# doins "${OUT}"/gen/libchrome/mojom_type_mappings_typemapping
+	# fi
+
+	insinto /usr/share/libchrome
+	doins BASE_VER
+}
diff --git a/chromeos-base/libchrome/libchrome-9999.ebuild b/chromeos-base/libchrome/libchrome-9999.ebuild
index d11a305..76e61fd 100644
--- a/chromeos-base/libchrome/libchrome-9999.ebuild
+++ b/chromeos-base/libchrome/libchrome-9999.ebuild
@@ -5,6 +5,7 @@
 
 CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/external/libchrome")
 CROS_WORKON_LOCALNAME=("platform2" "aosp/external/libchrome")
+CROS_WORKON_EGIT_BRANCH=("main" "master")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libchrome")
 CROS_WORKON_SUBTREE=("common-mk .gn" "")
 
@@ -18,7 +19,7 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="cros_host +crypto +dbus fuzzer +mojo +timers"
+IUSE="cros_host +crypto +dbus fuzzer +mojo +timers libchrome_b182295239"
 
 PLATFORM_SUBDIR="libchrome"
 
@@ -26,6 +27,8 @@
 # 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-13.0:=
+	>=dev-cpp/absl-20200923-r4:=
 	dev-libs/double-conversion:=
 	dev-libs/glib:2=
 	dev-libs/libevent:=
@@ -83,12 +86,23 @@
 
 src_configure() {
 	cros_optimize_package_for_speed
+	# TODO(b/182295239): Revert when root cause is identified.
+	# For reasons unknown yet at b/182295239, gale didn't boot if getrandom is called.
+	# Currently we suspect some seccomp filters or kernel/glibc version but
+	# there's no deterministic evidence to point to any of them.
+	# Use this workaround to skip to /dev/urandom fallback.
+	if use libchrome_b182295239; then
+		append-cxxflags "-DLIBCHROME_USE_DEV_URANDOM"
+	fi
 	platform_src_configure
 }
 
 src_test() {
 	pushd libchrome_tools || die
 	python3 -m unittest check_libchrome_test || die "failed python3 check-libchrome-test.py"
+	pushd uprev || die
+	python3 ./run_tests.py || die "failed python3 libchrome/uprev/run_tests.py"
+	popd || die
 	popd || die
 }
 
@@ -104,6 +118,7 @@
 		base/containers
 		base/debug
 		base/files
+		base/functional
 		base/hash
 		base/i18n
 		base/json
@@ -113,6 +128,7 @@
 		base/numerics
 		base/posix
 		base/process
+		base/ranges
 		base/strings
 		base/synchronization
 		base/system
@@ -128,19 +144,27 @@
 		base/timer
 		base/trace_event
 		base/trace_event/common
+		base/types
+		base/util/type_safety
 		build
 		components/policy
 		components/policy/core/common
 		testing/gmock/include/gmock
 		testing/gtest/include/gtest
+		third_party/abseil-cpp/absl/types
+		third_party/perfetto/include/perfetto/tracing/
+		third_party/perfetto/include/perfetto/protozero/
+		third_party/perfetto/protos/perfetto/trace/track_event/
 	)
 	use dbus && header_dirs+=( dbus )
 	use timers && header_dirs+=( components/timers )
 
 	insinto /usr/include/libchrome/base/test
 	doins \
-		base/test/bind_test_util.h \
+		base/test/bind.h \
 		base/test/task_environment.h \
+		base/test/scoped_chromeos_version_info.h \
+		base/test/scoped_running_on_chromeos.h \
 		base/test/scoped_run_loop_timeout.h \
 		base/test/simple_test_clock.h \
 		base/test/simple_test_tick_clock.h \
@@ -179,7 +203,7 @@
 	# Install libmojo.
 	if use mojo; then
 		# Install binary.
-		dolib.a "${OUT}"/libmojo.a
+		dolib.so "${OUT}"/lib/libmojo.so
 
 		# Install headers.
 		header_dirs+=(
diff --git a/chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r1779.ebuild b/chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r1779.ebuild
deleted file mode 100644
index 7e2ce2e..0000000
--- a/chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r1779.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "01471fe321e7be48397d556f5b9a51e4f5d243a7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk libchromeos-ui .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="libchromeos-ui"
-
-inherit cros-workon platform
-
-DESCRIPTION="Library used to start Chromium-based UIs"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libchromeos-ui/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="chromeos-base/bootstat"
-DEPEND=""
-
-src_install() {
-	local v="$(libchrome_ver)"
-
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	./platform2_preinstall.sh "${OUT}" "${v}"
-	dolib.so "${OUT}"/lib/libchromeos-ui.so
-	doins "${OUT}"/lib/libchromeos-ui.pc
-
-	insinto /usr/include/chromeos/ui
-	doins "${S}"/chromeos/ui/*.h
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/libchromeos-ui-test"
-}
diff --git a/chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r1807.ebuild b/chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r1807.ebuild
new file mode 100644
index 0000000..d712a58
--- /dev/null
+++ b/chromeos-base/libchromeos-ui/libchromeos-ui-0.0.1-r1807.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9b0fa02babfde71d911b22f3db40b34a99639c9" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk libchromeos-ui .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="libchromeos-ui"
+
+inherit cros-workon platform
+
+DESCRIPTION="Library used to start Chromium-based UIs"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libchromeos-ui/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="chromeos-base/bootstat"
+DEPEND=""
+
+src_install() {
+	local v="$(libchrome_ver)"
+
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	./platform2_preinstall.sh "${OUT}" "${v}"
+	dolib.so "${OUT}"/lib/libchromeos-ui.so
+	doins "${OUT}"/lib/libchromeos-ui.pc
+
+	insinto /usr/include/chromeos/ui
+	doins "${S}"/chromeos/ui/*.h
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/libchromeos-ui-test"
+}
diff --git a/chromeos-base/libchromeos-use-flags/libchromeos-use-flags-1-r21.ebuild b/chromeos-base/libchromeos-use-flags/libchromeos-use-flags-1-r21.ebuild
deleted file mode 100644
index fc46130..0000000
--- a/chromeos-base/libchromeos-use-flags/libchromeos-use-flags-1-r21.ebuild
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
-# the canonical empty project.
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="platform/empty-project"
-
-inherit cros-workon
-
-DESCRIPTION="Text file listing USE flags for chromeos-base/libchromeos"
-
-LICENSE="BSD-Google"
-# Nothing depends on this package for build info.  All the files are used at
-# runtime only by design.
-SLOT="0/0"
-KEYWORDS="*"
-
-# NB: Flags listed here are off by default unless prefixed with a '+'.
-# This list is lengthy since it determines the USE flags that will be written to
-# the /etc/ui_use_flags.txt file that's used to generate Chrome's command line.
-IUSE="
-	allow_consumer_kiosk
-	arc
-	arc_adb_sideloading
-	arc_force_2x_scaling
-	arc_native_bridge_64bit_support_experiment
-	arc_transition_m_to_n
-	arc_uses_cros_video_decoder
-	arcpp
-	arcvm
-	asan
-	background_blur
-	big_little
-	biod
-	borealis_host
-	cfm_enabled_device
-	cheets
-	clear_fast_ink_buffer
-	compupdates
-	diagnostics
-	disable_background_blur
-	disable_cros_video_decoder
-	disable_explicit_dma_fences
-	disable_native_gpu_memory_buffers
-	disable_instant_tethering
-	disable_spectre_variant2_mitigation
-	disable_yuv420_biplanar
-	dlc
-	drm_atomic
-	edge_touch_filtering
-	enable_heuristic_palm_detection_filter
-	enable_neural_palm_detection_filter
-	force_breakpad
-	gpu_sandbox_allow_sysv_shm
-	gpu_sandbox_failures_not_fatal
-	gpu_sandbox_start_early
-	houdini
-	houdini64
-	kvm_guest
-	kvm_host
-	kvm_transition
-	lacros
-	legacy_keyboard
-	legacy_power_button
-	moblab
-	native_gpu_memory_buffers
-	natural_scroll_default
-	ndk_translation
-	ndk_translation64
-	neon
-	ondevice_handwriting
-	ondevice_handwriting_dlc
-	oobe_skip_postlogin
-	oobe_skip_to_login
-	opengles
-	passive_event_listeners
-	pita
-	pita-camera
-	pita-microphone
-	rialto
-	scheduler_configuration_performance
-	screenshare_sw_codec
-	shelf-hotseat
-	smartdim
-	tablet_form_factor
-	touch_centric_device
-	touchscreen_wakeup
-	touchview
-	video_capture_use_gpu_memory_buffer
-	virtio_gpu
-	webui-tab-strip
-	wilco
-"
-
-src_install() {
-	# Install a file containing a list of currently-set USE flags that
-	# ChromiumCommandBuilder reads at runtime while constructing Chrome's
-	# command line.
-	local path="${WORKDIR}/ui_use_flags.txt"
-	cat <<EOF >"${path}"
-# This file is just for libchromeos's ChromiumCommandBuilder class.
-# Don't use it for anything else. Your code will break.
-EOF
-
-	# If you need to use a new flag, add it to $IUSE at the top of the file.
-	local flags=( ${IUSE} )
-	local flag
-	for flag in "${flags[@]/#[-+]}" ; do
-		usev ${flag}
-	done | sort -u >>"${path}"
-
-	insinto /etc
-	doins "${path}"
-}
diff --git a/chromeos-base/libchromeos-use-flags/libchromeos-use-flags-1-r28.ebuild b/chromeos-base/libchromeos-use-flags/libchromeos-use-flags-1-r28.ebuild
new file mode 100644
index 0000000..21ac1f2
--- /dev/null
+++ b/chromeos-base/libchromeos-use-flags/libchromeos-use-flags-1-r28.ebuild
@@ -0,0 +1,122 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="Text file listing USE flags for chromeos-base/libchromeos"
+
+LICENSE="BSD-Google"
+# Nothing depends on this package for build info.  All the files are used at
+# runtime only by design.
+SLOT="0/0"
+KEYWORDS="*"
+
+# NB: Flags listed here are off by default unless prefixed with a '+'.
+# This list is lengthy since it determines the USE flags that will be written to
+# the /etc/ui_use_flags.txt file that's used to generate Chrome's command line.
+IUSE="
+	allow_consumer_kiosk
+	arc
+	arc_adb_sideloading
+	arc_force_2x_scaling
+	arc_native_bridge_64bit_support_experiment
+	arc_transition_m_to_n
+	arc_uses_cros_video_decoder
+	arcpp
+	arcvm
+	asan
+	background_blur
+	big_little
+	biod
+	borealis_host
+	cfm_enabled_device
+	cheets
+	clear_fast_ink_buffer
+	compupdates
+	diagnostics
+	disable_background_blur
+	disable_cros_video_decoder
+	disable_explicit_dma_fences
+	disable_native_gpu_memory_buffers
+	disable_instant_tethering
+	disable_spectre_variant2_mitigation
+	drm_atomic
+	edge_touch_filtering
+	enable_dsp_hotword
+	enable_heuristic_palm_detection_filter
+	enable_neural_palm_detection_filter
+	force_breakpad
+	gpu_sandbox_allow_sysv_shm
+	gpu_sandbox_failures_not_fatal
+	gpu_sandbox_start_early
+	houdini
+	houdini64
+	kvm_guest
+	kvm_host
+	kvm_transition
+	lacros
+	legacy_keyboard
+	legacy_power_button
+	moblab
+	native_gpu_memory_buffers
+	natural_scroll_default
+	ndk_translation
+	ndk_translation64
+	neon
+	ondevice_document_scanner
+	ondevice_handwriting
+	ondevice_handwriting_dlc
+	ondevice_speech
+	oobe_skip_postlogin
+	oobe_skip_to_login
+	opengles
+	os_install_service
+	passive_event_listeners
+	pita
+	pita-camera
+	pita-microphone
+	rialto
+	scheduler_configuration_performance
+	screenshare_sw_codec
+	set_hw_overlay_strategy_none
+	shelf-hotseat
+	smartdim
+	tablet_form_factor
+	touch_centric_device
+	touchscreen_wakeup
+	touchview
+	video_capture_use_gpu_memory_buffer
+	virtio_gpu
+	webui-tab-strip
+	wilco
+"
+
+src_install() {
+	# Install a file containing a list of currently-set USE flags that
+	# ChromiumCommandBuilder reads at runtime while constructing Chrome's
+	# command line.
+	local path="${WORKDIR}/ui_use_flags.txt"
+	cat <<EOF >"${path}"
+# This file is just for libchromeos's ChromiumCommandBuilder class.
+# Don't use it for anything else. Your code will break.
+EOF
+
+	# If you need to use a new flag, add it to $IUSE at the top of the file.
+	local flags=( ${IUSE} )
+	local flag
+	for flag in "${flags[@]/#[-+]}" ; do
+		usev ${flag}
+	done | sort -u >>"${path}"
+
+	insinto /etc
+	doins "${path}"
+}
diff --git a/chromeos-base/libchromeos-use-flags/libchromeos-use-flags-9999.ebuild b/chromeos-base/libchromeos-use-flags/libchromeos-use-flags-9999.ebuild
index d18febf..096db8d 100644
--- a/chromeos-base/libchromeos-use-flags/libchromeos-use-flags-9999.ebuild
+++ b/chromeos-base/libchromeos-use-flags/libchromeos-use-flags-9999.ebuild
@@ -47,10 +47,9 @@
 	disable_native_gpu_memory_buffers
 	disable_instant_tethering
 	disable_spectre_variant2_mitigation
-	disable_yuv420_biplanar
-	dlc
 	drm_atomic
 	edge_touch_filtering
+	enable_dsp_hotword
 	enable_heuristic_palm_detection_filter
 	enable_neural_palm_detection_filter
 	force_breakpad
@@ -71,11 +70,14 @@
 	ndk_translation
 	ndk_translation64
 	neon
+	ondevice_document_scanner
 	ondevice_handwriting
 	ondevice_handwriting_dlc
+	ondevice_speech
 	oobe_skip_postlogin
 	oobe_skip_to_login
 	opengles
+	os_install_service
 	passive_event_listeners
 	pita
 	pita-camera
@@ -83,6 +85,7 @@
 	rialto
 	scheduler_configuration_performance
 	screenshare_sw_codec
+	set_hw_overlay_strategy_none
 	shelf-hotseat
 	smartdim
 	tablet_form_factor
diff --git a/chromeos-base/libcontainer/libcontainer-0.0.1-r1542.ebuild b/chromeos-base/libcontainer/libcontainer-0.0.1-r1542.ebuild
deleted file mode 100644
index 77d2f5f..0000000
--- a/chromeos-base/libcontainer/libcontainer-0.0.1-r1542.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "ed310628c7b59ac5528ea8347990fc4f5e95c915" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libcontainer .gn"
-
-PLATFORM_SUBDIR="libcontainer"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Library to run jailed containers on Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libcontainer/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+device-mapper"
-
-# Need lvm2 for devmapper.
-RDEPEND="chromeos-base/minijail:=
-	device-mapper? ( sys-fs/lvm2:= )"
-DEPEND="${RDEPEND}"
-
-src_install() {
-	into /
-	dolib.so "${OUT}"/lib/libcontainer.so
-
-	"${S}"/platform2_preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}"/libcontainer.pc
-
-	insinto "/usr/include/chromeos"
-	doins libcontainer.h
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}"/libcontainer_test
-}
diff --git a/chromeos-base/libcontainer/libcontainer-0.0.1-r1570.ebuild b/chromeos-base/libcontainer/libcontainer-0.0.1-r1570.ebuild
new file mode 100644
index 0000000..632e08f
--- /dev/null
+++ b/chromeos-base/libcontainer/libcontainer-0.0.1-r1570.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a2ab6048637d439be995dd4cdc3ef91d0291fb42" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk libcontainer .gn"
+
+PLATFORM_SUBDIR="libcontainer"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Library to run jailed containers on Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libcontainer/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+device-mapper"
+
+# Need lvm2 for devmapper.
+RDEPEND="chromeos-base/minijail:=
+	device-mapper? ( sys-fs/lvm2:= )"
+DEPEND="${RDEPEND}"
+
+src_install() {
+	into /
+	dolib.so "${OUT}"/lib/libcontainer.so
+
+	"${S}"/platform2_preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}"/libcontainer.pc
+
+	insinto "/usr/include/chromeos"
+	doins libcontainer.h
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}"/libcontainer_test
+}
diff --git a/chromeos-base/libec/OWNERS b/chromeos-base/libec/OWNERS
new file mode 100644
index 0000000..7e5bc27
--- /dev/null
+++ b/chromeos-base/libec/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libec/OWNERS
diff --git a/chromeos-base/libec/libec-0.0.1-r36.ebuild b/chromeos-base/libec/libec-0.0.1-r36.ebuild
new file mode 100644
index 0000000..9f22464
--- /dev/null
+++ b/chromeos-base/libec/libec-0.0.1-r36.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("b1f4ad4ab3cbb07f7d6d2756b7c06a950376ea88" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "667180eb5db7eb65a292552b106b32aa5881c9eb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_USE_VCSID="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="biod common-mk libec .gn"
+
+PLATFORM_SUBDIR="libec"
+
+inherit cros-workon platform
+
+DESCRIPTION="Embedded Controller Library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libec"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+COMMON_DEPEND=""
+
+RDEPEND="
+	${COMMON_DEPEND}
+	"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/chromeos-ec-headers:=
+"
+
+src_install() {
+	dolib.so "${OUT}"/lib/libec*.so
+	dolib.a "${OUT}"/libec*.a
+
+	insinto /usr/"$(get_libdir)"/pkgconfig
+	doins "${OUT}"/obj/libec/libec*.pc
+
+	insinto /usr/include/libec
+	doins ./*.h
+
+	insinto /usr/include/libec/fingerprint
+	doins ./fingerprint/*.h
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/libec_tests"
+}
diff --git a/chromeos-base/libec/libec-9999.ebuild b/chromeos-base/libec/libec-9999.ebuild
new file mode 100644
index 0000000..9cc37d8
--- /dev/null
+++ b/chromeos-base/libec/libec-9999.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_USE_VCSID="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="biod common-mk libec .gn"
+
+PLATFORM_SUBDIR="libec"
+
+inherit cros-workon platform
+
+DESCRIPTION="Embedded Controller Library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libec"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+
+COMMON_DEPEND=""
+
+RDEPEND="
+	${COMMON_DEPEND}
+	"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/chromeos-ec-headers:=
+"
+
+src_install() {
+	dolib.so "${OUT}"/lib/libec*.so
+	dolib.a "${OUT}"/libec*.a
+
+	insinto /usr/"$(get_libdir)"/pkgconfig
+	doins "${OUT}"/obj/libec/libec*.pc
+
+	insinto /usr/include/libec
+	doins ./*.h
+
+	insinto /usr/include/libec/fingerprint
+	doins ./fingerprint/*.h
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/libec_tests"
+}
diff --git a/chromeos-base/libevdev/libevdev-0.0.1-r81.ebuild b/chromeos-base/libevdev/libevdev-0.0.1-r81.ebuild
deleted file mode 100644
index 7b45be3..0000000
--- a/chromeos-base/libevdev/libevdev-0.0.1-r81.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="58e091cd2132dff2283affacba17175964fa45d6"
-CROS_WORKON_TREE="36d45015a70fa508f65011ff715aad905cb1a2d6"
-CROS_WORKON_PROJECT="chromiumos/platform/libevdev"
-CROS_WORKON_USE_VCSID=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_LOCALNAME="platform/libevdev"
-
-inherit cros-debug cros-sanitizers cros-workon cros-common.mk
-
-DESCRIPTION="evdev userspace library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/libevdev"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="-asan"
-
-src_configure() {
-	sanitizers-setup-env
-	cros-common.mk_src_configure
-}
-
-src_install() {
-	emake DESTDIR="${ED}" LIBDIR="/usr/$(get_libdir)" install
-}
diff --git a/chromeos-base/libevdev/libevdev-0.0.1-r83.ebuild b/chromeos-base/libevdev/libevdev-0.0.1-r83.ebuild
new file mode 100644
index 0000000..036767b
--- /dev/null
+++ b/chromeos-base/libevdev/libevdev-0.0.1-r83.ebuild
@@ -0,0 +1,30 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="8d00f789df9bd4efce783a46f30d75d742d3e8d4"
+CROS_WORKON_TREE="3eca4243cc1e474869fcb6bb441c0404101a66ae"
+CROS_WORKON_PROJECT="chromiumos/platform/libevdev"
+CROS_WORKON_USE_VCSID=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_LOCALNAME="platform/libevdev"
+
+inherit cros-debug cros-sanitizers cros-workon cros-common.mk
+
+DESCRIPTION="evdev userspace library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/libevdev"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="-asan"
+SLOT="0/1"
+
+src_configure() {
+	sanitizers-setup-env
+	cros-common.mk_src_configure
+}
+
+src_install() {
+	emake DESTDIR="${ED}" LIBDIR="/usr/$(get_libdir)" install
+}
diff --git a/chromeos-base/libevdev/libevdev-9999.ebuild b/chromeos-base/libevdev/libevdev-9999.ebuild
index 0c8efca..c97a189 100644
--- a/chromeos-base/libevdev/libevdev-9999.ebuild
+++ b/chromeos-base/libevdev/libevdev-9999.ebuild
@@ -16,6 +16,7 @@
 LICENSE="BSD-Google"
 KEYWORDS="~*"
 IUSE="-asan"
+SLOT="0/1"
 
 src_configure() {
 	sanitizers-setup-env
diff --git a/chromeos-base/libhwsec-foundation/OWNERS b/chromeos-base/libhwsec-foundation/OWNERS
new file mode 100644
index 0000000..13d8777
--- /dev/null
+++ b/chromeos-base/libhwsec-foundation/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libhwsec-foundation/OWNERS
diff --git a/chromeos-base/libhwsec-foundation/libhwsec-foundation-0.0.1-r51.ebuild b/chromeos-base/libhwsec-foundation/libhwsec-foundation-0.0.1-r51.ebuild
new file mode 100644
index 0000000..44b355f
--- /dev/null
+++ b/chromeos-base/libhwsec-foundation/libhwsec-foundation-0.0.1-r51.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2021 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="143f6f59e6002c02e58f4daefbd75cc49830d6ae"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "81dfbbc1756a3b4224b447e7bf10a916d97c4f66" "0b612d0f1e8dbe59a5549b476f1e681e0b7fe94e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug/1184685): "libhwsec" is not necessary; remove it after solving
+# the bug.
+CROS_WORKON_SUBTREE="common-mk metrics libhwsec libhwsec-foundation .gn"
+
+PLATFORM_SUBDIR="libhwsec-foundation"
+
+inherit cros-workon platform
+
+DESCRIPTION="Crypto and utility functions used in TPM related daemons."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libhwsec-foundation/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test tpm2"
+
+RDEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152
+	chromeos-base/system_api
+	chromeos-base/tpm_manager-client
+	"
+
+src_install() {
+	insinto /usr/include/libhwsec-foundation
+	doins ./hwsec-foundation_export.h
+
+	insinto /usr/include/libhwsec-foundation/tpm_error
+	doins ./tpm_error/tpm_error_data.h
+	doins ./tpm_error/handle_auth_failure.h
+
+	insinto /usr/include/libhwsec-foundation/utility
+	doins ./utility/conversions.h
+	doins ./utility/crypto.h
+
+	dolib.so "${OUT}"/lib/libhwsec-foundation.so
+}
+
+platform_pkg_test() {
+	local tests=(
+		hwsec-foundation_testrunner
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/libhwsec-foundation/libhwsec-foundation-9999.ebuild b/chromeos-base/libhwsec-foundation/libhwsec-foundation-9999.ebuild
new file mode 100644
index 0000000..16d69a2
--- /dev/null
+++ b/chromeos-base/libhwsec-foundation/libhwsec-foundation-9999.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2021 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.
+
+EAPI=7
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug/1184685): "libhwsec" is not necessary; remove it after solving
+# the bug.
+CROS_WORKON_SUBTREE="common-mk metrics libhwsec libhwsec-foundation .gn"
+
+PLATFORM_SUBDIR="libhwsec-foundation"
+
+inherit cros-workon platform
+
+DESCRIPTION="Crypto and utility functions used in TPM related daemons."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libhwsec-foundation/"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE="test tpm2"
+
+RDEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152
+	chromeos-base/system_api
+	chromeos-base/tpm_manager-client
+	"
+
+src_install() {
+	insinto /usr/include/libhwsec-foundation
+	doins ./hwsec-foundation_export.h
+
+	insinto /usr/include/libhwsec-foundation/tpm_error
+	doins ./tpm_error/tpm_error_data.h
+	doins ./tpm_error/handle_auth_failure.h
+
+	insinto /usr/include/libhwsec-foundation/utility
+	doins ./utility/conversions.h
+	doins ./utility/crypto.h
+
+	dolib.so "${OUT}"/lib/libhwsec-foundation.so
+}
+
+platform_pkg_test() {
+	local tests=(
+		hwsec-foundation_testrunner
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/libhwsec/libhwsec-0.0.1-r147.ebuild b/chromeos-base/libhwsec/libhwsec-0.0.1-r147.ebuild
deleted file mode 100644
index efe401c..0000000
--- a/chromeos-base/libhwsec/libhwsec-0.0.1-r147.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 2019 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "989d840598227b15d78525d5f92c806011a9c158" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 .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/+/master/libhwsec/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test tpm2"
-
-COMMON_DEPEND="
-	dev-libs/openssl:0=
-	!tpm2? ( app-crypt/trousers:= )
-"
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-src_install() {
-	insinto /usr/include/chromeos/libhwsec
-	doins ./*.h
-
-	insinto /usr/include/chromeos/libhwsec/overalls
-	doins ./overalls/overalls.h
-	doins ./overalls/overalls_api.h
-
-	if ! use tpm2; then
-		insinto /usr/include/chromeos/libhwsec/test_utils/tpm1
-		doins ./test_utils/tpm1/*.h
-	fi
-
-	dolib.so "${OUT}"/lib/libhwsec.so
-	dolib.a "${OUT}"/libhwsec_test.a
-}
-
-
-platform_pkg_test() {
-	local tests=(
-		hwsec_testrunner
-	)
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/libhwsec/libhwsec-0.0.1-r179.ebuild b/chromeos-base/libhwsec/libhwsec-0.0.1-r179.ebuild
new file mode 100644
index 0000000..7e5a15b
--- /dev/null
+++ b/chromeos-base/libhwsec/libhwsec-0.0.1-r179.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2019 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="143f6f59e6002c02e58f4daefbd75cc49830d6ae"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "81dfbbc1756a3b4224b447e7bf10a916d97c4f66" "0b612d0f1e8dbe59a5549b476f1e681e0b7fe94e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 .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/+/master/libhwsec/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test tpm2"
+
+COMMON_DEPEND="
+	chromeos-base/libhwsec-foundation
+	dev-libs/openssl:0=
+	!tpm2? ( app-crypt/trousers:= )
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+src_install() {
+	insinto /usr/include/chromeos/libhwsec
+	doins ./*.h
+
+	insinto /usr/include/chromeos/libhwsec/overalls
+	doins ./overalls/overalls.h
+	doins ./overalls/overalls_api.h
+
+	if ! use tpm2; then
+		insinto /usr/include/chromeos/libhwsec/test_utils/tpm1
+		doins ./test_utils/tpm1/*.h
+	fi
+
+	dolib.so "${OUT}"/lib/libhwsec.so
+	dolib.a "${OUT}"/libhwsec_test.a
+}
+
+
+platform_pkg_test() {
+	local tests=(
+		hwsec_testrunner
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/libhwsec/libhwsec-9999.ebuild b/chromeos-base/libhwsec/libhwsec-9999.ebuild
index 5ee3a76..0d7fee7 100644
--- a/chromeos-base/libhwsec/libhwsec-9999.ebuild
+++ b/chromeos-base/libhwsec/libhwsec-9999.ebuild
@@ -8,7 +8,7 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libhwsec .gn"
+CROS_WORKON_SUBTREE="common-mk libhwsec libhwsec-foundation .gn"
 
 PLATFORM_SUBDIR="libhwsec"
 
@@ -22,6 +22,7 @@
 IUSE="test tpm2"
 
 COMMON_DEPEND="
+	chromeos-base/libhwsec-foundation
 	dev-libs/openssl:0=
 	!tpm2? ( app-crypt/trousers:= )
 "
diff --git a/chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r139.ebuild b/chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r139.ebuild
new file mode 100644
index 0000000..58f12dd
--- /dev/null
+++ b/chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r139.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="08aee9d7a91dddd5977b31ca2a2833ba54f8d89a"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "da73aae6d89c8e69c3740af612610792ce42b1a8" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE=".gn iioservice common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="iioservice/libiioservice_ipc"
+
+inherit cros-workon platform
+
+DESCRIPTION="Chrome OS sensor HAL IPC util."
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND=""
+
+DEPEND="${RDEPEND}
+	virtual/pkgconfig
+"
+
+src_install() {
+	dolib.so "${OUT}/lib/libiioservice_ipc.so"
+	dolib.a "${OUT}/libiioservice_ipc_mojom.a"
+}
diff --git a/chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r86.ebuild b/chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r86.ebuild
deleted file mode 100644
index 6e744b2..0000000
--- a/chromeos-base/libiioservice_ipc/libiioservice_ipc-0.0.1-r86.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="3851f006cd31ac014e5ae9645b0f785bd90523b7"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "871fd3a6dccaf2c2099f6200b55691f4ce8f07cb" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE=".gn iioservice common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="iioservice/libiioservice_ipc"
-
-inherit cros-workon platform
-
-DESCRIPTION="Chrome OS sensor HAL IPC util."
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND=""
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig
-"
-
-src_install() {
-	dolib.so "${OUT}/lib/libiioservice_ipc.so"
-	dolib.a "${OUT}/libiioservice_ipc_mojom.a"
-}
diff --git a/chromeos-base/libipp/libipp-0.0.1-r126.ebuild b/chromeos-base/libipp/libipp-0.0.1-r126.ebuild
deleted file mode 100644
index b269a3d..0000000
--- a/chromeos-base/libipp/libipp-0.0.1-r126.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "a30c13fe33c247bd5cbff62b4e1c55d0efbf759b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libipp .gn"
-
-PLATFORM_SUBDIR="libipp"
-
-inherit cros-workon platform
-
-DESCRIPTION="The library for building and parsing IPP (Internet Printing Protocol) frames."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libipp/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-src_install() {
-	dolib.so "${OUT}/lib/libipp.so"
-
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins libipp.pc
-
-	insinto "/usr/include/chromeos/libipp"
-	doins ipp.h ipp_attribute.h ipp_base.h ipp_collections.h ipp_enums.h \
-			ipp_export.h ipp_operations.h ipp_package.h
-
-	# Install fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/libipp_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/libipp_test"
-}
diff --git a/chromeos-base/libipp/libipp-0.0.1-r153.ebuild b/chromeos-base/libipp/libipp-0.0.1-r153.ebuild
new file mode 100644
index 0000000..98a8f8f
--- /dev/null
+++ b/chromeos-base/libipp/libipp-0.0.1-r153.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "446ac148c9c5710eb395d8c044f4e44b8bf4361a" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk libipp .gn"
+
+PLATFORM_SUBDIR="libipp"
+
+inherit cros-workon platform
+
+DESCRIPTION="The library for building and parsing IPP (Internet Printing Protocol) frames."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libipp/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+src_install() {
+	dolib.so "${OUT}/lib/libipp.so"
+
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins libipp.pc
+
+	insinto "/usr/include/chromeos/libipp"
+	doins ipp.h ipp_attribute.h ipp_base.h ipp_collections.h ipp_enums.h \
+			ipp_export.h ipp_operations.h ipp_package.h
+
+	# Install fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/libipp_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/libipp_test"
+}
diff --git a/chromeos-base/libmems/libmems-0.0.1-r157.ebuild b/chromeos-base/libmems/libmems-0.0.1-r157.ebuild
deleted file mode 100644
index 671054b..0000000
--- a/chromeos-base/libmems/libmems-0.0.1-r157.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="74a18769fbd5903778ea23c3be2db076c01b4dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "fd9664c67f7b5bf90e85d620439201bab8f5ba3a" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libmems .gn"
-
-PLATFORM_SUBDIR="libmems"
-
-inherit cros-workon platform
-
-DESCRIPTION="MEMS support library for Chromium OS."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libmems"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND="
-	net-libs/libiio:="
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/system_api:="
-
-src_install() {
-	dolib.so "${OUT}/lib/libmems.so"
-	dolib.so "${OUT}/lib/libmems_test_support.so"
-
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins libmems.pc
-	doins libmems_test_support.pc
-
-	insinto "/usr/include/chromeos/libmems"
-	doins *.h
-}
-
-platform_pkg_test() {
-	local tests=(
-		libmems_testrunner
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
-
diff --git a/chromeos-base/libmems/libmems-0.0.1-r192.ebuild b/chromeos-base/libmems/libmems-0.0.1-r192.ebuild
new file mode 100644
index 0000000..68d3bbf
--- /dev/null
+++ b/chromeos-base/libmems/libmems-0.0.1-r192.ebuild
@@ -0,0 +1,53 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "359903647899af99fb1bc9ba9d666b0e78fcb3a8" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk libmems .gn"
+
+PLATFORM_SUBDIR="libmems"
+
+inherit cros-workon platform
+
+DESCRIPTION="MEMS support library for Chromium OS."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libmems"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+COMMON_DEPEND="
+	net-libs/libiio:="
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/system_api:="
+
+src_install() {
+	dolib.so "${OUT}/lib/libmems.so"
+	dolib.so "${OUT}/lib/libmems_test_support.so"
+
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins libmems.pc
+	doins libmems_test_support.pc
+
+	insinto "/usr/include/chromeos/libmems"
+	doins *.h
+}
+
+platform_pkg_test() {
+	local tests=(
+		libmems_testrunner
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
+
diff --git a/chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r416.ebuild b/chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r416.ebuild
deleted file mode 100644
index 363b9b9..0000000
--- a/chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r416.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "5c6a69ae1a339332642149aa39da47d14efbe3fd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 .gn"
-
-PLATFORM_SUBDIR="libpasswordprovider"
-
-inherit cros-workon platform
-
-DESCRIPTION="Library for storing and retrieving user password"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libpasswordprovider"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="
-	sys-apps/keyutils:=
-"
-
-DEPEND="${RDEPEND}"
-
-src_install() {
-	dolib.so "${OUT}/lib/libpasswordprovider.so"
-
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins libpasswordprovider.pc
-
-	insinto "/usr/include/libpasswordprovider"
-	doins *.h
-}
-
-platform_pkg_test() {
-
-	platform_test "run" "${OUT}/${test_bin}" "0" "${gtest_filter}"
-}
-
-platform_pkg_test() {
-	local gtest_filter=""
-	if ! use x86 && ! use amd64 ; then
-		# PasswordProvider tests fail on qemu due to unsupported system calls to keyrings.
-		# Run only the Password unit tests on qemu since keyrings are not supported yet.
-		# https://crbug.com/792699
-		einfo "Skipping PasswordProvider unit tests on non-x86 platform"
-		gtest_filter+="Password.*"
-	fi
-
-	local tests=(
-		password_provider_test
-	)
-
-	local test_bin
-		for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}" 0 "${gtest_filter}"
-	done
-}
diff --git a/chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r443.ebuild b/chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r443.ebuild
new file mode 100644
index 0000000..d4225ba4
--- /dev/null
+++ b/chromeos-base/libpasswordprovider/libpasswordprovider-0.0.1-r443.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "eae0546f4ee5132d4544af4770755eb05f60cba6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 .gn"
+
+PLATFORM_SUBDIR="libpasswordprovider"
+
+inherit cros-workon platform
+
+DESCRIPTION="Library for storing and retrieving user password"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libpasswordprovider"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="
+	sys-apps/keyutils:=
+"
+
+DEPEND="${RDEPEND}"
+
+src_install() {
+	dolib.so "${OUT}/lib/libpasswordprovider.so"
+
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins libpasswordprovider.pc
+
+	insinto "/usr/include/libpasswordprovider"
+	doins *.h
+}
+
+platform_pkg_test() {
+
+	platform_test "run" "${OUT}/${test_bin}" "0" "${gtest_filter}"
+}
+
+platform_pkg_test() {
+	local gtest_filter=""
+	if ! use x86 && ! use amd64 ; then
+		# PasswordProvider tests fail on qemu due to unsupported system calls to keyrings.
+		# Run only the Password unit tests on qemu since keyrings are not supported yet.
+		# https://crbug.com/792699
+		einfo "Skipping PasswordProvider unit tests on non-x86 platform"
+		gtest_filter+="Password.*"
+	fi
+
+	local tests=(
+		password_provider_test
+	)
+
+	local test_bin
+		for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}" 0 "${gtest_filter}"
+	done
+}
diff --git a/chromeos-base/libsirenia/libsirenia-0.1.0-r16.ebuild b/chromeos-base/libsirenia/libsirenia-0.1.0-r16.ebuild
deleted file mode 100644
index d555af9..0000000
--- a/chromeos-base/libsirenia/libsirenia-0.1.0-r16.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="d5bd453b7a24f4bc5b93408a793da3149406a526"
-CROS_WORKON_TREE="36749988683ed09546c9aaebe9f124beceb722e1"
-CROS_RUST_SUBDIR="sirenia/libsirenia"
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="The support library for the ManaTEE runtime environment."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/libsirenia"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND=""
-
-DEPEND="${RDEPEND}
-	chromeos-base/sirenia-rpc-macros:=
-	>=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2
-	=dev-rust/getopts-0.2*:=
-	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3
-	dev-rust/libchromeos:=
-	dev-rust/minijail:=
-	>=dev-rust/serde-1.0.114:= <dev-rust/serde-2
-	=dev-rust/serde_derive-1*:=
-	dev-rust/sys_util:=
-	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
-"
-
-# We skip the vsock test because it requires the vsock kernel modules to be
-# loaded.
-src_test() {
-	cros-rust_src_test -- --skip transport::tests::vsocktransport
-
-	# Run tests for sirenia-rpc-macros here since the tests depend on libsirenia
-	# and libsirenia depends on sirenia-rpc-macros.
-	(
-		cd sirenia-rpc-macros || die
-		cros-rust_src_test
-	)
-}
diff --git a/chromeos-base/libsirenia/libsirenia-0.1.0-r39.ebuild b/chromeos-base/libsirenia/libsirenia-0.1.0-r39.ebuild
new file mode 100644
index 0000000..ec99978d
--- /dev/null
+++ b/chromeos-base/libsirenia/libsirenia-0.1.0-r39.ebuild
@@ -0,0 +1,68 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="b15630d225145b9dc8603b8f500e68954c25fd3f"
+CROS_WORKON_TREE="41f3dce4c2ba5bc9fd7972e4ebb6cc36beaa8147"
+CROS_RUST_SUBDIR="sirenia/libsirenia"
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="The support library for the ManaTEE runtime environment."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/libsirenia"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	chromeos-base/sirenia-rpc-macros:=
+	=dev-rust/chrono-0.4*:=
+	>=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2
+	=dev-rust/getopts-0.2*:=
+	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3
+	dev-rust/libchromeos:=
+	dev-rust/minijail:=
+	>=dev-rust/openssl-0.10.25:= <dev-rust/openssl-0.11.0
+	>=dev-rust/serde-1.0.114:= <dev-rust/serde-2
+	=dev-rust/serde_derive-1*:=
+	dev-rust/sys_util:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
+
+# We skip the vsock test because it requires the vsock kernel modules to be
+# loaded.
+src_test() {
+	cros-rust_src_test -- --skip transport::tests::vsocktransport \
+		--skip sandbox::tests::sandbox_unpriviledged
+
+	# TODO(crbug.com/1171078) Run this with the other tests.
+	(
+		local timeout_millis=5000
+		CROS_RUST_PLATFORM_TEST_ARGS=(
+			"${CROS_RUST_PLATFORM_TEST_ARGS[@]}"
+			--env RUST_TEST_TIME_UNIT="${timeout_millis},${timeout_millis}"
+		)
+		cros-rust_src_test -- --nocapture \
+			-Z unstable-options --ensure-time \
+			sandbox::tests::sandbox_unpriviledged
+	)
+
+	if cros_rust_is_direct_exec; then
+		# Run tests for sirenia-rpc-macros here since the tests depend on libsirenia
+		# and libsirenia depends on sirenia-rpc-macros.
+		(
+			cd sirenia-rpc-macros || die
+			cros-rust_src_test
+		)
+	fi
+}
diff --git a/chromeos-base/libsirenia/libsirenia-9999.ebuild b/chromeos-base/libsirenia/libsirenia-9999.ebuild
index aa182e1..583d936 100644
--- a/chromeos-base/libsirenia/libsirenia-9999.ebuild
+++ b/chromeos-base/libsirenia/libsirenia-9999.ebuild
@@ -5,6 +5,7 @@
 
 CROS_RUST_SUBDIR="sirenia/libsirenia"
 
+CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
@@ -18,30 +19,48 @@
 KEYWORDS="~*"
 IUSE=""
 
-RDEPEND=""
-
-DEPEND="${RDEPEND}
+DEPEND="
 	chromeos-base/sirenia-rpc-macros:=
+	=dev-rust/chrono-0.4*:=
 	>=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2
 	=dev-rust/getopts-0.2*:=
 	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3
 	dev-rust/libchromeos:=
 	dev-rust/minijail:=
+	>=dev-rust/openssl-0.10.25:= <dev-rust/openssl-0.11.0
 	>=dev-rust/serde-1.0.114:= <dev-rust/serde-2
 	=dev-rust/serde_derive-1*:=
 	dev-rust/sys_util:=
 	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
 "
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
 
 # We skip the vsock test because it requires the vsock kernel modules to be
 # loaded.
 src_test() {
-	cros-rust_src_test -- --skip transport::tests::vsocktransport
+	cros-rust_src_test -- --skip transport::tests::vsocktransport \
+		--skip sandbox::tests::sandbox_unpriviledged
 
-	# Run tests for sirenia-rpc-macros here since the tests depend on libsirenia
-	# and libsirenia depends on sirenia-rpc-macros.
+	# TODO(crbug.com/1171078) Run this with the other tests.
 	(
-		cd sirenia-rpc-macros || die
-		cros-rust_src_test
+		local timeout_millis=5000
+		CROS_RUST_PLATFORM_TEST_ARGS=(
+			"${CROS_RUST_PLATFORM_TEST_ARGS[@]}"
+			--env RUST_TEST_TIME_UNIT="${timeout_millis},${timeout_millis}"
+		)
+		cros-rust_src_test -- --nocapture \
+			-Z unstable-options --ensure-time \
+			sandbox::tests::sandbox_unpriviledged
 	)
+
+	if cros_rust_is_direct_exec; then
+		# Run tests for sirenia-rpc-macros here since the tests depend on libsirenia
+		# and libsirenia depends on sirenia-rpc-macros.
+		(
+			cd sirenia-rpc-macros || die
+			cros-rust_src_test
+		)
+	fi
 }
diff --git a/chromeos-base/libtpmcrypto/libtpmcrypto-0.0.1-r267.ebuild b/chromeos-base/libtpmcrypto/libtpmcrypto-0.0.1-r267.ebuild
deleted file mode 100644
index 760caf3..0000000
--- a/chromeos-base/libtpmcrypto/libtpmcrypto-0.0.1-r267.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "6bcff6ea2d0ff76e4398205aee498eb314d63902" "20ed8021024637e492670d20fa5969a2ad75e4b6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 libtpmcrypto trunks .gn"
-
-PLATFORM_SUBDIR="libtpmcrypto"
-
-inherit cros-workon platform
-
-DESCRIPTION="Encrypts/Decrypts data to a serialized proto with TPM sealed key."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libtpmcrypto/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="tpm tpm2"
-REQUIRED_USE="tpm2? ( !tpm )"
-
-# This depends on protobuf because it uses protoc and needs to be rebuilt
-# whenever the protobuf library is updated since generated source files may be
-# incompatible across different versions of the protobuf library.
-COMMON_DEPEND="
-	tpm2? (
-		chromeos-base/trunks:=
-	)
-	!tpm2? (
-		app-crypt/trousers:=
-	)
-	dev-libs/protobuf:=
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-"
-
-src_install() {
-	dolib.so "${OUT}/lib/libtpmcrypto.so"
-
-	"${S}"/platform2_preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}/libtpmcrypto.pc"
-
-	insinto "/usr/include/libtpmcrypto"
-	doins *.h
-}
-
-platform_pkg_test() {
-	local tests=(
-		tpmcrypto_test
-	)
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/libtpmcrypto/libtpmcrypto-0.0.1-r325.ebuild b/chromeos-base/libtpmcrypto/libtpmcrypto-0.0.1-r325.ebuild
new file mode 100644
index 0000000..12f47dc
--- /dev/null
+++ b/chromeos-base/libtpmcrypto/libtpmcrypto-0.0.1-r325.ebuild
@@ -0,0 +1,67 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="ecd28d2c26fbe86b6822c6d6afb80f118a8f7f03"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "5d77de997847c22cb783cc11cd0fab4f6fae59f0" "a06a3f47395fb7b584188c6852764bc773e5497e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 libtpmcrypto trunks .gn"
+
+PLATFORM_SUBDIR="libtpmcrypto"
+
+inherit cros-workon platform
+
+DESCRIPTION="Encrypts/Decrypts data to a serialized proto with TPM sealed key."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/libtpmcrypto/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="tpm tpm2"
+REQUIRED_USE="tpm2? ( !tpm )"
+
+# This depends on protobuf because it uses protoc and needs to be rebuilt
+# whenever the protobuf library is updated since generated source files may be
+# incompatible across different versions of the protobuf library.
+COMMON_DEPEND="
+	tpm2? (
+		chromeos-base/trunks:=
+	)
+	!tpm2? (
+		app-crypt/trousers:=
+	)
+	dev-libs/protobuf:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+"
+
+src_install() {
+	dolib.so "${OUT}/lib/libtpmcrypto.so"
+
+	"${S}"/platform2_preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}/libtpmcrypto.pc"
+
+	insinto "/usr/include/libtpmcrypto"
+	doins *.h
+}
+
+platform_pkg_test() {
+	local tests=(
+		tpmcrypto_test
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r187.ebuild b/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r187.ebuild
deleted file mode 100644
index aee7729..0000000
--- a/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r187.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="cc55fd248b036e2a2feb8a746fb07cb370563dbc"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "95abd403306bcd38620bd25a7e715a47abc46b1c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/vm/libvda .gn"
-
-PLATFORM_SUBDIR="arc/vm/libvda"
-
-inherit cros-workon platform
-
-DESCRIPTION="libvda Chrome GPU tests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	chromeos-base/libbrillo:=
-	media-libs/minigbm:=
-"
-
-DEPEND="
-	${RDEPEND}
-	chromeos-base/system_api:=
-"
-
-src_compile() {
-	platform "compile" "libvda_gpu_unittest"
-}
-
-src_install() {
-	exeinto /usr/libexec/libvda-gpu-tests
-	doexe "${OUT}/libvda_gpu_unittest"
-}
diff --git a/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r227.ebuild b/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r227.ebuild
new file mode 100644
index 0000000..cd12c85
--- /dev/null
+++ b/chromeos-base/libvda-gpu-tests/libvda-gpu-tests-0.0.1-r227.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "fbf4dfb51a4aa58831d6179663e19f3d1ef68b16" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/vm/libvda .gn"
+
+PLATFORM_SUBDIR="arc/vm/libvda"
+
+inherit cros-workon platform
+
+DESCRIPTION="libvda Chrome GPU tests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	chromeos-base/libbrillo:=
+	media-libs/minigbm:=
+"
+
+DEPEND="
+	${RDEPEND}
+	chromeos-base/system_api:=
+"
+
+src_compile() {
+	platform "compile" "libvda_gpu_unittest"
+}
+
+src_install() {
+	exeinto /usr/libexec/libvda-gpu-tests
+	doexe "${OUT}/libvda_gpu_unittest"
+}
diff --git a/chromeos-base/libvda/libvda-0.0.1-r193.ebuild b/chromeos-base/libvda/libvda-0.0.1-r193.ebuild
deleted file mode 100644
index 7f55560..0000000
--- a/chromeos-base/libvda/libvda-0.0.1-r193.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="cc55fd248b036e2a2feb8a746fb07cb370563dbc"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "95abd403306bcd38620bd25a7e715a47abc46b1c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/vm/libvda .gn"
-
-PLATFORM_SUBDIR="arc/vm/libvda"
-
-inherit cros-workon platform
-
-DESCRIPTION="libvda CrOS video decoding library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="libvda_test"
-
-COMMON_DEPEND="
-	media-libs/minigbm:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/system_api:=
-"
-
-src_install() {
-	dolib.so "${OUT}"/lib/libvda.so
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}"/obj/arc/vm/libvda/libvda.pc
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/libvda_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/libvda_fake_unittest"
-
-	platform_fuzzer_test "${OUT}"/libvda_fuzzer
-}
diff --git a/chromeos-base/libvda/libvda-0.0.1-r233.ebuild b/chromeos-base/libvda/libvda-0.0.1-r233.ebuild
new file mode 100644
index 0000000..c1c8f9d
--- /dev/null
+++ b/chromeos-base/libvda/libvda-0.0.1-r233.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "fbf4dfb51a4aa58831d6179663e19f3d1ef68b16" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/vm/libvda .gn"
+
+PLATFORM_SUBDIR="arc/vm/libvda"
+
+inherit cros-workon platform
+
+DESCRIPTION="libvda CrOS video decoding library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="libvda_test"
+
+COMMON_DEPEND="
+	media-libs/minigbm:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api:=
+"
+
+src_install() {
+	dolib.so "${OUT}"/lib/libvda.so
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}"/obj/arc/vm/libvda/libvda.pc
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/libvda_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/libvda_fake_unittest"
+
+	platform_fuzzer_test "${OUT}"/libvda_fuzzer
+}
diff --git a/chromeos-base/libweave/libweave-0.0.1-r1266.ebuild b/chromeos-base/libweave/libweave-0.0.1-r1266.ebuild
deleted file mode 100644
index ee2bc1b..0000000
--- a/chromeos-base/libweave/libweave-0.0.1-r1266.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("b05e4a6b92b2cfe608b6cd8d5d37168680fc080e" "9060831133ffb21d26641018be667b36a449b86a")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "be6429aaf7e01d2681cb9c8fee7ed73703282382")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME=("platform2" "weave/libweave")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "weave/libweave")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libweave")
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_SUBDIR="libweave"
-
-inherit cros-workon libchrome platform
-
-DESCRIPTION="Weave device library"
-HOMEPAGE="http://dev.chromium.org/chromium-os/platform"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-# libweave-test, which depends on gmock, is built unconditionally, so the gmock
-# dependency is always needed.
-DEPEND="dev-cpp/gtest:="
-
-src_install() {
-	insinto "/usr/$(get_libdir)/pkgconfig"
-
-	# Install libraries.
-	local v="$(libchrome_ver)"
-	./preinstall.sh "${OUT}" "${v}"
-	dolib.so "${OUT}"/lib/libweave.so
-	doins "${OUT}"/lib/libweave{,-test}.pc
-	dolib.a "${OUT}"/libweave-test.a
-
-	# Install header files.
-	insinto /usr/include/weave/
-	doins -r include/weave/*
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/libweave_testrunner"
-}
diff --git a/chromeos-base/libweave/libweave-0.0.1-r1296.ebuild b/chromeos-base/libweave/libweave-0.0.1-r1296.ebuild
new file mode 100644
index 0000000..88d1d1c
--- /dev/null
+++ b/chromeos-base/libweave/libweave-0.0.1-r1296.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("9af083c78a329699153cc604ee62cd02f3a87b2b" "029236ebe764b6071d4cd22662bef917be82b2af")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "2537616b612f732756d25c0aa7be9b7b202b1361")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME=("platform2" "weave/libweave")
+CROS_WORKON_PROJECT=("chromiumos/platform2" "weave/libweave")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libweave")
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+
+PLATFORM_SUBDIR="libweave"
+
+inherit cros-workon libchrome platform
+
+DESCRIPTION="Weave device library"
+HOMEPAGE="http://dev.chromium.org/chromium-os/platform"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+# libweave-test, which depends on gmock, is built unconditionally, so the gmock
+# dependency is always needed.
+DEPEND="dev-cpp/gtest:="
+
+src_install() {
+	insinto "/usr/$(get_libdir)/pkgconfig"
+
+	# Install libraries.
+	local v="$(libchrome_ver)"
+	./preinstall.sh "${OUT}" "${v}"
+	dolib.so "${OUT}"/lib/libweave.so
+	doins "${OUT}"/lib/libweave{,-test}.pc
+	dolib.a "${OUT}"/libweave-test.a
+
+	# Install header files.
+	insinto /usr/include/weave/
+	doins -r include/weave/*
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/libweave_testrunner"
+}
diff --git a/chromeos-base/lorgnette/lorgnette-0.0.1-r2985.ebuild b/chromeos-base/lorgnette/lorgnette-0.0.1-r2985.ebuild
deleted file mode 100644
index 7e21e80..0000000
--- a/chromeos-base/lorgnette/lorgnette-0.0.1-r2985.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "d334dedf11d8cc35a56b23c705f5d2e0ae7be9a6" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk lorgnette metrics .gn"
-
-PLATFORM_SUBDIR="lorgnette"
-
-inherit cros-workon platform user udev
-
-DESCRIPTION="Document Scanning service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/lorgnette/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-COMMON_DEPEND="
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	media-libs/libpng:=
-	media-gfx/sane-backends:=
-	virtual/libusb:1
-"
-
-RDEPEND="${COMMON_DEPEND}
-	chromeos-base/minijail
-	media-gfx/sane-airscan
-	test? (
-		media-gfx/perceptualdiff:=
-	)
-"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/permission_broker-client:=
-	chromeos-base/system_api:=
-"
-
-pkg_preinst() {
-	enewgroup ippusb
-	enewgroup usbprinter
-}
-
-src_install() {
-	dobin "${OUT}"/lorgnette
-	insinto /etc/dbus-1/system.d
-	doins dbus_permissions/org.chromium.lorgnette.conf
-	insinto /usr/share/dbus-1/system-services
-	doins dbus_service/org.chromium.lorgnette.service
-	insinto /etc/init
-	doins init/lorgnette.conf
-	udev_dorules udev/*.rules
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/lorgnette_unittest"
-}
diff --git a/chromeos-base/lorgnette/lorgnette-0.0.1-r3066.ebuild b/chromeos-base/lorgnette/lorgnette-0.0.1-r3066.ebuild
new file mode 100644
index 0000000..b215d13
--- /dev/null
+++ b/chromeos-base/lorgnette/lorgnette-0.0.1-r3066.ebuild
@@ -0,0 +1,66 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="58ceaf1e833d9afc1307bf9349c9a1fda7326167"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "7ab95adad72dd346e5249e117b29330382e9f716" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk lorgnette metrics .gn"
+
+PLATFORM_SUBDIR="lorgnette"
+
+inherit cros-workon platform user udev
+
+DESCRIPTION="Document Scanning service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/lorgnette/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+COMMON_DEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	media-libs/libpng:=
+	media-gfx/sane-airscan:=
+	media-gfx/sane-backends:=
+	virtual/jpeg:0=
+	virtual/libusb:1
+"
+
+RDEPEND="${COMMON_DEPEND}
+	chromeos-base/minijail
+	test? (
+		chromeos-base/sane-backends-test
+		media-gfx/perceptualdiff:=
+	)
+"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/permission_broker-client:=
+	chromeos-base/system_api:=
+"
+
+pkg_preinst() {
+	enewgroup ippusb
+	enewgroup usbprinter
+}
+
+src_install() {
+	platform_src_install
+
+	dobin "${OUT}"/lorgnette
+	insinto /etc/dbus-1/system.d
+	doins dbus_permissions/org.chromium.lorgnette.conf
+	insinto /usr/share/dbus-1/system-services
+	doins dbus_service/org.chromium.lorgnette.service
+	insinto /etc/init
+	doins init/lorgnette.conf
+	udev_dorules udev/*.rules
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/lorgnette_unittest"
+}
diff --git a/chromeos-base/lorgnette/lorgnette-9999.ebuild b/chromeos-base/lorgnette/lorgnette-9999.ebuild
index be6e366..9c15854 100644
--- a/chromeos-base/lorgnette/lorgnette-9999.ebuild
+++ b/chromeos-base/lorgnette/lorgnette-9999.ebuild
@@ -22,14 +22,16 @@
 COMMON_DEPEND="
 	>=chromeos-base/metrics-0.0.1-r3152:=
 	media-libs/libpng:=
+	media-gfx/sane-airscan:=
 	media-gfx/sane-backends:=
+	virtual/jpeg:0=
 	virtual/libusb:1
 "
 
 RDEPEND="${COMMON_DEPEND}
 	chromeos-base/minijail
-	media-gfx/sane-airscan
 	test? (
+		chromeos-base/sane-backends-test
 		media-gfx/perceptualdiff:=
 	)
 "
@@ -45,6 +47,8 @@
 }
 
 src_install() {
+	platform_src_install
+
 	dobin "${OUT}"/lorgnette
 	insinto /etc/dbus-1/system.d
 	doins dbus_permissions/org.chromium.lorgnette.conf
diff --git a/chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r101.ebuild b/chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r101.ebuild
deleted file mode 100644
index d84ed55..0000000
--- a/chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r101.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="57779f9c27d62896f66cced9cc88443ae9585372"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "d334dedf11d8cc35a56b23c705f5d2e0ae7be9a6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk lorgnette .gn"
-
-PLATFORM_SUBDIR="lorgnette"
-
-inherit cros-workon platform
-
-DESCRIPTION="Command line interface to scanning service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/lorgnette"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-SLOT="0/0"
-
-RDEPEND="
-	chromeos-base/lorgnette
-"
-
-src_install() {
-	dobin "${OUT}"/lorgnette_cli
-}
diff --git a/chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r144.ebuild b/chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r144.ebuild
new file mode 100644
index 0000000..10a30da
--- /dev/null
+++ b/chromeos-base/lorgnette_cli/lorgnette_cli-0.0.1-r144.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="58ceaf1e833d9afc1307bf9349c9a1fda7326167"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "7ab95adad72dd346e5249e117b29330382e9f716" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk lorgnette .gn"
+
+PLATFORM_SUBDIR="lorgnette"
+
+inherit cros-workon platform
+
+DESCRIPTION="Command line interface to scanning service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/lorgnette"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+SLOT="0/0"
+
+RDEPEND="
+	chromeos-base/lorgnette
+"
+
+src_install() {
+	dobin "${OUT}"/lorgnette_cli
+}
diff --git a/chromeos-base/manatee-client/manatee-client-0.0.1-r28.ebuild b/chromeos-base/manatee-client/manatee-client-0.0.1-r28.ebuild
deleted file mode 100644
index 8552daf..0000000
--- a/chromeos-base/manatee-client/manatee-client-0.0.1-r28.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="d5bd453b7a24f4bc5b93408a793da3149406a526"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8142910ebe1039f79b7c8e33260b6428bbee5ef3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk sirenia .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="sirenia/manatee-client"
-
-inherit cros-workon platform
-
-DESCRIPTION="Chrome OS ManaTEE D-Bus client library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-BDEPEND="
-	chromeos-base/chromeos-dbus-bindings
-"
-
-src_install() {
-	# Install D-Bus client library.
-	platform_install_dbus_client_lib "manatee"
-}
diff --git a/chromeos-base/manatee-client/manatee-client-0.0.1-r86.ebuild b/chromeos-base/manatee-client/manatee-client-0.0.1-r86.ebuild
new file mode 100644
index 0000000..2dd669e
--- /dev/null
+++ b/chromeos-base/manatee-client/manatee-client-0.0.1-r86.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "727b5a2cdf7d07c050cc575ee636711da70333a2" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk sirenia .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="sirenia/manatee-client"
+
+inherit cros-workon platform
+
+DESCRIPTION="Chrome OS ManaTEE D-Bus client library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings
+"
+
+src_install() {
+	# Install D-Bus client library.
+	platform_install_dbus_client_lib "manatee"
+}
diff --git a/chromeos-base/manatee-runtime/OWNERS b/chromeos-base/manatee-runtime/OWNERS
new file mode 100644
index 0000000..f570a32
--- /dev/null
+++ b/chromeos-base/manatee-runtime/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/sirenia/OWNERS
diff --git a/chromeos-base/manatee-runtime/files/chromeos-version.sh b/chromeos-base/manatee-runtime/files/chromeos-version.sh
new file mode 100644
index 0000000..20ae8cf
--- /dev/null
+++ b/chromeos-base/manatee-runtime/files/chromeos-version.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# Copyright 2021 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.
+
+# Assumes the first 'version =' line in the Cargo.toml is the version for the
+# crate.
+awk '/^version = / { gsub(/"/, "", $0); print $3; exit }' "$1/sirenia/manatee-runtime/Cargo.toml"
diff --git a/chromeos-base/manatee-runtime/manatee-runtime-0.1.0-r7.ebuild b/chromeos-base/manatee-runtime/manatee-runtime-0.1.0-r7.ebuild
new file mode 100644
index 0000000..8b5cb61
--- /dev/null
+++ b/chromeos-base/manatee-runtime/manatee-runtime-0.1.0-r7.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="b15630d225145b9dc8603b8f500e68954c25fd3f"
+CROS_WORKON_TREE="d82e84546e6140f16431633e392a549997ff27f9"
+CROS_RUST_SUBDIR="sirenia/manatee-runtime"
+
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Library for TEE apps to interact with sirenia."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/manatee-runtime/"
+
+LICENSE="BSD-Google"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+IUSE="cros_host manatee"
+
+RDEPEND=""
+
+DEPEND="${RDEPEND}
+	chromeos-base/libsirenia:=
+	dev-rust/libchromeos:=
+	>=dev-rust/serde-1.0.114:= <dev-rust/serde-2
+	dev-rust/sync:=
+	dev-rust/sys_util:=
+"
+
+src_install() {
+	local build_dir="$(cros-rust_get_build_dir)"
+
+	# Needed for initramfs, but not for the root-fs.
+	if use cros_host ; then
+		# /build is not allowed when installing to the host.
+		exeinto "/bin"
+	else
+		exeinto "/build/initramfs"
+	fi
+
+	if use manatee ;  then
+		doexe "${build_dir}/demo_app"
+	else
+		dobin "${build_dir}/demo_app"
+	fi
+}
diff --git a/chromeos-base/manatee-runtime/manatee-runtime-9999.ebuild b/chromeos-base/manatee-runtime/manatee-runtime-9999.ebuild
new file mode 100644
index 0000000..16ed373
--- /dev/null
+++ b/chromeos-base/manatee-runtime/manatee-runtime-9999.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_RUST_SUBDIR="sirenia/manatee-runtime"
+
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Library for TEE apps to interact with sirenia."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/manatee-runtime/"
+
+LICENSE="BSD-Google"
+SLOT="0/${PVR}"
+KEYWORDS="~*"
+IUSE="cros_host manatee"
+
+RDEPEND=""
+
+DEPEND="${RDEPEND}
+	chromeos-base/libsirenia:=
+	dev-rust/libchromeos:=
+	>=dev-rust/serde-1.0.114:= <dev-rust/serde-2
+	dev-rust/sync:=
+	dev-rust/sys_util:=
+"
+
+src_install() {
+	local build_dir="$(cros-rust_get_build_dir)"
+
+	# Needed for initramfs, but not for the root-fs.
+	if use cros_host ; then
+		# /build is not allowed when installing to the host.
+		exeinto "/bin"
+	else
+		exeinto "/build/initramfs"
+	fi
+
+	if use manatee ;  then
+		doexe "${build_dir}/demo_app"
+	else
+		dobin "${build_dir}/demo_app"
+	fi
+}
diff --git a/chromeos-base/mcastd/mcastd-0.0.1-r162.ebuild b/chromeos-base/mcastd/mcastd-0.0.1-r162.ebuild
deleted file mode 100644
index 0570bb5..0000000
--- a/chromeos-base/mcastd/mcastd-0.0.1-r162.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="891275e43ab2ed3070c377dd889259604911e046"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "dce82635efeafb4457e130913bcabc6fcf00bdf7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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"
-
-PLATFORM_SUBDIR="patchpanel/mcastd"
-
-inherit cros-workon libchrome platform
-
-DESCRIPTION="Multicast forwarder daemon"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/network/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-COMMON_DEPEND="
-	dev-libs/protobuf:=
-	chromeos-base/libbrillo:=
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	!chromeos-base/arc-networkd-mcastd
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-"
-
-src_install() {
-	dobin "${OUT}"/mcastd
-}
diff --git a/chromeos-base/mcastd/mcastd-0.0.1-r233.ebuild b/chromeos-base/mcastd/mcastd-0.0.1-r233.ebuild
new file mode 100644
index 0000000..ae73ee0
--- /dev/null
+++ b/chromeos-base/mcastd/mcastd-0.0.1-r233.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="c8356149dd3addec8ddef84545cf8a9dc8530f01"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "ae86a7d3ab814f4089a041bdf224a46af7c4b4bf" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_SUBDIR="patchpanel/mcastd"
+
+inherit cros-workon libchrome platform
+
+DESCRIPTION="Multicast forwarder daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/network/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	dev-libs/protobuf:=
+	chromeos-base/libbrillo:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	!chromeos-base/arc-networkd-mcastd
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+"
+
+src_install() {
+	dobin "${OUT}"/mcastd
+}
diff --git a/chromeos-base/memd/memd-0.1.0-r63.ebuild b/chromeos-base/memd/memd-0.1.0-r63.ebuild
deleted file mode 100644
index d69e94d..0000000
--- a/chromeos-base/memd/memd-0.1.0-r63.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="e2ae0b1627d081187ae2cb21c1b76663a1d9eab4"
-CROS_WORKON_TREE=("f6601370d273ede0bc6b3a93a4211ab90c98ebdc" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_RUST_SUBDIR="metrics/memd"
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} common-mk"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Fine-grain memory metrics collector"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/metrics/memd/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+seccomp"
-
-DEPEND="chromeos-base/system_api:=
-	sys-apps/dbus:=
-	~dev-rust/chrono-0.4.2:=
-	~dev-rust/dbus-0.6.1:=
-	=dev-rust/env_logger-0.6*:=
-	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
-	~dev-rust/log-0.4.5:=
-	>=dev-rust/protobuf-2.8:=
-	!>=dev-rust/protobuf-3
-	>=dev-rust/protoc-rust-2.8:=
-	!>=dev-rust/protoc-rust-3
-	~dev-rust/syslog-4.0.1:=
-	~dev-rust/time-0.1.40:=
-	=dev-rust/tempfile-3*:=
-	"
-
-RDEPEND="sys-apps/dbus"
-
-src_install() {
-	# cargo doesn't know how to install cross-compiled binaries.  It will
-	# always install native binaries for the host system.  Install manually
-	# instead.
-	local build_dir="$(cros-rust_get_build_dir)"
-	dobin "${build_dir}/memd"
-	insinto /etc/init
-	doins init/memd.conf
-	insinto /usr/share/policy
-	use seccomp && \
-		newins "init/memd-seccomp-${ARCH}.policy" memd-seccomp.policy
-}
diff --git a/chromeos-base/memd/memd-0.1.0-r96.ebuild b/chromeos-base/memd/memd-0.1.0-r96.ebuild
new file mode 100644
index 0000000..03a52a8
--- /dev/null
+++ b/chromeos-base/memd/memd-0.1.0-r96.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="576984316ea188ad1a48570288ed56b912804178"
+CROS_WORKON_TREE=("75f65f147da7feb0796cb97c434e13bc61d8ee8f" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_RUST_SUBDIR="metrics/memd"
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} common-mk"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Fine-grain memory metrics collector"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/metrics/memd/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+seccomp"
+
+DEPEND="chromeos-base/system_api:=
+	sys-apps/dbus:=
+	>=dev-rust/chrono-0.4.2:= <dev-rust/chrono-0.5.0
+	>=dev-rust/dbus-0.6.1:= <dev-rust/dbus-0.7.0
+	=dev-rust/env_logger-0.6*:=
+	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
+	>=dev-rust/log-0.4.5:= <dev-rust/log-0.5.0
+	>=dev-rust/protobuf-2.3:= <dev-rust/protobuf-3.0
+	>=dev-rust/protoc-rust-2.3:= <dev-rust/protoc-rust-3
+	=dev-rust/syslog-4*:=
+	=dev-rust/tempfile-3*:=
+	>=dev-rust/time-0.1.40:= <dev-rust/time-0.2.0
+	"
+RDEPEND="sys-apps/dbus"
+
+src_install() {
+	# cargo doesn't know how to install cross-compiled binaries.  It will
+	# always install native binaries for the host system.  Install manually
+	# instead.
+	local build_dir="$(cros-rust_get_build_dir)"
+	dobin "${build_dir}/memd"
+	insinto /etc/init
+	doins init/memd.conf
+	insinto /usr/share/policy
+	use seccomp && \
+		newins "init/memd-seccomp-${ARCH}.policy" memd-seccomp.policy
+}
diff --git a/chromeos-base/memd/memd-9999.ebuild b/chromeos-base/memd/memd-9999.ebuild
index eda3c65..7383574 100644
--- a/chromeos-base/memd/memd-9999.ebuild
+++ b/chromeos-base/memd/memd-9999.ebuild
@@ -22,20 +22,17 @@
 
 DEPEND="chromeos-base/system_api:=
 	sys-apps/dbus:=
-	~dev-rust/chrono-0.4.2:=
-	~dev-rust/dbus-0.6.1:=
+	>=dev-rust/chrono-0.4.2:= <dev-rust/chrono-0.5.0
+	>=dev-rust/dbus-0.6.1:= <dev-rust/dbus-0.7.0
 	=dev-rust/env_logger-0.6*:=
 	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
-	~dev-rust/log-0.4.5:=
-	>=dev-rust/protobuf-2.8:=
-	!>=dev-rust/protobuf-3
-	>=dev-rust/protoc-rust-2.8:=
-	!>=dev-rust/protoc-rust-3
-	~dev-rust/syslog-4.0.1:=
-	~dev-rust/time-0.1.40:=
+	>=dev-rust/log-0.4.5:= <dev-rust/log-0.5.0
+	>=dev-rust/protobuf-2.3:= <dev-rust/protobuf-3.0
+	>=dev-rust/protoc-rust-2.3:= <dev-rust/protoc-rust-3
+	=dev-rust/syslog-4*:=
 	=dev-rust/tempfile-3*:=
+	>=dev-rust/time-0.1.40:= <dev-rust/time-0.2.0
 	"
-
 RDEPEND="sys-apps/dbus"
 
 src_install() {
diff --git a/chromeos-base/mems_setup/mems_setup-0.0.1-r189.ebuild b/chromeos-base/mems_setup/mems_setup-0.0.1-r189.ebuild
deleted file mode 100644
index fbda4da..0000000
--- a/chromeos-base/mems_setup/mems_setup-0.0.1-r189.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="74a18769fbd5903778ea23c3be2db076c01b4dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "18fa17a886b3196a3ec5ad479ac06a9d0a240b7e" "fd9664c67f7b5bf90e85d620439201bab8f5ba3a" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 mems_setup libmems .gn"
-
-PLATFORM_SUBDIR="mems_setup"
-
-inherit cros-workon platform
-
-DESCRIPTION="MEMS Setup for Chromium OS."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/mems_setup"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="iioservice"
-
-COMMON_DEPEND="
-	chromeos-base/libmems:=
-	net-libs/libiio:="
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/system_api:="
-
-src_install() {
-	dosbin "${OUT}"/mems_setup
-}
-
-platform_pkg_test() {
-	local tests=(
-		mems_setup_testrunner
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/mems_setup/mems_setup-0.0.1-r245.ebuild b/chromeos-base/mems_setup/mems_setup-0.0.1-r245.ebuild
new file mode 100644
index 0000000..08ee5d4
--- /dev/null
+++ b/chromeos-base/mems_setup/mems_setup-0.0.1-r245.ebuild
@@ -0,0 +1,49 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="08aee9d7a91dddd5977b31ca2a2833ba54f8d89a"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "da73aae6d89c8e69c3740af612610792ce42b1a8" "956b1c75a21148c69a084aa4528169235fbae153" "359903647899af99fb1bc9ba9d666b0e78fcb3a8" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 iioservice mems_setup libmems .gn"
+
+PLATFORM_SUBDIR="mems_setup"
+
+inherit cros-workon platform udev
+
+DESCRIPTION="MEMS Setup for Chromium OS."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/mems_setup"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="iioservice"
+
+COMMON_DEPEND="
+	chromeos-base/libmems:=
+	net-libs/libiio:="
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/system_api:="
+
+src_install() {
+	udev_dorules 99-mems_setup.rules
+	dosbin "${OUT}"/mems_setup
+}
+
+platform_pkg_test() {
+	local tests=(
+		mems_setup_testrunner
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/mems_setup/mems_setup-9999.ebuild b/chromeos-base/mems_setup/mems_setup-9999.ebuild
index 9649b8c..080f55d 100644
--- a/chromeos-base/mems_setup/mems_setup-9999.ebuild
+++ b/chromeos-base/mems_setup/mems_setup-9999.ebuild
@@ -8,11 +8,11 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 # TODO(crbug.com/809389): Remove libmems from this list.
-CROS_WORKON_SUBTREE="common-mk mems_setup libmems .gn"
+CROS_WORKON_SUBTREE="common-mk iioservice mems_setup libmems .gn"
 
 PLATFORM_SUBDIR="mems_setup"
 
-inherit cros-workon platform
+inherit cros-workon platform udev
 
 DESCRIPTION="MEMS Setup for Chromium OS."
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/mems_setup"
@@ -31,6 +31,7 @@
 	chromeos-base/system_api:="
 
 src_install() {
+	udev_dorules 99-mems_setup.rules
 	dosbin "${OUT}"/mems_setup
 }
 
diff --git a/chromeos-base/metrics/metrics-0.0.1-r3208.ebuild b/chromeos-base/metrics/metrics-0.0.1-r3208.ebuild
deleted file mode 100644
index 554ef79..0000000
--- a/chromeos-base/metrics/metrics-0.0.1-r3208.ebuild
+++ /dev/null
@@ -1,106 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk metrics .gn"
-
-PLATFORM_SUBDIR="metrics"
-
-inherit cros-constants cros-workon libchrome-version platform systemd user
-
-DESCRIPTION="Metrics aggregation service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/metrics/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="fuzzer metrics_uploader +passive_metrics systemd"
-
-COMMON_DEPEND="
-	dev-libs/protobuf:=
-	dev-libs/re2:=
-	sys-apps/rootdev:=
-	"
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/session_manager-client:=
-	chromeos-base/system_api:=[fuzzer?]
-	chromeos-base/vboot_reference:=
-	"
-
-src_install() {
-	dobin "${OUT}"/metrics_client
-	dobin "${OUT}"/chromeos-pgmem
-
-	if use passive_metrics; then
-		dobin "${OUT}"/metrics_daemon
-		if use systemd; then
-			systemd_dounit init/metrics-daemon.service
-			systemd_enable_service multi-user.target metrics-daemon.service
-			systemd_dotmpfilesd init/metrics.conf
-		else
-			insinto /etc/init
-			doins init/metrics_library.conf init/metrics_daemon.conf
-		fi
-
-		if use metrics_uploader; then
-			if use systemd; then
-				sed -i '/ExecStart=/s:metrics_daemon:metrics_daemon -uploader:' \
-					"${D}"/usr/lib/systemd/system/metrics-daemon.service || die
-			else
-				sed -i '/DAEMON_FLAGS=/s:=.*:="-uploader":' \
-					"${D}"/etc/init/metrics_daemon.conf || die
-			fi
-		fi
-	fi
-
-	insinto /usr/$(get_libdir)/pkgconfig
-	local v="$(libchrome_ver)"
-	./platform2_preinstall.sh "${OUT}" "${v}"
-	dolib.so "${OUT}/lib/libmetrics.so"
-	doins "${OUT}/lib/libmetrics.pc"
-
-	insinto /usr/include/metrics
-	doins c_metrics_library.h \
-		cumulative_metrics.h \
-		metrics_library{,_mock}.h \
-		persistent_integer.h \
-		timer{,_mock}.h
-
-	# Install the protobuf so that autotests can have access to it.
-	insinto /usr/include/metrics/proto
-	doins uploader/proto/*.proto
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/metrics_library_consent_id_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/metrics_serialization_utils_fuzzer
-}
-
-platform_pkg_test() {
-	local tests=(
-		cumulative_metrics_test
-		metrics_library_test
-		$(usex passive_metrics 'metrics_daemon_test' '')
-		persistent_integer_test
-		process_meter_test
-		timer_test
-		upload_service_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
-
-pkg_preinst() {
-	enewuser metrics
-	enewgroup metrics
-}
diff --git a/chromeos-base/metrics/metrics-0.0.1-r3275.ebuild b/chromeos-base/metrics/metrics-0.0.1-r3275.ebuild
new file mode 100644
index 0000000..156a046
--- /dev/null
+++ b/chromeos-base/metrics/metrics-0.0.1-r3275.ebuild
@@ -0,0 +1,112 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="0553127ef2b660a5c71f12a9417ed4ad35f07120"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk metrics .gn"
+
+PLATFORM_SUBDIR="metrics"
+
+inherit cros-constants cros-workon libchrome-version platform tmpfiles systemd user
+
+DESCRIPTION="Metrics aggregation service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/metrics/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="fuzzer metrics_uploader +passive_metrics systemd"
+
+COMMON_DEPEND="
+	dev-libs/protobuf:=
+	dev-libs/re2:=
+	sys-apps/rootdev:=
+	"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/session_manager-client:=
+	chromeos-base/system_api:=[fuzzer?]
+	chromeos-base/vboot_reference:=
+	"
+
+src_install() {
+	dobin "${OUT}"/metrics_client
+	dobin "${OUT}"/chromeos-pgmem
+
+	if use passive_metrics; then
+		dobin "${OUT}"/metrics_daemon
+		if use systemd; then
+			systemd_dounit init/metrics-daemon.service
+			systemd_enable_service multi-user.target metrics-daemon.service
+			systemd_dotmpfilesd init/metrics.conf
+		else
+			dotmpfiles tmpfiles.d/metrics_daemon_dirs.conf
+			insinto /etc/init
+			doins init/metrics_library.conf init/metrics_daemon.conf
+		fi
+
+		if use metrics_uploader; then
+			if use systemd; then
+				sed -i '/ExecStart=/s:metrics_daemon:metrics_daemon -uploader:' \
+					"${D}"/usr/lib/systemd/system/metrics-daemon.service || die
+			else
+				sed -i '/DAEMON_FLAGS=/s:=.*:="-uploader":' \
+					"${D}"/etc/init/metrics_daemon.conf || die
+			fi
+		fi
+	fi
+
+	insinto /usr/$(get_libdir)/pkgconfig
+	local v="$(libchrome_ver)"
+	./platform2_preinstall.sh "${OUT}" "${v}"
+	dolib.so "${OUT}/lib/libmetrics.so"
+	doins "${OUT}/lib/libmetrics.pc"
+	dolib.so "${OUT}/lib/libstructuredmetrics.so"
+
+	dotmpfiles tmpfiles.d/structured_metrics.conf
+
+	insinto /usr/include/metrics
+	doins c_metrics_library.h \
+		cumulative_metrics.h \
+		metrics_library{,_mock}.h \
+		persistent_integer.h \
+		structured/c_structured_metrics.h \
+		timer{,_mock}.h \
+		"${OUT}"/gen/include/metrics/structured/structured_events.h
+
+	# Install the protobuf so that autotests can have access to it.
+	insinto /usr/include/metrics/proto
+	doins uploader/proto/*.proto
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/metrics_library_consent_id_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/metrics_serialization_utils_fuzzer
+}
+
+platform_pkg_test() {
+	local tests=(
+		cumulative_metrics_test
+		metrics_library_test
+		$(usex passive_metrics 'metrics_daemon_test' '')
+		persistent_integer_test
+		process_meter_test
+		timer_test
+		upload_service_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
+
+pkg_preinst() {
+	enewuser metrics
+	enewgroup metrics
+}
diff --git a/chromeos-base/metrics/metrics-9999.ebuild b/chromeos-base/metrics/metrics-9999.ebuild
index 9e7836b..285c832 100644
--- a/chromeos-base/metrics/metrics-9999.ebuild
+++ b/chromeos-base/metrics/metrics-9999.ebuild
@@ -11,7 +11,7 @@
 
 PLATFORM_SUBDIR="metrics"
 
-inherit cros-constants cros-workon libchrome-version platform systemd user
+inherit cros-constants cros-workon libchrome-version platform tmpfiles systemd user
 
 DESCRIPTION="Metrics aggregation service for Chromium OS"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/metrics/"
@@ -44,6 +44,7 @@
 			systemd_enable_service multi-user.target metrics-daemon.service
 			systemd_dotmpfilesd init/metrics.conf
 		else
+			dotmpfiles tmpfiles.d/metrics_daemon_dirs.conf
 			insinto /etc/init
 			doins init/metrics_library.conf init/metrics_daemon.conf
 		fi
@@ -64,13 +65,18 @@
 	./platform2_preinstall.sh "${OUT}" "${v}"
 	dolib.so "${OUT}/lib/libmetrics.so"
 	doins "${OUT}/lib/libmetrics.pc"
+	dolib.so "${OUT}/lib/libstructuredmetrics.so"
+
+	dotmpfiles tmpfiles.d/structured_metrics.conf
 
 	insinto /usr/include/metrics
 	doins c_metrics_library.h \
 		cumulative_metrics.h \
 		metrics_library{,_mock}.h \
 		persistent_integer.h \
-		timer{,_mock}.h
+		structured/c_structured_metrics.h \
+		timer{,_mock}.h \
+		"${OUT}"/gen/include/metrics/structured/structured_events.h
 
 	# Install the protobuf so that autotests can have access to it.
 	insinto /usr/include/metrics/proto
diff --git a/chromeos-base/mfs-console-tool/OWNERS b/chromeos-base/mfs-console-tool/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/mfs-console-tool/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/midis/midis-0.0.1-r1126.ebuild b/chromeos-base/midis/midis-0.0.1-r1126.ebuild
deleted file mode 100644
index eb039a0..0000000
--- a/chromeos-base/midis/midis-0.0.1-r1126.ebuild
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "12cd47baf58eab10f40e9dea81b4d4ba450a69be" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk midis .gn"
-
-PLATFORM_SUBDIR="midis"
-
-inherit cros-workon git-2 platform user
-
-DESCRIPTION="MIDI Server for Chromium OS"
-HOMEPAGE=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="+seccomp asan fuzzer"
-
-COMMON_DEPEND="
-	media-libs/alsa-lib:=
-	chromeos-base/libbrillo:=[asan?,fuzzer?]
-"
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-src_unpack() {
-	platform_src_unpack
-
-	EGIT_REPO_URI="${CROS_GIT_HOST_URL}/chromium/src/media/midi.git" \
-	# Since there are a few headers that are included by other headers
-	# in this directory, and these headers are referenced assuming the
-	# "media" directory is stored in the base directory, we install
-	# the Git checkout in platform2.
-	EGIT_SOURCEDIR="${S}/../media/midi" \
-	EGIT_COMMIT="294d224ae7a8a695bb71337be8781b29abb5dafc" \
-	git-2_src_unpack
-}
-
-src_install() {
-	dobin "${OUT}"/midis
-
-	insinto /etc/init
-	doins init/*.conf
-
-	# Install midis DBUS configuration file
-	insinto /etc/dbus-1/system.d
-	doins dbus_permissions/org.chromium.Midis.conf
-
-	# Install D-Bus service activation configuration.
-	insinto /usr/share/dbus-1/system-services
-	doins dbus_permissions/org.chromium.Midis.service
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	use seccomp && newins "seccomp/midis-seccomp-${ARCH}.policy" midis-seccomp.policy
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/midis_seq_handler_fuzzer
-}
-
-pkg_preinst() {
-	enewuser midis
-	enewgroup midis
-}
-
-platform_pkg_test() {
-	local tests=(
-		"midis_testrunner"
-	)
-
-	local test
-	for test in "${tests[@]}"; do
-		platform_test "run" "${OUT}"/${test}
-	done
-}
diff --git a/chromeos-base/midis/midis-0.0.1-r1163.ebuild b/chromeos-base/midis/midis-0.0.1-r1163.ebuild
new file mode 100644
index 0000000..4bc6310
--- /dev/null
+++ b/chromeos-base/midis/midis-0.0.1-r1163.ebuild
@@ -0,0 +1,80 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "4201568ef8a1ffe39683b4c0dee8aeefc7eacfc8" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="common-mk midis .gn"
+
+PLATFORM_SUBDIR="midis"
+
+inherit cros-workon git-2 platform user
+
+DESCRIPTION="MIDI Server for Chromium OS"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="+seccomp asan fuzzer"
+
+COMMON_DEPEND="
+	media-libs/alsa-lib:=
+	chromeos-base/libbrillo:=[asan?,fuzzer?]
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+src_unpack() {
+	platform_src_unpack
+
+	EGIT_REPO_URI="${CROS_GIT_HOST_URL}/chromium/src/media/midi.git" \
+	# Since there are a few headers that are included by other headers
+	# in this directory, and these headers are referenced assuming the
+	# "media" directory is stored in the base directory, we install
+	# the Git checkout in platform2.
+	EGIT_SOURCEDIR="${S}/../media/midi" \
+	EGIT_COMMIT="06a8cf268baf9530267c9581801b8f8749ec9312" \
+	git-2_src_unpack
+}
+
+src_install() {
+	dobin "${OUT}"/midis
+
+	insinto /etc/init
+	doins init/*.conf
+
+	# Install midis DBUS configuration file
+	insinto /etc/dbus-1/system.d
+	doins dbus_permissions/org.chromium.Midis.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus_permissions/org.chromium.Midis.service
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	use seccomp && newins "seccomp/midis-seccomp-${ARCH}.policy" midis-seccomp.policy
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/midis_seq_handler_fuzzer
+}
+
+pkg_preinst() {
+	enewuser midis
+	enewgroup midis
+}
+
+platform_pkg_test() {
+	local tests=(
+		"midis_testrunner"
+	)
+
+	local test
+	for test in "${tests[@]}"; do
+		platform_test "run" "${OUT}"/${test}
+	done
+}
diff --git a/chromeos-base/midis/midis-9999.ebuild b/chromeos-base/midis/midis-9999.ebuild
index 6df7a6b83..6ed8b80 100644
--- a/chromeos-base/midis/midis-9999.ebuild
+++ b/chromeos-base/midis/midis-9999.ebuild
@@ -36,7 +36,7 @@
 	# "media" directory is stored in the base directory, we install
 	# the Git checkout in platform2.
 	EGIT_SOURCEDIR="${S}/../media/midi" \
-	EGIT_COMMIT="294d224ae7a8a695bb71337be8781b29abb5dafc" \
+	EGIT_COMMIT="06a8cf268baf9530267c9581801b8f8749ec9312" \
 	git-2_src_unpack
 }
 
diff --git a/chromeos-base/minijail/minijail-14-r12.ebuild b/chromeos-base/minijail/minijail-14-r12.ebuild
deleted file mode 100644
index 9e84b6f..0000000
--- a/chromeos-base/minijail/minijail-14-r12.ebuild
+++ /dev/null
@@ -1,115 +0,0 @@
-# Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="320c4fc6aadf837b9d032ab4e37451458c0e6628"
-CROS_WORKON_TREE="9c61132d11322772a0cd5ad3b8784463c438bb70"
-CROS_WORKON_MANUAL_UPREV=1
-CROS_WORKON_LOCALNAME="aosp/external/minijail"
-CROS_WORKON_PROJECT="platform/external/minijail"
-CROS_WORKON_REPO="https://android.googlesource.com"
-PYTHON_COMPAT=( python3_{6,7} )
-
-# TODO(crbug.com/689060): Re-enable on ARM.
-CROS_COMMON_MK_NATIVE_TEST="yes"
-
-DISTUTILS_OPTIONAL=1
-DISTUTILS_SINGLE_IMPL=1
-
-inherit cros-debug cros-sanitizers cros-workon cros-common.mk toolchain-funcs multilib distutils-r1
-
-DESCRIPTION="helper binary and library for sandboxing & restricting privs of services"
-HOMEPAGE="https://android.googlesource.com/platform/external/minijail"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="asan cros-debug +seccomp test"
-
-COMMON_DEPEND="sys-libs/libcap:=
-	!<chromeos-base/chromeos-minijail-1"
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}
-	cros_host? (
-		${PYTHON_DEPS}
-		$(python_gen_cond_dep 'dev-python/setuptools[${PYTHON_USEDEP}]')
-	)
-	test? (
-		dev-cpp/gtest:=
-	)"
-
-src_configure() {
-	sanitizers-setup-env
-	cros-common.mk_src_configure
-	export LIBDIR="/$(get_libdir)"
-	export USE_seccomp=$(usex seccomp)
-	export ALLOW_DEBUG_LOGGING=$(usex cros-debug)
-	export USE_SYSTEM_GTEST=yes
-	export DEFAULT_PIVOT_ROOT=/mnt/empty
-}
-
-# Use qemu-user to run the platform-specific dump_constants binary in order to
-# generate constants.json.
-generate_constants_json() {
-	local cmd
-	case "${ARCH}" in
-	x86)   cmd=( "${OUT}"/dump_constants ) ;;
-	amd64) cmd=( "${WORKDIR}"/sdk/dump_constants ) ;;
-	arm)   cmd=( qemu-arm "${OUT}"/dump_constants ) ;;
-	arm64) cmd=( qemu-aarch64 "${OUT}"/dump_constants ) ;;
-	*) die "Unsupported architecture in generate_constants_json(): ${ARCH}."
-	esac
-	echo "+" "${cmd[@]}" ">${OUT}/constants.json"
-	"${cmd[@]}" >"${OUT}"/constants.json || die
-}
-
-src_compile() {
-	# Avoid confusing people with our docs.
-	sed -i "s:/var/empty:${DEFAULT_PIVOT_ROOT}:g" minijail0.[15] || die
-
-	local minijail_targets=( all )
-
-	# We need to generate & run dump_constants.  Intel/AMD targets often use newer
-	# ISAs than our build systems & QEMU supports.  The constants care about kernel
-	# headers (for the most part), and our build keeps SDK & board headers in sync,
-	# so using the SDK compiler here should be safe for our needs.
-	if ! use cros_host; then
-		if use amd64; then
-			tc-env_build emake OUT="${WORKDIR}/sdk" dump_constants
-		else
-			minijail_targets+=( dump_constants )
-		fi
-	fi
-
-	cros-common.mk_src_compile "${minijail_targets[@]}"
-	if use cros_host ; then
-		BUILD_DIR="${OUT}" distutils-r1_python_compile
-	else
-		generate_constants_json
-	fi
-}
-
-src_install() {
-	into /
-	dosbin "${OUT}"/minijail0
-	dolib.so "${OUT}"/libminijail{,preload}.so
-
-	doman minijail0.[15]
-
-	if use cros_host ; then
-		distutils-r1_python_install
-	else
-		insinto /build/share
-		doins "${OUT}"/constants.json
-	fi
-
-	local include_dir="/usr/include/chromeos"
-
-	"${S}"/platform2_preinstall.sh "${PV}" "${include_dir}"
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins libminijail.pc
-
-	insinto "${include_dir}"
-	doins libminijail.h
-	doins scoped_minijail.h
-}
diff --git a/chromeos-base/minijail/minijail-14-r17.ebuild b/chromeos-base/minijail/minijail-14-r17.ebuild
new file mode 100644
index 0000000..cf49cc7
--- /dev/null
+++ b/chromeos-base/minijail/minijail-14-r17.ebuild
@@ -0,0 +1,119 @@
+# Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cros-constants
+
+CROS_WORKON_COMMIT="3a6e925548e1ddb500c0dffdd2d2c591519f02e2"
+CROS_WORKON_TREE="8f0401ffc128cc569f1cf571161e18d32574949f"
+CROS_WORKON_MANUAL_UPREV=1
+CROS_WORKON_LOCALNAME="aosp/external/minijail"
+CROS_WORKON_PROJECT="platform/external/minijail"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+# TODO(crbug.com/689060): Re-enable on ARM.
+CROS_COMMON_MK_NATIVE_TEST="yes"
+
+DISTUTILS_OPTIONAL=1
+DISTUTILS_SINGLE_IMPL=1
+
+inherit cros-debug cros-sanitizers cros-workon cros-common.mk toolchain-funcs multilib distutils-r1
+
+DESCRIPTION="helper binary and library for sandboxing & restricting privs of services"
+HOMEPAGE="https://android.googlesource.com/platform/external/minijail"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="asan cros-debug +seccomp test"
+
+COMMON_DEPEND="sys-libs/libcap:=
+	!<chromeos-base/chromeos-minijail-1"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	cros_host? (
+		${PYTHON_DEPS}
+		$(python_gen_cond_dep 'dev-python/setuptools[${PYTHON_USEDEP}]')
+	)
+	test? (
+		dev-cpp/gtest:=
+	)"
+
+src_configure() {
+	sanitizers-setup-env
+	cros-common.mk_src_configure
+	export LIBDIR="/$(get_libdir)"
+	export USE_seccomp=$(usex seccomp)
+	export ALLOW_DEBUG_LOGGING=$(usex cros-debug)
+	export USE_SYSTEM_GTEST=yes
+	export DEFAULT_PIVOT_ROOT=/mnt/empty
+}
+
+# Use qemu-user to run the platform-specific dump_constants binary in order to
+# generate constants.json.
+generate_constants_json() {
+	local cmd
+	case "${ARCH}" in
+	x86)   cmd=( "${OUT}"/dump_constants ) ;;
+	amd64) cmd=( "${WORKDIR}"/sdk/dump_constants ) ;;
+	arm)   cmd=( qemu-arm "${OUT}"/dump_constants ) ;;
+	arm64) cmd=( qemu-aarch64 "${OUT}"/dump_constants ) ;;
+	*) die "Unsupported architecture in generate_constants_json(): ${ARCH}."
+	esac
+	echo "+" "${cmd[@]}" ">${OUT}/constants.json"
+	"${cmd[@]}" >"${OUT}"/constants.json || die
+}
+
+src_compile() {
+	# Avoid confusing people with our docs.
+	sed -i "s:/var/empty:${DEFAULT_PIVOT_ROOT}:g" minijail0.[15] || die
+
+	local minijail_targets=( all )
+
+	# We need to generate & run dump_constants.  Intel/AMD targets often use newer
+	# ISAs than our build systems & QEMU supports.  The constants care about kernel
+	# headers (for the most part), and our build keeps SDK & board headers in sync,
+	# so using the SDK compiler here should be safe for our needs.
+	if ! use cros_host; then
+		if use amd64; then
+			tc-env_build emake OUT="${WORKDIR}/sdk" dump_constants
+		else
+			minijail_targets+=( dump_constants )
+		fi
+	fi
+
+	cros-common.mk_src_compile "${minijail_targets[@]}"
+	if use cros_host ; then
+		BUILD_DIR="${OUT}" distutils-r1_python_compile
+	else
+		generate_constants_json
+	fi
+}
+
+src_install() {
+	into /
+	dosbin "${OUT}"/minijail0
+	dolib.so "${OUT}"/libminijail{,preload}.so
+
+	doman minijail0.[15]
+
+	if use cros_host ; then
+		distutils-r1_python_install
+	else
+		insinto /build/share
+		doins "${OUT}"/constants.json
+	fi
+
+	local include_dir="/usr/include/chromeos"
+
+	"${S}"/platform2_preinstall.sh "${PV}" "${include_dir}"
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins libminijail.pc
+
+	insinto "${include_dir}"
+	doins libminijail.h
+	doins scoped_minijail.h
+}
diff --git a/chromeos-base/minijail/minijail-16-r20.ebuild b/chromeos-base/minijail/minijail-16-r20.ebuild
new file mode 100644
index 0000000..a49fc9a
--- /dev/null
+++ b/chromeos-base/minijail/minijail-16-r20.ebuild
@@ -0,0 +1,119 @@
+# Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="2453b1fc097f3a995be8bcc0a2ada1fba616f287"
+CROS_WORKON_TREE="5d7a4ada8dd246f22883e11dd0ad0c42af38dbad"
+inherit cros-constants
+
+CROS_WORKON_MANUAL_UPREV=1
+CROS_WORKON_LOCALNAME="aosp/external/minijail"
+CROS_WORKON_PROJECT="platform/external/minijail"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+# TODO(crbug.com/689060): Re-enable on ARM.
+CROS_COMMON_MK_NATIVE_TEST="yes"
+
+DISTUTILS_OPTIONAL=1
+DISTUTILS_SINGLE_IMPL=1
+
+inherit cros-debug cros-sanitizers cros-workon cros-common.mk toolchain-funcs distutils-r1
+
+DESCRIPTION="helper binary and library for sandboxing & restricting privs of services"
+HOMEPAGE="https://android.googlesource.com/platform/external/minijail"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="asan cros-debug +seccomp test"
+
+COMMON_DEPEND="sys-libs/libcap:=
+	!<chromeos-base/chromeos-minijail-1"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	cros_host? (
+		${PYTHON_DEPS}
+		$(python_gen_cond_dep 'dev-python/setuptools[${PYTHON_USEDEP}]')
+	)
+	test? (
+		dev-cpp/gtest:=
+	)"
+
+src_configure() {
+	sanitizers-setup-env
+	cros-common.mk_src_configure
+	export LIBDIR="/$(get_libdir)"
+	export USE_seccomp=$(usex seccomp)
+	export ALLOW_DEBUG_LOGGING=$(usex cros-debug)
+	export USE_SYSTEM_GTEST=yes
+	export DEFAULT_PIVOT_ROOT=/mnt/empty
+}
+
+# Use qemu-user to run the platform-specific dump_constants binary in order to
+# generate constants.json.
+generate_constants_json() {
+	local cmd
+	case "${ARCH}" in
+	x86)   cmd=( "${OUT}"/dump_constants ) ;;
+	amd64) cmd=( "${WORKDIR}"/sdk/dump_constants ) ;;
+	arm)   cmd=( qemu-arm "${OUT}"/dump_constants ) ;;
+	arm64) cmd=( qemu-aarch64 "${OUT}"/dump_constants ) ;;
+	*) die "Unsupported architecture in generate_constants_json(): ${ARCH}."
+	esac
+	echo "+" "${cmd[@]}" ">${OUT}/constants.json"
+	"${cmd[@]}" >"${OUT}"/constants.json || die
+}
+
+src_compile() {
+	# Avoid confusing people with our docs.
+	sed -i "s:/var/empty:${DEFAULT_PIVOT_ROOT}:g" minijail0.[15] || die
+
+	local minijail_targets=( all )
+
+	# We need to generate & run dump_constants.  Intel/AMD targets often use newer
+	# ISAs than our build systems & QEMU supports.  The constants care about kernel
+	# headers (for the most part), and our build keeps SDK & board headers in sync,
+	# so using the SDK compiler here should be safe for our needs.
+	if ! use cros_host; then
+		if use amd64; then
+			tc-env_build emake OUT="${WORKDIR}/sdk" dump_constants
+		else
+			minijail_targets+=( dump_constants )
+		fi
+	fi
+
+	cros-common.mk_src_compile "${minijail_targets[@]}"
+	if use cros_host ; then
+		BUILD_DIR="${OUT}" distutils-r1_python_compile
+	else
+		generate_constants_json
+	fi
+}
+
+src_install() {
+	into /
+	dosbin "${OUT}"/minijail0
+	dolib.so "${OUT}"/libminijail{,preload}.so
+
+	doman minijail0.[15]
+
+	if use cros_host ; then
+		distutils-r1_python_install
+	else
+		insinto /build/share
+		doins "${OUT}"/constants.json
+	fi
+
+	local include_dir="/usr/include/chromeos"
+
+	"${S}"/platform2_preinstall.sh "${PV}" "${include_dir}"
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins libminijail.pc
+
+	insinto "${include_dir}"
+	doins libminijail.h
+	doins scoped_minijail.h
+}
diff --git a/chromeos-base/minijail/minijail-9999.ebuild b/chromeos-base/minijail/minijail-9999.ebuild
index cb6d8c2..d155018 100644
--- a/chromeos-base/minijail/minijail-9999.ebuild
+++ b/chromeos-base/minijail/minijail-9999.ebuild
@@ -3,10 +3,14 @@
 
 EAPI=7
 
+inherit cros-constants
+
 CROS_WORKON_MANUAL_UPREV=1
 CROS_WORKON_LOCALNAME="aosp/external/minijail"
 CROS_WORKON_PROJECT="platform/external/minijail"
-CROS_WORKON_REPO="https://android.googlesource.com"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+
 PYTHON_COMPAT=( python3_{6,7} )
 
 # TODO(crbug.com/689060): Re-enable on ARM.
diff --git a/chromeos-base/minios/minios-0.0.1-r6.ebuild b/chromeos-base/minios/minios-0.0.1-r6.ebuild
deleted file mode 100644
index e74208f..0000000
--- a/chromeos-base/minios/minios-0.0.1-r6.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="e2ae0b1627d081187ae2cb21c1b76663a1d9eab4"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "7b5886413278a82efc9726fe8d06e9e246f3f07a" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk minios .gn"
-
-PLATFORM_SUBDIR="minios"
-
-inherit cros-workon platform
-
-DESCRIPTION="The miniOS main logic."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/minios/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="minios"
-REQUIRED_USE="minios"
-
-RDEPEND=""
-DEPEND=""
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/minios_test"
-}
-
-src_install() {
-	dobin "${OUT}/minios"
-}
diff --git a/chromeos-base/minios/minios-0.0.1-r81.ebuild b/chromeos-base/minios/minios-0.0.1-r81.ebuild
new file mode 100644
index 0000000..8e98356
--- /dev/null
+++ b/chromeos-base/minios/minios-0.0.1-r81.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="9824d0e0ac17a39f11823cad3e6e56dad532425d"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "fc9a07b01b4aef5e812b651af72adda305cf7fa8" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk minios .gn"
+
+PLATFORM_SUBDIR="minios"
+
+inherit cros-workon platform
+
+DESCRIPTION="The miniOS main logic."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/minios/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="minios"
+REQUIRED_USE="minios"
+
+COMMON_DEPEND="
+	chromeos-base/shill-client:=
+	chromeos-base/update_engine-client:=
+	x11-libs/libxkbcommon:=
+	x11-misc/xkeyboard-config:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/system_api:="
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/minios_test"
+}
+
+src_install() {
+	dobin "${OUT}/minios"
+	dobin scripts/root_partition_for_recovery
+
+	# D-Bus configuration
+	insinto /etc/dbus-1/system.d
+	doins org.chromium.MiniOs.conf
+	insinto "/build/initramfs"
+	doins init/*.conf
+}
diff --git a/chromeos-base/minios/minios-9999.ebuild b/chromeos-base/minios/minios-9999.ebuild
index 2fefdfd..61dea45 100644
--- a/chromeos-base/minios/minios-9999.ebuild
+++ b/chromeos-base/minios/minios-9999.ebuild
@@ -21,8 +21,16 @@
 IUSE="minios"
 REQUIRED_USE="minios"
 
-RDEPEND=""
-DEPEND=""
+COMMON_DEPEND="
+	chromeos-base/shill-client:=
+	chromeos-base/update_engine-client:=
+	x11-libs/libxkbcommon:=
+	x11-misc/xkeyboard-config:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/system_api:="
 
 platform_pkg_test() {
 	platform_test "run" "${OUT}/minios_test"
@@ -30,4 +38,11 @@
 
 src_install() {
 	dobin "${OUT}/minios"
+	dobin scripts/root_partition_for_recovery
+
+	# D-Bus configuration
+	insinto /etc/dbus-1/system.d
+	doins org.chromium.MiniOs.conf
+	insinto "/build/initramfs"
+	doins init/*.conf
 }
diff --git a/chromeos-base/missive/OWNERS b/chromeos-base/missive/OWNERS
new file mode 100644
index 0000000..8580e1f
--- /dev/null
+++ b/chromeos-base/missive/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/missive/OWNERS
diff --git a/chromeos-base/missive/missive-0.0.1-r48.ebuild b/chromeos-base/missive/missive-0.0.1-r48.ebuild
new file mode 100644
index 0000000..cffcd73
--- /dev/null
+++ b/chromeos-base/missive/missive-0.0.1-r48.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="d7196224c92571a7f62eacc21ad505f43cd2325a"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "c4aa6b23a008514b6a797f7132ee29236d1b0277" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk missive .gn"
+
+PLATFORM_SUBDIR="missive"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Daemon to encrypt, store, and forward reporting events for managed devices."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/missive/"
+
+LICENSE="BSD-Google"
+SLOT=0/0
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	chromeos-base/minijail:=
+	dev-libs/protobuf:=
+"
+
+DEPEND="
+	${RDEPEND}
+	chromeos-base/system_api:=
+"
+
+pkg_preinst() {
+	enewuser missived
+	enewgroup missived
+}
+
+src_install() {
+	# Install binary
+	dobin "${OUT}"/missived
+
+	# Install upstart configurations
+	insinto /etc/init
+	doins init/missived.conf
+
+	# TODO(zatrudo): Generate at end of devleopment before release.
+	# Install seccomp policy file.
+	#insinto /usr/share/policy
+	#newins "seccomp/missived-seccomp-${ARCH}.policy" missived-seccomp.policy
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Missived.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.Missived.service
+
+	# Install rsyslog config.
+	# TODO(zatrudo): Determine if logs from this daemon should be redirected.
+	#insinto /etc/rsyslog.d
+	#doins rsyslog/rsyslog.missived.conf
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/missived_testrunner"
+}
diff --git a/chromeos-base/missive/missive-9999.ebuild b/chromeos-base/missive/missive-9999.ebuild
new file mode 100644
index 0000000..9180edd
--- /dev/null
+++ b/chromeos-base/missive/missive-9999.ebuild
@@ -0,0 +1,68 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk missive .gn"
+
+PLATFORM_SUBDIR="missive"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Daemon to encrypt, store, and forward reporting events for managed devices."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/missive/"
+
+LICENSE="BSD-Google"
+SLOT=0/0
+KEYWORDS="~*"
+IUSE=""
+
+RDEPEND="
+	chromeos-base/minijail:=
+	dev-libs/protobuf:=
+"
+
+DEPEND="
+	${RDEPEND}
+	chromeos-base/system_api:=
+"
+
+pkg_preinst() {
+	enewuser missived
+	enewgroup missived
+}
+
+src_install() {
+	# Install binary
+	dobin "${OUT}"/missived
+
+	# Install upstart configurations
+	insinto /etc/init
+	doins init/missived.conf
+
+	# TODO(zatrudo): Generate at end of devleopment before release.
+	# Install seccomp policy file.
+	#insinto /usr/share/policy
+	#newins "seccomp/missived-seccomp-${ARCH}.policy" missived-seccomp.policy
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Missived.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.Missived.service
+
+	# Install rsyslog config.
+	# TODO(zatrudo): Determine if logs from this daemon should be redirected.
+	#insinto /etc/rsyslog.d
+	#doins rsyslog/rsyslog.missived.conf
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/missived_testrunner"
+}
diff --git a/chromeos-base/mist/mist-0.0.1-r3045.ebuild b/chromeos-base/mist/mist-0.0.1-r3045.ebuild
deleted file mode 100644
index 55ce08a..0000000
--- a/chromeos-base/mist/mist-0.0.1-r3045.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "819df31f145c1b256b5a9753dc4fc2f6681f020c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk metrics mist .gn"
-
-PLATFORM_SUBDIR="mist"
-
-inherit cros-workon platform udev
-
-DESCRIPTION="Chromium OS Modem Interface Switching Tool"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/mist/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	chromeos-base/libbrillo:=[udev]
-	>=chromeos-base/metrics-0.0.1-r3152
-	dev-libs/protobuf:=
-	net-dialup/ppp
-	virtual/libusb:1
-	virtual/udev
-"
-
-DEPEND="${RDEPEND}"
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/mist_testrunner"
-}
-
-src_install() {
-	dobin "${OUT}"/mist
-
-	insinto /usr/share/mist
-	doins default.conf
-
-	udev_dorules 51-mist.rules
-}
diff --git a/chromeos-base/mist/mist-0.0.1-r3110.ebuild b/chromeos-base/mist/mist-0.0.1-r3110.ebuild
new file mode 100644
index 0000000..b6f6bd8
--- /dev/null
+++ b/chromeos-base/mist/mist-0.0.1-r3110.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+CROS_WORKON_COMMIT="0553127ef2b660a5c71f12a9417ed4ad35f07120"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "460b5c588dbf96a4f62c05b2dd799de43949c37b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk metrics mist .gn"
+
+PLATFORM_SUBDIR="mist"
+
+inherit cros-workon platform udev
+
+DESCRIPTION="Chromium OS Modem Interface Switching Tool"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/mist/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	chromeos-base/libbrillo:=[udev]
+	>=chromeos-base/metrics-0.0.1-r3152
+	dev-libs/protobuf:=
+	net-dialup/ppp
+	virtual/libusb:1
+	virtual/udev
+"
+
+DEPEND="${RDEPEND}"
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/mist_testrunner"
+}
+
+src_install() {
+	dobin "${OUT}"/mist
+
+	insinto /usr/share/mist
+	doins default.conf
+
+	udev_dorules 51-mist.rules
+}
diff --git a/chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r65.ebuild b/chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r65.ebuild
deleted file mode 100644
index 2f3d736..0000000
--- a/chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r65.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="c2572289df1ac9d4727e2520bfc73125e1cccbb0"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4dc9e176d315085cb2b8c8ad66d1965575ef5280" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk ml_benchmark .gn"
-
-DESCRIPTION="Chrome OS ML Benchmarking Suite"
-
-PLATFORM_SUBDIR="ml_benchmark"
-
-inherit cros-workon platform
-
-# chromeos-base/ml_benchmark blocked due to package rename
-RDEPEND="
-	!chromeos-base/ml_benchmark
-"
-
-DEPEND="
-	${RDEPEND}
-"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-src_install() {
-	dobin "${OUT}"/ml_benchmark
-	dolib.so "${OUT}"/lib/libmlbenchmark_proto.so
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/ml_benchmark_test"
-}
diff --git a/chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r97.ebuild b/chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r97.ebuild
new file mode 100644
index 0000000..efb982a
--- /dev/null
+++ b/chromeos-base/ml-benchmark/ml-benchmark-0.0.1-r97.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "20d593bc4f76d08b642ac2d57ed2f4f9af04ce50" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk ml_benchmark .gn"
+
+DESCRIPTION="Chrome OS ML Benchmarking Suite"
+
+PLATFORM_SUBDIR="ml_benchmark"
+
+inherit cros-workon platform
+
+# chromeos-base/ml_benchmark blocked due to package rename
+RDEPEND="
+	!chromeos-base/ml_benchmark
+"
+
+DEPEND="${RDEPEND}
+	dev-libs/protobuf:=
+"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+src_install() {
+	dobin "${OUT}"/ml_benchmark
+	dolib.so "${OUT}"/lib/libmlbenchmark_proto.so
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/ml_benchmark_test"
+}
diff --git a/chromeos-base/ml-benchmark/ml-benchmark-9999.ebuild b/chromeos-base/ml-benchmark/ml-benchmark-9999.ebuild
index f47e219..4d16240 100644
--- a/chromeos-base/ml-benchmark/ml-benchmark-9999.ebuild
+++ b/chromeos-base/ml-benchmark/ml-benchmark-9999.ebuild
@@ -18,8 +18,8 @@
 	!chromeos-base/ml_benchmark
 "
 
-DEPEND="
-	${RDEPEND}
+DEPEND="${RDEPEND}
+	dev-libs/protobuf:=
 "
 
 LICENSE="BSD-Google"
diff --git a/chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r127.ebuild b/chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r127.ebuild
deleted file mode 100644
index cacc1f6..0000000
--- a/chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r127.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="828bcffbe06a20dd65427d294723b6bf30cd6dbb"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "15d392511855fd12421e2bb0d735d75278a92065" "4dc9e176d315085cb2b8c8ad66d1965575ef5280" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk ml ml_benchmark .gn"
-
-PLATFORM_SUBDIR="ml"
-
-inherit cros-workon platform
-
-DESCRIPTION="Command line interface to machine learning service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/ml"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-SLOT="0/0"
-
-RDEPEND="
-	chromeos-base/chrome-icu:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/ml:=
-	sci-libs/tensorflow:=
-"
-
-DEPEND="
-	${RDEPEND}
-"
-
-src_install() {
-	dobin "${OUT}"/ml_cmdline
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/ml_cmdline_test"
-}
diff --git a/chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r213.ebuild b/chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r213.ebuild
new file mode 100644
index 0000000..b3d7952
--- /dev/null
+++ b/chromeos-base/ml-cmdline/ml-cmdline-0.0.1-r213.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "517c3fdaddc3179ddb87307a44118265bb0c00c3" "20d593bc4f76d08b642ac2d57ed2f4f9af04ce50" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk ml ml_benchmark .gn"
+
+PLATFORM_SUBDIR="ml"
+
+inherit cros-workon platform
+
+DESCRIPTION="Command line interface to machine learning service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/ml"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+SLOT="0/0"
+IUSE="internal"
+
+RDEPEND="
+	chromeos-base/chrome-icu:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/ml:=
+	sci-libs/tensorflow:=
+"
+
+DEPEND="
+	${RDEPEND}
+"
+
+src_install() {
+	dobin "${OUT}"/ml_cmdline
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/ml_cmdline_test"
+}
diff --git a/chromeos-base/ml-cmdline/ml-cmdline-9999.ebuild b/chromeos-base/ml-cmdline/ml-cmdline-9999.ebuild
index 4218887..1963504 100644
--- a/chromeos-base/ml-cmdline/ml-cmdline-9999.ebuild
+++ b/chromeos-base/ml-cmdline/ml-cmdline-9999.ebuild
@@ -17,6 +17,7 @@
 LICENSE="BSD-Google"
 KEYWORDS="~*"
 SLOT="0/0"
+IUSE="internal"
 
 RDEPEND="
 	chromeos-base/chrome-icu:=
diff --git a/chromeos-base/ml/Manifest b/chromeos-base/ml/Manifest
index 8d91f4f..46e1cb5 100644
--- a/chromeos-base/ml/Manifest
+++ b/chromeos-base/ml/Manifest
@@ -1,8 +1,8 @@
-DIST mlservice-model-language_identification-20190924.smfb 372592 BLAKE2B 4cb5070c5e0bdef7c5a5f34c6e41f1e39173542e1c9e7cc2ec68631f1bdfb239229a07b95fc8e3cc68ab0d85b0aa5430ac8ce525a93e1b092862b51930d84629 SHA512 665f59a984910a6318b22873faec2e065c906bb514a8f0f447d18663975c8840b08d91e3ad09ef447c94d582ba302729772f39f252de08901ef1280c66d02db2
 DIST mlservice-model-search_ranker-20190923.tflite 4224 BLAKE2B cff618e356bedeba67648f499d549fc4cf9446565e17316e5ec159b2e7a8d1e2009eec6894a236b8445171a5606b3472abb749efcbab60427b232eef200e0d1c SHA512 d3f90d9bc3e560d251eb3124e58822c4e798b1b220899d0f7b045289d98f558cfc4cbf9d0ad6c4b50565f89c34b8aaa5f0b85a5873551c1f909bf904191046e5
 DIST mlservice-model-smart_dim-20181115.tflite 56252 BLAKE2B 6a5271f1f32615c8cb3c3a0a790442250a497caecd81f89c59e7893b4042a91788d34d84a38f5447c8c82426b4b482a27837e118287fbd82f2265d7d90536521 SHA512 f8a55663de6f023bd85a7235957b398558b1beb2be701fe65b86325dc455a77da657d635ca7c11f40d73df044bd51c0fdc2d4301c32935453cf501a1f60698c6
 DIST mlservice-model-smart_dim-20190221.tflite 197532 BLAKE2B 671c3740ec601ba43384f7fa342ec9f3a9c9b3e213fdfb1e2ca229e57c96f262f5ceabc5b89258ecd96fdf36fe51685408e0a6bbe9044e2580d506d9a152b3ec SHA512 44b5eabe32bf7e0ca5c1ecc72db8d292dbe9d6d9e2f8a973bacbd0aee77db484e2c4064be3f3b0a055c4309c340266128b8bf61f85b9f61f421b0fe66fd51f99
 DIST mlservice-model-smart_dim-20190521-v3.tflite 25048 BLAKE2B ebf56f8238a3d7349127cf2e88c556a562a61a6aa94a1e41b9baaeef76fcfb141d887c9fc8c518bd74cfd76ff033817d7745ae61faa1b4d113632285c0d796d7 SHA512 4b1da4ca45a967b0c700d513cc5b73750140f320ad957f4ed60e2561e6ec7538c5d24d952fcff668dce51a414937753c71b38b239eed8b5280e88dd2ca78773a
 DIST mlservice-model-smart_dim-20200206-downloadable.tflite 23336 BLAKE2B 46253c1186a87e1e793f67c7acdf288c89f6a094907a4013dd6008695be94360c2d7c5be70c017e2283e00aa6656a6380fe98c664b4fba03174db63a1791019a SHA512 3dadce228039787075ba85cf67e7f81fa765032d92fdeda2e91f65775656da22dadf59f1ffb33465405fabd96f27c306136906b04ace4c4c2fa4814e0538f98d
+DIST mlservice-model-smart_dim-20201022-downloadable.tflite 11424 BLAKE2B f764500bacf86896d6403f3656bad27c47a915cab68314c72fb253f6d7561410ead9f5fd3af9eb049947fb490bda8ec26d193a77ee59ef1df842c2b6f460fa73 SHA512 bca7ddbff33e6480458f150920f92945f95dcff4ce538a8d58a0b2ae48aa87233077a19a702583b04df546c176b191d39feac6dde1ad43f2d101330cb53e8908
+DIST mlservice-model-smart_dim-20210201-downloadable.tflite 11200 BLAKE2B 35a1d27bbaf99d1ca8d792aa052b89e5b365905c42fd010c9f8a3a1ba5463b574dad858beb3c604b929ddd8fad1161b06ced22fa07b091df16588b1c44d05ed1 SHA512 3f81a74c5520625adebaa3cb94c7ad1797db191c4b654230c0c8322a241d0ee7038be4e6d255461f4c7366a98d2fbf5f7f4ea110a3f587ccc22d6fc1a1f2d17b
 DIST mlservice-model-test_add-20180914.tflite 456 BLAKE2B cefc03b4ecf5105ac695c29c0eafb56a6aac65ccea118e35ec88c89473fb1b83dc6b5e56886c5726b97e146c4168e5d5cd91a761e32fea9f7d374d20b154d2c3 SHA512 453b52b57706030476a555e0d48c8d3f54f590ffd3ee7064c33bc343adb37ab86a9342b84d786fb7dedc7c60c00dd78d63f38f35c07f7e7548cd3f052fcb2d6f
-DIST mlservice-model-text_classifier_en-v711.fb 568384 BLAKE2B 7771cfe3b5b3dc7ad3269bff606877765d79e111d55eb124372a39260c9ba46507c457e70fa6250067e0869225ca48ddeda13914998cb835bd061b29d8d0847a SHA512 83414a5fa057c72769c89094147a81c4b383d8f73e3c1f9f6edbe4c45fed1a5c60a9fb338986f335ba863fef05eb8197c7f5dd96ccb2c1a2b336e1c206028f2c
diff --git a/chromeos-base/ml/ml-0.0.1-r434.ebuild b/chromeos-base/ml/ml-0.0.1-r434.ebuild
deleted file mode 100644
index 1c5b307..0000000
--- a/chromeos-base/ml/ml-0.0.1-r434.ebuild
+++ /dev/null
@@ -1,137 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="828bcffbe06a20dd65427d294723b6bf30cd6dbb"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "15d392511855fd12421e2bb0d735d75278a92065" "4dc9e176d315085cb2b8c8ad66d1965575ef5280" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-# TODO(amoylan): Set CROS_WORKON_OUTOFTREE_BUILD=1 after crbug.com/833675.
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk ml ml_benchmark .gn"
-
-PLATFORM_SUBDIR="ml"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Machine learning service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/ml"
-
-# Clients of the ML service should place the URIs of their model files into
-# MODELS_TO_INSTALL if they are installed into rootfs (built-in models), or
-# DOWNLOADABLE_MODELS if they are downloaded via component updater (downloadable
-# models).
-MODELS_TO_INSTALL=(
-	"gs://chromeos-localmirror/distfiles/mlservice-model-test_add-20180914.tflite"
-	"gs://chromeos-localmirror/distfiles/mlservice-model-search_ranker-20190923.tflite"
-	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20181115.tflite"
-	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190221.tflite"
-	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190521-v3.tflite"
-)
-
-DOWNLOADABLE_MODELS=(
-	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20200206-downloadable.tflite"
-)
-
-SRC_URI="
-	${DOWNLOADABLE_MODELS[*]}
-	${MODELS_TO_INSTALL[*]}
-"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="
-	dlc
-	fuzzer
-	ml_benchmark_drivers
-	nnapi
-	ondevice_grammar
-	ondevice_handwriting
-	ondevice_handwriting_dlc
-	ondevice_speech
-"
-
-RDEPEND="
-	chromeos-base/chrome-icu:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] )
-	nnapi? ( chromeos-base/aosp-frameworks-ml-nn )
-	>=dev-libs/libgrammar-0.0.3:=[ondevice_grammar=]
-	dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=]
-	>=dev-libs/libtextclassifier-0.0.1-r79:=
-	sci-libs/tensorflow:=
-"
-
-DEPEND="
-	${RDEPEND}
-	chromeos-base/system_api:=[fuzzer?]
-	dev-cpp/absl:=
-	dev-libs/libutf:=
-	dev-libs/marisa-aosp:=
-"
-
-# SODA will not be supported on rootfs and only be supported through DLC.
-REQUIRED_USE="ondevice_speech? ( dlc )"
-
-src_install() {
-	dobin "${OUT}"/ml_service
-
-	# Install upstart configuration.
-	insinto /etc/init
-	doins init/*.conf
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	newins "seccomp/ml_service-seccomp-${ARCH}.policy" ml_service-seccomp.policy
-
-	# Install D-Bus configuration file.
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.MachineLearning.conf
-
-	# Install D-Bus service activation configuration.
-	insinto /usr/share/dbus-1/system-services
-	doins dbus/org.chromium.MachineLearning.service
-
-	# Create distfile array of model filepaths.
-	local model_files=( "${MODELS_TO_INSTALL[@]##*/}" )
-	local distfile_array=( "${model_files[@]/#/${DISTDIR}/}" )
-
-	# Install system ML models.
-	insinto /opt/google/chrome/ml_models
-	doins "${distfile_array[@]}"
-
-	# Install system ML models to fuzzer dir.
-	insinto /usr/libexec/fuzzers
-	doins "${distfile_array[@]}"
-
-	# Install fuzzer targets.
-	for fuzzer in "${OUT}"/*_fuzzer; do
-		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
-	done
-
-	if use ml_benchmark_drivers; then
-		insinto /usr/local/ml_benchmark/ml_service
-		insopts -m0755
-		doins "${OUT}"/lib/libml_for_benchmark.so
-		insopts -m0644
-	fi
-}
-
-pkg_preinst() {
-	enewuser "ml-service"
-	enewgroup "ml-service"
-}
-
-platform_pkg_test() {
-	# Recreate model dir in the temp directory and copy both
-	# MODELS_TO_INSTALL and DOWNLOADABLE_MODELS into it for use in unit
-	# tests.
-	mkdir "${T}/ml_models" || die
-	local all_test_models=( "${DOWNLOADABLE_MODELS[@]}" "${MODELS_TO_INSTALL[@]}" )
-	local distfile_uri
-	for distfile_uri in "${all_test_models[@]}"; do
-		cp "${DISTDIR}/${distfile_uri##*/}" "${T}/ml_models" || die
-	done
-
-	platform_test "run" "${OUT}/ml_service_test"
-}
diff --git a/chromeos-base/ml/ml-0.0.1-r524.ebuild b/chromeos-base/ml/ml-0.0.1-r524.ebuild
new file mode 100644
index 0000000..743af7a
--- /dev/null
+++ b/chromeos-base/ml/ml-0.0.1-r524.ebuild
@@ -0,0 +1,152 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "517c3fdaddc3179ddb87307a44118265bb0c00c3" "20d593bc4f76d08b642ac2d57ed2f4f9af04ce50" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+# TODO(amoylan): Set CROS_WORKON_OUTOFTREE_BUILD=1 after crbug.com/833675.
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk ml ml_benchmark .gn"
+
+PLATFORM_SUBDIR="ml"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Machine learning service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/ml"
+
+# Clients of the ML service should place the URIs of their model files into
+# MODELS_TO_INSTALL if they are installed into rootfs (built-in models), or
+# DOWNLOADABLE_MODELS if they are downloaded via component updater (downloadable
+# models).
+MODELS_TO_INSTALL=(
+	"gs://chromeos-localmirror/distfiles/mlservice-model-test_add-20180914.tflite"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-search_ranker-20190923.tflite"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20181115.tflite"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190221.tflite"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190521-v3.tflite"
+)
+
+# TODO(alanlxl): Remove the deprecated 20201022 link after crbug.com/1136331.
+DOWNLOADABLE_MODELS=(
+	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20200206-downloadable.tflite"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20201022-downloadable.tflite"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20210201-downloadable.tflite"
+)
+
+SRC_URI="
+	${DOWNLOADABLE_MODELS[*]}
+	${MODELS_TO_INSTALL[*]}
+"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="
+	dlc
+	fuzzer
+	internal
+	ml_benchmark_drivers
+	nnapi
+	ondevice_document_scanner
+	ondevice_grammar
+	ondevice_handwriting
+	ondevice_handwriting_dlc
+	ondevice_speech
+	ondevice_text_suggestions
+"
+
+RDEPEND="
+	chromeos-base/chrome-icu:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	internal? ( ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) )
+	nnapi? ( chromeos-base/aosp-frameworks-ml-nn )
+	media-libs/cros-camera-document-scanning:=[ondevice_document_scanner=]
+	>=dev-libs/libgrammar-0.0.4:=[ondevice_grammar=]
+	dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=]
+	dev-libs/libsuggest:=[ondevice_text_suggestions=]
+	>=dev-libs/libtextclassifier-0.0.1-r79:=
+	sci-libs/tensorflow:=
+"
+
+DEPEND="
+	${RDEPEND}
+	chromeos-base/system_api:=[fuzzer?]
+	dev-cpp/absl:=
+	dev-libs/libutf:=
+	dev-libs/marisa-aosp:=
+	fuzzer? ( dev-libs/libprotobuf-mutator )
+"
+
+# SODA will not be supported on rootfs and only be supported through DLC.
+REQUIRED_USE="ondevice_speech? ( dlc )"
+
+src_install() {
+	dobin "${OUT}"/ml_service
+
+	# Install upstart configuration.
+	insinto /etc/init
+	doins init/*.conf
+
+	# Install seccomp policy files.
+	insinto /usr/share/policy
+	newins "seccomp/ml_service-seccomp-${ARCH}.policy" ml_service-seccomp.policy
+	newins "seccomp/ml_service-WebPlatformHandwritingModel-seccomp-${ARCH}.policy" ml_service-WebPlatformHandwritingModel-seccomp.policy
+	newins "seccomp/ml_service-SodaModel-seccomp-${ARCH}.policy" ml_service-SodaModel-seccomp.policy
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.MachineLearning.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.MachineLearning.service
+
+	# Create distfile array of model filepaths.
+	local model_files=( "${MODELS_TO_INSTALL[@]##*/}" )
+	local distfile_array=( "${model_files[@]/#/${DISTDIR}/}" )
+
+	# Install system ML models.
+	insinto /opt/google/chrome/ml_models
+	doins "${distfile_array[@]}"
+
+	# Install system ML models to fuzzer dir.
+	insinto /usr/libexec/fuzzers
+	doins "${distfile_array[@]}"
+
+	# Install fuzzer targets.
+	for fuzzer in "${OUT}"/*_fuzzer; do
+		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
+	done
+
+	if use ml_benchmark_drivers; then
+		insinto /usr/local/ml_benchmark/ml_service
+		insopts -m0755
+		doins "${OUT}"/lib/libml_for_benchmark.so
+		insopts -m0644
+	fi
+}
+
+pkg_preinst() {
+	enewuser "ml-service"
+	enewgroup "ml-service"
+	enewuser "ml-service-dbus"
+	enewgroup "ml-service-dbus"
+}
+
+platform_pkg_test() {
+	# Recreate model dir in the temp directory and copy both
+	# MODELS_TO_INSTALL and DOWNLOADABLE_MODELS into it for use in unit
+	# tests.
+	mkdir "${T}/ml_models" || die
+	local all_test_models=( "${DOWNLOADABLE_MODELS[@]}" "${MODELS_TO_INSTALL[@]}" )
+	local distfile_uri
+	for distfile_uri in "${all_test_models[@]}"; do
+		cp "${DISTDIR}/${distfile_uri##*/}" "${T}/ml_models" || die
+	done
+
+	# The third argument equaling 1 means "run as root". This is needed for
+	# multiprocess unit test.
+	platform_test "run" "${OUT}/ml_service_test" 1
+}
diff --git a/chromeos-base/ml/ml-9999.ebuild b/chromeos-base/ml/ml-9999.ebuild
index 2e79fea..4c2d8f40 100644
--- a/chromeos-base/ml/ml-9999.ebuild
+++ b/chromeos-base/ml/ml-9999.ebuild
@@ -27,8 +27,11 @@
 	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190521-v3.tflite"
 )
 
+# TODO(alanlxl): Remove the deprecated 20201022 link after crbug.com/1136331.
 DOWNLOADABLE_MODELS=(
 	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20200206-downloadable.tflite"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20201022-downloadable.tflite"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20210201-downloadable.tflite"
 )
 
 SRC_URI="
@@ -41,21 +44,26 @@
 IUSE="
 	dlc
 	fuzzer
+	internal
 	ml_benchmark_drivers
 	nnapi
+	ondevice_document_scanner
 	ondevice_grammar
 	ondevice_handwriting
 	ondevice_handwriting_dlc
 	ondevice_speech
+	ondevice_text_suggestions
 "
 
 RDEPEND="
 	chromeos-base/chrome-icu:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
-	ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] )
+	internal? ( ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) )
 	nnapi? ( chromeos-base/aosp-frameworks-ml-nn )
-	>=dev-libs/libgrammar-0.0.3:=[ondevice_grammar=]
+	media-libs/cros-camera-document-scanning:=[ondevice_document_scanner=]
+	>=dev-libs/libgrammar-0.0.4:=[ondevice_grammar=]
 	dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=]
+	dev-libs/libsuggest:=[ondevice_text_suggestions=]
 	>=dev-libs/libtextclassifier-0.0.1-r79:=
 	sci-libs/tensorflow:=
 "
@@ -66,6 +74,7 @@
 	dev-cpp/absl:=
 	dev-libs/libutf:=
 	dev-libs/marisa-aosp:=
+	fuzzer? ( dev-libs/libprotobuf-mutator )
 "
 
 # SODA will not be supported on rootfs and only be supported through DLC.
@@ -78,9 +87,11 @@
 	insinto /etc/init
 	doins init/*.conf
 
-	# Install seccomp policy file.
+	# Install seccomp policy files.
 	insinto /usr/share/policy
 	newins "seccomp/ml_service-seccomp-${ARCH}.policy" ml_service-seccomp.policy
+	newins "seccomp/ml_service-WebPlatformHandwritingModel-seccomp-${ARCH}.policy" ml_service-WebPlatformHandwritingModel-seccomp.policy
+	newins "seccomp/ml_service-SodaModel-seccomp-${ARCH}.policy" ml_service-SodaModel-seccomp.policy
 
 	# Install D-Bus configuration file.
 	insinto /etc/dbus-1/system.d
@@ -118,6 +129,8 @@
 pkg_preinst() {
 	enewuser "ml-service"
 	enewgroup "ml-service"
+	enewuser "ml-service-dbus"
+	enewgroup "ml-service-dbus"
 }
 
 platform_pkg_test() {
@@ -131,5 +144,7 @@
 		cp "${DISTDIR}/${distfile_uri##*/}" "${T}/ml_models" || die
 	done
 
-	platform_test "run" "${OUT}/ml_service_test"
+	# The third argument equaling 1 means "run as root". This is needed for
+	# multiprocess unit test.
+	platform_test "run" "${OUT}/ml_service_test" 1
 }
diff --git a/chromeos-base/modem-utilities/modem-utilities-0.0.1-r2806.ebuild b/chromeos-base/modem-utilities/modem-utilities-0.0.1-r2806.ebuild
deleted file mode 100644
index 987be84..0000000
--- a/chromeos-base/modem-utilities/modem-utilities-0.0.1-r2806.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="3eb012a04f92ec775f804a2458f2ecb87af0815d"
-CROS_WORKON_TREE="c799f4a3f9e3b430591d95864cf9e9f245543492"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_DESTDIR="${S}"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="modem-utilities"
-
-inherit cros-workon
-
-DESCRIPTION="Chromium OS modem utilities"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/modem-utilities/"
-SRC_URI=""
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-COMMON_DEPEND="
-	sys-apps/dbus:=
-"
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/modem-utilities"
-}
diff --git a/chromeos-base/modem-utilities/modem-utilities-0.0.1-r2819.ebuild b/chromeos-base/modem-utilities/modem-utilities-0.0.1-r2819.ebuild
new file mode 100644
index 0000000..be2c109
--- /dev/null
+++ b/chromeos-base/modem-utilities/modem-utilities-0.0.1-r2819.ebuild
@@ -0,0 +1,39 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "27ef0d6acd54bc79665263fb561d89abb458d867" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_DESTDIR="${S}"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk modem-utilities .gn"
+
+PLATFORM_SUBDIR="modem-utilities"
+
+inherit cros-workon tmpfiles platform
+
+DESCRIPTION="Chromium OS modem utilities"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/modem-utilities/"
+SRC_URI=""
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	sys-apps/dbus:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+src_install() {
+	dobin modem
+	dobin connectivity
+	dobin config_net_log
+
+	exeinto /usr/lib
+	doexe modem-common.sh
+	doexe connectivity-common.sh
+
+	dotmpfiles tmpfiles.d/*.conf
+}
diff --git a/chromeos-base/modem-utilities/modem-utilities-9999.ebuild b/chromeos-base/modem-utilities/modem-utilities-9999.ebuild
index 58255ec..2d3306e 100644
--- a/chromeos-base/modem-utilities/modem-utilities-9999.ebuild
+++ b/chromeos-base/modem-utilities/modem-utilities-9999.ebuild
@@ -6,9 +6,11 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_DESTDIR="${S}"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="modem-utilities"
+CROS_WORKON_SUBTREE="common-mk modem-utilities .gn"
 
-inherit cros-workon
+PLATFORM_SUBDIR="modem-utilities"
+
+inherit cros-workon tmpfiles platform
 
 DESCRIPTION="Chromium OS modem utilities"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/modem-utilities/"
@@ -22,7 +24,14 @@
 RDEPEND="${COMMON_DEPEND}"
 DEPEND="${COMMON_DEPEND}"
 
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/modem-utilities"
+src_install() {
+	dobin modem
+	dobin connectivity
+	dobin config_net_log
+
+	exeinto /usr/lib
+	doexe modem-common.sh
+	doexe connectivity-common.sh
+
+	dotmpfiles tmpfiles.d/*.conf
 }
diff --git a/chromeos-base/modemfwd/modemfwd-0.0.1-r769.ebuild b/chromeos-base/modemfwd/modemfwd-0.0.1-r769.ebuild
deleted file mode 100644
index a9c6626..0000000
--- a/chromeos-base/modemfwd/modemfwd-0.0.1-r769.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5251066fa4f265c3a7bbb7d1f1bb17233f43eaaf"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "d27e3e781d3fed35b41282fa73fc88f5a4c554db" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 modemfwd .gn"
-
-PLATFORM_SUBDIR="modemfwd"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Modem firmware updater daemon"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/modemfwd"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="fuzzer"
-
-COMMON_DEPEND="
-	app-arch/xz-utils:=
-	chromeos-base/chromeos-config:=
-	chromeos-base/chromeos-config-tools:=
-	dev-libs/protobuf:=
-	net-misc/modemmanager-next:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/shill-client:=
-	chromeos-base/system_api:=[fuzzer?]
-	fuzzer? ( dev-libs/libprotobuf-mutator:= )
-"
-
-src_install() {
-	dobin "${OUT}/modemfwd"
-
-	# Upstart configuration
-	insinto /etc/init
-	doins modemfwd.conf
-
-	# DBus configuration
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.Modemfwd.conf
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/firmware_manifest_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/firmware_manifest_v2_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/modemfw_test"
-}
diff --git a/chromeos-base/modemfwd/modemfwd-0.0.1-r831.ebuild b/chromeos-base/modemfwd/modemfwd-0.0.1-r831.ebuild
new file mode 100644
index 0000000..6328373
--- /dev/null
+++ b/chromeos-base/modemfwd/modemfwd-0.0.1-r831.ebuild
@@ -0,0 +1,59 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="3117ca92548f3c66aa086af6f98336a50186706f"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "aa0612733aca2d5ffa65470f07408228b473ebdb" "2791849b7eefd7dd81590b85ffcc88a96fa05725" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 modemfwd .gn"
+
+PLATFORM_SUBDIR="modemfwd"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Modem firmware updater daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/modemfwd"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="fuzzer"
+
+COMMON_DEPEND="
+	app-arch/xz-utils:=
+	chromeos-base/chromeos-config:=
+	chromeos-base/chromeos-config-tools:=
+	dev-libs/protobuf:=
+	net-misc/modemmanager-next:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=[fuzzer?]
+	fuzzer? ( dev-libs/libprotobuf-mutator:= )
+"
+
+src_install() {
+	dobin "${OUT}/modemfwd"
+
+	# Upstart configuration
+	insinto /etc/init
+	doins modemfwd.conf
+
+	# DBus configuration
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Modemfwd.conf
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/firmware_manifest_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/firmware_manifest_v2_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/modemfw_test"
+}
diff --git a/chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r441.ebuild b/chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r441.ebuild
deleted file mode 100644
index e216afa..0000000
--- a/chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r441.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="891275e43ab2ed3070c377dd889259604911e046"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "34260e7ee218d17ec48dac40604604e901d6784f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk arc/mount-passthrough .gn"
-
-PLATFORM_SUBDIR="arc/mount-passthrough"
-
-inherit cros-workon platform
-
-DESCRIPTION="Mounts the specified directory with different owner UID and GID"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/mount-passthrough"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-COMMON_DEPEND="sys-fs/fuse:=
-	sys-libs/libcap:="
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-src_install() {
-	dobin "${OUT}"/mount-passthrough
-	dobin mount-passthrough-jailed
-}
diff --git a/chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r471.ebuild b/chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r471.ebuild
new file mode 100644
index 0000000..1adafff
--- /dev/null
+++ b/chromeos-base/mount-passthrough/mount-passthrough-0.0.2-r471.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "92e3d0aa6c1005f33e6a3ca09fbb2a775cf67d9f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk arc/mount-passthrough .gn"
+
+PLATFORM_SUBDIR="arc/mount-passthrough"
+
+inherit cros-workon platform
+
+DESCRIPTION="Mounts the specified directory with different owner UID and GID"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/mount-passthrough"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+COMMON_DEPEND="sys-fs/fuse:=
+	sys-libs/libcap:="
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+src_install() {
+	dobin "${OUT}"/mount-passthrough
+	dobin mount-passthrough-jailed
+	dobin mount-passthrough-jailed-media
+	dobin mount-passthrough-jailed-play
+
+	insinto /usr/share/arc
+	doins mount-passthrough-jailed-utils.sh
+}
diff --git a/chromeos-base/mount-passthrough/mount-passthrough-9999.ebuild b/chromeos-base/mount-passthrough/mount-passthrough-9999.ebuild
index ff76c02..9f380e8 100644
--- a/chromeos-base/mount-passthrough/mount-passthrough-9999.ebuild
+++ b/chromeos-base/mount-passthrough/mount-passthrough-9999.ebuild
@@ -27,4 +27,9 @@
 src_install() {
 	dobin "${OUT}"/mount-passthrough
 	dobin mount-passthrough-jailed
+	dobin mount-passthrough-jailed-media
+	dobin mount-passthrough-jailed-play
+
+	insinto /usr/share/arc
+	doins mount-passthrough-jailed-utils.sh
 }
diff --git a/chromeos-base/mri_package/files/rtanalytics.policy b/chromeos-base/mri_package/files/rtanalytics.policy
index 694eb22..d6ed370 100644
--- a/chromeos-base/mri_package/files/rtanalytics.policy
+++ b/chromeos-base/mri_package/files/rtanalytics.policy
@@ -4,6 +4,7 @@
 
 creat: 1
 dup: 1
+dup2: 1
 epoll_wait: 1
 epoll_ctl: 1
 epoll_create1: 1
@@ -29,6 +30,7 @@
 getegid: 1
 getpriority: 1
 chdir: 1
+fchdir: 1
 kill: 1
 wait4: 1
 getdents64: 1
@@ -38,7 +40,7 @@
 sched_yield: 1
 getrandom: 1
 tgkill: 1
-prctl: arg0 == PR_SET_SECCOMP || arg0 == PR_SET_NO_NEW_PRIVS || arg0 == PR_SET_NAME
+prctl: arg0 == PR_SET_SECCOMP || arg0 == PR_SET_NO_NEW_PRIVS || arg0 == PR_SET_NAME || arg0 == PR_SET_MM_ARG_START
 setitimer: 1
 getitimer: 1
 recvmsg: 1
@@ -46,6 +48,7 @@
 sendmsg: 1
 clock_gettime: 1
 nanosleep: 1
+clock_nanosleep: 1
 futex: 1
 rt_sigaction: 1
 mmap: 1
@@ -75,9 +78,12 @@
 # || arg1 == _IOC(_IOC_WRITE, 0xdc, 0x01, 0x10)
 # || arg1 == _IOC(_IOC_WRITE, 0xdc, 0x08, 0x20)
 # || arg1 == _IOC(_IOC_WRITE, 0xdc, 0x09, 0x20)
-ioctl: arg1 == 0x40045612 || arg1 == 0x40045613 || arg1 == 0x80685600 || arg1 == 0xc0445624 || arg1 == 0xc02c5625 || arg1 == 0xc008561b || arg1 == 0xc008561c || arg1 == 0xc0145608 || arg1 == 0xc058560f || arg1 == 0xc0d05605 || arg1 == 0xc0585609 || arg1 == 0xc0585611 || arg1 == 0xc0cc5616 || arg1 == 0xC0405602 || arg1 == 0xC02C564A || arg1 == 0x80045500 || arg1 == 0x80045530 || arg1 == 0xC1205531 || arg1 == 0x81785501 || arg1 == 0x40045532 || arg1 == 0x81204101 || arg1 == 0x80044100 || arg1 == 0x40044103 || arg1 == 0xC2604110 || arg1 == 0xC2604111 || arg1 == 0xC0884113 || arg1 == 0x80184132 || arg1 == 0x4140 || arg1 == 0x4143 || arg1 == 0x4112 || arg1 == 0x4142 || arg1 == 0x4122 || arg1 == 0x80084121 || arg1 == 0xc020dc0b || arg1 == 0x40107f00 || arg1 == 0x4010dc01 || arg1 == 0x4020dc07 || arg1 == 0x4020dc08 || arg1 == 0x4020dc09
+# || arg1 == 0x5401 || arg1 == 0x40047f01 || arg1 == 0x4028dc0c
+ioctl: arg1 == 0x40045612 || arg1 == 0x40045613 || arg1 == 0x80685600 || arg1 == 0xc0445624 || arg1 == 0xc02c5625 || arg1 == 0xc008561b || arg1 == 0xc008561c || arg1 == 0xc0145608 || arg1 == 0xc058560f || arg1 == 0xc0d05605 || arg1 == 0xc0585609 || arg1 == 0xc0585611 || arg1 == 0xc0cc5616 || arg1 == 0xC0405602 || arg1 == 0xC02C564A || arg1 == 0x80045500 || arg1 == 0x80045530 || arg1 == 0xC1205531 || arg1 == 0x81785501 || arg1 == 0x40045532 || arg1 == 0x81204101 || arg1 == 0x80044100 || arg1 == 0x40044103 || arg1 == 0xC2604110 || arg1 == 0xC2604111 || arg1 == 0xC0884113 || arg1 == 0x80184132 || arg1 == 0x4140 || arg1 == 0x4143 || arg1 == 0x4112 || arg1 == 0x4142 || arg1 == 0x4122 || arg1 == 0x80084121 || arg1 == 0xc020dc0b || arg1 == 0x40107f00 || arg1 == 0x4010dc01 || arg1 == 0x4020dc07 || arg1 == 0x4020dc08 || arg1 == 0x4020dc09 || arg1 == 0x5401 || arg1 == 0x40047f01 || arg1 == 0x4028dc0c
 open: 1
 fstat: 1
+fstatfs: 1
+newfstatat: 1
 getcpu: 1
 fcntl: 1
 uname: 1
@@ -103,6 +109,7 @@
 getuid: 1
 bind: 1
 readlink: 1
+readlinkat: 1
 connect: 1
 getsockname: 1
 getdents: 1
@@ -129,3 +136,5 @@
 set_tid_address: 1
 getpid: 1
 prlimit64: 1
+sysinfo: 1
+timerfd_create: 1
diff --git a/chromeos-base/mri_package/mri_package-0.0.1-r258.ebuild b/chromeos-base/mri_package/mri_package-0.0.1-r258.ebuild
deleted file mode 100644
index 1ec80a5..0000000
--- a/chromeos-base/mri_package/mri_package-0.0.1-r258.ebuild
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 2019 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="9461017a4f5f9085add8850fc082a295bb63131d"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "44516a1024b7c65ba5231f4e0268a63f5766fde4" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="common-mk media_perception .gn"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-PLATFORM_SUBDIR="media_perception"
-
-inherit cros-workon platform udev user
-
-LIB_VERSION=72.0.0
-
-DESCRIPTION="Media perception service"
-SRC_URI="internal? ( gs://chromeos-localmirror-private/distfiles/${PN}-${LIB_VERSION}.tar.gz )"
-RESTRICT="mirror"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="internal"
-
-RDEPEND="
-	media-sound/adhd:=
-	>=sys-apps/dbus-1.0:=
-"
-DEPEND="${RDEPEND}"
-
-src_unpack() {
-	if use internal; then
-		unpack "${A}"
-	fi
-
-	platform_src_unpack
-}
-
-src_compile() {
-	if use internal; then
-		# Copy the library downloaded from chromeos-localmirror-private to the
-		# platform compile directory.
-		cp "${WORKDIR}"/librtanalytics.so "${OUT}" || die
-	fi
-
-	platform_src_compile
-}
-
-pkg_preinst() {
-	enewgroup rtanalytics
-	enewuser rtanalytics
-	enewgroup apex-access
-}
-
-src_install() {
-	insinto /etc/init/
-	doins "${FILESDIR}"/rtanalytics.conf
-
-	insinto /etc/dbus-1/system.d/
-	doins "${FILESDIR}"/org.chromium.MediaPerception.conf
-
-	insinto /usr/share/policy/
-	doins "${FILESDIR}"/rtanalytics.policy
-
-	udev_dorules "${FILESDIR}"/99-apex.rules
-}
diff --git a/chromeos-base/mri_package/mri_package-0.0.1-r290.ebuild b/chromeos-base/mri_package/mri_package-0.0.1-r290.ebuild
new file mode 100644
index 0000000..b5e1979
--- /dev/null
+++ b/chromeos-base/mri_package/mri_package-0.0.1-r290.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2019 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="16f6615fecc1f3ddcef1697bc7fafd1f34b3e080"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "9b0d8acf9fe935775132a5c3231a3dc32cbb08c6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="common-mk media_perception .gn"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+PLATFORM_SUBDIR="media_perception"
+
+inherit cros-workon platform udev user
+
+LIB_VERSION=72.0.0
+
+DESCRIPTION="Media perception service"
+SRC_URI="internal? ( gs://chromeos-localmirror-private/distfiles/${PN}-${LIB_VERSION}.tar.gz )"
+RESTRICT="mirror"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="internal"
+
+RDEPEND="
+	media-sound/adhd:=
+	>=sys-apps/dbus-1.0:=
+"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+	if use internal; then
+		unpack "${A}"
+	fi
+
+	platform_src_unpack
+}
+
+src_compile() {
+	if use internal; then
+		# Copy the library downloaded from chromeos-localmirror-private to the
+		# platform compile directory.
+		cp "${WORKDIR}"/librtanalytics.so "${OUT}" || die
+	fi
+
+	platform_src_compile
+}
+
+pkg_preinst() {
+	enewgroup rtanalytics
+	enewuser rtanalytics
+	enewgroup apex-access
+}
+
+src_install() {
+	insinto /etc/init/
+	doins "${FILESDIR}"/rtanalytics.conf
+
+	insinto /etc/dbus-1/system.d/
+	doins "${FILESDIR}"/org.chromium.MediaPerception.conf
+
+	insinto /usr/share/policy/
+	doins "${FILESDIR}"/rtanalytics.policy
+
+	udev_dorules "${FILESDIR}"/99-apex.rules
+}
diff --git a/chromeos-base/mst_hub_updater/files/001-makefile-clang.patch b/chromeos-base/mst_hub_updater/files/001-makefile-clang.patch
new file mode 100644
index 0000000..d854135
--- /dev/null
+++ b/chromeos-base/mst_hub_updater/files/001-makefile-clang.patch
@@ -0,0 +1,100 @@
+diff --git a/CPISPPlugIn/Makefile b/CPISPPlugIn/Makefile
+index 12528c7..8658b22 100755
+--- a/CPISPPlugIn/Makefile
++++ b/CPISPPlugIn/Makefile
+@@ -12,7 +12,7 @@ DIR =$(notdir $(SRCS))
+ OBJECTS_TAR = $(patsubst %cpp,%o,$(DIR))
+ # Compiler flags
+ 
+-CXX = clang++
++CXX ?= clang++
+ CXXFLAGS += -I../CpComm/Comm_Export/ -I ../LinuxCommon -I../Tool_Common -Wall
+ CXXFLAGS += -fPIC
+ INSTALL_DIR=../ReleaseTool
+diff --git a/CPISPTool/Makefile b/CPISPTool/Makefile
+index 5131f80..d4946c7 100755
+--- a/CPISPTool/Makefile
++++ b/CPISPTool/Makefile
+@@ -6,7 +6,7 @@ INSTALL_DIR=../ReleaseTool
+ SRCS = ISPTool.cpp CpRsString.cpp LinuxCommExport.cpp CpCommExport.cpp  CpIspExport.cpp LinuxIspExport.cpp \
+ LinuxRsFuncBase.cpp CpRsFuncBase.cpp UnixParseArgs.cpp CpParseArgsBase.cpp
+ 
+-CXX=clang++
++CXX ?= clang++
+ CXXFLAGS += -I../CpComm/Comm_Export/ -I ../LinuxCommon -I../Tool_Common -I ./../CPISPPlugIn/CPISPCommon 
+ 
+ DIR =$(notdir $(SRCS))
+diff --git a/Comm_PlugIn/CommDevI2C/Makefile b/Comm_PlugIn/CommDevI2C/Makefile
+index 03d3353..c06103f 100755
+--- a/Comm_PlugIn/CommDevI2C/Makefile
++++ b/Comm_PlugIn/CommDevI2C/Makefile
+@@ -1,28 +1,28 @@
+-TARGET=libDevI2C

+-VPATH = CommDevI2C ./../CPDevComCommon

+-SRCS = LinuxDevI2C.cpp LinuxDevI2CRw.cpp CpDeviceComBase.cpp CpDeviceCommExtern.cpp

+-DIR =$(notdir $(SRCS))

+-OBJECTS_TAR := $(patsubst %cpp,%o,$(DIR))

+-

+-# Compiler flags

+-

+-CXX = clang++

+-CXXFLAGS +=  -I../../Tool_Common/RsCommon/ -I../CPDevComCommon -Wall

+-CXXFLAGS += -fPIC

+-CXXFLAGS += -D DEVI2C

+-LDFLAGS = 

+-INSTALL_DIR=../../ReleaseTool/Comm

+-

+-all : $(TARGET)

+-%.o:%.cpp

+-	$(CXX) $(CXXFLAGS) -c $<

+-$(TARGET): $(OBJECTS_TAR)

+-	$(CXX) -shared -fPIC -o $(TARGET).so $(OBJECTS_TAR) $(CXXFLAGS) $(LDFLAGS)

+-	$(AR) -rcs $(TARGET).a $(OBJECTS_TAR)

+-

+-install:

+-	install -m 755 $(TARGET).so $(INSTALL_DIR)

+-	#install -m 755 $(TARGET).a $(INSTALL_DIR)

+-

+-clean:

+-	rm -rf *.o $(TARGET).so $(TARGET).a

++TARGET=libDevI2C
++VPATH = CommDevI2C ./../CPDevComCommon
++SRCS = LinuxDevI2C.cpp LinuxDevI2CRw.cpp CpDeviceComBase.cpp CpDeviceCommExtern.cpp
++DIR =$(notdir $(SRCS))
++OBJECTS_TAR := $(patsubst %cpp,%o,$(DIR))
++
++# Compiler flags
++
++CXX ?= clang++
++CXXFLAGS +=  -I../../Tool_Common/RsCommon/ -I../CPDevComCommon -Wall
++CXXFLAGS += -fPIC
++CXXFLAGS += -D DEVI2C
++LDFLAGS = 
++INSTALL_DIR=../../ReleaseTool/Comm
++
++all : $(TARGET)
++%.o:%.cpp
++	$(CXX) $(CXXFLAGS) -c $<
++$(TARGET): $(OBJECTS_TAR)
++	$(CXX) -shared -fPIC -o $(TARGET).so $(OBJECTS_TAR) $(CXXFLAGS) $(LDFLAGS)
++	$(AR) -rcs $(TARGET).a $(OBJECTS_TAR)
++
++install:
++	install -m 755 $(TARGET).so $(INSTALL_DIR)
++	#install -m 755 $(TARGET).a $(INSTALL_DIR)
++
++clean:
++	rm -rf *.o $(TARGET).so $(TARGET).a
+diff --git a/CpComm/Makefile b/CpComm/Makefile
+index 50092e2..b081210 100755
+--- a/CpComm/Makefile
++++ b/CpComm/Makefile
+@@ -7,7 +7,7 @@ DIR =$(notdir $(SRCS))
+ OBJECTS_TAR = $(patsubst %cpp,%o,$(DIR))
+ # Compiler flags
+ 
+-CXX = clang++
++CXX ?= clang++
+ CXXFLAGS += -I../Comm_PlugIn/Comm_PlugIn_Export/CPComm_PlugIn_Define -I ../LinuxCommon -I../Tool_Common -Wall
+ CXXFLAGS += -fPIC
+ INSTALL_DIR=../ReleaseTool
diff --git a/chromeos-base/mst_hub_updater/mst_hub_updater-1.0.1-r2.ebuild b/chromeos-base/mst_hub_updater/mst_hub_updater-1.0.1-r3.ebuild
similarity index 100%
rename from chromeos-base/mst_hub_updater/mst_hub_updater-1.0.1-r2.ebuild
rename to chromeos-base/mst_hub_updater/mst_hub_updater-1.0.1-r3.ebuild
diff --git a/chromeos-base/mst_hub_updater/mst_hub_updater-1.0.1.ebuild b/chromeos-base/mst_hub_updater/mst_hub_updater-1.0.1.ebuild
index 89120eb..6dc6415 100644
--- a/chromeos-base/mst_hub_updater/mst_hub_updater-1.0.1.ebuild
+++ b/chromeos-base/mst_hub_updater/mst_hub_updater-1.0.1.ebuild
@@ -14,6 +14,8 @@
 
 MST_TOOL_INSTALL_PATH="/opt/google/display/mst_hub/tools"
 
+PATCHES=( "${FILESDIR}/001-makefile-clang.patch" )
+
 src_configure() {
 	cros_enable_cxx_exceptions
 }
diff --git a/chromeos-base/mtpd/mtpd-0.0.1-r894.ebuild b/chromeos-base/mtpd/mtpd-0.0.1-r894.ebuild
deleted file mode 100644
index 0252407..0000000
--- a/chromeos-base/mtpd/mtpd-0.0.1-r894.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "687fa4fa888a9258a15947e2468f5427bd1b90dd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk mtpd .gn"
-PLATFORM_SUBDIR="mtpd"
-PLATFORM_NATIVE_TEST="yes"
-
-inherit cros-workon platform systemd user
-
-DESCRIPTION="MTP daemon for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/mtpd"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="-asan +seccomp systemd test"
-
-COMMON_DEPEND="
-	dev-libs/protobuf:=
-	media-libs/libmtp:=
-	virtual/udev
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/system_api:="
-
-src_install() {
-	dosbin "${OUT}"/mtpd
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	use seccomp && newins "mtpd-seccomp-${ARCH}.policy" mtpd-seccomp.policy
-
-	# Install the init scripts.
-	if use systemd; then
-		systemd_dounit mtpd.service
-		systemd_enable_service system-services.target mtpd.service
-	else
-		insinto /etc/init
-		doins mtpd.conf
-	fi
-
-	# Install D-Bus config file.
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.Mtpd.conf
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/mtpd_testrunner"
-}
-
-pkg_preinst() {
-	enewuser "mtp"
-	enewgroup "mtp"
-}
diff --git a/chromeos-base/mtpd/mtpd-0.0.1-r933.ebuild b/chromeos-base/mtpd/mtpd-0.0.1-r933.ebuild
new file mode 100644
index 0000000..029ece1
--- /dev/null
+++ b/chromeos-base/mtpd/mtpd-0.0.1-r933.ebuild
@@ -0,0 +1,63 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8f376208dea965d63708243a36895e4e7bd272b0" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="common-mk mtpd .gn"
+PLATFORM_SUBDIR="mtpd"
+PLATFORM_NATIVE_TEST="yes"
+
+inherit cros-workon platform systemd user
+
+DESCRIPTION="MTP daemon for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/mtpd"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="-asan +seccomp systemd test"
+
+COMMON_DEPEND="
+	dev-libs/protobuf:=
+	media-libs/libmtp:=
+	virtual/udev
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/system_api:="
+
+src_install() {
+	dosbin "${OUT}"/mtpd
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	use seccomp && newins "mtpd-seccomp-${ARCH}.policy" mtpd-seccomp.policy
+
+	# Install the init scripts.
+	if use systemd; then
+		systemd_dounit mtpd.service
+		systemd_enable_service system-services.target mtpd.service
+	else
+		insinto /etc/init
+		doins mtpd.conf
+	fi
+
+	# Install D-Bus config file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Mtpd.conf
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/mtpd_testrunner"
+}
+
+pkg_preinst() {
+	enewuser "mtp"
+	enewgroup "mtp"
+}
diff --git a/chromeos-base/mttools/mttools-0.0.1-r160.ebuild b/chromeos-base/mttools/mttools-0.0.1-r160.ebuild
deleted file mode 100644
index 8722575..0000000
--- a/chromeos-base/mttools/mttools-0.0.1-r160.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="44b2e16939185c9a3ecca057eeccc2f4c47a6481"
-CROS_WORKON_TREE="2a249f0f3fca6ab3c82d86616802086874f5c901"
-CROS_WORKON_PROJECT="chromiumos/platform/mttools"
-CROS_WORKON_LOCALNAME="platform/mttools"
-
-inherit cros-sanitizers cros-workon cros-common.mk cros-constants cros-debug
-
-DESCRIPTION="Chromium OS multitouch utilities"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/mttools"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan"
-# This package has no tests.
-RESTRICT="test"
-
-RDEPEND="chromeos-base/gestures
-	app-misc/utouch-evemu
-	chromeos-base/libevdev
-	chromeos-base/touch_firmware_test"
-
-DEPEND=${RDEPEND}
-
-src_configure() {
-	sanitizers-setup-env
-	cros-common.mk_src_configure
-}
-
-src_install() {
-	# install to autotest deps directory for dependency
-	emake DESTDIR="${D}${AUTOTEST_BASE}/client/deps/touchpad-tests/framework" install
-}
diff --git a/chromeos-base/mttools/mttools-0.0.1-r163.ebuild b/chromeos-base/mttools/mttools-0.0.1-r163.ebuild
new file mode 100644
index 0000000..437bb08
--- /dev/null
+++ b/chromeos-base/mttools/mttools-0.0.1-r163.ebuild
@@ -0,0 +1,38 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="957a434f10b7663bbafc85fb19afe1a3318c0a10"
+CROS_WORKON_TREE="c25299ae6b5a681897f432f3dc7c2459be2e4cc6"
+CROS_WORKON_PROJECT="chromiumos/platform/mttools"
+CROS_WORKON_LOCALNAME="platform/mttools"
+
+inherit cros-sanitizers cros-workon cros-common.mk cros-constants cros-debug
+
+DESCRIPTION="Chromium OS multitouch utilities"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/mttools"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="-asan"
+# This package has no tests.
+RESTRICT="test"
+
+RDEPEND="chromeos-base/gestures
+	app-misc/utouch-evemu
+	chromeos-base/libevdev:=
+	chromeos-base/touch_firmware_test"
+
+DEPEND=${RDEPEND}
+
+src_configure() {
+	sanitizers-setup-env
+	cros-common.mk_src_configure
+}
+
+src_install() {
+	# install to autotest deps directory for dependency
+	emake DESTDIR="${D}${AUTOTEST_BASE}/client/deps/touchpad-tests/framework" install
+}
diff --git a/chromeos-base/mttools/mttools-9999.ebuild b/chromeos-base/mttools/mttools-9999.ebuild
index 15951c3..ee84636 100644
--- a/chromeos-base/mttools/mttools-9999.ebuild
+++ b/chromeos-base/mttools/mttools-9999.ebuild
@@ -20,7 +20,7 @@
 
 RDEPEND="chromeos-base/gestures
 	app-misc/utouch-evemu
-	chromeos-base/libevdev
+	chromeos-base/libevdev:=
 	chromeos-base/touch_firmware_test"
 
 DEPEND=${RDEPEND}
diff --git a/chromeos-base/ndproxyd/ndproxyd-0.0.1-r162.ebuild b/chromeos-base/ndproxyd/ndproxyd-0.0.1-r162.ebuild
deleted file mode 100644
index 8a75a5d..0000000
--- a/chromeos-base/ndproxyd/ndproxyd-0.0.1-r162.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="891275e43ab2ed3070c377dd889259604911e046"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "dce82635efeafb4457e130913bcabc6fcf00bdf7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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"
-
-PLATFORM_SUBDIR="patchpanel/ndproxyd"
-
-inherit cros-workon libchrome platform
-
-DESCRIPTION="NDProxy daemon"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/network/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-COMMON_DEPEND="
-	dev-libs/protobuf:=
-	chromeos-base/libbrillo:=
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	!chromeos-base/arc-networkd-ndproxyd
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-"
-
-src_install() {
-	dobin "${OUT}"/ndproxyd
-}
-
diff --git a/chromeos-base/ndproxyd/ndproxyd-0.0.1-r233.ebuild b/chromeos-base/ndproxyd/ndproxyd-0.0.1-r233.ebuild
new file mode 100644
index 0000000..a907d09
--- /dev/null
+++ b/chromeos-base/ndproxyd/ndproxyd-0.0.1-r233.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="c8356149dd3addec8ddef84545cf8a9dc8530f01"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "ae86a7d3ab814f4089a041bdf224a46af7c4b4bf" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_SUBDIR="patchpanel/ndproxyd"
+
+inherit cros-workon libchrome platform
+
+DESCRIPTION="NDProxy daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/network/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	dev-libs/protobuf:=
+	chromeos-base/libbrillo:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	!chromeos-base/arc-networkd-ndproxyd
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+"
+
+src_install() {
+	dobin "${OUT}"/ndproxyd
+}
+
diff --git a/chromeos-base/nnapi/files/00010-libutils-clock-test.patch b/chromeos-base/nnapi/files/00010-libutils-clock-test.patch
new file mode 100644
index 0000000..a145573
--- /dev/null
+++ b/chromeos-base/nnapi/files/00010-libutils-clock-test.patch
@@ -0,0 +1,19 @@
+We had a test failure:
+
+nnapi-0.0.2-r3: Expected: (endUptimeMs - startUptimeMs) < (SLEEP_MS + SLACK_MS), actual: 555 vs 550
+
+Increasing the slack time to account for when the test might be run under heavy load.
+
+diff --git a/platform2/aosp/system/core/libutils/SystemClock_test.cpp b/platform2/aosp/system/core/libutils/SystemClock_test.cpp
+index 7449dad..821c295 100644
+--- a/platform2/aosp/system/core/libutils/SystemClock_test.cpp
++++ b/platform2/aosp/system/core/libutils/SystemClock_test.cpp
+@@ -24,7 +24,7 @@ static const auto MS_IN_NS = 1000000;
+ static const int64_t SLEEP_MS = 500;
+ static const int64_t SLEEP_NS = SLEEP_MS * MS_IN_NS;
+ // Conservatively assume that we might be descheduled for up to 50 ms
+-static const int64_t SLACK_MS = 50;
++static const int64_t SLACK_MS = 100;
+ static const int64_t SLACK_NS = SLACK_MS * MS_IN_NS;
+ 
+ TEST(SystemClock, SystemClock) {
diff --git a/chromeos-base/nnapi/nnapi-0.0.2-r2.ebuild b/chromeos-base/nnapi/nnapi-0.0.2-r2.ebuild
deleted file mode 100644
index 8d0c4394..0000000
--- a/chromeos-base/nnapi/nnapi-0.0.2-r2.ebuild
+++ /dev/null
@@ -1,174 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("85109a843d7310588ec7feea6775ace121125882" "23e2bf511667b4fa5859812a4e7945c8638f6603" "ab4ff9c1ded692a3529e9c03ea6943fe094df0f9" "a14d63edf6f0058f6c478093b8e90e35fa3314ec" "b7f8cf0f0beab62bc5a391226ebd835c2fe377dc" "8e369832671de86e05cbbd3eeb7ddfe7df95f1ec" "6b79fa280312109216ce8b3a4893f266775cddc2" "e386a40d816e794c12040936608d252ab96077a7")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "febb5c918e5047e2dd8a2bd416944894f76e41b3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "d0c498cd8aacda36a50685194a4f11a5538c36ec" "f3727b50e53c0a9f165bce6d96002698678ebe1b" "97c692ea262a87836db5893fc63567ed30eadea6" "4007f79bbd89b30be582cb0cdb1292ce377f34e1" "077dba53acf2e9a7a56288ee75d515afa7541b94" "bcea173391bb1aa3b0978ecc33a27d447e59eb18" "6a8c1be1913e7a9ccf5141a072ad595a1e9d3add")
-inherit cros-constants
-
-CROS_WORKON_MANUAL_UPREV="1"
-
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform2"
-	"aosp/platform/frameworks/native"
-	"aosp/platform/system/core/libcutils"
-	"aosp/platform/system/core/libutils"
-	"aosp/platform/system/libbase"
-	"aosp/platform/system/libfmq"
-	"aosp/platform/system/libhidl"
-	"aosp/platform/system/logging"
-)
-CROS_WORKON_REPO=(
-	"${CROS_GIT_HOST_URL}"
-	"${CROS_GIT_HOST_URL}"
-	"${CROS_GIT_HOST_URL}"
-	"${CROS_GIT_HOST_URL}"
-	"${CROS_GIT_HOST_URL}"
-	"${CROS_GIT_HOST_URL}"
-	"${CROS_GIT_HOST_URL}"
-	"${CROS_GIT_HOST_URL}"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform2"
-	"aosp/frameworks/native"
-	"aosp/system/core/libcutils"
-	"aosp/system/core/libutils"
-	"aosp/system/libbase"
-	"aosp/system/libfmq"
-	"aosp/system/libhidl"
-	"aosp/system/logging"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}/platform2"
-	"${S}/platform2/aosp/frameworks/native"
-	"${S}/platform2/aosp/system/core/libcutils"
-	"${S}/platform2/aosp/system/core/libutils"
-	"${S}/platform2/aosp/system/libbase"
-	"${S}/platform2/aosp/system/libfmq"
-	"${S}/platform2/aosp/system/libhidl"
-	"${S}/platform2/aosp/system/logging"
-)
-CROS_WORKON_SUBTREE=(
-	"common-mk nnapi .gn"
-	""
-	""
-	""
-	""
-	""
-	""
-	""
-)
-
-PLATFORM_SUBDIR="nnapi"
-
-inherit cros-workon platform
-
-DESCRIPTION="Chrome OS support utils for Android Neural Network API"
-HOMEPAGE="https://developer.android.com/ndk/guides/neuralnetworks"
-
-LICENSE="BSD-Google  Apache-2.0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-"
-
-DEPEND="
-	${RDEPEND}
-"
-
-PATCHES=(
-	"${FILESDIR}/00001-libbase-fix-stderr-logging.patch"
-	"${FILESDIR}/00002-libhidl-callstack.patch"
-	"${FILESDIR}/00003-libutils-callstack.patch"
-	"${FILESDIR}/00004-libfmq-page-size.patch"
-	"${FILESDIR}/00005-libcutils-ashmemtests.patch"
-	"${FILESDIR}/00006-libhidl-cast-interface.patch"
-	"${FILESDIR}/00007-libbase-get-property-from-envvar.patch"
-	"${FILESDIR}/00008-libutils-memory-leak.patch"
-	"${FILESDIR}/00009-libutils-timer-cast.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 -p2 "${FILESDIR}/00001-libbase-fix-stderr-logging.patch"
-	eapply -p2 "${FILESDIR}/00002-libhidl-callstack.patch"
-	eapply -p2 "${FILESDIR}/00003-libutils-callstack.patch"
-	eapply -p2 "${FILESDIR}/00004-libfmq-page-size.patch"
-	eapply -p2 "${FILESDIR}/00005-libcutils-ashmemtests.patch"
-	eapply -p2 "${FILESDIR}/00006-libhidl-cast-interface.patch"
-	eapply -p2 "${FILESDIR}/00007-libbase-get-property-from-envvar.patch"
-	eapply -p2 "${FILESDIR}/00008-libutils-memory-leak.patch"
-	eapply -p2 "${FILESDIR}/00009-libutils-timer-cast.patch"
-	popd || exit
-
-	eapply_user
-}
-
-src_install() {
-	einfo "Installing Android headers."
-	insinto /usr/include/aosp
-	doins -r includes/*
-	doins -r ../aosp/frameworks/native/libs/arect/include/*
-	doins -r ../aosp/frameworks/native/libs/nativewindow/include/*
-	doins -r ../aosp/system/core/libcutils/include/*
-	doins -r ../aosp/system/core/libutils/include/*
-	doins -r ../aosp/system/libbase/include/*
-	doins -r ../aosp/system/libfmq/include/*
-	doins -r ../aosp/system/libfmq/base/*
-	doins -r ../aosp/system/libhidl/base/include/*
-	doins -r ../aosp/system/libhidl/libhidlmemory/include/*
-	doins -r ../aosp/system/logging/liblog/include/*
-	# Selectively install one off headers
-	insinto /usr/include/aosp/android
-	doins ../aosp/frameworks/native/include/android/sharedmem.h
-
-	einfo "Installing the shared library."
-	dolib.so "${OUT}/lib/libnnapi-support.so"
-
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}/obj/nnapi/libnnapi-support.pc"
-}
-
-platform_pkg_test() {
-	local tests=(
-		base cutils fmq hidl hwbuf log utils
-	)
-
-	# When running in qemu, these tests freeze the emulator when hitting
-	# EventFlag::wake from libfmq. The error printed is:
-	# Error in event flag wake attempt: Function not implemented
-	# This is a known issue, see:
-	# https://chromium.googlesource.com/chromiumos/docs/+/master/testing/running_unit_tests.md#caveats
-	local qemu_gtest_excl_filter="-"
-	qemu_gtest_excl_filter+="BlockingReadWrites.SmallInputTest1:"
-
-	local gtest_excl_filter="-"
-	if use asan; then
-		# The sharedbuffer tests deliberately allocate too much memory:
-		# AddressSanitizer: requested allocation size 0xfffffffffffffffe
-		# We can't use allocator_may_return_null=1 as it prints a warning that the
-		# toolchain considers an error.
-		gtest_excl_filter+="SharedBufferTest.alloc_null:"
-		gtest_excl_filter+="SharedBufferTest.editResize_null:"
-		gtest_excl_filter+="SharedBufferTest.editResize_death:"
-
-		# ForkSafe leaves some threads running which results in warning printed:
-		# ==26==Running thread 23 was not suspended. False leaks are possible.
-		# Toolchain considers anything in the asan output as an error.
-		gtest_excl_filter+="logging.ForkSafe:"
-
-		# The queue created in this test cannot be deleted without crashing in
-		# the hidl library. lsan_suppressions doesn't work due to the lack of
-		# /usr/bin/llvm-symbolizer, so just exclude the test.
-		gtest_excl_filter+="BadQueueConfig.QueueSizeTooLarge:"
-	fi
-
-	local test_target
-	for test_target in "${tests[@]}"; do
-		platform_test "run" "${OUT}/lib${test_target}_testrunner" "0" "${gtest_excl_filter}" "${qemu_gtest_excl_filter}"
-	done
-}
diff --git a/chromeos-base/nnapi/nnapi-0.0.2-r3.ebuild b/chromeos-base/nnapi/nnapi-0.0.2-r3.ebuild
new file mode 100644
index 0000000..9184333
--- /dev/null
+++ b/chromeos-base/nnapi/nnapi-0.0.2-r3.ebuild
@@ -0,0 +1,176 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("a03802ee1856bd49ee34754519314e57c60afed6" "23e2bf511667b4fa5859812a4e7945c8638f6603" "f0d85f116fd745ed927bca0102a1040629e528c9" "c92d0857816b8694a74ba1a47b754563d4452f65" "b7f8cf0f0beab62bc5a391226ebd835c2fe377dc" "8e369832671de86e05cbbd3eeb7ddfe7df95f1ec" "6b79fa280312109216ce8b3a4893f266775cddc2" "e386a40d816e794c12040936608d252ab96077a7")
+CROS_WORKON_TREE=("eaed4f3b0a8201ef3951bf1960728885ff99e772" "64b6839ee0c350c6387157eb82ce359c719646f1" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "d0c498cd8aacda36a50685194a4f11a5538c36ec" "84e5da480e7ca644dd680845aadd3c35eef39972" "60d005eccb2f9431ea99a17d8637375a9e5e387d" "4007f79bbd89b30be582cb0cdb1292ce377f34e1" "077dba53acf2e9a7a56288ee75d515afa7541b94" "bcea173391bb1aa3b0978ecc33a27d447e59eb18" "6a8c1be1913e7a9ccf5141a072ad595a1e9d3add")
+inherit cros-constants
+
+CROS_WORKON_MANUAL_UPREV="1"
+
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform2"
+	"aosp/platform/frameworks/native"
+	"aosp/platform/system/core/libcutils"
+	"aosp/platform/system/core/libutils"
+	"aosp/platform/system/libbase"
+	"aosp/platform/system/libfmq"
+	"aosp/platform/system/libhidl"
+	"aosp/platform/system/logging"
+)
+CROS_WORKON_REPO=(
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+	"${CROS_GIT_HOST_URL}"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform2"
+	"aosp/frameworks/native"
+	"aosp/system/core/libcutils"
+	"aosp/system/core/libutils"
+	"aosp/system/libbase"
+	"aosp/system/libfmq"
+	"aosp/system/libhidl"
+	"aosp/system/logging"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/platform2"
+	"${S}/platform2/aosp/frameworks/native"
+	"${S}/platform2/aosp/system/core/libcutils"
+	"${S}/platform2/aosp/system/core/libutils"
+	"${S}/platform2/aosp/system/libbase"
+	"${S}/platform2/aosp/system/libfmq"
+	"${S}/platform2/aosp/system/libhidl"
+	"${S}/platform2/aosp/system/logging"
+)
+CROS_WORKON_SUBTREE=(
+	"common-mk nnapi .gn"
+	""
+	""
+	""
+	""
+	""
+	""
+	""
+)
+
+PLATFORM_SUBDIR="nnapi"
+
+inherit cros-workon platform
+
+DESCRIPTION="Chrome OS support utils for Android Neural Network API"
+HOMEPAGE="https://developer.android.com/ndk/guides/neuralnetworks"
+
+LICENSE="BSD-Google  Apache-2.0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+"
+
+DEPEND="
+	${RDEPEND}
+"
+
+PATCHES=(
+	"${FILESDIR}/00001-libbase-fix-stderr-logging.patch"
+	"${FILESDIR}/00002-libhidl-callstack.patch"
+	"${FILESDIR}/00003-libutils-callstack.patch"
+	"${FILESDIR}/00004-libfmq-page-size.patch"
+	"${FILESDIR}/00005-libcutils-ashmemtests.patch"
+	"${FILESDIR}/00006-libhidl-cast-interface.patch"
+	"${FILESDIR}/00007-libbase-get-property-from-envvar.patch"
+	"${FILESDIR}/00008-libutils-memory-leak.patch"
+	"${FILESDIR}/00009-libutils-timer-cast.patch"
+	"${FILESDIR}/00010-libutils-clock-test.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 -p2 "${FILESDIR}/00001-libbase-fix-stderr-logging.patch"
+	eapply -p2 "${FILESDIR}/00002-libhidl-callstack.patch"
+	eapply -p2 "${FILESDIR}/00003-libutils-callstack.patch"
+	eapply -p2 "${FILESDIR}/00004-libfmq-page-size.patch"
+	eapply -p2 "${FILESDIR}/00005-libcutils-ashmemtests.patch"
+	eapply -p2 "${FILESDIR}/00006-libhidl-cast-interface.patch"
+	eapply -p2 "${FILESDIR}/00007-libbase-get-property-from-envvar.patch"
+	eapply -p2 "${FILESDIR}/00008-libutils-memory-leak.patch"
+	eapply -p2 "${FILESDIR}/00009-libutils-timer-cast.patch"
+	eapply -p2 "${FILESDIR}/00010-libutils-clock-test.patch"
+	popd || exit
+
+	eapply_user
+}
+
+src_install() {
+	einfo "Installing Android headers."
+	insinto /usr/include/aosp
+	doins -r includes/*
+	doins -r ../aosp/frameworks/native/libs/arect/include/*
+	doins -r ../aosp/frameworks/native/libs/nativewindow/include/*
+	doins -r ../aosp/system/core/libcutils/include/*
+	doins -r ../aosp/system/core/libutils/include/*
+	doins -r ../aosp/system/libbase/include/*
+	doins -r ../aosp/system/libfmq/include/*
+	doins -r ../aosp/system/libfmq/base/*
+	doins -r ../aosp/system/libhidl/base/include/*
+	doins -r ../aosp/system/libhidl/libhidlmemory/include/*
+	doins -r ../aosp/system/logging/liblog/include/*
+	# Selectively install one off headers
+	insinto /usr/include/aosp/android
+	doins ../aosp/frameworks/native/include/android/sharedmem.h
+
+	einfo "Installing the shared library."
+	dolib.so "${OUT}/lib/libnnapi-support.so"
+
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}/obj/nnapi/libnnapi-support.pc"
+}
+
+platform_pkg_test() {
+	local tests=(
+		base cutils fmq hidl hwbuf log utils
+	)
+
+	# When running in qemu, these tests freeze the emulator when hitting
+	# EventFlag::wake from libfmq. The error printed is:
+	# Error in event flag wake attempt: Function not implemented
+	# This is a known issue, see:
+	# https://chromium.googlesource.com/chromiumos/docs/+/master/testing/running_unit_tests.md#caveats
+	local qemu_gtest_excl_filter="-"
+	qemu_gtest_excl_filter+="BlockingReadWrites.SmallInputTest1:"
+
+	local gtest_excl_filter="-"
+	if use asan; then
+		# The sharedbuffer tests deliberately allocate too much memory:
+		# AddressSanitizer: requested allocation size 0xfffffffffffffffe
+		# We can't use allocator_may_return_null=1 as it prints a warning that the
+		# toolchain considers an error.
+		gtest_excl_filter+="SharedBufferTest.alloc_null:"
+		gtest_excl_filter+="SharedBufferTest.editResize_null:"
+		gtest_excl_filter+="SharedBufferTest.editResize_death:"
+
+		# ForkSafe leaves some threads running which results in warning printed:
+		# ==26==Running thread 23 was not suspended. False leaks are possible.
+		# Toolchain considers anything in the asan output as an error.
+		gtest_excl_filter+="logging.ForkSafe:"
+
+		# The queue created in this test cannot be deleted without crashing in
+		# the hidl library. lsan_suppressions doesn't work due to the lack of
+		# /usr/bin/llvm-symbolizer, so just exclude the test.
+		gtest_excl_filter+="BadQueueConfig.QueueSizeTooLarge:"
+	fi
+
+	local test_target
+	for test_target in "${tests[@]}"; do
+		platform_test "run" "${OUT}/lib${test_target}_testrunner" "0" "${gtest_excl_filter}" "${qemu_gtest_excl_filter}"
+	done
+}
diff --git a/chromeos-base/nnapi/nnapi-9999.ebuild b/chromeos-base/nnapi/nnapi-9999.ebuild
index e7c150f..19d5132 100644
--- a/chromeos-base/nnapi/nnapi-9999.ebuild
+++ b/chromeos-base/nnapi/nnapi-9999.ebuild
@@ -86,6 +86,7 @@
 	"${FILESDIR}/00007-libbase-get-property-from-envvar.patch"
 	"${FILESDIR}/00008-libutils-memory-leak.patch"
 	"${FILESDIR}/00009-libutils-timer-cast.patch"
+	"${FILESDIR}/00010-libutils-clock-test.patch"
 )
 
 src_prepare() {
@@ -101,6 +102,7 @@
 	eapply -p2 "${FILESDIR}/00007-libbase-get-property-from-envvar.patch"
 	eapply -p2 "${FILESDIR}/00008-libutils-memory-leak.patch"
 	eapply -p2 "${FILESDIR}/00009-libutils-timer-cast.patch"
+	eapply -p2 "${FILESDIR}/00010-libutils-clock-test.patch"
 	popd || exit
 
 	eapply_user
diff --git a/chromeos-base/ocr/ocr-0.0.1-r35.ebuild b/chromeos-base/ocr/ocr-0.0.1-r35.ebuild
deleted file mode 100644
index 244a2d2..0000000
--- a/chromeos-base/ocr/ocr-0.0.1-r35.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "697eec34c5129d11b04c630c745b96cf47b43234" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="common-mk ocr .gn"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-PLATFORM_SUBDIR="ocr"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Optical Character Recognition service for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ocr/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND="
-	app-text/tesseract:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/system_api:=
-"
-
-pkg_preinst() {
-	enewuser ocr_service
-	enewgroup ocr_service
-}
-
-src_install() {
-	dobin "${OUT}"/ocr_service
-
-	dobin "${OUT}"/ocr_tool
-
-	# Install upstart configuration.
-	insinto /etc/init
-	doins init/ocr_service.conf
-
-	# Install D-Bus configuration file.
-	insinto /etc/dbus-1/system.d
-	doins dbus_permissions/org.chromium.OpticalCharacterRecognition.conf
-
-	# Install D-Bus service activation configuration.
-	insinto /usr/share/dbus-1/system-services
-	doins dbus_permissions/org.chromium.OpticalCharacterRecognition.service
-}
-
-platform_pkg_test() {
-	local tests=(
-		"ocr_service_test"
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/ocr/ocr-0.0.1-r66.ebuild b/chromeos-base/ocr/ocr-0.0.1-r66.ebuild
new file mode 100644
index 0000000..8600e92
--- /dev/null
+++ b/chromeos-base/ocr/ocr-0.0.1-r66.ebuild
@@ -0,0 +1,68 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e3d4b675a41bab4b0a7d7f2cc58a3113f54af7fd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="common-mk ocr .gn"
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+PLATFORM_SUBDIR="ocr"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Optical Character Recognition service for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ocr/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+COMMON_DEPEND="
+	app-text/tesseract:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/system_api:=
+"
+
+pkg_preinst() {
+	enewuser ocr_service
+	enewgroup ocr_service
+}
+
+src_install() {
+	dobin "${OUT}"/ocr_service
+
+	dobin "${OUT}"/ocr_tool
+
+	# Install upstart configuration.
+	insinto /etc/init
+	doins init/ocr_service.conf
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus_permissions/org.chromium.OpticalCharacterRecognition.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus_permissions/org.chromium.OpticalCharacterRecognition.service
+}
+
+platform_pkg_test() {
+	local tests=(
+		"ocr_service_test"
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/oobe_config/oobe_config-0.0.1-r380.ebuild b/chromeos-base/oobe_config/oobe_config-0.0.1-r380.ebuild
deleted file mode 100644
index 10b711a..0000000
--- a/chromeos-base/oobe_config/oobe_config-0.0.1-r380.ebuild
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "1023baf673223aa6f3a095cad3bb1d878a2bef4a" "6bcff6ea2d0ff76e4398205aee498eb314d63902" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 oobe_config libtpmcrypto metrics .gn"
-
-PLATFORM_SUBDIR="oobe_config"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Provides utilities to save and restore OOBE config."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/oobe_config/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="tpm tpm2"
-REQUIRED_USE="?? ( tpm tpm2 )"
-
-COMMMON_DEPEND="
-	chromeos-base/libtpmcrypto:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/openssl:0=
-	sys-apps/dbus:=
-"
-RDEPEND="${COMMMON_DEPEND}"
-DEPEND="
-	${COMMMON_DEPEND}
-	chromeos-base/power_manager-client:=
-	chromeos-base/system_api:=
-"
-
-pkg_preinst() {
-	enewuser "oobe_config_save"
-	enewuser "oobe_config_restore"
-	enewgroup "oobe_config_save"
-	enewgroup "oobe_config_restore"
-}
-
-src_install() {
-	dosbin "${OUT}"/rollback_prepare_save
-	dosbin "${OUT}"/oobe_config_save
-	dosbin "${OUT}"/oobe_config_restore
-	dosbin "${OUT}"/rollback_finish_restore
-	dosbin "${OUT}"/finish_oobe_auto_config
-	dosbin "${OUT}"/store_usb_oobe_config
-
-	insinto /etc/dbus-1/system.d
-	doins etc/dbus-1/org.chromium.OobeConfigRestore.conf
-
-	insinto /etc/init
-	doins etc/init/oobe_config_restore.conf
-	doins etc/init/oobe_config_save.conf
-	if use tpm2; then
-		sed -i 's/and started tcsd//' \
-			"${D}/etc/init/oobe_config_restore.conf" ||
-			die "Can't remove upstart dependency on tcsd"
-
-		sed -i 's/-b \/run\/tcsd//' \
-			"${D}/etc/init/oobe_config_restore.conf" ||
-			die "Can't remove /run/tcsd bind mount"
-
-		sed -i 's/-b \/run\/tcsd//' \
-			"${D}/etc/init/oobe_config_save.conf" ||
-			die "Can't remove /run/tcsd bind mount"
-	fi
-
-	insinto /usr/share/policy
-	newins seccomp_filters/oobe_config_restore-seccomp-"${ARCH}".policy \
-		oobe_config_restore-seccomp.policy
-	newins seccomp_filters/oobe_config_save-seccomp-"${ARCH}".policy \
-		oobe_config_save-seccomp.policy
-}
-
-platform_pkg_test() {
-	local tests=(
-		oobe_config_test
-	)
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/oobe_config/oobe_config-0.0.1-r461.ebuild b/chromeos-base/oobe_config/oobe_config-0.0.1-r461.ebuild
new file mode 100644
index 0000000..b51baab
--- /dev/null
+++ b/chromeos-base/oobe_config/oobe_config-0.0.1-r461.ebuild
@@ -0,0 +1,86 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "7baa8fedddc9a906490da6057fd2cf6c54eb6207" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 oobe_config metrics .gn"
+
+PLATFORM_SUBDIR="oobe_config"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Provides utilities to save and restore OOBE config."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/oobe_config/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="tpm tpm2"
+REQUIRED_USE="?? ( tpm tpm2 )"
+
+COMMMON_DEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	sys-apps/dbus:=
+"
+RDEPEND="${COMMMON_DEPEND}"
+DEPEND="
+	${COMMMON_DEPEND}
+	chromeos-base/power_manager-client:=
+	chromeos-base/system_api:=
+"
+
+pkg_preinst() {
+	enewuser "oobe_config_save"
+	enewuser "oobe_config_restore"
+	enewgroup "oobe_config_save"
+	enewgroup "oobe_config_restore"
+}
+
+src_install() {
+	dosbin "${OUT}"/rollback_prepare_save
+	dosbin "${OUT}"/oobe_config_save
+	dosbin "${OUT}"/oobe_config_restore
+	dosbin "${OUT}"/rollback_finish_restore
+
+	insinto /etc/dbus-1/system.d
+	doins etc/dbus-1/org.chromium.OobeConfigRestore.conf
+
+	insinto /etc/init
+	doins etc/init/oobe_config_restore.conf
+	doins etc/init/oobe_config_save.conf
+	if use tpm2; then
+		sed -i 's/and started tcsd//' \
+			"${D}/etc/init/oobe_config_restore.conf" ||
+			die "Can't remove upstart dependency on tcsd"
+
+		sed -i 's/-b \/run\/tcsd//' \
+			"${D}/etc/init/oobe_config_restore.conf" ||
+			die "Can't remove /run/tcsd bind mount"
+
+		sed -i 's/-b \/run\/tcsd//' \
+			"${D}/etc/init/oobe_config_save.conf" ||
+			die "Can't remove /run/tcsd bind mount"
+	fi
+
+	insinto /usr/share/policy
+	newins seccomp_filters/oobe_config_restore-seccomp-"${ARCH}".policy \
+		oobe_config_restore-seccomp.policy
+	newins seccomp_filters/oobe_config_save-seccomp-"${ARCH}".policy \
+		oobe_config_save-seccomp.policy
+}
+
+platform_pkg_test() {
+	local tests=(
+		oobe_config_test
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/oobe_config/oobe_config-9999.ebuild b/chromeos-base/oobe_config/oobe_config-9999.ebuild
index e2d9d81..f943b28 100644
--- a/chromeos-base/oobe_config/oobe_config-9999.ebuild
+++ b/chromeos-base/oobe_config/oobe_config-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 oobe_config libtpmcrypto metrics .gn"
+CROS_WORKON_SUBTREE="common-mk oobe_config metrics .gn"
 
 PLATFORM_SUBDIR="oobe_config"
 
@@ -23,9 +23,7 @@
 REQUIRED_USE="?? ( tpm tpm2 )"
 
 COMMMON_DEPEND="
-	chromeos-base/libtpmcrypto:=
 	>=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/openssl:0=
 	sys-apps/dbus:=
 "
 RDEPEND="${COMMMON_DEPEND}"
@@ -47,8 +45,6 @@
 	dosbin "${OUT}"/oobe_config_save
 	dosbin "${OUT}"/oobe_config_restore
 	dosbin "${OUT}"/rollback_finish_restore
-	dosbin "${OUT}"/finish_oobe_auto_config
-	dosbin "${OUT}"/store_usb_oobe_config
 
 	insinto /etc/dbus-1/system.d
 	doins etc/dbus-1/org.chromium.OobeConfigRestore.conf
diff --git a/chromeos-base/os_install_service/OWNERS b/chromeos-base/os_install_service/OWNERS
new file mode 100644
index 0000000..b1d625f
--- /dev/null
+++ b/chromeos-base/os_install_service/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/os_install_service/OWNERS
diff --git a/chromeos-base/os_install_service/files/chromeos-version.sh b/chromeos-base/os_install_service/files/chromeos-version.sh
new file mode 100755
index 0000000..f3bd1be
--- /dev/null
+++ b/chromeos-base/os_install_service/files/chromeos-version.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# Copyright 2021 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.
+
+# Assumes the first 'version =' line in the Cargo.toml is the version for the
+# crate.
+awk '/^version = / { print $3 }' "$1/os_install_service/Cargo.toml" | head -n1 | tr -d '"'
diff --git a/chromeos-base/os_install_service/os_install_service-1.0.0-r8.ebuild b/chromeos-base/os_install_service/os_install_service-1.0.0-r8.ebuild
new file mode 100644
index 0000000..aa351d4
--- /dev/null
+++ b/chromeos-base/os_install_service/os_install_service-1.0.0-r8.ebuild
@@ -0,0 +1,56 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f90f5fb301e98483de23e5c59f75ead8c3fe7a46"
+CROS_WORKON_TREE="63583eb163b76ac260df1aed8cdd71950f87b8b3"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="os_install_service"
+
+inherit cros-workon cros-rust tmpfiles
+
+LICENSE="BSD-Google"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+IUSE="test"
+
+DEPEND="
+	chromeos-base/system_api:=
+	=dev-rust/anyhow-1.0*:=
+	=dev-rust/chrono-0.4*:=
+	=dev-rust/crossbeam-channel-0.5*:=
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/lazy_static-1.4*:=
+	=dev-rust/log-0.4*:=
+	=dev-rust/nix-0.19*:=
+	=dev-rust/serde-1.0*:=
+	=dev-rust/serde_json-1.0*:=
+	dev-rust/sys_util:=
+	=dev-rust/tempfile-3*:=
+	=dev-rust/thiserror-1.0*:=
+"
+
+RDEPEND="
+	chromeos-base/chromeos-installer
+	sys-apps/util-linux
+	sys-block/parted
+"
+
+src_install() {
+	insinto /etc/dbus-1/system.d
+	doins conf/org.chromium.OsInstallService.conf
+
+	insinto /usr/share/policy
+	newins "conf/os_install_service-seccomp-${ARCH}.policy" os_install_service-seccomp.policy
+
+	insinto /etc/init
+	doins conf/os_install_service.conf
+
+	newtmpfiles conf/tmpfiles.conf os_install_service.conf
+
+	dosbin "$(cros-rust_get_build_dir)/is_running_from_installer"
+	dosbin "$(cros-rust_get_build_dir)/os_install_service"
+}
diff --git a/chromeos-base/os_install_service/os_install_service-9999.ebuild b/chromeos-base/os_install_service/os_install_service-9999.ebuild
new file mode 100644
index 0000000..e3411fe
--- /dev/null
+++ b/chromeos-base/os_install_service/os_install_service-9999.ebuild
@@ -0,0 +1,54 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="os_install_service"
+
+inherit cros-workon cros-rust tmpfiles
+
+LICENSE="BSD-Google"
+SLOT="0/${PVR}"
+KEYWORDS="~*"
+IUSE="test"
+
+DEPEND="
+	chromeos-base/system_api:=
+	=dev-rust/anyhow-1.0*:=
+	=dev-rust/chrono-0.4*:=
+	=dev-rust/crossbeam-channel-0.5*:=
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/lazy_static-1.4*:=
+	=dev-rust/log-0.4*:=
+	=dev-rust/nix-0.19*:=
+	=dev-rust/serde-1.0*:=
+	=dev-rust/serde_json-1.0*:=
+	dev-rust/sys_util:=
+	=dev-rust/tempfile-3*:=
+	=dev-rust/thiserror-1.0*:=
+"
+
+RDEPEND="
+	chromeos-base/chromeos-installer
+	sys-apps/util-linux
+	sys-block/parted
+"
+
+src_install() {
+	insinto /etc/dbus-1/system.d
+	doins conf/org.chromium.OsInstallService.conf
+
+	insinto /usr/share/policy
+	newins "conf/os_install_service-seccomp-${ARCH}.policy" os_install_service-seccomp.policy
+
+	insinto /etc/init
+	doins conf/os_install_service.conf
+
+	newtmpfiles conf/tmpfiles.conf os_install_service.conf
+
+	dosbin "$(cros-rust_get_build_dir)/is_running_from_installer"
+	dosbin "$(cros-rust_get_build_dir)/os_install_service"
+}
diff --git a/chromeos-base/p2p/p2p-0.0.1-r3261.ebuild b/chromeos-base/p2p/p2p-0.0.1-r3261.ebuild
deleted file mode 100644
index edd1082..0000000
--- a/chromeos-base/p2p/p2p-0.0.1-r3261.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "f8450508e6487031816df1175191c729d63d1cce" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk metrics p2p .gn"
-
-PLATFORM_SUBDIR="p2p"
-
-inherit cros-debug cros-workon platform user
-
-DESCRIPTION="Chromium OS P2P"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/p2p/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND=">=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/glib:=
-	net-dns/avahi-daemon:=
-	net-firewall/iptables:="
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-platform_pkg_test() {
-	local tests=(
-		p2p-client-unittests
-		p2p-server-unittests
-		p2p-http-server-unittests
-		p2p-common-unittests
-	)
-
-	local test_bin
-	cd "${OUT}"
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "./${test_bin}"
-	done
-}
-
-pkg_preinst() {
-	# Groups are managed in the central account database.
-	enewgroup p2p
-	enewuser p2p
-}
-
-src_install() {
-	dosbin "${OUT}"/p2p-client
-	dosbin "${OUT}"/p2p-server
-	dosbin "${OUT}"/p2p-http-server
-
-	insinto /etc/init
-	doins data/p2p.conf
-
-	# Install fuzzer
-	platform_fuzzer_install "${S}"/OWNERS \
-			"${OUT}"/p2p_http_server_fuzzer
-}
diff --git a/chromeos-base/p2p/p2p-0.0.1-r3326.ebuild b/chromeos-base/p2p/p2p-0.0.1-r3326.ebuild
new file mode 100644
index 0000000..22c39c4
--- /dev/null
+++ b/chromeos-base/p2p/p2p-0.0.1-r3326.ebuild
@@ -0,0 +1,68 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="0553127ef2b660a5c71f12a9417ed4ad35f07120"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "4a45ea46c086c0a4b6eeff7eb1365097acd44641" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk metrics p2p .gn"
+
+PLATFORM_SUBDIR="p2p"
+
+inherit cros-debug cros-workon platform user
+
+DESCRIPTION="Chromium OS P2P"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/p2p/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+COMMON_DEPEND=">=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/glib:=
+	net-dns/avahi-daemon:=
+	net-firewall/iptables:="
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+platform_pkg_test() {
+	local tests=(
+		p2p-client-unittests
+		p2p-server-unittests
+		p2p-http-server-unittests
+		p2p-common-unittests
+	)
+
+	local test_bin
+	cd "${OUT}"
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "./${test_bin}"
+	done
+}
+
+pkg_preinst() {
+	# Groups are managed in the central account database.
+	enewgroup p2p
+	enewuser p2p
+}
+
+src_install() {
+	dosbin "${OUT}"/p2p-client
+	dosbin "${OUT}"/p2p-server
+	dosbin "${OUT}"/p2p-http-server
+
+	insinto /etc/init
+	doins data/p2p.conf
+
+	# Install fuzzer
+	platform_fuzzer_install "${S}"/OWNERS \
+			"${OUT}"/p2p_http_server_fuzzer
+}
diff --git a/chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r149.ebuild b/chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r149.ebuild
new file mode 100644
index 0000000..ed7ed4a
--- /dev/null
+++ b/chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r149.ebuild
@@ -0,0 +1,68 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="c8356149dd3addec8ddef84545cf8a9dc8530f01"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "ae86a7d3ab814f4089a041bdf224a46af7c4b4bf" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_SUBDIR="patchpanel/dbus"
+
+inherit cros-workon platform
+
+DESCRIPTION="Patchpanel network connectivity management D-Bus client"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/patchpanel/dbus/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+# These USE flags are used in patchpanel/dbus/BUILD.gn
+IUSE="fuzzer"
+
+COMMON_DEPEND="
+	dev-libs/protobuf:=
+"
+
+# libpatchpanel-client.so and libpatchpanel-client.pc moved from
+# chromeos-base/patchpanel.
+RDEPEND="
+	!<chromeos-base/patchpanel-0.0.2
+	${COMMON_DEPEND}
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api:=[fuzzer?]
+"
+
+patchpanel_client_header() {
+	doins "$1"
+	sed -i '/.pb.h/! s:patchpanel/:chromeos/patchpanel/:g' \
+		"${D}/usr/include/chromeos/patchpanel/dbus/$1" || die
+}
+
+src_install() {
+	# Libraries.
+	dolib.so "${OUT}"/lib/libpatchpanel-client.so
+
+	"${S}"/preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}" || die
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}"/libpatchpanel-client.pc
+
+	insinto /usr/include/chromeos/patchpanel/dbus
+	patchpanel_client_header client.h
+	patchpanel_client_header fake_client.h
+
+	local fuzzer
+	for fuzzer in "${OUT}"/*_fuzzer; do
+		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
+	done
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/patchpanel-client_testrunner"
+}
diff --git a/chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r78.ebuild b/chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r78.ebuild
deleted file mode 100644
index ff60990..0000000
--- a/chromeos-base/patchpanel-client/patchpanel-client-0.0.1-r78.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="891275e43ab2ed3070c377dd889259604911e046"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "dce82635efeafb4457e130913bcabc6fcf00bdf7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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"
-
-PLATFORM_SUBDIR="patchpanel/dbus"
-
-inherit cros-workon platform
-
-DESCRIPTION="Patchpanel network connectivity management D-Bus client"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/patchpanel/dbus/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-# These USE flags are used in patchpanel/dbus/BUILD.gn
-IUSE="fuzzer"
-
-COMMON_DEPEND="
-	dev-libs/protobuf:=
-"
-
-# libpatchpanel-client.so and libpatchpanel-client.pc moved from
-# chromeos-base/patchpanel.
-RDEPEND="
-	!<chromeos-base/patchpanel-0.0.2
-	${COMMON_DEPEND}
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-patchpanel_client_header() {
-	doins "$1"
-	sed -i '/.pb.h/! s:patchpanel/:chromeos/patchpanel/:g' \
-		"${D}/usr/include/chromeos/patchpanel/dbus/$1" || die
-}
-
-src_install() {
-	# Libraries.
-	dolib.so "${OUT}"/lib/libpatchpanel-client.so
-
-	"${S}"/preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}" || die
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}"/libpatchpanel-client.pc
-
-	insinto /usr/include/chromeos/patchpanel/dbus
-	patchpanel_client_header client.h
-	patchpanel_client_header fake_client.h
-
-	local fuzzer
-	for fuzzer in "${OUT}"/*_fuzzer; do
-		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
-	done
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/patchpanel-client_testrunner"
-}
diff --git a/chromeos-base/patchpanel/patchpanel-0.0.2-r187.ebuild b/chromeos-base/patchpanel/patchpanel-0.0.2-r187.ebuild
deleted file mode 100644
index 3f6da37..0000000
--- a/chromeos-base/patchpanel/patchpanel-0.0.2-r187.ebuild
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="891275e43ab2ed3070c377dd889259604911e046"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "dce82635efeafb4457e130913bcabc6fcf00bdf7" "8d85bf6a0f007851c46d0aca5117edd10ecb0760" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 shill/net .gn"
-
-PLATFORM_SUBDIR="patchpanel"
-
-inherit cros-workon libchrome platform user
-
-DESCRIPTION="Patchpanel network connectivity management daemon"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/patchpanel/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-# These USE flags are used in patchpanel/BUILD.gn
-IUSE="fuzzer arcvm jetstream_routing"
-
-COMMON_DEPEND="
-	dev-libs/protobuf:=
-	!chromeos-base/arc-networkd
-	chromeos-base/shill-net:=
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/shill
-	net-firewall/iptables
-	net-misc/bridge-utils
-	sys-apps/iproute2
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/session_manager-client:=
-	chromeos-base/shill-client:=
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-patchpanel_header() {
-	doins "$1"
-	sed -i '/.pb.h/! s:patchpanel/:chromeos/patchpanel/:g' \
-		"${D}/usr/include/chromeos/patchpanel/$1" || die
-}
-
-src_install() {
-	# Main binary.
-	dobin "${OUT}"/patchpaneld
-
-	# Libraries.
-	dolib.so "${OUT}"/lib/libpatchpanel-util.so
-
-	"${S}"/preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}"/libpatchpanel-util.pc
-
-	insinto /usr/include/chromeos/patchpanel/
-	patchpanel_header address_manager.h
-	patchpanel_header mac_address_generator.h
-	patchpanel_header net_util.h
-	patchpanel_header socket.h
-	patchpanel_header socket_forwarder.h
-	patchpanel_header subnet.h
-	patchpanel_header subnet_pool.h
-
-	insinto /etc/init
-	doins "${S}"/init/patchpanel.conf
-
-	insinto /etc/dbus-1/system.d
-	doins dbus/*.conf
-
-	local fuzzer
-	for fuzzer in "${OUT}"/*_fuzzer; do
-		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
-	done
-}
-
-pkg_preinst() {
-	# Service account used for privilege separation.
-	enewuser patchpaneld
-	enewgroup patchpaneld
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/patchpanel_testrunner"
-}
-
diff --git a/chromeos-base/patchpanel/patchpanel-0.0.2-r277.ebuild b/chromeos-base/patchpanel/patchpanel-0.0.2-r277.ebuild
new file mode 100644
index 0000000..934caea
--- /dev/null
+++ b/chromeos-base/patchpanel/patchpanel-0.0.2-r277.ebuild
@@ -0,0 +1,100 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="c8356149dd3addec8ddef84545cf8a9dc8530f01"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "ae86a7d3ab814f4089a041bdf224a46af7c4b4bf" "1ed695b253a6cd0f70c4ceccdfe60c38e9bed7b8" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 shill/net .gn"
+
+PLATFORM_SUBDIR="patchpanel"
+
+inherit cros-workon libchrome platform user
+
+DESCRIPTION="Patchpanel network connectivity management daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/patchpanel/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+# These USE flags are used in patchpanel/BUILD.gn
+IUSE="fuzzer arcvm jetstream_routing"
+
+COMMON_DEPEND="
+	dev-libs/protobuf:=
+	!chromeos-base/arc-networkd
+	chromeos-base/shill-net:=
+	chromeos-base/system_api:=[fuzzer?]
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/shill
+	net-firewall/iptables
+	net-misc/bridge-utils
+	sys-apps/iproute2
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/session_manager-client:=
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=[fuzzer?]
+"
+
+patchpanel_header() {
+	doins "$1"
+	sed -i '/.pb.h/! s:patchpanel/:chromeos/patchpanel/:g' \
+		"${D}/usr/include/chromeos/patchpanel/$1" || die
+}
+
+src_install() {
+	# Main binary.
+	dobin "${OUT}"/patchpaneld
+
+	# Libraries.
+	dolib.so "${OUT}"/lib/libpatchpanel-util.so
+
+	"${S}"/preinstall.sh "${PV}" "/usr/include/chromeos" "${OUT}"
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}"/libpatchpanel-util.pc
+
+	insinto /usr/include/chromeos/patchpanel/
+	patchpanel_header address_manager.h
+	patchpanel_header mac_address_generator.h
+	patchpanel_header net_util.h
+	patchpanel_header socket.h
+	patchpanel_header socket_forwarder.h
+	patchpanel_header subnet.h
+	patchpanel_header subnet_pool.h
+
+	insinto /usr/include/chromeos/patchpanel/dns
+	patchpanel_header dns/dns_protocol.h
+	patchpanel_header dns/dns_query.h
+	patchpanel_header dns/dns_response.h
+	patchpanel_header dns/io_buffer.h
+
+	insinto /etc/init
+	doins "${S}"/init/patchpanel.conf
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/*.conf
+
+	local fuzzer
+	for fuzzer in "${OUT}"/*_fuzzer; do
+		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
+	done
+}
+
+pkg_preinst() {
+	# Service account used for privilege separation.
+	enewuser patchpaneld
+	enewgroup patchpaneld
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/patchpanel_testrunner"
+}
diff --git a/chromeos-base/patchpanel/patchpanel-9999.ebuild b/chromeos-base/patchpanel/patchpanel-9999.ebuild
index d418629..f2d607c 100644
--- a/chromeos-base/patchpanel/patchpanel-9999.ebuild
+++ b/chromeos-base/patchpanel/patchpanel-9999.ebuild
@@ -69,6 +69,12 @@
 	patchpanel_header subnet.h
 	patchpanel_header subnet_pool.h
 
+	insinto /usr/include/chromeos/patchpanel/dns
+	patchpanel_header dns/dns_protocol.h
+	patchpanel_header dns/dns_query.h
+	patchpanel_header dns/dns_response.h
+	patchpanel_header dns/io_buffer.h
+
 	insinto /etc/init
 	doins "${S}"/init/patchpanel.conf
 
@@ -90,4 +96,3 @@
 platform_pkg_test() {
 	platform_test "run" "${OUT}/patchpanel_testrunner"
 }
-
diff --git a/chromeos-base/pciguard/pciguard-0.0.1-r48.ebuild b/chromeos-base/pciguard/pciguard-0.0.1-r48.ebuild
new file mode 100644
index 0000000..6cad567
--- /dev/null
+++ b/chromeos-base/pciguard/pciguard-0.0.1-r48.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8f8f3fd6e34931380cbc9f35bf9f2bb74d9c7c8b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk pciguard .gn"
+
+PLATFORM_SUBDIR="pciguard"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Chrome OS External PCI device security daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/pciguard/"
+
+LICENSE="BSD-Google"
+SLOT=0
+KEYWORDS="*"
+
+DEPEND="
+	chromeos-base/session_manager-client:=
+	chromeos-base/system_api:=
+"
+
+src_install() {
+	# Install the binary
+	dosbin "${OUT}"/pciguard
+
+	# Install the seccomp policy
+	insinto /usr/share/policy
+	newins "${S}/seccomp/pciguard-seccomp-${ARCH}.policy" pciguard-seccomp.policy
+
+	# Install the upstart configuration files
+	insinto /etc/init
+	doins "${S}"/init/*.conf
+
+	# Install the dbus configuration
+	insinto /etc/dbus-1/system.d
+	doins "${S}/dbus/pciguard-dbus.conf"
+}
+
+pkg_preinst() {
+	enewuser pciguard
+	enewgroup pciguard
+	cros-workon_pkg_setup
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/pciguard_testrunner"
+}
diff --git a/chromeos-base/pciguard/pciguard-0.0.1-r5.ebuild b/chromeos-base/pciguard/pciguard-0.0.1-r5.ebuild
deleted file mode 100644
index 4d683a7..0000000
--- a/chromeos-base/pciguard/pciguard-0.0.1-r5.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="bec689a83d442623fd0f110b8f5ca411aa59a9fd"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "0e27fcf3db77ce2ea5e204cba2d598db32cd2c71" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk pciguard .gn"
-
-PLATFORM_SUBDIR="pciguard"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Chrome OS External PCI device security daemon"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/pciguard/"
-
-LICENSE="BSD-Google"
-SLOT=0
-KEYWORDS="*"
-
-DEPEND="
-	chromeos-base/system_api:=
-"
-
-src_install() {
-	# Install the binary
-	dosbin "${OUT}"/pciguard
-
-	# Install the seccomp policy
-	insinto /usr/share/policy
-	newins "${S}/seccomp/pciguard-seccomp-${ARCH}.policy" pciguard-seccomp.policy
-
-	# Install the upstart configuration files
-	insinto /etc/init
-	doins "${S}"/init/pciguard.conf
-
-	# Install the dbus configuration
-	insinto /etc/dbus-1/system.d
-	doins "${S}/dbus/pciguard-dbus.conf"
-}
-
-pkg_preinst() {
-	enewuser pciguard
-	enewgroup pciguard
-	cros-workon_pkg_setup
-}
diff --git a/chromeos-base/pciguard/pciguard-9999.ebuild b/chromeos-base/pciguard/pciguard-9999.ebuild
index 041da6a..f7603c1 100644
--- a/chromeos-base/pciguard/pciguard-9999.ebuild
+++ b/chromeos-base/pciguard/pciguard-9999.ebuild
@@ -21,6 +21,7 @@
 KEYWORDS="~*"
 
 DEPEND="
+	chromeos-base/session_manager-client:=
 	chromeos-base/system_api:=
 "
 
@@ -34,7 +35,7 @@
 
 	# Install the upstart configuration files
 	insinto /etc/init
-	doins "${S}"/init/pciguard.conf
+	doins "${S}"/init/*.conf
 
 	# Install the dbus configuration
 	insinto /etc/dbus-1/system.d
@@ -46,3 +47,7 @@
 	enewgroup pciguard
 	cros-workon_pkg_setup
 }
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/pciguard_testrunner"
+}
diff --git a/chromeos-base/percetto/Manifest b/chromeos-base/percetto/Manifest
new file mode 100644
index 0000000..806356a
--- /dev/null
+++ b/chromeos-base/percetto/Manifest
@@ -0,0 +1 @@
+DIST percetto-0.1.5.tar.gz 22824 BLAKE2B 59aff5f9611f028b34fa813b6efef1831ea188e02f3b1b6c6e2a8a88322b218d0cb657b03879637ea7b7cb3819e226d2892e175c09e1a693bedd50bc25e4ed1c SHA512 585e84e1e71fe0d65336b3d37c74c540e0a015426a77f8bfaf08b13e7a9e9d1cb8ba5bc750a9bd3a175f182ae3afc62def9132a3e47e3ec95fb80352390a7887
diff --git a/chromeos-base/percetto/OWNERS b/chromeos-base/percetto/OWNERS
new file mode 100644
index 0000000..f96abdd
--- /dev/null
+++ b/chromeos-base/percetto/OWNERS
@@ -0,0 +1,2 @@
+jbates@chromium.org
+olv@chromium.org
\ No newline at end of file
diff --git a/chromeos-base/percetto/percetto-0.1.5.ebuild b/chromeos-base/percetto/percetto-0.1.5.ebuild
new file mode 100644
index 0000000..74c0362
--- /dev/null
+++ b/chromeos-base/percetto/percetto-0.1.5.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit cros-debug meson
+
+DESCRIPTION="Percetto is a C wrapper for Perfetto SDK."
+HOMEPAGE="https://github.com/olvaffe/percetto"
+
+SRC_URI="https://github.com/olvaffe/percetto/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+KEYWORDS="*"
+LICENSE="Apache-2.0"
+SLOT="0"
+
+COMMON_DEPEND="
+	chromeos-base/perfetto:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+src_configure() {
+	# If not building with cros-debug, the SDK should be built with NDEBUG as
+	# well.
+	cros-debug-add-NDEBUG
+
+	local emesonargs=(
+		-Dperfetto-sdk="${SYSROOT}/usr/include/perfetto/"
+		-Dwerror=false
+	)
+	meson_src_configure
+}
diff --git a/chromeos-base/perfetto/Manifest b/chromeos-base/perfetto/Manifest
deleted file mode 100644
index 358dff1..0000000
--- a/chromeos-base/perfetto/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST perfetto-10.0_pre20201112.tar.gz 10303224 BLAKE2B 980a2d22f63bf0644e1deb6ddc8556d00afe18c7c18f867e64f01f20c9c88b3b682f8417404b1922603e60024550b4c6beaf510c9a70a5228c446b8a487b8d27 SHA512 3377d9ef06d141ad28cabdb816e2726bdfb9c1a39cf6013815bc2a736df0a7f1c2114c9260539c81908faf269d6e052ca179e8d9037bda975731e9fdbf52edf4
diff --git a/chromeos-base/perfetto/files/init/traced.conf b/chromeos-base/perfetto/files/init/traced.conf
index 1d30d77..75d4935 100644
--- a/chromeos-base/perfetto/files/init/traced.conf
+++ b/chromeos-base/perfetto/files/init/traced.conf
@@ -5,11 +5,14 @@
 description   "Starts perfetto system tracing service and probes"
 author        "chromium-os-dev@chromium.org"
 
-# Auto start of this job (and also job traced_probes that depends on this) is
-# disabled for the pending data privacy issue: trace collection across user
-# session boundaries reveals trace data of one user to another. Enable after
-# the issue is resolved.
-#start on started system-services
+# traced is the Perfetto tracing service daemon for collecting performance
+# trace of the system. The daemon provides service to entities that writes the
+# trace data (producers) and entities that controls trace collection and reads
+# collected trace data (consumers) through IPC channels and the entities are
+# isolated from each other. See https://perfetto.dev/docs/concepts/service-model
+# for more information about the service and http://go/crosetto-security
+# (internal doc) about the security design of this service.
+start on started system-services
 stop on stopping system-services
 
 expect fork
@@ -22,18 +25,12 @@
 # memory budget exceeds SUM(tracing buffers) + 32MB slack.
 limit as 900000000 unlimited
 
-# traced uses /run/perfetto as the base dir for the sockets.
+# This directory is created by tmpfiles.d/traced.conf.
 env PERFETTO_SOCK_DIR=/run/perfetto
 
 pre-start script
-  # Create empty /run/perfetto and transfer the ownership to traced. Also enable
-  # the sticky bit.
-  # Using -p here to allow tracing from services that start before traced and to
-  # allow tracing to continue after traced restarts without restarting other
-  # services.
-  mkdir -p "${PERFETTO_SOCK_DIR}"
+  # Remove socket files from earlier traced runs (if any).
   rm -rf "${PERFETTO_SOCK_DIR}"/*
-  chown traced:traced "${PERFETTO_SOCK_DIR}"
 end script
 
 # minijail0 args.
diff --git a/chromeos-base/perfetto/files/init/traced_probes.conf b/chromeos-base/perfetto/files/init/traced_probes.conf
index 04abf2a..e49dbb1 100644
--- a/chromeos-base/perfetto/files/init/traced_probes.conf
+++ b/chromeos-base/perfetto/files/init/traced_probes.conf
@@ -29,27 +29,36 @@
     -exec chgrp debugfs-access {} + -exec chmod g+w {} +
 end script
 
-# minijail0 args.
-# -u traced-probes -g traced-probes: run as user: traced-probes,
-#   group: traced-probes.
-# -G: Inherit supplementary groups from new uid.
-# -c 0: Grant no caps.
-# -i: fork immediately and don't block the startup.
-# -l: enter a new IPC namespace.
-# -e: enter a new network namespace.
-# --uts: enter a new UTS namespace.
-# traced_probes runs without -p because it needs to see the PID of the traced
-# processes.
-# -n: set no new_privs.
-# -b /sys: bind mount sysfs.
-# -b /sys/kernel/debug/tracing,/sys/kernel/tracing,1: bind mount tracefs to
-#   /sys/kernel/tracing so we don't need to enable debugfs in the sandbox.
-exec /sbin/minijail0 -u traced-probes -g traced-probes \
-  -G -c 0 -i -l -e --uts -n \
-  --profile=minimalistic-mountns -t \
-  -k 'tmpfs,/run,tmpfs,MS_NOSUID|MS_NODEV|MS_NOEXEC' \
-  -b "${PERFETTO_SOCK_DIR}",,1 \
-  -b /sys \
-  -b /sys/kernel/debug/tracing,/sys/kernel/tracing,1 \
-  -S /usr/share/policy/traced_probes.policy \
-  -- /usr/bin/traced_probes
+script
+  # Common mount flags for tmpfs.
+  mnt_flags="MS_NOSUID|MS_NODEV|MS_NOEXEC"
+  # Mount tmpfs at /sys/kernel/debug: traced_probes doesn't access debugfs.
+  # TODO(chinglinyu): use /sys/kernel/tracing and remove this tmpfs mount after
+  # kernels < v4.1 are no longer supported.
+  tracefs_mnt_args="-k tmpfs,/sys/kernel/debug,tmpfs,${mnt_flags}"
+  # Bind mount /sys/kernel/debug/tracing.
+  tracefs_mnt_args="${tracefs_mnt_args} -b /sys/kernel/debug/tracing,,1"
+  # minijail0 args.
+  # -u traced-probes -g traced-probes: run as user: traced-probes,
+  #   group: traced-probes.
+  # -G: Inherit supplementary groups from new uid.
+  # -c 0: Grant no caps.
+  # -i: fork immediately and don't block the startup.
+  # -l: enter a new IPC namespace.
+  # -e: enter a new network namespace.
+  # --uts: enter a new UTS namespace.
+  # traced_probes runs without -p because it needs to see the PID of the traced
+  # processes.
+  # -n: set no new_privs.
+  # -b /sys: bind mount sysfs.
+  # ${tracefs_mnt_args}: mount tracefs.
+  exec /sbin/minijail0 -u traced-probes -g traced-probes \
+    -G -c 0 -i -l -e --uts -n \
+    --profile=minimalistic-mountns -t \
+    -k "tmpfs,/run,tmpfs,${mnt_flags}" \
+    -b "${PERFETTO_SOCK_DIR}",,1 \
+    -b /sys \
+    ${tracefs_mnt_args} \
+    -S /usr/share/policy/traced_probes.policy \
+    -- /usr/bin/traced_probes
+end script
\ No newline at end of file
diff --git a/chromeos-base/perfetto/files/pkg-configs/perfetto.pc.in b/chromeos-base/perfetto/files/pkg-configs/perfetto.pc.in
new file mode 100644
index 0000000..8986f84
--- /dev/null
+++ b/chromeos-base/perfetto/files/pkg-configs/perfetto.pc.in
@@ -0,0 +1,13 @@
+prefix=/usr
+version=@version@
+libdir=${prefix}/@lib@
+includedir=${prefix}/include/perfetto
+
+Name: perfetto
+Description: The Perfetto Tracing SDK is a library that allows applications to \
+emit trace events and add more app-specific context to a Perfetto trace. Doc: \
+https://perfetto.dev
+
+Version: ${version}
+Libs: -L${libdir} -lperfetto_sdk -pthread
+Cflags: -I${includedir}
diff --git a/chromeos-base/perfetto/files/seccomp/traced-amd64.policy b/chromeos-base/perfetto/files/seccomp/traced-amd64.policy
index e554cf3..2896b64 100644
--- a/chromeos-base/perfetto/files/seccomp/traced-amd64.policy
+++ b/chromeos-base/perfetto/files/seccomp/traced-amd64.policy
@@ -25,6 +25,7 @@
 # x64
 stat: 1
 fstat: 1
+newfstatat: 1
 lstat: 1
 ftruncate: 1
 
diff --git a/chromeos-base/perfetto/files/seccomp/traced-arm.policy b/chromeos-base/perfetto/files/seccomp/traced-arm.policy
index 8d301d3..d82ef6a 100644
--- a/chromeos-base/perfetto/files/seccomp/traced-arm.policy
+++ b/chromeos-base/perfetto/files/seccomp/traced-arm.policy
@@ -3,11 +3,15 @@
 # found in the LICENSE file.
 
 clock_gettime: 1
+clock_gettime64: 1
 clock_getres: 1
+clock_getres_time64: 1
 clock_nanosleep: 1
+clock_nanosleep_time64: 1
 gettimeofday: 1
 nanosleep: 1
 ppoll: 1
+ppoll_time64: 1
 poll: 1
 
 # Opens /proc/self/stat
@@ -58,6 +62,7 @@
 getgid32: 1
 
 futex: 1
+futex_time64: 1
 exit: 1
 exit_group: 1
 # Allow signal to self.
@@ -89,6 +94,7 @@
 timer_create: 1
 timer_delete: 1
 timer_settime: 1
+timer_settime64: 1
 
 uname: 1
 # Remove the stale socket file.
diff --git a/chromeos-base/perfetto/files/seccomp/traced-arm64.policy b/chromeos-base/perfetto/files/seccomp/traced-arm64.policy
index 12f8bd1..7031646 100644
--- a/chromeos-base/perfetto/files/seccomp/traced-arm64.policy
+++ b/chromeos-base/perfetto/files/seccomp/traced-arm64.policy
@@ -18,12 +18,12 @@
 write: 1
 writev: 1
 readlinkat: 1
-lseek: 1
 fdatasync: 1
 vmsplice: 1
 
 statx: 1
 fstat: 1
+newfstatat: 1
 # lstat: 1 FIXME
 ftruncate: 1
 
@@ -91,5 +91,5 @@
 # Remove the stale socket file.
 unlinkat: 1
 # Need to set socket permissions.
-chown: 1
-chmod: 1
+fchownat: 1
+fchmodat: 1
diff --git a/chromeos-base/perfetto/files/seccomp/traced_probes-amd64.policy b/chromeos-base/perfetto/files/seccomp/traced_probes-amd64.policy
index 0af658b..9a765a2 100644
--- a/chromeos-base/perfetto/files/seccomp/traced_probes-amd64.policy
+++ b/chromeos-base/perfetto/files/seccomp/traced_probes-amd64.policy
@@ -22,6 +22,7 @@
 # x64
 stat: 1
 fstat: 1
+newfstatat: 1
 lstat: 1
 
 # Memory management system calls.
@@ -38,6 +39,7 @@
 getsockopt: 1
 # traced_probes only acts as a socket client.
 connect: 1
+shutdown: 1
 
 getpid: 1
 gettid: 1
@@ -73,3 +75,4 @@
 pread64: 1
 # Need to get directory entries.
 getdents: 1
+getdents64: 1
diff --git a/chromeos-base/perfetto/files/seccomp/traced_probes-arm.policy b/chromeos-base/perfetto/files/seccomp/traced_probes-arm.policy
index cbe7b14..e55bfef 100644
--- a/chromeos-base/perfetto/files/seccomp/traced_probes-arm.policy
+++ b/chromeos-base/perfetto/files/seccomp/traced_probes-arm.policy
@@ -3,11 +3,15 @@
 # found in the LICENSE file.
 
 clock_gettime: 1
+clock_gettime64: 1
 clock_getres: 1
+clock_getres_time64: 1
 clock_nanosleep: 1
+clock_nanosleep_time64: 1
 gettimeofday: 1
 nanosleep: 1
 ppoll: 1
+ppoll_time64: 1
 poll: 1
 
 openat: 1
@@ -45,6 +49,7 @@
 gettid: 1
 
 futex: 1
+futex_time64: 1
 exit: 1
 exit_group: 1
 # Allow signal to self.
@@ -71,6 +76,7 @@
 timer_delete: 1
 timer_create: 1
 timer_settime: 1
+timer_settime64: 1
 
 pread64: 1
 # Need to get directory entries.
diff --git a/chromeos-base/perfetto/files/tmpfiles.d/traced.conf b/chromeos-base/perfetto/files/tmpfiles.d/traced.conf
new file mode 100644
index 0000000..cb58ef6
--- /dev/null
+++ b/chromeos-base/perfetto/files/tmpfiles.d/traced.conf
@@ -0,0 +1,8 @@
+# Copyright 2021 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.
+
+# Type  Path  Mode  User  Group  Age  Arguments
+
+# traced uses this directory for producer/consumer sockets.
+d /run/perfetto 0755 traced traced
diff --git a/chromeos-base/perfetto/perfetto-10.0_pre20201112-r3.ebuild b/chromeos-base/perfetto/perfetto-10.0_pre20201112-r3.ebuild
deleted file mode 120000
index b693fa8..0000000
--- a/chromeos-base/perfetto/perfetto-10.0_pre20201112-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-perfetto-10.0_pre20201112.ebuild
\ No newline at end of file
diff --git a/chromeos-base/perfetto/perfetto-10.0_pre20201112.ebuild b/chromeos-base/perfetto/perfetto-10.0_pre20201112.ebuild
deleted file mode 100644
index 1c51e7d..0000000
--- a/chromeos-base/perfetto/perfetto-10.0_pre20201112.ebuild
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-inherit ninja-utils toolchain-funcs user
-
-DESCRIPTION="An open-source project for performance instrumentation and tracing."
-HOMEPAGE="https://perfetto.dev/"
-
-GIT_SHA1="53d3c085a784d64808cf67a32cac80182ecd87ef"
-SRC_URI="https://github.com/google/perfetto/archive/${GIT_SHA1}.tar.gz -> ${P}.tar.gz"
-
-KEYWORDS="*"
-IUSE="cros-debug"
-LICENSE="Apache-2.0"
-SLOT="0"
-
-# protobuf dep is for using protoc at build-time to generate perfetto's headers.
-BDEPEND="
-	dev-util/gn
-	dev-util/ninja
-	dev-libs/protobuf
-"
-BUILD_OUTPUT="${WORKDIR}/out_cros/"
-
-S="${WORKDIR}/${PN}-${GIT_SHA1}"
-
-src_configure() {
-	tc-export CC CXX AR BUILD_CC BUILD_CXX BUILD_AR
-	local target_cpu="${ARCH}"
-	# Make the "amd64" -> "x64" conversion for the GN arg |target_cpu|.
-	if [[ "${target_cpu}" == "amd64" ]]; then
-		target_cpu="x64"
-	fi
-
-	# Don't turn on is_debug in building the system tracing service daemon.
-	# Running a debug build traced with a release build producer will likely
-	# cause crashes.
-	local is_debug="false"
-
-	local warn_flags=(
-		"-Wno-suggest-destructor-override"
-		"-Wno-suggest-override"
-	)
-	# Specify the linker to be used, this will be invoked by
-	# perfetto build as link argument "-fuse-ld=<>" so it needs to be
-	# the linker name bfd/gold/lld etc. that clang/gcc understand.
-	local linker_name="bfd"
-	tc-ld-is-gold && linker_name="gold"
-	tc-ld-is-lld && linker_name="lld"
-
-	# Cross-compilation args.
-	GN_ARGS="
-is_system_compiler=true
-ar=\"${BUILD_AR}\"
-cc=\"${BUILD_CC}\"
-cxx=\"${BUILD_CXX}\"
-linker=\"${linker_name}\"
-target_ar=\"${AR}\"
-target_cc=\"${CC}\"
-target_cxx=\"${CXX}\"
-target_linker=\"${linker_name}\"
-target_cpu=\"${target_cpu}\"
-target_triplet=\"${CHOST}\"
-extra_target_cflags=\"${CFLAGS} ${warn_flags[*]}\"
-extra_target_cxxflags=\"${CXXFLAGS} ${warn_flags[*]}\"
-extra_target_ldflags=\"${LDFLAGS}\"
-"
-
-	# Extra args to make the targets build.
-	GN_ARGS+="
-is_debug=${is_debug}
-enable_perfetto_stderr_crash_dump=false
-enable_perfetto_trace_processor_json=false
-monolithic_binaries=true
-use_custom_libcxx=false
-is_hermetic_clang=false
-enable_perfetto_zlib=false
-skip_buildtools_check=true
-perfetto_use_system_protobuf=true
-enable_perfetto_version_gen=false
-"
-	einfo "GN_ARGS = ${GN_ARGS}"
-	gn gen "${BUILD_OUTPUT}" --args="${GN_ARGS}" || die
-}
-
-src_compile() {
-	eninja -C  "${BUILD_OUTPUT}" traced traced_probes perfetto
-}
-
-src_install() {
-	dobin "${BUILD_OUTPUT}/traced"
-	dobin "${BUILD_OUTPUT}/traced_probes"
-	dobin "${BUILD_OUTPUT}/perfetto"
-
-	insinto /etc/init
-	doins "${FILESDIR}/init/traced.conf"
-	doins "${FILESDIR}/init/traced_probes.conf"
-
-	insinto /usr/share/policy
-	newins "${FILESDIR}/seccomp/traced-${ARCH}.policy" traced.policy
-	newins "${FILESDIR}/seccomp/traced_probes-${ARCH}.policy" traced_probes.policy
-}
-
-pkg_preinst() {
-	enewuser "traced"
-	enewgroup "traced"
-	enewuser "traced-probes"
-	enewgroup "traced-probes"
-	enewgroup "traced-producer"
-	enewgroup "traced-consumer"
-}
diff --git a/chromeos-base/perfetto/perfetto-15.0-r3.ebuild b/chromeos-base/perfetto/perfetto-15.0-r3.ebuild
new file mode 100644
index 0000000..f89390f
--- /dev/null
+++ b/chromeos-base/perfetto/perfetto-15.0-r3.ebuild
@@ -0,0 +1,164 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="2f35d6fd1fc0e4c68e1e5188dab0de173de724c8"
+CROS_WORKON_TREE="b247aba769f84322900406f9d373e8d7856cf6e0"
+inherit cros-constants
+
+# This ebuild is upreved via PuPR, so disable the normal uprev process for
+# cros-workon ebuilds.
+CROS_WORKON_MANUAL_UPREV=1
+CROS_WORKON_LOCALNAME="aosp/external/perfetto"
+CROS_WORKON_PROJECT="platform/external/perfetto"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+CROS_WORKON_EGIT_BRANCH="master"
+
+inherit cros-workon ninja-utils tmpfiles toolchain-funcs user
+
+DESCRIPTION="An open-source project for performance instrumentation and tracing."
+HOMEPAGE="https://perfetto.dev/"
+
+KEYWORDS="*"
+IUSE="cros-debug"
+LICENSE="Apache-2.0"
+SLOT="0"
+
+# protobuf dep is for using protoc at build-time to generate perfetto's headers.
+BDEPEND="
+	dev-util/gn
+	dev-util/ninja
+	dev-libs/protobuf
+"
+BUILD_OUTPUT="${WORKDIR}/out_cros/"
+
+src_configure() {
+	tc-export CC CXX AR BUILD_CC BUILD_CXX BUILD_AR
+	local target_cpu="${ARCH}"
+	# Make the "amd64" -> "x64" conversion for the GN arg |target_cpu|.
+	if [[ "${target_cpu}" == "amd64" ]]; then
+		target_cpu="x64"
+	fi
+
+	# Don't turn on is_debug in building the system tracing service daemon.
+	# Running a debug build traced with a release build producer will likely
+	# cause crashes.
+	local is_debug="false"
+
+	local warn_flags=(
+		"-Wno-suggest-destructor-override"
+		"-Wno-suggest-override"
+	)
+	# Specify the linker to be used, this will be invoked by
+	# perfetto build as link argument "-fuse-ld=<>" so it needs to be
+	# the linker name bfd/gold/lld etc. that clang/gcc understand.
+	local linker_name="bfd"
+	tc-ld-is-gold && linker_name="gold"
+	tc-ld-is-lld && linker_name="lld"
+
+	# Cross-compilation args.
+	GN_ARGS="
+is_system_compiler=true
+ar=\"${BUILD_AR}\"
+cc=\"${BUILD_CC}\"
+cxx=\"${BUILD_CXX}\"
+linker=\"${linker_name}\"
+target_ar=\"${AR}\"
+target_cc=\"${CC}\"
+target_cxx=\"${CXX}\"
+target_linker=\"${linker_name}\"
+target_cpu=\"${target_cpu}\"
+target_triplet=\"${CHOST}\"
+extra_target_cflags=\"${CFLAGS} ${warn_flags[*]}\"
+extra_target_cxxflags=\"${CXXFLAGS} ${warn_flags[*]}\"
+extra_target_ldflags=\"${LDFLAGS}\"
+"
+
+	# Extra args to make the targets build.
+	GN_ARGS+="
+is_debug=${is_debug}
+enable_perfetto_stderr_crash_dump=false
+enable_perfetto_trace_processor_json=false
+monolithic_binaries=true
+use_custom_libcxx=false
+is_hermetic_clang=false
+enable_perfetto_zlib=false
+skip_buildtools_check=true
+perfetto_use_system_protobuf=true
+enable_perfetto_version_gen=false
+"
+	einfo "GN_ARGS = ${GN_ARGS}"
+	gn gen "${BUILD_OUTPUT}" --args="${GN_ARGS}" || die
+}
+
+src_compile() {
+	eninja -C  "${BUILD_OUTPUT}" traced traced_probes perfetto
+
+	# Check the existence of the sdk/ directory before building the sdk static
+	# library, as only the release branches contains the sdk sources to be used.
+	if [[ -d "${S}/sdk" ]]; then
+		# If not building with cros-debug, the SDK should be built with NDEBUG as
+		# well.
+		use cros-debug || append-cxxflags -DNDEBUG
+
+		(set -x; $(tc-getCXX) ${CXXFLAGS} -Wall -Werror -c -pthread -fPIC \
+			"${S}/sdk/perfetto.cc" -o sdk/perfetto.o) || die
+		(set -x; ${AR} rvsc sdk/libperfetto_sdk.a sdk/perfetto.o) || die
+	else
+		if [[ ${PV} == 9999 ]]; then
+			ewarn "Skip the sdk library as directory perfetto/sdk doesn't exist."
+		else
+			die "The Perfetto SDK doesn't exist."
+		fi
+	fi
+}
+
+src_install() {
+	dobin "${BUILD_OUTPUT}/traced"
+	dobin "${BUILD_OUTPUT}/traced_probes"
+	dobin "${BUILD_OUTPUT}/perfetto"
+
+	dotmpfiles "${FILESDIR}/tmpfiles.d/traced.conf"
+
+	insinto /etc/init
+	doins "${FILESDIR}/init/traced.conf"
+	doins "${FILESDIR}/init/traced_probes.conf"
+
+	insinto /usr/share/policy
+	newins "${FILESDIR}/seccomp/traced-${ARCH}.policy" traced.policy
+	newins "${FILESDIR}/seccomp/traced_probes-${ARCH}.policy" traced_probes.policy
+
+	if [[ -d "${S}/sdk" ]]; then
+		insinto /usr/include/perfetto
+		# Both source and lib are provided for convenience.
+		doins "${S}/sdk/perfetto.cc"
+		doins "${S}/sdk/perfetto.h"
+		dolib.a "${S}/sdk/libperfetto_sdk.a"
+
+		insinto "/usr/$(get_libdir)/pkgconfig"
+		local v=$("${S}/tools/write_version_header.py" --stdout)
+		sed \
+			-e "s/@version@/${v}/g" \
+			-e "s/@lib@/$(get_libdir)/g" \
+			"${FILESDIR}/pkg-configs/perfetto.pc.in" > "${S}/sdk/perfetto.pc" \
+			|| die
+		doins "${S}/sdk/perfetto.pc"
+	fi
+
+	insinto /usr/include/perfetto
+	doins -r include/perfetto
+	insinto /usr/include/perfetto/protos
+	doins -r "${BUILD_OUTPUT}/gen/protos/perfetto"
+	insinto /usr/include/perfetto/perfetto/base
+	doins "${BUILD_OUTPUT}/gen/build_config/perfetto_build_flags.h"
+}
+
+pkg_preinst() {
+	enewuser "traced"
+	enewgroup "traced"
+	enewuser "traced-probes"
+	enewgroup "traced-probes"
+	enewgroup "traced-producer"
+	enewgroup "traced-consumer"
+}
diff --git a/chromeos-base/perfetto/perfetto-9999.ebuild b/chromeos-base/perfetto/perfetto-9999.ebuild
new file mode 100644
index 0000000..87e62e2
--- /dev/null
+++ b/chromeos-base/perfetto/perfetto-9999.ebuild
@@ -0,0 +1,162 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cros-constants
+
+# This ebuild is upreved via PuPR, so disable the normal uprev process for
+# cros-workon ebuilds.
+CROS_WORKON_MANUAL_UPREV=1
+CROS_WORKON_LOCALNAME="aosp/external/perfetto"
+CROS_WORKON_PROJECT="platform/external/perfetto"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+CROS_WORKON_EGIT_BRANCH="master"
+
+inherit cros-workon ninja-utils tmpfiles toolchain-funcs user
+
+DESCRIPTION="An open-source project for performance instrumentation and tracing."
+HOMEPAGE="https://perfetto.dev/"
+
+KEYWORDS="~*"
+IUSE="cros-debug"
+LICENSE="Apache-2.0"
+SLOT="0"
+
+# protobuf dep is for using protoc at build-time to generate perfetto's headers.
+BDEPEND="
+	dev-util/gn
+	dev-util/ninja
+	dev-libs/protobuf
+"
+BUILD_OUTPUT="${WORKDIR}/out_cros/"
+
+src_configure() {
+	tc-export CC CXX AR BUILD_CC BUILD_CXX BUILD_AR
+	local target_cpu="${ARCH}"
+	# Make the "amd64" -> "x64" conversion for the GN arg |target_cpu|.
+	if [[ "${target_cpu}" == "amd64" ]]; then
+		target_cpu="x64"
+	fi
+
+	# Don't turn on is_debug in building the system tracing service daemon.
+	# Running a debug build traced with a release build producer will likely
+	# cause crashes.
+	local is_debug="false"
+
+	local warn_flags=(
+		"-Wno-suggest-destructor-override"
+		"-Wno-suggest-override"
+	)
+	# Specify the linker to be used, this will be invoked by
+	# perfetto build as link argument "-fuse-ld=<>" so it needs to be
+	# the linker name bfd/gold/lld etc. that clang/gcc understand.
+	local linker_name="bfd"
+	tc-ld-is-gold && linker_name="gold"
+	tc-ld-is-lld && linker_name="lld"
+
+	# Cross-compilation args.
+	GN_ARGS="
+is_system_compiler=true
+ar=\"${BUILD_AR}\"
+cc=\"${BUILD_CC}\"
+cxx=\"${BUILD_CXX}\"
+linker=\"${linker_name}\"
+target_ar=\"${AR}\"
+target_cc=\"${CC}\"
+target_cxx=\"${CXX}\"
+target_linker=\"${linker_name}\"
+target_cpu=\"${target_cpu}\"
+target_triplet=\"${CHOST}\"
+extra_target_cflags=\"${CFLAGS} ${warn_flags[*]}\"
+extra_target_cxxflags=\"${CXXFLAGS} ${warn_flags[*]}\"
+extra_target_ldflags=\"${LDFLAGS}\"
+"
+
+	# Extra args to make the targets build.
+	GN_ARGS+="
+is_debug=${is_debug}
+enable_perfetto_stderr_crash_dump=false
+enable_perfetto_trace_processor_json=false
+monolithic_binaries=true
+use_custom_libcxx=false
+is_hermetic_clang=false
+enable_perfetto_zlib=false
+skip_buildtools_check=true
+perfetto_use_system_protobuf=true
+enable_perfetto_version_gen=false
+"
+	einfo "GN_ARGS = ${GN_ARGS}"
+	gn gen "${BUILD_OUTPUT}" --args="${GN_ARGS}" || die
+}
+
+src_compile() {
+	eninja -C  "${BUILD_OUTPUT}" traced traced_probes perfetto
+
+	# Check the existence of the sdk/ directory before building the sdk static
+	# library, as only the release branches contains the sdk sources to be used.
+	if [[ -d "${S}/sdk" ]]; then
+		# If not building with cros-debug, the SDK should be built with NDEBUG as
+		# well.
+		use cros-debug || append-cxxflags -DNDEBUG
+
+		(set -x; $(tc-getCXX) ${CXXFLAGS} -Wall -Werror -c -pthread -fPIC \
+			"${S}/sdk/perfetto.cc" -o sdk/perfetto.o) || die
+		(set -x; ${AR} rvsc sdk/libperfetto_sdk.a sdk/perfetto.o) || die
+	else
+		if [[ ${PV} == 9999 ]]; then
+			ewarn "Skip the sdk library as directory perfetto/sdk doesn't exist."
+		else
+			die "The Perfetto SDK doesn't exist."
+		fi
+	fi
+}
+
+src_install() {
+	dobin "${BUILD_OUTPUT}/traced"
+	dobin "${BUILD_OUTPUT}/traced_probes"
+	dobin "${BUILD_OUTPUT}/perfetto"
+
+	dotmpfiles "${FILESDIR}/tmpfiles.d/traced.conf"
+
+	insinto /etc/init
+	doins "${FILESDIR}/init/traced.conf"
+	doins "${FILESDIR}/init/traced_probes.conf"
+
+	insinto /usr/share/policy
+	newins "${FILESDIR}/seccomp/traced-${ARCH}.policy" traced.policy
+	newins "${FILESDIR}/seccomp/traced_probes-${ARCH}.policy" traced_probes.policy
+
+	if [[ -d "${S}/sdk" ]]; then
+		insinto /usr/include/perfetto
+		# Both source and lib are provided for convenience.
+		doins "${S}/sdk/perfetto.cc"
+		doins "${S}/sdk/perfetto.h"
+		dolib.a "${S}/sdk/libperfetto_sdk.a"
+
+		insinto "/usr/$(get_libdir)/pkgconfig"
+		local v=$("${S}/tools/write_version_header.py" --stdout)
+		sed \
+			-e "s/@version@/${v}/g" \
+			-e "s/@lib@/$(get_libdir)/g" \
+			"${FILESDIR}/pkg-configs/perfetto.pc.in" > "${S}/sdk/perfetto.pc" \
+			|| die
+		doins "${S}/sdk/perfetto.pc"
+	fi
+
+	insinto /usr/include/perfetto
+	doins -r include/perfetto
+	insinto /usr/include/perfetto/protos
+	doins -r "${BUILD_OUTPUT}/gen/protos/perfetto"
+	insinto /usr/include/perfetto/perfetto/base
+	doins "${BUILD_OUTPUT}/gen/build_config/perfetto_build_flags.h"
+}
+
+pkg_preinst() {
+	enewuser "traced"
+	enewgroup "traced"
+	enewuser "traced-probes"
+	enewgroup "traced-probes"
+	enewgroup "traced-producer"
+	enewgroup "traced-consumer"
+}
diff --git a/chromeos-base/perfetto_proto/OWNERS b/chromeos-base/perfetto_proto/OWNERS
new file mode 100644
index 0000000..83301cd
--- /dev/null
+++ b/chromeos-base/perfetto_proto/OWNERS
@@ -0,0 +1,2 @@
+chenghaoyang@chromium.org
+chinglinyu@chromium.org
diff --git a/chromeos-base/perfetto_proto/files/BUILD.gn b/chromeos-base/perfetto_proto/files/BUILD.gn
new file mode 100644
index 0000000..0d40bd2f
--- /dev/null
+++ b/chromeos-base/perfetto_proto/files/BUILD.gn
@@ -0,0 +1,15 @@
+# Copyright 2021 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.
+
+import("//common-mk/proto_library.gni")
+
+group("all") {
+  deps = [ ":trace_processor-goprotos" ]
+}
+
+goproto_library("trace_processor-goprotos") {
+  proto_in_dir = "../aosp/external/perfetto/protos/perfetto/metrics"
+  proto_out_dir = "go/src/chromiumos/perfetto/trace_processor"
+  sources = [ "${proto_in_dir}/perfetto_merged_metrics.proto" ]
+}
diff --git a/chromeos-base/perfetto_proto/perfetto_proto-15.0-r37.ebuild b/chromeos-base/perfetto_proto/perfetto_proto-15.0-r37.ebuild
new file mode 100644
index 0000000..e5013e3
--- /dev/null
+++ b/chromeos-base/perfetto_proto/perfetto_proto-15.0-r37.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("12d86fcd388d39eac1fb23988a2bc54d67cf09c7" "62a3049e9dbdaccda5cf7bce82bf7991cec9d371")
+CROS_WORKON_TREE=("984c6b95246a821639541839c2029754912f2849" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_GO_PACKAGES=(
+	"chromiumos/perfetto/trace_processor/..."
+)
+
+inherit cros-constants
+
+CROS_WORKON_LOCALNAME=("aosp/external/perfetto" "platform2")
+CROS_WORKON_PROJECT=("platform/external/perfetto" "chromiumos/platform2")
+CROS_WORKON_REPO=("${CROS_GIT_AOSP_URL}" "${CROS_GIT_HOST_URL}")
+CROS_WORKON_DESTDIR=("${S}/aosp/external/perfetto" "${S}/platform2")
+CROS_WORKON_EGIT_BRANCH=("master" "main")
+CROS_WORKON_SUBTREE=("" "common-mk .gn")
+
+PLATFORM_SUBDIR="./"
+
+inherit cros-go cros-workon platform
+
+DESCRIPTION="Perfetto go proto for Chrome OS"
+HOMEPAGE="https://android.googlesource.com/platform/external/perfetto/+/refs/tags/v15.0/protos/perfetto/metrics/android/"
+
+KEYWORDS="*"
+IUSE="cros-debug"
+LICENSE="Apache-2.0"
+SLOT="0"
+
+# protobuf dep is for using protoc at build-time to generate perfetto's headers.
+BDEPEND="
+	dev-go/protobuf
+"
+
+src_unpack() {
+	platform_src_unpack
+	CROS_GO_WORKSPACE="${OUT}/gen/go"
+}
+
+src_prepare() {
+	default
+	cp "${FILESDIR}/BUILD.gn" "${S}"
+}
+
+src_install() {
+	cros-go_src_install
+}
diff --git a/chromeos-base/perfetto_proto/perfetto_proto-9999.ebuild b/chromeos-base/perfetto_proto/perfetto_proto-9999.ebuild
new file mode 100644
index 0000000..4b32448
--- /dev/null
+++ b/chromeos-base/perfetto_proto/perfetto_proto-9999.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_GO_PACKAGES=(
+	"chromiumos/perfetto/trace_processor/..."
+)
+
+inherit cros-constants
+
+CROS_WORKON_LOCALNAME=("aosp/external/perfetto" "platform2")
+CROS_WORKON_PROJECT=("platform/external/perfetto" "chromiumos/platform2")
+CROS_WORKON_REPO=("${CROS_GIT_AOSP_URL}" "${CROS_GIT_HOST_URL}")
+CROS_WORKON_DESTDIR=("${S}/aosp/external/perfetto" "${S}/platform2")
+CROS_WORKON_EGIT_BRANCH=("master" "main")
+CROS_WORKON_SUBTREE=("" "common-mk .gn")
+
+PLATFORM_SUBDIR="./"
+
+inherit cros-go cros-workon platform
+
+DESCRIPTION="Perfetto go proto for Chrome OS"
+HOMEPAGE="https://android.googlesource.com/platform/external/perfetto/+/refs/tags/v15.0/protos/perfetto/metrics/android/"
+
+KEYWORDS="~*"
+IUSE="cros-debug"
+LICENSE="Apache-2.0"
+SLOT="0"
+
+# protobuf dep is for using protoc at build-time to generate perfetto's headers.
+BDEPEND="
+	dev-go/protobuf
+"
+
+src_unpack() {
+	platform_src_unpack
+	CROS_GO_WORKSPACE="${OUT}/gen/go"
+}
+
+src_prepare() {
+	default
+	cp "${FILESDIR}/BUILD.gn" "${S}"
+}
+
+src_install() {
+	cros-go_src_install
+}
diff --git a/chromeos-base/perfetto_simple_producer/OWNERS b/chromeos-base/perfetto_simple_producer/OWNERS
new file mode 100644
index 0000000..59fdc78
--- /dev/null
+++ b/chromeos-base/perfetto_simple_producer/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/perfetto_simple_producer/OWNERS
diff --git a/chromeos-base/perfetto_simple_producer/perfetto_simple_producer-0.0.1-r22.ebuild b/chromeos-base/perfetto_simple_producer/perfetto_simple_producer-0.0.1-r22.ebuild
new file mode 100644
index 0000000..aa83d54
--- /dev/null
+++ b/chromeos-base/perfetto_simple_producer/perfetto_simple_producer-0.0.1-r22.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="c410642f8f3b60fa0a327cbcf7a9ec3d1a8a6b76"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "651dd9220b7c1753d9be19d970253a5b5efee7de" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk perfetto_simple_producer .gn"
+
+IUSE="cros-debug"
+
+PLATFORM_SUBDIR="perfetto_simple_producer"
+
+inherit cros-workon platform
+
+DESCRIPTION="Simple Producer of Perfetto for Chromium OS."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/perfetto_simple_producer"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+DEPEND="
+	chromeos-base/perfetto:="
+
+src_install() {
+	dobin "${OUT}"/perfetto_simple_producer
+}
diff --git a/chromeos-base/perfetto_simple_producer/perfetto_simple_producer-9999.ebuild b/chromeos-base/perfetto_simple_producer/perfetto_simple_producer-9999.ebuild
new file mode 100644
index 0000000..6c5d274
--- /dev/null
+++ b/chromeos-base/perfetto_simple_producer/perfetto_simple_producer-9999.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk perfetto_simple_producer .gn"
+
+IUSE="cros-debug"
+
+PLATFORM_SUBDIR="perfetto_simple_producer"
+
+inherit cros-workon platform
+
+DESCRIPTION="Simple Producer of Perfetto for Chromium OS."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/perfetto_simple_producer"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+
+DEPEND="
+	chromeos-base/perfetto:="
+
+src_install() {
+	dobin "${OUT}"/perfetto_simple_producer
+}
diff --git a/chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r1851.ebuild b/chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r1851.ebuild
deleted file mode 100644
index 2bbea70..0000000
--- a/chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r1851.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "c5711e94f1e2955d244a0532a8f4026f478c9eaf" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="permission_broker/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="Permission Broker DBus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/"
-
-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.
-DEPEND="
-	cros_host? ( chromeos-base/chromeos-dbus-bindings:= )
-"
-
-src_install() {
-	# Install DBus client library.
-	platform_install_dbus_client_lib "permission_broker"
-}
diff --git a/chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r1885.ebuild b/chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r1885.ebuild
new file mode 100644
index 0000000..d748cbe
--- /dev/null
+++ b/chromeos-base/permission_broker-client/permission_broker-client-0.0.1-r1885.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="5e27a24b2ce6909804fce92819b7f9752ad47565"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a43dee1645ab3169cf3c0d94a0d83cf4492ec75b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="permission_broker/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="Permission Broker DBus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/"
+
+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.
+DEPEND="
+	cros_host? ( chromeos-base/chromeos-dbus-bindings:= )
+"
+
+src_install() {
+	# Install DBus client library.
+	platform_install_dbus_client_lib "permission_broker"
+}
diff --git a/chromeos-base/permission_broker/permission_broker-0.0.1-r3103.ebuild b/chromeos-base/permission_broker/permission_broker-0.0.1-r3103.ebuild
deleted file mode 100644
index 76e865a..0000000
--- a/chromeos-base/permission_broker/permission_broker-0.0.1-r3103.ebuild
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "c5711e94f1e2955d244a0532a8f4026f478c9eaf" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="${PN}"
-
-inherit cros-workon platform udev user
-
-DESCRIPTION="Permission Broker for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="cfm_enabled_device fuzzer"
-
-COMMMON_DEPEND="
-	chromeos-base/patchpanel-client:=
-	sys-apps/dbus:=
-	virtual/libusb:1
-	virtual/udev
-"
-
-RDEPEND="${COMMMON_DEPEND}"
-DEPEND="${COMMMON_DEPEND}
-	chromeos-base/system_api:=[fuzzer?]
-	sys-kernel/linux-headers:=
-"
-
-src_install() {
-	dobin "${OUT}"/permission_broker
-
-	# Install upstart configuration
-	insinto /etc/init
-	doins permission_broker.conf
-
-	# DBus configuration
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.PermissionBroker.conf
-
-	# Udev rules for hidraw nodes
-	udev_dorules "${FILESDIR}/99-hidraw.rules"
-
-	# Fuzzer.
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/port_tracker_fuzzer
-}
-
-platform_pkg_test() {
-	local tests=(
-		permission_broker_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
-
-pkg_preinst() {
-	enewuser "devbroker"
-	enewgroup "devbroker"
-}
diff --git a/chromeos-base/permission_broker/permission_broker-0.0.1-r3137.ebuild b/chromeos-base/permission_broker/permission_broker-0.0.1-r3137.ebuild
new file mode 100644
index 0000000..9285ff6
--- /dev/null
+++ b/chromeos-base/permission_broker/permission_broker-0.0.1-r3137.ebuild
@@ -0,0 +1,71 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="5e27a24b2ce6909804fce92819b7f9752ad47565"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a43dee1645ab3169cf3c0d94a0d83cf4492ec75b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="${PN}"
+
+inherit cros-workon platform udev user
+
+DESCRIPTION="Permission Broker for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cfm_enabled_device fuzzer"
+
+COMMMON_DEPEND="
+	chromeos-base/patchpanel-client:=
+	sys-apps/dbus:=
+	virtual/libusb:1
+	virtual/udev
+"
+
+RDEPEND="${COMMMON_DEPEND}"
+DEPEND="${COMMMON_DEPEND}
+	chromeos-base/system_api:=[fuzzer?]
+	sys-kernel/linux-headers:=
+"
+
+src_install() {
+	dobin "${OUT}"/permission_broker
+
+	# Install upstart configuration
+	insinto /etc/init
+	doins permission_broker.conf
+
+	# DBus configuration
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.PermissionBroker.conf
+
+	# Udev rules for hidraw nodes
+	udev_dorules "${FILESDIR}/99-hidraw.rules"
+
+	# Fuzzer.
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/port_tracker_fuzzer
+}
+
+platform_pkg_test() {
+	local tests=(
+		permission_broker_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
+
+pkg_preinst() {
+	enewuser "devbroker"
+	enewgroup "devbroker"
+}
diff --git a/chromeos-base/pixart_tpfwup/OWNERS b/chromeos-base/pixart_tpfwup/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/pixart_tpfwup/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r183.ebuild b/chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r183.ebuild
deleted file mode 100644
index f183019..0000000
--- a/chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r183.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "f6e985347a838bbbdd2997e97c4b4940571f2dd2" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_GO_PACKAGES=(
-	"chromiumos/policy/..."
-)
-
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk policy_proto .gn"
-
-PLATFORM_SUBDIR="policy_proto"
-
-inherit cros-go cros-workon platform
-
-DESCRIPTION="Chrome OS policy protocol buffer binding for go"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/policy_proto"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-DEPEND="
-	>=chromeos-base/protofiles-0.0.39:=
-	dev-go/protobuf:=
-	dev-libs/protobuf:=
-"
-
-src_install() {
-	cros-go_src_install
-}
-
-src_unpack() {
-	platform_src_unpack
-	CROS_GO_WORKSPACE="${OUT}/gen/go"
-}
diff --git a/chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r209.ebuild b/chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r209.ebuild
new file mode 100644
index 0000000..fa3db64
--- /dev/null
+++ b/chromeos-base/policy-go-proto/policy-go-proto-0.0.1-r209.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "f6e985347a838bbbdd2997e97c4b4940571f2dd2" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_GO_PACKAGES=(
+	"chromiumos/policy/..."
+)
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk policy_proto .gn"
+
+PLATFORM_SUBDIR="policy_proto"
+
+inherit cros-go cros-workon platform
+
+DESCRIPTION="Chrome OS policy protocol buffer binding for go"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/policy_proto"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+DEPEND="
+	>=chromeos-base/protofiles-0.0.44:=
+	dev-go/protobuf:=
+	dev-libs/protobuf:=
+"
+
+src_install() {
+	cros-go_src_install
+}
+
+src_unpack() {
+	platform_src_unpack
+	CROS_GO_WORKSPACE="${OUT}/gen/go"
+}
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 835a1e5..d0468bc 100644
--- a/chromeos-base/policy-go-proto/policy-go-proto-9999.ebuild
+++ b/chromeos-base/policy-go-proto/policy-go-proto-9999.ebuild
@@ -23,7 +23,7 @@
 KEYWORDS="~*"
 
 DEPEND="
-	>=chromeos-base/protofiles-0.0.39:=
+	>=chromeos-base/protofiles-0.0.44:=
 	dev-go/protobuf:=
 	dev-libs/protobuf:=
 "
diff --git a/chromeos-base/policy-testserver/policy-testserver-0.0.1-r6.ebuild b/chromeos-base/policy-testserver/policy-testserver-0.0.1-r9.ebuild
similarity index 100%
rename from chromeos-base/policy-testserver/policy-testserver-0.0.1-r6.ebuild
rename to chromeos-base/policy-testserver/policy-testserver-0.0.1-r9.ebuild
diff --git a/chromeos-base/policy-testserver/policy-testserver-0.0.1.ebuild b/chromeos-base/policy-testserver/policy-testserver-0.0.1.ebuild
index 210a5bf..8e5b2ad 100644
--- a/chromeos-base/policy-testserver/policy-testserver-0.0.1.ebuild
+++ b/chromeos-base/policy-testserver/policy-testserver-0.0.1.ebuild
@@ -21,7 +21,18 @@
 
 	"components/policy"
 	"${CROS_GIT_HOST_URL}/chromium/src/components/policy.git"
-	"80ecffd9093caa604b348bef86f6fb692d188e2c"
+	"d41300e697b4fe812cb37f4655b059bcc71ad78a"
+
+	# private_membership and shell_encryption are not used in Chrome OS at
+	# the moment. They are just required to compile the proto files. An
+	# uprev will only be necessary if the respective proto files change.
+	"private_membership"
+	"${CROS_GIT_HOST_URL}/chromium/src/third_party/private_membership.git"
+	"fa5d439ccfcb5813ef9d5aa7b66299e6d24a62da"
+
+	"shell_encryption"
+	"${CROS_GIT_HOST_URL}/chromium/src/third_party/shell-encryption.git"
+	"4b66a57bf81ff88fb94113426f2f4ffbbd66cb95"
 )
 
 DESCRIPTION="Dependencies needed by the policy_testserver"
@@ -31,6 +42,9 @@
 
 POLICY_DIR="${S}/components/policy"
 
+PRIVATE_MEMBERSHIP_DIR="${S}/private_membership/src"
+SHELL_ENCRYPTION_DIR="${S}/shell_encryption/src"
+
 # Destination on DUT is /usr/local/share/policy_testserver.
 TESTSERVER_DIR="/usr/share/policy_testserver"
 
@@ -65,11 +79,17 @@
 		|| die
 
 	# Create Python bindings needed for policy_testserver.py.
-	protoc --proto_path="${POLICY_DIR}/proto" --python_out="${WORKDIR}" \
+	protoc --proto_path="${POLICY_DIR}/proto" \
+		--proto_path="${PRIVATE_MEMBERSHIP_DIR}"\
+		--proto_path="${SHELL_ENCRYPTION_DIR}"\
+		--python_out="${WORKDIR}" \
 		"${POLICY_DIR}/proto/chrome_device_policy.proto" \
 		"${POLICY_DIR}/proto/device_management_backend.proto" \
 		"${POLICY_DIR}/proto/chrome_extension_policy.proto" \
 		"${POLICY_DIR}/proto/policy_common_definitions.proto" \
+		"${PRIVATE_MEMBERSHIP_DIR}/private_membership_rlwe.proto" \
+		"${PRIVATE_MEMBERSHIP_DIR}/private_membership.proto" \
+		"${SHELL_ENCRYPTION_DIR}/serialization.proto" \
 		|| die
 	protoc --proto_path="${WORKDIR}" --proto_path="${POLICY_DIR}/proto" \
 		--python_out="${WORKDIR}" \
@@ -90,4 +110,7 @@
 	doins "${WORKDIR}/chrome_extension_policy_pb2.py"
 	doins "${WORKDIR}/policy_common_definitions_pb2.py"
 	doins "${WORKDIR}/cloud_policy_pb2.py"
+	doins "${WORKDIR}/private_membership_rlwe_pb2.py"
+	doins "${WORKDIR}/private_membership_pb2.py"
+	doins "${WORKDIR}/serialization_pb2.py"
 }
diff --git a/chromeos-base/policy_utils/policy_utils-0.0.1-r185.ebuild b/chromeos-base/policy_utils/policy_utils-0.0.1-r185.ebuild
deleted file mode 100644
index 4776fb9..0000000
--- a/chromeos-base/policy_utils/policy_utils-0.0.1-r185.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "810726bd67b063c208f3b11b6078df471e15d38e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="common-mk policy_utils .gn"
-
-PLATFORM_SUBDIR="policy_utils"
-
-inherit cros-workon platform
-
-DESCRIPTION="Device-policy-management library and tool for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/policy_utils/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-COMMON_DEPEND="
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/system_api
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-"
-
-src_install() {
-	dosbin "${OUT}/policy"
-}
-
-platform_pkg_test() {
-	local tests=(
-		libmgmt_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/policy_utils/policy_utils-0.0.1-r212.ebuild b/chromeos-base/policy_utils/policy_utils-0.0.1-r212.ebuild
new file mode 100644
index 0000000..26407f2
--- /dev/null
+++ b/chromeos-base/policy_utils/policy_utils-0.0.1-r212.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "bf58ace8c926195d4bb88f6341df4c0acccfd003" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="common-mk policy_utils .gn"
+
+PLATFORM_SUBDIR="policy_utils"
+
+inherit cros-workon platform
+
+DESCRIPTION="Device-policy-management library and tool for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/policy_utils/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+"
+
+src_install() {
+	dosbin "${OUT}/policy"
+}
+
+platform_pkg_test() {
+	local tests=(
+		libmgmt_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/power_manager-client/power_manager-client-0.0.1-r2055.ebuild b/chromeos-base/power_manager-client/power_manager-client-0.0.1-r2055.ebuild
deleted file mode 100644
index 3f6a90c..0000000
--- a/chromeos-base/power_manager-client/power_manager-client-0.0.1-r2055.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="a643fd773cf6ad93eb8bc66162c0fc56d7a7e406"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "f89d62f067e47fc70b2a70153729f6d4e5067414" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk power_manager .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="power_manager/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="Power manager DBus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/power_manager/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="cros_host"
-
-DEPEND=""
-RDEPEND=""
-
-BDEPEND="
-	chromeos-base/chromeos-dbus-bindings:=
-"
-
-src_install() {
-	# Install DBus client library.
-	platform_install_dbus_client_lib "power_manager"
-}
diff --git a/chromeos-base/power_manager-client/power_manager-client-0.0.1-r2138.ebuild b/chromeos-base/power_manager-client/power_manager-client-0.0.1-r2138.ebuild
new file mode 100644
index 0000000..ce2d469
--- /dev/null
+++ b/chromeos-base/power_manager-client/power_manager-client-0.0.1-r2138.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="bc0dd38e943097b1788d08f7b76ff4167c1d0efd"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "71cce620cf464ad17334cff4d450f8805cd6c507" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk power_manager .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="power_manager/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="Power manager DBus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/power_manager/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cros_host"
+
+DEPEND=""
+RDEPEND=""
+
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
+"
+
+src_install() {
+	# Install DBus client library.
+	platform_install_dbus_client_lib "power_manager"
+}
diff --git a/chromeos-base/power_manager/power_manager-0.0.2-r3634.ebuild b/chromeos-base/power_manager/power_manager-0.0.2-r3634.ebuild
deleted file mode 100644
index 4b84781..0000000
--- a/chromeos-base/power_manager/power_manager-0.0.2-r3634.ebuild
+++ /dev/null
@@ -1,189 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="5251066fa4f265c3a7bbb7d1f1bb17233f43eaaf"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "da25eefd3c0c9f59c7ef606fbc9c4ac8dacf0228" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "f89d62f067e47fc70b2a70153729f6d4e5067414" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 buffet chromeos-config metrics power_manager .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="power_manager"
-
-inherit cros-workon platform systemd udev user
-
-DESCRIPTION="Power Manager for Chromium OS"
-HOMEPAGE="http://dev.chromium.org/chromium-os/packages/power_manager"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="-als buffet +cras cros_embedded +display_backlight fuzzer generated_cros_config -has_keyboard_backlight -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -mosys_eventlog +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco trogdor_sar_hack"
-REQUIRED_USE="
-	?? ( keyboard_includes_side_buttons keyboard_convertible_no_side_buttons )"
-
-COMMON_DEPEND="
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	chromeos-base/chromeos-config-tools:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/libnl:=
-	dev-libs/protobuf:=
-	dev-libs/re2:=
-	cras? ( media-sound/adhd:= )
-	virtual/udev"
-
-RDEPEND="${COMMON_DEPEND}
-	chromeos-base/ec-utils
-	mosys_eventlog? ( sys-apps/mosys )
-	trogdor_sar_hack? ( net-libs/libqrtr:= )
-"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/chromeos-ec-headers:=
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-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.
-	enewuser "power"
-	enewgroup "power"
-	# Ensure that this group exists so that power_manager can access
-	# /dev/cros_ec.
-	enewgroup "cros_ec-access"
-	cros-workon_pkg_setup
-}
-
-src_install() {
-	# Binaries for production
-	dobin "${OUT}"/backlight_tool  # boot-splash, chromeos-boot-alert
-	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
-	use trogdor_sar_hack && dobin "${OUT}"/set_cellular_transmit_power_trogdor
-	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}"/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/cpufreq_config
-	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/*
-	use als && doins optional_prefs/has_ambient_light_sensor
-	use cras && doins optional_prefs/use_cras
-	use display_backlight || doins optional_prefs/external_display_only
-	use has_keyboard_backlight && doins optional_prefs/has_keyboard_backlight
-	use legacy_power_button && doins optional_prefs/legacy_power_button
-	use mosys_eventlog && doins optional_prefs/mosys_eventlog
-
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.PowerManager.conf
-
-	# udev scripts and rules.
-	exeinto "$(get_udevdir)"
-	doexe udev/*.sh
-	udev_dorules udev/*.rules
-
-	if use powerknobs; then
-		udev/gen_autosuspend_rules.py > "${T}"/98-autosuspend.rules || die
-		udev_dorules "${T}"/98-autosuspend.rules
-		udev_dorules udev/optional/98-powerknobs.rules
-		dobin udev/optional/set_blkdev_pm
-		dobin udev/optional/allow_sata_min_power
-	fi
-	if use keyboard_includes_side_buttons; then
-		udev_dorules udev/optional/93-powerd-tags-keyboard-side-buttons.rules
-	elif use keyboard_convertible_no_side_buttons; then
-		udev_dorules udev/optional/93-powerd-tags-keyboard-convertible.rules
-	fi
-
-	if ! use touchpad_wakeup; then
-		udev_dorules udev/optional/93-powerd-tags-no-touchpad-wakeup.rules
-	elif use unibuild; then
-		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
-	fi
-
-	if use wilco; then
-		udev_dorules udev/optional/93-powerd-wilco-ec-files.rules
-
-		exeinto /usr/share/cros/init/optional
-		doexe init/shared/optional/powerd-pre-start-wilco.sh
-	fi
-
-	# Init scripts
-	if use systemd; then
-		systemd_dounit init/systemd/*.service
-		systemd_enable_service boot-services.target powerd.service
-		systemd_enable_service system-services.target report-power-metrics.service
-		systemd_dotmpfilesd init/systemd/powerd_directories.conf
-	else
-		insinto /etc/init
-		doins init/upstart/*.conf
-	fi
-	exeinto /usr/share/cros/init
-	doexe init/shared/powerd-pre-start.sh
-
-	if use buffet; then
-		# Buffet command handler definition
-		insinto /etc/buffet/commands
-		doins powerd/buffet/*.json
-	fi
-
-	# Install fuzz targets.
-	local fuzzer
-	for fuzzer in "${OUT}"/*_fuzzer; do
-		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
-	done
-}
-
-platform_pkg_test() {
-	local tests=(
-		power_manager_daemon_test
-		power_manager_policy_test
-		power_manager_system_test
-		power_manager_util_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/power_manager/power_manager-0.0.2-r3790.ebuild b/chromeos-base/power_manager/power_manager-0.0.2-r3790.ebuild
new file mode 100644
index 0000000..22b8da8
--- /dev/null
+++ b/chromeos-base/power_manager/power_manager-0.0.2-r3790.ebuild
@@ -0,0 +1,192 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="bc0dd38e943097b1788d08f7b76ff4167c1d0efd"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "47f6ceba57219100723f2671e0d507bd7605f22f" "aa0612733aca2d5ffa65470f07408228b473ebdb" "da73aae6d89c8e69c3740af612610792ce42b1a8" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "71cce620cf464ad17334cff4d450f8805cd6c507" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 buffet chromeos-config iioservice metrics power_manager .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="power_manager"
+
+inherit tmpfiles cros-workon platform systemd udev user
+
+DESCRIPTION="Power Manager for Chromium OS"
+HOMEPAGE="http://dev.chromium.org/chromium-os/packages/power_manager"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="-als buffet cellular +cras cros_embedded +display_backlight fuzzer generated_cros_config -has_keyboard_backlight iioservice -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -mosys_eventlog +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco qrtr"
+REQUIRED_USE="
+	?? ( keyboard_includes_side_buttons keyboard_convertible_no_side_buttons )"
+
+COMMON_DEPEND="
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	chromeos-base/chromeos-config-tools:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/libnl:=
+	dev-libs/protobuf:=
+	dev-libs/re2:=
+	cras? ( media-sound/adhd:= )
+	virtual/udev
+	cellular? ( net-misc/modemmanager-next:= )"
+
+RDEPEND="${COMMON_DEPEND}
+	chromeos-base/ec-utils
+	iioservice? ( chromeos-base/libiioservice_ipc:= )
+	mosys_eventlog? ( sys-apps/mosys )
+	qrtr? ( net-libs/libqrtr:= )
+"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/chromeos-ec-headers:=
+	chromeos-base/system_api:=[fuzzer?]
+	qrtr? ( sys-apps/upstart:= )
+"
+
+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.
+	enewuser "power"
+	enewgroup "power"
+	# Ensure that this group exists so that power_manager can access
+	# /dev/cros_ec.
+	enewgroup "cros_ec-access"
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	# Binaries for production
+	dobin "${OUT}"/backlight_tool  # boot-splash, chromeos-boot-alert
+	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}"/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/cpufreq_config
+	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/*
+	use als && doins optional_prefs/has_ambient_light_sensor
+	use cras && doins optional_prefs/use_cras
+	use display_backlight || doins optional_prefs/external_display_only
+	use has_keyboard_backlight && doins optional_prefs/has_keyboard_backlight
+	use legacy_power_button && doins optional_prefs/legacy_power_button
+	use mosys_eventlog && doins optional_prefs/mosys_eventlog
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.PowerManager.conf
+
+	# udev scripts and rules.
+	exeinto "$(get_udevdir)"
+	doexe udev/*.sh
+	udev_dorules udev/*.rules
+
+	if use powerknobs; then
+		udev/gen_autosuspend_rules.py > "${T}"/98-autosuspend.rules || die
+		udev_dorules "${T}"/98-autosuspend.rules
+		udev_dorules udev/optional/98-powerknobs.rules
+		dobin udev/optional/set_blkdev_pm
+	fi
+	if use keyboard_includes_side_buttons; then
+		udev_dorules udev/optional/93-powerd-tags-keyboard-side-buttons.rules
+	elif use keyboard_convertible_no_side_buttons; then
+		udev_dorules udev/optional/93-powerd-tags-keyboard-convertible.rules
+	fi
+
+	if ! use touchpad_wakeup; then
+		udev_dorules udev/optional/93-powerd-tags-no-touchpad-wakeup.rules
+	elif use unibuild; then
+		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
+	fi
+
+	if use wilco; then
+		udev_dorules udev/optional/93-powerd-wilco-ec-files.rules
+
+		exeinto /usr/share/cros/init/optional
+		doexe init/shared/optional/powerd-pre-start-wilco.sh
+	fi
+
+	# Init scripts
+	if use systemd; then
+		systemd_dounit init/systemd/*.service
+		systemd_enable_service boot-services.target powerd.service
+		systemd_enable_service system-services.target report-power-metrics.service
+		systemd_dotmpfilesd init/systemd/powerd_directories.conf
+	else
+		insinto /etc/init
+		doins init/upstart/*.conf
+	fi
+	exeinto /usr/share/cros/init
+	doexe init/shared/powerd-pre-start.sh
+
+	dotmpfiles tmpfiles.d/*.conf
+
+	if use buffet; then
+		# Buffet command handler definition
+		insinto /etc/buffet/commands
+		doins powerd/buffet/*.json
+	fi
+
+	# Install fuzz targets.
+	local fuzzer
+	for fuzzer in "${OUT}"/*_fuzzer; do
+		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
+	done
+}
+
+platform_pkg_test() {
+	local tests=(
+		power_manager_daemon_test
+		power_manager_policy_test
+		power_manager_system_test
+		power_manager_util_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/power_manager/power_manager-9999.ebuild b/chromeos-base/power_manager/power_manager-9999.ebuild
index cf13491..76d9f27 100644
--- a/chromeos-base/power_manager/power_manager-9999.ebuild
+++ b/chromeos-base/power_manager/power_manager-9999.ebuild
@@ -7,19 +7,19 @@
 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 buffet chromeos-config metrics power_manager .gn"
+CROS_WORKON_SUBTREE="common-mk buffet chromeos-config iioservice metrics power_manager .gn"
 
 PLATFORM_NATIVE_TEST="yes"
 PLATFORM_SUBDIR="power_manager"
 
-inherit cros-workon platform systemd udev user
+inherit tmpfiles cros-workon platform systemd udev user
 
 DESCRIPTION="Power Manager for Chromium OS"
 HOMEPAGE="http://dev.chromium.org/chromium-os/packages/power_manager"
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="-als buffet +cras cros_embedded +display_backlight fuzzer generated_cros_config -has_keyboard_backlight -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -mosys_eventlog +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco trogdor_sar_hack"
+IUSE="-als buffet cellular +cras cros_embedded +display_backlight fuzzer generated_cros_config -has_keyboard_backlight iioservice -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -mosys_eventlog +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco qrtr"
 REQUIRED_USE="
 	?? ( keyboard_includes_side_buttons keyboard_convertible_no_side_buttons )"
 
@@ -34,17 +34,20 @@
 	dev-libs/protobuf:=
 	dev-libs/re2:=
 	cras? ( media-sound/adhd:= )
-	virtual/udev"
+	virtual/udev
+	cellular? ( net-misc/modemmanager-next:= )"
 
 RDEPEND="${COMMON_DEPEND}
 	chromeos-base/ec-utils
+	iioservice? ( chromeos-base/libiioservice_ipc:= )
 	mosys_eventlog? ( sys-apps/mosys )
-	trogdor_sar_hack? ( net-libs/libqrtr:= )
+	qrtr? ( net-libs/libqrtr:= )
 "
 
 DEPEND="${COMMON_DEPEND}
 	chromeos-base/chromeos-ec-headers:=
 	chromeos-base/system_api:=[fuzzer?]
+	qrtr? ( sys-apps/upstart:= )
 "
 
 pkg_setup() {
@@ -66,7 +69,6 @@
 	dobin "${OUT}"/powerd_setuid_helper
 	dobin "${OUT}"/power_supply_info  # feedback
 	dobin "${OUT}"/set_cellular_transmit_power
-	use trogdor_sar_hack && dobin "${OUT}"/set_cellular_transmit_power_trogdor
 	dobin "${OUT}"/set_wifi_transmit_power
 	fowners root:power /usr/bin/powerd_setuid_helper
 	fperms 4750 /usr/bin/powerd_setuid_helper
@@ -121,7 +123,6 @@
 		udev_dorules "${T}"/98-autosuspend.rules
 		udev_dorules udev/optional/98-powerknobs.rules
 		dobin udev/optional/set_blkdev_pm
-		dobin udev/optional/allow_sata_min_power
 	fi
 	if use keyboard_includes_side_buttons; then
 		udev_dorules udev/optional/93-powerd-tags-keyboard-side-buttons.rules
@@ -159,6 +160,8 @@
 	exeinto /usr/share/cros/init
 	doexe init/shared/powerd-pre-start.sh
 
+	dotmpfiles tmpfiles.d/*.conf
+
 	if use buffet; then
 		# Buffet command handler definition
 		insinto /etc/buffet/commands
diff --git a/chromeos-base/print_tools/print_tools-0.0.1-r110.ebuild b/chromeos-base/print_tools/print_tools-0.0.1-r110.ebuild
deleted file mode 100644
index d5c71dd..0000000
--- a/chromeos-base/print_tools/print_tools-0.0.1-r110.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "c6bc491fe392f5e9d523ed67fd52f0577c5d7c6c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk print_tools .gn"
-
-PLATFORM_SUBDIR="print_tools"
-
-inherit cros-workon platform
-
-DESCRIPTION="Various tools for the native printing system."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/print_tools/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-COMMON_DEPEND="
-	chromeos-base/libipp:=
-"
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-src_install() {
-	dobin "${OUT}"/printer_diag
-}
diff --git a/chromeos-base/print_tools/print_tools-0.0.1-r137.ebuild b/chromeos-base/print_tools/print_tools-0.0.1-r137.ebuild
new file mode 100644
index 0000000..1b1ca84
--- /dev/null
+++ b/chromeos-base/print_tools/print_tools-0.0.1-r137.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "4b4fcd4dc4944c9bab8f045c666e71f7045ef67a" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk print_tools .gn"
+
+PLATFORM_SUBDIR="print_tools"
+
+inherit cros-workon platform
+
+DESCRIPTION="Various tools for the native printing system."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/print_tools/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	chromeos-base/libipp:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+src_install() {
+	dobin "${OUT}"/printer_diag
+}
diff --git a/chromeos-base/protofiles/files/VERSION b/chromeos-base/protofiles/files/VERSION
index 552f0e9..bc7c7b4 100644
--- a/chromeos-base/protofiles/files/VERSION
+++ b/chromeos-base/protofiles/files/VERSION
@@ -1,4 +1,4 @@
-MAJOR=86
+MAJOR=93
 MINOR=0
-BUILD=4237
+BUILD=4523
 PATCH=0
diff --git a/chromeos-base/protofiles/files/protofiles-start-up-flags.patch b/chromeos-base/protofiles/files/protofiles-start-up-flags.patch
deleted file mode 100644
index cc589c1..0000000
--- a/chromeos-base/protofiles/files/protofiles-start-up-flags.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-This patch contains the device settings proto changes that were introduced in
-the chromium repo per crrev.com/c/2565637. We unfortunately can't roll
-protofiles right now due new dependencies that the browser side has introduced
-which aren't available on the Chrome OS side yet (see crbug.com/1116244). This
-patch is a temporary stop gap solution to allow work that depends on the proto
-changes to land. Once protofiles can be properly upreved again, the patch is no
-longer needed and should be dropped.
-
---- a/cloud/policy/proto/chrome_device_policy.proto
-+++ b/cloud/policy/proto/chrome_device_policy.proto
-@@ -552,11 +552,25 @@ message AllowRedeemChromeOsRegistrationOffersProto {
-   optional bool allow_redeem_offers = 1 [default = true];
- }
- 
--message StartUpFlagsProto {
--  // Specifies the flags that should be applied to Google Chrome when it starts.
--  // The specified flags are applied on the login screen only. Flags set via
--  // this policy do not propagate into user sessions.
--  repeated string flags = 1;
-+message FeatureFlagsProto {
-+  // Specifies switches that should be passed to Google Chrome when it starts.
-+  // The specified switches are applied on the login screen only. Switches set
-+  // via this policy do not propagate into user sessions.
-+  // This is deprecated because it turned out that storing raw switches is
-+  // problematic since Chrome can't easily tie switches back to feature flags to
-+  // validate them. The |feature_flags| field below works in terms of feature
-+  // flag names (i.e. chrome://flags items) instead and supersedes |switches|.
-+  repeated string switches = 1 [deprecated = true];
-+
-+  // Specifies feature flags (i.e. chrome://flags items) that should be enabled
-+  // when Chrome starts. The format of the individual entries matches the format
-+  // chrome://flags uses for internal bookkeeping, i.e. either the flag name as
-+  // listed on chrome://flags (for flags that only have a single choice besides
-+  // the default) or the flag name followed by the index of the chosen option,
-+  // separated by an '@' character (for flags with multiple choices). The
-+  // specified feature flags are applied on the login screen only and don't
-+  // propagate into the user session.
-+  repeated string feature_flags = 2;
- }
- 
- message UptimeLimitProto {
-@@ -1763,7 +1777,7 @@ message ChromeDeviceSettingsProto {
-   optional SystemTimezoneProto system_timezone = 20;
-   optional DeviceLocalAccountsProto device_local_accounts = 21;
-   optional AllowRedeemChromeOsRegistrationOffersProto allow_redeem_offers = 22;
--  optional StartUpFlagsProto start_up_flags = 23;
-+  optional FeatureFlagsProto feature_flags = 23;
-   optional UptimeLimitProto uptime_limit = 24;
-   optional VariationsParameterProto variations_parameter = 25;
-   optional AttestationSettingsProto attestation_settings = 26;
diff --git a/chromeos-base/protofiles/protofiles-0.0.42.ebuild b/chromeos-base/protofiles/protofiles-0.0.42.ebuild
deleted file mode 100644
index 732a549..0000000
--- a/chromeos-base/protofiles/protofiles-0.0.42.ebuild
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# This project checks out the proto files from the read only repositories
-# linked to the following directories of the Chromium project:
-
-#   - src/components/policy
-
-# This project is not cros-work-able: if changes to the protobufs are needed
-# then they should be done in the Chromium repository, and the commits below
-# should be updated.
-
-EAPI="7"
-
-# We don't need the history at all.
-EGIT_CLONE_TYPE="shallow"
-
-# TODO(crbug.com/984182): We force Python 2 because depot_tools doesn't support Python 3.
-PYTHON_COMPAT=( python2_7 )
-
-inherit cros-constants eutils git-r3 python-any-r1
-
-# Every 3 strings in this array indicates a repository to checkout:
-#   - A unique name (to avoid checkout conflits)
-#   - The repository URL
-#   - The commit to checkout
-EGIT_REPO_URIS=(
-	"cloud/policy"
-	"${CROS_GIT_HOST_URL}/chromium/src/components/policy.git"
-	"cd0f3e50ec649b79e36b1a1594b3c32116eb1f33"
-
-	# If you uprev these repos, please also:
-	# - Update files/VERSION to the corresponding revision of
-	#   chromium/src/chrome/VERSION in the Chromium code base.
-	#   Only the MAJOR version matters, really. This is necessary so policy
-	#   code builders have the right set of policies.
-	# - Update authpolicy/policy/device_policy_encoder[_unittest].cc to
-	#   include new device policies. The unit test tells you missing ones:
-	#     cros_run_unit_tests --board=$BOARD --packages authpolicy
-	#   If you see unrelated test failures, make sure to rebuild the
-	#   authpolicy package and its dependencies (in particular, libbrillo
-	#   which provides libpolicy for accessing device policy) against the
-	#   updated protofiles package.
-	#   User policy is generated and doesn't have to be updated manually.
-	# - Bump the package version:
-	#     git mv protofiles-0.0.N.ebuild protofiles-0.0.N+1.ebuild
-)
-
-DESCRIPTION="Protobuf installer for the device policy proto definitions."
-HOMEPAGE="https://chromium.googlesource.com/chromium/src/components/policy"
-
-LICENSE="BSD-Google"
-SLOT="0/${PV}"
-KEYWORDS="*"
-IUSE=""
-
-PATCHES=(
-	"${FILESDIR}/${PN}-start-up-flags.patch"
-)
-
-POLICY_DIR="${S}/cloud/policy"
-
-# A list of the static protobuf files that exist in Chromium.
-POLICY_DIR_PROTO_FILES=(
-	"chrome_device_policy.proto"
-	"chrome_extension_policy.proto"
-	"device_management_backend.proto"
-	"install_attributes.proto"
-	"policy_common_definitions.proto"
-	"policy_signing_key.proto"
-	"record.proto"
-	"record_constants.proto"
-)
-
-RDEPEND="!<chromeos-base/chromeos-chrome-82.0.4056.0_rc-r1"
-
-src_unpack() {
-	set -- "${EGIT_REPO_URIS[@]}"
-	while [[ $# -gt 0 ]]; do
-		EGIT_CHECKOUT_DIR="${S}/$1" \
-		EGIT_REPO_URI=$2 \
-		EGIT_COMMIT=$3 \
-		git-r3_src_unpack
-		shift 3
-	done
-}
-
-src_compile() {
-	# Generate cloud_policy.proto.
-	"${POLICY_DIR}/tools/generate_policy_source.py" \
-		--cloud-policy-protobuf="${WORKDIR}/cloud_policy.proto" \
-		--chrome-version-file="${FILESDIR}/VERSION" \
-		--policy-templates-file="${POLICY_DIR}/resources/policy_templates.json" \
-		--target-platform="chrome_os" \
-		|| die "Failed to generate cloud_policy.proto"
-}
-
-src_install() {
-	insinto /usr/include/proto
-	doins "${POLICY_DIR}"/proto/chrome_device_policy.proto
-	doins "${POLICY_DIR}"/proto/chrome_extension_policy.proto
-	doins "${POLICY_DIR}"/proto/install_attributes.proto
-	doins "${POLICY_DIR}"/proto/policy_signing_key.proto
-	doins "${POLICY_DIR}"/proto/device_management_backend.proto
-	insinto /usr/share/protofiles
-	doins "${POLICY_DIR}"/proto/chrome_device_policy.proto
-	doins "${POLICY_DIR}"/proto/policy_common_definitions.proto
-	doins "${POLICY_DIR}"/proto/device_management_backend.proto
-	doins "${POLICY_DIR}"/proto/chrome_extension_policy.proto
-	doins "${WORKDIR}"/cloud_policy.proto
-	dobin "${FILESDIR}"/policy_reader
-	insinto /usr/share/policy_resources
-	doins "${POLICY_DIR}"/resources/policy_templates.json
-	doins "${FILESDIR}"/VERSION
-	exeinto /usr/share/policy_tools
-	doexe "${POLICY_DIR}"/tools/generate_policy_source.py
-	sed -i -E '1{ /^#!/ s:(env )?python$:python2: }' \
-		"${D}/usr/share/policy_tools/generate_policy_source.py" || die
-
-	# Retrieve the proto files which exist in that path, with their full paths.
-	local policy_dir_proto_files=( "${POLICY_DIR}"/proto/*.proto )
-
-	# Convert policy_dir_proto_files into an array, and retrieving the files names, instead of their full path.
-	policy_dir_proto_files=( "${policy_dir_proto_files[@]##*/}" )
-
-	# Check whether all protobuf files that exist in Chromium side has already been installed in protofiles package or
-	# not. And to verify that the list in autotests package, which is using these protobuf files are up-to-date.
-	sorter() {
-		printf '%s\n' "$@" | LC_ALL=C sort
-	}
-	if [[ "$(sorter "${policy_dir_proto_files[@]}")" != "$(sorter "${POLICY_DIR_PROTO_FILES[@]}")" ]]; then
-		die "Add all new protobuf files into the sorted list of chromium protobuf files, which exist in protofiles package.
-			Please update all the imported protobuf files in autotest package in policy_protos.py file."
-	fi
-}
diff --git a/chromeos-base/protofiles/protofiles-0.0.46.ebuild b/chromeos-base/protofiles/protofiles-0.0.46.ebuild
new file mode 100644
index 0000000..3feb6db
--- /dev/null
+++ b/chromeos-base/protofiles/protofiles-0.0.46.ebuild
@@ -0,0 +1,152 @@
+# Copyright (c) 2009 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# This project checks out the proto files from the read only repositories
+# linked to the following directories of the Chromium project:
+
+#   - src/components/policy
+
+# This project is not cros-work-able: if changes to the protobufs are needed
+# then they should be done in the Chromium repository, and the commits below
+# should be updated.
+
+EAPI="7"
+
+# We don't need the history at all.
+EGIT_CLONE_TYPE="shallow"
+
+# TODO(crbug.com/984182): We force Python 2 because depot_tools doesn't support Python 3.
+PYTHON_COMPAT=( python2_7 )
+
+inherit cros-constants eutils git-r3 python-any-r1
+
+# Every 3 strings in this array indicates a repository to checkout:
+#   - A unique name (to avoid checkout conflits)
+#   - The repository URL
+#   - The commit to checkout
+EGIT_REPO_URIS=(
+	"cloud/policy"
+	"${CROS_GIT_HOST_URL}/chromium/src/components/policy.git"
+	"a7c6ef05a492d12270d4090c1e7168f18a0adcdb"
+
+	# If you uprev these repos, please also:
+	# - Update files/VERSION to the corresponding revision of
+	#   chromium/src/chrome/VERSION in the Chromium code base.
+	#   Only the MAJOR version matters, really. This is necessary so policy
+	#   code builders have the right set of policies.
+	# - Update authpolicy/policy/device_policy_encoder[_unittest].cc to
+	#   include new device policies. The unit test tells you missing ones:
+	#     cros_run_unit_tests --board=$BOARD --packages authpolicy
+	#   If you see unrelated test failures, make sure to rebuild the
+	#   authpolicy package and its dependencies (in particular, libbrillo
+	#   which provides libpolicy for accessing device policy) against the
+	#   updated protofiles package.
+	#   User policy is generated and doesn't have to be updated manually.
+	# - Bump the package version:
+	#     git mv protofiles-0.0.N.ebuild protofiles-0.0.N+1.ebuild
+	# - Bump the DEPEND version number for protofiles in all ebuilds for
+	#   packages that rely on the new policies. If you added new device
+	#   policy encodings above that will at least be authpolicy.
+
+	# private_membership and shell_encryption are not used in Chrome OS at
+	# the moment. They are just required to compile the proto files. An
+	# uprev will only be necessary if the respective proto files change.
+	"private_membership"
+	"${CROS_GIT_HOST_URL}/chromium/src/third_party/private_membership.git"
+	"fa5d439ccfcb5813ef9d5aa7b66299e6d24a62da"
+
+	"shell_encryption"
+	"${CROS_GIT_HOST_URL}/chromium/src/third_party/shell-encryption.git"
+	"4b66a57bf81ff88fb94113426f2f4ffbbd66cb95"
+)
+
+DESCRIPTION="Protobuf installer for the device policy proto definitions."
+HOMEPAGE="https://chromium.googlesource.com/chromium/src/components/policy"
+
+LICENSE="BSD-Google"
+SLOT="0/${PV}"
+KEYWORDS="*"
+IUSE=""
+
+POLICY_DIR="${S}/cloud/policy"
+
+PRIVATE_MEMBERSHIP_DIR="${S}/private_membership/src"
+SHELL_ENCRYPTION_DIR="${S}/shell_encryption/src"
+
+# A list of the static protobuf files that exist in Chromium.
+POLICY_DIR_PROTO_FILES=(
+	"chrome_device_policy.proto"
+	"chrome_extension_policy.proto"
+	"device_management_backend.proto"
+	"install_attributes.proto"
+	"policy_common_definitions.proto"
+	"policy_signing_key.proto"
+)
+
+RDEPEND="!<chromeos-base/chromeos-chrome-82.0.4056.0_rc-r1"
+
+src_unpack() {
+	set -- "${EGIT_REPO_URIS[@]}"
+	while [[ $# -gt 0 ]]; do
+		EGIT_CHECKOUT_DIR="${S}/$1" \
+		EGIT_REPO_URI=$2 \
+		EGIT_COMMIT=$3 \
+		git-r3_src_unpack
+		shift 3
+	done
+}
+
+src_compile() {
+	# Generate cloud_policy.proto.
+	"${POLICY_DIR}/tools/generate_policy_source.py" \
+		--cloud-policy-protobuf="${WORKDIR}/cloud_policy.proto" \
+		--chrome-version-file="${FILESDIR}/VERSION" \
+		--policy-templates-file="${POLICY_DIR}/resources/policy_templates.json" \
+		--target-platform="chrome_os" \
+		|| die "Failed to generate cloud_policy.proto"
+}
+
+src_install() {
+	insinto /usr/include/proto
+	doins "${POLICY_DIR}"/proto/chrome_device_policy.proto
+	doins "${POLICY_DIR}"/proto/chrome_extension_policy.proto
+	doins "${POLICY_DIR}"/proto/install_attributes.proto
+	doins "${POLICY_DIR}"/proto/policy_signing_key.proto
+	doins "${POLICY_DIR}"/proto/device_management_backend.proto
+	doins "${PRIVATE_MEMBERSHIP_DIR}"/private_membership_rlwe.proto
+	doins "${PRIVATE_MEMBERSHIP_DIR}"/private_membership.proto
+	doins "${SHELL_ENCRYPTION_DIR}"/serialization.proto
+	insinto /usr/share/protofiles
+	doins "${POLICY_DIR}"/proto/chrome_device_policy.proto
+	doins "${POLICY_DIR}"/proto/policy_common_definitions.proto
+	doins "${POLICY_DIR}"/proto/device_management_backend.proto
+	doins "${POLICY_DIR}"/proto/chrome_extension_policy.proto
+	doins "${PRIVATE_MEMBERSHIP_DIR}"/private_membership_rlwe.proto
+	doins "${PRIVATE_MEMBERSHIP_DIR}"/private_membership.proto
+	doins "${SHELL_ENCRYPTION_DIR}"/serialization.proto
+	doins "${WORKDIR}"/cloud_policy.proto
+	dobin "${FILESDIR}"/policy_reader
+	insinto /usr/share/policy_resources
+	doins "${POLICY_DIR}"/resources/policy_templates.json
+	doins "${FILESDIR}"/VERSION
+	exeinto /usr/share/policy_tools
+	doexe "${POLICY_DIR}"/tools/generate_policy_source.py
+	sed -i -E '1{ /^#!/ s:(env )?python$:python2: }' \
+		"${D}/usr/share/policy_tools/generate_policy_source.py" || die
+
+	# Retrieve the proto files which exist in that path, with their full paths.
+	local policy_dir_proto_files=( "${POLICY_DIR}"/proto/*.proto )
+
+	# Convert policy_dir_proto_files into an array, and retrieving the files names, instead of their full path.
+	policy_dir_proto_files=( "${policy_dir_proto_files[@]##*/}" )
+
+	# Check whether all protobuf files that exist in Chromium side has already been installed in protofiles package or
+	# not. And to verify that the list in autotests package, which is using these protobuf files are up-to-date.
+	sorter() {
+		printf '%s\n' "$@" | LC_ALL=C sort
+	}
+	if [[ "$(sorter "${policy_dir_proto_files[@]}")" != "$(sorter "${POLICY_DIR_PROTO_FILES[@]}")" ]]; then
+		die "Add all new protobuf files into the sorted list of chromium protobuf files, which exist in protofiles package.
+			Please update all the imported protobuf files in autotest package in policy_protos.py file."
+	fi
+}
diff --git a/chromeos-base/quipper/Manifest b/chromeos-base/quipper/Manifest
index c25cb52..15f6d1d 100644
--- a/chromeos-base/quipper/Manifest
+++ b/chromeos-base/quipper/Manifest
@@ -1 +1 @@
-DIST quipper-f2342a4ef58a99e70a82fa63bdfea539477a4a8a.tar.gz 75824727 BLAKE2B 8ee18e69b8b3aceff016fdafe066d8f11a646a4833d065a33388745838eef3ab89e468b9590ace814b41397535fdcce0ecacac5ac266b06d04d0ffac8a615138 SHA512 33a7ddb8d2343e5d3f90b129b44e652aae276d8df6bf472ab3293fe60f0998dc8ff154e3316aac51c686296cf3fe6fad094436b717327e786ca2c64e035e9934
+DIST quipper-9876dd56d3d337f481812f9f7d0be632a23e3266.tar.gz 83504474 BLAKE2B ac69a8f06beedab9d771a9d4a33a5cdb7ee78b5cf4746bff540e6153b947b7ea3176049018213c7742a6abdc19f51d45057cd9aabd80269b4ffa330c7c1ef8bb SHA512 fba453793c8c928a2dae3188e0b4299693171db439d0066dc853f443065392f5fd773ae18e00183c9468b6893e96e0aa957da153d4e75a5cb065d12988ae35b5
diff --git a/chromeos-base/quipper/files/quipper-check-header.patch b/chromeos-base/quipper/files/quipper-check-header.patch
new file mode 100644
index 0000000..05e6c63
--- /dev/null
+++ b/chromeos-base/quipper/files/quipper-check-header.patch
@@ -0,0 +1,211 @@
+diff --git a/address_mapper.cc b/address_mapper.cc
+index 2287bac..11fde4d 100644
+--- a/address_mapper.cc
++++ b/address_mapper.cc
+@@ -8,6 +8,7 @@
+ 
+ #include <vector>
+ 
++#include "base/check.h"
+ #include "base/logging.h"
+ 
+ namespace quipper {
+diff --git a/dso.cc b/dso.cc
+index 955a979..22f8a93 100644
+--- a/dso.cc
++++ b/dso.cc
+@@ -16,6 +16,7 @@
+ #include <algorithm>
+ #include <vector>
+ 
++#include "base/check_op.h"
+ #include "base/logging.h"
+ 
+ #include "compat/string.h"
+diff --git a/dso_test_utils.cc b/dso_test_utils.cc
+index 14108b0..1996c70 100644
+--- a/dso_test_utils.cc
++++ b/dso_test_utils.cc
+@@ -15,6 +15,8 @@
+ 
+ #include <vector>
+ 
++#include "base/check.h"
++#include "base/check_op.h"
+ #include "base/logging.h"
+ 
+ #include "binary_data_utils.h"
+diff --git a/file_utils.h b/file_utils.h
+index 0bd0a50..020d921 100644
+--- a/file_utils.h
++++ b/file_utils.h
+@@ -7,6 +7,7 @@
+ 
+ #include <vector>
+ 
++#include "base/check_op.h"
+ #include "base/logging.h"
+ 
+ #include "compat/string.h"
+diff --git a/huge_page_deducer.cc b/huge_page_deducer.cc
+index d79e6a4..5143807 100644
+--- a/huge_page_deducer.cc
++++ b/huge_page_deducer.cc
+@@ -8,6 +8,8 @@
+ 
+ #include <limits>
+ 
++#include "base/check.h"
++#include "base/check_op.h"
+ #include "base/logging.h"
+ #include "perf_data_utils.h"
+ 
+diff --git a/huge_page_deducer_test.cc b/huge_page_deducer_test.cc
+index a3d65da..959418f 100644
+--- a/huge_page_deducer_test.cc
++++ b/huge_page_deducer_test.cc
+@@ -6,6 +6,7 @@
+ 
+ #include <sys/mman.h>
+ 
++#include "base/check.h"
+ #include "base/logging.h"
+ #include "compat/string.h"
+ #include "compat/test.h"
+diff --git a/perf_data_utils.cc b/perf_data_utils.cc
+index 58de5cf..621bbd7 100644
+--- a/perf_data_utils.cc
++++ b/perf_data_utils.cc
+@@ -7,6 +7,7 @@
+ #include <cstdint>
+ #include <string>
+ 
++#include "base/check.h"
+ #include "base/logging.h"
+ #include "compat/proto.h"
+ #include "kernel/perf_event.h"
+diff --git a/perf_parser.cc b/perf_parser.cc
+index 664a87a..453b74b 100644
+--- a/perf_parser.cc
++++ b/perf_parser.cc
+@@ -16,6 +16,8 @@
+ #include <set>
+ #include <sstream>
+ 
++#include "base/check.h"
++#include "base/check_op.h"
+ #include "base/logging.h"
+ 
+ #include "address_mapper.h"
+diff --git a/perf_parser_test.cc b/perf_parser_test.cc
+index 2b65a3b..465bbe1 100644
+--- a/perf_parser_test.cc
++++ b/perf_parser_test.cc
+@@ -17,6 +17,7 @@
+ #include <string>
+ #include <vector>
+ 
++#include "base/check_op.h"
+ #include "base/logging.h"
+ #include "compat/string.h"
+ #include "compat/test.h"
+diff --git a/perf_reader.cc b/perf_reader.cc
+index 6740841..dc32c61 100644
+--- a/perf_reader.cc
++++ b/perf_reader.cc
+@@ -12,6 +12,8 @@
+ #include <algorithm>
+ #include <vector>
+ 
++#include "base/check.h"
++#include "base/check_op.h"
+ #include "base/logging.h"
+ #include "base/macros.h"
+ #include "binary_data_utils.h"
+diff --git a/perf_reader_test.cc b/perf_reader_test.cc
+index 5a40f4e..a902b9d 100644
+--- a/perf_reader_test.cc
++++ b/perf_reader_test.cc
+@@ -12,6 +12,7 @@
+ #include <string>
+ #include <vector>
+ 
++#include "base/check_op.h"
+ #include "base/logging.h"
+ 
+ #include "compat/string.h"
+diff --git a/perf_serializer.cc b/perf_serializer.cc
+index 33fa702..4bb2bfc 100644
+--- a/perf_serializer.cc
++++ b/perf_serializer.cc
+@@ -10,6 +10,8 @@
+ 
+ #include <algorithm>  // for std::copy
+ 
++#include "base/check.h"
++#include "base/check_op.h"
+ #include "base/logging.h"
+ #include "binary_data_utils.h"
+ #include "compat/proto.h"
+diff --git a/perf_serializer_test.cc b/perf_serializer_test.cc
+index 8de335c..fefc90a 100644
+--- a/perf_serializer_test.cc
++++ b/perf_serializer_test.cc
+@@ -11,6 +11,7 @@
+ #include <sstream>
+ #include <string>
+ 
++#include "base/check.h"
+ #include "base/logging.h"
+ #include "base/macros.h"
+ #include "compat/proto.h"
+diff --git a/run_command.cc b/run_command.cc
+index e549c75..4480215 100644
+--- a/run_command.cc
++++ b/run_command.cc
+@@ -15,6 +15,8 @@
+ 
+ #include <string>
+ 
++#include "base/check.h"
++#include "base/check_op.h"
+ #include "base/logging.h"
+ 
+ #include "compat/string.h"
+diff --git a/sample_info_reader.cc b/sample_info_reader.cc
+index b32d298..5f0aedf 100644
+--- a/sample_info_reader.cc
++++ b/sample_info_reader.cc
+@@ -7,6 +7,8 @@
+ #include <string.h>
+ #include <cstdint>
+ 
++#include "base/check.h"
++#include "base/check_op.h"
+ #include "base/logging.h"
+ 
+ #include "buffer_reader.h"
+diff --git a/test_perf_data.cc b/test_perf_data.cc
+index b5104d0..46241f0 100644
+--- a/test_perf_data.cc
++++ b/test_perf_data.cc
+@@ -10,6 +10,7 @@
+ #include <ostream>  
+ #include <vector>
+ 
++#include "base/check_op.h"
+ #include "base/logging.h"
+ 
+ #include "binary_data_utils.h"
+diff --git a/test_utils.cc b/test_utils.cc
+index cbbffda..74acc00 100644
+--- a/test_utils.cc
++++ b/test_utils.cc
+@@ -11,6 +11,7 @@
+ #include <sstream>
+ 
+ #include <gflags/gflags.h>
++#include "base/check.h"
+ #include "base/logging.h"
+ #include "compat/proto.h"
+ #include "file_reader.h"
diff --git a/chromeos-base/quipper/files/quipper-disable-flaky-tests.patch b/chromeos-base/quipper/files/quipper-disable-flaky-tests.patch
index e6f7dd9..bb92f97 100644
--- a/chromeos-base/quipper/files/quipper-disable-flaky-tests.patch
+++ b/chromeos-base/quipper/files/quipper-disable-flaky-tests.patch
@@ -4,7 +4,7 @@
 
 --- a/perf_parser_test.cc
 +++ b/perf_parser_test.cc
-@@ -641,7 +641,7 @@ class RunInMountNamespaceThread : public quipper::Thread {
+@@ -1968,7 +1968,7 @@ class RunInMountNamespaceThread : public quipper::Thread {
  // (Not tried):            /proc/<pid>/root/<path>
  // (Not tried): /<path>
  // Expected buildid for <path>: "deadbeef"
@@ -13,7 +13,7 @@
    if (!HaveCapability(CAP_SYS_ADMIN)) return;  // Skip test.
    ScopedTempDir tmpdir("/tmp/quipper_tmp.");
    ScopedTempDir mntdir("/tmp/quipper_mnt.");
-@@ -776,7 +776,7 @@ class RunInMountNamespaceProcess {
+@@ -2103,7 +2103,7 @@ class RunInMountNamespaceProcess {
  // Accept:                 /proc/<pid2>/root/<path>
  // (Not tried): /<path>
  // Expected buildid for <path>: "deadbeef"
@@ -22,7 +22,7 @@
    if (!HaveCapability(CAP_SYS_ADMIN)) return;  // Skip test.
    ScopedTempDir tmpdir("/tmp/quipper_tmp.");
    ScopedTempDir mntdir("/tmp/quipper_mnt.");
-@@ -862,7 +862,7 @@ TEST(PerfParserTest, ReadsBuildidsInMountNamespace_TriesOwningProcess) {
+@@ -2189,7 +2189,7 @@ TEST(PerfParserTest, ReadsBuildidsInMountNamespace_TriesOwningProcess) {
  // Reject (doesn't exist): /proc/<pid+10>/root/<path>
  // Accept (same inode): /<path>
  // Expected buildid for <path>: "deadbeef"
@@ -31,7 +31,7 @@
    if (!HaveCapability(CAP_SYS_ADMIN)) return;  // Skip test.
    ScopedTempDir tmpdir("/tmp/quipper_tmp.");
    ScopedTempDir mntdir("/tmp/quipper_mnt.");
-@@ -972,7 +972,7 @@ TEST(PerfParserTest, ReadsBuildidsInMountNamespace_TriesRootFs) {
+@@ -2274,7 +2274,7 @@ TEST(PerfParserTest, ReadsBuildidsInMountNamespace_TriesRootFs) {
  // Reject (wrong inode): /proc/<pid>/root/<path>
  // Reject (wrong inode): /<path>
  // Expected buildid for <path>: ""
@@ -40,7 +40,7 @@
    if (!HaveCapability(CAP_SYS_ADMIN)) return;  // Skip test.
    ScopedTempDir tmpdir("/tmp/quipper_tmp.");
    ScopedTempDir mntdir("/tmp/quipper_mnt.");
-@@ -1036,7 +1036,7 @@ TEST(PerfParserTest, ReadsBuildidsInMountNamespace_TriesRootFsRejectsInode) {
+@@ -2363,7 +2363,7 @@ TEST(PerfParserTest, ReadsBuildidsInMountNamespace_TriesRootFsRejectsInode) {
  // Reject (not found): /proc/<pid+10>/root/<path>
  // Accept (falsely): /<path>
  // Expected buildid for <path>: "baadf00d" (even though incorrect)
@@ -49,7 +49,7 @@
    if (!HaveCapability(CAP_SYS_ADMIN)) return;  // Skip test.
    ScopedTempDir tmpdir("/tmp/quipper_tmp.");
    ScopedTempDir mntdir("/tmp/quipper_mnt.");
-@@ -1133,7 +1133,7 @@ TEST(PerfParserTest, ReadsBuildidsInMountNamespace_TriesRootFsNoInodeToReject) {
+@@ -2460,7 +2460,7 @@ TEST(PerfParserTest, ReadsBuildidsInMountNamespace_TriesRootFsNoInodeToReject) {
  // A better thing to do might be to track a
  // map<tuple<maj,min,ino,path>, DSOInfo>, but even so, it will be impossible
  // to store unambiguously in perf.data.
@@ -63,7 +63,7 @@
 
 --- a/perf_serializer_test.cc
 +++ b/perf_serializer_test.cc
-@@ -452,7 +452,7 @@ TEST_P(SerializePerfDataFiles, TestBuildIDs) {
+@@ -457,7 +457,7 @@ TEST_P(SerializePerfDataFiles, TestBuildIDs) {
    EXPECT_TRUE(deserializer.Deserialize(perf_data_proto));
  }
  
@@ -72,7 +72,7 @@
    std::stringstream input;
  
    const size_t data_size =
-@@ -496,7 +496,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesTraceMetadata) {
+@@ -501,7 +501,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesTraceMetadata) {
    EXPECT_EQ(tracing_metadata_str, deserializer.tracing_data());
  }
  
@@ -81,7 +81,7 @@
    std::stringstream input;
  
    // header
-@@ -536,7 +536,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesPerfEventAttrEvent) {
+@@ -541,7 +541,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesPerfEventAttrEvent) {
    EXPECT_EQ(0, perf_data_proto.events().size());
  }
  
@@ -90,7 +90,7 @@
    std::stringstream input;
  
    // header
-@@ -579,7 +579,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesPerfFileAttr) {
+@@ -584,7 +584,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesPerfFileAttr) {
    EXPECT_EQ(0, perf_data_proto.events().size());
  }
  
@@ -99,7 +99,7 @@
    std::stringstream input;
  
    // header
-@@ -646,7 +646,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesMmapEvents) {
+@@ -651,7 +651,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesMmapEvents) {
    }
  }
  
@@ -108,7 +108,7 @@
    std::stringstream input;
  
    // header
-@@ -688,7 +688,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesAuxtraceInfoEvents) {
+@@ -693,7 +693,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesAuxtraceInfoEvents) {
    }
  }
  
@@ -117,7 +117,7 @@
    std::stringstream input;
  
    // header
-@@ -729,7 +729,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesAuxtraceEvents) {
+@@ -734,7 +734,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesAuxtraceEvents) {
    }
  }
  
@@ -126,7 +126,7 @@
    std::stringstream input;
  
    // header
-@@ -789,7 +789,7 @@ TEST(PerfSerializerTest, DISABLED_SerializesAndDeserializesAuxtraceErrorEvents)
+@@ -794,7 +794,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesAuxtraceErrorEvents) {
    EXPECT_TRUE(matches) << difference;
  }
  
@@ -135,7 +135,7 @@
    std::stringstream input;
  
    // header
-@@ -835,7 +835,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesThreadMapEvents) {
+@@ -840,7 +840,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesThreadMapEvents) {
    }
  }
  
@@ -144,7 +144,7 @@
    std::stringstream input;
  
    // header
-@@ -905,7 +905,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesStatConfigEvents) {
+@@ -910,7 +910,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesStatConfigEvents) {
    EXPECT_TRUE(matches) << difference;
  }
  
@@ -153,7 +153,7 @@
    std::stringstream input;
  
    // header
-@@ -956,7 +956,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesStatEvents) {
+@@ -961,7 +961,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesStatEvents) {
    EXPECT_TRUE(matches) << difference;
  }
  
@@ -162,7 +162,7 @@
    std::stringstream input;
  
    // header
-@@ -1004,7 +1004,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesStatRoundEvents) {
+@@ -1009,7 +1009,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesStatRoundEvents) {
    EXPECT_TRUE(matches) << difference;
  }
  
@@ -171,7 +171,7 @@
    std::stringstream input;
  
    // header
-@@ -1042,7 +1042,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesTimeConvEvents) {
+@@ -1047,7 +1047,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesTimeConvEvents) {
  }
  
  // Regression test for http://crbug.com/501004.
@@ -180,7 +180,7 @@
    std::stringstream input;
  
    // header
-@@ -1173,7 +1173,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesBuildIDs) {
+@@ -1178,7 +1178,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesBuildIDs) {
  }
  
  // Regression test for http://crbug.com/500746.
@@ -189,7 +189,7 @@
    std::stringstream input;
  
    // header
-@@ -1282,7 +1282,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesForkAndExitEvents) {
+@@ -1287,7 +1287,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesForkAndExitEvents) {
    }
  }
  
@@ -198,7 +198,7 @@
    std::stringstream input;
  
    // header
-@@ -1368,7 +1368,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesContextSwitchEvents) {
+@@ -1373,7 +1373,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesContextSwitchEvents) {
    }
  }
  
@@ -207,7 +207,7 @@
    std::stringstream input;
  
    // header
-@@ -1425,7 +1425,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesNamespacesEvents) {
+@@ -1430,7 +1430,7 @@ TEST(PerfSerializerTest, SerializesAndDeserializesNamespacesEvents) {
  }
  
  // Regression test for http://crbug.com/500746.
@@ -224,63 +224,64 @@
 @@ -41,7 +41,7 @@ class PerfRecorderTest : public ::testing::Test {
    PerfRecorder perf_recorder_;
  };
-
+ 
 -TEST_F(PerfRecorderTest, RecordToProtobuf) {
 +TEST_F(PerfRecorderTest, DISABLED_RecordToProtobuf) {
    // Read perf data using the PerfReader class.
    // Dump it to a string and convert to a protobuf.
    // Read the protobuf, and reconstruct the perf data.
-@@ -69,7 +69,7 @@ TEST_F(PerfRecorderTest, RecordToProtobu
+@@ -69,7 +69,7 @@ TEST_F(PerfRecorderTest, RecordToProtobuf) {
    EXPECT_EQ("0.2", command.Get(6).value());
  }
-
+ 
 -TEST_F(PerfRecorderTest, StatToProtobuf) {
 +TEST_F(PerfRecorderTest, DISABLED_StatToProtobuf) {
    // Run perf stat and verify output.
-   string output_string;
+   std::string output_string;
    EXPECT_TRUE(perf_recorder_.RunCommandAndGetSerializedOutput(
-@@ -81,7 +81,7 @@ TEST_F(PerfRecorderTest, StatToProtobuf)
+@@ -81,7 +81,7 @@ TEST_F(PerfRecorderTest, StatToProtobuf) {
    EXPECT_GT(stat.line_size(), 0);
  }
-
+ 
 -TEST_F(PerfRecorderTest, MemRecordToProtobuf) {
 +TEST_F(PerfRecorderTest, DISABLED_MemRecordToProtobuf) {
    if (!IsPerfMemRecordAvailable()) return;
-
+ 
    // Run perf mem record and verify output.
-@@ -94,7 +94,7 @@ TEST_F(PerfRecorderTest, MemRecordToProt
+@@ -94,7 +94,7 @@ TEST_F(PerfRecorderTest, MemRecordToProtobuf) {
    ASSERT_TRUE(perf_data_proto.ParseFromString(output_string));
  }
-
+ 
 -TEST_F(PerfRecorderTest, StatSingleEvent) {
 +TEST_F(PerfRecorderTest, DISABLED_StatSingleEvent) {
-   string output_string;
+   std::string output_string;
    ASSERT_TRUE(perf_recorder_.RunCommandAndGetSerializedOutput(
        {"perf", "stat", "-a", "-e", "cpu-clock"}, 0.2, &output_string));
-@@ -118,7 +118,7 @@ TEST_F(PerfRecorderTest, StatSingleEvent
+@@ -118,7 +118,7 @@ TEST_F(PerfRecorderTest, StatSingleEvent) {
    EXPECT_EQ("cpu-clock", stat.line(0).event_name());
  }
-
+ 
 -TEST_F(PerfRecorderTest, StatMultipleEvents) {
 +TEST_F(PerfRecorderTest, DISABLED_StatMultipleEvents) {
-   string output_string;
+   std::string output_string;
    ASSERT_TRUE(perf_recorder_.RunCommandAndGetSerializedOutput(
        {"perf", "stat", "-a", "-e", "cpu-clock", "-e", "context-switches", "-e",
-@@ -173,7 +173,7 @@ TEST_F(PerfRecorderTest, StatMultipleEve
+@@ -173,7 +173,7 @@ TEST_F(PerfRecorderTest, StatMultipleEvents) {
    EXPECT_EQ("page-faults", stat.line(3).event_name());
  }
-
+ 
 -TEST_F(PerfRecorderTest, DontAllowCommands) {
 +TEST_F(PerfRecorderTest, DISABLED_DontAllowCommands) {
-   string output_string;
+   std::string output_string;
    EXPECT_FALSE(perf_recorder_.RunCommandAndGetSerializedOutput(
        {"perf", "record", "--", "sh", "-c", "echo 'malicious'"}, 0.2,
-@@ -183,7 +183,7 @@ TEST_F(PerfRecorderTest, DontAllowComman
+@@ -183,7 +183,7 @@ TEST_F(PerfRecorderTest, DontAllowCommands) {
        &output_string));
  }
-
+ 
 -TEST(PerfRecorderNoPerfTest, FailsIfPerfDoesntExist) {
 +TEST(PerfRecorderNoPerfTest, DISABLED_FailsIfPerfDoesntExist) {
-   string output_string;
+   std::string output_string;
    PerfRecorder perf_recorder({"sudo", "/doesnt-exist/usr/not-bin/not-perf"});
    EXPECT_FALSE(perf_recorder.RunCommandAndGetSerializedOutput(
+
diff --git a/chromeos-base/quipper/files/quipper-use-unversioned-libchrome.patch b/chromeos-base/quipper/files/quipper-use-unversioned-libchrome.patch
deleted file mode 100644
index 25bb942..0000000
--- a/chromeos-base/quipper/files/quipper-use-unversioned-libchrome.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/BUILD.gn b/BUILD.gn
-index a8a82258d3d..627c6e191a4 100644
---- a/BUILD.gn
-+++ b/BUILD.gn
-@@ -21,7 +21,7 @@ group("all") {
- 
- pkg_config("target_defaults_pkgs") {
-   pkg_deps = [
--    "libchrome-${libbase_ver}",
-+    "libchrome",
-     "openssl",
-     "protobuf",
-   ]
diff --git a/chromeos-base/quipper/quipper-0.0.1-r2640.ebuild b/chromeos-base/quipper/quipper-0.0.1-r2640.ebuild
deleted file mode 100644
index 12912b5..0000000
--- a/chromeos-base/quipper/quipper-0.0.1-r2640.ebuild
+++ /dev/null
@@ -1,85 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# Don't use Makefile.external here as it fetches from the network.
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-# chromiumos-wide-profiling directory is in $SRC_URI, not in platform2.
-CROS_WORKON_SUBTREE="common-mk .gn"
-
-PLATFORM_SUBDIR="chromiumos-wide-profiling"
-
-inherit cros-workon platform
-
-DESCRIPTION="quipper: chromiumos wide profiling"
-HOMEPAGE="http://www.chromium.org/chromium-os/profiling-in-chromeos"
-GIT_SHA1="f2342a4ef58a99e70a82fa63bdfea539477a4a8a"
-SRC="quipper-${GIT_SHA1}.tar.gz"
-SRC_URI="gs://chromeos-localmirror/distfiles/${SRC}"
-SRC_DIR="src/${PN}"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND="
-	>=dev-cpp/gflags-2.0:=
-	>=dev-libs/glib-2.30:=
-	dev-libs/openssl:=
-	dev-libs/protobuf:=
-	dev-libs/re2:=
-	dev-util/perf:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/protofiles:=
-	test? ( app-shells/dash )
-"
-
-src_unpack() {
-	platform_src_unpack
-	mkdir "${S}"
-
-	pushd "${S}" >/dev/null
-	unpack ${SRC}
-	mv "${SRC_DIR}"/{.[!.],}* ./ || die
-	eapply "${FILESDIR}"/quipper-disable-flaky-tests.patch
-	eapply "${FILESDIR}"/quipper-arraysize.patch
-	# TODO(crbug/920513): remove when tarball from SRC_URI has it.
-	eapply "${FILESDIR}"/quipper-use-unversioned-libchrome.patch
-	popd >/dev/null
-}
-
-src_compile() {
-	# ARM tests run on qemu which is much slower. Exclude some large test
-	# data files for non-x86 boards.
-	if use x86 || use amd64 ; then
-		append-cppflags -DTEST_LARGE_PERF_DATA
-	fi
-
-	platform_src_compile
-}
-
-src_install() {
-	dobin "${OUT}"/quipper
-}
-
-platform_pkg_test() {
-	local tests=(
-		integration_tests
-		perf_recorder_test
-		unit_tests
-	)
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}" "1"
-	done
-}
diff --git a/chromeos-base/quipper/quipper-0.0.1-r2670.ebuild b/chromeos-base/quipper/quipper-0.0.1-r2670.ebuild
new file mode 100644
index 0000000..015f081
--- /dev/null
+++ b/chromeos-base/quipper/quipper-0.0.1-r2670.ebuild
@@ -0,0 +1,85 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# Don't use Makefile.external here as it fetches from the network.
+EAPI=7
+
+CROS_WORKON_COMMIT="0598acb73ca7269435e8c2f8d797d209cc04a764"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+# chromiumos-wide-profiling directory is in $SRC_URI, not in platform2.
+CROS_WORKON_SUBTREE="common-mk .gn"
+
+PLATFORM_SUBDIR="chromiumos-wide-profiling"
+
+inherit cros-workon platform
+
+DESCRIPTION="quipper: chromiumos wide profiling"
+HOMEPAGE="http://www.chromium.org/chromium-os/profiling-in-chromeos"
+
+GIT_SHA1="9876dd56d3d337f481812f9f7d0be632a23e3266"
+SRC="quipper-${GIT_SHA1}.tar.gz"
+SRC_URI="gs://chromeos-localmirror/distfiles/${SRC}"
+SRC_DIR="src/${PN}"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+COMMON_DEPEND="
+	>=dev-cpp/gflags-2.0:=
+	>=dev-libs/glib-2.30:=
+	dev-libs/openssl:=
+	dev-libs/protobuf:=
+	dev-libs/re2:=
+	dev-util/perf:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/protofiles:=
+	test? ( app-shells/dash )
+"
+
+src_unpack() {
+	platform_src_unpack
+	mkdir "${S}"
+
+	pushd "${S}" >/dev/null
+	unpack ${SRC}
+	mv "${SRC_DIR}"/{.[!.],}* ./ || die
+	eapply "${FILESDIR}"/quipper-disable-flaky-tests.patch
+	eapply "${FILESDIR}"/quipper-arraysize.patch
+	eapply "${FILESDIR}"/quipper-check-header.patch
+	popd >/dev/null
+}
+
+src_compile() {
+	# ARM tests run on qemu which is much slower. Exclude some large test
+	# data files for non-x86 boards.
+	if use x86 || use amd64 ; then
+		append-cppflags -DTEST_LARGE_PERF_DATA
+	fi
+
+	platform_src_compile
+}
+
+src_install() {
+	dobin "${OUT}"/quipper
+}
+
+platform_pkg_test() {
+	local tests=(
+		integration_tests
+		perf_recorder_test
+		unit_tests
+	)
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}" "1"
+	done
+}
diff --git a/chromeos-base/quipper/quipper-9999.ebuild b/chromeos-base/quipper/quipper-9999.ebuild
index ebc1230..1ea0fd0 100644
--- a/chromeos-base/quipper/quipper-9999.ebuild
+++ b/chromeos-base/quipper/quipper-9999.ebuild
@@ -18,7 +18,8 @@
 
 DESCRIPTION="quipper: chromiumos wide profiling"
 HOMEPAGE="http://www.chromium.org/chromium-os/profiling-in-chromeos"
-GIT_SHA1="f2342a4ef58a99e70a82fa63bdfea539477a4a8a"
+
+GIT_SHA1="9876dd56d3d337f481812f9f7d0be632a23e3266"
 SRC="quipper-${GIT_SHA1}.tar.gz"
 SRC_URI="gs://chromeos-localmirror/distfiles/${SRC}"
 SRC_DIR="src/${PN}"
@@ -52,8 +53,7 @@
 	mv "${SRC_DIR}"/{.[!.],}* ./ || die
 	eapply "${FILESDIR}"/quipper-disable-flaky-tests.patch
 	eapply "${FILESDIR}"/quipper-arraysize.patch
-	# TODO(crbug/920513): remove when tarball from SRC_URI has it.
-	eapply "${FILESDIR}"/quipper-use-unversioned-libchrome.patch
+	eapply "${FILESDIR}"/quipper-check-header.patch
 	popd >/dev/null
 }
 
diff --git a/chromeos-base/recover-duts/recover-duts-0.0.1-r421.ebuild b/chromeos-base/recover-duts/recover-duts-0.0.1-r421.ebuild
deleted file mode 100644
index cd35e57..0000000
--- a/chromeos-base/recover-duts/recover-duts-0.0.1-r421.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="6e511de8901a322f54054e0f2885f1654ec49972"
-CROS_WORKON_TREE="f4b9ec28863b19d383a13538b72050113cea51cc"
-CROS_WORKON_PROJECT="chromiumos/platform/crostestutils"
-CROS_WORKON_LOCALNAME="crostestutils"
-CROS_WORKON_SUBTREE="recover_duts"
-
-inherit cros-workon
-
-DESCRIPTION="Test tool that recovers bricked Chromium OS test devices"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crostestutils/+/master/recover_duts/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-RDEPEND="
-	chromeos-base/chromeos-init
-"
-
-DEPEND=""
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/recover_duts"
-}
-
-src_install() {
-	dosbin reload_network_device
-
-	exeinto /usr/libexec/recover-duts
-	newexe recover_duts.sh recover_duts
-
-	exeinto /usr/libexec/recover-duts/hooks
-	doexe hooks/*
-}
diff --git a/chromeos-base/recover-duts/recover-duts-0.0.1-r422.ebuild b/chromeos-base/recover-duts/recover-duts-0.0.1-r422.ebuild
new file mode 100644
index 0000000..941c0d3
--- /dev/null
+++ b/chromeos-base/recover-duts/recover-duts-0.0.1-r422.ebuild
@@ -0,0 +1,39 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="fd9120658cb5253b7feffa8903742a367ed7571c"
+CROS_WORKON_TREE="7fba3fbaf5f4b3d95027ac22c7f18264adf38c4e"
+CROS_WORKON_PROJECT="chromiumos/platform/crostestutils"
+CROS_WORKON_LOCALNAME="crostestutils"
+CROS_WORKON_SUBTREE="recover_duts"
+
+inherit cros-workon
+
+DESCRIPTION="Test tool that recovers bricked Chromium OS test devices"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crostestutils/+/master/recover_duts/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/chromeos-init
+"
+
+DEPEND=""
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/recover_duts"
+}
+
+src_install() {
+	dosbin reload_network_device
+
+	exeinto /usr/libexec/recover-duts
+	newexe recover_duts.sh recover_duts
+
+	exeinto /usr/libexec/recover-duts/hooks
+	doexe hooks/*
+}
diff --git a/chromeos-base/regions/regions-0.0.1-r2015.ebuild b/chromeos-base/regions/regions-0.0.1-r2015.ebuild
deleted file mode 100644
index 58494b4..0000000
--- a/chromeos-base/regions/regions-0.0.1-r2015.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="18251f9fcb5317db6f3578c1ddbc01c53bef1686"
-CROS_WORKON_TREE="8c66061f71ff3187484ec4cfa8c86320c90cfdb4"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_DESTDIR="${S}"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="regions"
-
-PLATFORM_SUBDIR="regions"
-
-inherit cros-workon
-
-DESCRIPTION="Chromium OS Region Data"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/regions/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-# 'jq' allows command line tools to access the JSON database.
-RDEPEND="app-misc/jq"
-DEPEND=""
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/regions"
-}
-
-src_compile() {
-	./regions.py --format=json --output "${WORKDIR}/cros-regions.json"
-}
-
-src_test() {
-	./regions_unittest.py
-}
-
-src_install() {
-	dobin cros_region_data
-
-	insinto /usr/share/misc
-	doins "${WORKDIR}/cros-regions.json"
-}
diff --git a/chromeos-base/regions/regions-0.0.1-r2021.ebuild b/chromeos-base/regions/regions-0.0.1-r2021.ebuild
new file mode 100644
index 0000000..7630dcd3
--- /dev/null
+++ b/chromeos-base/regions/regions-0.0.1-r2021.ebuild
@@ -0,0 +1,46 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="5e23d6c6c4da55d68ac78000f62824826d8de63d"
+CROS_WORKON_TREE="1dcc0a04496edb24287a6e3bb5411bcffbf8e9f5"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_DESTDIR="${S}"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="regions"
+
+PLATFORM_SUBDIR="regions"
+
+inherit cros-workon
+
+DESCRIPTION="Chromium OS Region Data"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/regions/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+IUSE="cros-debug"
+
+# 'jq' allows command line tools to access the JSON database.
+RDEPEND="app-misc/jq"
+DEPEND=""
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/regions"
+}
+
+src_compile() {
+	./regions.py --format=json --output "${WORKDIR}/cros-regions.json" $(usex cros-debug "--include_pseudolocales" "")
+}
+
+src_test() {
+	./regions_unittest.py
+}
+
+src_install() {
+	dobin cros_region_data
+
+	insinto /usr/share/misc
+	doins "${WORKDIR}/cros-regions.json"
+}
diff --git a/chromeos-base/regions/regions-9999.ebuild b/chromeos-base/regions/regions-9999.ebuild
index 64ec5db..7309f06 100644
--- a/chromeos-base/regions/regions-9999.ebuild
+++ b/chromeos-base/regions/regions-9999.ebuild
@@ -17,6 +17,8 @@
 LICENSE="BSD-Google"
 KEYWORDS="~*"
 
+IUSE="cros-debug"
+
 # 'jq' allows command line tools to access the JSON database.
 RDEPEND="app-misc/jq"
 DEPEND=""
@@ -27,7 +29,7 @@
 }
 
 src_compile() {
-	./regions.py --format=json --output "${WORKDIR}/cros-regions.json"
+	./regions.py --format=json --output "${WORKDIR}/cros-regions.json" $(usex cros-debug "--include_pseudolocales" "")
 }
 
 src_test() {
diff --git a/chromeos-base/rendernodehost/rendernodehost-0.0.1-r160.ebuild b/chromeos-base/rendernodehost/rendernodehost-0.0.1-r160.ebuild
deleted file mode 100644
index 426f1e1..0000000
--- a/chromeos-base/rendernodehost/rendernodehost-0.0.1-r160.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2019 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk rendernodehost .gn"
-
-PLATFORM_SUBDIR="rendernodehost"
-WANT_LIBCHROME="no"
-
-inherit cros-workon platform
-
-DESCRIPTION="host service for render node forwarding"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/rendernodehost/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-DEPEND="x11-libs/libdrm:="
-
-src_install() {
-	dolib.a "${OUT}"/librendernodehost.a
-}
diff --git a/chromeos-base/rendernodehost/rendernodehost-0.0.1-r185.ebuild b/chromeos-base/rendernodehost/rendernodehost-0.0.1-r185.ebuild
new file mode 100644
index 0000000..0d5cd7a
--- /dev/null
+++ b/chromeos-base/rendernodehost/rendernodehost-0.0.1-r185.ebuild
@@ -0,0 +1,30 @@
+# Copyright 2019 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk rendernodehost .gn"
+
+PLATFORM_SUBDIR="rendernodehost"
+WANT_LIBCHROME="no"
+
+inherit cros-workon platform
+
+DESCRIPTION="host service for render node forwarding"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/rendernodehost/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+DEPEND="x11-libs/libdrm:="
+
+src_install() {
+	dolib.a "${OUT}"/librendernodehost.a
+}
diff --git a/chromeos-base/resourced/OWNERS b/chromeos-base/resourced/OWNERS
new file mode 100644
index 0000000..9dddce5
--- /dev/null
+++ b/chromeos-base/resourced/OWNERS
@@ -0,0 +1 @@
+vovoy@chromium.org
diff --git a/chromeos-base/resourced/files/chromeos-version.sh b/chromeos-base/resourced/files/chromeos-version.sh
new file mode 100644
index 0000000..83b80dc
--- /dev/null
+++ b/chromeos-base/resourced/files/chromeos-version.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# Copyright 2021 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.
+
+# Assumes the first 'version =' line in the Cargo.toml is the version for the
+# crate.
+awk '/^version = / { print $3; exit }' "$1/resourced/Cargo.toml" | tr -d '"'
diff --git a/chromeos-base/resourced/resourced-0.1.0-r28.ebuild b/chromeos-base/resourced/resourced-0.1.0-r28.ebuild
new file mode 100644
index 0000000..1ad4ec7
--- /dev/null
+++ b/chromeos-base/resourced/resourced-0.1.0-r28.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="e1ada66a0b8ba445512dca03d35f736464b26309"
+CROS_WORKON_TREE="6a4d75e270c74394b3fc795e7a47070bd0c5b9a8"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since project's Cargo.toml is
+# using "provided by ebuild" macro which supported by cros-rust.
+CROS_WORKON_SUBTREE="resourced"
+
+inherit cros-workon cros-rust user
+
+DESCRIPTION="ChromeOS Resource Management Daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/resourced/"
+
+LICENSE="BSD-Google"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+IUSE="+seccomp"
+
+DEPEND="
+	=dev-rust/anyhow-1*:=
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/once_cell-1.7*:=
+	dev-rust/sys_util:=
+"
+
+src_install() {
+	dobin "$(cros-rust_get_build_dir)/resourced"
+
+	# D-Bus configuration.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.ResourceManager.conf
+
+	# init script.
+	insinto /etc/init
+	doins init/resourced.conf
+
+	# seccomp policy file.
+	insinto /usr/share/policy
+	if use seccomp; then
+		newins "seccomp/resourced-seccomp-${ARCH}.policy" resourced-seccomp.policy
+	fi
+}
+
+pkg_preinst() {
+	enewuser "resourced"
+	enewgroup "resourced"
+
+	cros-rust_pkg_preinst
+}
diff --git a/chromeos-base/resourced/resourced-9999.ebuild b/chromeos-base/resourced/resourced-9999.ebuild
new file mode 100644
index 0000000..de9d31f
--- /dev/null
+++ b/chromeos-base/resourced/resourced-9999.ebuild
@@ -0,0 +1,53 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since project's Cargo.toml is
+# using "provided by ebuild" macro which supported by cros-rust.
+CROS_WORKON_SUBTREE="resourced"
+
+inherit cros-workon cros-rust user
+
+DESCRIPTION="ChromeOS Resource Management Daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/resourced/"
+
+LICENSE="BSD-Google"
+SLOT="0/${PVR}"
+KEYWORDS="~*"
+IUSE="+seccomp"
+
+DEPEND="
+	=dev-rust/anyhow-1*:=
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/once_cell-1.7*:=
+	dev-rust/sys_util:=
+"
+
+src_install() {
+	dobin "$(cros-rust_get_build_dir)/resourced"
+
+	# D-Bus configuration.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.ResourceManager.conf
+
+	# init script.
+	insinto /etc/init
+	doins init/resourced.conf
+
+	# seccomp policy file.
+	insinto /usr/share/policy
+	if use seccomp; then
+		newins "seccomp/resourced-seccomp-${ARCH}.policy" resourced-seccomp.policy
+	fi
+}
+
+pkg_preinst() {
+	enewuser "resourced"
+	enewgroup "resourced"
+
+	cros-rust_pkg_preinst
+}
diff --git a/chromeos-base/rmad/OWNERS b/chromeos-base/rmad/OWNERS
new file mode 100644
index 0000000..53a8022
--- /dev/null
+++ b/chromeos-base/rmad/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/rma/OWNERS
diff --git a/chromeos-base/rmad/rmad-0.0.1-r49.ebuild b/chromeos-base/rmad/rmad-0.0.1-r49.ebuild
new file mode 100644
index 0000000..3276f9ed
--- /dev/null
+++ b/chromeos-base/rmad/rmad-0.0.1-r49.ebuild
@@ -0,0 +1,69 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6dd33d823125a9f9e78f10c51ea5756c9f8b64bc"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "31bdaf2fb61472fd3a728d100c15226c71caca7b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 rmad .gn"
+
+PLATFORM_SUBDIR="rmad"
+
+inherit cros-workon platform user
+
+DESCRIPTION="ChromeOS RMA daemon."
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cr50_onboard ti50_onboard"
+
+COMMON_DEPEND=""
+
+RDEPEND="
+	${COMMON_DEPEND}
+	cr50_onboard? ( chromeos-base/chromeos-cr50 )
+	ti50_onboard? ( chromeos-base/chromeos-ti50 )
+	chromeos-base/runtime_probe
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api
+	chromeos-base/vboot_reference
+"
+
+pkg_preinst() {
+	# Create user and group for RMA.
+	enewuser "rmad"
+	enewgroup "rmad"
+}
+
+src_install() {
+	dosbin "${OUT}/rmad"
+
+	# Install upstart configs and scripts.
+	insinto /etc/init
+	doins init/*.conf
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Rmad.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.Rmad.service
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "seccomp/rmad-seccomp-${ARCH}.policy" rmad-seccomp.policy
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/rmad_test"
+}
diff --git a/chromeos-base/rmad/rmad-9999.ebuild b/chromeos-base/rmad/rmad-9999.ebuild
new file mode 100644
index 0000000..4151b0b
--- /dev/null
+++ b/chromeos-base/rmad/rmad-9999.ebuild
@@ -0,0 +1,67 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk rmad .gn"
+
+PLATFORM_SUBDIR="rmad"
+
+inherit cros-workon platform user
+
+DESCRIPTION="ChromeOS RMA daemon."
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE="cr50_onboard ti50_onboard"
+
+COMMON_DEPEND=""
+
+RDEPEND="
+	${COMMON_DEPEND}
+	cr50_onboard? ( chromeos-base/chromeos-cr50 )
+	ti50_onboard? ( chromeos-base/chromeos-ti50 )
+	chromeos-base/runtime_probe
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api
+	chromeos-base/vboot_reference
+"
+
+pkg_preinst() {
+	# Create user and group for RMA.
+	enewuser "rmad"
+	enewgroup "rmad"
+}
+
+src_install() {
+	dosbin "${OUT}/rmad"
+
+	# Install upstart configs and scripts.
+	insinto /etc/init
+	doins init/*.conf
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.Rmad.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.Rmad.service
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "seccomp/rmad-seccomp-${ARCH}.policy" rmad-seccomp.policy
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/rmad_test"
+}
diff --git a/chromeos-base/rmi4utils/Manifest b/chromeos-base/rmi4utils/Manifest
index 9a67e07..602c8c0 100644
--- a/chromeos-base/rmi4utils/Manifest
+++ b/chromeos-base/rmi4utils/Manifest
@@ -1 +1 @@
-DIST rmi4utils-1.2.13.tar.gz 44107 SHA256 693f4126d377dda1e6eba302f68286d25b3685c15f53e00865187b1a0e787227 SHA512 1d6e20296348135c45827567c98af775010498793d13624e6b9ad403b4a310fc21dd89c7a0b591fa5040eb766042b465b127dff3f8046fdabdf674ee941969b9 WHIRLPOOL e202f9983226554ad3b458281e5b412391a362cb98a15f7c222e719c2c070841277919d4f2ea484f93b51e3e92ef388923ba9ac5cb720cf2f86dec56bbca0010
+DIST rmi4utils-1.3.6.tar.gz 45122 BLAKE2B 17226cf64ec10a165afb1f8eeecd3da6ab2246150340c0ceae8dd90e196b289a08017eeeefdb7e3813faecc0de375b713af459fc9d8fce9968a1a0a23d9fb211 SHA512 9fda7789da1ef5a567d7eda156a4057a08966d6d56c85140c90b810e2a3e2b83ff0ae562b84daad616968e400b817d89073a55c311f99e4feb951467d48c44b2
diff --git a/chromeos-base/rmi4utils/OWNERS b/chromeos-base/rmi4utils/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/rmi4utils/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/rmi4utils/rmi4utils-1.2.13-r1.ebuild b/chromeos-base/rmi4utils/rmi4utils-1.2.13-r1.ebuild
deleted file mode 100644
index 6711901..0000000
--- a/chromeos-base/rmi4utils/rmi4utils-1.2.13-r1.ebuild
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="4"
-
-inherit toolchain-funcs
-
-DESCRIPTION="Synaptics RMI4 Utilities for Firmware Update"
-HOMEPAGE="https://github.com/aduggan/rmi4utils"
-SRC_URI="https://github.com/aduggan/rmi4utils/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-src_configure() {
-	tc-export AR CXX RANLIB
-}
-
-src_install() {
-	dosbin rmi4update/rmi4update
-	dosbin rmihidtool/rmihidtool
-}
diff --git a/chromeos-base/rmi4utils/rmi4utils-1.3.6-r1.ebuild b/chromeos-base/rmi4utils/rmi4utils-1.3.6-r1.ebuild
new file mode 100644
index 0000000..3804069
--- /dev/null
+++ b/chromeos-base/rmi4utils/rmi4utils-1.3.6-r1.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit toolchain-funcs
+
+DESCRIPTION="Synaptics RMI4 Utilities for Firmware Update"
+HOMEPAGE="https://github.com/aduggan/rmi4utils"
+SRC_URI="https://github.com/aduggan/rmi4utils/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+src_configure() {
+	tc-export AR CXX RANLIB
+}
+
+src_install() {
+	dosbin rmi4update/rmi4update
+	dosbin rmihidtool/rmihidtool
+}
diff --git a/chromeos-base/run_oci/run_oci-0.0.1-r1077.ebuild b/chromeos-base/run_oci/run_oci-0.0.1-r1077.ebuild
deleted file mode 100644
index 632ecbc..0000000
--- a/chromeos-base/run_oci/run_oci-0.0.1-r1077.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="c62f55d2cdf3e409b1d0094880444e80b3572c59"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "ed310628c7b59ac5528ea8347990fc4f5e95c915" "bcebcb36c5f685f0a530a8b411d7ffe49de01240" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk libcontainer run_oci .gn"
-
-PLATFORM_SUBDIR="run_oci"
-
-inherit cros-workon libchrome platform
-
-DESCRIPTION="Utility for running OCI-compatible containers"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND="
-	chromeos-base/libcontainer:=
-	sys-apps/util-linux:=
-	sys-libs/libcap:=
-"
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-src_install() {
-	cd "${OUT}"
-	dobin run_oci
-}
-
-platform_pkg_test() {
-	local tests=(
-		container_config_parser_test
-		run_oci_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		# platform_test takes care of setting up your test environment
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/run_oci/run_oci-0.0.1-r1108.ebuild b/chromeos-base/run_oci/run_oci-0.0.1-r1108.ebuild
new file mode 100644
index 0000000..df27b88
--- /dev/null
+++ b/chromeos-base/run_oci/run_oci-0.0.1-r1108.ebuild
@@ -0,0 +1,49 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a2ab6048637d439be995dd4cdc3ef91d0291fb42" "6ed3b507fc245405455010e3d50c3a434a5d9548" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk libcontainer run_oci .gn"
+
+PLATFORM_SUBDIR="run_oci"
+
+inherit cros-workon libchrome platform
+
+DESCRIPTION="Utility for running OCI-compatible containers"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+COMMON_DEPEND="
+	chromeos-base/libcontainer:=
+	sys-apps/util-linux:=
+	sys-libs/libcap:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+src_install() {
+	cd "${OUT}"
+	dobin run_oci
+}
+
+platform_pkg_test() {
+	local tests=(
+		container_config_parser_test
+		run_oci_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		# platform_test takes care of setting up your test environment
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/runtime_probe/runtime_probe-0.0.1-r495.ebuild b/chromeos-base/runtime_probe/runtime_probe-0.0.1-r495.ebuild
deleted file mode 100644
index 80e08da..0000000
--- a/chromeos-base/runtime_probe/runtime_probe-0.0.1-r495.ebuild
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5251066fa4f265c3a7bbb7d1f1bb17233f43eaaf"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "fae342a0fc21bedcbf458a1b43150187b54dbe03" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 runtime_probe .gn"
-
-PLATFORM_SUBDIR="runtime_probe"
-
-inherit cros-workon platform user udev
-
-DESCRIPTION="Runtime probing on device componenets."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/runtime_probe/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="generated_cros_config unibuild asan fuzzer"
-
-COMMON_DEPEND="
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config:= )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	chromeos-base/chromeos-config-tools:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-# Add vboot_reference as build time dependency to read cros_debug status
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/shill-client:=
-	chromeos-base/system_api:=[fuzzer?]
-	chromeos-base/vboot_reference:=
-"
-
-pkg_preinst() {
-	# Create user and group for runtime_probe
-	enewuser "runtime_probe"
-	enewgroup "cros_ec-access"
-	enewgroup "runtime_probe"
-}
-
-src_install() {
-	dobin "${OUT}/runtime_probe"
-
-	# Install upstart configs and scripts.
-	insinto /etc/init
-	doins init/*.conf
-
-	# Install D-Bus configuration file.
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.RuntimeProbe.conf
-
-	# Install D-Bus service activation configuration.
-	insinto /usr/share/dbus-1/system-services
-	doins dbus/org.chromium.RuntimeProbe.service
-
-
-	# Install sandbox information.
-	insinto /etc/runtime_probe/sandbox
-	doins sandbox/args.json
-	doins sandbox/"${ARCH}"/*-seccomp.policy
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	newins "seccomp/runtime_probe-seccomp-${ARCH}.policy" \
-	runtime_probe-seccomp.policy
-
-	# Install udev rules.
-	udev_dorules udev/*.rules
-
-	local fuzzer
-	for fuzzer in "${OUT}"/*_fuzzer; do
-		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
-	done
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/unittest_runner"
-}
diff --git a/chromeos-base/runtime_probe/runtime_probe-0.0.1-r569.ebuild b/chromeos-base/runtime_probe/runtime_probe-0.0.1-r569.ebuild
new file mode 100644
index 0000000..5fc068e
--- /dev/null
+++ b/chromeos-base/runtime_probe/runtime_probe-0.0.1-r569.ebuild
@@ -0,0 +1,89 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="67f002ffc6f157b2d2c102d78f76b8ae8cc309d8"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "aa0612733aca2d5ffa65470f07408228b473ebdb" "5bcd4487aea45b91806e5db9af44e6b3d9290c13" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 runtime_probe .gn"
+
+PLATFORM_SUBDIR="runtime_probe"
+
+inherit cros-workon platform user udev
+
+DESCRIPTION="Runtime probing on device componenets."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/runtime_probe/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="generated_cros_config unibuild asan fuzzer"
+
+COMMON_DEPEND="
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config:= )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	chromeos-base/chromeos-config-tools:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/ec-utils
+"
+
+# Add vboot_reference as build time dependency to read cros_debug status
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=[fuzzer?]
+	chromeos-base/vboot_reference:=
+"
+
+pkg_preinst() {
+	# Create user and group for runtime_probe
+	enewuser "runtime_probe"
+	enewgroup "cros_ec-access"
+	enewgroup "runtime_probe"
+}
+
+src_install() {
+	dobin "${OUT}/runtime_probe"
+
+	# Install upstart configs and scripts.
+	insinto /etc/init
+	doins init/*.conf
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.RuntimeProbe.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.RuntimeProbe.service
+
+
+	# Install sandbox information.
+	insinto /etc/runtime_probe/sandbox
+	doins sandbox/"${ARCH}"/args.json
+	doins sandbox/"${ARCH}"/*-seccomp.policy
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "seccomp/runtime_probe-seccomp-${ARCH}.policy" \
+	runtime_probe-seccomp.policy
+
+	# Install udev rules.
+	udev_dorules udev/*.rules
+
+	local fuzzer
+	for fuzzer in "${OUT}"/*_fuzzer; do
+		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
+	done
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/unittest_runner"
+}
diff --git a/chromeos-base/runtime_probe/runtime_probe-9999.ebuild b/chromeos-base/runtime_probe/runtime_probe-9999.ebuild
index a31cdce..1af1094 100644
--- a/chromeos-base/runtime_probe/runtime_probe-9999.ebuild
+++ b/chromeos-base/runtime_probe/runtime_probe-9999.ebuild
@@ -28,7 +28,10 @@
 	chromeos-base/chromeos-config-tools:=
 "
 
-RDEPEND="${COMMON_DEPEND}"
+RDEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/ec-utils
+"
 
 # Add vboot_reference as build time dependency to read cros_debug status
 DEPEND="${COMMON_DEPEND}
@@ -62,7 +65,7 @@
 
 	# Install sandbox information.
 	insinto /etc/runtime_probe/sandbox
-	doins sandbox/args.json
+	doins sandbox/"${ARCH}"/args.json
 	doins sandbox/"${ARCH}"/*-seccomp.policy
 
 	# Install seccomp policy file.
diff --git a/chromeos-base/sample-dlc/sample-dlc-1.0.0-r1.ebuild b/chromeos-base/sample-dlc/sample-dlc-1.0.0-r3.ebuild
similarity index 100%
rename from chromeos-base/sample-dlc/sample-dlc-1.0.0-r1.ebuild
rename to chromeos-base/sample-dlc/sample-dlc-1.0.0-r3.ebuild
diff --git a/chromeos-base/sample-dlc/sample-dlc-1.0.0.ebuild b/chromeos-base/sample-dlc/sample-dlc-1.0.0.ebuild
index 47cd82c..4a5a8955 100644
--- a/chromeos-base/sample-dlc/sample-dlc-1.0.0.ebuild
+++ b/chromeos-base/sample-dlc/sample-dlc-1.0.0.ebuild
@@ -15,8 +15,8 @@
 LICENSE="BSD-Google"
 SLOT="0"
 KEYWORDS="*"
-IUSE="dlc"
-REQUIRED_USE="dlc"
+IUSE="dlc dlc_test"
+REQUIRED_USE="dlc dlc_test"
 
 # Required
 DLC_PREALLOC_BLOCKS="1024"
@@ -55,7 +55,7 @@
 	insinto "$(dlc_add_path /opt)"
 	exeinto "$(dlc_add_path /opt)"
 
-	echo seed | newins - seed
+	echo ${seed} | newins - seed
 
 	local n
 	for n in {1..3}; do
diff --git a/chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r13.ebuild b/chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r13.ebuild
deleted file mode 100644
index cf7aef7..0000000
--- a/chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r13.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="719d7ad1c3c6451d4ee1e50f33bf032e0f2fecd2"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "87425e8ce0b739c39c6e03febd179b9d850ad295" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="common-mk screen-capture-utils .gn"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-
-PLATFORM_SUBDIR="screen-capture-utils"
-
-inherit cros-workon platform
-
-DESCRIPTION="Utilities for screen capturing"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/screen-capture-utils/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-# Mark the old screenshot package as blocker so it gets automatically removed in
-# incremental builds.
-RDEPEND="
-	!chromeos-base/screenshot
-	media-libs/libpng:0=
-	media-libs/minigbm:=
-	x11-libs/libdrm:=
-	virtual/opengles"
-
-DEPEND="${RDEPEND}
-	x11-drivers/opengles-headers"
-
-src_install() {
-	dosbin "${OUT}/screenshot"
-}
diff --git a/chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r88.ebuild b/chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r88.ebuild
new file mode 100644
index 0000000..203de09
--- /dev/null
+++ b/chromeos-base/screen-capture-utils/screen-capture-utils-0.0.1-r88.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="0553127ef2b660a5c71f12a9417ed4ad35f07120"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "4abc9fac8153750a03865f00a60126fc46c47d5f" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+# TODO(crbug.com/809389): remove 'metrics' pulled in from header dependency.
+CROS_WORKON_SUBTREE="common-mk screen-capture-utils metrics .gn"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+PLATFORM_SUBDIR="screen-capture-utils"
+
+inherit cros-workon platform
+
+DESCRIPTION="Utilities for screen capturing"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/screen-capture-utils/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+# Mark the old screenshot package as blocker so it gets automatically removed in
+# incremental builds.
+RDEPEND="
+	chromeos-base/metrics
+	!chromeos-base/screenshot
+	media-libs/libpng:0=
+	media-libs/minigbm:=
+	net-libs/libvncserver
+	x11-libs/libdrm:=
+	virtual/opengles"
+
+DEPEND="${RDEPEND}
+	x11-drivers/opengles-headers"
+
+src_install() {
+	dosbin "${OUT}/kmsvnc"
+	dosbin "${OUT}/screenshot"
+}
diff --git a/chromeos-base/screen-capture-utils/screen-capture-utils-9999.ebuild b/chromeos-base/screen-capture-utils/screen-capture-utils-9999.ebuild
index 2015a18..5caaa33 100644
--- a/chromeos-base/screen-capture-utils/screen-capture-utils-9999.ebuild
+++ b/chromeos-base/screen-capture-utils/screen-capture-utils-9999.ebuild
@@ -5,7 +5,8 @@
 
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="common-mk screen-capture-utils .gn"
+# TODO(crbug.com/809389): remove 'metrics' pulled in from header dependency.
+CROS_WORKON_SUBTREE="common-mk screen-capture-utils metrics .gn"
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_INCREMENTAL_BUILD=1
 
@@ -23,9 +24,11 @@
 # Mark the old screenshot package as blocker so it gets automatically removed in
 # incremental builds.
 RDEPEND="
+	chromeos-base/metrics
 	!chromeos-base/screenshot
 	media-libs/libpng:0=
 	media-libs/minigbm:=
+	net-libs/libvncserver
 	x11-libs/libdrm:=
 	virtual/opengles"
 
@@ -33,5 +36,6 @@
 	x11-drivers/opengles-headers"
 
 src_install() {
+	dosbin "${OUT}/kmsvnc"
 	dosbin "${OUT}/screenshot"
 }
diff --git a/chromeos-base/sealed_storage/sealed_storage-0.0.1-r276.ebuild b/chromeos-base/sealed_storage/sealed_storage-0.0.1-r276.ebuild
deleted file mode 100644
index 51a9da8..0000000
--- a/chromeos-base/sealed_storage/sealed_storage-0.0.1-r276.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5fc770072f3c76a5fff2f346ec832ddc44970226"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "384813f5d95af6db62e2f5487c196bf00e11c993" "e3bf102d9535965e9911dc352202c6927e8f5514" "20ed8021024637e492670d20fa5969a2ad75e4b6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 sealed_storage tpm_manager trunks .gn"
-
-PLATFORM_SUBDIR="sealed_storage"
-
-inherit cros-workon platform
-
-DESCRIPTION="Library for sealing data to device identity and state"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/sealed_storage"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-IUSE="test tpm2"
-
-REQUIRED_USE="tpm2"
-COMMON_DEPEND="
-	chromeos-base/tpm_manager:=[test?]
-	chromeos-base/trunks:=[test?]
-"
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/protofiles:=
-	chromeos-base/system_api:=
-"
-
-src_install() {
-	dosbin "${OUT}"/sealed_storage_tool
-	dolib.a "${OUT}"/libsealed_storage.a
-	dolib.so "${OUT}"/lib/libsealed_storage_wrapper.so
-
-	insinto /usr/include/chromeos/sealed_storage
-	doins sealed_storage.h
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/sealed_storage_testrunner"
-}
diff --git a/chromeos-base/sealed_storage/sealed_storage-0.0.1-r349.ebuild b/chromeos-base/sealed_storage/sealed_storage-0.0.1-r349.ebuild
new file mode 100644
index 0000000..79e5b9b
--- /dev/null
+++ b/chromeos-base/sealed_storage/sealed_storage-0.0.1-r349.ebuild
@@ -0,0 +1,49 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f563528fd35a0e55348afa3545ed57af4b86bdbc"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8c9a3cf268c90fb53e2168f7124f6fa15c1d9f12" "8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6" "a06a3f47395fb7b584188c6852764bc773e5497e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 sealed_storage tpm_manager trunks .gn"
+
+PLATFORM_SUBDIR="sealed_storage"
+
+inherit cros-workon platform
+
+DESCRIPTION="Library for sealing data to device identity and state"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/sealed_storage"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+IUSE="test tpm2"
+
+REQUIRED_USE="tpm2"
+COMMON_DEPEND="
+	chromeos-base/tpm_manager:=[test?]
+	chromeos-base/trunks:=[test?]
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/protofiles:=
+	chromeos-base/system_api:=
+"
+
+src_install() {
+	dosbin "${OUT}"/sealed_storage_tool
+	dolib.a "${OUT}"/libsealed_storage.a
+	dolib.so "${OUT}"/lib/libsealed_storage_wrapper.so
+
+	insinto /usr/include/chromeos/sealed_storage
+	doins sealed_storage.h
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/sealed_storage_testrunner"
+}
diff --git a/chromeos-base/secanomalyd/OWNERS b/chromeos-base/secanomalyd/OWNERS
new file mode 100644
index 0000000..320b96a
--- /dev/null
+++ b/chromeos-base/secanomalyd/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/secanomalyd/OWNERS
diff --git a/chromeos-base/secanomalyd/secanomalyd-0.0.1-r46.ebuild b/chromeos-base/secanomalyd/secanomalyd-0.0.1-r46.ebuild
new file mode 100644
index 0000000..0266b02
--- /dev/null
+++ b/chromeos-base/secanomalyd/secanomalyd-0.0.1-r46.ebuild
@@ -0,0 +1,49 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="cadd7af14b485bf3b31dabf1088ba2defa7d93bb"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "f5e4a2744562739c141e10842394812115ba314e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk metrics secanomalyd .gn"
+
+PLATFORM_SUBDIR="secanomalyd"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Chrome OS security-anomaly detection daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/secanomalyd/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	chromeos-base/metrics:=
+	chromeos-base/vboot_reference:=
+"
+RDEPEND="${COMMON_DEPEND}
+	chromeos-base/minijail:=
+"
+DEPEND="${COMMON_DEPEND}"
+
+pkg_setup() {
+	enewuser "secanomaly"
+	enewgroup "secanomaly"
+
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	dosbin "${OUT}"/secanomalyd
+
+	# Install Upstart configuration.
+	insinto /etc/init
+	doins secanomalyd.conf
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/secanomalyd_testrunner"
+}
diff --git a/chromeos-base/secanomalyd/secanomalyd-9999.ebuild b/chromeos-base/secanomalyd/secanomalyd-9999.ebuild
new file mode 100644
index 0000000..1fdff92
--- /dev/null
+++ b/chromeos-base/secanomalyd/secanomalyd-9999.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk metrics secanomalyd .gn"
+
+PLATFORM_SUBDIR="secanomalyd"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Chrome OS security-anomaly detection daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/secanomalyd/"
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+
+COMMON_DEPEND="
+	chromeos-base/metrics:=
+	chromeos-base/vboot_reference:=
+"
+RDEPEND="${COMMON_DEPEND}
+	chromeos-base/minijail:=
+"
+DEPEND="${COMMON_DEPEND}"
+
+pkg_setup() {
+	enewuser "secanomaly"
+	enewgroup "secanomaly"
+
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	dosbin "${OUT}"/secanomalyd
+
+	# Install Upstart configuration.
+	insinto /etc/init
+	doins secanomalyd.conf
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/secanomalyd_testrunner"
+}
diff --git a/chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r903.ebuild b/chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r903.ebuild
deleted file mode 100644
index ebe9e4f..0000000
--- a/chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r903.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4f428eceb77ddeae2a9cdbc99367fd321c975f15" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk secure_erase_file .gn"
-
-PLATFORM_SUBDIR="secure_erase_file"
-
-inherit cros-workon platform
-
-DESCRIPTION="Secure file erasure for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/secure_erase_file/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="
-"
-
-RDEPEND="
-"
-
-src_install() {
-	dobin "${OUT}/secure_erase_file"
-	dolib.so "${OUT}/lib/libsecure_erase_file.so"
-
-	insinto /usr/include/chromeos/secure_erase_file
-	doins secure_erase_file.h
-}
diff --git a/chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r929.ebuild b/chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r929.ebuild
new file mode 100644
index 0000000..893f625
--- /dev/null
+++ b/chromeos-base/secure-erase-file/secure-erase-file-0.0.1-r929.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "1a305e65cfaf27dd42734a37eda080d40b377d6c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk secure_erase_file .gn"
+
+PLATFORM_SUBDIR="secure_erase_file"
+
+inherit cros-workon platform
+
+DESCRIPTION="Secure file erasure for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/secure_erase_file/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+"
+
+RDEPEND="
+"
+
+src_install() {
+	dobin "${OUT}/secure_erase_file"
+	dolib.so "${OUT}/lib/libsecure_erase_file.so"
+
+	insinto /usr/include/chromeos/secure_erase_file
+	doins secure_erase_file.h
+}
diff --git a/chromeos-base/secure-wipe/secure-wipe-0.0.1-r124.ebuild b/chromeos-base/secure-wipe/secure-wipe-0.0.1-r124.ebuild
deleted file mode 100644
index dba7579..0000000
--- a/chromeos-base/secure-wipe/secure-wipe-0.0.1-r124.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2019 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "898687cfd878621b0aa42a27138c8a6c72210b16" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_SUBTREE="common-mk secure-wipe .gn"
-
-PLATFORM_SUBDIR="secure-wipe"
-
-inherit cros-workon platform
-
-DESCRIPTION="Secure wipe"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/secure-wipe/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="mmc nvme sata test"
-
-DEPEND=""
-
-RDEPEND="
-	app-misc/jq
-	sata? ( sys-apps/hdparm )
-	mmc? ( sys-apps/mmc-utils )
-	nvme? ( sys-apps/nvme-cli )
-	sys-apps/util-linux
-	sys-block/fio"
-
-src_test() {
-	tests/factory_verify_test.sh || die "unittest failed"
-}
-
-src_install() {
-	dosbin secure-wipe.sh
-	dosbin wipe_disk
-}
diff --git a/chromeos-base/secure-wipe/secure-wipe-0.0.1-r149.ebuild b/chromeos-base/secure-wipe/secure-wipe-0.0.1-r149.ebuild
new file mode 100644
index 0000000..f3edb4e
--- /dev/null
+++ b/chromeos-base/secure-wipe/secure-wipe-0.0.1-r149.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2019 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "898687cfd878621b0aa42a27138c8a6c72210b16" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_SUBTREE="common-mk secure-wipe .gn"
+
+PLATFORM_SUBDIR="secure-wipe"
+
+inherit cros-workon platform
+
+DESCRIPTION="Secure wipe"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/secure-wipe/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="mmc nvme sata test"
+
+DEPEND=""
+
+RDEPEND="
+	app-misc/jq
+	sata? ( sys-apps/hdparm )
+	mmc? ( sys-apps/mmc-utils )
+	nvme? ( sys-apps/nvme-cli )
+	sys-apps/util-linux
+	sys-block/fio"
+
+src_test() {
+	tests/factory_verify_test.sh || die "unittest failed"
+}
+
+src_install() {
+	dosbin secure-wipe.sh
+	dosbin wipe_disk
+}
diff --git a/chromeos-base/selinux-policy/selinux-policy-0.0.1-r244.ebuild b/chromeos-base/selinux-policy/selinux-policy-0.0.1-r244.ebuild
deleted file mode 100644
index 2e5efce..0000000
--- a/chromeos-base/selinux-policy/selinux-policy-0.0.1-r244.ebuild
+++ /dev/null
@@ -1,391 +0,0 @@
-# Copyright 2018 The Chromium Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b52f5cd0677f40bb863e7f8a9308f344fd5520c6"
-CROS_WORKON_TREE="a03be4b13a6a45e70a847544d05370fe7d47580b"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="sepolicy"
-
-inherit cros-workon udev
-
-DESCRIPTION="Chrome OS SELinux Policy Package"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="
-	android-container-pi
-	android-vm-master
-	android-vm-rvc
-	selinux_audit_all selinux_develop selinux_experimental
-	arc_first_release_n
-	nocheck
-	cheets_user cheets_user_64
-"
-DEPEND="
-	android-container-pi? ( chromeos-base/android-container-pi:0= )
-	android-vm-master? ( chromeos-base/android-vm-master:0= )
-	android-vm-rvc? ( chromeos-base/android-vm-rvc:0= )
-"
-
-RDEPEND="
-	${DEPEND}
-	sys-apps/restorecon
-	sys-process/audit
-"
-
-SELINUX_VERSION="30"
-SEPOLICY_FILENAME="policy.${SELINUX_VERSION}"
-
-MLS_NUM_SENS=1
-MLS_NUM_CATS=1024
-CHROME_POLICY_FILES_PATTERN=(
-	security_classes
-	initial_sids
-	access_vectors
-	global_macros
-	chromeos_macros
-	neverallow_macros
-	mls_macros
-	mls_decl
-	mls
-	policy_capabilities
-	te_macros
-	attributes
-	ioctl_defines
-	ioctl_macros
-	"*.te"
-	roles_decl
-	roles
-	users
-	initial_sid_contexts
-	fs_use
-	genfs_contexts
-)
-
-# Files under $SEPATH are built by android-container-* in DEPEND.
-SEPATH="${SYSROOT}/etc/selinux/intermediates/"
-
-# -M Build MLS policy.
-# -G expand and remove auto-generated attributes.
-# -N ignore neverallow rules (checked during Android build)
-# -m allow multiple declaration (combination of rules of multiple source)
-SECILC_ARGS=(
-	-M true -G -N -m
-	-c "${SELINUX_VERSION}"
-	-o "${SEPOLICY_FILENAME}"
-	-f /dev/null
-)
-
-SECILC_ARGS_CHECK_NEVERALLOW=(
-	-M true -G -m
-	-c "${SELINUX_VERSION}"
-	-o /dev/null
-	-f /dev/null
-)
-
-# Common flags for m4
-M4_COMMON_FLAGS=(
-)
-
-# Remove all lines existed in $1 from /dev/stdin.
-# and remove all lines begin with "^;" (cil comment)
-# remove cil comment is necessary for clearing unmatched line marker
-# after base policy definitions are removed.
-# Also preserve type definitions since secilc can handle duplicates on
-# definition of types.
-filter_file_line_by_line() {
-	perl -e '
-		my @reflines;
-		open(my $ref, "<", $ARGV[0]);
-		while(<$ref>) { push @reflines, $_; }
-		while(<STDIN>) {
-			if ( m/^\(type / ) { print; next; }
-			if ( m/^;/ ) { next; }
-			if ($_ ~~ @reflines) { next; }
-			print
-		}
-	' "$1"
-}
-
-# Quick hack for conflicting generated base_typeattr_XX with
-# non-versioned Android cil.
-# A better solution could be to use libsepol to parse and process
-# cil to modify it.
-version_cil() {
-	sed -e 's/base_typeattr_\([0-9]*\)/base_typeattr_cros_\1/g'
-}
-
-has_arc() {
-	use android-container-pi || use android-vm-rvc || use android-vm-master
-}
-
-gen_m4_flags() {
-	M4_COMMON_FLAGS=()
-	local arc_version="none"
-	if use android-container-pi; then
-		arc_version="p"
-	elif use android-vm-rvc; then
-		arc_version="r"
-	elif use android-vm-master; then
-		arc_version="master"
-	fi
-	M4_COMMON_FLAGS+=(
-		"-Darc_version=${arc_version}"
-		"-Duse_selinux_develop=$(usex selinux_develop y n)"
-		"-Duse_arc_first_release_n=$(usex arc_first_release_n y n)"
-	)
-	einfo "m4 flags: ${M4_COMMON_FLAGS[*]}"
-}
-
-# Build SELinux intermediate language files.
-# Look into SELinux policies in given directories, and
-# pre-compile with m4 macro preprocessor, and merge them into
-# a monothilic SELinux policy, and then compile it into
-# intermediate files using checkpolicy compiler.
-build_cil() {
-	local policy_files=()
-	local ciltype="$1"
-	shift
-	local output="$1"
-	shift
-	local pattern
-	for pattern in "${CHROME_POLICY_FILES_PATTERN[@]}"; do
-		local path
-		for path in "$@"; do
-			local file
-			while read -r -d $'\0' file; do
-				policy_files+=("${file}")
-			done < <(find "${path}" -xtype f -name "${pattern}" -print0)
-		done
-	done
-	m4 "-Dmls_num_sens=${MLS_NUM_SENS}" "-Dmls_num_cats=${MLS_NUM_CATS}" \
-		"${M4_COMMON_FLAGS[@]}" \
-		"-Dciltype=${ciltype}" \
-		-s "${policy_files[@]}" > "${output}.conf" \
-		|| die "failed to generate ${output}.conf"
-	checkpolicy -M -C -c "${SELINUX_VERSION}" "${output}.conf" \
-		-o "${output}" || die "failed to build $output"
-}
-
-build_android_reqd_cil() {
-	build_cil reqd "android_reqd.cil" "sepolicy/policy/base/" "sepolicy/policy/mask_only/"
-}
-
-build_chromeos_policy() {
-	build_android_reqd_cil
-
-	build_cil cros "chromeos.raw.cil" "sepolicy/policy/base/" "sepolicy/policy/chromeos_base" "sepolicy/policy/chromeos/"
-	version_cil < chromeos.raw.cil > chromeos.raw.versioned.cil
-	secilc "${SECILC_ARGS_CHECK_NEVERALLOW[@]}" chromeos.raw.cil ||
-		die "some Chrome OS neverallows are not satisfied"
-	filter_file_line_by_line android_reqd.cil < chromeos.raw.versioned.cil > chromeos.cil ||
-		die "failed to convert raw cil to filtered cil"
-}
-
-build_file_contexts() {
-	einfo "Compiling chromeos_file_contexts"
-	m4 "${M4_COMMON_FLAGS[@]}" "sepolicy/file_contexts/macros" \
-		"sepolicy/file_contexts/chromeos_file_contexts" > chromeos_file_contexts ||
-		die "failed to build chromeos file contexts"
-}
-
-check_filetrans_defined_in_file_contexts() {
-	einfo "Verifying policy and file_contexts for filetrans_pattern"
-	_is_empty() {
-		local err=0
-		while read line; do
-			if [[ "$err" -eq "0" ]]; then
-				ewarn "Expected to find these lines in file_contexts, but were not found:"
-				err=1
-			fi
-			ewarn "$line"
-		done
-		return $err
-	}
-	# filetrans is a kind of typetransition. Typetrasition is described like
-	# the following in a .cil file:
-	# (typetransition source target class new_type) or
-	# (typetransition source target class object_name new_type)
-	# We only want to verify where
-	#  - both source and target are not tmpfs-related.
-	#  - source is not unconfined domain: chromeos
-	#  - type is not process since we only care file typetransition.
-	cat chromeos.cil | awk '
-		/^\(typetransition/	{
-						context=substr($NF,0,length($NF)-1)
-						if ($4=="process"||$2=="chromeos") next;
-						if(context ~/cros_.*tmp_file/) next; # Created an cros_.*_tmp_file
-						if(context ~/(device|rootfs|tmpfs)/) next; # Created a file labeled as device, tmpfs, or rootfs.
-						if($3 ~/^(cros_run(_.*)?|cros_.*tmp_file|tmpfs|arc_dir)$/) next; # Create a file in tmpfs.
-						if(NF==6) { print substr($5,2,length($5)-2) ".*u:object_r:" context ":s0" }
-						else { print "u:object_r:" context ":s0" }
-					}
-	' | sort -u | xargs -d'\n' -n 1 sh -c 'grep $0 file_contexts >/dev/null || echo $0' | _is_empty
-}
-
-# cat cil-file | get_attributed_type(attribute) => types separated by spaces
-get_attributed_type() {
-	local attr="$1"
-	grep "(typeattributeset ${attr} (" | sed -e "s/^(typeattributeset ${attr} (//g" | sed -e 's/ ))$//g'
-}
-
-# check_attribute_include attr subattr1 subattr2 subattr3 ... excluded_type1 excluded_type2 ...
-check_attribute_include() {
-	local poolname="$1"
-	shift 1
-	einfo "Checking type set (attribute ${poolname}) equals to union of type sets of (attribute $@)"
-	local pool="$(cat chromeos.cil | get_attributed_type "${poolname}" | tr ' ' '\n')"
-	local remaining_types="$pool"
-	for attr in $@; do
-		remaining_types="$(echo "$remaining_types" | egrep -v "^$attr$")"
-		for t in `cat chromeos.cil | get_attributed_type "${attr}"`; do
-			if ! grep "$t" <(echo "$pool") >/dev/null; then
-				die "${t} type should have attribute ${poolname} to have attribute ${attr}"
-			fi
-			remaining_types="$(echo "$remaining_types" | egrep -v "^$t$")"
-		done
-	done
-	if ! [[ -z "$remaining_types" ]]; then
-		die "Types with attribute $poolname should have at least one of $@, but these doesn't: \n$(echo "${remaining_types}" | tr '\n' ' ')"
-	fi
-}
-
-check_file_type_and_attribute() {
-	einfo "Checking file types and their attributes"
-	check_attribute_include file_type cros_file_type unlabeled system_data_file media_data_file android_file_type
-	check_attribute_include cros_file_type cros_system_file_type cros_tmpfile_type cros_home_file_type cros_var_file_type cros_run_file_type cros_uncategorized_file_type
-}
-
-src_compile() {
-	gen_m4_flags
-
-	build_chromeos_policy
-	build_file_contexts
-
-	cp -r "${SEPATH}" intermediate_policy
-
-	if use selinux_audit_all; then
-		find intermediate_policy/ -xtype f -name '*.cil' -exec \
-			sed -i 's/^(dontaudit .*//g' {} \;
-		sed -i 's/^(dontaudit .*//g' chromeos.cil
-		sed -i 's/^(dontaudit .*//g' chromeos.raw.cil
-	fi
-
-	local cilpath="$(pwd)/intermediate_policy"
-
-	if has_arc; then
-		einfo "Removing duplicate nnp_nosuid_transition policycap from Android cil"
-		sed -i '/^(policycap nnp_nosuid_transition)$/d' "${cilpath}"/*.cil || die
-
-		einfo "Combining Chrome OS and Android SELinux policy"
-		secilc "${SECILC_ARGS[@]}" "${cilpath}/plat_sepolicy.cil" \
-			"${cilpath}/mapping.cil" \
-			"${cilpath}/plat_pub_versioned.cil" \
-			"${cilpath}/vendor_sepolicy.cil" \
-			chromeos.cil || die "fail to build sepolicy"
-
-		# Add header/footer around ARC++ contexts, so they can be
-		# correctly replaced when pushing new Android builds using
-		# push_to_device.py.
-		(
-			cat "chromeos_file_contexts" &&
-			echo -e "\n# BEGIN_ARC_FILE_CONTEXTS" &&
-			cat "${SYSROOT}/etc/selinux/intermediates/arc_file_contexts" &&
-			echo -e "\n# END_ARC_FILE_CONTEXTS"
-		) > file_contexts || die "failed to combine *_file_contexts files"
-
-	else
-		# Chrome OS without ARC++ only.
-		einfo "Use Chrome OS-only SELinux policy."
-
-		secilc "${SECILC_ARGS[@]}" chromeos.raw.cil || die "fail to build sepolicy"
-		cp "chromeos_file_contexts" file_contexts \
-			|| die "didn't find chromeos_file_contexts for file_contexts"
-	fi
-
-	check_filetrans_defined_in_file_contexts \
-		|| die "failed to check consistency between filetrans_pattern and file_contexts"
-
-	if use nocheck; then
-		ewarn "Some post-compile checks are skipped. Please remove nocheck from your USE flag"
-	else
-		einfo 'Use USE="$USE nocheck" emerge-$BOARD selinux-policy to speed up emerge for development purpose'.
-		check_file_type_and_attribute
-	fi
-}
-
-src_install() {
-	insinto /etc/selinux/arc/contexts/files
-	doins file_contexts
-
-	insinto /etc/selinux
-	if use selinux_experimental; then
-		newins "${FILESDIR}/selinux_config_experimental" config
-	else
-		newins "${FILESDIR}/selinux_config" config
-	fi
-
-	insinto /etc/selinux/arc/policy
-	doins "${SEPOLICY_FILENAME}"
-
-	if use selinux_develop; then
-		insinto /etc/init
-		doins "${FILESDIR}/selinux_debug.conf"
-		dobin "${FILESDIR}/audit_log_since_boot"
-	fi
-
-	if has_arc; then
-		# Install ChromeOS cil so push_to_device.py can compile a new
-		# version of SELinux policy.
-		insinto /etc/selinux/intermediates.raw/
-		doins chromeos.cil
-	fi
-
-	udev_dorules "${FILESDIR}/50-selinux.rules"
-}
-
-src_test() {
-	local neverallowjava="${SYSROOT}/etc/selinux/intermediates/SELinuxNeverallowRulesTest.java"
-	if [ ! -f "${SYSROOT}/etc/selinux/intermediates/SELinuxNeverallowRulesTest.java" ]; then
-		ewarn "No SELinuxNeverallowRulesTest.java found. CTS neverallow pre-test is skipped."
-		return
-	fi
-
-	# Extract 'String neverallowRule = "neverallow ...";' lines from the Java source code and
-	# write the extracted lines to ./neverallows. We have two scripts below as Android P and R+
-	# use slightly different code styles.
-	if use android-vm-rvc || use android-vm-master; then
-		(
-			grep "boolean compatiblePropertyOnly = false;" -B 3 |
-			grep "boolean launchingWithROnly = false;" -B 2 |
-			grep "boolean fullTrebleOnly = false;" -B 1 |
-			grep neverallowRule |
-			sed -E 's/.*"(neverallow.*)";/\1/g'
-		) < "${neverallowjava}" > neverallows
-	else
-		(
-			grep "boolean compatiblePropertyOnly = false;" -B 2 |
-			grep "boolean fullTrebleOnly = false;" -B 1 |
-			grep neverallowRule |
-			sed -E 's/.*"(neverallow.*)";/\1/g'
-		) < "${neverallowjava}" > neverallows
-	fi
-
-	local loc="$(wc -l neverallows | awk '{print $1;}')"
-	if [[ "${loc}" -lt "100" ]]; then
-		die "too few test cases. something is wrong."
-	fi
-	if use android-vm-rvc || use android-vm-master; then
-		# We only run SELinux CTS against the guest-side policy. Skipping the test.
-		return
-	fi
-	local cur=0
-	while read -r rule; do
-		cur=$((cur+1))
-		printf "Checking neverallow rules: %d/%d\r" "$cur" "$loc"
-		sepolicy-analyze "${SEPOLICY_FILENAME}" neverallow -n "$rule" || (echo failed for "$rule"; die)
-	done < neverallows
-}
diff --git a/chromeos-base/selinux-policy/selinux-policy-0.0.1-r339.ebuild b/chromeos-base/selinux-policy/selinux-policy-0.0.1-r339.ebuild
new file mode 100644
index 0000000..00b98fb
--- /dev/null
+++ b/chromeos-base/selinux-policy/selinux-policy-0.0.1-r339.ebuild
@@ -0,0 +1,395 @@
+# Copyright 2018 The Chromium Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="a7d83f416a8915930ffebb61280f935300244c5c"
+CROS_WORKON_TREE="f51d612a47b82796078faca5ec54f1d83ef9a703"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="sepolicy"
+
+inherit cros-workon udev
+
+DESCRIPTION="Chrome OS SELinux Policy Package"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+# Keep this in sync with has_arc().
+IUSE="
+	android-container-pi
+	android-vm-master
+	android-vm-rvc
+	android-vm-sc
+	selinux_audit_all selinux_develop selinux_experimental
+	arc_first_release_n
+	nocheck
+	cheets_user cheets_user_64
+"
+DEPEND="
+	android-container-pi? ( chromeos-base/android-container-pi:0= )
+	android-vm-master? ( chromeos-base/android-vm-master:0= )
+	android-vm-rvc? ( chromeos-base/android-vm-rvc:0= )
+	android-vm-sc? ( chromeos-base/android-vm-sc:0= )
+"
+
+RDEPEND="
+	${DEPEND}
+	sys-apps/restorecon
+	sys-process/audit
+"
+
+SELINUX_VERSION="30"
+SEPOLICY_FILENAME="policy.${SELINUX_VERSION}"
+
+MLS_NUM_SENS=1
+MLS_NUM_CATS=1024
+CHROME_POLICY_FILES_PATTERN=(
+	security_classes
+	initial_sids
+	access_vectors
+	global_macros
+	chromeos_macros
+	neverallow_macros
+	mls_macros
+	mls_decl
+	mls
+	policy_capabilities
+	te_macros
+	attributes
+	ioctl_defines
+	ioctl_macros
+	chromeos_ioctl_defines
+	chromeos_ioctl_macros
+	"*.te"
+	roles_decl
+	roles
+	users
+	initial_sid_contexts
+	fs_use
+	genfs_contexts
+)
+
+# Files under $SEPATH are built by android-container-* in DEPEND.
+SEPATH="${SYSROOT}/etc/selinux/intermediates/"
+
+# -M Build MLS policy.
+# -G expand and remove auto-generated attributes.
+# -N ignore neverallow rules (checked during Android build)
+# -m allow multiple declaration (combination of rules of multiple source)
+SECILC_ARGS=(
+	-M true -G -N -m
+	-c "${SELINUX_VERSION}"
+	-o "${SEPOLICY_FILENAME}"
+	-f /dev/null
+)
+
+SECILC_ARGS_CHECK_NEVERALLOW=(
+	-M true -G -m
+	-c "${SELINUX_VERSION}"
+	-o /dev/null
+	-f /dev/null
+)
+
+# Common flags for m4
+M4_COMMON_FLAGS=(
+)
+
+# Remove all lines existed in $1 from /dev/stdin.
+# and remove all lines begin with "^;" (cil comment)
+# remove cil comment is necessary for clearing unmatched line marker
+# after base policy definitions are removed.
+# Also preserve type definitions since secilc can handle duplicates on
+# definition of types.
+filter_file_line_by_line() {
+	perl -e '
+		my @reflines;
+		open(my $ref, "<", $ARGV[0]);
+		while(<$ref>) { push @reflines, $_; }
+		while(<STDIN>) {
+			if ( m/^\(type / ) { print; next; }
+			if ( m/^;/ ) { next; }
+			if ($_ ~~ @reflines) { next; }
+			print
+		}
+	' "$1"
+}
+
+# Quick hack for conflicting generated base_typeattr_XX with
+# non-versioned Android cil.
+# A better solution could be to use libsepol to parse and process
+# cil to modify it.
+version_cil() {
+	sed -e 's/base_typeattr_\([0-9]*\)/base_typeattr_cros_\1/g'
+}
+
+# Keep this in sync with IUSE/DEPEND.
+has_arc() {
+	use android-container-pi ||
+	use android-vm-rvc ||
+	use android-vm-sc ||
+	use android-vm-master
+}
+
+gen_m4_flags() {
+	M4_COMMON_FLAGS=()
+	local arc_version="none"
+	if use android-container-pi; then
+		arc_version="p"
+	elif use android-vm-rvc; then
+		arc_version="r"
+	elif use android-vm-sc; then
+		arc_version="s"
+	elif use android-vm-master; then
+		arc_version="master"
+	fi
+	M4_COMMON_FLAGS+=(
+		"-Darc_version=${arc_version}"
+		"-Duse_selinux_develop=$(usex selinux_develop y n)"
+		"-Duse_arc_first_release_n=$(usex arc_first_release_n y n)"
+	)
+	einfo "m4 flags: ${M4_COMMON_FLAGS[*]}"
+}
+
+# Build SELinux intermediate language files.
+# Look into SELinux policies in given directories, and
+# pre-compile with m4 macro preprocessor, and merge them into
+# a monothilic SELinux policy, and then compile it into
+# intermediate files using checkpolicy compiler.
+build_cil() {
+	local policy_files=()
+	local ciltype="$1"
+	shift
+	local output="$1"
+	shift
+	local pattern
+	for pattern in "${CHROME_POLICY_FILES_PATTERN[@]}"; do
+		local path
+		for path in "$@"; do
+			local file
+			while read -r -d $'\0' file; do
+				policy_files+=("${file}")
+			done < <(find "${path}" -xtype f -name "${pattern}" -print0)
+		done
+	done
+	m4 "-Dmls_num_sens=${MLS_NUM_SENS}" "-Dmls_num_cats=${MLS_NUM_CATS}" \
+		"${M4_COMMON_FLAGS[@]}" \
+		"-Dciltype=${ciltype}" \
+		-s "${policy_files[@]}" > "${output}.conf" \
+		|| die "failed to generate ${output}.conf"
+	checkpolicy -M -C -c "${SELINUX_VERSION}" "${output}.conf" \
+		-o "${output}" || die "failed to build $output"
+}
+
+build_android_reqd_cil() {
+	build_cil reqd "android_reqd.cil" "sepolicy/policy/base/" "sepolicy/policy/mask_only/"
+}
+
+build_chromeos_policy() {
+	build_android_reqd_cil
+
+	build_cil cros "chromeos.raw.cil" "sepolicy/policy/base/" "sepolicy/policy/chromeos_base" "sepolicy/policy/chromeos/"
+	version_cil < chromeos.raw.cil > chromeos.raw.versioned.cil
+	secilc "${SECILC_ARGS_CHECK_NEVERALLOW[@]}" chromeos.raw.cil ||
+		die "some Chrome OS neverallows are not satisfied"
+	filter_file_line_by_line android_reqd.cil < chromeos.raw.versioned.cil > chromeos.cil ||
+		die "failed to convert raw cil to filtered cil"
+}
+
+build_file_contexts() {
+	einfo "Compiling chromeos_file_contexts"
+	m4 "${M4_COMMON_FLAGS[@]}" "sepolicy/file_contexts/macros" \
+		"sepolicy/file_contexts/chromeos_file_contexts" > chromeos_file_contexts ||
+		die "failed to build chromeos file contexts"
+}
+
+check_filetrans_defined_in_file_contexts() {
+	einfo "Verifying policy and file_contexts for filetrans_pattern"
+	_is_empty() {
+		local err=0
+		while read line; do
+			if [[ "$err" -eq "0" ]]; then
+				ewarn "Expected to find these lines in file_contexts, but were not found:"
+				err=1
+			fi
+			ewarn "$line"
+		done
+		return $err
+	}
+	# filetrans is a kind of typetransition. Typetrasition is described like
+	# the following in a .cil file:
+	# (typetransition source target class new_type) or
+	# (typetransition source target class object_name new_type)
+	# We only want to verify where
+	#  - both source and target are not tmpfs-related.
+	#  - source is not unconfined domain: chromeos
+	#  - type is not process since we only care file typetransition.
+	cat chromeos.cil | awk '
+		/^\(typetransition/	{
+						context=substr($NF,0,length($NF)-1)
+						if ($4=="process"||$2=="chromeos") next;
+						if(context ~/cros_.*tmp_file/) next; # Created an cros_.*_tmp_file
+						if(context ~/(device|rootfs|tmpfs)/) next; # Created a file labeled as device, tmpfs, or rootfs.
+						if($3 ~/^(cros_run(_.*)?|cros_.*tmp_file|tmpfs|arc_dir)$/) next; # Create a file in tmpfs.
+						if(NF==6) { print substr($5,2,length($5)-2) ".*u:object_r:" context ":s0" }
+						else { print "u:object_r:" context ":s0" }
+					}
+	' | sort -u | xargs -d'\n' -n 1 sh -c 'grep $0 file_contexts >/dev/null || echo $0' | _is_empty
+}
+
+# cat cil-file | get_attributed_type(attribute) => types separated by spaces
+get_attributed_type() {
+	local attr="$1"
+	grep "(typeattributeset ${attr} (" | sed -e "s/^(typeattributeset ${attr} (//g" | sed -e 's/ ))$//g'
+}
+
+# check_attribute_include attr subattr1 subattr2 subattr3 ... excluded_type1 excluded_type2 ...
+check_attribute_include() {
+	local poolname="$1"
+	shift 1
+	einfo "Checking type set (attribute ${poolname}) equals to union of type sets of (attribute $@)"
+	local pool="$(cat chromeos.cil | get_attributed_type "${poolname}" | tr ' ' '\n')"
+	local remaining_types="$pool"
+	for attr in $@; do
+		remaining_types="$(echo "$remaining_types" | egrep -v "^$attr$")"
+		for t in `cat chromeos.cil | get_attributed_type "${attr}"`; do
+			if ! grep "$t" <(echo "$pool") >/dev/null; then
+				die "${t} type should have attribute ${poolname} to have attribute ${attr}"
+			fi
+			remaining_types="$(echo "$remaining_types" | egrep -v "^$t$")"
+		done
+	done
+	if ! [[ -z "$remaining_types" ]]; then
+		die "Types with attribute $poolname should have at least one of $@, but these doesn't: \n$(echo "${remaining_types}" | tr '\n' ' ')"
+	fi
+}
+
+check_file_type_and_attribute() {
+	einfo "Checking file types and their attributes"
+	check_attribute_include file_type cros_file_type unlabeled system_data_file media_data_file android_file_type
+	check_attribute_include cros_file_type cros_system_file_type cros_tmpfile_type cros_home_file_type cros_var_file_type cros_run_file_type cros_uncategorized_file_type
+}
+
+src_compile() {
+	gen_m4_flags
+
+	build_chromeos_policy
+	build_file_contexts
+
+	cp -r "${SEPATH}" intermediate_policy
+
+	if use selinux_audit_all; then
+		find intermediate_policy/ -xtype f -name '*.cil' -exec \
+			sed -i 's/^(dontaudit .*//g' {} \;
+		sed -i 's/^(dontaudit .*//g' chromeos.cil
+		sed -i 's/^(dontaudit .*//g' chromeos.raw.cil
+	fi
+
+	local cilpath="$(pwd)/intermediate_policy"
+
+	if has_arc; then
+		einfo "Removing duplicate nnp_nosuid_transition policycap from Android cil"
+		sed -i '/^(policycap nnp_nosuid_transition)$/d' "${cilpath}"/*.cil || die
+
+		einfo "Combining Chrome OS and Android SELinux policy"
+		secilc "${SECILC_ARGS[@]}" "${cilpath}/plat_sepolicy.cil" \
+			"${cilpath}/mapping.cil" \
+			"${cilpath}/plat_pub_versioned.cil" \
+			"${cilpath}/vendor_sepolicy.cil" \
+			chromeos.cil || die "fail to build sepolicy"
+
+		# Add header/footer around ARC++ contexts, so they can be
+		# correctly replaced when pushing new Android builds using
+		# push_to_device.py.
+		(
+			cat "chromeos_file_contexts" &&
+			echo -e "\n# BEGIN_ARC_FILE_CONTEXTS" &&
+			cat "${SYSROOT}/etc/selinux/intermediates/arc_file_contexts" &&
+			echo -e "\n# END_ARC_FILE_CONTEXTS"
+		) > file_contexts || die "failed to combine *_file_contexts files"
+
+	else
+		# Chrome OS without ARC++ only.
+		einfo "Use Chrome OS-only SELinux policy."
+
+		secilc "${SECILC_ARGS[@]}" chromeos.raw.cil || die "fail to build sepolicy"
+		cp "chromeos_file_contexts" file_contexts \
+			|| die "didn't find chromeos_file_contexts for file_contexts"
+	fi
+
+	check_filetrans_defined_in_file_contexts \
+		|| die "failed to check consistency between filetrans_pattern and file_contexts"
+
+	if use nocheck; then
+		ewarn "Some post-compile checks are skipped. Please remove nocheck from your USE flag"
+	else
+		einfo 'Use USE="$USE nocheck" emerge-$BOARD selinux-policy to speed up emerge for development purpose'.
+		check_file_type_and_attribute
+	fi
+}
+
+src_install() {
+	insinto /etc/selinux/arc/contexts/files
+	doins file_contexts
+
+	insinto /etc/selinux
+	if use selinux_experimental; then
+		newins "${FILESDIR}/selinux_config_experimental" config
+	else
+		newins "${FILESDIR}/selinux_config" config
+	fi
+
+	insinto /etc/selinux/arc/policy
+	doins "${SEPOLICY_FILENAME}"
+
+	if use selinux_develop; then
+		insinto /etc/init
+		doins "${FILESDIR}/selinux_debug.conf"
+		dobin "${FILESDIR}/audit_log_since_boot"
+	fi
+
+	if has_arc; then
+		# Install ChromeOS cil so push_to_device.py can compile a new
+		# version of SELinux policy.
+		insinto /etc/selinux/intermediates.raw/
+		doins chromeos.cil
+	fi
+
+	udev_dorules "${FILESDIR}/50-selinux.rules"
+}
+
+# Check policy violation for neverallow rules extracted from CTS SELinuxNeverallowRulesTest.
+src_test() {
+	if ! use android-container-pi; then
+		# Skipping the test for ARCVM.
+		# We only run SELinux CTS against the guest-side policy of ARCVM.
+		return
+	fi
+
+	local neverallowjava="${SYSROOT}/etc/selinux/intermediates/SELinuxNeverallowRulesTest.java"
+	if [ ! -f "${SYSROOT}/etc/selinux/intermediates/SELinuxNeverallowRulesTest.java" ]; then
+		ewarn "No SELinuxNeverallowRulesTest.java found. CTS neverallow pre-test is skipped."
+		return
+	fi
+
+	# Extract 'String neverallowRule = "neverallow ...";' lines from the Java source code and
+	# write the extracted lines to ./neverallows.
+	(
+		grep "boolean compatiblePropertyOnly = false;" -B 2 |
+		grep "boolean fullTrebleOnly = false;" -B 1 |
+		grep neverallowRule |
+		sed -E 's/.*"(neverallow.*)";/\1/g'
+	) < "${neverallowjava}" > neverallows
+
+	local loc="$(wc -l neverallows | awk '{print $1;}')"
+	if [[ "${loc}" -lt "100" ]]; then
+		die "too few test cases. something is wrong."
+	fi
+	local cur=0
+	while read -r rule; do
+		cur=$((cur+1))
+		printf "Checking neverallow rules: %d/%d\r" "$cur" "$loc"
+		sepolicy-analyze "${SEPOLICY_FILENAME}" neverallow -n "$rule" || (echo failed for "$rule"; die)
+	done < neverallows
+}
diff --git a/chromeos-base/selinux-policy/selinux-policy-9999.ebuild b/chromeos-base/selinux-policy/selinux-policy-9999.ebuild
index 21303b8..61e7c06 100644
--- a/chromeos-base/selinux-policy/selinux-policy-9999.ebuild
+++ b/chromeos-base/selinux-policy/selinux-policy-9999.ebuild
@@ -13,10 +13,13 @@
 DESCRIPTION="Chrome OS SELinux Policy Package"
 LICENSE="BSD-Google"
 KEYWORDS="~*"
+
+# Keep this in sync with has_arc().
 IUSE="
 	android-container-pi
 	android-vm-master
 	android-vm-rvc
+	android-vm-sc
 	selinux_audit_all selinux_develop selinux_experimental
 	arc_first_release_n
 	nocheck
@@ -26,6 +29,7 @@
 	android-container-pi? ( chromeos-base/android-container-pi:0= )
 	android-vm-master? ( chromeos-base/android-vm-master:0= )
 	android-vm-rvc? ( chromeos-base/android-vm-rvc:0= )
+	android-vm-sc? ( chromeos-base/android-vm-sc:0= )
 "
 
 RDEPEND="
@@ -54,6 +58,8 @@
 	attributes
 	ioctl_defines
 	ioctl_macros
+	chromeos_ioctl_defines
+	chromeos_ioctl_macros
 	"*.te"
 	roles_decl
 	roles
@@ -116,8 +122,12 @@
 	sed -e 's/base_typeattr_\([0-9]*\)/base_typeattr_cros_\1/g'
 }
 
+# Keep this in sync with IUSE/DEPEND.
 has_arc() {
-	use android-container-pi || use android-vm-rvc || use android-vm-master
+	use android-container-pi ||
+	use android-vm-rvc ||
+	use android-vm-sc ||
+	use android-vm-master
 }
 
 gen_m4_flags() {
@@ -127,6 +137,8 @@
 		arc_version="p"
 	elif use android-vm-rvc; then
 		arc_version="r"
+	elif use android-vm-sc; then
+		arc_version="s"
 	elif use android-vm-master; then
 		arc_version="master"
 	fi
@@ -345,7 +357,14 @@
 	udev_dorules "${FILESDIR}/50-selinux.rules"
 }
 
+# Check policy violation for neverallow rules extracted from CTS SELinuxNeverallowRulesTest.
 src_test() {
+	if ! use android-container-pi; then
+		# Skipping the test for ARCVM.
+		# We only run SELinux CTS against the guest-side policy of ARCVM.
+		return
+	fi
+
 	local neverallowjava="${SYSROOT}/etc/selinux/intermediates/SELinuxNeverallowRulesTest.java"
 	if [ ! -f "${SYSROOT}/etc/selinux/intermediates/SELinuxNeverallowRulesTest.java" ]; then
 		ewarn "No SELinuxNeverallowRulesTest.java found. CTS neverallow pre-test is skipped."
@@ -353,33 +372,18 @@
 	fi
 
 	# Extract 'String neverallowRule = "neverallow ...";' lines from the Java source code and
-	# write the extracted lines to ./neverallows. We have two scripts below as Android P and R+
-	# use slightly different code styles.
-	if use android-vm-rvc || use android-vm-master; then
-		(
-			grep "boolean compatiblePropertyOnly = false;" -B 3 |
-			grep "boolean launchingWithROnly = false;" -B 2 |
-			grep "boolean fullTrebleOnly = false;" -B 1 |
-			grep neverallowRule |
-			sed -E 's/.*"(neverallow.*)";/\1/g'
-		) < "${neverallowjava}" > neverallows
-	else
-		(
-			grep "boolean compatiblePropertyOnly = false;" -B 2 |
-			grep "boolean fullTrebleOnly = false;" -B 1 |
-			grep neverallowRule |
-			sed -E 's/.*"(neverallow.*)";/\1/g'
-		) < "${neverallowjava}" > neverallows
-	fi
+	# write the extracted lines to ./neverallows.
+	(
+		grep "boolean compatiblePropertyOnly = false;" -B 2 |
+		grep "boolean fullTrebleOnly = false;" -B 1 |
+		grep neverallowRule |
+		sed -E 's/.*"(neverallow.*)";/\1/g'
+	) < "${neverallowjava}" > neverallows
 
 	local loc="$(wc -l neverallows | awk '{print $1;}')"
 	if [[ "${loc}" -lt "100" ]]; then
 		die "too few test cases. something is wrong."
 	fi
-	if use android-vm-rvc || use android-vm-master; then
-		# We only run SELinux CTS against the guest-side policy. Skipping the test.
-		return
-	fi
 	local cur=0
 	while read -r rule; do
 		cur=$((cur+1))
diff --git a/chromeos-base/session_manager-client/session_manager-client-0.0.1-r2072.ebuild b/chromeos-base/session_manager-client/session_manager-client-0.0.1-r2072.ebuild
deleted file mode 100644
index 1be9204..0000000
--- a/chromeos-base/session_manager-client/session_manager-client-0.0.1-r2072.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="109363d0a03be594cf5611441597c607960c4f3d"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "fd58c41eff96201518af10b01b66391e72895365" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk login_manager .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="login_manager/session_manager-client"
-
-inherit cros-workon platform
-
-DESCRIPTION="Session manager (chromeos-login) DBus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/login_manager/"
-
-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.
-DEPEND="
-	cros_host? ( chromeos-base/chromeos-dbus-bindings:= )
-"
-
-RDEPEND="
-	!<chromeos-base/chromeos-login-0.0.2
-"
-
-src_install() {
-	# Install DBus client library.
-	platform_install_dbus_client_lib "session_manager"
-}
diff --git a/chromeos-base/session_manager-client/session_manager-client-0.0.1-r2138.ebuild b/chromeos-base/session_manager-client/session_manager-client-0.0.1-r2138.ebuild
new file mode 100644
index 0000000..4c976cf
--- /dev/null
+++ b/chromeos-base/session_manager-client/session_manager-client-0.0.1-r2138.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="c812693846f14fc4b8c3988e5de7dd9310d8f36c"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "705938420b278cc4b739150868d71128b855d23e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk login_manager .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="login_manager/session_manager-client"
+
+inherit cros-workon platform
+
+DESCRIPTION="Session manager (chromeos-login) DBus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/login_manager/"
+
+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.
+DEPEND="
+	cros_host? ( chromeos-base/chromeos-dbus-bindings:= )
+"
+
+RDEPEND="
+	!<chromeos-base/chromeos-login-0.0.2
+"
+
+src_install() {
+	# Install DBus client library.
+	platform_install_dbus_client_lib "session_manager"
+}
diff --git a/chromeos-base/shill-cli/shill-cli-0.0.1-r70.ebuild b/chromeos-base/shill-cli/shill-cli-0.0.1-r70.ebuild
deleted file mode 100644
index 1ef00f9..0000000
--- a/chromeos-base/shill-cli/shill-cli-0.0.1-r70.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4fa61f1fa958cd34d16c6035cb2e6430dd6fd7b0" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk shill/cli .gn"
-
-PLATFORM_SUBDIR="shill/cli"
-
-inherit cros-workon platform
-
-DESCRIPTION="Shill Command Line Interface"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/cli"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	>=chromeos-base/shill-0.0.1-r2205
-"
-
-DEPEND="
-	chromeos-base/shill-client:=
-	chromeos-base/system_api:=
-"
-
-src_install() {
-	dobin "${OUT}"/shillcli
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/shillcli_test"
-}
diff --git a/chromeos-base/shill-cli/shill-cli-0.0.1-r97.ebuild b/chromeos-base/shill-cli/shill-cli-0.0.1-r97.ebuild
new file mode 100644
index 0000000..c6334d0
--- /dev/null
+++ b/chromeos-base/shill-cli/shill-cli-0.0.1-r97.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "5b20850cb32f8fc1646e154b9c6c5b094e5b5961" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="common-mk shill/cli .gn"
+
+PLATFORM_SUBDIR="shill/cli"
+
+inherit cros-workon platform
+
+DESCRIPTION="Shill Command Line Interface"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/cli"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	>=chromeos-base/shill-0.0.1-r2205
+"
+
+DEPEND="
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=
+"
+
+src_install() {
+	dobin "${OUT}"/shillcli
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/shillcli_test"
+}
diff --git a/chromeos-base/shill-client/shill-client-0.0.1-r2274.ebuild b/chromeos-base/shill-client/shill-client-0.0.1-r2274.ebuild
deleted file mode 100644
index d3a267b..0000000
--- a/chromeos-base/shill-client/shill-client-0.0.1-r2274.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="7ba4078597336205ed27b836a8e1842e81a1d726"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "b2ab4c8055664efcdcae34e2f953709ccc4da563" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="common-mk shill .gn"
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="shill/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="Shill DBus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="cros_host"
-
-RDEPEND="
-	!<chromeos-base/shill-0.0.2
-"
-
-BDEPEND="
-	chromeos-base/chromeos-dbus-bindings:=
-"
-
-src_install() {
-	# Install DBus client library.
-	platform_install_dbus_client_lib "shill"
-}
diff --git a/chromeos-base/shill-client/shill-client-0.0.1-r2588.ebuild b/chromeos-base/shill-client/shill-client-0.0.1-r2588.ebuild
new file mode 100644
index 0000000..59b3a9f
--- /dev/null
+++ b/chromeos-base/shill-client/shill-client-0.0.1-r2588.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="d27dfb81bc87df4db16849f5da1b96f1cf5cd10b"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "c4ab24982f8916bc61640a3912b5c1d0337b758f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="common-mk shill .gn"
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="shill/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="Shill DBus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="cros_host"
+
+RDEPEND="
+	!<chromeos-base/shill-0.0.2
+"
+
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
+"
+
+src_install() {
+	# Install DBus client library.
+	platform_install_dbus_client_lib "shill"
+}
diff --git a/chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r359.ebuild b/chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r359.ebuild
new file mode 100644
index 0000000..c54a52b
--- /dev/null
+++ b/chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r359.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="d27dfb81bc87df4db16849f5da1b96f1cf5cd10b"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "c4ab24982f8916bc61640a3912b5c1d0337b758f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_SUBDIR="shill/dbus/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="Shill DBus client interface library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/shill/dbus/client"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="chromeos-base/shill-client:="
+RDEPEND=""
+
+src_install() {
+	# Install libshill-dbus-client library.
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	local v="$(libchrome_ver)"
+	./preinstall.sh "${OUT}" "${v}"
+	dolib.so "${OUT}/lib/libshill-dbus-client.so"
+	doins "${OUT}/lib/libshill-dbus-client.pc"
+
+	# Install header files from libshill-dbus-client.
+	insinto /usr/include/shill/dbus/client
+	doins ./*.h
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/libshill-dbus-client_test"
+}
diff --git a/chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r45.ebuild b/chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r45.ebuild
deleted file mode 100644
index 82ebe3c..0000000
--- a/chromeos-base/shill-dbus-client/shill-dbus-client-0.0.1-r45.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="7ba4078597336205ed27b836a8e1842e81a1d726"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "b2ab4c8055664efcdcae34e2f953709ccc4da563" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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"
-
-PLATFORM_SUBDIR="shill/dbus/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="Shill DBus client interface library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/shill/dbus/client"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="chromeos-base/shill-client:="
-RDEPEND=""
-
-src_install() {
-	# Install libshill-dbus-client library.
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	local v="$(libchrome_ver)"
-	./preinstall.sh "${OUT}" "${v}"
-	dolib.so "${OUT}/lib/libshill-dbus-client.so"
-	doins "${OUT}/lib/libshill-dbus-client.pc"
-
-	# Install header files from libshill-dbus-client.
-	insinto /usr/include/shill/dbus/client
-	doins ./*.h
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/libshill-dbus-client_test"
-}
diff --git a/chromeos-base/shill-net/shill-net-0.0.1-r121.ebuild b/chromeos-base/shill-net/shill-net-0.0.1-r121.ebuild
deleted file mode 100644
index 95f2c5d..0000000
--- a/chromeos-base/shill-net/shill-net-0.0.1-r121.ebuild
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="7ba4078597336205ed27b836a8e1842e81a1d726"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "b2ab4c8055664efcdcae34e2f953709ccc4da563" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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"
-
-PLATFORM_SUBDIR="shill/net"
-
-inherit cros-workon platform
-
-DESCRIPTION="Shill networking component interface library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/shill/net"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="fuzzer +wifi"
-
-DEPEND=""
-RDEPEND="
-	!<chromeos-base/shill-0.0.5
-"
-
-src_install() {
-	# Install libshill-net library.
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	local v="$(libchrome_ver)"
-	./preinstall.sh "${OUT}" "${v}"
-	dolib.so "${OUT}/lib/libshill-net.so"
-	doins "${OUT}/lib/libshill-net.pc"
-
-	# Install header files from libshill-net.
-	insinto /usr/include/shill/net
-	doins ./*.h
-
-	local fuzzer
-	for fuzzer in "${OUT}"/*_fuzzer; do
-		platform_fuzzer_install "${S}"/../OWNERS "${fuzzer}"
-	done
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/shill_net_test"
-}
diff --git a/chromeos-base/shill-net/shill-net-0.0.1-r435.ebuild b/chromeos-base/shill-net/shill-net-0.0.1-r435.ebuild
new file mode 100644
index 0000000..1496c85
--- /dev/null
+++ b/chromeos-base/shill-net/shill-net-0.0.1-r435.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="d27dfb81bc87df4db16849f5da1b96f1cf5cd10b"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "c4ab24982f8916bc61640a3912b5c1d0337b758f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_SUBDIR="shill/net"
+
+inherit cros-workon platform
+
+DESCRIPTION="Shill networking component interface library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/shill/net"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="fuzzer +wifi"
+
+DEPEND=""
+RDEPEND="
+	!<chromeos-base/shill-0.0.5
+"
+
+src_install() {
+	# Install libshill-net library.
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	local v="$(libchrome_ver)"
+	./preinstall.sh "${OUT}" "${v}"
+	dolib.so "${OUT}/lib/libshill-net.so"
+	doins "${OUT}/lib/libshill-net.pc"
+
+	# Install header files from libshill-net.
+	insinto /usr/include/shill/net
+	doins ./*.h
+
+	local fuzzer
+	for fuzzer in "${OUT}"/*_fuzzer; do
+		platform_fuzzer_install "${S}"/../OWNERS "${fuzzer}"
+	done
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/shill_net_test"
+}
diff --git a/chromeos-base/shill-test-scripts/shill-test-scripts-0.0.1-r3157.ebuild b/chromeos-base/shill-test-scripts/shill-test-scripts-0.0.1-r3157.ebuild
deleted file mode 100644
index ce5462b..0000000
--- a/chromeos-base/shill-test-scripts/shill-test-scripts-0.0.1-r3157.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-CROS_WORKON_COMMIT="58a6115dbc2ebec1ee2a3ab0204efa950d0ee0d0"
-CROS_WORKON_TREE="c4a6ad9b8774cd66229ba54ca1853b018ae2e07b"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="shill/test-scripts"
-
-PYTHON_COMPAT=( python3_{6..9} )
-
-inherit cros-workon python-single-r1
-
-DESCRIPTION="shill's test scripts"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="${PYTHON_DEPS}
-	$(python_gen_cond_dep 'dev-python/dbus-python[${PYTHON_USEDEP}]')
-	>=chromeos-base/shill-0.0.1-r2205
-	net-dns/dnsmasq
-	sys-apps/iproute2"
-
-src_compile() {
-	# We only install scripts here, so no need to compile.
-	:
-}
-
-src_install() {
-	exeinto /usr/lib/flimflam/test
-	doexe shill/test-scripts/*
-}
diff --git a/chromeos-base/shill-test-scripts/shill-test-scripts-0.0.1-r3160.ebuild b/chromeos-base/shill-test-scripts/shill-test-scripts-0.0.1-r3160.ebuild
new file mode 100644
index 0000000..0a75833
--- /dev/null
+++ b/chromeos-base/shill-test-scripts/shill-test-scripts-0.0.1-r3160.ebuild
@@ -0,0 +1,40 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+CROS_WORKON_COMMIT="74ba58914225f144e103d8b2e1446dcfaafc4af6"
+CROS_WORKON_TREE="e1460bdb2664294ca3385078bdfc43239d9f3e49"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="shill/test-scripts"
+
+PYTHON_COMPAT=( python3_{6..9} )
+
+inherit cros-workon python-single-r1
+
+DESCRIPTION="shill's test scripts"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="${PYTHON_DEPS}
+	$(python_gen_cond_dep 'dev-python/dbus-python[${PYTHON_USEDEP}]')
+	>=chromeos-base/shill-0.0.1-r2205
+	net-dns/dnsmasq
+	sys-apps/iproute2"
+
+src_compile() {
+	# We only install scripts here, so no need to compile.
+	:
+}
+
+src_install() {
+	exeinto /usr/lib/flimflam/test
+	doexe shill/test-scripts/*
+}
diff --git a/chromeos-base/shill/shill-0.0.5-r2347.ebuild b/chromeos-base/shill/shill-0.0.5-r2347.ebuild
deleted file mode 100644
index 2849595..0000000
--- a/chromeos-base/shill/shill-0.0.5-r2347.ebuild
+++ /dev/null
@@ -1,227 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "5c6a69ae1a339332642149aa39da47d14efbe3fd" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "b2ab4c8055664efcdcae34e2f953709ccc4da563" "e0ed49a505c69afe4a7f216b86744c3dabcd5e4c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 libpasswordprovider metrics shill vpn-manager .gn"
-
-PLATFORM_SUBDIR="shill"
-
-inherit cros-workon platform systemd udev user
-
-DESCRIPTION="Shill Connection Manager for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="cellular dhcpv6 fuzzer kernel-3_8 kernel-3_10 pppoe +seccomp systemd +tpm +vpn wake_on_wifi +wifi +wired_8021x wpa3_sae"
-
-# Sorted by the package we depend on. (Not by use flag!)
-COMMON_DEPEND="
-	chromeos-base/bootstat:=
-	tpm? ( chromeos-base/chaps:= )
-	chromeos-base/minijail:=
-	chromeos-base/libpasswordprovider:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/nsswitch:=
-	chromeos-base/patchpanel-client:=
-	chromeos-base/shill-net:=
-	dev-libs/re2:=
-	cellular? ( net-dialup/ppp:= )
-	pppoe? ( net-dialup/ppp:= )
-	vpn? ( net-dialup/ppp:= )
-	net-dns/c-ares:=
-	net-libs/libtirpc:=
-	net-firewall/iptables:=
-	net-libs/libnetfilter_queue:=
-	net-libs/libnfnetlink:=
-	wifi? ( virtual/wpa_supplicant )
-	wired_8021x? ( virtual/wpa_supplicant )
-	sys-apps/rootdev:=
-	cellular? ( net-misc/modemmanager-next:= )
-	!kernel-3_10? ( !kernel-3_8? ( net-firewall/conntrack-tools:= ) )
-"
-
-RDEPEND="${COMMON_DEPEND}
-	chromeos-base/patchpanel
-	net-misc/dhcpcd
-	dhcpv6? ( net-misc/dhcpcd[ipv6] )
-	vpn? ( net-vpn/openvpn )
-"
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/shill-client:=
-	chromeos-base/power_manager-client:=
-	chromeos-base/system_api:=[fuzzer?]
-	vpn? ( chromeos-base/vpn-manager:= )"
-
-pkg_setup() {
-	enewgroup "shill"
-	enewuser "shill"
-	cros-workon_pkg_setup
-}
-
-pkg_preinst() {
-	enewgroup "shill-crypto"
-	enewuser "shill-crypto"
-	enewgroup "shill-scripts"
-	enewuser "shill-scripts"
-	enewgroup "nfqueue"
-	enewuser "nfqueue"
-}
-
-get_dependent_services() {
-	local dependent_services=()
-	if use wifi || use wired_8021x; then
-		dependent_services+=(wpasupplicant)
-	fi
-	if use systemd; then
-		echo "network-services.service ${dependent_services[*]/%/.service }"
-	else
-		echo "started network-services " \
-			"${dependent_services[*]/#/and started }"
-	fi
-}
-
-src_configure() {
-	cros_optimize_package_for_speed
-	platform_src_configure
-}
-
-src_install() {
-	dobin bin/ff_debug
-
-	if use cellular; then
-		dobin bin/set_apn
-		dobin bin/set_cellular_ppp
-	fi
-
-	dosbin bin/set_wifi_regulatory
-	dobin bin/set_arpgw
-	dobin bin/set_wake_on_lan
-	dobin bin/shill_login_user
-	dobin bin/shill_logout_user
-	if use wifi || use wired_8021x; then
-		dobin bin/wpa_debug
-	fi
-	dobin "${OUT}"/shill
-
-	# Deprecated.  On Linux 3.12+ conntrackd is used instead.
-	local netfilter_queue_helper=no
-	if use kernel-3_8 || use kernel-3_10; then
-		netfilter_queue_helper=yes
-	fi
-
-	if [[ "${netfilter_queue_helper}" == "yes" ]]; then
-		# Netfilter queue helper is run directly from init, so install
-		# in sbin.
-		dosbin "${OUT}"/netfilter-queue-helper
-		dosbin init/netfilter-common
-	fi
-
-	# Install Netfilter queue helper syscall filter policy file.
-	insinto /usr/share/policy
-	use seccomp && newins shims/nfqueue-seccomp-${ARCH}.policy nfqueue-seccomp.policy
-
-	local shims_dir=/usr/$(get_libdir)/shill/shims
-	exeinto "${shims_dir}"
-
-	use vpn && doexe "${OUT}"/openvpn-script
-	if use cellular || use pppoe || use vpn; then
-		newexe "${OUT}"/lib/libshill-pppd-plugin.so shill-pppd-plugin.so
-	fi
-
-	use cellular && doexe "${OUT}"/set-apn-helper
-
-	if use wifi || use wired_8021x; then
-		sed \
-			"s,@libdir@,/usr/$(get_libdir)", \
-			shims/wpa_supplicant.conf.in \
-			> "${D}/${shims_dir}/wpa_supplicant.conf"
-	fi
-
-	dosym /run/shill/resolv.conf /etc/resolv.conf
-	insinto /etc/dbus-1/system.d
-	doins shims/org.chromium.flimflam.conf
-
-	if use cellular; then
-		insinto /usr/share/shill
-		doins "${OUT}"/serviceproviders.pbf
-		insinto /usr/share/protofiles
-		doins "${S}/mobile_operator_db/mobile_operator_db.proto"
-	fi
-
-	# Install introspection XML
-	insinto /usr/share/dbus-1/interfaces
-	doins dbus_bindings/org.chromium.flimflam.*.dbus-xml
-	doins dbus_bindings/dbus-service-config.json
-
-	# Replace template parameters inside init scripts
-	local shill_name="shill.$(usex systemd service conf)"
-	sed \
-		"s,@expected_started_services@,$(get_dependent_services)," \
-		"init/${shill_name}.in" \
-		> "${T}/${shill_name}"
-
-	# Install init scripts
-	if use systemd; then
-		if [[ "${netfilter_queue_helper}" == "yes" ]]; then
-			systemd_dounit init/netfilter-queue.service
-			systemd_enable_service network.target \
-				netfilter-queue.service
-		fi
-		systemd_dounit init/shill-start-user-session.service
-		systemd_dounit init/shill-stop-user-session.service
-
-		local dependent_services=$(get_dependent_services)
-		systemd_dounit "${T}/shill.service"
-		for dependent_service in ${dependent_services}; do
-			systemd_enable_service "${dependent_service}" shill.service
-		done
-		systemd_enable_service shill.service network.target
-
-		systemd_dounit init/network-services.service
-		systemd_enable_service boot-services.target network-services.service
-	else
-		insinto /etc/init
-
-		doins "${T}"/*.conf
-		doins \
-			init/network-services.conf \
-			init/shill-event.conf \
-			init/shill-start-user-session.conf \
-			init/shill-stop-user-session.conf \
-			init/shill_respawn.conf
-		if [[ "${netfilter_queue_helper}" == "yes" ]]; then
-			doins init/netfilter-queue.conf
-		fi
-	fi
-	exeinto /usr/share/cros/init
-	doexe init/*.sh
-
-	insinto /usr/share/cros/startup/process_management_policies
-	doins setuid_restrictions/shill_allowed.txt
-
-	udev_dorules udev/*.rules
-
-	# Shill keeps profiles inside the user's cryptohome.
-	local daemon_store="/etc/daemon-store/shill"
-	dodir "${daemon_store}"
-	fperms 0700 "${daemon_store}"
-	fowners shill:shill "${daemon_store}"
-
-	local fuzzer
-	for fuzzer in "${OUT}"/*_fuzzer; do
-		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
-	done
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/shill_unittest"
-}
diff --git a/chromeos-base/shill/shill-0.0.5-r2702.ebuild b/chromeos-base/shill/shill-0.0.5-r2702.ebuild
new file mode 100644
index 0000000..aac98f6
--- /dev/null
+++ b/chromeos-base/shill/shill-0.0.5-r2702.ebuild
@@ -0,0 +1,207 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="d27dfb81bc87df4db16849f5da1b96f1cf5cd10b"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "eae0546f4ee5132d4544af4770755eb05f60cba6" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "c4ab24982f8916bc61640a3912b5c1d0337b758f" "767a114667a7ed090f12adcaca93e7d4ef6f034f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 libpasswordprovider metrics shill vpn-manager .gn"
+
+PLATFORM_SUBDIR="shill"
+
+inherit cros-workon platform systemd tmpfiles udev user
+
+DESCRIPTION="Shill Connection Manager for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cellular dhcpv6 fuzzer pppoe systemd +tpm +vpn +wake_on_wifi +wifi +wired_8021x +wpa3_sae +wireguard"
+
+# Sorted by the package we depend on. (Not by use flag!)
+COMMON_DEPEND="
+	chromeos-base/bootstat:=
+	tpm? ( chromeos-base/chaps:= )
+	chromeos-base/minijail:=
+	chromeos-base/libpasswordprovider:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/nsswitch:=
+	chromeos-base/patchpanel-client:=
+	chromeos-base/shill-net:=
+	dev-libs/re2:=
+	cellular? ( net-dialup/ppp:= )
+	pppoe? ( net-dialup/ppp:= )
+	vpn? ( net-dialup/ppp:= )
+	net-dns/c-ares:=
+	net-libs/libtirpc:=
+	net-firewall/conntrack-tools:=
+	net-firewall/iptables:=
+	wifi? ( virtual/wpa_supplicant )
+	wired_8021x? ( virtual/wpa_supplicant )
+	sys-apps/rootdev:=
+	cellular? ( net-misc/modemmanager-next:= )
+"
+
+RDEPEND="${COMMON_DEPEND}
+	net-misc/dhcpcd
+	dhcpv6? ( net-misc/dhcpcd[ipv6] )
+	vpn? ( net-vpn/openvpn )
+	wireguard? ( net-vpn/wireguard-tools )
+"
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/shill-client:=
+	chromeos-base/power_manager-client:=
+	chromeos-base/system_api:=[fuzzer?]
+	vpn? ( chromeos-base/vpn-manager:= )
+"
+PDEPEND="chromeos-base/patchpanel"
+
+pkg_setup() {
+	enewgroup "shill"
+	enewuser "shill"
+	cros-workon_pkg_setup
+}
+
+pkg_preinst() {
+	enewgroup "shill-crypto"
+	enewuser "shill-crypto"
+	enewgroup "shill-scripts"
+	enewuser "shill-scripts"
+	enewgroup "nfqueue"
+	enewuser "nfqueue"
+	enewgroup "vpn"
+	enewuser "vpn"
+}
+
+get_dependent_services() {
+	local dependent_services=()
+	if use wifi || use wired_8021x; then
+		dependent_services+=(wpasupplicant)
+	fi
+	if use systemd; then
+		echo "network-services.service ${dependent_services[*]/%/.service }"
+	else
+		echo "started network-services " \
+			"${dependent_services[*]/#/and started }"
+	fi
+}
+
+src_configure() {
+	cros_optimize_package_for_speed
+	platform_src_configure
+}
+
+src_install() {
+	platform_src_install
+
+	dobin bin/ff_debug
+
+	if use cellular; then
+		dobin bin/set_apn
+		dobin bin/set_cellular_ppp
+	fi
+
+	dosbin bin/set_wifi_regulatory
+	dobin bin/set_arpgw
+	dobin bin/set_wake_on_lan
+	dobin bin/shill_login_user
+	dobin bin/shill_logout_user
+	if use wifi || use wired_8021x; then
+		dobin bin/wpa_debug
+	fi
+	dobin "${OUT}"/shill
+
+	local shims_dir=/usr/$(get_libdir)/shill/shims
+	exeinto "${shims_dir}"
+
+	use vpn && doexe "${OUT}"/openvpn-script
+	if use cellular || use pppoe || use vpn; then
+		newexe "${OUT}"/lib/libshill-pppd-plugin.so shill-pppd-plugin.so
+	fi
+
+	use cellular && doexe "${OUT}"/set-apn-helper
+
+	if use wifi || use wired_8021x; then
+		sed \
+			"s,@libdir@,/usr/$(get_libdir)", \
+			shims/wpa_supplicant.conf.in \
+			> "${D}/${shims_dir}/wpa_supplicant.conf"
+	fi
+
+	dosym /run/shill/resolv.conf /etc/resolv.conf
+	insinto /etc/dbus-1/system.d
+	doins shims/org.chromium.flimflam.conf
+
+	if use cellular; then
+		insinto /usr/share/shill
+		doins "${OUT}"/serviceproviders.pbf
+		insinto /usr/share/protofiles
+		doins "${S}/mobile_operator_db/mobile_operator_db.proto"
+	fi
+
+	# Install introspection XML
+	insinto /usr/share/dbus-1/interfaces
+	doins dbus_bindings/org.chromium.flimflam.*.dbus-xml
+	doins dbus_bindings/dbus-service-config.json
+
+	# Replace template parameters inside init scripts
+	local shill_name="shill.$(usex systemd service conf)"
+	sed \
+		"s,@expected_started_services@,$(get_dependent_services)," \
+		"init/${shill_name}.in" \
+		> "${T}/${shill_name}"
+
+	# Install init scripts
+	if use systemd; then
+		systemd_dounit init/shill-start-user-session.service
+		systemd_dounit init/shill-stop-user-session.service
+
+		local dependent_services=$(get_dependent_services)
+		systemd_dounit "${T}/shill.service"
+		for dependent_service in ${dependent_services}; do
+			systemd_enable_service "${dependent_service}" shill.service
+		done
+		systemd_enable_service shill.service network.target
+
+		systemd_dounit init/network-services.service
+		systemd_enable_service boot-services.target network-services.service
+	else
+		insinto /etc/init
+
+		doins "${T}"/*.conf
+		doins \
+			init/network-services.conf \
+			init/shill-event.conf \
+			init/shill-start-user-session.conf \
+			init/shill-stop-user-session.conf \
+			init/shill_respawn.conf
+	fi
+	exeinto /usr/share/cros/init
+	doexe init/*.sh
+	dotmpfiles tmpfiles.d/*.conf
+
+	insinto /usr/share/cros/startup/process_management_policies
+	doins setuid_restrictions/shill_allowed.txt
+
+	udev_dorules udev/*.rules
+
+	# Shill keeps profiles inside the user's cryptohome.
+	local daemon_store="/etc/daemon-store/shill"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners shill:shill "${daemon_store}"
+
+	local fuzzer
+	for fuzzer in "${OUT}"/*_fuzzer; do
+		platform_fuzzer_install "${S}"/OWNERS "${fuzzer}"
+	done
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/shill_unittest"
+}
diff --git a/chromeos-base/shill/shill-9999.ebuild b/chromeos-base/shill/shill-9999.ebuild
index 00ccadb..6a5a60e 100644
--- a/chromeos-base/shill/shill-9999.ebuild
+++ b/chromeos-base/shill/shill-9999.ebuild
@@ -12,14 +12,14 @@
 
 PLATFORM_SUBDIR="shill"
 
-inherit cros-workon platform systemd udev user
+inherit cros-workon platform systemd tmpfiles udev user
 
 DESCRIPTION="Shill Connection Manager for Chromium OS"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/"
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="cellular dhcpv6 fuzzer kernel-3_8 kernel-3_10 pppoe +seccomp systemd +tpm +vpn wake_on_wifi +wifi +wired_8021x wpa3_sae"
+IUSE="cellular dhcpv6 fuzzer pppoe systemd +tpm +vpn +wake_on_wifi +wifi +wired_8021x +wpa3_sae +wireguard"
 
 # Sorted by the package we depend on. (Not by use flag!)
 COMMON_DEPEND="
@@ -37,27 +37,27 @@
 	vpn? ( net-dialup/ppp:= )
 	net-dns/c-ares:=
 	net-libs/libtirpc:=
+	net-firewall/conntrack-tools:=
 	net-firewall/iptables:=
-	net-libs/libnetfilter_queue:=
-	net-libs/libnfnetlink:=
 	wifi? ( virtual/wpa_supplicant )
 	wired_8021x? ( virtual/wpa_supplicant )
 	sys-apps/rootdev:=
 	cellular? ( net-misc/modemmanager-next:= )
-	!kernel-3_10? ( !kernel-3_8? ( net-firewall/conntrack-tools:= ) )
 "
 
 RDEPEND="${COMMON_DEPEND}
-	chromeos-base/patchpanel
 	net-misc/dhcpcd
 	dhcpv6? ( net-misc/dhcpcd[ipv6] )
 	vpn? ( net-vpn/openvpn )
+	wireguard? ( net-vpn/wireguard-tools )
 "
 DEPEND="${COMMON_DEPEND}
 	chromeos-base/shill-client:=
 	chromeos-base/power_manager-client:=
 	chromeos-base/system_api:=[fuzzer?]
-	vpn? ( chromeos-base/vpn-manager:= )"
+	vpn? ( chromeos-base/vpn-manager:= )
+"
+PDEPEND="chromeos-base/patchpanel"
 
 pkg_setup() {
 	enewgroup "shill"
@@ -72,6 +72,8 @@
 	enewuser "shill-scripts"
 	enewgroup "nfqueue"
 	enewuser "nfqueue"
+	enewgroup "vpn"
+	enewuser "vpn"
 }
 
 get_dependent_services() {
@@ -93,6 +95,8 @@
 }
 
 src_install() {
+	platform_src_install
+
 	dobin bin/ff_debug
 
 	if use cellular; then
@@ -110,23 +114,6 @@
 	fi
 	dobin "${OUT}"/shill
 
-	# Deprecated.  On Linux 3.12+ conntrackd is used instead.
-	local netfilter_queue_helper=no
-	if use kernel-3_8 || use kernel-3_10; then
-		netfilter_queue_helper=yes
-	fi
-
-	if [[ "${netfilter_queue_helper}" == "yes" ]]; then
-		# Netfilter queue helper is run directly from init, so install
-		# in sbin.
-		dosbin "${OUT}"/netfilter-queue-helper
-		dosbin init/netfilter-common
-	fi
-
-	# Install Netfilter queue helper syscall filter policy file.
-	insinto /usr/share/policy
-	use seccomp && newins shims/nfqueue-seccomp-${ARCH}.policy nfqueue-seccomp.policy
-
 	local shims_dir=/usr/$(get_libdir)/shill/shims
 	exeinto "${shims_dir}"
 
@@ -169,11 +156,6 @@
 
 	# Install init scripts
 	if use systemd; then
-		if [[ "${netfilter_queue_helper}" == "yes" ]]; then
-			systemd_dounit init/netfilter-queue.service
-			systemd_enable_service network.target \
-				netfilter-queue.service
-		fi
 		systemd_dounit init/shill-start-user-session.service
 		systemd_dounit init/shill-stop-user-session.service
 
@@ -196,12 +178,10 @@
 			init/shill-start-user-session.conf \
 			init/shill-stop-user-session.conf \
 			init/shill_respawn.conf
-		if [[ "${netfilter_queue_helper}" == "yes" ]]; then
-			doins init/netfilter-queue.conf
-		fi
 	fi
 	exeinto /usr/share/cros/init
 	doexe init/*.sh
+	dotmpfiles tmpfiles.d/*.conf
 
 	insinto /usr/share/cros/startup/process_management_policies
 	doins setuid_restrictions/shill_allowed.txt
diff --git a/chromeos-base/sirenia-rpc-macros/sirenia-rpc-macros-0.1.0-r1.ebuild b/chromeos-base/sirenia-rpc-macros/sirenia-rpc-macros-0.1.0-r1.ebuild
deleted file mode 100644
index 96b1c82..0000000
--- a/chromeos-base/sirenia-rpc-macros/sirenia-rpc-macros-0.1.0-r1.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2021 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# This is used to break a circular dependency caused by tests.
-CROS_WORKON_COMMIT="3115b08da384a046e6a5b9026ca7e03c96227fcb"
-CROS_WORKON_TREE="af363da38d201ae08d9f0116ac1c4bb64f46d677"
-CROS_RUST_REMOVE_DEV_DEPS=1
-CROS_RUST_SUBDIR="sirenia/libsirenia/sirenia-rpc-macros"
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Macros for generating the RPC implementation for Sirenia."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/libsirenia/sirenia-rpc-macros"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND=""
-
-DEPEND="${RDEPEND}
-	=dev-rust/proc-macro2-1*:=
-	=dev-rust/quote-1*:=
-	=dev-rust/syn-1*:=
-"
-
-# cros-rust_src_compile isn't used because it builds the unit tests.
-src_compile() {
-	ecargo_build
-}
-
-# The tests are run in libsirenia since they depend on libsirenia which depends
-# on this ebuild.
-src_test() { :; }
diff --git a/chromeos-base/sirenia-rpc-macros/sirenia-rpc-macros-0.1.0-r2.ebuild b/chromeos-base/sirenia-rpc-macros/sirenia-rpc-macros-0.1.0-r2.ebuild
new file mode 100644
index 0000000..2d1e256
--- /dev/null
+++ b/chromeos-base/sirenia-rpc-macros/sirenia-rpc-macros-0.1.0-r2.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# This is used to break a circular dependency caused by tests.
+CROS_WORKON_COMMIT="52f7d224416acd115a8d76bf0258d19bd5b0a1cd"
+CROS_WORKON_TREE="af363da38d201ae08d9f0116ac1c4bb64f46d677"
+CROS_RUST_REMOVE_DEV_DEPS=1
+CROS_RUST_SUBDIR="sirenia/libsirenia/sirenia-rpc-macros"
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Macros for generating the RPC implementation for Sirenia."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/libsirenia/sirenia-rpc-macros"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
+
+# cros-rust_src_compile isn't used because it builds the unit tests.
+src_compile() {
+	ecargo_build
+}
+
+# The tests are run in libsirenia since they depend on libsirenia which depends
+# on this ebuild.
+src_test() { :; }
diff --git a/chromeos-base/sirenia-rpc-macros/sirenia-rpc-macros-9999.ebuild b/chromeos-base/sirenia-rpc-macros/sirenia-rpc-macros-9999.ebuild
index 1d54385..ab07854 100644
--- a/chromeos-base/sirenia-rpc-macros/sirenia-rpc-macros-9999.ebuild
+++ b/chromeos-base/sirenia-rpc-macros/sirenia-rpc-macros-9999.ebuild
@@ -20,13 +20,14 @@
 KEYWORDS="~*"
 IUSE=""
 
-RDEPEND=""
-
-DEPEND="${RDEPEND}
+DEPEND="
 	=dev-rust/proc-macro2-1*:=
 	=dev-rust/quote-1*:=
 	=dev-rust/syn-1*:=
 "
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
 
 # cros-rust_src_compile isn't used because it builds the unit tests.
 src_compile() {
diff --git a/chromeos-base/sirenia/sirenia-0.24.52-r47.ebuild b/chromeos-base/sirenia/sirenia-0.24.52-r47.ebuild
deleted file mode 100644
index 34d811e..0000000
--- a/chromeos-base/sirenia/sirenia-0.24.52-r47.ebuild
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="d5bd453b7a24f4bc5b93408a793da3149406a526"
-CROS_WORKON_TREE="8142910ebe1039f79b7c8e33260b6428bbee5ef3"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="sirenia"
-
-inherit cros-workon cros-rust user
-
-DESCRIPTION="The runtime environment and middleware for ManaTEE."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="cros_host"
-
-RDEPEND="sys-apps/dbus"
-
-DEPEND="${RDEPEND}
-	chromeos-base/libsirenia:=
-	=dev-rust/chrono-0.4*:=
-	dev-rust/chromeos-dbus-bindings:=
-	=dev-rust/dbus-0.8*:=
-	=dev-rust/getopts-0.2*:=
-	dev-rust/libchromeos:=
-	>=dev-rust/serde-1.0.114:= <dev-rust/serde-2
-	=dev-rust/serde_derive-1*:=
-	dev-rust/sync:=
-	dev-rust/sys_util:=
-	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
-"
-
-src_install() {
-	local build_dir="$(cros-rust_get_build_dir)"
-	dobin "${build_dir}/dugong"
-
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.ManaTEE.conf
-
-	# Needed for initramfs, but not for the root-fs.
-	if use cros_host ; then
-		# /build is not allowed when installing to the host.
-		exeinto "/bin"
-	else
-		exeinto "/build/initramfs"
-	fi
-	doexe "${build_dir}/trichechus"
-}
-
-pkg_setup() {
-	enewuser dugong
-	enewgroup dugong
-	cros-rust_pkg_setup
-}
diff --git a/chromeos-base/sirenia/sirenia-0.24.52-r82.ebuild b/chromeos-base/sirenia/sirenia-0.24.52-r82.ebuild
new file mode 100644
index 0000000..892c472
--- /dev/null
+++ b/chromeos-base/sirenia/sirenia-0.24.52-r82.ebuild
@@ -0,0 +1,74 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f95785c10c5ac0eff2bdecb769b353662a4e0dc3"
+CROS_WORKON_TREE="727b5a2cdf7d07c050cc575ee636711da70333a2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="sirenia"
+
+inherit cros-workon cros-rust user
+
+DESCRIPTION="The runtime environment and middleware for ManaTEE."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cros_host manatee"
+
+DEPEND="
+	chromeos-base/libsirenia:=
+	dev-libs/openssl:0=
+	=dev-rust/base64-0.13*:=
+	dev-rust/chromeos-dbus-bindings:=
+	=dev-rust/dbus-0.8*:=
+	>=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2.0
+	=dev-rust/getopts-0.2*:=
+	dev-rust/libchromeos:=
+	=dev-rust/openssl-0.10*:=
+	>=dev-rust/serde-1.0.114:= <dev-rust/serde-2
+	=dev-rust/serde_derive-1*:=
+	dev-rust/sys_util:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	chromeos-base/cronista
+	chromeos-base/manatee-runtime
+	dev-rust/manatee-client
+	sys-apps/dbus
+"
+
+src_install() {
+	local build_dir="$(cros-rust_get_build_dir)"
+	dobin "${build_dir}/dugong"
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.ManaTEE.conf
+
+	# Needed for initramfs, but not for the root-fs.
+	if use cros_host ; then
+		# /build is not allowed when installing to the host.
+		exeinto "/bin"
+	else
+		exeinto "/build/initramfs"
+	fi
+
+	if use manatee ;  then
+		insinto /etc/init
+		doins upstart/dugong.conf
+		doexe "${build_dir}/trichechus"
+	else
+		dobin "${build_dir}/trichechus"
+	fi
+}
+
+pkg_setup() {
+	enewuser dugong
+	enewgroup dugong
+	cros-rust_pkg_setup
+}
diff --git a/chromeos-base/sirenia/sirenia-9999.ebuild b/chromeos-base/sirenia/sirenia-9999.ebuild
index 42c4b92..56d9a55 100644
--- a/chromeos-base/sirenia/sirenia-9999.ebuild
+++ b/chromeos-base/sirenia/sirenia-9999.ebuild
@@ -3,6 +3,7 @@
 
 EAPI=7
 
+CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_SUBTREE="sirenia"
@@ -14,23 +15,31 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="cros_host"
+IUSE="cros_host manatee"
 
-RDEPEND="sys-apps/dbus"
-
-DEPEND="${RDEPEND}
+DEPEND="
 	chromeos-base/libsirenia:=
-	=dev-rust/chrono-0.4*:=
+	dev-libs/openssl:0=
+	=dev-rust/base64-0.13*:=
 	dev-rust/chromeos-dbus-bindings:=
 	=dev-rust/dbus-0.8*:=
+	>=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2.0
 	=dev-rust/getopts-0.2*:=
 	dev-rust/libchromeos:=
+	=dev-rust/openssl-0.10*:=
 	>=dev-rust/serde-1.0.114:= <dev-rust/serde-2
 	=dev-rust/serde_derive-1*:=
-	dev-rust/sync:=
 	dev-rust/sys_util:=
 	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
 "
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	chromeos-base/cronista
+	chromeos-base/manatee-runtime
+	dev-rust/manatee-client
+	sys-apps/dbus
+"
 
 src_install() {
 	local build_dir="$(cros-rust_get_build_dir)"
@@ -46,7 +55,14 @@
 	else
 		exeinto "/build/initramfs"
 	fi
-	doexe "${build_dir}/trichechus"
+
+	if use manatee ;  then
+		insinto /etc/init
+		doins upstart/dugong.conf
+		doexe "${build_dir}/trichechus"
+	else
+		dobin "${build_dir}/trichechus"
+	fi
 }
 
 pkg_setup() {
diff --git a/chromeos-base/sisConsoletool/Manifest b/chromeos-base/sisConsoletool/Manifest
index 4f2b5d6..99f89e8 100644
--- a/chromeos-base/sisConsoletool/Manifest
+++ b/chromeos-base/sisConsoletool/Manifest
@@ -1 +1 @@
-DIST sisConsoletool-1.5.6.516.tar.gz 115339 SHA256 5c9a5a36e9001f3c6fb001cfc2f39bb108f890282e6bf0acc786b1d961161991 SHA512 2ccebf2e4c41eb592920da9b4949469fa5471161eb38efd4ed8c923dce237ddb57cb7929c4c9ab5200c74fe6b9bbfc7eb81841d239a6e8cd0577833217ef6b93 WHIRLPOOL 907a504e47a83458164f322f47b8c9e07c339a5495a456ab48092b4ef9af8c7ec35c8aef44c5010aaebd4df8acb7b54af6b9f64f1a965135daee64be0a59c13d
+DIST sisConsoletool-1.5.6.518.tar.gz 115475 BLAKE2B e08ddcaa8548125de8893766126d375fbd98cc35d329f57c77f80929178b151c2999375ff847f7a39e62a1a2b2f074ee6cebb889fc91c922f0337735dfad4aaa SHA512 bb8ff4d5b2da0517241aeeb01b589a1bb73a2f1bfed997e5a6e28d3c56e59e2c45ec57e85b9b7f8f3e761ccc427773363b2bc8266d03e5bd2c11f07d3d2b0b02
diff --git a/chromeos-base/sisConsoletool/OWNERS b/chromeos-base/sisConsoletool/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/sisConsoletool/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/sisConsoletool/sisConsoletool-1.5.6.516.ebuild b/chromeos-base/sisConsoletool/sisConsoletool-1.5.6.516.ebuild
deleted file mode 100644
index 3b5f346..0000000
--- a/chromeos-base/sisConsoletool/sisConsoletool-1.5.6.516.ebuild
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-DESCRIPTION="SiS Consoletool for Firmware Update"
-HOMEPAGE="https://github.com/jason10071/sisConsoletool"
-SRC_URI="https://github.com/jason10071/sisConsoletool/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-src_install() {
-	dosbin bin/SiSGetFirmwareId
-	dosbin bin/SiSUpdateFW
-}
diff --git a/chromeos-base/sisConsoletool/sisConsoletool-1.5.6.518.ebuild b/chromeos-base/sisConsoletool/sisConsoletool-1.5.6.518.ebuild
new file mode 100644
index 0000000..e7ed859
--- /dev/null
+++ b/chromeos-base/sisConsoletool/sisConsoletool-1.5.6.518.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+DESCRIPTION="SiS Consoletool for Firmware Update"
+HOMEPAGE="https://github.com/jason10071/sisConsoletool"
+SRC_URI="https://github.com/jason10071/sisConsoletool/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+src_install() {
+	dosbin bin/SiSGetFirmwareId
+	dosbin bin/SiSUpdateFW
+}
diff --git a/chromeos-base/skylab-inventory/skylab-inventory-0.0.1-r77.ebuild b/chromeos-base/skylab-inventory/skylab-inventory-0.0.1-r77.ebuild
deleted file mode 100644
index 3436f8c..0000000
--- a/chromeos-base/skylab-inventory/skylab-inventory-0.0.1-r77.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="9ec4792e62cc13ceb37084e3e0de6285cb623ef5"
-CROS_WORKON_TREE="174ef18b7db61bb2fc9bfffad805057249cc00be"
-CROS_WORKON_PROJECT="chromiumos/infra/skylab_inventory"
-CROS_WORKON_LOCALNAME="../../infra/skylab_inventory"
-CROS_GO_WORKSPACE="${S}/go"
-
-CROS_GO_BINARIES=(
-	"skyinv/cmd/skylab-inventory-servers"
-	"skyinv/cmd/skylab-inventory-mon"
-)
-
-CROS_GO_PACKAGES=(
-	"chromiumos/infra/skylab/inventory"
-	"chromiumos/infra/skylab/inventory/protos"
-)
-
-inherit cros-workon cros-go
-
-DESCRIPTION="Chromium OS inventory tools"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/infra/skylab_inventory/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-RESTRICT="binchecks strip"
-
-DEPEND="
-	dev-go/errors:=
-	dev-go/go-sys:=
-	dev-go/luci-tsmon:=
-	dev-go/protobuf:=
-"
-RDEPEND="${DEPEND}"
diff --git a/chromeos-base/skylab-inventory/skylab-inventory-9999.ebuild b/chromeos-base/skylab-inventory/skylab-inventory-9999.ebuild
deleted file mode 100644
index 7f8d94a..0000000
--- a/chromeos-base/skylab-inventory/skylab-inventory-9999.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=7
-
-CROS_WORKON_PROJECT="chromiumos/infra/skylab_inventory"
-CROS_WORKON_LOCALNAME="../../infra/skylab_inventory"
-CROS_GO_WORKSPACE="${S}/go"
-
-CROS_GO_BINARIES=(
-	"skyinv/cmd/skylab-inventory-servers"
-	"skyinv/cmd/skylab-inventory-mon"
-)
-
-CROS_GO_PACKAGES=(
-	"chromiumos/infra/skylab/inventory"
-	"chromiumos/infra/skylab/inventory/protos"
-)
-
-inherit cros-workon cros-go
-
-DESCRIPTION="Chromium OS inventory tools"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/infra/skylab_inventory/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="~*"
-IUSE=""
-RESTRICT="binchecks strip"
-
-DEPEND="
-	dev-go/errors:=
-	dev-go/go-sys:=
-	dev-go/luci-tsmon:=
-	dev-go/protobuf:=
-"
-RDEPEND="${DEPEND}"
diff --git a/chromeos-base/smbfs/smbfs-0.0.1-r168.ebuild b/chromeos-base/smbfs/smbfs-0.0.1-r168.ebuild
deleted file mode 100644
index b64ee44..0000000
--- a/chromeos-base/smbfs/smbfs-0.0.1-r168.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "5c6a69ae1a339332642149aa39da47d14efbe3fd" "bb6856c3a41209f9f1b4692de3f1e180a19d2135" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk libpasswordprovider smbfs .gn"
-
-PLATFORM_SUBDIR="smbfs"
-
-inherit cros-workon platform user
-
-DESCRIPTION="FUSE filesystem to mount SMB shares."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/smbfs/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-COMMON_DEPEND="
-	=sys-fs/fuse-2.9*:=
-	net-fs/samba:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/system_api:=
-	chromeos-base/libpasswordprovider:=
-"
-
-pkg_setup() {
-	# Has to be done in pkg_setup() instead of pkg_preinst() since
-	# src_install() needs <daemon_user> and <daemon_group>.
-	enewuser "fuse-smbfs"
-	enewgroup "fuse-smbfs"
-	cros-workon_pkg_setup
-}
-
-src_install() {
-	dosbin "${OUT}"/smbfs
-
-	insinto /usr/share/policy
-	newins seccomp_filters/smbfs-seccomp-"${ARCH}".policy smbfs-seccomp.policy
-
-	local daemon_store="/etc/daemon-store/smbfs"
-	dodir "${daemon_store}"
-	fperms 0700 "${daemon_store}"
-	fowners fuse-smbfs:fuse-smbfs "${daemon_store}"
-}
-
-platform_pkg_test() {
-	local tests=(
-		smbfs_test
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/smbfs/smbfs-0.0.1-r203.ebuild b/chromeos-base/smbfs/smbfs-0.0.1-r203.ebuild
new file mode 100644
index 0000000..55e4388
--- /dev/null
+++ b/chromeos-base/smbfs/smbfs-0.0.1-r203.ebuild
@@ -0,0 +1,67 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "eae0546f4ee5132d4544af4770755eb05f60cba6" "75c3e472455b6f19ecd3d99e182d59e07d4e84da" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk libpasswordprovider smbfs .gn"
+
+PLATFORM_SUBDIR="smbfs"
+
+inherit cros-workon platform user
+
+DESCRIPTION="FUSE filesystem to mount SMB shares."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/smbfs/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	=sys-fs/fuse-2.9*:=
+	net-fs/samba:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/system_api:=
+	chromeos-base/libpasswordprovider:=
+"
+
+pkg_setup() {
+	# Has to be done in pkg_setup() instead of pkg_preinst() since
+	# src_install() needs <daemon_user> and <daemon_group>.
+	enewuser "fuse-smbfs"
+	enewgroup "fuse-smbfs"
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	dosbin "${OUT}"/smbfs
+
+	insinto /usr/share/policy
+	newins seccomp_filters/smbfs-seccomp-"${ARCH}".policy smbfs-seccomp.policy
+
+	local daemon_store="/etc/daemon-store/smbfs"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners fuse-smbfs:fuse-smbfs "${daemon_store}"
+}
+
+platform_pkg_test() {
+	local tests=(
+		smbfs_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/smbprovider/smbprovider-0.0.1-r679.ebuild b/chromeos-base/smbprovider/smbprovider-0.0.1-r679.ebuild
deleted file mode 100644
index 3f1052b..0000000
--- a/chromeos-base/smbprovider/smbprovider-0.0.1-r679.ebuild
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "5c6a69ae1a339332642149aa39da47d14efbe3fd" "2fd1ce78f8da4aa4f9dd0dcb45b5e5e81f898bcd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(allenvic): Remove libpasswordprovider from here once crbug.com/833675 is resolved.
-CROS_WORKON_SUBTREE="common-mk libpasswordprovider smbprovider .gn"
-
-PLATFORM_SUBDIR="smbprovider"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Provides access to Samba file share"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/smbprovider/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="fuzzer"
-
-COMMON_DEPEND="
-	dev-libs/protobuf:=
-	>=net-fs/samba-4.5.3-r6
-	sys-apps/dbus:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/protofiles:=
-	chromeos-base/system_api:=[fuzzer?]
-	chromeos-base/libpasswordprovider:=
-"
-
-pkg_setup() {
-	# Has to be done in pkg_setup() instead of pkg_preinst() since
-	# src_install() needs smbproviderd:smbproviderd.
-	enewuser "smbproviderd"
-	enewgroup "smbproviderd"
-	cros-workon_pkg_setup
-}
-
-src_install() {
-	dosbin "${OUT}"/smbproviderd
-
-	insinto /etc/dbus-1/system.d
-	doins etc/dbus-1/org.chromium.SmbProvider.conf
-
-	insinto /usr/share/dbus-1/system-services
-	doins org.chromium.SmbProvider.service
-
-	insinto /etc/init
-	doins etc/init/smbproviderd.conf
-
-	insinto /usr/share/policy
-	newins seccomp_filters/smbprovider-seccomp-"${ARCH}".policy smbprovider-seccomp.policy
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/netbios_packet_fuzzer
-
-	local daemon_store="/etc/daemon-store/smbproviderd"
-	dodir "${daemon_store}"
-	fperms 0700 "${daemon_store}"
-	fowners smbproviderd:smbproviderd "${daemon_store}"
-}
-
-platform_pkg_test() {
-	local tests=(
-		smbprovider_test
-	)
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/smbprovider/smbprovider-0.0.1-r712.ebuild b/chromeos-base/smbprovider/smbprovider-0.0.1-r712.ebuild
new file mode 100644
index 0000000..f4d9264
--- /dev/null
+++ b/chromeos-base/smbprovider/smbprovider-0.0.1-r712.ebuild
@@ -0,0 +1,81 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "eae0546f4ee5132d4544af4770755eb05f60cba6" "e23b68f653a4b37525fbe6a6f1a490c47c9d99cc" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(allenvic): Remove libpasswordprovider from here once crbug.com/833675 is resolved.
+CROS_WORKON_SUBTREE="common-mk libpasswordprovider smbprovider .gn"
+
+PLATFORM_SUBDIR="smbprovider"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Provides access to Samba file share"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/smbprovider/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="fuzzer"
+
+COMMON_DEPEND="
+	dev-libs/protobuf:=
+	>=net-fs/samba-4.5.3-r6
+	sys-apps/dbus:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/protofiles:=
+	chromeos-base/system_api:=[fuzzer?]
+	chromeos-base/libpasswordprovider:=
+"
+
+pkg_setup() {
+	# Has to be done in pkg_setup() instead of pkg_preinst() since
+	# src_install() needs smbproviderd:smbproviderd.
+	enewuser "smbproviderd"
+	enewgroup "smbproviderd"
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	dosbin "${OUT}"/smbproviderd
+
+	insinto /etc/dbus-1/system.d
+	doins etc/dbus-1/org.chromium.SmbProvider.conf
+
+	insinto /usr/share/dbus-1/system-services
+	doins org.chromium.SmbProvider.service
+
+	insinto /etc/init
+	doins etc/init/smbproviderd.conf
+
+	insinto /usr/share/policy
+	newins seccomp_filters/smbprovider-seccomp-"${ARCH}".policy smbprovider-seccomp.policy
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/netbios_packet_fuzzer
+
+	local daemon_store="/etc/daemon-store/smbproviderd"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners smbproviderd:smbproviderd "${daemon_store}"
+}
+
+platform_pkg_test() {
+	local tests=(
+		smbprovider_test
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/smogcheck/smogcheck-0.0.1-r3041.ebuild b/chromeos-base/smogcheck/smogcheck-0.0.1-r3041.ebuild
deleted file mode 100644
index caf73bf..0000000
--- a/chromeos-base/smogcheck/smogcheck-0.0.1-r3041.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "25b90cd13b01122d778a1d55d814c5b001b88d22" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_SUBTREE="common-mk smogcheck .gn"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-
-inherit cros-common.mk cros-sanitizers cros-workon cros-debug
-
-DESCRIPTION="TPM SmogCheck library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/smogcheck/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="-asan"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/smogcheck"
-}
-
-src_configure() {
-	sanitizers-setup-env
-	cros-common.mk_src_configure
-}
-
-src_install() {
-	emake DESTDIR="${D}" LIBDIR="$(get_libdir)" install
-}
diff --git a/chromeos-base/smogcheck/smogcheck-0.0.1-r3066.ebuild b/chromeos-base/smogcheck/smogcheck-0.0.1-r3066.ebuild
new file mode 100644
index 0000000..bdccc97
--- /dev/null
+++ b/chromeos-base/smogcheck/smogcheck-0.0.1-r3066.ebuild
@@ -0,0 +1,35 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "25b90cd13b01122d778a1d55d814c5b001b88d22" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_SUBTREE="common-mk smogcheck .gn"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+
+inherit cros-common.mk cros-sanitizers cros-workon cros-debug
+
+DESCRIPTION="TPM SmogCheck library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/smogcheck/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="-asan"
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/smogcheck"
+}
+
+src_configure() {
+	sanitizers-setup-env
+	cros-common.mk_src_configure
+}
+
+src_install() {
+	emake DESTDIR="${D}" LIBDIR="$(get_libdir)" install
+}
diff --git a/chromeos-base/sommelier/sommelier-0.0.1-r142.ebuild b/chromeos-base/sommelier/sommelier-0.0.1-r142.ebuild
new file mode 100644
index 0000000..030a909
--- /dev/null
+++ b/chromeos-base/sommelier/sommelier-0.0.1-r142.ebuild
@@ -0,0 +1,69 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="ce3c961f927aa35110967506c86aca884a84e426"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "73d11c9c68b8ad83037d9b5820a42f0e51c57d74" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk vm_tools/sommelier .gn"
+
+PLATFORM_SUBDIR="vm_tools/sommelier"
+
+inherit cros-workon platform
+
+DESCRIPTION="A Wayland compositor for use in CrOS VMs"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/sommelier"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="kvm_guest"
+
+# This ebuild should only be used on VM guest boards.
+REQUIRED_USE="kvm_guest"
+
+COMMON_DEPEND="
+	media-libs/mesa:=[gbm]
+	x11-base/xwayland:=
+	x11-libs/libxkbcommon:=
+	x11-libs/pixman:=
+"
+
+RDEPEND="
+	!<chromeos-base/vm_guest_tools-0.0.2-r722
+	${COMMON_DEPEND}
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	dev-util/meson
+	dev-util/ninja
+"
+
+src_install() {
+	dobin "${OUT}"/sommelier
+}
+
+platform_pkg_test() {
+	local tests=(
+		sommelier_test
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+
+	# Ensure the meson build script continues to work.
+	if ! use x86 && ! use amd64 ; then
+		elog "Skipping meson tests on non-x86 platform"
+	else
+		meson tmp_build_dir || die "Failed to configure meson build"
+		ninja -C tmp_build_dir || die "Failed to build sommelier with meson"
+		[ -f tmp_build_dir/sommelier ] || die "Target 'sommelier' was not built by meson"
+		ninja -C tmp_build_dir test || die "Tests failed"
+	fi
+}
diff --git a/chromeos-base/sommelier/sommelier-0.0.1-r87.ebuild b/chromeos-base/sommelier/sommelier-0.0.1-r87.ebuild
deleted file mode 100644
index 2858866..0000000
--- a/chromeos-base/sommelier/sommelier-0.0.1-r87.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="4a50fe1bb733e3fce1c1e66c4f6a8f01604a0880"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "49f2407238a7bbb4103aa4cb20849473a838b480" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk vm_tools/sommelier .gn"
-
-PLATFORM_SUBDIR="vm_tools/sommelier"
-
-inherit cros-workon platform
-
-DESCRIPTION="A Wayland compositor for use in CrOS VMs"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/sommelier"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="kvm_guest"
-
-# This ebuild should only be used on VM guest boards.
-REQUIRED_USE="kvm_guest"
-
-COMMON_DEPEND="
-	media-libs/mesa:=[gbm]
-	x11-base/xwayland:=
-	x11-libs/libxkbcommon:=
-	x11-libs/pixman:=
-"
-
-RDEPEND="
-	!<chromeos-base/vm_guest_tools-0.0.2-r722
-	${COMMON_DEPEND}
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	dev-util/meson
-	dev-util/ninja
-"
-
-src_install() {
-	dobin "${OUT}"/sommelier
-}
-
-platform_pkg_test() {
-	# TODO(hollingum): maybe sommelier would break less if it had any tests...
-	local tests=(
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-
-	# Ensure the meson build script continues to work.
-	if ! use x86 && ! use amd64 ; then
-		elog "Skipping meson tests on non-x86 platform"
-	else
-		meson tmp_build_dir || die "Failed to configure meson build"
-		ninja -C tmp_build_dir || die "Failed to build sommelier with meson"
-		[ -f tmp_build_dir/sommelier ] || die "Target 'sommelier' was not built by meson"
-	fi
-}
diff --git a/chromeos-base/sommelier/sommelier-9999.ebuild b/chromeos-base/sommelier/sommelier-9999.ebuild
index 459e4df..56f77d5 100644
--- a/chromeos-base/sommelier/sommelier-9999.ebuild
+++ b/chromeos-base/sommelier/sommelier-9999.ebuild
@@ -46,8 +46,8 @@
 }
 
 platform_pkg_test() {
-	# TODO(hollingum): maybe sommelier would break less if it had any tests...
 	local tests=(
+		sommelier_test
 	)
 
 	local test_bin
@@ -62,5 +62,6 @@
 		meson tmp_build_dir || die "Failed to configure meson build"
 		ninja -C tmp_build_dir || die "Failed to build sommelier with meson"
 		[ -f tmp_build_dir/sommelier ] || die "Target 'sommelier' was not built by meson"
+		ninja -C tmp_build_dir test || die "Tests failed"
 	fi
 }
diff --git a/chromeos-base/st_flash/OWNERS b/chromeos-base/st_flash/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/st_flash/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/st_flash/st_flash-0.0.1-r1228.ebuild b/chromeos-base/st_flash/st_flash-0.0.1-r1228.ebuild
deleted file mode 100644
index 1906de4..0000000
--- a/chromeos-base/st_flash/st_flash-0.0.1-r1228.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "385387e5576998414ebd9e06ac553d13c0f69025" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_SUBTREE="common-mk st_flash .gn"
-
-PLATFORM_SUBDIR="st_flash"
-
-inherit cros-workon platform
-
-DESCRIPTION="STM32 IAP firmware updater for Chrome OS touchpads"
-HOMEPAGE=""
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-src_install() {
-	dobin "${OUT}"/st_flash
-}
diff --git a/chromeos-base/st_flash/st_flash-0.0.1-r1256.ebuild b/chromeos-base/st_flash/st_flash-0.0.1-r1256.ebuild
new file mode 100644
index 0000000..6acf022
--- /dev/null
+++ b/chromeos-base/st_flash/st_flash-0.0.1-r1256.ebuild
@@ -0,0 +1,27 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="6edcd690f665def9c2ecabe6ea77fec07e8a601c"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "791e2808df33f88d5ae99fabe78c4f0dbd2035fa" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_SUBTREE="common-mk st_flash .gn"
+
+PLATFORM_SUBDIR="st_flash"
+
+inherit cros-workon platform
+
+DESCRIPTION="STM32 IAP firmware updater for Chrome OS touchpads"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+src_install() {
+	dobin "${OUT}"/st_flash
+}
diff --git a/chromeos-base/swap-init/files/init/swap.sh b/chromeos-base/swap-init/files/init/swap.sh
index 0ddebe4..c902a40 100755
--- a/chromeos-base/swap-init/files/init/swap.sh
+++ b/chromeos-base/swap-init/files/init/swap.sh
@@ -35,8 +35,8 @@
 min_filelist_default_generator() {
   # Check if ARC++ is running.  But don't check if it's not installed.
   if grep -q CHROMEOS_ARC_VERSION /etc/lsb-release && \
-      [ "$(initctl status arc-boot-continue)" = \
-           "arc-boot-continue start/running" ]; then
+      [ "$(initctl status arcpp-post-login-services)" = \
+           "arcpp-post-login-services start/running" ]; then
     echo 400000  # KiB
   else
     echo 100000  # KiB
@@ -278,19 +278,16 @@
       sleep 0.1
     done
   else
-    local key
-    key=$(dd if=/dev/urandom bs=512 count=1 2>/dev/null)
-    echo $key | cryptsetup -q -v --type luks --cipher aes-xts-plain64 \
-                           --key-size 256 --hash sha256 --iter-time 2000 \
-                           --use-urandom --verify-passphrase luksFormat \
-                           --integrity hmac-sha256 --integrity-no-journal \
-                           --key-file - $swap_device
-    echo $key | cryptsetup open --integrity-no-journal --key-file \
-                           - $swap_device enc-int-swap
-    mkswap "/dev/mapper/enc-int-swap" ||
-      die "mkswap /dev/mapper/enc-int-swap failed"
-    swapon -d "/dev/mapper/enc-int-swap" ||
-      die "swapon /dev/mapper/enc-int-swap failed"
+    local table
+    table="0 $(blockdev --getsz "${swap_device}") crypt aes-xts-plain64 \
+      $(tr -dc 'A-F0-9' < /dev/urandom | fold -w 64 | head -n 1) \
+      0 ${swap_device} 0 2 allow_discards submit_from_crypt_cpus"
+    /sbin/dmsetup create enc-swap --table "${table}" ||
+      die "/sbin/dmsetup create enc-swap failed"
+    mkswap "/dev/mapper/enc-swap" ||
+      die "mkswap /dev/mapper/enc-swap failed"
+    swapon -d "/dev/mapper/enc-swap" ||
+      die "swapon /dev/mapper/enc-swap failed"
     echo 1 > /sys/module/zswap/parameters/enabled
     echo z3fold > /sys/module/zswap/parameters/zpool
     echo 1 > /sys/kernel/mm/chromeos-low_mem/ram_vs_swap_weight
diff --git a/chromeos-base/swap-init/swap-init-0.0.1-r36.ebuild b/chromeos-base/swap-init/swap-init-0.0.1-r42.ebuild
similarity index 100%
rename from chromeos-base/swap-init/swap-init-0.0.1-r36.ebuild
rename to chromeos-base/swap-init/swap-init-0.0.1-r42.ebuild
diff --git a/chromeos-base/syslog-cat/syslog-cat-0.0.1-r22.ebuild b/chromeos-base/syslog-cat/syslog-cat-0.0.1-r22.ebuild
deleted file mode 100644
index 10cd6194..0000000
--- a/chromeos-base/syslog-cat/syslog-cat-0.0.1-r22.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "d7ac91bd9fca40b007f46a3584fbb60fac4f97d7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk syslog-cat .gn"
-
-PLATFORM_SUBDIR="syslog-cat"
-
-inherit cros-workon platform
-
-DESCRIPTION="Simple command to forward stdout/err to syslog"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/syslog-cat"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-src_install() {
-	platform_install
-}
-
-platform_pkg_test() {
-	platform test_all
-}
-
diff --git a/chromeos-base/syslog-cat/syslog-cat-0.0.1-r49.ebuild b/chromeos-base/syslog-cat/syslog-cat-0.0.1-r49.ebuild
new file mode 100644
index 0000000..b0ad81d
--- /dev/null
+++ b/chromeos-base/syslog-cat/syslog-cat-0.0.1-r49.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2020 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.
+
+EAPI=7
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "5cbb3b50e94cd190817a813ffb446c07cde6990b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="common-mk syslog-cat .gn"
+
+PLATFORM_SUBDIR="syslog-cat"
+
+inherit cros-workon platform
+
+DESCRIPTION="Simple command to forward stdout/err to syslog"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/syslog-cat"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+src_install() {
+	platform_install
+}
+
+platform_pkg_test() {
+	platform test_all
+}
+
diff --git a/chromeos-base/system-locales/system-locales-2.23-r1.ebuild b/chromeos-base/system-locales/system-locales-2.23-r1.ebuild
deleted file mode 100644
index 6b5c0af..0000000
--- a/chromeos-base/system-locales/system-locales-2.23-r1.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# Note: Chrome itself does not use or care about system locales.  It has ICU
-# baked in to handle all i18n issues.  These system locales are for all the
-# other packages that might have need of a UTF-8 clean input, including for
-# devs who launch shells.
-#
-# We only generate en_US.UTF-8 currently as our "neutral" locale.  When glibc
-# finally ships C.UTF-8, we can switch over to that.
-# https://sourceware.org/glibc/wiki/Proposals/C.UTF-8
-
-EAPI="5"
-
-inherit toolchain-funcs multilib
-
-DESCRIPTION="Some system locales when apps need more than C (not for apps using ICU for i18n)"
-HOMEPAGE="http://dev.chromium.org/"
-SRC_URI=""
-
-# The source locale files come from glibc, and the FSF specifically disclaims
-# any and all copyright to them.
-LICENSE="public-domain"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-# The locale files change across glibc versions, so make sure we stay in sync
-# with them.  Pinning the version here forces us to revbump it when we update
-# the glibc version.
-DEPEND=">=sys-libs/glibc-${PV}"
-RDEPEND="${DEPEND}"
-
-S="${WORKDIR}"
-
-e() {
-	echo "$@"
-	"$@" || die
-}
-
-src_compile() {
-	# When we update to glibc-2.24+, it has better command line options for
-	# controlling where files get installed to.  For now, hack around it by
-	# assuming specific output paths.
-	#if has_version '>=sys-libs/glibc-2.24'; then
-	#	die "Update the ebuild hack!"
-	#fi
-
-	local args=(
-		# Many locales contain warnings that we don't care about and we can't
-		# really fix here.
-		--force
-
-		# Select the right output format for the target.
-		--$(tc-endian)-endian
-	)
-
-	mkdir -p usr/lib64/locale
-	e localedef --prefix="${PWD}" "${args[@]}" \
-		--charmap=UTF-8 --inputfile=en_US \
-		en_US.UTF-8
-}
-
-src_install() {
-	insinto /usr/$(get_libdir)/locale
-	doins usr/lib64/locale/locale-archive
-}
diff --git a/chromeos-base/system-locales/system-locales-2.32-r1.ebuild b/chromeos-base/system-locales/system-locales-2.32-r1.ebuild
new file mode 100644
index 0000000..2bba764
--- /dev/null
+++ b/chromeos-base/system-locales/system-locales-2.32-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# Note: Chrome itself does not use or care about system locales.  It has ICU
+# baked in to handle all i18n issues.  These system locales are for all the
+# other packages that might have need of a UTF-8 clean input, including for
+# devs who launch shells.
+#
+# We only generate en_US.UTF-8 currently as our "neutral" locale.  When glibc
+# finally ships C.UTF-8, we can switch over to that.
+# https://sourceware.org/glibc/wiki/Proposals/C.UTF-8
+
+EAPI="5"
+
+inherit toolchain-funcs multilib
+
+DESCRIPTION="Some system locales when apps need more than C (not for apps using ICU for i18n)"
+HOMEPAGE="http://dev.chromium.org/"
+SRC_URI=""
+
+# The source locale files come from glibc, and the FSF specifically disclaims
+# any and all copyright to them.
+LICENSE="public-domain"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+# The locale files change across glibc versions, so make sure we stay in sync
+# with them.  Pinning the version here forces us to revbump it when we update
+# the glibc version.
+DEPEND="~sys-libs/glibc-${PV}"
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}"
+
+e() {
+	echo "$@"
+	"$@" || die
+}
+
+src_compile() {
+	local args=(
+		# Many locales contain warnings that we don't care about and we can't
+		# really fix here.
+		--force
+
+		# Select the right output format for the target.
+		--$(tc-endian)-endian
+	)
+
+	mkdir -p usr/lib/locale
+	e localedef --prefix="${PWD}" "${args[@]}" \
+		--charmap=UTF-8 --inputfile=en_US \
+		en_US.UTF-8
+}
+
+src_install() {
+	insinto /usr/lib/locale
+	doins usr/lib/locale/locale-archive
+}
diff --git a/chromeos-base/system-proxy/system-proxy-0.0.1-r169.ebuild b/chromeos-base/system-proxy/system-proxy-0.0.1-r169.ebuild
deleted file mode 100644
index 838fd9b..0000000
--- a/chromeos-base/system-proxy/system-proxy-0.0.1-r169.ebuild
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="243da1f4b5dca7f8e606e599833affe013e0d4d9"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "5c6a69ae1a339332642149aa39da47d14efbe3fd" "44ed5733b5f3094beee0a282d504224240a8582f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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"
-
-PLATFORM_SUBDIR="system-proxy"
-
-inherit cros-workon platform user
-
-DESCRIPTION="A daemon that provides authentication support for system services
-and ARC apps behind an authenticated web proxy."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/system-proxy/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="fuzzer"
-
-COMMON_DEPEND="
-	chromeos-base/libpasswordprovider:=
-	chromeos-base/minijail:=
-	chromeos-base/patchpanel:=
-	chromeos-base/patchpanel-client:=
-	dev-libs/protobuf:=
-	dev-libs/dbus-glib:=
-	sys-apps/dbus:=
-	net-misc/curl:=
-"
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/permission_broker-client:=
-	fuzzer? ( dev-libs/libprotobuf-mutator:= )
-"
-
-pkg_preinst() {
-	enewuser "system-proxy"
-	enewgroup "system-proxy"
-}
-
-src_install() {
-	dosbin "${OUT}"/system_proxy
-	dosbin "${OUT}"/system_proxy_worker
-
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.SystemProxy.conf
-
-	insinto /usr/share/dbus-1/system-services
-	doins dbus/org.chromium.SystemProxy.service
-
-	insinto /etc/init
-	doins init/system-proxy.conf
-
-	insinto /usr/share/policy
-	newins seccomp/system-proxy-seccomp-"${ARCH}".policy system-proxy-seccomp.policy
-	newins seccomp/system-proxy-worker-seccomp-"${ARCH}".policy system-proxy-worker-seccomp.policy
-
-	if use fuzzer; then
-		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/system_proxy_connect_headers_parser_fuzzer
-		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/system_proxy_worker_config_fuzzer
-	fi
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/system-proxy_test"
-}
diff --git a/chromeos-base/system-proxy/system-proxy-0.0.1-r214.ebuild b/chromeos-base/system-proxy/system-proxy-0.0.1-r214.ebuild
new file mode 100644
index 0000000..1550b32
--- /dev/null
+++ b/chromeos-base/system-proxy/system-proxy-0.0.1-r214.ebuild
@@ -0,0 +1,74 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "eae0546f4ee5132d4544af4770755eb05f60cba6" "4ec0160713133cb6e004285d204db461280e4549" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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"
+
+PLATFORM_SUBDIR="system-proxy"
+
+inherit cros-workon platform user
+
+DESCRIPTION="A daemon that provides authentication support for system services
+and ARC apps behind an authenticated web proxy."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/system-proxy/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="fuzzer"
+
+COMMON_DEPEND="
+	chromeos-base/libpasswordprovider:=
+	chromeos-base/minijail:=
+	chromeos-base/patchpanel:=
+	chromeos-base/patchpanel-client:=
+	dev-libs/protobuf:=
+	sys-apps/dbus:=
+	net-misc/curl:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/permission_broker-client:=
+	fuzzer? ( dev-libs/libprotobuf-mutator:= )
+"
+
+pkg_preinst() {
+	enewuser "system-proxy"
+	enewgroup "system-proxy"
+}
+
+src_install() {
+	dosbin "${OUT}"/system_proxy
+	dosbin "${OUT}"/system_proxy_worker
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.SystemProxy.conf
+
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.SystemProxy.service
+
+	insinto /etc/init
+	doins init/system-proxy.conf
+
+	insinto /usr/share/policy
+	newins seccomp/system-proxy-seccomp-"${ARCH}".policy system-proxy-seccomp.policy
+	newins seccomp/system-proxy-worker-seccomp-"${ARCH}".policy system-proxy-worker-seccomp.policy
+
+	if use fuzzer; then
+		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/system_proxy_connect_headers_parser_fuzzer
+		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/system_proxy_worker_config_fuzzer
+		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/system_proxy_http_util_fuzzer
+	fi
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/system-proxy_test"
+}
diff --git a/chromeos-base/system-proxy/system-proxy-9999.ebuild b/chromeos-base/system-proxy/system-proxy-9999.ebuild
index 5d185b5..7ec8528 100644
--- a/chromeos-base/system-proxy/system-proxy-9999.ebuild
+++ b/chromeos-base/system-proxy/system-proxy-9999.ebuild
@@ -28,7 +28,6 @@
 	chromeos-base/patchpanel:=
 	chromeos-base/patchpanel-client:=
 	dev-libs/protobuf:=
-	dev-libs/dbus-glib:=
 	sys-apps/dbus:=
 	net-misc/curl:=
 "
@@ -64,6 +63,7 @@
 	if use fuzzer; then
 		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/system_proxy_connect_headers_parser_fuzzer
 		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/system_proxy_worker_config_fuzzer
+		platform_fuzzer_install "${S}"/OWNERS "${OUT}"/system_proxy_http_util_fuzzer
 	fi
 }
 
diff --git a/chromeos-base/system_api/system_api-0.0.1-r4175.ebuild b/chromeos-base/system_api/system_api-0.0.1-r4175.ebuild
deleted file mode 100644
index d9330f3..0000000
--- a/chromeos-base/system_api/system_api-0.0.1-r4175.ebuild
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="109363d0a03be594cf5611441597c607960c4f3d"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "fa94807d1776021aeabe89544645b6660a98dc16" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_GO_PACKAGES=(
-	"chromiumos/system_api/..."
-)
-
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk system_api .gn"
-
-PLATFORM_SUBDIR="system_api"
-WANT_LIBBRILLO="no"
-
-inherit cros-fuzzer cros-go cros-workon platform
-
-DESCRIPTION="Chrome OS system API (D-Bus service names, etc.)"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/system_api/"
-LICENSE="BSD-Google"
-# The subslot should be manually bumped any time protobuf is upgraded
-# to a newer version whose libraries are incompatible with the
-# generated sources of the previous version. As a rule of thumb if the
-# minor version of protobuf has changed, the subslot should be incremented.
-SLOT="0/1"
-KEYWORDS="*"
-IUSE="cros_host"
-
-RDEPEND=""
-
-DEPEND="${RDEPEND}
-	dev-go/protobuf:=
-	dev-libs/protobuf:=
-	cros_host? ( net-libs/grpc:= )
-"
-
-src_unpack() {
-	platform_src_unpack
-	CROS_GO_WORKSPACE="${OUT}/gen/go"
-}
-
-src_install() {
-	insinto /usr/"$(get_libdir)"/pkgconfig
-	doins system_api.pc
-
-	insinto /usr/include/chromeos
-	doins -r dbus switches constants
-	find "${D}" -name OWNERS -delete || die
-
-	# Install the dbus-constants.h files in the respective daemons' client library
-	# include directory. Users will need to include the corresponding client
-	# library to access these files.
-	local dir dirs=(
-		arc-data-snapshotd
-		anomaly_detector
-		attestation
-		biod
-		chunneld
-		cros-disks
-		cros_healthd
-		cryptohome
-		debugd
-		dlcservice
-		kerberos
-		login_manager
-		lorgnette
-		oobe_config
-		runtime_probe
-		pciguard
-		permission_broker
-		power_manager
-		shill
-		smbprovider
-		tpm_manager
-		update_engine
-		wilco_dtc_supportd
-	)
-	for dir in "${dirs[@]}"; do
-		insinto /usr/include/"${dir}"-client/"${dir}"
-		doins dbus/"${dir}"/dbus-constants.h
-	done
-
-	# These are files/projects installed in the common dir.
-	dirs=( system_api )
-
-	# These are project-specific files.
-	dirs+=( $(
-		cd "${S}/dbus" || die
-		dirname */*.proto | sort -u
-	) )
-
-	for dir in "${dirs[@]}"; do
-		insinto /usr/include/"${dir}"/proto_bindings
-		doins "${OUT}"/gen/include/"${dir}"/proto_bindings/*.h
-
-		if [[ "${dir}" == "system_api" ]]; then
-			dolib.a "${OUT}/libsystem_api-protos.a"
-		else
-			dolib.a "${OUT}/libsystem_api-${dir}-protos.a"
-		fi
-	done
-
-	dolib.so "${OUT}/lib/libsystem_api.so"
-
-	cros-go_src_install
-}
diff --git a/chromeos-base/system_api/system_api-0.0.1-r4369.ebuild b/chromeos-base/system_api/system_api-0.0.1-r4369.ebuild
new file mode 100644
index 0000000..b1b40ee6
--- /dev/null
+++ b/chromeos-base/system_api/system_api-0.0.1-r4369.ebuild
@@ -0,0 +1,111 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6dd33d823125a9f9e78f10c51ea5756c9f8b64bc"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "17b97c5c2ddeb8fe389f24ed79e581941c90795b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_GO_PACKAGES=(
+	"chromiumos/system_api/..."
+)
+
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk system_api .gn"
+
+PLATFORM_SUBDIR="system_api"
+WANT_LIBBRILLO="no"
+
+inherit cros-fuzzer cros-go cros-workon platform
+
+DESCRIPTION="Chrome OS system API (D-Bus service names, etc.)"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/system_api/"
+LICENSE="BSD-Google"
+# The subslot should be manually bumped any time protobuf is upgraded
+# to a newer version whose libraries are incompatible with the
+# generated sources of the previous version. As a rule of thumb if the
+# minor version of protobuf has changed, the subslot should be incremented.
+SLOT="0/1"
+KEYWORDS="*"
+IUSE="cros_host"
+
+RDEPEND=""
+
+DEPEND="${RDEPEND}
+	dev-go/protobuf:=
+	dev-libs/protobuf:=
+	cros_host? ( net-libs/grpc:= )
+"
+
+src_unpack() {
+	platform_src_unpack
+	CROS_GO_WORKSPACE="${OUT}/gen/go"
+}
+
+src_install() {
+	insinto /usr/"$(get_libdir)"/pkgconfig
+	doins system_api.pc
+
+	insinto /usr/include/chromeos
+	doins -r dbus switches constants
+	find "${D}" -name OWNERS -delete || die
+
+	# Install the dbus-constants.h files in the respective daemons' client library
+	# include directory. Users will need to include the corresponding client
+	# library to access these files.
+	local dir dirs=(
+		arc-data-snapshotd
+		anomaly_detector
+		attestation
+		biod
+		chunneld
+		cros-disks
+		cros_healthd
+		cryptohome
+		debugd
+		dlcservice
+		kerberos
+		login_manager
+		lorgnette
+		oobe_config
+		runtime_probe
+		pciguard
+		permission_broker
+		power_manager
+		rmad
+		shill
+		smbprovider
+		tpm_manager
+		update_engine
+		wilco_dtc_supportd
+	)
+	for dir in "${dirs[@]}"; do
+		insinto /usr/include/"${dir}"-client/"${dir}"
+		doins dbus/"${dir}"/dbus-constants.h
+	done
+
+	# These are files/projects installed in the common dir.
+	dirs=( system_api )
+
+	# These are project-specific files.
+	dirs+=( $(
+		cd "${S}/dbus" || die
+		dirname */*.proto | sort -u
+	) )
+
+	for dir in "${dirs[@]}"; do
+		insinto /usr/include/"${dir}"/proto_bindings
+		doins "${OUT}"/gen/include/"${dir}"/proto_bindings/*.h
+
+		if [[ "${dir}" == "system_api" ]]; then
+			dolib.a "${OUT}/libsystem_api-protos.a"
+		else
+			dolib.a "${OUT}/libsystem_api-${dir}-protos.a"
+		fi
+	done
+
+	dolib.so "${OUT}/lib/libsystem_api.so"
+
+	cros-go_src_install
+}
diff --git a/chromeos-base/system_api/system_api-9999.ebuild b/chromeos-base/system_api/system_api-9999.ebuild
index a7b4304..5553741 100644
--- a/chromeos-base/system_api/system_api-9999.ebuild
+++ b/chromeos-base/system_api/system_api-9999.ebuild
@@ -71,6 +71,7 @@
 		pciguard
 		permission_broker
 		power_manager
+		rmad
 		shill
 		smbprovider
 		tpm_manager
diff --git a/chromeos-base/tast-build-deps/tast-build-deps-2-r5.ebuild b/chromeos-base/tast-build-deps/tast-build-deps-2-r5.ebuild
deleted file mode 100644
index 70f80bf..0000000
--- a/chromeos-base/tast-build-deps/tast-build-deps-2-r5.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
-# the canonical empty project.
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="platform/empty-project"
-
-inherit cros-workon
-
-DESCRIPTION="Build-time dependencies of Tast binaries"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="
-	chromeos-base/aosp-frameworks-base-proto
-	chromeos-base/cros-config-api
-	chromeos-base/hardware_verifier_proto
-	chromeos-base/policy-go-proto
-	chromeos-base/system_api
-	chromeos-base/vm_protos
-	chromeos-base/wilco-dtc-grpc-protos
-	dev-go/boringssl-acvptool
-	dev-go/cdp
-	dev-go/clock
-	dev-go/cmp
-	dev-go/crypto
-	dev-go/dbus
-	dev-go/dst
-	dev-go/exif
-	dev-go/fscrypt
-	dev-go/gapi-drive
-	dev-go/genproto
-	dev-go/godebug
-	dev-go/golang-evdev
-	dev-go/golint
-	dev-go/gopacket
-	dev-go/gopsutil
-	dev-go/go-matroska
-	dev-go/go-sys
-	dev-go/grpc
-	dev-go/mdns
-	dev-go/mp4
-	dev-go/oauth2
-	dev-go/perfetto-protos
-	dev-go/protobuf
-	dev-go/selinux
-	dev-go/subcommands
-	dev-go/sync
-	dev-go/uuid
-	dev-go/vsock
-	dev-go/yaml
-"
-
-RDEPEND="${DEPEND}"
diff --git a/chromeos-base/tast-build-deps/tast-build-deps-2-r6.ebuild b/chromeos-base/tast-build-deps/tast-build-deps-2-r6.ebuild
new file mode 100644
index 0000000..57b1440
--- /dev/null
+++ b/chromeos-base/tast-build-deps/tast-build-deps-2-r6.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="Build-time dependencies of Tast binaries"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	chromeos-base/aosp-frameworks-base-proto
+	chromeos-base/cros-config-api
+	chromeos-base/hardware_verifier_proto
+	chromeos-base/perfetto_proto
+	chromeos-base/policy-go-proto
+	chromeos-base/system_api
+	chromeos-base/vm_protos
+	chromeos-base/wilco-dtc-grpc-protos
+	dev-go/boringssl-acvptool
+	dev-go/cdp
+	dev-go/clock
+	dev-go/cmp
+	dev-go/crypto
+	dev-go/dbus
+	dev-go/dst
+	dev-go/exif
+	dev-go/fscrypt
+	dev-go/gapi-drive
+	dev-go/genproto
+	dev-go/godebug
+	dev-go/golang-evdev
+	dev-go/golint
+	dev-go/gopacket
+	dev-go/gopsutil
+	dev-go/go-matroska
+	dev-go/go-sys
+	dev-go/grpc
+	dev-go/mdns
+	dev-go/mp4
+	dev-go/oauth2
+	dev-go/perfetto-protos
+	dev-go/protobuf
+	dev-go/selinux
+	dev-go/subcommands
+	dev-go/sync
+	dev-go/uuid
+	dev-go/vsock
+	dev-go/yaml
+"
+
+RDEPEND="${DEPEND}"
diff --git a/chromeos-base/tast-build-deps/tast-build-deps-9999.ebuild b/chromeos-base/tast-build-deps/tast-build-deps-9999.ebuild
index 377b303..cecdfe3 100644
--- a/chromeos-base/tast-build-deps/tast-build-deps-9999.ebuild
+++ b/chromeos-base/tast-build-deps/tast-build-deps-9999.ebuild
@@ -21,6 +21,7 @@
 	chromeos-base/aosp-frameworks-base-proto
 	chromeos-base/cros-config-api
 	chromeos-base/hardware_verifier_proto
+	chromeos-base/perfetto_proto
 	chromeos-base/policy-go-proto
 	chromeos-base/system_api
 	chromeos-base/vm_protos
diff --git a/chromeos-base/tast-cmd/tast-cmd-0.0.1-r1155.ebuild b/chromeos-base/tast-cmd/tast-cmd-0.0.1-r1155.ebuild
new file mode 100644
index 0000000..e444e57
--- /dev/null
+++ b/chromeos-base/tast-cmd/tast-cmd-0.0.1-r1155.ebuild
@@ -0,0 +1,59 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="e4d08848f7ee842b8cc7eef4b5ac40371eab0c5a"
+CROS_WORKON_TREE="f962a7d69f70f98e292bc4a8161b165a1d3af867"
+CROS_WORKON_PROJECT="chromiumos/platform/tast"
+CROS_WORKON_LOCALNAME="platform/tast"
+
+CROS_GO_BINARIES=(
+	"chromiumos/tast/cmd/remote_test_runner"
+	"chromiumos/tast/cmd/tast"
+	"chromiumos/tast/cmd/tast_rtd"
+)
+
+CROS_GO_VERSION="${PF}"
+
+CROS_GO_TEST=(
+	"chromiumos/tast/cmd/remote_test_runner/..."
+	"chromiumos/tast/cmd/tast/..."
+	# Also test common code.
+	"chromiumos/tast/..."
+)
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+inherit cros-go cros-workon
+
+DESCRIPTION="Host executables for running integration tests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+# Build-time dependencies should be added to tast-build-deps, not here.
+DEPEND="chromeos-base/tast-build-deps:="
+
+RDEPEND="
+	app-arch/tar
+	app-arch/xz-utils
+	chromeos-base/google-breakpad
+	chromeos-base/tast-build-deps
+	chromeos-base/tast-vars
+	net-misc/gsutil
+	!chromeos-base/tast-common
+"
+
+src_prepare() {
+	# Disable cgo and PIE on building Tast binaries. See:
+	# https://crbug.com/976196
+	# https://github.com/golang/go/issues/30986#issuecomment-475626018
+	export CGO_ENABLED=0
+	export GOPIE=0
+
+	default
+}
diff --git a/chromeos-base/tast-cmd/tast-cmd-0.0.1-r930.ebuild b/chromeos-base/tast-cmd/tast-cmd-0.0.1-r930.ebuild
deleted file mode 100644
index 5bc65f5..0000000
--- a/chromeos-base/tast-cmd/tast-cmd-0.0.1-r930.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="f538556d439264312e74291d7bef735213f9ab53"
-CROS_WORKON_TREE="4e4dfbb8e5d2e543de9f9d5ae03ead03a83c6a54"
-CROS_WORKON_PROJECT="chromiumos/platform/tast"
-CROS_WORKON_LOCALNAME="platform/tast"
-
-CROS_GO_BINARIES=(
-	"chromiumos/tast/cmd/remote_test_runner"
-	"chromiumos/tast/cmd/tast"
-	"chromiumos/tast/cmd/tast_rtd"
-)
-
-CROS_GO_VERSION="${PF}"
-
-CROS_GO_TEST=(
-	"chromiumos/tast/cmd/remote_test_runner/..."
-	"chromiumos/tast/cmd/tast/..."
-	# Also test common code.
-	"chromiumos/tast/..."
-)
-CROS_GO_VET=(
-	"${CROS_GO_TEST[@]}"
-)
-
-inherit cros-go cros-workon
-
-DESCRIPTION="Host executables for running integration tests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-# Build-time dependencies should be added to tast-build-deps, not here.
-DEPEND="chromeos-base/tast-build-deps:="
-
-RDEPEND="
-	app-arch/tar
-	app-arch/xz-utils
-	chromeos-base/google-breakpad
-	chromeos-base/tast-build-deps
-	chromeos-base/tast-vars
-	net-misc/gsutil
-	!chromeos-base/tast-common
-"
-
-src_prepare() {
-	# Disable cgo and PIE on building Tast binaries. See:
-	# https://crbug.com/976196
-	# https://github.com/golang/go/issues/30986#issuecomment-475626018
-	export CGO_ENABLED=0
-	export GOPIE=0
-
-	default
-}
diff --git a/chromeos-base/tast-local-apks-cros/tast-local-apks-cros-0.0.1-r108.ebuild b/chromeos-base/tast-local-apks-cros/tast-local-apks-cros-0.0.1-r108.ebuild
new file mode 100644
index 0000000..31ab315
--- /dev/null
+++ b/chromeos-base/tast-local-apks-cros/tast-local-apks-cros-0.0.1-r108.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="c8dccfe05135ce2bece39571072f00c6a442438b"
+CROS_WORKON_TREE="891957ec6f33631e7104b99559ddd79608d5911d"
+CROS_WORKON_PROJECT="chromiumos/platform/tast-tests"
+CROS_WORKON_LOCALNAME="platform/tast-tests"
+CROS_WORKON_SUBTREE="android"
+
+inherit cros-workon
+
+DESCRIPTION="Compiled apks used by local Tast tests in the cros bundle"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast-tests/+/master/android"
+
+LICENSE="BSD-Google GPL-3"
+SLOT="0"
+KEYWORDS="*"
+
+BDEPEND="
+	chromeos-base/android-sdk
+	dev-util/gn
+"
+
+DEPEND="${RDEPEND}"
+OUT=$(cros-workon_get_build_dir)
+
+src_compile() {
+	gn gen "${OUT}" --root="${S}"/android || die "gn failed"
+	ninja -C "${OUT}" || die "build failed"
+}
+
+src_install() {
+	if [ ! -d "${OUT}/apks" ]; then
+		ewarn "There is no apk."
+		ewarn "If you want to add a helper APK, add it under tast-tests/android"
+		ewarn "and modify BUILD.gn."
+		return
+	fi
+	insinto /usr/libexec/tast/apks/local/cros
+	doins "${OUT}"/apks/*
+}
+
diff --git a/chromeos-base/tast-local-apks-cros/tast-local-apks-cros-0.0.1-r91.ebuild b/chromeos-base/tast-local-apks-cros/tast-local-apks-cros-0.0.1-r91.ebuild
deleted file mode 100644
index 11de023..0000000
--- a/chromeos-base/tast-local-apks-cros/tast-local-apks-cros-0.0.1-r91.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="3921e9072b925028d1e45e738ff78ade5c73d954"
-CROS_WORKON_TREE="23b18cbb03574ba10c9bc31d8768c95a3e54421f"
-CROS_WORKON_PROJECT="chromiumos/platform/tast-tests"
-CROS_WORKON_LOCALNAME="platform/tast-tests"
-CROS_WORKON_SUBTREE="android"
-
-inherit cros-workon
-
-DESCRIPTION="Compiled apks used by local Tast tests in the cros bundle"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast-tests/+/master/android"
-
-LICENSE="BSD-Google GPL-3"
-SLOT="0"
-KEYWORDS="*"
-
-BDEPEND="
-	chromeos-base/android-sdk
-	dev-util/gn
-"
-
-DEPEND="${RDEPEND}"
-OUT=$(cros-workon_get_build_dir)
-
-src_compile() {
-	gn gen "${OUT}" --root="${S}"/android || die "gn failed"
-	ninja -C "${OUT}" || die "build failed"
-}
-
-src_install() {
-	if [ ! -d "${OUT}/apks" ]; then
-		ewarn "There is no apk."
-		ewarn "If you want to add a helper APK, add it under tast-tests/android"
-		ewarn "and modify BUILD.gn."
-		return
-	fi
-	insinto /usr/libexec/tast/apks/local/cros
-	doins "${OUT}"/apks/*
-}
-
diff --git a/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r174.ebuild b/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r174.ebuild
deleted file mode 100644
index e442f6d..0000000
--- a/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r174.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2019 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("b05e4a6b92b2cfe608b6cd8d5d37168680fc080e" "bda522415d37bc8f18b60acad3ac5b9382764f68")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c1fa41175af84710f4a22f81faab420dcbb774c5")
-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")
-CROS_WORKON_SUBTREE=("common-mk .gn" "helpers")
-
-PLATFORM_SUBDIR="tast-tests/helpers/local"
-
-inherit cros-workon platform
-
-DESCRIPTION="Compiled executables used by local Tast tests in the cros bundle"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast-tests/+/master/helpers"
-
-LICENSE="BSD-Google GPL-3"
-SLOT="0/0"
-KEYWORDS="*"
-
-COMMON_DEPEND="
-	dev-cpp/gtest:=
-	media-libs/minigbm:=
-	x11-libs/libdrm:=
-"
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${RDEPEND}"
-
-src_install() {
-	# Executable files' names take the form <category>.<TestName>.<bin_name>.
-	exeinto /usr/libexec/tast/helpers/local/cros
-	doexe "${OUT}"/*.[A-Z]*.*
-	# Install symbol list file to the location required by minidump_stackwalk.
-	# See https://www.chromium.org/developers/decoding-crash-dumps for details.
-	local crasher_exec="${OUT}/platform.UserCrash.crasher"
-	local id=$(head -n1 "${crasher_exec}.sym" | cut -d' ' -f 4)
-	insinto "/usr/libexec/tast/helpers/local/cros/symbols/${crasher_exec##*/}/${id}"
-	doins "${crasher_exec}.sym"
-}
diff --git a/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r205.ebuild b/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r205.ebuild
new file mode 100644
index 0000000..4fb6f6e
--- /dev/null
+++ b/chromeos-base/tast-local-helpers-cros/tast-local-helpers-cros-0.0.1-r205.ebuild
@@ -0,0 +1,46 @@
+# Copyright 2019 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("f34cf3a06f7b17b7829185630d886a5d9d3f0e75" "6f68cdae2db46345996be0bac9c59e6fbabb5e4f")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "28cbb351025522a4f769aec6fc01bfb93d49208b")
+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")
+CROS_WORKON_SUBTREE=("common-mk .gn" "helpers")
+
+PLATFORM_SUBDIR="tast-tests/helpers/local"
+
+inherit cros-workon platform
+
+DESCRIPTION="Compiled executables used by local Tast tests in the cros bundle"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast-tests/+/master/helpers"
+
+LICENSE="BSD-Google GPL-3"
+SLOT="0/0"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	dev-cpp/gtest:=
+	media-libs/minigbm:=
+	x11-libs/libdrm:=
+"
+RDEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/goldctl
+"
+DEPEND="${RDEPEND}"
+
+src_install() {
+	# Executable files' names take the form <category>.<TestName>.<bin_name>.
+	exeinto /usr/libexec/tast/helpers/local/cros
+	doexe "${OUT}"/*.[A-Z]*.*
+	# Install symbol list file to the location required by minidump_stackwalk.
+	# See https://www.chromium.org/developers/decoding-crash-dumps for details.
+	local crasher_exec="${OUT}/platform.UserCrash.crasher"
+	local id=$(head -n1 "${crasher_exec}.sym" | cut -d' ' -f 4)
+	insinto "/usr/libexec/tast/helpers/local/cros/symbols/${crasher_exec##*/}/${id}"
+	doins "${crasher_exec}.sym"
+}
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 d91363c..aabe463 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
@@ -25,7 +25,10 @@
 	media-libs/minigbm:=
 	x11-libs/libdrm:=
 "
-RDEPEND="${COMMON_DEPEND}"
+RDEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/goldctl
+"
 DEPEND="${RDEPEND}"
 
 src_install() {
diff --git a/chromeos-base/tast-local-test-runner/tast-local-test-runner-0.0.1-r1106.ebuild b/chromeos-base/tast-local-test-runner/tast-local-test-runner-0.0.1-r1106.ebuild
new file mode 100644
index 0000000..bbf25df
--- /dev/null
+++ b/chromeos-base/tast-local-test-runner/tast-local-test-runner-0.0.1-r1106.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="e4d08848f7ee842b8cc7eef4b5ac40371eab0c5a"
+CROS_WORKON_TREE="f962a7d69f70f98e292bc4a8161b165a1d3af867"
+CROS_WORKON_PROJECT="chromiumos/platform/tast"
+CROS_WORKON_LOCALNAME="platform/tast"
+
+CROS_GO_BINARIES=(
+	"chromiumos/tast/cmd/local_test_runner"
+)
+
+CROS_GO_TEST=(
+	"chromiumos/tast/cmd/local_test_runner/..."
+)
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+inherit cros-go cros-workon
+
+DESCRIPTION="Runner for local integration tests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+# Build-time dependencies should be added to tast-build-deps, not here.
+DEPEND="chromeos-base/tast-build-deps:="
+
+RDEPEND="
+	app-arch/tar
+	!chromeos-base/tast-common
+"
+
+src_prepare() {
+	# Disable cgo and PIE on building Tast binaries. See:
+	# https://crbug.com/976196
+	# https://github.com/golang/go/issues/30986#issuecomment-475626018
+	export CGO_ENABLED=0
+	export GOPIE=0
+
+	default
+}
diff --git a/chromeos-base/tast-local-test-runner/tast-local-test-runner-0.0.1-r881.ebuild b/chromeos-base/tast-local-test-runner/tast-local-test-runner-0.0.1-r881.ebuild
deleted file mode 100644
index f5d8400..0000000
--- a/chromeos-base/tast-local-test-runner/tast-local-test-runner-0.0.1-r881.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="f538556d439264312e74291d7bef735213f9ab53"
-CROS_WORKON_TREE="4e4dfbb8e5d2e543de9f9d5ae03ead03a83c6a54"
-CROS_WORKON_PROJECT="chromiumos/platform/tast"
-CROS_WORKON_LOCALNAME="platform/tast"
-
-CROS_GO_BINARIES=(
-	"chromiumos/tast/cmd/local_test_runner"
-)
-
-CROS_GO_TEST=(
-	"chromiumos/tast/cmd/local_test_runner/..."
-)
-CROS_GO_VET=(
-	"${CROS_GO_TEST[@]}"
-)
-
-inherit cros-go cros-workon
-
-DESCRIPTION="Runner for local integration tests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-# Build-time dependencies should be added to tast-build-deps, not here.
-DEPEND="chromeos-base/tast-build-deps:="
-
-RDEPEND="
-	app-arch/tar
-	!chromeos-base/tast-common
-"
-
-src_prepare() {
-	# Disable cgo and PIE on building Tast binaries. See:
-	# https://crbug.com/976196
-	# https://github.com/golang/go/issues/30986#issuecomment-475626018
-	export CGO_ENABLED=0
-	export GOPIE=0
-
-	default
-}
diff --git a/chromeos-base/tast-local-tests-cros/tast-local-tests-cros-0.0.1-r4847.ebuild b/chromeos-base/tast-local-tests-cros/tast-local-tests-cros-0.0.1-r4847.ebuild
deleted file mode 100644
index 228147d..0000000
--- a/chromeos-base/tast-local-tests-cros/tast-local-tests-cros-0.0.1-r4847.ebuild
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT=("19086381c1eb2cdb3dbf367294f95f8940018ca1" "f538556d439264312e74291d7bef735213f9ab53")
-CROS_WORKON_TREE=("59cda803398fced4cea109f4b20bfba201efbfe0" "4e4dfbb8e5d2e543de9f9d5ae03ead03a83c6a54")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/tast-tests"
-	"chromiumos/platform/tast"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform/tast-tests"
-	"platform/tast"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}"
-	"${S}/tast-base"
-)
-
-CROS_GO_WORKSPACE=(
-	"${CROS_WORKON_DESTDIR[@]}"
-)
-
-CROS_GO_TEST=(
-	# Also test support packages that live above local/bundles/.
-	"chromiumos/tast/..."
-)
-CROS_GO_VET=(
-	"${CROS_GO_TEST[@]}"
-)
-
-inherit cros-workon tast-bundle
-
-DESCRIPTION="Bundle of local integration tests for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast-tests/"
-
-LICENSE="Apache-2.0 BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="arc chromeless_tty chromeless_tests kernel-3_8 kernel-3_10 kernel-3_14"
-
-# Build-time dependencies should be added to tast-build-deps, not here.
-DEPEND="chromeos-base/tast-build-deps:="
-
-RDEPEND="
-	chromeos-base/policy-testserver
-	chromeos-base/tast-local-helpers-cros
-	chromeos-base/wprgo
-	!chromeless_tty? (
-		!chromeless_tests? (
-			chromeos-base/drm-tests
-		)
-	)
-	dev-libs/openssl:0=
-	arc? (
-		chromeos-base/tast-local-apks-cros
-		dev-util/android-tools
-		dev-util/android-uiautomator-server
-	)
-	net-misc/curl
-	sys-apps/memtester
-	sys-apps/rootdev
-	virtual/udev
-	!kernel-3_14? (
-		!kernel-3_10? (
-			!kernel-3_8? (
-				chromeos-base/virtual-usb-printer
-			)
-		)
-	)
-"
diff --git a/chromeos-base/tast-local-tests-cros/tast-local-tests-cros-0.0.1-r6667.ebuild b/chromeos-base/tast-local-tests-cros/tast-local-tests-cros-0.0.1-r6667.ebuild
new file mode 100644
index 0000000..61301c9
--- /dev/null
+++ b/chromeos-base/tast-local-tests-cros/tast-local-tests-cros-0.0.1-r6667.ebuild
@@ -0,0 +1,68 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT=("c21df20297534ad71c6cea3ac0b364abfcfecfbc" "e4d08848f7ee842b8cc7eef4b5ac40371eab0c5a")
+CROS_WORKON_TREE=("b446e1f3297f19f2d5d7dde235706a9d22be6bb0" "f962a7d69f70f98e292bc4a8161b165a1d3af867")
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/tast-tests"
+	"chromiumos/platform/tast"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform/tast-tests"
+	"platform/tast"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}"
+	"${S}/tast-base"
+)
+
+CROS_GO_WORKSPACE=(
+	"${CROS_WORKON_DESTDIR[@]}"
+)
+
+CROS_GO_TEST=(
+	# Also test support packages that live above local/bundles/.
+	"chromiumos/tast/..."
+)
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+inherit cros-workon tast-bundle
+
+DESCRIPTION="Bundle of local integration tests for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast-tests/"
+
+LICENSE="Apache-2.0 BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="arc chromeless_tty chromeless_tests cups"
+
+# Build-time dependencies should be added to tast-build-deps, not here.
+DEPEND="chromeos-base/tast-build-deps:="
+
+RDEPEND="
+	chromeos-base/policy-testserver
+	chromeos-base/tast-local-helpers-cros
+	chromeos-base/virtual-usb-printer
+	chromeos-base/wprgo
+	!chromeless_tty? (
+		!chromeless_tests? (
+			chromeos-base/drm-tests
+		)
+	)
+	dev-libs/openssl:0=
+	arc? (
+		chromeos-base/tast-local-apks-cros
+		dev-util/android-tools
+		dev-util/android-uiautomator-server
+	)
+	net-misc/curl
+	cups? (
+		net-print/ippsample
+	)
+	sys-apps/memtester
+	sys-apps/rootdev
+	virtual/udev
+"
diff --git a/chromeos-base/tast-local-tests-cros/tast-local-tests-cros-9999.ebuild b/chromeos-base/tast-local-tests-cros/tast-local-tests-cros-9999.ebuild
index 413802a..316e658 100644
--- a/chromeos-base/tast-local-tests-cros/tast-local-tests-cros-9999.ebuild
+++ b/chromeos-base/tast-local-tests-cros/tast-local-tests-cros-9999.ebuild
@@ -35,7 +35,7 @@
 LICENSE="Apache-2.0 BSD-Google"
 SLOT="0/0"
 KEYWORDS="~*"
-IUSE="arc chromeless_tty chromeless_tests kernel-3_8 kernel-3_10 kernel-3_14"
+IUSE="arc chromeless_tty chromeless_tests cups"
 
 # Build-time dependencies should be added to tast-build-deps, not here.
 DEPEND="chromeos-base/tast-build-deps:="
@@ -43,6 +43,7 @@
 RDEPEND="
 	chromeos-base/policy-testserver
 	chromeos-base/tast-local-helpers-cros
+	chromeos-base/virtual-usb-printer
 	chromeos-base/wprgo
 	!chromeless_tty? (
 		!chromeless_tests? (
@@ -56,14 +57,10 @@
 		dev-util/android-uiautomator-server
 	)
 	net-misc/curl
+	cups? (
+		net-print/ippsample
+	)
 	sys-apps/memtester
 	sys-apps/rootdev
 	virtual/udev
-	!kernel-3_14? (
-		!kernel-3_10? (
-			!kernel-3_8? (
-				chromeos-base/virtual-usb-printer
-			)
-		)
-	)
 "
diff --git a/chromeos-base/tast-proto/OWNERS b/chromeos-base/tast-proto/OWNERS
new file mode 100644
index 0000000..ea05e90
--- /dev/null
+++ b/chromeos-base/tast-proto/OWNERS
@@ -0,0 +1,10 @@
+# Prefer tast-owners@ to individual owners. Sending code reviews to the alias
+# allows the owners to distribute code review loads.
+tast-owners@google.com
+
+hidehiko@chromium.org
+kathrelkeld@chromium.org
+nya@chromium.org
+oka@chromium.org
+seewaifu@google.com
+yamaguchi@chromium.org
diff --git a/chromeos-base/tast-proto/tast-proto-0.0.1-r21.ebuild b/chromeos-base/tast-proto/tast-proto-0.0.1-r21.ebuild
new file mode 100644
index 0000000..9942857
--- /dev/null
+++ b/chromeos-base/tast-proto/tast-proto-0.0.1-r21.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="e4d08848f7ee842b8cc7eef4b5ac40371eab0c5a"
+CROS_WORKON_TREE="f962a7d69f70f98e292bc4a8161b165a1d3af867"
+CROS_WORKON_PROJECT="chromiumos/platform/tast"
+CROS_WORKON_LOCALNAME="platform/tast"
+
+inherit cros-go cros-workon
+
+CROS_GO_VERSION="${PF}"
+
+CROS_GO_PACKAGES=(
+	"chromiumos/tast/framework/protocol/..."
+)
+
+DESCRIPTION="Provides go bindings to proto APIs for tast"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND=""
+
+RDEPEND=""
+
+src_install() {
+	insinto /usr/lib/gopath/src/
+	cros-go_src_install
+}
diff --git a/chromeos-base/tast-proto/tast-proto-9999.ebuild b/chromeos-base/tast-proto/tast-proto-9999.ebuild
new file mode 100644
index 0000000..57bfbd8
--- /dev/null
+++ b/chromeos-base/tast-proto/tast-proto-9999.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT="chromiumos/platform/tast"
+CROS_WORKON_LOCALNAME="platform/tast"
+
+inherit cros-go cros-workon
+
+CROS_GO_VERSION="${PF}"
+
+CROS_GO_PACKAGES=(
+	"chromiumos/tast/framework/protocol/..."
+)
+
+DESCRIPTION="Provides go bindings to proto APIs for tast"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="~*"
+IUSE=""
+
+DEPEND=""
+
+RDEPEND=""
+
+src_install() {
+	insinto /usr/lib/gopath/src/
+	cros-go_src_install
+}
diff --git a/chromeos-base/tast-remote-tests-cros/tast-remote-tests-cros-0.0.1-r4885.ebuild b/chromeos-base/tast-remote-tests-cros/tast-remote-tests-cros-0.0.1-r4885.ebuild
deleted file mode 100644
index 0e126115..0000000
--- a/chromeos-base/tast-remote-tests-cros/tast-remote-tests-cros-0.0.1-r4885.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT=("19086381c1eb2cdb3dbf367294f95f8940018ca1" "f538556d439264312e74291d7bef735213f9ab53" "360170e747b466e5b884cb5f50a303dfedaba6be")
-CROS_WORKON_TREE=("59cda803398fced4cea109f4b20bfba201efbfe0" "4e4dfbb8e5d2e543de9f9d5ae03ead03a83c6a54" "7c21ad286a49cc09ef2bd9f6c03939f016e9c889")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/tast-tests"
-	"chromiumos/platform/tast"
-	"chromiumos/platform/fw-testing-configs"
-)
-CROS_WORKON_LOCALNAME=(
-	"platform/tast-tests"
-	"platform/tast"
-	"platform/tast-tests/src/chromiumos/tast/remote/firmware/data/fw-testing-configs"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}"
-	"${S}/tast-base"
-	"${S}/src/chromiumos/tast/remote/firmware/data/fw-testing-configs"
-)
-
-CROS_GO_WORKSPACE=(
-	"${CROS_WORKON_DESTDIR[@]}"
-)
-
-CROS_GO_TEST=(
-	# Also test support packages that live above remote/bundles/.
-	"chromiumos/tast/..."
-)
-CROS_GO_VET=(
-	"${CROS_GO_TEST[@]}"
-)
-
-inherit cros-workon tast-bundle
-
-DESCRIPTION="Bundle of remote integration tests for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast-tests/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-# Build-time dependencies should be added to tast-build-deps, not here.
-DEPEND="chromeos-base/tast-build-deps:="
-
-RDEPEND=""
diff --git a/chromeos-base/tast-remote-tests-cros/tast-remote-tests-cros-0.0.1-r6717.ebuild b/chromeos-base/tast-remote-tests-cros/tast-remote-tests-cros-0.0.1-r6717.ebuild
new file mode 100644
index 0000000..6e8fef7
--- /dev/null
+++ b/chromeos-base/tast-remote-tests-cros/tast-remote-tests-cros-0.0.1-r6717.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT=("c21df20297534ad71c6cea3ac0b364abfcfecfbc" "e4d08848f7ee842b8cc7eef4b5ac40371eab0c5a" "22c5b21a61f6477ec943cde45a66526c0f2c11ad")
+CROS_WORKON_TREE=("b446e1f3297f19f2d5d7dde235706a9d22be6bb0" "f962a7d69f70f98e292bc4a8161b165a1d3af867" "19a599e153588e7beddcc62b22f526879f2985cf")
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/tast-tests"
+	"chromiumos/platform/tast"
+	"chromiumos/platform/fw-testing-configs"
+)
+CROS_WORKON_LOCALNAME=(
+	"platform/tast-tests"
+	"platform/tast"
+	"platform/tast-tests/src/chromiumos/tast/remote/firmware/data/fw-testing-configs"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}"
+	"${S}/tast-base"
+	"${S}/src/chromiumos/tast/remote/firmware/data/fw-testing-configs"
+)
+
+CROS_GO_WORKSPACE=(
+	"${CROS_WORKON_DESTDIR[@]}"
+)
+
+CROS_GO_TEST=(
+	# Also test support packages that live above remote/bundles/.
+	"chromiumos/tast/..."
+)
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+inherit cros-workon tast-bundle
+
+DESCRIPTION="Bundle of remote integration tests for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast-tests/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+# Build-time dependencies should be added to tast-build-deps, not here.
+DEPEND="chromeos-base/tast-build-deps:="
+
+RDEPEND="
+	dev-python/pillow
+	media-libs/opencv
+"
diff --git a/chromeos-base/tast-remote-tests-cros/tast-remote-tests-cros-9999.ebuild b/chromeos-base/tast-remote-tests-cros/tast-remote-tests-cros-9999.ebuild
index bc8881a..d69a323 100644
--- a/chromeos-base/tast-remote-tests-cros/tast-remote-tests-cros-9999.ebuild
+++ b/chromeos-base/tast-remote-tests-cros/tast-remote-tests-cros-9999.ebuild
@@ -42,4 +42,7 @@
 # Build-time dependencies should be added to tast-build-deps, not here.
 DEPEND="chromeos-base/tast-build-deps:="
 
-RDEPEND=""
+RDEPEND="
+	dev-python/pillow
+	media-libs/opencv
+"
diff --git a/chromeos-base/tast-use-flags/tast-use-flags-1-r30.ebuild b/chromeos-base/tast-use-flags/tast-use-flags-1-r30.ebuild
deleted file mode 100644
index e3308e9..0000000
--- a/chromeos-base/tast-use-flags/tast-use-flags-1-r30.ebuild
+++ /dev/null
@@ -1,154 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
-# the canonical empty project.
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="platform/empty-project"
-
-inherit cros-workon
-
-DESCRIPTION="Text file listing USE flags for Tast test dependencies"
-
-LICENSE="BSD-Google"
-# Nothing depends on this package for build info.  All the files are used at
-# runtime only by design.
-SLOT="0/0"
-KEYWORDS="*"
-
-# NB: Flags listed here are off by default unless prefixed with a '+'.
-IUSE="
-	amd64
-	android-container-pi
-	android-vm-pi
-	android-vm-rvc
-	arc
-	arc-camera1
-	arc-camera3
-	arc-launched-32bit-abi
-	arc_uses_cros_video_decoder
-	arcpp
-	arcvm
-	arm
-	arm64
-	asan
-	betty
-	biod
-	borealis_host
-	cert_provision
-	cheets_user
-	cheets_user_64
-	cheets_userdebug
-	cheets_userdebug_64
-	chrome_internal
-	chrome_media
-	chromeless_tty
-	containers
-	coresched
-	cr50_onboard
-	crosvm-gpu
-	cups
-	diagnostics
-	disable_cros_video_decoder
-	dptf
-	elm-kernelnext
-	+display_backlight
-	dlc
-	dlc_test
-	+drivefs
-	drm_atomic
-	elm
-	fizz
-	force_breakpad
-	gboard_decoder
-	grunt
-	hana
-	hana-kernelnext
-	houdini
-	houdini64
-	internal
-	+internal_mic
-	+internal_speaker
-	iwlwifi_rescan
-	kernel-3_8
-	kernel-3_10
-	kernel-3_14
-	kernel-3_18
-	kernel-4_4
-	kernel-4_14
-	kernel-4_19
-	kernel-5_4
-	kernel-5_10
-	kukui
-	kvm_host
-	kvm_transition
-	lxc
-	memd
-	ml_benchmark_drivers
-	ml_service
-	moblab
-	mocktpm
-	msan
-	+nacl
-	ndk_translation
-	ndk_translation64
-	nnapi
-	nyan_kitty
-	ocr
-	octopus
-	pita
-	racc
-	rialto
-	rk3399
-	selinux
-	selinux_experimental
-	skate
-	smartdim
-	snow
-	spring
-	+storage_wearout_detect
-	touchview
-	tpm2
-	transparent_hugepage
-	ubsan
-	unibuild
-	usbguard
-	v4l2_codec
-	vaapi
-	veyron_mickey
-	veyron_rialto
-	video_cards_amdgpu
-	video_cards_intel
-	virtio_gpu
-	vulkan
-	watchdog
-	wifi_hostap_test
-	wilco
-	+wired_8021x
-	wpa3_sae
-	zork
-"
-
-src_install() {
-	# Install a file containing a list of currently-set USE flags.
-	local path="${WORKDIR}/tast_use_flags.txt"
-	cat <<EOF >"${path}"
-# This file is used by the Tast integration testing system to
-# determine which software features are present in the system image.
-# Don't use it for anything else. Your code will break.
-EOF
-
-	# If you need to inspect a new flag, add it to $IUSE at the top of the file.
-	local flags=( ${IUSE} )
-	local flag
-	for flag in "${flags[@]/#[-+]}" ; do
-		usev ${flag}
-	done | sort -u >>"${path}"
-
-	insinto /etc
-	doins "${path}"
-}
diff --git a/chromeos-base/tast-use-flags/tast-use-flags-1-r46.ebuild b/chromeos-base/tast-use-flags/tast-use-flags-1-r46.ebuild
new file mode 100644
index 0000000..799298e
--- /dev/null
+++ b/chromeos-base/tast-use-flags/tast-use-flags-1-r46.ebuild
@@ -0,0 +1,165 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="Text file listing USE flags for Tast test dependencies"
+
+LICENSE="BSD-Google"
+# Nothing depends on this package for build info.  All the files are used at
+# runtime only by design.
+SLOT="0/0"
+KEYWORDS="*"
+
+# NB: Flags listed here are off by default unless prefixed with a '+'.
+IUSE="
+	amd64
+	android-container-pi
+	android-vm-pi
+	android-vm-rvc
+	arc
+	arc-camera1
+	arc-camera3
+	arc-launched-32bit-abi
+	arc_uses_cros_video_decoder
+	arcpp
+	arcvm
+	arm
+	arm64
+	asan
+	betty
+	biod
+	borealis_host
+	cdm_factory_daemon
+	cert_provision
+	cheets_user
+	cheets_user_64
+	cheets_userdebug
+	cheets_userdebug_64
+	chrome_internal
+	chrome_media
+	chromeless_tty
+	containers
+	coresched
+	cr50_onboard
+	crosvm-gpu
+	cups
+	diagnostics
+	disable_cros_video_decoder
+	dptf
+	elm-kernelnext
+	direncription_allow_v2
+	dlc
+	dlc_test
+	+drivefs
+	drm_atomic
+	elm
+	fizz
+	force_breakpad
+	fwupd
+	gboard_decoder
+	grunt
+	hammerd
+	hana
+	hana-kernelnext
+	houdini
+	houdini64
+	hps
+	iioservice
+	internal
+	+internal_mic
+	+internal_speaker
+	iwlwifi_rescan
+	kernel-3_18
+	kernel-4_4
+	kernel-4_14
+	kernel-4_19
+	kernel-5_4
+	kernel-5_10
+	kernel-upstream
+	kukui
+	kvm_host
+	kvm_transition
+	lxc
+	manatee
+	mbo
+	memd
+	ml_benchmark_drivers
+	ml_service
+	moblab
+	mocktpm
+	msan
+	+nacl
+	ndk_translation
+	ndk_translation64
+	nnapi
+	nvme
+	nyan_kitty
+	ocr
+	octopus
+	ondevice_handwriting
+	pita
+	racc
+	rialto
+	rk3399
+	sata
+	selinux
+	selinux_experimental
+	sirenia
+	skate
+	smartdim
+	snow
+	spring
+	+storage_wearout_detect
+	tablet_form_factor
+	touchview
+	tpm2
+	transparent_hugepage
+	ubsan
+	unibuild
+	usbguard
+	v4l2_codec
+	vaapi
+	veyron_mickey
+	veyron_rialto
+	vhost-user-devices
+	video_cards_amdgpu
+	video_cards_intel
+	virtio_gpu
+	vulkan
+	watchdog
+	wifi_hostap_test
+	wilco
+	+wired_8021x
+	+wpa3_sae
+	zork
+"
+
+src_install() {
+	# Install a file containing a list of currently-set USE flags.
+	local path="${WORKDIR}/tast_use_flags.txt"
+	cat <<EOF >"${path}"
+# This file is used by the Tast integration testing system to
+# determine which software features are present in the system image.
+# Don't use it for anything else. Your code will break.
+EOF
+
+	# If you need to inspect a new flag, add it to $IUSE at the top of the file.
+	local flags=( ${IUSE} )
+	local flag
+	for flag in "${flags[@]/#[-+]}" ; do
+		usev ${flag}
+	done | sort -u >>"${path}"
+
+	insinto /etc
+	doins "${path}"
+}
diff --git a/chromeos-base/tast-use-flags/tast-use-flags-9999.ebuild b/chromeos-base/tast-use-flags/tast-use-flags-9999.ebuild
index 028518b..b7f7ebb 100644
--- a/chromeos-base/tast-use-flags/tast-use-flags-9999.ebuild
+++ b/chromeos-base/tast-use-flags/tast-use-flags-9999.ebuild
@@ -37,6 +37,7 @@
 	betty
 	biod
 	borealis_host
+	cdm_factory_daemon
 	cert_provision
 	cheets_user
 	cheets_user_64
@@ -54,7 +55,7 @@
 	disable_cros_video_decoder
 	dptf
 	elm-kernelnext
-	+display_backlight
+	direncription_allow_v2
 	dlc
 	dlc_test
 	+drivefs
@@ -62,29 +63,33 @@
 	elm
 	fizz
 	force_breakpad
+	fwupd
 	gboard_decoder
 	grunt
+	hammerd
 	hana
 	hana-kernelnext
 	houdini
 	houdini64
+	hps
+	iioservice
 	internal
 	+internal_mic
 	+internal_speaker
 	iwlwifi_rescan
-	kernel-3_8
-	kernel-3_10
-	kernel-3_14
 	kernel-3_18
 	kernel-4_4
 	kernel-4_14
 	kernel-4_19
 	kernel-5_4
 	kernel-5_10
+	kernel-upstream
 	kukui
 	kvm_host
 	kvm_transition
 	lxc
+	manatee
+	mbo
 	memd
 	ml_benchmark_drivers
 	ml_service
@@ -95,20 +100,25 @@
 	ndk_translation
 	ndk_translation64
 	nnapi
+	nvme
 	nyan_kitty
 	ocr
 	octopus
+	ondevice_handwriting
 	pita
 	racc
 	rialto
 	rk3399
+	sata
 	selinux
 	selinux_experimental
+	sirenia
 	skate
 	smartdim
 	snow
 	spring
 	+storage_wearout_detect
+	tablet_form_factor
 	touchview
 	tpm2
 	transparent_hugepage
@@ -119,6 +129,7 @@
 	vaapi
 	veyron_mickey
 	veyron_rialto
+	vhost-user-devices
 	video_cards_amdgpu
 	video_cards_intel
 	virtio_gpu
@@ -127,7 +138,7 @@
 	wifi_hostap_test
 	wilco
 	+wired_8021x
-	wpa3_sae
+	+wpa3_sae
 	zork
 "
 
diff --git a/chromeos-base/termina-dlc/Manifest b/chromeos-base/termina-dlc/Manifest
index bbb3b6d..8ef255e 100644
--- a/chromeos-base/termina-dlc/Manifest
+++ b/chromeos-base/termina-dlc/Manifest
@@ -1,2 +1,2 @@
-DIST termina_amd64.tbz 84645604 BLAKE2B 80761b68518e90f95143b5ad9e7d392f16c2fb9a4d474caa44a53d2b3e0ada45568f200b8483063989b9c916ad8f1a7d4941f32f89eb4f98c78121903c92bf73 SHA512 8a4b9337b8443cf870749d2d3220f5c28b3e2629a4cf62b80bef9f1f8bffe5a6691efa60c5e78862198df4f3a00234c60750dc85b9401f6ca983fd2331a50f92
-DIST termina_arm.tbz 78897807 BLAKE2B 85285eb41665c4b390182366ca5104e1ef0e7a068685fbf02382ed8784205c593bd01464931534e355e7a9cc2642459e5b7e6e6f14f33c29da79d2c00a180bcc SHA512 efc8f159c3608d4f4cb00d247e3246cf2766b32509f06592416c6a71bc962a935bf75761bf66d1908fdd0b3b566696fbbbfaf256f7b43be6c4a217a471151818
+DIST termina_amd64.tbz 125148391 BLAKE2B 93ec1247d740067d3a60c70483be69fa9aac51daa1830204fb378c0a51b76d6122c1318ab1ba1106b1b1ef09475bff7dca703eedfa3d5cd9e57f977921159024 SHA512 adef36e497ba6ddd7a607dd4ae94aea26f21c16852ce545a05cafcc442bc0e89cb903c4e1685e60c65c7f9c5e0a6e2314cadd1deb94c8f5b628ba7232ccabed1
+DIST termina_arm.tbz 116093315 BLAKE2B 656af22f87459d1a9e0aaec31caba050db7abaa578a05ab67dcc488054d27c5919e8ccddd297fa8ba309b647cd1c12d30f365ce0c9859f2206c0bbc8536d0c96 SHA512 1f4f619d1409a7a7a62761ac3b3fbaa4c88f6482947683d20b8639406be4bcb56f45c2ed6bc2e353816675983992e764f74e8107d39fcfdb5280ec0ae5835eb5
diff --git a/chromeos-base/termina-dlc/OWNERS b/chromeos-base/termina-dlc/OWNERS
new file mode 100644
index 0000000..4f139fe
--- /dev/null
+++ b/chromeos-base/termina-dlc/OWNERS
@@ -0,0 +1 @@
+chromeos-ci-prod@chromeos-bot.iam.gserviceaccount.com
diff --git a/chromeos-base/termina-dlc/VERSION-PIN b/chromeos-base/termina-dlc/VERSION-PIN
index a191d64..5b1b67f 100644
--- a/chromeos-base/termina-dlc/VERSION-PIN
+++ b/chromeos-base/termina-dlc/VERSION-PIN
@@ -1 +1 @@
-89.13727.0.0.43132
\ No newline at end of file
+93.14054.0.0
\ No newline at end of file
diff --git a/chromeos-base/termina-dlc/termina-dlc-89.13672.0.0.42001-r1.ebuild b/chromeos-base/termina-dlc/termina-dlc-89.13672.0.0.42001-r1.ebuild
deleted file mode 100644
index 522557a..0000000
--- a/chromeos-base/termina-dlc/termina-dlc-89.13672.0.0.42001-r1.ebuild
+++ /dev/null
@@ -1,96 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# A DLC package for distributing termina.
-
-EAPI=7
-
-inherit dlc cros-workon
-
-# This ebuild is upreved via PuPR, so disable the normal uprev process for
-# cros-workon ebuilds.
-CROS_WORKON_MANUAL_UPREV="1"
-
-# "cros_workon info" expects these variables to be set, but we don't have a git
-# repo, so use the standard empty project.
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="platform/empty-project"
-
-DESCRIPTION="DLC package for termina."
-
-if [[ ${PV} == 9999 ]]; then
-	SRC_URI=""
-else
-	SRC_URI="
-		amd64? ( gs://termina-component-testing/uprev-test/amd64/${PV}/guest-vm-base.tbz -> termina_amd64.tbz )
-		arm? ( gs://termina-component-testing/uprev-test/arm/${PV}/guest-vm-base.tbz -> termina_arm.tbz )
-		arm64? ( gs://termina-component-testing/uprev-test/arm/${PV}/guest-vm-base.tbz -> termina_arm.tbz )
-	"
-fi
-
-RESTRICT="nomirror"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-S="${WORKDIR}"
-
-IUSE="kvm_host dlc amd64 arm"
-REQUIRED_USE="
-	dlc
-	kvm_host
-	^^ ( amd64 arm arm64 )
-"
-
-# Termina is ~87MiB compressed at present, so 100 MiB should be plenty for
-# now. Double this for test builds so we can fit test utilities in.
-# 100MiB = 256 x 1024 x 4KB blocks
-if [[ ${PV} == 9999 ]]; then
-	DLC_PREALLOC_BLOCKS="$((200 * 256))"
-else
-	DLC_PREALLOC_BLOCKS="$((100 * 256))"
-fi
-
-DLC_PRELOAD=true
-
-# We need to inherit from cros-workon so people can do "cros-workon-${BOARD}
-# start termina-dlc", but we don't want to actually run any of the cros-workon
-# steps, so we override pkg_setup and src_unpack with the default
-# implementations.
-pkg_setup() {
-	return
-}
-
-src_unpack() {
-	if [[ -n ${A} ]]; then
-		# $A should be tokenised here as it may contain multiple files
-		# shellcheck disable=SC2086
-		unpack ${A}
-	fi
-}
-
-src_compile() {
-	if [[ ${PV} == 9999 ]]; then
-		if use amd64; then
-			vm_board="tatl"
-		else
-			vm_board="tael"
-		fi
-		image_path="/mnt/host/source/src/build/images/${vm_board}/latest/chromiumos_test_image.bin"
-		[[ ! -f "${image_path}" ]] && die "Couldn't find VM image, try building a test image for ${vm_board} first"
-
-		/mnt/host/source/src/platform/container-guest-tools/termina/termina_build_image.py "${image_path}" "${S}/vm"
-		mv "${S}/vm"/* "${WORKDIR}"
-	fi
-}
-
-src_install() {
-	# This is the subpath underneath the location that dlc mounts the image,
-	# so we dont need additional directories.
-	local install_dir="/"
-	into "$(dlc_add_path ${install_dir})"
-	insinto "$(dlc_add_path ${install_dir})"
-	exeinto "$(dlc_add_path ${install_dir})"
-	doins "${WORKDIR}"/*
-	dlc_src_install
-}
diff --git a/chromeos-base/termina-dlc/termina-dlc-93.14054.0.0-r1.ebuild b/chromeos-base/termina-dlc/termina-dlc-93.14054.0.0-r1.ebuild
new file mode 100644
index 0000000..872aded
--- /dev/null
+++ b/chromeos-base/termina-dlc/termina-dlc-93.14054.0.0-r1.ebuild
@@ -0,0 +1,99 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# A DLC package for distributing termina.
+
+EAPI=7
+
+inherit dlc cros-workon
+
+# This ebuild is upreved via PuPR, so disable the normal uprev process for
+# cros-workon ebuilds.
+CROS_WORKON_MANUAL_UPREV="1"
+
+# "cros_workon info" expects these variables to be set, but we don't have a git
+# repo, so use the standard empty project.
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="platform/empty-project"
+
+DESCRIPTION="DLC package for termina."
+
+if [[ ${PV} == 9999 ]]; then
+	SRC_URI=""
+else
+	SRC_URI="
+		amd64? ( gs://termina-component-testing/uprev-test/amd64/${PV}/guest-vm-base.tbz -> termina_amd64.tbz )
+		arm? ( gs://termina-component-testing/uprev-test/arm/${PV}/guest-vm-base.tbz -> termina_arm.tbz )
+		arm64? ( gs://termina-component-testing/uprev-test/arm/${PV}/guest-vm-base.tbz -> termina_arm.tbz )
+	"
+fi
+
+RESTRICT="nomirror"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+S="${WORKDIR}"
+
+IUSE="kvm_host dlc amd64 arm"
+REQUIRED_USE="
+	dlc
+	kvm_host
+	^^ ( amd64 arm arm64 )
+"
+
+# Termina now contains 2 copies of LXD, pulling the image size up to
+# ~135 MiB. Test builds need extra space for test utilities.
+#
+# To check the current size, run "file" on a deployed DLC image. The
+# output will tell you the size of the squashfs filesystem.
+#
+# 1MiB = 256 x 4KiB blocks
+if [[ ${PV} == 9999 ]]; then
+	DLC_PREALLOC_BLOCKS="$((200 * 256))"
+else
+	DLC_PREALLOC_BLOCKS="$((150 * 256))"
+fi
+
+DLC_PRELOAD=true
+
+# We need to inherit from cros-workon so people can do "cros-workon-${BOARD}
+# start termina-dlc", but we don't want to actually run any of the cros-workon
+# steps, so we override pkg_setup and src_unpack with the default
+# implementations.
+pkg_setup() {
+	return
+}
+
+src_unpack() {
+	if [[ -n ${A} ]]; then
+		# $A should be tokenised here as it may contain multiple files
+		# shellcheck disable=SC2086
+		unpack ${A}
+	fi
+}
+
+src_compile() {
+	if [[ ${PV} == 9999 ]]; then
+		if use amd64; then
+			vm_board="tatl"
+		else
+			vm_board="tael"
+		fi
+		image_path="/mnt/host/source/src/build/images/${vm_board}/latest/chromiumos_test_image.bin"
+		[[ ! -f "${image_path}" ]] && die "Couldn't find VM image at ${image_path}, try building a test image for ${vm_board} first"
+
+		/mnt/host/source/src/platform/container-guest-tools/termina/termina_build_image.py "${image_path}" "${S}/vm"
+	fi
+}
+
+src_install() {
+	# This is the subpath underneath the location that dlc mounts the image,
+	# so we dont need additional directories.
+	local install_dir="/"
+	into "$(dlc_add_path ${install_dir})"
+	insinto "$(dlc_add_path ${install_dir})"
+	exeinto "$(dlc_add_path ${install_dir})"
+	doins "${WORKDIR}"/*/*
+	dlc_src_install
+}
diff --git a/chromeos-base/termina-dlc/termina-dlc-9999.ebuild b/chromeos-base/termina-dlc/termina-dlc-9999.ebuild
index 006605a..0b2362c 100644
--- a/chromeos-base/termina-dlc/termina-dlc-9999.ebuild
+++ b/chromeos-base/termina-dlc/termina-dlc-9999.ebuild
@@ -42,13 +42,17 @@
 	^^ ( amd64 arm arm64 )
 "
 
-# Termina is ~87MiB compressed at present, so 100 MiB should be plenty for
-# now. Double this for test builds so we can fit test utilities in.
-# 100MiB = 256 x 1024 x 4KB blocks
+# Termina now contains 2 copies of LXD, pulling the image size up to
+# ~135 MiB. Test builds need extra space for test utilities.
+#
+# To check the current size, run "file" on a deployed DLC image. The
+# output will tell you the size of the squashfs filesystem.
+#
+# 1MiB = 256 x 4KiB blocks
 if [[ ${PV} == 9999 ]]; then
 	DLC_PREALLOC_BLOCKS="$((200 * 256))"
 else
-	DLC_PREALLOC_BLOCKS="$((100 * 256))"
+	DLC_PREALLOC_BLOCKS="$((150 * 256))"
 fi
 
 DLC_PRELOAD=true
@@ -77,10 +81,9 @@
 			vm_board="tael"
 		fi
 		image_path="/mnt/host/source/src/build/images/${vm_board}/latest/chromiumos_test_image.bin"
-		[[ ! -f "${image_path}" ]] && die "Couldn't find VM image, try building a test image for ${vm_board} first"
+		[[ ! -f "${image_path}" ]] && die "Couldn't find VM image at ${image_path}, try building a test image for ${vm_board} first"
 
 		/mnt/host/source/src/platform/container-guest-tools/termina/termina_build_image.py "${image_path}" "${S}/vm"
-		mv "${S}/vm"/* "${WORKDIR}"
 	fi
 }
 
@@ -91,6 +94,6 @@
 	into "$(dlc_add_path ${install_dir})"
 	insinto "$(dlc_add_path ${install_dir})"
 	exeinto "$(dlc_add_path ${install_dir})"
-	doins "${WORKDIR}"/*
+	doins "${WORKDIR}"/*/*
 	dlc_src_install
 }
diff --git a/chromeos-base/termina_container_tools/termina_container_tools-0.0.1-r25.ebuild b/chromeos-base/termina_container_tools/termina_container_tools-0.0.1-r30.ebuild
similarity index 100%
rename from chromeos-base/termina_container_tools/termina_container_tools-0.0.1-r25.ebuild
rename to chromeos-base/termina_container_tools/termina_container_tools-0.0.1-r30.ebuild
diff --git a/chromeos-base/termina_container_tools/termina_container_tools-0.0.1.ebuild b/chromeos-base/termina_container_tools/termina_container_tools-0.0.1.ebuild
index d8195a5..e0045b5 100644
--- a/chromeos-base/termina_container_tools/termina_container_tools-0.0.1.ebuild
+++ b/chromeos-base/termina_container_tools/termina_container_tools-0.0.1.ebuild
@@ -20,14 +20,14 @@
 "
 DEPEND="
 	chromeos-base/chunnel
-	chromeos-base/sommelier
+	!vm_borealis? ( chromeos-base/sommelier )
 	chromeos-base/vm_guest_tools
 	vm_borealis? ( chromeos-base/crash-reporter )
 	net-libs/grpc:=
 	dev-libs/protobuf:=
-	media-libs/mesa
-	x11-apps/xkbcomp
-	x11-base/xwayland
+	!vm_borealis? ( media-libs/mesa )
+	!vm_borealis? ( x11-apps/xkbcomp )
+	!vm_borealis? ( x11-base/xwayland )
 "
 
 src_install() {
@@ -36,44 +36,61 @@
 		"/usr/bin/garcon"
 		"/usr/bin/guest_service_failure_notifier"
 		"/usr/bin/notificationd"
-		"/usr/bin/sommelier"
-		"/usr/bin/wayland_demo"
-		"/usr/bin/Xwayland"
-		"/usr/bin/x11_demo"
-		"/usr/bin/xkbcomp"
 		"/usr/sbin/vshd"
 	)
 	if use vm_borealis; then
 		tools+=(
-			"/sbin/init"
 			"/sbin/crash_reporter"
+			"/sbin/init"
+			"/usr/bin/core2md"
 			"/usr/bin/vm_syslog"
 		)
+	else
+		tools+=(
+			"/usr/bin/sommelier"
+			"/usr/bin/upgrade_container"
+			"/usr/bin/wayland_demo"
+			"/usr/bin/Xwayland"
+			"/usr/bin/x11_demo"
+			"/usr/bin/xkbcomp"
+		)
 	fi
 	"${CHROMITE_BIN_DIR}"/lddtree --root="${SYSROOT}" --bindir=/bin \
 			--libdir=/lib --generate-wrappers \
+			--copy-non-elfs \
 			--copy-to-tree="${WORKDIR}"/container_pkg/ \
 			"${tools[@]}"
 
 	# These libraries are dlopen()'d so lddtree doesn't know about them.
 	local dlopen_libs=(
-		$("${CHROMITE_BIN_DIR}"/lddtree --root="${SYSROOT}" --list \
+		"/$(get_libdir)/libnss_compat.so.2" \
+		"/$(get_libdir)/libnss_files.so.2" \
+		"/$(get_libdir)/libnss_nis.so.2" \
+		"/$(get_libdir)/libnss_dns.so.2"
+	)
+	if ! use vm_borealis; then
+		dlopen_libs+=(
 			"/usr/$(get_libdir)/dri/i965_dri.so" \
 			"/usr/$(get_libdir)/dri/swrast_dri.so" \
 			"/usr/$(get_libdir)/dri/virtio_gpu_dri.so" \
 			"/usr/$(get_libdir)/libwayland-egl.so.1" \
 			"/usr/$(get_libdir)/libEGL.so.1" \
 			"/usr/$(get_libdir)/libGLESv2.so.2" \
-			"/$(get_libdir)/libnss_compat.so.2" \
-			"/$(get_libdir)/libnss_files.so.2" \
-			"/$(get_libdir)/libnss_nis.so.2" \
-			"/$(get_libdir)/libnss_dns.so.2"
 		)
-	)
+	fi
+
+	mapfile -t dlopen_libs < <("${CHROMITE_BIN_DIR}"/lddtree --root="${SYSROOT}" --list "${dlopen_libs[@]}")
+
 	cp -aL "${dlopen_libs[@]}" "${WORKDIR}"/container_pkg/lib/
 
-	# These are scripts, so lddtree doesn't like them.
-	cp -aL "${SYSROOT}/usr/bin/upgrade_container" "${WORKDIR}/container_pkg/bin"
+	if use vm_borealis; then
+		# Borealis's custom build system needs /etc/crash_reporter_logs.conf
+		# packaged with the Termina tools.
+		# TODO(cpelling): Remove once Borealis's copy of crash_reporter is no
+		# longer built via Portage.
+		mkdir -p "${WORKDIR}/container_pkg/etc"
+		cp "${SYSROOT}/etc/crash_reporter_logs.conf" "${WORKDIR}/container_pkg/etc" || die
+	fi
 
 	insinto /opt/google/cros-containers
 	insopts -m0755
diff --git a/chromeos-base/test-server/test-server-0.0.1-r40.ebuild b/chromeos-base/test-server/test-server-0.0.1-r40.ebuild
new file mode 100644
index 0000000..e1f55d3
--- /dev/null
+++ b/chromeos-base/test-server/test-server-0.0.1-r40.ebuild
@@ -0,0 +1,27 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="48236dd245bb804845d8d7d6309f1769c76cc2e8"
+CROS_WORKON_TREE="f3ec367333d2cf60a121dbc47a5780c04ce28dc7"
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME="platform/dev"
+CROS_WORKON_SUBTREE="src"
+
+inherit cros-workon
+
+# TODO(shapiroc): Rename package to test-services
+DESCRIPTION="Collection of test services installed into the cros_sdk env"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+#TODO(jaquesc): Re-add dev-util/dut-server once the server has all functionality
+DEPEND="
+	dev-util/provision-server
+	dev-util/test-exec-server
+	dev-util/test-plan
+"
+RDEPEND="${DEPEND}"
diff --git a/chromeos-base/test-server/test-server-9999.ebuild b/chromeos-base/test-server/test-server-9999.ebuild
new file mode 100644
index 0000000..0ac5f2c
--- /dev/null
+++ b/chromeos-base/test-server/test-server-9999.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME="platform/dev"
+CROS_WORKON_SUBTREE="src"
+
+inherit cros-workon
+
+# TODO(shapiroc): Rename package to test-services
+DESCRIPTION="Collection of test services installed into the cros_sdk env"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE=""
+
+#TODO(jaquesc): Re-add dev-util/dut-server once the server has all functionality
+DEPEND="
+	dev-util/provision-server
+	dev-util/test-exec-server
+	dev-util/test-plan
+"
+RDEPEND="${DEPEND}"
diff --git a/chromeos-base/thd/thd-0.0.1-r316.ebuild b/chromeos-base/thd/thd-0.0.1-r316.ebuild
deleted file mode 100644
index 33909fa..0000000
--- a/chromeos-base/thd/thd-0.0.1-r316.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "1c6d674d28b3b153c7986a900cf2dc5c05dfd0b8" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk thd .gn"
-
-PLATFORM_SUBDIR="thd"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Thermal Daemon for Chromium OS"
-HOMEPAGE="http://dev.chromium.org/chromium-os/packages/thd"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-pkg_preinst() {
-	enewuser thermal
-	enewgroup thermal
-}
-
-src_install() {
-	dobin "${OUT}"/thd
-
-	dodir /etc/thd/
-
-	insinto /etc/init
-	doins init/*.conf
-}
diff --git a/chromeos-base/thd/thd-0.0.1-r343.ebuild b/chromeos-base/thd/thd-0.0.1-r343.ebuild
new file mode 100644
index 0000000..7e7585e0
--- /dev/null
+++ b/chromeos-base/thd/thd-0.0.1-r343.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "ece498561dfd2919d08524f2ad5d5c60982feb4b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk thd .gn"
+
+PLATFORM_SUBDIR="thd"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Thermal Daemon for Chromium OS"
+HOMEPAGE="http://dev.chromium.org/chromium-os/packages/thd"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+pkg_preinst() {
+	enewuser thermal
+	enewgroup thermal
+}
+
+src_install() {
+	dobin "${OUT}"/thd
+
+	dodir /etc/thd/
+
+	insinto /etc/init
+	doins init/*.conf
+}
diff --git a/chromeos-base/thermal/files/thermal.conf b/chromeos-base/thermal/files/thermal.conf
deleted file mode 100644
index 006eb94..0000000
--- a/chromeos-base/thermal/files/thermal.conf
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (c) 2012 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.
-
-description     "thermal monitoring daemon"
-author          "chromium-os-dev@chromium.org"
-
-# Monitor available thermal info exported by the kernel and
-# invoke successively more aggressive power saving measures solely
-# for limiting any specific thermal from getting too high.
-#
-# Note that the kernel typically will implement "emergency shutdown"
-# or other triggers that require an immediate response. This script is
-# less concerned with preventing HW damage than users device being
-# "uncomfortably hot".
-
-start on started system-services
-stop on stopping system-services
-respawn
-respawn limit 3 60
-
-exec thermal.sh
diff --git a/chromeos-base/thermal/files/thermal.sh b/chromeos-base/thermal/files/thermal.sh
deleted file mode 100644
index 0ebe11f..0000000
--- a/chromeos-base/thermal/files/thermal.sh
+++ /dev/null
@@ -1,293 +0,0 @@
-#!/bin/bash
-# Copyright (c) 2012 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.
-
-# Quick hack to monitor thermals on Exynos based platforms. Since we only have
-# passive cooling, the only thing we can do is limit CPU temp.
-#
-# TODO: validate readings from hwmon sensors by comparing to each other.
-#       We should ignore readings with more than 10C differences from peers.
-
-PROG=$(basename "$0")
-PLATFORM=$(mosys platform name)
-
-debug=0
-if [[ "$1x" == '-dx' ]]; then
-  debug=1
-fi
-
-# if PLATFORM is empty, try again
-for i in $(seq 5); do
-  if [[ -n "${PLATFORM}" ]]; then
-    break
-  fi
-  sleep 1
-  logger -t "${PROG}" "Unable to get platform name, retry ${i} of 5"
-  PLATFORM=$(mosys platform name)
-done
-# Log the platform
-logger -t "${PROG}" "Platform ${PLATFORM}"
-
-# Use the same thermal settings for Skate and Spring
-if [[ "${PLATFORM}" == "Skate" ]]; then
-  PLATFORM="Spring"
-fi
-
-# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
-# 1700000 1600000 1500000 ...
-if [[ "${PLATFORM}" == "Pit" ]]; then
-  PIT_MAX_FREQ=$(cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq)
-  if [[ ${PIT_MAX_FREQ} -gt 1800000 ]]; then
-    EXYNOS5_CPU_FREQ=(1900000 1600000 1400000 1200000 1100000 900000 800000
-      650000 300000)
-  else
-    EXYNOS5_CPU_FREQ=(1800000 1600000 1400000 1200000 1100000 900000 800000
-      650000 300000)
-  fi
-
-  # Ares has 5 tmu sensors for cpu and gpu
-  cpu_tpath="/sys/class/thermal/thermal_zone[0-4]"
-
-elif [[ "${PLATFORM}" == "Pi" ]]; then
-  EXYNOS5_CPU_FREQ=(2000000 1800000 1400000 1200000 1100000 900000 800000
-      650000 300000)
-  # Ares2 has also 5 tmu sensors for cpu and gpu
-  cpu_tpath="/sys/class/thermal/thermal_zone[0-4]"
-
-else
-  EXYNOS5_CPU_FREQ=(1700000 1600000 1500000 1400000 1300000 1200000 1100000
-      1000000 900000 800000 700000 600000 500000 400000 300000 200000)
-
-  cpu_tpath="/sys/class/thermal/thermal_zone0"
-fi
-
-# CPU temperature threshold we start limiting CPU Freq
-# TODO(crosbug.com/p/17658) HACK: remove once characterized
-if [[ "${PLATFORM}" == "Spring" ]]; then
-  : $(( t0 = $(cat "${cpu_tpath}"/trip_point_0_temp) / 1000 - 1 ))
-  : $(( t1 = $(cat "${cpu_tpath}"/trip_point_1_temp) / 1000 - 1 ))
-
-  CPU_TEMP_MAP=(${t0} ${t0} ${t0} ${t0} ${t0} ${t0} ${t0} ${t0} ${t0} ${t0}
-      ${t1})
-  HWMON_TEMP_MAP=(${t0} ${t0} ${t0} ${t0} ${t0} ${t0} ${t0} ${t0} ${t0} ${t1})
-elif [[ "${PLATFORM}" == "Pit" ]]; then
-  # Just relying on thermistors under 80 dgree C
-  CPU_TEMP_MAP=(80 81 82 83 84 85 86 90 100)
-  # 50 -> 1.6Ghz(A15), 52 -> 1.2 Ghz(A15)
-  HWMON_TEMP_MAP=(49 50 51 52 53 54 70 80 90)
-elif [[ "${PLATFORM}" == "Pi" ]]; then
-  # Just relying on thermistors under 80 dgree C
-  CPU_TEMP_MAP=(80 81 82 83 84 85 86 90 100)
-  # 50 -> 1.8Ghz(A15), 52 -> 1.2 Ghz(A15)
-  HWMON_TEMP_MAP=(49 50 51 52 53 54 70 80 90)
-else
-  # 63 -> 1.4Ghz, 69 -> 1.1 Ghz, 75 -> 800Mhz
-  CPU_TEMP_MAP=(60 61 62 63 65 67 68 69 71 73 75)
-  # 52 -> 1.4Ghz, 60->1.1Ghz, 65->800Mhz
-  HWMON_TEMP_MAP=(49 50 51 52 55 58 60 62 64 65)
-fi
-
-# We don't quote cpu_tpath because it might have wildcards that
-# we want to expand into the array.
-DAISY_CPU_TEMP=(${cpu_tpath}/temp)
-
-
-#######################################
-# Find all hwmon thermal sensors.
-#
-# It's OK if there are none.
-#
-# Globals:
-#   HWMON_TEMP_SENSOR
-# Arguments:
-#   None
-# Returns:
-#   None
-#######################################
-find_hwmon_sensors() {
-  local hwmon_dir
-  local sensor
-
-  HWMON_TEMP_SENSOR=()
-  for hwmon_dir in /sys/class/hwmon/hwmon*/device; do
-    for sensor in "${hwmon_dir}"/temp*_input; do
-      if [[ -r "${sensor}" ]]; then
-        HWMON_TEMP_SENSOR+=( "${sensor}" )
-      fi
-    done
-  done
-}
-
-read_temp() {
-  local sensor="$1"
-  local t
-
-  if [[ -r "${sensor}" ]]; then
-    # treat $1 as numeric and convert to C
-    local raw
-    raw=$(cat "${sensor}" 2> /dev/null)
-    if [[ -z "${raw}" ]]; then
-      return 1
-    fi
-    : $(( t = raw / 1000 ))
-
-    # valid CPU range is 25 to 125C. Give hwmon sensors more range.
-    if  [[ ${t} -lt 15 || ${t} -gt 140 ]]; then
-      # do nothing - ignore the reading
-      logger -t "${PROG}" "ERROR: temp ${t} out of range"
-      return 1
-    fi
-
-    # WARNING: if valid temps are ever outside [0, 255] this return will not
-    # work like you think...
-    return ${t}
-  fi
-
-  logger -t "${PROG}" "ERROR: could not read temp from ${sensor}"
-  # sleep so script isn't respawned so quickly and spew
-  sleep 10
-  exit 1
-}
-
-lookup_freq_idx() {
-  local t=$1
-  shift
-  local temp_map=("$@")
-  local i=0
-  local n=${#temp_map[@]}
-
-  while [[ ${i} -lt ${n} ]]; do
-    if [[ ${t} -le ${temp_map[i]} ]]; then
-      return ${i}
-    fi
-    : $(( i += 1 ))
-  done
-
-  # we ran off the end of the map. Use slowest speed in that map.
-  logger -t "${PROG}" "ERROR: temp ${t} not in temp_map"
-  : $(( i = n - 1 ))
-  return ${i}
-}
-
-# Thermal loop steps
-set_max_cpu_freq() {
-  local max_freq=$1
-  local cpu
-
-  for cpu in /sys/devices/system/cpu/cpu?/cpufreq; do
-    echo "${max_freq}" > "${cpu}/scaling_max_freq"
-  done
-}
-
-# Only update cpu Freq if we need to change.
-last_cpu_freq=0
-
-find_hwmon_sensors
-
-# Get frequency throttling set by the firmware to limit power draw
-power_cap=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq)
-logger -t "${PROG}" "CPU max freq set to $((${power_cap} / 1000)) Mhz at boot"
-
-# Print power info on first pass, then every other 4 passes.
-power_info_pass=4
-while true; do
-  max_cpu_freq=${EXYNOS5_CPU_FREQ[0]}
-
-  # read the list of temp sensors
-  cpu_temps=()
-  for sensor in "${DAISY_CPU_TEMP[@]}"; do
-    read_temp "${sensor}"
-    cpu_temp=$?
-
-    lookup_freq_idx ${cpu_temp} "${CPU_TEMP_MAP[@]}"
-    f=$?
-    cpu_freq=${EXYNOS5_CPU_FREQ[f]}
-
-    if [[ ${cpu_freq} -gt 0 && ${cpu_freq} -lt ${max_cpu_freq} ]]; then
-      max_cpu_freq=${cpu_freq}
-    fi
-
-    # record temps for (DEBUG and) validation later
-    cpu_temps+=(${cpu_temp})
-  done
-
-  temps=()
-  if [[ ${#HWMON_TEMP_SENSOR[@]} -gt 0 ]]; then
-    for sensor in "${HWMON_TEMP_SENSOR[@]}"; do
-      read_temp "${sensor}"
-      temp=$?
-
-      # record temps for (DEBUG and) validation later
-      temps+=(${temp})
-    done
-
-    # TODO validate hwmon sensor readings.
-    # we should reject anything that is more than 5C off from all others.
-    max_temp=${temps[0]}
-    for k in "${temps[@]}"; do
-      if [[ ${max_temp} -lt ${k} ]]; then
-        max_temp=${k}
-      fi
-    done
-
-    lookup_freq_idx ${max_temp} "${HWMON_TEMP_MAP[@]}"
-    f=$?
-    therm_cpu_freq=${EXYNOS5_CPU_FREQ[f]}
-
-    # we have a valid reading and it's lower than others
-    if [[ ${therm_cpu_freq} -gt 0 &&
-          ${therm_cpu_freq} -lt ${max_cpu_freq} ]]; then
-      max_cpu_freq=${therm_cpu_freq}
-    fi
-  fi
-
-  # Handle the power cap if the battery is too low.
-  if [[ "${PLATFORM}" == "Spring" && ${power_cap} -lt ${EXYNOS5_CPU_FREQ[0]} ]]
-  then
-    power_supply="/sys/class/power_supply/sbs-*-000b"
-    energy_now=$(cat ${power_supply}/energy_now)
-    energy_full=$(cat ${power_supply}/energy_full)
-    battery_percent=$(( energy_now * 100 / energy_full ))
-
-    # if we have charged, restore the full CPU frequency range
-    if [[ ${battery_percent} -gt 5 ]]; then
-      power_cap=${EXYNOS5_CPU_FREQ[0]}
-      logger -t "${PROG}" "Freq cap reset to $((${power_cap} / 1000)) Mhz"
-    fi
-    # force to stay below the cap set to limit total power draw
-    if [[ ${max_cpu_freq} -gt ${power_cap} ]]; then
-      max_cpu_freq=${power_cap}
-    fi
-  fi
-
-  if [[ debug -gt 0 ]]; then
-    echo $(date +"%H:%M:%S") , \
-        $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq), \
-        ${max_cpu_freq}, ${cpu_temp}, ${temps[@]}
-  fi
-
-  if [[ ${last_cpu_freq} -ne ${max_cpu_freq} ]]; then
-    last_cpu_freq=${max_cpu_freq}
-    logger -t "${PROG}" "Max CPU Freq set to ${max_cpu_freq} \
-(Celsius: ${cpu_temps[*]} / ${temps[*]})"
-    set_max_cpu_freq ${max_cpu_freq}
-  fi
-
-  if [[ "${PLATFORM}" == "Spring" ]]; then
-    # Report charger type.
-    if [[ "${power_info_pass}" == "4" ]]; then
-      power_info_pass=0
-      # Charger type is 4-byte hex, but metric_client accepts only
-      # decimal.  Sparse histograms use 32-bit bucket indices, but
-      # the 64-bit values produced by awk are truncated correctly.
-      charger_type=$(($(ectool powerinfo | awk \
-        '/USB Device Type:/ { print $4; }')))
-      if [[ -n "${charger_type}" ]]; then
-        metrics_client -s Platform.SpringChargerType ${charger_type}
-      fi
-    fi
-    : $(( power_info_pass += 1 ))
-  fi
-  sleep 15
-done
diff --git a/chromeos-base/thermal/thermal-0.0.1-r4.ebuild b/chromeos-base/thermal/thermal-0.0.1-r4.ebuild
deleted file mode 120000
index a08dee5..0000000
--- a/chromeos-base/thermal/thermal-0.0.1-r4.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-thermal-0.0.1.ebuild
\ No newline at end of file
diff --git a/chromeos-base/thermal/thermal-0.0.1.ebuild b/chromeos-base/thermal/thermal-0.0.1.ebuild
deleted file mode 100644
index 311accd..0000000
--- a/chromeos-base/thermal/thermal-0.0.1.ebuild
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=4
-
-DESCRIPTION="Simple thermal throttling script"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-DEPEND=""
-RDEPEND="
-	!<chromeos-base/chromeos-bsp-daisy-0.0.1-r53
-	!<chromeos-base/chromeos-bsp-pit-private-0.0.1-r15
-	chromeos-base/chromeos-init
-"
-
-S=${WORKDIR}
-
-src_install() {
-	# Install platform specific config file for thermal monitoring
-	dosbin "${FILESDIR}/thermal.sh"
-	insinto "/etc/init/"
-	doins "${FILESDIR}/thermal.conf"
-}
diff --git a/chromeos-base/timberslide/timberslide-0.0.1-r1494.ebuild b/chromeos-base/timberslide/timberslide-0.0.1-r1494.ebuild
deleted file mode 100644
index 4d17228..0000000
--- a/chromeos-base/timberslide/timberslide-0.0.1-r1494.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "4fc04a2f4186bc5f583ec5f27235868dc3343d5b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-# TODO(https://crbug.com/809389)
-CROS_WORKON_SUBTREE="common-mk metrics timberslide .gn"
-
-PLATFORM_SUBDIR="timberslide"
-
-inherit cros-workon platform
-
-DESCRIPTION="EC log concatenator for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/timberslide/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/re2:=
-"
-
-DEPEND="${RDEPEND}"
-
-src_install() {
-	dobin "${OUT}/timberslide"
-
-	# Install upstart configs and scripts
-	insinto /etc/init
-	doins init/*.conf
-	exeinto /usr/share/cros/init
-	doexe init/*.sh
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/timberslide_test_runner"
-}
diff --git a/chromeos-base/timberslide/timberslide-0.0.1-r1559.ebuild b/chromeos-base/timberslide/timberslide-0.0.1-r1559.ebuild
new file mode 100644
index 0000000..ca763e4
--- /dev/null
+++ b/chromeos-base/timberslide/timberslide-0.0.1-r1559.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="0553127ef2b660a5c71f12a9417ed4ad35f07120"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "ed5e8ef1b9fb278f4990bde11814cdf639d8aa20" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(https://crbug.com/809389)
+CROS_WORKON_SUBTREE="common-mk metrics timberslide .gn"
+
+PLATFORM_SUBDIR="timberslide"
+
+inherit cros-workon platform
+
+DESCRIPTION="EC log concatenator for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/timberslide/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/re2:=
+"
+
+DEPEND="${RDEPEND}"
+
+src_install() {
+	dobin "${OUT}/timberslide"
+
+	# Install upstart configs and scripts
+	insinto /etc/init
+	doins init/*.conf
+	exeinto /usr/share/cros/init
+	doexe init/*.sh
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/timberslide_test_runner"
+}
diff --git a/chromeos-base/toolchain-tests/toolchain-tests-0.0.1-r4297.ebuild b/chromeos-base/toolchain-tests/toolchain-tests-0.0.1-r4297.ebuild
deleted file mode 100644
index 2d4bfbd..0000000
--- a/chromeos-base/toolchain-tests/toolchain-tests-0.0.1-r4297.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="db48601acf9d646e8f4b4c223e67da2d40cf02e6"
-CROS_WORKON_TREE="9c318efb5bd9aef8b16389f9f2573412b9e576cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
-CROS_WORKON_LOCALNAME="third_party/autotest/files"
-
-inherit cros-workon
-
-DESCRIPTION="Compilation and runtime tests for toolchain"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/client/site_tests/platform_ToolchainTests/src"
-}
diff --git a/chromeos-base/toolchain-tests/toolchain-tests-0.0.1-r5143.ebuild b/chromeos-base/toolchain-tests/toolchain-tests-0.0.1-r5143.ebuild
new file mode 100644
index 0000000..7e2395b
--- /dev/null
+++ b/chromeos-base/toolchain-tests/toolchain-tests-0.0.1-r5143.ebuild
@@ -0,0 +1,21 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="0e103e3821ffbc575b67d6d9c426cac3ee4402b3"
+CROS_WORKON_TREE="210df4cb14c4f7c420a697e85e6a7bec211d5bed"
+CROS_WORKON_PROJECT="chromiumos/third_party/autotest"
+CROS_WORKON_LOCALNAME="third_party/autotest/files"
+
+inherit cros-workon
+
+DESCRIPTION="Compilation and runtime tests for toolchain"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/autotest/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/client/site_tests/platform_ToolchainTests/src"
+}
diff --git a/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r865.ebuild b/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r865.ebuild
deleted file mode 100644
index 71f822a..0000000
--- a/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r865.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "106994593e4698856f0de3f4da8e62cfeb0c1694" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk touch_firmware_calibration .gn"
-
-PLATFORM_SUBDIR="touch_firmware_calibration"
-
-inherit cros-workon platform user udev
-
-DESCRIPTION="Touch Firmware Calibration"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/touch_firmware_calibration/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-pkg_preinst() {
-	# Set up touch_firmware_calibration user and group which will be used to
-	# run tools for calibration.
-	enewuser touch_firmware_calibration
-	enewgroup touch_firmware_calibration
-}
-
-src_install() {
-	# Install a tool to override max pressure.
-	exeinto "$(get_udevdir)"
-	doexe "${OUT}/override-max-pressure"
-
-	# Install the correct seccomp policy for this architecture.
-	insinto "/usr/share/policy"
-	newins "seccomp/override-max-pressure-seccomp-${ARCH}.policy" override-max-pressure-seccomp.policy
-}
diff --git a/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r893.ebuild b/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r893.ebuild
new file mode 100644
index 0000000..f98c51e
--- /dev/null
+++ b/chromeos-base/touch_firmware_calibration/touch_firmware_calibration-0.0.1-r893.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "92e357708a584d0da1efabfdc10b432c2bfc40c9" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk touch_firmware_calibration .gn"
+
+PLATFORM_SUBDIR="touch_firmware_calibration"
+
+inherit cros-workon platform user udev
+
+DESCRIPTION="Touch Firmware Calibration"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/touch_firmware_calibration/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+pkg_preinst() {
+	# Set up touch_firmware_calibration user and group which will be used to
+	# run tools for calibration.
+	enewuser touch_firmware_calibration
+	enewgroup touch_firmware_calibration
+}
+
+src_install() {
+	# Install a tool to override max pressure.
+	exeinto "$(get_udevdir)"
+	doexe "${OUT}/override-max-pressure"
+
+	# Install the correct seccomp policy for this architecture.
+	insinto "/usr/share/policy"
+	newins "seccomp/override-max-pressure-seccomp-${ARCH}.policy" override-max-pressure-seccomp.policy
+}
diff --git a/chromeos-base/touch_keyboard/touch_keyboard-0.0.1-r1147.ebuild b/chromeos-base/touch_keyboard/touch_keyboard-0.0.1-r1147.ebuild
deleted file mode 100644
index d744110..0000000
--- a/chromeos-base/touch_keyboard/touch_keyboard-0.0.1-r1147.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk touch_keyboard .gn"
-
-PLATFORM_SUBDIR="touch_keyboard"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Touch Keyboard"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/touch_keyboard/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-pkg_preinst() {
-	# Set up the touch_keyboard user and group, which will be used to run
-	# touch_keyboard_handler instead of root.
-	enewuser touch_keyboard
-	enewgroup touch_keyboard
-}
-
-src_install() {
-	# Install the actual binary that handles the touch keyboard.
-	dobin "${OUT}/touch_keyboard_handler"
-
-	# Install a tool for testing the haptic feedback in the factory.
-	dobin "${OUT}/touchkb_haptic_test"
-
-	# Install an upstart script to start the handler at boot time.
-	insinto "/etc/init"
-	doins "touch_keyboard.conf"
-
-	# Install the correct seccomp policy for this architecture.
-	insinto "/opt/google/touch/policies"
-	doins seccomp/${ARCH}/*.policy
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}"/eventkey_test
-	platform_test "run" "${OUT}"/slot_test
-	platform_test "run" "${OUT}"/statemachine_test
-	platform_test "run" "${OUT}"/evdevsource_test
-	platform_test "run" "${OUT}"/uinputdevice_test
-}
diff --git a/chromeos-base/touch_keyboard/touch_keyboard-0.0.1-r1172.ebuild b/chromeos-base/touch_keyboard/touch_keyboard-0.0.1-r1172.ebuild
new file mode 100644
index 0000000..7b19afc
--- /dev/null
+++ b/chromeos-base/touch_keyboard/touch_keyboard-0.0.1-r1172.ebuild
@@ -0,0 +1,54 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk touch_keyboard .gn"
+
+PLATFORM_SUBDIR="touch_keyboard"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Touch Keyboard"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/touch_keyboard/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+pkg_preinst() {
+	# Set up the touch_keyboard user and group, which will be used to run
+	# touch_keyboard_handler instead of root.
+	enewuser touch_keyboard
+	enewgroup touch_keyboard
+}
+
+src_install() {
+	# Install the actual binary that handles the touch keyboard.
+	dobin "${OUT}/touch_keyboard_handler"
+
+	# Install a tool for testing the haptic feedback in the factory.
+	dobin "${OUT}/touchkb_haptic_test"
+
+	# Install an upstart script to start the handler at boot time.
+	insinto "/etc/init"
+	doins "touch_keyboard.conf"
+
+	# Install the correct seccomp policy for this architecture.
+	insinto "/opt/google/touch/policies"
+	doins seccomp/${ARCH}/*.policy
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}"/eventkey_test
+	platform_test "run" "${OUT}"/slot_test
+	platform_test "run" "${OUT}"/statemachine_test
+	platform_test "run" "${OUT}"/evdevsource_test
+	platform_test "run" "${OUT}"/uinputdevice_test
+}
diff --git a/chromeos-base/touch_updater/OWNERS b/chromeos-base/touch_updater/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/touch_updater/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/touch_updater/touch_updater-0.0.1-r202.ebuild b/chromeos-base/touch_updater/touch_updater-0.0.1-r202.ebuild
deleted file mode 100644
index 9ebef52..0000000
--- a/chromeos-base/touch_updater/touch_updater-0.0.1-r202.ebuild
+++ /dev/null
@@ -1,99 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="09b14345b3845c264aae31a77ca8afaeed584aa8"
-CROS_WORKON_TREE=("626e200c9c99eadfa3352d77feb5acca8c933264" "b8aff264287e61e5a75e50cbcd4057fd9697a2c8")
-CROS_WORKON_PROJECT="chromiumos/platform/touch_updater"
-CROS_WORKON_SUBTREE="policies scripts"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit cros-workon user
-
-DESCRIPTION="Touch firmware and config updater"
-HOMEPAGE="https://www.chromium.org/chromium-os"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="
-	input_devices_synaptics
-	input_devices_wacom
-	input_devices_etphidiap
-	input_devices_st
-	input_devices_st_touchscreen
-	input_devices_weida
-	input_devices_goodix
-	input_devices_sis
-	input_devices_pixart
-	input_devices_g2touch
-	input_devices_cirque
-	input_devices_elan_i2chid
-	input_devices_melfas
-	input_devices_emright
-	input_devices_eps2pstiap
-"
-
-# Third party firmware updaters usually belong in sys-apps/.  If you just
-# checked in a new one to chromeos-base/, please move it to sys-apps/ before
-# adding it as a dependency here.
-RDEPEND="
-	chromeos-base/chromeos-touch-common
-	input_devices_synaptics? ( chromeos-base/rmi4utils )
-	input_devices_wacom? ( chromeos-base/wacom_fw_flash )
-	input_devices_etphidiap? ( chromeos-base/chromeos-touch-etphidiap )
-	input_devices_st? ( chromeos-base/st_flash )
-	input_devices_st_touchscreen? ( chromeos-base/chromeos-touch-stupdate )
-	input_devices_weida? ( chromeos-base/weida_wdt_util )
-	input_devices_goodix? ( chromeos-base/gdix_hid_firmware_update )
-	input_devices_sis? ( chromeos-base/sisConsoletool )
-	input_devices_pixart? ( chromeos-base/pixart_tpfwup )
-	input_devices_g2touch? ( chromeos-base/g2update_tool )
-	input_devices_cirque? ( chromeos-base/cirque_fw_update )
-	input_devices_elan_i2chid? ( chromeos-base/elan_i2chid_tools )
-	input_devices_melfas? ( chromeos-base/mfs-console-tool )
-	input_devices_emright? ( chromeos-base/emright_fw_updater )
-	input_devices_eps2pstiap? ( chromeos-base/epstps2iap )
-"
-
-pkg_preinst() {
-	if use input_devices_elan_i2chid || use input_devices_melfas || use input_devices_emright; then
-		enewgroup fwupdate-hidraw
-		enewuser fwupdate-hidraw
-	fi
-	if use input_devices_sis; then
-		enewgroup sisfwupdate
-		enewuser sisfwupdate
-	fi
-	if use input_devices_pixart; then
-		enewgroup pixfwupdate
-		enewuser pixfwupdate
-	fi
-	if use input_devices_g2touch; then
-		enewgroup g2touch
-		enewuser g2touch
-	fi
-	if use input_devices_goodix; then
-		enewgroup goodixfwupdate
-		enewuser goodixfwupdate
-	fi
-	if use input_devices_cirque; then
-		enewgroup cirque
-		enewuser cirque
-	fi
-	if use input_devices_eps2pstiap; then
-		enewgroup fwupdate-serio
-		enewuser fwupdate-serio
-	fi
-}
-
-src_install() {
-	exeinto "/opt/google/touch/scripts"
-	doexe scripts/*.sh
-
-	if [ -d "policies/${ARCH}" ]; then
-		insinto "/opt/google/touch/policies"
-		doins policies/${ARCH}/*.policy
-	fi
-}
diff --git a/chromeos-base/touch_updater/touch_updater-0.0.1-r224.ebuild b/chromeos-base/touch_updater/touch_updater-0.0.1-r224.ebuild
new file mode 100644
index 0000000..b2b9947
--- /dev/null
+++ b/chromeos-base/touch_updater/touch_updater-0.0.1-r224.ebuild
@@ -0,0 +1,101 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="9f58e792a01193b4658b142ff5751fe3baa292d7"
+CROS_WORKON_TREE=("4c5be99747ad647497aaf07a79cb4dd0ac28f841" "589fe50e26955bab53030dec80ef99bf9546844b")
+CROS_WORKON_PROJECT="chromiumos/platform/touch_updater"
+CROS_WORKON_SUBTREE="policies scripts"
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+inherit cros-workon user
+
+DESCRIPTION="Touch firmware and config updater"
+HOMEPAGE="https://www.chromium.org/chromium-os"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="
+	input_devices_synaptics
+	input_devices_wacom
+	input_devices_etphidiap
+	input_devices_st
+	input_devices_st_touchscreen
+	input_devices_weida
+	input_devices_goodix
+	input_devices_sis
+	input_devices_pixart
+	input_devices_g2touch
+	input_devices_cirque
+	input_devices_elan_i2chid
+	input_devices_melfas
+	input_devices_emright
+	input_devices_eps2pstiap
+	input_devices_zinitix
+"
+
+# Third party firmware updaters usually belong in sys-apps/.  If you just
+# checked in a new one to chromeos-base/, please move it to sys-apps/ before
+# adding it as a dependency here.
+RDEPEND="
+	chromeos-base/chromeos-touch-common
+	input_devices_synaptics? ( chromeos-base/rmi4utils )
+	input_devices_wacom? ( chromeos-base/wacom_fw_flash )
+	input_devices_etphidiap? ( chromeos-base/chromeos-touch-etphidiap )
+	input_devices_st? ( chromeos-base/st_flash )
+	input_devices_st_touchscreen? ( chromeos-base/chromeos-touch-stupdate )
+	input_devices_weida? ( chromeos-base/weida_wdt_util )
+	input_devices_goodix? ( chromeos-base/gdix_hid_firmware_update )
+	input_devices_sis? ( chromeos-base/sisConsoletool )
+	input_devices_pixart? ( chromeos-base/pixart_tpfwup )
+	input_devices_g2touch? ( chromeos-base/g2update_tool )
+	input_devices_cirque? ( chromeos-base/cirque_fw_update )
+	input_devices_elan_i2chid? ( chromeos-base/elan_i2chid_tools )
+	input_devices_melfas? ( chromeos-base/mfs-console-tool )
+	input_devices_emright? ( chromeos-base/emright_fw_updater )
+	input_devices_eps2pstiap? ( chromeos-base/epstps2iap )
+	input_devices_zinitix? ( chromeos-base/zinitix_fw_updater )
+"
+
+pkg_preinst() {
+	if use input_devices_elan_i2chid || use input_devices_melfas || use input_devices_emright || use input_devices_zinitix; then
+		enewgroup fwupdate-hidraw
+		enewuser fwupdate-hidraw
+	fi
+	if use input_devices_sis; then
+		enewgroup sisfwupdate
+		enewuser sisfwupdate
+	fi
+	if use input_devices_pixart; then
+		enewgroup pixfwupdate
+		enewuser pixfwupdate
+	fi
+	if use input_devices_g2touch; then
+		enewgroup g2touch
+		enewuser g2touch
+	fi
+	if use input_devices_goodix; then
+		enewgroup goodixfwupdate
+		enewuser goodixfwupdate
+	fi
+	if use input_devices_cirque; then
+		enewgroup cirque
+		enewuser cirque
+	fi
+	if use input_devices_eps2pstiap; then
+		enewgroup fwupdate-serio
+		enewuser fwupdate-serio
+	fi
+}
+
+src_install() {
+	exeinto "/opt/google/touch/scripts"
+	doexe scripts/*.sh
+
+	if [ -d "policies/${ARCH}" ]; then
+		insinto "/opt/google/touch/policies"
+		doins policies/${ARCH}/*.policy
+	fi
+}
diff --git a/chromeos-base/touch_updater/touch_updater-9999.ebuild b/chromeos-base/touch_updater/touch_updater-9999.ebuild
index 1b4235d..aa24eca 100644
--- a/chromeos-base/touch_updater/touch_updater-9999.ebuild
+++ b/chromeos-base/touch_updater/touch_updater-9999.ebuild
@@ -31,6 +31,7 @@
 	input_devices_melfas
 	input_devices_emright
 	input_devices_eps2pstiap
+	input_devices_zinitix
 "
 
 # Third party firmware updaters usually belong in sys-apps/.  If you just
@@ -53,10 +54,11 @@
 	input_devices_melfas? ( chromeos-base/mfs-console-tool )
 	input_devices_emright? ( chromeos-base/emright_fw_updater )
 	input_devices_eps2pstiap? ( chromeos-base/epstps2iap )
+	input_devices_zinitix? ( chromeos-base/zinitix_fw_updater )
 "
 
 pkg_preinst() {
-	if use input_devices_elan_i2chid || use input_devices_melfas || use input_devices_emright; then
+	if use input_devices_elan_i2chid || use input_devices_melfas || use input_devices_emright || use input_devices_zinitix; then
 		enewgroup fwupdate-hidraw
 		enewuser fwupdate-hidraw
 	fi
diff --git a/chromeos-base/tpm-check/tpm-check-0.0.1-r1909.ebuild b/chromeos-base/tpm-check/tpm-check-0.0.1-r1909.ebuild
deleted file mode 100644
index e093181..0000000
--- a/chromeos-base/tpm-check/tpm-check-0.0.1-r1909.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="6f6efdc6fa38ed3bcacfa9e152f415d50ee8bad0"
-CROS_WORKON_TREE="06c3486af100c39ddc9cb59381d087b4f2ed1634"
-CROS_WORKON_PROJECT="chromiumos/platform/vboot_reference"
-
-inherit cros-workon autotest
-
-DESCRIPTION="tpm check test"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/vboot_reference/"
-SRC_URI=""
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-# Enable autotest by default.
-IUSE="${IUSE} +autotest"
-
-IUSE_TESTS="
-	+tests_hardware_TPMCheck
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-CROS_WORKON_LOCALNAME=platform/vboot_reference
-
-# path from root of repo
-AUTOTEST_CLIENT_SITE_TESTS=autotest/client
diff --git a/chromeos-base/tpm-check/tpm-check-0.0.1-r1954.ebuild b/chromeos-base/tpm-check/tpm-check-0.0.1-r1954.ebuild
new file mode 100644
index 0000000..c3e4103
--- /dev/null
+++ b/chromeos-base/tpm-check/tpm-check-0.0.1-r1954.ebuild
@@ -0,0 +1,29 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="5c0fcf0f8725b98043a4b18f36e21489375d133a"
+CROS_WORKON_TREE="3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c"
+CROS_WORKON_PROJECT="chromiumos/platform/vboot_reference"
+
+inherit cros-workon autotest
+
+DESCRIPTION="tpm check test"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/vboot_reference/"
+SRC_URI=""
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+# Enable autotest by default.
+IUSE="${IUSE} +autotest"
+
+IUSE_TESTS="
+	+tests_hardware_TPMCheck
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+CROS_WORKON_LOCALNAME=platform/vboot_reference
+
+# path from root of repo
+AUTOTEST_CLIENT_SITE_TESTS=autotest/client
diff --git a/chromeos-base/tpm-firmware-tests/tpm-firmware-tests-0.0.1-r1929.ebuild b/chromeos-base/tpm-firmware-tests/tpm-firmware-tests-0.0.1-r1929.ebuild
deleted file mode 100644
index 2769bb7..0000000
--- a/chromeos-base/tpm-firmware-tests/tpm-firmware-tests-0.0.1-r1929.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="6f6efdc6fa38ed3bcacfa9e152f415d50ee8bad0"
-CROS_WORKON_TREE="06c3486af100c39ddc9cb59381d087b4f2ed1634"
-CROS_WORKON_PROJECT="chromiumos/platform/vboot_reference"
-
-inherit cros-workon autotest
-
-DESCRIPTION="TPM firmware tests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/vboot_reference/"
-SRC_URI=""
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-DEPEND="
-	app-crypt/trousers:=
-	chromeos-base/tpm:=
-"
-
-# Enable autotest by default.
-IUSE="${IUSE} +autotest"
-
-IUSE_TESTS="
-	+tests_hardware_TPMFirmware
-	+tests_hardware_TPMFirmwareServer
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-CROS_WORKON_LOCALNAME=vboot_reference
-
-# path from root of repo
-AUTOTEST_CLIENT_SITE_TESTS=autotest/client
-AUTOTEST_SERVER_SITE_TESTS=autotest/server
-
-function src_compile {
-	# for Makefile
-	export VBOOT_DIR=${WORKDIR}/${P}
-	export MINIMAL=1  # Makefile requires this for cross-compiling
-	autotest_src_compile
-}
-
-
diff --git a/chromeos-base/tpm-firmware-tests/tpm-firmware-tests-0.0.1-r1974.ebuild b/chromeos-base/tpm-firmware-tests/tpm-firmware-tests-0.0.1-r1974.ebuild
new file mode 100644
index 0000000..a018f04
--- /dev/null
+++ b/chromeos-base/tpm-firmware-tests/tpm-firmware-tests-0.0.1-r1974.ebuild
@@ -0,0 +1,45 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="5c0fcf0f8725b98043a4b18f36e21489375d133a"
+CROS_WORKON_TREE="3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c"
+CROS_WORKON_PROJECT="chromiumos/platform/vboot_reference"
+
+inherit cros-workon autotest
+
+DESCRIPTION="TPM firmware tests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/vboot_reference/"
+SRC_URI=""
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+DEPEND="
+	app-crypt/trousers:=
+	chromeos-base/tpm:=
+"
+
+# Enable autotest by default.
+IUSE="${IUSE} +autotest"
+
+IUSE_TESTS="
+	+tests_hardware_TPMFirmware
+	+tests_hardware_TPMFirmwareServer
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+CROS_WORKON_LOCALNAME=vboot_reference
+
+# path from root of repo
+AUTOTEST_CLIENT_SITE_TESTS=autotest/client
+AUTOTEST_SERVER_SITE_TESTS=autotest/server
+
+function src_compile {
+	# for Makefile
+	export VBOOT_DIR=${WORKDIR}/${P}
+	export MINIMAL=1  # Makefile requires this for cross-compiling
+	autotest_src_compile
+}
+
+
diff --git a/chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r1780.ebuild b/chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r1780.ebuild
deleted file mode 100644
index 37ef963..0000000
--- a/chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r1780.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "bd13eabfc804c66584fba6988a8b836b170442d7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk tpm2-simulator .gn"
-
-PLATFORM_SUBDIR="tpm2-simulator"
-
-inherit cros-workon platform user
-
-DESCRIPTION="TPM 2.0 Simulator"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm2-simulator/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-COMMON_DEPEND="
-	dev-libs/openssl:0=
-	"
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="
-	chromeos-base/tpm2:=
-	${COMMON_DEPEND}
-	"
-
-src_install() {
-	dobin "${OUT}"/tpm2-simulator
-}
diff --git a/chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r1818.ebuild b/chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r1818.ebuild
new file mode 100644
index 0000000..ba53c93
--- /dev/null
+++ b/chromeos-base/tpm2-simulator/tpm2-simulator-0.0.1-r1818.ebuild
@@ -0,0 +1,54 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="477b5f160682fa3913c7368bcad356baeb3c0728"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "01f3fdde08f176cc653d3d0c46c04c446cfa9a81" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk tpm2-simulator .gn"
+
+PLATFORM_SUBDIR="tpm2-simulator"
+
+inherit cros-workon platform user
+
+DESCRIPTION="TPM 2.0 Simulator"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm2-simulator/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+COMMON_DEPEND="
+	dev-libs/openssl:0=
+	"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="
+	chromeos-base/tpm2:=[tpm2_simulator,tpm2_simulator_manufacturer]
+	chromeos-base/vboot_reference:=[tpm2_simulator]
+	${COMMON_DEPEND}
+	"
+
+src_install() {
+	# Install init scripts
+	insinto /etc/init
+	doins init/tpm2-simulator.conf
+
+	# Install executables
+	dobin "${OUT}"/tpm2-simulator
+	dobin "${OUT}"/tpm2-simulator-init
+	dobin "${OUT}"/tpm2-simulator-stop
+
+	# Install seccomp policy for cryptohome-proxy
+	insinto /usr/share/policy
+	newins "seccomp/tpm2-simulator-${ARCH}.policy" tpm2-simulator.policy
+}
+
+pkg_preinst() {
+	enewuser tpm2-simulator
+	enewgroup tpm2-simulator
+}
diff --git a/chromeos-base/tpm2-simulator/tpm2-simulator-9999.ebuild b/chromeos-base/tpm2-simulator/tpm2-simulator-9999.ebuild
index 901b970..93dec10 100644
--- a/chromeos-base/tpm2-simulator/tpm2-simulator-9999.ebuild
+++ b/chromeos-base/tpm2-simulator/tpm2-simulator-9999.ebuild
@@ -26,10 +26,27 @@
 
 RDEPEND="${COMMON_DEPEND}"
 DEPEND="
-	chromeos-base/tpm2:=
+	chromeos-base/tpm2:=[tpm2_simulator,tpm2_simulator_manufacturer]
+	chromeos-base/vboot_reference:=[tpm2_simulator]
 	${COMMON_DEPEND}
 	"
 
 src_install() {
+	# Install init scripts
+	insinto /etc/init
+	doins init/tpm2-simulator.conf
+
+	# Install executables
 	dobin "${OUT}"/tpm2-simulator
+	dobin "${OUT}"/tpm2-simulator-init
+	dobin "${OUT}"/tpm2-simulator-stop
+
+	# Install seccomp policy for cryptohome-proxy
+	insinto /usr/share/policy
+	newins "seccomp/tpm2-simulator-${ARCH}.policy" tpm2-simulator.policy
+}
+
+pkg_preinst() {
+	enewuser tpm2-simulator
+	enewgroup tpm2-simulator
 }
diff --git a/chromeos-base/tpm2/tpm2-0.0.1-r132.ebuild b/chromeos-base/tpm2/tpm2-0.0.1-r132.ebuild
deleted file mode 100644
index f7b3ed9..0000000
--- a/chromeos-base/tpm2/tpm2-0.0.1-r132.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="069cb5acb1d4a8a001404dfecdfab465de639ad1"
-CROS_WORKON_TREE="80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754"
-CROS_WORKON_PROJECT="chromiumos/third_party/tpm2"
-CROS_WORKON_LOCALNAME="third_party/tpm2"
-
-inherit cros-workon toolchain-funcs
-
-DESCRIPTION="TPM2.0 library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/tpm2/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="tpm2_simulator tpm2_simulator_manufacturer"
-
-DEPEND="dev-libs/openssl:0="
-
-src_compile() {
-	if use tpm2_simulator_manufacturer ; then
-		export TPM2_SIMULATOR_MANUFACTURER=1
-	fi
-	tc-export CC AR RANLIB
-	emake
-}
-
-src_install() {
-	dolib.a build/libtpm2.a
-
-	"${S}"/thirdparty_preinstall.sh "${PV}" "$(cros-workon_get_build_dir)"
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "$(cros-workon_get_build_dir)/libtpm2.pc"
-
-	insinto /usr/include/tpm2
-	doins BaseTypes.h
-	doins Capabilities.h
-	doins ExecCommand_fp.h
-	doins GetCommandCodeString_fp.h
-	doins Implementation.h
-	doins Manufacture_fp.h
-	doins Platform.h
-	doins TPMB.h
-	doins TPM_Types.h
-	doins Tpm.h
-	doins TpmBuildSwitches.h
-	doins TpmError.h
-	doins _TPM_Init_fp.h
-	doins bool.h
-	doins swap.h
-	doins tpm_generated.h
-	doins tpm_types.h
-	if use tpm2_simulator; then
-		doins tpm_manufacture.h
-	fi
-}
diff --git a/chromeos-base/tpm2/tpm2-0.0.1-r136.ebuild b/chromeos-base/tpm2/tpm2-0.0.1-r136.ebuild
new file mode 100644
index 0000000..de55f61
--- /dev/null
+++ b/chromeos-base/tpm2/tpm2-0.0.1-r136.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="37335af9c5488ed349271a8ba9ff209c940a5e2c"
+CROS_WORKON_TREE="679fa8b14bd105ad9959a0f82eaa928d5b18890d"
+CROS_WORKON_PROJECT="chromiumos/third_party/tpm2"
+CROS_WORKON_LOCALNAME="third_party/tpm2"
+
+inherit cros-workon toolchain-funcs
+
+DESCRIPTION="TPM2.0 library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/tpm2/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="generic_tpm2 tpm2_simulator tpm2_simulator_manufacturer"
+
+DEPEND="dev-libs/openssl:0="
+
+src_compile() {
+	if use tpm2_simulator_manufacturer ; then
+		export TPM2_SIMULATOR_MANUFACTURER=1
+	fi
+	if use generic_tpm2 ; then
+		export TCG_EK_CERT_INDICES=1
+	fi
+	tc-export CC AR RANLIB
+	emake
+}
+
+src_install() {
+	dolib.a build/libtpm2.a
+
+	"${S}"/thirdparty_preinstall.sh "${PV}" "$(cros-workon_get_build_dir)"
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "$(cros-workon_get_build_dir)/libtpm2.pc"
+
+	insinto /usr/include/tpm2
+	doins BaseTypes.h
+	doins Capabilities.h
+	doins ExecCommand_fp.h
+	doins GetCommandCodeString_fp.h
+	doins Implementation.h
+	doins Manufacture_fp.h
+	doins Platform.h
+	doins TPMB.h
+	doins TPM_Types.h
+	doins Tpm.h
+	doins TpmBuildSwitches.h
+	doins TpmError.h
+	doins _TPM_Init_fp.h
+	doins bool.h
+	doins swap.h
+	doins tpm_generated.h
+	doins tpm_types.h
+	if use tpm2_simulator; then
+		doins tpm_manufacture.h
+		doins tpm_simulator.hpp
+	fi
+}
diff --git a/chromeos-base/tpm2/tpm2-9999.ebuild b/chromeos-base/tpm2/tpm2-9999.ebuild
index 20078d21..d6458a3 100644
--- a/chromeos-base/tpm2/tpm2-9999.ebuild
+++ b/chromeos-base/tpm2/tpm2-9999.ebuild
@@ -12,7 +12,7 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="tpm2_simulator tpm2_simulator_manufacturer"
+IUSE="generic_tpm2 tpm2_simulator tpm2_simulator_manufacturer"
 
 DEPEND="dev-libs/openssl:0="
 
@@ -20,6 +20,9 @@
 	if use tpm2_simulator_manufacturer ; then
 		export TPM2_SIMULATOR_MANUFACTURER=1
 	fi
+	if use generic_tpm2 ; then
+		export TCG_EK_CERT_INDICES=1
+	fi
 	tc-export CC AR RANLIB
 	emake
 }
@@ -51,5 +54,6 @@
 	doins tpm_types.h
 	if use tpm2_simulator; then
 		doins tpm_manufacture.h
+		doins tpm_simulator.hpp
 	fi
 }
diff --git a/chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r215.ebuild b/chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r215.ebuild
deleted file mode 100644
index 4d53ca7..0000000
--- a/chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r215.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="5fc770072f3c76a5fff2f346ec832ddc44970226"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e3bf102d9535965e9911dc352202c6927e8f5514" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk tpm_manager .gn"
-
-PLATFORM_SUBDIR="tpm_manager/client"
-
-inherit cros-workon platform
-
-DESCRIPTION="TPM Manager D-Bus client library for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_manager/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:=
-"
-
-# Note that for RDEPEND, we conflict with tpm_manager package older than
-# 0.0.1 because this client is incompatible with daemon older than version
-# 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="
-	!<chromeos-base/tpm_manager-0.0.1
-	chromeos-base/libbrillo:=
-"
-
-src_install() {
-	# Install D-Bus client library.
-	platform_install_dbus_client_lib "tpm_manager"
-}
diff --git a/chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r259.ebuild b/chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r259.ebuild
new file mode 100644
index 0000000..8ae18d5
--- /dev/null
+++ b/chromeos-base/tpm_manager-client/tpm_manager-client-0.0.1-r259.ebuild
@@ -0,0 +1,71 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="f563528fd35a0e55348afa3545ed57af4b86bdbc"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk tpm_manager .gn"
+
+PLATFORM_SUBDIR="tpm_manager/client"
+
+inherit cros-workon platform
+
+DESCRIPTION="TPM Manager D-Bus client library for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_manager/client/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="cros_host 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:=
+"
+
+# Note that for RDEPEND, we conflict with tpm_manager package older than
+# 0.0.1 because this client is incompatible with daemon older than version
+# 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="
+	!<chromeos-base/tpm_manager-0.0.1-r2238
+	chromeos-base/libbrillo:=
+"
+
+src_install() {
+	# Install D-Bus client library.
+	platform_install_dbus_client_lib "tpm_manager"
+
+	dobin "${OUT}"/tpm_manager_client
+
+	dolib.so "${OUT}"/lib/libtpm_manager.so
+
+	# Install header files.
+	insinto /usr/include/tpm_manager/client
+	doins ./*.h
+	insinto /usr/include/tpm_manager/common
+	doins ../common/*.h
+}
+
+platform_pkg_test() {
+	local tests=(
+		tpm_manager-client_testrunner
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
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 c2a1de9..23461ec 100644
--- a/chromeos-base/tpm_manager-client/tpm_manager-client-9999.ebuild
+++ b/chromeos-base/tpm_manager-client/tpm_manager-client-9999.ebuild
@@ -19,7 +19,7 @@
 LICENSE="BSD-Google"
 SLOT="0"
 KEYWORDS="~*"
-IUSE="cros_host"
+IUSE="cros_host 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
@@ -38,11 +38,32 @@
 # 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="
-	!<chromeos-base/tpm_manager-0.0.1
+	!<chromeos-base/tpm_manager-0.0.1-r2238
 	chromeos-base/libbrillo:=
 "
 
 src_install() {
 	# Install D-Bus client library.
 	platform_install_dbus_client_lib "tpm_manager"
+
+	dobin "${OUT}"/tpm_manager_client
+
+	dolib.so "${OUT}"/lib/libtpm_manager.so
+
+	# Install header files.
+	insinto /usr/include/tpm_manager/client
+	doins ./*.h
+	insinto /usr/include/tpm_manager/common
+	doins ../common/*.h
+}
+
+platform_pkg_test() {
+	local tests=(
+		tpm_manager-client_testrunner
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
 }
diff --git a/chromeos-base/tpm_manager/tpm_manager-0.0.1-r2146.ebuild b/chromeos-base/tpm_manager/tpm_manager-0.0.1-r2146.ebuild
deleted file mode 100644
index ee5765c..0000000
--- a/chromeos-base/tpm_manager/tpm_manager-0.0.1-r2146.ebuild
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="5fc770072f3c76a5fff2f346ec832ddc44970226"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "989d840598227b15d78525d5f92c806011a9c158" "6bcff6ea2d0ff76e4398205aee498eb314d63902" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "e3bf102d9535965e9911dc352202c6927e8f5514" "20ed8021024637e492670d20fa5969a2ad75e4b6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 libhwsec libtpmcrypto metrics tpm_manager trunks .gn"
-
-PLATFORM_SUBDIR="tpm_manager"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Daemon to manage TPM ownership."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_manager/"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE="test tpm tpm2 fuzzer"
-
-REQUIRED_USE="tpm2? ( !tpm )"
-
-RDEPEND="
-	!tpm2? ( app-crypt/trousers )
-	tpm2? (
-		chromeos-base/trunks
-	)
-	>=chromeos-base/metrics-0.0.1-r3152
-	chromeos-base/minijail
-	chromeos-base/libhwsec
-	chromeos-base/libtpmcrypto
-	chromeos-base/system_api:=[fuzzer?]
-	"
-
-DEPEND="${RDEPEND}
-	tpm2? ( chromeos-base/trunks[test?] )
-	"
-
-pkg_preinst() {
-	enewuser tpm_manager
-	enewgroup tpm_manager
-}
-
-src_install() {
-	# Install D-Bus configuration file.
-	insinto /etc/dbus-1/system.d
-	doins server/org.chromium.TpmManager.conf
-
-	# Install upstart config file.
-	insinto /etc/init
-	doins server/tpm_managerd.conf
-	if use tpm2; then
-		sed -i 's/started tcsd/started trunksd/' \
-			"${D}/etc/init/tpm_managerd.conf" ||
-			die "Can't replace tcsd with trunksd in tpm_managerd.conf"
-	fi
-
-	# Install the executables provided by TpmManager
-	dosbin "${OUT}"/tpm_managerd
-	dosbin "${OUT}"/local_data_migration
-	dobin "${OUT}"/tpm_manager_client
-
-	# Install seccomp policy files.
-	insinto /usr/share/policy
-	newins server/tpm_managerd-seccomp-${ARCH}.policy tpm_managerd-seccomp.policy
-
-	dolib.so "${OUT}"/lib/libtpm_manager.so
-	dolib.a "${OUT}"/libtpm_manager_test.a
-
-
-	# Install header files.
-	insinto /usr/include/tpm_manager/client
-	doins client/*.h
-	insinto /usr/include/tpm_manager/common
-	doins common/*.h
-}
-
-platform_pkg_test() {
-	local tests=(
-		tpm_manager_testrunner
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/tpm_manager/tpm_manager-0.0.1-r2255.ebuild b/chromeos-base/tpm_manager/tpm_manager-0.0.1-r2255.ebuild
new file mode 100644
index 0000000..c369cee
--- /dev/null
+++ b/chromeos-base/tpm_manager/tpm_manager-0.0.1-r2255.ebuild
@@ -0,0 +1,87 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+CROS_WORKON_COMMIT="f563528fd35a0e55348afa3545ed57af4b86bdbc"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "81dfbbc1756a3b4224b447e7bf10a916d97c4f66" "5d77de997847c22cb783cc11cd0fab4f6fae59f0" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6" "a06a3f47395fb7b584188c6852764bc773e5497e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 libhwsec libtpmcrypto metrics tpm_manager trunks .gn"
+
+PLATFORM_SUBDIR="tpm_manager"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Daemon to manage TPM ownership."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_manager/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE="pinweaver_csme test tpm tpm2 fuzzer"
+
+REQUIRED_USE="tpm2? ( !tpm )"
+
+RDEPEND="
+	!tpm2? ( app-crypt/trousers )
+	tpm2? (
+		chromeos-base/trunks
+	)
+	>=chromeos-base/metrics-0.0.1-r3152
+	chromeos-base/minijail
+	chromeos-base/libhwsec
+	chromeos-base/libtpmcrypto
+	chromeos-base/system_api:=[fuzzer?]
+	chromeos-base/tpm_manager-client
+	"
+
+DEPEND="${RDEPEND}
+	tpm2? ( chromeos-base/trunks[test?] )
+	"
+
+pkg_preinst() {
+	enewuser tpm_manager
+	enewgroup tpm_manager
+}
+
+src_install() {
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins server/org.chromium.TpmManager.conf
+
+	# Install upstart config file.
+	insinto /etc/init
+	doins server/tpm_managerd.conf
+	if use tpm2; then
+		dep_job="trunksd"
+		if use pinweaver_csme; then
+			dep_job="tpm_tunneld"
+		fi
+		sed -i "s/started tcsd/started ${dep_job}/" \
+			"${D}/etc/init/tpm_managerd.conf" ||
+			die "Can't replace tcsd with ${dep_job} in tpm_managerd.conf"
+	fi
+
+	# Install the executables provided by TpmManager
+	dosbin "${OUT}"/tpm_managerd
+	dosbin "${OUT}"/local_data_migration
+
+	# Install seccomp policy files.
+	insinto /usr/share/policy
+	newins server/tpm_managerd-seccomp-${ARCH}.policy tpm_managerd-seccomp.policy
+}
+
+platform_pkg_test() {
+	local tests=(
+		tpm_manager_testrunner
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/tpm_manager/tpm_manager-9999.ebuild b/chromeos-base/tpm_manager/tpm_manager-9999.ebuild
index cf36625..fe186f4 100644
--- a/chromeos-base/tpm_manager/tpm_manager-9999.ebuild
+++ b/chromeos-base/tpm_manager/tpm_manager-9999.ebuild
@@ -20,7 +20,7 @@
 LICENSE="Apache-2.0"
 SLOT="0"
 KEYWORDS="~*"
-IUSE="test tpm tpm2 fuzzer"
+IUSE="pinweaver_csme test tpm tpm2 fuzzer"
 
 REQUIRED_USE="tpm2? ( !tpm )"
 
@@ -34,6 +34,7 @@
 	chromeos-base/libhwsec
 	chromeos-base/libtpmcrypto
 	chromeos-base/system_api:=[fuzzer?]
+	chromeos-base/tpm_manager-client
 	"
 
 DEPEND="${RDEPEND}
@@ -54,29 +55,22 @@
 	insinto /etc/init
 	doins server/tpm_managerd.conf
 	if use tpm2; then
-		sed -i 's/started tcsd/started trunksd/' \
+		dep_job="trunksd"
+		if use pinweaver_csme; then
+			dep_job="tpm_tunneld"
+		fi
+		sed -i "s/started tcsd/started ${dep_job}/" \
 			"${D}/etc/init/tpm_managerd.conf" ||
-			die "Can't replace tcsd with trunksd in tpm_managerd.conf"
+			die "Can't replace tcsd with ${dep_job} in tpm_managerd.conf"
 	fi
 
 	# Install the executables provided by TpmManager
 	dosbin "${OUT}"/tpm_managerd
 	dosbin "${OUT}"/local_data_migration
-	dobin "${OUT}"/tpm_manager_client
 
 	# Install seccomp policy files.
 	insinto /usr/share/policy
 	newins server/tpm_managerd-seccomp-${ARCH}.policy tpm_managerd-seccomp.policy
-
-	dolib.so "${OUT}"/lib/libtpm_manager.so
-	dolib.a "${OUT}"/libtpm_manager_test.a
-
-
-	# Install header files.
-	insinto /usr/include/tpm_manager/client
-	doins client/*.h
-	insinto /usr/include/tpm_manager/common
-	doins common/*.h
 }
 
 platform_pkg_test() {
diff --git a/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r188.ebuild b/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r188.ebuild
deleted file mode 100644
index d637d8e..0000000
--- a/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r188.ebuild
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 2019 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "d4688b618445182a5925e02136792a8973362e7c" "20ed8021024637e492670d20fa5969a2ad75e4b6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk tpm_softclear_utils trunks .gn"
-
-PLATFORM_SUBDIR="tpm_softclear_utils"
-
-inherit cros-workon platform
-
-DESCRIPTION="Utilities for soft-clearing TPM. This package resides in test images only."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_softclear_utils/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test tpm tpm2"
-REQUIRED_USE="tpm2? ( !tpm )"
-
-RDEPEND="
-	tpm2? (
-		chromeos-base/trunks:=
-	)
-	!tpm2? (
-		app-crypt/trousers:=
-	)
-"
-
-DEPEND="${RDEPEND}
-	tpm2? (
-		chromeos-base/system_api:=
-		chromeos-base/trunks:=[test?]
-	)
-"
-
-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"
-}
diff --git a/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r243.ebuild b/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r243.ebuild
new file mode 100644
index 0000000..9c3849a
--- /dev/null
+++ b/chromeos-base/tpm_softclear_utils/tpm_softclear_utils-0.0.1-r243.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2019 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="ecd28d2c26fbe86b6822c6d6afb80f118a8f7f03"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "7797f13629c40bd876baedd3bf20a36d625d5e4f" "a06a3f47395fb7b584188c6852764bc773e5497e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk tpm_softclear_utils trunks .gn"
+
+PLATFORM_SUBDIR="tpm_softclear_utils"
+
+inherit cros-workon platform
+
+DESCRIPTION="Utilities for soft-clearing TPM. This package resides in test images only."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_softclear_utils/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test tpm tpm2"
+REQUIRED_USE="tpm2? ( !tpm )"
+
+RDEPEND="
+	tpm2? (
+		chromeos-base/trunks:=
+	)
+	!tpm2? (
+		app-crypt/trousers:=
+	)
+"
+
+DEPEND="${RDEPEND}
+	tpm2? (
+		chromeos-base/system_api:=
+		chromeos-base/trunks:=[test?]
+	)
+"
+
+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"
+}
diff --git a/chromeos-base/tremplin/tremplin-0.0.1-r127.ebuild b/chromeos-base/tremplin/tremplin-0.0.1-r127.ebuild
deleted file mode 100644
index 3676bf68..0000000
--- a/chromeos-base/tremplin/tremplin-0.0.1-r127.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="067467e5391d1233883c93714aab3d2730628ce1"
-CROS_WORKON_TREE="55949f9f79ed15b23eda83631f0d73b40a0a1956"
-CROS_WORKON_PROJECT="chromiumos/platform/tremplin"
-CROS_WORKON_LOCALNAME="platform/tremplin"
-CROS_GO_BINARIES="chromiumos/tremplin"
-
-CROS_GO_TEST=(
-	"chromiumos/tremplin/..."
-)
-CROS_GO_VET=(
-	"${CROS_GO_TEST[@]}"
-)
-
-inherit cros-workon cros-go
-
-DESCRIPTION="Tremplin LXD client with gRPC support"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tremplin/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-COMMON_DEPEND="
-	app-emulation/lxd:=
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/vm_guest_tools:=
-	chromeos-base/vm_protos:=
-	dev-go/go-libaudit:=
-	dev-go/go-sys:=
-	dev-go/grpc:=
-	dev-go/kobject:=
-	dev-go/netlink:=
-	dev-go/vsock:=
-	dev-go/yaml:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
diff --git a/chromeos-base/tremplin/tremplin-0.0.1-r136.ebuild b/chromeos-base/tremplin/tremplin-0.0.1-r136.ebuild
new file mode 100644
index 0000000..fc1ea56
--- /dev/null
+++ b/chromeos-base/tremplin/tremplin-0.0.1-r136.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="f0cce85b1b1d33464efc406d25f36b41ec50c1ff"
+CROS_WORKON_TREE="d8596cb320788c979bbb9cfb0401124793b180df"
+CROS_WORKON_PROJECT="chromiumos/platform/tremplin"
+CROS_WORKON_LOCALNAME="platform/tremplin"
+CROS_GO_BINARIES="chromiumos/tremplin"
+
+CROS_GO_TEST=(
+	"chromiumos/tremplin/..."
+)
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+inherit cros-workon cros-go
+
+DESCRIPTION="Tremplin LXD client with gRPC support"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tremplin/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+COMMON_DEPEND="
+	app-emulation/lxd:0
+	app-emulation/lxd:4
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/vm_guest_tools:=
+	chromeos-base/vm_protos:=
+	dev-go/go-libaudit:=
+	dev-go/go-sys:=
+	dev-go/grpc:=
+	dev-go/kobject:=
+	dev-go/netlink:=
+	dev-go/vsock:=
+	dev-go/yaml:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
diff --git a/chromeos-base/tremplin/tremplin-9999.ebuild b/chromeos-base/tremplin/tremplin-9999.ebuild
index c510b18..4e7c285 100644
--- a/chromeos-base/tremplin/tremplin-9999.ebuild
+++ b/chromeos-base/tremplin/tremplin-9999.ebuild
@@ -23,7 +23,8 @@
 IUSE=""
 
 COMMON_DEPEND="
-	app-emulation/lxd:=
+	app-emulation/lxd:0
+	app-emulation/lxd:4
 "
 
 DEPEND="
diff --git a/chromeos-base/trunks/trunks-0.0.1-r2876.ebuild b/chromeos-base/trunks/trunks-0.0.1-r2876.ebuild
deleted file mode 100644
index d15a282..0000000
--- a/chromeos-base/trunks/trunks-0.0.1-r2876.ebuild
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "989d840598227b15d78525d5f92c806011a9c158" "20ed8021024637e492670d20fa5969a2ad75e4b6" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 trunks .gn"
-
-PLATFORM_SUBDIR="trunks"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Trunks service for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/trunks/"
-
-LICENSE="Apache-2.0"
-KEYWORDS="*"
-IUSE="cr50_onboard fuzzer ftdi_tpm test tpm2_simulator"
-
-# This depends on protobuf because it uses protoc and needs to be rebuilt
-# whenever the protobuf library is updated since generated source files may be
-# incompatible across different versions of the protobuf library.
-COMMON_DEPEND="
-	chromeos-base/minijail:=
-	chromeos-base/power_manager-client:=
-	ftdi_tpm? ( dev-embedded/libftdi:= )
-	tpm2_simulator? ( chromeos-base/tpm2:= )
-	dev-libs/protobuf:=
-	fuzzer? (
-		dev-cpp/gtest:=
-	)
-	"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	cr50_onboard? ( chromeos-base/chromeos-cr50 )
-	!app-crypt/tpm-tools
-	chromeos-base/libhwsec
-	"
-
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/chromeos-ec-headers:=
-	"
-
-src_install() {
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.Trunks.conf
-
-	insinto /etc/init
-	if use tpm2_simulator; then
-		newins trunksd.conf.tpm2_simulator trunksd.conf
-	elif use cr50_onboard; then
-		newins trunksd.conf.cr50 trunksd.conf
-	else
-		doins trunksd.conf
-	fi
-
-	dosbin "${OUT}"/pinweaver_client
-	dosbin "${OUT}"/trunks_client
-	dosbin "${OUT}"/trunks_send
-	dosbin tpm_version
-	dosbin "${OUT}"/trunksd
-	dolib.so "${OUT}"/lib/libtrunks.so
-	# trunks_test library implements trunks mocks which
-	# are used by unittest and fuzzer.
-	if use test || use fuzzer; then
-		dolib.a "${OUT}"/libtrunks_test.a
-	fi
-
-	insinto /usr/share/policy
-	newins trunksd-seccomp-${ARCH}.policy trunksd-seccomp.policy
-
-	insinto /usr/include/trunks
-	doins *.h
-	doins "${OUT}"/gen/include/trunks/*.h
-
-	insinto /usr/include/proto
-	doins "${S}"/pinweaver.proto
-
-	insinto /usr/include/chromeos/dbus/trunks
-	doins "${S}"/interface.proto
-
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins "${OUT}"/obj/trunks/libtrunks.pc
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/trunks_creation_blob_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/trunks_hmac_authorization_delegate_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/trunks_key_blob_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS \
-		"${OUT}"/trunks_password_authorization_delegate_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/trunks_resource_manager_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/trunks_tpm_pinweaver_fuzzer
-}
-
-platform_pkg_test() {
-	"${S}/generator/generator_test.py" || die
-
-	local tests=(
-		trunks_testrunner
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
-
-pkg_preinst() {
-	enewuser trunks
-	enewgroup trunks
-}
diff --git a/chromeos-base/trunks/trunks-0.0.1-r2968.ebuild b/chromeos-base/trunks/trunks-0.0.1-r2968.ebuild
new file mode 100644
index 0000000..b56ff5d
--- /dev/null
+++ b/chromeos-base/trunks/trunks-0.0.1-r2968.ebuild
@@ -0,0 +1,148 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="ecd28d2c26fbe86b6822c6d6afb80f118a8f7f03"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "81dfbbc1756a3b4224b447e7bf10a916d97c4f66" "0b612d0f1e8dbe59a5549b476f1e681e0b7fe94e" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "a06a3f47395fb7b584188c6852764bc773e5497e" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+# TODO(crbug/1184685): "libhwsec" is not necessary; remove it after solving
+# the bug.
+CROS_WORKON_SUBTREE="common-mk libhwsec libhwsec-foundation metrics trunks .gn"
+
+PLATFORM_SUBDIR="trunks"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Trunks service for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/trunks/"
+
+LICENSE="Apache-2.0"
+KEYWORDS="*"
+IUSE="
+	cr50_onboard
+	csme_emulator
+	fuzzer
+	ftdi_tpm
+	generic_tpm2
+	pinweaver_csme
+	test
+	ti50_onboard
+	tpm2_simulator
+	vtpm_proxy
+"
+
+# This depends on protobuf because it uses protoc and needs to be rebuilt
+# whenever the protobuf library is updated since generated source files may be
+# incompatible across different versions of the protobuf library.
+COMMON_DEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/minijail:=
+	chromeos-base/power_manager-client:=
+	ftdi_tpm? ( dev-embedded/libftdi:= )
+	tpm2_simulator? (
+		chromeos-base/tpm2:=
+		vtpm_proxy? ( chromeos-base/tpm2-simulator:= )
+	)
+	dev-libs/protobuf:=
+	fuzzer? (
+		dev-cpp/gtest:=
+	)
+	"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	cr50_onboard? ( chromeos-base/chromeos-cr50 )
+	ti50_onboard? ( chromeos-base/chromeos-ti50 )
+	!app-crypt/tpm-tools
+	chromeos-base/libhwsec-foundation
+	"
+
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/chromeos-ec-headers:=
+	"
+
+src_install() {
+	insinto /etc/dbus-1/system.d
+	doins org.chromium.Trunks.conf
+
+	insinto /etc/init
+	if use tpm2_simulator && ! use vtpm_proxy; then
+		newins trunksd.conf.tpm2_simulator trunksd.conf
+	elif use cr50_onboard || use ti50_onboard; then
+		newins trunksd.conf.cr50 trunksd.conf
+	else
+		doins trunksd.conf
+	fi
+
+	if use pinweaver_csme && use generic_tpm2; then
+		newins csme/tpm_tunneld.conf tpm_tunneld.conf
+	fi
+
+	dosbin "${OUT}"/pinweaver_client
+	dosbin "${OUT}"/trunks_client
+	dosbin "${OUT}"/trunks_send
+	dosbin tpm_version
+	dosbin "${OUT}"/trunksd
+	dolib.so "${OUT}"/lib/libtrunks.so
+	# trunks_test library implements trunks mocks which
+	# are used by unittest and fuzzer.
+	if use test || use fuzzer; then
+		dolib.a "${OUT}"/libtrunks_test.a
+	fi
+
+	if use pinweaver_csme && use generic_tpm2; then
+		dosbin "${OUT}"/pinweaver_provision
+		dosbin "${OUT}"/tpm_tunneld
+	fi
+
+	insinto /usr/share/policy
+	newins trunksd-seccomp-${ARCH}.policy trunksd-seccomp.policy
+
+	if use pinweaver_csme && use generic_tpm2; then
+		newins csme/tpm_tunneld-seccomp-${ARCH}.policy tpm_tunneld-seccomp.policy
+	fi
+
+	insinto /usr/include/trunks
+	doins *.h
+	doins "${OUT}"/gen/include/trunks/*.h
+
+	insinto /usr/include/proto
+	doins "${S}"/pinweaver.proto
+
+	insinto /usr/include/chromeos/dbus/trunks
+	doins "${S}"/interface.proto
+
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}"/obj/trunks/libtrunks.pc
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/trunks_creation_blob_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/trunks_hmac_authorization_delegate_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/trunks_key_blob_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS \
+		"${OUT}"/trunks_password_authorization_delegate_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/trunks_resource_manager_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/trunks_tpm_pinweaver_fuzzer
+}
+
+platform_pkg_test() {
+	"${S}/generator/generator_test.py" || die
+
+	local tests=(
+		trunks_testrunner
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
+
+pkg_preinst() {
+	enewuser trunks
+	enewgroup trunks
+}
diff --git a/chromeos-base/trunks/trunks-9999.ebuild b/chromeos-base/trunks/trunks-9999.ebuild
index 685b168..bfc274f 100644
--- a/chromeos-base/trunks/trunks-9999.ebuild
+++ b/chromeos-base/trunks/trunks-9999.ebuild
@@ -7,7 +7,9 @@
 CROS_WORKON_LOCALNAME="platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk libhwsec trunks .gn"
+# TODO(crbug/1184685): "libhwsec" is not necessary; remove it after solving
+# the bug.
+CROS_WORKON_SUBTREE="common-mk libhwsec libhwsec-foundation metrics trunks .gn"
 
 PLATFORM_SUBDIR="trunks"
 
@@ -18,16 +20,31 @@
 
 LICENSE="Apache-2.0"
 KEYWORDS="~*"
-IUSE="cr50_onboard fuzzer ftdi_tpm test tpm2_simulator"
+IUSE="
+	cr50_onboard
+	csme_emulator
+	fuzzer
+	ftdi_tpm
+	generic_tpm2
+	pinweaver_csme
+	test
+	ti50_onboard
+	tpm2_simulator
+	vtpm_proxy
+"
 
 # This depends on protobuf because it uses protoc and needs to be rebuilt
 # whenever the protobuf library is updated since generated source files may be
 # incompatible across different versions of the protobuf library.
 COMMON_DEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
 	chromeos-base/minijail:=
 	chromeos-base/power_manager-client:=
 	ftdi_tpm? ( dev-embedded/libftdi:= )
-	tpm2_simulator? ( chromeos-base/tpm2:= )
+	tpm2_simulator? (
+		chromeos-base/tpm2:=
+		vtpm_proxy? ( chromeos-base/tpm2-simulator:= )
+	)
 	dev-libs/protobuf:=
 	fuzzer? (
 		dev-cpp/gtest:=
@@ -37,8 +54,9 @@
 RDEPEND="
 	${COMMON_DEPEND}
 	cr50_onboard? ( chromeos-base/chromeos-cr50 )
+	ti50_onboard? ( chromeos-base/chromeos-ti50 )
 	!app-crypt/tpm-tools
-	chromeos-base/libhwsec
+	chromeos-base/libhwsec-foundation
 	"
 
 DEPEND="
@@ -51,14 +69,18 @@
 	doins org.chromium.Trunks.conf
 
 	insinto /etc/init
-	if use tpm2_simulator; then
+	if use tpm2_simulator && ! use vtpm_proxy; then
 		newins trunksd.conf.tpm2_simulator trunksd.conf
-	elif use cr50_onboard; then
+	elif use cr50_onboard || use ti50_onboard; then
 		newins trunksd.conf.cr50 trunksd.conf
 	else
 		doins trunksd.conf
 	fi
 
+	if use pinweaver_csme && use generic_tpm2; then
+		newins csme/tpm_tunneld.conf tpm_tunneld.conf
+	fi
+
 	dosbin "${OUT}"/pinweaver_client
 	dosbin "${OUT}"/trunks_client
 	dosbin "${OUT}"/trunks_send
@@ -71,9 +93,18 @@
 		dolib.a "${OUT}"/libtrunks_test.a
 	fi
 
+	if use pinweaver_csme && use generic_tpm2; then
+		dosbin "${OUT}"/pinweaver_provision
+		dosbin "${OUT}"/tpm_tunneld
+	fi
+
 	insinto /usr/share/policy
 	newins trunksd-seccomp-${ARCH}.policy trunksd-seccomp.policy
 
+	if use pinweaver_csme && use generic_tpm2; then
+		newins csme/tpm_tunneld-seccomp-${ARCH}.policy tpm_tunneld-seccomp.policy
+	fi
+
 	insinto /usr/include/trunks
 	doins *.h
 	doins "${OUT}"/gen/include/trunks/*.h
diff --git a/chromeos-base/typecd/typecd-0.0.1-r108.ebuild b/chromeos-base/typecd/typecd-0.0.1-r108.ebuild
deleted file mode 100644
index 3114d2d..0000000
--- a/chromeos-base/typecd/typecd-0.0.1-r108.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="adfc0f0698fe0bec11e17cec992f7468f767c2c2"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "f24a7f088427e5b089ec1a46be1764c1bf00823b" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk typecd .gn"
-
-PLATFORM_SUBDIR="typecd"
-
-inherit cros-workon platform user
-
-DESCRIPTION="Chrome OS USB Type C daemon"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/typecd/"
-
-LICENSE="BSD-Google"
-SLOT=0
-KEYWORDS="*"
-IUSE="+seccomp"
-
-DEPEND="chromeos-base/debugd-client:="
-
-src_install() {
-	dobin "${OUT}"/typecd
-
-	insinto /etc/init
-	doins init/*.conf
-
-	# Install seccomp policy files.
-	insinto /usr/share/policy
-	if use seccomp; then
-		newins "seccomp/typecd-seccomp-${ARCH}.policy" typecd-seccomp.policy
-		newins "seccomp/ectool_typec-seccomp-${ARCH}.policy" ectool_typec-seccomp.policy
-	fi
-
-	# Install rsyslog config.
-	insinto /etc/rsyslog.d
-	doins rsyslog/rsyslog.typecd.conf
-}
-
-pkg_preinst() {
-	enewuser typecd
-	enewgroup typecd
-
-	# This group is required for debugd EC Type C tool to access /dev/cros_ec.
-	enewgroup cros_ec-access
-	# Add user and group for debugd Type C commands.
-	enewuser typecd_ec
-	enewgroup typecd_ec
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/typecd_testrunner"
-}
diff --git a/chromeos-base/typecd/typecd-0.0.1-r180.ebuild b/chromeos-base/typecd/typecd-0.0.1-r180.ebuild
new file mode 100644
index 0000000..1f4faae
--- /dev/null
+++ b/chromeos-base/typecd/typecd-0.0.1-r180.ebuild
@@ -0,0 +1,73 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "94b56d6d00224f6b44d9f6c77cd490426acc7c17" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk typecd .gn"
+
+PLATFORM_SUBDIR="typecd"
+
+inherit cros-workon platform user
+
+DESCRIPTION="Chrome OS USB Type C daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/typecd/"
+
+LICENSE="BSD-Google"
+SLOT=0
+KEYWORDS="*"
+IUSE="+seccomp"
+
+RDEPEND=">=chromeos-base/metrics-0.0.1-r3152:="
+
+DEPEND="
+	${RDEPEND}
+	chromeos-base/debugd-client:=
+	chromeos-base/session_manager-client:=
+	chromeos-base/system_api:=
+"
+
+src_install() {
+	dobin "${OUT}"/typecd
+
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.typecd.service
+
+	insinto /etc/init
+	doins init/*.conf
+
+	# Install seccomp policy files.
+	insinto /usr/share/policy
+	if use seccomp; then
+		newins "seccomp/typecd-seccomp-${ARCH}.policy" typecd-seccomp.policy
+		newins "seccomp/ectool_typec-seccomp-${ARCH}.policy" ectool_typec-seccomp.policy
+	fi
+
+	# Install rsyslog config.
+	insinto /etc/rsyslog.d
+	doins rsyslog/rsyslog.typecd.conf
+
+	# Install D-Bus permission config.
+	insinto /etc/dbus-1/system.d
+	doins dbus/typecd.conf
+}
+
+pkg_preinst() {
+	enewuser typecd
+	enewgroup typecd
+
+	# This group is required for debugd EC Type C tool to access /dev/cros_ec.
+	enewgroup cros_ec-access
+	# Add user and group for debugd Type C commands.
+	enewuser typecd_ec
+	enewgroup typecd_ec
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/typecd_testrunner"
+}
diff --git a/chromeos-base/typecd/typecd-9999.ebuild b/chromeos-base/typecd/typecd-9999.ebuild
index 972fbef..2fb627f 100644
--- a/chromeos-base/typecd/typecd-9999.ebuild
+++ b/chromeos-base/typecd/typecd-9999.ebuild
@@ -21,11 +21,21 @@
 KEYWORDS="~*"
 IUSE="+seccomp"
 
-DEPEND="chromeos-base/debugd-client:="
+RDEPEND=">=chromeos-base/metrics-0.0.1-r3152:="
+
+DEPEND="
+	${RDEPEND}
+	chromeos-base/debugd-client:=
+	chromeos-base/session_manager-client:=
+	chromeos-base/system_api:=
+"
 
 src_install() {
 	dobin "${OUT}"/typecd
 
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.typecd.service
+
 	insinto /etc/init
 	doins init/*.conf
 
@@ -39,6 +49,10 @@
 	# Install rsyslog config.
 	insinto /etc/rsyslog.d
 	doins rsyslog/rsyslog.typecd.conf
+
+	# Install D-Bus permission config.
+	insinto /etc/dbus-1/system.d
+	doins dbus/typecd.conf
 }
 
 pkg_preinst() {
diff --git a/chromeos-base/u-boot-license/OWNERS b/chromeos-base/u-boot-license/OWNERS
index afc58cf..891015e 100644
--- a/chromeos-base/u-boot-license/OWNERS
+++ b/chromeos-base/u-boot-license/OWNERS
@@ -1,2 +1 @@
-set noparent
 include /sys-boot/u-boot/OWNERS
diff --git a/chromeos-base/u-boot-scripts/OWNERS b/chromeos-base/u-boot-scripts/OWNERS
index afc58cf..891015e 100644
--- a/chromeos-base/u-boot-scripts/OWNERS
+++ b/chromeos-base/u-boot-scripts/OWNERS
@@ -1,2 +1 @@
-set noparent
 include /sys-boot/u-boot/OWNERS
diff --git a/chromeos-base/u2fd/u2fd-0.0.1-r1053.ebuild b/chromeos-base/u2fd/u2fd-0.0.1-r1053.ebuild
deleted file mode 100644
index 7df100b..0000000
--- a/chromeos-base/u2fd/u2fd-0.0.1-r1053.ebuild
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "20ed8021024637e492670d20fa5969a2ad75e4b6" "989d840598227b15d78525d5f92c806011a9c158" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "0a4c2a4309ae045cba89a234a75d29007f13cf92" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_USE_VCSID="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE="common-mk trunks libhwsec metrics u2fd .gn"
-
-PLATFORM_SUBDIR="u2fd"
-
-inherit cros-workon platform user
-
-DESCRIPTION="U2FHID Emulation Daemon"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/u2fhid"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="fuzzer"
-
-COMMON_DEPEND="
-	chromeos-base/attestation:=
-	chromeos-base/attestation-client:=
-	chromeos-base/cbor:=
-	chromeos-base/libhwsec:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/power_manager-client:=
-	chromeos-base/trunks:=
-	dev-libs/hidapi:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/attestation-client:=
-	chromeos-base/system_api:=[fuzzer?]
-"
-
-pkg_setup() {
-	# Has to be done in pkg_setup() instead of pkg_preinst() since
-	# src_install() needs the u2f user and group.
-	enewuser "u2f"
-	enewgroup "u2f"
-	cros-workon_pkg_setup
-}
-
-src_install() {
-	dobin "${OUT}"/u2fd
-
-	insinto /etc/init
-	doins init/*.conf
-
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.U2F.conf
-
-	local daemon_store="/etc/daemon-store/u2f"
-	dodir "${daemon_store}"
-	fperms 0700 "${daemon_store}"
-	fowners u2f:u2f "${daemon_store}"
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/u2f_adpu_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/u2fd_test_runner"
-}
diff --git a/chromeos-base/u2fd/u2fd-0.0.1-r1165.ebuild b/chromeos-base/u2fd/u2fd-0.0.1-r1165.ebuild
new file mode 100644
index 0000000..35bf1d8
--- /dev/null
+++ b/chromeos-base/u2fd/u2fd-0.0.1-r1165.ebuild
@@ -0,0 +1,72 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="ecd28d2c26fbe86b6822c6d6afb80f118a8f7f03"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a06a3f47395fb7b584188c6852764bc773e5497e" "81dfbbc1756a3b4224b447e7bf10a916d97c4f66" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e4bdb36b8b1e5f01a3bbb9b825a32cf55222bfeb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_USE_VCSID="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE="common-mk trunks libhwsec metrics u2fd .gn"
+
+PLATFORM_SUBDIR="u2fd"
+
+inherit cros-workon platform user
+
+DESCRIPTION="U2FHID Emulation Daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/u2fhid"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="fuzzer"
+
+COMMON_DEPEND="
+	chromeos-base/attestation:=
+	chromeos-base/attestation-client:=
+	chromeos-base/cbor:=
+	chromeos-base/libhwsec:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/power_manager-client:=
+	chromeos-base/trunks:=
+	dev-libs/hidapi:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/attestation-client:=
+	>=chromeos-base/protofiles-0.0.43:=
+	chromeos-base/system_api:=[fuzzer?]
+"
+
+pkg_setup() {
+	# Has to be done in pkg_setup() instead of pkg_preinst() since
+	# src_install() needs the u2f user and group.
+	enewuser "u2f"
+	enewgroup "u2f"
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	dobin "${OUT}"/u2fd
+
+	insinto /etc/init
+	doins init/*.conf
+
+	insinto /etc/dbus-1/system.d
+	doins org.chromium.U2F.conf
+
+	local daemon_store="/etc/daemon-store/u2f"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners u2f:u2f "${daemon_store}"
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/u2f_adpu_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/u2fd_test_runner"
+}
diff --git a/chromeos-base/u2fd/u2fd-9999.ebuild b/chromeos-base/u2fd/u2fd-9999.ebuild
index 62efb02c..f56c418 100644
--- a/chromeos-base/u2fd/u2fd-9999.ebuild
+++ b/chromeos-base/u2fd/u2fd-9999.ebuild
@@ -36,6 +36,7 @@
 
 DEPEND="${COMMON_DEPEND}
 	chromeos-base/attestation-client:=
+	>=chromeos-base/protofiles-0.0.43:=
 	chromeos-base/system_api:=[fuzzer?]
 "
 
diff --git a/chromeos-base/uboot-env/OWNERS b/chromeos-base/uboot-env/OWNERS
deleted file mode 100644
index 891015e..0000000
--- a/chromeos-base/uboot-env/OWNERS
+++ /dev/null
@@ -1 +0,0 @@
-include /sys-boot/u-boot/OWNERS
diff --git a/chromeos-base/uboot-env/uboot-env-0.0.1-r7.ebuild b/chromeos-base/uboot-env/uboot-env-0.0.1-r7.ebuild
deleted file mode 100644
index 166a697..0000000
--- a/chromeos-base/uboot-env/uboot-env-0.0.1-r7.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=2
-CROS_WORKON_COMMIT="5ad506f38e25df5361f1ec7892e9b4f201590a64"
-CROS_WORKON_TREE="33477d293e0a2890260c8fc617091a804f60a94c"
-CROS_WORKON_PROJECT="chromiumos/platform/uboot-env"
-
-inherit cros-workon
-
-DESCRIPTION="Python script to read/write u-boot environment"
-SLOT="0"
-KEYWORDS="arm x86"
-IUSE=""
-
-DEPEND=">=dev-lang/python-2.5"
-RDEPEND="${DEPEND}"
-
-src_install() {
-	dobin ${S}/uboot-env.py || die
-}
diff --git a/chromeos-base/uboot-env/uboot-env-9999.ebuild b/chromeos-base/uboot-env/uboot-env-9999.ebuild
deleted file mode 100644
index aceff4e..0000000
--- a/chromeos-base/uboot-env/uboot-env-9999.ebuild
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=2
-CROS_WORKON_PROJECT="chromiumos/platform/uboot-env"
-
-inherit cros-workon
-
-DESCRIPTION="Python script to read/write u-boot environment"
-SLOT="0"
-KEYWORDS="~arm ~x86"
-IUSE=""
-
-DEPEND=">=dev-lang/python-2.5"
-RDEPEND="${DEPEND}"
-
-src_install() {
-	dobin ${S}/uboot-env.py || die
-}
diff --git a/chromeos-base/update-utils/update-utils-0.0.1-r40.ebuild b/chromeos-base/update-utils/update-utils-0.0.1-r40.ebuild
deleted file mode 100644
index e89a057..0000000
--- a/chromeos-base/update-utils/update-utils-0.0.1-r40.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# This ebuild is for running tast DLC test in the lab and local dev setup.
-# For future DLC autotests, a new installation process needs to be re-designed.
-
-EAPI=6
-
-CROS_WORKON_COMMIT="ed53ff112669784e06a16d50b6360209ca7a46e2"
-CROS_WORKON_TREE="ad0497a814b312099066cb2ef36e4d93107a16bb"
-PYTHON_COMPAT=( python2_7 python3_{6,7} )
-
-CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
-CROS_WORKON_LOCALNAME="platform/dev"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="nebraska"
-
-inherit cros-workon python-r1
-
-DESCRIPTION="A set of utilities for updating Chrome OS."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="!chromeos-base/gmerge"
-
-# Add an empty src_compile() so we bypass compile stage.
-src_compile() { :; }
-
-src_install() {
-	into /usr/local
-	dobin nebraska/nebraska.py
-}
-
-src_test() {
-	# Run the unit tests.
-	python_test() {
-		"$PYTHON" nebraska/nebraska_unittest.py || die
-	}
-	python_foreach_impl python_test
-}
diff --git a/chromeos-base/update-utils/update-utils-0.0.1-r53.ebuild b/chromeos-base/update-utils/update-utils-0.0.1-r53.ebuild
new file mode 100644
index 0000000..0dca9de
--- /dev/null
+++ b/chromeos-base/update-utils/update-utils-0.0.1-r53.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# This ebuild is for running tast DLC test in the lab and local dev setup.
+# For future DLC autotests, a new installation process needs to be re-designed.
+
+EAPI=6
+
+CROS_WORKON_COMMIT="25c294ed790391292aeaad2c01223f10b21101c7"
+CROS_WORKON_TREE="c5397d8291620771eda0e67f65a17a683c0a5507"
+PYTHON_COMPAT=( python2_7 python3_{6,7} )
+
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME="platform/dev"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="nebraska"
+
+inherit cros-workon python-r1
+
+DESCRIPTION="A set of utilities for updating Chrome OS."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="!chromeos-base/gmerge"
+
+# Add an empty src_compile() so we bypass compile stage.
+src_compile() { :; }
+
+src_install() {
+	into /usr/local
+	dobin nebraska/nebraska.py
+
+	insinto /etc/init
+	doins nebraska/nebraska.conf
+}
+
+src_test() {
+	# Run the unit tests.
+	python_test() {
+		"$PYTHON" nebraska/nebraska_unittest.py || die
+	}
+	python_foreach_impl python_test
+}
diff --git a/chromeos-base/update-utils/update-utils-9999.ebuild b/chromeos-base/update-utils/update-utils-9999.ebuild
index 210506d..a390390 100644
--- a/chromeos-base/update-utils/update-utils-9999.ebuild
+++ b/chromeos-base/update-utils/update-utils-9999.ebuild
@@ -31,6 +31,9 @@
 src_install() {
 	into /usr/local
 	dobin nebraska/nebraska.py
+
+	insinto /etc/init
+	doins nebraska/nebraska.conf
 }
 
 src_test() {
diff --git a/chromeos-base/update_engine-client/update_engine-client-0.0.1-r1829.ebuild b/chromeos-base/update_engine-client/update_engine-client-0.0.1-r1829.ebuild
deleted file mode 100644
index dd2fe72..0000000
--- a/chromeos-base/update_engine-client/update_engine-client-0.0.1-r1829.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("245e9fd6c743a4ec3ec8bdcf66be12901989aff4" "6a8a4964b0ccae1b47b38b2e55fd4132c15a8b63")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "e5e30f3e93b9a03cb1dddc5fb853009ea2fb4294")
-CROS_WORKON_LOCALNAME=("platform2" "aosp/system/update_engine")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/system/update_engine")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/update_engine")
-CROS_WORKON_USE_VCSID=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_NATIVE_TEST="yes"
-PLATFORM_SUBDIR="update_engine/client-headers"
-
-inherit cros-debug cros-workon platform
-
-DESCRIPTION="Chrome OS Update Engine client library"
-HOMEPAGE="https://chromium.googlesource.com/aosp/platform/system/update_engine/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="cros_host"
-
-RDEPEND="
-	!<chromeos-base/update_engine-0.0.3
-"
-
-BDEPEND="
-	chromeos-base/chromeos-dbus-bindings:=
-"
-
-src_install() {
-	# Install DBus client library.
-	platform_install_dbus_client_lib "update_engine"
-}
diff --git a/chromeos-base/update_engine-client/update_engine-client-0.0.1-r1904.ebuild b/chromeos-base/update_engine-client/update_engine-client-0.0.1-r1904.ebuild
new file mode 100644
index 0000000..8a1f849
--- /dev/null
+++ b/chromeos-base/update_engine-client/update_engine-client-0.0.1-r1904.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("86174eb4f146aed6d1f5182351f7ed3a25629823" "375fa7a2d8b977c1744f288d0e6b0e4592e2ebbc")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "8147e94e7ebea6c5e875e4722b2e064d0ba861c4")
+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 .gn" "")
+
+PLATFORM_NATIVE_TEST="yes"
+PLATFORM_SUBDIR="update_engine/client-headers"
+
+inherit cros-debug cros-workon platform
+
+DESCRIPTION="Chrome OS Update Engine client library"
+HOMEPAGE="https://chromium.googlesource.com/aosp/platform/system/update_engine/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="cros_host"
+
+RDEPEND="
+	!<chromeos-base/update_engine-0.0.3
+"
+
+BDEPEND="
+	chromeos-base/chromeos-dbus-bindings:=
+"
+
+src_install() {
+	# Install DBus client library.
+	platform_install_dbus_client_lib "update_engine"
+}
diff --git a/chromeos-base/update_engine-client/update_engine-client-9999.ebuild b/chromeos-base/update_engine-client/update_engine-client-9999.ebuild
index 8d88dc8..612091a 100644
--- a/chromeos-base/update_engine-client/update_engine-client-9999.ebuild
+++ b/chromeos-base/update_engine-client/update_engine-client-9999.ebuild
@@ -5,6 +5,7 @@
 
 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
diff --git a/chromeos-base/update_engine/update_engine-0.0.3-r3684.ebuild b/chromeos-base/update_engine/update_engine-0.0.3-r3684.ebuild
deleted file mode 100644
index b459810..0000000
--- a/chromeos-base/update_engine/update_engine-0.0.3-r3684.ebuild
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("0f4f2e09dc2ab3255685c3005d3f60081f3a2a09" "6a8a4964b0ccae1b47b38b2e55fd4132c15a8b63")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "e5e30f3e93b9a03cb1dddc5fb853009ea2fb4294")
-CROS_WORKON_LOCALNAME=("platform2" "aosp/system/update_engine")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/system/update_engine")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/update_engine")
-CROS_WORKON_USE_VCSID=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_SUBDIR="update_engine"
-
-inherit cros-debug cros-workon platform systemd
-
-DESCRIPTION="Chrome OS Update Engine"
-HOMEPAGE="https://chromium.googlesource.com/aosp/platform/system/update_engine/"
-SRC_URI=""
-
-LICENSE="Apache-2.0"
-KEYWORDS="*"
-IUSE="cfm cros_host cros_p2p dlc fuzzer -hwid_override +power_management systemd"
-
-COMMON_DEPEND="
-	app-arch/bzip2:=
-	chromeos-base/chromeos-ca-certificates:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/vboot_reference:=
-	cros_p2p? ( chromeos-base/p2p:= )
-	dev-libs/expat:=
-	dev-libs/openssl:=
-	dev-libs/protobuf:=
-	dev-libs/xz-embedded:=
-	dev-util/bsdiff:=
-	dev-util/puffin:=
-	net-misc/curl:=
-	sys-apps/rootdev:="
-
-DEPEND="
-	app-arch/xz-utils:=
-	chromeos-base/debugd-client:=
-	dlc? ( chromeos-base/dlcservice-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:=
-	test? ( sys-fs/squashfs-tools )
-	${COMMON_DEPEND}"
-
-DELTA_GENERATOR_RDEPEND="
-	app-arch/unzip:=
-	app-arch/xz-utils:=
-	sys-libs/e2fsprogs-libs:=
-	sys-fs/squashfs-tools
-"
-
-RDEPEND="
-	!cros_host? ( chromeos-base/chromeos-installer )
-	${COMMON_DEPEND}
-	cros_host? ( ${DELTA_GENERATOR_RDEPEND} )
-	power_management? ( chromeos-base/power_manager:= )
-	virtual/update-policy:=
-"
-
-platform_pkg_test() {
-	local unittests_binary="${OUT}"/update_engine_unittests
-
-	# The unittests will try to exec `./helpers`, so make sure we're in
-	# the right dir to execute things.
-	cd "${OUT}"
-	# The tests also want keys to be in the current dir.
-	# .pub.pem files are generated on the "gen" directory.
-	cp "${S}"/unittest_key*.pem ./ || die
-	cp gen/include/update_engine/unittest_key*.pub.pem ./ || die
-
-	# The unit tests check to make sure the minor version value in
-	# update_engine.conf match the constants in update engine, so we need to be
-	# able to access this file.
-	cp "${S}/update_engine.conf" ./
-
-	# If GTEST_FILTER isn't provided, we run two subsets of tests
-	# separately: the set of non-privileged  tests (run normally)
-	# followed by the set of privileged tests (run as root).
-	# Otherwise, we pass the GTEST_FILTER environment variable as
-	# an argument and run all the tests as root; while this might
-	# lead to tests running with excess privileges, it is necessary
-	# in order to be able to run every test, including those that
-	# need to be run with root privileges.
-	if [[ -z "${GTEST_FILTER}" ]]; then
-		platform_test "run" "${unittests_binary}" 0 '-*.RunAsRoot*'
-		platform_test "run" "${unittests_binary}" 1 '*.RunAsRoot*'
-	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() {
-	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
-
-	if use systemd; then
-		systemd_dounit "${FILESDIR}"/update-engine.service
-		systemd_enable_service multi-user.target update-engine.service
-	else
-		# Install upstart script
-		insinto /etc/init
-		doins init/update-engine.conf
-	fi
-
-	# Install DBus configuration
-	insinto /etc/dbus-1/system.d
-	doins UpdateEngine.conf
-
-	platform_fuzzer_install "${S}"/OWNERS \
-				"${OUT}"/update_engine_omaha_request_action_fuzzer \
-				--dict "${S}"/fuzz/xml.dict
-	platform_fuzzer_install "${S}"/OWNERS \
-				"${OUT}"/update_engine_delta_performer_fuzzer
-}
diff --git a/chromeos-base/update_engine/update_engine-0.0.3-r3760.ebuild b/chromeos-base/update_engine/update_engine-0.0.3-r3760.ebuild
new file mode 100644
index 0000000..c6bf1de
--- /dev/null
+++ b/chromeos-base/update_engine/update_engine-0.0.3-r3760.ebuild
@@ -0,0 +1,142 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("86174eb4f146aed6d1f5182351f7ed3a25629823" "375fa7a2d8b977c1744f288d0e6b0e4592e2ebbc")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "8147e94e7ebea6c5e875e4722b2e064d0ba861c4")
+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 .gn" "")
+
+PLATFORM_SUBDIR="update_engine"
+
+inherit cros-debug cros-workon platform systemd
+
+DESCRIPTION="Chrome OS Update Engine"
+HOMEPAGE="https://chromium.googlesource.com/aosp/platform/system/update_engine/"
+SRC_URI=""
+
+LICENSE="Apache-2.0"
+KEYWORDS="*"
+IUSE="cfm cros_host cros_p2p dlc fuzzer -hwid_override minios +power_management systemd"
+
+COMMON_DEPEND="
+	app-arch/bzip2:=
+	chromeos-base/chromeos-ca-certificates:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/vboot_reference:=
+	cros_p2p? ( chromeos-base/p2p:= )
+	dev-libs/expat:=
+	dev-libs/openssl:=
+	dev-libs/protobuf:=
+	dev-libs/xz-embedded:=
+	dev-util/bsdiff:=
+	dev-util/puffin:=
+	net-misc/curl:=
+	sys-apps/rootdev:="
+
+DEPEND="
+	app-arch/xz-utils:=
+	chromeos-base/debugd-client:=
+	dlc? ( chromeos-base/dlcservice-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:=
+	test? ( sys-fs/squashfs-tools )
+	${COMMON_DEPEND}"
+
+DELTA_GENERATOR_RDEPEND="
+	app-arch/unzip:=
+	app-arch/xz-utils:=
+	sys-libs/e2fsprogs-libs:=
+	sys-fs/squashfs-tools
+"
+
+RDEPEND="
+	!cros_host? ( chromeos-base/chromeos-installer )
+	${COMMON_DEPEND}
+	cros_host? ( ${DELTA_GENERATOR_RDEPEND} )
+	power_management? ( chromeos-base/power_manager:= )
+	virtual/update-policy:=
+"
+
+platform_pkg_test() {
+	local unittests_binary="${OUT}"/update_engine_unittests
+
+	# The unittests will try to exec `./helpers`, so make sure we're in
+	# the right dir to execute things.
+	cd "${OUT}"
+	# The tests also want keys to be in the current dir.
+	# .pub.pem files are generated on the "gen" directory.
+	cp "${S}"/unittest_key*.pem ./ || die
+	cp gen/include/update_engine/unittest_key*.pub.pem ./ || die
+
+	# The unit tests check to make sure the minor version value in
+	# update_engine.conf match the constants in update engine, so we need to be
+	# able to access this file.
+	cp "${S}/update_engine.conf" ./
+
+	# If GTEST_FILTER isn't provided, we run two subsets of tests
+	# separately: the set of non-privileged  tests (run normally)
+	# followed by the set of privileged tests (run as root).
+	# Otherwise, we pass the GTEST_FILTER environment variable as
+	# an argument and run all the tests as root; while this might
+	# lead to tests running with excess privileges, it is necessary
+	# in order to be able to run every test, including those that
+	# need to be run with root privileges.
+	if [[ -z "${GTEST_FILTER}" ]]; then
+		platform_test "run" "${unittests_binary}" 0 '-*.RunAsRoot*'
+		platform_test "run" "${unittests_binary}" 1 '*.RunAsRoot*'
+	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() {
+	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
+
+	if use systemd; then
+		systemd_dounit "${FILESDIR}"/update-engine.service
+		systemd_enable_service multi-user.target update-engine.service
+	else
+		# Install upstart script
+		insinto /etc/init
+		doins init/update-engine.conf
+	fi
+
+	# Install DBus configuration
+	insinto /etc/dbus-1/system.d
+	doins UpdateEngine.conf
+
+	# TODO(b/182168271): Remove minios flag and public key from update_engine.
+	# Add the public key only when signing for MiniOs.
+	if use minios; then
+		insinto "/build/initramfs"
+		doins scripts/update_payload/update-payload-key.pub.pem
+	fi
+
+	platform_fuzzer_install "${S}"/OWNERS \
+				"${OUT}"/update_engine_omaha_request_action_fuzzer \
+				--dict "${S}"/fuzz/xml.dict
+	platform_fuzzer_install "${S}"/OWNERS \
+				"${OUT}"/update_engine_delta_performer_fuzzer
+}
diff --git a/chromeos-base/update_engine/update_engine-9999.ebuild b/chromeos-base/update_engine/update_engine-9999.ebuild
index 71dad03..a1fe931 100644
--- a/chromeos-base/update_engine/update_engine-9999.ebuild
+++ b/chromeos-base/update_engine/update_engine-9999.ebuild
@@ -5,6 +5,7 @@
 
 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
@@ -20,7 +21,7 @@
 
 LICENSE="Apache-2.0"
 KEYWORDS="~*"
-IUSE="cfm cros_host cros_p2p dlc fuzzer -hwid_override +power_management systemd"
+IUSE="cfm cros_host cros_p2p dlc fuzzer -hwid_override minios +power_management systemd"
 
 COMMON_DEPEND="
 	app-arch/bzip2:=
@@ -124,6 +125,13 @@
 	insinto /etc/dbus-1/system.d
 	doins UpdateEngine.conf
 
+	# TODO(b/182168271): Remove minios flag and public key from update_engine.
+	# Add the public key only when signing for MiniOs.
+	if use minios; then
+		insinto "/build/initramfs"
+		doins scripts/update_payload/update-payload-key.pub.pem
+	fi
+
 	platform_fuzzer_install "${S}"/OWNERS \
 				"${OUT}"/update_engine_omaha_request_action_fuzzer \
 				--dict "${S}"/fuzz/xml.dict
diff --git a/chromeos-base/update_payload/update_payload-0.0.1-r338.ebuild b/chromeos-base/update_payload/update_payload-0.0.1-r338.ebuild
deleted file mode 100644
index 4af63d7..0000000
--- a/chromeos-base/update_payload/update_payload-0.0.1-r338.ebuild
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="6a8a4964b0ccae1b47b38b2e55fd4132c15a8b63"
-CROS_WORKON_TREE="e5e30f3e93b9a03cb1dddc5fb853009ea2fb4294"
-PYTHON_COMPAT=( python3_{6,7} )
-
-CROS_WORKON_LOCALNAME="aosp/system/update_engine"
-CROS_WORKON_PROJECT="aosp/platform/system/update_engine"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-
-inherit cros-workon python-r1
-
-DESCRIPTION="Chrome OS Update Engine Update Payload Scripts"
-HOMEPAGE="https://chromium.googlesource.com/aosp/platform/system/update_engine"
-
-LICENSE="Apache-2.0"
-KEYWORDS="*"
-
-RDEPEND="
-	dev-python/protobuf-python[${PYTHON_USEDEP}]
-	!<chromeos-base/devserver-0.0.3
-"
-DEPEND=""
-
-src_install() {
-	# Install update_payload scripts.
-	install_update_payload() {
-		# TODO(crbug.com/771085): Clear the SYSROOT var as python will use
-		# that to define the sitedir which means we end up installing into
-		# a path like /build/$BOARD/build/$BOARD/xxx.  This is a bug in the
-		# core python logic, but this is breaking moblab, so hack it for now.
-		insinto "$(python_get_sitedir | sed "s:^${SYSROOT}::")/update_payload"
-		doins $(printf '%s\n' scripts/update_payload/*.py | grep -v unittest)
-		doins scripts/update_payload/update-payload-key.pub.pem
-	}
-	python_foreach_impl install_update_payload
-
-	# Install paycheck.py script as check_update_payload.
-	newbin scripts/paycheck.py check_update_payload
-}
-
-src_test() {
-	# Run update_payload unittests.
-	cd "${T}" || die
-	unpack "${S}"/sample_images/{sample_payloads.tar.xz,sample_images.tar.bz2}
-	cd "${S}"/scripts || die
-	python_test() {
-		./run_unittests || die
-	}
-	python_foreach_impl python_test
-}
diff --git a/chromeos-base/update_payload/update_payload-0.0.1-r388.ebuild b/chromeos-base/update_payload/update_payload-0.0.1-r388.ebuild
new file mode 100644
index 0000000..de7e92a
--- /dev/null
+++ b/chromeos-base/update_payload/update_payload-0.0.1-r388.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="375fa7a2d8b977c1744f288d0e6b0e4592e2ebbc"
+CROS_WORKON_TREE="8147e94e7ebea6c5e875e4722b2e064d0ba861c4"
+PYTHON_COMPAT=( python3_{6,7} )
+
+CROS_WORKON_LOCALNAME="aosp/system/update_engine"
+CROS_WORKON_PROJECT="aosp/platform/system/update_engine"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+
+inherit cros-workon python-r1
+
+DESCRIPTION="Chrome OS Update Engine Update Payload Scripts"
+HOMEPAGE="https://chromium.googlesource.com/aosp/platform/system/update_engine"
+
+LICENSE="Apache-2.0"
+KEYWORDS="*"
+
+RDEPEND="
+	dev-python/protobuf-python[${PYTHON_USEDEP}]
+	!<chromeos-base/devserver-0.0.3
+"
+DEPEND=""
+
+src_install() {
+	# Install update_payload scripts.
+	install_update_payload() {
+		# TODO(crbug.com/771085): Clear the SYSROOT var as python will use
+		# that to define the sitedir which means we end up installing into
+		# a path like /build/$BOARD/build/$BOARD/xxx.  This is a bug in the
+		# core python logic, but this is breaking moblab, so hack it for now.
+		insinto "$(python_get_sitedir | sed "s:^${SYSROOT}::")/update_payload"
+		doins $(printf '%s\n' scripts/update_payload/*.py | grep -v unittest)
+		doins scripts/update_payload/update-payload-key.pub.pem
+	}
+	python_foreach_impl install_update_payload
+
+	# Install paycheck.py script as check_update_payload.
+	newbin scripts/paycheck.py check_update_payload
+}
+
+src_test() {
+	# Run update_payload unittests.
+	cd "${T}" || die
+	unpack "${S}"/sample_images/{sample_payloads.tar.xz,sample_images.tar.bz2}
+	cd "${S}"/scripts || die
+	python_test() {
+		./run_unittests || die
+	}
+	python_foreach_impl python_test
+}
diff --git a/chromeos-base/update_payload/update_payload-9999.ebuild b/chromeos-base/update_payload/update_payload-9999.ebuild
index 093033d..a1909fa 100644
--- a/chromeos-base/update_payload/update_payload-9999.ebuild
+++ b/chromeos-base/update_payload/update_payload-9999.ebuild
@@ -7,6 +7,7 @@
 
 CROS_WORKON_LOCALNAME="aosp/system/update_engine"
 CROS_WORKON_PROJECT="aosp/platform/system/update_engine"
+CROS_WORKON_EGIT_BRANCH="master"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 
 inherit cros-workon python-r1
diff --git a/chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r72.ebuild b/chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r72.ebuild
deleted file mode 100644
index ba68ee2f..0000000
--- a/chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r72.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "977d7a50e6c3ca7269ed8703960e004ff32baa90" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk ureadahead-diff .gn"
-
-PLATFORM_SUBDIR="ureadahead-diff"
-
-inherit cros-workon platform
-
-DESCRIPTION="Calculate common part and difference of two ureadahead packs"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/ureadahead-diff"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-
-src_install() {
-	dobin "${OUT}"/ureadahead-diff
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/ureadahead-diff_testrunner"
-}
diff --git a/chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r98.ebuild b/chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r98.ebuild
new file mode 100644
index 0000000..527dfad
--- /dev/null
+++ b/chromeos-base/ureadahead-diff/ureadahead-diff-0.0.1-r98.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a3eac5d15a46a63784099b3fe4af44a89d376a6f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk ureadahead-diff .gn"
+
+PLATFORM_SUBDIR="ureadahead-diff"
+
+inherit cros-workon platform
+
+DESCRIPTION="Calculate common part and difference of two ureadahead packs"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/ureadahead-diff"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+
+src_install() {
+	dobin "${OUT}"/ureadahead-diff
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/ureadahead-diff_testrunner"
+}
diff --git a/chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r288.ebuild b/chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r288.ebuild
deleted file mode 100644
index 6b55608..0000000
--- a/chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r288.ebuild
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5a6636098bf2fd68219e56d1d1851df760d07dec"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "5dc493e2caaa42bf79c32b35650161dfbdd62747" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 metrics usb_bouncer .gn"
-
-PLATFORM_SUBDIR="usb_bouncer"
-
-inherit cros-workon platform user cros-fuzzer cros-sanitizers
-
-DESCRIPTION="Manage the usbguard whitelist"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/usb_bouncer/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="fuzzer"
-
-COMMON_DEPEND="
-	fuzzer? ( dev-libs/libprotobuf-mutator:= )
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/minijail:=
-	dev-libs/openssl:0=
-	sys-apps/usbguard:=
-"
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}
-	chromeos-base/session_manager-client:="
-
-src_install() {
-	insinto /lib/udev/rules.d
-	doins "${S}/40-usb-bouncer.rules"
-
-	cd "${OUT}"
-	dosbin usb_bouncer
-
-	insinto /etc/dbus-1/system.d
-	doins "${S}/UsbBouncer.conf"
-
-	insinto /usr/share/policy
-	newins "${S}/seccomp/usb_bouncer-seccomp-${ARCH}.policy" usb_bouncer-seccomp.policy
-
-	insinto /etc/init
-	doins "${S}"/init/usb_bouncer.conf
-
-	local daemon_store="/etc/daemon-store/usb_bouncer"
-	dodir "${daemon_store}"
-	fperms 0700 "${daemon_store}"
-	fowners usb_bouncer:usb_bouncer "${daemon_store}"
-
-	local f="${OUT}/usb_bouncer_fuzzer"
-	fuzzer_install "${S}/OWNERS" "${f}"
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/run_tests"
-}
-
-pkg_setup() {
-	enewuser usb_bouncer
-	enewgroup usb_bouncer
-	cros-workon_pkg_setup
-}
diff --git a/chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r362.ebuild b/chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r362.ebuild
new file mode 100644
index 0000000..065af19
--- /dev/null
+++ b/chromeos-base/usb_bouncer/usb_bouncer-0.0.1-r362.ebuild
@@ -0,0 +1,73 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="0553127ef2b660a5c71f12a9417ed4ad35f07120"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "21fac63ce5008231f93827abac8fcfc8aa5bfae7" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 metrics usb_bouncer .gn"
+
+PLATFORM_SUBDIR="usb_bouncer"
+
+inherit tmpfiles cros-workon platform user cros-fuzzer cros-sanitizers
+
+DESCRIPTION="Manage the usbguard whitelist"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/usb_bouncer/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="fuzzer"
+
+COMMON_DEPEND="
+	fuzzer? ( dev-libs/libprotobuf-mutator:= )
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/minijail:=
+	dev-libs/openssl:0=
+	sys-apps/usbguard:=
+"
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}
+	chromeos-base/session_manager-client:="
+
+src_install() {
+	insinto /lib/udev/rules.d
+	doins "${S}/40-usb-bouncer.rules"
+
+	dotmpfiles tmpfiles.d/*.conf
+
+	cd "${OUT}" || die
+	dosbin usb_bouncer
+
+	insinto /etc/dbus-1/system.d
+	doins "${S}/UsbBouncer.conf"
+
+	insinto /usr/share/policy
+	newins "${S}/seccomp/usb_bouncer-seccomp-${ARCH}.policy" usb_bouncer-seccomp.policy
+
+	insinto /etc/init
+	doins "${S}"/init/usb_bouncer.conf
+
+	local daemon_store="/etc/daemon-store/usb_bouncer"
+	dodir "${daemon_store}"
+	fperms 0700 "${daemon_store}"
+	fowners usb_bouncer:usb_bouncer "${daemon_store}"
+
+	local f="${OUT}/usb_bouncer_fuzzer"
+	fuzzer_install "${S}/OWNERS" "${f}"
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/run_tests"
+}
+
+pkg_setup() {
+	enewuser usb_bouncer
+	enewgroup usb_bouncer
+	cros-workon_pkg_setup
+}
diff --git a/chromeos-base/usb_bouncer/usb_bouncer-9999.ebuild b/chromeos-base/usb_bouncer/usb_bouncer-9999.ebuild
index 5686c2d..c4017f3 100644
--- a/chromeos-base/usb_bouncer/usb_bouncer-9999.ebuild
+++ b/chromeos-base/usb_bouncer/usb_bouncer-9999.ebuild
@@ -12,7 +12,7 @@
 
 PLATFORM_SUBDIR="usb_bouncer"
 
-inherit cros-workon platform user cros-fuzzer cros-sanitizers
+inherit tmpfiles cros-workon platform user cros-fuzzer cros-sanitizers
 
 DESCRIPTION="Manage the usbguard whitelist"
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/usb_bouncer/"
@@ -37,7 +37,9 @@
 	insinto /lib/udev/rules.d
 	doins "${S}/40-usb-bouncer.rules"
 
-	cd "${OUT}"
+	dotmpfiles tmpfiles.d/*.conf
+
+	cd "${OUT}" || die
 	dosbin usb_bouncer
 
 	insinto /etc/dbus-1/system.d
diff --git a/chromeos-base/userfeedback/userfeedback-0.0.1-r2898.ebuild b/chromeos-base/userfeedback/userfeedback-0.0.1-r2898.ebuild
deleted file mode 100644
index ca23981..0000000
--- a/chromeos-base/userfeedback/userfeedback-0.0.1-r2898.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="3bedb01f0bbf8767db84c3dace0a1a126ce304b5"
-CROS_WORKON_TREE="cf316d8f26c5d0d66cfb049d64c4283722a06059"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_DESTDIR="${S}"
-CROS_WORKON_SUBTREE="userfeedback"
-
-inherit cros-workon systemd
-
-DESCRIPTION="Log scripts used by userfeedback to report cros system information"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/userfeedback/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="systemd X"
-
-RDEPEND="chromeos-base/chromeos-init
-	chromeos-base/crash-reporter
-	chromeos-base/modem-utilities
-	chromeos-base/vboot_reference
-	media-libs/fontconfig
-	media-sound/alsa-utils
-	sys-apps/coreboot-utils
-	sys-apps/mosys
-	sys-apps/net-tools
-	sys-apps/pciutils
-	sys-apps/usbutils
-	X? ( x11-apps/setxkbmap )"
-
-DEPEND=""
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/userfeedback"
-}
-
-src_install() {
-	exeinto /usr/share/userfeedback/scripts
-	doexe scripts/*
-
-	# Install init scripts.
-	if use systemd; then
-		local units=("firmware-version.service")
-		systemd_dounit init/*.service
-		for unit in "${units[@]}"; do
-			systemd_enable_service system-services.target ${unit}
-		done
-	else
-		insinto /etc/init
-		doins init/*.conf
-	fi
-}
diff --git a/chromeos-base/userfeedback/userfeedback-0.0.1-r2901.ebuild b/chromeos-base/userfeedback/userfeedback-0.0.1-r2901.ebuild
new file mode 100644
index 0000000..7f3ff15
--- /dev/null
+++ b/chromeos-base/userfeedback/userfeedback-0.0.1-r2901.ebuild
@@ -0,0 +1,57 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="a58e705dd9b2ae2657c87db0ed3e28da2056de28"
+CROS_WORKON_TREE="cdcb561649747aa33814231fe176727b71a94286"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_DESTDIR="${S}"
+CROS_WORKON_SUBTREE="userfeedback"
+
+inherit cros-workon systemd
+
+DESCRIPTION="Log scripts used by userfeedback to report cros system information"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/userfeedback/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="systemd X"
+
+RDEPEND="chromeos-base/chromeos-init
+	chromeos-base/crash-reporter
+	chromeos-base/modem-utilities
+	chromeos-base/vboot_reference
+	media-libs/fontconfig
+	media-sound/alsa-utils
+	sys-apps/coreboot-utils
+	sys-apps/mosys
+	sys-apps/net-tools
+	sys-apps/pciutils
+	sys-apps/usbutils
+	X? ( x11-apps/setxkbmap )"
+
+DEPEND=""
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/userfeedback"
+}
+
+src_install() {
+	exeinto /usr/share/userfeedback/scripts
+	doexe scripts/*
+
+	# Install init scripts.
+	if use systemd; then
+		local units=("firmware-version.service")
+		systemd_dounit init/*.service
+		for unit in "${units[@]}"; do
+			systemd_enable_service system-services.target ${unit}
+		done
+	else
+		insinto /etc/init
+		doins init/*.conf
+	fi
+}
diff --git a/chromeos-base/userspace_touchpad/userspace_touchpad-0.0.1-r1215.ebuild b/chromeos-base/userspace_touchpad/userspace_touchpad-0.0.1-r1215.ebuild
deleted file mode 100644
index 84198e031..0000000
--- a/chromeos-base/userspace_touchpad/userspace_touchpad-0.0.1-r1215.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_DESTDIR="${S}"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk userspace_touchpad .gn"
-
-PLATFORM_SUBDIR="userspace_touchpad"
-
-inherit cros-workon platform
-
-DESCRIPTION="Userspace Touchpad"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/userspace_touchpad/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-IUSE=""
-KEYWORDS="*"
-
-src_install() {
-	dobin "${OUT}/userspace_touchpad"
-
-	insinto "/etc/init"
-	doins "userspace_touchpad.conf"
-}
diff --git a/chromeos-base/userspace_touchpad/userspace_touchpad-0.0.1-r1240.ebuild b/chromeos-base/userspace_touchpad/userspace_touchpad-0.0.1-r1240.ebuild
new file mode 100644
index 0000000..888e8c0
--- /dev/null
+++ b/chromeos-base/userspace_touchpad/userspace_touchpad-0.0.1-r1240.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_DESTDIR="${S}"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk userspace_touchpad .gn"
+
+PLATFORM_SUBDIR="userspace_touchpad"
+
+inherit cros-workon platform
+
+DESCRIPTION="Userspace Touchpad"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/userspace_touchpad/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+IUSE=""
+KEYWORDS="*"
+
+src_install() {
+	dobin "${OUT}/userspace_touchpad"
+
+	insinto "/etc/init"
+	doins "userspace_touchpad.conf"
+}
diff --git a/chromeos-base/vboot_reference-tests/vboot_reference-tests-0.0.1-r1929.ebuild b/chromeos-base/vboot_reference-tests/vboot_reference-tests-0.0.1-r1929.ebuild
deleted file mode 100644
index 99bcdfd..0000000
--- a/chromeos-base/vboot_reference-tests/vboot_reference-tests-0.0.1-r1929.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="6f6efdc6fa38ed3bcacfa9e152f415d50ee8bad0"
-CROS_WORKON_TREE="06c3486af100c39ddc9cb59381d087b4f2ed1634"
-CROS_WORKON_PROJECT="chromiumos/platform/vboot_reference"
-
-inherit cros-workon autotest
-
-DESCRIPTION="vboot tests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/vboot_reference/"
-SRC_URI=""
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-# Enable autotest by default.
-IUSE="${IUSE} +autotest"
-
-IUSE_TESTS="
-	+tests_firmware_VbootCrypto
-"
-
-IUSE="${IUSE} ${IUSE_TESTS}"
-
-CROS_WORKON_LOCALNAME=platform/vboot_reference
-
-# path from root of repo
-AUTOTEST_CLIENT_SITE_TESTS=autotest/client
-
-src_compile() {
-	# for Makefile
-	export VBOOT_SRC_DIR=${WORKDIR}/${P}
-	autotest_src_compile
-}
diff --git a/chromeos-base/vboot_reference-tests/vboot_reference-tests-0.0.1-r1974.ebuild b/chromeos-base/vboot_reference-tests/vboot_reference-tests-0.0.1-r1974.ebuild
new file mode 100644
index 0000000..967ed7e
--- /dev/null
+++ b/chromeos-base/vboot_reference-tests/vboot_reference-tests-0.0.1-r1974.ebuild
@@ -0,0 +1,35 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="5c0fcf0f8725b98043a4b18f36e21489375d133a"
+CROS_WORKON_TREE="3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c"
+CROS_WORKON_PROJECT="chromiumos/platform/vboot_reference"
+
+inherit cros-workon autotest
+
+DESCRIPTION="vboot tests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/vboot_reference/"
+SRC_URI=""
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+# Enable autotest by default.
+IUSE="${IUSE} +autotest"
+
+IUSE_TESTS="
+	+tests_firmware_VbootCrypto
+"
+
+IUSE="${IUSE} ${IUSE_TESTS}"
+
+CROS_WORKON_LOCALNAME=platform/vboot_reference
+
+# path from root of repo
+AUTOTEST_CLIENT_SITE_TESTS=autotest/client
+
+src_compile() {
+	# for Makefile
+	export VBOOT_SRC_DIR=${WORKDIR}/${P}
+	autotest_src_compile
+}
diff --git a/chromeos-base/vboot_reference/vboot_reference-1.0-r2068.ebuild b/chromeos-base/vboot_reference/vboot_reference-1.0-r2068.ebuild
deleted file mode 100644
index db365b0..0000000
--- a/chromeos-base/vboot_reference/vboot_reference-1.0-r2068.ebuild
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="6f6efdc6fa38ed3bcacfa9e152f415d50ee8bad0"
-CROS_WORKON_TREE="06c3486af100c39ddc9cb59381d087b4f2ed1634"
-CROS_WORKON_PROJECT="chromiumos/platform/vboot_reference"
-CROS_WORKON_LOCALNAME="platform/vboot_reference"
-
-inherit cros-debug cros-fuzzer cros-sanitizers cros-workon
-
-DESCRIPTION="Chrome OS verified boot tools"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="cros_host dev_debug_force fuzzer pd_sync test tpmtests tpm tpm2 tpm2_simulator"
-
-REQUIRED_USE="?? ( tpm2 tpm )"
-
-COMMON_DEPEND="dev-libs/libzip:=
-	dev-libs/openssl:=
-	sys-apps/util-linux:="
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-get_build_dir() {
-	echo "${S}/build-main"
-}
-
-src_configure() {
-	# Determine sanitizer flags. This is necessary because the Makefile
-	# purposely ignores CFLAGS from the environment. So we collect the
-	# sanitizer flags and pass just them to the Makefile explicitly.
-	SANITIZER_CFLAGS=
-	append-flags() {
-		SANITIZER_CFLAGS+=" $*"
-	}
-	sanitizers-setup-env
-	if use_sanitizers; then
-		# Disable alignment sanitization, https://crbug.com/1015908 .
-		SANITIZER_CFLAGS+=" -fno-sanitize=alignment"
-
-		# Run sanitizers with useful log output.
-		SANITIZER_CFLAGS+=" -DVBOOT_DEBUG"
-
-		# Suppressions for unit tests.
-		if use test; then
-			# Do not check memory leaks or odr violations in address sanitizer.
-			# https://crbug.com/1015908 .
-			export ASAN_OPTIONS+=":detect_leaks=0:detect_odr_violation=0:"
-			# Suppress array bound checks, https://crbug.com/1082636 .
-			SANITIZER_CFLAGS+=" -fno-sanitize=array-bounds"
-		fi
-	fi
-	cros-debug-add-NDEBUG
-	default
-}
-
-vemake() {
-	emake \
-		SRCDIR="${S}" \
-		LIBDIR="$(get_libdir)" \
-		ARCH=$(tc-arch) \
-		SDK_BUILD=$(usev cros_host) \
-		TPM2_MODE=$(usev tpm2) \
-		PD_SYNC=$(usev pd_sync) \
-		DEV_DEBUG_FORCE=$(usev dev_debug_force) \
-		TPM2_SIMULATOR="$(usev tpm2_simulator)" \
-		FUZZ_FLAGS="${SANITIZER_CFLAGS}" \
-		"$@"
-}
-
-src_compile() {
-	mkdir "$(get_build_dir)"
-	tc-export CC AR CXX PKG_CONFIG
-	# vboot_reference knows the flags to use
-	unset CFLAGS
-	vemake BUILD="$(get_build_dir)" all $(usex fuzzer fuzzers '')
-}
-
-src_test() {
-	! use amd64 && ! use x86 && ewarn "Skipping unittests for non-x86" && return 0
-	vemake BUILD="$(get_build_dir)" runtests
-}
-
-src_install() {
-	einfo "Installing programs"
-	vemake \
-		BUILD="$(get_build_dir)" \
-		DESTDIR="${D}" \
-		install install_dev
-
-	if use tpmtests; then
-		into /usr
-		# copy files starting with tpmtest, but skip .d files.
-		dobin "$(get_build_dir)"/tests/tpm_lite/tpmtest*[^.]?
-		dobin "$(get_build_dir)"/utility/tpm_set_readsrkpub
-	fi
-
-	if use fuzzer; then
-		einfo "Installing fuzzers"
-		fuzzer_install "${S}"/OWNERS "$(get_build_dir)"/tests/cgpt_fuzzer
-		fuzzer_install "${S}"/OWNERS "$(get_build_dir)"/tests/vb2_keyblock_fuzzer
-		fuzzer_install "${S}"/OWNERS "$(get_build_dir)"/tests/vb2_preamble_fuzzer
-	fi
-}
diff --git a/chromeos-base/vboot_reference/vboot_reference-1.0-r2113.ebuild b/chromeos-base/vboot_reference/vboot_reference-1.0-r2113.ebuild
new file mode 100644
index 0000000..aa57616
--- /dev/null
+++ b/chromeos-base/vboot_reference/vboot_reference-1.0-r2113.ebuild
@@ -0,0 +1,108 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="5c0fcf0f8725b98043a4b18f36e21489375d133a"
+CROS_WORKON_TREE="3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c"
+CROS_WORKON_PROJECT="chromiumos/platform/vboot_reference"
+CROS_WORKON_LOCALNAME="platform/vboot_reference"
+
+inherit cros-debug cros-fuzzer cros-sanitizers cros-workon
+
+DESCRIPTION="Chrome OS verified boot tools"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cros_host dev_debug_force fuzzer pd_sync test tpmtests tpm tpm2 tpm2_simulator vtpm_proxy"
+
+REQUIRED_USE="?? ( tpm2 tpm )"
+
+COMMON_DEPEND="dev-libs/libzip:=
+	dev-libs/openssl:=
+	sys-apps/util-linux:="
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+get_build_dir() {
+	echo "${S}/build-main"
+}
+
+src_configure() {
+	# Determine sanitizer flags. This is necessary because the Makefile
+	# purposely ignores CFLAGS from the environment. So we collect the
+	# sanitizer flags and pass just them to the Makefile explicitly.
+	SANITIZER_CFLAGS=
+	append-flags() {
+		SANITIZER_CFLAGS+=" $*"
+	}
+	sanitizers-setup-env
+	if use_sanitizers; then
+		# Disable alignment sanitization, https://crbug.com/1015908 .
+		SANITIZER_CFLAGS+=" -fno-sanitize=alignment"
+
+		# Run sanitizers with useful log output.
+		SANITIZER_CFLAGS+=" -DVBOOT_DEBUG"
+
+		# Suppressions for unit tests.
+		if use test; then
+			# Do not check memory leaks or odr violations in address sanitizer.
+			# https://crbug.com/1015908 .
+			export ASAN_OPTIONS+=":detect_leaks=0:detect_odr_violation=0:"
+			# Suppress array bound checks, https://crbug.com/1082636 .
+			SANITIZER_CFLAGS+=" -fno-sanitize=array-bounds"
+		fi
+	fi
+	cros-debug-add-NDEBUG
+	default
+}
+
+vemake() {
+	emake \
+		SRCDIR="${S}" \
+		LIBDIR="$(get_libdir)" \
+		ARCH=$(tc-arch) \
+		SDK_BUILD=$(usev cros_host) \
+		TPM2_MODE=$(usev tpm2) \
+		PD_SYNC=$(usev pd_sync) \
+		DEV_DEBUG_FORCE=$(usev dev_debug_force) \
+		TPM2_SIMULATOR="$(usev tpm2_simulator)" \
+		VTPM_PROXY="$(usev vtpm_proxy)" \
+		FUZZ_FLAGS="${SANITIZER_CFLAGS}" \
+		"$@"
+}
+
+src_compile() {
+	mkdir "$(get_build_dir)"
+	tc-export CC AR CXX PKG_CONFIG
+	# vboot_reference knows the flags to use
+	unset CFLAGS
+	vemake BUILD="$(get_build_dir)" all $(usex fuzzer fuzzers '')
+}
+
+src_test() {
+	! use amd64 && ! use x86 && ewarn "Skipping unittests for non-x86" && return 0
+	vemake BUILD="$(get_build_dir)" runtests
+}
+
+src_install() {
+	einfo "Installing programs"
+	vemake \
+		BUILD="$(get_build_dir)" \
+		DESTDIR="${D}" \
+		install install_dev
+
+	if use tpmtests; then
+		into /usr
+		# copy files starting with tpmtest, but skip .d files.
+		dobin "$(get_build_dir)"/tests/tpm_lite/tpmtest*[^.]?
+		dobin "$(get_build_dir)"/utility/tpm_set_readsrkpub
+	fi
+
+	if use fuzzer; then
+		einfo "Installing fuzzers"
+		fuzzer_install "${S}"/OWNERS "$(get_build_dir)"/tests/cgpt_fuzzer
+		fuzzer_install "${S}"/OWNERS "$(get_build_dir)"/tests/vb2_keyblock_fuzzer
+		fuzzer_install "${S}"/OWNERS "$(get_build_dir)"/tests/vb2_preamble_fuzzer
+	fi
+}
diff --git a/chromeos-base/vboot_reference/vboot_reference-9999.ebuild b/chromeos-base/vboot_reference/vboot_reference-9999.ebuild
index 8eb67fb..fd1a413 100644
--- a/chromeos-base/vboot_reference/vboot_reference-9999.ebuild
+++ b/chromeos-base/vboot_reference/vboot_reference-9999.ebuild
@@ -12,7 +12,7 @@
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
-IUSE="cros_host dev_debug_force fuzzer pd_sync test tpmtests tpm tpm2 tpm2_simulator"
+IUSE="cros_host dev_debug_force fuzzer pd_sync test tpmtests tpm tpm2 tpm2_simulator vtpm_proxy"
 
 REQUIRED_USE="?? ( tpm2 tpm )"
 
@@ -65,6 +65,7 @@
 		PD_SYNC=$(usev pd_sync) \
 		DEV_DEBUG_FORCE=$(usev dev_debug_force) \
 		TPM2_SIMULATOR="$(usev tpm2_simulator)" \
+		VTPM_PROXY="$(usev vtpm_proxy)" \
 		FUZZ_FLAGS="${SANITIZER_CFLAGS}" \
 		"$@"
 }
diff --git a/chromeos-base/verity/verity-0.0.1-r156.ebuild b/chromeos-base/verity/verity-0.0.1-r156.ebuild
deleted file mode 100644
index 4fc0036..0000000
--- a/chromeos-base/verity/verity-0.0.1-r156.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "2b6d4230c92e83e39209823855064483eed04754" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk verity .gn"
-
-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="*"
-
-src_install() {
-	dolib.a "${OUT}"/libdm-bht.a
-	dobin "${OUT}"/verity
-
-	insinto /usr/include/verity
-	doins dm-bht.h dm-bht-userspace.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-r186.ebuild b/chromeos-base/verity/verity-0.0.1-r186.ebuild
new file mode 100644
index 0000000..ae64559
--- /dev/null
+++ b/chromeos-base/verity/verity-0.0.1-r186.ebuild
@@ -0,0 +1,39 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="b773f48488a50bc8361a6f2cf9938e418eccf434"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "33de53739dbe0fd2911d58694b622539ef0a2416" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk verity .gn"
+
+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="*"
+
+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-9999.ebuild b/chromeos-base/verity/verity-9999.ebuild
index 1923a8c..8f8178d 100644
--- a/chromeos-base/verity/verity-9999.ebuild
+++ b/chromeos-base/verity/verity-9999.ebuild
@@ -20,11 +20,14 @@
 KEYWORDS="~*"
 
 src_install() {
-	dolib.a "${OUT}"/libdm-bht.a
 	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
+	doins dm-bht.h dm-bht-userspace.h file_hasher.h
 	cd include || die
 	doins -r asm-generic
 }
diff --git a/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r791.ebuild b/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r791.ebuild
deleted file mode 100644
index 2c8b2c4..0000000
--- a/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r791.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="d055c04b179d3265be2525a5edba3f317c79308d"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "9bda1701529abe12c4692ef96c11a0e4d5687883" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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/+/master/virtual_file_provider"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="arcvm"
-
-RDEPEND="
-	sys-fs/fuse:=
-	sys-libs/libcap:=
-"
-
-DEPEND="${RDEPEND}
-	chromeos-base/system_api:="
-
-
-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
-
-	insinto /usr/share/dbus-1/system-services
-	doins org.chromium.VirtualFileProvider.service
-}
-
-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-r822.ebuild b/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r822.ebuild
new file mode 100644
index 0000000..9387baa
--- /dev/null
+++ b/chromeos-base/virtual-file-provider/virtual-file-provider-0.0.1-r822.ebuild
@@ -0,0 +1,60 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "6012501ec6294d801b43321009548fb1528f3ef9" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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/+/master/virtual_file_provider"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="arcvm"
+
+RDEPEND="
+	sys-fs/fuse:=
+	sys-libs/libcap:=
+"
+
+DEPEND="${RDEPEND}
+	chromeos-base/system_api:="
+
+
+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-9999.ebuild b/chromeos-base/virtual-file-provider/virtual-file-provider-9999.ebuild
index 4d7df62..545f2ed 100644
--- a/chromeos-base/virtual-file-provider/virtual-file-provider-9999.ebuild
+++ b/chromeos-base/virtual-file-provider/virtual-file-provider-9999.ebuild
@@ -42,9 +42,10 @@
 
 	insinto /etc/init
 	doins init/virtual-file-provider.conf
+	doins init/virtual-file-provider-cgroup.conf
 
-	insinto /usr/share/dbus-1/system-services
-	doins org.chromium.VirtualFileProvider.service
+	insinto /usr/share/power_manager
+	doins powerd_prefs/suspend_freezer_deps_virtual-file-provider
 }
 
 pkg_preinst() {
diff --git a/chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r218.ebuild b/chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r218.ebuild
deleted file mode 100644
index 352b8dd..0000000
--- a/chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r218.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("b05e4a6b92b2cfe608b6cd8d5d37168680fc080e" "b83f5b06c307bf2ee63146c31bf182fc3bf06350")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "f46d4f200713a1e4f17d0f391b74f985120cdfcb")
-CROS_WORKON_LOCALNAME=("platform2" "third_party/virtual-usb-printer")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/virtual-usb-printer")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/virtual-usb-printer")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_SUBDIR="virtual-usb-printer"
-
-inherit cros-workon platform
-
-DESCRIPTION="Used with USBIP to provide a virtual USB printer for testing."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/virtual-usb-printer/"
-
-LICENSE="GPL-2"
-KEYWORDS="*"
-
-IUSE=""
-
-RDEPEND="
-	net-misc/usbip:=
-"
-
-DEPEND="${RDEPEND}"
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/escl-manager-testrunner"
-	platform_test "run" "${OUT}/http-util-testrunner"
-	platform_test "run" "${OUT}/ipp-manager-testrunner"
-	platform_test "run" "${OUT}/ipp-util-testrunner"
-	platform_test "run" "${OUT}/load-config-testrunner"
-	platform_test "run" "${OUT}/smart-buffer-testrunner"
-}
-
-src_install() {
-	dobin "${OUT}"/virtual-usb-printer
-	insinto /etc/virtual-usb-printer
-	doins config/escl_capabilities.json
-	doins config/ipp_attributes.json
-	doins config/ippusb_printer.json
-	doins config/usb_printer.json
-}
diff --git a/chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r274.ebuild b/chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r274.ebuild
new file mode 100644
index 0000000..43990b1
--- /dev/null
+++ b/chromeos-base/virtual-usb-printer/virtual-usb-printer-0.0.1-r274.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("f34cf3a06f7b17b7829185630d886a5d9d3f0e75" "4c854f427b5eb25e4d2e420a7664191d43c5270d")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "a1a60f36b19b903f80c2373a9b3bea197676ecae")
+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" "master")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/virtual-usb-printer")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+
+PLATFORM_SUBDIR="virtual-usb-printer"
+
+inherit cros-workon platform
+
+DESCRIPTION="Used with USBIP to provide a virtual USB printer for testing."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/virtual-usb-printer/"
+
+LICENSE="GPL-2"
+KEYWORDS="*"
+
+IUSE=""
+
+RDEPEND="
+	chromeos-base/libipp:=
+	dev-libs/libxml2:=
+	dev-libs/protobuf:=
+	net-misc/usbip:=
+	virtual/jpeg:0=
+"
+
+DEPEND="${RDEPEND}"
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/cardinality-helper-testrunner"
+	platform_test "run" "${OUT}/escl-manager-testrunner"
+	platform_test "run" "${OUT}/http-util-testrunner"
+	platform_test "run" "${OUT}/ipp-manager-testrunner"
+	platform_test "run" "${OUT}/ipp-matching-testrunner"
+	platform_test "run" "${OUT}/ipp-matching-validation-testrunner"
+	platform_test "run" "${OUT}/ipp-util-testrunner"
+	platform_test "run" "${OUT}/jpeg-util-testrunner"
+	platform_test "run" "${OUT}/load-config-testrunner"
+	platform_test "run" "${OUT}/smart-buffer-testrunner"
+}
+
+src_install() {
+	dobin "${OUT}"/virtual-usb-printer
+	insinto /etc/virtual-usb-printer
+	doins config/escl_capabilities.json
+	doins config/ipp_attributes.json
+	doins config/ippusb_printer.json
+	doins config/usb_printer.json
+}
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 97d47ba..c15da0c 100644
--- a/chromeos-base/virtual-usb-printer/virtual-usb-printer-9999.ebuild
+++ b/chromeos-base/virtual-usb-printer/virtual-usb-printer-9999.ebuild
@@ -5,6 +5,7 @@
 
 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" "master")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/virtual-usb-printer")
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_SUBTREE=("common-mk .gn" "")
@@ -22,16 +23,24 @@
 IUSE=""
 
 RDEPEND="
+	chromeos-base/libipp:=
+	dev-libs/libxml2:=
+	dev-libs/protobuf:=
 	net-misc/usbip:=
+	virtual/jpeg:0=
 "
 
 DEPEND="${RDEPEND}"
 
 platform_pkg_test() {
+	platform_test "run" "${OUT}/cardinality-helper-testrunner"
 	platform_test "run" "${OUT}/escl-manager-testrunner"
 	platform_test "run" "${OUT}/http-util-testrunner"
 	platform_test "run" "${OUT}/ipp-manager-testrunner"
+	platform_test "run" "${OUT}/ipp-matching-testrunner"
+	platform_test "run" "${OUT}/ipp-matching-validation-testrunner"
 	platform_test "run" "${OUT}/ipp-util-testrunner"
+	platform_test "run" "${OUT}/jpeg-util-testrunner"
 	platform_test "run" "${OUT}/load-config-testrunner"
 	platform_test "run" "${OUT}/smart-buffer-testrunner"
 }
diff --git a/chromeos-base/vkbench/vkbench-0.0.1-r6.ebuild b/chromeos-base/vkbench/vkbench-0.0.1-r6.ebuild
deleted file mode 100644
index 8470154..0000000
--- a/chromeos-base/vkbench/vkbench-0.0.1-r6.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="77a3bbb4f1b187e1a405a2604786a9b65aa8fa5d"
-CROS_WORKON_TREE="10a3e8282983077cf77cbaf958fec0df459b1b00"
-CROS_WORKON_LOCALNAME="platform/vkbench"
-CROS_WORKON_PROJECT="chromiumos/platform/vkbench"
-
-inherit cros-workon cmake-utils
-
-DESCRIPTION="Microbenchmark for vulkan"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/vkbench/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="vulkan"
-
-REQUIRED_USE="vulkan"
-
-BDEPEND="
-	dev-util/glslang
-"
-
-RDEPEND="
-	media-libs/libpng:=
-	media-libs/vulkan-loader:=
-	virtual/vulkan-icd:=
-"
-DEPEND="${RDEPEND}"
diff --git a/chromeos-base/vkbench/vkbench-0.0.1-r8.ebuild b/chromeos-base/vkbench/vkbench-0.0.1-r8.ebuild
new file mode 100644
index 0000000..5b7abdc
--- /dev/null
+++ b/chromeos-base/vkbench/vkbench-0.0.1-r8.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2020 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="dc11a7da7b27de39d22b80024ba98588a5146cc3"
+CROS_WORKON_TREE="674da03cb295015def82ec04e960293b338845f6"
+CROS_WORKON_LOCALNAME="platform/vkbench"
+CROS_WORKON_PROJECT="chromiumos/platform/vkbench"
+
+inherit cros-workon cmake-utils
+
+DESCRIPTION="Microbenchmark for vulkan"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/vkbench/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="vulkan"
+
+REQUIRED_USE="vulkan"
+
+BDEPEND="
+	dev-util/glslang
+"
+
+RDEPEND="
+	dev-libs/libfmt:=
+	media-libs/libpng:=
+	media-libs/vulkan-loader:=
+	virtual/vulkan-icd:=
+"
+DEPEND="${RDEPEND}"
diff --git a/chromeos-base/vkbench/vkbench-9999.ebuild b/chromeos-base/vkbench/vkbench-9999.ebuild
index 0a417f9..4df9df4 100644
--- a/chromeos-base/vkbench/vkbench-9999.ebuild
+++ b/chromeos-base/vkbench/vkbench-9999.ebuild
@@ -24,6 +24,7 @@
 "
 
 RDEPEND="
+	dev-libs/libfmt:=
 	media-libs/libpng:=
 	media-libs/vulkan-loader:=
 	virtual/vulkan-icd:=
diff --git a/chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1005.ebuild b/chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1005.ebuild
deleted file mode 100644
index d395fb1..0000000
--- a/chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1005.ebuild
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b52f5cd0677f40bb863e7f8a9308f344fd5520c6"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "ae1f8f0fd10bc02bc924cdd421366393d90769bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk vm_tools .gn"
-
-PLATFORM_SUBDIR="vm_tools"
-
-inherit cros-go cros-workon platform user
-
-DESCRIPTION="VM guest tools for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="kvm_guest vm-containers fuzzer vm_borealis"
-
-# This ebuild should only be used on VM guest boards.
-REQUIRED_USE="kvm_guest"
-
-COMMON_DEPEND="
-	!!chromeos-base/vm_tools
-	chromeos-base/minijail:=
-	net-libs/grpc:=
-	dev-libs/protobuf:=
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	vm-containers? (
-		chromeos-base/crash-reporter
-	)
-	!fuzzer? (
-		chromeos-base/sommelier
-	)
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	dev-go/grpc:=
-	dev-go/protobuf:=
-	sys-kernel/linux-headers:=
-	chromeos-base/vm_protos:=
-"
-
-src_install() {
-	platform_src_install
-
-	dobin "${OUT}"/vm_syslog
-	dosbin "${OUT}"/vshd
-
-	if use vm-containers || use vm_borealis; then
-		dobin "${OUT}"/garcon
-	fi
-	if use vm-containers; then
-		dobin "${OUT}"/guest_service_failure_notifier
-		dobin "${OUT}"/notificationd
-		dobin "${OUT}"/upgrade_container
-		dobin "${OUT}"/virtwl_guest_proxy
-		dobin "${OUT}"/wayland_demo
-		dobin "${OUT}"/x11_demo
-	fi
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/garcon_desktop_file_fuzzer \
-		--dict "${S}"/testdata/garcon_desktop_file_fuzzer.dict
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/garcon_icon_index_file_fuzzer \
-		--dict "${S}"/testdata/garcon_icon_index_file_fuzzer.dict
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/garcon_ini_parse_util_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/garcon_mime_types_parser_fuzzer
-
-	into /
-	newsbin "${OUT}"/maitred init
-
-	# Create a folder for process configs to be launched at VM startup.
-	dodir /etc/maitred/
-
-	use fuzzer || dosym /run/resolv.conf /etc/resolv.conf
-
-	CROS_GO_WORKSPACE="${OUT}/gen/go"
-	cros-go_src_install
-}
-
-platform_pkg_test() {
-	local tests=(
-		maitred_service_test
-		maitred_syslog_test
-	)
-
-	local container_tests=(
-		garcon_desktop_file_test
-		garcon_icon_index_file_test
-		garcon_icon_finder_test
-		garcon_mime_types_parser_test
-		notificationd_test
-	)
-
-	if use vm-containers || use vm_borealis; then
-		tests+=( "${container_tests[@]}" )
-	fi
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
-
-pkg_preinst() {
-	# We need the syslog user and group for both host and guest builds.
-	enewuser syslog
-	enewgroup syslog
-}
diff --git a/chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1146.ebuild b/chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1146.ebuild
new file mode 100644
index 0000000..65ae548
--- /dev/null
+++ b/chromeos-base/vm_guest_tools/vm_guest_tools-0.0.2-r1146.ebuild
@@ -0,0 +1,142 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="78ebb5c48ef5196346103ce448d63d171d0e97f2"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "7ef75a42aba67052842459f221271e681184cc89" "0865c9d3ea1e3df829430fe6bc25ecbc3bc865ca" "c1bde153626532428bf7409bc0597e79452c5eb8" "5159f439e8516f904859190cfd0375b7a4d05db2" "cfed45e1497a68bae4f74947be9922019fe331cf" "97190407ff6df6ae497a54e632369afdf09cd621" "af0b5afed375b2398606e02dfedd5a7d116cfde7" "40934111a9826b46aca5b0b3309b1cceea46f7a4" "73d11c9c68b8ad83037d9b5820a42f0e51c57d74" "dcc85a40b5c9518fac5d6d9b571131998bd62653" "bf33fa9b44cf05a4e8a416a1a3e8ad2d905daa8e" "889e63b35e958b34d6cf15f62b243d442f1bac83" "04812f95a99341b51d5b838c9470f7915b2a5f11" "d0bf87d1a53ee7e33eb547179efa5b2a5e535f84" "a01dc69a1e1fa54805fe9b48ce5c278a7e70de0c")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+PLATFORM2_PATHS=(
+	common-mk
+	.gn
+
+	vm_tools/BUILD.gn
+	vm_tools/guest
+	vm_tools/common
+
+	vm_tools/demos
+	vm_tools/garcon
+	vm_tools/guest_service_failure_notifier
+	vm_tools/maitred
+	vm_tools/notificationd
+	vm_tools/sommelier
+	vm_tools/syslog
+	vm_tools/upgrade_container
+	vm_tools/virtwl_guest_proxy
+	vm_tools/vsh
+
+	# Required by the fuzzer
+	vm_tools/OWNERS
+	vm_tools/testdata
+)
+CROS_WORKON_SUBTREE="${PLATFORM2_PATHS[*]}"
+
+PLATFORM_SUBDIR="vm_tools"
+
+inherit cros-go cros-workon platform user
+
+DESCRIPTION="VM guest tools for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="kvm_guest vm-containers fuzzer vm_borealis"
+
+# This ebuild should only be used on VM guest boards.
+REQUIRED_USE="kvm_guest"
+
+COMMON_DEPEND="
+	!!chromeos-base/vm_tools
+	chromeos-base/minijail:=
+	net-libs/grpc:=
+	dev-libs/protobuf:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	vm-containers? (
+		chromeos-base/crash-reporter
+	)
+	!fuzzer? (
+		chromeos-base/sommelier
+	)
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	dev-go/grpc:=
+	dev-go/protobuf:=
+	sys-kernel/linux-headers:=
+	chromeos-base/vm_protos:=
+"
+
+src_install() {
+	platform_src_install
+
+	dobin "${OUT}"/vm_syslog
+	dosbin "${OUT}"/vshd
+
+	if use vm-containers || use vm_borealis; then
+		dobin "${OUT}"/garcon
+	fi
+	if use vm-containers; then
+		dobin "${OUT}"/guest_service_failure_notifier
+		dobin "${OUT}"/notificationd
+		dobin "${OUT}"/upgrade_container
+		dobin "${OUT}"/virtwl_guest_proxy
+		dobin "${OUT}"/wayland_demo
+		dobin "${OUT}"/x11_demo
+	fi
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/garcon_desktop_file_fuzzer \
+		--dict "${S}"/testdata/garcon_desktop_file_fuzzer.dict
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/garcon_icon_index_file_fuzzer \
+		--dict "${S}"/testdata/garcon_icon_index_file_fuzzer.dict
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/garcon_ini_parse_util_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/garcon_mime_types_parser_fuzzer
+
+	into /
+	newsbin "${OUT}"/maitred init
+
+	# Create a folder for process configs to be launched at VM startup.
+	dodir /etc/maitred/
+
+	use fuzzer || dosym /run/resolv.conf /etc/resolv.conf
+
+	CROS_GO_WORKSPACE="${OUT}/gen/go"
+	cros-go_src_install
+}
+
+platform_pkg_test() {
+	local tests=(
+		maitred_service_test
+		maitred_syslog_test
+	)
+
+	local container_tests=(
+		garcon_desktop_file_test
+		garcon_icon_index_file_test
+		garcon_icon_finder_test
+		garcon_mime_types_parser_test
+		notificationd_test
+	)
+
+	if use vm-containers || use vm_borealis; then
+		tests+=( "${container_tests[@]}" )
+	fi
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
+
+pkg_preinst() {
+	# We need the syslog user and group for both host and guest builds.
+	enewuser syslog
+	enewgroup syslog
+}
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 88d3bab..0551668 100644
--- a/chromeos-base/vm_guest_tools/vm_guest_tools-9999.ebuild
+++ b/chromeos-base/vm_guest_tools/vm_guest_tools-9999.ebuild
@@ -7,7 +7,31 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk vm_tools .gn"
+
+PLATFORM2_PATHS=(
+	common-mk
+	.gn
+
+	vm_tools/BUILD.gn
+	vm_tools/guest
+	vm_tools/common
+
+	vm_tools/demos
+	vm_tools/garcon
+	vm_tools/guest_service_failure_notifier
+	vm_tools/maitred
+	vm_tools/notificationd
+	vm_tools/sommelier
+	vm_tools/syslog
+	vm_tools/upgrade_container
+	vm_tools/virtwl_guest_proxy
+	vm_tools/vsh
+
+	# Required by the fuzzer
+	vm_tools/OWNERS
+	vm_tools/testdata
+)
+CROS_WORKON_SUBTREE="${PLATFORM2_PATHS[*]}"
 
 PLATFORM_SUBDIR="vm_tools"
 
diff --git a/chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r1177.ebuild b/chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r1177.ebuild
deleted file mode 100644
index 2c7450c..0000000
--- a/chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r1177.ebuild
+++ /dev/null
@@ -1,192 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b52f5cd0677f40bb863e7f8a9308f344fd5520c6"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb" "ae1f8f0fd10bc02bc924cdd421366393d90769bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk metrics vm_tools .gn"
-
-PLATFORM_SUBDIR="vm_tools"
-
-inherit cros-workon platform udev user arc-build-constants
-
-DESCRIPTION="VM host tools for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools"
-
-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"
-REQUIRED_USE="kvm_host"
-
-COMMON_DEPEND="
-	app-arch/libarchive:=
-	!!chromeos-base/vm_tools
-	chromeos-base/chunnel:=
-	chromeos-base/crosvm:=
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	chromeos-base/minijail:=
-	chromeos-base/patchpanel:=
-	chromeos-base/patchpanel-client:=
-	net-libs/grpc:=
-	dev-libs/protobuf:=
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	dev-rust/9s
-"
-DEPEND="
-	${COMMON_DEPEND}
-	chromeos-base/dlcservice-client:=
-	chromeos-base/shill-client:=
-	chromeos-base/system_api:=[fuzzer?]
-	chromeos-base/vm_protos:=
-	fuzzer? ( dev-libs/libprotobuf-mutator:= )
-"
-
-get_vmlog_forwarder_start_services() {
-	local start_services="starting vm_concierge"
-	if use wilco; then
-		start_services+=" or starting wilco_dtc_dispatcher"
-	fi
-	echo "${start_services}"
-}
-
-get_vmlog_forwarder_stop_services() {
-	local stop_services="stopped vm_concierge"
-	if use wilco; then
-		stop_services+=" and stopped wilco_dtc_dispatcher"
-	fi
-	echo "${stop_services}"
-}
-
-pkg_setup() {
-	# Duplicated from the crosvm ebuild. These are necessary here in order
-	# to create the daemon-store folder for concierge in src_install().
-	enewuser crosvm
-	enewgroup crosvm
-	enewuser pluginvm
-	cros-workon_pkg_setup
-}
-
-src_install() {
-	platform_src_install
-
-	dobin "${OUT}"/cicerone_client
-	dobin "${OUT}"/concierge_client
-	dobin "${OUT}"/maitred_client
-	dobin "${OUT}"/seneschal
-	dobin "${OUT}"/seneschal_client
-	dobin "${OUT}"/vm_cicerone
-	dobin "${OUT}"/vm_concierge
-	dobin "${OUT}"/vmlog_forwarder
-	dobin "${OUT}"/vsh
-
-	# TODO(b/153934386): Add back arm64 when pstore works.
-	if use arcvm && use amd64; then
-		dobin "${OUT}"/vm_pstore_dump
-	fi
-
-	if use arcvm; then
-		arc-build-constants-configure
-		exeinto "${ARC_VM_VENDOR_DIR}/bin"
-		doexe "${OUT}"/vshd
-	fi
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/cicerone_container_listener_fuzzer
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/vsh_client_fuzzer
-
-	# Install header for passing USB devices to plugin VMs.
-	insinto /usr/include/vm_concierge
-	doins concierge/plugin_vm_usb.h
-
-	insinto /etc/init
-	doins init/seneschal.conf
-	doins init/vm_cicerone.conf
-	doins init/vm_concierge.conf
-
-	# Modify vmlog_forwarder starting and stopping conditions based on USE flags.
-	sed \
-		"-e s,@dependent_start_services@,$(get_vmlog_forwarder_start_services),"\
-		"-e s,@dependent_stop_services@,$(get_vmlog_forwarder_stop_services)," \
-		init/vmlog_forwarder.conf.in | newins - vmlog_forwarder.conf
-
-	insinto /etc/dbus-1/system.d
-	doins dbus/*.conf
-
-	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
-
-	insinto /usr/share/policy
-	if use seccomp; then
-		newins "init/vm_cicerone-seccomp-${ARCH}.policy" vm_cicerone-seccomp.policy
-	fi
-
-	udev_dorules udev/99-vm.rules
-
-	keepdir /opt/google/vms
-
-	# Create daemon store folder for crosvm and pvm
-	local crosvm_store="/etc/daemon-store/crosvm"
-	dodir "${crosvm_store}"
-	fperms 0700 "${crosvm_store}"
-	fowners crosvm:crosvm "${crosvm_store}"
-
-	local pvm_store="/etc/daemon-store/pvm"
-	dodir "${pvm_store}"
-	fperms 0770 "${pvm_store}"
-	fowners pluginvm:crosvm "${pvm_store}"
-}
-
-platform_pkg_test() {
-	local tests=(
-		cicerone_test
-		concierge_test
-		syslog_forwarder_test
-	)
-	if use arcvm; then
-		tests+=(
-			vm_pstore_dump_test
-		)
-	fi
-
-	# Running a gRPC server under qemu-user causes flake, at least with the
-	# combination of gRPC 1.16.1 and qemu 3.0.0. Disable TerminaVmTest.* while
-	# running under qemu to avoid triggering this flake.
-	# TODO(crbug.com/1066425): Reenable gRPC server tests under qemu-user.
-	local qemu_gtest_filter="-TerminaVmTest.*"
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}" "0" "" "${qemu_gtest_filter}"
-	done
-}
-
-pkg_preinst() {
-	# We need the syslog user and group for both host and guest builds.
-	enewuser syslog
-	enewgroup syslog
-
-	enewuser vm_cicerone
-	enewgroup vm_cicerone
-
-	enewuser seneschal
-	enewgroup seneschal
-	enewuser seneschal-dbus
-	enewgroup seneschal-dbus
-
-	enewuser pluginvm
-	enewgroup pluginvm
-
-	enewgroup virtaccess
-}
diff --git a/chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r1351.ebuild b/chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r1351.ebuild
new file mode 100644
index 0000000..d9b0db9
--- /dev/null
+++ b/chromeos-base/vm_host_tools/vm_host_tools-0.0.2-r1351.ebuild
@@ -0,0 +1,216 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="78ebb5c48ef5196346103ce448d63d171d0e97f2"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a9708ef639f0f7929195d0f3921ebd1a12ad96bd" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "7ef75a42aba67052842459f221271e681184cc89" "6ac391aa2da8e29cd4de58f7f7b489a9dc053382" "c1bde153626532428bf7409bc0597e79452c5eb8" "01162da167ac566d9126a032da1b74f8889e9fa2" "7418121e64c49c654817d862e1474490986f4278" "1780a540acb435bb7583751430df696e44eef2e3" "a925c76094f1522fb121dd0f53bbb329fb608d79" "edcdfbcab4b3c4525ccb60500aa145d24cafd7f7" "27d31e84486e3c2a8fcf2deb13b46af8311bbae9" "82e4b5c7e0ce0efa9061a09d81555845183e8d63" "dcc85a40b5c9518fac5d6d9b571131998bd62653" "4b930736bc7da8c301f27c7a82718e7d605de289" "04812f95a99341b51d5b838c9470f7915b2a5f11" "d0bf87d1a53ee7e33eb547179efa5b2a5e535f84")
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+PLATFORM2_PATHS=(
+	common-mk
+	metrics
+	.gn
+
+	vm_tools/BUILD.gn
+	vm_tools/host
+	vm_tools/common
+
+	vm_tools/cicerone
+	vm_tools/concierge
+	vm_tools/dbus
+	vm_tools/init
+	vm_tools/maitred/client.cc
+	vm_tools/pstore_dump
+	vm_tools/seneschal
+	vm_tools/syslog
+	vm_tools/udev
+	vm_tools/vsh
+
+	# Required by the fuzzer
+	vm_tools/OWNERS
+)
+CROS_WORKON_SUBTREE="${PLATFORM2_PATHS[*]}"
+
+PLATFORM_SUBDIR="vm_tools"
+
+inherit cros-workon platform udev user arc-build-constants
+
+DESCRIPTION="VM host tools for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools"
+
+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"
+REQUIRED_USE="kvm_host"
+
+COMMON_DEPEND="
+	app-arch/libarchive:=
+	!!chromeos-base/vm_tools
+	chromeos-base/chunnel:=
+	chromeos-base/crosvm:=
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	chromeos-base/minijail:=
+	chromeos-base/patchpanel:=
+	chromeos-base/patchpanel-client:=
+	net-libs/grpc:=
+	dev-libs/protobuf:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	dev-rust/s9
+"
+DEPEND="
+	${COMMON_DEPEND}
+	chromeos-base/dlcservice-client:=
+	chromeos-base/shill-client:=
+	chromeos-base/system_api:=[fuzzer?]
+	chromeos-base/vm_protos:=
+	fuzzer? ( dev-libs/libprotobuf-mutator:= )
+"
+
+get_vmlog_forwarder_start_services() {
+	local start_services="starting vm_concierge"
+	if use wilco; then
+		start_services+=" or starting wilco_dtc_dispatcher"
+	fi
+	echo "${start_services}"
+}
+
+get_vmlog_forwarder_stop_services() {
+	local stop_services="stopped vm_concierge"
+	if use wilco; then
+		stop_services+=" and stopped wilco_dtc_dispatcher"
+	fi
+	echo "${stop_services}"
+}
+
+pkg_setup() {
+	# Duplicated from the crosvm ebuild. These are necessary here in order
+	# to create the daemon-store folder for concierge in src_install().
+	enewuser crosvm
+	enewgroup crosvm
+	enewuser pluginvm
+	cros-workon_pkg_setup
+}
+
+src_install() {
+	platform_src_install
+
+	dobin "${OUT}"/cicerone_client
+	dobin "${OUT}"/concierge_client
+	dobin "${OUT}"/maitred_client
+	dobin "${OUT}"/seneschal
+	dobin "${OUT}"/seneschal_client
+	dobin "${OUT}"/vm_cicerone
+	dobin "${OUT}"/vm_concierge
+	dobin "${OUT}"/vmlog_forwarder
+	dobin "${OUT}"/vsh
+
+	# TODO(b/153934386): Add back arm64 when pstore works.
+	if use arcvm && use amd64; then
+		dobin "${OUT}"/vm_pstore_dump
+	fi
+
+	if use arcvm; then
+		arc-build-constants-configure
+		exeinto "${ARC_VM_VENDOR_DIR}/bin"
+		doexe "${OUT}"/vshd
+	fi
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/cicerone_container_listener_fuzzer
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/vsh_client_fuzzer
+
+	# Install header for passing USB devices to plugin VMs.
+	insinto /usr/include/vm_concierge
+	doins concierge/plugin_vm_usb.h
+
+	insinto /etc/init
+	doins init/seneschal.conf
+	doins init/vm_cicerone.conf
+	doins init/vm_concierge.conf
+
+	# Modify vmlog_forwarder starting and stopping conditions based on USE flags.
+	sed \
+		"-e s,@dependent_start_services@,$(get_vmlog_forwarder_start_services),"\
+		"-e s,@dependent_stop_services@,$(get_vmlog_forwarder_stop_services)," \
+		init/vmlog_forwarder.conf.in | newins - vmlog_forwarder.conf
+
+	insinto /etc/dbus-1/system.d
+	doins dbus/*.conf
+
+	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
+
+	insinto /usr/share/policy
+	if use seccomp; then
+		newins "init/vm_cicerone-seccomp-${ARCH}.policy" vm_cicerone-seccomp.policy
+	fi
+
+	udev_dorules udev/99-vm.rules
+
+	keepdir /opt/google/vms
+
+	# Create daemon store folder for crosvm and pvm
+	local crosvm_store="/etc/daemon-store/crosvm"
+	dodir "${crosvm_store}"
+	fperms 0700 "${crosvm_store}"
+	fowners crosvm:crosvm "${crosvm_store}"
+
+	local pvm_store="/etc/daemon-store/pvm"
+	dodir "${pvm_store}"
+	fperms 0770 "${pvm_store}"
+	fowners pluginvm:crosvm "${pvm_store}"
+}
+
+platform_pkg_test() {
+	local tests=(
+		cicerone_test
+		concierge_test
+		syslog_forwarder_test
+	)
+	if use arcvm; then
+		tests+=(
+			vm_pstore_dump_test
+		)
+	fi
+
+	# Running a gRPC server under qemu-user causes flake, at least with the
+	# combination of gRPC 1.16.1 and qemu 3.0.0. Disable TerminaVmTest.* while
+	# running under qemu to avoid triggering this flake.
+	# TODO(crbug.com/1066425): Reenable gRPC server tests under qemu-user.
+	local qemu_gtest_filter="-TerminaVmTest.*"
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}" "0" "" "${qemu_gtest_filter}"
+	done
+}
+
+pkg_preinst() {
+	# We need the syslog user and group for both host and guest builds.
+	enewuser syslog
+	enewgroup syslog
+
+	enewuser vm_cicerone
+	enewgroup vm_cicerone
+
+	enewuser seneschal
+	enewgroup seneschal
+	enewuser seneschal-dbus
+	enewgroup seneschal-dbus
+
+	enewuser pluginvm
+	enewgroup pluginvm
+
+	enewgroup virtaccess
+}
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 ddb13c3..31b1796 100644
--- a/chromeos-base/vm_host_tools/vm_host_tools-9999.ebuild
+++ b/chromeos-base/vm_host_tools/vm_host_tools-9999.ebuild
@@ -7,7 +7,31 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_OUTOFTREE_BUILD=1
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="common-mk metrics vm_tools .gn"
+
+PLATFORM2_PATHS=(
+	common-mk
+	metrics
+	.gn
+
+	vm_tools/BUILD.gn
+	vm_tools/host
+	vm_tools/common
+
+	vm_tools/cicerone
+	vm_tools/concierge
+	vm_tools/dbus
+	vm_tools/init
+	vm_tools/maitred/client.cc
+	vm_tools/pstore_dump
+	vm_tools/seneschal
+	vm_tools/syslog
+	vm_tools/udev
+	vm_tools/vsh
+
+	# Required by the fuzzer
+	vm_tools/OWNERS
+)
+CROS_WORKON_SUBTREE="${PLATFORM2_PATHS[*]}"
 
 PLATFORM_SUBDIR="vm_tools"
 
@@ -20,7 +44,7 @@
 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"
+IUSE="+kvm_host +seccomp +crosvm-wl-dmabuf fuzzer wilco +crosvm-virtio-video vulkan"
 REQUIRED_USE="kvm_host"
 
 COMMON_DEPEND="
@@ -38,7 +62,7 @@
 
 RDEPEND="
 	${COMMON_DEPEND}
-	dev-rust/9s
+	dev-rust/s9
 "
 DEPEND="
 	${COMMON_DEPEND}
diff --git a/chromeos-base/vm_protos/vm_protos-0.0.1-r171.ebuild b/chromeos-base/vm_protos/vm_protos-0.0.1-r171.ebuild
deleted file mode 100644
index e635722..0000000
--- a/chromeos-base/vm_protos/vm_protos-0.0.1-r171.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="37337c68df87228f131b4fe001d64921c35ced40"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4561d6fa8ca7fc408c4ab1994661283d2842bdc8" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_GO_PACKAGES=(
-	"chromiumos/vm_tools/..."
-)
-
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk vm_tools/proto .gn"
-
-PLATFORM_SUBDIR="vm_tools/proto"
-
-inherit cros-go cros-workon platform
-
-DESCRIPTION="Chrome OS VM protobuf API"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/proto"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="fuzzer"
-
-RDEPEND="
-	dev-libs/protobuf:=
-	net-libs/grpc:=
-	!<chromeos-base/vm_guest_tools-0.0.2
-	!<chromeos-base/vm_host_tools-0.0.2
-"
-DEPEND="
-	${RDEPEND}
-	dev-go/protobuf:=
-	dev-go/grpc:=
-"
-
-src_unpack() {
-	platform_src_unpack
-	CROS_GO_WORKSPACE="${OUT}/gen/go"
-}
-
-src_install() {
-	insinto /usr/"$(get_libdir)"/pkgconfig
-	doins vm_protos.pc
-
-	insinto /usr/include/vm_protos/proto_bindings
-	doins "${OUT}"/gen/include/vm_protos/proto_bindings/*.h
-
-	dolib.a "${OUT}"/*.a
-
-	cros-go_src_install
-}
diff --git a/chromeos-base/vm_protos/vm_protos-0.0.1-r206.ebuild b/chromeos-base/vm_protos/vm_protos-0.0.1-r206.ebuild
new file mode 100644
index 0000000..012fc94
--- /dev/null
+++ b/chromeos-base/vm_protos/vm_protos-0.0.1-r206.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="0f309d00c4a64c0cfc5eeb6c1a045ef1153b09a0"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "7a0977e263f3f9969fb2db8cbeafbb4bdc1f8bb4" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_GO_PACKAGES=(
+	"chromiumos/vm_tools/..."
+)
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk vm_tools/proto .gn"
+
+PLATFORM_SUBDIR="vm_tools/proto"
+
+inherit cros-go cros-workon platform
+
+DESCRIPTION="Chrome OS VM protobuf API"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/proto"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="fuzzer"
+
+RDEPEND="
+	dev-libs/protobuf:=
+	net-libs/grpc:=
+	!<chromeos-base/vm_guest_tools-0.0.2
+	!<chromeos-base/vm_host_tools-0.0.2
+"
+DEPEND="
+	${RDEPEND}
+	dev-go/protobuf:=
+	dev-go/grpc:=
+"
+
+src_unpack() {
+	platform_src_unpack
+	CROS_GO_WORKSPACE="${OUT}/gen/go"
+}
+
+src_install() {
+	insinto /usr/"$(get_libdir)"/pkgconfig
+	doins vm_protos.pc
+
+	insinto /usr/include/vm_protos/proto_bindings
+	doins "${OUT}"/gen/include/vm_protos/proto_bindings/*.h
+
+	dolib.a "${OUT}"/*.a
+
+	cros-go_src_install
+}
diff --git a/chromeos-base/vpd/vpd-0.0.1-r142.ebuild b/chromeos-base/vpd/vpd-0.0.1-r142.ebuild
deleted file mode 100644
index 717eeff..0000000
--- a/chromeos-base/vpd/vpd-0.0.1-r142.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="0ccc467d8a29eaab9e7d84de0a673a3e93fddb47"
-CROS_WORKON_TREE="d29b8b1ff2b87fdb3142e8d6eedff5059831728e"
-CROS_WORKON_PROJECT="chromiumos/platform/vpd"
-CROS_WORKON_LOCALNAME="platform/vpd"
-
-inherit cros-workon systemd
-
-DESCRIPTION="ChromeOS vital product data utilities"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/vpd/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="static systemd"
-
-# util-linux is for libuuid.
-DEPEND="sys-apps/util-linux:="
-# shflags for dump_vpd_log.
-# chromeos-activate-date for ActivateDate upstart and script.
-RDEPEND="
-	sys-apps/flashrom
-	dev-util/shflags
-	virtual/chromeos-activate-date
-	"
-
-src_compile() {
-	tc-export CC
-	use static && append-ldflags -static
-	emake all
-}
-
-src_install() {
-	# This target list should be architecture specific
-	# (no ACPI stuff on ARM for instance)
-	dosbin vpd vpd_s
-	dosbin util/check_rw_vpd util/dump_vpd_log util/update_rw_vpd
-	dosbin util/vpd_get_value util/vpd_icc
-
-	# install the init script
-	if use systemd; then
-		systemd_dounit init/vpd-log.service
-		systemd_enable_service boot-services.target vpd-log.service
-	else
-		insinto /etc/init
-		doins init/check-rw-vpd.conf
-		doins init/vpd-log.conf
-	fi
-}
-
-src_test() {
-	if ! use x86 && ! use amd64; then
-		ewarn "Skipping unittests for non-x86 arches"
-		return
-	fi
-	emake test
-}
diff --git a/chromeos-base/vpd/vpd-0.0.1-r146.ebuild b/chromeos-base/vpd/vpd-0.0.1-r146.ebuild
new file mode 100644
index 0000000..803ffc3e
--- /dev/null
+++ b/chromeos-base/vpd/vpd-0.0.1-r146.ebuild
@@ -0,0 +1,61 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6860a9045b9163afa6601e51eecc3060967d32e9"
+CROS_WORKON_TREE="911162d238c7c2f42a593aa8419fd53f5307959c"
+CROS_WORKON_PROJECT="chromiumos/platform/vpd"
+CROS_WORKON_LOCALNAME="platform/vpd"
+
+inherit cros-workon systemd
+
+DESCRIPTION="ChromeOS vital product data utilities"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/vpd/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="static systemd"
+
+# util-linux is for libuuid.
+DEPEND="sys-apps/util-linux:="
+# shflags for dump_vpd_log.
+# chromeos-activate-date for ActivateDate upstart and script.
+RDEPEND="
+	sys-apps/flashrom
+	dev-util/shflags
+	virtual/chromeos-activate-date
+	"
+
+src_compile() {
+	tc-export CC
+	use static && append-ldflags -static
+	emake all
+}
+
+src_install() {
+	# This target list should be architecture specific
+	# (no ACPI stuff on ARM for instance)
+	dosbin vpd vpd_s
+	dosbin util/check_rw_vpd util/dump_vpd_log util/update_rw_vpd
+	dosbin util/vpd_get_value util/vpd_icc
+
+	# install the init script
+	if use systemd; then
+		systemd_dounit init/vpd-log.service
+		systemd_enable_service boot-services.target vpd-log.service
+	else
+		insinto /etc/init
+		doins init/check-rw-vpd.conf
+		doins init/vpd-icc.conf
+		doins init/vpd-log.conf
+	fi
+}
+
+src_test() {
+	if ! use x86 && ! use amd64; then
+		ewarn "Skipping unittests for non-x86 arches"
+		return
+	fi
+	emake test
+}
diff --git a/chromeos-base/vpd/vpd-9999.ebuild b/chromeos-base/vpd/vpd-9999.ebuild
index 4c6eb7a..8f1b0c9 100644
--- a/chromeos-base/vpd/vpd-9999.ebuild
+++ b/chromeos-base/vpd/vpd-9999.ebuild
@@ -45,6 +45,7 @@
 	else
 		insinto /etc/init
 		doins init/check-rw-vpd.conf
+		doins init/vpd-icc.conf
 		doins init/vpd-log.conf
 	fi
 }
diff --git a/chromeos-base/vpn-manager/vpn-manager-0.0.1-r2769.ebuild b/chromeos-base/vpn-manager/vpn-manager-0.0.1-r2769.ebuild
deleted file mode 100644
index 731ecfa..0000000
--- a/chromeos-base/vpn-manager/vpn-manager-0.0.1-r2769.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e0ed49a505c69afe4a7f216b86744c3dabcd5e4c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk vpn-manager .gn"
-
-PLATFORM_SUBDIR="vpn-manager"
-
-inherit cros-workon platform
-
-DESCRIPTION="L2TP/IPsec VPN manager for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vpn-manager/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	net-dialup/ppp:=
-	net-dialup/xl2tpd:=
-	net-vpn/strongswan:=
-"
-
-DEPEND="${RDEPEND}"
-
-src_install() {
-	insinto /usr/include/chromeos/vpn-manager
-	doins service_error.h
-	dosbin "${OUT}"/l2tpipsec_vpn
-	exeinto /usr/libexec/l2tpipsec_vpn
-	doexe bin/pluto_updown
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/vpn_manager_service_manager_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}"/vpn_manager_test
-}
diff --git a/chromeos-base/vpn-manager/vpn-manager-0.0.1-r2798.ebuild b/chromeos-base/vpn-manager/vpn-manager-0.0.1-r2798.ebuild
new file mode 100644
index 0000000..02cc757
--- /dev/null
+++ b/chromeos-base/vpn-manager/vpn-manager-0.0.1-r2798.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="d27dfb81bc87df4db16849f5da1b96f1cf5cd10b"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "767a114667a7ed090f12adcaca93e7d4ef6f034f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk vpn-manager .gn"
+
+PLATFORM_SUBDIR="vpn-manager"
+
+inherit cros-workon platform
+
+DESCRIPTION="L2TP/IPsec VPN manager for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/vpn-manager/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	net-dialup/ppp:=
+	net-dialup/xl2tpd:=
+	net-vpn/strongswan:=
+"
+
+DEPEND="${RDEPEND}"
+
+src_install() {
+	insinto /usr/include/chromeos/vpn-manager
+	doins service_error.h
+	dosbin "${OUT}"/l2tpipsec_vpn
+	exeinto /usr/libexec/l2tpipsec_vpn
+	doexe bin/pluto_updown
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/vpn_manager_service_manager_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}"/vpn_manager_test
+}
diff --git a/chromeos-base/wacom_fw_flash/OWNERS b/chromeos-base/wacom_fw_flash/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/wacom_fw_flash/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/webplot/files/chromeos-version.sh b/chromeos-base/webplot/files/chromeos-version.sh
deleted file mode 100755
index 8f2644f..0000000
--- a/chromeos-base/webplot/files/chromeos-version.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-# Copyright 2015 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.
-
-exec sed -nr "/version=/{s:.*='(.*)'.*:\1:;p}" "$1/setup.py"
diff --git a/chromeos-base/webplot/webplot-1.0-r7.ebuild b/chromeos-base/webplot/webplot-1.0-r7.ebuild
deleted file mode 100644
index e84471b..0000000
--- a/chromeos-base/webplot/webplot-1.0-r7.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-CROS_WORKON_COMMIT="bbd5ea22ef9f8e109e363b26958d9a2fc8921f0f"
-CROS_WORKON_TREE="3c21ded27c4b5eccf1c33467712ac8f96a603752"
-CROS_WORKON_PROJECT="chromiumos/platform/webplot"
-
-PYTHON_COMPAT=( python2_7 )
-inherit cros-constants cros-workon distutils-r1
-
-DESCRIPTION="Web drawing tool for touch devices"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/webplot/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-src_unpack() {
-	default
-	cros-workon_src_unpack
-	TARGET_PACKAGE="webplot/remote"
-	TARGET_SRC_PATH="${CHROOT_SOURCE_ROOT}/src/platform"
-	pushd "${S}/${TARGET_PACKAGE}"
-	# Copy the real files/directories pointed to by symlinks.
-	for f in *; do
-		content=$(readlink $f)
-		if [ -n "$content" ]; then
-			rm -f $f
-			SRC_SUBPATH=${content##.*\./}
-			cp -pr "${TARGET_SRC_PATH}/${SRC_SUBPATH}" .
-		fi
-	done
-	popd
-}
-
-src_install() {
-	distutils-r1_src_install
-	exeinto /usr/local/bin
-	newexe webplot.sh webplot
-}
diff --git a/chromeos-base/webplot/webplot-9999.ebuild b/chromeos-base/webplot/webplot-9999.ebuild
deleted file mode 100644
index b1fb639..0000000
--- a/chromeos-base/webplot/webplot-9999.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-CROS_WORKON_PROJECT="chromiumos/platform/webplot"
-
-PYTHON_COMPAT=( python2_7 )
-inherit cros-constants cros-workon distutils-r1
-
-DESCRIPTION="Web drawing tool for touch devices"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/webplot/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-
-src_unpack() {
-	default
-	cros-workon_src_unpack
-	TARGET_PACKAGE="webplot/remote"
-	TARGET_SRC_PATH="${CHROOT_SOURCE_ROOT}/src/platform"
-	pushd "${S}/${TARGET_PACKAGE}"
-	# Copy the real files/directories pointed to by symlinks.
-	for f in *; do
-		content=$(readlink $f)
-		if [ -n "$content" ]; then
-			rm -f $f
-			SRC_SUBPATH=${content##.*\./}
-			cp -pr "${TARGET_SRC_PATH}/${SRC_SUBPATH}" .
-		fi
-	done
-	popd
-}
-
-src_install() {
-	distutils-r1_src_install
-	exeinto /usr/local/bin
-	newexe webplot.sh webplot
-}
diff --git a/chromeos-base/webserver/webserver-0.0.1-r2294.ebuild b/chromeos-base/webserver/webserver-0.0.1-r2294.ebuild
deleted file mode 100644
index d7f980a..0000000
--- a/chromeos-base/webserver/webserver-0.0.1-r2294.ebuild
+++ /dev/null
@@ -1,81 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="a5af3e76ba6310c8ec0609b2d7801b609bdcb5e8"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "c5711e94f1e2955d244a0532a8f4026f478c9eaf" "5e113c91839d131b5610c46c24fb2720e664d945" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-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 permission_broker webserver .gn"
-
-PLATFORM_SUBDIR="webserver"
-
-inherit cros-workon platform user
-
-DESCRIPTION="HTTP sever interface library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/webserver/"
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="
-	chromeos-base/permission_broker:=
-	net-libs/libmicrohttpd:=
-	!chromeos-base/libwebserv:=
-"
-
-DEPEND="
-	${RDEPEND}
-	chromeos-base/permission_broker-client:=
-"
-
-pkg_preinst() {
-	# Create user and group for webservd.
-	enewuser "webservd"
-	enewgroup "webservd"
-}
-
-src_install() {
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	local v="$(libchrome_ver)"
-	libwebserv/preinstall.sh "${OUT}" "${v}"
-	dolib.so "${OUT}/lib/libwebserv.so"
-	doins "${OUT}/lib/libwebserv.pc"
-
-	# TODO(fqj): Remove symlink after users are migrated to libwebserv.pc
-	dosym libwebserv.pc "/usr/$(get_libdir)/pkgconfig/libwebserv-${v}.pc"
-
-	# Install header files from libwebserv
-	insinto /usr/include/libwebserv
-	doins libwebserv/*.h
-
-	# Install init scripts for webservd.
-	insinto /etc/init
-	doins webservd/etc/init/webservd.conf
-
-	# Install DBus configuration files.
-	insinto /etc/dbus-1/system.d
-	doins webservd/etc/dbus-1/org.chromium.WebServer.conf
-
-	# Install seccomp filter for webservd.
-	insinto /usr/share/filters
-	doins webservd/usr/share/filters/webservd-seccomp.policy
-
-	# Install web server daemon.
-	dobin "${OUT}"/webservd
-}
-
-platform_pkg_test() {
-	local tests=(
-		libwebserv_testrunner
-		webservd_testrunner
-	)
-
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/chromeos-base/webserver/webserver-0.0.1-r2336.ebuild b/chromeos-base/webserver/webserver-0.0.1-r2336.ebuild
new file mode 100644
index 0000000..9b298d7
--- /dev/null
+++ b/chromeos-base/webserver/webserver-0.0.1-r2336.ebuild
@@ -0,0 +1,78 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="5e27a24b2ce6909804fce92819b7f9752ad47565"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "a43dee1645ab3169cf3c0d94a0d83cf4492ec75b" "06cc9079e44816d4dd5329a76829384766a3ea06" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+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 permission_broker webserver .gn"
+
+PLATFORM_SUBDIR="webserver"
+
+inherit cros-workon platform user
+
+DESCRIPTION="HTTP sever interface library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/webserver/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/permission_broker:=
+	net-libs/libmicrohttpd:=
+	!chromeos-base/libwebserv:=
+"
+
+DEPEND="
+	${RDEPEND}
+	chromeos-base/permission_broker-client:=
+"
+
+pkg_preinst() {
+	# Create user and group for webservd.
+	enewuser "webservd"
+	enewgroup "webservd"
+}
+
+src_install() {
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	local v="$(libchrome_ver)"
+	libwebserv/preinstall.sh "${OUT}" "${v}"
+	dolib.so "${OUT}/lib/libwebserv.so"
+	doins "${OUT}/lib/libwebserv.pc"
+
+	# Install header files from libwebserv
+	insinto /usr/include/libwebserv
+	doins libwebserv/*.h
+
+	# Install init scripts for webservd.
+	insinto /etc/init
+	doins webservd/etc/init/webservd.conf
+
+	# Install DBus configuration files.
+	insinto /etc/dbus-1/system.d
+	doins webservd/etc/dbus-1/org.chromium.WebServer.conf
+
+	# Install seccomp filter for webservd.
+	insinto /usr/share/filters
+	doins webservd/usr/share/filters/webservd-seccomp.policy
+
+	# Install web server daemon.
+	dobin "${OUT}"/webservd
+}
+
+platform_pkg_test() {
+	local tests=(
+		libwebserv_testrunner
+		webservd_testrunner
+	)
+
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" "${OUT}/${test_bin}"
+	done
+}
diff --git a/chromeos-base/webserver/webserver-9999.ebuild b/chromeos-base/webserver/webserver-9999.ebuild
index 9def173..5a06039 100644
--- a/chromeos-base/webserver/webserver-9999.ebuild
+++ b/chromeos-base/webserver/webserver-9999.ebuild
@@ -43,9 +43,6 @@
 	dolib.so "${OUT}/lib/libwebserv.so"
 	doins "${OUT}/lib/libwebserv.pc"
 
-	# TODO(fqj): Remove symlink after users are migrated to libwebserv.pc
-	dosym libwebserv.pc "/usr/$(get_libdir)/pkgconfig/libwebserv-${v}.pc"
-
 	# Install header files from libwebserv
 	insinto /usr/include/libwebserv
 	doins libwebserv/*.h
diff --git a/chromeos-base/weida_wdt_util/Manifest b/chromeos-base/weida_wdt_util/Manifest
index a79ed39..db41319 100644
--- a/chromeos-base/weida_wdt_util/Manifest
+++ b/chromeos-base/weida_wdt_util/Manifest
@@ -1 +1 @@
-DIST weida_wdt_util-0.9.6.tar.gz 28842 SHA256 c1addf32177720266a370bcf36fea5dcaf3350a01a307f9e3adf491e1fadd0de SHA512 12c35fdeb6fdd189d48d7011cd03cc0fe1c25a95be2bab6f9e0f88bdfaa81b63d1e4ceaca97f31b4b690bf1dd952523940c63d8436d53dfe593c2799405b7cb5 WHIRLPOOL 899849360b4309c6d7ef8338170dc9ae0f814e2dd98ad2c8e8fb2f37920b0d4c0573ba6d329c887765d7f21424adebccc8a63b646d3a110b6727e6c13ed54aa9
+DIST weida_wdt_util-0.9.9.tar.gz 35693 BLAKE2B 36ba5a7b1ede8b7acb16b49b7b13e3f2a2f268f26769ae17331ad50d89f2a7b1860f2dd40694be8605d1aa49e4e608699dfebdbb502ec0c2d04d2031e67e553a SHA512 10f64a64ffd80a7e971f00a81757c7c48ed5e7107af2ea4f5d6bf137cec017848327b865650039d1a46b658e708ba9922b202e225122079ad889773aea7da73d
diff --git a/chromeos-base/weida_wdt_util/OWNERS b/chromeos-base/weida_wdt_util/OWNERS
new file mode 100644
index 0000000..b2b60a0
--- /dev/null
+++ b/chromeos-base/weida_wdt_util/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/weida_wdt_util/weida_wdt_util-0.9.6.ebuild b/chromeos-base/weida_wdt_util/weida_wdt_util-0.9.6.ebuild
deleted file mode 100644
index a982505..0000000
--- a/chromeos-base/weida_wdt_util/weida_wdt_util-0.9.6.ebuild
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-inherit toolchain-funcs
-
-DESCRIPTION="A FW updating utility for Weida touchscreens"
-PROJ_NAME="wdt_util_src"
-GIT_TAG="wdt_util_v${PV}"
-HOMEPAGE="https://github.com/chenhn123/wdt_util_src"
-SRC_URI="https://github.com/chenhn123/wdt_util_src/archive/${GIT_TAG}.tar.gz -> ${P}.tar.gz"
-S="${WORKDIR}/${PROJ_NAME}-${GIT_TAG}"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-src_configure() {
-	tc-export CC
-}
-
-src_install() {
-	dosbin wdt_util
-}
diff --git a/chromeos-base/weida_wdt_util/weida_wdt_util-0.9.9.ebuild b/chromeos-base/weida_wdt_util/weida_wdt_util-0.9.9.ebuild
new file mode 100644
index 0000000..9e8b221
--- /dev/null
+++ b/chromeos-base/weida_wdt_util/weida_wdt_util-0.9.9.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit toolchain-funcs
+
+DESCRIPTION="A FW updating utility for Weida touchscreens"
+PROJ_NAME="wdt_util_src"
+GIT_TAG="wdt_util_v${PV}"
+HOMEPAGE="https://github.com/chenhn123/wdt_util_src"
+SRC_URI="https://github.com/chenhn123/wdt_util_src/archive/${GIT_TAG}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/${PROJ_NAME}-${GIT_TAG}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+src_configure() {
+	tc-export CC
+}
+
+src_install() {
+	dosbin wdt_util
+}
diff --git a/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r126.ebuild b/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r126.ebuild
deleted file mode 100644
index f1362f2..0000000
--- a/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r126.ebuild
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "bf3184eecb9926a81042768d016ede2399b2a52f" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_GO_PACKAGES=(
-	"chromiumos/wilco_dtc/..."
-)
-
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk diagnostics/grpc .gn"
-
-PLATFORM_SUBDIR="diagnostics/grpc"
-
-WANT_LIBCHROME="no"
-WANT_LIBBRILLO="no"
-inherit cros-go cros-workon platform
-
-DESCRIPTION="Chrome OS Wilco DTC proto/gRPC API"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics/grpc"
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	dev-libs/protobuf:=
-	net-libs/grpc:=
-"
-DEPEND="
-	${RDEPEND}
-	dev-go/protobuf
-	dev-go/grpc
-"
-
-src_unpack() {
-	platform_src_unpack
-	CROS_GO_WORKSPACE="${OUT}/gen/go"
-}
-
-src_install() {
-	insinto /usr/"$(get_libdir)"/pkgconfig
-	doins wilco_dtc_grpc_protos.pc
-
-	insinto /usr/include/wilco_dtc/proto_bindings
-	doins "${OUT}"/gen/include/*.h
-
-	dolib.a "${OUT}"/*.a
-
-	cros-go_src_install
-}
diff --git a/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r152.ebuild b/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r152.ebuild
new file mode 100644
index 0000000..0da3e53
--- /dev/null
+++ b/chromeos-base/wilco-dtc-grpc-protos/wilco-dtc-grpc-protos-0.0.1-r152.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "32f385c265f6f3f6326d6b0befb16426b78eb150" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_GO_PACKAGES=(
+	"chromiumos/wilco_dtc/..."
+)
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk diagnostics/grpc .gn"
+
+PLATFORM_SUBDIR="diagnostics/grpc"
+
+WANT_LIBCHROME="no"
+WANT_LIBBRILLO="no"
+inherit cros-go cros-workon platform
+
+DESCRIPTION="Chrome OS Wilco DTC proto/gRPC API"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics/grpc"
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	dev-libs/protobuf:=
+	net-libs/grpc:=
+"
+DEPEND="
+	${RDEPEND}
+	dev-go/protobuf
+	dev-go/grpc
+"
+
+src_unpack() {
+	platform_src_unpack
+	CROS_GO_WORKSPACE="${OUT}/gen/go"
+}
+
+src_install() {
+	insinto /usr/"$(get_libdir)"/pkgconfig
+	doins wilco_dtc_grpc_protos.pc
+
+	insinto /usr/include/wilco_dtc/proto_bindings
+	doins "${OUT}"/gen/include/*.h
+
+	dolib.a "${OUT}"/*.a
+
+	cros-go_src_install
+}
diff --git a/chromeos-base/zephyr-build-tools/OWNERS b/chromeos-base/zephyr-build-tools/OWNERS
new file mode 100644
index 0000000..77fb198
--- /dev/null
+++ b/chromeos-base/zephyr-build-tools/OWNERS
@@ -0,0 +1 @@
+include chromiumos/overlays/chromiumos-overlay:/chromeos-base/chromeos-zephyr/OWNERS
diff --git a/chromeos-base/zephyr-build-tools/zephyr-build-tools-0.0.1-r28.ebuild b/chromeos-base/zephyr-build-tools/zephyr-build-tools-0.0.1-r28.ebuild
deleted file mode 100644
index c909ab8..0000000
--- a/chromeos-base/zephyr-build-tools/zephyr-build-tools-0.0.1-r28.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="9e422c3c05fdd324565049b09be27c446f9dc0ca"
-CROS_WORKON_TREE="a15a093a4221b3d858edb70e3083e016875215e1"
-CROS_WORKON_PROJECT="chromiumos/platform/ec"
-CROS_WORKON_LOCALNAME="platform/ec"
-CROS_WORKON_SUBTREE="zephyr/zmake"
-
-PYTHON_COMPAT=( python{3_6,3_7,3_8,3_9} )
-
-inherit cros-workon distutils-r1
-
-DESCRIPTION="Tools used for building Zephyr OS"
-HOMEPAGE="http://src.chromium.org"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
-RDEPEND="
-	dev-embedded/binman
-	dev-python/colorama[${PYTHON_USEDEP}]
-	dev-python/docopt[${PYTHON_USEDEP}]
-	dev-python/jsonschema[${PYTHON_USEDEP}]
-	dev-python/pykwalify[${PYTHON_USEDEP}]
-	dev-python/pyyaml[${PYTHON_USEDEP}]
-	dev-util/ninja
-	sys-apps/dtc
-"
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/zephyr/zmake"
-}
diff --git a/chromeos-base/zephyr-build-tools/zephyr-build-tools-0.0.1-r93.ebuild b/chromeos-base/zephyr-build-tools/zephyr-build-tools-0.0.1-r93.ebuild
new file mode 100644
index 0000000..771a6e6
--- /dev/null
+++ b/chromeos-base/zephyr-build-tools/zephyr-build-tools-0.0.1-r93.ebuild
@@ -0,0 +1,49 @@
+# Copyright 2020 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="46481b71d4d9a7d0f0830794fb84900e8cfd3d7a"
+CROS_WORKON_TREE="f0345f01a3331f280eae5ffaa6570562fd42e79c"
+CROS_WORKON_PROJECT="chromiumos/platform/ec"
+CROS_WORKON_LOCALNAME="platform/ec"
+CROS_WORKON_SUBTREE="zephyr/zmake"
+
+PYTHON_COMPAT=( python{3_6,3_7,3_8,3_9} )
+
+inherit cros-workon distutils-r1
+
+DESCRIPTION="Tools used for building Zephyr OS"
+HOMEPAGE="http://src.chromium.org"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+RDEPEND="
+	dev-embedded/binman
+	dev-python/colorama[${PYTHON_USEDEP}]
+	dev-python/docopt[${PYTHON_USEDEP}]
+	dev-python/hypothesis[${PYTHON_USEDEP}]
+	dev-python/jsonschema[${PYTHON_USEDEP}]
+	dev-python/pykwalify[${PYTHON_USEDEP}]
+	dev-python/pytest[${PYTHON_USEDEP}]
+	dev-python/pyyaml[${PYTHON_USEDEP}]
+	dev-python/testfixtures[${PYTHON_USEDEP}]
+	dev-util/ninja
+	sys-apps/dtc
+"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/zephyr/zmake"
+}
+
+src_test() {
+	python3 -m pytest tests/*.py -v || die "Tests fail with ${EPYTHON}"
+}
diff --git a/chromeos-base/zephyr-build-tools/zephyr-build-tools-9999.ebuild b/chromeos-base/zephyr-build-tools/zephyr-build-tools-9999.ebuild
index 7d19294..5089f84 100644
--- a/chromeos-base/zephyr-build-tools/zephyr-build-tools-9999.ebuild
+++ b/chromeos-base/zephyr-build-tools/zephyr-build-tools-9999.ebuild
@@ -25,9 +25,12 @@
 	dev-embedded/binman
 	dev-python/colorama[${PYTHON_USEDEP}]
 	dev-python/docopt[${PYTHON_USEDEP}]
+	dev-python/hypothesis[${PYTHON_USEDEP}]
 	dev-python/jsonschema[${PYTHON_USEDEP}]
 	dev-python/pykwalify[${PYTHON_USEDEP}]
+	dev-python/pytest[${PYTHON_USEDEP}]
 	dev-python/pyyaml[${PYTHON_USEDEP}]
+	dev-python/testfixtures[${PYTHON_USEDEP}]
 	dev-util/ninja
 	sys-apps/dtc
 "
@@ -38,3 +41,7 @@
 	cros-workon_src_unpack
 	S+="/zephyr/zmake"
 }
+
+src_test() {
+	python3 -m pytest tests/*.py -v || die "Tests fail with ${EPYTHON}"
+}
diff --git a/chromeos-base/zinitix_fw_updater/Manifest b/chromeos-base/zinitix_fw_updater/Manifest
new file mode 100644
index 0000000..bf37480
--- /dev/null
+++ b/chromeos-base/zinitix_fw_updater/Manifest
@@ -0,0 +1 @@
+DIST zinitix_fw_updater-1.0.9.tar.gz 400797 BLAKE2B 4888761676bc321fe8d8f3c3db043121ece844192564ec35f4b470c69351d1134d7edc02872038aeb73e66c9774448005371838db4c4698cd1066faaf3a07b4d SHA512 483e520608873af9b66334b8933f2390ccc85dd16fe058e39e209af38bebf1002112de5fb110d7b8192e6147d85797f5a4201f8134d34f643a0bc73d37c3afa2
diff --git a/chromeos-base/zinitix_fw_updater/OWNERS b/chromeos-base/zinitix_fw_updater/OWNERS
new file mode 100644
index 0000000..fb7fb43
--- /dev/null
+++ b/chromeos-base/zinitix_fw_updater/OWNERS
@@ -0,0 +1,3 @@
+kdson@zinitix.corp-partner.google.com
+hcutts@google.com
+include chromiumos/platform/touch_updater:/OWNERS
diff --git a/chromeos-base/zinitix_fw_updater/zinitix_fw_updater-1.0.9.ebuild b/chromeos-base/zinitix_fw_updater/zinitix_fw_updater-1.0.9.ebuild
new file mode 100644
index 0000000..265a09b
--- /dev/null
+++ b/chromeos-base/zinitix_fw_updater/zinitix_fw_updater-1.0.9.ebuild
@@ -0,0 +1,22 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+inherit toolchain-funcs
+
+DESCRIPTION="Zinitix Digitizer for Firmware Update"
+HOMEPAGE="https://github.com/zinitix-solution/zinitix_fw_updater"
+SRC_URI="https://github.com/zinitix-solution/zinitix_fw_updater/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+src_configure() {
+	tc-export CC
+}
+
+src_install() {
+	dosbin Zinitix_FWupdate
+}
diff --git a/chromeos/binhost/host/sdk_version.conf b/chromeos/binhost/host/sdk_version.conf
index 699fe07..a72b1ed 100644
--- a/chromeos/binhost/host/sdk_version.conf
+++ b/chromeos/binhost/host/sdk_version.conf
@@ -1,9 +1,9 @@
 # The last version of the sdk that we built & tested.
-SDK_LATEST_VERSION="2021.01.12.160747"
+SDK_LATEST_VERSION="2021.06.26.094653"
 
 # How to find the standalone toolchains from the above sdk.
-TC_PATH="2021/01/%(target)s-2021.01.12.160747.tar.xz"
+TC_PATH="2021/06/%(target)s-2021.06.26.094653.tar.xz"
 
 # Frozen version of SDK used for bootstrapping.
 # If unset, SDK_LATEST_VERSION will be used for bootstrapping.
-BOOTSTRAP_FROZEN_VERSION="2020.11.09.170314"
+BOOTSTRAP_FROZEN_VERSION="2021.04.23.191753"
diff --git a/chromeos/binhost/target/OWNERS b/chromeos/binhost/target/OWNERS
new file mode 100644
index 0000000..4f139fe
--- /dev/null
+++ b/chromeos/binhost/target/OWNERS
@@ -0,0 +1 @@
+chromeos-ci-prod@chromeos-bot.iam.gserviceaccount.com
diff --git a/chromeos/binhost/target/amd64-generic-POSTSUBMIT_BINHOST.conf b/chromeos/binhost/target/amd64-generic-POSTSUBMIT_BINHOST.conf
index a0bfaae..c307d02 100644
--- a/chromeos/binhost/target/amd64-generic-POSTSUBMIT_BINHOST.conf
+++ b/chromeos/binhost/target/amd64-generic-POSTSUBMIT_BINHOST.conf
@@ -1 +1 @@
-POSTSUBMIT_BINHOST="gs://chromeos-prebuilt/board/amd64-generic/postsubmit-R89-13728.0.0-43146-8858074373656641488/packages"
\ No newline at end of file
+POSTSUBMIT_BINHOST="gs://chromeos-prebuilt/board/amd64-generic/postsubmit-R93-14055.0.0-20576-8843238083547831664/packages"
\ No newline at end of file
diff --git a/chromeos/binhost/target/arm-generic-POSTSUBMIT_BINHOST.conf b/chromeos/binhost/target/arm-generic-POSTSUBMIT_BINHOST.conf
index f1da976..501f2cb 100644
--- a/chromeos/binhost/target/arm-generic-POSTSUBMIT_BINHOST.conf
+++ b/chromeos/binhost/target/arm-generic-POSTSUBMIT_BINHOST.conf
@@ -1 +1 @@
-POSTSUBMIT_BINHOST="gs://chromeos-prebuilt/board/arm-generic/postsubmit-R89-13728.0.0-43146-8858074291546193424/packages"
\ No newline at end of file
+POSTSUBMIT_BINHOST="gs://chromeos-prebuilt/board/arm-generic/postsubmit-R93-14055.0.0-20576-8843237868994542384/packages"
\ No newline at end of file
diff --git a/chromeos/binhost/target/arm64-generic-POSTSUBMIT_BINHOST.conf b/chromeos/binhost/target/arm64-generic-POSTSUBMIT_BINHOST.conf
index 573bb07..bb9ba2d 100644
--- a/chromeos/binhost/target/arm64-generic-POSTSUBMIT_BINHOST.conf
+++ b/chromeos/binhost/target/arm64-generic-POSTSUBMIT_BINHOST.conf
@@ -1 +1 @@
-POSTSUBMIT_BINHOST="gs://chromeos-prebuilt/board/arm64-generic/postsubmit-R89-13728.0.0-43146-8858074219559200480/packages"
\ No newline at end of file
+POSTSUBMIT_BINHOST="gs://chromeos-prebuilt/board/arm64-generic/postsubmit-R93-14055.0.0-20576-8843237685432791152/packages"
\ No newline at end of file
diff --git a/chromeos/binhost/target/tael-POSTSUBMIT_BINHOST.conf b/chromeos/binhost/target/tael-POSTSUBMIT_BINHOST.conf
index 73e9b55..c37fc16 100644
--- a/chromeos/binhost/target/tael-POSTSUBMIT_BINHOST.conf
+++ b/chromeos/binhost/target/tael-POSTSUBMIT_BINHOST.conf
@@ -1 +1 @@
-POSTSUBMIT_BINHOST="gs://chromeos-prebuilt/board/tael/postsubmit-R89-13728.0.0-43146-8858073211027880496/packages"
\ No newline at end of file
+POSTSUBMIT_BINHOST="gs://chromeos-prebuilt/board/tael/postsubmit-R93-14055.0.0-20576-8843235574117609648/packages"
\ No newline at end of file
diff --git a/chromeos/binhost/target/tatl-POSTSUBMIT_BINHOST.conf b/chromeos/binhost/target/tatl-POSTSUBMIT_BINHOST.conf
index ad7f726..330f1ed 100644
--- a/chromeos/binhost/target/tatl-POSTSUBMIT_BINHOST.conf
+++ b/chromeos/binhost/target/tatl-POSTSUBMIT_BINHOST.conf
@@ -1 +1 @@
-POSTSUBMIT_BINHOST="gs://chromeos-prebuilt/board/tatl/postsubmit-R89-13728.0.0-43146-8858073205054447280/packages"
\ No newline at end of file
+POSTSUBMIT_BINHOST="gs://chromeos-prebuilt/board/tatl/postsubmit-R93-14055.0.0-20576-8843235557501785328/packages"
\ No newline at end of file
diff --git a/chromeos/config/OWNERS b/chromeos/config/OWNERS
new file mode 100644
index 0000000..775faec
--- /dev/null
+++ b/chromeos/config/OWNERS
@@ -0,0 +1,2 @@
+# ChromeOS bot
+per-file make.conf.amd64-host=3su6n15k.default@developer.gserviceaccount.com
diff --git a/chromeos/config/chromeos_version.sh b/chromeos/config/chromeos_version.sh
index 2279636..74d2987 100755
--- a/chromeos/config/chromeos_version.sh
+++ b/chromeos/config/chromeos_version.sh
@@ -15,7 +15,7 @@
 if [ -z "${FLAGS_version}" ]; then
   # Release Build number.
   # Increment by 1 for every release build.
-  CHROMEOS_BUILD=13729
+  CHROMEOS_BUILD=14056
 
   # Release Branch number.
   # Increment by 1 for every release build on a branch.
diff --git a/chromeos/config/env/app-admin/sudo b/chromeos/config/env/app-admin/sudo
index 992679b..489651a 100644
--- a/chromeos/config/env/app-admin/sudo
+++ b/chromeos/config/env/app-admin/sudo
@@ -1,2 +1,7 @@
-PKG_INSTALL_MASK+=" /etc/pam.d/sudo"
-INSTALL_MASK+=" /etc/pam.d/sudo"
+sudo_mask="
+  /etc/pam.d/sudo
+  /usr/lib/tmpfiles.d/sudo.conf
+"
+
+PKG_INSTALL_MASK+=" ${sudo_mask}"
+INSTALL_MASK+=" ${sudo_mask}"
diff --git a/chromeos/config/env/app-crypt/efitools b/chromeos/config/env/app-crypt/efitools
deleted file mode 100644
index 8fb9c57..0000000
--- a/chromeos/config/env/app-crypt/efitools
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2018 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.
-
-# The *.efi files in efitools cannot be built from clang.
-cros_pre_src_prepare_use_gcc() {
-	cros_use_gcc
-}
diff --git a/chromeos/config/env/chromeos-base/ec-utils b/chromeos/config/env/chromeos-base/ec-utils
deleted file mode 100644
index 817e43f..0000000
--- a/chromeos/config/env/chromeos-base/ec-utils
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2017 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.
-
-# We want to continue to use gcc to build firmware.  http://crbug.com/641388
-cros_pre_src_prepare_use_gcc() {
-	cros_use_gcc
-}
diff --git a/chromeos/config/env/dev-embedded/libftdi b/chromeos/config/env/dev-embedded/libftdi
new file mode 100644
index 0000000..66acc42
--- /dev/null
+++ b/chromeos/config/env/dev-embedded/libftdi
@@ -0,0 +1,9 @@
+# Copyright 2021 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.
+
+# Build without sanitizers to avoid fuzzer builders breakage,
+# https://crbug.com/1171526
+cros_pre_src_prepare_filter_sanitizers() {
+	filter_sanitizers
+}
diff --git a/chromeos/config/env/dev-libs/libusb b/chromeos/config/env/dev-libs/libusb
new file mode 100644
index 0000000..66acc42
--- /dev/null
+++ b/chromeos/config/env/dev-libs/libusb
@@ -0,0 +1,9 @@
+# Copyright 2021 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.
+
+# Build without sanitizers to avoid fuzzer builders breakage,
+# https://crbug.com/1171526
+cros_pre_src_prepare_filter_sanitizers() {
+	filter_sanitizers
+}
diff --git a/chromeos/config/env/net-dialup/xl2tpd b/chromeos/config/env/net-dialup/xl2tpd
new file mode 100644
index 0000000..a977336
--- /dev/null
+++ b/chromeos/config/env/net-dialup/xl2tpd
@@ -0,0 +1,10 @@
+# Copyright 2021 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.
+
+xl2tpd_mask="
+  /usr/lib/tmpfiles.d/xl2tpd.conf
+"
+
+PKG_INSTALL_MASK+=" ${xl2tpd_mask}"
+INSTALL_MASK+=" ${xl2tpd_mask}"
diff --git a/chromeos/config/env/net-fs/samba b/chromeos/config/env/net-fs/samba
index 8f8fabe..1789fa0 100644
--- a/chromeos/config/env/net-fs/samba
+++ b/chromeos/config/env/net-fs/samba
@@ -37,13 +37,14 @@
   /usr/lib*/samba/idmap
   /usr/lib*/samba/libidmap-samba4.so
   /usr/lib*/samba/nss_info
+  /usr/lib/tmpfiles.d/samba.conf
   /usr/libexec/cups/backend/smb
 "
 PKG_INSTALL_MASK+=" ${samba_mask}"
 INSTALL_MASK+=" ${samba_mask}"
 unset samba_mask
 
-# samba does not build with samitizers, https://crbug.com/841861
+# samba does not build with sanitizers, https://crbug.com/841861
 cros_pre_src_prepare_filter_sanitizers() {
 	filter_sanitizers
 }
diff --git a/chromeos/config/env/sys-apps/memtest86+ b/chromeos/config/env/sys-apps/memtest86+
deleted file mode 100644
index 68178f3..0000000
--- a/chromeos/config/env/sys-apps/memtest86+
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2018 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.
-
-# This package needs gcc, see http://crbug.com/895195
-cros_pre_src_prepare_use_gcc() {
-	cros_use_gcc
-}
diff --git a/chromeos/config/env/sys-boot/coreinfo b/chromeos/config/env/sys-boot/coreinfo
deleted file mode 100644
index b58b749..0000000
--- a/chromeos/config/env/sys-boot/coreinfo
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2016 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.
-
-# We want to continue to use gcc to build firmware.  http://crbug.com/641388
-cros_pre_src_prepare_use_gcc() {
-	cros_use_gcc
-}
diff --git a/chromeos/config/env/sys-boot/gnu-efi b/chromeos/config/env/sys-boot/gnu-efi
deleted file mode 100644
index 8389297..0000000
--- a/chromeos/config/env/sys-boot/gnu-efi
+++ /dev/null
@@ -1,8 +0,0 @@
-# Copyright 2016 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.
-
-# gnu-efi cannot be built from clang. See https://crbug.com/475978
-cros_pre_src_prepare_use_gcc() {
-	cros_use_gcc
-}
diff --git a/chromeos/config/env/sys-boot/grub b/chromeos/config/env/sys-boot/grub
index 3efe732..4b027dc 100644
--- a/chromeos/config/env/sys-boot/grub
+++ b/chromeos/config/env/sys-boot/grub
@@ -16,10 +16,3 @@
                 /etc/grub.d/README
                 /lib64/grub/grub-mkconfig_lib
                 /lib64/grub/update-grub_lib"
-
-# We need to build grub with GCC, for host builds.
-cros_pre_src_prepare_use_gcc() {
-       if [[ $(cros_target) == "cros_host" ]]; then
-               cros_use_gcc
-       fi
-}
diff --git a/chromeos/config/env/sys-devel/autofdo b/chromeos/config/env/sys-devel/autofdo
new file mode 100644
index 0000000..179635a
--- /dev/null
+++ b/chromeos/config/env/sys-devel/autofdo
@@ -0,0 +1,18 @@
+# Copyright 2021 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.
+
+# Mask install artifacts from abseil and glog dependencies.
+# We need only autofdo tools.
+absl_mask="
+  /usr/lib/pkgconfig/absl_absl_*.pc
+"
+glog_mask="
+  /usr/include/glog
+  /usr/lib64/libglog.a
+  /usr/lib64/pkgconfig/libglog.pc
+  /usr/lib64/cmake/glog
+"
+PKG_INSTALL_MASK+=" ${absl_mask} ${glog_mask}"
+INSTALL_MASK+=" ${absl_mask} ${glog_mask}"
+unset absl_mask glog_mask
diff --git a/chromeos/config/env/sys-fs/udev b/chromeos/config/env/sys-fs/udev
new file mode 100644
index 0000000..66acc42
--- /dev/null
+++ b/chromeos/config/env/sys-fs/udev
@@ -0,0 +1,9 @@
+# Copyright 2021 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.
+
+# Build without sanitizers to avoid fuzzer builders breakage,
+# https://crbug.com/1171526
+cros_pre_src_prepare_filter_sanitizers() {
+	filter_sanitizers
+}
diff --git a/chromeos/config/env/x11-libs/pixman b/chromeos/config/env/x11-libs/pixman
new file mode 100644
index 0000000..d937ff3
--- /dev/null
+++ b/chromeos/config/env/x11-libs/pixman
@@ -0,0 +1,19 @@
+# Copyright 2021 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.
+
+# Pixman can't be built with clang's integrated assembler.
+# Fallback to GNU assembler.
+# https://crbug.com/793487
+# https://bugs.gentoo.org/768138
+cros_pre_src_prepare_force_gcc_as() {
+	export CFLAGS+=" -fno-integrated-as"
+}
+
+# As preparation for making DWARF v5 the default debug information format
+# anything that builds with -fno-integrated-as must also build with
+# -gdwarf-4, https://crbug.com/1128633 .
+cros_pre_src_prepare_force_gdwarf4() {
+	export CFLAGS+=" -gdwarf-4"
+	export CXXFLAGS+=" -gdwarf-4"
+}
diff --git a/chromeos/config/make.conf.amd64-host b/chromeos/config/make.conf.amd64-host
index 3c26b97..495ec88 100644
--- a/chromeos/config/make.conf.amd64-host
+++ b/chromeos/config/make.conf.amd64-host
@@ -4,7 +4,7 @@
 source /mnt/host/source/src/third_party/chromiumos-overlay/chromeos/config/make.conf.common
 
 # We initialize PORTDIR_OVERLAY here to clobber any redefinitions elsewhere.
-# This has to be the first overlay so crossdev finds the correct gcc and 
+# This has to be the first overlay so crossdev finds the correct gcc and
 # glibc ebuilds.
 PORTDIR_OVERLAY="
   /usr/local/portage/crossdev
@@ -18,7 +18,7 @@
 PORT_LOGDIR="/var/log/portage"
 
 source /usr/local/portage/chromiumos/chromeos/binhost/host/amd64-PREFLIGHT_BINHOST.conf
-FULL_BINHOST="gs://chromeos-prebuilt/host/amd64/amd64-host/chroot-2021.01.12.160747/packages/"
+FULL_BINHOST="gs://chromeos-prebuilt/host/amd64/amd64-host/chroot-2021.06.26.094653/packages/"
 PORTAGE_BINHOST="$PREFLIGHT_BINHOST $FULL_BINHOST"
 
 GENTOO_MIRRORS="https://commondatastorage.googleapis.com/chromeos-localmirror"
diff --git a/dev-cpp/absl/absl-20200923-r3.ebuild b/dev-cpp/absl/absl-20200923-r4.ebuild
similarity index 100%
rename from dev-cpp/absl/absl-20200923-r3.ebuild
rename to dev-cpp/absl/absl-20200923-r4.ebuild
diff --git a/dev-cpp/absl/absl-20200923.ebuild b/dev-cpp/absl/absl-20200923.ebuild
index 9dab36a..2c47d38 100644
--- a/dev-cpp/absl/absl-20200923.ebuild
+++ b/dev-cpp/absl/absl-20200923.ebuild
@@ -20,6 +20,12 @@
 S="${WORKDIR}/abseil-cpp-${PV}"
 ABSLDIR="${WORKDIR}/${P}_build/absl"
 
+src_prepare() {
+	# Workaround to avoid conflict with other packages: see also b/184603259
+	grep -l -R -Z "absl::" . | xargs -0 sed -i 's/absl::/absl::ABSL_OPTION_INLINE_NAMESPACE_NAME::/g'
+	default
+}
+
 src_configure() {
 	local mycmakeargs=(
 		-DBUILD_SHARED_LIBS=on
diff --git a/dev-cpp/arc-gtest/Manifest b/dev-cpp/arc-gtest/Manifest
deleted file mode 100644
index 1b88002..0000000
--- a/dev-cpp/arc-gtest/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST googletest-release-1.8.0.tar.gz 1281617 SHA256 58a6f4277ca2bc8565222b3bbd58a177609e9c488e8a72649359ba51450db7d8 SHA512 1dbece324473e53a83a60601b02c92c089f5d314761351974e097b2cf4d24af4296f9eb8653b6b03b1e363d9c5f793897acae1f0c7ac40149216035c4d395d9d WHIRLPOOL 7d95c06818332f9596dbda03d21416012c00e05c78be0814279ab9e7059b9d836060bab83ad46d013ccf1ba40973680c0793d78ac22f6016773fd93aa97b779b
diff --git a/dev-cpp/arc-gtest/arc-gtest-1.8.0-r3.ebuild b/dev-cpp/arc-gtest/arc-gtest-1.8.0-r3.ebuild
deleted file mode 120000
index 8cfcc93..0000000
--- a/dev-cpp/arc-gtest/arc-gtest-1.8.0-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-arc-gtest-1.8.0.ebuild
\ No newline at end of file
diff --git a/dev-cpp/arc-gtest/arc-gtest-1.8.0.ebuild b/dev-cpp/arc-gtest/arc-gtest-1.8.0.ebuild
deleted file mode 100644
index 787299b..0000000
--- a/dev-cpp/arc-gtest/arc-gtest-1.8.0.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-AUTOTOOLS_AUTORECONF=1
-AUTOTOOLS_IN_SOURCE_BUILD=1
-# Python is required for tests and some build tasks.
-PYTHON_COMPAT=( python2_7 )
-
-inherit eutils python-any-r1 autotools-multilib arc-build
-
-DESCRIPTION="Google C++ Testing Framework"
-HOMEPAGE="http://github.com/google/googletest/"
-SRC_URI="https://github.com/google/googletest/archive/release-${PV}.tar.gz -> googletest-release-${PV}.tar.gz"
-SRC_URI="https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/googletest-release-${PV}.tar.gz"
-S="${WORKDIR}/googletest-release-${PV}/googletest"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="${PYTHON_DEPS}"
-RDEPEND=""
-
-PATCHES=(
-	"${FILESDIR}/configure-fix-pthread-linking.patch" #371647
-	"${FILESDIR}/${P}-makefile-am.patch"
-	"${FILESDIR}/${P}-threadlocal-api.patch"
-)
-
-src_prepare() {
-	autotools-multilib_src_prepare
-}
-
-src_configure() {
-	arc-build-select-clang
-	multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-	ECONF_SOURCE="${S}" econf \
-		--prefix="${ARC_PREFIX}/vendor" \
-		--datadir="${ARC_PREFIX}/vendor/share" \
-		--enable-shared=no
-}
-
-multilib_src_install() {
-	default
-	exeinto "${ARC_PREFIX}/vendor/bin"
-	newexe scripts/gtest-config "gtest-config-${ABI}"
-}
-
-multilib_src_install_all() {
-	prune_libtool_files --all
-}
diff --git a/dev-cpp/arc-gtest/files/arc-gtest-1.8.0-makefile-am.patch b/dev-cpp/arc-gtest/files/arc-gtest-1.8.0-makefile-am.patch
deleted file mode 100644
index f46a2ae..0000000
--- a/dev-cpp/arc-gtest/files/arc-gtest-1.8.0-makefile-am.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff --git a/googletest/Makefile.am b/googletest/Makefile.am
-index 29797e4..1f9765a 100644
---- a/googletest/Makefile.am
-+++ b/googletest/Makefile.am
-@@ -208,7 +208,10 @@ pkginclude_internal_HEADERS = \
-   include/gtest/internal/gtest-port-arch.h \
-   include/gtest/internal/gtest-string.h \
-   include/gtest/internal/gtest-tuple.h \
--  include/gtest/internal/gtest-type-util.h \
-+  include/gtest/internal/gtest-type-util.h
-+
-+pkginclude_internal_customdir = $(pkgincludedir)/internal/custom
-+pkginclude_internal_custom_HEADERS = \
-   include/gtest/internal/custom/gtest.h \
-   include/gtest/internal/custom/gtest-port.h \
-   include/gtest/internal/custom/gtest-printers.h
-@@ -279,7 +282,7 @@ test_fused_gtest_test_CPPFLAGS = -I"$(srcdir)/fused-src"
- # scripts/fuse_gtest_files.py.
- $(test_fused_gtest_test_SOURCES): fused-gtest
- 
--fused-gtest: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) \
-+fused-gtest: $(pkginclude_HEADERS) $(pkginclude_internal_HEADERS) $(pkginclude_internal_custom_HEADERS) \
-              $(GTEST_SRC) src/gtest-all.cc src/gtest_main.cc \
-              scripts/fuse_gtest_files.py
- 	mkdir -p "$(srcdir)/fused-src"
-@@ -302,9 +305,11 @@ CLEANFILES = core
- # One-Definition Rule.
- 
- install-exec-local:
-+disabled-install-exec-local:
- 	echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system."
- 	false
- 
- install-data-local:
-+disabled-install-data-local:
- 	echo "'make install' is dangerous and not supported. Instead, see README for how to integrate Google Test into your build system."
- 	false
diff --git a/dev-cpp/arc-gtest/files/arc-gtest-1.8.0-threadlocal-api.patch b/dev-cpp/arc-gtest/files/arc-gtest-1.8.0-threadlocal-api.patch
deleted file mode 100644
index a9b92bc..0000000
--- a/dev-cpp/arc-gtest/files/arc-gtest-1.8.0-threadlocal-api.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Fixes crash with gtest when libc++ is enabled. Crash root cause
-is missing "default" visibility for ThreadLocal class. ThreadLocal
-class objects use typeinfo (typeid()) requiring "default" visibility.
-Upstream gtest bug: https://github.com/google/googletest/issues/1207
-
-diff -Nuar old/googletest/include/gtest/internal/gtest-port.h new/googletest/include/gtest/internal/gtest-port.h
---- old/googletest/include/gtest/internal/gtest-port.h
-+++ new/googletest/include/gtest/internal/gtest-port.h
-@@ -2027,7 +2027,7 @@
- 
- // Implements thread-local storage on pthreads-based systems.
- template <typename T>
--class ThreadLocal {
-+class GTEST_API_ ThreadLocal {
-  public:
-   ThreadLocal()
-       : key_(CreateKey()), default_factory_(new DefaultValueHolderFactory()) {}
diff --git a/dev-cpp/arc-gtest/files/configure-fix-pthread-linking.patch b/dev-cpp/arc-gtest/files/configure-fix-pthread-linking.patch
deleted file mode 100644
index 75e5219..0000000
--- a/dev-cpp/arc-gtest/files/configure-fix-pthread-linking.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From fb71154012e634a5e780e93af5434bcdafaf2b24 Mon Sep 17 00:00:00 2001
-From: Justin Bronder <jsbronder@gmail.com>
-Date: Mon, 15 Oct 2012 17:25:07 -0400
-Subject: [PATCH] configure:  fix pthread linking
-
-- Update the pthread check to make sure that we don't need -lpthread when
-compiling with -nostdlib.
-
-- Make sure that the necessary pthread library is passed to libtool.
-
-Fixes:
-
-$ ldd -r /usr/lib/libgtest.so
-    linux-vdso.so.1 (0x00007fffe7dff000)
-    libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/libstdc++.so.6 (0x00007fbe09a9f000)
-    libc.so.6 => /lib64/libc.so.6 (0x00007fbe096f7000)
-    libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/libgcc_s.so.1 (0x00007fbe094e1000)
-    libm.so.6 => /lib64/libm.so.6 (0x00007fbe091ee000)
-    /lib64/ld-linux-x86-64.so.2 (0x00007fbe0a005000)
-undefined symbol: pthread_key_create    (/usr/lib/libgtest.so)
-undefined symbol: pthread_getspecific   (/usr/lib/libgtest.so)
-undefined symbol: pthread_key_delete    (/usr/lib/libgtest.so)
-undefined symbol: pthread_setspecific   (/usr/lib/libgtest.so)
----
- Makefile.am       |    1 +
- m4/acx_pthread.m4 |   39 ++++++++++++++++++++++++++++++++++++++-
- 2 files changed, 39 insertions(+), 1 deletions(-)
-
-diff --git a/Makefile.am b/Makefile.am
-index cb350b7..db2606e 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -181,6 +181,7 @@ endif
- lib_LTLIBRARIES = lib/libgtest.la lib/libgtest_main.la
- 
- lib_libgtest_la_SOURCES = src/gtest-all.cc
-+lib_libgtest_la_LIBADD = $(AM_LIBS)
- 
- pkginclude_HEADERS = \
-   include/gtest/gtest-death-test.h \
-diff --git a/m4/acx_pthread.m4 b/m4/acx_pthread.m4
-index 2cf20de..7fba4d9 100644
---- a/m4/acx_pthread.m4
-+++ b/m4/acx_pthread.m4
-@@ -339,7 +339,44 @@ if test "x$acx_pthread_ok" = xyes; then
- 	   # so it's not safe to assume that we may use pthreads
- 	   acx_pthread_ok=no
- 	fi
--	
-+   
-+   AC_MSG_CHECKING([whether what we have so far is sufficient with -nostdlib])
-+   CFLAGS="-nostdlib $CFLAGS"
-+   # we need c with nostdlib
-+   LIBS="$LIBS -lc" 
-+   AC_TRY_LINK([#include <pthread.h>],
-+         [pthread_t th; pthread_join(th, 0);
-+         pthread_attr_init(0); pthread_cleanup_push(0, 0);
-+         pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
-+         [done=yes],[done=no])
-+      
-+   if test "x$done" = xyes; then
-+      AC_MSG_RESULT([yes])
-+   else
-+      AC_MSG_RESULT([no])
-+   fi
-+   
-+   if test x"$done" = xno; then
-+      AC_MSG_CHECKING([whether -lpthread saves the day])
-+      LIBS="-lpthread $LIBS"
-+      AC_TRY_LINK([#include <pthread.h>],
-+         [pthread_t th; pthread_join(th, 0);
-+         pthread_attr_init(0); pthread_cleanup_push(0, 0);
-+         pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
-+         [done=yes],[done=no])
-+
-+      if test "x$done" = xyes; then
-+         AC_MSG_RESULT([yes])
-+         PTHREAD_LIBS="$PTHREAD_LIBS -lpthread"
-+      else
-+         AC_MSG_RESULT([no])
-+         AC_MSG_WARN([Impossible to determine how to use pthreads with shared libraries and -nostdlib])
-+      fi
-+    fi
-+
-+    CFLAGS="$save_CFLAGS"
-+    LIBS="$save_LIBS"
-+    CC="$save_CC"	
- 	CFLAGS="$save_CFLAGS"
- 	LIBS="$save_LIBS"
- 	CC="$save_CC"
--- 
-1.7.8.6
-
diff --git a/dev-cpp/gtest/Manifest b/dev-cpp/gtest/Manifest
index dc26a69..c6884ff 100644
--- a/dev-cpp/gtest/Manifest
+++ b/dev-cpp/gtest/Manifest
@@ -1 +1 @@
-DIST gtest-1.8.2_pre.tar.gz 961649 BLAKE2B 2c518a4006e7a9decff3d4b81c30a910c01f6bf2a71593da25f6e74d5117cbf56de486078a3caf6be255df473fc1c2a04de5317cf882396114be0625d67d041b SHA512 623b077b3334958fafcbc34aa85891883277994af33be530efd903f47738a3e3562001cbf3b6da1a5e7d03803c5bd51bcc1fab81490db85d5a4f2b15e7de1495
+DIST gtest-1.10.0.tar.gz 904227 BLAKE2B 96b97b06730a9f55505a4d40bd4861560503a1437d29dadc6e8d3c743ccde020e61b3f96082fb9bda0666d739e69d3990bad06161e9c531c40021dc0826f5547 SHA512 7ebf5b4a80f364564066ccc7ce2e2092b12942a754c4854afd97380f19811e0fd45c300d423234cda0e05966ddbdaebcb1625e856ce55b0c81b0bae0dd971532
diff --git a/dev-cpp/gtest/files/gtest-1.8.0-increase-clone-stack-size.patch b/dev-cpp/gtest/files/gtest-1.8.0-increase-clone-stack-size.patch
deleted file mode 100644
index 22ac0b6..0000000
--- a/dev-cpp/gtest/files/gtest-1.8.0-increase-clone-stack-size.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-Bug: https://bugs.gentoo.org/629620
-Upstream PR: https://github.com/google/googletest/pull/1274
-
---- a/googletest/src/gtest-death-test.cc
-+++ b/googletest/src/gtest-death-test.cc
-@@ -1070,7 +1070,7 @@
- 
-   if (!use_fork) {
-     static const bool stack_grows_down = StackGrowsDown();
--    const size_t stack_size = getpagesize();
-+    const size_t stack_size = getpagesize() * 10;
-     // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
-     void* const stack = mmap(NULL, stack_size, PROT_READ | PROT_WRITE,
-                              MAP_ANON | MAP_PRIVATE, -1, 0);
diff --git a/dev-cpp/gtest/files/gtest-9999-fix-gcc6-undefined-behavior.patch b/dev-cpp/gtest/files/gtest-9999-fix-gcc6-undefined-behavior.patch
deleted file mode 100644
index 8dfed46..0000000
--- a/dev-cpp/gtest/files/gtest-9999-fix-gcc6-undefined-behavior.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-Fix build with GCC 6 due to lifetime issues.
-
---- a/googletest/src/gtest.cc
-+++ b/googletest/src/gtest.cc
-@@ -2693,10 +2693,12 @@
-     test->Run();
-   }
- 
-+  if (test != NULL) {
-     // Deletes the test object.
-     impl->os_stack_trace_getter()->UponLeavingGTest();
-     internal::HandleExceptionsInMethodIfSupported(
-         test, &Test::DeleteSelf_, "the test fixture's destructor");
-+  }
- 
-   result_.set_elapsed_time(internal::GetTimeInMillis() - start);
- 
diff --git a/dev-cpp/gtest/gtest-1.10.0.ebuild b/dev-cpp/gtest/gtest-1.10.0.ebuild
new file mode 100644
index 0000000..37b8533
--- /dev/null
+++ b/dev-cpp/gtest/gtest-1.10.0.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+# Python is required for tests and some build tasks.
+PYTHON_COMPAT=( python3_{6..9} pypy )
+
+inherit cmake-multilib python-any-r1
+
+if [[ ${PV} == "9999" ]]; then
+	inherit git-r3
+	EGIT_REPO_URI="https://github.com/google/googletest"
+else
+	SRC_URI="https://github.com/google/googletest/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+	KEYWORDS="*"
+	S="${WORKDIR}"/googletest-${PV%.?}.x
+fi
+
+DESCRIPTION="Google C++ Testing Framework"
+HOMEPAGE="https://github.com/google/googletest"
+
+LICENSE="BSD"
+SLOT="0"
+IUSE="doc examples test"
+
+RDEPEND="!dev-cpp/gmock"
+DEPEND="${RDEPEND}
+	test? ( ${PYTHON_DEPS} )"
+
+pkg_setup() {
+	use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+	cmake-utils_src_prepare
+
+	sed -i -e '/set(cxx_base_flags /s:-Werror::' \
+		googletest/cmake/internal_utils.cmake || die "sed failed!"
+}
+
+multilib_src_configure() {
+	# Building gtest with "-Os" breaks unit tests in asan builds,
+	# https://crbug.com/1069493
+	cros_optimize_package_for_speed
+	local mycmakeargs=(
+		-DBUILD_GMOCK=ON
+		-DINSTALL_GTEST=ON
+		-DBUILD_SHARED_LIBS=ON
+
+		# tests
+		-Dgmock_build_tests=$(usex test)
+		-Dgtest_build_tests=$(usex test)
+		-DPYTHON_EXECUTABLE="${PYTHON}"
+	)
+	cmake-utils_src_configure
+}
+
+multilib_src_install_all() {
+	einstalldocs
+
+	if use doc; then
+		docinto googletest
+		dodoc -r googletest/docs/.
+		docinto googlemock
+		dodoc -r googlemock/docs/.
+	fi
+
+	if use examples; then
+		docinto examples
+		dodoc googletest/samples/*.{cc,h}
+	fi
+}
diff --git a/dev-cpp/gtest/gtest-1.8.2_pre-r3.ebuild b/dev-cpp/gtest/gtest-1.8.2_pre-r3.ebuild
deleted file mode 120000
index 53a979a..0000000
--- a/dev-cpp/gtest/gtest-1.8.2_pre-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-gtest-1.8.2_pre.ebuild
\ No newline at end of file
diff --git a/dev-cpp/gtest/gtest-1.8.2_pre.ebuild b/dev-cpp/gtest/gtest-1.8.2_pre.ebuild
deleted file mode 100644
index 3e4569e..0000000
--- a/dev-cpp/gtest/gtest-1.8.2_pre.ebuild
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-# Python is required for tests and some build tasks.
-PYTHON_COMPAT=( python3_{6..9} pypy )
-
-inherit cmake-multilib python-any-r1
-
-if [[ ${PV} == "9999" ]]; then
-	inherit git-r3
-	EGIT_REPO_URI="https://github.com/google/googletest"
-else
-	# Chromium & breakpad use a newer version than the latest upstream release.
-	GIT_COMMIT="5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081"
-	SRC_URI="https://github.com/google/googletest/archive/${GIT_COMMIT}.tar.gz -> ${P}.tar.gz"
-	KEYWORDS="*"
-	S="${WORKDIR}"/googletest-${GIT_COMMIT}
-fi
-
-DESCRIPTION="Google C++ Testing Framework"
-HOMEPAGE="https://github.com/google/googletest"
-
-LICENSE="BSD"
-SLOT="0"
-IUSE="doc examples test"
-
-RDEPEND="!dev-cpp/gmock"
-DEPEND="${RDEPEND}
-	test? ( ${PYTHON_DEPS} )"
-
-PATCHES=(
-	"${FILESDIR}"/${PN}-9999-fix-gcc6-undefined-behavior.patch
-	"${FILESDIR}"/${PN}-1.8.0-increase-clone-stack-size.patch
-)
-
-pkg_setup() {
-	use test && python-any-r1_pkg_setup
-}
-
-src_prepare() {
-	cmake-utils_src_prepare
-
-	sed -i -e '/set(cxx_base_flags /s:-Werror::' \
-		googletest/cmake/internal_utils.cmake || die "sed failed!"
-}
-
-multilib_src_configure() {
-	# Building gtest with "-Os" breaks unit tests in asan builds,
-	# https://crbug.com/1069493
-	cros_optimize_package_for_speed
-	local mycmakeargs=(
-		-DBUILD_GMOCK=ON
-		-DINSTALL_GTEST=ON
-		-DBUILD_SHARED_LIBS=ON
-
-		# tests
-		-Dgmock_build_tests=$(usex test)
-		-Dgtest_build_tests=$(usex test)
-		-DPYTHON_EXECUTABLE="${PYTHON}"
-	)
-	cmake-utils_src_configure
-}
-
-multilib_src_install_all() {
-	einstalldocs
-
-	if use doc; then
-		docinto googletest
-		dodoc -r googletest/docs/.
-		docinto googlemock
-		dodoc -r googlemock/docs/.
-	fi
-
-	if use examples; then
-		docinto examples
-		dodoc googletest/samples/*.{cc,h}
-	fi
-}
diff --git a/dev-embedded/binman/binman-0.0.1-r1.ebuild b/dev-embedded/binman/binman-0.0.1-r1.ebuild
deleted file mode 100644
index 087c574..0000000
--- a/dev-embedded/binman/binman-0.0.1-r1.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="bc1199918e73f3f810b2eeb5dc38e71a5914772a"
-CROS_WORKON_TREE="34c69bae738990ef8d7fc18553b02f41305d9e79"
-CROS_WORKON_PROJECT="chromiumos/third_party/u-boot"
-CROS_WORKON_LOCALNAME="u-boot/files"
-CROS_WORKON_SUBTREE="tools/binman"
-
-PYTHON_COMPAT=( python3_6 python3_7 python3_8 )
-
-inherit cros-workon distutils-r1
-
-DESCRIPTION="Binman tool (from U-Boot) for creating / adjusting firmware images"
-HOMEPAGE="https://www.denx.de/wiki/U-Boot"
-
-LICENSE="GPL-2"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
-RDEPEND="
-	dev-embedded/dtoc
-	dev-vcs/patman
-"
-
-src_unpack() {
-	cros-workon_src_unpack
-
-	S+=/tools/binman
-}
diff --git a/dev-embedded/binman/binman-0.0.1-r6.ebuild b/dev-embedded/binman/binman-0.0.1-r6.ebuild
new file mode 100644
index 0000000..cd80f9d
--- /dev/null
+++ b/dev-embedded/binman/binman-0.0.1-r6.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2020 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="39ce6d27ad29fd324793a8d0c7db8ae712cc027c"
+CROS_WORKON_TREE="16384d991c25985ca4c0345c6b9fb7df570ff40c"
+CROS_WORKON_PROJECT="chromiumos/third_party/u-boot"
+CROS_WORKON_LOCALNAME="u-boot/files"
+CROS_WORKON_SUBTREE="tools/binman"
+
+PYTHON_COMPAT=( python3_6 python3_7 python3_8 )
+
+inherit cros-workon distutils-r1
+
+DESCRIPTION="Binman tool (from U-Boot) for creating / adjusting firmware images"
+HOMEPAGE="https://www.denx.de/wiki/U-Boot"
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+RDEPEND="
+	dev-embedded/dtoc
+	dev-vcs/patman
+"
+
+src_unpack() {
+	cros-workon_src_unpack
+
+	S+=/tools/binman
+}
diff --git a/dev-embedded/coreboot-sdk/coreboot-sdk-0.0.1-r104.ebuild b/dev-embedded/coreboot-sdk/coreboot-sdk-0.0.1-r104.ebuild
deleted file mode 100644
index ae80f25..0000000
--- a/dev-embedded/coreboot-sdk/coreboot-sdk-0.0.1-r104.ebuild
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b5340ffde7381253ef992a934b447b973e25113d"
-CROS_WORKON_TREE="9c76872c3e7ee7f33dd88e0286b0f067ccfc0535"
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-CROS_WORKON_LOCALNAME="coreboot"
-CROS_WORKON_SUBTREE="util/crossgcc"
-
-inherit cros-workon flag-o-matic multiprocessing
-
-DESCRIPTION="upstream coreboot's compiler suite"
-HOMEPAGE="https://www.coreboot.org"
-LICENSE="GPL-3 LGPL-3"
-KEYWORDS="*"
-
-# URIs taken from buildgcc -u
-# Needs to be synced with changes in the coreboot repo,
-# then pruned to the minimum required set (eg. no gdb, python, expat, llvm)
-CROSSGCC_URIS="
-https://ftpmirror.gnu.org/gmp/gmp-6.2.0.tar.xz
-https://ftpmirror.gnu.org/mpfr/mpfr-4.1.0.tar.xz
-https://ftpmirror.gnu.org/mpc/mpc-1.2.0.tar.gz
-https://ftpmirror.gnu.org/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz
-https://ftpmirror.gnu.org/binutils/binutils-2.35.1.tar.xz
-https://acpica.org/sites/acpica/files/acpica-unix2-20200925.tar.gz
-"
-
-SRC_URI="
-${CROSSGCC_URIS}
-http://mirrors.cdn.adacore.com/art/591c6d80c7a447af2deed1d7 -> gnat-gpl-2017-x86_64-linux-bin.tar.gz
-"
-
-buildgcc_failed() {
-	local arch="$1"
-
-	cat $(ls */.failed | sed "s,\.failed,build.log,")
-	die "building the compiler for ${arch} failed"
-}
-
-src_prepare() {
-	eapply_user
-
-	mkdir util/crossgcc/tarballs
-	ln -s "${DISTDIR}"/* util/crossgcc/tarballs/
-	unpack gnat-gpl-2017-x86_64-linux-bin.tar.gz
-	# buildgcc uses 'cc' to find gnat1 so it needs to find the gnat-gpl
-	# compiler under that name
-	ln -s gcc gnat-gpl-2017-x86_64-linux-bin/bin/cc
-	# Add a gcc patch to make it builds with glibc 2.26.
-	cp "${FILESDIR}/${PN}-gcc-ucontext.patch" "${S}/util/crossgcc/patches/gcc-6.3.0_ucontext.patch"
-}
-
-src_compile() {
-	# We're bootstrapping with an old compiler whose
-	# linker isn't happy about this flag.
-	filter-ldflags "-Wl,--icf=all"
-
-	cd util/crossgcc || die "couldn't enter crossgcc tree"
-
-	./buildgcc -d /opt/coreboot-sdk -D "${S}/out" -P iasl -t -j "$(makeopts_jobs)" \
-	|| buildgcc_failed "ACPI"
-
-	# To bootstrap the Ada build, an Ada compiler needs to be available. To
-	# make sure it interacts well with the C/C++ parts of the compiler,
-	# buildgcc asks gcc for the Ada compiler's path using the compiler's
-	# -print-prog-name option which only deals with programs from the very
-	# same compiler distribution, so make sure we use the right one.
-	export PATH="${S}"/gnat-gpl-2017-x86_64-linux-bin/bin:"${PATH}"
-	export CC=gcc CXX=g++
-
-	local buildgcc_opts=(-j "$(makeopts_jobs)" -l "c,ada" -t)
-
-	# Build bootstrap compiler to get a reliable compiler base no matter how
-	# versions diverged, but keep it separately, since we only need it
-	# during this build and not in the chroot.
-	./buildgcc -B -d "${S}"/bootstrap "${buildgcc_opts[@]}" \
-		|| buildgcc_failed "cros_sdk (bootstrap)"
-
-	export PATH="${S}/bootstrap/bin:${PATH}"
-
-	local architectures=(
-		i386-elf
-		x86_64-elf
-		arm-eabi
-		aarch64-elf
-		nds32le-elf
-		riscv-elf
-	)
-
-	local arch
-	for arch in "${architectures[@]}"; do
-		./buildgcc -d /opt/coreboot-sdk -D "${S}/out" -p "${arch}" \
-			"${buildgcc_opts[@]}" \
-		|| buildgcc_failed "${arch}"
-	done
-
-	rm -f "${S}"/out/opt/coreboot-sdk/lib/lib*.{la,a}
-}
-
-src_install() {
-	local files
-
-	dodir /opt
-	cp -a out/opt/coreboot-sdk "${D}"/opt/coreboot-sdk || die
-
-	readarray -t files < <(find "${D}" -name '*.[ao]' -printf "/%P\n")
-	dostrip -x "${files[@]}"
-}
diff --git a/dev-embedded/coreboot-sdk/coreboot-sdk-0.0.1-r109.ebuild b/dev-embedded/coreboot-sdk/coreboot-sdk-0.0.1-r109.ebuild
new file mode 100644
index 0000000..15aaf35
--- /dev/null
+++ b/dev-embedded/coreboot-sdk/coreboot-sdk-0.0.1-r109.ebuild
@@ -0,0 +1,110 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="2c22585ae3b677eddc44c3f765335eaf4c52996b"
+CROS_WORKON_TREE="b47f5c0dc4c30f5e0d8dd1c910278946c334ecad"
+CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
+CROS_WORKON_LOCALNAME="coreboot"
+CROS_WORKON_SUBTREE="util/crossgcc"
+
+inherit cros-workon flag-o-matic multiprocessing
+
+DESCRIPTION="upstream coreboot's compiler suite"
+HOMEPAGE="https://www.coreboot.org"
+LICENSE="GPL-3 LGPL-3"
+KEYWORDS="*"
+
+# URIs taken from buildgcc -u
+# Needs to be synced with changes in the coreboot repo,
+# then pruned to the minimum required set (eg. no gdb, python, expat, llvm)
+CROSSGCC_URIS="
+https://ftpmirror.gnu.org/gmp/gmp-6.2.0.tar.xz
+https://ftpmirror.gnu.org/mpfr/mpfr-4.1.0.tar.xz
+https://ftpmirror.gnu.org/mpc/mpc-1.2.0.tar.gz
+https://ftpmirror.gnu.org/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz
+https://ftpmirror.gnu.org/binutils/binutils-2.35.1.tar.xz
+https://acpica.org/sites/acpica/files/acpica-unix2-20200925.tar.gz
+"
+
+SRC_URI="
+${CROSSGCC_URIS}
+http://mirrors.cdn.adacore.com/art/591c6d80c7a447af2deed1d7 -> gnat-gpl-2017-x86_64-linux-bin.tar.gz
+"
+
+buildgcc_failed() {
+	local arch="$1"
+
+	cat $(ls */.failed | sed "s,\.failed,build.log,")
+	die "building the compiler for ${arch} failed"
+}
+
+src_prepare() {
+	eapply_user
+
+	mkdir util/crossgcc/tarballs
+	ln -s "${DISTDIR}"/* util/crossgcc/tarballs/
+	unpack gnat-gpl-2017-x86_64-linux-bin.tar.gz
+	# buildgcc uses 'cc' to find gnat1 so it needs to find the gnat-gpl
+	# compiler under that name
+	ln -s gcc gnat-gpl-2017-x86_64-linux-bin/bin/cc
+	# Add a gcc patch to make it builds with glibc 2.26.
+	cp "${FILESDIR}/${PN}-gcc-ucontext.patch" "${S}/util/crossgcc/patches/gcc-6.3.0_ucontext.patch"
+}
+
+src_compile() {
+	# We're bootstrapping with an old compiler whose
+	# linker isn't happy about this flag.
+	filter-ldflags "-Wl,--icf=all"
+
+	cd util/crossgcc || die "couldn't enter crossgcc tree"
+
+	./buildgcc -d /opt/coreboot-sdk -D "${S}/out" -P iasl -t -j "$(makeopts_jobs)" \
+	|| buildgcc_failed "ACPI"
+
+	# To bootstrap the Ada build, an Ada compiler needs to be available. To
+	# make sure it interacts well with the C/C++ parts of the compiler,
+	# buildgcc asks gcc for the Ada compiler's path using the compiler's
+	# -print-prog-name option which only deals with programs from the very
+	# same compiler distribution, so make sure we use the right one.
+	export PATH="${S}"/gnat-gpl-2017-x86_64-linux-bin/bin:"${PATH}"
+	export CC=gcc CXX=g++
+
+	local buildgcc_opts=(-j "$(makeopts_jobs)" -l "c,c++,ada" -t)
+
+	# Build bootstrap compiler to get a reliable compiler base no matter how
+	# versions diverged, but keep it separately, since we only need it
+	# during this build and not in the chroot.
+	./buildgcc -B -d "${S}"/bootstrap "${buildgcc_opts[@]}" \
+		|| buildgcc_failed "cros_sdk (bootstrap)"
+
+	export PATH="${S}/bootstrap/bin:${PATH}"
+
+	local architectures=(
+		i386-elf
+		x86_64-elf
+		arm-eabi
+		aarch64-elf
+		nds32le-elf
+		riscv-elf
+	)
+
+	local arch
+	for arch in "${architectures[@]}"; do
+		./buildgcc -d /opt/coreboot-sdk -D "${S}/out" -p "${arch}" \
+			"${buildgcc_opts[@]}" \
+		|| buildgcc_failed "${arch}"
+	done
+
+	rm -f "${S}"/out/opt/coreboot-sdk/lib/lib*.{la,a}
+}
+
+src_install() {
+	local files
+
+	dodir /opt
+	cp -a out/opt/coreboot-sdk "${D}"/opt/coreboot-sdk || die
+
+	readarray -t files < <(find "${D}" -name '*.[ao]' -printf "/%P\n")
+	dostrip -x "${files[@]}"
+}
diff --git a/dev-embedded/coreboot-sdk/coreboot-sdk-9999.ebuild b/dev-embedded/coreboot-sdk/coreboot-sdk-9999.ebuild
index db4a11d..cf73c88 100644
--- a/dev-embedded/coreboot-sdk/coreboot-sdk-9999.ebuild
+++ b/dev-embedded/coreboot-sdk/coreboot-sdk-9999.ebuild
@@ -68,7 +68,7 @@
 	export PATH="${S}"/gnat-gpl-2017-x86_64-linux-bin/bin:"${PATH}"
 	export CC=gcc CXX=g++
 
-	local buildgcc_opts=(-j "$(makeopts_jobs)" -l "c,ada" -t)
+	local buildgcc_opts=(-j "$(makeopts_jobs)" -l "c,c++,ada" -t)
 
 	# Build bootstrap compiler to get a reliable compiler base no matter how
 	# versions diverged, but keep it separately, since we only need it
diff --git a/dev-embedded/dtoc/dtoc-0.0.1-r1.ebuild b/dev-embedded/dtoc/dtoc-0.0.1-r1.ebuild
deleted file mode 100644
index d9dce77..0000000
--- a/dev-embedded/dtoc/dtoc-0.0.1-r1.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="bc1199918e73f3f810b2eeb5dc38e71a5914772a"
-CROS_WORKON_TREE="056aa2ec54c99a4f1e14b29aa279ce4694bdddd0"
-CROS_WORKON_PROJECT="chromiumos/third_party/u-boot"
-CROS_WORKON_LOCALNAME="u-boot/files"
-CROS_WORKON_SUBTREE="tools/dtoc"
-
-PYTHON_COMPAT=( python3_6 python3_7 python3_8 )
-
-inherit cros-workon distutils-r1
-
-DESCRIPTION="Dtoc tool (from U-Boot) for converting devicetree files to C"
-HOMEPAGE="https://www.denx.de/wiki/U-Boot"
-
-LICENSE="GPL-2"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
-RDEPEND="dev-vcs/patman"
-
-src_unpack() {
-	cros-workon_src_unpack
-
-	S+=/tools/dtoc
-}
diff --git a/dev-embedded/dtoc/dtoc-0.0.1-r3.ebuild b/dev-embedded/dtoc/dtoc-0.0.1-r3.ebuild
new file mode 100644
index 0000000..22d60bc
--- /dev/null
+++ b/dev-embedded/dtoc/dtoc-0.0.1-r3.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2020 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="ff8cb34d79384524ed81027f7d07a31f7405c27d"
+CROS_WORKON_TREE="b9d094a27545777931d3af534417c065aa9d9985"
+CROS_WORKON_PROJECT="chromiumos/third_party/u-boot"
+CROS_WORKON_LOCALNAME="u-boot/files"
+CROS_WORKON_SUBTREE="tools/dtoc"
+
+PYTHON_COMPAT=( python3_6 python3_7 python3_8 )
+
+inherit cros-workon distutils-r1
+
+DESCRIPTION="Dtoc tool (from U-Boot) for converting devicetree files to C"
+HOMEPAGE="https://www.denx.de/wiki/U-Boot"
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+RDEPEND="dev-vcs/patman"
+
+src_unpack() {
+	cros-workon_src_unpack
+
+	S+=/tools/dtoc
+}
diff --git a/dev-embedded/ftdi_eeprom/Manifest b/dev-embedded/ftdi_eeprom/Manifest
deleted file mode 100644
index 91e5ffe..0000000
--- a/dev-embedded/ftdi_eeprom/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST ftdi_eeprom-0.4_rc1.tar.gz 35296 RMD160 6cd3c273dc24739a1f3300b98b02467131dbd92b SHA1 3bc4ae7d43a9adcc842880dd74aef0fdff7f2247 SHA256 014535173150062af45190988b559c702073589aa5fb040974556dbac05fb065
diff --git a/dev-embedded/ftdi_eeprom/files/CHANGELOG b/dev-embedded/ftdi_eeprom/files/CHANGELOG
deleted file mode 100644
index bffc2df..0000000
--- a/dev-embedded/ftdi_eeprom/files/CHANGELOG
+++ /dev/null
@@ -1,9 +0,0 @@
-getopts.patch:
-- bugfix to allow programming of devices with default FTDI id:0x0403/0x6001
-  to a new vid/pid.  Previously, ftdi_eeprom assumed that the vid/pid in the
-  config file otherwise.  In addition, added ability to override serial number
-  in config file on command line.
-
-  Now to program board for first time:
-  ftdi_eeprom -v 0x403 -p 0x6001 -s 000-001 /usr/share/ftdi_eeprom/mini-servo.conf
-     where: inside mini-servo.conf vid/pid is 0x18d1/0x5000
diff --git a/dev-embedded/ftdi_eeprom/files/confs/mini-servo_rev-01.conf b/dev-embedded/ftdi_eeprom/files/confs/mini-servo_rev-01.conf
deleted file mode 100644
index 2d8f457..0000000
--- a/dev-embedded/ftdi_eeprom/files/confs/mini-servo_rev-01.conf
+++ /dev/null
@@ -1,46 +0,0 @@
-vendor_id=0x18d1
-product_id=0x5000
-
-max_power=0		# Max. power consumption: value * 2 mA. Use 0 if self_powered = true.
-
-###########
-# Strings #
-###########
-# total of these strings is  <= eeprom_size - 28bytes
-# for 232R ( 128B ) so 100bytes
-manufacturer="Google Inc"
-product="mini-servo:810-10011-00"
-serial="000-00000000"   #<eco>-<id>
-
-###########
-# Options #
-###########
-self_powered=true	# Turn this off for bus powered
-remote_wakeup=false	# Turn this on for remote wakeup feature
-use_serial=true		# Use the serial number string
-
-# Avail options: BM|R|other
-chip_type=R
-# Avail options:
-# TXDEN|PWREN|RXLED|TXLED|TXRXLED|SLEEP|CLK48|CLK24|CLK12|CLK6|
-# IO_MODE|BITBANG_WR|BITBANG_RD|SPECIAL
-cbus0=IO_MODE
-cbus1=IO_MODE
-cbus2=IO_MODE
-cbus3=IO_MODE
-cbus4=PWREN
-
-# Normally out don't have to change one of these flags
-# 2010/12/21 : tbroch : deprecated in ToT for chip_type
-#BM_type_chip=true 		# Newer chips are all BM type
-in_is_isochronous=false		# In Endpoint is Isochronous
-out_is_isochronous=false	# Out Endpoint is Isochronous
-suspend_pull_downs=false	# Enable suspend pull downs for lower power
-change_usb_version=false	# Change USB Version
-usb_version=0x0200		# Only used when change_usb_version is enabled
-
-########
-# Misc #
-########
-
-filename="eeprom.new"	# Filename, leave empty to skip file writing
diff --git a/dev-embedded/ftdi_eeprom/files/confs/mini-servo_rev-02.conf b/dev-embedded/ftdi_eeprom/files/confs/mini-servo_rev-02.conf
deleted file mode 100644
index e972bfa..0000000
--- a/dev-embedded/ftdi_eeprom/files/confs/mini-servo_rev-02.conf
+++ /dev/null
@@ -1,47 +0,0 @@
-vendor_id=0x18d1
-product_id=0x5000
-
-max_power=0		# Max. power consumption: value * 2 mA. Use 0 if self_powered = true.
-
-###########
-# Strings #
-###########
-# total of these strings is  <= eeprom_size - 28bytes
-# for 232R ( 128B ) so 100bytes
-manufacturer="Google Inc"
-product="mini-servo:810-10011-01"
-# serial <id> 3-digits hand-labelled on pack of mini-servos
-serial="000-000"   #<eco>-<id>
-
-###########
-# Options #
-###########
-self_powered=true	# Turn this off for bus powered
-remote_wakeup=false	# Turn this on for remote wakeup feature
-use_serial=true		# Use the serial number string
-
-# Avail options: BM|R|other
-chip_type=R
-# Avail options:
-# TXDEN|PWREN|RXLED|TXLED|TXRXLED|SLEEP|CLK48|CLK24|CLK12|CLK6|
-# IO_MODE|BITBANG_WR|BITBANG_RD|SPECIAL
-cbus0=IO_MODE
-cbus1=IO_MODE
-cbus2=IO_MODE
-cbus3=IO_MODE
-cbus4=PWREN
-
-# Normally out don't have to change one of these flags
-# 2010/12/21 : tbroch : deprecated in ToT for chip_type
-#BM_type_chip=true 		# Newer chips are all BM type
-in_is_isochronous=false		# In Endpoint is Isochronous
-out_is_isochronous=false	# Out Endpoint is Isochronous
-suspend_pull_downs=false	# Enable suspend pull downs for lower power
-change_usb_version=false	# Change USB Version
-usb_version=0x0200		# Only used when change_usb_version is enabled
-
-########
-# Misc #
-########
-
-filename="eeprom.new"	# Filename, leave empty to skip file writing
diff --git a/dev-embedded/ftdi_eeprom/files/confs/servo_rev-00.conf b/dev-embedded/ftdi_eeprom/files/confs/servo_rev-00.conf
deleted file mode 100644
index 505868e..0000000
--- a/dev-embedded/ftdi_eeprom/files/confs/servo_rev-00.conf
+++ /dev/null
@@ -1,37 +0,0 @@
-vendor_id=0x18d1
-product_id=0x5001
-
-max_power=0		# Max. power consumption: value * 2 mA. Use 0 if self_powered = true.
-
-###########
-# Strings #
-###########
-# total of these strings is  <= eeprom_size - 28bytes
-manufacturer="Google Inc"
-product="servo:810-10010-00"
-serial="000-00000"   #<eco>-<id>
-
-###########
-# Options #
-###########
-self_powered=true	# Turn this off for bus powered
-remote_wakeup=false	# Turn this on for remote wakeup feature
-use_serial=true		# Use the serial number string
-
-# Avail options: BM|R|other
-chip_type=BM
-
-# Normally out don't have to change one of these flags
-# 2010/12/21 : tbroch : deprecated in ToT for chip_type
-#BM_type_chip=true 		# Newer chips are all BM type
-in_is_isochronous=false		# In Endpoint is Isochronous
-out_is_isochronous=false	# Out Endpoint is Isochronous
-suspend_pull_downs=false	# Enable suspend pull downs for lower power
-change_usb_version=false	# Change USB Version
-usb_version=0x0200		# Only used when change_usb_version is enabled
-
-########
-# Misc #
-########
-
-filename="eeprom.new"	# Filename, leave empty to skip file writing
diff --git a/dev-embedded/ftdi_eeprom/files/confs/servo_rev-01.conf b/dev-embedded/ftdi_eeprom/files/confs/servo_rev-01.conf
deleted file mode 100644
index 30e53ed..0000000
--- a/dev-embedded/ftdi_eeprom/files/confs/servo_rev-01.conf
+++ /dev/null
@@ -1,37 +0,0 @@
-vendor_id=0x18d1
-product_id=0x5001
-
-max_power=0		# Max. power consumption: value * 2 mA. Use 0 if self_powered = true.
-
-###########
-# Strings #
-###########
-# total of these strings is  <= eeprom_size - 28bytes
-manufacturer="Google Inc"
-product="servo:810-10010-01"
-serial="000-00000"   #<eco>-<id>
-
-###########
-# Options #
-###########
-self_powered=true	# Turn this off for bus powered
-remote_wakeup=false	# Turn this on for remote wakeup feature
-use_serial=true		# Use the serial number string
-
-# Avail options: BM|R|other
-chip_type=BM
-
-# Normally out don't have to change one of these flags
-# 2010/12/21 : tbroch : deprecated in ToT for chip_type
-#BM_type_chip=true 		# Newer chips are all BM type
-in_is_isochronous=false		# In Endpoint is Isochronous
-out_is_isochronous=false	# Out Endpoint is Isochronous
-suspend_pull_downs=false	# Enable suspend pull downs for lower power
-change_usb_version=false	# Change USB Version
-usb_version=0x0200		# Only used when change_usb_version is enabled
-
-########
-# Misc #
-########
-
-filename="eeprom.new"	# Filename, leave empty to skip file writing
diff --git a/dev-embedded/ftdi_eeprom/files/confs/servo_rev-02a.conf b/dev-embedded/ftdi_eeprom/files/confs/servo_rev-02a.conf
deleted file mode 100644
index 34057e0..0000000
--- a/dev-embedded/ftdi_eeprom/files/confs/servo_rev-02a.conf
+++ /dev/null
@@ -1,37 +0,0 @@
-vendor_id=0x18d1
-product_id=0x5002
-
-max_power=0		# Max. power consumption: value * 2 mA. Use 0 if self_powered = true.
-
-###########
-# Strings #
-###########
-# total of these strings is  <= eeprom_size - 28bytes
-manufacturer="Google Inc"
-product="servo:810-10010-02"
-serial="000-00000"   #<eco>-<id>
-
-###########
-# Options #
-###########
-self_powered=true	# Turn this off for bus powered
-remote_wakeup=false	# Turn this on for remote wakeup feature
-use_serial=true		# Use the serial number string
-
-# Avail options: BM|R|other
-chip_type=BM
-
-# Normally out don't have to change one of these flags
-# 2010/12/21 : tbroch : deprecated in ToT for chip_type
-#BM_type_chip=true 		# Newer chips are all BM type
-in_is_isochronous=false		# In Endpoint is Isochronous
-out_is_isochronous=false	# Out Endpoint is Isochronous
-suspend_pull_downs=false	# Enable suspend pull downs for lower power
-change_usb_version=false	# Change USB Version
-usb_version=0x0200		# Only used when change_usb_version is enabled
-
-########
-# Misc #
-########
-
-filename="eeprom.new"	# Filename, leave empty to skip file writing
diff --git a/dev-embedded/ftdi_eeprom/files/confs/servo_rev-02b.conf b/dev-embedded/ftdi_eeprom/files/confs/servo_rev-02b.conf
deleted file mode 100644
index 235d5fd..0000000
--- a/dev-embedded/ftdi_eeprom/files/confs/servo_rev-02b.conf
+++ /dev/null
@@ -1,37 +0,0 @@
-vendor_id=0x18d1
-product_id=0x5003
-
-max_power=0		# Max. power consumption: value * 2 mA. Use 0 if self_powered = true.
-
-###########
-# Strings #
-###########
-# total of these strings is  <= eeprom_size - 28bytes
-manufacturer="Google Inc"
-product="servo:810-10010-02"
-serial="000-00000"   #<eco>-<id>
-
-###########
-# Options #
-###########
-self_powered=true	# Turn this off for bus powered
-remote_wakeup=false	# Turn this on for remote wakeup feature
-use_serial=true		# Use the serial number string
-
-# Avail options: BM|R|other
-chip_type=BM
-
-# Normally out don't have to change one of these flags
-# 2010/12/21 : tbroch : deprecated in ToT for chip_type
-#BM_type_chip=true 		# Newer chips are all BM type
-in_is_isochronous=false		# In Endpoint is Isochronous
-out_is_isochronous=false	# Out Endpoint is Isochronous
-suspend_pull_downs=false	# Enable suspend pull downs for lower power
-change_usb_version=false	# Change USB Version
-usb_version=0x0200		# Only used when change_usb_version is enabled
-
-########
-# Misc #
-########
-
-filename="eeprom.new"	# Filename, leave empty to skip file writing
diff --git a/dev-embedded/ftdi_eeprom/files/confs/servo_rev-03.conf b/dev-embedded/ftdi_eeprom/files/confs/servo_rev-03.conf
deleted file mode 100644
index 8f626b3..0000000
--- a/dev-embedded/ftdi_eeprom/files/confs/servo_rev-03.conf
+++ /dev/null
@@ -1,37 +0,0 @@
-vendor_id=0x18d1
-product_id=0x5004
-
-max_power=0		# Max. power consumption: value * 2 mA. Use 0 if self_powered = true.
-
-###########
-# Strings #
-###########
-# total of these strings is  <= eeprom_size - 28bytes
-manufacturer="Google Inc"
-product="servo:810-10036-00"
-serial="000-00000"   #<eco>-<id>
-
-###########
-# Options #
-###########
-self_powered=true	# Turn this off for bus powered
-remote_wakeup=false	# Turn this on for remote wakeup feature
-use_serial=true		# Use the serial number string
-
-# Avail options: BM|R|other
-chip_type=BM
-
-# Normally out don't have to change one of these flags
-# 2010/12/21 : tbroch : deprecated in ToT for chip_type
-#BM_type_chip=true 		# Newer chips are all BM type
-in_is_isochronous=false		# In Endpoint is Isochronous
-out_is_isochronous=false	# Out Endpoint is Isochronous
-suspend_pull_downs=false	# Enable suspend pull downs for lower power
-change_usb_version=false	# Change USB Version
-usb_version=0x0200		# Only used when change_usb_version is enabled
-
-########
-# Misc #
-########
-
-filename="eeprom.new"	# Filename, leave empty to skip file writing
diff --git a/dev-embedded/ftdi_eeprom/files/getopts.patch b/dev-embedded/ftdi_eeprom/files/getopts.patch
deleted file mode 100644
index 5a549bb..0000000
--- a/dev-embedded/ftdi_eeprom/files/getopts.patch
+++ /dev/null
@@ -1,148 +0,0 @@
-diff --git a/src/main.c b/src/main.c
-index 81e6e93..972cc92 100644
---- a/src/main.c
-+++ b/src/main.c
-@@ -21,6 +21,7 @@
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
-+#include <getopt.h>
- 
- #include <confuse.h>
- #include <ftdi.h>
-@@ -90,6 +91,9 @@ int main(int argc, char *argv[])
-     normal variables
-     */
-     int _read = 0, _erase = 0, _flash = 0;
-+    int _vendor = 0x0403, _product = 0x6011;
-+    char _serial[128] = {'\0'};
-+
-     unsigned char eeprom_buf[128];
-     char *filename;
-     int size_check;
-@@ -102,35 +106,68 @@ int main(int argc, char *argv[])
-     printf("\nFTDI eeprom generator v%s\n", VERSION);
-     printf ("(c) Intra2net AG <opensource@intra2net.com>\n");
- 
--    if (argc != 2 && argc != 3)
-+    int longval = 0;
-+    struct option long_options[] = {
-+      {"read-eeprom", no_argument, &_read, 1},
-+      {"erase-eeprom", no_argument, &_erase, 1},
-+      {"flash-eeprom", no_argument, &_flash, 1},
-+      {"vendor", required_argument, &longval, 'v'},
-+      {"product", required_argument, &longval, 'p'},
-+      {"serial", required_argument, &longval, 's'},
-+      {0, 0, 0, 0}
-+    };
-+
-+    int option_index = 0;
-+    char c;
-+    while ((c = getopt_long(argc, argv, "v:p:s:", 
-+                            long_options, &option_index)) != -1)  {
-+      switch (c) {
-+        case 'v':
-+          _vendor = strtoul(optarg, NULL, 0);
-+          break;
-+        case 'p':
-+          _product = strtoul(optarg, NULL, 0);
-+          break;
-+        case 's':
-+          strcpy(_serial, optarg);
-+          break;
-+        case 0:
-+          switch (longval) {
-+            case 'v':
-+              _vendor = strtoul(optarg, NULL, 0);
-+              break;
-+            case 'p':
-+              _product = strtoul(optarg, NULL, 0);
-+              break;
-+            case 's':
-+              strcpy(_serial, optarg);
-+              break;
-+            default:
-+              break;
-+          }
-+        default:
-+          break;
-+      }
-+    }
-+
-+    if (!_read & !_erase & !_flash)
-     {
--        printf("Syntax: %s [commands] config-file\n", argv[0]);
-+        printf("Syntax: %s [switches|command] config-file\n", argv[0]);
-         printf("Valid commands:\n");
--        printf("--read-eeprom  Read eeprom and write to -filename- from config-file\n");
--        printf("--erase-eeprom  Erase eeprom\n");
--        printf("--flash-eeprom  Flash eeprom\n");
-+        printf("--read-eeprom        Read eeprom and write to -filename- from config-file\n");
-+        printf("--erase-eeprom       Erase eeprom\n");
-+        printf("--flash-eeprom       Flash eeprom\n");
-+        printf("--vendor|-v <num>    Vendor id to probe for on USB\n");
-+        printf("--product|-p <num>   Product id to probe for on USB\n");
-+        printf("--serial|-s <string> Serial string to override\n");
-         exit (-1);
-     }
- 
--    if (argc == 3)
--    {
--        if (strcmp(argv[1], "--read-eeprom") == 0)
--            _read = 1;
--        if (strcmp(argv[1], "--erase-eeprom") == 0)
--            _erase = 1;
--        if (strcmp(argv[1], "--flash-eeprom") == 0)
--            _flash = 1;
--
--        argc_filename = 2;
--    }
--    else
--    {
--        argc_filename = 1;
--    }
-+    argc_filename = optind;
- 
-     if ((fp = fopen(argv[argc_filename], "r")) == NULL)
-     {
--        printf ("Can't open configuration file\n");
-+        printf ("Can't open configuration file %s\n", argv[argc_filename]);
-         exit (-1);
-     }
-     fclose (fp);
-@@ -163,14 +200,16 @@ int main(int argc, char *argv[])
-     eeprom.out_is_isochronous = cfg_getbool(cfg, "out_is_isochronous");
-     eeprom.suspend_pull_downs = cfg_getbool(cfg, "suspend_pull_downs");
- 
--    eeprom.use_serial = cfg_getbool(cfg, "use_serial");
-+    eeprom.use_serial = (_serial[0] == '\0') ? 
-+                        cfg_getbool(cfg, "use_serial") : 1;
-     eeprom.change_usb_version = cfg_getbool(cfg, "change_usb_version");
-     eeprom.usb_version = cfg_getint(cfg, "usb_version");
- 
- 
-     eeprom.manufacturer = cfg_getstr(cfg, "manufacturer");
-     eeprom.product = cfg_getstr(cfg, "product");
--    eeprom.serial = cfg_getstr(cfg, "serial");
-+    eeprom.serial = (_serial[0] == '\0') ? 
-+                    cfg_getstr(cfg, "serial") : _serial;
-     eeprom.high_current = cfg_getbool(cfg, "high_current");
-     eeprom.cbus_function[0] = str_to_cbus(cfg_getstr(cfg, "cbus0"), 13);
-     eeprom.cbus_function[1] = str_to_cbus(cfg_getstr(cfg, "cbus1"), 13);
-@@ -198,11 +237,12 @@ int main(int argc, char *argv[])
-         }
-         else
-         {
--            printf("Unable to find FTDI devices under given vendor/product id: 0x%X/0x%X\n", eeprom.vendor_id, eeprom.product_id);
--            printf("Error code: %d (%s)\n", i, ftdi_get_error_string(&ftdi));
--            printf("Retrying with default FTDI id.\n");
-+            printf("Unable to find FTDI devices under given id:0x%02x/0x%02x\n", 
-+                   eeprom.vendor_id, eeprom.product_id);
- 
--            i = ftdi_usb_open(&ftdi, 0x0403, 0x6001);
-+            printf("Error code: %d (%s)\n", i, ftdi_get_error_string(&ftdi));
-+            printf("Retrying with id:0x%02x/0x%02x\n", _vendor, _product);
-+            i = ftdi_usb_open(&ftdi, _vendor, _product);
-             if (i != 0)
-             {
-                 printf("Error: %s\n", ftdi.error_str);
diff --git a/dev-embedded/ftdi_eeprom/ftdi_eeprom-0.4_rc1.ebuild b/dev-embedded/ftdi_eeprom/ftdi_eeprom-0.4_rc1.ebuild
deleted file mode 100644
index e718e14..0000000
--- a/dev-embedded/ftdi_eeprom/ftdi_eeprom-0.4_rc1.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-embedded/ftdi_eeprom/ftdi_eeprom-0.3.ebuild,v 1.1 2010/06/22 22:19:02 vapier Exp $
-
-EAPI="2"
-
-inherit autotools
-
-DESCRIPTION="Utility to program external EEPROM for FTDI USB chips"
-HOMEPAGE="http://www.intra2net.com/en/developer/libftdi/"
-#
-# from HEAD 08d3572 'Support for FT232R eeprom features'
-#
-SRC_URI="http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/${PN}-${PV}.tar.gz"
-
-LICENSE="LGPL-2"
-SLOT="0"
-KEYWORDS="x86 amd64"
-IUSE=""
-
-DEPEND=">=dev-embedded/libftdi-0.19
-	dev-libs/confuse"
-
-src_prepare() {
-	epatch ${FILESDIR}/getopts.patch || die "patching getopts.patch"
-	eautoreconf      
-}
-
-src_install() {
-	emake DESTDIR="${D}" install || die
-	insinto "/usr/share/ftdi_eeprom"
-	for item in ${FILESDIR}/confs/*.conf; do
-		doins ${item}
-	done
-	dodoc AUTHORS ChangeLog README src/example.conf
-}
diff --git a/dev-embedded/ftdi_eeprom/metadata.xml b/dev-embedded/ftdi_eeprom/metadata.xml
deleted file mode 100644
index 9211408..0000000
--- a/dev-embedded/ftdi_eeprom/metadata.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>dev-embedded</herd>
-</pkgmetadata>
diff --git a/dev-embedded/ti50-sdk/Manifest b/dev-embedded/ti50-sdk/Manifest
new file mode 100644
index 0000000..f3a4cdd
--- /dev/null
+++ b/dev-embedded/ti50-sdk/Manifest
@@ -0,0 +1,7 @@
+DIST llvm-bb852a09ae36-src.tar.xz 79528080 BLAKE2B 245b0f5a802f8bc8c0097d0dc22dec277530f859a596fb19853cbdc2cebb1a429eb845d65c1592a2e06c4036d6f3dfc70796034c8a9027d232b42a2c9cff570e SHA512 54545c6e9c6769735840900216a5a98912a6e9892356fcf3bc12b27e33075d5ca5e28ac513aa3fa57b5b9e918a7f4a56dcd6756f7b0e658c9b73138bfa447faa
+DIST newlib-1debd4d635c2-src.tar.xz 7487188 BLAKE2B a6423aadb17e98ec4aee5140710e5cf80a34a46ca9ce70eb4ea9c91ce4a03114adf124b31ed0f5b0da06c56f6f3ea4f07270a768ef5cffe8a406cafbda31be63 SHA512 9aa5a81582036437f0d2611175339117b28d5e48c0a617e9b2d96e386d135069fda0b04ff800f30df9ec311800df3b22e90dad853b037e6b9f15c4c6b8c0e94e
+DIST rust-0da58007451a-cargo-beta-x86_64-unknown-linux-gnu.tar.xz 5486440 BLAKE2B 2638950ef0f57875ca7e29468a211154d3719041e07bb7576e4721245f84792f777433ead1e85b4281e7427a59b078d7f401dc7225cd4e9c156d0181f4c4c2b1 SHA512 bdc7ee6fe8617ff650d69c6bd37e37a073393db19a0c7ba1677e7c1cfc65880d6799437b8a3be1fe868c3265d9c0f62b78ecb81ebe835c64617fabfb6e5eddfa
+DIST rust-0da58007451a-rust-std-beta-x86_64-unknown-linux-gnu.tar.xz 22212148 BLAKE2B 479cc2db11c1c521096d9f291a3b5dc33aa405140bf525312aee466cc30976b0c0272975a7687f366b2b1b31e37b24f032cc650ea56314b66f9b63da854527de SHA512 40ee6b336a03eb4cd9cfe695b1b32da63811f680baad7bb68f598228765ff9f2f14e65a161b9d85edf2163e7aea6573f180780b17f7689061fc20fd35edb7823
+DIST rust-0da58007451a-rustc-0da58007451a-src.tar.xz 124166452 BLAKE2B dcc7ee19c820ce454850acb3ee7944b17fc9f0a593d143d14e5dbff42520650da362f58cbf054e77406a72499ee4ba285826b33331dc976b5efab0b85e620cd5 SHA512 e354ff4a96b7d4d54d965715f158926cec97ef454e04d530687a55631a0fb7b67cc93a10b4baf98e76ae37341d11de3f89d16ea53284ace0d1d7d8aa172b1247
+DIST rust-0da58007451a-rustc-beta-x86_64-unknown-linux-gnu.tar.xz 55643092 BLAKE2B 02d62b612c8e4cd0fe2e3f309158f2404dcbbbf8d365987939ec021c80ddfc304ca7dcc1c2908744c5653857a0de02d58e66c2a61527bb11724f12cf39201c16 SHA512 c690557535ef32ecbfc8b52070b25f309e0567804ccb9bd38752acbfdf7a367cf1affb919ee096e66968b0f2ffc7ecd7def37b4b5831a224cac4a401f0aa84a4
+DIST rust-0da58007451a-rustfmt-beta-x86_64-unknown-linux-gnu.tar.xz 3712524 BLAKE2B 26e769e4db118dac58426e93dda2f11a51c7de6fc8949ca62728dd7df02e994a06e282f2ba2cc84db7aff5e301ffbcae9214724960da748992bd73b9be27cec2 SHA512 221e20dc9114a5525708112cbd34ae40a689bc0a0b20e4728cafb57cddb8827fa250ecb2724cfd138f79be8666c00594ef394cbf59b9ce3a5d5a3323041f66c0
diff --git a/dev-embedded/ti50-sdk/OWNERS b/dev-embedded/ti50-sdk/OWNERS
new file mode 100644
index 0000000..a1109cb
--- /dev/null
+++ b/dev-embedded/ti50-sdk/OWNERS
@@ -0,0 +1,2 @@
+apronin@google.com
+sukhomlinov@google.com
diff --git a/dev-embedded/ti50-sdk/README.md b/dev-embedded/ti50-sdk/README.md
new file mode 100644
index 0000000..7fa5fa2
--- /dev/null
+++ b/dev-embedded/ti50-sdk/README.md
@@ -0,0 +1,121 @@
+# ti50-sdk
+
+This package is the toolchain for the ti50 effort (go/ti50). It's composed of a
+riscv-enabled C/C++ toolchain, and a riscv-enabled Rust toolchain. It's
+currently supported by the ti50 team.
+
+# Upgrading
+
+`dev-embedded/ti50-sdk` is logically composed of three parts: clang, newlib, and
+rust. It's possible to upgrade each of these independently.
+
+That said, a common point between all of these is how sources are stored: a dev
+uses `files/pack_git_tarball.py` to pack a source tarball, then uploads said
+tarball to `gs://chromeos-localmirror/distfiles`.
+
+Example per-project invocations of `files/pack_git_tarball.py` are available
+below. It's important to keep in mind that **once you upload a new tarball and
+point the ti50-sdk ebuild at it, you need to run `ebuild $(equery w
+dev-embedded/ti50-sdk) manifest`**. Otherwise, when you try to download these
+files from `gs://chromeos-localmirror`, you'll get file integrity errors.
+
+It's important to note that `chromeos-localmirror` is a large, shared bucket.
+Things uploaded to it aren't "final" (e.g., feel free to update them) until a
+commit depending on them is landed. After such a commit lands, files aren't to
+be changed. You can read more
+[here](https://chromium.googlesource.com/chromiumos/docs/+/HEAD/archive_mirrors.md).
+
+Additionally, any patches done to upstream sources should be done *explicitly*
+in the ebuild. Tarballs uploaded to chromeos-localmirror are expected to be
+clean and true mirrors of the sets of sources available upstream.
+
+## Upgrading clang
+
+In order to upgrade clang, you'll need a tarball of [clang's and LLVM's
+sources](https://github.com/llvm/llvm-project) at the SHA you're interested in.
+Once you have that at `${dir}`, you can create a git tarball:
+
+```
+files/pack_git_tarball.py --git-dir "${dir}" --output-prefix /tmp/llvm
+```
+
+This should give you a path that looks like `/tmp/llvm-${sha}-src.tar.xz`. You
+can now upload that to gs:
+
+```
+gsutil cp -n -a public-read /tmp/llvm-${sha}-src.tar.xz \
+    gs://chromeos-localmirror/distfiles/llvm-${sha}-src.tar.xz
+```
+
+After running `ebuild manifest` as described in the section above, you should be
+able to start testing these changes via `sudo emerge dev-embedded/ti50-sdk`.
+
+## Upgrading newlib
+
+In order to upgrade newlib, you'll need to pull it from [its
+upstream repo](https://sourceware.org/git/newlib-cygwin.git). With that at
+`${dir}`, you can create a git tarball:
+
+```
+files/pack_git_tarball.py --git-dir "${dir}" --output-prefix /tmp/newlib
+```
+
+This should give you a path that looks like `/tmp/newlib-${sha}-src.tar.xz`. You
+can now upload that to gs:
+
+```
+gsutil cp -n -a public-read /tmp/newlib-${sha}-src.tar.xz \
+    gs://chromeos-localmirror/distfiles/newlib-${sha}-src.tar.xz
+```
+
+After running `ebuild manifest` as described in the section above, you should be
+able to start testing these changes via `sudo emerge dev-embedded/ti50-sdk`.
+
+## Upgrading rust
+
+In order to upgrade rust, you'll need to pull it from [its upstream
+repo](https://github.com/rust-lang/rust). With that at
+`${dir}`, you can create a git tarball. **Note** that Rust makes use of two
+things that add complexity here:
+
+- Submodules
+- Vendored dependencies
+
+A convenient shorthand to ensure all submodules are at the correct revision is
+`${dir}/x.py help`. You have to manually ensure all submodules are up-to-date
+before trying to pack rust's sources. Without this, things may be at
+inconsistent versions, which can lead to build errors.
+
+Dependency vendoring is handled by passing an extra flag to
+`files/pack_git_tarball.py`. Your invocation should look something like:
+
+```
+files/pack_git_tarball.py --git-dir "${dir}" --output-prefix /tmp/rustc \
+    --post-copy-command 'cargo vendor'
+```
+
+(Emphasis on "please ensure `--post-copy-command 'cargo vendor'` is specified."
+Your build will break otherwise. :) )
+
+This should give you a path that looks like `/tmp/rustc-${sha}-src.tar.xz`. You
+can now upload that to gs:
+
+```
+gsutil cp -n -a public-read /tmp/rustc-${sha}-src.tar.xz \
+    gs://chromeos-localmirror/distfiles/rustc-${sha}-src.tar.xz
+```
+
+After running `ebuild manifest` as described in the section above, you should be
+able to start testing these changes via `sudo emerge dev-embedded/ti50-sdk`.
+
+## Iterative development
+
+Standard ebuild development practices apply here: `sudo emerge
+dev-embedded/ti50-sdk` will clean everything up and start all builds from
+scratch. This is desirable in many cases, but not so much when trying to iterate
+with a broken toolchain.
+
+The flow the author (gbiv@) used boiled down to `sudo ebuild $(equery w
+dev-embedded/ti50-sdk) compile`, which is much more lightweight when e.g.,
+trying to figure out why Rust is broken, since it doesn't require a full, fresh
+build of LLVM + newlib on every iteration.
diff --git a/dev-embedded/ti50-sdk/files/build_clang_toolchain.py b/dev-embedded/ti50-sdk/files/build_clang_toolchain.py
new file mode 100755
index 0000000..84559c4
--- /dev/null
+++ b/dev-embedded/ti50-sdk/files/build_clang_toolchain.py
@@ -0,0 +1,403 @@
+#!/usr/bin/env python3
+# Copyright 2021 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.
+"""Builds the clang toolchain for Ti50."""
+
+# pylint: disable=cros-logging-import
+
+import argparse
+import logging
+import os
+from pathlib import Path
+import shlex
+import shutil
+import subprocess
+import sys
+from typing import List
+
+# CFlags used when building RISCV runtime libraries.
+RISCV_RUNTIME_CFLAGS = (
+    '-O2',
+    '--target=riscv32-unknown-elf',
+    '-DVISIBILITY_HIDDEN',
+    '-DNDEBUG',
+    '-fno-builtin',
+    '-fvisibility=hidden',
+    '-fomit-frame-pointer',
+    '-mno-relax',
+    '-fforce-enable-int128',
+    '-DCRT_HAS_INITFINI_ARRAY',
+    '-march=rv32imcxsoteria',
+    '-ffunction-sections',
+    '-fdata-sections',
+    '-fstack-size-section',
+    '-mcmodel=medlow',
+    '-Wno-unused-command-line-argument',
+)
+
+# Flags passed to cmake command for building LLVM
+# TODO(sukhomlinov): These args are copy-pasted; they might not all be
+# necessary.
+CMAKE_FLAGS = (
+    '-G',
+    'Ninja',
+    '-DCMAKE_BUILD_TYPE=Release',
+    '-DLLVM_ENABLE_LIBCXX=ON',
+    '-DLLVM_OPTIMIZED_TABLEGEN=ON',
+    '-DLLVM_BUILD_TESTS=OFF',
+    '-DCLANG_ENABLE_STATIC_ANALYZER=ON',
+    '-DCLANG_DEFAULT_RTLIB="compiler-rt"',
+    '-DLLVM_DEFAULT_TARGET_TRIPLE=riscv32-unknown-elf',
+    '-DLLVM_INSTALL_BINUTILS_SYMLINKS=ON',
+    '-DLLVM_INSTALL_CCTOOLS_SYMLINKS=ON',
+    '-DCLANG_DEFAULT_LINKER=ld.lld',
+    '-DLLVM_ENABLE_BACKTRACES=OFF',
+    '-DLLVM_INCLUDE_EXAMPLES=OFF',
+    '-DLLVM_DYLIB_COMPONENTS=""',
+    '-DLLVM_LINK_LLVM_DYLIB=OFF',
+    '-DLLVM_BUILD_STATIC=OFF',
+    '-DLLVM_INSTALL_UTILS=ON',
+    '-DLLVM_ENABLE_Z3_SOLVER=OFF',
+    '-DLLVM_USE_RELATIVE_PATHS_IN_FILES=ON',
+    '-DLLVM_TARGETS_TO_BUILD=RISCV;X86',
+    '-DLLVM_ENABLE_PROJECTS=clang;clang-tools-extra;lldb;lld;polly',
+)
+
+# Flags for configuring newlib.
+NEWLIB_CONFIG_FLAGS = (
+    '--target=riscv32-unknown-elf',
+    '--enable-newlib-reent-small',
+    '--disable-newlib-fvwrite-in-streamio',
+    '--disable-newlib-fseek-optimization',
+    '--disable-newlib-wide-orient',
+    '--enable-newlib-nano-malloc',
+    '--disable-newlib-unbuf-stream-opt',
+    '--enable-lite-exit',
+    '--enable-newlib-global-atexit',
+    '--enable-newlib-nano-formatted-io',
+    '--disable-newlib-supplied-syscalls',
+    '--disable-nls',
+    '--enable-newlib-io-c99-formats',
+    '--enable-newlib-io-long-long',
+)
+
+
+def remove_path_if_exists(file_or_dir: Path):
+  """Removes the given file/directory/symlink if it exists."""
+  if file_or_dir.is_file() or file_or_dir.is_symlink():
+    file_or_dir.unlink()
+  elif file_or_dir.is_dir():
+    shutil.rmtree(file_or_dir)
+  else:
+    assert not file_or_dir.exists(), file_or_dir
+
+
+def find_clang_resource_dir(llvm_install_dir: Path) -> Path:
+  """Locates the resource directory of the clang in |llvm_install_dir|."""
+  return Path(
+      subprocess.check_output(
+          [str(llvm_install_dir / 'bin' / 'clang'), '-print-resource-dir'],
+          encoding='utf-8',
+      ).strip())
+
+
+def build_llvm(llvm_dir: Path, build_dir: Path, install_dir: Path):
+  """Builds and installs LLVM to install_dir, plus crt{begin,end} for RISCV."""
+  build_dir.mkdir(parents=True, exist_ok=True)
+
+  if not (build_dir / 'build.ninja').exists():
+    logging.info('Configuring LLVM')
+    cmd = [
+        'cmake',
+        f'-DCMAKE_INSTALL_PREFIX={install_dir}',
+        f'-DDEFAULT_SYSROOT={install_dir}',
+        f'-DGCC_INSTALL_PREFIX={install_dir}',
+        str(llvm_dir / 'llvm'),
+    ]
+    cmd += CMAKE_FLAGS
+    subprocess.check_call(cmd, cwd=build_dir)
+
+  logging.info('Building + installing LLVM')
+  subprocess.check_call(['ninja', 'install'], cwd=build_dir)
+
+  # And now we build the runtime library. Whee.
+  clang_rtlib_prefix = [
+      str(install_dir / 'bin' / 'clang'),
+      '-c',
+      '-v',
+  ]
+  clang_rtlib_prefix += RISCV_RUNTIME_CFLAGS
+
+  libdir = find_clang_resource_dir(install_dir)
+  (libdir / 'lib').mkdir(parents=True, exist_ok=True)
+  subprocess.check_call(clang_rtlib_prefix + [
+      str(llvm_dir / 'compiler-rt' / 'lib' / 'crt' / 'crtbegin.c'),
+      '-o',
+      str(libdir / 'lib' / 'clang_rt.crtbegin-riscv32.o'),
+  ])
+
+  subprocess.check_call(clang_rtlib_prefix + [
+      str(llvm_dir / 'compiler-rt' / 'lib' / 'crt' / 'crtend.c'),
+      '-o',
+      str(libdir / 'lib' / 'clang_rt.crtend-riscv32.o'),
+  ])
+
+
+def build_newlib(rv_clang_bin: Path, newlib_dir: Path, newlib_build_dir: Path,
+                 install_dir: Path):
+  """Builds and installs newlib into |install_dir|."""
+  newlib_build_dir.mkdir(parents=True)
+
+  logging.info("Setting up newlib's build")
+
+  env_with_rv_clang = os.environ.copy()
+  # ...I don't *want* to have all of this in the environment, but if all of
+  # this (ignoring PATH) is provided to |./configure| as args, |make| gets
+  # angry that it doesn't see the same values in its environment when invoked.
+  #
+  # TODO(sukhomlinov): This seems like brokenness in newlib, maybe?
+  env_with_rv_clang.update({
+      'LDFLAGS': f'{env_with_rv_clang.get("LDFLAGS", "")} -fuse-ld=lld',
+      'PATH': f'{rv_clang_bin}:{env_with_rv_clang["PATH"]}',
+  })
+
+  tool_substitutions = (
+      ('AR', 'llvm-ar'),
+      ('AS', 'llvm-as'),
+      ('NM', 'llvm-nm'),
+      ('OBJDUMP', 'llvm-objdump'),
+      ('RANLIB', 'llvm-ranlib'),
+  )
+
+  for var_name, executable in tool_substitutions:
+    executable_path = install_dir / 'bin' / executable
+    env_with_rv_clang.update({
+        var_name: executable_path,
+        f'{var_name}_FOR_TARGET': executable_path,
+    })
+
+  env_with_rv_clang.update({
+      f'{var_name}_FOR_TARGET': install_dir / 'bin' / exe
+      for var_name, exe in (('CC', 'clang'), ('CXX', 'clang++'))
+  })
+
+  cmd = [
+      './configure',
+      f'--prefix={newlib_build_dir}',
+      f'CFLAGS_FOR_TARGET={" ".join(RISCV_RUNTIME_CFLAGS)}',
+      f'CXXFLAGS_FOR_TARGET={" ".join(RISCV_RUNTIME_CFLAGS)}',
+      'LDFLAGS=-fuse-ld=lld',
+      'LDFLAGS_FOR_TARGET=-fuse-ld=lld',
+  ]
+  cmd += NEWLIB_CONFIG_FLAGS
+  subprocess.check_call(cmd, cwd=newlib_dir, env=env_with_rv_clang)
+
+  logging.info('Building newlib')
+
+  jobs = f'-j{os.cpu_count()}'
+  subprocess.check_call(['make', jobs], cwd=newlib_dir, env=env_with_rv_clang)
+  subprocess.check_call(['make', jobs, 'install'],
+                        cwd=newlib_dir,
+                        env=env_with_rv_clang)
+
+  logging.info("Fixing newlib's installation")
+  # Quoting the script that I'm basing this off of:
+  # """
+  # move includes/libs to where they can be found by default
+  # this is also a hack, but avoid adding paths explicitly
+  # This is because riscv32-unknown-elf target only use
+  # $INSTALL_DIR/lib and $INSTALL_DIR/lib/clang/11.0.0/lib paths,
+  # ignoring --libdir and --sysroot for cmake configure
+  # $INSTALL_DIR/include contains llvm headers not used for C compilation
+  # normally, unless you build llvm tools, but directory is in default
+  # search path, so use it for libc headers.
+  # """
+  installed_include_dir = install_dir / 'include'
+  old_include_dir = install_dir / 'include.old'
+  if installed_include_dir.exists():
+    shutil.move(installed_include_dir, old_include_dir)
+
+  shutil.copytree(newlib_build_dir / 'riscv32-unknown-elf' / 'include',
+                  installed_include_dir)
+
+  if old_include_dir.exists():
+    shutil.rmtree(old_include_dir)
+  for f in (install_dir / 'lib').glob('*.a'):
+    f.unlink()
+
+  lib_base = install_dir / 'lib'
+  for f in (newlib_build_dir / 'riscv32-unknown-elf' / 'lib').iterdir():
+    shutil.copy2(f, lib_base / f.name)
+
+
+def build_compiler_rt(llvm_path: Path, compiler_rt_build_dir: Path,
+                      install_dir: Path):
+  """Builds compiler_rt and installs artifacts in |install_dir|."""
+  compiler_rt_build_dir.mkdir(parents=True)
+  run_clang = [str(install_dir / 'bin' / 'clang'), '-c']
+  run_clang += RISCV_RUNTIME_CFLAGS
+  compiler_rt_builtins = llvm_path / 'compiler-rt' / 'lib' / 'builtins'
+  subprocess.check_call(
+      run_clang + [
+          str(compiler_rt_builtins / 'riscv' / 'mulsi3.S'),
+      ],
+      cwd=compiler_rt_build_dir,
+  )
+
+  # It's expected that some of these builds fail for various reasons (no atomic
+  # uint64_t on riscv, etc.)
+  expected_failures = {
+      'atomic_flag_clear.c',
+      'atomic_flag_clear_explicit.c',
+      'atomic_flag_test_and_set.c',
+      'atomic_flag_test_and_set_explicit.c',
+      'atomic_signal_fence.c',
+      'atomic_thread_fence.c',
+      'emutls.c',
+      'enable_execute_stack.c',
+  }
+
+  had_unexpected_results = False
+  for f in compiler_rt_builtins.glob('*.c'):
+    # Build the expected failures, since doing so is quick, and if they _do_
+    # successfully build, that sounds like smoke to me.
+    command = run_clang + [str(f)]
+    should_fail = f.name in expected_failures
+    command_string = ' '.join(shlex.quote(x) for x in command)
+    try:
+      stdout = subprocess.check_output(
+          command,
+          cwd=compiler_rt_build_dir,
+          stderr=subprocess.STDOUT,
+          encoding='utf-8',
+      )
+    except subprocess.CalledProcessError as e:
+      if should_fail:
+        logging.info('Running %s failed as expected', command_string)
+        continue
+      logging.error('Running %s failed unexpectedly; output:\n%s',
+                    command_string, e.stdout)
+      had_unexpected_results = True
+    else:
+      if not should_fail:
+        logging.info('Running %s succeeded as expected', command_string)
+        continue
+      logging.error('Running %s succeeded unexpectedly; output:\n%s',
+                    command_string, stdout)
+      had_unexpected_results = True
+
+  if had_unexpected_results:
+    raise ValueError(
+        "Manual builds of compiler-rt bits didn't go as planned; please see "
+        'logging output')
+
+  libdir = find_clang_resource_dir(install_dir)
+  link_command = [
+      str(install_dir / 'bin' / 'llvm-ar'),
+      'rc',
+      str(libdir / 'libclang_rt.builtins-riscv32.a'),
+  ]
+  link_command += (str(x) for x in compiler_rt_build_dir.glob('*.o'))
+  subprocess.check_call(link_command)
+
+
+def log_install_paths(install_dir: Path):
+  """Prints install paths to stdout."""
+  clang = str(install_dir / 'bin' / 'clang')
+  subprocess.check_call([clang, '-E', '-x', 'c++', '/dev/null', '-v'])
+  subprocess.check_call([clang, '-print-search-dirs'])
+
+
+def get_parser():
+  """Creates a parser for commandline args."""
+  parser = argparse.ArgumentParser(
+      description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
+  parser.add_argument(
+      '--work-dir',
+      required=True,
+      type=Path,
+      help='Path to put build artifacts in.',
+  )
+  parser.add_argument(
+      '--llvm-dir',
+      required=True,
+      type=Path,
+      help='Path to the LLVM checkout.',
+  )
+  parser.add_argument(
+      '--newlib-dir',
+      required=True,
+      type=Path,
+      help='Path to the newlib checkout.',
+  )
+  parser.add_argument(
+      '--no-clean-llvm',
+      action='store_false',
+      dest='clean_llvm',
+      help="Don't wipe out LLVM's build directory if it exists.",
+  )
+  parser.add_argument(
+      '--no-clean-newlib',
+      action='store_false',
+      dest='clean_newlib',
+      help="Don't wipe out newlib's build directory if it exists.",
+  )
+  parser.add_argument(
+      '--install-dir',
+      required=True,
+      type=Path,
+      help='Path to the place to install artifacts.',
+  )
+  return parser
+
+
+def main(argv: List[str]):
+  logging.basicConfig(
+      format='%(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: %(message)s',
+      level=logging.INFO,
+  )
+
+  opts = get_parser().parse_args(argv)
+  work_dir = opts.work_dir
+  install_dir = opts.install_dir.resolve()
+  llvm_path = opts.llvm_dir.resolve()
+  newlib_path = opts.newlib_dir.resolve()
+
+  work_dir.mkdir(parents=True, exist_ok=True)
+
+  remove_path_if_exists(install_dir)
+  install_dir.mkdir(parents=True)
+
+  llvm_build_dir = work_dir / 'llvm-build' / 'Release'
+  if opts.clean_llvm:
+    remove_path_if_exists(llvm_build_dir)
+  build_llvm(llvm_path, llvm_build_dir, install_dir)
+
+  newlib_build_dir = work_dir / 'newlib' / 'build'
+  if opts.clean_newlib:
+    # Ugly: newlib builds to _both_ the build dir and an in-git-directory dir;
+    # would be nice if it only used one.
+    remove_path_if_exists(newlib_build_dir)
+    # In an |emerge| flow, we don't need this, but repeated |ebuild|s could
+    # leave us with a dirty source directory.
+    if (newlib_path / 'Makefile').exists():
+      remove_path_if_exists(newlib_path / 'riscv32-unknown-elf')
+      subprocess.check_call(['make', 'distclean'], cwd=newlib_path)
+
+  build_newlib(
+      rv_clang_bin=install_dir / 'bin',
+      newlib_dir=newlib_path,
+      newlib_build_dir=newlib_build_dir,
+      install_dir=install_dir,
+  )
+
+  compiler_rt_build_dir = work_dir / 'compiler-rt-build'
+  remove_path_if_exists(compiler_rt_build_dir)
+  build_compiler_rt(llvm_path, compiler_rt_build_dir, install_dir)
+
+  log_install_paths(install_dir)
+
+
+if __name__ == '__main__':
+  sys.exit(main(sys.argv[1:]))
diff --git a/dev-embedded/ti50-sdk/files/build_rust_toolchain.py b/dev-embedded/ti50-sdk/files/build_rust_toolchain.py
new file mode 100755
index 0000000..08fd68f
--- /dev/null
+++ b/dev-embedded/ti50-sdk/files/build_rust_toolchain.py
@@ -0,0 +1,341 @@
+#!/usr/bin/env python3
+# Copyright 2021 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.
+"""Builds the Rust toolchain used to compile and run TockOS."""
+
+# pylint: disable=cros-logging-import
+
+import argparse
+import logging
+import os
+from pathlib import Path
+import re
+import shutil
+import subprocess
+import sys
+import tempfile
+from typing import Iterable, List, NamedTuple, Optional
+
+# The target triples that we want this toolchain to be able to build binaries
+# for. ATM this consists of the host and one target. If you update this,
+# remember to update |write_config_toml| with info about the compilers to use.
+#
+# _A_ rust compiler is needed for the host because some packages have build
+# scripts (e.g., build.rs), and Ti50 has previously expressed interest in
+# running _some_ tests in a test environment that runs natively on the host.
+# It's unclear how difficult it'd be to use the CrOS Rust toolchain for both of
+# these, given that said toolchain is locked to the stable channel, and is
+# likely to be a very different version of Rust than Ti50's toolchain.
+TARGET_TRIPLES_TO_SHIP = (
+    'riscv32imc-unknown-none-elf',
+    'x86_64-unknown-linux-gnu',
+)
+
+
+class RustComponent(NamedTuple):
+  """A component of Rust that we want to build and install."""
+  # The name of the component that |./x.py dist| understands.
+  dist_build_name: str
+  # A regex pattern that matches the tarball produced for this component under
+  # dist/.
+  dist_tarball_pattern: str
+  # Whether the component's dist tarballs are per-triple.
+  dist_tarballs_are_per_triple: bool
+
+
+# Components we ship as a part of our toolchain.
+COMPONENTS_TO_SHIP = (
+    # cargo, which is shipped with |rustup| toolchains by default.
+    RustComponent(
+        dist_build_name='cargo',
+        dist_tarball_pattern=r'^cargo-',
+        dist_tarballs_are_per_triple=False,
+    ),
+    # clippy, which was requested by TockOS.
+    RustComponent(
+        dist_build_name='clippy',
+        dist_tarball_pattern=r'^clippy-',
+        dist_tarballs_are_per_triple=False,
+    ),
+    # llvm-tools-preview, which is apparently required by TockOS itself.
+    RustComponent(
+        dist_build_name='llvm-tools',
+        dist_tarball_pattern=r'^llvm-tools-',
+        dist_tarballs_are_per_triple=False,
+    ),
+    # src, which is required when cross-compiling in some contexts.
+    RustComponent(
+        dist_build_name='src',
+        dist_tarball_pattern=r'^rust-src-',
+        dist_tarballs_are_per_triple=False,
+    ),
+    # src/librustc, which is the actual |rustc| compiler.
+    RustComponent(
+        dist_build_name='src/librustc',
+        dist_tarball_pattern=r'^rustc-[^-]+-dev-(?!src)',
+        dist_tarballs_are_per_triple=False,
+    ),
+    # rustfmt, the standard formatter for rust code.
+    RustComponent(
+        dist_build_name='rustfmt',
+        dist_tarball_pattern=r'^rustfmt-',
+        dist_tarballs_are_per_triple=False,
+    ),
+    # library/std, which consists of stdlib |rlib|s.
+    RustComponent(
+        dist_build_name='library/std',
+        dist_tarball_pattern=r'^rust-std-',
+        dist_tarballs_are_per_triple=True,
+    ),
+)
+
+
+def must_getenv(key: str) -> str:
+  """Gets the value of an environment variable; raises if unset or empty."""
+  x = os.getenv(key)
+  if not x:
+    raise ValueError(f'No value found for {key}; this env var is required')
+  return x
+
+
+def write_config_toml(rust_src: Path, rv_clang_bin: Path, install_prefix: Path,
+                      rustc: Optional[Path], cargo: Optional[Path],
+                      rustfmt: Optional[Path]) -> None:
+  """Writes Rust's config.toml with the given parameters."""
+  # We need a Pythony list, but formatted with double-quotes.
+  assert not any('"' in x or '\\' in x
+                 for x in TARGET_TRIPLES_TO_SHIP), TARGET_TRIPLES_TO_SHIP
+  target_triples_str = ', '.join(f'"{x}"' for x in TARGET_TRIPLES_TO_SHIP)
+
+  component_locations = (
+      ('rustc', rustc),
+      ('cargo', cargo),
+      ('rustfmt', rustfmt),
+  )
+  optional_bootstrap_configuration = '\n'.join(
+      f'{key} = "{exe}"' for key, exe in component_locations if exe is not None)
+
+  toml_contents = f"""
+[build]
+target = [{target_triples_str}]
+extended = true
+vendor = true
+python = "{must_getenv('EPYTHON')}"
+submodules = false
+{optional_bootstrap_configuration}
+
+[llvm]
+use-libcxx = true
+ninja = true
+
+[install]
+prefix = "{install_prefix}"
+
+[rust]
+# Provide llvm-tools like llvm-objcopy for the llvm-tools package.
+llvm-tools = true
+codegen-units = 0
+codegen-tests = false
+
+lld = true
+default-linker = "{must_getenv('CBUILD')}-clang"
+use-lld = false
+
+[target.riscv32imc-unknown-none-elf]
+cc = "{rv_clang_bin}/clang"
+cxx = "{rv_clang_bin}/clang++"
+linker = "{rv_clang_bin}/clang++"
+
+[target.x86_64-unknown-linux-gnu]
+cc = "x86_64-pc-linux-gnu-clang"
+cxx = "x86_64-pc-linux-gnu-clang++"
+linker = "x86_64-pc-linux-gnu-clang++"
+"""
+
+  (rust_src / 'config.toml').write_text(toml_contents, encoding='utf-8')
+
+
+def compile_rust_src(rust_src: Path) -> None:
+  """Compiles all targets specified by COMPONENTS_TO_SHIP."""
+  targets = [x.dist_build_name for x in COMPONENTS_TO_SHIP]
+  subprocess.check_call(['./x.py', 'dist'] + targets, cwd=rust_src)
+
+
+def copy_tree(input_path: Path, output_path: Path,
+              ignore_file_names: Iterable[str]):
+  """shutil.copytree with dirs_exist_ok=True.
+
+  dirs_exist_ok=True is only available in py3.8+.
+  """
+  output_path.mkdir(parents=True, exist_ok=True)
+  for root, _, files in os.walk(input_path):
+    root = Path(root).relative_to(input_path)
+    input_root = input_path / root
+    output_root = output_path / root
+    output_root.mkdir(exist_ok=True)
+    for f in files:
+      if f in ignore_file_names:
+        continue
+
+      output_file = output_root / f
+      if output_file.exists():
+        raise ValueError(f'File at {output_file} already exists; refusing to '
+                         'overwrite')
+      logging.debug('Copying %s => %s', input_root / f, output_root / f)
+      shutil.copy2(input_root / f, output_root / f)
+
+
+def package_rust_src(rust_src: Path, install_dir: Path):
+  """Installs all components built in |rust_src| into |install_dir|."""
+  dist_path = rust_src / 'build' / 'dist'
+  all_tarballs = [x for x in dist_path.iterdir() if x.name.endswith('.tar.gz')]
+  temp_dir = Path(tempfile.mkdtemp(prefix='build_rust_package'))
+
+  def install_component(tarball: Path) -> None:
+    logging.info('Untarring %s into %s', tarball, temp_dir)
+
+    # All tarballs unpack to a single directory, which is the tarball without
+    # the |.tar.${comp}| suffix.
+    subprocess.check_call(['tar', 'xaf', str(tarball)], cwd=temp_dir)
+
+    subdir_name = tarball.stem
+    tar_suffix = '.tar'
+    assert tarball.stem.endswith(tar_suffix), subdir_name
+    subdir_name = subdir_name[:-len(tar_suffix)]
+    base_dir = temp_dir / subdir_name
+
+    # ...And this directory itself should contain a |components| file
+    # describing what components this tarball has.
+    components = [
+        x.strip()
+        for x in (base_dir /
+                  'components').read_text(encoding='utf-8').splitlines()
+    ]
+
+    for component in components:
+      input_path = base_dir / component
+      logging.info('Installing component at %s into %s', input_path,
+                   install_dir)
+      copy_tree(
+          input_path,
+          install_dir,
+          ignore_file_names=('manifest.in',),
+      )
+
+      # All inputs have a manifest.in at their root, which describes the files
+      # installed by the given component. |rustup| likes to include those in
+      # the final installation directory, and that seems like a generally okay
+      # idea. These are copied _purely_ for informational purposes, rather than
+      # serving some functional goal.
+      manifest_dir = install_dir / 'lib' / 'rustlib'
+      manifest_dir.mkdir(parents=True, exist_ok=True)
+      manifest_name = f'manifest-{input_path.name}'
+      shutil.copyfile(input_path / 'manifest.in', manifest_dir / manifest_name)
+
+  try:
+    install_dir.mkdir(parents=True, exist_ok=True)
+
+    for component in COMPONENTS_TO_SHIP:
+      regex = re.compile(component.dist_tarball_pattern)
+      targets = [x for x in all_tarballs if regex.search(x.name)]
+      if component.dist_tarballs_are_per_triple:
+        for target_triple in TARGET_TRIPLES_TO_SHIP:
+          ts = [x for x in targets if target_triple in x.name]
+          if len(ts) != 1:
+            raise ValueError(f'Expected exactly one match for {component} with '
+                             f'triple {target_triple}; got {ts}')
+          install_component(ts[0])
+      else:
+        if len(targets) != 1:
+          raise ValueError(f'Expected exactly one match for {component}; '
+                           f'got {targets}')
+        install_component(targets[0])
+  except:
+    logging.error('Packaging failed; leaving tempdir around at %s', temp_dir)
+    raise
+  else:
+    logging.info('Packaging succeeded; cleaning up tempdir. Results are in %s',
+                 install_dir)
+    shutil.rmtree(temp_dir)
+
+
+def get_parser():
+  """Creates a parser for commandline args."""
+  parser = argparse.ArgumentParser(
+      description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
+  parser.add_argument(
+      '--rust-src',
+      required=True,
+      type=Path,
+      help="Path to rust's source code",
+  )
+  parser.add_argument(
+      '--install-dir',
+      required=True,
+      type=Path,
+      help='Path to the directory in which we should put installation '
+      'artifacts',
+  )
+  parser.add_argument(
+      '--install-prefix',
+      required=True,
+      type=Path,
+      help='Prefix under which installed artifacts will sit on the system',
+  )
+  parser.add_argument(
+      '--rv-clang-bin',
+      required=True,
+      type=Path,
+      help='Path the bin/ directory of a riscv-enabled clang',
+  )
+  parser.add_argument(
+      '--rustc',
+      type=Path,
+      help='Optional path to the rustc we should use to bootstrap the '
+      'compiler',
+  )
+  parser.add_argument(
+      '--cargo',
+      type=Path,
+      help='Optional path to the cargo we should use to bootstrap the '
+      'compiler',
+  )
+  parser.add_argument(
+      '--rustfmt',
+      type=Path,
+      help='Optional path to the rustfmt we should use to bootstrap the '
+      'compiler',
+  )
+  return parser
+
+
+def main(argv: List[str]):
+  logging.basicConfig(
+      format='%(asctime)s: %(levelname)s: %(filename)s:%(lineno)d: %(message)s',
+      level=logging.INFO,
+  )
+
+  parser = get_parser()
+  opts = parser.parse_args(argv)
+
+  install_dir = opts.install_dir.resolve()
+  rust_src = opts.rust_src.resolve()
+  rv_clang_bin = opts.rv_clang_bin.resolve()
+  # This might not exist yet, so we don't want to resolve() it.
+  install_prefix = opts.install_prefix
+  if not install_prefix.is_absolute():
+    parser.error('--install_prefix should be an absolute path')
+
+  cargo = Path(opts.cargo).resolve() if opts.cargo else None
+  rustc = Path(opts.rustc).resolve() if opts.rustc else None
+  rustfmt = Path(opts.rustfmt).resolve() if opts.rustfmt else None
+
+  write_config_toml(rust_src, rv_clang_bin, install_prefix, rustc, cargo,
+                    rustfmt)
+  compile_rust_src(rust_src)
+  package_rust_src(rust_src, install_dir)
+
+
+if __name__ == '__main__':
+  sys.exit(main(sys.argv[1:]))
diff --git a/dev-embedded/ti50-sdk/files/llvm11-10122020-soteria.patch b/dev-embedded/ti50-sdk/files/llvm11-10122020-soteria.patch
new file mode 100644
index 0000000..54991ea
--- /dev/null
+++ b/dev-embedded/ti50-sdk/files/llvm11-10122020-soteria.patch
@@ -0,0 +1,1149 @@
+This patch enables custom RISCV instructions in our version of LLVM.
+
+These instructions aren't part of the standard RISCV spec, so upstreaming seems
+nontrivial.
+
+new file mode 100644
+--- /dev/null
++++ b/clang/include/clang/Basic/BuiltinsSoteria.def
+@@ -0,0 +1,24 @@
++//===-- BuiltinsSoteria.def - Soteria Builtin function database --*- C++ -*-==//
++//
++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
++// See https://llvm.org/LICENSE.txt for license information.
++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
++//
++//===----------------------------------------------------------------------===//
++//
++// This file defines the Soteria-specific builtin function database. Users of
++// this file must define the BUILTIN macro to make use of this information.
++//
++//===----------------------------------------------------------------------===//
++
++// The format of this database matches clang/Basic/Builtins.def.
++
++// The builtins below are not autogenerated from iset.py.
++// Make sure you do not overwrite these.
++
++BUILTIN(__builtin_riscv_soteria_grev, "iii", "nc")
++BUILTIN(__builtin_riscv_soteria_bitc, "iii", "nc")
++BUILTIN(__builtin_riscv_soteria_bits, "iii", "nc")
++BUILTIN(__builtin_riscv_soteria_fls, "ii", "nc")
++
++#undef BUILTIN
+--- a/clang/include/clang/Basic/TargetBuiltins.h
++++ b/clang/include/clang/Basic/TargetBuiltins.h
+@@ -300,6 +300,15 @@ namespace clang {
+   };
+   }
+ 
++  namespace RISCV {
++  enum {
++    LastTIBuiltin = clang::Builtin::FirstTSBuiltin - 1,
++  #define BUILTIN(ID, TYPE, ATTRS) BI##ID,
++  #include "clang/Basic/BuiltinsSoteria.def"
++    LastTSBuiltin
++  };
++  }
++
+   /// SystemZ builtins
+   namespace SystemZ {
+     enum {
+--- a/clang/lib/Basic/Targets/RISCV.cpp
++++ b/clang/lib/Basic/Targets/RISCV.cpp
+@@ -11,6 +11,8 @@
+ //===----------------------------------------------------------------------===//
+ 
+ #include "RISCV.h"
++#include "clang/Basic/Builtins.h"
++#include "clang/Basic/TargetBuiltins.h"
+ #include "clang/Basic/MacroBuilder.h"
+ #include "llvm/ADT/StringSwitch.h"
+ #include "llvm/Support/TargetParser.h"
+@@ -18,6 +20,16 @@
+ using namespace clang;
+ using namespace clang::targets;
+ 
++const Builtin::Info RISCVTargetInfo::BuiltinInfo[] = {
++#define BUILTIN(ID, TYPE, ATTRS)                                               \
++  {#ID, TYPE, ATTRS, nullptr, ALL_LANGUAGES, nullptr},
++#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE)                               \
++  {#ID, TYPE, ATTRS, nullptr, ALL_LANGUAGES, FEATURE},
++#define LIBBUILTIN(ID, TYPE, ATTRS, HEADER)                                    \
++  {#ID, TYPE, ATTRS, HEADER, ALL_LANGUAGES, nullptr},
++#include "clang/Basic/BuiltinsSoteria.def"
++};
++
+ ArrayRef<const char *> RISCVTargetInfo::getGCCRegNames() const {
+   static const char *const GCCRegNames[] = {
+       // Integer registers
+@@ -129,6 +141,14 @@ void RISCVTargetInfo::getTargetDefines(const LangOptions &Opts,
+ 
+   if (HasB)
+     Builder.defineMacro("__riscv_bitmanip");
++
++  if (HasSoteria)
++    Builder.defineMacro("__soteria");
++}
++
++ArrayRef<Builtin::Info> RISCVTargetInfo::getTargetBuiltins() const {
++  return llvm::makeArrayRef(BuiltinInfo, clang::RISCV::LastTSBuiltin -
++                            Builtin::FirstTSBuiltin);
+ }
+ 
+ /// Return true if has this feature, need to sync with handleTargetFeatures.
+@@ -144,6 +164,7 @@ bool RISCVTargetInfo::hasFeature(StringRef Feature) const {
+       .Case("d", HasD)
+       .Case("c", HasC)
+       .Case("experimental-b", HasB)
++      .Case("xsoteria", HasSoteria)
+       .Default(false);
+ }
+ 
+@@ -163,6 +184,8 @@ bool RISCVTargetInfo::handleTargetFeatures(std::vector<std::string> &Features,
+       HasC = true;
+     else if (Feature == "+experimental-b")
+       HasB = true;
++    else if (Feature == "+xsoteria")
++      HasSoteria = true;
+   }
+ 
+   return true;
+--- a/clang/lib/Basic/Targets/RISCV.h
++++ b/clang/lib/Basic/Targets/RISCV.h
+@@ -31,11 +31,13 @@ protected:
+   bool HasD;
+   bool HasC;
+   bool HasB;
++  bool HasSoteria;
++  static const Builtin::Info BuiltinInfo[];
+ 
+ public:
+   RISCVTargetInfo(const llvm::Triple &Triple, const TargetOptions &)
+       : TargetInfo(Triple), HasM(false), HasA(false), HasF(false),
+-        HasD(false), HasC(false), HasB(false) {
++        HasD(false), HasC(false), HasB(false), HasSoteria(false) {
+     LongDoubleWidth = 128;
+     LongDoubleAlign = 128;
+     LongDoubleFormat = &llvm::APFloat::IEEEquad();
+@@ -55,7 +57,7 @@ public:
+   void getTargetDefines(const LangOptions &Opts,
+                         MacroBuilder &Builder) const override;
+ 
+-  ArrayRef<Builtin::Info> getTargetBuiltins() const override { return None; }
++  ArrayRef<Builtin::Info> getTargetBuiltins() const override;
+ 
+   BuiltinVaListKind getBuiltinVaListKind() const override {
+     return TargetInfo::VoidPtrBuiltinVaList;
+--- a/clang/lib/CodeGen/CGBuiltin.cpp
++++ b/clang/lib/CodeGen/CGBuiltin.cpp
+@@ -4534,6 +4534,9 @@ static Value *EmitTargetArchBuiltinExpr(CodeGenFunction *CGF,
+   case llvm::Triple::nvptx:
+   case llvm::Triple::nvptx64:
+     return CGF->EmitNVPTXBuiltinExpr(BuiltinID, E);
++  case llvm::Triple::riscv32:
++  case llvm::Triple::riscv64:
++    return CGF->EmitRISCVBuiltinExpr(BuiltinID, E);
+   case llvm::Triple::wasm32:
+   case llvm::Triple::wasm64:
+     return CGF->EmitWebAssemblyBuiltinExpr(BuiltinID, E);
+@@ -16100,6 +16103,14 @@ RValue CodeGenFunction::EmitBuiltinAlignTo(const CallExpr *E, bool AlignUp) {
+   return RValue::get(Result);
+ }
+ 
++Value *CodeGenFunction::EmitRISCVBuiltinExpr(unsigned BuiltinID,
++                                             const CallExpr *E) {
++  switch (BuiltinID) {
++    default:
++      return nullptr;
++  }
++}
++
+ Value *CodeGenFunction::EmitWebAssemblyBuiltinExpr(unsigned BuiltinID,
+                                                    const CallExpr *E) {
+   switch (BuiltinID) {
+--- a/clang/lib/CodeGen/CodeGenFunction.h
++++ b/clang/lib/CodeGen/CodeGenFunction.h
+@@ -4068,6 +4068,7 @@ public:
+   llvm::Value *EmitAMDGPUBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
+   llvm::Value *EmitSystemZBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
+   llvm::Value *EmitNVPTXBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
++  llvm::Value *EmitRISCVBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
+   llvm::Value *EmitWebAssemblyBuiltinExpr(unsigned BuiltinID,
+                                           const CallExpr *E);
+   llvm::Value *EmitHexagonBuiltinExpr(unsigned BuiltinID, const CallExpr *E);
+--- a/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
++++ b/clang/lib/Driver/ToolChains/Arch/RISCV.cpp
+@@ -73,6 +73,9 @@ static bool isSupportedExtension(StringRef Ext) {
+     return true;
+ 
+   // LLVM does not support "sx", "s" nor "x" extensions.
++  if (Ext == "xsoteria") {
++    return true;
++  }
+   return false;
+ }
+ 
+new file mode 100644
+--- /dev/null
++++ b/clang/test/CodeGen/builtins-soteria.c
+@@ -0,0 +1,53 @@
++// RUN: %clang_cc1 -triple=riscv32-unknown-none -target-feature +xsoteria -O3 \
++// RUN:   -S -o - %s | FileCheck %s -check-prefix=RV32S
++
++int intrinsics(int x) {
++  // RV32S-LABEL: intrinsics:
++
++  int v1 = __builtin_riscv_soteria_grev(x, x);
++  // RV32S: grev
++
++  int v2 = __builtin_riscv_soteria_grev(x, 1);
++  // RV32S: grevi
++
++  int v3 = __builtin_riscv_soteria_bitc(x, x);
++  // RV32S: bitc
++
++  int v4 = __builtin_riscv_soteria_bitc(x, 2);
++  // RV32S: bitci
++
++  int v5 = __builtin_riscv_soteria_bits(x, x);
++  // RV32S: bits
++
++  int v6 = __builtin_riscv_soteria_bits(x, 3);
++  // RV32S: bitsi
++
++  int v7 = __builtin_popcount(x);
++  // RV32S: pcnt
++
++  int v8 = __builtin_clz(x);
++  // RV32S: clz
++
++  int v9 = __builtin_riscv_soteria_fls(x);
++  // RV32S: fls
++
++  return v1 + v2 + v3 + v4 + v5 + v6 + v7 + v8 + v9;
++}
++
++int bitc_pattern(int a, int b) {
++  // RV32S-LABEL: bitc_pattern:
++
++  return a & ~(1 << b);
++  // RV32S-NOT: and
++  // RV32S: bitc a0, a0, a1
++  // RV32S-NEXT: ret
++}
++
++int bits_pattern(int a, int b) {
++  // RV32S-LABEL: bits_pattern:
++
++  return a | (1 << b);
++  // RV32S-NOT: or
++  // RV32S: bits a0, a0, a1
++  // RV32S-NEXT: ret
++}
+--- a/llvm/include/llvm/BinaryFormat/ELF.h
++++ b/llvm/include/llvm/BinaryFormat/ELF.h
+@@ -622,7 +622,9 @@ enum : unsigned {
+   EF_RISCV_FLOAT_ABI_SINGLE = 0x0002,
+   EF_RISCV_FLOAT_ABI_DOUBLE = 0x0004,
+   EF_RISCV_FLOAT_ABI_QUAD = 0x0006,
+-  EF_RISCV_RVE = 0x0008
++  EF_RISCV_RVE = 0x0008,
++  // 0x0010 is used by melvin
++  EF_RISCV_SOTERIA = 0x0020
+ };
+ 
+ // ELF Relocation types for RISC-V
+--- a/llvm/include/llvm/IR/IntrinsicsRISCV.td
++++ b/llvm/include/llvm/IR/IntrinsicsRISCV.td
+@@ -65,4 +65,23 @@ let TargetPrefix = "riscv" in {
+   // @llvm.riscv.masked.cmpxchg.{i32,i64}.<p>(...)
+   defm int_riscv_masked_cmpxchg : MaskedAtomicRMWFiveArgIntrinsics;
+ 
++class SoteriaIntrinsic<string name,
++                       list<LLVMType> ret_types,
++                       list<LLVMType> param_types = [],
++                       list<IntrinsicProperty> properties = []>
++  : GCCBuiltin<"__builtin_riscv_soteria_"#name>,
++    Intrinsic<ret_types, param_types, properties>;
++
++def int_riscv_soteria_grev
++  : SoteriaIntrinsic<"grev", [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
++                     [IntrNoMem]>;
++def int_riscv_soteria_bitc
++  : SoteriaIntrinsic<"bitc", [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
++                     [IntrNoMem]>;
++def int_riscv_soteria_bits
++  : SoteriaIntrinsic<"bits", [llvm_i32_ty], [llvm_i32_ty, llvm_i32_ty],
++                     [IntrNoMem]>;
++def int_riscv_soteria_fls
++  : SoteriaIntrinsic<"fls", [llvm_i32_ty], [llvm_i32_ty], [IntrNoMem]>;
++
+ } // TargetPrefix = "riscv"
+--- a/llvm/lib/Object/ELFObjectFile.cpp
++++ b/llvm/lib/Object/ELFObjectFile.cpp
+@@ -293,6 +293,9 @@ SubtargetFeatures ELFObjectFileBase::getRISCVFeatures() const {
+   if (PlatformFlags & ELF::EF_RISCV_RVC) {
+     Features.AddFeature("c");
+   }
++  if (PlatformFlags & ELF::EF_RISCV_SOTERIA) {
++    Features.AddFeature("xsoteria");
++  }
+ 
+   // Add features according to the ELF attribute section.
+   // If there are any unrecognized features, ignore them.
+--- a/llvm/lib/Target/RISCV/MCTargetDesc/RISCVELFStreamer.cpp
++++ b/llvm/lib/Target/RISCV/MCTargetDesc/RISCVELFStreamer.cpp
+@@ -37,6 +37,8 @@ RISCVTargetELFStreamer::RISCVTargetELFStreamer(MCStreamer &S,
+ 
+   if (Features[RISCV::FeatureStdExtC])
+     EFlags |= ELF::EF_RISCV_RVC;
++  if (Features[RISCV::FeatureSoteria])
++    EFlags |= ELF::EF_RISCV_SOTERIA;
+ 
+   switch (ABI) {
+   case RISCVABI::ABI_ILP32:
+--- a/llvm/lib/Target/RISCV/RISCV.td
++++ b/llvm/lib/Target/RISCV/RISCV.td
+@@ -164,6 +164,13 @@ def IsRV32 : Predicate<"!Subtarget->is64Bit()">,
+                        AssemblerPredicate<(all_of (not Feature64Bit)),
+                        "RV32I Base Instruction Set">;
+ 
++def FeatureSoteria
++    : SubtargetFeature<"xsoteria", "HasExtSoteria", "true",
++                       "'Soteria' (Soteria non-standard instructions)">;
++def HasExtSoteria : Predicate<"Subtarget->hasExtSoteria()">,
++                               AssemblerPredicate<(all_of FeatureSoteria),
++			       "'Soteria' (Soteria non-standard instructions)">;
++
+ def RV64           : HwMode<"+64bit">;
+ def RV32           : HwMode<"-64bit">;
+ 
+--- a/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
++++ b/llvm/lib/Target/RISCV/RISCVISelLowering.cpp
+@@ -157,7 +157,11 @@ RISCVTargetLowering::RISCVTargetLowering(const TargetMachine &TM,
+   if (!Subtarget.hasStdExtZbp())
+     setOperationAction(ISD::BSWAP, XLenVT, Expand);
+ 
+-  if (!Subtarget.hasStdExtZbb()) {
++  if (Subtarget.hasExtSoteria()) {
++    setOperationAction(ISD::CTPOP, XLenVT, Legal);
++    setOperationAction(ISD::CTLZ, XLenVT, Legal);
++    setOperationAction(ISD::CTTZ, XLenVT, Expand);
++  } else if (!Subtarget.hasStdExtZbb()) {
+     setOperationAction(ISD::CTTZ, XLenVT, Expand);
+     setOperationAction(ISD::CTLZ, XLenVT, Expand);
+     setOperationAction(ISD::CTPOP, XLenVT, Expand);
+--- a/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
++++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
+@@ -818,3 +818,7 @@ MachineBasicBlock::iterator RISCVInstrInfo::insertOutlinedCall(
+                                         RISCVII::MO_CALL));
+   return It;
+ }
++
++bool RISCVInstrInfo::isSoteria() const {
++  return STI.hasExtSoteria();
++}
+--- a/llvm/lib/Target/RISCV/RISCVInstrInfo.h
++++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.h
+@@ -130,6 +130,8 @@ public:
+   insertOutlinedCall(Module &M, MachineBasicBlock &MBB,
+                      MachineBasicBlock::iterator &It, MachineFunction &MF,
+                      const outliner::Candidate &C) const override;
++  bool isSoteria() const;
++
+ protected:
+   const RISCVSubtarget &STI;
+ };
+--- a/llvm/lib/Target/RISCV/RISCVInstrInfo.td
++++ b/llvm/lib/Target/RISCV/RISCVInstrInfo.td
+@@ -1178,3 +1178,4 @@ include "RISCVInstrInfoD.td"
+ include "RISCVInstrInfoC.td"
+ include "RISCVInstrInfoB.td"
+ include "RISCVInstrInfoV.td"
++include "RISCVInstrInfoSoteria.td"
+new file mode 100644
+--- /dev/null
++++ b/llvm/lib/Target/RISCV/RISCVInstrInfoSoteria.td
+@@ -0,0 +1,96 @@
++//===-- RISCVInstrInfoSoteria.td - Soteria instructions ----*- tablegen -*-===//
++//
++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
++// See https://llvm.org/LICENSE.txt for license information.
++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
++//
++//===----------------------------------------------------------------------===//
++//
++// This file describes the RISC-V instructions that are specific to the
++// Soteria architecture.
++//
++//===----------------------------------------------------------------------===//
++
++
++def OPC_GREV  : RISCVOpcode<0b0101011>;
++def OPC_GREVI : RISCVOpcode<0b0001011>;
++def OPC_BITC  : RISCVOpcode<0b0101011>;
++def OPC_BITCI : RISCVOpcode<0b0001011>;
++def OPC_BITS  : RISCVOpcode<0b0101011>;
++def OPC_BITSI : RISCVOpcode<0b0001011>;
++def OPC_PCNT  : RISCVOpcode<0b0001011>;
++def OPC_CLZ   : RISCVOpcode<0b0001011>;
++def OPC_FLS   : RISCVOpcode<0b0001011>;
++
++// Some Soteria specific instructions take 2 register operands with a normal R
++// style encoding.
++let mayLoad = 0, mayStore = 0, hasSideEffects = 0 in {
++class SoteriaInstR<bits<7> funct7, bits<3> funct3, RISCVOpcode opcode, string opcodestr>
++  : RVInstR<funct7, funct3, opcode, (outs GPR:$rd), (ins GPR:$rs1, GPR:$rs2), opcodestr, "$rd, $rs1, $rs2">;
++
++// Other soteria instructions take a single register operand and a 5 bit
++// immediate value.
++class SoteriaInstI<bits<7> funct7, bits<3> funct3, RISCVOpcode opcode, string opcodestr>
++  : RVInst<(outs GPR:$rd), (ins GPR:$rs1, uimm5:$imm5), opcodestr, "$rd, $rs1, $imm5", [], InstFormatOther> {
++  bits<5> rs1;
++  bits<5> imm5;
++  bits<5> rd;
++
++  let Inst{31-25} = funct7;
++  let Inst{24-20} = imm5;
++  let Inst{19-15} = rs1;
++  let Inst{14-12} = funct3;
++  let Inst{11-7} = rd;
++  let Opcode = opcode.Value;
++}
++
++// PCNT, CLZ and FLS instructions only have a single source operand.
++class SoteriaInst<bits<12> funct12, bits<3> funct3, RISCVOpcode opcode, string opcodestr>
++  : RVInst<(outs GPR:$rd), (ins GPR:$rs1), opcodestr, "$rd, $rs1", [], InstFormatOther> {
++  bits<5> rs1;
++  bits<5> rd;
++
++  let Inst{31-20} = funct12;
++  let Inst{19-15} = rs1;
++  let Inst{14-12} = funct3;
++  let Inst{11-7} = rd;
++  let Opcode = opcode.Value;
++}
++}
++
++let Predicates = [HasExtSoteria], hasNoSchedulingInfo = 1 in {
++def SOT_GREV  : SoteriaInstR<0b0000000, 0b000, OPC_GREV, "grev">;
++def SOT_GREVI : SoteriaInstI<0b0000000, 0b000, OPC_GREVI, "grevi">;
++def SOT_BITC  : SoteriaInstR<0b0000000, 0b001, OPC_BITC, "bitc">;
++def SOT_BITCI : SoteriaInstI<0b0000000, 0b001, OPC_BITCI, "bitci">;
++def SOT_BITS  : SoteriaInstR<0b0100000, 0b001, OPC_BITS, "bits">;
++def SOT_BITSI : SoteriaInstI<0b0100000, 0b001, OPC_BITSI, "bitsi">;
++def SOT_PCNT  : SoteriaInst<0b000000000000, 0b011, OPC_PCNT, "pcnt">;
++def SOT_CLZ   : SoteriaInst<0b010000000000, 0b010, OPC_CLZ, "clz">;
++def SOT_FLS   : SoteriaInst<0b000000000000, 0b010, OPC_FLS, "fls">;
++
++}
++
++let Predicates = [HasExtSoteria] in {
++def : Pat<(int_riscv_soteria_grev GPR:$rs1, GPR:$rs2),
++          (SOT_GREV GPR:$rs1, GPR:$rs2)>;
++def : Pat<(int_riscv_soteria_grev GPR:$rs1, uimm5:$imm5),
++          (SOT_GREVI GPR:$rs1, uimm5:$imm5)>;
++def : Pat<(int_riscv_soteria_bitc GPR:$rs1, GPR:$rs2),
++          (SOT_BITC GPR:$rs1, GPR:$rs2)>;
++def : Pat<(int_riscv_soteria_bitc GPR:$rs1, uimm5:$imm5),
++          (SOT_BITCI GPR:$rs1, uimm5:$imm5)>;
++def : Pat<(int_riscv_soteria_bits GPR:$rs1, GPR:$rs2),
++          (SOT_BITS GPR:$rs1, GPR:$rs2)>;
++def : Pat<(int_riscv_soteria_bits GPR:$rs1, uimm5:$imm5),
++          (SOT_BITSI GPR:$rs1, uimm5:$imm5)>;
++def : Pat<(ctpop GPR:$rs1), (SOT_PCNT GPR:$rs1)>;
++def : Pat<(ctlz GPR:$rs1), (SOT_CLZ GPR:$rs1)>;
++def : Pat<(int_riscv_soteria_fls GPR:$rs1), (SOT_FLS GPR:$rs1)>;
++
++def : Pat<(and (xor (shl 1, GPR:$rs2), -1), GPR:$rs1),
++          (SOT_BITC GPR:$rs1, GPR:$rs2)>;
++def : Pat<(or (shl 1, GPR:$rs2), GPR:$rs1),
++          (SOT_BITS GPR:$rs1, GPR:$rs2)>;
++}
++
+--- a/llvm/lib/Target/RISCV/RISCVSubtarget.h
++++ b/llvm/lib/Target/RISCV/RISCVSubtarget.h
+@@ -53,6 +53,7 @@ class RISCVSubtarget : public RISCVGenSubtargetInfo {
+   bool HasStdExtV = false;
+   bool HasRV64 = false;
+   bool IsRV32E = false;
++  bool HasExtSoteria = false;
+   bool EnableLinkerRelax = false;
+   bool EnableRVCHintInstrs = true;
+   bool EnableSaveRestore = false;
+@@ -114,6 +115,7 @@ public:
+   bool hasStdExtV() const { return HasStdExtV; }
+   bool is64Bit() const { return HasRV64; }
+   bool isRV32E() const { return IsRV32E; }
++  bool hasExtSoteria() const { return HasExtSoteria; }
+   bool enableLinkerRelax() const { return EnableLinkerRelax; }
+   bool enableRVCHintInstrs() const { return EnableRVCHintInstrs; }
+   bool enableSaveRestore() const { return EnableSaveRestore; }
+--- a/llvm/lib/Target/RISCV/RISCVSystemOperands.td
++++ b/llvm/lib/Target/RISCV/RISCVSystemOperands.td
+@@ -370,3 +370,6 @@ def : SysReg<"vxrm", 0x00A>;
+ def : SysReg<"vl", 0xC20>;
+ def : SysReg<"vtype", 0xC21>;
+ def : SysReg<"vlenb", 0xC22>;
++
++include "SoteriaSystemOperands.td"
++
+new file mode 100644
+--- /dev/null
++++ b/llvm/lib/Target/RISCV/SoteriaSystemOperands.td
+@@ -0,0 +1,51 @@
++//===-----------------------------------------------
++// Soteria Non-Standard CSRs
++//===-----------------------------------------------
++def : SysReg<"mgpscratch0",  0x7C0>;
++def : SysReg<"mgpscratch1",  0x7C1>;
++def : SysReg<"mgpscratch2",  0x7C2>;
++def : SysReg<"mgpscratch3",  0x7C3>;
++def : SysReg<"mgpscratch4",  0x7C4>;
++def : SysReg<"mgpscratch5",  0x7C5>;
++def : SysReg<"mgpscratch6",  0x7C6>;
++def : SysReg<"mgpscratch7",  0x7C7>;
++def : SysReg<"mgpscratch8",  0x7C8>;
++def : SysReg<"mgpscratch9",  0x7C9>;
++def : SysReg<"mgpscratch10", 0x7CA>;
++def : SysReg<"mgpscratch11", 0x7CB>;
++def : SysReg<"mgpscratch12", 0x7CC>;
++def : SysReg<"mgpscratch13", 0x7CD>;
++def : SysReg<"mgpscratch14", 0x7CE>;
++def : SysReg<"mgpscratch15", 0x7CF>;
++def : SysReg<"mnmivec",      0x7D0>;
++def : SysReg<"ualert",       0x802>;
++
++//===-----------------------------------------------
++// Soteria Attack Countermeasure CSRs
++//===-----------------------------------------------
++def : SysReg<"mx0",          0xBC0>;
++
++//===-----------------------------------------------
++// Soteria Control Flow Integrity CSRs
++//===-----------------------------------------------
++def : SysReg<"ucfic",        0x807>;
++def : SysReg<"ucfiseed0",    0x803>;
++def : SysReg<"ucfiseed1",    0x80A>;
++def : SysReg<"ucfichk0",     0x80E>;
++def : SysReg<"ucfichk1",     0x806>;
++def : SysReg<"ucfimix0",     0x805>;
++def : SysReg<"ucfimix1",     0x801>;
++def : SysReg<"ucfisave0",    0x804>;
++def : SysReg<"ucfisave1",    0x80F>;
++
++//===-----------------------------------------------
++// Soteria Pseudorandom Decoy Instruction CSRs
++//===-----------------------------------------------
++def : SysReg<"mpigrate",     0xBC9>;
++def : SysReg<"mpigseed0",    0xBCE>;
++def : SysReg<"mpigseed1",    0xBCC>;
++
++//===-----------------------------------------------
++// Soteria Machine State Wipe
++//===-----------------------------------------------
++def : SysReg<"uswc",         0x800>;
+\ No newline at end of file
+new file mode 100644
+--- /dev/null
++++ b/llvm/test/CodeGen/RISCV/builtins-soteria.ll
+@@ -0,0 +1,94 @@
++; RUN: llc -O3 -verify-machineinstrs --show-mc-encoding < %s \
++; RUN: | FileCheck %s -check-prefix=RV32S
++
++target datalayout = "e-m:e-p:32:32-i64:64-n32-S128"
++target triple = "riscv32-unknown-unknown-elf"
++
++define dso_local i32 @grev(i32 %a, i32 %b) local_unnamed_addr #0 {
++; RV32S-LABEL: grev:
++entry:
++  %0 = tail call i32 @llvm.riscv.soteria.grev(i32 %a, i32 %b)
++  ; RV32S: grev a0, a0, a1 # encoding: [0x2b,0x05,0xb5,0x00]
++  ret i32 %0
++}
++
++define dso_local i32 @grevi(i32 %a) local_unnamed_addr #0 {
++; RV32S-LABEL: grevi:
++entry:
++  %0 = tail call i32 @llvm.riscv.soteria.grev(i32 %a, i32 16)
++  ; RV32S: grevi a0, a0, 16 # encoding: [0x0b,0x05,0x05,0x01]
++  ret i32 %0
++}
++
++define dso_local i32 @bitc(i32 %a, i32 %b) local_unnamed_addr #0 {
++; RV32S-LABEL: bitc:
++entry:
++  %0 = tail call i32 @llvm.riscv.soteria.bitc(i32 %a, i32 %b)
++  ; RV32S: bitc a0, a0, a1 # encoding: [0x2b,0x15,0xb5,0x00]
++  ret i32 %0
++}
++
++define dso_local i32 @bitci(i32 %a) local_unnamed_addr #0 {
++; RV32S-LABEL: bitci:
++entry:
++  %0 = tail call i32 @llvm.riscv.soteria.bitc(i32 %a, i32 18)
++  ; RV32S: bitci a0, a0, 18 # encoding: [0x0b,0x15,0x25,0x01]
++  ret i32 %0
++}
++
++define dso_local i32 @bits(i32 %a, i32 %b) local_unnamed_addr #0 {
++; RV32S-LABEL: bits:
++entry:
++  %0 = tail call i32 @llvm.riscv.soteria.bits(i32 %a, i32 %b)
++  ; RV32S: bits a0, a0, a1 # encoding: [0x2b,0x15,0xb5,0x40]
++  ret i32 %0
++}
++
++define dso_local i32 @bitsi(i32 %a) local_unnamed_addr #0 {
++; RV32S-LABEL: bitsi:
++entry:
++  %0 = tail call i32 @llvm.riscv.soteria.bits(i32 %a, i32 31)
++  ; RV32S: bitsi a0, a0, 31 # encoding: [0x0b,0x15,0xf5,0x41]
++  ret i32 %0
++}
++
++define dso_local i32 @pcnt(i32 %a) local_unnamed_addr #0 {
++; RV32S-LABEL: pcnt:
++entry:
++  %0 = tail call i32 @llvm.ctpop.i32(i32 %a), !range !3
++  ; RV32S: pcnt a0, a0 # encoding: [0x0b,0x35,0x05,0x00]
++  ret i32 %0
++}
++
++define dso_local i32 @clz(i32 %a) local_unnamed_addr #0 {
++; RV32S-LABEL: clz:
++entry:
++  %0 = tail call i32 @llvm.ctlz.i32(i32 %a, i1 true), !range !3
++  ; RV32S: clz a0, a0 # encoding: [0x0b,0x25,0x05,0x40]
++  ret i32 %0
++}
++
++define dso_local i32 @fls(i32 %a) local_unnamed_addr #0 {
++; RV32S-LABEL: fls:
++entry:
++  %0 = tail call i32 @llvm.riscv.soteria.fls(i32 %a)
++  ; RV32S: fls a0, a0 # encoding: [0x0b,0x25,0x05,0x00]
++  ret i32 %0
++}
++
++declare i32 @llvm.riscv.soteria.grev(i32, i32) #1
++declare i32 @llvm.riscv.soteria.bitc(i32, i32) #1
++declare i32 @llvm.riscv.soteria.bits(i32, i32) #1
++declare i32 @llvm.ctpop.i32(i32) #1
++declare i32 @llvm.ctlz.i32(i32, i1 immarg) #1
++declare i32 @llvm.riscv.soteria.fls(i32) #1
++
++attributes #0 = { nounwind readnone "target-features"="+c,+m,+relax,+xsoteria" }
++attributes #1 = { nounwind readnone }
++
++!llvm.module.flags = !{!0, !1}
++
++!0 = !{i32 1, !"wchar_size", i32 4}
++!1 = !{i32 1, !"target-abi", !"ilp32"}
++!3 = !{i32 0, i32 33}
++
+new file mode 100644
+--- /dev/null
++++ b/llvm/test/MC/RISCV/soteria-csr-names.s
+@@ -0,0 +1,488 @@
++# RUN: llvm-mc %s -triple=riscv32 -riscv-no-aliases -show-encoding \
++# RUN:     | FileCheck -check-prefixes=CHECK-INST,CHECK-ENC %s
++# RUN: llvm-mc -filetype=obj -triple riscv32 < %s \
++# RUN:     | llvm-objdump -d - \
++# RUN:     | FileCheck -check-prefix=CHECK-INST-ALIAS %s
++
++###################################################
++# Soteria Non-Standard CSRs
++###################################################
++
++# mgpscratch0
++# name
++# CHECK-INST: csrrs t1, mgpscratch0, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x00,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch0
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch0, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch0
++# name
++csrrs t1, mgpscratch0, zero
++# uimm12
++csrrs t2, 0x7C0, zero
++
++# mgpscratch1
++# name
++# CHECK-INST: csrrs t1, mgpscratch1, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x10,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch1
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch1, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x10,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch1
++# name
++csrrs t1, mgpscratch1, zero
++# uimm12
++csrrs t2, 0x7C1, zero
++
++# mgpscratch2
++# name
++# CHECK-INST: csrrs t1, mgpscratch2, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x20,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch2
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch2, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch2
++# name
++csrrs t1, mgpscratch2, zero
++# uimm12
++csrrs t2, 0x7C2, zero
++
++# mgpscratch3
++# name
++# CHECK-INST: csrrs t1, mgpscratch3, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x30,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch3
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch3, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x30,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch3
++# name
++csrrs t1, mgpscratch3, zero
++# uimm12
++csrrs t2, 0x7C3, zero
++
++# mgpscratch4
++# name
++# CHECK-INST: csrrs t1, mgpscratch4, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x40,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch4
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch4, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch4
++# name
++csrrs t1, mgpscratch4, zero
++# uimm12
++csrrs t2, 0x7C4, zero
++
++# mgpscratch5
++# name
++# CHECK-INST: csrrs t1, mgpscratch5, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x50,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch5
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch5, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x50,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch5
++# name
++csrrs t1, mgpscratch5, zero
++# uimm12
++csrrs t2, 0x7C5, zero
++
++# mgpscratch6
++# name
++# CHECK-INST: csrrs t1, mgpscratch6, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x60,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch6
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch6, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x60,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch6
++# name
++csrrs t1, mgpscratch6, zero
++# uimm12
++csrrs t2, 0x7C6, zero
++
++# mgpscratch7
++# name
++# CHECK-INST: csrrs t1, mgpscratch7, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x70,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch7
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch7, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x70,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch7
++# name
++csrrs t1, mgpscratch7, zero
++# uimm12
++csrrs t2, 0x7C7, zero
++
++# mgpscratch8
++# name
++# CHECK-INST: csrrs t1, mgpscratch8, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x80,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch8
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch8, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x80,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch8
++# name
++csrrs t1, mgpscratch8, zero
++# uimm12
++csrrs t2, 0x7C8, zero
++
++# mgpscratch9
++# name
++# CHECK-INST: csrrs t1, mgpscratch9, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x90,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch9
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch9, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x90,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch9
++# name
++csrrs t1, mgpscratch9, zero
++# uimm12
++csrrs t2, 0x7C9, zero
++
++# mgpscratch10
++# name
++# CHECK-INST: csrrs t1, mgpscratch10, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xa0,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch10
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch10, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xa0,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch10
++# name
++csrrs t1, mgpscratch10, zero
++# uimm12
++csrrs t2, 0x7CA, zero
++
++# mgpscratch11
++# name
++# CHECK-INST: csrrs t1, mgpscratch11, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xb0,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch11
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch11, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xb0,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch11
++# name
++csrrs t1, mgpscratch11, zero
++# uimm12
++csrrs t2, 0x7CB, zero
++
++# mgpscratch12
++# name
++# CHECK-INST: csrrs t1, mgpscratch12, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xc0,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch12
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch12, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xc0,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch12
++# name
++csrrs t1, mgpscratch12, zero
++# uimm12
++csrrs t2, 0x7CC, zero
++
++# mgpscratch13
++# name
++# CHECK-INST: csrrs t1, mgpscratch13, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xd0,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch13
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch13, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xd0,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch13
++# name
++csrrs t1, mgpscratch13, zero
++# uimm12
++csrrs t2, 0x7CD, zero
++
++# mgpscratch14
++# name
++# CHECK-INST: csrrs t1, mgpscratch14, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xe0,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch14
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch14, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xe0,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch14
++# name
++csrrs t1, mgpscratch14, zero
++# uimm12
++csrrs t2, 0x7CE, zero
++
++# mgpscratch15
++# name
++# CHECK-INST: csrrs t1, mgpscratch15, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xf0,0x7c]
++# CHECK-INST-ALIAS: csrr t1, mgpscratch15
++# uimm12
++# CHECK-INST: csrrs t2, mgpscratch15, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xf0,0x7c]
++# CHECK-INST-ALIAS: csrr t2, mgpscratch15
++# name
++csrrs t1, mgpscratch15, zero
++# uimm12
++csrrs t2, 0x7CF, zero
++
++# mnmivec
++# name
++# CHECK-INST: csrrs t1, mnmivec, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x00,0x7d]
++# CHECK-INST-ALIAS: csrr t1, mnmivec
++# uimm12
++# CHECK-INST: csrrs t2, mnmivec, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x7d]
++# CHECK-INST-ALIAS: csrr t2, mnmivec
++# name
++csrrs t1, mnmivec, zero
++# uimm12
++csrrs t2, 0x7D0, zero
++
++# ualert
++# name
++# CHECK-INST: csrrs t1, ualert, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x20,0x80]
++# CHECK-INST-ALIAS: csrr t1, ualert
++# uimm12
++# CHECK-INST: csrrs t2, ualert, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x20,0x80]
++# CHECK-INST-ALIAS: csrr t2, ualert
++# name
++csrrs t1, ualert, zero
++# uimm12
++csrrs t2, 0x802, zero
++
++
++###################################################
++# Soteria Attack Countermeasure CSRs
++###################################################
++
++# mx0
++# name
++# CHECK-INST: csrrs t1, mx0, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x00,0xbc]
++# CHECK-INST-ALIAS: csrr t1, mx0
++# uimm12
++# CHECK-INST: csrrs t2, mx0, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x00,0xbc]
++# CHECK-INST-ALIAS: csrr t2, mx0
++# name
++csrrs t1, mx0, zero
++# uimm12
++csrrs t2, 0xBC0, zero
++
++###################################################
++# Soteria Control Flow Integrity CSRs
++###################################################
++
++# ucfic
++# name
++# CHECK-INST: csrrs t1, ucfic, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x70,0x80]
++# CHECK-INST-ALIAS: csrr t1, ucfic
++# uimm12
++# CHECK-INST: csrrs t2, ucfic, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x70,0x80]
++# CHECK-INST-ALIAS: csrr t2, ucfic
++# name
++csrrs t1, ucfic, zero
++# uimm12
++csrrs t2, 0x807, zero
++
++# ucfiseed0
++# name
++# CHECK-INST: csrrs t1, ucfiseed0, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x30,0x80]
++# CHECK-INST-ALIAS: csrr t1, ucfiseed0
++# uimm12
++# CHECK-INST: csrrs t2, ucfiseed0, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x30,0x80]
++# CHECK-INST-ALIAS: csrr t2, ucfiseed0
++# name
++csrrs t1, ucfiseed0, zero
++# uimm12
++csrrs t2, 0x803, zero
++
++# ucfiseed1
++# name
++# CHECK-INST: csrrs t1, ucfiseed1, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xa0,0x80]
++# CHECK-INST-ALIAS: csrr t1, ucfiseed1
++# uimm12
++# CHECK-INST: csrrs t2, ucfiseed1, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xa0,0x80]
++# CHECK-INST-ALIAS: csrr t2, ucfiseed1
++# name
++csrrs t1, ucfiseed1, zero
++# uimm12
++csrrs t2, 0x80A, zero
++
++# ucfichk0
++# name
++# CHECK-INST: csrrs t1, ucfichk0, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xe0,0x80]
++# CHECK-INST-ALIAS: csrr t1, ucfichk0
++# uimm12
++# CHECK-INST: csrrs t2, ucfichk0, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xe0,0x80]
++# CHECK-INST-ALIAS: csrr t2, ucfichk0
++# name
++csrrs t1, ucfichk0, zero
++# uimm12
++csrrs t2, 0x80E, zero
++
++# ucfichk1
++# name
++# CHECK-INST: csrrs t1, ucfichk1, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x60,0x80]
++# CHECK-INST-ALIAS: csrr t1, ucfichk1
++# uimm12
++# CHECK-INST: csrrs t2, ucfichk1, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x60,0x80]
++# CHECK-INST-ALIAS: csrr t2, ucfichk1
++# name
++csrrs t1, ucfichk1, zero
++# uimm12
++csrrs t2, 0x806, zero
++
++# ucfimix0
++# name
++# CHECK-INST: csrrs t1, ucfimix0, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x50,0x80]
++# CHECK-INST-ALIAS: csrr t1, ucfimix0
++# uimm12
++# CHECK-INST: csrrs t2, ucfimix0, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x50,0x80]
++# CHECK-INST-ALIAS: csrr t2, ucfimix0
++# name
++csrrs t1, ucfimix0, zero
++# uimm12
++csrrs t2, 0x805, zero
++
++# ucfimix1
++# name
++# CHECK-INST: csrrs t1, ucfimix1, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x10,0x80]
++# CHECK-INST-ALIAS: csrr t1, ucfimix1
++# uimm12
++# CHECK-INST: csrrs t2, ucfimix1, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x10,0x80]
++# CHECK-INST-ALIAS: csrr t2, ucfimix1
++# name
++csrrs t1, ucfimix1, zero
++# uimm12
++csrrs t2, 0x801, zero
++
++# ucfisave0
++# name
++# CHECK-INST: csrrs t1, ucfisave0, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x40,0x80]
++# CHECK-INST-ALIAS: csrr t1, ucfisave0
++# uimm12
++# CHECK-INST: csrrs t2, ucfisave0, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x80]
++# CHECK-INST-ALIAS: csrr t2, ucfisave0
++# name
++csrrs t1, ucfisave0, zero
++# uimm12
++csrrs t2, 0x804, zero
++
++# ucfisave0
++# name
++# CHECK-INST: csrrs t1, ucfisave0, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x40,0x80]
++# CHECK-INST-ALIAS: csrr t1, ucfisave0
++# uimm12
++# CHECK-INST: csrrs t2, ucfisave0, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x40,0x80]
++# CHECK-INST-ALIAS: csrr t2, ucfisave0
++# name
++csrrs t1, ucfisave0, zero
++# uimm12
++csrrs t2, 0x804, zero
++
++# ucfisave1
++# name
++# CHECK-INST: csrrs t1, ucfisave1, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xf0,0x80]
++# CHECK-INST-ALIAS: csrr t1, ucfisave1
++# uimm12
++# CHECK-INST: csrrs t2, ucfisave1, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xf0,0x80]
++# CHECK-INST-ALIAS: csrr t2, ucfisave1
++# name
++csrrs t1, ucfisave1, zero
++# uimm12
++csrrs t2, 0x80F, zero
++
++###################################################
++# Soteria Pseudorandom Decoy Instruction CSRs
++###################################################
++
++# mpigrate
++# name
++# CHECK-INST: csrrs t1, mpigrate, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x90,0xbc]
++# CHECK-INST-ALIAS: csrr t1, mpigrate
++# uimm12
++# CHECK-INST: csrrs t2, mpigrate, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x90,0xbc]
++# CHECK-INST-ALIAS: csrr t2, mpigrate
++# name
++csrrs t1, mpigrate, zero
++# uimm12
++csrrs t2, 0xBC9, zero
++
++# mpigseed0
++# name
++# CHECK-INST: csrrs t1, mpigseed0, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xe0,0xbc]
++# CHECK-INST-ALIAS: csrr t1, mpigseed0
++# uimm12
++# CHECK-INST: csrrs t2, mpigseed0, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xe0,0xbc]
++# CHECK-INST-ALIAS: csrr t2, mpigseed0
++# name
++csrrs t1, mpigseed0, zero
++# uimm12
++csrrs t2, 0xBCE, zero
++
++# mpigseed1
++# name
++# CHECK-INST: csrrs t1, mpigseed1, zero
++# CHECK-ENC: encoding: [0x73,0x23,0xc0,0xbc]
++# CHECK-INST-ALIAS: csrr t1, mpigseed1
++# uimm12
++# CHECK-INST: csrrs t2, mpigseed1, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0xc0,0xbc]
++# CHECK-INST-ALIAS: csrr t2, mpigseed1
++# name
++csrrs t1, mpigseed1, zero
++# uimm12
++csrrs t2, 0xBCC, zero
++
++###################################################
++# Soteria Machine State Wipe
++###################################################
++
++# uswc
++# name
++# CHECK-INST: csrrs t1, uswc, zero
++# CHECK-ENC: encoding: [0x73,0x23,0x00,0x80]
++# CHECK-INST-ALIAS: csrr t1, uswc
++# uimm12
++# CHECK-INST: csrrs t2, uswc, zero
++# CHECK-ENC: encoding: [0xf3,0x23,0x00,0x80]
++# CHECK-INST-ALIAS: csrr t2, uswc
++# name
++csrrs t1, uswc, zero
++# uimm12
++csrrs t2, 0x800, zero
+--- a/llvm/tools/llvm-readobj/ELFDumper.cpp
++++ b/llvm/tools/llvm-readobj/ELFDumper.cpp
+@@ -1855,7 +1855,8 @@ static const EnumEntry<unsigned> ElfHeaderRISCVFlags[] = {
+   ENUM_ENT(EF_RISCV_FLOAT_ABI_SINGLE, "single-float ABI"),
+   ENUM_ENT(EF_RISCV_FLOAT_ABI_DOUBLE, "double-float ABI"),
+   ENUM_ENT(EF_RISCV_FLOAT_ABI_QUAD, "quad-float ABI"),
+-  ENUM_ENT(EF_RISCV_RVE, "RVE")
++  ENUM_ENT(EF_RISCV_RVE, "RVE"),
++  ENUM_ENT(EF_RISCV_SOTERIA, "Soteria")
+ };
+ 
+ static const EnumEntry<unsigned> ElfSymOtherFlags[] = {
diff --git a/dev-embedded/ti50-sdk/files/pack_git_tarball.py b/dev-embedded/ti50-sdk/files/pack_git_tarball.py
new file mode 100755
index 0000000..e8255b8
--- /dev/null
+++ b/dev-embedded/ti50-sdk/files/pack_git_tarball.py
@@ -0,0 +1,184 @@
+#!/usr/bin/env python3
+# Copyright 2021 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.
+"""Packs a tarball from a git source tree."""
+
+# pylint: disable=cros-logging-import
+
+import argparse
+import errno
+import logging
+import os
+from pathlib import Path
+import shutil
+import subprocess
+import sys
+import tempfile
+from typing import List, Iterable
+
+
+def enumerate_untracked_files(in_dir: Path) -> List[Path]:
+  """Returns a list of files untracked by git in |in_dir|."""
+  return subprocess.check_output(
+      ['git', 'ls-files', '--others'],
+      encoding='utf-8',
+      cwd=in_dir,
+  ).strip().splitlines()
+
+
+def get_git_sha(in_dir: Path) -> str:
+  """Returns the git SHA representing HEAD in |in_dir|."""
+  return subprocess.check_output(
+      ['git', 'rev-parse', 'HEAD'],
+      encoding='utf-8',
+      cwd=in_dir,
+  ).strip()
+
+
+def copy_git_tree_ignoring(from_path: Path, to_dir: Path,
+                           ignore: Iterable[str]):
+  """Copies |from_path| into |to_dir|, ignoring all subdirs in |ignore|.
+
+  All paths in |ignore| should be relative to |from_dir|.
+
+  This also removes all .git directories and other .git* files.
+  """
+  # shutil.copytree is incredibly slow (it took many minutes to copy my Rust
+  # tree from SSD -> memfs; |rsync| took 20secs). Prefer to use something
+  # faster, then go clean up afterward. This is theoretically problematic in
+  # some cases, but for the specific task of "copy some sources from this git
+  # directory into a tarball," seems to work fine.
+
+  # If we just hand rsync the directory, it'll copy it into
+  # |to_dir / from_path.name|; we want the contents to go into |to_dir|
+  # directly.
+  to_dir.mkdir(parents=True)
+
+  rsync_command = [
+      'rsync',
+      '-a',
+      '--exclude=.git*',
+  ]
+  rsync_command += (str(x) for x in from_path.iterdir() if x.name != '.git')
+  rsync_command.append(str(to_dir))
+  subprocess.check_call(rsync_command)
+
+  for x in (to_dir / x for x in ignore):
+    # x.exists() will read through the symlink; we therefore need to treat
+    # symlinks specially.
+    if not x.is_symlink() and not x.exists():
+      continue
+
+    if not x.is_symlink() and x.is_dir():
+      shutil.rmtree(x)
+    else:
+      os.unlink(x)
+
+  # Now, since this is all meant to be version controlled by git, empty
+  # directories shouldn't exist. Clean those.
+  for root_dir, _, _ in os.walk(to_dir, topdown=False):
+    try:
+      os.rmdir(root_dir)
+    except OSError as e:
+      if e.errno != errno.ENOTEMPTY:
+        raise
+    else:
+      logging.debug('Removing empty directory %s', root_dir)
+
+
+def get_parser():
+  """Creates a parser for commandline args."""
+  parser = argparse.ArgumentParser(
+      description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
+  parser.add_argument('--debug', action='store_true')
+  parser.add_argument(
+      '--git-dir',
+      required=True,
+      type=Path,
+      help="Path to the root of your git directory. If applicable, don't "
+      'forget to sync submodules!')
+  parser.add_argument(
+      '--output-prefix',
+      required=True,
+      type=Path,
+      help='Prefix at which to where to place the tarball. This has a few '
+      'components. For example, given a prefix of |/foo/bar/baz/rust| and '
+      "packing a repo at SHA abcdef1234567890, the output tarball's name will "
+      'be /foo/bar/baz/rust-abcdef1234-src.tar.xz, which will contain a '
+      'single directory, rust-abcdef1234-src/, which contains the desired '
+      'bits of |--git-dir|.')
+  parser.add_argument(
+      '--post-copy-command',
+      help='Command to run after copying sources to a tempdir, in the root '
+      'of said tempdir. Passed directly to `bash -c`.')
+  return parser
+
+
+def main(argv: List[str]):
+  parser = get_parser()
+  opts = parser.parse_args(argv)
+
+  logging.basicConfig(level=logging.DEBUG if opts.debug else logging.INFO)
+
+  full_output_prefix = opts.output_prefix
+  output_dir = full_output_prefix.parent.resolve()
+  output_prefix = full_output_prefix.name
+
+  post_copy_command = opts.post_copy_command
+  git_dir = opts.git_dir.resolve()
+  head_sha = get_git_sha(git_dir)
+
+  # 12 is arbitrary, but should be enough for anyone(tm).
+  sha_shorthand = head_sha[:12]
+
+  output_file_name_no_ext = f'{output_prefix}-{sha_shorthand}-src'
+  output_file = output_dir / f'{output_file_name_no_ext}.tar.xz'
+  logging.info('Will pack %s at SHA %s into %s', git_dir, head_sha, output_file)
+
+  logging.info('Enumerating untracked files...')
+  untracked_files = enumerate_untracked_files(git_dir)
+
+  with tempfile.TemporaryDirectory(prefix='pack_git_tarball_') as temp_dir:
+    tar_dir = Path(temp_dir) / output_file_name_no_ext
+
+    logging.info('Copying git tree to %s...', tar_dir)
+    copy_git_tree_ignoring(
+        git_dir,
+        tar_dir,
+        ignore=untracked_files,
+    )
+
+    # Stash the SHA for HEAD here, so it's easier for people to figure out
+    # where the sources came from.
+    sha_file = tar_dir / 'packed_git_sha'
+    if sha_file.exists():
+      raise RuntimeError(f"SHA file at {sha_file} already exists; it shouldn't")
+    sha_file.write_text(head_sha, encoding='utf-8')
+
+    if post_copy_command:
+      logging.info('Running %r', post_copy_command)
+      # Since we say bash in the `help` string, require the use of bash here
+      # instead of using shell=True.
+      subprocess.check_call(['bash', '-c', post_copy_command], cwd=tar_dir)
+
+    logging.info('Tarring and compressing result')
+    tar_file = f'{tar_dir}.tar'
+    subprocess.check_call(
+        [
+            'tar',
+            'cf',
+            tar_file,
+            output_file_name_no_ext,
+        ],
+        cwd=temp_dir,
+    )
+
+    subprocess.check_call(['xz', '-T0', '-9', tar_file])
+    shutil.move(f'{tar_file}.xz', output_file)
+
+  logging.info('Result is available at %s', output_file)
+
+
+if __name__ == '__main__':
+  sys.exit(main(sys.argv[1:]))
diff --git a/dev-embedded/ti50-sdk/files/rust-1.47-add-cros-targets.patch b/dev-embedded/ti50-sdk/files/rust-1.47-add-cros-targets.patch
new file mode 100644
index 0000000..1a4bac2
--- /dev/null
+++ b/dev-embedded/ti50-sdk/files/rust-1.47-add-cros-targets.patch
@@ -0,0 +1,14 @@
+The Rust compiler does not implement a fallback for unknown target triple
+vendors (e.g. "cros" or "pc") to the "unknown" variant, so we add copies of the
+relevant cros targets here as well.
+
+--- a/src/librustc_target/spec/mod.rs
++++ b/src/librustc_target/spec/mod.rs
+@@ -492,6 +492,7 @@ macro_rules! supported_targets {
+ supported_targets! {
+     ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
+     ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
++    ("x86_64-pc-linux-gnu", x86_64_pc_linux_gnu),
+     ("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
+     ("i586-unknown-linux-gnu", i586_unknown_linux_gnu),
+     ("mips-unknown-linux-gnu", mips_unknown_linux_gnu),
diff --git a/dev-embedded/ti50-sdk/files/rust-add-cros-targets.patch b/dev-embedded/ti50-sdk/files/rust-add-cros-targets.patch
new file mode 100644
index 0000000..7ec3c939
--- /dev/null
+++ b/dev-embedded/ti50-sdk/files/rust-add-cros-targets.patch
@@ -0,0 +1,14 @@
+The Rust compiler does not implement a fallback for unknown target triple
+vendors (e.g. "cros" or "pc") to the "unknown" variant, so we add copies of the
+relevant cros targets here as well.
+
+--- a/compiler/rustc_target/src/spec/mod.rs
++++ b/compiler/rustc_target/src/spec/mod.rs
+@@ -492,6 +492,7 @@ macro_rules! supported_targets {
+ supported_targets! {
+     ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
+     ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
++    ("x86_64-pc-linux-gnu", x86_64_pc_linux_gnu),
+     ("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
+     ("i586-unknown-linux-gnu", i586_unknown_linux_gnu),
+     ("mips-unknown-linux-gnu", mips_unknown_linux_gnu),
diff --git a/dev-embedded/ti50-sdk/ti50-sdk-0.0.1.ebuild b/dev-embedded/ti50-sdk/ti50-sdk-0.0.1.ebuild
new file mode 100644
index 0000000..b1d1c165
--- /dev/null
+++ b/dev-embedded/ti50-sdk/ti50-sdk-0.0.1.ebuild
@@ -0,0 +1,143 @@
+# Copyright 2021 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.
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6..9} )
+
+inherit cros-constants python-any-r1 toolchain-funcs
+
+DESCRIPTION="Ebuild that installs Ti50's SDK"
+LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
+KEYWORDS="*"
+SLOT="0"
+
+# The llvm src tarball was manually packed from a checkout of
+# https://github.com/llvm/llvm-project at ${LLVM_SHA}, using
+# ${FILESDIR}/pack_git_tarball.py.
+LLVM_SHA="bb852a09ae36"
+LLVM_SRC_TARBALL_NAME="llvm-${LLVM_SHA}-src"
+SRC_URI="https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/${LLVM_SRC_TARBALL_NAME}.tar.xz"
+
+BOOTSTRAP_HOST_TRIPLE="x86_64-unknown-linux-gnu"
+
+RUST_STAGE0_DATE="2020-08-26"
+RUST_VERSION="0da58007451a"
+
+RUST_PREFIX="rust-${RUST_VERSION}"
+RUST_SRC_TARBALL_NAME="rustc-${RUST_VERSION}-src"
+RUST_CARGO_TARBALL_NAME="cargo-beta-${BOOTSTRAP_HOST_TRIPLE}"
+RUST_STAGE0_TARBALL_NAME="rustc-beta-${BOOTSTRAP_HOST_TRIPLE}"
+RUST_STD_TARBALL_NAME="rust-std-beta-${BOOTSTRAP_HOST_TRIPLE}"
+RUST_RUSTFMT_TARBALL_NAME="rustfmt-beta-${BOOTSTRAP_HOST_TRIPLE}"
+# The rust src tarball was manually packed from a checkout of
+# https://github.com/rust-lang/rust at ${RUST_VERSION}, using
+# ${FILESDIR}/pack_git_tarball.py with |--post-copy-command 'cargo vendor'|.
+#
+# NOTE that this also had
+# rust-lang/rust@e715c7f234ba25c25b98894c822de9e7cf87558c applied; without
+# that, nothing `dist`s except for rust-std.
+SRC_URI+="
+	https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/${RUST_PREFIX}-${RUST_SRC_TARBALL_NAME}.tar.xz
+	https://static.rust-lang.org/dist/${RUST_STAGE0_DATE}/${RUST_CARGO_TARBALL_NAME}.tar.xz -> ${RUST_PREFIX}-${RUST_CARGO_TARBALL_NAME}.tar.xz
+	https://static.rust-lang.org/dist/${RUST_STAGE0_DATE}/${RUST_STAGE0_TARBALL_NAME}.tar.xz -> ${RUST_PREFIX}-${RUST_STAGE0_TARBALL_NAME}.tar.xz
+	https://static.rust-lang.org/dist/${RUST_STAGE0_DATE}/${RUST_STD_TARBALL_NAME}.tar.xz -> ${RUST_PREFIX}-${RUST_STD_TARBALL_NAME}.tar.xz
+	https://static.rust-lang.org/dist/${RUST_STAGE0_DATE}/${RUST_RUSTFMT_TARBALL_NAME}.tar.xz -> ${RUST_PREFIX}-${RUST_RUSTFMT_TARBALL_NAME}.tar.xz
+"
+
+# The newlib src tarball was manually packed from a checkout of
+# https://sourceware.org/git/newlib-cygwin.git at ${NEWLIB_SHA}, using
+# ${FILESDIR}/pack_git_tarball.py.
+NEWLIB_SHA="1debd4d635c2"
+NEWLIB_SRC_TARBALL_NAME="newlib-${NEWLIB_SHA}-src"
+SRC_URI+=" https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/${NEWLIB_SRC_TARBALL_NAME}.tar.xz"
+
+SRC_ROOT="${WORKDIR}/${P}/src"
+INSTALL_ROOT="${WORKDIR}/${P}/install"
+INSTALL_PREFIX="opt/${PN}"
+
+# N.B., this toolchain is built entirely independently of the host's Rust
+# toolchain, so no dev-lang/rust dependency is needed.
+DEPEND="sys-libs/zlib
+	>=sys-libs/ncurses-5.9-r3
+	sys-devel/binutils"
+BDEPEND="${PYTHON_DEPS}
+	dev-lang/perl
+	sys-devel/gnuconfig
+	$(python_gen_any_dep 'dev-python/sphinx[${PYTHON_USEDEP}]')
+	>=dev-libs/libxml2-2.9.6
+	>=dev-lang/perl-5.0"
+
+pkg_setup() {
+	python-any-r1_pkg_setup
+}
+
+src_unpack() {
+	default
+
+	mkdir -p "${SRC_ROOT}" || die
+
+	mv "${WORKDIR}/${LLVM_SRC_TARBALL_NAME}" "${SRC_ROOT}/llvm" || die
+	mv "${WORKDIR}/${NEWLIB_SRC_TARBALL_NAME}" "${SRC_ROOT}/newlib" || die
+
+	mv "${WORKDIR}/${RUST_SRC_TARBALL_NAME}" "${SRC_ROOT}/rustc" || die
+	cp -r \
+		"${WORKDIR}/${RUST_STD_TARBALL_NAME}/rust-std-${BOOTSTRAP_HOST_TRIPLE}/lib/rustlib/${BOOTSTRAP_HOST_TRIPLE}" \
+		"${WORKDIR}/${RUST_STAGE0_TARBALL_NAME}/rustc/lib/rustlib" \
+		|| die
+}
+
+src_prepare() {
+	cd "${SRC_ROOT}/llvm" || die
+	eapply "${FILESDIR}/llvm11-10122020-soteria.patch"
+
+	cd "${SRC_ROOT}/rustc" || die
+
+	# Copy "unknown" vendor targets to create cros_sdk target triples applied later.
+	local spec_dir="compiler/rustc_target/src/spec"
+	sed -e 's|"unknown"|"pc"|g' "${spec_dir}/x86_64_unknown_linux_gnu.rs" \
+		> "${spec_dir}/x86_64_pc_linux_gnu.rs" \
+		|| die
+
+	eapply "${FILESDIR}/rust-add-cros-targets.patch"
+	sed -i 's|"stdc++"|"c++"|g' "compiler/rustc_llvm/build.rs" || die
+
+	cd "${SRC_ROOT}" || die
+	eapply_user
+}
+
+# src_configure is elided, since this package is actually building a few things
+# at once, and there are dependencies between these things. Ideally, each of
+# these would be their own ebuild, but we're trying to keep this as small and
+# self-contained as possible for the moment.
+
+src_compile() {
+	tc-export PKG_CONFIG
+
+	# In iterative development via `ebuild compile`, our clang toolchain
+	# might already be fully built. Don't rebuild it if that's the case.
+	if [[ ! -e "${INSTALL_ROOT}/bin/clang" ]]; then
+		"${FILESDIR}/build_clang_toolchain.py" \
+			--install-dir="${INSTALL_ROOT}" \
+			--llvm-dir="${SRC_ROOT}/llvm" \
+			--newlib-dir="${SRC_ROOT}/newlib" \
+			--work-dir="${SRC_ROOT}/llvm/build" \
+			|| die
+	fi
+
+	"${FILESDIR}/build_rust_toolchain.py" \
+		--install-dir="${INSTALL_ROOT}" \
+		--install-prefix="${ED}${INSTALL_PREFIX}" \
+		--rust-src="${SRC_ROOT}/rustc" \
+		--rv-clang-bin="${INSTALL_ROOT}/bin" \
+		--cargo="${WORKDIR}/${RUST_CARGO_TARBALL_NAME}/cargo/bin/cargo" \
+		--rustc="${WORKDIR}/${RUST_STAGE0_TARBALL_NAME}/rustc/bin/rustc" \
+		--rustfmt="${WORKDIR}/${RUST_RUSTFMT_TARBALL_NAME}/rustfmt-preview/bin/rustfmt" \
+		|| die
+}
+
+src_install() {
+	dodir "/${INSTALL_PREFIX}"
+	cp -a "${INSTALL_ROOT}"/* "${D}/${INSTALL_PREFIX}" || die
+}
diff --git a/dev-go/go-tools/Manifest b/dev-go/go-tools/Manifest
index c5e7572..dec3cfa 100644
--- a/dev-go/go-tools/Manifest
+++ b/dev-go/go-tools/Manifest
@@ -1 +1 @@
-DIST go.googlesource.com-tools-65e3620a7ae7ac25e8494a60f0e5ef4e4fba03b3.tar.gz 2219259 BLAKE2B 9e2882c9fbdc35ae5d627b631a74a2680c315f4a511aed1613ac0c31616a25f43152a6e9d5c54aa5bc9236233d10b39f06d9516c5974c14feac2e04f12a00b4b SHA512 e5783cd87fb1bd8ee1dacfc1e49b88690821757156a3f526900d58b3ca1f79e58f26919f14377a6c0d79a54fa3b85a662d84b1afd86682b5ea8e1e3c1cbdcfdf
+DIST go.googlesource.com-tools-c1934b75d054975b79a8179cb6f0a9b8b3fa33cd.tar.gz 2473513 BLAKE2B 6174029ad40be210c12c83ab75b41db3f5290f77410459c0d155ec7213b1010241680438ef9d4b7d39d73360b91a149096e1b36bb69ccd99334da1f1b801ec2f SHA512 65c15830232301d219c770083d7da00c1b094fb5632c56694ab113cc6846ec5c2e56a0de73a99348c0b0185a69f4c2dba196d5164bb39fd3dffd3e8088aa741e
diff --git a/dev-go/go-tools/go-tools-0.0.1-r13.ebuild b/dev-go/go-tools/go-tools-0.0.1-r14.ebuild
similarity index 100%
rename from dev-go/go-tools/go-tools-0.0.1-r13.ebuild
rename to dev-go/go-tools/go-tools-0.0.1-r14.ebuild
diff --git a/dev-go/go-tools/go-tools-0.0.1.ebuild b/dev-go/go-tools/go-tools-0.0.1.ebuild
index 5ea8dff..09c2e8a 100644
--- a/dev-go/go-tools/go-tools-0.0.1.ebuild
+++ b/dev-go/go-tools/go-tools-0.0.1.ebuild
@@ -3,8 +3,9 @@
 
 EAPI=5
 
-# pick go-tools at the current head of release-branch.go1.13
-CROS_GO_SOURCE="go.googlesource.com/tools:golang.org/x/tools 65e3620a7ae7ac25e8494a60f0e5ef4e4fba03b3"
+# pick go-tools at the current head of release-branch.go1.15
+# c1934b75d054975b79a8179cb6f0a9b8b3fa33cd (HEAD -> release-branch.go1.15)
+CROS_GO_SOURCE="go.googlesource.com/tools:golang.org/x/tools c1934b75d054975b79a8179cb6f0a9b8b3fa33cd"
 
 CROS_GO_PACKAGES=(
 	"golang.org/x/tools/go/ast/astutil"
@@ -15,9 +16,15 @@
 	"golang.org/x/tools/go/internal/packagesdriver"
 	"golang.org/x/tools/go/loader"
 	"golang.org/x/tools/go/packages"
+	"golang.org/x/tools/internal/event"
+	"golang.org/x/tools/internal/event/core"
+	"golang.org/x/tools/internal/event/keys"
+	"golang.org/x/tools/internal/event/label"
 	"golang.org/x/tools/internal/fastwalk"
+	"golang.org/x/tools/internal/gocommand"
 	"golang.org/x/tools/internal/gopathwalk"
-	"golang.org/x/tools/internal/semver"
+	"golang.org/x/tools/internal/packagesinternal"
+	"golang.org/x/tools/internal/typesinternal"
 )
 
 CROS_GO_TEST=(
@@ -44,6 +51,7 @@
 RESTRICT="binchecks strip"
 
 DEPEND="
+	dev-go/mod
 	dev-go/net
 	dev-go/xerrors
 "
diff --git a/dev-go/luci-auth/Manifest b/dev-go/luci-auth/Manifest
deleted file mode 100644
index ad422ae..0000000
--- a/dev-go/luci-auth/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz 6362391 BLAKE2B a60892b9a10f3fb2f98c1ced3d7fa5617beae51cbb8f87fe9a40cc422e8785a7ecd4250b12512c4427a1bad94aa73d63df4a6e2f597880a14656024be94d789d SHA512 f923a65f8230a5a68296fcf75adbd4a5003bd35f6302309ad4d4e9d3366c89788621ec7da983f83867a0c3c8a893ccd72a63ecfeee8f49e2f65d3b1e9140f675
diff --git a/dev-go/luci-auth/luci-auth-0.0.1-r4.ebuild b/dev-go/luci-auth/luci-auth-0.0.1-r4.ebuild
deleted file mode 120000
index ad34fc8..0000000
--- a/dev-go/luci-auth/luci-auth-0.0.1-r4.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-luci-auth-0.0.1.ebuild
\ No newline at end of file
diff --git a/dev-go/luci-auth/luci-auth-0.0.1.ebuild b/dev-go/luci-auth/luci-auth-0.0.1.ebuild
deleted file mode 100644
index 3f094f0..0000000
--- a/dev-go/luci-auth/luci-auth-0.0.1.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=5
-
-# The dev-go/luci-* packages are all built from this repo. They should
-# be updated together.
-CROS_GO_SOURCE="chromium.googlesource.com/infra/luci/luci-go:go.chromium.org/luci 77b23ce4c9189484e14035690f439c97f7629c2e"
-
-CROS_GO_PACKAGES=(
-	"go.chromium.org/luci/auth"
-	"go.chromium.org/luci/auth/client/..."
-	"go.chromium.org/luci/auth/internal"
-	"go.chromium.org/luci/auth/integration/..."
-)
-
-inherit cros-go
-
-DESCRIPTION="LUCI Go auth library"
-HOMEPAGE="https://chromium.googlesource.com/infra/luci/luci-go/"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-# Tests import "github.com/smartystreets/goconvey/convey", which we don't have.
-RESTRICT="binchecks test strip"
-
-DEPEND="
-	dev-go/gcp-compute
-	dev-go/grpc
-	dev-go/luci-common
-	dev-go/maruel-subcommands
-	dev-go/net
-	dev-go/oauth2
-"
-RDEPEND="${DEPEND}"
diff --git a/dev-go/luci-chromeinfra/Manifest b/dev-go/luci-chromeinfra/Manifest
deleted file mode 100644
index ad422ae..0000000
--- a/dev-go/luci-chromeinfra/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz 6362391 BLAKE2B a60892b9a10f3fb2f98c1ced3d7fa5617beae51cbb8f87fe9a40cc422e8785a7ecd4250b12512c4427a1bad94aa73d63df4a6e2f597880a14656024be94d789d SHA512 f923a65f8230a5a68296fcf75adbd4a5003bd35f6302309ad4d4e9d3366c89788621ec7da983f83867a0c3c8a893ccd72a63ecfeee8f49e2f65d3b1e9140f675
diff --git a/dev-go/luci-chromeinfra/luci-chromeinfra-0.0.1-r2.ebuild b/dev-go/luci-chromeinfra/luci-chromeinfra-0.0.1-r2.ebuild
deleted file mode 120000
index c0508f4..0000000
--- a/dev-go/luci-chromeinfra/luci-chromeinfra-0.0.1-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-luci-chromeinfra-0.0.1.ebuild
\ No newline at end of file
diff --git a/dev-go/luci-chromeinfra/luci-chromeinfra-0.0.1.ebuild b/dev-go/luci-chromeinfra/luci-chromeinfra-0.0.1.ebuild
deleted file mode 100644
index 9e4ca51..0000000
--- a/dev-go/luci-chromeinfra/luci-chromeinfra-0.0.1.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=5
-
-# The dev-go/luci-* packages are all built from this repo.  They should
-# be updated together.
-CROS_GO_SOURCE="chromium.googlesource.com/infra/luci/luci-go:go.chromium.org/luci 77b23ce4c9189484e14035690f439c97f7629c2e"
-
-CROS_GO_PACKAGES=(
-	"go.chromium.org/luci/hardcoded/chromeinfra"
-)
-
-CROS_GO_TEST=(
-	"${CROS_GO_PACKAGES[@]}"
-)
-
-inherit cros-go
-
-DESCRIPTION="LUCI Go hardcoded chrome infra values library"
-HOMEPAGE="https://chromium.googlesource.com/infra/luci/luci-go/"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-RESTRICT="binchecks strip"
-
-DEPEND="
-	dev-go/luci-auth
-	dev-go/homedir
-"
-RDEPEND="${DEPEND}"
diff --git a/dev-go/luci-common/Manifest b/dev-go/luci-common/Manifest
deleted file mode 100644
index ad422ae..0000000
--- a/dev-go/luci-common/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz 6362391 BLAKE2B a60892b9a10f3fb2f98c1ced3d7fa5617beae51cbb8f87fe9a40cc422e8785a7ecd4250b12512c4427a1bad94aa73d63df4a6e2f597880a14656024be94d789d SHA512 f923a65f8230a5a68296fcf75adbd4a5003bd35f6302309ad4d4e9d3366c89788621ec7da983f83867a0c3c8a893ccd72a63ecfeee8f49e2f65d3b1e9140f675
diff --git a/dev-go/luci-common/luci-common-0.0.1-r6.ebuild b/dev-go/luci-common/luci-common-0.0.1-r6.ebuild
deleted file mode 120000
index 8414045..0000000
--- a/dev-go/luci-common/luci-common-0.0.1-r6.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-luci-common-0.0.1.ebuild
\ No newline at end of file
diff --git a/dev-go/luci-common/luci-common-0.0.1.ebuild b/dev-go/luci-common/luci-common-0.0.1.ebuild
deleted file mode 100644
index 40716fd..0000000
--- a/dev-go/luci-common/luci-common-0.0.1.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=5
-
-# The dev-go/luci-* packages are all built from this repo. They should
-# be updated together.
-CROS_GO_SOURCE="chromium.googlesource.com/infra/luci/luci-go:go.chromium.org/luci 77b23ce4c9189484e14035690f439c97f7629c2e"
-
-CROS_GO_PACKAGES=(
-	"go.chromium.org/luci/common/cli"
-	"go.chromium.org/luci/common/clock"
-	"go.chromium.org/luci/common/clock/clockflag"
-	"go.chromium.org/luci/common/data/chunkstream"
-	"go.chromium.org/luci/common/data/rand/cryptorand"
-	"go.chromium.org/luci/common/data/rand/mathrand"
-	"go.chromium.org/luci/common/data/recordio"
-	"go.chromium.org/luci/common/data/stringset"
-	"go.chromium.org/luci/common/data/text/indented"
-	"go.chromium.org/luci/common/errors"
-	"go.chromium.org/luci/common/flag/flagenum"
-	"go.chromium.org/luci/common/flag/stringmapflag"
-	"go.chromium.org/luci/common/gcloud/googleoauth"
-	"go.chromium.org/luci/common/gcloud/iam"
-	"go.chromium.org/luci/common/gcloud/pubsub"
-	"go.chromium.org/luci/common/iotools"
-	"go.chromium.org/luci/common/lhttp"
-	"go.chromium.org/luci/common/logging"
-	"go.chromium.org/luci/common/logging/gologger"
-	"go.chromium.org/luci/common/proto/git"
-	"go.chromium.org/luci/common/proto/google"
-	"go.chromium.org/luci/common/proto/milo"
-	"go.chromium.org/luci/common/retry"
-	"go.chromium.org/luci/common/retry/transient"
-	"go.chromium.org/luci/common/runtime/goroutine"
-	"go.chromium.org/luci/common/runtime/paniccatcher"
-	"go.chromium.org/luci/common/sync/cancelcond"
-	"go.chromium.org/luci/common/sync/parallel"
-	"go.chromium.org/luci/common/system/environ"
-	"go.chromium.org/luci/common/system/exitcode"
-	"go.chromium.org/luci/common/system/terminal"
-	"go.chromium.org/luci/lucictx"
-)
-
-inherit cros-go
-
-DESCRIPTION="LUCI Go common library"
-HOMEPAGE="https://chromium.googlesource.com/infra/luci/luci-go/"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-# Tests import "github.com/smartystreets/goconvey/convey", which we don't have.
-RESTRICT="binchecks test strip"
-
-DEPEND="
-	dev-go/crypto
-	dev-go/gapi-googleapi
-	dev-go/gcp-pubsub
-	dev-go/maruel-subcommands
-	dev-go/net
-	dev-go/oauth2
-	dev-go/op-logging
-	dev-go/protobuf
-"
-RDEPEND="${DEPEND}"
diff --git a/dev-go/luci-config/Manifest b/dev-go/luci-config/Manifest
deleted file mode 100644
index ad422ae..0000000
--- a/dev-go/luci-config/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz 6362391 BLAKE2B a60892b9a10f3fb2f98c1ced3d7fa5617beae51cbb8f87fe9a40cc422e8785a7ecd4250b12512c4427a1bad94aa73d63df4a6e2f597880a14656024be94d789d SHA512 f923a65f8230a5a68296fcf75adbd4a5003bd35f6302309ad4d4e9d3366c89788621ec7da983f83867a0c3c8a893ccd72a63ecfeee8f49e2f65d3b1e9140f675
diff --git a/dev-go/luci-config/luci-config-0.0.1-r2.ebuild b/dev-go/luci-config/luci-config-0.0.1-r2.ebuild
deleted file mode 120000
index 20b4186..0000000
--- a/dev-go/luci-config/luci-config-0.0.1-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-luci-config-0.0.1.ebuild
\ No newline at end of file
diff --git a/dev-go/luci-config/luci-config-0.0.1.ebuild b/dev-go/luci-config/luci-config-0.0.1.ebuild
deleted file mode 100644
index b629cd0..0000000
--- a/dev-go/luci-config/luci-config-0.0.1.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=5
-
-# The dev-go/luci-* packages are all built from this repo.  They should
-# be updated together.
-CROS_GO_SOURCE="chromium.googlesource.com/infra/luci/luci-go:go.chromium.org/luci 77b23ce4c9189484e14035690f439c97f7629c2e"
-
-CROS_GO_PACKAGES=(
-	"go.chromium.org/luci/config"
-)
-
-inherit cros-go
-
-DESCRIPTION="LUCI Go config library"
-HOMEPAGE="https://chromium.googlesource.com/infra/luci/luci-go/"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-# Needs a ton of packages for the tests
-RESTRICT="binchecks test strip"
-
-DEPEND="
-	dev-go/net
-"
-RDEPEND="${DEPEND}"
diff --git a/dev-go/luci-go-common/Manifest b/dev-go/luci-go-common/Manifest
new file mode 100644
index 0000000..7201a3b
--- /dev/null
+++ b/dev-go/luci-go-common/Manifest
@@ -0,0 +1 @@
+DIST chromium.googlesource.com-infra-luci-luci-go-fbf085364d0e2db2aa35e78f526ca0d7468201a8.tar.gz 13171075 BLAKE2B 5edae834598913e7856bbb54466156d71ea15a72973dbf556fb98a5fbd2210a5860d14d013c2bd3f243dcf519541a15399ca773faf194bcb08681d6991ad1beb SHA512 54bdc51cfc66b35046016966ec53e2edf1fb6fcd36f0466d119ef2bc7b5c820b6824578248dbf85d61918bfcc846952ebfd919e2f2ffa3c141da3e74b6fb457f
diff --git a/dev-go/luci-go-common/OWNERS b/dev-go/luci-go-common/OWNERS
new file mode 100644
index 0000000..634b013
--- /dev/null
+++ b/dev-go/luci-go-common/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/dev-util:/src/OWNERS
diff --git a/dev-go/luci-go-common/luci-go-common-0.0.1-r1.ebuild b/dev-go/luci-go-common/luci-go-common-0.0.1-r1.ebuild
new file mode 120000
index 0000000..111fad0
--- /dev/null
+++ b/dev-go/luci-go-common/luci-go-common-0.0.1-r1.ebuild
@@ -0,0 +1 @@
+luci-go-common-0.0.1.ebuild
\ No newline at end of file
diff --git a/dev-go/luci-go-common/luci-go-common-0.0.1.ebuild b/dev-go/luci-go-common/luci-go-common-0.0.1.ebuild
new file mode 100644
index 0000000..b713591
--- /dev/null
+++ b/dev-go/luci-go-common/luci-go-common-0.0.1.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2.
+
+EAPI=7
+
+CROS_GO_SOURCE="chromium.googlesource.com/infra/luci/luci-go:go.chromium.org/luci fbf085364d0e2db2aa35e78f526ca0d7468201a8"
+
+CROS_GO_PACKAGES=(
+	"go.chromium.org/luci/common/data/stringset"
+	"go.chromium.org/luci/common/data/strpair"
+	"go.chromium.org/luci/common/data/text/indented"
+	"go.chromium.org/luci/common/errors"
+	"go.chromium.org/luci/common/flag"
+	"go.chromium.org/luci/common/iotools"
+	"go.chromium.org/luci/common/logging"
+	"go.chromium.org/luci/common/runtime/goroutine"
+)
+
+inherit cros-go
+
+DESCRIPTION="LUCI-related packages and other common utility packages."
+HOMEPAGE="https://chromium.googlesource.com/infra/luci/luci-go"
+SRC_URI="$(cros-go_src_uri)"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	dev-go/gapi-googleapi
+	dev-go/grpc
+	dev-go/protobuf
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-go/luci-grpc/Manifest b/dev-go/luci-grpc/Manifest
deleted file mode 100644
index ad422ae..0000000
--- a/dev-go/luci-grpc/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz 6362391 BLAKE2B a60892b9a10f3fb2f98c1ced3d7fa5617beae51cbb8f87fe9a40cc422e8785a7ecd4250b12512c4427a1bad94aa73d63df4a6e2f597880a14656024be94d789d SHA512 f923a65f8230a5a68296fcf75adbd4a5003bd35f6302309ad4d4e9d3366c89788621ec7da983f83867a0c3c8a893ccd72a63ecfeee8f49e2f65d3b1e9140f675
diff --git a/dev-go/luci-grpc/luci-grpc-0.0.1-r1.ebuild b/dev-go/luci-grpc/luci-grpc-0.0.1-r1.ebuild
deleted file mode 120000
index c8b0049..0000000
--- a/dev-go/luci-grpc/luci-grpc-0.0.1-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-luci-grpc-0.0.1.ebuild
\ No newline at end of file
diff --git a/dev-go/luci-grpc/luci-grpc-0.0.1.ebuild b/dev-go/luci-grpc/luci-grpc-0.0.1.ebuild
deleted file mode 100644
index e869670..0000000
--- a/dev-go/luci-grpc/luci-grpc-0.0.1.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=5
-
-# The dev-go/luci-* packages are all built from this repo.  They should
-# be updated together.
-CROS_GO_SOURCE="chromium.googlesource.com/infra/luci/luci-go:go.chromium.org/luci 77b23ce4c9189484e14035690f439c97f7629c2e"
-
-CROS_GO_PACKAGES=(
-	"go.chromium.org/luci/grpc/discovery"
-	"go.chromium.org/luci/grpc/grpcutil"
-	"go.chromium.org/luci/grpc/prpc"
-)
-
-inherit cros-go
-
-DESCRIPTION="LUCI Go common library"
-HOMEPAGE="https://chromium.googlesource.com/infra/luci/luci-go/"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-# Tests import "github.com/smartystreets/goconvey/convey", which we don't have.
-RESTRICT="binchecks test strip"
-
-DEPEND="
-	dev-go/grpc
-	dev-go/luci-common
-	dev-go/luci-router
-	dev-go/net
-	dev-go/protobuf
-"
-RDEPEND="${DEPEND}"
diff --git a/dev-go/luci-logdog-streamclient/Manifest b/dev-go/luci-logdog-streamclient/Manifest
deleted file mode 100644
index ad422ae..0000000
--- a/dev-go/luci-logdog-streamclient/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz 6362391 BLAKE2B a60892b9a10f3fb2f98c1ced3d7fa5617beae51cbb8f87fe9a40cc422e8785a7ecd4250b12512c4427a1bad94aa73d63df4a6e2f597880a14656024be94d789d SHA512 f923a65f8230a5a68296fcf75adbd4a5003bd35f6302309ad4d4e9d3366c89788621ec7da983f83867a0c3c8a893ccd72a63ecfeee8f49e2f65d3b1e9140f675
diff --git a/dev-go/luci-logdog-streamclient/luci-logdog-streamclient-0.0.1-r4.ebuild b/dev-go/luci-logdog-streamclient/luci-logdog-streamclient-0.0.1-r4.ebuild
deleted file mode 120000
index f6eb1aa..0000000
--- a/dev-go/luci-logdog-streamclient/luci-logdog-streamclient-0.0.1-r4.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-luci-logdog-streamclient-0.0.1.ebuild
\ No newline at end of file
diff --git a/dev-go/luci-logdog-streamclient/luci-logdog-streamclient-0.0.1.ebuild b/dev-go/luci-logdog-streamclient/luci-logdog-streamclient-0.0.1.ebuild
deleted file mode 100644
index fa3538b..0000000
--- a/dev-go/luci-logdog-streamclient/luci-logdog-streamclient-0.0.1.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=5
-
-# The dev-go/luci-* packages are all built from this repo.  They should
-# be updated together.
-CROS_GO_SOURCE="chromium.googlesource.com/infra/luci/luci-go:go.chromium.org/luci 77b23ce4c9189484e14035690f439c97f7629c2e"
-
-CROS_GO_PACKAGES=(
-	"go.chromium.org/luci/logdog/api/endpoints/coordinator/registration/v1"
-	"go.chromium.org/luci/logdog/api/logpb"
-	"go.chromium.org/luci/logdog/client/annotee"
-	"go.chromium.org/luci/logdog/client/annotee/annotation"
-	"go.chromium.org/luci/logdog/client/butler"
-	"go.chromium.org/luci/logdog/client/butler/bundler"
-	"go.chromium.org/luci/logdog/client/butler/output"
-	"go.chromium.org/luci/logdog/client/butler/output/logdog"
-	"go.chromium.org/luci/logdog/client/butler/output/pubsub"
-	"go.chromium.org/luci/logdog/client/butler/streamserver"
-	"go.chromium.org/luci/logdog/client/butler/streamserver/localclient"
-	"go.chromium.org/luci/logdog/client/butlerproto"
-	"go.chromium.org/luci/logdog/client/butlerlib/streamclient"
-	"go.chromium.org/luci/logdog/client/butlerlib/streamproto"
-	"go.chromium.org/luci/logdog/common/types"
-	"go.chromium.org/luci/logdog/common/viewer"
-)
-
-inherit cros-go
-
-DESCRIPTION="LUCI Go LogDog stream client library"
-HOMEPAGE="https://chromium.googlesource.com/infra/luci/luci-go/"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-# Tests require a lot of packages
-RESTRICT="binchecks test strip"
-
-DEPEND="
-	dev-go/luci-common
-	dev-go/luci-config
-	dev-go/luci-grpc
-	dev-go/protobuf
-"
-RDEPEND="${DEPEND}"
diff --git a/dev-go/luci-router/Manifest b/dev-go/luci-router/Manifest
deleted file mode 100644
index ad422ae..0000000
--- a/dev-go/luci-router/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz 6362391 BLAKE2B a60892b9a10f3fb2f98c1ced3d7fa5617beae51cbb8f87fe9a40cc422e8785a7ecd4250b12512c4427a1bad94aa73d63df4a6e2f597880a14656024be94d789d SHA512 f923a65f8230a5a68296fcf75adbd4a5003bd35f6302309ad4d4e9d3366c89788621ec7da983f83867a0c3c8a893ccd72a63ecfeee8f49e2f65d3b1e9140f675
diff --git a/dev-go/luci-router/luci-router-0.0.1-r1.ebuild b/dev-go/luci-router/luci-router-0.0.1-r1.ebuild
deleted file mode 120000
index af3097f..0000000
--- a/dev-go/luci-router/luci-router-0.0.1-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-luci-router-0.0.1.ebuild
\ No newline at end of file
diff --git a/dev-go/luci-router/luci-router-0.0.1.ebuild b/dev-go/luci-router/luci-router-0.0.1.ebuild
deleted file mode 100644
index e97dd78..0000000
--- a/dev-go/luci-router/luci-router-0.0.1.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=5
-
-# The dev-go/luci-* packages are all built from this repo.  They should
-# be updated together.
-CROS_GO_SOURCE="chromium.googlesource.com/infra/luci/luci-go:go.chromium.org/luci 77b23ce4c9189484e14035690f439c97f7629c2e"
-
-CROS_GO_PACKAGES=(
-	"go.chromium.org/luci/server/router"
-)
-
-inherit cros-go
-
-DESCRIPTION="LUCI Go library"
-HOMEPAGE="https://chromium.googlesource.com/infra/luci/luci-go/"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-# Tests import "github.com/smartystreets/goconvey/convey", which we don't have.
-RESTRICT="binchecks test strip"
-
-DEPEND="
-	dev-go/httprouter
-	dev-go/net
-"
-RDEPEND="${DEPEND}"
diff --git a/dev-go/luci-swarming/Manifest b/dev-go/luci-swarming/Manifest
deleted file mode 100644
index ad422ae..0000000
--- a/dev-go/luci-swarming/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz 6362391 BLAKE2B a60892b9a10f3fb2f98c1ced3d7fa5617beae51cbb8f87fe9a40cc422e8785a7ecd4250b12512c4427a1bad94aa73d63df4a6e2f597880a14656024be94d789d SHA512 f923a65f8230a5a68296fcf75adbd4a5003bd35f6302309ad4d4e9d3366c89788621ec7da983f83867a0c3c8a893ccd72a63ecfeee8f49e2f65d3b1e9140f675
diff --git a/dev-go/luci-swarming/luci-swarming-0.0.1-r2.ebuild b/dev-go/luci-swarming/luci-swarming-0.0.1-r2.ebuild
deleted file mode 120000
index c611104..0000000
--- a/dev-go/luci-swarming/luci-swarming-0.0.1-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-luci-swarming-0.0.1.ebuild
\ No newline at end of file
diff --git a/dev-go/luci-swarming/luci-swarming-0.0.1.ebuild b/dev-go/luci-swarming/luci-swarming-0.0.1.ebuild
deleted file mode 100644
index 83dfc22..0000000
--- a/dev-go/luci-swarming/luci-swarming-0.0.1.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=5
-
-# The dev-go/luci-* packages are all built from this repo.  They should
-# be updated together.
-CROS_GO_SOURCE="chromium.googlesource.com/infra/luci/luci-go:go.chromium.org/luci 77b23ce4c9189484e14035690f439c97f7629c2e"
-
-CROS_GO_PACKAGES=(
-	"go.chromium.org/luci/common/api/swarming/swarming/v1"
-)
-
-inherit cros-go
-
-DESCRIPTION="LUCI Go swarming API library"
-HOMEPAGE="https://chromium.googlesource.com/infra/luci/luci-go/"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-# Tests import "github.com/smartystreets/goconvey/convey", which we don't have.
-RESTRICT="binchecks test strip"
-
-DEPEND="
-	dev-go/gapi-gensupport
-	dev-go/gapi-googleapi
-	dev-go/net
-"
-RDEPEND="${DEPEND}"
diff --git a/dev-go/luci-tsmon/Manifest b/dev-go/luci-tsmon/Manifest
deleted file mode 100644
index ad422ae..0000000
--- a/dev-go/luci-tsmon/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz 6362391 BLAKE2B a60892b9a10f3fb2f98c1ced3d7fa5617beae51cbb8f87fe9a40cc422e8785a7ecd4250b12512c4427a1bad94aa73d63df4a6e2f597880a14656024be94d789d SHA512 f923a65f8230a5a68296fcf75adbd4a5003bd35f6302309ad4d4e9d3366c89788621ec7da983f83867a0c3c8a893ccd72a63ecfeee8f49e2f65d3b1e9140f675
diff --git a/dev-go/luci-tsmon/luci-tsmon-0.0.1-r4.ebuild b/dev-go/luci-tsmon/luci-tsmon-0.0.1-r4.ebuild
deleted file mode 120000
index d0192a0..0000000
--- a/dev-go/luci-tsmon/luci-tsmon-0.0.1-r4.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-luci-tsmon-0.0.1.ebuild
\ No newline at end of file
diff --git a/dev-go/luci-tsmon/luci-tsmon-0.0.1.ebuild b/dev-go/luci-tsmon/luci-tsmon-0.0.1.ebuild
deleted file mode 100644
index 48c62a4..0000000
--- a/dev-go/luci-tsmon/luci-tsmon-0.0.1.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=5
-
-# The dev-go/luci-* packages are all built from this repo.  They should
-# be updated together.
-CROS_GO_SOURCE="chromium.googlesource.com/infra/luci/luci-go:go.chromium.org/luci 77b23ce4c9189484e14035690f439c97f7629c2e"
-
-CROS_GO_PACKAGES=(
-	"go.chromium.org/luci/common/tsmon"
-	"go.chromium.org/luci/common/tsmon/distribution"
-	"go.chromium.org/luci/common/tsmon/field"
-	"go.chromium.org/luci/common/tsmon/metric"
-	"go.chromium.org/luci/common/tsmon/monitor"
-	"go.chromium.org/luci/common/tsmon/registry"
-	"go.chromium.org/luci/common/tsmon/store"
-	"go.chromium.org/luci/common/tsmon/target"
-	"go.chromium.org/luci/common/tsmon/ts_mon_proto"
-	"go.chromium.org/luci/common/tsmon/types"
-)
-
-inherit cros-go
-
-DESCRIPTION="LUCI Go tsmon library"
-HOMEPAGE="https://chromium.googlesource.com/infra/luci/luci-go/"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-# Tests import "github.com/smartystreets/goconvey/convey", which we don't have.
-RESTRICT="binchecks test strip"
-
-DEPEND="
-	dev-go/luci-auth
-	dev-go/luci-chromeinfra
-	dev-go/luci-common
-	dev-go/protobuf
-"
-RDEPEND="${DEPEND}"
diff --git a/dev-go/mod/Manifest b/dev-go/mod/Manifest
new file mode 100644
index 0000000..b823da1
--- /dev/null
+++ b/dev-go/mod/Manifest
@@ -0,0 +1 @@
+DIST go.googlesource.com-mod-v0.3.0.tar.gz 93840 BLAKE2B 05686999e020c963de0c9d68bcdad74a3bb3054c7610deea5ecc8e9e3dd1485c5d473e3db4659db19f3376a79a347a87b7d071df4f06972a8252fb046538f418 SHA512 1362c923057067b335dabfbb866d291f1d0459b69c197b691290620ab8f36864849ea9e4c4d37099a85046de66efbf20cde58f68a2714a0be84aee972498e123
diff --git a/dev-go/mod/OWNERS b/dev-go/mod/OWNERS
new file mode 100644
index 0000000..31243ec
--- /dev/null
+++ b/dev-go/mod/OWNERS
@@ -0,0 +1 @@
+include chromiumos/third_party/toolchain-utils:/OWNERS.toolchain
diff --git a/dev-go/mod/mod-0.3.0-r1.ebuild b/dev-go/mod/mod-0.3.0-r1.ebuild
new file mode 120000
index 0000000..f9523e1
--- /dev/null
+++ b/dev-go/mod/mod-0.3.0-r1.ebuild
@@ -0,0 +1 @@
+mod-0.3.0.ebuild
\ No newline at end of file
diff --git a/dev-go/mod/mod-0.3.0.ebuild b/dev-go/mod/mod-0.3.0.ebuild
new file mode 100644
index 0000000..01211ba
--- /dev/null
+++ b/dev-go/mod/mod-0.3.0.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2.
+
+EAPI=7
+
+# pick mod at the current head of release-branch.go1.15
+# commit 859b3ef565e237f9f1a0fb6b55385c497545680d (HEAD -> release-branch.go1.15, tag: v0.3.0, origin/release-branch.go1.15)
+CROS_GO_SOURCE="go.googlesource.com/mod:golang.org/x/mod v${PV}"
+
+CROS_GO_PACKAGES=(
+	"golang.org/x/mod/module"
+	"golang.org/x/mod/semver"
+)
+
+CROS_GO_TEST=(
+	"${CROS_GO_PACKAGES[@]}"
+)
+
+inherit cros-go
+
+DESCRIPTION="packages for writing tools that work directly with Go module mechanics"
+HOMEPAGE="https://golang.org/x/mod"
+SRC_URI="$(cros-go_src_uri)"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+RESTRICT="binchecks strip"
+
+DEPEND="
+	dev-go/xerrors
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-go/protobuf/Manifest b/dev-go/protobuf/Manifest
index 5ce2bca..b4aeca8 100644
--- a/dev-go/protobuf/Manifest
+++ b/dev-go/protobuf/Manifest
@@ -1 +1,2 @@
 DIST github.com-golang-protobuf-v1.3.2.tar.gz 312285 BLAKE2B 381ae3c4bad3d3b3d489a3b66752e9e2405d17d9ed2c55aa1ec06ce6c18171b1c7625f6cc6e28490551a6410835f6e774a408de39f6e9ea9b3cddaf46e3b859a SHA512 ef9190f7773b18005760eb755a1dee25eff38c188687033362635e2431cf2c7372a59a3fec91acd6e4f63aa31d08391f7521a8dafef7895268b6a1a78735dd8a
+DIST github.com-protocolbuffers-protobuf-go-v1.25.0.tar.gz 1258804 BLAKE2B 5ad92c49977f596c02a1bb5c33151a1bccf2e363f5e4fdeeec305c1a483ea4895e14b967e590e548ab3674b7da35de3a79f62102f9695781e286718196c317dc SHA512 f5e4c2399174ae41d73f902b189f792a22856e88cfdf2c09a9f39871179f2e937d2de24a46fc5e95b6c3870fab17d832480b95be49d27d8664ec2e0a4706cf3b
diff --git a/dev-go/protobuf/protobuf-1.25.0-r1.ebuild b/dev-go/protobuf/protobuf-1.25.0-r1.ebuild
new file mode 120000
index 0000000..d74b7dc
--- /dev/null
+++ b/dev-go/protobuf/protobuf-1.25.0-r1.ebuild
@@ -0,0 +1 @@
+protobuf-1.25.0.ebuild
\ No newline at end of file
diff --git a/dev-go/protobuf/protobuf-1.25.0.ebuild b/dev-go/protobuf/protobuf-1.25.0.ebuild
new file mode 100644
index 0000000..120d6a9
--- /dev/null
+++ b/dev-go/protobuf/protobuf-1.25.0.ebuild
@@ -0,0 +1,60 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2.
+
+EAPI=5
+
+CROS_GO_SOURCE=(
+	"github.com/golang/protobuf v1.3.2"
+	"github.com/protocolbuffers/protobuf-go:google.golang.org/protobuf v${PV}"
+)
+
+CROS_GO_PACKAGES=(
+	"github.com/golang/protobuf/descriptor"
+	"github.com/golang/protobuf/jsonpb"
+	"github.com/golang/protobuf/proto"
+	"github.com/golang/protobuf/protoc-gen-go/descriptor"
+	"github.com/golang/protobuf/ptypes/..."
+	"google.golang.org/protobuf/encoding/..."
+	"google.golang.org/protobuf/internal/descfmt"
+	"google.golang.org/protobuf/internal/descopts"
+	"google.golang.org/protobuf/internal/detrand"
+	"google.golang.org/protobuf/internal/encoding/..."
+	"google.golang.org/protobuf/internal/errors"
+	"google.golang.org/protobuf/internal/fieldsort"
+	"google.golang.org/protobuf/internal/filedesc"
+	"google.golang.org/protobuf/internal/filetype"
+	"google.golang.org/protobuf/internal/flags"
+	"google.golang.org/protobuf/internal/genid"
+	"google.golang.org/protobuf/internal/impl"
+	"google.golang.org/protobuf/internal/mapsort"
+	"google.golang.org/protobuf/internal/msgfmt"
+	"google.golang.org/protobuf/internal/pragma"
+	"google.golang.org/protobuf/internal/set"
+	"google.golang.org/protobuf/internal/strs"
+	"google.golang.org/protobuf/internal/version"
+	"google.golang.org/protobuf/proto"
+	"google.golang.org/protobuf/reflect/..."
+	"google.golang.org/protobuf/runtime/..."
+	"google.golang.org/protobuf/testing/..."
+	"google.golang.org/protobuf/types/..."
+)
+
+CROS_GO_BINARIES=(
+	"github.com/golang/protobuf/protoc-gen-go"
+)
+
+inherit cros-go
+
+DESCRIPTION="Go support for Google's protocol buffers"
+HOMEPAGE="https://github.com/protocolbuffers/protobuf-go"
+SRC_URI="$(cros-go_src_uri)"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="test"
+RESTRICT="binchecks strip"
+
+DEPEND="dev-go/cmp
+	test? ( dev-go/sync )"
+RDEPEND=""
diff --git a/dev-go/protobuf/protobuf-1.3.2-r1.ebuild b/dev-go/protobuf/protobuf-1.3.2-r1.ebuild
deleted file mode 120000
index fdddb26..0000000
--- a/dev-go/protobuf/protobuf-1.3.2-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-protobuf-1.3.2.ebuild
\ No newline at end of file
diff --git a/dev-go/protobuf/protobuf-1.3.2.ebuild b/dev-go/protobuf/protobuf-1.3.2.ebuild
deleted file mode 100644
index d17b8e3..0000000
--- a/dev-go/protobuf/protobuf-1.3.2.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=5
-
-CROS_GO_SOURCE="github.com/golang/protobuf v${PV}"
-
-CROS_GO_PACKAGES=(
-	"github.com/golang/protobuf/descriptor"
-	"github.com/golang/protobuf/proto"
-	"github.com/golang/protobuf/jsonpb"
-	"github.com/golang/protobuf/protoc-gen-go/descriptor"
-	"github.com/golang/protobuf/ptypes/..."
-)
-
-CROS_GO_BINARIES=(
-	"github.com/golang/protobuf/protoc-gen-go"
-)
-
-inherit cros-go
-
-DESCRIPTION="Go support for Protocol Buffers"
-HOMEPAGE="https://github.com/golang/protobuf"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="test"
-RESTRICT="binchecks strip"
-
-DEPEND="test? ( dev-go/sync )"
-RDEPEND=""
diff --git a/dev-go/seccomp/seccomp-0.0.1-r6.ebuild b/dev-go/seccomp/seccomp-0.0.1-r6.ebuild
deleted file mode 100644
index a026278..0000000
--- a/dev-go/seccomp/seccomp-0.0.1-r6.ebuild
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="9f7e7fb007ebfb3070e878526876a039b6add840"
-CROS_WORKON_TREE="bcf6f36ae65231da8c65997c0427f6edf6cf8acb"
-CROS_WORKON_PROJECT="chromiumos/platform/go-seccomp"
-CROS_WORKON_LOCALNAME="../platform/go-seccomp"
-
-CROS_GO_PACKAGES=(
-	"chromiumos/seccomp"
-)
-
-inherit cros-workon cros-go
-
-DESCRIPTION="Go support for Chromium OS Seccomp-BPF policy files"
-HOMEPAGE="https://chromium.org/chromium-os/developer-guide/chromium-os-sandboxing"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE=""
-RESTRICT="binchecks strip"
-
-DEPEND=""
-RDEPEND=""
diff --git a/dev-go/seccomp/seccomp-0.0.1-r7.ebuild b/dev-go/seccomp/seccomp-0.0.1-r7.ebuild
new file mode 100644
index 0000000..1d741fd
--- /dev/null
+++ b/dev-go/seccomp/seccomp-0.0.1-r7.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="9d14f8b297985ec80f05d14afd6378e3350e2c41"
+CROS_WORKON_TREE="e5e0d0ca30d0ce803ca251a36026c0c2b6a47624"
+CROS_WORKON_PROJECT="chromiumos/platform/go-seccomp"
+CROS_WORKON_LOCALNAME="../platform/go-seccomp"
+
+CROS_GO_PACKAGES=(
+	"chromiumos/seccomp"
+)
+
+inherit cros-workon cros-go
+
+DESCRIPTION="Go support for Chromium OS Seccomp-BPF policy files"
+HOMEPAGE="https://chromium.org/chromium-os/developer-guide/chromium-os-sandboxing"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+RESTRICT="binchecks strip"
+
+DEPEND=""
+RDEPEND=""
diff --git a/dev-go/syzkaller/Manifest b/dev-go/syzkaller/Manifest
index a70e85f..b89b736 100644
--- a/dev-go/syzkaller/Manifest
+++ b/dev-go/syzkaller/Manifest
@@ -1 +1 @@
-DIST github.com-google-syzkaller-1bf9a662c66aa432ff2fe3bf2562578cef626c09.tar.gz 161178465 BLAKE2B 4661b7696bb4c52b8debc163a641370ec007a7ba1ae81118da373baf210691f882cf33ef7dcae510e04d9733f87ca4fafc6cc24ce71f35aa61b459a8ee998ebe SHA512 1a399ad399d83506ec3289e05b741f57da9ea0a45543f4f10f3c33333f2d88dca138dca75304252f231927a4abd536e36525f3cac836c6afdd0f33b107a726ea
+DIST github.com-google-syzkaller-8ee2dea687224e1e5759783abf5046d298bbe167.tar.gz 166539085 BLAKE2B ca3f5d4e5355f545be958624de5a23639656f7a6964c0cef5c4c0ae605daf1e15a72098c8015d6eac3f97de9f099d8bb5f8d7d278f5b59ff76f649e779f999d1 SHA512 bbc60a7a5b56f2c977f87a37f03b790d7638a0e7f78bd31bd11d4afe23459a33390f2b16ceada500d0119827044011b9a62daa67dc4019444db2320bdeb17289
diff --git a/dev-go/syzkaller/files/0001-cros-syzkaller-do-not-use-go.sum-and-go.mod.patch b/dev-go/syzkaller/files/0001-cros-syzkaller-do-not-use-go.sum-and-go.mod.patch
index e7d6658..be66802 100644
--- a/dev-go/syzkaller/files/0001-cros-syzkaller-do-not-use-go.sum-and-go.mod.patch
+++ b/dev-go/syzkaller/files/0001-cros-syzkaller-do-not-use-go.sum-and-go.mod.patch
@@ -1,18 +1,18 @@
-From aae1d30b27bbf04262597d49cb46e39e4fc6c866 Mon Sep 17 00:00:00 2001
+From e3b073265b60bdcca23b8a0b16ef3687565cbde6 Mon Sep 17 00:00:00 2001
 From: Zubin Mithra <zsm@chromium.org>
-Date: Sun, 15 Nov 2020 14:03:51 -0800
-Subject: [PATCH 1/2] cros-syzkaller: do not use go.sum and go.mod
+Date: Mon, 26 Apr 2021 09:41:45 -0700
+Subject: [PATCH] cros-syzkaller: do not use go.sum and go.mod
 
 ---
  Makefile |   2 +-
- go.mod   |  39 ---
- go.sum   | 846 -------------------------------------------------------
- 3 files changed, 1 insertion(+), 886 deletions(-)
+ go.mod   |  36 ---
+ go.sum   | 902 -------------------------------------------------------
+ 3 files changed, 1 insertion(+), 939 deletions(-)
  delete mode 100644 go.mod
  delete mode 100644 go.sum
 
 diff --git a/Makefile b/Makefile
-index 69049d6b..e3fbad55 100644
+index 7c8d673ee..e1d5dea2b 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -50,7 +50,7 @@ CGO_ENABLED ?= 0
@@ -26,10 +26,10 @@
  GITREV=$(shell git rev-parse HEAD)
 diff --git a/go.mod b/go.mod
 deleted file mode 100644
-index fedf3ec5..00000000
+index 2c2723c0d..000000000
 --- a/go.mod
 +++ /dev/null
-@@ -1,39 +0,0 @@
+@@ -1,36 +0,0 @@
 -module github.com/google/syzkaller
 -
 -go 1.14
@@ -38,12 +38,11 @@
 -	cloud.google.com/go/pubsub v1.7.0
 -	cloud.google.com/go/storage v1.10.0
 -	github.com/Djarvur/go-err113 v0.1.0 // indirect
--	github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813
--	github.com/golangci/golangci-lint v1.31.0
+-	github.com/dvyukov/go-fuzz v0.0.0-20201127111758-49e582c6c23d
+-	github.com/golangci/golangci-lint v1.37.1
 -	github.com/golangci/misspell v0.3.5 // indirect
--	github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039 // indirect
--	github.com/google/go-cmp v0.5.2
--	github.com/gostaticanalysis/analysisutil v0.2.1 // indirect
+-	github.com/google/go-cmp v0.5.4
+-	github.com/gorilla/handlers v1.5.1
 -	github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6
 -	github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect
 -	github.com/jstemmer/go-junit-report v0.9.2-0.20191008195320-984a47ca6b0a // indirect
@@ -58,23 +57,23 @@
 -	github.com/stretchr/objx v0.3.0 // indirect
 -	github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b // indirect
 -	github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94 // indirect
--	golang.org/x/net v0.0.0-20200904194848-62affa334b73
+-	golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb
 -	golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43
--	golang.org/x/sys v0.0.0-20200915084602-288bc346aa39
--	golang.org/x/tools v0.0.0-20200924224222-8d73f17870ce
+-	golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4
+-	golang.org/x/tools v0.1.0
 -	google.golang.org/api v0.32.0
 -	google.golang.org/appengine v1.6.6
 -	gopkg.in/ini.v1 v1.61.0 // indirect
 -	gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776
--	mvdan.cc/gofumpt v0.0.0-20200802201014-ab5a8192947d // indirect
--	mvdan.cc/unparam v0.0.0-20200501210554-b37ab49443f7 // indirect
 -)
 diff --git a/go.sum b/go.sum
 deleted file mode 100644
-index c89f2314..00000000
+index 3c9e99c69..000000000
 --- a/go.sum
 +++ /dev/null
-@@ -1,846 +0,0 @@
+@@ -1,902 +0,0 @@
+-4d63.com/gochecknoglobals v0.0.0-20201008074935-acfc0b28355a h1:wFEQiK85fRsEVF0CRrPAos5LoAryUsIX1kPW/WrIqFw=
+-4d63.com/gochecknoglobals v0.0.0-20201008074935-acfc0b28355a/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo=
 -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
 -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
@@ -128,57 +127,73 @@
 -github.com/StackExchange/wmi v0.0.0-20180116203802-5d049714c4a6/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
 -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
 -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
+-github.com/alexkohler/prealloc v0.0.0-20210204145425-77a5b5dd9799 h1:PIWLjlnnNq9F44hAJcuOf0BKZGPjDE5GxSavQcXaBBg=
+-github.com/alexkohler/prealloc v0.0.0-20210204145425-77a5b5dd9799/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE=
 -github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
 -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
--github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
 -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
 -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
+-github.com/ashanbrown/forbidigo v1.1.0 h1:SJOPJyqsrVL3CvR0veFZFmIM0fXS/Kvyikqvfphd0Z4=
+-github.com/ashanbrown/forbidigo v1.1.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI=
+-github.com/ashanbrown/makezero v0.0.0-20201205152432-7b7cdbb3025a h1:/U9tbJzDRof4fOR51vwzWdIBsIH6R2yU0KG1MBRM2Js=
+-github.com/ashanbrown/makezero v0.0.0-20201205152432-7b7cdbb3025a/go.mod h1:oG9Dnez7/ESBqc4EdrdNlryeo7d0KcW1ftXHm7nU/UU=
 -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
 -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
 -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
 -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
+-github.com/bkielbasa/cyclop v1.2.0 h1:7Jmnh0yL2DjKfw28p86YTd/B4lRGcNuu12sKE35sM7A=
+-github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI=
 -github.com/bombsimon/wsl/v3 v3.1.0 h1:E5SRssoBgtVFPcYWUOFJEcgaySgdtTNYzsSKDOY7ss8=
 -github.com/bombsimon/wsl/v3 v3.1.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc=
 -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
+-github.com/charithe/durationcheck v0.0.4 h1:lD3ud3KJ2DaoL80EZ768cSBv3DS8Xr7nNgN+kgW1tts=
+-github.com/charithe/durationcheck v0.0.4/go.mod h1:0oCYOIgY8Om3hZxPedxKn0mzy0rneKTWJhRm+r6Gl20=
 -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
 -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
 -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
 -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
 -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
--github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
 -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
--github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
 -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
 -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
 -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
 -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
 -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
--github.com/daixiang0/gci v0.2.4 h1:BUCKk5nlK2m+kRIsoj+wb/5hazHvHeZieBKWd9Afa8Q=
--github.com/daixiang0/gci v0.2.4/go.mod h1:+AV8KmHTGxxwp/pY84TLQfFKp2vuKXXJVzF3kD/hfR4=
+-github.com/daixiang0/gci v0.2.8 h1:1mrIGMBQsBu0P7j7m1M8Lb+ZeZxsZL+jyGX4YoMJJpg=
+-github.com/daixiang0/gci v0.2.8/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc=
 -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 -github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
--github.com/denis-tingajkin/go-header v0.3.1 h1:ymEpSiFjeItCy1FOP+x0M2KdCELdEAHUsNa8F+hHc6w=
--github.com/denis-tingajkin/go-header v0.3.1/go.mod h1:sq/2IxMhaZX+RRcgHfCRx/m0M5na0fBt4/CRe7Lrji0=
+-github.com/denis-tingajkin/go-header v0.4.2 h1:jEeSF4sdv8/3cT/WY8AgDHUoItNSoEZ7qg9dX7pc218=
+-github.com/denis-tingajkin/go-header v0.4.2/go.mod h1:eLRHAVXzE5atsKAnNRDB90WHCFFnBUn4RN0nRcs1LJA=
 -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
 -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
--github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813 h1:NgO45/5mBLRVfiXerEFzH6ikcZ7DNRPS639xFg3ENzU=
--github.com/dvyukov/go-fuzz v0.0.0-20200318091601-be3528f3a813/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw=
+-github.com/dvyukov/go-fuzz v0.0.0-20201127111758-49e582c6c23d h1:e1v4V9Heb+c4xQCCONROFvlzNs6Gq8aRZRwt+WzSEqY=
+-github.com/dvyukov/go-fuzz v0.0.0-20201127111758-49e582c6c23d/go.mod h1:11Gm+ccJnvAhCNLlf5+cS9KjtbaD5I5zaZpFMsTHWTw=
 -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
 -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
 -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+-github.com/esimonov/ifshort v1.0.1 h1:p7hlWD15c9XwvwxYg3W7f7UZHmwg7l9hC0hBiF95gd0=
+-github.com/esimonov/ifshort v1.0.1/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE=
 -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
--github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=
 -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
+-github.com/fatih/color v1.10.0 h1:s36xzo75JdqLaaWoiEHk767eHiwo0598uUxyfiPkDsg=
+-github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM=
+-github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4=
+-github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
+-github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ=
+-github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
 -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
 -github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
 -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+-github.com/fzipp/gocyclo v0.3.1 h1:A9UeX3HJSXTBzvHzhqoYVuE0eAhe+aM8XBCCwsPMZOc=
+-github.com/fzipp/gocyclo v0.3.1/go.mod h1:DJHO6AUmbdqj2ET4Z9iArSuwWgYDRryYt2wASxc7x3E=
 -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
--github.com/go-critic/go-critic v0.5.2 h1:3RJdgf6u4NZUumoP8nzbqiiNT8e1tC2Oc7jlgqre/IA=
--github.com/go-critic/go-critic v0.5.2/go.mod h1:cc0+HvdE3lFpqLecgqMaJcvWWH77sLdBp+wLGPM1Yyo=
+-github.com/go-critic/go-critic v0.5.4 h1:fPNMqImVjELN6Du7NVVuvKA4cgASNmc7e4zSYQCOnv8=
+-github.com/go-critic/go-critic v0.5.4/go.mod h1:cjB4YGw+n/+X8gREApej7150Uyy1Tg8If6F2XOAUXNE=
 -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
 -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
 -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
@@ -249,14 +264,10 @@
 -github.com/golangci/errcheck v0.0.0-20181223084120-ef45e06d44b6/go.mod h1:DbHgvLiFKX1Sh2T1w8Q/h4NAI8MHIpzCdnBUDTXU3I0=
 -github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613 h1:9kfjN3AdxcbsZBf8NjltjWihK2QfBBBZuv91cMFfDHw=
 -github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8=
--github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3 h1:pe9JHs3cHHDQgOFXJJdYkK6fLz2PWyYtP4hthoCMvs8=
--github.com/golangci/goconst v0.0.0-20180610141641-041c5f2b40f3/go.mod h1:JXrF4TWy4tXYn62/9x8Wm/K/dm06p8tCKwFRDPZG/1o=
--github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d h1:pXTK/gkVNs7Zyy7WKgLXmpQ5bHTrq5GDsp8R9Qs67g0=
--github.com/golangci/gocyclo v0.0.0-20180528144436-0a533e8fa43d/go.mod h1:ozx7R9SIwqmqf5pRP90DhR2Oay2UIjGuKheCBCNwAYU=
 -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a h1:iR3fYXUjHCR97qWS8ch1y9zPNsgXThGwjKPrYfqMPks=
 -github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU=
--github.com/golangci/golangci-lint v1.31.0 h1:+m9I3LEmxXLpymkXRPkDQGzOVBmBYm16UtDiXqZxWek=
--github.com/golangci/golangci-lint v1.31.0/go.mod h1:aMQuNCA+NDU5+4jLL5pEuFHoue0IznKE2+/GsFvvs8A=
+-github.com/golangci/golangci-lint v1.37.1 h1:Unt38FmBltdoILo6oQUMp6PuxwWbJ1YyNSStCrvA7+8=
+-github.com/golangci/golangci-lint v1.37.1/go.mod h1:zOcxSdfQDe6AE9andI1mH5mBmOQwmRg0U2kW2a6WhpA=
 -github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc h1:gLLhTLMk2/SutryVJ6D4VZCU3CUqr8YloG7FPIBWFpI=
 -github.com/golangci/ineffassign v0.0.0-20190609212857-42439a7714cc/go.mod h1:e5tpTHCfVze+7EpLEozzMB3eafxo2KT5veNg1k6byQU=
 -github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA=
@@ -266,11 +277,8 @@
 -github.com/golangci/misspell v0.0.0-20180809174111-950f5d19e770/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA=
 -github.com/golangci/misspell v0.3.5 h1:pLzmVdl3VxTOncgzHcvLOKirdvcx/TydsClUQXTehjo=
 -github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA=
--github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21 h1:leSNB7iYzLYSSx3J/s5sVf4Drkc68W2wm4Ixh/mr0us=
--github.com/golangci/prealloc v0.0.0-20180630174525-215b22d4de21/go.mod h1:tf5+bzsHdTM0bsB7+8mt0GUMvjCgwLpTapNZHU8AajI=
--github.com/golangci/revgrep v0.0.0-20180526074752-d9c87f5ffaf0/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4=
--github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039 h1:XQKc8IYQOeRwVs36tDrEmTgDgP88d5iEURwpmtiAlOM=
--github.com/golangci/revgrep v0.0.0-20180812185044-276a5c0a1039/go.mod h1:qOQCunEYvmd/TLamH+7LlVccLvUH5kZNhbCgTHoBbp4=
+-github.com/golangci/revgrep v0.0.0-20210208091834-cd28932614b5 h1:c9Mqqrm/Clj5biNaG7rABrmwUq88nHh0uABo2b/WYmc=
+-github.com/golangci/revgrep v0.0.0-20210208091834-cd28932614b5/go.mod h1:LK+zW4MpyytAWQRz0M4xnzEk50lSvqDQKfx304apFkY=
 -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys=
 -github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ=
 -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
@@ -282,8 +290,9 @@
 -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 -github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
--github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
 -github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+-github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
+-github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no=
 -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
 -github.com/google/martian/v3 v3.0.0 h1:pMen7vLs8nvgEYhywH3KDWJIJTeEr2ULsVWHWYHQyBs=
@@ -301,15 +310,19 @@
 -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
 -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM=
 -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
--github.com/gookit/color v1.2.5/go.mod h1:AhIE+pS6D4Ql0SQWbBeXPHw7gY0/sjHoA4s/n1KB7xg=
+-github.com/gookit/color v1.3.6/go.mod h1:R3ogXq2B9rTbXoSHJ1HyUVAZ3poOJHpd9nQmyGZsfvQ=
 -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8=
 -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
+-github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=
+-github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q=
 -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
 -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
 -github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=
 -github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE=
--github.com/gostaticanalysis/analysisutil v0.2.1 h1:OfNeM+FV1AOdvwfQY8Iuq2XTQrsc2isCVXw+l3SftP0=
--github.com/gostaticanalysis/analysisutil v0.2.1/go.mod h1:18U/DLpRgIUd459wGxVHE0fRgmo1UgHDcbw7F5idXu0=
+-github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw=
+-github.com/gostaticanalysis/analysisutil v0.4.1 h1:/7clKqrVfiVwiBQLM0Uke4KvXnO6JcCTS7HwF2D6wG8=
+-github.com/gostaticanalysis/analysisutil v0.4.1/go.mod h1:18U/DLpRgIUd459wGxVHE0fRgmo1UgHDcbw7F5idXu0=
+-github.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI=
 -github.com/gostaticanalysis/comment v1.4.1 h1:xHopR5L2lRz6OsjH4R2HG5wRhW9ySl3FsHIvi5pcXwc=
 -github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado=
 -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
@@ -341,13 +354,14 @@
 -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
 -github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
 -github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
--github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a h1:GmsqmapfzSJkm28dhRoHz2tLRbJmqhU86IPgBtN3mmk=
--github.com/jingyugao/rowserrcheck v0.0.0-20191204022205-72ab7603b68a/go.mod h1:xRskid8CManxVta/ALEhJha/pweKBaVG6fWgc0yH25s=
+-github.com/jgautheron/goconst v0.0.0-20201117150253-ccae5bf973f3 h1:7nkB9fLPMwtn/R6qfPcHileL/x9ydlhw8XyDrLI1ZXg=
+-github.com/jgautheron/goconst v0.0.0-20201117150253-ccae5bf973f3/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4=
+-github.com/jingyugao/rowserrcheck v0.0.0-20210130005344-c6a0c12dd98d h1:BYDZtm80MLJpTWalkwHxNnIbO/2akQHERcfLq4TbIWE=
+-github.com/jingyugao/rowserrcheck v0.0.0-20210130005344-c6a0c12dd98d/go.mod h1:/EZlaYCnEX24i7qdVhT9du5JrtFWYRQr67bVgR7JJC8=
 -github.com/jirfag/go-printf-func-name v0.0.0-20191110105641-45db9963cdd3/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0=
 -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48=
 -github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0=
 -github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
--github.com/jmoiron/sqlx v1.2.1-0.20190826204134-d7d95172beb5/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
 -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
 -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
 -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
@@ -361,9 +375,8 @@
 -github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
 -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
 -github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
--github.com/klauspost/compress v1.10.10/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
+-github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
 -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
--github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8=
 -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
 -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
 -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
@@ -372,11 +385,15 @@
 -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
--github.com/kyoh86/exportloopref v0.1.7 h1:u+iHuTbkbTS2D/JP7fCuZDo/t3rBVGo3Hf58Rc+lQVY=
--github.com/kyoh86/exportloopref v0.1.7/go.mod h1:h1rDl2Kdj97+Kwh4gdz3ujE7XHmH51Q0lUiZ1z4NLj8=
+-github.com/kulti/thelper v0.3.1 h1:zc7YOjjpl6jAJ2C0wduu+jLl+rOvAEt1w8yV9QMxjWQ=
+-github.com/kulti/thelper v0.3.1/go.mod h1:vMu2Cizjy/grP+jmsvOFDx1kYP6+PD1lqg4Yu5exl2U=
+-github.com/kunwardeep/paralleltest v1.0.2 h1:/jJRv0TiqPoEy/Y8dQxCFJhD56uS/pnvtatgTZBHokU=
+-github.com/kunwardeep/paralleltest v1.0.2/go.mod h1:ZPqNm1fVHPllh5LPVujzbVz1JN2GhLxSfY+oqUsvG30=
+-github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M=
+-github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg=
 -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+-github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
 -github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
--github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
 -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
 -github.com/magiconair/properties v1.8.3 h1:kJSsc6EXkBLgr3SphHk9w5mtjn0bjlR4JYEXKrJ45rQ=
 -github.com/magiconair/properties v1.8.3/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
@@ -387,16 +404,24 @@
 -github.com/matoous/godox v0.0.0-20200801072554-4fb83dc2941e/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s=
 -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
 -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
--github.com/mattn/go-colorable v0.1.7 h1:bQGKb3vps/j0E9GfJQ03JyhRuxsvdAanXlT9BTw3mdw=
--github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
+-github.com/mattn/go-colorable v0.1.8 h1:c1ghPdyEDarC70ftn0y+A/Ee++9zz8ljHG1b13eJ0s8=
+-github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
 -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
 -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
 -github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
 -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
+-github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54=
+-github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
 -github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
 -github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw=
 -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
+-github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo=
+-github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc=
+-github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81 h1:QASJXOGm2RZ5Ardbc86qNFvby9AqkLDibfChMtAg5QM=
+-github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg=
+-github.com/mgechev/revive v1.0.3 h1:z3FL6IFFN3JKzHYHD8O1ExH9g/4lAGJ5x1+9rPZgsFg=
+-github.com/mgechev/revive v1.0.3/go.mod h1:POGGZagSo/0frdr7VeAifzS5Uka0d0GPiM35MsTO8nE=
 -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
 -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
 -github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
@@ -412,26 +437,33 @@
 -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
 -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
--github.com/mozilla/tls-observatory v0.0.0-20200317151703-4fa42e1c2dee/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk=
+-github.com/moricho/tparallel v0.2.1 h1:95FytivzT6rYzdJLdtfn6m1bfFJylOJK41+lgv/EHf4=
+-github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k=
+-github.com/mozilla/tls-observatory v0.0.0-20201209171846-0547674fceff/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk=
 -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
 -github.com/nakabonne/nestif v0.3.0 h1:+yOViDGhg8ygGrmII72nV9B/zGxY188TYpfolntsaPw=
 -github.com/nakabonne/nestif v0.3.0/go.mod h1:dI314BppzXjJ4HsCnbo7XzrJHPszZsjnk5wEBSYHI2c=
--github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d h1:AREM5mwr4u1ORQBMvzfzBgpsctsbQikCVpvC+tX285E=
--github.com/nbutton23/zxcvbn-go v0.0.0-20180912185939-ae427f1e4c1d/go.mod h1:o96djdrsSGy3AWPyBgZMAGfxZNfgntdJG+11KU4QvbU=
+-github.com/nbutton23/zxcvbn-go v0.0.0-20201221231540-e56b841a3c88 h1:o+O3Cd1HO9CTgxE3/C8p5I5Y4C0yYWbF8d4IkfOLtcQ=
+-github.com/nbutton23/zxcvbn-go v0.0.0-20201221231540-e56b841a3c88/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8=
 -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
 -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
--github.com/nishanths/exhaustive v0.0.0-20200811152831-6cf413ae40e0 h1:eMV1t2NQRc3r1k3guWiv/zEeqZZP6kPvpUfy6byfL1g=
--github.com/nishanths/exhaustive v0.0.0-20200811152831-6cf413ae40e0/go.mod h1:wBEpHwM2OdmeNpdCvRPUlkEbBuaFmcK4Wv8Q7FuGW3c=
+-github.com/nishanths/exhaustive v0.1.0 h1:kVlMw8h2LHPMGUVqUj6230oQjjTMFjwcZrnkhXzFfl8=
+-github.com/nishanths/exhaustive v0.1.0/go.mod h1:S1j9110vxV1ECdCudXRkeMnFQ/DQk9ajLT0Uf2MYZQQ=
+-github.com/nishanths/predeclared v0.2.1 h1:1TXtjmy4f3YCFjTxRd8zcFHOmoUir+gp0ESzjFzG2sw=
+-github.com/nishanths/predeclared v0.2.1/go.mod h1:HvkGJcA3naj4lOwnFXFDkFxVtSqQMB9sbB1usJ+xjQE=
 -github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
 -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
 -github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
+-github.com/olekukonko/tablewriter v0.0.4 h1:vHD/YYe1Wolo78koG299f7V/VAS08c6IpCLn+Ejf/w8=
+-github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA=
 -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
--github.com/onsi/ginkgo v1.13.0 h1:M76yO2HkZASFjXL0HSoZJ1AYEmQxNJmY41Jx1zNUq1Y=
--github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0=
+-github.com/onsi/ginkgo v1.14.2 h1:8mVmC9kjFFmA8H4pKMUhcblgifdkOIXPvbhN1T36q1M=
+-github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
 -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
--github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE=
 -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
+-github.com/onsi/gomega v1.10.4 h1:NiTx7EEvBzu9sFOD1zORteLSt3o8gnlvZZwSE9TnY9U=
+-github.com/onsi/gomega v1.10.4/go.mod h1:g/HbgYopi++010VEqkFgJHKC09uJiW9UkXvMUuKHUCQ=
 -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
 -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
 -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
@@ -446,6 +478,8 @@
 -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
 -github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 -github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+-github.com/polyfloyd/go-errorlint v0.0.0-20201127212506-19bd8db6546f h1:xAw10KgJqG5NJDfmRqJ05Z0IFblKumjtMeyiOLxj3+4=
+-github.com/polyfloyd/go-errorlint v0.0.0-20201127212506-19bd8db6546f/go.mod h1:wi9BfjxjF/bwiZ701TzmfKu6UKC357IOAtNr0Td0Lvw=
 -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
 -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
 -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
@@ -458,26 +492,27 @@
 -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
 -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
 -github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1:5STLWrekHfjyYwxBRVRXNOSewLJ3PWfDJd1VyTS21fI=
--github.com/quasilyte/go-ruleguard v0.2.0 h1:UOVMyH2EKkxIfzrULvA9n/tO+HtEhqD9mrLSWMr5FwU=
--github.com/quasilyte/go-ruleguard v0.2.0/go.mod h1:2RT/tf0Ce0UDj5y243iWKosQogJd8+1G3Rs2fxmlYnw=
+-github.com/quasilyte/go-ruleguard v0.3.0 h1:A3OfpsK2ynOTbz/KMi62qWzignjGCOZVChATSf4P+A0=
+-github.com/quasilyte/go-ruleguard v0.3.0/go.mod h1:p2miAhLp6fERzFNbcuQ4bevXs8rgK//uCHsUDkumITg=
+-github.com/quasilyte/go-ruleguard/dsl v0.0.0-20210106184943-e47d54850b18/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
+-github.com/quasilyte/go-ruleguard/dsl v0.0.0-20210115110123-c73ee1cbff1f/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU=
+-github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc=
 -github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
 -github.com/quasilyte/regex/syntax v0.0.0-20200805063351-8f842688393c h1:+gtJ/Pwj2dgUGlZgTrNFqajGYKZQc7Piqus/S6DK9CE=
 -github.com/quasilyte/regex/syntax v0.0.0-20200805063351-8f842688393c/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0=
 -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
 -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
 -github.com/rogpeppe/go-internal v1.5.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
--github.com/rogpeppe/go-internal v1.6.0/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
--github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
+-github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
 -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
--github.com/ryancurrah/gomodguard v1.1.0 h1:DWbye9KyMgytn8uYpuHkwf0RHqAYO6Ay/D0TbCpPtVU=
--github.com/ryancurrah/gomodguard v1.1.0/go.mod h1:4O8tr7hBODaGE6VIhfJDHcwzh5GUccKSJBU0UMXJFVM=
+-github.com/ryancurrah/gomodguard v1.2.0 h1:YWfhGOrXwLGiqcC/u5EqG6YeS8nh+1fw0HEc85CVZro=
+-github.com/ryancurrah/gomodguard v1.2.0/go.mod h1:rNqbC4TOIdUDcVMSIpNNAzTbzXAZa6W5lnUepvuMMgQ=
 -github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8OUZI9xFw=
 -github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA=
 -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
--github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw=
 -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
--github.com/securego/gosec/v2 v2.4.0 h1:ivAoWcY5DMs9n04Abc1VkqZBO0FL0h4ShTcVsC53lCE=
--github.com/securego/gosec/v2 v2.4.0/go.mod h1:0/Q4cjmlFDfDUj1+Fib61sc+U5IQb2w+Iv9/C3wPVko=
+-github.com/securego/gosec/v2 v2.6.1 h1:+KCw+uz16FYfFyJ/A5aU6uP7mnrL+j1TbDnk1yN+8R0=
+-github.com/securego/gosec/v2 v2.6.1/go.mod h1:I76p3NTHBXsGhybUW+cEQ692q2Vp+A0Z6ZLzDIZy+Ao=
 -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU=
 -github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs=
 -github.com/shirou/gopsutil v0.0.0-20190901111213-e4ec7b275ada/go.mod h1:WWnYX4lzhCH5h/3YBfyVA3VbLYjlMZZAQcW9ojMexNc=
@@ -486,8 +521,9 @@
 -github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ=
 -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
 -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
--github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I=
 -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
+-github.com/sirupsen/logrus v1.7.0 h1:ShrD1U9pZB12TX0cVy0DtePoCH97K8EtX+mg7ZARUtM=
+-github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
 -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM=
 -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
 -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
@@ -495,8 +531,8 @@
 -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
 -github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY=
 -github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI=
--github.com/sourcegraph/go-diff v0.6.0 h1:WbN9e/jD8ujU+o0vd9IFN5AEwtfB0rn/zM/AANaClqQ=
--github.com/sourcegraph/go-diff v0.6.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
+-github.com/sourcegraph/go-diff v0.6.1 h1:hmA1LzxW0n1c3Q4YbrFgg4P99GSnebYa3x8gr0HZqLQ=
+-github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
 -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
 -github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
 -github.com/spf13/afero v1.4.0 h1:jsLTaI1zwYO3vjrzHalkVcIHXTNmdQFepW4OI8H3+x8=
@@ -504,15 +540,15 @@
 -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
 -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng=
 -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
--github.com/spf13/cobra v1.0.0 h1:6m/oheQuQ13N9ks4hubMG6BnvwOeaJrqSPLahSnczz8=
--github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE=
+-github.com/spf13/cobra v1.1.3 h1:xghbfqPkxzxP3C/f3n5DdpAbdKLj4ZE4BWQI362l53M=
+-github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo=
 -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
 -github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk=
 -github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
 -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
 -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
 -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
--github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE=
+-github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
 -github.com/spf13/viper v1.7.1 h1:pM5oEahlgWv/WnHXpgbKz7iLIxRf65tye2Ci+XFK5sk=
 -github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
 -github.com/ssgreg/nlreturn/v2 v2.1.0 h1:6/s4Rc49L6Uo6RLjhWZGBpWWjfzk2yrf1nIW8m4wgVA=
@@ -521,26 +557,29 @@
 -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 -github.com/stretchr/objx v0.3.0 h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As=
 -github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
+-github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
 -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
 -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
--github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0=
 -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
+-github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
 -github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s=
 -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
 -github.com/tdakkota/asciicheck v0.0.0-20200416190851-d7f85be797a2/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM=
 -github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b h1:HxLVTlqcHhFAz3nWUcuvpH7WuOMv8LQoCWmruLfFH2U=
 -github.com/tdakkota/asciicheck v0.0.0-20200416200610-e657995f937b/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM=
--github.com/tetafro/godot v0.4.8 h1:h61+hQraWhdI6WYqMwAwZYCE5yxL6a9/Orw4REbabSU=
--github.com/tetafro/godot v0.4.8/go.mod h1:/7NLHhv08H1+8DNj0MElpAACw1ajsCuf3TKNQxA5S+0=
+-github.com/tetafro/godot v1.4.4 h1:VAtLEoAMmopIzHVWVBrztjVWDeYm1OD/DKqhqXR4828=
+-github.com/tetafro/godot v1.4.4/go.mod h1:FVDd4JuKliW3UgjswZfJfHq4vAx0bD/Jd5brJjGeaz4=
 -github.com/timakin/bodyclose v0.0.0-20190930140734-f7f2e9bca95e/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk=
 -github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94 h1:ig99OeTyDwQWhPe2iw9lwfQVF1KB3Q4fpP3X7/2VBG8=
 -github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk=
 -github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
--github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa h1:RC4maTWLKKwb7p1cnoygsbKIgNlJqSYBeAFON3Ar8As=
--github.com/tommy-muehle/go-mnd v1.3.1-0.20200224220436-e6f9a994e8fa/go.mod h1:dSUh0FtTP8VhvkL1S+gUR1OKd9ZnSaozuI6r3m6wOig=
--github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
+-github.com/tomarrell/wrapcheck v0.0.0-20200807122107-df9e8bcb914d h1:3EZyvNUMsGD1QA8cu0STNn1L7I77rvhf2IhOcHYQhSw=
+-github.com/tomarrell/wrapcheck v0.0.0-20200807122107-df9e8bcb914d/go.mod h1:yiFB6fFoV7saXirUGfuK+cPtUh4NX/Hf5y2WC2lehu0=
+-github.com/tommy-muehle/go-mnd/v2 v2.3.1 h1:a1S4+4HSXDJMgeODJH/t0EEKxcVla6Tasw+Zx9JJMog=
+-github.com/tommy-muehle/go-mnd/v2 v2.3.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw=
 -github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iLA=
 -github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA=
 -github.com/ultraware/whitespace v0.0.4 h1:If7Va4cM03mpgrNH9k49/VOicWpGoG70XPBFFODYDsg=
@@ -548,11 +587,10 @@
 -github.com/uudashr/gocognit v1.0.1 h1:MoG2fZ0b/Eo7NXoIwCVFLG5JED3qgQz5/NEE+rOsjPs=
 -github.com/uudashr/gocognit v1.0.1/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM=
 -github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
--github.com/valyala/fasthttp v1.15.1/go.mod h1:YOKImeEosDdBPnxc0gy7INqi3m1zK6A+xl6TwOBhHCA=
--github.com/valyala/quicktemplate v1.6.2/go.mod h1:mtEJpQtUiBV0SHhMX6RtiJtqxncgrfmjcUy5T68X8TM=
+-github.com/valyala/fasthttp v1.16.0/go.mod h1:YOKImeEosDdBPnxc0gy7INqi3m1zK6A+xl6TwOBhHCA=
+-github.com/valyala/quicktemplate v1.6.3/go.mod h1:fwPzK2fHuYEODzJ9pkw0ipCPNHZ2tD5KW4lOuSdPKzY=
 -github.com/valyala/tcplisten v0.0.0-20161114210144-ceec8f93295a/go.mod h1:v3UYOV9WzVtRmSR+PDvWpU/qWl4Wa5LApYYX4ZtKbio=
 -github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
--github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
 -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -605,8 +643,9 @@
 -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
 -golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
 -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
--golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
 -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+-golang.org/x/mod v0.4.0 h1:8pl+sMODzuvGJkmj2W4kZihvVb5mKm8pB/X44PIQHv8=
+-golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -620,7 +659,6 @@
 -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
--golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks=
 -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -641,8 +679,10 @@
 -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
 -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
--golang.org/x/net v0.0.0-20200904194848-62affa334b73 h1:MXfv8rhZWmFeqX3GNZRsd6vOLoaCHjYEX3qkRo3YBUA=
 -golang.org/x/net v0.0.0-20200904194848-62affa334b73/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
+-golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+-golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/LtIxf46G4fxeEz5KJr9U=
+-golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -657,8 +697,9 @@
 -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
--golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208 h1:qwRHBd0NqMbJxfbotnDhm2ByMI1Shq4Y6oRJo21SGJA=
 -golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck=
+-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -701,14 +742,16 @@
 -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 -golang.org/x/sys v0.0.0-20200828194041-157a740278f4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
--golang.org/x/sys v0.0.0-20200915084602-288bc346aa39 h1:356XA7ITklAU2//sYkjFeco+dH1bCRD8XCJ9FIEsvo4=
--golang.org/x/sys v0.0.0-20200915084602-288bc346aa39/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4 h1:myAQVi0cGEoqQVR5POX+8RR2mrocKqNN1hmeMqhX27k=
+-golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
--golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
 -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+-golang.org/x/text v0.3.4 h1:0YWbFKbhXG/wIiuHDSKpS0Iy7FSA+u45VtBMfQcFTTc=
+-golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
 -golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -718,8 +761,8 @@
 -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 -golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
--golang.org/x/tools v0.0.0-20190221204921-83362c3779f5/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
 -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+-golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4=
 -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 -golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
 -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
@@ -732,11 +775,12 @@
 -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
 -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
--golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI=
 -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 -golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+-golang.org/x/tools v0.0.0-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+-golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 -golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 -golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -757,32 +801,43 @@
 -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
 -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
 -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
--golang.org/x/tools v0.0.0-20200321224714-0d839f3cf2ed/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
 -golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+-golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
 -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8=
+-golang.org/x/tools v0.0.0-20200403190813-44a64ad78b9b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+-golang.org/x/tools v0.0.0-20200410194907-79a7a3126eef/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 -golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 -golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 -golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
--golang.org/x/tools v0.0.0-20200519015757-0d0afa43d58a/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+-golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+-golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 -golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
--golang.org/x/tools v0.0.0-20200626171337-aa94e735be7f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
--golang.org/x/tools v0.0.0-20200701041122-1837592efa10/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
 -golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
--golang.org/x/tools v0.0.0-20200731060945-b5fad4ed8dd6/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 -golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 -golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 -golang.org/x/tools v0.0.0-20200828161849-5deb26317202/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
+-golang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
 -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE=
 -golang.org/x/tools v0.0.0-20200915173823-2db8f0ff891c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
--golang.org/x/tools v0.0.0-20200924224222-8d73f17870ce h1:XRr763sMfaUSNR4EsxbddvVEqYFa9picrx6ks9pJkKw=
 -golang.org/x/tools v0.0.0-20200924224222-8d73f17870ce/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
+-golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
+-golang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
+-golang.org/x/tools v0.0.0-20201011145850-ed2f50202694/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU=
+-golang.org/x/tools v0.0.0-20201028025901-8cd080b735b3/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+-golang.org/x/tools v0.0.0-20201114224030-61ea331ec02b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+-golang.org/x/tools v0.0.0-20201118003311-bd56c0adb394/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+-golang.org/x/tools v0.0.0-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+-golang.org/x/tools v0.0.0-20210101214203-2dba1e4ea05c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+-golang.org/x/tools v0.0.0-20210102185154-773b96fafca2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+-golang.org/x/tools v0.1.0 h1:po9/4sTYwZU9lPhi1tOrb4hCv3qrhiQ77LZfGa2OjwY=
+-golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
 -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 -golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -850,7 +905,6 @@
 -google.golang.org/genproto v0.0.0-20200925023002-c2d885f95484/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no=
 -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
 -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
--google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
 -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
 -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
 -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
@@ -894,8 +948,9 @@
 -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
 -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
--gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU=
 -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+-gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+-gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
 -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
 -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
@@ -906,21 +961,19 @@
 -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
 -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
 -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
--honnef.co/go/tools v0.0.1-2020.1.5 h1:nI5egYTGJakVyOryqLs1cQO5dO0ksin5XXs2pspk75k=
--honnef.co/go/tools v0.0.1-2020.1.5/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
--mvdan.cc/gofumpt v0.0.0-20200709182408-4fd085cb6d5f/go.mod h1:9VQ397fNXEnF84t90W4r4TRCQK+pg9f8ugVfyj+S26w=
--mvdan.cc/gofumpt v0.0.0-20200802201014-ab5a8192947d h1:t8TAw9WgTLghti7RYkpPmqk4JtQ3+wcP5GgZqgWeWLQ=
--mvdan.cc/gofumpt v0.0.0-20200802201014-ab5a8192947d/go.mod h1:bzrjFmaD6+xqohD3KYP0H2FEuxknnBmyyOxdhLdaIws=
+-honnef.co/go/tools v0.0.1-2020.1.6 h1:W18jzjh8mfPez+AwGLxmOImucz/IFjpNlrKVnaj2YVc=
+-honnef.co/go/tools v0.0.1-2020.1.6/go.mod h1:pyyisuGw24ruLjrr1ddx39WE0y9OooInRzEYLhQB2YY=
+-mvdan.cc/gofumpt v0.1.0 h1:hsVv+Y9UsZ/mFZTxJZuHVI6shSQCtzZ11h1JEFPAZLw=
+-mvdan.cc/gofumpt v0.1.0/go.mod h1:yXG1r1WqZVKWbVRtBWKWX9+CxGYfA51nSomhM0woR48=
 -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I=
 -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc=
 -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo=
 -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4=
--mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw=
 -mvdan.cc/unparam v0.0.0-20200501210554-b37ab49443f7 h1:kAREL6MPwpsk1/PQPFD3Eg7WAQR5mPTWZJaBiG5LDbY=
 -mvdan.cc/unparam v0.0.0-20200501210554-b37ab49443f7/go.mod h1:HGC5lll35J70Y5v7vCGb9oLhHoScFwkHDJm/05RdSTc=
 -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
 -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
 -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
 -- 
-2.29.2.299.gdc1121823c-goog
+2.31.1.498.g6c1eba8ee3d-goog
 
diff --git a/dev-go/syzkaller/files/0003-cros-syzkaller-use-arm-toolchain-available-within-ch.patch b/dev-go/syzkaller/files/0003-cros-syzkaller-use-arm-toolchain-available-within-ch.patch
new file mode 100644
index 0000000..7f9d12e
--- /dev/null
+++ b/dev-go/syzkaller/files/0003-cros-syzkaller-use-arm-toolchain-available-within-ch.patch
@@ -0,0 +1,49 @@
+From 2a51b64358e5e9a0f3cce8009aa36303720ec4ec Mon Sep 17 00:00:00 2001
+From: Zubin Mithra <zsm@chromium.org>
+Date: Wed, 27 Jan 2021 10:19:31 -0800
+Subject: [PATCH] cros-syzkaller: use arm toolchain available within chroot
+
+---
+ sys/targets/targets.go | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git a/sys/targets/targets.go b/sys/targets/targets.go
+index ff218aa6c..6daf3d708 100644
+--- a/sys/targets/targets.go
++++ b/sys/targets/targets.go
+@@ -210,7 +210,7 @@ var List = map[string]map[string]*Target{
+ 			PtrSize:          8,
+ 			PageSize:         4 << 10,
+ 			LittleEndian:     true,
+-			Triple:           "aarch64-linux-gnu",
++			Triple:           "aarch64-cros-linux-gnu",
+ 			KernelArch:       "arm64",
+ 			KernelHeaderArch: "arm64",
+ 		},
+@@ -219,8 +219,8 @@ var List = map[string]map[string]*Target{
+ 			PtrSize:          4,
+ 			PageSize:         4 << 10,
+ 			LittleEndian:     true,
+-			CFlags:           []string{"-D__LINUX_ARM_ARCH__=6", "-march=armv6"},
+-			Triple:           "arm-linux-gnueabi",
++			CFlags:           []string{"-D__LINUX_ARM_ARCH__=6", "-march=armv8-a+crc"},
++			Triple:           "armv7a-cros-linux-gnueabihf",
+ 			KernelArch:       "arm",
+ 			KernelHeaderArch: "arm",
+ 		},
+@@ -643,6 +643,12 @@ func (target *Target) setCompiler(clang bool) {
+ 			target.CCompiler = target.Triple + "-" + target.CCompiler
+ 		}
+ 	}
++	if target.OS == "linux" && target.Arch == "arm" {
++		target.CCompiler = "armv7a-cros-linux-gnueabihf-clang++"
++	}
++	if target.OS == "linux" && target.Arch == "aarch64" {
++		target.CCompiler = "aarch64-cros-linux-gnu-clang++"
++	}
+ }
+ 
+ func (target *Target) replaceSourceDir(param *string, sourceDir string) {
+-- 
+2.20.0
+
diff --git a/dev-go/syzkaller/syzkaller-0.0.10.ebuild b/dev-go/syzkaller/syzkaller-0.0.10.ebuild
new file mode 100644
index 0000000..78209fa
--- /dev/null
+++ b/dev-go/syzkaller/syzkaller-0.0.10.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2020 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.
+
+EAPI=7
+
+CROS_GO_SOURCE="github.com/google/syzkaller 8ee2dea687224e1e5759783abf5046d298bbe167"
+
+CROS_GO_PACKAGES=(
+	"github.com/google/syzkaller"
+)
+
+inherit cros-go
+
+DESCRIPTION="Syzkaller kernel fuzzer"
+HOMEPAGE="https://github.com/google/syzkaller"
+SRC_URI="$(cros-go_src_uri)"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+SYZKALLER_PATH="src/github.com/google/syzkaller"
+
+src_prepare() {
+	cd "${SYZKALLER_PATH}" || die "unable to cd to extracted syzkaller directory"
+	eapply "${FILESDIR}"/0001-cros-syzkaller-do-not-use-go.sum-and-go.mod.patch
+	eapply "${FILESDIR}"/0002-cros-syzkaller-turn-off-vhci-injection.patch
+	eapply "${FILESDIR}"/0003-cros-syzkaller-use-arm-toolchain-available-within-ch.patch
+	eapply_user
+}
+
+src_compile() {
+	cd "${SYZKALLER_PATH}" || die "unable to cd to extracted syzkaller directory"
+	CFLAGS="" GOPATH="${GOPATH}:${S}" make TARGETOS=linux TARGETARCH="${ARCH}" || die "syzkaller build failed"
+}
+
+src_install() {
+	local bin_path="${SYZKALLER_PATH}/bin"
+	dobin "${bin_path}"/syz-manager || die "failed to install syz-manager"
+	dobin "${bin_path}"/linux_"${ARCH}"/syz-fuzzer || die "failed to install syz-fuzzer"
+	dobin "${bin_path}"/linux_"${ARCH}"/syz-executor || die "failed to install syz-executor"
+	dobin "${bin_path}"/linux_"${ARCH}"/syz-execprog || die "failed to install syz-execprog"
+}
+
+# Overriding postinst for package github.com/google/syzkaller
+# as no Go files are present in the repository root directory
+# and getting list of packages inside cros-go_pkg_postinst() fails.
+pkg_postinst() {
+	:;
+}
diff --git a/dev-go/syzkaller/syzkaller-0.0.5.ebuild b/dev-go/syzkaller/syzkaller-0.0.5.ebuild
deleted file mode 100644
index 8bf6afb..0000000
--- a/dev-go/syzkaller/syzkaller-0.0.5.ebuild
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=7
-
-CROS_GO_SOURCE="github.com/google/syzkaller 1bf9a662c66aa432ff2fe3bf2562578cef626c09"
-
-CROS_GO_PACKAGES=(
-	"github.com/google/syzkaller"
-)
-
-inherit cros-go
-
-DESCRIPTION="Syzkaller kernel fuzzer"
-HOMEPAGE="https://github.com/google/syzkaller"
-SRC_URI="$(cros-go_src_uri)"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-SYZKALLER_PATH="src/github.com/google/syzkaller"
-
-src_prepare() {
-	cd "${SYZKALLER_PATH}" || die "unable to cd to extracted syzkaller directory"
-	eapply "${FILESDIR}"/0001-cros-syzkaller-do-not-use-go.sum-and-go.mod.patch
-	eapply "${FILESDIR}"/0002-cros-syzkaller-turn-off-vhci-injection.patch
-	eapply_user
-}
-
-src_compile() {
-	cd "${SYZKALLER_PATH}" || die "unable to cd to extracted syzkaller directory"
-	CFLAGS="" GOPATH="${GOPATH}:${S}" make TARGETOS=linux TARGETARCH=amd64 || die "syzkaller build failed"
-}
-
-src_install() {
-	local bin_path="${SYZKALLER_PATH}/bin"
-	dobin "${bin_path}"/syz-manager || die "failed to install syz-manager"
-	dobin "${bin_path}"/syz-db || die "failed to install syz-db"
-	dobin "${bin_path}"/linux_amd64/syz-fuzzer || die "failed to install syz-fuzzer"
-	dobin "${bin_path}"/linux_amd64/syz-executor || die "failed to install syz-executor"
-	dobin "${bin_path}"/linux_amd64/syz-execprog || die "failed to install syz-execprog"
-}
-
-# Overriding postinst for package github.com/google/syzkaller
-# as no Go files are present in the repository root directory
-# and getting list of packages inside cros-go_pkg_postinst() fails.
-pkg_postinst() {
-	:;
-}
diff --git a/dev-go/xerrors/Manifest b/dev-go/xerrors/Manifest
index 56877fc..30a3edf 100644
--- a/dev-go/xerrors/Manifest
+++ b/dev-go/xerrors/Manifest
@@ -1 +1 @@
-DIST github.com-golang-xerrors-d61658bd2e18010be0e21349cc92b1b706e35146.tar.gz 12554 SHA256 a2201f3e8bb1875e89a7b7306410ad1e240910188d69537bcfa61e70574e928a SHA512 3404ccad3c44567ed555d7beec3f9dd8bb9a5bbc991cab7eebc9669960f5a7a1811cd49d63cc13707defe07cb4bbf76dbc23bb30105c621e4d234e3dd0448bb0 WHIRLPOOL 726c709d25b90d6efc0316a1e43af30155e42441d19a6cf9d7f35af23501c8793909b205d49372dd7a4f6e69a86635d8c4bc7b0e3086da231af09072846dc0b2
+DIST github.com-golang-xerrors-1a77d5e9f316d6917d88a497ab4db07399cbc923.tar.gz 13671 BLAKE2B 2bb27f6ff0dcd9323fbc276912ad7b9f10e491bc9bf957953873feda6f52422a34768cadf8cd48ee122d8f9162edbaab7ac09f909f220da3d7f1bd3b769d11d4 SHA512 386d9bddb11a26efeb47717459e6fa2d43065eabbc4a9f67183b69cde3192881f34b05684c895e8b037063070f335530a68b40a8cd1677a600554bdcf74a8910
diff --git a/dev-go/xerrors/xerrors-0.0.1-r1.ebuild b/dev-go/xerrors/xerrors-0.0.1-r2.ebuild
similarity index 100%
rename from dev-go/xerrors/xerrors-0.0.1-r1.ebuild
rename to dev-go/xerrors/xerrors-0.0.1-r2.ebuild
diff --git a/dev-go/xerrors/xerrors-0.0.1.ebuild b/dev-go/xerrors/xerrors-0.0.1.ebuild
index d9b04a1..36b61d2 100644
--- a/dev-go/xerrors/xerrors-0.0.1.ebuild
+++ b/dev-go/xerrors/xerrors-0.0.1.ebuild
@@ -3,7 +3,9 @@
 
 EAPI=6
 
-CROS_GO_SOURCE="github.com/golang/xerrors:golang.org/x/xerrors d61658bd2e18010be0e21349cc92b1b706e35146"
+# Use latest in Go 1.15 branch
+# 1a77d5e9f316d6917d88a497ab4db07399cbc923 (HEAD, origin/release-branch.go1.15)
+CROS_GO_SOURCE="github.com/golang/xerrors:golang.org/x/xerrors 1a77d5e9f316d6917d88a497ab4db07399cbc923"
 
 CROS_GO_PACKAGES=(
 	"golang.org/x/xerrors"
diff --git a/dev-lang/python/Manifest b/dev-lang/python/Manifest
index 0aebc2a..94d15a7 100644
--- a/dev-lang/python/Manifest
+++ b/dev-lang/python/Manifest
@@ -1,5 +1,6 @@
 DIST Python-2.7.15.tar.xz 12642436 BLAKE2B d8783a48ea26695e8d4677397a08194c738d7e4bc8ecaddaab609ad1fd5a1ca07701f707fe38d259f6bd44a39171ef95e7530f3df4bcb4d94abc4d21d7e2d489 SHA512 27ea43eb45fc68f3d2469d5f07636e10801dee11635a430ec8ec922ed790bb426b072da94df885e4dfa1ea8b7a24f2f56dd92f9b0f51e162330f161216bd6de6
-DIST Python-3.6.5.tar.xz 17049912 BLAKE2B f393e9563a18a46c457afcd2e174d9eacda20fe2b0ae5461e11c582fa4d27b85c01bbe7b602f45511b6b44f635c6330205b12fb3e8325ffd07e87b78a8258889 SHA512 6b26fcd296b9bd8e67861eff10d14db7507711ddba947288d16d6def53135c39326b7f969c04bb2b2993f924d9e7ad3f5c5282a3915760bc0885cf0a8ea5eb51
+DIST Python-3.6.12.tar.xz 17202980 BLAKE2B c8d22e4d57bcaffe77cd902cda3a473e73adf2b74ab104c23b4d846f19632a24cc0c478af84079b16d784bd1c0956824c06c1f6134fd24f54e58aaab0fe96bb6 SHA512 1462801f3f6626a853097d34ccdca9838c4c5bd81ecc3abc751003f5f2f8d36eecdaa4130ef4218de351c5586093c11669639a34492668fbc5a2a4a241f4a070
 DIST python-2.7.15-pgo-prof.profdata.tar.xz 219348 BLAKE2B 615ea73fe25983eda0b2a9ee09ea9b908c5a439a89f415ccd1d08196eddd02682d8992035308f9e904ef6a5e95391fbea28e126d849288621c53195510b1a65a SHA512 da79bb2f7dd6e19e3d7a1ff0df62fbbcfb6baa8781a84b861b66e81da00fbf58795b560b1243abf90ef9d82f3ab14a932fc51077360cddc7745e9a2f2f0930b2
+DIST python-3.6-profile.tar.xz 369204 BLAKE2B 7cf015285fd7de8645ced45e3ac968f62a3aab9ec4ae56da2265e3cf707f356bde18b0a9a0d4ba1bc631454ed7d83cac735f04d7f1816d374a011c3457babef1 SHA512 44f03d3df19ea3d773e8bb0b28d4642f1b6002588d16f8512d7db549b9be34eb86f7029d23fde8e743d9a6e6921de78929200120784aa2d92f6f818ba84e5b48
 DIST python-gentoo-patches-2.7.15.tar.xz 16208 BLAKE2B 5739c2b3a236d48f8e33f0fe6515bfe7a8f99096f6223b402653988feac2513d37d26b6e40e5e049852f42657358170e468ca60097e0e2294e760787c12ad591 SHA512 687fd008d1d41b1e65ce5417f6f6aba84ffd42f7af44ef97c03a7806b28e6888f8df043a0c15187a8b229cc17642853e6feb25494db97f4d10f8a66f8ebcbcca
-DIST python-gentoo-patches-3.6.4.tar.xz 12888 BLAKE2B 7cf49ae22df53e855f2e99df51686b5d4bd0da82ef4c22836e24726ea9ed561808352c0305a5659b052d38b843f1ff61b6466a7bc3673b7e5cfb4d81d22fa4bc SHA512 90a1b685f2539872ffd67f96581f70145b7afaf18af19f4a7f4a61214103d2a10bf0069c1769dac229ae011fceaf8538f041082b33c1671905246d018d184dd7
+DIST python-gentoo-patches-3.6.12-r1.tar.xz 16540 BLAKE2B 8204b6f25e1f7c6fef024933d54bfa6085158ac624a6e5a8d51576da2047b6db791be5d071c483fdec5c033b8fa8ee3d4e176a3e442defa556b34a304de3b7f3 SHA512 ad74c73b4f963427e66ac6187e1569dbfbbe3c916c24971a1eba4ad7e2f94e39c970f80e197c0498820451f036b12f3076b46cfd73bb5d6d56183ac05453d9ad
diff --git a/dev-lang/python/files/3.6-disable-nis.patch b/dev-lang/python/files/3.6-disable-nis.patch
deleted file mode 100644
index 4e81847..0000000
--- a/dev-lang/python/files/3.6-disable-nis.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- a/setup.py
-+++ b/setup.py
-@@ -1332,17 +1332,7 @@ class PyBuildExt(build_ext):
-             # Jeremy Hylton's rlimit interface
-             exts.append( Extension('resource', ['resource.c']) )
- 
--            # Sun yellow pages. Some systems have the functions in libc.
--            if (host_platform not in ['cygwin', 'qnx6'] and
--                find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None):
--                if (self.compiler.find_library_file(lib_dirs, 'nsl')):
--                    libs = ['nsl']
--                else:
--                    libs = []
--                exts.append( Extension('nis', ['nismodule.c'],
--                                       libraries = libs) )
--            else:
--                missing.append('nis')
-+            missing.append('nis')
-         else:
-             missing.extend(['nis', 'resource', 'termios'])
- 
diff --git a/dev-lang/python/files/3.6.5-disable-nis.patch b/dev-lang/python/files/3.6.5-disable-nis.patch
deleted file mode 100644
index 3937c6f..0000000
--- a/dev-lang/python/files/3.6.5-disable-nis.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/setup.py
-+++ b/setup.py
-@@ -1364,7 +1364,7 @@ class PyBuildExt(build_ext):
-         else:
-             missing.extend(['resource', 'termios'])
- 
--        nis = self._detect_nis(inc_dirs, lib_dirs)
-+        nis = None
-         if nis is not None:
-             exts.append(nis)
-         else:
diff --git a/dev-lang/python/files/python-2.7.15-deprecate.patch b/dev-lang/python/files/python-2.7.15-deprecate.patch
new file mode 100644
index 0000000..f08d29f
--- /dev/null
+++ b/dev-lang/python/files/python-2.7.15-deprecate.patch
@@ -0,0 +1,54 @@
+Warn users whenever `python2` is invoked.
+
+--- a/Modules/main.c
++++ b/Modules/main.c
+@@ -237,6 +237,20 @@ static int RunMainFromImporter(char *filename)
+     return -1;
+ }
+ 
++void deprecate_warn(FILE *fp)
++{
++    int tty = isatty(2);
++    if (tty)
++        fprintf(fp, "\e[5;1;31m");
++    fprintf(fp, "%s: warning: Python 2.7 is deprecated and will be removed from CrOS by end of 2021. All users must migrate ASAP.\n",
++            orig_argv[0]);
++    fprintf(fp, "%s: commandline:", orig_argv[0]);
++    for (int i = 1; i < orig_argc; ++i)
++        fprintf(fp, " %s", orig_argv[i]);
++    if (tty)
++        fprintf(fp, "\e[m");
++    fprintf(fp, "\n");
++}
+ 
+ /* Main program */
+ 
+@@ -372,6 +372,7 @@ Py_Main(int argc, char **argv)
+                 _Py_QnewFlag = 1;
+                 break;
+             }
++            deprecate_warn(stderr);
+             fprintf(stderr,
+                 "-Q option should be `-Qold', "
+                 "`-Qwarn', `-Qwarnall', or `-Qnew' only\n");
+@@ -458,14 +459,19 @@ Py_Main(int argc, char **argv)
+         }
+     }
+ 
+-    if (help)
++    if (help) {
++        deprecate_warn(stderr);
+         return usage(0, argv[0]);
++    }
+ 
+     if (version) {
++        deprecate_warn(stdout);
+         fprintf(stderr, "Python %s\n", PY_VERSION);
+         return 0;
+     }
+ 
++    deprecate_warn(stderr);
++
+     if (Py_Py3kWarningFlag && !Py_TabcheckFlag)
+         /* -3 implies -t (but not -tt) */
+         Py_TabcheckFlag = 1;
diff --git a/dev-lang/python/files/python-3.5-distutils-OO-build.patch b/dev-lang/python/files/python-3.5-distutils-OO-build.patch
deleted file mode 100644
index 8af8c30..0000000
--- a/dev-lang/python/files/python-3.5-distutils-OO-build.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-From 90507018442f9adabb586fd3d0a0206b9c2f2f50 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
-Date: Sun, 5 Jun 2016 08:18:01 +0200
-Subject: [PATCH] distutils: make -OO enable both opt-1 and opt-2 optimization
-
-Bug: http://bugs.python.org/issue27226
-Bug: https://bugs.gentoo.org/585060
----
- Lib/distutils/command/build_py.py    |  8 ++++----
- Lib/distutils/command/install_lib.py | 12 ++++++------
- 2 files changed, 10 insertions(+), 10 deletions(-)
-
-diff --git a/Lib/distutils/command/build_py.py b/Lib/distutils/command/build_py.py
-index cf0ca57..838d4e4 100644
---- a/Lib/distutils/command/build_py.py
-+++ b/Lib/distutils/command/build_py.py
-@@ -315,9 +315,9 @@ class build_py (Command):
-                 if self.compile:
-                     outputs.append(importlib.util.cache_from_source(
-                         filename, optimization=''))
--                if self.optimize > 0:
-+                for opt in range(1, self.optimize + 1):
-                     outputs.append(importlib.util.cache_from_source(
--                        filename, optimization=self.optimize))
-+                        filename, optimization=opt))
- 
-         outputs += [
-             os.path.join(build_dir, filename)
-@@ -387,8 +387,8 @@ class build_py (Command):
-         if self.compile:
-             byte_compile(files, optimize=0,
-                          force=self.force, prefix=prefix, dry_run=self.dry_run)
--        if self.optimize > 0:
--            byte_compile(files, optimize=self.optimize,
-+        for opt in range(1, self.optimize + 1):
-+            byte_compile(files, optimize=opt,
-                          force=self.force, prefix=prefix, dry_run=self.dry_run)
- 
- class build_py_2to3(build_py, Mixin2to3):
-diff --git a/Lib/distutils/command/install_lib.py b/Lib/distutils/command/install_lib.py
-index 6154cf0..049b662 100644
---- a/Lib/distutils/command/install_lib.py
-+++ b/Lib/distutils/command/install_lib.py
-@@ -24,8 +24,8 @@ class install_lib(Command):
-     #   2) compile .pyc only (--compile --no-optimize; default)
-     #   3) compile .pyc and "opt-1" .pyc (--compile --optimize)
-     #   4) compile "opt-1" .pyc only (--no-compile --optimize)
--    #   5) compile .pyc and "opt-2" .pyc (--compile --optimize-more)
--    #   6) compile "opt-2" .pyc only (--no-compile --optimize-more)
-+    #   5) compile .pyc, "opt-1" and "opt-2" .pyc (--compile --optimize-more)
-+    #   6) compile "opt-1" and "opt-2" .pyc (--no-compile --optimize-more)
-     #
-     # The UI for this is two options, 'compile' and 'optimize'.
-     # 'compile' is strictly boolean, and only decides whether to
-@@ -132,8 +132,8 @@ class install_lib(Command):
-             byte_compile(files, optimize=0,
-                          force=self.force, prefix=install_root,
-                          dry_run=self.dry_run)
--        if self.optimize > 0:
--            byte_compile(files, optimize=self.optimize,
-+        for opt in range(1, self.optimize + 1):
-+            byte_compile(files, optimize=opt,
-                          force=self.force, prefix=install_root,
-                          verbose=self.verbose, dry_run=self.dry_run)
- 
-@@ -167,9 +167,9 @@ class install_lib(Command):
-             if self.compile:
-                 bytecode_files.append(importlib.util.cache_from_source(
-                     py_file, optimization=''))
--            if self.optimize > 0:
-+            for opt in range(1, self.optimize + 1):
-                 bytecode_files.append(importlib.util.cache_from_source(
--                    py_file, optimization=self.optimize))
-+                    py_file, optimization=opt))
- 
-         return bytecode_files
- 
--- 
-2.8.3
-
diff --git a/dev-lang/python/files/python-3.6-mock.patch b/dev-lang/python/files/python-3.6-mock.patch
new file mode 100644
index 0000000..dc2c4cc
--- /dev/null
+++ b/dev-lang/python/files/python-3.6-mock.patch
@@ -0,0 +1,14 @@
+Backport fix from Python-3.7.
+
+https://gerrit.chromium.org/gerrit/45771
+
+--- a/Lib/unittest/mock.py
++++ b/Lib/unittest/mock.py
+@@ -130,4 +138,7 @@ def _callable(obj):
+     if isinstance(obj, type):
+         return True
++    from types import MethodType
++    if isinstance(obj, (staticmethod, classmethod, MethodType)):
++        return _callable(obj.__func__)
+     if getattr(obj, '__call__', None) is not None:
+         return True
diff --git a/dev-lang/python/files/python-3.6.12-pgo-generate.patch b/dev-lang/python/files/python-3.6.12-pgo-generate.patch
new file mode 100644
index 0000000..1cda15dd
--- /dev/null
+++ b/dev-lang/python/files/python-3.6.12-pgo-generate.patch
@@ -0,0 +1,24 @@
+Python doesn't quite support the flow of "let me grab a profile from this build
+now; I plan to use it later."
+
+In order to *get* the profile, we just need to remove the last profile-removal
+step.
+
+Note that we have a special string here that's grep'ed for by the PGO generation
+script -- python's PGO profile generation goes something like "run all of the
+tests, and collect the profile that results." A small number of the tests break
+the sandbox, so the sandbox will fail out our `ebuild` commands regardless of
+what we do. In order to work around that, we have the "Full build with [...]"
+string below, which functions as the "we did the thing correctly" marker. :)
+
+--- a/Makefile.pre.in
++++ b/Makefile.pre.in
+@@ -476,7 +476,7 @@ profile-opt:
+ 	@echo "Rebuilding with profile guided optimizations:"
+ 	$(MAKE) clean
+ 	$(MAKE) build_all_use_profile
+-	$(MAKE) profile-removal
++	echo "Full build with profile completed successfully."
+ 
+ build_all_generate_profile:
+ 	$(MAKE) @DEF_MAKE_RULE@ CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)"
diff --git a/dev-lang/python/files/python-3.6.12-pgo-use.patch b/dev-lang/python/files/python-3.6.12-pgo-use.patch
new file mode 100644
index 0000000..b9687c1
--- /dev/null
+++ b/dev-lang/python/files/python-3.6.12-pgo-use.patch
@@ -0,0 +1,20 @@
+Python doesn't directly effortlessly support the use of a PGO profile that
+wasn't generated during the *current* build.
+
+profile-opt includes PGO profile generation, which is slow (requires multiple
+builds & a lengthy test phase), and makes determinism harder. If we place a PGO
+profile in the place where profile-opt normally puts one & instead use
+build_all_use_profile, all of this works effortlessly with a pre-rolled
+profile.
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -1299,7 +1299,7 @@ if test "$Py_OPT" = 'true' ; then
+   # compile working code using it and both test_distutils and test_gdb are
+   # broken when you do manage to get a toolchain that works with it.  People
+   # who want LTO need to use --with-lto themselves.
+-  DEF_MAKE_ALL_RULE="profile-opt"
++  DEF_MAKE_ALL_RULE="build_all_use_profile"
+   REQUIRE_PGO="yes"
+   DEF_MAKE_RULE="build_all"
+ else
diff --git a/dev-lang/python/files/python-3.6.5-hash-unaligned.patch b/dev-lang/python/files/python-3.6.5-hash-unaligned.patch
deleted file mode 100644
index d096887..0000000
--- a/dev-lang/python/files/python-3.6.5-hash-unaligned.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-The hash implementation casts the input pointer to uint64_t* and directly reads
-from this, which may cause unaligned accesses. Use memcpy() instead so this code
-will not crash with SIGBUS on sparc.
-
---- a/Python/pyhash.c	2017-11-29 10:21:20.283094068 +0100
-+++ b/Python/pyhash.c	2017-11-29 10:24:26.733087813 +0100
-@@ -369,7 +369,7 @@
-     uint64_t k0 = _le64toh(_Py_HashSecret.siphash.k0);
-     uint64_t k1 = _le64toh(_Py_HashSecret.siphash.k1);
-     uint64_t b = (uint64_t)src_sz << 56;
--    const uint64_t *in = (uint64_t*)src;
-+    const uint8_t *in = (uint8_t*)src;
- 
-     uint64_t v0 = k0 ^ 0x736f6d6570736575ULL;
-     uint64_t v1 = k1 ^ 0x646f72616e646f6dULL;
-@@ -378,11 +378,13 @@
- 
-     uint64_t t;
-     uint8_t *pt;
--    uint8_t *m;
-+    const uint8_t *m;
- 
-     while (src_sz >= 8) {
--        uint64_t mi = _le64toh(*in);
--        in += 1;
--        src_sz -= 8;
-+        uint64_t mi;
-+        memcpy(&mi, in, sizeof(mi));
-+        mi = _le64toh(mi);
-+        in += sizeof(mi);
-+        src_sz -= sizeof(mi);
-         v3 ^= mi;
-         DOUBLE_ROUND(v0,v1,v2,v3);
-@@ -391,7 +393,7 @@
- 
-     t = 0;
-     pt = (uint8_t *)&t;
--    m = (uint8_t *)in;
-+    m = in;
-     switch (src_sz) {
-         case 7: pt[6] = m[6]; /* fall through */
-         case 6: pt[5] = m[5]; /* fall through */
diff --git a/dev-lang/python/files/python-3.6.5-libressl-compatibility.patch b/dev-lang/python/files/python-3.6.5-libressl-compatibility.patch
deleted file mode 100644
index 2f9e6a2..0000000
--- a/dev-lang/python/files/python-3.6.5-libressl-compatibility.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From 8d89a385b71a2e4cce0fba0cfc8d91b63485edc5 Mon Sep 17 00:00:00 2001
-From: Christian Heimes <christian@python.org>
-Date: Sat, 24 Mar 2018 18:38:14 +0100
-Subject: [PATCH] [3.6] bpo-33127: Compatibility patch for LibreSSL 2.7.0
- (GH-6210) (GH-6214)
-
-LibreSSL 2.7 introduced OpenSSL 1.1.0 API. The ssl module now detects
-LibreSSL 2.7 and only provides API shims for OpenSSL < 1.1.0 and
-LibreSSL < 2.7.
-
-Documentation updates and fixes for failing tests will be provided in
-another patch set.
-
-Signed-off-by: Christian Heimes <christian@python.org>.
-(cherry picked from commit 4ca0739c9d97ac7cd45499e0d31be68dc659d0e1)
-
-Co-authored-by: Christian Heimes <christian@python.org>
----
- Lib/test/test_ssl.py                          |  1 +
- .../2018-03-24-15-08-24.bpo-33127.olJmHv.rst  |  1 +
- Modules/_ssl.c                                | 24 ++++++++++++-------
- Tools/ssl/multissltests.py                    |  3 ++-
- 4 files changed, 20 insertions(+), 9 deletions(-)
- create mode 100644 Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst
-
-diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
-index 8dd3b41450..9785a59a7e 100644
---- a/Lib/test/test_ssl.py
-+++ b/Lib/test/test_ssl.py
-@@ -1687,6 +1687,7 @@ class SimpleBackgroundTests(unittest.TestCase):
-         self.assertEqual(len(ctx.get_ca_certs()), 1)
- 
-     @needs_sni
-+    @unittest.skipUnless(hasattr(ssl, "PROTOCOL_TLSv1_2"), "needs TLS 1.2")
-     def test_context_setget(self):
-         # Check that the context of a connected socket can be replaced.
-         ctx1 = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
-diff --git a/Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst b/Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst
-new file mode 100644
-index 0000000000..635aabbde0
---- /dev/null
-+++ b/Misc/NEWS.d/next/Library/2018-03-24-15-08-24.bpo-33127.olJmHv.rst
-@@ -0,0 +1 @@
-+The ssl module now compiles with LibreSSL 2.7.1.
-diff --git a/Modules/_ssl.c b/Modules/_ssl.c
-index c54e43c2b4..5e007da858 100644
---- a/Modules/_ssl.c
-+++ b/Modules/_ssl.c
-@@ -106,6 +106,12 @@ struct py_ssl_library_code {
- 
- #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) && !defined(LIBRESSL_VERSION_NUMBER)
- #  define OPENSSL_VERSION_1_1 1
-+#  define PY_OPENSSL_1_1_API 1
-+#endif
-+
-+/* LibreSSL 2.7.0 provides necessary OpenSSL 1.1.0 APIs */
-+#if defined(LIBRESSL_VERSION_NUMBER) && LIBRESSL_VERSION_NUMBER >= 0x2070000fL
-+#  define PY_OPENSSL_1_1_API 1
- #endif
- 
- /* Openssl comes with TLSv1.1 and TLSv1.2 between 1.0.0h and 1.0.1
-@@ -152,16 +158,18 @@ struct py_ssl_library_code {
- #define INVALID_SOCKET (-1)
- #endif
- 
--#ifdef OPENSSL_VERSION_1_1
--/* OpenSSL 1.1.0+ */
--#ifndef OPENSSL_NO_SSL2
--#define OPENSSL_NO_SSL2
--#endif
--#else /* OpenSSL < 1.1.0 */
--#if defined(WITH_THREAD)
-+/* OpenSSL 1.0.2 and LibreSSL needs extra code for locking */
-+#if !defined(OPENSSL_VERSION_1_1) && defined(WITH_THREAD)
- #define HAVE_OPENSSL_CRYPTO_LOCK
- #endif
- 
-+#if defined(OPENSSL_VERSION_1_1) && !defined(OPENSSL_NO_SSL2)
-+#define OPENSSL_NO_SSL2
-+#endif
-+
-+#ifndef PY_OPENSSL_1_1_API
-+/* OpenSSL 1.1 API shims for OpenSSL < 1.1.0 and LibreSSL < 2.7.0 */
-+
- #define TLS_method SSLv23_method
- #define TLS_client_method SSLv23_client_method
- #define TLS_server_method SSLv23_server_method
-@@ -227,7 +235,7 @@ SSL_SESSION_get_ticket_lifetime_hint(const SSL_SESSION *s)
-     return s->tlsext_tick_lifetime_hint;
- }
- 
--#endif /* OpenSSL < 1.1.0 or LibreSSL */
-+#endif /* OpenSSL < 1.1.0 or LibreSSL < 2.7.0 */
- 
- 
- enum py_ssl_error {
-diff --git a/Tools/ssl/multissltests.py b/Tools/ssl/multissltests.py
-index ce5bbd8530..ba4529ae06 100755
---- a/Tools/ssl/multissltests.py
-+++ b/Tools/ssl/multissltests.py
-@@ -57,8 +57,9 @@ LIBRESSL_OLD_VERSIONS = [
- ]
- 
- LIBRESSL_RECENT_VERSIONS = [
--    "2.5.3",
-     "2.5.5",
-+    "2.6.4",
-+    "2.7.1",
- ]
- 
- # store files in ../multissl
--- 
-2.17.0
-
diff --git a/dev-lang/python/files/python3_gen_pgo.sh b/dev-lang/python/files/python3_gen_pgo.sh
new file mode 100755
index 0000000..4bb62ad
--- /dev/null
+++ b/dev-lang/python/files/python3_gen_pgo.sh
@@ -0,0 +1,69 @@
+#!/bin/bash -eu
+# Copyright 2021 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.
+#
+# This script generates a PGO profile for a given Python version.
+# PGO profiles are generally pretty stable, so we should only need one per
+# minor Python version (3.6, 3.7, ...).
+#
+# Usage looks like:
+#   $0 python-3.6.1
+
+python_version="${1:-}"
+if [[ -z "${python_version}" ]]; then
+	echo "Please give this script the python \${P} you want to generate" >&2
+	echo "a profile for as its first arg. (e.g., python-3.6.12)" >&2
+	exit 1
+fi
+
+python_ebuild="$(equery w "=dev-lang/${python_version}")"
+if [[ -z "${python_ebuild}" ]]; then
+	echo "Failed to locate Python ebuild; quit" >&2
+	exit 1
+fi
+
+tempfile="$(mktemp)"
+trap 'rm "${tempfile}"' EXIT
+
+# Note that we *very* intentionally ignore the success of this `ebuild`
+# command. It breaks sandbox constraints in a few ways during Python's
+# extensive "test everything," phase. As long as the phrase that tells us most
+# tests passed is present, be content. A side-benefit of disabling the sandbox
+# is that it won't influence our profiles in any way.
+FEATURES=-sandbox USE='-pgo_use pgo_generate' \
+	ebuild "${python_ebuild}" clean compile |& tee "${tempfile}"
+
+if ! grep -qF "Full build with profile completed successfully." "${tempfile}"; then
+	echo "Seems that ebuild-ing python failed somehow?" >&2
+	exit 1
+fi
+
+# ...Now fish out the profile that's being used. Python always places it
+# at ${S}/code.profclangd.
+profile_locations=(
+	"/var/tmp/portage/dev-lang/${python_version}"*"/work/Python-"*"/code.profclangd"
+)
+
+if [[ "${#profile_locations[@]}" -ne 1 ]]; then
+	echo "Expected to find 1 profile; got ${#profile_locations[@]}" >&2
+	echo "Listed out: ${profile_locations[*]}" >&2
+	echo "Maybe rm -rf /var/tmp/portage and try again?" >&2
+	exit 1
+fi
+
+profile_location="${profile_locations[0]}"
+profile_target="${tempfile}.tar"
+
+(cd "$(dirname "${profile_location}")" &&
+	tar cf "${profile_target}" code.profclangd)
+
+xz -9 "${profile_target}"
+profile_target="${profile_target}.xz"
+
+major_minor_ver="$(cut -d. -f1-2 <<< "${python_version}")"
+echo "Profile generated successfully to ${profile_target}."
+echo "When ready, please upload that to gs:// with something like"
+echo "gsutil cp -n -a public-read ${profile_target}" \
+	"gs://chromeos-localmirror/distfiles/${major_minor_ver}-profile.tar.xz"
+echo "Once that's done, don't forget to do 'ebuild manifest'."
diff --git a/dev-lang/python/python-2.7.15-r5.ebuild b/dev-lang/python/python-2.7.15-r9.ebuild
similarity index 100%
rename from dev-lang/python/python-2.7.15-r5.ebuild
rename to dev-lang/python/python-2.7.15-r9.ebuild
diff --git a/dev-lang/python/python-2.7.15.ebuild b/dev-lang/python/python-2.7.15.ebuild
index fb50122..c558de2 100644
--- a/dev-lang/python/python-2.7.15.ebuild
+++ b/dev-lang/python/python-2.7.15.ebuild
@@ -127,6 +127,7 @@
 	epatch "${FILESDIR}"/python-2.7.10-cross-distutils.patch
 	epatch "${FILESDIR}"/python-2.7.10-cross-sysconfig.patch
 	epatch "${FILESDIR}"/python-2.7.10-ldshared.patch
+	epatch "${FILESDIR}"/python-2.7.15-deprecate.patch
 	# Undo the @libdir@ change for portage's pym folder as it is always
 	# installed into /usr/lib/ and not the abi libdir.
 	sed -i \
@@ -492,15 +493,14 @@
 	# need be.
 	ln "${ED}/usr/include/python${SLOT}/pyconfig.h" "${libdir}/pyconfig_h" || die
 
+	# Delete unittests as they are a waste of space and are unused.
+	rm -rf "${libdir}/test" "${libdir}"/{ctypes,email,sqlite3,unittest}/test || die
+
 	# Workaround https://bugs.gentoo.org/380569
 	keepdir /etc/env.d/python
 }
 
 eselect_python_update() {
-	if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
-		eselect python update
-	fi
-
 	if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
 		eselect python update --python${PV%%.*}
 	fi
@@ -516,7 +516,3 @@
 	fi
 	rm "${pyconfig}" || die
 }
-
-pkg_postrm() {
-	eselect_python_update
-}
diff --git a/dev-lang/python/python-3.6.12-r4.ebuild b/dev-lang/python/python-3.6.12-r4.ebuild
new file mode 120000
index 0000000..9d96e63
--- /dev/null
+++ b/dev-lang/python/python-3.6.12-r4.ebuild
@@ -0,0 +1 @@
+python-3.6.12.ebuild
\ No newline at end of file
diff --git a/dev-lang/python/python-3.6.12.ebuild b/dev-lang/python/python-3.6.12.ebuild
new file mode 100644
index 0000000..f54c605
--- /dev/null
+++ b/dev-lang/python/python-3.6.12.ebuild
@@ -0,0 +1,422 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+WANT_LIBTOOL="none"
+
+inherit autotools flag-o-matic multiprocessing pax-utils \
+	python-utils-r1 toolchain-funcs
+
+MY_P="Python-${PV}"
+PYVER=$(ver_cut 1-2)
+PATCHSET="python-gentoo-patches-${PV}-r1"
+
+DESCRIPTION="An interpreted, interactive, object-oriented programming language"
+HOMEPAGE="https://www.python.org/"
+SRC_URI="https://www.python.org/ftp/python/${PV}/${MY_P}.tar.xz
+	https://dev.gentoo.org/~mgorny/dist/python/${PATCHSET}.tar.xz"
+S="${WORKDIR}/${MY_P}"
+
+LICENSE="PSF-2"
+SLOT="${PYVER}/${PYVER}m"
+KEYWORDS="*"
+IUSE="bluetooth build examples gdbm hardened ipv6 libressl +ncurses +readline sqlite +ssl test +threads tk wininst +xml"
+RESTRICT="!test? ( test )"
+
+# Do not add a dependency on dev-lang/python to this ebuild.
+# If you need to apply a patch which requires python for bootstrapping, please
+# run the bootstrap code on your dev box and include the results in the
+# patchset. See bug 447752.
+
+RDEPEND="app-arch/bzip2:=
+	app-arch/xz-utils:=
+	dev-libs/libffi:=
+	>=sys-libs/zlib-1.1.3:=
+	virtual/libcrypt:=
+	virtual/libintl
+	gdbm? ( sys-libs/gdbm:=[berkdb] )
+	ncurses? ( >=sys-libs/ncurses-5.2:= )
+	readline? ( >=sys-libs/readline-4.1:= )
+	sqlite? ( >=dev-db/sqlite-3.3.8:3= )
+	ssl? (
+		!libressl? ( dev-libs/openssl:= )
+		libressl? ( dev-libs/libressl:= )
+	)
+	tk? (
+		>=dev-lang/tcl-8.0:=
+		>=dev-lang/tk-8.0:=
+		dev-tcltk/blt:=
+		dev-tcltk/tix
+	)
+	xml? ( >=dev-libs/expat-2.1:= )"
+# bluetooth requires headers from bluez
+DEPEND="${RDEPEND}
+	bluetooth? ( net-wireless/bluez )
+	test? ( app-arch/xz-utils[extra-filters(+)] )
+	virtual/pkgconfig
+	!sys-devel/gcc[libffi(-)]"
+RDEPEND+=" !build? ( app-misc/mime-types )"
+PDEPEND=">=app-eselect/eselect-python-20140125-r1"
+
+# Google-specific PGO bits
+#
+# NOTE: If you're looking here because python-*-profile.tar.xz is missing:
+# - thanks for upgrading Python!
+# - files/python3_gen_pgo.sh should be able to generate a PGO profile for you.
+# - only new minor versions of Python should require a new PGO profile.
+#
+# Generally, PGO profile generation should be done as one of the last steps of
+# a Python upgrade, so feel free to turn pgo_use off as a default until things
+# are pretty finalized.
+SRC_URI+=" pgo_use? ( gs://chromeos-localmirror/distfiles/python-$(ver_cut 1-2)-profile.tar.xz )"
+IUSE+=" pgo_generate +pgo_use"
+REQUIRED_USE+=" pgo_generate? ( !pgo_use )"
+
+src_prepare() {
+	# Ensure that internal copies of expat, libffi and zlib are not used.
+	rm -fr Modules/expat || die
+	rm -fr Modules/_ctypes/libffi* || die
+	rm -fr Modules/zlib || die
+
+	local PATCHES=(
+		"${WORKDIR}/${PATCHSET}"
+	)
+
+	default
+
+	# START: Chromium OS
+	if tc-is-cross-compiler ; then
+		eapply "${FILESDIR}/python-3.6.5-cross-h2py.patch"
+		eapply "${FILESDIR}/python-3.6.5-cross-hack-compiler.patch"
+	fi
+	eapply "${FILESDIR}/python-3.6.5-cross-python-config.patch"
+	eapply "${FILESDIR}/python-3.6.5-cross-setup-sysroot.patch"
+	eapply "${FILESDIR}/python-3.6.5-cross-distutils.patch"
+	eapply "${FILESDIR}/python-3.6.5-cross-sysconfig.patch"
+	eapply "${FILESDIR}/python-3.6.5-ldshared.patch"
+	eapply "${FILESDIR}/python-3.6.5-system-libffi.patch"
+	eapply "${FILESDIR}/python-3.6.5-sigint-handler.patch"
+	eapply "${FILESDIR}/python-3.6-mock.patch"
+
+	if use pgo_use; then
+		eapply "${FILESDIR}/python-3.6.12-pgo-use.patch"
+		cp "${WORKDIR}/code.profclangd" "${S}" || die
+	elif use pgo_generate; then
+		eapply "${FILESDIR}/python-3.6.12-pgo-generate.patch"
+	fi
+
+	# Undo the @libdir@ change for portage's pym folder as it is always
+	# installed into /usr/lib/ and not the abi libdir.
+	sed -i \
+		-e '/portage.*pym/s:@@GENTOO_LIBDIR@@:lib:g' \
+		Lib/site.py || die
+
+	sed -i -e "s:sys.exec_prefix]:sys.exec_prefix, '/usr/local']:g" \
+		Lib/site.py || die "sed failed to add /usr/local to prefixes"
+	# END: Chromium OS
+
+	sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
+		Lib/distutils/command/install.py \
+		Lib/distutils/sysconfig.py \
+		Lib/site.py \
+		Lib/sysconfig.py \
+		Lib/test/test_site.py \
+		Makefile.pre.in \
+		Modules/Setup.dist \
+		Modules/getpath.c \
+		configure.ac \
+		setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
+
+	# force correct number of jobs
+	# https://bugs.gentoo.org/737660
+	local jobs=$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")
+	sed -i -e "/self\.parallel/s:True:${jobs}:" setup.py || die
+
+	eautoreconf
+}
+
+src_configure() {
+	local disable
+	# disable automagic bluetooth headers detection
+	use bluetooth || export ac_cv_header_bluetooth_bluetooth_h=no
+	use gdbm      || disable+=" gdbm"
+	use ncurses   || disable+=" _curses _curses_panel"
+	use readline  || disable+=" readline"
+	use sqlite    || disable+=" _sqlite3"
+	use ssl       || export PYTHON_DISABLE_SSL="1"
+	use tk        || disable+=" _tkinter"
+	use xml       || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
+	export PYTHON_DISABLE_MODULES="${disable}"
+
+	if ! use xml; then
+		ewarn "You have configured Python without XML support."
+		ewarn "This is NOT a recommended configuration as you"
+		ewarn "may face problems parsing any XML documents."
+	fi
+
+	if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
+		einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
+	fi
+
+	if [[ "$(gcc-major-version)" -ge 4 ]]; then
+		append-flags -fwrapv
+	fi
+
+	filter-flags -malign-double
+
+	# https://bugs.gentoo.org/show_bug.cgi?id=50309
+	if is-flagq -O3; then
+		is-flagq -fstack-protector-all && replace-flags -O3 -O2
+		use hardened && replace-flags -O3 -O2
+	fi
+
+	# Export CXX so it ends up in /usr/lib/python3.X/config/Makefile.
+	tc-export CXX
+
+	# Set LDFLAGS so we link modules with -lpython3.2 correctly.
+	# Needed on FreeBSD unless Python 3.2 is already installed.
+	# Please query BSD team before removing this!
+	append-ldflags "-L."
+
+	tc-export CC
+
+	local dbmliborder
+	if use gdbm; then
+		dbmliborder+="${dbmliborder:+:}gdbm"
+	fi
+
+	local myeconfargs=(
+		# glibc-2.30 removes it; since we can't cleanly force-rebuild
+		# Python on glibc upgrade, remove it proactively to give
+		# a chance for users rebuilding python before glibc
+		ac_cv_header_stropts_h=no
+
+		--with-fpectl
+		--enable-shared
+		$(use_enable ipv6)
+		$(use_with threads)
+		--infodir='${prefix}/share/info'
+		--mandir='${prefix}/share/man'
+		--with-computed-gotos
+		--with-dbmliborder="${dbmliborder}"
+		--with-libc=
+		--enable-loadable-sqlite-extensions
+		--without-ensurepip
+		--with-system-expat
+		--with-system-ffi
+	)
+
+	if use pgo_generate || use pgo_use; then
+		myeconfargs+=(
+			"LLVM_PROFDATA=$(which llvm-profdata)"
+			--enable-optimizations
+		)
+	fi
+
+	OPT="" econf "${myeconfargs[@]}"
+
+	if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
+		eerror "configure has detected that the sem_open function is broken."
+		eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
+		die "Broken sem_open function (bug 496328)"
+	fi
+}
+
+src_compile() {
+	# Ensure sed works as expected
+	# https://bugs.gentoo.org/594768
+	local -x LC_ALL=C
+
+	emake CPPFLAGS= CFLAGS= LDFLAGS=
+
+	# Work around bug 329499. See also bug 413751 and 457194.
+	if has_version dev-libs/libffi[pax_kernel]; then
+		pax-mark E python
+	else
+		pax-mark m python
+	fi
+}
+
+src_test() {
+	# Tests will not work when cross compiling.
+	if tc-is-cross-compiler; then
+		elog "Disabling tests due to crosscompiling."
+		return
+	fi
+
+	# Skip failing tests.
+	local skipped_tests="gdb faulthandler"
+
+	for test in ${skipped_tests}; do
+		mv "${S}"/Lib/test/test_${test}.py "${T}"
+	done
+
+	# bug 660358
+	local -x COLUMNS=80
+	local -x PYTHONDONTWRITEBYTECODE=
+
+	local jobs=$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")
+
+	emake test EXTRATESTOPTS="-u-network -j${jobs}" \
+		CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
+	local result=$?
+
+	for test in ${skipped_tests}; do
+		mv "${T}/test_${test}.py" "${S}"/Lib/test
+	done
+
+	elog "The following tests have been skipped:"
+	for test in ${skipped_tests}; do
+		elog "test_${test}.py"
+	done
+
+	elog "If you would like to run them, you may:"
+	elog "cd '${EPREFIX}/usr/$(get_libdir)/python${PYVER}/test'"
+	elog "and run the tests separately."
+
+	if [[ ${result} -ne 0 ]]; then
+		die "emake test failed"
+	fi
+}
+
+src_install() {
+	local libdir=${ED}/usr/$(get_libdir)/python${PYVER}
+
+	emake DESTDIR="${D}" altinstall
+
+	# Remove static library
+	rm "${ED}"/usr/$(get_libdir)/libpython*.a || die
+
+	sed \
+		-e "s/\(CONFIGURE_LDFLAGS=\).*/\1/" \
+		-e "s/\(PY_LDFLAGS=\).*/\1/" \
+		-i "${libdir}/config-${PYVER}"*/Makefile || die "sed failed"
+
+	# Fix collisions between different slots of Python.
+	rm "${ED}/usr/$(get_libdir)/libpython3.so" || die
+
+	# Cheap hack to get version with ABIFLAGS
+	local abiver=$(cd "${ED}/usr/include"; echo python*)
+	if [[ ${abiver} != python${PYVER} ]]; then
+		# Replace python3.X with a symlink to python3.Xm
+		rm "${ED}/usr/bin/python${PYVER}" || die
+		dosym "${abiver}" "/usr/bin/python${PYVER}"
+		# Create python3.X-config symlink
+		dosym "${abiver}-config" "/usr/bin/python${PYVER}-config"
+		# Create python-3.5m.pc symlink
+		dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc"
+	fi
+
+	# python seems to get rebuilt in src_install (bug 569908)
+	# Work around it for now.
+	if has_version dev-libs/libffi[pax_kernel]; then
+		pax-mark E "${ED}/usr/bin/${abiver}"
+	else
+		pax-mark m "${ED}/usr/bin/${abiver}"
+	fi
+
+	use sqlite || rm -r "${libdir}/"{sqlite3,test/test_sqlite*} || die
+	use tk || rm -r "${ED}/usr/bin/idle${PYVER}" "${libdir}/"{idlelib,tkinter,test/test_tk*} || die
+
+	use threads || rm -r "${libdir}/multiprocessing" || die
+	use wininst || rm "${libdir}/distutils/command/"wininst-*.exe || die
+
+	dodoc Misc/{ACKS,HISTORY,NEWS}
+
+	if use examples; then
+		docinto examples
+		find Tools -name __pycache__ -exec rm -fr {} + || die
+		dodoc -r Tools
+	fi
+	insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
+	local libname=$(printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | \
+		emake --no-print-directory -s -f - 2>/dev/null)
+	newins "${S}"/Tools/gdb/libpython.py "${libname}"-gdb.py
+
+	newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER}
+	newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER}
+	sed \
+		-e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \
+		-e "s:@PYDOC@:pydoc${PYVER}:" \
+		-i "${ED}/etc/conf.d/pydoc-${PYVER}" \
+		"${ED}/etc/init.d/pydoc-${PYVER}" || die "sed failed"
+
+	local -x EPYTHON=python${PYVER}
+	# if not using a cross-compiler, use the fresh binary
+	if ! tc-is-cross-compiler; then
+		local -x PYTHON=./python
+		local -x LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}${PWD}
+	else
+		local -x PYTHON=${EPREFIX}/usr/bin/${EPYTHON}
+	fi
+
+	echo "EPYTHON='${EPYTHON}'" > epython.py || die
+	python_domodule epython.py
+
+	# python-exec wrapping support
+	local pymajor=${PYVER%.*}
+	local scriptdir=${D}$(python_get_scriptdir)
+	mkdir -p "${scriptdir}" || die
+	# python and pythonX
+	ln -s "../../../bin/${abiver}" \
+		"${scriptdir}/python${pymajor}" || die
+	ln -s "python${pymajor}" "${scriptdir}/python" || die
+	# python-config and pythonX-config
+	# note: we need to create a wrapper rather than symlinking it due
+	# to some random dirname(argv[0]) magic performed by python-config
+	cat > "${scriptdir}/python${pymajor}-config" <<-EOF || die
+		#!/bin/sh
+		exec "${abiver}-config" "\${@}"
+	EOF
+	chmod +x "${scriptdir}/python${pymajor}-config" || die
+	ln -s "python${pymajor}-config" \
+		"${scriptdir}/python-config" || die
+	# 2to3, pydoc, pyvenv
+	ln -s "../../../bin/2to3-${PYVER}" \
+		"${scriptdir}/2to3" || die
+	ln -s "../../../bin/pydoc${PYVER}" \
+		"${scriptdir}/pydoc" || die
+	ln -s "../../../bin/pyvenv-${PYVER}" \
+		"${scriptdir}/pyvenv" || die
+	# idle
+	if use tk; then
+		ln -s "../../../bin/idle${PYVER}" \
+			"${scriptdir}/idle" || die
+	fi
+
+	# Delete unittests as they are a waste of space and are unused.
+	rm -rf "${libdir}/test" "${libdir}"/{ctypes,email,sqlite3,unittest}/test || die
+}
+
+pkg_preinst() {
+	if has_version "<${CATEGORY}/${PN}-${PYVER}" && ! has_version ">=${CATEGORY}/${PN}-${PYVER}_alpha"; then
+		python_updater_warning="1"
+	fi
+}
+
+eselect_python_update() {
+	if [[ -z "$(eselect python show)" || \
+			! -f "${EROOT}/usr/bin/$(eselect python show)" ]]; then
+		eselect python update
+	fi
+
+	if [[ -z "$(eselect python show --python${PV%%.*})" || \
+			! -f "${EROOT}/usr/bin/$(eselect python show --python${PV%%.*})" ]]
+	then
+		eselect python update --python${PV%%.*}
+	fi
+}
+
+pkg_postinst() {
+	eselect_python_update
+
+	if [[ "${python_updater_warning}" == "1" ]]; then
+		ewarn "You have just upgraded from an older version of Python."
+		ewarn
+		ewarn "Please adjust PYTHON_TARGETS (if so desired), and run emerge with the --newuse or --changed-use option to rebuild packages installing python modules."
+	fi
+}
+
+pkg_postrm() {
+	eselect_python_update
+}
diff --git a/dev-lang/python/python-3.6.5-r5.ebuild b/dev-lang/python/python-3.6.5-r5.ebuild
deleted file mode 120000
index 3b4d52a..0000000
--- a/dev-lang/python/python-3.6.5-r5.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-python-3.6.5.ebuild
\ No newline at end of file
diff --git a/dev-lang/python/python-3.6.5.ebuild b/dev-lang/python/python-3.6.5.ebuild
deleted file mode 100644
index 8d4e4d8..0000000
--- a/dev-lang/python/python-3.6.5.ebuild
+++ /dev/null
@@ -1,374 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-WANT_LIBTOOL="none"
-
-inherit autotools flag-o-matic pax-utils python-utils-r1 toolchain-funcs
-
-MY_P="Python-${PV}"
-PATCHSET_VERSION="3.6.4"
-
-DESCRIPTION="An interpreted, interactive, object-oriented programming language"
-HOMEPAGE="https://www.python.org/"
-SRC_URI="https://www.python.org/ftp/python/${PV}/${MY_P}.tar.xz
-	https://dev.gentoo.org/~floppym/python/python-gentoo-patches-${PATCHSET_VERSION}.tar.xz"
-
-LICENSE="PSF-2"
-SLOT="3.6/3.6m"
-KEYWORDS="*"
-IUSE="build examples gdbm hardened ipv6 libressl +ncurses +readline sqlite +ssl test +threads tk wininst +xml"
-RESTRICT="!test? ( test )"
-
-# Do not add a dependency on dev-lang/python to this ebuild.
-# If you need to apply a patch which requires python for bootstrapping, please
-# run the bootstrap code on your dev box and include the results in the
-# patchset. See bug 447752.
-
-RDEPEND="app-arch/bzip2:0=
-	app-arch/xz-utils:0=
-	>=sys-libs/zlib-1.1.3:0=
-	virtual/libffi:=
-	virtual/libintl
-	gdbm? ( sys-libs/gdbm:0=[berkdb] )
-	ncurses? ( >=sys-libs/ncurses-5.2:0= )
-	readline? ( >=sys-libs/readline-4.1:0= )
-	sqlite? ( >=dev-db/sqlite-3.3.8:3= )
-	ssl? (
-		!libressl? ( dev-libs/openssl:0= )
-		libressl? ( dev-libs/libressl:0= )
-	)
-	tk? (
-		>=dev-lang/tcl-8.0:0=
-		>=dev-lang/tk-8.0:0=
-		dev-tcltk/blt:0=
-		dev-tcltk/tix
-	)
-	xml? ( >=dev-libs/expat-2.1:0= )
-	!!<sys-apps/sandbox-2.6-r1"
-DEPEND="${RDEPEND}
-	test? ( app-arch/xz-utils[extra-filters(+)] )
-	virtual/pkgconfig
-	!sys-devel/gcc[libffi(-)]"
-RDEPEND+=" !build? ( app-misc/mime-types )"
-PDEPEND=">=app-eselect/eselect-python-20140125-r1"
-
-S="${WORKDIR}/${MY_P}"
-PYVER=${SLOT%/*}
-
-src_prepare() {
-	# Ensure that internal copies of expat, libffi and zlib are not used.
-	rm -fr Modules/expat
-	rm -fr Modules/_ctypes/libffi*
-	rm -fr Modules/zlib
-
-	if tc-is-cross-compiler; then
-		# Invokes BUILDPYTHON, which is built for the host arch
-		local EPATCH_EXCLUDE="*_regenerate_platform-specific_modules.patch"
-	fi
-
-	EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" epatch "${WORKDIR}/patches"
-	epatch "${FILESDIR}/${PN}-3.5-distutils-OO-build.patch"
-	epatch "${FILESDIR}/3.6.5-disable-nis.patch"
-	epatch "${FILESDIR}/python-3.6.5-libressl-compatibility.patch"
-	epatch "${FILESDIR}/python-3.6.5-hash-unaligned.patch"
-
-	epatch_user
-
-	# START: Chromium OS
-	if tc-is-cross-compiler ; then
-		epatch "${FILESDIR}/python-3.6.5-cross-h2py.patch"
-		epatch "${FILESDIR}/python-3.6.5-cross-hack-compiler.patch"
-	fi
-	epatch "${FILESDIR}/python-3.6.5-cross-python-config.patch"
-	epatch "${FILESDIR}/python-3.6.5-cross-setup-sysroot.patch"
-	epatch "${FILESDIR}/python-3.6.5-cross-distutils.patch"
-	epatch "${FILESDIR}/python-3.6.5-cross-sysconfig.patch"
-	epatch "${FILESDIR}/python-3.6.5-ldshared.patch"
-	epatch "${FILESDIR}/python-3.6.5-system-libffi.patch"
-	epatch "${FILESDIR}/python-3.6.5-sigint-handler.patch"
-
-	# Undo the @libdir@ change for portage's pym folder as it is always
-	# installed into /usr/lib/ and not the abi libdir.
-	sed -i \
-		-e '/portage.*pym/s:@@GENTOO_LIBDIR@@:lib:g' \
-		Lib/site.py || die
-
-	sed -i -e "s:sys.exec_prefix]:sys.exec_prefix, '/usr/local']:g" \
-		Lib/site.py || die "sed failed to add /usr/local to prefixes"
-	# END: Chromium OS
-
-	sed -i -e "s:@@GENTOO_LIBDIR@@:$(get_libdir):g" \
-		Lib/distutils/command/install.py \
-		Lib/distutils/sysconfig.py \
-		Lib/site.py \
-		Lib/sysconfig.py \
-		Lib/test/test_site.py \
-		Makefile.pre.in \
-		Modules/Setup.dist \
-		Modules/getpath.c \
-		configure.ac \
-		setup.py || die "sed failed to replace @@GENTOO_LIBDIR@@"
-
-	eautoreconf
-}
-
-src_configure() {
-	local disable
-	use gdbm     || disable+=" gdbm"
-	use ncurses  || disable+=" _curses _curses_panel"
-	use readline || disable+=" readline"
-	use sqlite   || disable+=" _sqlite3"
-	use ssl      || export PYTHON_DISABLE_SSL="1"
-	use tk       || disable+=" _tkinter"
-	use xml      || disable+=" _elementtree pyexpat" # _elementtree uses pyexpat.
-	export PYTHON_DISABLE_MODULES="${disable}"
-
-	if ! use xml; then
-		ewarn "You have configured Python without XML support."
-		ewarn "This is NOT a recommended configuration as you"
-		ewarn "may face problems parsing any XML documents."
-	fi
-
-	if [[ -n "${PYTHON_DISABLE_MODULES}" ]]; then
-		einfo "Disabled modules: ${PYTHON_DISABLE_MODULES}"
-	fi
-
-	if [[ "$(gcc-major-version)" -ge 4 ]]; then
-		append-flags -fwrapv
-	fi
-
-	filter-flags -malign-double
-
-	# https://bugs.gentoo.org/show_bug.cgi?id=50309
-	if is-flagq -O3; then
-		is-flagq -fstack-protector-all && replace-flags -O3 -O2
-		use hardened && replace-flags -O3 -O2
-	fi
-
-	# Export CXX so it ends up in /usr/lib/python3.X/config/Makefile.
-	tc-export CXX
-
-	# Set LDFLAGS so we link modules with -lpython3.2 correctly.
-	# Needed on FreeBSD unless Python 3.2 is already installed.
-	# Please query BSD team before removing this!
-	append-ldflags "-L."
-
-	tc-export CC
-
-	local dbmliborder
-	if use gdbm; then
-		dbmliborder+="${dbmliborder:+:}gdbm"
-	fi
-
-	local myeconfargs=(
-		--with-fpectl
-		--enable-shared
-		$(use_enable ipv6)
-		$(use_with threads)
-		--infodir='${prefix}/share/info'
-		--mandir='${prefix}/share/man'
-		--with-computed-gotos
-		--with-dbmliborder="${dbmliborder}"
-		--with-libc=
-		--enable-loadable-sqlite-extensions
-		--without-ensurepip
-		--with-system-expat
-		--with-system-ffi
-	)
-
-	OPT="" econf "${myeconfargs[@]}"
-
-	if use threads && grep -q "#define POSIX_SEMAPHORES_NOT_ENABLED 1" pyconfig.h; then
-		eerror "configure has detected that the sem_open function is broken."
-		eerror "Please ensure that /dev/shm is mounted as a tmpfs with mode 1777."
-		die "Broken sem_open function (bug 496328)"
-	fi
-}
-
-src_compile() {
-	# Ensure sed works as expected
-	# https://bugs.gentoo.org/594768
-	local -x LC_ALL=C
-
-	emake CPPFLAGS= CFLAGS= LDFLAGS=
-
-	# Work around bug 329499. See also bug 413751 and 457194.
-	if has_version dev-libs/libffi[pax_kernel]; then
-		pax-mark E python
-	else
-		pax-mark m python
-	fi
-}
-
-src_test() {
-	# Tests will not work when cross compiling.
-	if tc-is-cross-compiler; then
-		elog "Disabling tests due to crosscompiling."
-		return
-	fi
-
-	# Skip failing tests.
-	local skipped_tests="gdb"
-
-	for test in ${skipped_tests}; do
-		mv "${S}"/Lib/test/test_${test}.py "${T}"
-	done
-
-	local -x PYTHONDONTWRITEBYTECODE=
-
-	emake test EXTRATESTOPTS="-u-network" CPPFLAGS= CFLAGS= LDFLAGS= < /dev/tty
-	local result=$?
-
-	for test in ${skipped_tests}; do
-		mv "${T}/test_${test}.py" "${S}"/Lib/test
-	done
-
-	elog "The following tests have been skipped:"
-	for test in ${skipped_tests}; do
-		elog "test_${test}.py"
-	done
-
-	elog "If you would like to run them, you may:"
-	elog "cd '${EPREFIX}/usr/$(get_libdir)/python${PYVER}/test'"
-	elog "and run the tests separately."
-
-	if [[ ${result} -ne 0 ]]; then
-		die "emake test failed"
-	fi
-}
-
-src_install() {
-	local libdir=${ED}/usr/$(get_libdir)/python${PYVER}
-
-	emake DESTDIR="${D}" altinstall
-
-	sed \
-		-e "s/\(CONFIGURE_LDFLAGS=\).*/\1/" \
-		-e "s/\(PY_LDFLAGS=\).*/\1/" \
-		-i "${libdir}/config-${PYVER}"*/Makefile || die "sed failed"
-
-	# Fix collisions between different slots of Python.
-	rm -f "${ED}usr/$(get_libdir)/libpython3.so"
-
-	# Cheap hack to get version with ABIFLAGS
-	local abiver=$(cd "${ED}usr/include"; echo python*)
-	if [[ ${abiver} != python${PYVER} ]]; then
-		# Replace python3.X with a symlink to python3.Xm
-		rm "${ED}usr/bin/python${PYVER}" || die
-		dosym "${abiver}" "/usr/bin/python${PYVER}"
-		# Create python3.X-config symlink
-		dosym "${abiver}-config" "/usr/bin/python${PYVER}-config"
-		# Create python-3.5m.pc symlink
-		dosym "python-${PYVER}.pc" "/usr/$(get_libdir)/pkgconfig/${abiver/${PYVER}/-${PYVER}}.pc"
-	fi
-
-	# python seems to get rebuilt in src_install (bug 569908)
-	# Work around it for now.
-	if has_version dev-libs/libffi[pax_kernel]; then
-		pax-mark E "${ED}usr/bin/${abiver}"
-	else
-		pax-mark m "${ED}usr/bin/${abiver}"
-	fi
-
-	use sqlite || rm -r "${libdir}/"{sqlite3,test/test_sqlite*} || die
-	use tk || rm -r "${ED}usr/bin/idle${PYVER}" "${libdir}/"{idlelib,tkinter,test/test_tk*} || die
-
-	use threads || rm -r "${libdir}/multiprocessing" || die
-	use wininst || rm "${libdir}/distutils/command/"wininst-*.exe || die
-
-	dodoc "${S}"/Misc/{ACKS,HISTORY,NEWS}
-
-	if use examples; then
-		insinto /usr/share/doc/${PF}/examples
-		find "${S}"/Tools -name __pycache__ -print0 | xargs -0 rm -fr
-		doins -r "${S}"/Tools
-	fi
-	insinto /usr/share/gdb/auto-load/usr/$(get_libdir) #443510
-	local libname=$(printf 'e:\n\t@echo $(INSTSONAME)\ninclude Makefile\n' | \
-		emake --no-print-directory -s -f - 2>/dev/null)
-	newins "${S}"/Tools/gdb/libpython.py "${libname}"-gdb.py
-
-	newconfd "${FILESDIR}/pydoc.conf" pydoc-${PYVER}
-	newinitd "${FILESDIR}/pydoc.init" pydoc-${PYVER}
-	sed \
-		-e "s:@PYDOC_PORT_VARIABLE@:PYDOC${PYVER/./_}_PORT:" \
-		-e "s:@PYDOC@:pydoc${PYVER}:" \
-		-i "${ED}etc/conf.d/pydoc-${PYVER}" "${ED}etc/init.d/pydoc-${PYVER}" || die "sed failed"
-
-	# for python-exec
-	local vars=( EPYTHON PYTHON_SITEDIR PYTHON_SCRIPTDIR )
-
-	# if not using a cross-compiler, use the fresh binary
-	if ! tc-is-cross-compiler; then
-		local -x PYTHON=./python
-		local -x LD_LIBRARY_PATH=${LD_LIBRARY_PATH+${LD_LIBRARY_PATH}:}${PWD}
-	else
-		vars=( PYTHON "${vars[@]}" )
-	fi
-
-	python_export "python${PYVER}" "${vars[@]}"
-	echo "EPYTHON='${EPYTHON}'" > epython.py || die
-	python_domodule epython.py
-
-	# python-exec wrapping support
-	local pymajor=${PYVER%.*}
-	mkdir -p "${D}${PYTHON_SCRIPTDIR}" || die
-	# python and pythonX
-	ln -s "../../../bin/${abiver}" \
-		"${D}${PYTHON_SCRIPTDIR}/python${pymajor}" || die
-	ln -s "python${pymajor}" \
-		"${D}${PYTHON_SCRIPTDIR}/python" || die
-	# python-config and pythonX-config
-	# note: we need to create a wrapper rather than symlinking it due
-	# to some random dirname(argv[0]) magic performed by python-config
-	cat > "${D}${PYTHON_SCRIPTDIR}/python${pymajor}-config" <<-EOF || die
-		#!/bin/sh
-		exec "${abiver}-config" "\${@}"
-	EOF
-	chmod +x "${D}${PYTHON_SCRIPTDIR}/python${pymajor}-config" || die
-	ln -s "python${pymajor}-config" \
-		"${D}${PYTHON_SCRIPTDIR}/python-config" || die
-	# 2to3, pydoc, pyvenv
-	ln -s "../../../bin/2to3-${PYVER}" \
-		"${D}${PYTHON_SCRIPTDIR}/2to3" || die
-	ln -s "../../../bin/pydoc${PYVER}" \
-		"${D}${PYTHON_SCRIPTDIR}/pydoc" || die
-	ln -s "../../../bin/pyvenv-${PYVER}" \
-		"${D}${PYTHON_SCRIPTDIR}/pyvenv" || die
-	# idle
-	if use tk; then
-		ln -s "../../../bin/idle${PYVER}" \
-			"${D}${PYTHON_SCRIPTDIR}/idle" || die
-	fi
-}
-
-pkg_preinst() {
-	if has_version "<${CATEGORY}/${PN}-${PYVER}" && ! has_version ">=${CATEGORY}/${PN}-${PYVER}_alpha"; then
-		python_updater_warning="1"
-	fi
-}
-
-eselect_python_update() {
-	if [[ -z "$(eselect python show)" || ! -f "${EROOT}usr/bin/$(eselect python show)" ]]; then
-		eselect python update
-	fi
-
-	if [[ -z "$(eselect python show --python${PV%%.*})" || ! -f "${EROOT}usr/bin/$(eselect python show --python${PV%%.*})" ]]; then
-		eselect python update --python${PV%%.*}
-	fi
-}
-
-pkg_postinst() {
-	eselect_python_update
-
-	if [[ "${python_updater_warning}" == "1" ]]; then
-		ewarn "You have just upgraded from an older version of Python."
-		ewarn
-		ewarn "Please adjust PYTHON_TARGETS (if so desired), and run emerge with the --newuse or --changed-use option to rebuild packages installing python modules."
-	fi
-}
-
-pkg_postrm() {
-	eselect_python_update
-}
diff --git a/dev-lang/rust-bootstrap/Manifest b/dev-lang/rust-bootstrap/Manifest
index 9bacf7c..c657174 100644
--- a/dev-lang/rust-bootstrap/Manifest
+++ b/dev-lang/rust-bootstrap/Manifest
@@ -1,5 +1,9 @@
 DIST mrustc-0.9.tar.gz 905308 BLAKE2B 4e8829bce1d6a26028a4d8fb8373988e41989aaef4bdd21b3fcca1aee6f72d301b510ae4458502fc1be06c35601362ac5e23aeedfd0c099dd0d5414015f55c2a SHA512 7cefc6c1a4a6757b1b6351332fa2a71ea1eda0060d2d884f9e821fb17856f3ac26bdba7bde13e2c18bba9e243e5a599316e148479c3384d7899bc5223e9d5589
 DIST rust-bootstrap-1.45.2.tbz2 446514184 BLAKE2B 3b2f39e7d7328b32ff05cd21b6c36368abc1fc68d4600fe59585a1a3c2129e97b178345287e85256a01910e3d275d7b86bd8bff8aa7be30cdb42770608c55de7 SHA512 0f523c9b2704ddd1cb161a54ea8bf7436da690013684dd7a0bf164cfbad19c942540b90f936682038d8d96065afe68838279803ce75a76c85e0b26c5fd392cfd
+DIST rust-bootstrap-1.46.0.tbz2 262950544 BLAKE2B 65d408d9cc206b04e0a72518f58be522eda2bf9527ba22a9acb1978c38fc572dacae8454a05df12d966f140874044bd7f30e7803e9a718df0050f67c6e5804f7 SHA512 78b1171e197d23c8ba7710aefc2420a91c79cf1c2b7ae27b5fe111a44829a899e8d8cc2c4ca203ce8340f1cf7f1b010249096390ac203d8253ae9ceff41f5db0
+DIST rust-bootstrap-1.47.0.tbz2 300446602 BLAKE2B 25f792d884ecdc6be89dff6a12d88c84d2b666bedab4f59ef315744be628d6e4ccfc549e4e40cba9dc5398d8cde9ba0ac37f96d5f255de1bdd0151450f904938 SHA512 11092d168c43210f3f86f24ea608974c04cca78c826cfd0ca0977d4fe783cb6955b77bcd370dab9714fe4a35b8ad6edad6eba6f024729a5d95c04c5b611dd505
+DIST rust-bootstrap-1.48.0.tbz2 266136479 BLAKE2B 6c75bf687d4c6d0080b3eae3477e76bc4256b606bd948006846758f364bc4e2aae7c71d5074ce49f0e858b91d1e57d011574bebf79e2886ddc3d8dad29e44052 SHA512 53218efc62cfc73a8e84a24d66fb67c5c8fcfd2f49b0fef28a8145088c567fe2785030899e5d30531b1065ce28dd7368af85608cc6bd0e1f48d1a81f18cf6a7a
+DIST rust-bootstrap-1.49.0.tbz2 269994249 BLAKE2B e4cef89fc83f4547284c5519a8a86d925827b09edb13b4324ae361577df6411e6f230259105560496dab732ddc33314adb6d4ec9b2e997f7fa0b8da327734090 SHA512 71a0de177ca852070e3f652e1ef87e44d2cde272dae3bcd9d8a733a53b4900c6731eb62d9136bd1c010aa06c30eddf2bb61fa4c2c088ba1c61db0c3c227583ed
 DIST rustc-1.29.0-src.tar.gz 106092915 BLAKE2B 520bbbc49b130229e24a130cb7626184c9c06dfa07b50366d602e76e0005db2f996e7fc0da23de19e67783286caffaf4cb4ef830179f8e42efda1fed1542b248 SHA512 3c6b79cce5a42553bc4360591c6e6b42b36f035243b8cb688a0d4b08c10793e59d257bf9e781c9345c92f765a63a9e161e3e3346f02ddc733e4b401cb5aeb302
 DIST rustc-1.30.0-src.tar.gz 149490609 BLAKE2B 7b9403e40573b7bef82b850ed63a80fb75fed8839761de6da3a518584d2175ec681fb22b47b9a4bcd6fb7069c75e21821fc8fe1e9458f9e5c25ed7a56a553517 SHA512 a4737727818397a26974449e9e7ddc09ae7430a08102ae05729317b19675fa89ad82a8f5bc5b7c913d894866a30dfe3c539c80e29c2b0ade6ecde06db8216981
 DIST rustc-1.31.1-src.tar.gz 151163848 BLAKE2B 4d5712a4c85b49167577ecf5191792d9f437780c2c5dfecdb2582c5e49cfec8f6e6a92664e96a7fd552003eec9c2d6a9042ca1d17d9ba7dd00c6f5bfd74098a0 SHA512 76ca238c40694abab4982f4b788a0da34bbb3d8a6e4adb50b0b9138876407ac2cb4fc39cde057b8fa32729c543c5977d392167e96b82f76a01af31eaafe463cf
@@ -18,3 +22,7 @@
 DIST rustc-1.44.1-src.tar.gz 136760887 BLAKE2B 0aa9a7cccefc3283c8ee51d214390de01083d97daaaf218013c6f4bcfcdeb25157e6f6afa5365d3db4121022c5cc3bec98c26f656025697da390ba5151cf26e8 SHA512 f6b719a2a63aa96a192a098f58ff1042251cee96a1ff742ecb09d5b88fe5be79bc7023f118e0a6c0d46aa1c819ff77274ab669668f8e53efa4eb5e3041227928
 DIST rustc-1.45.2-src.tar.gz 141671717 BLAKE2B 703d8208fef22acfd232626ad2ea661408745e604a8844eb5a6971e34bf065cd8eb52da43f7a193ae1a4788e6617801f64884b3f0f6c2ca1e4ab1533b4c6d460 SHA512 5996f899d3677dd73487561d95b0bee6d6e33f7087f40806fa8176d685de9e6d42974344c855402a9fc634c0e91e0df6e33fcb3194b3e4296e1a1cb49defb98e
 DIST rustc-1.46.0-src.tar.gz 149449054 BLAKE2B de01c934b795c01955e665fb9be815bfd75471921c3839f89954e8e91c335dc988a943025cdedde26b988e898d944776848e3869c06de78e34da8f1cb825400e SHA512 5c50f449930473577b1ffb5791e6a688394821b368873f788a7d6c984055500a01897523930b763a454982f31d0a2fd4e87dfe5c416dd83ec9c844017e92b98e
+DIST rustc-1.47.0-src.tar.gz 151861620 BLAKE2B 8fef2e63ac98b44f4a74ad68c7225851d7f382aca573f9e0cab89131eea38c1f1b38c8cc267856cd2fe401621af8f7cc53fa24281365a535b0d70b32463adcb0 SHA512 a6df9e2d599806eeddbfb35f7dea976781533f63d369a765b8a304221281c9f9e642ff952978f69eaaa0b28740ab5ea566b35ce481097c37fd5117bfec1f43dd
+DIST rustc-1.48.0-src.tar.gz 154487032 BLAKE2B 64a40068036516c887daabf75c31ca6fbca214c5e5b77cc9eb9b5242337309679906e2c8a3b06e52afb5a6df7b1670bc8c6b9e79f9239564131124cf3fe53596 SHA512 e28e5f0813cfd94fb92399a2d64aa19bdf0933b5fc768ea10da2a5b787c94bac6a5efb98b2c3702da3d1c46c6766b157df3727e5845b4b83a237b44ec45b27ba
+DIST rustc-1.49.0-src.tar.gz 157809463 BLAKE2B 85095e26455b54d6d542d4a460ff0acae0e09007fc7493f58a5abe0d98fab9361f41bfb2fad4bc6d3d4365852ab30d93adb31ed1799257baf57440299f22f455 SHA512 033aa9fb9b9a79055ee075c33c27ae40defe7430972057a6477829070b5f54f8fc5082d36f5c751a2fb4cdfcf0d83db7b879dee15a8c4229b517295d6b7b6896
+DIST rustc-1.50.0-src.tar.gz 159542148 BLAKE2B 76d4fd31643d996931b9b387a258bb47799910f448d099f43590e5c3f87be8ddff4752b4a2323e7ac7bf9c3210cddbc2190482ad5f0ece5a1ad28a941dedcc80 SHA512 30a8a64379427901fe9a23044897456f26e7f7ab146400464feeb663aeff7539c98d78ecbd6a446535a86c8740a6ece9edf19807dc28795b832a988722fe7990
diff --git a/dev-lang/rust-bootstrap/OWNERS b/dev-lang/rust-bootstrap/OWNERS
new file mode 120000
index 0000000..d6925ae
--- /dev/null
+++ b/dev-lang/rust-bootstrap/OWNERS
@@ -0,0 +1 @@
+../rust/OWNERS
\ No newline at end of file
diff --git a/dev-lang/rust-bootstrap/files/rust-bootstrap-1.48.0-libc++.patch b/dev-lang/rust-bootstrap/files/rust-bootstrap-1.48.0-libc++.patch
new file mode 100644
index 0000000..9467137
--- /dev/null
+++ b/dev-lang/rust-bootstrap/files/rust-bootstrap-1.48.0-libc++.patch
@@ -0,0 +1,15 @@
+Link with libc++ instead of libstdc++. This avoids undefined reference to std::__1 errors.
+
+diff --git a/rustc-1.29.0-src/compiler/rustc_llvm/build.rs b/rustc-1.29.0-src/compiler/rustc_llvm/build.rs
+index 1619637..6ec0f83 100644
+--- a/rustc-1.29.0-src/compiler/rustc_llvm/build.rs
++++ b/rustc-1.29.0-src/compiler/rustc_llvm/build.rs
+@@ -248,7 +248,7 @@ fn main() {
+         // NetBSD uses a separate library when relocation is required
+         "stdc++_pic"
+     } else {
+-        "stdc++"
++        "c++"
+     };
+ 
+     // C++ runtime library
diff --git a/dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-8ddb05-invalid-output-constraint.patch b/dev-lang/rust-bootstrap/files/rust-bootstrap-8ddb05-invalid-output-constraint.patch
similarity index 100%
rename from dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-8ddb05-invalid-output-constraint.patch
rename to dev-lang/rust-bootstrap/files/rust-bootstrap-8ddb05-invalid-output-constraint.patch
diff --git a/dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-cc.patch b/dev-lang/rust-bootstrap/files/rust-bootstrap-cc.patch
similarity index 100%
rename from dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-cc.patch
rename to dev-lang/rust-bootstrap/files/rust-bootstrap-cc.patch
diff --git a/dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-compilation-fixes.patch b/dev-lang/rust-bootstrap/files/rust-bootstrap-compilation-fixes.patch
similarity index 100%
rename from dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-compilation-fixes.patch
rename to dev-lang/rust-bootstrap/files/rust-bootstrap-compilation-fixes.patch
diff --git a/dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-libc++.patch b/dev-lang/rust-bootstrap/files/rust-bootstrap-libc++.patch
similarity index 100%
rename from dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-libc++.patch
rename to dev-lang/rust-bootstrap/files/rust-bootstrap-libc++.patch
diff --git a/dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-libgit2-sys-pkg-config.patch b/dev-lang/rust-bootstrap/files/rust-bootstrap-libgit2-sys-pkg-config.patch
similarity index 100%
rename from dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-libgit2-sys-pkg-config.patch
rename to dev-lang/rust-bootstrap/files/rust-bootstrap-libgit2-sys-pkg-config.patch
diff --git a/dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-no-curl.patch b/dev-lang/rust-bootstrap/files/rust-bootstrap-no-curl.patch
similarity index 100%
rename from dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-no-curl.patch
rename to dev-lang/rust-bootstrap/files/rust-bootstrap-no-curl.patch
diff --git a/dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-printf.patch b/dev-lang/rust-bootstrap/files/rust-bootstrap-printf.patch
similarity index 100%
rename from dev-lang/rust-bootstrap/files/rust-bootstrap-1.46.0-printf.patch
rename to dev-lang/rust-bootstrap/files/rust-bootstrap-printf.patch
diff --git a/dev-lang/rust-bootstrap/rust-bootstrap-1.46.0.ebuild b/dev-lang/rust-bootstrap/rust-bootstrap-1.46.0.ebuild
index 11c02ba..5fae2bd 100644
--- a/dev-lang/rust-bootstrap/rust-bootstrap-1.46.0.ebuild
+++ b/dev-lang/rust-bootstrap/rust-bootstrap-1.46.0.ebuild
@@ -77,13 +77,13 @@
 	if use fullbootstrap; then
 		RUSTC_VERSION_SEQUENCE=( "${RUSTC_FULL_BOOTSTRAP_SEQUENCE[@]}" )
 		PATCHES=(
-			"${FILESDIR}/${P}-no-curl.patch"
-			"${FILESDIR}/${P}-compilation-fixes.patch"
-			"${FILESDIR}/${P}-8ddb05-invalid-output-constraint.patch"
-			"${FILESDIR}/${P}-libgit2-sys-pkg-config.patch"
-			"${FILESDIR}/${P}-cc.patch"
-			"${FILESDIR}/${P}-printf.patch"
-			"${FILESDIR}/${P}-libc++.patch"
+			"${FILESDIR}/${PN}-no-curl.patch"
+			"${FILESDIR}/${PN}-compilation-fixes.patch"
+			"${FILESDIR}/${PN}-8ddb05-invalid-output-constraint.patch"
+			"${FILESDIR}/${PN}-libgit2-sys-pkg-config.patch"
+			"${FILESDIR}/${PN}-cc.patch"
+			"${FILESDIR}/${PN}-printf.patch"
+			"${FILESDIR}/${PN}-libc++.patch"
 		)
 		S="${WORKDIR}/${MRUSTC_NAME}"
 	else
@@ -125,7 +125,7 @@
 	local version
 	for version in "${RUSTC_VERSION_SEQUENCE[@]}"; do
 		einfo "Patching rustc-${version}"
-		(cd "${WORKDIR}/rustc-${version}-src" || die; eapply -p2 "${FILESDIR}/${P}-libc++.patch")
+		(cd "${WORKDIR}/rustc-${version}-src" || die; eapply -p2 "${FILESDIR}/${PN}-libc++.patch")
 	done
 }
 
diff --git a/dev-lang/rust-bootstrap/rust-bootstrap-1.50.0.ebuild b/dev-lang/rust-bootstrap/rust-bootstrap-1.50.0.ebuild
new file mode 100644
index 0000000..18eab22
--- /dev/null
+++ b/dev-lang/rust-bootstrap/rust-bootstrap-1.50.0.ebuild
@@ -0,0 +1,254 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# Bootstraps rustc (the official Rust compiler) using mrustc (a Rust
+# compiler written in C++).
+#
+# The version of this ebuild reflects the version of rustc that will
+# ultimately be installed.
+#
+# This ebuild can be used in two modes, controlled by the fullbootstrap
+# USE flag:
+#
+# fullbootstrap: Build everything from source. This can take over
+#   10 hours.
+#
+# -fullbootstrap: Start with a prebuilt from an earlier rust-bootstrap
+#   and build only versions after that from source.
+#
+# The default is -fullbootstrap, so that you only get the 10+ hour build
+# time if you explicitly request it.
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="Bootstraps the rustc Rust compiler using mrustc"
+HOMEPAGE="https://github.com/thepowersgang/mrustc"
+MRUSTC_VERSION="0.9"
+MRUSTC_NAME="mrustc-${MRUSTC_VERSION}"
+
+SLOT="${PV}"
+KEYWORDS="*"
+IUSE="-fullbootstrap"
+
+INITIAL_RUSTC_VERSION="1.29.0"
+# Versions of rustc to build after the initial one.
+RUSTC_RAW_FULL_BOOTSTRAP_SEQUENCE=(
+	1.30.0
+	1.31.1
+	1.32.0
+	1.33.0
+	1.34.2
+	1.35.0
+	1.36.0
+	1.37.0
+	1.38.0
+	1.39.0
+	1.40.0
+	1.41.1
+	1.42.0
+	1.43.1
+	1.44.1
+	1.45.2
+	1.46.0
+	1.47.0
+	1.48.0
+	1.49.0
+)
+
+RUSTC_FULL_BOOTSTRAP_SEQUENCE=()
+
+for version in "${RUSTC_RAW_FULL_BOOTSTRAP_SEQUENCE[@]}"; do
+	if [[ ! "${PV}" > "${version}" ]]; then
+		break
+	fi
+	RUSTC_FULL_BOOTSTRAP_SEQUENCE+=( "${version}" )
+done
+
+# When not using fullbootstrap, use this version as a starting point.
+PREBUILT_VERSION="${RUSTC_FULL_BOOTSTRAP_SEQUENCE[-1]}"
+SRC_URI="gs://chromeos-localmirror/distfiles/rustc-${PV}-src.tar.gz
+	!fullbootstrap? ( gs://chromeos-localmirror/distfiles/rust-bootstrap-${PREBUILT_VERSION}.tbz2 )
+	fullbootstrap? ( gs://chromeos-localmirror/distfiles/${MRUSTC_NAME}.tar.gz )
+	fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-${INITIAL_RUSTC_VERSION}-src.tar.gz )"
+for version in "${RUSTC_FULL_BOOTSTRAP_SEQUENCE[@]}"; do
+	SRC_URI+=" fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-${version}-src.tar.gz )"
+done
+
+LICENSE="MIT Apache-2.0 BSD-1 BSD-2 BSD-4 UoI-NCSA"
+
+DEPEND="dev-libs/openssl
+	net-libs/libssh2"
+RDEPEND="${DEPEND}"
+
+# These tasks take a long time to run for not much benefit: Most of the files
+# they check are never installed. Those that are are only there to bootstrap
+# the rust ebuild, which has the same RESTRICT anyway.
+RESTRICT="binchecks strip"
+
+pkg_setup() {
+	if use fullbootstrap; then
+		RUSTC_VERSION_SEQUENCE=( "${RUSTC_FULL_BOOTSTRAP_SEQUENCE[@]}" )
+		PATCHES=(
+			"${FILESDIR}/${PN}-no-curl.patch"
+			"${FILESDIR}/${PN}-compilation-fixes.patch"
+			"${FILESDIR}/${PN}-8ddb05-invalid-output-constraint.patch"
+			"${FILESDIR}/${PN}-libgit2-sys-pkg-config.patch"
+			"${FILESDIR}/${PN}-cc.patch"
+			"${FILESDIR}/${PN}-printf.patch"
+			"${FILESDIR}/${PN}-1.48.0-libc++.patch"
+		)
+		S="${WORKDIR}/${MRUSTC_NAME}"
+	else
+		RUSTC_VERSION_SEQUENCE=( )
+		# We manually apply patches to rustcs in the version sequence,
+		# so that we can pass the necessary -p value. To prevent
+		# default from trying and failing to apply patches, we set
+		# PATCHES to empty.
+		PATCHES=( )
+		S="${WORKDIR}/rustc-${PV}-src"
+	fi
+	RUSTC_VERSION_SEQUENCE+=( ${PV} )
+}
+
+src_unpack() {
+	default
+	if use fullbootstrap; then
+		# Move rustc sources to where mrustc expects them.
+		mv "${WORKDIR}/rustc-${INITIAL_RUSTC_VERSION}-src" "${S}" || die
+	fi
+}
+
+src_prepare() {
+	# Call the default implementation. This applies PATCHES.
+	default
+
+	if use fullbootstrap; then
+
+		# The next few steps mirror what mrustc's Makefile does to configure the
+		# build for a specific rustc version.
+		(cd "rustc-${INITIAL_RUSTC_VERSION}-src" || die; eapply -p0 "${S}/rustc-${INITIAL_RUSTC_VERSION}-src.patch")
+		cd "${S}" || die
+		echo "${INITIAL_RUSTC_VERSION}" > "rust-version" || die
+		cp "rust-version" "rustc-${INITIAL_RUSTC_VERSION}-src/dl-version" || die
+	fi
+
+	# There are some patches that need to be applied to the rustc versions
+	# we build with rustc. Apply them here.
+	local version
+	for version in "${RUSTC_VERSION_SEQUENCE[@]}"; do
+		einfo "Patching rustc-${version}"
+		local libc_patch="${FILESDIR}/${PN}-1.48.0-libc++.patch"
+		if [[ "${version}" < "1.48.0" ]]; then
+			libc_patch="${FILESDIR}/${PN}-libc++.patch"
+		fi
+		(cd "${WORKDIR}/rustc-${version}-src" || die; eapply -p2 "${libc_patch}")
+	done
+}
+
+src_configure() {
+	# Avoid the default implementation, which overwrites vendored
+	# config.guess and config.sub files, which then causes checksum
+	# errors during the build, e.g.
+	# error: the listed checksum of `/var/tmp/portage/dev-lang/rust-bootstrap-1.46.0/work/rustc-1.46.0-src/vendor/backtrace-sys/src/libbacktrace/config.guess` has changed:
+	# expected: 12e217c83267f1ff4bad5d9b2b847032d91e89ec957deb34ec8cb5cef00eba1e
+	# actual:   312ea023101dc1de54aa8c50ed0e82cb9c47276316033475ea403cb86fe88ffe
+	# (The dev-lang/rust ebuilds in Chrome OS and Gentoo also have custom
+	# src_configure implementations.)
+	true
+}
+
+src_compile() {
+	# 1. Build initial rustc using mrustc
+	# -----------------------------------
+	#
+	# All of these specify:
+	#  - CC and CXX so that we build with Clang instead of a GCC version that defaults to pre-C99 C.
+	#  - LLVM_TARGETS, else it will be empty and rustc will not work.
+	#  - RUSTC_VERSION because the Makefiles will otherwise set it to an incorrect value.
+	#  - OPENSSL_DIR so that cargo knows where to look for OpenSSL headers.
+	export CC=$(tc-getBUILD_CC)
+	export CXX=$(tc-getBUILD_CXX)
+	export PKG_CONFIG=$(tc-getBUILD_PKG_CONFIG)
+	export OPENSSL_DIR="${ESYSROOT}/usr"
+	# Only actually build mrustc when using fullbootstrap.
+	if use fullbootstrap; then
+		# Two separate commands, because invoking just the second command leads to race
+		# conditions.
+		emake LLVM_TARGETS=X86 RUSTC_VERSION=${INITIAL_RUSTC_VERSION} output/rustc output/cargo
+		emake LLVM_TARGETS=X86 RUSTC_VERSION=${INITIAL_RUSTC_VERSION} -C run_rustc
+	fi
+
+	# 2. Build successive versions of rustc using previous rustc
+	# ----------------------------------------------------------
+	if use fullbootstrap; then
+		local prev_version=${INITIAL_RUSTC_VERSION}
+		local prev_cargo="${S}/run_rustc/output/prefix/bin/cargo"
+		local prev_rustc="${S}/run_rustc/output/prefix/bin/rustc"
+	else
+		local prev_version=${PREBUILT_VERSION}
+		local prev_cargo="${WORKDIR}/opt/rust-bootstrap-${PREBUILT_VERSION}/bin/cargo"
+		local prev_rustc="${WORKDIR}/opt/rust-bootstrap-${PREBUILT_VERSION}/bin/rustc"
+	fi
+	local next_version rustc_dir
+	for next_version in "${RUSTC_VERSION_SEQUENCE[@]}"; do
+		einfo "Building rustc-${next_version} using rustc-${prev_version}"
+		rustc_dir="${WORKDIR}/rustc-${next_version}-src"
+		cd "${rustc_dir}" || die "Could not chdir to ${rustc_dir}"
+		cat > config.toml <<EOF
+[build]
+cargo = "${prev_cargo}"
+rustc = "${prev_rustc}"
+docs = false
+vendor = true
+# extended means we also build cargo and a few other commands.
+extended = true
+
+[install]
+prefix = "${ED}/opt/rust-bootstrap-${next_version}"
+
+[rust]
+default-linker = "${CC}"
+
+[target.x86_64-unknown-linux-gnu]
+cc = "${CC}"
+cxx = "${CXX}"
+linker = "${CC}"
+EOF
+
+		# --stage 2 causes this to use the previously-built compiler,
+		# instead of the default behavior of downloading one from
+		# upstream.
+		./x.py --stage 2 build || die
+		# For some rustc versions (e.g. 1.31.1), the build script will exit with
+		# a nonzero exit status because miri fails to build when it is not in a git
+		# repository. This does not affect the ability to build the next rustc.
+		# So instead of looking at the exit code, we check if rustc and cargo
+		# were built.
+		prev_version=${next_version}
+		prev_cargo="${rustc_dir}/build/x86_64-unknown-linux-gnu/stage2-tools/x86_64-unknown-linux-gnu/release/cargo"
+		prev_rustc="${rustc_dir}/build/x86_64-unknown-linux-gnu/stage2/bin/rustc"
+		[[ -x "${prev_rustc}" ]] || die "Failed to build ${prev_rustc}"
+		[[ -x "${prev_cargo}" ]] || die "Failed to build ${prev_cargo}"
+		einfo "Built rustc-${next_version}"
+	done
+
+	# Remove the src/rust symlink which will be dangling after sources are
+	# removed, and the containing src directory.
+	rm "${WORKDIR}/rustc-${PV}-src/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/src/rust" || die
+	rmdir "${WORKDIR}/rustc-${PV}-src/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/src" || die
+}
+
+src_install() {
+	local obj="${WORKDIR}/rustc-${PV}-src/build/x86_64-unknown-linux-gnu/stage2"
+	local tools="${obj}-tools/x86_64-unknown-linux-gnu/release/"
+	exeinto "/opt/${P}/bin"
+	# With rustc-1.45.2 at least, regardless of the value of install.libdir,
+	# the rpath seems to end up as $ORIGIN/../lib. So install the libraries there.
+	insinto "/opt/${P}/lib"
+	doexe "${obj}/bin/rustc"
+	doexe "${tools}/cargo"
+	doins -r "${obj}/lib/"*
+	find "${D}" -name '*.so' -exec chmod +x '{}' ';'
+}
diff --git a/dev-lang/rust/Manifest b/dev-lang/rust/Manifest
index e146dca..68c58cb 100644
--- a/dev-lang/rust/Manifest
+++ b/dev-lang/rust/Manifest
@@ -1,8 +1,2 @@
-DIST cargo-0.46.1-x86_64-unknown-linux-gnu.tar.gz 7235571 BLAKE2B 6d0b64055dd7aa846b7581ab35f4071d30f2bf6e5be838bce4e31e9d42cf89c09ff118277eb6feadad5a168fe7b0460201ccc47fbc4f10bab272d761272bff83 SHA512 edddda8921e4bdcc7a27250f9e6f20f884ec6af9089f6b0f72d7793136d42e430b777e34b285e42d25b70c4374ec8b3db74baadba1283123c0a73a8b42c93e8d
-DIST cargo-0.47.0-x86_64-unknown-linux-gnu.tar.gz 7236297 BLAKE2B a1f11eb5433cd50fcc06df7e8bd54ac2d630f4e1032acd0509d07be48f9174333a9a4f74dbb8d88e41389bc3c787073a7d40e37deaf1a2595a4155bd8ee153cc SHA512 182aad22ac4115839c4356e12997effd6dd67958637e85a6be431d359658a1d702e1083ca49605610592cbd7bd7069dddcaf37ba9afb23baac3a51156ce9ebe4
-DIST rust-std-1.45.2-x86_64-unknown-linux-gnu.tar.gz 26069244 BLAKE2B ae1344ac16f8f9edf8a2e20cf5ea9187c4db79575b6f42b887bfb382f4f5a21e09874a4d322c69a533aff4cb25097e0e19b339d2e1059274d73564714c6e8a77 SHA512 2d0ad09a0c0d1052e59ba29bdc9c0e3e5de0ba38099ecb838923fc75ac124b36066e4c5b9e45f2f373678f38cdd8367eb41d6058186be0b2d8387806e3c1c293
-DIST rust-std-1.46.0-x86_64-unknown-linux-gnu.tar.gz 26310833 BLAKE2B ffcb43b4e1372603c24307461dd7ed5fe9fc06a9f55397350dcbb93c1e838d8855c209e07a205424170bd77795db1d14f20c45d11861e7150cad8f55ac82d901 SHA512 0291f64bb01ca02dbfa8e25c23ff1c90ffc431e8455244e366bc1e88ce3db9ff5de452f744692b5bb3e9c34c50308fe11997737566f378ec3c09ac4345889c8a
-DIST rustc-1.45.2-x86_64-unknown-linux-gnu.tar.gz 73910606 BLAKE2B 4214f11668aca46e4262e459bea75bd95c770c3188ef48e756af03ee6d7a9d0e711a4f0d63de766b9bc8ab3e9e503d75a13f119d28ea7d714c63bdf89d5a7808 SHA512 34e96e7da38e1eec503507a26d4d75d38ef4a6d9dad03afe771d9fd7a79c8dfe430a503101ca311476d2aa260dbd7e984c631fb55ecc6004422962593d57fea6
-DIST rustc-1.46.0-src.tar.gz 149449054 BLAKE2B de01c934b795c01955e665fb9be815bfd75471921c3839f89954e8e91c335dc988a943025cdedde26b988e898d944776848e3869c06de78e34da8f1cb825400e SHA512 5c50f449930473577b1ffb5791e6a688394821b368873f788a7d6c984055500a01897523930b763a454982f31d0a2fd4e87dfe5c416dd83ec9c844017e92b98e
-DIST rustc-1.46.0-x86_64-unknown-linux-gnu.tar.gz 76990308 BLAKE2B 6680f68c27d4ec8d961b3187fa47289129a1598b3f0ca1bdd40c0fde114ae65c596ea0f1a29f3d76317ce0ad4d45da9ef45de5cc6cc9feb10b3be4e08907601d SHA512 fb214be2f1008955d5722eb85189d733574326e4d43e3d701d3f58235a6ce82fdcfd6aa7f5d7101003ebf29589a8854cba280051298b7c63e19a08f459567ce3
 DIST rustc-1.47.0-src.tar.gz 151861620 BLAKE2B 8fef2e63ac98b44f4a74ad68c7225851d7f382aca573f9e0cab89131eea38c1f1b38c8cc267856cd2fe401621af8f7cc53fa24281365a535b0d70b32463adcb0 SHA512 a6df9e2d599806eeddbfb35f7dea976781533f63d369a765b8a304221281c9f9e642ff952978f69eaaa0b28740ab5ea566b35ce481097c37fd5117bfec1f43dd
+DIST rustc-1.51.0-src.tar.gz 160954811 BLAKE2B 062ae11bedac9aa0d242546c829e4e6704fb99a9fdf72d1a1890893e180f970443870ab945946d2a804a3677dfcc6a110af2fecba76a8025bcdffd0740f58ee8 SHA512 694189c7d48537b29fdf39e1b4cac58166c72d8e5adef59da788a5a49ac803ef4c1648b3e36bc9834305240a3a394bef052fc3388ea9b7de46d3e5c7342aefe7
diff --git a/dev-lang/rust/UPGRADE.md b/dev-lang/rust/UPGRADE.md
index adf812a..10ffc1a 100644
--- a/dev-lang/rust/UPGRADE.md
+++ b/dev-lang/rust/UPGRADE.md
@@ -6,7 +6,7 @@
 
 Follow these steps to upgrade the rust ebuild.
 
-```
+```shell
 DEL_VERSION=1.33.0 # Previous version (to be deleted)
 OLD_VERSION=1.34.0 # Current version
 NEW_VERSION=1.35.0 # New version
@@ -31,9 +31,9 @@
 gpg --verify "${sig_file}" "${rust_src}"
 
 # ^^ If the above fails with:
-# ```
+#
 # gpg: Can't check signature: No public key
-# ```
+#
 # then you need to import the rustc key:
 # curl https://keybase.io/rust/pgp_keys.asc | gpg --import
 #
@@ -90,8 +90,8 @@
 git rm ../../virtual/rust/rust-${DEL_VERSION}.ebuild
 ```
 
-- Update this document with additional tips or any steps that have changed.
-- Upload change for review. CC reviewers from previous upgrade.
-- Remember to add `Cq-Include-Trybots: chromeos/cq:cq-llvm-orchestrator` to your commit message
-
-- Kick off try-job: `cros tryjob -g <cl number> chromiumos-sdk-tryjob`.
+-   Update this document with additional tips or any steps that have changed.
+-   Upload change for review. CC reviewers from previous upgrade.
+-   Remember to add `Cq-Include-Trybots: chromeos/cq:cq-llvm-orchestrator` to
+    your commit message.
+-   Kick off try-job: `cros tryjob -g <cl number> chromiumos-sdk-tryjob`.
diff --git a/dev-lang/rust/files/rust-1.46.0-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch b/dev-lang/rust/files/rust-1.46.0-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch
deleted file mode 100644
index 5f6c3a5..0000000
--- a/dev-lang/rust/files/rust-1.46.0-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-From 0d2bca57088e9024760c5b0629e7b2df021a4020 Mon Sep 17 00:00:00 2001
-From: Zach Reizner <zachr@google.com>
-Date: Wed, 23 Jan 2019 14:48:27 -0800
-Subject: [PATCH] Revert "[CMake] Unconditionally add .h and .td files to
- target sources"
-
-This reverts commit 6fb010f388bb2cb2f00fe039123092308ac4865d.
-
-Reason for revert: LLVM includes /usr/include/demangle.h which is not installed.
-
-BUG=chromium:924647
-TEST=cros tryjob chromiumos-sdk-tryjob
----
- src/llvm/cmake/modules/LLVMProcessSources.cmake | 17 +++++++++--------
- 1 file changed, 9 insertions(+), 8 deletions(-)
-
-diff --git a/src/llvm/cmake/modules/LLVMProcessSources.cmake b/src/llvm/cmake/modules/LLVMProcessSources.cmake
-index 7cbd2863500..f65f31d797c 100644
---- a/src/llvm-project/llvm/cmake/modules/LLVMProcessSources.cmake
-+++ b/src/llvm-project/llvm/cmake/modules/LLVMProcessSources.cmake
-@@ -52,15 +52,16 @@ function(llvm_process_sources OUT_VAR)
-   cmake_parse_arguments(ARG "" "" "ADDITIONAL_HEADERS;ADDITIONAL_HEADER_DIRS" ${ARGN})
-   set(sources ${ARG_UNPARSED_ARGUMENTS})
-   llvm_check_source_file_list( ${sources} )
--  
--  # This adds .td and .h files to the Visual Studio solution:
--  add_td_sources(sources)
--  find_all_header_files(hdrs "${ARG_ADDITIONAL_HEADER_DIRS}")
--  if (hdrs)
--    set_source_files_properties(${hdrs} PROPERTIES HEADER_FILE_ONLY ON)
-+  if( LLVM_ENABLE_IDE )
-+    # This adds .td and .h files to the Visual Studio solution:
-+    add_td_sources(sources)
-+    find_all_header_files(hdrs "${ARG_ADDITIONAL_HEADER_DIRS}")
-+    if (hdrs)
-+      set_source_files_properties(${hdrs} PROPERTIES HEADER_FILE_ONLY ON)
-+    endif()
-+    set_source_files_properties(${ARG_ADDITIONAL_HEADERS} PROPERTIES HEADER_FILE_ONLY ON)
-+    list(APPEND sources ${ARG_ADDITIONAL_HEADERS} ${hdrs})
-   endif()
--  set_source_files_properties(${ARG_ADDITIONAL_HEADERS} PROPERTIES HEADER_FILE_ONLY ON)
--  list(APPEND sources ${ARG_ADDITIONAL_HEADERS} ${hdrs})
- 
-   set( ${OUT_VAR} ${sources} PARENT_SCOPE )
- endfunction(llvm_process_sources)
--- 
-2.20.1.321.g9e740568ce-goog
diff --git a/dev-lang/rust/files/rust-1.46.0-add-cros-targets.patch b/dev-lang/rust/files/rust-1.46.0-add-cros-targets.patch
deleted file mode 100644
index 49e67f4..0000000
--- a/dev-lang/rust/files/rust-1.46.0-add-cros-targets.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-Because of crbug.com/711369, armv7 target triple's arch and ABI parts differ
-between chromeos and the rust. Until that bug is fixed, we have to add our own
-triple for armv7.
-
-Additionally, the Rust compiler does not implement a fallback for unknown
-target triple vendors (e.g. "cros" or "pc") to the "unknown" variant, so we
-add copies of the relevant cros targets here as well.
-
-diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
-index 67f45d3d230..51e0eef6630 100644
---- a/src/librustc_target/spec/mod.rs
-+++ b/src/librustc_target/spec/mod.rs
-@@ -335,6 +335,8 @@ macro_rules! supported_targets {
- supported_targets! {
-     ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
-     ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
-+    ("x86_64-pc-linux-gnu", x86_64_pc_linux_gnu),
-+    ("x86_64-cros-linux-gnu", x86_64_cros_linux_gnu),
-     ("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
-     ("i586-unknown-linux-gnu", i586_unknown_linux_gnu),
-     ("mips-unknown-linux-gnu", mips_unknown_linux_gnu),
-@@ -364,11 +366,13 @@ supported_targets! {
-     ("armv5te-unknown-linux-musleabi", armv5te_unknown_linux_musleabi),
-     ("armv7-unknown-linux-gnueabi", armv7_unknown_linux_gnueabi),
-     ("armv7-unknown-linux-gnueabihf", armv7_unknown_linux_gnueabihf),
-+    ("armv7a-cros-linux-gnueabihf", armv7a_cros_linux_gnueabihf),
-     ("thumbv7neon-unknown-linux-gnueabihf", thumbv7neon_unknown_linux_gnueabihf),
-     ("thumbv7neon-unknown-linux-musleabihf", thumbv7neon_unknown_linux_musleabihf),
-     ("armv7-unknown-linux-musleabi", armv7_unknown_linux_musleabi),
-     ("armv7-unknown-linux-musleabihf", armv7_unknown_linux_musleabihf),
-     ("aarch64-unknown-linux-gnu", aarch64_unknown_linux_gnu),
-+    ("aarch64-cros-linux-gnu", aarch64_cros_linux_gnu),
-     ("aarch64-unknown-linux-musl", aarch64_unknown_linux_musl),
-     ("x86_64-unknown-linux-musl", x86_64_unknown_linux_musl),
-     ("i686-unknown-linux-musl", i686_unknown_linux_musl),
diff --git a/dev-lang/rust/files/rust-1.46.0-cc.patch b/dev-lang/rust/files/rust-1.46.0-cc.patch
deleted file mode 100644
index b2651c1..0000000
--- a/dev-lang/rust/files/rust-1.46.0-cc.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-If the CC environment variable is set, use its value instead of hardcoding "cc".
-This fixes crbug.com/1090829.
-
-diff --git a/src/librustc_codegen_ssa/back/link.rs b/src/librustc_codegen_ssa/back/link.rs
-index 8725bfa..5984569 100644
---- a/src/librustc_codegen_ssa/back/link.rs
-+++ b/src/librustc_codegen_ssa/back/link.rs
-@@ -752,12 +752,12 @@ fn linker_and_flavor(sess: &Session) -> (PathBuf, LinkerFlavor) {
-             (Some(linker), Some(flavor)) => Some((linker, flavor)),
-             // only the linker flavor is known; use the default linker for the selected flavor
-             (None, Some(flavor)) => Some((
--                PathBuf::from(match flavor {
-+                match flavor {
-                     LinkerFlavor::Em => {
-                         if cfg!(windows) {
--                            "emcc.bat"
-+                            "emcc.bat".into()
-                         } else {
--                            "emcc"
-+                            "emcc".into()
-                         }
-                     }
-                     LinkerFlavor::Gcc => {
-@@ -768,16 +768,19 @@ fn linker_and_flavor(sess: &Session) -> (PathBuf, LinkerFlavor) {
-                             // and many modern illumos distributions today
-                             // ship GCC as "gcc" without also making it
-                             // available as "cc".
--                            "gcc"
-+                            "gcc".into()
-                         } else {
--                            "cc"
-+                            match env::var_os("CC") {
-+                                Some(path) => path.into(),
-+                                None => "cc".into()
-+                            }
-                         }
-                     }
--                    LinkerFlavor::Ld => "ld",
--                    LinkerFlavor::Msvc => "link.exe",
--                    LinkerFlavor::Lld(_) => "lld",
--                    LinkerFlavor::PtxLinker => "rust-ptx-linker",
--                }),
-+                    LinkerFlavor::Ld => "ld".into(),
-+                    LinkerFlavor::Msvc => "link.exe".into(),
-+                    LinkerFlavor::Lld(_) => "lld".into(),
-+                    LinkerFlavor::PtxLinker => "rust-ptx-linker".into(),
-+                },
-                 flavor,
-             )),
-             (Some(linker), None) => {
diff --git a/dev-lang/rust/files/rust-1.46.0-enable-sanitizers.patch b/dev-lang/rust/files/rust-1.46.0-enable-sanitizers.patch
deleted file mode 100644
index 4cf9729..0000000
--- a/dev-lang/rust/files/rust-1.46.0-enable-sanitizers.patch
+++ /dev/null
@@ -1,215 +0,0 @@
-diff --git a/src/librustc_codegen_llvm/attributes.rs b/src/librustc_codegen_llvm/attributes.rs
-index 89b548a9c5a..a0e9c2db7ef 100644
---- a/src/librustc_codegen_llvm/attributes.rs
-+++ b/src/librustc_codegen_llvm/attributes.rs
-@@ -46,7 +46,7 @@ fn inline(cx: &CodegenCx<'ll, '_>, val: &'ll Value, inline: InlineAttr) {
- /// Apply LLVM sanitize attributes.
- #[inline]
- pub fn sanitize(cx: &CodegenCx<'ll, '_>, no_sanitize: SanitizerSet, llfn: &'ll Value) {
--    let enabled = cx.tcx.sess.opts.debugging_opts.sanitizer - no_sanitize;
-+    let enabled = cx.tcx.sess.opts.cg.sanitizer - no_sanitize;
-     if enabled.contains(SanitizerSet::ADDRESS) {
-         llvm::Attribute::SanitizeAddress.apply_llfn(Function, llfn);
-     }
-@@ -113,13 +113,7 @@ fn set_probestack(cx: &CodegenCx<'ll, '_>, llfn: &'ll Value) {
-     // Currently stack probes seem somewhat incompatible with the address
-     // sanitizer and thread sanitizer. With asan we're already protected from
-     // stack overflow anyway so we don't really need stack probes regardless.
--    if cx
--        .sess()
--        .opts
--        .debugging_opts
--        .sanitizer
--        .intersects(SanitizerSet::ADDRESS | SanitizerSet::THREAD)
--    {
-+    if cx.sess().opts.cg.sanitizer.intersects(SanitizerSet::ADDRESS | SanitizerSet::THREAD) {
-         return;
-     }
- 
-diff --git a/src/librustc_codegen_ssa/back/link.rs b/src/librustc_codegen_ssa/back/link.rs
-index eed068e2933..3946be6ab57 100644
---- a/src/librustc_codegen_ssa/back/link.rs
-+++ b/src/librustc_codegen_ssa/back/link.rs
-@@ -781,7 +781,7 @@ fn link_sanitizers(sess: &Session, crate_type: CrateType, linker: &mut dyn Linke
-     if crate_type != CrateType::Executable {
-         return;
-     }
--    let sanitizer = sess.opts.debugging_opts.sanitizer;
-+    let sanitizer = sess.opts.cg.sanitizer;
-     if sanitizer.contains(SanitizerSet::ADDRESS) {
-         link_sanitizer_runtime(sess, linker, "asan");
-     }
-@@ -818,7 +818,9 @@ fn link_sanitizer_runtime(sess: &Session, linker: &mut dyn Linker, name: &str) {
-         "aarch64-fuchsia"
-         | "aarch64-unknown-linux-gnu"
-         | "x86_64-fuchsia"
--        | "x86_64-unknown-linux-gnu" => {
-+        | "x86_64-unknown-linux-gnu"
-+        | "x86_64-cros-linux-gnu"
-+        | "x86_64-pc-linux-gnu" => {
-             let filename = format!("librustc{}_rt.{}.a", channel, name);
-             let path = default_tlib.join(&filename);
-             linker.link_whole_rlib(&path);
-@@ -1589,11 +1591,8 @@ fn linker_with_args<'a, B: ArchiveBuilder<'a>>(
- 
-     // NO-OPT-OUT, OBJECT-FILES-NO, AUDIT-ORDER
-     if sess.target.target.options.is_like_fuchsia && crate_type == CrateType::Executable {
--        let prefix = if sess.opts.debugging_opts.sanitizer.contains(SanitizerSet::ADDRESS) {
--            "asan/"
--        } else {
--            ""
--        };
-+        let prefix =
-+            if sess.opts.cg.sanitizer.contains(SanitizerSet::ADDRESS) { "asan/" } else { "" };
-         cmd.arg(format!("--dynamic-linker={}ld.so.1", prefix));
-     }
- 
-diff --git a/src/librustc_codegen_ssa/back/symbol_export.rs b/src/librustc_codegen_ssa/back/symbol_export.rs
-index 2efbfcb9950..ea97a78b263 100644
---- a/src/librustc_codegen_ssa/back/symbol_export.rs
-+++ b/src/librustc_codegen_ssa/back/symbol_export.rs
-@@ -204,7 +204,7 @@ fn exported_symbols_provider_local(
-         }));
-     }
- 
--    if tcx.sess.opts.debugging_opts.sanitizer.contains(SanitizerSet::MEMORY) {
-+    if tcx.sess.opts.cg.sanitizer.contains(SanitizerSet::MEMORY) {
-         // Similar to profiling, preserve weak msan symbol during LTO.
-         const MSAN_WEAK_SYMBOLS: [&str; 2] = ["__msan_track_origins", "__msan_keep_going"];
- 
-diff --git a/src/librustc_codegen_ssa/back/write.rs b/src/librustc_codegen_ssa/back/write.rs
-index 23e0b9344ec..47a6dd0492f 100644
---- a/src/librustc_codegen_ssa/back/write.rs
-+++ b/src/librustc_codegen_ssa/back/write.rs
-@@ -195,7 +195,7 @@ impl ModuleConfig {
-             ),
-             pgo_use: if_regular!(sess.opts.cg.profile_use.clone(), None),
- 
--            sanitizer: if_regular!(sess.opts.debugging_opts.sanitizer, SanitizerSet::empty()),
-+            sanitizer: if_regular!(sess.opts.cg.sanitizer, SanitizerSet::empty()),
-             sanitizer_recover: if_regular!(
-                 sess.opts.debugging_opts.sanitizer_recover,
-                 SanitizerSet::empty()
-diff --git a/src/librustc_mir/transform/inline.rs b/src/librustc_mir/transform/inline.rs
-index c03be2a8fcd..61041da1b2c 100644
---- a/src/librustc_mir/transform/inline.rs
-+++ b/src/librustc_mir/transform/inline.rs
-@@ -238,7 +238,7 @@ impl Inliner<'tcx> {
- 
-         // Avoid inlining functions marked as no_sanitize if sanitizer is enabled,
-         // since instrumentation might be enabled and performed on the caller.
--        if self.tcx.sess.opts.debugging_opts.sanitizer.intersects(codegen_fn_attrs.no_sanitize) {
-+        if self.tcx.sess.opts.cg.sanitizer.intersects(codegen_fn_attrs.no_sanitize) {
-             return false;
-         }
- 
-diff --git a/src/librustc_session/config.rs b/src/librustc_session/config.rs
-index c5a866817cb..a9f8c810be9 100644
---- a/src/librustc_session/config.rs
-+++ b/src/librustc_session/config.rs
-@@ -748,7 +748,7 @@ pub fn default_configuration(sess: &Session) -> CrateConfig {
-         }
-     }
- 
--    for s in sess.opts.debugging_opts.sanitizer {
-+    for s in sess.opts.cg.sanitizer {
-         let symbol = Symbol::intern(&s.to_string());
-         ret.insert((sym::sanitize, Some(symbol)));
-     }
-diff --git a/src/librustc_session/options.rs b/src/librustc_session/options.rs
-index 2ad7d09cbf4..9613a4bb8cd 100644
---- a/src/librustc_session/options.rs
-+++ b/src/librustc_session/options.rs
-@@ -762,6 +762,8 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options,
-         "print remarks for these optimization passes (space separated, or \"all\")"),
-     rpath: bool = (false, parse_bool, [UNTRACKED],
-         "set rpath values in libs/exes (default: no)"),
-+    sanitizer: SanitizerSet = (SanitizerSet::empty(), parse_sanitizers, [TRACKED],
-+        "use a sanitizer"),
-     save_temps: bool = (false, parse_bool, [UNTRACKED],
-         "save all temporary output files during compilation (default: no)"),
-     soft_float: bool = (false, parse_bool, [TRACKED],
-@@ -979,8 +981,6 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
-     // soon.
-     run_dsymutil: bool = (true, parse_bool, [TRACKED],
-         "if on Mac, run `dsymutil` and delete intermediate object files (default: yes)"),
--    sanitizer: SanitizerSet = (SanitizerSet::empty(), parse_sanitizers, [TRACKED],
--        "use a sanitizer"),
-     sanitizer_memory_track_origins: usize = (0, parse_sanitizer_memory_track_origins, [TRACKED],
-         "enable origins tracking in MemorySanitizer"),
-     sanitizer_recover: SanitizerSet = (SanitizerSet::empty(), parse_sanitizers, [TRACKED],
-diff --git a/src/librustc_session/session.rs b/src/librustc_session/session.rs
-index fcd5dab94a6..f43b83b00b1 100644
---- a/src/librustc_session/session.rs
-+++ b/src/librustc_session/session.rs
-@@ -652,7 +652,7 @@ impl Session {
-         let more_names = self.opts.output_types.contains_key(&OutputType::LlvmAssembly)
-             || self.opts.output_types.contains_key(&OutputType::Bitcode)
-             // AddressSanitizer and MemorySanitizer use alloca name when reporting an issue.
--            || self.opts.debugging_opts.sanitizer.intersects(SanitizerSet::ADDRESS | SanitizerSet::MEMORY);
-+            || self.opts.cg.sanitizer.intersects(SanitizerSet::ADDRESS | SanitizerSet::MEMORY);
- 
-         self.opts.debugging_opts.fewer_names || !more_names
-     }
-@@ -1018,7 +1018,7 @@ impl Session {
-         self.opts.optimize != config::OptLevel::No
-         // AddressSanitizer uses lifetimes to detect use after scope bugs.
-         // MemorySanitizer uses lifetimes to detect use of uninitialized stack variables.
--        || self.opts.debugging_opts.sanitizer.intersects(SanitizerSet::ADDRESS | SanitizerSet::MEMORY)
-+        || self.opts.cg.sanitizer.intersects(SanitizerSet::ADDRESS | SanitizerSet::MEMORY)
-     }
- }
- 
-@@ -1363,16 +1363,32 @@ fn validate_commandline_args_with_session_available(sess: &Session) {
-         "x86_64-apple-darwin",
-         "x86_64-fuchsia",
-         "x86_64-unknown-linux-gnu",
-+        "x86_64-cros-linux-gnu",
-+        "x86_64-pc-linux-gnu",
-+    ];
-+    const LSAN_SUPPORTED_TARGETS: &[&str] = &[
-+        "aarch64-unknown-linux-gnu",
-+        "x86_64-apple-darwin",
-+        "x86_64-unknown-linux-gnu",
-+        "x86_64-cros-linux-gnu",
-+        "x86_64-pc-linux-gnu",
-+    ];
-+    const MSAN_SUPPORTED_TARGETS: &[&str] = &[
-+        "aarch64-unknown-linux-gnu",
-+        "x86_64-unknown-linux-gnu",
-+        "x86_64-cros-linux-gnu",
-+        "x86_64-pc-linux-gnu",
-+    ];
-+    const TSAN_SUPPORTED_TARGETS: &[&str] = &[
-+        "aarch64-unknown-linux-gnu",
-+        "x86_64-apple-darwin",
-+        "x86_64-unknown-linux-gnu",
-+        "x86_64-cros-linux-gnu",
-+        "x86_64-pc-linux-gnu",
-     ];
--    const LSAN_SUPPORTED_TARGETS: &[&str] =
--        &["aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu"];
--    const MSAN_SUPPORTED_TARGETS: &[&str] =
--        &["aarch64-unknown-linux-gnu", "x86_64-unknown-linux-gnu"];
--    const TSAN_SUPPORTED_TARGETS: &[&str] =
--        &["aarch64-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-gnu"];
- 
-     // Sanitizers can only be used on some tested platforms.
--    for s in sess.opts.debugging_opts.sanitizer {
-+    for s in sess.opts.cg.sanitizer {
-         let supported_targets = match s {
-             SanitizerSet::ADDRESS => ASAN_SUPPORTED_TARGETS,
-             SanitizerSet::LEAK => LSAN_SUPPORTED_TARGETS,
-@@ -1387,10 +1403,10 @@ fn validate_commandline_args_with_session_available(sess: &Session) {
-                 supported_targets.join(", ")
-             ));
-         }
--        let conflicting = sess.opts.debugging_opts.sanitizer - s;
-+        let conflicting = sess.opts.cg.sanitizer - s;
-         if !conflicting.is_empty() {
-             sess.err(&format!(
--                "`-Zsanitizer={}` is incompatible with `-Zsanitizer={}`",
-+                "`-Csanitizer={}` is incompatible with `-Csanitizer={}`",
-                 s, conflicting,
-             ));
-             // Don't report additional errors.
diff --git a/dev-lang/rust/files/rust-1.46.0-ld-argv0.patch b/dev-lang/rust/files/rust-1.46.0-ld-argv0.patch
deleted file mode 100644
index d967dba..0000000
--- a/dev-lang/rust/files/rust-1.46.0-ld-argv0.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Our cross-compilers and related tooling are executed via ld.so trickery, which
-makes /proc/self/exe not point to the right place. If we detect that we're in
-that situation in `current_exe()`, we _should_ have `LD_ARGV0_REL` in an env
-var. This is the path to the _original_ binary, relative to ld.so.
-
-diff --git a/src/libstd/sys/unix/os.rs b/src/libstd/sys/unix/os.rs
-index a9cd509..92dd6b9 100644
---- a/src/libstd/sys/unix/os.rs
-+++ b/src/libstd/sys/unix/os.rs
-@@ -327,12 +327,45 @@ pub fn current_exe() -> io::Result<PathBuf> {
- 
- #[cfg(any(target_os = "linux", target_os = "android", target_os = "emscripten"))]
- pub fn current_exe() -> io::Result<PathBuf> {
-+    let is_ld_so = |p: &crate::path::Path| -> Option<bool> {
-+        let parent_dir_name = p.parent()?.file_name()?;
-+        if parent_dir_name != OsStr::new("lib") {
-+            return Some(false);
-+        }
-+        // We assume that the `ld.so` path is always valid unicode, since there's... no reason for
-+        // it not to be. :)
-+        let file_name = p.file_name()?.to_str()?;
-+        Some(
-+            file_name.starts_with("ld-linux-")
-+                && (file_name.ends_with(".so") || file_name.contains(".so.")),
-+        )
-+    };
-+
-     match crate::fs::read_link("/proc/self/exe") {
-         Err(ref e) if e.kind() == io::ErrorKind::NotFound => Err(io::Error::new(
-             io::ErrorKind::Other,
-             "no /proc/self/exe available. Is /proc mounted?",
-         )),
--        other => other,
-+        Err(x) => Err(x),
-+        Ok(p) => {
-+            // Chrome OS-specific: in some configurations, Rust binaries are invoked through
-+            // `ld.so`. In these cases, we want to present the user with the path to the Rust
-+            // binary that was invoked.
-+            //
-+            // Because the ld.so wrappers _generally_ don't want to invoke things with absolute
-+            // paths, this is _generally_ a path relative to dirname(ld.so).
-+            if is_ld_so(&p) == Some(true) {
-+                if let Some(relative_to_ld) = crate::env::var_os("LD_ARGV0_REL") {
-+                    let relative_to_ld = PathBuf::from(relative_to_ld);
-+                    if relative_to_ld.is_absolute() {
-+                        return Ok(relative_to_ld);
-+                    }
-+                    // safety: is_ld_so checks the parent directory of `p`.
-+                    return Ok(p.parent().unwrap().join(relative_to_ld));
-+                }
-+            }
-+            Ok(p)
-+        }
-     }
- }
- 
diff --git a/dev-lang/rust/files/rust-1.46.0-revert-libunwind-build.patch b/dev-lang/rust/files/rust-1.46.0-revert-libunwind-build.patch
deleted file mode 100644
index f6a9b6d..0000000
--- a/dev-lang/rust/files/rust-1.46.0-revert-libunwind-build.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-This reverts commit 21abc88.
-
-Fixes https://github.com/rust-lang/rust/issues/76020
-
-Quote the open upstream CL (https://github.com/rust-lang/rust/issues/76026):
-I'm not sure what exact problem #72746 is supposed to fix, but it's probably incomplete as it breaks the build of 1.46.0 with llvm-libunwind enabled
-
-
-diff --git a/src/libunwind/build.rs b/src/libunwind/build.rs
-index 31d235cf679..d4bcd2ed4e8 100644
---- a/src/libunwind/build.rs
-+++ b/src/libunwind/build.rs
-@@ -116,8 +116,6 @@ mod llvm_libunwind {
-             cfg.flag("-fstrict-aliasing");
-             cfg.flag("-funwind-tables");
-             cfg.flag("-fvisibility=hidden");
--            cfg.flag_if_supported("-fvisibility-global-new-delete-hidden");
--            cfg.define("_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS", None);
-         }
- 
-         let mut unwind_sources = vec![
diff --git a/dev-lang/rust/files/rust-1.46.0-sanitizer-supported.patch b/dev-lang/rust/files/rust-1.46.0-sanitizer-supported.patch
deleted file mode 100644
index 72c11606..0000000
--- a/dev-lang/rust/files/rust-1.46.0-sanitizer-supported.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
-index e8ec575ea37..94afa2349f7 100644
---- a/src/bootstrap/native.rs
-+++ b/src/bootstrap/native.rs
-@@ -760,7 +760,7 @@ fn supported_sanitizers(
-         }
-         "x86_64-apple-darwin" => darwin_libs("osx", &["asan", "lsan", "tsan"]),
-         "x86_64-fuchsia" => common_libs("fuchsia", "x86_64", &["asan"]),
--        "x86_64-unknown-linux-gnu" => {
-+        "x86_64-unknown-linux-gnu" | "x86_64-cros-linux-gnu" | "x86_64-pc-linux-gnu" => {
-             common_libs("linux", "x86_64", &["asan", "lsan", "msan", "tsan"])
-         }
-         _ => Vec::new(),
diff --git a/dev-lang/rust/files/rust-1.47.0-aarch64-outline-atomics.patch b/dev-lang/rust/files/rust-1.47.0-aarch64-outline-atomics.patch
new file mode 100644
index 0000000..3ab8ff4
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.47.0-aarch64-outline-atomics.patch
@@ -0,0 +1,599 @@
+Adds outline atomics support to Rust's compiler-rt build, since this is required
+with a sufficiently new version of clang. Support for these hasn't reached a
+stable version of LLVM yet, so we need to pick the changes and the corresponding
+build logic in.
+
+diff --git a/src/llvm-project/compiler-rt/lib/builtins/aarch64/lse.S b/src/llvm-project/compiler-rt/lib/builtins/aarch64/lse.S
+new file mode 100644
+index 000000000..5dc0d5320
+--- /dev/null
++++ b/src/llvm-project/compiler-rt/lib/builtins/aarch64/lse.S
+@@ -0,0 +1,236 @@
++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
++// See https://llvm.org/LICENSE.txt for license information.
++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
++
++#include "assembly.h"
++
++// Out-of-line LSE atomics helpers. Ported from libgcc library.
++// N = {1, 2, 4, 8}
++// M = {1, 2, 4, 8, 16}
++// ORDER = {'relax', 'acq', 'rel', 'acq_rel'}
++// Routines implemented:
++//
++//  iM __aarch64_casM_ORDER(iM expected, iM desired, iM *ptr)
++//  iN __aarch64_swpN_ORDER(iN val, iN *ptr)
++//  iN __aarch64_ldaddN_ORDER(iN val, iN *ptr)
++//  iN __aarch64_ldclrN_ORDER(iN val, iN *ptr)
++//  iN __aarch64_ldeorN_ORDER(iN val, iN *ptr)
++//  iN __aarch64_ldsetN_ORDER(iN val, iN *ptr)
++//
++// Routines may modify temporary registers tmp0, tmp1, tmp2,
++// return value x0 and the flags only.
++
++#ifdef __aarch64__
++
++#ifdef HAS_ASM_LSE
++.arch armv8-a+lse
++#else
++.arch armv8-a
++#endif
++
++#if !defined(__APPLE__)
++HIDDEN(__aarch64_have_lse_atomics)
++#else
++HIDDEN(___aarch64_have_lse_atomics)
++#endif
++
++// Generate mnemonics for
++// L_cas:                                 SIZE: 1,2,4,8,16 MODEL: 1,2,3,4
++// L_swp L_ldadd L_ldclr L_ldeor L_ldset: SIZE: 1,2,4,8    MODEL: 1,2,3,4
++
++#if SIZE == 1
++#define S b
++#define UXT uxtb
++#define B 0x00000000
++#elif SIZE == 2
++#define S h
++#define UXT uxth
++#define B 0x40000000
++#elif SIZE == 4 || SIZE == 8 || SIZE == 16
++#define S
++#define UXT mov
++#if SIZE == 4
++#define B 0x80000000
++#elif SIZE == 8
++#define B 0xc0000000
++#endif
++#else
++#error
++#endif // SIZE
++
++#if MODEL == 1
++#define SUFF _relax
++#define A
++#define L
++#define M 0x000000
++#define N 0x000000
++#elif MODEL == 2
++#define SUFF _acq
++#define A a
++#define L
++#define M 0x400000
++#define N 0x800000
++#elif MODEL == 3
++#define SUFF _rel
++#define A
++#define L l
++#define M 0x008000
++#define N 0x400000
++#elif MODEL == 4
++#define SUFF _acq_rel
++#define A a
++#define L l
++#define M 0x408000
++#define N 0xc00000
++#else
++#error
++#endif // MODEL
++
++// Define register size.
++#define x(N) GLUE2(x, N)
++#define w(N) GLUE2(w, N)
++#if SIZE < 8
++#define s(N) w(N)
++#else
++#define s(N) x(N)
++#endif
++
++#define NAME(BASE) GLUE4(__aarch64_, BASE, SIZE, SUFF)
++#define LDXR GLUE4(ld, A, xr, S)
++#define STXR GLUE4(st, L, xr, S)
++
++// Define temporary registers.
++#define tmp0 16
++#define tmp1 17
++#define tmp2 15
++
++// Macro for branch to label if no LSE available
++.macro JUMP_IF_NOT_LSE label
++#if !defined(__APPLE__)
++        adrp    x(tmp0), __aarch64_have_lse_atomics
++        ldrb    w(tmp0), [x(tmp0), :lo12:__aarch64_have_lse_atomics]
++#else
++        adrp    x(tmp0), ___aarch64_have_lse_atomics@page
++        ldrb    w(tmp0), [x(tmp0), ___aarch64_have_lse_atomics@pageoff]
++#endif
++        cbz     w(tmp0), \label
++.endm
++
++#ifdef L_cas
++DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(NAME(cas))
++        JUMP_IF_NOT_LSE 8f
++#if SIZE < 16
++#ifdef HAS_ASM_LSE
++#define CAS GLUE4(cas, A, L, S) s(0), s(1), [x2]
++#else
++#define CAS .inst 0x08a07c41 + B + M
++#endif
++        CAS    // s(0), s(1), [x2]
++        ret
++8:
++        UXT    s(tmp0), s(0)
++0:
++        LDXR   s(0), [x2]
++        cmp    s(0), s(tmp0)
++        bne    1f
++        STXR   w(tmp1), s(1), [x2]
++        cbnz   w(tmp1), 0b
++1:
++        ret
++#else
++#define LDXP GLUE3(ld, A, xp)
++#define STXP GLUE3(st, L, xp)
++#ifdef HAS_ASM_LSE
++#define CASP GLUE3(casp, A, L)  x0, x1, x2, x3, [x4]
++#else
++#define CASP .inst 0x48207c82 + M
++#endif
++
++        CASP   // x0, x1, x2, x3, [x4]
++        ret
++8:
++        mov    x(tmp0), x0
++        mov    x(tmp1), x1
++0:
++        LDXP   x0, x1, [x4]
++        cmp    x0, x(tmp0)
++        ccmp   x1, x(tmp1), #0, eq
++        bne    1f
++        STXP   w(tmp2), x2, x3, [x4]
++        cbnz   w(tmp2), 0b
++1:
++        ret
++#endif
++END_COMPILERRT_OUTLINE_FUNCTION(NAME(cas))
++#endif // L_cas
++
++#ifdef L_swp
++#ifdef HAS_ASM_LSE
++#define SWP GLUE4(swp, A, L, S)  s(0), s(0), [x1]
++#else
++#define SWP .inst 0x38208020 + B + N
++#endif
++DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(NAME(swp))
++        JUMP_IF_NOT_LSE 8f
++        SWP    // s(0), s(0), [x1]
++        ret
++8:
++        mov    s(tmp0), s(0)
++0:
++        LDXR   s(0), [x1]
++        STXR   w(tmp1), s(tmp0), [x1]
++        cbnz   w(tmp1), 0b
++        ret
++END_COMPILERRT_OUTLINE_FUNCTION(NAME(swp))
++#endif // L_swp
++
++#if defined(L_ldadd) || defined(L_ldclr) ||                                    \
++    defined(L_ldeor) || defined(L_ldset)
++
++#ifdef L_ldadd
++#define LDNM ldadd
++#define OP add
++#define OPN 0x0000
++#elif defined(L_ldclr)
++#define LDNM ldclr
++#define OP bic
++#define OPN 0x1000
++#elif defined(L_ldeor)
++#define LDNM ldeor
++#define OP eor
++#define OPN 0x2000
++#elif defined(L_ldset)
++#define LDNM ldset
++#define OP orr
++#define OPN 0x3000
++#else
++#error
++#endif
++
++#ifdef HAS_ASM_LSE
++#define LDOP GLUE4(LDNM, A, L, S) s(0), s(0), [x1]
++#else
++#define LDOP .inst 0x38200020 + OPN + B + N
++#endif
++
++DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(NAME(LDNM))
++        JUMP_IF_NOT_LSE 8f
++        LDOP // s(0), s(0), [x1]
++        ret
++8:
++        mov    s(tmp0), s(0)
++0:
++        LDXR   s(0), [x1]
++        OP     s(tmp1), s(0), s(tmp0)
++        STXR   w(tmp2), s(tmp1), [x1]
++        cbnz   w(tmp2), 0b
++        ret
++END_COMPILERRT_OUTLINE_FUNCTION(NAME(LDNM))
++#endif // L_ldadd L_ldclr L_ldeor L_ldset
++
++NO_EXEC_STACK_DIRECTIVE
++
++// GNU property note for BTI and PAC
++GNU_PROPERTY_BTI_PAC
++
++#endif // __aarch64__
+diff --git a/src/llvm-project/compiler-rt/lib/builtins/assembly.h b/src/llvm-project/compiler-rt/lib/builtins/assembly.h
+index f437cb87f..f6ce6a9fc 100644
+--- a/src/llvm-project/compiler-rt/lib/builtins/assembly.h
++++ b/src/llvm-project/compiler-rt/lib/builtins/assembly.h
+@@ -14,8 +14,8 @@
+ #ifndef COMPILERRT_ASSEMBLY_H
+ #define COMPILERRT_ASSEMBLY_H
+ 
+-#if defined(__POWERPC__) || defined(__powerpc__) || defined(__ppc__)
+-#define SEPARATOR @
++#if defined(__APPLE__) && defined(__aarch64__)
++#define SEPARATOR %%
+ #else
+ #define SEPARATOR ;
+ #endif
+@@ -35,14 +35,14 @@
+ #define HIDDEN(name) .hidden name
+ #define LOCAL_LABEL(name) .L_##name
+ #define FILE_LEVEL_DIRECTIVE
+-#if defined(__arm__)
++#if defined(__arm__) || defined(__aarch64__)
+ #define SYMBOL_IS_FUNC(name) .type name,%function
+ #else
+ #define SYMBOL_IS_FUNC(name) .type name,@function
+ #endif
+ #define CONST_SECTION .section .rodata
+ 
+-#if defined(__GNU__) || defined(__FreeBSD__) || defined(__Fuchsia__) || \
++#if defined(__GNU__) || defined(__FreeBSD__) || defined(__Fuchsia__) ||        \
+     defined(__linux__)
+ #define NO_EXEC_STACK_DIRECTIVE .section .note.GNU-stack,"",%progbits
+ #else
+@@ -65,6 +65,66 @@
+ 
+ #endif
+ 
++#if defined(__arm__) || defined(__aarch64__)
++#define FUNC_ALIGN                                                             \
++  .text SEPARATOR                                                              \
++  .balign 16 SEPARATOR
++#else
++#define FUNC_ALIGN
++#endif
++
++// BTI and PAC gnu property note
++#define NT_GNU_PROPERTY_TYPE_0 5
++#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
++#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI 1
++#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC 2
++
++#if defined(__ARM_FEATURE_BTI_DEFAULT)
++#define BTI_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_BTI
++#else
++#define BTI_FLAG 0
++#endif
++
++#if __ARM_FEATURE_PAC_DEFAULT & 3
++#define PAC_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_PAC
++#else
++#define PAC_FLAG 0
++#endif
++
++#define GNU_PROPERTY(type, value)                                              \
++  .pushsection .note.gnu.property, "a" SEPARATOR                               \
++  .p2align 3 SEPARATOR                                                         \
++  .word 4 SEPARATOR                                                            \
++  .word 16 SEPARATOR                                                           \
++  .word NT_GNU_PROPERTY_TYPE_0 SEPARATOR                                       \
++  .asciz "GNU" SEPARATOR                                                       \
++  .word type SEPARATOR                                                         \
++  .word 4 SEPARATOR                                                            \
++  .word value SEPARATOR                                                        \
++  .word 0 SEPARATOR                                                            \
++  .popsection
++
++#if BTI_FLAG != 0
++#define BTI_C bti c
++#else
++#define BTI_C
++#endif
++
++#if (BTI_FLAG | PAC_FLAG) != 0
++#define GNU_PROPERTY_BTI_PAC                                                   \
++  GNU_PROPERTY(GNU_PROPERTY_AARCH64_FEATURE_1_AND, BTI_FLAG | PAC_FLAG)
++#else
++#define GNU_PROPERTY_BTI_PAC
++#endif
++
++#if defined(__clang__) || defined(__GCC_HAVE_DWARF2_CFI_ASM)
++#define CFI_START .cfi_startproc
++#define CFI_END .cfi_endproc
++#else
++#define CFI_START
++#define CFI_END
++#endif
++
+ #if defined(__arm__)
+ 
+ // Determine actual [ARM][THUMB[1][2]] ISA using compiler predefined macros:
+@@ -131,8 +191,14 @@
+ #define DEFINE_CODE_STATE
+ #endif
+ 
+-#define GLUE2(a, b) a##b
+-#define GLUE(a, b) GLUE2(a, b)
++#define GLUE2_(a, b) a##b
++#define GLUE(a, b) GLUE2_(a, b)
++#define GLUE2(a, b) GLUE2_(a, b)
++#define GLUE3_(a, b, c) a##b##c
++#define GLUE3(a, b, c) GLUE3_(a, b, c)
++#define GLUE4_(a, b, c, d) a##b##c##d
++#define GLUE4(a, b, c, d) GLUE4_(a, b, c, d)
++
+ #define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name)
+ 
+ #ifdef VISIBILITY_HIDDEN
+@@ -177,6 +243,16 @@
+   DECLARE_FUNC_ENCODING                                                        \
+   name:
+ 
++#define DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(name)                     \
++  DEFINE_CODE_STATE                                                            \
++  FUNC_ALIGN                                                                   \
++  .globl name SEPARATOR                                                        \
++  SYMBOL_IS_FUNC(name) SEPARATOR                                               \
++  DECLARE_SYMBOL_VISIBILITY(name) SEPARATOR                                    \
++  CFI_START SEPARATOR                                                          \
++  DECLARE_FUNC_ENCODING                                                        \
++  name: SEPARATOR BTI_C
++
+ #define DEFINE_COMPILERRT_FUNCTION_ALIAS(name, target)                         \
+   .globl SYMBOL_NAME(name) SEPARATOR                                           \
+   SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR                                  \
+@@ -193,8 +269,13 @@
+ #ifdef __ELF__
+ #define END_COMPILERRT_FUNCTION(name)                                          \
+   .size SYMBOL_NAME(name), . - SYMBOL_NAME(name)
++#define END_COMPILERRT_OUTLINE_FUNCTION(name)                                  \
++  CFI_END SEPARATOR                                                            \
++  .size SYMBOL_NAME(name), . - SYMBOL_NAME(name)
+ #else
+ #define END_COMPILERRT_FUNCTION(name)
++#define END_COMPILERRT_OUTLINE_FUNCTION(name)                                  \
++  CFI_END
+ #endif
+ 
+ #endif // COMPILERRT_ASSEMBLY_H
+diff --git a/src/llvm-project/compiler-rt/lib/builtins/cpu_model.c b/src/llvm-project/compiler-rt/lib/builtins/cpu_model.c
+index 468bcc84c..1f72d800f 100644
+--- a/src/llvm-project/compiler-rt/lib/builtins/cpu_model.c
++++ b/src/llvm-project/compiler-rt/lib/builtins/cpu_model.c
+@@ -12,6 +12,16 @@
+ //
+ //===----------------------------------------------------------------------===//
+ 
++#if defined(HAVE_INIT_PRIORITY)
++#define CONSTRUCTOR_ATTRIBUTE __attribute__((__constructor__ 101))
++#elif __has_attribute(__constructor__)
++#define CONSTRUCTOR_ATTRIBUTE __attribute__((__constructor__))
++#else
++// FIXME: For MSVC, we should make a function pointer global in .CRT$X?? so that
++// this runs during initialization.
++#define CONSTRUCTOR_ATTRIBUTE
++#endif
++
+ #if (defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) ||           \
+      defined(_M_X64)) &&                                                       \
+     (defined(__GNUC__) || defined(__clang__) || defined(_MSC_VER))
+@@ -656,16 +666,6 @@ static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf,
+ #undef setFeature
+ }
+ 
+-#if defined(HAVE_INIT_PRIORITY)
+-#define CONSTRUCTOR_ATTRIBUTE __attribute__((__constructor__ 101))
+-#elif __has_attribute(__constructor__)
+-#define CONSTRUCTOR_ATTRIBUTE __attribute__((__constructor__))
+-#else
+-// FIXME: For MSVC, we should make a function pointer global in .CRT$X?? so that
+-// this runs during initialization.
+-#define CONSTRUCTOR_ATTRIBUTE
+-#endif
+-
+ #ifndef _WIN32
+ __attribute__((visibility("hidden")))
+ #endif
+@@ -741,4 +741,24 @@ int CONSTRUCTOR_ATTRIBUTE __cpu_indicator_init(void) {
+   return 0;
+ }
+ 
++#elif defined(__aarch64__)
++// LSE support detection for out-of-line atomics
++// using HWCAP and Auxiliary vector
++_Bool __aarch64_have_lse_atomics
++    __attribute__((visibility("hidden"), nocommon));
++#if defined(__has_include)
++#if __has_include(<sys/auxv.h>)
++#include <sys/auxv.h>
++#ifndef AT_HWCAP
++#define AT_HWCAP 16
++#endif
++#ifndef HWCAP_ATOMICS
++#define HWCAP_ATOMICS (1 << 8)
++#endif
++static void CONSTRUCTOR_ATTRIBUTE init_have_lse_atomics(void) {
++  unsigned long hwcap = getauxval(AT_HWCAP);
++  __aarch64_have_lse_atomics = (hwcap & HWCAP_ATOMICS) != 0;
++}
++#endif // defined(__has_include)
++#endif // __has_include(<sys/auxv.h>)
+ #endif
+diff --git a/vendor/compiler_builtins/.cargo-checksum.json b/vendor/compiler_builtins/.cargo-checksum.json
+index b14e1309a..1f82d1de1 100644
+--- a/vendor/compiler_builtins/.cargo-checksum.json
++++ b/vendor/compiler_builtins/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.lock":"1dfa9c1f68c8e0f1d1fc90ed0712a3eeb2ea68478064c19d601249f60acde4a1","Cargo.toml":"d12e720542879582d4a8b9d6582a367d2962def71cd58cddfccf4e5d8df8b0cd","README.md":"2dd28b207028773ffee09ed0db563ac71b255b6b67256289d67a13cb19d15f94","build.rs":"bb626c4ce8b3b4c7e61548a1a56684997a58fc9d5f052df690031901321a43e6","examples/intrinsics.rs":"5bc2a8e39a541a6b55567f36ff9de17afad3cb620702a9e7c5b069a237f1197b","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"56dac8538e4350cd7cf001327c89f087b68abb2e6aaad58edba8a094b09f6b0f","libm/src/math/acoshf.rs":"df5b0c4d8e37e64cf5ff2d8328b28bc35c78e84060ff769e64523ea9ff9065c1","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"e8fc94031015fddf35e9c26b94da9f6431ee17c81cd7bd37da8ffc98f7e0b32c","libm/src/math/asinhf.rs":"8a0b8933a98a17617a66fef4c7b89eba645fdf05302000babf4a5a5f45328430","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"5934dbd6b7395ca4f103ace7598da723a9270e1cf6b47e7f786debe4bb3651ff","libm/src/math/atanhf.rs":"8ba4711dda19ef2dc33622be65c1483902868083543198c6bbd040d4026293de","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"0e6caff1597818471c28b7c3226dbfe9976fdb38ace5246172ac030754be6b79","libm/src/math/ceilf.rs":"f942bcea617de7da880b68bdfe676837a7984e2a887eaafe181be24c6bc13cc2","libm/src/math/copysign.rs":"d80c880efaf0cdf2ce0a4d4f5a68dd6c36c88d46fa997ec8ac8604bfdb26fa33","libm/src/math/copysignf.rs":"1547116071e68a42b1605eb2fc722db6466a34517dc96b92de1f29a274c3d8e3","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"9c55fc6756ba816996f0b585e07ccfa4cd87575ad525cd30c4a968b30acffda3","libm/src/math/erff.rs":"cb020e8bada9a54573a11fe3271750d73f14fed3092a881a9ceaf98fe32fd5a6","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2deb037f88feac87a0e924b69dd496f0dd3b5d35f2a58e09d4c5166b207e517b","libm/src/math/exp10f.rs":"6979464dfe3f4f2da1f9afc909646499c4bfaef15e10a039384750e2f1586fea","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"dc85b66e4ef662721276ae3a301af22795524e4367ee8dd40f0c24c439773c6d","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"8730d45aa4c591f91dccdcc1ce533fa23e9c6df0c38defb9c57f749cb25e1cd0","libm/src/math/floor.rs":"be15e687a6798defc6f2c6b43028481f8104fb93d2b3f359d3d5d16b78e79d4f","libm/src/math/floorf.rs":"4ec41aa64cfafd23b8cfc043eacea5e9125cca5dcb3f5e655cc3d3458c6ba2c5","libm/src/math/fma.rs":"6872e79787e9270520189b53608f602b8ad5a099f3cef10ad5b9e0c06ef01fe0","libm/src/math/fmaf.rs":"3e0f5727e56f31218f674b9b8975d7e67b3a24a097f06a2a3eca9723cd786213","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"813413bf6266d4fc40db9c5921af3cef4f892ba93e8f6d9efe62a449d1234532","libm/src/math/ilogbf.rs":"dec462780f46682e16cfaa733238bed3b692729e951f53a44726100b6c73a716","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"1d504d7750c0481273baad88196d3644f258af9ad10f8b5b16341c0aab8b9125","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"498552658cc8106d7754f85ae8dbc3306ac2f0a9f7eb5a796be70c5beac92c41","libm/src/math/lgamma_r.rs":"77fb6442aeb5343926d8965e1549dde3e2cc4fd09555de6b56506001d956c344","libm/src/math/lgammaf.rs":"457105f53a4c8717e8f5a117d261dcf94e222e83981337fe23602abe883fe3f7","libm/src/math/lgammaf_r.rs":"44de75babbdd53c4a5879cd6f426e7311db82669def39df5f63914d67d6cc1b1","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"ffa73c08f4c0a4dc6c9d1cb9d62fe97f3a5046edede128c9441cc3adc9170dd3","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"64fba587143fa88cdfa5c9d30b658ab03e3a19e3ea3759394836add4068983c6","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"9be99c44493b2b7088578c0fa2872630725b2da544c751516df0c6c686112a43","libm/src/math/rem_pio2_large.rs":"21762d08d72dc6f2e313123a7311683000974a09b8fcae50994d9c39239721b1","libm/src/math/rem_pio2f.rs":"377349d1308bda8cd2f776e4856fe090baa78fa3db816b680780ddf31b80d446","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/round.rs":"955649c893fa3151b4a81c8e550fbc03f01bb99b40d60986e5f153ee71043f69","libm/src/math/roundf.rs":"8ae8f1f71eedd158566771cfe80b352d2f13c170a0ce8dc2691a14e8a791cfbb","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"0e014e6377c9673a73395ab2ffcf5962e512392afddf8a4e731fb694098faf34","libm/src/math/sincos.rs":"59e9f196140681fa817652134b8d1bdd2d6dd47bb8557b0346c77b176389f883","libm/src/math/sincosf.rs":"d37d71c7204c7892fe24c956df0fb95e7a014a808f5cbd5e125aee48c3c449b5","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"824570a631c2542ccee68b65e3eb08fe79c037a29bbaaf54da5367e7b236124a","libm/src/math/sqrtf.rs":"d9e12ac55c5471c18175efdfb15c092ba71a2eb914d2e1ee3b3310a22202042e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"a6aabb8365410af6611f19f58694ccb74e82bb9ba9e1cdec7e1af787cfa44815","libm/src/math/tgammaf.rs":"c95bd69957387533853532164f7e2251d2b04f5e775406b9e647226ae2bdd5ad","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"619b675b6a9bb81eccddb1fa8214cff63e1f62136629b645c87f036672311732","src/arm.rs":"2035935972d728031d31d35067f0ec474f1c3b1ab86e166130d29df266b09b90","src/arm_linux.rs":"80d18ce84bdfa841fa133f5ee9e9fd50167344436d2d398f74347a90f27606c6","src/float/add.rs":"1a230ed4e17148cfffb7c880929c9c0d5d48d85581d75164c5031b8f05a5d567","src/float/cmp.rs":"a86ccbc0e56f07ba439dc6a4fd835184645178c0a6da625bd4ae24ecf9a790f8","src/float/conv.rs":"0af148b6c717d124e870e5d1926eaa562de37e374c605ea81c1f7eea994146f4","src/float/div.rs":"58bdcd73c5ffafde9cca8a0e7986de0660fb8b5b4d4132e7a63dd21f93f4fe0e","src/float/extend.rs":"180b2e791c58e0526de0a798845c580ce3222c8a15c8665e6e6a4bf5cf1a34aa","src/float/mod.rs":"d15b78070d824f5523f12d55fc084879b638241324451dbcd0ac291589c53125","src/float/mul.rs":"9465960b326897a04543789aa44640aefeb4cc63311e58ae8213f664dd4ac21e","src/float/pow.rs":"64f4935f4bed46d3b9cde4d16f59cca76a110d36d02d76f4b909157349edf5e3","src/float/sub.rs":"c2a87f4628f51d5d908d0f25b5d51ce0599dc559d5a72b20e131261f484d5848","src/int/addsub.rs":"9e7a393c76958fe9e8fb7de9bfe1304766c276bfdaa25761913357e0f6172369","src/int/mod.rs":"d15781df9dc054aa11e23f4825152ae9c609aab15bf43599ff07ff683f513643","src/int/mul.rs":"3142da8783cfac3ef704efcae19838bfda4916965fb852294685cf7664976e8a","src/int/sdiv.rs":"ca47f2a41fe0aad1e37f4e56ab1e0959c5b10c32c3593596c8cef2ff17694389","src/int/shift.rs":"0427e05a39cf6a0abab0b6525e8567afcf336f49fbb0ed0977b480e16a878bd8","src/int/udiv.rs":"9a222e79c0bf74ab77728cfa2026508508b33e7f2ac6cafc1fa34040e5538ba0","src/lib.rs":"da4433593615a60f05aff9f5252f15350e537d97dfa96e6536619545dd173851","src/macros.rs":"9f3aa9b66195b258ff29209c6b1e7962d6f82d31579d669dd74c9fdeee134170","src/math.rs":"a2e45a208bcdd742d32639591c91525a44f891db6057ce066052d67c4d4ae809","src/mem.rs":"4ece60ca07aaff3611a716a80f55668a785ad8399b65fc36cc9ab4b481fa639c","src/probestack.rs":"c1ad1e4a9550a3507bcbec00c8917530a954ba971c02506aeec949381443674a","src/riscv32.rs":"b9b433d248fce35e43a7df430697545f39898fad46be7d0197284764e44993b2","src/x86.rs":"068e456417d4740f048800da1d18eb49dd85f85604e5e383446331925e1effc3","src/x86_64.rs":"3ffbefe3bdc75cd4674ba1bbab9029bc4d6d8635f5e0b1fe30329ec6209bfd8a"},"package":"7bc4ac2c824d2bfc612cba57708198547e9a26943af0632aff033e0693074d5c"}
+\ No newline at end of file
++{"files":{"libm/src/math/atanhf.rs":"8ba4711dda19ef2dc33622be65c1483902868083543198c6bbd040d4026293de","Cargo.toml":"d12e720542879582d4a8b9d6582a367d2962def71cd58cddfccf4e5d8df8b0cd","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","src/int/shift.rs":"0427e05a39cf6a0abab0b6525e8567afcf336f49fbb0ed0977b480e16a878bd8","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/lgamma_r.rs":"77fb6442aeb5343926d8965e1549dde3e2cc4fd09555de6b56506001d956c344","libm/src/math/exp10f.rs":"6979464dfe3f4f2da1f9afc909646499c4bfaef15e10a039384750e2f1586fea","libm/src/math/sincosf.rs":"d37d71c7204c7892fe24c956df0fb95e7a014a808f5cbd5e125aee48c3c449b5","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","src/int/mul.rs":"3142da8783cfac3ef704efcae19838bfda4916965fb852294685cf7664976e8a","libm/src/math/round.rs":"955649c893fa3151b4a81c8e550fbc03f01bb99b40d60986e5f153ee71043f69","libm/src/math/rem_pio2f.rs":"377349d1308bda8cd2f776e4856fe090baa78fa3db816b680780ddf31b80d446","libm/src/math/floor.rs":"be15e687a6798defc6f2c6b43028481f8104fb93d2b3f359d3d5d16b78e79d4f","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/exp10.rs":"2deb037f88feac87a0e924b69dd496f0dd3b5d35f2a58e09d4c5166b207e517b","examples/intrinsics.rs":"5bc2a8e39a541a6b55567f36ff9de17afad3cb620702a9e7c5b069a237f1197b","src/float/mul.rs":"9465960b326897a04543789aa44640aefeb4cc63311e58ae8213f664dd4ac21e","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","src/arm_linux.rs":"80d18ce84bdfa841fa133f5ee9e9fd50167344436d2d398f74347a90f27606c6","src/math.rs":"a2e45a208bcdd742d32639591c91525a44f891db6057ce066052d67c4d4ae809","libm/src/math/sqrtf.rs":"d9e12ac55c5471c18175efdfb15c092ba71a2eb914d2e1ee3b3310a22202042e","libm/src/math/asinhf.rs":"8a0b8933a98a17617a66fef4c7b89eba645fdf05302000babf4a5a5f45328430","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/j1f.rs":"1d504d7750c0481273baad88196d3644f258af9ad10f8b5b16341c0aab8b9125","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/truncf.rs":"619b675b6a9bb81eccddb1fa8214cff63e1f62136629b645c87f036672311732","src/int/udiv.rs":"9a222e79c0bf74ab77728cfa2026508508b33e7f2ac6cafc1fa34040e5538ba0","src/int/sdiv.rs":"ca47f2a41fe0aad1e37f4e56ab1e0959c5b10c32c3593596c8cef2ff17694389","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/sqrt.rs":"824570a631c2542ccee68b65e3eb08fe79c037a29bbaaf54da5367e7b236124a","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","src/float/add.rs":"1a230ed4e17148cfffb7c880929c9c0d5d48d85581d75164c5031b8f05a5d567","libm/src/math/floorf.rs":"4ec41aa64cfafd23b8cfc043eacea5e9125cca5dcb3f5e655cc3d3458c6ba2c5","src/float/sub.rs":"c2a87f4628f51d5d908d0f25b5d51ce0599dc559d5a72b20e131261f484d5848","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/tgamma.rs":"a6aabb8365410af6611f19f58694ccb74e82bb9ba9e1cdec7e1af787cfa44815","libm/src/math/fenv.rs":"8730d45aa4c591f91dccdcc1ce533fa23e9c6df0c38defb9c57f749cb25e1cd0","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"dc85b66e4ef662721276ae3a301af22795524e4367ee8dd40f0c24c439773c6d","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/rem_pio2.rs":"9be99c44493b2b7088578c0fa2872630725b2da544c751516df0c6c686112a43","libm/src/math/atanh.rs":"5934dbd6b7395ca4f103ace7598da723a9270e1cf6b47e7f786debe4bb3651ff","libm/src/math/sin.rs":"0e014e6377c9673a73395ab2ffcf5962e512392afddf8a4e731fb694098faf34","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/erff.rs":"cb020e8bada9a54573a11fe3271750d73f14fed3092a881a9ceaf98fe32fd5a6","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/tgammaf.rs":"c95bd69957387533853532164f7e2251d2b04f5e775406b9e647226ae2bdd5ad","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/lgamma.rs":"498552658cc8106d7754f85ae8dbc3306ac2f0a9f7eb5a796be70c5beac92c41","README.md":"2dd28b207028773ffee09ed0db563ac71b255b6b67256289d67a13cb19d15f94","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/mod.rs":"ffa73c08f4c0a4dc6c9d1cb9d62fe97f3a5046edede128c9441cc3adc9170dd3","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/copysignf.rs":"1547116071e68a42b1605eb2fc722db6466a34517dc96b92de1f29a274c3d8e3","src/float/div.rs":"58bdcd73c5ffafde9cca8a0e7986de0660fb8b5b4d4132e7a63dd21f93f4fe0e","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","src/arm.rs":"2035935972d728031d31d35067f0ec474f1c3b1ab86e166130d29df266b09b90","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","src/x86_64.rs":"3ffbefe3bdc75cd4674ba1bbab9029bc4d6d8635f5e0b1fe30329ec6209bfd8a","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/roundf.rs":"8ae8f1f71eedd158566771cfe80b352d2f13c170a0ce8dc2691a14e8a791cfbb","libm/src/math/acoshf.rs":"df5b0c4d8e37e64cf5ff2d8328b28bc35c78e84060ff769e64523ea9ff9065c1","src/float/mod.rs":"d15b78070d824f5523f12d55fc084879b638241324451dbcd0ac291589c53125","src/float/conv.rs":"0af148b6c717d124e870e5d1926eaa562de37e374c605ea81c1f7eea994146f4","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/acosh.rs":"56dac8538e4350cd7cf001327c89f087b68abb2e6aaad58edba8a094b09f6b0f","src/float/extend.rs":"180b2e791c58e0526de0a798845c580ce3222c8a15c8665e6e6a4bf5cf1a34aa","libm/src/math/ilogbf.rs":"dec462780f46682e16cfaa733238bed3b692729e951f53a44726100b6c73a716","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/ceilf.rs":"f942bcea617de7da880b68bdfe676837a7984e2a887eaafe181be24c6bc13cc2","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","src/lib.rs":"da4433593615a60f05aff9f5252f15350e537d97dfa96e6536619545dd173851","libm/src/math/pow.rs":"64fba587143fa88cdfa5c9d30b658ab03e3a19e3ea3759394836add4068983c6","libm/src/math/fma.rs":"6872e79787e9270520189b53608f602b8ad5a099f3cef10ad5b9e0c06ef01fe0","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","src/riscv32.rs":"b9b433d248fce35e43a7df430697545f39898fad46be7d0197284764e44993b2","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/rem_pio2_large.rs":"21762d08d72dc6f2e313123a7311683000974a09b8fcae50994d9c39239721b1","Cargo.lock":"1dfa9c1f68c8e0f1d1fc90ed0712a3eeb2ea68478064c19d601249f60acde4a1","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","src/x86.rs":"068e456417d4740f048800da1d18eb49dd85f85604e5e383446331925e1effc3","libm/src/math/erf.rs":"9c55fc6756ba816996f0b585e07ccfa4cd87575ad525cd30c4a968b30acffda3","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/ilogb.rs":"813413bf6266d4fc40db9c5921af3cef4f892ba93e8f6d9efe62a449d1234532","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","src/macros.rs":"9f3aa9b66195b258ff29209c6b1e7962d6f82d31579d669dd74c9fdeee134170","src/probestack.rs":"c1ad1e4a9550a3507bcbec00c8917530a954ba971c02506aeec949381443674a","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/lgammaf.rs":"457105f53a4c8717e8f5a117d261dcf94e222e83981337fe23602abe883fe3f7","libm/src/math/sincos.rs":"59e9f196140681fa817652134b8d1bdd2d6dd47bb8557b0346c77b176389f883","libm/src/math/ceil.rs":"0e6caff1597818471c28b7c3226dbfe9976fdb38ace5246172ac030754be6b79","libm/src/math/fmaf.rs":"3e0f5727e56f31218f674b9b8975d7e67b3a24a097f06a2a3eca9723cd786213","src/int/addsub.rs":"9e7a393c76958fe9e8fb7de9bfe1304766c276bfdaa25761913357e0f6172369","src/float/cmp.rs":"a86ccbc0e56f07ba439dc6a4fd835184645178c0a6da625bd4ae24ecf9a790f8","libm/src/math/asinh.rs":"e8fc94031015fddf35e9c26b94da9f6431ee17c81cd7bd37da8ffc98f7e0b32c","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","src/mem.rs":"4ece60ca07aaff3611a716a80f55668a785ad8399b65fc36cc9ab4b481fa639c","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/lgammaf_r.rs":"44de75babbdd53c4a5879cd6f426e7311db82669def39df5f63914d67d6cc1b1","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","src/int/mod.rs":"d15781df9dc054aa11e23f4825152ae9c609aab15bf43599ff07ff683f513643","libm/src/math/copysign.rs":"d80c880efaf0cdf2ce0a4d4f5a68dd6c36c88d46fa997ec8ac8604bfdb26fa33","src/float/pow.rs":"64f4935f4bed46d3b9cde4d16f59cca76a110d36d02d76f4b909157349edf5e3","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","build.rs":"a47b5ed5c7d2a6f2fbc3e9803a8d4f75839db9ac03aa4fab72932d899ecb590f","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88"},"package":"7bc4ac2c824d2bfc612cba57708198547e9a26943af0632aff033e0693074d5c"}
+\ No newline at end of file
+diff --git a/vendor/compiler_builtins/build.rs b/vendor/compiler_builtins/build.rs
+index abeac9bf1..c57802569 100644
+--- a/vendor/compiler_builtins/build.rs
++++ b/vendor/compiler_builtins/build.rs
+@@ -81,7 +81,7 @@ mod c {
+ 
+     use std::collections::BTreeMap;
+     use std::env;
+-    use std::path::PathBuf;
++    use std::path::{Path, PathBuf};
+ 
+     struct Sources {
+         // SYMBOL -> PATH TO SOURCE
+@@ -419,6 +419,37 @@ mod c {
+             if target_os != "windows" {
+                 sources.extend(&[("__multc3", "multc3.c")]);
+             }
++
++            if target_env == "musl" {
++                sources.extend(&[
++                    ("__addtf3", "addtf3.c"),
++                    ("__multf3", "multf3.c"),
++                    ("__subtf3", "subtf3.c"),
++                    ("__divtf3", "divtf3.c"),
++                    ("__powitf2", "powitf2.c"),
++                    ("__fe_getround", "fp_mode.c"),
++                    ("__fe_raise_inexact", "fp_mode.c"),
++                ]);
++            }
++        }
++
++        if target_arch == "mips" {
++            sources.extend(&[("__bswapsi2", "bswapsi2.c")]);
++        }
++
++        if target_arch == "mips64" {
++            sources.extend(&[
++                ("__extenddftf2", "extenddftf2.c"),
++                ("__netf2", "comparetf2.c"),
++                ("__addtf3", "addtf3.c"),
++                ("__multf3", "multf3.c"),
++                ("__subtf3", "subtf3.c"),
++                ("__fixtfsi", "fixtfsi.c"),
++                ("__floatsitf", "floatsitf.c"),
++                ("__fixunstfsi", "fixunstfsi.c"),
++                ("__floatunsitf", "floatunsitf.c"),
++                ("__fe_getround", "fp_mode.c"),
++            ]);
+         }
+ 
+         // Remove the assembly implementations that won't compile for the target
+@@ -456,7 +487,20 @@ mod c {
+         // use of that macro in lib/builtins/int_util.h in compiler-rt.
+         cfg.flag_if_supported(&format!("-ffile-prefix-map={}=.", root.display()));
+ 
++        // Include out-of-line atomics for aarch64, which are all generated by supplying different
++        // sets of flags to the same source file.
+         let src_dir = root.join("lib/builtins");
++        if target_arch == "aarch64" {
++            let atomics_libs = build_aarch64_out_of_line_atomics_libraries(&src_dir, cfg);
++            if !atomics_libs.is_empty() {
++                for library in  atomics_libs {
++                    cfg.object(library);
++                }
++                // Some run-time CPU feature detection is necessary, as well.
++                sources.extend(&[("__aarch64_have_lse_atomics", "cpu_model.c")]);
++            }
++        }
++
+         for (sym, src) in sources.map.iter() {
+             let src = src_dir.join(src);
+             cfg.file(&src);
+@@ -466,4 +510,60 @@ mod c {
+ 
+         cfg.compile("libcompiler-rt.a");
+     }
++
++    fn build_aarch64_out_of_line_atomics_libraries(
++        builtins_dir: &Path,
++        cfg: &cc::Build,
++    ) -> Vec<PathBuf> {
++        // NOTE: because we're recompiling the same source file in N different ways, building
++        // serially is necessary. If we want to lift this restriction, we can either:
++        // - create symlinks to lse.S and build those_(though we'd still need to pass special
++        //   #define-like flags to each of these), or
++        // - synthesizing tiny .S files in out/ with the proper #defines, which ultimately #include
++        //   lse.S.
++        // That said, it's unclear how useful this added complexity will be, so just do the simple
++        // thing for now.
++        let outlined_atomics_file = builtins_dir.join("aarch64/lse.S");
++
++        // A stable release hasn't been made with lse.S yet. Until we pick that up, do nothing.
++        if !outlined_atomics_file.exists() {
++            return vec![];
++        }
++
++        println!("cargo:rerun-if-changed={}", outlined_atomics_file.display());
++        let out_dir: PathBuf = env::var("OUT_DIR").unwrap().into();
++
++        // Ideally, this would be a Vec of object files, but cc doesn't make it *entirely*
++        // trivial to build an individual object.
++        let mut atomics_libraries = Vec::new();
++        for instruction_type in &["cas", "cwp", "ldadd", "ldclr", "ldeor", "ldset"] {
++            for size in &[1, 2, 4, 8, 16] {
++                if *size == 16 && *instruction_type != "cas" {
++                    continue;
++                }
++
++                for (model_number, model_name) in
++                    &[(1, "relax"), (2, "acq"), (3, "rel"), (4, "acq_rel")]
++                {
++                    let library_name = format!(
++                        "liboutline_atomic_helper_{}_{}_{}.a",
++                        instruction_type, size, model_name
++                    );
++                    let sym = format!("__aarch64_{}{}_{}", instruction_type, size, model_name);
++                    let mut cfg = cfg.clone();
++
++                    cfg.include(&builtins_dir)
++                        .define(&format!("L_{}", instruction_type), None)
++                        .define("SIZE", size.to_string().as_str())
++                        .define("MODEL", model_number.to_string().as_str())
++                        .file(&outlined_atomics_file);
++                    cfg.compile(&library_name);
++
++                    atomics_libraries.push(out_dir.join(library_name));
++                    println!("cargo:rustc-cfg={}=\"optimized-c\"", sym);
++                }
++            }
++        }
++        atomics_libraries
++    }
+ }
diff --git a/dev-lang/rust/files/rust-1.51.0-Handle-sparse-git-repo-without-erroring.patch b/dev-lang/rust/files/rust-1.51.0-Handle-sparse-git-repo-without-erroring.patch
new file mode 100644
index 0000000..fe536c9
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-Handle-sparse-git-repo-without-erroring.patch
@@ -0,0 +1,62 @@
+Cherry-pick of https://github.com/rust-lang/cargo/pull/8775, so that
+cargo works with git worktrees.
+
+diff --git a/src/tools/cargo/src/cargo/sources/path.rs b/src/tools/cargo/src/cargo/sources/path.rs
+index 64b0f77ed..f7dcfee7b 100644
+--- a/src/tools/cargo/src/cargo/sources/path.rs
++++ b/src/tools/cargo/src/cargo/sources/path.rs
+@@ -191,12 +191,25 @@ impl<'cfg> PathSource<'cfg> {
+         let index = repo
+             .index()
+             .chain_err(|| format!("failed to open git index at {}", repo.path().display()))?;
+-        let repo_root = repo.workdir().ok_or_else(|| {
+-            anyhow::format_err!(
++        let repo_root = if let Some(root) = repo.workdir() {
++            root
++        } else if !repo.is_bare() {
++            // Sparse-checkouts (and possibly other git
++            // configurations) make libgit2 confused but there's still
++            // an actual non-bare repo here.
++            if let Some(r) = repo.path().parent() {
++                r
++            } else {
++                return Err(anyhow::format_err!(
++                    "repo path missing .git subfolder even when non-bare",
++                ));
++            }
++        } else {
++            return Err(anyhow::format_err!(
+                 "did not expect repo at {} to be bare",
+                 repo.path().display()
+-            )
+-        })?;
++            ));
++        };
+         let repo_relative_path = match paths::strip_prefix_canonical(root, repo_root) {
+             Ok(p) => p,
+             Err(e) => {
+@@ -225,9 +238,21 @@ impl<'cfg> PathSource<'cfg> {
+     ) -> CargoResult<Vec<PathBuf>> {
+         warn!("list_files_git {}", pkg.package_id());
+         let index = repo.index()?;
+-        let root = repo
+-            .workdir()
+-            .ok_or_else(|| anyhow::format_err!("can't list files on a bare repository"))?;
++        let root = if let Some(root) = repo.workdir() {
++            root
++        } else if !repo.is_bare() {
++            // Sparse-checkouts (and possibly other git
++            // configurations) make libgit2 confused but there's still
++            // an actual non-bare repo here.
++            if let Some(r) = repo.path().parent() {
++                r
++            } else {
++                return Err(anyhow::format_err!("malformed non-bare repository root",));
++            }
++        } else {
++            return Err(anyhow::format_err!("can't list files on a bare repository",));
++        };
++
+         let pkg_path = pkg.root();
+
+         let mut ret = Vec::<PathBuf>::new();
diff --git a/dev-lang/rust/files/rust-1.51.0-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch b/dev-lang/rust/files/rust-1.51.0-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch
new file mode 100644
index 0000000..da9e10b
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch
@@ -0,0 +1,25 @@
+diff --git a/llvm/cmake/modules/LLVMProcessSources.cmake b/llvm/cmake/modules/LLVMProcessSources.cmake
+index ba8dca313c8..b99430c0f30 100644
+--- a/src/llvm-project/llvm/cmake/modules/LLVMProcessSources.cmake
++++ b/src/llvm-project/llvm/cmake/modules/LLVMProcessSources.cmake
+@@ -63,11 +63,15 @@ function(llvm_process_sources OUT_VAR)
+     llvm_check_source_file_list(${sources})
+   endif()
+ 
+-  # This adds .td and .h files to the Visual Studio solution:
+-  add_td_sources(sources)
+-  find_all_header_files(hdrs "${ARG_ADDITIONAL_HEADER_DIRS}")
+-  if (hdrs)
+-    set_source_files_properties(${hdrs} PROPERTIES HEADER_FILE_ONLY ON)
++  if( LLVM_ENABLE_IDE )
++    # This adds .td and .h files to the Visual Studio solution:
++    add_td_sources(sources)
++    find_all_header_files(hdrs "${ARG_ADDITIONAL_HEADER_DIRS}")
++    if (hdrs)
++      set_source_files_properties(${hdrs} PROPERTIES HEADER_FILE_ONLY ON)
++    endif()
++    set_source_files_properties(${ARG_ADDITIONAL_HEADERS} PROPERTIES HEADER_FILE_ONLY ON)
++    list(APPEND sources ${ARG_ADDITIONAL_HEADERS} ${hdrs})
+   endif()
+   set_source_files_properties(${ARG_ADDITIONAL_HEADERS} PROPERTIES HEADER_FILE_ONLY ON)
+   list(APPEND sources ${ARG_ADDITIONAL_HEADERS} ${hdrs})
diff --git a/dev-lang/rust/files/rust-1.51.0-aarch64-outline-atomics.patch b/dev-lang/rust/files/rust-1.51.0-aarch64-outline-atomics.patch
new file mode 100644
index 0000000..ba7904c
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-aarch64-outline-atomics.patch
@@ -0,0 +1,561 @@
+Adds outline atomics support to Rust's compiler-rt build, since this is required
+with a sufficiently new version of clang. Support for these hasn't reached a
+stable version of LLVM yet, so we need to pick the changes and the corresponding
+build logic in.
+
+diff --git a/src/llvm-project/compiler-rt/lib/builtins/aarch64/lse.S b/src/llvm-project/compiler-rt/lib/builtins/aarch64/lse.S
+new file mode 100644
+index 000000000..5dc0d5320
+--- /dev/null
++++ b/src/llvm-project/compiler-rt/lib/builtins/aarch64/lse.S
+@@ -0,0 +1,236 @@
++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
++// See https://llvm.org/LICENSE.txt for license information.
++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
++
++#include "assembly.h"
++
++// Out-of-line LSE atomics helpers. Ported from libgcc library.
++// N = {1, 2, 4, 8}
++// M = {1, 2, 4, 8, 16}
++// ORDER = {'relax', 'acq', 'rel', 'acq_rel'}
++// Routines implemented:
++//
++//  iM __aarch64_casM_ORDER(iM expected, iM desired, iM *ptr)
++//  iN __aarch64_swpN_ORDER(iN val, iN *ptr)
++//  iN __aarch64_ldaddN_ORDER(iN val, iN *ptr)
++//  iN __aarch64_ldclrN_ORDER(iN val, iN *ptr)
++//  iN __aarch64_ldeorN_ORDER(iN val, iN *ptr)
++//  iN __aarch64_ldsetN_ORDER(iN val, iN *ptr)
++//
++// Routines may modify temporary registers tmp0, tmp1, tmp2,
++// return value x0 and the flags only.
++
++#ifdef __aarch64__
++
++#ifdef HAS_ASM_LSE
++.arch armv8-a+lse
++#else
++.arch armv8-a
++#endif
++
++#if !defined(__APPLE__)
++HIDDEN(__aarch64_have_lse_atomics)
++#else
++HIDDEN(___aarch64_have_lse_atomics)
++#endif
++
++// Generate mnemonics for
++// L_cas:                                 SIZE: 1,2,4,8,16 MODEL: 1,2,3,4
++// L_swp L_ldadd L_ldclr L_ldeor L_ldset: SIZE: 1,2,4,8    MODEL: 1,2,3,4
++
++#if SIZE == 1
++#define S b
++#define UXT uxtb
++#define B 0x00000000
++#elif SIZE == 2
++#define S h
++#define UXT uxth
++#define B 0x40000000
++#elif SIZE == 4 || SIZE == 8 || SIZE == 16
++#define S
++#define UXT mov
++#if SIZE == 4
++#define B 0x80000000
++#elif SIZE == 8
++#define B 0xc0000000
++#endif
++#else
++#error
++#endif // SIZE
++
++#if MODEL == 1
++#define SUFF _relax
++#define A
++#define L
++#define M 0x000000
++#define N 0x000000
++#elif MODEL == 2
++#define SUFF _acq
++#define A a
++#define L
++#define M 0x400000
++#define N 0x800000
++#elif MODEL == 3
++#define SUFF _rel
++#define A
++#define L l
++#define M 0x008000
++#define N 0x400000
++#elif MODEL == 4
++#define SUFF _acq_rel
++#define A a
++#define L l
++#define M 0x408000
++#define N 0xc00000
++#else
++#error
++#endif // MODEL
++
++// Define register size.
++#define x(N) GLUE2(x, N)
++#define w(N) GLUE2(w, N)
++#if SIZE < 8
++#define s(N) w(N)
++#else
++#define s(N) x(N)
++#endif
++
++#define NAME(BASE) GLUE4(__aarch64_, BASE, SIZE, SUFF)
++#define LDXR GLUE4(ld, A, xr, S)
++#define STXR GLUE4(st, L, xr, S)
++
++// Define temporary registers.
++#define tmp0 16
++#define tmp1 17
++#define tmp2 15
++
++// Macro for branch to label if no LSE available
++.macro JUMP_IF_NOT_LSE label
++#if !defined(__APPLE__)
++        adrp    x(tmp0), __aarch64_have_lse_atomics
++        ldrb    w(tmp0), [x(tmp0), :lo12:__aarch64_have_lse_atomics]
++#else
++        adrp    x(tmp0), ___aarch64_have_lse_atomics@page
++        ldrb    w(tmp0), [x(tmp0), ___aarch64_have_lse_atomics@pageoff]
++#endif
++        cbz     w(tmp0), \label
++.endm
++
++#ifdef L_cas
++DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(NAME(cas))
++        JUMP_IF_NOT_LSE 8f
++#if SIZE < 16
++#ifdef HAS_ASM_LSE
++#define CAS GLUE4(cas, A, L, S) s(0), s(1), [x2]
++#else
++#define CAS .inst 0x08a07c41 + B + M
++#endif
++        CAS    // s(0), s(1), [x2]
++        ret
++8:
++        UXT    s(tmp0), s(0)
++0:
++        LDXR   s(0), [x2]
++        cmp    s(0), s(tmp0)
++        bne    1f
++        STXR   w(tmp1), s(1), [x2]
++        cbnz   w(tmp1), 0b
++1:
++        ret
++#else
++#define LDXP GLUE3(ld, A, xp)
++#define STXP GLUE3(st, L, xp)
++#ifdef HAS_ASM_LSE
++#define CASP GLUE3(casp, A, L)  x0, x1, x2, x3, [x4]
++#else
++#define CASP .inst 0x48207c82 + M
++#endif
++
++        CASP   // x0, x1, x2, x3, [x4]
++        ret
++8:
++        mov    x(tmp0), x0
++        mov    x(tmp1), x1
++0:
++        LDXP   x0, x1, [x4]
++        cmp    x0, x(tmp0)
++        ccmp   x1, x(tmp1), #0, eq
++        bne    1f
++        STXP   w(tmp2), x2, x3, [x4]
++        cbnz   w(tmp2), 0b
++1:
++        ret
++#endif
++END_COMPILERRT_OUTLINE_FUNCTION(NAME(cas))
++#endif // L_cas
++
++#ifdef L_swp
++#ifdef HAS_ASM_LSE
++#define SWP GLUE4(swp, A, L, S)  s(0), s(0), [x1]
++#else
++#define SWP .inst 0x38208020 + B + N
++#endif
++DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(NAME(swp))
++        JUMP_IF_NOT_LSE 8f
++        SWP    // s(0), s(0), [x1]
++        ret
++8:
++        mov    s(tmp0), s(0)
++0:
++        LDXR   s(0), [x1]
++        STXR   w(tmp1), s(tmp0), [x1]
++        cbnz   w(tmp1), 0b
++        ret
++END_COMPILERRT_OUTLINE_FUNCTION(NAME(swp))
++#endif // L_swp
++
++#if defined(L_ldadd) || defined(L_ldclr) ||                                    \
++    defined(L_ldeor) || defined(L_ldset)
++
++#ifdef L_ldadd
++#define LDNM ldadd
++#define OP add
++#define OPN 0x0000
++#elif defined(L_ldclr)
++#define LDNM ldclr
++#define OP bic
++#define OPN 0x1000
++#elif defined(L_ldeor)
++#define LDNM ldeor
++#define OP eor
++#define OPN 0x2000
++#elif defined(L_ldset)
++#define LDNM ldset
++#define OP orr
++#define OPN 0x3000
++#else
++#error
++#endif
++
++#ifdef HAS_ASM_LSE
++#define LDOP GLUE4(LDNM, A, L, S) s(0), s(0), [x1]
++#else
++#define LDOP .inst 0x38200020 + OPN + B + N
++#endif
++
++DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(NAME(LDNM))
++        JUMP_IF_NOT_LSE 8f
++        LDOP // s(0), s(0), [x1]
++        ret
++8:
++        mov    s(tmp0), s(0)
++0:
++        LDXR   s(0), [x1]
++        OP     s(tmp1), s(0), s(tmp0)
++        STXR   w(tmp2), s(tmp1), [x1]
++        cbnz   w(tmp2), 0b
++        ret
++END_COMPILERRT_OUTLINE_FUNCTION(NAME(LDNM))
++#endif // L_ldadd L_ldclr L_ldeor L_ldset
++
++NO_EXEC_STACK_DIRECTIVE
++
++// GNU property note for BTI and PAC
++GNU_PROPERTY_BTI_PAC
++
++#endif // __aarch64__
+diff --git a/src/llvm-project/compiler-rt/lib/builtins/assembly.h b/src/llvm-project/compiler-rt/lib/builtins/assembly.h
+index f437cb87f..f6ce6a9fc 100644
+--- a/src/llvm-project/compiler-rt/lib/builtins/assembly.h
++++ b/src/llvm-project/compiler-rt/lib/builtins/assembly.h
+@@ -14,8 +14,8 @@
+ #ifndef COMPILERRT_ASSEMBLY_H
+ #define COMPILERRT_ASSEMBLY_H
+ 
+-#if defined(__POWERPC__) || defined(__powerpc__) || defined(__ppc__)
+-#define SEPARATOR @
++#if defined(__APPLE__) && defined(__aarch64__)
++#define SEPARATOR %%
+ #else
+ #define SEPARATOR ;
+ #endif
+@@ -35,14 +35,14 @@
+ #define HIDDEN(name) .hidden name
+ #define LOCAL_LABEL(name) .L_##name
+ #define FILE_LEVEL_DIRECTIVE
+-#if defined(__arm__)
++#if defined(__arm__) || defined(__aarch64__)
+ #define SYMBOL_IS_FUNC(name) .type name,%function
+ #else
+ #define SYMBOL_IS_FUNC(name) .type name,@function
+ #endif
+ #define CONST_SECTION .section .rodata
+ 
+-#if defined(__GNU__) || defined(__FreeBSD__) || defined(__Fuchsia__) || \
++#if defined(__GNU__) || defined(__FreeBSD__) || defined(__Fuchsia__) ||        \
+     defined(__linux__)
+ #define NO_EXEC_STACK_DIRECTIVE .section .note.GNU-stack,"",%progbits
+ #else
+@@ -65,6 +65,66 @@
+ 
+ #endif
+ 
++#if defined(__arm__) || defined(__aarch64__)
++#define FUNC_ALIGN                                                             \
++  .text SEPARATOR                                                              \
++  .balign 16 SEPARATOR
++#else
++#define FUNC_ALIGN
++#endif
++
++// BTI and PAC gnu property note
++#define NT_GNU_PROPERTY_TYPE_0 5
++#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
++#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI 1
++#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC 2
++
++#if defined(__ARM_FEATURE_BTI_DEFAULT)
++#define BTI_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_BTI
++#else
++#define BTI_FLAG 0
++#endif
++
++#if __ARM_FEATURE_PAC_DEFAULT & 3
++#define PAC_FLAG GNU_PROPERTY_AARCH64_FEATURE_1_PAC
++#else
++#define PAC_FLAG 0
++#endif
++
++#define GNU_PROPERTY(type, value)                                              \
++  .pushsection .note.gnu.property, "a" SEPARATOR                               \
++  .p2align 3 SEPARATOR                                                         \
++  .word 4 SEPARATOR                                                            \
++  .word 16 SEPARATOR                                                           \
++  .word NT_GNU_PROPERTY_TYPE_0 SEPARATOR                                       \
++  .asciz "GNU" SEPARATOR                                                       \
++  .word type SEPARATOR                                                         \
++  .word 4 SEPARATOR                                                            \
++  .word value SEPARATOR                                                        \
++  .word 0 SEPARATOR                                                            \
++  .popsection
++
++#if BTI_FLAG != 0
++#define BTI_C bti c
++#else
++#define BTI_C
++#endif
++
++#if (BTI_FLAG | PAC_FLAG) != 0
++#define GNU_PROPERTY_BTI_PAC                                                   \
++  GNU_PROPERTY(GNU_PROPERTY_AARCH64_FEATURE_1_AND, BTI_FLAG | PAC_FLAG)
++#else
++#define GNU_PROPERTY_BTI_PAC
++#endif
++
++#if defined(__clang__) || defined(__GCC_HAVE_DWARF2_CFI_ASM)
++#define CFI_START .cfi_startproc
++#define CFI_END .cfi_endproc
++#else
++#define CFI_START
++#define CFI_END
++#endif
++
+ #if defined(__arm__)
+ 
+ // Determine actual [ARM][THUMB[1][2]] ISA using compiler predefined macros:
+@@ -131,8 +191,14 @@
+ #define DEFINE_CODE_STATE
+ #endif
+ 
+-#define GLUE2(a, b) a##b
+-#define GLUE(a, b) GLUE2(a, b)
++#define GLUE2_(a, b) a##b
++#define GLUE(a, b) GLUE2_(a, b)
++#define GLUE2(a, b) GLUE2_(a, b)
++#define GLUE3_(a, b, c) a##b##c
++#define GLUE3(a, b, c) GLUE3_(a, b, c)
++#define GLUE4_(a, b, c, d) a##b##c##d
++#define GLUE4(a, b, c, d) GLUE4_(a, b, c, d)
++
+ #define SYMBOL_NAME(name) GLUE(__USER_LABEL_PREFIX__, name)
+ 
+ #ifdef VISIBILITY_HIDDEN
+@@ -177,6 +243,16 @@
+   DECLARE_FUNC_ENCODING                                                        \
+   name:
+ 
++#define DEFINE_COMPILERRT_OUTLINE_FUNCTION_UNMANGLED(name)                     \
++  DEFINE_CODE_STATE                                                            \
++  FUNC_ALIGN                                                                   \
++  .globl name SEPARATOR                                                        \
++  SYMBOL_IS_FUNC(name) SEPARATOR                                               \
++  DECLARE_SYMBOL_VISIBILITY(name) SEPARATOR                                    \
++  CFI_START SEPARATOR                                                          \
++  DECLARE_FUNC_ENCODING                                                        \
++  name: SEPARATOR BTI_C
++
+ #define DEFINE_COMPILERRT_FUNCTION_ALIAS(name, target)                         \
+   .globl SYMBOL_NAME(name) SEPARATOR                                           \
+   SYMBOL_IS_FUNC(SYMBOL_NAME(name)) SEPARATOR                                  \
+@@ -193,8 +269,13 @@
+ #ifdef __ELF__
+ #define END_COMPILERRT_FUNCTION(name)                                          \
+   .size SYMBOL_NAME(name), . - SYMBOL_NAME(name)
++#define END_COMPILERRT_OUTLINE_FUNCTION(name)                                  \
++  CFI_END SEPARATOR                                                            \
++  .size SYMBOL_NAME(name), . - SYMBOL_NAME(name)
+ #else
+ #define END_COMPILERRT_FUNCTION(name)
++#define END_COMPILERRT_OUTLINE_FUNCTION(name)                                  \
++  CFI_END
+ #endif
+ 
+ #endif // COMPILERRT_ASSEMBLY_H
+diff --git a/src/llvm-project/compiler-rt/lib/builtins/cpu_model.c b/src/llvm-project/compiler-rt/lib/builtins/cpu_model.c
+index 468bcc84c..1f72d800f 100644
+--- a/src/llvm-project/compiler-rt/lib/builtins/cpu_model.c
++++ b/src/llvm-project/compiler-rt/lib/builtins/cpu_model.c
+@@ -12,6 +12,16 @@
+ //
+ //===----------------------------------------------------------------------===//
+ 
++#if defined(HAVE_INIT_PRIORITY)
++#define CONSTRUCTOR_ATTRIBUTE __attribute__((__constructor__ 101))
++#elif __has_attribute(__constructor__)
++#define CONSTRUCTOR_ATTRIBUTE __attribute__((__constructor__))
++#else
++// FIXME: For MSVC, we should make a function pointer global in .CRT$X?? so that
++// this runs during initialization.
++#define CONSTRUCTOR_ATTRIBUTE
++#endif
++
+ #if (defined(__i386__) || defined(_M_IX86) || defined(__x86_64__) ||           \
+      defined(_M_X64)) &&                                                       \
+     (defined(__GNUC__) || defined(__clang__) || defined(_MSC_VER))
+@@ -656,16 +666,6 @@ static void getAvailableFeatures(unsigned ECX, unsigned EDX, unsigned MaxLeaf,
+ #undef setFeature
+ }
+ 
+-#if defined(HAVE_INIT_PRIORITY)
+-#define CONSTRUCTOR_ATTRIBUTE __attribute__((__constructor__ 101))
+-#elif __has_attribute(__constructor__)
+-#define CONSTRUCTOR_ATTRIBUTE __attribute__((__constructor__))
+-#else
+-// FIXME: For MSVC, we should make a function pointer global in .CRT$X?? so that
+-// this runs during initialization.
+-#define CONSTRUCTOR_ATTRIBUTE
+-#endif
+-
+ #ifndef _WIN32
+ __attribute__((visibility("hidden")))
+ #endif
+@@ -741,4 +741,24 @@ int CONSTRUCTOR_ATTRIBUTE __cpu_indicator_init(void) {
+   return 0;
+ }
+ 
++#elif defined(__aarch64__)
++// LSE support detection for out-of-line atomics
++// using HWCAP and Auxiliary vector
++_Bool __aarch64_have_lse_atomics
++    __attribute__((visibility("hidden"), nocommon));
++#if defined(__has_include)
++#if __has_include(<sys/auxv.h>)
++#include <sys/auxv.h>
++#ifndef AT_HWCAP
++#define AT_HWCAP 16
++#endif
++#ifndef HWCAP_ATOMICS
++#define HWCAP_ATOMICS (1 << 8)
++#endif
++static void CONSTRUCTOR_ATTRIBUTE init_have_lse_atomics(void) {
++  unsigned long hwcap = getauxval(AT_HWCAP);
++  __aarch64_have_lse_atomics = (hwcap & HWCAP_ATOMICS) != 0;
++}
++#endif // defined(__has_include)
++#endif // __has_include(<sys/auxv.h>)
+ #endif
+diff --git a/vendor/compiler_builtins/.cargo-checksum.json b/vendor/compiler_builtins/.cargo-checksum.json
+index 4322d5560..455b74c98 100644
+--- a/vendor/compiler_builtins/.cargo-checksum.json
++++ b/vendor/compiler_builtins/.cargo-checksum.json
+@@ -1 +1 @@
+-{"files":{"Cargo.lock":"fedb77f7dd757df815cfa613ef5a061fb889834523eb26ba3c8ac5b646266384","Cargo.toml":"cc15004b8111fcbff286d52f1a68460d52ab1c0d7ca6168cbd00836441ae934d","README.md":"2dd28b207028773ffee09ed0db563ac71b255b6b67256289d67a13cb19d15f94","build.rs":"8140e3dce70516bbf8d151565f8f50a31bbfab60e749becd649f4c11ee350282","examples/intrinsics.rs":"5bc2a8e39a541a6b55567f36ff9de17afad3cb620702a9e7c5b069a237f1197b","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/acosh.rs":"56dac8538e4350cd7cf001327c89f087b68abb2e6aaad58edba8a094b09f6b0f","libm/src/math/acoshf.rs":"df5b0c4d8e37e64cf5ff2d8328b28bc35c78e84060ff769e64523ea9ff9065c1","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","libm/src/math/asinh.rs":"e8fc94031015fddf35e9c26b94da9f6431ee17c81cd7bd37da8ffc98f7e0b32c","libm/src/math/asinhf.rs":"8a0b8933a98a17617a66fef4c7b89eba645fdf05302000babf4a5a5f45328430","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/atanh.rs":"5934dbd6b7395ca4f103ace7598da723a9270e1cf6b47e7f786debe4bb3651ff","libm/src/math/atanhf.rs":"8ba4711dda19ef2dc33622be65c1483902868083543198c6bbd040d4026293de","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/ceil.rs":"0e6caff1597818471c28b7c3226dbfe9976fdb38ace5246172ac030754be6b79","libm/src/math/ceilf.rs":"f942bcea617de7da880b68bdfe676837a7984e2a887eaafe181be24c6bc13cc2","libm/src/math/copysign.rs":"d80c880efaf0cdf2ce0a4d4f5a68dd6c36c88d46fa997ec8ac8604bfdb26fa33","libm/src/math/copysignf.rs":"1547116071e68a42b1605eb2fc722db6466a34517dc96b92de1f29a274c3d8e3","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/erf.rs":"9c55fc6756ba816996f0b585e07ccfa4cd87575ad525cd30c4a968b30acffda3","libm/src/math/erff.rs":"cb020e8bada9a54573a11fe3271750d73f14fed3092a881a9ceaf98fe32fd5a6","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/exp10.rs":"2deb037f88feac87a0e924b69dd496f0dd3b5d35f2a58e09d4c5166b207e517b","libm/src/math/exp10f.rs":"6979464dfe3f4f2da1f9afc909646499c4bfaef15e10a039384750e2f1586fea","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","libm/src/math/fabsf.rs":"dc85b66e4ef662721276ae3a301af22795524e4367ee8dd40f0c24c439773c6d","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/fenv.rs":"8730d45aa4c591f91dccdcc1ce533fa23e9c6df0c38defb9c57f749cb25e1cd0","libm/src/math/floor.rs":"be15e687a6798defc6f2c6b43028481f8104fb93d2b3f359d3d5d16b78e79d4f","libm/src/math/floorf.rs":"4ec41aa64cfafd23b8cfc043eacea5e9125cca5dcb3f5e655cc3d3458c6ba2c5","libm/src/math/fma.rs":"6872e79787e9270520189b53608f602b8ad5a099f3cef10ad5b9e0c06ef01fe0","libm/src/math/fmaf.rs":"3e0f5727e56f31218f674b9b8975d7e67b3a24a097f06a2a3eca9723cd786213","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/ilogb.rs":"813413bf6266d4fc40db9c5921af3cef4f892ba93e8f6d9efe62a449d1234532","libm/src/math/ilogbf.rs":"dec462780f46682e16cfaa733238bed3b692729e951f53a44726100b6c73a716","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/j1f.rs":"1d504d7750c0481273baad88196d3644f258af9ad10f8b5b16341c0aab8b9125","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma.rs":"498552658cc8106d7754f85ae8dbc3306ac2f0a9f7eb5a796be70c5beac92c41","libm/src/math/lgamma_r.rs":"77fb6442aeb5343926d8965e1549dde3e2cc4fd09555de6b56506001d956c344","libm/src/math/lgammaf.rs":"457105f53a4c8717e8f5a117d261dcf94e222e83981337fe23602abe883fe3f7","libm/src/math/lgammaf_r.rs":"44de75babbdd53c4a5879cd6f426e7311db82669def39df5f63914d67d6cc1b1","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/mod.rs":"ffa73c08f4c0a4dc6c9d1cb9d62fe97f3a5046edede128c9441cc3adc9170dd3","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","libm/src/math/pow.rs":"64fba587143fa88cdfa5c9d30b658ab03e3a19e3ea3759394836add4068983c6","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/rem_pio2.rs":"9be99c44493b2b7088578c0fa2872630725b2da544c751516df0c6c686112a43","libm/src/math/rem_pio2_large.rs":"21762d08d72dc6f2e313123a7311683000974a09b8fcae50994d9c39239721b1","libm/src/math/rem_pio2f.rs":"377349d1308bda8cd2f776e4856fe090baa78fa3db816b680780ddf31b80d446","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/round.rs":"955649c893fa3151b4a81c8e550fbc03f01bb99b40d60986e5f153ee71043f69","libm/src/math/roundf.rs":"8ae8f1f71eedd158566771cfe80b352d2f13c170a0ce8dc2691a14e8a791cfbb","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","libm/src/math/sin.rs":"0e014e6377c9673a73395ab2ffcf5962e512392afddf8a4e731fb694098faf34","libm/src/math/sincos.rs":"59e9f196140681fa817652134b8d1bdd2d6dd47bb8557b0346c77b176389f883","libm/src/math/sincosf.rs":"d37d71c7204c7892fe24c956df0fb95e7a014a808f5cbd5e125aee48c3c449b5","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","libm/src/math/sqrt.rs":"824570a631c2542ccee68b65e3eb08fe79c037a29bbaaf54da5367e7b236124a","libm/src/math/sqrtf.rs":"d9e12ac55c5471c18175efdfb15c092ba71a2eb914d2e1ee3b3310a22202042e","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","libm/src/math/tgamma.rs":"a6aabb8365410af6611f19f58694ccb74e82bb9ba9e1cdec7e1af787cfa44815","libm/src/math/tgammaf.rs":"c95bd69957387533853532164f7e2251d2b04f5e775406b9e647226ae2bdd5ad","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/truncf.rs":"619b675b6a9bb81eccddb1fa8214cff63e1f62136629b645c87f036672311732","src/arm.rs":"0f0e1cc79e53bf00192990544f99d85e5b2d5a1686fbeb5a2928481209ed2ef6","src/arm_linux.rs":"80d18ce84bdfa841fa133f5ee9e9fd50167344436d2d398f74347a90f27606c6","src/float/add.rs":"1a230ed4e17148cfffb7c880929c9c0d5d48d85581d75164c5031b8f05a5d567","src/float/cmp.rs":"83c8b62240a7275580dfd54786abee6cfeddf566dbb66803961e1d9115e46ae1","src/float/conv.rs":"4f2066ec5d536407819f19d6d5373b0773e7ab3e6455a7060f7c250bb6135175","src/float/div.rs":"1777fa8e1a18ce8b616b69e2cc732f4ab44781f12276a4089e074f7b4a5288c9","src/float/extend.rs":"180b2e791c58e0526de0a798845c580ce3222c8a15c8665e6e6a4bf5cf1a34aa","src/float/mod.rs":"cdee8f28d7e513fdbab282693cba79d5b06753d8259dd45829c98191ce483017","src/float/mul.rs":"2cafd35cbad5bd4ed6368f11ea13667f1f7f3f7cba05ccc10e38447e3a002075","src/float/pow.rs":"64f4935f4bed46d3b9cde4d16f59cca76a110d36d02d76f4b909157349edf5e3","src/float/sub.rs":"c2a87f4628f51d5d908d0f25b5d51ce0599dc559d5a72b20e131261f484d5848","src/int/addsub.rs":"7ec45ce1ba15b56a5b7129d3e5722c4db764c6545306d3fa9090983bcabd6f17","src/int/leading_zeros.rs":"91a445e5c0edd3c488fa95f9d5cba54a04bdc9e8573ae4fe5b30b51e01cb9476","src/int/mod.rs":"3dc621352089bbc99233fefbe3aecd3f86444d9b9119619245a0be4fc6c0ad17","src/int/mul.rs":"40c5a84c0bff28797eccc9cf8884b5880261818dee21c961f17f727b74d02261","src/int/sdiv.rs":"ec870b6a4b92e6f6c2ce5189bb98ce04f54272d32f8796d9d543b576ba32b76d","src/int/shift.rs":"4af3b9ec0b7e53587eef6257a086d4c194820f92b6fc547a7c96bd05ca60c708","src/int/specialized_div_rem/asymmetric.rs":"126104346b83e5c64c6015a1f891edb3c032e3319f802c265e6a6d010465e0fa","src/int/specialized_div_rem/binary_long.rs":"8be993c8cd2c9db59283e8e98870d276246b95b463446aa0cb13f71d1c92b31e","src/int/specialized_div_rem/delegate.rs":"f32fcf78fad5ad08eed1744bd1a4a3d444bd9fc8a71d72ad03bb3d278dc9208b","src/int/specialized_div_rem/mod.rs":"954fb4a6df7980ad77b5c4e6b5ccdfb56577a244132888b86c7b332770114ac7","src/int/specialized_div_rem/norm_shift.rs":"40ee517ca97d4d39652f4f47cb13751c5100ec05d614cadc7d660a33b217933b","src/int/specialized_div_rem/trifecta.rs":"fe693ec1c4c830215e4da4c91d827308a286d39b6fcf0d2f82587ae2a8f965bc","src/int/udiv.rs":"99b2a6e02a0324a3969a3a30fa3b6da6e1763efc9defa138e990d0ad57738fa1","src/lib.rs":"23999b91dcbf07565348208d517303391fe0dd2b37e398300bed2d5395591425","src/macros.rs":"f8a9c467eba7aa63747e4329041a1898eecaba34556c4e298f2c7452a38704b9","src/math.rs":"c97e2ad283089362721ea48e9355f8a3119559c14e1c249c67044e865827a164","src/mem/impls.rs":"8148e22bb2ac018141ec1062703a49ad154e4bee2f29211a56a4afd3d42247ea","src/mem/mod.rs":"835b1233a99bf3cabbe28ff8bb03867d0aa62793c511b2a40f05d7955dfa023a","src/mem/x86_64.rs":"ee2b6bb0449de5e4b20854bd9d3403f5e4808f8356eadf0dda26866847f6b929","src/probestack.rs":"7406031fdef254fbd052d97685e2f14353d18bd34ba4afe3035ecea7ebccf9ca","src/riscv32.rs":"b9b433d248fce35e43a7df430697545f39898fad46be7d0197284764e44993b2","src/x86.rs":"ef38d807fa13611041361b6d8b6cfc562c5cd25a6d3d79f46eea722094c711cd","src/x86_64.rs":"f8a5ac162709867da62535a233c9eb3f5ed4e77cef2c20e0ca79c497ff428c92"},"package":"3748f82c7d366a0b4950257d19db685d4958d2fa27c6d164a3f069fec42b748b"}
+\ No newline at end of file
++{"files":{"libm/src/math/cbrtf.rs":"ad0b483854aa9f17a44d36c049bf0e8ebab34c27e90b787c05f45cc230ec7d19","libm/src/math/scalbn.rs":"b5c9d6d4177fe393cbfe1c634d75ce14b754f6cbce87c5bf979a9661491748a2","libm/src/math/scalbnf.rs":"4f198d06db1896386256fb9a5ac5b805b16b836226c18780a475cf18d7c1449c","src/probestack.rs":"7406031fdef254fbd052d97685e2f14353d18bd34ba4afe3035ecea7ebccf9ca","libm/src/math/hypotf.rs":"5f317323edc2eb699580fe54b074b7e570a7734d51a0a149c0b49b54470a836c","libm/src/math/atan2.rs":"2623bc8ca707d13a7092ce49adf68e9cbf4452ad1bf4a861dc40ca858606a747","libm/src/math/atanhf.rs":"8ba4711dda19ef2dc33622be65c1483902868083543198c6bbd040d4026293de","libm/src/math/exp10.rs":"2deb037f88feac87a0e924b69dd496f0dd3b5d35f2a58e09d4c5166b207e517b","README.md":"2dd28b207028773ffee09ed0db563ac71b255b6b67256289d67a13cb19d15f94","libm/src/math/frexp.rs":"28af70026922a8ab979744c7ad4d8faba6079c4743b7eeb6d14c983a982fbbcc","libm/src/math/fmaxf.rs":"dff0025433232e8a5ec7bd54d847ccf596d762ea4e35f5c54fbaac9404d732fd","src/mem/mod.rs":"835b1233a99bf3cabbe28ff8bb03867d0aa62793c511b2a40f05d7955dfa023a","libm/src/math/fmin.rs":"95b6cb66ca0e0e22276f0bf88dbe8fb69796a69a196a7491bd4802efbcf2e298","src/float/cmp.rs":"83c8b62240a7275580dfd54786abee6cfeddf566dbb66803961e1d9115e46ae1","libm/src/math/round.rs":"955649c893fa3151b4a81c8e550fbc03f01bb99b40d60986e5f153ee71043f69","src/int/sdiv.rs":"ec870b6a4b92e6f6c2ce5189bb98ce04f54272d32f8796d9d543b576ba32b76d","src/mem/impls.rs":"8148e22bb2ac018141ec1062703a49ad154e4bee2f29211a56a4afd3d42247ea","libm/src/math/log10f.rs":"fee4f71879bc4c99259e68c0c641364901629fb29a8ebddfcc0d090102cceddd","libm/src/math/j1f.rs":"1d504d7750c0481273baad88196d3644f258af9ad10f8b5b16341c0aab8b9125","libm/src/math/ilogbf.rs":"dec462780f46682e16cfaa733238bed3b692729e951f53a44726100b6c73a716","libm/src/math/ldexpf.rs":"98743fad2cd97a7be496f40ba3157ac1438fce0d0c25d5ab90c3b8c71c3fd0ed","libm/src/math/lgamma_r.rs":"77fb6442aeb5343926d8965e1549dde3e2cc4fd09555de6b56506001d956c344","libm/src/math/tanf.rs":"894156a3b107aee08461eb4e7e412fc049aa237d176ae705c6e3e2d7060d94e3","libm/src/math/frexpf.rs":"2e2593ae8002ba420809ebfaf737ef001cdc912354be3d978a8c0cb930350d4d","libm/src/math/j1.rs":"97b1af1611fa3d110c2b349ee8e4176100132ea1391b619086b47ac063b81803","libm/src/math/powf.rs":"2c423a0ea57fdc4e20f3533f744c6e6288c998b4de8f2914fafaa0e78be81b04","libm/src/math/tgammaf.rs":"c95bd69957387533853532164f7e2251d2b04f5e775406b9e647226ae2bdd5ad","libm/src/math/tgamma.rs":"a6aabb8365410af6611f19f58694ccb74e82bb9ba9e1cdec7e1af787cfa44815","src/lib.rs":"23999b91dcbf07565348208d517303391fe0dd2b37e398300bed2d5395591425","libm/src/math/modff.rs":"f8f1e4c27a85d2cdb3c8e74439d59ef64aa543b948f22c23227d02d8388d61c2","libm/src/math/jnf.rs":"4045076f7d1a1b89882ed60d4dd60a4cbbc66b85cfb90491378c8015effcc476","libm/src/math/lgammaf_r.rs":"44de75babbdd53c4a5879cd6f426e7311db82669def39df5f63914d67d6cc1b1","libm/src/math/fmodf.rs":"ee51ed092c0eeb8195f35735ff725cfd46612e0d689a7c483538bd92fbe61828","libm/src/math/asinhf.rs":"8a0b8933a98a17617a66fef4c7b89eba645fdf05302000babf4a5a5f45328430","Cargo.toml":"cc15004b8111fcbff286d52f1a68460d52ab1c0d7ca6168cbd00836441ae934d","libm/src/math/sinhf.rs":"d06eb030ba9dbf7094df127262bfe99f149b4db49fa8ab8c15499660f1e46b26","src/float/pow.rs":"64f4935f4bed46d3b9cde4d16f59cca76a110d36d02d76f4b909157349edf5e3","libm/src/math/fabsf.rs":"dc85b66e4ef662721276ae3a301af22795524e4367ee8dd40f0c24c439773c6d","libm/src/math/hypot.rs":"841131c4a0cea75bc8a86e29f3f6d0815a61fc99731c9984651ce83d3050d218","src/float/mod.rs":"cdee8f28d7e513fdbab282693cba79d5b06753d8259dd45829c98191ce483017","libm/src/math/cosh.rs":"0d0a7cef18577f321996b8b87561963139f754ad7f2ea0a3b3883811f3f0693a","libm/src/math/fminf.rs":"304bc839b15ea3d84e68d2af9f40524ec120d30a36a667b22fcb98a6c258f4c7","libm/src/math/asinf.rs":"49cccb4db2881982643a4a7d5453f4f8daf527711bbb67313607a3c178856d61","src/int/specialized_div_rem/mod.rs":"954fb4a6df7980ad77b5c4e6b5ccdfb56577a244132888b86c7b332770114ac7","src/arm_linux.rs":"80d18ce84bdfa841fa133f5ee9e9fd50167344436d2d398f74347a90f27606c6","libm/src/math/acos.rs":"fb066ba84aba1372d706425ec14f35ff8d971756d15eeebd22ecf42a716493bb","libm/src/math/coshf.rs":"be8ca8739e4cf1978425b349f941cb4838bba8c10cb559c7940b9fd4fdde21ad","libm/src/math/exp.rs":"ca7405ad0d1993fffcf9aae96f9256307bed3c4916545aaebd1cf1d2df1807fa","libm/src/math/roundf.rs":"8ae8f1f71eedd158566771cfe80b352d2f13c170a0ce8dc2691a14e8a791cfbb","libm/src/math/expf.rs":"ec14c18f891a9e37735ec39e6fc2e9bf674a2c2e083f22e2533b481177359c98","libm/src/math/fdim.rs":"8ec091996005207297c2389ae563e1b18dbc6a9eac951de29a976c5cd7bc32a7","libm/src/math/sqrtf.rs":"d9e12ac55c5471c18175efdfb15c092ba71a2eb914d2e1ee3b3310a22202042e","src/x86.rs":"ef38d807fa13611041361b6d8b6cfc562c5cd25a6d3d79f46eea722094c711cd","libm/src/math/cbrt.rs":"f2c45612d2eecd93cfcdd9ebf824c754fc8f8dfd6d16862c0b9c4ccea78c2a0f","libm/src/math/cosf.rs":"09c40f93c445b741e22477ceedf163ca33b6a47f973f7c9876cfba2692edb29c","libm/src/math/sincos.rs":"59e9f196140681fa817652134b8d1bdd2d6dd47bb8557b0346c77b176389f883","src/int/udiv.rs":"99b2a6e02a0324a3969a3a30fa3b6da6e1763efc9defa138e990d0ad57738fa1","libm/src/math/log2.rs":"dbbbfbaaa8aa6a4dbefea554ea3983090a9691228b011910c751f6adca912c40","libm/src/math/sinf.rs":"dcddac1d56b084cbb8d0e019433c9c5fe2201d9b257a7dcf2f85c9a8f14b79cf","libm/src/math/fmaf.rs":"3e0f5727e56f31218f674b9b8975d7e67b3a24a097f06a2a3eca9723cd786213","libm/src/math/sqrt.rs":"824570a631c2542ccee68b65e3eb08fe79c037a29bbaaf54da5367e7b236124a","libm/src/math/log1p.rs":"9cf400852f165e6be19b97036ae9521fb9ca857d0a9a91c117d9123221622185","libm/src/math/asin.rs":"095a1e98996daff45df0b154ca0ec35bbf31db964ee9fdda0207308cb20df441","libm/src/math/k_cos.rs":"f34a69e44d6b8901b03b578a75972f438ab20a7b98a0903fc1903d6fde3899be","libm/src/math/log10.rs":"3425ff8be001fd1646ba15e254eb6ef4bdc6ccaf0cbee27ddf1fa84e04178b90","libm/src/math/asinh.rs":"e8fc94031015fddf35e9c26b94da9f6431ee17c81cd7bd37da8ffc98f7e0b32c","libm/src/math/log2f.rs":"92a90350d8edce21c31c285c3e620fca7c62a2366008921715945c2c73b5b79f","libm/src/math/k_sinf.rs":"2775fcc710807164e6f37a4f8da3c8143cd5f16e19ce7c31c5591522151d7a96","libm/src/math/fma.rs":"6872e79787e9270520189b53608f602b8ad5a099f3cef10ad5b9e0c06ef01fe0","libm/src/math/erf.rs":"9c55fc6756ba816996f0b585e07ccfa4cd87575ad525cd30c4a968b30acffda3","libm/src/math/fenv.rs":"8730d45aa4c591f91dccdcc1ce533fa23e9c6df0c38defb9c57f749cb25e1cd0","src/x86_64.rs":"f8a5ac162709867da62535a233c9eb3f5ed4e77cef2c20e0ca79c497ff428c92","src/float/div.rs":"1777fa8e1a18ce8b616b69e2cc732f4ab44781f12276a4089e074f7b4a5288c9","libm/src/math/ceilf.rs":"f942bcea617de7da880b68bdfe676837a7984e2a887eaafe181be24c6bc13cc2","libm/src/math/rem_pio2_large.rs":"21762d08d72dc6f2e313123a7311683000974a09b8fcae50994d9c39239721b1","src/float/sub.rs":"c2a87f4628f51d5d908d0f25b5d51ce0599dc559d5a72b20e131261f484d5848","libm/src/math/lgamma.rs":"498552658cc8106d7754f85ae8dbc3306ac2f0a9f7eb5a796be70c5beac92c41","src/macros.rs":"f8a9c467eba7aa63747e4329041a1898eecaba34556c4e298f2c7452a38704b9","libm/src/math/copysignf.rs":"1547116071e68a42b1605eb2fc722db6466a34517dc96b92de1f29a274c3d8e3","libm/src/math/atanf.rs":"e41b41569474a59c970ede3538e00bda4072cf4d90040017101cc79d7dc28caa","libm/src/math/ldexp.rs":"b647f0096e80e4d926d8dd18d294c892ee2cb1778effe2c5e1b2664ae5cb1a4e","libm/src/math/tanh.rs":"f1f08eb98ed959a17370a7aaf0177be36e3764543424e78feb033ed3f5e8ec98","libm/src/math/remainder.rs":"63865f4370853c476b45bb27a5c54a4072146aa4a626835ae5263871a4e7e5dc","libm/src/math/jn.rs":"847d122334e5707ad9627146cddccc082a1f2f5bcd3e5ef54399013a7007ce88","libm/src/math/k_expo2f.rs":"d51ad5df61cb5d1258bdb90c52bfed4572bb446a9337de9c04411ed9454ae0cb","libm/src/math/tan.rs":"930ecedaadc60f704c2dfa4e15186f59713c1ba7d948529d215223b424827db5","src/int/specialized_div_rem/binary_long.rs":"8be993c8cd2c9db59283e8e98870d276246b95b463446aa0cb13f71d1c92b31e","libm/src/math/floorf.rs":"4ec41aa64cfafd23b8cfc043eacea5e9125cca5dcb3f5e655cc3d3458c6ba2c5","libm/src/math/ceil.rs":"0e6caff1597818471c28b7c3226dbfe9976fdb38ace5246172ac030754be6b79","libm/src/math/exp2.rs":"94a9304a2ce3bc81f6d2aefd3cde6faa30f13260d46cb13692863cdea1c9a3a1","libm/src/math/trunc.rs":"642264897cc1505e720c8cf313be81aa9fd53aae866644a2e988d01dbc77fd8a","libm/src/math/remquof.rs":"cc749e18ecb7e766b8b8eeabdbf89ac99087d3d587e71e30f690676a3d2c1f9b","libm/src/math/modf.rs":"d012ed5a708ef52b6d1313c22a46cadaf5764dde1220816e3df2f03a0fcc60ae","src/float/conv.rs":"4f2066ec5d536407819f19d6d5373b0773e7ab3e6455a7060f7c250bb6135175","libm/src/math/fabs.rs":"e6c7db39f98508098cdf64ac0c2f53866c466149a7490afb9fe22b44c4dd81b3","src/float/mul.rs":"2cafd35cbad5bd4ed6368f11ea13667f1f7f3f7cba05ccc10e38447e3a002075","src/int/mod.rs":"3dc621352089bbc99233fefbe3aecd3f86444d9b9119619245a0be4fc6c0ad17","libm/src/math/fmax.rs":"f6c8e96a8b1a170648d2fa3513e7b6b459085d708c839869f82e305fe58fac37","libm/src/math/log.rs":"b5e0c5f30d9e94351488732801be3107c12b854c3f95ad37e256dd88eeca408f","libm/src/math/erff.rs":"cb020e8bada9a54573a11fe3271750d73f14fed3092a881a9ceaf98fe32fd5a6","libm/src/math/atan.rs":"d4fe46e1c5739dd09997869dcfbc3c85f03c534af52e700d6c6bcf9c3fedda07","libm/src/math/k_tanf.rs":"6a794be56fa4b2f60452b9bab19af01c388f174560acbf829a351378ea39495d","src/math.rs":"c97e2ad283089362721ea48e9355f8a3119559c14e1c249c67044e865827a164","libm/src/math/j0.rs":"9572b6396c489927d332d0e717920e61ec0618e5e9c31f7eeeec70f5e4abab06","libm/src/math/sincosf.rs":"d37d71c7204c7892fe24c956df0fb95e7a014a808f5cbd5e125aee48c3c449b5","libm/src/math/remquo.rs":"3cc0bf55069f165c4843f2c358b3a27279c01e8cdd99f9057a3f7f31f45408f2","libm/src/math/j0f.rs":"802c8254bded9b3afb6eea8b9af240038a5a4a5d811396729f69ca509e3e7d87","libm/src/math/lgammaf.rs":"457105f53a4c8717e8f5a117d261dcf94e222e83981337fe23602abe883fe3f7","src/int/specialized_div_rem/norm_shift.rs":"40ee517ca97d4d39652f4f47cb13751c5100ec05d614cadc7d660a33b217933b","libm/src/math/sin.rs":"0e014e6377c9673a73395ab2ffcf5962e512392afddf8a4e731fb694098faf34","src/float/add.rs":"1a230ed4e17148cfffb7c880929c9c0d5d48d85581d75164c5031b8f05a5d567","libm/src/math/log1pf.rs":"2716e6d2afa271996b7c8f47fd9e4952c88f4c1fd8c07c3e8ce8c62794bf71d8","libm/src/math/rem_pio2f.rs":"377349d1308bda8cd2f776e4856fe090baa78fa3db816b680780ddf31b80d446","src/arm.rs":"0f0e1cc79e53bf00192990544f99d85e5b2d5a1686fbeb5a2928481209ed2ef6","libm/src/math/floor.rs":"be15e687a6798defc6f2c6b43028481f8104fb93d2b3f359d3d5d16b78e79d4f","libm/src/math/ilogb.rs":"813413bf6266d4fc40db9c5921af3cef4f892ba93e8f6d9efe62a449d1234532","libm/src/math/k_cosf.rs":"8f7117ff21cebf8e890a5bcfd7ea858a94172f4172b79a66d53824c2cb0888b1","libm/src/math/sinh.rs":"d8ee4c7af883a526f36c1a6da13bb81fba9181b477e2f2538161a2bee97edc35","libm/src/math/fdimf.rs":"c7f3f2269834d55be26b6580ddc07c42531577955fa4de35bad1e2a361085614","libm/src/math/exp10f.rs":"6979464dfe3f4f2da1f9afc909646499c4bfaef15e10a039384750e2f1586fea","libm/src/math/nextafter.rs":"3282e7eef214a32736fb6928d490198ad394b26b402b45495115b104839eebfe","src/int/specialized_div_rem/trifecta.rs":"fe693ec1c4c830215e4da4c91d827308a286d39b6fcf0d2f82587ae2a8f965bc","libm/src/math/atan2f.rs":"dd01943e0e1f1955912e5c3ffc9467529cf64bd02ac0a6ad5ab31dbe6657f05d","libm/src/math/truncf.rs":"619b675b6a9bb81eccddb1fa8214cff63e1f62136629b645c87f036672311732","libm/src/math/acosh.rs":"56dac8538e4350cd7cf001327c89f087b68abb2e6aaad58edba8a094b09f6b0f","libm/src/math/pow.rs":"64fba587143fa88cdfa5c9d30b658ab03e3a19e3ea3759394836add4068983c6","libm/src/math/remainderf.rs":"dd3fa432dbda8f2135428198be7bd69c57f8d13df3f365b12f52bf6a82352ac4","libm/src/math/k_sin.rs":"14b2aba6ca07150c92768b5a72acaf5cde6a11d6619e14896512a7ba242e289a","libm/src/math/k_tan.rs":"a72beae4ccd9631eeeb61d6365bbeecae81c8411f3120a999c515cca0d5ea5c5","libm/src/math/fmod.rs":"a1c0550fc7df8164733d914e222ff0966a2ab886d6e75a1098f24fe0283ae227","libm/src/math/atanh.rs":"5934dbd6b7395ca4f103ace7598da723a9270e1cf6b47e7f786debe4bb3651ff","libm/src/math/acosf.rs":"a112b82309bba1d35c4e3d6ad4d6c21ef305343d9ab601ddf4bc61d43bc9f1af","libm/src/math/exp2f.rs":"785f2630accd35118ec07bf60273e219ed91a215b956b1552eeea5bc2a708cc8","src/int/leading_zeros.rs":"91a445e5c0edd3c488fa95f9d5cba54a04bdc9e8573ae4fe5b30b51e01cb9476","build.rs":"a47b5ed5c7d2a6f2fbc3e9803a8d4f75839db9ac03aa4fab72932d899ecb590f","src/mem/x86_64.rs":"ee2b6bb0449de5e4b20854bd9d3403f5e4808f8356eadf0dda26866847f6b929","Cargo.lock":"fedb77f7dd757df815cfa613ef5a061fb889834523eb26ba3c8ac5b646266384","src/int/shift.rs":"4af3b9ec0b7e53587eef6257a086d4c194820f92b6fc547a7c96bd05ca60c708","libm/src/math/k_expo2.rs":"eb4ca9e6a525b7ea6da868c3cb136896682cc46f8396ba2a2ebc3ae9e9ba54b0","libm/src/math/expm1.rs":"124069f456c8ad331f265c7509d9e223b2a300e461bbfd3d6adfdcdd2ee5b8ac","libm/src/math/mod.rs":"ffa73c08f4c0a4dc6c9d1cb9d62fe97f3a5046edede128c9441cc3adc9170dd3","src/float/extend.rs":"180b2e791c58e0526de0a798845c580ce3222c8a15c8665e6e6a4bf5cf1a34aa","libm/src/math/logf.rs":"845342cffc34d3db1f5ec12d8e5b773cd5a79056e28662fcb9bcd80207596f50","libm/src/math/acoshf.rs":"df5b0c4d8e37e64cf5ff2d8328b28bc35c78e84060ff769e64523ea9ff9065c1","libm/src/math/tanhf.rs":"74027b0c672a4e64bdef6d7a3069b90caec50e1e7dbb2c12d2828f310502f41e","src/int/mul.rs":"40c5a84c0bff28797eccc9cf8884b5880261818dee21c961f17f727b74d02261","libm/src/math/nextafterf.rs":"0937dc8a8155c19842c12181e741cec1f7df1f7a00cee81fcb2475e2842761b7","src/int/specialized_div_rem/asymmetric.rs":"126104346b83e5c64c6015a1f891edb3c032e3319f802c265e6a6d010465e0fa","libm/src/math/expm1f.rs":"18e2116d31ea8410051cc709b9d04b754b0e3ba6758ee1bf0b48749f4999b840","libm/src/math/expo2.rs":"4f4f9fecfccb43f30c2784aa7c0bb656754a52b8ab431f7d1b551c673ab133f1","examples/intrinsics.rs":"5bc2a8e39a541a6b55567f36ff9de17afad3cb620702a9e7c5b069a237f1197b","libm/src/math/cos.rs":"74babdc13ede78e400c5ca1854c3e22d2e08cbdc5618aefa5bba6f9303ef65b6","libm/src/math/copysign.rs":"d80c880efaf0cdf2ce0a4d4f5a68dd6c36c88d46fa997ec8ac8604bfdb26fa33","libm/src/math/rem_pio2.rs":"9be99c44493b2b7088578c0fa2872630725b2da544c751516df0c6c686112a43","src/int/addsub.rs":"7ec45ce1ba15b56a5b7129d3e5722c4db764c6545306d3fa9090983bcabd6f17","src/int/specialized_div_rem/delegate.rs":"f32fcf78fad5ad08eed1744bd1a4a3d444bd9fc8a71d72ad03bb3d278dc9208b","src/riscv32.rs":"b9b433d248fce35e43a7df430697545f39898fad46be7d0197284764e44993b2"},"package":"3748f82c7d366a0b4950257d19db685d4958d2fa27c6d164a3f069fec42b748b"}
+\ No newline at end of file
+diff --git a/vendor/compiler_builtins/build.rs b/vendor/compiler_builtins/build.rs
+index f948edba9..c57802569 100644
+--- a/vendor/compiler_builtins/build.rs
++++ b/vendor/compiler_builtins/build.rs
+@@ -81,7 +81,7 @@ mod c {
+ 
+     use std::collections::BTreeMap;
+     use std::env;
+-    use std::path::PathBuf;
++    use std::path::{Path, PathBuf};
+ 
+     struct Sources {
+         // SYMBOL -> PATH TO SOURCE
+@@ -487,7 +487,20 @@ mod c {
+         // use of that macro in lib/builtins/int_util.h in compiler-rt.
+         cfg.flag_if_supported(&format!("-ffile-prefix-map={}=.", root.display()));
+ 
++        // Include out-of-line atomics for aarch64, which are all generated by supplying different
++        // sets of flags to the same source file.
+         let src_dir = root.join("lib/builtins");
++        if target_arch == "aarch64" {
++            let atomics_libs = build_aarch64_out_of_line_atomics_libraries(&src_dir, cfg);
++            if !atomics_libs.is_empty() {
++                for library in  atomics_libs {
++                    cfg.object(library);
++                }
++                // Some run-time CPU feature detection is necessary, as well.
++                sources.extend(&[("__aarch64_have_lse_atomics", "cpu_model.c")]);
++            }
++        }
++
+         for (sym, src) in sources.map.iter() {
+             let src = src_dir.join(src);
+             cfg.file(&src);
+@@ -497,4 +510,60 @@ mod c {
+ 
+         cfg.compile("libcompiler-rt.a");
+     }
++
++    fn build_aarch64_out_of_line_atomics_libraries(
++        builtins_dir: &Path,
++        cfg: &cc::Build,
++    ) -> Vec<PathBuf> {
++        // NOTE: because we're recompiling the same source file in N different ways, building
++        // serially is necessary. If we want to lift this restriction, we can either:
++        // - create symlinks to lse.S and build those_(though we'd still need to pass special
++        //   #define-like flags to each of these), or
++        // - synthesizing tiny .S files in out/ with the proper #defines, which ultimately #include
++        //   lse.S.
++        // That said, it's unclear how useful this added complexity will be, so just do the simple
++        // thing for now.
++        let outlined_atomics_file = builtins_dir.join("aarch64/lse.S");
++
++        // A stable release hasn't been made with lse.S yet. Until we pick that up, do nothing.
++        if !outlined_atomics_file.exists() {
++            return vec![];
++        }
++
++        println!("cargo:rerun-if-changed={}", outlined_atomics_file.display());
++        let out_dir: PathBuf = env::var("OUT_DIR").unwrap().into();
++
++        // Ideally, this would be a Vec of object files, but cc doesn't make it *entirely*
++        // trivial to build an individual object.
++        let mut atomics_libraries = Vec::new();
++        for instruction_type in &["cas", "cwp", "ldadd", "ldclr", "ldeor", "ldset"] {
++            for size in &[1, 2, 4, 8, 16] {
++                if *size == 16 && *instruction_type != "cas" {
++                    continue;
++                }
++
++                for (model_number, model_name) in
++                    &[(1, "relax"), (2, "acq"), (3, "rel"), (4, "acq_rel")]
++                {
++                    let library_name = format!(
++                        "liboutline_atomic_helper_{}_{}_{}.a",
++                        instruction_type, size, model_name
++                    );
++                    let sym = format!("__aarch64_{}{}_{}", instruction_type, size, model_name);
++                    let mut cfg = cfg.clone();
++
++                    cfg.include(&builtins_dir)
++                        .define(&format!("L_{}", instruction_type), None)
++                        .define("SIZE", size.to_string().as_str())
++                        .define("MODEL", model_number.to_string().as_str())
++                        .file(&outlined_atomics_file);
++                    cfg.compile(&library_name);
++
++                    atomics_libraries.push(out_dir.join(library_name));
++                    println!("cargo:rustc-cfg={}=\"optimized-c\"", sym);
++                }
++            }
++        }
++        atomics_libraries
++    }
+ }
diff --git a/dev-lang/rust/files/rust-1.51.0-add-cros-targets.patch b/dev-lang/rust/files/rust-1.51.0-add-cros-targets.patch
new file mode 100644
index 0000000..e8749f7
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-add-cros-targets.patch
@@ -0,0 +1,35 @@
+Because of crbug.com/711369, armv7 target triple's arch and ABI parts differ
+between chromeos and the rust. Until that bug is fixed, we have to add our own
+triple for armv7.
+
+Additionally, the Rust compiler does not implement a fallback for unknown
+target triple vendors (e.g. "cros" or "pc") to the "unknown" variant, so we
+add copies of the relevant cros targets here as well.
+
+diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
+index 67f45d3d230..51e0eef6630 100644
+--- a/compiler/rustc_target/src/spec/mod.rs
++++ b/compiler/rustc_target/src/spec/mod.rs
+@@ -335,6 +335,8 @@ macro_rules! supported_targets {
+ supported_targets! {
+     ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
+     ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
++    ("x86_64-pc-linux-gnu", x86_64_pc_linux_gnu),
++    ("x86_64-cros-linux-gnu", x86_64_cros_linux_gnu),
+     ("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
+     ("i586-unknown-linux-gnu", i586_unknown_linux_gnu),
+     ("mips-unknown-linux-gnu", mips_unknown_linux_gnu),
+@@ -364,11 +366,13 @@ supported_targets! {
+     ("armv5te-unknown-linux-musleabi", armv5te_unknown_linux_musleabi),
+     ("armv7-unknown-linux-gnueabi", armv7_unknown_linux_gnueabi),
+     ("armv7-unknown-linux-gnueabihf", armv7_unknown_linux_gnueabihf),
++    ("armv7a-cros-linux-gnueabihf", armv7a_cros_linux_gnueabihf),
+     ("thumbv7neon-unknown-linux-gnueabihf", thumbv7neon_unknown_linux_gnueabihf),
+     ("thumbv7neon-unknown-linux-musleabihf", thumbv7neon_unknown_linux_musleabihf),
+     ("armv7-unknown-linux-musleabi", armv7_unknown_linux_musleabi),
+     ("armv7-unknown-linux-musleabihf", armv7_unknown_linux_musleabihf),
+     ("aarch64-unknown-linux-gnu", aarch64_unknown_linux_gnu),
++    ("aarch64-cros-linux-gnu", aarch64_cros_linux_gnu),
+     ("aarch64-unknown-linux-musl", aarch64_unknown_linux_musl),
+     ("x86_64-unknown-linux-musl", x86_64_unknown_linux_musl),
+     ("i686-unknown-linux-musl", i686_unknown_linux_musl),
diff --git a/dev-lang/rust/files/rust-1.51.0-backport-pr81728.patch b/dev-lang/rust/files/rust-1.51.0-backport-pr81728.patch
new file mode 100644
index 0000000..20373f4
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-backport-pr81728.patch
@@ -0,0 +1,181 @@
+From 70f17ca715d3d7e2fd79cc909b95fd3a6357c13e Mon Sep 17 00:00:00 2001
+From: Yechan Bae <yechan@gatech.edu>
+Date: Wed, 3 Feb 2021 16:36:33 -0500
+Subject: [PATCH 1/2] Fixes #80335
+
+---
+ library/alloc/src/str.rs   | 42 ++++++++++++++++++++++----------------
+ library/alloc/tests/str.rs | 30 +++++++++++++++++++++++++++
+ 2 files changed, 54 insertions(+), 18 deletions(-)
+
+diff --git a/library/alloc/src/str.rs b/library/alloc/src/str.rs
+index 70e0c7dba5ea..a7584c6b6510 100644
+--- a/library/alloc/src/str.rs
++++ b/library/alloc/src/str.rs
+@@ -90,8 +90,8 @@ fn join(slice: &Self, sep: &str) -> String {
+     }
+ }
+ 
+-macro_rules! spezialize_for_lengths {
+-    ($separator:expr, $target:expr, $iter:expr; $($num:expr),*) => {
++macro_rules! specialize_for_lengths {
++    ($separator:expr, $target:expr, $iter:expr; $($num:expr),*) => {{
+         let mut target = $target;
+         let iter = $iter;
+         let sep_bytes = $separator;
+@@ -102,7 +102,8 @@ macro_rules! spezialize_for_lengths {
+                 $num => {
+                     for s in iter {
+                         copy_slice_and_advance!(target, sep_bytes);
+-                        copy_slice_and_advance!(target, s.borrow().as_ref());
++                        let content_bytes = s.borrow().as_ref();
++                        copy_slice_and_advance!(target, content_bytes);
+                     }
+                 },
+             )*
+@@ -110,11 +111,13 @@ macro_rules! spezialize_for_lengths {
+                 // arbitrary non-zero size fallback
+                 for s in iter {
+                     copy_slice_and_advance!(target, sep_bytes);
+-                    copy_slice_and_advance!(target, s.borrow().as_ref());
++                    let content_bytes = s.borrow().as_ref();
++                    copy_slice_and_advance!(target, content_bytes);
+                 }
+             }
+         }
+-    };
++        target
++    }}
+ }
+ 
+ macro_rules! copy_slice_and_advance {
+@@ -153,7 +156,7 @@ fn join_generic_copy<B, T, S>(slice: &[S], sep: &[T]) -> Vec<T>
+     // if the `len` calculation overflows, we'll panic
+     // we would have run out of memory anyway and the rest of the function requires
+     // the entire Vec pre-allocated for safety
+-    let len = sep_len
++    let reserved_len = sep_len
+         .checked_mul(iter.len())
+         .and_then(|n| {
+             slice.iter().map(|s| s.borrow().as_ref().len()).try_fold(n, usize::checked_add)
+@@ -161,22 +164,25 @@ fn join_generic_copy<B, T, S>(slice: &[S], sep: &[T]) -> Vec<T>
+         .expect("attempt to join into collection with len > usize::MAX");
+ 
+     // crucial for safety
+-    let mut result = Vec::with_capacity(len);
+-    assert!(result.capacity() >= len);
++    let mut result = Vec::with_capacity(reserved_len);
++    debug_assert!(result.capacity() >= reserved_len);
+ 
+     result.extend_from_slice(first.borrow().as_ref());
+ 
+     unsafe {
+-        {
+-            let pos = result.len();
+-            let target = result.get_unchecked_mut(pos..len);
+-
+-            // copy separator and slices over without bounds checks
+-            // generate loops with hardcoded offsets for small separators
+-            // massive improvements possible (~ x2)
+-            spezialize_for_lengths!(sep, target, iter; 0, 1, 2, 3, 4);
+-        }
+-        result.set_len(len);
++        let pos = result.len();
++        let target = result.get_unchecked_mut(pos..reserved_len);
++
++        // copy separator and slices over without bounds checks
++        // generate loops with hardcoded offsets for small separators
++        // massive improvements possible (~ x2)
++        let remain = specialize_for_lengths!(sep, target, iter; 0, 1, 2, 3, 4);
++
++        // issue #80335: A weird borrow implementation can return different
++        // slices for the length calculation and the actual copy, so
++        // `remain.len()` might be non-zero.
++        let result_len = reserved_len - remain.len();
++        result.set_len(result_len);
+     }
+     result
+ }
+diff --git a/library/alloc/tests/str.rs b/library/alloc/tests/str.rs
+index 604835e6cc4a..6df8d8c2f354 100644
+--- a/library/alloc/tests/str.rs
++++ b/library/alloc/tests/str.rs
+@@ -160,6 +160,36 @@ fn test_join_for_different_lengths_with_long_separator() {
+     test_join!("~~~~~a~~~~~bc", ["", "a", "bc"], "~~~~~");
+ }
+ 
++#[test]
++fn test_join_isue_80335() {
++    use core::{borrow::Borrow, cell::Cell};
++
++    struct WeirdBorrow {
++        state: Cell<bool>,
++    }
++
++    impl Default for WeirdBorrow {
++        fn default() -> Self {
++            WeirdBorrow { state: Cell::new(false) }
++        }
++    }
++
++    impl Borrow<str> for WeirdBorrow {
++        fn borrow(&self) -> &str {
++            let state = self.state.get();
++            if state {
++                "0"
++            } else {
++                self.state.set(true);
++                "123456"
++            }
++        }
++    }
++
++    let arr: [WeirdBorrow; 3] = Default::default();
++    test_join!("0-0-0", arr, "-");
++}
++
+ #[test]
+ #[cfg_attr(miri, ignore)] // Miri is too slow
+ fn test_unsafe_slice() {
+-- 
+2.31.1
+
+
+From 10020817d2e6756be1ff2ac3c182af97cf7fe904 Mon Sep 17 00:00:00 2001
+From: Yechan Bae <yechan@gatech.edu>
+Date: Sat, 20 Mar 2021 13:42:54 -0400
+Subject: [PATCH 2/2] Update the comment
+
+---
+ library/alloc/src/str.rs | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/library/alloc/src/str.rs b/library/alloc/src/str.rs
+index a7584c6b6510..4d1e876457b8 100644
+--- a/library/alloc/src/str.rs
++++ b/library/alloc/src/str.rs
+@@ -163,7 +163,7 @@ fn join_generic_copy<B, T, S>(slice: &[S], sep: &[T]) -> Vec<T>
+         })
+         .expect("attempt to join into collection with len > usize::MAX");
+ 
+-    // crucial for safety
++    // prepare an uninitialized buffer
+     let mut result = Vec::with_capacity(reserved_len);
+     debug_assert!(result.capacity() >= reserved_len);
+ 
+@@ -178,9 +178,9 @@ fn join_generic_copy<B, T, S>(slice: &[S], sep: &[T]) -> Vec<T>
+         // massive improvements possible (~ x2)
+         let remain = specialize_for_lengths!(sep, target, iter; 0, 1, 2, 3, 4);
+ 
+-        // issue #80335: A weird borrow implementation can return different
+-        // slices for the length calculation and the actual copy, so
+-        // `remain.len()` might be non-zero.
++        // A weird borrow implementation may return different
++        // slices for the length calculation and the actual copy.
++        // Make sure we don't expose uninitialized bytes to the caller.
+         let result_len = reserved_len - remain.len();
+         result.set_len(result_len);
+     }
+-- 
+2.31.1
+
diff --git a/dev-lang/rust/files/rust-1.51.0-backport-pr81741.patch b/dev-lang/rust/files/rust-1.51.0-backport-pr81741.patch
new file mode 100644
index 0000000..8ef22ee
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-backport-pr81741.patch
@@ -0,0 +1,44 @@
+From 40d3f2d7ef5835317fe9df9ecc01f4c363def4fd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
+Date: Thu, 4 Feb 2021 10:23:01 +0200
+Subject: [PATCH] Increment `self.index` before calling
+ `Iterator::self.a.__iterator_get_unchecked` in `Zip` `TrustedRandomAccess`
+ specialization
+
+Otherwise if `Iterator::self.a.__iterator_get_unchecked` panics the
+index would not have been incremented yet and another call to
+`Iterator::next` would read from the same index again, which is not
+allowed according to the API contract of `TrustedRandomAccess` for
+`!Clone`.
+
+Fixes https://github.com/rust-lang/rust/issues/81740
+
+(cherry picked from commit 86a4b27475aab52b998c15f5758540697cc9cff0)
+---
+ library/core/src/iter/adapters/zip.rs | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/library/core/src/iter/adapters/zip.rs b/library/core/src/iter/adapters/zip.rs
+index 98b8dca96140..9f9835345200 100644
+--- a/library/core/src/iter/adapters/zip.rs
++++ b/library/core/src/iter/adapters/zip.rs
+@@ -198,12 +198,13 @@ fn next(&mut self) -> Option<(A::Item, B::Item)> {
+                 Some((self.a.__iterator_get_unchecked(i), self.b.__iterator_get_unchecked(i)))
+             }
+         } else if A::may_have_side_effect() && self.index < self.a.size() {
++            let i = self.index;
++            self.index += 1;
+             // match the base implementation's potential side effects
+-            // SAFETY: we just checked that `self.index` < `self.a.len()`
++            // SAFETY: we just checked that `i` < `self.a.len()`
+             unsafe {
+-                self.a.__iterator_get_unchecked(self.index);
++                self.a.__iterator_get_unchecked(i);
+             }
+-            self.index += 1;
+             None
+         } else {
+             None
+-- 
+2.31.1
+
diff --git a/dev-lang/rust/files/rust-1.51.0-backport-pr82289.patch b/dev-lang/rust/files/rust-1.51.0-backport-pr82289.patch
new file mode 100644
index 0000000..5cf5433
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-backport-pr82289.patch
@@ -0,0 +1,96 @@
+From 5222e2ba2d97cd716a379b4ae6bc62c5f7c2dd36 Mon Sep 17 00:00:00 2001
+From: Giacomo Stevanato <giaco.stevanato@gmail.com>
+Date: Fri, 19 Feb 2021 12:15:37 +0100
+Subject: [PATCH 1/3] Increment self.len in specialized ZipImpl to avoid
+ underflow in size_hint
+
+(cherry picked from commit 66a260617a88ed1ad55a46f03c5a90d5ad3004d3)
+---
+ library/core/src/iter/adapters/zip.rs | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/library/core/src/iter/adapters/zip.rs b/library/core/src/iter/adapters/zip.rs
+index 9f9835345200..f08bfac837fe 100644
+--- a/library/core/src/iter/adapters/zip.rs
++++ b/library/core/src/iter/adapters/zip.rs
+@@ -200,6 +200,7 @@ fn next(&mut self) -> Option<(A::Item, B::Item)> {
+         } else if A::may_have_side_effect() && self.index < self.a.size() {
+             let i = self.index;
+             self.index += 1;
++            self.len += 1;
+             // match the base implementation's potential side effects
+             // SAFETY: we just checked that `i` < `self.a.len()`
+             unsafe {
+-- 
+2.31.1
+
+
+From d39669fc8282830a374d19d204f7b4ee8eb1e381 Mon Sep 17 00:00:00 2001
+From: Giacomo Stevanato <giaco.stevanato@gmail.com>
+Date: Fri, 19 Feb 2021 12:16:12 +0100
+Subject: [PATCH 2/3] Add test for underflow in specialized Zip's size_hint
+
+(cherry picked from commit 8b9ac4d4155c74db5b317046033ab9c05a09e351)
+---
+ library/core/tests/iter/adapters/zip.rs | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/library/core/tests/iter/adapters/zip.rs b/library/core/tests/iter/adapters/zip.rs
+index 1fce0951e365..a59771039295 100644
+--- a/library/core/tests/iter/adapters/zip.rs
++++ b/library/core/tests/iter/adapters/zip.rs
+@@ -245,3 +245,23 @@ fn test_double_ended_zip() {
+     assert_eq!(it.next_back(), Some((3, 3)));
+     assert_eq!(it.next(), None);
+ }
++
++#[test]
++fn test_issue_82282() {
++    fn overflowed_zip(arr: &[i32]) -> impl Iterator<Item = (i32, &())> {
++        static UNIT_EMPTY_ARR: [(); 0] = [];
++
++        let mapped = arr.into_iter().map(|i| *i);
++        let mut zipped = mapped.zip(UNIT_EMPTY_ARR.iter());
++        zipped.next();
++        zipped
++    }
++
++    let arr = [1, 2, 3];
++    let zip = overflowed_zip(&arr).zip(overflowed_zip(&arr));
++
++    assert_eq!(zip.size_hint(), (0, Some(0)));
++    for _ in zip {
++        panic!();
++    }
++}
+-- 
+2.31.1
+
+
+From 4b382167dd5ed5a6eac0cf314bfb86e3704b6e76 Mon Sep 17 00:00:00 2001
+From: Giacomo Stevanato <giaco.stevanato@gmail.com>
+Date: Fri, 19 Feb 2021 12:17:48 +0100
+Subject: [PATCH 3/3] Remove useless comparison since now self.index <=
+ self.len is an invariant
+
+(cherry picked from commit aeb4ea739efb70e0002a4a9c4c7b8027dd0620b3)
+---
+ library/core/src/iter/adapters/zip.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/library/core/src/iter/adapters/zip.rs b/library/core/src/iter/adapters/zip.rs
+index f08bfac837fe..dcbcb1ce7200 100644
+--- a/library/core/src/iter/adapters/zip.rs
++++ b/library/core/src/iter/adapters/zip.rs
+@@ -261,7 +261,7 @@ fn next_back(&mut self) -> Option<(A::Item, B::Item)>
+             if sz_a != sz_b {
+                 let sz_a = self.a.size();
+                 if a_side_effect && sz_a > self.len {
+-                    for _ in 0..sz_a - cmp::max(self.len, self.index) {
++                    for _ in 0..sz_a - self.len {
+                         self.a.next_back();
+                     }
+                 }
+-- 
+2.31.1
+
diff --git a/dev-lang/rust/files/rust-1.51.0-backport-pr82292.patch b/dev-lang/rust/files/rust-1.51.0-backport-pr82292.patch
new file mode 100644
index 0000000..4baf72a
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-backport-pr82292.patch
@@ -0,0 +1,120 @@
+From 0babb88efc4d36f3defafc3c3c0343793fa05d52 Mon Sep 17 00:00:00 2001
+From: Giacomo Stevanato <giaco.stevanato@gmail.com>
+Date: Wed, 3 Mar 2021 21:09:01 +0100
+Subject: [PATCH 1/2] Prevent Zip specialization from calling
+ __iterator_get_unchecked twice with the same index after calling next_back
+
+(cherry picked from commit 2371914a05f8f2763dffe6e2511d0870bcd6b461)
+---
+ library/core/src/iter/adapters/zip.rs | 13 +++++++++----
+ 1 file changed, 9 insertions(+), 4 deletions(-)
+
+diff --git a/library/core/src/iter/adapters/zip.rs b/library/core/src/iter/adapters/zip.rs
+index dcbcb1ce7200..7dac0c63ca2d 100644
+--- a/library/core/src/iter/adapters/zip.rs
++++ b/library/core/src/iter/adapters/zip.rs
+@@ -13,9 +13,10 @@
+ pub struct Zip<A, B> {
+     a: A,
+     b: B,
+-    // index and len are only used by the specialized version of zip
++    // index, len and a_len are only used by the specialized version of zip
+     index: usize,
+     len: usize,
++    a_len: usize,
+ }
+ impl<A: Iterator, B: Iterator> Zip<A, B> {
+     pub(in crate::iter) fn new(a: A, b: B) -> Zip<A, B> {
+@@ -110,6 +111,7 @@ impl<A, B> ZipImpl<A, B> for Zip<A, B>
+             b,
+             index: 0, // unused
+             len: 0,   // unused
++            a_len: 0, // unused
+         }
+     }
+ 
+@@ -184,8 +186,9 @@ impl<A, B> ZipImpl<A, B> for Zip<A, B>
+     B: TrustedRandomAccess + Iterator,
+ {
+     fn new(a: A, b: B) -> Self {
+-        let len = cmp::min(a.size(), b.size());
+-        Zip { a, b, index: 0, len }
++        let a_len = a.size();
++        let len = cmp::min(a_len, b.size());
++        Zip { a, b, index: 0, len, a_len }
+     }
+ 
+     #[inline]
+@@ -197,7 +200,7 @@ fn next(&mut self) -> Option<(A::Item, B::Item)> {
+             unsafe {
+                 Some((self.a.__iterator_get_unchecked(i), self.b.__iterator_get_unchecked(i)))
+             }
+-        } else if A::may_have_side_effect() && self.index < self.a.size() {
++        } else if A::may_have_side_effect() && self.index < self.a_len {
+             let i = self.index;
+             self.index += 1;
+             self.len += 1;
+@@ -264,6 +267,7 @@ fn next_back(&mut self) -> Option<(A::Item, B::Item)>
+                     for _ in 0..sz_a - self.len {
+                         self.a.next_back();
+                     }
++                    self.a_len = self.len;
+                 }
+                 let sz_b = self.b.size();
+                 if b_side_effect && sz_b > self.len {
+@@ -275,6 +279,7 @@ fn next_back(&mut self) -> Option<(A::Item, B::Item)>
+         }
+         if self.index < self.len {
+             self.len -= 1;
++            self.a_len -= 1;
+             let i = self.len;
+             // SAFETY: `i` is smaller than the previous value of `self.len`,
+             // which is also smaller than or equal to `self.a.len()` and `self.b.len()`
+-- 
+2.31.1
+
+
+From 19af66a6f3e2bbb4780bb9eae7eb53bd13e3dd0f Mon Sep 17 00:00:00 2001
+From: Giacomo Stevanato <giaco.stevanato@gmail.com>
+Date: Fri, 19 Feb 2021 15:25:09 +0100
+Subject: [PATCH 2/2] Add relevant test
+
+(cherry picked from commit c1bfb9a78db6d481be1d03355672712c766e20b0)
+---
+ library/core/tests/iter/adapters/zip.rs | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+diff --git a/library/core/tests/iter/adapters/zip.rs b/library/core/tests/iter/adapters/zip.rs
+index a59771039295..000c15f72c88 100644
+--- a/library/core/tests/iter/adapters/zip.rs
++++ b/library/core/tests/iter/adapters/zip.rs
+@@ -265,3 +265,26 @@ fn overflowed_zip(arr: &[i32]) -> impl Iterator<Item = (i32, &())> {
+         panic!();
+     }
+ }
++
++#[test]
++fn test_issue_82291() {
++    use std::cell::Cell;
++
++    let mut v1 = [()];
++    let v2 = [()];
++
++    let called = Cell::new(0);
++
++    let mut zip = v1
++        .iter_mut()
++        .map(|r| {
++            called.set(called.get() + 1);
++            r
++        })
++        .zip(&v2);
++
++    zip.next_back();
++    assert_eq!(called.get(), 1);
++    zip.next();
++    assert_eq!(called.get(), 1);
++}
+-- 
+2.31.1
+
diff --git a/dev-lang/rust/files/rust-1.51.0-backport-pr83629.patch b/dev-lang/rust/files/rust-1.51.0-backport-pr83629.patch
new file mode 100644
index 0000000..7f68d95
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-backport-pr83629.patch
@@ -0,0 +1,142 @@
+From 3834e7b7393bf1a0d7df02ccd1d2e896c1465769 Mon Sep 17 00:00:00 2001
+From: The8472 <git@infinite-source.de>
+Date: Mon, 29 Mar 2021 04:22:34 +0200
+Subject: [PATCH 1/2] add testcase for double-drop during Vec in-place
+ collection
+
+---
+ library/alloc/tests/vec.rs | 38 +++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 37 insertions(+), 1 deletion(-)
+
+diff --git a/library/alloc/tests/vec.rs b/library/alloc/tests/vec.rs
+index 5c7ff67bc621..4cdb7eefcdf1 100644
+--- a/library/alloc/tests/vec.rs
++++ b/library/alloc/tests/vec.rs
+@@ -954,7 +954,7 @@ fn test_from_iter_specialization_head_tail_drop() {
+ }
+ 
+ #[test]
+-fn test_from_iter_specialization_panic_drop() {
++fn test_from_iter_specialization_panic_during_iteration_drops() {
+     let drop_count: Vec<_> = (0..=2).map(|_| Rc::new(())).collect();
+     let src: Vec<_> = drop_count.iter().cloned().collect();
+     let iter = src.into_iter();
+@@ -977,6 +977,42 @@ fn test_from_iter_specialization_panic_drop() {
+     );
+ }
+ 
++#[test]
++fn test_from_iter_specialization_panic_during_drop_leaks() {
++    static mut DROP_COUNTER: usize = 0;
++
++    #[derive(Debug)]
++    enum Droppable {
++        DroppedTwice(Box<i32>),
++        PanicOnDrop,
++    }
++
++    impl Drop for Droppable {
++        fn drop(&mut self) {
++            match self {
++                Droppable::DroppedTwice(_) => {
++                    unsafe {
++                        DROP_COUNTER += 1;
++                    }
++                    println!("Dropping!")
++                }
++                Droppable::PanicOnDrop => {
++                    if !std::thread::panicking() {
++                        panic!();
++                    }
++                }
++            }
++        }
++    }
++
++    let _ = std::panic::catch_unwind(AssertUnwindSafe(|| {
++        let v = vec![Droppable::DroppedTwice(Box::new(123)), Droppable::PanicOnDrop];
++        let _ = v.into_iter().take(0).collect::<Vec<_>>();
++    }));
++
++    assert_eq!(unsafe { DROP_COUNTER }, 1);
++}
++
+ #[test]
+ fn test_cow_from() {
+     let borrowed: &[_] = &["borrowed", "(slice)"];
+-- 
+2.31.1
+
+
+From 8e2706343e1ce1c5a2d3a2ceaaaa010aaeb21d93 Mon Sep 17 00:00:00 2001
+From: The8472 <git@infinite-source.de>
+Date: Mon, 29 Mar 2021 04:22:48 +0200
+Subject: [PATCH 2/2] fix double-drop in in-place collect specialization
+
+---
+ library/alloc/src/vec/into_iter.rs          | 27 ++++++++++++++-------
+ library/alloc/src/vec/source_iter_marker.rs |  4 +--
+ 2 files changed, 20 insertions(+), 11 deletions(-)
+
+diff --git a/library/alloc/src/vec/into_iter.rs b/library/alloc/src/vec/into_iter.rs
+index f131d06bb18f..74adced53f6d 100644
+--- a/library/alloc/src/vec/into_iter.rs
++++ b/library/alloc/src/vec/into_iter.rs
+@@ -85,20 +85,29 @@ fn as_raw_mut_slice(&mut self) -> *mut [T] {
+         ptr::slice_from_raw_parts_mut(self.ptr as *mut T, self.len())
+     }
+ 
+-    pub(super) fn drop_remaining(&mut self) {
+-        unsafe {
+-            ptr::drop_in_place(self.as_mut_slice());
+-        }
+-        self.ptr = self.end;
+-    }
++    /// Drops remaining elements and relinquishes the backing allocation.
++    ///
++    /// This is roughly equivalent to the following, but more efficient
++    ///
++    /// ```
++    /// # let mut into_iter = Vec::<u8>::with_capacity(10).into_iter();
++    /// (&mut into_iter).for_each(core::mem::drop);
++    /// unsafe { core::ptr::write(&mut into_iter, Vec::new().into_iter()); }
++    /// ```
++    pub(super) fn forget_allocation_drop_remaining(&mut self) {
++        let remaining = self.as_raw_mut_slice();
+ 
+-    /// Relinquishes the backing allocation, equivalent to
+-    /// `ptr::write(&mut self, Vec::new().into_iter())`
+-    pub(super) fn forget_allocation(&mut self) {
++        // overwrite the individual fields instead of creating a new
++        // struct and then overwriting &mut self.
++        // this creates less assembly
+         self.cap = 0;
+         self.buf = unsafe { NonNull::new_unchecked(RawVec::NEW.ptr()) };
+         self.ptr = self.buf.as_ptr();
+         self.end = self.buf.as_ptr();
++
++        unsafe {
++            ptr::drop_in_place(remaining);
++        }
+     }
+ }
+ 
+diff --git a/library/alloc/src/vec/source_iter_marker.rs b/library/alloc/src/vec/source_iter_marker.rs
+index 8c0e95559fa1..9301f7a5184e 100644
+--- a/library/alloc/src/vec/source_iter_marker.rs
++++ b/library/alloc/src/vec/source_iter_marker.rs
+@@ -78,9 +78,9 @@ impl<T, I> SpecFromIter<T, I> for Vec<T>
+         }
+ 
+         // drop any remaining values at the tail of the source
+-        src.drop_remaining();
+         // but prevent drop of the allocation itself once IntoIter goes out of scope
+-        src.forget_allocation();
++        // if the drop panics then we also leak any elements collected into dst_buf
++        src.forget_allocation_drop_remaining();
+ 
+         let vec = unsafe {
+             let len = dst.offset_from(dst_buf) as usize;
+-- 
+2.31.1
+
diff --git a/dev-lang/rust/files/rust-1.51.0-cc.patch b/dev-lang/rust/files/rust-1.51.0-cc.patch
new file mode 100644
index 0000000..122bda0
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-cc.patch
@@ -0,0 +1,50 @@
+If the CC environment variable is set, use its value instead of hardcoding "cc".
+This fixes crbug.com/1090829.
+
+diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs
+index 8725bfa..5984569 100644
+--- a/compiler/rustc_codegen_ssa/src/back/link.rs
++++ b/compiler/rustc_codegen_ssa/src/back/link.rs
+@@ -752,12 +752,12 @@ fn linker_and_flavor(sess: &Session) -> (PathBuf, LinkerFlavor) {
+             (Some(linker), Some(flavor)) => Some((linker, flavor)),
+             // only the linker flavor is known; use the default linker for the selected flavor
+             (None, Some(flavor)) => Some((
+-                PathBuf::from(match flavor {
++                match flavor {
+                     LinkerFlavor::Em => {
+                         if cfg!(windows) {
+-                            "emcc.bat"
++                            "emcc.bat".into()
+                         } else {
+-                            "emcc"
++                            "emcc".into()
+                         }
+                     }
+                     LinkerFlavor::Gcc => {
+@@ -768,16 +768,19 @@ fn linker_and_flavor(sess: &Session) -> (PathBuf, LinkerFlavor) {
+                             // and many modern illumos distributions today
+                             // ship GCC as "gcc" without also making it
+                             // available as "cc".
+-                            "gcc"
++                            "gcc".into()
+                         } else {
+-                            "cc"
++                            match env::var_os("CC") {
++                                Some(path) => path.into(),
++                                None => "cc".into()
++                            }
+                         }
+                     }
+-                    LinkerFlavor::Ld => "ld",
+-                    LinkerFlavor::Msvc => "link.exe",
+-                    LinkerFlavor::Lld(_) => "lld",
+-                    LinkerFlavor::PtxLinker => "rust-ptx-linker",
+-                }),
++                    LinkerFlavor::Ld => "ld".into(),
++                    LinkerFlavor::Msvc => "link.exe".into(),
++                    LinkerFlavor::Lld(_) => "lld".into(),
++                    LinkerFlavor::PtxLinker => "rust-ptx-linker".into(),
++                },
+                 flavor,
+             )),
+             (Some(linker), None) => {
diff --git a/dev-lang/rust/files/rust-1.51.0-enable-sanitizers.patch b/dev-lang/rust/files/rust-1.51.0-enable-sanitizers.patch
new file mode 100644
index 0000000..7f68461
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-enable-sanitizers.patch
@@ -0,0 +1,222 @@
+Sanitizer runtimes are currently behind the `-Z` flag, which is only available
+on nightly builds of the compiler.  We would like to enable fuzzing on chrome
+os anyway so move the sanitizer option under `-C` instead since we don't build
+the toolchain in nightly mode.
+
+The changes this patch makes are:
+ - changing debugging_opts.sanitizer to cg.sanitizer.
+ - add the appropriate options to options.rs.
+
+diff --git a/compiler/rustc_codegen_llvm/src/attributes.rs b/compiler/rustc_codegen_llvm/src/attributes.rs
+index a78d692aa..f835e371c 100644
+--- a/compiler/rustc_codegen_llvm/src/attributes.rs
++++ b/compiler/rustc_codegen_llvm/src/attributes.rs
+@@ -43,7 +43,7 @@ fn inline(cx: &CodegenCx<'ll, '_>, val: &'ll Value, inline: InlineAttr) {
+ /// Apply LLVM sanitize attributes.
+ #[inline]
+ pub fn sanitize(cx: &CodegenCx<'ll, '_>, no_sanitize: SanitizerSet, llfn: &'ll Value) {
+-    let enabled = cx.tcx.sess.opts.debugging_opts.sanitizer - no_sanitize;
++    let enabled = cx.tcx.sess.opts.cg.sanitizer - no_sanitize;
+     if enabled.contains(SanitizerSet::ADDRESS) {
+         llvm::Attribute::SanitizeAddress.apply_llfn(Function, llfn);
+     }
+@@ -105,7 +105,7 @@ fn set_probestack(cx: &CodegenCx<'ll, '_>, llfn: &'ll Value) {
+     if cx
+         .sess()
+         .opts
+-        .debugging_opts
++        .cg
+         .sanitizer
+         .intersects(SanitizerSet::ADDRESS | SanitizerSet::THREAD)
+     {
+diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs
+index c59b6f1eb..031f6ebea 100644
+--- a/compiler/rustc_codegen_ssa/src/back/link.rs
++++ b/compiler/rustc_codegen_ssa/src/back/link.rs
+@@ -880,7 +880,7 @@ fn link_sanitizers(sess: &Session, crate_type: CrateType, linker: &mut dyn Linke
+         return;
+     }
+ 
+-    let sanitizer = sess.opts.debugging_opts.sanitizer;
++    let sanitizer = sess.opts.cg.sanitizer;
+     if sanitizer.contains(SanitizerSet::ADDRESS) {
+         link_sanitizer_runtime(sess, linker, "asan");
+     }
+@@ -929,8 +929,12 @@ fn link_sanitizer_runtime(sess: &Session, linker: &mut dyn Linker, name: &str) {
+             linker.link_dylib(Symbol::intern(&filename));
+         }
+         "aarch64-fuchsia"
++        | "aarch64-cros-linux-gnu"
+         | "aarch64-unknown-linux-gnu"
++        | "armv7a-cros-linux-gnueabihf"
++        | "x86_64-cros-linux-gnu"
+         | "x86_64-fuchsia"
++        | "x86_64-pc-linux-gnu"
+         | "x86_64-unknown-freebsd"
+         | "x86_64-unknown-linux-gnu" => {
+             let filename = format!("librustc{}_rt.{}.a", channel, name);
+@@ -1630,7 +1634,7 @@ fn linker_with_args<'a, B: ArchiveBuilder<'a>>(
+ 
+     // NO-OPT-OUT, OBJECT-FILES-NO, AUDIT-ORDER
+     if sess.target.is_like_fuchsia && crate_type == CrateType::Executable {
+-        let prefix = if sess.opts.debugging_opts.sanitizer.contains(SanitizerSet::ADDRESS) {
++        let prefix = if sess.opts.cg.sanitizer.contains(SanitizerSet::ADDRESS) {
+             "asan/"
+         } else {
+             ""
+diff --git a/compiler/rustc_codegen_ssa/src/back/symbol_export.rs b/compiler/rustc_codegen_ssa/src/back/symbol_export.rs
+index 9a6f8cde1..2ffbdb6c0 100644
+--- a/compiler/rustc_codegen_ssa/src/back/symbol_export.rs
++++ b/compiler/rustc_codegen_ssa/src/back/symbol_export.rs
+@@ -203,7 +203,7 @@ fn exported_symbols_provider_local(
+         }));
+     }
+ 
+-    if tcx.sess.opts.debugging_opts.sanitizer.contains(SanitizerSet::MEMORY) {
++    if tcx.sess.opts.cg.sanitizer.contains(SanitizerSet::MEMORY) {
+         // Similar to profiling, preserve weak msan symbol during LTO.
+         const MSAN_WEAK_SYMBOLS: [&str; 2] = ["__msan_track_origins", "__msan_keep_going"];
+ 
+diff --git a/compiler/rustc_codegen_ssa/src/back/write.rs b/compiler/rustc_codegen_ssa/src/back/write.rs
+index 6aef5cb53..b5c9df195 100644
+--- a/compiler/rustc_codegen_ssa/src/back/write.rs
++++ b/compiler/rustc_codegen_ssa/src/back/write.rs
+@@ -193,7 +193,7 @@ impl ModuleConfig {
+             ),
+             pgo_use: if_regular!(sess.opts.cg.profile_use.clone(), None),
+ 
+-            sanitizer: if_regular!(sess.opts.debugging_opts.sanitizer, SanitizerSet::empty()),
++            sanitizer: if_regular!(sess.opts.cg.sanitizer, SanitizerSet::empty()),
+             sanitizer_recover: if_regular!(
+                 sess.opts.debugging_opts.sanitizer_recover,
+                 SanitizerSet::empty()
+diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs
+index a6d4dcb34..da6648af4 100644
+--- a/compiler/rustc_session/src/config.rs
++++ b/compiler/rustc_session/src/config.rs
+@@ -851,7 +851,7 @@ pub fn default_configuration(sess: &Session) -> CrateConfig {
+     let panic_strategy = sess.panic_strategy();
+     ret.insert((sym::panic, Some(panic_strategy.desc_symbol())));
+ 
+-    for s in sess.opts.debugging_opts.sanitizer {
++    for s in sess.opts.cg.sanitizer {
+         let symbol = Symbol::intern(&s.to_string());
+         ret.insert((sym::sanitize, Some(symbol)));
+     }
+diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs
+index 779e04216..d0be3a6b3 100644
+--- a/compiler/rustc_session/src/options.rs
++++ b/compiler/rustc_session/src/options.rs
+@@ -822,6 +822,8 @@ options! {CodegenOptions, CodegenSetter, basic_codegen_options,
+         "print remarks for these optimization passes (space separated, or \"all\")"),
+     rpath: bool = (false, parse_bool, [UNTRACKED],
+         "set rpath values in libs/exes (default: no)"),
++    sanitizer: SanitizerSet = (SanitizerSet::empty(), parse_sanitizers, [TRACKED],
++        "use a sanitizer"),
+     save_temps: bool = (false, parse_bool, [UNTRACKED],
+         "save all temporary output files during compilation (default: no)"),
+     soft_float: bool = (false, parse_bool, [TRACKED],
+@@ -1073,8 +1075,6 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options,
+         "choose which RELRO level to use"),
+     report_delayed_bugs: bool = (false, parse_bool, [TRACKED],
+         "immediately print bugs registered with `delay_span_bug` (default: no)"),
+-    sanitizer: SanitizerSet = (SanitizerSet::empty(), parse_sanitizers, [TRACKED],
+-        "use a sanitizer"),
+     sanitizer_memory_track_origins: usize = (0, parse_sanitizer_memory_track_origins, [TRACKED],
+         "enable origins tracking in MemorySanitizer"),
+     sanitizer_recover: SanitizerSet = (SanitizerSet::empty(), parse_sanitizers, [TRACKED],
+diff --git a/compiler/rustc_session/src/session.rs b/compiler/rustc_session/src/session.rs
+index 69aa72d89..cd853746d 100644
+--- a/compiler/rustc_session/src/session.rs
++++ b/compiler/rustc_session/src/session.rs
+@@ -740,7 +740,7 @@ impl Session {
+             let more_names = self.opts.output_types.contains_key(&OutputType::LlvmAssembly)
+                 || self.opts.output_types.contains_key(&OutputType::Bitcode)
+                 // AddressSanitizer and MemorySanitizer use alloca name when reporting an issue.
+-                || self.opts.debugging_opts.sanitizer.intersects(SanitizerSet::ADDRESS | SanitizerSet::MEMORY);
++                || self.opts.cg.sanitizer.intersects(SanitizerSet::ADDRESS | SanitizerSet::MEMORY);
+             !more_names
+         }
+     }
+@@ -1126,7 +1126,7 @@ impl Session {
+         self.opts.optimize != config::OptLevel::No
+         // AddressSanitizer uses lifetimes to detect use after scope bugs.
+         // MemorySanitizer uses lifetimes to detect use of uninitialized stack variables.
+-        || self.opts.debugging_opts.sanitizer.intersects(SanitizerSet::ADDRESS | SanitizerSet::MEMORY)
++        || self.opts.cg.sanitizer.intersects(SanitizerSet::ADDRESS | SanitizerSet::MEMORY)
+     }
+ 
+     pub fn link_dead_code(&self) -> bool {
+@@ -1540,31 +1540,50 @@ fn validate_commandline_args_with_session_available(sess: &Session) {
+ 
+     const ASAN_SUPPORTED_TARGETS: &[&str] = &[
+         "aarch64-apple-darwin",
++        "aarch64-cros-linux-gnu",
+         "aarch64-fuchsia",
+         "aarch64-unknown-linux-gnu",
++        "armv7a-cros-linux-gnueabihf",
+         "x86_64-apple-darwin",
++        "x86_64-cros-linux-gnu",
+         "x86_64-fuchsia",
++        "x86_64-pc-linux-gnu",
+         "x86_64-unknown-freebsd",
+         "x86_64-unknown-linux-gnu",
+     ];
+     const LSAN_SUPPORTED_TARGETS: &[&str] = &[
+         "aarch64-apple-darwin",
++        "aarch64-cros-linux-gnu",
+         "aarch64-unknown-linux-gnu",
++        "armv7a-cros-linux-gnueabihf",
+         "x86_64-apple-darwin",
++        "x86_64-cros-linux-gnu",
++        "x86_64-pc-linux-gnu",
++        "x86_64-unknown-linux-gnu",
++    ];
++    const MSAN_SUPPORTED_TARGETS: &[&str] = &[
++        "aarch64-cros-linux-gnu",
++        "aarch64-unknown-linux-gnu",
++        "armv7a-cros-linux-gnueabihf",
++        "x86_64-cros-linux-gnu",
++        "x86_64-pc-linux-gnu",
++        "x86_64-unknown-freebsd",
+         "x86_64-unknown-linux-gnu",
+     ];
+-    const MSAN_SUPPORTED_TARGETS: &[&str] =
+-        &["aarch64-unknown-linux-gnu", "x86_64-unknown-freebsd", "x86_64-unknown-linux-gnu"];
+     const TSAN_SUPPORTED_TARGETS: &[&str] = &[
+         "aarch64-apple-darwin",
++        "aarch64-cros-linux-gnu",
+         "aarch64-unknown-linux-gnu",
++        "armv7a-cros-linux-gnueabihf",
+         "x86_64-apple-darwin",
++        "x86_64-cros-linux-gnu",
++        "x86_64-pc-linux-gnu",
+         "x86_64-unknown-freebsd",
+         "x86_64-unknown-linux-gnu",
+     ];
+ 
+     // Sanitizers can only be used on some tested platforms.
+-    for s in sess.opts.debugging_opts.sanitizer {
++    for s in sess.opts.cg.sanitizer {
+         let supported_targets = match s {
+             SanitizerSet::ADDRESS => ASAN_SUPPORTED_TARGETS,
+             SanitizerSet::LEAK => LSAN_SUPPORTED_TARGETS,
+@@ -1574,15 +1593,15 @@ fn validate_commandline_args_with_session_available(sess: &Session) {
+         };
+         if !supported_targets.contains(&&*sess.opts.target_triple.triple()) {
+             sess.err(&format!(
+-                "`-Zsanitizer={}` only works with targets: {}",
++                "`-Csanitizer={}` only works with targets: {}",
+                 s,
+                 supported_targets.join(", ")
+             ));
+         }
+-        let conflicting = sess.opts.debugging_opts.sanitizer - s;
++        let conflicting = sess.opts.cg.sanitizer - s;
+         if !conflicting.is_empty() {
+             sess.err(&format!(
+-                "`-Zsanitizer={}` is incompatible with `-Zsanitizer={}`",
++                "`-Csanitizer={}` is incompatible with `-Csanitizer={}`",
+                 s, conflicting,
+             ));
+             // Don't report additional errors.
diff --git a/dev-lang/rust/files/rust-1.46.0-fix-rpath.patch b/dev-lang/rust/files/rust-1.51.0-fix-rpath.patch
similarity index 100%
rename from dev-lang/rust/files/rust-1.46.0-fix-rpath.patch
rename to dev-lang/rust/files/rust-1.51.0-fix-rpath.patch
diff --git a/dev-lang/rust/files/rust-1.51.0-ld-argv0.patch b/dev-lang/rust/files/rust-1.51.0-ld-argv0.patch
new file mode 100644
index 0000000..ac9005b
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-ld-argv0.patch
@@ -0,0 +1,56 @@
+Our cross-compilers and related tooling are executed via ld.so trickery, which
+makes /proc/self/exe not point to the right place. If we detect that we're in
+that situation in `current_exe()`, we _should_ have `LD_ARGV0_REL` in an env
+var. This is the path to the _original_ binary, relative to ld.so.
+
+diff --git a/library/std/src/sys/unix/os.rs b/library/std/src/sys/unix/os.rs
+index a9cd509..92dd6b9 100644
+--- a/library/std/src/sys/unix/os.rs
++++ b/library/std/src/sys/unix/os.rs
+@@ -327,12 +327,45 @@ pub fn current_exe() -> io::Result<PathBuf> {
+ 
+ #[cfg(any(target_os = "linux", target_os = "android", target_os = "emscripten"))]
+ pub fn current_exe() -> io::Result<PathBuf> {
++    let is_ld_so = |p: &crate::path::Path| -> Option<bool> {
++        let parent_dir_name = p.parent()?.file_name()?;
++        if parent_dir_name != OsStr::new("lib") {
++            return Some(false);
++        }
++        // We assume that the `ld.so` path is always valid unicode, since there's... no reason for
++        // it not to be. :)
++        let file_name = p.file_name()?.to_str()?;
++        Some(
++            file_name.starts_with("ld-linux-")
++                && (file_name.ends_with(".so") || file_name.contains(".so.")),
++        )
++    };
++
+     match crate::fs::read_link("/proc/self/exe") {
+         Err(ref e) if e.kind() == io::ErrorKind::NotFound => Err(io::Error::new(
+             io::ErrorKind::Other,
+             "no /proc/self/exe available. Is /proc mounted?",
+         )),
+-        other => other,
++        Err(x) => Err(x),
++        Ok(p) => {
++            // Chrome OS-specific: in some configurations, Rust binaries are invoked through
++            // `ld.so`. In these cases, we want to present the user with the path to the Rust
++            // binary that was invoked.
++            //
++            // Because the ld.so wrappers _generally_ don't want to invoke things with absolute
++            // paths, this is _generally_ a path relative to dirname(ld.so).
++            if is_ld_so(&p) == Some(true) {
++                if let Some(relative_to_ld) = crate::env::var_os("LD_ARGV0_REL") {
++                    let relative_to_ld = PathBuf::from(relative_to_ld);
++                    if relative_to_ld.is_absolute() {
++                        return Ok(relative_to_ld);
++                    }
++                    // safety: is_ld_so checks the parent directory of `p`.
++                    return Ok(p.parent().unwrap().join(relative_to_ld));
++                }
++            }
++            Ok(p)
++        }
+     }
+ }
+ 
diff --git a/dev-lang/rust/files/rust-1.46.0-no-test-on-build.patch b/dev-lang/rust/files/rust-1.51.0-no-test-on-build.patch
similarity index 100%
rename from dev-lang/rust/files/rust-1.46.0-no-test-on-build.patch
rename to dev-lang/rust/files/rust-1.51.0-no-test-on-build.patch
diff --git a/dev-lang/rust/files/rust-1.51.0-no-weak-symbols.patch b/dev-lang/rust/files/rust-1.51.0-no-weak-symbols.patch
new file mode 100644
index 0000000..82b6176
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-no-weak-symbols.patch
@@ -0,0 +1,80 @@
+This is a slightly-modified cherrypick from llvm. Without this, we see undefined
+symbols in the CQ for amd64-generic ASAN builds. Specifically, we're missing
+__start_asan_globals and __stop_asan_globals.
+
+commit cf5df40c4cf1a53a02ab1d56a488642e3dda8f6d
+Author: Leonard Chan <leonardchan@google.com>
+Date:   Fri Jul 17 15:29:50 2020 -0700
+
+    Revert "[AddressSanitizer] Don't use weak linkage for __{start,stop}_asan_globals"
+    
+    This reverts commit d76e62fdb7a93d9a33f642b6b528f2562cc3c3f4.
+    
+    Reverting since this can lead to linker errors:
+    
+    ```
+    ld.lld: error: undefined hidden symbol: __start_asan_globals
+    ```
+    
+    when using --gc-sections. The linker can discard __start_asan_globals
+    once there are no more `asan_globals` sections left, which can lead to
+    this error if we have external linkages to them.
+
+diff --git a/src/llvm-project/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/src/llvm-project/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+index ee09a4d9db7..7516a64c6a3 100644
+--- a/src/llvm-project/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
++++ b/src/llvm-project/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+@@ -2103,23 +2103,10 @@ void ModuleAddressSanitizer::InstrumentGlobalsELF(
+     SetComdatForGlobalMetadata(G, Metadata, UniqueModuleId);
+   }
+ 
+-  // This should never be called when there are no globals, by the logic that
+-  // computes the UniqueModuleId string, which is "" when there are no globals.
+-  // It's important that this path is only used when there are actually some
+-  // globals, because that means that there will certainly be a live
+-  // `asan_globals` input section at link time and thus `__start_asan_globals`
+-  // and `__stop_asan_globals` symbols will definitely be defined at link time.
+-  // This means there's no need for the references to them to be weak, which
+-  // enables better code generation because ExternalWeakLinkage implies
+-  // isInterposable() and thus requires GOT indirection for PIC.  Since these
+-  // are known-defined hidden/dso_local symbols, direct PIC accesses without
+-  // dynamic relocation are always sufficient.
+-  assert(!MetadataGlobals.empty());
+-  assert(!UniqueModuleId.empty());
+-
+   // Update llvm.compiler.used, adding the new metadata globals. This is
+   // needed so that during LTO these variables stay alive.
+-  appendToCompilerUsed(M, MetadataGlobals);
++  if (!MetadataGlobals.empty())
++    appendToCompilerUsed(M, MetadataGlobals);
+ 
+   // RegisteredFlag serves two purposes. First, we can pass it to dladdr()
+   // to look up the loaded image that contains it. Second, we can store in it
+@@ -2132,18 +2119,15 @@ void ModuleAddressSanitizer::InstrumentGlobalsELF(
+       ConstantInt::get(IntptrTy, 0), kAsanGlobalsRegisteredFlagName);
+   RegisteredFlag->setVisibility(GlobalVariable::HiddenVisibility);
+ 
+-  // Create start and stop symbols.  These are known to be defined by
+-  // the linker, see comment above.
+-  auto MakeStartStopGV = [&](const char *Prefix) {
+-    GlobalVariable *StartStop =
+-        new GlobalVariable(M, IntptrTy, false, GlobalVariable::ExternalLinkage,
+-                           nullptr, Prefix + getGlobalMetadataSection());
+-    StartStop->setVisibility(GlobalVariable::HiddenVisibility);
+-    assert(StartStop->isImplicitDSOLocal());
+-    return StartStop;
+-  };
+-  GlobalVariable *StartELFMetadata = MakeStartStopGV("__start_");
+-  GlobalVariable *StopELFMetadata = MakeStartStopGV("__stop_");
++  // Create start and stop symbols.
++  GlobalVariable *StartELFMetadata = new GlobalVariable(
++      M, IntptrTy, false, GlobalVariable::ExternalWeakLinkage, nullptr,
++      "__start_" + getGlobalMetadataSection());
++  StartELFMetadata->setVisibility(GlobalVariable::HiddenVisibility);
++  GlobalVariable *StopELFMetadata = new GlobalVariable(
++      M, IntptrTy, false, GlobalVariable::ExternalWeakLinkage, nullptr,
++      "__stop_" + getGlobalMetadataSection());
++  StopELFMetadata->setVisibility(GlobalVariable::HiddenVisibility);
+ 
+   // Create a call to register the globals with the runtime.
+   IRB.CreateCall(AsanRegisterElfGlobals,
diff --git a/dev-lang/rust/files/rust-1.51.0-revert-libunwind-build.patch b/dev-lang/rust/files/rust-1.51.0-revert-libunwind-build.patch
new file mode 100644
index 0000000..b338cb9
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-revert-libunwind-build.patch
@@ -0,0 +1,21 @@
+This reverts commit 21abc88.
+
+Fixes https://github.com/rust-lang/rust/issues/76020
+
+Quote the open upstream CL (https://github.com/rust-lang/rust/issues/76026):
+I'm not sure what exact problem #72746 is supposed to fix, but it's probably incomplete as it breaks the build of 1.46.0 with llvm-libunwind enabled
+
+
+diff --git a/library/unwind/build.rs b/library/unwind/build.rs
+index 31d235cf679..d4bcd2ed4e8 100644
+--- a/library/unwind/build.rs
++++ b/library/unwind/build.rs
+@@ -116,8 +116,6 @@ mod llvm_libunwind {
+             cfg.flag("-fstrict-aliasing");
+             cfg.flag("-funwind-tables");
+             cfg.flag("-fvisibility=hidden");
+-            cfg.flag_if_supported("-fvisibility-global-new-delete-hidden");
+-            cfg.define("_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS", None);
+         }
+ 
+         let mut unwind_sources = vec![
diff --git a/dev-lang/rust/files/rust-1.51.0-sanitizer-supported.patch b/dev-lang/rust/files/rust-1.51.0-sanitizer-supported.patch
new file mode 100644
index 0000000..b544821
--- /dev/null
+++ b/dev-lang/rust/files/rust-1.51.0-sanitizer-supported.patch
@@ -0,0 +1,31 @@
+Ensure that sanitizer runtimes are built for all our supported x86_64
+platforms.
+
+Now that we patch in our own custom -cros and -pc targets instead
+of falling back to -unknown, we need to add builds for those
+targets as well to allow the linker to find the correct versions
+of the librustc_[almt]san static libraries.
+
+diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs
+index 97d9dbdd63f..d81c5e60608 100644
+--- a/src/bootstrap/native.rs
++++ b/src/bootstrap/native.rs
+@@ -790,13 +790,16 @@ fn supported_sanitizers(
+ 
+     match &*target.triple {
+         "aarch64-fuchsia" => common_libs("fuchsia", "aarch64", &["asan"]),
+-        "aarch64-unknown-linux-gnu" => {
++        "aarch64-unknown-linux-gnu" | "aarch64-cros-linux-gnu" => {
+             common_libs("linux", "aarch64", &["asan", "lsan", "msan", "tsan"])
+         }
++        "armv7a-cros-linux-gnueabihf" => {
++            common_libs("linux", "armhf", &["asan"])
++        }
+         "x86_64-apple-darwin" => darwin_libs("osx", &["asan", "lsan", "tsan"]),
+         "x86_64-fuchsia" => common_libs("fuchsia", "x86_64", &["asan"]),
+         "x86_64-unknown-freebsd" => common_libs("freebsd", "x86_64", &["asan", "msan", "tsan"]),
+-        "x86_64-unknown-linux-gnu" => {
++        "x86_64-unknown-linux-gnu" | "x86_64-cros-linux-gnu" | "x86_64-pc-linux-gnu" => {
+             common_libs("linux", "x86_64", &["asan", "lsan", "msan", "tsan"])
+         }
+         _ => Vec::new(),
diff --git a/dev-lang/rust/rust-1.46.0-r1.ebuild b/dev-lang/rust/rust-1.46.0-r1.ebuild
deleted file mode 100644
index d5048f2..0000000
--- a/dev-lang/rust/rust-1.46.0-r1.ebuild
+++ /dev/null
@@ -1,208 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-PYTHON_COMPAT=( python2_7 )
-inherit python-any-r1 versionator toolchain-funcs
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.gz"
-	KEYWORDS=""
-else
-	ABI_VER="$(get_version_component_range 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.gz"
-	KEYWORDS="*"
-fi
-
-
-STAGE0_VERSION="1.45.2"
-STAGE0_VERSION_CARGO="0.46.1"
-STAGE0_DATE="2020-08-03"
-RUST_STAGE0_amd64="rustc-${STAGE0_VERSION}-x86_64-unknown-linux-gnu"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="http://www.rust-lang.org/"
-
-SRC_URI="https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.gz
-	https://static.rust-lang.org/dist/${STAGE0_DATE}/rust-std-${STAGE0_VERSION}-x86_64-unknown-linux-gnu.tar.gz
-	https://static.rust-lang.org/dist/${RUST_STAGE0_amd64}.tar.gz
-	https://static.rust-lang.org/dist/cargo-${STAGE0_VERSION_CARGO}-x86_64-unknown-linux-gnu.tar.gz
-"
-
-LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
-
-RESTRICT="binchecks strip"
-REQUIRED_USE="amd64"
-
-DEPEND="${PYTHON_DEPS}
-	>=dev-libs/libxml2-2.9.6
-	>=dev-lang/perl-5.0
-"
-
-RDEPEND="!dev-util/cargo"
-
-PATCHES=(
-	"${FILESDIR}/${P}-add-cros-targets.patch"
-	"${FILESDIR}/${P}-fix-rpath.patch"
-	"${FILESDIR}/${P}-enable-sanitizers.patch"
-	"${FILESDIR}/${P}-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch"
-	"${FILESDIR}/${P}-no-test-on-build.patch"
-	"${FILESDIR}/${P}-sanitizer-supported.patch"
-	"${FILESDIR}/${P}-cc.patch"
-	"${FILESDIR}/${P}-revert-libunwind-build.patch"
-	"${FILESDIR}/${P}-ld-argv0.patch"
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-# This is the list of target triples as they appear in the cros_sdk. If this list gets changed,
-# ensure that each of these values has a corresponding librustc_target/spec file created below
-# and a line referring to it in 0001-add-cros-targets.patch.
-RUSTC_TARGET_TRIPLES=(
-	x86_64-pc-linux-gnu
-	x86_64-cros-linux-gnu
-	armv7a-cros-linux-gnueabihf
-	aarch64-cros-linux-gnu
-)
-
-# In this context BARE means the OS part of the triple is none and gcc is used for C/C++ and
-# linking.
-RUSTC_BARE_TARGET_TRIPLES=(
-	thumbv6m-none-eabi # Cortex-M0, M0+, M1
-	thumbv7m-none-eabi # Cortex-M3
-	thumbv7em-none-eabihf # Cortex-M4F, M7F, FPU, hardfloat
-)
-
-pkg_setup() {
-	python-any-r1_pkg_setup
-	# Skips the toolchain check if we are installing a binpkg.
-	if [[ "${MERGE_TYPE}" != "binary" ]]; then
-		local tt
-		for tt in "${RUSTC_TARGET_TRIPLES[@]}" ; do
-			which "${tt}-clang" >/dev/null || die "missing toolchain ${tt}"
-		done
-		which "arm-none-eabi-gcc" >/dev/null || die "missing toolchain arm-none-eabi"
-	fi
-}
-
-src_prepare() {
-	local stagename="RUST_STAGE0_${ARCH}"
-	local stage0="${!stagename}"
-
-	cp -r "${WORKDIR}"/rust-std-${STAGE0_VERSION}-x86_64-unknown-linux-gnu/rust-std-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu \
-		"${WORKDIR}"/${stage0}/rustc/lib/rustlib || die
-
-	# Copy "unknown" vendor targets to create cros_sdk target triple
-	# variants as referred to in 0001-add-cros-targets.patch and RUSTC_TARGET_TRIPLES.
-	# armv7a is treated specially because the cros toolchain differs in
-	# more than just the vendor part of the target triple. The arch is
-	# armv7a in cros versus armv7.
-	pushd src/librustc_target/spec || die
-	sed -e 's:"unknown":"pc":g' x86_64_unknown_linux_gnu.rs >x86_64_pc_linux_gnu.rs || die
-	sed -e 's:"unknown":"cros":g' x86_64_unknown_linux_gnu.rs >x86_64_cros_linux_gnu.rs || die
-	sed -e 's:"unknown":"cros":g' armv7_unknown_linux_gnueabihf.rs >armv7a_cros_linux_gnueabihf.rs || die
-	sed -e 's:"unknown":"cros":g' aarch64_unknown_linux_gnu.rs >aarch64_cros_linux_gnu.rs || die
-	popd
-
-	# The miri tool is built because of 'extended = true' in cros-config.toml,
-	# but the build is busted. See the upstream issue: [https://github.com/rust-
-	# lang/rust/issues/56576]. Because miri isn't installed or needed, this sed
-	# script eradicates the command that builds it during the bootstrap script.
-	pushd src/bootstrap || die
-	sed -i 's@tool::Miri,@@g' builder.rs
-	popd
-
-	# Tsk. Tsk. The rust makefile for LLVM's compiler-rt uses -ffreestanding
-	# but one of the files includes <stdlib.h> causing occasional problems
-	# with MB_LEN_MAX. See crbug.com/730845 for the thrilling details. This
-	# line patches over the problematic include.
-	sed -e 's:#include <stdlib.h>:void abort(void);:g' \
-		-i "${ECONF_SOURCE:-.}"/src/llvm-project/compiler-rt/lib/builtins/int_util.c || die
-
-	epatch "${PATCHES[@]}"
-
-	# For the librustc_llvm module, the build will link with -nodefaultlibs and manually choose the
-	# std C++ library. For x86_64 Linux, the build script always chooses libstdc++ which will not
-	# work if LLVM was built with USE="default-libcxx". This snippet changes that choice to libc++
-	# in the case that clang++ defaults to libc++.
-	if "${CXX}" -### -x c++ - < /dev/null 2>&1 | grep -q -e '-lc++'; then
-		sed -i 's:"stdc++":"c++":g' src/librustc_llvm/build.rs || die
-	fi
-
-	default
-}
-
-src_configure() {
-	local stagename="RUST_STAGE0_${ARCH}"
-	local stage0="${!stagename}"
-
-	local targets=""
-	local tt
-	for tt in "${RUSTC_TARGET_TRIPLES[@]}" "${RUSTC_BARE_TARGET_TRIPLES[@]}" ; do
-		targets+="\"${tt}\", "
-	done
-
-	local config=cros-config.toml
-	cat > "${config}" <<EOF
-[build]
-target = [${targets}]
-cargo = "${WORKDIR}/cargo-${STAGE0_VERSION_CARGO}-x86_64-unknown-linux-gnu/cargo/bin/cargo"
-rustc = "${WORKDIR}/${stage0}/rustc/bin/rustc"
-docs = false
-submodules = false
-python = "${EPYTHON}"
-vendor = true
-extended = true
-tools = ["cargo", "rustfmt", "clippy", "cargofmt"]
-sanitizers = true
-
-[llvm]
-ninja = true
-
-[install]
-prefix = "${ED}usr"
-libdir = "$(get_libdir)"
-mandir = "share/man"
-
-[rust]
-default-linker = "${CBUILD}-clang"
-channel = "${SLOT%%/*}"
-codegen-units = 0
-llvm-libunwind = true
-codegen-tests = false
-
-EOF
-	for tt in "${RUSTC_TARGET_TRIPLES[@]}" ; do
-		cat >> cros-config.toml <<EOF
-[target."${tt}"]
-cc = "${tt}-clang"
-cxx = "${tt}-clang++"
-linker = "${tt}-clang++"
-
-EOF
-	done
-}
-
-src_compile() {
-	${EPYTHON} x.py build --config cros-config.toml || die
-}
-
-src_install() {
-	local obj="build/x86_64-unknown-linux-gnu/stage2"
-	local tools="${obj}-tools/x86_64-unknown-linux-gnu/release/"
-	dobin "${obj}/bin/rustc" "${obj}/bin/rustdoc"
-	dobin "${tools}/cargo"
-	dobin "${tools}/rustfmt" "${tools}/cargo-fmt"
-	dobin "${tools}/clippy-driver" "${tools}/cargo-clippy"
-	dobin src/etc/rust-gdb src/etc/rust-lldb
-	insinto "/usr/$(get_libdir)"
-	doins -r "${obj}/lib/"*
-	doins -r "${obj}/lib64/"*
-}
diff --git a/dev-lang/rust/rust-1.47.0-r6.ebuild b/dev-lang/rust/rust-1.47.0-r6.ebuild
deleted file mode 100644
index c24cc39..0000000
--- a/dev-lang/rust/rust-1.47.0-r6.ebuild
+++ /dev/null
@@ -1,199 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python2_7 )
-inherit python-any-r1 toolchain-funcs
-
-if [[ ${PV} = *beta* ]]; then
-	betaver=${PV//*beta}
-	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
-	MY_P="rustc-beta"
-	SLOT="beta/${PV}"
-	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.gz"
-	KEYWORDS=""
-else
-	ABI_VER="$(ver_cut 1-2)"
-	SLOT="stable/${ABI_VER}"
-	MY_P="rustc-${PV}"
-	SRC="${MY_P}-src.tar.gz"
-	KEYWORDS="*"
-fi
-
-
-BOOTSTRAP_VERSION="1.46.0"
-
-DESCRIPTION="Systems programming language from Mozilla"
-HOMEPAGE="http://www.rust-lang.org/"
-
-SRC_URI="https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.gz"
-
-LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
-
-RESTRICT="binchecks strip"
-REQUIRED_USE="amd64"
-
-DEPEND="${PYTHON_DEPS}
-	>=dev-libs/libxml2-2.9.6
-	>=dev-lang/perl-5.0
-"
-
-BDEPEND="=dev-lang/rust-bootstrap-${BOOTSTRAP_VERSION}"
-RDEPEND="!dev-util/cargo"
-
-PATCHES=(
-	"${FILESDIR}/${P}-add-cros-targets.patch"
-	"${FILESDIR}/${P}-fix-rpath.patch"
-	"${FILESDIR}/${P}-enable-sanitizers.patch"
-	"${FILESDIR}/${P}-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch"
-	"${FILESDIR}/${P}-no-test-on-build.patch"
-	"${FILESDIR}/${P}-sanitizer-supported.patch"
-	"${FILESDIR}/${P}-cc.patch"
-	"${FILESDIR}/${P}-revert-libunwind-build.patch"
-	"${FILESDIR}/${P}-ld-argv0.patch"
-	"${FILESDIR}/${P}-no-weak-symbols.patch"
-	"${FILESDIR}/${P}-cherry-dee70493-more-precise-spans.patch"
-	"${FILESDIR}/${P}-Handle-sparse-git-repo-without-erroring.patch"
-)
-
-S="${WORKDIR}/${MY_P}-src"
-
-# This is the list of target triples as they appear in the cros_sdk. If this list gets changed,
-# ensure that each of these values has a corresponding librustc_target/spec file created below
-# and a line referring to it in 0001-add-cros-targets.patch.
-RUSTC_TARGET_TRIPLES=(
-	x86_64-pc-linux-gnu
-	x86_64-cros-linux-gnu
-	armv7a-cros-linux-gnueabihf
-	aarch64-cros-linux-gnu
-)
-
-# In this context BARE means the OS part of the triple is none and gcc is used for C/C++ and
-# linking.
-RUSTC_BARE_TARGET_TRIPLES=(
-	thumbv6m-none-eabi # Cortex-M0, M0+, M1
-	thumbv7m-none-eabi # Cortex-M3
-	thumbv7em-none-eabihf # Cortex-M4F, M7F, FPU, hardfloat
-)
-
-pkg_setup() {
-	python-any-r1_pkg_setup
-	# Skips the toolchain check if we are installing a binpkg.
-	if [[ "${MERGE_TYPE}" != "binary" ]]; then
-		local tt
-		for tt in "${RUSTC_TARGET_TRIPLES[@]}" ; do
-			which "${tt}-clang" >/dev/null || die "missing toolchain ${tt}"
-		done
-		which "arm-none-eabi-gcc" >/dev/null || die "missing toolchain arm-none-eabi"
-	fi
-}
-
-src_prepare() {
-	# Copy "unknown" vendor targets to create cros_sdk target triple
-	# variants as referred to in 0001-add-cros-targets.patch and RUSTC_TARGET_TRIPLES.
-	# armv7a is treated specially because the cros toolchain differs in
-	# more than just the vendor part of the target triple. The arch is
-	# armv7a in cros versus armv7.
-	pushd src/librustc_target/spec || die
-	sed -e 's:"unknown":"pc":g' x86_64_unknown_linux_gnu.rs >x86_64_pc_linux_gnu.rs || die
-	sed -e 's:"unknown":"cros":g' x86_64_unknown_linux_gnu.rs >x86_64_cros_linux_gnu.rs || die
-	sed -e 's:"unknown":"cros":g' armv7_unknown_linux_gnueabihf.rs >armv7a_cros_linux_gnueabihf.rs || die
-	sed -e 's:"unknown":"cros":g' aarch64_unknown_linux_gnu.rs >aarch64_cros_linux_gnu.rs || die
-	popd || die
-
-	# The miri tool is built because of 'extended = true' in cros-config.toml,
-	# but the build is busted. See the upstream issue: [https://github.com/rust-
-	# lang/rust/issues/56576]. Because miri isn't installed or needed, this sed
-	# script eradicates the command that builds it during the bootstrap script.
-	pushd src/bootstrap || die
-	sed -i 's@tool::Miri,@@g' builder.rs
-	popd || die
-
-	# Tsk. Tsk. The rust makefile for LLVM's compiler-rt uses -ffreestanding
-	# but one of the files includes <stdlib.h> causing occasional problems
-	# with MB_LEN_MAX. See crbug.com/730845 for the thrilling details. This
-	# line patches over the problematic include.
-	sed -e 's:#include <stdlib.h>:void abort(void);:g' \
-		-i "${ECONF_SOURCE:-.}"/src/llvm-project/compiler-rt/lib/builtins/int_util.c || die
-
-	# For the librustc_llvm module, the build will link with -nodefaultlibs and manually choose the
-	# std C++ library. For x86_64 Linux, the build script always chooses libstdc++ which will not
-	# work if LLVM was built with USE="default-libcxx". This snippet changes that choice to libc++
-	# in the case that clang++ defaults to libc++.
-	if "${CXX}" -### -x c++ - < /dev/null 2>&1 | grep -q -e '-lc++'; then
-		sed -i 's:"stdc++":"c++":g' src/librustc_llvm/build.rs || die
-	fi
-
-	default
-}
-
-src_configure() {
-	local targets=""
-	local tt
-	for tt in "${RUSTC_TARGET_TRIPLES[@]}" "${RUSTC_BARE_TARGET_TRIPLES[@]}" ; do
-		targets+="\"${tt}\", "
-	done
-
-	local config=cros-config.toml
-	cat > "${config}" <<EOF
-[build]
-target = [${targets}]
-cargo = "/opt/rust-bootstrap-${BOOTSTRAP_VERSION}/bin/cargo"
-rustc = "/opt/rust-bootstrap-${BOOTSTRAP_VERSION}/bin/rustc"
-docs = false
-submodules = false
-python = "${EPYTHON}"
-vendor = true
-extended = true
-tools = ["cargo", "rustfmt", "clippy", "cargofmt"]
-sanitizers = true
-
-[llvm]
-ninja = true
-
-[install]
-prefix = "${ED}usr"
-libdir = "$(get_libdir)"
-mandir = "share/man"
-
-[rust]
-default-linker = "${CBUILD}-clang"
-channel = "${SLOT%%/*}"
-codegen-units = 0
-llvm-libunwind = true
-codegen-tests = false
-
-EOF
-	for tt in "${RUSTC_TARGET_TRIPLES[@]}" ; do
-		cat >> cros-config.toml <<EOF
-[target."${tt}"]
-cc = "${tt}-clang"
-cxx = "${tt}-clang++"
-linker = "${tt}-clang++"
-
-EOF
-	done
-}
-
-src_compile() {
-	${EPYTHON} x.py build --stage 2 --config cros-config.toml || die
-
-	# Remove the src/rust symlink which will be dangling after sources are
-	# removed, and the containing src directory.
-	rm "${S}/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/src/rust" || die
-	rmdir "${S}/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/src" || die
-}
-
-src_install() {
-	local obj="build/x86_64-unknown-linux-gnu/stage2"
-	local tools="${obj}-tools/x86_64-unknown-linux-gnu/release/"
-	dobin "${obj}/bin/rustc" "${obj}/bin/rustdoc"
-	dobin "${tools}/cargo"
-	dobin "${tools}/rustfmt" "${tools}/cargo-fmt"
-	dobin "${tools}/clippy-driver" "${tools}/cargo-clippy"
-	dobin src/etc/rust-gdb src/etc/rust-lldb
-	insinto "/usr/$(get_libdir)"
-	doins -r "${obj}/lib/"*
-	doins -r "${obj}/lib64/"*
-}
diff --git a/dev-lang/rust/rust-1.47.0-r7.ebuild b/dev-lang/rust/rust-1.47.0-r7.ebuild
new file mode 100644
index 0000000..d7adab9
--- /dev/null
+++ b/dev-lang/rust/rust-1.47.0-r7.ebuild
@@ -0,0 +1,200 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python2_7 )
+inherit python-any-r1 toolchain-funcs
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.gz"
+	KEYWORDS=""
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.gz"
+	KEYWORDS="*"
+fi
+
+
+BOOTSTRAP_VERSION="1.46.0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="http://www.rust-lang.org/"
+
+SRC_URI="https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.gz"
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
+
+RESTRICT="binchecks strip"
+REQUIRED_USE="amd64"
+
+DEPEND="${PYTHON_DEPS}
+	>=dev-libs/libxml2-2.9.6
+	>=dev-lang/perl-5.0
+"
+
+BDEPEND="=dev-lang/rust-bootstrap-${BOOTSTRAP_VERSION}"
+RDEPEND="!dev-util/cargo"
+
+PATCHES=(
+	"${FILESDIR}/${P}-aarch64-outline-atomics.patch"
+	"${FILESDIR}/${P}-add-cros-targets.patch"
+	"${FILESDIR}/${P}-fix-rpath.patch"
+	"${FILESDIR}/${P}-enable-sanitizers.patch"
+	"${FILESDIR}/${P}-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch"
+	"${FILESDIR}/${P}-no-test-on-build.patch"
+	"${FILESDIR}/${P}-sanitizer-supported.patch"
+	"${FILESDIR}/${P}-cc.patch"
+	"${FILESDIR}/${P}-revert-libunwind-build.patch"
+	"${FILESDIR}/${P}-ld-argv0.patch"
+	"${FILESDIR}/${P}-no-weak-symbols.patch"
+	"${FILESDIR}/${P}-cherry-dee70493-more-precise-spans.patch"
+	"${FILESDIR}/${P}-Handle-sparse-git-repo-without-erroring.patch"
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+# This is the list of target triples as they appear in the cros_sdk. If this list gets changed,
+# ensure that each of these values has a corresponding librustc_target/spec file created below
+# and a line referring to it in 0001-add-cros-targets.patch.
+RUSTC_TARGET_TRIPLES=(
+	x86_64-pc-linux-gnu
+	x86_64-cros-linux-gnu
+	armv7a-cros-linux-gnueabihf
+	aarch64-cros-linux-gnu
+)
+
+# In this context BARE means the OS part of the triple is none and gcc is used for C/C++ and
+# linking.
+RUSTC_BARE_TARGET_TRIPLES=(
+	thumbv6m-none-eabi # Cortex-M0, M0+, M1
+	thumbv7m-none-eabi # Cortex-M3
+	thumbv7em-none-eabihf # Cortex-M4F, M7F, FPU, hardfloat
+)
+
+pkg_setup() {
+	python-any-r1_pkg_setup
+	# Skips the toolchain check if we are installing a binpkg.
+	if [[ "${MERGE_TYPE}" != "binary" ]]; then
+		local tt
+		for tt in "${RUSTC_TARGET_TRIPLES[@]}" ; do
+			which "${tt}-clang" >/dev/null || die "missing toolchain ${tt}"
+		done
+		which "arm-none-eabi-gcc" >/dev/null || die "missing toolchain arm-none-eabi"
+	fi
+}
+
+src_prepare() {
+	# Copy "unknown" vendor targets to create cros_sdk target triple
+	# variants as referred to in 0001-add-cros-targets.patch and RUSTC_TARGET_TRIPLES.
+	# armv7a is treated specially because the cros toolchain differs in
+	# more than just the vendor part of the target triple. The arch is
+	# armv7a in cros versus armv7.
+	pushd src/librustc_target/spec || die
+	sed -e 's:"unknown":"pc":g' x86_64_unknown_linux_gnu.rs >x86_64_pc_linux_gnu.rs || die
+	sed -e 's:"unknown":"cros":g' x86_64_unknown_linux_gnu.rs >x86_64_cros_linux_gnu.rs || die
+	sed -e 's:"unknown":"cros":g' armv7_unknown_linux_gnueabihf.rs >armv7a_cros_linux_gnueabihf.rs || die
+	sed -e 's:"unknown":"cros":g' aarch64_unknown_linux_gnu.rs >aarch64_cros_linux_gnu.rs || die
+	popd || die
+
+	# The miri tool is built because of 'extended = true' in cros-config.toml,
+	# but the build is busted. See the upstream issue: [https://github.com/rust-
+	# lang/rust/issues/56576]. Because miri isn't installed or needed, this sed
+	# script eradicates the command that builds it during the bootstrap script.
+	pushd src/bootstrap || die
+	sed -i 's@tool::Miri,@@g' builder.rs
+	popd || die
+
+	# Tsk. Tsk. The rust makefile for LLVM's compiler-rt uses -ffreestanding
+	# but one of the files includes <stdlib.h> causing occasional problems
+	# with MB_LEN_MAX. See crbug.com/730845 for the thrilling details. This
+	# line patches over the problematic include.
+	sed -e 's:#include <stdlib.h>:void abort(void);:g' \
+		-i "${ECONF_SOURCE:-.}"/src/llvm-project/compiler-rt/lib/builtins/int_util.c || die
+
+	# For the librustc_llvm module, the build will link with -nodefaultlibs and manually choose the
+	# std C++ library. For x86_64 Linux, the build script always chooses libstdc++ which will not
+	# work if LLVM was built with USE="default-libcxx". This snippet changes that choice to libc++
+	# in the case that clang++ defaults to libc++.
+	if "${CXX}" -### -x c++ - < /dev/null 2>&1 | grep -q -e '-lc++'; then
+		sed -i 's:"stdc++":"c++":g' src/librustc_llvm/build.rs || die
+	fi
+
+	default
+}
+
+src_configure() {
+	local targets=""
+	local tt
+	for tt in "${RUSTC_TARGET_TRIPLES[@]}" "${RUSTC_BARE_TARGET_TRIPLES[@]}" ; do
+		targets+="\"${tt}\", "
+	done
+
+	local config=cros-config.toml
+	cat > "${config}" <<EOF
+[build]
+target = [${targets}]
+cargo = "/opt/rust-bootstrap-${BOOTSTRAP_VERSION}/bin/cargo"
+rustc = "/opt/rust-bootstrap-${BOOTSTRAP_VERSION}/bin/rustc"
+docs = false
+submodules = false
+python = "${EPYTHON}"
+vendor = true
+extended = true
+tools = ["cargo", "rustfmt", "clippy", "cargofmt"]
+sanitizers = true
+
+[llvm]
+ninja = true
+
+[install]
+prefix = "${ED}usr"
+libdir = "$(get_libdir)"
+mandir = "share/man"
+
+[rust]
+default-linker = "${CBUILD}-clang"
+channel = "${SLOT%%/*}"
+codegen-units = 0
+llvm-libunwind = true
+codegen-tests = false
+
+EOF
+	for tt in "${RUSTC_TARGET_TRIPLES[@]}" ; do
+		cat >> cros-config.toml <<EOF
+[target."${tt}"]
+cc = "${tt}-clang"
+cxx = "${tt}-clang++"
+linker = "${tt}-clang++"
+
+EOF
+	done
+}
+
+src_compile() {
+	${EPYTHON} x.py build --stage 2 --config cros-config.toml || die
+
+	# Remove the src/rust symlink which will be dangling after sources are
+	# removed, and the containing src directory.
+	rm "${S}/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/src/rust" || die
+	rmdir "${S}/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/src" || die
+}
+
+src_install() {
+	local obj="build/x86_64-unknown-linux-gnu/stage2"
+	local tools="${obj}-tools/x86_64-unknown-linux-gnu/release/"
+	dobin "${obj}/bin/rustc" "${obj}/bin/rustdoc"
+	dobin "${tools}/cargo"
+	dobin "${tools}/rustfmt" "${tools}/cargo-fmt"
+	dobin "${tools}/clippy-driver" "${tools}/cargo-clippy"
+	dobin src/etc/rust-gdb src/etc/rust-lldb
+	insinto "/usr/$(get_libdir)"
+	doins -r "${obj}/lib/"*
+	doins -r "${obj}/lib64/"*
+}
diff --git a/dev-lang/rust/rust-1.51.0.ebuild b/dev-lang/rust/rust-1.51.0.ebuild
new file mode 100644
index 0000000..093365e
--- /dev/null
+++ b/dev-lang/rust/rust-1.51.0.ebuild
@@ -0,0 +1,210 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6..9} )
+inherit python-any-r1 toolchain-funcs
+
+if [[ ${PV} = *beta* ]]; then
+	betaver=${PV//*beta}
+	BETA_SNAPSHOT="${betaver:0:4}-${betaver:4:2}-${betaver:6:2}"
+	MY_P="rustc-beta"
+	SLOT="beta/${PV}"
+	SRC="${BETA_SNAPSHOT}/rustc-beta-src.tar.gz"
+	KEYWORDS=""
+else
+	ABI_VER="$(ver_cut 1-2)"
+	SLOT="stable/${ABI_VER}"
+	MY_P="rustc-${PV}"
+	SRC="${MY_P}-src.tar.gz"
+	KEYWORDS="*"
+fi
+
+
+BOOTSTRAP_VERSION="1.50.0"
+
+DESCRIPTION="Systems programming language from Mozilla"
+HOMEPAGE="http://www.rust-lang.org/"
+
+SRC_URI="https://static.rust-lang.org/dist/${SRC} -> rustc-${PV}-src.tar.gz"
+
+LICENSE="|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA"
+
+RESTRICT="binchecks strip"
+REQUIRED_USE="amd64"
+
+DEPEND="${PYTHON_DEPS}
+	>=dev-libs/libxml2-2.9.6
+	>=dev-lang/perl-5.0
+"
+
+BDEPEND="dev-lang/rust-bootstrap:${BOOTSTRAP_VERSION}"
+RDEPEND="!dev-util/cargo"
+
+PATCHES=(
+	# This bundle is from
+	# https://gitweb.gentoo.org/repo/gentoo.git/commit?id=65b9e4c1a1c3a2de55637c7977584c5827b66366
+	# and
+	# https://gitweb.gentoo.org/repo/gentoo.git/commit?id=c9982cad131a4c026810796850ccb60243ff9406.
+	"${FILESDIR}/${P}-backport-pr81728.patch"
+	"${FILESDIR}/${P}-backport-pr81741.patch"
+	"${FILESDIR}/${P}-backport-pr82289.patch"
+	"${FILESDIR}/${P}-backport-pr82292.patch"
+	"${FILESDIR}/${P}-backport-pr83629.patch"
+
+	"${FILESDIR}/${P}-aarch64-outline-atomics.patch"
+	"${FILESDIR}/${P}-add-cros-targets.patch"
+	"${FILESDIR}/${P}-fix-rpath.patch"
+	"${FILESDIR}/${P}-enable-sanitizers.patch"
+	"${FILESDIR}/${P}-Revert-CMake-Unconditionally-add-.h-and-.td-files-to.patch"
+	"${FILESDIR}/${P}-no-test-on-build.patch"
+	"${FILESDIR}/${P}-sanitizer-supported.patch"
+	"${FILESDIR}/${P}-cc.patch"
+	"${FILESDIR}/${P}-revert-libunwind-build.patch"
+	"${FILESDIR}/${P}-ld-argv0.patch"
+	"${FILESDIR}/${P}-no-weak-symbols.patch"
+	"${FILESDIR}/${P}-Handle-sparse-git-repo-without-erroring.patch"
+)
+
+S="${WORKDIR}/${MY_P}-src"
+
+# This is the list of target triples as they appear in the cros_sdk. If this
+# list gets changed, ensure that each of these values has a corresponding
+# compiler/rustc_target/src/spec file created below and a line referring to it
+# in 0001-add-cros-targets.patch.
+RUSTC_TARGET_TRIPLES=(
+	x86_64-pc-linux-gnu
+	x86_64-cros-linux-gnu
+	armv7a-cros-linux-gnueabihf
+	aarch64-cros-linux-gnu
+)
+
+# In this context BARE means the OS part of the triple is none and gcc is used for C/C++ and
+# linking.
+RUSTC_BARE_TARGET_TRIPLES=(
+	thumbv6m-none-eabi # Cortex-M0, M0+, M1
+	thumbv7m-none-eabi # Cortex-M3
+	thumbv7em-none-eabihf # Cortex-M4F, M7F, FPU, hardfloat
+)
+
+pkg_setup() {
+	python-any-r1_pkg_setup
+	# Skips the toolchain check if we are installing a binpkg.
+	if [[ "${MERGE_TYPE}" != "binary" ]]; then
+		local tt
+		for tt in "${RUSTC_TARGET_TRIPLES[@]}" ; do
+			which "${tt}-clang" >/dev/null || die "missing toolchain ${tt}"
+		done
+		which "arm-none-eabi-gcc" >/dev/null || die "missing toolchain arm-none-eabi"
+	fi
+}
+
+src_prepare() {
+	# Copy "unknown" vendor targets to create cros_sdk target triple
+	# variants as referred to in 0001-add-cros-targets.patch and RUSTC_TARGET_TRIPLES.
+	# armv7a is treated specially because the cros toolchain differs in
+	# more than just the vendor part of the target triple. The arch is
+	# armv7a in cros versus armv7.
+	pushd compiler/rustc_target/src/spec || die
+	sed -e 's:"unknown":"pc":g' x86_64_unknown_linux_gnu.rs >x86_64_pc_linux_gnu.rs || die
+	sed -e 's:"unknown":"cros":g' x86_64_unknown_linux_gnu.rs >x86_64_cros_linux_gnu.rs || die
+	sed -e 's:"unknown":"cros":g' armv7_unknown_linux_gnueabihf.rs >armv7a_cros_linux_gnueabihf.rs || die
+	sed -e 's:"unknown":"cros":g' aarch64_unknown_linux_gnu.rs >aarch64_cros_linux_gnu.rs || die
+	popd || die
+
+	# The miri tool is built because of 'extended = true' in cros-config.toml,
+	# but the build is busted. See the upstream issue: [https://github.com/rust-
+	# lang/rust/issues/56576]. Because miri isn't installed or needed, this sed
+	# script eradicates the command that builds it during the bootstrap script.
+	pushd src/bootstrap || die
+	sed -i 's@tool::Miri,@@g' builder.rs
+	popd || die
+
+	# Tsk. Tsk. The rust makefile for LLVM's compiler-rt uses -ffreestanding
+	# but one of the files includes <stdlib.h> causing occasional problems
+	# with MB_LEN_MAX. See crbug.com/730845 for the thrilling details. This
+	# line patches over the problematic include.
+	sed -e 's:#include <stdlib.h>:void abort(void);:g' \
+		-i "${ECONF_SOURCE:-.}"/src/llvm-project/compiler-rt/lib/builtins/int_util.c || die
+
+	# For the rustc_llvm module, the build will link with -nodefaultlibs and manually choose the
+	# std C++ library. For x86_64 Linux, the build script always chooses libstdc++ which will not
+	# work if LLVM was built with USE="default-libcxx". This snippet changes that choice to libc++
+	# in the case that clang++ defaults to libc++.
+	if "${CXX}" -### -x c++ - < /dev/null 2>&1 | grep -q -e '-lc++'; then
+		sed -i 's:"stdc++":"c++":g' compiler/rustc_llvm/build.rs || die
+	fi
+
+	default
+}
+
+src_configure() {
+	local targets=""
+	local tt
+	for tt in "${RUSTC_TARGET_TRIPLES[@]}" "${RUSTC_BARE_TARGET_TRIPLES[@]}" ; do
+		targets+="\"${tt}\", "
+	done
+
+	local config=cros-config.toml
+	cat > "${config}" <<EOF
+[build]
+target = [${targets}]
+cargo = "/opt/rust-bootstrap-${BOOTSTRAP_VERSION}/bin/cargo"
+rustc = "/opt/rust-bootstrap-${BOOTSTRAP_VERSION}/bin/rustc"
+docs = false
+submodules = false
+python = "${EPYTHON}"
+vendor = true
+extended = true
+tools = ["cargo", "rustfmt", "clippy", "cargofmt"]
+sanitizers = true
+
+[llvm]
+ninja = true
+
+[install]
+prefix = "${ED}usr"
+libdir = "$(get_libdir)"
+mandir = "share/man"
+
+[rust]
+default-linker = "${CBUILD}-clang"
+channel = "${SLOT%%/*}"
+codegen-units = 0
+llvm-libunwind = 'in-tree'
+codegen-tests = false
+
+EOF
+	for tt in "${RUSTC_TARGET_TRIPLES[@]}" ; do
+		cat >> cros-config.toml <<EOF
+[target."${tt}"]
+cc = "${tt}-clang"
+cxx = "${tt}-clang++"
+linker = "${tt}-clang++"
+
+EOF
+	done
+}
+
+src_compile() {
+	${EPYTHON} x.py build --stage 2 --config cros-config.toml || die
+
+	# Remove the src/rust symlink which will be dangling after sources are
+	# removed, and the containing src directory.
+	rm "${S}/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/src/rust" || die
+	rmdir "${S}/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/src" || die
+}
+
+src_install() {
+	local obj="build/x86_64-unknown-linux-gnu/stage2"
+	local tools="${obj}-tools/x86_64-unknown-linux-gnu/release/"
+	dobin "${obj}/bin/rustc" "${obj}/bin/rustdoc"
+	dobin "${tools}/cargo"
+	dobin "${tools}/rustfmt" "${tools}/cargo-fmt"
+	dobin "${tools}/clippy-driver" "${tools}/cargo-clippy"
+	dobin src/etc/rust-gdb src/etc/rust-lldb
+	insinto "/usr/$(get_libdir)"
+	doins -r "${obj}/lib/"*
+	doins -r "${obj}/lib64/"*
+}
diff --git a/dev-libs/glib/files/glib-2.66.7-CHROMIUM-gdbus-system-bus-address.patch b/dev-libs/glib/files/glib-2.66.7-CHROMIUM-gdbus-system-bus-address.patch
new file mode 100644
index 0000000..3064a90
--- /dev/null
+++ b/dev-libs/glib/files/glib-2.66.7-CHROMIUM-gdbus-system-bus-address.patch
@@ -0,0 +1,31 @@
+From a7aac89f366c1ef1ca928751b08e11dc90cd1110 Mon Sep 17 00:00:00 2001
+From: Vincent Palatin <vpalatin@chromium.org>
+Date: Tue, 25 May 2021 16:08:10 +0200
+Subject: [PATCH] gdbus: use /run/dbus rather than /var/run/dbus
+
+When opening the D-Bus system socket, try '/run/dbus/system_bus_socket'
+rather than '/var/run/dbus/system_bus_socket' as standardized by FHS
+version 3.0.
+
+Often both exist, but in some jails, '/var/run' is not bind-mounted
+failing the D-Bus connection.
+---
+ gio/gdbusaddress.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gio/gdbusaddress.c b/gio/gdbusaddress.c
+index 0044cd3..207838c 100644
+--- a/gio/gdbusaddress.c
++++ b/gio/gdbusaddress.c
+@@ -1331,7 +1331,7 @@ g_dbus_address_get_for_bus_sync (GBusType       bus_type,
+ 
+       if (ret == NULL)
+         {
+-          ret = g_strdup ("unix:path=/var/run/dbus/system_bus_socket");
++          ret = g_strdup ("unix:path=/run/dbus/system_bus_socket");
+         }
+       break;
+ 
+-- 
+2.31.0
+
diff --git a/dev-libs/glib/glib-2.66.7-r1.ebuild b/dev-libs/glib/glib-2.66.7-r1.ebuild
deleted file mode 100644
index 82680f0..0000000
--- a/dev-libs/glib/glib-2.66.7-r1.ebuild
+++ /dev/null
@@ -1,284 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-PYTHON_COMPAT=( python3_{6,7,8,9} )
-
-inherit flag-o-matic gnome.org gnome2-utils linux-info meson multilib multilib-minimal python-any-r1 toolchain-funcs xdg
-
-DESCRIPTION="The GLib library of C routines"
-HOMEPAGE="https://www.gtk.org/"
-
-LICENSE="LGPL-2.1+"
-SLOT="2"
-IUSE="cros_host dbus debug doc elibc_glibc fam gtk-doc kernel_linux +mime selinux static-libs sysprof systemtap test utils xattr"
-RESTRICT="!test? ( test )"
-
-KEYWORDS="*"
-
-# * libelf isn't strictly necessary, but makes gresource tool more useful, and
-# the check is automagic in gio/meson.build. gresource is not a multilib tool
-# right now, thus it doesn't matter if non-native ABI libelf exists or not
-# (non-native binary is overwritten, it doesn't matter if libelf was linked to).
-# * elfutils (via libelf) does not build on Windows. gresources are not embedded
-# within ELF binaries on that platform anyway and inspecting ELF binaries from
-# other platforms is not that useful so exclude the dependency in this case.
-# * Technically static-libs is needed on zlib, util-linux and perhaps more, but
-# these are used by GIO, which glib[static-libs] consumers don't really seem
-# to need at all, thus not imposing the deps for now and once some consumers
-# are actually found to static link libgio-2.0.a, we can revisit and either add
-# them or just put the (build) deps in that rare consumer instead of recursive
-# RDEPEND here (due to lack of recursive DEPEND).
-RDEPEND="
-	!<dev-util/gdbus-codegen-${PV}
-	>=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
-	>=dev-libs/libpcre-8.31:3[${MULTILIB_USEDEP},static-libs?]
-	>=virtual/libffi-3.0.13-r1:=[${MULTILIB_USEDEP}]
-	>=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
-	>=virtual/libintl-0-r2[${MULTILIB_USEDEP}]
-	kernel_linux? ( >=sys-apps/util-linux-2.23[${MULTILIB_USEDEP}] )
-	selinux? ( >=sys-libs/libselinux-2.2.2-r5[${MULTILIB_USEDEP}] )
-	xattr? ( !elibc_glibc? ( >=sys-apps/attr-2.4.47-r1[${MULTILIB_USEDEP}] ) )
-	cros_host? ( virtual/libelf:0= )
-	fam? ( >=virtual/fam-0-r1[${MULTILIB_USEDEP}] )
-	sysprof? ( >=dev-util/sysprof-capture-3.38:4[${MULTILIB_USEDEP}] )
-"
-DEPEND="${RDEPEND}"
-# libxml2 used for optional tests that get automatically skipped
-BDEPEND="
-	doc? (
-		app-text/docbook-xsl-stylesheets
-		dev-libs/libxslt
-	)
-	>=sys-devel/gettext-0.19.8
-	gtk-doc? ( >=dev-util/gtk-doc-1.33
-		app-text/docbook-xml-dtd:4.2
-		app-text/docbook-xml-dtd:4.5 )
-	systemtap? ( >=dev-util/systemtap-1.3 )
-	${PYTHON_DEPS}
-	test? ( >=sys-apps/dbus-1.2.14 )
-	virtual/pkgconfig
-"
-# TODO: >=dev-util/gdbus-codegen-${PV} test dep once we modify gio/tests/meson.build to use external gdbus-codegen
-
-PDEPEND="
-	dbus? ( gnome-base/dconf )
-	mime? ( x11-misc/shared-mime-info )
-"
-# shared-mime-info needed for gio/xdgmime, bug #409481
-# dconf is needed to be able to save settings, bug #498436
-
-MULTILIB_CHOST_TOOLS=(
-	/usr/bin/gio-querymodules$(get_exeext)
-)
-
-pkg_setup() {
-	if use kernel_linux ; then
-		CONFIG_CHECK="~INOTIFY_USER"
-		if use test ; then
-			CONFIG_CHECK="~IPV6"
-			WARNING_IPV6="Your kernel needs IPV6 support for running some tests, skipping them."
-		fi
-		linux-info_pkg_setup
-	fi
-	python-any-r1_pkg_setup
-}
-
-src_prepare() {
-	if use test; then
-		# TODO: Review the test exclusions, especially now with meson
-		# Disable tests requiring dev-util/desktop-file-utils when not installed, bug #286629, upstream bug #629163
-		if ! has_version dev-util/desktop-file-utils ; then
-			ewarn "Some tests will be skipped due dev-util/desktop-file-utils not being present on your system,"
-			ewarn "think on installing it to get these tests run."
-			sed -i -e "/appinfo\/associations/d" gio/tests/appinfo.c || die
-			sed -i -e "/g_test_add_func/d" gio/tests/desktop-app-info.c || die
-		fi
-
-		# gdesktopappinfo requires existing terminal (gnome-terminal or any
-		# other), falling back to xterm if one doesn't exist
-		#if ! has_version x11-terms/xterm && ! has_version x11-terms/gnome-terminal ; then
-		#	ewarn "Some tests will be skipped due to missing terminal program"
-		# These tests seem to sometimes fail even with a terminal; skip for now and reevulate with meson
-		# Also try https://gitlab.gnome.org/GNOME/glib/issues/1601 once ready for backport (or in a bump) and file new issue if still fails
-		sed -i -e "/appinfo\/launch/d" gio/tests/appinfo.c || die
-		# desktop-app-info/launch* might fail similarly
-		sed -i -e "/desktop-app-info\/launch-as-manager/d" gio/tests/desktop-app-info.c || die
-		#fi
-
-		# https://bugzilla.gnome.org/show_bug.cgi?id=722604
-		sed -i -e "/timer\/stop/d" glib/tests/timer.c || die
-		sed -i -e "/timer\/basic/d" glib/tests/timer.c || die
-
-		ewarn "Tests for search-utils have been skipped"
-		sed -i -e "/search-utils/d" glib/tests/meson.build || die
-
-		# Play nice with network-sandbox, but this approach would defeat the purpose of the test
-		#sed -i -e "s/localhost/127.0.0.1/g" gio/tests/gsocketclient-slow.c || die
-	else
-		# Don't build tests, also prevents extra deps, bug #512022
-		sed -i -e '/subdir.*tests/d' {.,gio,glib}/meson.build || die
-	fi
-
-	# Don't build fuzzing binaries - not used
-	sed -i -e '/subdir.*fuzzing/d' meson.build || die
-
-	# gdbus-codegen is a separate package
-	sed -i -e '/install_dir/d' gio/gdbus-2.0/codegen/meson.build || die
-
-	# Same kind of meson-0.50 issue with some installed-tests files; will likely be fixed upstream soon
-	sed -i -e '/install_dir/d' gio/tests/meson.build || die
-
-	cat > "${T}/glib-test-ld-wrapper" <<-EOF
-		#!/usr/bin/env sh
-		exec \${LD:-ld} "\$@"
-	EOF
-	chmod a+x "${T}/glib-test-ld-wrapper" || die
-	sed -i -e "s|'ld'|'${T}/glib-test-ld-wrapper'|g" gio/tests/meson.build || die
-
-	xdg_src_prepare
-	gnome2_environment_reset
-	# TODO: python_name sedding for correct python shebang? Might be relevant mainly for glib-utils only
-}
-
-multilib_src_configure() {
-	if use debug; then
-		append-cflags -DG_ENABLE_DEBUG
-	else
-		append-cflags -DG_DISABLE_CAST_CHECKS # https://gitlab.gnome.org/GNOME/glib/issues/1833
-	fi
-
-	# TODO: figure a way to pass appropriate values for all cross properties that glib uses (search for get_cross_property)
-	#if tc-is-cross-compiler ; then
-		# https://bugzilla.gnome.org/show_bug.cgi?id=756473
-		# TODO-meson: This should be in meson cross file as 'growing_stack' property; and more, look at get_cross_property
-		#case ${CHOST} in
-		#hppa*|metag*) export glib_cv_stack_grows=yes ;;
-		#*)            export glib_cv_stack_grows=no ;;
-		#esac
-	#fi
-
-	local emesonargs=(
-		-Ddefault_library=$(usex static-libs both shared)
-		$(meson_feature selinux)
-		$(meson_use xattr)
-		-Dlibmount=enabled # only used if host_system == 'linux'
-		-Dinternal_pcre=false
-		-Dman=$(multilib_native_usex doc true false)
-		$(meson_use systemtap dtrace)
-		$(meson_use systemtap)
-		-Dgtk_doc=$(multilib_native_usex gtk-doc true false)
-		$(meson_use fam)
-		-Dinstalled_tests=false
-		-Dnls=enabled
-		-Doss_fuzz=disabled
-	)
-	meson_src_configure
-}
-
-multilib_src_compile() {
-	meson_src_compile
-}
-
-multilib_src_test() {
-	export XDG_CONFIG_DIRS=/etc/xdg
-	export XDG_DATA_DIRS=/usr/local/share:/usr/share
-	export G_DBUS_COOKIE_SHA1_KEYRING_DIR="${T}/temp"
-	export LC_TIME=C # bug #411967
-	unset GSETTINGS_BACKEND # bug #596380
-	python_setup
-
-	# Related test is a bit nitpicking
-	mkdir "$G_DBUS_COOKIE_SHA1_KEYRING_DIR"
-	chmod 0700 "$G_DBUS_COOKIE_SHA1_KEYRING_DIR"
-
-	meson_src_test --timeout-multiplier 2 --no-suite flaky
-}
-
-multilib_src_install() {
-	meson_src_install
-	keepdir /usr/$(get_libdir)/gio/modules
-}
-
-multilib_src_install_all() {
-	if use doc ; then
-		einstalldocs
-	fi
-
-	# These are installed by dev-util/glib-utils
-	# TODO: With patching we might be able to get rid of the python-any deps and removals, and test depend on glib-utils instead; revisit now with meson
-	rm "${ED}/usr/bin/glib-genmarshal" || die
-	rm "${ED}/usr/bin/glib-mkenums" || die
-	rm "${ED}/usr/bin/gtester-report" || die
-	use doc && (
-		rm "${ED}/usr/share/man/man1/glib-genmarshal.1" || die
-		rm "${ED}/usr/share/man/man1/glib-mkenums.1" || die
-		rm "${ED}/usr/share/man/man1/gtester-report.1" || die
-		# gdbus-codegen manpage installed by dev-util/gdbus-codegen
-		rm "${ED}/usr/share/man/man1/gdbus-codegen.1" || die
-	)
-}
-
-pkg_preinst() {
-	xdg_pkg_preinst
-
-	# Make gschemas.compiled belong to glib alone
-	local cache="/usr/share/glib-2.0/schemas/gschemas.compiled"
-
-	if [[ -e ${EROOT}${cache} ]]; then
-		cp "${EROOT}"${cache} "${ED}"/${cache} || die
-	else
-		touch "${ED}"${cache} || die
-	fi
-
-	multilib_pkg_preinst() {
-		# Make giomodule.cache belong to glib alone
-		local cache="/usr/$(get_libdir)/gio/modules/giomodule.cache"
-
-		if [[ -e ${EROOT}${cache} ]]; then
-			cp "${EROOT}"${cache} "${ED}"${cache} || die
-		else
-			touch "${ED}"${cache} || die
-		fi
-	}
-
-	# Don't run the cache ownership when cross-compiling, as it would end up with an empty cache
-	# file due to inability to create it and GIO might not look at any of the modules there
-	if ! tc-is-cross-compiler ; then
-		multilib_foreach_abi multilib_pkg_preinst
-	fi
-}
-
-pkg_postinst() {
-	xdg_pkg_postinst
-	# glib installs no schemas itself, but we force update for fresh install in case
-	# something has dropped in a schemas file without direct glib dep; and for upgrades
-	# in case the compiled schema format could have changed
-	gnome2_schemas_update
-
-	multilib_pkg_postinst() {
-		gnome2_giomodule_cache_update \
-			|| die "Update GIO modules cache failed (for ${ABI})"
-	}
-	if ! tc-is-cross-compiler ; then
-		multilib_foreach_abi multilib_pkg_postinst
-	else
-		ewarn "Updating of GIO modules cache skipped due to cross-compilation."
-		ewarn "You might want to run gio-querymodules manually on the target for"
-		ewarn "your final image for performance reasons and re-run it when packages"
-		ewarn "installing GIO modules get upgraded or added to the image."
-	fi
-}
-
-pkg_postrm() {
-	xdg_pkg_postrm
-	gnome2_schemas_update
-
-	if [[ -z ${REPLACED_BY_VERSION} ]]; then
-		multilib_pkg_postrm() {
-			rm -f "${EROOT}"/usr/$(get_libdir)/gio/modules/giomodule.cache
-		}
-		multilib_foreach_abi multilib_pkg_postrm
-		rm -f "${EROOT}"/usr/share/glib-2.0/schemas/gschemas.compiled
-	fi
-}
diff --git a/dev-libs/glib/glib-2.66.7-r2.ebuild b/dev-libs/glib/glib-2.66.7-r2.ebuild
new file mode 100644
index 0000000..509c386
--- /dev/null
+++ b/dev-libs/glib/glib-2.66.7-r2.ebuild
@@ -0,0 +1,288 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8,9} )
+
+inherit flag-o-matic gnome.org gnome2-utils linux-info meson multilib multilib-minimal python-any-r1 toolchain-funcs xdg
+
+DESCRIPTION="The GLib library of C routines"
+HOMEPAGE="https://www.gtk.org/"
+
+LICENSE="LGPL-2.1+"
+SLOT="2"
+IUSE="cros_host dbus debug doc elibc_glibc fam gtk-doc kernel_linux +mime selinux static-libs sysprof systemtap test utils xattr"
+RESTRICT="!test? ( test )"
+
+KEYWORDS="*"
+
+# * libelf isn't strictly necessary, but makes gresource tool more useful, and
+# the check is automagic in gio/meson.build. gresource is not a multilib tool
+# right now, thus it doesn't matter if non-native ABI libelf exists or not
+# (non-native binary is overwritten, it doesn't matter if libelf was linked to).
+# * elfutils (via libelf) does not build on Windows. gresources are not embedded
+# within ELF binaries on that platform anyway and inspecting ELF binaries from
+# other platforms is not that useful so exclude the dependency in this case.
+# * Technically static-libs is needed on zlib, util-linux and perhaps more, but
+# these are used by GIO, which glib[static-libs] consumers don't really seem
+# to need at all, thus not imposing the deps for now and once some consumers
+# are actually found to static link libgio-2.0.a, we can revisit and either add
+# them or just put the (build) deps in that rare consumer instead of recursive
+# RDEPEND here (due to lack of recursive DEPEND).
+RDEPEND="
+	!<dev-util/gdbus-codegen-${PV}
+	>=virtual/libiconv-0-r1[${MULTILIB_USEDEP}]
+	>=dev-libs/libpcre-8.31:3[${MULTILIB_USEDEP},static-libs?]
+	>=virtual/libffi-3.0.13-r1:=[${MULTILIB_USEDEP}]
+	>=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
+	>=virtual/libintl-0-r2[${MULTILIB_USEDEP}]
+	kernel_linux? ( >=sys-apps/util-linux-2.23[${MULTILIB_USEDEP}] )
+	selinux? ( >=sys-libs/libselinux-2.2.2-r5[${MULTILIB_USEDEP}] )
+	xattr? ( !elibc_glibc? ( >=sys-apps/attr-2.4.47-r1[${MULTILIB_USEDEP}] ) )
+	cros_host? ( virtual/libelf:0= )
+	fam? ( >=virtual/fam-0-r1[${MULTILIB_USEDEP}] )
+	sysprof? ( >=dev-util/sysprof-capture-3.38:4[${MULTILIB_USEDEP}] )
+"
+DEPEND="${RDEPEND}"
+# libxml2 used for optional tests that get automatically skipped
+BDEPEND="
+	doc? (
+		app-text/docbook-xsl-stylesheets
+		dev-libs/libxslt
+	)
+	>=sys-devel/gettext-0.19.8
+	gtk-doc? ( >=dev-util/gtk-doc-1.33
+		app-text/docbook-xml-dtd:4.2
+		app-text/docbook-xml-dtd:4.5 )
+	systemtap? ( >=dev-util/systemtap-1.3 )
+	${PYTHON_DEPS}
+	test? ( >=sys-apps/dbus-1.2.14 )
+	virtual/pkgconfig
+"
+# TODO: >=dev-util/gdbus-codegen-${PV} test dep once we modify gio/tests/meson.build to use external gdbus-codegen
+
+PDEPEND="
+	dbus? ( gnome-base/dconf )
+	mime? ( x11-misc/shared-mime-info )
+"
+# shared-mime-info needed for gio/xdgmime, bug #409481
+# dconf is needed to be able to save settings, bug #498436
+
+MULTILIB_CHOST_TOOLS=(
+	/usr/bin/gio-querymodules$(get_exeext)
+)
+
+PATCHES=(
+	"${FILESDIR}/glib-2.66.7-CHROMIUM-gdbus-system-bus-address.patch"
+)
+
+pkg_setup() {
+	if use kernel_linux ; then
+		CONFIG_CHECK="~INOTIFY_USER"
+		if use test ; then
+			CONFIG_CHECK="~IPV6"
+			WARNING_IPV6="Your kernel needs IPV6 support for running some tests, skipping them."
+		fi
+		linux-info_pkg_setup
+	fi
+	python-any-r1_pkg_setup
+}
+
+src_prepare() {
+	if use test; then
+		# TODO: Review the test exclusions, especially now with meson
+		# Disable tests requiring dev-util/desktop-file-utils when not installed, bug #286629, upstream bug #629163
+		if ! has_version dev-util/desktop-file-utils ; then
+			ewarn "Some tests will be skipped due dev-util/desktop-file-utils not being present on your system,"
+			ewarn "think on installing it to get these tests run."
+			sed -i -e "/appinfo\/associations/d" gio/tests/appinfo.c || die
+			sed -i -e "/g_test_add_func/d" gio/tests/desktop-app-info.c || die
+		fi
+
+		# gdesktopappinfo requires existing terminal (gnome-terminal or any
+		# other), falling back to xterm if one doesn't exist
+		#if ! has_version x11-terms/xterm && ! has_version x11-terms/gnome-terminal ; then
+		#	ewarn "Some tests will be skipped due to missing terminal program"
+		# These tests seem to sometimes fail even with a terminal; skip for now and reevulate with meson
+		# Also try https://gitlab.gnome.org/GNOME/glib/issues/1601 once ready for backport (or in a bump) and file new issue if still fails
+		sed -i -e "/appinfo\/launch/d" gio/tests/appinfo.c || die
+		# desktop-app-info/launch* might fail similarly
+		sed -i -e "/desktop-app-info\/launch-as-manager/d" gio/tests/desktop-app-info.c || die
+		#fi
+
+		# https://bugzilla.gnome.org/show_bug.cgi?id=722604
+		sed -i -e "/timer\/stop/d" glib/tests/timer.c || die
+		sed -i -e "/timer\/basic/d" glib/tests/timer.c || die
+
+		ewarn "Tests for search-utils have been skipped"
+		sed -i -e "/search-utils/d" glib/tests/meson.build || die
+
+		# Play nice with network-sandbox, but this approach would defeat the purpose of the test
+		#sed -i -e "s/localhost/127.0.0.1/g" gio/tests/gsocketclient-slow.c || die
+	else
+		# Don't build tests, also prevents extra deps, bug #512022
+		sed -i -e '/subdir.*tests/d' {.,gio,glib}/meson.build || die
+	fi
+
+	# Don't build fuzzing binaries - not used
+	sed -i -e '/subdir.*fuzzing/d' meson.build || die
+
+	# gdbus-codegen is a separate package
+	sed -i -e '/install_dir/d' gio/gdbus-2.0/codegen/meson.build || die
+
+	# Same kind of meson-0.50 issue with some installed-tests files; will likely be fixed upstream soon
+	sed -i -e '/install_dir/d' gio/tests/meson.build || die
+
+	cat > "${T}/glib-test-ld-wrapper" <<-EOF
+		#!/usr/bin/env sh
+		exec \${LD:-ld} "\$@"
+	EOF
+	chmod a+x "${T}/glib-test-ld-wrapper" || die
+	sed -i -e "s|'ld'|'${T}/glib-test-ld-wrapper'|g" gio/tests/meson.build || die
+
+	xdg_src_prepare
+	gnome2_environment_reset
+	# TODO: python_name sedding for correct python shebang? Might be relevant mainly for glib-utils only
+}
+
+multilib_src_configure() {
+	if use debug; then
+		append-cflags -DG_ENABLE_DEBUG
+	else
+		append-cflags -DG_DISABLE_CAST_CHECKS # https://gitlab.gnome.org/GNOME/glib/issues/1833
+	fi
+
+	# TODO: figure a way to pass appropriate values for all cross properties that glib uses (search for get_cross_property)
+	#if tc-is-cross-compiler ; then
+		# https://bugzilla.gnome.org/show_bug.cgi?id=756473
+		# TODO-meson: This should be in meson cross file as 'growing_stack' property; and more, look at get_cross_property
+		#case ${CHOST} in
+		#hppa*|metag*) export glib_cv_stack_grows=yes ;;
+		#*)            export glib_cv_stack_grows=no ;;
+		#esac
+	#fi
+
+	local emesonargs=(
+		-Ddefault_library=$(usex static-libs both shared)
+		$(meson_feature selinux)
+		$(meson_use xattr)
+		-Dlibmount=enabled # only used if host_system == 'linux'
+		-Dinternal_pcre=false
+		-Dman=$(multilib_native_usex doc true false)
+		$(meson_use systemtap dtrace)
+		$(meson_use systemtap)
+		-Dgtk_doc=$(multilib_native_usex gtk-doc true false)
+		$(meson_use fam)
+		-Dinstalled_tests=false
+		-Dnls=enabled
+		-Doss_fuzz=disabled
+	)
+	meson_src_configure
+}
+
+multilib_src_compile() {
+	meson_src_compile
+}
+
+multilib_src_test() {
+	export XDG_CONFIG_DIRS=/etc/xdg
+	export XDG_DATA_DIRS=/usr/local/share:/usr/share
+	export G_DBUS_COOKIE_SHA1_KEYRING_DIR="${T}/temp"
+	export LC_TIME=C # bug #411967
+	unset GSETTINGS_BACKEND # bug #596380
+	python_setup
+
+	# Related test is a bit nitpicking
+	mkdir "$G_DBUS_COOKIE_SHA1_KEYRING_DIR"
+	chmod 0700 "$G_DBUS_COOKIE_SHA1_KEYRING_DIR"
+
+	meson_src_test --timeout-multiplier 2 --no-suite flaky
+}
+
+multilib_src_install() {
+	meson_src_install
+	keepdir /usr/$(get_libdir)/gio/modules
+}
+
+multilib_src_install_all() {
+	if use doc ; then
+		einstalldocs
+	fi
+
+	# These are installed by dev-util/glib-utils
+	# TODO: With patching we might be able to get rid of the python-any deps and removals, and test depend on glib-utils instead; revisit now with meson
+	rm "${ED}/usr/bin/glib-genmarshal" || die
+	rm "${ED}/usr/bin/glib-mkenums" || die
+	rm "${ED}/usr/bin/gtester-report" || die
+	use doc && (
+		rm "${ED}/usr/share/man/man1/glib-genmarshal.1" || die
+		rm "${ED}/usr/share/man/man1/glib-mkenums.1" || die
+		rm "${ED}/usr/share/man/man1/gtester-report.1" || die
+		# gdbus-codegen manpage installed by dev-util/gdbus-codegen
+		rm "${ED}/usr/share/man/man1/gdbus-codegen.1" || die
+	)
+}
+
+pkg_preinst() {
+	xdg_pkg_preinst
+
+	# Make gschemas.compiled belong to glib alone
+	local cache="/usr/share/glib-2.0/schemas/gschemas.compiled"
+
+	if [[ -e ${EROOT}${cache} ]]; then
+		cp "${EROOT}"${cache} "${ED}"/${cache} || die
+	else
+		touch "${ED}"${cache} || die
+	fi
+
+	multilib_pkg_preinst() {
+		# Make giomodule.cache belong to glib alone
+		local cache="/usr/$(get_libdir)/gio/modules/giomodule.cache"
+
+		if [[ -e ${EROOT}${cache} ]]; then
+			cp "${EROOT}"${cache} "${ED}"${cache} || die
+		else
+			touch "${ED}"${cache} || die
+		fi
+	}
+
+	# Don't run the cache ownership when cross-compiling, as it would end up with an empty cache
+	# file due to inability to create it and GIO might not look at any of the modules there
+	if ! tc-is-cross-compiler ; then
+		multilib_foreach_abi multilib_pkg_preinst
+	fi
+}
+
+pkg_postinst() {
+	xdg_pkg_postinst
+	# glib installs no schemas itself, but we force update for fresh install in case
+	# something has dropped in a schemas file without direct glib dep; and for upgrades
+	# in case the compiled schema format could have changed
+	gnome2_schemas_update
+
+	multilib_pkg_postinst() {
+		gnome2_giomodule_cache_update \
+			|| die "Update GIO modules cache failed (for ${ABI})"
+	}
+	if ! tc-is-cross-compiler ; then
+		multilib_foreach_abi multilib_pkg_postinst
+	else
+		ewarn "Updating of GIO modules cache skipped due to cross-compilation."
+		ewarn "You might want to run gio-querymodules manually on the target for"
+		ewarn "your final image for performance reasons and re-run it when packages"
+		ewarn "installing GIO modules get upgraded or added to the image."
+	fi
+}
+
+pkg_postrm() {
+	xdg_pkg_postrm
+	gnome2_schemas_update
+
+	if [[ -z ${REPLACED_BY_VERSION} ]]; then
+		multilib_pkg_postrm() {
+			rm -f "${EROOT}"/usr/$(get_libdir)/gio/modules/giomodule.cache
+		}
+		multilib_foreach_abi multilib_pkg_postrm
+		rm -f "${EROOT}"/usr/share/glib-2.0/schemas/gschemas.compiled
+	fi
+}
diff --git a/dev-libs/libevent/libevent-2.1.8-r1.ebuild b/dev-libs/libevent/libevent-2.1.8-r2.ebuild
similarity index 100%
rename from dev-libs/libevent/libevent-2.1.8-r1.ebuild
rename to dev-libs/libevent/libevent-2.1.8-r2.ebuild
diff --git a/dev-libs/libevent/libevent-2.1.8.ebuild b/dev-libs/libevent/libevent-2.1.8.ebuild
index 1afa29c..441a2d1 100644
--- a/dev-libs/libevent/libevent-2.1.8.ebuild
+++ b/dev-libs/libevent/libevent-2.1.8.ebuild
@@ -45,6 +45,8 @@
 	# fix out-of-source builds
 	mkdir -p test || die
 
+	cros_optimize_package_for_speed
+
 	ECONF_SOURCE="${S}" \
 	econf \
 		--disable-samples \
diff --git a/dev-libs/libgrammar/Manifest b/dev-libs/libgrammar/Manifest
index 68e0197..158e679 100644
--- a/dev-libs/libgrammar/Manifest
+++ b/dev-libs/libgrammar/Manifest
@@ -1 +1 @@
-DIST libgrammar-amd64-0.0.3.tar.gz 9400568 BLAKE2B ffc5b5a0ac70d76477c04a8386190aed855e3965290e69f33f4b0ad4e10995d405eec35abe9392f3c2eb33911f9a61435351926687c8435017c6265df028cac2 SHA512 ffb10ecbdad00a540556dbc64dbe65572033947a867807b807a8233ff31877b9a8e4eb31c69bc20de85a41874280abada7c09d7e0ba941fa421fcd03fe591c75
+DIST libgrammar-0.0.4.tar.gz 19370324 BLAKE2B dfe1f9e0f056974cda1f6f946bd5b3d7ccadedf917606ca4f01245a8cb48b65b1ca6a6c7d773eb93dad132b6e4ecdc40924b071815a84150a576a3d40d998df5 SHA512 7f7d5a3aafd4f6d340a3e0dc0de190ba6924cab58b61ee0fc051adaf04e1e97d85f3c59e35714a99146799d321a6668789b9d5427e68f5eb4eb9f04e108be9db
diff --git a/dev-libs/libgrammar/libgrammar-0.0.3-r1.ebuild b/dev-libs/libgrammar/libgrammar-0.0.3-r1.ebuild
deleted file mode 120000
index f8d6d18..0000000
--- a/dev-libs/libgrammar/libgrammar-0.0.3-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-./libgrammar-0.0.3.ebuild
\ No newline at end of file
diff --git a/dev-libs/libgrammar/libgrammar-0.0.3.ebuild b/dev-libs/libgrammar/libgrammar-0.0.3.ebuild
deleted file mode 100644
index ef1e9f6..0000000
--- a/dev-libs/libgrammar/libgrammar-0.0.3.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-DESCRIPTION="Google grammar check library for Chrome OS"
-HOMEPAGE="https://www.chromium.org/chromium-os"
-
-LICENSE="BSD-Google"
-SLOT="0"
-
-SRC_URI="gs://chromeos-localmirror/distfiles/libgrammar-amd64-${PV}.tar.gz"
-KEYWORDS="*"
-
-IUSE="ondevice_grammar"
-
-S="${WORKDIR}"
-
-src_install() {
-	# Always install the header and proto files.
-	insinto /usr/include/chromeos/libgrammar/
-	doins grammar_interface.h
-	insinto /usr/include/chromeos/libgrammar/proto/
-	doins grammar_interface.proto
-
-	if use ondevice_grammar; then
-		insinto /opt/google/chrome/ml_models/grammar/
-		# Install the shared library.
-		insopts -m0755
-		newins "libgrammar-${ARCH}.so" "libgrammar.so"
-		insopts -m0644
-		# Install the model files.
-		doins translation_model.pb translation_model.pbtxt
-		doins translation_model_*.bipe
-		doins -r resources
-	fi
-}
diff --git a/dev-libs/libgrammar/libgrammar-0.0.4-r1.ebuild b/dev-libs/libgrammar/libgrammar-0.0.4-r1.ebuild
new file mode 120000
index 0000000..64642bd
--- /dev/null
+++ b/dev-libs/libgrammar/libgrammar-0.0.4-r1.ebuild
@@ -0,0 +1 @@
+./libgrammar-0.0.4.ebuild
\ No newline at end of file
diff --git a/dev-libs/libgrammar/libgrammar-0.0.4.ebuild b/dev-libs/libgrammar/libgrammar-0.0.4.ebuild
new file mode 100644
index 0000000..cc58fb6
--- /dev/null
+++ b/dev-libs/libgrammar/libgrammar-0.0.4.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Google grammar check library for Chrome OS"
+HOMEPAGE="https://www.chromium.org/chromium-os"
+
+LICENSE="BSD-Google"
+SLOT="0"
+
+SRC_URI="gs://chromeos-localmirror/distfiles/libgrammar-${PV}.tar.gz"
+KEYWORDS="*"
+
+IUSE="ondevice_grammar"
+
+S="${WORKDIR}"
+
+src_install() {
+	# Always install the header and proto files.
+	insinto /usr/include/chromeos/libgrammar/
+	doins grammar_interface.h
+	insinto /usr/include/chromeos/libgrammar/proto/
+	doins grammar_interface.proto
+
+	if use ondevice_grammar; then
+		insinto /opt/google/chrome/ml_models/grammar/
+		# Install the shared library.
+		insopts -m0755
+		newins "libgrammar-${ARCH}.so" "libgrammar.so"
+		insopts -m0644
+		# Install the model files.
+		doins translation_model.pb model.pb
+		doins decoder_init_0.tflite decoder_step_0.tflite encoder_0.tflite
+		doins wpm_model.model wpm_model.vocab
+	fi
+}
diff --git a/dev-libs/libjcat/Manifest b/dev-libs/libjcat/Manifest
index 12536fa..224fb7f 100644
--- a/dev-libs/libjcat/Manifest
+++ b/dev-libs/libjcat/Manifest
@@ -1 +1 @@
-DIST libjcat-0.1.0.tar.gz 60808 BLAKE2B 384e5a846fb7c49c8a6d6ace5f2b17715693d7e9ecfce020859c6fb5d96f9b9398606a2161a2c9f795c16c90e8b7a0e9d08970c1f81e4412783097f4ca599083 SHA512 2172fd621c86b3a2d507c3bb8fcc5f40a46656a5352f4963a014c76642bb2c34e316bb8608c121fa7d728d63dc2593ed28d3e3478e1ec5bcf32daeffc43627fd
+DIST libjcat-0.1.8.tar.gz 64828 BLAKE2B 86ebc635364cd78c05694baf3d5fe7d9bf6764629f4530f5ab8a9502887884b3d5369860806a252493a7a3208367b848e470730fb8c32d4c66cc8eb92df51990 SHA512 058bcf7ddddc7a3cedefcfcef9947c5f318fa806c8673b991be29f36e4fa0e09e51e972c0bebe0404fd92060715f8a497a0c0566d743bf6f3fa71bc3d94688c9
diff --git a/dev-libs/libjcat/OWNERS b/dev-libs/libjcat/OWNERS
new file mode 100644
index 0000000..399a06d
--- /dev/null
+++ b/dev-libs/libjcat/OWNERS
@@ -0,0 +1 @@
+include /sys-apps/fwupd/OWNERS
diff --git a/dev-libs/libjcat/files/libjcat-0.1.0-disable_installed_tests.patch b/dev-libs/libjcat/files/libjcat-0.1.0-disable_installed_tests.patch
deleted file mode 100644
index 823d713..0000000
--- a/dev-libs/libjcat/files/libjcat-0.1.0-disable_installed_tests.patch
+++ /dev/null
@@ -1,45 +0,0 @@
---- a/data/tests/colorhug/meson.build
-+++ b/data/tests/colorhug/meson.build
-@@ -1,9 +1,11 @@
-+if false
- install_data([
-     'firmware.bin',
-     'firmware.bin.asc',
-   ],
-   install_dir: installed_test_datadir,
- )
-+endif
- 
- if get_option('pkcs7')
-   # generate self-signed detached signature
-@@ -16,7 +18,7 @@
-                         '--load-certificate', pkcs7_certificate,
-                         '--infile', '@INPUT@',
-                         '--outfile', '@OUTPUT@'],
--    install: true,
-+    install: false,
-     install_dir: installed_test_datadir,
-   )
- endif
---- a/data/tests/meson.build
-+++ b/data/tests/meson.build
-@@ -2,7 +2,7 @@
-   input : 'libjcat.test.in',
-   output : 'libjcat.test',
-   configuration : conf,
--  install: true,
-+  install: false,
-   install_dir: installed_test_datadir,
- )
- 
---- a/libjcat/meson.build
-+++ b/libjcat/meson.build
-@@ -225,7 +225,7 @@
-       '-DTESTDATADIR_SRC="' + testdatadir_src + '"',
-       '-DTESTDATADIR_DST="' + testdatadir_dst + '"',
-     ],
--    install : true,
-+    install : false,
-     install_dir : installed_test_bindir
-   )
-   test('jcat-self-test', e)
diff --git a/dev-libs/libjcat/files/libjcat-0.1.0-one_engine_ok.patch b/dev-libs/libjcat/files/libjcat-0.1.0-one_engine_ok.patch
deleted file mode 100644
index e3fb1e5..0000000
--- a/dev-libs/libjcat/files/libjcat-0.1.0-one_engine_ok.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-jcat-context: don't fail verification if compiled without an engine
-
-libjcat can be compiled with both gpg and pkcs7, but if it's compiled
-without one then blobs signed with both can't be verified.
-
-https://github.com/hughsie/libjcat/pull/43
-https://github.com/hughsie/libjcat/pull/44
-
-diff --git a/libjcat/jcat-context.c b/libjcat/jcat-context.c
-index 095701e..b27d3a4 100644
---- a/libjcat/jcat-context.c
-+++ b/libjcat/jcat-context.c
-@@ -270,13 +270,16 @@ jcat_context_verify_item (JcatContext *self,
- 	/* all checksum engines must verify */
- 	for (guint i = 0; i < blobs->len; i++) {
- 		JcatBlob *blob = g_ptr_array_index (blobs, i);
-+		g_autoptr(GError) error_local = NULL;
- 		g_autoptr(JcatEngine) engine = NULL;
- 		g_autoptr(JcatResult) result = NULL;
-
- 		/* get engine */
--		engine = jcat_context_get_engine (self, jcat_blob_get_kind (blob), error);
--		if (engine == NULL)
--			return NULL;
-+		engine = jcat_context_get_engine (self, jcat_blob_get_kind (blob), &error_local);
-+		if (engine == NULL) {
-+			g_debug ("%s", error_local->message);
-+			continue;
-+		}
- 		if (jcat_engine_get_verify_kind (engine) != JCAT_ENGINE_VERIFY_KIND_CHECKSUM)
- 			continue;
- 		result = jcat_engine_self_verify (engine, data, jcat_blob_get_data (blob), flags, error);
-@@ -302,9 +305,11 @@ jcat_context_verify_item (JcatContext *self,
- 		g_autoptr(JcatEngine) engine = NULL;
- 		g_autoptr(JcatResult) result = NULL;
-
--		engine = jcat_context_get_engine (self, jcat_blob_get_kind (blob), error);
--		if (engine == NULL)
--			return NULL;
-+		engine = jcat_context_get_engine (self, jcat_blob_get_kind (blob), &error_local);
-+		if (engine == NULL) {
-+			g_debug ("%s", error_local->message);
-+			continue;
-+		}
- 		if (jcat_engine_get_verify_kind (engine) != JCAT_ENGINE_VERIFY_KIND_SIGNATURE)
- 			continue;
- 		result = jcat_engine_pubkey_verify (engine, data, jcat_blob_get_data (blob), flags, &error_local);
diff --git a/dev-libs/libjcat/files/libjcat-0.1.0-use_right_python.patch b/dev-libs/libjcat/files/libjcat-0.1.0-use_right_python.patch
deleted file mode 100644
index 9cbc63a..0000000
--- a/dev-libs/libjcat/files/libjcat-0.1.0-use_right_python.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-By default generate-version-script.py uses /usr/bin/python3, whatever
-version that may be - which causes problems if the default python3
-installation is one either built without XML support or not included
-in PYTHON_TARGETS of dev-python/setuptools. Make sure the script is
-invoked using the same interpreter as meson itself, as that one is
-already guaranteed to provide both 'xml' and 'pkg_resources'.
-
---- a/libjcat/meson.build
-+++ b/libjcat/meson.build
-@@ -129,6 +129,11 @@
-     install : true,
-   )
- 
-+  # Make sure generate-version-script.py is invoked by the same python as meson,
-+  # as that one must already have both XML support and setuptools.
-+  python = import('python')
-+  python_interpreter = python.find_installation()
-+
-   # Verify the map file is correct -- note we can't actually use the generated
-   # file for two reasons:
-   #
-@@ -141,6 +146,7 @@
-     input: jcat_gir[0],
-     output: 'jcat.map',
-     command: [
-+      python_interpreter,
-       join_paths(meson.source_root(), 'contrib', 'generate-version-script.py'),
-       'LIBJCAT',
-       '@INPUT@',
diff --git a/dev-libs/libjcat/files/libjcat-0.1.1-disable_installed_tests.patch b/dev-libs/libjcat/files/libjcat-0.1.1-disable_installed_tests.patch
new file mode 100644
index 0000000..5cb3e00
--- /dev/null
+++ b/dev-libs/libjcat/files/libjcat-0.1.1-disable_installed_tests.patch
@@ -0,0 +1,46 @@
+--- a/data/tests/colorhug/meson.build
++++ b/data/tests/colorhug/meson.build
+@@ -1,3 +1,4 @@
++if false
+ install_data([
+     'firmware.bin',
+     'firmware.bin.asc',
+@@ -5,6 +6,7 @@
+   ],
+   install_dir: join_paths(installed_test_bindir, 'colorhug'),
+ )
++endif
+ 
+ if get_option('pkcs7')
+   # generate self-signed detached signature
+@@ -17,7 +19,7 @@
+                         '--load-certificate', pkcs7_certificate,
+                         '--infile', '@INPUT@',
+                         '--outfile', '@OUTPUT@'],
+-    install: true,
++    install: false,
+     install_dir: join_paths(installed_test_bindir, 'colorhug'),
+   )
+ endif
+--- a/data/tests/meson.build
++++ b/data/tests/meson.build
+@@ -2,7 +2,7 @@
+   input : 'libjcat.test.in',
+   output : 'libjcat.test',
+   configuration : conf,
+-  install: true,
++  install: false,
+   install_dir: installed_test_datadir,
+ )
+ 
+--- a/libjcat/meson.build
++++ b/libjcat/meson.build
+@@ -235,7 +235,7 @@
+     dependencies : [
+       libjcat_deps,
+     ],
+-    install : true,
++    install : false,
+     install_dir : installed_test_bindir
+   )
+   test('jcat-self-test', e, env : testdatadirs)
diff --git a/dev-libs/libjcat/libjcat-0.1.0-r1.ebuild b/dev-libs/libjcat/libjcat-0.1.0-r1.ebuild
deleted file mode 120000
index ba3e96b..0000000
--- a/dev-libs/libjcat/libjcat-0.1.0-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-libjcat-0.1.0.ebuild
\ No newline at end of file
diff --git a/dev-libs/libjcat/libjcat-0.1.0.ebuild b/dev-libs/libjcat/libjcat-0.1.0.ebuild
deleted file mode 100644
index d4768bc..0000000
--- a/dev-libs/libjcat/libjcat-0.1.0.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit meson vala xdg-utils
-
-DESCRIPTION="Library and tool for reading and writing Jcat files "
-HOMEPAGE="https://github.com/hughsie/libjcat"
-SRC_URI="https://github.com/hughsie/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="LGPL-2.1+"
-SLOT="0"
-KEYWORDS="*"
-IUSE="gpg gtk-doc +introspection man pkcs7 test"
-
-RDEPEND="dev-libs/glib:2
-	dev-libs/json-glib:=
-	gpg? (
-		app-crypt/gpgme
-		dev-libs/libgpg-error
-	)
-	introspection? ( dev-libs/gobject-introspection:= )
-	pkcs7? ( net-libs/gnutls )"
-DEPEND="${RDEPEND}
-	dev-lang/vala:="
-BDEPEND="virtual/pkgconfig
-	gtk-doc? ( dev-util/gtk-doc )
-	man? ( sys-apps/help2man )
-	test? ( net-libs/gnutls[tools] )"
-
-RESTRICT="!test? ( test )"
-
-PATCHES=(
-	"${FILESDIR}"/${PN}-0.1.0-disable_installed_tests.patch
-	"${FILESDIR}"/${PN}-0.1.0-use_right_python.patch
-	"${FILESDIR}"/${PN}-0.1.0-one_engine_ok.patch
-)
-
-src_prepare() {
-	xdg_environment_reset
-# TODO: make vala optional
-	vala_src_prepare
-	default
-}
-
-src_configure() {
-	local emesonargs=(
-		$(meson_use gtk-doc gtkdoc)
-		$(meson_use gpg)
-		$(meson_use introspection)
-		$(meson_use man)
-		$(meson_use pkcs7)
-		$(meson_use test tests)
-	)
-	meson_src_configure
-}
diff --git a/dev-libs/libjcat/libjcat-0.1.8-r1.ebuild b/dev-libs/libjcat/libjcat-0.1.8-r1.ebuild
new file mode 120000
index 0000000..bbcb6c5
--- /dev/null
+++ b/dev-libs/libjcat/libjcat-0.1.8-r1.ebuild
@@ -0,0 +1 @@
+libjcat-0.1.8.ebuild
\ No newline at end of file
diff --git a/dev-libs/libjcat/libjcat-0.1.8.ebuild b/dev-libs/libjcat/libjcat-0.1.8.ebuild
new file mode 100644
index 0000000..0fde74f
--- /dev/null
+++ b/dev-libs/libjcat/libjcat-0.1.8.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python2_7 python3_{6..9} )
+PYTHON_REQ_USE="xml"
+
+inherit meson python-any-r1 vala xdg-utils
+
+DESCRIPTION="Library and tool for reading and writing Jcat files "
+HOMEPAGE="https://github.com/hughsie/libjcat"
+SRC_URI="https://github.com/hughsie/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+KEYWORDS="*"
+IUSE="gpg gtk-doc +introspection man pkcs7 test vala"
+
+RDEPEND="dev-libs/glib:2
+	dev-libs/json-glib:=
+	gpg? (
+		app-crypt/gpgme
+		dev-libs/libgpg-error
+	)
+	introspection? ( dev-libs/gobject-introspection:= )
+	pkcs7? ( net-libs/gnutls )
+	vala? ( dev-lang/vala:= )"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig
+	$(python_gen_any_dep '
+		dev-python/setuptools[${PYTHON_USEDEP}]
+	')
+	gtk-doc? ( dev-util/gtk-doc )
+	man? ( sys-apps/help2man )
+	test? ( net-libs/gnutls[tools] )"
+
+RESTRICT="!test? ( test )"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-0.1.1-disable_installed_tests.patch
+)
+
+python_check_deps() {
+	has_version -b "dev-python/setuptools[${PYTHON_USEDEP}]"
+}
+
+src_prepare() {
+	xdg_environment_reset
+	use vala && vala_src_prepare
+	default
+}
+
+src_configure() {
+	local emesonargs=(
+		$(meson_use gtk-doc gtkdoc)
+		$(meson_use gpg)
+		$(meson_use introspection)
+		$(meson_use man)
+		$(meson_use pkcs7)
+		$(meson_use test tests)
+		$(meson_use vala vapi)
+	)
+	meson_src_configure
+}
diff --git a/dev-libs/libjcat/metadata.xml b/dev-libs/libjcat/metadata.xml
index 8d98279..ab3326b 100644
--- a/dev-libs/libjcat/metadata.xml
+++ b/dev-libs/libjcat/metadata.xml
@@ -5,6 +5,10 @@
 		<email>marecki@gentoo.org</email>
 		<name>Marek Szuba</name>
 	</maintainer>
+	<maintainer type="person">
+		<email>polynomial-c@gentoo.org</email>
+		<name>Lars Wendler</name>
+	</maintainer>
 	<longdescription lang="en">
 		This library allows reading and writing gzip-compressed JSON catalog files,
 		which can be used to store GPG, PKCS-7 and SHA-256 checksums for each file.
@@ -14,7 +18,6 @@
 	</longdescription>
 	<use>
 		<flag name="gpg">Enable GPG verification support via <pkg>app-crypt/gpgme</pkg></flag>
-		<flag name="man">Generate and install man pages</flag>
 		<flag name="pkcs7">Enable PKCS7 verification support via <pkg>net-libs/gnutls</pkg></flag>
 	</use>
 	<upstream>
diff --git a/dev-libs/libsuggest/Manifest b/dev-libs/libsuggest/Manifest
new file mode 100644
index 0000000..0e21588
--- /dev/null
+++ b/dev-libs/libsuggest/Manifest
@@ -0,0 +1 @@
+DIST libsuggest-amd64-0.0.9.tar.gz 7688291 BLAKE2B 2f83159de0e990677a62a2b45a7df428273501ff4fc598e46f3db03f74afea04e5baf25b43a172470a73f4a36f7ebca15f0f0b264b02dec75664364bdcb13c87 SHA512 96dff916b644ec8a5d64872ba561e79ac16fc9ccd7b317b2d1606df2425e0d6eae4dc14224f6d887c7f57131de03eaa75861b76034dc21b26fbcaab802d7f574
diff --git a/dev-libs/libsuggest/OWNERS b/dev-libs/libsuggest/OWNERS
new file mode 100644
index 0000000..b15ddc1
--- /dev/null
+++ b/dev-libs/libsuggest/OWNERS
@@ -0,0 +1 @@
+curtismcmullan@chromium.org
diff --git a/dev-libs/libsuggest/libsuggest-0.0.9-r1.ebuild b/dev-libs/libsuggest/libsuggest-0.0.9-r1.ebuild
new file mode 120000
index 0000000..7865375
--- /dev/null
+++ b/dev-libs/libsuggest/libsuggest-0.0.9-r1.ebuild
@@ -0,0 +1 @@
+libsuggest-0.0.9.ebuild
\ No newline at end of file
diff --git a/dev-libs/libsuggest/libsuggest-0.0.9.ebuild b/dev-libs/libsuggest/libsuggest-0.0.9.ebuild
new file mode 100644
index 0000000..536549b
--- /dev/null
+++ b/dev-libs/libsuggest/libsuggest-0.0.9.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Google text suggestions library for Chrome OS"
+HOMEPAGE="https://www.chromium.org/chromium-os"
+
+LICENSE="BSD-Google"
+SLOT="0"
+
+SRC_URI="gs://chromeos-localmirror/distfiles/libsuggest-amd64-${PV}.tar.gz"
+KEYWORDS="*"
+
+IUSE="ondevice_text_suggestions"
+
+S="${WORKDIR}"
+
+src_install() {
+	# Always install the header and proto files.
+	insinto /usr/include/chromeos/libsuggest/
+	doins text_suggester_interface.h
+	insinto /usr/include/chromeos/libsuggest/proto/
+	doins text_suggester_interface.proto
+
+	if use ondevice_text_suggestions; then
+		insinto /opt/google/chrome/ml_models/suggest/
+		# Install shared lib
+		insopts -m0755
+		newins "libsuggest-amd64.so" "libsuggest.so"
+		insopts -m0644
+		# Install the model artifacts.
+		doins nwp.uint8.mmap.tflite
+		doins nwp.csym
+	fi
+}
diff --git a/dev-libs/libtextclassifier/libtextclassifier-0.0.1-r117.ebuild b/dev-libs/libtextclassifier/libtextclassifier-0.0.1-r117.ebuild
new file mode 100644
index 0000000..41814b9
--- /dev/null
+++ b/dev-libs/libtextclassifier/libtextclassifier-0.0.1-r117.ebuild
@@ -0,0 +1,188 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("f34cf3a06f7b17b7829185630d886a5d9d3f0e75" "01652c17e116baa8ebd7083e8cbc3dede513ac9e")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "4fa2be0611424952390eb570106ed5944e294b46")
+CROS_WORKON_LOCALNAME=("../platform2" "libtextclassifier")
+CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/libtextclassifier")
+CROS_WORKON_EGIT_BRANCH=("main" "master")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libtextclassifier")
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+
+PLATFORM_SUBDIR="libtextclassifier"
+
+inherit cros-workon platform
+
+DESCRIPTION="Library for classifying text"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/libtextclassifier/"
+
+MODEL_URI=(
+	"gs://chromeos-localmirror/distfiles/mlservice-model-language_identification-20190924.smfb"
+	"gs://chromeos-localmirror/distfiles/mlservice-model-text_classifier_en-v711_vocab-v1.fb"
+)
+
+SRC_URI="${MODEL_URI[*]}"
+
+LICENSE="Apache-2.0"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	chromeos-base/chrome-icu:=
+	dev-libs/flatbuffers:=
+	sci-libs/tensorflow:=
+	sys-libs/zlib:=
+"
+
+# Because we are moving model files from ml to here, to avoid collisions we
+# need to block the older version of ml.
+RDEPEND="
+	${RDEPEND}
+	!<chromeos-base/ml-0.0.1-r369
+"
+
+DEPEND="
+	${RDEPEND}
+	dev-libs/libutf:=
+	dev-libs/marisa-aosp:=
+"
+
+src_install() {
+	# Installs the model files.
+	insinto /opt/google/chrome/ml_models
+	local model_files=( "${MODEL_URI[@]##*/}" )
+	local distfile_array=( "${model_files[@]/#/${DISTDIR}/}" )
+	doins "${distfile_array[@]}"
+
+	# Installs the library.
+	dolib.a "${OUT}/libtextclassifier.a"
+
+	# Installs the header files to /usr/include/libtextclassifier/.
+	local header_files=(
+		"annotator/annotator.h"
+		"annotator/cached-features.h"
+		"annotator/contact/contact-engine-dummy.h"
+		"annotator/contact/contact-engine.h"
+		"annotator/datetime/datetime-grounder.h"
+		"annotator/datetime/extractor.h"
+		"annotator/datetime/grammar-parser.h"
+		"annotator/datetime/parser.h"
+		"annotator/datetime/regex-parser.h"
+		"annotator/duration/duration.h"
+		"annotator/entity-data_generated.h"
+		"annotator/experimental/experimental-dummy.h"
+		"annotator/experimental/experimental.h"
+		"annotator/experimental/experimental_generated.h"
+		"annotator/feature-processor.h"
+		"annotator/grammar/grammar-annotator.h"
+		"annotator/installed_app/installed-app-engine-dummy.h"
+		"annotator/installed_app/installed-app-engine.h"
+		"annotator/knowledge/knowledge-engine-dummy.h"
+		"annotator/knowledge/knowledge-engine-types.h"
+		"annotator/knowledge/knowledge-engine.h"
+		"annotator/model-executor.h"
+		"annotator/model_generated.h"
+		"annotator/number/number.h"
+		"annotator/person_name/person-name-engine-dummy.h"
+		"annotator/person_name/person-name-engine.h"
+		"annotator/person_name/person_name_model_generated.h"
+		"annotator/pod_ner/pod-ner.h"
+		"annotator/pod_ner/pod-ner-dummy.h"
+		"annotator/strip-unpaired-brackets.h"
+		"annotator/translate/translate.h"
+		"annotator/types.h"
+		"annotator/vocab/vocab-annotator.h"
+		"annotator/vocab/vocab-annotator-dummy.h"
+		"annotator/vocab/vocab-annotator-impl.h"
+		"annotator/vocab/vocab-level-table.h"
+		"annotator/zlib-utils.h"
+		"lang_id/common/embedding-network-params.h"
+		"lang_id/common/fel/task-context.h"
+		"lang_id/common/lite_base/attributes.h"
+		"lang_id/common/lite_base/casts.h"
+		"lang_id/common/lite_base/compact-logging-levels.h"
+		"lang_id/common/lite_base/compact-logging.h"
+		"lang_id/common/lite_base/float16.h"
+		"lang_id/common/lite_base/integral-types.h"
+		"lang_id/common/lite_base/logging.h"
+		"lang_id/common/lite_base/macros.h"
+		"lang_id/common/lite_strings/stringpiece.h"
+		"lang_id/lang-id-wrapper.h"
+		"lang_id/lang-id.h"
+		"lang_id/model-provider.h"
+		"utils/base/arena.h"
+		"utils/base/config.h"
+		"utils/base/integral_types.h"
+		"utils/base/logging.h"
+		"utils/base/logging_levels.h"
+		"utils/base/macros.h"
+		"utils/base/port.h"
+		"utils/base/status.h"
+		"utils/base/statusor.h"
+		"utils/calendar/calendar-common.h"
+		"utils/calendar/calendar-icu.h"
+		"utils/calendar/calendar.h"
+		"utils/codepoint-range.h"
+		"utils/codepoint-range_generated.h"
+		"utils/container/bit-vector_generated.h"
+		"utils/container/bit-vector.h"
+		"utils/container/sorted-strings-table.h"
+		"utils/container/string-set.h"
+		"utils/flatbuffers/flatbuffers.h"
+		"utils/flatbuffers/flatbuffers_generated.h"
+		"utils/flatbuffers/mutable.h"
+		"utils/flatbuffers/reflection.h"
+		"utils/grammar/analyzer.h"
+		"utils/grammar/evaluated-derivation.h"
+		"utils/grammar/parsing/chart.h"
+		"utils/grammar/parsing/derivation.h"
+		"utils/grammar/parsing/lexer.h"
+		"utils/grammar/parsing/matcher.h"
+		"utils/grammar/parsing/parser.h"
+		"utils/grammar/parsing/parse-tree.h"
+		"utils/grammar/semantics/composer.h"
+		"utils/grammar/semantics/eval-context.h"
+		"utils/grammar/semantics/evaluator.h"
+		"utils/grammar/semantics/expression_generated.h"
+		"utils/grammar/semantics/value.h"
+		"utils/grammar/text-context.h"
+		"utils/grammar/rules-utils.h"
+		"utils/grammar/rules_generated.h"
+		"utils/grammar/types.h"
+		"utils/hash/farmhash.h"
+		"utils/i18n/language-tag_generated.h"
+		"utils/i18n/locale.h"
+		"utils/i18n/locale-list.h"
+		"utils/intents/intent-config_generated.h"
+		"utils/memory/mmap.h"
+		"utils/normalization_generated.h"
+		"utils/optional.h"
+		"utils/resources_generated.h"
+		"utils/strings/split.h"
+		"utils/strings/stringpiece.h"
+		"utils/tensor-view.h"
+		"utils/tflite-model-executor.h"
+		"utils/token-feature-extractor.h"
+		"utils/tokenizer.h"
+		"utils/tokenizer_generated.h"
+		"utils/utf8/unicodetext.h"
+		"utils/utf8/unilib-common.h"
+		"utils/utf8/unilib-icu.h"
+		"utils/utf8/unilib.h"
+		"utils/variant.h"
+		"utils/zlib/buffer_generated.h"
+		"utils/zlib/tclib_zlib.h"
+	)
+	local f
+	for f in "${header_files[@]}"; do
+		insinto "/usr/include/libtextclassifier/${f%/*}"
+		if [[ "${f}" == *_generated.h ]]; then
+			doins "${OUT}/gen/libtextclassifier/${f}"
+		else
+			doins "${S}/${f}"
+		fi
+	done
+}
diff --git a/dev-libs/libtextclassifier/libtextclassifier-0.0.1-r89.ebuild b/dev-libs/libtextclassifier/libtextclassifier-0.0.1-r89.ebuild
deleted file mode 100644
index ea221e0..0000000
--- a/dev-libs/libtextclassifier/libtextclassifier-0.0.1-r89.ebuild
+++ /dev/null
@@ -1,181 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("b05e4a6b92b2cfe608b6cd8d5d37168680fc080e" "4c965f1c12b3c7a37f6126cef737a8fe33f4677c")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "a243a7ff07a53f79bc1acb91dc6890f6e13db061")
-CROS_WORKON_LOCALNAME=("../platform2" "libtextclassifier")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/libtextclassifier")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libtextclassifier")
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_SUBDIR="libtextclassifier"
-
-inherit cros-workon platform
-
-DESCRIPTION="Library for classifying text"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/libtextclassifier/"
-
-MODEL_URI=(
-	"gs://chromeos-localmirror/distfiles/mlservice-model-language_identification-20190924.smfb"
-	"gs://chromeos-localmirror/distfiles/mlservice-model-text_classifier_en-v711_vocab-v1.fb"
-)
-
-SRC_URI="${MODEL_URI[*]}"
-
-LICENSE="Apache-2.0"
-SLOT="0/${PVR}"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	chromeos-base/chrome-icu:=
-	dev-libs/flatbuffers:=
-	sci-libs/tensorflow:=
-	sys-libs/zlib:=
-"
-
-# Because we are moving model files from ml to here, to avoid collisions we
-# need to block the older version of ml.
-RDEPEND="
-	${RDEPEND}
-	!<chromeos-base/ml-0.0.1-r369
-"
-
-DEPEND="
-	${RDEPEND}
-	dev-libs/libutf:=
-	dev-libs/marisa-aosp:=
-"
-
-src_install() {
-	# Installs the model files.
-	insinto /opt/google/chrome/ml_models
-	local model_files=( "${MODEL_URI[@]##*/}" )
-	local distfile_array=( "${model_files[@]/#/${DISTDIR}/}" )
-	doins "${distfile_array[@]}"
-
-	# Installs the library.
-	dolib.a "${OUT}/libtextclassifier.a"
-
-	# Installs the header files to /usr/include/libtextclassifier/.
-	local header_files=(
-		"annotator/annotator.h"
-		"annotator/cached-features.h"
-		"annotator/contact/contact-engine-dummy.h"
-		"annotator/contact/contact-engine.h"
-		"annotator/datetime/extractor.h"
-		"annotator/datetime/parser.h"
-		"annotator/duration/duration.h"
-		"annotator/entity-data_generated.h"
-		"annotator/experimental/experimental-dummy.h"
-		"annotator/experimental/experimental.h"
-		"annotator/experimental/experimental_generated.h"
-		"annotator/feature-processor.h"
-		"annotator/grammar/dates/annotations/annotation-options.h"
-		"annotator/grammar/dates/annotations/annotation.h"
-		"annotator/grammar/dates/cfg-datetime-annotator.h"
-		"annotator/grammar/dates/dates_generated.h"
-		"annotator/grammar/dates/parser.h"
-		"annotator/grammar/dates/timezone-code_generated.h"
-		"annotator/grammar/dates/utils/annotation-keys.h"
-		"annotator/grammar/dates/utils/date-match.h"
-		"annotator/grammar/grammar-annotator.h"
-		"annotator/installed_app/installed-app-engine-dummy.h"
-		"annotator/installed_app/installed-app-engine.h"
-		"annotator/knowledge/knowledge-engine-dummy.h"
-		"annotator/knowledge/knowledge-engine-types.h"
-		"annotator/knowledge/knowledge-engine.h"
-		"annotator/model-executor.h"
-		"annotator/model_generated.h"
-		"annotator/number/number.h"
-		"annotator/person_name/person-name-engine-dummy.h"
-		"annotator/person_name/person-name-engine.h"
-		"annotator/person_name/person_name_model_generated.h"
-		"annotator/pod_ner/pod-ner.h"
-		"annotator/pod_ner/pod-ner-dummy.h"
-		"annotator/strip-unpaired-brackets.h"
-		"annotator/translate/translate.h"
-		"annotator/types.h"
-		"annotator/vocab/vocab-annotator.h"
-		"annotator/vocab/vocab-annotator-dummy.h"
-		"annotator/vocab/vocab-annotator-impl.h"
-		"annotator/vocab/vocab-level-table.h"
-		"annotator/zlib-utils.h"
-		"lang_id/common/embedding-network-params.h"
-		"lang_id/common/fel/task-context.h"
-		"lang_id/common/lite_base/attributes.h"
-		"lang_id/common/lite_base/casts.h"
-		"lang_id/common/lite_base/compact-logging-levels.h"
-		"lang_id/common/lite_base/compact-logging.h"
-		"lang_id/common/lite_base/float16.h"
-		"lang_id/common/lite_base/integral-types.h"
-		"lang_id/common/lite_base/logging.h"
-		"lang_id/common/lite_base/macros.h"
-		"lang_id/common/lite_strings/stringpiece.h"
-		"lang_id/lang-id-wrapper.h"
-		"lang_id/lang-id.h"
-		"lang_id/model-provider.h"
-		"utils/base/arena.h"
-		"utils/base/config.h"
-		"utils/base/integral_types.h"
-		"utils/base/logging.h"
-		"utils/base/logging_levels.h"
-		"utils/base/macros.h"
-		"utils/base/port.h"
-		"utils/base/status.h"
-		"utils/base/statusor.h"
-		"utils/calendar/calendar-common.h"
-		"utils/calendar/calendar-icu.h"
-		"utils/calendar/calendar.h"
-		"utils/codepoint-range.h"
-		"utils/codepoint-range_generated.h"
-		"utils/container/bit-vector_generated.h"
-		"utils/container/bit-vector.h"
-		"utils/container/sorted-strings-table.h"
-		"utils/container/string-set.h"
-		"utils/flatbuffers/flatbuffers.h"
-		"utils/flatbuffers/flatbuffers_generated.h"
-		"utils/flatbuffers/mutable.h"
-		"utils/flatbuffers/reflection.h"
-		"utils/grammar/callback-delegate.h"
-		"utils/grammar/lexer.h"
-		"utils/grammar/match.h"
-		"utils/grammar/matcher.h"
-		"utils/grammar/next/semantics/expression_generated.h"
-		"utils/grammar/rules-utils.h"
-		"utils/grammar/rules_generated.h"
-		"utils/grammar/types.h"
-		"utils/hash/farmhash.h"
-		"utils/i18n/language-tag_generated.h"
-		"utils/i18n/locale.h"
-		"utils/intents/intent-config_generated.h"
-		"utils/memory/mmap.h"
-		"utils/normalization_generated.h"
-		"utils/optional.h"
-		"utils/resources_generated.h"
-		"utils/strings/stringpiece.h"
-		"utils/tensor-view.h"
-		"utils/tflite-model-executor.h"
-		"utils/token-feature-extractor.h"
-		"utils/tokenizer.h"
-		"utils/tokenizer_generated.h"
-		"utils/utf8/unicodetext.h"
-		"utils/utf8/unilib-common.h"
-		"utils/utf8/unilib-icu.h"
-		"utils/utf8/unilib.h"
-		"utils/variant.h"
-		"utils/zlib/buffer_generated.h"
-		"utils/zlib/tclib_zlib.h"
-	)
-	local f
-	for f in "${header_files[@]}"; do
-		insinto "/usr/include/libtextclassifier/${f%/*}"
-		if [[ "${f}" == *_generated.h ]]; then
-			doins "${OUT}/gen/libtextclassifier/${f}"
-		else
-			doins "${S}/${f}"
-		fi
-	done
-}
diff --git a/dev-libs/libtextclassifier/libtextclassifier-9999.ebuild b/dev-libs/libtextclassifier/libtextclassifier-9999.ebuild
index 7c33367..7b64929 100644
--- a/dev-libs/libtextclassifier/libtextclassifier-9999.ebuild
+++ b/dev-libs/libtextclassifier/libtextclassifier-9999.ebuild
@@ -5,6 +5,7 @@
 
 CROS_WORKON_LOCALNAME=("../platform2" "libtextclassifier")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/third_party/libtextclassifier")
+CROS_WORKON_EGIT_BRANCH=("main" "master")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libtextclassifier")
 CROS_WORKON_SUBTREE=("common-mk .gn" "")
 
@@ -63,22 +64,17 @@
 		"annotator/cached-features.h"
 		"annotator/contact/contact-engine-dummy.h"
 		"annotator/contact/contact-engine.h"
+		"annotator/datetime/datetime-grounder.h"
 		"annotator/datetime/extractor.h"
+		"annotator/datetime/grammar-parser.h"
 		"annotator/datetime/parser.h"
+		"annotator/datetime/regex-parser.h"
 		"annotator/duration/duration.h"
 		"annotator/entity-data_generated.h"
 		"annotator/experimental/experimental-dummy.h"
 		"annotator/experimental/experimental.h"
 		"annotator/experimental/experimental_generated.h"
 		"annotator/feature-processor.h"
-		"annotator/grammar/dates/annotations/annotation-options.h"
-		"annotator/grammar/dates/annotations/annotation.h"
-		"annotator/grammar/dates/cfg-datetime-annotator.h"
-		"annotator/grammar/dates/dates_generated.h"
-		"annotator/grammar/dates/parser.h"
-		"annotator/grammar/dates/timezone-code_generated.h"
-		"annotator/grammar/dates/utils/annotation-keys.h"
-		"annotator/grammar/dates/utils/date-match.h"
 		"annotator/grammar/grammar-annotator.h"
 		"annotator/installed_app/installed-app-engine-dummy.h"
 		"annotator/installed_app/installed-app-engine.h"
@@ -137,22 +133,33 @@
 		"utils/flatbuffers/flatbuffers_generated.h"
 		"utils/flatbuffers/mutable.h"
 		"utils/flatbuffers/reflection.h"
-		"utils/grammar/callback-delegate.h"
-		"utils/grammar/lexer.h"
-		"utils/grammar/match.h"
-		"utils/grammar/matcher.h"
-		"utils/grammar/next/semantics/expression_generated.h"
+		"utils/grammar/analyzer.h"
+		"utils/grammar/evaluated-derivation.h"
+		"utils/grammar/parsing/chart.h"
+		"utils/grammar/parsing/derivation.h"
+		"utils/grammar/parsing/lexer.h"
+		"utils/grammar/parsing/matcher.h"
+		"utils/grammar/parsing/parser.h"
+		"utils/grammar/parsing/parse-tree.h"
+		"utils/grammar/semantics/composer.h"
+		"utils/grammar/semantics/eval-context.h"
+		"utils/grammar/semantics/evaluator.h"
+		"utils/grammar/semantics/expression_generated.h"
+		"utils/grammar/semantics/value.h"
+		"utils/grammar/text-context.h"
 		"utils/grammar/rules-utils.h"
 		"utils/grammar/rules_generated.h"
 		"utils/grammar/types.h"
 		"utils/hash/farmhash.h"
 		"utils/i18n/language-tag_generated.h"
 		"utils/i18n/locale.h"
+		"utils/i18n/locale-list.h"
 		"utils/intents/intent-config_generated.h"
 		"utils/memory/mmap.h"
 		"utils/normalization_generated.h"
 		"utils/optional.h"
 		"utils/resources_generated.h"
+		"utils/strings/split.h"
 		"utils/strings/stringpiece.h"
 		"utils/tensor-view.h"
 		"utils/tflite-model-executor.h"
diff --git a/dev-libs/libutf/libutf-0.0.1-r43.ebuild b/dev-libs/libutf/libutf-0.0.1-r43.ebuild
deleted file mode 100644
index e2a2308..0000000
--- a/dev-libs/libutf/libutf-0.0.1-r43.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("b05e4a6b92b2cfe608b6cd8d5d37168680fc080e" "c17bb435be940edf1aff81469215bb6a071f3c38")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "fc022abae9d52285526cb0dda697e2bea18696ca")
-CROS_WORKON_LOCALNAME=("../platform2" "../aosp/external/libutf")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/external/libutf")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libutf")
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_SUBDIR="libutf"
-
-inherit cros-workon platform
-
-DESCRIPTION="A UTF-8 library based on the AOSP version of libutf."
-HOMEPAGE="https://chromium.googlesource.com/aosp/platform/external/libutf/"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND=""
-DEPEND=""
-
-src_install() {
-	insinto "/usr/include/android/"
-	doins "${S}/utf.h"
-
-	dolib.a "${OUT}/libutf.a"
-}
diff --git a/dev-libs/libutf/libutf-0.0.1-r69.ebuild b/dev-libs/libutf/libutf-0.0.1-r69.ebuild
new file mode 100644
index 0000000..0c5e36c
--- /dev/null
+++ b/dev-libs/libutf/libutf-0.0.1-r69.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("f34cf3a06f7b17b7829185630d886a5d9d3f0e75" "c17bb435be940edf1aff81469215bb6a071f3c38")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "fc022abae9d52285526cb0dda697e2bea18696ca")
+CROS_WORKON_LOCALNAME=("../platform2" "../aosp/external/libutf")
+CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/external/libutf")
+CROS_WORKON_EGIT_BRANCH=("main" "master")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libutf")
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+
+PLATFORM_SUBDIR="libutf"
+
+inherit cros-workon platform
+
+DESCRIPTION="A UTF-8 library based on the AOSP version of libutf."
+HOMEPAGE="https://chromium.googlesource.com/aosp/platform/external/libutf/"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND=""
+DEPEND=""
+
+src_install() {
+	insinto "/usr/include/android/"
+	doins "${S}/utf.h"
+
+	dolib.a "${OUT}/libutf.a"
+}
diff --git a/dev-libs/libutf/libutf-9999.ebuild b/dev-libs/libutf/libutf-9999.ebuild
index 14d09b3..1d33917 100644
--- a/dev-libs/libutf/libutf-9999.ebuild
+++ b/dev-libs/libutf/libutf-9999.ebuild
@@ -5,6 +5,7 @@
 
 CROS_WORKON_LOCALNAME=("../platform2" "../aosp/external/libutf")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/external/libutf")
+CROS_WORKON_EGIT_BRANCH=("main" "master")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/libutf")
 CROS_WORKON_SUBTREE=("common-mk .gn" "")
 
diff --git a/dev-libs/libxmlb/Manifest b/dev-libs/libxmlb/Manifest
index c90d459..584d896 100644
--- a/dev-libs/libxmlb/Manifest
+++ b/dev-libs/libxmlb/Manifest
@@ -1 +1 @@
-DIST libxmlb-0.1.15.tar.gz 92923 BLAKE2B 97b6af812397dd279e7e3c038627fcf8228cbfa5c3af91ceeb5361e32d37d357eda6a193f627a5f4442426fb08abca1ff11684fe199d9d3a4add72ca4f3f5d08 SHA512 58268b3a690af36c0923afdee3ae58e88bf778eebbc6a439be1bc85ed985efdc20cd7006c976586f7be87310dc091d67dddd370f4bbec58379fc4e7349bfa3d8
+DIST libxmlb-0.3.2.tar.gz 113428 BLAKE2B 30f29ebd7522ee2338b4e78e15a544bdf20514e151e63d555be29fca63a3c8251c8d340f778ba1b6b6484c084ab145f9e9d1d4acf037b3f1abad05c5b0101082 SHA512 d4c1cbb8dfd2da9f4b9f436fbba5102f0391df7786a1c0bb1543841eaa5928ac72e6d8125e263be51c69627574bfea70d72624385086879cdbdb44721c0daa3d
diff --git a/dev-libs/libxmlb/OWNERS b/dev-libs/libxmlb/OWNERS
new file mode 100644
index 0000000..399a06d
--- /dev/null
+++ b/dev-libs/libxmlb/OWNERS
@@ -0,0 +1 @@
+include /sys-apps/fwupd/OWNERS
diff --git a/dev-libs/libxmlb/files/libxmlb-0.1.15-xb_builder_source_ctx_guess_content.patch b/dev-libs/libxmlb/files/libxmlb-0.1.15-xb_builder_source_ctx_guess_content.patch
deleted file mode 100644
index eb6618f..0000000
--- a/dev-libs/libxmlb/files/libxmlb-0.1.15-xb_builder_source_ctx_guess_content.patch
+++ /dev/null
@@ -1,217 +0,0 @@
-commit d051e01f8884619a1e79f34bda22e4dffc793d60
-Author: Richard Hughes <richard@hughsie.com>
-Date:   Tue Aug 18 10:02:37 2020 +0100
-
-    Do not assume g_content_type_guess() always returns valid results
-    
-    On Chrome OS the database of magic is either incomplete or missing and so
-    provide important fallbacks manually.
-
-diff --git a/src/meson.build b/src/meson.build
-index d32c761..0e0ca4e 100644
---- a/src/meson.build
-+++ b/src/meson.build
-@@ -45,6 +45,7 @@ libxmlb = library(
-     'xb-builder-node.c',
-     'xb-builder-source.c',
-     'xb-builder-source-ctx.c',
-+    'xb-common.c',
-     'xb-machine.c',
-     'xb-opcode.c',
-     'xb-node.c',
-@@ -115,6 +116,7 @@ if get_option('introspection')
-       'xb-builder-source.h',
-       'xb-builder-source-ctx.c',
-       'xb-builder-source-ctx.h',
-+      'xb-common.c',
-       'xb-machine.c',
-       'xb-machine.h',
-       'xb-node.c',
-@@ -195,6 +197,7 @@ if get_option('tests')
-       'xb-builder-node.c',
-       'xb-builder-source.c',
-       'xb-builder-source-ctx.c',
-+      'xb-common.c',
-       'xb-machine.c',
-       'xb-node.c',
-       'xb-node-query.c',
-diff --git a/src/xb-builder-source-ctx.c b/src/xb-builder-source-ctx.c
-index 7fef6f7..4ab4840 100644
---- a/src/xb-builder-source-ctx.c
-+++ b/src/xb-builder-source-ctx.c
-@@ -11,6 +11,7 @@
- #include <gio/gio.h>
- 
- #include "xb-builder-source-ctx-private.h"
-+#include "xb-common-private.h"
- 
- typedef struct {
- 	GInputStream		*istream;
-@@ -100,39 +101,22 @@ xb_builder_source_ctx_get_content_type (XbBuilderSourceCtx *self,
- 					GError **error)
- {
- 	XbBuilderSourceCtxPrivate *priv = GET_PRIVATE (self);
--	g_autofree gchar *content_type = NULL;
-+	gsize bufsz = 0;
-+	guchar buf[4096] = { 0x00 };
- 
- 	g_return_val_if_fail (XB_IS_BUILDER_SOURCE_CTX (self), NULL);
- 
- 	if (G_IS_SEEKABLE (priv->istream)) {
--		gsize bufsz = 0;
--		guchar buf[4096] = { 0x00 };
- 		if (!g_input_stream_read_all (priv->istream, buf, sizeof(buf),
- 					      &bufsz, cancellable, error))
- 			return NULL;
- 		if (!g_seekable_seek (G_SEEKABLE (priv->istream), 0, G_SEEK_SET,
- 				      cancellable, error))
- 			return NULL;
--		if (bufsz > 0)
--			content_type = g_content_type_guess (priv->filename, buf, bufsz, NULL);
- 	}
--
--	/* either unseekable, or empty */
--	if (content_type == NULL)
--		content_type = g_content_type_guess (priv->filename, NULL, 0, NULL);
--
--#ifdef _WIN32
--	/* map Windows "mime-type" to a content type */
--	if (g_strcmp0 (content_type, ".gz") == 0)
--		return g_strdup ("application/gzip");
--	if (g_strcmp0 (content_type, ".txt") == 0 ||
--	    g_strcmp0 (content_type, ".xml") == 0)
--		return g_strdup ("application/xml");
--	if (g_strcmp0 (content_type, ".desktop") == 0)
--		return g_strdup ("application/x-desktop");
--#endif
--
--	return g_steal_pointer (&content_type);
-+	if (bufsz > 0)
-+		return xb_content_type_guess (priv->filename, buf, bufsz);
-+	return xb_content_type_guess (priv->filename, NULL, 0);
- }
- 
- /* private */
-diff --git a/src/xb-common-private.h b/src/xb-common-private.h
-new file mode 100644
-index 0000000..1ecbbf5
---- /dev/null
-+++ b/src/xb-common-private.h
-@@ -0,0 +1,13 @@
-+/*
-+ * Copyright (C) 2020 Richard Hughes <richard@hughsie.com>
-+ *
-+ * SPDX-License-Identifier: LGPL-2.1+
-+ */
-+
-+#pragma once
-+
-+#include <glib.h>
-+
-+gchar		*xb_content_type_guess			(const gchar	*filename,
-+							 const guchar	*buf,
-+							 gsize		 bufsz);
-diff --git a/src/xb-common.c b/src/xb-common.c
-new file mode 100644
-index 0000000..e322c7f
---- /dev/null
-+++ b/src/xb-common.c
-@@ -0,0 +1,98 @@
-+/*
-+ * Copyright (C) 2020 Richard Hughes <richard@hughsie.com>
-+ *
-+ * SPDX-License-Identifier: LGPL-2.1+
-+ */
-+
-+#define G_LOG_DOMAIN				"XbCommon"
-+
-+#include "config.h"
-+
-+#include <string.h>
-+#include <gio/gio.h>
-+
-+#include "xb-common-private.h"
-+
-+static const gchar *
-+xb_content_type_guess_from_fn (const gchar *filename)
-+{
-+	gchar *ext; /* no ownership */
-+
-+	g_return_val_if_fail (filename != NULL, NULL);
-+
-+	/* get file extension with dot */
-+	ext = g_strrstr (filename, ".");
-+	if (ext == NULL)
-+		return NULL;
-+
-+	/* map Windows "mime-type" to a content type */
-+	if (g_strcmp0 (ext, ".gz") == 0)
-+		return "application/gzip";
-+	if (g_strcmp0 (ext, ".txt") == 0 ||
-+	    g_strcmp0 (ext, ".xml") == 0)
-+		return "application/xml";
-+	if (g_strcmp0 (ext, ".desktop") == 0)
-+		return "application/x-desktop";
-+	return NULL;
-+}
-+
-+static gboolean
-+xb_content_type_match (const guchar *buf, gsize bufsz, gsize offset,
-+		       const gchar *magic, gsize magic_size)
-+{
-+	/* document too small */
-+	if (offset + magic_size > bufsz)
-+		return FALSE;
-+	return memcmp (buf + offset, magic, magic_size) == 0;
-+}
-+
-+/**
-+ * xb_content_type_guess: (skip)
-+ * @filename: (nullable): filename
-+ * @buf: (nullable): file data buffer
-+ * @bufsz: size of file data buffer
-+ *
-+ * Guesses the content type based on example data. Either @filename or @buf may
-+ * be %NULL, in which case the guess will be based solely on the other argument.
-+ *
-+ * Returns: a string indicating a guessed content type
-+ **/
-+gchar *
-+xb_content_type_guess (const gchar *filename, const guchar *buf, gsize bufsz)
-+{
-+	g_autofree gchar *content_type = NULL;
-+
-+	/* check for bad results, e.g. from Chrome OS */
-+	content_type = g_content_type_guess (filename, buf, bufsz, NULL);
-+	if (g_strcmp0 (content_type, "application/octet-stream") == 0 ||
-+	    g_strcmp0 (content_type, "text/plain") == 0) {
-+
-+		/* magic */
-+		if (bufsz > 0) {
-+			if (xb_content_type_match (buf, bufsz, 0x0, "\x1f\x8b", 2))
-+				return g_strdup ("application/gzip");
-+			if (xb_content_type_match (buf, bufsz, 0x0, "<?xml", 5))
-+				return g_strdup ("application/xml");
-+			if (xb_content_type_match (buf, bufsz, 0x0, "[Desktop Entry]", 15))
-+				return g_strdup ("application/x-desktop");
-+		}
-+
-+		/* file extensions */
-+		if (filename != NULL) {
-+			const gchar *tmp = xb_content_type_guess_from_fn (filename);
-+			if (tmp != NULL)
-+				return g_strdup (tmp);
-+		}
-+	}
-+
-+#ifdef _WIN32
-+	/* fall back harder as there is no mime data at all */
-+	if (filename != NULL) {
-+		const gchar *tmp = xb_content_type_guess_from_fn (filename);
-+		if (tmp != NULL)
-+			return g_strdup (tmp);
-+	}
-+#endif
-+
-+	return g_steal_pointer (&content_type);
-+}
diff --git a/dev-libs/libxmlb/libxmlb-0.1.15-r2.ebuild b/dev-libs/libxmlb/libxmlb-0.1.15-r2.ebuild
deleted file mode 100644
index 0696f98..0000000
--- a/dev-libs/libxmlb/libxmlb-0.1.15-r2.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python2_7 python3_{6,7,8} )
-
-inherit meson python-any-r1
-
-DESCRIPTION="Library to help create and query binary XML blobs"
-HOMEPAGE="https://github.com/hughsie/libxmlb"
-SRC_URI="https://github.com/hughsie/libxmlb/archive/${PV}.tar.gz -> ${P}.tar.gz"
-LICENSE="LGPL-2.1+"
-SLOT="0"
-
-KEYWORDS="*"
-IUSE="doc introspection stemmer test"
-
-RESTRICT="!test? ( test )"
-
-RDEPEND="
-	dev-libs/glib:2
-	sys-apps/util-linux
-	stemmer? ( dev-libs/snowball-stemmer )
-"
-
-DEPEND="
-	${RDEPEND}
-	doc? ( dev-util/gtk-doc )
-	introspection? ( dev-libs/gobject-introspection )
-"
-
-BDEPEND="
-	>=dev-util/meson-0.47.0
-	virtual/pkgconfig
-	introspection? (
-		$(python_gen_any_dep 'dev-python/setuptools[${PYTHON_USEDEP}]')
-		${PYTHON_DEPS}
-	)
-"
-
-PATCHES=(
-	"${FILESDIR}/${P}-xb_builder_source_ctx_guess_content.patch"
-)
-
-python_check_deps() {
-	has_version -b "dev-python/setuptools[${PYTHON_USEDEP}]"
-}
-
-pkg_setup() {
-	use introspection && python-any-r1_pkg_setup
-}
-
-src_configure() {
-	local emesonargs=(
-		-Dgtkdoc="$(usex doc true false)"
-		-Dintrospection="$(usex introspection true false)"
-		-Dstemmer="$(usex stemmer true false)"
-		-Dtests="$(usex test true false)"
-	)
-	meson_src_configure
-}
diff --git a/dev-libs/libxmlb/libxmlb-0.3.2-r1.ebuild b/dev-libs/libxmlb/libxmlb-0.3.2-r1.ebuild
new file mode 120000
index 0000000..27d0990
--- /dev/null
+++ b/dev-libs/libxmlb/libxmlb-0.3.2-r1.ebuild
@@ -0,0 +1 @@
+libxmlb-0.3.2.ebuild
\ No newline at end of file
diff --git a/dev-libs/libxmlb/libxmlb-0.3.2.ebuild b/dev-libs/libxmlb/libxmlb-0.3.2.ebuild
new file mode 100644
index 0000000..42b2070
--- /dev/null
+++ b/dev-libs/libxmlb/libxmlb-0.3.2.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python2_7 python3_{6,7,8} )
+
+inherit meson python-any-r1
+
+DESCRIPTION="Library to help create and query binary XML blobs"
+HOMEPAGE="https://github.com/hughsie/libxmlb"
+SRC_URI="https://github.com/hughsie/libxmlb/archive/${PV}.tar.gz -> ${P}.tar.gz"
+LICENSE="LGPL-2.1+"
+SLOT="0/2" # libxmlb.so version
+
+KEYWORDS="*"
+IUSE="doc introspection stemmer test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+	dev-libs/glib:2
+	sys-apps/util-linux
+	stemmer? ( dev-libs/snowball-stemmer )
+"
+
+DEPEND="
+	${RDEPEND}
+	doc? ( dev-util/gtk-doc )
+	introspection? ( dev-libs/gobject-introspection )
+"
+
+BDEPEND="
+	${PYTHON_DEPS}
+	>=dev-util/meson-0.47.0
+	virtual/pkgconfig
+	introspection? (
+		$(python_gen_any_dep 'dev-python/setuptools[${PYTHON_USEDEP}]')
+	)
+"
+
+python_check_deps() {
+	has_version -b "dev-python/setuptools[${PYTHON_USEDEP}]"
+}
+
+pkg_setup() {
+	python-any-r1_pkg_setup
+}
+
+src_configure() {
+	local emesonargs=(
+		-Dgtkdoc="$(usex doc true false)"
+		-Dintrospection="$(usex introspection true false)"
+		-Dstemmer="$(usex stemmer true false)"
+		-Dtests="$(usex test true false)"
+	)
+	meson_src_configure
+}
diff --git a/dev-libs/marisa-aosp/marisa-aosp-0.0.1-r22.ebuild b/dev-libs/marisa-aosp/marisa-aosp-0.0.1-r22.ebuild
deleted file mode 100644
index d5b7ed7..0000000
--- a/dev-libs/marisa-aosp/marisa-aosp-0.0.1-r22.ebuild
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-DESCRIPTION="MARISA: Matching Algorithm with Recursively Implemented StorAge (AOSP fork)"
-HOMEPAGE="https://android.googlesource.com/platform/external/marisa-trie/"
-
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_DESTDIR="${S}/platform2"
-CROS_WORKON_SUBTREE="common-mk .gn"
-
-PLATFORM_SUBDIR="marisa-trie"
-
-EGIT_REPO_URI="https://android.googlesource.com/platform/external/marisa-trie/"
-EGIT_CHECKOUT_DIR="${S}/platform2/marisa-trie/"
-
-if [[ ${PV} != *9999* ]]; then
-	EGIT_COMMIT="54417d28a5273a8d759b28882a0c96335e192756"
-fi
-
-inherit cros-workon git-r3 platform
-
-LICENSE="BSD-2 LGPL-2.1 BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-IUSE=""
-REQUIRED_USE=""
-
-# To warn future developers that this is the AOSP fork of marisa.
-POSTFIX="-aosp"
-
-src_unpack() {
-	platform_src_unpack
-	git-r3_src_unpack
-}
-
-src_prepare() {
-	default
-	cp "${FILESDIR}/BUILD.gn" "${S}"
-}
-
-src_install() {
-	mv "${OUT}/libmarisa.a" "${OUT}/libmarisa${POSTFIX}.a"
-	dolib.a "${OUT}/libmarisa${POSTFIX}.a"
-
-	# Install the header files to /usr/include/marisa-trie/.
-	insinto "/usr/include/marisa${POSTFIX}"
-	doins "${S}/include/marisa.h"
-	insinto "/usr/include/marisa${POSTFIX}/marisa"
-	local f
-	for f in \
-		"include/marisa/agent.h" \
-		"include/marisa/base.h" \
-		"include/marisa/exception.h" \
-		"include/marisa/iostream.h" \
-		"include/marisa/key.h" \
-		"include/marisa/keyset.h" \
-		"include/marisa/query.h" \
-		"include/marisa/scoped-array.h" \
-		"include/marisa/scoped-ptr.h" \
-		"include/marisa/stdio.h" \
-		"include/marisa/trie.h"; do
-		doins "${S}/${f}"
-	done
-}
diff --git a/dev-libs/marisa-aosp/marisa-aosp-0.0.1-r47.ebuild b/dev-libs/marisa-aosp/marisa-aosp-0.0.1-r47.ebuild
new file mode 100644
index 0000000..14ccc56
--- /dev/null
+++ b/dev-libs/marisa-aosp/marisa-aosp-0.0.1-r47.ebuild
@@ -0,0 +1,70 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+DESCRIPTION="MARISA: Matching Algorithm with Recursively Implemented StorAge (AOSP fork)"
+HOMEPAGE="https://android.googlesource.com/platform/external/marisa-trie/"
+
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_DESTDIR="${S}/platform2"
+CROS_WORKON_SUBTREE="common-mk .gn"
+
+PLATFORM_SUBDIR="marisa-trie"
+
+EGIT_REPO_URI="https://android.googlesource.com/platform/external/marisa-trie/"
+EGIT_CHECKOUT_DIR="${S}/platform2/marisa-trie/"
+
+if [[ ${PV} != *9999* ]]; then
+	EGIT_COMMIT="54417d28a5273a8d759b28882a0c96335e192756"
+fi
+
+inherit cros-workon git-r3 platform
+
+LICENSE="BSD-2 LGPL-2.1 BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+IUSE=""
+REQUIRED_USE=""
+
+# To warn future developers that this is the AOSP fork of marisa.
+POSTFIX="-aosp"
+
+src_unpack() {
+	platform_src_unpack
+	git-r3_src_unpack
+}
+
+src_prepare() {
+	default
+	cp "${FILESDIR}/BUILD.gn" "${S}"
+}
+
+src_install() {
+	mv "${OUT}/libmarisa.a" "${OUT}/libmarisa${POSTFIX}.a"
+	dolib.a "${OUT}/libmarisa${POSTFIX}.a"
+
+	# Install the header files to /usr/include/marisa-trie/.
+	insinto "/usr/include/marisa${POSTFIX}"
+	doins "${S}/include/marisa.h"
+	insinto "/usr/include/marisa${POSTFIX}/marisa"
+	local f
+	for f in \
+		"include/marisa/agent.h" \
+		"include/marisa/base.h" \
+		"include/marisa/exception.h" \
+		"include/marisa/iostream.h" \
+		"include/marisa/key.h" \
+		"include/marisa/keyset.h" \
+		"include/marisa/query.h" \
+		"include/marisa/scoped-array.h" \
+		"include/marisa/scoped-ptr.h" \
+		"include/marisa/stdio.h" \
+		"include/marisa/trie.h"; do
+		doins "${S}/${f}"
+	done
+}
diff --git a/dev-libs/modp_b64/modp_b64-0.0.1-r103.ebuild b/dev-libs/modp_b64/modp_b64-0.0.1-r103.ebuild
deleted file mode 100644
index c313edb0..0000000
--- a/dev-libs/modp_b64/modp_b64-0.0.1-r103.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_WORKON_COMMIT=("b05e4a6b92b2cfe608b6cd8d5d37168680fc080e" "467734f4870d3ab23968f5ebdd461f6112e4103b")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "0d9f5ec1543458ecbe0d97bbabbdd59b79d56c5a")
-inherit cros-constants
-
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/modp_b64")
-CROS_WORKON_LOCALNAME=("../platform2" "../third_party/modp_b64")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/external/modp_b64")
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_SUBDIR="modp_b64"
-
-WANT_LIBCHROME=no
-
-inherit cros-fuzzer cros-sanitizers cros-workon platform
-
-DESCRIPTION="Base64 encoder/decoder library."
-HOMEPAGE="https://github.com/client9/stringencoders"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="*"
-IUSE="fuzzer"
-
-src_install() {
-	dolib.a "${OUT}"/libmodp_b64.a
-
-	insinto /usr/include
-	doins -r modp_b64
-
-	fuzzer_install "${S}/OWNERS.fuzzer" "${OUT}"/modp_b64_decode_fuzzer
-	fuzzer_install "${S}/OWNERS.fuzzer" "${OUT}"/modp_b64_encode_fuzzer
-}
diff --git a/dev-libs/modp_b64/modp_b64-0.0.1-r129.ebuild b/dev-libs/modp_b64/modp_b64-0.0.1-r129.ebuild
new file mode 100644
index 0000000..6028fb18
--- /dev/null
+++ b/dev-libs/modp_b64/modp_b64-0.0.1-r129.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+CROS_WORKON_COMMIT=("f34cf3a06f7b17b7829185630d886a5d9d3f0e75" "269b6fb8401617b85e2dff7ae8a7b0f97613e2cd")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "9473949bc842cc166ac244567638b94150a97865")
+inherit cros-constants
+
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/modp_b64")
+CROS_WORKON_LOCALNAME=("../platform2" "../third_party/modp_b64")
+CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/external/modp_b64")
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+
+PLATFORM_SUBDIR="modp_b64"
+
+WANT_LIBCHROME=no
+
+inherit cros-fuzzer cros-sanitizers cros-workon platform
+
+DESCRIPTION="Base64 encoder/decoder library."
+HOMEPAGE="https://github.com/client9/stringencoders"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="*"
+IUSE="fuzzer"
+
+src_install() {
+	dolib.a "${OUT}"/libmodp_b64.a
+
+	insinto /usr/include
+	doins -r modp_b64
+
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}/obj/modp_b64/libmodp_b64.pc"
+
+	fuzzer_install "${S}/OWNERS.fuzzer" "${OUT}"/modp_b64_decode_fuzzer
+	fuzzer_install "${S}/OWNERS.fuzzer" "${OUT}"/modp_b64_encode_fuzzer
+}
diff --git a/dev-libs/modp_b64/modp_b64-9999.ebuild b/dev-libs/modp_b64/modp_b64-9999.ebuild
index 1aed1c8..73e17fce 100644
--- a/dev-libs/modp_b64/modp_b64-9999.ebuild
+++ b/dev-libs/modp_b64/modp_b64-9999.ebuild
@@ -30,6 +30,9 @@
 	insinto /usr/include
 	doins -r modp_b64
 
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins "${OUT}/obj/modp_b64/libmodp_b64.pc"
+
 	fuzzer_install "${S}/OWNERS.fuzzer" "${OUT}"/modp_b64_decode_fuzzer
 	fuzzer_install "${S}/OWNERS.fuzzer" "${OUT}"/modp_b64_encode_fuzzer
 }
diff --git a/dev-libs/nss/files/nss-3.44-prefer-writable-tokens-for-trust.patch b/dev-libs/nss/files/nss-3.44-prefer-writable-tokens-for-trust.patch
new file mode 100644
index 0000000..f291903
--- /dev/null
+++ b/dev-libs/nss/files/nss-3.44-prefer-writable-tokens-for-trust.patch
@@ -0,0 +1,87 @@
+This patch makes CERT_SetCertTrust prefer writable tokens that already contain
+the certificate when choosing where to store trust settings.
+See crbug.com/1132030 .
+
+Upstream bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1680453
+Upstream review: https://phabricator.services.mozilla.com/D99840
+
+--- nss/lib/pki/pki3hack.c
++++ nss/lib/pki/pki3hack.c
+@@ -1048,9 +1048,9 @@ static NSSToken *
+ stan_GetTrustToken(
+     NSSCertificate *c)
+ {
+-    NSSToken *ttok = NULL;
+-    NSSToken *rtok = NULL;
+-    NSSToken *tok = NULL;
++    NSSToken *token_with_trust_object = NULL;
++    NSSToken *ro_token_without_trust_object = NULL;
++    NSSToken *rw_token_without_trust_object = NULL;
+     nssCryptokiObject **ip;
+     nssCryptokiObject **instances = nssPKIObject_GetInstances(&c->object);
+     if (!instances) {
+@@ -1058,30 +1058,48 @@ stan_GetTrustToken(
+     }
+     for (ip = instances; *ip; ip++) {
+         nssCryptokiObject *instance = *ip;
+-        nssCryptokiObject *to =
++        nssCryptokiObject *trust_object =
+             nssToken_FindTrustForCertificate(instance->token, NULL,
+                                              &c->encoding, &c->issuer, &c->serial,
+                                              nssTokenSearchType_TokenOnly);
+-        NSSToken *ctok = instance->token;
+-        PRBool ro = PK11_IsReadOnly(ctok->pk11slot);
+-
+-        if (to) {
+-            nssCryptokiObject_Destroy(to);
+-            ttok = ctok;
+-            if (!ro) {
++        NSSToken *current_token = instance->token;
++        PRBool is_read_only = PK11_IsReadOnly(current_token->pk11slot);
++
++        if (trust_object) {
++            nssCryptokiObject_Destroy(trust_object);
++            token_with_trust_object = current_token;
++            if (!is_read_only) {
++                // No point iterating further, as the read-write token that
++                // already has a trust object will be preferred anyway.
+                 break;
+             }
+-        } else {
+-            if (!rtok && ro) {
+-                rtok = ctok;
+-            }
+-            if (!tok && !ro) {
+-                tok = ctok;
+-            }
++            continue;
++        }
++        if (!rw_token_without_trust_object && !is_read_only) {
++          rw_token_without_trust_object = current_token;
++          continue;
++        }
++        if (!ro_token_without_trust_object && is_read_only) {
++          ro_token_without_trust_object = current_token;
+         }
+     }
+     nssCryptokiObjectArray_Destroy(instances);
+-    return ttok ? ttok : (tok ? tok : rtok);
++
++    // Precedence rules:
++    // Note that all tokens considered here have the certificate on them.
++    // read-write token with trust object > any read-write token >
++    //    read-only token with trust object > any read-only token
++    if (token_with_trust_object &&
++        !PK11_IsReadOnly(token_with_trust_object->pk11slot)) {
++      return token_with_trust_object;
++    }
++    if (rw_token_without_trust_object ) {
++      return rw_token_without_trust_object;
++    }
++    if (token_with_trust_object) {
++      return token_with_trust_object;
++    }
++    return ro_token_without_trust_object;
+ }
+ 
+ NSS_EXTERN PRStatus
diff --git a/dev-libs/nss/nss-3.44-r2.ebuild b/dev-libs/nss/nss-3.44-r2.ebuild
index 52ab06f..27489d5 100644
--- a/dev-libs/nss/nss-3.44-r2.ebuild
+++ b/dev-libs/nss/nss-3.44-r2.ebuild
@@ -43,6 +43,7 @@
 	"${FILESDIR}/${PN}-3.32-gentoo-fixups.patch"
 	"${FILESDIR}/${PN}-3.21-gentoo-fixup-warnings.patch"
 	"${FILESDIR}/${PN}-3.23-hppa-byte_order.patch"
+	"${FILESDIR}/${PN}-3.44-prefer-writable-tokens-for-trust.patch"
 )
 
 src_unpack() {
diff --git a/dev-libs/nss/nss-3.44-r6.ebuild b/dev-libs/nss/nss-3.44-r7.ebuild
similarity index 100%
rename from dev-libs/nss/nss-3.44-r6.ebuild
rename to dev-libs/nss/nss-3.44-r7.ebuild
diff --git a/dev-libs/opencsd/Manifest b/dev-libs/opencsd/Manifest
index 9bcb5fa..cfb2f9a 100644
--- a/dev-libs/opencsd/Manifest
+++ b/dev-libs/opencsd/Manifest
@@ -1 +1,2 @@
 DIST opencsd-0.14.3.tar.xz 6729396 BLAKE2B aff14b1a43ca5eed3eb4e3fa1d3021053107992f513902bf0584d46c811c624b32f8bcd1e9bdc20d729f623551e7d669eccd3e81be9704d0cb321ef19bebaa3e SHA512 2e2415ba24463146308ae124e6d3a28cb0b00e54789f5e5b50d1b7ff7533c0da88859a96f0521fdb0324cacad3980d795d14bf3ed5d7d4b26edf4c4d68d09612
+DIST opencsd-1.0.0.tar.xz 7521688 BLAKE2B 67e2eb6fcc2232a31bbdca8d0ef8c35d1c11ac14e7afc003ec63840f9868df49de9ec445840990d9458933cf0ee27a933664a48bafafb7f9701aea109f0b7cf2 SHA512 a24f8a7c62b65e50f60e56d12317cf0091fa05a0e950a3283de38b27b7bf7e2a0775812e14ffc1a1a302a1a477290b2a3d481ac82af0b9e9af6e7cbba329a073
diff --git a/dev-libs/opencsd/opencsd-0.14.3-r1.ebuild b/dev-libs/opencsd/opencsd-0.14.3-r1.ebuild
deleted file mode 100644
index 12174b3..0000000
--- a/dev-libs/opencsd/opencsd-0.14.3-r1.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit toolchain-funcs
-
-DESCRIPTION="Open source CoreSight trace decode library"
-HOMEPAGE="https://github.com/Linaro/OpenCSD"
-SRC_URI="https://github.com/linaro/${PN}/archive/${P}.tar.xz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="*"
-IUSE="debug"
-
-RDEPEND=""
-
-src_compile() {
-	cros_enable_cxx_exceptions
-	use debug && DEBUG_OPT=1
-
-	# Opencsd build is flaky at times, use "-j1" to avoid any races.
-	emake -j1 -C decoder/build/linux/ \
-		LINUX64=1 DEBUG=${DEBUG_OPT} \
-		MASTER_CC="$(tc-getCC)" \
-		MASTER_CXX="$(tc-getCXX)" \
-		MASTER_LIB="$(tc-getAR)" \
-		MASTER_LINKER="$(tc-getCXX)"
-}
-
-src_install() {
-	emake -C decoder/build/linux/ \
-		PREFIX="${ED}"/usr \
-		LIB_PATH="$(get_libdir)" \
-		install
-}
diff --git a/dev-libs/opencsd/opencsd-1.0.0-r2.ebuild b/dev-libs/opencsd/opencsd-1.0.0-r2.ebuild
new file mode 100644
index 0000000..03c3218
--- /dev/null
+++ b/dev-libs/opencsd/opencsd-1.0.0-r2.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="Open source CoreSight trace decode library"
+HOMEPAGE="https://github.com/Linaro/OpenCSD"
+SRC_URI="https://github.com/linaro/${PN}/archive/${P}.tar.xz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="*"
+IUSE="debug"
+
+RDEPEND=""
+
+src_compile() {
+	cros_enable_cxx_exceptions
+	use debug && DEBUG_OPT=1
+
+	# Opencsd build is flaky at times, use "-j1" to avoid any races.
+	emake -j1 -C decoder/build/linux/ \
+		LINUX64=1 DEBUG=${DEBUG_OPT} \
+		MASTER_CC="$(tc-getCC)" \
+		MASTER_CXX="$(tc-getCXX)" \
+		MASTER_LIB="$(tc-getAR)" \
+		MASTER_LINKER="$(tc-getCXX)"
+}
+
+src_install() {
+	dolib.a decoder/lib/builddir/libopencsd.a decoder/lib/builddir/libopencsd_c_api.a
+	doheader -r decoder/include/opencsd
+}
diff --git a/dev-python/btsocket/btsocket-1.0-r20.ebuild b/dev-python/btsocket/btsocket-1.0-r20.ebuild
deleted file mode 100644
index 81d40d9..0000000
--- a/dev-python/btsocket/btsocket-1.0-r20.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-CROS_WORKON_COMMIT="e1cb3b9c86ec37b742be1b59ee973e0eea35d2e3"
-CROS_WORKON_TREE="00b91e25e3bf7c71b460b3870e960124ec6b53ec"
-CROS_WORKON_PROJECT="chromiumos/platform/btsocket"
-CROS_WORKON_LOCALNAME="../platform/btsocket"
-
-PYTHON_COMPAT=( python2_7 python{3_6,3_7} )
-
-inherit cros-sanitizers cros-workon distutils-r1
-
-DESCRIPTION="Bluetooth Socket support module"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/btsocket/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan"
-
-DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
-RDEPEND=""
-
-src_configure() {
-	sanitizers-setup-env
-	default
-}
diff --git a/dev-python/btsocket/btsocket-1.0-r21.ebuild b/dev-python/btsocket/btsocket-1.0-r21.ebuild
new file mode 100644
index 0000000..37c9ab4
--- /dev/null
+++ b/dev-python/btsocket/btsocket-1.0-r21.ebuild
@@ -0,0 +1,28 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+CROS_WORKON_COMMIT="d68b83ccc4a645edeeeeaba39e8fe4e079a01aa2"
+CROS_WORKON_TREE="5cc9a8b99ac89b6694f77a27a11613fe1a430581"
+CROS_WORKON_PROJECT="chromiumos/platform/btsocket"
+CROS_WORKON_LOCALNAME="../platform/btsocket"
+
+PYTHON_COMPAT=( python2_7 python{3_6,3_7} )
+
+inherit cros-sanitizers cros-workon distutils-r1
+
+DESCRIPTION="Bluetooth Socket support module"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/btsocket/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="-asan"
+
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+RDEPEND=""
+
+src_configure() {
+	sanitizers-setup-env
+	default
+}
diff --git a/dev-python/grpcio/files/grpc-1.22.1-glibc-2.30-compat.patch b/dev-python/grpcio/files/grpc-1.22.1-glibc-2.30-compat.patch
new file mode 100644
index 0000000..90bd911
--- /dev/null
+++ b/dev-python/grpcio/files/grpc-1.22.1-glibc-2.30-compat.patch
@@ -0,0 +1,78 @@
+From d1d017390b799c59d6fdf7b8afa6136d218bdd61 Mon Sep 17 00:00:00 2001
+From: Benjamin Peterson <benjamin@dropbox.com>
+Date: Fri, 3 May 2019 08:11:00 -0700
+Subject: [PATCH] Rename gettid() functions.
+
+glibc 2.30 will declare its own gettid; see https://sourceware.org/git/?p=glibc.git;a=commit;h=1d0fc213824eaa2a8f8c4385daaa698ee8fb7c92. Rename the grpc versions to avoid naming conflicts.
+---
+ src/core/lib/gpr/log_linux.cc          | 4 ++--
+ src/core/lib/gpr/log_posix.cc          | 4 ++--
+ src/core/lib/iomgr/ev_epollex_linux.cc | 4 ++--
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/core/lib/gpr/log_linux.cc b/src/core/lib/gpr/log_linux.cc
+index 561276f0c20..8b597b4cf2f 100644
+--- a/src/core/lib/gpr/log_linux.cc
++++ b/src/core/lib/gpr/log_linux.cc
+@@ -40,7 +40,7 @@
+ #include <time.h>
+ #include <unistd.h>
+ 
+-static long gettid(void) { return syscall(__NR_gettid); }
++static long sys_gettid(void) { return syscall(__NR_gettid); }
+ 
+ void gpr_log(const char* file, int line, gpr_log_severity severity,
+              const char* format, ...) {
+@@ -70,7 +70,7 @@ void gpr_default_log(gpr_log_func_args* args) {
+   gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME);
+   struct tm tm;
+   static __thread long tid = 0;
+-  if (tid == 0) tid = gettid();
++  if (tid == 0) tid = sys_gettid();
+ 
+   timer = static_cast<time_t>(now.tv_sec);
+   final_slash = strrchr(args->file, '/');
+diff --git a/src/core/lib/gpr/log_posix.cc b/src/core/lib/gpr/log_posix.cc
+index b6edc14ab6b..2f7c6ce3760 100644
+--- a/src/core/lib/gpr/log_posix.cc
++++ b/src/core/lib/gpr/log_posix.cc
+@@ -31,7 +31,7 @@
+ #include <string.h>
+ #include <time.h>
+ 
+-static intptr_t gettid(void) { return (intptr_t)pthread_self(); }
++static intptr_t sys_gettid(void) { return (intptr_t)pthread_self(); }
+ 
+ void gpr_log(const char* file, int line, gpr_log_severity severity,
+              const char* format, ...) {
+@@ -86,7 +86,7 @@ void gpr_default_log(gpr_log_func_args* args) {
+   char* prefix;
+   gpr_asprintf(&prefix, "%s%s.%09d %7" PRIdPTR " %s:%d]",
+                gpr_log_severity_string(args->severity), time_buffer,
+-               (int)(now.tv_nsec), gettid(), display_file, args->line);
++               (int)(now.tv_nsec), sys_gettid(), display_file, args->line);
+ 
+   fprintf(stderr, "%-70s %s\n", prefix, args->message);
+   gpr_free(prefix);
+diff --git a/src/core/lib/iomgr/ev_epollex_linux.cc b/src/core/lib/iomgr/ev_epollex_linux.cc
+index 08116b3ab53..76f59844312 100644
+--- a/src/core/lib/iomgr/ev_epollex_linux.cc
++++ b/src/core/lib/iomgr/ev_epollex_linux.cc
+@@ -1102,7 +1102,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
+ }
+ 
+ #ifndef NDEBUG
+-static long gettid(void) { return syscall(__NR_gettid); }
++static long sys_gettid(void) { return syscall(__NR_gettid); }
+ #endif
+ 
+ /* pollset->mu lock must be held by the caller before calling this.
+@@ -1122,7 +1122,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
+ #define WORKER_PTR (&worker)
+ #endif
+ #ifndef NDEBUG
+-  WORKER_PTR->originator = gettid();
++  WORKER_PTR->originator = sys_gettid();
+ #endif
+   if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
+     gpr_log(GPR_INFO,
diff --git a/dev-python/grpcio/grpcio-1.23.0-r2.ebuild b/dev-python/grpcio/grpcio-1.23.0-r2.ebuild
new file mode 120000
index 0000000..f7ceabc
--- /dev/null
+++ b/dev-python/grpcio/grpcio-1.23.0-r2.ebuild
@@ -0,0 +1 @@
+grpcio-1.23.0.ebuild
\ No newline at end of file
diff --git a/dev-python/grpcio/grpcio-1.23.0.ebuild b/dev-python/grpcio/grpcio-1.23.0.ebuild
index 119141a..8c554f5 100644
--- a/dev-python/grpcio/grpcio-1.23.0.ebuild
+++ b/dev-python/grpcio/grpcio-1.23.0.ebuild
@@ -30,6 +30,7 @@
 
 PATCHES=(
 	"${FILESDIR}"/use-sysroot-env-var.patch
+	"${FILESDIR}"/grpc-1.22.1-glibc-2.30-compat.patch
 )
 
 python_prepare_all() {
diff --git a/dev-python/python-daemon/files/python-daemon-2.1.2-docutils.patch b/dev-python/python-daemon/files/python-daemon-2.1.2-docutils.patch
new file mode 100644
index 0000000..8de7f0c
--- /dev/null
+++ b/dev-python/python-daemon/files/python-daemon-2.1.2-docutils.patch
@@ -0,0 +1,48 @@
+The docutils module is used only to extract some metadata from the ChangeLog.
+This means it needs docutils from the SDK, and in a compatible version.  We've
+disabled python2 docutils in the SDK, but not for some boards, so hack this up
+until we can drop python2 docutils everywhere.
+
+https://crbug.com/1169482
+
+--- a/setup.py
++++ b/setup.py
+@@ -20,8 +20,6 @@ import pydoc
+ 
+ from setuptools import (setup, find_packages)
+ 
+-import version
+-
+ 
+ fromlist_expects_type = str
+ if sys.version_info < (3, 0):
+@@ -40,18 +38,15 @@ metadata = main_module._metadata
+ 
+ 
+ setup(
+-        distclass=version.ChangelogAwareDistribution,
++        version='2.1.2',
++        maintainer='Ben Finney',
++        maintainer_email='ben+python@benfinney.id.au',
+         name=metadata.distribution_name,
+         packages=find_packages(exclude=["test"]),
+-        cmdclass={
+-            "write_version_info": version.WriteVersionInfoCommand,
+-            "egg_info": version.EggInfoCommand,
+-            },
+ 
+         # Setuptools metadata.
+         zip_safe=False,
+         setup_requires=[
+-            "docutils",
+             ],
+         test_suite="unittest2.collector",
+         tests_require=[
+@@ -63,7 +58,6 @@ setup(
+             ],
+         install_requires=[
+             "setuptools",
+-            "docutils",
+             "lockfile >=0.10",
+             ],
+ 
diff --git a/dev-python/python-daemon/python-daemon.bashrc b/dev-python/python-daemon/python-daemon.bashrc
new file mode 100644
index 0000000..fa80753
--- /dev/null
+++ b/dev-python/python-daemon/python-daemon.bashrc
@@ -0,0 +1,7 @@
+# Copyright 2021 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.
+
+cros_pre_src_prepare_patches() {
+	epatch "${BASHRC_FILESDIR}"/${P}-docutils.patch
+}
diff --git a/dev-python/python-uinput/files/cros_keys.py b/dev-python/python-uinput/files/cros_keys.py
index a6d5489..634be62 100644
--- a/dev-python/python-uinput/files/cros_keys.py
+++ b/dev-python/python-uinput/files/cros_keys.py
@@ -203,6 +203,7 @@
     KEY_ENTER,
     # Forth row.
     KEY_LEFTSHIFT,
+    KEY_102ND,
     KEY_Z,
     KEY_X,
     KEY_C,
diff --git a/dev-rust/9s/9s-0.1.0-r26.ebuild b/dev-rust/9s/9s-0.1.0-r26.ebuild
deleted file mode 100644
index de7273b2..0000000
--- a/dev-rust/9s/9s-0.1.0-r26.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5106cfd0d4eeae62b70cad2fe296f27f7e172e72"
-CROS_WORKON_TREE="721a5c0f08ec5dabc2fdf2a8e0aec03a5d8942e5"
-CROS_RUST_SUBDIR="vm_tools/9s"
-
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-CROS_RUST_CRATE_NAME="p9s"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Server binary for the 9P file system protocol"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/9s/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="test"
-
-RDEPEND="
-	!<chromeos-base/crosvm-0.0.1-r260
-	!dev-rust/9s:0.1.0
-"
-DEPEND="
-	dev-rust/getopts:=
-	dev-rust/libc:=
-	dev-rust/libchromeos:=
-	dev-rust/log:=
-	dev-rust/p9:=
-"
-
-src_install() {
-	newbin "$(cros-rust_get_build_dir)/p9s" 9s
-
-	insinto /usr/share/policy
-	newins "seccomp/9s-seccomp-${ARCH}.policy" 9s-seccomp.policy
-}
diff --git a/dev-rust/9s/9s-9999.ebuild b/dev-rust/9s/9s-9999.ebuild
deleted file mode 100644
index d27bc6f..0000000
--- a/dev-rust/9s/9s-9999.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_RUST_SUBDIR="vm_tools/9s"
-
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-CROS_RUST_CRATE_NAME="p9s"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Server binary for the 9P file system protocol"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/9s/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="~*"
-IUSE="test"
-
-RDEPEND="
-	!<chromeos-base/crosvm-0.0.1-r260
-	!dev-rust/9s:0.1.0
-"
-DEPEND="
-	dev-rust/getopts:=
-	dev-rust/libc:=
-	dev-rust/libchromeos:=
-	dev-rust/log:=
-	dev-rust/p9:=
-"
-
-src_install() {
-	newbin "$(cros-rust_get_build_dir)/p9s" 9s
-
-	insinto /usr/share/policy
-	newins "seccomp/9s-seccomp-${ARCH}.policy" 9s-seccomp.policy
-}
diff --git a/dev-rust/adler/Manifest b/dev-rust/adler/Manifest
new file mode 100644
index 0000000..c483cb9
--- /dev/null
+++ b/dev-rust/adler/Manifest
@@ -0,0 +1 @@
+DIST adler-1.0.2.crate 12778 BLAKE2B a1dc17786adae945ac09d3525e609ed944e6465690787bbb831a1b9d53793cba1989793d0a5606d5d23ee20d36457923d451b1b3530c9ec7072a487aa3e55bbd SHA512 7ab190d31890fc05b0b55d8e2c6527a505e06793d5496be0b3831e0513412f9ba97f8148f6f68ed0770fa9cd980a5092d885e058becf1d5506b7c74b82674aa1
diff --git a/dev-rust/adler/OWNERS b/dev-rust/adler/OWNERS
new file mode 100644
index 0000000..12f21f8
--- /dev/null
+++ b/dev-rust/adler/OWNERS
@@ -0,0 +1 @@
+include /media-gfx/deqp-runner/OWNERS
diff --git a/dev-rust/adler/adler-1.0.2.ebuild b/dev-rust/adler/adler-1.0.2.ebuild
new file mode 100644
index 0000000..0a97112
--- /dev/null
+++ b/dev-rust/adler/adler-1.0.2.ebuild
@@ -0,0 +1,16 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A simple clean-room implementation of the Adler-32 checksum"
+HOMEPAGE="https://github.com/jonas-schievink/adler.git"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )" # FIXME: or BSD-0
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
diff --git a/dev-rust/ahash/Manifest b/dev-rust/ahash/Manifest
new file mode 100644
index 0000000..0cc1edf
--- /dev/null
+++ b/dev-rust/ahash/Manifest
@@ -0,0 +1 @@
+DIST ahash-0.4.7.crate 51474 BLAKE2B 0974b90539398d61903ce7fcbecdfcd802fcb5c7ed631be919ec17be6951e68bc80787876cafebd33e40a80605f6e2352a86047077bc40575420bb6ee1a4915a SHA512 2f42cdbacb2b2f9bd7d94a4cc61294d7813428157ce242ba82f7c3fccb6e4b83c767f4dedd35ff26ae61a89506b388d7cf96af4e727c29a14b25b9f82b1f2126
diff --git a/dev-rust/ahash/ahash-0.4.7.ebuild b/dev-rust/ahash/ahash-0.4.7.ebuild
new file mode 100644
index 0000000..b7af889
--- /dev/null
+++ b/dev-rust/ahash/ahash-0.4.7.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A non-cryptographic hash function using AES-NI for high performance"
+HOMEPAGE="https://crates.io/crates/ahash"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/const-random-0.1.6:= <dev-rust/const-random-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/aho-corasick/Manifest b/dev-rust/aho-corasick/Manifest
index 283e73a..c8211f4 100644
--- a/dev-rust/aho-corasick/Manifest
+++ b/dev-rust/aho-corasick/Manifest
@@ -1,2 +1,2 @@
 DIST aho-corasick-0.6.10.crate 26122 BLAKE2B 752eccb2fbf36fbc73b8694033d2f80f6ab6d2a8c2ae023329b90bb252b537adb1e80a604b4266bfb1ccc2963fcaa6579be48ef011c9728734c7cb77fa3eab99 SHA512 4a21b0e68c416e5dcfe99ded917577abdbe7c92e50227b7906a2b3bd25105f8e7d03103514d388171a41090cc7bcb63bb5b4dc3c6847a9b4e09bb3856a1bbd9d
-DIST aho-corasick-0.7.6.crate 108953 BLAKE2B d713366d0783e1ffbe65408e4d38ef9f12276f61043c768265de5d47e446a378306096a70252c9a49a6e7d3b97a09f30405a3d8df6b40dc2dfeb7407ed574c95 SHA512 120aa28e72279f561d7f51657aa0800dd46504cd92f758f848284e5f3695be6f5e24056a66b0f2d971c527277e92ae938e2357ade37b5cbe1c93913a5dc308b1
+DIST aho-corasick-0.7.18.crate 112923 BLAKE2B 4f6947d1aacf89ccfab0592cdc55fa61ef09cea38231d3f758765dbce328a810c0b588be4ba96e81d64955379ee005722d22a7aec39caea6e72342245d7ca34f SHA512 7a23b16231a90d23ee60ad4c81bc225410599a4560d33d3a203138fc540c39cf1000100fed3aed40dcc371c3635656a3792545dca5dd1aefbde00d8774eebd00
diff --git a/dev-rust/aho-corasick/aho-corasick-0.7.18.ebuild b/dev-rust/aho-corasick/aho-corasick-0.7.18.ebuild
new file mode 100644
index 0000000..9656760
--- /dev/null
+++ b/dev-rust/aho-corasick/aho-corasick-0.7.18.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Fast multiple substring searching."
+HOMEPAGE="https://github.com/BurntSushi/aho-corasick"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/memchr-2.4.0:= <dev-rust/memchr-3.0.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/aho-corasick/aho-corasick-0.7.6.ebuild b/dev-rust/aho-corasick/aho-corasick-0.7.6.ebuild
deleted file mode 100644
index 34d4b55..0000000
--- a/dev-rust/aho-corasick/aho-corasick-0.7.6.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="Fast multiple substring searching with finite state machines."
-HOMEPAGE="https://docs.rs/crate/aho-corasick/"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="MIT"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/memchr-2.2.0:= <dev-rust/memchr-3.0.0
-"
diff --git a/dev-rust/anyhow/Manifest b/dev-rust/anyhow/Manifest
index 38eca64..696c8d8 100644
--- a/dev-rust/anyhow/Manifest
+++ b/dev-rust/anyhow/Manifest
@@ -1 +1 @@
-DIST anyhow-1.0.32.crate 28512 BLAKE2B c9c37e9bd70074d53b163a3077b7a5304d04b13ada50c020898ee2169ef4db2e26aeb283421f2e757c3d6e31c58ec1832162c1a01904a44b9fb4cf14ffe05d0c SHA512 4646a3b85459fefd826c11fcdf69e532467d2d6ec0711b8d26312483ba988fa8492fe2f727332c39479e25dd37ad04830ea4ab19034cdcdc639e226e2744dc90
+DIST anyhow-1.0.35.crate 28928 BLAKE2B 74fec657b5c21455298198bd9feddbc5086c433f2c43de45950e33341ca9527f88f4ccb94eef248437e455394d54ec0dc13af33843deb799a0215abd1b1a874f SHA512 e93baa31f9eb04dcefc9e17fe030778337796490cec3467799f98dbfda77f55522457adde388c08b8893303e8a34292b863793f37956c4adfb7a88ba10fbd154
diff --git a/dev-rust/anyhow/anyhow-1.0.32.ebuild b/dev-rust/anyhow/anyhow-1.0.35.ebuild
similarity index 100%
rename from dev-rust/anyhow/anyhow-1.0.32.ebuild
rename to dev-rust/anyhow/anyhow-1.0.35.ebuild
diff --git a/dev-rust/arc-swap/Manifest b/dev-rust/arc-swap/Manifest
new file mode 100644
index 0000000..cb28700
--- /dev/null
+++ b/dev-rust/arc-swap/Manifest
@@ -0,0 +1 @@
+DIST arc-swap-0.4.5.crate 48047 BLAKE2B 154e078e1513107f997c05262c83fd5cd23404bcc1d7ac5ab89f4452e41998524ebff80eeacacf640fb9b7fafd449fdfa10fe845e15283cc4a1056966b400983 SHA512 e9643dd1aec2974e718c5eb19da1b1d8c6ba7c610ffbfb49a1bb3a0e937fe9b67ae4dc9247fbf75b2e9791113c877cd1dd2e5ad5972ade2d7365428a3b895131
diff --git a/dev-rust/arc-swap/OWNERS b/dev-rust/arc-swap/OWNERS
new file mode 100644
index 0000000..8feec812
--- /dev/null
+++ b/dev-rust/arc-swap/OWNERS
@@ -0,0 +1 @@
+include /dev-rust/vm-memory/OWNERS
diff --git a/dev-rust/arc-swap/arc-swap-0.4.5.ebuild b/dev-rust/arc-swap/arc-swap-0.4.5.ebuild
new file mode 100644
index 0000000..dcb4f9b
--- /dev/null
+++ b/dev-rust/arc-swap/arc-swap-0.4.5.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Atomically swappable Arc"
+HOMEPAGE="https://github.com/vorner/arc-swap"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND=""
diff --git a/dev-rust/assertions/OWNERS b/dev-rust/assertions/OWNERS
new file mode 100644
index 0000000..0edda31
--- /dev/null
+++ b/dev-rust/assertions/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:/OWNERS
diff --git a/dev-rust/assertions/assertions-0.1.0-r7.ebuild b/dev-rust/assertions/assertions-0.1.0-r7.ebuild
deleted file mode 100644
index 324c958..0000000
--- a/dev-rust/assertions/assertions-0.1.0-r7.ebuild
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="e08b929c25644f067cf337557cc80a71967ef0e5"
-CROS_WORKON_TREE="dbe587d866956d88c4445de8a9380cca33c6a231"
-CROS_WORKON_LOCALNAME="../platform/crosvm"
-CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="assertions"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Crates for compile-time assertion macro."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/assertions"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-RDEPEND="!!<=dev-rust/assertions-0.1.0-r3"
diff --git a/dev-rust/assertions/assertions-0.1.0-r8.ebuild b/dev-rust/assertions/assertions-0.1.0-r8.ebuild
new file mode 100644
index 0000000..c865ddd
--- /dev/null
+++ b/dev-rust/assertions/assertions-0.1.0-r8.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="76cc214ce771ab7dd0990b403e2a2c98dd0a4c80"
+CROS_WORKON_TREE="dbe587d866956d88c4445de8a9380cca33c6a231"
+CROS_WORKON_LOCALNAME="../platform/crosvm"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="assertions"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Crates for compile-time assertion macro."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/assertions"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+RDEPEND="!!<=dev-rust/assertions-0.1.0-r3"
diff --git a/dev-rust/assertions/assertions-9999.ebuild b/dev-rust/assertions/assertions-9999.ebuild
index 4ecb16c..cc0286f 100644
--- a/dev-rust/assertions/assertions-9999.ebuild
+++ b/dev-rust/assertions/assertions-9999.ebuild
@@ -12,7 +12,7 @@
 inherit cros-workon cros-rust
 
 DESCRIPTION="Crates for compile-time assertion macro."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/assertions"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/assertions"
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
diff --git a/dev-rust/async-task/Manifest b/dev-rust/async-task/Manifest
new file mode 100644
index 0000000..66ff1ca
--- /dev/null
+++ b/dev-rust/async-task/Manifest
@@ -0,0 +1 @@
+DIST async-task-4.0.3.crate 28770 BLAKE2B 66186991db90632ffb43c1e6a46a3a6c44fbee1e021b9af7999fe6400477e482d00e79bc8e299e4ed0b05d8d70ebe9a2b824c081e90a79544c53cdcc423527ec SHA512 cbd625c6bb72cb9af3b4a7ba168130125ec180952a55828fff2998b40d341ee1b1b5a0eae07944e9dbaa6a4acb19a1f96200721b6abd61594ffd88c6e4e1a904
diff --git a/dev-rust/async-task/OWNERS b/dev-rust/async-task/OWNERS
new file mode 100644
index 0000000..ddf4b25
--- /dev/null
+++ b/dev-rust/async-task/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:OWNERS
\ No newline at end of file
diff --git a/dev-rust/async-task/async-task-4.0.3.ebuild b/dev-rust/async-task/async-task-4.0.3.ebuild
new file mode 100644
index 0000000..647a91c
--- /dev/null
+++ b/dev-rust/async-task/async-task-4.0.3.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2021 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.
+
+EAPI=7
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Task abstraction for building executors"
+HOMEPAGE="https://github.com/smol-rs/async-task"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
diff --git a/dev-rust/atty/Manifest b/dev-rust/atty/Manifest
index 41a1a37..150b5bc 100644
--- a/dev-rust/atty/Manifest
+++ b/dev-rust/atty/Manifest
@@ -1 +1 @@
-DIST atty-0.2.11.crate 5916 BLAKE2B e502c23faaa9dd27cc5865b68a721b0403071edb483fca0c745707f4c0ca1b1787b5677b2d8ad7f327b8f5588ba784126ce78496c1db54f7ca4ce0ccea669499 SHA512 9d6417dc1e8abdb4969418525b36c451274fd76769adb57bef9875ef62ef521c50d58626ebc4f96d2bea32cbadb6999fd67653b570293d7253b403b6d0736c79
+DIST atty-0.2.14.crate 5470 BLAKE2B 2db856a9e898a430258f059aeaf7c844a153293e8856d90ac81f7d91a888c89198768ad5cb09303c23241fe85c560a55148fa56a303651a82b0edb895616bfab SHA512 d7b6c4b9a0f898d91ddbc41a5ee45bbf45d1d269508c8cc87ee3e3990500e41e0ec387afb1f3bc7db55bedac396dd86c6509f4bf9e5148d809c3802edcc5e1d9
diff --git a/dev-rust/atty/atty-0.2.11.ebuild b/dev-rust/atty/atty-0.2.11.ebuild
deleted file mode 100644
index b61e3b9..0000000
--- a/dev-rust/atty/atty-0.2.11.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="are you or are you not a tty?"
-HOMEPAGE="https://github.com/softprops/atty"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/termion-1.5.1:=
-	>=dev-rust/libc-0.2.0:=
-	>=dev-rust/winapi-0.3.0:=
-"
diff --git a/dev-rust/atty/atty-0.2.14.ebuild b/dev-rust/atty/atty-0.2.14.ebuild
new file mode 100644
index 0000000..2040ffd
--- /dev/null
+++ b/dev-rust/atty/atty-0.2.14.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+CROS_RUST_REMOVE_TARGET_CFG=1
+
+inherit cros-rust
+
+DESCRIPTION="A simple interface for querying atty"
+HOMEPAGE="https://github.com/softprops/atty"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/libc-0.2*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/autocfg/Manifest b/dev-rust/autocfg/Manifest
index 166a6f5..4b90c25 100644
--- a/dev-rust/autocfg/Manifest
+++ b/dev-rust/autocfg/Manifest
@@ -1,2 +1,2 @@
 DIST autocfg-0.1.2.crate 10444 BLAKE2B 1e37c97d6d309a5250552fc4c38066ba004674af6e6d091f08b24f47475c11b2db4b0967ce55d2208b9e2ba080e2bcb4b4226acd0da9d4c15dd844827ea6f0b4 SHA512 0f692f4062d22be01c32af2ceb6ed3887a7d65843e1a6ec696fbaa46517d02e62d573055efe5da3a63847f05bc37b254bf2dd750738b528774f63352eacdabe4
-DIST autocfg-1.0.0.crate 12870 BLAKE2B 79e495d53298574afd3b292da7c9c363dcb3ea434fd44258efaf3628e95ebfc731f03083f8a1060272a2a3478a6452cdc41539e2dac08465cc6e6283844bf260 SHA512 451fc63148792ba1952b884170e3481359b01bacca5ec0456f43ca58f8e092b8f81c9764f8b00d4104059ff608089be5858220ee868127c064cc890c767ec3a3
+DIST autocfg-1.0.1.crate 12908 BLAKE2B 40c53cab298e4f26634c3acff3ece6a3371188d91dbf377ed664eabedcde20536edaa93daf406618f37edde019f049a6e7b9a47f627344587dbd126bee2b5e3a SHA512 630b348acb98b012e97804e6325d03c89abc22f2157762c59144c04e6c733daf550bdc7f0fe0b9f3b50e15dae8c1c3c4bdfce3d805b02f0fc987311f5332419b
diff --git a/dev-rust/autocfg/autocfg-1.0.0.ebuild b/dev-rust/autocfg/autocfg-1.0.1.ebuild
similarity index 100%
rename from dev-rust/autocfg/autocfg-1.0.0.ebuild
rename to dev-rust/autocfg/autocfg-1.0.1.ebuild
diff --git a/dev-rust/backtrace-sys/backtrace-sys-0.1.3.ebuild b/dev-rust/backtrace-sys/backtrace-sys-0.1.3.ebuild
deleted file mode 100644
index 032fa9f..0000000
--- a/dev-rust/backtrace-sys/backtrace-sys-0.1.3.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_EMPTY_CRATE=1
-
-inherit cros-rust
-
-DESCRIPTION="Empty ${PN} crate"
-HOMEPAGE=""
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/base64/Manifest b/dev-rust/base64/Manifest
new file mode 100644
index 0000000..71c95c2
--- /dev/null
+++ b/dev-rust/base64/Manifest
@@ -0,0 +1 @@
+DIST base64-0.13.0.crate 62070 BLAKE2B b957f65cdb1e28baeca0cefc92fa98be797409b7dabd15e0e88db6cdfb89779b662cba9f2270fbf3b7b66948fdc46c118b8040a78ab72049c48a928fa802bee0 SHA512 991a72999839daa232f508c5b24e7d3225e8a26db8d1d0e747881b115af9e408b92374e163b31e0b0d324c1c2e57e8e38d66861b61eb0a1dba87bb5871940151
diff --git a/dev-rust/base64/OWNERS b/dev-rust/base64/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/base64/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/base64/base64-0.13.0.ebuild b/dev-rust/base64/base64-0.13.0.ebuild
new file mode 100644
index 0000000..7e1c33b
--- /dev/null
+++ b/dev-rust/base64/base64-0.13.0.ebuild
@@ -0,0 +1,16 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="encodes and decodes base64 as bytes or utf8"
+HOMEPAGE="https://github.com/marshallpierce/rust-base64"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
diff --git a/dev-rust/bindgen/bindgen-0.56.0-r1.ebuild b/dev-rust/bindgen/bindgen-0.56.0-r1.ebuild
new file mode 120000
index 0000000..0f235b9
--- /dev/null
+++ b/dev-rust/bindgen/bindgen-0.56.0-r1.ebuild
@@ -0,0 +1 @@
+bindgen-0.56.0.ebuild
\ No newline at end of file
diff --git a/dev-rust/bindgen/bindgen-0.56.0-r2.ebuild b/dev-rust/bindgen/bindgen-0.56.0-r2.ebuild
new file mode 120000
index 0000000..0f235b9
--- /dev/null
+++ b/dev-rust/bindgen/bindgen-0.56.0-r2.ebuild
@@ -0,0 +1 @@
+bindgen-0.56.0.ebuild
\ No newline at end of file
diff --git a/dev-rust/byteorder/Manifest b/dev-rust/byteorder/Manifest
index 21d001e..cd61d48 100644
--- a/dev-rust/byteorder/Manifest
+++ b/dev-rust/byteorder/Manifest
@@ -1,2 +1,3 @@
 DIST byteorder-1.1.0.crate 18264 BLAKE2B 07166ea5c142b81c777f80706d7e3ae1535dbd1090b83edc47a3b0957d3c6af1f78eebe4415223c3b2ba4294aa5d177dc871ad87381df085cf254c1ade4c8da3 SHA512 610c77c91fa3c23699d28d78631b87e6d4c56ad9754dabfb640f9ac4a41a2925c1a44c34988654bdcd4b02a3474ddf374d98999f6d53bed68835360d288b9922
 DIST byteorder-1.3.2.crate 21596 BLAKE2B 2ac70cff46af36e96b8b41c3adf9e09134af4d3d5b17c14233047fc3b70c829bffe6c129def84f529c1017ab2882c1bb66e86eab7b749a0d40daf2650da85d0a SHA512 2ef6b986926a4671dd945583730b0bfd4bd5e75b62a8a70c2875328157ba95f2c1b17c534d905e9b287457bd34363c1a33fd3dee9217c371032393ebbe206a8f
+DIST byteorder-1.4.3.crate 22512 BLAKE2B d39c546ba7346df315297fc53da4bfc77ecb1f38567ddb788549ee31cae2719a8bc0b7d1f1705abb3cff033aa57af004987d90748f5a31765273b3223a011c0d SHA512 8c8000eb8ecf40351c9ce36a3a8acd7a02f81786d1b11aab85adfeffa0f2267ed74df29b2ca5d1d38128484d1d3cad2b673aa0d0441dcd0620dfd3934bb888fa
diff --git a/dev-rust/byteorder/byteorder-1.4.3.ebuild b/dev-rust/byteorder/byteorder-1.4.3.ebuild
new file mode 100644
index 0000000..9dcdda4
--- /dev/null
+++ b/dev-rust/byteorder/byteorder-1.4.3.ebuild
@@ -0,0 +1,19 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Library for reading/writing numbers in big-endian and little-endian."
+HOMEPAGE="https://github.com/BurntSushi/byteorder"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/bytes/Manifest b/dev-rust/bytes/Manifest
index 7e9554e..69b8a7e 100644
--- a/dev-rust/bytes/Manifest
+++ b/dev-rust/bytes/Manifest
@@ -1,2 +1,3 @@
 DIST bytes-0.4.11.crate 45988 BLAKE2B 617fa9bdd07bf22a6f0089e8acfc44cd1444af07174b7a02a00f21438405620cd2cafb9574d04811464316108a05c60e6066b8d87d6662a5791ecd17a7f8f8d5 SHA512 3a0354981488c354b2aaa664f320b18cfb09ed07a5f74a10f8fc120279d660dc7899306bd01b1b3405fc92eec5de3f6f8e9d6c1e5d4a2374da865d5a8a8405d3
+DIST bytes-0.4.12.crate 46361 BLAKE2B 991f1d9170e7d3438c7d74507e6274df551d483883b3be2d99f7bbc0611ee6bd3f8f45c0e086cfa5488e8fc00e36e9a549fc71a325ff62b9bb83bd8fd412b5df SHA512 5f603532ea2f04cbc53044422feed1667bf0486af398c9c8e2ce7b4601b37e1c47223201970fb0d17fed77fef7e89961e0ac05a30e6cc9bf13462d98bc587250
 DIST bytes-0.5.6.crate 46291 BLAKE2B 6d33ab47d04f2e469db2add31db118f95cad53002be7969738923d62a4fe3605ccbe9fbcae6d8741310c543625e80d9adac7d9e9fed01b71cb3943ddd015d920 SHA512 a1caa1f58754f4d2e54b8df8d0ca0083ee5282f5e4d3bb5b1735022933dd2e66fb3f39c7a82216bf7a7e29591695c2e10c8b7144c83ac598e34193f2425a32cc
diff --git a/dev-rust/bytes/bytes-0.4.11-r1.ebuild b/dev-rust/bytes/bytes-0.4.11-r1.ebuild
new file mode 100644
index 0000000..77224f4
--- /dev/null
+++ b/dev-rust/bytes/bytes-0.4.11-r1.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A utility library for working with bytes."
+HOMEPAGE="https://github.com/tokio-rs/bytes"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/byteorder-1.1*:=
+	>=dev-rust/either-1.5.0:= <dev-rust/either-2.0.0
+	=dev-rust/iovec-0.1*:=
+	=dev-rust/serde-1*:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/bytes/bytes-0.4.12.ebuild b/dev-rust/bytes/bytes-0.4.12.ebuild
new file mode 100644
index 0000000..1aad9a5
--- /dev/null
+++ b/dev-rust/bytes/bytes-0.4.12.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Types and traits for working with bytes"
+HOMEPAGE="https://github.com/carllerche/bytes"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/byteorder-1.1.0:= <dev-rust/byteorder-2.0.0
+	>=dev-rust/either-1.5.0:= <dev-rust/either-2.0.0
+	=dev-rust/iovec-0.1*:=
+	=dev-rust/serde-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/chromeos-dbus-bindings/chromeos-dbus-bindings-0.24.52-r2.ebuild b/dev-rust/chromeos-dbus-bindings/chromeos-dbus-bindings-0.24.52-r2.ebuild
deleted file mode 100644
index 0b7d395..0000000
--- a/dev-rust/chromeos-dbus-bindings/chromeos-dbus-bindings-0.24.52-r2.ebuild
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="0f2e3a8a1c828743be75fb7caeae33a4ad0c056b"
-CROS_WORKON_TREE="9d31c60be7abd29c5a17c96bb681ea5d094c8a97"
-CROS_RUST_SUBDIR="chromeos-dbus-bindings"
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Chrome OS D-Bus bindings generator for Rust."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-dbus-bindings/"
-
-LICENSE="BSD-Google"
-SLOT="0/${PVR}"
-KEYWORDS="*"
-
-RDEPEND="!chromeos-base/chromeos-dbus-bindings-rust"
-
-BDEPEND=">=dev-rust/dbus-codegen-0.5.0"
diff --git a/dev-rust/chromeos-dbus-bindings/chromeos-dbus-bindings-0.24.52-r5.ebuild b/dev-rust/chromeos-dbus-bindings/chromeos-dbus-bindings-0.24.52-r5.ebuild
new file mode 100644
index 0000000..a1d5f34
--- /dev/null
+++ b/dev-rust/chromeos-dbus-bindings/chromeos-dbus-bindings-0.24.52-r5.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="3e9639613304065244f0860f6176f23f3245dd27"
+CROS_WORKON_TREE="e8023258ebab0150d1674664c16f6d197136cc8b"
+CROS_RUST_SUBDIR="chromeos-dbus-bindings"
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Chrome OS D-Bus bindings generator for Rust."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-dbus-bindings/"
+
+LICENSE="BSD-Google"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+
+RDEPEND="!chromeos-base/chromeos-dbus-bindings-rust"
+
+BDEPEND=">=dev-rust/dbus-codegen-0.5.0"
diff --git a/dev-rust/chrono/Manifest b/dev-rust/chrono/Manifest
index e3bdd3a..dd4330e 100644
--- a/dev-rust/chrono/Manifest
+++ b/dev-rust/chrono/Manifest
@@ -1,2 +1 @@
 DIST chrono-0.4.19.crate 155663 BLAKE2B c92c273fb6475bbb2546dfb75eaa23321bc8f9a5fa8a7c652f527649b96ff8718fa932f52b500b02a4acae7837df5bdb14f69cb821d4962be2790dbd1d023a54 SHA512 a119349bfc2243a249f1d18b1ae548a04b30fecb75913a56f26d1ff8c0eb53097a2674d9141e2094018191cbbc1620843fbddaf52999824e077c1157f0907980
-DIST chrono-0.4.2.crate 129309 BLAKE2B 691be25cb01dc36b65dac214b7e0246515f85d646deb2754adb53243ccd30f84d659eef6c2c2d9169af98adfb27b52dc04a345ce6ade3236ece4a37cf097d4e7 SHA512 1433e5293931b41598ff7e50f233c8b17c6297617fb86ea293ae0f6dbea2d074b896ea8eb63edd4fb0f5c16fb8663666370cb76e7b3789efade06af202d6a74d
diff --git a/dev-rust/chrono/chrono-0.4.2-r1.ebuild b/dev-rust/chrono/chrono-0.4.2-r1.ebuild
deleted file mode 120000
index 0a4d7ee..0000000
--- a/dev-rust/chrono/chrono-0.4.2-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-chrono-0.4.2.ebuild
\ No newline at end of file
diff --git a/dev-rust/chrono/chrono-0.4.2.ebuild b/dev-rust/chrono/chrono-0.4.2.ebuild
deleted file mode 100644
index c89204b..0000000
--- a/dev-rust/chrono/chrono-0.4.2.ebuild
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Aims to be a feature-complete superset of the time library"
-HOMEPAGE="https://github.com/chronotope/chrono"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND=">=dev-rust/num-integer-0.1.36:=
-	=dev-rust/num-traits-0.2*:=
-	>=dev-rust/num-iter-0.1.35:=
-	>=dev-rust/rustc-serialize-0.3.20:=
-	=dev-rust/ryu-0.2*:=
-	=dev-rust/serde-1*:=
-	=dev-rust/serde_derive-1*:=
-	=dev-rust/serde_json-1*:=
-	>=dev-rust/time-0.1.39:=
-	=dev-rust/bincode-0.8*:=
-"
diff --git a/dev-rust/clang-sys/Manifest b/dev-rust/clang-sys/Manifest
index 7b80f76..7eabaff 100644
--- a/dev-rust/clang-sys/Manifest
+++ b/dev-rust/clang-sys/Manifest
@@ -1 +1 @@
-DIST clang-sys-1.0.3.crate 36455 BLAKE2B d0432eab37cef602adcb5d5a2ad90f48d7cc2d708a39e20fcaa18cbd86ed59d75e867ebb5dfb36742c1f3648ce78a785d6a7ba42fa8a8378e549374e070d2122 SHA512 e31bf0ae28f1e8c516fe2558b1ea8a46b925ddcbf4963d1e598c668331b65b139927bff58dc3ff3a80f9e258f69af2893d24ec3977cbb9f5e440a344eaf150c8
+DIST clang-sys-1.2.0.crate 36874 BLAKE2B ff4bb39ae79280632aae404566ccde614e059d0a04aeeed1475080755fb07853da63353343b0ad66d97588679f461c7f5e5f69b753372174799c52ee7fc3e7d0 SHA512 64577b5f82878ff465eee0bd5f154522640e9bae7e6d52c1c8b868412a2297ded69b104b85b7ca6b6031d6a6eef60579933cb6502bb7342af1f9aa593428a256
diff --git a/dev-rust/clang-sys/clang-sys-1.0.3.ebuild b/dev-rust/clang-sys/clang-sys-1.0.3.ebuild
deleted file mode 100644
index 14ea732..0000000
--- a/dev-rust/clang-sys/clang-sys-1.0.3.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="Rust bindings for libclang."
-HOMEPAGE="https://github.com/KyleMayes/clang-sys"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="Apache-2.0"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/glob-0.3*:=
-	>=dev-rust/libc-0.2.39:= <dev-rust/libc-0.3.0
-	=dev-rust/libloading-0.6*:=
-"
diff --git a/dev-rust/clang-sys/clang-sys-1.2.0.ebuild b/dev-rust/clang-sys/clang-sys-1.2.0.ebuild
new file mode 100644
index 0000000..7e8d5f3
--- /dev/null
+++ b/dev-rust/clang-sys/clang-sys-1.2.0.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Rust bindings for libclang."
+HOMEPAGE="https://crates.io/crates/clang-sys"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="Apache-2.0"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/glob-0.3*:=
+	>=dev-rust/libc-0.2.39:= <dev-rust/libc-0.3.0
+	=dev-rust/libloading-0.7*:=
+	=dev-rust/glob-0.3*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/clap/Manifest b/dev-rust/clap/Manifest
index b3867e8..5edfee7 100644
--- a/dev-rust/clap/Manifest
+++ b/dev-rust/clap/Manifest
@@ -1 +1 @@
-DIST clap-2.33.0.crate 196458 BLAKE2B 3bb62d817afc77b421a6282746b9b61367d224de6b614c7ed66bde452ce1046728077dab3368a46635b5c74d82ba3196586d87c0201478ce5b89638910dadb1a SHA512 f1075031414d48e4340bfe308904a95a31b72460724773c52a0bc8c004e625a04c904a39fc5420cb8c26a633321f9b5f4f69019c7aae5ed89900b63ed8c21a91
+DIST clap-2.33.3.crate 201925 BLAKE2B bec9c866481c5b3fddeb314f68af9bce38fc421e42816182de3209e8ea3447b72cf033e6251eea27fe974eff8085b7d98cdd2911b5cc0ec6b4bf4c750deb8a25 SHA512 3eb0fd648e2e3f9e5ff69a5e6cf0d867304fe18523accd036f28a86de368e4774088a6936c108ccc045092c539fe7f7494ea96420ebf6b4bec16880cea84bedf
diff --git a/dev-rust/clap/clap-2.33.0.ebuild b/dev-rust/clap/clap-2.33.0.ebuild
deleted file mode 100644
index 9d1a99e..0000000
--- a/dev-rust/clap/clap-2.33.0.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Command Line Argument Parser"
-HOMEPAGE="https://github.com/clap-rs/clap"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-DEPEND="
-	=dev-rust/bitflags-1*:=
-	=dev-rust/textwrap-0.11*:=
-	=dev-rust/unicode-width-0.1*:=
-	=dev-rust/ansi_term-0.11*:=
-	=dev-rust/atty-0.2*:=
-	=dev-rust/clippy-0.0.166:=
-	=dev-rust/strsim-0.8*:=
-	=dev-rust/term_size-0.3*:=
-	=dev-rust/vec_map-0.8*:=
-	=dev-rust/yaml-rust-0.3.5:=
-"
diff --git a/dev-rust/clap/clap-2.33.3.ebuild b/dev-rust/clap/clap-2.33.3.ebuild
new file mode 100644
index 0000000..a6bc372
--- /dev/null
+++ b/dev-rust/clap/clap-2.33.3.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A simple to use, efficient, and full-featured Command Line Argument Parser"
+HOMEPAGE="https://clap.rs/"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/atty-0.2.2:= <dev-rust/atty-0.3.0
+	=dev-rust/bitflags-1*:=
+	~dev-rust/clippy-0.0.166:=
+	=dev-rust/strsim-0.8*:=
+	=dev-rust/term_size-0.3*:=
+	=dev-rust/textwrap-0.11*:=
+	>=dev-rust/unicode-width-0.1.4:= <dev-rust/unicode-width-0.2.0
+	=dev-rust/vec_map-0.8*:=
+	>=dev-rust/yaml-rust-0.3.5:= <dev-rust/yaml-rust-0.4.0
+	=dev-rust/ansi_term-0.11*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/cloudflare-zlib-sys/Manifest b/dev-rust/cloudflare-zlib-sys/Manifest
new file mode 100644
index 0000000..abed2b5
--- /dev/null
+++ b/dev-rust/cloudflare-zlib-sys/Manifest
@@ -0,0 +1 @@
+DIST cloudflare-zlib-sys-0.2.0.crate 191122 BLAKE2B 499b5fb9d5050964f6c581332534608e0e7aae8096bde1d74c9871eccf5ab56fc4bfceaf52b1134f22fc59ce60449567c5b2245930ed50b707e76d5ece7f8392 SHA512 a488ebcc7777f156f1ce064e63a0592583c27f2e8b35d5cba33b0d54de98ec38c1d9ee884a174d6e1b7e02b314008c00dfad00796f956df18f87e033d23740d7
diff --git a/dev-rust/cloudflare-zlib-sys/OWNERS b/dev-rust/cloudflare-zlib-sys/OWNERS
new file mode 100644
index 0000000..12f21f8
--- /dev/null
+++ b/dev-rust/cloudflare-zlib-sys/OWNERS
@@ -0,0 +1 @@
+include /media-gfx/deqp-runner/OWNERS
diff --git a/dev-rust/cloudflare-zlib-sys/cloudflare-zlib-sys-0.2.0.ebuild b/dev-rust/cloudflare-zlib-sys/cloudflare-zlib-sys-0.2.0.ebuild
new file mode 100644
index 0000000..d22b831
--- /dev/null
+++ b/dev-rust/cloudflare-zlib-sys/cloudflare-zlib-sys-0.2.0.ebuild
@@ -0,0 +1,16 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Cloudflare fork of zlib with massive performance improvements"
+HOMEPAGE="https://gitlab.com/kornelski/cloudflare-zlib-sys"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 ) ZLIB"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND=">=dev-rust/cc-1.0.25:="
diff --git a/dev-rust/codespan-reporting/Manifest b/dev-rust/codespan-reporting/Manifest
new file mode 100644
index 0000000..ad7b9eb
--- /dev/null
+++ b/dev-rust/codespan-reporting/Manifest
@@ -0,0 +1,2 @@
+DIST codespan-reporting-0.9.5.crate 43366 BLAKE2B 554c3fdbd69de2ef14e48a9300d429b0a0f47670a236286c4e6311e9d68d35e1d42904cabed9a3e1714456b4bc89d1b3511aed84698e7551889496f8bd7418da SHA512 f48954f8ba01a0c25035e7afe21de30d3202c4c53077a1f2d86e2aa615206ff34c9e8671e3c0090c8b609c7e2869ef63e984dfe5a5ec534f1b73b83799c893a1
+DIST codespan-reporting-0.11.1.crate 48963 BLAKE2B 39deb717a853ffbe3585e20a67fd7a75b62e2d796a66b5004876501fd7476acde9f126804f2ef6220ebab66821a3ccf058d544d689a2705eae44285f34b510cb SHA512 0869789f5c50d3523d3ee16a8fe64756498a13704efbe82bb0845eaa87c7b6b1d075b3b6b80567cd9fce6cb09c5179e9c07e485fd17ce56c8139ade0f8bc6844
diff --git a/dev-rust/codespan-reporting/OWNERS b/dev-rust/codespan-reporting/OWNERS
new file mode 100644
index 0000000..25425c7
--- /dev/null
+++ b/dev-rust/codespan-reporting/OWNERS
@@ -0,0 +1 @@
+include /dev-util/cxxbridge-cmd/OWNERS
diff --git a/dev-rust/codespan-reporting/codespan-reporting-0.11.1.ebuild b/dev-rust/codespan-reporting/codespan-reporting-0.11.1.ebuild
new file mode 100644
index 0000000..7e6065e
--- /dev/null
+++ b/dev-rust/codespan-reporting/codespan-reporting-0.11.1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Beautiful diagnostic reporting for text-based programming languages"
+HOMEPAGE="https://crates.io/crates/codespan-reporting"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="Apache-2.0"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/serde-1:= <dev-rust/serde-2
+	>=dev-rust/termcolor-1:= <dev-rust/termcolor-2
+	>=dev-rust/unicode-width-0.1:= <dev-rust/unicode-width-0.2
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/codespan-reporting/codespan-reporting-0.9.5.ebuild b/dev-rust/codespan-reporting/codespan-reporting-0.9.5.ebuild
new file mode 100644
index 0000000..4f028f8
--- /dev/null
+++ b/dev-rust/codespan-reporting/codespan-reporting-0.9.5.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+inherit cros-rust
+
+DESCRIPTION="Beautiful diagnostic reporting for text-based programming languages"
+HOMEPAGE="https://github.com/brendanzab/codespan"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="Apache-2.0"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/termcolor-1*:=
+	=dev-rust/unicode-width-0.1*:=
+	=dev-rust/serde-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+"
diff --git a/dev-rust/compiler_builtins/compiler_builtins-0.1.0.ebuild b/dev-rust/compiler_builtins/compiler_builtins-0.1.0.ebuild
new file mode 100644
index 0000000..e5b72b0
--- /dev/null
+++ b/dev-rust/compiler_builtins/compiler_builtins-0.1.0.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_EMPTY_CRATE=1
+
+inherit cros-rust
+
+DESCRIPTION="Empty crate"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/compiler_builtins/compiler_builtins-0.1.2.ebuild b/dev-rust/compiler_builtins/compiler_builtins-0.1.2.ebuild
new file mode 100644
index 0000000..e5b72b0
--- /dev/null
+++ b/dev-rust/compiler_builtins/compiler_builtins-0.1.2.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_EMPTY_CRATE=1
+
+inherit cros-rust
+
+DESCRIPTION="Empty crate"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/const-random/const-random-0.1.6.ebuild b/dev-rust/const-random/const-random-0.1.6.ebuild
new file mode 100644
index 0000000..e5b72b0
--- /dev/null
+++ b/dev-rust/const-random/const-random-0.1.6.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_EMPTY_CRATE=1
+
+inherit cros-rust
+
+DESCRIPTION="Empty crate"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/crc32fast/Manifest b/dev-rust/crc32fast/Manifest
new file mode 100644
index 0000000..7e5770c
--- /dev/null
+++ b/dev-rust/crc32fast/Manifest
@@ -0,0 +1 @@
+DIST crc32fast-1.2.1.crate 38172 BLAKE2B 80801a345f4c5ed8a5fd335bbf672eac1733a1c2b333dc8a8e0254338148ce7b34402201a8d2d7434dd1b057f33d99d3a8f02610ea50b54115d80bb8da28b2b0 SHA512 4c04236bb15a5c63b712c62652777917e947823abb20a0d0b372c850ec1c8695faa414e8de73904f1f1a296d7b00a6206cde8da404cf4cdaa2e8408e64b62b5e
diff --git a/dev-rust/crc32fast/OWNERS b/dev-rust/crc32fast/OWNERS
new file mode 100644
index 0000000..12f21f8
--- /dev/null
+++ b/dev-rust/crc32fast/OWNERS
@@ -0,0 +1 @@
+include /media-gfx/deqp-runner/OWNERS
diff --git a/dev-rust/crc32fast/crc32fast-1.2.1.ebuild b/dev-rust/crc32fast/crc32fast-1.2.1.ebuild
new file mode 100644
index 0000000..9c370f6
--- /dev/null
+++ b/dev-rust/crc32fast/crc32fast-1.2.1.ebuild
@@ -0,0 +1,20 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Fast, SIMD-accelerated CRC32 (IEEE) checksum computation"
+HOMEPAGE="https://github.com/srijs/rust-crc32fast"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/cfg-if-1:= <dev-rust/cfg-if-2
+"
diff --git a/dev-rust/cros_async/OWNERS b/dev-rust/cros_async/OWNERS
new file mode 100644
index 0000000..0edda31
--- /dev/null
+++ b/dev-rust/cros_async/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:/OWNERS
diff --git a/dev-rust/cros_async/cros_async-0.1.0-r9.ebuild b/dev-rust/cros_async/cros_async-0.1.0-r9.ebuild
new file mode 100644
index 0000000..5c12ef2
--- /dev/null
+++ b/dev-rust/cros_async/cros_async-0.1.0-r9.ebuild
@@ -0,0 +1,53 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="c54cf6c8e9cb9f496d8295efde4ed1f27195461d"
+CROS_WORKON_TREE="671a7be7202d6125151e12fb7e4331d0d184cb5f"
+CROS_WORKON_LOCALNAME="../platform/crosvm"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="cros_async"
+CROS_WORKON_SUBDIRS_TO_COPY="cros_async"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Rust async tools for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/cros_async"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/async-task-4*:=
+	>=dev-rust/async-trait-0.1.36:= <dev-rust/async-trait-0.2
+	dev-rust/data_model:=
+	=dev-rust/futures-0.3*:=
+	dev-rust/io_uring:=
+	>=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3
+	=dev-rust/paste-1*:=
+	=dev-rust/pin-utils-0.1*:=
+	=dev-rust/slab-0.4*:=
+	dev-rust/sync:=
+	dev-rust/sys_util:=
+	dev-rust/tempfile:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2
+"
+RDEPEND="${DEPEND}"
+
+src_test() {
+	# TODO: Enable tests on ARM once the emulator supports io_uring.
+	if ! cros_rust_is_direct_exec; then
+		einfo "Skipping uring tests on non-x86 platform"
+		local skip_tests=(
+			ring
+			io_ext
+			timer::tests::one_shot
+		)
+
+		local args=( $(printf -- "--skip %s\n" "${skip_tests[@]}") )
+		cros-rust_src_test -- "${args[@]}"
+	else
+		cros-rust_src_test
+	fi
+}
diff --git a/dev-rust/cros_async/cros_async-9999.ebuild b/dev-rust/cros_async/cros_async-9999.ebuild
new file mode 100644
index 0000000..70f9af8
--- /dev/null
+++ b/dev-rust/cros_async/cros_async-9999.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_LOCALNAME="../platform/crosvm"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="cros_async"
+CROS_WORKON_SUBDIRS_TO_COPY="cros_async"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Rust async tools for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/cros_async"
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+
+DEPEND="
+	=dev-rust/async-task-4*:=
+	>=dev-rust/async-trait-0.1.36:= <dev-rust/async-trait-0.2
+	dev-rust/data_model:=
+	=dev-rust/futures-0.3*:=
+	dev-rust/io_uring:=
+	>=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3
+	=dev-rust/paste-1*:=
+	=dev-rust/pin-utils-0.1*:=
+	=dev-rust/slab-0.4*:=
+	dev-rust/sync:=
+	dev-rust/sys_util:=
+	dev-rust/tempfile:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2
+"
+RDEPEND="${DEPEND}"
+
+src_test() {
+	# TODO: Enable tests on ARM once the emulator supports io_uring.
+	if ! cros_rust_is_direct_exec; then
+		einfo "Skipping uring tests on non-x86 platform"
+		local skip_tests=(
+			ring
+			io_ext
+			timer::tests::one_shot
+		)
+
+		local args=( $(printf -- "--skip %s\n" "${skip_tests[@]}") )
+		cros-rust_src_test -- "${args[@]}"
+	else
+		cros-rust_src_test
+	fi
+}
diff --git a/dev-rust/cros_async/files/chromeos-version.sh b/dev-rust/cros_async/files/chromeos-version.sh
new file mode 100755
index 0000000..4a70987d
--- /dev/null
+++ b/dev-rust/cros_async/files/chromeos-version.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# Copyright 2021 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.
+
+# Assumes the first 'version =' line in the Cargo.toml is the version for the
+# crate.
+awk '/^version = / { print $3 }' "$1/cros_async/Cargo.toml" | head -n1 | tr -d '"'
diff --git a/dev-rust/cros_fuzz/cros_fuzz-0.1.0-r34.ebuild b/dev-rust/cros_fuzz/cros_fuzz-0.1.0-r34.ebuild
new file mode 100644
index 0000000..3b24943
--- /dev/null
+++ b/dev-rust/cros_fuzz/cros_fuzz-0.1.0-r34.ebuild
@@ -0,0 +1,30 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("90bf2838f56bffe127636b5ea4988485595819a8" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_RUST_SUBDIR="cros-fuzz"
+
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} common-mk"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Support crate for running rust fuzzers on Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cros-fuzz"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="fuzzer test"
+
+DEPEND="
+	=dev-rust/rand_core-0.4*:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/cros_fuzz/cros_fuzz-0.1.0-r8.ebuild b/dev-rust/cros_fuzz/cros_fuzz-0.1.0-r8.ebuild
deleted file mode 100644
index 80cce64..0000000
--- a/dev-rust/cros_fuzz/cros_fuzz-0.1.0-r8.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("90bf2838f56bffe127636b5ea4988485595819a8" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_RUST_SUBDIR="cros-fuzz"
-
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} common-mk"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Support crate for running rust fuzzers on Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cros-fuzz"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="fuzzer test"
-
-DEPEND="
-	=dev-rust/rand_core-0.4*:=
-"
diff --git a/dev-rust/cros_fuzz/cros_fuzz-9999.ebuild b/dev-rust/cros_fuzz/cros_fuzz-9999.ebuild
index 61cb687..2ad780b 100644
--- a/dev-rust/cros_fuzz/cros_fuzz-9999.ebuild
+++ b/dev-rust/cros_fuzz/cros_fuzz-9999.ebuild
@@ -23,3 +23,6 @@
 DEPEND="
 	=dev-rust/rand_core-0.4*:=
 "
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/crossbeam-channel/Manifest b/dev-rust/crossbeam-channel/Manifest
index 20897f4..c94c364 100644
--- a/dev-rust/crossbeam-channel/Manifest
+++ b/dev-rust/crossbeam-channel/Manifest
@@ -1,2 +1,3 @@
 DIST crossbeam-channel-0.3.8.crate 79923 BLAKE2B dae78c49f0a2c425c20481a9ab1150fa8fc1c1bb8007747f3cfa9b9e763f72c8f440b62f7d6ccc6f5a92ad0545a2b0918d71fd3e7ce1bb4af95c583696d0cda1 SHA512 9b4c4b9345276b0227041a64f7ea4971dcd37ac5a2d404408d7e1875cd9a1318cbbee0cd91d4ba4b73201927ae61cf35382d2c8ef9461f21d71e802d01063583
+DIST crossbeam-channel-0.4.4.crate 86868 BLAKE2B 88629c72c0be41bb3a0d7dc92f6908d46cb397223449da5b2c990b7660e09dfd3e3f3fb708d13586f5dbf199d62f781f1f7e0b73d279de0ef810f7bcf25b3f27 SHA512 2933721d6af3126f492f112f3d662fc40fb49139a84c72d33b6c2b0aa94fe964acb302fe726e999be4292a1410d3ee896169a0434dccfbf44d166008719846d3
 DIST crossbeam-channel-0.5.0.crate 86811 BLAKE2B 9af4384f2b74d202971f1967887cfd0e71ddba9a6456ffbdfc80bf192d527f61242239d2eb6a0d9dcbe47be22eb414736976e6b1840c021610d96a3bf03c3d18 SHA512 838b433d48b84f1fea020a1d1324e366e6cdae30ef07396140f195afc45b8f705de6347d949b68ce1ed0708fe533ffaa2cfdedc9d2e6288a7325c188ccde9aa2
diff --git a/dev-rust/crossbeam-channel/crossbeam-channel-0.4.4.ebuild b/dev-rust/crossbeam-channel/crossbeam-channel-0.4.4.ebuild
new file mode 100644
index 0000000..9ee2848
--- /dev/null
+++ b/dev-rust/crossbeam-channel/crossbeam-channel-0.4.4.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Multi-producer multi-consumer channels for message passing"
+HOMEPAGE="https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-channel"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/crossbeam-utils-0.7*:=
+	=dev-rust/maybe-uninit-2*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/crossbeam-deque/Manifest b/dev-rust/crossbeam-deque/Manifest
index 535acae..43369fd 100644
--- a/dev-rust/crossbeam-deque/Manifest
+++ b/dev-rust/crossbeam-deque/Manifest
@@ -1,2 +1,3 @@
 DIST crossbeam-deque-0.7.1.crate 19407 BLAKE2B e2fa467b88ef0d6c7f6656bd87ade1306665bb5b56b1e494ed3a7bc59050ebf847de4c57c5dcc5d63688b60edd3645300cf4b3a2020280dcf0e47f434a9f3221 SHA512 6ea3f138aecb4e84b4f9754fa6abc164b5b558987b15bd34562b70cf93ffd9015d017f62098e578236ad8bc1db652b9bfa624edffd5a99f10c3618c3927d3fe2
+DIST crossbeam-deque-0.7.3.crate 19888 BLAKE2B f83e6915624ed8d01e56ad28e0a40e84732d820fd07f0f0fa4aac9578aed0f4a980bdcd64d29811be2b5055f28135403faf091b902dd4c800d6d736452ab03d0 SHA512 7c6a42643b2eda7ffbe2d485de4d3723c6a37beaf77e81329e39c9300a80492ef46650fe5a6b18101d3f6b4ed031ddb06174624f5449998ec3a7808e979df131
 DIST crossbeam-deque-0.8.0.crate 20756 BLAKE2B 6bb602547cb0ca65552a9b981502221f1d3570422d22c867f654ba677e5c95aa5f81ed0022a498d3408c3f69291e1805b49fcfbfaff0d9a6075b75be3bf926ea SHA512 4efa73dcb9ef40b841039d24ffaf9bd7c63f8c0233bba1e0728fd5558702b4ef0af117543834c527335e99384d3c80d56293e891c9d94440f51f454b1b90c399
diff --git a/dev-rust/crossbeam-deque/crossbeam-deque-0.7.3.ebuild b/dev-rust/crossbeam-deque/crossbeam-deque-0.7.3.ebuild
new file mode 100644
index 0000000..8a58437
--- /dev/null
+++ b/dev-rust/crossbeam-deque/crossbeam-deque-0.7.3.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Concurrent work-stealing deque"
+HOMEPAGE="https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-deque"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/crossbeam-epoch-0.8*:=
+	=dev-rust/crossbeam-utils-0.7*:=
+	=dev-rust/maybe-uninit-2*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/crossbeam-epoch/Manifest b/dev-rust/crossbeam-epoch/Manifest
index 6d11664..f2fe2dd 100644
--- a/dev-rust/crossbeam-epoch/Manifest
+++ b/dev-rust/crossbeam-epoch/Manifest
@@ -1,2 +1,3 @@
 DIST crossbeam-epoch-0.7.1.crate 35215 BLAKE2B 617e49a766075033e62f5268a6425f7d2cd0995108f2b4582f49f4a534d62002321240dab0972fa531c9fee13593f30333ac28c459b9c5ee9b0392d82d5fbf4b SHA512 d527ea799c7f7f5dc960231aa5d24f27ed9389f3a92531046e77686d50740e8f35d1f42510a8e6695776c58e77a3be51aea0dbed459cf81cf8befee1ec573f84
+DIST crossbeam-epoch-0.8.2.crate 39283 BLAKE2B eaad3cff833fb3672c93f6f0f4ca7073c709f9ea489c034da5fb2dab2da0676d493300c66bc746c8372369815aac3eec2ab9cb875dd9464cb59ae25c4ef4c6c9 SHA512 7406e92a768dee07c8d13b0fefd658e9eebfd3e89c782c4690740353c0de920013c345d6c112a78a2014396cc837ce4fdbf845dfcfacfd7a57172f483bb9b8e4
 DIST crossbeam-epoch-0.9.0.crate 39727 BLAKE2B d132dd087bfcc8b9d20f2d3a17c5b9f4c50d348d6356767310e04897832781537c963082b27762b40e78a40c9bd39153a996af104895cc1cbe868690d700df59 SHA512 31e3808e0cec2a9ab25dec87b6c0d7536aa9e7e4e0aa764f4aa76a61ea5c35ec5821425f8da3c40918c1238d17d7d991d61c6945ec91497db293527b89a1e46d
diff --git a/dev-rust/crossbeam-epoch/crossbeam-epoch-0.8.2.ebuild b/dev-rust/crossbeam-epoch/crossbeam-epoch-0.8.2.ebuild
new file mode 100644
index 0000000..4b7f604
--- /dev/null
+++ b/dev-rust/crossbeam-epoch/crossbeam-epoch-0.8.2.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Epoch-based garbage collection"
+HOMEPAGE="https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-epoch"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0
+	=dev-rust/crossbeam-utils-0.7*:=
+	=dev-rust/lazy_static-1*:=
+	=dev-rust/maybe-uninit-2*:=
+	=dev-rust/memoffset-0.5*:=
+	=dev-rust/scopeguard-1*:=
+	=dev-rust/autocfg-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/crossbeam-queue/Manifest b/dev-rust/crossbeam-queue/Manifest
index dec238c..90af7a8 100644
--- a/dev-rust/crossbeam-queue/Manifest
+++ b/dev-rust/crossbeam-queue/Manifest
@@ -1 +1,2 @@
 DIST crossbeam-queue-0.1.2.crate 14104 BLAKE2B b084846e3adaefb33991770d53130b361f2dfa76ac9f4793618643afff09c4ebeae1545c33c59211d09427bf8d13d13d3ed0965211568884b0b2042e5542327d SHA512 f799ec04a78ee86051bc6a0b99dc95766c83d2ae8672015d1fa95e53aa0f93232f3816b7b2d38bfbcc577516f45af009a5aac04be21f521550347fe87ca0b444
+DIST crossbeam-queue-0.2.3.crate 14753 BLAKE2B 1dc60d5a48672f26f0c3afd0b14efc943fe9aea8fc9b10dc1e551a489a178899f1a82c0bc8bebf8511e112711ebb26170d1f76f9caaf06556bbe8b74242e97b6 SHA512 f53385dea0a2b0830372ee11b9d393022f501a79631a15696d641a812939faad62b61112f9da9dda381fe69ecc3c91462fad95f329eddb002aa941110297cd85
diff --git a/dev-rust/crossbeam-queue/crossbeam-queue-0.2.3.ebuild b/dev-rust/crossbeam-queue/crossbeam-queue-0.2.3.ebuild
new file mode 100644
index 0000000..f0e42b7
--- /dev/null
+++ b/dev-rust/crossbeam-queue/crossbeam-queue-0.2.3.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Concurrent queues"
+HOMEPAGE="https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0
+	=dev-rust/crossbeam-utils-0.7*:=
+	=dev-rust/maybe-uninit-2*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/crossbeam-utils/Manifest b/dev-rust/crossbeam-utils/Manifest
index c1c5614..68810b1 100644
--- a/dev-rust/crossbeam-utils/Manifest
+++ b/dev-rust/crossbeam-utils/Manifest
@@ -1,2 +1,3 @@
 DIST crossbeam-utils-0.6.5.crate 31735 BLAKE2B adeec7df0627b73169e04b53883f44b9d4c54f0b97ef2e49cfadc565c5c3324bf3dfe39158a65ec4b6676a8fba2696d43b2ce1aea75fb8bf2120ff4ad9eb45f9 SHA512 5bcf3eed8f28d608b675aa4588b133393ced515e2f7fa37b413b34aa5ee550100899d957906dd04fcaee68cea57d2c8f230e06d6903f5ef117c9313d6cdbc2a8
-DIST crossbeam-utils-0.8.0.crate 35665 BLAKE2B 29c02316d7f53edbbe418bda26fd1fce6ebbc56351766751355f974dbaeeb50e5272c155c255ff628fe3e5b537602873066f110a6052afbb019ab40b72cee097 SHA512 f3bda6a9fdc6d1bd6e68fdbf49c19c9d6a1c9857111b62a6819febf527b4a12129530990ddf83c9d56b43668e4df33a378854cdf1b5b6e863426fde85203e46a
+DIST crossbeam-utils-0.7.2.crate 34338 BLAKE2B 3cb287c7741c4d5b0551331634a75b066f07fb4b55fa2b347370506467a05923254b1c4dca667de59ed91ff91f5496b37f40f13d3e9885a1b4f639f5b6748433 SHA512 e375f24c007bcf660d9e297527ed938f678a55696ca7b555b96fee7e0b94c31db2d3f4355675aa0baeadba68b9755ec92dc3a09a37b5db48e3723b926fd4a8f3
+DIST crossbeam-utils-0.8.3.crate 37268 BLAKE2B e9a77f143afab79fc1984902ea756a15e43bbd6c8251b5a2f9fd574522539814098b17da03ac5222177332042303f129e0c2729db6bc80e8f76bf4b097d973d4 SHA512 2e89ceea586873e957a31b510f8e8cb0c6675def32ea6b9a9483166b47f69c1ad448a79d897796883b696bf77cb0fcb1d0ac28ee779146f6500ca9a54aa7b4fb
diff --git a/dev-rust/crossbeam-utils/crossbeam-utils-0.7.2.ebuild b/dev-rust/crossbeam-utils/crossbeam-utils-0.7.2.ebuild
new file mode 100644
index 0000000..dccb550
--- /dev/null
+++ b/dev-rust/crossbeam-utils/crossbeam-utils-0.7.2.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Utilities for concurrent programming"
+HOMEPAGE="https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0
+	>=dev-rust/lazy_static-1.1.0:= <dev-rust/lazy_static-2.0.0
+	=dev-rust/autocfg-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/crossbeam-utils/crossbeam-utils-0.8.0.ebuild b/dev-rust/crossbeam-utils/crossbeam-utils-0.8.0.ebuild
deleted file mode 100644
index 59e80ac..0000000
--- a/dev-rust/crossbeam-utils/crossbeam-utils-0.8.0.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="This crate provides miscellaneous tools for concurrent programming"
-HOMEPAGE="https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/autocfg-1*:=
-	=dev-rust/cfg-if-1*:=
-	=dev-rust/const_fn-0.4*:=
-	=dev-rust/lazy_static-1*:="
diff --git a/dev-rust/crossbeam-utils/crossbeam-utils-0.8.3.ebuild b/dev-rust/crossbeam-utils/crossbeam-utils-0.8.3.ebuild
new file mode 100644
index 0000000..df729e92d
--- /dev/null
+++ b/dev-rust/crossbeam-utils/crossbeam-utils-0.8.3.ebuild
@@ -0,0 +1,21 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="This crate provides miscellaneous tools for concurrent programming"
+HOMEPAGE="https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/autocfg-1*:=
+	=dev-rust/cfg-if-1*:=
+	=dev-rust/lazy_static-1*:="
diff --git a/dev-rust/curl-sys/curl-sys-0.4.18-r1.ebuild b/dev-rust/curl-sys/curl-sys-0.4.18-r1.ebuild
new file mode 120000
index 0000000..c8d73e4
--- /dev/null
+++ b/dev-rust/curl-sys/curl-sys-0.4.18-r1.ebuild
@@ -0,0 +1 @@
+curl-sys-0.4.18.ebuild
\ No newline at end of file
diff --git a/dev-rust/curl-sys/curl-sys-0.4.18.ebuild b/dev-rust/curl-sys/curl-sys-0.4.18.ebuild
index d2235dc..a95ee91 100644
--- a/dev-rust/curl-sys/curl-sys-0.4.18.ebuild
+++ b/dev-rust/curl-sys/curl-sys-0.4.18.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 inherit cros-rust
 
@@ -15,11 +15,12 @@
 
 DEPEND="
 	=dev-rust/cc-1*:=
-	>=dev-rust/libc-0.2.2:=
-	>=dev-rust/libz-sys-1.0.18:=
-	>=dev-rust/pkg-config-0.3.3:=
+	>=dev-rust/libc-0.2.2:= <dev-rust/libc-0.3.0
+	>=dev-rust/libz-sys-1.0.18:= <dev-rust/libz-sys-2.0.0
+	>=dev-rust/pkg-config-0.3.3:= <dev-rust/pkg-config-0.4.0
 	=dev-rust/vcpkg-0.2*:=
 	=dev-rust/winapi-0.3*:=
 	=dev-rust/libnghttp2-sys-0.1*:=
 	=dev-rust/openssl-sys-0.9*:=
 "
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/curl/curl-0.4.22-r1.ebuild b/dev-rust/curl/curl-0.4.22-r1.ebuild
new file mode 120000
index 0000000..15661a6
--- /dev/null
+++ b/dev-rust/curl/curl-0.4.22-r1.ebuild
@@ -0,0 +1 @@
+curl-0.4.22.ebuild
\ No newline at end of file
diff --git a/dev-rust/curl/curl-0.4.22.ebuild b/dev-rust/curl/curl-0.4.22.ebuild
index 3d0742a..85576e0 100644
--- a/dev-rust/curl/curl-0.4.22.ebuild
+++ b/dev-rust/curl/curl-0.4.22.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 inherit cros-rust
 
@@ -14,14 +14,15 @@
 KEYWORDS="*"
 
 DEPEND="
-	>=dev-rust/curl-sys-0.4.18:=
-	>=dev-rust/kernel32-sys-0.2.2:=
-	>=dev-rust/libc-0.2.42:=
-	>=dev-rust/schannel-0.1.13:=
-	>=dev-rust/socket2-0.3.7:=
-	>=dev-rust/winapi-0.2.7:=
-	>=dev-rust/openssl-probe-0.1.2:=
-	>=dev-rust/openssl-sys-0.9.43:=
+	>=dev-rust/curl-sys-0.4.18:= <dev-rust/curl-sys-0.5.0
+	>=dev-rust/kernel32-sys-0.2.2:= <dev-rust/kernel32-sys-0.3.0
+	>=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0
+	>=dev-rust/schannel-0.1.13:= <dev-rust/schannel-0.2.0
+	>=dev-rust/socket2-0.3.7:= <dev-rust/socket2-0.4.0
+	>=dev-rust/winapi-0.2.7:= <dev-rust/winapi-0.3.0
+	>=dev-rust/openssl-probe-0.1.2:= <dev-rust/openssl-probe-0.2.0
+	>=dev-rust/openssl-sys-0.9.43:= <dev-rust/openssl-sys-0.10.0
 	=dev-rust/mio-0.6*:=
-	>=dev-rust/mio-extras-2.0.3:=
+	>=dev-rust/mio-extras-2.0.3:= <dev-rust/mio-extras-3.0.0
 "
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/data_model/OWNERS b/dev-rust/data_model/OWNERS
new file mode 100644
index 0000000..0edda31
--- /dev/null
+++ b/dev-rust/data_model/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:/OWNERS
diff --git a/dev-rust/data_model/data_model-0.1.0-r28.ebuild b/dev-rust/data_model/data_model-0.1.0-r28.ebuild
deleted file mode 100644
index 5b1add3..0000000
--- a/dev-rust/data_model/data_model-0.1.0-r28.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="191444797d415446744b742ebb7eab5e10f08cbc"
-CROS_WORKON_TREE="8a5a39267e3e69d4359e4a665e12121ccb3262a7"
-CROS_WORKON_LOCALNAME="../platform/crosvm"
-CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="data_model"
-CROS_WORKON_SUBDIRS_TO_COPY="data_model"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Crates includes traits and types for safe interaction with raw memory."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/data_model"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-DEPEND="
-	dev-rust/assertions:=
-"
-
-RDEPEND="!!<=dev-rust/data_model-0.1.0-r13"
diff --git a/dev-rust/data_model/data_model-0.1.0-r38.ebuild b/dev-rust/data_model/data_model-0.1.0-r38.ebuild
new file mode 100644
index 0000000..7b68111
--- /dev/null
+++ b/dev-rust/data_model/data_model-0.1.0-r38.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="76cc214ce771ab7dd0990b403e2a2c98dd0a4c80"
+CROS_WORKON_TREE="559dded7f8554570e0cbbc3d506d5f34fdc6eb86"
+CROS_WORKON_LOCALNAME="../platform/crosvm"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="data_model"
+CROS_WORKON_SUBDIRS_TO_COPY="data_model"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Crates includes traits and types for safe interaction with raw memory."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/data_model"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+DEPEND="
+	dev-rust/assertions:=
+	dev-rust/libc:=
+	=dev-rust/serde-1*:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/data_model-0.1.0-r13
+"
diff --git a/dev-rust/data_model/data_model-9999.ebuild b/dev-rust/data_model/data_model-9999.ebuild
index 811412e..1a0093b 100644
--- a/dev-rust/data_model/data_model-9999.ebuild
+++ b/dev-rust/data_model/data_model-9999.ebuild
@@ -12,7 +12,7 @@
 inherit cros-workon cros-rust
 
 DESCRIPTION="Crates includes traits and types for safe interaction with raw memory."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/data_model"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/data_model"
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
@@ -20,6 +20,11 @@
 
 DEPEND="
 	dev-rust/assertions:=
+	dev-rust/libc:=
+	=dev-rust/serde-1*:=
 "
-
-RDEPEND="!!<=dev-rust/data_model-0.1.0-r13"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/data_model-0.1.0-r13
+"
diff --git a/dev-rust/dbus/dbus-0.8.4-r1.ebuild b/dev-rust/dbus/dbus-0.8.4-r2.ebuild
similarity index 100%
rename from dev-rust/dbus/dbus-0.8.4-r1.ebuild
rename to dev-rust/dbus/dbus-0.8.4-r2.ebuild
diff --git a/dev-rust/dbus/dbus-0.8.4.ebuild b/dev-rust/dbus/dbus-0.8.4.ebuild
index 00ffcff..e8dc0d1 100644
--- a/dev-rust/dbus/dbus-0.8.4.ebuild
+++ b/dev-rust/dbus/dbus-0.8.4.ebuild
@@ -17,5 +17,6 @@
 
 DEPEND=">=dev-rust/libc-0.2.66:= <dev-rust/libc-0.3
 	=dev-rust/libdbus-sys-0.2*:=
-	=dev-rust/futures-0.3.1:=
+	=dev-rust/futures-0.3*:=
 "
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/derive-getters/Manifest b/dev-rust/derive-getters/Manifest
new file mode 100644
index 0000000..512f6c7
--- /dev/null
+++ b/dev-rust/derive-getters/Manifest
@@ -0,0 +1 @@
+DIST derive-getters-0.1.1.crate 8653 BLAKE2B 9d0fdcb9aa20e35b8e128f5b1ee38fdf6f13574e99b54a68b26459563f70031de8a78054ab5315a7b84c5c432b29a4fb6dc8a7679dc602eb7890ca7689a191b2 SHA512 689928c6b79b5e815eee38ddd7845dcee59d4899e3bd61d384043f97fe829fcc6ae3b00dd13b172b5a6b2b63f92c689e04d0035ac9e42dc528b1d59f13b98da8
diff --git a/dev-rust/derive-getters/OWNERS b/dev-rust/derive-getters/OWNERS
new file mode 100644
index 0000000..12f21f8
--- /dev/null
+++ b/dev-rust/derive-getters/OWNERS
@@ -0,0 +1 @@
+include /media-gfx/deqp-runner/OWNERS
diff --git a/dev-rust/derive-getters/derive-getters-0.1.1-r1.ebuild b/dev-rust/derive-getters/derive-getters-0.1.1-r1.ebuild
new file mode 100644
index 0000000..f471fd9
--- /dev/null
+++ b/dev-rust/derive-getters/derive-getters-0.1.1-r1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Simple Getters derive macro for generating field getter methods on a named struct."
+HOMEPAGE="https://git.sr.ht/~kvsari/derive-getters"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/derive-getters/derive-getters-0.1.1.ebuild b/dev-rust/derive-getters/derive-getters-0.1.1.ebuild
new file mode 100644
index 0000000..7477ff6
--- /dev/null
+++ b/dev-rust/derive-getters/derive-getters-0.1.1.ebuild
@@ -0,0 +1,22 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Simple Getters derive macro for generating field getter methods on a named struct."
+HOMEPAGE="https://git.sr.ht/~kvsari/derive-getters"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/proc-macro2-1*
+	=dev-rust/quote-1*
+	=dev-rust/syn-1*
+"
diff --git a/dev-rust/enumn/OWNERS b/dev-rust/enumn/OWNERS
new file mode 100644
index 0000000..0edda31
--- /dev/null
+++ b/dev-rust/enumn/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:/OWNERS
diff --git a/dev-rust/enumn/enumn-0.1.0-r11.ebuild b/dev-rust/enumn/enumn-0.1.0-r11.ebuild
deleted file mode 100644
index def199c..0000000
--- a/dev-rust/enumn/enumn-0.1.0-r11.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="e08b929c25644f067cf337557cc80a71967ef0e5"
-CROS_WORKON_TREE="c5170d4e4312bcef4a4e4e49403be6bc421c18aa"
-CROS_WORKON_LOCALNAME="../platform/crosvm"
-CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
-# We don't use CROS_WORKON_OUTOFTREE_BUILD here since project's Cargo.toml is
-# using "provided by ebuild" macro which supported by cros-rust.
-CROS_WORKON_SUBTREE="enumn"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Convert number to enum"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/enumn"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/proc-macro2-1*:=
-	=dev-rust/quote-1*:=
-	=dev-rust/syn-1*:=
-"
-
-RDEPEND="!!<=dev-rust/enumn-0.0.1-r4"
diff --git a/dev-rust/enumn/enumn-0.1.0-r13.ebuild b/dev-rust/enumn/enumn-0.1.0-r13.ebuild
new file mode 100644
index 0000000..d36dc98
--- /dev/null
+++ b/dev-rust/enumn/enumn-0.1.0-r13.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="76cc214ce771ab7dd0990b403e2a2c98dd0a4c80"
+CROS_WORKON_TREE="c5170d4e4312bcef4a4e4e49403be6bc421c18aa"
+CROS_WORKON_LOCALNAME="../platform/crosvm"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since project's Cargo.toml is
+# using "provided by ebuild" macro which supported by cros-rust.
+CROS_WORKON_SUBTREE="enumn"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Convert number to enum"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/enumn"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/enumn-0.0.1-r4
+"
diff --git a/dev-rust/enumn/enumn-9999.ebuild b/dev-rust/enumn/enumn-9999.ebuild
index 3bcff9c..2cc84c4 100644
--- a/dev-rust/enumn/enumn-9999.ebuild
+++ b/dev-rust/enumn/enumn-9999.ebuild
@@ -12,7 +12,7 @@
 inherit cros-workon cros-rust
 
 DESCRIPTION="Convert number to enum"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/enumn"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/enumn"
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
@@ -22,5 +22,8 @@
 	=dev-rust/quote-1*:=
 	=dev-rust/syn-1*:=
 "
-
-RDEPEND="!!<=dev-rust/enumn-0.0.1-r4"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/enumn-0.0.1-r4
+"
diff --git a/dev-rust/env_logger/Manifest b/dev-rust/env_logger/Manifest
index 684b5a97..9ff75b2 100644
--- a/dev-rust/env_logger/Manifest
+++ b/dev-rust/env_logger/Manifest
@@ -1,3 +1,2 @@
-DIST env_logger-0.6.0.crate 27887 BLAKE2B 09370d369b4516ad5ff02ab5dc155a329adb7431a966d45c2d2ca91d20ac0235680f5872c452d9e55e59220a625494f54b3709a3f3b97c5e2ed991e24c85f855 SHA512 b75d8a6cf2fc88c926f3df8096211a46c39da418657bab73e65df373e5c2c187397f75ff6b02b9a2f18626f0a661cc5bccb03b39c72bcfdaab6d478b43fad8df
 DIST env_logger-0.6.1.crate 28567 BLAKE2B a7302e44a807dcb1b523e1dde683a040837b1de2fbda5e8e7347478f77d4b7a39521aadd1d6d42dffbb6229e0dd6bd1b2b9fc47b860db45281a95612dd78faab SHA512 7e5142fa24e46aeb246515f42f9fc561364f266a693ec9f8c45dbe96d31174bf5663ef6233f41a5f96849dd19b61e2a97ab7ca1a7a55c51f741f4efa5af371c5
-DIST env_logger-0.8.1.crate 32715 BLAKE2B 3a6835076cc4a01c88617e361fd1d72f7622749b2a1b12e94a5c50d8d492db6583106c9e13091eba986a0c4aa9f9f968bfa80048c0d7c295ec63ce6be6d693b9 SHA512 3a5f7892edc7c3d92cd2b487cf3a331d5b2034236b6e2b90b3193caf3d689997e9c01773d3f9138e56ab5744e8e62cabc29620ed06c0cbbe18364b0c26b55954
+DIST env_logger-0.8.3.crate 32543 BLAKE2B 513790f39c63eb096b0fb62687c74262b42b0edc3e6fc2e2f2fdd44463eb4cfbf67560136ec206e252afa1477fabf66917f4fc0e8192e040670f98f3d7c4bb51 SHA512 7f6c3c79b8f4efb8d1d4e4b879c1c78a427f15669244ce1eca869aea9bcad950ffa5b59f3f8e4513e085c2daf1f5857313b374e238fc78b731bba2646ec895ff
diff --git a/dev-rust/env_logger/env_logger-0.6.0.ebuild b/dev-rust/env_logger/env_logger-0.6.0.ebuild
deleted file mode 100644
index 5ec824e..0000000
--- a/dev-rust/env_logger/env_logger-0.6.0.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Implements a logger that can be configured via environment variables."
-HOMEPAGE="https://github.com/sebasmagri/env_logger/"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/log-0.4*:=
-	>=dev-rust/atty-0.2.5:=
-	=dev-rust/humantime-1.1*:=
-	>=dev-rust/regex-1.0.3:=
-	>=dev-rust/termcolor-0.3.0:=
-"
diff --git a/dev-rust/env_logger/env_logger-0.8.1.ebuild b/dev-rust/env_logger/env_logger-0.8.1.ebuild
deleted file mode 100644
index 14d9d8f..0000000
--- a/dev-rust/env_logger/env_logger-0.8.1.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-inherit cros-rust
-
-DESCRIPTION="Implements a logger that can be configured via environment variables."
-HOMEPAGE="https://github.com/sebasmagri/env_logger/"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/log-0.4.8:= <dev-rust/log-0.5.0
-	>=dev-rust/atty-0.2.5:= <dev-rust/atty-0.3.0
-	=dev-rust/humantime-2*:=
-	>=dev-rust/regex-1.4.0:= <dev-rust/regex-2.0.0
-	>=dev-rust/termcolor-1.0.2:= <dev-rust/termcolor-2.0.0
-"
diff --git a/dev-rust/env_logger/env_logger-0.8.3.ebuild b/dev-rust/env_logger/env_logger-0.8.3.ebuild
new file mode 100644
index 0000000..501ef29
--- /dev/null
+++ b/dev-rust/env_logger/env_logger-0.8.3.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A logging implementation for 'log' which is configured via an environment
+variable."
+HOMEPAGE="https://crates.io/crates/env_logger"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/atty-0.2.5:= <dev-rust/atty-0.3.0
+	=dev-rust/humantime-2*:=
+	>=dev-rust/log-0.4.8:= <dev-rust/log-0.5.0
+	>=dev-rust/regex-1.0.3:= <dev-rust/regex-2.0.0
+	>=dev-rust/termcolor-1.0.2:= <dev-rust/termcolor-2.0.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/flate2/Manifest b/dev-rust/flate2/Manifest
new file mode 100644
index 0000000..bdae264
--- /dev/null
+++ b/dev-rust/flate2/Manifest
@@ -0,0 +1 @@
+DIST flate2-1.0.20.crate 74036 BLAKE2B c5a1270debdb42f8612c0db9b684d339dfb668dfa3b06f6dcef94b43c115daee99c3558562d605da5ba1a554930030083baa8128036e9999d47907f29687ee0e SHA512 1415cba53183b7ae0f3396859186b92001060a78fbee10dd0dd4c8a93119aeb78bd8d782735c292badc1ae6d369badc6fa1a0105835614a6f70e82b080d8549b
diff --git a/dev-rust/flate2/OWNERS b/dev-rust/flate2/OWNERS
new file mode 100644
index 0000000..12f21f8
--- /dev/null
+++ b/dev-rust/flate2/OWNERS
@@ -0,0 +1 @@
+include /media-gfx/deqp-runner/OWNERS
diff --git a/dev-rust/flate2/flate2-1.0.20.ebuild b/dev-rust/flate2/flate2-1.0.20.ebuild
new file mode 100644
index 0000000..73e8b76
--- /dev/null
+++ b/dev-rust/flate2/flate2-1.0.20.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="DEFLATE compression and decompression exposed as Read/BufRead/Write streams."
+HOMEPAGE="https://github.com/rust-lang/flate2-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/cfg-if-1:= <dev-rust/cfg-if-2
+	>=dev-rust/crc32fast-1.2:= <dev-rust/crc32fast-2
+	>=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3
+	>=dev-rust/miniz_oxide-0.4.0:= <dev-rust/miniz_oxide-0.5
+	>=dev-rust/cloudflare-zlib-sys-0.2.0:= <dev-rust/cloudflare-zlib-sys-0.3
+	>=dev-rust/futures-0.1.25:= <dev-rust/futures-0.2
+	>=dev-rust/libz-sys-1.1.0:= <dev-rust/libz-sys-2
+	>=dev-rust/miniz-sys-0.1.11:= <dev-rust/miniz-sys-0.2
+	>=dev-rust/tokio-io-0.1.11:= <dev-rust/tokio-io-0.2
+"
+
+src_prepare() {
+	cros-rust_src_prepare
+
+	# Delete the optional zlib-ng dependency.
+	sed -i '/zlib-ng/d' "${S}/Cargo.toml"
+}
diff --git a/dev-rust/flate2/flate2-1.0.9.ebuild b/dev-rust/flate2/flate2-1.0.9.ebuild
deleted file mode 100644
index 072e90c..0000000
--- a/dev-rust/flate2/flate2-1.0.9.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_EMPTY_CRATE=1
-
-inherit cros-rust
-
-DESCRIPTION="Empty ${PN} crate"
-HOMEPAGE=""
-
-LICENSE="BSD-Google"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/fnv/Manifest b/dev-rust/fnv/Manifest
index 43513ebf..8671f4e 100644
--- a/dev-rust/fnv/Manifest
+++ b/dev-rust/fnv/Manifest
@@ -1 +1,2 @@
 DIST fnv-1.0.6.crate 11131 BLAKE2B 220cf5463749b21e1560419ab9b1f235de08dd548c4a9a7fa6190d9516ce7db884f877b67174ee50b66b22be80d3be73ccafca80e06e94e0fa6e96fbb94475f6 SHA512 f1356b3da25f76cb3ccb4336ff54d4967f1dc7523eae6cba21a4349b8ce563516f6a2aa10d626cd5bb6046b55ac2f246e61e4e526a03fad5e78d0ea174841844
+DIST fnv-1.0.7.crate 11266 BLAKE2B 81da85889c91b6567e0f555e37dd915f1bd919719d1ca10c31a6861d7aec29a49ae9c1e8bc500791bf9d6b8dbb318c096d04872c5872a4b1f7d45fbd8e12842d SHA512 2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334
diff --git a/dev-rust/fnv/fnv-1.0.7.ebuild b/dev-rust/fnv/fnv-1.0.7.ebuild
new file mode 100644
index 0000000..3b71283
--- /dev/null
+++ b/dev-rust/fnv/fnv-1.0.7.ebuild
@@ -0,0 +1,19 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Fowler–Noll–Vo hash function"
+HOMEPAGE="https://crates.io/crates/fnv"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/futures-channel/Manifest b/dev-rust/futures-channel/Manifest
index 8540b7f..35b8880 100644
--- a/dev-rust/futures-channel/Manifest
+++ b/dev-rust/futures-channel/Manifest
@@ -1 +1 @@
-DIST futures-channel-0.3.1.crate 28137 BLAKE2B 9c7b49153032e62b7ac5965cb9bd9c19767cbf0ae7225d7c00061cbb0add6e017c4c672b1487965fe9e223a82800beebe02ff7775509095daa0cc397136c5fc4 SHA512 588ff1007bfe03856efc8bd3627071045f83d0a5842636944000e8cc2f85a8b64c5a79aaf8ef3e5b931801f780cd5d5e163eff49ed55dcd03c5d9323a0662bee
+DIST futures-channel-0.3.13.crate 31089 BLAKE2B 051e50bffb13b5bf13b7d972aded2530db0dfe0769b1d59719d3d02ff2e0fecd4cf4d76db5ddf67eb0f71c43c64e9abb4a82e0556e9b88d463e8f5c157fbdede SHA512 e2ba7d3ad3963d2d6aa86f1a74e2fd6f12e339dd42c56df187b2c8dadaf85c2282056925b5fbfbd08429979f3bd017efd9f71d6962a3577bf8d8633b089cf855
diff --git a/dev-rust/futures-channel/OWNERS b/dev-rust/futures-channel/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/futures-channel/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/futures-channel/futures-channel-0.3.1.ebuild b/dev-rust/futures-channel/futures-channel-0.3.1.ebuild
deleted file mode 100644
index 03b539f..0000000
--- a/dev-rust/futures-channel/futures-channel-0.3.1.ebuild
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Channels for asynchronous communication using futures-rs."
-HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/futures-core-0.3.1:= <dev-rust/futures-core-0.4
-	>=dev-rust/futures-sink-0.3.1:= <dev-rust/futures-sink-0.4
-"
diff --git a/dev-rust/futures-channel/futures-channel-0.3.13.ebuild b/dev-rust/futures-channel/futures-channel-0.3.13.ebuild
new file mode 100644
index 0000000..5f9abaf
--- /dev/null
+++ b/dev-rust/futures-channel/futures-channel-0.3.13.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Channels for asynchronous communication using futures-rs."
+HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4
+	>=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4
+"
+RDEPEND="${DEPEND}
+	!~dev-rust/${PN}-0.3.1
+"
diff --git a/dev-rust/futures-core/Manifest b/dev-rust/futures-core/Manifest
index 959c91b..d88e816 100644
--- a/dev-rust/futures-core/Manifest
+++ b/dev-rust/futures-core/Manifest
@@ -1 +1 @@
-DIST futures-core-0.3.1.crate 13543 BLAKE2B ca46c25389b45ec2c0e65eb513c933367168469a7e735f910164847b09e07c198a05a7dc2acbeb99bbed797f6ee8b9012df63c385393540dc2acad6db0f2561b SHA512 6085d79e2d08678b69e729099032472127de7df106fe5fe3673c32e76dcce45550a697854587f50e074ba34ef487eca61c4933119dacd536a482176c7693f603
+DIST futures-core-0.3.13.crate 13835 BLAKE2B aabbbd83d26ebe974d31d4cf0a8db3faee7a902b05cbad2cf85907528d70d5d9a0c57ba006b243357dd45a0c7b053ca7608224550da3dc5cb9b86cca1efac13c SHA512 f5a424fbf6984633740a05fe6f9ea0741d7433e9a34f2e360377391d1921f8a4ade756b543bcf165f8cc45e286b59c0d2e8242f86809926898fe4390895ed37f
diff --git a/dev-rust/futures-core/OWNERS b/dev-rust/futures-core/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/futures-core/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/futures-core/futures-core-0.3.1.ebuild b/dev-rust/futures-core/futures-core-0.3.1.ebuild
deleted file mode 100644
index 7051478..0000000
--- a/dev-rust/futures-core/futures-core-0.3.1.ebuild
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="The core traits and types in for the 'futures' library."
-HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/futures-core/futures-core-0.3.13.ebuild b/dev-rust/futures-core/futures-core-0.3.13.ebuild
new file mode 100644
index 0000000..0f51163
--- /dev/null
+++ b/dev-rust/futures-core/futures-core-0.3.13.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="The core traits and types in for the 'futures' library."
+HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+RDEPEND="!~dev-rust/${PN}-0.3.1"
diff --git a/dev-rust/futures-executor/Manifest b/dev-rust/futures-executor/Manifest
index ad74d52..8315a47 100644
--- a/dev-rust/futures-executor/Manifest
+++ b/dev-rust/futures-executor/Manifest
@@ -1 +1 @@
-DIST futures-executor-0.3.1.crate 15676 BLAKE2B 5028302c0907e3bad94d76258ce5afbb37477c9d569e982b321e9e63599580b21664e27b4ffed473517fcf393a81121bbff8de4971f0662ac8c892a9d8e9f660 SHA512 26036ec8ce2d839cc58502b0a7bb68174a07add5f6662f42a81c1bc3116b04a7def8a9cf95a615aa2b662b30dbe9316630f4588a5634097e5b990e3223550211
+DIST futures-executor-0.3.13.crate 17112 BLAKE2B a40884bfda2a6e168f447dfc25b69a0d7329d2bf07aac1b66498e5812c8038c994b4555d50f52f3a977993c3d43893d042b5baee74c89b3ce98decdd3ed2685c SHA512 4e8a31ad24c791a627ba9d328ff002ac520c88f28a266145166def5dbb6ee852b4d65e9394d51ee8b0409f9e1b616a15e320a43c05223357004c82e092676cf5
diff --git a/dev-rust/futures-executor/OWNERS b/dev-rust/futures-executor/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/futures-executor/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/futures-executor/futures-executor-0.3.1.ebuild b/dev-rust/futures-executor/futures-executor-0.3.1.ebuild
deleted file mode 100644
index c04a4c7..0000000
--- a/dev-rust/futures-executor/futures-executor-0.3.1.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Executors for asynchronous tasks based on the futures-rs library."
-HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/futures-core-0.3.1:= <dev-rust/futures-core-0.4
-	>=dev-rust/futures-task-0.3.1:= <dev-rust/futures-task-0.4
-	>=dev-rust/futures-util-0.3.1:= <dev-rust/futures-util-0.4
-	>=dev-rust/num_cpus-1.8.0:=
-"
diff --git a/dev-rust/futures-executor/futures-executor-0.3.13.ebuild b/dev-rust/futures-executor/futures-executor-0.3.13.ebuild
new file mode 100644
index 0000000..dab3fd1
--- /dev/null
+++ b/dev-rust/futures-executor/futures-executor-0.3.13.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Executors for asynchronous tasks based on the futures-rs library."
+HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4
+	>=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4
+	>=dev-rust/futures-util-0.3.13:= <dev-rust/futures-util-0.4
+	>=dev-rust/num_cpus-1.8.0:=
+"
+RDEPEND="${DEPEND}
+	!~dev-rust/${PN}-0.3.1
+"
diff --git a/dev-rust/futures-io/Manifest b/dev-rust/futures-io/Manifest
index 3c20e21..bebd287 100644
--- a/dev-rust/futures-io/Manifest
+++ b/dev-rust/futures-io/Manifest
@@ -1 +1 @@
-DIST futures-io-0.3.1.crate 8884 BLAKE2B 06b298993e1c008a5d66ddcc8a397b4d6feb63cd411e8d05286742d174e9ce931c30f11f1d0de0a71f0296c52df4ac8d24daf6fafc85fffd301a09cfacd0d7c4 SHA512 c4febd39793fc7e4b2a2750375b0d9b89ed7ff0c90a3502d9abc0ad1993fbee752d29f1196f63b35061ee883cd78d11a2b30211fcc98b9fed490321050dff327
+DIST futures-io-0.3.13.crate 9059 BLAKE2B f2e6586b50827b12e27a181d6e8acd501dfa587facc37e31dabd015fb70fbdac0a959ef2802e15a5a223179daaec050b45c6c87408c93b5e2f6aa956d27f4c06 SHA512 56353b9f5a6ee5d3f6a5edc0f031248b41280d60ca9108d196e106aade750c8acaf864cce6b4490faada917f2fc6eea919a49ad68a6bef039a88ef88a381a4b8
diff --git a/dev-rust/futures-io/OWNERS b/dev-rust/futures-io/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/futures-io/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/futures-io/futures-io-0.3.1.ebuild b/dev-rust/futures-io/futures-io-0.3.1.ebuild
deleted file mode 100644
index e4dc341..0000000
--- a/dev-rust/futures-io/futures-io-0.3.1.ebuild
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="The 'AsyncRead' and 'AsyncWrite' traits for the futures-rs library."
-HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/futures-io/futures-io-0.3.13.ebuild b/dev-rust/futures-io/futures-io-0.3.13.ebuild
new file mode 100644
index 0000000..21e5879
--- /dev/null
+++ b/dev-rust/futures-io/futures-io-0.3.13.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="The 'AsyncRead' and 'AsyncWrite' traits for the futures-rs library."
+HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+RDEPEND="!~dev-rust/${PN}-0.3.1"
diff --git a/dev-rust/futures-macro/Manifest b/dev-rust/futures-macro/Manifest
index 537cbec..cc920ef 100644
--- a/dev-rust/futures-macro/Manifest
+++ b/dev-rust/futures-macro/Manifest
@@ -1 +1 @@
-DIST futures-macro-0.3.1.crate 9682 BLAKE2B a9f8c24c46238dd7e9cc8e5f3520169080144283125c91172dfe04f0205f557c1fa3a7df807b493e6b010e36bc1c57f320bd24aef357ca3bb82262f02f6a8759 SHA512 2d4f26d491161be357dd445e5487c1bfde03a1352ed6fc46b1770ccacbfba85deb64798cf48d5feb4b1c49f74d4198ec99e741ec91c6e7bd0e41c673758da084
+DIST futures-macro-0.3.13.crate 9683 BLAKE2B e96b0c047dce0a7123c19d85fbb6e5a073ef8c547ecce48aea5ece04b96d597ea84bf5109c173f3d28802187e3124441b2ec2264c5103706f51a6d634cfc8906 SHA512 11b39bc563bac0cb993a35909270b1c3d62daba1ee5876d2cf8259d1dbc7f26147c399a0dabaad50c7f0a6d0e4ca50d456684ade64cedd009c093c9cf9fe2b38
diff --git a/dev-rust/futures-macro/OWNERS b/dev-rust/futures-macro/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/futures-macro/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/futures-macro/futures-macro-0.3.1.ebuild b/dev-rust/futures-macro/futures-macro-0.3.1.ebuild
deleted file mode 100644
index dee7eef..0000000
--- a/dev-rust/futures-macro/futures-macro-0.3.1.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="The futures-rs procedural macro implementations."
-HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/proc-macro2-1*:=
-	>=dev-rust/proc-macro-hack-0.5.9:= <dev-rust/proc-macro-hack-0.6
-	=dev-rust/quote-1*:=
-	=dev-rust/syn-1*:=
-"
diff --git a/dev-rust/futures-macro/futures-macro-0.3.13.ebuild b/dev-rust/futures-macro/futures-macro-0.3.13.ebuild
new file mode 100644
index 0000000..d18b594
--- /dev/null
+++ b/dev-rust/futures-macro/futures-macro-0.3.13.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="The futures-rs procedural macro implementations."
+HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/proc-macro2-1*:=
+	>=dev-rust/proc-macro-hack-0.5.19:= <dev-rust/proc-macro-hack-0.6
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/futures-sink/Manifest b/dev-rust/futures-sink/Manifest
index 73375f7..70c8bb3 100644
--- a/dev-rust/futures-sink/Manifest
+++ b/dev-rust/futures-sink/Manifest
@@ -1 +1 @@
-DIST futures-sink-0.3.1.crate 7633 BLAKE2B 0b45f103028d48de0a0a0ddf94add80997df47cead5d2a91faee45ecc4297fa8f73735c40d578f9a10b2a2b293aa2f63cb7e2abbd6e821baa3be1db3d85052c2 SHA512 3f014b33eb9b45d7111f8e4876b1844ea52c2d746652d0f2a13ee50a42ecb7a5c776afefda046515f9566f50341336245e21b592b3b3c00e4a92eee31e22fa3f
+DIST futures-sink-0.3.13.crate 7660 BLAKE2B 59877d01be11bcc51b2df4560643287edafa8b319468d42fa1968e8ad42e65017a4884443058e3d6a8ada7e4e7f205f0a522d27ccc0fc36779d17dacf499bc89 SHA512 befc8b6979dc36419fb1c41bde0d8e7cdc66100b14cce54b1ca3d2a676a595d2c2b856448110f1b3e64b2a043b17a5c2304cedc650b41d1d807b9cbaa2380cea
diff --git a/dev-rust/futures-sink/OWNERS b/dev-rust/futures-sink/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/futures-sink/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/futures-sink/futures-sink-0.3.1.ebuild b/dev-rust/futures-sink/futures-sink-0.3.1.ebuild
deleted file mode 100644
index f072842..0000000
--- a/dev-rust/futures-sink/futures-sink-0.3.1.ebuild
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="The asynchronous 'Sink' trait for the futures-rs library."
-HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/futures-sink/futures-sink-0.3.13.ebuild b/dev-rust/futures-sink/futures-sink-0.3.13.ebuild
new file mode 100644
index 0000000..a4f310c
--- /dev/null
+++ b/dev-rust/futures-sink/futures-sink-0.3.13.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="The asynchronous 'Sink' trait for the futures-rs library."
+HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+RDEPEND="!~dev-rust/${PN}-0.3.1"
diff --git a/dev-rust/futures-task/Manifest b/dev-rust/futures-task/Manifest
index f3acc41..6a62615 100644
--- a/dev-rust/futures-task/Manifest
+++ b/dev-rust/futures-task/Manifest
@@ -1 +1 @@
-DIST futures-task-0.3.1.crate 6590 BLAKE2B 0c46610e6b24785427bb181a0d960d638f27c560ec33673600bd0bc34abf31f0270d7991a6a7647e88ec0fd3730bf1aaa3d6e75916e0ec4f26db66eee2288313 SHA512 0d8d8b23a48c5bf9f143c4918b0afd00ee3e898afd1ab092a072adbebbd9e60dd9c21a781735845b6d4de27fdebad7b12e5b715758696f277b0c70b882bd523e
+DIST futures-task-0.3.13.crate 11118 BLAKE2B 84986a8a9c4ffae6b65821d35e63c1574e87410710e8255766c46a6f8f58b5c3d7853d6eb6103f5932b9108c6d4e00c1429a0e469b26371c7e524ff7d14d3814 SHA512 2989781a67a5fad9b7e9320155d01829fe5f2b04f2a2958ba20eb2ba51734b5d1ead3d3abd7ed5051478aefd3938c682e30d87a16a108546a812950ae50363bb
diff --git a/dev-rust/futures-task/OWNERS b/dev-rust/futures-task/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/futures-task/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/futures-task/futures-task-0.3.1.ebuild b/dev-rust/futures-task/futures-task-0.3.1.ebuild
deleted file mode 100644
index a140faf..0000000
--- a/dev-rust/futures-task/futures-task-0.3.1.ebuild
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Tools for working with tasks."
-HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/futures-task/futures-task-0.3.13.ebuild b/dev-rust/futures-task/futures-task-0.3.13.ebuild
new file mode 100644
index 0000000..1c6b318
--- /dev/null
+++ b/dev-rust/futures-task/futures-task-0.3.13.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Tools for working with tasks."
+HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+RDEPEND="!~dev-rust/${PN}-0.3.1"
diff --git a/dev-rust/futures-util/Manifest b/dev-rust/futures-util/Manifest
index 7a57086..b00baac 100644
--- a/dev-rust/futures-util/Manifest
+++ b/dev-rust/futures-util/Manifest
@@ -1 +1 @@
-DIST futures-util-0.3.1.crate 125370 BLAKE2B a21b1e933bb5d85b07584a292862d39365eb89ba7a16336ac99f5e7025c6130f32b585c52755debaac7ffc001cbca08be6670dab7d9f1666275ff0c958100153 SHA512 1f3582175b741679a870bf9c9b174a6a4b9bdf07c93bf6e191765e54421cfba310a053e11caef58a2a129aa8e981787ffc2a5682c329a943240cda4010ffa0e7
+DIST futures-util-0.3.13.crate 138948 BLAKE2B bc19faa2167da4cc2612cece11a99352111d8b74eba9c3701b5e5c6a2c2c9e6f61a3707a58132836d7f55cc7e98ae8ecca84220c2d7421d3254772fe6438e98e SHA512 75db6170eef5ed4f29a0512053ac01baa6aa30dd9f5b6152cd27150cf47eb83f7fa3e4a737b91864460e3d90b1b2ab36895dcb1802b2806252483f4f58a8cfca
diff --git a/dev-rust/futures-util/OWNERS b/dev-rust/futures-util/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/futures-util/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/futures-util/futures-util-0.3.1-r1.ebuild b/dev-rust/futures-util/futures-util-0.3.1-r1.ebuild
deleted file mode 120000
index 0543c9d..0000000
--- a/dev-rust/futures-util/futures-util-0.3.1-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-futures-util-0.3.1.ebuild
\ No newline at end of file
diff --git a/dev-rust/futures-util/futures-util-0.3.1.ebuild b/dev-rust/futures-util/futures-util-0.3.1.ebuild
deleted file mode 100644
index fda8eeb..0000000
--- a/dev-rust/futures-util/futures-util-0.3.1.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Common utilities and extension traits for the futures-rs library."
-HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/futures-core-0.3.1:= <dev-rust/futures-core-0.4
-	>=dev-rust/futures-task-0.3.1:= <dev-rust/futures-task-0.4
-	>=dev-rust/pin-utils-0.1.0_alpha4:= <dev-rust/pin-utils-0.2
-	>=dev-rust/proc-macro-nested-0.1.2:= <dev-rust/proc-macro-nested-0.2
-	>=dev-rust/futures-0.1.25:= <dev-rust/futures-0.2
-	>=dev-rust/futures-channel-0.3.1:= <dev-rust/futures-channel-0.4
-	>=dev-rust/futures-io-0.3.1:= <dev-rust/futures-io-0.4
-	>=dev-rust/futures-macro-0.3.1:= <dev-rust/futures-macro-0.4
-	>=dev-rust/futures-sink-0.3.1:= <dev-rust/futures-sink-0.4
-	>=dev-rust/memchr-2.2:= <dev-rust/memchr-3.0
-	>=dev-rust/proc-macro-hack-0.5.9:= <dev-rust/proc-macro-hack-0.6
-	>=dev-rust/slab-0.4:= <dev-rust/slab-1.0
-	>=dev-rust/tokio-io-0.1.9:= <dev-rust/tokio-io-0.2
-"
diff --git a/dev-rust/futures-util/futures-util-0.3.13-r1.ebuild b/dev-rust/futures-util/futures-util-0.3.13-r1.ebuild
new file mode 120000
index 0000000..e6ed7e8
--- /dev/null
+++ b/dev-rust/futures-util/futures-util-0.3.13-r1.ebuild
@@ -0,0 +1 @@
+futures-util-0.3.13.ebuild
\ No newline at end of file
diff --git a/dev-rust/futures-util/futures-util-0.3.13.ebuild b/dev-rust/futures-util/futures-util-0.3.13.ebuild
new file mode 100644
index 0000000..e96e653
--- /dev/null
+++ b/dev-rust/futures-util/futures-util-0.3.13.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Common utilities and extension traits for the futures-rs library."
+HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/futures-channel-0.3.13:= <dev-rust/futures-channel-0.4
+	>=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4
+	>=dev-rust/futures-io-0.3.13:= <dev-rust/futures-io-0.4
+	>=dev-rust/futures-macro-0.3.13:= <dev-rust/futures-macro-0.4
+	>=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4
+	>=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4
+	>=dev-rust/memchr-2.2:= <dev-rust/memchr-3.0
+	>=dev-rust/pin-utils-0.1.0_alpha4:= <dev-rust/pin-utils-0.2
+	>=dev-rust/pin-project-lite-0.2.4_alpha4:= <dev-rust/pin-project-lite-0.3
+	>=dev-rust/proc-macro-hack-0.5.19:= <dev-rust/proc-macro-hack-0.6
+	>=dev-rust/proc-macro-nested-0.1.2:= <dev-rust/proc-macro-nested-0.2
+	>=dev-rust/slab-0.4.2:= <dev-rust/slab-1.0
+"
+# This DEPEND was removed to break a circular dependency.
+#   ">=dev-rust/tokio-io-0.1.9:= <dev-rust/tokio-io-0.2"
+# It is needed if the io-compat feature is set, an empty crate is substituted to
+# avoid breaking ebuilds that depend on futures-util but do not set io-compat.
+DEPEND+="~dev-rust/tokio-io-0.1.9"
+RDEPEND="
+	${DEPEND}
+	!~dev-rust/${PN}-0.3.1
+"
diff --git a/dev-rust/futures/Manifest b/dev-rust/futures/Manifest
index d0d4925..d12149d 100644
--- a/dev-rust/futures/Manifest
+++ b/dev-rust/futures/Manifest
@@ -1,2 +1,3 @@
 DIST futures-0.1.26.crate 158085 BLAKE2B 95107593ca3fb0d1d0fc21c67b3b6547be6fe5b1cceef79d4031abe034ac589b61d4f7b5c25698f7518f8ff34f5309eb33f2bc743801a93bbe9cd13d99bdd3ff SHA512 9a41029857e6f254565ed93ed42a214b571c8e1d2ed8b8bd7644e1ebb3634d0a41f688f72f543490ffdcf5fab11cd68b838db5558af1a5aa5c7482f81e7534f9
-DIST futures-0.3.1.crate 35695 BLAKE2B 552b2a3e5dcdc0f6f47dcd444b8175d1cf04116091a5fb65d2fea466edba036eeb6a32f7deecaa2976ed89ed63f5476e8d74ee7d668188051dbfd45ed7f5afab SHA512 89f2bfd875debd4ac9e355d588f9b129d0a0c7f82b163f7f68f07de183546e4ee4c174e5d01fa6605cdb78b66f65ec63973bb11327f25b51fd67ba83f49958fb
+DIST futures-0.1.31.crate 157731 BLAKE2B bd1c51f7b5c6018547d1aee3ec550fa55ca955b48c04c8e9e91e5aa944540fa69fe590d2296085d7e772c7aaac37dce00624323bd6e31f92af269dcdbf30d511 SHA512 4be7199261201ef4dcdac5a5a237a70eee33d8fad9a81f76d739f4fc7ad39c87fb2f4719ed7e7a7bc5773c5b51196e4aa4ced5375292198c8d89a03f1692b341
+DIST futures-0.3.13.crate 46969 BLAKE2B a7536b7b472f20c0d8a96de4fe7e0295fc04db5050d3c789ed1bbb8c4acf3ab0ba461fc958141a23b08116ed9180c82b99c297be7e106642fc0a62e7f8933c89 SHA512 51a576148bf707e8b0b0848ff0999ca52c694cff80752b7fbd1b685bec725de17c406f026bb804acca065c21d5707d0968650aecce92dbc6daac53fd798403d4
diff --git a/dev-rust/futures/OWNERS b/dev-rust/futures/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/futures/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/futures/futures-0.1.31.ebuild b/dev-rust/futures/futures-0.1.31.ebuild
new file mode 100644
index 0000000..d8abdf5c
--- /dev/null
+++ b/dev-rust/futures/futures-0.1.31.ebuild
@@ -0,0 +1,20 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="An implementation of futures and streams featuring zero allocations,
+composability, and iterator-like interfaces."
+HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/futures/futures-0.3.1.ebuild b/dev-rust/futures/futures-0.3.1.ebuild
deleted file mode 100644
index 1e4e244..0000000
--- a/dev-rust/futures/futures-0.3.1.ebuild
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="This library is an implementation of zero-cost futures in Rust"
-HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/futures-channel-0.3.1:= <dev-rust/futures-channel-0.4
-	>=dev-rust/futures-core-0.3.1:= <dev-rust/futures-core-0.4
-	>=dev-rust/futures-executor-0.3.1:= <dev-rust/futures-executor-0.4
-	>=dev-rust/futures-util-0.3.1:= <dev-rust/futures-util-0.4
-	>=dev-rust/futures-sink-0.3.1:= <dev-rust/futures-sink-0.4
-	>=dev-rust/futures-macro-0.3.1:= <dev-rust/futures-macro-0.4
-	>=dev-rust/futures-io-0.3.1:= <dev-rust/futures-io-0.4
-"
diff --git a/dev-rust/futures/futures-0.3.13.ebuild b/dev-rust/futures/futures-0.3.13.ebuild
new file mode 100644
index 0000000..7c57cd6
--- /dev/null
+++ b/dev-rust/futures/futures-0.3.13.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="This library is an implementation of zero-cost futures in Rust"
+HOMEPAGE="https://github.com/rust-lang-nursery/futures-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/futures-channel-0.3.13:= <dev-rust/futures-channel-0.4
+	>=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4
+	>=dev-rust/futures-executor-0.3.13:= <dev-rust/futures-executor-0.4
+	>=dev-rust/futures-io-0.3.13:= <dev-rust/futures-io-0.4
+	>=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4
+	>=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4
+	>=dev-rust/futures-util-0.3.13:= <dev-rust/futures-util-0.4
+"
+RDEPEND="${DEPEND}
+	!~dev-rust/${PN}-0.3.1
+"
diff --git a/dev-rust/getopts/Manifest b/dev-rust/getopts/Manifest
index 7dc3fef..ae498e3 100644
--- a/dev-rust/getopts/Manifest
+++ b/dev-rust/getopts/Manifest
@@ -1 +1,2 @@
-DIST getopts-0.2.18.crate 18416 SHA256 0a7292d30132fb5424b354f5dc02512a86e4c516fe544bb7a25e7f266951b797 SHA512 68236eda2645c92e09fe4f7408dc8fc07d7f143bcfc179d297b307ceea0420dd999586deb37fa4600e929228db5cf2c6f1217aecca500b4f5534ebd934b6dacc WHIRLPOOL 24de644b3dd9c424a280becfb0926f94675bcffa2c06ee2d9bf00f4a886fe3b0fbd358f07b856b7e806930b853a423678cf1291905019d34756c8895b9a048a7
+DIST getopts-0.2.18.crate 18416 BLAKE2B e90b0cd8fb5dc33076e98833a03713c35b50cae6a5dfc542e4b28627221fb40082bfdefae61888d7856a3b684d4ec4c2dfa55c961abadbbbf035738926215741 SHA512 68236eda2645c92e09fe4f7408dc8fc07d7f143bcfc179d297b307ceea0420dd999586deb37fa4600e929228db5cf2c6f1217aecca500b4f5534ebd934b6dacc
+DIST getopts-0.2.21.crate 18457 BLAKE2B 10651e947e49acc768d99ae56ca5a7f37c1f61bbd1674e2ca58e3ae563fd64f3563d53ccdd0ae7a878710a39e13a99ac8c274974157db2c691f8c222de14992d SHA512 5515ae6ccb0f03efb783683f46cfd1755342c4e83bb673ff8914c7f9dea0dae333f8d9703865e992659a359067df0e8b0e2253de0d4b0c7707cbe7d73401bb1f
diff --git a/dev-rust/getopts/getopts-0.2.21.ebuild b/dev-rust/getopts/getopts-0.2.21.ebuild
new file mode 100644
index 0000000..41ad465
--- /dev/null
+++ b/dev-rust/getopts/getopts-0.2.21.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="getopts-like option parsing."
+HOMEPAGE="https://github.com/rust-lang/getopts"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/rustc-std-workspace-core-1*:=
+	=dev-rust/rustc-std-workspace-std-1*:=
+	>=dev-rust/unicode-width-0.1.5:= <dev-rust/unicode-width-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/hashbrown/Manifest b/dev-rust/hashbrown/Manifest
index 0b83d2f..8e135a8 100644
--- a/dev-rust/hashbrown/Manifest
+++ b/dev-rust/hashbrown/Manifest
@@ -1 +1,2 @@
 DIST hashbrown-0.1.7.crate 38641 BLAKE2B 942d0d8397299c23fb0bd4b98bcbe2b15be78b9cae3f5d46aa322a0d1fbeafb98a37597d5b04f4597932026354f980fac27bdf4cc36cc0cbe48842477bead81b SHA512 849a33fd4ea32d93f26a20b1334aeeda047465e6534ef9fd9bf5b2c2ae83ecdb5e0caa2d08ced08082318b30ee984b7de8d461bcf8f7a4e8e97bdf685c3b716a
+DIST hashbrown-0.9.1.crate 77734 BLAKE2B d59002253112cf92173c3c1b305fd03fb7318ef187d7e033433baf6a354db046d1f3fe0387b3cf500fbcc0f83d2b2076527ba7cda2695f7627eca0bc3e3487c1 SHA512 dfa4742111f6fe757b7fa97f04c7b4a78ce9708c87e8e09ecf3c28f2566e48af9885fda380ed918cec37b5c696110fbdd30273aba6e7d2221c9e65f72af064fd
diff --git a/dev-rust/hashbrown/hashbrown-0.9.1.ebuild b/dev-rust/hashbrown/hashbrown-0.9.1.ebuild
new file mode 100644
index 0000000..d701915
--- /dev/null
+++ b/dev-rust/hashbrown/hashbrown-0.9.1.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A Rust port of Google's SwissTable hash map"
+HOMEPAGE="https://crates.io/crates/hashbrown"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/ahash-0.4.4:= <dev-rust/ahash-0.5.0
+	=dev-rust/rustc-std-workspace-alloc-1*:=
+	>=dev-rust/compiler_builtins-0.1.2:= <dev-rust/compiler_builtins-0.2.0
+	=dev-rust/rustc-std-workspace-core-1*:=
+	=dev-rust/rayon-1*:=
+	>=dev-rust/serde-1.0.25:= <dev-rust/serde-2.0.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/http/http-0.1.17.ebuild b/dev-rust/http/http-0.1.17.ebuild
deleted file mode 100644
index 072e90c..0000000
--- a/dev-rust/http/http-0.1.17.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_EMPTY_CRATE=1
-
-inherit cros-rust
-
-DESCRIPTION="Empty ${PN} crate"
-HOMEPAGE=""
-
-LICENSE="BSD-Google"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/humantime/Manifest b/dev-rust/humantime/Manifest
index cb2970e..de317ae 100644
--- a/dev-rust/humantime/Manifest
+++ b/dev-rust/humantime/Manifest
@@ -1,2 +1,2 @@
 DIST humantime-1.1.1.crate 16689 BLAKE2B fe9d8ef8ad396bb8452f1e28c4a122e3918c61042f0cee8c5769683f9b321f82514474a100aecc5bfc39422bfaadacfb35bf9f14bd3814d1de62fd0b7517e67e SHA512 b18608d088519df5e0c531c8756635f41bb6515ed7463891e6145b9a78ca2bc45c0698789015c093463c704b240434d1b54ab327fc4182a06a8b1d01f50430c6
-DIST humantime-2.0.1.crate 17381 BLAKE2B 254f2bc0ea87123b49c22e95ff2218abb5f611918ae5419b960b472ce3402c5baf9d66c3a586b0ad9b10639473a0dcb660b8a8d79f86e5d6bd48768cc6aeb0f8 SHA512 c3cb464801fcbeea7c04e148cda2467386b7f008642d2641bdffab85784c16aa2708e847740772674d62b746c66d404e3b8307ebaa9c2df836fb58b3b0278e62
+DIST humantime-2.1.0.crate 16749 BLAKE2B e2ae8325b037fb175b9200cc5c1944ce579056c6662cce307beb6701894552362a25e371aad65f8fb9384945b48815ca74bb8b544a32e0a5845b7edd30b918c9 SHA512 3bf29ddd1391d82897c22baa0ff3ed58ef6d6959859f1f8ed54d324caba5b6fb4422e56790511ce82f902cd11467f93c8ab7fc7b0e0bdb719308a4d0a446ae0c
diff --git a/dev-rust/humantime/humantime-2.0.1.ebuild b/dev-rust/humantime/humantime-2.0.1.ebuild
deleted file mode 100644
index 80964b2..0000000
--- a/dev-rust/humantime/humantime-2.0.1.ebuild
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-inherit cros-rust
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-DESCRIPTION="Human-friendly time parser and formatter."
-HOMEPAGE="https://github.com/tailhook/humantime"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/humantime/humantime-2.1.0.ebuild b/dev-rust/humantime/humantime-2.1.0.ebuild
new file mode 100644
index 0000000..3a86340
--- /dev/null
+++ b/dev-rust/humantime/humantime-2.1.0.ebuild
@@ -0,0 +1,19 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A parser and formatter for std::time::{Duration, SystemTime}"
+HOMEPAGE="https://github.com/tailhook/humantime"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/hyper/hyper-0.12.27.ebuild b/dev-rust/hyper/hyper-0.12.27.ebuild
deleted file mode 100644
index 072e90c..0000000
--- a/dev-rust/hyper/hyper-0.12.27.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_EMPTY_CRATE=1
-
-inherit cros-rust
-
-DESCRIPTION="Empty ${PN} crate"
-HOMEPAGE=""
-
-LICENSE="BSD-Google"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/indexmap/Manifest b/dev-rust/indexmap/Manifest
index 180add6..d800daf 100644
--- a/dev-rust/indexmap/Manifest
+++ b/dev-rust/indexmap/Manifest
@@ -1 +1,2 @@
 DIST indexmap-1.0.2.crate 38255 BLAKE2B 78d99087e4f282fe4e4789c131621bfe5d873be801cc105629aa8932a3e4c8a519180560b0bd83463d808eb3b75194b551e39166260a1b9056e822fac07fed94 SHA512 cfae9d222efcce9ab15c5a8368db2865fbdb6819b4fc317ca0aed55c32ea312b5c5ca13130d4aabf08af1803c34d465a1a1209dabbce37e7a1a911faf5cfcfe8
+DIST indexmap-1.6.2.crate 50225 BLAKE2B 38f40c5aae0c5dc5da515e610007983b2d581994293f2eac747a3fd78c9cefb9faff64555e0c6dda146e9d1332d59f23c353c6758e63f99b6c4676123723ec67 SHA512 1509b6aa6b3b84fa15b98026052f6d5f0f1aedd065b02b24e31b799f8db68d5770e9a8302ef10e1ad16817256dbc03c55593928a48eddb252d25de7e0b7e6406
diff --git a/dev-rust/indexmap/indexmap-1.0.0.ebuild b/dev-rust/indexmap/indexmap-1.0.0.ebuild
deleted file mode 100644
index 032fa9f..0000000
--- a/dev-rust/indexmap/indexmap-1.0.0.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_EMPTY_CRATE=1
-
-inherit cros-rust
-
-DESCRIPTION="Empty ${PN} crate"
-HOMEPAGE=""
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/indexmap/indexmap-1.6.2.ebuild b/dev-rust/indexmap/indexmap-1.6.2.ebuild
new file mode 100644
index 0000000..439edb6
--- /dev/null
+++ b/dev-rust/indexmap/indexmap-1.6.2.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A hash table with consistent order and fast iteration.
+
+The indexmap is a hash table where the iteration order of the key-value
+pairs is independent of the hash values of the keys. It has the usual
+hash table functionality, it preserves insertion order except after
+removals, and it allows lookup of its elements by either hash table key
+or numerical index. A corresponding hash set type is also provided.
+
+This crate was initially published under the name ordermap, but it was renamed to
+indexmap."
+HOMEPAGE="https://crates.io/crates/indexmap"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/hashbrown-0.9.1:= <dev-rust/hashbrown-0.10.0
+	=dev-rust/rayon-1*:=
+	=dev-rust/serde-1*:=
+	=dev-rust/autocfg-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/io_uring/OWNERS b/dev-rust/io_uring/OWNERS
new file mode 100644
index 0000000..0edda31
--- /dev/null
+++ b/dev-rust/io_uring/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:/OWNERS
diff --git a/dev-rust/io_uring/files/chromeos-version.sh b/dev-rust/io_uring/files/chromeos-version.sh
new file mode 100755
index 0000000..ecbdcfa
--- /dev/null
+++ b/dev-rust/io_uring/files/chromeos-version.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# Copyright 2021 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.
+
+# Assumes the first 'version =' line in the Cargo.toml is the version for the
+# crate.
+awk '/^version = / { print $3 }' "$1/io_uring/Cargo.toml" | head -n1 | tr -d '"'
diff --git a/dev-rust/io_uring/io_uring-0.1.0-r6.ebuild b/dev-rust/io_uring/io_uring-0.1.0-r6.ebuild
new file mode 100644
index 0000000..b076316e
--- /dev/null
+++ b/dev-rust/io_uring/io_uring-0.1.0-r6.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="113ae363f9783edddc4447749fbb9d99a9866c73"
+CROS_WORKON_TREE="3964a781d4aac3a0649b24bcce48011fda8c459a"
+CROS_WORKON_LOCALNAME="../platform/crosvm"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="io_uring"
+CROS_WORKON_SUBDIRS_TO_COPY="io_uring"
+
+# TODO: Enable tests on ARM once the emulator supports io_uring.
+CROS_RUST_TEST_DIRECT_EXEC_ONLY="yes"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Safe wrappers around the linux kernel's io_uring interface"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/io_uring"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+DEPEND="
+	dev-rust/data_model:=
+	>=dev-rust/libc-0.2.93:=
+	dev-rust/sync:=
+	dev-rust/sys_util:=
+	dev-rust/tempfile:=
+"
+RDEPEND="${DEPEND}"
+
+src_test() {
+	# The io_uring implementation on kernels older than 5.10 was buggy so skip
+	# them if we're running on one of those kernels.
+	local cut_version="$(ver_cut 1-2 "$(uname -r)")"
+	if ver_test "${cut_version}" -lt 5.10; then
+		einfo "Skipping io_uring tests on kernel version < 5.10"
+	else
+		cros-rust_src_test
+	fi
+}
diff --git a/dev-rust/io_uring/io_uring-9999.ebuild b/dev-rust/io_uring/io_uring-9999.ebuild
new file mode 100644
index 0000000..ae33066
--- /dev/null
+++ b/dev-rust/io_uring/io_uring-9999.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_LOCALNAME="../platform/crosvm"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="io_uring"
+CROS_WORKON_SUBDIRS_TO_COPY="io_uring"
+
+# TODO: Enable tests on ARM once the emulator supports io_uring.
+CROS_RUST_TEST_DIRECT_EXEC_ONLY="yes"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Safe wrappers around the linux kernel's io_uring interface"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/io_uring"
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+
+DEPEND="
+	dev-rust/data_model:=
+	>=dev-rust/libc-0.2.93:=
+	dev-rust/sync:=
+	dev-rust/sys_util:=
+	dev-rust/tempfile:=
+"
+RDEPEND="${DEPEND}"
+
+src_test() {
+	# The io_uring implementation on kernels older than 5.10 was buggy so skip
+	# them if we're running on one of those kernels.
+	local cut_version="$(ver_cut 1-2 "$(uname -r)")"
+	if ver_test "${cut_version}" -lt 5.10; then
+		einfo "Skipping io_uring tests on kernel version < 5.10"
+	else
+		cros-rust_src_test
+	fi
+}
diff --git a/dev-rust/iovec/Manifest b/dev-rust/iovec/Manifest
index ac3100d..6623d1c 100644
--- a/dev-rust/iovec/Manifest
+++ b/dev-rust/iovec/Manifest
@@ -1 +1,2 @@
 DIST iovec-0.1.2.crate 8565 BLAKE2B c1ff225d7e8cb8b7efc2be01763740c4f0c1188a5f1f27c5fd3fc34104b2280bee59915d71812756bfd36832fb807374d531792936ed8a7228d52ab98d622a50 SHA512 3e523bcb8b9891be66398f44c97933d246b7a7fbfc4f315bfda6cdb22ca2786ccc82139ee1b646b4c24f6f50f57fba38f9b1fb7c75e859722e9e9c789b458223
+DIST iovec-0.1.4.crate 8720 BLAKE2B aa1b4cd98ebe47901c0959cf1d8eb2586a803d0453e2a8bdd5c63442b32886dbcb37650aa218c748fd45c9fe3a7fdf20569eae5b19716487b139caae1526da4c SHA512 e23fcaac239807daea20ddcf2cdd4fb858ba1aa970ce6248f70f0fba5bff7ebdb27247c0997ac0ff2791178f86ff9657e473d8f64b86c644763e5b3474edd158
diff --git a/dev-rust/iovec/iovec-0.1.4.ebuild b/dev-rust/iovec/iovec-0.1.4.ebuild
new file mode 100644
index 0000000..8da8c6f
--- /dev/null
+++ b/dev-rust/iovec/iovec-0.1.4.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Portable buffer type for scatter/gather I/O operations"
+HOMEPAGE="https://github.com/carllerche/iovec"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/libc-0.2*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/itoa/Manifest b/dev-rust/itoa/Manifest
index 8916e7e..bf0e6f9 100644
--- a/dev-rust/itoa/Manifest
+++ b/dev-rust/itoa/Manifest
@@ -1 +1,2 @@
 DIST itoa-0.4.4.crate 11147 BLAKE2B bb6f1caf1e58dc313bd3cfa2cf81252cb2ebc15e1f4c9adfcdedf46c5fa79811d5b0cbd58f1e91d1f62bf85d7b941b0dba535814fb43b5b70a38db791b45717c SHA512 f5e04bd908457e7592243ce64a99c5283428b767f4cc17d77946770411b06fccb0250625263c3e84a02a018ea7e8a0e4216e1929a71988bab8e1dbf603d3801d
+DIST itoa-0.4.7.crate 12099 BLAKE2B 0e4ffbaad504565056f74c3ef560a87eff321a0da6d7a2c8fa35813c207713c22d77080c3b830fefbb21370dd29cfbc6a2807044485b38ac1e0c9c1de3ccebc5 SHA512 c61eb50aa00591af28698b45c528c36bd92088f7cd2f453cf686a1824f4656292638bebc468cf67f903473a5045f22777af623cc0515ef3bf25146b89a7c454f
diff --git a/dev-rust/itoa/itoa-0.4.7.ebuild b/dev-rust/itoa/itoa-0.4.7.ebuild
new file mode 100644
index 0000000..4cd42d0
--- /dev/null
+++ b/dev-rust/itoa/itoa-0.4.7.ebuild
@@ -0,0 +1,19 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Fast functions for printing integer primitives to an io::Write"
+HOMEPAGE="https://crates.io/crates/itoa"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/junit-report/Manifest b/dev-rust/junit-report/Manifest
new file mode 100644
index 0000000..a448dd9
--- /dev/null
+++ b/dev-rust/junit-report/Manifest
@@ -0,0 +1 @@
+DIST junit-report-0.4.0.crate 10224 BLAKE2B f5a15ade5e2f94cc3b5f1df407958dcd4fd26b94ccc18741439511e6697a57984ac93a64c4904b7ab6b8bfe8a010c8774e91f30c5f1b7ba5c6dfc0ed69ba699c SHA512 19c2bb20f36238fb53dfa05b7c7dc0f45e1009eeb09dfe42baf72fa89156b2d0052158052fa59d1827068b9569739d3f337583f1f8ce4dee3c660dd1e7c02749
diff --git a/dev-rust/junit-report/OWNERS b/dev-rust/junit-report/OWNERS
new file mode 100644
index 0000000..12f21f8
--- /dev/null
+++ b/dev-rust/junit-report/OWNERS
@@ -0,0 +1 @@
+include /media-gfx/deqp-runner/OWNERS
diff --git a/dev-rust/junit-report/junit-report-0.4.0.ebuild b/dev-rust/junit-report/junit-report-0.4.0.ebuild
new file mode 100644
index 0000000..4344adb
--- /dev/null
+++ b/dev-rust/junit-report/junit-report-0.4.0.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Generate JUnit compatible XML reports in Rust."
+HOMEPAGE="https://github.com/bachp/junit-report-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/chrono-0.4.11:= <dev-rust/chrono-0.5.0
+	=dev-rust/derive-getters-0.1*:=
+	>=dev-rust/thiserror-1.0.19:= <dev-rust/thiserror-2
+	>=dev-rust/xml-rs-0.8.3:= <dev-rust/xml-rs-0.9
+"
diff --git a/dev-rust/lazy_static/lazy_static-1.4.0-r1.ebuild b/dev-rust/lazy_static/lazy_static-1.4.0-r1.ebuild
new file mode 100644
index 0000000..701779d
--- /dev/null
+++ b/dev-rust/lazy_static/lazy_static-1.4.0-r1.ebuild
@@ -0,0 +1,21 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="A macro for declaring lazily evaluated statics in Rust."
+HOMEPAGE="https://github.com/rust-lang-nursery/lazy-static.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+DEPEND="
+	=dev-rust/spin-0.5*:=
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/libc/Manifest b/dev-rust/libc/Manifest
index d5ac11c..4b82bb9 100644
--- a/dev-rust/libc/Manifest
+++ b/dev-rust/libc/Manifest
@@ -1,3 +1 @@
-DIST libc-0.2.65.crate 439610 BLAKE2B a6390172ac5a76bb13860ffe0793a40fd6a74c7947c164ab1a033401473caaf77cc85bd578a37411d5f40bdeb13358a4810ac358a76799b24f7b797b2bde9915 SHA512 a5df4f7efae9dfdedeb140e3fec545135c7533f665f4eec61f071d01f40a2079e104c6a837c2b385aac4b306e4ddde34aa857fabb4a7ea7d7780159bc0b83c40
-DIST libc-0.2.74.crate 503397 BLAKE2B b38c932a29de204e9cdbae39fcdbd1a054256e8c0f37227ba71bffbc133d80bb68d34f4011fc83db7300254c381fe0855e1df19db2dd75234a5ee029f1ea9e63 SHA512 6aa984cd325bfa37736d3afe4518093468927607daf7b12bd8a5a396d2ec3740876504ab4a2a622c5e7caa9872f31263a42ce53f10c15f61f9e45891eaf41df1
-DIST libc-0.2.80.crate 513503 BLAKE2B d4bb5f789efa230ec9a7a2071652fc1e344669e5dfe3a2015694a1e8442cd5adc142f1374841a4f01984f132f0ad5f027913b201cd624f97e93d2bba31ad96a0 SHA512 69b2f4c67d29bd4fc8f6d0388036ac3ea0de2ba7387f56f4e4bd035696ba313fdce10d18107ef83490f574d6fff796b305d5f2c2bb03a7cf33b9136386e65b8c
+DIST libc-0.2.94.crate 511713 BLAKE2B 6ad3fe9aa5ea5fb06a7b2beeb68fa245e5ed7d19aa7e4b21c9e2ab73da11a9249913e604f0f87fbcc82676cceee16f14403cd2f27ae462730e1682c539666283 SHA512 316717d2e46b57c200d67d0ebb4fb162cb1f0b688895b9eb6075924cda3be8ba7fae85319692682178b6fc5cb2764e8b3a9d3e7ce234fd8a21a0a9c453ca174c
diff --git a/dev-rust/libc/libc-0.2.65.ebuild b/dev-rust/libc/libc-0.2.65.ebuild
deleted file mode 100644
index 2490e1f..0000000
--- a/dev-rust/libc/libc-0.2.65.ebuild
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="A Rust library with native bindings to the types and functions commonly found on various systems, including libc"
-HOMEPAGE="https://github.com/rust-lang/libc"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/rustc-std-workspace-core-1.0.0:=
-"
diff --git a/dev-rust/libc/libc-0.2.74.ebuild b/dev-rust/libc/libc-0.2.74.ebuild
deleted file mode 100644
index 2490e1f..0000000
--- a/dev-rust/libc/libc-0.2.74.ebuild
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="A Rust library with native bindings to the types and functions commonly found on various systems, including libc"
-HOMEPAGE="https://github.com/rust-lang/libc"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/rustc-std-workspace-core-1.0.0:=
-"
diff --git a/dev-rust/libc/libc-0.2.80.ebuild b/dev-rust/libc/libc-0.2.80.ebuild
deleted file mode 100644
index 5eed151..0000000
--- a/dev-rust/libc/libc-0.2.80.ebuild
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-inherit cros-rust
-
-DESCRIPTION="A Rust library with native bindings to the types and functions commonly found on various systems, including libc"
-HOMEPAGE="https://github.com/rust-lang/libc"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/rustc-std-workspace-core-1*:=
-"
diff --git a/dev-rust/libc/libc-0.2.94.ebuild b/dev-rust/libc/libc-0.2.94.ebuild
new file mode 100644
index 0000000..cf58e4e
--- /dev/null
+++ b/dev-rust/libc/libc-0.2.94.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Raw FFI bindings to platform libraries like libc."
+HOMEPAGE="https://github.com/rust-lang/libc"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/rustc-std-workspace-core-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/libchromeos/libchromeos-0.1.0-r32.ebuild b/dev-rust/libchromeos/libchromeos-0.1.0-r32.ebuild
deleted file mode 100644
index 188d1a6..0000000
--- a/dev-rust/libchromeos/libchromeos-0.1.0-r32.ebuild
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# TODO(crbug.com/1157860) Enable non x86_64 tests.
-CROS_WORKON_COMMIT="b0673d8ae00f482e096844e127a0423cc6390ad3"
-CROS_WORKON_TREE="d4ef272515c32732b2b0f1d81a46936e640b0d39"
-CROS_RUST_TEST_DIRECT_EXEC_ONLY="yes"
-CROS_RUST_SUBDIR="libchromeos-rs"
-
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="A Rust utility library for Chrome OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libchromeos-rs/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-COMMON_DEPEND="chromeos-base/vboot_reference:="
-
-DEPEND="${COMMON_DEPEND}
-	dev-rust/data_model:=
-	=dev-rust/futures-0.3*:=
-	=dev-rust/getopts-0.2*:=
-	=dev-rust/intrusive-collections-0.9*:=
-	=dev-rust/libc-0.2*:=
-	=dev-rust/log-0.4*:=
-	>=dev-rust/pkg-config-0.3.11:= <dev-rust/pkg-config-0.4.0:=
-	>=dev-rust/protobuf-2.1:= !>=dev-rust/protobuf-3.0:=
-	dev-rust/system_api:=
-	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0.0
-"
-
-RDEPEND="${COMMON_DEPEND}
-	!!<=dev-rust/libchromeos-0.1.0-r2"
-
-src_compile() {
-	# Make sure the build works with default features.
-	ecargo_build
-	# Also check that the build works with all features.
-	ecargo_build --all-features
-	use test && cros-rust_src_test --no-run --all-features
-}
-
-src_test() {
-	cros-rust_src_test --all-features -- --test-threads=1
-}
diff --git a/dev-rust/libchromeos/libchromeos-0.1.0-r48.ebuild b/dev-rust/libchromeos/libchromeos-0.1.0-r48.ebuild
new file mode 100644
index 0000000..0279da4
--- /dev/null
+++ b/dev-rust/libchromeos/libchromeos-0.1.0-r48.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="9cc4613a8d17f572b879950084c8dbcae5978527"
+CROS_WORKON_TREE="9fc61789a553775b1e6e521274f32ec89920b1d8"
+CROS_RUST_SUBDIR="libchromeos-rs"
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="A Rust utility library for Chrome OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libchromeos-rs/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+COMMON_DEPEND="chromeos-base/vboot_reference:="
+
+DEPEND="${COMMON_DEPEND}
+	dev-rust/data_model:=
+	=dev-rust/futures-0.3*:=
+	=dev-rust/getopts-0.2*:=
+	=dev-rust/intrusive-collections-0.9*:=
+	>=dev-rust/lazy_static-1.4.0:= <dev-rust/lazy_static-2.0.0
+	=dev-rust/libc-0.2*:=
+	=dev-rust/log-0.4*:=
+	>=dev-rust/pkg-config-0.3.11:= <dev-rust/pkg-config-0.4.0:=
+	>=dev-rust/protobuf-2.1:= !>=dev-rust/protobuf-3.0:=
+	dev-rust/sys_util:=
+	dev-rust/system_api:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0.0
+	>=dev-rust/zeroize-1.2.0:= <dev-rust/zeroize-2.0.0
+"
+
+RDEPEND="${COMMON_DEPEND}
+	!!<=dev-rust/libchromeos-0.1.0-r2"
+
+src_compile() {
+	# Make sure the build works with default features.
+	ecargo_build
+	# Also check that the build works with all features.
+	ecargo_build --all-features
+	use test && cros-rust_src_test --no-run --all-features
+}
+
+src_test() {
+	cros-rust_src_test --all-features -- --test-threads=1
+}
diff --git a/dev-rust/libchromeos/libchromeos-9999.ebuild b/dev-rust/libchromeos/libchromeos-9999.ebuild
index a4c6720..446295d 100644
--- a/dev-rust/libchromeos/libchromeos-9999.ebuild
+++ b/dev-rust/libchromeos/libchromeos-9999.ebuild
@@ -3,10 +3,9 @@
 
 EAPI=7
 
-# TODO(crbug.com/1157860) Enable non x86_64 tests.
-CROS_RUST_TEST_DIRECT_EXEC_ONLY="yes"
 CROS_RUST_SUBDIR="libchromeos-rs"
 
+CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
@@ -27,12 +26,15 @@
 	=dev-rust/futures-0.3*:=
 	=dev-rust/getopts-0.2*:=
 	=dev-rust/intrusive-collections-0.9*:=
+	>=dev-rust/lazy_static-1.4.0:= <dev-rust/lazy_static-2.0.0
 	=dev-rust/libc-0.2*:=
 	=dev-rust/log-0.4*:=
 	>=dev-rust/pkg-config-0.3.11:= <dev-rust/pkg-config-0.4.0:=
 	>=dev-rust/protobuf-2.1:= !>=dev-rust/protobuf-3.0:=
+	dev-rust/sys_util:=
 	dev-rust/system_api:=
 	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0.0
+	>=dev-rust/zeroize-1.2.0:= <dev-rust/zeroize-2.0.0
 "
 
 RDEPEND="${COMMON_DEPEND}
diff --git a/dev-rust/libloading/Manifest b/dev-rust/libloading/Manifest
index c25d983..708225d 100644
--- a/dev-rust/libloading/Manifest
+++ b/dev-rust/libloading/Manifest
@@ -1 +1 @@
-DIST libloading-0.6.5.crate 23998 BLAKE2B c1fbef198c83e794067b02ea37b3644d7a5dfe31aaeaf810e8338e0f657707caa4b08145e33483f895082110b0cb59e6b0a166197b3349ead52af39bb31f6012 SHA512 8821e67d8f212e90a33a120b095963ed2c3e862b57c8da1500491343324f6de1081ffa99cf3436a8eabd6da528e788bf4ccc7cdac4f347d94e5675c8f6917d3f
+DIST libloading-0.7.0.crate 26216 BLAKE2B 83827746f57fb5f1819aa0ccce0ffd698a3ed4b85ef0e954741691003c843ca877de81b4a97ad7c53d28f79701a5caf2fee801a68c015d19c20230f2560b5fc3 SHA512 e2089a8ecacd65522b246cebcf531b6b1ce697d4eaf294e0540e1f34bfd714037177ba802406c31e6bcc722b4f391a84709427de1c6fb441cdeb8e41fd4f1e28
diff --git a/dev-rust/libloading/libloading-0.6.5.ebuild b/dev-rust/libloading/libloading-0.6.5.ebuild
deleted file mode 100644
index d1eb463..0000000
--- a/dev-rust/libloading/libloading-0.6.5.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="A safer binding to platform's dynamic library loading utilities"
-HOMEPAGE="https://github.com/nagisa/rust_libloading/"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="ISC"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/cfg-if-1*:=
-	=dev-rust/winapi-0.3*:=
-"
diff --git a/dev-rust/libloading/libloading-0.7.0.ebuild b/dev-rust/libloading/libloading-0.7.0.ebuild
new file mode 100644
index 0000000..a1cb7f5
--- /dev/null
+++ b/dev-rust/libloading/libloading-0.7.0.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+CROS_RUST_REMOVE_TARGET_CFG=1
+
+inherit cros-rust
+
+DESCRIPTION="A safer binding to platform’s dynamic library loading utilities"
+HOMEPAGE="https://crates.io/crates/libloading"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="ISC"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/cfg-if-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/libusb1-sys/libusb1-sys-0.3.7-r1.ebuild b/dev-rust/libusb1-sys/libusb1-sys-0.3.7-r2.ebuild
similarity index 100%
rename from dev-rust/libusb1-sys/libusb1-sys-0.3.7-r1.ebuild
rename to dev-rust/libusb1-sys/libusb1-sys-0.3.7-r2.ebuild
diff --git a/dev-rust/libusb1-sys/libusb1-sys-0.3.7.ebuild b/dev-rust/libusb1-sys/libusb1-sys-0.3.7.ebuild
index 715c2c5..b43bc7d 100644
--- a/dev-rust/libusb1-sys/libusb1-sys-0.3.7.ebuild
+++ b/dev-rust/libusb1-sys/libusb1-sys-0.3.7.ebuild
@@ -20,5 +20,9 @@
 )
 
 DEPEND="
+	=dev-rust/libc-0.2*:=
 	=dev-rust/pkg-config-0.3*:=
 "
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/libvda/libvda-0.1.0-r24.ebuild b/dev-rust/libvda/libvda-0.1.0-r24.ebuild
deleted file mode 100644
index 71ae24a..0000000
--- a/dev-rust/libvda/libvda-0.1.0-r24.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="cc55fd248b036e2a2feb8a746fb07cb370563dbc"
-CROS_WORKON_TREE="ef853e60ca368159e6086ff7ad9b3c9a9629af5c"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-# We don't use CROS_WORKON_OUTOFTREE_BUILD here since project's Cargo.toml is
-# using "provided by ebuild" macro which supported by cros-rust.
-CROS_WORKON_SUBTREE="arc/vm/libvda/rust"
-
-CROS_RUST_SUBDIR="arc/vm/libvda/rust"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Rust wrapper for chromeos-base/libvda"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda/rust"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-RDEPEND="
-	chromeos-base/libvda:=
-	!!<=dev-rust/libvda-0.0.1-r5
-"
-
-DEPEND="
-	${RDEPEND}
-	dev-rust/pkg-config:=
-	dev-rust/enumn:=
-"
-
-src_test() {
-	local test_args
-	if ! use amd64; then
-		# (b/174605753) Skip x86_64 specific tests.
-		test_args=(
-			"--"
-			"--skip" "bindgen_test_layout_vda_capabilities"
-			"--skip" "bindgen_test_layout_vda_session_info"
-			"--skip" "bindgen_test_layout_vea_capabilities"
-			"--skip" "bindgen_test_layout_vea_session_info"
-		)
-	fi
-	cros-rust_src_test "${test_args[@]}"
-}
diff --git a/dev-rust/libvda/libvda-0.1.0-r28.ebuild b/dev-rust/libvda/libvda-0.1.0-r28.ebuild
new file mode 100644
index 0000000..240ea57
--- /dev/null
+++ b/dev-rust/libvda/libvda-0.1.0-r28.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="3f56d133538060f7ed53b01de8b11a1783fad37b"
+CROS_WORKON_TREE="142c68f4879301817d9f64b7ff516acdda20e554"
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since project's Cargo.toml is
+# using "provided by ebuild" macro which supported by cros-rust.
+CROS_WORKON_SUBTREE="arc/vm/libvda/rust"
+
+CROS_RUST_SUBDIR="arc/vm/libvda/rust"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Rust wrapper for chromeos-base/libvda"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda/rust"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+# ebuilds that install executables and depend on dev-rust/libvda need to RDEPEND
+# on chromeos-base/libvda.
+DEPEND="chromeos-base/libvda:=
+	dev-rust/pkg-config:=
+	dev-rust/enumn:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/libvda-0.0.1-r5
+"
+
+src_test() {
+	local test_args
+	if ! use amd64; then
+		# (b/174605753) Skip x86_64 specific tests.
+		test_args=(
+			"--"
+			"--skip" "bindgen_test_layout_vda_capabilities"
+			"--skip" "bindgen_test_layout_vda_session_info"
+			"--skip" "bindgen_test_layout_vea_capabilities"
+			"--skip" "bindgen_test_layout_vea_session_info"
+		)
+	fi
+	cros-rust_src_test "${test_args[@]}"
+}
diff --git a/dev-rust/libvda/libvda-9999.ebuild b/dev-rust/libvda/libvda-9999.ebuild
index 44416da..9513768 100644
--- a/dev-rust/libvda/libvda-9999.ebuild
+++ b/dev-rust/libvda/libvda-9999.ebuild
@@ -20,16 +20,17 @@
 KEYWORDS="~*"
 IUSE="test"
 
-RDEPEND="
-	chromeos-base/libvda:=
-	!!<=dev-rust/libvda-0.0.1-r5
-"
-
-DEPEND="
-	${RDEPEND}
+# ebuilds that install executables and depend on dev-rust/libvda need to RDEPEND
+# on chromeos-base/libvda.
+DEPEND="chromeos-base/libvda:=
 	dev-rust/pkg-config:=
 	dev-rust/enumn:=
 "
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/libvda-0.0.1-r5
+"
 
 src_test() {
 	local test_args
diff --git a/dev-rust/libz-sys/Manifest b/dev-rust/libz-sys/Manifest
index ed7fcc0..abc2196 100644
--- a/dev-rust/libz-sys/Manifest
+++ b/dev-rust/libz-sys/Manifest
@@ -1,2 +1 @@
-DIST libz-sys-1.0.25.crate 650151 BLAKE2B dc11dc65c95f6c1f409ffbd0c9b12a809eaca5899da1073d8f302a752f9bb538b419cdf2f540b34b6f72c7ac36719e8fe21a1480533829cee305019304523520 SHA512 3c1d0754230c327876fadbaf3770f52282fedc6b373c92fba386a80261c577f6bea2983db7d3a40a231fbcfee40e560d8f738d25b634d270e2132b3162497547
-DIST libz-sys-1.0.18.crate 632715 BLAKE2B 3c88d321f22d8c49a17d2af04361792247f7590e4b21163033e5de7b726b75f91ee15d4e9a8824f4ae894ab8a1856c637982e5f1c70de8dbd543b75de2d1af94 SHA512 fcc9e5bd9ffd5eb4f302d3c271f86370f04fe9fcb3b818ac8d605241a701e9d0c40cfe729ad8fcbe7bbb07df66539503415a00360c56831a511142ff225d0d8c
+DIST libz-sys-1.1.2.crate 1339299 BLAKE2B c055fdcdeaff5d44cc95f6cef190094317644e4881f356e46b0c0347221ffb867afcd29ecd4d995bf397f714b705ce84cf34ab87010770e00b3aed1956fa46a0 SHA512 2342c738230ac570c61b466920e2ceafc0194381643540f094f6541917639a4f5b11d46d575bb03c7623ce109d376bafc3076a9d172233313e38cb6f49ed16db
diff --git a/dev-rust/libz-sys/files/libz-sys-1.1.2-Remove-optional-dependencies.patch b/dev-rust/libz-sys/files/libz-sys-1.1.2-Remove-optional-dependencies.patch
new file mode 100644
index 0000000..37d72ee
--- /dev/null
+++ b/dev-rust/libz-sys/files/libz-sys-1.1.2-Remove-optional-dependencies.patch
@@ -0,0 +1,20 @@
+--- a/Cargo.toml	2021-03-22 17:23:53.308140152 +0000
++++ b/Cargo.toml	2021-03-22 17:24:17.282592862 +0000
+@@ -28,10 +28,6 @@
+ [build-dependencies.cc]
+ version = "1.0.18"
+ 
+-[build-dependencies.cmake]
+-version = "0.1.44"
+-optional = true
+-
+ [build-dependencies.pkg-config]
+ version = "0.3.9"
+ 
+@@ -40,6 +36,5 @@
+ default = ["libc", "stock-zlib"]
+ static = []
+ stock-zlib = []
+-zlib-ng = ["libc", "cmake"]
+ [target."cfg(target_env = \"msvc\")".build-dependencies.vcpkg]
+ version = "0.2"
diff --git a/dev-rust/libz-sys/libz-sys-1.0.18.ebuild b/dev-rust/libz-sys/libz-sys-1.0.18.ebuild
deleted file mode 100644
index 7f63c69..0000000
--- a/dev-rust/libz-sys/libz-sys-1.0.18.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="This crate provides multi-producer multi-consumer channels for message passing. "
-HOMEPAGE="https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-channel"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/cc-1*:=
-	=dev-rust/libc-0.2*:=
-	=dev-rust/pkg-config-0.3*:=
-	=dev-rust/vcpkg-0.2*:=
-"
diff --git a/dev-rust/libz-sys/libz-sys-1.0.25.ebuild b/dev-rust/libz-sys/libz-sys-1.0.25.ebuild
deleted file mode 100644
index fb9ac2b..0000000
--- a/dev-rust/libz-sys/libz-sys-1.0.25.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Bindings to the system libz library (also known as zlib)."
-HOMEPAGE="https://github.com/rust-lang/libz-sys"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND=">=dev-rust/cc-1.0.18:=
-	>=dev-rust/libc-0.2.43:=
-	>=dev-rust/pkg-config-0.3.9:=
-	>=dev-rust/vcpkg-0.2:=
-"
diff --git a/dev-rust/libz-sys/libz-sys-1.1.2.ebuild b/dev-rust/libz-sys/libz-sys-1.1.2.ebuild
new file mode 100644
index 0000000..f696410d
--- /dev/null
+++ b/dev-rust/libz-sys/libz-sys-1.1.2.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Bindings to the system libz library (also known as zlib)."
+HOMEPAGE="https://github.com/rust-lang/libz-sys"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/libc-0.2.43:= <dev-rust/libc-0.3
+	>=dev-rust/cc-1.0.18:= <dev-rust/cc-2
+	>=dev-rust/pkg-config-0.3.9:= <dev-rust/pkg-config-0.4
+	>=dev-rust/vcpkg-0.2:= <dev-rust/vcpkg-0.3
+"
+
+PATCHES=(
+	"${FILESDIR}/${P}-Remove-optional-dependencies.patch"
+)
diff --git a/dev-rust/lock_api/Manifest b/dev-rust/lock_api/Manifest
index 6a1b45b..9044c64 100644
--- a/dev-rust/lock_api/Manifest
+++ b/dev-rust/lock_api/Manifest
@@ -1 +1,2 @@
 DIST lock_api-0.1.5.crate 16967 BLAKE2B c44ebe24fa6074394d0719b293d447ab67a9a23788821f2ba816b5e5b7a6b09d543c630a946b956811dd199144bf43568b52da5ebdd5e8b674e489f9efd2234d SHA512 e6049a8a840c11f00b6505dc9d01d1f759aa7bee47520f86e36caf6c52ca476236b09609b0a5cab0f4c247a40a4736f8fc04cf26fce0962cbbf2956ad4adbfde
+DIST lock_api-0.3.4.crate 18750 BLAKE2B 1aa7cb716efa665df7b09ee8d95c9fe0ef7ec108d89348e413e78e3af4d6274a49530ac03d5438a503a7c6dcfe20973c1c040d79b6cf228c5a15696a1caa4a8c SHA512 1517ec7cb1f9012da78be866e026be40465cc9befbbfff4a5f644ec19653baab6b171323c3fb8ef218df4a7bc4b305e42a6b9d6849654d0542a1c2dc8fe11fd8
diff --git a/dev-rust/lock_api/lock_api-0.3.4.ebuild b/dev-rust/lock_api/lock_api-0.3.4.ebuild
new file mode 100644
index 0000000..60e6dca
--- /dev/null
+++ b/dev-rust/lock_api/lock_api-0.3.4.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Wrappers to create fully-featured Mutex and RwLock types. Compatible with no_std."
+HOMEPAGE="https://crates.io/crates/lock_api"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/owning_ref-0.4*:=
+	=dev-rust/scopeguard-1*:=
+	>=dev-rust/serde-1.0.90:= <dev-rust/serde-2.0.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/log/Manifest b/dev-rust/log/Manifest
index ac9a203..818dfff 100644
--- a/dev-rust/log/Manifest
+++ b/dev-rust/log/Manifest
@@ -1,2 +1 @@
-DIST log-0.4.11.crate 36276 BLAKE2B 728647c829e96cb4fc795682facceebec887508e1ca14f13c0e7984db8ac39b3045885d1daa2f335de3e8f25c5cf1b519a1e7c8c6f4160a716bb8e39d085009f SHA512 e216fcb3c9635d8c4b67b05c1ada1e5de4e99dce89ab4c8f8033ddce6ac488605d8af09f93c42d25ebf8844feea22c93b71682e77a368ee01c686a15133fdeec
-DIST log-0.4.5.crate 22221 BLAKE2B bf60a62e0fcef107e66cb0f673bdc2d6eabd364424ad82488fb09655258855401f394c4c5fab584560798953e188591524d9c3044d8b42d16bb3f9cb255b747b SHA512 19b1d82ccd929a63d661512dadbb0ce11f6e3679431a40f4c0139d0c2f68d77dcb05be71605eaa23c01c920a38d11e588339ab6d3982418ce61c9df55a4f2b11
+DIST log-0.4.14.crate 34582 BLAKE2B ddfba35947ae1f5905cd9ecb9eb862a78af6f00ee8b8fe6258b369b140928fe677a02b1b3ca5bdec36ff2b16abd85a9f49688fd5f3d1ba2b2905e7f96b8a84c1 SHA512 796100167663d85a7bc4244cd305e9b3f0a1b1520764b63464698eb136318d0928c40c16f5d19d9f602a5bf769851275bbd48d66b088b0c37be7a6fb62def7cc
diff --git a/dev-rust/log/log-0.4.11.ebuild b/dev-rust/log/log-0.4.11.ebuild
deleted file mode 100644
index bf9aead..0000000
--- a/dev-rust/log/log-0.4.11.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="A lightweight logging facade for rust"
-HOMEPAGE="https://github.com/rust-lang/log"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0
-	=dev-rust/serde-1*:=
-	=dev-rust/sval-1*:=
-"
diff --git a/dev-rust/log/log-0.4.14.ebuild b/dev-rust/log/log-0.4.14.ebuild
new file mode 100644
index 0000000..07b2332
--- /dev/null
+++ b/dev-rust/log/log-0.4.14.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A lightweight logging facade for Rust"
+HOMEPAGE="https://crates.io/crates/log"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/cfg-if-1*:=
+	=dev-rust/serde-1*:=
+	=dev-rust/sval-1*:=
+	=dev-rust/value-bag-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/log/log-0.4.5.ebuild b/dev-rust/log/log-0.4.5.ebuild
deleted file mode 100644
index fdb6d00..0000000
--- a/dev-rust/log/log-0.4.5.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="A lightweight logging facade for rust"
-HOMEPAGE="https://github.com/rust-lang/log"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	dev-rust/cfg-if:=
-	dev-rust/serde:=
-	dev-rust/serde_test:=
-"
diff --git a/dev-rust/lru/Manifest b/dev-rust/lru/Manifest
index 60c2b09..49d5989 100644
--- a/dev-rust/lru/Manifest
+++ b/dev-rust/lru/Manifest
@@ -1 +1,2 @@
 DIST lru-0.1.16.crate 9694 BLAKE2B 69201fc8263b77e17a829035663e60fd3ad2694e95eea8c9ca3cd2d33ae15ff297f87f78c8c06d3f5f8f39c3bf13884d760f39ebd7d82a3a0e24fb25ca54bffb SHA512 1d0b4473a65517115d6abee220fa3a030bd4b46286a4736cd70e74f4aba358189a1b14c82ffb62b08fce93c113e6314918cd9923d9c4cfc14a3c543de4384509
+DIST lru-0.6.5.crate 11617 BLAKE2B 4939139d44e44ac0af82a6bd3c7ac9f8318350c0ee7789c38025523386de40448124c0508d9df4305149e9f6b179bf354340e893395bc4705192c0530b032dd8 SHA512 abe2eb5882bf3d8c022a40702247157ba17790cd717bf44b5ae978d716fed1ceeb236ac784f06e338e99a28edc0ad8f66b283db30c93f2b40d690ca4228d9d19
diff --git a/dev-rust/lru/lru-0.6.5.ebuild b/dev-rust/lru/lru-0.6.5.ebuild
new file mode 100644
index 0000000..2990be9
--- /dev/null
+++ b/dev-rust/lru/lru-0.6.5.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A LRU cache implementation"
+HOMEPAGE="https://github.com/jeromefroe/lru-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/hashbrown-0.9*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/manatee-client/manatee-client-0.24.52-r13.ebuild b/dev-rust/manatee-client/manatee-client-0.24.52-r13.ebuild
new file mode 100644
index 0000000..3bbdeff
--- /dev/null
+++ b/dev-rust/manatee-client/manatee-client-0.24.52-r13.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="3d4877e667c0e58648bbe6414474cd1d8fed8df1"
+CROS_WORKON_TREE=("a1d60d57f61a5bca613446926cc66c65ac62ce8b" "3508d2f3db0647ef3871071db0b2fbfd7b6af042")
+CROS_RUST_SUBDIR="sirenia/manatee-client"
+
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} sirenia/dbus_bindings"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Rust D-Bus bindings for ManaTEE."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/manatee-client"
+
+LICENSE="BSD-Google"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+
+RDEPEND="sys-apps/dbus"
+DEPEND="${RDEPEND}
+	chromeos-base/libsirenia:=
+	dev-rust/chromeos-dbus-bindings:=
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/getopts-0.2*:=
+	dev-rust/libchromeos:=
+	=dev-rust/log-0.4*:=
+	=dev-rust/stderrlog-0.5*:=
+	dev-rust/sys_util:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+	=dev-rust/which-4*:=
+"
+
+src_install() {
+	cros-rust_src_install
+
+	local build_dir="$(cros-rust_get_build_dir)"
+	dobin "${build_dir}/manatee"
+}
diff --git a/dev-rust/manatee-client/manatee-client-0.24.52-r3.ebuild b/dev-rust/manatee-client/manatee-client-0.24.52-r3.ebuild
deleted file mode 100644
index 2ee238e..0000000
--- a/dev-rust/manatee-client/manatee-client-0.24.52-r3.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="81c3bc35ca6688fc07cc13583624a1cb17e9c520"
-CROS_WORKON_TREE=("2336cfdf1864aa183d4f099c233c999636f9d5e1" "bbcb9d3c399693aac6cde20e091eb62ee734e22b")
-CROS_RUST_SUBDIR="sirenia/manatee-client"
-
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} sirenia/dbus_bindings"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Rust D-Bus bindings for ManaTEE."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/manatee-client"
-
-LICENSE="BSD-Google"
-SLOT="0/${PVR}"
-KEYWORDS="*"
-
-RDEPEND=""
-
-DEPEND="${RDEPEND}
-	=dev-rust/dbus-0.8*:=
-	dev-rust/chromeos-dbus-bindings:=
-"
diff --git a/dev-rust/manatee-client/manatee-client-9999.ebuild b/dev-rust/manatee-client/manatee-client-9999.ebuild
index 8b9118b..76f6a77 100644
--- a/dev-rust/manatee-client/manatee-client-9999.ebuild
+++ b/dev-rust/manatee-client/manatee-client-9999.ebuild
@@ -5,6 +5,7 @@
 
 CROS_RUST_SUBDIR="sirenia/manatee-client"
 
+CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_LOCALNAME="../platform2"
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} sirenia/dbus_bindings"
@@ -18,9 +19,23 @@
 SLOT="0/${PVR}"
 KEYWORDS="~*"
 
-RDEPEND=""
-
+RDEPEND="sys-apps/dbus"
 DEPEND="${RDEPEND}
-	=dev-rust/dbus-0.8*:=
+	chromeos-base/libsirenia:=
 	dev-rust/chromeos-dbus-bindings:=
+	=dev-rust/dbus-0.8*:=
+	=dev-rust/getopts-0.2*:=
+	dev-rust/libchromeos:=
+	=dev-rust/log-0.4*:=
+	=dev-rust/stderrlog-0.5*:=
+	dev-rust/sys_util:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+	=dev-rust/which-4*:=
 "
+
+src_install() {
+	cros-rust_src_install
+
+	local build_dir="$(cros-rust_get_build_dir)"
+	dobin "${build_dir}/manatee"
+}
diff --git a/dev-rust/maybe-uninit/Manifest b/dev-rust/maybe-uninit/Manifest
new file mode 100644
index 0000000..12207b2
--- /dev/null
+++ b/dev-rust/maybe-uninit/Manifest
@@ -0,0 +1 @@
+DIST maybe-uninit-2.0.0.crate 11809 BLAKE2B 5e517b8c59f9ae4f1a4f86b48679ea64d62450ec2519c8caaa914479ce9e5b3aff24707e2e37272ba74bb60499afdc602fff17756337b0c50a9184edbd8b8805 SHA512 3006fc009c7c743d9147a4122e677cdeb2546f7bb46963b2f266839614eb906f9d763c161044fd0bf3f7b54124ac0734ac9ae7f7151b1a7a5f45cbc739976434
diff --git a/dev-rust/maybe-uninit/maybe-uninit-2.0.0.ebuild b/dev-rust/maybe-uninit/maybe-uninit-2.0.0.ebuild
new file mode 100644
index 0000000..300bd94
--- /dev/null
+++ b/dev-rust/maybe-uninit/maybe-uninit-2.0.0.ebuild
@@ -0,0 +1,19 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="MaybeUninit for friends of backwards compatibility"
+HOMEPAGE="https://crates.io/crates/maybe-uninit"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/memchr/Manifest b/dev-rust/memchr/Manifest
index a271ece..7aa0f20 100644
--- a/dev-rust/memchr/Manifest
+++ b/dev-rust/memchr/Manifest
@@ -1 +1,2 @@
 DIST memchr-2.2.1.crate 20862 BLAKE2B 79c8b7772f6c4e76ef98e416cab1a87648fe1f78f77eb31a894a2b1611fcf2d8336e361ab3d692cd03579b33f6bc5adb20d42418475dac5441b8bf356e38e442 SHA512 0f5e11507a4235edaa8ef639753abf62f1c187c8c6e35b0c80c9306958e41893492d4995e28bf28e5710e8739c7e75bb75a515507ec87870741a3b426ba8f44d
+DIST memchr-2.4.0.crate 63392 BLAKE2B a3f30546c3b58ff4eba534bd7046446e96ad793718edfd3379bd125c47eb270728c4aed4aed1c6afa27032f74078b2b2ddddd5cc6044e117e2b956bb13f902a6 SHA512 b142e308a5aef8e45910411789031e194349ee540c4ced0e2384d864dc1913299fb63a161ceb5228256e97d0949661b7f83a169ef9d4b78afbd9004cb7b8a2fb
diff --git a/dev-rust/memchr/memchr-2.4.0.ebuild b/dev-rust/memchr/memchr-2.4.0.ebuild
new file mode 100644
index 0000000..918cb62
--- /dev/null
+++ b/dev-rust/memchr/memchr-2.4.0.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Safe interface to memchr."
+HOMEPAGE="https://github.com/BurntSushi/rust-memchr"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/libc-0.2.18:= <dev-rust/libc-0.3.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/memoffset/Manifest b/dev-rust/memoffset/Manifest
index c1a26f5..d1c3ff0 100644
--- a/dev-rust/memoffset/Manifest
+++ b/dev-rust/memoffset/Manifest
@@ -1,2 +1,2 @@
 DIST memoffset-0.2.1.crate 4618 BLAKE2B f04c4e5e1747d5516dff26fb045d91f01a2eea6011974a342c1830ad2aa6b203d5c6cd4db464177797f799197656085f980c00e78d0257efe5d3377188a8b8ee SHA512 4901eca49eb20acc53d1120548925d691d5e0a0ee899f5c26f55f8b997549cea3b819b1f9b4f5495f4bc73fbcaa386cda50cefdc0036c097c4eeca8086568530
-DIST memoffset-0.5.5.crate 7318 BLAKE2B a13407077396b802a46c2875f25a19dfead7656e7a986542b489fa18fb4293d3681df23ebd17139a79ea4e0448f77658408d50f499a48846920c0769e22a8237 SHA512 3804bf0c8c29ce91d67b7a502ba17ba096b4c487df49eeb7ec11950ecd950b35c78b9ec30aeaacf38f79ed0ea9ee601c6d65e712f704753c7c06ff1382456965
+DIST memoffset-0.5.6.crate 7382 BLAKE2B 42ebb93b567b339822201e31830971c32452b3d6681787c6969360c8db54912ae511580d8c899a3b9cb7f2fba98099c8df4c17534b97e4f4b1902d9251296527 SHA512 6df8952d41f60fa0993fbc85d112a15c1f6ecfef66da29ebdab71f40cd8ee8722400693b6ea023344f1b5dc351cbe828f465a8cabd150377a62948cedeb5db6b
diff --git a/dev-rust/memoffset/memoffset-0.5.5.ebuild b/dev-rust/memoffset/memoffset-0.5.5.ebuild
deleted file mode 100644
index 6a61fc1..0000000
--- a/dev-rust/memoffset/memoffset-0.5.5.ebuild
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-inherit cros-rust
-
-DESCRIPTION="C-Like offset_of functionality for Rust structs"
-HOMEPAGE="https://github.com/Gilnaa/memoffset"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="MIT"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="=dev-rust/autocfg-1*:="
diff --git a/dev-rust/memoffset/memoffset-0.5.6.ebuild b/dev-rust/memoffset/memoffset-0.5.6.ebuild
new file mode 100644
index 0000000..3e4642c
--- /dev/null
+++ b/dev-rust/memoffset/memoffset-0.5.6.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+inherit cros-rust
+
+DESCRIPTION="C-Like offset_of functionality for Rust structs"
+HOMEPAGE="https://github.com/Gilnaa/memoffset"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="=dev-rust/autocfg-1*:="
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/minijail-sys/minijail-sys-0.0.11-r2.ebuild b/dev-rust/minijail-sys/minijail-sys-0.0.11-r2.ebuild
deleted file mode 100644
index c639854..0000000
--- a/dev-rust/minijail-sys/minijail-sys-0.0.11-r2.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# This lives separately from the main minijail ebuild since we don't have Rust
-# available in the SDK builder.
-# TODO: Consider moving back into main ebuild once crbug.com/1046088 is
-# resolved.
-
-EAPI=7
-
-inherit cros-constants
-
-CROS_WORKON_COMMIT="96dd14e0abd27f2aaac1dc5b8ff40f17e79605f0"
-CROS_WORKON_TREE="c12462bccb06babed5abc2a8e153f3ff5b04d259"
-CROS_WORKON_MANUAL_UPREV=1
-CROS_WORKON_LOCALNAME="../aosp/external/minijail"
-CROS_WORKON_PROJECT="platform/external/minijail"
-CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
-CROS_WORKON_SUBTREE="rust/minijail-sys"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="rust bindings for minijail"
-HOMEPAGE="https://android.googlesource.com/platform/external/minijail"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-COMMON_DEPEND="
-	chromeos-base/minijail:=
-	sys-libs/libcap:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="
-	${COMMON_DEPEND}
-	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
-	>=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0
-"
-
-src_unpack() {
-	# Unpack both the minijail and Rust dependency source code.
-	cros-workon_src_unpack
-	S+="/rust/minijail-sys"
-
-	cros-rust_src_unpack
-}
-
-src_compile() {
-	use test && ecargo_test --no-run
-}
-
-src_test() {
-	if use x86 || use amd64; then
-		ecargo_test
-	else
-		elog "Skipping rust unit tests on non-x86 platform"
-	fi
-}
diff --git a/dev-rust/minijail-sys/minijail-sys-0.0.11-r6.ebuild b/dev-rust/minijail-sys/minijail-sys-0.0.11-r6.ebuild
new file mode 100644
index 0000000..e5cf268
--- /dev/null
+++ b/dev-rust/minijail-sys/minijail-sys-0.0.11-r6.ebuild
@@ -0,0 +1,62 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# This lives separately from the main minijail ebuild since we don't have Rust
+# available in the SDK builder.
+# TODO: Consider moving back into main ebuild once crbug.com/1046088 is
+# resolved.
+
+EAPI=7
+
+inherit cros-constants
+
+CROS_WORKON_COMMIT="96dd14e0abd27f2aaac1dc5b8ff40f17e79605f0"
+CROS_WORKON_TREE="c12462bccb06babed5abc2a8e153f3ff5b04d259"
+CROS_WORKON_MANUAL_UPREV=1
+CROS_WORKON_LOCALNAME="../aosp/external/minijail"
+CROS_WORKON_PROJECT="platform/external/minijail"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+CROS_WORKON_SUBTREE="rust/minijail-sys"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="rust bindings for minijail"
+HOMEPAGE="https://android.googlesource.com/platform/external/minijail"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+# ebuilds that install executables and depend on minijail-sys need to RDEPEND on
+# chromeos-base/minijail and sys-libs/libcap
+DEPEND="
+	chromeos-base/minijail:=
+	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
+	>=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0
+	sys-libs/libcap:=
+	virtual/bindgen:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+	# Unpack both the minijail and Rust dependency source code.
+	cros-workon_src_unpack
+	S+="/rust/minijail-sys"
+
+	cros-rust_src_unpack
+}
+
+src_compile() {
+	use test && ecargo_test --no-run
+}
+
+src_test() {
+	if use x86 || use amd64; then
+		ecargo_test
+	else
+		elog "Skipping rust unit tests on non-x86 platform"
+	fi
+}
diff --git a/dev-rust/minijail-sys/minijail-sys-0.0.12-r8.ebuild b/dev-rust/minijail-sys/minijail-sys-0.0.12-r8.ebuild
new file mode 100644
index 0000000..e99d799
--- /dev/null
+++ b/dev-rust/minijail-sys/minijail-sys-0.0.12-r8.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# This lives separately from the main minijail ebuild since we don't have Rust
+# available in the SDK builder.
+# TODO: Consider moving back into main ebuild once crbug.com/1046088 is
+# resolved.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="2453b1fc097f3a995be8bcc0a2ada1fba616f287"
+CROS_WORKON_TREE="1121f5e2d4d75def167b19e54a7e03264df8a7f7"
+inherit cros-constants
+
+CROS_RUST_SUBDIR="rust/minijail-sys"
+
+CROS_WORKON_MANUAL_UPREV=1
+CROS_WORKON_LOCALNAME="../aosp/external/minijail"
+CROS_WORKON_PROJECT="platform/external/minijail"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="rust bindings for minijail"
+HOMEPAGE="https://android.googlesource.com/platform/external/minijail"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+# ebuilds that install executables and depend on minijail-sys need to RDEPEND on
+# chromeos-base/minijail and sys-libs/libcap
+DEPEND="
+	chromeos-base/minijail:=
+	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
+	>=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0
+	sys-libs/libcap:=
+	virtual/bindgen:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/minijail-sys/minijail-sys-9999.ebuild b/dev-rust/minijail-sys/minijail-sys-9999.ebuild
index 18c3752..b63654a 100644
--- a/dev-rust/minijail-sys/minijail-sys-9999.ebuild
+++ b/dev-rust/minijail-sys/minijail-sys-9999.ebuild
@@ -10,11 +10,14 @@
 
 inherit cros-constants
 
+CROS_RUST_SUBDIR="rust/minijail-sys"
+
 CROS_WORKON_MANUAL_UPREV=1
 CROS_WORKON_LOCALNAME="../aosp/external/minijail"
 CROS_WORKON_PROJECT="platform/external/minijail"
+CROS_WORKON_EGIT_BRANCH="master"
 CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
-CROS_WORKON_SUBTREE="rust/minijail-sys"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
 
 inherit cros-workon cros-rust
 
@@ -25,35 +28,15 @@
 KEYWORDS="~*"
 IUSE="test"
 
-COMMON_DEPEND="
-	chromeos-base/minijail:=
-	sys-libs/libcap:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
+# ebuilds that install executables and depend on minijail-sys need to RDEPEND on
+# chromeos-base/minijail and sys-libs/libcap
 DEPEND="
-	${COMMON_DEPEND}
+	chromeos-base/minijail:=
 	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
 	>=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0
+	sys-libs/libcap:=
 	virtual/bindgen:=
 "
-
-src_unpack() {
-	# Unpack both the minijail and Rust dependency source code.
-	cros-workon_src_unpack
-	S+="/rust/minijail-sys"
-
-	cros-rust_src_unpack
-}
-
-src_compile() {
-	use test && ecargo_test --no-run
-}
-
-src_test() {
-	if use x86 || use amd64; then
-		ecargo_test
-	else
-		elog "Skipping rust unit tests on non-x86 platform"
-	fi
-}
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/minijail/minijail-0.2.1-r2.ebuild b/dev-rust/minijail/minijail-0.2.1-r2.ebuild
deleted file mode 100644
index 015653e..0000000
--- a/dev-rust/minijail/minijail-0.2.1-r2.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# This lives separately from the main minijail ebuild since we don't have Rust
-# available in the SDK builder.
-# TODO: Consider moving back into main ebuild once crbug.com/1046088 is
-# resolved.
-
-EAPI=7
-
-inherit cros-constants
-
-CROS_WORKON_COMMIT="85d797ecbfd7aefbb9486afeaed3cf5f74858562"
-CROS_WORKON_TREE="2ac2853d10ad0e5f4b451d75ea3590649b9ee241"
-CROS_WORKON_MANUAL_UPREV=1
-CROS_WORKON_LOCALNAME="../aosp/external/minijail"
-CROS_WORKON_PROJECT="platform/external/minijail"
-CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
-CROS_WORKON_SUBTREE="rust/minijail"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="rust bindings for minijail"
-HOMEPAGE="https://android.googlesource.com/platform/external/minijail"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="asan test"
-
-DEPEND="
-	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
-	dev-rust/minijail-sys:=
-"
-
-src_unpack() {
-	# Unpack both the minijail and Rust dependency source code.
-	cros-workon_src_unpack
-	S+="/rust/minijail"
-
-	cros-rust_src_unpack
-}
-
-src_compile() {
-	if use x86 || use amd64; then
-		use test && ecargo_test --no-run
-	fi
-}
-
-src_test() {
-	if cros-rust_use_sanitizers; then
-		# crbug.com/1097761 The unit tests for this package leak threads.
-		elog "Skipping rust unit tests for ASAN because fork leaks threads."
-	elif use x86 || use amd64; then
-		# TODO(crbug/1115287) Include the wait_* tests once they don't hang.
-		ecargo_test -- --skip tests::wait_
-	else
-		elog "Skipping rust unit tests on non-x86 platform"
-	fi
-}
diff --git a/dev-rust/minijail/minijail-0.2.1-r6.ebuild b/dev-rust/minijail/minijail-0.2.1-r6.ebuild
new file mode 100644
index 0000000..ce6459e
--- /dev/null
+++ b/dev-rust/minijail/minijail-0.2.1-r6.ebuild
@@ -0,0 +1,63 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# This lives separately from the main minijail ebuild since we don't have Rust
+# available in the SDK builder.
+# TODO: Consider moving back into main ebuild once crbug.com/1046088 is
+# resolved.
+
+EAPI=7
+
+inherit cros-constants
+
+CROS_WORKON_COMMIT="85d797ecbfd7aefbb9486afeaed3cf5f74858562"
+CROS_WORKON_TREE="2ac2853d10ad0e5f4b451d75ea3590649b9ee241"
+CROS_WORKON_MANUAL_UPREV=1
+CROS_WORKON_LOCALNAME="../aosp/external/minijail"
+CROS_WORKON_PROJECT="platform/external/minijail"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+CROS_WORKON_SUBTREE="rust/minijail"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="rust bindings for minijail"
+HOMEPAGE="https://android.googlesource.com/platform/external/minijail"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="asan test"
+
+DEPEND="
+	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
+	dev-rust/minijail-sys:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+	# Unpack both the minijail and Rust dependency source code.
+	cros-workon_src_unpack
+	S+="/rust/minijail"
+
+	cros-rust_src_unpack
+}
+
+src_compile() {
+	if use x86 || use amd64; then
+		use test && ecargo_test --no-run
+	fi
+}
+
+src_test() {
+	if cros-rust_use_sanitizers; then
+		# crbug.com/1097761 The unit tests for this package leak threads.
+		elog "Skipping rust unit tests for ASAN because fork leaks threads."
+	elif use x86 || use amd64; then
+		# TODO(crbug/1115287) Include the wait_* tests once they don't hang.
+		ecargo_test -- --skip tests::wait_
+	else
+		elog "Skipping rust unit tests on non-x86 platform"
+	fi
+}
diff --git a/dev-rust/minijail/minijail-0.2.2-r8.ebuild b/dev-rust/minijail/minijail-0.2.2-r8.ebuild
new file mode 100644
index 0000000..75a4836
--- /dev/null
+++ b/dev-rust/minijail/minijail-0.2.2-r8.ebuild
@@ -0,0 +1,48 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# This lives separately from the main minijail ebuild since we don't have Rust
+# available in the SDK builder.
+# TODO: Consider moving back into main ebuild once crbug.com/1046088 is
+# resolved.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="2453b1fc097f3a995be8bcc0a2ada1fba616f287"
+CROS_WORKON_TREE="7dd54d6994a78efa674fac10be69ff0c8866e384"
+inherit cros-constants
+
+CROS_RUST_SUBDIR="rust/minijail"
+
+CROS_WORKON_MANUAL_UPREV=1
+CROS_WORKON_LOCALNAME="../aosp/external/minijail"
+CROS_WORKON_PROJECT="platform/external/minijail"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="rust bindings for minijail"
+HOMEPAGE="https://android.googlesource.com/platform/external/minijail"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="asan test"
+
+DEPEND="
+	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
+	dev-rust/minijail-sys:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
+
+src_test() {
+	local args=( -- --test-threads=1 )
+	if ! use amd64; then
+		# TODO(crbug.com/1201377) enable all tests on ARM when supported.
+		args=( --lib "${args[@]}" --skip 'seccomp_no_new_privs' )
+	fi
+	cros-rust_src_test "${args[@]}"
+}
diff --git a/dev-rust/minijail/minijail-9999.ebuild b/dev-rust/minijail/minijail-9999.ebuild
index 3bcdc06..7527e0e 100644
--- a/dev-rust/minijail/minijail-9999.ebuild
+++ b/dev-rust/minijail/minijail-9999.ebuild
@@ -10,11 +10,14 @@
 
 inherit cros-constants
 
+CROS_RUST_SUBDIR="rust/minijail"
+
 CROS_WORKON_MANUAL_UPREV=1
 CROS_WORKON_LOCALNAME="../aosp/external/minijail"
 CROS_WORKON_PROJECT="platform/external/minijail"
+CROS_WORKON_EGIT_BRANCH="master"
 CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
-CROS_WORKON_SUBTREE="rust/minijail"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
 
 inherit cros-workon cros-rust
 
@@ -29,29 +32,15 @@
 	>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0
 	dev-rust/minijail-sys:=
 "
-
-src_unpack() {
-	# Unpack both the minijail and Rust dependency source code.
-	cros-workon_src_unpack
-	S+="/rust/minijail"
-
-	cros-rust_src_unpack
-}
-
-src_compile() {
-	if use x86 || use amd64; then
-		use test && ecargo_test --no-run
-	fi
-}
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
 
 src_test() {
-	if cros-rust_use_sanitizers; then
-		# crbug.com/1097761 The unit tests for this package leak threads.
-		elog "Skipping rust unit tests for ASAN because fork leaks threads."
-	elif use x86 || use amd64; then
-		# TODO(crbug/1115287) Include the wait_* tests once they don't hang.
-		ecargo_test -- --skip tests::wait_
-	else
-		elog "Skipping rust unit tests on non-x86 platform"
+	local args=( -- --test-threads=1 )
+	if ! use amd64; then
+		# TODO(crbug.com/1201377) enable all tests on ARM when supported.
+		args=( --lib "${args[@]}" --skip 'seccomp_no_new_privs' )
 	fi
+	cros-rust_src_test "${args[@]}"
 }
diff --git a/dev-rust/miniz-sys/Manifest b/dev-rust/miniz-sys/Manifest
new file mode 100644
index 0000000..e4cbc63
--- /dev/null
+++ b/dev-rust/miniz-sys/Manifest
@@ -0,0 +1 @@
+DIST miniz-sys-0.1.12.crate 78209 BLAKE2B bd6aea3b23382b754a926e8f6f4ba4b1684ea86987100c16556d0567278297e6e5bcfed2ca8a114831f75814692f38ae147f6c1951d218cd5ddfd81231fde86c SHA512 e00ab08d024806ffe68f8d9d0404bf83e62c58d04398bd8b0f8993a6c60a38fcc3a50189cef7a699ad7a93682d9f2353a31f5596d62a72c5f6560d12cf0c0a02
diff --git a/dev-rust/miniz-sys/OWNERS b/dev-rust/miniz-sys/OWNERS
new file mode 100644
index 0000000..12f21f8
--- /dev/null
+++ b/dev-rust/miniz-sys/OWNERS
@@ -0,0 +1 @@
+include /media-gfx/deqp-runner/OWNERS
diff --git a/dev-rust/miniz-sys/miniz-sys-0.1.12.ebuild b/dev-rust/miniz-sys/miniz-sys-0.1.12.ebuild
new file mode 100644
index 0000000..e81c992
--- /dev/null
+++ b/dev-rust/miniz-sys/miniz-sys-0.1.12.ebuild
@@ -0,0 +1,19 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Bindings to the miniz.c library"
+HOMEPAGE="https://github.com/alexcrichton/flate2-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/libc-0.2:= <dev-rust/libc-0.3
+	>=dev-rust/cc-1.0:= <dev-rust/cc-2
+"
diff --git a/dev-rust/miniz_oxide/Manifest b/dev-rust/miniz_oxide/Manifest
new file mode 100644
index 0000000..eed8b9e
--- /dev/null
+++ b/dev-rust/miniz_oxide/Manifest
@@ -0,0 +1 @@
+DIST miniz_oxide-0.4.4.crate 49938 BLAKE2B 3403416bf9d10b67ef976eb23be64216027c67c56225efd08c87f8269017cb5174ae64f35d18acb66c7a1b831347791cee5af565f3ddfb31ae4210221604b0c4 SHA512 2c6e484a8a53c6b1fb84e2bf9518919e6e5ba84e7716c0bb8e33b53dc0d3432c35f28f19c18368e27c94f6df66b7674f514ef889cf1b19f546bedfb6e6ebaf6f
diff --git a/dev-rust/miniz_oxide/OWNERS b/dev-rust/miniz_oxide/OWNERS
new file mode 100644
index 0000000..12f21f8
--- /dev/null
+++ b/dev-rust/miniz_oxide/OWNERS
@@ -0,0 +1 @@
+include /media-gfx/deqp-runner/OWNERS
diff --git a/dev-rust/miniz_oxide/miniz_oxide-0.4.4.ebuild b/dev-rust/miniz_oxide/miniz_oxide-0.4.4.ebuild
new file mode 100644
index 0000000..a1cf9c4
--- /dev/null
+++ b/dev-rust/miniz_oxide/miniz_oxide-0.4.4.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="DEFLATE compression and decompression library rewritten in Rust based on miniz"
+HOMEPAGE="https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT ZLIB Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/adler-1.0:= <dev-rust/adler-2
+"
diff --git a/dev-rust/mio-uds/Manifest b/dev-rust/mio-uds/Manifest
index 961ee33..1fd9391 100644
--- a/dev-rust/mio-uds/Manifest
+++ b/dev-rust/mio-uds/Manifest
@@ -1 +1,2 @@
 DIST mio-uds-0.6.7.crate 14389 BLAKE2B b01fbe5ba2e2f58d2bc513ef577c70890ab0a556313dc8e980d4f51d4622be9180215e2e9655e3f02aced40823bdf69b94a8b63c6b2624e28cd24fb5dd89b0c4 SHA512 fe16c8702eef599c2379a2b72a0408970c3318e240d6ed59077c7fcae142bfcda4d9e342e3185338671b82719f7c2ab156bb28a54818a54c249216dbb0f8bb04
+DIST mio-uds-0.6.8.crate 11496 BLAKE2B e52d131f292c7c09fa116ec5c760d50e8389c27fd7b79a4418f0222ae124fba0e5943b5494866e9db75407ab9f6b1a9c7aa7fdf2c4d601e8c785dacd8166f6da SHA512 b6c752ae9f25c37fc7e23e06a8843089c5291d60e53a6e9093eed1d8baf64c9e0ff14bb2ea1c0c8815b00026b28fefab2aa34104bdbce7e99549786d0f507a73
diff --git a/dev-rust/mio-uds/mio-uds-0.6.8.ebuild b/dev-rust/mio-uds/mio-uds-0.6.8.ebuild
new file mode 100644
index 0000000..2ae0743
--- /dev/null
+++ b/dev-rust/mio-uds/mio-uds-0.6.8.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Unix domain socket bindings for mio"
+HOMEPAGE="https://github.com/deprecrated/mio-uds"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/iovec-0.1*:=
+	>=dev-rust/libc-0.2.69:= <dev-rust/libc-0.3.0
+	>=dev-rust/mio-0.6.5:= <dev-rust/mio-0.7.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/mio/Manifest b/dev-rust/mio/Manifest
index d0d4741..fd6c6c7 100644
--- a/dev-rust/mio/Manifest
+++ b/dev-rust/mio/Manifest
@@ -1 +1,2 @@
 DIST mio-0.6.17.crate 128148 BLAKE2B 3632f68d4a63a3b6167af6342eee6c3a32730d534a48c73df0019f6862468be32697908a1aa5b897cda06ad73395b624670aace5fa09819d0d379b5f0b2f66c3 SHA512 3145ef946e2f55fb05e10f55cddabdab81804bc998d12bd8df18797e6be0b30c5b81a3968a8b0950f7a1b24f49f989c39b259b2e2ea3344b8b1f23ba1c1e1d8c
+DIST mio-0.6.23.crate 103554 BLAKE2B 1286ea6deb7579964a5c15926509d438c5454d4f56e936753c76927826fbc5444dbe33b7465a15d0ae6c122bcc98899959391a5418bff31c176d51d7b2f33077 SHA512 ea95d15072fe36524a85b50108415a809d7ea3744deee45e4b6a1b763a11c88cda6dbabe4f8d01945a5edeb52296a74fcf457c85be3032c1311a35025860d05c
diff --git a/dev-rust/mio/mio-0.6.17-r1.ebuild b/dev-rust/mio/mio-0.6.17-r1.ebuild
new file mode 120000
index 0000000..2757105
--- /dev/null
+++ b/dev-rust/mio/mio-0.6.17-r1.ebuild
@@ -0,0 +1 @@
+mio-0.6.17.ebuild
\ No newline at end of file
diff --git a/dev-rust/mio/mio-0.6.17-r2.ebuild b/dev-rust/mio/mio-0.6.17-r2.ebuild
new file mode 120000
index 0000000..2757105
--- /dev/null
+++ b/dev-rust/mio/mio-0.6.17-r2.ebuild
@@ -0,0 +1 @@
+mio-0.6.17.ebuild
\ No newline at end of file
diff --git a/dev-rust/mio/mio-0.6.17.ebuild b/dev-rust/mio/mio-0.6.17.ebuild
index aaa41c6..3628c35 100644
--- a/dev-rust/mio/mio-0.6.17.ebuild
+++ b/dev-rust/mio/mio-0.6.17.ebuild
@@ -1,10 +1,13 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 inherit cros-rust
 
+CROS_RUST_REMOVE_DEV_DEPS=1
+CROS_RUST_REMOVE_TARGET_CFG=1
+
 DESCRIPTION="Mio is a lightweight I/O library for Rust with a focus on adding as little overhead as possible over the OS abstractions"
 HOMEPAGE="https://github.com/carllerche/mio"
 SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
@@ -14,17 +17,12 @@
 KEYWORDS="*"
 
 DEPEND="
-	=dev-rust/fuchsia-zircon-0.3*:=
-	=dev-rust/fuchsia-zircon-sys-0.3*:=
-	=dev-rust/iovec-0.1*:=
-	=dev-rust/kernel32-sys-0.2*:=
-	=dev-rust/libc-0.2*:=
+	>=dev-rust/iovec-0.1.1:= <dev-rust/iovec-0.2
+	>=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0
 	=dev-rust/log-0.4*:=
-	=dev-rust/miow-0.2*:=
-	=dev-rust/net2-0.2*:=
+	>=dev-rust/net2-0.2.29:= <dev-rust/net2-0.3.0
 	=dev-rust/slab-0.4*:=
-	=dev-rust/winapi-0.2*:=
-	=dev-rust/bytes-0.3*:=
-	=dev-rust/env_logger-0.4*:=
-	=dev-rust/tempdir-0.3*:=
+"
+RDEPEND="${DEPEND}
+	!=dev-rust/mio-0.6*
 "
diff --git a/dev-rust/mio/mio-0.6.23.ebuild b/dev-rust/mio/mio-0.6.23.ebuild
new file mode 100644
index 0000000..5caf150
--- /dev/null
+++ b/dev-rust/mio/mio-0.6.23.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+CROS_RUST_REMOVE_TARGET_CFG=1
+
+inherit cros-rust
+
+DESCRIPTION="Lightweight non-blocking IO"
+HOMEPAGE="https://github.com/tokio-rs/mio"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/cfg-if-0.1.9:= <dev-rust/cfg-if-0.2.0
+	>=dev-rust/iovec-0.1.1:= <dev-rust/iovec-0.2.0
+	=dev-rust/log-0.4*:=
+	>=dev-rust/net2-0.2.36:= <dev-rust/net2-0.3.0
+	=dev-rust/slab-0.4*:=
+	>=dev-rust/libc-0.2.54:= <dev-rust/libc-0.3.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/net2/Manifest b/dev-rust/net2/Manifest
index 2e0704a..1a5e595 100644
--- a/dev-rust/net2/Manifest
+++ b/dev-rust/net2/Manifest
@@ -1 +1,2 @@
 DIST net2-0.2.33.crate 20936 BLAKE2B ddbc96e7cc4877b8a66d019e7e65a260379cce19c87bf507701ddf1b00208e7a321d34882282fa650a52f6b9d878605a6fc3be461fbb7e10182dda04a04e5806 SHA512 e522b399071daf1a9b913429e2eee52503d9604114feaf6987e97b85c128246b9137e3dcf03f45ca93d623ca6a4b295c9b703db4c319af47498e07d7714c07a9
+DIST net2-0.2.37.crate 21311 BLAKE2B 21cef5df92d5d51c8e23c57ad2225e3311c13083fb86830bcb313965eb5ad0170519bed9a47cefb2305d3614ce55e11896a06437cf9ca50c79b7843ea633e99f SHA512 9ae70c655468c3e35ce05988626e0398a3cdf7b7343c08aaecf1267bb958329e608b814cc7be252fe085de3cf6913a1c72aad206c677459469ba4886c20206ec
diff --git a/dev-rust/net2/net2-0.2.37.ebuild b/dev-rust/net2/net2-0.2.37.ebuild
new file mode 100644
index 0000000..a196935
--- /dev/null
+++ b/dev-rust/net2/net2-0.2.37.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Extensions to the standard library's networking types as proposed in RFC 1158."
+HOMEPAGE="https://github.com/deprecrated/net2-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/cfg-if-0.1*:=
+	>=dev-rust/libc-0.2.54:= <dev-rust/libc-0.3.0
+	=dev-rust/winapi-0.3*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/nix/files/nix-0.19.0-rm-extra-dependencies.patch b/dev-rust/nix/files/nix-0.19.0-rm-extra-dependencies.patch
deleted file mode 100644
index fcfd054..0000000
--- a/dev-rust/nix/files/nix-0.19.0-rm-extra-dependencies.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-CROS_RUST_REMOVE_DEV_DEPS didn't cover these unneeded dependencies.
-diff --git a/Cargo.toml b/Cargo.toml
-index 862a0a9..211eda9 100644
---- a/Cargo.toml
-+++ b/Cargo.toml
-@@ -54,9 +54,3 @@ version = "0.1.10"
- [dependencies.libc]
- version = "0.2.78"
- features = ["extra_traits"]
--[target."cfg(any(target_os = \"android\", target_os = \"linux\"))".dev-dependencies.caps]
--version = "0.3.1"
--[target."cfg(target_os = \"dragonfly\")".build-dependencies.cc]
--version = "1"
--[target."cfg(target_os = \"freebsd\")".dev-dependencies.sysctl]
--version = "0.1"
diff --git a/dev-rust/nix/nix-0.19.0-r1.ebuild b/dev-rust/nix/nix-0.19.0-r1.ebuild
new file mode 120000
index 0000000..356f4dc
--- /dev/null
+++ b/dev-rust/nix/nix-0.19.0-r1.ebuild
@@ -0,0 +1 @@
+nix-0.19.0.ebuild
\ No newline at end of file
diff --git a/dev-rust/nix/nix-0.19.0.ebuild b/dev-rust/nix/nix-0.19.0.ebuild
index 6f836d9..eb9c8d0 100644
--- a/dev-rust/nix/nix-0.19.0.ebuild
+++ b/dev-rust/nix/nix-0.19.0.ebuild
@@ -1,9 +1,10 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI="7"
 
 CROS_RUST_REMOVE_DEV_DEPS=1
+CROS_RUST_REMOVE_TARGET_CFG=1
 
 inherit cros-rust
 
@@ -15,10 +16,9 @@
 SLOT="${PV}/${PR}"
 KEYWORDS="*"
 
-PATCHES=( "${FILESDIR}/${PN}-${PV}-rm-extra-dependencies.patch" )
-
 DEPEND="
 	>=dev-rust/bitflags-1.1.0:= <dev-rust/bitflags-2.0.0
-	=dev-rust/cfg-if-1*:=
+	>=dev-rust/cfg-if-0.1.10:= <dev-rust/cfg-if-0.2.0
 	>=dev-rust/libc-0.2.78:= <dev-rust/libc-3.0.0
 "
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/no-panic/no-panic-0.1.0.ebuild b/dev-rust/no-panic/no-panic-0.1.0.ebuild
deleted file mode 100644
index 032fa9f..0000000
--- a/dev-rust/no-panic/no-panic-0.1.0.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_EMPTY_CRATE=1
-
-inherit cros-rust
-
-DESCRIPTION="Empty ${PN} crate"
-HOMEPAGE=""
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/num-traits/Manifest b/dev-rust/num-traits/Manifest
index 25862d0..7e9c6ef 100644
--- a/dev-rust/num-traits/Manifest
+++ b/dev-rust/num-traits/Manifest
@@ -1 +1 @@
-DIST num-traits-0.2.4.crate 38463 BLAKE2B 9a44eebea444c2184855cb41b39b88716773be2d2f146ee603c999c377f3249b4580133608ec4ba968e27a976307b030414c23eb9dd1ead655c3aeb70431abc8 SHA512 4d1f378ea4ca6edf934ad92526b7556944dddfa00d77f2f6795c65bfb5aba4a20a747e01cbd1fb8250e565eb541a48dec8aab00d6505931b5cbc25be0dbf929c
+DIST num-traits-0.2.12.crate 43807 BLAKE2B 3913a6c73a928ccae330ae4592cbaf502bf3e6e43f1ba847a02d317003074a07d0d4334eac6e31a5a9220186c44e9ce80111d59203b78e50d4abfc6da4daeddc SHA512 98fe81a3747d619861c3b2789253465eed68c371d74f719885a4b5f09af1abdeb0a147baa52fe335dd4f471f82463aee65fdc9e44432dd67248d5f43e4b85377
diff --git a/dev-rust/num-traits/num-traits-0.2.4.ebuild b/dev-rust/num-traits/num-traits-0.2.12.ebuild
similarity index 100%
rename from dev-rust/num-traits/num-traits-0.2.4.ebuild
rename to dev-rust/num-traits/num-traits-0.2.12.ebuild
diff --git a/dev-rust/num_enum/Manifest b/dev-rust/num_enum/Manifest
index 208cb98..6ae32e1 100644
--- a/dev-rust/num_enum/Manifest
+++ b/dev-rust/num_enum/Manifest
@@ -1 +1 @@
-DIST num_enum-0.5.0.crate 4830 BLAKE2B 728c8e3db5e03abd9bf115ac30b60757f7f4b61c44d873a3502953b230694275292ed0efb996f20f862cfb5ab686a2882d621d76ffebf17b251f42763cddf042 SHA512 c88d86164591ae27e17c35321d05e11264542b505a6f682b62d59c81decd74b539fe5813ada7687b07de67c81e7b44b9a30973e868a6b24e207b30e6afd5b589
+DIST num_enum-0.5.1.crate 8210 BLAKE2B 45d15065b7baa1ecae1860315865e502038dce1bd79631bf8e659dd5346ad1e7ec61df0aef1ad64caa73fc615b3aadd894f490adb34c9227c671c079b11d154d SHA512 96e31e53697e70a91afc49f5474dadb88e6fcf772dc9f14d39a153aaed7e12500500c6a9395b1fd4870be29ea13d13818b30cd5b1d59844773bf2edbc76d7677
diff --git a/dev-rust/num_enum/num_enum-0.5.0.ebuild b/dev-rust/num_enum/num_enum-0.5.0.ebuild
deleted file mode 100644
index 4d5954e..0000000
--- a/dev-rust/num_enum/num_enum-0.5.0.ebuild
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-inherit cros-rust
-
-DESCRIPTION="Procedural macros to make inter-operation between primitives and enums easier."
-HOMEPAGE="https://github.com/illicitonion/num_enum"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="BSD"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/derivative-2*:=
-	=dev-rust/num_enum_derive-0.5*:=
-"
diff --git a/dev-rust/num_enum/num_enum-0.5.1-r1.ebuild b/dev-rust/num_enum/num_enum-0.5.1-r1.ebuild
new file mode 100644
index 0000000..532d4f0
--- /dev/null
+++ b/dev-rust/num_enum/num_enum-0.5.1-r1.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Procedural macros to make inter-operation between primitives and enums easier."
+HOMEPAGE="https://github.com/illicitonion/num_enum"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="BSD"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/derivative-2*:=
+	>=dev-rust/num_enum_derive-0.5.1:= <dev-rust/num_enum_derive-0.6.0
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!=dev-rust/num_enum-5*
+"
diff --git a/dev-rust/num_enum_derive/Manifest b/dev-rust/num_enum_derive/Manifest
index c44c9c7..73e72ed 100644
--- a/dev-rust/num_enum_derive/Manifest
+++ b/dev-rust/num_enum_derive/Manifest
@@ -1 +1 @@
-DIST num_enum_derive-0.5.0.crate 4703 BLAKE2B 2e2f067615e05291d6eb3d49b3f3164aac3f473ae085ed2a2f38ce24f3a557604e782fef344d9c9dfb017d57d74f89fc7e6772c60762956964b071854cd64b68 SHA512 c5fe55e911c7e5dab9b94464ae779bfc58f70b068d4052252d1759966726961d7fd4aeb4f85630fed5f27256f3dc74791a12d3c14a17b80034061fecb9c9a91e
+DIST num_enum_derive-0.5.1.crate 7579 BLAKE2B 0bfbaeef5f7b565254c4a3017ce38ca462142accfedeae5ee03f4110ad987255445209ca9a3883dd37f1ae0254755badde9daf251b74739c436573191729bc40 SHA512 fce1142f78ccad3cef1de504a0c89d38e057849abc5ad0c8e27d284c599b39b521cecf3ec70e055ed82871657e6aacbdc6e7b38d637a5d151aa9956e9ca9df09
diff --git a/dev-rust/num_enum_derive/num_enum_derive-0.5.0.ebuild b/dev-rust/num_enum_derive/num_enum_derive-0.5.0.ebuild
deleted file mode 100644
index d566945..0000000
--- a/dev-rust/num_enum_derive/num_enum_derive-0.5.0.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-inherit cros-rust
-
-DESCRIPTION="Internal implementation details for ::num_enum (Procedural macros to make inter-operation between primitives and enums easier)"
-HOMEPAGE="https://github.com/illicitonion/num_enum"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="BSD"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/proc-macro-crate-0.1.4:= <dev-rust/proc-macro-crate-0.2
-	=dev-rust/proc-macro2-1*:=
-	=dev-rust/quote-1*:=
-	=dev-rust/syn-1*:=
-"
diff --git a/dev-rust/num_enum_derive/num_enum_derive-0.5.1.ebuild b/dev-rust/num_enum_derive/num_enum_derive-0.5.1.ebuild
new file mode 100644
index 0000000..acf2296
--- /dev/null
+++ b/dev-rust/num_enum_derive/num_enum_derive-0.5.1.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Internal implementation details for ::num_enum (Procedural macros to make inter-operation between primitives and enums easier)"
+HOMEPAGE="https://github.com/illicitonion/num_enum"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="BSD"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/proc-macro-crate-0.1.4:= <dev-rust/proc-macro-crate-0.2
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!=dev-rust/num_enum_derive-5*
+"
diff --git a/dev-rust/once_cell/Manifest b/dev-rust/once_cell/Manifest
new file mode 100644
index 0000000..c18b560
--- /dev/null
+++ b/dev-rust/once_cell/Manifest
@@ -0,0 +1 @@
+DIST once_cell-1.7.2.crate 28250 BLAKE2B a30a55f6d6e820c691928173a9ce70a60486b28e3e79e8a01a08d87ca0bfb1725b967cc9e070cf53e71b924f73fc2eec2cf67190fc743361b60d82290762725d SHA512 30cf51249bb73e9881cfbc6a54ead7a3db709d560da8d420fd85cf248e66c727b92e8351b7c0c682913cff12b3f984684a272a69c965c56f8343948eb5a194d6
diff --git a/dev-rust/once_cell/OWNERS b/dev-rust/once_cell/OWNERS
new file mode 100644
index 0000000..23d0806
--- /dev/null
+++ b/dev-rust/once_cell/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/resourced/OWNERS
diff --git a/dev-rust/once_cell/files/once_cell-1.7.2-Remove-optional-dependencies.patch b/dev-rust/once_cell/files/once_cell-1.7.2-Remove-optional-dependencies.patch
new file mode 100644
index 0000000..6c9b756
--- /dev/null
+++ b/dev-rust/once_cell/files/once_cell-1.7.2-Remove-optional-dependencies.patch
@@ -0,0 +1,14 @@
+Remove optional dependencies
+--- a/Cargo.toml	1970-01-01 08:00:00.000000000 +0800
++++ b/Cargo.toml	2021-03-24 17:40:48.095164899 +0800
+@@ -53,10 +53,6 @@
+ [[example]]
+ name = "test_synchronization"
+ required-features = ["std"]
+-[dependencies.parking_lot]
+-version = "0.11"
+-optional = true
+-default_features = false
+ [features]
+ alloc = ["race"]
+ default = ["std"]
diff --git a/dev-rust/once_cell/once_cell-1.7.2.ebuild b/dev-rust/once_cell/once_cell-1.7.2.ebuild
new file mode 100644
index 0000000..1276251
--- /dev/null
+++ b/dev-rust/once_cell/once_cell-1.7.2.ebuild
@@ -0,0 +1,20 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Single assignment cells and lazy values."
+HOMEPAGE="https://github.com/matklad/once_cell"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+PATCHES=(
+	"${FILESDIR}/${P}-Remove-optional-dependencies.patch"
+)
diff --git a/dev-rust/openssl-src/openssl-src-111.0.1-r1.ebuild b/dev-rust/openssl-src/openssl-src-111.0.1-r1.ebuild
new file mode 120000
index 0000000..8fb79ab
--- /dev/null
+++ b/dev-rust/openssl-src/openssl-src-111.0.1-r1.ebuild
@@ -0,0 +1 @@
+openssl-src-111.0.1.ebuild
\ No newline at end of file
diff --git a/dev-rust/openssl-src/openssl-src-111.0.1.ebuild b/dev-rust/openssl-src/openssl-src-111.0.1.ebuild
index 072e90c..e319801 100644
--- a/dev-rust/openssl-src/openssl-src-111.0.1.ebuild
+++ b/dev-rust/openssl-src/openssl-src-111.0.1.ebuild
@@ -1,15 +1,17 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 CROS_RUST_EMPTY_CRATE=1
 
 inherit cros-rust
 
-DESCRIPTION="Empty ${PN} crate"
+DESCRIPTION="Empty ${PN} crate that pulls in the openssl headers."
 HOMEPAGE=""
 
 LICENSE="BSD-Google"
 SLOT="${PV}/${PR}"
 KEYWORDS="*"
+
+DEPEND="dev-libs/openssl:0="
diff --git a/dev-rust/openssl-sys/Manifest b/dev-rust/openssl-sys/Manifest
index 5381d06..87b617f 100644
--- a/dev-rust/openssl-sys/Manifest
+++ b/dev-rust/openssl-sys/Manifest
@@ -1,2 +1 @@
-DIST openssl-sys-0.9.47.crate 44276 BLAKE2B 021996a0f385d3f1a917a5404fb1112b6c6fac7e3aa38e7c37292a843a8b50d0218870f6724efbfcce3fea9e687385b1c94e7efa6badb734cd492e01b3270dea SHA512 8d3a38a5f403cbd957b069c60d80f790f2030490847113b3050afbe769b4c692b581ec763656042973167dee6ca70939fe0f15cc1150db67731fb3808d98b6cf
-DIST openssl-sys-0.9.52.crate 45059 BLAKE2B 3c82ea9c70d9e3c7b0959bdef835f6cbfaef89cdab7128fb0cc2fa008eabd5451ffc0495f41c6f0c252364e3826d4cb9fc3f0efc687cbef39c9a7f184a5349ab SHA512 4e0f5b4905d0ee2effa0fe5f44f15496b92cdc91c2abd9ee8a05249f1c1a7a579ab292bd3eb11d279689ce74344d8cca981b41f461b8c61ae33bece1c0446e16
+DIST openssl-sys-0.9.60.crate 51509 BLAKE2B ae3a9396115f1bcf9896ea49b0144b431b92491c4731ab6ca83ee7c99c5a38a727b008dfa837b09d80689c1a638fb57628066a4d8a85b3bb539f5e2ecd6b918e SHA512 6d9ae277c73a4efc567fd34f23e424cf6107b10f71b7e6902361dc33f514cbc8702718060fcda31c60ff65571fa29d7ea468f94cd9b8e3b37e85611f1d5adab2
diff --git a/dev-rust/openssl-sys/OWNERS b/dev-rust/openssl-sys/OWNERS
new file mode 100644
index 0000000..f570a32
--- /dev/null
+++ b/dev-rust/openssl-sys/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/sirenia/OWNERS
diff --git a/dev-rust/openssl-sys/files/openssl-sys-0.9.60-include-hdkf.patch b/dev-rust/openssl-sys/files/openssl-sys-0.9.60-include-hdkf.patch
new file mode 100644
index 0000000..2630328
--- /dev/null
+++ b/dev-rust/openssl-sys/files/openssl-sys-0.9.60-include-hdkf.patch
@@ -0,0 +1,144 @@
+This parts of this patch are split between dev-rust/openssl and
+dev-rust/openssl-sys.
+
+It is a rebase of a pull request on top of the openssl-v0.10.32 tag:
+https://github.com/sfackler/rust-openssl/pull/1234
+
+Author: Daiki Ueno <dueno@redhat.com>
+Date:   Fri Feb 14 17:29:06 2020 +0100
+
+Expose HKDF functions
+
+This adds functions for HKDF (HMAC-based Extract-and-Expand Key
+Derivation Function), provided by OpenSSL 1.1.1.
+
+--- a/src/evp.rs
++++ b/src/evp.rs
+@@ -1,4 +1,6 @@
+ use libc::*;
++use std::ptr;
++
+ use *;
+ 
+ pub const EVP_MAX_MD_SIZE: c_uint = 64;
+@@ -20,6 +22,24 @@ pub const EVP_PKEY_X448: c_int = NID_X448;
+ pub const EVP_PKEY_ED448: c_int = NID_ED448;
+ pub const EVP_PKEY_HMAC: c_int = NID_hmac;
+ pub const EVP_PKEY_CMAC: c_int = NID_cmac;
++#[cfg(ossl111)]
++pub const EVP_PKEY_HKDF: c_int = NID_hkdf;
++#[cfg(ossl111)]
++pub const EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND: c_int = 0;
++#[cfg(ossl111)]
++pub const EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY: c_int = 1;
++#[cfg(ossl111)]
++pub const EVP_PKEY_HKDEF_MODE_EXPAND_ONLY: c_int = 2;
++#[cfg(ossl111)]
++pub const EVP_PKEY_CTRL_HKDF_MD: c_int = EVP_PKEY_ALG_CTRL + 3;
++#[cfg(ossl111)]
++pub const EVP_PKEY_CTRL_HKDF_SALT: c_int = EVP_PKEY_ALG_CTRL + 4;
++#[cfg(ossl111)]
++pub const EVP_PKEY_CTRL_HKDF_KEY: c_int = EVP_PKEY_ALG_CTRL + 5;
++#[cfg(ossl111)]
++pub const EVP_PKEY_CTRL_HKDF_INFO: c_int = EVP_PKEY_ALG_CTRL + 6;
++#[cfg(ossl111)]
++pub const EVP_PKEY_CTRL_HKDF_MODE: c_int = EVP_PKEY_ALG_CTRL + 7;
+ 
+ pub const EVP_CTRL_GCM_SET_IVLEN: c_int = 0x9;
+ pub const EVP_CTRL_GCM_GET_TAG: c_int = 0x10;
+@@ -373,6 +393,8 @@ pub const EVP_PKEY_OP_SIGNCTX: c_int = 1 << 6;
+ pub const EVP_PKEY_OP_VERIFYCTX: c_int = 1 << 7;
+ pub const EVP_PKEY_OP_ENCRYPT: c_int = 1 << 8;
+ pub const EVP_PKEY_OP_DECRYPT: c_int = 1 << 9;
++#[cfg(ossl111)]
++pub const EVP_PKEY_OP_DERIVE: c_int = 1 << 10;
+ 
+ pub const EVP_PKEY_OP_TYPE_SIG: c_int = EVP_PKEY_OP_SIGN
+     | EVP_PKEY_OP_VERIFY
+@@ -440,6 +462,78 @@ const_ptr_api! {
+     }
+ }
+ 
++#[cfg(ossl111)]
++pub unsafe fn EVP_PKEY_CTX_hkdf_mode(ctx: *mut EVP_PKEY_CTX, mode: c_int) -> c_int {
++    EVP_PKEY_CTX_ctrl(
++        ctx,
++        -1,
++        EVP_PKEY_OP_DERIVE,
++        EVP_PKEY_CTRL_HKDF_MODE,
++        mode,
++        ptr::null_mut(),
++    )
++}
++
++#[cfg(ossl111)]
++pub unsafe fn EVP_PKEY_CTX_set_hkdf_md(ctx: *mut EVP_PKEY_CTX, md: *const EVP_MD) -> c_int {
++    EVP_PKEY_CTX_ctrl(
++        ctx,
++        -1,
++        EVP_PKEY_OP_DERIVE,
++        EVP_PKEY_CTRL_HKDF_MD,
++        0,
++        md as *mut c_void,
++    )
++}
++
++#[cfg(ossl111)]
++pub unsafe fn EVP_PKEY_CTX_set1_hkdf_salt(
++    ctx: *mut EVP_PKEY_CTX,
++    salt: *const u8,
++    saltlen: c_int,
++) -> c_int {
++    EVP_PKEY_CTX_ctrl(
++        ctx,
++        -1,
++        EVP_PKEY_OP_DERIVE,
++        EVP_PKEY_CTRL_HKDF_SALT,
++        saltlen,
++        salt as *mut c_void,
++    )
++}
++
++#[cfg(ossl111)]
++pub unsafe fn EVP_PKEY_CTX_set1_hkdf_key(
++    ctx: *mut EVP_PKEY_CTX,
++    key: *const u8,
++    keylen: c_int,
++) -> c_int {
++    EVP_PKEY_CTX_ctrl(
++        ctx,
++        -1,
++        EVP_PKEY_OP_DERIVE,
++        EVP_PKEY_CTRL_HKDF_KEY,
++        keylen,
++        key as *mut c_void,
++    )
++}
++
++#[cfg(ossl111)]
++pub unsafe fn EVP_PKEY_CTX_add1_hkdf_info(
++    ctx: *mut EVP_PKEY_CTX,
++    info: *const u8,
++    infolen: c_int,
++) -> c_int {
++    EVP_PKEY_CTX_ctrl(
++        ctx,
++        -1,
++        EVP_PKEY_OP_DERIVE,
++        EVP_PKEY_CTRL_HKDF_INFO,
++        infolen,
++        info as *mut c_void,
++    )
++}
++
+ cfg_if! {
+     if #[cfg(any(ossl111))] {
+         extern "C" {
+--- a/src/obj_mac.rs
++++ b/src/obj_mac.rs
+@@ -920,3 +920,5 @@ pub const NID_X448: c_int = 1035;
+ pub const NID_ED25519: c_int = 1087;
+ #[cfg(ossl111)]
+ pub const NID_ED448: c_int = 1088;
++#[cfg(ossl111)]
++pub const NID_hkdf: c_int = 1036;
diff --git a/dev-rust/openssl-sys/openssl-sys-0.9.47.ebuild b/dev-rust/openssl-sys/openssl-sys-0.9.47.ebuild
deleted file mode 100644
index b59de79..0000000
--- a/dev-rust/openssl-sys/openssl-sys-0.9.47.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="OpenSSL bindings for the Rust programming language."
-HOMEPAGE="https://github.com/sfackler/rust-openssl"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="MIT"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND=">=dev-rust/autocfg-0.1.2:=
-	>=dev-rust/cc-1.0:=
-	>=dev-rust/libc-0.2:=
-	>=dev-rust/pkg-config-0.3.9:=
-	>=dev-rust/vcpkg-0.2:=
-	>=dev-rust/openssl-src-111.0.1:=
-"
diff --git a/dev-rust/openssl-sys/openssl-sys-0.9.52.ebuild b/dev-rust/openssl-sys/openssl-sys-0.9.52.ebuild
deleted file mode 100644
index b59de79..0000000
--- a/dev-rust/openssl-sys/openssl-sys-0.9.52.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="OpenSSL bindings for the Rust programming language."
-HOMEPAGE="https://github.com/sfackler/rust-openssl"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="MIT"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND=">=dev-rust/autocfg-0.1.2:=
-	>=dev-rust/cc-1.0:=
-	>=dev-rust/libc-0.2:=
-	>=dev-rust/pkg-config-0.3.9:=
-	>=dev-rust/vcpkg-0.2:=
-	>=dev-rust/openssl-src-111.0.1:=
-"
diff --git a/dev-rust/openssl-sys/openssl-sys-0.9.60-r1.ebuild b/dev-rust/openssl-sys/openssl-sys-0.9.60-r1.ebuild
new file mode 120000
index 0000000..98528f9
--- /dev/null
+++ b/dev-rust/openssl-sys/openssl-sys-0.9.60-r1.ebuild
@@ -0,0 +1 @@
+openssl-sys-0.9.60.ebuild
\ No newline at end of file
diff --git a/dev-rust/openssl-sys/openssl-sys-0.9.60.ebuild b/dev-rust/openssl-sys/openssl-sys-0.9.60.ebuild
new file mode 100644
index 0000000..e577d0f
--- /dev/null
+++ b/dev-rust/openssl-sys/openssl-sys-0.9.60.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="OpenSSL bindings for the Rust programming language."
+HOMEPAGE="https://github.com/sfackler/rust-openssl"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/autocfg-1*:=
+	=dev-rust/cc-1*:=
+	=dev-rust/libc-0.2*:=
+	>=dev-rust/pkg-config-0.3.9:= <dev-rust/pkg-config-0.4
+	>=dev-rust/vcpkg-0.2.8:= <dev-rust/vcpkg-0.3
+	>=dev-rust/openssl-src-111.0.1:= <dev-rust/openssl-src-112
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are
+# pulled in when installing binpkgs since the full source tree is required to
+# use the crate.
+RDEPEND="${DEPEND}
+	!=dev-rust/openssl-sys-0.9*
+"
+
+PATCHES=( "${FILESDIR}/${P}-include-hdkf.patch" )
diff --git a/dev-rust/openssl/Manifest b/dev-rust/openssl/Manifest
index 8126fcd..17c2615 100644
--- a/dev-rust/openssl/Manifest
+++ b/dev-rust/openssl/Manifest
@@ -1 +1 @@
-DIST openssl-0.10.25.crate 185164 BLAKE2B 17cc67db6e4188d111f75f52fa03da910c86ae79d8211f6fa252d04c064ec90a1008efd2d69e0c8a54719d3d547a783bb6950c9bb0525840c31efe45bfe9c7b0 SHA512 db7a8af332c8db921cd07f778bb591a5d013d98848e1772cf5b9550562a5ae55e6459047f4b3263f813dc9a0b8f0bd302ad86dc620b71339bce3136f7daed029
+DIST openssl-0.10.32.crate 199469 BLAKE2B d8dd269501a1991fb9ea27367a17674ec74265ea4281121aa114b18aebd821425d8cec43177f395542a1ee3227b1023d1bd4ca8c261ed194841e633d05735250 SHA512 dc37b5bdab49f6fab6c1b7610c89b5d9aca7a432f341bb10fb7c2a1132f42db63eda0c0bc4d82130e1bf3b521436fda1e0c1f9f1091c060621602384ea649962
diff --git a/dev-rust/openssl/OWNERS b/dev-rust/openssl/OWNERS
new file mode 100644
index 0000000..f570a32
--- /dev/null
+++ b/dev-rust/openssl/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/sirenia/OWNERS
diff --git a/dev-rust/openssl/files/openssl-0.10.32-include-hdkf.patch b/dev-rust/openssl/files/openssl-0.10.32-include-hdkf.patch
new file mode 100644
index 0000000..0a3bc06
--- /dev/null
+++ b/dev-rust/openssl/files/openssl-0.10.32-include-hdkf.patch
@@ -0,0 +1,314 @@
+This parts of this patch are split between dev-rust/openssl and
+dev-rust/openssl-sys.
+
+It is a rebase of a pull request on top of the openssl-v0.10.32 tag:
+https://github.com/sfackler/rust-openssl/pull/1234
+
+Author: Daiki Ueno <dueno@redhat.com>
+Date:   Fri Feb 14 17:29:06 2020 +0100
+
+Expose HKDF functions
+
+This adds functions for HKDF (HMAC-based Extract-and-Expand Key
+Derivation Function), provided by OpenSSL 1.1.1.
+
+--- a/src/pkcs5.rs
++++ b/src/pkcs5.rs
+@@ -2,10 +2,12 @@ use ffi;
+ use libc::c_int;
+ use std::ptr;
+ 
+-use cvt;
+-use error::ErrorStack;
+-use hash::MessageDigest;
+-use symm::Cipher;
++use crate::cvt;
++use crate::cvt_p;
++use crate::error::ErrorStack;
++use crate::hash::DigestBytes;
++use crate::hash::MessageDigest;
++use crate::symm::Cipher;
+ 
+ #[derive(Clone, Eq, PartialEq, Hash, Debug)]
+ pub struct KeyIvPair {
+@@ -139,6 +141,216 @@ pub fn scrypt(
+     }
+ }
+ 
++/// Derive a key using the HKDF algorithm, by applying `hkdf_extract`
++/// followed by `hkdf_expand`.
++///
++/// Requires OpenSSL 1.1.1 or newer.
++#[cfg(any(ossl111))]
++pub fn hkdf(
++    input: &[u8],
++    salt: &[u8],
++    info: &[u8],
++    hash: MessageDigest,
++    key: &mut [u8],
++) -> Result<(), ErrorStack> {
++    unsafe {
++        assert!(input.len() <= c_int::max_value() as usize);
++        assert!(salt.len() <= c_int::max_value() as usize);
++        assert!(info.len() <= c_int::max_value() as usize);
++        assert!(key.len() <= c_int::max_value() as usize);
++
++        ffi::init();
++        let kctx = cvt_p(ffi::EVP_PKEY_CTX_new_id(
++            ffi::EVP_PKEY_HKDF,
++            ptr::null_mut(),
++        ))?;
++
++        let ret = (|| {
++            cvt(ffi::EVP_PKEY_derive_init(kctx))?;
++
++            cvt(ffi::EVP_PKEY_CTX_hkdf_mode(
++                kctx,
++                ffi::EVP_PKEY_HKDEF_MODE_EXTRACT_AND_EXPAND,
++            ))?;
++
++            cvt(ffi::EVP_PKEY_CTX_set_hkdf_md(kctx, hash.as_ptr()))?;
++
++            cvt(ffi::EVP_PKEY_CTX_set1_hkdf_key(
++                kctx,
++                input.as_ptr() as *const _,
++                input.len() as c_int,
++            ))?;
++
++            cvt(ffi::EVP_PKEY_CTX_set1_hkdf_salt(
++                kctx,
++                salt.as_ptr() as *const _,
++                salt.len() as c_int,
++            ))?;
++
++            cvt(ffi::EVP_PKEY_CTX_add1_hkdf_info(
++                kctx,
++                info.as_ptr() as *const _,
++                info.len() as c_int,
++            ))?;
++            Ok(())
++        })();
++
++        if let Err(e) = ret {
++            // Free memory
++            ffi::EVP_PKEY_CTX_free(kctx);
++            return Err(e);
++        }
++
++        let mut len = key.len();
++
++        let ret = cvt(ffi::EVP_PKEY_derive(kctx, key.as_mut_ptr(), &mut len));
++
++        // Free memory
++        ffi::EVP_PKEY_CTX_free(kctx);
++
++        if let Err(e) = ret {
++            return Err(e);
++        }
++
++        Ok(())
++    }
++}
++
++/// Extract a pseudorandom key from an input keying material using the
++/// HKDF algorithm.
++///
++/// Requires OpenSSL 1.1.1 or newer.
++#[cfg(any(ossl111))]
++pub fn hkdf_extract(
++    input: &[u8],
++    salt: &[u8],
++    hash: MessageDigest,
++) -> Result<DigestBytes, ErrorStack> {
++    unsafe {
++        assert!(input.len() <= c_int::max_value() as usize);
++        assert!(salt.len() <= c_int::max_value() as usize);
++
++        ffi::init();
++        let kctx = cvt_p(ffi::EVP_PKEY_CTX_new_id(
++            ffi::EVP_PKEY_HKDF,
++            ptr::null_mut(),
++        ))?;
++
++        let ret = (|| {
++            cvt(ffi::EVP_PKEY_derive_init(kctx))?;
++
++            cvt(ffi::EVP_PKEY_CTX_hkdf_mode(
++                kctx,
++                ffi::EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY,
++            ))?;
++
++            cvt(ffi::EVP_PKEY_CTX_set_hkdf_md(kctx, hash.as_ptr()))?;
++
++            cvt(ffi::EVP_PKEY_CTX_set1_hkdf_key(
++                kctx,
++                input.as_ptr() as *const _,
++                input.len() as c_int,
++            ))?;
++
++            cvt(ffi::EVP_PKEY_CTX_set1_hkdf_salt(
++                kctx,
++                salt.as_ptr() as *const _,
++                salt.len() as c_int,
++            ))?;
++            Ok(())
++        })();
++
++        if let Err(e) = ret {
++            // Free memory
++            ffi::EVP_PKEY_CTX_free(kctx);
++            return Err(e);
++        }
++
++        let mut len = ffi::EVP_MAX_MD_SIZE as usize;
++        let mut buf = [0; ffi::EVP_MAX_MD_SIZE as usize];
++        let ret = cvt(ffi::EVP_PKEY_derive(kctx, buf.as_mut_ptr(), &mut len));
++
++        // Free memory
++        ffi::EVP_PKEY_CTX_free(kctx);
++
++        if let Err(e) = ret {
++            return Err(e);
++        }
++
++        Ok(DigestBytes {
++            buf,
++            len: len as usize,
++        })
++    }
++}
++
++/// Expand a pseudorandom key to an output keying material using the
++/// HKDF algorithm.
++///
++/// Requires OpenSSL 1.1.1 or newer.
++#[cfg(any(ossl111))]
++pub fn hkdf_expand(
++    prk: &[u8],
++    info: &[u8],
++    hash: MessageDigest,
++    key: &mut [u8],
++) -> Result<(), ErrorStack> {
++    unsafe {
++        assert!(prk.len() <= c_int::max_value() as usize);
++        assert!(info.len() <= c_int::max_value() as usize);
++        assert!(key.len() <= c_int::max_value() as usize);
++
++        ffi::init();
++        let kctx = cvt_p(ffi::EVP_PKEY_CTX_new_id(
++            ffi::EVP_PKEY_HKDF,
++            ptr::null_mut(),
++        ))?;
++
++        let ret = (|| {
++            cvt(ffi::EVP_PKEY_derive_init(kctx))?;
++
++            cvt(ffi::EVP_PKEY_CTX_hkdf_mode(
++                kctx,
++                ffi::EVP_PKEY_HKDEF_MODE_EXPAND_ONLY,
++            ))?;
++
++            cvt(ffi::EVP_PKEY_CTX_set_hkdf_md(kctx, hash.as_ptr()))?;
++
++            cvt(ffi::EVP_PKEY_CTX_set1_hkdf_key(
++                kctx,
++                prk.as_ptr() as *const _,
++                prk.len() as c_int,
++            ))?;
++
++            cvt(ffi::EVP_PKEY_CTX_add1_hkdf_info(
++                kctx,
++                info.as_ptr() as *const _,
++                info.len() as c_int,
++            ))?;
++            Ok(())
++        })();
++
++        if let Err(e) = ret {
++            // Free memory
++            ffi::EVP_PKEY_CTX_free(kctx);
++            return Err(e);
++        }
++
++        let mut len = key.len();
++
++        let ret = cvt(ffi::EVP_PKEY_derive(kctx, key.as_mut_ptr(), &mut len));
++
++        // Free memory
++        ffi::EVP_PKEY_CTX_free(kctx);
++
++        if let Err(e) = ret {
++            return Err(e);
++        }
++
++        Ok(())
++    }
++}
++
+ #[cfg(test)]
+ mod tests {
+     use hash::MessageDigest;
+@@ -302,4 +514,63 @@ mod tests {
+         .unwrap();
+         assert_eq!(hex::encode(&actual[..]), expected);
+     }
++
++    #[test]
++    #[cfg(ossl111)]
++    fn hkdf() {
++        // Test vectors from RFC 5689
++        let input = "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b";
++        let salt = "000102030405060708090a0b0c";
++        let info = "f0f1f2f3f4f5f6f7f8f9";
++        let mut key = vec![0; 42];
++        let expected =
++            "3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865";
++
++        super::hkdf(
++            &hex::decode(input).unwrap(),
++            &hex::decode(salt).unwrap(),
++            &hex::decode(info).unwrap(),
++            MessageDigest::sha256(),
++            &mut key,
++        )
++        .unwrap();
++        assert_eq!(hex::encode(&key[..]), expected);
++    }
++
++    #[test]
++    #[cfg(ossl111)]
++    fn hkdf_extract() {
++        // Test vectors from RFC 5689
++        let input = "0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b";
++        let salt = "000102030405060708090a0b0c";
++        let expected = "077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5";
++
++        let prk = super::hkdf_extract(
++            &hex::decode(input).unwrap(),
++            &hex::decode(salt).unwrap(),
++            MessageDigest::sha256(),
++        )
++        .unwrap();
++        assert_eq!(hex::encode(&prk[..]), expected);
++    }
++
++    #[test]
++    #[cfg(ossl111)]
++    fn hkdf_expand() {
++        // Test vectors from RFC 5689
++        let prk = "077709362c2e32df0ddc3f0dc47bba6390b6c73bb50f9c3122ec844ad7c2b3e5";
++        let info = "f0f1f2f3f4f5f6f7f8f9";
++        let mut key = vec![0; 42];
++        let expected =
++            "3cb25f25faacd57a90434f64d0362f2a2d2d0a90cf1a5a4c5db02d56ecc4c5bf34007208d5b887185865";
++
++        super::hkdf_expand(
++            &hex::decode(prk).unwrap(),
++            &hex::decode(info).unwrap(),
++            MessageDigest::sha256(),
++            &mut key,
++        )
++        .unwrap();
++        assert_eq!(hex::encode(&key[..]), expected);
++    }
+ }
diff --git a/dev-rust/openssl/openssl-0.10.22.ebuild b/dev-rust/openssl/openssl-0.10.22.ebuild
deleted file mode 100644
index 072e90c..0000000
--- a/dev-rust/openssl/openssl-0.10.22.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_EMPTY_CRATE=1
-
-inherit cros-rust
-
-DESCRIPTION="Empty ${PN} crate"
-HOMEPAGE=""
-
-LICENSE="BSD-Google"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/openssl/openssl-0.10.25.ebuild b/dev-rust/openssl/openssl-0.10.25.ebuild
deleted file mode 100644
index 1cec505..0000000
--- a/dev-rust/openssl/openssl-0.10.25.ebuild
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="OpenSSL bindings for the Rust programming language."
-HOMEPAGE="https://github.com/sfackler/rust-openssl"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="Apache-2.0"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/bitflags-1.0:=
-	>=dev-rust/cfg-if-0.1:=
-	>=dev-rust/foreign-types-0.3.1:=
-	>=dev-rust/lazy_static-1.0:=
-	>=dev-rust/libc-0.2:=
-	>=dev-rust/openssl-sys-0.9.50:=
-"
diff --git a/dev-rust/openssl/openssl-0.10.32-r1.ebuild b/dev-rust/openssl/openssl-0.10.32-r1.ebuild
new file mode 120000
index 0000000..6fe906a
--- /dev/null
+++ b/dev-rust/openssl/openssl-0.10.32-r1.ebuild
@@ -0,0 +1 @@
+openssl-0.10.32.ebuild
\ No newline at end of file
diff --git a/dev-rust/openssl/openssl-0.10.32.ebuild b/dev-rust/openssl/openssl-0.10.32.ebuild
new file mode 100644
index 0000000..4f0f9c1
--- /dev/null
+++ b/dev-rust/openssl/openssl-0.10.32.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="OpenSSL bindings for the Rust programming language."
+HOMEPAGE="https://github.com/sfackler/rust-openssl"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="Apache-2.0"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/bitflags-1*:=
+	=dev-rust/cfg-if-1*:=
+	>=dev-rust/foreign-types-0.3.1:= <dev-rust/foreign-types-0.4.0
+	=dev-rust/lazy_static-1*:=
+	=dev-rust/libc-0.2*:=
+	>=dev-rust/openssl-sys-0.9.60:= <dev-rust/openssl-sys-0.10.0
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are
+# pulled in when installing binpkgs since the full source tree is required to
+# use the crate.
+RDEPEND="${DEPEND}
+	!=dev-rust/openssl-0.10*
+"
+
+PATCHES=( "${FILESDIR}/${P}-include-hdkf.patch" )
diff --git a/dev-rust/p9/p9-0.1.0-r29.ebuild b/dev-rust/p9/p9-0.1.0-r29.ebuild
deleted file mode 100644
index b86d2ff..0000000
--- a/dev-rust/p9/p9-0.1.0-r29.ebuild
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="cc55fd248b036e2a2feb8a746fb07cb370563dbc"
-CROS_WORKON_TREE="e1ab1203219f6d23c8922cb65be50f7f30fff5f1"
-CROS_RUST_SUBDIR="vm_tools/p9"
-
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-fuzzer cros-workon cros-rust
-
-DESCRIPTION="Server implementation of the 9P file system protocol"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/p9/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="fuzzer test"
-
-DEPEND="
-	dev-rust/libc:=
-	dev-rust/libchromeos:=
-	=dev-rust/proc-macro2-1*:=
-	=dev-rust/quote-1*:=
-	=dev-rust/syn-1*:=
-	fuzzer? ( dev-rust/cros_fuzz:= )
-"
-
-RDEPEND="!!<=dev-rust/p9-0.1.0-r14"
-
-get_crate_version() {
-	local crate="$1"
-	awk '/^version = / { print $3 }' "$1/Cargo.toml" | head -n1 | tr -d '"'
-}
-
-pkg_setup() {
-	cros-rust_pkg_setup wire_format_derive
-	cros-rust_pkg_setup p9
-}
-
-src_compile() {
-	pushd wire_format_derive > /dev/null || die
-	ecargo_build
-	use test && ecargo_test --no-run
-	popd > /dev/null || die
-
-	ecargo_build
-	use test && ecargo_test --no-run
-
-	if use fuzzer; then
-		cd fuzz
-		ecargo_build_fuzzer
-	fi
-}
-
-src_test() {
-	(
-		cd wire_format_derive || die
-		cros-rust_src_test
-	)
-
-	cros-rust_src_test
-}
-
-src_install() {
-	pushd wire_format_derive > /dev/null || die
-	local version="$(get_crate_version .)"
-	cros-rust_publish wire_format_derive "${version}"
-	popd > /dev/null || die
-
-	version="$(get_crate_version .)"
-	cros-rust_publish p9 "${version}"
-
-	if use fuzzer; then
-		fuzzer_install "${S}/fuzz/OWNERS" \
-			"$(cros-rust_get_build_dir)/p9_tframe_decode_fuzzer"
-	fi
-}
-
-pkg_postinst() {
-	cros-rust_pkg_postinst wire_format_derive
-	cros-rust_pkg_postinst p9
-}
-
-pkg_prerm() {
-	cros-rust_pkg_prerm wire_format_derive
-	cros-rust_pkg_prerm p9
-}
diff --git a/dev-rust/p9/p9-0.1.0-r34.ebuild b/dev-rust/p9/p9-0.1.0-r34.ebuild
new file mode 100644
index 0000000..ac54382
--- /dev/null
+++ b/dev-rust/p9/p9-0.1.0-r34.ebuild
@@ -0,0 +1,101 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="f4437d4dafb0bd389d82dac996ca28dba2dab6a4"
+CROS_WORKON_TREE="35c56057196d0db164eba11f0482eef6a7510d23"
+CROS_RUST_SUBDIR="vm_tools/p9"
+
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-fuzzer cros-workon cros-rust
+
+DESCRIPTION="Server implementation of the 9P file system protocol"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/p9/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="fuzzer test"
+
+DEPEND="
+	dev-rust/libc:=
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+	dev-rust/sys_util:=
+	fuzzer? ( dev-rust/cros_fuzz:= )
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/p9-0.1.0-r14
+"
+
+get_crate_version() {
+	local crate="$1"
+	awk '/^version = / { print $3 }' "$1/Cargo.toml" | head -n1 | tr -d '"'
+}
+
+pkg_setup() {
+	cros-rust_pkg_setup wire_format_derive
+	cros-rust_pkg_setup p9
+}
+
+src_compile() {
+	(
+		cd wire_format_derive || die
+		ecargo_build
+		use test && ecargo_test --no-run
+	)
+
+	ecargo_build
+	use test && ecargo_test --no-run
+
+	if use fuzzer; then
+		cd fuzz
+		ecargo_build_fuzzer
+	fi
+}
+
+src_test() {
+	(
+		cd wire_format_derive || die
+		cros-rust_src_test
+	)
+
+	cros-rust_src_test
+}
+
+src_install() {
+	pushd wire_format_derive > /dev/null || die
+	local version="$(get_crate_version .)"
+	cros-rust_publish wire_format_derive "${version}"
+	popd > /dev/null || die
+
+	version="$(get_crate_version .)"
+	cros-rust_publish p9 "${version}"
+
+	if use fuzzer; then
+		fuzzer_install "${S}/fuzz/OWNERS" \
+			"$(cros-rust_get_build_dir)/p9_tframe_decode_fuzzer"
+	fi
+}
+
+pkg_preinst() {
+	cros-rust_pkg_preinst wire_format_derive
+	cros-rust_pkg_preinst p9
+}
+
+pkg_postinst() {
+	cros-rust_pkg_postinst wire_format_derive
+	cros-rust_pkg_postinst p9
+}
+
+pkg_prerm() {
+	cros-rust_pkg_prerm wire_format_derive
+	cros-rust_pkg_prerm p9
+}
diff --git a/dev-rust/p9/p9-9999.ebuild b/dev-rust/p9/p9-9999.ebuild
index 2d33c1e..8dc4fa4 100644
--- a/dev-rust/p9/p9-9999.ebuild
+++ b/dev-rust/p9/p9-9999.ebuild
@@ -21,14 +21,17 @@
 
 DEPEND="
 	dev-rust/libc:=
-	dev-rust/libchromeos:=
 	=dev-rust/proc-macro2-1*:=
 	=dev-rust/quote-1*:=
 	=dev-rust/syn-1*:=
+	dev-rust/sys_util:=
 	fuzzer? ( dev-rust/cros_fuzz:= )
 "
-
-RDEPEND="!!<=dev-rust/p9-0.1.0-r14"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/p9-0.1.0-r14
+"
 
 get_crate_version() {
 	local crate="$1"
@@ -41,10 +44,11 @@
 }
 
 src_compile() {
-	pushd wire_format_derive > /dev/null || die
-	ecargo_build
-	use test && ecargo_test --no-run
-	popd > /dev/null || die
+	(
+		cd wire_format_derive || die
+		ecargo_build
+		use test && ecargo_test --no-run
+	)
 
 	ecargo_build
 	use test && ecargo_test --no-run
@@ -79,6 +83,11 @@
 	fi
 }
 
+pkg_preinst() {
+	cros-rust_pkg_preinst wire_format_derive
+	cros-rust_pkg_preinst p9
+}
+
 pkg_postinst() {
 	cros-rust_pkg_postinst wire_format_derive
 	cros-rust_pkg_postinst p9
diff --git a/dev-rust/parking_lot/Manifest b/dev-rust/parking_lot/Manifest
index 6c722c0..b9d5211 100644
--- a/dev-rust/parking_lot/Manifest
+++ b/dev-rust/parking_lot/Manifest
@@ -1,2 +1,3 @@
 DIST parking_lot-0.4.8.crate 33640 BLAKE2B 81c0728e9fdaf451521bd0efac9799d7f943e0684a41e09c022c0888fbc147f7592e7c5b337261879c28b94e0a4d2de319ee7ba778d4a60b01195dc4d0f9e83a SHA512 cc7a68ae86022b97861743c49f792450c2e8aa9ead3243804155b4e37dea4d1cc5f826b6ce314bd8beb409dd60e94868c9e2f4954a398e92f541206ff589dda6
 DIST parking_lot-0.7.1.crate 32670 BLAKE2B 46faa97dd3e3e5625fc40de75eb75f17512ba63ff5ef3ee380fc549bc08b3a119a91622cc67014b9c072ae0f5ab05b10f52c24486fc03633d850ce22812dfe4f SHA512 d83d3c457e15ffce500d4fc82d0b9840ea2ed36d43d4eca841b05b0a9ee73ff6fcce07ccc3a6f0d06d950d7beff85db0c3d13dc1461adfef390d6b3d85367bed
+DIST parking_lot-0.9.0.crate 35170 BLAKE2B 3de9050c5dbbc7a0b98a5cad05dd485142bb2a22e65216a20f6e87deb6d124b4502cdb3837dbdc992ff5ea62c67e1545bab269237988832d365fba265149d245 SHA512 148da5edc08da3b27bfcc94a1c0578f228ccfbdf7a7a6f3aa73ac34e290d795f4169553bc7c2b20227e095e8ac75446db51979b595e4d77fa7c76f743138a331
diff --git a/dev-rust/parking_lot/parking_lot-0.9.0.ebuild b/dev-rust/parking_lot/parking_lot-0.9.0.ebuild
new file mode 100644
index 0000000..b632d1f
--- /dev/null
+++ b/dev-rust/parking_lot/parking_lot-0.9.0.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="More compact and efficient implementations of the standard synchronization primitives."
+HOMEPAGE="https://crates.io/crates/parking_lot"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/lock_api-0.3.1:= <dev-rust/lock_api-0.4.0
+	=dev-rust/parking_lot_core-0.6*:=
+	=dev-rust/rustc_version-0.2*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/parking_lot_core/Manifest b/dev-rust/parking_lot_core/Manifest
index bb10667..f87301b 100644
--- a/dev-rust/parking_lot_core/Manifest
+++ b/dev-rust/parking_lot_core/Manifest
@@ -1,2 +1,3 @@
 DIST parking_lot_core-0.2.14.crate 22140 BLAKE2B 485d81c05b6fd0744424d071b3ead634503b6fcc38749c6e63f1ac39faf8483f4043e37491994fb009e69a3932a203461fea3843d132ef39095b83ee6fe605ab SHA512 21b6994c4990bb7e2d05f791bca8a2eabefd29b829ebc0f22893c0d7a9d2318946ac9e37a215df3555b653fd2b7bc680bd35d3d7c2ec7db90dfd4bd0a9e82a82
 DIST parking_lot_core-0.4.0.crate 26817 BLAKE2B f8a733cd6e14a2ad40adf498a3aa23bf3ad06e788f440bb435c544e5ff9750dab963ce4fc673014e54a851ed541975116f18f102f935e21912fc5b65a6aaef19 SHA512 25c0389e9d3d88725398fb304d3a4c20a3da0bf0d67f12c7cdca38f8068dc6ea7b57341579136cf4792cbb92fd64dd33cd91412463f4df8902e1b8c87ca08d08
+DIST parking_lot_core-0.6.2.crate 30598 BLAKE2B 048e87b1a785da927afc368290c2e1dd762d98239d862a1aad4850d9498b91e8d64c399bfda0586c23f02fd8839723af1d5e2ef3e714cd932ac11a111b978543 SHA512 5de5d9cac290d7d6e6a3e1fbba2784cce8b4ed163481e1cc6ec36498884b5e3cf0225c718551289be164d1a4e192de390201a083560898e4a42a4068661c0689
diff --git a/dev-rust/parking_lot_core/parking_lot_core-0.6.2.ebuild b/dev-rust/parking_lot_core/parking_lot_core-0.6.2.ebuild
new file mode 100644
index 0000000..f9dadb0
--- /dev/null
+++ b/dev-rust/parking_lot_core/parking_lot_core-0.6.2.ebuild
@@ -0,0 +1,30 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+CROS_RUST_REMOVE_TARGET_CFG=1
+
+inherit cros-rust
+
+DESCRIPTION="An advanced API for creating custom synchronization primitives."
+HOMEPAGE="https://crates.io/crates/parking_lot_core"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( Apache-2.0 MIT )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/backtrace-0.3.2:= <dev-rust/backtrace-0.4.0
+	>=dev-rust/cfg-if-0.1.5:= <dev-rust/cfg-if-0.2.0
+	>=dev-rust/petgraph-0.4.5:= <dev-rust/petgraph-0.5.0
+	=dev-rust/smallvec-0.6*:=
+	>=dev-rust/thread-id-3.2.0:= <dev-rust/thread-id-4.0.0
+	=dev-rust/rustc_version-0.2*:=
+	>=dev-rust/libc-0.2.55:= <dev-rust/libc-0.3.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/petgraph/petgraph-0.4.5.ebuild b/dev-rust/petgraph/petgraph-0.4.5.ebuild
new file mode 100644
index 0000000..e5b72b0
--- /dev/null
+++ b/dev-rust/petgraph/petgraph-0.4.5.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_EMPTY_CRATE=1
+
+inherit cros-rust
+
+DESCRIPTION="Empty crate"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/pin-project-lite/Manifest b/dev-rust/pin-project-lite/Manifest
new file mode 100644
index 0000000..e316cd2
--- /dev/null
+++ b/dev-rust/pin-project-lite/Manifest
@@ -0,0 +1 @@
+DIST pin-project-lite-0.2.4.crate 22840 BLAKE2B 61c8e1a09cf892132499d76a9df2977445526aa27c4f3e5366e67f36551700cb9fc403fb765c4485de688285856151e06f9b26540422e1904659ab00a33866c8 SHA512 1bc1632806a0a463681ffc5d44cb4501a079801e01886fb8755f590f5b9de39897c5da82e137eb07403f32f1faf64e5dd91f5b4fc872c6bd406aae3bb6b6e26c
diff --git a/dev-rust/pin-project-lite/OWNERS b/dev-rust/pin-project-lite/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/pin-project-lite/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/pin-project-lite/pin-project-lite-0.2.4.ebuild b/dev-rust/pin-project-lite/pin-project-lite-0.2.4.ebuild
new file mode 100644
index 0000000..1ac8e17
--- /dev/null
+++ b/dev-rust/pin-project-lite/pin-project-lite-0.2.4.ebuild
@@ -0,0 +1,16 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A lightweight version of pin-project written with declarative macros."
+HOMEPAGE="https://github.com/taiki-e/pin-project-lite"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
diff --git a/dev-rust/pin-utils/Manifest b/dev-rust/pin-utils/Manifest
index bfc8778..4d445fd 100644
--- a/dev-rust/pin-utils/Manifest
+++ b/dev-rust/pin-utils/Manifest
@@ -1 +1 @@
-DIST pin-utils-0.1.0-alpha.4.crate 7446 BLAKE2B 0b90420f86f32201f922f4f47f9caf5eb4218a1f6380ea88f69cdd118f5d0794ad2888b55b3492490905e64d4d74389b7ae01faa748eb3dd705c869731846812 SHA512 be36fb4a8a893a0d617b2f1edef7513bf515d36e000aa0344838f138f7073c970110fc3969ff1d8eadb8f86d3ac567e5668af95044133c47c99ba5e1a901415f
+DIST pin-utils-0.1.0.crate 7580 BLAKE2B 457e1287202f16d1873b24bf4f1de1828300128c4ba3131758e64f9784d36d47365f22d85493c3a85d854f0d8dbb4c6cef3a0f5b064014dc03943e58b7ba9178 SHA512 828422b8440cc82ac6b0743e0112fa7540d437aed457564999092b1462cd7672cd6b1f0201b67075431aeedd3d9c5127468a3dd028744109944f7f023c82fd70
diff --git a/dev-rust/pin-utils/OWNERS b/dev-rust/pin-utils/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/pin-utils/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/pin-utils/pin-utils-0.1.0.ebuild b/dev-rust/pin-utils/pin-utils-0.1.0.ebuild
new file mode 100644
index 0000000..68110cb
--- /dev/null
+++ b/dev-rust/pin-utils/pin-utils-0.1.0.ebuild
@@ -0,0 +1,16 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Utilities for pinning"
+HOMEPAGE="https://github.com/rust-lang-nursery/pin-utils"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+RDEPEND="!~dev-rust/${PN}-0.1.0_alpha4"
diff --git a/dev-rust/pin-utils/pin-utils-0.1.0_alpha4.ebuild b/dev-rust/pin-utils/pin-utils-0.1.0_alpha4.ebuild
deleted file mode 100644
index ecc3d8c..0000000
--- a/dev-rust/pin-utils/pin-utils-0.1.0_alpha4.ebuild
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_CRATE_VERSION="0.1.0-alpha.4"
-S="${WORKDIR}/pin-utils-${CROS_RUST_CRATE_VERSION}"
-inherit cros-rust
-
-
-DESCRIPTION="Utilities for pinning"
-HOMEPAGE="https://github.com/rust-lang-nursery/pin-utils"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/pin-utils-${CROS_RUST_CRATE_VERSION}/download -> pin-utils-${CROS_RUST_CRATE_VERSION}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/proc-macro-hack/Manifest b/dev-rust/proc-macro-hack/Manifest
index 5fc2d94..dcc25db 100644
--- a/dev-rust/proc-macro-hack/Manifest
+++ b/dev-rust/proc-macro-hack/Manifest
@@ -1 +1 @@
-DIST proc-macro-hack-0.5.11.crate 11017 BLAKE2B 06b0c2f056b6e5932aa8227a04fe7afa984d61095ed95cb2d4f6296bd28a7f53c8899d1542609861ca412da01575c0f21ab124004f7f5106ee5534dced878fcb SHA512 675203a929bc362bb2e0c8ccacc2bd710c8613f1cf5c2e0035ce015f2778bec3248377380f15a5bf36a7ce7c25cf95909f50d79820c19e6c798f6376e2e9c913
+DIST proc-macro-hack-0.5.19.crate 15556 BLAKE2B 98c22fc3e5f5fa8b6f44d15de42b6ffcc82ba3f98a07ffa48bcbc5d3abcfca6af136c5d0d8c7f1ca34261ed8f8c9c17a394231f97a4c342c81aa7f8b9e74b203 SHA512 9e4cbec41056438287f5b23086264c86e2f0cdc193064006556736377b2954229de13a585149b9995002c9aee3334ee2a80ae4afdcc96cabe7ed2bf718476952
diff --git a/dev-rust/proc-macro-hack/OWNERS b/dev-rust/proc-macro-hack/OWNERS
new file mode 100644
index 0000000..9c248e0
--- /dev/null
+++ b/dev-rust/proc-macro-hack/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/libchromeos-rs/OWNERS
diff --git a/dev-rust/proc-macro-hack/proc-macro-hack-0.5.11.ebuild b/dev-rust/proc-macro-hack/proc-macro-hack-0.5.11.ebuild
deleted file mode 100644
index f0f1c05..0000000
--- a/dev-rust/proc-macro-hack/proc-macro-hack-0.5.11.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="Procedural macros in expression position"
-HOMEPAGE="https://github.com/dtolnay/proc-macro-hack"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/proc-macro2-1*:=
-	=dev-rust/quote-1*:=
-	>=dev-rust/syn-1.0.5:= <dev-rust/syn-2
-"
diff --git a/dev-rust/proc-macro-hack/proc-macro-hack-0.5.19.ebuild b/dev-rust/proc-macro-hack/proc-macro-hack-0.5.19.ebuild
new file mode 100644
index 0000000..23a3835
--- /dev/null
+++ b/dev-rust/proc-macro-hack/proc-macro-hack-0.5.19.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Procedural macros in expression position"
+HOMEPAGE="https://github.com/dtolnay/proc-macro-hack"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+RDEPEND="!~dev-rust/${PN}-0.5.11"
diff --git a/dev-rust/proc-macro2/Manifest b/dev-rust/proc-macro2/Manifest
index 7334bb7..ed12e45 100644
--- a/dev-rust/proc-macro2/Manifest
+++ b/dev-rust/proc-macro2/Manifest
@@ -1,2 +1,3 @@
 DIST proc-macro2-0.4.21.crate 30813 BLAKE2B acf36197ae0bbd69e4b85c360831f9056dffa343165f665621c3e3b1aa29edd5d20d2b046a1dc8a401e758402d80096875c96915b15cb218a019169eab439df9 SHA512 9e0603d634d0748047dbc0e4c44dce54cba1026ed76945b09ed72224c015465cc8541d4045185f8b8cf6ff316daec50bc5a3ad7ddf5015aa971135497e5261ed
-DIST proc-macro2-1.0.19.crate 36390 BLAKE2B d21272e6bbe7bc5953ca388181a3875e6a3426e48ba3eb8808ec51fd2139093b60260998509b81ab1d67dceb4f9a0a255c234912d41739a7420537615ad3a4f0 SHA512 046f65ee0eefc1bfa39a405f46a7aa5ba83a11af057f150700412bc79a7a76d713f020377f38171086da58ee15e3db784c3e198cd18cc852add405e5e27eaeea
+DIST proc-macro2-1.0.24.crate 37716 BLAKE2B e2bdbc7cc9ea254529e322f6a2eb44002b4994fc4a00df32012f66740e8e73ae70820dd40b7fcfcf024f3c7784ab9add5cc1db37f4c72d5af5c8f00164ebc145 SHA512 c3d23a5136c55d734084ce1d76d54f237fc1003074af102c2ad96d851ac496ffc7513ddc505a68af4051c9d6de09725a0ecb6e76ebcdd77a1c056f8f9242c9be
+DIST proc-macro2-1.0.26.crate 38233 BLAKE2B e44a5d98fbf75130c0eeb8fad6d025ce66fe41cc5ef882f418bd8c9e5d228d712020e309dad68e2f862e5f9216a1103fd6e69953e17c213166467b335f604802 SHA512 e6d39cc0d5ec644e3fb424347bde0a82a8ce8549745a1a827bf4dc21f6248471935b5499c3b6d1b7a129f0ddc560754254c528ac39fb1fce2ec3bd9520afc3e2
diff --git a/dev-rust/proc-macro2/proc-macro2-1.0.19.ebuild b/dev-rust/proc-macro2/proc-macro2-1.0.19.ebuild
deleted file mode 100644
index 5c9cd52..0000000
--- a/dev-rust/proc-macro2/proc-macro2-1.0.19.ebuild
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-inherit cros-rust
-
-DESCRIPTION="Stable implemntation of the upcoming 'proc_macro' API"
-HOMEPAGE="https://github.com/alexcrichton/proc-macro2"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/unicode-xid-0.2*:=
-"
diff --git a/dev-rust/proc-macro2/proc-macro2-1.0.24.ebuild b/dev-rust/proc-macro2/proc-macro2-1.0.24.ebuild
new file mode 100644
index 0000000..7195f87
--- /dev/null
+++ b/dev-rust/proc-macro2/proc-macro2-1.0.24.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Stable implementation of the upcoming 'proc_macro' API"
+HOMEPAGE="https://github.com/alexcrichton/proc-macro2"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/unicode-xid-0.2*:=
+"
diff --git a/dev-rust/proc-macro2/proc-macro2-1.0.26-r1.ebuild b/dev-rust/proc-macro2/proc-macro2-1.0.26-r1.ebuild
new file mode 100644
index 0000000..e93eeec
--- /dev/null
+++ b/dev-rust/proc-macro2/proc-macro2-1.0.26-r1.ebuild
@@ -0,0 +1,19 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Stable implementation of the upcoming 'proc_macro' API"
+HOMEPAGE="https://github.com/alexcrichton/proc-macro2"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/unicode-xid-0.2*:=
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/proc-macro2/proc-macro2-1.0.26.ebuild b/dev-rust/proc-macro2/proc-macro2-1.0.26.ebuild
new file mode 100644
index 0000000..4e66a47
--- /dev/null
+++ b/dev-rust/proc-macro2/proc-macro2-1.0.26.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Stable implementation of the upcoming 'proc_macro' API"
+HOMEPAGE="https://github.com/alexcrichton/proc-macro2"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/unicode-xid-0.2*:=
+"
diff --git a/dev-rust/protobuf-codegen/Manifest b/dev-rust/protobuf-codegen/Manifest
index d714190..cef6cfc 100644
--- a/dev-rust/protobuf-codegen/Manifest
+++ b/dev-rust/protobuf-codegen/Manifest
@@ -1 +1,2 @@
 DIST protobuf-codegen-2.16.2.crate 38790 BLAKE2B 4831d8a196b2ee77ec5e7b8145e0ad12b3decc12aea4db1e41872edae3bcdbac9bc89887c16ea5b7e21d86b1ef6bbc858336d1cdf13e251c437cac504fad72b5 SHA512 3c0c8195eb46582b14deef786f941e2b83449dbe2e169e51c2a627859cfcf2f8360e27ce849186d585ecb8505abea73f35c690e885d87132273f2c6b4461b497
+DIST protobuf-codegen-2.24.1.crate 39738 BLAKE2B b7195f7a6de009dbf0efab12ed506cf112ccf7fb757b78ea3356c71c76d57cfe0bd8f929a2d605fec228cfad64706b89b6705dbd7f5d202ebb035b823e7f692a SHA512 d7517eed44eae5c3d6359b12a38fd077e664e6dd21f75a6f850ae00c3473f08c38926c53309dedbe2d28e914227d362cee3b15f0c00e9d7e0e771a438f834439
diff --git a/dev-rust/protobuf-codegen/protobuf-codegen-2.24.1.ebuild b/dev-rust/protobuf-codegen/protobuf-codegen-2.24.1.ebuild
new file mode 100644
index 0000000..ed822db
--- /dev/null
+++ b/dev-rust/protobuf-codegen/protobuf-codegen-2.24.1.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Protobuf code generator and a protoc-gen-rust protoc plugin"
+HOMEPAGE="https://github.com/stepancheg/rust-protobuf/protobuf-codegen"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+
+DEPEND="
+	~dev-rust/protobuf-${PV}:=
+"
+
+RDEPEND="${DEPEND}"
+
+src_compile() {
+	ecargo_build
+}
+
+src_install() {
+	cros-rust_publish "${PN}" "$(cros-rust_get_crate_version)"
+	dobin "$(cros-rust_get_build_dir)/protoc-gen-rust"
+}
diff --git a/dev-rust/protobuf/Manifest b/dev-rust/protobuf/Manifest
index 51197f0..6541f1b 100644
--- a/dev-rust/protobuf/Manifest
+++ b/dev-rust/protobuf/Manifest
@@ -1 +1,2 @@
 DIST protobuf-2.16.2.crate 145854 BLAKE2B 528b0ca240c44d6487287f1e0eab68653fee438a804f26eaa5c8c1f8c511c9b423c1942188511ae482b1f86bde1ce57dcb3645c7f45610f8152b265216485805 SHA512 76943afb0889578dd89e275e247cf191f2344a25f008a68ae9fb04daba720093842510b5366c7df6c12c00ea50994c46cd256f18a0b1369a36e89c5e31a3bddb
+DIST protobuf-2.24.1.crate 163281 BLAKE2B 4bc1427d9efe40a6f73a6f9cf2d2d1da034c64571c33405c64d28b711e462c52df0c1d405b0887845356a1ced82b08c2df7696d3174992f371baecfe4cdcf998 SHA512 a52d2ce699b560a2fa6b6402d36158fb9d67685c1024b9d853a386947e3092b002674129a4395352bba1fe3b79ea6e65843690dbbc98045adf1ce5d00e9e2ff7
diff --git a/dev-rust/protobuf/protobuf-2.24.1.ebuild b/dev-rust/protobuf/protobuf-2.24.1.ebuild
new file mode 100644
index 0000000..c19f100
--- /dev/null
+++ b/dev-rust/protobuf/protobuf-2.24.1.ebuild
@@ -0,0 +1,22 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Rust implementation of Google protocol buffers"
+HOMEPAGE="https://github.com/stepancheg/rust-protobuf/"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/bytes-0.5*:=
+	=dev-rust/serde-1*:=
+	=dev-rust/serde_derive-1*:=
+"
+
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/protoc-rust/Manifest b/dev-rust/protoc-rust/Manifest
index 94d0670..a36d915 100644
--- a/dev-rust/protoc-rust/Manifest
+++ b/dev-rust/protoc-rust/Manifest
@@ -1 +1,2 @@
 DIST protoc-rust-2.16.2.crate 4622 BLAKE2B 47c1ae2f96a4da593da59f007a7d56b61e69d45c4859101794200c829bb4870c5a4506d4c031abdc9d8a9e8cf4ac2a19aa8f09c2315bb513f4a2e5848029ab35 SHA512 05dbd83addb8bcce2dda6d5cf517463cd67dfd80c0a6815e32c7cfd5d1bcf3ccaa460da7f8eba6e449aa8204ff6a81f2a167ed214e7c72e2f03baad3a6ebc45a
+DIST protoc-rust-2.24.1.crate 4599 BLAKE2B 70eff71fd343dbe94bd636db75ad4f311c63c06efe9f68b274af120c3c50d92cdfd558ba7c79ec671eb26dfbf0bf51eb2c7908077c369d283ae1908bc02f872c SHA512 d61810f22841bb564719f8024a66cbe7713e03c8861b1472981ed8b858576d5f18e50784ea5f8051711b316d5a3a2f76114ca172e49084f9be128b0f5a60b4ad
diff --git a/dev-rust/protoc-rust/protoc-rust-2.24.1.ebuild b/dev-rust/protoc-rust/protoc-rust-2.24.1.ebuild
new file mode 100644
index 0000000..f80d409
--- /dev/null
+++ b/dev-rust/protoc-rust/protoc-rust-2.24.1.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="protoc --rust_out=... available as API."
+HOMEPAGE="https://github.com/stepancheg/rust-protobuf/protoc-rust/"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+
+DEPEND="
+	~dev-rust/protobuf-${PV}:=
+	~dev-rust/protobuf-codegen-${PV}:=
+	~dev-rust/protoc-${PV}:=
+	=dev-rust/tempfile-3*:=
+"
+
+RDEPEND=${DEPEND}
diff --git a/dev-rust/protoc/Manifest b/dev-rust/protoc/Manifest
index fcf8c8d..bfcba1f 100644
--- a/dev-rust/protoc/Manifest
+++ b/dev-rust/protoc/Manifest
@@ -1 +1,2 @@
 DIST protoc-2.16.2.crate 4711 BLAKE2B 640c8bfc7cc94728a6450eeea6f4938c3386bcd1e7bea3da25df0760dc17eb05081f7cf4bc74bec1377818a84e0e7d0895f028f8d2906d2fa53b9ea7c0783846 SHA512 7c70d9a74300bff2c14ecffcb4d60961a3d38a4e7d70765d36864b566a1b307248bd2b53b8fe917f978f557de5ac5044ccddc37896aa9acf417a16698e5048b9
+DIST protoc-2.24.1.crate 4739 BLAKE2B 00a5d29e2aaeb4f2b906ef08df97277df7b6d4d4bb8251063e647c67000962fe19afaee619a87979f94f80980ff82dfe9728aa8ad85d5841adbeb70c5934aab6 SHA512 f074de3fd11327fb30ee070111bfa62d3f302b6c24664e5cb0f88e98808cdda96b2ac931666b57ecfc7ddbb42c53c4cee58ca3c8be56ab93324b923664062360
diff --git a/dev-rust/protoc/protoc-2.24.1.ebuild b/dev-rust/protoc/protoc-2.24.1.ebuild
new file mode 100644
index 0000000..9fecbd2
--- /dev/null
+++ b/dev-rust/protoc/protoc-2.24.1.ebuild
@@ -0,0 +1,22 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Protobuf protoc command as API"
+HOMEPAGE="https://github.com/stepancheg/rust-protobuf/protoc/"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+# This is required for the actual protoc binary.
+BDEPEND="dev-libs/protobuf"
+
+DEPEND="
+	=dev-rust/log-0*:=
+	=dev-rust/which-4*:=
+"
diff --git a/dev-rust/quote/Manifest b/dev-rust/quote/Manifest
index 61d9e2a..55742e8 100644
--- a/dev-rust/quote/Manifest
+++ b/dev-rust/quote/Manifest
@@ -1,2 +1,2 @@
 DIST quote-0.6.10.crate 15795 BLAKE2B f81cf2cc13efb42bcf90f4c9cce832d94b2138428d133516d579a0eed157bacda9f5b29cd1c604a89261390ec011fe4825c31788486db007efd97fbb3de261f6 SHA512 92250a3664fe872175ee8c8aa7c4fec121ffe6fcec11a957646fab1297e9e946be03924ce1d7897125cdc0d4883400ac05774ed55a32f943a129fa8d48a1a162
-DIST quote-1.0.2.crate 23023 BLAKE2B 4091809b4fc9b8d0b56be814b127d6ffd7c1507becba85dc905606cbe85f46233dc4b429c1e865e7c7de336cb936d956169ceb5dd45b489b7722022ccf818a3a SHA512 67778dff9dc5c4edcdd6454b74ad9353bb6c0c4e51c16cb82f2e393a7d7a0cde084d3c93279b718a8398c40af0a9377ebfae5321e69e635efd8390c125b75ce4
+DIST quote-1.0.9.crate 25042 BLAKE2B 26ef31e89fd2f0cc21ff65f8072f30c7977ac634d2536cf9845a0894d6659f62a96cd0a6ee48f7706036c2c1b898ef8c9167bd62714ad0c9cba4fb02f30922af SHA512 dd6cdaea183b85400531ef01e56657edbec0d8f7c27898c1e591b72dff755fa5875b33ca320bd65be0e9aecfc6a61ec119a4bd1291e9f2057fca642ab5b198c8
diff --git a/dev-rust/quote/OWNERS b/dev-rust/quote/OWNERS
new file mode 100644
index 0000000..25425c7
--- /dev/null
+++ b/dev-rust/quote/OWNERS
@@ -0,0 +1 @@
+include /dev-util/cxxbridge-cmd/OWNERS
diff --git a/dev-rust/quote/quote-1.0.2.ebuild b/dev-rust/quote/quote-1.0.2.ebuild
deleted file mode 100644
index b2470f6..0000000
--- a/dev-rust/quote/quote-1.0.2.ebuild
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Quasi-quoting macro quote!(...)"
-HOMEPAGE="https://github.com/dtolnay/quote"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/proc-macro2-1*:=
-"
diff --git a/dev-rust/quote/quote-1.0.9.ebuild b/dev-rust/quote/quote-1.0.9.ebuild
new file mode 100644
index 0000000..e366bda
--- /dev/null
+++ b/dev-rust/quote/quote-1.0.9.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Quasi-quoting macro quote!(...)"
+HOMEPAGE="https://crates.io/crates/quote"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/proc-macro2-1.0.20:= <dev-rust/proc-macro2-2.0.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/rand/rand-0.4.2-r1.ebuild b/dev-rust/rand/rand-0.4.2-r1.ebuild
new file mode 120000
index 0000000..862b848
--- /dev/null
+++ b/dev-rust/rand/rand-0.4.2-r1.ebuild
@@ -0,0 +1 @@
+rand-0.4.2.ebuild
\ No newline at end of file
diff --git a/dev-rust/rand/rand-0.4.2.ebuild b/dev-rust/rand/rand-0.4.2.ebuild
index a5b52da..0cb5857 100644
--- a/dev-rust/rand/rand-0.4.2.ebuild
+++ b/dev-rust/rand/rand-0.4.2.ebuild
@@ -17,3 +17,4 @@
 	>=dev-rust/winapi-0.3.0:=
 	>=dev-rust/libc-0.2.0:=
 "
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/rand/rand-0.6.5-r1.ebuild b/dev-rust/rand/rand-0.6.5-r1.ebuild
new file mode 120000
index 0000000..9f13217
--- /dev/null
+++ b/dev-rust/rand/rand-0.6.5-r1.ebuild
@@ -0,0 +1 @@
+rand-0.6.5.ebuild
\ No newline at end of file
diff --git a/dev-rust/rand/rand-0.6.5-r2.ebuild b/dev-rust/rand/rand-0.6.5-r2.ebuild
new file mode 120000
index 0000000..9f13217
--- /dev/null
+++ b/dev-rust/rand/rand-0.6.5-r2.ebuild
@@ -0,0 +1 @@
+rand-0.6.5.ebuild
\ No newline at end of file
diff --git a/dev-rust/rand/rand-0.6.5.ebuild b/dev-rust/rand/rand-0.6.5.ebuild
index f817399..d9318d7 100644
--- a/dev-rust/rand/rand-0.6.5.ebuild
+++ b/dev-rust/rand/rand-0.6.5.ebuild
@@ -1,7 +1,7 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 inherit cros-rust
 
@@ -29,6 +29,7 @@
 	=dev-rust/rand_os-0.1*:=
 	=dev-rust/winapi-0.3*:=
 "
+RDEPEND="${DEPEND}"
 
 src_prepare() {
 	cros-rust_src_prepare
@@ -37,4 +38,8 @@
 	# down to bindgen and beyond.
 	sed -i '/\[dependencies.packed_simd\]/{N;N;N;d;}' "${S}/Cargo.toml"
 	sed -i '/simd_support/d' "${S}/Cargo.toml"
+
+	# Delete the wasm-only features.
+	sed -i '/stdweb = /d' "${S}/Cargo.toml"
+	sed -i '/wasm-bindgen = /d' "${S}/Cargo.toml"
 }
diff --git a/dev-rust/rand/rand-0.7.3-r1.ebuild b/dev-rust/rand/rand-0.7.3-r1.ebuild
new file mode 120000
index 0000000..14e3199
--- /dev/null
+++ b/dev-rust/rand/rand-0.7.3-r1.ebuild
@@ -0,0 +1 @@
+rand-0.7.3.ebuild
\ No newline at end of file
diff --git a/dev-rust/rand/rand-0.7.3-r2.ebuild b/dev-rust/rand/rand-0.7.3-r2.ebuild
new file mode 120000
index 0000000..14e3199
--- /dev/null
+++ b/dev-rust/rand/rand-0.7.3-r2.ebuild
@@ -0,0 +1 @@
+rand-0.7.3.ebuild
\ No newline at end of file
diff --git a/dev-rust/rand/rand-0.7.3.ebuild b/dev-rust/rand/rand-0.7.3.ebuild
index 7515fce..562e2bd 100644
--- a/dev-rust/rand/rand-0.7.3.ebuild
+++ b/dev-rust/rand/rand-0.7.3.ebuild
@@ -24,6 +24,7 @@
 	=dev-rust/rand_hc-0.2*:=
 	=dev-rust/rand_pcg-0.2*:=
 "
+RDEPEND="${DEPEND}"
 
 src_prepare() {
 	cros-rust_src_prepare
@@ -32,4 +33,8 @@
 	# down to bindgen and beyond.
 	sed -i '/\[dependencies.packed_simd\]/{N;N;N;d;}' "${S}/Cargo.toml"
 	sed -i '/simd_support/d' "${S}/Cargo.toml"
+
+	# Delete the wasm-only features.
+	sed -i '/stdweb = /d' "${S}/Cargo.toml"
+	sed -i '/wasm-bindgen = /d' "${S}/Cargo.toml"
 }
diff --git a/dev-rust/rand_isaac/rand_isaac-0.1.1-r1.ebuild b/dev-rust/rand_isaac/rand_isaac-0.1.1-r1.ebuild
new file mode 100644
index 0000000..ae125be
--- /dev/null
+++ b/dev-rust/rand_isaac/rand_isaac-0.1.1-r1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Implements the ISAAC and ISAAC-64 random number generators"
+HOMEPAGE="https://github.com/rust-random/rand"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	~dev-rust/rand_core_transitional-0.3.1:=
+	=dev-rust/serde-1*:=
+	>=dev-rust/serde_derive-1.0.38:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/rand_os/rand_os-0.1.2-r1.ebuild b/dev-rust/rand_os/rand_os-0.1.2-r1.ebuild
new file mode 120000
index 0000000..57abf94
--- /dev/null
+++ b/dev-rust/rand_os/rand_os-0.1.2-r1.ebuild
@@ -0,0 +1 @@
+rand_os-0.1.2.ebuild
\ No newline at end of file
diff --git a/dev-rust/rand_os/rand_os-0.1.2.ebuild b/dev-rust/rand_os/rand_os-0.1.2.ebuild
index 68c1ef7..ee705c1 100644
--- a/dev-rust/rand_os/rand_os-0.1.2.ebuild
+++ b/dev-rust/rand_os/rand_os-0.1.2.ebuild
@@ -1,7 +1,9 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
+
+CROS_RUST_REMOVE_TARGET_CFG=1
 
 inherit cros-rust
 
@@ -14,13 +16,10 @@
 KEYWORDS="*"
 
 DEPEND="
-	>=dev-rust/cloudabi-0.0.3:=
-	=dev-rust/fuchsia-cprng-0.1*:=
 	=dev-rust/libc-0.2*:=
 	=dev-rust/log-0.4*:=
 	~dev-rust/rand_core-0.4.0:=
-	~dev-rust/rdrand-0.4.0:=
 	=dev-rust/stdweb-0.4*:=
-	>=dev-rust/wasm-bindgen-0.2.12:=
-	=dev-rust/winapi-0.3*:=
+	>=dev-rust/wasm-bindgen-0.2.12:= <dev-rust/wasm-bindgen-0.3.0
 "
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/rand_pcg/rand_pcg-0.1.2-r1.ebuild b/dev-rust/rand_pcg/rand_pcg-0.1.2-r1.ebuild
new file mode 100644
index 0000000..dacbc6a
--- /dev/null
+++ b/dev-rust/rand_pcg/rand_pcg-0.1.2-r1.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Implements a selection of PCG random number generators."
+HOMEPAGE="https://github.com/rust-random/rand"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/autocfg-0.1*:=
+	~dev-rust/rand_core-0.4.0:=
+	=dev-rust/serde-1*:=
+	>=dev-rust/serde_derive-1.0.38:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/rand_xorshift/rand_xorshift-0.1.1-r1.ebuild b/dev-rust/rand_xorshift/rand_xorshift-0.1.1-r1.ebuild
new file mode 100644
index 0000000..db047f3
--- /dev/null
+++ b/dev-rust/rand_xorshift/rand_xorshift-0.1.1-r1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Implements the Xorshift random number generator"
+HOMEPAGE="https://github.com/rust-random/rand"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	~dev-rust/rand_core_transitional-0.3.1:=
+	=dev-rust/serde-1*:=
+	>=dev-rust/serde_derive-1.0.38:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/regex-syntax/Manifest b/dev-rust/regex-syntax/Manifest
index 022e4f1..5ef16c1 100644
--- a/dev-rust/regex-syntax/Manifest
+++ b/dev-rust/regex-syntax/Manifest
@@ -1,2 +1 @@
-DIST regex-syntax-0.6.21.crate 293572 BLAKE2B 49c499ba1c03447fe7c90f27147dc5d96daf815e330a4073fe293d3be594fab1d798d35a5e49f6af43c71befd47528927246c4ebb24b6a6a141135484bbecd31 SHA512 56507f4432804ea30820984f6cff03c3514988bc3e406b3ba3a89c36c9c5d75951e4acd000ba85b95bb83d253898ce7d7d282ed930e811e12bb644c4a5ec84fa
-DIST regex-syntax-0.6.5.crate 272475 BLAKE2B b2ff299b4b87ab91c925a10faa8a09507272600a12558cade5b18ce615844223384e8420f2025dbd642bf80acb5f608a6c0f5ca59a4c391d4f417fdea15058b0 SHA512 37f2c69b425335a28b8945fcd58a3a39a9adde5588fdcd4b460da0fbd137e0727a7835d71b4e87ff29185c153379402891847d93047e40a578f778a62b324f5d
+DIST regex-syntax-0.6.25.crate 293293 BLAKE2B d5ca0dbc26b03c6a1818026f9a69cd226ec934e7c64094d0ebe843052b648617ffae7aa3a074f8da46d03c46996d8b547d8916576342000bd9711089b3e57d73 SHA512 a3d31f82aadc6be1796f76c03152ff24f37fe42d6ce27fb98e2f55ab102f86502bc37ccd563f6e0eba61aab20d002184c618517b678b3b93cb8f0497cc046ca5
diff --git a/dev-rust/regex-syntax/regex-syntax-0.6.21.ebuild b/dev-rust/regex-syntax/regex-syntax-0.6.21.ebuild
deleted file mode 100644
index f0fcd1a..0000000
--- a/dev-rust/regex-syntax/regex-syntax-0.6.21.ebuild
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="A regular expression parser."
-HOMEPAGE="https://docs.rs/crate/regex/"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/regex-syntax/regex-syntax-0.6.25.ebuild b/dev-rust/regex-syntax/regex-syntax-0.6.25.ebuild
new file mode 100644
index 0000000..4fe2449
--- /dev/null
+++ b/dev-rust/regex-syntax/regex-syntax-0.6.25.ebuild
@@ -0,0 +1,19 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A regular expression parser."
+HOMEPAGE="https://github.com/rust-lang/regex"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/regex-syntax/regex-syntax-0.6.5.ebuild b/dev-rust/regex-syntax/regex-syntax-0.6.5.ebuild
deleted file mode 100644
index 5462058..0000000
--- a/dev-rust/regex-syntax/regex-syntax-0.6.5.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="A regular expression parser."
-HOMEPAGE="https://docs.rs/crate/regex/"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="MIT"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/ucd-util-0.1.0:= <dev-rust/ucd-util-0.2.0
-"
diff --git a/dev-rust/regex/Manifest b/dev-rust/regex/Manifest
index bcfbd2d..8a4f6bd 100644
--- a/dev-rust/regex/Manifest
+++ b/dev-rust/regex/Manifest
@@ -1,2 +1,2 @@
 DIST regex-1.0.6.crate 239455 BLAKE2B 0e81b18a220c6e81fb9185391f15faba2451b0fdebc7facc06a3ea76534ae32a76a6c573a686a72c62b30399939529fde08e6c33c4fe0d126df9cf5e11204456 SHA512 4779fe3896c131b418b07ec2622888b2b8dc64172744e6ff91c46a957646c796c46fcc5b1c37b5349f0c7a5adccee2e7af1e07121dfd2b59976bd0fde5b60bb4
-DIST regex-1.4.2.crate 236931 BLAKE2B f316b777df1c97aef2994745e1fbd9ca676b0da6bf4ffad4e54aa11014d39aed343884ede3648b5fd676dcec5e4840e9d84f4a4faaeefaf5a2d772e2c5b9ebf6 SHA512 a9bc8061b7563b8494b21f35bf3c2af5f58dcc1b0df4e25ab8d3f99ba66527d5163e2c04b229b688fcb7934961f718fab72f22d66fef53562c5d96a2fb3887de
+DIST regex-1.5.3.crate 236506 BLAKE2B 01ad8383c9a376b5d5464e31a6a74f5a35b36bd81fc4f31b3b0e4c7b62b1a6509b81e89d8daf9ad2ee607dfef8453a7d102ac1a3edfc67d4eedd7eef3acbfd22 SHA512 e8d1b009d093f7932894c9701947086867c24180dc4674bdee7acc19bb42fdd6554630b5960dcdeaea3e8a6d87358a3e4ac3e83b86c77842878d8487f1f1a61d
diff --git a/dev-rust/regex/regex-1.4.2.ebuild b/dev-rust/regex/regex-1.4.2.ebuild
deleted file mode 100644
index aa4b381..0000000
--- a/dev-rust/regex/regex-1.4.2.ebuild
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="An implementation of regular expressions for Rust."
-HOMEPAGE="https://docs.rs/crate/regex/"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/aho-corasick-0.7.6:= <dev-rust/aho-corasick-0.8.0
-	>=dev-rust/memchr-2.2.1:= <dev-rust/memchr-3.0.0
-	=dev-rust/thread_local-1*:=
-	>=dev-rust/regex-syntax-0.6.21:= <dev-rust/regex-syntax-0.7.0
-"
diff --git a/dev-rust/regex/regex-1.5.3.ebuild b/dev-rust/regex/regex-1.5.3.ebuild
new file mode 100644
index 0000000..a04f479
--- /dev/null
+++ b/dev-rust/regex/regex-1.5.3.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="An implementation of regular expressions for Rust. This implementation uses
+finite automata and guarantees linear time matching on all inputs."
+HOMEPAGE="https://github.com/rust-lang/regex"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/aho-corasick-0.7.18:= <dev-rust/aho-corasick-0.8.0
+	>=dev-rust/memchr-2.4.0:= <dev-rust/memchr-3.0.0
+	>=dev-rust/regex-syntax-0.6.25:= <dev-rust/regex-syntax-0.7.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/roxmltree/Manifest b/dev-rust/roxmltree/Manifest
new file mode 100644
index 0000000..ca6d956
--- /dev/null
+++ b/dev-rust/roxmltree/Manifest
@@ -0,0 +1 @@
+DIST roxmltree-0.13.1.crate 38393 BLAKE2B 2afb36af28010e86536491534055f8174dd6d68bc7bbb645386f7d0900337d1ac3fae46c4ae0669f580d0b0f16cd012b866d6935c40b86fe24dd8b7536fd58d1 SHA512 a2bb79f9bb0a02ce904fbffa300647d5017e3906d923918cfc426099e2bc7d941489e532f80354d148988e3df80feb836de2065116e5df3304a9e9c782b7b53c
diff --git a/dev-rust/roxmltree/OWNERS b/dev-rust/roxmltree/OWNERS
new file mode 100644
index 0000000..12f21f8
--- /dev/null
+++ b/dev-rust/roxmltree/OWNERS
@@ -0,0 +1 @@
+include /media-gfx/deqp-runner/OWNERS
diff --git a/dev-rust/roxmltree/roxmltree-0.13.1.ebuild b/dev-rust/roxmltree/roxmltree-0.13.1.ebuild
new file mode 100644
index 0000000..8d4f900
--- /dev/null
+++ b/dev-rust/roxmltree/roxmltree-0.13.1.ebuild
@@ -0,0 +1,20 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Represent an XML as a read-only tree."
+HOMEPAGE="https://github.com/RazrFalcon/roxmltree"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/xmlparser-0.13.3:= <dev-rust/xmlparser-0.14
+"
diff --git a/dev-rust/rustc-hash/rustc-hash-1.0.0.ebuild b/dev-rust/rustc-hash/rustc-hash-1.0.0.ebuild
deleted file mode 100644
index 072e90c..0000000
--- a/dev-rust/rustc-hash/rustc-hash-1.0.0.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_EMPTY_CRATE=1
-
-inherit cros-rust
-
-DESCRIPTION="Empty ${PN} crate"
-HOMEPAGE=""
-
-LICENSE="BSD-Google"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/rustc-std-workspace-alloc/rustc-std-workspace-alloc-1.0.0.ebuild b/dev-rust/rustc-std-workspace-alloc/rustc-std-workspace-alloc-1.0.0.ebuild
new file mode 100644
index 0000000..e5b72b0
--- /dev/null
+++ b/dev-rust/rustc-std-workspace-alloc/rustc-std-workspace-alloc-1.0.0.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_EMPTY_CRATE=1
+
+inherit cros-rust
+
+DESCRIPTION="Empty crate"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/rustc-std-workspace-std/rustc-std-workspace-std-1.0.0.ebuild b/dev-rust/rustc-std-workspace-std/rustc-std-workspace-std-1.0.0.ebuild
new file mode 100644
index 0000000..e5b72b0
--- /dev/null
+++ b/dev-rust/rustc-std-workspace-std/rustc-std-workspace-std-1.0.0.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_EMPTY_CRATE=1
+
+inherit cros-rust
+
+DESCRIPTION="Empty crate"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/ryu/Manifest b/dev-rust/ryu/Manifest
index ec1fb08..d1adfc2 100644
--- a/dev-rust/ryu/Manifest
+++ b/dev-rust/ryu/Manifest
@@ -1 +1,2 @@
 DIST ryu-0.2.8.crate 42798 BLAKE2B 393eba320c417af8d2cc23f5fc2874d7813fc3cd4804f7cba1d374f073f74bda4de8208544f30a5650d21cccad28611c8ab2bbdce15ba63b88d6b17100ac5ea7 SHA512 15a17fa06cb971847386013b7bc80e0483bb30f62062ac1e3200d588cb52771a7d34cdd74aba51de46341d303bd29065cf1f8cdcc17c23576cfadaefe63384b4
+DIST ryu-1.0.5.crate 49570 BLAKE2B 3bfba4a5f290a429de7ac3b86823b2a973f40eb6f48c15329173d95964d31ada36f2618be4b36774a03f97f2ce61364900c6a3ad5465a294e2df311a1f4104ed SHA512 d1708ffa3112a684edf2956b6730ead040401d38f1457cde074eaaa59c249007dc8b925629e7f6df89f7ea757e9d0826649d685cc8ede0a04d50296048bf476c
diff --git a/dev-rust/ryu/ryu-1.0.5.ebuild b/dev-rust/ryu/ryu-1.0.5.ebuild
new file mode 100644
index 0000000..d7c856b
--- /dev/null
+++ b/dev-rust/ryu/ryu-1.0.5.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Fast floating point to string conversion"
+HOMEPAGE="https://crates.io/crates/ryu"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="Apache-2.0"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/no-panic-0.1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/9s/files/chromeos-version.sh b/dev-rust/s9/files/chromeos-version.sh
similarity index 100%
rename from dev-rust/9s/files/chromeos-version.sh
rename to dev-rust/s9/files/chromeos-version.sh
diff --git a/dev-rust/s9/s9-0.1.0-r35.ebuild b/dev-rust/s9/s9-0.1.0-r35.ebuild
new file mode 100644
index 0000000..6c1ebc7
--- /dev/null
+++ b/dev-rust/s9/s9-0.1.0-r35.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="aff404fa5bb1568d214e34f5e4c700fcd8e78663"
+CROS_WORKON_TREE="a65853288ed3e9a088f071b1946c83222b9a6d3e"
+CROS_RUST_SUBDIR="vm_tools/9s"
+
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+CROS_RUST_CRATE_NAME="p9s"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Server binary for the 9P file system protocol"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/9s/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="test"
+
+RDEPEND="
+	!<chromeos-base/crosvm-0.0.1-r260
+	!dev-rust/9s
+"
+DEPEND="
+	=dev-rust/getopts-0.2*:=
+	=dev-rust/libc-0.2*:=
+	dev-rust/libchromeos:=
+	=dev-rust/log-0.4*:=
+	dev-rust/p9:=
+	dev-rust/sys_util:=
+"
+
+src_install() {
+	newbin "$(cros-rust_get_build_dir)/p9s" 9s
+
+	insinto /usr/share/policy
+	newins "seccomp/9s-seccomp-${ARCH}.policy" 9s-seccomp.policy
+}
diff --git a/dev-rust/s9/s9-9999.ebuild b/dev-rust/s9/s9-9999.ebuild
new file mode 100644
index 0000000..9532332
--- /dev/null
+++ b/dev-rust/s9/s9-9999.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_RUST_SUBDIR="vm_tools/9s"
+
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+CROS_RUST_CRATE_NAME="p9s"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Server binary for the 9P file system protocol"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/9s/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="~*"
+IUSE="test"
+
+RDEPEND="
+	!<chromeos-base/crosvm-0.0.1-r260
+	!dev-rust/9s
+"
+DEPEND="
+	=dev-rust/getopts-0.2*:=
+	=dev-rust/libc-0.2*:=
+	dev-rust/libchromeos:=
+	=dev-rust/log-0.4*:=
+	dev-rust/p9:=
+	dev-rust/sys_util:=
+"
+
+src_install() {
+	newbin "$(cros-rust_get_build_dir)/p9s" 9s
+
+	insinto /usr/share/policy
+	newins "seccomp/9s-seccomp-${ARCH}.policy" 9s-seccomp.policy
+}
diff --git a/dev-rust/serde/Manifest b/dev-rust/serde/Manifest
index 0552ecd..36af693 100644
--- a/dev-rust/serde/Manifest
+++ b/dev-rust/serde/Manifest
@@ -1 +1,2 @@
 DIST serde-1.0.114.crate 74453 BLAKE2B d5cd4b23a0b6555f8efce963e833b0c293b53cf33a3846ddb189c8d8d8ef5f157c45e33833baa21683a336b60de4785509288c417243b43fc5395e5df6a4e7dc SHA512 9c8db28e52686bc0d428374f13e5a5f4ccb235ef17d8840aa676042321fc89adce4cef4dd00700bd25c2024f79a96d91eca8ec9122e899056116a890cb90300f
+DIST serde-1.0.125.crate 75144 BLAKE2B 0823f4cec3704ce5232c266fcb69323dbcd93d2d15712abcc8cc61a2d123d662ae8153a32b3723324ea55a40f2b9101ed654cced45c500fcf399b9d7ccc113b8 SHA512 ed2819d678e7405e2d8a0cc1b43540abf2ad8871eeda4985af5e37016a42b938d7429c4e865cec2ae5364cc7fbe1052a5a46ea51b42c3ed5b9c7c1acb596ac3b
diff --git a/dev-rust/serde/serde-1.0.125.ebuild b/dev-rust/serde/serde-1.0.125.ebuild
new file mode 100644
index 0000000..4bb847d
--- /dev/null
+++ b/dev-rust/serde/serde-1.0.125.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A generic serialization/deserialization framework"
+HOMEPAGE="https://serde.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	~dev-rust/serde_derive-1.0.125:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/serde_derive/Manifest b/dev-rust/serde_derive/Manifest
index afcaa86..7ef6bbf 100644
--- a/dev-rust/serde_derive/Manifest
+++ b/dev-rust/serde_derive/Manifest
@@ -1 +1,2 @@
 DIST serde_derive-1.0.114.crate 50733 BLAKE2B f66ccfcbd8ccbdea4e3acc7fcb33fb1da516cf41e75c2993c2de79cd139fdf1b7c0ff6a95790df623eaf8b30fce4dec80f2a9c5332a8047dd0812fa65170737c SHA512 b3bea48a9ddd9c442a4ae6d0b76a116450e648976c02f07c2acf48459b15aef9c69d4843c2f04f387015c7f3ff5c3a1f4e5d1dc1e3a3ec3a114f6a651874aeb2
+DIST serde_derive-1.0.125.crate 54155 BLAKE2B c99e9e806831dccb3ccca20675e11f603a7348c433a641a46cf9a448a7a8b7ee242d0d6110780089b08e88b8f33aef5b75e8b1d25e2e6d242a44e9093b2badfa SHA512 dd4e247c9581b437157f37e355bc3335a3927417920acce72e73d6fe05a80e19fb3160c72abede7842e7d54749c33a94335fe9f3468c2f561267b863df368a6f
diff --git a/dev-rust/serde_derive/serde_derive-1.0.125.ebuild b/dev-rust/serde_derive/serde_derive-1.0.125.ebuild
new file mode 100644
index 0000000..9c8fa70
--- /dev/null
+++ b/dev-rust/serde_derive/serde_derive-1.0.125.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Macros 1.1 implementation of #[derive(Serialize, Deserialize)]"
+HOMEPAGE="https://serde.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	>=dev-rust/syn-1.0.60:= <dev-rust/syn-2.0.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/serde_json/Manifest b/dev-rust/serde_json/Manifest
index 74b0e19..51f5abf 100644
--- a/dev-rust/serde_json/Manifest
+++ b/dev-rust/serde_json/Manifest
@@ -1 +1,2 @@
 DIST serde_json-1.0.39.crate 69621 BLAKE2B 9eaa881f9a16d1895d2bc6f3aff3d6febd155d6ceff3c383968d0520d0f28dfa6fa57f2edd10c02eeb8448e2d87287d2cc04ee99f2c0bf96a60970c49aca14a9 SHA512 7180e5deb60e196f6b1ba3ac2a1bad6cea59d29f65fa7fb9258beb3d7012d6f3ea624e21fbb17868f5a21224f93b3f7b24875a94d50ba0d05e5b8d2aef632036
+DIST serde_json-1.0.64.crate 115138 BLAKE2B c61a404db9800cfb4e2ac29d4e287a7c8f388b62407d5e25e07514e2840fdf9c127476db35cb556b56143755c64c26be1c6b1facc7529067b06946ac8f54a573 SHA512 55a45dd4c60fd93d2d9331f6a8eac39fdfece9ddc1aae45ea27e3dfa81352f08c71bf03906ba99d0feb5df8d847b68547ecaa8eb5a2c76011ebbe8d4cd5bfc2d
diff --git a/dev-rust/serde_json/serde_json-1.0.0.ebuild b/dev-rust/serde_json/serde_json-1.0.0.ebuild
deleted file mode 100644
index c319990..0000000
--- a/dev-rust/serde_json/serde_json-1.0.0.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_EMPTY_CRATE=1
-
-inherit cros-rust
-
-DESCRIPTION="Empty ${PN} crate"
-HOMEPAGE=""
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/serde_json/serde_json-1.0.64.ebuild b/dev-rust/serde_json/serde_json-1.0.64.ebuild
new file mode 100644
index 0000000..78a7090
--- /dev/null
+++ b/dev-rust/serde_json/serde_json-1.0.64.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A JSON serialization file format"
+HOMEPAGE="https://crates.io/crates/serde_json"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/indexmap-1.5.0:= <dev-rust/indexmap-2.0.0
+	>=dev-rust/itoa-0.4.3:= <dev-rust/itoa-0.5.0
+	=dev-rust/ryu-1*:=
+	>=dev-rust/serde-1.0.100:= <dev-rust/serde-2.0.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/serde_repr/Manifest b/dev-rust/serde_repr/Manifest
new file mode 100644
index 0000000..20a19f2
--- /dev/null
+++ b/dev-rust/serde_repr/Manifest
@@ -0,0 +1 @@
+DIST serde_repr-0.1.7.crate 10173 BLAKE2B 30bca6a616e55f44def56ab1f85cbb141727a872466f161f562798db005473d520e6a4dba89b631cfe11f1a38cbc1db2fb0ef921f0245e0990a6744f9987e95a SHA512 4e3e87b1c97ee587e88be56d67f287e43252de474a3becdefb4b768eda661db5d78f665d7d93720a40d9f5bd27fd9ab6213d66713ec89bcc2063092b16625a18
diff --git a/dev-rust/serde_repr/OWNERS b/dev-rust/serde_repr/OWNERS
new file mode 100644
index 0000000..f570a32
--- /dev/null
+++ b/dev-rust/serde_repr/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/sirenia/OWNERS
diff --git a/dev-rust/serde_repr/serde_repr-0.1.7.ebuild b/dev-rust/serde_repr/serde_repr-0.1.7.ebuild
new file mode 100644
index 0000000..092b18d
--- /dev/null
+++ b/dev-rust/serde_repr/serde_repr-0.1.7.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION='Derive Serialize and Deserialize that delegates to the underlying repr of a C-like enum.'
+HOMEPAGE='https://crates.io/crates/serde_repr'
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/serde_test/serde_test-1.0.0.ebuild b/dev-rust/serde_test/serde_test-1.0.0.ebuild
deleted file mode 100644
index 53767e8..0000000
--- a/dev-rust/serde_test/serde_test-1.0.0.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_EMPTY_CRATE=1
-
-inherit cros-rust
-
-DESCRIPTION="Empty ${PN} crate"
-HOMEPAGE=""
-
-LICENSE="BSD-Google"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/simplelog/Manifest b/dev-rust/simplelog/Manifest
new file mode 100644
index 0000000..35954b3
--- /dev/null
+++ b/dev-rust/simplelog/Manifest
@@ -0,0 +1 @@
+DIST simplelog-0.10.0.crate 17910 BLAKE2B fa5b10d41b4fe4c55e819a687f12d055b34925b96df11369655463c9261338c01f1732840be9b4f02c8a48dc0d4df31b5a8dd9633807486daea26f3714701dcf SHA512 225aa6a89cdea9f6bc6d905deeec8c7d3bb57893d98133d53169339abd02c74b14dbb25d363f9996ce6c96b2529fd29ff096eb0f54e5134f0dc24e5851fbd030
diff --git a/dev-rust/simplelog/OWNERS b/dev-rust/simplelog/OWNERS
new file mode 100644
index 0000000..b90472f
--- /dev/null
+++ b/dev-rust/simplelog/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/ap-daemons:/OWNERS
diff --git a/dev-rust/simplelog/simplelog-0.10.0.ebuild b/dev-rust/simplelog/simplelog-0.10.0.ebuild
new file mode 100644
index 0000000..074dc55
--- /dev/null
+++ b/dev-rust/simplelog/simplelog-0.10.0.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="A simple and easy-to-use logging facility for Rust's log crate"
+HOMEPAGE="https://github.com/drakulix/simplelog.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/chrono-0.4*:=
+	=dev-rust/log-0.4*:=
+	=dev-rust/termcolor-1.1*:=
+"
+
+# TODO(crbug.com/1182669): Remove this RDEPEND when fixed.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/slab/Manifest b/dev-rust/slab/Manifest
index ebfb854..23c5bd2 100644
--- a/dev-rust/slab/Manifest
+++ b/dev-rust/slab/Manifest
@@ -1 +1,2 @@
 DIST slab-0.4.2.crate 10136 BLAKE2B e30cad459bbbb69c4b56a573c47f4188714e0da298d87015c35a86c9315dc2d4308f27d7758846069b0cf94c93f10c44b0f8895427cdf1c93ae20adbb21b5977 SHA512 f9fd70d0cc5180393cebbe87fe984de0c103db1c2c2648fb7a0ee22cdabf37a7338fd511538f00e9a5564365cce2879afe19bf77c435870197bd6cafef5d6661
+DIST slab-0.4.3.crate 15681 BLAKE2B d7e3eb0374de081d1870d2b46c9137e5ec75950a8fec217e3b120e455fe847e9245884990fbff4d01d512ea297c2012cb1a64f9b169264168081f5f7d6b20b39 SHA512 8649f32f26c1354b3281534fa0e062a145b62813c46f9ff5989ae688154221b00ed1b8c044c67a4b78c00a2e3478a8eb9c1c96fb424c24cd6cefd4df875fbb15
diff --git a/dev-rust/slab/slab-0.4.3.ebuild b/dev-rust/slab/slab-0.4.3.ebuild
new file mode 100644
index 0000000..3b30033
--- /dev/null
+++ b/dev-rust/slab/slab-0.4.3.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Pre-allocated storage for a uniform data type"
+HOMEPAGE="https://github.com/tokio-rs/slab"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/serde-1.0.95:= <dev-rust/serde-2.0.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/smallvec/Manifest b/dev-rust/smallvec/Manifest
index c058ced..a27e672 100644
--- a/dev-rust/smallvec/Manifest
+++ b/dev-rust/smallvec/Manifest
@@ -1 +1,3 @@
 DIST smallvec-0.6.12.crate 22049 BLAKE2B bff569ee10b7e4915f64e5423974242d55edeaeb23f23c4073f0e374ad27da3b5efdebf24015f1c4819566f048acc4bb0e54c11468349d2236aa1db419250d2f SHA512 72e7009f4d04722ed53babed5dc395648d6f521b1c79ea304b922ea4d17aa7d0c38c68388d55971becee11cf0f16db45de6082262292b4cb1339e2ae14c30c2c
+DIST smallvec-0.6.14.crate 22855 BLAKE2B 5f96c825c57ee6ab80bc13469793dc7ee780cd856e614c6cc0c747e1cd43fd5e27b589652610198e7757252bb6fb25905f616ea82fb9d8a9ffd5c8cd394b4f49 SHA512 4ba563b542922523566efbe0aac9df499c694bea9ba8ba14a74026d516e02f1fa8f542774b8044150a8e27f01a4b1c71c5280b5a82f61d5b45f022ed223f3977
+DIST smallvec-1.6.1.crate 26444 BLAKE2B ca6c50a63acdd93a2131654d99e50545a6e2d08eb3e2bd57d4a8ee073d90c08195ee442745a8d62a68179ce7bb8e229b7ff8c6fcf46372a9844bc9280b7c85cb SHA512 9e6061c8211a4485ab54eb541adf40748e1fc3fdfab0849e38e5fd34fc6cc69ae78bd065b788692385a6b8157b031c2fe373900e13d3e56e94fc08d574edaaad
diff --git a/dev-rust/smallvec/OWNERS b/dev-rust/smallvec/OWNERS
new file mode 100644
index 0000000..0452ee9
--- /dev/null
+++ b/dev-rust/smallvec/OWNERS
@@ -0,0 +1 @@
+include /chromeos-base/crosvm/OWNERS
\ No newline at end of file
diff --git a/dev-rust/smallvec/smallvec-0.6.14.ebuild b/dev-rust/smallvec/smallvec-0.6.14.ebuild
new file mode 100644
index 0000000..d1b07e4
--- /dev/null
+++ b/dev-rust/smallvec/smallvec-0.6.14.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="'Small vector' optimization: store up to a small number of items on the stack"
+HOMEPAGE="https://crates.io/crates/smallvec"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/maybe-uninit-2*:=
+	=dev-rust/serde-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/smallvec/smallvec-1.6.1.ebuild b/dev-rust/smallvec/smallvec-1.6.1.ebuild
new file mode 100644
index 0000000..96d7815
--- /dev/null
+++ b/dev-rust/smallvec/smallvec-1.6.1.ebuild
@@ -0,0 +1,20 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Small vector optimization for Rust"
+HOMEPAGE="https://github.com/servo/rust-smallvec"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/serde-1*:=
+"
diff --git a/dev-rust/syn/Manifest b/dev-rust/syn/Manifest
index 853b671..163fd87 100644
--- a/dev-rust/syn/Manifest
+++ b/dev-rust/syn/Manifest
@@ -1,4 +1,4 @@
-DIST syn-0.15.21.crate 146845 BLAKE2B 843c3d7a4853c50be188f7c67a329220cf8e65a467e9a63b3a28ad88fe89063bbde3873f10bbf81357cc5f192756c0c4b43162fe4412471edf914d7e5d0509e8 SHA512 606ffd4bcd74920e7023b2fc83a83087f4a559a9dec0a4a0d5fb6667b9887f98c413191a84b81ddba68e869dfc9fa7d31a3018f90eaed0ad96a039fc46074391
 DIST syn-0.15.26.crate 145493 BLAKE2B ede140e0184464e765413aa4875a07ab9329de60eba6aa46253d2880032b84a56348060396ffec8a5d81a2aa22c6a6eca73c425778ead21c1c55ffb657cf3718 SHA512 947d70dff83ffd33fda806597d54e572555b54c1600e357df919165fdc7141c6f9762b37f25f9b850e8a7775c33b6df3fc93f3eff12b36b059e696ad90619baa
-DIST syn-1.0.38.crate 206263 BLAKE2B bb9a4f111f95190b9d1e61f5bdcac5e940112d5c6958a5d0edd852869e07f4de8c47cc4e069e0899c3a973e6aa2e858133d20eac897c1f5adbe80ff2748d2f31 SHA512 67e1d94e0efbf305d9bc2c5f42c57a17896f98a888ff7565912f7234cb2bd6f699b630c8687546d28569baa87442acff070eb0059314f5380b183469784aab12
-DIST syn-1.0.5.crate 190286 BLAKE2B 7d5c813bb4cebbc104978181532a050b0a7f79963a539d69a253ebdb15a83c275a5d5b04dfbb66a426afec2c90a450ed7be595619a2b5a31b0725d904f5adb92 SHA512 4cc18966040b1f86916876aa5ad8029a126f7ab8db55408b3f4bc343dd82dc357899dd4a7afc514c65fd269245f8850f8f2834b08bc2ee6cf6774282f75feadc
+DIST syn-1.0.58.crate 229250 BLAKE2B 28df7854962f46339d1f993d2e1dae4c142731c3d7f08d03015ffcbf7eb307c1da9d35eb603d6efe653ff80bb0108bd5faabe1d7c68cec9476eaa0b710a27586 SHA512 b6bd101a455b77c2836384d7346f79b651f41c7685667b64032905cdd4026ee673c24de16a2acb2b8005af743a6d1b40628b30cd09c8454a39cc7d131ce71487
+DIST syn-1.0.69.crate 231954 BLAKE2B 1dde7e78cdbf5c5b93d0196e008dd4e92e4367f8e88395d6157b92a58cd9317dbb6e47caf2d570a5a9fb6b4fdd4fdea5e414eb9b04e054ec4e4dde8bb9f36a96 SHA512 6934423e48f8d6b1e403fe5e4bb2e180f472f125f4337b7d9889788c16cf11d79d1673ed06178604279e0b8a04bd80f7efba187cc8fa44c535457eb1b4f51c20
+DIST syn-1.0.72.crate 232500 BLAKE2B 8f71f7fb66426f78eec3439688b0468fbef582c8ca912781f19607acd9e8371f2230b305a96f613c16f7299e66fdb2395dc037e1093d3897864bd2bf50ab3d7e SHA512 f01e2ef74fc3f84a753c1c379c24e3c63f3c575d72ab865f8e7d51f4dee4293ac8197b4e123ebaa942e9199bf0a0d8194e57a5aa6314bee6951d3d458dfc3da9
diff --git a/dev-rust/syn/syn-0.15.21.ebuild b/dev-rust/syn/syn-0.15.21.ebuild
deleted file mode 100644
index 6d92c0e..0000000
--- a/dev-rust/syn/syn-0.15.21.ebuild
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Parser for rust source code"
-HOMEPAGE="https://github.com/dtolnay/syn"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/proc-macro2-0.4.4:=
-	>=dev-rust/quote-0.6:=
-	>=dev-rust/rayon-1.0:=
-	=dev-rust/unicode-xid-0.1*:=
-	>=dev-rust/walkdir-2.1:=
-	>=dev-rust/regex-1.0:=
-"
diff --git a/dev-rust/syn/syn-0.15.26-r1.ebuild b/dev-rust/syn/syn-0.15.26-r1.ebuild
new file mode 100644
index 0000000..1ed414e
--- /dev/null
+++ b/dev-rust/syn/syn-0.15.26-r1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Parser for rust source code"
+HOMEPAGE="https://github.com/dtolnay/syn"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/proc-macro2-0.4.4:= <dev-rust/proc-macro2-0.5.0
+	=dev-rust/quote-0.6*:=
+	=dev-rust/unicode-xid-0.1*:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/syn/syn-1.0.5.ebuild b/dev-rust/syn/syn-1.0.5.ebuild
deleted file mode 100644
index 4ed94c8..0000000
--- a/dev-rust/syn/syn-1.0.5.ebuild
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Parser for rust source code"
-HOMEPAGE="https://github.com/dtolnay/syn"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/proc-macro2-1*:=
-	=dev-rust/quote-1*:=
-	=dev-rust/rayon-1*:=
-	=dev-rust/unicode-xid-0.2*:=
-	>=dev-rust/walkdir-2.1.0:= <dev-rust/walkdir-3
-	=dev-rust/regex-1*:=
-"
diff --git a/dev-rust/syn/syn-1.0.38.ebuild b/dev-rust/syn/syn-1.0.58.ebuild
similarity index 100%
rename from dev-rust/syn/syn-1.0.38.ebuild
rename to dev-rust/syn/syn-1.0.58.ebuild
diff --git a/dev-rust/syn/syn-1.0.69.ebuild b/dev-rust/syn/syn-1.0.69.ebuild
new file mode 100644
index 0000000..f11d09d
--- /dev/null
+++ b/dev-rust/syn/syn-1.0.69.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Parser for Rust source code"
+HOMEPAGE="https://crates.io/crates/syn"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/proc-macro2-1.0.26:= <dev-rust/proc-macro2-2
+	>=dev-rust/quote-1.0:= <dev-rust/quote-2
+	>=dev-rust/unicode-xid-0.2:= <dev-rust/unicode-xid-0.3
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
+# Changes below are manual:
+
+src_prepare() {
+	cros-rust_src_prepare
+
+	# Delete the test dependency, syn-test-suite.
+	sed -i '/^test = \[/d' "${S}/Cargo.toml"
+}
diff --git a/dev-rust/syn/syn-1.0.72.ebuild b/dev-rust/syn/syn-1.0.72.ebuild
new file mode 100644
index 0000000..7e4d11b
--- /dev/null
+++ b/dev-rust/syn/syn-1.0.72.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Parser for Rust source code"
+HOMEPAGE="https://crates.io/crates/syn"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/proc-macro2-1.0.26:= <dev-rust/proc-macro2-2.0.0
+	=dev-rust/quote-1*:=
+	=dev-rust/unicode-xid-0.2*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
+# Changes below are manual:
+
+src_prepare() {
+	cros-rust_src_prepare
+
+	# Delete the test dependency, syn-test-suite.
+	sed -i '/^test = \[/d' "${S}/Cargo.toml"
+}
diff --git a/dev-rust/sync/OWNERS b/dev-rust/sync/OWNERS
new file mode 100644
index 0000000..0edda31
--- /dev/null
+++ b/dev-rust/sync/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:/OWNERS
diff --git a/dev-rust/sync/sync-0.1.0-r10.ebuild b/dev-rust/sync/sync-0.1.0-r10.ebuild
deleted file mode 100644
index 3977cc5..0000000
--- a/dev-rust/sync/sync-0.1.0-r10.ebuild
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="22f808ff13e6f472c373382f45410f6dec300596"
-CROS_WORKON_TREE="28852483b877a051ca092e4b811f8831872c49b0"
-CROS_WORKON_LOCALNAME="../platform/crosvm"
-CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="sync"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Containing a type sync::Mutex which wraps the standard library Mutex and mirrors the same methods"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/master/crosvm/sync"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-RDEPEND="!!<=dev-rust/sync-0.1.0-r6"
diff --git a/dev-rust/sync/sync-0.1.0-r11.ebuild b/dev-rust/sync/sync-0.1.0-r11.ebuild
new file mode 100644
index 0000000..f74c8dc
--- /dev/null
+++ b/dev-rust/sync/sync-0.1.0-r11.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="76cc214ce771ab7dd0990b403e2a2c98dd0a4c80"
+CROS_WORKON_TREE="28852483b877a051ca092e4b811f8831872c49b0"
+CROS_WORKON_LOCALNAME="../platform/crosvm"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="sync"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Containing a type sync::Mutex which wraps the standard library Mutex and mirrors the same methods"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/sync"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+RDEPEND="!!<=dev-rust/sync-0.1.0-r6"
diff --git a/dev-rust/sync/sync-9999.ebuild b/dev-rust/sync/sync-9999.ebuild
index 65c427f..3afc058 100644
--- a/dev-rust/sync/sync-9999.ebuild
+++ b/dev-rust/sync/sync-9999.ebuild
@@ -12,7 +12,7 @@
 inherit cros-workon cros-rust
 
 DESCRIPTION="Containing a type sync::Mutex which wraps the standard library Mutex and mirrors the same methods"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/master/crosvm/sync"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/sync"
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
diff --git a/dev-rust/synstructure/Manifest b/dev-rust/synstructure/Manifest
index 8ccf445..8df87ac 100644
--- a/dev-rust/synstructure/Manifest
+++ b/dev-rust/synstructure/Manifest
@@ -1 +1,2 @@
 DIST synstructure-0.10.1.crate 17836 BLAKE2B d80745963f581c02a3b9587d45586e2098632a4c21de22547ae97531bbc4f30a1b02989306999c67584c507a5b07978a48f65ad5e00ff55f39e8e0bb4fdbfa8e SHA512 5830eea0eab15c7ed737bfa14c7bbfc73f28af6964ce3148542066fb9760a80dbba82fd9a55078426346ba757e0aaba9addecadb1d0f75eac4f029a6e4c7cc19
+DIST synstructure-0.12.4.crate 18105 BLAKE2B 8e7efdfa8681da8473903aa22e8cc55abcede012b29a91d65076042c89a21048b44b774ca5c3f788222dd32fa634ac20f58ce241eff610498cac19f659280d29 SHA512 ab3024644719c4afc9c06a4d3c499fd4934c104409d38197a46d62c9ce30414f88b3e7bcdd7f245cfd207489fb54ba41e5cfc1db94b0dd12fb01e9c00c861c47
diff --git a/dev-rust/synstructure/synstructure-0.12.4.ebuild b/dev-rust/synstructure/synstructure-0.12.4.ebuild
new file mode 100644
index 0000000..665b956
--- /dev/null
+++ b/dev-rust/synstructure/synstructure-0.12.4.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="This crate provides helper types for matching against enum variants, and extracting bindings to each of the fields in the deriving Struct or Enum in a generic way"
+HOMEPAGE="https://crates.io/crates/synstructure"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+	=dev-rust/unicode-xid-0.2*:=
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/sys_util/OWNERS b/dev-rust/sys_util/OWNERS
new file mode 100644
index 0000000..0edda31
--- /dev/null
+++ b/dev-rust/sys_util/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:/OWNERS
diff --git a/dev-rust/sys_util/sys_util-0.1.0-r128.ebuild b/dev-rust/sys_util/sys_util-0.1.0-r128.ebuild
deleted file mode 100644
index dc9cd0b..0000000
--- a/dev-rust/sys_util/sys_util-0.1.0-r128.ebuild
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="eefe7fb19e503e021502c2d8311b85a128d0e054"
-CROS_WORKON_TREE="8ebf630e48c208771bb2ed6a0ab1501db6df2ff2"
-CROS_WORKON_LOCALNAME="../platform/crosvm"
-CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="sys_util"
-CROS_WORKON_SUBDIRS_TO_COPY="sys_util"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Small system utility modules for usage by other modules."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/master/crosvm/sys_util"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-RDEPEND="
-	sys-libs/libcap:=
-	!!<=dev-rust/sys_util-0.1.0-r60
-"
-DEPEND="
-	${RDEPEND}
-	=dev-rust/android_log-sys-0.2*:=
-	>=dev-rust/libc-0.2.44:=
-	=dev-rust/quote-1*:=
-	=dev-rust/proc-macro2-1*:=
-	=dev-rust/syn-1*:=
-	dev-rust/data_model:=
-	dev-rust/sync:=
-	dev-rust/syscall_defines:=
-	dev-rust/tempfile:=
-"
-
-src_test() {
-	local skip_tests=()
-
-	# These tests directly make a clone(2) syscall, which makes sanitizers very
-	# unhappy since they see memory allocated in the child process that is not
-	# freed (because it is owned by some other thread created by the test runner
-	# in the parent process).
-	cros-rust_use_sanitizers && skip_tests+=( --skip "fork::tests" )
-	# The memfd_create() system call first appeared in Linux 3.17.  Skip guest
-	# memory tests for builders with older kernels.
-	local cut_version=$(ver_cut 1-2 "$(uname -r)")
-	if ver_test 3.17 -gt "${cut_version}"; then
-		skip_tests+=( --skip "guest_memory::tests" )
-	fi
-
-	# TODO(crbug.com/1157570) Remove once syslog module works in sandbox.
-	CROS_RUST_TEST_DIRECT_EXEC_ONLY="yes"
-	cros-rust_get_host_test_executables
-
-	cros-rust_src_test -- --test-threads=1 "${skip_tests[@]}"
-}
-
-src_install() {
-	pushd poll_token_derive > /dev/null
-	cros-rust_publish poll_token_derive "$(cros-rust_get_crate_version ${S}/poll_token_derive)"
-	popd > /dev/null
-
-	cros-rust_src_install
-}
-
-pkg_postinst() {
-	cros-rust_pkg_postinst poll_token_derive
-	cros-rust_pkg_postinst
-}
-
-pkg_prerm() {
-	cros-rust_pkg_prerm poll_token_derive
-	cros-rust_pkg_prerm
-}
-
diff --git a/dev-rust/sys_util/sys_util-0.1.0-r161.ebuild b/dev-rust/sys_util/sys_util-0.1.0-r161.ebuild
new file mode 100644
index 0000000..f873520
--- /dev/null
+++ b/dev-rust/sys_util/sys_util-0.1.0-r161.ebuild
@@ -0,0 +1,93 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="72a11a010e18ecfafc7f0c1bb7fff5020eba8069"
+CROS_WORKON_TREE="45225500d49ffe6b0cc50397b01585a13c61e9cc"
+CROS_WORKON_LOCALNAME="../platform/crosvm"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="sys_util"
+CROS_WORKON_SUBDIRS_TO_COPY="sys_util"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Small system utility modules for usage by other modules."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/sys_util"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+# ebuilds that install executables, import sys_util, and use the libcap
+# functionality need to RDEPEND on libcap
+DEPEND="
+	=dev-rust/android_log-sys-0.2*:=
+	dev-rust/assertions:=
+	dev-rust/data_model:=
+	>=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3.0
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/serde-1*:=
+	=dev-rust/serde_json-1*:=
+	=dev-rust/syn-1*:=
+	dev-rust/sync:=
+	dev-rust/tempfile:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+	sys-libs/libcap:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/sys_util-0.1.0-r60
+"
+
+src_test() {
+	local skip_tests=()
+
+	# These tests directly make a clone(2) syscall, which makes sanitizers very
+	# unhappy since they see memory allocated in the child process that is not
+	# freed (because it is owned by some other thread created by the test runner
+	# in the parent process).
+	cros-rust_use_sanitizers && skip_tests+=( --skip "fork::tests" )
+	# The memfd_create() system call first appeared in Linux 3.17.  Skip guest
+	# memory tests for builders with older kernels.
+	local cut_version=$(ver_cut 1-2 "$(uname -r)")
+	if ver_test 3.17 -gt "${cut_version}"; then
+		skip_tests+=( --skip "guest_memory::tests" )
+	fi
+
+	# If syslog isn't available, skip the tests.
+	[[ -S /dev/log ]] || skip_tests+=( --skip "syslog::tests" )
+
+	# TODO(crbug.com/1157570) Remove once syslog module works in sandbox.
+	CROS_RUST_TEST_DIRECT_EXEC_ONLY="yes"
+	cros-rust_get_host_test_executables
+
+	cros-rust_src_test -- --test-threads=1 "${skip_tests[@]}"
+}
+
+src_install() {
+	(
+		cd poll_token_derive || die
+		cros-rust_publish poll_token_derive "$(cros-rust_get_crate_version .)"
+	)
+
+	cros-rust_src_install
+}
+
+pkg_preinst() {
+	cros-rust_pkg_preinst poll_token_derive
+	cros-rust_pkg_preinst
+}
+
+pkg_postinst() {
+	cros-rust_pkg_postinst poll_token_derive
+	cros-rust_pkg_postinst
+}
+
+pkg_prerm() {
+	cros-rust_pkg_prerm poll_token_derive
+	cros-rust_pkg_prerm
+}
diff --git a/dev-rust/sys_util/sys_util-9999.ebuild b/dev-rust/sys_util/sys_util-9999.ebuild
index fdc664f..3bc33bc 100644
--- a/dev-rust/sys_util/sys_util-9999.ebuild
+++ b/dev-rust/sys_util/sys_util-9999.ebuild
@@ -12,27 +12,33 @@
 inherit cros-workon cros-rust
 
 DESCRIPTION="Small system utility modules for usage by other modules."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/master/crosvm/sys_util"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/sys_util"
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
 IUSE="test"
 
-RDEPEND="
-	sys-libs/libcap:=
-	!!<=dev-rust/sys_util-0.1.0-r60
-"
+# ebuilds that install executables, import sys_util, and use the libcap
+# functionality need to RDEPEND on libcap
 DEPEND="
-	${RDEPEND}
 	=dev-rust/android_log-sys-0.2*:=
-	>=dev-rust/libc-0.2.44:=
-	=dev-rust/quote-1*:=
-	=dev-rust/proc-macro2-1*:=
-	=dev-rust/syn-1*:=
+	dev-rust/assertions:=
 	dev-rust/data_model:=
+	>=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3.0
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/serde-1*:=
+	=dev-rust/serde_json-1*:=
+	=dev-rust/syn-1*:=
 	dev-rust/sync:=
-	dev-rust/syscall_defines:=
 	dev-rust/tempfile:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+	sys-libs/libcap:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/sys_util-0.1.0-r60
 "
 
 src_test() {
@@ -50,6 +56,9 @@
 		skip_tests+=( --skip "guest_memory::tests" )
 	fi
 
+	# If syslog isn't available, skip the tests.
+	[[ -S /dev/log ]] || skip_tests+=( --skip "syslog::tests" )
+
 	# TODO(crbug.com/1157570) Remove once syslog module works in sandbox.
 	CROS_RUST_TEST_DIRECT_EXEC_ONLY="yes"
 	cros-rust_get_host_test_executables
@@ -58,13 +67,19 @@
 }
 
 src_install() {
-	pushd poll_token_derive > /dev/null
-	cros-rust_publish poll_token_derive "$(cros-rust_get_crate_version ${S}/poll_token_derive)"
-	popd > /dev/null
+	(
+		cd poll_token_derive || die
+		cros-rust_publish poll_token_derive "$(cros-rust_get_crate_version .)"
+	)
 
 	cros-rust_src_install
 }
 
+pkg_preinst() {
+	cros-rust_pkg_preinst poll_token_derive
+	cros-rust_pkg_preinst
+}
+
 pkg_postinst() {
 	cros-rust_pkg_postinst poll_token_derive
 	cros-rust_pkg_postinst
@@ -74,4 +89,3 @@
 	cros-rust_pkg_prerm poll_token_derive
 	cros-rust_pkg_prerm
 }
-
diff --git a/dev-rust/syscall_defines/files/chromeos-version.sh b/dev-rust/syscall_defines/files/chromeos-version.sh
deleted file mode 100755
index 2aa95f8..0000000
--- a/dev-rust/syscall_defines/files/chromeos-version.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2018 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.
-
-# Assumes the first 'version =' line in the Cargo.toml is the version for the
-# crate.
-awk '/^version = / { print $3 }' "$1/syscall_defines/Cargo.toml" | head -n1 | tr -d '"'
diff --git a/dev-rust/syscall_defines/syscall_defines-0.1.0-r9.ebuild b/dev-rust/syscall_defines/syscall_defines-0.1.0-r9.ebuild
deleted file mode 100644
index 9616abf..0000000
--- a/dev-rust/syscall_defines/syscall_defines-0.1.0-r9.ebuild
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="853ecdb355d476d15bcdea4d9f5da9761100ede7"
-CROS_WORKON_TREE="9add594cd5c861053853b840d374d4e835d5d734"
-CROS_WORKON_LOCALNAME="../platform/crosvm"
-CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="syscall_defines"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Linux syscall defines."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/syscall_defines"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-RDEPEND="!!<=dev-rust/syscall_defines-0.1.0-r2"
diff --git a/dev-rust/syscall_defines/syscall_defines-9999.ebuild b/dev-rust/syscall_defines/syscall_defines-9999.ebuild
deleted file mode 100644
index 61981f1..0000000
--- a/dev-rust/syscall_defines/syscall_defines-9999.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_LOCALNAME="../platform/crosvm"
-CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="syscall_defines"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Linux syscall defines."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/syscall_defines"
-
-LICENSE="BSD-Google"
-KEYWORDS="~*"
-IUSE="test"
-
-RDEPEND="!!<=dev-rust/syscall_defines-0.1.0-r2"
diff --git a/dev-rust/system_api/system_api-0.24.53-r10.ebuild b/dev-rust/system_api/system_api-0.24.53-r10.ebuild
deleted file mode 100644
index 1b6161e..0000000
--- a/dev-rust/system_api/system_api-0.24.53-r10.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="109363d0a03be594cf5611441597c607960c4f3d"
-CROS_WORKON_TREE=("fa94807d1776021aeabe89544645b6660a98dc16" "a0d8550678a1ed2a4ab62782049032a024bf40df" "be11cc324e5a3144545e14f1790627d38d05440a" "98dba68cd28c82190ee09efa097e811530139082")
-CROS_RUST_SUBDIR="system_api"
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} authpolicy/dbus_bindings debugd/dbus_bindings login_manager/dbus_bindings"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Chrome OS system API D-Bus bindings for Rust."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/system_api/"
-
-LICENSE="BSD-Google"
-SLOT="0/${PVR}"
-KEYWORDS="*"
-
-RDEPEND="!chromeos-base/system_api-rust"
-
-DEPEND="${RDEPEND}
-	dev-rust/chromeos-dbus-bindings:=
-	=dev-rust/dbus-0.8*:=
-"
diff --git a/dev-rust/system_api/system_api-0.24.53-r186.ebuild b/dev-rust/system_api/system_api-0.24.53-r186.ebuild
new file mode 100644
index 0000000..7564799
--- /dev/null
+++ b/dev-rust/system_api/system_api-0.24.53-r186.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6dd33d823125a9f9e78f10c51ea5756c9f8b64bc"
+CROS_WORKON_TREE=("17b97c5c2ddeb8fe389f24ed79e581941c90795b" "a0d8550678a1ed2a4ab62782049032a024bf40df" "c3e1fc5061dcbd62acb501f21d7a3794f41b2160" "2c7ac844cf2db48eca0465be0c5ada91c108f177" "3b632cb1cbc6da698a355e078bfc220f0461deee")
+CROS_RUST_SUBDIR="system_api"
+
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} authpolicy/dbus_bindings debugd/dbus_bindings login_manager/dbus_bindings shill/dbus_bindings"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Chrome OS system API D-Bus bindings for Rust."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/system_api/"
+
+LICENSE="BSD-Google"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+
+DEPEND="
+	dev-rust/chromeos-dbus-bindings:=
+	=dev-rust/dbus-0.8*:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!chromeos-base/system_api-rust
+"
diff --git a/dev-rust/system_api/system_api-9999.ebuild b/dev-rust/system_api/system_api-9999.ebuild
index 13aad72..d5850e3 100644
--- a/dev-rust/system_api/system_api-9999.ebuild
+++ b/dev-rust/system_api/system_api-9999.ebuild
@@ -7,7 +7,7 @@
 
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} authpolicy/dbus_bindings debugd/dbus_bindings login_manager/dbus_bindings"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} authpolicy/dbus_bindings debugd/dbus_bindings login_manager/dbus_bindings shill/dbus_bindings"
 
 inherit cros-workon cros-rust
 
@@ -18,9 +18,12 @@
 SLOT="0/${PVR}"
 KEYWORDS="~*"
 
-RDEPEND="!chromeos-base/system_api-rust"
-
-DEPEND="${RDEPEND}
+DEPEND="
 	dev-rust/chromeos-dbus-bindings:=
 	=dev-rust/dbus-0.8*:=
 "
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!chromeos-base/system_api-rust
+"
diff --git a/dev-rust/tempfile/OWNERS b/dev-rust/tempfile/OWNERS
new file mode 100644
index 0000000..0edda31
--- /dev/null
+++ b/dev-rust/tempfile/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:/OWNERS
diff --git a/dev-rust/tempfile/tempfile-3.0.7-r10.ebuild b/dev-rust/tempfile/tempfile-3.0.7-r10.ebuild
new file mode 100644
index 0000000..dc87fd4
--- /dev/null
+++ b/dev-rust/tempfile/tempfile-3.0.7-r10.ebuild
@@ -0,0 +1,34 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="76cc214ce771ab7dd0990b403e2a2c98dd0a4c80"
+CROS_WORKON_TREE="4d1019d4ba75c8d6c18310a8bce67bcda0eceab5"
+CROS_WORKON_LOCALNAME="../platform/crosvm"
+CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="tempfile"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="A library for managing temporary files and directories"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/tempfile"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+DEPEND="
+	=dev-rust/cfg-if-0.1*:=
+	>=dev-rust/libc-0.2.27:=
+	=dev-rust/rand-0.6*:=
+	=dev-rust/redox_syscall-0.1*:=
+	=dev-rust/remove_dir_all-0.5*:=
+	=dev-rust/winapi-0.3*:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/tempfile-3.0.7-r2
+"
diff --git a/dev-rust/tempfile/tempfile-3.0.7-r8.ebuild b/dev-rust/tempfile/tempfile-3.0.7-r8.ebuild
deleted file mode 100644
index 56dad88..0000000
--- a/dev-rust/tempfile/tempfile-3.0.7-r8.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="853ecdb355d476d15bcdea4d9f5da9761100ede7"
-CROS_WORKON_TREE="4d1019d4ba75c8d6c18310a8bce67bcda0eceab5"
-CROS_WORKON_LOCALNAME="../platform/crosvm"
-CROS_WORKON_PROJECT="chromiumos/platform/crosvm"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="tempfile"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="A library for managing temporary files and directories"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/tempfile"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-DEPEND="
-	=dev-rust/cfg-if-0.1*:=
-	>=dev-rust/libc-0.2.27:=
-	=dev-rust/rand-0.6*:=
-	=dev-rust/redox_syscall-0.1*:=
-	=dev-rust/remove_dir_all-0.5*:=
-	=dev-rust/winapi-0.3*:=
-"
-
-RDEPEND="!!<=dev-rust/tempfile-3.0.7-r2"
diff --git a/dev-rust/tempfile/tempfile-9999.ebuild b/dev-rust/tempfile/tempfile-9999.ebuild
index acdfdc8..3a7c6d4f 100644
--- a/dev-rust/tempfile/tempfile-9999.ebuild
+++ b/dev-rust/tempfile/tempfile-9999.ebuild
@@ -11,7 +11,7 @@
 inherit cros-workon cros-rust
 
 DESCRIPTION="A library for managing temporary files and directories"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/tempfile"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/tempfile"
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
@@ -25,5 +25,8 @@
 	=dev-rust/remove_dir_all-0.5*:=
 	=dev-rust/winapi-0.3*:=
 "
-
-RDEPEND="!!<=dev-rust/tempfile-3.0.7-r2"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!!<=dev-rust/tempfile-3.0.7-r2
+"
diff --git a/dev-rust/termcolor/Manifest b/dev-rust/termcolor/Manifest
index 407b194..f6bf0aa 100644
--- a/dev-rust/termcolor/Manifest
+++ b/dev-rust/termcolor/Manifest
@@ -1,3 +1,2 @@
 DIST termcolor-0.3.6.crate 13548 BLAKE2B 4d7faffc3be9ffe4e6da0ea20e6b244c0d9e488ff1c97851dfce073622e68f041e1c77d3c49c769a5e6525c28dfcdd998b381a5abcaa5c4ea63b0acf0e28bf2d SHA512 cfb8e0172abad994da27b1474ab0de244db782ac9c7fcd877d9f1727eaa2fb95036638edbab6b69c3302d1b880eba14cc7282ae0ec78ada1d31a9ef682d4cc90
-DIST termcolor-1.1.0.crate 17193 BLAKE2B c3a1a80269195f6bc92d141fce0885413c031980a4ad2f0f6e5a9051acfac10bad8a484362bfcaf3a60851a97d930e9602df4c00aec39431ea5a8a20d40a55c2 SHA512 41b05b047cbfdd5e3990eb36f635dc8ccf26a42bd5403d6d14a9f3c341e92b61c3b8d4d5f4fcd29071a97b3d96280ed59b4557b63a769390e2729fc82ab39702
-DIST termcolor-1.0.4.crate 14416 BLAKE2B 373701dd2b8a3d584a44d1429e5fd3a697eb7b9138ca6c76eadbf642976e73a701d565a93d77ead3f5cc542c204b3bdce9cc5101b2778b3e32272db9c419edd7 SHA512 cc2f90f453834666b3dcf96c48695cc1fc48c6aacf71437bab635678f486cf02ba6e1c040ff011be078a17b50f9f6d2c09fec771e362d8d2d07526b0f040df6b
+DIST termcolor-1.1.2.crate 17287 BLAKE2B 5ff748064c9fb6663befce2fd299edf6a6deb06ea72d21a62d6e77642934cca0933e10340fa84f636631cc08c76ba83ef2284b2212759129d54248e5fccb4c49 SHA512 f37b034345382cd621b1344a3fb301ca3d4d9db8b5858ac1ea82372c983229fce3c0ea8213d6b7e91291b6034affe11e2c3e593dbd95256294ce5c584b33e14c
diff --git a/dev-rust/termcolor/termcolor-1.0.4.ebuild b/dev-rust/termcolor/termcolor-1.0.4.ebuild
deleted file mode 100644
index 7253e62..0000000
--- a/dev-rust/termcolor/termcolor-1.0.4.ebuild
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="A simple cross platform library for writing colored text to a terminal."
-HOMEPAGE="https://github.com/BurntSushi/termcolor"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/wincolor-1*:=
-"
diff --git a/dev-rust/termcolor/termcolor-1.1.0.ebuild b/dev-rust/termcolor/termcolor-1.1.0.ebuild
deleted file mode 100644
index c532fa9..0000000
--- a/dev-rust/termcolor/termcolor-1.1.0.ebuild
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="A simple cross platform library for writing colored text to a terminal."
-HOMEPAGE="https://github.com/BurntSushi/termcolor"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/winapi-util-0.1.3:= <dev-rust/winapi-util-0.2.0
-"
diff --git a/dev-rust/termcolor/termcolor-1.1.2.ebuild b/dev-rust/termcolor/termcolor-1.1.2.ebuild
new file mode 100644
index 0000000..7974b254
--- /dev/null
+++ b/dev-rust/termcolor/termcolor-1.1.2.ebuild
@@ -0,0 +1,20 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+CROS_RUST_REMOVE_TARGET_CFG=1
+
+inherit cros-rust
+
+DESCRIPTION="A simple cross platform library for writing colored text to a terminal."
+HOMEPAGE="https://github.com/BurntSushi/termcolor"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/termion/termion-1.5.1-r1.ebuild b/dev-rust/termion/termion-1.5.1-r1.ebuild
new file mode 120000
index 0000000..40175f4
--- /dev/null
+++ b/dev-rust/termion/termion-1.5.1-r1.ebuild
@@ -0,0 +1 @@
+termion-1.5.1.ebuild
\ No newline at end of file
diff --git a/dev-rust/termion/termion-1.5.1.ebuild b/dev-rust/termion/termion-1.5.1.ebuild
index c4d11c5..bbbe746 100644
--- a/dev-rust/termion/termion-1.5.1.ebuild
+++ b/dev-rust/termion/termion-1.5.1.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 inherit cros-rust
 
@@ -18,3 +18,4 @@
 	>=dev-rust/redox_syscall-0.1.0:=
 	>=dev-rust/redox_termios-0.1.0:=
 "
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/time/Manifest b/dev-rust/time/Manifest
index 259d75b..0c4418c 100644
--- a/dev-rust/time/Manifest
+++ b/dev-rust/time/Manifest
@@ -1,2 +1 @@
-DIST time-0.1.40.crate 29518 BLAKE2B 9102a29eeeda597100e8e9f1e6a021df99678383d02264c8b94b07f5bef73aac5f0cc77345aa5d7d5db3f33d67581b4970e5a80597773afc726bcf73d1415b5b SHA512 a14753e598ae9def3f479741968bfba028e55debdfb1243cd1becfbf468d2c5fd8457aca720197e16a6a2c63e58e07c51cab5712327ad8ae37605a2825a29bc9
 DIST time-0.1.44.crate 28885 BLAKE2B 5e2ca11af9da0847239a086330d0cd00fcb5b63862f9dfec46f72a065bb35ec2236a21ee1c56bf65e3117105e7815cafe67e3725b8575373e875dfcea401d967 SHA512 736a38637be0193a06fa35d42b4873b04a0a35d84cd2af85b7f653a1b67b95078577134bb187b777730e73cce67f437b45ff5c72b8e3f1f8e2ed3420ea0324cf
diff --git a/dev-rust/time/time-0.1.40.ebuild b/dev-rust/time/time-0.1.40.ebuild
deleted file mode 100644
index 2a1b1af..0000000
--- a/dev-rust/time/time-0.1.40.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Utilities for working with time-related functions in Rust."
-HOMEPAGE="https://github.com/rust-lang/time"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/libc-0.2.1:=
-	>=dev-rust/log-0.4.0:=
-	>=dev-rust/redox_syscall-0.1.0:=
-	>=dev-rust/winapi-0.3.0:=
-	>=dev-rust/rustc-serialize-0.3.0:=
-"
diff --git a/dev-rust/tiny_http/Manifest b/dev-rust/tiny_http/Manifest
index 6774c48..6eeb2e7 100644
--- a/dev-rust/tiny_http/Manifest
+++ b/dev-rust/tiny_http/Manifest
@@ -1 +1 @@
-DIST tiny_http-0.7.0.crate 40108 BLAKE2B 7080a75b5ac9520c945f2366317824bb2ebafee910ae6ea465eda98c27aac42413146fc0d47650487110685b98bde1831e7d5a267e30a728f0d5910e2340635f SHA512 bfc6a3d9671328aad370bbe6adeb56790e06492dc950aab0feeca6fb158ac65286fdbea07da896fa2bc99b9ea88fda60dafa1df5d94f39169ec1caf770550f51
+DIST tiny_http-0.8.0.crate 41711 BLAKE2B 2b0a1e4cff50e201ac1583b9538c407312808275517c81b0227731840cf9c9cbfe3a387a420976191480e38a7826377dbba54d55222cb6adf07f1e86b55bcb91 SHA512 f130905d537579afb401644b32da8a1d0bac0902a16c48039fb45935371ad75ed3a687ab0362d926922bf80a07a2df13193e285c2dd34a1aca4fecb37952058e
diff --git a/dev-rust/tiny_http/files/tiny_http-0.7.0-0001-unix-socket-support.patch b/dev-rust/tiny_http/files/tiny_http-0.7.0-0001-unix-socket-support.patch
deleted file mode 100644
index ab3663b..0000000
--- a/dev-rust/tiny_http/files/tiny_http-0.7.0-0001-unix-socket-support.patch
+++ /dev/null
@@ -1,206 +0,0 @@
-Add support for Unix Sockets
-
-* add support for Unix Sockets to Stream/RefinedTcpStream.
-* add a 'pub use' for ClientConnection and Stream
-* convert ClientConnection::new to take Into<Stream> instead of two
-  RefinedTcpStreams.
-* add a default SocketAddr value for if the stream returns an error.
-
---- a/src/client.rs
-+++ b/src/client.rs
-@@ -9,7 +9,7 @@ use std::str::FromStr;
- 
- use common::{HTTPVersion, Method};
- use util::{SequentialReader, SequentialReaderBuilder, SequentialWriterBuilder};
--use util::RefinedTcpStream;
-+use util::{RefinedTcpStream, Stream};
- 
- use Request;
- 
-@@ -17,7 +17,7 @@ use Request;
- /// and return Request objects.
- pub struct ClientConnection {
-     // address of the client
--    remote_addr: IoResult<SocketAddr>,
-+    remote_addr: SocketAddr,
- 
-     // sequence of Readers to the stream, so that the data is not read in
-     //  the wrong order
-@@ -50,10 +50,11 @@ enum ReadError {
- 
- impl ClientConnection {
-     /// Creates a new ClientConnection that takes ownership of the TcpStream.
--    pub fn new(write_socket: RefinedTcpStream, mut read_socket: RefinedTcpStream)
--               -> ClientConnection
-+    pub fn new<S>(stream: S) -> ClientConnection
-+        where S: Into<Stream>
-     {
--        let remote_addr = read_socket.peer_addr();
-+        let (mut read_socket, write_socket) = RefinedTcpStream::new(stream);
-+        let remote_addr = read_socket.peer_addr().unwrap_or(SocketAddr::from(([0,0,0,0], 0)));
-         let secure = read_socket.secure();
- 
-         let mut source = SequentialReaderBuilder::new(BufReader::with_capacity(1024, read_socket));
-@@ -145,7 +146,7 @@ impl ClientConnection {
- 
-         // building the next reader
-         let request = try!(::request::new_request(self.secure, method, path, version.clone(),
--                headers, self.remote_addr.as_ref().unwrap().clone(), data_source, writer)
-+                headers, self.remote_addr, data_source, writer)
-             .map_err(|e| {
-                 use request;
-                 match e {
---- a/src/lib.rs
-+++ b/src/lib.rs
-@@ -116,8 +116,9 @@ use std::net::{ToSocketAddrs, TcpStream, Shutdown};
- use std::time::Duration;
- use std::sync::atomic::Ordering::Relaxed;
- 
--use client::ClientConnection;
-+pub use client::ClientConnection;
- use util::MessagesQueue;
-+pub use util::Stream;
- 
- pub use common::{Header, HeaderField, HTTPVersion, Method, StatusCode};
- pub use request::{Request, ReadWrite};
-@@ -282,28 +283,23 @@ impl Server {
-             while !inside_close_trigger.load(Relaxed) {
-                 let new_client = match server.accept() {
-                     Ok((sock, _)) => {
--                        use util::RefinedTcpStream;
--                        let (read_closable, write_closable) = match ssl {
--                            None => {
--                                RefinedTcpStream::new(sock)
--                            },
-+                        let stream = match ssl {
-+                            None => sock,
-                             #[cfg(feature = "ssl")]
-                             Some(ref ssl) => {
-                                 let ssl = openssl::ssl::Ssl::new(ssl).expect("Couldn't create ssl");
-                                 // trying to apply SSL over the connection
-                                 // if an error occurs, we just close the socket and resume listening
--                                let sock = match ssl.accept(sock) {
-+                                match ssl.accept(sock) {
-                                     Ok(s) => s,
-                                     Err(_) => continue
--                                };
--
--                                RefinedTcpStream::new(sock)
-+                                }
-                             },
-                             #[cfg(not(feature = "ssl"))]
-                             Some(_) => unreachable!(),
-                         };
- 
--                        Ok(ClientConnection::new(write_closable, read_closable))
-+                        Ok(ClientConnection::new(stream))
-                     },
-                     Err(e) => Err(e),
-                 };
---- a/src/util/mod.rs
-+++ b/src/util/mod.rs
-@@ -1,7 +1,7 @@
- pub use self::custom_stream::CustomStream;
- pub use self::equal_reader::EqualReader;
- pub use self::messages_queue::MessagesQueue;
--pub use self::refined_tcp_stream::RefinedTcpStream;
-+pub use self::refined_tcp_stream::{RefinedTcpStream, Stream};
- pub use self::sequential::{SequentialReaderBuilder, SequentialReader};
- pub use self::sequential::{SequentialWriterBuilder, SequentialWriter};
- pub use self::task_pool::TaskPool;
---- a/src/util/refined_tcp_stream.rs
-+++ b/src/util/refined_tcp_stream.rs
-@@ -1,6 +1,7 @@
- use std::io::{Read, Write};
- use std::io::Result as IoResult;
- use std::net::{SocketAddr, TcpStream, Shutdown};
-+use std::os::unix::net::UnixStream;
- 
- #[cfg(feature = "ssl")]
- use std::sync::{Arc, Mutex};
-@@ -17,6 +18,7 @@ pub enum Stream {
-     Http(TcpStream),
-     #[cfg(feature = "ssl")]
-     Https(Arc<Mutex<SslStream<TcpStream>>>),
-+    Unix(UnixStream),
- }
- 
- impl From<TcpStream> for Stream {
-@@ -34,6 +36,13 @@ impl From<SslStream<TcpStream>> for Stream {
-     }
- }
- 
-+impl From<UnixStream> for Stream {
-+    #[inline]
-+    fn from(stream: UnixStream) -> Stream {
-+        Stream::Unix(stream)
-+    }
-+}
-+
- impl RefinedTcpStream {
-     pub fn new<S>(stream: S) -> (RefinedTcpStream, RefinedTcpStream)
-         where S: Into<Stream>
-@@ -44,6 +53,7 @@ impl RefinedTcpStream {
-             Stream::Http(ref stream) => Stream::Http(stream.try_clone().unwrap()),
-             #[cfg(feature = "ssl")]
-             Stream::Https(ref stream) => Stream::Https(stream.clone()),
-+            Stream::Unix(ref stream) => Stream::Unix(stream.try_clone().unwrap()),
-         };
- 
-         let read = RefinedTcpStream {
-@@ -68,6 +78,7 @@ impl RefinedTcpStream {
-             Stream::Http(_) => false,
-             #[cfg(feature = "ssl")]
-             Stream::Https(_) => true,
-+            Stream::Unix(_) => false,
-         }
-     }
- 
-@@ -76,6 +87,7 @@ impl RefinedTcpStream {
-             Stream::Http(ref mut stream) => stream.peer_addr(),
-             #[cfg(feature = "ssl")]
-             Stream::Https(ref mut stream) => stream.lock().unwrap().get_ref().peer_addr(),
-+            Stream::Unix(_) => Err(std::io::Error::new(std::io::ErrorKind::Other, "Peer addresses are not supported for Unix sockets")),
-         }
-     }
- }
-@@ -88,6 +100,7 @@ impl Drop for RefinedTcpStream {
-                 Stream::Http(ref mut stream) => stream.shutdown(Shutdown::Read).ok(),
-                 #[cfg(feature = "ssl")]
-                 Stream::Https(ref mut stream) => stream.lock().unwrap().get_mut().shutdown(Shutdown::Read).ok(),
-+                Stream::Unix(ref mut stream) => stream.shutdown(Shutdown::Read).ok(),
-             };
-         }
- 
-@@ -97,6 +110,7 @@ impl Drop for RefinedTcpStream {
-                 Stream::Http(ref mut stream) => stream.shutdown(Shutdown::Write).ok(),
-                 #[cfg(feature = "ssl")]
-                 Stream::Https(ref mut stream) => stream.lock().unwrap().get_mut().shutdown(Shutdown::Write).ok(),
-+                Stream::Unix(ref mut stream) => stream.shutdown(Shutdown::Write).ok(),
-             };
-         }
-     }
-@@ -108,6 +122,7 @@ impl Read for RefinedTcpStream {
-             Stream::Http(ref mut stream) => stream.read(buf),
-             #[cfg(feature = "ssl")]
-             Stream::Https(ref mut stream) => stream.lock().unwrap().read(buf),
-+            Stream::Unix(ref mut stream) => stream.read(buf),
-         }
-     }
- }
-@@ -118,6 +133,7 @@ impl Write for RefinedTcpStream {
-             Stream::Http(ref mut stream) => stream.write(buf),
-             #[cfg(feature = "ssl")]
-             Stream::Https(ref mut stream) => stream.lock().unwrap().write(buf),
-+            Stream::Unix(ref mut stream) => stream.write(buf),
-         }
-     }
- 
-@@ -126,6 +142,7 @@ impl Write for RefinedTcpStream {
-             Stream::Http(ref mut stream) => stream.flush(),
-             #[cfg(feature = "ssl")]
-             Stream::Https(ref mut stream) => stream.lock().unwrap().flush(),
-+            Stream::Unix(ref mut stream) => stream.flush(),
-         }
-     }
- }
diff --git a/dev-rust/tiny_http/files/tiny_http-0.8.0-0001-unix-socket-support.patch b/dev-rust/tiny_http/files/tiny_http-0.8.0-0001-unix-socket-support.patch
new file mode 100644
index 0000000..78a6a12
--- /dev/null
+++ b/dev-rust/tiny_http/files/tiny_http-0.8.0-0001-unix-socket-support.patch
@@ -0,0 +1,217 @@
+Add support for Unix Sockets
+
+* add support for Unix Sockets to Stream/RefinedTcpStream.
+* add a 'pub use' for ClientConnection and Stream
+* convert ClientConnection::new to take Into<Stream> instead of two
+  RefinedTcpStreams.
+* add a default SocketAddr value for if the stream returns an error.
+
+Pull Request: https://github.com/tiny-http/tiny-http/pull/187
+
+--- a/src/client.rs
++++ b/src/client.rs
+@@ -10,6 +10,7 @@ use std::str::FromStr;
+ use common::{HTTPVersion, Method};
+ use util::RefinedTcpStream;
+ use util::{SequentialReader, SequentialReaderBuilder, SequentialWriterBuilder};
++use util::Stream;
+ 
+ use Request;
+ 
+@@ -17,7 +18,7 @@ use Request;
+ /// and return Request objects.
+ pub struct ClientConnection {
+     // address of the client
+-    remote_addr: IoResult<SocketAddr>,
++    remote_addr: SocketAddr,
+ 
+     // sequence of Readers to the stream, so that the data is not read in
+     //  the wrong order
+@@ -50,11 +51,11 @@ enum ReadError {
+ 
+ impl ClientConnection {
+     /// Creates a new ClientConnection that takes ownership of the TcpStream.
+-    pub fn new(
+-        write_socket: RefinedTcpStream,
+-        mut read_socket: RefinedTcpStream,
+-    ) -> ClientConnection {
+-        let remote_addr = read_socket.peer_addr();
++    pub fn new<S>(stream: S) -> ClientConnection
++        where S: Into<Stream>
++    {
++        let (mut read_socket, write_socket) = RefinedTcpStream::new(stream);
++        let remote_addr = read_socket.peer_addr().unwrap_or(SocketAddr::from(([0,0,0,0], 0)));
+         let secure = read_socket.secure();
+ 
+         let mut source = SequentialReaderBuilder::new(BufReader::with_capacity(1024, read_socket));
+@@ -152,7 +153,7 @@ impl ClientConnection {
+             path,
+             version.clone(),
+             headers,
+-            *self.remote_addr.as_ref().unwrap(),
++            self.remote_addr,
+             data_source,
+             writer,
+         )
+diff --git a/src/lib.rs b/src/lib.rs
+index 40b5491..60e8dcc 100644
+--- a/src/lib.rs
++++ b/src/lib.rs
+@@ -117,8 +117,9 @@ use std::sync::Arc;
+ use std::thread;
+ use std::time::Duration;
+ 
+-use client::ClientConnection;
++pub use client::ClientConnection;
+ use util::MessagesQueue;
++pub use util::Stream;
+ 
+ pub use common::{HTTPVersion, Header, HeaderField, Method, StatusCode};
+ pub use request::{ReadWrite, Request};
+@@ -297,27 +298,24 @@ impl Server {
+             while !inside_close_trigger.load(Relaxed) {
+                 let new_client = match server.accept() {
+                     Ok((sock, _)) => {
+-                        use util::RefinedTcpStream;
+-                        let (read_closable, write_closable) = match ssl {
+-                            None => RefinedTcpStream::new(sock),
++                        let stream = match ssl {
++                            None => sock,
+                             #[cfg(feature = "ssl")]
+                             Some(ref ssl) => {
+                                 let ssl = openssl::ssl::Ssl::new(ssl).expect("Couldn't create ssl");
+                                 // trying to apply SSL over the connection
+                                 // if an error occurs, we just close the socket and resume listening
+-                                let sock = match ssl.accept(sock) {
++                                match ssl.accept(sock) {
+                                     Ok(s) => s,
+-                                    Err(_) => continue,
+-                                };
+-
+-                                RefinedTcpStream::new(sock)
+-                            }
++                                    Err(_) => continue
++                                }
++                            },
+                             #[cfg(not(feature = "ssl"))]
+                             Some(_) => unreachable!(),
+                         };
+ 
+-                        Ok(ClientConnection::new(write_closable, read_closable))
+-                    }
++                        Ok(ClientConnection::new(stream))
++                    },
+                     Err(e) => Err(e),
+                 };
+ 
+diff --git a/src/util/mod.rs b/src/util/mod.rs
+index 8abfb64..d775ee6 100644
+--- a/src/util/mod.rs
++++ b/src/util/mod.rs
+@@ -1,7 +1,7 @@
+ pub use self::custom_stream::CustomStream;
+ pub use self::equal_reader::EqualReader;
+ pub use self::messages_queue::MessagesQueue;
+-pub use self::refined_tcp_stream::RefinedTcpStream;
++pub use self::refined_tcp_stream::{RefinedTcpStream, Stream};
+ pub use self::sequential::{SequentialReader, SequentialReaderBuilder};
+ pub use self::sequential::{SequentialWriter, SequentialWriterBuilder};
+ pub use self::task_pool::TaskPool;
+diff --git a/src/util/refined_tcp_stream.rs b/src/util/refined_tcp_stream.rs
+index 0c031a9..942a017 100644
+--- a/src/util/refined_tcp_stream.rs
++++ b/src/util/refined_tcp_stream.rs
+@@ -1,6 +1,7 @@
+ use std::io::Result as IoResult;
+ use std::io::{Read, Write};
+ use std::net::{Shutdown, SocketAddr, TcpStream};
++use std::os::unix::net::UnixStream;
+ 
+ #[cfg(feature = "ssl")]
+ use openssl::ssl::SslStream;
+@@ -17,6 +18,7 @@ pub enum Stream {
+     Http(TcpStream),
+     #[cfg(feature = "ssl")]
+     Https(Arc<Mutex<SslStream<TcpStream>>>),
++    Unix(UnixStream),
+ }
+ 
+ impl From<TcpStream> for Stream {
+@@ -34,6 +36,13 @@ impl From<SslStream<TcpStream>> for Stream {
+     }
+ }
+ 
++impl From<UnixStream> for Stream {
++    #[inline]
++    fn from(stream: UnixStream) -> Stream {
++        Stream::Unix(stream)
++    }
++}
++
+ impl RefinedTcpStream {
+     pub fn new<S>(stream: S) -> (RefinedTcpStream, RefinedTcpStream)
+     where
+@@ -45,6 +54,7 @@ impl RefinedTcpStream {
+             Stream::Http(ref stream) => Stream::Http(stream.try_clone().unwrap()),
+             #[cfg(feature = "ssl")]
+             Stream::Https(ref stream) => Stream::Https(stream.clone()),
++            Stream::Unix(ref stream) => Stream::Unix(stream.try_clone().unwrap()),
+         };
+ 
+         let read = RefinedTcpStream {
+@@ -69,6 +79,7 @@ impl RefinedTcpStream {
+             Stream::Http(_) => false,
+             #[cfg(feature = "ssl")]
+             Stream::Https(_) => true,
++            Stream::Unix(_) => false,
+         }
+     }
+ 
+@@ -77,6 +88,7 @@ impl RefinedTcpStream {
+             Stream::Http(ref mut stream) => stream.peer_addr(),
+             #[cfg(feature = "ssl")]
+             Stream::Https(ref mut stream) => stream.lock().unwrap().get_ref().peer_addr(),
++            Stream::Unix(_) => Err(std::io::Error::new(std::io::ErrorKind::Other, "Peer addresses are not supported for Unix sockets")),
+         }
+     }
+ }
+@@ -94,6 +106,7 @@ impl Drop for RefinedTcpStream {
+                     .get_mut()
+                     .shutdown(Shutdown::Read)
+                     .ok(),
++                Stream::Unix(ref mut stream) => stream.shutdown(Shutdown::Read).ok(),
+             };
+         }
+ 
+@@ -108,6 +121,7 @@ impl Drop for RefinedTcpStream {
+                     .get_mut()
+                     .shutdown(Shutdown::Write)
+                     .ok(),
++                Stream::Unix(ref mut stream) => stream.shutdown(Shutdown::Write).ok(),
+             };
+         }
+     }
+@@ -119,6 +133,7 @@ impl Read for RefinedTcpStream {
+             Stream::Http(ref mut stream) => stream.read(buf),
+             #[cfg(feature = "ssl")]
+             Stream::Https(ref mut stream) => stream.lock().unwrap().read(buf),
++            Stream::Unix(ref mut stream) => stream.read(buf),
+         }
+     }
+ }
+@@ -129,6 +144,7 @@ impl Write for RefinedTcpStream {
+             Stream::Http(ref mut stream) => stream.write(buf),
+             #[cfg(feature = "ssl")]
+             Stream::Https(ref mut stream) => stream.lock().unwrap().write(buf),
++            Stream::Unix(ref mut stream) => stream.write(buf),
+         }
+     }
+ 
+@@ -137,6 +153,7 @@ impl Write for RefinedTcpStream {
+             Stream::Http(ref mut stream) => stream.flush(),
+             #[cfg(feature = "ssl")]
+             Stream::Https(ref mut stream) => stream.lock().unwrap().flush(),
++            Stream::Unix(ref mut stream) => stream.flush(),
+         }
+     }
+ }
diff --git a/dev-rust/tiny_http/tiny_http-0.7.0.ebuild b/dev-rust/tiny_http/tiny_http-0.7.0.ebuild
deleted file mode 100644
index 15ed96f..0000000
--- a/dev-rust/tiny_http/tiny_http-0.7.0.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="Low level HTTP server library"
-HOMEPAGE="https://docs.rs/crate/tiny_http/"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/ascii-1*:=
-	=dev-rust/chunked_transfer-1*:=
-	=dev-rust/url-2*:=
-	=dev-rust/chrono-0.4*:=
-	=dev-rust/log-0.4*:=
-"
-
-PATCHES=(
-	"${FILESDIR}/${P}-0001-unix-socket-support.patch"
-	"${FILESDIR}/${P}-0002-remove-ssl-dependency.patch"
-)
diff --git a/dev-rust/tiny_http/tiny_http-0.8.0.ebuild b/dev-rust/tiny_http/tiny_http-0.8.0.ebuild
new file mode 100644
index 0000000..62c3b09
--- /dev/null
+++ b/dev-rust/tiny_http/tiny_http-0.8.0.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Low level HTTP server library"
+HOMEPAGE="https://docs.rs/crate/tiny_http/"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/ascii-1*:=
+	=dev-rust/chunked_transfer-1*:=
+	=dev-rust/url-2*:=
+	=dev-rust/chrono-0.4*:=
+	=dev-rust/log-0.4*:=
+"
+RDEPEND="${DEPEND}
+	!~dev-rust/tiny_http-0.7.0
+"
+
+PATCHES=(
+	"${FILESDIR}/${P}-0001-unix-socket-support.patch"
+	"${FILESDIR}/${PN}-0.7.0-0002-remove-ssl-dependency.patch"
+)
diff --git a/dev-rust/tlsdate_dbus/tlsdate_dbus-0.24.52-r11.ebuild b/dev-rust/tlsdate_dbus/tlsdate_dbus-0.24.52-r11.ebuild
deleted file mode 100644
index 1b25d56..0000000
--- a/dev-rust/tlsdate_dbus/tlsdate_dbus-0.24.52-r11.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="1d52bb98be21fb4773d13be398469570e4b3ba70"
-CROS_WORKON_TREE="9b4af5e6c151008162265b39fd9494ef88c832da"
-CROS_WORKON_PROJECT="chromiumos/third_party/tlsdate"
-CROS_WORKON_LOCALNAME="tlsdate"
-
-inherit cros-workon cros-rust
-
-CROS_RUST_SUBDIR=""
-
-DESCRIPTION="Rust D-Bus bindings for tlsdate."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/tlsdate/+/master/"
-
-LICENSE="BSD-Google"
-SLOT="0/${PVR}"
-KEYWORDS="*"
-
-RDEPEND=""
-
-DEPEND="${RDEPEND}
-	=dev-rust/dbus-0.8*:=
-	dev-rust/chromeos-dbus-bindings:=
-"
diff --git a/dev-rust/tlsdate_dbus/tlsdate_dbus-0.24.52-r24.ebuild b/dev-rust/tlsdate_dbus/tlsdate_dbus-0.24.52-r24.ebuild
new file mode 100644
index 0000000..7f38a4e
--- /dev/null
+++ b/dev-rust/tlsdate_dbus/tlsdate_dbus-0.24.52-r24.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="8b0e7603cb5fd7924c9e99b7d26ad8b716fbada7"
+CROS_WORKON_TREE="ac75e4e94cf1c6c37833513159b83d64b3de9104"
+CROS_WORKON_PROJECT="chromiumos/third_party/tlsdate"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_LOCALNAME="tlsdate"
+
+inherit cros-workon cros-rust
+
+CROS_RUST_SUBDIR=""
+
+DESCRIPTION="Rust D-Bus bindings for tlsdate."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/tlsdate/+/master/"
+
+LICENSE="BSD-Google"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/dbus-0.8*:=
+	dev-rust/chromeos-dbus-bindings:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/tlsdate_dbus/tlsdate_dbus-9999.ebuild b/dev-rust/tlsdate_dbus/tlsdate_dbus-9999.ebuild
index 2994efd..857600e 100644
--- a/dev-rust/tlsdate_dbus/tlsdate_dbus-9999.ebuild
+++ b/dev-rust/tlsdate_dbus/tlsdate_dbus-9999.ebuild
@@ -4,6 +4,7 @@
 EAPI=7
 
 CROS_WORKON_PROJECT="chromiumos/third_party/tlsdate"
+CROS_WORKON_EGIT_BRANCH="master"
 CROS_WORKON_LOCALNAME="tlsdate"
 
 inherit cros-workon cros-rust
@@ -17,9 +18,10 @@
 SLOT="0/${PVR}"
 KEYWORDS="~*"
 
-RDEPEND=""
-
-DEPEND="${RDEPEND}
+DEPEND="
 	=dev-rust/dbus-0.8*:=
 	dev-rust/chromeos-dbus-bindings:=
 "
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/tokio-codec/Manifest b/dev-rust/tokio-codec/Manifest
index 3111a01..3627baf 100644
--- a/dev-rust/tokio-codec/Manifest
+++ b/dev-rust/tokio-codec/Manifest
@@ -1 +1,2 @@
 DIST tokio-codec-0.1.1.crate 7617 BLAKE2B 868f45ddaa16cef0ec7143ae7d25d422fa4fd7fe59bc99a7ae4b97f700dd6418610b917a880f1fa5c939799168d8c31901d7186a0195c7b72bd130a01c787b7a SHA512 9c868545e8adc234a51b81966836b786019181ea25907bf14887ce26ed1cf5866f5df8898bbf6bb7c8d3626f145ce0465d3a79050d53f8dcffe98f71886f9044
+DIST tokio-codec-0.1.2.crate 7850 BLAKE2B 68e196f0cfe2742f5bd6a4074eafb7cc83d80622f51743e9cda367c8fb26bcf3a6a10772963e75f86c3ef054270f22a13e58a3455ee316145b111a2d6ad00053 SHA512 69bb3a0ea81fc8437fd57c2ee533f0674770182207576e463c8a5859956175a4619500b832863cae9ba9d0d09d76c33441c7b3e929896a61304b25c9d2dd6c94
diff --git a/dev-rust/tokio-codec/tokio-codec-0.1.2.ebuild b/dev-rust/tokio-codec/tokio-codec-0.1.2.ebuild
new file mode 100644
index 0000000..6772b66
--- /dev/null
+++ b/dev-rust/tokio-codec/tokio-codec-0.1.2.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Utilities for encoding and decoding frames."
+HOMEPAGE="https://tokio.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/bytes-0.4.7:= <dev-rust/bytes-0.5.0
+	>=dev-rust/futures-0.1.18:= <dev-rust/futures-0.2.0
+	>=dev-rust/tokio-io-0.1.7:= <dev-rust/tokio-io-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-core/tokio-core-0.1.17-r1.ebuild b/dev-rust/tokio-core/tokio-core-0.1.17-r1.ebuild
new file mode 100644
index 0000000..e020e9a
--- /dev/null
+++ b/dev-rust/tokio-core/tokio-core-0.1.17-r1.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Core I/O and event loop abstraction for asynchronous I/O in Rust built on futures and mio."
+HOMEPAGE="https://tokio.rs/"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/bytes-0.4*:=
+	=dev-rust/futures-0.1*:=
+	=dev-rust/iovec-0.1*:=
+	=dev-rust/log-0.4*:=
+	>=dev-rust/mio-0.6.12:= <dev-rust/mio-0.7.0
+	=dev-rust/scoped-tls-0.1*:=
+	>=dev-rust/tokio-0.1.5:= <dev-rust/tokio-0.2.0
+	>=dev-rust/tokio-executor-0.1.2:= <dev-rust/tokio-executor-0.2.0
+	=dev-rust/tokio-io-0.1*:=
+	>=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0
+	>=dev-rust/tokio-timer-0.2.1:= <dev-rust/tokio-timer-0.3.0
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/tokio-current-thread/Manifest b/dev-rust/tokio-current-thread/Manifest
index 2852f9b..9ea9ca70 100644
--- a/dev-rust/tokio-current-thread/Manifest
+++ b/dev-rust/tokio-current-thread/Manifest
@@ -1 +1,2 @@
 DIST tokio-current-thread-0.1.6.crate 19339 BLAKE2B c3fe401178089864fe59286566b84a325d8a4101b0b72dda11fefef945d5e14b5e6b6c7de7d87cf222f0ea3d1c95aa65f2c43fe37c2e766f8d70da66c7d060ec SHA512 321d8b99ea18827400a6b7899755eea5a8299e53985f5640a6fd82bf6c3c5c45c68e9d125666968976d05be407d6c15401380870adc231233cc532eb979353f6
+DIST tokio-current-thread-0.1.7.crate 19690 BLAKE2B 1a6ccb40e59095df2e4ece5be501027a9975297c8606cbf107e8a365529d175415d1738e6770c31b586685fa0e573b6c4eade68fc83b1e01d89c2e22a3741e28 SHA512 4458eecddf552cc63dfb877976cdaa2060f8fd82a9cb6667f8fb3507aeffef4f3db38d649de55bd784f98828a12bc066d35e96c60ca07a42cf8f16a5fd7d58ea
diff --git a/dev-rust/tokio-current-thread/tokio-current-thread-0.1.7.ebuild b/dev-rust/tokio-current-thread/tokio-current-thread-0.1.7.ebuild
new file mode 100644
index 0000000..ef89ecf
--- /dev/null
+++ b/dev-rust/tokio-current-thread/tokio-current-thread-0.1.7.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Single threaded executor which manage many tasks concurrently on the current thread."
+HOMEPAGE="https://github.com/tokio-rs/tokio"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0
+	>=dev-rust/tokio-executor-0.1.7:= <dev-rust/tokio-executor-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-executor/Manifest b/dev-rust/tokio-executor/Manifest
index 8b94273..8d92fac 100644
--- a/dev-rust/tokio-executor/Manifest
+++ b/dev-rust/tokio-executor/Manifest
@@ -1 +1,2 @@
+DIST tokio-executor-0.1.10.crate 12191 BLAKE2B 9efed875a669cc842d298d2ea5ec310a008707f5ec4b796d68fbcaa3ff47c3484630306116d6d36c71f4461869e63a11dd498cb680013f5a3c2a9a46fff9763f SHA512 e2101de6130d09c1a0cf750ea49f605db2933ee4d96943e111d550816ba6a67e4d662e0ba5fb548ae62d582b665239b27b8478f2364b6c46d038dbde8cc41754
 DIST tokio-executor-0.1.7.crate 11344 BLAKE2B bc10e3f2cc0b866fda5a9f703955714272e1c2e4a867c1216bce547ca72ded9add2e8bb5002d17d0688dadf910b85ec40ff412b920325bc55762ab76e81bcc69 SHA512 cdec6f468096abb09b5544dd0c792a1de09f48306b5749b960da25b4d9e694362a47efa4a1093285020fcf77e654157ba9d80ee4b8bffe6dc36b05f15f5a08b4
diff --git a/dev-rust/tokio-executor/tokio-executor-0.1.10.ebuild b/dev-rust/tokio-executor/tokio-executor-0.1.10.ebuild
new file mode 100644
index 0000000..bacdc41
--- /dev/null
+++ b/dev-rust/tokio-executor/tokio-executor-0.1.10.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Future execution primitives"
+HOMEPAGE="https://github.com/tokio-rs/tokio"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/crossbeam-utils-0.7*:=
+	>=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-fs/Manifest b/dev-rust/tokio-fs/Manifest
index 59e2d4b..5beda55 100644
--- a/dev-rust/tokio-fs/Manifest
+++ b/dev-rust/tokio-fs/Manifest
@@ -1 +1,2 @@
 DIST tokio-fs-0.1.6.crate 16102 BLAKE2B 4b31d365a898ad0fb20c6ae315aa60236d6423357997e34a5069597d72b146d7528a7ab974ff2e7f62d60c46461c1bd6c4b74208f61b2452088c4d8f9bf63aaa SHA512 8a123bdee5f2a6cacbe68f25baa5810a7686fefef8262b0a6b67e217ca6594a585dca52de581d33f4b71725bf03e003dc500f75ace88dba5cda00a52ce544279
+DIST tokio-fs-0.1.7.crate 20881 BLAKE2B 08d22887c990149cd3aeefc3a9aef949124a2c3cb9edb5ec2b76a01b90f85a22226417f75319f92514d812b752ff7090854188e64d2c1af8cf8c773b7a97a8e5 SHA512 3a1023dd9537164c61ba07b4759d05136165274efed6cbb7bf868ccabc311353b0e221137d2be643970f4d710bff20251104344a7542a08ac3d60ef502624d2f
diff --git a/dev-rust/tokio-fs/tokio-fs-0.1.7.ebuild b/dev-rust/tokio-fs/tokio-fs-0.1.7.ebuild
new file mode 100644
index 0000000..1e260d9
--- /dev/null
+++ b/dev-rust/tokio-fs/tokio-fs-0.1.7.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Filesystem API for Tokio."
+HOMEPAGE="https://tokio.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/futures-0.1.21:= <dev-rust/futures-0.2.0
+	>=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0
+	>=dev-rust/tokio-threadpool-0.1.3:= <dev-rust/tokio-threadpool-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-io/Manifest b/dev-rust/tokio-io/Manifest
index f27a843..ac13c49 100644
--- a/dev-rust/tokio-io/Manifest
+++ b/dev-rust/tokio-io/Manifest
@@ -1 +1,2 @@
 DIST tokio-io-0.1.12.crate 33555 BLAKE2B 5646f1d0c226d223fdbf648d95cd690ad6f755c5dfa9a6bc4d5fe4b5df634029db6178d852d3a4c2d481d06eec763985186753088157557871e5ba6e8aa650af SHA512 57c675ade48f2885ab8f42dac7297bf4bc5f7abef2302f7964dc145ce29d503c09e3ff890de01aedcf0c860fe22d2161f9837d658457695b6205e601fac74149
+DIST tokio-io-0.1.13.crate 33665 BLAKE2B 4e9c6bda0d391ae685dfc89cc0137fc44b31a4a788f730ab632b73d92ab55dad871d68b03ae0899cba9f96e402f88a60d4b8be5d484947b8982a39e473e5b8ae SHA512 608341311f4bda9617634a2623033900bde1d6b9fc89ae52131838f033bdbdf8704114193d8409ea0e10bd53d6f7ab63d47e17b7abb41d3f8865ab36fd0532ef
diff --git a/dev-rust/tokio-io/tokio-io-0.1.13.ebuild b/dev-rust/tokio-io/tokio-io-0.1.13.ebuild
new file mode 100644
index 0000000..87965c8
--- /dev/null
+++ b/dev-rust/tokio-io/tokio-io-0.1.13.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Core I/O primitives for asynchronous I/O in Rust."
+HOMEPAGE="https://tokio.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/bytes-0.4.7:= <dev-rust/bytes-0.5.0
+	>=dev-rust/futures-0.1.18:= <dev-rust/futures-0.2.0
+	=dev-rust/log-0.4*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-io/tokio-io-0.1.9.ebuild b/dev-rust/tokio-io/tokio-io-0.1.9.ebuild
new file mode 100644
index 0000000..f7449d3
--- /dev/null
+++ b/dev-rust/tokio-io/tokio-io-0.1.9.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_EMPTY_CRATE=1
+
+inherit cros-rust
+
+DESCRIPTION="Empty crate"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+# This crate breaks the circular dependency
+# tokio-io -> futures -> futures-util -> tokio-io
diff --git a/dev-rust/tokio-reactor/Manifest b/dev-rust/tokio-reactor/Manifest
index 1815ce5..b292041 100644
--- a/dev-rust/tokio-reactor/Manifest
+++ b/dev-rust/tokio-reactor/Manifest
@@ -1 +1,2 @@
+DIST tokio-reactor-0.1.12.crate 21058 BLAKE2B c1a1842aeccc0d3f74dc4e588c485d326f74b652b8f504bf20cdd69c42dcf937c49bbd0c149f8da428dd12f5d8a1715bd39ad76d3b71f1e414c663093a437d26 SHA512 2db454c63f8965345997685baa9e4f1e7d2fad1c0087e7d79bcbdc5bf0176703de49c50180689db5f797aff6794748e01a28877d46f58cf453d7a4fe17d3f791
 DIST tokio-reactor-0.1.9.crate 20657 BLAKE2B 433b1302ab41d1c028c1fa726b796d41484526400801df2375de04faa1699cece0d55717f8ba4fc292d33fbc7fb343f766c1d474a36e36d72947bc7572e27a24 SHA512 134c78b449646f1b7cf9dc87de0f39ebfdb894103e0271a2b5115320add04de02aa1899206f332f111a9471f1f54776fe89e3ff879648fa206100b2be12e24e1
diff --git a/dev-rust/tokio-reactor/tokio-reactor-0.1.12.ebuild b/dev-rust/tokio-reactor/tokio-reactor-0.1.12.ebuild
new file mode 100644
index 0000000..7d4bd02
--- /dev/null
+++ b/dev-rust/tokio-reactor/tokio-reactor-0.1.12.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Event loop that drives Tokio I/O resources."
+HOMEPAGE="https://tokio.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/crossbeam-utils-0.7*:=
+	>=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0
+	>=dev-rust/lazy_static-1.0.2:= <dev-rust/lazy_static-2.0.0
+	>=dev-rust/log-0.4.1:= <dev-rust/log-0.5.0
+	>=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0
+	>=dev-rust/num_cpus-1.8.0:= <dev-rust/num_cpus-2.0.0
+	=dev-rust/parking_lot-0.9*:=
+	=dev-rust/slab-0.4*:=
+	>=dev-rust/tokio-executor-0.1.1:= <dev-rust/tokio-executor-0.2.0
+	>=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0
+	>=dev-rust/tokio-sync-0.1.1:= <dev-rust/tokio-sync-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-sync/Manifest b/dev-rust/tokio-sync/Manifest
index 2ec19f5..33d221f 100644
--- a/dev-rust/tokio-sync/Manifest
+++ b/dev-rust/tokio-sync/Manifest
@@ -1 +1,2 @@
 DIST tokio-sync-0.1.5.crate 41685 BLAKE2B fc86fa0dccc72cc2ed85f0ed67ab1e6053fc48dcdc9de845e4d6c6a0d9f125a3331f67d7b31c2692edf691182db958dd298b44b8236615f345210efea541be87 SHA512 5a7f4c9c36d2024cfbe02ad3e2665ae238764f783f6eaccebda6ceda9561bfe9dfc58dd52f7cf1ceb6c78178c57abd9feabf86ef6733d3fd64424045fee30966
+DIST tokio-sync-0.1.8.crate 41830 BLAKE2B 20e61e5e5360f54446ad60de050a4156d3e975f4e246f51b308ea1def48c51f8f1b28fcfd81362b00e0f6f9c40382abb71a4c9e799e81cfd7b0c7b085c42cc27 SHA512 b3665476629ecc8d513d53169beebe090818c6b76ca99f0a508c730bde0ca3c49b828942fc3b9d76fa9cad1b6766237e18a329607ca2314c7ad4b343dd785371
diff --git a/dev-rust/tokio-sync/tokio-sync-0.1.8.ebuild b/dev-rust/tokio-sync/tokio-sync-0.1.8.ebuild
new file mode 100644
index 0000000..d92ec74
--- /dev/null
+++ b/dev-rust/tokio-sync/tokio-sync-0.1.8.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Synchronization utilities."
+HOMEPAGE="https://tokio.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/fnv-1.0.6:= <dev-rust/fnv-2.0.0
+	>=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-tcp/Manifest b/dev-rust/tokio-tcp/Manifest
index e7a4146..2bf85f3 100644
--- a/dev-rust/tokio-tcp/Manifest
+++ b/dev-rust/tokio-tcp/Manifest
@@ -1 +1,2 @@
 DIST tokio-tcp-0.1.3.crate 12629 BLAKE2B 16a2763eeb2b65edd07f9b998535812efaa25584bfed5fd66fb1b2952893fa3ed330f597032b4140daf9635ba4f49e77aeabc2cea82c997dfc971bd97fa4f5d0 SHA512 ae42facabed1589764a8e4f789dabf5c7adfb3a67880a8bb6d7b0b6c082302a84b6acd8ec5f444dc59284407acad61518d60818eaeb34f874380f9593d540336
+DIST tokio-tcp-0.1.4.crate 12745 BLAKE2B b11b76b94ac5fee26c83537d9c169fa775539c90703fd9ae2c5565c99bbb56305c474710a3b90ed2e8cc2010ac00de77023ecc04e5cb4a653d7b5e0f0e21e23d SHA512 e33168e12ab9cf448f75ccc1662f54b287db0961dd472da3a86f400d6b80159cce290b9a4b948d216b86284e5bd61c14db8750fc2d0ac16d3937418c1260d2f4
diff --git a/dev-rust/tokio-tcp/tokio-tcp-0.1.4.ebuild b/dev-rust/tokio-tcp/tokio-tcp-0.1.4.ebuild
new file mode 100644
index 0000000..b98b04e
--- /dev/null
+++ b/dev-rust/tokio-tcp/tokio-tcp-0.1.4.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="TCP bindings for tokio."
+HOMEPAGE="https://tokio.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/bytes-0.4*:=
+	>=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0
+	=dev-rust/iovec-0.1*:=
+	>=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0
+	>=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0
+	>=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-threadpool/Manifest b/dev-rust/tokio-threadpool/Manifest
index b844c47..b0257f9 100644
--- a/dev-rust/tokio-threadpool/Manifest
+++ b/dev-rust/tokio-threadpool/Manifest
@@ -1 +1,2 @@
 DIST tokio-threadpool-0.1.14.crate 49881 BLAKE2B 60e4159f83451c104e114c3b99284ff3e225386a7de51d456c29c87308737f65c6de2a0d49bd2955b908fd65bfcfabbe456529eabfba43dfe4ff25fc02a24a34 SHA512 166c0298a70fb6290d7a3d2017d160cbd585f254f465ffd50556bc4ffa09b5749e7295c3426aa5f98047338d8c4164cffdbf21debb0d8b5835d2ce7d211743db
+DIST tokio-threadpool-0.1.18.crate 54825 BLAKE2B b1c202bb8aa453f3af56d82713c175dbe0b3b2c1a8efd8ba849b0afb243f48a4f76b994095e4c490b37710d6a1c33eab2f1a2dddcfe15bd9887ad8bfa9c76f8b SHA512 163aea96e536f670e5536c728b159da52585805a721a18ee42e9324320df4e93a9baa5b31072e5a12af7cfe3968bb57f0a5864e17a758f66e71e31f7f02d7b27
diff --git a/dev-rust/tokio-threadpool/tokio-threadpool-0.1.18.ebuild b/dev-rust/tokio-threadpool/tokio-threadpool-0.1.18.ebuild
new file mode 100644
index 0000000..0805054
--- /dev/null
+++ b/dev-rust/tokio-threadpool/tokio-threadpool-0.1.18.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A task scheduler backed by a work-stealing thread pool."
+HOMEPAGE="https://github.com/tokio-rs/tokio"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/crossbeam-deque-0.7*:=
+	=dev-rust/crossbeam-queue-0.2*:=
+	=dev-rust/crossbeam-utils-0.7*:=
+	>=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0
+	=dev-rust/lazy_static-1*:=
+	=dev-rust/log-0.4*:=
+	>=dev-rust/num_cpus-1.2.0:= <dev-rust/num_cpus-2.0.0
+	>=dev-rust/slab-0.4.1:= <dev-rust/slab-0.5.0
+	>=dev-rust/tokio-executor-0.1.8:= <dev-rust/tokio-executor-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-timer/Manifest b/dev-rust/tokio-timer/Manifest
index a398c35..865b2f3 100644
--- a/dev-rust/tokio-timer/Manifest
+++ b/dev-rust/tokio-timer/Manifest
@@ -1 +1,2 @@
 DIST tokio-timer-0.2.11.crate 37578 BLAKE2B e9dd19db8bbba5edf74f7354d4d5e489780b5dbf009be095e7f00bb9e2276e10ebb643605beb6ffb035d1a7a0cfb23eede14e5ebdd228ee05ad9244ac3d1273d SHA512 2bb534417425b88dd1b90231cffb89a8ab97512f1ea9e26cd4afeab5f3aa691433062f093a6789222d1892532a9cf29e1016fc668ce2939536f89e0441740d57
+DIST tokio-timer-0.2.13.crate 37873 BLAKE2B 0a1c1e07b941919dc5d1c1a425ba84d6d954b52932933e521fe5e8c76f36c9c2bef9b93eb710e79490c3082519f385f7737454ed884fc7d11ca92ca44b4fe5ca SHA512 9813e5e74cf210eb3fc29268483da32272852c79b23d4b09ad7ee012687c910848b9b8fa5638d4d71cf62d2722f29093f2324ccd4f2e65db5c111ed6f9142d04
diff --git a/dev-rust/tokio-timer/tokio-timer-0.2.13.ebuild b/dev-rust/tokio-timer/tokio-timer-0.2.13.ebuild
new file mode 100644
index 0000000..7e1ea54
--- /dev/null
+++ b/dev-rust/tokio-timer/tokio-timer-0.2.13.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Timer facilities for Tokio"
+HOMEPAGE="https://github.com/tokio-rs/tokio"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/crossbeam-utils-0.7*:=
+	>=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0
+	>=dev-rust/slab-0.4.1:= <dev-rust/slab-0.5.0
+	>=dev-rust/tokio-executor-0.1.1:= <dev-rust/tokio-executor-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-udp/Manifest b/dev-rust/tokio-udp/Manifest
index 2794557..578bc2d 100644
--- a/dev-rust/tokio-udp/Manifest
+++ b/dev-rust/tokio-udp/Manifest
@@ -1 +1,2 @@
 DIST tokio-udp-0.1.3.crate 10227 BLAKE2B 8080306c695b694ba9f25252474a9370279f7ee28dddee14575f73d36cb5731743bf0101736624eafd97f55e6f83f6be9806b8ad748411eaa382a2f90d7e874e SHA512 a2fd724ebe46b8fc8757558b6d267491b86ed5625ff91b212a6c77448231c72fa2b8e5c389cb27e93f2b924f48c88c154f23eb8721ecb93e7c1820c7c4dbead2
+DIST tokio-udp-0.1.6.crate 11677 BLAKE2B 6a2e871f385be1fb7bc597fc00a20f0086e7fbdb0b5fd2785e3bb3c01d5c41f0b1c46b29d9735f5a0176e1560225346a4ae394b7552d4d5668277ca7053b82b3 SHA512 404d2418c2e78c5e693514b181a782cd41d313f62b29186b9f30796d5fa48d7d223156d665dab39fded5b7ff5c2a47c0d08ae320b003063aa22112bc8857f62a
diff --git a/dev-rust/tokio-udp/tokio-udp-0.1.6.ebuild b/dev-rust/tokio-udp/tokio-udp-0.1.6.ebuild
new file mode 100644
index 0000000..3085169
--- /dev/null
+++ b/dev-rust/tokio-udp/tokio-udp-0.1.6.ebuild
@@ -0,0 +1,29 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="UDP bindings for tokio."
+HOMEPAGE="https://tokio.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/bytes-0.4*:=
+	>=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0
+	=dev-rust/log-0.4*:=
+	>=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0
+	=dev-rust/tokio-codec-0.1*:=
+	>=dev-rust/tokio-io-0.1.7:= <dev-rust/tokio-io-0.2.0
+	>=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio-uds/Manifest b/dev-rust/tokio-uds/Manifest
index ae8433e..c469b2a 100644
--- a/dev-rust/tokio-uds/Manifest
+++ b/dev-rust/tokio-uds/Manifest
@@ -1 +1,2 @@
 DIST tokio-uds-0.2.5.crate 11808 BLAKE2B 03f37a5f68479955176d1df673c43d6e3d77a84025620fd83bfeee6439046a1c1b62bc9606164690ac21da5fab8de12cbd534664481c3d530d0ec178ad9c4e46 SHA512 964648b9ada5e072ce90bb7a20deed48a517a0e4c6b808b1fb8440755efdc35269b5a30ad312a5e228603e8f1f8d4b8e2f19f4aab10f75ea5b569ad402bfeb61
+DIST tokio-uds-0.2.7.crate 11942 BLAKE2B 5c74cf32de1c047f75175fbff9af0cadda1a74673f5b2e3b2e652ef5724f0d428b9caade0c474411c5308559103972e19344adc97822f930d1dd31edb048d1db SHA512 c06818507ebbfc53c34b7afffe5b16c682749371a9dd7db9fffb3800b5d63fdd1d7e646bdb0c84c3b86228f86c54d2b95f61942cdcf087c9f5a1491fcb764102
diff --git a/dev-rust/tokio-uds/tokio-uds-0.2.7.ebuild b/dev-rust/tokio-uds/tokio-uds-0.2.7.ebuild
new file mode 100644
index 0000000..53daae9
--- /dev/null
+++ b/dev-rust/tokio-uds/tokio-uds-0.2.7.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Unix Domain sockets for Tokio"
+HOMEPAGE="https://github.com/tokio-rs/tokio"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/bytes-0.4.8:= <dev-rust/bytes-0.5.0
+	>=dev-rust/futures-0.1.21:= <dev-rust/futures-0.2.0
+	>=dev-rust/iovec-0.1.2:= <dev-rust/iovec-0.2.0
+	>=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0
+	>=dev-rust/log-0.4.2:= <dev-rust/log-0.5.0
+	>=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0
+	>=dev-rust/mio-uds-0.6.5:= <dev-rust/mio-uds-0.7.0
+	=dev-rust/tokio-codec-0.1*:=
+	>=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0
+	>=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/tokio/Manifest b/dev-rust/tokio/Manifest
index 523d62b..6037267 100644
--- a/dev-rust/tokio/Manifest
+++ b/dev-rust/tokio/Manifest
@@ -1 +1,2 @@
 DIST tokio-0.1.19.crate 69930 BLAKE2B 49296530245a65904925dee6e5bb52935aeb6c7e53d560789e532a09292db12b2bdcb905ca2f1b1416f32f8ae7b741c80f9a747746bb61c3fa58d1366d9b3f6c SHA512 6f68b9bbbe34ef5eb6bdd867e1bf8ebea1c50d37d1c4f8222b48ed0bc0376b2d66182b39ec1e9e9f8fad947afe7a42c7daa4dc77c93c3f0f436919f0b05e56d4
+DIST tokio-0.1.22.crate 70031 BLAKE2B 44a6d1ff8bbedfea304e4f44b5c4bf998876a632adfe611c3d851aa64ad092b7b0150c2b39ebeae8bb34cca6824922300bb3fb762cce6b5a1fcfa852ed8d86f1 SHA512 d92b8527bbeec84bb306686a7d29b705c36b59e9c0995154ed95d483c84952c838691f8c11615f481abb6c4fba470ba8968860a74a88b77dd67ccf659bf4e4e1
diff --git a/dev-rust/tokio/tokio-0.1.22.ebuild b/dev-rust/tokio/tokio-0.1.22.ebuild
new file mode 100644
index 0000000..17e0642
--- /dev/null
+++ b/dev-rust/tokio/tokio-0.1.22.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="An event-driven, non-blocking I/O platform for writing asynchronous I/O
+backed applications."
+HOMEPAGE="https://tokio.rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/bytes-0.4*:=
+	>=dev-rust/futures-0.1.20:= <dev-rust/futures-0.2.0
+	>=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0
+	>=dev-rust/num_cpus-1.8.0:= <dev-rust/num_cpus-2.0.0
+	=dev-rust/tokio-codec-0.1*:=
+	>=dev-rust/tokio-current-thread-0.1.6:= <dev-rust/tokio-current-thread-0.2.0
+	>=dev-rust/tokio-executor-0.1.7:= <dev-rust/tokio-executor-0.2.0
+	>=dev-rust/tokio-fs-0.1.6:= <dev-rust/tokio-fs-0.2.0
+	>=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0
+	>=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0
+	>=dev-rust/tokio-sync-0.1.5:= <dev-rust/tokio-sync-0.2.0
+	=dev-rust/tokio-tcp-0.1*:=
+	>=dev-rust/tokio-threadpool-0.1.14:= <dev-rust/tokio-threadpool-0.2.0
+	>=dev-rust/tokio-timer-0.2.8:= <dev-rust/tokio-timer-0.3.0
+	=dev-rust/tokio-udp-0.1*:=
+	=dev-rust/tracing-core-0.1*:=
+	>=dev-rust/tokio-uds-0.2.1:= <dev-rust/tokio-uds-0.3.0
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/trace_events/files/chromeos-version.sh b/dev-rust/trace_events/files/chromeos-version.sh
deleted file mode 100755
index 025a6cc..0000000
--- a/dev-rust/trace_events/files/chromeos-version.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/bin/sh
-#
-# Copyright 2019 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.
-
-# Assumes the first 'version =' line in the Cargo.toml is the version for the
-# crate.
-awk '/^version = / { print $3 }' "$1/trace_events/trace_events/Cargo.toml" | head -n1 | tr -d '"'
diff --git a/dev-rust/trace_events/trace_events-0.1.0-r8.ebuild b/dev-rust/trace_events/trace_events-0.1.0-r8.ebuild
deleted file mode 100644
index bc28aba..0000000
--- a/dev-rust/trace_events/trace_events-0.1.0-r8.ebuild
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5106cfd0d4eeae62b70cad2fe296f27f7e172e72"
-CROS_WORKON_TREE="e509681943a4a652c4575e6da2260621c04c8500"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=0
-CROS_WORKON_SUBTREE="trace_events"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Infrastructure for clients to emit trace events."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/trace_events/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-DEPEND="=dev-rust/libc-0.2*:=
-	=dev-rust/criterion-0.2*:=
-	>=dev-rust/serde_json-1:=
-"
-
-RDEPEND="!!<=dev-rust/trace_events-0.1.0-r2"
-
-pkg_setup() {
-	cros-rust_pkg_setup trace_events
-	cros-rust_pkg_setup json_tracer
-	cros-rust_pkg_setup trace_events_macros
-}
-
-src_compile() {
-	ecargo_build
-
-	use test && ecargo_test --workspace --no-run
-}
-
-src_test() {
-	cros-rust_src_test --workspace
-}
-
-src_install() {
-	pushd trace_events > /dev/null || die
-	cros-rust_publish trace_events "$(cros-rust_get_crate_version .)"
-	popd > /dev/null || die
-	pushd json_tracer > /dev/null || die
-	cros-rust_publish json_tracer "$(cros-rust_get_crate_version .)"
-	popd > /dev/null || die
-	pushd trace_events_macros > /dev/null || die
-	cros-rust_publish trace_events_macros "$(cros-rust_get_crate_version .)"
-}
-
-pkg_postinst() {
-	cros-rust_pkg_postinst trace_events
-	cros-rust_pkg_postinst json_tracer
-	cros-rust_pkg_postinst trace_events_macros
-}
-
-pkg_prerm() {
-	cros-rust_pkg_prerm trace_events
-	cros-rust_pkg_prerm json_tracer
-	cros-rust_pkg_prerm trace_events_macros
-}
diff --git a/dev-rust/trace_events/trace_events-9999.ebuild b/dev-rust/trace_events/trace_events-9999.ebuild
deleted file mode 100644
index 3583e29..0000000
--- a/dev-rust/trace_events/trace_events-9999.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=0
-CROS_WORKON_SUBTREE="trace_events"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Infrastructure for clients to emit trace events."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/trace_events/"
-
-LICENSE="BSD-Google"
-KEYWORDS="~*"
-IUSE="test"
-
-DEPEND="=dev-rust/libc-0.2*:=
-	=dev-rust/criterion-0.2*:=
-	>=dev-rust/serde_json-1:=
-"
-
-RDEPEND="!!<=dev-rust/trace_events-0.1.0-r2"
-
-pkg_setup() {
-	cros-rust_pkg_setup trace_events
-	cros-rust_pkg_setup json_tracer
-	cros-rust_pkg_setup trace_events_macros
-}
-
-src_compile() {
-	ecargo_build
-
-	use test && ecargo_test --workspace --no-run
-}
-
-src_test() {
-	cros-rust_src_test --workspace
-}
-
-src_install() {
-	pushd trace_events > /dev/null || die
-	cros-rust_publish trace_events "$(cros-rust_get_crate_version .)"
-	popd > /dev/null || die
-	pushd json_tracer > /dev/null || die
-	cros-rust_publish json_tracer "$(cros-rust_get_crate_version .)"
-	popd > /dev/null || die
-	pushd trace_events_macros > /dev/null || die
-	cros-rust_publish trace_events_macros "$(cros-rust_get_crate_version .)"
-}
-
-pkg_postinst() {
-	cros-rust_pkg_postinst trace_events
-	cros-rust_pkg_postinst json_tracer
-	cros-rust_pkg_postinst trace_events_macros
-}
-
-pkg_prerm() {
-	cros-rust_pkg_prerm trace_events
-	cros-rust_pkg_prerm json_tracer
-	cros-rust_pkg_prerm trace_events_macros
-}
diff --git a/dev-rust/tracing-core/tracing-core-0.1.0.ebuild b/dev-rust/tracing-core/tracing-core-0.1.0.ebuild
new file mode 100644
index 0000000..e5b72b0
--- /dev/null
+++ b/dev-rust/tracing-core/tracing-core-0.1.0.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_EMPTY_CRATE=1
+
+inherit cros-rust
+
+DESCRIPTION="Empty crate"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/unicode-width/Manifest b/dev-rust/unicode-width/Manifest
index cec6513..cbd13b2 100644
--- a/dev-rust/unicode-width/Manifest
+++ b/dev-rust/unicode-width/Manifest
@@ -1 +1 @@
-DIST unicode-width-0.1.5.crate 15761 SHA256 882386231c45df4700b275c7ff55b6f3698780a650026380e72dabe76fa46526 SHA512 bd5ac5f0433953d79408074239edc7c43ce23d56659d467805d81ab01c576a3cf77ccedb3bba41d48bc4ad46a8905ac8a1927b99312053ef6295fd940a6766d2 WHIRLPOOL 7052af244a0ea89e1e8536d4380f052728b7201e251443ad0b6cce2b6f993f02a2d462007d143aa7d88c3bc3838d5de968c448e2eaf6d13953fd802a47112f3b
+DIST unicode-width-0.1.8.crate 16732 BLAKE2B 5aa7b87eef1322e4151a3fcf981ade311b8fa030527d7561815950e58d3f15156163dfe34da6a708c37dccc3f7652bf7fc2cd899fe8bb0118b67c4113ff3a2d2 SHA512 0abba6da6981a2451e01d93bbd47652c46eb6fb07cc0214f33259fb29945bfd5ee2b302e883ddca8f68e921635f222701b7310e7da2a5e225f854980d1e474b0
diff --git a/dev-rust/unicode-width/unicode-width-0.1.5.ebuild b/dev-rust/unicode-width/unicode-width-0.1.5.ebuild
deleted file mode 100644
index c520870..0000000
--- a/dev-rust/unicode-width/unicode-width-0.1.5.ebuild
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="Determine displayed width of 'char' and 'str' types according to Unicode Standard Annex #11 rules"
-HOMEPAGE="https://github.com/unicode-rs/unicode-width"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
diff --git a/dev-rust/unicode-width/unicode-width-0.1.8.ebuild b/dev-rust/unicode-width/unicode-width-0.1.8.ebuild
new file mode 100644
index 0000000..db3524d
--- /dev/null
+++ b/dev-rust/unicode-width/unicode-width-0.1.8.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Determine displayed width of 'char' and 'str' types
+according to Unicode Standard Annex #11 rules."
+HOMEPAGE="https://github.com/unicode-rs/unicode-width"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/compiler_builtins-0.1*:=
+	=dev-rust/rustc-std-workspace-core-1*:=
+	=dev-rust/rustc-std-workspace-std-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/unicode-xid/Manifest b/dev-rust/unicode-xid/Manifest
index c6440f5..834ae5a 100644
--- a/dev-rust/unicode-xid/Manifest
+++ b/dev-rust/unicode-xid/Manifest
@@ -1,2 +1,3 @@
 DIST unicode-xid-0.1.0.crate 16000 BLAKE2B 159004a7bbb7476b39e982b51dbf615717095fd5946536e757653aa941bbf1b774f331db744ecc33bb2ead4b0a6d254fde86cfd6cd8b83ab9983fa89928eddbe SHA512 cc5343e2166938322cfd7c73f1f918f2a9c46846ac0ef55933d1e44cdfaf6f7da2b7ff18b68e356c47b6d8ba5565eda0db42c347dcbde830683f341ac2b1849d
 DIST unicode-xid-0.2.0.crate 14994 BLAKE2B e66b4255798f0ef1c81fb852613fee396a042d780d2158a171dbb5e7dedad0b3d2522f5401ae5d215f89ab8be4f5c371b046e4845693a65554c2a6eedc5d1e28 SHA512 590f727d8d8354023062ae5fe7ac5bed1bcf79d86b883effd7f33b3ea3b1c8922998a63d621ca6962a969e890fa6edd009871f21cd57b1969264f41ba3f78359
+DIST unicode-xid-0.2.2.crate 14955 BLAKE2B 6c6da49ac08dbd8b3248272224d6bff96b9cd1f36029b1937a58a0b929c3a48326053305ed49e73edd70f572f5abbc4817cedc899c69e3457805ad056669f6af SHA512 92ffd0dd34e3ca235ecf110b38c447d3ec1faa23d76c112457f28d432f92fa6b5f428bc5e1bfd278f361f55426dd96e19ecb0d3eff6cf250892f069c52bd89a8
diff --git a/dev-rust/unicode-xid/unicode-xid-0.2.2.ebuild b/dev-rust/unicode-xid/unicode-xid-0.2.2.ebuild
new file mode 100644
index 0000000..bbca9ed
--- /dev/null
+++ b/dev-rust/unicode-xid/unicode-xid-0.2.2.ebuild
@@ -0,0 +1,21 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Determine whether characters have the XID_Start
+or XID_Continue properties according to
+Unicode Standard Annex #31."
+HOMEPAGE="https://github.com/unicode-rs/unicode-xid"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/value-bag/value-bag-1.0.0.ebuild b/dev-rust/value-bag/value-bag-1.0.0.ebuild
new file mode 100644
index 0000000..e5b72b0
--- /dev/null
+++ b/dev-rust/value-bag/value-bag-1.0.0.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_EMPTY_CRATE=1
+
+inherit cros-rust
+
+DESCRIPTION="Empty crate"
+HOMEPAGE=""
+
+LICENSE="BSD-Google"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/vcpkg/Manifest b/dev-rust/vcpkg/Manifest
index 09adde4..5b289da 100644
--- a/dev-rust/vcpkg/Manifest
+++ b/dev-rust/vcpkg/Manifest
@@ -1 +1 @@
-DIST vcpkg-0.2.6.crate 9866 BLAKE2B c9c6e1a52e54d6d4103e0b833d77cdd4b2463123a5a12d7c15922bf782c7d56f0055ed5dc9d2bd236a14fb0ed6612c7b691d8a31a98e34b48f84228e6c10a567 SHA512 55678e3cbb7b1bf80e2589df3fc580bb595576a5f24e515819906082ed081e47a546d6825bb92fae56ed0157407244e1b77af1677f0380f2fdd15cc54853675e
+DIST vcpkg-0.2.11.crate 12600 BLAKE2B 1c44c8df531a75f686c0497e70a72aa0c1b554c02ed256e6b08407b17066ed949f03bda42645d56e1227b50dc4c0e3865f10856605c2eadab3b74f55f005789b SHA512 d67bc244c81827165bf976808f79fd02f9149a19006898e60ff8ef11df2d72657c56bc9fc14c8f91b091075ceb23c3f96a3df81be345bb01881679eb47a0e6e9
diff --git a/dev-rust/vcpkg/OWNERS b/dev-rust/vcpkg/OWNERS
new file mode 100644
index 0000000..f570a32
--- /dev/null
+++ b/dev-rust/vcpkg/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/sirenia/OWNERS
diff --git a/dev-rust/vcpkg/vcpkg-0.2.11-r1.ebuild b/dev-rust/vcpkg/vcpkg-0.2.11-r1.ebuild
new file mode 120000
index 0000000..585b9f9
--- /dev/null
+++ b/dev-rust/vcpkg/vcpkg-0.2.11-r1.ebuild
@@ -0,0 +1 @@
+vcpkg-0.2.11.ebuild
\ No newline at end of file
diff --git a/dev-rust/vcpkg/vcpkg-0.2.11.ebuild b/dev-rust/vcpkg/vcpkg-0.2.11.ebuild
new file mode 100644
index 0000000..9b7813a
--- /dev/null
+++ b/dev-rust/vcpkg/vcpkg-0.2.11.ebuild
@@ -0,0 +1,18 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="This is a helper for finding native MSVC ABI libraries in a Vcpkg installation from cargo build scripts."
+HOMEPAGE="https://github.com/mcgoo/vcpkg-rs"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+RDEPEND="!=dev-rust/vcpkg-0.2*"
diff --git a/dev-rust/vcpkg/vcpkg-0.2.6.ebuild b/dev-rust/vcpkg/vcpkg-0.2.6.ebuild
deleted file mode 100644
index 0662d2c..0000000
--- a/dev-rust/vcpkg/vcpkg-0.2.6.ebuild
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-rust
-
-DESCRIPTION="This is a helper for finding native MSVC ABI libraries in a Vcpkg installation from cargo build scripts."
-HOMEPAGE="https://github.com/mcgoo/vcpkg-rs"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/lazy_static-1*:=
-	>=dev-rust/tempdir-0.3.7:=
-"
diff --git a/dev-rust/vec_map/Manifest b/dev-rust/vec_map/Manifest
index b6bbcd8..7cd65d0 100644
--- a/dev-rust/vec_map/Manifest
+++ b/dev-rust/vec_map/Manifest
@@ -1 +1 @@
-DIST vec_map-0.8.1.crate 14959 BLAKE2B f5c179ccb4349d543747d5e3bb3edfca4bc9f3f64ba3c2d40fb1d9cba98433b7a0641387aafda6347c9b3603592c64bd820b217b46fbfcd37f802f298e5793ab SHA512 026cf10dc7ba98ae51dd312fc847cbaea41c25f0da5db6e0e22c2ecf75584bbf876d7bd96035fbbcf6696d702d5a3f25977e02a2d77cf519aa21e3ed05710e40
+DIST vec_map-0.8.2.crate 14466 BLAKE2B 8f109fbff19604b82ea2aa61c952e2ce9b5597ccc8e1ef4e847648e2de08dece8c4debe92889edeccb8d393645fd0b62436b49d236ded7ad181c4a51239a9539 SHA512 4f1ef59bc2c437e79f1f84fe021bce5aa8ccd581f500f3d5776913d5f17d45b03ccee64f5bd03d47656318cfc9344a1f4311079d471fa409a8e4e94c143973f9
diff --git a/dev-rust/vec_map/vec_map-0.8.1-r1.ebuild b/dev-rust/vec_map/vec_map-0.8.1-r1.ebuild
deleted file mode 120000
index 3b618f5..0000000
--- a/dev-rust/vec_map/vec_map-0.8.1-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-vec_map-0.8.1.ebuild
\ No newline at end of file
diff --git a/dev-rust/vec_map/vec_map-0.8.1.ebuild b/dev-rust/vec_map/vec_map-0.8.1.ebuild
deleted file mode 100644
index 7d6bd256..0000000
--- a/dev-rust/vec_map/vec_map-0.8.1.ebuild
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="A simple map based on a vector for small integer keys."
-HOMEPAGE="https://github.com/contain-rs/vec-map"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="|| ( MIT Apache-2.0 )"
-SLOT="${PV}/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	>=dev-rust/serde-1.0.0:= <dev-rust/serde-2.0.0
-"
diff --git a/dev-rust/vec_map/vec_map-0.8.2.ebuild b/dev-rust/vec_map/vec_map-0.8.2.ebuild
new file mode 100644
index 0000000..0889873
--- /dev/null
+++ b/dev-rust/vec_map/vec_map-0.8.2.ebuild
@@ -0,0 +1,23 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A simple map based on a vector for small integer keys"
+HOMEPAGE="https://github.com/contain-rs/vec-map"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/serde-1*:=
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/vm-memory/Manifest b/dev-rust/vm-memory/Manifest
new file mode 100644
index 0000000..083f340e
--- /dev/null
+++ b/dev-rust/vm-memory/Manifest
@@ -0,0 +1 @@
+DIST vm-memory-0.2.0.crate 52856 BLAKE2B b3cb4af5d6523ce4f9a2cc2a7694120e92b3bef208f7aab74812af507536978329163ef17f745a28f4979b1a00a6adcd42adf30fce89fe58a0624de7c72c0d1a SHA512 88ab8932653b65236dd71d57c0db4b23e44653074feeb7c54d112e5281b98333a0fb7c6f2c498b83fd960a3d6ec4704250086f069be644c8a8be661ba9d84fdc
diff --git a/dev-rust/vm-memory/OWNERS b/dev-rust/vm-memory/OWNERS
new file mode 100644
index 0000000..73e71f8
--- /dev/null
+++ b/dev-rust/vm-memory/OWNERS
@@ -0,0 +1 @@
+include /dev-rust/vmm_vhost/OWNERS
diff --git a/dev-rust/vm-memory/vm-memory-0.2.0.ebuild b/dev-rust/vm-memory/vm-memory-0.2.0.ebuild
new file mode 100644
index 0000000..13902e3
--- /dev/null
+++ b/dev-rust/vm-memory/vm-memory-0.2.0.ebuild
@@ -0,0 +1,21 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Safe abstractions for accessing the VM physical memory"
+HOMEPAGE="https://github.com/rust-vmm/vm-memory"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="Apache-2.0 BSD-Google"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/libc-0.2.39:=
+	>=dev-rust/arc-swap-0.4.5:=
+"
diff --git a/dev-rust/vmm_vhost/OWNERS b/dev-rust/vmm_vhost/OWNERS
new file mode 100644
index 0000000..0edda31
--- /dev/null
+++ b/dev-rust/vmm_vhost/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/crosvm:/OWNERS
diff --git a/dev-rust/vmm_vhost/files/chromeos-version.sh b/dev-rust/vmm_vhost/files/chromeos-version.sh
new file mode 100755
index 0000000..4c92d30
--- /dev/null
+++ b/dev-rust/vmm_vhost/files/chromeos-version.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# Copyright 2021 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.
+
+# Assumes the first 'version =' line in the Cargo.toml is the version for the
+# crate.
+awk '/^version = / { print $3 }' "$1/Cargo.toml" | head -n1 | tr -d '"'
diff --git a/dev-rust/vmm_vhost/vmm_vhost-0.1.0-r2.ebuild b/dev-rust/vmm_vhost/vmm_vhost-0.1.0-r2.ebuild
new file mode 100644
index 0000000..a16002e
--- /dev/null
+++ b/dev-rust/vmm_vhost/vmm_vhost-0.1.0-r2.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="eaca5d36a2701c99b354ab5bc0954a78dfc9ff4f"
+CROS_WORKON_TREE="57e82370048b45b2bda2712eea78487d9d65a61c"
+CROS_WORKON_LOCALNAME="rust-vmm/vhost"
+CROS_WORKON_PROJECT="chromiumos/third_party/rust-vmm/vhost"
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+inherit cros-workon cros-rust
+
+# Clear CROS_RUST_SUBDIR because the entire repository is a Rust project.
+CROS_RUST_SUBDIR=""
+
+DESCRIPTION="A crate to support vhost backend drivers for virtio devices."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/rust-vmm/vhost/"
+
+LICENSE="Apache-2.0 BSD"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/bitflags-1.0.1:=
+	>=dev-rust/libc-0.2.39:=
+	dev-rust/sys_util:=
+	dev-rust/tempfile:=
+	=dev-rust/vm-memory-0.2*:=
+"
+
+src_compile() {
+	# Make sure the build works with default features.
+	ecargo_build
+	# Also check that the build works with all features.
+	ecargo_build --all-features
+	use test && cros-rust_src_test --no-run --all-features
+}
+
+src_test() {
+	cros-rust_src_test --all-features
+}
diff --git a/dev-rust/vmm_vhost/vmm_vhost-9999.ebuild b/dev-rust/vmm_vhost/vmm_vhost-9999.ebuild
new file mode 100644
index 0000000..b715de1
--- /dev/null
+++ b/dev-rust/vmm_vhost/vmm_vhost-9999.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_LOCALNAME="rust-vmm/vhost"
+CROS_WORKON_PROJECT="chromiumos/third_party/rust-vmm/vhost"
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+inherit cros-workon cros-rust
+
+# Clear CROS_RUST_SUBDIR because the entire repository is a Rust project.
+CROS_RUST_SUBDIR=""
+
+DESCRIPTION="A crate to support vhost backend drivers for virtio devices."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/rust-vmm/vhost/"
+
+LICENSE="Apache-2.0 BSD"
+KEYWORDS="~*"
+
+DEPEND="
+	>=dev-rust/bitflags-1.0.1:=
+	>=dev-rust/libc-0.2.39:=
+	dev-rust/sys_util:=
+	dev-rust/tempfile:=
+	=dev-rust/vm-memory-0.2*:=
+"
+
+src_compile() {
+	# Make sure the build works with default features.
+	ecargo_build
+	# Also check that the build works with all features.
+	ecargo_build --all-features
+	use test && cros-rust_src_test --no-run --all-features
+}
+
+src_test() {
+	cros-rust_src_test --all-features
+}
diff --git a/dev-rust/which/Manifest b/dev-rust/which/Manifest
index 55c6974..f006f96 100644
--- a/dev-rust/which/Manifest
+++ b/dev-rust/which/Manifest
@@ -1 +1,2 @@
 DIST which-3.1.1.crate 8071 BLAKE2B b53adc5136f26fc1be6ae18987d0129527cfd6eb2fb1f0876600ff55ac2f935f608337ff89478f3aed2e8c97a08c474109382a56eabe67dc788b744d90c73ad9 SHA512 3677d709eced54a332e68d9c9385708205838301a576da0c4d88049403a81676c3939a97cd1bec4ab261c7e8fb6211956b47afe5d1fee84d9c4ecf4eb30184f5
+DIST which-4.0.2.crate 7531 BLAKE2B 2207ca8024d58fe2e6ea88dd3b0f8c59984b55d25d23a9d84ca03732502149d78daa994f3b6ae25226c3161df7a7760640956ebf4c0ec8560b20889ce4346417 SHA512 6de4120637d44995f09d7596e9443c5ec566df2b33f54986897ac4dc09cfd9595e7a0c3a8092cf6b8dcb9aa6daf33a1b5fcfcc95bcb5010eb8d6c0365e2005e3
diff --git a/dev-rust/which/which-4.0.2.ebuild b/dev-rust/which/which-4.0.2.ebuild
new file mode 100644
index 0000000..c2ecce8
--- /dev/null
+++ b/dev-rust/which/which-4.0.2.ebuild
@@ -0,0 +1,22 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Locate installed executable in cross platforms."
+HOMEPAGE="https://github.com/harryfei/which-rs.git"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3
+	=dev-rust/thiserror-1*:=
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/winapi/Manifest b/dev-rust/winapi/Manifest
index 86491ce..9d458ff 100644
--- a/dev-rust/winapi/Manifest
+++ b/dev-rust/winapi/Manifest
@@ -1 +1,2 @@
 DIST winapi-0.3.6.crate 1029391 BLAKE2B 9a52085c3cb74d84bc66cee575da0105eeca69f6abd3c8c601a4de013bafea795f044748be10ec9ab419a9ec82a304a0b65ba4d74f6cb39baff91228f83009f1 SHA512 991eb3d6ba08d59e7f7ec81ebf469cecc56b3723b636392972d2fdc1d6f13d88f8a244ad5cbb20f6058d12b44e060ed663c12aa3fbcd1235ab511fafa105cd3c
+DIST winapi-0.3.9.crate 1200382 BLAKE2B cb5799749ccd935ea2d7068d953cecf19f543d9db7dc16ad4584bb7005373ada34937a3ced7225544d8bc765da599911c7a3190efefb3a25b7c1bb7123b4f673 SHA512 ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97
diff --git a/dev-rust/winapi/winapi-0.3.9.ebuild b/dev-rust/winapi/winapi-0.3.9.ebuild
new file mode 100644
index 0000000..e0ee1c5
--- /dev/null
+++ b/dev-rust/winapi/winapi-0.3.9.ebuild
@@ -0,0 +1,20 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+CROS_RUST_REMOVE_TARGET_CFG=1
+
+inherit cros-rust
+
+DESCRIPTION="Raw FFI bindings for all of Windows API."
+HOMEPAGE="https://crates.io/crates/winapi"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+
+# This file was automatically generated by cargo2ebuild.py
diff --git a/dev-rust/xmlparser/Manifest b/dev-rust/xmlparser/Manifest
new file mode 100644
index 0000000..8ef94ea
--- /dev/null
+++ b/dev-rust/xmlparser/Manifest
@@ -0,0 +1 @@
+DIST xmlparser-0.13.3.crate 25732 BLAKE2B 83c3a95c3d39e1f08d2de08082aad2812017c21bc8691c1e09c48d6b0791994abc192c8e56e0729dfa89bbd37f4de22c8f8480ab940550057b66f81ee6b1f38a SHA512 aefe23681c42b82274d9deed6fb65af12cf815ee150b385220c1184de0d4b588fa1bb02eb54e52cf8336c19bdae771711efc77e016781b19ce97711908fa91f5
diff --git a/dev-rust/xmlparser/OWNERS b/dev-rust/xmlparser/OWNERS
new file mode 100644
index 0000000..12f21f8
--- /dev/null
+++ b/dev-rust/xmlparser/OWNERS
@@ -0,0 +1 @@
+include /media-gfx/deqp-runner/OWNERS
diff --git a/dev-rust/xmlparser/xmlparser-0.13.3.ebuild b/dev-rust/xmlparser/xmlparser-0.13.3.ebuild
new file mode 100644
index 0000000..43b6f27
--- /dev/null
+++ b/dev-rust/xmlparser/xmlparser-0.13.3.ebuild
@@ -0,0 +1,14 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-rust
+
+DESCRIPTION="Pull-based, zero-allocation XML parser."
+HOMEPAGE="https://github.com/RazrFalcon/xmlparser"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
diff --git a/dev-rust/zeroize/Manifest b/dev-rust/zeroize/Manifest
new file mode 100644
index 0000000..a5f8c62
--- /dev/null
+++ b/dev-rust/zeroize/Manifest
@@ -0,0 +1 @@
+DIST zeroize-1.2.0.crate 15450 BLAKE2B 1f3c2688cf84d8bc22f777cc06673c29c9306b2c246bec67404729dac01570dd550c4ebe1f9cbd04c3d6a2711bf7106c45a34d01bb0ab7b73d3a15a65bf66eb7 SHA512 9bc0242824908909669e473029990a582efb884ce8f37d153d3a92083f64afe7b3bb26821dff8f39af74ea7935024d9414d458cf61c2e6291ca3611e896ae390
diff --git a/dev-rust/zeroize/OWNERS b/dev-rust/zeroize/OWNERS
new file mode 100644
index 0000000..f570a32
--- /dev/null
+++ b/dev-rust/zeroize/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/sirenia/OWNERS
diff --git a/dev-rust/zeroize/zeroize-1.2.0.ebuild b/dev-rust/zeroize/zeroize-1.2.0.ebuild
new file mode 100644
index 0000000..e1df53f
--- /dev/null
+++ b/dev-rust/zeroize/zeroize-1.2.0.ebuild
@@ -0,0 +1,21 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Securely clear secrets from memory"
+HOMEPAGE="https://github.com/iqlusioninc/crates/"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/zeroize_derive-1*:=
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-rust/zeroize_derive/Manifest b/dev-rust/zeroize_derive/Manifest
new file mode 100644
index 0000000..1012366
--- /dev/null
+++ b/dev-rust/zeroize_derive/Manifest
@@ -0,0 +1 @@
+DIST zeroize_derive-1.0.1.crate 8047 BLAKE2B c43d99d7f80d104ec43708742d2c13080a3b96d0b8ffac099f86c82bce33d263313a42ebec42ed5dbeaeac397d1717e6cf089980dd7934b1efc7228b737a5f21 SHA512 cbb7fe8d9ecb38c0f6fd11e491afa289cc9d8719f2460f4569816d7d55ec17fc88aa9a167aafb83809e2122481e016039b055e3bc4edfdeaf009fc0d65212dc7
diff --git a/dev-rust/zeroize_derive/OWNERS b/dev-rust/zeroize_derive/OWNERS
new file mode 100644
index 0000000..f570a32
--- /dev/null
+++ b/dev-rust/zeroize_derive/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/sirenia/OWNERS
diff --git a/dev-rust/zeroize_derive/zeroize_derive-1.0.1.ebuild b/dev-rust/zeroize_derive/zeroize_derive-1.0.1.ebuild
new file mode 100644
index 0000000..85cad0a
--- /dev/null
+++ b/dev-rust/zeroize_derive/zeroize_derive-1.0.1.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="Custom derive support for zeroize"
+HOMEPAGE="https://github.com/iqlusioninc/crates/"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+	=dev-rust/synstructure-0.12*:=
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-util/android-tools/Manifest b/dev-util/android-tools/Manifest
index 37d9df6..d3a0f9b 100644
--- a/dev-util/android-tools/Manifest
+++ b/dev-util/android-tools/Manifest
@@ -6,3 +6,4 @@
 DIST android-tools-9.0.0_r3-selinux.tar.xz 3202332 BLAKE2B 60a884eb1bd34fe5796f8fb33e5aefd7f9ffc85ac91784e0a8f0ca663010cf2222c80f4c419019b5817f9cbd8037ab78914e42417193e1b802a2682bb82c0097 SHA512 f0a77dc0ac91d434573370110c70529caabfd5f036c02ae5f1a4b2097e48324198d03ecdc92a622e1590012dd3f20f103384fed468f5e27aebcaf9315bb87078
 DIST android-tools-9.0.0_r3.ninja.xz 4244 BLAKE2B 14cea7523f22a7f4e02e93c32e4d4684e057abbe8e2b537b7e942cc27c13ea2aa13bcdb5c3ccafc261b8d7fc4b4cd4b9394e0970734b36111ccffbacecc5cfb9 SHA512 46956a608d6a9b93f1a035d6b0e153c476b55d4f8a2db4915b18ac9904a6d07befcbceb8e2e50054e7dbe2970be8539243134cd9722d2f2ec8a36a3153e03c56
 DIST boringssl-45210dd4e21ace9d28cb76b3f83303fcdd2efcce.tar.gz 13581532 BLAKE2B ca2f6757807adc265314a7444605c6199a19847fb426384bafa201bf63f4e3c7c567fb8094b740b8a00caf0d106bb1efea2893b00d45c9772740a81dc0a186f3 SHA512 c6695d078ee7b3694898dfdc0ee3382d01f9bb592ea46eb64026c73565735fd7251bbb0fd3e8c8552394bcdad5717de7ee5106cf1ed91aacec05d779ad693f6a
+DIST android-tools-9.0.0_p3-fix-build-with-glibc-2.30.patch 1262 BLAKE2B fa2d3cd31e82dd3b17bb840096c6158f1b117cb12b8b3c6f6c604efd85f880346c04e8e98b17bebd68d56e06cdc126677ad96dbd6214175544a9b93020292956 SHA512 21c2501fa24f59489e656ac5122c906476ad573e63f6dcc88605dafde9d4b8927ea904708caaababd12155153d969d2480aff591d98057859e8b885e94aa126a
diff --git a/dev-util/android-tools/android-tools-9.0.0_p3-r4.ebuild b/dev-util/android-tools/android-tools-9.0.0_p3-r4.ebuild
deleted file mode 100644
index cb516e8..0000000
--- a/dev-util/android-tools/android-tools-9.0.0_p3-r4.ebuild
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-PYTHON_COMPAT=( python2_7 python3_{4,5,6,7} )
-CMAKE_MAKEFILE_GENERATOR="ninja"
-
-inherit flag-o-matic bash-completion-r1 ninja-utils toolchain-funcs cmake-utils python-r1 python-utils-r1
-
-MY_PV="${PV/_p/_r}"
-MY_P=${PN}-${MY_PV}
-
-DESCRIPTION="Android platform tools (adb, fastboot, and mkbootimg)"
-HOMEPAGE="https://android.googlesource.com/platform/system/core.git/"
-# See helper scripts in files/ for creating these tarballs and getting this hash.
-BORINGSSL_SHA1="45210dd4e21ace9d28cb76b3f83303fcdd2efcce"
-# The ninja file was created by running the ruby script from archlinux by hand and fixing the build vars.
-# No point in depending on something large/uncommon like ruby just to generate a ninja file.
-SRC_URI="https://git.archlinux.org/svntogit/community.git/snapshot/community-0ffb7b41d599741d100a6a00a4bb20e162cd3f90.tar.xz -> ${MY_P}-arch.tar.xz
-	https://github.com/android/platform_system_core/archive/android-${MY_PV}.tar.gz -> ${MY_P}-core.tar.gz
-	https://github.com/google/boringssl/archive/${BORINGSSL_SHA1}.tar.gz -> boringssl-${BORINGSSL_SHA1}.tar.gz
-	mirror://gentoo/${MY_P}-e2fsprogs.tar.xz https://dev.gentoo.org/~zmedico/dist/${MY_P}-e2fsprogs.tar.xz
-	mirror://gentoo/${MY_P}-extras.tar.xz https://dev.gentoo.org/~zmedico/dist/${MY_P}-extras.tar.xz
-	mirror://gentoo/${MY_P}-selinux.tar.xz https://dev.gentoo.org/~zmedico/dist/${MY_P}-selinux.tar.xz
-	mirror://gentoo/${MY_P}-f2fs-tools.tar.xz https://dev.gentoo.org/~zmedico/dist/${MY_P}-f2fs-tools.tar.xz
-	mirror://gentoo/${MY_P}.ninja.xz https://dev.gentoo.org/~zmedico/dist/${MY_P}.ninja.xz"
-
-# The entire source code is Apache-2.0, except for fastboot which is BSD-2.
-LICENSE="Apache-2.0 BSD-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="python"
-
-DEPEND="sys-libs/zlib:=
-	dev-libs/libpcre2:=
-	dev-libs/openssl:=
-	virtual/libusb:1="
-RDEPEND="${DEPEND}
-	python? ( ${PYTHON_DEPS} )"
-DEPEND+="
-	dev-lang/go"
-
-S=${WORKDIR}
-CMAKE_USE_DIR="${S}/boringssl"
-
-unpack_into() {
-	local archive="$1"
-	local dir="$2"
-
-	mkdir -p "${dir}"
-	pushd "${dir}" >/dev/null || die
-	unpack "${archive}"
-	if [[ ${dir} != ./* ]] ; then
-		mv */* ./ || die
-	fi
-	popd >/dev/null
-}
-
-src_unpack() {
-	unpack_into "${MY_P}-arch.tar.xz" arch
-	unpack_into "${MY_P}-core.tar.gz" core
-	unpack_into "${MY_P}-e2fsprogs.tar.xz" ./e2fsprogs
-	unpack_into "${MY_P}-extras.tar.xz" extras
-	unpack_into "${MY_P}-f2fs-tools.tar.xz" ./f2fs-tools
-	unpack_into "${MY_P}-selinux.tar.xz" ./selinux
-	unpack_into boringssl-${BORINGSSL_SHA1}.tar.gz boringssl
-
-	unpack "${MY_P}.ninja.xz"
-	mv "${MY_P}.ninja" "build.ninja" || die
-
-	# Avoid depending on gtest just for its prod headers when boringssl bundles it.
-	ln -s ../../boringssl/third_party/googletest/include/gtest core/include/ || die
-}
-
-src_prepare() {
-	sed -e 's:elseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386"):\0\n  set(ARCH "x86")\nelseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i586"):' \
-		-i "${S}"/boringssl/CMakeLists.txt || die #668792
-
-	cd "${S}"/core || die
-	eapply "${WORKDIR}"/arch/trunk/fix_build_core.patch
-	eapply "${FILESDIR}"/android-tools-8.1.0_p1-build.patch
-	eapply "${FILESDIR}"/android-tools-9.0.0-vsock.patch
-	eapply "${FILESDIR}"/android-tools-9.0.0-homedir.patch
-
-	cd "${S}"/selinux || die
-	eapply "${WORKDIR}"/arch/trunk/fix_build_selinux.patch
-
-	cd "${S}"/e2fsprogs || die
-	eapply "${WORKDIR}"/arch/trunk/fix_build_e2fsprogs.patch
-
-	cd "${S}"/extras
-	sed -e 's|^#include <sys/cdefs.h>$|/*\0*/|' \
-		-e 's|^__BEGIN_DECLS$|#ifdef __cplusplus\nextern "C" {\n#endif|' \
-		-e 's|^__END_DECLS$|#ifdef __cplusplus\n}\n#endif|' \
-		-i ext4_utils/include/ext4_utils/ext4_crypt{,_init_extensions}.h || die #580686
-
-	cd "${S}"/boringssl || die
-	eapply "${FILESDIR}"/android-tools-9.0.0-armasm.patch
-	# Backport clang fallthru patches to fix newer clang builds.
-	# https://boringssl-review.googlesource.com/c/boringssl/+/37244
-	# https://boringssl-review.googlesource.com/c/boringssl/+/37247
-	eapply "${FILESDIR}"/android-tools-clang-fallthru.patch
-
-	cd "${S}" || die
-	default
-
-	sed -E \
-		-e "s|^(CC =).*|\\1 $(tc-getCC)|g" \
-		-e "s|^(CXX =).*|\\1 $(tc-getCXX)|g" \
-		-e "s|^(CFLAGS =).*|\\1 ${CFLAGS}|g" \
-		-e "s|^(CPPFLAGS =).*|\\1 ${CPPFLAGS}|g" \
-		-e "s|^(CXXFLAGS =).*|\\1 ${CXXFLAGS}|g" \
-		-e "s|^(LDFLAGS =).*|\\1 ${LDFLAGS}|g" \
-		-e "s|^(PKGVER =).*|\\1 ${MY_PV}|g" \
-		-i build.ninja || die
-
-	# The pregenerated ninja file expects the build/ dir.
-	BUILD_DIR="${CMAKE_USE_DIR}/build"
-	cmake-utils_src_prepare
-}
-
-src_configure() {
-	append-lfs-flags
-
-	local mycmakeargs=(
-		-DCMAKE_SYSTEM_PROCESSOR="${CHOST%%-*}"
-	)
-
-	cmake-utils_src_configure
-}
-
-src_compile() {
-	# We only need a few libs from boringssl.
-	cmake-utils_src_compile libcrypto.a libssl.a
-
-	eninja
-}
-
-src_install() {
-	dobin adb e2fsdroid ext2simg fastboot mke2fs.android
-	dodoc core/adb/*.{txt,TXT} core/fastboot/README.md
-	use python && python_foreach_impl python_doexe core/mkbootimg/mkbootimg
-	newbashcomp arch/trunk/bash_completion.fastboot fastboot
-}
diff --git a/dev-util/android-tools/android-tools-9.0.0_p3-r5.ebuild b/dev-util/android-tools/android-tools-9.0.0_p3-r5.ebuild
new file mode 100644
index 0000000..4396827
--- /dev/null
+++ b/dev-util/android-tools/android-tools-9.0.0_p3-r5.ebuild
@@ -0,0 +1,148 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+PYTHON_COMPAT=( python2_7 python3_{4,5,6,7} )
+CMAKE_MAKEFILE_GENERATOR="ninja"
+
+inherit flag-o-matic bash-completion-r1 ninja-utils toolchain-funcs cmake-utils python-r1 python-utils-r1
+
+MY_PV="${PV/_p/_r}"
+MY_P=${PN}-${MY_PV}
+
+DESCRIPTION="Android platform tools (adb, fastboot, and mkbootimg)"
+HOMEPAGE="https://android.googlesource.com/platform/system/core.git/"
+# See helper scripts in files/ for creating these tarballs and getting this hash.
+BORINGSSL_SHA1="45210dd4e21ace9d28cb76b3f83303fcdd2efcce"
+GLIBC_GETTID_PATCH="${P}-fix-build-with-glibc-2.30.patch"
+# The ninja file was created by running the ruby script from archlinux by hand and fixing the build vars.
+# No point in depending on something large/uncommon like ruby just to generate a ninja file.
+SRC_URI="https://git.archlinux.org/svntogit/community.git/snapshot/community-0ffb7b41d599741d100a6a00a4bb20e162cd3f90.tar.xz -> ${MY_P}-arch.tar.xz
+	https://github.com/android/platform_system_core/archive/android-${MY_PV}.tar.gz -> ${MY_P}-core.tar.gz
+	https://github.com/google/boringssl/archive/${BORINGSSL_SHA1}.tar.gz -> boringssl-${BORINGSSL_SHA1}.tar.gz
+	mirror://gentoo/${MY_P}-e2fsprogs.tar.xz https://dev.gentoo.org/~zmedico/dist/${MY_P}-e2fsprogs.tar.xz
+	mirror://gentoo/${MY_P}-extras.tar.xz https://dev.gentoo.org/~zmedico/dist/${MY_P}-extras.tar.xz
+	mirror://gentoo/${MY_P}-selinux.tar.xz https://dev.gentoo.org/~zmedico/dist/${MY_P}-selinux.tar.xz
+	mirror://gentoo/${MY_P}-f2fs-tools.tar.xz https://dev.gentoo.org/~zmedico/dist/${MY_P}-f2fs-tools.tar.xz
+	mirror://gentoo/${MY_P}.ninja.xz https://dev.gentoo.org/~zmedico/dist/${MY_P}.ninja.xz
+	https://raw.githubusercontent.com/nmeum/android-tools/8a30dba5768304176fd78aaa131242f6b880f828/patches/core/0022-Use-glibc-s-gettid-when-using-glibc-2.30.patch -> ${GLIBC_GETTID_PATCH}"
+
+# The entire source code is Apache-2.0, except for fastboot which is BSD-2.
+LICENSE="Apache-2.0 BSD-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="python"
+
+DEPEND="sys-libs/zlib:=
+	dev-libs/libpcre2:=
+	dev-libs/openssl:=
+	virtual/libusb:1="
+RDEPEND="${DEPEND}
+	python? ( ${PYTHON_DEPS} )"
+DEPEND+="
+	dev-lang/go"
+
+S=${WORKDIR}
+CMAKE_USE_DIR="${S}/boringssl"
+
+unpack_into() {
+	local archive="$1"
+	local dir="$2"
+
+	mkdir -p "${dir}"
+	pushd "${dir}" >/dev/null || die
+	unpack "${archive}"
+	if [[ ${dir} != ./* ]] ; then
+		mv */* ./ || die
+	fi
+	popd >/dev/null
+}
+
+src_unpack() {
+	unpack_into "${MY_P}-arch.tar.xz" arch
+	unpack_into "${MY_P}-core.tar.gz" core
+	unpack_into "${MY_P}-e2fsprogs.tar.xz" ./e2fsprogs
+	unpack_into "${MY_P}-extras.tar.xz" extras
+	unpack_into "${MY_P}-f2fs-tools.tar.xz" ./f2fs-tools
+	unpack_into "${MY_P}-selinux.tar.xz" ./selinux
+	unpack_into boringssl-${BORINGSSL_SHA1}.tar.gz boringssl
+
+	unpack "${MY_P}.ninja.xz"
+	mv "${MY_P}.ninja" "build.ninja" || die
+
+	# Avoid depending on gtest just for its prod headers when boringssl bundles it.
+	ln -s ../../boringssl/third_party/googletest/include/gtest core/include/ || die
+}
+
+src_prepare() {
+	sed -e 's:elseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i386"):\0\n  set(ARCH "x86")\nelseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "i586"):' \
+		-i "${S}"/boringssl/CMakeLists.txt || die #668792
+
+	cd "${S}"/core || die
+	eapply "${WORKDIR}"/arch/trunk/fix_build_core.patch
+	eapply "${FILESDIR}"/android-tools-8.1.0_p1-build.patch
+	eapply "${FILESDIR}"/android-tools-9.0.0-vsock.patch
+	eapply "${FILESDIR}"/android-tools-9.0.0-homedir.patch
+	eapply "${DISTDIR}/${GLIBC_GETTID_PATCH}"
+
+	cd "${S}"/selinux || die
+	eapply "${WORKDIR}"/arch/trunk/fix_build_selinux.patch
+
+	cd "${S}"/e2fsprogs || die
+	eapply "${WORKDIR}"/arch/trunk/fix_build_e2fsprogs.patch
+
+	cd "${S}"/extras
+	sed -e 's|^#include <sys/cdefs.h>$|/*\0*/|' \
+		-e 's|^__BEGIN_DECLS$|#ifdef __cplusplus\nextern "C" {\n#endif|' \
+		-e 's|^__END_DECLS$|#ifdef __cplusplus\n}\n#endif|' \
+		-i ext4_utils/include/ext4_utils/ext4_crypt{,_init_extensions}.h || die #580686
+
+	cd "${S}"/boringssl || die
+	eapply "${FILESDIR}"/android-tools-9.0.0-armasm.patch
+	# Backport clang fallthru patches to fix newer clang builds.
+	# https://boringssl-review.googlesource.com/c/boringssl/+/37244
+	# https://boringssl-review.googlesource.com/c/boringssl/+/37247
+	eapply "${FILESDIR}"/android-tools-clang-fallthru.patch
+
+	cd "${S}" || die
+	default
+
+	sed -E \
+		-e "s|^(CC =).*|\\1 $(tc-getCC)|g" \
+		-e "s|^(CXX =).*|\\1 $(tc-getCXX)|g" \
+		-e "s|^(CFLAGS =).*|\\1 ${CFLAGS}|g" \
+		-e "s|^(CPPFLAGS =).*|\\1 ${CPPFLAGS}|g" \
+		-e "s|^(CXXFLAGS =).*|\\1 ${CXXFLAGS}|g" \
+		-e "s|^(LDFLAGS =).*|\\1 ${LDFLAGS}|g" \
+		-e "s|^(PKGVER =).*|\\1 ${MY_PV}|g" \
+		-i build.ninja || die
+
+	# The pregenerated ninja file expects the build/ dir.
+	BUILD_DIR="${CMAKE_USE_DIR}/build"
+	cmake-utils_src_prepare
+}
+
+src_configure() {
+	append-lfs-flags
+
+	local mycmakeargs=(
+		-DCMAKE_SYSTEM_PROCESSOR="${CHOST%%-*}"
+	)
+
+	cmake-utils_src_configure
+}
+
+src_compile() {
+	# We only need a few libs from boringssl.
+	cmake-utils_src_compile libcrypto.a libssl.a
+
+	eninja
+}
+
+src_install() {
+	dobin adb e2fsdroid ext2simg fastboot mke2fs.android
+	dodoc core/adb/*.{txt,TXT} core/fastboot/README.md
+	use python && python_foreach_impl python_doexe core/mkbootimg/mkbootimg
+	newbashcomp arch/trunk/bash_completion.fastboot fastboot
+}
diff --git a/dev-util/apitrace/Manifest b/dev-util/apitrace/Manifest
index 001d549..8aee6fe 100644
--- a/dev-util/apitrace/Manifest
+++ b/dev-util/apitrace/Manifest
@@ -1 +1 @@
-DIST apitrace-8.0.tar.gz 3601109 BLAKE2B f3e8f7ff93ef4866370e791fa7768ca0445bd8f62a7d26f203bade7fec7aab475115ea2820b351fbc974697160b49a0c0628fb01ca9afa248b3e31ab7b75d4fc SHA512 1bd8ed4468fde17fbdc43bdd50508e6c7662ddf79b6d34aa222ee69cd033aeedcdc3a8c2fc4e88ba85bf13f7e7c516a83dc158b11f0e4dd67d2ec65ad10cef2c
+DIST apitrace-9.0.tar.gz 3623693 BLAKE2B 885cfd22d1cc82e36f7f0d65b816784986a8a693d04b483c059d3cffb0328c2cbbfd043793b964cea84d7b09a0dc8dda5f464099e91df26fd5eecef4bbeb28cc SHA512 4234bc2d14378b1bd9554752d83f8ce0703b4e08c3edc85769dc988a2b3a44b8e55d2f5856954658155a11d69802849bae6350ed5031a5916c7ac7bc7287918c
diff --git a/dev-util/apitrace/apitrace-8.0-r1.ebuild b/dev-util/apitrace/apitrace-8.0-r1.ebuild
deleted file mode 120000
index 96bea41..0000000
--- a/dev-util/apitrace/apitrace-8.0-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-apitrace-8.0.ebuild
\ No newline at end of file
diff --git a/dev-util/apitrace/apitrace-8.0.ebuild b/dev-util/apitrace/apitrace-8.0.ebuild
deleted file mode 100644
index 405ad1f..0000000
--- a/dev-util/apitrace/apitrace-8.0.ebuild
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-PYTHON_COMPAT=( python2_7 )
-inherit cmake-multilib python-single-r1
-
-DESCRIPTION="Tool for tracing, analyzing, and debugging graphics APIs"
-HOMEPAGE="https://github.com/apitrace/apitrace"
-SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="MIT"
-LICENSE+=" BSD CC-BY-3.0 CC-BY-4.0 public-domain" #bundled snappy
-SLOT="0"
-KEYWORDS="*"
-IUSE="+cli egl opengl opengles qt5 system-snappy X"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-RDEPEND="${PYTHON_DEPS}
-	media-libs/libpng:0=
-	media-libs/mesa[egl?,${MULTILIB_USEDEP}]
-	media-libs/waffle
-	sys-libs/zlib:=[${MULTILIB_USEDEP}]
-	sys-process/procps
-	X? ( x11-libs/libX11 )
-	opengl? ( virtual/opengl )
-	opengles? ( virtual/opengles )
-	qt5? (
-		dev-qt/qtcore:5
-		dev-qt/qtgui:5[-gles2]
-		dev-qt/qtnetwork:5
-		dev-qt/qtwebkit:5
-		dev-qt/qtwidgets:5[-gles2]
-	)
-	system-snappy? ( >=app-arch/snappy-1.1.1[${MULTILIB_USEDEP}] )
-"
-DEPEND="${RDEPEND}"
-
-PATCHES=(
-	"${FILESDIR}"/${PN}-8.0-glxtrace-only.patch
-	"${FILESDIR}"/${PN}-8.0-disable-multiarch.patch
-	"${FILESDIR}"/${PN}-8.0-docs-install.patch
-	"${FILESDIR}"/${PN}-8.0-snappy-license.patch
-	"${FILESDIR}"/0001-Fallback-to-NULL-platform-if-no-X.patch
-)
-
-src_prepare() {
-	cmake-utils_src_prepare
-
-	# The apitrace code grubs around in the internal zlib structures.
-	# We have to extract this header and clean it up to keep that working.
-	# Do not be surprised if a zlib upgrade breaks things ...
-	rm -rf "${S}"/thirdparty/{getopt,less,libpng,zlib,dxerr,directxtex,devcon} || die
-	if use system-snappy ; then
-		rm -rf "${S}"/thirdparty/snappy || die
-	fi
-}
-
-src_configure() {
-	my_configure() {
-		local mycmakeargs=(
-			-DENABLE_EGL=$(usex opengles)
-			-DENABLE_STATIC_SNAPPY=$(usex !system-snappy)
-		)
-		if multilib_is_native_abi ; then
-			mycmakeargs+=(
-				-DENABLE_CLI=$(usex cli)
-				-DENABLE_GUI=$(usex qt5)
-				-DENABLE_X11=$(usex X)
-				-DENABLE_WAFFLE=$(usex opengles)
-			)
-		else
-			mycmakeargs+=(
-				-DBUILD_LIB_ONLY=ON
-				-DENABLE_CLI=OFF
-				-DENABLE_GUI=OFF
-			)
-		fi
-		cmake-utils_src_configure
-	}
-
-	multilib_parallel_foreach_abi my_configure
-}
-
-src_install() {
-	cmake-multilib_src_install
-
-	dosym egltrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so
-	dosym egltrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so.1
-	dosym egltrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so.1.2
-
-	rm docs/INSTALL.markdown || die
-	dodoc docs/* README.markdown
-
-	exeinto /usr/$(get_libdir)/${PN}/scripts
-	doexe $(find scripts -type f -executable)
-}
diff --git a/dev-util/apitrace/apitrace-9.0-r1.ebuild b/dev-util/apitrace/apitrace-9.0-r1.ebuild
new file mode 120000
index 0000000..2dce1c2
--- /dev/null
+++ b/dev-util/apitrace/apitrace-9.0-r1.ebuild
@@ -0,0 +1 @@
+apitrace-9.0.ebuild
\ No newline at end of file
diff --git a/dev-util/apitrace/apitrace-9.0.ebuild b/dev-util/apitrace/apitrace-9.0.ebuild
new file mode 100644
index 0000000..a9395f4
--- /dev/null
+++ b/dev-util/apitrace/apitrace-9.0.ebuild
@@ -0,0 +1,101 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+PYTHON_COMPAT=( python3_6 )
+inherit cmake-multilib python-single-r1
+
+DESCRIPTION="Tool for tracing, analyzing, and debugging graphics APIs"
+HOMEPAGE="https://github.com/apitrace/apitrace"
+SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+LICENSE+=" BSD CC-BY-3.0 CC-BY-4.0 public-domain" #bundled snappy
+SLOT="0"
+KEYWORDS="*"
+IUSE="+cli egl opengl opengles qt5 system-snappy X"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="${PYTHON_DEPS}
+	media-libs/libpng:0=
+	media-libs/waffle
+	sys-libs/zlib:=[${MULTILIB_USEDEP}]
+	sys-process/procps
+	X? ( x11-libs/libX11 )
+	opengl? ( virtual/opengl )
+	opengles? ( virtual/opengles )
+	qt5? (
+		dev-qt/qtcore:5
+		dev-qt/qtgui:5[-gles2]
+		dev-qt/qtnetwork:5
+		dev-qt/qtwebkit:5
+		dev-qt/qtwidgets:5[-gles2]
+	)
+	system-snappy? ( >=app-arch/snappy-1.1.1[${MULTILIB_USEDEP}] )
+"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-8.0-glxtrace-only.patch
+	"${FILESDIR}"/${PN}-8.0-disable-multiarch.patch
+	"${FILESDIR}"/${PN}-9.0-docs-install.patch
+	"${FILESDIR}"/${PN}-8.0-snappy-license.patch
+	"${FILESDIR}"/0001-Fallback-to-NULL-platform-if-no-X.patch
+	"${FILESDIR}"/${PN}-9.0-egl-environment.patch
+)
+
+src_prepare() {
+	cmake-utils_src_prepare
+
+	# The apitrace code grubs around in the internal zlib structures.
+	# We have to extract this header and clean it up to keep that working.
+	# Do not be surprised if a zlib upgrade breaks things ...
+	rm -rf "${S}"/thirdparty/{getopt,less,libpng,zlib,dxerr,directxtex,devcon} || die
+	if use system-snappy ; then
+		rm -rf "${S}"/thirdparty/snappy || die
+	fi
+}
+
+src_configure() {
+	my_configure() {
+		local mycmakeargs=(
+			-DENABLE_EGL=$(usex opengles)
+			-DENABLE_STATIC_SNAPPY=$(usex !system-snappy)
+		)
+		if multilib_is_native_abi ; then
+			mycmakeargs+=(
+				-DENABLE_CLI=$(usex cli)
+				-DENABLE_GUI=$(usex qt5)
+				-DENABLE_X11=$(usex X)
+				-DENABLE_WAFFLE=$(usex opengles)
+			)
+		else
+			mycmakeargs+=(
+				-DBUILD_LIB_ONLY=ON
+				-DENABLE_CLI=OFF
+				-DENABLE_GUI=OFF
+			)
+		fi
+		cmake-utils_src_configure
+	}
+
+	multilib_parallel_foreach_abi my_configure
+}
+
+src_install() {
+	cmake-multilib_src_install
+
+	dosym egltrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so
+	dosym egltrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so.1
+	dosym egltrace.so /usr/$(get_libdir)/${PN}/wrappers/libGL.so.1.2
+
+	rm docs/INSTALL.markdown || die
+	dodoc docs/* README.markdown
+
+	exeinto /usr/$(get_libdir)/${PN}/scripts
+	doexe $(find scripts -type f -executable)
+
+	echo "LDPATH=\"/usr/$(get_libdir)/${PN}/wrappers\"" > "${T}"/99${PN}
+	doenvd "${T}"/99${PN}
+}
diff --git a/dev-util/apitrace/files/apitrace-8.0-docs-install.patch b/dev-util/apitrace/files/apitrace-8.0-docs-install.patch
deleted file mode 100644
index 2c82595..0000000
--- a/dev-util/apitrace/files/apitrace-8.0-docs-install.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From ce55270cbb9fae7df8791a4dc51c960f63de0323 Mon Sep 17 00:00:00 2001
-From: Po-Hsien Wang <pwang@chromium.org>
-Date: Fri, 19 Apr 2019 11:24:09 -0700
-Subject: [PATCH] doc install
-
----
- CMakeLists.txt | 14 --------------
- 1 file changed, 14 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 83c12d92..f0268e3d 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -602,20 +602,6 @@ endif ()
- ##############################################################################
- # Packaging
- 
--install (
--    FILES
--        README.markdown
--        docs/BUGS.markdown
--        docs/NEWS.markdown
--        docs/USAGE.markdown
--    DESTINATION ${DOC_INSTALL_DIR}
--)
--install (
--    FILES LICENSE
--    DESTINATION ${DOC_INSTALL_DIR}
--    RENAME LICENSE.txt
--)
--
- set (CPACK_PACKAGE_VERSION_MAJOR "8")
- set (CPACK_PACKAGE_VERSION_MINOR "0")
- 
--- 
-2.21.0.392.gf8f6787159e-goog
-
diff --git a/dev-util/apitrace/files/apitrace-9.0-docs-install.patch b/dev-util/apitrace/files/apitrace-9.0-docs-install.patch
new file mode 100644
index 0000000..7faa2b1
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-9.0-docs-install.patch
@@ -0,0 +1,23 @@
+--- a/CMakeLists.txt 2021-01-27 22:09:39.140727322 -0800
++++ b/CMakeLists.txt 2021-01-27 22:10:32.145136230 -0800
+@@ -614,20 +614,6 @@
+ ##############################################################################
+ # Packaging
+ 
+-install (
+-    FILES
+-        README.markdown
+-        docs/BUGS.markdown
+-        docs/NEWS.markdown
+-        docs/USAGE.markdown
+-    DESTINATION ${DOC_INSTALL_DIR}
+-)
+-install (
+-    FILES LICENSE
+-    DESTINATION ${DOC_INSTALL_DIR}
+-    RENAME LICENSE.txt
+-)
+-
+ set (CPACK_PACKAGE_VERSION_MAJOR "9")
+ set (CPACK_PACKAGE_VERSION_MINOR "0")
+ 
diff --git a/dev-util/apitrace/files/apitrace-9.0-egl-environment.patch b/dev-util/apitrace/files/apitrace-9.0-egl-environment.patch
new file mode 100644
index 0000000..710abbb
--- /dev/null
+++ b/dev-util/apitrace/files/apitrace-9.0-egl-environment.patch
@@ -0,0 +1,43 @@
+diff --git a/dispatch/glproc_egl.cpp b/dispatch/glproc_egl.cpp
+index 3608f525..48692367 100644
+--- a/dispatch/glproc_egl.cpp
++++ b/dispatch/glproc_egl.cpp
+@@ -93,7 +93,11 @@ _getPublicProcAddress(const char *procName)
+     if (procName[0] == 'e' && procName[1] == 'g' && procName[2] == 'l') {
+         static void *libEGL = NULL;
+         if (!libEGL) {
+-            libEGL = _dlopen("libEGL.so", RTLD_LOCAL | RTLD_LAZY | RTLD_DEEPBIND);
++            const char * libegl_filename = getenv("TRACE_LIBEGL");
++            if (!libegl_filename) {
++                libegl_filename = "libEGL.so";
++            }
++            libEGL = _dlopen(libegl_filename, RTLD_LOCAL | RTLD_LAZY | RTLD_DEEPBIND);
+             if (!libEGL) {
+                 return NULL;
+             }
+@@ -136,7 +140,11 @@ _getPublicProcAddress(const char *procName)
+ 
+         static void *libGLESv2 = NULL;
+         if (!libGLESv2) {
+-            libGLESv2 = _dlopen("libGLESv2.so", RTLD_LOCAL | RTLD_LAZY | RTLD_DEEPBIND);
++            const char * libglesv2_filename = getenv("TRACE_LIBGLESV2");
++            if (!libglesv2_filename) {
++                libglesv2_filename = "libGLESv2.so";
++            }
++            libGLESv2 = _dlopen(libglesv2_filename, RTLD_LOCAL | RTLD_LAZY | RTLD_DEEPBIND);
+         }
+         if (libGLESv2) {
+             proc = dlsym(libGLESv2, procName);
+@@ -147,7 +155,11 @@ _getPublicProcAddress(const char *procName)
+ 
+         static void *libGLESv1 = NULL;
+         if (!libGLESv1) {
+-            libGLESv1 = _dlopen("libGLESv1_CM.so", RTLD_LOCAL | RTLD_LAZY | RTLD_DEEPBIND);
++            const char * libglesv1_filename = getenv("TRACE_LIBGLESV1");
++            if (!libglesv1_filename) {
++                libglesv1_filename = "libGLESv1.so";
++            }
++            libGLESv1 = _dlopen(libglesv1_filename, RTLD_LOCAL | RTLD_LAZY | RTLD_DEEPBIND);
+         }
+         if (libGLESv1) {
+             proc = dlsym(libGLESv1, procName);
diff --git a/dev-util/bsdiff/bsdiff-4.3.1-r31.ebuild b/dev-util/bsdiff/bsdiff-4.3.1-r31.ebuild
deleted file mode 100644
index 070c610..0000000
--- a/dev-util/bsdiff/bsdiff-4.3.1-r31.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-util/bsdiff/bsdiff-4.3-r2.ebuild,v 1.1 2010/12/13 00:35:03 flameeyes Exp $
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("baa9821b2f2d74840481e279db5901940c947984" "4500e02a8a33ec8defead90294a1d8fa6d538145")
-CROS_WORKON_TREE=("3a989be8b720701c4023d8b52d50648e01cf9dd2" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "a6219da561ac98cfa3cdf9d1fb98cf15b5b28473")
-inherit cros-constants
-
-# cros-workon expects the repo to be in src/third_party, but is in src/aosp.
-CROS_WORKON_LOCALNAME=("../platform2" "../aosp/external/bsdiff")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "platform/external/bsdiff")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/bsdiff")
-CROS_WORKON_REPO=("${CROS_GIT_HOST_URL}" "${CROS_GIT_AOSP_URL}")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_MANUAL_UPREV=1
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-
-PLATFORM_SUBDIR="bsdiff"
-
-inherit cros-workon platform
-
-DESCRIPTION="bsdiff: Binary Differencer using a suffix alg"
-HOMEPAGE="http://www.daemonology.net/bsdiff/"
-SRC_URI=""
-
-LICENSE="BSD-2"
-KEYWORDS="*"
-
-RDEPEND="
-	>=app-arch/brotli-1.0.6:=
-	app-arch/bzip2:=
-	dev-libs/libdivsufsort:=
-"
-DEPEND="${RDEPEND}"
-
-src_install() {
-	if use cros_host; then
-		dobin "${OUT}"/bsdiff
-		dobin "${OUT}"/bspatch
-	fi
-	dolib.a "${OUT}"/libbsdiff.a
-	dolib.a "${OUT}"/libbspatch.a
-
-	insinto /usr/include
-	doins -r include/bsdiff
-
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins libbsdiff.pc libbspatch.pc
-
-	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/bspatch_fuzzer
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/bsdiff_test"
-
-	# Run fuzzer.
-	platform_fuzzer_test "${OUT}"/bspatch_fuzzer
-}
diff --git a/dev-util/bsdiff/bsdiff-4.3.1-r32.ebuild b/dev-util/bsdiff/bsdiff-4.3.1-r32.ebuild
new file mode 100644
index 0000000..8b3a798
--- /dev/null
+++ b/dev-util/bsdiff/bsdiff-4.3.1-r32.ebuild
@@ -0,0 +1,61 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-util/bsdiff/bsdiff-4.3-r2.ebuild,v 1.1 2010/12/13 00:35:03 flameeyes Exp $
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("baa9821b2f2d74840481e279db5901940c947984" "4500e02a8a33ec8defead90294a1d8fa6d538145")
+CROS_WORKON_TREE=("3a989be8b720701c4023d8b52d50648e01cf9dd2" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "a6219da561ac98cfa3cdf9d1fb98cf15b5b28473")
+inherit cros-constants
+
+# cros-workon expects the repo to be in src/third_party, but is in src/aosp.
+CROS_WORKON_LOCALNAME=("../platform2" "../aosp/external/bsdiff")
+CROS_WORKON_PROJECT=("chromiumos/platform2" "platform/external/bsdiff")
+CROS_WORKON_EGIT_BRANCH=("main" "master")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/bsdiff")
+CROS_WORKON_REPO=("${CROS_GIT_HOST_URL}" "${CROS_GIT_AOSP_URL}")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_MANUAL_UPREV=1
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+
+PLATFORM_SUBDIR="bsdiff"
+
+inherit cros-workon platform
+
+DESCRIPTION="bsdiff: Binary Differencer using a suffix alg"
+HOMEPAGE="http://www.daemonology.net/bsdiff/"
+SRC_URI=""
+
+LICENSE="BSD-2"
+KEYWORDS="*"
+
+RDEPEND="
+	>=app-arch/brotli-1.0.6:=
+	app-arch/bzip2:=
+	dev-libs/libdivsufsort:=
+"
+DEPEND="${RDEPEND}"
+
+src_install() {
+	if use cros_host; then
+		dobin "${OUT}"/bsdiff
+		dobin "${OUT}"/bspatch
+	fi
+	dolib.a "${OUT}"/libbsdiff.a
+	dolib.a "${OUT}"/libbspatch.a
+
+	insinto /usr/include
+	doins -r include/bsdiff
+
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins libbsdiff.pc libbspatch.pc
+
+	platform_fuzzer_install "${S}"/OWNERS "${OUT}"/bspatch_fuzzer
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/bsdiff_test"
+
+	# Run fuzzer.
+	platform_fuzzer_test "${OUT}"/bspatch_fuzzer
+}
diff --git a/dev-util/bsdiff/bsdiff-9999.ebuild b/dev-util/bsdiff/bsdiff-9999.ebuild
index 35eef40..7a973a4 100644
--- a/dev-util/bsdiff/bsdiff-9999.ebuild
+++ b/dev-util/bsdiff/bsdiff-9999.ebuild
@@ -9,6 +9,7 @@
 # cros-workon expects the repo to be in src/third_party, but is in src/aosp.
 CROS_WORKON_LOCALNAME=("../platform2" "../aosp/external/bsdiff")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "platform/external/bsdiff")
+CROS_WORKON_EGIT_BRANCH=("main" "master")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/bsdiff")
 CROS_WORKON_REPO=("${CROS_GIT_HOST_URL}" "${CROS_GIT_AOSP_URL}")
 CROS_WORKON_INCREMENTAL_BUILD=1
diff --git a/dev-util/cxxbridge-cmd/Manifest b/dev-util/cxxbridge-cmd/Manifest
new file mode 100644
index 0000000..1dd811a
--- /dev/null
+++ b/dev-util/cxxbridge-cmd/Manifest
@@ -0,0 +1 @@
+DIST cxxbridge-cmd-1.0.42.crate 69519 BLAKE2B bca19320dbf1aea76e70be4df0eaef8fec6ab502154926384f93e22c6ccadd0abb5d7658b32edc74ff23bf571fce8165478a0feaed95ef367d674cc3cd8fc3b9 SHA512 05ce5037b12c0e1aacb50d0ef68754a7f95bfcf5a5ffb4bc219d24f68fbed1767a0e85510d513d92cef4e48a841bc7a24f754e2a663cd9a0cfb110fae3cdb4ac
diff --git a/dev-util/cxxbridge-cmd/OWNERS b/dev-util/cxxbridge-cmd/OWNERS
new file mode 100644
index 0000000..84193a2
--- /dev/null
+++ b/dev-util/cxxbridge-cmd/OWNERS
@@ -0,0 +1 @@
+include /net-wireless/systembt/OWNERS
diff --git a/dev-util/cxxbridge-cmd/cxxbridge-cmd-1.0.42.ebuild b/dev-util/cxxbridge-cmd/cxxbridge-cmd-1.0.42.ebuild
new file mode 100644
index 0000000..cd9113e
--- /dev/null
+++ b/dev-util/cxxbridge-cmd/cxxbridge-cmd-1.0.42.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="C++ code generator for integrating 'cxx' crate into a non-Cargo build."
+HOMEPAGE="https://crates.io/crates/cxxbridge-cmd"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="|| ( MIT Apache-2.0 )"
+SLOT="${PV}/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	>=dev-rust/clap-2.33:= <dev-rust/clap-3
+	>=dev-rust/codespan-reporting-0.11:= <dev-rust/codespan-reporting-0.12
+	>=dev-rust/proc-macro2-1.0.26:= <dev-rust/proc-macro2-2
+	>=dev-rust/quote-1.0:= <dev-rust/quote-2
+	>=dev-rust/syn-1.0.68:= <dev-rust/syn-2
+"
+RDEPEND="${DEPEND}"
+
+# This file was automatically generated by cargo2ebuild.py
+# All changes below are manual
+
+src_compile() {
+	ecargo_build
+}
+
+src_install() {
+	dobin "$(cros-rust_get_build_dir)/cxxbridge"
+}
diff --git a/dev-util/dut-server/OWNERS b/dev-util/dut-server/OWNERS
new file mode 100644
index 0000000..634b013
--- /dev/null
+++ b/dev-util/dut-server/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/dev-util:/src/OWNERS
diff --git a/dev-util/dut-server/dut-server-0.0.1-r5.ebuild b/dev-util/dut-server/dut-server-0.0.1-r5.ebuild
new file mode 100644
index 0000000..77b23e5
--- /dev/null
+++ b/dev-util/dut-server/dut-server-0.0.1-r5.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="d5f4dc19a6af173932c7db54e1550aef00eb2f55"
+CROS_WORKON_TREE="973d967f3987480fbaf6415e28a902e2956a3acd"
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME=("../platform/dev")
+CROS_WORKON_SUBTREE="src/chromiumos/test/dut"
+
+inherit cros-go cros-workon
+
+DESCRIPTION="DUT Service Server implementation for interfacing with the DUT"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/dut"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+CROS_GO_WORKSPACE=(
+	"${S}"
+)
+
+CROS_GO_BINARIES=(
+	"chromiumos/test/dut/cmd/dutserver"
+)
+
+CROS_GO_TEST=(
+	"chromiumos/test/dut/cmd/dutserver/..."
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+DEPEND="
+	dev-util/lro-server
+	dev-go/grpc
+	chromeos-base/cros-config-api
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-util/dut-server/dut-server-9999.ebuild b/dev-util/dut-server/dut-server-9999.ebuild
new file mode 100644
index 0000000..857ff43
--- /dev/null
+++ b/dev-util/dut-server/dut-server-9999.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME=("../platform/dev")
+CROS_WORKON_SUBTREE="src/chromiumos/test/dut"
+
+inherit cros-go cros-workon
+
+DESCRIPTION="DUT Service Server implementation for interfacing with the DUT"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/dut"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE=""
+
+CROS_GO_WORKSPACE=(
+	"${S}"
+)
+
+CROS_GO_BINARIES=(
+	"chromiumos/test/dut/cmd/dutserver"
+)
+
+CROS_GO_TEST=(
+	"chromiumos/test/dut/cmd/dutserver/..."
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+DEPEND="
+	dev-util/lro-server
+	dev-go/grpc
+	chromeos-base/cros-config-api
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-util/gdbus-codegen/Manifest b/dev-util/gdbus-codegen/Manifest
new file mode 100644
index 0000000..c9d7739
--- /dev/null
+++ b/dev-util/gdbus-codegen/Manifest
@@ -0,0 +1 @@
+DIST glib-2.66.7.tar.xz 4844892 BLAKE2B 2d128e8c933a8c5bd27734e96e50244f27c29199823e2185e8cfa5b4bbc0ca23f761c9de275c9941672eb945e302178b3cb4b5bd577f375ad953a97dddc70e34 SHA512 f6e6cc0fe2ab4a31a623bf9a1e63f833783e044e7ed55b66a84fc0cbf1410eec233fe0e226abb20aac0e40167a9624bf5e65197f9eed879da1293af44408d530
diff --git a/dev-util/gdbus-codegen/OWNERS b/dev-util/gdbus-codegen/OWNERS
new file mode 100644
index 0000000..e437504
--- /dev/null
+++ b/dev-util/gdbus-codegen/OWNERS
@@ -0,0 +1 @@
+include /dev-libs/glib/OWNERS
diff --git a/dev-util/gdbus-codegen/files/gdbus-codegen-2.56.1-sitedir.patch b/dev-util/gdbus-codegen/files/gdbus-codegen-2.56.1-sitedir.patch
new file mode 100644
index 0000000..30f0d7d
--- /dev/null
+++ b/dev-util/gdbus-codegen/files/gdbus-codegen-2.56.1-sitedir.patch
@@ -0,0 +1,54 @@
+From 9eaaa76e2e36e46a43dbd419724696fd7ff8ea64 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?R=C3=A9mi=20Cardona?= <remi@gentoo.org>
+Date: Sat, 14 Apr 2018 09:55:22 +0200
+Subject: [PATCH 1/2] gdbus-codegen-2.54.3-sitedir.patch
+
+---
+ gio/gdbus-2.0/codegen/gdbus-codegen.in | 28 --------------------------
+ 1 file changed, 28 deletions(-)
+
+diff --git a/gio/gdbus-2.0/codegen/gdbus-codegen.in b/gio/gdbus-2.0/codegen/gdbus-codegen.in
+index 67d367543..190afa28f 100755
+--- a/gdbus-codegen.in
++++ b/gdbus-codegen.in
+@@ -20,36 +20,8 @@
+ # Author: David Zeuthen <davidz@redhat.com>
+ 
+ 
+-import os
+ import sys
+ 
+-srcdir = os.getenv('UNINSTALLED_GLIB_SRCDIR', None)
+-filedir = os.path.dirname(__file__)
+-
+-if srcdir is not None:
+-    path = os.path.join(srcdir, 'gio', 'gdbus-2.0')
+-elif os.path.basename(filedir) == 'bin':
+-    # Make the prefix containing gdbus-codegen 'relocatable' at runtime by
+-    # adding /some/prefix/bin/../share/glib-2.0 to the python path
+-    path = os.path.join(filedir, '..', 'share', 'glib-2.0')
+-else:
+-    # Assume that the modules we need are in the current directory and add the
+-    # parent directory to the python path.
+-    path = os.path.join(filedir, '..')
+-
+-# Canonicalize, then do further testing
+-path = os.path.abspath(path)
+-
+-# If the above path detection failed, use the hard-coded datadir. This can
+-# happen when, for instance, bindir and datadir are not in the same prefix or
+-# on Windows where we cannot make any guarantees about the directory structure.
+-#
+-# In these cases our installation cannot be relocatable, but at least we should
+-# be able to find the codegen module.
+-if not os.path.isfile(os.path.join(path, 'codegen', 'codegen_main.py')):
+-    path = os.path.join('@DATADIR@', 'glib-2.0')
+-
+-sys.path.insert(0, path)
+-from codegen import codegen_main
++from gdbus_codegen import codegen_main
+ 
+ sys.exit(codegen_main.codegen_main())
+-- 
+2.17.0
+
diff --git a/dev-util/gdbus-codegen/files/setup.py-2.32.4 b/dev-util/gdbus-codegen/files/setup.py-2.32.4
new file mode 100644
index 0000000..c5318e3
--- /dev/null
+++ b/dev-util/gdbus-codegen/files/setup.py-2.32.4
@@ -0,0 +1,6 @@
+from distutils.core import setup
+setup(name="gdbus_codegen",
+      version="@PV@",
+      packages=["gdbus_codegen"],
+      package_dir={"gdbus_codegen" : ""},
+      scripts=["gdbus-codegen"])
diff --git a/dev-util/gdbus-codegen/gdbus-codegen-2.66.7-r1.ebuild b/dev-util/gdbus-codegen/gdbus-codegen-2.66.7-r1.ebuild
new file mode 100644
index 0000000..0b83fea
--- /dev/null
+++ b/dev-util/gdbus-codegen/gdbus-codegen-2.66.7-r1.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+GNOME_ORG_MODULE="glib"
+PYTHON_COMPAT=( python3_{6,7,8,9} )
+PYTHON_REQ_USE="xml"
+DISTUTILS_SINGLE_IMPL=1
+DISTUTILS_USE_SETUPTOOLS=no
+
+inherit gnome.org distutils-r1
+
+DESCRIPTION="GDBus code and documentation generator"
+HOMEPAGE="https://www.gtk.org/"
+
+LICENSE="LGPL-2+"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="${PYTHON_DEPS}"
+DEPEND="${RDEPEND}"
+BDEPEND="
+	dev-libs/libxslt
+	app-text/docbook-xsl-stylesheets
+"
+
+S="${WORKDIR}/glib-${PV}/gio/gdbus-2.0/codegen"
+
+python_prepare_all() {
+	PATCHES=(
+		"${FILESDIR}/${PN}-2.56.1-sitedir.patch"
+	)
+	distutils-r1_python_prepare_all
+
+	local MAJOR_VERSION=$(ver_cut 1)
+	local MINOR_VERSION=$(ver_cut 2)
+	sed -e 's:@PYTHON@:python:' gdbus-codegen.in > gdbus-codegen || die
+	sed -e "s:@VERSION@:${PV}:" \
+		-e "s:@MAJOR_VERSION@:${MAJOR_VERSION}:" \
+		-e "s:@MINOR_VERSION@:${MINOR_VERSION}:" config.py.in > config.py || die
+	cp "${FILESDIR}/setup.py-2.32.4" setup.py || die "cp failed"
+	sed -e "s/@PV@/${PV}/" -i setup.py || die "sed setup.py failed"
+}
+
+do_xsltproc_command() {
+	# Taken from meson.build for manual manpage building - keep in sync (also copied to dev-util/glib-utils)
+	xsltproc \
+		--nonet \
+		--stringparam man.output.quietly 1 \
+		--stringparam funcsynopsis.style ansi \
+		--stringparam man.th.extra1.suppress 1 \
+		--stringparam man.authors.section.enabled 0 \
+		--stringparam man.copyright.section.enabled 0 \
+		-o "${2}" \
+		http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl \
+		"${1}" || ewarn "manpage generation failed"
+}
+
+src_compile() {
+	distutils-r1_src_compile
+	do_xsltproc_command "${WORKDIR}/glib-${PV}/docs/reference/gio/gdbus-codegen.xml" "${WORKDIR}/glib-${PV}/docs/reference/gio/gdbus-codegen.1"
+}
+
+src_test() {
+	einfo "Skipping tests. This package is tested by dev-libs/glib"
+	einfo "when merged with FEATURES=test"
+}
+
+python_install_all() {
+	distutils-r1_python_install_all # no-op, but prevents QA warning
+	if [[ -f "${WORKDIR}/glib-${PV}/docs/reference/gio/gdbus-codegen.1" ]]; then
+		doman "${WORKDIR}/glib-${PV}/docs/reference/gio/gdbus-codegen.1"
+	fi
+}
diff --git a/dev-util/gdbus-codegen/metadata.xml b/dev-util/gdbus-codegen/metadata.xml
new file mode 100644
index 0000000..3998080
--- /dev/null
+++ b/dev-util/gdbus-codegen/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="project">
+	<email>gnome@gentoo.org</email>
+	<name>Gentoo GNOME Desktop</name>
+</maintainer>
+</pkgmetadata>
diff --git a/dev-util/glib-utils/glib-utils-2.66.7-r1.ebuild b/dev-util/glib-utils/glib-utils-2.66.7-r1.ebuild
deleted file mode 100644
index c9f88eb..0000000
--- a/dev-util/glib-utils/glib-utils-2.66.7-r1.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-PYTHON_COMPAT=( python3_{6,7,8,9} )
-GNOME_ORG_MODULE="glib"
-
-inherit gnome.org python-single-r1
-
-DESCRIPTION="Build utilities for GLib using projects"
-HOMEPAGE="https://www.gtk.org/"
-
-LICENSE="LGPL-2.1+"
-SLOT="0" # /usr/bin utilities that can't be parallel installed by their nature
-IUSE="cros-host"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-KEYWORDS="*"
-
-RDEPEND="${PYTHON_DEPS}
-	!<dev-libs/glib-2.56.2:2
-"
-BDEPEND="
-	dev-libs/libxslt
-	app-text/docbook-xsl-stylesheets
-"
-DEPEND="${RDEPEND}
-	cros-host? ( ${BDEPEND} )
-"
-
-src_configure() { :; }
-
-do_xsltproc_command() {
-	# Taken from meson.build for manual manpage building - keep in sync (also copied to dev-util/gdbus-codegen)
-	xsltproc \
-		--nonet \
-		--stringparam man.output.quietly 1 \
-		--stringparam funcsynopsis.style ansi \
-		--stringparam man.th.extra1.suppress 1 \
-		--stringparam man.authors.section.enabled 0 \
-		--stringparam man.copyright.section.enabled 0 \
-		-o "${2}" \
-		http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl \
-		"${1}" || die "manpage generation failed"
-}
-
-src_compile() {
-	sed -e "s:@VERSION@:${PV}:g;s:@PYTHON@:python:g" gobject/glib-genmarshal.in > gobject/glib-genmarshal || die
-	sed -e "s:@VERSION@:${PV}:g;s:@PYTHON@:python:g" gobject/glib-mkenums.in > gobject/glib-mkenums || die
-	sed -e "s:@GLIB_VERSION@:${PV}:g;s:@PYTHON@:python:g" glib/gtester-report.in > glib/gtester-report || die
-	do_xsltproc_command docs/reference/gobject/glib-genmarshal.xml docs/reference/gobject/glib-genmarshal.1
-	do_xsltproc_command docs/reference/gobject/glib-mkenums.xml docs/reference/gobject/glib-mkenums.1
-	do_xsltproc_command docs/reference/glib/gtester-report.xml docs/reference/glib/gtester-report.1
-}
-
-src_install() {
-	python_fix_shebang gobject/glib-genmarshal
-	python_fix_shebang gobject/glib-mkenums
-	python_fix_shebang glib/gtester-report
-	exeinto /usr/bin
-	doexe gobject/glib-genmarshal
-	doexe gobject/glib-mkenums
-	doexe glib/gtester-report
-	doman docs/reference/gobject/glib-genmarshal.1
-	doman docs/reference/gobject/glib-mkenums.1
-	doman docs/reference/glib/gtester-report.1
-}
diff --git a/dev-util/glib-utils/glib-utils-2.66.7-r2.ebuild b/dev-util/glib-utils/glib-utils-2.66.7-r2.ebuild
new file mode 100644
index 0000000..b9c8099
--- /dev/null
+++ b/dev-util/glib-utils/glib-utils-2.66.7-r2.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_{6,7,8,9} )
+GNOME_ORG_MODULE="glib"
+
+inherit gnome.org python-single-r1
+
+DESCRIPTION="Build utilities for GLib using projects"
+HOMEPAGE="https://www.gtk.org/"
+
+LICENSE="LGPL-2.1+"
+SLOT="0" # /usr/bin utilities that can't be parallel installed by their nature
+IUSE="cros-host"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+KEYWORDS="*"
+
+RDEPEND="${PYTHON_DEPS}
+	!<dev-libs/glib-2.56.2:2
+"
+BDEPEND="
+	dev-libs/libxslt
+	app-text/docbook-xsl-stylesheets
+"
+DEPEND="${RDEPEND}
+	cros-host? ( ${BDEPEND} )
+"
+
+src_configure() { :; }
+
+do_xsltproc_command() {
+	# Taken from meson.build for manual manpage building - keep in sync (also copied to dev-util/gdbus-codegen)
+	xsltproc \
+		--nonet \
+		--stringparam man.output.quietly 1 \
+		--stringparam funcsynopsis.style ansi \
+		--stringparam man.th.extra1.suppress 1 \
+		--stringparam man.authors.section.enabled 0 \
+		--stringparam man.copyright.section.enabled 0 \
+		-o "${2}" \
+		http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl \
+		"${1}" || ewarn "manpage generation failed"
+}
+
+src_compile() {
+	sed -e "s:@VERSION@:${PV}:g;s:@PYTHON@:python:g" gobject/glib-genmarshal.in > gobject/glib-genmarshal || die
+	sed -e "s:@VERSION@:${PV}:g;s:@PYTHON@:python:g" gobject/glib-mkenums.in > gobject/glib-mkenums || die
+	sed -e "s:@GLIB_VERSION@:${PV}:g;s:@PYTHON@:python:g" glib/gtester-report.in > glib/gtester-report || die
+	do_xsltproc_command docs/reference/gobject/glib-genmarshal.xml docs/reference/gobject/glib-genmarshal.1
+	do_xsltproc_command docs/reference/gobject/glib-mkenums.xml docs/reference/gobject/glib-mkenums.1
+	do_xsltproc_command docs/reference/glib/gtester-report.xml docs/reference/glib/gtester-report.1
+}
+
+src_install() {
+	python_fix_shebang gobject/glib-genmarshal
+	python_fix_shebang gobject/glib-mkenums
+	python_fix_shebang glib/gtester-report
+	exeinto /usr/bin
+	doexe gobject/glib-genmarshal
+	doexe gobject/glib-mkenums
+	doexe glib/gtester-report
+	if [[ -f docs/reference/gobject/glib-genmarshal.1 ]]; then
+		doman docs/reference/gobject/glib-genmarshal.1
+	fi
+	if [[ -f docs/reference/gobject/glib-mkenums.1 ]]; then
+		doman docs/reference/gobject/glib-mkenums.1
+	fi
+	if [[ -f docs/reference/glib/gtester-report.1 ]]; then
+		doman docs/reference/glib/gtester-report.1
+	fi
+}
diff --git a/dev-util/hdctools/hdctools-0.0.1-r1301.ebuild b/dev-util/hdctools/hdctools-0.0.1-r1301.ebuild
deleted file mode 100644
index 23ace71..0000000
--- a/dev-util/hdctools/hdctools-0.0.1-r1301.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="c0e41868d338d883313f8b5eb11995079168dacd"
-CROS_WORKON_TREE="04045fd4dc21ac39e596863833ed61bdb89d2847"
-CROS_WORKON_PROJECT="chromiumos/third_party/hdctools"
-PYTHON_COMPAT=( python2_7 )
-
-inherit cros-workon distutils-r1 toolchain-funcs udev
-
-DESCRIPTION="Software to communicate with servo/miniservo debug boards"
-HOMEPAGE="https://www.chromium.org/chromium-os/servo"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="cros_host test"
-
-COMMON_DEPEND="
-	>=dev-embedded/libftdi-0.18:=
-	dev-python/numpy:=[${PYTHON_USEDEP}]
-	>=dev-python/pexpect-3.0:=[${PYTHON_USEDEP}]
-	dev-python/pyserial:=[${PYTHON_USEDEP}]
-	>=dev-python/pyusb-1.0.2:=[${PYTHON_USEDEP}]
-	sys-power/uhubctl
-	virtual/libusb:1
-	chromeos-base/ec-devutils:=[${PYTHON_USEDEP}]
-"
-
-RDEPEND="${COMMON_DEPEND}
-	virtual/servo-config-dut-usb3:*
-"
-
-DEPEND="${COMMON_DEPEND}
-	app-text/htmltidy:=
-	test? ( dev-python/pytest:=[${PYTHON_USEDEP}] )
-"
-
-src_test() {
-	python_test() {
-		py.test -v build/ || die
-	}
-	python_foreach_impl python_test
-}
-
-src_compile() {
-	tc-export CC PKG_CONFIG
-	local makeargs=( $(usex cros_host '' EXTRA_DIRS=chromeos) )
-	emake "${makeargs[@]}"
-	distutils-r1_src_compile
-}
-
-src_install() {
-	local makeargs=(
-		$(usex cros_host '' EXTRA_DIRS=chromeos)
-		DESTDIR="${D}"
-		LIBDIR=/usr/$(get_libdir)
-		UDEV_DEST="${D}$(get_udevdir)/rules.d"
-		install
-	)
-	emake "${makeargs[@]}"
-	distutils-r1_src_install
-}
diff --git a/dev-util/hdctools/hdctools-0.0.1-r1400.ebuild b/dev-util/hdctools/hdctools-0.0.1-r1400.ebuild
new file mode 100644
index 0000000..f184758
--- /dev/null
+++ b/dev-util/hdctools/hdctools-0.0.1-r1400.ebuild
@@ -0,0 +1,65 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="e521fed7a332b7c82232171a18361da239e9be62"
+CROS_WORKON_TREE="10706ea9ac1e3d8b910c300d8a8f637dd9a2aec9"
+CROS_WORKON_PROJECT="chromiumos/third_party/hdctools"
+PYTHON_COMPAT=( python3_{6..9} )
+
+inherit cros-workon distutils-r1 toolchain-funcs udev
+
+DESCRIPTION="Software to communicate with servo/miniservo debug boards"
+HOMEPAGE="https://www.chromium.org/chromium-os/servo"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="cros_host test"
+
+COMMON_DEPEND="
+	>=dev-embedded/libftdi-0.18:=
+	dev-python/numpy[${PYTHON_USEDEP}]
+	>=dev-python/pexpect-3.0[${PYTHON_USEDEP}]
+	dev-python/pyserial[${PYTHON_USEDEP}]
+	>=dev-python/pyusb-1.0.2[${PYTHON_USEDEP}]
+	sys-power/uhubctl
+	virtual/libusb:1=
+	chromeos-base/ec-devutils:=[${PYTHON_USEDEP}]
+"
+
+RDEPEND="${COMMON_DEPEND}
+	virtual/servo-config-dut-usb3:*
+"
+
+DEPEND="${COMMON_DEPEND}
+	app-text/htmltidy
+"
+
+BDEPEND="test? ( dev-python/pytest[${PYTHON_USEDEP}] )"
+
+src_compile() {
+	tc-export CC PKG_CONFIG
+	local makeargs=( $(usex cros_host '' EXTRA_DIRS=chromeos) )
+	emake "${makeargs[@]}"
+	distutils-r1_src_compile
+}
+
+python_test() {
+	py.test -v build/ || die
+}
+
+src_test() {
+	distutils-r1_src_test
+}
+
+src_install() {
+	local makeargs=(
+		$(usex cros_host '' EXTRA_DIRS=chromeos)
+		DESTDIR="${D}"
+		LIBDIR=/usr/$(get_libdir)
+		UDEV_DEST="${D}$(get_udevdir)/rules.d"
+		install
+	)
+	emake "${makeargs[@]}"
+	distutils-r1_src_install
+}
diff --git a/dev-util/hdctools/hdctools-9999.ebuild b/dev-util/hdctools/hdctools-9999.ebuild
index 2766a99..c5c6388 100644
--- a/dev-util/hdctools/hdctools-9999.ebuild
+++ b/dev-util/hdctools/hdctools-9999.ebuild
@@ -3,7 +3,7 @@
 
 EAPI=7
 CROS_WORKON_PROJECT="chromiumos/third_party/hdctools"
-PYTHON_COMPAT=( python2_7 )
+PYTHON_COMPAT=( python3_{6..9} )
 
 inherit cros-workon distutils-r1 toolchain-funcs udev
 
@@ -16,12 +16,12 @@
 
 COMMON_DEPEND="
 	>=dev-embedded/libftdi-0.18:=
-	dev-python/numpy:=[${PYTHON_USEDEP}]
-	>=dev-python/pexpect-3.0:=[${PYTHON_USEDEP}]
-	dev-python/pyserial:=[${PYTHON_USEDEP}]
-	>=dev-python/pyusb-1.0.2:=[${PYTHON_USEDEP}]
+	dev-python/numpy[${PYTHON_USEDEP}]
+	>=dev-python/pexpect-3.0[${PYTHON_USEDEP}]
+	dev-python/pyserial[${PYTHON_USEDEP}]
+	>=dev-python/pyusb-1.0.2[${PYTHON_USEDEP}]
 	sys-power/uhubctl
-	virtual/libusb:1
+	virtual/libusb:1=
 	chromeos-base/ec-devutils:=[${PYTHON_USEDEP}]
 "
 
@@ -30,16 +30,10 @@
 "
 
 DEPEND="${COMMON_DEPEND}
-	app-text/htmltidy:=
-	test? ( dev-python/pytest:=[${PYTHON_USEDEP}] )
+	app-text/htmltidy
 "
 
-src_test() {
-	python_test() {
-		py.test -v build/ || die
-	}
-	python_foreach_impl python_test
-}
+BDEPEND="test? ( dev-python/pytest[${PYTHON_USEDEP}] )"
 
 src_compile() {
 	tc-export CC PKG_CONFIG
@@ -48,6 +42,14 @@
 	distutils-r1_src_compile
 }
 
+python_test() {
+	py.test -v build/ || die
+}
+
+src_test() {
+	distutils-r1_src_test
+}
+
 src_install() {
 	local makeargs=(
 		$(usex cros_host '' EXTRA_DIRS=chromeos)
diff --git a/dev-util/lro-server/lro-server-0.0.1-r2.ebuild b/dev-util/lro-server/lro-server-0.0.1-r2.ebuild
new file mode 100644
index 0000000..a3ebd05
--- /dev/null
+++ b/dev-util/lro-server/lro-server-0.0.1-r2.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="9b1c421f3ddff94b937f745f5e7deabd5fbb2f02"
+CROS_WORKON_TREE="0a82488b21ac7734f64c67f4addb83f5f0eceb3f"
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME=("../platform/dev")
+CROS_WORKON_SUBTREE="src/chromiumos/lro"
+
+inherit cros-go cros-workon
+
+DESCRIPTION="Common golang library to support google.longrunning.operations server impls"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/lro"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+CROS_GO_WORKSPACE=(
+	"${S}"
+)
+
+CROS_GO_PACKAGES=(
+	"chromiumos/lro/..."
+)
+
+CROS_GO_TEST=(
+	"${CROS_GO_PACKAGES[@]}"
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+DEPEND="chromeos-base/cros-config-api"
+
+RDEPEND="!<chromeos-base/test-server-0.0.1-r10"
diff --git a/dev-util/lro-server/lro-server-9999.ebuild b/dev-util/lro-server/lro-server-9999.ebuild
new file mode 100644
index 0000000..9ba6c4f
--- /dev/null
+++ b/dev-util/lro-server/lro-server-9999.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME=("../platform/dev")
+CROS_WORKON_SUBTREE="src/chromiumos/lro"
+
+inherit cros-go cros-workon
+
+DESCRIPTION="Common golang library to support google.longrunning.operations server impls"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/lro"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE=""
+
+CROS_GO_WORKSPACE=(
+	"${S}"
+)
+
+CROS_GO_PACKAGES=(
+	"chromiumos/lro/..."
+)
+
+CROS_GO_TEST=(
+	"${CROS_GO_PACKAGES[@]}"
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+DEPEND="chromeos-base/cros-config-api"
+
+RDEPEND="!<chromeos-base/test-server-0.0.1-r10"
diff --git a/dev-util/mem/files/mem.py b/dev-util/mem/files/mem.py
index 2f7d066..aac53e2 100755
--- a/dev-util/mem/files/mem.py
+++ b/dev-util/mem/files/mem.py
@@ -116,7 +116,7 @@
 
   for cmd_name in sorted(_COMMANDS.keys()):
     func = eval(cmd_name)
-    arg_names = inspect.getargspec(func)[0]
+    arg_names = inspect.signature(func).parameters
     short_doc = func.__doc__.splitlines()[0]
 
     arg_string = ', '.join(arg_names)
@@ -136,7 +136,7 @@
 
   for cmd_name, arg_types in sorted(_COMMANDS.items()):
     func = eval(cmd_name)
-    arg_names = inspect.getargspec(func)[0]
+    arg_names = inspect.signature(func).parameters
     short_doc = func.__doc__.splitlines()[0]
 
     # Get descriptions out assuming single-line descs.
diff --git a/dev-util/mem/mem-0.0.1-r5.ebuild b/dev-util/mem/mem-0.0.1-r6.ebuild
similarity index 100%
rename from dev-util/mem/mem-0.0.1-r5.ebuild
rename to dev-util/mem/mem-0.0.1-r6.ebuild
diff --git a/dev-util/meson/Manifest b/dev-util/meson/Manifest
deleted file mode 100644
index 443e7b8..0000000
--- a/dev-util/meson/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST meson-0.49.1.tar.gz 1340585 BLAKE2B 7df52f68948c74d4d713d57406a7b496e33740e43ea069b5cb6474a80b94800f8af7983413f3154eb2e6b7f0ea8df51e7359b8b7c6661f454dbb9a21ccf9bdc6 SHA512 cc955509d2c82b12d347f7a670a0e2abf5f6a4455dda3d53ec4abb0930b5f1c4a0ff996223ba5a5333bfec66e5d3fb3448a8187d4640e4b65397fc3e0e43dc72
diff --git a/dev-util/meson/files/0.49.1-do-not-resolve--l-library-paths.patch b/dev-util/meson/files/0.49.1-do-not-resolve--l-library-paths.patch
deleted file mode 100644
index 276d517..0000000
--- a/dev-util/meson/files/0.49.1-do-not-resolve--l-library-paths.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-Author: Daniel Campello <campello@chromium.org>
-
-Do not resolve -l library paths which causes problems when
-cross-compiling.
-
-This fixes issues where something like -lcap was changed to something
-like /build/whirlwind/usr/lib/libcap.so and when cross-compiling
-architectures did not match and error like this was presented:
-
-/usr/x86_64-pc-linux-gnu/armv7a-cros-linux-gnueabihf/ \
-binutils-bin/2.27.0/ld.gold.real: error: /lib/libcap.so.2: incompatible target
-
- diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
-index cd02939..66a7e78 100644
---- a/mesonbuild/dependencies/base.py
-+++ b/mesonbuild/dependencies/base.py
-@@ -671,9 +671,9 @@ class PkgConfigDependency(ExternalDependency):
-                 # Don't resolve the same -lfoo argument again
-                 if lib in libs_found:
-                     continue
--                if self.clib_compiler:
--                    args = self.clib_compiler.find_library(lib[2:], self.env,
--                                                           libpaths, libtype)
-+                #if self.clib_compiler:
-+                #    args = self.clib_compiler.find_library(lib[2:], self.env,
-+                #                                           libpaths, libtype)
-                 # If the project only uses a non-clib language such as D, Rust,
-                 # C#, Python, etc, all we can do is limp along by adding the
-                 # arguments as-is and then adding the libpaths at the end.
diff --git a/dev-util/meson/meson-0.49.1-r1.ebuild b/dev-util/meson/meson-0.49.1-r1.ebuild
deleted file mode 100644
index 2d22c53..0000000
--- a/dev-util/meson/meson-0.49.1-r1.ebuild
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-PYTHON_COMPAT=( python3_{5,6,7} )
-
-if [[ ${PV} = *9999* ]]; then
-	EGIT_REPO_URI="https://github.com/mesonbuild/meson"
-	inherit git-r3
-else
-	SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
-	KEYWORDS="*"
-fi
-
-inherit distutils-r1 toolchain-funcs
-
-DESCRIPTION="Open source build system"
-HOMEPAGE="http://mesonbuild.com/"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
-DEPEND="${RDEPEND}
-	test? (
-		dev-libs/glib:2
-		dev-libs/gobject-introspection
-		dev-util/ninja
-		dev-vcs/git
-		virtual/pkgconfig
-	)
-"
-
-python_prepare_all() {
-	eapply "${FILESDIR}"
-
-	# ASAN and sandbox both want control over LD_PRELOAD
-	# https://bugs.gentoo.org/673016
-	sed -i -e 's/test_generate_gir_with_address_sanitizer/_&/' run_unittests.py || die
-
-	distutils-r1_python_prepare_all
-}
-
-src_test() {
-	if tc-is-gcc; then
-		# LTO fails for static libs because the bfd plugin in missing.
-		# Remove this workaround after sys-devel/gcc-config-2.0 is stable.
-		# https://bugs.gentoo.org/672706
-		tc-getPROG AR gcc-ar >/dev/null
-	fi
-	distutils-r1_src_test
-}
-
-python_test() {
-	(
-		# test_meson_installed
-		unset PYTHONDONTWRITEBYTECODE
-
-		# test_cross_file_system_paths
-		unset XDG_DATA_HOME
-
-		${EPYTHON} -u run_tests.py
-	) || die "Testing failed with ${EPYTHON}"
-}
-
-python_install_all() {
-	distutils-r1_python_install_all
-
-	insinto /usr/share/vim/vimfiles
-	doins -r data/syntax-highlighting/vim/{ftdetect,indent,syntax}
-	insinto /usr/share/zsh/site-functions
-	doins data/shell-completions/zsh/_meson
-}
diff --git a/dev-util/meson/metadata.xml b/dev-util/meson/metadata.xml
deleted file mode 100644
index 301e400..0000000
--- a/dev-util/meson/metadata.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-	<maintainer type="person">
-		<email>williamh@gentoo.org</email>
-		<name>William Hubbs</name>
-	</maintainer>
-	<maintainer type="person">
-		<email>floppym@gentoo.org</email>
-		<name>Mike Gilbert</name>
-	</maintainer>
-	<upstream>
-		<remote-id type="pypi">meson</remote-id>
-	</upstream>
-</pkgmetadata>
diff --git a/dev-util/perf/files/5.3.7-Allow-no-CoreSight-sink.patch b/dev-util/perf/files/5.3.7-Allow-no-CoreSight-sink.patch
new file mode 100644
index 0000000..fa0383b
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-Allow-no-CoreSight-sink.patch
@@ -0,0 +1,44 @@
+From 47446212832871e66f3b5fbf021c148eced2e24c Mon Sep 17 00:00:00 2001
+From: Mike Leach <mike.leach@linaro.org>
+Date: Tue, 16 Jun 2020 17:40:41 +0100
+Subject: [PATCH] perf cs-etm: Allow no CoreSight sink to be specified on
+ command line
+
+Adjust the handling of the session sink selection to allow no sink to be
+selected on the command line. This then forwards the sink selection to
+the CoreSight infrastructure which will attempt to select a sink based
+on the default sink select priorities.
+
+Signed-off-by: Mike Leach <mike.leach@linaro.org>
+Tested-by: Leo Yan <leo.yan@linaro.org>
+Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
+Cc: coresight@lists.linaro.org
+Cc: linux-arm-kernel@lists.infradead.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/arch/arm/util/cs-etm.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
+index cea5e33d61d2..cad7bf783413 100644
+--- a/tools/perf/arch/arm/util/cs-etm.c
++++ b/tools/perf/arch/arm/util/cs-etm.c
+@@ -243,10 +243,10 @@ static int cs_etm_set_sink_attr(struct perf_pmu *pmu,
+ 	}
+ 
+ 	/*
+-	 * No sink was provided on the command line - for _now_ treat
+-	 * this as an error.
++	 * No sink was provided on the command line - allow the CoreSight
++	 * system to look for a default
+ 	 */
+-	return ret;
++	return 0;
+ }
+ 
+ static int cs_etm_recording_options(struct auxtrace_record *itr,
+-- 
+2.32.0.272.g935e593368-goog
+
diff --git a/dev-util/perf/files/5.3.7-Consolidate-symbol-fixup-issue.patch b/dev-util/perf/files/5.3.7-Consolidate-symbol-fixup-issue.patch
new file mode 100644
index 0000000..4da28ca
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-Consolidate-symbol-fixup-issue.patch
@@ -0,0 +1,176 @@
+Diff for sym-handling.c modified to delete the 5.3.7 version of the
+file.
+
+From 7eec00a74720d35b6d89505350e5b08ecef376c0 Mon Sep 17 00:00:00 2001
+From: Leo Yan <leo.yan@linaro.org>
+Date: Fri, 6 Mar 2020 09:57:58 +0800
+Subject: [PATCH] perf symbols: Consolidate symbol fixup issue
+
+After copying Arm64's perf archive with object files and perf.data file
+to x86 laptop, the x86's perf kernel symbol resolution fails.  It
+outputs 'unknown' for all symbols parsing.
+
+This issue is root caused by the function elf__needs_adjust_symbols(),
+x86 perf tool uses one weak version, Arm64 (and powerpc) has rewritten
+their own version.  elf__needs_adjust_symbols() decides if need to parse
+symbols with the relative offset address; but x86 building uses the weak
+function which misses to check for the elf type 'ET_DYN', so that it
+cannot parse symbols in Arm DSOs due to the wrong result from
+elf__needs_adjust_symbols().
+
+The DSO parsing should not depend on any specific architecture perf
+building; e.g. x86 perf tool can parse Arm and Arm64 DSOs, vice versa.
+And confirmed by Naveen N. Rao that powerpc64 kernels are not being
+built as ET_DYN anymore and change to ET_EXEC.
+
+This patch removes the arch specific functions for Arm64 and powerpc and
+changes elf__needs_adjust_symbols() as a common function.
+
+In the common elf__needs_adjust_symbols(), it checks an extra condition
+'ET_DYN' for elf header type.  With this fixing, the Arm64 DSO can be
+parsed properly with x86's perf tool.
+
+Before:
+
+  # perf script
+  main 3258 1 branches:                0 [unknown] ([unknown]) => ffff800010c4665c [unknown] ([kernel.kallsyms])
+  main 3258 1 branches: ffff800010c46670 [unknown] ([kernel.kallsyms]) => ffff800010c4eaec [unknown] ([kernel.kallsyms])
+  main 3258 1 branches: ffff800010c4eaec [unknown] ([kernel.kallsyms]) => ffff800010c4eb00 [unknown] ([kernel.kallsyms])
+  main 3258 1 branches: ffff800010c4eb08 [unknown] ([kernel.kallsyms]) => ffff800010c4e780 [unknown] ([kernel.kallsyms])
+  main 3258 1 branches: ffff800010c4e7a0 [unknown] ([kernel.kallsyms]) => ffff800010c4eeac [unknown] ([kernel.kallsyms])
+  main 3258 1 branches: ffff800010c4eebc [unknown] ([kernel.kallsyms]) => ffff800010c4ed80 [unknown] ([kernel.kallsyms])
+
+After:
+
+  # perf script
+  main 3258 1 branches:                0 [unknown] ([unknown]) => ffff800010c4665c coresight_timeout+0x54 ([kernel.kallsyms])
+  main 3258 1 branches: ffff800010c46670 coresight_timeout+0x68 ([kernel.kallsyms]) => ffff800010c4eaec etm4_enable_hw+0x3cc ([kernel.kallsyms])
+  main 3258 1 branches: ffff800010c4eaec etm4_enable_hw+0x3cc ([kernel.kallsyms]) => ffff800010c4eb00 etm4_enable_hw+0x3e0 ([kernel.kallsyms])
+  main 3258 1 branches: ffff800010c4eb08 etm4_enable_hw+0x3e8 ([kernel.kallsyms]) => ffff800010c4e780 etm4_enable_hw+0x60 ([kernel.kallsyms])
+  main 3258 1 branches: ffff800010c4e7a0 etm4_enable_hw+0x80 ([kernel.kallsyms]) => ffff800010c4eeac etm4_enable+0x2d4 ([kernel.kallsyms])
+  main 3258 1 branches: ffff800010c4eebc etm4_enable+0x2e4 ([kernel.kallsyms]) => ffff800010c4ed80 etm4_enable+0x1a8 ([kernel.kallsyms])
+
+v3: Changed to check for ET_DYN across all architectures.
+
+v2: Fixed Arm64 and powerpc native building.
+
+Reported-by: Mike Leach <mike.leach@linaro.org>
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Reviewed-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
+Acked-by: Jiri Olsa <jolsa@redhat.com>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Allison Randal <allison@lohutok.net>
+Cc: Enrico Weigelt <info@metux.net>
+Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
+Cc: John Garry <john.garry@huawei.com>
+Cc: Kate Stewart <kstewart@linuxfoundation.org>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Mathieu Poirier <mathieu.poirier@linaro.org>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Cc: Thomas Richter <tmricht@linux.vnet.ibm.com>
+Link: http://lore.kernel.org/lkml/20200306015759.10084-1-leo.yan@linaro.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/arch/arm64/util/Build            |  1 -
+ tools/perf/arch/arm64/util/sym-handling.c   | 19 -------------------
+ tools/perf/arch/powerpc/util/Build          |  1 -
+ tools/perf/arch/powerpc/util/sym-handling.c | 10 ----------
+ tools/perf/util/symbol-elf.c                | 10 ++++++++--
+ 5 files changed, 8 insertions(+), 33 deletions(-)
+ delete mode 100644 tools/perf/arch/arm64/util/sym-handling.c
+
+diff --git a/tools/perf/arch/arm64/util/Build b/tools/perf/arch/arm64/util/Build
+index 0a7782c61209..789956f76d85 100644
+--- a/tools/perf/arch/arm64/util/Build
++++ b/tools/perf/arch/arm64/util/Build
+@@ -1,5 +1,4 @@
+ perf-y += header.o
+-perf-y += sym-handling.o
+ perf-$(CONFIG_DWARF)     += dwarf-regs.o
+ perf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o
+ perf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o
+diff --git a/tools/perf/arch/arm64/util/sym-handling.c b/tools/perf/arch/arm64/util/sym-handling.c
+deleted file mode 100644
+index 8dfa3e5229f1..000000000000
+--- a/tools/perf/arch/arm64/util/sym-handling.c
++++ /dev/null
+@@ -1,20 +0,0 @@
+-// SPDX-License-Identifier: GPL-2.0-only
+-/*
+- *
+- * Copyright (C) 2015 Naveen N. Rao, IBM Corporation
+- */
+-
+-#include "debug.h"
+-#include "symbol.h"
+-#include "map.h"
+-#include "probe-event.h"
+-#include "probe-file.h"
+-
+-#ifdef HAVE_LIBELF_SUPPORT
+-bool elf__needs_adjust_symbols(GElf_Ehdr ehdr)
+-{
+-	return ehdr.e_type == ET_EXEC ||
+-	       ehdr.e_type == ET_REL ||
+-	       ehdr.e_type == ET_DYN;
+-}
+-#endif
+diff --git a/tools/perf/arch/powerpc/util/Build b/tools/perf/arch/powerpc/util/Build
+index 7cf0b8803097..e5c9504f8586 100644
+--- a/tools/perf/arch/powerpc/util/Build
++++ b/tools/perf/arch/powerpc/util/Build
+@@ -1,5 +1,4 @@
+ perf-y += header.o
+-perf-y += sym-handling.o
+ perf-y += kvm-stat.o
+ perf-y += perf_regs.o
+ perf-y += mem-events.o
+diff --git a/tools/perf/arch/powerpc/util/sym-handling.c b/tools/perf/arch/powerpc/util/sym-handling.c
+index abb7a12d8f93..0856b32f9e08 100644
+--- a/tools/perf/arch/powerpc/util/sym-handling.c
++++ b/tools/perf/arch/powerpc/util/sym-handling.c
+@@ -10,16 +10,6 @@
+ #include "probe-event.h"
+ #include "probe-file.h"
+ 
+-#ifdef HAVE_LIBELF_SUPPORT
+-bool elf__needs_adjust_symbols(GElf_Ehdr ehdr)
+-{
+-	return ehdr.e_type == ET_EXEC ||
+-	       ehdr.e_type == ET_REL ||
+-	       ehdr.e_type == ET_DYN;
+-}
+-
+-#endif
+-
+ int arch__choose_best_symbol(struct symbol *syma,
+ 			     struct symbol *symb __maybe_unused)
+ {
+diff --git a/tools/perf/util/symbol-elf.c b/tools/perf/util/symbol-elf.c
+index 1965aefccb02..be5b493f8284 100644
+--- a/tools/perf/util/symbol-elf.c
++++ b/tools/perf/util/symbol-elf.c
+@@ -704,9 +704,15 @@ void symsrc__destroy(struct symsrc *ss)
+ 	close(ss->fd);
+ }
+ 
+-bool __weak elf__needs_adjust_symbols(GElf_Ehdr ehdr)
++bool elf__needs_adjust_symbols(GElf_Ehdr ehdr)
+ {
+-	return ehdr.e_type == ET_EXEC || ehdr.e_type == ET_REL;
++	/*
++	 * Usually vmlinux is an ELF file with type ET_EXEC for most
++	 * architectures; except Arm64 kernel is linked with option
++	 * '-share', so need to check type ET_DYN.
++	 */
++	return ehdr.e_type == ET_EXEC || ehdr.e_type == ET_REL ||
++	       ehdr.e_type == ET_DYN;
+ }
+ 
+ int symsrc__init(struct symsrc *ss, struct dso *dso, const char *name,
+-- 
+2.32.0.272.g935e593368-goog
+
diff --git a/dev-util/perf/files/5.3.7-Correct-event-attribute-sizes.patch b/dev-util/perf/files/5.3.7-Correct-event-attribute-sizes.patch
new file mode 100644
index 0000000..146f07e
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-Correct-event-attribute-sizes.patch
@@ -0,0 +1,48 @@
+The patch is modified to resolve the conflicts of renamed
+evsel->attr.size which became evsel->core.attr.size in ToT.
+
+From 648b054a4647cd62e13ba79f398b8b97a7c82b19 Mon Sep 17 00:00:00 2001
+From: Al Grant <al.grant@arm.com>
+Date: Tue, 24 Nov 2020 19:58:17 +0000
+Subject: [PATCH] perf inject: Correct event attribute sizes
+
+When 'perf inject' reads a perf.data file from an older version of perf,
+it writes event attributes into the output with the original size field,
+but lays them out as if they had the size currently used. Readers see a
+corrupt file. Update the size field to match the layout.
+
+Signed-off-by: Al Grant <al.grant@foss.arm.com>
+Acked-by: Jiri Olsa <jolsa@redhat.com>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Link: http://lore.kernel.org/lkml/20201124195818.30603-1-al.grant@arm.com
+Signed-off-by: Denis Nikitin <denik@chromium.org>
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/util/header.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/tools/perf/util/header.c b/tools/perf/util/header.c
+index 062383e225a3..c4ed3dc2c8f4 100644
+--- a/tools/perf/util/header.c
++++ b/tools/perf/util/header.c
+@@ -3323,6 +3323,14 @@ int perf_session__write_header(struct perf_session *session,
+ 	attr_offset = lseek(ff.fd, 0, SEEK_CUR);
+ 
+ 	evlist__for_each_entry(evlist, evsel) {
++		if (evsel->attr.size < sizeof(evsel->attr)) {
++			/*
++			 * We are likely in "perf inject" and have read
++			 * from an older file. Update attr size so that
++			 * reader gets the right offset to the ids.
++			 */
++			evsel->attr.size = sizeof(evsel->attr);
++		}
+ 		f_attr = (struct perf_file_attr){
+ 			.attr = evsel->core.attr,
+ 			.ids  = {
+-- 
+2.30.0.478.g8a0d178c01-goog
+
diff --git a/dev-util/perf/files/5.3.7-Don-t-install-self-tests.patch b/dev-util/perf/files/5.3.7-Don-t-install-self-tests.patch
index acb2263..9ce20bd 100644
--- a/dev-util/perf/files/5.3.7-Don-t-install-self-tests.patch
+++ b/dev-util/perf/files/5.3.7-Don-t-install-self-tests.patch
@@ -10,10 +10,10 @@
  tools/perf/Makefile.perf | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
-diff --git a/Makefile.perf b/Makefile.perf
+diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf
 index 91ef44bfaf3e..a560ae569dc4 100644
---- a/Makefile.perf
-+++ b/Makefile.perf
+--- a/tools/perf/Makefile.perf
++++ b/tools/perf/Makefile.perf
 @@ -781,7 +781,7 @@ install-tests: all install-gtk
  		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/lib'; \
  		$(INSTALL) tests/shell/lib/*.sh '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/lib'
diff --git a/dev-util/perf/files/5.3.7-EL2-fix-1-Update-ETM-metadata-format.patch b/dev-util/perf/files/5.3.7-EL2-fix-1-Update-ETM-metadata-format.patch
new file mode 100644
index 0000000..3307e91
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-EL2-fix-1-Update-ETM-metadata-format.patch
@@ -0,0 +1,489 @@
+Added one local change in the patch to resolve the conflict:
+- replaced __u64 with u64 in cs_etm__print_auxtrace_info
+
+From 42b2b570b34afb5fb9dc16ac77cb332194136a85 Mon Sep 17 00:00:00 2001
+From: Mike Leach <mike.leach@linaro.org>
+Date: Wed, 24 Feb 2021 09:48:30 -0700
+Subject: [PATCH] perf cs-etm: Update ETM metadata format
+
+The current fixed metadata version format (version 0), means that adding
+metadata parameter items renders files from a previous version of perf
+unreadable. Per CPU parameters appear in a fixed order, but there is no
+field to indicate the number of ETM parameters per CPU.
+
+This patch updates the per CPU parameter blocks to include a NR_PARAMs
+value which indicates the number of parameters in the block.
+
+The header version is incremented to 1. Fixed ordering is retained,
+new ETM parameters are added to the end of the list.
+
+The reader code is updated to be able to read current version 0 files,
+For version 1, the reader will read the number of parameters in the
+per CPU block. This allows the reader to process older or newer files
+that may have different numbers of parameters than in use at the
+time perf was built.
+
+Signed-off-by: Mike Leach <mike.leach@linaro.org>
+Reviewed-by: Leo Yan <leo.yan@linaro.org>
+Tested-by: Leo Yan <leo.yan@linaro.org>
+Link: https://lore.kernel.org/r/20210202214040.32349-1-mike.leach@linaro.org
+Link: https://lore.kernel.org/r/20210224164835.3497311-2-mathieu.poirier@linaro.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/arch/arm/util/cs-etm.c |   7 +-
+ tools/perf/util/cs-etm.c          | 235 ++++++++++++++++++++++++------
+ tools/perf/util/cs-etm.h          |  30 +++-
+ 3 files changed, 223 insertions(+), 49 deletions(-)
+
+diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
+index bd446aba64f7..b0470f2a955a 100644
+--- a/tools/perf/arch/arm/util/cs-etm.c
++++ b/tools/perf/arch/arm/util/cs-etm.c
+@@ -572,7 +572,7 @@ static void cs_etm_get_metadata(int cpu, u32 *offset,
+ 				struct auxtrace_record *itr,
+ 				struct perf_record_auxtrace_info *info)
+ {
+-	u32 increment;
++	u32 increment, nr_trc_params;
+ 	u64 magic;
+ 	struct cs_etm_recording *ptr =
+ 			container_of(itr, struct cs_etm_recording, itr);
+@@ -607,6 +607,7 @@ static void cs_etm_get_metadata(int cpu, u32 *offset,
+ 
+ 		/* How much space was used */
+ 		increment = CS_ETMV4_PRIV_MAX;
++		nr_trc_params = CS_ETMV4_PRIV_MAX - CS_ETMV4_TRCCONFIGR;
+ 	} else {
+ 		magic = __perf_cs_etmv3_magic;
+ 		/* Get configuration register */
+@@ -624,11 +625,13 @@ static void cs_etm_get_metadata(int cpu, u32 *offset,
+ 
+ 		/* How much space was used */
+ 		increment = CS_ETM_PRIV_MAX;
++		nr_trc_params = CS_ETM_PRIV_MAX - CS_ETM_ETMCR;
+ 	}
+ 
+ 	/* Build generic header portion */
+ 	info->priv[*offset + CS_ETM_MAGIC] = magic;
+ 	info->priv[*offset + CS_ETM_CPU] = cpu;
++	info->priv[*offset + CS_ETM_NR_TRC_PARAMS] = nr_trc_params;
+ 	/* Where the next CPU entry should start from */
+ 	*offset += increment;
+ }
+@@ -674,7 +677,7 @@ static int cs_etm_info_fill(struct auxtrace_record *itr,
+ 
+ 	/* First fill out the session header */
+ 	info->type = PERF_AUXTRACE_CS_ETM;
+-	info->priv[CS_HEADER_VERSION_0] = 0;
++	info->priv[CS_HEADER_VERSION] = CS_HEADER_CURRENT_VERSION;
+ 	info->priv[CS_PMU_TYPE_CPUS] = type << 32;
+ 	info->priv[CS_PMU_TYPE_CPUS] |= nr_cpu;
+ 	info->priv[CS_ETM_SNAPSHOT] = ptr->snapshot_mode;
+diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
+index a2a369e2fbb6..ee32d023e9bd 100644
+--- a/tools/perf/util/cs-etm.c
++++ b/tools/perf/util/cs-etm.c
+@@ -2435,7 +2435,7 @@ static bool cs_etm__is_timeless_decoding(struct cs_etm_auxtrace *etm)
+ }
+ 
+ static const char * const cs_etm_global_header_fmts[] = {
+-	[CS_HEADER_VERSION_0]	= "	Header version		       %llx\n",
++	[CS_HEADER_VERSION]	= "	Header version		       %llx\n",
+ 	[CS_PMU_TYPE_CPUS]	= "	PMU type/num cpus	       %llx\n",
+ 	[CS_ETM_SNAPSHOT]	= "	Snapshot		       %llx\n",
+ };
+@@ -2443,6 +2443,7 @@ static const char * const cs_etm_global_header_fmts[] = {
+ static const char * const cs_etm_priv_fmts[] = {
+ 	[CS_ETM_MAGIC]		= "	Magic number		       %llx\n",
+ 	[CS_ETM_CPU]		= "	CPU			       %lld\n",
++	[CS_ETM_NR_TRC_PARAMS]	= "	NR_TRC_PARAMS		       %llx\n",
+ 	[CS_ETM_ETMCR]		= "	ETMCR			       %llx\n",
+ 	[CS_ETM_ETMTRACEIDR]	= "	ETMTRACEIDR		       %llx\n",
+ 	[CS_ETM_ETMCCER]	= "	ETMCCER			       %llx\n",
+@@ -2452,6 +2453,7 @@ static const char * const cs_etm_priv_fmts[] = {
+ static const char * const cs_etmv4_priv_fmts[] = {
+ 	[CS_ETM_MAGIC]		= "	Magic number		       %llx\n",
+ 	[CS_ETM_CPU]		= "	CPU			       %lld\n",
++	[CS_ETM_NR_TRC_PARAMS]	= "	NR_TRC_PARAMS		       %llx\n",
+ 	[CS_ETMV4_TRCCONFIGR]	= "	TRCCONFIGR		       %llx\n",
+ 	[CS_ETMV4_TRCTRACEIDR]	= "	TRCTRACEIDR		       %llx\n",
+ 	[CS_ETMV4_TRCIDR0]	= "	TRCIDR0			       %llx\n",
+@@ -2461,26 +2463,167 @@ static const char * const cs_etmv4_priv_fmts[] = {
+ 	[CS_ETMV4_TRCAUTHSTATUS] = "	TRCAUTHSTATUS		       %llx\n",
+ };
+ 
+-static void cs_etm__print_auxtrace_info(u64 *val, int num)
++static const char * const param_unk_fmt =
++	"	Unknown parameter [%d]	       %llx\n";
++static const char * const magic_unk_fmt =
++	"	Magic number Unknown	       %llx\n";
++
++static int cs_etm__print_cpu_metadata_v0(__u64 *val, int *offset)
+ {
+-	int i, j, cpu = 0;
++	int i = *offset, j, nr_params = 0, fmt_offset;
++	__u64 magic;
+ 
+-	for (i = 0; i < CS_HEADER_VERSION_0_MAX; i++)
+-		fprintf(stdout, cs_etm_global_header_fmts[i], val[i]);
++	/* check magic value */
++	magic = val[i + CS_ETM_MAGIC];
++	if ((magic != __perf_cs_etmv3_magic) &&
++	    (magic != __perf_cs_etmv4_magic)) {
++		/* failure - note bad magic value */
++		fprintf(stdout, magic_unk_fmt, magic);
++		return -EINVAL;
++	}
++
++	/* print common header block */
++	fprintf(stdout, cs_etm_priv_fmts[CS_ETM_MAGIC], val[i++]);
++	fprintf(stdout, cs_etm_priv_fmts[CS_ETM_CPU], val[i++]);
++
++	if (magic == __perf_cs_etmv3_magic) {
++		nr_params = CS_ETM_NR_TRC_PARAMS_V0;
++		fmt_offset = CS_ETM_ETMCR;
++		/* after common block, offset format index past NR_PARAMS */
++		for (j = fmt_offset; j < nr_params + fmt_offset; j++, i++)
++			fprintf(stdout, cs_etm_priv_fmts[j], val[i]);
++	} else if (magic == __perf_cs_etmv4_magic) {
++		nr_params = CS_ETMV4_NR_TRC_PARAMS_V0;
++		fmt_offset = CS_ETMV4_TRCCONFIGR;
++		/* after common block, offset format index past NR_PARAMS */
++		for (j = fmt_offset; j < nr_params + fmt_offset; j++, i++)
++			fprintf(stdout, cs_etmv4_priv_fmts[j], val[i]);
++	}
++	*offset = i;
++	return 0;
++}
++
++static int cs_etm__print_cpu_metadata_v1(__u64 *val, int *offset)
++{
++	int i = *offset, j, total_params = 0;
++	__u64 magic;
++
++	magic = val[i + CS_ETM_MAGIC];
++	/* total params to print is NR_PARAMS + common block size for v1 */
++	total_params = val[i + CS_ETM_NR_TRC_PARAMS] + CS_ETM_COMMON_BLK_MAX_V1;
+ 
+-	for (i = CS_HEADER_VERSION_0_MAX; cpu < num; cpu++) {
+-		if (val[i] == __perf_cs_etmv3_magic)
+-			for (j = 0; j < CS_ETM_PRIV_MAX; j++, i++)
++	if (magic == __perf_cs_etmv3_magic) {
++		for (j = 0; j < total_params; j++, i++) {
++			/* if newer record - could be excess params */
++			if (j >= CS_ETM_PRIV_MAX)
++				fprintf(stdout, param_unk_fmt, j, val[i]);
++			else
+ 				fprintf(stdout, cs_etm_priv_fmts[j], val[i]);
+-		else if (val[i] == __perf_cs_etmv4_magic)
+-			for (j = 0; j < CS_ETMV4_PRIV_MAX; j++, i++)
++		}
++	} else if (magic == __perf_cs_etmv4_magic) {
++		for (j = 0; j < total_params; j++, i++) {
++			/* if newer record - could be excess params */
++			if (j >= CS_ETMV4_PRIV_MAX)
++				fprintf(stdout, param_unk_fmt, j, val[i]);
++			else
+ 				fprintf(stdout, cs_etmv4_priv_fmts[j], val[i]);
+-		else
+-			/* failure.. return */
++		}
++	} else {
++		/* failure - note bad magic value and error out */
++		fprintf(stdout, magic_unk_fmt, magic);
++		return -EINVAL;
++	}
++	*offset = i;
++	return 0;
++}
++
++static void cs_etm__print_auxtrace_info(__u64 *val, int num)
++{
++	int i, cpu = 0, version, err;
++
++	/* bail out early on bad header version */
++	version = val[0];
++	if (version > CS_HEADER_CURRENT_VERSION) {
++		/* failure.. return */
++		fprintf(stdout, "	Unknown Header Version = %x, ", version);
++		fprintf(stdout, "Version supported <= %x\n", CS_HEADER_CURRENT_VERSION);
++		return;
++	}
++
++	for (i = 0; i < CS_HEADER_VERSION_MAX; i++)
++		fprintf(stdout, cs_etm_global_header_fmts[i], val[i]);
++
++	for (i = CS_HEADER_VERSION_MAX; cpu < num; cpu++) {
++		if (version == 0)
++			err = cs_etm__print_cpu_metadata_v0(val, &i);
++		else if (version == 1)
++			err = cs_etm__print_cpu_metadata_v1(val, &i);
++		if (err)
+ 			return;
+ 	}
+ }
+ 
++/*
++ * Read a single cpu parameter block from the auxtrace_info priv block.
++ *
++ * For version 1 there is a per cpu nr_params entry. If we are handling
++ * version 1 file, then there may be less, the same, or more params
++ * indicated by this value than the compile time number we understand.
++ *
++ * For a version 0 info block, there are a fixed number, and we need to
++ * fill out the nr_param value in the metadata we create.
++ */
++static u64 *cs_etm__create_meta_blk(u64 *buff_in, int *buff_in_offset,
++				    int out_blk_size, int nr_params_v0)
++{
++	u64 *metadata = NULL;
++	int hdr_version;
++	int nr_in_params, nr_out_params, nr_cmn_params;
++	int i, k;
++
++	metadata = zalloc(sizeof(*metadata) * out_blk_size);
++	if (!metadata)
++		return NULL;
++
++	/* read block current index & version */
++	i = *buff_in_offset;
++	hdr_version = buff_in[CS_HEADER_VERSION];
++
++	if (!hdr_version) {
++	/* read version 0 info block into a version 1 metadata block  */
++		nr_in_params = nr_params_v0;
++		metadata[CS_ETM_MAGIC] = buff_in[i + CS_ETM_MAGIC];
++		metadata[CS_ETM_CPU] = buff_in[i + CS_ETM_CPU];
++		metadata[CS_ETM_NR_TRC_PARAMS] = nr_in_params;
++		/* remaining block params at offset +1 from source */
++		for (k = CS_ETM_COMMON_BLK_MAX_V1 - 1; k < nr_in_params; k++)
++			metadata[k + 1] = buff_in[i + k];
++		/* version 0 has 2 common params */
++		nr_cmn_params = 2;
++	} else {
++	/* read version 1 info block - input and output nr_params may differ */
++		/* version 1 has 3 common params */
++		nr_cmn_params = 3;
++		nr_in_params = buff_in[i + CS_ETM_NR_TRC_PARAMS];
++
++		/* if input has more params than output - skip excess */
++		nr_out_params = nr_in_params + nr_cmn_params;
++		if (nr_out_params > out_blk_size)
++			nr_out_params = out_blk_size;
++
++		for (k = CS_ETM_MAGIC; k < nr_out_params; k++)
++			metadata[k] = buff_in[i + k];
++
++		/* record the actual nr params we copied */
++		metadata[CS_ETM_NR_TRC_PARAMS] = nr_out_params - nr_cmn_params;
++	}
++
++	/* adjust in offset by number of in params used */
++	i += nr_in_params + nr_cmn_params;
++	*buff_in_offset = i;
++	return metadata;
++}
++
+ int cs_etm__process_auxtrace_info(union perf_event *event,
+ 				  struct perf_session *session)
+ {
+@@ -2492,11 +2635,12 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
+ 	int info_header_size;
+ 	int total_size = auxtrace_info->header.size;
+ 	int priv_size = 0;
+-	int num_cpu;
+-	int err = 0, idx = -1;
+-	int i, j, k;
++	int num_cpu, trcidr_idx;
++	int err = 0;
++	int i, j;
+ 	u64 *ptr, *hdr = NULL;
+ 	u64 **metadata = NULL;
++	u64 hdr_version;
+ 
+ 	/*
+ 	 * sizeof(auxtrace_info_event::type) +
+@@ -2512,16 +2656,21 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
+ 	/* First the global part */
+ 	ptr = (u64 *) auxtrace_info->priv;
+ 
+-	/* Look for version '0' of the header */
+-	if (ptr[0] != 0)
++	/* Look for version of the header */
++	hdr_version = ptr[0];
++	if (hdr_version > CS_HEADER_CURRENT_VERSION) {
++		/* print routine will print an error on bad version */
++		if (dump_trace)
++			cs_etm__print_auxtrace_info(auxtrace_info->priv, 0);
+ 		return -EINVAL;
++	}
+ 
+-	hdr = zalloc(sizeof(*hdr) * CS_HEADER_VERSION_0_MAX);
++	hdr = zalloc(sizeof(*hdr) * CS_HEADER_VERSION_MAX);
+ 	if (!hdr)
+ 		return -ENOMEM;
+ 
+ 	/* Extract header information - see cs-etm.h for format */
+-	for (i = 0; i < CS_HEADER_VERSION_0_MAX; i++)
++	for (i = 0; i < CS_HEADER_VERSION_MAX; i++)
+ 		hdr[i] = ptr[i];
+ 	num_cpu = hdr[CS_PMU_TYPE_CPUS] & 0xffffffff;
+ 	pmu_type = (unsigned int) ((hdr[CS_PMU_TYPE_CPUS] >> 32) &
+@@ -2552,35 +2701,31 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
+ 	 */
+ 	for (j = 0; j < num_cpu; j++) {
+ 		if (ptr[i] == __perf_cs_etmv3_magic) {
+-			metadata[j] = zalloc(sizeof(*metadata[j]) *
+-					     CS_ETM_PRIV_MAX);
+-			if (!metadata[j]) {
+-				err = -ENOMEM;
+-				goto err_free_metadata;
+-			}
+-			for (k = 0; k < CS_ETM_PRIV_MAX; k++)
+-				metadata[j][k] = ptr[i + k];
++			metadata[j] =
++				cs_etm__create_meta_blk(ptr, &i,
++							CS_ETM_PRIV_MAX,
++							CS_ETM_NR_TRC_PARAMS_V0);
+ 
+ 			/* The traceID is our handle */
+-			idx = metadata[j][CS_ETM_ETMTRACEIDR];
+-			i += CS_ETM_PRIV_MAX;
++			trcidr_idx = CS_ETM_ETMTRACEIDR;
++
+ 		} else if (ptr[i] == __perf_cs_etmv4_magic) {
+-			metadata[j] = zalloc(sizeof(*metadata[j]) *
+-					     CS_ETMV4_PRIV_MAX);
+-			if (!metadata[j]) {
+-				err = -ENOMEM;
+-				goto err_free_metadata;
+-			}
+-			for (k = 0; k < CS_ETMV4_PRIV_MAX; k++)
+-				metadata[j][k] = ptr[i + k];
++			metadata[j] =
++				cs_etm__create_meta_blk(ptr, &i,
++							CS_ETMV4_PRIV_MAX,
++							CS_ETMV4_NR_TRC_PARAMS_V0);
+ 
+ 			/* The traceID is our handle */
+-			idx = metadata[j][CS_ETMV4_TRCTRACEIDR];
+-			i += CS_ETMV4_PRIV_MAX;
++			trcidr_idx = CS_ETMV4_TRCTRACEIDR;
++		}
++
++		if (!metadata[j]) {
++			err = -ENOMEM;
++			goto err_free_metadata;
+ 		}
+ 
+ 		/* Get an RB node for this CPU */
+-		inode = intlist__findnew(traceid_list, idx);
++		inode = intlist__findnew(traceid_list, metadata[j][trcidr_idx]);
+ 
+ 		/* Something went wrong, no need to continue */
+ 		if (!inode) {
+@@ -2601,7 +2746,7 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
+ 	}
+ 
+ 	/*
+-	 * Each of CS_HEADER_VERSION_0_MAX, CS_ETM_PRIV_MAX and
++	 * Each of CS_HEADER_VERSION_MAX, CS_ETM_PRIV_MAX and
+ 	 * CS_ETMV4_PRIV_MAX mark how many double words are in the
+ 	 * global metadata, and each cpu's metadata respectively.
+ 	 * The following tests if the correct number of double words was
+@@ -2703,6 +2848,12 @@ int cs_etm__process_auxtrace_info(union perf_event *event,
+ 	intlist__delete(traceid_list);
+ err_free_hdr:
+ 	zfree(&hdr);
+-
++	/*
++	 * At this point, as a minimum we have valid header. Dump the rest of
++	 * the info section - the print routines will error out on structural
++	 * issues.
++	 */
++	if (dump_trace)
++		cs_etm__print_auxtrace_info(auxtrace_info->priv, num_cpu);
+ 	return err;
+ }
+diff --git a/tools/perf/util/cs-etm.h b/tools/perf/util/cs-etm.h
+index 4ad925d6d799..e153d02df0de 100644
+--- a/tools/perf/util/cs-etm.h
++++ b/tools/perf/util/cs-etm.h
+@@ -17,23 +17,37 @@ struct perf_session;
+  */
+ enum {
+ 	/* Starting with 0x0 */
+-	CS_HEADER_VERSION_0,
++	CS_HEADER_VERSION,
+ 	/* PMU->type (32 bit), total # of CPUs (32 bit) */
+ 	CS_PMU_TYPE_CPUS,
+ 	CS_ETM_SNAPSHOT,
+-	CS_HEADER_VERSION_0_MAX,
++	CS_HEADER_VERSION_MAX,
+ };
+ 
++/*
++ * Update the version for new format.
++ *
++ * New version 1 format adds a param count to the per cpu metadata.
++ * This allows easy adding of new metadata parameters.
++ * Requires that new params always added after current ones.
++ * Also allows client reader to handle file versions that are different by
++ * checking the number of params in the file vs the number expected.
++ */
++#define CS_HEADER_CURRENT_VERSION 1
++
+ /* Beginning of header common to both ETMv3 and V4 */
+ enum {
+ 	CS_ETM_MAGIC,
+ 	CS_ETM_CPU,
++	/* Number of trace config params in following ETM specific block */
++	CS_ETM_NR_TRC_PARAMS,
++	CS_ETM_COMMON_BLK_MAX_V1,
+ };
+ 
+ /* ETMv3/PTM metadata */
+ enum {
+ 	/* Dynamic, configurable parameters */
+-	CS_ETM_ETMCR = CS_ETM_CPU + 1,
++	CS_ETM_ETMCR = CS_ETM_COMMON_BLK_MAX_V1,
+ 	CS_ETM_ETMTRACEIDR,
+ 	/* RO, taken from sysFS */
+ 	CS_ETM_ETMCCER,
+@@ -41,10 +55,13 @@ enum {
+ 	CS_ETM_PRIV_MAX,
+ };
+ 
++/* define fixed version 0 length - allow new format reader to read old files. */
++#define CS_ETM_NR_TRC_PARAMS_V0 (CS_ETM_ETMIDR - CS_ETM_ETMCR + 1)
++
+ /* ETMv4 metadata */
+ enum {
+ 	/* Dynamic, configurable parameters */
+-	CS_ETMV4_TRCCONFIGR = CS_ETM_CPU + 1,
++	CS_ETMV4_TRCCONFIGR = CS_ETM_COMMON_BLK_MAX_V1,
+ 	CS_ETMV4_TRCTRACEIDR,
+ 	/* RO, taken from sysFS */
+ 	CS_ETMV4_TRCIDR0,
+@@ -55,6 +72,9 @@ enum {
+ 	CS_ETMV4_PRIV_MAX,
+ };
+ 
++/* define fixed version 0 length - allow new format reader to read old files. */
++#define CS_ETMV4_NR_TRC_PARAMS_V0 (CS_ETMV4_TRCAUTHSTATUS - CS_ETMV4_TRCCONFIGR + 1)
++
+ /*
+  * ETMv3 exception encoding number:
+  * See Embedded Trace Macrocell spcification (ARM IHI 0014Q)
+@@ -162,7 +182,7 @@ struct cs_etm_packet_queue {
+ 
+ #define BMVAL(val, lsb, msb)	((val & GENMASK(msb, lsb)) >> lsb)
+ 
+-#define CS_ETM_HEADER_SIZE (CS_HEADER_VERSION_0_MAX * sizeof(u64))
++#define CS_ETM_HEADER_SIZE (CS_HEADER_VERSION_MAX * sizeof(u64))
+ 
+ #define __perf_cs_etmv3_magic 0x3030303030303030ULL
+ #define __perf_cs_etmv4_magic 0x4040404040404040ULL
+-- 
+2.32.0.rc1.229.g3e70b5a671-goog
+
diff --git a/dev-util/perf/files/5.3.7-EL2-fix-2-Update-linux-coresight-pmu-h.patch b/dev-util/perf/files/5.3.7-EL2-fix-2-Update-linux-coresight-pmu-h.patch
new file mode 100644
index 0000000..bc57a7e
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-EL2-fix-2-Update-linux-coresight-pmu-h.patch
@@ -0,0 +1,52 @@
+From 2bb4ccbd95d7fbf58540c8d3d55cbabc8fb95e28 Mon Sep 17 00:00:00 2001
+From: Leo Yan <leo.yan@linaro.org>
+Date: Wed, 24 Feb 2021 09:48:31 -0700
+Subject: [PATCH 1/5] tools headers UAPI: Update tools' copy of
+ linux/coresight-pmu.h
+
+To get the changes in the commit:
+
+  "coresight: etm-perf: Clarify comment on perf options".
+
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
+Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
+Cc: Mike Leach <mike.leach@linaro.org>
+Link: https://lore.kernel.org/r/20210213113220.292229-2-leo.yan@linaro.org
+Link: https://lore.kernel.org/r/20210224164835.3497311-3-mathieu.poirier@linaro.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/include/linux/coresight-pmu.h | 17 ++++++++++++-----
+ 1 file changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/tools/include/linux/coresight-pmu.h b/tools/include/linux/coresight-pmu.h
+index b0e35eec6499..5dc47cfdcf07 100644
+--- a/tools/include/linux/coresight-pmu.h
++++ b/tools/include/linux/coresight-pmu.h
+@@ -10,11 +10,18 @@
+ #define CORESIGHT_ETM_PMU_NAME "cs_etm"
+ #define CORESIGHT_ETM_PMU_SEED  0x10
+ 
+-/* ETMv3.5/PTM's ETMCR config bit */
+-#define ETM_OPT_CYCACC  12
+-#define ETM_OPT_CTXTID	14
+-#define ETM_OPT_TS      28
+-#define ETM_OPT_RETSTK	29
++/*
++ * Below are the definition of bit offsets for perf option, and works as
++ * arbitrary values for all ETM versions.
++ *
++ * Most of them are orignally from ETMv3.5/PTM's ETMCR config, therefore,
++ * ETMv3.5/PTM doesn't define ETMCR config bits with prefix "ETM3_" and
++ * directly use below macros as config bits.
++ */
++#define ETM_OPT_CYCACC		12
++#define ETM_OPT_CTXTID		14
++#define ETM_OPT_TS		28
++#define ETM_OPT_RETSTK		29
+ 
+ /* ETMv4 CONFIGR programming bits for the ETM OPTs */
+ #define ETM4_CFG_BIT_CYCACC	4
+-- 
+2.32.0.rc1.229.g3e70b5a671-goog
+
diff --git a/dev-util/perf/files/5.3.7-EL2-fix-3-Fix-bitmap-for-option.patch b/dev-util/perf/files/5.3.7-EL2-fix-3-Fix-bitmap-for-option.patch
new file mode 100644
index 0000000..2e764d1
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-EL2-fix-3-Fix-bitmap-for-option.patch
@@ -0,0 +1,64 @@
+From 8c559e8d68630d64d932bada633705f6551427df Mon Sep 17 00:00:00 2001
+From: Suzuki K Poulose <suzuki.poulose@arm.com>
+Date: Wed, 24 Feb 2021 09:48:32 -0700
+Subject: [PATCH 2/5] perf cs-etm: Fix bitmap for option
+
+When set option with macros ETM_OPT_CTXTID and ETM_OPT_TS, it wrongly
+takes these two values (14 and 28 prespectively) as bit masks, but
+actually both are the offset for bits.  But this doesn't lead to further
+failure due to the AND logic operation will be always true for
+ETM_OPT_CTXTID / ETM_OPT_TS.
+
+This patch uses the BIT() macro for option bits, thus it can request the
+correct bitmaps for "contextid" and "timestamp" when calling
+cs_etm_set_option().
+
+Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
+Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
+Reviewed-by: Mike Leach <mike.leach@linaro.org>
+Link: https://lore.kernel.org/r/20210213113220.292229-3-leo.yan@linaro.org
+Link: https://lore.kernel.org/r/20210224164835.3497311-4-mathieu.poirier@linaro.org
+[Extract the change as a separate patch for easier review]
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/arch/arm/util/cs-etm.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
+index b0470f2a955a..5b2bb7fc5ee1 100644
+--- a/tools/perf/arch/arm/util/cs-etm.c
++++ b/tools/perf/arch/arm/util/cs-etm.c
+@@ -169,17 +169,17 @@ static int cs_etm_set_option(struct auxtrace_record *itr,
+ 		    !cpu_map__has(online_cpus, i))
+ 			continue;
+ 
+-		if (option & ETM_OPT_CTXTID) {
++		if (option & BIT(ETM_OPT_CTXTID)) {
+ 			err = cs_etm_set_context_id(itr, evsel, i);
+ 			if (err)
+ 				goto out;
+ 		}
+-		if (option & ETM_OPT_TS) {
++		if (option & BIT(ETM_OPT_TS)) {
+ 			err = cs_etm_set_timestamp(itr, evsel, i);
+ 			if (err)
+ 				goto out;
+ 		}
+-		if (option & ~(ETM_OPT_CTXTID | ETM_OPT_TS))
++		if (option & ~(BIT(ETM_OPT_CTXTID) | BIT(ETM_OPT_TS)))
+ 			/* Nothing else is currently supported */
+ 			goto out;
+ 	}
+@@ -406,7 +406,7 @@ static int cs_etm_recording_options(struct auxtrace_record *itr,
+ 		evsel__set_sample_bit(cs_etm_evsel, CPU);
+ 
+ 		err = cs_etm_set_option(itr, cs_etm_evsel,
+-					ETM_OPT_CTXTID | ETM_OPT_TS);
++					BIT(ETM_OPT_CTXTID) | BIT(ETM_OPT_TS));
+ 		if (err)
+ 			goto out;
+ 	}
+-- 
+2.32.0.rc1.229.g3e70b5a671-goog
+
diff --git a/dev-util/perf/files/5.3.7-EL2-fix-4-Support-PID-tracing-in-config.patch b/dev-util/perf/files/5.3.7-EL2-fix-4-Support-PID-tracing-in-config.patch
new file mode 100644
index 0000000..c5561a7
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-EL2-fix-4-Support-PID-tracing-in-config.patch
@@ -0,0 +1,148 @@
+Added local modifications to resolve conflicts from the tot changes.
+"evsel->core.attr.config" changed to "evsel->attr.config".
+
+From 30cb76aabfb4deab4ffef54882f86df319b4d862 Mon Sep 17 00:00:00 2001
+From: Suzuki K Poulose <suzuki.poulose@arm.com>
+Date: Wed, 24 Feb 2021 09:48:33 -0700
+Subject: [PATCH 3/5] perf cs-etm: Support PID tracing in config
+
+If the kernel is running at EL2, the pid of a task is exposed via VMID
+instead of the CONTEXTID.  Add support for this in the perf tool.
+
+This patch respects user setting if user has specified any configs
+from "contextid", "contextid1" or "contextid2"; otherwise, it
+dynamically sets config based on PMU format "contextid".
+
+Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
+Co-developed-by: Leo Yan <leo.yan@linaro.org>
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Reviewed-by: Mike Leach <mike.leach@linaro.org>
+Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
+Cc: Al Grant <al.grant@arm.com>
+Link: https://lore.kernel.org/r/20210213113220.292229-4-leo.yan@linaro.org
+Link: https://lore.kernel.org/r/20210224164835.3497311-5-mathieu.poirier@linaro.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/include/linux/coresight-pmu.h |  3 ++
+ tools/perf/arch/arm/util/cs-etm.c   | 61 +++++++++++++++++++++++------
+ 2 files changed, 52 insertions(+), 12 deletions(-)
+
+diff --git a/tools/include/linux/coresight-pmu.h b/tools/include/linux/coresight-pmu.h
+index 5dc47cfdcf07..4ac5c081af93 100644
+--- a/tools/include/linux/coresight-pmu.h
++++ b/tools/include/linux/coresight-pmu.h
+@@ -20,14 +20,17 @@
+  */
+ #define ETM_OPT_CYCACC		12
+ #define ETM_OPT_CTXTID		14
++#define ETM_OPT_CTXTID2		15
+ #define ETM_OPT_TS		28
+ #define ETM_OPT_RETSTK		29
+ 
+ /* ETMv4 CONFIGR programming bits for the ETM OPTs */
+ #define ETM4_CFG_BIT_CYCACC	4
+ #define ETM4_CFG_BIT_CTXTID	6
++#define ETM4_CFG_BIT_VMID	7
+ #define ETM4_CFG_BIT_TS		11
+ #define ETM4_CFG_BIT_RETSTK	12
++#define ETM4_CFG_BIT_VMID_OPT	15
+ 
+ static inline int coresight_get_trace_id(int cpu)
+ {
+diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c
+index 5b2bb7fc5ee1..911c7f2b3581 100644
+--- a/tools/perf/arch/arm/util/cs-etm.c
++++ b/tools/perf/arch/arm/util/cs-etm.c
+@@ -67,6 +67,7 @@ static int cs_etm_set_context_id(struct auxtrace_record *itr,
+ 	char path[PATH_MAX];
+ 	int err = -EINVAL;
+ 	u32 val;
++	u64 contextid;
+ 
+ 	ptr = container_of(itr, struct cs_etm_recording, itr);
+ 	cs_etm_pmu = ptr->cs_etm_pmu;
+@@ -86,25 +87,59 @@ static int cs_etm_set_context_id(struct auxtrace_record *itr,
+ 		goto out;
+ 	}
+ 
++	/* User has configured for PID tracing, respects it. */
++	contextid = evsel->attr.config &
++			(BIT(ETM_OPT_CTXTID) | BIT(ETM_OPT_CTXTID2));
++
+ 	/*
+-	 * TRCIDR2.CIDSIZE, bit [9-5], indicates whether contextID tracing
+-	 * is supported:
+-	 *  0b00000 Context ID tracing is not supported.
+-	 *  0b00100 Maximum of 32-bit Context ID size.
+-	 *  All other values are reserved.
++	 * If user doesn't configure the contextid format, parse PMU format and
++	 * enable PID tracing according to the "contextid" format bits:
++	 *
++	 *   If bit ETM_OPT_CTXTID is set, trace CONTEXTIDR_EL1;
++	 *   If bit ETM_OPT_CTXTID2 is set, trace CONTEXTIDR_EL2.
+ 	 */
+-	val = BMVAL(val, 5, 9);
+-	if (!val || val != 0x4) {
+-		err = -EINVAL;
+-		goto out;
++	if (!contextid)
++		contextid = perf_pmu__format_bits(&cs_etm_pmu->format,
++						  "contextid");
++
++	if (contextid & BIT(ETM_OPT_CTXTID)) {
++		/*
++		 * TRCIDR2.CIDSIZE, bit [9-5], indicates whether contextID
++		 * tracing is supported:
++		 *  0b00000 Context ID tracing is not supported.
++		 *  0b00100 Maximum of 32-bit Context ID size.
++		 *  All other values are reserved.
++		 */
++		val = BMVAL(val, 5, 9);
++		if (!val || val != 0x4) {
++			pr_err("%s: CONTEXTIDR_EL1 isn't supported\n",
++			       CORESIGHT_ETM_PMU_NAME);
++			err = -EINVAL;
++			goto out;
++		}
++	}
++
++	if (contextid & BIT(ETM_OPT_CTXTID2)) {
++		/*
++		 * TRCIDR2.VMIDOPT[30:29] != 0 and
++		 * TRCIDR2.VMIDSIZE[14:10] == 0b00100 (32bit virtual contextid)
++		 * We can't support CONTEXTIDR in VMID if the size of the
++		 * virtual context id is < 32bit.
++		 * Any value of VMIDSIZE >= 4 (i.e, > 32bit) is fine for us.
++		 */
++		if (!BMVAL(val, 29, 30) || BMVAL(val, 10, 14) < 4) {
++			pr_err("%s: CONTEXTIDR_EL2 isn't supported\n",
++			       CORESIGHT_ETM_PMU_NAME);
++			err = -EINVAL;
++			goto out;
++		}
+ 	}
+ 
+ 	/* All good, let the kernel know */
+-	evsel->attr.config |= (1 << ETM_OPT_CTXTID);
++	evsel->attr.config |= contextid;
+ 	err = 0;
+ 
+ out:
+-
+ 	return err;
+ }
+ 
+@@ -485,7 +520,9 @@ static u64 cs_etmv4_get_config(struct auxtrace_record *itr)
+ 		config |= BIT(ETM4_CFG_BIT_TS);
+ 	if (config_opts & BIT(ETM_OPT_RETSTK))
+ 		config |= BIT(ETM4_CFG_BIT_RETSTK);
+-
++	if (config_opts & BIT(ETM_OPT_CTXTID2))
++		config |= BIT(ETM4_CFG_BIT_VMID) |
++			  BIT(ETM4_CFG_BIT_VMID_OPT);
+ 	return config;
+ }
+ 
+-- 
+2.32.0.rc1.229.g3e70b5a671-goog
+
diff --git a/dev-util/perf/files/5.3.7-EL2-fix-5-Add-cs-etm-helper.patch b/dev-util/perf/files/5.3.7-EL2-fix-5-Add-cs-etm-helper.patch
new file mode 100644
index 0000000..f4f2611
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-EL2-fix-5-Add-cs-etm-helper.patch
@@ -0,0 +1,95 @@
+From 47f0d94c203751ddcfdb296fcf15df20fffcef0c Mon Sep 17 00:00:00 2001
+From: Leo Yan <leo.yan@linaro.org>
+Date: Wed, 24 Feb 2021 09:48:34 -0700
+Subject: [PATCH 4/5] perf cs-etm: Add helper cs_etm__get_pid_fmt()
+
+This patch adds helper function cs_etm__get_pid_fmt(), by passing
+parameter "traceID", it returns the PID format.
+
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
+Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
+Cc: Mike Leach <mike.leach@linaro.org>
+Link: https://lore.kernel.org/r/20210213113220.292229-5-leo.yan@linaro.org
+Link: https://lore.kernel.org/r/20210224164835.3497311-6-mathieu.poirier@linaro.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/util/cs-etm.c | 42 ++++++++++++++++++++++++++++++++++++++++
+ tools/perf/util/cs-etm.h |  1 +
+ 2 files changed, 43 insertions(+)
+
+diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
+index ee32d023e9bd..9ac80fc23c58 100644
+--- a/tools/perf/util/cs-etm.c
++++ b/tools/perf/util/cs-etm.c
+@@ -7,6 +7,7 @@
+  */
+ 
+ #include <linux/bitops.h>
++#include <linux/coresight-pmu.h>
+ #include <linux/err.h>
+ #include <linux/kernel.h>
+ #include <linux/log2.h>
+@@ -156,6 +157,47 @@ int cs_etm__get_cpu(u8 trace_chan_id, int *cpu)
+ 	return 0;
+ }
+ 
++/*
++ * The returned PID format is presented by two bits:
++ *
++ *   Bit ETM_OPT_CTXTID: CONTEXTIDR or CONTEXTIDR_EL1 is traced;
++ *   Bit ETM_OPT_CTXTID2: CONTEXTIDR_EL2 is traced.
++ *
++ * It's possible that the two bits ETM_OPT_CTXTID and ETM_OPT_CTXTID2
++ * are enabled at the same time when the session runs on an EL2 kernel.
++ * This means the CONTEXTIDR_EL1 and CONTEXTIDR_EL2 both will be
++ * recorded in the trace data, the tool will selectively use
++ * CONTEXTIDR_EL2 as PID.
++ */
++int cs_etm__get_pid_fmt(u8 trace_chan_id, u64 *pid_fmt)
++{
++	struct int_node *inode;
++	u64 *metadata, val;
++
++	inode = intlist__find(traceid_list, trace_chan_id);
++	if (!inode)
++		return -EINVAL;
++
++	metadata = inode->priv;
++
++	if (metadata[CS_ETM_MAGIC] == __perf_cs_etmv3_magic) {
++		val = metadata[CS_ETM_ETMCR];
++		/* CONTEXTIDR is traced */
++		if (val & BIT(ETM_OPT_CTXTID))
++			*pid_fmt = BIT(ETM_OPT_CTXTID);
++	} else {
++		val = metadata[CS_ETMV4_TRCCONFIGR];
++		/* CONTEXTIDR_EL2 is traced */
++		if (val & (BIT(ETM4_CFG_BIT_VMID) | BIT(ETM4_CFG_BIT_VMID_OPT)))
++			*pid_fmt = BIT(ETM_OPT_CTXTID2);
++		/* CONTEXTIDR_EL1 is traced */
++		else if (val & BIT(ETM4_CFG_BIT_CTXTID))
++			*pid_fmt = BIT(ETM_OPT_CTXTID);
++	}
++
++	return 0;
++}
++
+ void cs_etm__etmq_set_traceid_queue_timestamp(struct cs_etm_queue *etmq,
+ 					      u8 trace_chan_id)
+ {
+diff --git a/tools/perf/util/cs-etm.h b/tools/perf/util/cs-etm.h
+index e153d02df0de..85ed11e9d2a7 100644
+--- a/tools/perf/util/cs-etm.h
++++ b/tools/perf/util/cs-etm.h
+@@ -193,6 +193,7 @@ struct cs_etm_packet_queue {
+ int cs_etm__process_auxtrace_info(union perf_event *event,
+ 				  struct perf_session *session);
+ int cs_etm__get_cpu(u8 trace_chan_id, int *cpu);
++int cs_etm__get_pid_fmt(u8 trace_chan_id, u64 *pid_fmt);
+ int cs_etm__etmq_set_tid(struct cs_etm_queue *etmq,
+ 			 pid_t tid, u8 trace_chan_id);
+ bool cs_etm__etmq_is_timeless(struct cs_etm_queue *etmq);
+-- 
+2.32.0.rc1.229.g3e70b5a671-goog
+
diff --git a/dev-util/perf/files/5.3.7-EL2-fix-6-Detect-pid-in-VMID.patch b/dev-util/perf/files/5.3.7-EL2-fix-6-Detect-pid-in-VMID.patch
new file mode 100644
index 0000000..4f9cc0a
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-EL2-fix-6-Detect-pid-in-VMID.patch
@@ -0,0 +1,84 @@
+From 8e1488a46dcf73b1f1916d95421e303dbf773fb4 Mon Sep 17 00:00:00 2001
+From: Suzuki K Poulose <suzuki.poulose@arm.com>
+Date: Wed, 24 Feb 2021 09:48:35 -0700
+Subject: [PATCH 5/5] perf cs-etm: Detect pid in VMID for kernel running at EL2
+
+The PID of the task could be traced as VMID when the kernel is running
+at EL2.  Teach the decoder to look for VMID when the CONTEXTIDR (Arm32)
+or CONTEXTIDR_EL1 (Arm64) is invalid but we have a valid VMID.
+
+Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com>
+Co-developed-by: Leo Yan <leo.yan@linaro.org>
+Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
+Cc: Al Grant <al.grant@arm.com>
+Cc: Mike Leach <mike.leach@linaro.org>
+Link: https://lore.kernel.org/r/20210213113220.292229-6-leo.yan@linaro.org
+Link: https://lore.kernel.org/r/20210224164835.3497311-7-mathieu.poirier@linaro.org
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ .../perf/util/cs-etm-decoder/cs-etm-decoder.c | 38 +++++++++++++++++--
+ 1 file changed, 34 insertions(+), 4 deletions(-)
+
+diff --git a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
+index 3f4bc4050477..4052c9ce6e2f 100644
+--- a/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
++++ b/tools/perf/util/cs-etm-decoder/cs-etm-decoder.c
+@@ -6,6 +6,7 @@
+  * Author: Mathieu Poirier <mathieu.poirier@linaro.org>
+  */
+ 
++#include <linux/coresight-pmu.h>
+ #include <linux/err.h>
+ #include <linux/list.h>
+ #include <linux/zalloc.h>
+@@ -491,13 +492,42 @@ cs_etm_decoder__set_tid(struct cs_etm_queue *etmq,
+ 			const ocsd_generic_trace_elem *elem,
+ 			const uint8_t trace_chan_id)
+ {
+-	pid_t tid;
++	pid_t tid = -1;
++	static u64 pid_fmt;
++	int ret;
+ 
+-	/* Ignore PE_CONTEXT packets that don't have a valid contextID */
+-	if (!elem->context.ctxt_id_valid)
++	/*
++	 * As all the ETMs run at the same exception level, the system should
++	 * have the same PID format crossing CPUs.  So cache the PID format
++	 * and reuse it for sequential decoding.
++	 */
++	if (!pid_fmt) {
++		ret = cs_etm__get_pid_fmt(trace_chan_id, &pid_fmt);
++		if (ret)
++			return OCSD_RESP_FATAL_SYS_ERR;
++	}
++
++	/*
++	 * Process the PE_CONTEXT packets if we have a valid contextID or VMID.
++	 * If the kernel is running at EL2, the PID is traced in CONTEXTIDR_EL2
++	 * as VMID, Bit ETM_OPT_CTXTID2 is set in this case.
++	 */
++	switch (pid_fmt) {
++	case BIT(ETM_OPT_CTXTID):
++		if (elem->context.ctxt_id_valid)
++			tid = elem->context.context_id;
++		break;
++	case BIT(ETM_OPT_CTXTID2):
++		if (elem->context.vmid_valid)
++			tid = elem->context.vmid;
++		break;
++	default:
++		break;
++	}
++
++	if (tid == -1)
+ 		return OCSD_RESP_CONT;
+ 
+-	tid =  elem->context.context_id;
+ 	if (cs_etm__etmq_set_tid(etmq, tid, trace_chan_id))
+ 		return OCSD_RESP_FATAL_SYS_ERR;
+ 
+-- 
+2.32.0.rc1.229.g3e70b5a671-goog
+
diff --git a/dev-util/perf/files/5.3.7-Fix-exit-on-signal.patch b/dev-util/perf/files/5.3.7-Fix-exit-on-signal.patch
index 01acb75..a69ed9a 100644
--- a/dev-util/perf/files/5.3.7-Fix-exit-on-signal.patch
+++ b/dev-util/perf/files/5.3.7-Fix-exit-on-signal.patch
@@ -39,10 +39,10 @@
  tools/perf/builtin-record.c | 29 +++++++++++++++++++++++++++++
  1 file changed, 29 insertions(+)
 
-diff --git a/builtin-record.c b/builtin-record.c
+diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c
 index 4d4502b7fea0..47f5fec7fb45 100644
---- a/builtin-record.c
-+++ b/builtin-record.c
+--- a/tools/perf/builtin-record.c
++++ b/tools/perf/builtin-record.c
 @@ -56,6 +56,7 @@
  #include <unistd.h>
  #include <sched.h>
diff --git a/dev-util/perf/files/5.3.7-Fix-file-corruption-due-to-event-deletion.patch b/dev-util/perf/files/5.3.7-Fix-file-corruption-due-to-event-deletion.patch
new file mode 100644
index 0000000..5cc1343
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-Fix-file-corruption-due-to-event-deletion.patch
@@ -0,0 +1,116 @@
+The patch has minor conflict resolutions due to the missing branch stack
+for regular events feature and name changes in ToT.
+Particularly perf_evsel and perf_evlist were renamed to evsel and evlist.
+
+From 1c756cd429d8f3da33d31f2a970284b9d5260534 Mon Sep 17 00:00:00 2001
+From: Al Grant <al.grant@foss.arm.com>
+Date: Fri, 13 Nov 2020 20:38:26 +0000
+Subject: [PATCH] perf inject: Fix file corruption due to event deletion
+
+"perf inject" can create corrupt files when synthesizing sample events from AUX
+data. This happens when in the input file, the first event (for the AUX data)
+has a different sample_type from the second event (generally dummy).
+
+Specifically, they differ in the bits that indicate the standard fields
+appended to perf records in the mmap buffer. "perf inject" deletes the first
+event and moves up the second event to first position.
+
+The problem is with the synthetic PERF_RECORD_MMAP (etc.) events created
+by "perf record".
+
+Since these are synthetic versions of events which are normally produced
+by the kernel, they have to have the standard fields appended as
+described by sample_type.
+
+"perf record" fills these in with zeroes, including the IDENTIFIER
+field; perf readers interpret records with zero IDENTIFIER using the
+descriptor for the first event in the file.
+
+Since "perf inject" changes the first event, these synthetic records are
+then processed with the wrong value of sample_type, and the perf reader
+reads bad data, reports on incorrect length records etc.
+
+Mismatching sample_types are seen with "perf record -e cs_etm//", where the AUX
+event has TID|TIME|CPU|IDENTIFIER and the dummy event has TID|TIME|IDENTIFIER.
+
+Perhaps they could be the same, but it isn't normally a problem if they aren't
+- perf has no problems reading the file.
+
+The sample_types have to agree on the position of IDENTIFIER, because
+that's how perf finds the right event descriptor in the first place, but
+they don't normally have to agree on other fields, and perf doesn't
+check that they do.
+
+The problem is specific to the way "perf inject" reorganizes the events
+and the way synthetic MMAP events are recorded with a zero identifier. A
+simple solution is to stop "perf inject" deleting the tracing event.
+
+Committer testing
+
+Removed the now unused 'evsel' variable, update the comment about the
+evsel removal not being performed anymore, and apply the patch manually
+as it failed with this warning:
+
+  warning: Patch sent with format=flowed; space at the end of lines might be lost.
+
+Testing it with:
+
+  $ perf bench internals inject-build-id
+  # Running 'internals/inject-build-id' benchmark:
+    Average build-id injection took: 8.543 msec (+- 0.130 msec)
+    Average time per event: 0.838 usec (+- 0.013 usec)
+    Average memory usage: 12717 KB (+- 9 KB)
+    Average build-id-all injection took: 5.710 msec (+- 0.058 msec)
+    Average time per event: 0.560 usec (+- 0.006 usec)
+    Average memory usage: 12079 KB (+- 7 KB)
+  $
+
+Signed-off-by: Al Grant <al.grant@arm.com>
+Acked-by: Adrian Hunter <adrian.hunter@intel.com>
+Acked-by: Namhyung Kim <namhyung@kernel.org>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Jiri Olsa <jolsa@redhat.com>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Peter Zijlstra <peterz@infradead.org>
+LPU-Reference: b9cf5611-daae-2390-3439-6617f8f0a34b@foss.arm.com
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/builtin-inject.c | 12 +-----------
+ 1 file changed, 1 insertion(+), 11 deletions(-)
+
+diff --git a/tools/perf/builtin-inject.c b/tools/perf/builtin-inject.c
+index 452a75fe68e5..0462dc8db2e3 100644
+--- a/tools/perf/builtin-inject.c
++++ b/tools/perf/builtin-inject.c
+@@ -779,27 +779,14 @@ static int __cmd_inject(struct perf_inject *inject)
+ 			dsos__hit_all(session);
+ 		/*
+ 		 * The AUX areas have been removed and replaced with
+-		 * synthesized hardware events, so clear the feature flag and
+-		 * remove the evsel.
++		 * synthesized hardware events, so clear the feature flag.
+ 		 */
+ 		if (inject->itrace_synth_opts.set) {
+-			struct perf_evsel *evsel;
+-
+ 			perf_header__clear_feat(&session->header,
+ 						HEADER_AUXTRACE);
+ 			if (inject->itrace_synth_opts.last_branch)
+ 				perf_header__set_feat(&session->header,
+ 						      HEADER_BRANCH_STACK);
+-			evsel = perf_evlist__id2evsel_strict(session->evlist,
+-							     inject->aux_id);
+-			if (evsel) {
+-				pr_debug("Deleting %s\n",
+-					 perf_evsel__name(evsel));
+-				perf_evlist__remove(session->evlist, evsel);
+-				perf_evsel__delete(evsel);
+-			}
+-			if (inject->strip)
+-				strip_fini(inject);
+ 		}
+ 		session->header.data_offset = output_data_offset;
+ 		session->header.data_size = inject->bytes_written;
+-- 
+2.30.0.478.g8a0d178c01-goog
+
diff --git a/dev-util/perf/files/5.3.7-Fix-hugepage-text.patch b/dev-util/perf/files/5.3.7-Fix-hugepage-text.patch
index de413c0..cf4c40b 100644
--- a/dev-util/perf/files/5.3.7-Fix-hugepage-text.patch
+++ b/dev-util/perf/files/5.3.7-Fix-hugepage-text.patch
@@ -1,7 +1,7 @@
-diff --git a/util/event.c b/util/event.c
+diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
 index fc690fecbfd66..1fe8728cf5349 100644
---- a/util/event.c
-+++ b/util/event.c
+--- a/tools/perf/util/event.c
++++ b/tools/perf/util/event.c
 @@ -316,6 +316,107 @@ static int perf_event__synthesize_fork(struct perf_tool *tool,
  	return 0;
  }
diff --git a/dev-util/perf/files/5.3.7-Fix-libbfd-api.patch b/dev-util/perf/files/5.3.7-Fix-libbfd-api.patch
index 38f5141..7d6744e9 100644
--- a/dev-util/perf/files/5.3.7-Fix-libbfd-api.patch
+++ b/dev-util/perf/files/5.3.7-Fix-libbfd-api.patch
@@ -21,10 +21,10 @@
     Cc: Marek Vasut <marex@denx.de>
     Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
-diff --git a/util/srcline.c b/util/srcline.c
+diff --git a/tools/perf/util/srcline.c b/tools/perf/util/srcline.c
 index 6ccf6f6d09df..5b7d6c16d33f 100644
---- a/util/srcline.c
-+++ b/util/srcline.c
+--- a/tools/perf/util/srcline.c
++++ b/tools/perf/util/srcline.c
 @@ -193,16 +193,30 @@ static void find_address_in_section(bfd *abfd, asection *section, void *data)
  	bfd_vma pc, vma;
  	bfd_size_type size;
diff --git a/dev-util/perf/files/5.3.7-Fix-nm-binutils-2.35.patch b/dev-util/perf/files/5.3.7-Fix-nm-binutils-2.35.patch
new file mode 100644
index 0000000..4f5ac43
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-Fix-nm-binutils-2.35.patch
@@ -0,0 +1,36 @@
+From 39efdd94e314336f4acbac4c07e0f37bdc3bef71 Mon Sep 17 00:00:00 2001
+From: Ben Hutchings <ben@decadent.org.uk>
+Date: Sat, 25 Jul 2020 02:06:23 +0100
+Subject: [PATCH] libtraceevent: Fix build with binutils 2.35
+
+In binutils 2.35, 'nm -D' changed to show symbol versions along with
+symbol names, with the usual @@ separator.  When generating
+libtraceevent-dynamic-list we need just the names, so strip off the
+version suffix if present.
+
+Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
+Tested-by: Salvatore Bonaccorso <carnil@debian.org>
+Reviewed-by: Steven Rostedt <rostedt@goodmis.org>
+Cc: linux-trace-devel@vger.kernel.org
+Cc: stable@vger.kernel.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/lib/traceevent/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/lib/traceevent/Makefile b/tools/lib/traceevent/Makefile
+index 349bb81482ab..680d883efe05 100644
+--- a/tools/lib/traceevent/Makefile
++++ b/tools/lib/traceevent/Makefile
+@@ -269,7 +269,7 @@ define do_generate_dynamic_list_file
+ 	xargs echo "U w W" | tr 'w ' 'W\n' | sort -u | xargs echo`;\
+ 	if [ "$$symbol_type" = "U W" ];then				\
+ 		(echo '{';						\
+-		$(NM) -u -D $1 | awk 'NF>1 {print "\t"$$2";"}' | sort -u;\
++		$(NM) -u -D $1 | awk 'NF>1 {sub("@.*", "", $$2); print "\t"$$2";"}' | sort -u;\
+ 		echo '};';						\
+ 		) > $2;							\
+ 	else								\
+-- 
+2.30.2
+
diff --git a/dev-util/perf/files/5.3.7-cs-etm-Continuously-record-last-branch.patch b/dev-util/perf/files/5.3.7-cs-etm-Continuously-record-last-branch.patch
new file mode 100644
index 0000000..1ee88cd
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-cs-etm-Continuously-record-last-branch.patch
@@ -0,0 +1,70 @@
+From f1410028c762893daf353765112cf6797e4442fa Mon Sep 17 00:00:00 2001
+From: Leo Yan <leo.yan@linaro.org>
+Date: Wed, 19 Feb 2020 10:18:08 +0800
+Subject: [PATCH 2/5] perf cs-etm: Continuously record last branch
+
+Every time synthesize instruction sample, the last branch recording will
+be reset.  This is fine if the instruction period is big enough, for
+example if use the option '--itrace=i100000', the last branch array is
+reset for every sample with 100000 instructions per period; before
+generate the next instruction sample, there has the sufficient packets
+coming to fill the last branch array.
+
+On the other hand, if set a very small period, the packets will be
+significantly reduced between two continuous instruction samples, thus
+the last branch array is almost empty for new instruction sample by
+frequently resetting.
+
+To allow the last branches to work properly for any instruction periods,
+this patch avoids to reset the last branch for every instruction sample
+and only reset it when flush the trace data.  The last branches will be
+reset only for two cases, one is for trace starting, another case is for
+discontinuous trace; other cases can keep recording last branches for
+continuous instruction samples.
+
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
+Reviewed-by: Mike Leach <mike.leach@linaro.org>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Jiri Olsa <jolsa@redhat.com>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Robert Walker <robert.walker@arm.com>
+Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
+Cc: coresight ml <coresight@lists.linaro.org>
+Cc: linux-arm-kernel@lists.infradead.org
+Link: http://lore.kernel.org/lkml/20200219021811.20067-3-leo.yan@linaro.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/util/cs-etm.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
+index 294b09cfb034..2c4156c5ed09 100644
+--- a/tools/perf/util/cs-etm.c
++++ b/tools/perf/util/cs-etm.c
+@@ -1170,9 +1170,6 @@ static int cs_etm__synth_instruction_sample(struct cs_etm_queue *etmq,
+ 			"CS ETM Trace: failed to deliver instruction event, error %d\n",
+ 			ret);
+ 
+-	if (etm->synth_opts.last_branch)
+-		cs_etm__reset_last_branch_rb(tidq);
+-
+ 	return ret;
+ }
+ 
+@@ -1487,6 +1484,10 @@ static int cs_etm__flush(struct cs_etm_queue *etmq,
+ swap_packet:
+ 	cs_etm__packet_swap(etm, tidq);
+ 
++	/* Reset last branches after flush the trace */
++	if (etm->synth_opts.last_branch)
++		cs_etm__reset_last_branch_rb(tidq);
++
+ 	return err;
+ }
+ 
+-- 
+2.32.0.272.g935e593368-goog
+
diff --git a/dev-util/perf/files/5.3.7-cs-etm-Correct-synth-inst-samples.patch b/dev-util/perf/files/5.3.7-cs-etm-Correct-synth-inst-samples.patch
new file mode 100644
index 0000000..a6407cb
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-cs-etm-Correct-synth-inst-samples.patch
@@ -0,0 +1,195 @@
+From c9f5baa136777b2c982f6f7a90c9da69a88be148 Mon Sep 17 00:00:00 2001
+From: Leo Yan <leo.yan@linaro.org>
+Date: Wed, 19 Feb 2020 10:18:09 +0800
+Subject: [PATCH 3/5] perf cs-etm: Correct synthesizing instruction samples
+
+When 'etm->instructions_sample_period' is less than
+'tidq->period_instructions', the function cs_etm__sample() cannot handle
+this case properly with its logic.
+
+Let's see below flow as an example:
+
+- If we set itrace option '--itrace=i4', then function cs_etm__sample()
+  has variables with initialized values:
+
+  tidq->period_instructions = 0
+  etm->instructions_sample_period = 4
+
+- When the first packet is coming:
+
+  packet->instr_count = 10; the number of instructions executed in this
+  packet is 10, thus update period_instructions as below:
+
+  tidq->period_instructions = 0 + 10 = 10
+  instrs_over = 10 - 4 = 6
+  offset = 10 - 6 - 1 = 3
+  tidq->period_instructions = instrs_over = 6
+
+- When the second packet is coming:
+
+  packet->instr_count = 10; in the second pass, assume 10 instructions
+  in the trace sample again:
+
+  tidq->period_instructions = 6 + 10 = 16
+  instrs_over = 16 - 4 = 12
+  offset = 10 - 12 - 1 = -3  -> the negative value
+  tidq->period_instructions = instrs_over = 12
+
+So after handle these two packets, there have below issues:
+
+The first issue is that cs_etm__instr_addr() returns the address within
+the current trace sample of the instruction related to offset, so the
+offset is supposed to be always unsigned value.  But in fact, function
+cs_etm__sample() might calculate a negative offset value (in handling
+the second packet, the offset is -3) and pass to cs_etm__instr_addr()
+with u64 type with a big positive integer.
+
+The second issue is it only synthesizes 2 samples for sample period = 4.
+In theory, every packet has 10 instructions so the two packets have
+total 20 instructions, 20 instructions should generate 5 samples
+(4 x 5 = 20).  This is because cs_etm__sample() only calls once
+cs_etm__synth_instruction_sample() to generate instruction sample per
+range packet.
+
+This patch fixes the logic in function cs_etm__sample(); the basic
+idea for handling coming packet is:
+
+- To synthesize the first instruction sample, it combines the left
+  instructions from the previous packet and the head of the new
+  packet; then generate continuous samples with sample period;
+- At the tail of the new packet, if it has the rest instructions,
+  these instructions will be left for the sequential sample.
+
+Suggested-by: Mike Leach <mike.leach@linaro.org>
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
+Reviewed-by: Mike Leach <mike.leach@linaro.org>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Jiri Olsa <jolsa@redhat.com>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Robert Walker <robert.walker@arm.com>
+Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
+Cc: coresight ml <coresight@lists.linaro.org>
+Cc: linux-arm-kernel@lists.infradead.org
+Link: http://lore.kernel.org/lkml/20200219021811.20067-4-leo.yan@linaro.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/util/cs-etm.c | 87 ++++++++++++++++++++++++++++++++--------
+ 1 file changed, 70 insertions(+), 17 deletions(-)
+
+diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
+index 2c4156c5ed09..1ddcc67e13dd 100644
+--- a/tools/perf/util/cs-etm.c
++++ b/tools/perf/util/cs-etm.c
+@@ -1358,9 +1358,12 @@ static int cs_etm__sample(struct cs_etm_queue *etmq,
+ 	struct cs_etm_auxtrace *etm = etmq->etm;
+ 	int ret;
+ 	u8 trace_chan_id = tidq->trace_chan_id;
+-	u64 instrs_executed = tidq->packet->instr_count;
++	u64 instrs_prev;
+ 
+-	tidq->period_instructions += instrs_executed;
++	/* Get instructions remainder from previous packet */
++	instrs_prev = tidq->period_instructions;
++
++	tidq->period_instructions += tidq->packet->instr_count;
+ 
+ 	/*
+ 	 * Record a branch when the last instruction in
+@@ -1378,26 +1381,76 @@ static int cs_etm__sample(struct cs_etm_queue *etmq,
+ 		 * TODO: allow period to be defined in cycles and clock time
+ 		 */
+ 
+-		/* Get number of instructions executed after the sample point */
+-		u64 instrs_over = tidq->period_instructions -
+-			etm->instructions_sample_period;
++		/*
++		 * Below diagram demonstrates the instruction samples
++		 * generation flows:
++		 *
++		 *    Instrs     Instrs       Instrs       Instrs
++		 *   Sample(n)  Sample(n+1)  Sample(n+2)  Sample(n+3)
++		 *    |            |            |            |
++		 *    V            V            V            V
++		 *   --------------------------------------------------
++		 *            ^                                  ^
++		 *            |                                  |
++		 *         Period                             Period
++		 *    instructions(Pi)                   instructions(Pi')
++		 *
++		 *            |                                  |
++		 *            \---------------- -----------------/
++		 *                             V
++		 *                 tidq->packet->instr_count
++		 *
++		 * Instrs Sample(n...) are the synthesised samples occurring
++		 * every etm->instructions_sample_period instructions - as
++		 * defined on the perf command line.  Sample(n) is being the
++		 * last sample before the current etm packet, n+1 to n+3
++		 * samples are generated from the current etm packet.
++		 *
++		 * tidq->packet->instr_count represents the number of
++		 * instructions in the current etm packet.
++		 *
++		 * Period instructions (Pi) contains the the number of
++		 * instructions executed after the sample point(n) from the
++		 * previous etm packet.  This will always be less than
++		 * etm->instructions_sample_period.
++		 *
++		 * When generate new samples, it combines with two parts
++		 * instructions, one is the tail of the old packet and another
++		 * is the head of the new coming packet, to generate
++		 * sample(n+1); sample(n+2) and sample(n+3) consume the
++		 * instructions with sample period.  After sample(n+3), the rest
++		 * instructions will be used by later packet and it is assigned
++		 * to tidq->period_instructions for next round calculation.
++		 */
+ 
+ 		/*
+-		 * Calculate the address of the sampled instruction (-1 as
+-		 * sample is reported as though instruction has just been
+-		 * executed, but PC has not advanced to next instruction)
++		 * Get the initial offset into the current packet instructions;
++		 * entry conditions ensure that instrs_prev is less than
++		 * etm->instructions_sample_period.
+ 		 */
+-		u64 offset = (instrs_executed - instrs_over - 1);
+-		u64 addr = cs_etm__instr_addr(etmq, trace_chan_id,
+-					      tidq->packet, offset);
++		u64 offset = etm->instructions_sample_period - instrs_prev;
++		u64 addr;
+ 
+-		ret = cs_etm__synth_instruction_sample(
+-			etmq, tidq, addr, etm->instructions_sample_period);
+-		if (ret)
+-			return ret;
++		while (tidq->period_instructions >=
++				etm->instructions_sample_period) {
++			/*
++			 * Calculate the address of the sampled instruction (-1
++			 * as sample is reported as though instruction has just
++			 * been executed, but PC has not advanced to next
++			 * instruction)
++			 */
++			addr = cs_etm__instr_addr(etmq, trace_chan_id,
++						  tidq->packet, offset - 1);
++			ret = cs_etm__synth_instruction_sample(
++				etmq, tidq, addr,
++				etm->instructions_sample_period);
++			if (ret)
++				return ret;
+ 
+-		/* Carry remaining instructions into next sample period */
+-		tidq->period_instructions = instrs_over;
++			offset += etm->instructions_sample_period;
++			tidq->period_instructions -=
++				etm->instructions_sample_period;
++		}
+ 	}
+ 
+ 	if (etm->sample_branches) {
+-- 
+2.32.0.272.g935e593368-goog
+
diff --git a/dev-util/perf/files/5.3.7-cs-etm-Fix-unsigned-variable.patch b/dev-util/perf/files/5.3.7-cs-etm-Fix-unsigned-variable.patch
new file mode 100644
index 0000000..c91dfe6
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-cs-etm-Fix-unsigned-variable.patch
@@ -0,0 +1,43 @@
+From bc010dd657ee0309276c88ab828b9ad156f75b31 Mon Sep 17 00:00:00 2001
+From: Leo Yan <leo.yan@linaro.org>
+Date: Wed, 19 Feb 2020 10:18:11 +0800
+Subject: [PATCH 5/5] perf cs-etm: Fix unsigned variable comparison to zero
+
+The variable 'offset' in function cs_etm__sample() is u64 type, it's not
+appropriate to check it with 'while (offset > 0)'; this patch changes to
+'while (offset)'.
+
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
+Reviewed-by: Mike Leach <mike.leach@linaro.org>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Jiri Olsa <jolsa@redhat.com>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Robert Walker <robert.walker@arm.com>
+Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
+Cc: coresight ml <coresight@lists.linaro.org>
+Cc: linux-arm-kernel@lists.infradead.org
+Link: http://lore.kernel.org/lkml/20200219021811.20067-6-leo.yan@linaro.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/util/cs-etm.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
+index 87d9943177bc..62d2f9b9ce1b 100644
+--- a/tools/perf/util/cs-etm.c
++++ b/tools/perf/util/cs-etm.c
+@@ -962,7 +962,7 @@ static inline u64 cs_etm__instr_addr(struct cs_etm_queue *etmq,
+ 	if (packet->isa == CS_ETM_ISA_T32) {
+ 		u64 addr = packet->start_addr;
+ 
+-		while (offset > 0) {
++		while (offset) {
+ 			addr += cs_etm__t32_instr_size(etmq,
+ 						       trace_chan_id, addr);
+ 			offset--;
+-- 
+2.32.0.272.g935e593368-goog
+
diff --git a/dev-util/perf/files/5.3.7-cs-etm-Optimize-copying-last-branches.patch b/dev-util/perf/files/5.3.7-cs-etm-Optimize-copying-last-branches.patch
new file mode 100644
index 0000000..19252c4
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-cs-etm-Optimize-copying-last-branches.patch
@@ -0,0 +1,101 @@
+From 695378b567df1fe6631c6684fcc9eeb4257df70f Mon Sep 17 00:00:00 2001
+From: Leo Yan <leo.yan@linaro.org>
+Date: Wed, 19 Feb 2020 10:18:10 +0800
+Subject: [PATCH 4/5] perf cs-etm: Optimize copying last branches
+
+If an instruction range packet can generate multiple instruction
+samples, these samples share the same last branches; it's not necessary
+to copy the same last branches repeatedly for these samples within the
+same packet.
+
+This patch moves out the last branches copying from function
+cs_etm__synth_instruction_sample(), and execute it prior to generating
+instruction samples.
+
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
+Reviewed-by: Mike Leach <mike.leach@linaro.org>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Jiri Olsa <jolsa@redhat.com>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Robert Walker <robert.walker@arm.com>
+Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
+Cc: coresight ml <coresight@lists.linaro.org>
+Cc: linux-arm-kernel@lists.infradead.org
+Link: http://lore.kernel.org/lkml/20200219021811.20067-5-leo.yan@linaro.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/util/cs-etm.c | 22 +++++++++++++++++-----
+ 1 file changed, 17 insertions(+), 5 deletions(-)
+
+diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
+index 1ddcc67e13dd..87d9943177bc 100644
+--- a/tools/perf/util/cs-etm.c
++++ b/tools/perf/util/cs-etm.c
+@@ -1151,10 +1151,8 @@ static int cs_etm__synth_instruction_sample(struct cs_etm_queue *etmq,
+ 
+ 	cs_etm__copy_insn(etmq, tidq->trace_chan_id, tidq->packet, &sample);
+ 
+-	if (etm->synth_opts.last_branch) {
+-		cs_etm__copy_last_branch_rb(etmq, tidq);
++	if (etm->synth_opts.last_branch)
+ 		sample.branch_stack = tidq->last_branch;
+-	}
+ 
+ 	if (etm->synth_opts.inject) {
+ 		ret = cs_etm__inject_event(event, &sample,
+@@ -1431,6 +1429,10 @@ static int cs_etm__sample(struct cs_etm_queue *etmq,
+ 		u64 offset = etm->instructions_sample_period - instrs_prev;
+ 		u64 addr;
+ 
++		/* Prepare last branches for instruction sample */
++		if (etm->synth_opts.last_branch)
++			cs_etm__copy_last_branch_rb(etmq, tidq);
++
+ 		while (tidq->period_instructions >=
+ 				etm->instructions_sample_period) {
+ 			/*
+@@ -1508,6 +1510,11 @@ static int cs_etm__flush(struct cs_etm_queue *etmq,
+ 
+ 	if (etmq->etm->synth_opts.last_branch &&
+ 	    tidq->prev_packet->sample_type == CS_ETM_RANGE) {
++		u64 addr;
++
++		/* Prepare last branches for instruction sample */
++		cs_etm__copy_last_branch_rb(etmq, tidq);
++
+ 		/*
+ 		 * Generate a last branch event for the branches left in the
+ 		 * circular buffer at the end of the trace.
+@@ -1515,7 +1522,7 @@ static int cs_etm__flush(struct cs_etm_queue *etmq,
+ 		 * Use the address of the end of the last reported execution
+ 		 * range
+ 		 */
+-		u64 addr = cs_etm__last_executed_instr(tidq->prev_packet);
++		addr = cs_etm__last_executed_instr(tidq->prev_packet);
+ 
+ 		err = cs_etm__synth_instruction_sample(
+ 			etmq, tidq, addr,
+@@ -1560,11 +1567,16 @@ static int cs_etm__end_block(struct cs_etm_queue *etmq,
+ 	 */
+ 	if (etmq->etm->synth_opts.last_branch &&
+ 	    tidq->prev_packet->sample_type == CS_ETM_RANGE) {
++		u64 addr;
++
++		/* Prepare last branches for instruction sample */
++		cs_etm__copy_last_branch_rb(etmq, tidq);
++
+ 		/*
+ 		 * Use the address of the end of the last reported execution
+ 		 * range.
+ 		 */
+-		u64 addr = cs_etm__last_executed_instr(tidq->prev_packet);
++		addr = cs_etm__last_executed_instr(tidq->prev_packet);
+ 
+ 		err = cs_etm__synth_instruction_sample(
+ 			etmq, tidq, addr,
+-- 
+2.32.0.272.g935e593368-goog
+
diff --git a/dev-util/perf/files/5.3.7-cs-etm-Swap-packets.patch b/dev-util/perf/files/5.3.7-cs-etm-Swap-packets.patch
new file mode 100644
index 0000000..2ab0c09
--- /dev/null
+++ b/dev-util/perf/files/5.3.7-cs-etm-Swap-packets.patch
@@ -0,0 +1,114 @@
+From d01751563caf0dec7be36f81de77cc0197b77e59 Mon Sep 17 00:00:00 2001
+From: Leo Yan <leo.yan@linaro.org>
+Date: Wed, 19 Feb 2020 10:18:07 +0800
+Subject: [PATCH 1/5] perf cs-etm: Swap packets for instruction samples
+
+If use option '--itrace=iNNN' with Arm CoreSight trace data, perf tool
+fails inject instruction samples; the root cause is the packets are only
+swapped for branch samples and last branches but not for instruction
+samples, so the new coming packets cannot be properly handled for only
+synthesizing instruction samples.
+
+To fix this issue, this patch refactors the code with a new function
+cs_etm__packet_swap() which is used to swap packets and adds the
+condition for instruction samples.
+
+Signed-off-by: Leo Yan <leo.yan@linaro.org>
+Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org>
+Reviewed-by: Mike Leach <mike.leach@linaro.org>
+Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
+Cc: Jiri Olsa <jolsa@redhat.com>
+Cc: Mark Rutland <mark.rutland@arm.com>
+Cc: Namhyung Kim <namhyung@kernel.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: Robert Walker <robert.walker@arm.com>
+Cc: Suzuki Poulouse <suzuki.poulose@arm.com>
+Cc: coresight ml <coresight@lists.linaro.org>
+Cc: linux-arm-kernel@lists.infradead.org
+Link: http://lore.kernel.org/lkml/20200219021811.20067-2-leo.yan@linaro.org
+Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
+---
+ tools/perf/util/cs-etm.c | 39 +++++++++++++++++++--------------------
+ 1 file changed, 19 insertions(+), 20 deletions(-)
+
+diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c
+index b3b3fe3ea345..294b09cfb034 100644
+--- a/tools/perf/util/cs-etm.c
++++ b/tools/perf/util/cs-etm.c
+@@ -363,6 +363,23 @@ struct cs_etm_packet_queue
+ 	return NULL;
+ }
+ 
++static void cs_etm__packet_swap(struct cs_etm_auxtrace *etm,
++				struct cs_etm_traceid_queue *tidq)
++{
++	struct cs_etm_packet *tmp;
++
++	if (etm->sample_branches || etm->synth_opts.last_branch ||
++	    etm->sample_instructions) {
++		/*
++		 * Swap PACKET with PREV_PACKET: PACKET becomes PREV_PACKET for
++		 * the next incoming packet.
++		 */
++		tmp = tidq->packet;
++		tidq->packet = tidq->prev_packet;
++		tidq->prev_packet = tmp;
++	}
++}
++
+ static void cs_etm__packet_dump(const char *pkt_string)
+ {
+ 	const char *color = PERF_COLOR_BLUE;
+@@ -1342,7 +1359,6 @@ static int cs_etm__sample(struct cs_etm_queue *etmq,
+ 			  struct cs_etm_traceid_queue *tidq)
+ {
+ 	struct cs_etm_auxtrace *etm = etmq->etm;
+-	struct cs_etm_packet *tmp;
+ 	int ret;
+ 	u8 trace_chan_id = tidq->trace_chan_id;
+ 	u64 instrs_executed = tidq->packet->instr_count;
+@@ -1406,15 +1422,7 @@ static int cs_etm__sample(struct cs_etm_queue *etmq,
+ 		}
+ 	}
+ 
+-	if (etm->sample_branches || etm->synth_opts.last_branch) {
+-		/*
+-		 * Swap PACKET with PREV_PACKET: PACKET becomes PREV_PACKET for
+-		 * the next incoming packet.
+-		 */
+-		tmp = tidq->packet;
+-		tidq->packet = tidq->prev_packet;
+-		tidq->prev_packet = tmp;
+-	}
++	cs_etm__packet_swap(etm, tidq);
+ 
+ 	return 0;
+ }
+@@ -1443,7 +1451,6 @@ static int cs_etm__flush(struct cs_etm_queue *etmq,
+ {
+ 	int err = 0;
+ 	struct cs_etm_auxtrace *etm = etmq->etm;
+-	struct cs_etm_packet *tmp;
+ 
+ 	/* Handle start tracing packet */
+ 	if (tidq->prev_packet->sample_type == CS_ETM_EMPTY)
+@@ -1478,15 +1485,7 @@ static int cs_etm__flush(struct cs_etm_queue *etmq,
+ 	}
+ 
+ swap_packet:
+-	if (etm->sample_branches || etm->synth_opts.last_branch) {
+-		/*
+-		 * Swap PACKET with PREV_PACKET: PACKET becomes PREV_PACKET for
+-		 * the next incoming packet.
+-		 */
+-		tmp = tidq->packet;
+-		tidq->packet = tidq->prev_packet;
+-		tidq->prev_packet = tmp;
+-	}
++	cs_etm__packet_swap(etm, tidq);
+ 
+ 	return err;
+ }
+-- 
+2.32.0.272.g935e593368-goog
+
diff --git a/dev-util/perf/perf-5.3.7-r12.ebuild b/dev-util/perf/perf-5.3.7-r21.ebuild
similarity index 100%
rename from dev-util/perf/perf-5.3.7-r12.ebuild
rename to dev-util/perf/perf-5.3.7-r21.ebuild
diff --git a/dev-util/perf/perf-5.3.7.ebuild b/dev-util/perf/perf-5.3.7.ebuild
index eb81125..c9535b3 100644
--- a/dev-util/perf/perf-5.3.7.ebuild
+++ b/dev-util/perf/perf-5.3.7.ebuild
@@ -46,7 +46,6 @@
 		sys-devel/llvm:*
 	)
 	coresight? ( dev-libs/opencsd )
-	demangle? ( sys-libs/binutils-libs:= )
 	gtk? ( x11-libs/gtk+:2 )
 	java? ( virtual/jre:* )
 	lzma? ( app-arch/xz-utils )
@@ -57,7 +56,8 @@
 	systemtap? ( dev-util/systemtap )
 	unwind? ( sys-libs/llvm-libunwind )
 	zlib? ( sys-libs/zlib )
-	dev-libs/elfutils"
+	dev-libs/elfutils
+	sys-libs/binutils-libs:="
 DEPEND="${RDEPEND}
 	>=sys-kernel/linux-headers-4.4"
 BDEPEND="
@@ -82,6 +82,25 @@
 	"${FILESDIR}/5.3.7-Don-t-install-self-tests.patch"
 	"${FILESDIR}/5.3.7-Fix-exit-on-signal.patch"
 	"${FILESDIR}/5.3.7-Fix-libbfd-api.patch"
+	"${FILESDIR}/5.3.7-Fix-configure-tests.patch"
+	"${FILESDIR}/5.3.7-Update-perf-bench.patch"
+	"${FILESDIR}/5.3.7-Fix-perf-bench.patch"
+	"${FILESDIR}/5.3.7-Fix-nm-binutils-2.35.patch"
+	"${FILESDIR}/5.3.7-cs-etm-Swap-packets.patch"
+	"${FILESDIR}/5.3.7-cs-etm-Continuously-record-last-branch.patch"
+	"${FILESDIR}/5.3.7-cs-etm-Correct-synth-inst-samples.patch"
+	"${FILESDIR}/5.3.7-cs-etm-Optimize-copying-last-branches.patch"
+	"${FILESDIR}/5.3.7-cs-etm-Fix-unsigned-variable.patch"
+	"${FILESDIR}/5.3.7-Consolidate-symbol-fixup-issue.patch"
+	"${FILESDIR}/5.3.7-Correct-event-attribute-sizes.patch"
+	"${FILESDIR}/5.3.7-Fix-file-corruption-due-to-event-deletion.patch"
+	"${FILESDIR}/5.3.7-Allow-no-CoreSight-sink.patch"
+	"${FILESDIR}/5.3.7-EL2-fix-1-Update-ETM-metadata-format.patch"
+	"${FILESDIR}/5.3.7-EL2-fix-2-Update-linux-coresight-pmu-h.patch"
+	"${FILESDIR}/5.3.7-EL2-fix-3-Fix-bitmap-for-option.patch"
+	"${FILESDIR}/5.3.7-EL2-fix-4-Support-PID-tracing-in-config.patch"
+	"${FILESDIR}/5.3.7-EL2-fix-5-Add-cs-etm-helper.patch"
+	"${FILESDIR}/5.3.7-EL2-fix-6-Detect-pid-in-VMID.patch"
 )
 
 pkg_setup() {
@@ -94,6 +113,7 @@
 		tools/arch tools/build tools/include tools/lib tools/perf tools/scripts
 		include lib "arch/*/lib"
 	)
+	local p1=(${paths[@]/%/*})
 
 	# We expect the tar implementation to support the -j option (both
 	# GNU tar and libarchive's tar support that).
@@ -104,7 +124,7 @@
 	if [[ -n ${LINUX_PATCH} ]] ; then
 		eshopts_push -o noglob
 		ebegin "Filtering partial source patch"
-		filterdiff -p1 ${paths[@]/#/-i } -z "${DISTDIR}"/${LINUX_PATCH} \
+		xz -d -c "${DISTDIR}"/${LINUX_PATCH} | filterdiff -p1 ${p1[@]/#/-i } \
 			> ${P}.patch
 		eend $? || die "filterdiff failed"
 		eshopts_pop
@@ -132,19 +152,14 @@
 }
 
 src_prepare() {
-	default
-
 	pushd "${S_K}" >/dev/null || die
-	# The patches below include the changes beyond tools/perf
-	# so they can't be applied with PATCHES.
-	eapply "${FILESDIR}/5.3.7-Fix-configure-tests.patch"
-	eapply "${FILESDIR}/5.3.7-Update-perf-bench.patch"
-	eapply "${FILESDIR}/5.3.7-Fix-perf-bench.patch"
 	if [[ -n ${LINUX_PATCH} ]] ; then
 		eapply "${WORKDIR}"/${P}.patch
 	fi
+	eapply ${PATCHES[@]}
 	popd || die
 
+	eapply_user
 
 	# Drop some upstream too-developer-oriented flags and fix the
 	# Makefile in general
@@ -176,6 +191,10 @@
 	local arch=$(tc-arch-kernel)
 	local java_dir
 	use java && java_dir="/etc/java-config-2/current-system-vm"
+	use coresight && append-ldflags "-lc++" # opencsd requires linking with C++ libraries.
+
+	MAKEOPTS="${MAKEOPTS} -j1" # crbug.com/1173859
+
 	# FIXME: NO_LIBBABELTRACE
 	emake V=1 VF=1 \
 		CC="$(tc-getCC)" CXX="$(tc-getCXX)" AR="$(tc-getAR)" LD="$(tc-getLD)" \
@@ -250,8 +269,8 @@
 
 pkg_postinst() {
 	if ! use doc ; then
-		elog "Without the doc USE flag you won't get any documentation nor man pages."
-		elog "And without man pages, you won't get any --help output for perf and its"
-		elog "sub-tools."
+		einfo "Without the doc USE flag you won't get any documentation nor man pages."
+		einfo "And without man pages, you won't get any --help output for perf and its"
+		einfo "sub-tools."
 	fi
 }
diff --git a/dev-util/provision-server/provision-server-0.0.1-r7.ebuild b/dev-util/provision-server/provision-server-0.0.1-r7.ebuild
new file mode 100644
index 0000000..8bedf17
--- /dev/null
+++ b/dev-util/provision-server/provision-server-0.0.1-r7.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="d5f4dc19a6af173932c7db54e1550aef00eb2f55"
+CROS_WORKON_TREE="55dda3b3dc30d53d5401aa7b9aa5019068d99fbb"
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME=("../platform/dev")
+CROS_WORKON_SUBTREE="src/chromiumos/test/provision"
+
+inherit cros-go cros-workon
+
+DESCRIPTION="Provision server implementation for installing CrOS on a test device"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/provision"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+CROS_GO_WORKSPACE=(
+	"${S}"
+)
+
+CROS_GO_BINARIES=(
+	"chromiumos/test/provision/cmd/provisionserver"
+)
+
+CROS_GO_TEST=(
+	"chromiumos/test/provision/cmd/provisionserver/..."
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+DEPEND="
+	dev-util/lro-server
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-util/provision-server/provision-server-9999.ebuild b/dev-util/provision-server/provision-server-9999.ebuild
new file mode 100644
index 0000000..870a2fa
--- /dev/null
+++ b/dev-util/provision-server/provision-server-9999.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME=("../platform/dev")
+CROS_WORKON_SUBTREE="src/chromiumos/test/provision"
+
+inherit cros-go cros-workon
+
+DESCRIPTION="Provision server implementation for installing CrOS on a test device"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/provision"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE=""
+
+CROS_GO_WORKSPACE=(
+	"${S}"
+)
+
+CROS_GO_BINARIES=(
+	"chromiumos/test/provision/cmd/provisionserver"
+)
+
+CROS_GO_TEST=(
+	"chromiumos/test/provision/cmd/provisionserver/..."
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+DEPEND="
+	dev-util/lro-server
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-util/puffin/puffin-1.0.0-r437.ebuild b/dev-util/puffin/puffin-1.0.0-r437.ebuild
deleted file mode 100644
index c9e91d3..0000000
--- a/dev-util/puffin/puffin-1.0.0-r437.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 2017 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("e838f3a8f98cc2d8cf38f4cb5323f69bc9bc4a6e" "1e4473b3a02c38a06ff25437128179273e7934da")
-CROS_WORKON_TREE=("824835433089136b9e63f6cfd441ed8c093fa54c" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "bf3628aecbb786ad4e7a12068a4bc7c8b90bb88b")
-inherit cros-constants
-
-CROS_WORKON_INCREMENTAL_BUILD="1"
-CROS_WORKON_LOCALNAME=("../platform2" "../aosp/external/puffin")
-CROS_WORKON_PROJECT=("chromiumos/platform2" "platform/external/puffin")
-CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/puffin")
-CROS_WORKON_REPO=("${CROS_GIT_HOST_URL}" "${CROS_GIT_AOSP_URL}")
-CROS_WORKON_SUBTREE=("common-mk .gn" "")
-CROS_WORKON_MANUAL_UPREV=1
-
-PLATFORM_SUBDIR="puffin"
-
-inherit cros-workon platform
-
-DESCRIPTION="Puffin: Deterministic patching tool for deflate streams"
-HOMEPAGE="https://android.googlesource.com/platform/external/puffin/"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="asan fuzzer"
-
-COMMON_DEPEND="chromeos-base/libbrillo:=[asan?,fuzzer?]
-	dev-libs/protobuf:=
-	dev-util/bsdiff:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-src_install() {
-	if use cros_host; then
-		dobin "${OUT}"/puffin
-	fi
-	dolib.a "${OUT}"/libpuffpatch.a
-	dolib.a "${OUT}"/libpuffdiff.a
-
-	insinto /usr/include
-	doins -r src/include/puffin
-
-	insinto "/usr/$(get_libdir)/pkgconfig"
-	doins libpuffdiff.pc libpuffpatch.pc
-
-	for f in "huff" "puff" "puffpatch"; do
-		platform_fuzzer_install "${S}"/OWNERS "${OUT}/puffin_${f}_fuzzer"
-	done
-}
-
-platform_pkg_test() {
-	platform_test "run" "${OUT}/puffin_test"
-
-	# Run fuzzers.
-	for f in "huff" "puff" "puffpatch"; do
-		platform_fuzzer_test "${OUT}/puffin_${f}_fuzzer"
-	done
-}
diff --git a/dev-util/puffin/puffin-1.0.0-r439.ebuild b/dev-util/puffin/puffin-1.0.0-r439.ebuild
new file mode 100644
index 0000000..aadca14
--- /dev/null
+++ b/dev-util/puffin/puffin-1.0.0-r439.ebuild
@@ -0,0 +1,64 @@
+# Copyright 2017 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("a7d83f416a8915930ffebb61280f935300244c5c" "dd52f5f53116b5880387bc1a878478e172b768be")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "d5b2e1140bb5d80e845bd170bd364e892b05ebd1")
+inherit cros-constants
+
+CROS_WORKON_INCREMENTAL_BUILD="1"
+CROS_WORKON_LOCALNAME=("../platform2" "../aosp/external/puffin")
+CROS_WORKON_PROJECT=("chromiumos/platform2" "platform/external/puffin")
+CROS_WORKON_EGIT_BRANCH=("main" "master")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/puffin")
+CROS_WORKON_REPO=("${CROS_GIT_HOST_URL}" "${CROS_GIT_AOSP_URL}")
+CROS_WORKON_SUBTREE=("common-mk .gn" "")
+CROS_WORKON_MANUAL_UPREV=1
+
+PLATFORM_SUBDIR="puffin"
+
+inherit cros-workon platform
+
+DESCRIPTION="Puffin: Deterministic patching tool for deflate streams"
+HOMEPAGE="https://android.googlesource.com/platform/external/puffin/"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="asan fuzzer"
+
+COMMON_DEPEND="chromeos-base/libbrillo:=[asan?,fuzzer?]
+	dev-libs/protobuf:=
+	dev-util/bsdiff:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+src_install() {
+	if use cros_host; then
+		dobin "${OUT}"/puffin
+	fi
+	dolib.a "${OUT}"/libpuffpatch.a
+	dolib.a "${OUT}"/libpuffdiff.a
+
+	insinto /usr/include
+	doins -r src/include/puffin
+
+	insinto "/usr/$(get_libdir)/pkgconfig"
+	doins libpuffdiff.pc libpuffpatch.pc
+
+	for f in "huff" "puff" "puffpatch"; do
+		platform_fuzzer_install "${S}"/OWNERS "${OUT}/puffin_${f}_fuzzer"
+	done
+}
+
+platform_pkg_test() {
+	platform_test "run" "${OUT}/puffin_test"
+
+	# Run fuzzers.
+	for f in "huff" "puff" "puffpatch"; do
+		platform_fuzzer_test "${OUT}/puffin_${f}_fuzzer"
+	done
+}
diff --git a/dev-util/puffin/puffin-9999.ebuild b/dev-util/puffin/puffin-9999.ebuild
index c34d02b..38bde1e 100644
--- a/dev-util/puffin/puffin-9999.ebuild
+++ b/dev-util/puffin/puffin-9999.ebuild
@@ -9,6 +9,7 @@
 CROS_WORKON_INCREMENTAL_BUILD="1"
 CROS_WORKON_LOCALNAME=("../platform2" "../aosp/external/puffin")
 CROS_WORKON_PROJECT=("chromiumos/platform2" "platform/external/puffin")
+CROS_WORKON_EGIT_BRANCH=("main" "master")
 CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/puffin")
 CROS_WORKON_REPO=("${CROS_GIT_HOST_URL}" "${CROS_GIT_AOSP_URL}")
 CROS_WORKON_SUBTREE=("common-mk .gn" "")
diff --git a/dev-util/shellcheck/OWNERS b/dev-util/shellcheck/OWNERS
index 8063236..a19d880 100644
--- a/dev-util/shellcheck/OWNERS
+++ b/dev-util/shellcheck/OWNERS
@@ -1,3 +1 @@
-set noparent
-
 include chromiumos/third_party/shellcheck:/OWNERS
diff --git a/dev-util/shellcheck/shellcheck-0.7.1-r39.ebuild b/dev-util/shellcheck/shellcheck-0.7.1-r39.ebuild
deleted file mode 100644
index 5b76263..0000000
--- a/dev-util/shellcheck/shellcheck-0.7.1-r39.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-CROS_WORKON_COMMIT="9c62073a12e86ae1e69b0861f6c2e037aaef0727"
-CROS_WORKON_TREE="2acafa54b76af021c96feb8e11cc38e07015c6e5"
-CROS_WORKON_PROJECT="chromiumos/third_party/shellcheck"
-CROS_WORKON_LOCALNAME="shellcheck"
-CROS_WORKON_EGIT_BRANCH="chromeos-0.7"
-CROS_WORKON_DESTDIR="${S}"
-
-CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite"
-CABAL_EXTRA_CONFIGURE_FLAGS="--disable-executable-dynamic
-	--disable-shared
-	--ghc-option=-optl-static
-"
-
-inherit cros-workon haskell-cabal
-
-DESCRIPTION="Shell script analysis tool"
-HOMEPAGE="https://www.shellcheck.net/"
-
-LICENSE="GPL-3"
-SLOT="0/${PV}"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="dev-haskell/aeson:=[profile?]
-	>=dev-haskell/diff-0.2.0:=[profile?]
-	>=dev-haskell/mtl-2.2.1:=[profile?]
-	>=dev-haskell/parsec-3.0:=[profile?]
-	>=dev-haskell/quickcheck-2.7.4:2=[template_haskell,profile?]
-	dev-haskell/regex-tdfa:=[profile?]
-	dev-haskell/semigroups:=[profile?]
-	>=dev-lang/ghc-7.8.2:=
-	>=dev-haskell/cabal-1.18.1.3 <dev-haskell/cabal-2.5
-	dev-libs/gmp[static-libs]
-	dev-libs/libffi[static-libs]
-"
-
-src_install() {
-	cabal_src_install
-	# TODO(crbug.com/1000756): Add support for manpage build process (requires pandoc)
-	doman "${FILESDIR}/${PN}.1"
-}
diff --git a/dev-util/shellcheck/shellcheck-0.7.1-r44.ebuild b/dev-util/shellcheck/shellcheck-0.7.1-r44.ebuild
new file mode 100644
index 0000000..078fc20
--- /dev/null
+++ b/dev-util/shellcheck/shellcheck-0.7.1-r44.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+CROS_WORKON_COMMIT="9b0d715ebcf37ceb7a3ac5278a3550366d05e417"
+CROS_WORKON_TREE="a3d8fd0085198723b1f72f5a33e974abd59d352d"
+CROS_WORKON_PROJECT="chromiumos/third_party/shellcheck"
+CROS_WORKON_LOCALNAME="shellcheck"
+CROS_WORKON_EGIT_BRANCH="chromeos-0.7"
+CROS_WORKON_DESTDIR="${S}"
+
+CABAL_FEATURES="lib profile haddock hoogle hscolour test-suite"
+CABAL_EXTRA_CONFIGURE_FLAGS="--disable-executable-dynamic
+	--disable-shared
+	--ghc-option=-optl-static
+"
+
+inherit cros-workon haskell-cabal
+
+DESCRIPTION="Shell script analysis tool"
+HOMEPAGE="https://www.shellcheck.net/"
+
+LICENSE="GPL-3"
+SLOT="0/${PV}"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="dev-haskell/aeson:=[profile?]
+	>=dev-haskell/diff-0.2.0:=[profile?]
+	>=dev-haskell/mtl-2.2.1:=[profile?]
+	>=dev-haskell/parsec-3.0:=[profile?]
+	>=dev-haskell/quickcheck-2.7.4:2=[template_haskell,profile?]
+	dev-haskell/regex-tdfa:=[profile?]
+	dev-haskell/semigroups:=[profile?]
+	>=dev-lang/ghc-7.8.2:=
+	>=dev-haskell/cabal-1.18.1.3 <dev-haskell/cabal-2.5
+	dev-libs/gmp[static-libs]
+	dev-libs/libffi[static-libs]
+"
+
+src_install() {
+	cabal_src_install
+	# TODO(crbug.com/1000756): Add support for manpage build process (requires pandoc)
+	doman "${FILESDIR}/${PN}.1"
+}
diff --git a/dev-util/shflags/Manifest b/dev-util/shflags/Manifest
deleted file mode 100644
index ff85a68..0000000
--- a/dev-util/shflags/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST shflags-1.0.3.tgz 43549 RMD160 9dbfbd5e13e0173fea8e0459e0afc0837463e349 SHA1 978db4688b2886fa68a037deb82705ba3ecce278 SHA256 956a14771230760e24fa6ad5692bf858d1c9ee2d314320091fd045181cec8a22
diff --git a/dev-util/shflags/files/shflags-1.0.3-add-support-for-busybox-getopt.patch b/dev-util/shflags/files/shflags-1.0.3-add-support-for-busybox-getopt.patch
deleted file mode 100644
index b696921..0000000
--- a/dev-util/shflags/files/shflags-1.0.3-add-support-for-busybox-getopt.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 8ecb41ed440709e7c5ab80c26be5748698aeb631 Mon Sep 17 00:00:00 2001
-From: Mandeep Singh Baines <msb@chromium.org>
-Date: Mon, 4 Mar 2013 22:39:09 -0800
-Subject: [PATCH] add support for busybox getopt
-
-busybox's getopt can be compiled with or without long options
-so we need to test for that.
-
-Signed-off-by: Mandeep Singh Baines <msb@chromium.org>
----
- src/shflags | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/shflags b/src/shflags
-index f69928e..ae41656 100644
---- a/src/shflags
-+++ b/src/shflags
-@@ -119,12 +119,12 @@ __FLAGS_GETOPT_VERS_BSD=2
- getopt >/dev/null 2>&1
- case $? in
-   0) __FLAGS_GETOPT_VERS=${__FLAGS_GETOPT_VERS_STD} ;;  # bsd getopt
--  2)
-+  1|2)
-     # TODO(kward): look into '-T' option to test the internal getopt() version
--    if [ "`getopt --version`" = '-- ' ]; then
--      __FLAGS_GETOPT_VERS=${__FLAGS_GETOPT_VERS_STD}
--    else
-+    if [ "`getopt -lfoo '' --foo 2>/dev/null`" = " --foo --" ]; then
-       __FLAGS_GETOPT_VERS=${__FLAGS_GETOPT_VERS_ENH}
-+    else
-+      __FLAGS_GETOPT_VERS=${__FLAGS_GETOPT_VERS_STD}
-     fi
-     ;;
-   *)
--- 
-1.7.12.4
-
diff --git a/dev-util/shflags/metadata.xml b/dev-util/shflags/metadata.xml
deleted file mode 100644
index b314e39..0000000
--- a/dev-util/shflags/metadata.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-	<herd>shell-tools</herd>
-	<maintainer>
-		<email>vapier@gentoo.org</email>
-	</maintainer>
-	<upstream>
-		<remote-id type="google-code">shflags</remote-id>
-	</upstream>
-</pkgmetadata>
diff --git a/dev-util/shflags/shflags-1.0.3-r1.ebuild b/dev-util/shflags/shflags-1.0.3-r1.ebuild
deleted file mode 120000
index bf0caaf..0000000
--- a/dev-util/shflags/shflags-1.0.3-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-shflags-1.0.3.ebuild
\ No newline at end of file
diff --git a/dev-util/shflags/shflags-1.0.3.ebuild b/dev-util/shflags/shflags-1.0.3.ebuild
deleted file mode 100644
index 4155bd8..0000000
--- a/dev-util/shflags/shflags-1.0.3.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 1999-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-util/shflags/shflags-1.0.3.ebuild,v 1.1 2011/10/15 17:40:57 vapier Exp $
-
-EAPI="4"
-
-inherit eutils
-
-DESCRIPTION="Command-line flags module for Unix shell scripts"
-HOMEPAGE="http://code.google.com/p/shflags/"
-SRC_URI="http://shflags.googlecode.com/files/${P}.tgz"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="*"
-IUSE="examples"
-
-src_test() {
-	cd src
-	./shflags_test.sh || die
-}
-
-src_prepare() {
-	epatch "${FILESDIR}"/${PN}-1.0.3-add-support-for-busybox-getopt.patch
-}
-
-src_install() {
-	dohtml README.html
-	dodoc README.txt doc/*.txt
-	insinto /usr/share/misc
-	doins src/shflags
-	use examples && dodoc examples/*.sh
-}
diff --git a/dev-util/stressapptest/files/0002-use-memfd_create-instead-of-shm_open.patch b/dev-util/stressapptest/files/0002-use-memfd_create-instead-of-shm_open.patch
new file mode 100644
index 0000000..fc943fc3
--- /dev/null
+++ b/dev-util/stressapptest/files/0002-use-memfd_create-instead-of-shm_open.patch
@@ -0,0 +1,43 @@
+From c6cd93d150a2418d0d5d6d90a5e258d4653f437f Mon Sep 17 00:00:00 2001
+From: Meng-Huan Yu <menghuan@chromium.org>
+Date: Fri, 12 Mar 2021 03:18:51 +0800
+Subject: [PATCH] use memfd_create instead of shm_open
+
+---
+ src/os.cc | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/os.cc b/src/os.cc
+index 089b92d..61f22cb 100644
+--- a/src/os.cc
++++ b/src/os.cc
+@@ -36,6 +36,7 @@
+ #include <sys/shm.h>
+ #endif
+ #include <unistd.h>
++#include <sys/mman.h>
+ 
+ #ifndef SHM_HUGETLB
+ #define SHM_HUGETLB      04000  // remove when glibc defines it
+@@ -580,7 +581,9 @@ bool OsLayer::AllocateTestMem(int64 length, uint64 paddr_base) {
+       int shm_object;
+       void *shmaddr = NULL;
+ 
+-      shm_object = shm_open("/stressapptest", O_CREAT | O_RDWR, S_IRWXU);
++      // shm_open doesn't work because /dev/shm will not occupy all memory by
++      // default. Use memfd_create() instead.
++      shm_object = memfd_create("/stressapptest", 0);
+       if (shm_object < 0) {
+         int err = errno;
+         string errtxt = ErrorString(err);
+@@ -631,7 +634,6 @@ bool OsLayer::AllocateTestMem(int64 length, uint64 paddr_base) {
+       logprintf(0, "Log: Using posix shared memory object 0x%x %s.\n",
+                 shm_object, location_message);
+     } while (0);
+-    shm_unlink("/stressapptest");
+   }
+ #endif  // HAVE_SYS_SHM_H
+ 
+-- 
+2.31.0.rc2.261.g7f71774620-goog
+
diff --git a/dev-util/stressapptest/stressapptest-1.0.9-r4.ebuild b/dev-util/stressapptest/stressapptest-1.0.9-r5.ebuild
similarity index 100%
rename from dev-util/stressapptest/stressapptest-1.0.9-r4.ebuild
rename to dev-util/stressapptest/stressapptest-1.0.9-r5.ebuild
diff --git a/dev-util/stressapptest/stressapptest-1.0.9.ebuild b/dev-util/stressapptest/stressapptest-1.0.9.ebuild
index 3998ab0..ba559cb 100644
--- a/dev-util/stressapptest/stressapptest-1.0.9.ebuild
+++ b/dev-util/stressapptest/stressapptest-1.0.9.ebuild
@@ -27,6 +27,7 @@
 src_prepare() {
 	eapply "${FILESDIR}"/${PN}-gnu_cxx-namespace.patch
 	eapply "${FILESDIR}"/0001-include-stdint.h.patch
+	eapply "${FILESDIR}"/0002-use-memfd_create-instead-of-shm_open.patch
 	eapply_user
 
 	# To build 64-bit version for arm64.
@@ -37,6 +38,8 @@
 }
 
 src_configure() {
+	append-lfs-flags
+
 	# Matches the configure & sat.cc logic.
 	use debug || append-cppflags -DNDEBUG -DCHECKOPTS
 	econf --disable-default-optimizations
diff --git a/dev-util/test-exec-server/test-exec-server-0.0.1-r11.ebuild b/dev-util/test-exec-server/test-exec-server-0.0.1-r11.ebuild
new file mode 100644
index 0000000..983065c
--- /dev/null
+++ b/dev-util/test-exec-server/test-exec-server-0.0.1-r11.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="48236dd245bb804845d8d7d6309f1769c76cc2e8"
+CROS_WORKON_TREE="e1ccefbfeef648c4212cf53a99e488290712a30d"
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME=("../platform/dev")
+CROS_WORKON_SUBTREE="src/chromiumos/test/execution"
+
+inherit cros-go cros-workon
+
+DESCRIPTION="Test execution server for running tests and capturing results"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/execution"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+CROS_GO_WORKSPACE=(
+	"${S}"
+)
+
+CROS_GO_BINARIES=(
+	"chromiumos/test/execution/cmd/testexecserver"
+)
+
+CROS_GO_TEST=(
+	"chromiumos/test/execution/cmd/testexecserver/..."
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+DEPEND="
+	chromeos-base/tast-cmd:=
+	chromeos-base/tast-proto
+	dev-util/lro-server
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-util/test-exec-server/test-exec-server-9999.ebuild b/dev-util/test-exec-server/test-exec-server-9999.ebuild
new file mode 100644
index 0000000..2841ded
--- /dev/null
+++ b/dev-util/test-exec-server/test-exec-server-9999.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME=("../platform/dev")
+CROS_WORKON_SUBTREE="src/chromiumos/test/execution"
+
+inherit cros-go cros-workon
+
+DESCRIPTION="Test execution server for running tests and capturing results"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/execution"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE=""
+
+CROS_GO_WORKSPACE=(
+	"${S}"
+)
+
+CROS_GO_BINARIES=(
+	"chromiumos/test/execution/cmd/testexecserver"
+)
+
+CROS_GO_TEST=(
+	"chromiumos/test/execution/cmd/testexecserver/..."
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+DEPEND="
+	chromeos-base/tast-cmd:=
+	chromeos-base/tast-proto
+	dev-util/lro-server
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-util/test-plan/OWNERS b/dev-util/test-plan/OWNERS
new file mode 100644
index 0000000..634b013
--- /dev/null
+++ b/dev-util/test-plan/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform/dev-util:/src/OWNERS
diff --git a/dev-util/test-plan/test-plan-0.0.1-r10.ebuild b/dev-util/test-plan/test-plan-0.0.1-r10.ebuild
new file mode 100644
index 0000000..229d4df
--- /dev/null
+++ b/dev-util/test-plan/test-plan-0.0.1-r10.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="388f7bf6253dcc8266ab5557aad0159ed3553ffd"
+CROS_WORKON_TREE="55726521578abdb261bd7fc4f14694a1224bdcd5"
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME=("../platform/dev")
+CROS_WORKON_SUBTREE="src/chromiumos/test/plan"
+
+inherit cros-go cros-workon
+
+DESCRIPTION="A tool to generate ChromeOS CoverageRule protos from SourceTestPlan protos."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/plan"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+CROS_GO_BINARIES=(
+	"chromiumos/test/plan/cmd/testplan.go"
+)
+
+CROS_GO_TEST=(
+	"chromiumos/test/plan/..."
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+CROS_GO_VERSION="${PF}"
+
+DEPEND="
+	chromeos-base/cros-config-api
+	dev-go/glog
+	dev-go/luci-go-common
+	dev-go/maruel-subcommands
+	dev-go/protobuf
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-util/test-plan/test-plan-9999.ebuild b/dev-util/test-plan/test-plan-9999.ebuild
new file mode 100644
index 0000000..7309d8d
--- /dev/null
+++ b/dev-util/test-plan/test-plan-9999.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT="chromiumos/platform/dev-util"
+CROS_WORKON_LOCALNAME=("../platform/dev")
+CROS_WORKON_SUBTREE="src/chromiumos/test/plan"
+
+inherit cros-go cros-workon
+
+DESCRIPTION="A tool to generate ChromeOS CoverageRule protos from SourceTestPlan protos."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/plan"
+
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE=""
+
+CROS_GO_BINARIES=(
+	"chromiumos/test/plan/cmd/testplan.go"
+)
+
+CROS_GO_TEST=(
+	"chromiumos/test/plan/..."
+)
+
+CROS_GO_VET=(
+	"${CROS_GO_TEST[@]}"
+)
+
+CROS_GO_VERSION="${PF}"
+
+DEPEND="
+	chromeos-base/cros-config-api
+	dev-go/glog
+	dev-go/luci-go-common
+	dev-go/maruel-subcommands
+	dev-go/protobuf
+"
+RDEPEND="${DEPEND}"
diff --git a/dev-util/toolchain-utils/toolchain-utils-0.0.1-r664.ebuild b/dev-util/toolchain-utils/toolchain-utils-0.0.1-r664.ebuild
deleted file mode 100644
index 5153536..0000000
--- a/dev-util/toolchain-utils/toolchain-utils-0.0.1-r664.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="6f559ce22c83d2ebe12c7858c107f2151e769879"
-CROS_WORKON_TREE="a512623f58d26799fbdb37b7f168eb8fea826a86"
-CROS_WORKON_PROJECT="chromiumos/third_party/toolchain-utils"
-CROS_WORKON_LOCALNAME="toolchain-utils"
-
-inherit cros-workon
-
-DESCRIPTION="Compilation and runtime tests for toolchain"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/toolchain-utils/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	app-misc/pax-utils
-	dev-lang/python
-	sys-devel/binutils
-"
-
-src_install() {
-	local tc_dir="/usr/$(get_libdir)/${PN}"
-	local dit_dir="${tc_dir}/debug_info_test"
-
-	insinto ${tc_dir}
-	doins -r debug_info_test
-
-	fperms a+x ${dit_dir}/debug_info_test.py
-
-	dosym ${dit_dir}/debug_info_test.py /usr/bin/debug_info_test
-
-	newbin afdo_redaction/redact_profile.py redact_textual_afdo_profile
-
-	newbin afdo_redaction/remove_indirect_calls.py remove_indirect_calls
-
-	newbin afdo_redaction/remove_cold_functions.py remove_cold_functions
-}
diff --git a/dev-util/toolchain-utils/toolchain-utils-0.0.1-r722.ebuild b/dev-util/toolchain-utils/toolchain-utils-0.0.1-r722.ebuild
new file mode 100644
index 0000000..47f3028
--- /dev/null
+++ b/dev-util/toolchain-utils/toolchain-utils-0.0.1-r722.ebuild
@@ -0,0 +1,42 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="52f7bb64f1b8dbc617b3c8bd21ce3a10f36b786b"
+CROS_WORKON_TREE="e911bdbba91a2d91d761b62a3d79ac8fd2c009dd"
+CROS_WORKON_PROJECT="chromiumos/third_party/toolchain-utils"
+CROS_WORKON_LOCALNAME="toolchain-utils"
+
+inherit cros-workon
+
+DESCRIPTION="Compilation and runtime tests for toolchain"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/toolchain-utils/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	app-misc/pax-utils
+	dev-lang/python
+	sys-devel/binutils
+"
+
+src_install() {
+	local tc_dir="/usr/$(get_libdir)/${PN}"
+	local dit_dir="${tc_dir}/debug_info_test"
+
+	insinto ${tc_dir}
+	doins -r debug_info_test
+
+	fperms a+x ${dit_dir}/debug_info_test.py
+
+	dosym ${dit_dir}/debug_info_test.py /usr/bin/debug_info_test
+
+	newbin afdo_redaction/redact_profile.py redact_textual_afdo_profile
+
+	newbin afdo_redaction/remove_indirect_calls.py remove_indirect_calls
+
+	newbin afdo_redaction/remove_cold_functions.py remove_cold_functions
+}
diff --git a/dev-util/turbostat/files/chromeos-version.sh b/dev-util/turbostat/files/chromeos-version.sh
index da552ab..b72befc 120000
--- a/dev-util/turbostat/files/chromeos-version.sh
+++ b/dev-util/turbostat/files/chromeos-version.sh
@@ -1 +1 @@
-../../../sys-kernel/chromeos-kernel-5_4/files/chromeos-version.sh
\ No newline at end of file
+../../../sys-kernel/chromeos-kernel-5_10/files/chromeos-version.sh
\ No newline at end of file
diff --git a/dev-util/turbostat/turbostat-5.10.46-r2263.ebuild b/dev-util/turbostat/turbostat-5.10.46-r2263.ebuild
new file mode 100644
index 0000000..8b838ce
--- /dev/null
+++ b/dev-util/turbostat/turbostat-5.10.46-r2263.ebuild
@@ -0,0 +1,48 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="6edc6175aeacd80e1b1a432284ca2be14cdf1dd5"
+CROS_WORKON_TREE=("3202862f18c3bfd4f166d01f916bce7bcee6894d" "77108e315e621449fc0ca943e5bdf79aa8744ef8" "82f471a1f381850d569b3edbfa0ba3ec42139f56")
+CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
+CROS_WORKON_LOCALNAME="kernel/v5.10"
+CROS_WORKON_EGIT_BRANCH="chromeos-5.10"
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_OUTOFTREE_BUILD=1
+# Narrow the workon scope to just files referenced by the turbostat
+# Makefile:
+# https://chromium.googlesource.com/chromiumos/third_party/kernel/+/chromeos-4.14/tools/power/x86/turbostat/Makefile#12
+CROS_WORKON_SUBTREE="arch/x86/include/asm tools/include tools/power/x86/turbostat"
+
+inherit cros-sanitizers cros-workon toolchain-funcs
+
+HOMEPAGE="https://www.kernel.org/"
+DESCRIPTION="Intel processor C-state and P-state reporting tool"
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="-asan"
+
+RDEPEND="sys-libs/libcap:="
+
+DEPEND="${RDEPEND}"
+
+domake() {
+	emake -C tools/power/x86/turbostat \
+		BUILD_OUTPUT="$(cros-workon_get_build_dir)" DESTDIR="${D}" \
+		CC="$(tc-getCC)" "$@"
+}
+
+src_configure() {
+	sanitizers-setup-env
+	default
+}
+
+src_compile() {
+	domake
+}
+
+src_install() {
+	domake install
+}
diff --git a/dev-util/turbostat/turbostat-5.4.88-r2220.ebuild b/dev-util/turbostat/turbostat-5.4.88-r2220.ebuild
deleted file mode 100644
index 3778bab..0000000
--- a/dev-util/turbostat/turbostat-5.4.88-r2220.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="9cfbb670ce667c8ec4c6291e1a989d61ec16f160"
-CROS_WORKON_TREE=("8f19927b7e96d151163f06f053f98d784879e517" "3f029e0be2f731c347ddd69221163262d6302e64" "271149b9f1e2617df41a5968210b918f9c716bd3")
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v5.4"
-CROS_WORKON_EGIT_BRANCH="chromeos-5.4"
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_OUTOFTREE_BUILD=1
-# Narrow the workon scope to just files referenced by the turbostat
-# Makefile:
-# https://chromium.googlesource.com/chromiumos/third_party/kernel/+/chromeos-4.14/tools/power/x86/turbostat/Makefile#12
-CROS_WORKON_SUBTREE="arch/x86/include/asm tools/include tools/power/x86/turbostat"
-
-inherit cros-sanitizers cros-workon toolchain-funcs
-
-HOMEPAGE="https://www.kernel.org/"
-DESCRIPTION="Intel processor C-state and P-state reporting tool"
-
-LICENSE="GPL-2"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="-asan"
-
-RDEPEND="sys-libs/libcap:="
-
-DEPEND="${RDEPEND}"
-
-domake() {
-	emake -C tools/power/x86/turbostat \
-		BUILD_OUTPUT="$(cros-workon_get_build_dir)" DESTDIR="${D}" \
-		CC="$(tc-getCC)" "$@"
-}
-
-src_configure() {
-	sanitizers-setup-env
-	default
-}
-
-src_compile() {
-	domake
-}
-
-src_install() {
-	domake install
-}
diff --git a/dev-util/turbostat/turbostat-9999.ebuild b/dev-util/turbostat/turbostat-9999.ebuild
index 8fea001..5c37b9a 100644
--- a/dev-util/turbostat/turbostat-9999.ebuild
+++ b/dev-util/turbostat/turbostat-9999.ebuild
@@ -3,8 +3,8 @@
 
 EAPI=7
 CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v5.4"
-CROS_WORKON_EGIT_BRANCH="chromeos-5.4"
+CROS_WORKON_LOCALNAME="kernel/v5.10"
+CROS_WORKON_EGIT_BRANCH="chromeos-5.10"
 CROS_WORKON_INCREMENTAL_BUILD=1
 CROS_WORKON_OUTOFTREE_BUILD=1
 # Narrow the workon scope to just files referenced by the turbostat
diff --git a/dev-util/vulkan-tools/Manifest b/dev-util/vulkan-tools/Manifest
index 753ad75..d100c79 100644
--- a/dev-util/vulkan-tools/Manifest
+++ b/dev-util/vulkan-tools/Manifest
@@ -1 +1 @@
-DIST vulkan-tools-1.1.92.0.tar.gz 344286 BLAKE2B 2bbf19b458b780f26b5520fa298416cda50c951fd04529da4fdf77b0e2c57d38ca1dd7e9bd08cb14cf9a7eda0b5a58623f7a75e0d421d1511ed50056c2b369ca SHA512 cdca9332b399300b7011c90ab25a8227028009ffade9c587788229175476a000843a340625691a6a7970433961b776d8aab69332a4d3b5a2d89fdc18330302cc
+DIST vulkan-tools-1.2.162.tar.gz 724232 BLAKE2B 16eb2dde35883fb2c7c263a72a615818ff8e1557ac9d74553ec3784d96a827e6900efa4e42218cb9081f7501d9b1a53eac82c360c2d20922043308515ab48983 SHA512 7827f6775dfb26820a2a2cbc60e7da8c7e7bdcb57b65523fbc6b2e989ae6869b04a57ae458c72715722c67d842660574697834c92f9b909dd5673da1945ac6dc
diff --git a/dev-util/vulkan-tools/OWNERS b/dev-util/vulkan-tools/OWNERS
new file mode 100644
index 0000000..882c57e
--- /dev/null
+++ b/dev-util/vulkan-tools/OWNERS
@@ -0,0 +1 @@
+chadversary@chromium.org
diff --git a/dev-util/vulkan-tools/metadata.xml b/dev-util/vulkan-tools/metadata.xml
index bee42ed..9d9218c 100644
--- a/dev-util/vulkan-tools/metadata.xml
+++ b/dev-util/vulkan-tools/metadata.xml
@@ -11,7 +11,6 @@
 	</maintainer>
 	<use>
 		<flag name="cube">Build the cube/cubepp demos</flag>
-		<flag name="vulkaninfo">Build the vulkaninfo utility</flag>
 	</use>
 	<upstream>
 		<remote-id type="github">KhronosGroup/Vulkan-Tools</remote-id>
diff --git a/dev-util/vulkan-tools/vulkan-tools-1.1.92.0.ebuild b/dev-util/vulkan-tools/vulkan-tools-1.1.92.0.ebuild
deleted file mode 100644
index 5c6ba33..0000000
--- a/dev-util/vulkan-tools/vulkan-tools-1.1.92.0.ebuild
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-PYTHON_COMPAT=( python3_{4,5,6} )
-
-if [[ "${PV}" == "9999" ]]; then
-	EGIT_REPO_URI="https://github.com/KhronosGroup/Vulkan-Tools.git"
-	EGIT_SUBMODULES=()
-	inherit git-r3
-else
-	EGIT_COMMIT="9bbdd552f0fd62741aa1f1e02ab3eafc45cf3c1e"
-	KEYWORDS="*"
-	SRC_URI="https://github.com/KhronosGroup/Vulkan-Tools/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
-	S="${WORKDIR}/Vulkan-Tools-${EGIT_COMMIT}"
-fi
-
-inherit python-any-r1 cmake-multilib
-
-DESCRIPTION="Official Vulkan Tools and Utilities for Windows, Linux, Android, and MacOS"
-HOMEPAGE="https://github.com/KhronosGroup/Vulkan-Tools"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-IUSE="-cube +vulkaninfo X wayland"
-
-DEPEND="
-	cube? ( dev-util/glslang:=[${MULTILIB_USEDEP}] )
-	dev-util/vulkan-headers
-	media-libs/vulkan-loader:=[${MULTILIB_USEDEP},wayland?,X?]
-	wayland? ( dev-libs/wayland:=[${MULTILIB_USEDEP}] )
-	X? (
-		x11-libs/libX11:=[${MULTILIB_USEDEP}]
-		x11-libs/libXrandr:=[${MULTILIB_USEDEP}]
-	   )"
-
-pkg_setup() {
-	MULTILIB_CHOST_TOOLS=()
-
-	if use vulkaninfo; then
-		MULTILIB_CHOST_TOOLS+=( /usr/bin/vulkaninfo )
-	fi
-
-	if use cube; then
-		MULTILIB_CHOST_TOOLS+=(
-			/usr/bin/vkcube
-			/usr/bin/vkcubepp
-		)
-	fi
-
-	python-any-r1_pkg_setup
-}
-
-multilib_src_configure() {
-	local mycmakeargs=(
-		-DCMAKE_SKIP_RPATH=True
-		-DBUILD_CUBE=$(usex cube)
-		-DBUILD_VULKANINFO=$(usex vulkaninfo)
-		-DBUILD_WSI_MIR_SUPPORT=False
-		-DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland)
-		-DBUILD_WSI_XCB_SUPPORT=$(usex X)
-		-DBUILD_WSI_XLIB_SUPPORT=$(usex X)
-		-DGLSLANG_INSTALL_DIR="/usr"
-		-DVULKAN_HEADERS_INSTALL_DIR="/usr"
-	)
-
-	# Upstream only supports one window system at a time
-	# If X is set at all, even if wayland is set, use X
-	#
-	# If -cube and/or -vulkaninfo is set, the flags we set
-	# are ignored, so we don't need to consider that
-	if use X; then
-		mycmakeargs+=(
-			-DCUBE_WSI_SELECTION="XCB"
-			-DVULKANINFO_WSI_SELECTION="XCB"
-		)
-	fi
-
-	if ! use X && use wayland; then
-		mycmakeargs+=(
-			-DCUBE_WSI_SELECTION="WAYLAND"
-		)
-	fi
-
-	cmake-utils_src_configure
-}
-
-multilib_src_install() {
-	cmake-utils_src_install
-}
diff --git a/dev-util/vulkan-tools/vulkan-tools-1.2.162.ebuild b/dev-util/vulkan-tools/vulkan-tools-1.2.162.ebuild
new file mode 100644
index 0000000..46070ee
--- /dev/null
+++ b/dev-util/vulkan-tools/vulkan-tools-1.2.162.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+MY_PN=Vulkan-Tools
+CMAKE_ECLASS="cmake"
+PYTHON_COMPAT=( python3_{6,7,8,9} )
+inherit cmake-multilib python-any-r1
+
+if [[ ${PV} == *9999* ]]; then
+	EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
+	EGIT_SUBMODULES=()
+	inherit git-r3
+else
+	SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+	KEYWORDS="*"
+	S="${WORKDIR}"/${MY_PN}-${PV}
+fi
+
+DESCRIPTION="Official Vulkan Tools and Utilities for Windows, Linux, Android, and MacOS"
+HOMEPAGE="https://github.com/KhronosGroup/Vulkan-Tools"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+
+IUSE="cube wayland +X"
+
+# Cube demo only supports one window system at a time
+REQUIRED_USE="cube? ( ^^ ( X wayland ) )"
+
+BDEPEND="${PYTHON_DEPS}
+	>=dev-util/cmake-3.10.2
+	cube? ( dev-util/glslang:=[${MULTILIB_USEDEP}] )
+"
+RDEPEND="
+	>=media-libs/vulkan-loader-${PV}:=[${MULTILIB_USEDEP},wayland?,X?]
+	wayland? ( dev-libs/wayland:=[${MULTILIB_USEDEP}] )
+	X? (
+		x11-libs/libX11:=[${MULTILIB_USEDEP}]
+		x11-libs/libXrandr:=[${MULTILIB_USEDEP}]
+	)
+"
+DEPEND="${RDEPEND}
+	>=dev-util/vulkan-headers-${PV}
+"
+
+pkg_setup() {
+	MULTILIB_CHOST_TOOLS=(
+		/usr/bin/vulkaninfo
+	)
+
+	use cube && MULTILIB_CHOST_TOOLS+=(
+		/usr/bin/vkcube
+		/usr/bin/vkcubepp
+	)
+
+	python-any-r1_pkg_setup
+}
+
+multilib_src_configure() {
+	cros_enable_cxx_exceptions
+
+	local mycmakeargs=(
+		-DCMAKE_SKIP_RPATH=ON
+		-DBUILD_VULKANINFO=ON
+		-DBUILD_CUBE=$(usex cube)
+		-DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland)
+		-DBUILD_WSI_XCB_SUPPORT=$(usex X)
+		-DBUILD_WSI_XLIB_SUPPORT=$(usex X)
+		-DVULKAN_HEADERS_INSTALL_DIR="${EPREFIX}/usr"
+	)
+
+	use cube && mycmakeargs+=(
+		-DGLSLANG_INSTALL_DIR="${EPREFIX}/usr"
+		-DCUBE_WSI_SELECTION=$(usex X XCB WAYLAND)
+	)
+
+	cmake_src_configure
+}
+
+multilib_src_install() {
+	cmake_src_install
+}
diff --git a/dev-vcs/patman/patman-0.0.1-r341.ebuild b/dev-vcs/patman/patman-0.0.1-r341.ebuild
deleted file mode 100644
index 879c899..0000000
--- a/dev-vcs/patman/patman-0.0.1-r341.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (c) 2012 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.
-
-EAPI=7
-
-CROS_WORKON_COMMIT="89150a9314bd432ed8cca9a03034435346fb0b16"
-CROS_WORKON_TREE="8da6ef5b49d3307fea8b69f202dc39fc01c256bb"
-CROS_WORKON_PROJECT="chromiumos/third_party/u-boot"
-CROS_WORKON_LOCALNAME="u-boot/files"
-CROS_WORKON_SUBTREE="tools/patman"
-
-PYTHON_COMPAT=( python3_6 )
-
-inherit cros-workon distutils-r1
-
-DESCRIPTION="Patman tool (from U-Boot) for sending patches upstream"
-HOMEPAGE="https://www.denx.de/wiki/U-Boot"
-
-LICENSE="GPL-2"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
-RDEPEND=""
-
-src_prepare() {
-	cd tools/patman
-	distutils-r1_src_prepare
-}
-
-src_compile() {
-	cd tools/patman
-	distutils-r1_src_compile
-}
-
-src_install() {
-	cd tools/patman
-	distutils-r1_src_install
-}
diff --git a/dev-vcs/patman/patman-0.0.1-r342.ebuild b/dev-vcs/patman/patman-0.0.1-r342.ebuild
new file mode 100644
index 0000000..48bd07e
--- /dev/null
+++ b/dev-vcs/patman/patman-0.0.1-r342.ebuild
@@ -0,0 +1,41 @@
+# Copyright (c) 2012 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="ff8cb34d79384524ed81027f7d07a31f7405c27d"
+CROS_WORKON_TREE="3429c1a71068b0c1e875e3a0d6aea14f8b4564a5"
+CROS_WORKON_PROJECT="chromiumos/third_party/u-boot"
+CROS_WORKON_LOCALNAME="u-boot/files"
+CROS_WORKON_SUBTREE="tools/patman"
+
+PYTHON_COMPAT=( python3_6 )
+
+inherit cros-workon distutils-r1
+
+DESCRIPTION="Patman tool (from U-Boot) for sending patches upstream"
+HOMEPAGE="https://www.denx.de/wiki/U-Boot"
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+BDEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+RDEPEND=""
+
+src_prepare() {
+	cd tools/patman
+	distutils-r1_src_prepare
+}
+
+src_compile() {
+	cd tools/patman
+	distutils-r1_src_compile
+}
+
+src_install() {
+	cd tools/patman
+	distutils-r1_src_install
+}
diff --git a/eclass/arc-android-installer.eclass b/eclass/arc-android-installer.eclass
deleted file mode 100644
index f75d907..0000000
--- a/eclass/arc-android-installer.eclass
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# @ECLASS: arc-android-installer.eclass
-# @MAINTAINER:
-# ARC Team
-# @BUGREPORTS:
-# Please report bugs via http://crbug.com/new (with label Build)
-# @VCSURL:
-# https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/HEAD/eclass/@ECLASS@
-# @BLURB: helper eclass for building ARC
-# @DESCRIPTION:
-# This eclass is a wrapper for chromeos-base/android-installer. It provides
-# helper functions to build ARC.
-
-if [[ -z ${_ARC_ANDROID_INSTALLER_ECLASS} ]]; then
-_ARC_ANDROID_INSTALLER_ECLASS=1
-
-BDEPEND="chromeos-base/android-installer"
-
-# @ECLASS-VARIABLE: ARC_ANDROID_INSTALLER_VERSION
-# @DESCRIPTION:
-# The version of android-installer to use.
-
-# @ECLASS-VARIABLE: ARC_ANDROID_INSTALLER_ENV_LIST
-# @DESCRIPTION:
-# A list of environment variables to export to android-installer.
-ARC_ANDROID_INSTALLER_ENV_LIST=()
-
-# @ECLASS-VARIABLE: ARC_ANDROID_INSTALLER_USE_LIST
-# @DESCRIPTION:
-# A list of use flags to export to android-installer.
-ARC_ANDROID_INSTALLER_USE_LIST=()
-
-# @FUNCTION: arc-android-installer_helper
-# @USAGE: <caller>
-# @DESCRIPTION:
-# A helper function to build the command to run the corresponding version of
-# android-installer with proper --env/--use/--caller arguments.
-arc-android-installer_helper() {
-	if [[ $# != 1 ]]; then
-		die "${FUNCNAME[0]}: invalid arguments: only caller is expected"
-	fi
-	local caller="$1"
-
-	local cmd="android-installer"
-	if [[ -v ARC_ANDROID_INSTALLER_VERSION ]]; then
-		cmd+="_${ARC_ANDROID_INSTALLER_VERSION}"
-	fi
-	local env env_args=()
-	for env in "${ARC_ANDROID_INSTALLER_ENV_LIST[@]}"; do
-		env_args+=("--env=${env}=${!env}")
-	done
-	local use use_args=()
-	for use in "${ARC_ANDROID_INSTALLER_USE_LIST[@]}"; do
-		if use "${use}"; then
-			use_args+=("--use=+${use}")
-		else
-			use_args+=("--use=-${use}")
-		fi
-	done
-	local caller_arg="--caller=${caller}"
-	"${cmd}" "${env_args[@]}" "${use_args[@]}" "${caller_arg}" || die "${FUNCNAME[0]}: android-installer failed"
-}
-
-# @FUNCTION: arc-android-installer_src_compile
-# @DESCRIPTION:
-# Run android-installer's src_compile phase.
-arc-android-installer_src_compile() {
-	if [[ $# != 0 ]]; then
-		die "${FUNCNAME[0]}: invalid arguments: no argument is expected"
-	fi
-
-	arc-android-installer_helper "ebuild_src_compile"
-}
-
-fi
diff --git a/eclass/arc-build-constants.eclass b/eclass/arc-build-constants.eclass
index b553176..603ce69 100644
--- a/eclass/arc-build-constants.eclass
+++ b/eclass/arc-build-constants.eclass
@@ -12,6 +12,7 @@
 # USE flags corresponding to different VM versions.
 ANDROID_VM_VERS=(
 	android-vm-rvc
+	android-vm-sc
 	android-vm-master
 )
 
diff --git a/eclass/arc-build.eclass b/eclass/arc-build.eclass
index d4fb693..4e74e3e 100644
--- a/eclass/arc-build.eclass
+++ b/eclass/arc-build.eclass
@@ -104,9 +104,9 @@
 
 		# The clang version used by ARC is too old to recognize certain
 		# recent microarchitectures like tremont. Filter it out for now.
-		# TODO(b/161353194) If clang is uprevved, please remove this 
-		# filter and see if the build succeeds.
-		filter-flags -march=tremont
+		# TODO(b/161353194,b/181375275) If clang is uprevved, please
+		# remove this filter and see if the build succeeds.
+		filter-flags -march=tremont -march=alderlake
 
 		# multilib.eclass does not use CFLAGS_${DEFAULT_ABI}, but
 		# we need to add some flags valid only for amd64, so we trick
diff --git a/eclass/autotest.eclass b/eclass/autotest.eclass
index d373b96..1010429 100644
--- a/eclass/autotest.eclass
+++ b/eclass/autotest.eclass
@@ -106,7 +106,7 @@
 	local dst=${1}
 
 	# create a working enviroment for pre-building
-	ln -sf "${SYSROOT}"${AUTOTEST_BASE}/{tko,global_config.ini,shadow_config.ini} "${dst}"/
+	ln -sf "${SYSROOT}"${AUTOTEST_BASE}/{tko,global_config.ini,shadow_config.ini,autotest_lib} "${dst}"/
 
 	# NOTE: in order to make autotest not notice it's running from /usr/local/, we need
 	# to make sure the binaries are real, because they do the path magic
@@ -201,6 +201,16 @@
 	mkdir -p "${AUTOTEST_WORKDIR}"/server/tests
 	mkdir -p "${AUTOTEST_WORKDIR}"/server/site_tests
 
+	# Symlinks are needed for new setup_modules
+	# delete the top level symlink beforehand
+	find ${AUTOTEST_WORKDIR} -name "autotest_lib" -delete \
+		|| die "Top level symlink did not exist!"
+
+
+	# Create the top level symlink (want autotest_lib --> .)
+	ln -s . ${AUTOTEST_WORKDIR}/autotest_lib \
+		|| die "Could not create autotest_lib symlink"
+
 	TEST_LIST=$(get_test_list)
 
 	# Pull in the individual test cases.
diff --git a/eclass/coreboot-private-files.eclass b/eclass/coreboot-private-files.eclass
index 18c1d11..3302477 100644
--- a/eclass/coreboot-private-files.eclass
+++ b/eclass/coreboot-private-files.eclass
@@ -17,6 +17,11 @@
 	insinto /firmware/coreboot-private
 	local file
 	while read -d $'\0' -r file; do
+		# This file should never be installed and is only used by the
+		# cros_workon uprev script.
+		if [[ "${file}" == "${FILESDIR}/chromeos-version.sh" ]]; then
+			continue;
+		fi
 		doins -r "${file}"
 	done < <(find -H "${srcdir}" -maxdepth 1 -mindepth 1 -print0)
 }
diff --git a/eclass/cros-bazel.eclass b/eclass/cros-bazel.eclass
index 0c4e963..fa499d4 100644
--- a/eclass/cros-bazel.eclass
+++ b/eclass/cros-bazel.eclass
@@ -70,6 +70,8 @@
 	"@bazel_tools//platforms:linux",
 ]
 
+arm64_constraints = aarch64_constraints
+
 platform(
 	name = "amd64_platform",
 	constraint_values = amd64_constraints,
@@ -90,6 +92,11 @@
 	constraint_values = aarch64_constraints,
 )
 
+platform(
+	name = "arm64_platform",
+	constraint_values = arm64_constraints,
+)
+
 cc_toolchain_suite(
 	name = "toolchain",
 	toolchains = {
@@ -451,30 +458,34 @@
 }
 
 # @FUNCTION: bazel_setup_crosstool
-# @USAGE: <host cpu string> <target cpu string>
+# @USAGE: [<host cpu string> <target cpu string>]
 # @MAINTAINER:
 # Michael Martis <martis@chromium.org>
 # @DESCRIPTION:
-# Accepts Bazel "host" and "target" CPU strings, and creates Bazel targets
-# (under ${T}) that can be used to configure Bazel C++ compilation based on
-# Portage environment variables.
+# Creates Bazel targets (under ${T}) that can be used to configure
+# Bazel C++ compilation based on Portage environment variables.
 #
 # Also updates the bazelrc to specify the new crosstool targets by default.
 #
 # Should only be called once; subsequent calls will have no effect.
+# (Optional) Accepts Bazel "host" and "target" CPU strings as input arguments.
 bazel_setup_crosstool() {
+	if [[ $# -ne 0 && $# -ne 2 ]]; then
+		die "Must give exactly 0 or 2 arguments."
+	fi
+
 	if [[ -f "${BAZEL_CC_BAZELRC}" ]]; then
 		return
 	fi
 
 	bazel_setup_bazelrc
 
-	local host_cpu_str="${1}"
+	local host_cpu_str="${1:-$(tc-arch "${CBUILD}")}"
 	if [[ -z "${host_cpu_str}" ]]; then
 		die "Must specify host CPU string when generating Bazel CROSSTOOL targets."
 	fi
 
-	local target_cpu_str="${2}"
+	local target_cpu_str="${2:-$(tc-arch "${CHOST}")}"
 	if [[ -z "${target_cpu_str}" ]]; then
 		die "Must specify target CPU string when generating Bazel CROSSTOOL targets."
 	fi
@@ -506,14 +517,19 @@
 	build --linkopt="$(bazel_get_stdlib_linkflag "$(tc-get-compiler-type)" || die)"
 	build --host_linkopt="$(bazel_get_stdlib_linkflag "$(tc-get-BUILD_compiler-type)" || die)"
 
-	# Some compiler scripts require SYSROOT defined.
-	build --action_env SYSROOT="${PORTAGE_CONFIGROOT}"
-
 	# In case another config has disabled cross-compilation, re-enable it here.
 	build --distinct_host_configuration
 	EOF
 
 	echo "import ${BAZEL_CC_BAZELRC}" >> "${BAZEL_BAZELRC}" || die
+
+	# Update bazelrc to point to our board build tree.
+	cat >> "${BAZEL_BAZELRC}" <<-EOF
+	# Some compiler scripts require SYSROOT and PREFIX defined.
+	build --action_env SYSROOT="${PORTAGE_CONFIGROOT}"
+	build --define=PREFIX="${PORTAGE_CONFIGROOT}/usr"
+	EOF
+
 }
 
 
diff --git a/eclass/cros-board.eclass b/eclass/cros-board.eclass
index a24e8cb..d4655e4 100644
--- a/eclass/cros-board.eclass
+++ b/eclass/cros-board.eclass
@@ -28,6 +28,7 @@
 # they won't be accidentally recycled in the future.
 ALL_BOARDS=(
 	acorn
+	adlrvp
 	ambassador
 	amd64-corei7
 	#amd64-drm
@@ -52,7 +53,10 @@
 	asurada
 	atlas
 	atlas-blueznext
+	atlas-kernelnext
 	atlas-kvm
+	aurora
+	aurora-borealis
 	auron
 	auron_paine
 	auron_pearlvalley
@@ -83,6 +87,7 @@
 	borealis
 	bruteus
 	brya
+	brya-manatee
 	bubs
 	buddy
 	buddy-cfm
@@ -106,6 +111,7 @@
 	celes-cheets
 	chell
 	chell-cheets
+	cherry
 	cheza
 	cheza-freedreno
 	cheza64
@@ -118,6 +124,7 @@
 	#cnlrvp
 	cobblepot
 	coral
+	coral-kernelnext
 	cosmos
 	cranky
 	cyan
@@ -182,6 +189,7 @@
 	#fox_baskingridge
 	#fox_wtm1
 	#fox_wtm2
+	galaxy
 	gale
 	gandof
 	genesis
@@ -212,18 +220,22 @@
 	hatch
 	hatch-arc-r
 	hatch-arc-r-ack
+	hatch-arc-r-signed
 	hatch-arc-r-userdebug
 	hatch-arc-s
 	hatch-blueznext
 	hatch-borealis
 	hatch-diskswap
 	hatch-kernelnext
+	hatch-manatee
 	heli
+	herobrine
 	hsb
 	#iclrvp
 	ironhide
 	jacuzzi
 	jacuzzi-arc64
+	jacuzzi-kernelnext
 	#jadeite
 	#jaguar
 	jecht
@@ -232,6 +244,7 @@
 	kalista-cfm
 	kayle
 	kblrvp
+	keeby
 	kefka
 	kefka-kernelnext
 	#kennet
@@ -241,13 +254,16 @@
 	kevin-arc64
 	#kevin-bertha
 	kevin-tpm2
+	kevin-userdebug
 	kidd
 	#kiev
 	kip
 	klang
 	kukui
 	kukui-arc-r
+	kukui-arc-r-signed
 	kukui-arc64
+	kukui-kernelnext
 	kumo
 	kunimitsu
 	lakitu
@@ -259,6 +275,7 @@
 	lakitu-slice
 	lakitu-st
 	lars
+	lars-kernelnext
 	laser
 	lasilla-ground
 	#lasilla-sky
@@ -295,12 +312,14 @@
 	moose
 	mushu
 	nami
+	nami-kernelnext
 	nami-kvm
 	nautilus
 	#nefario
 	#newbie
 	ninja
 	nocturne
+	nocturne-kernelnext
 	novato
 	novato-arc64
 	novato-arcnext
@@ -379,6 +398,7 @@
 	scarlet
 	scarlet-arc64
 	#scarlet-arcnext
+	senor
 	sentry
 	setzer
 	shadowkeep
@@ -389,6 +409,7 @@
 	smaug-cheets
 	smaug-kasan
 	snappy
+	snappy-kernelnext
 	sonic
 	soraka
 	soraka-libcamera
@@ -424,8 +445,10 @@
 	tidus
 	tricky
 	trogdor
+	trogdor-arc-r
 	trogdor-kernelnext
 	trogdor64
+	trogdor64-manatee
 	ultima
 	umaro
 	#urara
@@ -452,7 +475,9 @@
 	viking
 	viking-poc2
 	volteer
+	volteer-borealis
 	volteer-kernelnext
+	volteer-manatee
 	#waluigi
 	whirlwind
 	whlrvp
@@ -490,6 +515,7 @@
 	zork-arc-r
 	zork-borealis
 	zork-kernelnext
+	zork-minios
 )
 
 # Use the CROS_BOARDS defined by ebuild, otherwise use ALL_BOARDS.
diff --git a/eclass/cros-camera.eclass b/eclass/cros-camera.eclass
index 1c0d897..28463f5 100644
--- a/eclass/cros-camera.eclass
+++ b/eclass/cros-camera.eclass
@@ -12,23 +12,7 @@
 # Packages in src/platform2/camera are in active development. We want builds
 # to be incremental and fast. This centralized the logic needed for this.
 
-# @ECLASS-VARIABLE: CROS_CAMERA_TESTS
-# @DESCRIPTION:
-# An array of tests to run when FEATURES=test is set.
-: ${CROS_CAMERA_TESTS:=}
-
-inherit multilib platform
-
-# @FUNCTION: cros-camera_doheader
-# @USAGE: <header files...>
-# @DESCRIPTION:
-# Install the given header files to /usr/include/cros-camera.
-cros-camera_doheader() {
-	(
-		insinto "/usr/include/cros-camera"
-		doins "$@"
-	)
-}
+inherit multilib
 
 # @FUNCTION: cros-camera_dohal
 # @USAGE: <source HAL file> <destination HAL file>
@@ -45,34 +29,3 @@
 		newins "${src}" "${dst}"
 	)
 }
-
-# @FUNCTION: cros-camera_dopc
-# @USAGE: <pkg-config template file>
-# @DESCRIPTION:
-# Generate the pkg-config file by replacing @INCLUDE_DIR@, @LIB_DIR@, and
-# @LIBCHROME_VERS@ with the values detected at build time, then install the
-# generated pkg-config file.
-cros-camera_dopc() {
-	[[ $# -eq 1 ]] || die "Usage: ${FUNCNAME} <pc file template>"
-
-	local in_pc_file=$1
-	local out_pc_file="${WORKDIR}/${in_pc_file##*/}"
-	out_pc_file="${out_pc_file%%.template}"
-	local include_dir="/usr/include/cros-camera"
-	local lib_dir="/usr/$(get_libdir)"
-
-	sed -e "s|@INCLUDE_DIR@|${include_dir}|" -e "s|@LIB_DIR@|${lib_dir}|" \
-		-e "s|@LIBCHROME_VERS@|$(libchrome_ver)|" \
-		"${in_pc_file}" > "${out_pc_file}"
-	(
-		insinto "${lib_dir}/pkgconfig"
-		doins "${out_pc_file}"
-	)
-}
-
-platform_pkg_test() {
-	local test_bin
-	for test_bin in "${CROS_CAMERA_TESTS[@]}"; do
-		platform_test "run" "${OUT}/${test_bin}"
-	done
-}
diff --git a/eclass/cros-ec-board.eclass b/eclass/cros-ec-board.eclass
index ad12ec8..8eab540 100644
--- a/eclass/cros-ec-board.eclass
+++ b/eclass/cros-ec-board.eclass
@@ -31,10 +31,8 @@
 case "${EAPI:-0}" in
 5|6|7)
 	DEPEND+="
-		unibuild? (
-			!generated_cros_config? ( chromeos-base/chromeos-config )
-			generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-		)"
+		unibuild? ( chromeos-base/chromeos-config:= )
+	"
 	;;
 esac
 
@@ -69,7 +67,7 @@
 
 IUSE_FIRMWARES="${EC_BOARD_NAMES[@]/#/${EC_BOARD_USE_PREFIX}}"
 IUSE_EXTRA_FIRMWARES="${EC_BOARD_NAMES[@]/#/${EC_EXTRA_BOARD_USE_PREFIX}}"
-IUSE="${IUSE_FIRMWARES} ${IUSE_EXTRA_FIRMWARES} cros_host unibuild generated_cros_config"
+IUSE="${IUSE_FIRMWARES} ${IUSE_EXTRA_FIRMWARES} cros_host unibuild"
 
 
 # Echo the current boards
diff --git a/eclass/cros-ec.eclass b/eclass/cros-ec.eclass
index ff645f8..44198bc 100644
--- a/eclass/cros-ec.eclass
+++ b/eclass/cros-ec.eclass
@@ -32,7 +32,7 @@
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md"
 
 LICENSE="CrOS-EC"
-IUSE="quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test"
+IUSE="quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test"
 
 RDEPEND="
 	fuzzer? (
@@ -53,10 +53,7 @@
 	test? ( dev-libs/libprotobuf-mutator:= )
 	virtual/chromeos-ec-private-files
 	virtual/chromeos-ec-touch-firmware
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
+	unibuild? ( chromeos-base/chromeos-config:= )
 	bootblock_in_ec? ( sys-boot/coreboot )
 "
 
@@ -344,7 +341,7 @@
 	# rotted, so we only build the ones that compile.
 	# NOTE: Any changes here must also be reflected in
 	# platform/ec/firmware_builder.py which is used for the ec cq
-	local -a unit_test_boards=("bloonchipper")
+	local -a unit_test_boards=("bloonchipper" "dartmonkey")
 	for board in "${unit_test_boards[@]}"; do
 		einfo "Building unit tests for ${board}"
 		BOARD=${board} emake "${EC_OPTS[@]}" tests
diff --git a/eclass/cros-factory-board.eclass b/eclass/cros-factory-board.eclass
index f57ea56..8e3529c 100644
--- a/eclass/cros-factory-board.eclass
+++ b/eclass/cros-factory-board.eclass
@@ -18,6 +18,14 @@
 		die "unsupported EAPI (${EAPI}) in eclass (${ECLASS})" ;;
 esac
 
+IUSE="racc"
+
+DEPEND="
+	!racc? (
+		chromeos-base/factory_runtime_probe
+	)
+"
+
 # @FUNCTION: cros-factory-board_install_project_config
 # @USAGE:
 # @DESCRIPTION:
@@ -39,11 +47,15 @@
 	local config_source_dir
 	for config_source_dir in "${S}"/*/*/"factory/generated"; do
 		local project_dir=$(dirname -- "$(dirname -- "${config_source_dir}")")
+		local overlay_source_dir="${project_dir}/factory/files"
 		local PROGRAM=$(basename -- "$(dirname -- "${project_dir}")")
 		local PROJECT=$(basename -- "${project_dir}")
+		local file
 		for file in "${config_source_dir}"/*; do
+			mkdir -p "${overlay_source_dir}/project_config" || die
 			local new_file="${PROGRAM}_${PROJECT}_$(basename -- "${file}")"
-			cp -f "${file}" "${project_config_workdir}/${new_file}" || die
+			ln -f "${file}" "${project_config_workdir}/${new_file}" || die
+			ln -f "${file}" "${overlay_source_dir}/project_config/${new_file}" || die
 			configs+=("${new_file}")
 		done
 	done
@@ -61,7 +73,9 @@
 	insinto "/usr/local/factory/bundle/project_config"
 	doins "${package}"
 	# Install project_config into the toolkit directly.
-	factory_create_resource "factory-project-config" "${WORKDIR}" "." \
+	# TODO(cyueh) Remove unibuild-project-config after we enabling downloading
+	# project specific toolkit from CPFE or easy bundle creation.
+	factory_create_resource "unibuild-project-config" "${WORKDIR}" "." \
 		"project_config"
 }
 
@@ -83,17 +97,33 @@
 		local project_dir=$(dirname -- "$(dirname -- "${overlay_source_dir}")")
 		local PROGRAM=$(basename -- "$(dirname -- "${project_dir}")")
 		local PROJECT=$(basename -- "${project_dir}")
-		echo "overlay_source_dir:${overlay_source_dir}"
 		# Install project overlay into the toolkit directly.
-		factory_create_resource "factory-${PROGRAM}-${PROJECT}-overlay" \
+		factory_create_resource "project-${PROGRAM}-${PROJECT}-overlay" \
 			"${overlay_source_dir}" "." "."
 	done
 	shopt -u nullglob
 }
 
+# @FUNCTION: cros-factory-board_install_factory_runtime_probe
+# @USAGE:
+# @DESCRIPTION:
+# Install `factory_runtime_probe` binary and its related libraries as a factory
+# resource.
+cros-factory-board_install_factory_runtime_probe() {
+	local archive_dir="${WORKDIR}/factory_runtime_probe_archive"
+	mkdir -p "${archive_dir}" || die
+	"${SYSROOT}/usr/bin/factory_runtime_probe_installer" \
+		--target "${archive_dir}" || die
+	factory_create_resource "factory-runtime_probe" \
+		"${archive_dir}" "bin/factory_runtime_probe" "."
+}
+
 cros-factory-board_src_install() {
 	cros-factory-board_install_project_config
 	cros-factory-board_install_project_overlay
+	if ! use racc; then
+		cros-factory-board_install_factory_runtime_probe
+	fi
 }
 
 EXPORT_FUNCTIONS src_install
diff --git a/eclass/cros-firmware.eclass b/eclass/cros-firmware.eclass
index 541f344..a7db0d0 100644
--- a/eclass/cros-firmware.eclass
+++ b/eclass/cros-firmware.eclass
@@ -51,22 +51,15 @@
 
 # $board-overlay/make.conf may contain these flags to always create "firmware
 # from source".
-IUSE="bootimage cros_ec cros_ish unibuild generated_cros_config"
+IUSE="bootimage cros_ec cros_ish tot_firmware unibuild zephyr zephyr_ec"
 
 # "futility update" is needed when building and running updater package.
-COMMON_DEPEND=" chromeos-base/vboot_reference "
-
-# For unibuild we need EAPI 5 for the sub-slot dependency feature.
-case "${EAPI:-0}" in
-5|6|7)
-	COMMON_DEPEND+="
-		unibuild? (
-			!generated_cros_config? ( chromeos-base/chromeos-config )
-			generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-		)
-	"
-	;;
-esac
+COMMON_DEPEND="
+	chromeos-base/vboot_reference
+	unibuild? (
+		chromeos-base/chromeos-config
+	)
+"
 
 # Dependency for SFX v1 (needed by both build and run time).
 COMMON_DEPEND+="
@@ -100,6 +93,7 @@
 DEPEND+="
 	bootimage? ( sys-boot/chromeos-bootimage )
 	cros_ec? ( chromeos-base/chromeos-ec )
+	zephyr? ( chromeos-base/chromeos-zephyr )
 	"
 
 RESTRICT="mirror"
@@ -274,7 +268,9 @@
 		_add_param image_cmd -w "${FW_RW_IMAGE_LOCATION}"
 	fi
 
-	if [ ${#image_cmd[@]} -eq 0 ] && ! use unibuild; then
+	if use tot_firmware; then
+		einfo "tot_firmware is enabled, skipping BCS image updater"
+	elif [ ${#image_cmd[@]} -eq 0 ] && ! use unibuild; then
 		# Create an empty update script for the generic case
 		# (no need to update)
 		einfo "Building empty firmware update script"
@@ -312,7 +308,9 @@
 		# exist, we can't use _add_file_param.
 		_add_param image_cmd -b "${local_root}/image-BUILD_TARGET.bin"
 		local_root+="/BUILD_TARGET"
-		if use cros_ec; then
+		if use zephyr_ec; then
+			_add_param image_cmd -e "${local_root}/zephyr.bin"
+		elif use cros_ec; then
 			_add_param image_cmd -e "${local_root}/ec.bin"
 			_add_param image_cmd -p "${local_root}/pd.bin"
 		fi
@@ -404,21 +402,25 @@
 	if [[ -f "${files}/srcuris" ]]; then
 		mapfile -t uris < "${files}/srcuris"
 		SRC_URI+=" ${uris[*]}"
-		return
+	else
+		FW_IMAGE_LOCATION="${CROS_FIRMWARE_MAIN_IMAGE}"
+		FW_RW_IMAGE_LOCATION="${CROS_FIRMWARE_MAIN_RW_IMAGE}"
+		EC_IMAGE_LOCATION="${CROS_FIRMWARE_EC_IMAGE}"
+		PD_IMAGE_LOCATION="${CROS_FIRMWARE_PD_IMAGE}"
+
+		# Add these files for use if unibuild is not set.
+		for i in {FW,FW_RW,EC,PD}_IMAGE_LOCATION; do
+			uris+=" $(_add_source ${i})"
+		done
+
+		if [[ -n "${uris// }" ]]; then
+			SRC_URI+="!unibuild? ( ${uris} ) "
+		fi
 	fi
 
-	FW_IMAGE_LOCATION="${CROS_FIRMWARE_MAIN_IMAGE}"
-	FW_RW_IMAGE_LOCATION="${CROS_FIRMWARE_MAIN_RW_IMAGE}"
-	EC_IMAGE_LOCATION="${CROS_FIRMWARE_EC_IMAGE}"
-	PD_IMAGE_LOCATION="${CROS_FIRMWARE_PD_IMAGE}"
-
-	# Add these files for use if unibuild is not set.
-	for i in {FW,FW_RW,EC,PD}_IMAGE_LOCATION; do
-		uris+=" $(_add_source ${i})"
-	done
-
-	if [[ -n "${uris// }" ]]; then
-		SRC_URI+="!unibuild? ( ${uris} ) "
+	# No sources required if only building firmware from ToT.
+	if [[ -n "${SRC_URI}" ]]; then
+		SRC_URI="!tot_firmware? ( ${SRC_URI} )"
 	fi
 }
 
diff --git a/eclass/cros-fwupd.eclass b/eclass/cros-fwupd.eclass
new file mode 100644
index 0000000..a511444
--- /dev/null
+++ b/eclass/cros-fwupd.eclass
@@ -0,0 +1,111 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: cros-fwupd.eclass
+# @MAINTAINER:
+# The Chromium OS Authors
+# @BLURB: Unifies logic for installing fwupd firmware files.
+
+if [[ -z ${_CROS_FWUPD_ECLASS} ]]; then
+_CROS_FWUPD_ECLASS=1
+
+inherit udev
+
+IUSE="remote"
+
+S="${WORKDIR}"
+
+case "${EAPI:-0}" in
+7) ;;
+*) die "unsupported EAPI (${EAPI}) in eclass (${ECLASS})" ;;
+esac
+
+# @ECLASS-VARIABLE: CROS_FWUPD_URL
+# @DESCRIPTION:
+# Complete URL for package data on our LVFS mirror.
+: "${CROS_FWUPD_URL:=gs://chromeos-localmirror/lvfs/}"
+
+# Force archive fetching from the LVFS mirror GS bucket instead of the common CrOS mirror buckets.
+# By default, emerge will only fetch archives from our mirrors regardless of SRC_URI settings.
+RESTRICT+=" mirror"
+
+# @FUNCTION: _generate_remote_conf
+# @DESCRIPTION:
+# Unpack fwupd firmware files to create metainfo.xml and remote.conf.
+_generate_remote_conf() {
+	local file sha1sum sha256sum size
+
+	printf "<?xml version='1.0' encoding='utf-8'?>\n \
+		<components origin=\"lvfs\" version=\"0.9\">\n" > ${PN}.metainfo.xml
+	for file in ${A}; do
+		if [[ ${file} == *.cab ]]; then
+			sha1sum=$(sha1sum "${DISTDIR}/${file}" | awk '{print $1}')
+			sha256sum=$(sha256sum "${DISTDIR}/${file}" | awk '{print $1}')
+			size=$(du -sbL "${DISTDIR}/${file}" | awk '{print $1}')
+
+			cat << EOF > script.sed
+s#</release>#\t<location>https://fwupd.org/downloads/${file}</location>\n\
+\t<checksum type="sha1" filename="${file}"target="container">${sha1sum}</checksum>\n\
+\t<checksum type="sha256" filename="${file}"target="container">${sha256sum}</checksum>\n\
+\t<size type="download">${size}</size>\n\
+\t</release>#g;/<?xml.*/d;s/^/  /g
+EOF
+			cabextract -p -F "*.metainfo.xml" "${DISTDIR}"/"${file}" | \
+				sed -f script.sed >> ${PN}.metainfo.xml || die
+		fi
+	done
+	printf "</components>\n" >> ${PN}.metainfo.xml
+	gzip ${PN}.metainfo.xml
+
+	cat << EOF > ${PN}.conf
+# Copyright 2021 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.
+
+[fwupd Remote]
+Enabled=true
+Title=${PN}
+Type=local
+Keyring=none
+MetadataURI=file:///usr/share/fwupd/remotes.d/vendor/${PN}.metainfo.xml.gz
+FirmwareBaseURI=https://storage.googleapis.com/chromeos-localmirror/lvfs/
+ApprovalRequired=false
+EOF
+}
+
+# @FUNCTION: cros-fwupd_src_unpack
+# @DESCRIPTION:
+# Unpack fwupd firmware files.
+cros-fwupd_src_unpack() {
+	use remote && _generate_remote_conf
+}
+
+# @FUNCTION: cros-fwupd_src_install
+# @DESCRIPTION:
+# Install fwupd firmware files.
+cros-fwupd_src_install() {
+	local file
+
+	if use remote; then
+		insinto /usr/share/fwupd/remotes.d/vendor/
+		doins ${PN}.metainfo.xml.gz
+		insinto /etc/fwupd/remotes.d/
+		doins ${PN}.conf
+	else
+		insinto /usr/share/fwupd/remotes.d/vendor/firmware
+		for file in ${A}; do
+			einfo "Installing firmware ${file}"
+			doins "${DISTDIR}"/"${file}"
+		done
+	fi
+
+	# Install udev rules for automatic firmware update.
+	local srcdir="${1:-${FILESDIR}}"
+	while read -d $'\0' -r file; do
+		udev_dorules "${file}"
+	done < <(find -H "${srcdir}" -name "*.rules" -maxdepth 1 -mindepth 1 -print0)
+}
+
+EXPORT_FUNCTIONS src_unpack src_install
+
+fi
diff --git a/eclass/cros-kernel/qualcomm_defconfig b/eclass/cros-kernel/qualcomm_defconfig
index 8fa8ac7..de1be08 100644
--- a/eclass/cros-kernel/qualcomm_defconfig
+++ b/eclass/cros-kernel/qualcomm_defconfig
@@ -491,6 +491,8 @@
 CONFIG_HID_WIIMOTE=m
 CONFIG_USB_HIDDEV=y
 CONFIG_I2C_HID=y
+CONFIG_I2C_HID_OF=y
+CONFIG_I2C_HID_OF_GOODIX=y
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 # CONFIG_USB_DEFAULT_PERSIST is not set
 CONFIG_USB_MON=y
@@ -559,6 +561,7 @@
 CONFIG_QCOM_CLK_RPMH=y
 CONFIG_MSM_GCC_8916=y
 CONFIG_SC_DISPCC_7180=y
+CONFIG_SC_LPASS_CORECC_7180=y
 CONFIG_SC_GPUCC_7180=y
 CONFIG_SC_MSS_7180=y
 CONFIG_SC_VIDEOCC_7180=y
@@ -627,6 +630,7 @@
 CONFIG_DRM_EVDI=m
 CONFIG_INTERCONNECT=y
 CONFIG_INTERCONNECT_QCOM=y
+CONFIG_INTERCONNECT_QCOM_OSM_L3=y
 CONFIG_INTERCONNECT_QCOM_RPMH=y
 CONFIG_INTERCONNECT_QCOM_BCM_VOTER=y
 CONFIG_INTERCONNECT_QCOM_SC7180=y
@@ -725,3 +729,4 @@
 CONFIG_TEST_UDELAY=m
 CONFIG_ERROR_ON_WARNING=y
 CONFIG_DEBUG_ALIGN_RODATA=y
+CONFIG_LEDS_PWM=y
diff --git a/eclass/cros-kernel/rockchip64_defconfig b/eclass/cros-kernel/rockchip64_defconfig
index fd57439..a3ebab6 100644
--- a/eclass/cros-kernel/rockchip64_defconfig
+++ b/eclass/cros-kernel/rockchip64_defconfig
@@ -310,6 +310,7 @@
 CONFIG_MFD_CROS_EC_I2C=y
 CONFIG_MFD_CROS_EC_SPI=y
 CONFIG_MFD_CROS_EC_CHARDEV=y
+CONFIG_CHROME_PLATFORMS=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_I2C=y
 CONFIG_CROS_EC_SPI=y
@@ -398,6 +399,7 @@
 CONFIG_HID_WIIMOTE=m
 CONFIG_USB_HIDDEV=y
 CONFIG_I2C_HID=y
+CONFIG_I2C_HID_OF=y
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 # CONFIG_USB_DEFAULT_PERSIST is not set
 CONFIG_USB_MON=y
diff --git a/eclass/cros-kernel/rockchip_defconfig b/eclass/cros-kernel/rockchip_defconfig
index 1d938f8..55e886f 100644
--- a/eclass/cros-kernel/rockchip_defconfig
+++ b/eclass/cros-kernel/rockchip_defconfig
@@ -294,6 +294,7 @@
 CONFIG_MFD_CROS_EC_I2C=y
 CONFIG_MFD_CROS_EC_SPI=y
 CONFIG_MFD_CROS_EC_CHARDEV=y
+CONFIG_CHROME_PLATFORMS=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_I2C=y
 CONFIG_CROS_EC_SPI=y
@@ -376,6 +377,7 @@
 CONFIG_HID_WIIMOTE=m
 CONFIG_USB_HIDDEV=y
 CONFIG_I2C_HID=y
+CONFIG_I2C_HID_OF=y
 CONFIG_USB=y
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 CONFIG_USB_OTG=y
diff --git a/eclass/cros-kernel/x86_64_defconfig b/eclass/cros-kernel/x86_64_defconfig
index 05a817f..3f136df 100644
--- a/eclass/cros-kernel/x86_64_defconfig
+++ b/eclass/cros-kernel/x86_64_defconfig
@@ -482,6 +482,7 @@
 CONFIG_HID_PID=y
 CONFIG_USB_HIDDEV=y
 CONFIG_I2C_HID=y
+CONFIG_I2C_HID_ACPI=y
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
 # CONFIG_USB_DEFAULT_PERSIST is not set
 CONFIG_USB_MON=y
diff --git a/eclass/cros-kernel2.eclass b/eclass/cros-kernel2.eclass
index edca4a5..610f2a9 100644
--- a/eclass/cros-kernel2.eclass
+++ b/eclass/cros-kernel2.eclass
@@ -39,7 +39,7 @@
 	builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
 "
 
-WIRELESS_VERSIONS=( 3.4 3.8 3.18 4.2 )
+WIRELESS_VERSIONS=( 4.2 )
 WIRELESS_SUFFIXES=( ${WIRELESS_VERSIONS[@]/.} )
 
 IUSE="
@@ -53,6 +53,7 @@
 	+fit_compression_kernel_lz4
 	fit_compression_kernel_lzma
 	firmware_install
+	frozen_gcc
 	-kernel_sources
 	kernel_warning_level_1
 	kernel_warning_level_2
@@ -74,10 +75,12 @@
 	+vdso32
 	-criu
 	-docker
+	-lxc
 "
 REQUIRED_USE="
 	compilation_database? ( clang )
 	?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma )
+	frozen_gcc? ( !clang )
 	lld? ( clang )
 	llvm_ias? ( clang )
 "
@@ -178,13 +181,16 @@
 	irqsoff_tracer
 	iscsi
 	lockdown
+	lxc
 	kasan
 	kcov
+	kcsan
 	kernel_compress_xz
 	kexec_file
 	kgdb
 	kmemleak
 	kvm
+	kvm_invept_global
 	kvm_host
 	kvm_nested
 	lockdebug
@@ -227,7 +233,6 @@
 	vtconsole
 	wifi_testbed_ap
 	wifi_diag
-	wireless34
 	x32
 	xen_guest
 	hyperv_guest
@@ -334,6 +339,7 @@
 CONFIG_DEBUG_WX=y
 CONFIG_GENERIC_IRQ_DEBUGFS=y
 CONFIG_IRQ_DOMAIN_DEBUG=y
+CONFIG_INIT_STACK_ALL_PATTERN=y
 "
 
 diskswap_desc="Enable swap file"
@@ -498,9 +504,17 @@
 kcov_desc="Enable kcov"
 kcov_config="
 CONFIG_KCOV=y
+CONFIG_KCOV_ENABLE_COMPARISONS=y
 # CONFIG_RANDOMIZE_BASE is not set
 "
 
+kcsan_desc="Enable KCSAN"
+# KCSAN reports of unknown origin are too frequent and not very useful for now.
+kcsan_config="
+CONFIG_KCSAN=y
+CONFIG_KCSAN_REPORT_RACE_UNKNOWN_ORIGIN=n
+"
+
 kernel_compress_xz_desc="Compresss kernel image with XZ"
 kernel_compress_xz_config="
 # CONFIG_KERNEL_GZIP is not set
@@ -558,6 +572,7 @@
 CONFIG_PROVE_RCU=y
 CONFIG_PROVE_LOCKING=y
 CONFIG_DEBUG_ATOMIC_SLEEP=y
+CONFIG_LOCALVERSION=\"-lockdep\"
 ${lockstat_config}
 "
 
@@ -642,6 +657,11 @@
 CONFIG_VIRTUALIZATION=y
 "
 
+kvm_invept_global_desc="Workaround for b/188008861"
+kvm_invept_global_config="
+CONFIG_KVM_INVEPT_GLOBAL=y
+"
+
 kvm_host_desc="Support running virtual machines with KVM"
 kvm_host_config="
 CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
@@ -936,13 +956,6 @@
 CONFIG_X86_X32=y
 "
 
-wireless34_desc="Wireless 3.4 stack"
-wireless34_config="
-CONFIG_ATH9K_BTCOEX=m
-CONFIG_ATH9K_BTCOEX_COMMON=m
-CONFIG_ATH9K_BTCOEX_HW=m
-"
-
 xen_guest_desc="Support running under Xen hypervisor"
 xen_guest_config="
 CONFIG_XEN=y
@@ -1100,6 +1113,20 @@
 CONFIG_INIT_STACK_ALL=n
 "
 
+lxc_desc="LXC Support (Linux Containers)"
+lxc_config="
+CONFIG_CGROUP_DEVICE=y
+CONFIG_CPUSETS=y
+CONFIG_CGROUP_CPUACCT=y
+CONFIG_RESOURCE_COUNTERS=y
+CONFIG_DEVPTS_MULTIPLE_INSTANCES=y
+CONFIG_MACVLAN=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_BRIDGE_NETFILTER=y
+CONFIG_NETFILTER_XT_TARGET_CHECKSUM=y
+CONFIG_NETFILTER_XT_MATCH_COMMENT=y
+"
+
 transparent_hugepage_desc="Transparent Hugepage Support"
 transparent_hugepage_config="
 CONFIG_ARM_LPAE=y
@@ -1127,6 +1154,13 @@
 CONFIG_DEBUG_STACK_USAGE=y
 CONFIG_SCHED_STACK_END_CHECK=y
 CONFIG_WQ_WATCHDOG=y
+CONFIG_HARDENED_USERCOPY=y
+CONFIG_HARDENED_USERCOPY_FALLBACK=y
+CONFIG_HARDENED_USERCOPY_PAGESPAN=y
+CONFIG_BUG_ON_DATA_CORRUPTION=y
+CONFIG_DEBUG_PI_LIST=y
+CONFIG_REFCOUNT_FULL=y
+# CONFIG_DEBUG_KOBJECT_RELEASE=y TODO(b/185149799): Enable once MMC patch lands
 "
 
 # Firmware binaries selected by USE flags.  Selected firmware binaries will
@@ -1135,13 +1169,16 @@
 FIRMWARE_BINARIES=(
 	builtin_fw_amdgpu
 	builtin_fw_amdgpu_carrizo
+	builtin_fw_amdgpu_green_sardine
 	builtin_fw_amdgpu_picasso
 	builtin_fw_amdgpu_raven2
 	builtin_fw_amdgpu_renoir
 	builtin_fw_amdgpu_stoney
+	builtin_fw_guc_adl
 	builtin_fw_guc_g9
 	builtin_fw_guc_jsl
 	builtin_fw_guc_tgl
+	builtin_fw_huc_adl
 	builtin_fw_huc_g9
 	builtin_fw_huc_jsl
 	builtin_fw_huc_tgl
@@ -1178,6 +1215,21 @@
 	amdgpu/carrizo_vce.bin
 )
 
+builtin_fw_amdgpu_green_sardine_desc="Firmware for AMD Green Sardine"
+builtin_fw_amdgpu_green_sardine_files=(
+	amdgpu/green_sardine_asd.bin
+	amdgpu/green_sardine_ce.bin
+	amdgpu/green_sardine_dmcub.bin
+	amdgpu/green_sardine_me.bin
+	amdgpu/green_sardine_mec2.bin
+	amdgpu/green_sardine_mec.bin
+	amdgpu/green_sardine_pfp.bin
+	amdgpu/green_sardine_rlc.bin
+	amdgpu/green_sardine_sdma.bin
+	amdgpu/green_sardine_ta.bin
+	amdgpu/green_sardine_vcn.bin
+)
+
 builtin_fw_amdgpu_picasso_desc="Firmware for AMD Picasso"
 builtin_fw_amdgpu_picasso_files=(
 	amdgpu/picasso_asd.bin
@@ -1246,6 +1298,11 @@
 	"${builtin_fw_amdgpu_stoney_files[@]}"
 )
 
+builtin_fw_guc_adl_desc="GuC Firmware for ADL"
+builtin_fw_guc_adl_files=(
+	i915/tgl_guc_49.0.1.bin
+)
+
 builtin_fw_guc_g9_desc="GuC Firmware for Gen9"
 builtin_fw_guc_g9_files=(
 	i915/kbl_guc_ver9_39.bin
@@ -1253,12 +1310,17 @@
 
 builtin_fw_guc_jsl_desc="GuC Firmware for JSL"
 builtin_fw_guc_jsl_files=(
-	i915/ehl_guc_33.0.4.bin
+	i915/ehl_guc_49.0.1.bin
 )
 
 builtin_fw_guc_tgl_desc="GuC Firmware for TGL"
 builtin_fw_guc_tgl_files=(
-	i915/tgl_guc_35.2.0.bin
+	i915/tgl_guc_49.0.1.bin
+)
+
+builtin_fw_huc_adl_desc="HuC Firmware for ADL"
+builtin_fw_huc_adl_files=(
+	i915/tgl_huc_7.5.0.bin
 )
 
 builtin_fw_huc_g9_desc="HuC Firmware for Gen9"
@@ -1273,7 +1335,7 @@
 
 builtin_fw_huc_tgl_desc="HuC Firmware for TGL"
 builtin_fw_huc_tgl_files=(
-	i915/tgl_huc_7.0.12.bin
+	i915/tgl_huc_7.5.0.bin
 )
 
 builtin_fw_mali_g57_desc="Workaround Firmware for Mali-G57"
@@ -1806,20 +1868,26 @@
 		OBJCOPY=llvm-objcopy
 		CHOST=${cross} clang-setup-env
 	fi
-	local binutils_path=$(LD=${cross}-ld get_binutils_path_ld)
 	# Use ld.lld instead of ${cross}-ld.lld, ${cross}-ld.lld has userspace
 	# specific options. Linux kernel already specifies the type by "-m <type>".
 	# It also matches upstream (https://github.com/ClangBuiltLinux) and
 	# Android usage.
-	local linker=$(usex lld "ld.lld" "${binutils_path}/ld")
+	local linker=$(usex lld "ld.lld" "${cross}-ld.bfd")
+
+	# Linux kernel can't be built with gold linker. Explicitly use bfd linker
+	# when invoked through compiler and LLD is not used.
+	local linker_arg=""
+	if ! use lld; then
+		linker_arg="-fuse-ld=bfd"
+	fi
 
 	set -- \
 		LD="${linker}" \
 		OBJCOPY="${OBJCOPY}" \
 		STRIP="${STRIP}" \
-		CC="${CC} -B${binutils_path}" \
+		CC="${CC} ${linker_arg}" \
 		CC_COMPAT="${CC_COMPAT}" \
-		CXX="${CXX} -B${binutils_path}" \
+		CXX="${CXX} ${linker_arg}" \
 		HOSTCC="${BUILD_CC}" \
 		HOSTCXX="${BUILD_CXX}" \
 		"$@"
@@ -1947,7 +2015,13 @@
 	if [[ "${PV}" != "9999" ]] || use apply_patches; then
 		apply_private_patches
 	fi
-	use clang || cros_use_gcc
+	if ! use clang; then
+		if use frozen_gcc; then
+			cros_use_frozen_gcc
+		else
+			cros_use_gcc
+		fi
+	fi
 
 	if [[ ${CROS_WORKON_INCREMENTAL_BUILD} != "1" ]]; then
 		mkdir -p "$(cros-workon_get_build_dir)"
@@ -2118,9 +2192,19 @@
 	local build_dir="$(cros-workon_get_build_dir)"
 	local src_dir="${build_dir}/source"
 	local db_chroot="${build_dir}/compile_commands_chroot.json"
+	local script="gen_compile_commands.py"
 
-	"${src_dir}/scripts/gen_compile_commands.py" -d "${build_dir}" \
-		-o "${db_chroot}"|| die
+	# gen_compile_commands.py has been moved into scripts/clang-tools/
+	# since v5.9 kernel.
+	if [[ -f "${src_dir}/scripts/${script}" ]]; then
+		"${src_dir}/scripts/${script}" \
+			-d "${build_dir}" -o "${db_chroot}" || die
+	elif [[ -f "${src_dir}/scripts/clang-tools/${script}" ]]; then
+		"${src_dir}/scripts/clang-tools/${script}" \
+			-d "${build_dir}" -o "${db_chroot}" || die
+	else
+		die "Cannot find ${script}"
+	fi
 
 	# Make relative include paths absolute.
 	sed -i -e "s:-I\./:-I${build_dir}/:g" "${db_chroot}" || die
diff --git a/eclass/cros-rust.eclass b/eclass/cros-rust.eclass
index 2de5baa..3f36604 100644
--- a/eclass/cros-rust.eclass
+++ b/eclass/cros-rust.eclass
@@ -63,6 +63,15 @@
 # dependencies and help minimize how many dependent packages need to be added.
 : "${CROS_RUST_REMOVE_DEV_DEPS:=}"
 
+# @ECLASS-VARIABLE: CROS_RUST_REMOVE_TARGET_CFG
+# @PRE_INHERIT
+# @DESCRIPTION:
+# Removes all the target. sections from the Cargo.toml except cfg(unix),
+# cfg(linux), cfg(not(windows), and *-linux-gnu. Note that this does not handle
+# more complicated cfg strings, so those cases should be handled manually
+# instead of using this option.
+: "${CROS_RUST_REMOVE_TARGET_CFG:=}"
+
 # @ECLASS-VARIABLE: CROS_RUST_SUBDIR
 # @DESCRIPTION:
 # Subdir where the package is located. Only used by cros-workon ebuilds.
@@ -92,12 +101,12 @@
 # If set to yes, run the test only for amd64 and x86 (i.e. no emulation).
 : "${CROS_RUST_TEST_DIRECT_EXEC_ONLY:="no"}"
 
-inherit toolchain-funcs cros-constants cros-debug cros-sanitizers
+inherit multiprocessing toolchain-funcs cros-constants cros-debug cros-sanitizers
 
-IUSE="amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86"
+IUSE="amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86"
 REQUIRED_USE="?? ( asan lsan msan tsan )"
 
-EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install pkg_postinst pkg_prerm
+EXPORT_FUNCTIONS pkg_setup src_unpack src_prepare src_configure src_compile src_test src_install pkg_preinst pkg_postinst pkg_prerm
 
 DEPEND="
 	>=virtual/rust-1.39.0:=
@@ -110,7 +119,7 @@
 
 # Ignore odr violations in unit tests in asan builds
 # (https://github.com/rust-lang/rust/issues/41807).
-ASAN_OPTIONS="detect_odr_violation=0"
+export ASAN_OPTIONS="detect_odr_violation=0"
 
 # @FUNCTION: cros-rust_get_reg_lock
 # @DESCRIPTION:
@@ -121,22 +130,45 @@
 	echo "${PORTAGE_TMPDIR}/cros-rust-registry/lock"
 }
 
+# @FUNCTION: cros-rust_get_sccache_dir
+# @DESCRIPTION:
+# Return the path to the directory used for the sccache cache. This cannot be in
+# global scope for the reason above.
+cros-rust_get_sccache_dir() {
+	echo "${PORTAGE_TMPDIR}/sccache"
+}
+
 # @FUNCTION: cros-rust_pkg_setup
 # @DESCRIPTION:
 # Sets up the package. Particularly, makes sure the rust registry lock exits.
 cros-rust_pkg_setup() {
+	debug-print-function "${FUNCNAME[0]}" "$@"
+	# This triggers a linter error SC2154 which says:
+	#   "EBUILD_PHASE_FUNC is used but not defined inside this file"
+	# Since EBUILD_PHASE_FUNC comes from outside the file, that's ok
+	# shellcheck disable=SC2154
 	if [[ "${EBUILD_PHASE_FUNC}" != "pkg_setup" ]]; then
-		die "${FUNCNAME}() should only be used in pkg_setup() phase"
+		die "${FUNCNAME[0]}() should only be used in pkg_setup() phase"
 	fi
 	_cros-rust_prepare_lock "$(cros-rust_get_reg_lock)"
-	_cleanup_registry_link "$@"
+
+	# This is needed for CROS_WORKON_INCREMENTAL_BUILD to be honored.
+	if [[ -n "${CROS_WORKON_PROJECT}" ]]; then
+		cros-workon_pkg_setup
+	fi
+
+	local sccache_dir="$(cros-rust_get_sccache_dir)"
+	addwrite "${sccache_dir}"
+	mkdir -p "${sccache_dir}"
+	chmod 755 "${sccache_dir}"
+	chown "${PORTAGE_USERNAME}:${PORTAGE_GRPNAME}" "${sccache_dir}" "${sccache_dir%/*}"
 }
 
 # @FUNCTION: cros-rust_src_unpack
 # @DESCRIPTION:
 # Unpacks the package
 cros-rust_src_unpack() {
-	debug-print-function ${FUNCNAME} "$@"
+	debug-print-function "${FUNCNAME[0]}" "$@"
 
 	# If this is a cros-workon ebuild and hasn't been unpacked, then unpack it.
 	if [[ -n "${CROS_WORKON_PROJECT}" && ! -e "${S}" ]]; then
@@ -192,12 +224,15 @@
 
 	cat <<- EOF > "${ECARGO_HOME}/config"
 	[source.chromeos]
-	directory = "${SYSROOT}/${CROS_RUST_REGISTRY_INST_DIR}"
+	directory = "${SYSROOT}${CROS_RUST_REGISTRY_INST_DIR}"
 
 	[source.crates-io]
 	replace-with = "chromeos"
 	local-registry = "/nonexistent"
 
+	[build]
+	jobs = $(makeopts_jobs)
+
 	[target.${CHOST}]
 	linker = "$(tc-getCC)"
 	EOF
@@ -211,6 +246,15 @@
 		linker = "$(tc-getBUILD_CC)"
 		EOF
 	fi
+
+	# Tell cargo not to use terminal colors if NOCOLOR is set.
+	if [[ "${NOCOLOR}" == true || "${NOCOLOR}" == yes ]]; then
+		cat <<- EOF >> "${ECARGO_HOME}/config"
+
+		[term]
+		color = "never"
+		EOF
+	fi
 }
 
 # @FUNCTION: cros-rust_src_prepare
@@ -221,10 +265,15 @@
 # and Cargo.toml will be modified in place. If the macro is used in
 # ${S}/Cargo.toml, CROS_WORKON_OUTOFTREE_BUILD can't be set to 1 in its ebuild.
 cros-rust_src_prepare() {
+	debug-print-function "${FUNCNAME[0]}" "$@"
 	if grep -q "# provided by ebuild" "${S}/Cargo.toml"; then
+		# This triggers a linter error SC2154 which says:
+		#   "CROS_WORKON_OUTOFTREE_BUILD is used but not defined inside this file"
+		# Since CROS_WORKON_OUTOFTREE_BUILD comes from outside the file, that's ok
+		# shellcheck disable=SC2154
 		if [[ "${CROS_WORKON_OUTOFTREE_BUILD}" == 1 ]]; then
-			die 'CROS_WORKON_OUTOFTREE_BUILD=1 must not be set when using' \
-				'`provided by ebuild`'
+			die "CROS_WORKON_OUTOFTREE_BUILD=1 must not be set when using" \
+				"\`provided by ebuild\`"
 		fi
 
 		# Replace path dependencies with ones provided by their ebuild.
@@ -256,8 +305,8 @@
 
 	if grep -q "# ignored by ebuild" "${S}/Cargo.toml"; then
 		if [[ "${CROS_WORKON_OUTOFTREE_BUILD}" == 1 ]]; then
-			die 'CROS_WORKON_OUTOFTREE_BUILD=1 must not be set when using' \
-				'`ignored by ebuild`'
+			die "CROS_WORKON_OUTOFTREE_BUILD=1 must not be set when using" \
+				"\`ignored by ebuild\`"
 		fi
 		# Emerge ignores "out-of-sandbox" [patch.crates-io] lines in
 		# Cargo.toml.
@@ -266,34 +315,45 @@
 			"${S}/Cargo.toml" || die
 	fi
 
-	# Remove dev-dependencies sections within the Cargo.toml file
+	# Remove dev-dependencies and target.cfg sections within the Cargo.toml file
 	#
-	# dev_dep_pattern is a regex that matches toml section headers of the
-	# form [token.dev-dependencies], [dev-dependencies.token], and
-	# [dev-dependencies].
-	#
-	# section_pattern is a regex that matches section headers in toml files.
-	#
-	# The awk program reads the file line by line.
-	# If any line matches dev_dep_pattern, it will skip every line until
-	# a line matching section_pattern is found which does not match
-	# dev_dep_pattern, in other words, until it finds a new section which
-	# is not a dev-dependency section.
+	# The awk program reads the file line by line. If any line matches one of the
+	# matched section headers, it will skip every line a new section header is
+	# found that does not match one of the matched section headers.
 	#
 	# Awk cannot do in-place editing, so we write the result to a temporary
 	# file before replacing the input with that temp file.
-	if [[ "${CROS_RUST_REMOVE_DEV_DEPS}" == 1 ]]; then
-		local prefixed_dev_dep='([^][]+\.)?dev-dependencies'
-		local suffixed_dev_dep='dev-dependencies(\.[^][]+)?'
-		local dev_dep_pattern="^\\[(${prefixed_dev_dep}|${suffixed_dev_dep})\\]$"
-		local section_pattern='^\['
+	if [[ "${CROS_RUST_REMOVE_DEV_DEPS}" == 1 ]] || [[ "${CROS_RUST_REMOVE_TARGET_CFG}" == 1 ]]; then
+		awk -v rm_dev_dep="${CROS_RUST_REMOVE_DEV_DEPS}" \
+		-v rm_target_cfg="${CROS_RUST_REMOVE_TARGET_CFG}" \
+		'{
+			# Stop skipping for a new section header, but check for another match.
+			if ($0 ~ /^\[/) {
+				skip = 0
+			}
 
-		awk "{
-			if(\$0 ~ /${dev_dep_pattern}/){skip = 1; next}
-			if( (\$0 ~ /${section_pattern}/) && (\$0 !~ /${dev_dep_pattern}/) ){skip = 0}
-			if(skip == 0){print}
-		}" "${S}/Cargo.toml" > "${S}/Cargo.toml.stripped" || die
-		mv "${S}/Cargo.toml.stripped" "${S}/Cargo.toml"
+			# If rm_dev_dep is set, match section headers of the following forms:
+			#   [token.dev-dependencies]
+			#   [dev-dependencies.token]
+			#   [dev-dependencies]
+			if (rm_dev_dep && ($0 ~ /^\[([^][]+\.)?dev-dependencies(\.[^][]+)?\]$/)) {
+				skip = 1
+				next
+			}
+
+			# If rm_target_cfg is set, match section headers prefixed by `[target.`,
+			# but exclude matches that contain any of `cfg(unix`, `cfg(linux`,
+			# `cfg(not(windows)`, or `-linux-gnu`.
+			if (rm_target_cfg && ($0 ~ /^\[target[.]/) && ($0 !~ /cfg[(](unix|linux|not[(]windows[)])|-linux-gnu/)) {
+				skip = 1
+				next
+			}
+
+			if (skip == 0) {
+				print
+			}
+		}' "${S}/Cargo.toml" > "${S}/Cargo.toml.stripped" || die
+		mv "${S}/Cargo.toml.stripped" "${S}/Cargo.toml"|| die
 	fi
 
 	default
@@ -304,10 +364,17 @@
 # Configures the source and exports any environment variables needed during the
 # build.
 cros-rust_src_configure() {
+	debug-print-function "${FUNCNAME[0]}" "$@"
 	sanitizers-setup-env
 	cros-debug-add-NDEBUG
 
-	export CARGO_TARGET_DIR="${WORKDIR}"
+	if [[ -n "${CROS_WORKON_PROJECT}" ]]; then
+		# Use a sub directory to avoid unintended interactions with platform.eclass.
+		export CARGO_TARGET_DIR="$(cros-workon_get_build_dir)/cros-rust"
+		mkdir -p "${CARGO_TARGET_DIR}"
+	else
+		export CARGO_TARGET_DIR="${WORKDIR}"
+	fi
 	export CARGO_HOME="${ECARGO_HOME}"
 	export HOST="${CBUILD}"
 	export HOST_CC="$(tc-getBUILD_CC)"
@@ -317,6 +384,7 @@
 	# need to set it regardless of the value of tc-is-cross-compiler here.
 	export PKG_CONFIG_ALLOW_CROSS=1
 	export PKG_CONFIG="$(tc-getPKG_CONFIG)"
+	export SCCACHE_DIR="$(cros-rust_get_sccache_dir)"
 	export TARGET="${CHOST}"
 	export TARGET_CC="$(tc-getCC)"
 
@@ -332,7 +400,7 @@
 
 	if use lto
 	then
-		rustflags+=( -Clto )
+		rustflags+=( -Clto=thin )
 		# rustc versions >= 1.45 support -Cembed-bitcode, which Cargo sets to
 		# no because it does not know that we want to use LTO.
 		# Because -Clto requires -Cembed-bitcode=yes, set it explicitly.
@@ -371,10 +439,40 @@
 			-Cllvm-args=-sanitizer-coverage-trace-divs
 			-Cllvm-args=-sanitizer-coverage-trace-geps
 			-Cllvm-args=-sanitizer-coverage-prune-blocks=0
-			-Clink-arg=-Wl,--no-gc-sections
+			-Clink-arg="-Wl,--no-gc-sections"
 		)
 	fi
 
+	local sccache="/usr/bin/sccache"
+	if use sccache; then
+		export RUSTC_WRAPPER="${sccache}"
+		addwrite "$(cros-rust_get_sccache_dir)"
+	fi
+
+	if [[ -n "${CROS_WORKON_PROJECT}" ]]; then
+		# Force an update the Cargo.lock file.
+		ecargo generate-lockfile
+		if [[ "${CROS_WORKON_INCREMENTAL_BUILD}" == "1" ]]; then
+			local previous_lockfile="${CARGO_TARGET_DIR}/Cargo.lock.prev"
+			# If any of the dependencies have changed, clear the incremental results.
+			if [[ ! -f "${previous_lockfile}" ]] ||
+					! cmp Cargo.lock "${previous_lockfile}" ; then
+				# This will print errors for the .crate files, but that is OK.
+				rm -rf "${CARGO_TARGET_DIR}"
+				mkdir -p "${CARGO_TARGET_DIR}"
+				cp Cargo.lock "${previous_lockfile}" || die
+			fi
+		fi
+	else
+		# Remove 3rd party lockfiles.
+		rm -f Cargo.lock
+	fi
+
+	# Add EXTRA_RUSTFLAGS to the current rustflags. This lets us emerge rust
+	# packages with locally exported flags for testing purposes as:
+	# `EXTRA_RUSTFLAGS="<flags>" emerge-$BOARD <package>`
+	rustflags+=( "${EXTRA_RUSTFLAGS:=}" )
+
 	export RUSTFLAGS="${rustflags[*]}"
 	default
 }
@@ -391,20 +489,40 @@
 # @DESCRIPTION:
 # Call cargo with the specified command line options.
 ecargo() {
-	debug-print-function ${FUNCNAME} "$@"
+	debug-print-function "${FUNCNAME[0]}" "$@"
 
-	# The cargo developers have decided to make it as painful as possible to
-	# use cargo inside another build system.  So there is no way to tell
-	# cargo to just not write this lock file.  Instead we have to bend over
-	# backwards to accommodate cargo.
 	addwrite Cargo.lock
-	rm -f Cargo.lock
 
 	# Acquire a shared (read only) lock since this does not modify the registry.
-	flock --shared "$(cros-rust_get_reg_lock)" cargo -v "$@" || die
+	flock --shared "$(cros-rust_get_reg_lock)" cargo -v "$@"
+	local status="$?"
 
-	# Now remove any Cargo.lock files that cargo pointlessly created.
-	rm -f Cargo.lock
+	# This needs to be executed on both success and failure.
+	local sccache="/usr/bin/sccache"
+	if use sccache; then
+		sccache --stop-server
+	fi
+
+	if [[ "${status}" != 0 ]]; then
+		die
+	fi
+}
+
+# @FUNCTION: write_clippy
+# @INTERNAL
+# @DESCRIPTION:
+# Executes cargo clippy and writes lints to file
+_ecargo_write_clippy() {
+	# TODO(crbug.com/1194200): we should stop using /tmp for this sort of thing
+	local clippy_output_base="/tmp/cargo_clippy/${CATEGORY}"
+	mkdir -p "${clippy_output_base}"
+
+	# FIXME(crbug.com/1195313): rustc sysroot may not contain dependencies
+	local sysroot_old="${SYSROOT}"
+	SYSROOT=$(rustc --print sysroot)
+	ecargo clippy ---message-format json --target="${CHOST}" --release \
+		--manifest-path="${S}/Cargo.toml" > "${clippy_output_base}/${PF}.json"
+	export SYSROOT="${sysroot_old}"
 }
 
 # @FUNCTION: ecargo_build
@@ -412,7 +530,33 @@
 # @DESCRIPTION:
 # Call `cargo build` with the specified command line options.
 ecargo_build() {
+
+	# Intended use case:
+	# - Crate A generates sources when it is emerged from input files
+	#   that are only accessible when it emerges.
+	# - Crate B depends on crate A, and this is reflected in the
+	#   ebuild for crate B.
+	# (Examples: cros-dbus-bindings or bindgen for *-sys)
+	#
+	# The following scenarios are supported and need to work:
+	# - local `cargo build` for crate A
+	# - local `cargo build` for crate B
+	# - emerge A
+	# - emerge B
+	#
+	# Add CROS_RUST environment variable to support the `emerge B`
+	# case, since crate B can't access pre-generated source
+	# in emerge, the build.rs script for crate A will skip the
+	# source generation if both of the following are true:
+	# - The generated source exists
+	# - `CROS_RUST=1`
+	export CROS_RUST="1"
+
 	ecargo build --target="${CHOST}" --release "$@"
+	# FIXME(b/191687433): refactor ENABLE_RUST_CLIPPY to be easier to enable/disable then remove the platform2 check
+	if [[ -n "${ENABLE_RUST_CLIPPY}" && "${CROS_WORKON_PROJECT}" == "chromiumos/platform2" ]]; then
+		_ecargo_write_clippy
+	fi
 }
 
 # @FUNCTION: ecargo_build_fuzzer
@@ -501,6 +645,16 @@
 		done
 		local test_args=( "${@:x}" )
 
+		# Make sure there is a separator before --test-threads.
+		if [[ "${#test_args[@]}" == 0 ]]; then
+			test_args=( -- )
+		fi
+
+		# Limit the number of test threads if they are not limited already.
+		if [[ " ${test_args[*]}" != *" --test-threads"* ]]; then
+			test_args+=( "--test-threads=$(makeopts_jobs)" )
+		fi
+
 		local testfile
 		for testfile in "${CROS_RUST_TESTS[@]}"; do
 			cros_rust_platform_test run "${testfile}" "${test_args[@]}"
@@ -545,15 +699,25 @@
 # @DESCRIPTION:
 # Install a library crate to the local registry store.  Should only be called
 # from within a src_install() function.
+# This triggers a linter error SC2120 which says:
+#   "rust_publish references arguments, but none are ever passed"
+# In this case, we will use without arguments to get a default value, but other
+# usages exist in other files that do use arguments, so there is no problem.
+# shellcheck disable=SC2120
 cros-rust_publish() {
-	debug-print-function ${FUNCNAME} "$@"
+	debug-print-function "${FUNCNAME[0]}" "$@"
 
 	if [[ "${EBUILD_PHASE_FUNC}" != "src_install" ]]; then
-		die "${FUNCNAME}() should only be used in src_install() phase"
+		die "${FUNCNAME[0]}() should only be used in src_install() phase"
 	fi
 
 	local default_version="${CROS_RUST_CRATE_VERSION}"
 	if [[ "${default_version}" == "9999" ]]; then
+		# This triggers a linter error SC2119 which says:
+		#   "Use foo "$@" if function's $1 should mean script's $1"
+		# In this case, cros-rust_get_crate_version without arguments retrieves the
+		# default value which is desired, so this warning can be ignored.
+		# shellcheck disable=SC2119
 		default_version="$(cros-rust_get_crate_version)"
 	fi
 
@@ -567,15 +731,21 @@
 	local crate="${CARGO_TARGET_DIR}/package/${name}-${version}.crate"
 
 	mkdir -p "${D}/${CROS_RUST_REGISTRY_DIR}"
-	pushd "${D}/${CROS_RUST_REGISTRY_DIR}" > /dev/null
+	pushd "${D}/${CROS_RUST_REGISTRY_DIR}" > /dev/null || die
 	tar xf "${crate}" || die
 
 	# Calculate the sha256sum since cargo will want this later.
-	local shasum="$(sha256sum ${crate} | cut -d ' ' -f 1)"
+	local shasum="$(sha256sum "${crate}" | cut -d ' ' -f 1)"
 	local dir="${name}-${version}"
 	local checksum="${T}/${name}-${version}-checksum.json"
 
 	# Calculate the sha256 hashes of all the files in the crate.
+	# This triggers a linter error SC2207 which says:
+	#   "Prefer mapfile or read -a to split command
+	#    output (or quote to avoid splitting)."
+	# In this case, cros-rust_get_crate_version no argument retrieves the
+	# default value which is desired, so this warning can be ignored.
+	# shellcheck disable=SC2207
 	local files=( $(find "${dir}" -type f) )
 
 	[[ "${#files[@]}" == "0" ]] && die "Could not find crate files for ${name}"
@@ -585,7 +755,7 @@
 	local idx=0
 	local f
 	for f in "${files[@]}"; do
-		shasum="$(sha256sum ${f} | cut -d ' ' -f 1)"
+		shasum="$(sha256sum "${f}" | cut -d ' ' -f 1)"
 		printf '\t\t"%s": "%s"' "${f#${dir}/}" "${shasum}" >> "${checksum}"
 
 		# The json parser is unnecessarily strict about not allowing
@@ -598,7 +768,7 @@
 		fi
 	done
 	printf "\t}\n}\n" >> "${checksum}"
-	popd > /dev/null
+	popd > /dev/null || die
 
 	insinto "${CROS_RUST_REGISTRY_DIR}/${name}-${version}"
 	newins "${checksum}" .cargo-checksum.json
@@ -627,6 +797,7 @@
 }
 
 cros-rust_src_compile() {
+	debug-print-function "${FUNCNAME[0]}" "$@"
 	# Skip non cros-workon packages.
 	[[ -z "${CROS_WORKON_PROJECT}" ]] && return 0
 
@@ -635,6 +806,7 @@
 }
 
 cros-rust_src_test() {
+	debug-print-function "${FUNCNAME[0]}" "$@"
 	if [[ "${CROS_RUST_TEST_DIRECT_EXEC_ONLY}" == "yes" ]] && ! cros_rust_is_direct_exec; then
 		ewarn "Skipping unittests for non-x86: ${PN}"
 		return 0
@@ -646,8 +818,12 @@
 }
 
 cros-rust_src_install() {
-	debug-print-function ${FUNCNAME} "$@"
+	debug-print-function "${FUNCNAME[0]}" "$@"
 
+	# This triggers a linter error SC2119 which says:
+	#   "Use cros-rust_publish "$@" if function's $1 should mean script's $1"
+	# Here we will use without arguments to get a default value so there is no problem
+	# shellcheck disable=SC2119
 	cros-rust_publish
 }
 
@@ -663,7 +839,8 @@
 	if [[ "$(id -u)" -ne 0 ]]; then
 		die "_cros-rust_prepare_lock should only be called inside pkg_* functions."
 	fi
-	mkdir -m 755 -p "$(dirname "$1")" || die
+	mkdir -p "$(dirname "$1")" || die
+	chmod 755 "$(dirname "$1")" || die
 	touch "$1" || die
 	chmod 644 "$1" || die
 }
@@ -691,6 +868,11 @@
 		einfo "Removing ${crate} from Cargo registry"
 		# Acquire a exclusive lock since this modifies the registry.
 		_cros-rust_prepare_lock "$(cros-rust_get_reg_lock)"
+		# This triggers a linter error SC2016 which says:
+		#   "Expressions don't expand in single quotes, use double quotes for that."
+		# In this case, though, that is exactly what we want since we need the string
+		# to be passed to sh without being evaluated first.
+		# shellcheck disable=SC2016
 		flock --no-fork --exclusive "$(cros-rust_get_reg_lock)" \
 			sh -c 'rm -f "$0"' "${link}" || die
 	fi
@@ -702,8 +884,9 @@
 # Make sure a library crate isn't linked in the local registry prior to the
 # install step to avoid races.
 cros-rust_pkg_preinst() {
+	debug-print-function "${FUNCNAME[0]}" "$@"
 	if [[ "${EBUILD_PHASE_FUNC}" != "pkg_preinst" ]]; then
-		die "${FUNCNAME}() should only be used in pkg_preinst() phase"
+		die "${FUNCNAME[0]}() should only be used in pkg_preinst() phase"
 	fi
 
 	_cleanup_registry_link "$@"
@@ -715,8 +898,9 @@
 # Install a library crate in the local registry store into the registry,
 # making it visible to Cargo.
 cros-rust_pkg_postinst() {
+	debug-print-function "${FUNCNAME[0]}" "$@"
 	if [[ "${EBUILD_PHASE_FUNC}" != "pkg_postinst" ]]; then
-		die "${FUNCNAME}() should only be used in pkg_postinst() phase"
+		die "${FUNCNAME[0]}() should only be used in pkg_postinst() phase"
 	fi
 
 	local name="${1:-${CROS_RUST_CRATE_NAME}}"
@@ -747,8 +931,9 @@
 # @DESCRIPTION:
 # Unlink a library crate from the local registry.
 cros-rust_pkg_prerm() {
+	debug-print-function "${FUNCNAME[0]}" "$@"
 	if [[ "${EBUILD_PHASE_FUNC}" != "pkg_prerm" ]]; then
-		die "${FUNCNAME}() should only be used in pkg_prerm() phase"
+		die "${FUNCNAME[0]}() should only be used in pkg_prerm() phase"
 	fi
 
 	_cleanup_registry_link "$@"
@@ -759,9 +944,14 @@
 # @DESCRIPTION:
 # Returns the version for a crate by finding the first 'version =' line in the
 # Cargo.toml in the crate.
+# This triggers a linter error SC2120 which says:
+#   "rust_get_crate_version references arguments, but none are ever passed"
+# In this case, we will use without arguments to get a default value, but other
+# usages exist in other files that do use arguments, so there is no problem.
+# shellcheck disable=SC2120
 cros-rust_get_crate_version() {
 	local crate="${1:-${S}}"
-	[[ $# -gt 1 ]] && die "${FUNCNAME}: incorrect number of arguments"
+	[[ $# -gt 1 ]] && die "${FUNCNAME[0]}: incorrect number of arguments"
 	awk '/^version = / { print $3 }' "${crate}/Cargo.toml" | head -n1 | tr -d '"'
 }
 
diff --git a/eclass/cros-sanitizers.eclass b/eclass/cros-sanitizers.eclass
index da18aa8..58512de 100644
--- a/eclass/cros-sanitizers.eclass
+++ b/eclass/cros-sanitizers.eclass
@@ -51,7 +51,7 @@
 		die "ASAN is only supported for clang"
 	fi
 	local asan_flags=(
-		-fsanitize=address
+		"-fsanitize=address"
 	)
 	append-flags "${asan_flags[@]}"
 	append-ldflags "${asan_flags[@]}"
@@ -97,19 +97,20 @@
 	# Flags for normal ubsan builds.
 	# TODO: Use same flags as fuzzer builds.
 	local flags=(
-		-fsanitize=alignment,array-bounds,pointer-overflow,shift
-		-fsanitize=integer-divide-by-zero,float-divide-by-zero
-		-fsanitize=signed-integer-overflow,vla-bound
-		-fno-sanitize=vptr
-		-fno-sanitize-recover=all
+		"-fsanitize=alignment,array-bounds,pointer-overflow,shift"
+		"-fsanitize=integer-divide-by-zero,float-divide-by-zero"
+		"-fsanitize=signed-integer-overflow,vla-bound"
+		"-fno-sanitize=vptr"
+		"-fno-sanitize-recover=all"
 	)
 	# Use different flags for fuzzer ubsan builds.
 	if use fuzzer; then
 		flags=(
-			-fsanitize=alignment,array-bounds,function,pointer-overflow
-			-fsanitize=integer-divide-by-zero,float-divide-by-zero
-			-fsanitize=signed-integer-overflow,shift,vla-bound,vptr
-			-fno-sanitize-recover=all
+			"-fsanitize=alignment,array-bounds,function,pointer-overflow"
+			"-fsanitize=integer-divide-by-zero,float-divide-by-zero"
+			"-fsanitize=signed-integer-overflow,shift,vla-bound,vptr"
+			"-fno-sanitize-recover=all"
+			"-frtti"
 		)
 	fi
 	append-flags "${flags[@]}"
diff --git a/eclass/cros-unibuild.eclass b/eclass/cros-unibuild.eclass
index 560a30a..03c324db 100644
--- a/eclass/cros-unibuild.eclass
+++ b/eclass/cros-unibuild.eclass
@@ -272,8 +272,8 @@
 	fi
 
 	# Determine if using files or workdir for the path.
-	if [[ "${cmd}" == "get-touch-firmware-workdir" ]]; then
-		cmd="get-touch-firmware-files"
+	if [[ "${cmd}" == *"-workdir" ]]; then
+		cmd="${cmd%-workdir}"
 		files_path="${WORKDIR}"
 	fi
 
@@ -303,12 +303,12 @@
 # @USAGE: [config_file]
 # @DESCRIPTION:
 # Install files related to touch firmware. This includes firmware for the
-# touchscreen, touchpad and stylus. These files are expected in work dir.
+# touchscreen, touchpad and stylus. These files are expected in workdir.
 # Args:
 #   $1: (optional) Config file used by cros_config_host
 unibuild_install_touch_workdir() {
 	[[ $# -lt 2 ]] || die "${FUNCNAME}: Only optional config file arg allowed"
-	_unibuild_install_fw_common "get-touch-firmware-workdir" "$@"
+	_unibuild_install_fw_common "get-touch-firmware-files-workdir" "$@"
 }
 
 # @FUNCTION: unibuild_install_detachable_base_files
@@ -323,6 +323,19 @@
 	_unibuild_install_fw_common "get-detachable-base-firmware-files" "$@"
 }
 
+# @FUNCTION: unibuild_install_detachable_base_files_workdir
+# @USAGE: [config_file]
+# @DESCRIPTION:
+# Install files related to detachable base firmware. This includes firmware
+# for the detachable base ec and touchpad binary.
+# These files are expected in workdir.
+# Args:
+#   $1: (optional) Config file used by cros_config_host
+unibuild_install_detachable_base_files_workdir() {
+	[[ $# -lt 2 ]] || die "${FUNCNAME}: Only optional config file arg allowed"
+	_unibuild_install_fw_common "get-detachable-base-firmware-files-workdir" "$@"
+}
+
 # @FUNCTION: unibuild_build_configfs_file
 # @USAGE:
 # @DESCRIPTION:
diff --git a/eclass/cros-workon.eclass b/eclass/cros-workon.eclass
index b45ff6b..ed33fc0 100644
--- a/eclass/cros-workon.eclass
+++ b/eclass/cros-workon.eclass
@@ -601,19 +601,12 @@
 	fi
 
 	if [[ "${fetch_method}" == "git" ]] ; then
-		all_local() {
-			local p
-			for p in "${path[@]}"; do
-				[[ -d ${p} ]] || return 1
-			done
-			return 0
-		}
+		local creds_setup="false"
 
-		local fetched=0
-		if all_local; then
-			for (( i = 0; i < project_count; ++i )); do
-				# Looks like we already have a local copy of all repositories.
-				# Let's use these and checkout ${CROS_WORKON_COMMIT}.
+		for (( i = 0; i < project_count; ++i )); do
+			if [[ -d "${path[i]}" ]]; then
+				# Looks like we have a local copy of the repository.
+				# Let's use it and checkout ${CROS_WORKON_COMMIT}.
 				#  -s: For speed, share objects between ${path} and ${S}.
 				#  -n: Don't checkout any files from the repository yet. We'll
 				#      checkout the source separately.
@@ -628,7 +621,9 @@
 				# ${CROS_WORKON_DESTDIR}. More projects either specify an array or go to
 				# ${S}/${project}.
 
-				if [[ "${CROS_WORKON_COMMIT[i]}" == "master" ]]; then
+				# NB: We keep "master" here for use with third_party repos.
+				if [[ "${CROS_WORKON_COMMIT[i]}" == "main" ||
+				      "${CROS_WORKON_COMMIT[i]}" == "master" ]]; then
 					# Since we don't have a CROS_WORKON_COMMIT revision specified,
 					# we don't know what revision the ebuild wants. Let's take the
 					# version of the code that the user has checked out.
@@ -643,59 +638,48 @@
 					# code path to fail and explain the problem.
 					git clone -s "${path[i]}" "${destdir[i]}" || \
 						die "Can't clone ${path[i]}."
-					: $(( ++fetched ))
+					continue
 				else
 					git clone -sn "${path[i]}" "${destdir[i]}" || \
 						die "Can't clone ${path[i]}."
-					if ! ( cd ${destdir[i]} && git checkout -q ${CROS_WORKON_COMMIT[i]} ) ; then
+					if ! (cd "${destdir[i]}" && git checkout -q "${CROS_WORKON_COMMIT[i]}") ; then
 						ewarn "Cannot run git checkout ${CROS_WORKON_COMMIT[i]} in ${destdir[i]}."
 						ewarn "Is ${path[i]} up to date? Try running repo sync."
 						rm -rf "${destdir[i]}/.git"
 					else
-						: $(( ++fetched ))
+						continue
 					fi
 				fi
-			done
-			if [[ ${fetched} -eq ${project_count} ]]; then
-				# TODO: Id of all repos?
-				# We should run get_rev in destdir[0] because CROS_WORKON_COMMIT
-				# is only checked out there. Also, we can't use
-				# CROS_WORKON_COMMIT directly because it could be a named or
-				# abbreviated ref.
-				set_vcsid "$(get_rev "${destdir[0]}/.git")"
-				cros-workon_enforce_subtrees
-				return
-			else
-				ewarn "Falling back to git.eclass..."
 			fi
-		fi
 
-		# We have to pull from git, maybe a private repo.
-		cros-credentials_setup
+			if [[ "${creds_setup}" == "false" ]]; then
+				creds_setup="true"
+				# We have to pull from git, maybe a private repo.
+				cros-credentials_setup
+			fi
 
-
-		# Always pull all branches, if we are pulling source via git.
-		EGIT_ALL_BRANCH="1"
-
-		for (( i = 0; i < project_count; ++i )); do
+			# Use a subshell to avoid leaking EGIT vars.
+			(
+			: "${EGIT_MASTER:=main}"
 			EGIT_BRANCH="${branch[i]}"
 			EGIT_REPO_URI="${repo[i]}/${project[i]}.git"
 			EGIT_PROJECT="${project[i]}"
 			EGIT_SOURCEDIR="${destdir[i]}"
 			EGIT_COMMIT="${CROS_WORKON_COMMIT[i]}"
-			# If the logic above checked out the repo (only one failed), then skip it.
-			if [[ -d "${EGIT_SOURCEDIR}/.git" ]]; then
-				einfo "Skipping existing checkout of ${EGIT_PROJECT} in ${EGIT_SOURCEDIR}"
-				continue
-			fi
 			# Clones to /var, copies src tree to the /build/<board>/tmp.
 			# Make sure git-2 does not run `unpack` for us automatically.
 			# The normal cros-workon flow above doesn't do it, so don't
 			# let git-2 do it either.  http://crosbug.com/38342
 			EGIT_NOUNPACK=true git-2_src_unpack
-			# TODO(zbehan): Support multiple projects for vcsid?
+			)
 		done
-		set_vcsid "${CROS_WORKON_COMMIT[0]}"
+
+		# TODO(zbehan): Support multiple projects for vcsid?
+		# We should run get_rev in destdir[0] because CROS_WORKON_COMMIT
+		# is only checked out there. Also, we can't use
+		# CROS_WORKON_COMMIT directly because it could be a named or
+		# abbreviated ref.
+		set_vcsid "$(get_rev "${destdir[0]}/.git")"
 		cros-workon_enforce_subtrees
 		return
 	fi
diff --git a/eclass/cros-zephyr.eclass b/eclass/cros-zephyr.eclass
deleted file mode 100644
index 8b8ed98..0000000
--- a/eclass/cros-zephyr.eclass
+++ /dev/null
@@ -1,180 +0,0 @@
-# Copyright 2020 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.makefile file.
-
-# @ECLASS: cros-zephyr.eclass
-# @MAINTAINER:
-# Chromium OS Firmware Team
-# @BUGREPORTS:
-# Please report bugs via http://crbug.com/new (with label Build)
-# @VCSURL: https://chromium.googlesource.com/chromiumos/overlays/chromiumos-overlay/+/master/eclass/@ECLASS@
-# @BLURB: helper eclass for building Zephyr-based firmware
-# @DESCRIPTION:
-# Builds the Zephyr EC firmware and installs into /firmware/<project>/ec.bin
-
-# Check for EAPI 7+.
-case "${EAPI:-0}" in
-0|1|2|3|4|5|6) die "Unsupported EAPI=${EAPI:-0} for ${ECLASS} (7+ required)" ;;
-*) ;;
-esac
-
-inherit toolchain-funcs cros-workon ninja-utils
-
-IUSE="unibuild"
-REQUIRED_USE="unibuild"
-
-BDEPEND="
-	dev-python/docopt
-	dev-python/pykwalify
-	dev-util/ninja
-"
-
-DEPEND="chromeos-base/chromeos-config"
-
-# @ECLASS-VARIABLE: ZEPHYR_BASE
-# @DESCRIPTION: Path to the Zephyr OS repo
-# @INTERNAL
-
-# @ECLASS-VARIABLE: ZEPHYR_CHROME
-# @DESCRIPTION: Path to the ChromeOS Zephyr overlay repo
-# @INTERNAL
-
-# @ECLASS-VARIABLE: ZEPHYR_MODULES
-# @DESCRIPTION: Array of module repos used in Zephyr build
-# @INTERNAL
-
-# @ECLASS-VARIABLE: ZEPHYR_BUILD_TARGET_NAMES
-# @DESCRIPTION: List of names used for the build targets
-# @INTERNAL
-
-# @ECLASS-VARIABLE: ZEPHYR_BUILD_TARGET_PATHS
-# @DESCRIPTION: List of relative paths under ${ZEPHYR_CHROME}/projects
-# to the project directory for each build target.
-# @INTERNAL
-
-# @FUNCTION: cros-zephyr_gen_cmake
-# @DESCRIPTION: output auto-generated cmake source on stdout
-cros-zephyr_gen_cmake() {
-	echo "set(ZEPHYR_BASE ${ZEPHYR_BASE} CACHE PATH \"Zephyr base\")"
-	echo "set(ZEPHYR_MODULES ${ZEPHYR_MODULES[*]} CACHE STRING \"pre-cached modules\")"
-}
-
-# @FUNCTION: cros-zephyr_build_dir
-# @DESCRIPTION: convert a target name to the zephyr build path
-# @USAGE: <build_target_name>
-cros-zephyr_build_dir() {
-	echo "$(cros-workon_get_build_dir)/build-${1}"
-}
-
-# @FUNCTION: cros-zephyr_bin_name
-# @DESCRIPTION: convert a target name to the zephyr bin name
-# @USAGE: <build_target_name>
-cros-zephyr_bin_name() {
-	echo "$(cros-zephyr_build_dir "${1}")/zephyr/zephyr.bin"
-}
-
-# @FUNCTION: cros-zephyr_gen_makefile
-# @DESCRIPTION: generate a Makefile which builds all targets
-#
-# We generate a Makefile so we can take advantage of "emake" for
-# parallelism.  This is because a given unibuild board may have many
-# zephyr targets to produce, so we can produce them all in parallel
-# this way.
-cros-zephyr_gen_makefile() {
-	local name
-	echo ".PHONY: all"
-	echo -n "all:"
-	for name in "${ZEPHYR_BUILD_TARGET_NAMES[@]}"; do
-		echo -n " $(cros-zephyr_bin_name "${name}")"
-	done
-	echo
-	for name in "${ZEPHYR_BUILD_TARGET_NAMES[@]}"; do
-		cat <<EOF
-$(cros-zephyr_bin_name "${name}"):
-	ninja -C"$(cros-zephyr_build_dir "${name}")"
-EOF
-	done
-}
-
-# @FUNCTION: cros-zephyr_src_configure
-# @DESCRIPTION: Setup the build directories and export zephyr variables.
-cros-zephyr_src_configure() {
-	ZEPHYR_BASE=""
-	ZEPHYR_CHROME=""
-	ZEPHYR_MODULES=()
-
-	# Verify that the SDK is installed.
-	if [[ ! -s /opt/zephyr-sdk/sdk_version ]]; then
-		>&2 echo "ERROR: Zephyr SDK doesn't appear to be installed"
-		>&2 echo "       Run src/platform/zephyr-chrome/import-sdk.py"
-		die
-	fi
-
-	# We make assumptions about the purpose of each repo by the paths
-	# in CROS_WORKON_DESTDIR.
-	local destdir
-	for destdir in "${CROS_WORKON_DESTDIR[@]}"; do
-		case "${destdir}" in
-			*/zephyr-base )
-				ZEPHYR_BASE="${destdir}"
-				;;
-			*/zephyr-chrome )
-				ZEPHYR_CHROME="${destdir}"
-				;;
-			*/modules/* )
-				ZEPHYR_MODULES+=("${destdir}")
-				;;
-			* )
-				die "Unrecognized zephyr repo: ${destdir}"
-				;;
-		esac
-	done
-
-	local name path
-	ZEPHYR_BUILD_TARGET_NAMES=()
-	ZEPHYR_BUILD_TARGET_PATHS=()
-	while read -r name && read -r path; do
-		ZEPHYR_BUILD_TARGET_NAMES+=("${name}")
-		ZEPHYR_BUILD_TARGET_PATHS+=("${path}")
-	done < <(cros_config_host get-firmware-build-combinations zephyr-ec)
-
-	mkdir -p "$(cros-workon_get_build_dir)"
-	cros-zephyr_gen_cmake >"$(cros-workon_get_build_dir)/.cmake"
-	cros-zephyr_gen_makefile >"$(cros-workon_get_build_dir)/Makefile"
-
-	# Zephyr environment variables.
-	export ZEPHYR_BASE
-
-	# We have to nuke all of the system environment variables, as
-	# these won't work with target (bare metal) architecture.
-	unset CC LD CFLAGS LDFLAGS CXX CXXFLAGS
-
-	# Run cmake for each build target.
-	for i in "${!ZEPHYR_BUILD_TARGET_NAMES[*]}"; do
-		name="${ZEPHYR_BUILD_TARGET_NAMES[${i}]}"
-		path="${ZEPHYR_BUILD_TARGET_PATHS[${i}]}"
-		cmake -GNinja -B"$(cros-zephyr_build_dir "${name}")" \
-			-S"${ZEPHYR_CHROME}/projects/${path}" \
-			-C"$(cros-workon_get_build_dir)/.cmake" \
-			|| die "cmake failed for ${name}"
-	done
-}
-
-# @FUNCTION: cros-zephyr_src_compile
-# @DESCRIPTION: compile all zephyr targets
-cros-zephyr_src_compile() {
-	emake -C"$(cros-workon_get_build_dir)" || die "compile failed"
-}
-
-# @FUNCTION: cros-ec_src_install
-# @DESCRIPTION: install all zephyr targets into /firmware
-cros-zephyr_src_install() {
-	local target
-	for target in "${ZEPHYR_BUILD_TARGET_NAMES[@]}"; do
-		einfo "Installing zephyr.bin for ${target}..."
-		insinto "/firmware/${target}"
-		newins "$(cros-zephyr_bin_name "${target}")" "ec.bin"
-	done
-}
-
-EXPORT_FUNCTIONS src_configure src_compile src_install
diff --git a/eclass/dlc.eclass b/eclass/dlc.eclass
index f44f14f..0480a0d 100644
--- a/eclass/dlc.eclass
+++ b/eclass/dlc.eclass
@@ -23,7 +23,6 @@
 [012345]) die "unsupported EAPI (${EAPI}) in eclass (${ECLASS})" ;;
 esac
 
-DEPEND="chromeos-base/update_engine"
 DLC_BUILD_DIR="build/rootfs/dlc"
 
 # @ECLASS-VARIABLE: DLC_PREALLOC_BLOCKS
@@ -93,6 +92,12 @@
 # are "system" and "user".
 : "${DLC_USED_BY:=system}"
 
+# @ECLASS-VARIABLE: DLC_DAYS_TO_PURGE
+# @DESCRIPTION:
+# Defines how many days the DLC should be kept before purging it from disk after
+# it has been uninstalled. Default is 5 days.
+: "${DLC_DAYS_TO_PURGE:=5}"
+
 # @ECLASS-VARIABLE: DLC_MOUNT_FILE_REQUIRED
 # @DESCRIPTION:
 # By default, DLC mount points should be retrieved from the DBUS install method.
@@ -152,6 +157,7 @@
 		--description="${DLC_DESCRIPTION}"
 		--fullnamerev="${CATEGORY}/${PF}"
 		--build-package
+		--days-to-purge="${DLC_DAYS_TO_PURGE}"
 	)
 
 	if [[ -n "${DLC_FS_TYPE}" ]]; then
diff --git a/eclass/platform.eclass b/eclass/platform.eclass
index 9de7fbd..4728b83 100644
--- a/eclass/platform.eclass
+++ b/eclass/platform.eclass
@@ -71,7 +71,7 @@
 # dependency is needed outside test as well.
 DEPEND="
 	cros_host? ( dev-util/gn )
-	dev-cpp/gtest:=
+	>=dev-cpp/gtest-1.10.0:=
 "
 
 
@@ -96,6 +96,8 @@
 	# 3. use standard clang target triples
 	# 4. remove a few compiler options that might not be available
 	#    in the potentially older clang version outside the chroot
+	# 5. Add "-stdlib=libc++" so that the clang outside the chroot can
+	#    find built-in headers like <string> and <memory>
 	#
 	sed -E -e "s:(\.\./|\.\.)*/mnt/host/source/:${EXTERNAL_TRUNK_PATH}/:g" \
 		-e "s:/build/:${ext_chroot_path}/build/:g" \
@@ -111,6 +113,7 @@
 		-e "s:-mfentry::g" \
 		\
 		"${db_chroot}" \
+		| jq 'map(.command |= . + " -stdlib=libc++")' \
 		> "${OUT}/compile_commands_no_chroot.json" || die
 
 	echo \
@@ -120,8 +123,11 @@
 
 To use the compilation database with an IDE or other tools outside of the
 chroot create a symlink named 'compile_commands.json' in the ${PN} source
-directory (outside of the chroot) to compile_commands_no_chroot.json." \
-		> "${OUT}/compile_commands.txt" || die
+directory (outside of the chroot) to compile_commands_no_chroot.json. Also
+make sure that you have libc++ installed:
+
+	$ sudo apt-get install libc++-dev
+" > "${OUT}/compile_commands.txt" || die
 }
 
 platform() {
diff --git a/eclass/tast-bundle.eclass b/eclass/tast-bundle.eclass
index e8d17e7..cd0b13f 100644
--- a/eclass/tast-bundle.eclass
+++ b/eclass/tast-bundle.eclass
@@ -63,7 +63,9 @@
 
 	CROS_GO_VET_FLAGS=(
 		# Check printf-style arguments passed to testing.State methods.
-		"-printfuncs=Log,Logf,Error,Errorf,Fatal,Fatalf,Wrap,Wrapf"
+		"-printf.funcs=Log,Logf,Error,Errorf,Fatal,Fatalf,Wrap,Wrapf"
+		# Check the result of a function without side effects is used.
+		"-unusedresult.funcs=errors.New,errors.Wrap,errors.Wrapf,fmt.Errorf,fmt.Sprint,fmt.Sprintf,sort.Reverse"
 	)
 }
 
@@ -89,9 +91,9 @@
 	local i
 	for (( i = 0; i < ${#CROS_WORKON_PROJECT[@]}; i++ )); do
 		echo "${CROS_WORKON_REPO[i]}/${CROS_WORKON_PROJECT[i]} ${CROS_WORKON_COMMIT[i]}"
-	done | jq -s -R -S 'split("\n")|map(split(" ")|{(.[0]): .[1]})|add' \
-		> "${TAST_BUNDLE_NAME}.sig.json" \
-		|| die "Generating signatures failed"
+	done | jq -s -R -S 'split("\n") |
+		map(split(" ") | select(.[0]) | {(.[0]): .[1]}) |
+		add' > "${TAST_BUNDLE_NAME}.sig.json" || die "Generating signatures failed"
 
 	# Build bundle executable for the host arch and get metadata dump.
 	local source="chromiumos/tast/${TAST_BUNDLE_TYPE}/bundles/${TAST_BUNDLE_NAME}"
diff --git a/licenses/AOSP-SDK b/licenses/AOSP-SDK
new file mode 100644
index 0000000..6f63469
--- /dev/null
+++ b/licenses/AOSP-SDK
@@ -0,0 +1,14703 @@
+Notices for files contained in the tools directory:
+============================================================
+Notices for file(s):
+/bin/mksdcard
+------------------------------------------------------------
+Copyright 2007, The Android Open Source Project
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of Google Inc. nor the names of its contributors may
+      be used to endorse or promote products derived from this software
+      without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY Google Inc. ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
+EVENT SHALL Google Inc. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+============================================================
+Notices for file(s):
+/framework/conscrypt-hostdex.jar
+/framework/core-hostdex.jar
+/framework/core-libart-hostdex.jar
+/lib/libjavacore.so
+/lib/libjavacrypto.so
+------------------------------------------------------------
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Android-specific code.                        ==
+   =========================================================================
+
+Android Code
+Copyright 2005-2008 The Android Open Source Project
+
+This product includes software developed as part of
+The Android Open Source Project (http://source.android.com).
+
+   =========================================================================
+   ==  NOTICE file corresponding to the section 4 d of                    ==
+   ==  the Apache License, Version 2.0,                                   ==
+   ==  in this case for the Apache Harmony distribution.                  ==
+   =========================================================================
+
+Apache Harmony
+Copyright 2006 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Portions of Harmony were originally developed by
+Intel Corporation and are licensed to the Apache Software
+Foundation under the "Software Grant and Corporate Contribution
+License Agreement", informally known as the "Intel Harmony CLA".
+
+
+   =========================================================================
+   ==  NOTICE file for the ICU License.                                   ==
+   =========================================================================
+
+Copyright (c) 1995-2009 International Business Machines Corporation and others
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
+SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+All trademarks and registered trademarks mentioned herein are the
+property of their respective owners.
+
+
+   =========================================================================
+   ==  NOTICE file for the JUnit License.                                 ==
+   =========================================================================
+
+Common Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+      a) in the case of the initial Contributor, the initial code and
+         documentation distributed under this Agreement, and
+      b) in the case of each subsequent Contributor:
+
+      i) changes to the Program, and
+
+      ii) additions to the Program;
+
+      where such changes and/or additions to the Program originate
+      from and are distributed by that particular Contributor. A
+      Contribution 'originates' from a Contributor if it was added to
+      the Program by such Contributor itself or anyone acting on such
+      Contributor's behalf. Contributions do not include additions to
+      the Program which: (i) are separate modules of software
+      distributed in conjunction with the Program under their own
+      license agreement, and (ii) are not derivative works of the
+      Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor
+which are necessarily infringed by the use or sale of its Contribution
+alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this
+Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+      a) Subject to the terms of this Agreement, each Contributor
+      hereby grants Recipient a non-exclusive, worldwide, royalty-free
+      copyright license to reproduce, prepare derivative works of,
+      publicly display, publicly perform, distribute and sublicense
+      the Contribution of such Contributor, if any, and such
+      derivative works, in source code and object code form.
+
+      b) Subject to the terms of this Agreement, each Contributor
+      hereby grants Recipient a non-exclusive, worldwide, royalty-free
+      patent license under Licensed Patents to make, use, sell, offer
+      to sell, import and otherwise transfer the Contribution of such
+      Contributor, if any, in source code and object code form. This
+      patent license shall apply to the combination of the
+      Contribution and the Program if, at the time the Contribution is
+      added by the Contributor, such addition of the Contribution
+      causes such combination to be covered by the Licensed Patents.
+      The patent license shall not apply to any other combinations
+      which include the Contribution. No hardware per se is licensed
+      hereunder.
+
+      c) Recipient understands that although each Contributor grants
+      the licenses to its Contributions set forth herein, no
+      assurances are provided by any Contributor that the Program does
+      not infringe the patent or other intellectual property rights of
+      any other entity. Each Contributor disclaims any liability to
+      Recipient for claims brought by any other entity based on
+      infringement of intellectual property rights or otherwise. As a
+      condition to exercising the rights and licenses granted
+      hereunder, each Recipient hereby assumes sole responsibility to
+      secure any other intellectual property rights needed, if any.
+      For example, if a third party patent license is required to
+      allow Recipient to distribute the Program, it is Recipient's
+      responsibility to acquire that license before distributing the
+      Program.
+
+      d) Each Contributor represents that to its knowledge it has
+      sufficient copyright rights in its Contribution, if any, to
+      grant the copyright license set forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+
+      a) it complies with the terms and conditions of this Agreement; and
+
+      b) its license agreement:
+
+      i) effectively disclaims on behalf of all Contributors all
+      warranties and conditions, express and implied, including
+      warranties or conditions of title and non-infringement, and
+      implied warranties or conditions of merchantability and fitness
+      for a particular purpose;
+
+      ii) effectively excludes on behalf of all Contributors all
+      liability for damages, including direct, indirect, special,
+      incidental and consequential damages, such as lost profits;
+
+      iii) states that any provisions which differ from this Agreement
+      are offered by that Contributor alone and not by any other
+      party; and
+
+      iv) states that source code for the Program is available from
+      such Contributor, and informs licensees how to obtain it in a
+      reasonable manner on or through a medium customarily used for
+      software exchange.
+
+When the Program is made available in source code form:
+
+      a) it must be made available under this Agreement; and 
+
+      b) a copy of this Agreement must be included with each copy of
+      the Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain
+responsibilities with respect to end users, business partners and the
+like. While this license is intended to facilitate the commercial use
+of the Program, the Contributor who includes the Program in a
+commercial product offering should do so in a manner which does not
+create potential liability for other Contributors. Therefore, if a
+Contributor includes the Program in a commercial product offering,
+such Contributor ("Commercial Contributor") hereby agrees to defend
+and indemnify every other Contributor ("Indemnified Contributor")
+against any losses, damages and costs (collectively "Losses") arising
+from claims, lawsuits and other legal actions brought by a third party
+against the Indemnified Contributor to the extent caused by the acts
+or omissions of such Commercial Contributor in connection with its
+distribution of the Program in a commercial product offering. The
+obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement.
+In order to qualify, an Indemnified Contributor must: a) promptly
+notify the Commercial Contributor in writing of such claim, and b)
+allow the Commercial Contributor to control, and cooperate with the
+Commercial Contributor in, the defense and any related settlement
+negotiations. The Indemnified Contributor may participate in any such
+claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
+PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
+WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
+OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
+responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its
+exercise of rights under this Agreement, including but not limited to
+the risks and costs of program errors, compliance with applicable
+laws, damage to or loss of data, programs or equipment, and
+unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further
+action by the parties hereto, such provision shall be reformed to the
+minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with
+respect to a patent applicable to software (including a cross-claim or
+counterclaim in a lawsuit), then any patent licenses granted by that
+Contributor to such Recipient under this Agreement shall terminate as
+of the date such litigation is filed. In addition, if Recipient
+institutes patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or
+hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it
+fails to comply with any of the material terms or conditions of this
+Agreement and does not cure such failure in a reasonable period of
+time after becoming aware of such noncompliance. If all Recipient's
+rights under this Agreement terminate, Recipient agrees to cease use
+and distribution of the Program as soon as reasonably practicable.
+However, Recipient's obligations under this Agreement and any licenses
+granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and
+may only be modified in the following manner. The Agreement Steward
+reserves the right to publish new versions (including revisions) of
+this Agreement from time to time. No one other than the Agreement
+Steward has the right to modify this Agreement. IBM is the initial
+Agreement Steward. IBM may assign the responsibility to serve as the
+Agreement Steward to a suitable separate entity. Each new version of
+the Agreement will be given a distinguishing version number. The
+Program (including Contributions) may always be distributed subject to
+the version of the Agreement under which it was received. In addition,
+after a new version of the Agreement is published, Contributor may
+elect to distribute the Program (including its Contributions) under
+the new version. Except as expressly stated in Sections 2(a) and 2(b)
+above, Recipient receives no rights or licenses to the intellectual
+property of any Contributor under this Agreement, whether expressly,
+by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and
+the intellectual property laws of the United States of America. No
+party to this Agreement will bring a legal action under this Agreement
+more than one year after the cause of action arose. Each party waives
+its rights to a jury trial in any resulting litigation.
+
+
+   =========================================================================
+   ==  NOTICE file for the KXML License.                                  ==
+   =========================================================================
+
+Copyright (c) 2002,2003, Stefan Haustein, Oberhausen, Rhld., Germany
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+   =========================================================================
+   ==  NOTICE file for the SQLite Java Wrapper License.                   ==
+   =========================================================================
+
+This software is copyrighted by Christian Werner <chw@ch-werner.de>
+and others. The following terms apply to all files associated with the
+software unless explicitly disclaimed in individual files.
+
+The authors hereby grant permission to use, copy, modify, distribute,
+and license this software and its documentation for any purpose, provided
+that existing copyright notices are retained in all copies and that this
+notice is included verbatim in any distributions. No written agreement,
+license, or royalty fee is required for any of the authorized uses.
+Modifications to this software may be copyrighted by their authors
+and need not follow the licensing terms described here, provided that
+the new terms are clearly indicated on the first page of each file where
+they apply.
+
+IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
+FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
+DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
+IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
+NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
+MODIFICATIONS.
+
+
+   =========================================================================
+   ==  NOTICE file for the W3C License.                                   ==
+   =========================================================================
+
+Copyright (c) 2000 World Wide Web Consortium, (Massachusetts Institute
+of Technology, Institut National de Recherche en Informatique et en
+Automatique, Keio University). All Rights Reserved. This program is
+distributed under the W3C's Software Intellectual Property License.
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See W3C License http://www.w3.org/Consortium/Legal/ for more details.
+
+============================================================
+Notices for file(s):
+/usr/icu/icudt51l.dat
+------------------------------------------------------------
+ICU License - ICU 1.8.1 and later
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2008 International Business Machines Corporation and others
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder.
+
+All trademarks and registered trademarks mentioned herein are the property of their respective owners. 
+
+==============================================================================
+
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+    Unicode Data Files include all data files under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
+http://www.unicode.org/cldr/data/ . Unicode Software includes any source code
+published in the Unicode Standard or under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
+http://www.unicode.org/cldr/data/.
+
+    NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES
+("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND
+AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF YOU
+DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA FILES
+OR SOFTWARE.
+
+    COPYRIGHT AND PERMISSION NOTICE
+
+    Copyright © 1991-2007 Unicode, Inc. All rights reserved. Distributed under
+the Terms of Use in http://www.unicode.org/copyright.html.
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+of the Unicode data files and any associated documentation (the "Data Files") or
+Unicode software and any associated documentation (the "Software") to deal in
+the Data Files or Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files or
+Software are furnished to do so, provided that (a) the above copyright notice(s)
+and this permission notice appear with all copies of the Data Files or Software,
+(b) both the above copyright notice(s) and this permission notice appear in
+associated documentation, and (c) there is clear notice in each modified Data
+File or in the Software as well as in the documentation associated with the Data
+File(s) or Software that the data or software has been modified.
+
+    THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
+PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+SOFTWARE.
+
+    Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in these Data Files or Software without prior written authorization of the
+copyright holder.
+
+===============================================================================
+
+
+/* This ICU code derived from: */
+/*
+punycode.c 0.4.0 (2001-Nov-17-Sat)
+http://www.cs.berkeley.edu/~amc/idn/
+Adam M. Costello
+http://www.nicemice.net/amc/
+
+Disclaimer and license
+
+Regarding this entire document or any portion of it (including
+the pseudocode and C code), the author makes no guarantees and
+is not responsible for any damage resulting from its use. The
+author grants irrevocable permission to anyone to use, modify,
+and distribute it in any way that does not diminish the rights
+of anyone else to use, modify, and distribute it, provided that
+redistributed derivative works do not contain misleading author or
+version information. Derivative works need not be licensed under
+similar terms.
+*/
+
+
+/*
+** This file is in the public domain, so clarified as of
+** 2006-07-17 by Arthur David Olson.
+*/
+
+============================================================
+Notices for file(s):
+/framework/jcommon-1.0.12.jar
+/framework/jfreechart-1.0.9-swt.jar
+/framework/jfreechart-1.0.9.jar
+------------------------------------------------------------
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
+============================================================
+Notices for file(s):
+/lib/third_party_icu_icudata_host_gyp.a
+/lib/third_party_icu_icui18n_host_gyp.a
+/lib/third_party_icu_icuuc_host_gyp.a
+/lib/third_party_protobuf_protobuf_full_do_not_use_host_gyp.a
+/lib/v8_tools_gyp_v8_base_arm_host_gyp.a
+/lib/v8_tools_gyp_v8_nosnapshot_arm_host_gyp.a
+/obj/GYP/shared_intermediates/mksnapshot.arm
+/obj/GYP/shared_intermediates/protoc
+------------------------------------------------------------
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/****************************************************************
+ *
+ * The author of this software is David M. Gay.
+ *
+ * Copyright (c) 1991, 2000, 2001 by Lucent Technologies.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose without fee is hereby granted, provided that this entire notice
+ * is included in all copies of any software which is or includes a copy
+ * or modification of this software and in all copies of the supporting
+ * documentation for such software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
+ * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+ * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ ***************************************************************/
+
+/* Copyright (c) 2008-2009, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ---
+ * Author: Kostya Serebryany
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Netscape Portable Runtime (NSPR).
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998-2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+   Notice that the following BSD-style license applies to the Valgrind header
+   files used by Chromium (valgrind.h and memcheck.h). However, the rest of
+   Valgrind is licensed under the terms of the GNU General Public License,
+   version 2, unless otherwise indicated.
+
+   ----------------------------------------------------------------
+
+   Copyright (C) 2000-2008 Julian Seward.  All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. The origin of this software must not be misrepresented; you must 
+      not claim that you wrote the original software.  If you use this 
+      software in a product, an acknowledgment in the product 
+      documentation would be appreciated but is not required.
+
+   3. Altered source versions must be plainly marked as such, and must
+      not be misrepresented as being the original software.
+
+   4. The name of the author may not be used to endorse or promote 
+      products derived from this software without specific prior written 
+      permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+   OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+  Copyright (c) 2007 Red Hat, inc
+
+  Permission is hereby granted, free of charge, to any person
+  obtaining a copy of this software and associated documentation files
+  (the "Software"), to deal in the Software without restriction,
+  including without limitation the rights to use, copy, modify, merge,
+  publish, distribute, sublicense, and/or sell copies of the Software,
+  and to permit persons to whom the Software is furnished to do so,
+  subject to the following conditions: 
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software. 
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+
+Copyright 2003-2005 Colin Percival
+All rights reserved
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted providing that the following conditions 
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2007-2009 Google Inc.
+   Copyright 2007-2009 WebDriver committers
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+Copyright (C) 2009 by Tung Mac.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Netscape security libraries.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Netscape security libraries.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1994-2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+Copyright 2011, The Chromium Authors
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+/*
+** Copyright (c) 2007-2010 The Khronos Group Inc.
+**
+** Permission is hereby granted, free of charge, to any person obtaining a
+** copy of this software and/or associated documentation files (the
+** "Materials"), to deal in the Materials without restriction, including
+** without limitation the rights to use, copy, modify, merge, publish,
+** distribute, sublicense, and/or sell copies of the Materials, and to
+** permit persons to whom the Materials are furnished to do so, subject to
+** the following conditions:
+**
+** The above copyright notice and this permission notice shall be included
+** in all copies or substantial portions of the Materials.
+**
+** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+*/
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright (c) 2008, Google Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+(WebKit doesn't distribute an explicit license.  This LICENSE is derived from
+license text in the source.)
+
+Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007 Alexander Kellett, Alexey Proskuryakov, Alex Mathews, Allan
+Sandfeld Jensen, Alp Toker, Anders Carlsson, Andrew Wellington, Antti
+Koivisto, Apple Inc., Arthur Langereis, Baron Schwartz, Bjoern Graf,
+Brent Fulgham, Cameron Zwarich, Charles Samuels, Christian Dywan,
+Collabora Ltd., Cyrus Patel, Daniel Molkentin, Dave Maclachlan, David
+Smith, Dawit Alemayehu, Dirk Mueller, Dirk Schulze, Don Gibson, Enrico
+Ros, Eric Seidel, Frederik Holljen, Frerich Raabe, Friedmann Kleint,
+George Staikos, Google Inc., Graham Dennis, Harri Porten, Henry Mason,
+Hiroyuki Ikezoe, Holger Hans Peter Freyther, IBM, James G. Speth, Jan
+Alonzo, Jean-Loup Gailly, John Reis, Jonas Witt, Jon Shier, Jonas
+Witt, Julien Chaffraix, Justin Haygood, Kevin Ollivier, Kevin Watters,
+Kimmo Kinnunen, Kouhei Sutou, Krzysztof Kowalczyk, Lars Knoll, Luca
+Bruno, Maks Orlovich, Malte Starostik, Mark Adler, Martin Jones,
+Marvin Decker, Matt Lilek, Michael Emmel, Mitz Pettel, mozilla.org,
+Netscape Communications Corporation, Nicholas Shanks, Nikolas
+Zimmermann, Nokia, Oliver Hunt, Opened Hand, Paul Johnston, Peter
+Kelly, Pioneer Research Center USA, Rich Moore, Rob Buis, Robin Dunn,
+Ronald Tschalär, Samuel Weinig, Simon Hausmann, Staikos Computing
+Services Inc., Stefan Schimanski, Symantec Corporation, The Dojo
+Foundation, The Karbon Developers, Thomas Boyer, Tim Copperfield,
+Tobias Anton, Torben Weis, Trolltech, University of Cambridge, Vaclav
+Slavik, Waldo Bastian, Xan Lopez, Zack Rusin
+
+The terms and conditions vary from file to file, but are one of:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the
+   distribution.
+
+*OR*
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the
+   distribution.
+3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+   its contributors may be used to endorse or promote products derived
+   from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+// Copyright (C) 2002-2013 The ANGLE Project Authors. 
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+//     Redistributions of source code must retain the above copyright
+//     notice, this list of conditions and the following disclaimer.
+//
+//     Redistributions in binary form must reproduce the above 
+//     copyright notice, this list of conditions and the following
+//     disclaimer in the documentation and/or other materials provided
+//     with the distribution.
+//
+//     Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc.
+//     Ltd., nor the names of their contributors may be used to endorse
+//     or promote products derived from this software without specific
+//     prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+Copyright (c) 2012, Manfred Moitzi
+
+Permission is hereby granted, free of charge, to any person obtaining a 
+copy of this software and associated documentation files (the 
+"Software"), to deal in the Software without restriction, including 
+without limitation the rights to use, copy, modify, merge, publish, 
+distribute, sublicense, and/or sell copies of the Software, and to 
+permit persons to whom the Software is furnished to do so, subject to 
+the following conditions: 
+
+The above copyright notice and this permission notice shall be included 
+in all copies or substantial portions of the Software. 
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 
+
+Deutsche Übersetzung:
+
+Copyright (c) 2012, Manfred Moitzi
+
+Hiermit wird unentgeltlich, jeder Person, die eine Kopie der Software 
+und der zugehörigen Dokumentationen (die "Software") erhält, die 
+Erlaubnis erteilt, uneingeschränkt zu benutzen, inklusive und ohne 
+Ausnahme, dem Recht, sie zu verwenden, kopieren, ändern, fusionieren, 
+verlegen, verbreiten, unterlizenzieren und/oder zu verkaufen, und 
+Personen, die diese Software erhalten, diese Rechte zu geben, unter den 
+folgenden Bedingungen: 
+
+Der obige Urheberrechtsvermerk und dieser Erlaubnisvermerk sind in allen 
+Kopien oder Teilkopien der Software beizulegen. 
+
+DIE SOFTWARE WIRD OHNE JEDE AUSDRÜCKLICHE ODER IMPLIZIERTE GARANTIE 
+BEREITGESTELLT, EINSCHLIESSLICH DER GARANTIE ZUR BENUTZUNG FÜR DEN 
+VORGESEHENEN ODER EINEM BESTIMMTEN ZWECK SOWIE JEGLICHER 
+RECHTSVERLETZUNG, JEDOCH NICHT DARAUF BESCHRÄNKT. IN KEINEM FALL SIND 
+DIE AUTOREN ODER COPYRIGHTINHABER FÜR JEGLICHEN SCHADEN ODER SONSTIGE 
+ANSPRÜCHE HAFTBAR ZU MACHEN, OB INFOLGE DER ERFÜLLUNG EINES VERTRAGES, 
+EINES DELIKTES ODER ANDERS IM ZUSAMMENHANG MIT DER SOFTWARE ODER 
+SONSTIGER VERWENDUNG DER SOFTWARE ENTSTANDEN. 
+
+
+// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+                          MOZILLA PUBLIC LICENSE
+                                Version 1.1
+
+                              ---------------
+
+1. Definitions.
+
+     1.0.1. "Commercial Use" means distribution or otherwise making the
+     Covered Code available to a third party.
+
+     1.1. "Contributor" means each entity that creates or contributes to
+     the creation of Modifications.
+
+     1.2. "Contributor Version" means the combination of the Original
+     Code, prior Modifications used by a Contributor, and the Modifications
+     made by that particular Contributor.
+
+     1.3. "Covered Code" means the Original Code or Modifications or the
+     combination of the Original Code and Modifications, in each case
+     including portions thereof.
+
+     1.4. "Electronic Distribution Mechanism" means a mechanism generally
+     accepted in the software development community for the electronic
+     transfer of data.
+
+     1.5. "Executable" means Covered Code in any form other than Source
+     Code.
+
+     1.6. "Initial Developer" means the individual or entity identified
+     as the Initial Developer in the Source Code notice required by Exhibit
+     A.
+
+     1.7. "Larger Work" means a work which combines Covered Code or
+     portions thereof with code not governed by the terms of this License.
+
+     1.8. "License" means this document.
+
+     1.8.1. "Licensable" means having the right to grant, to the maximum
+     extent possible, whether at the time of the initial grant or
+     subsequently acquired, any and all of the rights conveyed herein.
+
+     1.9. "Modifications" means any addition to or deletion from the
+     substance or structure of either the Original Code or any previous
+     Modifications. When Covered Code is released as a series of files, a
+     Modification is:
+          A. Any addition to or deletion from the contents of a file
+          containing Original Code or previous Modifications.
+
+          B. Any new file that contains any part of the Original Code or
+          previous Modifications.
+
+     1.10. "Original Code" means Source Code of computer software code
+     which is described in the Source Code notice required by Exhibit A as
+     Original Code, and which, at the time of its release under this
+     License is not already Covered Code governed by this License.
+
+     1.10.1. "Patent Claims" means any patent claim(s), now owned or
+     hereafter acquired, including without limitation, method, process,
+     and apparatus claims, in any patent Licensable by grantor.
+
+     1.11. "Source Code" means the preferred form of the Covered Code for
+     making modifications to it, including all modules it contains, plus
+     any associated interface definition files, scripts used to control
+     compilation and installation of an Executable, or source code
+     differential comparisons against either the Original Code or another
+     well known, available Covered Code of the Contributor's choice. The
+     Source Code can be in a compressed or archival form, provided the
+     appropriate decompression or de-archiving software is widely available
+     for no charge.
+
+     1.12. "You" (or "Your") means an individual or a legal entity
+     exercising rights under, and complying with all of the terms of, this
+     License or a future version of this License issued under Section 6.1.
+     For legal entities, "You" includes any entity which controls, is
+     controlled by, or is under common control with You. For purposes of
+     this definition, "control" means (a) the power, direct or indirect,
+     to cause the direction or management of such entity, whether by
+     contract or otherwise, or (b) ownership of more than fifty percent
+     (50%) of the outstanding shares or beneficial ownership of such
+     entity.
+
+2. Source Code License.
+
+     2.1. The Initial Developer Grant.
+     The Initial Developer hereby grants You a world-wide, royalty-free,
+     non-exclusive license, subject to third party intellectual property
+     claims:
+          (a) under intellectual property rights (other than patent or
+          trademark) Licensable by Initial Developer to use, reproduce,
+          modify, display, perform, sublicense and distribute the Original
+          Code (or portions thereof) with or without Modifications, and/or
+          as part of a Larger Work; and
+
+          (b) under Patents Claims infringed by the making, using or
+          selling of Original Code, to make, have made, use, practice,
+          sell, and offer for sale, and/or otherwise dispose of the
+          Original Code (or portions thereof).
+
+          (c) the licenses granted in this Section 2.1(a) and (b) are
+          effective on the date Initial Developer first distributes
+          Original Code under the terms of this License.
+
+          (d) Notwithstanding Section 2.1(b) above, no patent license is
+          granted: 1) for code that You delete from the Original Code; 2)
+          separate from the Original Code; or 3) for infringements caused
+          by: i) the modification of the Original Code or ii) the
+          combination of the Original Code with other software or devices.
+
+     2.2. Contributor Grant.
+     Subject to third party intellectual property claims, each Contributor
+     hereby grants You a world-wide, royalty-free, non-exclusive license
+
+          (a) under intellectual property rights (other than patent or
+          trademark) Licensable by Contributor, to use, reproduce, modify,
+          display, perform, sublicense and distribute the Modifications
+          created by such Contributor (or portions thereof) either on an
+          unmodified basis, with other Modifications, as Covered Code
+          and/or as part of a Larger Work; and
+
+          (b) under Patent Claims infringed by the making, using, or
+          selling of Modifications made by that Contributor either alone
+          and/or in combination with its Contributor Version (or portions
+          of such combination), to make, use, sell, offer for sale, have
+          made, and/or otherwise dispose of: 1) Modifications made by that
+          Contributor (or portions thereof); and 2) the combination of
+          Modifications made by that Contributor with its Contributor
+          Version (or portions of such combination).
+
+          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
+          effective on the date Contributor first makes Commercial Use of
+          the Covered Code.
+
+          (d) Notwithstanding Section 2.2(b) above, no patent license is
+          granted: 1) for any code that Contributor has deleted from the
+          Contributor Version; 2) separate from the Contributor Version;
+          3) for infringements caused by: i) third party modifications of
+          Contributor Version or ii) the combination of Modifications made
+          by that Contributor with other software (except as part of the
+          Contributor Version) or other devices; or 4) under Patent Claims
+          infringed by Covered Code in the absence of Modifications made by
+          that Contributor.
+
+3. Distribution Obligations.
+
+     3.1. Application of License.
+     The Modifications which You create or to which You contribute are
+     governed by the terms of this License, including without limitation
+     Section 2.2. The Source Code version of Covered Code may be
+     distributed only under the terms of this License or a future version
+     of this License released under Section 6.1, and You must include a
+     copy of this License with every copy of the Source Code You
+     distribute. You may not offer or impose any terms on any Source Code
+     version that alters or restricts the applicable version of this
+     License or the recipients' rights hereunder. However, You may include
+     an additional document offering the additional rights described in
+     Section 3.5.
+
+     3.2. Availability of Source Code.
+     Any Modification which You create or to which You contribute must be
+     made available in Source Code form under the terms of this License
+     either on the same media as an Executable version or via an accepted
+     Electronic Distribution Mechanism to anyone to whom you made an
+     Executable version available; and if made available via Electronic
+     Distribution Mechanism, must remain available for at least twelve (12)
+     months after the date it initially became available, or at least six
+     (6) months after a subsequent version of that particular Modification
+     has been made available to such recipients. You are responsible for
+     ensuring that the Source Code version remains available even if the
+     Electronic Distribution Mechanism is maintained by a third party.
+
+     3.3. Description of Modifications.
+     You must cause all Covered Code to which You contribute to contain a
+     file documenting the changes You made to create that Covered Code and
+     the date of any change. You must include a prominent statement that
+     the Modification is derived, directly or indirectly, from Original
+     Code provided by the Initial Developer and including the name of the
+     Initial Developer in (a) the Source Code, and (b) in any notice in an
+     Executable version or related documentation in which You describe the
+     origin or ownership of the Covered Code.
+
+     3.4. Intellectual Property Matters
+          (a) Third Party Claims.
+          If Contributor has knowledge that a license under a third party's
+          intellectual property rights is required to exercise the rights
+          granted by such Contributor under Sections 2.1 or 2.2,
+          Contributor must include a text file with the Source Code
+          distribution titled "LEGAL" which describes the claim and the
+          party making the claim in sufficient detail that a recipient will
+          know whom to contact. If Contributor obtains such knowledge after
+          the Modification is made available as described in Section 3.2,
+          Contributor shall promptly modify the LEGAL file in all copies
+          Contributor makes available thereafter and shall take other steps
+          (such as notifying appropriate mailing lists or newsgroups)
+          reasonably calculated to inform those who received the Covered
+          Code that new knowledge has been obtained.
+
+          (b) Contributor APIs.
+          If Contributor's Modifications include an application programming
+          interface and Contributor has knowledge of patent licenses which
+          are reasonably necessary to implement that API, Contributor must
+          also include this information in the LEGAL file.
+
+          (c) Representations.
+          Contributor represents that, except as disclosed pursuant to
+          Section 3.4(a) above, Contributor believes that Contributor's
+          Modifications are Contributor's original creation(s) and/or
+          Contributor has sufficient rights to grant the rights conveyed by
+          this License.
+
+     3.5. Required Notices.
+     You must duplicate the notice in Exhibit A in each file of the Source
+     Code. If it is not possible to put such notice in a particular Source
+     Code file due to its structure, then You must include such notice in a
+     location (such as a relevant directory) where a user would be likely
+     to look for such a notice. If You created one or more Modification(s)
+     You may add your name as a Contributor to the notice described in
+     Exhibit A. You must also duplicate this License in any documentation
+     for the Source Code where You describe recipients' rights or ownership
+     rights relating to Covered Code. You may choose to offer, and to
+     charge a fee for, warranty, support, indemnity or liability
+     obligations to one or more recipients of Covered Code. However, You
+     may do so only on Your own behalf, and not on behalf of the Initial
+     Developer or any Contributor. You must make it absolutely clear than
+     any such warranty, support, indemnity or liability obligation is
+     offered by You alone, and You hereby agree to indemnify the Initial
+     Developer and every Contributor for any liability incurred by the
+     Initial Developer or such Contributor as a result of warranty,
+     support, indemnity or liability terms You offer.
+
+     3.6. Distribution of Executable Versions.
+     You may distribute Covered Code in Executable form only if the
+     requirements of Section 3.1-3.5 have been met for that Covered Code,
+     and if You include a notice stating that the Source Code version of
+     the Covered Code is available under the terms of this License,
+     including a description of how and where You have fulfilled the
+     obligations of Section 3.2. The notice must be conspicuously included
+     in any notice in an Executable version, related documentation or
+     collateral in which You describe recipients' rights relating to the
+     Covered Code. You may distribute the Executable version of Covered
+     Code or ownership rights under a license of Your choice, which may
+     contain terms different from this License, provided that You are in
+     compliance with the terms of this License and that the license for the
+     Executable version does not attempt to limit or alter the recipient's
+     rights in the Source Code version from the rights set forth in this
+     License. If You distribute the Executable version under a different
+     license You must make it absolutely clear that any terms which differ
+     from this License are offered by You alone, not by the Initial
+     Developer or any Contributor. You hereby agree to indemnify the
+     Initial Developer and every Contributor for any liability incurred by
+     the Initial Developer or such Contributor as a result of any such
+     terms You offer.
+
+     3.7. Larger Works.
+     You may create a Larger Work by combining Covered Code with other code
+     not governed by the terms of this License and distribute the Larger
+     Work as a single product. In such a case, You must make sure the
+     requirements of this License are fulfilled for the Covered Code.
+
+4. Inability to Comply Due to Statute or Regulation.
+
+     If it is impossible for You to comply with any of the terms of this
+     License with respect to some or all of the Covered Code due to
+     statute, judicial order, or regulation then You must: (a) comply with
+     the terms of this License to the maximum extent possible; and (b)
+     describe the limitations and the code they affect. Such description
+     must be included in the LEGAL file described in Section 3.4 and must
+     be included with all distributions of the Source Code. Except to the
+     extent prohibited by statute or regulation, such description must be
+     sufficiently detailed for a recipient of ordinary skill to be able to
+     understand it.
+
+5. Application of this License.
+
+     This License applies to code to which the Initial Developer has
+     attached the notice in Exhibit A and to related Covered Code.
+
+6. Versions of the License.
+
+     6.1. New Versions.
+     Netscape Communications Corporation ("Netscape") may publish revised
+     and/or new versions of the License from time to time. Each version
+     will be given a distinguishing version number.
+
+     6.2. Effect of New Versions.
+     Once Covered Code has been published under a particular version of the
+     License, You may always continue to use it under the terms of that
+     version. You may also choose to use such Covered Code under the terms
+     of any subsequent version of the License published by Netscape. No one
+     other than Netscape has the right to modify the terms applicable to
+     Covered Code created under this License.
+
+     6.3. Derivative Works.
+     If You create or use a modified version of this License (which you may
+     only do in order to apply it to code which is not already Covered Code
+     governed by this License), You must (a) rename Your license so that
+     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
+     "MPL", "NPL" or any confusingly similar phrase do not appear in your
+     license (except to note that your license differs from this License)
+     and (b) otherwise make it clear that Your version of the license
+     contains terms which differ from the Mozilla Public License and
+     Netscape Public License. (Filling in the name of the Initial
+     Developer, Original Code or Contributor in the notice described in
+     Exhibit A shall not of themselves be deemed to be modifications of
+     this License.)
+
+7. DISCLAIMER OF WARRANTY.
+
+     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
+     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
+     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
+     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
+     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
+     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
+     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
+     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
+     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
+
+8. TERMINATION.
+
+     8.1. This License and the rights granted hereunder will terminate
+     automatically if You fail to comply with terms herein and fail to cure
+     such breach within 30 days of becoming aware of the breach. All
+     sublicenses to the Covered Code which are properly granted shall
+     survive any termination of this License. Provisions which, by their
+     nature, must remain in effect beyond the termination of this License
+     shall survive.
+
+     8.2. If You initiate litigation by asserting a patent infringement
+     claim (excluding declatory judgment actions) against Initial Developer
+     or a Contributor (the Initial Developer or Contributor against whom
+     You file such action is referred to as "Participant") alleging that:
+
+     (a) such Participant's Contributor Version directly or indirectly
+     infringes any patent, then any and all rights granted by such
+     Participant to You under Sections 2.1 and/or 2.2 of this License
+     shall, upon 60 days notice from Participant terminate prospectively,
+     unless if within 60 days after receipt of notice You either: (i)
+     agree in writing to pay Participant a mutually agreeable reasonable
+     royalty for Your past and future use of Modifications made by such
+     Participant, or (ii) withdraw Your litigation claim with respect to
+     the Contributor Version against such Participant. If within 60 days
+     of notice, a reasonable royalty and payment arrangement are not
+     mutually agreed upon in writing by the parties or the litigation claim
+     is not withdrawn, the rights granted by Participant to You under
+     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
+     the 60 day notice period specified above.
+
+     (b) any software, hardware, or device, other than such Participant's
+     Contributor Version, directly or indirectly infringes any patent, then
+     any rights granted to You by such Participant under Sections 2.1(b)
+     and 2.2(b) are revoked effective as of the date You first made, used,
+     sold, distributed, or had made, Modifications made by that
+     Participant.
+
+     8.3. If You assert a patent infringement claim against Participant
+     alleging that such Participant's Contributor Version directly or
+     indirectly infringes any patent where such claim is resolved (such as
+     by license or settlement) prior to the initiation of patent
+     infringement litigation, then the reasonable value of the licenses
+     granted by such Participant under Sections 2.1 or 2.2 shall be taken
+     into account in determining the amount or value of any payment or
+     license.
+
+     8.4. In the event of termination under Sections 8.1 or 8.2 above,
+     all end user license agreements (excluding distributors and resellers)
+     which have been validly granted by You or any distributor hereunder
+     prior to termination shall survive termination.
+
+9. LIMITATION OF LIABILITY.
+
+     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
+     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
+     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
+     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
+     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
+     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
+     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
+     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
+     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
+     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
+     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+10. U.S. GOVERNMENT END USERS.
+
+     The Covered Code is a "commercial item," as that term is defined in
+     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
+     software" and "commercial computer software documentation," as such
+     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
+     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
+     all U.S. Government End Users acquire Covered Code with only those
+     rights set forth herein.
+
+11. MISCELLANEOUS.
+
+     This License represents the complete agreement concerning subject
+     matter hereof. If any provision of this License is held to be
+     unenforceable, such provision shall be reformed only to the extent
+     necessary to make it enforceable. This License shall be governed by
+     California law provisions (except to the extent applicable law, if
+     any, provides otherwise), excluding its conflict-of-law provisions.
+     With respect to disputes in which at least one party is a citizen of,
+     or an entity chartered or registered to do business in the United
+     States of America, any litigation relating to this License shall be
+     subject to the jurisdiction of the Federal Courts of the Northern
+     District of California, with venue lying in Santa Clara County,
+     California, with the losing party responsible for costs, including
+     without limitation, court costs and reasonable attorneys' fees and
+     expenses. The application of the United Nations Convention on
+     Contracts for the International Sale of Goods is expressly excluded.
+     Any law or regulation which provides that the language of a contract
+     shall be construed against the drafter shall not apply to this
+     License.
+
+12. RESPONSIBILITY FOR CLAIMS.
+
+     As between Initial Developer and the Contributors, each party is
+     responsible for claims and damages arising, directly or indirectly,
+     out of its utilization of rights under this License and You agree to
+     work with Initial Developer and Contributors to distribute such
+     responsibility on an equitable basis. Nothing herein is intended or
+     shall be deemed to constitute any admission of liability.
+
+13. MULTIPLE-LICENSED CODE.
+
+     Initial Developer may designate portions of the Covered Code as
+     "Multiple-Licensed". "Multiple-Licensed" means that the Initial
+     Developer permits you to utilize portions of the Covered Code under
+     Your choice of the NPL or the alternative licenses, if any, specified
+     by the Initial Developer in the file described in Exhibit A.
+
+EXHIBIT A -Mozilla Public License.
+
+     ``The contents of this file are subject to the Mozilla Public License
+     Version 1.1 (the "License"); you may not use this file except in
+     compliance with the License. You may obtain a copy of the License at
+     http://www.mozilla.org/MPL/
+
+     Software distributed under the License is distributed on an "AS IS"
+     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+     License for the specific language governing rights and limitations
+     under the License.
+
+     The Original Code is ______________________________________.
+
+     The Initial Developer of the Original Code is ________________________.
+     Portions created by ______________________ are Copyright (C) ______
+     _______________________. All Rights Reserved.
+
+     Contributor(s): ______________________________________.
+
+     Alternatively, the contents of this file may be used under the terms
+     of the _____ license (the "[___] License"), in which case the
+     provisions of [______] License are applicable instead of those
+     above. If you wish to allow use of your version of this file only
+     under the terms of the [____] License and not to allow others to use
+     your version of this file under the MPL, indicate your decision by
+     deleting the provisions above and replace them with the notice and
+     other provisions required by the [___] License. If you do not delete
+     the provisions above, a recipient may use your version of this file
+     under either the MPL or the [___] License."
+
+     [NOTE: The text of this Exhibit A may differ slightly from the text of
+     the notices in the Source Code files of the Original Code. You should
+     use the text of this Exhibit A rather than the text found in the
+     Original Code Source Code for Your Modifications.]
+
+     ----------------------------------------------------------------------
+
+     AMENDMENTS
+
+     The Netscape Public License Version 1.1 ("NPL") consists of the
+     Mozilla Public License Version 1.1 with the following Amendments,
+     including Exhibit A-Netscape Public License. Files identified with
+     "Exhibit A-Netscape Public License" are governed by the Netscape
+     Public License Version 1.1.
+
+     Additional Terms applicable to the Netscape Public License.
+          I. Effect.
+          These additional terms described in this Netscape Public
+          License -- Amendments shall apply to the Mozilla Communicator
+          client code and to all Covered Code under this License.
+
+          II. "Netscape's Branded Code" means Covered Code that Netscape
+          distributes and/or permits others to distribute under one or more
+          trademark(s) which are controlled by Netscape but which are not
+          licensed for use under this License.
+
+          III. Netscape and logo.
+          This License does not grant any rights to use the trademarks
+          "Netscape", the "Netscape N and horizon" logo or the "Netscape
+          lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript",
+          "Smart Browsing" even if such marks are included in the Original
+          Code or Modifications.
+
+          IV. Inability to Comply Due to Contractual Obligation.
+          Prior to licensing the Original Code under this License, Netscape
+          has licensed third party code for use in Netscape's Branded Code.
+          To the extent that Netscape is limited contractually from making
+          such third party code available under this License, Netscape may
+          choose to reintegrate such code into Covered Code without being
+          required to distribute such code in Source Code form, even if
+          such code would otherwise be considered "Modifications" under
+          this License.
+
+          V. Use of Modifications and Covered Code by Initial Developer.
+               V.1. In General.
+               The obligations of Section 3 apply to Netscape, except to
+               the extent specified in this Amendment, Section V.2 and V.3.
+
+               V.2. Other Products.
+               Netscape may include Covered Code in products other than the
+               Netscape's Branded Code which are released by Netscape
+               during the two (2) years following the release date of the
+               Original Code, without such additional products becoming
+               subject to the terms of this License, and may license such
+               additional products on different terms from those contained
+               in this License.
+
+               V.3. Alternative Licensing.
+               Netscape may license the Source Code of Netscape's Branded
+               Code, including Modifications incorporated therein, without
+               such Netscape Branded Code becoming subject to the terms of
+               this License, and may license such Netscape Branded Code on
+               different terms from those contained in this License.
+
+          VI. Litigation.
+          Notwithstanding the limitations of Section 11 above, the
+          provisions regarding litigation in Section 11(a), (b) and (c) of
+          the License shall apply to all disputes relating to this License.
+
+     EXHIBIT A-Netscape Public License.
+
+          "The contents of this file are subject to the Netscape Public
+          License Version 1.1 (the "License"); you may not use this file
+          except in compliance with the License. You may obtain a copy of
+          the License at http://www.mozilla.org/NPL/
+
+          Software distributed under the License is distributed on an "AS
+          IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
+          implied. See the License for the specific language governing
+          rights and limitations under the License.
+
+          The Original Code is Mozilla Communicator client code, released
+          March 31, 1998.
+
+          The Initial Developer of the Original Code is Netscape
+          Communications Corporation. Portions created by Netscape are
+          Copyright (C) 1998-1999 Netscape Communications Corporation. All
+          Rights Reserved.
+
+          Contributor(s): ______________________________________.
+
+          Alternatively, the contents of this file may be used under the
+          terms of the _____ license (the "[___] License"), in which case
+          the provisions of [______] License are applicable  instead of
+          those above. If you wish to allow use of your version of this
+          file only under the terms of the [____] License and not to allow
+          others to use your version of this file under the NPL, indicate
+          your decision by deleting the provisions above and replace  them
+          with the notice and other provisions required by the [___]
+          License. If you do not delete the provisions above, a recipient
+          may use your version of this file under either the NPL or the
+          [___] License."
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+       51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+                               and Clark Cooper
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2011 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+Copyright (c) 2007-2009 IOLA and Ole Laursen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+This software is based in part on the work of the FreeType Team.
+
+----------------------
+
+                    The FreeType Project LICENSE
+                    ----------------------------
+
+                            2006-Jan-27
+
+                    Copyright 1996-2002, 2006 by
+          David Turner, Robert Wilhelm, and Werner Lemberg
+
+
+
+Introduction
+============
+
+  The FreeType  Project is distributed in  several archive packages;
+  some of them may contain, in addition to the FreeType font engine,
+  various tools and  contributions which rely on, or  relate to, the
+  FreeType Project.
+
+  This  license applies  to all  files found  in such  packages, and
+  which do not  fall under their own explicit  license.  The license
+  affects  thus  the  FreeType   font  engine,  the  test  programs,
+  documentation and makefiles, at the very least.
+
+  This  license   was  inspired  by  the  BSD,   Artistic,  and  IJG
+  (Independent JPEG  Group) licenses, which  all encourage inclusion
+  and  use of  free  software in  commercial  and freeware  products
+  alike.  As a consequence, its main points are that:
+
+    o We don't promise that this software works. However, we will be
+      interested in any kind of bug reports. (`as is' distribution)
+
+    o You can  use this software for whatever you  want, in parts or
+      full form, without having to pay us. (`royalty-free' usage)
+
+    o You may not pretend that  you wrote this software.  If you use
+      it, or  only parts of it,  in a program,  you must acknowledge
+      somewhere  in  your  documentation  that  you  have  used  the
+      FreeType code. (`credits')
+
+  We  specifically  permit  and  encourage  the  inclusion  of  this
+  software, with  or without modifications,  in commercial products.
+  We  disclaim  all warranties  covering  The  FreeType Project  and
+  assume no liability related to The FreeType Project.
+
+
+  Finally,  many  people  asked  us  for  a  preferred  form  for  a
+  credit/disclaimer to use in compliance with this license.  We thus
+  encourage you to use the following text:
+
+   """  
+    Portions of this software are copyright © <year> The FreeType
+    Project (www.freetype.org).  All rights reserved.
+   """
+
+  Please replace <year> with the value from the FreeType version you
+  actually use.
+
+
+Legal Terms
+===========
+
+0. Definitions
+--------------
+
+  Throughout this license,  the terms `package', `FreeType Project',
+  and  `FreeType  archive' refer  to  the  set  of files  originally
+  distributed  by the  authors  (David Turner,  Robert Wilhelm,  and
+  Werner Lemberg) as the `FreeType Project', be they named as alpha,
+  beta or final release.
+
+  `You' refers to  the licensee, or person using  the project, where
+  `using' is a generic term including compiling the project's source
+  code as  well as linking it  to form a  `program' or `executable'.
+  This  program is  referred to  as  `a program  using the  FreeType
+  engine'.
+
+  This  license applies  to all  files distributed  in  the original
+  FreeType  Project,   including  all  source   code,  binaries  and
+  documentation,  unless  otherwise  stated   in  the  file  in  its
+  original, unmodified form as  distributed in the original archive.
+  If you are  unsure whether or not a particular  file is covered by
+  this license, you must contact us to verify this.
+
+  The FreeType  Project is copyright (C) 1996-2000  by David Turner,
+  Robert Wilhelm, and Werner Lemberg.  All rights reserved except as
+  specified below.
+
+1. No Warranty
+--------------
+
+  THE FREETYPE PROJECT  IS PROVIDED `AS IS' WITHOUT  WARRANTY OF ANY
+  KIND, EITHER  EXPRESS OR IMPLIED,  INCLUDING, BUT NOT  LIMITED TO,
+  WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR
+  PURPOSE.  IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE  FOR ANY DAMAGES CAUSED  BY THE USE OR  THE INABILITY TO
+  USE, OF THE FREETYPE PROJECT.
+
+2. Redistribution
+-----------------
+
+  This  license  grants  a  worldwide, royalty-free,  perpetual  and
+  irrevocable right  and license to use,  execute, perform, compile,
+  display,  copy,   create  derivative  works   of,  distribute  and
+  sublicense the  FreeType Project (in  both source and  object code
+  forms)  and  derivative works  thereof  for  any  purpose; and  to
+  authorize others  to exercise  some or all  of the  rights granted
+  herein, subject to the following conditions:
+
+    o Redistribution of  source code  must retain this  license file
+      (`FTL.TXT') unaltered; any  additions, deletions or changes to
+      the original  files must be clearly  indicated in accompanying
+      documentation.   The  copyright   notices  of  the  unaltered,
+      original  files must  be  preserved in  all  copies of  source
+      files.
+
+    o Redistribution in binary form must provide a  disclaimer  that
+      states  that  the software is based in part of the work of the
+      FreeType Team,  in  the  distribution  documentation.  We also
+      encourage you to put an URL to the FreeType web page  in  your
+      documentation, though this isn't mandatory.
+
+  These conditions  apply to any  software derived from or  based on
+  the FreeType Project,  not just the unmodified files.   If you use
+  our work, you  must acknowledge us.  However, no  fee need be paid
+  to us.
+
+3. Advertising
+--------------
+
+  Neither the  FreeType authors and  contributors nor you  shall use
+  the name of the  other for commercial, advertising, or promotional
+  purposes without specific prior written permission.
+
+  We suggest,  but do not require, that  you use one or  more of the
+  following phrases to refer  to this software in your documentation
+  or advertising  materials: `FreeType Project',  `FreeType Engine',
+  `FreeType library', or `FreeType Distribution'.
+
+  As  you have  not signed  this license,  you are  not  required to
+  accept  it.   However,  as  the FreeType  Project  is  copyrighted
+  material, only  this license, or  another one contracted  with the
+  authors, grants you  the right to use, distribute,  and modify it.
+  Therefore,  by  using,  distributing,  or modifying  the  FreeType
+  Project, you indicate that you understand and accept all the terms
+  of this license.
+
+4. Contacts
+-----------
+
+  There are two mailing lists related to FreeType:
+
+    o freetype@nongnu.org
+
+      Discusses general use and applications of FreeType, as well as
+      future and  wanted additions to the  library and distribution.
+      If  you are looking  for support,  start in  this list  if you
+      haven't found anything to help you in the documentation.
+
+    o freetype-devel@nongnu.org
+
+      Discusses bugs,  as well  as engine internals,  design issues,
+      specific licenses, porting, etc.
+
+  Our home page can be found at
+
+    http://www.freetype.org
+
+
+--- end of FTL.TXT ---
+
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+			COPYRIGHTS
+
+Compilation copyright is held by the GPSD project.  All rights reserved.
+
+GPSD project copyrights are assigned to the project lead, currently
+Eric S. Raymond. Other portions of the GPSD code are Copyright (c)
+1997, 1998, 1999, 2000, 2001, 2002 by Remco Treffkorn, and others
+Copyright (c) 2005 by Eric S. Raymond.  For other copyrights, see
+individual files.
+
+			BSD LICENSE
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:<P>
+
+Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.<P>
+
+Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.<P>
+
+Neither name of the GPSD project nor the names of its contributors
+may be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+    		    59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the 
+    Free Software Foundation, Inc., 59 Temple Place - Suite 330, 
+    Boston, MA  02111-1307  USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+HarfBuzz is licensed under the so-called "Old MIT" license.  Details follow.
+For parts of HarfBuzz that are licensed under different licenses see individual
+files names COPYING in subdirectories where applicable.
+
+Copyright © 2010,2011,2012  Google, Inc.
+Copyright © 2012  Mozilla Foundation
+Copyright © 2011  Codethink Limited
+Copyright © 2008,2010  Nokia Corporation and/or its subsidiary(-ies)
+Copyright © 2009  Keith Stribley
+Copyright © 2009  Martin Hosken and SIL International
+Copyright © 2007  Chris Wilson
+Copyright © 2006  Behdad Esfahbod
+Copyright © 2005  David Turner
+Copyright © 2004,2007,2008,2009,2010  Red Hat, Inc.
+Copyright © 1998-2004  David Turner and Werner Lemberg
+
+For full copyright notices consult the individual files in the package.
+
+
+Permission is hereby granted, without written agreement and without
+license or royalty fees, to use, copy, modify, and distribute this
+software and its documentation for any purpose, provided that the
+above copyright notice and the following two paragraphs appear in
+all copies of this software.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+/*************************************************************************
+ *
+ *  IAccessible2 IDL Specification 
+ * 
+ *  Copyright (c) 2007, 2010 Linux Foundation 
+ *  Copyright (c) 2006 IBM Corporation 
+ *  Copyright (c) 2000, 2006 Sun Microsystems, Inc. 
+ *  All rights reserved. 
+ *   
+ *   
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met: 
+ *   
+ *   1. Redistributions of source code must retain the above copyright 
+ *      notice, this list of conditions and the following disclaimer. 
+ *   
+ *   2. Redistributions in binary form must reproduce the above 
+ *      copyright notice, this list of conditions and the following 
+ *      disclaimer in the documentation and/or other materials 
+ *      provided with the distribution. 
+ *
+ *   3. Neither the name of the Linux Foundation nor the names of its 
+ *      contributors may be used to endorse or promote products 
+ *      derived from this software without specific prior written 
+ *      permission. 
+ *   
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ *  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
+ *  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+ *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+ *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
+ *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
+ *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ *   
+ *  This BSD License conforms to the Open Source Initiative "Simplified 
+ *  BSD License" as published at: 
+ *  http://www.opensource.org/licenses/bsd-license.php 
+ *   
+ *  IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 
+ *  mark may be used in accordance with the Linux Foundation Trademark 
+ *  Policy to indicate compliance with the IAccessible2 specification. 
+ * 
+ ************************************************************************/ 
+
+LICENSE extracted from IJG's jpeg distribution:
+-----------------------------------------------
+
+In plain English:
+
+1. We don't promise that this software works.  (But if you find any bugs,
+   please let us know!)
+2. You can use this software for whatever you want.  You don't have to pay us.
+3. You may not pretend that you wrote this software.  If you use it in a
+   program, you must acknowledge somewhere in your documentation that
+   you've used the IJG code.
+
+In legalese:
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and you,
+its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-1998, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to these
+conditions:
+(1) If any part of the source code for this software is distributed, then this
+README file must be included, with this copyright and no-warranty notice
+unaltered; and any additions, deletions, or changes to the original files
+must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work of
+the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code,
+not just to the unmodified library.  If you use our work, you ought to
+acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name
+in advertising or publicity relating to this software or products derived from
+it.  This software may be referred to only as "the Independent JPEG Group's
+software".
+
+We specifically permit and encourage the use of this software as the basis of
+commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+
+ICU License - ICU 1.8.1 and later
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2010 International Business Machines Corporation and others
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, and/or sell
+copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies
+of the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
+INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL
+THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM,
+OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not be
+used in advertising or otherwise to promote the sale, use or other dealings in
+this Software without prior written authorization of the copyright holder.
+
+All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+The following is the license for the jemalloc source code, as provided
+in the initial section of the source files.
+
+Copyright (C) 2006-2008 Jason Evans <jasone@FreeBSD.org>.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice(s), this list of conditions and the following disclaimer as
+   the first lines of this file unmodified other than the possible
+   addition of one or more copyright notices.
+2. Redistributions in binary form must reproduce the above copyright
+   notice(s), this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+The JsonCpp library's source code, including accompanying documentation, 
+tests and demonstration applications, are licensed under the following
+conditions...
+
+The author (Baptiste Lepilleur) explicitly disclaims copyright in all 
+jurisdictions which recognize such a disclaimer. In such jurisdictions, 
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is
+released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this 
+software may choose to accept it either as 1) Public Domain, 2) under the 
+conditions of the MIT License (see below), or 3) under the terms of dual 
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+   http://en.wikipedia.org/wiki/MIT_License
+   
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+(END LICENSE TEXT)
+
+The MIT license is compatible with both the GPL and commercial
+software, affording one all of the rights of Public Domain with the
+minor nuisance of being required to keep the above copyright notice
+and license text in the source code. Note also that by accepting the
+Public Domain "license" you can re-license your copy using whatever
+license you like.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+Copyright (c) 2007-2010 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+
+SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
+
+Copyright (C) 1992 Silicon Graphics, Inc. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice including the dates of first publication and either
+this permission notice or a reference to http://oss.sgi.com/projects/FreeB/
+shall be included in all copies or substantial portions of the Software. 
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON
+GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Silicon Graphics, Inc. shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Silicon
+Graphics, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above
+    copyright notice, this list of conditions and the following
+    disclaimer in the documentation and/or other materials provided
+    with the distribution.
+
+  * Neither the name of the copyright holders nor the names of its
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+License copied from bin/lcov:
+
+#
+#   Copyright (c) International Business Machines  Corp., 2002,2007
+#
+#   This program is free software;  you can redistribute it and/or modify
+#   it under the terms of the GNU General Public License as published by
+#   the Free Software Foundation; either version 2 of the License, or (at
+#   your option) any later version.
+#
+#   This program is distributed in the hope that it will be useful, but
+#   WITHOUT ANY WARRANTY;  without even the implied warranty of
+#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+#   General Public License for more details.                 
+#
+#   You should have received a copy of the GNU General Public License
+#   along with this program;  if not, write to the Free Software
+#   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
+
+Copyright (c) 2011 The LevelDB Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/*
+ * Copyright (c) 2008 NVIDIA, Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+Copyright 2000-2007 Niels Provos <provos@citi.umich.edu>
+Copyright 2007-2009 Niels Provos and Nick Mathewson
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Copyright (c) 2013, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the documentation
+      and/or other materials provided with the distribution.
+    * The name of the author may not be used to endorse or promote products
+      derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
+WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+(Copied from the README.)
+
+--------------------------------------------------------------------------------
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and you,
+its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-1998, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to these
+conditions:
+(1) If any part of the source code for this software is distributed, then this
+README file must be included, with this copyright and no-warranty notice
+unaltered; and any additions, deletions, or changes to the original files
+must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work of
+the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code,
+not just to the unmodified library.  If you use our work, you ought to
+acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name
+in advertising or publicity relating to this software or products derived from
+it.  This software may be referred to only as "the Independent JPEG Group's
+software".
+
+We specifically permit and encourage the use of this software as the basis of
+commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+
+ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
+sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
+ansi2knr.c is NOT covered by the above copyright and conditions, but instead
+by the usual distribution terms of the Free Software Foundation; principally,
+that you must include source code if you redistribute it.  (See the file
+ansi2knr.c for full details.)  However, since ansi2knr.c is not needed as part
+of any program generated from the IJG code, this does not limit you more than
+the foregoing paragraphs do.
+
+The Unix configuration script "configure" was produced with GNU Autoconf.
+It is copyright by the Free Software Foundation but is freely distributable.
+The same holds for its supporting scripts (config.guess, config.sub,
+ltconfig, ltmain.sh).  Another support script, install-sh, is copyright
+by M.I.T. but is also freely distributable.
+
+It appears that the arithmetic coding option of the JPEG spec is covered by
+patents owned by IBM, AT&T, and Mitsubishi.  Hence arithmetic coding cannot
+legally be used without obtaining one or more licenses.  For this reason,
+support for arithmetic coding has been removed from the free JPEG software.
+(Since arithmetic coding provides only a marginal gain over the unpatented
+Huffman mode, it is unlikely that very many implementations will support it.)
+So far as we are aware, there are no patent restrictions on the remaining
+code.
+
+The IJG distribution formerly included code to read and write GIF files.
+To avoid entanglement with the Unisys LZW patent, GIF reading support has
+been removed altogether, and the GIF writer has been simplified to produce
+"uncompressed GIFs".  This technique does not use the LZW algorithm; the
+resulting GIF files are larger than usual, but are readable by all standard
+GIF decoders.
+
+We are required to state that
+    "The Graphics Interchange Format(c) is the Copyright property of
+    CompuServe Incorporated.  GIF(sm) is a Service Mark property of
+    CompuServe Incorporated."
+
+Copyright (C) 2011 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+
+This copy of the libpng notices is provided for your convenience.  In case of
+any discrepancy between this copy and the notices in the file png.h that is
+included in the libpng distribution, the latter shall prevail.
+
+COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+If you modify libpng you may insert additional notices immediately following
+this sentence.
+
+This code is released under the libpng license.
+
+libpng versions 1.2.6, August 15, 2004, through 1.2.45, July 7, 2011, are
+Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.2.5
+with the following individual added to the list of Contributing Authors
+
+   Cosmin Truta
+
+libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are
+Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.0.6
+with the following individuals added to the list of Contributing Authors
+
+   Simon-Pierre Cadieux
+   Eric S. Raymond
+   Gilles Vollant
+
+and with the following additions to the disclaimer:
+
+   There is no warranty against interference with your enjoyment of the
+   library or against infringement.  There is no warranty that our
+   efforts or the library will fulfill any of your particular purposes
+   or needs.  This library is provided with all faults, and the entire
+   risk of satisfactory quality, performance, accuracy, and effort is with
+   the user.
+
+libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
+Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-0.96,
+with the following individuals added to the list of Contributing Authors:
+
+   Tom Lane
+   Glenn Randers-Pehrson
+   Willem van Schaik
+
+libpng versions 0.89, June 1996, through 0.96, May 1997, are
+Copyright (c) 1996, 1997 Andreas Dilger
+Distributed according to the same disclaimer and license as libpng-0.88,
+with the following individuals added to the list of Contributing Authors:
+
+   John Bowler
+   Kevin Bracey
+   Sam Bushell
+   Magnus Holmgren
+   Greg Roelofs
+   Tom Tanner
+
+libpng versions 0.5, May 1995, through 0.88, January 1996, are
+Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
+
+For the purposes of this copyright and license, "Contributing Authors"
+is defined as the following set of individuals:
+
+   Andreas Dilger
+   Dave Martindale
+   Guy Eric Schalnat
+   Paul Schmidt
+   Tim Wegner
+
+The PNG Reference Library is supplied "AS IS".  The Contributing Authors
+and Group 42, Inc. disclaim all warranties, expressed or implied,
+including, without limitation, the warranties of merchantability and of
+fitness for any purpose.  The Contributing Authors and Group 42, Inc.
+assume no liability for direct, indirect, incidental, special, exemplary,
+or consequential damages, which may result from the use of the PNG
+Reference Library, even if advised of the possibility of such damage.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+source code, or portions hereof, for any purpose, without fee, subject
+to the following restrictions:
+
+1. The origin of this source code must not be misrepresented.
+
+2. Altered versions must be plainly marked as such and must not
+   be misrepresented as being the original source.
+
+3. This Copyright notice may not be removed or altered from any
+   source or altered source distribution.
+
+The Contributing Authors and Group 42, Inc. specifically permit, without
+fee, and encourage the use of this source code as a component to
+supporting the PNG file format in commercial products.  If you use this
+source code in a product, acknowledgment is not required but would be
+appreciated.
+
+
+A "png_get_copyright" function is available, for convenient use in "about"
+boxes and the like:
+
+   printf("%s",png_get_copyright(NULL));
+
+Also, the PNG logo (in PNG format, of course) is supplied in the
+files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
+
+Libpng is OSI Certified Open Source Software.  OSI Certified Open Source is a
+certification mark of the Open Source Initiative.
+
+Glenn Randers-Pehrson
+glennrp at users.sourceforge.net
+July 7, 2011
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
+    Permission is hereby granted, free of charge, to any person obtaining a
+    copy of this software and associated documentation files (the
+    "Software"), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sub license, and/or sell copies of the Software, and to
+    permit persons to whom the Software is furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice (including the
+    next paragraph) shall be included in all copies or substantial portions
+    of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+    IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+    ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Copyright (c) 2010, Google Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Additional IP Rights Grant (Patents)
+
+"This implementation" means the copyrightable works distributed by
+Google as part of the WebM Project.
+
+Google hereby grants to you a perpetual, worldwide, non-exclusive,
+no-charge, royalty-free, irrevocable (except as stated in this section)
+patent license to make, have made, use, offer to sell, sell, import,
+transfer, and otherwise run, modify and propagate the contents of this
+implementation of VP8, where such license applies only to those patent
+claims, both currently owned by Google and acquired in the future,
+licensable by Google that are necessarily infringed by this
+implementation of VP8. This grant does not include claims that would be
+infringed only as a consequence of further modification of this
+implementation. If you or your agent or exclusive licensee institute or
+order or agree to the institution of patent litigation against any
+entity (including a cross-claim or counterclaim in a lawsuit) alleging
+that this implementation of VP8 or any code incorporated within this
+implementation of VP8 constitutes direct or contributory patent
+infringement, or inducement of patent infringement, then any patent
+rights granted to you under this License for this implementation of VP8
+shall terminate as of the date such litigation is filed.
+
+Except where otherwise noted in the source code (e.g. the files hash.c,
+list.c and the trio files, which are covered by a similar licence but
+with different Copyright notices) all the files are:
+
+ Copyright (C) 1998-2003 Daniel Veillard.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Daniel Veillard shall not
+be used in advertising or otherwise to promote the sale, use or other deal-
+ings in this Software without prior written authorization from him.
+
+
+Licence for libxslt except libexslt
+----------------------------------------------------------------------
+ Copyright (C) 2001-2002 Daniel Veillard.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Daniel Veillard shall not
+be used in advertising or otherwise to promote the sale, use or other deal-
+ings in this Software without prior written authorization from him.
+
+----------------------------------------------------------------------
+
+Licence for libexslt
+----------------------------------------------------------------------
+ Copyright (C) 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard.
+ All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the authors shall not
+be used in advertising or otherwise to promote the sale, use or other deal-
+ings in this Software without prior written authorization from him.
+----------------------------------------------------------------------
+
+LZMA SDK is placed in the public domain.
+
+Copyright (c) 2003-2009 Jonathan 'Wolf' Rentzsch: <http://rentzsch.com>
+Some rights reserved: <http://opensource.org/licenses/mit-license.php>
+
+The default Mesa license is as follows:
+
+Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+Some parts of Mesa are copyrighted under the GNU LGPL.  See the
+Mesa/docs/COPYRIGHT file for details.
+
+The following is the standard GNU copyright file.
+----------------------------------------------------------------------
+
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+                    675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+     Appendix: How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+ * MODP_B64 - High performance base64 encoder/decoder
+ * Version 1.3 -- 17-Mar-2006
+ * http://modp.com/release/base64
+ *
+ * Copyright (c) 2005, 2006  Nick Galbreath -- nickg [at] modp [dot] com
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *   Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ *   Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ *
+ *   Neither the name of the modp.com nor the names of its
+ *   contributors may be used to endorse or promote products derived from
+ *   this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Copyright 2008 MolokoCacao
+All rights reserved
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted providing that the following conditions 
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+Copyright (c) 2004-2009 Sergey Lyubka
+Portions Copyright (c) 2009 Gilbert Wellisch
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+Copyright 2010-2011, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+* Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+   A C-program for MT19937, with initialization improved 2002/1/26.
+   Coded by Takuji Nishimura and Makoto Matsumoto.
+
+   Before using, initialize the state by using init_genrand(seed)  
+   or init_by_array(init_key, key_length).
+
+   Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
+   All rights reserved.                          
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+     2. Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+     3. The names of its contributors may not be used to endorse or promote 
+        products derived from this software without specific prior written 
+        permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Copyright (c) 2006-2009 The Chromium OS Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Version: MPL 1.1/GPL 2.0/LGPL 2.1
+
+The contents of this file are subject to the Mozilla Public License Version
+1.1 (the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+http://www.mozilla.org/MPL/
+
+Software distributed under the License is distributed on an "AS IS" basis,
+WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+for the specific language governing rights and limitations under the
+License.
+
+The Original Code is mozilla.org code.
+
+The Initial Developer of the Original Code is
+Netscape Communications Corporation.
+Portions created by the Initial Developer are Copyright (C) 1998
+the Initial Developer. All Rights Reserved.
+
+Contributor(s):
+
+Alternatively, the contents of this file may be used under the terms of
+either the GNU General Public License Version 2 or later (the "GPL"), or
+the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+in which case the provisions of the GPL or the LGPL are applicable instead
+of those above. If you wish to allow use of your version of this file only
+under the terms of either the GPL or the LGPL, and not to allow others to
+use your version of this file under the terms of the MPL, indicate your
+decision by deleting the provisions above and replace them with the notice
+and other provisions required by the GPL or the LGPL. If you do not delete
+the provisions above, a recipient may use your version of this file under
+the terms of any one of the MPL, the GPL or the LGPL.
+
+  
+  Copyright (c) 2004-2012 by Mulle Kybernetik. All rights reserved.
+
+  Permission to use, copy, modify and distribute this software and its documentation
+  is hereby granted, provided that both the copyright notice and this permission
+  notice appear in all copies of the software, derivative works or modified versions,
+  and any portions thereof, and that both notices appear in supporting documentation,
+  and that credit is given to Mulle Kybernetik in all documents and publicity
+  pertaining to direct or indirect use of this code or its derivatives.
+
+  THIS IS EXPERIMENTAL SOFTWARE AND IT IS KNOWN TO HAVE BUGS, SOME OF WHICH MAY HAVE
+  SERIOUS CONSEQUENCES. THE COPYRIGHT HOLDER ALLOWS FREE USE OF THIS SOFTWARE IN ITS
+  "AS IS" CONDITION. THE COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY
+  DAMAGES WHATSOEVER RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE
+  OR OF ANY DERIVATIVE WORK.
+
+  LICENSE ISSUES
+  ==============
+
+  The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
+  the OpenSSL License and the original SSLeay license apply to the toolkit.
+  See below for the actual license texts. Actually both licenses are BSD-style
+  Open Source licenses. In case of any license issues related to OpenSSL
+  please contact openssl-core@openssl.org.
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+
+Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
+                    Jean-Marc Valin, Timothy B. Terriberry,
+                    CSIRO, Gregory Maxwell, Mark Borgerding,
+                    Erik de Castro Lopo
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of Internet Society, IETF or IETF Trust, nor the 
+names of specific contributors, may be used to endorse or promote
+products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Opus is subject to the royalty-free patent licenses which are
+specified at:
+
+Xiph.Org Foundation:
+https://datatracker.ietf.org/ipr/1524/
+
+Microsoft Corporation:
+https://datatracker.ietf.org/ipr/1914/
+
+Broadcom Corporation:
+https://datatracker.ietf.org/ipr/1526/
+
+// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+PLY (Python Lex-Yacc)                   Version 3.4
+
+Copyright (C) 2001-2011,
+David M. Beazley (Dabeaz LLC)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.  
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.  
+* Neither the name of the David Beazley or Dabeaz LLC may be used to
+  endorse or promote products derived from this software without
+  specific prior written permission. 
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+// Copyright (c) 2012 The Polymer Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Copyright 2008, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Code generated by the Protocol Buffer compiler is owned by the owner
+of the input file used when generating it.  This code is not
+standalone and requires a support library to be linked with it.  This
+support library is itself covered by the above license.
+
+Copyright (c) 2003-2012, Michael Foord
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+qcms
+Copyright (C) 2009 Mozilla Corporation
+Copyright (C) 1998-2007 Marti Maria
+
+Permission is hereby granted, free of charge, to any person obtaining 
+a copy of this software and associated documentation files (the "Software"), 
+to deal in the Software without restriction, including without limitation 
+the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+and/or sell copies of the Software, and to permit persons to whom the Software 
+is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in 
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
+THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// Copyright (c) 2009 The RE2 Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2011 Google Inc. All Rights Reserved.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+Copyright (c) 2006 Bob Ippolito
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+// Copyright (c) 2011 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+All MurmurHash source files are placed in the public domain.
+
+The license below applies to all other code in SMHasher:
+
+Copyright (c) 2011 Google, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+The author disclaims copyright to this source code.  In place of
+a legal notice, here is a blessing:
+
+   May you do good and not evil.
+   May you find forgiveness for yourself and forgive others.
+   May you share freely, never taking more than you give.
+
+SWIG is distributed under the following terms:
+
+I.  
+
+Copyright (c) 1995-1998
+The University of Utah and the Regents of the University of California
+All Rights Reserved
+
+Permission is hereby granted, without written agreement and without
+license or royalty fees, to use, copy, modify, and distribute this
+software and its documentation for any purpose, provided that 
+(1) The above copyright notice and the following two paragraphs
+appear in all copies of the source code and (2) redistributions
+including binaries reproduces these notices in the supporting
+documentation.   Substantial modifications to this software may be
+copyrighted by their authors and need not follow the licensing terms
+described here, provided that the new terms are clearly indicated in
+all files where they apply.
+
+IN NO EVENT SHALL THE AUTHOR, THE UNIVERSITY OF CALIFORNIA, THE 
+UNIVERSITY OF UTAH OR DISTRIBUTORS OF THIS SOFTWARE BE LIABLE TO ANY
+PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION,
+EVEN IF THE AUTHORS OR ANY OF THE ABOVE PARTIES HAVE BEEN ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+THE AUTHOR, THE UNIVERSITY OF CALIFORNIA, AND THE UNIVERSITY OF UTAH
+SPECIFICALLY DISCLAIM ANY WARRANTIES,INCLUDING, BUT NOT LIMITED TO, 
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND 
+THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE,
+SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+
+II. 
+
+This software includes contributions that are Copyright (c) 1998-2005
+University of Chicago.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.  Redistributions
+in binary form must reproduce the above copyright notice, this list of
+conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.  Neither the name of
+the University of Chicago nor the names of its contributors may be
+used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF CHICAGO AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF
+CHICAGO OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+III.  
+
+This software includes contributions that are Copyright (c) 2005-2006
+Arizona Board of Regents (University of Arizona).
+All Rights Reserved
+
+Permission is hereby granted, without written agreement and without
+license or royalty fees, to use, copy, modify, and distribute this
+software and its documentation for any purpose, provided that 
+(1) The above copyright notice and the following two paragraphs
+appear in all copies of the source code and (2) redistributions
+including binaries reproduces these notices in the supporting
+documentation.   Substantial modifications to this software may be
+copyrighted by their authors and need not follow the licensing terms
+described here, provided that the new terms are clearly indicated in
+all files where they apply.
+
+THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF ARIZONA AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF
+ARIZONA OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+// Copyright (c) 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+All code here is public domain.
+
+Copyright (c) 2012, Linux USB Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+o Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+o Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+o Neither the name of the Linux USB Project nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+(Copied from the COPYRIGHT file of
+https://code.google.com/p/sctp-refimpl/source/browse/trunk/COPYRIGHT)
+--------------------------------------------------------------------------------
+
+Copyright (c) 2001, 2002 Cisco Systems, Inc.
+Copyright (c) 2002-12 Randall R. Stewart
+Copyright (c) 2002-12 Michael Tuexen
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+;*****************************************************************************
+;* x86inc.asm
+;*****************************************************************************
+;* Copyright (C) 2005-2011 x264 project
+;*
+;* Authors: Loren Merritt <lorenm@u.washington.edu>
+;*          Anton Mitrofanov <BugMaster@narod.ru>
+;*          Jason Garrett-Glaser <darkshikari@gmail.com>
+;*
+;* Permission to use, copy, modify, and/or distribute this software for any
+;* purpose with or without fee is hereby granted, provided that the above
+;* copyright notice and this permission notice appear in all copies.
+;*
+;* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+;* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+;* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+;* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+;* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+;* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+;* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+;*****************************************************************************
+
+; This is a header file for the x264ASM assembly language, which uses
+; NASM/YASM syntax combined with a large number of macros to provide easy
+; abstraction between different calling conventions (x86_32, win64, linux64).
+; It also has various other useful features to simplify writing the kind of
+; DSP functions that are most often used in x264.
+
+; Unlike the rest of x264, this file is available under an ISC license, as it
+; has significant usefulness outside of x264 and we want it to be available
+; to the largest audience possible.  Of course, if you modify it for your own
+; purposes to add a new feature, we strongly encourage contributing a patch
+; as this feature might be useful for others as well.  Send patches or ideas
+; to x264-devel@videolan.org .
+
+Yasm is Copyright (c) 2001-2010 Peter Johnson and other Yasm developers.
+
+Yasm developers and/or contributors include:
+  Peter Johnson
+  Michael Urman
+  Brian Gladman (Visual Studio build files, other fixes)
+  Stanislav Karchebny (options parser)
+  Mathieu Monnier (SSE4 instruction patches, NASM preprocessor additions)
+  Anonymous "NASM64" developer (NASM preprocessor fixes)
+  Stephen Polkowski (x86 instruction patches)
+  Henryk Richter (Mach-O object format)
+  Ben Skeggs (patches, bug reports)
+  Alexei Svitkine (GAS preprocessor)
+  Samuel Thibault (TASM parser and frontend)
+
+-----------------------------------
+Yasm licensing overview and summary
+-----------------------------------
+
+Note: This document does not provide legal advice nor is it the actual
+license of any part of Yasm.  See the individual licenses for complete
+details.  Consult a lawyer for legal advice.
+
+The primary license of Yasm is the 2-clause BSD license.  Please use this
+license if you plan on submitting code to the project.
+
+Yasm has absolutely no warranty; not even for merchantibility or fitness
+for a particular purpose.
+
+-------
+Libyasm
+-------
+Libyasm is 2-clause or 3-clause BSD licensed, with the exception of
+bitvect, which is triple-licensed under the Artistic license, GPL, and
+LGPL.  Libyasm is thus GPL and LGPL compatible.  In addition, this also
+means that libyasm is free for binary-only distribution as long as the
+terms of the 3-clause BSD license and Artistic license (as it applies to
+bitvect) are fulfilled.
+
+-------
+Modules
+-------
+The modules are 2-clause or 3-clause BSD licensed.
+
+---------
+Frontends
+---------
+The frontends are 2-clause BSD licensed.
+
+-------------
+License Texts
+-------------
+The full text of all licenses are provided in separate files in the source
+distribution.  Each source file may include the entire license (in the case
+of the BSD and Artistic licenses), or may reference the GPL or LGPL license
+file.
+
+BSD.txt - 2-clause and 3-clause BSD licenses
+Artistic.txt - Artistic license
+GNU_GPL-2.0 - GNU General Public License
+GNU_LGPL-2.0 - GNU Library General Public License
+
+/* zlib.h -- interface of the 'zlib' general purpose compression library
+  version 1.2.4, March 14th, 2010
+
+  Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly
+  Mark Adler
+
+*/
+
+Copyright 2007, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------------------
+
+The file url_parse.cc is based on nsURLParsers.cc from Mozilla. This file is
+licensed separately as follows:
+
+The contents of this file are subject to the Mozilla Public License Version
+1.1 (the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+http://www.mozilla.org/MPL/
+
+Software distributed under the License is distributed on an "AS IS" basis,
+WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+for the specific language governing rights and limitations under the
+License.
+
+The Original Code is mozilla.org code.
+
+The Initial Developer of the Original Code is
+Netscape Communications Corporation.
+Portions created by the Initial Developer are Copyright (C) 1998
+the Initial Developer. All Rights Reserved.
+
+Contributor(s):
+  Darin Fisher (original author)
+
+Alternatively, the contents of this file may be used under the terms of
+either the GNU General Public License Version 2 or later (the "GPL"), or
+the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+in which case the provisions of the GPL or the LGPL are applicable instead
+of those above. If you wish to allow use of your version of this file only
+under the terms of either the GPL or the LGPL, and not to allow others to
+use your version of this file under the terms of the MPL, indicate your
+decision by deleting the provisions above and replace them with the notice
+and other provisions required by the GPL or the LGPL. If you do not delete
+the provisions above, a recipient may use your version of this file under
+the terms of any one of the MPL, the GPL or the LGPL.
+
+Copyright 2007, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------------------
+
+The file url_parse.cc is based on nsURLParsers.cc from Mozilla. This file is
+licensed separately as follows:
+
+The contents of this file are subject to the Mozilla Public License Version
+1.1 (the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+http://www.mozilla.org/MPL/
+
+Software distributed under the License is distributed on an "AS IS" basis,
+WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+for the specific language governing rights and limitations under the
+License.
+
+The Original Code is mozilla.org code.
+
+The Initial Developer of the Original Code is
+Netscape Communications Corporation.
+Portions created by the Initial Developer are Copyright (C) 1998
+the Initial Developer. All Rights Reserved.
+
+Contributor(s):
+  Darin Fisher (original author)
+
+Alternatively, the contents of this file may be used under the terms of
+either the GNU General Public License Version 2 or later (the "GPL"), or
+the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+in which case the provisions of the GPL or the LGPL are applicable instead
+of those above. If you wish to allow use of your version of this file only
+under the terms of either the GPL or the LGPL, and not to allow others to
+use your version of this file under the terms of the MPL, indicate your
+decision by deleting the provisions above and replace them with the notice
+and other provisions required by the GPL or the LGPL. If you do not delete
+the provisions above, a recipient may use your version of this file under
+the terms of any one of the MPL, the GPL or the LGPL.
+
+This license applies to all parts of V8 that are not externally
+maintained libraries.  The externally maintained libraries used by V8
+are:
+
+  - PCRE test suite, located in
+    test/mjsunit/third_party/regexp-pcre.js.  This is based on the
+    test suite from PCRE-7.3, which is copyrighted by the University
+    of Cambridge and Google, Inc.  The copyright notice and license
+    are embedded in regexp-pcre.js.
+
+  - Layout tests, located in test/mjsunit/third_party.  These are
+    based on layout tests from webkit.org which are copyrighted by
+    Apple Computer, Inc. and released under a 3-clause BSD license.
+
+  - Strongtalk assembler, the basis of the files assembler-arm-inl.h,
+    assembler-arm.cc, assembler-arm.h, assembler-ia32-inl.h,
+    assembler-ia32.cc, assembler-ia32.h, assembler-x64-inl.h,
+    assembler-x64.cc, assembler-x64.h, assembler-mips-inl.h,
+    assembler-mips.cc, assembler-mips.h, assembler.cc and assembler.h.
+    This code is copyrighted by Sun Microsystems Inc. and released
+    under a 3-clause BSD license.
+
+  - Valgrind client API header, located at third_party/valgrind/valgrind.h
+    This is release under the BSD license.
+
+These libraries have their own licenses; we recommend you read them,
+as their terms may differ from the terms below.
+
+Copyright 2006-2012, the V8 project authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+    * Neither the name of Google Inc. nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+============================================================
+Notices for file(s):
+/bin/make_ext4fs
+/bin/mkuserimg.sh
+/lib/libext4_utils_host.a
+------------------------------------------------------------
+
+   Copyright (c) 2010, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+
+============================================================
+Notices for file(s):
+/lib/libsqlite_jni.so
+------------------------------------------------------------
+This software is copyrighted by Christian Werner <chw@ch-werner.de>
+and others. The following terms apply to all files associated with the
+software unless explicitly disclaimed in individual files.
+
+The authors hereby grant permission to use, copy, modify, distribute,
+and license this software and its documentation for any purpose, provided
+that existing copyright notices are retained in all copies and that this
+notice is included verbatim in any distributions. No written agreement,
+license, or royalty fee is required for any of the authorized uses.
+Modifications to this software may be copyrighted by their authors
+and need not follow the licensing terms described here, provided that
+the new terms are clearly indicated on the first page of each file where
+they apply.
+
+IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
+FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
+DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.  THIS SOFTWARE
+IS PROVIDED ON AN "AS IS" BASIS, AND THE AUTHORS AND DISTRIBUTORS HAVE
+NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
+MODIFICATIONS.
+
+============================================================
+Notices for file(s):
+/lib/libgccdemangle.so
+------------------------------------------------------------
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+============================================================
+Notices for file(s):
+/bin/aapt
+/bin/aidl
+/bin/dexdump
+/bin/dx
+/bin/jasmin
+/bin/split-select
+/framework/android-mock-generatorlib.jar
+/framework/jasmin.jar
+/lib/lib64cutils.a
+/lib/lib64log.a
+/lib/lib64utils.a
+/lib/libandroidfw.a
+/lib/libcutils.a
+/lib/liblog.a
+/lib/liblog.so
+/lib/libnativehelper.so
+/lib/libsqlite3_android.a
+/lib/libutils.a
+/lib/libzipfile.a
+------------------------------------------------------------
+
+   Copyright (c) 2005-2008, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+
+============================================================
+Notices for file(s):
+/framework/org.eclipse.core.commands_3.6.0.I20100512-1500.jar
+/framework/org.eclipse.core.expressions_3.4.200.v20100505.jar
+/framework/org.eclipse.core.runtime_3.6.0.v20100505.jar
+/framework/org.eclipse.equinox.common_3.6.0.v20100503.jar
+/framework/org.eclipse.jface_3.6.2.M20110210-1200.jar
+/framework/org.eclipse.osgi_3.6.2.R36x_v20110210.jar
+/framework/org.eclipse.ui.workbench.texteditor_3.6.1.r361_v20100714-0800.jar
+/framework/org.eclipse.ui.workbench_3.6.2.M20110210-1200.jar
+/framework/osgi.jar
+/framework/propertysheet.jar
+/framework/swt.jar
+------------------------------------------------------------
+
+    Eclipse Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
+PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF
+THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+*1. DEFINITIONS*
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and
+are distributed by that particular Contributor. A Contribution
+'originates' from a Contributor if it was added to the Program by such
+Contributor itself or anyone acting on such Contributor's behalf.
+Contributions do not include additions to the Program which: (i) are
+separate modules of software distributed in conjunction with the Program
+under their own license agreement, and (ii) are not derivative works of
+the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents" mean patent claims licensable by a Contributor which
+are necessarily infringed by the use or sale of its Contribution alone
+or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this
+Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+*2. GRANT OF RIGHTS*
+
+a) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free copyright
+license to reproduce, prepare derivative works of, publicly display,
+publicly perform, distribute and sublicense the Contribution of such
+Contributor, if any, and such derivative works, in source code and
+object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby
+grants Recipient a non-exclusive, worldwide, royalty-free patent license
+under Licensed Patents to make, use, sell, offer to sell, import and
+otherwise transfer the Contribution of such Contributor, if any, in
+source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the
+Contribution is added by the Contributor, such addition of the
+Contribution causes such combination to be covered by the Licensed
+Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the
+licenses to its Contributions set forth herein, no assurances are
+provided by any Contributor that the Program does not infringe the
+patent or other intellectual property rights of any other entity. Each
+Contributor disclaims any liability to Recipient for claims brought by
+any other entity based on infringement of intellectual property rights
+or otherwise. As a condition to exercising the rights and licenses
+granted hereunder, each Recipient hereby assumes sole responsibility to
+secure any other intellectual property rights needed, if any. For
+example, if a third party patent license is required to allow Recipient
+to distribute the Program, it is Recipient's responsibility to acquire
+that license before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright
+license set forth in this Agreement.
+
+*3. REQUIREMENTS*
+
+A Contributor may choose to distribute the Program in object code form
+under its own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties
+and conditions, express and implied, including warranties or conditions
+of title and non-infringement, and implied warranties or conditions of
+merchantability and fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and
+consequential damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are
+offered by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable
+manner on or through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained
+within the Program.
+
+Each Contributor must identify itself as the originator of its
+Contribution, if any, in a manner that reasonably allows subsequent
+Recipients to identify the originator of the Contribution.
+
+*4. COMMERCIAL DISTRIBUTION*
+
+Commercial distributors of software may accept certain responsibilities
+with respect to end users, business partners and the like. While this
+license is intended to facilitate the commercial use of the Program, the
+Contributor who includes the Program in a commercial product offering
+should do so in a manner which does not create potential liability for
+other Contributors. Therefore, if a Contributor includes the Program in
+a commercial product offering, such Contributor ("Commercial
+Contributor") hereby agrees to defend and indemnify every other
+Contributor ("Indemnified Contributor") against any losses, damages and
+costs (collectively "Losses") arising from claims, lawsuits and other
+legal actions brought by a third party against the Indemnified
+Contributor to the extent caused by the acts or omissions of such
+Commercial Contributor in connection with its distribution of the
+Program in a commercial product offering. The obligations in this
+section do not apply to any claims or Losses relating to any actual or
+alleged intellectual property infringement. In order to qualify, an
+Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial
+Contributor to control, and cooperate with the Commercial Contributor
+in, the defense and any related settlement negotiations. The Indemnified
+Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial
+product offering, Product X. That Contributor is then a Commercial
+Contributor. If that Commercial Contributor then makes performance
+claims, or offers warranties related to Product X, those performance
+claims and warranties are such Commercial Contributor's responsibility
+alone. Under this section, the Commercial Contributor would have to
+defend claims against the other Contributors related to those
+performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor
+must pay those damages.
+
+*5. NO WARRANTY*
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED
+ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES
+OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR
+A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program
+and assumes all risks associated with its exercise of rights under this
+Agreement , including but not limited to the risks and costs of program
+errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+*6. DISCLAIMER OF LIABILITY*
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR
+ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
+WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
+DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
+HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+*7. GENERAL*
+
+If any provision of this Agreement is invalid or unenforceable under
+applicable law, it shall not affect the validity or enforceability of
+the remainder of the terms of this Agreement, and without further action
+by the parties hereto, such provision shall be reformed to the minimum
+extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against any entity (including
+a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or
+hardware) infringes such Recipient's patent(s), then such Recipient's
+rights granted under Section 2(b) shall terminate as of the date such
+litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails
+to comply with any of the material terms or conditions of this Agreement
+and does not cure such failure in a reasonable period of time after
+becoming aware of such noncompliance. If all Recipient's rights under
+this Agreement terminate, Recipient agrees to cease use and distribution
+of the Program as soon as reasonably practicable. However, Recipient's
+obligations under this Agreement and any licenses granted by Recipient
+relating to the Program shall continue and survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement,
+but in order to avoid inconsistency the Agreement is copyrighted and may
+only be modified in the following manner. The Agreement Steward reserves
+the right to publish new versions (including revisions) of this
+Agreement from time to time. No one other than the Agreement Steward has
+the right to modify this Agreement. The Eclipse Foundation is the
+initial Agreement Steward. The Eclipse Foundation may assign the
+responsibility to serve as the Agreement Steward to a suitable separate
+entity. Each new version of the Agreement will be given a distinguishing
+version number. The Program (including Contributions) may always be
+distributed subject to the version of the Agreement under which it was
+received. In addition, after a new version of the Agreement is
+published, Contributor may elect to distribute the Program (including
+its Contributions) under the new version. Except as expressly stated in
+Sections 2(a) and 2(b) above, Recipient receives no rights or licenses
+to the intellectual property of any Contributor under this Agreement,
+whether expressly, by implication, estoppel or otherwise. All rights in
+the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to
+this Agreement will bring a legal action under this Agreement more than
+one year after the cause of action arose. Each party waives its rights
+to a jury trial in any resulting litigation.
+
+
+============================================================
+Notices for file(s):
+/framework/bouncycastle-host.jar
+/framework/bouncycastle-hostdex.jar
+------------------------------------------------------------
+Copyright (c) 2000-2013 The Legion Of The Bouncy Castle (http://www.bouncycastle.org)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+associated documentation files (the "Software"), to deal in the Software without restriction,
+including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial
+portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
+LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+============================================================
+Notices for file(s):
+/framework/commons-compress-1.0.jar
+------------------------------------------------------------
+Apache Commons Compress
+Copyright 2002-2009 The Apache Software Foundation
+
+This product includes software developed by
+The Apache Software Foundation (http://www.apache.org/).
+
+Original BZip2 classes contributed by Keiron Liddle
+<keiron@aftexsw.com>, Aftex Software to the Apache Ant project
+
+Original Tar classes from contributors of the Apache Ant project
+
+Original Zip classes from contributors of the Apache Ant project
+
+Original CPIO classes contributed by Markus Kuss and the jRPM project
+(jrpm.sourceforge.net)
+
+============================================================
+Notices for file(s):
+/lib/libbcc.so
+------------------------------------------------------------
+==========================
+NOTICE file for libbcc.git
+==========================
+
+* NOTICE for lib/ExecutionEngine/, lib/ScriptCRT/, include and helper/.
+
+   Copyright (c) 2005-2011, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+
+
+* NOTICE for runtime/ and lib/CodeGen/.
+  Note: The NOTICE is the same for another git project, external/llvm.git.
+
+==============================================================================
+LLVM Release License
+==============================================================================
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign.
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+==============================================================================
+Copyrights and Licenses for Third Party Software Distributed with LLVM:
+==============================================================================
+The LLVM software contains code written by third parties.  Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
+The following pieces of software have additional or alternate copyrights,
+licenses, and/or restrictions:
+
+Program             Directory
+-------             ---------
+Autoconf            llvm/autoconf
+                    llvm/projects/ModuleMaker/autoconf
+                    llvm/projects/sample/autoconf
+CellSPU backend     llvm/lib/Target/CellSPU/README.txt
+Google Test         llvm/utils/unittest/googletest
+OpenBSD regex       llvm/lib/Support/{reg*, COPYRIGHT.regex}
+
+
+
+* NOTICE for tests/disassem.cpp and tests/disassem.h.
+
+/*      $NetBSD: disassem.c,v 1.14 2003/03/27 16:58:36 mycroft Exp $    */
+
+/*-
+ * Copyright (c) 1996 Mark Brinicombe.
+ * Copyright (c) 1996 Brini.
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Brini.
+ * 4. The name of the company nor the name of the author may be used to
+ *    endorse or promote products derived from this software without specific
+ *    prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * RiscBSD kernel project
+ *
+ * db_disasm.c
+ *
+ * Kernel disassembler
+ *
+ * Created      : 10/02/96
+ *
+ * Structured after the sparc/sparc/db_disasm.c by David S. Miller &
+ * Paul Kranenburg
+ *
+ * This code is not complete. Not all instructions are disassembled.
+ */
+
+============================================================
+Notices for file(s):
+/lib/libfdlibm.a
+------------------------------------------------------------
+Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+
+Developed at SunSoft, a Sun Microsystems, Inc. business.
+Permission to use, copy, modify, and distribute this
+software is freely granted, provided that this notice
+is preserved.
+
+============================================================
+Notices for file(s):
+/bin/emulator-arm
+/bin/emulator-mips
+/bin/emulator-x86
+/bin/emulator
+/bin/emulator64-arm
+/bin/emulator64-mips
+/bin/emulator64-x86
+/lib/emulator-common.a
+/lib/emulator-libelff.a
+/lib/emulator-libjpeg.a
+/lib/emulator-libqemu.a
+/lib/emulator-libui.a
+/lib/emulator-target-arm.a
+/lib/emulator-target-i386.a
+/lib/emulator-target-mips.a
+/lib/emulator64-common.a
+/lib/emulator64-libelff.a
+/lib/emulator64-libjpeg.a
+/lib/emulator64-libqemu.a
+/lib/emulator64-libui.a
+/lib/emulator64-target-arm.a
+/lib/emulator64-target-i386.a
+/lib/emulator64-target-mips.a
+------------------------------------------------------------
+		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                          675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+============================================================
+Notices for file(s):
+/framework/groovy-all-1.7.0.jar
+------------------------------------------------------------
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+============================================================
+Notices for file(s):
+/lib/libcorkscrew.so
+------------------------------------------------------------
+
+   Copyright (c) 2011, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+
+============================================================
+Notices for file(s):
+/framework/liblzf.jar
+------------------------------------------------------------
+Copyright (c) 2000-2009 Marc Alexander Lehmann <schmorp@schmorp.de>
+
+Redistribution and use in source and binary forms, with or without modifica-
+tion, are permitted provided that the following conditions are met:
+
+  1.  Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+  2.  Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
+CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
+EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
+CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTH-
+ERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Alternatively, the following files carry an additional notice that
+explicitly allows relicensing under the GPLv2: lzf.c lzf.h lzfP.h lzf_c.c
+lzf_d.c
+
+
+============================================================
+Notices for file(s):
+/lib/libLLVM.so
+------------------------------------------------------------
+==============================================================================
+LLVM Release License
+==============================================================================
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign.
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+==============================================================================
+Copyrights and Licenses for Third Party Software Distributed with LLVM:
+==============================================================================
+The LLVM software contains code written by third parties.  Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
+The following pieces of software have additional or alternate copyrights,
+licenses, and/or restrictions:
+
+Program             Directory
+-------             ---------
+Autoconf            llvm/autoconf
+                    llvm/projects/ModuleMaker/autoconf
+                    llvm/projects/sample/autoconf
+CellSPU backend     llvm/lib/Target/CellSPU/README.txt
+Google Test         llvm/utils/unittest/googletest
+OpenBSD regex       llvm/lib/Support/{reg*, COPYRIGHT.regex}
+
+======================================================================
+== LICENSE.TXT for ./autoconf/LICENSE.TXT
+======================================================================
+
+------------------------------------------------------------------------------
+Autoconf Files
+------------------------------------------------------------------------------
+All autoconf files are licensed under the LLVM license with the following
+additions:
+
+llvm/autoconf/install-sh:
+	This script is licensed under the LLVM license, with the following
+	additional copyrights and restrictions:
+
+	Copyright 1991 by the Massachusetts Institute of Technology
+
+	Permission to use, copy, modify, distribute, and sell this software and its
+	documentation for any purpose is hereby granted without fee, provided that
+	the above copyright notice appear in all copies and that both that
+	copyright notice and this permission notice appear in supporting 
+	documentation, and that the name of M.I.T. not be used in advertising or
+	publicity pertaining to distribution of the software without specific,
+	written prior permission.  M.I.T. makes no representations about the
+	suitability of this software for any purpose.  It is provided "as is"
+	without express or implied warranty.
+
+Please see the source files for additional copyrights.
+
+
+======================================================================
+== LICENSE.TXT for ./projects/sample/autoconf/LICENSE.TXT
+======================================================================
+
+------------------------------------------------------------------------------
+Autoconf Files
+------------------------------------------------------------------------------
+All autoconf files are licensed under the LLVM license with the following
+additions:
+
+llvm/autoconf/install-sh:
+	This script is licensed under the LLVM license, with the following
+	additional copyrights and restrictions:
+
+	Copyright 1991 by the Massachusetts Institute of Technology
+
+	Permission to use, copy, modify, distribute, and sell this software and its
+	documentation for any purpose is hereby granted without fee, provided that
+	the above copyright notice appear in all copies and that both that
+	copyright notice and this permission notice appear in supporting 
+	documentation, and that the name of M.I.T. not be used in advertising or
+	publicity pertaining to distribution of the software without specific,
+	written prior permission.  M.I.T. makes no representations about the
+	suitability of this software for any purpose.  It is provided "as is"
+	without express or implied warranty.
+
+Please see the source files for additional copyrights.
+
+
+======================================================================
+== LICENSE.TXT for ./utils/unittest/googletest/LICENSE.TXT
+======================================================================
+
+Copyright 2008, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+======================================================================
+== LICENSE.TXT for ./include/llvm/Support/LICENSE.TXT
+======================================================================
+
+LLVM System Interface Library
+-------------------------------------------------------------------------------
+The LLVM System Interface Library is licensed under the Illinois Open Source
+License and has the following additional copyright:
+
+Copyright (C) 2004 eXtensible Systems, Inc.
+
+============================================================
+Notices for file(s):
+/framework/doclava.jar
+------------------------------------------------------------
+ 
+ Copyright (C) 2010 Google Inc.
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+ http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+======================================================================
+
+jQuery 1.2.6 - New Wave Javascript
+
+Copyright (c) 2008 John Resig (jquery.com)
+Dual licensed under the MIT (MIT-LICENSE.txt)
+and GPL (GPL-LICENSE.txt) licenses.
+
+Copyright (c) 2009 John Resig, http://jquery.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+============================================================
+Notices for file(s):
+/bin/sqlite3
+/lib/libsqlite.so
+------------------------------------------------------------
+2001 September 15
+
+The author disclaims copyright to this source code.  In place of
+a legal notice, here is a blessing:
+
+   May you do good and not evil.
+   May you find forgiveness for yourself and forgive others.
+   May you share freely, never taking more than you give.
+
+
+============================================================
+Notices for file(s):
+/lib/libcrypto-host.so
+/lib/libcrypto_static.a
+/lib/libssl-host.so
+------------------------------------------------------------
+
+  LICENSE ISSUES
+  ==============
+
+  The OpenSSL toolkit stays under a dual license, i.e. both the conditions of
+  the OpenSSL License and the original SSLeay license apply to the toolkit.
+  See below for the actual license texts. Actually both licenses are BSD-style
+  Open Source licenses. In case of any license issues related to OpenSSL
+  please contact openssl-core@openssl.org.
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+
+============================================================
+Notices for file(s):
+/lib/libexpat-host.so
+/lib/libexpat.a
+------------------------------------------------------------
+Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+                               and Clark Cooper
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+============================================================
+Notices for file(s):
+/lib/libLLVMAnalysis.a
+------------------------------------------------------------
+==============================================================================
+LLVM Release License
+==============================================================================
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign.
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+==============================================================================
+Copyrights and Licenses for Third Party Software Distributed with LLVM:
+==============================================================================
+The LLVM software contains code written by third parties.  Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
+The following pieces of software have additional or alternate copyrights,
+licenses, and/or restrictions:
+
+Program             Directory
+-------             ---------
+Autoconf            llvm/autoconf
+                    llvm/projects/ModuleMaker/autoconf
+                    llvm/projects/sample/autoconf
+CellSPU backend     llvm/lib/Target/CellSPU/README.txt
+Google Test         llvm/utils/unittest/googletest
+OpenBSD regex       llvm/lib/Support/{reg*, COPYRIGHT.regex}
+
+============================================================
+Notices for file(s):
+/framework/emmalib.jar
+------------------------------------------------------------
+Common Public License - v 1.0
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S
+ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+      a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+      b) in the case of each subsequent Contributor:
+
+      i) changes to the Program, and
+
+      ii) additions to the Program;
+
+      where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was
+added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules
+of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+2. GRANT OF RIGHTS
+
+      a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative
+works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+
+      b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make,
+use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the
+combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered
+by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+
+      c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the
+Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other
+entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the
+Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+
+      d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this
+Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+      a) it complies with the terms and conditions of this Agreement; and
+
+      b) its license agreement:
+
+      i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement,
+and implied warranties or conditions of merchantability and fitness for a particular purpose;
+
+      ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost
+profits;
+
+      iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+
+      iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium
+customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+      a) it must be made available under this Agreement; and
+
+      b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the
+Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the
+commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other
+Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a
+third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a
+commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to
+qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate
+with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor
+then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this
+section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other
+Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING,
+WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for
+determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to
+the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this
+Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any
+patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes
+patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other
+software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a
+reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the
+Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following
+manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the
+right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new
+version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under
+which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new
+version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement,
+whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal
+action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+
+============================================================
+Notices for file(s):
+/lib/libselinux.a
+------------------------------------------------------------
+This library (libselinux) is public domain software, i.e. not copyrighted.
+
+Warranty Exclusion
+------------------
+You agree that this software is a
+non-commercially developed program that may contain "bugs" (as that
+term is used in the industry) and that it may not function as intended.
+The software is licensed "as is". NSA makes no, and hereby expressly
+disclaims all, warranties, express, implied, statutory, or otherwise
+with respect to the software, including noninfringement and the implied
+warranties of merchantability and fitness for a particular purpose.
+
+Limitation of Liability
+-----------------------
+In no event will NSA be liable for any damages, including loss of data,
+lost profits, cost of cover, or other special, incidental,
+consequential, direct or indirect damages arising from the software or
+the use thereof, however caused and on any theory of liability. This
+limitation will apply even if NSA has been advised of the possibility
+of such damage. You acknowledge that this is a reasonable allocation of
+risk.
+
+============================================================
+Notices for file(s):
+/framework/org-netbeans-api-visual.jar
+/framework/org-openide-util.jar
+------------------------------------------------------------
+The GNU General Public License (GPL) Version 2, June 1991 
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+
+59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away
+your freedom to share and change it. By contrast, the GNU
+General Public License is intended to guarantee your freedom
+to share and change free software--to make sure the software
+is free for all its users. This General Public License
+applies to most of the Free Software Foundation's software
+and to any other program whose authors commit to using it.
+(Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can
+apply it to your programs, too. When we speak of free
+software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and
+charge for this service if you wish), that you receive
+source code or can get it if you want it, that you can
+change the software or use pieces of it in new free
+programs; and that you know you can do these things. To
+protect your rights, we need to make restrictions that
+forbid anyone to deny you these rights or to ask you to
+surrender the rights. These restrictions translate to
+certain responsibilities for you if you distribute copies of
+the software, or if you modify it.
+
+For example, if you distribute copies of such a program,
+whether gratis or for a fee, you must give the recipients
+all the rights that you have. You must make sure that they,
+too, receive or can get the source code. And you must show
+them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the
+software, and (2) offer you this license which gives you
+legal permission to copy, distribute and/or modify the
+software.
+
+Also, for each author's protection and ours, we want to make
+certain that everyone understands that there is no warranty
+for this free software. If the software is modified by
+someone else and passed on, we want its recipients to know
+that what they have is not the original, so that any
+problems introduced by others will not reflect on the
+original authors' reputations.
+
+Finally, any free program is threatened constantly by
+software patents. We wish to avoid the danger that
+redistributors of a free program will individually obtain
+patent licenses, in effect making the program proprietary.
+To prevent this, we have made it clear that any patent must
+be licensed for everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution
+and modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
+MODIFICATION
+
+0. This License applies to any program or other work which
+contains a notice placed by the copyright holder saying it
+may be distributed under the terms of this General Public
+License. The "Program", below, refers to any such program or
+work, and a "work based on the Program" means either the
+Program or any derivative work under copyright law: that is
+to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into
+another language. (Hereinafter, translation is included
+without limitation in the term "modification".) Each
+licensee is addressed as "you".
+
+Activities other than copying, distribution and modification
+are not covered by this License; they are outside its scope.
+The act of running the Program is not restricted, and the
+output from the Program is covered only if its contents
+constitute a work based on the Program (independent of
+having been made by running the Program). Whether that is
+true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the
+Program's source code as you receive it, in any medium,
+provided that you conspicuously and appropriately publish on
+each copy an appropriate copyright notice and disclaimer of
+warranty; keep intact all the notices that refer to this
+License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this License along
+with the Program.
+
+You may charge a fee for the physical act of transferring a
+copy, and you may at your option offer warranty protection
+in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any
+portion of it, thus forming a work based on the Program, and
+copy and distribute such modifications or work under the
+terms of Section 1 above, provided that you also meet all of
+these conditions:
+
+a) You must cause the modified files to carry prominent
+notices stating that you changed the files and the date of
+any change.
+
+b) You must cause any work that you distribute or publish,
+that in whole or in part contains or is derived from the
+Program or any part thereof, to be licensed as a whole at no
+charge to all third parties under the terms of this License.
+
+c) If the modified program normally reads commands
+interactively when run, you must cause it, when started
+running for such interactive use in the most ordinary way,
+to print or display an announcement including an appropriate
+copyright notice and a notice that there is no warranty (or
+else, saying that you provide a warranty) and that users may
+redistribute the program under these conditions, and telling
+the user how to view a copy of this License. (Exception: if
+the Program itself is interactive but does not normally
+print such an announcement, your work based on the Program
+is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the
+Program, and can be reasonably considered independent and
+separate works in themselves, then this License, and its
+terms, do not apply to those sections when you distribute
+them as separate works. But when you distribute the same
+sections as part of a whole which is a work based on the
+Program, the distribution of the whole must be on the terms
+of this License, whose permissions for other licensees
+extend to the entire whole, and thus to each and every part
+regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights
+or contest your rights to work written entirely by you;
+rather, the intent is to exercise the right to control the
+distribution of derivative or collective works based on the
+Program. In addition, mere aggregation of another work not
+based on the Program with the Program (or with a work based
+on the Program) on a volume of a storage or distribution
+medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based
+on it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you
+also do one of the following:
+
+a) Accompany it with the complete corresponding
+machine-readable source code, which must be distributed
+under the terms of Sections 1 and 2 above on a medium
+customarily used for software interchange; or,
+
+b) Accompany it with a written offer, valid for at least
+three years, to give any third party, for a charge no more
+than your cost of physically performing source distribution,
+a complete machine-readable copy of the corresponding source
+code, to be distributed under the terms of Sections 1 and 2
+above on a medium customarily used for software interchange;
+or,
+
+c) Accompany it with the information you received as to the
+offer to distribute corresponding source code. (This
+alternative is allowed only for noncommercial distribution
+and only if you received the program in object code or
+executable form with such an offer, in accord with
+Subsection b above.)
+
+The source code for a work means the preferred form of the
+work for making modifications to it. For an executable work,
+complete source code means all the source code for all
+modules it contains, plus any associated interface
+definition files, plus the scripts used to control
+compilation and installation of the executable. However, as
+a special exception, the source code distributed need not
+include anything that is normally distributed (in either
+source or binary form) with the major components (compiler,
+kernel, and so on) of the operating system on which the
+executable runs, unless that component itself accompanies
+the executable. If distribution of executable or object code
+is made by offering access to copy from a designated place,
+then offering equivalent access to copy the source code from
+the same place counts as distribution of the source code,
+even though third parties are not compelled to copy the
+source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the
+Program except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense or distribute
+the Program is void, and will automatically terminate your
+rights under this License. However, parties who have
+received copies, or rights, from you under this License will
+not have their licenses terminated so long as such parties
+remain in full compliance.
+
+5. You are not required to accept this License, since you
+have not signed it. However, nothing else grants you
+permission to modify or distribute the Program or its
+derivative works. These actions are prohibited by law if you
+do not accept this License. Therefore, by modifying or
+distributing the Program (or any work based on the Program),
+you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or
+modifying the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based
+on the Program), the recipient automatically receives a
+license from the original licensor to copy, distribute or
+modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the
+recipients' exercise of the rights granted herein. You are
+not responsible for enforcing compliance by third parties to
+this License.
+
+7. If, as a consequence of a court judgment or allegation of
+patent infringement or for any other reason (not limited to
+patent issues), conditions are imposed on you (whether by
+court order, agreement or otherwise) that contradict the
+conditions of this License, they do not excuse you from the
+conditions of this License. If you cannot distribute so as
+to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a
+consequence you may not distribute the Program at all. For
+example, if a patent license would not permit royalty-free
+redistribution of the Program by all those who receive
+copies directly or indirectly through you, then the only way
+you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or
+unenforceable under any particular circumstance, the balance
+of the section is intended to apply and the section as a
+whole is intended to apply in other circumstances. It is not
+the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest
+validity of any such claims; this section has the sole
+purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license
+practices. Many people have made generous contributions to
+the wide range of software distributed through that system
+in reliance on consistent application of that system; it is
+up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee
+cannot impose that choice.
+
+This section is intended to make thoroughly clear what is
+believed to be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is
+restricted in certain countries either by patents or by
+copyrighted interfaces, the original copyright holder who
+places the Program under this License may add an explicit
+geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or
+among countries not thus excluded. In such case, this
+License incorporates the limitation as if written in the
+body of this License.
+
+9. The Free Software Foundation may publish revised and/or
+new versions of the General Public License from time to
+time. Such new versions will be similar in spirit to the
+present version, but may differ in detail to address new
+problems or concerns.
+
+Each version is given a distinguishing version number. If
+the Program specifies a version number of this License which
+applies to it and "any later version", you have the option
+of following the terms and conditions either of that version
+or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number
+of this License, you may choose any version ever published
+by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into
+other free programs whose distribution conditions are
+different, write to the author to ask for permission. For
+software which is copyrighted by the Free Software
+Foundation, write to the Free Software Foundation; we
+sometimes make exceptions for this. Our decision will be
+guided by the two goals of preserving the free status of all
+derivatives of our free software and of promoting the
+sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS
+NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
+COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM
+"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR
+IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE
+OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED
+TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY
+WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED
+ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL,
+SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF
+THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT
+LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR
+LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE
+PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH
+HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the
+greatest possible use to the public, the best way to achieve
+this is to make it free software which everyone can
+redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is
+safest to attach them to the start of each source file to
+most effectively convey the exclusion of warranty; and each
+file should have at least the "copyright" line and a pointer
+to where the full notice is found.
+
+One line to give the program's name and a brief idea of what
+it does.
+
+Copyright (C) <year> <name of author>
+This program is free software; you can redistribute it
+and/or modify it under the terms of the GNU General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later
+version. This program is distributed in the hope that it
+will be useful, but WITHOUT ANY WARRANTY; without even the
+implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU General Public License for
+more details. You should have received a copy of the GNU
+General Public License along with this program; if not,
+write to the Free Software Foundation, Inc., 59 Temple
+Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and
+paper mail. If the program is interactive, make it output a
+short notice like this when it starts in an interactive
+mode:
+
+Gnomovision version 69, Copyright (C) year name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
+type `show w'. This is free software, and you are welcome to
+redistribute it under certain conditions; type `show c' for
+details. The hypothetical commands `show w' and `show c'
+should show the appropriate parts of the General Public
+License. Of course, the commands you use may be called
+something other than `show w' and `show c'; they could even
+be mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a
+programmer) or your school, if any, to sign a "copyright
+disclaimer" for the program, if necessary. Here is a sample;
+alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in
+the program `Gnomovision' (which makes passes at compilers)
+written by James Hacker.
+
+signature of Ty Coon, 1 April 1989
+Ty Coon, President of Vice
+This General Public License does not permit incorporating
+your program into proprietary programs. If your program is a
+subroutine library, you may consider it more useful to
+permit linking proprietary applications with the library. If
+this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+"CLASSPATH" EXCEPTION TO THE GPL VERSION 2
+
+Certain source files distributed by Sun Microsystems, Inc. 
+are subject to  the following clarification and special
+exception to the GPL Version 2, but only where Sun has
+expressly included in the particular source file's header
+the words  "Sun designates this particular file as subject
+to the "Classpath" exception as provided by Sun in the
+License file that accompanied this code." 
+
+   Linking this library statically or dynamically with other
+modules is making a combined work based on this library. 
+Thus, the terms and conditions of the GNU General Public
+License Version 2 cover the whole combination. 
+
+  As a special exception, the copyright holders of this
+library give you  permission to link this library with
+independent modules to produce an  executable, regardless of
+the license terms of these independent modules,  and to copy
+and distribute the resulting executable under terms of your 
+choice, provided that you also meet, for each linked
+independent module,  the terms and conditions of the license
+of that module.  An independent  module is a module which is
+not derived from or based on this library.  If  you modify
+this library, you may extend this exception to your version
+of  the library, but you are not obligated to do so.  If you
+do not wish to do so, delete this exception statement from
+your version.
+============================================================
+Notices for file(s):
+/bin/adb
+------------------------------------------------------------
+
+   Copyright (c) 2006-2009, The Android Open Source Project
+   Copyright 2006, Brian Swetland <swetland@frotz.net>
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+
+============================================================
+Notices for file(s):
+/framework/apache-xml-hostdex.jar
+------------------------------------------------------------
+   =========================================================================
+   ==  NOTICE file corresponding to section 4(d) of the Apache License,   ==
+   ==  Version 2.0, in this case for the Apache Xalan Java distribution.  ==
+   =========================================================================
+
+   Apache Xalan (Xalan XSLT processor)
+   Copyright 1999-2006 The Apache Software Foundation
+
+   Apache Xalan (Xalan serializer)
+   Copyright 1999-2006 The Apache Software Foundation
+
+   This product includes software developed at
+   The Apache Software Foundation (http://www.apache.org/).
+
+   =========================================================================
+   Portions of this software was originally based on the following:
+     - software copyright (c) 1999-2002, Lotus Development Corporation.,
+       http://www.lotus.com.
+     - software copyright (c) 2001-2002, Sun Microsystems.,
+       http://www.sun.com.
+     - software copyright (c) 2003, IBM Corporation., 
+       http://www.ibm.com.
+       
+   =========================================================================
+   The binary distribution package (ie. jars, samples and documentation) of
+   this product includes software developed by the following:
+       
+     - The Apache Software Foundation 
+         - Xerces Java - see LICENSE.txt 
+         - JAXP 1.3 APIs - see LICENSE.txt
+         - Bytecode Engineering Library - see LICENSE.txt
+         - Regular Expression - see LICENSE.txt
+       
+     - Scott Hudson, Frank Flannery, C. Scott Ananian 
+         - CUP Parser Generator runtime (javacup\runtime) - see LICENSE.txt 
+ 
+   ========================================================================= 
+   The source distribution package (ie. all source and tools required to build
+   Xalan Java) of this product includes software developed by the following:
+       
+     - The Apache Software Foundation
+         - Xerces Java - see LICENSE.txt 
+         - JAXP 1.3 APIs - see LICENSE.txt
+         - Bytecode Engineering Library - see LICENSE.txt
+         - Regular Expression - see LICENSE.txt
+         - Ant - see LICENSE.txt
+         - Stylebook doc tool - see LICENSE.txt    
+       
+     - Elliot Joel Berk and C. Scott Ananian 
+         - Lexical Analyzer Generator (JLex) - see LICENSE.txt
+
+   =========================================================================       
+   Apache Xerces Java
+   Copyright 1999-2006 The Apache Software Foundation
+
+   This product includes software developed at
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Portions of Apache Xerces Java in xercesImpl.jar and xml-apis.jar
+   were originally based on the following:
+     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
+     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
+     - voluntary contributions made by Paul Eng on behalf of the 
+       Apache Software Foundation that were originally developed at iClick, Inc.,
+       software copyright (c) 1999.    
+
+   =========================================================================   
+   Apache xml-commons xml-apis (redistribution of xml-apis.jar)
+
+   Apache XML Commons
+   Copyright 2001-2003,2006 The Apache Software Foundation.
+
+   This product includes software developed at
+   The Apache Software Foundation (http://www.apache.org/).
+
+   Portions of this software were originally based on the following:
+     - software copyright (c) 1999, IBM Corporation., http://www.ibm.com.
+     - software copyright (c) 1999, Sun Microsystems., http://www.sun.com.
+     - software copyright (c) 2000 World Wide Web Consortium, http://www.w3.org
+
+
+============================================================
+Notices for file(s):
+/bin/llvm-rs-cc
+/bin/rs-spec-gen
+/lib/libslang.a
+------------------------------------------------------------
+=========================
+NOTICE file for slang.git
+=========================
+
+   Copyright (c) 2005-2011, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+
+
+===========================================
+NOTICE file for external/clang (clang.git).
+Note: libclang*.a are statically linked.
+===========================================
+
+==============================================================================
+LLVM Release License
+==============================================================================
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2007-2011 University of Illinois at Urbana-Champaign.
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+==============================================================================
+The LLVM software contains code written by third parties.  Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
+The following pieces of software have additional or alternate copyrights,
+licenses, and/or restrictions:
+
+Program             Directory
+-------             ---------
+<none yet>
+
+
+
+=========================================
+NOTICE file for external/llvm (llvm.git).
+Note: libLLVM*.a are statically linked.
+=========================================
+
+==============================================================================
+LLVM Release License
+==============================================================================
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2003-2011 University of Illinois at Urbana-Champaign.
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+==============================================================================
+Copyrights and Licenses for Third Party Software Distributed with LLVM:
+==============================================================================
+The LLVM software contains code written by third parties.  Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
+The following pieces of software have additional or alternate copyrights,
+licenses, and/or restrictions:
+
+Program             Directory
+-------             ---------
+Autoconf            llvm/autoconf
+                    llvm/projects/ModuleMaker/autoconf
+                    llvm/projects/sample/autoconf
+CellSPU backend     llvm/lib/Target/CellSPU/README.txt
+Google Test         llvm/utils/unittest/googletest
+OpenBSD regex       llvm/lib/Support/{reg*, COPYRIGHT.regex}
+
+============================================================
+Notices for file(s):
+/bin/minigzip
+/lib/libunz.a
+/lib/libz-host.so
+/lib/libz.a
+------------------------------------------------------------
+ (C) 1995-2013 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+============================================================
+Notices for file(s):
+/bin/mksnapshot.arm
+------------------------------------------------------------
+Copyright (c) 1994-2006 Sun Microsystems Inc.
+All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+- Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+- Redistribution in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of Sun Microsystems or the names of contributors may
+be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+The original source code covered by the above license above has been
+modified significantly by Google Inc.
+Copyright 2006-2008 the V8 project authors. All rights reserved.
+
+============================================================
+Notices for file(s):
+/lib/libpng.a
+------------------------------------------------------------
+
+This copy of the libpng notices is provided for your convenience.  In case of
+any discrepancy between this copy and the notices in the file png.h that is
+included in the libpng distribution, the latter shall prevail.
+
+COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+If you modify libpng you may insert additional notices immediately following
+this sentence.
+
+This code is released under the libpng license.
+
+libpng versions 1.2.6, August 15, 2004, through 1.2.46, July 9, 2011, are
+Copyright (c) 2004, 2006-2009 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.2.5
+with the following individual added to the list of Contributing Authors
+
+   Cosmin Truta
+
+libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are
+Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.0.6
+with the following individuals added to the list of Contributing Authors
+
+   Simon-Pierre Cadieux
+   Eric S. Raymond
+   Gilles Vollant
+
+and with the following additions to the disclaimer:
+
+   There is no warranty against interference with your enjoyment of the
+   library or against infringement.  There is no warranty that our
+   efforts or the library will fulfill any of your particular purposes
+   or needs.  This library is provided with all faults, and the entire
+   risk of satisfactory quality, performance, accuracy, and effort is with
+   the user.
+
+libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
+Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-0.96,
+with the following individuals added to the list of Contributing Authors:
+
+   Tom Lane
+   Glenn Randers-Pehrson
+   Willem van Schaik
+
+libpng versions 0.89, June 1996, through 0.96, May 1997, are
+Copyright (c) 1996, 1997 Andreas Dilger
+Distributed according to the same disclaimer and license as libpng-0.88,
+with the following individuals added to the list of Contributing Authors:
+
+   John Bowler
+   Kevin Bracey
+   Sam Bushell
+   Magnus Holmgren
+   Greg Roelofs
+   Tom Tanner
+
+libpng versions 0.5, May 1995, through 0.88, January 1996, are
+Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
+
+For the purposes of this copyright and license, "Contributing Authors"
+is defined as the following set of individuals:
+
+   Andreas Dilger
+   Dave Martindale
+   Guy Eric Schalnat
+   Paul Schmidt
+   Tim Wegner
+
+The PNG Reference Library is supplied "AS IS".  The Contributing Authors
+and Group 42, Inc. disclaim all warranties, expressed or implied,
+including, without limitation, the warranties of merchantability and of
+fitness for any purpose.  The Contributing Authors and Group 42, Inc.
+assume no liability for direct, indirect, incidental, special, exemplary,
+or consequential damages, which may result from the use of the PNG
+Reference Library, even if advised of the possibility of such damage.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+source code, or portions hereof, for any purpose, without fee, subject
+to the following restrictions:
+
+1. The origin of this source code must not be misrepresented.
+
+2. Altered versions must be plainly marked as such and must not
+   be misrepresented as being the original source.
+
+3. This Copyright notice may not be removed or altered from any
+   source or altered source distribution.
+
+The Contributing Authors and Group 42, Inc. specifically permit, without
+fee, and encourage the use of this source code as a component to
+supporting the PNG file format in commercial products.  If you use this
+source code in a product, acknowledgment is not required but would be
+appreciated.
+
+
+A "png_get_copyright" function is available, for convenient use in "about"
+boxes and the like:
+
+   printf("%s",png_get_copyright(NULL));
+
+Also, the PNG logo (in PNG format, of course) is supplied in the
+files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
+
+Libpng is OSI Certified Open Source Software.  OSI Certified Open Source is a
+certification mark of the Open Source Initiative.
+
+Glenn Randers-Pehrson
+glennrp at users.sourceforge.net
+July 9, 2011
+
+============================================================
+Notices for file(s):
+/framework/antlr-runtime.jar
+------------------------------------------------------------
+[The "BSD license"]
+Copyright (c) 201 Terence Parr
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ 3. The name of the author may not be used to endorse or promote products
+    derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+============================================================
+Notices for file(s):
+/framework/junit.jar
+------------------------------------------------------------
+Common Public License - v 1.0
+
+
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
+b) in the case of each subsequent Contributor:
+i)	 changes to the Program, and
+ii)	 additions to the Program;
+where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
+
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+
+"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
+
+
+2. GRANT OF RIGHTS
+
+a)	Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
+b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
+c)	Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
+d)	Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
+
+a)	it complies with the terms and conditions of this Agreement; and
+b)	its license agreement:
+i)	effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
+ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
+iii)	states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
+iv)	states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
+When the Program is made available in source code form:
+
+a)	it must be made available under this Agreement; and
+b)	a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the Program.
+
+
+Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
+
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
+
+
+For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
+
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement, including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
+
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
+
+
+If Recipient institutes patent litigation against a Contributor with respect to a patent applicable to software (including a cross-claim or counterclaim in a lawsuit), then any patent licenses granted by that Contributor to such Recipient under this Agreement shall terminate as of the date such litigation is filed. In addition, if Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
+
+
+All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
+
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. IBM is the initial Agreement Steward. IBM may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
+
+
+This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
+============================================================
+Notices for file(s):
+/framework/ant-glob.jar
+------------------------------------------------------------
+/*
+ *                                 Apache License
+ *                           Version 2.0, January 2004
+ *                        http://www.apache.org/licenses/
+ *
+ *   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+ *
+ *   1. Definitions.
+ *
+ *      "License" shall mean the terms and conditions for use, reproduction,
+ *      and distribution as defined by Sections 1 through 9 of this document.
+ *
+ *      "Licensor" shall mean the copyright owner or entity authorized by
+ *      the copyright owner that is granting the License.
+ *
+ *      "Legal Entity" shall mean the union of the acting entity and all
+ *      other entities that control, are controlled by, or are under common
+ *      control with that entity. For the purposes of this definition,
+ *      "control" means (i) the power, direct or indirect, to cause the
+ *      direction or management of such entity, whether by contract or
+ *      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ *      outstanding shares, or (iii) beneficial ownership of such entity.
+ *
+ *      "You" (or "Your") shall mean an individual or Legal Entity
+ *      exercising permissions granted by this License.
+ *
+ *      "Source" form shall mean the preferred form for making modifications,
+ *      including but not limited to software source code, documentation
+ *      source, and configuration files.
+ *
+ *      "Object" form shall mean any form resulting from mechanical
+ *      transformation or translation of a Source form, including but
+ *      not limited to compiled object code, generated documentation,
+ *      and conversions to other media types.
+ *
+ *      "Work" shall mean the work of authorship, whether in Source or
+ *      Object form, made available under the License, as indicated by a
+ *      copyright notice that is included in or attached to the work
+ *      (an example is provided in the Appendix below).
+ *
+ *      "Derivative Works" shall mean any work, whether in Source or Object
+ *      form, that is based on (or derived from) the Work and for which the
+ *      editorial revisions, annotations, elaborations, or other modifications
+ *      represent, as a whole, an original work of authorship. For the purposes
+ *      of this License, Derivative Works shall not include works that remain
+ *      separable from, or merely link (or bind by name) to the interfaces of,
+ *      the Work and Derivative Works thereof.
+ *
+ *      "Contribution" shall mean any work of authorship, including
+ *      the original version of the Work and any modifications or additions
+ *      to that Work or Derivative Works thereof, that is intentionally
+ *      submitted to Licensor for inclusion in the Work by the copyright owner
+ *      or by an individual or Legal Entity authorized to submit on behalf of
+ *      the copyright owner. For the purposes of this definition, "submitted"
+ *      means any form of electronic, verbal, or written communication sent
+ *      to the Licensor or its representatives, including but not limited to
+ *      communication on electronic mailing lists, source code control systems,
+ *      and issue tracking systems that are managed by, or on behalf of, the
+ *      Licensor for the purpose of discussing and improving the Work, but
+ *      excluding communication that is conspicuously marked or otherwise
+ *      designated in writing by the copyright owner as "Not a Contribution."
+ *
+ *      "Contributor" shall mean Licensor and any individual or Legal Entity
+ *      on behalf of whom a Contribution has been received by Licensor and
+ *      subsequently incorporated within the Work.
+ *
+ *   2. Grant of Copyright License. Subject to the terms and conditions of
+ *      this License, each Contributor hereby grants to You a perpetual,
+ *      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ *      copyright license to reproduce, prepare Derivative Works of,
+ *      publicly display, publicly perform, sublicense, and distribute the
+ *      Work and such Derivative Works in Source or Object form.
+ *
+ *   3. Grant of Patent License. Subject to the terms and conditions of
+ *      this License, each Contributor hereby grants to You a perpetual,
+ *      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ *      (except as stated in this section) patent license to make, have made,
+ *      use, offer to sell, sell, import, and otherwise transfer the Work,
+ *      where such license applies only to those patent claims licensable
+ *      by such Contributor that are necessarily infringed by their
+ *      Contribution(s) alone or by combination of their Contribution(s)
+ *      with the Work to which such Contribution(s) was submitted. If You
+ *      institute patent litigation against any entity (including a
+ *      cross-claim or counterclaim in a lawsuit) alleging that the Work
+ *      or a Contribution incorporated within the Work constitutes direct
+ *      or contributory patent infringement, then any patent licenses
+ *      granted to You under this License for that Work shall terminate
+ *      as of the date such litigation is filed.
+ *
+ *   4. Redistribution. You may reproduce and distribute copies of the
+ *      Work or Derivative Works thereof in any medium, with or without
+ *      modifications, and in Source or Object form, provided that You
+ *      meet the following conditions:
+ *
+ *      (a) You must give any other recipients of the Work or
+ *          Derivative Works a copy of this License; and
+ *
+ *      (b) You must cause any modified files to carry prominent notices
+ *          stating that You changed the files; and
+ *
+ *      (c) You must retain, in the Source form of any Derivative Works
+ *          that You distribute, all copyright, patent, trademark, and
+ *          attribution notices from the Source form of the Work,
+ *          excluding those notices that do not pertain to any part of
+ *          the Derivative Works; and
+ *
+ *      (d) If the Work includes a "NOTICE" text file as part of its
+ *          distribution, then any Derivative Works that You distribute must
+ *          include a readable copy of the attribution notices contained
+ *          within such NOTICE file, excluding those notices that do not
+ *          pertain to any part of the Derivative Works, in at least one
+ *          of the following places: within a NOTICE text file distributed
+ *          as part of the Derivative Works; within the Source form or
+ *          documentation, if provided along with the Derivative Works; or,
+ *          within a display generated by the Derivative Works, if and
+ *          wherever such third-party notices normally appear. The contents
+ *          of the NOTICE file are for informational purposes only and
+ *          do not modify the License. You may add Your own attribution
+ *          notices within Derivative Works that You distribute, alongside
+ *          or as an addendum to the NOTICE text from the Work, provided
+ *          that such additional attribution notices cannot be construed
+ *          as modifying the License.
+ *
+ *      You may add Your own copyright statement to Your modifications and
+ *      may provide additional or different license terms and conditions
+ *      for use, reproduction, or distribution of Your modifications, or
+ *      for any such Derivative Works as a whole, provided Your use,
+ *      reproduction, and distribution of the Work otherwise complies with
+ *      the conditions stated in this License.
+ *
+ *   5. Submission of Contributions. Unless You explicitly state otherwise,
+ *      any Contribution intentionally submitted for inclusion in the Work
+ *      by You to the Licensor shall be under the terms and conditions of
+ *      this License, without any additional terms or conditions.
+ *      Notwithstanding the above, nothing herein shall supersede or modify
+ *      the terms of any separate license agreement you may have executed
+ *      with Licensor regarding such Contributions.
+ *
+ *   6. Trademarks. This License does not grant permission to use the trade
+ *      names, trademarks, service marks, or product names of the Licensor,
+ *      except as required for reasonable and customary use in describing the
+ *      origin of the Work and reproducing the content of the NOTICE file.
+ *
+ *   7. Disclaimer of Warranty. Unless required by applicable law or
+ *      agreed to in writing, Licensor provides the Work (and each
+ *      Contributor provides its Contributions) on an "AS IS" BASIS,
+ *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ *      implied, including, without limitation, any warranties or conditions
+ *      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ *      PARTICULAR PURPOSE. You are solely responsible for determining the
+ *      appropriateness of using or redistributing the Work and assume any
+ *      risks associated with Your exercise of permissions under this License.
+ *
+ *   8. Limitation of Liability. In no event and under no legal theory,
+ *      whether in tort (including negligence), contract, or otherwise,
+ *      unless required by applicable law (such as deliberate and grossly
+ *      negligent acts) or agreed to in writing, shall any Contributor be
+ *      liable to You for damages, including any direct, indirect, special,
+ *      incidental, or consequential damages of any character arising as a
+ *      result of this License or out of the use or inability to use the
+ *      Work (including but not limited to damages for loss of goodwill,
+ *      work stoppage, computer failure or malfunction, or any and all
+ *      other commercial damages or losses), even if such Contributor
+ *      has been advised of the possibility of such damages.
+ *
+ *   9. Accepting Warranty or Additional Liability. While redistributing
+ *      the Work or Derivative Works thereof, You may choose to offer,
+ *      and charge a fee for, acceptance of support, warranty, indemnity,
+ *      or other liability obligations and/or rights consistent with this
+ *      License. However, in accepting such obligations, You may act only
+ *      on Your own behalf and on Your sole responsibility, not on behalf
+ *      of any other Contributor, and only if You agree to indemnify,
+ *      defend, and hold each Contributor harmless for any liability
+ *      incurred by, or claims asserted against, such Contributor by reason
+ *      of your accepting any such warranty or additional liability.
+ *
+ *   END OF TERMS AND CONDITIONS
+ *
+ *   APPENDIX: How to apply the Apache License to your work.
+ *
+ *      To apply the Apache License to your work, attach the following
+ *      boilerplate notice, with the fields enclosed by brackets "[]"
+ *      replaced with your own identifying information. (Don't include
+ *      the brackets!)  The text should be enclosed in the appropriate
+ *      comment syntax for the file format. We also recommend that a
+ *      file or class name and description of purpose be included on the
+ *      same "printed page" as the copyright notice for easier
+ *      identification within third-party archives.
+ *
+ *   Copyright [yyyy] [name of copyright owner]
+ *
+ *   Licensed under the Apache License, Version 2.0 (the "License");
+ *   you may not use this file except in compliance with the License.
+ *   You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *   Unless required by applicable law or agreed to in writing, software
+ *   distributed under the License is distributed on an "AS IS" BASIS,
+ *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *   See the License for the specific language governing permissions and
+ *   limitations under the License.
+ */
+
+W3C® SOFTWARE NOTICE AND LICENSE
+http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231
+
+This work (and included software, documentation such as READMEs, or other
+related items) is being provided by the copyright holders under the following
+license. By obtaining, using and/or copying this work, you (the licensee) agree
+that you have read, understood, and will comply with the following terms and
+conditions.
+
+Permission to copy, modify, and distribute this software and its documentation,
+with or without modification, for any purpose and without fee or royalty is
+hereby granted, provided that you include the following on ALL copies of the
+software and documentation or portions thereof, including modifications:
+
+  1. The full text of this NOTICE in a location viewable to users of the
+     redistributed or derivative work. 
+  2. Any pre-existing intellectual property disclaimers, notices, or terms
+     and conditions. If none exist, the W3C Software Short Notice should be
+     included (hypertext is preferred, text is permitted) within the body
+     of any redistributed or derivative code.
+  3. Notice of any changes or modifications to the files, including the date
+     changes were made. (We recommend you provide URIs to the location from
+     which the code is derived.)
+     
+THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE
+NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
+TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
+THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY
+PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
+
+COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.
+
+The name and trademarks of copyright holders may NOT be used in advertising or
+publicity pertaining to the software without specific, written prior permission.
+Title to copyright in this software and any associated documentation will at
+all times remain with copyright holders.
+
+____________________________________
+
+This formulation of W3C's notice and license became active on December 31 2002.
+This version removes the copyright ownership notice such that this license can
+be used with materials other than those owned by the W3C, reflects that ERCIM
+is now a host of the W3C, includes references to this specific dated version of
+the license, and removes the ambiguous grant of "use". Otherwise, this version
+is the same as the previous version and is written so as to preserve the Free
+Software Foundation's assessment of GPL compatibility and OSI's certification
+under the Open Source Definition. Please see our Copyright FAQ for common
+questions about using materials from our site, including specific terms and
+conditions for packages like libwww, Amaya, and Jigsaw. Other questions about
+this notice can be directed to site-policy@w3.org.
+ 
+Joseph Reagle <site-policy@w3.org> 
+
+This license came from: http://www.megginson.com/SAX/copying.html
+  However please note future versions of SAX may be covered 
+  under http://saxproject.org/?selected=pd
+
+SAX2 is Free!
+
+I hereby abandon any property rights to SAX 2.0 (the Simple API for
+XML), and release all of the SAX 2.0 source code, compiled code, and
+documentation contained in this distribution into the Public Domain.
+SAX comes with NO WARRANTY or guarantee of fitness for any
+purpose.
+
+David Megginson, david@megginson.com
+2000-05-05
+
+============================================================
+Notices for file(s):
+/lib/libclang.so
+/lib/libclangAnalysis.a
+------------------------------------------------------------
+==============================================================================
+LLVM Release License
+==============================================================================
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2007-2011 University of Illinois at Urbana-Champaign.
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+==============================================================================
+The LLVM software contains code written by third parties.  Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
+The following pieces of software have additional or alternate copyrights,
+licenses, and/or restrictions:
+
+Program             Directory
+-------             ---------
+<none yet>
+
+============================================================
+Notices for file(s):
+/framework/guavalib.jar
+------------------------------------------------------------
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+============================================================
+Notices for file(s):
+/core-lambda-stubs.jar
+------------------------------------------------------------
+The GNU General Public License (GPL)
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to share
+and change it.  By contrast, the GNU General Public License is intended to
+guarantee your freedom to share and change free software--to make sure the
+software is free for all its users.  This General Public License applies to
+most of the Free Software Foundation's software and to any other program whose
+authors commit to using it.  (Some other Free Software Foundation software is
+covered by the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+When we speak of free software, we are referring to freedom, not price.  Our
+General Public Licenses are designed to make sure that you have the freedom to
+distribute copies of free software (and charge for this service if you wish),
+that you receive source code or can get it if you want it, that you can change
+the software or use pieces of it in new free programs; and that you know you
+can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny
+you these rights or to ask you to surrender the rights.  These restrictions
+translate to certain responsibilities for you if you distribute copies of the
+software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for
+a fee, you must give the recipients all the rights that you have.  You must
+make sure that they, too, receive or can get the source code.  And you must
+show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2)
+offer you this license which gives you legal permission to copy, distribute
+and/or modify the software.
+
+Also, for each author's protection and ours, we want to make certain that
+everyone understands that there is no warranty for this free software.  If the
+software is modified by someone else and passed on, we want its recipients to
+know that what they have is not the original, so that any problems introduced
+by others will not reflect on the original authors' reputations.
+
+Finally, any free program is threatened constantly by software patents.  We
+wish to avoid the danger that redistributors of a free program will
+individually obtain patent licenses, in effect making the program proprietary.
+To prevent this, we have made it clear that any patent must be licensed for
+everyone's free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification
+follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+placed by the copyright holder saying it may be distributed under the terms of
+this General Public License.  The "Program", below, refers to any such program
+or work, and a "work based on the Program" means either the Program or any
+derivative work under copyright law: that is to say, a work containing the
+Program or a portion of it, either verbatim or with modifications and/or
+translated into another language.  (Hereinafter, translation is included
+without limitation in the term "modification".) Each licensee is addressed as
+"you".
+
+Activities other than copying, distribution and modification are not covered by
+this License; they are outside its scope.  The act of running the Program is
+not restricted, and the output from the Program is covered only if its contents
+constitute a work based on the Program (independent of having been made by
+running the Program).  Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program's source code as
+you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this License
+and to the absence of any warranty; and give any other recipients of the
+Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may
+at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus
+forming a work based on the Program, and copy and distribute such modifications
+or work under the terms of Section 1 above, provided that you also meet all of
+these conditions:
+
+    a) You must cause the modified files to carry prominent notices stating
+    that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in whole or
+    in part contains or is derived from the Program or any part thereof, to be
+    licensed as a whole at no charge to all third parties under the terms of
+    this License.
+
+    c) If the modified program normally reads commands interactively when run,
+    you must cause it, when started running for such interactive use in the
+    most ordinary way, to print or display an announcement including an
+    appropriate copyright notice and a notice that there is no warranty (or
+    else, saying that you provide a warranty) and that users may redistribute
+    the program under these conditions, and telling the user how to view a copy
+    of this License.  (Exception: if the Program itself is interactive but does
+    not normally print such an announcement, your work based on the Program is
+    not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If identifiable
+sections of that work are not derived from the Program, and can be reasonably
+considered independent and separate works in themselves, then this License, and
+its terms, do not apply to those sections when you distribute them as separate
+works.  But when you distribute the same sections as part of a whole which is a
+work based on the Program, the distribution of the whole must be on the terms
+of this License, whose permissions for other licensees extend to the entire
+whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your
+rights to work written entirely by you; rather, the intent is to exercise the
+right to control the distribution of derivative or collective works based on
+the Program.
+
+In addition, mere aggregation of another work not based on the Program with the
+Program (or with a work based on the Program) on a volume of a storage or
+distribution medium does not bring the other work under the scope of this
+License.
+
+3. You may copy and distribute the Program (or a work based on it, under
+Section 2) in object code or executable form under the terms of Sections 1 and
+2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable source
+    code, which must be distributed under the terms of Sections 1 and 2 above
+    on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three years, to
+    give any third party, for a charge no more than your cost of physically
+    performing source distribution, a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of Sections 1
+    and 2 above on a medium customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer to
+    distribute corresponding source code.  (This alternative is allowed only
+    for noncommercial distribution and only if you received the program in
+    object code or executable form with such an offer, in accord with
+    Subsection b above.)
+
+The source code for a work means the preferred form of the work for making
+modifications to it.  For an executable work, complete source code means all
+the source code for all modules it contains, plus any associated interface
+definition files, plus the scripts used to control compilation and installation
+of the executable.  However, as a special exception, the source code
+distributed need not include anything that is normally distributed (in either
+source or binary form) with the major components (compiler, kernel, and so on)
+of the operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the source
+code from the same place counts as distribution of the source code, even though
+third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+expressly provided under this License.  Any attempt otherwise to copy, modify,
+sublicense or distribute the Program is void, and will automatically terminate
+your rights under this License.  However, parties who have received copies, or
+rights, from you under this License will not have their licenses terminated so
+long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it.
+However, nothing else grants you permission to modify or distribute the Program
+or its derivative works.  These actions are prohibited by law if you do not
+accept this License.  Therefore, by modifying or distributing the Program (or
+any work based on the Program), you indicate your acceptance of this License to
+do so, and all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program),
+the recipient automatically receives a license from the original licensor to
+copy, distribute or modify the Program subject to these terms and conditions.
+You may not impose any further restrictions on the recipients' exercise of the
+rights granted herein.  You are not responsible for enforcing compliance by
+third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues), conditions
+are imposed on you (whether by court order, agreement or otherwise) that
+contradict the conditions of this License, they do not excuse you from the
+conditions of this License.  If you cannot distribute so as to satisfy
+simultaneously your obligations under this License and any other pertinent
+obligations, then as a consequence you may not distribute the Program at all.
+For example, if a patent license would not permit royalty-free redistribution
+of the Program by all those who receive copies directly or indirectly through
+you, then the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply and
+the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or
+other property right claims or to contest validity of any such claims; this
+section has the sole purpose of protecting the integrity of the free software
+distribution system, which is implemented by public license practices.  Many
+people have made generous contributions to the wide range of software
+distributed through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing to
+distribute software through any other system and a licensee cannot impose that
+choice.
+
+This section is intended to make thoroughly clear what is believed to be a
+consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain
+countries either by patents or by copyrighted interfaces, the original
+copyright holder who places the Program under this License may add an explicit
+geographical distribution limitation excluding those countries, so that
+distribution is permitted only in or among countries not thus excluded.  In
+such case, this License incorporates the limitation as if written in the body
+of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the
+General Public License from time to time.  Such new versions will be similar in
+spirit to the present version, but may differ in detail to address new problems
+or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any later
+version", you have the option of following the terms and conditions either of
+that version or of any later version published by the Free Software Foundation.
+If the Program does not specify a version number of this License, you may
+choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs
+whose distribution conditions are different, write to the author to ask for
+permission.  For software which is copyrighted by the Free Software Foundation,
+write to the Free Software Foundation; we sometimes make exceptions for this.
+Our decision will be guided by the two goals of preserving the free status of
+all derivatives of our free software and of promoting the sharing and reuse of
+software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
+THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE
+STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
+PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE,
+YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
+ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
+PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
+INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
+BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible
+use to the public, the best way to achieve this is to make it free software
+which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program.  It is safest to attach
+them to the start of each source file to most effectively convey the exclusion
+of warranty; and each file should have at least the "copyright" line and a
+pointer to where the full notice is found.
+
+    One line to give the program's name and a brief idea of what it does.
+
+    Copyright (C) <year> <name of author>
+
+    This program is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the Free
+    Software Foundation; either version 2 of the License, or (at your option)
+    any later version.
+
+    This program is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+    more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc., 59
+    Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it
+starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
+    with ABSOLUTELY NO WARRANTY; for details type 'show w'.  This is free
+    software, and you are welcome to redistribute it under certain conditions;
+    type 'show c' for details.
+
+The hypothetical commands 'show w' and 'show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may be
+called something other than 'show w' and 'show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.  Here
+is a sample; alter the names:
+
+    Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+    'Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+    signature of Ty Coon, 1 April 1989
+
+    Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General Public
+License instead of this License.
+
+
+"CLASSPATH" EXCEPTION TO THE GPL
+
+Certain source files distributed by Oracle America and/or its affiliates are
+subject to the following clarification and special exception to the GPL, but
+only where Oracle has expressly included in the particular source file's header
+the words "Oracle designates this particular file as subject to the "Classpath"
+exception as provided by Oracle in the LICENSE file that accompanied this code."
+
+    Linking this library statically or dynamically with other modules is making
+    a combined work based on this library.  Thus, the terms and conditions of
+    the GNU General Public License cover the whole combination.
+
+    As a special exception, the copyright holders of this library give you
+    permission to link this library with independent modules to produce an
+    executable, regardless of the license terms of these independent modules,
+    and to copy and distribute the resulting executable under terms of your
+    choice, provided that you also meet, for each linked independent module,
+    the terms and conditions of the license of that module.  An independent
+    module is a module which is not derived from or based on this library.  If
+    you modify this library, you may extend this exception to your version of
+    the library, but you are not obligated to do so.  If you do not wish to do
+    so, delete this exception statement from your version.
+
+============================================================
+Notices for file(s):
+/lib/d8.jar
+------------------------------------------------------------
+This file lists all licenses for code distributed.
+All non-library code has the following 3-Clause BSD license.
+
+
+Copyright (c) 2016, the R8 project authors.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* Neither the name of Google Inc. nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Summary of distributed libraries:
+
+- artifact: com.google.guava:guava:+
+  name: Guava Google Core Libraries for Java
+  copyrightHolder: The Guava Authors
+  license: The Apache Software License, Version 2.0
+  licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
+- artifact: com.google.code.gson:gson:+
+  name: Gson
+  license: The Apache Software License, Version 2.0
+  licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
+  url: https://github.com/google/gson
+- artifact: it.unimi.dsi:fastutil:+
+  name: fastutil
+  license: Apache License, Version 2.0
+  licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.html
+  url: http://fasutil.di.unimi.it/
+- artifact: net.sf.jopt-simple:jopt-simple:+
+  name: JOpt Simple
+  license: The MIT License
+  licenseUrl: http://www.opensource.org/licenses/mit-license.php
+  url: http://pholser.github.com/jopt-simple
+- artifact: org.ow2.asm:asm-commons:+
+  name: ASM Commons
+  copyrightHolder: INRIA, France Telecom
+  license: ASM license
+  licenseUrl: http://asm.ow2.org/license.html
+  url: http://asm.ow2.org/index.html
+- artifact: org.ow2.asm:asm-tree:+
+  name: ASM Tree
+  copyrightHolder: INRIA, France Telecom
+  license: ASM license
+  licenseUrl: http://asm.ow2.org/license.html
+  url: http://asm.ow2.org/index.html
+- artifact: org.ow2.asm:asm-util:+
+  name: ASM Util
+  copyrightHolder: INRIA, France Telecom
+  license: ASM license
+  licenseUrl: http://asm.ow2.org/license.html
+  url: http://asm.ow2.org/index.html
+- artifact: org.ow2.asm:asm-analysis:+
+  name: ASM Util
+  copyrightHolder: INRIA, France Telecom
+  license: ASM license
+  licenseUrl: http://asm.ow2.org/license.html
+  url: http://asm.ow2.org/index.html
+- artifact: org.ow2.asm:asm:+
+  name: ASM Core
+  copyrightHolder: INRIA, France Telecom
+  license: ASM license
+  licenseUrl: http://asm.ow2.org/license.html
+  url: http://asm.ow2.org/index.html
+- artifact: org.jetbrains.kotlin:kotlin-stdlib:+
+  name: org.jetbrains.kotlin:kotlin-stdlib
+  copyrightHolder: JetBrains s.r.o.
+  license: The Apache License, Version 2.0
+  licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
+  url: https://kotlinlang.org/
+- artifact: org.jetbrains.kotlin:kotlin-stdlib-common:+
+  name: org.jetbrains.kotlin:kotlin-stdlib
+  copyrightHolder: JetBrains s.r.o.
+  license: The Apache License, Version 2.0
+  licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
+  url: https://kotlinlang.org/
+- artifact: org.jetbrains.kotlinx:kotlinx-metadata-jvm:+
+  name: org.jetbrains.kotlinx:kotlinx-metadata-jvm
+  copyrightHolder: JetBrains s.r.o.
+  license: The Apache License, Version 2.0
+  licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
+  url: https://kotlinlang.org/
+- artifact: org.jetbrains:annotations:+
+  name: IntelliJ IDEA Annotations
+  copyrightHolder: JetBrains s.r.o.
+  license: The Apache Software License, Version 2.0
+  licenseUrl: http://www.apache.org/licenses/LICENSE-2.0.txt
+  url: http://www.jetbrains.org
+
+
+Licenses details:
+
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+
+Copyright (c) 2000-2011 INRIA, France Telecom
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holders nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+Apache Commons Compress
+Copyright 2002-2016 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+The files in the package org.apache.commons.compress.archivers.sevenz
+were derived from the LZMA SDK, version 9.20 (C/ and CPP/7zip/),
+which has been placed in the public domain:
+
+"LZMA SDK is placed in the public domain." (http://www.7-zip.org/sdk.html)
+
+
+ The MIT License
+
+ Copyright (c) 2004-2016 Paul R. Holser, Jr.
+
+ Permission is hereby granted, free of charge, to any person obtaining
+ a copy of this software and associated documentation files (the
+ "Software"), to deal in the Software without restriction, including
+ without limitation the rights to use, copy, modify, merge, publish,
+ distribute, sublicense, and/or sell copies of the Software, and to
+ permit persons to whom the Software is furnished to do so, subject to
+ the following conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+==============================================================================
+LLVM Release License
+==============================================================================
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2007-2016 University of Illinois at Urbana-Champaign.
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+==============================================================================
+The LLVM software contains code written by third parties.  Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
+The following pieces of software have additional or alternate copyrights,
+licenses, and/or restrictions:
+
+Program             Directory
+-------             ---------
+<none yet>
+
diff --git a/licenses/LICENCE.mediatek-nic b/licenses/LICENCE.mediatek-nic
new file mode 100644
index 0000000..6886c61
--- /dev/null
+++ b/licenses/LICENCE.mediatek-nic
@@ -0,0 +1,9 @@
+MediaTek Inc. grants permission to use and redistribute aforementioned firmware
+files for the use with devices containing MediaTek chipsets, but not as part of
+the Linux kernel or in any other form which would require these files themselves
+to be covered by the terms of the GNU General Public License or the GNU Lesser
+General Public License.
+
+These firmware files are distributed in the hope that they will be useful, but
+are provided WITHOUT ANY WARRANTY, INCLUDING BUT NOT LIMITED TO IMPLIED WARRANTY
+OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
diff --git a/licenses/LICENSE.radeon b/licenses/LICENSE.radeon
index 0d1894f..723c559 100644
--- a/licenses/LICENSE.radeon
+++ b/licenses/LICENSE.radeon
@@ -1,4 +1,4 @@
-Copyright (C) 2009-2013  Advanced Micro Devices, Inc. All rights reserved.
+Copyright (C) 2009-2015  Advanced Micro Devices, Inc. All rights reserved.
 
 REDISTRIBUTION: Permission is hereby granted, free of any license fees,
 to any person obtaining a copy of this microcode (the "Software"), to
diff --git a/licenses/LVFS-Vendor-Agreement-v1 b/licenses/LVFS-Vendor-Agreement-v1
new file mode 100644
index 0000000..c0482ea
--- /dev/null
+++ b/licenses/LVFS-Vendor-Agreement-v1
@@ -0,0 +1,38 @@
+Vendor Agreement with the LVFS
+By uploading a firmware file you must agree that:
+
+You give the Linux Vendor Firmware System permission to redistribute
+the files uploaded to the service, both by mirroring the content
+internally to the current (and future) cloud providers and directly to
+unauthenticated end users.
+You have full permission and authority to upload the files to the LVFS
+and are legally permitted to distribute the firmware in this way.
+You understand the files that in the testing and stable channels are
+going to be downloaded and installed by users, possibly automatically
+and without user interaction.
+You understand that users with the vendor-specific embargo token will
+also have access to the firmware in the embargoed state.
+You understand that the uploaded firmware archive will be unpacked,
+the firmware binary will be signed by the LVFS GPG key and the cabinet
+will be packed with only the files listed in the MetaInfo file.
+You understand that functionality provided the LVFS may go away at any
+time and without any notice, and that we provide no kind of uptime
+guarantee for any part of the service.
+You agree that the files uploaded have been tested on all applicable
+hardware to the best of your ability, and no user interaction is
+required before or after the update has completed.
+You understand that people running this service cannot be held
+accountable in any way if the firmware damages the end-users machine.
+You will not allow users to share access the LVFS without permission
+and that the user account(s) will use strong passwords.
+You agree that all firmware uploaded will not be malicious e.g. be a
+virus or to exploit or examine security issues.
+You agree we will notify the LVFS administrators if the LVFS vendor
+account is no longer required.
+
+This text is referred to as ‘Agreement Version 1’, and was modified on
+2018-04-04.
+
+Any changes to this agreement will force all user to re-agree to the
+new text when uploading new firmware files. Any planned changes will
+be discussed on the mailing list.
diff --git a/licenses/copyright-attribution/sys-boot/gnu-efi b/licenses/copyright-attribution/sys-boot/gnu-efi
new file mode 100644
index 0000000..9a2a726
--- /dev/null
+++ b/licenses/copyright-attribution/sys-boot/gnu-efi
@@ -0,0 +1,119 @@
+The files in the "lib" and "inc" subdirectories are using the EFI Application 
+Toolkit distributed by Intel at http://developer.intel.com/technology/efi
+
+This code is covered by the following agreement:
+
+Copyright (c) 1998-2000 Intel Corporation
+
+Redistribution and use in source and binary forms, with or without modification, are permitted
+provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright notice, this list of conditions and
+the following disclaimer.
+
+Redistributions in binary form must reproduce the above copyright notice, this list of conditions
+and the following disclaimer in the documentation and/or other materials provided with the
+distribution.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE. THE EFI SPECIFICATION AND ALL OTHER INFORMATION
+ON THIS WEB SITE ARE PROVIDED "AS IS" WITH NO WARRANTIES, AND ARE SUBJECT
+TO CHANGE WITHOUT NOTICE.
+
+/* crt0-efi-ia32.S - x86 EFI startup code.
+   Copyright (C) 1999 Hewlett-Packard Co.
+	Contributed by David Mosberger <davidm@hpl.hp.com>.
+
+    All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials
+      provided with the distribution.
+    * Neither the name of Hewlett-Packard Co. nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+    CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+    BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+    TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+    THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+    SUCH DAMAGE.
+*/
+
+/* crt0-efi-ia64.S - IA-64 EFI startup code.
+   Copyright (C) 1999 Hewlett-Packard Co.
+	Contributed by David Mosberger <davidm@hpl.hp.com>.
+
+    All rights reserved.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials
+      provided with the distribution.
+    * Neither the name of Hewlett-Packard Co. nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+    CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+    INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+    MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+    DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+    BE LIABLE FOR ANYDIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+    OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+    TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+    THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+    SUCH DAMAGE.
+*/
+
+/*
+ * crt0-efi-arm.S - PE/COFF header for ARM EFI applications
+ *
+ * Copright (C) 2014 Linaro Ltd. <ard.biesheuvel@linaro.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice and this list of conditions, without modification.
+ * 2. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * Alternatively, this software may be distributed under the terms of the
+ * GNU General Public License as published by the Free Software Foundation;
+ * either version 2 of the License, or (at your option) any later version.
+ */
+
+
diff --git a/media-fonts/croscorefonts/croscorefonts-1.31.0-r1.ebuild b/media-fonts/croscorefonts/croscorefonts-1.31.0-r2.ebuild
similarity index 100%
rename from media-fonts/croscorefonts/croscorefonts-1.31.0-r1.ebuild
rename to media-fonts/croscorefonts/croscorefonts-1.31.0-r2.ebuild
diff --git a/media-fonts/croscorefonts/croscorefonts-1.31.0.ebuild b/media-fonts/croscorefonts/croscorefonts-1.31.0.ebuild
index ffc7fde..c8503e3 100644
--- a/media-fonts/croscorefonts/croscorefonts-1.31.0.ebuild
+++ b/media-fonts/croscorefonts/croscorefonts-1.31.0.ebuild
@@ -1,8 +1,7 @@
 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
-# $Header: $
 
-EAPI=5
+EAPI="7"
 
 inherit font
 
@@ -18,11 +17,10 @@
 FONT_S="${S}"
 FONTDIR="/usr/share/fonts/croscore"
 
-
 # Only installs fonts
 RESTRICT="strip binchecks"
 
 src_install() {
-        # call src_install() in font.eclass.
+	# call src_install() in font.eclass.
 	font_src_install
 }
diff --git a/media-fonts/crosextrafonts-carlito/crosextrafonts-carlito-20130920-r1.ebuild b/media-fonts/crosextrafonts-carlito/crosextrafonts-carlito-20130920-r1.ebuild
new file mode 120000
index 0000000..3fc34e2
--- /dev/null
+++ b/media-fonts/crosextrafonts-carlito/crosextrafonts-carlito-20130920-r1.ebuild
@@ -0,0 +1 @@
+crosextrafonts-carlito-20130920.ebuild
\ No newline at end of file
diff --git a/media-fonts/crosextrafonts-carlito/crosextrafonts-carlito-20130920.ebuild b/media-fonts/crosextrafonts-carlito/crosextrafonts-carlito-20130920.ebuild
index 300bf18..ccb5a72 100644
--- a/media-fonts/crosextrafonts-carlito/crosextrafonts-carlito-20130920.ebuild
+++ b/media-fonts/crosextrafonts-carlito/crosextrafonts-carlito-20130920.ebuild
@@ -1,6 +1,7 @@
 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
-# $Header: $
+
+EAPI="7"
 
 inherit font
 
@@ -16,7 +17,6 @@
 FONT_S="${S}"
 FONTDIR="/usr/share/fonts/crosextra"
 
-
 # Only installs fonts
 RESTRICT="strip binchecks"
 
diff --git a/media-fonts/crosextrafonts/crosextrafonts-20130214-r1.ebuild b/media-fonts/crosextrafonts/crosextrafonts-20130214-r1.ebuild
new file mode 120000
index 0000000..fe600a2
--- /dev/null
+++ b/media-fonts/crosextrafonts/crosextrafonts-20130214-r1.ebuild
@@ -0,0 +1 @@
+crosextrafonts-20130214.ebuild
\ No newline at end of file
diff --git a/media-fonts/crosextrafonts/crosextrafonts-20130214.ebuild b/media-fonts/crosextrafonts/crosextrafonts-20130214.ebuild
index 9762310..66caf1d 100644
--- a/media-fonts/crosextrafonts/crosextrafonts-20130214.ebuild
+++ b/media-fonts/crosextrafonts/crosextrafonts-20130214.ebuild
@@ -1,6 +1,7 @@
 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
-# $Header: $
+
+EAPI="7"
 
 inherit font
 
@@ -16,11 +17,10 @@
 FONT_S="${S}"
 FONTDIR="/usr/share/fonts/crosextra"
 
-
 # Only installs fonts
 RESTRICT="strip binchecks"
 
 src_install() {
-        # call src_install() in font.eclass.
+	# call src_install() in font.eclass.
 	font_src_install
 }
diff --git a/media-fonts/ko-nanumfonts/ko-nanumfonts-3.20-r1.ebuild b/media-fonts/ko-nanumfonts/ko-nanumfonts-3.20-r1.ebuild
new file mode 120000
index 0000000..4da35ca
--- /dev/null
+++ b/media-fonts/ko-nanumfonts/ko-nanumfonts-3.20-r1.ebuild
@@ -0,0 +1 @@
+ko-nanumfonts-3.20.ebuild
\ No newline at end of file
diff --git a/media-fonts/ko-nanumfonts/ko-nanumfonts-3.20.ebuild b/media-fonts/ko-nanumfonts/ko-nanumfonts-3.20.ebuild
index 378e0e1..dfa3979 100644
--- a/media-fonts/ko-nanumfonts/ko-nanumfonts-3.20.ebuild
+++ b/media-fonts/ko-nanumfonts/ko-nanumfonts-3.20.ebuild
@@ -1,7 +1,7 @@
 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
-# $Header: $
-EAPI=5
+
+EAPI="7"
 
 inherit font
 
@@ -20,7 +20,6 @@
 FONT_S="${S}"
 FONTDIR="/usr/share/fonts/ko-nanum"
 
-
 # Only installs fonts
 RESTRICT="strip binchecks"
 
diff --git a/media-fonts/lohitfonts-cros/lohitfonts-cros-2.5.5-r1.ebuild b/media-fonts/lohitfonts-cros/lohitfonts-cros-2.5.5-r2.ebuild
similarity index 100%
rename from media-fonts/lohitfonts-cros/lohitfonts-cros-2.5.5-r1.ebuild
rename to media-fonts/lohitfonts-cros/lohitfonts-cros-2.5.5-r2.ebuild
diff --git a/media-fonts/lohitfonts-cros/lohitfonts-cros-2.5.5.ebuild b/media-fonts/lohitfonts-cros/lohitfonts-cros-2.5.5.ebuild
index fd76bce..acce319 100644
--- a/media-fonts/lohitfonts-cros/lohitfonts-cros-2.5.5.ebuild
+++ b/media-fonts/lohitfonts-cros/lohitfonts-cros-2.5.5.ebuild
@@ -1,8 +1,8 @@
 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
-# $Header: $
 
-EAPI=5
+EAPI="7"
+
 inherit font
 
 DESCRIPTION="6 Lohit fonts for Indic scripts"
@@ -18,7 +18,6 @@
 FONT_S="${S}"
 FONTDIR="/usr/share/fonts/lohit-cros"
 
-
 # Only installs fonts
 RESTRICT="strip binchecks"
 
diff --git a/media-fonts/noto-cjk/Manifest b/media-fonts/noto-cjk/Manifest
index 18223cb..00431132 100644
--- a/media-fonts/noto-cjk/Manifest
+++ b/media-fonts/noto-cjk/Manifest
@@ -1 +1 @@
-DIST noto-cjk-20190409.tar.bz2 96491715 BLAKE2B 476dfa6c34ad474767db0e4b6cbd00324c54b504a26ab6a91323a0c3415ba87afa4817903de7e66af71f7bc7be00bb242b541f92826ac3e4a29d11a52cb8bedd SHA512 4eaa1633434ad611ce836866c146830338cd69683c7f62e5da798b7bac52bd21d6f79c0580e6a6b56b0d6c6ad4ba8ec550ca07ead95885fcb928de8027885aca
+DIST noto-cjk-20210501.tar.bz2 96312734 BLAKE2B 5ccafeee006311805d7480b3a2a9848de476e1a998c271eadf599f36da70c75da034bcce7221a8cb37e12abfb7fa9b2ac3c6c575ac3dc229fb99c4f5ed6bf198 SHA512 85d7550e8d73b168828d60e63ea348dd2e9075bb791be973fb3d44873bd21a7b227aa462fb940145076692efb4647cbe9688c42a25e32f838d10971ccab92017
diff --git a/media-fonts/noto-cjk/noto-cjk-20190409-r1.ebuild b/media-fonts/noto-cjk/noto-cjk-20190409-r1.ebuild
deleted file mode 120000
index 761789b..0000000
--- a/media-fonts/noto-cjk/noto-cjk-20190409-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-noto-cjk-20190409.ebuild
\ No newline at end of file
diff --git a/media-fonts/noto-cjk/noto-cjk-20190409.ebuild b/media-fonts/noto-cjk/noto-cjk-20190409.ebuild
deleted file mode 100644
index 3c62007..0000000
--- a/media-fonts/noto-cjk/noto-cjk-20190409.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-EAPI="5"
-
-inherit font
-
-DESCRIPTION="Noto Pan CJK fonts developed by Adobe"
-SRC_URI="http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/${P}.tar.bz2"
-
-LICENSE="OFL-1.1"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-FONT_SUFFIX="ttc"
-FONT_S="${S}"
-FONTDIR="/usr/share/fonts/notocjk"
-
-
-# Only installs fonts
-RESTRICT="strip binchecks"
-
-src_install() {
-	# call src_install() in font.eclass.
-	font_src_install
-}
diff --git a/media-fonts/noto-cjk/noto-cjk-20210501-r2.ebuild b/media-fonts/noto-cjk/noto-cjk-20210501-r2.ebuild
new file mode 120000
index 0000000..6779423
--- /dev/null
+++ b/media-fonts/noto-cjk/noto-cjk-20210501-r2.ebuild
@@ -0,0 +1 @@
+noto-cjk-20210501.ebuild
\ No newline at end of file
diff --git a/media-fonts/noto-cjk/noto-cjk-20210501.ebuild b/media-fonts/noto-cjk/noto-cjk-20210501.ebuild
new file mode 100644
index 0000000..d024f6b
--- /dev/null
+++ b/media-fonts/noto-cjk/noto-cjk-20210501.ebuild
@@ -0,0 +1,26 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit font
+
+DESCRIPTION="Noto Pan CJK fonts developed by Adobe"
+SRC_URI="http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/${P}.tar.bz2"
+
+LICENSE="OFL-1.1"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+FONT_SUFFIX="ttc"
+FONT_S="${S}"
+FONTDIR="/usr/share/fonts/notocjk"
+
+# Only installs fonts
+RESTRICT="strip binchecks"
+
+src_install() {
+	# call src_install() in font.eclass.
+	font_src_install
+}
diff --git a/media-fonts/robotofonts/robotofonts-2.132-r1.ebuild b/media-fonts/robotofonts/robotofonts-2.132-r2.ebuild
similarity index 100%
rename from media-fonts/robotofonts/robotofonts-2.132-r1.ebuild
rename to media-fonts/robotofonts/robotofonts-2.132-r2.ebuild
diff --git a/media-fonts/robotofonts/robotofonts-2.132.ebuild b/media-fonts/robotofonts/robotofonts-2.132.ebuild
index f914734..d035be1 100644
--- a/media-fonts/robotofonts/robotofonts-2.132.ebuild
+++ b/media-fonts/robotofonts/robotofonts-2.132.ebuild
@@ -1,7 +1,7 @@
 # Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
-# $Header: $
-EAPI="5"
+
+EAPI="7"
 
 inherit font
 
@@ -17,7 +17,6 @@
 FONT_S="${S}"
 FONTDIR="/usr/share/fonts/roboto"
 
-
 # Only installs fonts
 RESTRICT="strip binchecks"
 
diff --git a/media-fonts/tibt-jomolhari/tibt-jomolhari-0.0.3c-r1.ebuild b/media-fonts/tibt-jomolhari/tibt-jomolhari-0.0.3c-r1.ebuild
new file mode 120000
index 0000000..c0c82d6
--- /dev/null
+++ b/media-fonts/tibt-jomolhari/tibt-jomolhari-0.0.3c-r1.ebuild
@@ -0,0 +1 @@
+tibt-jomolhari-0.0.3c.ebuild
\ No newline at end of file
diff --git a/media-fonts/tibt-jomolhari/tibt-jomolhari-0.0.3c.ebuild b/media-fonts/tibt-jomolhari/tibt-jomolhari-0.0.3c.ebuild
index 8f99374..f9caaf7 100644
--- a/media-fonts/tibt-jomolhari/tibt-jomolhari-0.0.3c.ebuild
+++ b/media-fonts/tibt-jomolhari/tibt-jomolhari-0.0.3c.ebuild
@@ -1,6 +1,7 @@
 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
-# $Header: $
+
+EAPI="7"
 
 inherit font
 
@@ -22,6 +23,6 @@
 RESTRICT="strip binchecks"
 
 src_install() {
-        # call src_install() in font.eclass.
-        font_src_install
+	# call src_install() in font.eclass.
+	font_src_install
 }
diff --git a/media-gfx/deqp-runner/Manifest b/media-gfx/deqp-runner/Manifest
index 220c9aa..d275461 100644
--- a/media-gfx/deqp-runner/Manifest
+++ b/media-gfx/deqp-runner/Manifest
@@ -1 +1 @@
-DIST deqp-runner-0.3.0.crate 25835 BLAKE2B 661b391d23e84f3fa62f2c90eceb72470f4cf202e62fa9364d0dec214d94ab25aa3025e47110a2db95d208eaaf3569954058b97c9d8d5624ec799dc6a9d00d93 SHA512 c2abe8ffafa100f2b3bb5eba515670e45cd1a209159e522088db8b1b95d982af1abb9453c5bfc982293351c8bbda32d0a54dad14e3042c9b73619c97eb8c0eb1
+DIST deqp-runner-0.6.5.crate 44749 BLAKE2B 90fdba47ad5268fb95e1bb69b04edda03f696cc1b33882fc7c4e4a54f683ba2b2b2103ca248e7b099e203a34df15973a1b75bcf48c3ac91c19ccd7fc4c2ee558 SHA512 705478d32e49f27a135a9e46bdd6ec54a2b0f073f283b9567445f240adaecc64532bd5e07242de1b5cf9cc96aeb6adb92ab6545ac1ddd2dce05cfe856e99c977
diff --git a/media-gfx/deqp-runner/deqp-runner-0.3.0.ebuild b/media-gfx/deqp-runner/deqp-runner-0.3.0.ebuild
deleted file mode 100644
index ea322ff..0000000
--- a/media-gfx/deqp-runner/deqp-runner-0.3.0.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_RUST_REMOVE_DEV_DEPS=1
-
-inherit cros-rust
-
-DESCRIPTION="A VK-GL-CTS/dEQP wrapper program to parallelize it across CPUs and report results against a baseline."
-HOMEPAGE="https://gitlab.freedesktop.org/anholt/deqp-runner"
-SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
-
-LICENSE="MIT"
-SLOT="0/${PR}"
-KEYWORDS="*"
-
-DEPEND="
-	=dev-rust/anyhow-1*:=
-	>=dev-rust/criterion-0.3.0:= <dev-rust/criterion-0.4.0
-	>=dev-rust/lazy_static-1.4:= <dev-rust/lazy_static-2.0
-	>=dev-rust/rand-0.7.3:= <dev-rust/rand-0.8
-	>=dev-rust/rayon-1.5.0:= <dev-rust/rayon-2.0.0
-	=dev-rust/regex-1*:=
-	>=dev-rust/stderrlog-0.4:= <dev-rust/stderrlog-0.6
-	=dev-rust/structopt-0.3*:=
-	>=dev-rust/thread-id-3.3.0:= <dev-rust/thread-id-4.0
-	>=dev-rust/timeout-readwrite-0.3.1:= <dev-rust/timeout-readwrite-0.4
-"
-
-src_compile() {
-	ecargo_build
-}
-
-src_install() {
-	local build_dir="$(cros-rust_get_build_dir)"
-
-	dobin "${build_dir}/deqp-runner"
-}
diff --git a/media-gfx/deqp-runner/deqp-runner-0.6.5.ebuild b/media-gfx/deqp-runner/deqp-runner-0.6.5.ebuild
new file mode 100644
index 0000000..f9232b1
--- /dev/null
+++ b/media-gfx/deqp-runner/deqp-runner-0.6.5.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_RUST_REMOVE_DEV_DEPS=1
+
+inherit cros-rust
+
+DESCRIPTION="A VK-GL-CTS/dEQP wrapper program to parallelize it across CPUs and report results against a baseline."
+HOMEPAGE="https://gitlab.freedesktop.org/anholt/deqp-runner"
+SRC_URI="https://crates.io/api/v1/crates/${PN}/${PV}/download -> ${P}.crate"
+
+LICENSE="MIT"
+SLOT="0/${PR}"
+KEYWORDS="*"
+
+DEPEND="
+	=dev-rust/anyhow-1*:=
+	>=dev-rust/crossbeam-utils-0.8:= <dev-rust/crossbeam-utils-0.9
+	>=dev-rust/flate2-1.0.18:= <dev-rust/flate2-2
+	=dev-rust/junit-report-0.4*:=
+	>=dev-rust/lazy_static-1.4:= <dev-rust/lazy_static-2.0
+	>=dev-rust/log-0.4:=
+	>=dev-rust/rand-0.7.3:= <dev-rust/rand-0.8
+	>=dev-rust/rayon-1.5.0:= <dev-rust/rayon-2.0.0
+	=dev-rust/regex-1*:=
+	>=dev-rust/roxmltree-0.13.0:= <dev-rust/roxmltree-0.14
+	>=dev-rust/stderrlog-0.4:= <dev-rust/stderrlog-0.6
+	=dev-rust/structopt-0.3*:=
+	>=dev-rust/thread-id-3.3.0:= <dev-rust/thread-id-4.0
+	>=dev-rust/timeout-readwrite-0.3.1:= <dev-rust/timeout-readwrite-0.4
+"
+
+src_compile() {
+	ecargo_build
+}
+
+src_install() {
+	local build_dir="$(cros-rust_get_build_dir)"
+
+	dobin "${build_dir}/deqp-runner"
+}
diff --git a/media-gfx/deqp/Manifest b/media-gfx/deqp/Manifest
index cb2dac2..8c379f8 100644
--- a/media-gfx/deqp/Manifest
+++ b/media-gfx/deqp/Manifest
@@ -1,5 +1,5 @@
-DIST SPIRV-Headers-842ec90674627ed2ffef609e3cd79d1562eded01.tar.gz 369973 BLAKE2B c9e790bcad6c4f0a7123cc0f88f0ea8df653bbb13b553813423f026917b539e51c1d3bd1a95dbde9d19096cc5218200d56d7d0ef1dec2dcf4aff0e83bfbe8e01 SHA512 5fd895b8feb510eddab73b23584fc38244e6b3d8cce985e7a7edac7db803a9523e6a7ef6a561b7a788687088966cdbf861825219cd11725bdd734de86445f36c
-DIST SPIRV-Tools-2c0111e6eba779cf30e8c7f5a733ea0762895ba0.tar.gz 1532938 BLAKE2B dcadd0bfb511f292881dd0d14fc3d7e5de412e9629969993fe0ea7ca21885abb041ad6e1487d62cf925a5ca2d2b7c1aa5d70ce43bf9c4013de2fdd414b3cf17c SHA512 fa58797b3e3eac9e154a61cc09ac14ac7a303e83f5f5ba0972bc2d62b5733cc1b5edc6a11bd1d12ea11235d91229dc166eb9ac5557244cb4a54700d1c9530c73
-DIST amber-62ef3e4e056d80f848baadee745cc176f6252cc3.tar.gz 298771 BLAKE2B 9948b946442ab4bc298e590ac02e58759d1104172fbf27d3519244faf9ccd3b8bfda024bc056a003cf5f32648f9dd931c62a0696b3627c40cc85f763b4ac95ff SHA512 81a4e19cc2b7dba46d4dead0c5d31fb497a6ded130a9e380e2a93a82e2235b9cb7156771e34025f8784abee825e8d44315f37046ac30119c7a411373ef9f61d7
-DIST deqp-a3d4f2bdc5414efa20b0288e1bf75a4c1bd758c0.tar.gz 23229333 BLAKE2B d8f61c71dde2fa7db478b2f54ca0a81618b11ff2ece1e125f6d9fa43c0fb98b1db1b4b8605c956d14c25a31a015378d1cd6bc4acbd7aa703cf68607dc6b78650 SHA512 f3043e1f8578177856fdac565b49ae43ab166a990f55590fc94090eb7f4cacaccc09f998dd9235ac9c399b7a8d5e7dcd38033db62a51beba3a1e6bdc1b59cfcd
-DIST glslang-1ff0c181bb37b06371e2ffa2810d473c5e01c9b7.tar.gz 3110633 BLAKE2B 027e0a9f9a2442d21c54ea8ad4d93707a22dd8464a2a1231ea9cd95bb61f4863114273d1496ebc08ab557dc5116e2e1018e26d22769905fd7b8c39109243b351 SHA512 f35324d80c1c8b7250583dbbacf4b326d2286e92a90ca12ba9592cebf3eecb78014b19bcd3bcfefe5645a5a717c0eab96145747149dc1067fcf5a9fcf4ed8402
+DIST SPIRV-Headers-104ecc356c1bea4476320faca64440cd1df655a3.tar.gz 395873 BLAKE2B 3f4cb173ae254b6e661cc84937f8b625360e8e7bac4af9744fa70556cd205445635ef0de4af98dcbf0fbf9214cf960200cc890c350691501a50f0d25aaf0a58a SHA512 1e3d7d39c3ecb65308aad8b5cbb681bb2562de1550e3b7b37122a9fffdd8798a192b50c3dbe8228ddede62dec7712e3172e57cf944b001ac3f0342afc4993fb8
+DIST SPIRV-Tools-cd590fa3341284cd6d1ee82366155786cfd44c96.tar.gz 2587002 BLAKE2B 5eb0773138d7de2e66d147d0ad925ded7c3ff35c21d82a1d49ebc1d2971bcc1a4eff5dc0b7b0b6952f09bd74a6f3e53f6043615be0cdf7c3334e39f7d604b28a SHA512 9de9a7675e313e7c46fe5e95c97d62e895057d1a80a2efba29c5345165ae12691a86e6d4c091f28e02f92020f971afb61189ac393e295e2c987127a267ae614b
+DIST amber-4d0115cccfcb3b73d20b6513b1c40748e6403c50.tar.gz 506325 BLAKE2B 5998b99ad98a600916c36a1f834e0674223802695bd0b184c604a56ae014880d3fb37d9a1250bbd91f4a0f448415639e2067d07ca9cce753e71dd01777a246f9 SHA512 fec9dc2b7b44fbc9ac91f09681bac3d3d107dc0e16704cf1642e4d8493fc66848cc70141e3d699b79eb9e3b73fb101ca12c21d7c24b70194f10bf22380f9c14c
+DIST deqp-e58b0b2e5075855482dc7d9991b0db35f9afe0c4.tar.gz 30171529 BLAKE2B e2a026f7484532938d7f2d9068684b4d960e5d59e5c486f2436394adcb6317c269e6496705467afc6d1398809877ece1386c1368090e86818ad3c1f58dbc7ba8 SHA512 7dc8e11663f9332a651583319f83d87003c4f5e87a971da231d78cc3ed89117071664a530869088572a26973f5f1788d7da6aa462a6d5e391f7b4eaf4b3b0f04
+DIST glslang-ffccefddfd9a02ec0c0b6dd04ef5e1042279c97f.tar.gz 3289223 BLAKE2B 875007252c2f2a6df8bfd6140b24458a8e9606109d4595c4c92460f99477a33c422c8e7796c73a4a68ae7ca82b0aa5630d14f1751f2c041a94ffdc69ed0f543b SHA512 772259225073331607c4c371f49851e51831c03c2121e51166319c99f3490f1e3a54f8573e01c40acdec54889d614e9ad762bfa2b999e2917ee58a26c8d0a4bf
diff --git a/media-gfx/deqp/deqp-2020.01.22-r1.ebuild b/media-gfx/deqp/deqp-2020.01.22-r1.ebuild
deleted file mode 100644
index 52988a2..0000000
--- a/media-gfx/deqp/deqp-2020.01.22-r1.ebuild
+++ /dev/null
@@ -1,153 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-CMAKE_MAKEFILE_GENERATOR="ninja"
-
-inherit cmake-utils cros-sanitizers
-
-DESCRIPTION="drawElements Quality Program - an OpenGL ES testsuite"
-HOMEPAGE="https://android.googlesource.com/platform/external/deqp"
-
-# This corresponds to a commit near ToT.
-MY_DEQP_COMMIT='a3d4f2bdc5414efa20b0288e1bf75a4c1bd758c0'
-
-# To uprev deqp, follow these commands:
-# wget https://android.googlesource.com/platform/external/deqp/+archive/${MY_DEQP_COMMIT}.tar.gz
-# gsutil cp -a public-read deqp-${MY_DEQP_COMMIT}.tar.gz gs://chromeos-localmirror/distfiles/
-
-# When building the Vulkan CTS, dEQP requires that certain external
-# dependencies be unpacked into the source tree. See ${S}/external/fetch_sources.py
-# in the dEQP for the required dependencies. Upload these tarballs to the ChromeOS mirror too and
-# update the manifest.
-MY_AMBER_COMMIT='62ef3e4e056d80f848baadee745cc176f6252cc3'
-MY_GLSLANG_COMMIT='1ff0c181bb37b06371e2ffa2810d473c5e01c9b7'
-MY_SPIRV_TOOLS_COMMIT='2c0111e6eba779cf30e8c7f5a733ea0762895ba0'
-MY_SPIRV_HEADERS_COMMIT='842ec90674627ed2ffef609e3cd79d1562eded01'
-
-SRC_URI="https://android.googlesource.com/platform/external/deqp/+archive/${MY_DEQP_COMMIT}.tar.gz -> deqp-${MY_DEQP_COMMIT}.tar.gz
-	https://github.com/KhronosGroup/glslang/archive/${MY_GLSLANG_COMMIT}.tar.gz -> glslang-${MY_GLSLANG_COMMIT}.tar.gz
-	https://github.com/KhronosGroup/SPIRV-Tools/archive/${MY_SPIRV_TOOLS_COMMIT}.tar.gz -> SPIRV-Tools-${MY_SPIRV_TOOLS_COMMIT}.tar.gz
-	https://github.com/KhronosGroup/SPIRV-Headers/archive/${MY_SPIRV_HEADERS_COMMIT}.tar.gz -> SPIRV-Headers-${MY_SPIRV_HEADERS_COMMIT}.tar.gz
-	https://github.com/google/amber/archive/${MY_AMBER_COMMIT}.tar.gz -> amber-${MY_AMBER_COMMIT}.tar.gz"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-vulkan"
-
-RDEPEND="
-	virtual/opengles
-	media-libs/minigbm
-	media-libs/libpng
-	vulkan? ( virtual/vulkan-icd )
-"
-
-DEPEND="${RDEPEND}
-	x11-drivers/opengles-headers
-	x11-libs/libX11
-"
-
-S="${WORKDIR}"
-
-src_unpack() {
-	default_src_unpack || die
-
-	mkdir -p external/{amber,glslang,spirv-tools,spirv-headers}
-	mv "amber-${MY_AMBER_COMMIT}" external/amber/src || die
-	mv "glslang-${MY_GLSLANG_COMMIT}" external/glslang/src || die
-	mv "SPIRV-Tools-${MY_SPIRV_TOOLS_COMMIT}" external/spirv-tools/src || die
-	mv "SPIRV-Headers-${MY_SPIRV_HEADERS_COMMIT}" external/spirv-headers/src || die
-}
-
-src_prepare() {
-	epatch "${FILESDIR}"/Fix-clang-compiler-error.patch
-	default
-}
-
-src_configure() {
-	sanitizers-setup-env
-
-	# See crbug.com/585712.
-	append-lfs-flags
-
-	local de_cpu=
-	case "${ARCH}" in
-		x86)   de_cpu='DE_CPU_X86';;
-		amd64) de_cpu='DE_CPU_X86_64';;
-		arm)   de_cpu='DE_CPU_ARM';;
-		arm64) de_cpu='DE_CPU_ARM_64';;
-		*) die "unknown ARCH '${ARCH}'";;
-	esac
-
-	# Tell cmake to not produce rpaths. crbug.com/585715.
-	local mycmakeargs=(
-		-DCMAKE_SKIP_RPATH=1
-		-DCMAKE_FIND_ROOT_PATH="${ROOT}"
-		-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER
-		-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY
-		-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY
-		-DDE_CPU="${de_cpu}"
-		-DDEQP_TARGET=surfaceless
-	)
-
-	# Undefine direct link to use runtime loading.
-	append-cxxflags "-UDEQP_EGL_DIRECT_LINK"
-	append-cxxflags "-UDEQP_GLES2_DIRECT_LINK"
-	append-cxxflags "-UEQP_GLES3_DIRECT_LINK"
-	append-cxxflags "-DQP_SUPPORT_PNG=1"
-
-	cmake-utils_src_configure
-}
-
-src_install() {
-	# dEQP requires that the layout of its installed files match the layout
-	# of its build directory. Otherwise the binaries cannot find the data
-	# files.
-	local deqp_dir="/usr/local/${PN}"
-
-	# Install module binaries
-	exeinto "${deqp_dir}/modules/egl"
-	doexe "${BUILD_DIR}/modules/egl/deqp-egl"
-	exeinto "${deqp_dir}/modules/gles2"
-	doexe "${BUILD_DIR}/modules/gles2/deqp-gles2"
-	exeinto "${deqp_dir}/modules/gles3"
-	doexe "${BUILD_DIR}/modules/gles3/deqp-gles3"
-	exeinto "${deqp_dir}/modules/gles31"
-	doexe "${BUILD_DIR}/modules/gles31/deqp-gles31"
-	if use vulkan; then
-		exeinto "${deqp_dir}/external/vulkancts/modules/vulkan"
-		doexe "${BUILD_DIR}/external/vulkancts/modules/vulkan/deqp-vk"
-	fi
-
-	# Install executors
-	exeinto "${deqp_dir}/execserver"
-	doexe "${BUILD_DIR}/execserver/execserver"
-	doexe "${BUILD_DIR}/execserver/execserver-client"
-	doexe "${BUILD_DIR}/execserver/execserver-test"
-	exeinto "${deqp_dir}/executor"
-	doexe "${BUILD_DIR}/executor/executor"
-
-	# Install data files
-	insinto "${deqp_dir}/modules/gles2"
-	doins -r "${BUILD_DIR}/modules/gles2/gles2"
-	insinto "${deqp_dir}/modules/gles3"
-	doins -r "${BUILD_DIR}/modules/gles3/gles3"
-	insinto "${deqp_dir}/modules/gles31"
-	doins -r "${BUILD_DIR}/modules/gles31/gles31"
-	if use vulkan; then
-		insinto "${deqp_dir}/external/vulkancts/modules/vulkan"
-		doins -r "${BUILD_DIR}/external/vulkancts/modules/vulkan/vulkan"
-	fi
-
-	# Install master control files
-	insinto "${deqp_dir}/master"
-	doins "android/cts/master/egl-master.txt"
-	doins "android/cts/master/gles2-master.txt"
-	doins "android/cts/master/gles3-master.txt"
-	doins "android/cts/master/gles31-master.txt"
-	if use vulkan; then
-		doins "android/cts/master/vk-master.txt"
-	fi
-}
diff --git a/media-gfx/deqp/deqp-2021.02.10-r3.ebuild b/media-gfx/deqp/deqp-2021.02.10-r3.ebuild
new file mode 100644
index 0000000..4294f86
--- /dev/null
+++ b/media-gfx/deqp/deqp-2021.02.10-r3.ebuild
@@ -0,0 +1,165 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+CMAKE_MAKEFILE_GENERATOR="ninja"
+
+inherit cmake-utils cros-sanitizers
+
+DESCRIPTION="drawElements Quality Program - an OpenGL ES testsuite"
+HOMEPAGE="https://android.googlesource.com/platform/external/deqp"
+
+# This corresponds to a commit near ToT.
+MY_DEQP_COMMIT='e58b0b2e5075855482dc7d9991b0db35f9afe0c4'
+
+# To uprev deqp, follow these commands:
+# wget https://android.googlesource.com/platform/external/deqp/+archive/${MY_DEQP_COMMIT}.tar.gz
+# gsutil cp -a public-read deqp-${MY_DEQP_COMMIT}.tar.gz gs://chromeos-localmirror/distfiles/
+
+# When building the Vulkan CTS, dEQP requires that certain external
+# dependencies be unpacked into the source tree. See ${S}/external/fetch_sources.py
+# in the dEQP for the required dependencies. Upload these tarballs to the ChromeOS mirror too and
+# update the manifest.
+MY_AMBER_COMMIT='4d0115cccfcb3b73d20b6513b1c40748e6403c50'
+MY_GLSLANG_COMMIT='ffccefddfd9a02ec0c0b6dd04ef5e1042279c97f'
+MY_SPIRV_TOOLS_COMMIT='cd590fa3341284cd6d1ee82366155786cfd44c96'
+MY_SPIRV_HEADERS_COMMIT='104ecc356c1bea4476320faca64440cd1df655a3'
+
+SRC_URI="https://android.googlesource.com/platform/external/deqp/+archive/${MY_DEQP_COMMIT}.tar.gz -> deqp-${MY_DEQP_COMMIT}.tar.gz
+	https://github.com/KhronosGroup/glslang/archive/${MY_GLSLANG_COMMIT}.tar.gz -> glslang-${MY_GLSLANG_COMMIT}.tar.gz
+	https://github.com/KhronosGroup/SPIRV-Tools/archive/${MY_SPIRV_TOOLS_COMMIT}.tar.gz -> SPIRV-Tools-${MY_SPIRV_TOOLS_COMMIT}.tar.gz
+	https://github.com/KhronosGroup/SPIRV-Headers/archive/${MY_SPIRV_HEADERS_COMMIT}.tar.gz -> SPIRV-Headers-${MY_SPIRV_HEADERS_COMMIT}.tar.gz
+	https://github.com/google/amber/archive/${MY_AMBER_COMMIT}.tar.gz -> amber-${MY_AMBER_COMMIT}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE="-vulkan"
+
+RDEPEND="
+	virtual/opengles
+	media-libs/minigbm
+	media-libs/libpng
+	vulkan? ( virtual/vulkan-icd )
+"
+
+DEPEND="${RDEPEND}
+	x11-drivers/opengles-headers
+	x11-libs/libX11
+"
+
+S="${WORKDIR}"
+
+src_unpack() {
+	default_src_unpack || die
+
+	mkdir -p external/{amber,glslang,spirv-tools,spirv-headers}
+	mv "amber-${MY_AMBER_COMMIT}" external/amber/src || die
+	mv "glslang-${MY_GLSLANG_COMMIT}" external/glslang/src || die
+	mv "SPIRV-Tools-${MY_SPIRV_TOOLS_COMMIT}" external/spirv-tools/src || die
+	mv "SPIRV-Headers-${MY_SPIRV_HEADERS_COMMIT}" external/spirv-headers/src || die
+}
+
+src_prepare() {
+	default
+}
+
+src_configure() {
+	sanitizers-setup-env
+
+	# See crbug.com/585712.
+	append-lfs-flags
+
+	local de_cpu=
+	case "${ARCH}" in
+		x86)   de_cpu='DE_CPU_X86';;
+		amd64) de_cpu='DE_CPU_X86_64';;
+		arm)   de_cpu='DE_CPU_ARM';;
+		arm64) de_cpu='DE_CPU_ARM_64';;
+		*) die "unknown ARCH '${ARCH}'";;
+	esac
+
+	# Tell cmake to not produce rpaths. crbug.com/585715.
+	local mycmakeargs=(
+		-DCMAKE_SKIP_RPATH=1
+		-DCMAKE_FIND_ROOT_PATH="${ROOT}"
+		-DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER
+		-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY
+		-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY
+		-DDE_CPU="${de_cpu}"
+		-DDEQP_TARGET=surfaceless
+	)
+
+	# Undefine direct link to use runtime loading.
+	append-cxxflags "-UDEQP_EGL_DIRECT_LINK"
+	append-cxxflags "-UDEQP_GLES2_DIRECT_LINK"
+	append-cxxflags "-UEQP_GLES3_DIRECT_LINK"
+	append-cxxflags "-DQP_SUPPORT_PNG=1"
+
+	cmake-utils_src_configure
+}
+
+src_install() {
+	# dEQP requires that the layout of its installed files match the layout
+	# of its build directory. Otherwise the binaries cannot find the data
+	# files.
+	local deqp_dir="/usr/local/${PN}"
+
+	# Install module binaries
+	exeinto "${deqp_dir}/modules/egl"
+	doexe "${BUILD_DIR}/modules/egl/deqp-egl"
+	exeinto "${deqp_dir}/modules/gles2"
+	doexe "${BUILD_DIR}/modules/gles2/deqp-gles2"
+	exeinto "${deqp_dir}/modules/gles3"
+	doexe "${BUILD_DIR}/modules/gles3/deqp-gles3"
+	exeinto "${deqp_dir}/modules/gles31"
+	doexe "${BUILD_DIR}/modules/gles31/deqp-gles31"
+	if use vulkan; then
+		exeinto "${deqp_dir}/external/vulkancts/modules/vulkan"
+		doexe "${BUILD_DIR}/external/vulkancts/modules/vulkan/deqp-vk"
+	fi
+
+	# Install executors
+	exeinto "${deqp_dir}/execserver"
+	doexe "${BUILD_DIR}/execserver/execserver"
+	doexe "${BUILD_DIR}/execserver/execserver-client"
+	doexe "${BUILD_DIR}/execserver/execserver-test"
+	exeinto "${deqp_dir}/executor"
+	doexe "${BUILD_DIR}/executor/executor"
+	doexe "${BUILD_DIR}/executor/testlog-to-xml"
+
+	# Install data files
+	insinto "${deqp_dir}/modules/gles2"
+	doins -r "${BUILD_DIR}/modules/gles2/gles2"
+	insinto "${deqp_dir}/modules/gles3"
+	doins -r "${BUILD_DIR}/modules/gles3/gles3"
+	insinto "${deqp_dir}/modules/gles31"
+	doins -r "${BUILD_DIR}/modules/gles31/gles31"
+	if use vulkan; then
+		insinto "${deqp_dir}/external/vulkancts/modules/vulkan"
+		doins -r "${BUILD_DIR}/external/vulkancts/modules/vulkan/vulkan"
+	fi
+	insinto "${deqp_dir}"
+	doins -r "doc/testlog-stylesheet"
+
+	# Install master control files (deprecated location)
+	insinto "${deqp_dir}/master"
+	doins "android/cts/master/egl-master.txt"
+	doins "android/cts/master/gles2-master.txt"
+	doins "android/cts/master/gles3-master.txt"
+	doins "android/cts/master/gles31-master.txt"
+	if use vulkan; then
+		doins "android/cts/master/vk-master.txt"
+	fi
+
+	# Install caselists
+	insinto "${deqp_dir}/caselists"
+	newins "android/cts/master/egl-master.txt" "egl.txt"
+	newins "android/cts/master/gles2-master.txt" "gles2.txt"
+	newins "android/cts/master/gles3-master.txt" "gles3.txt"
+	newins "android/cts/master/gles31-master.txt" "gles31.txt"
+	if use vulkan; then
+		newins "android/cts/master/vk-master.txt" "vk.txt"
+	fi
+}
diff --git a/media-gfx/deqp/update.sh b/media-gfx/deqp/update.sh
index 0c64cab..066b404 100644
--- a/media-gfx/deqp/update.sh
+++ b/media-gfx/deqp/update.sh
@@ -17,7 +17,7 @@
 
 for module in "${!git_repos[@]}"; do
     # Pull the git sha1 out of fetch_sources.py
-    revision=$(PYTHONPATH=$deqp_repo/external python -c "import fetch_sources; \
+    revision=$(PYTHONPATH=$deqp_repo/external python2 -c "import fetch_sources; \
 	print [p for p in fetch_sources.PACKAGES if p.baseDir == '$module'.lower()][0].revision")
 
     var=${module/-/_}
diff --git a/media-gfx/sane-airscan/Manifest b/media-gfx/sane-airscan/Manifest
index f648469..bdda6b1 100644
--- a/media-gfx/sane-airscan/Manifest
+++ b/media-gfx/sane-airscan/Manifest
@@ -1 +1 @@
-DIST sane-airscan-0.99.20.tar.gz 191222 BLAKE2B 4b09fde6221d8cf9d39c11a8cf548a7477abfc7ae8a145c0f326a92904676a4864e891143c8d442d6ad329de23cdcb618b222ae39319a9c91380a72f4531bbaf SHA512 6f4c044ab2ad3633e7a5c5f53e5be1764859e795e6f1868d28d20801876e192dcc56aa64565c3fc7fd66c8b0ec1549eaaf78881e3a284cc5b08904e9e5b23027
+DIST sane-airscan-0.99.26.tar.gz 196488 BLAKE2B 5c4529f34ec5bf6a184cb06936367e3e8766168104422d5a10342e55e41be46ac6a5ef07b789bb5fca57f850566e74bb79ec52f334b89b3f32c393daa79ff956 SHA512 92ea7861e38b389bd7073a0eabee09bdf806250993a85715a819c1fd5fdf0a617c13ecaca9198d3add2aa4e70ef89bcf2f954b9f3e68413f5b19e78962254922
diff --git a/media-gfx/sane-airscan/files/airscan.conf b/media-gfx/sane-airscan/files/airscan.conf
index d25188a..9fa2b27 100644
--- a/media-gfx/sane-airscan/files/airscan.conf
+++ b/media-gfx/sane-airscan/files/airscan.conf
@@ -51,5 +51,5 @@
 #
 #   enable = true|false ; enable or disable console logging
 [debug]
-#trace = ~/airscan/trace
+#trace = /run/ippusb/airscan/trace
 #enable = true
diff --git a/media-gfx/sane-airscan/files/fuzzers.owners b/media-gfx/sane-airscan/files/fuzzers.owners
index 060b5bf..65b6e0c 100644
--- a/media-gfx/sane-airscan/files/fuzzers.owners
+++ b/media-gfx/sane-airscan/files/fuzzers.owners
@@ -1,2 +1 @@
 bmgordon@chromium.org
-jschettler@chromium.org
diff --git a/media-gfx/sane-airscan/files/sane-airscan-0.9.26-add_justify.patch b/media-gfx/sane-airscan/files/sane-airscan-0.9.26-add_justify.patch
new file mode 100644
index 0000000..4a9cb95
--- /dev/null
+++ b/media-gfx/sane-airscan/files/sane-airscan-0.9.26-add_justify.patch
@@ -0,0 +1,285 @@
+diff --git a/airscan-devops.c b/airscan-devops.c
+index e0d99e4..761090a 100644
+--- a/airscan-devops.c
++++ b/airscan-devops.c
+@@ -11,7 +11,6 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-
+ /* Static variables */
+ static const SANE_Range devopt_percent_range = {
+     .min = SANE_FIX(-100.0),
+@@ -379,6 +378,15 @@ devopt_rebuild_opt_desc (devopt *opt)
+     desc->type = SANE_TYPE_BOOL;
+     desc->size = sizeof(SANE_Bool);
+     desc->cap = SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT | SANE_CAP_EMULATED;
++
++    /* OPT_JUSTIFICATION */
++    desc = &opt->desc[OPT_JUSTIFICATION_X];
++    desc->name = SANE_NAME_ADF_JUSTIFICATION_X;
++    desc->title = SANE_TITLE_ADF_JUSTIFICATION_X;
++    desc->desc = SANE_DESC_ADF_JUSTIFICATION_X;
++    desc->type = SANE_TYPE_STRING;
++    desc->size = sane_string_array_max_strlen(opt->sane_sources) + 1;
++    desc->cap = SANE_CAP_SOFT_DETECT;
+ }
+ 
+ /* Update scan parameters, according to the currently set
+@@ -617,6 +625,7 @@ devopt_set_defaults (devopt *opt)
+     opt->highlight = SANE_FIX(100.0);
+     opt->gamma = SANE_FIX(1.0);
+ 
++
+     devopt_rebuild_opt_desc(opt);
+     devopt_update_params(opt);
+ }
+@@ -761,6 +770,10 @@ devopt_get_option (devopt *opt, SANE_Int option, void *value)
+         *(SANE_Bool*)value = opt->negative;
+         break;
+ 
++    case OPT_JUSTIFICATION_X:
++        strcpy(value, id_justification_x_sane_name(opt->caps.justification_x));
++        break;
++
+     default:
+         status = SANE_STATUS_INVAL;
+     }
+diff --git a/airscan-escl.c b/airscan-escl.c
+index 32cb96e..35eb970 100644
+--- a/airscan-escl.c
++++ b/airscan-escl.c
+@@ -342,6 +342,29 @@ escl_devcaps_source_parse_setting_profiles (xml_rd *xml, devcaps_source *src)
+ }
+ 
+ 
++/* Parse ADF justification
++ */
++static void
++escl_devcaps_parse_justification (xml_rd *xml, unsigned int *val) {
++    xml_rd_enter(xml); 
++
++    *val = SANE_CAP_INACTIVE;
++    for (; !xml_rd_end(xml); xml_rd_next(xml)) {
++        /* Currently only care about width justification */
++        if(xml_rd_node_name_match(xml, "pwg:XImagePosition")){
++            const char *v = xml_rd_node_value(xml);
++            if (!strcmp(v, "Right")){
++                *val = ID_JUSTIFICATION_X_RIGHT;
++            } else if (!strcmp(v, "Center")) {
++                *val = ID_JUSTIFICATION_X_CENTER;
++            } else if (!strcmp(v, "Left")) {
++                *val = ID_JUSTIFICATION_X_LEFT;
++            }
++        }
++    }
++    xml_rd_leave(xml);
++}
++
+ /* Parse source capabilities. Returns NULL on success, error string otherwise
+  */
+ static error
+@@ -461,6 +484,7 @@ escl_devcaps_parse (proto_handler_escl *escl,
+     bool      quirk_canon_iR2625_2630 = false;
+     ID_SOURCE id_src;
+     bool      src_ok = false;
++    unsigned int justification_x_val = -1;
+ 
+     /* Parse capabilities XML */
+     err = xml_rd_begin(&xml, xml_text, xml_len, NULL);
+@@ -512,6 +536,12 @@ escl_devcaps_parse (proto_handler_escl *escl,
+                         "scan:AdfDuplexInputCaps")) {
+                     err = escl_devcaps_source_parse(xml,
+                         &caps->src[ID_SOURCE_ADF_DUPLEX]);
++                } 
++                else if (xml_rd_node_name_match(xml, "scan:Justification")) {
++                    escl_devcaps_parse_justification(xml, &justification_x_val);
++                    if (justification_x_val != -1) {
++                        caps->justification_x = justification_x_val;
++                    } 
+                 }
+                 xml_rd_next(xml);
+             }
+@@ -558,6 +588,7 @@ escl_devcaps_parse (proto_handler_escl *escl,
+             }
+         }
+     }
++  
+ 
+ DONE:
+     if (err != NULL) {
+diff --git a/airscan-id.c b/airscan-id.c
+index 271d5e5..c55573f 100644
+--- a/airscan-id.c
++++ b/airscan-id.c
+@@ -177,6 +177,36 @@ id_format_short_name (ID_FORMAT id)
+     return name ? name : mime;
+ }
+ 
++
++/******************** ID_JUSTIFICATION_X ********************/
++/* id_justification_x_sane_name_table represents ID_JUSTIFICATION_X to
++ * SANE name mapping
++ */
++static id_name_table id_justification_x_sane_name_table[] = {
++    {ID_JUSTIFICATION_X_LEFT,     OPTVAL_JUSTIFICATION_X_LEFT},
++    {ID_JUSTIFICATION_X_CENTER,   OPTVAL_JUSTIFICATION_X_CENTER},
++    {ID_JUSTIFICATION_X_RIGHT,    OPTVAL_JUSTIFICATION_X_RIGHT},
++    {SANE_CAP_INACTIVE,           OPTVAL_JUSTIFICATION_X_NONE}
++};
++
++/* id_justification_x_sane_name returns SANE name for the justification
++ * For unknown ID returns NULL
++ */
++const char*
++id_justification_x_sane_name (ID_JUSTIFICATION_X id)
++{
++    return id_name(id, id_justification_x_sane_name_table);
++}
++
++/* id_justification_x_by_sane_name returns ID_JUSTIFICATION_X by its SANE name
++ * For unknown name returns ID_JUSTIFICATION_UNKNOWN
++ */
++ID_JUSTIFICATION_X
++id_justification_x_by_sane_name (const char *name)
++{
++    return id_by_name(name, strcasecmp, id_justification_x_sane_name_table);
++}
++
+ /******************** PROTO_OP ********************/
+ /* proto_op_name_table represents PROTO_OP to its
+  * name mappind
+diff --git a/airscan-wsd.c b/airscan-wsd.c
+index 578f4a5..cc8ea52 100644
+--- a/airscan-wsd.c
++++ b/airscan-wsd.c
+@@ -578,6 +578,7 @@ wsd_devcaps_decode (const proto_ctx *ctx, devcaps *caps)
+ 
+     caps->units = 1000;
+     caps->protocol = ctx->proto->name;
++    caps->justification_x = SANE_CAP_INACTIVE;
+ 
+     err = wsd_devcaps_parse(wsd, caps, data->bytes, data->size);
+ 
+diff --git a/airscan.c b/airscan.c
+index 24c6e4d..63b18bb 100644
+--- a/airscan.c
++++ b/airscan.c
+@@ -120,7 +120,16 @@ void
+ sane_close (SANE_Handle handle)
+ {
+     device  *dev = (device*) handle;
+-
++    
++    //TODO: erase; temp for checking devcaps
++    log_debug(device_log_ctx(dev), "API: justifi called: start");
++    char justval[256] = ""; // TODO: fix :) 
++    device_get_option(dev, OPT_JUSTIFICATION_X, &justval);
++    log_debug(device_log_ctx(dev), "API: justifi called, value: ");
++    // if(justval == OPTVAL_JUSTIFICATION_X_NONE){
++        log_debug(device_log_ctx(dev), justval);
++    // }
++    
+     log_debug(device_log_ctx(dev), "API: sane_close(): called");
+ 
+     eloop_mutex_lock();
+diff --git a/airscan.h b/airscan.h
+index dae5810..0029108 100644
+--- a/airscan.h
++++ b/airscan.h
+@@ -81,6 +81,12 @@ typedef struct http_uri http_uri;
+ #define OUTER_STRUCT(member_p,struct_t,field)                            \
+     ((struct_t*)((char*)(member_p) - ((ptrdiff_t) &(((struct_t*) 0)->field))))
+ 
++/* Define option not included in saneopts */
++#define SANE_NAME_ADF_JUSTIFICATION_X       "adf-justification-x"
++#define SANE_TITLE_ADF_JUSTIFICATION_X      SANE_I18N("ADF Width Justification")
++#define SANE_DESC_ADF_JUSTIFICATION_X       SANE_I18N("Width justification options for ADF")
++
++
+ /******************** Circular Linked Lists ********************/
+ /* ll_node represents a linked data node.
+  * Data nodes are embedded into the corresponding data structures:
+@@ -718,6 +724,27 @@ id_source_sane_name (ID_SOURCE id);
+ ID_SOURCE
+ id_source_by_sane_name (const char *name);
+ 
++/* ID_JUSTIFICATION_X represents potential ADF justification
++ */
++typedef enum {
++    ID_JUSTIFICATION_X_LEFT,
++    ID_JUSTIFICATION_X_CENTER,
++    ID_JUSTIFICATION_X_RIGHT,
++
++    NUM_ID_JUSTIFICATION_X
++} ID_JUSTIFICATION_X;
++
++/* id_justification_x_sane_name returns SANE name for the width justification
++ * For unknown ID returns NULL
++ */
++const char* 
++id_justification_x_sane_name (ID_JUSTIFICATION_X id);
++
++/* id_justification_x_by_sane_name returns ID_JUSTIFICATION_X by its SANE name
++ */
++ID_JUSTIFICATION_X
++id_justification_x_by_sane_name (const char *name);
++
+ /* ID_COLORMODE represents color mode
+  */
+ typedef enum {
+@@ -2433,6 +2460,9 @@ enum {
+     OPT_GAMMA,
+     OPT_NEGATIVE,
+ 
++    /* Option specific to some ADF scans */
++    OPT_JUSTIFICATION_X,
++
+     /* Total count of options, computed by compiler */
+     NUM_OPTIONS
+ };
+@@ -2440,9 +2470,14 @@ enum {
+ /* String constants for certain SANE options values
+  * (missed from sane/sameopt.h)
+  */
+-#define OPTVAL_SOURCE_PLATEN      "Flatbed"
+-#define OPTVAL_SOURCE_ADF_SIMPLEX "ADF"
+-#define OPTVAL_SOURCE_ADF_DUPLEX  "ADF Duplex"
++#define OPTVAL_SOURCE_PLATEN        "Flatbed"
++#define OPTVAL_SOURCE_ADF_SIMPLEX   "ADF"
++#define OPTVAL_SOURCE_ADF_DUPLEX    "ADF Duplex"
++#define OPTVAL_JUSTIFICATION_X_LEFT   "Left"
++#define OPTVAL_JUSTIFICATION_X_CENTER "Center"
++#define OPTVAL_JUSTIFICATION_X_RIGHT  "Right"
++#define OPTVAL_JUSTIFICATION_X_NONE   "None"
++
+ 
+ /* Check if option belongs to image enhancement group
+  */
+@@ -2513,6 +2548,7 @@ typedef struct {
+     SANE_Range   res_range;              /* Resolutions range, in DPI */
+     SANE_Range   win_x_range_mm;         /* Window x range, in mm */
+     SANE_Range   win_y_range_mm;         /* Window y range, in mm */
++    
+ } devcaps_source;
+ 
+ /* Allocate devcaps_source
+@@ -2552,6 +2588,10 @@ typedef struct {
+ 
+     /* Sources */
+     devcaps_source *src[NUM_ID_SOURCE];  /* Missed sources are NULL */
++
++    /* ADF X Justification */
++    unsigned int justification_x;  /*Current ADF width justification*/
++
+ } devcaps;
+ 
+ /* Initialize Device Capabilities
+@@ -2595,6 +2635,7 @@ typedef struct {
+     SANE_Fixed             highlight;         /* 0.0 ... +100.0 */
+     SANE_Fixed             gamma;             /* Small positive value */
+     bool                   negative;          /* Flip black and white */
++
+ } devopt;
+ 
+ /* Initialize device options
diff --git a/media-gfx/sane-airscan/sane-airscan-0.99.20-r2.ebuild b/media-gfx/sane-airscan/sane-airscan-0.99.20-r2.ebuild
deleted file mode 120000
index 0b105e4..0000000
--- a/media-gfx/sane-airscan/sane-airscan-0.99.20-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-sane-airscan-0.99.20.ebuild
\ No newline at end of file
diff --git a/media-gfx/sane-airscan/sane-airscan-0.99.20.ebuild b/media-gfx/sane-airscan/sane-airscan-0.99.20.ebuild
deleted file mode 100644
index 2dccc32..0000000
--- a/media-gfx/sane-airscan/sane-airscan-0.99.20.ebuild
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit meson cros-fuzzer cros-sanitizers
-
-DESCRIPTION="eSCL and WSD SANE backend"
-HOMEPAGE="https://github.com/alexpevzner/sane-airscan"
-LICENSE="GPL-2"
-SLOT="0/${PVR}"
-KEYWORDS="*"
-IUSE="asan fuzzer"
-
-COMMON_DEPEND="
-	dev-libs/libxml2:=
-	media-gfx/sane-backends:=
-	media-libs/libjpeg-turbo:=
-	media-libs/libpng:=
-	net-dns/avahi:=
-	net-libs/libsoup:=
-"
-DEPEND="${COMMON_DEPEND}"
-RDEPEND="${COMMON_DEPEND}"
-
-# SHA-1 or tag will both work.
-GIT_REF="${PV}"
-SRC_URI="https://github.com/alexpevzner/sane-airscan/archive/${GIT_REF}.tar.gz -> ${PN}-${GIT_REF}.tar.gz"
-S="${WORKDIR}/${PN}-${GIT_REF}"
-
-FUZZERS=(
-	"fuzzer-query"
-	"fuzzer-uri"
-	"fuzzer-xml"
-)
-
-PATCHES=(
-	"${FILESDIR}/${PN}-0.9.20-noasan.patch"
-)
-
-src_configure() {
-	sanitizers-setup-env || die
-	fuzzer-setup-binary || die
-	meson_src_configure
-}
-
-src_compile() {
-	if use fuzzer; then
-		meson_src_compile "${FUZZERS[@]}"
-	else
-		meson_src_compile
-	fi
-}
-
-src_install() {
-	if ! use fuzzer; then
-		dobin "${BUILD_DIR}/airscan-discover"
-
-		exeinto "/usr/$(get_libdir)/sane"
-		doexe "${BUILD_DIR}/libsane-airscan.so.1"
-
-		insinto "/etc/sane.d"
-		newins "${FILESDIR}/airscan.conf" "airscan.conf"
-
-		insinto "/etc/sane.d/dll.d"
-		newins "${S}/dll.conf" "airscan.conf"
-	fi
-
-	# Safe to call even if the fuzzer isn't built because this won't do
-	# anything unless we have USE=fuzzer.
-	for fuzzer in "${FUZZERS[@]}"; do
-		# Rename fuzzers before install because the upstream target
-		# names ended up being different from our naming scheme.
-		local compat_name="airscan_${fuzzer#fuzzer-}_fuzzer"
-		mv "${BUILD_DIR}/${fuzzer}" "${BUILD_DIR}/${compat_name}"
-		fuzzer_install "${FILESDIR}/fuzzers.owners" \
-			"${BUILD_DIR}/${compat_name}"
-	done
-}
diff --git a/media-gfx/sane-airscan/sane-airscan-0.99.26-r2.ebuild b/media-gfx/sane-airscan/sane-airscan-0.99.26-r2.ebuild
new file mode 120000
index 0000000..859a71b
--- /dev/null
+++ b/media-gfx/sane-airscan/sane-airscan-0.99.26-r2.ebuild
@@ -0,0 +1 @@
+sane-airscan-0.99.26.ebuild
\ No newline at end of file
diff --git a/media-gfx/sane-airscan/sane-airscan-0.99.26.ebuild b/media-gfx/sane-airscan/sane-airscan-0.99.26.ebuild
new file mode 100644
index 0000000..ab6cc5a
--- /dev/null
+++ b/media-gfx/sane-airscan/sane-airscan-0.99.26.ebuild
@@ -0,0 +1,85 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit meson cros-fuzzer cros-sanitizers
+
+DESCRIPTION="eSCL and WSD SANE backend"
+HOMEPAGE="https://github.com/alexpevzner/sane-airscan"
+LICENSE="GPL-2"
+SLOT="0/${PVR}"
+KEYWORDS="*"
+IUSE="asan fuzzer"
+
+COMMON_DEPEND="
+	dev-libs/libxml2:=
+	media-gfx/sane-backends:=
+	media-libs/libjpeg-turbo:=
+	media-libs/libpng:=
+	net-dns/avahi:=
+	net-libs/libsoup:=
+"
+DEPEND="${COMMON_DEPEND}"
+RDEPEND="${COMMON_DEPEND}"
+
+# SHA-1 or tag will both work.
+GIT_REF="${PV}"
+SRC_URI="https://github.com/alexpevzner/sane-airscan/archive/${GIT_REF}.tar.gz -> ${PN}-${GIT_REF}.tar.gz"
+S="${WORKDIR}/${PN}-${GIT_REF}"
+
+FUZZERS=(
+	"fuzzer-query"
+	"fuzzer-uri"
+	"fuzzer-xml"
+)
+
+PATCHES=(
+	"${FILESDIR}/${PN}-0.9.20-noasan.patch"
+	"${FILESDIR}/${PN}-0.9.26-add_justify.patch"
+)
+
+src_configure() {
+	sanitizers-setup-env || die
+	fuzzer-setup-binary || die
+	meson_src_configure
+}
+
+src_compile() {
+	if use fuzzer; then
+		meson_src_compile "${FUZZERS[@]}"
+	else
+		meson_src_compile
+	fi
+}
+
+src_install() {
+	if ! use fuzzer; then
+		dobin "${BUILD_DIR}/airscan-discover"
+
+		exeinto "/usr/$(get_libdir)/sane"
+		doexe "${BUILD_DIR}/libsane-airscan.so.1"
+
+		insinto "/etc/sane.d"
+		newins "${FILESDIR}/airscan.conf" "airscan.conf"
+
+		insinto "/etc/sane.d/dll.d"
+		newins "${S}/dll.conf" "airscan.conf"
+	fi
+
+	# Safe to call even if the fuzzer isn't built because this won't do
+	# anything unless we have USE=fuzzer.
+	for fuzzer in "${FUZZERS[@]}"; do
+		# Rename fuzzers before install because the upstream target
+		# names ended up being different from our naming scheme.
+		local compat_name="airscan_${fuzzer#fuzzer-}_fuzzer"
+		mv "${BUILD_DIR}/${fuzzer}" "${BUILD_DIR}/${compat_name}"
+		fuzzer_install "${FILESDIR}/fuzzers.owners" \
+			"${BUILD_DIR}/${compat_name}"
+	done
+
+	# Include sane-airscan/airscan.h in header
+	mkdir "${BUILD_DIR}/sane-airscan"
+	cp "${S}/airscan.h" "${BUILD_DIR}/sane-airscan"
+	doheader -r "${BUILD_DIR}/sane-airscan"
+}
diff --git a/media-gfx/sane-backends/Manifest b/media-gfx/sane-backends/Manifest
index b0fca2f..bb39d2d 100644
--- a/media-gfx/sane-backends/Manifest
+++ b/media-gfx/sane-backends/Manifest
@@ -1 +1 @@
-DIST sane-backends-1.0.31.tar.gz 5731445 BLAKE2B d70691acbd3f5788a26bab6b35eeb243801b435272b57e3fa568127562ff57797452e396e6e5f058c33d3bce0f99b672542fb89bc8eb4d36cbe82ccc20b8f298 SHA512 d8ef05cc3aa9c4fa42c9241e1e61fc93e7959df3746a3a2cfaa6e4fb26dfd0911b4d3227b2da28852f8630fa17ad3432a1230a6f4425340e79a3b82ec5eaa9eb
+DIST sane-backends-1.0.32.tar.gz 7349442 BLAKE2B 8841542ffd520b38bbeb532eaae7cce803f0bd868cae7edc28d2138729dcffb5a2a0908b56c16c25ffbba539525331c12c259e1768e105de1bdd1419d29efe83 SHA512 416757d9a69bbc18678d1f16a024ba5a949c571204a68f36009d416be28723886ccea71daaa7da90d20eac9696cd44e567802d6c21c3fc5914b97213bbedb6d5
diff --git a/media-gfx/sane-backends/OWNERS b/media-gfx/sane-backends/OWNERS
index 904404e..fbeef67 100644
--- a/media-gfx/sane-backends/OWNERS
+++ b/media-gfx/sane-backends/OWNERS
@@ -1,3 +1,2 @@
 bmgordon@chromium.org
-jschettler@chromium.org
 skau@chromium.org
diff --git a/media-gfx/sane-backends/files/sane-backends-1.0.31-dll-load.patch b/media-gfx/sane-backends/files/sane-backends-1.0.31-dll-load.patch
deleted file mode 100644
index 66e33c7..0000000
--- a/media-gfx/sane-backends/files/sane-backends-1.0.31-dll-load.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-commit de903b84c49f80a973f48ea47e46e5e47a186b7e
-Author: Fletcher Woodruff <fletcherw@chromium.org>
-Date:   Mon Oct 12 16:22:40 2020 -0600
-
-    dll: fix memory leak in load
-    
-    In the case where we are unable to get a path for loading libs, and
-    instead just use LIBDIR, we set 'src = strdup(LIBDIR)'. However, we
-    never update orig_src to point to src before tokenizing the path with
-    strsep(), so the memory is never freed.
-    
-    Update load to always set orig_src to src so that we don't leak memory.
-
-diff --git a/backend/dll.c b/backend/dll.c
-index d78d409e8..61ba2f846 100644
---- a/backend/dll.c
-+++ b/backend/dll.c
-@@ -477,9 +477,6 @@ load (struct backend *be)
- 	  DBG (1, "load: malloc failed: %s\n", strerror (errno));
- 	  return SANE_STATUS_NO_MEM;
- 	}
--      if (orig_src)
--        free (orig_src);
--      orig_src = src;
-       snprintf (src, src_len, "%s%s%s", path, DIR_SEP, LIBDIR);
-     }
-   else
-@@ -494,6 +491,7 @@ load (struct backend *be)
-     }
-   DBG (3, "load: searching backend `%s' in `%s'\n", be->name, src);
- 
-+  orig_src = src;
-   dir = strsep (&src, DIR_SEP);
- 
-   while (dir)
diff --git a/media-gfx/sane-backends/files/sane-backends-1.0.31-epson2.patch b/media-gfx/sane-backends/files/sane-backends-1.0.31-epson2.patch
new file mode 100644
index 0000000..4167d69
--- /dev/null
+++ b/media-gfx/sane-backends/files/sane-backends-1.0.31-epson2.patch
@@ -0,0 +1,118 @@
+diff --git a/backend/epson2_usb.c b/backend/epson2_usb.c
+index 87830c6..d956efa 100644
+--- a/backend/epson2_usb.c
++++ b/backend/epson2_usb.c
+@@ -176,6 +176,13 @@ SANE_Word sanei_epson_usb_product_ids[] = {
+   0x8ca, /* L850 Series */
+   0x8cd, /* WF-R4640 Series, WF-R5690 Series */
+   0x8d0, /* PX-M350F, WF-M5690 Series */
++  0x1141, /*L3100 Series*/
++  0x1142, /*L3110 Series*/
++  0x110f, /*PX-M160T Series*/
++  0x1122, /*ET-2600 Series, ET-2610 Series, L3050 Series, L3060 Series,L395 Series,L396 Series */
++  0x1105, /*ET-2500 Series, L375 Series*/
++  0x1102, /*PX-048A Series, XP-230 Series,XP-235 Series*/
++  0x8d2,  /*L365 Series, L366 Series*/
+   0				/* last entry - this is used for devices that are specified
+ 				   in the config file as "usb <vendor> <product>" */
+ };
+diff --git a/doc/descriptions/epson2.desc b/doc/descriptions/epson2.desc
+index d1f3bed..ba1fe6b 100644
+--- a/doc/descriptions/epson2.desc
++++ b/doc/descriptions/epson2.desc
+@@ -3528,3 +3528,95 @@
+ :interface  "USB"
+ :usbid      "0x04b8" "0x08a7"
+ :status     :good
++
++
++:model      "L3100 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1141"
++:status     :complete
++
++:model      "L3110 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1142"
++:status     :complete
++
++:model      "PX-M160T Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x110f"
++:status     :complete
++
++:model      "ET-2600 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1122"
++:status     :complete
++
++:model      "ET-2610 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1122"
++:status     :complete
++
++:model      "L3050 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1122"
++:status     :complete
++
++:model      "L3060 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1122"
++:status     :complete
++
++:model      "L395 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1122"
++:status     :complete
++
++:model      "L396 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1122"
++:status     :complete
++
++:model      "ET-2500 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1105"
++:status     :complete
++
++:model      "L375 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1105"
++:status     :complete
++
++:model      "PX-048A Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1102"
++:status     :complete
++
++:model      "XP-230 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1102"
++:status     :complete
++
++:model      "XP-235 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1102"
++:status     :complete
++
++:model      "PX-049A Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1116"
++:status     :complete
++
++:model      "XP-240 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x1116"
++:status     :complete
++
++:model      "L365 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x08d2"
++:status     :complete
++
++:model      "L366 Series"
++:interface  "USB"
++:usbid      "0x04b8" "0x08d2"
++:status     :complete
++
diff --git a/media-gfx/sane-backends/files/sane-backends-1.0.31-free-string-options.patch b/media-gfx/sane-backends/files/sane-backends-1.0.31-free-string-options.patch
deleted file mode 100644
index ee9bcc0..0000000
--- a/media-gfx/sane-backends/files/sane-backends-1.0.31-free-string-options.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-commit 87a64cc6f403485641a07152699016c4e9fc2bd2
-Author: Fletcher Woodruff <fletcherw@chromium.org>
-Date:   Mon Oct 12 09:14:35 2020 -0600
-
-    test: free memory used for string options
-    
-    Inside Test_Device, track whether we've already called init_options().
-    If we have, don't call it again when calling sane_open() again.
-    
-    Add a function cleanup_options() which frees the memory used for these
-    options, and call it in sane_exit() if we previously called
-    init_options().
-    
-    Change Test_Devices to be initialized with calloc instead of malloc,
-    so that we can assume that uninitialized fields are NULL, and can safely
-    call free() on them unconditionally.
-    
-    This eliminates some larger memory leaks within the test backend.
-
-diff --git a/backend/test.c b/backend/test.c
-index a1e186ea3..251e89c26 100644
---- a/backend/test.c
-+++ b/backend/test.c
-@@ -320,6 +320,36 @@ check_handle (SANE_Handle handle)
-   return SANE_FALSE;
- }
- 
-+static void
-+cleanup_options (Test_Device * test_device)
-+{
-+  DBG (2, "cleanup_options: test_device=%p\n", (void *) test_device);
-+
-+  free(test_device->val[opt_mode].s);
-+  test_device->val[opt_mode].s = NULL;
-+
-+  free(test_device->val[opt_three_pass_order].s);
-+  test_device->val[opt_three_pass_order].s = NULL;
-+
-+  free(test_device->val[opt_scan_source].s);
-+  test_device->val[opt_scan_source].s = NULL;
-+
-+  free(test_device->val[opt_test_picture].s);
-+  test_device->val[opt_test_picture].s = NULL;
-+
-+  free(test_device->val[opt_read_status_code].s);
-+  test_device->val[opt_read_status_code].s = NULL;
-+
-+  free(test_device->val[opt_string].s);
-+  test_device->val[opt_string].s = NULL;
-+
-+  free(test_device->val[opt_string_constraint_string_list].s);
-+  test_device->val[opt_string_constraint_string_list].s = NULL;
-+
-+  free(test_device->val[opt_string_constraint_long_string_list].s);
-+  test_device->val[opt_string_constraint_long_string_list].s = NULL;
-+}
-+
- static SANE_Status
- init_options (Test_Device * test_device)
- {
-@@ -368,7 +398,7 @@ init_options (Test_Device * test_device)
-   od->constraint.string_list = mode_list;
-   test_device->val[opt_mode].s = malloc (od->size);
-   if (!test_device->val[opt_mode].s)
--    return SANE_STATUS_NO_MEM;
-+    goto fail;
-   strcpy (test_device->val[opt_mode].s, init_mode);
- 
-   /* opt_depth */
-@@ -435,7 +465,7 @@ init_options (Test_Device * test_device)
-   od->constraint.string_list = order_list;
-   test_device->val[opt_three_pass_order].s = malloc (od->size);
-   if (!test_device->val[opt_three_pass_order].s)
--    return SANE_STATUS_NO_MEM;
-+    goto fail;
-   strcpy (test_device->val[opt_three_pass_order].s, init_three_pass_order);
- 
-   /* opt_resolution */
-@@ -464,7 +494,7 @@ init_options (Test_Device * test_device)
-   od->constraint.string_list = source_list;
-   test_device->val[opt_scan_source].s = malloc (od->size);
-   if (!test_device->val[opt_scan_source].s)
--    return SANE_STATUS_NO_MEM;
-+    goto fail;
-   strcpy (test_device->val[opt_scan_source].s, init_scan_source);
- 
-   /* opt_special_group */
-@@ -500,7 +530,7 @@ init_options (Test_Device * test_device)
-   od->constraint.string_list = test_picture_list;
-   test_device->val[opt_test_picture].s = malloc (od->size);
-   if (!test_device->val[opt_test_picture].s)
--    return SANE_STATUS_NO_MEM;
-+    goto fail;
-   strcpy (test_device->val[opt_test_picture].s, init_test_picture);
- 
-   /* opt_invert_endianness */
-@@ -595,7 +625,7 @@ init_options (Test_Device * test_device)
-   od->constraint.string_list = read_status_code_list;
-   test_device->val[opt_read_status_code].s = malloc (od->size);
-   if (!test_device->val[opt_read_status_code].s)
--    return SANE_STATUS_NO_MEM;
-+    goto fail;
-   strcpy (test_device->val[opt_read_status_code].s, init_read_status_code);
- 
-   /* opt_ppl_loss */
-@@ -1129,7 +1159,7 @@ init_options (Test_Device * test_device)
-   od->constraint.string_list = 0;
-   test_device->val[opt_string].s = malloc (od->size);
-   if (!test_device->val[opt_string].s)
--    return SANE_STATUS_NO_MEM;
-+    goto fail;
-   strcpy (test_device->val[opt_string].s, init_string);
- 
-   /* opt_string_constraint_string_list */
-@@ -1148,7 +1178,7 @@ init_options (Test_Device * test_device)
-   od->constraint.string_list = string_constraint_string_list;
-   test_device->val[opt_string_constraint_string_list].s = malloc (od->size);
-   if (!test_device->val[opt_string_constraint_string_list].s)
--    return SANE_STATUS_NO_MEM;
-+    goto fail;
-   strcpy (test_device->val[opt_string_constraint_string_list].s,
- 	  init_string_constraint_string_list);
- 
-@@ -1169,7 +1199,7 @@ init_options (Test_Device * test_device)
-   test_device->val[opt_string_constraint_long_string_list].s =
-     malloc (od->size);
-   if (!test_device->val[opt_string_constraint_long_string_list].s)
--    return SANE_STATUS_NO_MEM;
-+    goto fail;
-   strcpy (test_device->val[opt_string_constraint_long_string_list].s,
- 	  init_string_constraint_long_string_list);
- 
-@@ -1202,6 +1232,10 @@ init_options (Test_Device * test_device)
-   test_device->val[opt_button].w = 0;
- 
-   return SANE_STATUS_GOOD;
-+
-+fail:
-+  cleanup_options (test_device);
-+  return SANE_STATUS_NO_MEM;
- }
- 
- static SANE_Status
-@@ -1718,7 +1752,7 @@ sane_init (SANE_Int * __sane_unused__ version_code, SANE_Auth_Callback __sane_un
-     {
-       SANE_Char number_string[PATH_MAX];
- 
--      test_device = malloc (sizeof (*test_device));
-+      test_device = calloc (sizeof (*test_device), 1);
-       if (!test_device)
- 	return SANE_STATUS_NO_MEM;
-       test_device->sane.vendor = "Noname";
-@@ -1740,6 +1774,7 @@ sane_init (SANE_Int * __sane_unused__ version_code, SANE_Auth_Callback __sane_un
-       test_device->eof = SANE_FALSE;
-       test_device->scanning = SANE_FALSE;
-       test_device->cancelled = SANE_FALSE;
-+      test_device->options_initialized = SANE_FALSE;
-       sanei_thread_initialize (test_device->reader_pid);
-       test_device->pipe = -1;
-       DBG (4, "sane_init: new device: `%s' is a %s %s %s\n",
-@@ -1772,6 +1807,8 @@ sane_exit (void)
-       DBG (4, "sane_exit: freeing device %s\n", test_device->name);
-       previous_device = test_device;
-       test_device = test_device->next;
-+      if (previous_device->options_initialized)
-+	cleanup_options (previous_device);
-       if (previous_device->name)
- 	free (previous_device->name);
-       free (previous_device);
-@@ -1855,9 +1892,12 @@ sane_open (SANE_String_Const devicename, SANE_Handle * handle)
-   test_device->open = SANE_TRUE;
-   *handle = test_device;
- 
--  status = init_options (test_device);
--  if (status != SANE_STATUS_GOOD)
--    return status;
-+  if (!test_device->options_initialized) {
-+    status = init_options (test_device);
-+    if (status != SANE_STATUS_GOOD)
-+      return status;
-+    test_device->options_initialized = SANE_TRUE;
-+  }
- 
-   test_device->open = SANE_TRUE;
-   test_device->scanning = SANE_FALSE;
-diff --git a/backend/test.h b/backend/test.h
-index 5b1b82b32..aeaf109a8 100644
---- a/backend/test.h
-+++ b/backend/test.h
-@@ -143,6 +143,7 @@ typedef struct Test_Device
-   SANE_Bool scanning;
-   SANE_Bool cancelled;
-   SANE_Bool eof;
-+  SANE_Bool options_initialized;
-   SANE_Int number_of_scans;
- }
- Test_Device;
diff --git a/media-gfx/sane-backends/files/sane-backends-1.0.31-initial-values.patch b/media-gfx/sane-backends/files/sane-backends-1.0.31-initial-values.patch
deleted file mode 100644
index 3708ea4..0000000
--- a/media-gfx/sane-backends/files/sane-backends-1.0.31-initial-values.patch
+++ /dev/null
@@ -1,245 +0,0 @@
-commit 26fbcde44d017e66caac6212bfea607ba410a1c6
-Author: Fletcher Woodruff <fletcherw@chromium.org>
-Date:   Mon Oct 12 11:20:49 2020 -0600
-
-    test: do not leak initial values of string options
-    
-    The default values for string options are set using static (i.e.
-    non-malloced) strings. Later, if new values are loaded from the config
-    file, those SANE_Strings will then point to dynamically allocated memory
-    which is eventually leaked.
-    
-    Change the initial values for the string options to NULL, and initialize
-    them to the proper values within sane_init() using strdup(). This way,
-    whenever the value for the string is changed, we can safely free() the
-    previous value.
-    
-    This eliminates the other main source of memory leaks in the test backend.
-    
-    This patch also updates sane_init for the test backend to properly cleanup
-    memory if it fails.
-
-diff --git a/backend/test.c b/backend/test.c
-index 251e89c26..c041137bc 100644
---- a/backend/test.c
-+++ b/backend/test.c
-@@ -237,35 +237,34 @@ static SANE_String_Const source_list[] = {
- 
- static double random_factor;	/* use for fuzzyness of parameters */
- 
--/* initial values */
-+/* initial values. Initial string values are set in sane_init() */
- static SANE_Word init_number_of_devices = 2;
- static SANE_Fixed init_tl_x = SANE_FIX (0.0);
- static SANE_Fixed init_tl_y = SANE_FIX (0.0);
- static SANE_Fixed init_br_x = SANE_FIX (80.0);
- static SANE_Fixed init_br_y = SANE_FIX (100.0);
- static SANE_Word init_resolution = 50;
--static SANE_String init_mode =SANE_VALUE_SCAN_MODE_GRAY;
-+static SANE_String init_mode = NULL;
- static SANE_Word init_depth = 8;
- static SANE_Bool init_hand_scanner = SANE_FALSE;
- static SANE_Bool init_three_pass = SANE_FALSE;
--static SANE_String init_three_pass_order = "RGB";
--static SANE_String init_scan_source = "Flatbed";
--static SANE_String init_test_picture = "Solid black";
-+static SANE_String init_three_pass_order = NULL;
-+static SANE_String init_scan_source = NULL;
-+static SANE_String init_test_picture = NULL;
- static SANE_Bool init_invert_endianess = SANE_FALSE;
- static SANE_Bool init_read_limit = SANE_FALSE;
- static SANE_Word init_read_limit_size = 1;
- static SANE_Bool init_read_delay = SANE_FALSE;
- static SANE_Word init_read_delay_duration = 1000;
--static SANE_String init_read_status_code = "Default";
-+static SANE_String init_read_status_code = NULL;
- static SANE_Bool init_fuzzy_parameters = SANE_FALSE;
- static SANE_Word init_ppl_loss = 0;
- static SANE_Bool init_non_blocking = SANE_FALSE;
- static SANE_Bool init_select_fd = SANE_FALSE;
- static SANE_Bool init_enable_test_options = SANE_FALSE;
--static SANE_String init_string = "This is the contents of the string option. "
--  "Fill some more words to see how the frontend behaves.";
--static SANE_String init_string_constraint_string_list = "First entry";
--static SANE_String init_string_constraint_long_string_list = "First entry";
-+static SANE_String init_string = NULL;
-+static SANE_String init_string_constraint_string_list = NULL;
-+static SANE_String init_string_constraint_long_string_list = NULL;
- 
- /* Test if this machine is little endian (from coolscan.c) */
- static SANE_Bool
-@@ -1238,6 +1237,39 @@ fail:
-   return SANE_STATUS_NO_MEM;
- }
- 
-+static void
-+cleanup_initial_string_values ()
-+{
-+  // Cleanup backing memory for initial values of string options.
-+  free (init_mode);
-+  init_mode = NULL;
-+  free (init_three_pass_order);
-+  init_three_pass_order = NULL;
-+  free (init_scan_source);
-+  init_scan_source = NULL;
-+  free (init_test_picture);
-+  init_test_picture = NULL;
-+  free (init_read_status_code);
-+  init_read_status_code = NULL;
-+  free (init_string);
-+  init_string = NULL;
-+  free (init_string_constraint_string_list);
-+  init_string_constraint_string_list = NULL;
-+  free (init_string_constraint_long_string_list);
-+  init_string_constraint_long_string_list = NULL;
-+}
-+
-+static void
-+cleanup_test_device (Test_Device * test_device)
-+{
-+  DBG (2, "cleanup_test_device: test_device=%p\n", (void *) test_device);
-+  if (test_device->options_initialized)
-+    cleanup_options (test_device);
-+  if (test_device->name)
-+    free (test_device->name);
-+  free (test_device);
-+}
-+
- static SANE_Status
- read_option (SANE_String line, SANE_String option_string,
- 	     parameter_type p_type, void *value)
-@@ -1365,7 +1397,11 @@ read_option (SANE_String line, SANE_String option_string,
- 	  {
- 	    DBG (3, "read_option: set option `%s' to `%s'\n", option_string,
- 		 word);
-+	    if (*(SANE_String *) value)
-+	      free (*(SANE_String *) value);
- 	    *(SANE_String *) value = strdup (word);
-+	    if (!*(SANE_String *) value)
-+	      return SANE_STATUS_NO_MEM;
- 	  }
- 	break;
-       }
-@@ -1609,6 +1645,49 @@ sane_init (SANE_Int * __sane_unused__ version_code, SANE_Auth_Callback __sane_un
-   if (inited)
-     DBG (3, "sane_init: warning: already inited\n");
- 
-+  // Setup initial values of string options. Call free initially in case we've
-+  // already called sane_init and these values are already non-null.
-+  free (init_mode);
-+  init_mode = strdup (SANE_VALUE_SCAN_MODE_GRAY);
-+  if (!init_mode)
-+    goto fail;
-+
-+  free (init_three_pass_order);
-+  init_three_pass_order = strdup ("RGB");
-+  if (!init_three_pass_order)
-+    goto fail;
-+
-+  free (init_scan_source);
-+  init_scan_source = strdup ("Flatbed");
-+  if (!init_scan_source)
-+    goto fail;
-+
-+  free (init_test_picture);
-+  init_test_picture = strdup ("Solid black");
-+  if (!init_test_picture)
-+    goto fail;
-+
-+  free (init_read_status_code);
-+  init_read_status_code = strdup ("Default");
-+  if (!init_read_status_code)
-+    goto fail;
-+
-+  free (init_string);
-+  init_string = strdup ("This is the contents of the string option. "
-+    "Fill some more words to see how the frontend behaves.");
-+  if (!init_string)
-+    goto fail;
-+
-+  free (init_string_constraint_string_list);
-+  init_string_constraint_string_list = strdup ("First entry");
-+  if (!init_string_constraint_string_list)
-+    goto fail;
-+
-+  free (init_string_constraint_long_string_list);
-+  init_string_constraint_long_string_list = strdup ("First entry");
-+  if (!init_string_constraint_long_string_list)
-+    goto fail;
-+
-   fp = sanei_config_open (TEST_CONFIG_FILE);
-   if (fp)
-     {
-@@ -1747,14 +1826,14 @@ sane_init (SANE_Int * __sane_unused__ version_code, SANE_Auth_Callback __sane_un
-   sane_device_list =
-     malloc ((init_number_of_devices + 1) * sizeof (sane_device));
-   if (!sane_device_list)
--    return SANE_STATUS_NO_MEM;
-+    goto fail;
-   for (num = 0; num < init_number_of_devices; num++)
-     {
-       SANE_Char number_string[PATH_MAX];
- 
-       test_device = calloc (sizeof (*test_device), 1);
-       if (!test_device)
--	return SANE_STATUS_NO_MEM;
-+	goto fail_device;
-       test_device->sane.vendor = "Noname";
-       test_device->sane.type = "virtual device";
-       test_device->sane.model = "frontend-tester";
-@@ -1762,7 +1841,7 @@ sane_init (SANE_Int * __sane_unused__ version_code, SANE_Auth_Callback __sane_un
-       number_string[sizeof (number_string) - 1] = '\0';
-       test_device->name = strdup (number_string);
-       if (!test_device->name)
--	return SANE_STATUS_NO_MEM;
-+	goto fail_name;
-       test_device->sane.name = test_device->name;
-       if (previous_device)
- 	previous_device->next = test_device;
-@@ -1787,6 +1866,25 @@ sane_init (SANE_Int * __sane_unused__ version_code, SANE_Auth_Callback __sane_un
-   random_factor = ((double) rand ()) / RAND_MAX + 0.5;
-   inited = SANE_TRUE;
-   return SANE_STATUS_GOOD;
-+
-+fail_name:
-+  // test_device refers to the last device we were creating, which has not
-+  // yet been added to the linked list of devices.
-+  free (test_device);
-+fail_device:
-+  // Now, iterate through the linked list of devices to clean up any successful
-+  // devices.
-+  test_device = first_test_device;
-+  while (test_device)
-+    {
-+      previous_device = test_device;
-+      test_device = test_device->next;
-+      cleanup_test_device (previous_device);
-+    }
-+  free (sane_device_list);
-+fail:
-+  cleanup_initial_string_values ();
-+  return SANE_STATUS_NO_MEM;
- }
- 
- void
-@@ -1807,17 +1905,15 @@ sane_exit (void)
-       DBG (4, "sane_exit: freeing device %s\n", test_device->name);
-       previous_device = test_device;
-       test_device = test_device->next;
--      if (previous_device->options_initialized)
--	cleanup_options (previous_device);
--      if (previous_device->name)
--	free (previous_device->name);
--      free (previous_device);
-+      cleanup_test_device (previous_device);
-     }
-   DBG (4, "sane_exit: freeing device list\n");
-   if (sane_device_list)
-     free (sane_device_list);
-   sane_device_list = NULL;
-   first_test_device = NULL;
-+
-+  cleanup_initial_string_values ();
-   inited = SANE_FALSE;
-   return;
- }
diff --git a/media-gfx/sane-backends/sane-backends-1.0.31-r3.ebuild b/media-gfx/sane-backends/sane-backends-1.0.31-r3.ebuild
deleted file mode 120000
index cf581b9..0000000
--- a/media-gfx/sane-backends/sane-backends-1.0.31-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-sane-backends-1.0.31.ebuild
\ No newline at end of file
diff --git a/media-gfx/sane-backends/sane-backends-1.0.31.ebuild b/media-gfx/sane-backends/sane-backends-1.0.31.ebuild
deleted file mode 100644
index 1763b0c..0000000
--- a/media-gfx/sane-backends/sane-backends-1.0.31.ebuild
+++ /dev/null
@@ -1,379 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-inherit flag-o-matic autotools multilib-minimal systemd toolchain-funcs udev \
-	user cros-sanitizers
-
-# gphoto and v4l are handled by their usual USE flags.
-# The pint backend was disabled because I could not get it to compile.
-IUSE_SANE_BACKENDS="
-	abaton
-	agfafocus
-	apple
-	artec
-	artec_eplus48u
-	as6e
-	avision
-	bh
-	canon
-	canon630u
-	canon_dr
-	canon_lide70
-	canon_pp
-	cardscan
-	coolscan
-	coolscan2
-	coolscan3
-	dc210
-	dc240
-	dc25
-	dell1600n_net
-	dmc
-	epjitsu
-	epson
-	epson2
-	escl
-	fujitsu
-	genesys
-	gt68xx
-	hp
-	hp3500
-	hp3900
-	hp4200
-	hp5400
-	hp5590
-	hpljm1005
-	hpsj5s
-	hs2p
-	ibm
-	kodak
-	kodakaio
-	kvs1025
-	kvs20xx
-	kvs40xx
-	leo
-	lexmark
-	ma1509
-	magicolor
-	matsushita
-	microtek
-	microtek2
-	mustek
-	mustek_pp
-	mustek_usb
-	mustek_usb2
-	nec
-	net
-	niash
-	p5
-	pie
-	pixma
-	plustek
-	plustek_pp
-	pnm
-	qcam
-	ricoh
-	ricoh2
-	rts8891
-	s9036
-	sceptre
-	sharp
-	sm3600
-	sm3840
-	snapscan
-	sp15c
-	st400
-	stv680
-	tamarack
-	teco1
-	teco2
-	teco3
-	test
-	u12
-	umax
-	umax1220u
-	umax_pp
-	xerox_mfp"
-
-IUSE="gphoto2 ipv6 snmp systemd threads usb v4l xinetd zeroconf"
-
-for backend in ${IUSE_SANE_BACKENDS}; do
-	case ${backend} in
-	# Disable backends that require parallel ports as no one has those anymore.
-	canon_pp|hpsj5s|mustek_pp|\
-	pnm)
-		IUSE+=" -sane_backends_${backend}"
-		;;
-	mustek_usb2|kvs40xx)
-		IUSE+=" sane_backends_${backend}"
-		;;
-	escl)
-		IUSE+=" -sane_backends_${backend}"
-		;;
-	*)
-		IUSE+=" +sane_backends_${backend}"
-	esac
-done
-
-REQUIRED_USE="
-	sane_backends_mustek_usb2? ( threads )
-	sane_backends_kvs40xx? ( threads )
-"
-
-DESCRIPTION="Scanner Access Now Easy - Backends"
-HOMEPAGE="http://www.sane-project.org/"
-SRC_URI="https://gitlab.com/sane-project/backends/-/archive/${PV}/backends-${PV}.tar.gz -> ${P}.tar.gz"
-S="${WORKDIR}/backends-${PV}"
-
-LICENSE="GPL-2 public-domain"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	sane_backends_dc210? ( >=virtual/jpeg-0-r2:0=[${MULTILIB_USEDEP}] )
-	sane_backends_dc240? ( >=virtual/jpeg-0-r2:0=[${MULTILIB_USEDEP}] )
-	sane_backends_dell1600n_net? (
-		>=virtual/jpeg-0-r2:0=[${MULTILIB_USEDEP}]
-		>=media-libs/tiff-3.9.7-r1:0=[${MULTILIB_USEDEP}]
-	)
-	sane_backends_canon_pp? ( >=sys-libs/libieee1284-0.2.11-r3[${MULTILIB_USEDEP}] )
-	sane_backends_hpsj5s? ( >=sys-libs/libieee1284-0.2.11-r3[${MULTILIB_USEDEP}] )
-	sane_backends_mustek_pp? ( >=sys-libs/libieee1284-0.2.11-r3[${MULTILIB_USEDEP}] )
-	usb? ( >=virtual/libusb-1-r1:1=[${MULTILIB_USEDEP}] )
-	gphoto2? (
-		>=media-libs/libgphoto2-2.5.3.1:=[${MULTILIB_USEDEP}]
-		>=virtual/jpeg-0-r2:0=[${MULTILIB_USEDEP}]
-	)
-	v4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
-	xinetd? ( sys-apps/xinetd )
-	snmp? ( net-analyzer/net-snmp:0= )
-	systemd? ( sys-apps/systemd:0= )
-	zeroconf? ( >=net-dns/avahi-0.6.31-r2[${MULTILIB_USEDEP}] )
-"
-
-DEPEND="${RDEPEND}
-	v4l? ( sys-kernel/linux-headers )
-	>=sys-devel/gettext-0.18.1
-	>=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
-"
-
-MULTILIB_CHOST_TOOLS=(
-	/usr/bin/sane-config
-)
-
-pkg_setup() {
-	enewgroup scanner
-	enewuser saned -1 -1 -1 scanner	
-}
-
-src_prepare() {
-	default
-
-	cat >> backend/dll.conf.in <<-EOF
-	# Add support for the HP-specific backend.  Needs net-print/hplip installed.
-	hpaio
-	# Add support for the Epson-specific backend.  Needs media-gfx/iscan installed.
-	epkowa
-	EOF
-
-	eapply "${FILESDIR}"/${PN}-1.0.24-saned_pidfile_location.patch
-	eapply "${FILESDIR}"/${PN}-1.0.29-genesys-test-headers.patch
-
-	# From Arch
-	eapply "${FILESDIR}"/${PN}-1.0.30-network.patch
-
-	# Fix memory leaks in the test and dll backends.
-	eapply "${FILESDIR}"/sane-backends-1.0.31-dll-load.patch
-	eapply "${FILESDIR}"/sane-backends-1.0.31-free-string-options.patch
-	eapply "${FILESDIR}"/sane-backends-1.0.31-initial-values.patch
-
-	# Upstream sometimes forgets to remove the "git describe" check
-	# in the version, which then fails because .git isn't included in the
-	# released tarball.  Replace it with the plain version number.
-	sed -i \
-		-e "s/^\(AC_INIT([^,]*,\)m4_esyscmd_s([^)]*),/\1${PV},/" \
-		configure.ac || die
-	eautoreconf
-
-	# Fix for "make check".  Upstream sometimes forgets to update this.
-	local ver=$(./configure --version | awk '{print $NF; exit 0}')
-	sed -i \
-		-e "/by sane-desc 3.5 from sane-backends/s:sane-backends .*:sane-backends ${ver}:" \
-		testsuite/tools/data/html* || die
-
-}
-
-src_configure() {
-	# Sanitizers don't link properly, but we want to fuzz dependent
-	# packages (b/160181793).
-	filter_sanitizers
-	# genesys backend doesn't build without exceptions.
-	cros_enable_cxx_exceptions
-	append-flags -fno-strict-aliasing # From Fedora
-
-	# if LINGUAS is set, just use the listed and supported localizations.
-	# shellcheck disable=SC2154
-	if [[ "${LINGUAS+set}" == "set" ]]; then
-		mkdir -p po || die
-		strip-linguas -u po
-		printf '%s\n' "${LINGUAS}" > po/LINGUAS
-	fi
-
-	multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-
-	# the blank is intended - an empty string would result in building ALL backends.
-	local BACKENDS=" "
-
-	use gphoto2 && BACKENDS="gphoto2"
-	use v4l && BACKENDS="${BACKENDS} v4l"
-	for backend in ${IUSE_SANE_BACKENDS}; do
-		if use "sane_backends_${backend}" && [ "${backend}" != pnm ]; then
-			BACKENDS="${BACKENDS} ${backend}"
-		fi
-	done
-
-	local myconf=(
-		"$(use_with usb)"
-		"$(multilib_native_use_with snmp)"
-	)
-
-	# you can only enable this backend, not disable it...
-	if use sane_backends_pnm; then
-		myconf+=( --enable-pnm-backend )
-	fi
-	if use sane_backends_mustek_pp; then
-		myconf+=( --enable-parport-directio )
-	fi
-	if ! { use sane_backends_canon_pp || use sane_backends_hpsj5s || use sane_backends_mustek_pp; }; then
-		myconf+=( sane_cv_use_libieee1284=no )
-	fi
-
-	# relative path must be used for tests to work properly
-	# All distributions pass --disable-locking because /var/lock/sane/ would be a world-writable directory
-	# --without-api-spec to not automagically depend on tons of stuff
-	# that break in many ways, bug #636202, #668232, #668350
-	# People can refer to the "Programmer's Documentation" at http://www.sane-project.org/docs.html
-	ECONF_SOURCE=${S} \
-	SANEI_JPEG="sanei_jpeg.o" SANEI_JPEG_LO="sanei_jpeg.lo" \
-	BACKENDS="${BACKENDS}" \
-	econf \
-		--disable-locking \
-		--without-api-spec \
-		"$(use_with gphoto2)" \
-		"$(multilib_native_use_with systemd)" \
-		"$(use_with v4l)" \
-		"$(use_enable ipv6)" \
-		"$(use_enable threads pthread)" \
-		"$(use_with zeroconf avahi)" \
-		"${myconf[@]}"
-
-}
-
-multilib_src_compile() {
-	emake VARTEXFONTS="${T}/fonts"
-
-	if tc-is-cross-compiler; then
-		pushd "${BUILD_DIR}"/tools >/dev/null || die
-
-		# The build system sucks and doesn't handle this properly.
-		# https://alioth.debian.org/tracker/index.php?func=detail&aid=314236&group_id=30186&atid=410366
-		tc-export_build_env BUILD_CC
-		# The *FLAGS variables were created above and may intentionally
-		# contain spaces, so don't lint them.
-		# shellcheck disable=2154 disable=2086
-		"${BUILD_CC}" ${BUILD_CPPFLAGS} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} \
-			-I. -I../include -I"${S}"/include \
-			"${S}"/sanei/sanei_config.c "${S}"/sanei/sanei_constrain_value.c \
-			"${S}"/sanei/sanei_init_debug.c "${S}"/tools/sane-desc.c -o sane-desc || die
-		local dirs=( hal hotplug hotplug-ng udev )
-		local targets=(
-			hal/libsane.fdi
-			hotplug/libsane.usermap
-			hotplug-ng/libsane.db
-			udev/libsane.rules
-		)
-		mkdir -p "${dirs[@]}" || die
-		emake "${targets[@]}"
-
-		popd >/dev/null || die
-	fi
-
-	if use usb; then
-		sed -i -e '/^$/d' \
-			tools/hotplug/libsane.usermap || die
-	fi
-}
-
-multilib_src_install() {
-	emake INSTALL_LOCKPATH="" DESTDIR="${D}" install \
-		docdir="${EPREFIX}"/usr/share/doc/${PF}
-
-	if multilib_is_native_abi; then
-		if use usb; then
-			insinto /etc/hotplug/usb
-			doins tools/hotplug/libsane.usermap
-		fi
-
-		udev_newrules tools/udev/libsane.rules 41-libsane.rules
-		insinto "/usr/share/pkgconfig"
-		doins tools/sane-backends.pc
-	fi
-}
-
-multilib_src_install_all() {
-	keepdir /var/lib/lock/sane
-	fowners root:scanner /var/lib/lock/sane
-	fperms g+w /var/lib/lock/sane
-	dodir /etc/env.d
-
-	if use systemd; then
-		systemd_newunit "${FILESDIR}"/saned_at.service "saned@.service"
-		systemd_newunit "${FILESDIR}"/saned.socket saned.socket
-	fi
-
-	if use usb; then
-		exeinto /etc/hotplug/usb
-		doexe tools/hotplug/libusbscanner
-		newdoc tools/hotplug/README README.hotplug
-	fi
-
-	dodoc NEWS AUTHORS ChangeLog ChangeLogs/* PROBLEMS README README.linux
-	find "${D}" -name '*.la' -delete || die
-
-	if use xinetd; then
-		insinto /etc/xinetd.d
-		doins "${FILESDIR}"/saned
-	fi
-
-	# Move the test backend into /usr/local so that it won't be installed
-	# on non-test images. The sane-backends-test package will be
-	# responsible for creating the proper symlinks for the dll backend to
-	# find the test backend.
-	local sane_lib_dir="${ED}/usr/$(get_libdir)/sane"
-	local test_lib_names="
-		libsane-test.so
-		libsane-test.so.$(ver_cut 1 ${PV})
-		libsane-test.so.${PV}
-	"
-	into /usr/local
-	for lib in ${test_lib_names}; do
-		dolib.so "${sane_lib_dir}/${lib}" || die
-		rm "${sane_lib_dir}/${lib}" || die
-	done
-}
-
-pkg_postinst() {
-	if use xinetd; then
-		elog "If you want remote clients to connect, edit"
-		elog "/etc/sane.d/saned.conf and /etc/hosts.allow"
-	fi
-
-	if ! use systemd; then
-		elog "If you are using a USB scanner, add all users who want"
-		elog "to access your scanner to the \"scanner\" group."
-	fi
-}
diff --git a/media-gfx/sane-backends/sane-backends-1.0.32-r2.ebuild b/media-gfx/sane-backends/sane-backends-1.0.32-r2.ebuild
new file mode 120000
index 0000000..a6fd311
--- /dev/null
+++ b/media-gfx/sane-backends/sane-backends-1.0.32-r2.ebuild
@@ -0,0 +1 @@
+sane-backends-1.0.32.ebuild
\ No newline at end of file
diff --git a/media-gfx/sane-backends/sane-backends-1.0.32.ebuild b/media-gfx/sane-backends/sane-backends-1.0.32.ebuild
new file mode 100644
index 0000000..ee7d0e1
--- /dev/null
+++ b/media-gfx/sane-backends/sane-backends-1.0.32.ebuild
@@ -0,0 +1,375 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit flag-o-matic autotools multilib-minimal systemd toolchain-funcs udev \
+	user cros-sanitizers
+
+# gphoto and v4l are handled by their usual USE flags.
+# The pint backend was disabled because I could not get it to compile.
+IUSE_SANE_BACKENDS="
+	abaton
+	agfafocus
+	apple
+	artec
+	artec_eplus48u
+	as6e
+	avision
+	bh
+	canon
+	canon630u
+	canon_dr
+	canon_lide70
+	canon_pp
+	cardscan
+	coolscan
+	coolscan2
+	coolscan3
+	dc210
+	dc240
+	dc25
+	dell1600n_net
+	dmc
+	epjitsu
+	epson
+	epson2
+	escl
+	fujitsu
+	genesys
+	gt68xx
+	hp
+	hp3500
+	hp3900
+	hp4200
+	hp5400
+	hp5590
+	hpljm1005
+	hpsj5s
+	hs2p
+	ibm
+	kodak
+	kodakaio
+	kvs1025
+	kvs20xx
+	kvs40xx
+	leo
+	lexmark
+	ma1509
+	magicolor
+	matsushita
+	microtek
+	microtek2
+	mustek
+	mustek_pp
+	mustek_usb
+	mustek_usb2
+	nec
+	net
+	niash
+	p5
+	pie
+	pixma
+	plustek
+	plustek_pp
+	pnm
+	qcam
+	ricoh
+	ricoh2
+	rts8891
+	s9036
+	sceptre
+	sharp
+	sm3600
+	sm3840
+	snapscan
+	sp15c
+	st400
+	stv680
+	tamarack
+	teco1
+	teco2
+	teco3
+	test
+	u12
+	umax
+	umax1220u
+	umax_pp
+	xerox_mfp"
+
+IUSE="gphoto2 ipv6 snmp systemd threads usb v4l xinetd zeroconf"
+
+for backend in ${IUSE_SANE_BACKENDS}; do
+	case ${backend} in
+	# Disable backends that require parallel ports as no one has those anymore.
+	canon_pp|hpsj5s|mustek_pp|\
+	pnm)
+		IUSE+=" -sane_backends_${backend}"
+		;;
+	mustek_usb2|kvs40xx)
+		IUSE+=" sane_backends_${backend}"
+		;;
+	escl)
+		IUSE+=" -sane_backends_${backend}"
+		;;
+	*)
+		IUSE+=" +sane_backends_${backend}"
+	esac
+done
+
+REQUIRED_USE="
+	sane_backends_mustek_usb2? ( threads )
+	sane_backends_kvs40xx? ( threads )
+"
+
+DESCRIPTION="Scanner Access Now Easy - Backends"
+HOMEPAGE="http://www.sane-project.org/"
+SRC_URI="https://gitlab.com/sane-project/backends/-/archive/${PV}/backends-${PV}.tar.gz -> ${P}.tar.gz"
+S="${WORKDIR}/sane-backends-${PV}"
+
+LICENSE="GPL-2 public-domain"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	sane_backends_dc210? ( >=virtual/jpeg-0-r2:0=[${MULTILIB_USEDEP}] )
+	sane_backends_dc240? ( >=virtual/jpeg-0-r2:0=[${MULTILIB_USEDEP}] )
+	sane_backends_dell1600n_net? (
+		>=virtual/jpeg-0-r2:0=[${MULTILIB_USEDEP}]
+		>=media-libs/tiff-3.9.7-r1:0=[${MULTILIB_USEDEP}]
+	)
+	sane_backends_canon_pp? ( >=sys-libs/libieee1284-0.2.11-r3[${MULTILIB_USEDEP}] )
+	sane_backends_hpsj5s? ( >=sys-libs/libieee1284-0.2.11-r3[${MULTILIB_USEDEP}] )
+	sane_backends_mustek_pp? ( >=sys-libs/libieee1284-0.2.11-r3[${MULTILIB_USEDEP}] )
+	usb? ( >=virtual/libusb-1-r1:1=[${MULTILIB_USEDEP}] )
+	gphoto2? (
+		>=media-libs/libgphoto2-2.5.3.1:=[${MULTILIB_USEDEP}]
+		>=virtual/jpeg-0-r2:0=[${MULTILIB_USEDEP}]
+	)
+	v4l? ( >=media-libs/libv4l-0.9.5[${MULTILIB_USEDEP}] )
+	xinetd? ( sys-apps/xinetd )
+	snmp? ( net-analyzer/net-snmp:0= )
+	systemd? ( sys-apps/systemd:0= )
+	zeroconf? ( >=net-dns/avahi-0.6.31-r2[${MULTILIB_USEDEP}] )
+"
+
+DEPEND="${RDEPEND}
+	v4l? ( sys-kernel/linux-headers )
+	>=sys-devel/gettext-0.18.1
+	>=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+"
+
+MULTILIB_CHOST_TOOLS=(
+	/usr/bin/sane-config
+)
+
+pkg_setup() {
+	enewgroup scanner
+	enewuser saned -1 -1 -1 scanner
+}
+
+src_prepare() {
+	default
+
+	cat >> backend/dll.conf.in <<-EOF
+	# Add support for the HP-specific backend.  Needs net-print/hplip installed.
+	hpaio
+	# Add support for the Epson-specific backend.  Needs media-gfx/iscan installed.
+	epkowa
+	EOF
+
+	eapply "${FILESDIR}"/${PN}-1.0.24-saned_pidfile_location.patch
+	eapply "${FILESDIR}"/${PN}-1.0.29-genesys-test-headers.patch
+
+	# From Arch
+	eapply "${FILESDIR}"/${PN}-1.0.30-network.patch
+
+	# Patches submitted upstream but not yet included.
+	eapply "${FILESDIR}"/${PN}-1.0.31-epson2.patch
+
+	# Upstream sometimes forgets to remove the "git describe" check
+	# in the version, which then fails because .git isn't included in the
+	# released tarball.  Replace it with the plain version number.
+	sed -i \
+		-e "s/^\(AC_INIT([^,]*,\)m4_esyscmd_s([^)]*),/\1${PV},/" \
+		configure.ac || die
+	eautoreconf
+
+	# Fix for "make check".  Upstream sometimes forgets to update this.
+	local ver=$(./configure --version | awk '{print $NF; exit 0}')
+	sed -i \
+		-e "/by sane-desc 3.5 from sane-backends/s:sane-backends .*:sane-backends ${ver}:" \
+		testsuite/tools/data/html* || die
+}
+
+src_configure() {
+	# Sanitizers don't link properly, but we want to fuzz dependent
+	# packages (b/160181793).
+	filter_sanitizers
+
+	# genesys backend doesn't build without exceptions.
+	cros_enable_cxx_exceptions
+	append-flags -fno-strict-aliasing # From Fedora
+
+	# if LINGUAS is set, just use the listed and supported localizations.
+	# shellcheck disable=SC2154
+	if [[ "${LINGUAS+set}" == "set" ]]; then
+		mkdir -p po || die
+		strip-linguas -u po
+		printf '%s\n' "${LINGUAS}" > po/LINGUAS
+	fi
+
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	# the blank is intended - an empty string would result in building ALL backends.
+	local BACKENDS=" "
+
+	use gphoto2 && BACKENDS="gphoto2"
+	use v4l && BACKENDS="${BACKENDS} v4l"
+	for backend in ${IUSE_SANE_BACKENDS}; do
+		if use "sane_backends_${backend}" && [ "${backend}" != pnm ]; then
+			BACKENDS="${BACKENDS} ${backend}"
+		fi
+	done
+
+	local myconf=(
+		"$(use_with usb)"
+		"$(multilib_native_use_with snmp)"
+	)
+
+	# you can only enable this backend, not disable it...
+	if use sane_backends_pnm; then
+		myconf+=( --enable-pnm-backend )
+	fi
+	if use sane_backends_mustek_pp; then
+		myconf+=( --enable-parport-directio )
+	fi
+	if ! { use sane_backends_canon_pp || use sane_backends_hpsj5s || use sane_backends_mustek_pp; }; then
+		myconf+=( sane_cv_use_libieee1284=no )
+	fi
+
+	# relative path must be used for tests to work properly
+	# All distributions pass --disable-locking because /var/lock/sane/ would be a world-writable directory
+	# --without-api-spec to not automagically depend on tons of stuff
+	# that break in many ways, bug #636202, #668232, #668350
+	# People can refer to the "Programmer's Documentation" at http://www.sane-project.org/docs.html
+	ECONF_SOURCE=${S} \
+	SANEI_JPEG="sanei_jpeg.o" SANEI_JPEG_LO="sanei_jpeg.lo" \
+	BACKENDS="${BACKENDS}" \
+	econf \
+		--disable-locking \
+		--without-api-spec \
+		"$(use_with gphoto2)" \
+		"$(multilib_native_use_with systemd)" \
+		"$(use_with v4l)" \
+		"$(use_enable ipv6)" \
+		"$(use_enable threads pthread)" \
+		"$(use_with zeroconf avahi)" \
+		"${myconf[@]}"
+}
+
+multilib_src_compile() {
+	emake VARTEXFONTS="${T}/fonts"
+
+	if tc-is-cross-compiler; then
+		pushd "${BUILD_DIR}"/tools >/dev/null || die
+
+		# The build system sucks and doesn't handle this properly.
+		# https://alioth.debian.org/tracker/index.php?func=detail&aid=314236&group_id=30186&atid=410366
+		tc-export_build_env BUILD_CC
+		# The *FLAGS variables were created above and may intentionally
+		# contain spaces, so don't lint them.
+		# shellcheck disable=2154 disable=2086
+		"${BUILD_CC}" ${BUILD_CPPFLAGS} ${BUILD_CFLAGS} ${BUILD_LDFLAGS} \
+			-I. -I../include -I"${S}"/include \
+			"${S}"/sanei/sanei_config.c "${S}"/sanei/sanei_constrain_value.c \
+			"${S}"/sanei/sanei_init_debug.c "${S}"/tools/sane-desc.c -o sane-desc || die
+		local dirs=( hal hotplug hotplug-ng udev )
+		local targets=(
+			hal/libsane.fdi
+			hotplug/libsane.usermap
+			hotplug-ng/libsane.db
+			udev/libsane.rules
+		)
+		mkdir -p "${dirs[@]}" || die
+		emake "${targets[@]}"
+
+		popd >/dev/null || die
+	fi
+
+	if use usb; then
+		sed -i -e '/^$/d' \
+			tools/hotplug/libsane.usermap || die
+	fi
+}
+
+multilib_src_install() {
+	emake INSTALL_LOCKPATH="" DESTDIR="${D}" install \
+		docdir="${EPREFIX}"/usr/share/doc/${PF}
+
+	if multilib_is_native_abi; then
+		if use usb; then
+			insinto /etc/hotplug/usb
+			doins tools/hotplug/libsane.usermap
+		fi
+
+		udev_newrules tools/udev/libsane.rules 41-libsane.rules
+		insinto "/usr/share/pkgconfig"
+		doins tools/sane-backends.pc
+	fi
+}
+
+multilib_src_install_all() {
+	keepdir /var/lib/lock/sane
+	fowners root:scanner /var/lib/lock/sane
+	fperms g+w /var/lib/lock/sane
+	dodir /etc/env.d
+
+	if use systemd; then
+		systemd_newunit "${FILESDIR}"/saned_at.service "saned@.service"
+		systemd_newunit "${FILESDIR}"/saned.socket saned.socket
+	fi
+
+	if use usb; then
+		exeinto /etc/hotplug/usb
+		doexe tools/hotplug/libusbscanner
+		newdoc tools/hotplug/README README.hotplug
+	fi
+
+	dodoc NEWS AUTHORS ChangeLog ChangeLogs/* PROBLEMS README README.linux
+	find "${D}" -name '*.la' -delete || die
+
+	if use xinetd; then
+		insinto /etc/xinetd.d
+		doins "${FILESDIR}"/saned
+	fi
+
+	# Move the test backend into /usr/local so that it won't be installed
+	# on non-test images. The sane-backends-test package will be
+	# responsible for creating the proper symlinks for the dll backend to
+	# find the test backend.
+	local sane_lib_dir="${ED}/usr/$(get_libdir)/sane"
+	local test_lib_names="
+		libsane-test.so
+		libsane-test.so.$(ver_cut 1 ${PV})
+		libsane-test.so.${PV}
+	"
+	into /usr/local
+	for lib in ${test_lib_names}; do
+		dolib.so "${sane_lib_dir}/${lib}" || die
+		rm "${sane_lib_dir}/${lib}" || die
+	done
+}
+
+pkg_postinst() {
+	if use xinetd; then
+		elog "If you want remote clients to connect, edit"
+		elog "/etc/sane.d/saned.conf and /etc/hosts.allow"
+	fi
+
+	if ! use systemd; then
+		elog "If you are using a USB scanner, add all users who want"
+		elog "to access your scanner to the \"scanner\" group."
+	fi
+}
diff --git a/media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r588.ebuild b/media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r588.ebuild
deleted file mode 100644
index 1d0d01c..0000000
--- a/media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r588.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "347cdef009360a54e6d1dfc2b382bc812b2a55db" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "871bb7e6654a823f1468a5857b4c74f12aaedbb5" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-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"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/tools/generate_camera_profile"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Runtime detect the number of cameras on device to generate
-corresponding media_profiles.xml."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	media-libs/cros-camera-libcamera_timezone"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	dobin "${OUT}/generate_camera_profile"
-}
diff --git a/media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r697.ebuild b/media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r697.ebuild
new file mode 100644
index 0000000..1065e30
--- /dev/null
+++ b/media-libs/arc-camera-profile/arc-camera-profile-0.0.1-r697.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b" "049eedf136293a1ab81617017200cb31032eb384" "d1fd07ac03f1ac6e670181ebd45b30e31efe5a87" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+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"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/tools/generate_camera_profile"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="Runtime detect the number of cameras on device to generate
+corresponding media_profiles.xml."
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND=""
+
+DEPEND="${RDEPEND}
+	virtual/pkgconfig"
+
+src_install() {
+	dobin "${OUT}/generate_camera_profile"
+}
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 c310dfd..cffa53a 100644
--- a/media-libs/arc-camera-profile/arc-camera-profile-9999.ebuild
+++ b/media-libs/arc-camera-profile/arc-camera-profile-9999.ebuild
@@ -20,8 +20,7 @@
 SLOT="0"
 KEYWORDS="~*"
 
-RDEPEND="
-	media-libs/cros-camera-libcamera_timezone"
+RDEPEND=""
 
 DEPEND="${RDEPEND}
 	virtual/pkgconfig"
diff --git a/media-libs/arc-camera-service/arc-camera-service-0.0.1-r522.ebuild b/media-libs/arc-camera-service/arc-camera-service-0.0.1-r522.ebuild
deleted file mode 100644
index 6a54ef1..0000000
--- a/media-libs/arc-camera-service/arc-camera-service-0.0.1-r522.ebuild
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="2837ddd0fde71236264c417fc5874ba3646d9a46"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "347cdef009360a54e6d1dfc2b382bc812b2a55db" "0b0bd701798d12b090a5bbbcec163ecdb45e2567" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-# TODO(crbug.com/914263): camera/hal/usb is unnecessary for this build but is
-# workaround for unexpected sandbox behavior.
-CROS_WORKON_SUBTREE=".gn camera/build camera/hal/usb camera/hal/usb_v1 camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/hal/usb_v1"
-
-inherit cros-workon platform user
-
-DESCRIPTION="ARC camera service. The service is in charge of accessing camera
-device. It uses linux domain socket (/run/camera/camera.sock) to build a
-synchronous channel."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan"
-
-RDEPEND="
-	!chromeos-base/arc-camera-service
-	media-libs/cros-camera-libcamera_timezone"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	dobin "${OUT}/arc_camera_service"
-
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.ArcCamera.conf
-
-	insinto /etc/init
-	doins init/arc-camera.conf
-}
-
-pkg_preinst() {
-	enewuser "arc-camera"
-	enewgroup "arc-camera"
-}
diff --git a/media-libs/arc-camera-service/arc-camera-service-9999.ebuild b/media-libs/arc-camera-service/arc-camera-service-9999.ebuild
deleted file mode 100644
index 7730bd6..0000000
--- a/media-libs/arc-camera-service/arc-camera-service-9999.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-# TODO(crbug.com/914263): camera/hal/usb is unnecessary for this build but is
-# workaround for unexpected sandbox behavior.
-CROS_WORKON_SUBTREE=".gn camera/build camera/hal/usb camera/hal/usb_v1 camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/hal/usb_v1"
-
-inherit cros-workon platform user
-
-DESCRIPTION="ARC camera service. The service is in charge of accessing camera
-device. It uses linux domain socket (/run/camera/camera.sock) to build a
-synchronous channel."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-IUSE="-asan"
-
-RDEPEND="
-	!chromeos-base/arc-camera-service
-	media-libs/cros-camera-libcamera_timezone"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	dobin "${OUT}/arc_camera_service"
-
-	insinto /etc/dbus-1/system.d
-	doins org.chromium.ArcCamera.conf
-
-	insinto /etc/init
-	doins init/arc-camera.conf
-}
-
-pkg_preinst() {
-	enewuser "arc-camera"
-	enewgroup "arc-camera"
-}
diff --git a/media-libs/arc-cros-gralloc/arc-cros-gralloc-0.0.1-r386.ebuild b/media-libs/arc-cros-gralloc/arc-cros-gralloc-0.0.1-r386.ebuild
deleted file mode 100644
index d421501..0000000
--- a/media-libs/arc-cros-gralloc/arc-cros-gralloc-0.0.1-r386.ebuild
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-CROS_WORKON_COMMIT="9fe8c20f05116869f86d91fc542a17b9badf9ec3"
-CROS_WORKON_TREE="445cf807514840545f4e7761b911b42bbe92af07"
-CROS_WORKON_PROJECT="chromiumos/platform/minigbm"
-CROS_WORKON_LOCALNAME="../platform/minigbm"
-
-inherit multilib-minimal arc-build cros-workon
-
-DESCRIPTION="ChromeOS gralloc implementation"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/minigbm"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-VIDEO_CARDS="amdgpu exynos intel marvell mediatek msm rockchip tegra virgl"
-IUSE="kernel-3_8 kernel-3_14 kernel-3_18 $(printf 'video_cards_%s ' ${VIDEO_CARDS})"
-MINI_GBM_PLATFORMS_USE=( mt8183 mt8192 )
-IUSE+=" ${MINI_GBM_PLATFORMS_USE[*]/#/minigbm_platform_}"
-
-RDEPEND="
-	!<media-libs/minigbm-0.0.1-r438
-	x11-libs/arc-libdrm[${MULTILIB_USEDEP}]
-"
-DEPEND="
-	${RDEPEND}
-	video_cards_amdgpu? ( virtual/arc-opengles )
-"
-
-src_configure() {
-	# Use arc-build base class to select the right compiler
-	arc-build-select-clang
-
-	# This packages uses -flto with gold, which doesn't support -Os
-	# or -Oz. This produces a 76KB .so, so optimizing for size is
-	# probably not a big deal.
-	cros_optimize_package_for_speed
-
-	BUILD_DIR="$(cros-workon_get_build_dir)"
-
-	append-lfs-flags
-
-	# TODO(gsingh): use pkgconfig
-	if use video_cards_intel; then
-		export DRV_I915=1
-		append-cppflags -DDRV_I915
-		if ! (use kernel-3_8 || use kernel-3_14 || use kernel-3_18); then
-			append-cppflags -DI915_SCANOUT_Y_TILED
-		fi
-	fi
-
-	if use video_cards_rockchip; then
-		export DRV_ROCKCHIP=1
-		append-cppflags -DDRV_ROCKCHIP
-	fi
-
-	if use video_cards_mediatek; then
-		use minigbm_platform_mt8183 && append-cppflags -DMTK_MT8183
-		use minigbm_platform_mt8192 && append-cppflags -DMTK_MT8192
-		export DRV_MEDIATEK=1
-		append-cppflags -DDRV_MEDIATEK
-	fi
-
-	if use video_cards_msm; then
-		export DRV_MSM=1
-		append-cppflags -DDRV_MSM
-	fi
-
-	if use video_cards_amdgpu; then
-		export DRV_AMDGPU=1
-		append-cppflags -DDRV_AMDGPU -DHAVE_LIBDRM
-	fi
-
-	if use video_cards_virgl; then
-		export DRV_VIRGL=1
-		append-cppflags -DDRV_VIRGL -DVIRTIO_GPU_NEXT
-	fi
-
-	multilib-minimal_src_configure
-}
-
-multilib_src_compile() {
-	filter-flags "-DDRI_DRIVER_DIR=*"
-	append-cppflags -DDRI_DRIVER_DIR="/vendor/$(get_libdir)/dri"
-	export TARGET_DIR="${BUILD_DIR}/"
-	emake -C "${S}/cros_gralloc"
-	emake -C "${S}/cros_gralloc/gralloc0/tests/"
-}
-
-multilib_src_install() {
-	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/hw/"
-	doexe "${BUILD_DIR}"/gralloc.cros.so
-	into "/usr/local/"
-	newbin "${BUILD_DIR}"/gralloctest "gralloctest_${ABI}"
-}
-
-multilib_src_install_all() {
-	# Install cros_gralloc header files for arc-mali-* packages
-	insinto "/usr/include/cros_gralloc"
-	doins "${S}/cros_gralloc/cros_gralloc_handle.h"
-}
diff --git a/media-libs/arc-cros-gralloc/arc-cros-gralloc-0.0.1-r432.ebuild b/media-libs/arc-cros-gralloc/arc-cros-gralloc-0.0.1-r432.ebuild
new file mode 100644
index 0000000..ea7b246
--- /dev/null
+++ b/media-libs/arc-cros-gralloc/arc-cros-gralloc-0.0.1-r432.ebuild
@@ -0,0 +1,107 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+CROS_WORKON_COMMIT="bb9d4af4529b3019d830b8ef7e39479436b642af"
+CROS_WORKON_TREE="6db1492d66cd8acef88bacfe95f001e289adc55c"
+CROS_WORKON_PROJECT="chromiumos/platform/minigbm"
+CROS_WORKON_LOCALNAME="../platform/minigbm"
+
+inherit multilib-minimal arc-build cros-workon
+
+DESCRIPTION="ChromeOS gralloc implementation"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/minigbm"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+VIDEO_CARDS="amdgpu exynos intel marvell mediatek msm rockchip tegra virgl"
+# shellcheck disable=SC2086
+IUSE="kernel-3_18 $(printf 'video_cards_%s ' ${VIDEO_CARDS})"
+MINI_GBM_PLATFORMS_USE=( mt8183 mt8192 mt8195 )
+IUSE+=" ${MINI_GBM_PLATFORMS_USE[*]/#/minigbm_platform_}"
+
+RDEPEND="
+	!<media-libs/minigbm-0.0.1-r438
+	x11-libs/arc-libdrm[${MULTILIB_USEDEP}]
+"
+DEPEND="
+	${RDEPEND}
+	video_cards_amdgpu? ( virtual/arc-opengles )
+"
+
+src_configure() {
+	# Use arc-build base class to select the right compiler
+	arc-build-select-clang
+
+	# This packages uses -flto with gold, which doesn't support -Os
+	# or -Oz. This produces a 76KB .so, so optimizing for size is
+	# probably not a big deal.
+	cros_optimize_package_for_speed
+
+	BUILD_DIR="$(cros-workon_get_build_dir)"
+
+	append-lfs-flags
+
+	# TODO(gsingh): use pkgconfig
+	if use video_cards_intel; then
+		export DRV_I915=1
+		append-cppflags -DDRV_I915
+		if ! use kernel-3_18; then
+			append-cppflags -DI915_SCANOUT_Y_TILED
+		fi
+	fi
+
+	if use video_cards_rockchip; then
+		export DRV_ROCKCHIP=1
+		append-cppflags -DDRV_ROCKCHIP
+	fi
+
+	if use video_cards_mediatek; then
+		use minigbm_platform_mt8183 && append-cppflags -DMTK_MT8183
+		use minigbm_platform_mt8192 && append-cppflags -DMTK_MT8192
+		use minigbm_platform_mt8195 && append-cppflags -DMTK_MT8195
+		export DRV_MEDIATEK=1
+		append-cppflags -DDRV_MEDIATEK
+	fi
+
+	if use video_cards_msm; then
+		export DRV_MSM=1
+		append-cppflags -DDRV_MSM
+	fi
+
+	if use video_cards_amdgpu; then
+		export DRV_AMDGPU=1
+		append-cppflags -DDRV_AMDGPU -DHAVE_LIBDRM
+	fi
+
+	if use video_cards_virgl; then
+		export DRV_VIRGL=1
+		append-cppflags -DDRV_VIRGL -DVIRTIO_GPU_NEXT
+	fi
+
+	multilib-minimal_src_configure
+}
+
+multilib_src_compile() {
+	filter-flags "-DDRI_DRIVER_DIR=*"
+	append-cppflags -DDRI_DRIVER_DIR="/vendor/$(get_libdir)/dri"
+	export TARGET_DIR="${BUILD_DIR}/"
+	emake -C "${S}/cros_gralloc"
+	emake -C "${S}/cros_gralloc/gralloc0/tests/"
+}
+
+multilib_src_install() {
+	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/hw/"
+	doexe "${BUILD_DIR}"/gralloc.cros.so
+	into "/usr/local/"
+	# shellcheck disable=SC2154
+	newbin "${BUILD_DIR}"/gralloctest "gralloctest_${ABI}"
+}
+
+multilib_src_install_all() {
+	# Install cros_gralloc header files for arc-mali-* packages
+	insinto "/usr/include/cros_gralloc"
+	doins "${S}/cros_gralloc/cros_gralloc_handle.h"
+}
diff --git a/media-libs/arc-cros-gralloc/arc-cros-gralloc-9999.ebuild b/media-libs/arc-cros-gralloc/arc-cros-gralloc-9999.ebuild
index c91ed0d..944208b 100644
--- a/media-libs/arc-cros-gralloc/arc-cros-gralloc-9999.ebuild
+++ b/media-libs/arc-cros-gralloc/arc-cros-gralloc-9999.ebuild
@@ -15,8 +15,9 @@
 KEYWORDS="~*"
 
 VIDEO_CARDS="amdgpu exynos intel marvell mediatek msm rockchip tegra virgl"
-IUSE="kernel-3_8 kernel-3_14 kernel-3_18 $(printf 'video_cards_%s ' ${VIDEO_CARDS})"
-MINI_GBM_PLATFORMS_USE=( mt8183 mt8192 )
+# shellcheck disable=SC2086
+IUSE="kernel-3_18 $(printf 'video_cards_%s ' ${VIDEO_CARDS})"
+MINI_GBM_PLATFORMS_USE=( mt8183 mt8192 mt8195 )
 IUSE+=" ${MINI_GBM_PLATFORMS_USE[*]/#/minigbm_platform_}"
 
 RDEPEND="
@@ -45,7 +46,7 @@
 	if use video_cards_intel; then
 		export DRV_I915=1
 		append-cppflags -DDRV_I915
-		if ! (use kernel-3_8 || use kernel-3_14 || use kernel-3_18); then
+		if ! use kernel-3_18; then
 			append-cppflags -DI915_SCANOUT_Y_TILED
 		fi
 	fi
@@ -58,6 +59,7 @@
 	if use video_cards_mediatek; then
 		use minigbm_platform_mt8183 && append-cppflags -DMTK_MT8183
 		use minigbm_platform_mt8192 && append-cppflags -DMTK_MT8192
+		use minigbm_platform_mt8195 && append-cppflags -DMTK_MT8195
 		export DRV_MEDIATEK=1
 		append-cppflags -DDRV_MEDIATEK
 	fi
@@ -92,6 +94,7 @@
 	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/hw/"
 	doexe "${BUILD_DIR}"/gralloc.cros.so
 	into "/usr/local/"
+	# shellcheck disable=SC2154
 	newbin "${BUILD_DIR}"/gralloctest "gralloctest_${ABI}"
 }
 
diff --git a/media-libs/arc-mesa-amd/arc-mesa-amd-20.2.4-r30.ebuild b/media-libs/arc-mesa-amd/arc-mesa-amd-20.2.4-r30.ebuild
deleted file mode 100644
index 89004e4..0000000
--- a/media-libs/arc-mesa-amd/arc-mesa-amd-20.2.4-r30.ebuild
+++ /dev/null
@@ -1,222 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.9.ebuild,v 1.3 2010/12/05 17:19:14 arfrever Exp $
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="2fa8f6edee78cdb1d4fb174072b234e5cd57c383"
-CROS_WORKON_TREE="33dcd0c41baeace97dffee0b895a64f93a033f3e"
-CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
-CROS_WORKON_LOCALNAME="mesa-amd"
-
-inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
-
-DESCRIPTION="The Mesa 3D Graphics Library"
-HOMEPAGE="http://mesa3d.org/"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="*"
-
-VIDEO_CARDS="intel amdgpu radeon freedreno llvmpipe"
-for card in ${VIDEO_CARDS}; do
-	IUSE_VIDEO_CARDS+=" video_cards_${card}"
-done
-
-IUSE="${IUSE_VIDEO_CARDS}
-	android-container-pi -android_vulkan_compute_0 cheets debug
-	vulkan cheets_user cheets_user_64"
-
-# Only allow one vulkan driver as they all write vulkan.cheets.so.
-REQUIRED_USE="
-	android_vulkan_compute_0? ( vulkan )
-	vulkan? ( || ( video_cards_amdgpu video_cards_intel ) )
-"
-
-DEPEND="
-		>=x11-libs/arc-libdrm-2.4.82[${MULTILIB_USEDEP}]
-		sys-devel/arc-llvm:=[${MULTILIB_USEDEP}]
-		dev-libs/arc-libelf[${MULTILIB_USEDEP}]
-"
-
-RDEPEND="${DEPEND} !media-libs/arc-mesa"
-
-PATCHES=(
-	"${FILESDIR}"/CHROMIUM-radv-Disable-extensions-not-supported-by-nd.patch
-	"${FILESDIR}"/CHROMIUM-radv-Disable-1.1-on-ANDROID.patch
-)
-
-driver_list() {
-	local drivers="$(sort -u <<< "${1// /$'\n'}")"
-	echo "${drivers//$'\n'/,}"
-}
-
-src_configure() {
-	cros_optimize_package_for_speed
-	arc-build-select-clang
-	multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-	tc-getPROG PKG_CONFIG pkg-config
-
-	# Intel code
-	dri_driver_enable video_cards_intel i965
-
-	gallium_enable video_cards_llvmpipe swrast
-
-	# ATI code
-	gallium_enable video_cards_radeon r300 r600
-	gallium_enable video_cards_amdgpu radeonsi
-
-	# Freedreno code
-	gallium_enable video_cards_freedreno freedreno
-
-	if use vulkan; then
-		vulkan_enable video_cards_amdgpu amd
-		vulkan_enable video_cards_intel intel
-	fi
-
-	# Use llvm-config coming from ARC++ build.
-	export LLVM_CONFIG="${ARC_SYSROOT:?}/build/bin/llvm-config-host"
-
-	# The AOSP build system defines the Make variable
-	# PLATFORM_SDK_VERSION, and Mesa's Android.mk files use it to
-	# define the macro ANDROID_API_LEVEL. Arc emulates that here.
-	CPPFLAGS+=" -DANDROID_API_LEVEL=${ARC_PLATFORM_SDK_VERSION:?}"
-
-	arc-build-create-cross-file
-
-	emesonargs+=(
-		--prefix="${ARC_PREFIX}/vendor"
-		--sysconfdir="/system/vendor/etc"
-		-Ddri-search-path="/system/$(get_libdir)/dri:/system/vendor/$(get_libdir)/dri"
-		-Dgallium-va=false
-		-Dgallium-vdpau=false
-		-Dgallium-xvmc=false
-		-Dgallium-omx=disabled
-		-Dgallum-xa=false
-		-Dasm=false
-		-Dglx=disabled
-		-Ddri3=false
-		-Dgles-lib-suffix=_mesa
-		-Degl-lib-suffix=_mesa
-		-Dllvm=true
-		-Dplatforms=android
-		-Degl=true
-		-Dgbm=false
-		-Dgles1=true
-		-Dgles2=true
-		-Dshared-glapi=true
-		-Ddri-drivers=$(driver_list "${DRI_DRIVERS[*]}")
-		-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}")
-		-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}")
-		--buildtype $(usex debug debug release)
-		--cross-file="${ARC_CROSS_FILE}"
-		-Dplatform-sdk-version="${ARC_PLATFORM_SDK_VERSION:?}"
-	)
-
-	meson_src_configure
-}
-
-# The meson eclass exports src_compile but not multilib_src_compile. src_compile
-# gets overridden by multilib-minimal
-multilib_src_compile() {
-	meson_src_compile
-}
-
-multilib_src_install() {
-	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)"
-	newexe "${BUILD_DIR}/src/mapi/shared-glapi/libglapi.so.0" libglapi.so.0
-
-	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/egl"
-	newexe "${BUILD_DIR}/src/egl/libEGL_mesa.so" libEGL_mesa.so
-	newexe "${BUILD_DIR}/src/mapi/es1api/libGLESv1_CM_mesa.so" libGLESv1_CM_mesa.so
-	newexe "${BUILD_DIR}/src/mapi/es2api/libGLESv2_mesa.so" libGLESv2_mesa.so
-
-	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/dri"
-	if use video_cards_intel; then
-		newexe "${BUILD_DIR}/src/mesa/drivers/dri/libmesa_dri_drivers.so" i965_dri.so
-	fi
-	if use video_cards_llvmpipe; then
-		newexe "${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so" kms_swrast_dri.so
-	fi
-	if use video_cards_amdgpu; then
-		newexe "${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so" radeonsi_dri.so
-	fi
-
-	if use vulkan; then
-		exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/hw"
-		if use video_cards_amdgpu; then
-			newexe "${BUILD_DIR}/src/amd/vulkan/libvulkan_radeon.so" vulkan.cheets.so
-		fi
-		if use video_cards_intel; then
-			newexe "${BUILD_DIR}/src/intel/vulkan/libvulkan_intel.so" vulkan.cheets.so
-		fi
-	fi
-}
-
-multilib_src_install_all() {
-	# For documentation on the feature set represented by each XML file
-	# installed into /vendor/etc/permissions, see
-	# <https://developer.android.com/reference/android/content/pm/PackageManager.html>.
-	# For example XML files for each feature, see
-	# <https://android.googlesource.com/platform/frameworks/native/+/master/data/etc>.
-
-	# Install init files to advertise supported API versions.
-	insinto "${ARC_PREFIX}/vendor/etc/init"
-	doins "${FILESDIR}/init.gpu.rc"
-
-	# Install vulkan related files.
-	if use vulkan; then
-		einfo "Using android vulkan."
-		insinto "${ARC_PREFIX}/vendor/etc/init"
-		doins "${FILESDIR}/vulkan.rc"
-
-		insinto "${ARC_PREFIX}/vendor/etc/permissions"
-		doins "${FILESDIR}/android.hardware.vulkan.version-1_0_3.xml"
-		if use video_cards_intel; then
-			doins "${FILESDIR}/android.hardware.vulkan.level-1.xml"
-		else
-			doins "${FILESDIR}/android.hardware.vulkan.level-0.xml"
-		fi
-	fi
-
-	if use android_vulkan_compute_0; then
-		einfo "Using android vulkan_compute_0."
-		insinto "${ARC_PREFIX}/vendor/etc/permissions"
-		doins "${FILESDIR}/android.hardware.vulkan.compute-0.xml"
-	fi
-
-	# Install permission file to declare opengles aep support.
-	einfo "Using android aep."
-	insinto "${ARC_PREFIX}/vendor/etc/permissions"
-	doins "${FILESDIR}/android.hardware.opengles.aep.xml"
-
-	# Install the dri header for arc-cros-gralloc
-	insinto "${ARC_PREFIX}/vendor/include/"
-	doins -r "${S}/include/GL/"
-}
-
-# $1 - VIDEO_CARDS flag (check skipped for "--")
-# other args - names of DRI drivers to enable
-dri_driver_enable() {
-	if [[ $1 == -- ]] || use "$1"; then
-		shift
-		DRI_DRIVERS+=("$@")
-	fi
-}
-
-gallium_enable() {
-	if [[ $1 == -- ]] || use "$1"; then
-		shift
-		GALLIUM_DRIVERS+=("$@")
-	fi
-}
-
-vulkan_enable() {
-	if [[ $1 == -- ]] || use "$1"; then
-		shift
-		VULKAN_DRIVERS+=("$@")
-	fi
-}
diff --git a/media-libs/arc-mesa-amd/arc-mesa-amd-21.1.0-r49.ebuild b/media-libs/arc-mesa-amd/arc-mesa-amd-21.1.0-r49.ebuild
new file mode 100644
index 0000000..24d9e4d
--- /dev/null
+++ b/media-libs/arc-mesa-amd/arc-mesa-amd-21.1.0-r49.ebuild
@@ -0,0 +1,218 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.9.ebuild,v 1.3 2010/12/05 17:19:14 arfrever Exp $
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="ae283c6c143ae77e7dedbf3f9ea7f2f3ad945f87"
+CROS_WORKON_TREE="cbc74a968f7dbca5312df2f7cb8af5ecadf471c5"
+CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_LOCALNAME="mesa-amd"
+CROS_WORKON_EGIT_BRANCH="chromeos-amd"
+
+inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
+
+DESCRIPTION="The Mesa 3D Graphics Library"
+HOMEPAGE="http://mesa3d.org/"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="*"
+
+VIDEO_CARDS="intel amdgpu radeon freedreno llvmpipe"
+for card in ${VIDEO_CARDS}; do
+	IUSE_VIDEO_CARDS+=" video_cards_${card}"
+done
+
+IUSE="${IUSE_VIDEO_CARDS}
+	android-container-pi -android_vulkan_compute_0 cheets debug
+	vulkan cheets_user cheets_user_64"
+
+# Only allow one vulkan driver as they all write vulkan.cheets.so.
+REQUIRED_USE="
+	android_vulkan_compute_0? ( vulkan )
+	vulkan? ( || ( video_cards_amdgpu video_cards_intel ) )
+"
+
+DEPEND="
+		>=x11-libs/arc-libdrm-2.4.82[${MULTILIB_USEDEP}]
+		sys-devel/arc-llvm:=[${MULTILIB_USEDEP}]
+		dev-libs/arc-libelf[${MULTILIB_USEDEP}]
+"
+
+RDEPEND="${DEPEND} !media-libs/arc-mesa"
+
+driver_list() {
+	local drivers="$(sort -u <<< "${1// /$'\n'}")"
+	echo "${drivers//$'\n'/,}"
+}
+
+src_configure() {
+	cros_optimize_package_for_speed
+	arc-build-select-clang
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	tc-getPROG PKG_CONFIG pkg-config
+
+	# Intel code
+	dri_driver_enable video_cards_intel i965
+
+	gallium_enable video_cards_llvmpipe swrast
+
+	# ATI code
+	gallium_enable video_cards_radeon r300 r600
+	gallium_enable video_cards_amdgpu radeonsi
+
+	# Freedreno code
+	gallium_enable video_cards_freedreno freedreno
+
+	if use vulkan; then
+		vulkan_enable video_cards_amdgpu amd
+		vulkan_enable video_cards_intel intel
+	fi
+
+	# Use llvm-config coming from ARC++ build.
+	export LLVM_CONFIG="${ARC_SYSROOT:?}/build/bin/llvm-config-host"
+
+	# The AOSP build system defines the Make variable
+	# PLATFORM_SDK_VERSION, and Mesa's Android.mk files use it to
+	# define the macro ANDROID_API_LEVEL. Arc emulates that here.
+	CPPFLAGS+=" -DANDROID_API_LEVEL=${ARC_PLATFORM_SDK_VERSION:?}"
+
+	arc-build-create-cross-file
+
+	emesonargs+=(
+		--prefix="${ARC_PREFIX}/vendor"
+		--sysconfdir="/system/vendor/etc"
+		-Ddri-search-path="/system/$(get_libdir)/dri:/system/vendor/$(get_libdir)/dri"
+		-Dgallium-va=false
+		-Dgallium-vdpau=false
+		-Dgallium-xvmc=false
+		-Dgallium-omx=disabled
+		-Dgallum-xa=false
+		-Dasm=false
+		-Dglx=disabled
+		-Ddri3=false
+		-Dgles-lib-suffix=_mesa
+		-Degl-lib-suffix=_mesa
+		-Dllvm=true
+		-Dplatforms=android
+		-Degl=true
+		-Dgbm=false
+		-Dgles1=true
+		-Dgles2=true
+		-Dshared-glapi=true
+		-Ddri-drivers=$(driver_list "${DRI_DRIVERS[*]}")
+		-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}")
+		-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}")
+		--buildtype $(usex debug debug release)
+		--cross-file="${ARC_CROSS_FILE}"
+		-Dplatform-sdk-version="${ARC_PLATFORM_SDK_VERSION:?}"
+	)
+
+	meson_src_configure
+}
+
+# The meson eclass exports src_compile but not multilib_src_compile. src_compile
+# gets overridden by multilib-minimal
+multilib_src_compile() {
+	meson_src_compile
+}
+
+multilib_src_install() {
+	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)"
+	newexe "${BUILD_DIR}/src/mapi/shared-glapi/libglapi.so.0" libglapi.so.0
+
+	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/egl"
+	newexe "${BUILD_DIR}/src/egl/libEGL_mesa.so" libEGL_mesa.so
+	newexe "${BUILD_DIR}/src/mapi/es1api/libGLESv1_CM_mesa.so" libGLESv1_CM_mesa.so
+	newexe "${BUILD_DIR}/src/mapi/es2api/libGLESv2_mesa.so" libGLESv2_mesa.so
+
+	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/dri"
+	if use video_cards_intel; then
+		newexe "${BUILD_DIR}/src/mesa/drivers/dri/libmesa_dri_drivers.so" i965_dri.so
+	fi
+	if use video_cards_llvmpipe; then
+		newexe "${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so" kms_swrast_dri.so
+	fi
+	if use video_cards_amdgpu; then
+		newexe "${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so" radeonsi_dri.so
+	fi
+
+	if use vulkan; then
+		exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/hw"
+		if use video_cards_amdgpu; then
+			newexe "${BUILD_DIR}/src/amd/vulkan/libvulkan_radeon.so" vulkan.cheets.so
+		fi
+		if use video_cards_intel; then
+			newexe "${BUILD_DIR}/src/intel/vulkan/libvulkan_intel.so" vulkan.cheets.so
+		fi
+	fi
+}
+
+multilib_src_install_all() {
+	# For documentation on the feature set represented by each XML file
+	# installed into /vendor/etc/permissions, see
+	# <https://developer.android.com/reference/android/content/pm/PackageManager.html>.
+	# For example XML files for each feature, see
+	# <https://android.googlesource.com/platform/frameworks/native/+/master/data/etc>.
+
+	# Install init files to advertise supported API versions.
+	insinto "${ARC_PREFIX}/vendor/etc/init"
+	doins "${FILESDIR}/init.gpu.rc"
+
+	# Install vulkan related files.
+	if use vulkan; then
+		einfo "Using android vulkan."
+		insinto "${ARC_PREFIX}/vendor/etc/init"
+		doins "${FILESDIR}/vulkan.rc"
+
+		insinto "${ARC_PREFIX}/vendor/etc/permissions"
+		doins "${FILESDIR}/android.hardware.vulkan.version-1_0_3.xml"
+		if use video_cards_intel; then
+			doins "${FILESDIR}/android.hardware.vulkan.level-1.xml"
+		else
+			doins "${FILESDIR}/android.hardware.vulkan.level-0.xml"
+		fi
+	fi
+
+	if use android_vulkan_compute_0; then
+		einfo "Using android vulkan_compute_0."
+		insinto "${ARC_PREFIX}/vendor/etc/permissions"
+		doins "${FILESDIR}/android.hardware.vulkan.compute-0.xml"
+	fi
+
+	# Install permission file to declare opengles aep support.
+	einfo "Using android aep."
+	insinto "${ARC_PREFIX}/vendor/etc/permissions"
+	doins "${FILESDIR}/android.hardware.opengles.aep.xml"
+
+	# Install the dri header for arc-cros-gralloc
+	insinto "${ARC_PREFIX}/vendor/include/"
+	doins -r "${S}/include/GL/"
+}
+
+# $1 - VIDEO_CARDS flag (check skipped for "--")
+# other args - names of DRI drivers to enable
+dri_driver_enable() {
+	if [[ $1 == -- ]] || use "$1"; then
+		shift
+		DRI_DRIVERS+=("$@")
+	fi
+}
+
+gallium_enable() {
+	if [[ $1 == -- ]] || use "$1"; then
+		shift
+		GALLIUM_DRIVERS+=("$@")
+	fi
+}
+
+vulkan_enable() {
+	if [[ $1 == -- ]] || use "$1"; then
+		shift
+		VULKAN_DRIVERS+=("$@")
+	fi
+}
diff --git a/media-libs/arc-mesa-amd/arc-mesa-amd-9999.ebuild b/media-libs/arc-mesa-amd/arc-mesa-amd-9999.ebuild
index 1614a1f..af50e33 100644
--- a/media-libs/arc-mesa-amd/arc-mesa-amd-9999.ebuild
+++ b/media-libs/arc-mesa-amd/arc-mesa-amd-9999.ebuild
@@ -6,6 +6,7 @@
 
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
 CROS_WORKON_LOCALNAME="mesa-amd"
+CROS_WORKON_EGIT_BRANCH="chromeos-amd"
 
 inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
 
@@ -39,11 +40,6 @@
 
 RDEPEND="${DEPEND} !media-libs/arc-mesa"
 
-PATCHES=(
-	"${FILESDIR}"/CHROMIUM-radv-Disable-extensions-not-supported-by-nd.patch
-	"${FILESDIR}"/CHROMIUM-radv-Disable-1.1-on-ANDROID.patch
-)
-
 driver_list() {
 	local drivers="$(sort -u <<< "${1// /$'\n'}")"
 	echo "${drivers//$'\n'/,}"
diff --git a/media-libs/arc-mesa-amd/files/CHROMIUM-radv-Disable-1.1-on-ANDROID.patch b/media-libs/arc-mesa-amd/files/CHROMIUM-radv-Disable-1.1-on-ANDROID.patch
deleted file mode 100644
index d232a91..0000000
--- a/media-libs/arc-mesa-amd/files/CHROMIUM-radv-Disable-1.1-on-ANDROID.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 8e0890710c14324935b3bdd980b0fd828f8d6fab Mon Sep 17 00:00:00 2001
-From: Drew Davenport <ddavenport@google.com>
-Date: Wed, 11 Nov 2020 15:46:41 -0700
-Subject: [PATCH 2/2] CHROMIUM: radv: Disable 1.1 on ANDROID.
-
-Change-Id: Id8572a159cb9e2db54475ea85624ced1ca6d0f59
----
- src/amd/vulkan/radv_extensions.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/amd/vulkan/radv_extensions.py b/src/amd/vulkan/radv_extensions.py
-index 48439579a34..cc050287605 100644
---- a/src/amd/vulkan/radv_extensions.py
-+++ b/src/amd/vulkan/radv_extensions.py
-@@ -44,7 +44,7 @@ MAX_API_VERSION = '1.2.128'
- # TODO: The patch version should be unified!
- API_VERSIONS = [
-     ApiVersion('1.0.68',  True),
--    ApiVersion('1.1.107', True),
-+    ApiVersion('1.1.107', '!ANDROID'),
-     ApiVersion('1.2.131', '!ANDROID'),
- ]
- 
--- 
-2.26.2
-
diff --git a/media-libs/arc-mesa-amd/files/CHROMIUM-radv-Disable-extensions-not-supported-by-nd.patch b/media-libs/arc-mesa-amd/files/CHROMIUM-radv-Disable-extensions-not-supported-by-nd.patch
deleted file mode 100644
index 7bcfae0..0000000
--- a/media-libs/arc-mesa-amd/files/CHROMIUM-radv-Disable-extensions-not-supported-by-nd.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 34f9abc671919ab944e1effbac3ffee4a78d62f5 Mon Sep 17 00:00:00 2001
-From: Drew Davenport <ddavenport@chromium.org>
-Date: Thu, 22 Oct 2020 12:53:08 -0600
-Subject: [PATCH 1/2] CHROMIUM: radv: Disable extensions not supported by
- ndktranslation
-
-TEST=dEQP-VK.api passes on grunt
-
-Change-Id: I25453029bbdf9695476005f0571c8639171fbece
----
- src/amd/vulkan/radv_extensions.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/amd/vulkan/radv_extensions.py b/src/amd/vulkan/radv_extensions.py
-index e5ab9d37a73..48439579a34 100644
---- a/src/amd/vulkan/radv_extensions.py
-+++ b/src/amd/vulkan/radv_extensions.py
-@@ -56,12 +56,12 @@ MAX_API_VERSION = None # Computed later
- # the those extension strings, then tests dEQP-VK.api.info.instance.extensions
- # and dEQP-VK.api.info.device fail due to the duplicated strings.
- EXTENSIONS = [
--    Extension('VK_ANDROID_external_memory_android_hardware_buffer', 3, 'RADV_SUPPORT_ANDROID_HARDWARE_BUFFER  && device->rad_info.has_syncobj_wait_for_submit'),
-+    Extension('VK_ANDROID_external_memory_android_hardware_buffer', 3, False),
-     Extension('VK_ANDROID_native_buffer',                 5, 'ANDROID && device->rad_info.has_syncobj_wait_for_submit'),
-     Extension('VK_KHR_16bit_storage',                     1, True),
-     Extension('VK_KHR_bind_memory2',                      1, True),
-     Extension('VK_KHR_buffer_device_address',             1, True),
--    Extension('VK_KHR_create_renderpass2',                1, True),
-+    Extension('VK_KHR_create_renderpass2',                1, False),
-     Extension('VK_KHR_dedicated_allocation',              1, True),
-     Extension('VK_KHR_depth_stencil_resolve',             1, True),
-     Extension('VK_KHR_descriptor_update_template',        1, True),
--- 
-2.26.2
-
diff --git a/media-libs/arc-mesa-freedreno/arc-mesa-freedreno-21.0.0_pre-r44.ebuild b/media-libs/arc-mesa-freedreno/arc-mesa-freedreno-21.0.0_pre-r44.ebuild
deleted file mode 100644
index 859b77f..0000000
--- a/media-libs/arc-mesa-freedreno/arc-mesa-freedreno-21.0.0_pre-r44.ebuild
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright 2018 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.
-
-EAPI=6
-
-CROS_WORKON_COMMIT="88061634c9f65f4c9496c59e446acf71b862da17"
-CROS_WORKON_TREE="81076becad9df804deff46f52f64efa2f7f47288"
-CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
-CROS_WORKON_LOCALNAME="mesa-freedreno"
-
-inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
-
-DESCRIPTION="OpenGL-like graphic library for Linux"
-HOMEPAGE="http://mesa3d.sourceforge.net/"
-
-KEYWORDS="*"
-
-# Most files are MIT/X11.
-# Some files in src/glx are SGI-B-2.0.
-LICENSE="MIT SGI-B-2.0"
-SLOT="0"
-
-IUSE="
-	cheets
-	cheets_user
-	cheets_user_64
-	debug
-	-vulkan
-"
-
-REQUIRED_USE="
-	cheets
-"
-
-DEPEND="
-	>=x11-libs/arc-libdrm-2.4.82[${MULTILIB_USEDEP}]
-	dev-libs/arc-libelf[${MULTILIB_USEDEP}]
-"
-
-RDEPEND="${DEPEND}"
-
-pkg_pretend() {
-	if use vulkan; then
-		die "${PN} does not yet support vulkan"
-	fi
-}
-
-src_configure() {
-	arc-build-select-clang
-
-	multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-	tc-getPROG PKG_CONFIG pkg-config
-
-	emesonargs+=(
-		--prefix="${ARC_PREFIX}/vendor"
-		--sysconfdir="/system/vendor/etc"
-		-Ddri-search-path="/system/$(get_libdir)/dri:/system/vendor/$(get_libdir)/dri"
-		-Dllvm=disabled
-		-Ddri3=disabled
-		-Dshader-cache=enabled
-		-Dglx=disabled
-		-Degl=enabled
-		-Dgbm=disabled
-		-Dgles1=enabled
-		-Dgles2=enabled
-		-Dshared-glapi=enabled
-		-Ddri-drivers=
-		-Dgallium-drivers=freedreno
-		-Dgallium-vdpau=disabled
-		-Dgallium-xa=disabled
-		-Dplatforms=android
-		-Dplatform-sdk-version="${ARC_PLATFORM_SDK_VERSION}"
-		-Degl-lib-suffix=_mesa
-		-Dgles-lib-suffix=_mesa
-		--buildtype $(usex debug debug release)
-		-Dvulkan-drivers=$(usex vulkan freedreno '')
-	)
-
-	meson_src_configure
-}
-
-# The meson eclass exports src_compile but not multilib_src_compile. src_compile
-# gets overridden by multilib-minimal
-multilib_src_compile() {
-	meson_src_compile
-}
-
-multilib_src_install() {
-	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)"
-	newexe "${BUILD_DIR}/src/mapi/shared-glapi/libglapi.so.0" libglapi.so.0
-
-	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/egl"
-	newexe "${BUILD_DIR}/src/egl/libEGL_mesa.so" libEGL_mesa.so
-	newexe "${BUILD_DIR}/src/mapi/es1api/libGLESv1_CM_mesa.so" libGLESv1_CM_mesa.so
-	newexe "${BUILD_DIR}/src/mapi/es2api/libGLESv2_mesa.so" libGLESv2_mesa.so
-
-	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/dri"
-	newexe "${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so" msm_dri.so
-}
-
-multilib_src_install_all() {
-	# For documentation on the feature set represented by each XML file
-	# installed into /vendor/etc/permissions, see
-	# <https://developer.android.com/reference/android/content/pm/PackageManager.html>.
-	# For example XML files for each feature, see
-	# <https://android.googlesource.com/platform/frameworks/native/+/master/data/etc>.
-
-	# Install init files to advertise supported API versions.
-	insinto "${ARC_PREFIX}/vendor/etc/init"
-	doins "${FILESDIR}/gles31.rc"
-
-	# Install the dri header for arc-cros-gralloc
-	insinto "${ARC_PREFIX}/vendor/include/GL"
-	doins -r "${S}/include/GL/internal"
-}
diff --git a/media-libs/arc-mesa-freedreno/arc-mesa-freedreno-21.2.0_pre-r56.ebuild b/media-libs/arc-mesa-freedreno/arc-mesa-freedreno-21.2.0_pre-r56.ebuild
new file mode 100644
index 0000000..f8042eb
--- /dev/null
+++ b/media-libs/arc-mesa-freedreno/arc-mesa-freedreno-21.2.0_pre-r56.ebuild
@@ -0,0 +1,120 @@
+# Copyright 2018 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.
+
+EAPI=6
+
+CROS_WORKON_COMMIT="1cd57dc10179783f443e1c148bc144184250968e"
+CROS_WORKON_TREE="5e2d3eccd85d551dcd7d7bfa5dac28a8d680dc88"
+CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_LOCALNAME="mesa-freedreno"
+CROS_WORKON_EGIT_BRANCH="chromeos-freedreno"
+
+inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
+
+DESCRIPTION="OpenGL-like graphic library for Linux"
+HOMEPAGE="http://mesa3d.sourceforge.net/"
+
+KEYWORDS="*"
+
+# Most files are MIT/X11.
+# Some files in src/glx are SGI-B-2.0.
+LICENSE="MIT SGI-B-2.0"
+SLOT="0"
+
+IUSE="
+	cheets
+	cheets_user
+	cheets_user_64
+	debug
+	-vulkan
+"
+
+REQUIRED_USE="
+	cheets
+"
+
+DEPEND="
+	>=x11-libs/arc-libdrm-2.4.82[${MULTILIB_USEDEP}]
+	dev-libs/arc-libelf[${MULTILIB_USEDEP}]
+"
+
+RDEPEND="${DEPEND}"
+
+pkg_pretend() {
+	if use vulkan; then
+		die "${PN} does not yet support vulkan"
+	fi
+}
+
+src_configure() {
+	arc-build-select-clang
+
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	tc-getPROG PKG_CONFIG pkg-config
+
+	emesonargs+=(
+		--prefix="${ARC_PREFIX}/vendor"
+		--sysconfdir="/system/vendor/etc"
+		-Ddri-search-path="/system/$(get_libdir)/dri:/system/vendor/$(get_libdir)/dri"
+		-Dllvm=disabled
+		-Ddri3=disabled
+		-Dshader-cache=enabled
+		-Dglx=disabled
+		-Degl=enabled
+		-Dgbm=disabled
+		-Dgles1=enabled
+		-Dgles2=enabled
+		-Dshared-glapi=enabled
+		-Ddri-drivers=
+		-Dgallium-drivers=freedreno
+		-Dgallium-vdpau=disabled
+		-Dgallium-xa=disabled
+		-Dplatforms=android
+		-Dplatform-sdk-version="${ARC_PLATFORM_SDK_VERSION}"
+		-Degl-lib-suffix=_mesa
+		-Dgles-lib-suffix=_mesa
+		--buildtype $(usex debug debug release)
+		-Dvulkan-drivers=$(usex vulkan freedreno '')
+	)
+
+	meson_src_configure
+}
+
+# The meson eclass exports src_compile but not multilib_src_compile. src_compile
+# gets overridden by multilib-minimal
+multilib_src_compile() {
+	meson_src_compile
+}
+
+multilib_src_install() {
+	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)"
+	newexe "${BUILD_DIR}/src/mapi/shared-glapi/libglapi.so.0" libglapi.so.0
+
+	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/egl"
+	newexe "${BUILD_DIR}/src/egl/libEGL_mesa.so" libEGL_mesa.so
+	newexe "${BUILD_DIR}/src/mapi/es1api/libGLESv1_CM_mesa.so" libGLESv1_CM_mesa.so
+	newexe "${BUILD_DIR}/src/mapi/es2api/libGLESv2_mesa.so" libGLESv2_mesa.so
+
+	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/dri"
+	newexe "${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so" msm_dri.so
+}
+
+multilib_src_install_all() {
+	# For documentation on the feature set represented by each XML file
+	# installed into /vendor/etc/permissions, see
+	# <https://developer.android.com/reference/android/content/pm/PackageManager.html>.
+	# For example XML files for each feature, see
+	# <https://android.googlesource.com/platform/frameworks/native/+/master/data/etc>.
+
+	# Install init files to advertise supported API versions.
+	insinto "${ARC_PREFIX}/vendor/etc/init"
+	doins "${FILESDIR}/gles31.rc"
+
+	# Install the dri header for arc-cros-gralloc
+	insinto "${ARC_PREFIX}/vendor/include/GL"
+	doins -r "${S}/include/GL/internal"
+}
diff --git a/media-libs/arc-mesa-freedreno/arc-mesa-freedreno-9999.ebuild b/media-libs/arc-mesa-freedreno/arc-mesa-freedreno-9999.ebuild
index cfe9fa9..4e926ce 100644
--- a/media-libs/arc-mesa-freedreno/arc-mesa-freedreno-9999.ebuild
+++ b/media-libs/arc-mesa-freedreno/arc-mesa-freedreno-9999.ebuild
@@ -6,6 +6,7 @@
 
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
 CROS_WORKON_LOCALNAME="mesa-freedreno"
+CROS_WORKON_EGIT_BRANCH="chromeos-freedreno"
 
 inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
 
diff --git a/media-libs/arc-mesa-img/arc-mesa-img-19.0_pre1-r7.ebuild b/media-libs/arc-mesa-img/arc-mesa-img-19.0_pre1-r8.ebuild
similarity index 100%
rename from media-libs/arc-mesa-img/arc-mesa-img-19.0_pre1-r7.ebuild
rename to media-libs/arc-mesa-img/arc-mesa-img-19.0_pre1-r8.ebuild
diff --git a/media-libs/arc-mesa-img/arc-mesa-img-19.0_pre1.ebuild b/media-libs/arc-mesa-img/arc-mesa-img-19.0_pre1.ebuild
index 9cd3707..430b74f 100644
--- a/media-libs/arc-mesa-img/arc-mesa-img-19.0_pre1.ebuild
+++ b/media-libs/arc-mesa-img/arc-mesa-img-19.0_pre1.ebuild
@@ -8,6 +8,7 @@
 CROS_WORKON_TREE="040a39591a38d3dc778725575c72dcdc1b07e032"
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa-img"
 CROS_WORKON_LOCALNAME="mesa-img"
+CROS_WORKON_EGIT_BRANCH="mesa-img"
 CROS_WORKON_MANUAL_UPREV="1"
 
 EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
@@ -247,7 +248,7 @@
 
 	# TODO(drinkcat): We should provide a pkg-config file for this.
 	export PVR_CFLAGS="-I${SYSROOT}${ARC_PREFIX}/vendor/include"
-	export PVR_LIBS="-L${SYSROOT}${ARC_PREFIX}/vendor/lib -lcutils -llog -lpvr_dri_support "
+	export PVR_LIBS="-L${SYSROOT}${ARC_PREFIX}/vendor/$(get_libdir) -lcutils -llog -lpvr_dri_support "
 
 	ECONF_SOURCE="${S}" \
 	econf \
diff --git a/media-libs/arc-mesa-img/arc-mesa-img-9999.ebuild b/media-libs/arc-mesa-img/arc-mesa-img-9999.ebuild
index 021d805..18942f9 100644
--- a/media-libs/arc-mesa-img/arc-mesa-img-9999.ebuild
+++ b/media-libs/arc-mesa-img/arc-mesa-img-9999.ebuild
@@ -4,18 +4,17 @@
 
 EAPI="5"
 
-EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa-img"
 CROS_WORKON_LOCALNAME="mesa-img"
+CROS_WORKON_EGIT_BRANCH="mesa-img"
 CROS_WORKON_MANUAL_UPREV="1"
 
+EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
+
 inherit base autotools multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
 
 OPENGL_DIR="xorg-x11"
 
-#FOLDER="${PV/_rc*/}"
-#[[ ${PV/_rc*/} == ${PV} ]] || FOLDER+="/RC"
-
 DESCRIPTION="OpenGL-like graphic library for Linux"
 HOMEPAGE="http://mesa3d.sourceforge.net/"
 
@@ -77,18 +76,6 @@
 pkg_setup() {
 	# workaround toc-issue wrt #386545
 	use ppc64 && append-flags -mminimal-toc
-
-	# Remove symlinks created by an earlier version so we don't have
-	# install conflicts.
-	# TODO: Delete this after June 2019, since everybody should have
-	# upgraded by then.
-	local d
-	for d in EGL GL GLES GLES2 GLES3 KHR; do
-		local replaced_link="${ROOT}${ARC_PREFIX}/vendor/include/${d}"
-		if [[ -L "${replaced_link}" ]]; then
-			rm -f "${replaced_link}"
-		fi
-	done
 }
 
 src_prepare() {
@@ -161,12 +148,22 @@
 
 	epatch "${FILESDIR}"/CHROMIUM-radv-Disable-VK_KHR_create_renderpass2.patch
 
-	#
-	# No IMG patches in the *-9999.ebuild as pvr dri isn't upstream
-	#
+	# IMG patches
+	epatch "${FILESDIR}"/0001-dri-pvr-Introduce-PowerVR-DRI-driver.patch
+	epatch "${FILESDIR}"/0003-dri-Add-some-new-DRI-formats-and-fourccs.patch
+	epatch "${FILESDIR}"/0005-GL_EXT_sparse_texture-entry-points.patch
+	epatch "${FILESDIR}"/0006-Add-support-for-various-GLES-extensions.patch
+	epatch "${FILESDIR}"/0011-GL_EXT_shader_pixel_local_storage2-entry-points.patch
+	epatch "${FILESDIR}"/0012-GL_IMG_framebuffer_downsample-entry-points.patch
+	epatch "${FILESDIR}"/0013-GL_OVR_multiview-entry-points.patch
+	epatch "${FILESDIR}"/0014-Add-OVR_multiview_multisampled_render_to_texture.patch
+	epatch "${FILESDIR}"/0019-egl-automatically-call-eglReleaseThread-on-thread-te.patch
+	epatch "${FILESDIR}"/0040-GL_EXT_clip_control-entry-point.patch
+	epatch "${FILESDIR}"/0045-egl-dri2-try-to-bind-old-context-if-bindContext-fail.patch
+	epatch "${FILESDIR}"/0047-mapi-gen-always-use-offsets-from-static-data.patch
+	epatch "${FILESDIR}"/0601-mesa-img-Android-build-fixups.patch
 
 	base_src_prepare
-
 	eautoreconf
 }
 
@@ -187,6 +184,7 @@
 multilib_src_configure() {
 	tc-getPROG PKG_CONFIG pkg-config
 
+	# IMG code
 	driver_enable pvr
 
 	#
@@ -236,7 +234,7 @@
 
 	# TODO(drinkcat): We should provide a pkg-config file for this.
 	export PVR_CFLAGS="-I${SYSROOT}${ARC_PREFIX}/vendor/include"
-	export PVR_LIBS="-L${SYSROOT}${ARC_PREFIX}/vendor/lib -lcutils -llog -lpvr_dri_support "
+	export PVR_LIBS="-L${SYSROOT}${ARC_PREFIX}/vendor/$(get_libdir) -lcutils -llog -lpvr_dri_support "
 
 	ECONF_SOURCE="${S}" \
 	econf \
diff --git a/media-libs/arc-mesa-img/files/0001-dri-pvr-Introduce-PowerVR-DRI-driver.patch b/media-libs/arc-mesa-img/files/0001-dri-pvr-Introduce-PowerVR-DRI-driver.patch
index 92f23c8..6d58f92 100644
--- a/media-libs/arc-mesa-img/files/0001-dri-pvr-Introduce-PowerVR-DRI-driver.patch
+++ b/media-libs/arc-mesa-img/files/0001-dri-pvr-Introduce-PowerVR-DRI-driver.patch
@@ -1,34 +1,38 @@
-From e85a3db324dd8be32bb5d9028e2f90b0a1aab21d Mon Sep 17 00:00:00 2001
+From 8aa3e2d32b7a0a4c2db3dabbee178de078eb6377 Mon Sep 17 00:00:00 2001
 From: Frank Binns <frank.binns@imgtec.com>
-Date: Wed, 3 Jul 2019 10:48:29 +0100
-Subject: [PATCH 01/11] dri/pvr: Introduce PowerVR DRI driver.
+Date: Tue, 14 Apr 2020 09:47:46 +0100
+Subject: [PATCH] Add pvr dri driver
 
-Change-Id: Ied94552937389a736124347d2f068b7066eff198
 ---
- configure.ac                              |    7 +
- meson.build                               |   19 +-
- meson_options.txt                         |    4 +-
- src/mesa/drivers/dri/Makefile.am          |    6 +
- src/mesa/drivers/dri/meson.build          |    3 +
- src/mesa/drivers/dri/pvr/Makefile.am      |   44 +
- src/mesa/drivers/dri/pvr/Makefile.sources |   36 +
- src/mesa/drivers/dri/pvr/dri_support.h    |  969 ++++++++++++++
- src/mesa/drivers/dri/pvr/img_drm_fourcc.h |  110 ++
- src/mesa/drivers/dri/pvr/imgpixfmts.h     |   80 ++
- src/mesa/drivers/dri/pvr/imgyuv.h         |   58 +
- src/mesa/drivers/dri/pvr/mesa_context.c   |  258 ++++
- src/mesa/drivers/dri/pvr/meson.build      |   48 +
- src/mesa/drivers/dri/pvr/pvrcompat.c      | 1383 ++++++++++++++++++++
- src/mesa/drivers/dri/pvr/pvrdrawable.c    |  542 ++++++++
- src/mesa/drivers/dri/pvr/pvrdri.c         | 1018 +++++++++++++++
- src/mesa/drivers/dri/pvr/pvrdri.h         |  388 ++++++
- src/mesa/drivers/dri/pvr/pvrext.c         |  440 +++++++
- src/mesa/drivers/dri/pvr/pvrimage.c       | 1420 +++++++++++++++++++++
- src/mesa/drivers/dri/pvr/pvrimage.h       |  131 ++
- src/mesa/drivers/dri/pvr/pvrmesa.h        |   41 +
- src/mesa/drivers/dri/pvr/pvrutil.c        | 1067 ++++++++++++++++
- src/meson.build                           |    1 +
- 23 files changed, 8064 insertions(+), 9 deletions(-)
+ configure.ac                               |    7 +
+ meson.build                                |   17 +-
+ meson_options.txt                          |    4 +-
+ src/mesa/drivers/dri/Makefile.am           |    6 +
+ src/mesa/drivers/dri/meson.build           |    5 +
+ src/mesa/drivers/dri/pvr/Makefile.am       |   44 +
+ src/mesa/drivers/dri/pvr/Makefile.sources  |   40 +
+ src/mesa/drivers/dri/pvr/dri_support.h     | 1246 ++++++++++++++++
+ src/mesa/drivers/dri/pvr/img_drm_fourcc.h  |  113 ++
+ src/mesa/drivers/dri/pvr/imgpixfmts.h      |  307 ++++
+ src/mesa/drivers/dri/pvr/imgyuv.h          |   58 +
+ src/mesa/drivers/dri/pvr/mesa_context.c    |  203 +++
+ src/mesa/drivers/dri/pvr/meson.build       |   52 +
+ src/mesa/drivers/dri/pvr/pvrcb.c           |  269 ++++
+ src/mesa/drivers/dri/pvr/pvrcompat.c       | 1529 ++++++++++++++++++++
+ src/mesa/drivers/dri/pvr/pvrdrawable_mod.c |  384 +++++
+ src/mesa/drivers/dri/pvr/pvrdri.c          |  583 ++++++++
+ src/mesa/drivers/dri/pvr/pvrdri.h          |  171 +++
+ src/mesa/drivers/dri/pvr/pvrdri_mod.c      |  584 ++++++++
+ src/mesa/drivers/dri/pvr/pvrdri_mod.h      |  450 ++++++
+ src/mesa/drivers/dri/pvr/pvrdri_support.h  |  437 ++++++
+ src/mesa/drivers/dri/pvr/pvrext.c          |  701 +++++++++
+ src/mesa/drivers/dri/pvr/pvrext_mod.c      |  276 ++++
+ src/mesa/drivers/dri/pvr/pvrimage_mod.c    | 1282 ++++++++++++++++
+ src/mesa/drivers/dri/pvr/pvrmesa.h         |   36 +
+ src/mesa/drivers/dri/pvr/pvrutil.c         |  245 ++++
+ src/mesa/drivers/dri/pvr/pvrutil_mod.c     |  937 ++++++++++++
+ src/meson.build                            |    1 +
+ 28 files changed, 9979 insertions(+), 8 deletions(-)
  create mode 100644 src/mesa/drivers/dri/pvr/Makefile.am
  create mode 100644 src/mesa/drivers/dri/pvr/Makefile.sources
  create mode 100644 src/mesa/drivers/dri/pvr/dri_support.h
@@ -37,15 +41,20 @@
  create mode 100644 src/mesa/drivers/dri/pvr/imgyuv.h
  create mode 100644 src/mesa/drivers/dri/pvr/mesa_context.c
  create mode 100644 src/mesa/drivers/dri/pvr/meson.build
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrcb.c
  create mode 100644 src/mesa/drivers/dri/pvr/pvrcompat.c
- create mode 100644 src/mesa/drivers/dri/pvr/pvrdrawable.c
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrdrawable_mod.c
  create mode 100644 src/mesa/drivers/dri/pvr/pvrdri.c
  create mode 100644 src/mesa/drivers/dri/pvr/pvrdri.h
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrdri_mod.c
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrdri_mod.h
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrdri_support.h
  create mode 100644 src/mesa/drivers/dri/pvr/pvrext.c
- create mode 100644 src/mesa/drivers/dri/pvr/pvrimage.c
- create mode 100644 src/mesa/drivers/dri/pvr/pvrimage.h
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrext_mod.c
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrimage_mod.c
  create mode 100644 src/mesa/drivers/dri/pvr/pvrmesa.h
  create mode 100644 src/mesa/drivers/dri/pvr/pvrutil.c
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrutil_mod.c
 
 diff --git a/configure.ac b/configure.ac
 index d169223094f..4d9053bddfa 100644
@@ -87,7 +96,7 @@
                   src/mesa/drivers/osmesa/Makefile
                   src/mesa/drivers/osmesa/osmesa.pc
 diff --git a/meson.build b/meson.build
-index bfff862c3c8..648233f15ce 100644
+index bfff862c3c8..ccb9be264ca 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -96,9 +96,9 @@ if _drivers.contains('auto')
@@ -102,14 +111,14 @@
      else
        error('Unknown architecture @0@. Please pass -Ddri-drivers to set driver options. Patches gladly accepted to fix this.'.format(
              host_machine.cpu_family()))
-@@ -118,6 +118,7 @@ with_dri_r100 = _drivers.contains('r100')
- with_dri_r200 = _drivers.contains('r200')
- with_dri_nouveau = _drivers.contains('nouveau')
- with_dri_swrast = _drivers.contains('swrast')
+@@ -157,6 +157,7 @@ with_gallium_v3d = _drivers.contains('v3d')
+ with_gallium_etnaviv = _drivers.contains('etnaviv')
+ with_gallium_tegra = _drivers.contains('tegra')
+ with_gallium_i915 = _drivers.contains('i915')
 +with_dri_pvr = _drivers.contains('pvr')
- 
- with_dri = _drivers.length() != 0 and _drivers != ['']
- 
+ with_gallium_svga = _drivers.contains('svga')
+ with_gallium_virgl = _drivers.contains('virgl')
+ with_gallium_swr = _drivers.contains('swr')
 @@ -1118,15 +1119,17 @@ _drm_radeon_ver = '2.4.71'
  _drm_nouveau_ver = '2.4.66'
  _drm_etnaviv_ver = '2.4.89'
@@ -125,10 +134,9 @@
    ['radeon', (with_gallium_radeonsi or with_dri_r100 or with_dri_r200 or
 -              with_gallium_r300 or with_gallium_r600)],
 -  ['nouveau', (with_gallium_nouveau or with_dri_nouveau)],
--  ['etnaviv', with_gallium_etnaviv],
 +              with_gallium_r300 or with_gallium_r600), true],
 +  ['nouveau', (with_gallium_nouveau or with_dri_nouveau), true],
-+  ['etnaviv', with_gallium_etnaviv, true],
+   ['etnaviv', with_gallium_etnaviv],
 +  ['pvr', with_dri_pvr, false],
  ]
  
@@ -175,19 +183,21 @@
  SUBDIRS += swrast
  MEGADRIVERS_DEPS += swrast/libswrast_dri.la
 diff --git a/src/mesa/drivers/dri/meson.build b/src/mesa/drivers/dri/meson.build
-index d98c823f5fe..27213f7f660 100644
+index d98c823f5fe..1440adbc67b 100644
 --- a/src/mesa/drivers/dri/meson.build
 +++ b/src/mesa/drivers/dri/meson.build
-@@ -40,6 +40,9 @@ endif
- if with_dri_nouveau
-   subdir('nouveau')
+@@ -64,6 +64,11 @@ if dri_drivers != []
+     dri_link,
+   )
  endif
 +if with_dri_pvr
 +  subdir('pvr')
++  _dri_drivers += libpvr
++  _dri_link += 'pvr_dri.so'
 +endif
  
- if dri_drivers != []
-   libmesa_dri_drivers = shared_library(
+ # This needs to be installed if any dri drivers (including gallium dri drivers)
+ # are built.
 diff --git a/src/mesa/drivers/dri/pvr/Makefile.am b/src/mesa/drivers/dri/pvr/Makefile.am
 new file mode 100644
 index 00000000000..681c13e6102
@@ -240,10 +250,10 @@
 +libpvr_dri_la_LIBADD = $(PVR_LIBS)
 diff --git a/src/mesa/drivers/dri/pvr/Makefile.sources b/src/mesa/drivers/dri/pvr/Makefile.sources
 new file mode 100644
-index 00000000000..6e0c8eb39f9
+index 00000000000..6adc1a9a174
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/Makefile.sources
-@@ -0,0 +1,36 @@
+@@ -0,0 +1,40 @@
 +#
 +# Copyright (c) Imagination Technologies Ltd.
 +#
@@ -274,18 +284,22 @@
 +
 +pvr_FILES = \
 + mesa_context.c \
++ pvrcb.c \
 + pvrcompat.c \
-+ pvrdrawable.c \
++ pvrdrawable_mod.c \
 + pvrdri.c \
++ pvrdri_mod.c \
 + pvrext.c \
-+ pvrimage.c \
-+ pvrutil.c
++ pvrext_mod.c \
++ pvrimage_mod.c \
++ pvrutil.c \
++ pvrutil_mod.c
 diff --git a/src/mesa/drivers/dri/pvr/dri_support.h b/src/mesa/drivers/dri/pvr/dri_support.h
 new file mode 100644
-index 00000000000..fc5a8c47410
+index 00000000000..f7dd739fe03
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/dri_support.h
-@@ -0,0 +1,969 @@
+@@ -0,0 +1,1246 @@
 +/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
 +/* vi: set ts=8 sw=8 sts=8: */
 +/*************************************************************************/ /*!
@@ -395,6 +409,13 @@
 +	PVRDRI_CONFIG_ATTRIB_YUV_DEPTH_RANGE = 18,
 +	PVRDRI_CONFIG_ATTRIB_YUV_CSC_STANDARD = 19,
 +	PVRDRI_CONFIG_ATTRIB_YUV_PLANE_BPP = 20,
++
++	/* Valid for use with with PVRDRICallbacksV2 */
++	PVRDRI_CONFIG_ATTRIB_RED_MASK = 21,
++	PVRDRI_CONFIG_ATTRIB_GREEN_MASK = 22,
++	PVRDRI_CONFIG_ATTRIB_BLUE_MASK = 23,
++	PVRDRI_CONFIG_ATTRIB_ALPHA_MASK = 24,
++	PVRDRI_CONFIG_ATTRIB_SRGB_CAPABLE = 25
 +} PVRDRIConfigAttrib;
 +
 +typedef enum
@@ -464,6 +485,8 @@
 +#define PVRDRI_MESA_FORMAT_YCBCR		6
 +#define PVRDRI_MESA_FORMAT_YUV420_2PLANE	7
 +#define PVRDRI_MESA_FORMAT_YVU420_2PLANE	8
++#define PVRDRI_MESA_FORMAT_B8G8R8A8_SRGB	9
++#define PVRDRI_MESA_FORMAT_R8G8B8A8_SRGB	10
 +
 +/* The blit flags match their DRI counterparts */
 +#define PVRDRI_BLIT_FLAG_FLUSH		0x0001
@@ -475,7 +498,7 @@
 +#define	PVRDRI_IMAGE_TRANSFER_READ_WRITE	\
 +		(PVRDRI_IMAGE_TRANSFER_READ | PVRDRI_IMAGE_TRANSFER_WRITE)
 +
-+/* The YUV defines match their DRI counterparts */
++/* The PVRDRI_YUV defines match their __DRI_ATTRIB_YUV counterparts */
 +#define PVRDRI_YUV_ORDER_NONE 0x0
 +#define PVRDRI_YUV_ORDER_YUV  0x1
 +#define PVRDRI_YUV_ORDER_YVU  0x2
@@ -505,9 +528,9 @@
 +#define PVRDRI_YUV_PLANE_BPP_10   0x4
 +
 +/* Flags for PVRDRICallbacks.DrawableGetParametersV2 */
-+/* Since callback interface version 2 */
++/* Since PVRDRICallbacks version 2 */
 +#define PVRDRI_GETPARAMS_FLAG_ALLOW_RECREATE	0x1
-+/* Since callback interface version 3 */
++/* Since PVRDRICallbacks version 3 */
 +#define PVRDRI_GETPARAMS_FLAG_NO_UPDATE		0x2
 +
 +/*
@@ -518,7 +541,7 @@
 + */
 +#define	PVRDRI_FENCE_CAP_NATIVE_FD 0x1
 +
-+typedef struct 
++typedef struct
 +{
 +	IMG_PIXFMT          ePixFormat;
 +	uint32_t            uiWidth;
@@ -562,6 +585,7 @@
 +/* Since PVRDRICallbacks version 2 */
 +typedef struct PVRDRIConfigRec PVRDRIConfig;
 +
++/* PVRDRISupportInterface (deprecated) */
 +typedef struct {
 +	/**********************************************************************
 +	 * Version 0 interface
@@ -597,18 +621,18 @@
 +	                                        bool bFlushAllSurfaces,
 +	                                        bool bSwapBuffers,
 +	                                        bool bWaitForHW);
-+	/* EGLFreeResources is deprecated */
++	/* Obsolete (no longer supported) */
 +	bool                 (*EGLFreeResources)(PVRDRIScreenImpl *psPVRScreenImpl);
 +	void                 (*EGLMarkRendersurfaceInvalid)(PVRDRIAPIType eAPI,
 +	                                                    PVRDRIScreenImpl *psScreenImpl,
 +	                                                    PVRDRIContextImpl *psContextImpl);
-+	/* EGLSetFrontBufferCallback is deprecated */
++	/* Obsolete (no longer supported) */
 +	void                 (*EGLSetFrontBufferCallback)(PVRDRIAPIType eAPI,
 +	                                                  PVRDRIScreenImpl *psScreenImpl,
 +	                                                  PVRDRIDrawableImpl *psDrawableImpl,
 +	                                                  void (*pfnCallback)(PVRDRIDrawable *));
 +
-+	/* Deprecated in version 1 (since 1.10) */
++	/* Obsolete (no longer supported) */
 +	unsigned             (*CreateContext)(PVRDRIContextImpl **ppsContextImpl,
 +	                                          PVRDRIAPIType eAPI,
 +	                                          PVRDRIAPISubType eAPISub,
@@ -652,7 +676,7 @@
 +	                                        PVRDRIContextImpl *psContextImpl,
 +	                                        PVRDRIDrawableImpl *psDrawableImpl);
 +
-+	/* Deprecated in version 1 (since 1.10) */
++	/* Obsolete (no longer supported) */
 +	PVRDRIDrawableImpl  *(*CreateDrawable)(PVRDRIDrawable *psPVRDrawable);
 +
 +	void                 (*DestroyDrawable)(PVRDRIDrawableImpl *psScreenImpl);
@@ -691,6 +715,7 @@
 +	                                              const unsigned int *puiWidthShift,
 +	                                              const unsigned int *puiHeightShift);
 +
++	/* Obsolete (no longer supported) */
 +	PVRDRIBufferImpl    *(*BufferCreateFromName)(PVRDRIScreenImpl *psScreenImpl,
 +	                                             int iName,
 +	                                             int iWidth,
@@ -698,7 +723,7 @@
 +	                                             int iStride,
 +	                                             int iOffset);
 +
-+	/* BufferCreateFromFds is deprecated */
++	/* Obsolete (no longer supported) */
 +	PVRDRIBufferImpl    *(*BufferCreateFromFds)(PVRDRIScreenImpl *psScreenImpl,
 +	                                            int iWidth,
 +	                                            int iHeight,
@@ -770,10 +795,9 @@
 +	void                 (*DestroyFence)(void *psDRIFence);
 +
 +	/*
-+	 * Support for flushing commands in ClientWaitSync is deprecated
-+	 * in version 2 (since 1.11), with the caller being responsible
-+	 * for the flush. A context and API need not be supplied if a flush
-+	 * isn't requested.
++	 * When calling ClientWaitSync, the eAPI, psContextImpl and
++	 * bFlushCommands parameters must be set to PVRDRI_API_NONE,
++	 * NULL and false, respectively.
 +	 */
 +	bool                 (*ClientWaitSync)(PVRDRIAPIType eAPI,
 +	                                       PVRDRIContextImpl *psContextImpl,
@@ -786,11 +810,12 @@
 +	                                       PVRDRIContextImpl *psContextImpl,
 +	                                       void *psDRIFence);
 +
-+	/* Deprecated in version 2 (since 1.11) */
++	/* Obsolete (no longer supported) */
 +	void                 (*DestroyFences)(PVRDRIScreenImpl *psScreenImpl);
 +
 +	/* EGL interface functions */
-+	/* Deprecated in version 1 (since 1.10) */
++
++	/* Obsolete (no longer supported) */
 +	bool                 (*EGLDrawableConfigFromGLMode)(PVRDRIDrawableImpl *psPVRDrawable,
 +	                                                    PVRDRIConfigInfo *psConfigInfo,
 +	                                                    int supportedAPIs,
@@ -883,18 +908,16 @@
 +	int                  (*GetFenceFd)(void *psDRIFence);
 +} PVRDRISupportInterface;
 +
-+/* Callbacks into non-impl layer */
++/* Callbacks into non-impl layer (deprecated) */
 +typedef struct
 +{
 +	/**********************************************************************
 +	 * Version 0 callbacks
 +	 **********************************************************************/
 +
-+	/*
-+	 * DrawableRecreate and DrawableGetParameters are deprecated in
-+	 * version 1.
-+	 */
++	/* Obsolete (no longer supported) */
 +	bool                 (*DrawableRecreate)(PVRDRIDrawable *psPVRDrawable);
++	/* Obsolete (no longer supported) */
 +	bool                 (*DrawableGetParameters)(PVRDRIDrawable *psPVRDrawable,
 +	                                              PVRDRIBufferImpl **ppsDstBuffer,
 +	                                              PVRDRIBufferImpl **ppsAccumBuffer,
@@ -922,13 +945,7 @@
 +	 * Version 1 callbacks
 +	 **********************************************************************/
 +
-+	/*
-+	 * Deprecated in version 2 (since 1.10).
-+	 *
-+	 * DrawableGetParametersV1 is a replacement for DrawableRecreate
-+	 * and DrawableGetParameters. The DRI Support library must use one
-+	 * interface or the other, otherwise the results are undefined.
-+	 */
++	/* Obsolete (no longer supported) */
 +	bool                 (*DrawableGetParametersV1)(PVRDRIDrawable *psPVRDrawable,
 +                                                        bool bAllowRecreate,
 +	                                                PVRDRIBufferImpl **ppsDstBuffer,
@@ -971,296 +988,570 @@
 +} PVRDRICallbacks;
 +
 +/*
-+ * Older versions of the DRI support library don't support
-+ * PVRDRIRegisterVersionedCallbacks.
-+ * The caller is not required to preserve the PVRDRICallbacks structure
-+ * after the call, so the callee must make a copy.
++ * The caller of PVRDRIRegisterVersionedCallbacks is not required to preserve
++ * the PVRDRICallbacks structure after the call, so the callee may need to
++ * make a copy of the structure.
 + */
 +bool PVRDRIRegisterVersionedCallbacks(const PVRDRICallbacks *psCallbacks,
 +				      unsigned uVersion);
 +
-+/******************************************************************************
-+ * Everything beyond this point is deprecated
-+ ******************************************************************************/
++/* The context flags match their __DRI_CTX_RESET counterparts */
++#define PVRDRI_CONTEXT_RESET_NO_NOTIFICATION		0
++#define PVRDRI_CONTEXT_RESET_LOSE_CONTEXT		1
++
++/* The context flags match their __DRI_CTX_RELEASE counterparts */
++#define PVRDRI_CONTEXT_RELEASE_BEHAVIOR_NONE		0
++#define PVRDRI_CONTEXT_RELEASE_BEHAVIOR_FLUSH		1
++
++/* The flush flags match their __DRI2_FLUSH counterparts */
++#define	PVRDRI_FLUSH_DRAWABLE             (1 << 0)
++#define PVRDRI_FLUSH_CONTEXT              (1 << 1)
++#define PVRDRI_FLUSH_INVALIDATE_ANCILLARY (1 << 2)
++
++/* The throttle reason defines match their __DRI2_THROTTLE counterparts */
++#define PVRDRI_THROTTLE_SWAPBUFFER	0
++#define PVRDRI_THROTTLE_COPYSUBBUFFER	1
++#define PVRDRI_THROTTLE_FLUSHFRONT	2
++
++/* The render query defines match their __DRI2_RENDERER_HAS counterparts */
++#define PVRDRI_RENDERER_HAS_TEXTURE_3D			0x000b
++#define PVRDRI_RENDERER_HAS_FRAMEBUFFER_SRGB		0x000c
++
++#define PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY		0x000d
++#define PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_LOW	(1 << 0)
++#define PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_MEDIUM	(1 << 1)
++#define PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_HIGH	(1 << 2)
++
++#define PVRDRI_RENDERER_OPENGL_ES2_CONTEXT_CLIENT_VERSION_IMG 0x7001
++
++/* The fence extension defines match their __DRI2_FENCE counterparts */
++#define PVRDRI_FENCE_TIMEOUT_INFINITE		0xffffffffffffffffull
++#define PVRDRI_FENCE_FLAG_FLUSH_COMMANDS	(1 << 0)
++
++/* The YUV defines match their __DRI_YUV counterparts */
++#define PVRDRI_YUV_COLOR_SPACE_UNDEFINED	0
++#define PVRDRI_YUV_COLOR_SPACE_ITU_REC601	0x327F
++#define PVRDRI_YUV_COLOR_SPACE_ITU_REC709	0x3280
++#define PVRDRI_YUV_COLOR_SPACE_ITU_REC2020	0x3281
++
++#define PVRDRI_YUV_RANGE_UNDEFINED		0
++#define PVRDRI_YUV_FULL_RANGE			0x3282
++#define PVRDRI_YUV_NARROW_RANGE			0x3283
++
++#define PVRDRI_YUV_CHROMA_SITING_UNDEFINED	0
++#define PVRDRI_YUV_CHROMA_SITING_0		0x3284
++#define PVRDRI_YUV_CHROMA_SITING_0_5		0x3285
 +
 +/*
-+ * Calling PVRDRIRegisterCallbacks is equivalent to calling
-+ * PVRDRIRegisterVersionedCallbacks with a version number of zero.
-+ * The caller is not required to preserve the PVRDRICallbacks structure
-+ * after the call, so the callee must make a copy.
++ * The image component defines match their __DRI2_IMAGE_COMPONENTS
++ * counterparts.
 + */
-+void PVRDRIRegisterCallbacks(PVRDRICallbacks *callbacks);
++#define PVRDRI_IMAGE_COMPONENTS_RGB		0x3001
++#define PVRDRI_IMAGE_COMPONENTS_RGBA		0x3002
++#define PVRDRI_IMAGE_COMPONENTS_Y_U_V		0x3003
++#define PVRDRI_IMAGE_COMPONENTS_Y_UV		0x3004
++#define PVRDRI_IMAGE_COMPONENTS_Y_XUXV		0x3005
++#define PVRDRI_IMAGE_COMPONENTS_R		0x3006
++#define PVRDRI_IMAGE_COMPONENTS_RG		0x3007
++#define PVRDRI_IMAGE_COMPONENTS_Y_UXVX		0x3008
++#define PVRDRI_IMAGE_COMPONENTS_AYUV		0x3009
++#define PVRDRI_IMAGE_COMPONENTS_XYUV		0x300A
++#define PVRDRI_IMAGE_COMPONENTS_EXTERNAL	0x300B
 +
-+PVRDRIDeviceType PVRDRIGetDeviceTypeFromFd(int iFd);
++/*
++ * The image format modifier attribute defines match their
++ * __DRI_IMAGE_FORMAT_MODIFIER_ATTRIB counterparts.
++ */
++#define PVRDRI_IMAGE_FORMAT_MODIFIER_ATTRIB_PLANE_COUNT	0x0001
 +
-+bool PVRDRIIsFirstScreen(PVRDRIScreenImpl *psScreenImpl);
++/* The image attribute defines match their __DRI_IMAGE_ATTRIB counterparts */
++#define PVRDRI_IMAGE_ATTRIB_STRIDE		0x2000
++#define PVRDRI_IMAGE_ATTRIB_HANDLE		0x2001
++#define PVRDRI_IMAGE_ATTRIB_NAME		0x2002
++#define PVRDRI_IMAGE_ATTRIB_FORMAT		0x2003
++#define PVRDRI_IMAGE_ATTRIB_WIDTH		0x2004
++#define PVRDRI_IMAGE_ATTRIB_HEIGHT		0x2005
++#define PVRDRI_IMAGE_ATTRIB_COMPONENTS		0x2006
++#define PVRDRI_IMAGE_ATTRIB_FD			0x2007
++#define PVRDRI_IMAGE_ATTRIB_FOURCC		0x2008
++#define PVRDRI_IMAGE_ATTRIB_NUM_PLANES		0x2009
++#define PVRDRI_IMAGE_ATTRIB_OFFSET		0x200A
++#define PVRDRI_IMAGE_ATTRIB_MODIFIER_LOWER	0x200B
++#define PVRDRI_IMAGE_ATTRIB_MODIFIER_UPPER	0x200C
 +
-+uint32_t PVRDRIPixFmtGetDepth(IMG_PIXFMT eFmt);
-+uint32_t PVRDRIPixFmtGetBPP(IMG_PIXFMT eFmt);
-+uint32_t PVRDRIPixFmtGetBlockSize(IMG_PIXFMT eFmt);
++/* The GL defines match their EGL_GL counterparts */
++#define PVRDRI_GL_RENDERBUFFER			0x30B9
++#define PVRDRI_GL_TEXTURE_2D			0x30B1
++#define PVRDRI_GL_TEXTURE_3D			0x30B2
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_POSITIVE_X	0x30B3
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_NEGATIVE_X	0x30B4
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_POSITIVE_Y	0x30B5
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y	0x30B6
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_POSITIVE_Z	0x30B7
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z	0x30B8
 +
-+/* ScreenImpl functions */
-+PVRDRIScreenImpl *PVRDRICreateScreenImpl(int iFd);
-+void PVRDRIDestroyScreenImpl(PVRDRIScreenImpl *psScreenImpl);
++/* The CL defines match their EGL_CL counterparts */
++#define PVRDRI_CL_IMAGE_IMG			0x6010
 +
-+int PVRDRIAPIVersion(PVRDRIAPIType eAPI,
-+		     PVRDRIAPISubType eAPISub,
-+		     PVRDRIScreenImpl *psScreenImpl);
++/* The swap attribute defines match their __DRI_ATTRIB_SWAP counterparts */
++#define PVRDRI_ATTRIB_SWAP_NONE			0x0000
++#define PVRDRI_ATTRIB_SWAP_EXCHANGE		0x8061
++#define PVRDRI_ATTRIB_SWAP_COPY			0x8062
++#define PVRDRI_ATTRIB_SWAP_UNDEFINED		0x8063
 +
-+void *PVRDRIEGLGetLibHandle(PVRDRIAPIType eAPI,
-+			    PVRDRIScreenImpl *psScreenImpl);
++struct __DRIscreenRec;
++struct __DRIcontextRec;
++struct __DRIdrawableRec;
++struct __DRIbufferRec;
++struct __DRIconfigRec;
 +
-+PVRDRIGLAPIProc PVRDRIEGLGetProcAddress(PVRDRIAPIType eAPI,
-+					  PVRDRIScreenImpl *psScreenImpl,
-+					  const char *psProcName);
++struct DRISUPScreen;
++struct DRISUPContext;
++struct DRISUPDrawable;
++struct DRISUPBuffer;
 +
-+bool PVRDRIEGLFlushBuffers(PVRDRIAPIType eAPI,
-+                           PVRDRIScreenImpl *psScreenImpl,
-+                           PVRDRIContextImpl *psContextImpl,
-+                           PVRDRIDrawableImpl *psDrawableImpl,
-+                           bool bFlushAllSurfaces,
-+                           bool bSwapBuffers,
-+                           bool bWaitForHW);
-+bool PVRDRIEGLFreeResources(PVRDRIScreenImpl *psPVRScreenImpl);
-+void PVRDRIEGLMarkRendersurfaceInvalid(PVRDRIAPIType eAPI,
-+                                       PVRDRIScreenImpl *psScreenImpl,
-+                                       PVRDRIContextImpl *psContextImpl);
-+void PVRDRIEGLSetFrontBufferCallback(PVRDRIAPIType eAPI,
-+                                        PVRDRIScreenImpl *psScreenImpl,
-+                                        PVRDRIDrawableImpl *psDrawableImpl,
-+                                        void (*pfnCallback)(PVRDRIDrawable *));
++struct PVRDRIContextConfig
++{
++	unsigned int uMajorVersion;
++	unsigned int uMinorVersion;
++	uint32_t uFlags;
 +
-+unsigned PVRDRICreateContextImpl(PVRDRIContextImpl **ppsContextImpl,
-+				 PVRDRIAPIType eAPI,
-+				 PVRDRIAPISubType eAPISub,
-+				 PVRDRIScreenImpl *psScreenImpl,
-+				 const PVRDRIConfigInfo *psConfigInfo,
-+				 unsigned uMajorVersion,
-+				 unsigned uMinorVersion,
-+				 uint32_t uFlags,
-+				 bool bNotifyReset,
-+				 unsigned uPriority,
-+				 PVRDRIContextImpl *psSharedContextImpl);
++	int iResetStrategy;
++	unsigned int uPriority;
++	int iReleaseBehavior;
++};
 +
-+void PVRDRIDestroyContextImpl(PVRDRIContextImpl *psContextImpl,
-+			      PVRDRIAPIType eAPI,
-+			      PVRDRIScreenImpl *psScreenImpl);
++/* The image capability defines match their __DRI_IMAGE_CAP counterparts */
++#define	PVRDRI_IMAGE_CAP_GLOBAL_NAMES	1
 +
-+bool PVRDRIMakeCurrentGC(PVRDRIAPIType eAPI,
-+			 PVRDRIScreenImpl *psScreenImpl,
-+			 PVRDRIContextImpl *psContextImpl,
-+			 PVRDRIDrawableImpl *psWriteImpl,
-+			 PVRDRIDrawableImpl *psReadImpl);
++/*
++ * PVR DRI Support interface V2.
++ * This structure may change over time, as older interfaces become obsolete.
++ * For example, the v0 interface may be removed if superseded by newer
++ * interfaces.
++ */
++struct  PVRDRISupportInterfaceV2
++{
++	struct
++	{
++		struct DRISUPScreen *(*CreateScreen)
++			(struct __DRIscreenRec *psDRIScreen,
++			 int iFD,
++			 bool bUseInvalidate,
++			 void *pvLoaderPrivate,
++			 const struct __DRIconfigRec ***pppsConfigs,
++			 int *piMaxGLES1Version,
++			 int *piMaxGLES2Version);
 +
-+void PVRDRIMakeUnCurrentGC(PVRDRIAPIType eAPI,
-+			   PVRDRIScreenImpl *psScreenImpl);
++		void (*DestroyScreen)
++			(struct DRISUPScreen *psDRISUPScreen);
 +
-+unsigned PVRDRIGetImageSource(PVRDRIAPIType eAPI,
-+			      PVRDRIScreenImpl *psScreenImpl,
-+			      PVRDRIContextImpl *psContextImpl,
-+			      uint32_t  uiTarget,
-+			      uintptr_t uiBuffer,
-+			      uint32_t  uiLevel,
-+			      IMGEGLImage *psEGLImage);
++		unsigned int (*CreateContext)
++			(PVRDRIAPIType eAPI,
++			 PVRDRIConfig *psPVRDRIConfig,
++			 struct PVRDRIContextConfig *psCtxConfig,
++			 struct __DRIcontextRec *psDRIContext,
++			 struct DRISUPContext *psDRISUPSharedContext,
++			 struct DRISUPScreen *psDRISUPScreen,
++			 struct DRISUPContext **ppsDRISUPContext);
 +
-+bool PVRDRI2BindTexImage(PVRDRIAPIType eAPI,
-+			 PVRDRIScreenImpl *psScreenImpl,
-+			 PVRDRIContextImpl *psContextImpl,
-+			 PVRDRIDrawableImpl *psDrawableImpl);
++		void (*DestroyContext)
++			(struct DRISUPContext *psDRISUPContext);
 +
-+void PVRDRI2ReleaseTexImage(PVRDRIAPIType eAPI,
-+			    PVRDRIScreenImpl *psScreenImpl,
-+			    PVRDRIContextImpl *psContextImpl,
-+			    PVRDRIDrawableImpl *psDrawableImpl);
++		struct DRISUPDrawable *(*CreateDrawable)
++			(struct __DRIdrawableRec *psDRIDrawable,
++			 struct DRISUPScreen *psDRISUPDrawable,
++			 void *pvLoaderPrivate,
++			 PVRDRIConfig *psPVRDRIConfig);
 +
-+/* DrawableImpl functions */
-+PVRDRIDrawableImpl *PVRDRICreateDrawableImpl(PVRDRIDrawable *psPVRDrawable);
-+void PVRDRIDestroyDrawableImpl(PVRDRIDrawableImpl *psScreenImpl);
-+bool PVREGLDrawableCreate(PVRDRIScreenImpl *psScreenImpl,
-+                          PVRDRIDrawableImpl *psDrawableImpl);
-+bool PVREGLDrawableRecreate(PVRDRIScreenImpl *psScreenImpl,
-+                            PVRDRIDrawableImpl *psDrawableImpl);
-+bool PVREGLDrawableDestroy(PVRDRIScreenImpl *psScreenImpl,
-+                           PVRDRIDrawableImpl *psDrawableImpl);
-+void PVREGLDrawableDestroyConfig(PVRDRIDrawableImpl *psDrawableImpl);
++		void (*DestroyDrawable)
++			(struct DRISUPDrawable *psDRISUPDrawable);
 +
-+/* Buffer functions */
-+PVRDRIBufferImpl *PVRDRIBufferCreate(PVRDRIScreenImpl *psScreenImpl,
-+				     int iWidth,
-+				     int iHeight,
-+				     unsigned int uiBpp,
-+				     unsigned int uiUseFlags,
-+				     unsigned int *puiStride);
++		bool (*MakeCurrent)
++			(struct DRISUPContext *psDRISUPContext,
++			 struct DRISUPDrawable *psDRISUPWrite,
++			 struct DRISUPDrawable *psDRISUPRead);
 +
-+PVRDRIBufferImpl *
-+PVRDRIBufferCreateWithModifiers(PVRDRIScreenImpl *psScreenImpl,
-+			        int iWidth,
-+			        int iHeight,
-+			        int iFormat,
-+				IMG_PIXFMT eIMGPixelFormat,
-+			        const uint64_t *puiModifiers,
-+			        unsigned int uiModifierCount,
-+			        unsigned int *puiStride);
++		bool (*UnbindContext)
++			(struct DRISUPContext *psDRISUPContext);
 +
-+PVRDRIBufferImpl *PVRDRIBufferCreateFromNames(PVRDRIScreenImpl *psScreenImpl,
-+					   int iWidth,
-+					   int iHeight,
-+					   unsigned uiNumPlanes,
-+					   const int *piName,
-+					   const int *piStride,
-+					   const int *piOffset,
-+					   const unsigned int *puiWidthShift,
-+					   const unsigned int *puiHeightShift);
++		struct DRISUPBuffer *(*AllocateBuffer)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 unsigned int uAttachment,
++			 unsigned int uFormat,
++			 int iWidth,
++			 int iHeight,
++			 unsigned int *puName,
++			 unsigned int *puPitch,
++			 unsigned int *puCPP,
++			 unsigned int *puFlags);
 +
-+PVRDRIBufferImpl *PVRDRIBufferCreateFromName(PVRDRIScreenImpl *psScreenImpl,
-+					     int iName,
-+					     int iWidth,
-+					     int iHeight,
-+					     int iStride,
-+					     int iOffset);
++		void (*ReleaseBuffer)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 struct DRISUPBuffer *psDRISUPBuffer);
 +
-+PVRDRIBufferImpl *PVRDRIBufferCreateFromFds(PVRDRIScreenImpl *psScreenImpl,
-+					   int iWidth,
-+					   int iHeight,
-+					   unsigned uiNumPlanes,
-+					   const int *piFd,
-+					   const int *piStride,
-+					   const int *piOffset,
-+					   const unsigned int *puiWidthShift,
-+					   const unsigned int *puiHeightShift);
++		/* Functions to support the DRI TexBuffer extension */
++		void (*SetTexBuffer2)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iTarget,
++			 int iFormat,
++			 struct DRISUPDrawable *psDRISUPDrawable);
 +
-+PVRDRIBufferImpl *
-+PVRDRIBufferCreateFromFdsWithModifier(PVRDRIScreenImpl *psScreenImpl,
-+				      int iWidth,
-+				      int iHeight,
-+				      uint64_t uiModifier,
-+				      unsigned uiNumPlanes,
-+				      const int *piFd,
-+				      const int *piStride,
-+				      const int *piOffset,
-+				      const unsigned int *puiWidthShift,
-+				      const unsigned int *puiHeightShift);
++		void (*ReleaseTexBuffer)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iTarget,
++			 struct DRISUPDrawable *psDRISUPDrawable);
 +
-+PVRDRIBufferImpl *PVRDRISubBufferCreate(PVRDRIScreenImpl *psScreen,
-+					PVRDRIBufferImpl *psParent,
-+					int plane);
++		/* Functions to support the DRI Flush extension */
++		void (*Flush)
++			(struct DRISUPDrawable *psDRISUPDrawable);
 +
-+void PVRDRIBufferDestroy(PVRDRIBufferImpl *psBuffer);
++		void (*Invalidate)
++			(struct DRISUPDrawable *psDRISUPDrawable);
 +
-+int PVRDRIBufferGetFd(PVRDRIBufferImpl *psBuffer);
++		void (*FlushWithFlags)
++			(struct DRISUPContext *psDRISUPContext,
++			 struct DRISUPDrawable *psDRISUPDrawable,
++			 unsigned int uFlags,
++			 unsigned int uThrottleReason);
 +
-+int PVRDRIBufferGetHandle(PVRDRIBufferImpl *psBuffer);
++		/* Functions to support the DRI Image extension */
++		__DRIimage *(*CreateImageFromName)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 int iName,
++			 int iPitch,
++			 void *pvLoaderPrivate);
 +
-+uint64_t PVRDRIBufferGetModifier(PVRDRIBufferImpl *psBuffer);
++		__DRIimage *(*CreateImageFromRenderbuffer)
++			(struct DRISUPContext *psDRISUPContext,
++			int iRenderBuffer,
++			void *pvLoaderPrivate);
 +
-+int PVRDRIBufferGetName(PVRDRIBufferImpl *psBuffer);
++		void (*DestroyImage)
++			(__DRIimage *psImage);
 +
-+int PVRDRIBufferGetOffset(PVRDRIBufferImpl *psBuffer);
++		__DRIimage *(*CreateImage)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 unsigned int uUse,
++			 void *pvLoaderPrivate);
 +
-+/* Image functions */
-+IMGEGLImage *PVRDRIEGLImageCreate(void);
-+IMGEGLImage *PVRDRIEGLImageCreateFromBuffer(int iWidth,
-+					   int iHeight,
-+					   int iStride,
-+					   IMG_PIXFMT ePixelFormat,
-+					   IMG_YUV_COLORSPACE eColourSpace,
-+					   IMG_YUV_CHROMA_INTERP eChromaUInterp,
-+					   IMG_YUV_CHROMA_INTERP eChromaVInterp,
-+					   PVRDRIBufferImpl *psBuffer);
++		bool (*QueryImage)
++			(__DRIimage *psImage,
++			 int iAttrib,
++			 int *iValue);
 +
-+IMGEGLImage *PVRDRIEGLImageCreateFromSubBuffer(IMG_PIXFMT ePixelFormat,
-+					       PVRDRIBufferImpl *psSubBuffer);
++		__DRIimage *(*DupImage)
++			(__DRIimage *psImage,
++			 void *pvLoaderPrivate);
 +
-+IMGEGLImage *PVRDRIEGLImageDup(IMGEGLImage *psIn);
++		bool (*ValidateImageUsage)
++			(__DRIimage *psImage,
++			 unsigned int uUse);
 +
-+void PVRDRIEGLImageSetCallbackData(IMGEGLImage *psEGLImage, __DRIimage *image);
++		__DRIimage *(*CreateImageFromNames)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 int *piNames,
++			 int iNumNames,
++			 int *piStrides,
++			 int *piOffsets,
++			 void *pvLoaderPrivate);
++			 __DRIimage *(*FromPlanar)(__DRIimage *psImage,
++			 int iPlane,
++			 void *pvLoaderPrivate);
 +
-+void PVRDRIEGLImageDestroyExternal(PVRDRIScreenImpl *psScreenImpl,
-+                                   IMGEGLImage *psEGLImage,
-+				   PVRDRIEGLImageType eglImageType);
-+void PVRDRIEGLImageFree(IMGEGLImage *psEGLImage);
++		__DRIimage *(*CreateImageFromTexture)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iTarget,
++			 unsigned int uTexture,
++			 int iDepth,
++			 int iLevel,
++			 unsigned int *puError,
++			 void *pvLoaderPrivate);
 +
-+void PVRDRIEGLImageGetAttribs(IMGEGLImage *psEGLImage, PVRDRIBufferAttribs *psAttribs);
++		__DRIimage *(*CreateImageFromFDs)
++			(struct DRISUPScreen *psDRISUPcreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 int *piFDs,
++			 int iNumFDs,
++			 int *piStrides,
++			 int *piOffsets,
++			 void *pvLoaderPrivate);
 +
-+/* Sync functions */
-+void *PVRDRICreateFenceImpl(PVRDRIAPIType eAPI,
-+			    PVRDRIScreenImpl *psScreenImpl,
-+			    PVRDRIContextImpl *psContextImpl);
++		__DRIimage *(*CreateImageFromDMABufs)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 int *piFDs,
++			 int iNumFDs,
++			 int *piStrides,
++			 int *piOffsets,
++			 unsigned int uColorSpace,
++			 unsigned int uSampleRange,
++			 unsigned int uHorizSiting,
++			 unsigned int uVertSiting,
++			 unsigned int *puError,
++			 void *pvLoaderPrivate);
 +
-+void PVRDRIDestroyFenceImpl(void *psDRIFence);
++		int (*GetImageCapabilities)
++			(struct DRISUPScreen *psDRISUPScreen);
 +
-+bool PVRDRIClientWaitSyncImpl(PVRDRIAPIType eAPI,
-+			      PVRDRIContextImpl *psContextImpl,
-+			      void *psDRIFence,
-+			      bool bFlushCommands,
-+			      bool bTimeout,
-+			      uint64_t uiTimeout);
++		void (*BlitImage)
++			(struct DRISUPContext *psDRISUPContext,
++			 __DRIimage *psDst,
++			 __DRIimage *psSrc,
++			 int iDstX0,
++			 int iDstY0,
++			 int iDstWidth,
++			 int iDstHeight,
++			 int iSrcX0, int
++			 iSrcY0,
++			 int iSrcWidth,
++			 int iSrcHeight,
++			 int iFlushFlag);
 +
-+bool PVRDRIServerWaitSyncImpl(PVRDRIAPIType eAPI,
-+			      PVRDRIContextImpl *psContextImpl,
-+			      void *psDRIFence);
++		void *(*MapImage)
++			(struct DRISUPContext *psDRISUPContext,
++			 __DRIimage *psImage,
++			 int iX0,
++			 int iY0,
++			 int iWidth,
++			 int iHeight,
++			 unsigned int uFlags,
++			 int *piStride,
++			 void **ppvData);
 +
-+void PVRDRIDestroyFencesImpl(PVRDRIScreenImpl *psScreenImpl);
-+
-+/* EGL interface functions */
-+bool PVRDRIEGLDrawableConfigFromGLMode(PVRDRIDrawableImpl *psPVRDrawable,
-+				       PVRDRIConfigInfo *psConfigInfo,
-+				       int supportedAPIs,
-+				       IMG_PIXFMT ePixFmt);
-+
-+/* Blit functions */
-+bool PVRDRIBlitEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+		        PVRDRIContextImpl *psContextImpl,
-+			IMGEGLImage *psDstImage, PVRDRIBufferImpl *psDstBuffer,
-+			IMGEGLImage *psSrcImage, PVRDRIBufferImpl *psSrcBuffer,
-+			int iDstX, int iDstY, int iDstWidth, int iDstHeight,
-+			int iSrcX, int iSrcY, int iSrcWidth, int iSrcHeight,
-+			int iFlushFlag);
-+
-+/* Mapping functions */
-+void *PVRDRIMapEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+			PVRDRIContextImpl *psContextImpl,
-+			IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
-+			int iX, int iY, int iWidth, int iHeight,
-+			unsigned uiFlags, int *piStride, void **ppvData);
-+
-+bool PVRDRIUnmapEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+			 PVRDRIContextImpl *psContextImpl,
-+			 IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
++		void (*UnmapImage)
++			(struct DRISUPContext *psDRISUPContext,
++			 __DRIimage *psImage,
 +			 void *pvData);
 +
-+/* PVR utility support functions */
-+bool PVRDRIMesaFormatSupported(unsigned fmt);
-+unsigned PVRDRIDepthStencilBitArraySize(void);
-+const uint8_t *PVRDRIDepthBitsArray(void);
-+const uint8_t *PVRDRIStencilBitsArray(void);
-+unsigned PVRDRIMSAABitArraySize(void);
-+const uint8_t *PVRDRIMSAABitsArray(void);
-+uint32_t PVRDRIMaxPBufferWidth(void);
-+uint32_t PVRDRIMaxPBufferHeight(void);
++		__DRIimage *(*CreateImageWithModifiers)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 const uint64_t *puModifiers,
++			 const unsigned int uModifierCount,
++			 void *pvLoaderPrivate);
 +
-+unsigned PVRDRIGetNumAPIFuncs(PVRDRIAPIType eAPI);
-+const char *PVRDRIGetAPIFunc(PVRDRIAPIType eAPI, unsigned index);
++		__DRIimage *(*CreateImageFromDMABufs2)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 uint64_t uModifier,
++			 int *piFDs,
++			 int iNumFDs,
++			 int *piStrides,
++			 int *piOffsets,
++			 unsigned int uColorSpace,
++			 unsigned int uSampleRange,
++			 unsigned int uHorizSiting,
++			 unsigned int uVertSiting,
++			 unsigned int *puError,
++			 void *pvLoaderPrivate);
 +
-+int PVRDRIQuerySupportedFormats(PVRDRIScreenImpl *psScreenImpl,
-+				unsigned uNumFormats,
-+				const int *piFormats,
-+				const IMG_PIXFMT *peImgFormats,
-+				bool *pbSupported);
++		bool (*QueryDMABufFormats)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iMax,
++			 int *piFormats,
++			 int *piCount);
 +
-+int PVRDRIQueryModifiers(PVRDRIScreenImpl *psScreenImpl,
-+			 int iFormat,
-+			 IMG_PIXFMT eImgFormat,
++		bool (*QueryDMABufModifiers)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iFourCC,
++			 int iMax,
 +			 uint64_t *puModifiers,
-+			 unsigned *puExternalOnly);
++			 unsigned int *piExternalOnly,
++			 int *piCount);
++
++		bool (*QueryDMABufFormatModifierAttribs)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 uint32_t uFourcc,
++			 uint64_t uModifier,
++			 int iAttrib,
++			 uint64_t *puValue);
++
++		__DRIimage *(*CreateImageFromRenderBuffer2)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iRenderBuffer,
++			 void *pvLoaderPrivate,
++			 unsigned int *puError);
++
++		__DRIimage *(*CreateImageFromBuffer)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iTarget,
++			 void *pvBuffer,
++			 unsigned int *puError,
++			 void *pvLoaderPrivate);
++
++		/* Functions to support the DRI Renderer Query extension */
++		int (*QueryRendererInteger)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iAttribute,
++			 unsigned int *puValue);
++
++		int (*QueryRendererString)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iAttribute,
++			 const char **ppszValue);
++
++		/* Functions to support the DRI Fence extension */
++		void *(*CreateFence)
++			(struct DRISUPContext *psDRISUPContext);
++
++		void (*DestroyFence)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 void *pvFence);
++
++		bool (*ClientWaitSync)
++			(struct DRISUPContext *psDRISUPContext,
++			 void *pvFence,
++			 unsigned int uFlags,
++			 uint64_t uTimeout);
++
++		void (*ServerWaitSync)
++			(struct DRISUPContext *psDRISUPContext,
++			 void *pvFence,
++			 unsigned int uFlags);
++
++		unsigned int (*GetFenceCapabilities)
++			(struct DRISUPScreen *psDRISUPScreen);
++
++		void *(*CreateFenceFD)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iFD);
++
++		int (*GetFenceFD)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 void *pvFence);
++
++		unsigned int (*GetNumAPIProcs)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 PVRDRIAPIType eAPI);
++
++		const char *(*GetAPIProcName)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 PVRDRIAPIType eAPI,
++			 unsigned int uIndex);
++
++		void *(*GetAPIProcAddress)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 PVRDRIAPIType eAPI,
++			 unsigned int uIndex);
++
++		void (*SetDamageRegion)
++			(struct DRISUPDrawable *psDRISUPDrawable,
++			 unsigned int uNRects,
++			 int *piRects);
++	} v0;
++	/* The v1 interface is an extension of v0, so v0 is required as well */
++	struct {
++		void *(*GetFenceFromCLEvent)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 intptr_t iCLEvent);
++	} v1;
++};
++
++/*
++ * Buffer mask values for the GetBuffers callback. These are the same as
++ * their enum __DRIimageBufferMask counterparts.
++ */
++#define PVRDRI_IMAGE_BUFFER_BACK	(1U << 0)
++#define PVRDRI_IMAGE_BUFFER_FRONT	(1U << 1)
++#define PVRDRI_IMAGE_BUFFER_PREV	(1U << 31)
++
++struct PVRDRIImageList {
++	uint32_t uImageMask;
++	__DRIimage *psBack;
++	__DRIimage *psFront;
++	__DRIimage *psPrev;
++};
++
++/* The loader capabilities defines match their dri_loader_cap counterparts */
++#define	PVRDRI_LOADER_CAP_RGBA_ORDERING	0
++
++/*
++ * PVR DRI Support callback interface V2.
++ * This structure may change over time, as older interfaces become obsolete.
++ * For example, the v0 interface may be removed if superseded by newer
++ * interfaces.
++ */
++struct PVRDRICallbacksV2
++{
++	struct {
++		bool (*RegisterSupportInterface)
++			(const void *psInterface,
++			 unsigned int uVersion,
++			 unsigned int uMinVersion);
++
++		int (*GetBuffers)
++			(struct __DRIdrawableRec *psDRIDrawable,
++			 unsigned int uFourCC,
++			 uint32_t *puStamp,
++			 void *pvLoaderPrivate,
++			 uint32_t uBufferMask,
++			 struct PVRDRIImageList *psImageList);
++
++		bool (*CreateConfigs)
++			(struct __DRIconfigRec ***pppsConfigs,
++			 struct __DRIscreenRec *psDRIScreen,
++			 int iPVRDRIMesaFormat,
++			 const uint8_t *puDepthBits,
++			 const uint8_t *puStencilBits,
++			 unsigned int uNumDepthStencilBits,
++			 const unsigned int *puDBModes,
++			 unsigned int uNumDBModes,
++			 const uint8_t *puMSAASamples,
++			 unsigned int uNumMSAAModes,
++			 bool bEnableAccum,
++			 bool bColorDepthMatch,
++			 bool bMutableRenderBuffer,
++			 int iYUVDepthRange,
++			 int iYUVCSCStandard,
++			 uint32_t uMaxPbufferWidth,
++			 uint32_t uMaxPbufferHeight);
++
++		struct __DRIconfigRec **(*ConcatConfigs)
++			(struct __DRIscreenRec *psDRIScreen,
++			 struct __DRIconfigRec **ppsConfigA,
++			 struct __DRIconfigRec **ppsConfigB);
++
++		bool (*ConfigQuery)
++			(const PVRDRIConfig *psConfig,
++			 PVRDRIConfigAttrib eConfigAttrib,
++			 unsigned int *puValueOut);
++
++		__DRIimage *(*LookupEGLImage)
++			(struct __DRIscreenRec *psDRIScreen,
++			 void *pvImage,
++			 void *pvLoaderPrivate);
++
++		unsigned int (*GetCapability)
++			(struct __DRIscreenRec *psDRIScreen,
++			 unsigned int uCapability);
++	} v0;
++};
 +
 +#endif /* defined(__PVRDRIIFCE_H__) */
 diff --git a/src/mesa/drivers/dri/pvr/img_drm_fourcc.h b/src/mesa/drivers/dri/pvr/img_drm_fourcc.h
 new file mode 100644
-index 00000000000..b023ef231cc
+index 00000000000..8d570ff8f53
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/img_drm_fourcc.h
-@@ -0,0 +1,110 @@
+@@ -0,0 +1,113 @@
 +/*************************************************************************/ /*!
 +@File
 +@Title          Wrapper around drm_fourcc.h
@@ -1318,7 +1609,8 @@
 +#endif
 +
 +/*
-+ * Upstream doesn't have a floating point format yet, so we invent one.
++ * Upstream doesn't have a floating point format yet, so let's make one
++ * up.
 + * Note: The kernel's core DRM needs to know about this format,
 + * otherwise it won't be supported and should not be exposed by our
 + * kernel modules either.
@@ -1330,7 +1622,7 @@
 +
 +/*
 + * Upstream does not have a packed 10 Bits Per Channel YVU format yet,
-+ * so we invent one.
++ * so let`s make one up.
 + * Note: at the moment this format is not intended to be used with
 + *       a framebuffer, so the kernels core DRM doesn`t need to know
 + *       about this format. This means that the kernel doesn`t need
@@ -1338,6 +1630,8 @@
 + */
 +#if !defined(__KERNEL__)
 +#define DRM_FORMAT_YVU444_PACK10_IMG fourcc_code('I', 'M', 'G', '2')
++#define DRM_FORMAT_YUV422_2PLANE_PACK10_IMG fourcc_code('I', 'M', 'G', '3')
++#define DRM_FORMAT_YUV420_2PLANE_PACK10_IMG fourcc_code('I', 'M', 'G', '4')
 +#endif
 +
 +/*
@@ -1373,13 +1667,12 @@
 +#endif /* IMG_DRM_FOURCC_H */
 diff --git a/src/mesa/drivers/dri/pvr/imgpixfmts.h b/src/mesa/drivers/dri/pvr/imgpixfmts.h
 new file mode 100644
-index 00000000000..9e70a960636
+index 00000000000..da12a0fb5f6
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/imgpixfmts.h
-@@ -0,0 +1,80 @@
+@@ -0,0 +1,307 @@
 +/*************************************************************************/ /*!
-+@File
-+@Title          Pixel formats
++@File           imgpixfmts.h
 +@Copyright      Copyright (c) Imagination Technologies Ltd. All Rights Reserved
 +@License        MIT
 +
@@ -1404,37 +1697,189 @@
 +THE SOFTWARE.
 +*/ /**************************************************************************/
 +
-+/****************************************************************************
++/******************************************************************************
 + **
-+ ** WARNING: This file is autogenerated - DO NOT EDIT.
++ ** WARNING: File is autogenerated by parsesystable.py - DO NOT EDIT.
++ ** Use fmts_systable.txt to add new formats.
 + **
-+ ** See fmts_systable.txt to add new formats.
-+ ****************************************************************************/
++ *****************************************************************************/
 +
-+#if !defined(_IMGPIXFMTS_H_)
-+#define _IMGPIXFMTS_H_
++#if !defined(IMGPIXFMTS_H)
++#define IMGPIXFMTS_H
 +
 +typedef enum _IMG_PIXFMT_
 +{
 +	IMG_PIXFMT_UNKNOWN = 0,
++	IMG_PIXFMT_RESERVED_1 = 1,
++	IMG_PIXFMT_RESERVED_2 = 2,
++	IMG_PIXFMT_RESERVED_3 = 3,
++	IMG_PIXFMT_RESERVED_4 = 4,
++	IMG_PIXFMT_RESERVED_5 = 5,
++	IMG_PIXFMT_RESERVED_6 = 6,
++	IMG_PIXFMT_RESERVED_7 = 7,
++	IMG_PIXFMT_RESERVED_8 = 8,
++	IMG_PIXFMT_RESERVED_9 = 9,
++	IMG_PIXFMT_RESERVED_10 = 10,
++	IMG_PIXFMT_RESERVED_11 = 11,
++	IMG_PIXFMT_RESERVED_12 = 12,
++	IMG_PIXFMT_RESERVED_13 = 13,
++	IMG_PIXFMT_RESERVED_14 = 14,
++	IMG_PIXFMT_RESERVED_15 = 15,
++	IMG_PIXFMT_RESERVED_16 = 16,
++	IMG_PIXFMT_RESERVED_17 = 17,
++	IMG_PIXFMT_RESERVED_18 = 18,
++	IMG_PIXFMT_RESERVED_19 = 19,
++	IMG_PIXFMT_RESERVED_20 = 20,
++	IMG_PIXFMT_RESERVED_21 = 21,
++	IMG_PIXFMT_RESERVED_22 = 22,
++	IMG_PIXFMT_RESERVED_23 = 23,
++	IMG_PIXFMT_RESERVED_24 = 24,
 +	IMG_PIXFMT_R10G10B10A2_UNORM = 25,
++	IMG_PIXFMT_RESERVED_26 = 26,
++	IMG_PIXFMT_RESERVED_27 = 27,
++	IMG_PIXFMT_B10G10R10A2_UNORM = 28,
++	IMG_PIXFMT_RESERVED_29 = 29,
++	IMG_PIXFMT_RESERVED_30 = 30,
++	IMG_PIXFMT_RESERVED_31 = 31,
 +	IMG_PIXFMT_R8G8B8A8_UNORM = 32,
++	IMG_PIXFMT_R8G8B8A8_UNORM_SRGB = 33,
++	IMG_PIXFMT_RESERVED_34 = 34,
++	IMG_PIXFMT_RESERVED_35 = 35,
++	IMG_PIXFMT_RESERVED_36 = 36,
 +	IMG_PIXFMT_R8G8B8X8_UNORM = 37,
++	IMG_PIXFMT_RESERVED_38 = 38,
++	IMG_PIXFMT_RESERVED_39 = 39,
++	IMG_PIXFMT_RESERVED_40 = 40,
++	IMG_PIXFMT_RESERVED_41 = 41,
++	IMG_PIXFMT_RESERVED_42 = 42,
++	IMG_PIXFMT_RESERVED_43 = 43,
++	IMG_PIXFMT_RESERVED_44 = 44,
++	IMG_PIXFMT_RESERVED_45 = 45,
++	IMG_PIXFMT_RESERVED_46 = 46,
++	IMG_PIXFMT_RESERVED_47 = 47,
++	IMG_PIXFMT_RESERVED_48 = 48,
++	IMG_PIXFMT_RESERVED_49 = 49,
++	IMG_PIXFMT_RESERVED_50 = 50,
 +	IMG_PIXFMT_D32_FLOAT = 51,
++	IMG_PIXFMT_RESERVED_52 = 52,
++	IMG_PIXFMT_RESERVED_53 = 53,
++	IMG_PIXFMT_RESERVED_54 = 54,
++	IMG_PIXFMT_RESERVED_55 = 55,
++	IMG_PIXFMT_RESERVED_56 = 56,
++	IMG_PIXFMT_RESERVED_57 = 57,
 +	IMG_PIXFMT_D24_UNORM_X8_TYPELESS = 58,
++	IMG_PIXFMT_RESERVED_59 = 59,
++	IMG_PIXFMT_RESERVED_60 = 60,
++	IMG_PIXFMT_RESERVED_61 = 61,
 +	IMG_PIXFMT_R8G8_UNORM = 62,
++	IMG_PIXFMT_RESERVED_63 = 63,
++	IMG_PIXFMT_RESERVED_64 = 64,
++	IMG_PIXFMT_RESERVED_65 = 65,
++	IMG_PIXFMT_RESERVED_66 = 66,
++	IMG_PIXFMT_RESERVED_67 = 67,
++	IMG_PIXFMT_RESERVED_68 = 68,
 +	IMG_PIXFMT_D16_UNORM = 69,
++	IMG_PIXFMT_RESERVED_70 = 70,
++	IMG_PIXFMT_RESERVED_71 = 71,
++	IMG_PIXFMT_RESERVED_72 = 72,
++	IMG_PIXFMT_RESERVED_73 = 73,
++	IMG_PIXFMT_RESERVED_74 = 74,
++	IMG_PIXFMT_RESERVED_75 = 75,
 +	IMG_PIXFMT_R8_UNORM = 76,
++	IMG_PIXFMT_RESERVED_77 = 77,
++	IMG_PIXFMT_RESERVED_78 = 78,
++	IMG_PIXFMT_RESERVED_79 = 79,
++	IMG_PIXFMT_RESERVED_80 = 80,
 +	IMG_PIXFMT_S8_UINT = 81,
++	IMG_PIXFMT_RESERVED_82 = 82,
++	IMG_PIXFMT_RESERVED_83 = 83,
++	IMG_PIXFMT_RESERVED_84 = 84,
 +	IMG_PIXFMT_B5G6R5_UNORM = 85,
 +	IMG_PIXFMT_R5G6B5_UNORM = 86,
 +	IMG_PIXFMT_B5G5R5A1_UNORM = 87,
 +	IMG_PIXFMT_B5G5R5X1_UNORM = 88,
 +	IMG_PIXFMT_B8G8R8A8_UNORM = 89,
 +	IMG_PIXFMT_B8G8R8X8_UNORM = 90,
++	IMG_PIXFMT_B8G8R8A8_UINT = 91,
++	IMG_PIXFMT_B8G8R8A8_SNORM = 92,
++	IMG_PIXFMT_B8G8R8A8_SINT = 93,
++	IMG_PIXFMT_B8G8R8A8_UNORM_SRGB = 94,
++	IMG_PIXFMT_RESERVED_95 = 95,
++	IMG_PIXFMT_RESERVED_96 = 96,
++	IMG_PIXFMT_RESERVED_97 = 97,
++	IMG_PIXFMT_RESERVED_98 = 98,
++	IMG_PIXFMT_RESERVED_99 = 99,
++	IMG_PIXFMT_RESERVED_100 = 100,
++	IMG_PIXFMT_RESERVED_101 = 101,
++	IMG_PIXFMT_RESERVED_102 = 102,
++	IMG_PIXFMT_RESERVED_103 = 103,
++	IMG_PIXFMT_RESERVED_104 = 104,
++	IMG_PIXFMT_RESERVED_105 = 105,
++	IMG_PIXFMT_RESERVED_106 = 106,
++	IMG_PIXFMT_RESERVED_107 = 107,
++	IMG_PIXFMT_RESERVED_108 = 108,
++	IMG_PIXFMT_RESERVED_109 = 109,
++	IMG_PIXFMT_RESERVED_110 = 110,
++	IMG_PIXFMT_RESERVED_111 = 111,
++	IMG_PIXFMT_RESERVED_112 = 112,
++	IMG_PIXFMT_RESERVED_113 = 113,
++	IMG_PIXFMT_RESERVED_114 = 114,
++	IMG_PIXFMT_RESERVED_115 = 115,
++	IMG_PIXFMT_RESERVED_116 = 116,
++	IMG_PIXFMT_RESERVED_117 = 117,
++	IMG_PIXFMT_RESERVED_118 = 118,
++	IMG_PIXFMT_RESERVED_119 = 119,
++	IMG_PIXFMT_RESERVED_120 = 120,
++	IMG_PIXFMT_RESERVED_121 = 121,
++	IMG_PIXFMT_RESERVED_122 = 122,
++	IMG_PIXFMT_RESERVED_123 = 123,
++	IMG_PIXFMT_RESERVED_124 = 124,
++	IMG_PIXFMT_RESERVED_125 = 125,
++	IMG_PIXFMT_RESERVED_126 = 126,
++	IMG_PIXFMT_RESERVED_127 = 127,
++	IMG_PIXFMT_RESERVED_128 = 128,
++	IMG_PIXFMT_RESERVED_129 = 129,
++	IMG_PIXFMT_RESERVED_130 = 130,
++	IMG_PIXFMT_RESERVED_131 = 131,
++	IMG_PIXFMT_RESERVED_132 = 132,
++	IMG_PIXFMT_RESERVED_133 = 133,
++	IMG_PIXFMT_RESERVED_134 = 134,
++	IMG_PIXFMT_RESERVED_135 = 135,
 +	IMG_PIXFMT_L8_UNORM = 136,
++	IMG_PIXFMT_RESERVED_137 = 137,
 +	IMG_PIXFMT_L8A8_UNORM = 138,
++	IMG_PIXFMT_RESERVED_139 = 139,
++	IMG_PIXFMT_RESERVED_140 = 140,
++	IMG_PIXFMT_RESERVED_141 = 141,
++	IMG_PIXFMT_RESERVED_142 = 142,
++	IMG_PIXFMT_RESERVED_143 = 143,
++	IMG_PIXFMT_RESERVED_144 = 144,
 +	IMG_PIXFMT_B4G4R4A4_UNORM = 145,
++	IMG_PIXFMT_RESERVED_146 = 146,
++	IMG_PIXFMT_RESERVED_147 = 147,
++	IMG_PIXFMT_RESERVED_148 = 148,
++	IMG_PIXFMT_RESERVED_149 = 149,
++	IMG_PIXFMT_RESERVED_150 = 150,
++	IMG_PIXFMT_RESERVED_151 = 151,
++	IMG_PIXFMT_RESERVED_152 = 152,
++	IMG_PIXFMT_RESERVED_153 = 153,
++	IMG_PIXFMT_RESERVED_154 = 154,
++	IMG_PIXFMT_RESERVED_155 = 155,
++	IMG_PIXFMT_RESERVED_156 = 156,
++	IMG_PIXFMT_RESERVED_157 = 157,
++	IMG_PIXFMT_RESERVED_158 = 158,
++	IMG_PIXFMT_RESERVED_159 = 159,
++	IMG_PIXFMT_R8G8B8_UNORM = 160,
++	IMG_PIXFMT_R8G8B8_UNORM_SRGB = 161,
++	IMG_PIXFMT_RESERVED_162 = 162,
++	IMG_PIXFMT_RESERVED_163 = 163,
++	IMG_PIXFMT_RESERVED_164 = 164,
++	IMG_PIXFMT_RESERVED_165 = 165,
++	IMG_PIXFMT_RESERVED_166 = 166,
++	IMG_PIXFMT_RESERVED_167 = 167,
++	IMG_PIXFMT_RESERVED_168 = 168,
++	IMG_PIXFMT_RESERVED_169 = 169,
++	IMG_PIXFMT_RESERVED_170 = 170,
 +	IMG_PIXFMT_UYVY = 171,
 +	IMG_PIXFMT_VYUY = 172,
 +	IMG_PIXFMT_YUYV = 173,
@@ -1444,22 +1889,98 @@
 +	IMG_PIXFMT_YVU420_2PLANE_MACRO_BLOCK = 177,
 +	IMG_PIXFMT_YUV420_3PLANE = 178,
 +	IMG_PIXFMT_YVU420_3PLANE = 179,
-+	IMG_PIXFMT_V8U8Y8A8 = 184,
++	IMG_PIXFMT_RESERVED_180 = 180,
++	IMG_PIXFMT_RESERVED_181 = 181,
++	IMG_PIXFMT_RESERVED_182 = 182,
++	IMG_PIXFMT_RESERVED_183 = 183,
++	IMG_PIXFMT_RESERVED_184 = 184,
++	IMG_PIXFMT_RESERVED_185 = 185,
++	IMG_PIXFMT_RESERVED_186 = 186,
++	IMG_PIXFMT_RESERVED_187 = 187,
++	IMG_PIXFMT_RESERVED_188 = 188,
++	IMG_PIXFMT_RESERVED_189 = 189,
++	IMG_PIXFMT_RESERVED_190 = 190,
++	IMG_PIXFMT_RESERVED_191 = 191,
++	IMG_PIXFMT_RESERVED_192 = 192,
++	IMG_PIXFMT_RESERVED_193 = 193,
++	IMG_PIXFMT_RESERVED_194 = 194,
++	IMG_PIXFMT_RESERVED_195 = 195,
++	IMG_PIXFMT_RESERVED_196 = 196,
++	IMG_PIXFMT_RESERVED_197 = 197,
++	IMG_PIXFMT_RESERVED_198 = 198,
++	IMG_PIXFMT_RESERVED_199 = 199,
++	IMG_PIXFMT_RESERVED_200 = 200,
 +	IMG_PIXFMT_YVU8_422_2PLANE_PACK8 = 201,
++	IMG_PIXFMT_RESERVED_202 = 202,
 +	IMG_PIXFMT_YVU10_444_1PLANE_PACK10 = 203,
++	IMG_PIXFMT_RESERVED_204 = 204,
++	IMG_PIXFMT_RESERVED_205 = 205,
++	IMG_PIXFMT_RESERVED_206 = 206,
 +	IMG_PIXFMT_YUV8_422_2PLANE_PACK8 = 207,
 +	IMG_PIXFMT_YUV8_444_3PLANE_PACK8 = 208,
++	IMG_PIXFMT_RESERVED_209 = 209,
++	IMG_PIXFMT_RESERVED_210 = 210,
++	IMG_PIXFMT_RESERVED_211 = 211,
++	IMG_PIXFMT_RESERVED_212 = 212,
++	IMG_PIXFMT_RESERVED_213 = 213,
++	IMG_PIXFMT_RESERVED_214 = 214,
++	IMG_PIXFMT_RESERVED_215 = 215,
++	IMG_PIXFMT_RESERVED_216 = 216,
++	IMG_PIXFMT_RESERVED_217 = 217,
++	IMG_PIXFMT_RESERVED_218 = 218,
++	IMG_PIXFMT_RESERVED_219 = 219,
++	IMG_PIXFMT_RESERVED_220 = 220,
++	IMG_PIXFMT_RESERVED_221 = 221,
++	IMG_PIXFMT_RESERVED_222 = 222,
++	IMG_PIXFMT_RESERVED_223 = 223,
++	IMG_PIXFMT_RESERVED_224 = 224,
++	IMG_PIXFMT_RESERVED_225 = 225,
++	IMG_PIXFMT_RESERVED_226 = 226,
++	IMG_PIXFMT_RESERVED_227 = 227,
++	IMG_PIXFMT_RESERVED_228 = 228,
++	IMG_PIXFMT_RESERVED_229 = 229,
++	IMG_PIXFMT_RESERVED_230 = 230,
++	IMG_PIXFMT_RESERVED_231 = 231,
++	IMG_PIXFMT_RESERVED_232 = 232,
++	IMG_PIXFMT_RESERVED_233 = 233,
++	IMG_PIXFMT_RESERVED_234 = 234,
++	IMG_PIXFMT_RESERVED_235 = 235,
++	IMG_PIXFMT_RESERVED_236 = 236,
++	IMG_PIXFMT_RESERVED_237 = 237,
++	IMG_PIXFMT_RESERVED_238 = 238,
++	IMG_PIXFMT_RESERVED_239 = 239,
++	IMG_PIXFMT_RESERVED_240 = 240,
++	IMG_PIXFMT_RESERVED_241 = 241,
++	IMG_PIXFMT_RESERVED_242 = 242,
++	IMG_PIXFMT_RESERVED_243 = 243,
++	IMG_PIXFMT_RESERVED_244 = 244,
 +	IMG_PIXFMT_YVU8_420_2PLANE_PACK8_P = 245,
++	IMG_PIXFMT_RESERVED_246 = 246,
++	IMG_PIXFMT_RESERVED_247 = 247,
++	IMG_PIXFMT_RESERVED_248 = 248,
 +	IMG_PIXFMT_YUV8_420_2PLANE_PACK8_P = 249,
++	IMG_PIXFMT_RESERVED_250 = 250,
++	IMG_PIXFMT_RESERVED_251 = 251,
 +	IMG_PIXFMT_UYVY10_422_1PLANE_PACK10_CUST1 = 252,
++	IMG_PIXFMT_RESERVED_253 = 253,
++	IMG_PIXFMT_RESERVED_254 = 254,
++	IMG_PIXFMT_RESERVED_255 = 255,
++	IMG_PIXFMT_RESERVED_256 = 256,
++	IMG_PIXFMT_RESERVED_257 = 257,
++	IMG_PIXFMT_RESERVED_258 = 258,
++	IMG_PIXFMT_RESERVED_259 = 259,
++	IMG_PIXFMT_RESERVED_260 = 260,
++	IMG_PIXFMT_RESERVED_261 = 261,
++	IMG_PIXFMT_RESERVED_262 = 262,
++	IMG_PIXFMT_RESERVED_263 = 263,
++	IMG_PIXFMT_RESERVED_264 = 264,
++#define IMG_PIXFMT_ENUM_COUNT 265
 +} IMG_PIXFMT;
 +
-+
-+
-+#endif /* _IMGPIXFMTS_H_ */
++#endif /* IMGPIXFMTS_H */
 diff --git a/src/mesa/drivers/dri/pvr/imgyuv.h b/src/mesa/drivers/dri/pvr/imgyuv.h
 new file mode 100644
-index 00000000000..a91ee10d3f3
+index 00000000000..7ae8fd19ac0
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/imgyuv.h
 @@ -0,0 +1,58 @@
@@ -1490,8 +2011,8 @@
 +THE SOFTWARE.
 +*/ /**************************************************************************/
 +
-+#if !defined(_IMGYUV_H_)
-+#define _IMGYUV_H_
++#if !defined(IMGYUV_H)
++#define IMGYUV_H
 +
 +typedef enum
 +{
@@ -1520,15 +2041,13 @@
 +} IMG_YUV_CHROMA_INTERP;
 +
 +
-+#endif /* _IMGYUV_H_ */
++#endif /* IMGYUV_H */
 diff --git a/src/mesa/drivers/dri/pvr/mesa_context.c b/src/mesa/drivers/dri/pvr/mesa_context.c
 new file mode 100644
-index 00000000000..064135222b6
+index 00000000000..594f792d212
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/mesa_context.c
-@@ -0,0 +1,258 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,203 @@
 +/**
 + * \file context.c
 + * Mesa context/visual/framebuffer management functions.
@@ -1563,7 +2082,6 @@
 + */
 +
 +#include <stdlib.h>
-+#include <dlfcn.h>
 +#include <assert.h>
 +
 +#include "main/version.h"
@@ -1576,11 +2094,10 @@
 +#include "dispatch.h"
 +#include "pvrmesa.h"
 +
-+
 +/**
-+ * This is the default function we plug into all dispatch table slots
-+ * This helps prevents a segfault when someone calls a GL function without
-+ * first checking if the extension is supported.
++ * This is the default function we plug into all dispatch table slots This
++ * helps prevents a segfault when someone calls a GL function without first
++ * checking if the extension is supported.
 + */
 +static int
 +generic_nop(void)
@@ -1596,44 +2113,34 @@
 +static struct _glapi_table *
 +pvrdri_alloc_dispatch_table(void)
 +{
-+	unsigned numEntries = _glapi_get_dispatch_table_size();
-+	_glapi_proc *table = malloc(numEntries * sizeof(_glapi_proc));
++   unsigned int numEntries = _glapi_get_dispatch_table_size();
++   _glapi_proc *table;
 +
-+	if (table)
-+	{
-+		unsigned i;
++   table = malloc(numEntries * sizeof(_glapi_proc));
++   if (table)
++      for (unsigned int i = 0; i < numEntries; i++)
++         table[i] = (_glapi_proc) generic_nop;
 +
-+		for (i = 0; i < numEntries; i++)
-+		{
-+			table[i] = (_glapi_proc) generic_nop;
-+		}
-+	}
-+
-+	return (struct _glapi_table *)table;
++   return (struct _glapi_table *) table;
 +}
 +
 +/**
-+ * Return a pointer to the pointer to the dispatch table of an API in PVRDRIScreen.
++ * Return a pointer to the pointer to the dispatch table of an API in
++ * PVRDRIScreen.
 + */
 +static struct _glapi_table **
 +pvrdri_get_dispatch_table_ptr(PVRDRIScreen *psPVRScreen, PVRDRIAPIType eAPI)
 +{
-+	switch (eAPI)
-+	{
-+		case PVRDRI_API_GLES1:
-+			return &psPVRScreen->psOGLES1Dispatch;
-+			break;
-+		case PVRDRI_API_GLES2:
-+			return &psPVRScreen->psOGLES2Dispatch;
-+			break;
-+		case PVRDRI_API_CL:
-+			assert(!"OpenCL doesn't have a dispatch table");
-+			break;
-+		case PVRDRI_API_NONE:
-+			assert(!"invalid API");
-+			break;
-+	}
-+	return NULL;
++   switch (eAPI) {
++   case PVRDRI_API_GLES1:
++      return &psPVRScreen->psOGLES1Dispatch;
++      break;
++   case PVRDRI_API_GLES2:
++      return &psPVRScreen->psOGLES2Dispatch;
++      break;
++   default:
++      return NULL;
++   }
 +}
 +
 +/**
@@ -1642,9 +2149,10 @@
 +static struct _glapi_table *
 +pvrdri_get_dispatch_table(PVRDRIScreen *psPVRScreen, PVRDRIAPIType eAPI)
 +{
-+	struct _glapi_table **ppsTable = pvrdri_get_dispatch_table_ptr(psPVRScreen, eAPI);
++   struct _glapi_table **ppsTable =
++      pvrdri_get_dispatch_table_ptr(psPVRScreen, eAPI);
 +
-+	return ppsTable ? *ppsTable : NULL;
++   return ppsTable ? *ppsTable : NULL;
 +}
 +
 +/**
@@ -1653,144 +2161,102 @@
 +void
 +pvrdri_free_dispatch_tables(PVRDRIScreen *psPVRScreen)
 +{
-+	if (psPVRScreen->psOGLES1Dispatch != NULL)
-+	{
-+		free(psPVRScreen->psOGLES1Dispatch);
-+		psPVRScreen->psOGLES1Dispatch = NULL;
-+	}
++   if (psPVRScreen->psOGLES1Dispatch != NULL) {
++      free(psPVRScreen->psOGLES1Dispatch);
++      psPVRScreen->psOGLES1Dispatch = NULL;
++   }
 +
-+	if (psPVRScreen->psOGLES2Dispatch != NULL)
-+	{
-+		free(psPVRScreen->psOGLES2Dispatch);
-+		psPVRScreen->psOGLES2Dispatch = NULL;
-+	}
++   if (psPVRScreen->psOGLES2Dispatch != NULL) {
++      free(psPVRScreen->psOGLES2Dispatch);
++      psPVRScreen->psOGLES2Dispatch = NULL;
++   }
 +}
 +
 +static void
-+pvrdri_add_mesa_dispatch(struct _glapi_table *psTable,
-+			 PVRDRIAPIType eAPI,
-+			 PVRDRIScreenImpl *psScreenImpl,
-+			 void *pvLibHandle,
-+			 const char *psFunc)
++pvrdri_add_mesa_dispatch(struct _glapi_table *psTable, PVRDRIAPIType eAPI,
++                         struct DRISUPScreen *psDRISUPScreen,
++                         unsigned int uIdx)
 +{
-+	int iOffset;
-+	const char *asFunc[] = {NULL, NULL};
-+	_glapi_proc pfFunc;
-+	const char *error;
++   const char *asFunc[] = { NULL, NULL };
++   int iOffset;
++   const char *psFunc;
++   _glapi_proc pfFunc;
 +
-+	(void) dlerror();
-+	pfFunc = dlsym(pvLibHandle, psFunc);
-+	error = dlerror();
-+	if (error != NULL)
-+	{
-+		pfFunc = PVRDRIEGLGetProcAddress(eAPI, psScreenImpl, psFunc);
-+		if (pfFunc == NULL)
-+		{
-+#if 0
-+			/*
-+			 * Not all extensions are supported, so there may
-+			 * be quite a lot of lookup failures.
-+			 */
-+			_mesa_warning(NULL, "Couldn't get address of %s", psFunc);
-+#endif
-+			return;
-+		}
-+	}
++   pfFunc = DRISUPGetAPIProcAddress(psDRISUPScreen, eAPI, uIdx);
++   if (pfFunc == NULL)
++      return;
 +
-+	asFunc[0] = psFunc;
-+	iOffset = _glapi_add_dispatch(asFunc, "");
-+	if (iOffset == -1)
-+	{
-+		_mesa_warning(NULL, "Couldn't add %s to the Mesa dispatch table", psFunc);
-+	}
-+	else
-+	{
-+		SET_by_offset(psTable, iOffset, pfFunc);
-+	}
++   psFunc = DRISUPGetAPIProcName(psDRISUPScreen, eAPI, uIdx);
++   assert(psFunc != NULL);
++
++   asFunc[0] = psFunc;
++   iOffset = _glapi_add_dispatch(asFunc, "");
++   if (iOffset == -1) {
++      _mesa_warning(NULL, "Couldn't add %s to the Mesa dispatch table",
++                    psFunc);
++   } else {
++      SET_by_offset(psTable, iOffset, pfFunc);
++   }
 +}
 +
 +static void
-+pvrdri_set_mesa_dispatch(struct _glapi_table *psTable,
-+			 PVRDRIAPIType eAPI,
-+			 PVRDRIScreenImpl *psScreenImpl,
-+			 void *pvLibHandle,
-+			 unsigned uNumFuncs)
++pvrdri_set_mesa_dispatch(struct _glapi_table *psTable, PVRDRIAPIType eAPI,
++                         struct DRISUPScreen *psDRISUPScreen,
++                         unsigned int uNumFuncs)
 +{
-+	unsigned i;
-+
-+	for (i = 0; i < uNumFuncs; i++)
-+	{
-+		const char *psFunc = PVRDRIGetAPIFunc(eAPI, i);
-+
-+		assert(psFunc);
-+
-+		pvrdri_add_mesa_dispatch(psTable,
-+					 eAPI,
-+					 psScreenImpl,
-+					 pvLibHandle,
-+					 psFunc);
-+	}
++   for (unsigned int i = 0; i < uNumFuncs; i++)
++      pvrdri_add_mesa_dispatch(psTable, eAPI, psDRISUPScreen, i);
 +}
 +
 +bool
 +pvrdri_create_dispatch_table(PVRDRIScreen *psPVRScreen, PVRDRIAPIType eAPI)
 +{
-+	PVRDRIScreenImpl *psScreenImpl = psPVRScreen->psImpl;
-+	struct _glapi_table **ppsTable = pvrdri_get_dispatch_table_ptr(psPVRScreen, eAPI);
-+	void *pvLibHandle;
-+	unsigned uNumFuncs;
++   struct DRISUPScreen *psDRISUPScreen = psPVRScreen->psDRISUPScreen;
++   struct _glapi_table **ppsTable;
++   unsigned int uNumFuncs;
 +
-+	if (ppsTable == NULL)
-+	{
-+		return false;
-+	}
++   ppsTable = pvrdri_get_dispatch_table_ptr(psPVRScreen, eAPI);
++   if (ppsTable == NULL)
++      return false;
 +
-+	if (*ppsTable != NULL)
-+	{
-+		return true;
-+	}
++   if (*ppsTable != NULL)
++      return true;
 +
-+	pvLibHandle = PVRDRIEGLGetLibHandle(eAPI, psScreenImpl);;
-+	uNumFuncs = PVRDRIGetNumAPIFuncs(eAPI);
-+	if (!pvLibHandle || !uNumFuncs)
-+	{
-+		return false;
-+	}
++   uNumFuncs = DRISUPGetNumAPIProcs(psDRISUPScreen, eAPI);
++   if (!uNumFuncs)
++      return false;
 +
-+	*ppsTable = pvrdri_alloc_dispatch_table();
-+	if (*ppsTable == NULL)
-+	{
-+		return false;
-+	}
++   *ppsTable = pvrdri_alloc_dispatch_table();
++   if (*ppsTable == NULL)
++      return false;
 +
-+	pvrdri_set_mesa_dispatch(*ppsTable,
-+				 eAPI,
-+				 psScreenImpl,
-+				 pvLibHandle,
-+				 uNumFuncs);
++   pvrdri_set_mesa_dispatch(*ppsTable, eAPI, psDRISUPScreen, uNumFuncs);
 +
-+	return true;
++   return true;
 +}
 +
 +void
 +pvrdri_set_null_dispatch_table(void)
 +{
-+	_glapi_set_dispatch(NULL);
++   _glapi_set_dispatch(NULL);
 +}
 +
 +void
 +pvrdri_set_dispatch_table(PVRDRIContext *psPVRContext)
 +{
-+	struct _glapi_table *psTable = pvrdri_get_dispatch_table(psPVRContext->psPVRScreen, psPVRContext->eAPI);
++   struct _glapi_table *psTable;
 +
-+	_glapi_set_dispatch(psTable);
++   psTable = pvrdri_get_dispatch_table(psPVRContext->psPVRScreen,
++                                       psPVRContext->eAPI);
++
++   _glapi_set_dispatch(psTable);
 +}
 diff --git a/src/mesa/drivers/dri/pvr/meson.build b/src/mesa/drivers/dri/pvr/meson.build
 new file mode 100644
-index 00000000000..768731a3761
+index 00000000000..a3edad6b9bf
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/meson.build
-@@ -0,0 +1,48 @@
+@@ -0,0 +1,52 @@
 +# Copyright (c) Imagination Technologies Ltd.
 +#
 +# The contents of this file are subject to the MIT license as set out below.
@@ -1815,38 +2281,315 @@
 +
 +files_pvr = files(
 +  'mesa_context.c',
++  'pvrcb.c',
 +  'pvrcompat.c',
-+  'pvrdrawable.c',
++  'pvrdrawable_mod.c',
 +  'pvrdri.c',
++  'pvrdri_mod.c',
 +  'pvrext.c',
-+  'pvrimage.c',
++  'pvrext_mod.c',
++  'pvrimage_mod.c',
 +  'pvrutil.c',
++  'pvrutil_mod.c',
 +)
 +
 +dep_libpvr = [
 +  dep_libdrm,
-+  dependency('pvrdri', required : false),
 +]
 +
++if with_platform_tizen
++  dep_libpvr += dep_dlog
++endif
++
 +libpvr = static_library(
 +  'pvr',
-+  [files_pvr, xmlpool_options_h, main_dispatch_h],
++  [files_pvr, main_dispatch_h],
 +  include_directories : [inc_common, inc_dri_common, inc_util, inc_pvr],
 +  c_args : [c_vis_args, no_override_init_args],
 +  cpp_args : [cpp_vis_args],
-+  dependencies : [dep_libpvr],
++  dependencies : [dep_libpvr, idep_xmlconfig_headers],
 +)
+diff --git a/src/mesa/drivers/dri/pvr/pvrcb.c b/src/mesa/drivers/dri/pvr/pvrcb.c
+new file mode 100644
+index 00000000000..7dfc3139cbb
+--- /dev/null
++++ b/src/mesa/drivers/dri/pvr/pvrcb.c
+@@ -0,0 +1,269 @@
++/*
++ * Copyright (c) Imagination Technologies Ltd.
++ *
++ * The contents of this file are subject to the MIT license as set out below.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
 +
-+dri_drivers += libpvr
-+dri_link += 'pvr_dri.so'
++#include <assert.h>
++
++#include "utils.h"
++#include "pvrdri.h"
++
++int
++MODSUPGetBuffers(__DRIdrawable *psDRIDrawable, unsigned int uFourCC,
++                 uint32_t *puStamp, void *pvLoaderPrivate,
++                 uint32_t uBufferMask, struct PVRDRIImageList *psImageList)
++{
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++   __DRIscreen *psDRIScreen = psDRIDrawable->driScreenPriv;
++   struct __DRIimageList sDRIList;
++   int res;
++
++#if !defined(DRI_IMAGE_HAS_BUFFER_PREV)
++   uBufferMask &= ~PVRDRI_IMAGE_BUFFER_PREV;
++#endif
++
++   if (psPVRDrawable->uFourCC != uFourCC) {
++      psPVRDrawable->uDRIFormat = PVRDRIFourCCToDRIFormat(uFourCC);
++      psPVRDrawable->uFourCC = uFourCC;
++   }
++
++   res = psDRIScreen->image.loader->getBuffers(psDRIDrawable,
++                                               psPVRDrawable->uDRIFormat,
++                                               puStamp,
++                                               pvLoaderPrivate,
++                                               uBufferMask, &sDRIList);
++
++   if (res) {
++      psImageList->uImageMask = sDRIList.image_mask;
++      psImageList->psBack = sDRIList.back;
++      psImageList->psFront = sDRIList.front;
++#if defined(DRI_IMAGE_HAS_BUFFER_PREV)
++      psImageList->psPrev = sDRIList.prev;
++#endif
++   }
++
++   return res;
++}
++
++bool
++MODSUPCreateConfigs(__DRIconfig ***pppsConfigs, __DRIscreen *psDRIScreen,
++                    int iPVRDRIMesaFormat, const uint8_t *puDepthBits,
++                    const uint8_t *puStencilBits,
++                    unsigned int uNumDepthStencilBits,
++                    const unsigned int *puDBModes, unsigned int uNumDBModes,
++                    const uint8_t *puMSAASamples, unsigned int uNumMSAAModes,
++                    bool bEnableAccum, bool bColorDepthMatch,
++                    bool bMutableRenderBuffer,
++                    int iYUVDepthRange, int iYUVCSCStandard,
++                    uint32_t uMaxPbufferWidth, uint32_t uMaxPbufferHeight)
++{
++   __DRIconfig **ppsConfigs;
++   mesa_format eFormat = PVRDRIMesaFormatToMesaFormat(iPVRDRIMesaFormat);
++   unsigned int i;
++
++   (void) psDRIScreen;
++
++   switch (eFormat) {
++   case MESA_FORMAT_NONE:
++      __driUtilMessage("%s: Unknown PVR DRI format: %u",
++                       __func__, iPVRDRIMesaFormat);
++      return false;
++   default:
++      break;
++   }
++
++   /*
++    * The double buffered modes array argument for driCreateConfigs has
++    * entries of type GLenum.
++    */
++   assert(sizeof(GLenum) == sizeof(unsigned int));
++
++   ppsConfigs = driCreateConfigs(eFormat, puDepthBits, puStencilBits,
++                                 uNumDepthStencilBits, (GLenum *) puDBModes,
++                                 uNumDBModes, puMSAASamples, uNumMSAAModes,
++                                 bEnableAccum, bColorDepthMatch,
++                                 bMutableRenderBuffer);
++   if (!ppsConfigs)
++      return false;
++
++   for (i = 0; ppsConfigs[i]; i++) {
++      ppsConfigs[i]->modes.maxPbufferWidth = uMaxPbufferWidth;
++      ppsConfigs[i]->modes.maxPbufferHeight = uMaxPbufferHeight;
++      ppsConfigs[i]->modes.maxPbufferPixels =
++         uMaxPbufferWidth * uMaxPbufferHeight;
++   }
++
++   *pppsConfigs = ppsConfigs;
++
++   return true;
++}
++
++__DRIconfig **
++MODSUPConcatConfigs(__DRIscreen *psDRIScreen,
++                    __DRIconfig **ppsConfigA, __DRIconfig **ppsConfigB)
++{
++   (void) psDRIScreen;
++
++   return driConcatConfigs(ppsConfigA, ppsConfigB);
++}
++
++struct __DRIimageRec *
++MODSUPLookupEGLImage(__DRIscreen *psDRIScreen, void *pvImage,
++                     void *pvLoaderPrivate)
++{
++   return psDRIScreen->dri2.image->lookupEGLImage(psDRIScreen,
++                                                  pvImage,
++                                                  pvLoaderPrivate);
++}
++
++
++unsigned int
++MODSUPGetCapability(__DRIscreen *psDRIScreen, unsigned int uCapability)
++{
++   if (psDRIScreen->image.loader->base.version >= 2 &&
++       psDRIScreen->image.loader->getCapability) {
++      enum dri_loader_cap eCapability =
++         (enum dri_loader_cap) uCapability;
++
++      return psDRIScreen->image.loader->getCapability(psDRIScreen,
++                                                      eCapability);
++   }
++
++   return 0;
++}
++
++bool
++PVRDRIConfigQuery(const PVRDRIConfig *psConfig,
++                  PVRDRIConfigAttrib eConfigAttrib, int *piValueOut)
++{
++   if (!psConfig || !piValueOut)
++      return false;
++
++   switch (eConfigAttrib) {
++   case PVRDRI_CONFIG_ATTRIB_RENDERABLE_TYPE:
++      *piValueOut = psConfig->iSupportedAPIs;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_RGB_MODE:
++      *piValueOut = psConfig->sGLMode.rgbMode;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_DOUBLE_BUFFER_MODE:
++      *piValueOut = psConfig->sGLMode.doubleBufferMode;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_RED_BITS:
++      *piValueOut = psConfig->sGLMode.redBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_GREEN_BITS:
++      *piValueOut = psConfig->sGLMode.greenBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_BLUE_BITS:
++      *piValueOut = psConfig->sGLMode.blueBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_ALPHA_BITS:
++      *piValueOut = psConfig->sGLMode.alphaBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_RGB_BITS:
++      *piValueOut = psConfig->sGLMode.rgbBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_DEPTH_BITS:
++      *piValueOut = psConfig->sGLMode.depthBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_STENCIL_BITS:
++      *piValueOut = psConfig->sGLMode.stencilBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_SAMPLE_BUFFERS:
++      *piValueOut = psConfig->sGLMode.sampleBuffers;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_SAMPLES:
++      *piValueOut = psConfig->sGLMode.samples;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_BIND_TO_TEXTURE_RGB:
++      *piValueOut = psConfig->sGLMode.bindToTextureRgb;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_BIND_TO_TEXTURE_RGBA:
++      *piValueOut = psConfig->sGLMode.bindToTextureRgba;
++      return true;
++#if defined(__DRI_ATTRIB_YUV_BIT)
++   case PVRDRI_CONFIG_ATTRIB_YUV_ORDER:
++      *piValueOut = psConfig->sGLMode.YUVOrder;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_YUV_NUM_OF_PLANES:
++      *piValueOut = psConfig->sGLMode.YUVNumberOfPlanes;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_YUV_SUBSAMPLE:
++      *piValueOut = psConfig->sGLMode.YUVSubsample;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_YUV_DEPTH_RANGE:
++      *piValueOut = psConfig->sGLMode.YUVDepthRange;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_YUV_CSC_STANDARD:
++      *piValueOut = psConfig->sGLMode.YUVCSCStandard;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_YUV_PLANE_BPP:
++      *piValueOut = psConfig->sGLMode.YUVPlaneBPP;
++      return true;
++#endif
++#if !defined(__DRI_ATTRIB_YUV_BIT)
++   case PVRDRI_CONFIG_ATTRIB_YUV_ORDER:
++   case PVRDRI_CONFIG_ATTRIB_YUV_NUM_OF_PLANES:
++   case PVRDRI_CONFIG_ATTRIB_YUV_SUBSAMPLE:
++   case PVRDRI_CONFIG_ATTRIB_YUV_DEPTH_RANGE:
++   case PVRDRI_CONFIG_ATTRIB_YUV_CSC_STANDARD:
++   case PVRDRI_CONFIG_ATTRIB_YUV_PLANE_BPP:
++      return false;
++#endif
++   case PVRDRI_CONFIG_ATTRIB_RED_MASK:
++      *piValueOut = psConfig->sGLMode.redMask;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_GREEN_MASK:
++      *piValueOut = psConfig->sGLMode.greenMask;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_BLUE_MASK:
++      *piValueOut = psConfig->sGLMode.blueMask;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_ALPHA_MASK:
++      *piValueOut = psConfig->sGLMode.alphaMask;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_SRGB_CAPABLE:
++      *piValueOut = psConfig->sGLMode.sRGBCapable;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_INVALID:
++      errorMessage("%s: Invalid attribute", __func__);
++      assert(0);
++      return false;
++   default:
++      return false;
++   }
++}
++
++bool
++MODSUPConfigQuery(const PVRDRIConfig *psConfig,
++                  PVRDRIConfigAttrib eConfigAttrib, unsigned int *puValueOut)
++{
++   bool bRes;
++   int iValue;
++
++   bRes = PVRDRIConfigQuery(psConfig, eConfigAttrib, &iValue);
++   if (bRes)
++      *puValueOut = (unsigned int) iValue;
++
++   return bRes;
++}
 diff --git a/src/mesa/drivers/dri/pvr/pvrcompat.c b/src/mesa/drivers/dri/pvr/pvrcompat.c
 new file mode 100644
-index 00000000000..e429e0cc135
+index 00000000000..bd225ca0c46
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/pvrcompat.c
-@@ -0,0 +1,1383 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,1529 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -1881,1361 +2624,1507 @@
 +#include <drm_fourcc.h>
 +
 +#include "pvrdri.h"
++#include "pvrdri_mod.h"
 +
 +#ifndef DRM_FORMAT_MOD_INVALID
-+#define DRM_FORMAT_MOD_INVALID ((1ULL<<56) - 1)
++#define DRM_FORMAT_MOD_INVALID ((1ULL << 56) - 1)
 +#endif
 +
 +#define _MAKESTRING(x) # x
 +#define MAKESTRING(x) _MAKESTRING(x)
 +
-+#define	PVRDRI_SUPPORT_LIB	"libpvr_dri_support.so"
++#define PVRDRI_SUPPORT_LIB "libpvr_dri_support.so"
 +
 +static void *gpvSupLib;
 +static int giSupLibRef;
 +
 +static PVRDRISupportInterface gsSup;
-+static unsigned guSupVer;
++static struct PVRDRISupportInterfaceV2 gsSupV2;
 +
 +static pthread_mutex_t gsCompatLock = PTHREAD_MUTEX_INITIALIZER;
 +
-+static void DumSupFunc(void) { abort(); }
-+
 +/* Call a function via the DRI Support interface structure */
-+#define CallFunc(field, ver, ...) 					\
-+	do { 								\
-+		if (guSupVer >= ver && gsSup.field)			\
-+			return gsSup.field(__VA_ARGS__);		\
-+	} while(0)
++#define CallFunc(field, ...)                    \
++   do {                                         \
++      if (gsSup.field)                          \
++         return gsSup.field(__VA_ARGS__);       \
++   } while(0)
 +
-+/* Define a function to test for a given DRI Support function */
-+#define DefineFunc_IsSupported(func, field, ver)			\
-+	bool func ## _IsSupported(void)					\
-+	{ return guSupVer >= ver && gsSup.field; }
-+
-+
-+/*
-+ * Lookup a function, and set the pointer to the function address.
-+ * If lookup fails, the pointer is set to the address of the dummy
-+ * support function, DumSupFunc.
-+ */
-+#define LookupFunc(func, ptr)						\
-+	do {								\
-+		if (!ptr)						\
-+		{							\
-+			ptr = dlsym(gpvSupLib, MAKESTRING(func));	\
-+			if (!ptr)					\
-+				ptr = (void *)DumSupFunc; 		\
-+		}							\
-+	} while(0)
-+
-+/*
-+ * Lookup a legacy DRI support function, and set the function pointer
-+ * in the support interface structure, gsSup.
-+ * If lookup fails, the function pointer is set to the address of the
-+ * dummy support function, DumSupFunc.
-+ */
-+#define LookupLegacyFunc(func, field)					\
-+	LookupFunc(func, gsSup.field)
-+
-+/*
-+ * This legacy version of CallFunc should only be used for functions that
-+ * used to be called directly in older versions of the DRI Support library.
-+ * Do not use this macro for functions that have only ever been available
-+ * via the PVRDRISupportInterface structure.
-+ * In summary, if you are modifying this file to support a new version of
-+ * the PVRDRISupportInterface structure, use CallFunc rather than this
-+ * macro.
-+ */
-+#define CallFuncLegacy(func, field, ...) 				\
-+	do { 								\
-+		LookupLegacyFunc(func, field);				\
-+									\
-+		if (gsSup.field != (void *)DumSupFunc)			\
-+			return gsSup.field(__VA_ARGS__);		\
-+	} while(0)
-+
-+/*
-+ * Legacy version of DefineFunc_IsSupported.
-+ * See the comments for CallFuncLegacy.
-+ */
-+#define DefineFunc_IsSupportedLegacy(func, field) 			\
-+	bool func ## _IsSupported(void) 				\
-+	{ 								\
-+		LookupLegacyFunc(func, field);				\
-+									\
-+		return gsSup.field != (void *)DumSupFunc;		\
-+	}
++/* Lookup a function, and set the pointer to the function address */
++#define LookupFunc(func, ptr)                   \
++   do {                                         \
++      ptr = dlsym(gpvSupLib, MAKESTRING(func)); \
++   } while(0)
 +
 +/*
 + * Calculate the size of a particular version of the PVRDRISupportInterface
 + * structure from the name of the last field in that version of the
 + * structure.
 + */
-+#define PVRDRIInterfaceSize(field) \
-+				(offsetof(PVRDRISupportInterface, field) + \
-+				sizeof((PVRDRISupportInterface *)0)->field)
++#define PVRDRIInterfaceSize(field)              \
++   (offsetof(PVRDRISupportInterface, field) +   \
++    sizeof((PVRDRISupportInterface *)0)->field)
++
++/* Call a function via the DRI Support interface structure */
++#define CallFuncV2(field, ...)                  \
++   do {                                         \
++      if (gsSupV2.field)                        \
++         return gsSupV2.field(__VA_ARGS__);     \
++   } while(0)
++
++/* Calculate the start of the PVRDRISupportInterfaceV2 structure */
++#define PVRDRIInterfaceV2Start(field)                   \
++   (offsetof(struct PVRDRISupportInterfaceV2, field))
++
++/* Calculate the end of the PVRDRISupportInterfaceV2 structure */
++#define PVRDRIInterfaceV2End(field)                             \
++   (offsetof(struct PVRDRISupportInterfaceV2, field) +          \
++    sizeof((struct PVRDRISupportInterfaceV2 *)0)->field)
 +
 +static void
 +CompatLock(void)
 +{
-+	int ret;
++   int ret;
 +
-+	ret = pthread_mutex_lock(&gsCompatLock);
-+	if (ret)
-+	{
-+		errorMessage("%s: Failed to lock mutex (%d)",
-+				 __func__, ret);
-+		abort();
-+	}
++   ret = pthread_mutex_lock(&gsCompatLock);
++   if (ret) {
++      errorMessage("%s: Failed to lock mutex (%d)", __func__, ret);
++      abort();
++   }
 +}
 +
 +static void
 +CompatUnlock(void)
 +{
-+	int ret;
++   int ret;
 +
-+	ret = pthread_mutex_unlock(&gsCompatLock);
-+	if (ret)
-+	{
-+		errorMessage("%s: Failed to unlock mutex (%d)",
-+				 __func__, ret);
-+		abort();
-+	}
++   ret = pthread_mutex_unlock(&gsCompatLock);
++   if (ret) {
++      errorMessage("%s: Failed to unlock mutex (%d)", __func__, ret);
++      abort();
++   }
 +}
 +
 +static void *
 +LoadLib(const char *path)
 +{
-+	void *handle;
++   void *handle;
 +
-+	/* Clear the error */
-+	(void) dlerror();
++   /* Clear the error */
++   (void) dlerror();
 +
-+	handle = dlopen(path, RTLD_NOW);
-+	if (handle)
-+	{
-+		__driUtilMessage("Loaded %s\n", path);
-+	}
-+	else
-+	{
-+		const char *error = dlerror();
++   handle = dlopen(path, RTLD_NOW);
++   if (handle) {
++      __driUtilMessage("Loaded %s", path);
++   } else {
++      const char *error;
 +
-+		if (!error)
-+		{
-+			error = "unknown error";
-+		}
++      error = dlerror();
++      if (!error)
++         error = "unknown error";
 +
-+		errorMessage("%s: Couldn't load %s: %s\n",
-+		             __func__, path, error);
-+	}
++      errorMessage("%s: Couldn't load %s: %s", __func__, path, error);
++   }
 +
-+	return handle;
++   return handle;
 +}
 +
 +static void
 +UnloadLib(void *handle, const char *name)
 +{
-+	if (!handle)
-+	{
-+		return;
-+	}
++   if (!handle)
++      return;
 +
-+	/* Clear the error */
-+	(void) dlerror();
++   /* Clear the error */
++   (void) dlerror();
 +
-+	if (dlclose(handle))
-+	{
-+		const char *error = dlerror();
++   if (dlclose(handle)) {
++      const char *error;
 +
-+		if (!error)
-+		{
-+			error = "unknown error";
-+		}
++      error = dlerror();
++      if (!error)
++         error = "unknown error";
 +
-+		errorMessage("%s: Couldn't unload %s: %s\n",
-+		             __func__, name, error);
-+	}
-+	else
-+	{
-+		__driUtilMessage("Unloaded %s\n", name);
-+	}
++      errorMessage("%s: Couldn't unload %s: %s", __func__, name, error);
++   } else {
++      __driUtilMessage("Unloaded %s", name);
++   }
 +}
 +
 +static bool
 +LoadSupportLib(void)
 +{
-+	gpvSupLib = LoadLib(PVRDRI_SUPPORT_LIB);
++   gpvSupLib = LoadLib(PVRDRI_SUPPORT_LIB);
 +
-+	return gpvSupLib != NULL;
++   return gpvSupLib != NULL;
 +}
 +
 +static void
 +UnloadSupportLib(void)
 +{
-+	UnloadLib(gpvSupLib, PVRDRI_SUPPORT_LIB);
-+	gpvSupLib = NULL;
-+}
-+
-+static bool
-+RegisterCallbacksCompat(const PVRDRICallbacks *psCallbacks)
-+{
-+	void (*pfRegisterCallbacks)(PVRDRICallbacks *psCallbacks) = NULL;
-+
-+	LookupFunc(PVRDRIRegisterCallbacks, pfRegisterCallbacks);
-+
-+	if (pfRegisterCallbacks != (void *)&DumSupFunc)
-+	{
-+		PVRDRICallbacks sCallbacks = *psCallbacks;
-+
-+		pfRegisterCallbacks(&sCallbacks);
-+
-+		return true;
-+	}
-+
-+	return false;
++   UnloadLib(gpvSupLib, PVRDRI_SUPPORT_LIB);
++   gpvSupLib = NULL;
 +}
 +
 +static void
 +CompatDeinit(void)
 +{
-+	UnloadSupportLib();
-+	memset(&gsSup, 0, sizeof(gsSup));
-+	guSupVer = 0;
++   UnloadSupportLib();
++   memset(&gsSup, 0, sizeof(gsSup));
++   memset(&gsSupV2, 0, sizeof(gsSupV2));
++}
++
++static void
++SetupLocalDRISupportInterfaceV2(void)
++{
++   gsSupV2.v0.CreateScreen = DRIMODCreateScreen;
++   gsSupV2.v0.DestroyScreen = DRIMODDestroyScreen;
++   gsSupV2.v0.CreateContext = DRIMODCreateContext;
++   gsSupV2.v0.DestroyContext = DRIMODDestroyContext;
++   gsSupV2.v0.CreateDrawable = DRIMODCreateDrawable;
++   gsSupV2.v0.DestroyDrawable = DRIMODDestroyDrawable;
++   gsSupV2.v0.MakeCurrent = DRIMODMakeCurrent;
++   gsSupV2.v0.UnbindContext = DRIMODUnbindContext;
++   gsSupV2.v0.AllocateBuffer = DRIMODAllocateBuffer;
++   gsSupV2.v0.ReleaseBuffer = DRIMODReleaseBuffer;
++   gsSupV2.v0.SetTexBuffer2 = DRIMODSetTexBuffer2;
++   gsSupV2.v0.ReleaseTexBuffer = DRIMODReleaseTexBuffer;
++   gsSupV2.v0.Flush = DRIMODFlush;
++   gsSupV2.v0.Invalidate = DRIMODInvalidate;
++   gsSupV2.v0.FlushWithFlags = DRIMODFlushWithFlags;
++   gsSupV2.v0.CreateImageFromName = DRIMODCreateImageFromName;
++   gsSupV2.v0.CreateImageFromRenderbuffer =
++      DRIMODCreateImageFromRenderbuffer;
++   gsSupV2.v0.DestroyImage = DRIMODDestroyImage;
++   gsSupV2.v0.CreateImage = DRIMODCreateImage;
++   gsSupV2.v0.QueryImage = DRIMODQueryImage;
++   gsSupV2.v0.DupImage = DRIMODDupImage;
++   gsSupV2.v0.ValidateImageUsage = DRIMODValidateImageUsage;
++   gsSupV2.v0.CreateImageFromNames = DRIMODCreateImageFromNames;
++   gsSupV2.v0.FromPlanar = DRIMODFromPlanar;
++   gsSupV2.v0.CreateImageFromTexture = DRIMODCreateImageFromTexture;
++   gsSupV2.v0.CreateImageFromFDs = DRIMODCreateImageFromFDs;
++   gsSupV2.v0.CreateImageFromDMABufs = DRIMODCreateImageFromDMABufs;
++   gsSupV2.v0.GetImageCapabilities = DRIMODGetImageCapabilities;
++   gsSupV2.v0.BlitImage = DRIMODBlitImage;
++   gsSupV2.v0.MapImage = DRIMODMapImage;
++   gsSupV2.v0.UnmapImage = DRIMODUnmapImage;
++   gsSupV2.v0.CreateImageWithModifiers = DRIMODCreateImageWithModifiers;
++   gsSupV2.v0.CreateImageFromDMABufs2 = DRIMODCreateImageFromDMABufs2;
++   gsSupV2.v0.QueryDMABufFormats = DRIMODQueryDMABufFormats;
++   gsSupV2.v0.QueryDMABufModifiers = DRIMODQueryDMABufModifiers;
++   gsSupV2.v0.QueryDMABufFormatModifierAttribs =
++      DRIMODQueryDMABufFormatModifierAttribs;
++   gsSupV2.v0.CreateImageFromRenderBuffer2 =
++      DRIMODCreateImageFromRenderBuffer2;
++   gsSupV2.v0.CreateImageFromBuffer = DRIMODCreateImageFromBuffer;
++   gsSupV2.v0.QueryRendererInteger = DRIMODQueryRendererInteger;
++   gsSupV2.v0.QueryRendererString = DRIMODQueryRendererString;
++   gsSupV2.v0.CreateFence = DRIMODCreateFence;
++   gsSupV2.v0.DestroyFence = DRIMODDestroyFence;
++   gsSupV2.v0.ClientWaitSync = DRIMODClientWaitSync;
++   gsSupV2.v0.ServerWaitSync = DRIMODServerWaitSync;
++   gsSupV2.v0.GetFenceCapabilities = DRIMODGetFenceCapabilities;
++   gsSupV2.v0.CreateFenceFD = DRIMODCreateFenceFD;
++   gsSupV2.v0.GetFenceFD = DRIMODGetFenceFD;
++   gsSupV2.v0.GetNumAPIProcs = DRIMODGetNumAPIProcs;
++   gsSupV2.v0.GetAPIProcName = DRIMODGetAPIProcName;
++   gsSupV2.v0.GetAPIProcAddress = DRIMODGetAPIProcAddress;
++   gsSupV2.v0.SetDamageRegion = DRIMODSetDamageRegion;
++
++   PVRDRIAdjustExtensions(0, 0);
 +}
 +
 +bool
-+PVRDRICompatInit(const PVRDRICallbacks *psCallbacks, unsigned uVersion)
++PVRDRICompatInit(const PVRDRICallbacks *psCallbacks, unsigned int uVersion,
++                 const struct PVRDRICallbacksV2 *psCallbacksV2,
++                 unsigned int uVersionV2, unsigned int uMinVersionV2)
 +{
-+	bool res;
++   bool (*pfRegisterVersionedCallbacks)(const PVRDRICallbacks *psCallbacks,
++                                        unsigned int uVersion);
++   bool (*pfRegisterVersionedCallbacksV2)(const void *pvCallbacks,
++                                          unsigned int uVersion,
++                                          unsigned int uMinVersion);
++   bool res;
 +
-+	bool (*pfRegisterVersionedCallbacks)(const PVRDRICallbacks *psCallbacks,
-+						    unsigned uVersion) = NULL;
++   CompatLock();
++   res = (giSupLibRef++ != 0);
++   if (res)
++      goto Exit;
 +
-+	CompatLock();
-+	res = (giSupLibRef++ != 0);
-+	if (res)
-+	{
-+		goto Exit;
-+	}
++   res = LoadSupportLib();
++   if (!res)
++      goto Exit;
 +
-+	res = LoadSupportLib();
-+	if (!res)
-+	{
-+		goto Exit;
-+	}
++   LookupFunc(PVRDRIRegisterVersionedCallbacksV2,
++              pfRegisterVersionedCallbacksV2);
 +
-+	LookupFunc(PVRDRIRegisterVersionedCallbacks, pfRegisterVersionedCallbacks);
++   LookupFunc(PVRDRIRegisterVersionedCallbacks,
++              pfRegisterVersionedCallbacks);
 +
-+	if (pfRegisterVersionedCallbacks != (void *)&DumSupFunc)
-+	{
-+		res = pfRegisterVersionedCallbacks(psCallbacks, uVersion);
-+	}
-+	else
-+	{
-+		res = RegisterCallbacksCompat(psCallbacks);
-+	}
++   res = (pfRegisterVersionedCallbacksV2 != NULL) ||
++      (pfRegisterVersionedCallbacks != NULL);
++   if (!res)
++      goto Exit;
++
++   if (pfRegisterVersionedCallbacksV2) {
++      res = pfRegisterVersionedCallbacksV2(psCallbacksV2,
++                                           uVersionV2, uMinVersionV2);
++   } else {
++      res = pfRegisterVersionedCallbacks(psCallbacks, uVersion);
++      if (res)
++         SetupLocalDRISupportInterfaceV2();
++   }
++
 +Exit:
-+	if (!res)
-+	{
-+		CompatDeinit();
-+		giSupLibRef--;
-+	}
-+	CompatUnlock();
++   if (!res) {
++      CompatDeinit();
++      giSupLibRef--;
++   }
++   CompatUnlock();
 +
-+	return res;
++   return res;
 +}
 +
 +void
 +PVRDRICompatDeinit(void)
 +{
-+	CompatLock();
-+
-+	if (--giSupLibRef == 0)
-+	{
-+		CompatDeinit();
-+	}
-+
-+	CompatUnlock();
++   CompatLock();
++   if (--giSupLibRef == 0)
++      CompatDeinit();
++   CompatUnlock();
 +}
 +
 +bool
 +PVRDRIRegisterSupportInterfaceV1(const PVRDRISupportInterface *psInterface,
-+				 unsigned uVersion)
++                                 unsigned int uVersion)
 +{
-+	size_t uSize;
++   size_t uSize;
 +
-+	/* The "default" case should be associated with the latest version */
-+	switch (uVersion)
-+	{
-+		default:
-+		case 2:
-+			uSize = PVRDRIInterfaceSize(GetFenceFd);
-+			break;
-+		case 1:
-+			uSize = PVRDRIInterfaceSize(CreateDrawableWithConfig);
-+			break;
-+		case 0:
-+			uSize = PVRDRIInterfaceSize(QueryModifiers);
-+			break;
-+	}
++   memset(&gsSup, 0, sizeof(gsSup));
++   memset(&gsSupV2, 0, sizeof(gsSupV2));
 +
-+	memcpy(&gsSup, psInterface, uSize);
++   /* The "default" case should be associated with the latest version */
++   switch (uVersion) {
++   default:
++   case 2:
++      uSize = PVRDRIInterfaceSize(GetFenceFd);
++      break;
++   case 1:
++   case 0:
++      return false;
++   }
 +
-+	guSupVer = uVersion;
++   memcpy(&gsSup, psInterface, uSize);
 +
-+	return true;
++   return true;
 +}
 +
++bool
++MODSUPRegisterSupportInterfaceV2(const void *pvInterface,
++                                 unsigned int uVersion,
++                                 unsigned int uMinVersion)
++{
++   size_t uStart, uEnd;
++
++   memset(&gsSup, 0, sizeof(gsSup));
++   memset(&gsSupV2, 0, sizeof(gsSupV2));
++
++   if (uVersion < uMinVersion)
++      return false;
++
++   /*
++    * Minimum versions we support. To prevent the accumulation of old unused
++    * interfaces in the PVRDRIInterfaceV2 structure, the caller specifies the
++    * minimum version it supports. This will be pointed to be the psInterface
++    * argument. Assuming we support that version, we must copy the structure
++    * passed to us into the correct place in our version of the interface
++    * structure.
++    */
++   switch (uMinVersion) {
++   case 0:
++      uStart = PVRDRIInterfaceV2Start(v0);
++      break;
++   case 1:
++      /* Version 1 requires version 0 */
++      return false;
++   default:
++      return false;
++   }
++
++   /* The "default" case should be associated with the latest version */
++   switch (uVersion) {
++   default:
++   case 1:
++      /* Version 1 is an extension of version 0 */
++      if (uMinVersion > 0)
++         return false;
++
++      uEnd = PVRDRIInterfaceV2End(v1);
++      break;
++   case 0:
++      uEnd = PVRDRIInterfaceV2End(v0);
++      break;
++   }
++
++   memcpy(((char *) &gsSupV2) + uStart, pvInterface, uEnd - uStart);
++
++   PVRDRIAdjustExtensions(uVersion, uMinVersion);
++
++   return true;
++}
++
++struct DRISUPScreen *
++DRISUPCreateScreen(struct __DRIscreenRec *psDRIScreen, int iFD,
++                   bool bUseInvalidate, void *pvLoaderPrivate,
++                   const struct __DRIconfigRec ***pppsConfigs,
++                   int *piMaxGLES1Version, int *piMaxGLES2Version)
++{
++   CallFuncV2(v0.CreateScreen,
++              psDRIScreen, iFD, bUseInvalidate, pvLoaderPrivate, pppsConfigs,
++              piMaxGLES1Version, piMaxGLES2Version);
++
++   return NULL;
++}
++
++void
++DRISUPDestroyScreen(struct DRISUPScreen *psDRISUPScreen)
++{
++   CallFuncV2(v0.DestroyScreen,
++              psDRISUPScreen);
++}
++
++unsigned int
++DRISUPCreateContext(PVRDRIAPIType eAPI, PVRDRIConfig *psPVRDRIConfig,
++                    struct PVRDRIContextConfig *psCtxConfig,
++                    struct __DRIcontextRec *psDRIContext,
++                    struct DRISUPContext *psDRISUPSharedContext,
++                    struct DRISUPScreen *psDRISUPScreen,
++                    struct DRISUPContext **ppsDRISUPContext)
++{
++   CallFuncV2(v0.CreateContext,
++              eAPI, psPVRDRIConfig, psCtxConfig, psDRIContext,
++              psDRISUPSharedContext, psDRISUPScreen, ppsDRISUPContext);
++
++   return PVRDRI_CONTEXT_ERROR_BAD_API;
++}
++
++void
++DRISUPDestroyContext(struct DRISUPContext *psDRISUPContext)
++{
++   CallFuncV2(v0.DestroyContext,
++              psDRISUPContext);
++}
++
++struct DRISUPDrawable *
++DRISUPCreateDrawable(struct __DRIdrawableRec *psDRIDrawable,
++                     struct DRISUPScreen *psDRISUPScreen,
++                     void *pvLoaderPrivate, PVRDRIConfig *psPVRDRIConfig)
++{
++   CallFuncV2(v0.CreateDrawable,
++              psDRIDrawable, psDRISUPScreen, pvLoaderPrivate, psPVRDRIConfig);
++
++   return NULL;
++}
++
++void
++DRISUPDestroyDrawable(struct DRISUPDrawable *psDRISUPDrawable)
++{
++   CallFuncV2(v0.DestroyDrawable,
++              psDRISUPDrawable);
++}
++
++bool
++DRISUPMakeCurrent(struct DRISUPContext *psDRISUPContext,
++                  struct DRISUPDrawable *psDRISUPWrite,
++                  struct DRISUPDrawable *psDRISUPRead)
++{
++   CallFuncV2(v0.MakeCurrent,
++              psDRISUPContext, psDRISUPWrite, psDRISUPRead);
++
++   return false;
++}
++
++bool
++DRISUPUnbindContext(struct DRISUPContext *psDRISUPContext)
++{
++   CallFuncV2(v0.UnbindContext,
++              psDRISUPContext);
++
++   return false;
++}
++
++struct DRISUPBuffer *
++DRISUPAllocateBuffer(struct DRISUPScreen *psDRISUPScreen,
++                     unsigned int uAttachment, unsigned int uFormat,
++                     int iWidth, int iHeight, unsigned int *puName,
++                     unsigned int *puPitch, unsigned int *puCPP,
++                     unsigned int *puFlags)
++{
++   CallFuncV2(v0.AllocateBuffer,
++              psDRISUPScreen, uAttachment, uFormat, iWidth, iHeight, puName,
++              puPitch, puCPP, puFlags);
++
++   return NULL;
++}
++
++void
++DRISUPReleaseBuffer(struct DRISUPScreen *psDRISUPScreen,
++                    struct DRISUPBuffer *psDRISUPBuffer)
++{
++   CallFuncV2(v0.ReleaseBuffer,
++              psDRISUPScreen, psDRISUPBuffer);
++}
++
++void
++DRISUPSetTexBuffer2(struct DRISUPContext *psDRISUPContext, int iTarget,
++                    int iFormat, struct DRISUPDrawable *psDRISUPDrawable)
++{
++   CallFuncV2(v0.SetTexBuffer2,
++              psDRISUPContext, iTarget, iFormat, psDRISUPDrawable);
++}
++
++void
++DRISUPReleaseTexBuffer(struct DRISUPContext *psDRISUPContext, int iTarget,
++                       struct DRISUPDrawable *psDRISUPDrawable)
++{
++   CallFuncV2(v0.ReleaseTexBuffer,
++              psDRISUPContext, iTarget, psDRISUPDrawable);
++}
++
++void
++DRISUPFlush(struct DRISUPDrawable *psDRISUPDrawable)
++{
++   CallFuncV2(v0.Flush,
++              psDRISUPDrawable);
++}
++
++void
++DRISUPInvalidate(struct DRISUPDrawable *psDRISUPDrawable)
++{
++   CallFuncV2(v0.Invalidate,
++              psDRISUPDrawable);
++}
++
++void
++DRISUPFlushWithFlags(struct DRISUPContext *psDRISUPContext,
++                     struct DRISUPDrawable *psDRISUPDrawable,
++                     unsigned int uFlags, unsigned int uThrottleReason)
++{
++   CallFuncV2(v0.FlushWithFlags,
++              psDRISUPContext, psDRISUPDrawable, uFlags, uThrottleReason);
++}
++
++__DRIimage *
++DRISUPCreateImageFromName(struct DRISUPScreen *psDRISUPScreen,
++                          int iWidth, int iHeight, int iFourCC, int iName,
++                          int iPitch, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromName,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, iName, iPitch,
++              pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromRenderbuffer(struct DRISUPContext *psDRISUPContext,
++                                  int iRenderBuffer, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromRenderbuffer,
++              psDRISUPContext, iRenderBuffer, pvLoaderPrivate);
++
++   return NULL;
++}
++
++void
++DRISUPDestroyImage(__DRIimage *psImage)
++{
++   CallFuncV2(v0.DestroyImage, psImage);
++}
++
++__DRIimage *
++DRISUPCreateImage(struct DRISUPScreen *psDRISUPScreen,
++                  int iWidth, int iHeight, int iFourCC, unsigned int uUse,
++                  void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImage,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, uUse, pvLoaderPrivate);
++
++   return NULL;
++}
++
++bool
++DRISUPQueryImage(__DRIimage *psImage, int iAttrib, int *piValue)
++{
++   CallFuncV2(v0.QueryImage,
++              psImage, iAttrib, piValue);
++
++   return false;
++}
++
++__DRIimage *
++DRISUPDupImage(__DRIimage *psImage, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.DupImage,
++              psImage, pvLoaderPrivate);
++
++   return NULL;
++}
++
++bool
++DRISUPValidateImageUsage(__DRIimage *psImage, unsigned int uUse)
++{
++   CallFuncV2(v0.ValidateImageUsage,
++              psImage, uUse);
++
++   return false;
++}
++
++__DRIimage *
++DRISUPCreateImageFromNames(struct DRISUPScreen *psDRISUPScreen,
++                           int iWidth, int iHeight, int iFourCC,
++                           int *piNames, int iNumNames,
++                           int *piStrides, int *piOffsets,
++                           void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromNames,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, piNames, iNumNames,
++              piStrides, piOffsets, pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPFromPlanar(__DRIimage *psImage, int iPlane, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.FromPlanar,
++              psImage, iPlane, pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromTexture(struct DRISUPContext *psDRISUPContext,
++                             int iTarget, unsigned int uTexture, int iDepth,
++                             int iLevel, unsigned int *puError,
++                             void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromTexture,
++              psDRISUPContext, iTarget, uTexture, iDepth, iLevel, puError,
++              pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromFDs(struct DRISUPScreen *psDRISUPcreen,
++                         int iWidth, int iHeight, int iFourCC,
++                         int *piFDs, int iNumFDs, int *piStrides,
++                         int *piOffsets, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromFDs,
++              psDRISUPcreen, iWidth, iHeight, iFourCC, piFDs, iNumFDs,
++              piStrides, piOffsets, pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromDmaBufs(struct DRISUPScreen *psDRISUPScreen,
++                             int iWidth, int iHeight, int iFourCC,
++                             int *piFDs, int iNumFDs,
++                             int *piStrides, int *piOffsets,
++                             unsigned int uColorSpace,
++                             unsigned int uSampleRange,
++                             unsigned int uHorizSiting,
++                             unsigned int uVertSiting,
++                             unsigned int *puError,
++                             void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromDMABufs,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, piFDs, iNumFDs,
++              piStrides, piOffsets, uColorSpace, uSampleRange,
++              uHorizSiting, uVertSiting, puError, pvLoaderPrivate);
++
++   return NULL;
++}
++
++int
++DRISUPGetImageCapabilities(struct DRISUPScreen *psDRISUPScreen)
++{
++   CallFuncV2(v0.GetImageCapabilities,
++              psDRISUPScreen);
++
++   return 0;
++}
++
++void
++DRISUPBlitImage(struct DRISUPContext *psDRISUPContext,
++                __DRIimage *psDst, __DRIimage *psSrc, int iDstX0, int iDstY0,
++                int iDstWidth, int iDstHeight, int iSrcX0, int iSrcY0,
++                int iSrcWidth, int iSrcHeight, int iFlushFlag)
++{
++   CallFuncV2(v0.BlitImage,
++              psDRISUPContext, psDst, psSrc, iDstX0, iDstY0,
++              iDstWidth, iDstHeight, iSrcX0, iSrcY0,
++              iSrcWidth, iSrcHeight, iFlushFlag);
++}
++
++void *
++DRISUPMapImage(struct DRISUPContext *psDRISUPContext, __DRIimage* psImage,
++               int iX0, int iY0, int iWidth, int iHeight, unsigned int uFlags,
++               int *piStride, void **ppvData)
++{
++   CallFuncV2(v0.MapImage,
++              psDRISUPContext, psImage, iX0, iY0, iWidth, iHeight, uFlags,
++              piStride, ppvData);
++
++   return NULL;
++}
++
++void
++DRISUPUnmapImage(struct DRISUPContext *psDRISUPContext, __DRIimage *psImage,
++                 void *pvData)
++{
++   CallFuncV2(v0.UnmapImage,
++              psDRISUPContext, psImage, pvData);
++}
++
++__DRIimage *
++DRISUPCreateImageWithModifiers(struct DRISUPScreen *psDRISUPScreen,
++                               int iWidth, int iHeight, int iFourCC,
++                               const uint64_t *puModifiers,
++                               const unsigned int uModifierCount,
++                               void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageWithModifiers,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, puModifiers,
++              uModifierCount, pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromDMABufs2(struct DRISUPScreen *psDRISUPScreen,
++                              int iWidth, int iHeight, int iFourCC,
++                              uint64_t uModifier, int *piFDs, int iNumFDs,
++                              int *piStrides, int *piOffsets,
++                              unsigned int uColorSpace,
++                              unsigned int uSampleRange,
++                              unsigned int uHorizSiting,
++                              unsigned int uVertSiting,
++                              unsigned int *puError, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromDMABufs2,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, uModifier,
++              piFDs, iNumFDs, piStrides, piOffsets, uColorSpace, uSampleRange,
++              uHorizSiting, uVertSiting, puError, pvLoaderPrivate);
++
++   return NULL;
++}
++
++bool
++DRISUPQueryDMABufFormats(struct DRISUPScreen *psDRISUPScreen, int iMax,
++                         int *piFormats, int *piCount)
++{
++   CallFuncV2(v0.QueryDMABufFormats,
++              psDRISUPScreen, iMax, piFormats, piCount);
++
++   return false;
++}
++
++bool
++DRISUPQueryDMABufModifiers(struct DRISUPScreen *psDRISUPScreen, int iFourCC,
++                           int iMax, uint64_t *puModifiers,
++                           unsigned int *piExternalOnly, int *piCount)
++{
++   CallFuncV2(v0.QueryDMABufModifiers,
++              psDRISUPScreen, iFourCC, iMax, puModifiers, piExternalOnly,
++              piCount);
++
++   return false;
++}
++
++bool
++DRISUPQueryDMABufFormatModifierAttribs(struct DRISUPScreen *psDRISUPScreen,
++                                       uint32_t iFourCC, uint64_t uModifier,
++                                       int iAttrib, uint64_t *puValue)
++{
++   CallFuncV2(v0.QueryDMABufFormatModifierAttribs,
++              psDRISUPScreen, iFourCC, uModifier, iAttrib, puValue);
++
++   return false;
++}
++
++__DRIimage *
++DRISUPCreateImageFromRenderBuffer2(struct DRISUPContext *psDRISUPContext,
++                                   int iRenderBuffer, void *pvLoaderPrivate,
++                                   unsigned int *puError)
++{
++   CallFuncV2(v0.CreateImageFromRenderBuffer2,
++              psDRISUPContext, iRenderBuffer, pvLoaderPrivate, puError);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromBuffer(struct DRISUPContext *psDRISUPContext,
++                            int iTarget, void *pvBuffer,
++                            unsigned int *puError, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromBuffer,
++              psDRISUPContext, iTarget, pvBuffer, puError, pvLoaderPrivate);
++
++   return NULL;
++}
++
++int
++DRISUPQueryRendererInteger(struct DRISUPScreen *psDRISUPScreen,
++                           int iAttribute, unsigned int *puValue)
++{
++   CallFuncV2(v0.QueryRendererInteger,
++              psDRISUPScreen, iAttribute, puValue);
++
++   return -1;
++}
++
++int
++DRISUPQueryRendererString(struct DRISUPScreen *psDRISUPScreen,
++                          int iAttribute, const char **ppszValue)
++{
++   CallFuncV2(v0.QueryRendererString,
++              psDRISUPScreen, iAttribute, ppszValue);
++
++   return -1;
++}
++
++void *
++DRISUPCreateFence(struct DRISUPContext *psDRISUPContext)
++{
++   CallFuncV2(v0.CreateFence,
++              psDRISUPContext);
++
++   return NULL;
++}
++
++void
++DRISUPDestroyFence(struct DRISUPScreen *psDRISUPScreen, void *pvFence)
++{
++   CallFuncV2(v0.DestroyFence,
++              psDRISUPScreen, pvFence);
++}
++
++bool
++DRISUPClientWaitSync(struct DRISUPContext *psDRISUPContext, void *pvFence,
++                     unsigned int uFlags, uint64_t uTimeout)
++{
++   CallFuncV2(v0.ClientWaitSync,
++              psDRISUPContext, pvFence, uFlags, uTimeout);
++
++   return false;
++}
++
++void
++DRISUPServerWaitSync(struct DRISUPContext *psDRISUPContext, void *pvFence,
++                     unsigned int uFlags)
++{
++   CallFuncV2(v0.ServerWaitSync,
++              psDRISUPContext, pvFence, uFlags);
++}
++
++unsigned int
++DRISUPGetFenceCapabilities(struct DRISUPScreen *psDRISUPScreen)
++{
++   CallFuncV2(v0.GetFenceCapabilities,
++              psDRISUPScreen);
++
++   return 0;
++}
++
++void *
++DRISUPCreateFenceFD(struct DRISUPContext *psDRISUPContext, int iFD)
++{
++   CallFuncV2(v0.CreateFenceFD,
++              psDRISUPContext, iFD);
++
++   return NULL;
++}
++
++int
++DRISUPGetFenceFD(struct DRISUPScreen *psDRISUPScreen, void *pvFence)
++{
++   CallFuncV2(v0.GetFenceFD,
++              psDRISUPScreen, pvFence);
++
++   return -1;
++}
++
++void *
++DRISUPGetFenceFromCLEvent(struct DRISUPScreen *psDRISUPScreen,
++                          intptr_t iCLEvent)
++{
++   CallFuncV2(v1.GetFenceFromCLEvent,
++              psDRISUPScreen, iCLEvent);
++
++   return NULL;
++}
++
++unsigned int
++DRISUPGetNumAPIProcs(struct DRISUPScreen *psDRISUPScreen,
++                     PVRDRIAPIType eAPI)
++{
++   CallFuncV2(v0.GetNumAPIProcs,
++              psDRISUPScreen, eAPI);
++
++   return 0;
++}
++
++const char *
++DRISUPGetAPIProcName(struct DRISUPScreen *psDRISUPScreen, PVRDRIAPIType eAPI,
++                     unsigned int uIndex)
++{
++   CallFuncV2(v0.GetAPIProcName,
++              psDRISUPScreen, eAPI, uIndex);
++
++   return NULL;
++}
++
++void *
++DRISUPGetAPIProcAddress(struct DRISUPScreen *psDRISUPScreen,
++                        PVRDRIAPIType eAPI, unsigned int uIndex)
++{
++   CallFuncV2(v0.GetAPIProcAddress,
++              psDRISUPScreen, eAPI, uIndex);
++
++   return NULL;
++}
++
++void
++DRISUPSetDamageRegion(struct DRISUPDrawable *psDRISUPDrawable,
++                      unsigned int uNRects, int *piRects)
++{
++   CallFuncV2(v0.SetDamageRegion,
++              psDRISUPDrawable, uNRects, piRects);
++}
++
++/******************************************************************************
++ * PVR DRI Support interface, version 1.
++ * Everything below this point is deprecated.
++ *****************************************************************************/
++
 +PVRDRIDeviceType
 +PVRDRIGetDeviceTypeFromFd(int iFd)
 +{
-+	CallFuncLegacy(PVRDRIGetDeviceTypeFromFd,
-+		       GetDeviceTypeFromFd,
-+		       iFd);
++   CallFunc(GetDeviceTypeFromFd, iFd);
 +
-+	return PVRDRI_DEVICE_TYPE_INVALID;
++   return PVRDRI_DEVICE_TYPE_INVALID;
 +}
 +
 +
 +bool
 +PVRDRIIsFirstScreen(PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIIsFirstScreen,
-+		       IsFirstScreen,
-+		       psScreenImpl);
++   CallFunc(IsFirstScreen, psScreenImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +
 +uint32_t
 +PVRDRIPixFmtGetDepth(IMG_PIXFMT eFmt)
 +{
-+	CallFuncLegacy(PVRDRIPixFmtGetDepth,
-+		       PixFmtGetDepth,
-+		       eFmt);
++   CallFunc(PixFmtGetDepth, eFmt);
 +
-+	return 0;
++   return 0;
 +}
 +
 +uint32_t
 +PVRDRIPixFmtGetBPP(IMG_PIXFMT eFmt)
 +{
-+	CallFuncLegacy(PVRDRIPixFmtGetBPP,
-+		       PixFmtGetBPP,
-+		       eFmt);
++   CallFunc(PixFmtGetBPP, eFmt);
 +
-+	return 0;
++   return 0;
 +}
 +
 +uint32_t
 +PVRDRIPixFmtGetBlockSize(IMG_PIXFMT eFmt)
 +{
-+	CallFuncLegacy(PVRDRIPixFmtGetBlockSize,
-+		       PixFmtGetBlockSize,
-+		       eFmt);
++   CallFunc(PixFmtGetBlockSize, eFmt);
 +
-+	return 0;
++   return 0;
 +}
 +
 +PVRDRIScreenImpl *
 +PVRDRICreateScreenImpl(int iFd)
 +{
-+	CallFuncLegacy(PVRDRICreateScreenImpl,
-+		       CreateScreen,
-+		       iFd);
++   CallFunc(CreateScreen, iFd);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +void
 +PVRDRIDestroyScreenImpl(PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIDestroyScreenImpl,
-+		       DestroyScreen,
-+		       psScreenImpl);
++   CallFunc(DestroyScreen, psScreenImpl);
 +}
 +
 +int
-+PVRDRIAPIVersion(PVRDRIAPIType eAPI,
-+		 PVRDRIAPISubType eAPISub,
-+		 PVRDRIScreenImpl *psScreenImpl)
++PVRDRIAPIVersion(PVRDRIAPIType eAPI, PVRDRIAPISubType eAPISub,
++                 PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIAPIVersion,
-+		       APIVersion,
-+		       eAPI,
-+		       eAPISub,
-+		       psScreenImpl);
++   CallFunc(APIVersion, eAPI, eAPISub, psScreenImpl);
 +
-+	return 0;
++   return 0;
 +}
 +
 +void *
-+PVRDRIEGLGetLibHandle(PVRDRIAPIType eAPI,
-+		      PVRDRIScreenImpl *psScreenImpl)
++PVRDRIEGLGetLibHandle(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIEGLGetLibHandle,
-+		       EGLGetLibHandle,
-+		       eAPI,
-+		       psScreenImpl);
++   CallFunc(EGLGetLibHandle, eAPI, psScreenImpl);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +PVRDRIGLAPIProc
-+PVRDRIEGLGetProcAddress(PVRDRIAPIType eAPI,
-+			PVRDRIScreenImpl *psScreenImpl,
-+			const char *psProcName)
++PVRDRIEGLGetProcAddress(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                        const char *psProcName)
 +{
-+	CallFuncLegacy(PVRDRIEGLGetProcAddress,
-+		       EGLGetProcAddress,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psProcName);
++   CallFunc(EGLGetProcAddress, eAPI, psScreenImpl, psProcName);
 +
-+	return (PVRDRIGLAPIProc)NULL;
++   return (PVRDRIGLAPIProc) NULL;
 +}
 +
 +bool
-+PVRDRIEGLFlushBuffers(PVRDRIAPIType eAPI,
-+		      PVRDRIScreenImpl *psScreenImpl,
-+		      PVRDRIContextImpl *psContextImpl,
-+		      PVRDRIDrawableImpl *psDrawableImpl,
-+		      bool bFlushAllSurfaces,
-+		      bool bSwapBuffers,
-+		      bool bWaitForHW)
++PVRDRIEGLFlushBuffers(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                      PVRDRIContextImpl *psContextImpl,
++                      PVRDRIDrawableImpl *psDrawableImpl,
++                      bool bFlushAllSurfaces, bool bSwapBuffers,
++                      bool bWaitForHW)
 +{
-+	CallFuncLegacy(PVRDRIEGLFlushBuffers,
-+		       EGLFlushBuffers,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psDrawableImpl,
-+		       bFlushAllSurfaces,
-+		       bSwapBuffers,
-+		       bWaitForHW);
++   CallFunc(EGLFlushBuffers, eAPI, psScreenImpl, psContextImpl,
++            psDrawableImpl, bFlushAllSurfaces, bSwapBuffers, bWaitForHW);
 +
-+	return false;
++   return false;
 +}
 +
 +void
 +PVRDRIEGLMarkRendersurfaceInvalid(PVRDRIAPIType eAPI,
-+				  PVRDRIScreenImpl *psScreenImpl,
-+				  PVRDRIContextImpl *psContextImpl)
++                                  PVRDRIScreenImpl *psScreenImpl,
++                                  PVRDRIContextImpl *psContextImpl)
 +{
-+	CallFuncLegacy(PVRDRIEGLMarkRendersurfaceInvalid,
-+		       EGLMarkRendersurfaceInvalid,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl);
++   CallFunc(EGLMarkRendersurfaceInvalid, eAPI, psScreenImpl, psContextImpl);
 +}
 +
-+static inline void PVRDRIConfigFromMesa(PVRDRIConfigInfo *psConfigInfo,
-+					const struct gl_config *psGLMode)
++unsigned int
++PVRDRICreateContextV1(PVRDRIScreenImpl *psScreenImpl,
++                      PVRDRIContextImpl *psSharedContextImpl,
++                      PVRDRIConfig *psConfig,
++                      PVRDRIAPIType eAPI, PVRDRIAPISubType eAPISub,
++                      unsigned int uMajorVersion, unsigned int uMinorVersion,
++                      uint32_t uFlags, bool bNotifyReset,
++                      unsigned int uPriority,
++                      PVRDRIContextImpl **ppsContextImpl)
 +{
-+	memset(psConfigInfo, 0, sizeof(*psConfigInfo));
++   CallFunc(CreateContextV1, psScreenImpl, psSharedContextImpl, psConfig,
++            eAPI, eAPISub, uMajorVersion, uMinorVersion, uFlags, bNotifyReset,
++            uPriority, ppsContextImpl);
 +
-+	if (psGLMode)
-+	{
-+		psConfigInfo->samples           = psGLMode->samples;
-+		psConfigInfo->redBits           = psGLMode->redBits;
-+		psConfigInfo->greenBits         = psGLMode->greenBits;
-+		psConfigInfo->blueBits          = psGLMode->blueBits;
-+		psConfigInfo->alphaBits         = psGLMode->alphaBits;
-+		psConfigInfo->rgbBits           = psGLMode->rgbBits;
-+		psConfigInfo->depthBits         = psGLMode->depthBits;
-+		psConfigInfo->stencilBits       = psGLMode->stencilBits;
-+		psConfigInfo->doubleBufferMode  = psGLMode->doubleBufferMode;
-+
-+		psConfigInfo->sampleBuffers     = psGLMode->sampleBuffers;
-+		psConfigInfo->bindToTextureRgb  = psGLMode->bindToTextureRgb;
-+		psConfigInfo->bindToTextureRgba = psGLMode->bindToTextureRgba;
-+	}
-+}
-+
-+unsigned
-+PVRDRISupportCreateContext(PVRDRIScreenImpl *psScreenImpl,
-+			   PVRDRIContextImpl *psSharedContextImpl,
-+			   PVRDRIConfig *psConfig,
-+			   PVRDRIAPIType eAPI,
-+			   PVRDRIAPISubType eAPISub,
-+			   unsigned uMajorVersion,
-+			   unsigned uMinorVersion,
-+			   uint32_t uFlags,
-+			   bool bNotifyReset,
-+			   unsigned uPriority,
-+			   PVRDRIContextImpl **ppsContextImpl)
-+{
-+	PVRDRIConfigInfo sConfigInfo;
-+
-+	CallFunc(CreateContextV1, 1,
-+		 psScreenImpl, psSharedContextImpl, psConfig, eAPI, eAPISub,
-+		 uMajorVersion, uMinorVersion, uFlags, bNotifyReset, uPriority,
-+		 ppsContextImpl);
-+
-+	PVRDRIConfigFromMesa(&sConfigInfo, &psConfig->sGLMode);
-+
-+	CallFuncLegacy(PVRDRICreateContextImpl,
-+		       CreateContext,
-+		       ppsContextImpl,
-+		       eAPI,
-+		       eAPISub,
-+		       psScreenImpl,
-+		       &sConfigInfo,
-+		       uMajorVersion,
-+		       uMinorVersion,
-+		       uFlags,
-+		       bNotifyReset,
-+		       uPriority,
-+		       psSharedContextImpl);
-+
-+	return PVRDRI_CONTEXT_ERROR_BAD_API;
++   return PVRDRI_CONTEXT_ERROR_BAD_API;
 +}
 +
 +void
-+PVRDRIDestroyContextImpl(PVRDRIContextImpl *psContextImpl,
-+			 PVRDRIAPIType eAPI,
-+			 PVRDRIScreenImpl *psScreenImpl)
++PVRDRIDestroyContextImpl(PVRDRIContextImpl *psContextImpl, PVRDRIAPIType eAPI,
++                         PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIDestroyContextImpl,
-+		       DestroyContext,
-+		       psContextImpl,
-+		       eAPI,
-+		       psScreenImpl);
++   CallFunc(DestroyContext, psContextImpl, eAPI, psScreenImpl);
 +}
 +
 +bool
-+PVRDRIMakeCurrentGC(PVRDRIAPIType eAPI,
-+		    PVRDRIScreenImpl *psScreenImpl,
-+		    PVRDRIContextImpl *psContextImpl,
-+		    PVRDRIDrawableImpl *psWriteImpl,
-+		    PVRDRIDrawableImpl *psReadImpl)
++PVRDRIMakeCurrentGC(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                    PVRDRIContextImpl *psContextImpl,
++                    PVRDRIDrawableImpl *psWriteImpl,
++                    PVRDRIDrawableImpl *psReadImpl)
 +{
-+	CallFuncLegacy(PVRDRIMakeCurrentGC,
-+		       MakeCurrentGC,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psWriteImpl,
-+		       psReadImpl);
++   CallFunc(MakeCurrentGC, eAPI, psScreenImpl, psContextImpl, psWriteImpl,
++            psReadImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +void
-+PVRDRIMakeUnCurrentGC(PVRDRIAPIType eAPI,
-+		      PVRDRIScreenImpl *psScreenImpl)
++PVRDRIMakeUnCurrentGC(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIMakeUnCurrentGC,
-+		       MakeUnCurrentGC,
-+		       eAPI,
-+		       psScreenImpl);
++   CallFunc(MakeUnCurrentGC, eAPI, psScreenImpl);
 +}
 +
-+unsigned
-+PVRDRIGetImageSource(PVRDRIAPIType eAPI,
-+		     PVRDRIScreenImpl *psScreenImpl,
-+		     PVRDRIContextImpl *psContextImpl,
-+		     uint32_t  uiTarget,
-+		     uintptr_t uiBuffer,
-+		     uint32_t  uiLevel,
-+		     IMGEGLImage *psEGLImage)
++unsigned int
++PVRDRIGetImageSource(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                     PVRDRIContextImpl *psContextImpl, uint32_t uiTarget,
++                     uintptr_t uiBuffer, uint32_t uiLevel,
++                     IMGEGLImage *psEGLImage)
 +{
-+	CallFuncLegacy(PVRDRIGetImageSource,
-+		       GetImageSource,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       uiTarget,
-+		       uiBuffer,
-+		       uiLevel,
-+		       psEGLImage);
++   CallFunc(GetImageSource, eAPI, psScreenImpl, psContextImpl, uiTarget,
++            uiBuffer, uiLevel, psEGLImage);
 +
-+	return PVRDRI_IMAGE_ERROR_BAD_MATCH;
++   return PVRDRI_IMAGE_ERROR_BAD_MATCH;
 +}
 +
 +bool
-+PVRDRI2BindTexImage(PVRDRIAPIType eAPI,
-+		    PVRDRIScreenImpl *psScreenImpl,
-+		    PVRDRIContextImpl *psContextImpl,
-+		    PVRDRIDrawableImpl *psDrawableImpl)
++PVRDRI2BindTexImage(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                    PVRDRIContextImpl *psContextImpl,
++                    PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVRDRI2BindTexImage,
-+		       BindTexImage,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psDrawableImpl);
++   CallFunc(BindTexImage, eAPI, psScreenImpl, psContextImpl, psDrawableImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +void
-+PVRDRI2ReleaseTexImage(PVRDRIAPIType eAPI,
-+		       PVRDRIScreenImpl *psScreenImpl,
-+		       PVRDRIContextImpl *psContextImpl,
-+		       PVRDRIDrawableImpl *psDrawableImpl)
++PVRDRI2ReleaseTexImage(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                       PVRDRIContextImpl *psContextImpl,
++                       PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVRDRI2ReleaseTexImage,
-+		       ReleaseTexImage,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psDrawableImpl);
++   CallFunc(ReleaseTexImage, eAPI, psScreenImpl, psContextImpl, psDrawableImpl);
 +}
 +
 +PVRDRIDrawableImpl *
-+PVRDRICreateDrawableImpl(PVRDRIDrawable *psPVRDrawable)
++PVRDRICreateDrawableWithConfig(PVRDRIDrawable *psPVRDrawable,
++                               PVRDRIConfig *psConfig)
 +{
-+	CallFuncLegacy(PVRDRICreateDrawableImpl,
-+		       CreateDrawable,
-+		       psPVRDrawable);
++   CallFunc(CreateDrawableWithConfig, psPVRDrawable, psConfig);
 +
-+	return NULL;
-+}
-+
-+PVRDRIDrawableImpl *
-+PVRDRISupportCreateDrawable(PVRDRIDrawable *psPVRDrawable,
-+			    PVRDRIConfig *psConfig)
-+{
-+	PVRDRIDrawableImpl *psDrawableImpl;
-+	PVRDRIConfigInfo sConfigInfo;
-+	IMG_PIXFMT ePixelFormat;
-+
-+	CallFunc(CreateDrawableWithConfig, 1,
-+		 psPVRDrawable,
-+		 psConfig);
-+
-+	ePixelFormat = PVRDRIGetPixelFormat(&psConfig->sGLMode);
-+	if (ePixelFormat == IMG_PIXFMT_UNKNOWN)
-+	{
-+		__driUtilMessage("%s: Couldn't work out pixel format", __func__);
-+		return NULL;
-+	}
-+
-+	psDrawableImpl = PVRDRICreateDrawableImpl(psPVRDrawable);
-+	if (!psDrawableImpl)
-+	{
-+		return NULL;
-+	}
-+
-+	PVRDRIConfigFromMesa(&sConfigInfo, &psConfig->sGLMode);
-+	if (!PVRDRIEGLDrawableConfigFromGLMode(psDrawableImpl,
-+	                                       &sConfigInfo,
-+	                                       psConfig->iSupportedAPIs,
-+	                                       ePixelFormat))
-+	{
-+		__driUtilMessage("%s: Couldn't derive EGL config", __func__);
-+		PVRDRIDestroyDrawableImpl(psDrawableImpl);
-+		return NULL;
-+	}
-+
-+	return psDrawableImpl;
++   return NULL;
 +}
 +
 +void
 +PVRDRIDestroyDrawableImpl(PVRDRIDrawableImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIDestroyDrawableImpl,
-+		       DestroyDrawable,
-+		       psScreenImpl);
++   CallFunc(DestroyDrawable, psScreenImpl);
 +}
 +
 +bool
 +PVREGLDrawableCreate(PVRDRIScreenImpl *psScreenImpl,
-+		     PVRDRIDrawableImpl *psDrawableImpl)
++                     PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVREGLDrawableCreate,
-+		       EGLDrawableCreate,
-+		       psScreenImpl,
-+		       psDrawableImpl);
++   CallFunc(EGLDrawableCreate, psScreenImpl, psDrawableImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +bool
 +PVREGLDrawableRecreate(PVRDRIScreenImpl *psScreenImpl,
-+		       PVRDRIDrawableImpl *psDrawableImpl)
++                       PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVREGLDrawableRecreate,
-+		       EGLDrawableRecreate,
-+		       psScreenImpl,
-+		       psDrawableImpl);
++   CallFunc(EGLDrawableRecreate, psScreenImpl, psDrawableImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +bool
 +PVREGLDrawableDestroy(PVRDRIScreenImpl *psScreenImpl,
-+		      PVRDRIDrawableImpl *psDrawableImpl)
++                      PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVREGLDrawableDestroy,
-+		       EGLDrawableDestroy,
-+		       psScreenImpl,
-+		       psDrawableImpl);
++   CallFunc(EGLDrawableDestroy, psScreenImpl, psDrawableImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +void
 +PVREGLDrawableDestroyConfig(PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVREGLDrawableDestroyConfig,
-+		       EGLDrawableDestroyConfig,
-+		       psDrawableImpl);
++   CallFunc(EGLDrawableDestroyConfig, psDrawableImpl);
 +}
 +
 +PVRDRIBufferImpl *
-+PVRDRIBufferCreate(PVRDRIScreenImpl *psScreenImpl,
-+		   int iWidth,
-+		   int iHeight,
-+		   unsigned int uiBpp,
-+		   unsigned int uiUseFlags,
-+		   unsigned int *puiStride)
++PVRDRIBufferCreate(PVRDRIScreenImpl *psScreenImpl, int iWidth, int iHeight,
++                   unsigned int uiBpp, unsigned int uiUseFlags,
++                   unsigned int *puiStride)
 +{
-+	CallFuncLegacy(PVRDRIBufferCreate,
-+		       BufferCreate,
-+		       psScreenImpl,
-+		       iWidth,
-+		       iHeight,
-+		       uiBpp,
-+		       uiUseFlags,
-+		       puiStride);
++   CallFunc(BufferCreate, psScreenImpl, iWidth, iHeight, uiBpp, uiUseFlags,
++            puiStride);
 +
-+	return NULL;
++   return NULL;
 +}
 +
-+DefineFunc_IsSupportedLegacy(PVRDRIBufferCreateWithModifiers,
-+			     BufferCreateWithModifiers)
-+
 +PVRDRIBufferImpl *
 +PVRDRIBufferCreateWithModifiers(PVRDRIScreenImpl *psScreenImpl,
-+				int iWidth,
-+				int iHeight,
-+				int format,
-+				IMG_PIXFMT eIMGPixelFormat,
-+				const uint64_t *puiModifiers,
-+				unsigned int uiModifierCount,
-+				unsigned int *puiStride)
++                                int iWidth, int iHeight,
++                                int format, IMG_PIXFMT eIMGPixelFormat,
++                                const uint64_t *puiModifiers,
++                                unsigned int uiModifierCount,
++                                unsigned int *puiStride)
 +{
-+	CallFuncLegacy(PVRDRIBufferCreateWithModifiers,
-+		       BufferCreateWithModifiers,
-+		       psScreenImpl,
-+		       iWidth,
-+		       iHeight,
-+		       format,
-+		       eIMGPixelFormat,
-+		       puiModifiers,
-+		       uiModifierCount,
-+		       puiStride);
++   CallFunc(BufferCreateWithModifiers, psScreenImpl, iWidth, iHeight, format,
++            eIMGPixelFormat, puiModifiers, uiModifierCount, puiStride);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +PVRDRIBufferImpl *
 +PVRDRIBufferCreateFromNames(PVRDRIScreenImpl *psScreenImpl,
-+			    int iWidth,
-+			    int iHeight,
-+			    unsigned uiNumPlanes,
-+			    const int *piName,
-+			    const int *piStride,
-+			    const int *piOffset,
-+			    const unsigned int *puiWidthShift,
-+			    const unsigned int *puiHeightShift)
++                            int iWidth, int iHeight, unsigned int uiNumPlanes,
++                            const int *piName, const int *piStride,
++                            const int *piOffset,
++                            const unsigned int *puiWidthShift,
++                            const unsigned int *puiHeightShift)
 +{
-+	CallFuncLegacy(PVRDRIBufferCreateFromNames,
-+		       BufferCreateFromNames,
-+		       psScreenImpl,
-+		       iWidth,
-+		       iHeight,
-+		       uiNumPlanes,
-+		       piName,
-+		       piStride,
-+		       piOffset,
-+		       puiWidthShift,
-+		       puiHeightShift);
++   CallFunc(BufferCreateFromNames, psScreenImpl, iWidth, iHeight, uiNumPlanes,
++            piName, piStride, piOffset, puiWidthShift, puiHeightShift);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +PVRDRIBufferImpl *
-+PVRDRIBufferCreateFromName(PVRDRIScreenImpl *psScreenImpl,
-+			   int iName,
-+			   int iWidth,
-+			   int iHeight,
-+			   int iStride,
-+			   int iOffset)
-+{
-+	CallFuncLegacy(PVRDRIBufferCreateFromName,
-+		       BufferCreateFromName,
-+		       psScreenImpl,
-+		       iName,
-+		       iWidth,
-+		       iHeight,
-+		       iStride,
-+		       iOffset);
-+
-+	return NULL;
-+}
-+
-+PVRDRIBufferImpl *
-+PVRDRIBufferCreateFromFds(PVRDRIScreenImpl *psScreenImpl,
-+			  int iWidth,
-+			  int iHeight,
-+			  unsigned uiNumPlanes,
-+			  const int *piFd,
-+			  const int *piStride,
-+			  const int *piOffset,
-+			  const unsigned int *puiWidthShift,
-+			  const unsigned int *puiHeightShift)
-+{
-+	CallFuncLegacy(PVRDRIBufferCreateFromFds,
-+		       BufferCreateFromFds,
-+		       psScreenImpl,
-+		       iWidth,
-+		       iHeight,
-+		       uiNumPlanes,
-+		       piFd,
-+		       piStride,
-+		       piOffset,
-+		       puiWidthShift,
-+		       puiHeightShift);
-+
-+	return NULL;
-+}
-+
-+DefineFunc_IsSupportedLegacy(PVRDRIBufferCreateFromFdsWithModifier,
-+			     BufferCreateFromFdsWithModifier)
-+
-+PVRDRIBufferImpl *
 +PVRDRIBufferCreateFromFdsWithModifier(PVRDRIScreenImpl *psScreenImpl,
-+				      int iWidth,
-+				      int iHeight,
-+				      uint64_t uiModifier,
-+				      unsigned uiNumPlanes,
-+				      const int *piFd,
-+				      const int *piStride,
-+				      const int *piOffset,
-+				      const unsigned int *puiWidthShift,
-+				      const unsigned int *puiHeightShift)
++                                      int iWidth, int iHeight,
++                                      uint64_t uiModifier,
++                                      unsigned int uiNumPlanes,
++                                      const int *piFd, const int *piStride,
++                                      const int *piOffset,
++                                      const unsigned int *puiWidthShift,
++                                      const unsigned int *puiHeightShift)
 +{
-+	CallFuncLegacy(PVRDRIBufferCreateFromFdsWithModifier,
-+		       BufferCreateFromFdsWithModifier,
-+		       psScreenImpl,
-+		       iWidth,
-+		       iHeight,
-+		       uiModifier,
-+		       uiNumPlanes,
-+		       piFd,
-+		       piStride,
-+		       piOffset,
-+		       puiWidthShift,
-+		       puiHeightShift);
++   CallFunc(BufferCreateFromFdsWithModifier, psScreenImpl, iWidth, iHeight,
++            uiModifier, uiNumPlanes, piFd, piStride, piOffset,
++            puiWidthShift, puiHeightShift);
 +
-+	if (uiModifier == DRM_FORMAT_MOD_INVALID)
-+	{
-+		CallFuncLegacy(PVRDRIBufferCreateFromFds,
-+			       BufferCreateFromFds,
-+			       psScreenImpl,
-+			       iWidth,
-+			       iHeight,
-+			       uiNumPlanes,
-+			       piFd,
-+			       piStride,
-+			       piOffset,
-+			       puiWidthShift,
-+			       puiHeightShift);
-+	}
-+
-+	return NULL;
++   return NULL;
 +}
 +
 +PVRDRIBufferImpl *
 +PVRDRISubBufferCreate(PVRDRIScreenImpl *psScreen,
-+		      PVRDRIBufferImpl *psParentBuffer,
-+		      int plane)
++                      PVRDRIBufferImpl *psParentBuffer, int plane)
 +{
-+	CallFuncLegacy(PVRDRISubBufferCreate,
-+		       SubBufferCreate,
-+		       psScreen,
-+		       psParentBuffer,
-+		       plane);
++   CallFunc(SubBufferCreate, psScreen, psParentBuffer, plane);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +void
 +PVRDRIBufferDestroy(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferDestroy,
-+		       BufferDestroy,
-+		       psBuffer);
++   CallFunc(BufferDestroy, psBuffer);
 +}
 +
 +int
 +PVRDRIBufferGetFd(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferGetFd,
-+		       BufferGetFd,
-+		       psBuffer);
++   CallFunc(BufferGetFd, psBuffer);
 +
-+	return -1;
++   return -1;
 +}
 +
 +int
 +PVRDRIBufferGetHandle(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferGetHandle,
-+		       BufferGetHandle,
-+		       psBuffer);
++   CallFunc(BufferGetHandle, psBuffer);
 +
-+	return 0;
++   return 0;
 +}
 +
 +uint64_t
 +PVRDRIBufferGetModifier(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferGetModifier,
-+		       BufferGetModifier,
-+		       psBuffer);
++   CallFunc(BufferGetModifier, psBuffer);
 +
-+	return DRM_FORMAT_MOD_INVALID;
++   return DRM_FORMAT_MOD_INVALID;
 +}
 +
 +int
 +PVRDRIBufferGetName(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferGetName,
-+		       BufferGetName,
-+		       psBuffer);
++   CallFunc(BufferGetName, psBuffer);
 +
-+	return 0;
++   return 0;
 +}
 +
-+DefineFunc_IsSupportedLegacy(PVRDRIBufferGetOffset, BufferGetOffset)
-+
 +int
 +PVRDRIBufferGetOffset(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferGetOffset,
-+		       BufferGetOffset,
-+		       psBuffer);
++   CallFunc(BufferGetOffset, psBuffer);
 +
-+	return 0;
++   return 0;
 +}
 +
 +IMGEGLImage *
 +PVRDRIEGLImageCreate(void)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageCreate,
-+		       EGLImageCreate);
++   CallFunc(EGLImageCreate);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +IMGEGLImage *
-+PVRDRIEGLImageCreateFromBuffer(int iWidth,
-+			       int iHeight,
-+			       int iStride,
-+			       IMG_PIXFMT ePixelFormat,
-+			       IMG_YUV_COLORSPACE eColourSpace,
-+			       IMG_YUV_CHROMA_INTERP eChromaUInterp,
-+			       IMG_YUV_CHROMA_INTERP eChromaVInterp,
-+			       PVRDRIBufferImpl *psBuffer)
++PVRDRIEGLImageCreateFromBuffer(int iWidth, int iHeight, int iStride,
++                               IMG_PIXFMT ePixelFormat,
++                               IMG_YUV_COLORSPACE eColourSpace,
++                               IMG_YUV_CHROMA_INTERP eChromaUInterp,
++                               IMG_YUV_CHROMA_INTERP eChromaVInterp,
++                               PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageCreateFromBuffer,
-+		       EGLImageCreateFromBuffer,
-+		       iWidth,
-+		       iHeight,
-+		       iStride,
-+		       ePixelFormat,
-+		       eColourSpace,
-+		       eChromaUInterp,
-+		       eChromaVInterp,
-+		       psBuffer);
++   CallFunc(EGLImageCreateFromBuffer, iWidth, iHeight, iStride, ePixelFormat,
++            eColourSpace, eChromaUInterp, eChromaVInterp, psBuffer);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +IMGEGLImage *
 +PVRDRIEGLImageCreateFromSubBuffer(IMG_PIXFMT ePixelFormat,
-+				  PVRDRIBufferImpl *psSubBuffer)
++                                  PVRDRIBufferImpl *psSubBuffer)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageCreateFromSubBuffer,
-+		       EGLImageCreateFromSubBuffer,
-+		       ePixelFormat,
-+		       psSubBuffer);
++   CallFunc(EGLImageCreateFromSubBuffer, ePixelFormat, psSubBuffer);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +IMGEGLImage *
 +PVRDRIEGLImageDup(IMGEGLImage *psIn)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageDup,
-+		       EGLImageDup,
-+		       psIn);
++   CallFunc(EGLImageDup, psIn);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +void
 +PVRDRIEGLImageSetCallbackData(IMGEGLImage *psEGLImage, __DRIimage *image)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageSetCallbackData,
-+		       EGLImageSetCallbackData,
-+		       psEGLImage,
-+		       image);
++   CallFunc(EGLImageSetCallbackData, psEGLImage, image);
 +}
 +
 +void
 +PVRDRIEGLImageDestroyExternal(PVRDRIScreenImpl *psScreenImpl,
-+			      IMGEGLImage *psEGLImage,
-+			      PVRDRIEGLImageType eglImageType)
++                              IMGEGLImage *psEGLImage,
++                              PVRDRIEGLImageType eglImageType)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageDestroyExternal,
-+		       EGLImageDestroyExternal,
-+		       psScreenImpl,
-+		       psEGLImage,
-+		       eglImageType);
++   CallFunc(EGLImageDestroyExternal, psScreenImpl, psEGLImage, eglImageType);
 +}
 +
 +void
 +PVRDRIEGLImageFree(IMGEGLImage *psEGLImage)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageFree,
-+		       EGLImageFree,
-+		       psEGLImage);
++   CallFunc(EGLImageFree, psEGLImage);
 +}
 +
 +void
 +PVRDRIEGLImageGetAttribs(IMGEGLImage *psEGLImage,
-+			 PVRDRIBufferAttribs *psAttribs)
++                         PVRDRIBufferAttribs *psAttribs)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageGetAttribs,
-+		       EGLImageGetAttribs,
-+		       psEGLImage,
-+		       psAttribs);
++   CallFunc(EGLImageGetAttribs, psEGLImage, psAttribs);
 +}
 +
 +void *
-+PVRDRICreateFenceImpl(PVRDRIAPIType eAPI,
-+		      PVRDRIScreenImpl *psScreenImpl,
-+		      PVRDRIContextImpl *psContextImpl)
++PVRDRICreateFenceImpl(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                      PVRDRIContextImpl *psContextImpl)
 +{
-+	CallFuncLegacy(PVRDRICreateFenceImpl,
-+		       CreateFence,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl);
++   CallFunc(CreateFence, eAPI, psScreenImpl, psContextImpl);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +void *
-+PVRDRICreateFenceFdImpl(PVRDRIAPIType eAPI,
-+		      PVRDRIScreenImpl *psScreenImpl,
-+		      PVRDRIContextImpl *psContextImpl,
-+		      int iFd)
++PVRDRICreateFenceFd(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                    PVRDRIContextImpl *psContextImpl, int iFd)
 +{
-+	CallFunc(CreateFenceFd, 2,
-+		 eAPI,
-+	         psScreenImpl,
-+		 psContextImpl,
-+		 iFd);
++   CallFunc(CreateFenceFd, eAPI, psScreenImpl, psContextImpl, iFd);
 +
-+	return NULL;
++   return NULL;
 +}
 +
-+unsigned PVRDRIGetFenceCapabilitiesImpl(PVRDRIScreenImpl *psScreenImpl)
++unsigned int
++PVRDRIGetFenceCapabilities(PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFunc(GetFenceCapabilities, 2,
-+		 psScreenImpl);
++   CallFunc(GetFenceCapabilities, psScreenImpl);
 +
-+	return 0;
++   return 0;
 +}
 +
-+int PVRDRIGetFenceFdImpl(void *psDRIFence)
++int
++PVRDRIGetFenceFd(void *pvFence)
 +{
-+	CallFunc(GetFenceFd, 2,
-+		 psDRIFence);
++   CallFunc(GetFenceFd, pvFence);
 +
-+	return -1;
++   return -1;
 +}
 +
 +void
-+PVRDRIDestroyFenceImpl(void *psDRIFence)
++PVRDRIDestroyFenceImpl(void *pvFence)
 +{
-+	CallFuncLegacy(PVRDRIDestroyFenceImpl,
-+		       DestroyFence,
-+		       psDRIFence);
++   CallFunc(DestroyFence, pvFence);
 +}
 +
 +bool
-+PVRDRIClientWaitSyncImpl(PVRDRIAPIType eAPI,
-+			 PVRDRIContextImpl *psContextImpl,
-+			 void *psDRIFence,
-+			 bool bFlushCommands,
-+			 bool bTimeout,
-+			 uint64_t uiTimeout)
++PVRDRIClientWaitSyncImpl(PVRDRIAPIType eAPI, PVRDRIContextImpl *psContextImpl,
++                         void *pvFence, bool bFlushCommands, bool bTimeout,
++                         uint64_t uiTimeout)
 +{
-+	CallFuncLegacy(PVRDRIClientWaitSyncImpl,
-+		       ClientWaitSync,
-+		       eAPI,
-+		       psContextImpl,
-+		       psDRIFence,
-+		       bFlushCommands,
-+		       bTimeout,
-+		       uiTimeout);
++   CallFunc(ClientWaitSync, eAPI, psContextImpl, pvFence, bFlushCommands,
++            bTimeout, uiTimeout);
 +
-+	return false;
++   return false;
 +}
 +
 +bool
-+PVRDRIServerWaitSyncImpl(PVRDRIAPIType eAPI,
-+			 PVRDRIContextImpl *psContextImpl,
-+			 void *psDRIFence)
++PVRDRIServerWaitSyncImpl(PVRDRIAPIType eAPI, PVRDRIContextImpl *psContextImpl,
++                         void *pvFence)
 +{
-+	CallFuncLegacy(PVRDRIServerWaitSyncImpl,
-+		       ServerWaitSync,
-+		       eAPI,
-+		       psContextImpl,
-+		       psDRIFence);
++   CallFunc(ServerWaitSync, eAPI, psContextImpl, pvFence);
 +
-+	return false;
++   return false;
 +}
 +
-+void
-+PVRDRIDestroyFencesImpl(PVRDRIScreenImpl *psScreenImpl)
-+{
-+	CallFuncLegacy(PVRDRIDestroyFencesImpl,
-+		       DestroyFences,
-+		       psScreenImpl);
-+}
-+
-+bool
-+PVRDRIEGLDrawableConfigFromGLMode(PVRDRIDrawableImpl *psPVRDrawable,
-+				  PVRDRIConfigInfo *psConfigInfo,
-+				  int supportedAPIs,
-+				  IMG_PIXFMT ePixFmt)
-+{
-+	CallFuncLegacy(PVRDRIEGLDrawableConfigFromGLMode,
-+		       EGLDrawableConfigFromGLMode,
-+		       psPVRDrawable,
-+		       psConfigInfo,
-+		       supportedAPIs,
-+		       ePixFmt);
-+
-+	return false;
-+}
-+
-+DefineFunc_IsSupportedLegacy(PVRDRIBlitEGLImage, BlitEGLImage)
-+
 +bool
 +PVRDRIBlitEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+		   PVRDRIContextImpl *psContextImpl,
-+		   IMGEGLImage *psDstImage,
-+		   PVRDRIBufferImpl *psDstBuffer,
-+		   IMGEGLImage *psSrcImage,
-+		   PVRDRIBufferImpl *psSrcBuffer,
-+		   int iDstX, int iDstY,
-+		   int iDstWidth, int iDstHeight,
-+		   int iSrcX, int iSrcY,
-+		   int iSrcWidth, int iSrcHeight,
-+		   int iFlushFlag)
++                   PVRDRIContextImpl *psContextImpl,
++                   IMGEGLImage *psDstImage, PVRDRIBufferImpl *psDstBuffer,
++                   IMGEGLImage *psSrcImage, PVRDRIBufferImpl *psSrcBuffer,
++                   int iDstX, int iDstY, int iDstWidth, int iDstHeight,
++                   int iSrcX, int iSrcY, int iSrcWidth, int iSrcHeight,
++                   int iFlushFlag)
 +{
-+	CallFuncLegacy(PVRDRIBlitEGLImage,
-+		       BlitEGLImage,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psDstImage, psDstBuffer,
-+		       psSrcImage, psSrcBuffer,
-+		       iDstX, iDstY,
-+		       iDstWidth, iDstHeight,
-+		       iSrcX, iSrcY,
-+		       iSrcWidth, iSrcHeight,
-+		       iFlushFlag);
++   CallFunc(BlitEGLImage, psScreenImpl, psContextImpl,
++            psDstImage, psDstBuffer,
++            psSrcImage, psSrcBuffer,
++            iDstX, iDstY, iDstWidth, iDstHeight,
++            iSrcX, iSrcY, iSrcWidth, iSrcHeight,
++            iFlushFlag);
 +
-+	return false;
++   return false;
 +}
 +
-+DefineFunc_IsSupportedLegacy(PVRDRIMapEGLImage, MapEGLImage)
-+
 +void *
 +PVRDRIMapEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+		  PVRDRIContextImpl *psContextImpl,
-+		  IMGEGLImage *psImage,
-+		  PVRDRIBufferImpl *psBuffer,
-+		  int iX, int iY, int iWidth, int iHeight,
-+		  unsigned uiFlags, int *iStride, void **ppvData)
++                  PVRDRIContextImpl *psContextImpl,
++                  IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
++                  int iX, int iY, int iWidth, int iHeight,
++                  unsigned int uiFlags, int *piStride, void **ppvData)
 +{
-+	CallFuncLegacy(PVRDRIMapEGLImage,
-+		       MapEGLImage,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psImage, psBuffer,
-+		       iX, iY, iWidth, iHeight,
-+		       uiFlags, iStride, ppvData);
++   CallFunc(MapEGLImage, psScreenImpl, psContextImpl, psImage, psBuffer,
++            iX, iY, iWidth, iHeight, uiFlags, piStride, ppvData);
 +
-+	return false;
++   return NULL;
 +}
 +
 +bool
 +PVRDRIUnmapEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+		    PVRDRIContextImpl *psContextImpl,
-+		    IMGEGLImage *psImage,
-+		    PVRDRIBufferImpl *psBuffer,
-+		    void *pvData)
++                    PVRDRIContextImpl *psContextImpl,
++                    IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
++                    void *pvData)
 +{
-+	CallFuncLegacy(PVRDRIUnmapEGLImage,
-+		       UnmapEGLImage,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psImage, psBuffer,
-+		       pvData);
++   CallFunc(UnmapEGLImage, psScreenImpl, psContextImpl, psImage, psBuffer,
++            pvData);
 +
-+	return false;
++   return false;
 +}
 +
 +bool
-+PVRDRIMesaFormatSupported(unsigned fmt)
++PVRDRIMesaFormatSupported(unsigned int iFormat)
 +{
-+	CallFuncLegacy(PVRDRIMesaFormatSupported,
-+		       MesaFormatSupported,
-+		       fmt);
++   CallFunc(MesaFormatSupported, iFormat);
 +
-+	return false;
++   return false;
 +}
 +
-+unsigned
++unsigned int
 +PVRDRIDepthStencilBitArraySize(void)
 +{
-+	CallFuncLegacy(PVRDRIDepthStencilBitArraySize,
-+		       DepthStencilBitArraySize);
++   CallFunc(DepthStencilBitArraySize);
 +
-+	return 0;
++   return 0;
 +}
 +
 +const uint8_t *
 +PVRDRIDepthBitsArray(void)
 +{
-+	CallFuncLegacy(PVRDRIDepthBitsArray,
-+		       DepthBitsArray);
++   CallFunc(DepthBitsArray);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +const uint8_t *
 +PVRDRIStencilBitsArray(void)
 +{
-+	CallFuncLegacy(PVRDRIStencilBitsArray,
-+		       StencilBitsArray);
++   CallFunc(StencilBitsArray);
 +
-+	return NULL;
++   return NULL;
 +}
 +
-+unsigned
++unsigned int
 +PVRDRIMSAABitArraySize(void)
 +{
-+	CallFuncLegacy(PVRDRIMSAABitArraySize,
-+		       MSAABitArraySize);
++   CallFunc(MSAABitArraySize);
 +
-+	return 0;
++   return 0;
 +}
 +
 +const uint8_t *
 +PVRDRIMSAABitsArray(void)
 +{
-+	CallFuncLegacy(PVRDRIMSAABitsArray,
-+		       MSAABitsArray);
++   CallFunc(MSAABitsArray);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +uint32_t
 +PVRDRIMaxPBufferWidth(void)
 +{
-+	CallFuncLegacy(PVRDRIMaxPBufferWidth,
-+		       MaxPBufferWidth);
++   CallFunc(MaxPBufferWidth);
 +
-+	return 0;
++   return 0;
 +}
 +
 +uint32_t
 +PVRDRIMaxPBufferHeight(void)
 +{
-+	CallFuncLegacy(PVRDRIMaxPBufferHeight,
-+		       MaxPBufferHeight);
++   CallFunc(MaxPBufferHeight);
 +
-+	return 0;
++   return 0;
 +}
 +
 +
-+unsigned
++unsigned int
 +PVRDRIGetNumAPIFuncs(PVRDRIAPIType eAPI)
 +{
-+	CallFuncLegacy(PVRDRIGetNumAPIFuncs,
-+		       GetNumAPIFuncs,
-+		       eAPI);
++   CallFunc(GetNumAPIFuncs, eAPI);
 +
-+	return 0;
++   return 0;
 +}
 +
 +const char *
-+PVRDRIGetAPIFunc(PVRDRIAPIType eAPI, unsigned index)
++PVRDRIGetAPIFunc(PVRDRIAPIType eAPI, unsigned int index)
 +{
-+	CallFuncLegacy(PVRDRIGetAPIFunc,
-+		       GetAPIFunc,
-+		       eAPI,
-+		       index);
++   CallFunc(GetAPIFunc, eAPI, index);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +int
 +PVRDRIQuerySupportedFormats(PVRDRIScreenImpl *psScreenImpl,
-+			    unsigned uNumFormats,
-+			    const int *iFormats,
-+			    const IMG_PIXFMT *peImgFormats,
-+			    bool *bSupported)
++                            unsigned int uNumFormats, const int *piFormats,
++                            const IMG_PIXFMT *peImgFormats, bool *bSupported)
 +{
-+	CallFuncLegacy(PVRDRIQuerySupportedFormats,
-+		       QuerySupportedFormats,
-+		       psScreenImpl,
-+		       uNumFormats,
-+		       iFormats,
-+		       peImgFormats,
-+		       bSupported);
++   CallFunc(QuerySupportedFormats, psScreenImpl, uNumFormats, piFormats,
++            peImgFormats, bSupported);
 +
-+	return -1;
++   return -1;
 +}
 +
 +int
 +PVRDRIQueryModifiers(PVRDRIScreenImpl *psScreenImpl,
-+		     int iFormat,
-+		     IMG_PIXFMT eImgFormat,
-+		     uint64_t *puModifiers,
-+		     unsigned *puExternalOnly)
++                     int iFormat, IMG_PIXFMT eImgFormat,
++                     uint64_t *puModifiers, unsigned int *puExternalOnly)
 +{
-+	CallFuncLegacy(PVRDRIQueryModifiers,
-+		       QueryModifiers,
-+		       psScreenImpl,
-+		       iFormat,
-+		       eImgFormat,
-+		       puModifiers,
-+		       puExternalOnly);
++   CallFunc(QueryModifiers, psScreenImpl, iFormat, eImgFormat, puModifiers,
++            puExternalOnly);
 +
-+	return -1;
++   return -1;
 +}
-diff --git a/src/mesa/drivers/dri/pvr/pvrdrawable.c b/src/mesa/drivers/dri/pvr/pvrdrawable.c
+diff --git a/src/mesa/drivers/dri/pvr/pvrdrawable_mod.c b/src/mesa/drivers/dri/pvr/pvrdrawable_mod.c
 new file mode 100644
-index 00000000000..a725645f7b6
+index 00000000000..e8bf8f8efda
 --- /dev/null
-+++ b/src/mesa/drivers/dri/pvr/pvrdrawable.c
-@@ -0,0 +1,542 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
++++ b/src/mesa/drivers/dri/pvr/pvrdrawable_mod.c
+@@ -0,0 +1,384 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -3263,527 +4152,369 @@
 +#include <assert.h>
 +
 +#include "util/u_atomic.h"
++#include "pvrdri_mod.h"
 +
-+#include "dri_util.h"
-+
-+#include "pvrdri.h"
-+#include "pvrimage.h"
-+
-+static inline void PVRDRIMarkRenderSurfaceAsInvalid(PVRDRIDrawable *psPVRDrawable)
++static inline void
++PVRDRIMarkRenderSurfaceAsInvalid(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	PVRDRIContext *psPVRContext = psPVRDrawable->psPVRContext;
++   struct DRISUPContext *psPVRContext = psPVRDrawable->psPVRContext;
 +
-+	if (psPVRContext)
-+	{
++   if (psPVRContext) {
++      struct DRISUPScreen *psPVRScreen = psPVRContext->psPVRScreen;
 +
-+		PVRDRIEGLMarkRendersurfaceInvalid(psPVRContext->eAPI,
-+						  psPVRContext->psPVRScreen->psImpl,
-+						  psPVRContext->psImpl);
-+	}
++      PVRDRIEGLMarkRendersurfaceInvalid(psPVRContext->eAPI,
++                                        psPVRScreen->psImpl,
++                                        psPVRContext->psImpl);
++   }
 +}
 +
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + PVR drawable local functions (image driver loader)
-+*/ /**************************************************************************/
++ *//**************************************************************************/
 +
-+static inline void PVRDrawableImageDestroy(PVRDRIDrawable *psPVRDrawable)
++static inline void
++PVRDrawableImageDestroy(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (psPVRDrawable->psImage)
-+	{
-+		PVRDRIUnrefImage(psPVRDrawable->psImage);
-+		psPVRDrawable->psImage = NULL;
-+	}
++   if (psPVRDrawable->psImage) {
++      PVRDRIUnrefImage(psPVRDrawable->psImage);
++      psPVRDrawable->psImage = NULL;
++   }
 +}
 +
-+static inline void PVRDrawableImageAccumDestroy(PVRDRIDrawable *psPVRDrawable)
++static inline void
++PVRDrawableImageAccumDestroy(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (psPVRDrawable->psImageAccum)
-+	{
-+		PVRDRIUnrefImage(psPVRDrawable->psImageAccum);
-+		psPVRDrawable->psImageAccum = NULL;
-+	}
++   if (psPVRDrawable->psImageAccum) {
++      PVRDRIUnrefImage(psPVRDrawable->psImageAccum);
++      psPVRDrawable->psImageAccum = NULL;
++   }
 +}
 +
-+static void PVRDrawableImageUpdate(PVRDRIDrawable *psPVRDrawable)
++static void
++PVRDrawableImageUpdate(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (psPVRDrawable->psImage != psPVRDrawable->psDRI)
-+	{
-+		assert(PVRDRIImageGetSharedBuffer(psPVRDrawable->psDRI) != NULL);
++   if (psPVRDrawable->psImage != psPVRDrawable->psDRI) {
++      assert(PVRDRIImageGetSharedBuffer(psPVRDrawable->psDRI) != NULL);
 +
-+		PVRDrawableImageDestroy(psPVRDrawable);
++      PVRDrawableImageDestroy(psPVRDrawable);
 +
-+		PVRDRIRefImage(psPVRDrawable->psDRI);
-+		psPVRDrawable->psImage = psPVRDrawable->psDRI;
-+	}
++      PVRDRIRefImage(psPVRDrawable->psDRI);
++      psPVRDrawable->psImage = psPVRDrawable->psDRI;
++   }
 +
-+	if (psPVRDrawable->psImageAccum != psPVRDrawable->psDRIAccum)
-+	{
-+		PVRDrawableImageAccumDestroy(psPVRDrawable);
++   if (psPVRDrawable->psImageAccum != psPVRDrawable->psDRIAccum) {
++      PVRDrawableImageAccumDestroy(psPVRDrawable);
 +
-+		if (psPVRDrawable->psDRIAccum)
-+		{
-+			PVRDRIRefImage(psPVRDrawable->psDRIAccum);
-+			psPVRDrawable->psImageAccum = psPVRDrawable->psDRIAccum;
-+		}
-+	}
++      if (psPVRDrawable->psDRIAccum) {
++         PVRDRIRefImage(psPVRDrawable->psDRIAccum);
++         psPVRDrawable->psImageAccum = psPVRDrawable->psDRIAccum;
++      }
++   }
 +}
 +
-+/*************************************************************************/ /*!
-+ Function Name		: PVRImageDrawableGetNativeInfo
-+ Inputs			: psPVRDrawable
-+ Returns		: Boolean
-+ Description		: Update native drawable information.
-+*/ /**************************************************************************/
-+static bool PVRImageDrawableGetNativeInfo(PVRDRIDrawable *psPVRDrawable)
++/*************************************************************************//*!
++Function Name            : PVRImageDrawableGetNativeInfo
++Inputs                   : psPVRDrawable
++Returns                  : Boolean
++Description              : Update native drawable information.
++ *//**************************************************************************/
++static bool
++PVRImageDrawableGetNativeInfo(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	__DRIdrawable *psDRIDrawable = psPVRDrawable->psDRIDrawable;
-+	__DRIscreen *psDRIScreen = psPVRDrawable->psPVRScreen->psDRIScreen;
-+	struct __DRIimageList sImages;
-+	uint32_t uiBufferMask;
-+	const PVRDRIImageFormat *psFormat;
++   struct PVRDRIImageList sImages;
++   uint32_t uBufferMask;
 +
-+	assert(psDRIScreen->image.loader != NULL);
-+	assert(psDRIScreen->image.loader->getBuffers);
++   if (psPVRDrawable->bDoubleBufferMode)
++      uBufferMask = PVRDRI_IMAGE_BUFFER_BACK;
++   else
++      uBufferMask = PVRDRI_IMAGE_BUFFER_FRONT;
 +
-+	psFormat = PVRDRIIMGPixelFormatToImageFormat(psPVRDrawable->psPVRScreen,
-+						     psPVRDrawable->ePixelFormat);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported format (format = %u)\n",
-+			     __func__, psPVRDrawable->ePixelFormat);
-+		return false;
-+	}
++   uBufferMask |= PVRDRI_IMAGE_BUFFER_PREV;
 +
-+	if (psPVRDrawable->sConfig.sGLMode.doubleBufferMode)
-+	{
-+		uiBufferMask = __DRI_IMAGE_BUFFER_BACK;
-+	}
-+	else
-+	{
-+		uiBufferMask = __DRI_IMAGE_BUFFER_FRONT;
-+	}
++   if (!MODSUPGetBuffers(psPVRDrawable->psDRIDrawable,
++                         psPVRDrawable->psFormat->iDRIFourCC,
++                         NULL, psPVRDrawable->pvLoaderPrivate,
++                         uBufferMask, &sImages)) {
++      errorMessage("%s: Image get buffers call failed", __func__);
++      return false;
++   }
 +
-+#if defined(DRI_IMAGE_HAS_BUFFER_PREV)
-+	uiBufferMask |= __DRI_IMAGE_BUFFER_PREV;
-+#endif
++   psPVRDrawable->psDRI =
++      (sImages.uImageMask & PVRDRI_IMAGE_BUFFER_BACK) ?
++      sImages.psBack : sImages.psFront;
 +
-+	if (!psDRIScreen->image.loader->getBuffers(psDRIDrawable,
-+						   psFormat->iDRIFormat,
-+						   NULL,
-+						   psDRIDrawable->loaderPrivate,
-+						   uiBufferMask,
-+						   &sImages))
-+	{
-+		errorMessage("%s: Image get buffers call failed\n", __func__);
-+		return false;
-+	}
++   if (sImages.uImageMask & PVRDRI_IMAGE_BUFFER_PREV)
++      psPVRDrawable->psDRIAccum = sImages.psPrev;
++   else
++      psPVRDrawable->psDRIAccum = NULL;
 +
-+	psPVRDrawable->psDRI =
-+		(sImages.image_mask & __DRI_IMAGE_BUFFER_BACK) ?
-+			sImages.back : sImages.front;
-+
-+#if defined(DRI_IMAGE_HAS_BUFFER_PREV)
-+	if (sImages.image_mask & __DRI_IMAGE_BUFFER_PREV)
-+	{
-+		psPVRDrawable->psDRIAccum = sImages.prev;
-+	}
-+	else
-+#endif
-+	{
-+		psPVRDrawable->psDRIAccum = NULL;
-+	}
-+
-+	return true;
++   return true;
 +}
 +
-+/*************************************************************************/ /*!
-+ Function Name		: PVRImageDrawableCreate
-+ Inputs			: psPVRDrawable
-+ Returns		: Boolean
-+ Description		: Create drawable
-+*/ /**************************************************************************/
-+static bool PVRImageDrawableCreate(PVRDRIDrawable *psPVRDrawable)
++/*************************************************************************//*!
++Function Name            : PVRImageDrawableCreate
++Inputs                   : psPVRDrawable
++Returns                  : Boolean
++Description              : Create drawable
++ *//**************************************************************************/
++static bool
++PVRImageDrawableCreate(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	__DRIdrawable *psDRIDrawable = psPVRDrawable->psDRIDrawable;
-+	uint32_t uBytesPerPixel;
-+	PVRDRIBufferAttribs sBufferAttribs;
++   uint32_t uBytesPerPixel;
++   PVRDRIBufferAttribs sBufferAttribs;
 +
-+	if (!PVRImageDrawableGetNativeInfo(psPVRDrawable))
-+	{
-+		return false;
-+	}
++   if (!PVRImageDrawableGetNativeInfo(psPVRDrawable))
++      return false;
 +
-+	PVRDRIEGLImageGetAttribs(
-+		PVRDRIImageGetEGLImage(psPVRDrawable->psDRI),
-+					&sBufferAttribs);
-+	uBytesPerPixel = PVRDRIPixFmtGetBlockSize(sBufferAttribs.ePixFormat);
++   PVRDRIEGLImageGetAttribs(PVRDRIImageGetEGLImage(psPVRDrawable->psDRI),
++                            &sBufferAttribs);
++   uBytesPerPixel = PVRDRIPixFmtGetBlockSize(sBufferAttribs.ePixFormat);
 +
-+	psDRIDrawable->w = sBufferAttribs.uiWidth;
-+	psDRIDrawable->h = sBufferAttribs.uiHeight;
-+	psPVRDrawable->uStride = sBufferAttribs.uiStrideInBytes;
-+	psPVRDrawable->uBytesPerPixel = uBytesPerPixel;
++   psPVRDrawable->uWidth = sBufferAttribs.uiWidth;
++   psPVRDrawable->uHeight = sBufferAttribs.uiHeight;
++   psPVRDrawable->uStride = sBufferAttribs.uiStrideInBytes;
++   psPVRDrawable->uBytesPerPixel = uBytesPerPixel;
 +
-+	PVRDrawableImageUpdate(psPVRDrawable);
++   PVRDrawableImageUpdate(psPVRDrawable);
 +
-+	if (!PVREGLDrawableCreate(psPVRDrawable->psPVRScreen->psImpl,
-+				  psPVRDrawable->psImpl))
-+	{
-+		errorMessage("%s: Couldn't create EGL drawable\n", __func__);
-+		return false;
-+	}
++   if (!PVREGLDrawableCreate(psPVRDrawable->psPVRScreen->psImpl,
++                             psPVRDrawable->psImpl)) {
++      errorMessage("%s: Couldn't create EGL drawable", __func__);
++      return false;
++   }
 +
-+	return true;
++   return true;
 +}
 +
-+/*************************************************************************/ /*!
-+ Function Name		: PVRImageDrawableUpdate
-+ Inputs			: psPVRDrawable
-+ Returns		: Boolean
-+ Description		: Update drawable
-+*/ /**************************************************************************/
-+static bool PVRImageDrawableUpdate(PVRDRIDrawable *psPVRDrawable,
-+				   bool bAllowRecreate)
++/*************************************************************************//*!
++Function Name            : PVRImageDrawableUpdate
++Inputs                   : psPVRDrawable
++Returns                  : Boolean
++Description              : Update drawable
++ *//**************************************************************************/
++static bool
++PVRImageDrawableUpdate(struct DRISUPDrawable *psPVRDrawable,
++                       bool bAllowRecreate)
 +{
-+	__DRIdrawable *psDRIDrawable = psPVRDrawable->psDRIDrawable;
-+	uint32_t uBytesPerPixel;
-+	PVRDRIBufferAttribs sBufferAttribs;
-+	bool bRecreate;
++   uint32_t uBytesPerPixel;
++   PVRDRIBufferAttribs sBufferAttribs;
++   bool bRecreate;
 +
-+	PVRDRIEGLImageGetAttribs(
-+		PVRDRIImageGetEGLImage(psPVRDrawable->psDRI),
-+					&sBufferAttribs);
-+	uBytesPerPixel = PVRDRIPixFmtGetBlockSize(sBufferAttribs.ePixFormat);
++   PVRDRIEGLImageGetAttribs(PVRDRIImageGetEGLImage(psPVRDrawable->psDRI),
++                            &sBufferAttribs);
++   uBytesPerPixel = PVRDRIPixFmtGetBlockSize(sBufferAttribs.ePixFormat);
 +
-+	bRecreate = (!psPVRDrawable->sConfig.sGLMode.doubleBufferMode &&
-+			psPVRDrawable->psImage !=
-+				psPVRDrawable->psDRI) ||
-+			(psDRIDrawable->w != sBufferAttribs.uiWidth) ||
-+			(psDRIDrawable->h != sBufferAttribs.uiHeight) ||
-+			(psPVRDrawable->uStride !=
-+				sBufferAttribs.uiStrideInBytes) ||
-+			(psPVRDrawable->uBytesPerPixel != uBytesPerPixel);
++   bRecreate =
++      (!psPVRDrawable->bDoubleBufferMode &&
++       psPVRDrawable->psImage != psPVRDrawable->psDRI) ||
++      (psPVRDrawable->uWidth != sBufferAttribs.uiWidth) ||
++      (psPVRDrawable->uHeight != sBufferAttribs.uiHeight) ||
++      (psPVRDrawable->uStride != sBufferAttribs.uiStrideInBytes) ||
++      (psPVRDrawable->uBytesPerPixel != uBytesPerPixel);
 +
-+	if (bRecreate)
-+	{
-+		if (bAllowRecreate)
-+		{
-+			PVRDRIMarkRenderSurfaceAsInvalid(psPVRDrawable);
++   if (bRecreate) {
++      if (bAllowRecreate) {
++         PVRDRIMarkRenderSurfaceAsInvalid(psPVRDrawable);
 +
-+			psDRIDrawable->w = sBufferAttribs.uiWidth;
-+			psDRIDrawable->h = sBufferAttribs.uiHeight;
-+			psPVRDrawable->uStride = sBufferAttribs.uiStrideInBytes;
-+			psPVRDrawable->uBytesPerPixel = uBytesPerPixel;
-+		}
-+		else
-+		{
-+			return false;
-+		}
-+	}
++         psPVRDrawable->uWidth = sBufferAttribs.uiWidth;
++         psPVRDrawable->uHeight = sBufferAttribs.uiHeight;
++         psPVRDrawable->uStride = sBufferAttribs.uiStrideInBytes;
++         psPVRDrawable->uBytesPerPixel = uBytesPerPixel;
++      } else {
++         return false;
++      }
++   }
 +
-+	PVRDrawableImageUpdate(psPVRDrawable);
++   PVRDrawableImageUpdate(psPVRDrawable);
 +
-+	if (bRecreate)
-+	{
-+		if (!PVREGLDrawableRecreate(psPVRDrawable->psPVRScreen->psImpl,
-+		                            psPVRDrawable->psImpl))
-+		{
-+			errorMessage("%s: Couldn't recreate EGL drawable\n",
-+				     __func__);
-+			return false;
-+		}
-+	}
++   if (bRecreate) {
++      if (!PVREGLDrawableRecreate(psPVRDrawable->psPVRScreen->psImpl,
++                                  psPVRDrawable->psImpl)) {
++         errorMessage("%s: Couldn't recreate EGL drawable", __func__);
++         return false;
++      }
++   }
 +
-+	return true;
++   return true;
 +}
 +
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + PVR drawable local functions
-+*/ /**************************************************************************/
++ *//**************************************************************************/
 +
-+/*************************************************************************/ /*!
-+ Function Name	: PVRDRIDrawableUpdate
-+ Inputs		: psPVRDrawable
-+ Description	: Update drawable
-+*/ /**************************************************************************/
-+static bool PVRDRIDrawableUpdate(PVRDRIDrawable *psPVRDrawable,
-+				 bool bAllowRecreate)
++/*************************************************************************//*!
++Function Name    : PVRDRIDrawableUpdate
++Inputs           : psPVRDrawable
++Description      : Update drawable
++ *//**************************************************************************/
++static bool
++PVRDRIDrawableUpdate(struct DRISUPDrawable *psPVRDrawable, bool bAllowRecreate)
 +{
-+	bool bRes;
-+	int iInfoInvalid = 0;
++   bool bRes;
++   int iInfoInvalid = 0;
 +
-+	/*
-+	 * The test for bDrawableUpdating is needed because drawable
-+	 * parameters are fetched (via KEGLGetDrawableParameters) when
-+	 * a drawable is recreated.
-+	 * The test for bFlushInProgress is to prevent the drawable
-+	 * information being updated during a flush, which could result
-+	 * in a call back into the Mesa platform code during the
-+	 * processing for a buffer swap, which could corrupt the platform
-+	 * state.
-+	 */
-+	if (psPVRDrawable->bDrawableUpdating ||
-+	    psPVRDrawable->bFlushInProgress)
-+	{
-+		return false;
-+	}
-+	psPVRDrawable->bDrawableUpdating = true;
++   /*
++    * The test for bDrawableUpdating is needed because drawable parameters are
++    * fetched (via KEGLGetDrawableParameters) when a drawable is recreated.
++    * The test for bFlushInProgress is to prevent the drawable information
++    * being updated during a flush, which could result in a call back into the
++    * Mesa platform code during the processing for a buffer swap, which could
++    * corrupt the platform state.
++    */
++   if (psPVRDrawable->bDrawableUpdating || psPVRDrawable->bFlushInProgress)
++      return false;
 +
-+	if (psPVRDrawable->psPVRScreen->bUseInvalidate)
-+	{
-+		iInfoInvalid = p_atomic_read(&psPVRDrawable->iInfoInvalid);
-+		bRes = !iInfoInvalid;
-+		if (bRes)
-+		{
-+			goto ExitNotUpdating;
-+		}
-+	}
++   psPVRDrawable->bDrawableUpdating = true;
 +
-+	bRes = PVRImageDrawableGetNativeInfo(psPVRDrawable);
-+	if (!bRes)
-+	{
-+		goto ExitNotUpdating;
-+	}
++   if (psPVRDrawable->psPVRScreen->bUseInvalidate) {
++      iInfoInvalid = p_atomic_read(&psPVRDrawable->iInfoInvalid);
++      bRes = !iInfoInvalid;
++      if (bRes)
++         goto ExitNotUpdating;
++   }
 +
-+	bRes = PVRImageDrawableUpdate(psPVRDrawable, bAllowRecreate);
-+	if (bRes && iInfoInvalid)
-+	{
-+		p_atomic_add(&psPVRDrawable->iInfoInvalid, -iInfoInvalid);
-+	}
++   bRes = PVRImageDrawableGetNativeInfo(psPVRDrawable);
++   if (!bRes)
++      goto ExitNotUpdating;
++
++   bRes = PVRImageDrawableUpdate(psPVRDrawable, bAllowRecreate);
++   if (bRes && iInfoInvalid)
++      p_atomic_add(&psPVRDrawable->iInfoInvalid, -iInfoInvalid);
 +
 +ExitNotUpdating:
-+	psPVRDrawable->bDrawableUpdating = false;
-+	return bRes;
++   psPVRDrawable->bDrawableUpdating = false;
++   return bRes;
 +}
 +
-+/*************************************************************************/ /*!
-+ Function Name	: PVRDRIDrawableRecreateV0
-+ Inputs		: psPVRDrawable
-+ Description	: Recreate drawable
-+*/ /**************************************************************************/
-+bool PVRDRIDrawableRecreateV0(PVRDRIDrawable *psPVRDrawable)
-+{
-+	return PVRDRIDrawableUpdate(psPVRDrawable, true);
-+}
-+
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + PVR drawable interface
-+*/ /**************************************************************************/
-+bool PVRDRIDrawableInit(PVRDRIDrawable *psPVRDrawable)
++ *//**************************************************************************/
++bool
++PVRDRIDrawableInit(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (psPVRDrawable->bInitialised)
-+	{
-+		return true;
-+	}
++   if (psPVRDrawable->bInitialised)
++      return true;
 +
-+	if (!PVRImageDrawableCreate(psPVRDrawable))
-+	{
-+		return false;
-+	}
++   if (!PVRImageDrawableCreate(psPVRDrawable))
++      return false;
 +
-+	psPVRDrawable->bInitialised = true;
++   psPVRDrawable->bInitialised = true;
 +
-+	return true;
++   return true;
 +}
 +
-+void PVRDRIDrawableDeinit(PVRDRIDrawable *psPVRDrawable)
++void
++PVRDRIDrawableDeinit(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	(void) PVREGLDrawableDestroy(psPVRDrawable->psPVRScreen->psImpl,
-+	                             psPVRDrawable->psImpl);
++   (void) PVREGLDrawableDestroy(psPVRDrawable->psPVRScreen->psImpl,
++                                psPVRDrawable->psImpl);
 +
-+	PVRDrawableImageDestroy(psPVRDrawable);
-+	PVRDrawableImageAccumDestroy(psPVRDrawable);
++   PVRDrawableImageDestroy(psPVRDrawable);
++   PVRDrawableImageAccumDestroy(psPVRDrawable);
 +
-+	psPVRDrawable->bInitialised = false;
++   psPVRDrawable->bInitialised = false;
 +}
 +
-+static bool PVRDRIDrawableGetParameters(PVRDRIDrawable *psPVRDrawable,
-+					PVRDRIBufferImpl **ppsDstBuffer,
-+					PVRDRIBufferImpl **ppsAccumBuffer)
++static bool
++PVRDRIDrawableGetParameters(struct DRISUPDrawable *psPVRDrawable,
++                            PVRDRIBufferImpl **ppsDstBuffer,
++                            PVRDRIBufferImpl **ppsAccumBuffer)
 +{
-+	if (ppsDstBuffer || ppsAccumBuffer)
-+	{
-+		PVRDRIBufferImpl *psDstBuffer;
-+		PVRDRIBufferImpl *psAccumBuffer;
++   if (ppsDstBuffer || ppsAccumBuffer) {
++      __DRIimage *psDstImage = psPVRDrawable->psImage;
++      __DRIimage *psAccumImage = psPVRDrawable->psImageAccum;
++      PVRDRIBufferImpl *psDstBuffer, *psAccumBuffer;
 +
-+		psDstBuffer = PVRDRIImageGetSharedBuffer(psPVRDrawable->psImage);
-+		if (!psDstBuffer)
-+		{
-+			errorMessage("%s: Couldn't get backing buffer\n",
-+				     __func__);
-+			return false;
-+		}
++      psDstBuffer = PVRDRIImageGetSharedBuffer(psDstImage);
++      if (!psDstBuffer) {
++         errorMessage("%s: Couldn't get backing buffer", __func__);
++         return false;
++      }
 +
-+		if (psPVRDrawable->psImageAccum)
-+		{
-+			psAccumBuffer =
-+				PVRDRIImageGetSharedBuffer(psPVRDrawable->psImageAccum);
-+			if (!psAccumBuffer)
-+			{
-+				psAccumBuffer = psDstBuffer;
-+			}
-+		}
-+		else
-+		{
-+			psAccumBuffer = psDstBuffer;
-+		}
++      if (psAccumImage) {
++         psAccumBuffer = PVRDRIImageGetSharedBuffer(psAccumImage);
++         if (!psAccumBuffer)
++            psAccumBuffer = psDstBuffer;
++      } else {
++         psAccumBuffer = psDstBuffer;
++      }
 +
-+		if (ppsDstBuffer)
-+		{
-+			*ppsDstBuffer = psDstBuffer;
-+		}
++      if (ppsDstBuffer)
++         *ppsDstBuffer = psDstBuffer;
 +
-+		if (ppsAccumBuffer)
-+		{
-+			*ppsAccumBuffer = psAccumBuffer;
-+		}
-+	}
++      if (ppsAccumBuffer)
++         *ppsAccumBuffer = psAccumBuffer;
++   }
 +
-+	return true;
++   return true;
 +}
 +
-+bool PVRDRIDrawableGetParametersV0(PVRDRIDrawable *psPVRDrawable,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer,
-+				   PVRDRIBufferAttribs *psAttribs,
-+				   bool *pbDoubleBuffered)
++bool
++PVRDRIDrawableQuery(const PVRDRIDrawable *psPVRDRIDrawable,
++                    PVRDRIBufferAttrib eBufferAttrib, uint32_t *uiValueOut)
 +{
-+	/*
-+	 * Some drawable updates may be required, which stop short of
-+	 * recreating the drawable.
-+	 */
-+	(void) PVRDRIDrawableUpdate(psPVRDrawable, false);
++   const struct DRISUPDrawable *psPVRDrawable;
 +
-+	if (!PVRDRIDrawableGetParameters(psPVRDrawable,
-+					 ppsDstBuffer,
-+					 ppsAccumBuffer))
-+	{
-+		return false;
-+	}
++   if (!psPVRDRIDrawable || !uiValueOut)
++      return false;
 +
-+	if (psAttribs)
-+	{
-+		psAttribs->uiWidth           = psPVRDrawable->psDRIDrawable->w;
-+		psAttribs->uiHeight          = psPVRDrawable->psDRIDrawable->h;
-+		psAttribs->ePixFormat        = psPVRDrawable->ePixelFormat;
-+		psAttribs->uiStrideInBytes   = psPVRDrawable->uStride;
-+	}
++   psPVRDrawable = (const struct DRISUPDrawable *) psPVRDRIDrawable;
 +
-+	if (pbDoubleBuffered)
-+	{
-+		*pbDoubleBuffered =
-+			psPVRDrawable->sConfig.sGLMode.doubleBufferMode;
-+	}
-+
-+	return true;
++   switch (eBufferAttrib) {
++   case PVRDRI_BUFFER_ATTRIB_TYPE:
++      *uiValueOut = (uint32_t) psPVRDrawable->eType;
++      return true;
++   case PVRDRI_BUFFER_ATTRIB_WIDTH:
++      *uiValueOut = (uint32_t) psPVRDrawable->uWidth;
++      return true;
++   case PVRDRI_BUFFER_ATTRIB_HEIGHT:
++      *uiValueOut = (uint32_t) psPVRDrawable->uHeight;
++      return true;
++   case PVRDRI_BUFFER_ATTRIB_STRIDE:
++      *uiValueOut = (uint32_t) psPVRDrawable->uStride;
++      return true;
++   case PVRDRI_BUFFER_ATTRIB_PIXEL_FORMAT:
++      *uiValueOut = (uint32_t) psPVRDrawable->psFormat->eIMGPixelFormat;
++      assert(sizeof(IMG_PIXFMT) <= sizeof(*uiValueOut));
++      return true;
++   case PVRDRI_BUFFER_ATTRIB_INVALID:
++      errorMessage("%s: Invalid attribute", __func__);
++      assert(0);
++      return false;
++   default:
++      return false;
++   }
 +}
 +
-+bool PVRDRIDrawableGetParametersV1(PVRDRIDrawable *psPVRDrawable,
-+				   bool bAllowRecreate,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer,
-+				   PVRDRIBufferAttribs *psAttribs,
-+				   bool *pbDoubleBuffered)
++bool
++PVRDRIDrawableGetParametersV2(PVRDRIDrawable *psPVRDRIDrawable,
++                              uint32_t uiFlags,
++                              PVRDRIBufferImpl **ppsDstBuffer,
++                              PVRDRIBufferImpl **ppsAccumBuffer)
 +{
-+	if (!PVRDRIDrawableUpdate(psPVRDrawable, bAllowRecreate))
-+	{
-+		if (bAllowRecreate)
-+		{
-+			return false;
-+		}
-+	}
++   const bool bNoUpdate = uiFlags & PVRDRI_GETPARAMS_FLAG_NO_UPDATE;
++   struct DRISUPDrawable *psPVRDrawable;
 +
-+	if (!PVRDRIDrawableGetParameters(psPVRDrawable,
-+					 ppsDstBuffer,
-+					 ppsAccumBuffer))
-+	{
-+		return false;
-+	}
++   psPVRDrawable = (struct DRISUPDrawable *) psPVRDRIDrawable;
 +
-+	if (psAttribs)
-+	{
-+		psAttribs->uiWidth           = psPVRDrawable->psDRIDrawable->w;
-+		psAttribs->uiHeight          = psPVRDrawable->psDRIDrawable->h;
-+		psAttribs->ePixFormat        = psPVRDrawable->ePixelFormat;
-+		psAttribs->uiStrideInBytes   = psPVRDrawable->uStride;
-+	}
++   if (!bNoUpdate) {
++      const bool bAllowRecreate =
++         uiFlags & PVRDRI_GETPARAMS_FLAG_ALLOW_RECREATE;
 +
-+	if (pbDoubleBuffered)
-+	{
-+		*pbDoubleBuffered =
-+			psPVRDrawable->sConfig.sGLMode.doubleBufferMode;
-+	}
++      if (!PVRDRIDrawableUpdate(psPVRDrawable, bAllowRecreate))
++         if (bAllowRecreate)
++            return false;
++   }
 +
-+	return true;
-+}
-+
-+bool PVRDRIDrawableQuery(const PVRDRIDrawable *psPVRDrawable,
-+			 PVRDRIBufferAttrib eBufferAttrib,
-+			 uint32_t *uiValueOut)
-+{
-+	if (!psPVRDrawable || !uiValueOut)
-+	{
-+		return false;
-+	}
-+
-+	switch (eBufferAttrib)
-+	{
-+		case PVRDRI_BUFFER_ATTRIB_TYPE:
-+			*uiValueOut = (uint32_t) psPVRDrawable->eType;
-+			return true;
-+		case PVRDRI_BUFFER_ATTRIB_WIDTH:
-+			*uiValueOut = (uint32_t) psPVRDrawable->psDRIDrawable->w;
-+			return true;
-+		case PVRDRI_BUFFER_ATTRIB_HEIGHT:
-+			*uiValueOut = (uint32_t) psPVRDrawable->psDRIDrawable->h;
-+			return true;
-+		case PVRDRI_BUFFER_ATTRIB_STRIDE:
-+			*uiValueOut = (uint32_t) psPVRDrawable->uStride;
-+			return true;
-+		case PVRDRI_BUFFER_ATTRIB_PIXEL_FORMAT:
-+			STATIC_ASSERT(sizeof(psPVRDrawable->ePixelFormat) <= sizeof(*uiValueOut));
-+			*uiValueOut = (uint32_t) psPVRDrawable->ePixelFormat;
-+			return true;
-+		case PVRDRI_BUFFER_ATTRIB_INVALID:
-+			errorMessage("%s: Invalid attribute", __func__);
-+			assert(0);
-+			break;
-+	}
-+
-+	return false;
-+}
-+
-+bool PVRDRIDrawableGetParametersV2(PVRDRIDrawable *psPVRDrawable,
-+				   uint32_t uiFlags,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer)
-+{
-+	const bool bNoUpdate = uiFlags & PVRDRI_GETPARAMS_FLAG_NO_UPDATE;
-+
-+	if (!bNoUpdate)
-+	{
-+		const bool bAllowRecreate =
-+			uiFlags & PVRDRI_GETPARAMS_FLAG_ALLOW_RECREATE;
-+
-+		if (!PVRDRIDrawableUpdate(psPVRDrawable, bAllowRecreate))
-+		{
-+			if (bAllowRecreate)
-+			{
-+				return false;
-+			}
-+		}
-+	}
-+
-+	return PVRDRIDrawableGetParameters(psPVRDrawable,
-+					   ppsDstBuffer, ppsAccumBuffer);
++   return PVRDRIDrawableGetParameters(psPVRDrawable,
++                                      ppsDstBuffer, ppsAccumBuffer);
 +}
 diff --git a/src/mesa/drivers/dri/pvr/pvrdri.c b/src/mesa/drivers/dri/pvr/pvrdri.c
 new file mode 100644
-index 00000000000..b53ddc5c621
+index 00000000000..b529568cc9b
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/pvrdri.c
-@@ -0,0 +1,1018 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,583 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -3808,21 +4539,776 @@
 + * THE SOFTWARE.
 + */
 +
-+#include <assert.h>
-+#include <pthread.h>
 +#include <string.h>
-+#include <xf86drm.h>
-+
-+#include "EGL/egl.h"
-+#include "EGL/eglext.h"
++#include <assert.h>
 +
 +#include "util/u_atomic.h"
-+#include "dri_util.h"
++#include "utils.h"
 +
 +#include "pvrdri.h"
-+#include "pvrimage.h"
-+
 +#include "pvrmesa.h"
++#include "pvrdri_mod.h"
++
++#define PVR_IMAGE_LOADER_VER_MIN 1
++
++struct PVRBuffer {
++   __DRIbuffer sDRIBuffer;
++   struct DRISUPBuffer *psDRISUPBuffer;
++};
++
++/*************************************************************************//*!
++ Local functions
++ *//**************************************************************************/
++
++static bool
++PVRLoaderIsSupported(__DRIscreen *psDRIScreen)
++{
++   if (psDRIScreen->image.loader) {
++      if (psDRIScreen->image.loader->base.version < PVR_IMAGE_LOADER_VER_MIN) {
++         __driUtilMessage("%s: Image loader extension version %d but need %d",
++                          __func__, psDRIScreen->image.loader->base.version,
++                          PVR_IMAGE_LOADER_VER_MIN);
++         return false;
++      } else if (!psDRIScreen->image.loader->getBuffers) {
++         __driUtilMessage("%s: Image loader extension missing support for getBuffers",
++                          __func__);
++         return false;
++      }
++   } else {
++      __driUtilMessage("%s: Image loader extension required", __func__);
++      return false;
++   }
++
++   return true;
++}
++
++static inline struct DRISUPContext *
++getSharedContextImpl(void *pvSharedContextPrivate)
++{
++   if (pvSharedContextPrivate == NULL)
++      return NULL;
++
++   return ((PVRDRIContext *) pvSharedContextPrivate)->psDRISUPContext;
++}
++
++static void
++PVRDRIScreenAddReference(PVRDRIScreen *psPVRScreen)
++{
++   int iRefCount = p_atomic_inc_return(&psPVRScreen->iRefCount);
++
++   (void) iRefCount;
++   assert(iRefCount > 1);
++}
++
++static void
++PVRDRIScreenRemoveReference(PVRDRIScreen *psPVRScreen)
++{
++   int iRefCount = p_atomic_dec_return(&psPVRScreen->iRefCount);
++
++   assert(iRefCount >= 0);
++
++   if (iRefCount != 0)
++      return;
++
++   pvrdri_free_dispatch_tables(psPVRScreen);
++   DRISUPDestroyScreen(psPVRScreen->psDRISUPScreen);
++   PVRDRICompatDeinit();
++   free(psPVRScreen);
++}
++
++static void
++PVRScreenPrintExtensions(__DRIscreen *psDRIScreen)
++{
++   /* Don't attempt to print anything if LIBGL_DEBUG isn't in the environment */
++   if (getenv("LIBGL_DEBUG") == NULL)
++      return;
++
++   if (psDRIScreen->extensions) {
++      const __DRIextension *psScreenExtensionVersionInfo =
++         PVRDRIScreenExtensionVersionInfo();
++      int i;
++      int j;
++
++      __driUtilMessage("Supported screen extensions:");
++
++      for (i = 0; psDRIScreen->extensions[i]; i++) {
++         for (j = 0; psScreenExtensionVersionInfo[j].name; j++) {
++            if (strcmp(psDRIScreen->extensions[i]->name,
++                       psScreenExtensionVersionInfo[j].name) == 0) {
++               __driUtilMessage("\t%s (supported version: %u - max version: %u)",
++                                psDRIScreen->extensions[i]->name,
++                                psDRIScreen->extensions[i]->version,
++                                psScreenExtensionVersionInfo[j].version);
++               break;
++            }
++         }
++
++         if (psScreenExtensionVersionInfo[j].name == NULL) {
++            __driUtilMessage("\t%s (supported version: %u - max version: unknown)",
++                             psDRIScreen->extensions[i]->name,
++                             psDRIScreen->extensions[i]->version);
++         }
++      }
++   } else {
++      __driUtilMessage("No screen extensions found");
++   }
++}
++
++/*************************************************************************//*!
++ Mesa driver API functions
++ *//**************************************************************************/
++
++static const __DRIconfig **
++PVRDRIInitScreen(__DRIscreen *psDRIScreen)
++{
++   PVRDRIScreen *psPVRScreen;
++   const __DRIconfig **ppsConfigs;
++   int iMaxGLES1Version, iMaxGLES2Version;
++   const PVRDRICallbacks sDRICallbacks = {
++      /* Version 0 callbacks */
++      .ImageGetSharedType = PVRDRIImageGetSharedType,
++      .ImageGetSharedBuffer = PVRDRIImageGetSharedBuffer,
++      .ImageGetSharedEGLImage = PVRDRIImageGetSharedEGLImage,
++      .ImageGetEGLImage = PVRDRIImageGetEGLImage,
++      .ScreenGetDRIImage = PVRDRIScreenGetDRIImage,
++      .RefImage = PVRDRIRefImage,
++      .UnrefImage = PVRDRIUnrefImage,
++
++      /* Version 1 callbacks */
++      .RegisterSupportInterfaceV1 = PVRDRIRegisterSupportInterfaceV1,
++
++      /* Version 2 callbacks */
++      .ConfigQuery = PVRDRIConfigQuery,
++      .DrawableGetParametersV2 = PVRDRIDrawableGetParametersV2,
++      .DrawableQuery = PVRDRIDrawableQuery,
++   };
++   const struct PVRDRICallbacksV2 sDRICallbacksV2 = {
++      /* Version 0 callbacks */
++      .v0.RegisterSupportInterface = MODSUPRegisterSupportInterfaceV2,
++      .v0.GetBuffers = MODSUPGetBuffers,
++      .v0.CreateConfigs = MODSUPCreateConfigs,
++      .v0.ConcatConfigs = MODSUPConcatConfigs,
++      .v0.ConfigQuery = MODSUPConfigQuery,
++      .v0.LookupEGLImage = MODSUPLookupEGLImage,
++      .v0.GetCapability = MODSUPGetCapability,
++   };
++
++   if (!PVRLoaderIsSupported(psDRIScreen))
++      return NULL;
++
++   if (!PVRDRICompatInit(&sDRICallbacks, 3, &sDRICallbacksV2, 0, 0))
++      return NULL;
++
++   psPVRScreen = calloc(1, sizeof(*psPVRScreen));
++   if (psPVRScreen == NULL) {
++      __driUtilMessage("%s: Couldn't allocate PVRDRIScreen", __func__);
++      goto ErrorCompatDeinit;
++   }
++
++   psDRIScreen->driverPrivate = psPVRScreen;
++   psPVRScreen->psDRIScreen = psDRIScreen;
++   psPVRScreen->iRefCount = 1;
++
++   psPVRScreen->psDRISUPScreen =
++      DRISUPCreateScreen(psDRIScreen, psDRIScreen->fd,
++                         psDRIScreen->dri2.useInvalidate != NULL,
++                         psDRIScreen->loaderPrivate,
++                         &ppsConfigs, &iMaxGLES1Version, &iMaxGLES2Version);
++   if (!psPVRScreen->psDRISUPScreen)
++      goto ErrorScreenFree;
++
++   psDRIScreen->max_gl_es1_version = iMaxGLES1Version;
++   psDRIScreen->max_gl_es2_version = iMaxGLES2Version;
++   psDRIScreen->extensions = PVRDRIScreenExtensions();
++
++   PVRScreenPrintExtensions(psDRIScreen);
++
++   return ppsConfigs;
++
++ErrorScreenFree:
++   psDRIScreen->driverPrivate = NULL;
++   free(psPVRScreen);
++
++ErrorCompatDeinit:
++   PVRDRICompatDeinit();
++
++   return NULL;
++}
++
++static void
++PVRDRIDestroyScreen(__DRIscreen *psDRIScreen)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++#if defined(DEBUG)
++   if (psPVRScreen->iBufferAlloc != 0 ||
++       psPVRScreen->iDrawableAlloc != 0 ||
++       psPVRScreen->iContextAlloc != 0) {
++      errorMessage("%s: Outstanding allocations: Contexts: %d Drawables: %d Buffers: %d",
++                   __func__, psPVRScreen->iContextAlloc,
++                   psPVRScreen->iDrawableAlloc, psPVRScreen->iBufferAlloc);
++
++      if (psPVRScreen->iRefCount > 1) {
++         errorMessage("%s: PVRDRIScreen resources will not be freed until its %d references are removed",
++                      __func__, psPVRScreen->iRefCount - 1);
++      }
++   }
++#endif
++
++   PVRDRIScreenRemoveReference(psPVRScreen);
++}
++
++static int
++PVRDRIScreenSupportedAPIs(PVRDRIScreen *psPVRScreen)
++{
++   unsigned int api_mask = psPVRScreen->psDRIScreen->api_mask;
++   int supported = 0;
++
++   if ((api_mask & (1 << __DRI_API_GLES)) != 0)
++      supported |= PVRDRI_API_BIT_GLES;
++
++   if ((api_mask & (1 << __DRI_API_GLES2)) != 0)
++      supported |= PVRDRI_API_BIT_GLES2;
++
++   if ((api_mask & (1 << __DRI_API_GLES3)) != 0)
++      supported |= PVRDRI_API_BIT_GLES3;
++
++   return supported;
++}
++
++static GLboolean
++PVRDRICreateContext(gl_api eMesaAPI, const struct gl_config *psGLMode,
++                    __DRIcontext *psDRIContext,
++                    const struct __DriverContextConfig *psCtxConfig,
++                    unsigned int *puError, void *pvSharedContextPrivate)
++{
++   __DRIscreen *psDRIScreen = psDRIContext->driScreenPriv;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   PVRDRIContext *psPVRContext;
++   struct DRISUPContext *psDRISUPContext;
++   struct DRISUPContext *psDRISUPSharedContext;
++   struct PVRDRIContextConfig sCtxConfig;
++   PVRDRIAPIType eAPI;
++
++   psDRISUPSharedContext = getSharedContextImpl(pvSharedContextPrivate);
++
++   sCtxConfig.uMajorVersion = psCtxConfig->major_version;
++   sCtxConfig.uMinorVersion = psCtxConfig->minor_version;
++   sCtxConfig.uFlags = psCtxConfig->flags;
++   sCtxConfig.iResetStrategy = PVRDRI_CONTEXT_RESET_NO_NOTIFICATION;
++   sCtxConfig.uPriority = PVRDRI_CONTEXT_PRIORITY_MEDIUM;
++   sCtxConfig.iReleaseBehavior = PVRDRI_CONTEXT_RELEASE_BEHAVIOR_FLUSH;
++
++   psPVRContext = calloc(1, sizeof(*psPVRContext));
++   if (psPVRContext == NULL) {
++      __driUtilMessage("%s: Couldn't allocate PVRDRIContext", __func__);
++      *puError = __DRI_CTX_ERROR_NO_MEMORY;
++      return GL_FALSE;
++   }
++
++   psPVRContext->psDRIContext = psDRIContext;
++   psPVRContext->psPVRScreen = psPVRScreen;
++
++   if (psGLMode)
++      psPVRContext->sConfig.sGLMode = *psGLMode;
++
++   switch (eMesaAPI) {
++   case API_OPENGLES:
++      eAPI = PVRDRI_API_GLES1;
++      break;
++   case API_OPENGLES2:
++      eAPI = PVRDRI_API_GLES2;
++      break;
++   default:
++      __driUtilMessage("%s: Unsupported API: %d",
++                       __func__, (int) eMesaAPI);
++      *puError = __DRI_CTX_ERROR_BAD_API;
++      goto ErrorContextFree;
++   }
++   psPVRContext->eAPI = eAPI;
++
++   if ((psCtxConfig->attribute_mask &
++        __DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY) != 0) {
++      sCtxConfig.iResetStrategy = psCtxConfig->reset_strategy;
++   }
++
++   if ((psCtxConfig->attribute_mask &
++        __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR) != 0) {
++      sCtxConfig.iReleaseBehavior = psCtxConfig->release_behavior;
++   }
++
++   if ((psCtxConfig->attribute_mask &
++        __DRIVER_CONTEXT_ATTRIB_PRIORITY) != 0) {
++      sCtxConfig.uPriority = psCtxConfig->priority;
++   }
++
++   *puError = DRISUPCreateContext(eAPI, &psPVRContext->sConfig, &sCtxConfig,
++                                  psDRIContext, psDRISUPSharedContext,
++                                  psPVRScreen->psDRISUPScreen,
++                                  &psDRISUPContext);
++   if (*puError != __DRI_CTX_ERROR_SUCCESS)
++      goto ErrorContextFree;
++
++   psPVRContext->psDRISUPContext = psDRISUPContext;
++
++   if (!pvrdri_create_dispatch_table(psPVRScreen, eAPI)) {
++      __driUtilMessage("%s: Couldn't create dispatch table", __func__);
++      *puError = __DRI_CTX_ERROR_BAD_API;
++      goto ErrorContextDestroy;
++   }
++#if defined(DEBUG)
++   p_atomic_inc(&psPVRScreen->iContextAlloc);
++#endif
++
++   psDRIContext->driverPrivate = (void *) psPVRContext;
++   PVRDRIScreenAddReference(psPVRScreen);
++
++   *puError = __DRI_CTX_ERROR_SUCCESS;
++
++   return GL_TRUE;
++
++ErrorContextDestroy:
++   DRISUPDestroyContext(psPVRContext->psDRISUPContext);
++
++ErrorContextFree:
++   free(psPVRContext);
++
++   return GL_FALSE;
++}
++
++static void
++PVRDRIDestroyContext(__DRIcontext *psDRIContext)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++   PVRDRIScreen *psPVRScreen = psPVRContext->psPVRScreen;
++
++   DRISUPDestroyContext(psPVRContext->psDRISUPContext);
++
++#if defined(DEBUG)
++   p_atomic_dec(&psPVRScreen->iContextAlloc);
++#endif
++
++   PVRDRIScreenRemoveReference(psPVRScreen);
++   free(psPVRContext);
++}
++
++static GLboolean
++PVRDRICreateBuffer(__DRIscreen *psDRIScreen, __DRIdrawable *psDRIDrawable,
++                   const struct gl_config *psGLMode, GLboolean bIsPixmap)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   PVRDRIDrawable *psPVRDrawable = NULL;
++
++   /* No known callers ever set this to true */
++   if (bIsPixmap)
++      return GL_FALSE;
++
++   if (!psGLMode) {
++      __driUtilMessage("%s: Invalid GL config", __func__);
++      return GL_FALSE;
++   }
++
++   psPVRDrawable = calloc(1, sizeof(*psPVRDrawable));
++   if (!psPVRDrawable) {
++      __driUtilMessage("%s: Couldn't allocate PVR drawable", __func__);
++      goto ErrorDrawableFree;
++   }
++
++   psDRIDrawable->driverPrivate = (void *) psPVRDrawable;
++   psPVRDrawable->psDRIDrawable = psDRIDrawable;
++   psPVRDrawable->psPVRScreen = psPVRScreen;
++   psPVRDrawable->sConfig.sGLMode = *psGLMode;
++   psPVRDrawable->sConfig.iSupportedAPIs =
++      PVRDRIScreenSupportedAPIs(psPVRScreen);
++
++   psPVRDrawable->psDRISUPDrawable =
++      DRISUPCreateDrawable(psDRIDrawable, psPVRScreen->psDRISUPScreen,
++                           psDRIDrawable->loaderPrivate,
++                           &psPVRDrawable->sConfig);
++   if (!psPVRDrawable->psDRISUPDrawable) {
++      __driUtilMessage("%s: Couldn't create DRI Support drawable",
++                       __func__);
++      goto ErrorDrawableFree;
++   }
++
++   /* Initialisation is completed in MakeCurrent */
++#if defined(DEBUG)
++   p_atomic_inc(&psPVRScreen->iDrawableAlloc);
++#endif
++   PVRDRIScreenAddReference(psPVRScreen);
++   return GL_TRUE;
++
++ErrorDrawableFree:
++   DRISUPDestroyDrawable(psPVRDrawable->psDRISUPDrawable);
++   free(psPVRDrawable);
++   psDRIDrawable->driverPrivate = NULL;
++
++   return GL_FALSE;
++}
++
++static void
++PVRDRIDestroyBuffer(__DRIdrawable *psDRIDrawable)
++{
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++
++   DRISUPDestroyDrawable(psPVRDrawable->psDRISUPDrawable);
++
++#if defined(DEBUG)
++   p_atomic_dec(&psPVRDrawable->psPVRScreen->iDrawableAlloc);
++#endif
++
++   PVRDRIScreenRemoveReference(psPVRDrawable->psPVRScreen);
++   free(psPVRDrawable);
++}
++
++static GLboolean
++PVRDRIMakeCurrent(__DRIcontext *psDRIContext,
++                  __DRIdrawable *psDRIWrite, __DRIdrawable *psDRIRead)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++   struct DRISUPDrawable *psDRISUPWrite;
++   struct DRISUPDrawable *psDRISUPRead;
++
++   if (psDRIWrite) {
++      PVRDRIDrawable *psPVRWrite = psDRIWrite->driverPrivate;
++
++      psDRISUPWrite = psPVRWrite->psDRISUPDrawable;
++   } else {
++      psDRISUPWrite = NULL;
++   }
++
++   if (psDRIRead) {
++      PVRDRIDrawable *psPVRRead = psDRIRead->driverPrivate;
++
++      psDRISUPRead = psPVRRead->psDRISUPDrawable;
++   } else {
++      psDRISUPRead = NULL;
++   }
++
++   if (!DRISUPMakeCurrent(psPVRContext->psDRISUPContext,
++                          psDRISUPWrite, psDRISUPRead))
++      goto ErrorUnlock;
++
++   pvrdri_set_dispatch_table(psPVRContext);
++
++   return GL_TRUE;
++
++ErrorUnlock:
++   return GL_FALSE;
++}
++
++static GLboolean
++PVRDRIUnbindContext(__DRIcontext *psDRIContext)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   pvrdri_set_null_dispatch_table();
++   DRISUPUnbindContext(psPVRContext->psDRISUPContext);
++
++   return GL_TRUE;
++}
++
++static __DRIbuffer *
++PVRDRIAllocateBuffer(__DRIscreen *psDRIScreen, unsigned int uAttachment,
++                     unsigned int uFormat, int iWidth, int iHeight)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   struct PVRBuffer *psBuffer;
++
++   psBuffer = calloc(1, sizeof(*psBuffer));
++   if (psBuffer == NULL) {
++      __driUtilMessage("%s: Failed to allocate buffer", __func__);
++      return NULL;
++   }
++
++   psBuffer->psDRISUPBuffer =
++      DRISUPAllocateBuffer(psPVRScreen->psDRISUPScreen, uAttachment, uFormat,
++                           iWidth, iHeight, &psBuffer->sDRIBuffer.name,
++                           &psBuffer->sDRIBuffer.pitch,
++                           &psBuffer->sDRIBuffer.cpp,
++                           &psBuffer->sDRIBuffer.flags);
++   if (!psBuffer->psDRISUPBuffer) {
++      __driUtilMessage("%s: Failed to create DRI Support buffer", __func__);
++      goto ErrorFreeDRIBuffer;
++   }
++
++   psBuffer->sDRIBuffer.attachment = uAttachment;
++
++#if defined(DEBUG)
++   p_atomic_inc(&psPVRScreen->iBufferAlloc);
++#endif
++
++   return &psBuffer->sDRIBuffer;
++
++ErrorFreeDRIBuffer:
++   free(psBuffer);
++
++   return NULL;
++}
++
++static void
++PVRDRIReleaseBuffer(__DRIscreen *psDRIScreen, __DRIbuffer *psDRIBuffer)
++{
++   struct PVRBuffer *psPVRBuffer = (struct PVRBuffer *) psDRIBuffer;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   DRISUPReleaseBuffer(psPVRScreen->psDRISUPScreen,
++                       psPVRBuffer->psDRISUPBuffer);
++
++#if defined(DEBUG)
++   p_atomic_dec(&psPVRScreen->iBufferAlloc);
++#endif
++
++   free(psPVRBuffer);
++}
++
++static const struct __DriverAPIRec pvr_driver_api = {
++   .InitScreen = PVRDRIInitScreen,
++   .DestroyScreen = PVRDRIDestroyScreen,
++   .CreateContext = PVRDRICreateContext,
++   .DestroyContext = PVRDRIDestroyContext,
++   .CreateBuffer = PVRDRICreateBuffer,
++   .DestroyBuffer = PVRDRIDestroyBuffer,
++   .SwapBuffers = NULL,
++   .MakeCurrent = PVRDRIMakeCurrent,
++   .UnbindContext = PVRDRIUnbindContext,
++   .AllocateBuffer = PVRDRIAllocateBuffer,
++   .ReleaseBuffer = PVRDRIReleaseBuffer,
++};
++
++static const struct __DRIDriverVtableExtensionRec pvr_vtable = {
++   .base = {__DRI_DRIVER_VTABLE, 1},
++   .vtable = &pvr_driver_api,
++};
++
++static const __DRIextension *pvr_driver_extensions[] = {
++   &driCoreExtension.base,
++   &driImageDriverExtension.base,
++   &driDRI2Extension.base,
++   &pvr_vtable.base,
++   NULL
++};
++
++const __DRIextension **__driDriverGetExtensions_pvr(void);
++
++PUBLIC const __DRIextension **
++__driDriverGetExtensions_pvr(void)
++{
++   globalDriverAPI = &pvr_driver_api;
++
++   return pvr_driver_extensions;
++}
+diff --git a/src/mesa/drivers/dri/pvr/pvrdri.h b/src/mesa/drivers/dri/pvr/pvrdri.h
+new file mode 100644
+index 00000000000..b497cc4839b
+--- /dev/null
++++ b/src/mesa/drivers/dri/pvr/pvrdri.h
+@@ -0,0 +1,171 @@
++/*
++ * Copyright (c) Imagination Technologies Ltd.
++ *
++ * The contents of this file are subject to the MIT license as set out below.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++#if !defined(__PVRDRI_H__)
++#define __PVRDRI_H__
++
++#include <stdbool.h>
++#include <stdint.h>
++#include <inttypes.h>
++
++#include <glapi/glapi.h>
++
++#include "main/mtypes.h"
++#include "util/macros.h"
++#include "dri_util.h"
++#include "pvrdri_support.h"
++
++struct PVRDRIConfigRec {
++   struct gl_config sGLMode;
++   int iSupportedAPIs;
++};
++
++/* PVR screen data */
++typedef struct PVRDRIScreen_TAG {
++   /* DRI screen structure pointer */
++   __DRIscreen *psDRIScreen;
++
++   /* Opaque PVR DRI Support screen structure pointer */
++   struct DRISUPScreen *psDRISUPScreen;
++
++   /* Reference count */
++   int iRefCount;
++
++#if defined(DEBUG)
++   /* Counters of outstanding allocations */
++   int iContextAlloc;
++   int iDrawableAlloc;
++   int iBufferAlloc;
++#endif
++
++   /* PVR OGLES 1 dispatch table */
++   struct _glapi_table *psOGLES1Dispatch;
++   /* PVR OGLES 2/3 dispatch table */
++   struct _glapi_table *psOGLES2Dispatch;
++} PVRDRIScreen;
++
++/* PVR context data */
++typedef struct PVRDRIContext_TAG {
++   /* Pointer to DRI context */
++   __DRIcontext *psDRIContext;
++
++   /* Opaque PVR DRI Support context structure pointer */
++   struct DRISUPContext *psDRISUPContext;
++
++   /* Pointer to PVRDRIScreen structure */
++   PVRDRIScreen *psPVRScreen;
++
++   /* GL config */
++   PVRDRIConfig sConfig;
++
++   /* API */
++   PVRDRIAPIType eAPI;
++} PVRDRIContext;
++
++/* PVR drawable data */
++typedef struct PVRDRIDrawable_TAG {
++   PVRDRIScreen *psPVRScreen;
++   __DRIdrawable *psDRIDrawable;
++   PVRDRIConfig sConfig;
++   struct DRISUPDrawable *psDRISUPDrawable;
++   unsigned int uFourCC;
++   unsigned int uDRIFormat;
++} PVRDRIDrawable;
++
++/*************************************************************************//*!
++ pvrutil.c
++ *//**************************************************************************/
++
++void PRINTFLIKE(1, 2) __driUtilMessage(const char *f, ...);
++void PRINTFLIKE(1, 2) errorMessage(const char *f, ...);
++
++mesa_format PVRDRIMesaFormatToMesaFormat(int pvrdri_mesa_format);
++int PVRDRIFormatToFourCC(int dri_format);
++int PVRDRIFourCCToDRIFormat(int iFourCC);
++
++/*************************************************************************//*!
++ pvrext.c
++ *//**************************************************************************/
++
++const __DRIextension **PVRDRIScreenExtensions(void);
++const __DRIextension *PVRDRIScreenExtensionVersionInfo(void);
++
++void PVRDRIAdjustExtensions(unsigned int uVersion, unsigned int uMinVersion);
++
++/*************************************************************************//*!
++ pvrcompat.c
++ *//**************************************************************************/
++
++bool PVRDRICompatInit(const PVRDRICallbacks *psCallbacks,
++                      unsigned int uVersion,
++                      const struct PVRDRICallbacksV2 *psCallbacksV2,
++                      unsigned int uVersionV2, unsigned int uMinVersionV2);
++void PVRDRICompatDeinit(void);
++
++bool PVRDRIRegisterSupportInterfaceV1(const PVRDRISupportInterface *psInterface,
++                                      unsigned int uVersion);
++bool MODSUPRegisterSupportInterfaceV2(const void *pvInterface,
++                                      unsigned int uVersion,
++                                      unsigned int uMinVersion);
++
++/*************************************************************************//*!
++ pvrcb.c
++ *//**************************************************************************/
++
++int MODSUPGetBuffers(struct __DRIdrawableRec *psDRIDrawable,
++                     unsigned int uFourCC, uint32_t *puStamp,
++                     void *pvLoaderPrivate, uint32_t uBufferMask,
++                     struct PVRDRIImageList *psImageList);
++
++bool MODSUPCreateConfigs(struct __DRIconfigRec ***psConfigs,
++                         struct __DRIscreenRec *psDRIScreen,
++                         int iPVRDRIMesaFormat, const uint8_t *puDepthBits,
++                         const uint8_t *puStencilBits,
++                         unsigned int uNumDepthStencilBits,
++                         const unsigned int *puDBModes,
++                         unsigned int uNumDBModes,
++                         const uint8_t *puMSAASamples,
++                         unsigned int uNumMSAAModes, bool bEnableAccum,
++                         bool bColorDepthMatch, bool bMutableRenderBuffer,
++                         int iYUVDepthRange, int iYUVCSCStandard,
++                         uint32_t uMaxPbufferWidth, uint32_t uMaxPbufferHeight);
++
++struct __DRIconfigRec **MODSUPConcatConfigs(struct __DRIscreenRec *psDRIScreen,
++                                            struct __DRIconfigRec **ppsConfigA,
++                                            struct __DRIconfigRec **ppsConfigB);
++
++__DRIimage *MODSUPLookupEGLImage(struct __DRIscreenRec *psDRIScreen,
++                                 void *pvImage, void *pvLoaderPrivate);
++
++unsigned int MODSUPGetCapability(struct __DRIscreenRec *psDRIScreen,
++                                 unsigned int uCapability);
++
++bool PVRDRIConfigQuery(const PVRDRIConfig *psConfig,
++                       PVRDRIConfigAttrib eConfigAttrib, int *piValueOut);
++
++bool MODSUPConfigQuery(const PVRDRIConfig *psConfig,
++                       PVRDRIConfigAttrib eConfigAttrib,
++                       unsigned int *puValueOut);
++
++#endif /* defined(__PVRDRI_H__) */
+diff --git a/src/mesa/drivers/dri/pvr/pvrdri_mod.c b/src/mesa/drivers/dri/pvr/pvrdri_mod.c
+new file mode 100644
+index 00000000000..0abe8a38d3a
+--- /dev/null
++++ b/src/mesa/drivers/dri/pvr/pvrdri_mod.c
+@@ -0,0 +1,584 @@
++/*
++ * Copyright (c) Imagination Technologies Ltd.
++ *
++ * The contents of this file are subject to the MIT license as set out below.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++#include <stdlib.h>
++#include <xf86drm.h>
++
++#include "pvrdri_mod.h"
 +
 +#define PVR_IMAGE_LOADER_VER_MIN 1
 +
@@ -3830,984 +5316,561 @@
 +#define PVRDRI_FLUSH_NEW_EXTERNAL_FRAME (1U << 1)
 +#define PVRDRI_FLUSH_ALL_SURFACES       (1U << 2)
 +
-+typedef struct PVRBufferRec
-+{
-+	__DRIbuffer sDRIBuffer;
-+	PVRDRIBufferImpl *psImpl;
-+} PVRBuffer;
 +
 +/* We need to know the current screen in order to lookup EGL images. */
-+static __thread PVRDRIScreen *gpsPVRScreen;
++static __thread struct DRISUPScreen *gpsPVRScreen;
 +
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + Local functions
-+*/ /**************************************************************************/
-+
-+static bool PVRLoaderIsSupported(__DRIscreen *psDRIScreen)
-+{
-+	if (psDRIScreen->image.loader)
-+	{
-+		if (psDRIScreen->image.loader->base.version < PVR_IMAGE_LOADER_VER_MIN)
-+		{
-+			__driUtilMessage("%s: Image loader extension version %d but need %d",
-+					 __func__,
-+					 psDRIScreen->image.loader->base.version,
-+					 PVR_IMAGE_LOADER_VER_MIN);
-+			return false;
-+		}
-+		else if (!psDRIScreen->image.loader->getBuffers)
-+		{
-+			__driUtilMessage("%s: Image loader extension missing support for getBuffers",
-+					 __func__);
-+			return false;
-+		}
-+	}
-+	else
-+	{
-+		__driUtilMessage("%s: Image loader extension required",
-+				 __func__);
-+		return false;
-+	}
-+
-+	return true;
-+}
++ *//**************************************************************************/
 +
 +static inline bool
-+PVRDRIFlushBuffers(PVRDRIContext *psPVRContext,
-+		   PVRDRIDrawable *psPVRDrawable,
-+		   uint32_t uiFlags)
++PVRDRIFlushBuffers(struct DRISUPContext *psPVRContext,
++                   struct DRISUPDrawable *psPVRDrawable, uint32_t uiFlags)
 +{
-+	assert(!(uiFlags & ~(PVRDRI_FLUSH_WAIT_FOR_HW |
-+			     PVRDRI_FLUSH_NEW_EXTERNAL_FRAME |
-+			     PVRDRI_FLUSH_ALL_SURFACES)));
++   PVRDRIDrawableImpl *psDrawableImpl;
++   bool bFlushAllSurfaces = (uiFlags & PVRDRI_FLUSH_ALL_SURFACES) != 0;
++   bool bSwapBuffers = (uiFlags & PVRDRI_FLUSH_NEW_EXTERNAL_FRAME) != 0;
++   bool bWaitForHW = (uiFlags & PVRDRI_FLUSH_WAIT_FOR_HW) != 0;
 +
-+	return PVRDRIEGLFlushBuffers(psPVRContext->eAPI,
-+	                             psPVRContext->psPVRScreen->psImpl,
-+	                             psPVRContext->psImpl,
-+	                             psPVRDrawable ? psPVRDrawable->psImpl : NULL,
-+	                             uiFlags & PVRDRI_FLUSH_ALL_SURFACES,
-+	                             uiFlags & PVRDRI_FLUSH_NEW_EXTERNAL_FRAME,
-+	                             uiFlags & PVRDRI_FLUSH_WAIT_FOR_HW);
++   psDrawableImpl = psPVRDrawable ? psPVRDrawable->psImpl : NULL;
++
++   assert(!(uiFlags & ~(PVRDRI_FLUSH_WAIT_FOR_HW |
++                        PVRDRI_FLUSH_NEW_EXTERNAL_FRAME |
++                        PVRDRI_FLUSH_ALL_SURFACES)));
++
++   return PVRDRIEGLFlushBuffers(psPVRContext->eAPI,
++                                psPVRContext->psPVRScreen->psImpl,
++                                psPVRContext->psImpl, psDrawableImpl,
++                                bFlushAllSurfaces, bSwapBuffers, bWaitForHW);
 +}
 +
 +void
-+PVRDRIFlushBuffersForSwap(PVRDRIContext *psPVRContext,
-+                          PVRDRIDrawable *psPVRDrawable)
++PVRDRIFlushBuffersForSwap(struct DRISUPContext *psPVRContext,
++                          struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (psPVRContext)
-+	{
-+		/*
-+		 * The bFlushInProgress flag is intended to prevent new
-+		 * buffers being fetched whilst a flush is in progress,
-+		 * which may corrupt the state maintained by the Mesa
-+		 * platform code.
-+		 */
-+		psPVRDrawable->bFlushInProgress = true;
++   if (psPVRContext) {
++      /*
++       * The bFlushInProgress flag is intended to prevent new buffers being
++       * fetched whilst a flush is in progress, which may corrupt the state
++       * maintained by the Mesa platform code.
++       */
++      psPVRDrawable->bFlushInProgress = true;
 +
-+		(void) PVRDRIFlushBuffers(psPVRContext,
-+					  psPVRDrawable,
-+					  PVRDRI_FLUSH_NEW_EXTERNAL_FRAME);
++      (void) PVRDRIFlushBuffers(psPVRContext,
++                                psPVRDrawable,
++                                PVRDRI_FLUSH_NEW_EXTERNAL_FRAME);
 +
-+		psPVRDrawable->bFlushInProgress = false;
-+	}
++      psPVRDrawable->bFlushInProgress = false;
++   }
 +}
 +
 +static void
-+PVRDRIFlushBuffersGC(PVRDRIContext *psPVRContext, PVRDRIDrawable *psPVRDrawable)
++PVRDRIFlushBuffersGC(struct DRISUPContext *psPVRContext,
++                     struct DRISUPDrawable *psPVRDrawable)
 +{
-+	(void) PVRDRIFlushBuffers(psPVRContext,
-+				  psPVRDrawable,
-+				  PVRDRI_FLUSH_WAIT_FOR_HW |
-+				  PVRDRI_FLUSH_ALL_SURFACES);
++   (void) PVRDRIFlushBuffers(psPVRContext, psPVRDrawable,
++                             PVRDRI_FLUSH_WAIT_FOR_HW |
++                             PVRDRI_FLUSH_ALL_SURFACES);
 +}
 +
-+static void PVRContextUnbind(PVRDRIContext *psPVRContext,
-+			     bool bMakeUnCurrent,
-+			     bool bMarkSurfaceInvalid)
++static void
++PVRContextUnbind(struct DRISUPContext *psPVRContext, bool bMakeUnCurrent,
++                 bool bMarkSurfaceInvalid)
 +{
-+	PVRDRIDrawable *psPVRDrawable = psPVRContext->psPVRDrawable;
++   struct DRISUPScreen *psPVRScreen = psPVRContext->psPVRScreen;
++   struct DRISUPDrawable *psPVRDrawable = psPVRContext->psPVRDrawable;
 +
-+	if (bMakeUnCurrent)
-+	{
-+		uint32_t uiFlags = PVRDRI_FLUSH_ALL_SURFACES;
++   if (bMakeUnCurrent && !psPVRContext->bMakeUncurrentNoFlush) {
++      uint32_t uiFlags = PVRDRI_FLUSH_ALL_SURFACES;
 +
-+		(void) PVRDRIFlushBuffers(psPVRContext, psPVRDrawable, uiFlags);
-+	}
-+	else if (psPVRDrawable)
-+	{
-+		PVRDRIFlushBuffersGC(psPVRContext, psPVRDrawable);
-+	}
++      (void) PVRDRIFlushBuffers(psPVRContext, psPVRDrawable, uiFlags);
++   } else if (psPVRDrawable) {
++      PVRDRIFlushBuffersGC(psPVRContext, psPVRDrawable);
++   }
 +
-+	if (bMakeUnCurrent)
-+	{
-+		PVRDRIMakeUnCurrentGC(psPVRContext->eAPI,
-+		                      psPVRContext->psPVRScreen->psImpl);
-+	}
++   if (bMakeUnCurrent)
++      PVRDRIMakeUnCurrentGC(psPVRContext->eAPI, psPVRScreen->psImpl);
 +
-+	if (psPVRDrawable != NULL)
-+	{
-+		if (bMarkSurfaceInvalid)
-+		{
-+			PVRDRIEGLMarkRendersurfaceInvalid(psPVRContext->eAPI,
-+			                                  psPVRContext->psPVRScreen->psImpl,
-+			                                  psPVRContext->psImpl);
-+		}
++   if (psPVRDrawable != NULL) {
++      if (bMarkSurfaceInvalid) {
++         PVRDRIEGLMarkRendersurfaceInvalid(psPVRContext->eAPI,
++                                           psPVRScreen->psImpl,
++                                           psPVRContext->psImpl);
++      }
 +
-+		psPVRContext->psPVRDrawable = NULL;
-+		psPVRDrawable->psPVRContext = NULL;
-+	}
++      psPVRContext->psPVRDrawable = NULL;
++      psPVRDrawable->psPVRContext = NULL;
++   }
 +}
 +
-+static inline PVRDRIContextImpl *
-+getSharedContextImpl(void *pvSharedContextPrivate)
++static inline void
++PVRDrawableUnbindContext(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (pvSharedContextPrivate == NULL)
-+	{
-+		return NULL;
-+	}
-+	return ((PVRDRIContext *)pvSharedContextPrivate)->psImpl;
++   struct DRISUPContext *psPVRContext = psPVRDrawable->psPVRContext;
++
++   if (psPVRContext)
++      PVRContextUnbind(psPVRContext, false, true);
 +}
 +
-+
-+static void PVRDRIScreenAddReference(PVRDRIScreen *psPVRScreen)
-+{
-+	int iRefCount = p_atomic_inc_return(&psPVRScreen->iRefCount);
-+	(void)iRefCount;
-+	assert(iRefCount > 1);
-+}
-+
-+static void PVRDRIScreenRemoveReference(PVRDRIScreen *psPVRScreen)
-+{
-+	int iRefCount = p_atomic_dec_return(&psPVRScreen->iRefCount);
-+
-+	assert(iRefCount >= 0);
-+
-+	if (iRefCount != 0)
-+	{
-+		return;
-+	}
-+
-+	pvrdri_free_dispatch_tables(psPVRScreen);
-+
-+	PVRDRIDestroyFencesImpl(psPVRScreen->psImpl);
-+
-+	PVRDRIDestroyFormatInfo(psPVRScreen);
-+
-+	PVRDRIDestroyScreenImpl(psPVRScreen->psImpl);
-+
-+	free(psPVRScreen);
-+}
-+
-+static inline void PVRDrawableUnbindContext(PVRDRIDrawable *psPVRDrawable)
-+{
-+	PVRDRIContext *psPVRContext = psPVRDrawable->psPVRContext;
-+
-+	if (psPVRContext)
-+	{
-+		PVRContextUnbind(psPVRContext, false, true);
-+	}
-+}
-+
-+static void PVRScreenPrintExtensions(__DRIscreen *psDRIScreen)
-+{
-+	/* Don't attempt to print anything if LIBGL_DEBUG isn't in the environment */
-+	if (getenv("LIBGL_DEBUG") == NULL)
-+	{
-+		return;
-+	}
-+
-+	if (psDRIScreen->extensions)
-+	{
-+		const __DRIextension *psScreenExtensionVersionInfo = PVRDRIScreenExtensionVersionInfo();
-+		int i;
-+		int j;
-+
-+		__driUtilMessage("Supported screen extensions:");
-+
-+		for (i = 0; psDRIScreen->extensions[i]; i++)
-+		{
-+			for (j = 0; psScreenExtensionVersionInfo[j].name; j++)
-+			{
-+				if (strcmp(psDRIScreen->extensions[i]->name,
-+				           psScreenExtensionVersionInfo[j].name) == 0)
-+				{
-+					__driUtilMessage("\t%s (supported version: %u - max version: %u)",
-+							 psDRIScreen->extensions[i]->name,
-+							 psDRIScreen->extensions[i]->version,
-+							 psScreenExtensionVersionInfo[j].version);
-+					break;
-+				}
-+			}
-+
-+			if (psScreenExtensionVersionInfo[j].name == NULL)
-+			{
-+				__driUtilMessage("\t%s (supported version: %u - max version: unknown)",
-+						 psDRIScreen->extensions[i]->name,
-+						 psDRIScreen->extensions[i]->version);
-+			}
-+		}
-+	}
-+	else
-+	{
-+		__driUtilMessage("No screen extensions found");
-+	}
-+}
-+
-+static bool PVRDRIConfigQuery(const PVRDRIConfig *psConfig,
-+			      PVRDRIConfigAttrib eConfigAttrib,
-+			      int *piValueOut)
-+{
-+	if (!psConfig || !piValueOut)
-+	{
-+		return false;
-+	}
-+
-+	switch (eConfigAttrib)
-+	{
-+		case PVRDRI_CONFIG_ATTRIB_RENDERABLE_TYPE:
-+			*piValueOut = psConfig->iSupportedAPIs;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_RGB_MODE:
-+			*piValueOut = psConfig->sGLMode.rgbMode;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_DOUBLE_BUFFER_MODE:
-+			*piValueOut = psConfig->sGLMode.doubleBufferMode;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_RED_BITS:
-+			*piValueOut = psConfig->sGLMode.redBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_GREEN_BITS:
-+			*piValueOut = psConfig->sGLMode.greenBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_BLUE_BITS:
-+			*piValueOut = psConfig->sGLMode.blueBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_ALPHA_BITS:
-+			*piValueOut = psConfig->sGLMode.alphaBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_RGB_BITS:
-+			*piValueOut = psConfig->sGLMode.rgbBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_DEPTH_BITS:
-+			*piValueOut = psConfig->sGLMode.depthBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_STENCIL_BITS:
-+			*piValueOut = psConfig->sGLMode.stencilBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_SAMPLE_BUFFERS:
-+			*piValueOut = psConfig->sGLMode.sampleBuffers;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_SAMPLES:
-+			*piValueOut = psConfig->sGLMode.samples;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_BIND_TO_TEXTURE_RGB:
-+			*piValueOut = psConfig->sGLMode.bindToTextureRgb;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_BIND_TO_TEXTURE_RGBA:
-+			*piValueOut = psConfig->sGLMode.bindToTextureRgba;
-+			return true;
-+#if defined(__DRI_ATTRIB_YUV_BIT)
-+		case PVRDRI_CONFIG_ATTRIB_YUV_ORDER:
-+			*piValueOut = psConfig->sGLMode.YUVOrder;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_YUV_NUM_OF_PLANES:
-+			*piValueOut = psConfig->sGLMode.YUVNumberOfPlanes;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_YUV_SUBSAMPLE:
-+			*piValueOut = psConfig->sGLMode.YUVSubsample;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_YUV_DEPTH_RANGE:
-+			*piValueOut = psConfig->sGLMode.YUVDepthRange;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_YUV_CSC_STANDARD:
-+			*piValueOut = psConfig->sGLMode.YUVCSCStandard;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_YUV_PLANE_BPP:
-+			*piValueOut = psConfig->sGLMode.YUVPlaneBPP;
-+			return true;
-+#endif
-+		case PVRDRI_CONFIG_ATTRIB_INVALID:
-+			errorMessage("%s: Invalid attribute", __func__);
-+			assert(0);
-+			/* fallthrough */
-+#if !defined(__DRI_ATTRIB_YUV_BIT)
-+		case PVRDRI_CONFIG_ATTRIB_YUV_ORDER:
-+		case PVRDRI_CONFIG_ATTRIB_YUV_NUM_OF_PLANES:
-+		case PVRDRI_CONFIG_ATTRIB_YUV_SUBSAMPLE:
-+		case PVRDRI_CONFIG_ATTRIB_YUV_DEPTH_RANGE:
-+		case PVRDRI_CONFIG_ATTRIB_YUV_CSC_STANDARD:
-+		case PVRDRI_CONFIG_ATTRIB_YUV_PLANE_BPP:
-+			return false;
-+#endif
-+	}
-+
-+	return false;
-+}
-+
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + Mesa driver API functions
-+*/ /**************************************************************************/
-+static const __DRIconfig **PVRDRIInitScreen(__DRIscreen *psDRIScreen)
++ *//**************************************************************************/
++struct DRISUPScreen *
++DRIMODCreateScreen(struct __DRIscreenRec *psDRIScreen, int iFD,
++                   bool bUseInvalidate, void *pvLoaderPrivate,
++                   const struct __DRIconfigRec ***pppsConfigs,
++                   int *piMaxGLES1Version, int *piMaxGLES2Version)
 +{
-+	PVRDRIScreen *psPVRScreen;
-+	const __DRIconfig **configs;
-+	const PVRDRICallbacks sDRICallbacks = {
-+		/* Version 0 callbacks */
-+		.DrawableRecreate            = PVRDRIDrawableRecreateV0,
-+		.DrawableGetParameters       = PVRDRIDrawableGetParametersV0,
-+		.ImageGetSharedType          = PVRDRIImageGetSharedType,
-+		.ImageGetSharedBuffer        = PVRDRIImageGetSharedBuffer,
-+		.ImageGetSharedEGLImage      = PVRDRIImageGetSharedEGLImage,
-+		.ImageGetEGLImage            = PVRDRIImageGetEGLImage,
-+		.ScreenGetDRIImage           = PVRDRIScreenGetDRIImage,
-+		.RefImage                    = PVRDRIRefImage,
-+		.UnrefImage                  = PVRDRIUnrefImage,
++   struct DRISUPScreen *psPVRScreen;
++   const struct __DRIconfigRec **ppsConfigs;
 +
-+		/* Version 1 callbacks */
-+		.DrawableGetParametersV1     = PVRDRIDrawableGetParametersV1,
-+		.RegisterSupportInterfaceV1  = PVRDRIRegisterSupportInterfaceV1,
++   psPVRScreen = calloc(1, sizeof(*psPVRScreen));
++   if (psPVRScreen == NULL) {
++      __driUtilMessage("%s: Couldn't allocate PVRDRIScreen", __func__);
++      return NULL;
++   }
 +
-+		/* Version 2 callbacks */
-+		.ConfigQuery                 = PVRDRIConfigQuery,
-+		.DrawableGetParametersV2     = PVRDRIDrawableGetParametersV2,
-+		.DrawableQuery               = PVRDRIDrawableQuery,
-+	};
++   psPVRScreen->psDRIScreen = psDRIScreen;
++   psPVRScreen->iFD = iFD;
++   psPVRScreen->bUseInvalidate = bUseInvalidate;
++   psPVRScreen->pvLoaderPrivate = pvLoaderPrivate;
 +
-+	if (!PVRLoaderIsSupported(psDRIScreen))
-+	{
-+		return NULL;
-+	}
++   if (!PVRDRIGetMesaFormats(psPVRScreen))
++      goto ErrorScreenFree;
 +
-+	if (!PVRDRICompatInit(&sDRICallbacks, 3))
-+	{
-+		return NULL;
-+	}
++   psPVRScreen->psImpl = PVRDRICreateScreenImpl(iFD);
++   if (psPVRScreen->psImpl == NULL)
++      goto ErrorScreenFree;
 +
-+	psPVRScreen = calloc(1, sizeof(*psPVRScreen));
-+	if (psPVRScreen == NULL)
-+	{
-+		__driUtilMessage("%s: Couldn't allocate PVRDRIScreen",
-+				 __func__);
-+		goto ErrorCompatDeinit;
-+	}
++   if (!PVRDRIGetSupportedFormats(psPVRScreen))
++      goto ErrorScreenImplDeinit;
 +
-+	DRIScreenPrivate(psDRIScreen) = psPVRScreen;
-+	psPVRScreen->psDRIScreen = psDRIScreen;
++   ppsConfigs = PVRDRICreateConfigs(psPVRScreen);
++   if (ppsConfigs == NULL) {
++      __driUtilMessage("%s: No framebuffer configs", __func__);
++      goto ErrorDestroyFormatInfo;
++   }
 +
-+	psPVRScreen->iRefCount = 1;
-+	psPVRScreen->bUseInvalidate = (psDRIScreen->dri2.useInvalidate != NULL);
++   *piMaxGLES1Version = PVRDRIAPIVersion(PVRDRI_API_GLES1,
++                                         PVRDRI_API_SUB_NONE,
++                                         psPVRScreen->psImpl);
 +
-+	psDRIScreen->extensions = PVRDRIScreenExtensions();
++   *piMaxGLES2Version = PVRDRIAPIVersion(PVRDRI_API_GLES2,
++                                         PVRDRI_API_SUB_NONE,
++                                         psPVRScreen->psImpl);
 +
-+	psPVRScreen->psImpl = PVRDRICreateScreenImpl(psDRIScreen->fd);
-+	if (psPVRScreen->psImpl == NULL)
-+	{
-+		goto ErrorScreenFree;
-+	}
++   *pppsConfigs = ppsConfigs;
 +
-+	if (!PVRDRIGetSupportedFormats(psPVRScreen))
-+	{
-+		goto ErrorScreenImplDeinit;
-+	}
-+
-+	psDRIScreen->max_gl_es1_version =
-+				PVRDRIAPIVersion(PVRDRI_API_GLES1,
-+					         PVRDRI_API_SUB_NONE,
-+					         psPVRScreen->psImpl);
-+
-+	psDRIScreen->max_gl_es2_version =
-+				PVRDRIAPIVersion(PVRDRI_API_GLES2,
-+					         PVRDRI_API_SUB_NONE,
-+					         psPVRScreen->psImpl);
-+
-+	configs = PVRDRICreateConfigs();
-+	if (configs == NULL)
-+	{
-+		__driUtilMessage("%s: No framebuffer configs", __func__);
-+		goto ErrorDestroyFormatInfo;
-+	}
-+
-+	PVRScreenPrintExtensions(psDRIScreen);
-+
-+	return configs;
++   return psPVRScreen;
 +
 +ErrorDestroyFormatInfo:
-+	PVRDRIDestroyFormatInfo(psPVRScreen);
++   PVRDRIDestroyFormatInfo(psPVRScreen);
 +
 +ErrorScreenImplDeinit:
-+	PVRDRIDestroyScreenImpl(psPVRScreen->psImpl);
++   PVRDRIDestroyScreenImpl(psPVRScreen->psImpl);
 +
 +ErrorScreenFree:
-+	free(psPVRScreen);
++   PVRDRIFreeMesaFormats(psPVRScreen);
 +
-+ErrorCompatDeinit:
-+	PVRDRICompatDeinit();
++   free(psPVRScreen);
 +
-+	return NULL;
++   return NULL;
 +}
 +
-+static void PVRDRIDestroyScreen(__DRIscreen *psDRIScreen)
++void
++DRIMODDestroyScreen(struct DRISUPScreen *psPVRScreen)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
-+
-+#if defined(DEBUG)
-+	if (psPVRScreen->iBufferAlloc != 0 || psPVRScreen->iDrawableAlloc != 0 || psPVRScreen->iContextAlloc != 0)
-+	{
-+		errorMessage("%s: Outstanding allocations: Contexts: %d Drawables: %d Buffers: %d.",
-+						 __func__,
-+						 psPVRScreen->iContextAlloc,
-+						 psPVRScreen->iDrawableAlloc,
-+						 psPVRScreen->iBufferAlloc);
-+
-+		if (psPVRScreen->iRefCount > 1)
-+		{
-+			errorMessage("%s: PVRDRIScreen resources will not be freed until its %d references are removed.",
-+							 __func__,
-+							 psPVRScreen->iRefCount - 1);
-+		}
-+	}
-+#endif
-+
-+	PVRDRIScreenRemoveReference(psPVRScreen);
-+
-+	PVRDRICompatDeinit();
++   PVRDRIDestroyFormatInfo(psPVRScreen);
++   PVRDRIDestroyScreenImpl(psPVRScreen->psImpl);
++   PVRDRIFreeMesaFormats(psPVRScreen);
++   free(psPVRScreen);
 +}
 +
-+static int PVRDRIScreenSupportedAPIs(PVRDRIScreen *psPVRScreen)
++unsigned int
++DRIMODCreateContext(PVRDRIAPIType eAPI, PVRDRIConfig *psPVRDRIConfig,
++                    struct PVRDRIContextConfig *psCtxConfig,
++                    struct __DRIcontextRec *psDRIContext,
++                    struct DRISUPContext *psPVRSharedContext,
++                    struct DRISUPScreen *psPVRScreen,
++                    struct DRISUPContext **ppsPVRContext)
 +{
-+	unsigned api_mask = psPVRScreen->psDRIScreen->api_mask;
-+	int supported = 0;
++   struct DRISUPContext *psPVRContext;
++   PVRDRIContextImpl *psSharedImpl;
++   bool bNotifyReset;
++   unsigned int uError;
 +
-+	if ((api_mask & (1 << __DRI_API_GLES)) != 0)
-+	{
-+		supported |= PVRDRI_API_BIT_GLES;
-+	}
++   psSharedImpl = psPVRSharedContext ? psPVRSharedContext->psImpl : NULL,
++      psPVRContext = calloc(1, sizeof(*psPVRContext));
++   if (psPVRContext == NULL) {
++      __driUtilMessage("%s: Couldn't allocate PVRDRIContext", __func__);
++      return PVRDRI_CONTEXT_ERROR_NO_MEMORY;
++   }
 +
-+	if ((api_mask & (1 << __DRI_API_GLES2)) != 0)
-+	{
-+		supported |= PVRDRI_API_BIT_GLES2;
-+	}
++   psPVRContext->psDRIContext = psDRIContext;
++   psPVRContext->psPVRScreen = psPVRScreen;
 +
-+	if ((api_mask & (1 << __DRI_API_GLES3)) != 0)
-+	{
-+		supported |= PVRDRI_API_BIT_GLES3;
-+	}
++   switch (eAPI) {
++   case PVRDRI_API_GLES1:
++   case PVRDRI_API_GLES2:
++      break;
++   default:
++      __driUtilMessage("%s: Unsupported API: %d", __func__, (int) eAPI);
++      uError = PVRDRI_CONTEXT_ERROR_BAD_API;
++      goto ErrorContextFree;
++   }
++   psPVRContext->eAPI = eAPI;
 +
-+	return supported;
-+}
++   switch (psCtxConfig->iResetStrategy) {
++   case PVRDRI_CONTEXT_RESET_NO_NOTIFICATION:
++      bNotifyReset = false;
++      break;
++   case PVRDRI_CONTEXT_RESET_LOSE_CONTEXT:
++      bNotifyReset = true;
++      break;
++   default:
++      __driUtilMessage("%s: Unsupported reset strategy: %d",
++                       __func__, psCtxConfig->iResetStrategy);
++      uError = PVRDRI_CONTEXT_ERROR_UNKNOWN_ATTRIBUTE;
++      goto ErrorContextFree;
++   }
 +
-+static GLboolean PVRDRICreateContext(gl_api eMesaAPI,
-+                                     const struct gl_config *psGLMode,
-+                                     __DRIcontext *psDRIContext,
-+                                     const struct __DriverContextConfig *psCtxConfig,
-+                                     unsigned *puError,
-+                                     void *pvSharedContextPrivate)
-+{
-+	__DRIscreen *psDRIScreen = psDRIContext->driScreenPriv;
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
-+	PVRDRIContext *psPVRContext;
-+	PVRDRIAPISubType eAPISub = PVRDRI_API_SUB_NONE;
-+	bool notify_reset = false;
-+	unsigned uPriority = PVRDRI_CONTEXT_PRIORITY_MEDIUM;
-+	bool bResult;
++   switch (psCtxConfig->iReleaseBehavior) {
++   case PVRDRI_CONTEXT_RELEASE_BEHAVIOR_NONE:
++      psPVRContext->bMakeUncurrentNoFlush = true;
++      break;
++   case PVRDRI_CONTEXT_RELEASE_BEHAVIOR_FLUSH:
++      psPVRContext->bMakeUncurrentNoFlush = false;
++      break;
++   default:
++      __driUtilMessage("%s: Unsupported release behaviour: %d",
++                       __func__, psCtxConfig->iReleaseBehavior);
++      uError = PVRDRI_CONTEXT_ERROR_UNKNOWN_ATTRIBUTE;
++      goto ErrorContextFree;
++   }
 +
-+	psPVRContext = calloc(1, sizeof(*psPVRContext));
-+	if (psPVRContext == NULL)
-+	{
-+		__driUtilMessage("%s: Couldn't allocate PVRDRIContext",
-+				 __func__);
-+		*puError = __DRI_CTX_ERROR_NO_MEMORY;
-+		return GL_FALSE;
-+	}
++   uError = PVRDRICreateContextV1(psPVRScreen->psImpl, psSharedImpl,
++                                  psPVRDRIConfig, psPVRContext->eAPI,
++                                  PVRDRI_API_SUB_NONE,
++                                  psCtxConfig->uMajorVersion,
++                                  psCtxConfig->uMinorVersion,
++                                  psCtxConfig->uFlags, bNotifyReset,
++                                  psCtxConfig->uPriority,
++                                  &psPVRContext->psImpl);
++   if (uError != PVRDRI_CONTEXT_ERROR_SUCCESS)
++      goto ErrorContextFree;
 +
-+	psPVRContext->psDRIContext = psDRIContext;
-+	psPVRContext->psPVRScreen = psPVRScreen;
++   *ppsPVRContext = psPVRContext;
 +
-+	if (psGLMode)
-+	{
-+		psPVRContext->sConfig.sGLMode = *psGLMode;
-+	}
++   return uError;
 +
-+	switch (eMesaAPI)
-+	{
-+		case API_OPENGLES:
-+			psPVRContext->eAPI = PVRDRI_API_GLES1;
-+			break;
-+		case API_OPENGLES2:
-+			psPVRContext->eAPI = PVRDRI_API_GLES2;
-+			break;
-+		default:
-+			__driUtilMessage("%s: Unsupported API: %d",
-+					 __func__,
-+					 (int)eMesaAPI);
-+			goto ErrorContextFree;
-+	}
-+
-+	if (psCtxConfig->attribute_mask & __DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY)
-+	{
-+		switch (psCtxConfig->reset_strategy)
-+		{
-+			case __DRI_CTX_RESET_LOSE_CONTEXT:
-+				notify_reset = true;
-+				break;
-+			default:
-+				__driUtilMessage("%s: Unsupported reset strategy: %d",
-+						 __func__,
-+						 (int)psCtxConfig->reset_strategy);
-+				goto ErrorContextFree;
-+		}
-+	}
-+
-+	if (psCtxConfig->attribute_mask & __DRIVER_CONTEXT_ATTRIB_PRIORITY)
-+	{
-+		uPriority = psCtxConfig->priority;
-+	}
-+
-+	*puError = PVRDRISupportCreateContext(psPVRScreen->psImpl,
-+					      getSharedContextImpl(pvSharedContextPrivate),
-+					      &psPVRContext->sConfig,
-+					      psPVRContext->eAPI,
-+					      eAPISub,
-+                                              psCtxConfig->major_version,
-+                                              psCtxConfig->minor_version,
-+                                              psCtxConfig->flags,
-+					      notify_reset,
-+					      uPriority,
-+					      &psPVRContext->psImpl);
-+	if (*puError != __DRI_CTX_ERROR_SUCCESS)
-+	{
-+		goto ErrorContextFree;
-+	}
-+
-+	/*
-+	 * The dispatch table must be created after the context, because
-+	 * PVRDRIContextCreate loads the API library, and we need the
-+	 * library handle to populate the dispatch table.
-+	 */
-+	bResult = pvrdri_create_dispatch_table(psPVRScreen, psPVRContext->eAPI);
-+
-+	if (!bResult)
-+	{
-+		__driUtilMessage("%s: Couldn't create dispatch table",
-+				 __func__);
-+		*puError = __DRI_CTX_ERROR_BAD_API;
-+		goto ErrorContextDestroy;
-+	}
-+
-+#if defined(DEBUG)
-+	p_atomic_inc(&psPVRScreen->iContextAlloc);
-+#endif
-+
-+	psDRIContext->driverPrivate = (void *)psPVRContext;
-+	PVRDRIScreenAddReference(psPVRScreen);
-+
-+	*puError = __DRI_CTX_ERROR_SUCCESS;
-+
-+	return GL_TRUE;
-+
-+ErrorContextDestroy:
-+	PVRDRIDestroyContextImpl(psPVRContext->psImpl,
-+				 psPVRContext->eAPI,
-+				 psPVRScreen->psImpl);
 +ErrorContextFree:
-+	free(psPVRContext);
++   free(psPVRContext);
 +
-+	return GL_FALSE;
++   return uError;
 +}
 +
-+static void PVRDRIDestroyContext(__DRIcontext *psDRIContext)
++void
++DRIMODDestroyContext(struct DRISUPContext *psPVRContext)
 +{
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
-+	PVRDRIScreen *psPVRScreen = psPVRContext->psPVRScreen;
++   struct DRISUPScreen *psPVRScreen = psPVRContext->psPVRScreen;
 +
-+	PVRContextUnbind(psPVRContext, false, false);
-+
-+	PVRDRIDestroyContextImpl(psPVRContext->psImpl,
-+				 psPVRContext->eAPI,
-+				 psPVRScreen->psImpl);
-+
-+	free(psPVRContext);
-+
-+#if defined(DEBUG)
-+	p_atomic_dec(&psPVRScreen->iContextAlloc);
-+#endif
-+
-+	PVRDRIScreenRemoveReference(psPVRScreen);
++   PVRContextUnbind(psPVRContext, false, false);
++   PVRDRIDestroyContextImpl(psPVRContext->psImpl, psPVRContext->eAPI,
++                            psPVRScreen->psImpl);
++   free(psPVRContext);
 +}
 +
-+IMG_PIXFMT PVRDRIGetPixelFormat(const struct gl_config *psGLMode)
++static IMG_PIXFMT
++PVRDRIGetPixelFormat(PVRDRIConfig *psPVRDRIConfig)
 +{
-+	switch (psGLMode->rgbBits)
-+	{
-+		case 32:
-+		case 24:
-+			if (psGLMode->redMask   == 0x00FF0000 &&
-+			    psGLMode->greenMask == 0x0000FF00 &&
-+			    psGLMode->blueMask  == 0x000000FF)
-+			{
-+				if (psGLMode->alphaMask == 0xFF000000)
-+				{
-+					return IMG_PIXFMT_B8G8R8A8_UNORM;
-+				}
-+				else if (psGLMode->alphaMask == 0)
-+				{
-+					return IMG_PIXFMT_B8G8R8X8_UNORM;
-+				}
-+			}
++   unsigned int uRGBBits;
++   unsigned int uRedMask, uGreenMask, uBlueMask, uAlphaMask;
++   unsigned int uSRGBCapable;
++   bool bRes;
 +
-+			if (psGLMode->redMask   == 0x000000FF &&
-+			    psGLMode->greenMask == 0x0000FF00 &&
-+			    psGLMode->blueMask  == 0x00FF0000)
-+			{
-+				if (psGLMode->alphaMask == 0xFF000000)
-+				{
-+					return IMG_PIXFMT_R8G8B8A8_UNORM;
-+				}
-+				else if (psGLMode->alphaMask == 0)
-+				{
-+					return IMG_PIXFMT_R8G8B8X8_UNORM;
-+				}
-+			}
++   bRes = MODSUPConfigQuery(psPVRDRIConfig,
++                            PVRDRI_CONFIG_ATTRIB_RGB_BITS, &uRGBBits);
 +
-+			__driUtilMessage("%s: Unsupported buffer format", __func__);
-+			return IMG_PIXFMT_UNKNOWN;
++   bRes &= MODSUPConfigQuery(psPVRDRIConfig,
++                             PVRDRI_CONFIG_ATTRIB_RED_MASK, &uRedMask);
 +
-+		case 16:
-+			if (psGLMode->redMask   == 0xF800 &&
-+			    psGLMode->greenMask == 0x07E0 &&
-+			    psGLMode->blueMask  == 0x001F)
-+			{
-+				return IMG_PIXFMT_B5G6R5_UNORM;
-+			}
++   bRes &= MODSUPConfigQuery(psPVRDRIConfig,
++                             PVRDRI_CONFIG_ATTRIB_GREEN_MASK,
++                             &uGreenMask);
 +
-+		default:
-+			errorMessage("%s: Unsupported screen format\n", __func__);
-+			return IMG_PIXFMT_UNKNOWN;
-+	}
++   bRes &= MODSUPConfigQuery(psPVRDRIConfig,
++                             PVRDRI_CONFIG_ATTRIB_BLUE_MASK, &uBlueMask);
++
++   bRes &= MODSUPConfigQuery(psPVRDRIConfig,
++                             PVRDRI_CONFIG_ATTRIB_ALPHA_MASK,
++                             &uAlphaMask);
++
++   bRes &= MODSUPConfigQuery(psPVRDRIConfig,
++                             PVRDRI_CONFIG_ATTRIB_SRGB_CAPABLE,
++                             &uSRGBCapable);
++
++   if (!bRes) {
++      __driUtilMessage("%s: Config query failed", __func__);
++      return IMG_PIXFMT_UNKNOWN;
++   }
++
++   switch (uRGBBits) {
++   case 32:
++   case 24:
++      if (uRedMask == 0x00FF0000 &&
++          uGreenMask == 0x0000FF00 && uBlueMask == 0x000000FF) {
++         if (uAlphaMask == 0xFF000000) {
++            if (uSRGBCapable)
++               return IMG_PIXFMT_B8G8R8A8_UNORM_SRGB;
++            else
++               return IMG_PIXFMT_B8G8R8A8_UNORM;
++         } else if (uAlphaMask == 0) {
++            return IMG_PIXFMT_B8G8R8X8_UNORM;
++         }
++      }
++
++      if (uRedMask == 0x000000FF &&
++          uGreenMask == 0x0000FF00 && uBlueMask == 0x00FF0000) {
++         if (uAlphaMask == 0xFF000000) {
++            if (uSRGBCapable)
++               return IMG_PIXFMT_R8G8B8A8_UNORM_SRGB;
++            else
++               return IMG_PIXFMT_R8G8B8A8_UNORM;
++         } else if (uAlphaMask == 0) {
++            return IMG_PIXFMT_R8G8B8X8_UNORM;
++         }
++      }
++
++      __driUtilMessage("%s: Unsupported format", __func__);
++
++      return IMG_PIXFMT_UNKNOWN;
++   case 16:
++      if (uRedMask == 0xF800 &&
++          uGreenMask == 0x07E0 && uBlueMask == 0x001F) {
++         return IMG_PIXFMT_B5G6R5_UNORM;
++      }
++
++      __driUtilMessage("%s: Unsupported format", __func__);
++
++      return IMG_PIXFMT_UNKNOWN;
++   default:
++      __driUtilMessage("%s: Unsupported format", __func__);
++
++      return IMG_PIXFMT_UNKNOWN;
++   }
 +}
 +
-+static GLboolean PVRDRICreateBuffer(__DRIscreen *psDRIScreen,
-+                                    __DRIdrawable *psDRIDrawable,
-+                                    const struct gl_config *psGLMode,
-+                                    GLboolean bIsPixmap)
++struct DRISUPDrawable *
++DRIMODCreateDrawable(struct __DRIdrawableRec *psDRIDrawable,
++                     struct DRISUPScreen *psPVRScreen, void *pvLoaderPrivate,
++                     PVRDRIConfig *psPVRDRIConfig)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
-+	PVRDRIDrawable *psPVRDrawable = NULL;
++   struct DRISUPDrawable *psPVRDrawable;
++   IMG_PIXFMT ePixelFormat;
++   unsigned int uDoubleBufferMode;
 +
-+	/* No known callers ever set this to true */
-+	if (bIsPixmap)
-+	{
-+		return GL_FALSE;
-+	}
++   psPVRDrawable = calloc(1, sizeof(*psPVRDrawable));
++   if (!psPVRDrawable) {
++      __driUtilMessage("%s: Couldn't allocate PVR drawable", __func__);
++      goto ErrorDrawableFree;
++   }
 +
-+	if (!psGLMode)
-+	{
-+		__driUtilMessage("%s: Invalid GL config", __func__);
-+		return GL_FALSE;
-+	}
++   psPVRDrawable->psDRIDrawable = psDRIDrawable;
++   psPVRDrawable->psPVRScreen = psPVRScreen;
++   psPVRDrawable->pvLoaderPrivate = pvLoaderPrivate;
++   psPVRDrawable->psConfig = psPVRDRIConfig;
 +
-+	psPVRDrawable = calloc(1, sizeof(*psPVRDrawable));
-+	if (!psPVRDrawable)
-+	{
-+		__driUtilMessage("%s: Couldn't allocate PVR drawable", __func__);
-+		goto ErrorDrawableFree;
-+	}
++   ePixelFormat = PVRDRIGetPixelFormat(psPVRDRIConfig);
++   if (ePixelFormat == IMG_PIXFMT_UNKNOWN) {
++      __driUtilMessage("%s: Couldn't determine IMG pixel format", __func__);
++      goto ErrorDrawableFree;
++   }
 +
-+	psDRIDrawable->driverPrivate = (void *)psPVRDrawable;
++   psPVRDrawable->psFormat =
++      PVRDRIIMGPixelFormatToImageFormat(psPVRScreen, ePixelFormat);
++   if (!psPVRDrawable->psFormat) {
++      __driUtilMessage("%s: Unsupported IMG pixel format (format = %u)",
++                       __func__, ePixelFormat);
++      return false;
++   }
 +
-+	psPVRDrawable->psDRIDrawable = psDRIDrawable;
-+	psPVRDrawable->psPVRScreen = psPVRScreen;
-+	psPVRDrawable->sConfig.sGLMode = *psGLMode;
-+	psPVRDrawable->sConfig.iSupportedAPIs =
-+		PVRDRIScreenSupportedAPIs(psPVRScreen);
++   if (!MODSUPConfigQuery(psPVRDRIConfig,
++                          PVRDRI_CONFIG_ATTRIB_DOUBLE_BUFFER_MODE,
++                          &uDoubleBufferMode)) {
++      __driUtilMessage("%s: Couldn't query double buffer mode", __func__);
++      goto ErrorDrawableFree;
++   }
++   psPVRDrawable->bDoubleBufferMode = (uDoubleBufferMode != 0);
 +
-+	psPVRDrawable->ePixelFormat = PVRDRIGetPixelFormat(psGLMode);
-+	if (psPVRDrawable->ePixelFormat == IMG_PIXFMT_UNKNOWN)
-+	{
-+		__driUtilMessage("%s: Couldn't work out pixel format", __func__);
-+		goto ErrorDrawableFree;
-+	}
++   /*
++    * We aren't told the type of the drawable so treat double buffered
++    * drawables as windows and single buffered drawables as pixmaps (although
++    * these could actually be pbuffers).
++    */
++   if (psPVRDrawable->bDoubleBufferMode)
++      psPVRDrawable->eType = PVRDRI_DRAWABLE_WINDOW;
++   else
++      psPVRDrawable->eType = PVRDRI_DRAWABLE_PIXMAP;
 +
-+	/*
-+	 * Mesa doesn't tell us the drawable type so treat double buffered
-+	 * drawables as windows (although GLX supports double buffered pbuffers)
-+	 * and single buffered drawables as pixmaps (although these could
-+	 * actually be pbuffers).
-+	 */
-+	if (psPVRDrawable->sConfig.sGLMode.doubleBufferMode)
-+	{
-+		psPVRDrawable->eType = PVRDRI_DRAWABLE_WINDOW;
-+	}
-+	else
-+	{
-+		psPVRDrawable->eType = PVRDRI_DRAWABLE_PIXMAP;
-+	}
++   psPVRDrawable->psImpl =
++      PVRDRICreateDrawableWithConfig((PVRDRIDrawable *) psPVRDrawable,
++                                     psPVRDRIConfig);
++   if (!psPVRDrawable->psImpl) {
++      __driUtilMessage("%s: Couldn't create PVR drawable", __func__);
++      goto ErrorDrawableFree;
++   }
 +
-+	psPVRDrawable->psImpl =
-+		PVRDRISupportCreateDrawable(psPVRDrawable,
-+					    &psPVRDrawable->sConfig);
-+	if (!psPVRDrawable->psImpl)
-+	{
-+		__driUtilMessage("%s: Couldn't allocate PVR drawable", __func__);
-+		goto ErrorDrawableFree;
-+	}
-+
-+	/* Initialisation is completed in MakeCurrent */
-+#if defined(DEBUG)
-+	p_atomic_inc(&psPVRScreen->iDrawableAlloc);
-+#endif
-+	PVRDRIScreenAddReference(psPVRScreen);
-+	return GL_TRUE;
++   return psPVRDrawable;
 +
 +ErrorDrawableFree:
-+	PVRDRIDestroyDrawableImpl(psPVRDrawable->psImpl);
-+	free(psPVRDrawable);
-+	psDRIDrawable->driverPrivate = NULL;
++   PVRDRIDestroyDrawableImpl(psPVRDrawable->psImpl);
++   free(psPVRDrawable);
 +
-+	return GL_FALSE;
++   return NULL;
 +}
 +
-+static void PVRDRIDestroyBuffer(__DRIdrawable *psDRIDrawable)
++void
++DRIMODDestroyDrawable(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	PVRDRIDrawable *psPVRDrawable = (PVRDRIDrawable *)psDRIDrawable->driverPrivate;
-+	PVRDRIScreen *psPVRScreen = psPVRDrawable->psPVRScreen;
-+
-+	PVRDrawableUnbindContext(psPVRDrawable);
-+
-+	PVRDRIDrawableDeinit(psPVRDrawable);
-+
-+	PVREGLDrawableDestroyConfig(psPVRDrawable->psImpl);
-+
-+	PVRDRIDestroyDrawableImpl(psPVRDrawable->psImpl);
-+
-+	free(psPVRDrawable);
-+
-+#if defined(DEBUG)
-+	p_atomic_dec(&psPVRScreen->iDrawableAlloc);
-+#endif
-+
-+	PVRDRIScreenRemoveReference(psPVRScreen);
++   PVRDrawableUnbindContext(psPVRDrawable);
++   PVRDRIDrawableDeinit(psPVRDrawable);
++   PVREGLDrawableDestroyConfig(psPVRDrawable->psImpl);
++   PVRDRIDestroyDrawableImpl(psPVRDrawable->psImpl);
++   free(psPVRDrawable);
 +}
 +
-+static GLboolean PVRDRIMakeCurrent(__DRIcontext *psDRIContext,
-+				   __DRIdrawable *psDRIWrite,
-+				   __DRIdrawable *psDRIRead)
++bool
++DRIMODMakeCurrent(struct DRISUPContext *psPVRContext,
++                  struct DRISUPDrawable *psPVRWrite,
++                  struct DRISUPDrawable *psPVRRead)
 +{
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
-+	PVRDRIDrawable *psPVRWrite = (psDRIWrite) ? (PVRDRIDrawable *)psDRIWrite->driverPrivate : NULL;
-+	PVRDRIDrawable *psPVRRead = (psDRIRead) ? (PVRDRIDrawable *)psDRIRead->driverPrivate : NULL;
-+	PVRDRIDrawable *psPVRDrawableOld = psPVRContext->psPVRDrawable;
++   struct DRISUPDrawable *psPVRDrawableOld = psPVRContext->psPVRDrawable;
 +
-+	if (psPVRWrite != NULL)
-+	{
-+		if (!PVRDRIDrawableInit(psPVRWrite))
-+		{
-+			__driUtilMessage("%s: Couldn't initialise write drawable",
-+					 __func__);
-+			goto ErrorUnlock;
-+		}
-+	}
++   if (psPVRWrite != NULL) {
++      if (!PVRDRIDrawableInit(psPVRWrite)) {
++         __driUtilMessage("%s: Couldn't initialise write drawable", __func__);
++         return false;
++      }
++   }
 +
-+	if (psPVRRead != NULL)
-+	{
-+		if (!PVRDRIDrawableInit(psPVRRead))
-+		{
-+			__driUtilMessage("%s: Couldn't initialise read drawable",
-+					 __func__);
-+			goto ErrorUnlock;
-+		}
-+	}
++   if (psPVRRead != NULL) {
++      if (!PVRDRIDrawableInit(psPVRRead)) {
++         __driUtilMessage("%s: Couldn't initialise read drawable", __func__);
++         return false;
++      }
++   }
 +
-+	if (!PVRDRIMakeCurrentGC(psPVRContext->eAPI,
-+	                         psPVRContext->psPVRScreen->psImpl,
-+	                         psPVRContext->psImpl,
-+	                         psPVRWrite == NULL ? NULL : psPVRWrite->psImpl,
-+	                         psPVRRead  == NULL ? NULL : psPVRRead->psImpl))
-+	{
-+		goto ErrorUnlock;
-+	}
++   if (!PVRDRIMakeCurrentGC(psPVRContext->eAPI,
++                            psPVRContext->psPVRScreen->psImpl,
++                            psPVRContext->psImpl,
++                            psPVRWrite == NULL ? NULL : psPVRWrite->psImpl,
++                            psPVRRead == NULL ? NULL : psPVRRead->psImpl))
++      return false;
 +
-+	if (psPVRDrawableOld != NULL)
-+	{
-+		psPVRDrawableOld->psPVRContext = NULL;
-+	}
++   if (psPVRDrawableOld != NULL)
++      psPVRDrawableOld->psPVRContext = NULL;
 +
++   if (psPVRWrite != NULL)
++      psPVRWrite->psPVRContext = psPVRContext;
 +
-+	if (psPVRWrite != NULL)
-+	{
-+		psPVRWrite->psPVRContext = psPVRContext;
-+	}
++   psPVRContext->psPVRDrawable = psPVRWrite;
 +
-+	psPVRContext->psPVRDrawable = psPVRWrite;
++   DRIMODThreadSetCurrentScreen(psPVRContext->psPVRScreen);
 +
-+	pvrdri_set_dispatch_table(psPVRContext);
-+
-+	PVRDRIThreadSetCurrentScreen(psPVRContext->psPVRScreen);
-+
-+	return GL_TRUE;
-+
-+ErrorUnlock:
-+	return GL_FALSE;
++   return true;
 +}
 +
-+static GLboolean PVRDRIUnbindContext(__DRIcontext *psDRIContext)
++bool
++DRIMODUnbindContext(struct DRISUPContext *psPVRContext)
 +{
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
++   PVRContextUnbind(psPVRContext, true, false);
++   DRIMODThreadSetCurrentScreen(NULL);
 +
-+	pvrdri_set_null_dispatch_table();
-+
-+	PVRContextUnbind(psPVRContext, true, false);
-+	PVRDRIThreadSetCurrentScreen(NULL);
-+
-+	return GL_TRUE;
++   return true;
 +}
 +
-+static __DRIbuffer *PVRDRIAllocateBuffer(__DRIscreen *psDRIScreen,
-+					 unsigned int uAttachment,
-+					 unsigned int uFormat,
-+					 int iWidth,
-+					 int iHeight)
++struct DRISUPBuffer *
++DRIMODAllocateBuffer(struct DRISUPScreen *psPVRScreen,
++                     unsigned int uAttachment, unsigned int uFormat,
++                     int iWidth, int iHeight, unsigned int *puName,
++                     unsigned int *puPitch, unsigned int *puCPP,
++                     unsigned int *puFlags)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
-+	PVRBuffer *psBuffer;
-+	unsigned int uiBpp;
++   PVRDRIBufferImpl *psPVRBufferImpl;
++   unsigned int uBPP;
++   unsigned int uPitch;
 +
-+	/* GEM names are only supported on primary nodes */
-+	if (drmGetNodeTypeFromFd(psDRIScreen->fd) != DRM_NODE_PRIMARY)
-+	{
-+		__driUtilMessage("%s: Cannot allocate buffer", __func__);
-+		return NULL;
-+	}
++   (void) uAttachment;
 +
-+	/* This is based upon PVRDRIGetPixelFormat */
-+	switch (uFormat)
-+	{
-+		case 32:
-+		case 16:
-+			/* Format (depth) and bpp match */
-+			uiBpp = uFormat;
-+			break;
-+		case 24:
-+			uiBpp = 32;
-+			break;
-+		default:
-+			__driUtilMessage("%s: Unsupported format '%u'",
-+					 __func__, uFormat);
-+			return NULL;
-+	}
++   /* GEM names are only supported on primary nodes */
++   if (drmGetNodeTypeFromFd(psPVRScreen->iFD) != DRM_NODE_PRIMARY) {
++      __driUtilMessage("%s: Cannot allocate buffer", __func__);
++      return NULL;
++   }
 +
-+	psBuffer = calloc(1, sizeof(*psBuffer));
-+	if (psBuffer == NULL)
-+	{
-+		__driUtilMessage("%s: Failed to allocate buffer", __func__);
-+		return NULL;
-+	}
++   /* This is based upon PVRDRIGetPixelFormat */
++   switch (uFormat) {
++   case 32:
++   case 16:
++      /* Format (depth) and bpp match */
++      uBPP = uFormat;
++      break;
++   case 24:
++      uBPP = 32;
++      break;
++   default:
++      __driUtilMessage("%s: Unsupported format '%u'", __func__, uFormat);
++      return NULL;
++   }
 +
-+	psBuffer->psImpl = PVRDRIBufferCreate(psPVRScreen->psImpl,
-+					      iWidth,
-+					      iHeight,
-+					      uiBpp,
-+					      PVDRI_BUFFER_USE_SHARE,
-+					      &psBuffer->sDRIBuffer.pitch);
-+	if (!psBuffer->psImpl)
-+	{
-+		__driUtilMessage("%s: Failed to create backing buffer",
-+				 __func__);
-+		goto ErrorFreeDRIBuffer;
-+	}
++   psPVRBufferImpl = PVRDRIBufferCreate(psPVRScreen->psImpl, iWidth, iHeight,
++                                        uBPP, PVDRI_BUFFER_USE_SHARE, &uPitch);
++   if (!psPVRBufferImpl) {
++      __driUtilMessage("%s: Failed to create backing buffer", __func__);
++      return NULL;
++   }
 +
-+	psBuffer->sDRIBuffer.attachment = uAttachment;
-+	psBuffer->sDRIBuffer.name = PVRDRIBufferGetName(psBuffer->psImpl);
-+	psBuffer->sDRIBuffer.cpp = uiBpp / 8;
++   *puName = PVRDRIBufferGetName(psPVRBufferImpl);
++   *puPitch = uPitch;
++   *puCPP = uBPP / 8;
++   *puFlags = 0;
 +
-+#if defined(DEBUG)
-+	p_atomic_inc(&psPVRScreen->iBufferAlloc);
-+#endif
-+
-+	return &psBuffer->sDRIBuffer;
-+
-+ErrorFreeDRIBuffer:
-+	free(psBuffer);
-+
-+	return NULL;
++   return (struct DRISUPBuffer *) psPVRBufferImpl;
 +}
 +
-+static void PVRDRIReleaseBuffer(__DRIscreen *psDRIScreen,
-+				__DRIbuffer *psDRIBuffer)
++void
++DRIMODReleaseBuffer(struct DRISUPScreen *psPVRScreen,
++                    struct DRISUPBuffer *psPVRBuffer)
 +{
-+	PVRBuffer *psBuffer = (PVRBuffer *)psDRIBuffer;
-+#if defined(DEBUG)
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
-+#endif
++   PVRDRIBufferImpl *psPVRBufferImpl = (PVRDRIBufferImpl *) psPVRBuffer;
 +
-+	(void)psDRIScreen;
++   (void) psPVRScreen;
 +
-+	PVRDRIBufferDestroy(psBuffer->psImpl);
-+	free(psBuffer);
-+
-+#if defined(DEBUG)
-+	p_atomic_dec(&psPVRScreen->iBufferAlloc);
-+#endif
++   PVRDRIBufferDestroy(psPVRBufferImpl);
 +}
 +
-+/* Publish our driver implementation to the world. */
-+static const struct __DriverAPIRec pvr_driver_api =
-+{
-+	.InitScreen     = PVRDRIInitScreen,
-+	.DestroyScreen  = PVRDRIDestroyScreen,
-+	.CreateContext  = PVRDRICreateContext,
-+	.DestroyContext = PVRDRIDestroyContext,
-+	.CreateBuffer   = PVRDRICreateBuffer,
-+	.DestroyBuffer  = PVRDRIDestroyBuffer,
-+	.SwapBuffers    = NULL,
-+	.MakeCurrent    = PVRDRIMakeCurrent,
-+	.UnbindContext  = PVRDRIUnbindContext,
-+	.AllocateBuffer = PVRDRIAllocateBuffer,
-+	.ReleaseBuffer  = PVRDRIReleaseBuffer,
-+};
-+
-+static const struct __DRIDriverVtableExtensionRec pvr_vtable = {
-+   .base = { __DRI_DRIVER_VTABLE, 1 },
-+   .vtable = &pvr_driver_api,
-+};
-+
-+static const __DRIextension *pvr_driver_extensions[] = {
-+    &driCoreExtension.base,
-+    &driImageDriverExtension.base,
-+    &driDRI2Extension.base,
-+    &pvr_vtable.base,
-+    NULL
-+};
-+
-+const __DRIextension **__driDriverGetExtensions_pvr(void);
-+PUBLIC const __DRIextension **__driDriverGetExtensions_pvr(void)
-+{
-+   globalDriverAPI = &pvr_driver_api;
-+
-+   return pvr_driver_extensions;
-+}
-+
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + Global functions
-+*/ /**************************************************************************/
++ *//**************************************************************************/
 +
-+void PVRDRIThreadSetCurrentScreen(PVRDRIScreen *psPVRScreen)
++void
++DRIMODThreadSetCurrentScreen(struct DRISUPScreen *psPVRScreen)
 +{
-+	gpsPVRScreen = psPVRScreen;
++   gpsPVRScreen = psPVRScreen;
 +}
 +
-+PVRDRIScreen *PVRDRIThreadGetCurrentScreen(void)
++struct DRISUPScreen *
++DRIMODThreadGetCurrentScreen(void)
 +{
-+	return gpsPVRScreen;
++   return gpsPVRScreen;
 +}
-diff --git a/src/mesa/drivers/dri/pvr/pvrdri.h b/src/mesa/drivers/dri/pvr/pvrdri.h
+diff --git a/src/mesa/drivers/dri/pvr/pvrdri_mod.h b/src/mesa/drivers/dri/pvr/pvrdri_mod.h
 new file mode 100644
-index 00000000000..50d930a59c2
+index 00000000000..e46b7b083e1
 --- /dev/null
-+++ b/src/mesa/drivers/dri/pvr/pvrdri.h
-@@ -0,0 +1,388 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
++++ b/src/mesa/drivers/dri/pvr/pvrdri_mod.h
+@@ -0,0 +1,450 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -4832,376 +5895,881 @@
 + * THE SOFTWARE.
 + */
 +
-+#if !defined(__PVRDRI2_H__)
-+#define __PVRDRI2_H__
++#if !defined(__PVRDRI_MOD_H__)
++#define __PVRDRI_MOD_H__
++
++#include <stdint.h>
 +#include <stdbool.h>
 +
-+#include <glapi/glapi.h>
-+
-+#include "main/mtypes.h"
-+#include "GL/internal/dri_interface.h"
-+
-+#include "util/macros.h"
-+
-+#include "dri_support.h"
++#include "pvrdri.h"
 +
 +/* This should match EGL_MAX_PLANES */
 +#define DRI_PLANES_MAX 3
 +
-+#define	DRI2_BUFFERS_MAX (3)
++#define DRI2_BUFFERS_MAX 3
 +
-+#define	DRIScreenPrivate(pScreen)	((pScreen)->driverPrivate)
++struct PVRDRIModifiers {
++   /* Number of modifiers for a given format */
++   int iNumModifiers;
 +
-+struct PVRDRIConfigRec
-+{
-+	struct gl_config sGLMode;
-+	int iSupportedAPIs;
-+};
++   /* Array of modifiers */
++   uint64_t *puModifiers;
 +
-+struct PVRDRIModifiers
-+{
-+	/* Number of modifiers for a given format */
-+	int         iNumModifiers;
-+	/* Array of modifiers */
-+	uint64_t    *puModifiers;
-+	/*
-+	 * Array of booleans that indicates which modifiers in the above array
-+	 * can only be used for EGL Image External (and so not for scanout).
-+	 */
-+	unsigned    *puExternalOnly;
++   /*
++    * Array of booleans that indicates which modifiers in the above array can
++    * only be used for EGL Image External (and so not for scanout).
++    */
++   unsigned int *puExternalOnly;
 +};
 +
 +/** Our PVR related screen data */
-+typedef struct PVRDRIScreen_TAG
-+{
-+	/* DRI screen structure pointer */
-+	__DRIscreen        *psDRIScreen;
-+	/* X Server sends invalidate events */
-+	bool                bUseInvalidate;
-+	/* Reference count */
-+	int iRefCount;
++struct DRISUPScreen {
++   /* DRI screen structure pointer */
++   struct __DRIscreenRec *psDRIScreen;
 +
-+#if defined(DEBUG)
-+	/* Counters of outstanding allocations */
-+	int iContextAlloc, iDrawableAlloc, iBufferAlloc;
-+#endif
++   /* Use invalidate events */
++   bool bUseInvalidate;
 +
-+	/* PVR OGLES 1 dispatch table */
-+	struct _glapi_table *psOGLES1Dispatch;
-+	/* PVR OGLES 2/3 dispatch table */
-+	struct _glapi_table *psOGLES2Dispatch;
++   int iFD;
 +
-+	PVRDRIScreenImpl    *psImpl;
++   void *pvLoaderPrivate;
 +
-+	/*
-+	 * Number of supported formats:
-+	 * -1 -> couldn't be queried (pvr_dri_support too old)
-+	 *  0 -> uninitialised or initialisation failed
-+	 */
-+	int                 iNumFormats;
-+	/* Indicates which entries in the image format array are supported */
-+	bool                *pbHasFormat;
-+	/* Array of modifiers for each image format array entry */
-+	struct PVRDRIModifiers *psModifiers;
-+} PVRDRIScreen;
++   PVRDRIScreenImpl *psImpl;
++
++   /*
++    * Number of supported formats:
++    * -1 -> couldn't be queried (pvr_dri_support too old)
++    *  0 -> uninitialised or initialisation failed
++    */
++   int iNumFormats;
++
++   /* Indicates which entries in the image format array are supported */
++   bool *pbHasFormat;
++
++   /* Array of modifiers for each image format array entry */
++   struct PVRDRIModifiers *psModifiers;
++
++   /* Supported Mesa formats */
++   unsigned int *puMesaFormats;
++   unsigned int uNumMesaFormats;
++};
 +
 +/** Our PVR related context data */
-+typedef struct PVRDRIContext_TAG
-+{
-+	/* Pointer to DRI context */
-+	__DRIcontext              *psDRIContext;
-+	/* Pointer to PVRDRIScreen structure */
-+	PVRDRIScreen              *psPVRScreen;
++struct DRISUPContext {
++   /* Pointer to DRI context */
++   struct __DRIcontextRec *psDRIContext;
 +
-+	PVRDRIConfig               sConfig;
++   /* Pointer to PVRDRIScreen structure */
++   struct DRISUPScreen *psPVRScreen;
 +
-+	/* Pointer to currently bound drawable */
-+	struct PVRDRIDrawable_TAG *psPVRDrawable;
++   /* Pointer to currently bound drawable */
++   struct DRISUPDrawable *psPVRDrawable;
 +
-+	/* API */
-+	PVRDRIAPIType             eAPI;
++   /* API */
++   PVRDRIAPIType eAPI;
 +
-+	PVRDRIContextImpl         *psImpl;
-+} PVRDRIContext;
++   PVRDRIContextImpl *psImpl;
 +
-+/** Our PVR related drawable data */
-+typedef struct PVRDRIDrawable_TAG
-+{
-+	/** Ptr to PVR screen, that spawned this drawable */
-+	PVRDRIScreen       *psPVRScreen;
++   /* Don't flush when the context is made uncurrent */
++   bool bMakeUncurrentNoFlush;
++};
 +
-+	/** DRI drawable data */
-+	__DRIdrawable      *psDRIDrawable;
++typedef struct PVRDRIImageFormat_TAG {
++   /*
++    * IMG pixel format for the entire/overall image, e.g.
++    * IMG_PIXFMT_B8G8R8A8_UNORM or IMG_PIXFMT_YUV420_2PLANE.
++    */
++   IMG_PIXFMT eIMGPixelFormat;
 +
-+	PVRDRIDrawableType  eType;
++   /*
++    * DRI fourcc for the entire/overall image (defined by dri_interface.h),
++    * e.g. __DRI_IMAGE_FOURCC_ARGB8888 or __DRI_IMAGE_FOURCC_NV12.
++    */
++   int iDRIFourCC;
 +
-+	PVRDRIConfig        sConfig;
++   /*
++    * DRI components for the entire/overall image (defined by
++    * dri_interface.h), e.g. __DRI_IMAGE_COMPONENTS_RGBA or
++    * __DRI_IMAGE_COMPONENTS_Y_UV.
++    *
++    * This specifies the image components and their groupings, in terms of
++    * sub-images/planes, but not the order in which they appear.
++    *
++    * For example:
++    * - any combination of BGRA channels would correspond to
++    *   __DRI_IMAGE_COMPONENTS_RGBA
++    * - any combination of BGR or BGRX would correspond to
++    *   __DRI_IMAGE_COMPONENTS_RGB
++    * - any combination of YUV with 2 planes would correspond to
++    *   __DRI_IMAGE_COMPONENTS_Y_UV
++    */
++   int iDRIComponents;
 +
-+	/** Are surface/buffers created? */
-+	bool                bInitialised;
++   /*
++    * True if the format represents an sRGB colour space and false if it
++    * represents a linear one.
++    */
++   bool bIsSRGB;
 +
-+	/** Buffer stride */
-+	unsigned            uStride;
++   /* The number of sub-images/planes that make up the overall image */
++   unsigned int uiNumPlanes;
 +
-+	/* Number of bytes per pixel */
-+	unsigned int        uBytesPerPixel;
++   /* Per-plane information */
++   struct {
++      /* IMG pixel format for the plane */
++      IMG_PIXFMT eIMGPixelFormat;
 +
-+	/* Context bound to this drawable */
-+	PVRDRIContext       *psPVRContext;
++      /*
++       * This is the amount that the image width should be bit-shifted in
++       * order to give the plane width. This value can be determined from the
++       * YUV sub-sampling ratios and should either be 0 (full * width), 1
++       * (half width) or 2 (quarter width).
++       */
++      unsigned int uiWidthShift;
 +
-+	/* IMG Pixel format for this drawable */
-+	IMG_PIXFMT          ePixelFormat;
-+
-+	/* Indicates the drawable info is invalid */
-+	int                 iInfoInvalid;
-+
-+	/* Indicates the drawable is currently being updated */
-+	bool                bDrawableUpdating;
-+
-+	/* Indicates a flush is in progress */
-+	bool                bFlushInProgress;
-+
-+	__DRIimage *psDRI;
-+	__DRIimage *psImage;
-+
-+	__DRIimage *psDRIAccum;
-+	__DRIimage *psImageAccum;
-+
-+	PVRDRIDrawableImpl *psImpl;
-+} PVRDRIDrawable;
-+
-+typedef struct PVRDRIImageFormat_TAG
-+{
-+	/*
-+	 * IMG pixel format for the entire/overall image, e.g.
-+	 * IMG_PIXFMT_B8G8R8A8_UNORM or IMG_PIXFMT_YUV420_2PLANE.
-+	 */
-+	IMG_PIXFMT eIMGPixelFormat;
-+
-+	/*
-+	 * DRI fourcc for the entire/overall image (defined by dri_interface.h),
-+	 * e.g. __DRI_IMAGE_FOURCC_ARGB8888 or __DRI_IMAGE_FOURCC_NV12.
-+	 */
-+	int iDRIFourCC;
-+
-+	/*
-+	 * DRI format for the entire/overall image (defined by dri_interface.h),
-+	 * e.g. __DRI_IMAGE_FORMAT_ARGB8888. This isn't applicable for YUV
-+	 * formats and should be set to __DRI_IMAGE_FORMAT_NONE.
-+	 */
-+	int iDRIFormat;
-+
-+	/*
-+	 * DRI components for the entire/overall image (defined by
-+	 * dri_interface.h), e.g. __DRI_IMAGE_COMPONENTS_RGBA or
-+	 * __DRI_IMAGE_COMPONENTS_Y_UV.
-+	 *
-+	 * This specifies the image components and their groupings, in terms of
-+	 * sub-images/planes, but not the order in which they appear.
-+	 *
-+	 * For example:
-+	 * - any combination of BGRA channels would correspond to
-+	 *   __DRI_IMAGE_COMPONENTS_RGBA
-+	 * - any combination of BGR or BGRX would correspond to
-+	 *   __DRI_IMAGE_COMPONENTS_RGB
-+	 * - any combination of YUV with 2 planes would correspond to
-+	 *   __DRI_IMAGE_COMPONENTS_Y_UV
-+	 */
-+	int iDRIComponents;
-+
-+	/* The number of sub-images/planes that make up the overall image */
-+	unsigned uiNumPlanes;
-+
-+	/*
-+	 * Don't return the format when the queryDmaBufFormats DRI Image
-+	 * extension function is called. Some DRM formats map to multiple
-+	 * IMG formats. The query should return just one of them.
-+	 */
-+	bool bQueryDmaBufFormatsExclude;
-+
-+	/* Per-plane information */
-+	struct
-+	{
-+		/* IMG pixel format for the plane */
-+		IMG_PIXFMT eIMGPixelFormat;
-+
-+		/*
-+		 * This is the amount that the image width should be bit-shifted
-+		 * in order to give the plane width. This value can be determined
-+		 * from the YUV sub-sampling ratios and should either be 0 (full
-+		 * width), 1 (half width) or 2 (quarter width).
-+		 */
-+		unsigned int uiWidthShift;
-+
-+		/*
-+		 * This is the amount that the image height should be bit-shifted
-+		 * in order to give the plane height. This value can be determined
-+		 * from the YUV sub-sampling ratios and should either be 0 (full
-+		 * height) or 1 (half height).
-+		 */
-+		unsigned int uiHeightShift;
-+	} sPlanes[DRI_PLANES_MAX];
++      /*
++       * This is the amount that the image height should be bit-shifted in
++       * order to give the plane height. This value can be determined from the
++       * YUV sub-sampling ratios and should either be 0 (full * height) or 1
++       * (half height).
++       */
++      unsigned int uiHeightShift;
++   } sPlanes[DRI_PLANES_MAX];
 +} PVRDRIImageFormat;
 +
++/** Our PVR related drawable data */
++struct DRISUPDrawable {
++   /** Ptr to PVR screen, that spawned this drawable */
++   struct DRISUPScreen *psPVRScreen;
 +
-+/*************************************************************************/ /*!
-+ pvrdri.c
-+*/ /**************************************************************************/
++   /** DRI drawable data */
++   struct __DRIdrawableRec *psDRIDrawable;
 +
-+IMG_PIXFMT PVRDRIGetPixelFormat(const struct gl_config *psGLMode);
-+PVRDRIScreen *PVRDRIThreadGetCurrentScreen(void);
-+void PVRDRIThreadSetCurrentScreen(PVRDRIScreen *psPVRScreen);
++   void *pvLoaderPrivate;
 +
-+void PVRDRIFlushBuffersForSwap(PVRDRIContext *psPVRContext,
-+                               PVRDRIDrawable *psPVRDrawable);
++   bool bDoubleBufferMode;
++   PVRDRIDrawableType eType;
 +
++   PVRDRIConfig *psConfig;
 +
-+/*************************************************************************/ /*!
-+ pvrutil.c
-+*/ /**************************************************************************/
++   /** Are surface/buffers created? */
++   bool bInitialised;
 +
-+void PRINTFLIKE(1, 2) __driUtilMessage(const char *f, ...);
-+void PRINTFLIKE(1, 2) errorMessage(const char *f, ...);
++   /* Width and height */
++   uint32_t uWidth;
++   uint32_t uHeight;
 +
-+const __DRIconfig **PVRDRICreateConfigs(void);
++   /** Buffer stride */
++   unsigned int uStride;
 +
-+const PVRDRIImageFormat *PVRDRIFormatToImageFormat(PVRDRIScreen *psPVRScreen,
-+						   int iDRIFormat);
-+const PVRDRIImageFormat *PVRDRIFourCCToImageFormat(PVRDRIScreen *psPVRScreen,
-+						   int iDRIFourCC);
-+const PVRDRIImageFormat *PVRDRIIMGPixelFormatToImageFormat(PVRDRIScreen *psPVRScreen,
-+							   IMG_PIXFMT eIMGPixelFormat);
++   /* Number of bytes per pixel */
++   unsigned int uBytesPerPixel;
 +
++   /* Context bound to this drawable */
++   struct DRISUPContext *psPVRContext;
++
++   /* Format of this drawable */
++   const PVRDRIImageFormat *psFormat;
++
++   /* Indicates the drawable info is invalid */
++   int iInfoInvalid;
++
++   /* Indicates the drawable is currently being updated */
++   bool bDrawableUpdating;
++
++   /* Indicates a flush is in progress */
++   bool bFlushInProgress;
++
++   __DRIimage *psDRI;
++   __DRIimage *psImage;
++
++   __DRIimage *psDRIAccum;
++   __DRIimage *psImageAccum;
++
++   PVRDRIDrawableImpl *psImpl;
++};
++
++/*************************************************************************//*!
++ pvrdri_mod.c
++ *//**************************************************************************/
++
++struct DRISUPScreen *DRIMODThreadGetCurrentScreen(void);
++void DRIMODThreadSetCurrentScreen(struct DRISUPScreen *psPVRScreen);
++
++void PVRDRIFlushBuffersForSwap(struct DRISUPContext *psPVRContext,
++                               struct DRISUPDrawable *psPVRDrawable);
++
++/*************************************************************************//*!
++ pvrutil_mod.c
++ *//**************************************************************************/
++
++const struct __DRIconfigRec **PVRDRICreateConfigs(const struct DRISUPScreen
++                                                  *psPVRScreen);
++const PVRDRIImageFormat *PVRDRIFourCCToImageFormat(struct DRISUPScreen
++                                                   *psPVRScreen,
++                                                   int iDRIFourCC);
++const PVRDRIImageFormat *PVRDRIIMGPixelFormatToImageFormat(struct DRISUPScreen *psPVRScreen,
++                                                           IMG_PIXFMT eIMGPixelFormat);
 +IMG_YUV_COLORSPACE PVRDRIToIMGColourSpace(const PVRDRIImageFormat *psFormat,
-+					  enum __DRIYUVColorSpace eDRIColourSpace,
-+					  enum __DRISampleRange eDRISampleRange);
++                                          unsigned int uDRIColourSpace,
++                                          unsigned int uDRISampleRange);
 +IMG_YUV_CHROMA_INTERP PVRDRIChromaSittingToIMGInterp(const PVRDRIImageFormat *psFormat,
-+						     enum __DRIChromaSiting eChromaSitting);
++                                                     unsigned int uChromaSitting);
++bool PVRDRIGetSupportedFormats(struct DRISUPScreen *psPVRScreen);
++void PVRDRIDestroyFormatInfo(struct DRISUPScreen *psPVRScreen);
++bool PVRDRIValidateImageModifier(struct DRISUPScreen *psPVRScreen,
++                                 const int iFourCC, const uint64_t uiModifier);
++bool PVRDRIGetMesaFormats(struct DRISUPScreen *psPVRScreen);
++void PVRDRIFreeMesaFormats(struct DRISUPScreen *psPVRScreen);
 +
-+bool PVRDRIGetSupportedFormats(PVRDRIScreen *psPVRScreen);
++/*************************************************************************//*!
++ pvrdrawable_mod.c
++ *//**************************************************************************/
 +
-+GLboolean PVRDRIQueryDmaBufFormats(__DRIscreen *screen, int max,
-+				   int *formats, int *count);
++bool PVRDRIDrawableInit(struct DRISUPDrawable *psPVRDrawable);
++void PVRDRIDrawableDeinit(struct DRISUPDrawable *psPVRDrawable);
++bool PVRDRIDrawableQuery(const PVRDRIDrawable *psPVRDRIDrawable,
++                         PVRDRIBufferAttrib eBufferAttrib,
++                         uint32_t *uiValueOut);
++bool PVRDRIDrawableGetParametersV2(PVRDRIDrawable *psPVRDRIDrawable,
++                                   uint32_t uiFlags,
++                                   PVRDRIBufferImpl **ppsDstBuffer,
++                                   PVRDRIBufferImpl **ppsAccumBuffer);
 +
-+GLboolean PVRDRIQueryDmaBufModifiers(__DRIscreen *screen, int fourcc,
-+				     int max, uint64_t *modifiers,
-+				     unsigned int *external_only,
-+				     int *count);
-+
-+GLboolean PVRDRIQueryDmaBufFormatModifierAttribs(__DRIscreen *screen,
-+						 uint32_t fourcc,
-+						 uint64_t modifier,
-+						 int attrib,
-+						 uint64_t *value);
-+
-+void PVRDRIDestroyFormatInfo(PVRDRIScreen *psPVRScreen);
-+
-+/*************************************************************************/ /*!
-+ pvrdrawable.c
-+*/ /**************************************************************************/
-+
-+bool PVRDRIDrawableInit(PVRDRIDrawable *psPVRDrawable);
-+void PVRDRIDrawableDeinit(PVRDRIDrawable *psPVRDrawable);
-+
-+/* Callbacks into non-impl layer */
-+
-+/* Version 0 callbacks (deprecated) */
-+bool PVRDRIDrawableRecreateV0(PVRDRIDrawable *psPVRDrawable);
-+bool PVRDRIDrawableGetParametersV0(PVRDRIDrawable *psPVRDrawable,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer,
-+				   PVRDRIBufferAttribs *psAttribs,
-+				   bool *pbDoubleBuffered);
-+
-+/* Version 1 callbacks (deprecated) */
-+bool PVRDRIDrawableGetParametersV1(PVRDRIDrawable *psPVRDrawable,
-+				   bool bAllowRecreate,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer,
-+				   PVRDRIBufferAttribs *psAttribs,
-+				   bool *pbDoubleBuffered);
-+
-+/* Version 2 callbacks */
-+bool PVRDRIDrawableQuery(const PVRDRIDrawable *psPVRDrawable,
-+			 PVRDRIBufferAttrib eBufferAttrib,
-+			 uint32_t *uiValueOut);
-+bool PVRDRIDrawableGetParametersV2(PVRDRIDrawable *psPVRDrawable,
-+				   uint32_t uiFlags,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer);
-+
-+/*************************************************************************/ /*!
-+ pvrimage.c
-+*/ /**************************************************************************/
++/*************************************************************************//*!
++pvrimage_mod.c
++ *//**************************************************************************/
 +
 +__DRIimage *PVRDRIScreenGetDRIImage(void *hEGLImage);
-+void PVRDRIRefImage(__DRIimage *image);
-+void PVRDRIUnrefImage(__DRIimage *image);
++void PVRDRIRefImage(__DRIimage *psImage);
++void PVRDRIUnrefImage(__DRIimage *psImage);
++PVRDRIImageType PVRDRIImageGetSharedType(__DRIimage *psImage);
++PVRDRIBufferImpl *PVRDRIImageGetSharedBuffer(__DRIimage *psImage);
++IMGEGLImage *PVRDRIImageGetSharedEGLImage(__DRIimage *psImage);
++IMGEGLImage *PVRDRIImageGetEGLImage(__DRIimage *psImage);
 +
-+/* Callbacks into non-impl layer */
-+PVRDRIImageType PVRDRIImageGetSharedType(__DRIimage *image);
-+PVRDRIBufferImpl *PVRDRIImageGetSharedBuffer(__DRIimage *image);
-+IMGEGLImage *PVRDRIImageGetSharedEGLImage(__DRIimage *image);
-+IMGEGLImage *PVRDRIImageGetEGLImage(__DRIimage *image);
++/*************************************************************************//*!
++ Functions to implement PVRDRISupportInterfaceV2, for backwards compatibility
++ With DRI Support libraries that only provide PVRDRISupportInterface.
++ *//**************************************************************************/
 +
-+/*************************************************************************/ /*!
-+ pvrext.c
-+*/ /**************************************************************************/
++struct DRISUPScreen *DRIMODCreateScreen(struct __DRIscreenRec *psDRIScreen,
++                                        int iFD, bool bUseInvalidate,
++                                        void *pvLoaderPrivate,
++                                        const struct __DRIconfigRec ***pppsConfigs,
++                                        int *piMaxGLES1Version,
++                                        int *piMaxGLES2Version);
++void DRIMODDestroyScreen(struct DRISUPScreen *psDRISUPScreen);
 +
-+const __DRIextension **PVRDRIScreenExtensions(void);
-+const __DRIextension *PVRDRIScreenExtensionVersionInfo(void);
++unsigned int DRIMODCreateContext(PVRDRIAPIType eAPI,
++                                 PVRDRIConfig *psPVRDRIConfig,
++                                 struct PVRDRIContextConfig *psCtxConfig,
++                                 struct __DRIcontextRec *psDRIContext,
++                                 struct DRISUPContext *psDRISUPSharedContext,
++                                 struct DRISUPScreen *psDRISUPScreen,
++                                 struct DRISUPContext **ppsDRISUPContext);
++void DRIMODDestroyContext(struct DRISUPContext *psDRISUPContext);
 +
-+/*************************************************************************/ /*!
-+ pvrcompat.c
-+*/ /**************************************************************************/
++struct DRISUPDrawable *DRIMODCreateDrawable(struct __DRIdrawableRec *psDRIDrawable,
++                                            struct DRISUPScreen *psDRISUPScreen,
++                                            void *pvLoaderPrivate,
++                                            PVRDRIConfig *psPVRDRIConfig);
++void DRIMODDestroyDrawable(struct DRISUPDrawable *psDRISUPDrawable);
 +
-+bool PVRDRICompatInit(const PVRDRICallbacks *psCallbacks, unsigned uVersion);
-+void PVRDRICompatDeinit(void);
++bool DRIMODMakeCurrent(struct DRISUPContext *psDRISUPContext,
++                       struct DRISUPDrawable *psDRISUPWrite,
++                       struct DRISUPDrawable *psDRISUPRead);
++bool DRIMODUnbindContext(struct DRISUPContext *psDRISUPContext);
 +
-+bool PVRDRIRegisterSupportInterfaceV1(const PVRDRISupportInterface *psInterface,
-+				      unsigned uVersion);
++struct DRISUPBuffer *DRIMODAllocateBuffer(struct DRISUPScreen *psDRISUPScreen,
++                                          unsigned int uAttchment,
++                                          unsigned int uFormat,
++                                          int iWidth, int iHeight,
++                                          unsigned int *puName,
++                                          unsigned int *puPitch,
++                                          unsigned int *puCPP,
++                                          unsigned int *puFlags);
++void DRIMODReleaseBuffer(struct DRISUPScreen *psDRISUPScreen,
++                         struct DRISUPBuffer *psDRISUPBuffer);
++void DRIMODSetTexBuffer2(struct DRISUPContext *psDRISUPContext, int iTarget,
++                         int iFormat, struct DRISUPDrawable *psDRISUPDrawable);
++void DRIMODReleaseTexBuffer(struct DRISUPContext *psDRISUPContext,
++                            int iTarget,
++                            struct DRISUPDrawable *psDRISUPDrawable);
 +
-+unsigned PVRDRISupportCreateContext(PVRDRIScreenImpl *psScreenImpl,
-+				    PVRDRIContextImpl *psSharedContextImpl,
-+				    PVRDRIConfig *psConfig,
-+				    PVRDRIAPIType eAPI,
-+				    PVRDRIAPISubType eAPISub,
-+				    unsigned uMajorVersion,
-+				    unsigned uMinorVersion,
-+				    uint32_t uFlags,
-+				    bool bNotifyReset,
-+				    unsigned uPriority,
-+				    PVRDRIContextImpl **ppsContextImpl);
++void DRIMODFlush(struct DRISUPDrawable *psDRISUPDrawable);
++void DRIMODInvalidate(struct DRISUPDrawable *psDRISUPDrawable);
++void DRIMODFlushWithFlags(struct DRISUPContext *psDRISUPContext,
++                          struct DRISUPDrawable *psDRISUPDrawable,
++                          unsigned int uFlags, unsigned int uThrottleReason);
 +
-+PVRDRIDrawableImpl *PVRDRISupportCreateDrawable(PVRDRIDrawable *psPVRDrawable,
-+						PVRDRIConfig *psConfig);
++__DRIimage *DRIMODCreateImageFromName(struct DRISUPScreen *psDRISUPScreen,
++                                      int iWidth, int iHeight, int iFourCC,
++                                      int iName, int iPitch,
++                                      void *pvLoaderPrivate);
++__DRIimage *DRIMODCreateImageFromRenderbuffer(struct DRISUPContext *psDRISUPContext,
++                                              int iRenderBuffer,
++                                              void *pvLoaderPrivate);
++void DRIMODDestroyImage(__DRIimage *psImage);
++__DRIimage *DRIMODCreateImage(struct DRISUPScreen *psDRISUPScreen,
++                              int iWidth, int iHeight, int iFourCC,
++                              unsigned int uUse, void *pvLoaderPrivate);
++bool DRIMODQueryImage(__DRIimage *psImage, int iAttrib, int *iValue);
++__DRIimage *DRIMODDupImage(__DRIimage *psImage, void *pvLoaderPrivate);
++bool DRIMODValidateImageUsage(__DRIimage *psImage, unsigned int uUse);
++__DRIimage *DRIMODCreateImageFromNames(struct DRISUPScreen *psDRISUPScreen,
++                                       int iWidth, int iHeight, int iFourCC,
++                                       int *piNames, int iNumNames,
++                                       int *piStrides, int *piOffsets,
++                                       void *pvLoaderPrivate);
++__DRIimage *DRIMODFromPlanar(__DRIimage *psImage, int iPlane,
++                             void *pvLoaderPrivate);
++__DRIimage *DRIMODCreateImageFromTexture(struct DRISUPContext *psDRISUPContext,
++                                         int iTarget, unsigned int uTexture,
++                                         int iDepth, int iLevel,
++                                         unsigned int *puError,
++                                         void *pvLoaderPrivate);
++__DRIimage *DRIMODCreateImageFromFDs(struct DRISUPScreen *psDRISUPcreen,
++                                     int iWidth, int iHeight, int iFourCC,
++                                     int *piFDs, int iNumFDs,
++                                     int *piStrides, int *piOffsets,
++                                     void *pvLoaderPrivate);
++__DRIimage *DRIMODCreateImageFromDMABufs(struct DRISUPScreen *psDRISUPScreen,
++                                         int iWidth, int iHeight, int iFourCC,
++                                         int *piFDs, int iNumFDs,
++                                         int *piStrides, int *piOffsets,
++                                         unsigned int uColorSpace,
++                                         unsigned int uSampleRange,
++                                         unsigned int uHorizSiting,
++                                         unsigned int uVertSiting,
++                                         unsigned int *puError,
++                                         void *pvLoaderPrivate);
++int DRIMODGetImageCapabilities(struct DRISUPScreen *psDRISUPScreen);
++void DRIMODBlitImage(struct DRISUPContext *psDRISUPContext,
++                     __DRIimage *psDst, __DRIimage *psSrc,
++                     int iDstX0, int iDstY0, int iDstWidth, int iDstHeight,
++                     int iSrcX0, int iSrcY0, int iSrcWidth, int iSrcHeight,
++                     int iFlushFlag);
++void *DRIMODMapImage(struct DRISUPContext *psDRISUPContext,
++                     __DRIimage *psImage,
++                     int iX0, int iY0, int iWidth, int iHeight,
++                     unsigned int iFlags, int *iStride, void **ppvData);
++void DRIMODUnmapImage(struct DRISUPContext *psDRISUPContext,
++                      __DRIimage *psImage, void *pvData);
++__DRIimage *DRIMODCreateImageWithModifiers(struct DRISUPScreen *psDRISUPScreen,
++                                           int iWidth, int iHeight,
++                                           int iFourCC,
++                                           const uint64_t *puModifiers,
++                                           const unsigned int uModifierCount,
++                                           void *pvLoaderPrivate);
++__DRIimage *DRIMODCreateImageFromDMABufs2(struct DRISUPScreen *psDRISUPScreen,
++                                          int iWidth, int iHeight,
++                                          int iFourCC, uint64_t uModifier,
++                                          int *piFDs, int iNumFDs,
++                                          int *piStrides, int *piOffsets,
++                                          unsigned int uColorSpace,
++                                          unsigned int uSampleRange,
++                                          unsigned int uHorizSiting,
++                                          unsigned int uVertSiting,
++                                          unsigned int *puError,
++                                          void *pvLoaderPrivate);
 +
-+bool PVRDRIBlitEGLImage_IsSupported(void);
-+bool PVRDRIMapEGLImage_IsSupported(void);
-+bool PVRDRIBufferGetOffset_IsSupported(void);
-+bool PVRDRIBufferCreateWithModifiers_IsSupported(void);
-+bool PVRDRIBufferCreateFromFdsWithModifier_IsSupported(void);
++bool DRIMODQueryDMABufFormats(struct DRISUPScreen *psDRISUPScreen, int iMax,
++                              int *piFormats, int *piCount);
++bool DRIMODQueryDMABufModifiers(struct DRISUPScreen *psDRISUPScreen,
++                                int iFourCC, int iMax, uint64_t *puModifiers,
++                                unsigned int *piExternalOnly, int *piCount);
++bool DRIMODQueryDMABufFormatModifierAttribs(struct DRISUPScreen *psDRISUPScreen,
++                                            uint32_t uFourCC,
++                                            uint64_t uModifier,
++                                            int iAttribute,
++                                            uint64_t *puValue);
 +
-+void *PVRDRICreateFenceFdImpl(PVRDRIAPIType eAPI,
-+			      PVRDRIScreenImpl *psScreenImpl,
-+			      PVRDRIContextImpl *psContextImpl,
-+			      int fd);
++__DRIimage *DRIMODCreateImageFromRenderBuffer2(struct DRISUPContext *psDRISUPContext,
++                                               int iRenderBuffer,
++                                               void *pvLoaderPrivate,
++                                               unsigned int *puError);
++__DRIimage *DRIMODCreateImageFromBuffer(struct DRISUPContext *psDRISUPContext,
++                                        int iTarget, void *pvBuffer,
++                                        unsigned int *puError,
++                                        void *pvLoaderPrivate);
 +
-+unsigned PVRDRIGetFenceCapabilitiesImpl(PVRDRIScreenImpl *psScreenImpl);
++int DRIMODQueryRendererInteger(struct DRISUPScreen *psDRISUPScreen,
++                               int iAttribute, unsigned int *puValue);
++int DRIMODQueryRendererString(struct DRISUPScreen *psDRISUPScreen,
++                              int iAttribute, const char **ppszValue);
 +
-+int PVRDRIGetFenceFdImpl(void *psDRIFence);
++void *DRIMODCreateFence(struct DRISUPContext *psDRISUPContext);
++void DRIMODDestroyFence(struct DRISUPScreen *psDRISUPScreen, void *pvFence);
++bool DRIMODClientWaitSync(struct DRISUPContext *psDRISUPContext,
++                          void *pvFence, unsigned int uFlags,
++                          uint64_t uTimeout);
++void DRIMODServerWaitSync(struct DRISUPContext *psDRISUPContext,
++                          void *pvFence, unsigned int uFlags);
++unsigned int DRIMODGetFenceCapabilities(struct DRISUPScreen *psDRISUPScreen);
++void *DRIMODCreateFenceFD(struct DRISUPContext *psDRISUPContext, int iFD);
++int DRIMODGetFenceFD(struct DRISUPScreen *psDRISUPScreen, void *pvFence);
 +
-+bool PVRDRIValidateImageModifier(PVRDRIScreen *psPVRScreen, const int iFourcc,
-+				 const uint64_t uiModifier);
-+#endif /* defined(__PVRDRI2_H__) */
++unsigned int DRIMODGetNumAPIProcs(struct DRISUPScreen *psDRISUPScreen,
++                                  PVRDRIAPIType eAPI);
++const char *DRIMODGetAPIProcName(struct DRISUPScreen *psDRISUPScreen,
++                                 PVRDRIAPIType eAPI, unsigned int uIndex);
++void *DRIMODGetAPIProcAddress(struct DRISUPScreen *psDRISUPScreen,
++                              PVRDRIAPIType eAPI, unsigned int uIndex);
++
++void DRIMODSetDamageRegion(struct DRISUPDrawable *psDRISUPDrawable,
++                           unsigned int uNRects, int *piRects);
++
++#endif /* defined(__PVRDRI_MOD_H__) */
+diff --git a/src/mesa/drivers/dri/pvr/pvrdri_support.h b/src/mesa/drivers/dri/pvr/pvrdri_support.h
+new file mode 100644
+index 00000000000..06eafa7fbf3
+--- /dev/null
++++ b/src/mesa/drivers/dri/pvr/pvrdri_support.h
+@@ -0,0 +1,437 @@
++/*
++ * Copyright (c) Imagination Technologies Ltd.
++ *
++ * The contents of this file are subject to the MIT license as set out below.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++#if !defined(__PVRDRI_SUPPORT_H__)
++#define __PVRDRI_SUPPORT_H__
++
++#include <stdint.h>
++#include <stdbool.h>
++
++#include "dri_support.h"
++
++struct DRISUPScreen *DRISUPCreateScreen(struct __DRIscreenRec *psDRIScreen,
++                                        int iFD, bool bUseInvalidate,
++                                        void *pvLoaderPrivate,
++                                        const struct __DRIconfigRec ***pppsConfigs,
++                                        int *piMaxGLES1Version,
++                                        int *piMaxGLES2Version);
++void DRISUPDestroyScreen(struct DRISUPScreen *psDRISUPScreen);
++
++unsigned int DRISUPCreateContext(PVRDRIAPIType eAPI,
++                                 PVRDRIConfig *psPVRDRIConfig,
++                                 struct PVRDRIContextConfig *psCtxConfig,
++                                 struct __DRIcontextRec *psDRIContext,
++                                 struct DRISUPContext *psDRISUPSharedContext,
++                                 struct DRISUPScreen *psDRISUPScreen,
++                                 struct DRISUPContext **ppsDRISUPContext);
++void DRISUPDestroyContext(struct DRISUPContext *psDRISUPContext);
++
++struct DRISUPDrawable *DRISUPCreateDrawable(struct __DRIdrawableRec *psDRIDrawable,
++                                            struct DRISUPScreen *psDRISUPScreen,
++                                            void *pvLoaderPrivate,
++                                            PVRDRIConfig *psPVRDRIConfig);
++void DRISUPDestroyDrawable(struct DRISUPDrawable *psDRISUPDrawable);
++
++bool DRISUPMakeCurrent(struct DRISUPContext *psDRISUPContext,
++                       struct DRISUPDrawable *psDRISUPWrite,
++                       struct DRISUPDrawable *psDRISUPRead);
++bool DRISUPUnbindContext(struct DRISUPContext *psDRISUPContext);
++
++struct DRISUPBuffer *DRISUPAllocateBuffer(struct DRISUPScreen *psDRISUPScreen,
++                                          unsigned int uAttchment,
++                                          unsigned int uFormat,
++                                          int iWidth, int iHeight,
++                                          unsigned int *puName,
++                                          unsigned int *puPitch,
++                                          unsigned int *puCPP,
++                                          unsigned int *puFlags);
++void DRISUPReleaseBuffer(struct DRISUPScreen *psDRISUPScreen,
++                         struct DRISUPBuffer *psDRISUPBuffer);
++void DRISUPSetTexBuffer2(struct DRISUPContext *psDRISUPContext,
++                         int iTarget, int iFormat,
++                         struct DRISUPDrawable *psDRISUPDrawable);
++void DRISUPReleaseTexBuffer(struct DRISUPContext *psDRISUPContext,
++                            int iTarget,
++                            struct DRISUPDrawable *psDRISUPDrawable);
++
++void DRISUPFlush(struct DRISUPDrawable *psDRISUPDrawable);
++void DRISUPInvalidate(struct DRISUPDrawable *psDRISUPDrawable);
++void DRISUPFlushWithFlags(struct DRISUPContext *psDRISUPContext,
++                          struct DRISUPDrawable *psDRISUPDrawable,
++                          unsigned int uFlags, unsigned int uThrottleReason);
++
++__DRIimage *DRISUPCreateImageFromName(struct DRISUPScreen *psDRISUPScreen,
++                                      int iWidth, int iHeight, int iFourCC,
++                                      int iName, int iPitch,
++                                      void *pvLoaderPrivate);
++__DRIimage *DRISUPCreateImageFromRenderbuffer(struct DRISUPContext *psDRISUPContext,
++                                              int iRenderBuffer,
++                                              void *pvLoaderPrivate);
++void DRISUPDestroyImage(__DRIimage *psImage);
++__DRIimage *DRISUPCreateImage(struct DRISUPScreen *psDRISUPScreen,
++                              int iWidth, int iHeight, int iFourCC,
++                              unsigned int uUse, void *pvLoaderPrivate);
++bool DRISUPQueryImage(__DRIimage *psImage, int iAttrib, int *piValue);
++__DRIimage *DRISUPDupImage(__DRIimage *psImage, void *pvLoaderPrivate);
++bool DRISUPValidateImageUsage(__DRIimage *psImage, unsigned int uUse);
++__DRIimage *DRISUPCreateImageFromNames(struct DRISUPScreen *psDRISUPScreen,
++                                       int iWidth, int iHeight, int iFourCC,
++                                       int *piNames, int iNumNames,
++                                       int *piStrides, int *piOffsets,
++                                       void *pvLoaderPrivate);
++__DRIimage *DRISUPFromPlanar(__DRIimage *psImage, int iPlane,
++                             void *pvLoaderPrivate);
++__DRIimage *DRISUPCreateImageFromTexture(struct DRISUPContext *psDRISUPContext,
++                                         int iTarget, unsigned int uTexture,
++                                         int iDepth, int iLevel,
++                                         unsigned int *puError,
++                                         void *pvLoaderPrivate);
++__DRIimage *DRISUPCreateImageFromFDs(struct DRISUPScreen *psDRISUPcreen,
++                                     int iWidth, int iHeight, int iFourCC,
++                                     int *piFDs, int iNumFDs,
++                                     int *piStrides, int *piOffsets,
++                                     void *pvLoaderPrivate);
++__DRIimage *DRISUPCreateImageFromDmaBufs(struct DRISUPScreen *psDRISUPScreen,
++                                         int iWidth, int iHeight, int iFourCC,
++                                         int *piFDs, int iNumFDs,
++                                         int *piStrides, int *piOffsets,
++                                         unsigned int uColorSpace,
++                                         unsigned int uSampleRange,
++                                         unsigned int uHorizSiting,
++                                         unsigned int uVertSiting,
++                                         unsigned int *puError,
++                                         void *pvLoaderPrivate);
++int DRISUPGetImageCapabilities(struct DRISUPScreen *psDRISUPScreen);
++void DRISUPBlitImage(struct DRISUPContext *psDRISUPContext,
++                     __DRIimage *psDst, __DRIimage *psSrc,
++                     int iDstX0, int iDstY0, int iDstWidth, int iDstHeight,
++                     int iSrcX0, int iSrcY0, int iSrcWidth, int iSrcHeight,
++                     int iFlushFlag);
++void *DRISUPMapImage(struct DRISUPContext *psDRISUPContext,
++                     __DRIimage *psImage,
++                     int iX0, int iY0, int iWidth, int iHeight,
++                     unsigned int uFlags, int *piStride, void **ppvData);
++void DRISUPUnmapImage(struct DRISUPContext *psDRISUPContext,
++                      __DRIimage *psImage, void *pvData);
++__DRIimage *DRISUPCreateImageWithModifiers(struct DRISUPScreen *psDRISUPScreen,
++                                           int iWidth, int iHeight, int iFourCC,
++                                           const uint64_t *puModifiers,
++                                           const unsigned int uModifierCount,
++                                           void *pvLoaderPrivate);
++__DRIimage *DRISUPCreateImageFromDMABufs2(struct DRISUPScreen *psDRISUPScreen,
++                                          int iWidth, int iHeight,
++                                          int iFourCC, uint64_t uModifier,
++                                          int *piFDs, int iNumFDs,
++                                          int *piStrides, int *piOffsets,
++                                          unsigned int uColorSpace,
++                                          unsigned int uSampleRange,
++                                          unsigned int uHorizSiting,
++                                          unsigned int uVertSiting,
++                                          unsigned int *puError,
++                                          void *pvLoaderPrivate);
++
++bool DRISUPQueryDMABufFormats(struct DRISUPScreen *psDRISUPScreen, int iMax,
++                              int *piFormats, int *piCount);
++bool DRISUPQueryDMABufModifiers(struct DRISUPScreen *psDRISUPScreen,
++                                int iFourCC, int iMax, uint64_t *puModifiers,
++                                unsigned int *piExternalOnly, int *piCount);
++bool DRISUPQueryDMABufFormatModifierAttribs(struct DRISUPScreen *psDRISUPScreen,
++                                            uint32_t uFourcc,
++                                            uint64_t uModifier,
++                                            int iAttrib, uint64_t *puValue);
++
++__DRIimage *DRISUPCreateImageFromRenderBuffer2(struct DRISUPContext *psDRISUPContext,
++                                               int iRenderBuffer,
++                                               void *pvLoaderPrivate,
++                                               unsigned int *puError);
++
++__DRIimage *DRISUPCreateImageFromBuffer(struct DRISUPContext *psDRISUPContext,
++                                        int iTarget, void *pvBuffer,
++                                        unsigned int *puError,
++                                        void *pvLoaderPrivate);
++
++int DRISUPQueryRendererInteger(struct DRISUPScreen *psDRISUPScreen,
++                               int iAttribute, unsigned int *puValue);
++int DRISUPQueryRendererString(struct DRISUPScreen *psDRISUPScreen,
++                              int iAttribute, const char **ppszValue);
++
++void *DRISUPCreateFence(struct DRISUPContext *psDRISUPContext);
++void DRISUPDestroyFence(struct DRISUPScreen *psDRISUPScreen, void *pvFence);
++bool DRISUPClientWaitSync(struct DRISUPContext *psDRISUPContext,
++                          void *pvFence, unsigned int uFlags,
++                          uint64_t uTimeout);
++void DRISUPServerWaitSync(struct DRISUPContext *psDRISUPContext,
++                          void *pvFence, unsigned int uFlags);
++unsigned int DRISUPGetFenceCapabilities(struct DRISUPScreen *psDRISUPScreen);
++void *DRISUPCreateFenceFD(struct DRISUPContext *psDRISUPContext, int iFD);
++int DRISUPGetFenceFD(struct DRISUPScreen *psDRISUPScreen, void *pvFence);
++void *DRISUPGetFenceFromCLEvent(struct DRISUPScreen *psDRISUPScreen,
++                                intptr_t iCLEvent);
++
++unsigned int DRISUPGetNumAPIProcs(struct DRISUPScreen *psDRISUPScreen,
++                                  PVRDRIAPIType eAPI);
++const char *DRISUPGetAPIProcName(struct DRISUPScreen *psDRISUPScreen,
++                                 PVRDRIAPIType eAPI, unsigned int uIndex);
++void *DRISUPGetAPIProcAddress(struct DRISUPScreen *psDRISUPScreen,
++                              PVRDRIAPIType eAPI, unsigned int uIndex);
++
++void DRISUPSetDamageRegion(struct DRISUPDrawable *psDRISUPDrawable,
++                           unsigned int uNRects, int *piRects);
++
++/******************************************************************************
++ * PVR DRI Support interface, version 1.
++ * Everything below this point is deprecated.
++ *****************************************************************************/
++
++#include "imgpixfmts.h"
++#include "imgyuv.h"
++
++PVRDRIDeviceType PVRDRIGetDeviceTypeFromFd(int iFd);
++bool PVRDRIIsFirstScreen(PVRDRIScreenImpl *psScreenImpl);
++
++uint32_t PVRDRIPixFmtGetDepth(IMG_PIXFMT eFmt);
++uint32_t PVRDRIPixFmtGetBPP(IMG_PIXFMT eFmt);
++uint32_t PVRDRIPixFmtGetBlockSize(IMG_PIXFMT eFmt);
++
++/* ScreenImpl functions */
++PVRDRIScreenImpl *PVRDRICreateScreenImpl(int iFd);
++void PVRDRIDestroyScreenImpl(PVRDRIScreenImpl *psScreenImpl);
++
++int PVRDRIAPIVersion(PVRDRIAPIType eAPI, PVRDRIAPISubType eAPISub,
++                     PVRDRIScreenImpl *psScreenImpl);
++
++void *PVRDRIEGLGetLibHandle(PVRDRIAPIType eAPI,
++                            PVRDRIScreenImpl *psScreenImpl);
++PVRDRIGLAPIProc PVRDRIEGLGetProcAddress(PVRDRIAPIType eAPI,
++                                        PVRDRIScreenImpl *psScreenImpl,
++                                        const char *psProcName);
++
++bool PVRDRIEGLFlushBuffers(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                           PVRDRIContextImpl *psContextImpl,
++                           PVRDRIDrawableImpl *psDrawableImpl,
++                           bool bFlushAllSurfaces, bool bSwapBuffers,
++                           bool bWaitForHW);
++void PVRDRIEGLMarkRendersurfaceInvalid(PVRDRIAPIType eAPI,
++                                       PVRDRIScreenImpl *psScreenImpl,
++                                       PVRDRIContextImpl *psContextImpl);
++
++unsigned int PVRDRICreateContextV1(PVRDRIScreenImpl *psScreenImpl,
++                                   PVRDRIContextImpl *psSharedContextImpl,
++                                   PVRDRIConfig *psConfig,
++                                   PVRDRIAPIType eAPI,
++                                   PVRDRIAPISubType eAPISub,
++                                   unsigned int uMajorVersion,
++                                   unsigned int uMinorVersion,
++                                   uint32_t uFlags, bool bNotifyReset,
++                                   unsigned int uPriority,
++                                   PVRDRIContextImpl **ppsContextImpl);
++void PVRDRIDestroyContextImpl(PVRDRIContextImpl *psContextImpl,
++                              PVRDRIAPIType eAPI,
++                              PVRDRIScreenImpl *psScreenImpl);
++
++bool PVRDRIMakeCurrentGC(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                         PVRDRIContextImpl *psContextImpl,
++                         PVRDRIDrawableImpl *psWriteImpl,
++                         PVRDRIDrawableImpl *psReadImpl);
++void PVRDRIMakeUnCurrentGC(PVRDRIAPIType eAPI,
++                           PVRDRIScreenImpl *psScreenImpl);
++
++unsigned int PVRDRIGetImageSource(PVRDRIAPIType eAPI,
++                                  PVRDRIScreenImpl *psScreenImpl,
++                                  PVRDRIContextImpl *psContextImpl,
++                                  uint32_t uiTarget, uintptr_t uiBuffer,
++                                  uint32_t uiLevel, IMGEGLImage *psEGLImage);
++
++bool PVRDRI2BindTexImage(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                         PVRDRIContextImpl *psContextImpl,
++                         PVRDRIDrawableImpl *psDrawableImpl);
++void PVRDRI2ReleaseTexImage(PVRDRIAPIType eAPI,
++                            PVRDRIScreenImpl *psScreenImpl,
++                            PVRDRIContextImpl *psContextImpl,
++                            PVRDRIDrawableImpl *psDrawableImpl);
++
++/* DrawableImpl functions */
++PVRDRIDrawableImpl *PVRDRICreateDrawableWithConfig(PVRDRIDrawable *psPVRDrawable,
++                                                   PVRDRIConfig *psConfig);
++void PVRDRIDestroyDrawableImpl(PVRDRIDrawableImpl *psScreenImpl);
++bool PVREGLDrawableCreate(PVRDRIScreenImpl *psScreenImpl,
++                          PVRDRIDrawableImpl *psDrawableImpl);
++bool PVREGLDrawableRecreate(PVRDRIScreenImpl *psScreenImpl,
++                            PVRDRIDrawableImpl *psDrawableImpl);
++bool PVREGLDrawableDestroy(PVRDRIScreenImpl *psScreenImpl,
++                           PVRDRIDrawableImpl *psDrawableImpl);
++void PVREGLDrawableDestroyConfig(PVRDRIDrawableImpl *psDrawableImpl);
++
++/* Buffer functions */
++PVRDRIBufferImpl *PVRDRIBufferCreate(PVRDRIScreenImpl *psScreenImpl,
++                                     int iWidth, int iHeight,
++                                     unsigned int uiBpp,
++                                     unsigned int uiUseFlags,
++                                     unsigned int *puiStride);
++PVRDRIBufferImpl *PVRDRIBufferCreateWithModifiers(PVRDRIScreenImpl *psScreenImpl,
++                                                  int iWidth, int iHeight,
++                                                  int iFormat,
++                                                  IMG_PIXFMT eIMGPixelFormat,
++                                                  const uint64_t *puiModifiers,
++                                                  unsigned int uiModifierCount,
++                                                  unsigned int *puiStride);
++PVRDRIBufferImpl *PVRDRIBufferCreateFromNames(PVRDRIScreenImpl *psScreenImpl,
++                                              int iWidth, int iHeight,
++                                              unsigned int uiNumPlanes,
++                                              const int *piName,
++                                              const int *piStride,
++                                              const int *piOffset,
++                                              const unsigned int *puiWidthShift,
++                                              const unsigned int *puiHeightShift);
++PVRDRIBufferImpl *PVRDRIBufferCreateFromFds(PVRDRIScreenImpl *psScreenImpl,
++                                            int iWidth, int iHeight,
++                                            unsigned int uiNumPlanes,
++                                            const int *piFd,
++                                            const int *piStride,
++                                            const int *piOffset,
++                                            const unsigned int *puiWidthShift,
++                                            const unsigned int *puiHeightShift);
++PVRDRIBufferImpl *PVRDRIBufferCreateFromFdsWithModifier(PVRDRIScreenImpl *psScreenImpl,
++                                                        int iWidth,
++                                                        int iHeight,
++                                                        uint64_t uiModifier,
++                                                        unsigned int uiNumPlanes,
++                                                        const int *piFd,
++                                                        const int *piStride,
++                                                        const int *piOffset,
++                                                        const unsigned int *puiWidthShift,
++                                                        const unsigned int *puiHeightShift);
++PVRDRIBufferImpl *PVRDRISubBufferCreate(PVRDRIScreenImpl *psScreen,
++                                        PVRDRIBufferImpl *psParent,
++                                        int plane);
++void PVRDRIBufferDestroy(PVRDRIBufferImpl *psBuffer);
++
++int PVRDRIBufferGetFd(PVRDRIBufferImpl *psBuffer);
++int PVRDRIBufferGetHandle(PVRDRIBufferImpl *psBuffer);
++uint64_t PVRDRIBufferGetModifier(PVRDRIBufferImpl *psBuffer);
++int PVRDRIBufferGetName(PVRDRIBufferImpl *psBuffer);
++int PVRDRIBufferGetOffset(PVRDRIBufferImpl *psBuffer);
++
++/* Image functions */
++IMGEGLImage *PVRDRIEGLImageCreate(void);
++IMGEGLImage *PVRDRIEGLImageCreateFromBuffer(int iWidth, int iHeight,
++                                            int iStride,
++                                            IMG_PIXFMT ePixelFormat,
++                                            IMG_YUV_COLORSPACE eColourSpace,
++                                            IMG_YUV_CHROMA_INTERP eChromaUInterp,
++                                            IMG_YUV_CHROMA_INTERP eChromaVInterp,
++                                            PVRDRIBufferImpl *psBuffer);
++IMGEGLImage *PVRDRIEGLImageCreateFromSubBuffer(IMG_PIXFMT ePixelFormat,
++                                               PVRDRIBufferImpl *psSubBuffer);
++IMGEGLImage *PVRDRIEGLImageDup(IMGEGLImage *psIn);
++
++void PVRDRIEGLImageSetCallbackData(IMGEGLImage *psEGLImage,
++                                   __DRIimage *image);
++
++void PVRDRIEGLImageDestroyExternal(PVRDRIScreenImpl *psScreenImpl,
++                                   IMGEGLImage *psEGLImage,
++                                   PVRDRIEGLImageType eglImageType);
++void PVRDRIEGLImageFree(IMGEGLImage *psEGLImage);
++
++void PVRDRIEGLImageGetAttribs(IMGEGLImage *psEGLImage,
++                              PVRDRIBufferAttribs *psAttribs);
++
++/* Sync functions */
++void *PVRDRICreateFenceImpl(PVRDRIAPIType eAPI,
++                            PVRDRIScreenImpl *psScreenImpl,
++                            PVRDRIContextImpl *psContextImpl);
++void PVRDRIDestroyFenceImpl(void *pvFence);
++
++bool PVRDRIClientWaitSyncImpl(PVRDRIAPIType eAPI,
++                              PVRDRIContextImpl *psContextImpl,
++                              void *pvFence, bool bFlushCommands,
++                              bool bTimeout, uint64_t uiTimeout);
++bool PVRDRIServerWaitSyncImpl(PVRDRIAPIType eAPI,
++                              PVRDRIContextImpl *psContextImpl,
++                              void *pvFence);
++
++/* Blit functions */
++bool PVRDRIBlitEGLImage(PVRDRIScreenImpl *psScreenImpl,
++                        PVRDRIContextImpl *psContextImpl,
++                        IMGEGLImage *psDstImage,
++                        PVRDRIBufferImpl *psDstBuffer,
++                        IMGEGLImage *psSrcImage,
++                        PVRDRIBufferImpl *psSrcBuffer,
++                        int iDstX, int iDstY, int iDstWidth, int iDstHeight,
++                        int iSrcX, int iSrcY, int iSrcWidth, int iSrcHeight,
++                        int iFlushFlag);
++
++/* Mapping functions */
++void *PVRDRIMapEGLImage(PVRDRIScreenImpl *psScreenImpl,
++                        PVRDRIContextImpl *psContextImpl,
++                        IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
++                        int iX, int iY, int iWidth, int iHeight,
++                        unsigned int uiFlags, int *piStride, void **ppvData);
++bool PVRDRIUnmapEGLImage(PVRDRIScreenImpl *psScreenImpl,
++                         PVRDRIContextImpl *psContextImpl,
++                         IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
++                         void *pvData);
++
++/* Fence functions */
++void *PVRDRICreateFenceImpl(PVRDRIAPIType eAPI,
++                            PVRDRIScreenImpl *psScreenImpl,
++                            PVRDRIContextImpl *psContextImpl);
++void *PVRDRICreateFenceFd(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                          PVRDRIContextImpl *psContextImpl, int iFd);
++unsigned int PVRDRIGetFenceCapabilities(PVRDRIScreenImpl *psScreenImpl);
++int PVRDRIGetFenceFd(void *pvFence);
++void PVRDRIDestroyFenceImpl(void *pvFence);
++
++bool PVRDRIClientWaitSyncImpl(PVRDRIAPIType eAPI,
++                              PVRDRIContextImpl *psContextImpl, void *pvFence,
++                              bool bFlushCommands,
++                              bool bTimeout, uint64_t uiTimeout);
++
++bool PVRDRIServerWaitSyncImpl(PVRDRIAPIType eAPI,
++                              PVRDRIContextImpl *psContextImpl,
++                              void *pvFence);
++
++/* PVR utility support functions */
++bool PVRDRIMesaFormatSupported(unsigned int iFormat);
++unsigned int PVRDRIDepthStencilBitArraySize(void);
++const uint8_t *PVRDRIDepthBitsArray(void);
++const uint8_t *PVRDRIStencilBitsArray(void);
++unsigned int PVRDRIMSAABitArraySize(void);
++const uint8_t *PVRDRIMSAABitsArray(void);
++uint32_t PVRDRIMaxPBufferWidth(void);
++uint32_t PVRDRIMaxPBufferHeight(void);
++
++unsigned int PVRDRIGetNumAPIFuncs(PVRDRIAPIType eAPI);
++const char *PVRDRIGetAPIFunc(PVRDRIAPIType eAPI, unsigned int index);
++
++int PVRDRIQuerySupportedFormats(PVRDRIScreenImpl *psScreenImpl,
++                                unsigned int uNumFormats,
++                                const int *piFormats,
++                                const IMG_PIXFMT *peImgFormats,
++                                bool *pbSupported);
++int PVRDRIQueryModifiers(PVRDRIScreenImpl *psScreenImpl,
++                         int iFormat, IMG_PIXFMT eImgFormat,
++                         uint64_t *puModifiers, unsigned int *puExternalOnly);
++
++#endif /* defined(__PVRDRI_SUPPORT_H__) */
 diff --git a/src/mesa/drivers/dri/pvr/pvrext.c b/src/mesa/drivers/dri/pvr/pvrext.c
 new file mode 100644
-index 00000000000..c3782b6592b
+index 00000000000..79d76b40de9
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/pvrext.c
-@@ -0,0 +1,440 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,701 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -5262,320 +6830,588 @@
 + *    way.
 + */
 +
-+#include "util/u_atomic.h"
-+
 +#include "dri_util.h"
 +#include "utils.h"
 +
 +#include "dri_support.h"
 +#include "pvrdri.h"
-+#include "pvrimage.h"
 +
 +#include "EGL/egl.h"
 +#include "EGL/eglext.h"
++#include "EGL/eglmesaext.h"
 +
 +/* Maximum version numbers for each supported extension */
-+#define PVR_DRI_TEX_BUFFER_VERSION	2
-+#define PVR_DRI2_FLUSH_VERSION		4
-+#define PVR_DRI_IMAGE_VERSION		17
-+#define PVR_DRI2_ROBUSTNESS_VERSION	1
-+#define PVR_DRI2_FENCE_VERSION		2
++#define PVR_DRI_TEX_BUFFER_VERSION      3
++#define PVR_DRI2_FLUSH_VERSION          4
++#define PVR_DRI_IMAGE_VERSION           17
++#define PVR_DRI2_ROBUSTNESS_VERSION     1
++#define PVR_DRI2_FENCE_VERSION          2
++#define PVR_DRI2_RENDERER_QUERY_VERSION 1
++#define PVR_DRI2_BUFFER_DAMAGE_VERSION  1
 +
-+static void PVRDRIFlushDrawableContext(PVRDRIDrawable *psPVRDrawable,
-+				       PVRDRIContext *psPVRContext)
++static void
++PVRDRIExtSetTexBuffer(__DRIcontext *psDRIContext, GLint iTarget,
++                      GLint iFormat, __DRIdrawable *psDRIDrawable)
 +{
-+	PVRDRIContext *psPVRDrawContext = psPVRDrawable->psPVRContext;
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+	if (psPVRDrawContext)
-+	{
-+		PVRDRIEGLFlushBuffers(psPVRDrawContext->eAPI,
-+		                      psPVRDrawContext->psPVRScreen->psImpl,
-+		                      psPVRDrawContext->psImpl,
-+		                      psPVRDrawable->psImpl,
-+		                      false,
-+		                      false,
-+		                      (psPVRDrawContext != psPVRContext));
-+	}
++   DRISUPSetTexBuffer2(psPVRContext->psDRISUPContext,
++                       iTarget, iFormat, psPVRDrawable->psDRISUPDrawable);
 +}
 +
-+static void PVRDRIExtSetTexBuffer(__DRIcontext  *psDRIContext,
-+				  GLint          target,
-+				  GLint          format,
-+				  __DRIdrawable *psDRIDrawable)
++static void
++PVRDRIExtReleaseTexBuffer(__DRIcontext *psDRIContext, GLint iTarget,
++                          __DRIdrawable *psDRIDrawable)
 +{
-+	PVRDRIDrawable *psPVRDrawable = (PVRDRIDrawable *)psDRIDrawable->driverPrivate;
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+	(void)target;
-+	(void)format;
++   DRISUPReleaseTexBuffer(psPVRContext->psDRISUPContext,
++                          iTarget, psPVRDrawable->psDRISUPDrawable);
 +
-+	if (!psPVRDrawable->bInitialised)
-+	{
-+		if (!PVRDRIDrawableInit(psPVRDrawable))
-+		{
-+			__driUtilMessage("%s: Couldn't initialise pixmap", __func__);
-+			return;
-+		}
-+	}
-+
-+	PVRDRIFlushDrawableContext(psPVRDrawable, psPVRContext);
-+	PVRDRI2BindTexImage(psPVRContext->eAPI,
-+	                    psPVRContext->psPVRScreen->psImpl,
-+	                    psPVRContext->psImpl,
-+	                    psPVRDrawable->psImpl);
 +}
 +
-+static void PVRDRIExtReleaseTexBuffer(__DRIcontext  *psDRIContext,
-+				      GLint          target,
-+				      __DRIdrawable *psDRIDrawable)
-+{
-+	PVRDRIDrawable *psPVRDrawable = (PVRDRIDrawable *)psDRIDrawable->driverPrivate;
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
-+
-+	(void)target;
-+
-+	PVRDRI2ReleaseTexImage(psPVRContext->eAPI,
-+	                       psPVRContext->psPVRScreen->psImpl,
-+	                       psPVRContext->psImpl,
-+	                       psPVRDrawable->psImpl);
-+}
-+
-+static __DRItexBufferExtension pvrDRITexBufferExtension =
-+{
-+	.base			= { .name = __DRI_TEX_BUFFER, .version = PVR_DRI_TEX_BUFFER_VERSION },
-+	.setTexBuffer		= NULL,
-+	.setTexBuffer2		= PVRDRIExtSetTexBuffer,
-+	.releaseTexBuffer	= PVRDRIExtReleaseTexBuffer
++static __DRItexBufferExtension pvrDRITexBufferExtension = {
++   .base = {
++      .name = __DRI_TEX_BUFFER,
++      .version = PVR_DRI_TEX_BUFFER_VERSION,
++   },
++   .setTexBuffer = NULL,
++   .setTexBuffer2 = PVRDRIExtSetTexBuffer,
++   .releaseTexBuffer = PVRDRIExtReleaseTexBuffer,
 +};
 +
-+
-+static void PVRDRI2Flush(__DRIdrawable *psDRIDrawable)
++static void
++PVRDRI2Flush(__DRIdrawable *psDRIDrawable)
 +{
-+	PVRDRIDrawable *psPVRDrawable = (PVRDRIDrawable *)psDRIDrawable->driverPrivate;
-+	PVRDRIContext *psPVRContext = psPVRDrawable->psPVRContext;
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
 +
-+	PVRDRIFlushBuffersForSwap(psPVRContext, psPVRDrawable);
++   DRISUPFlush(psPVRDrawable->psDRISUPDrawable);
 +}
 +
-+static void PVRDRI2Invalidate(__DRIdrawable *psDRIDrawable)
++static void
++PVRDRI2Invalidate(__DRIdrawable *psDRIDrawable)
 +{
-+	PVRDRIDrawable *psPVRDrawable = (PVRDRIDrawable *)psDRIDrawable->driverPrivate;
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
 +
-+	if (psPVRDrawable->psPVRScreen->bUseInvalidate)
-+	{
-+		p_atomic_inc(&psPVRDrawable->iInfoInvalid);
-+	}
++   DRISUPInvalidate(psPVRDrawable->psDRISUPDrawable);
 +}
 +
-+static void PVRDRI2FlushWithFlags(__DRIcontext *psDRIContext,
-+				  __DRIdrawable *psDRIDrawable,
-+				  unsigned uFlags,
-+				  enum __DRI2throttleReason eThrottleReason)
++static void
++PVRDRI2FlushWithFlags(__DRIcontext *psDRIContext,
++                      __DRIdrawable *psDRIDrawable,
++                      unsigned int uFlags,
++                      enum __DRI2throttleReason eThrottleReason)
 +{
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++   struct DRISUPDrawable *psDRISUPDrawable;
 +
-+	(void)eThrottleReason;
++   if ((uFlags & __DRI2_FLUSH_DRAWABLE) != 0) {
++      PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
 +
-+	if ((uFlags & __DRI2_FLUSH_DRAWABLE) != 0)
-+	{
-+		PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++      psDRISUPDrawable = psPVRDrawable->psDRISUPDrawable;
++   } else {
++      psDRISUPDrawable = NULL;
++   }
 +
-+		PVRDRIFlushBuffersForSwap(psPVRContext, psPVRDrawable);
-+	}
-+	else if ((uFlags & __DRI2_FLUSH_CONTEXT) != 0)
-+	{
-+		/*
-+		 * __DRI2_FLUSH__CONTEXT means "glFlush". Most callers
-+		 * also specify __DRI2_FLUSH_DRAWABLE. An exception is
-+		 * GBM, which flushes after an unmap, when there doesn't
-+		 * appear to be a need to flush outstanding GPU operations.
-+		 */
-+	}
++   DRISUPFlushWithFlags(psPVRContext->psDRISUPContext, psDRISUPDrawable,
++                        uFlags, (unsigned int) eThrottleReason);
 +}
 +
-+static __DRI2flushExtension pvrDRI2FlushExtension =
-+{
-+	.base			= { .name = __DRI2_FLUSH, .version = PVR_DRI2_FLUSH_VERSION },
-+	.flush			= PVRDRI2Flush,
-+	.invalidate		= PVRDRI2Invalidate,
-+	.flush_with_flags	= PVRDRI2FlushWithFlags,
++static __DRI2flushExtension pvrDRI2FlushExtension = {
++   .base = {
++      .name = __DRI2_FLUSH,
++      .version = PVR_DRI2_FLUSH_VERSION,
++   },
++   .flush = PVRDRI2Flush,
++   .invalidate = PVRDRI2Invalidate,
++   .flush_with_flags = PVRDRI2FlushWithFlags,
 +};
 +
-+
-+static __DRIimageExtension pvrDRIImage =
++static __DRIimage *
++PVRDRICreateImageFromName(__DRIscreen *psDRIScreen, int iWidth, int iHeight,
++                          int iFormat, int iName, int iPitch,
++                          void *pvLoaderPrivate)
 +{
-+	.base				= { .name = __DRI_IMAGE, .version = PVR_DRI_IMAGE_VERSION },
-+	.createImageFromName		= PVRDRICreateImageFromName,
-+	.createImageFromRenderbuffer	= PVRDRICreateImageFromRenderbuffer,
-+	.destroyImage			= PVRDRIDestroyImage,
-+	.createImage			= PVRDRICreateImage,
-+	.queryImage			= PVRDRIQueryImage,
-+	.dupImage			= PVRDRIDupImage,
-+	.validateUsage			= PVRDRIValidateUsage,
-+	.createImageFromNames		= PVRDRICreateImageFromNames,
-+	.fromPlanar			= PVRDRIFromPlanar,
-+	.createImageFromTexture		= PVRDRICreateImageFromTexture,
-+	.createImageFromFds		= PVRDRICreateImageFromFds,
-+	.createImageFromDmaBufs		= PVRDRICreateImageFromDmaBufs,
-+	.blitImage			= PVRDRIBlitImage,
-+	.getCapabilities		= PVRDRIGetCapabilities,
-+	.mapImage			= PVRDRIMapImage,
-+	.unmapImage			= PVRDRIUnmapImage,
-+	.createImageWithModifiers	= PVRDRICreateImageWithModifiers,
-+	.createImageFromDmaBufs2	= PVRDRICreateImageFromDmaBufs2,
-+	.queryDmaBufFormats		= PVRDRIQueryDmaBufFormats,
-+	.queryDmaBufModifiers		= PVRDRIQueryDmaBufModifiers,
-+	.queryDmaBufFormatModifierAttribs = PVRDRIQueryDmaBufFormatModifierAttribs,
-+	.createImageFromRenderbuffer2	= PVRDRICreateImageFromRenderbuffer2,
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   int iFourCC = PVRDRIFormatToFourCC(iFormat);
++
++   return DRISUPCreateImageFromName(psPVRScreen->psDRISUPScreen,
++                                    iWidth, iHeight, iFourCC, iName, iPitch,
++                                    pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromRenderbuffer(__DRIcontext *psDRIContext,
++                                  int iRenderBuffer, void *pvLoaderPrivate)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   return DRISUPCreateImageFromRenderbuffer(psPVRContext->psDRISUPContext,
++                                            iRenderBuffer, pvLoaderPrivate);
++}
++
++static void
++PVRDRIDestroyImage(__DRIimage *psImage)
++{
++   DRISUPDestroyImage(psImage);
++}
++
++static __DRIimage *
++PVRDRICreateImage(__DRIscreen *psDRIScreen, int iWidth, int iHeight,
++                  int iFormat, unsigned int uUse, void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   int iFourCC = PVRDRIFormatToFourCC(iFormat);
++
++   return DRISUPCreateImage(psPVRScreen->psDRISUPScreen, iWidth, iHeight,
++                            iFourCC, uUse, pvLoaderPrivate);
++}
++
++static GLboolean
++PVRDRIQueryImage(__DRIimage *psImage, int iAttrib, int *piValue)
++{
++   int iFourCC;
++
++   switch (iAttrib) {
++   case PVRDRI_IMAGE_ATTRIB_FORMAT:
++      if (DRISUPQueryImage(psImage,
++                           PVRDRI_IMAGE_ATTRIB_FOURCC, &iFourCC)) {
++         *piValue = PVRDRIFourCCToDRIFormat(iFourCC);
++         return GL_TRUE;
++      }
++      return GL_FALSE;
++   default:
++      return DRISUPQueryImage(psImage, iAttrib, piValue);
++   }
++
++}
++
++static __DRIimage *
++PVRDRIDupImage(__DRIimage *psImage, void *pvLoaderPrivate)
++{
++   return DRISUPDupImage(psImage, pvLoaderPrivate);
++}
++
++static GLboolean
++PVRDRIValidateImageUsage(__DRIimage *psImage, unsigned int uUse)
++{
++   return DRISUPValidateImageUsage(psImage, uUse);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromNames(__DRIscreen *psDRIScreen, int iWidth, int iHeight,
++                           int iFourCC, int *piNames, int iNumNames,
++                           int *piStrides, int *piOffsets,
++                           void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPCreateImageFromNames(psPVRScreen->psDRISUPScreen,
++                                     iWidth, iHeight, iFourCC,
++                                     piNames, iNumNames,
++                                     piStrides, piOffsets, pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRIFromPlanar(__DRIimage *psImage, int iPlane, void *pvLoaderPrivate)
++{
++   return DRISUPFromPlanar(psImage, iPlane, pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromTexture(__DRIcontext *psDRIContext, int iTarget,
++                             unsigned int uTexture, int iDepth, int iLevel,
++                             unsigned int *puError, void *pvLoaderPrivate)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++   int iEGLTarget;
++
++   switch (iTarget) {
++   case GL_TEXTURE_2D:
++      iEGLTarget = PVRDRI_GL_TEXTURE_2D;
++      break;
++   case GL_TEXTURE_3D:
++      iEGLTarget = PVRDRI_GL_TEXTURE_3D;
++      break;
++   case GL_TEXTURE_CUBE_MAP:
++      iEGLTarget = PVRDRI_GL_TEXTURE_CUBE_MAP_POSITIVE_X;
++      break;
++   default:
++      errorMessage("%s: GL Target %d is not supported",
++                   __func__, iTarget);
++      *puError = __DRI_IMAGE_ERROR_BAD_PARAMETER;
++      return NULL;
++   }
++
++   return DRISUPCreateImageFromTexture(psPVRContext->psDRISUPContext,
++                                       iEGLTarget, uTexture, iDepth, iLevel,
++                                       puError, pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromFds(__DRIscreen *psDRIScreen, int iWidth, int iHeight,
++                         int iFourCC, int *piFDs, int iNumFDs,
++                         int *piStrides, int *piOffsets,
++                         void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPCreateImageFromFDs(psPVRScreen->psDRISUPScreen,
++                                   iWidth, iHeight, iFourCC, piFDs, iNumFDs,
++                                   piStrides, piOffsets, pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromDmaBufs(__DRIscreen *psDRIScreen,
++                             int iWidth, int iHeight, int iFourCC,
++                             int *piFDs, int iNumFDs,
++                             int *piStrides, int *piOffsets,
++                             enum __DRIYUVColorSpace eColorSpace,
++                             enum __DRISampleRange eSampleRange,
++                             enum __DRIChromaSiting eHorizSiting,
++                             enum __DRIChromaSiting eVertSiting,
++                             unsigned int *puError, void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPCreateImageFromDmaBufs(psPVRScreen->psDRISUPScreen,
++                                       iWidth, iHeight, iFourCC,
++                                       piFDs, iNumFDs, piStrides, piOffsets,
++                                       (unsigned int) eColorSpace,
++                                       (unsigned int) eSampleRange,
++                                       (unsigned int) eHorizSiting,
++                                       (unsigned int) eVertSiting,
++                                       puError, pvLoaderPrivate);
++}
++
++static void
++PVRDRIBlitImage(__DRIcontext *psDRIContext,
++                __DRIimage *psDst, __DRIimage *psSrc,
++                int iDstX0, int iDstY0, int iDstWidth, int iDstHeight,
++                int iSrcX0, int iSrcY0, int iSrcWidth, int iSrcHeight,
++                int iFlushFlag)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   return DRISUPBlitImage(psPVRContext->psDRISUPContext,
++                          psDst, psSrc,
++                          iDstX0, iDstY0, iDstWidth, iDstHeight,
++                          iSrcX0, iSrcY0, iSrcWidth, iSrcHeight,
++                          iFlushFlag);
++}
++
++static int
++PVRDRIGetCapabilities(__DRIscreen *psDRIScreen)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPGetImageCapabilities(psPVRScreen->psDRISUPScreen);
++}
++
++static void *
++PVRDRIMapImage(__DRIcontext *psDRIContext, __DRIimage *psImage,
++               int iX0, int iY0, int iWidth, int iHeight,
++               unsigned int iFlags, int *piStride, void **ppvData)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   return DRISUPMapImage(psPVRContext->psDRISUPContext, psImage,
++                         iX0, iY0, iWidth, iHeight, iFlags, piStride,
++                         ppvData);
++}
++
++static void
++PVRDRIUnmapImage(__DRIcontext *psDRIContext, __DRIimage *psImage,
++                 void *pvData)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   return DRISUPUnmapImage(psPVRContext->psDRISUPContext, psImage, pvData);
++}
++
++static __DRIimage *
++PVRDRICreateImageWithModifiers(__DRIscreen *psDRIScreen,
++                               int iWidth, int iHeight, int iFormat,
++                               const uint64_t *puModifiers,
++                               const unsigned int uModifierCount,
++                               void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   int iFourCC = PVRDRIFormatToFourCC(iFormat);
++
++   return DRISUPCreateImageWithModifiers(psPVRScreen->psDRISUPScreen,
++                                         iWidth, iHeight, iFourCC,
++                                         puModifiers, uModifierCount,
++                                         pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromDmaBufs2(__DRIscreen *psDRIScreen,
++                              int iWidth, int iHeight,
++                              int iFourCC, uint64_t uModifier,
++                              int *piFDs, int iNumFDs,
++                              int *piStrides, int *piOffsets,
++                              enum __DRIYUVColorSpace eColorSpace,
++                              enum __DRISampleRange eSampleRange,
++                              enum __DRIChromaSiting eHorizSiting,
++                              enum __DRIChromaSiting eVertSiting,
++                              unsigned int *puError, void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPCreateImageFromDMABufs2(psPVRScreen->psDRISUPScreen,
++                                        iWidth, iHeight, iFourCC, uModifier,
++                                        piFDs, iNumFDs, piStrides, piOffsets,
++                                        (unsigned int) eColorSpace,
++                                        (unsigned int) eSampleRange,
++                                        (unsigned int) eHorizSiting,
++                                        (unsigned int) eVertSiting,
++                                        puError, pvLoaderPrivate);
++}
++
++static GLboolean
++PVRDRIQueryDmaBufFormats(__DRIscreen *psDRIScreen, int iMax,
++                         int *piFormats, int *piCount)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPQueryDMABufFormats(psPVRScreen->psDRISUPScreen, iMax,
++                                   piFormats, piCount);
++}
++
++static GLboolean
++PVRDRIQueryDmaBufModifiers(__DRIscreen *psDRIScreen, int iFourCC, int iMax,
++                           uint64_t *puModifiers,
++                           unsigned int *puExternalOnly, int *piCount)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPQueryDMABufModifiers(psPVRScreen->psDRISUPScreen, iFourCC,
++                                     iMax,
++                                     puModifiers, puExternalOnly, piCount);
++}
++
++static GLboolean
++PVRDRIQueryDmaBufFormatModifierAttribs(__DRIscreen *psDRIScreen,
++                                       uint32_t uFourCC, uint64_t uModifier,
++                                       int iAttrib, uint64_t *puValue)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   struct DRISUPScreen *psDRISUPScreen = psPVRScreen->psDRISUPScreen;
++
++   return DRISUPQueryDMABufFormatModifierAttribs(psDRISUPScreen, uFourCC,
++                                                 uModifier, iAttrib, puValue);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromRenderbuffer2(__DRIcontext *psDRIContext,
++                                   int iRenderBuffer, void *pvLoaderPrivate,
++                                   unsigned int *puError)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++   struct DRISUPContext *psDRISUPContext = psPVRContext->psDRISUPContext;
++
++   return DRISUPCreateImageFromRenderBuffer2(psDRISUPContext, iRenderBuffer,
++                                             pvLoaderPrivate, puError);
++}
++
 +#if defined(EGL_IMG_cl_image)
-+	.createImageFromBuffer		= PVRDRICreateImageFromBuffer,
++static __DRIimage *
++PVRDRICreateImageFromBuffer(__DRIcontext *psDRIContext, int iTarget,
++                            void *pvBuffer, unsigned int *puError,
++                            void *pvLoaderPrivate)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   return DRISUPCreateImageFromBuffer(psPVRContext->psDRISUPContext, iTarget,
++                                      pvBuffer, puError, pvLoaderPrivate);
++}
++#endif
++
++static __DRIimageExtension pvrDRIImage = {
++   .base = {
++      .name = __DRI_IMAGE,
++      .version = PVR_DRI_IMAGE_VERSION,
++   },
++   .createImageFromName = PVRDRICreateImageFromName,
++   .createImageFromRenderbuffer = PVRDRICreateImageFromRenderbuffer,
++   .destroyImage = PVRDRIDestroyImage,
++   .createImage = PVRDRICreateImage,
++   .queryImage = PVRDRIQueryImage,
++   .dupImage = PVRDRIDupImage,
++   .validateUsage = PVRDRIValidateImageUsage,
++   .createImageFromNames = PVRDRICreateImageFromNames,
++   .fromPlanar = PVRDRIFromPlanar,
++   .createImageFromTexture = PVRDRICreateImageFromTexture,
++   .createImageFromFds = PVRDRICreateImageFromFds,
++   .createImageFromDmaBufs = PVRDRICreateImageFromDmaBufs,
++   .blitImage = PVRDRIBlitImage,
++   .getCapabilities = PVRDRIGetCapabilities,
++   .mapImage = PVRDRIMapImage,
++   .unmapImage = PVRDRIUnmapImage,
++   .createImageWithModifiers = PVRDRICreateImageWithModifiers,
++   .createImageFromDmaBufs2 = PVRDRICreateImageFromDmaBufs2,
++   .queryDmaBufFormats = PVRDRIQueryDmaBufFormats,
++   .queryDmaBufModifiers = PVRDRIQueryDmaBufModifiers,
++   .queryDmaBufFormatModifierAttribs =
++   PVRDRIQueryDmaBufFormatModifierAttribs,
++   .createImageFromRenderbuffer2 = PVRDRICreateImageFromRenderbuffer2,
++#if defined(EGL_IMG_cl_image)
++   .createImageFromBuffer = PVRDRICreateImageFromBuffer,
 +#endif
 +};
 +
-+static __DRIrobustnessExtension pvrDRIRobustness =
-+{
-+	.base = { .name = __DRI2_ROBUSTNESS, .version = PVR_DRI2_ROBUSTNESS_VERSION }
++static __DRIrobustnessExtension pvrDRIRobustness = {
++   .base = {
++      .name = __DRI2_ROBUSTNESS,
++      .version = PVR_DRI2_ROBUSTNESS_VERSION,
++   }
 +};
 +
 +static int
-+PVRDRIQueryRendererInteger(__DRIscreen *dri_screen,
-+                           int param, unsigned int *value)
++PVRDRIQueryRendererInteger(__DRIscreen *psDRIScreen, int iAttribute,
++                           unsigned int *puValue)
 +{
-+	switch (param)
-+	{
-+		case __DRI2_RENDERER_HAS_CONTEXT_PRIORITY:
-+			value[0] = 0;
-+			value[0] |= __DRI2_RENDERER_HAS_CONTEXT_PRIORITY_HIGH;
-+			value[0] |= __DRI2_RENDERER_HAS_CONTEXT_PRIORITY_MEDIUM;
-+			value[0] |= __DRI2_RENDERER_HAS_CONTEXT_PRIORITY_LOW;
-+			return 0;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   int res;
 +
-+		default:
-+			return driQueryRendererIntegerCommon(dri_screen, param, value);
-+	}
++   res = DRISUPQueryRendererInteger(psPVRScreen->psDRISUPScreen,
++                                    iAttribute, puValue);
++   if (res == -1)
++      return driQueryRendererIntegerCommon(psDRIScreen, iAttribute, puValue);
++
++   return res;
 +}
 +
 +static int
-+PVRDRIQueryRendererString(__DRIscreen *dri_screen,
-+                          int param, const char **value)
++PVRDRIQueryRendererString(__DRIscreen *psDRIScreen, int iAttribute,
++                          const char **ppszValue)
 +{
-+	return -1;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPQueryRendererString(psPVRScreen->psDRISUPScreen, iAttribute,
++                                    ppszValue);
 +}
 +
 +static const __DRI2rendererQueryExtension pvrDRIRendererQueryExtension = {
-+   .base = { __DRI2_RENDERER_QUERY, 1 },
-+
++   .base = {
++      .name = __DRI2_RENDERER_QUERY,
++      .version = PVR_DRI2_RENDERER_QUERY_VERSION,
++   },
 +   .queryInteger = PVRDRIQueryRendererInteger,
 +   .queryString = PVRDRIQueryRendererString,
 +};
 +
 +
-+#if defined(__DRI2_FENCE)
-+static void *PVRDRICreateFenceEXT(__DRIcontext *psDRIContext)
++static void *
++PVRDRICreateFenceEXT(__DRIcontext *psDRIContext)
 +{
-+	PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
-+	PVRDRIScreen *psPVRScreen = psPVRContext->psPVRScreen;
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+	return PVRDRICreateFenceImpl(psPVRContext->eAPI,
-+				     psPVRScreen->psImpl,
-+				     psPVRContext->psImpl);
++   return DRISUPCreateFence(psPVRContext->psDRISUPContext);
 +}
 +
-+static void PVRDRIDestroyFenceEXT(__DRIscreen *psDRIScreen, void *psDRIFence)
++static void
++PVRDRIDestroyFenceEXT(__DRIscreen *psDRIScreen, void *pvFence)
 +{
-+	(void)psDRIScreen;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
 +
-+	PVRDRIDestroyFenceImpl(psDRIFence);
++   return DRISUPDestroyFence(psPVRScreen->psDRISUPScreen, pvFence);
 +}
 +
-+static GLboolean PVRDRIClientWaitSyncEXT(__DRIcontext *psDRIContext,
-+					 void *psDRIFence,
-+					 unsigned uFlags,
-+					 uint64_t uiTimeout)
++static GLboolean
++PVRDRIClientWaitSyncEXT(__DRIcontext *psDRIContext, void *pvFence,
++                        unsigned int uFlags, uint64_t uTimeout)
 +{
-+	bool bFlushCommands = (uFlags & __DRI2_FENCE_FLAG_FLUSH_COMMANDS);
-+	bool bTimeout = (uiTimeout != __DRI2_FENCE_TIMEOUT_INFINITE);
++   struct DRISUPContext *psDRISUPContext;
 +
-+	if (psDRIContext && bFlushCommands)
-+	{
-+		PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
-+		PVRDRIDrawable *psPVRDrawable = psPVRContext->psPVRDrawable;
++   if (psDRIContext) {
++      PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+		(void) PVRDRIEGLFlushBuffers(psPVRContext->eAPI,
-+					     psPVRContext->psPVRScreen->psImpl,
-+					     psPVRContext->psImpl,
-+					     psPVRDrawable ? psPVRDrawable->psImpl : NULL,
-+					     true, false, false);
-+	}
++      psDRISUPContext = psPVRContext->psDRISUPContext;
++   } else {
++      psDRISUPContext = NULL;
++   }
 +
-+	return PVRDRIClientWaitSyncImpl(PVRDRI_API_NONE,
-+					NULL,
-+					psDRIFence,
-+					false,
-+					bTimeout,
-+					uiTimeout);
++   return DRISUPClientWaitSync(psDRISUPContext, pvFence, uFlags, uTimeout);
 +}
 +
-+static void PVRDRIServerWaitSyncEXT(__DRIcontext *psDRIContext,
-+				    void *psDRIFence,
-+				    unsigned uFlags)
++static void
++PVRDRIServerWaitSyncEXT(__DRIcontext *psDRIContext, void *pvFence,
++                        unsigned int uFlags)
 +{
-+	(void)uFlags;
-+	assert(uFlags == 0);
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+	if (psDRIFence)
-+	{
-+		PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
-+
-+		if (!PVRDRIServerWaitSyncImpl(psPVRContext->eAPI,
-+					      psPVRContext->psImpl,
-+					      psDRIFence))
-+		{
-+			__driUtilMessage("%s: Server wait sync failed",
-+					 __func__);
-+		}
-+	}
++   return DRISUPServerWaitSync(psPVRContext->psDRISUPContext, pvFence, uFlags);
 +}
 +
-+static unsigned PVRDRIGetFenceCapabilitiesEXT(__DRIscreen *psDRIScreen)
++static unsigned int
++PVRDRIGetFenceCapabilitiesEXT(__DRIscreen *psDRIScreen)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
 +
-+	return PVRDRIGetFenceCapabilitiesImpl(psPVRScreen->psImpl);
++   return DRISUPGetFenceCapabilities(psPVRScreen->psDRISUPScreen);
 +}
 +
-+static void *PVRDRICreateFenceFdEXT(__DRIcontext *psDRIContext, int iFd)
++static void *
++PVRDRICreateFenceFdEXT(__DRIcontext *psDRIContext, int iFD)
 +{
-+	PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
-+	PVRDRIScreen *psPVRScreen = psPVRContext->psPVRScreen;
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+	return PVRDRICreateFenceFdImpl(psPVRContext->eAPI,
-+				       psPVRScreen->psImpl,
-+				       psPVRContext->psImpl,
-+				       iFd);
++   return DRISUPCreateFenceFD(psPVRContext->psDRISUPContext, iFD);
 +}
 +
-+static int PVRDRIGetFenceFdEXT(__DRIscreen *psDRIScreen, void *psDRIFence)
++static int
++PVRDRIGetFenceFdEXT(__DRIscreen *psDRIScreen, void *pvFence)
 +{
-+	(void)psDRIScreen;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
 +
-+	return PVRDRIGetFenceFdImpl(psDRIFence);
++   return DRISUPGetFenceFD(psPVRScreen->psDRISUPScreen, pvFence);
 +}
 +
-+const __DRI2fenceExtension pvrDRIFenceExtension =
++static void *
++PVRDRIGetFenceFromClEventEXT(__DRIscreen *psDRIScreen, intptr_t iClEvent)
 +{
-+	.base				= { .name = __DRI2_FENCE, .version = PVR_DRI2_FENCE_VERSION },
-+	.create_fence			= PVRDRICreateFenceEXT,
-+	/* Not currently supported */
-+	.get_fence_from_cl_event	= NULL,
-+	.destroy_fence			= PVRDRIDestroyFenceEXT,
-+	.client_wait_sync		= PVRDRIClientWaitSyncEXT,
-+	.server_wait_sync		= PVRDRIServerWaitSyncEXT,
-+	.get_capabilities		= PVRDRIGetFenceCapabilitiesEXT,
-+	.create_fence_fd		= PVRDRICreateFenceFdEXT,
-+	.get_fence_fd			= PVRDRIGetFenceFdEXT,
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPGetFenceFromCLEvent(psPVRScreen->psDRISUPScreen, iClEvent);
++}
++
++__DRI2fenceExtension pvrDRIFenceExtension = {
++   .base = {
++      .name = __DRI2_FENCE,
++      .version = PVR_DRI2_FENCE_VERSION,
++   },
++   .create_fence = PVRDRICreateFenceEXT,
++   .get_fence_from_cl_event = PVRDRIGetFenceFromClEventEXT,
++   .destroy_fence = PVRDRIDestroyFenceEXT,
++   .client_wait_sync = PVRDRIClientWaitSyncEXT,
++   .server_wait_sync = PVRDRIServerWaitSyncEXT,
++   .get_capabilities = PVRDRIGetFenceCapabilitiesEXT,
++   .create_fence_fd = PVRDRICreateFenceFdEXT,
++   .get_fence_fd = PVRDRIGetFenceFdEXT,
 +};
-+#endif /* defined(__DRI2_FENCE) */
++
++static void
++PVRDRISetDamageRegion(__DRIdrawable *psDRIDrawable,
++                      unsigned int uNRects, int *piRects)
++{
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++
++   DRISUPSetDamageRegion(psPVRDrawable->psDRISUPDrawable, uNRects, piRects);
++}
++
++#if defined(__DRI2_BUFFER_DAMAGE)
++const __DRI2bufferDamageExtension pvrDRIbufferDamageExtension = {
++   .base = {
++      .name = __DRI2_BUFFER_DAMAGE,
++      .version = PVR_DRI2_BUFFER_DAMAGE_VERSION,
++   },
++   .set_damage_region = PVRDRISetDamageRegion,
++};
++#endif
 +
 +/*
 + * Extension lists
@@ -5583,71 +7419,64 @@
 + * NOTE: When adding a new screen extension asScreenExtensionVersionInfo
 + *       should also be updated accordingly.
 + */
-+static const __DRIextension *apsScreenExtensions[] =
-+{
-+	&pvrDRITexBufferExtension.base,
-+	&pvrDRI2FlushExtension.base,
-+	&pvrDRIImage.base,
-+	&pvrDRIRobustness.base,
-+	&pvrDRIRendererQueryExtension.base,
-+#if defined(__DRI2_FENCE)
-+	&pvrDRIFenceExtension.base,
++static const __DRIextension *apsScreenExtensions[] = {
++   &pvrDRITexBufferExtension.base,
++   &pvrDRI2FlushExtension.base,
++   &pvrDRIImage.base,
++   &pvrDRIRobustness.base,
++   &pvrDRIRendererQueryExtension.base,
++   &pvrDRIFenceExtension.base,
++#if defined(__DRI2_BUFFER_DAMAGE)
++   &pvrDRIbufferDamageExtension.base,
 +#endif
-+	&dri2ConfigQueryExtension.base,
-+	NULL
++   &dri2ConfigQueryExtension.base,
++   NULL
 +};
 +
-+static const __DRIextension asScreenExtensionVersionInfo[] =
-+{
-+	{ .name = __DRI_TEX_BUFFER, .version = __DRI_TEX_BUFFER_VERSION },
-+	{ .name = __DRI2_FLUSH, .version = __DRI2_FLUSH_VERSION },
-+	{ .name = __DRI_IMAGE, .version = __DRI_IMAGE_VERSION },
-+	{ .name = __DRI2_ROBUSTNESS, .version = __DRI2_ROBUSTNESS_VERSION },
-+#if defined(__DRI2_FENCE)
-+	{ .name = __DRI2_FENCE, .version = __DRI2_FENCE_VERSION },
++static const __DRIextension asScreenExtensionVersionInfo[] = {
++   {.name = __DRI_TEX_BUFFER,.version = __DRI_TEX_BUFFER_VERSION},
++   {.name = __DRI2_FLUSH,.version = __DRI2_FLUSH_VERSION},
++   {.name = __DRI_IMAGE,.version = __DRI_IMAGE_VERSION},
++   {.name = __DRI2_ROBUSTNESS,.version = __DRI2_ROBUSTNESS_VERSION},
++   {.name = __DRI2_RENDERER_QUERY,.version = __DRI2_RENDERER_QUERY_VERSION},
++   {.name = __DRI2_FENCE,.version = __DRI2_FENCE_VERSION},
++#if defined(__DRI2_BUFFER_DAMAGE)
++   {.name = __DRI2_BUFFER_DAMAGE,.version = __DRI2_BUFFER_DAMAGE_VERSION},
 +#endif
-+	{ .name = __DRI2_CONFIG_QUERY, .version = __DRI2_CONFIG_QUERY_VERSION },
-+	{ .name = NULL, .version = 0 },
++   {.name = __DRI2_CONFIG_QUERY,.version = __DRI2_CONFIG_QUERY_VERSION},
++   {.name = NULL,.version = 0},
 +};
 +
-+const __DRIextension **PVRDRIScreenExtensions(void)
++const __DRIextension **
++PVRDRIScreenExtensions(void)
 +{
-+	if (!PVRDRIBlitEGLImage_IsSupported())
-+	{
-+		pvrDRIImage.base.version = 8;
-+	}
-+	else if (!PVRDRIMapEGLImage_IsSupported())
-+	{
-+		pvrDRIImage.base.version = 11;
-+	}
-+	else if (!PVRDRIBufferGetOffset_IsSupported())
-+	{
-+		pvrDRIImage.base.version = 12;
-+	}
-+	else if (!PVRDRIBufferCreateWithModifiers_IsSupported())
-+	{
-+		pvrDRIImage.base.version = 13;
-+	}
-+	else if (!PVRDRIBufferCreateFromFdsWithModifier_IsSupported())
-+	{
-+		pvrDRIImage.base.version = 14;
-+	}
-+
-+	return apsScreenExtensions;
++   return apsScreenExtensions;
 +}
 +
-+const __DRIextension *PVRDRIScreenExtensionVersionInfo(void)
++const __DRIextension *
++PVRDRIScreenExtensionVersionInfo(void)
 +{
-+	return asScreenExtensionVersionInfo;
++   return asScreenExtensionVersionInfo;
 +}
-diff --git a/src/mesa/drivers/dri/pvr/pvrimage.c b/src/mesa/drivers/dri/pvr/pvrimage.c
++
++void
++PVRDRIAdjustExtensions(unsigned int uVersion, unsigned int uMinVersion)
++{
++   switch (uVersion) {
++   default:
++   case 1:
++   case 0:
++      /* The KHR_cl_event2 EGL extension is not supported */
++      pvrDRIFenceExtension.get_fence_from_cl_event = NULL;
++      break;
++   }
++}
+diff --git a/src/mesa/drivers/dri/pvr/pvrext_mod.c b/src/mesa/drivers/dri/pvr/pvrext_mod.c
 new file mode 100644
-index 00000000000..873c852cf9e
+index 00000000000..dfb5c79eeb4
 --- /dev/null
-+++ b/src/mesa/drivers/dri/pvr/pvrimage.c
-@@ -0,0 +1,1420 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
++++ b/src/mesa/drivers/dri/pvr/pvrext_mod.c
+@@ -0,0 +1,276 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -5672,1408 +7501,264 @@
 + * THE SOFTWARE.
 + */
 +
++#include <dlfcn.h>
 +#include <assert.h>
-+#include <xf86drm.h>
 +
 +#include "util/u_atomic.h"
-+#include "dri_util.h"
++#include "pvrdri_mod.h"
 +
-+#include "img_drm_fourcc.h"
-+#include "pvrdri.h"
-+#include "pvrimage.h"
-+#include "EGL/egl.h"
-+#include "EGL/eglext.h"
-+
-+struct PVRDRIImageShared
++static void
++PVRDRIFlushDrawableContext(struct DRISUPDrawable *psPVRDrawable,
++                           struct DRISUPContext *psPVRContext)
 +{
-+	int iRefCount;
++   struct DRISUPContext *psPVRDrawContext = psPVRDrawable->psPVRContext;
 +
-+	PVRDRIScreen *psPVRScreen;
-+
-+	PVRDRIImageType eType;
-+	const PVRDRIImageFormat *psFormat;
-+	IMG_YUV_COLORSPACE eColourSpace;
-+	IMG_YUV_CHROMA_INTERP eChromaUInterp;
-+	IMG_YUV_CHROMA_INTERP eChromaVInterp;
-+
-+	PVRDRIBufferImpl *psBuffer;
-+	IMGEGLImage *psEGLImage;
-+	PVRDRIEGLImageType eglImageType;
-+	struct PVRDRIImageShared *psAncestor;
-+};
-+
-+struct __DRIimageRec
-+{
-+	int iRefCount;
-+
-+	void *loaderPrivate;
-+
-+	struct PVRDRIImageShared *psShared;
-+
-+	IMGEGLImage *psEGLImage;
-+};
-+
-+
-+static struct PVRDRIImageShared *
-+CommonImageSharedSetup(PVRDRIScreen *psPVRScreen, PVRDRIImageType eType)
-+{
-+	struct PVRDRIImageShared *shared;
-+
-+	shared = calloc(1, sizeof(*shared));
-+	if (!shared)
-+	{
-+		return NULL;
-+	}
-+
-+	shared->psPVRScreen = psPVRScreen;
-+	shared->eType = eType;
-+	shared->iRefCount = 1;
-+
-+	assert(shared->eColourSpace == IMG_COLORSPACE_UNDEFINED &&
-+	       shared->eChromaUInterp == IMG_CHROMA_INTERP_UNDEFINED &&
-+	       shared->eChromaVInterp == IMG_CHROMA_INTERP_UNDEFINED);
-+
-+	return shared;
++   if (psPVRDrawContext) {
++      PVRDRIEGLFlushBuffers(psPVRDrawContext->eAPI,
++                            psPVRDrawContext->psPVRScreen->psImpl,
++                            psPVRDrawContext->psImpl,
++                            psPVRDrawable->psImpl,
++                            false,
++                            false, (psPVRDrawContext != psPVRContext));
++   }
 +}
 +
-+static void DestroyImageShared(struct PVRDRIImageShared *shared)
++void
++DRIMODSetTexBuffer2(struct DRISUPContext *psPVRContext, int iTarget,
++                    int iFormat, struct DRISUPDrawable *psPVRDrawable)
 +{
-+	int iRefCount = p_atomic_dec_return(&shared->iRefCount);
++   (void) iTarget;
++   (void) iFormat;
 +
-+	assert(iRefCount >= 0);
++   if (!psPVRDrawable->bInitialised) {
++      if (!PVRDRIDrawableInit(psPVRDrawable)) {
++         __driUtilMessage("%s: Couldn't initialise pixmap", __func__);
++         return;
++      }
++   }
 +
-+	if (iRefCount > 0)
-+	{
-+		return;
-+	}
-+
-+	switch (shared->eType)
-+	{
-+		case PVRDRI_IMAGE_FROM_NAMES:
-+		case PVRDRI_IMAGE_FROM_DMABUFS:
-+		case PVRDRI_IMAGE:
-+			if (shared->psBuffer)
-+			{
-+				PVRDRIBufferDestroy(shared->psBuffer);
-+			}
-+			assert(!shared->psAncestor);
-+			free(shared);
-+			return;
-+		case PVRDRI_IMAGE_FROM_EGLIMAGE:
-+			PVRDRIEGLImageDestroyExternal(shared->psPVRScreen->psImpl,
-+			                              shared->psEGLImage,
-+						      shared->eglImageType);
-+			free(shared);
-+			return;
-+		case PVRDRI_IMAGE_SUBIMAGE:
-+			if (shared->psBuffer)
-+			{
-+				PVRDRIBufferDestroy(shared->psBuffer);
-+			}
-+			if (shared->psAncestor)
-+			{
-+				DestroyImageShared(shared->psAncestor);
-+			}
-+			free(shared);
-+			return;
-+	}
-+
-+	assert(!"unknown image type");
-+	free(shared);
++   PVRDRIFlushDrawableContext(psPVRDrawable, psPVRContext);
++   PVRDRI2BindTexImage(psPVRContext->eAPI, psPVRContext->psPVRScreen->psImpl,
++                       psPVRContext->psImpl, psPVRDrawable->psImpl);
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageSharedFromEGLImage(__DRIscreen *screen,
-+                              IMGEGLImage *psEGLImage,
-+			      PVRDRIEGLImageType eglImageType)
++void
++DRIMODReleaseTexBuffer(struct DRISUPContext *psPVRContext, int iTarget,
++                       struct DRISUPDrawable *psPVRDrawable)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	struct PVRDRIImageShared *shared;
-+	PVRDRIBufferAttribs sAttribs;
-+	const PVRDRIImageFormat *psFormat;
++   (void) iTarget;
 +
-+	PVRDRIEGLImageGetAttribs(psEGLImage, &sAttribs);
-+
-+	psFormat = PVRDRIIMGPixelFormatToImageFormat(psPVRScreen,
-+						     sAttribs.ePixFormat);
-+	if (!psFormat)
-+	{
-+		return NULL;
-+	}
-+
-+	shared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE_FROM_EGLIMAGE);
-+	if (!shared)
-+	{
-+		return NULL;
-+	}
-+
-+	shared->psEGLImage = psEGLImage;
-+	shared->psFormat = psFormat;
-+	shared->eglImageType = eglImageType;
-+
-+	return shared;
++   PVRDRI2ReleaseTexImage(psPVRContext->eAPI,
++                          psPVRContext->psPVRScreen->psImpl,
++                          psPVRContext->psImpl, psPVRDrawable->psImpl);
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageSharedFromNames(__DRIscreen *screen,
-+			   int width,
-+			   int height,
-+			   int fourcc,
-+			   int *names,
-+			   int num_names,
-+			   int *strides,
-+			   int *offsets)
++void
++DRIMODFlush(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	struct PVRDRIImageShared *shared;
-+	const PVRDRIImageFormat *psFormat;
-+	unsigned auiWidthShift[DRI_PLANES_MAX];
-+	unsigned auiHeightShift[DRI_PLANES_MAX];
-+	int i;
++   struct DRISUPContext *psPVRContext = psPVRDrawable->psPVRContext;
 +
-+	psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, fourcc);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported DRI FourCC (fourcc = 0x%X)\n",
-+			     __func__, fourcc);
-+		return NULL;
-+	}
-+
-+	if (psFormat->uiNumPlanes < num_names)
-+	{
-+		errorMessage("%s: Unexpected number of names for DRI FourCC (names = %d, fourcc = 0x%X)\n",
-+			     __func__, num_names, fourcc);
-+		return NULL;
-+	}
-+
-+	for (i = 0; i < num_names; i++)
-+	{
-+		if (offsets[i] < 0)
-+		{
-+			errorMessage("%s: Offset %d unsupported (value = %d)\n",
-+				     __func__, i, offsets[i]);
-+			return NULL;
-+		}
-+
-+		auiWidthShift[i] = psFormat->sPlanes[i].uiWidthShift;
-+		auiHeightShift[i] = psFormat->sPlanes[i].uiHeightShift;
-+	}
-+
-+	shared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE_FROM_NAMES);
-+	if (!shared)
-+	{
-+		return NULL;
-+	}
-+
-+	shared->psBuffer = PVRDRIBufferCreateFromNames(psPVRScreen->psImpl,
-+						        width,
-+						        height,
-+						        num_names,
-+						        names,
-+						        strides,
-+						        offsets,
-+						        auiWidthShift,
-+						        auiHeightShift);
-+
-+	if (!shared->psBuffer)
-+	{
-+		errorMessage("%s: Failed to create buffer for shared image\n", __func__);
-+		goto ErrorDestroyImage;
-+	}
-+
-+	shared->psFormat = psFormat;
-+	shared->eColourSpace =
-+		PVRDRIToIMGColourSpace(psFormat,
-+				       __DRI_YUV_COLOR_SPACE_UNDEFINED,
-+				       __DRI_YUV_RANGE_UNDEFINED);
-+	shared->eChromaUInterp =
-+		PVRDRIChromaSittingToIMGInterp(psFormat,
-+					       __DRI_YUV_CHROMA_SITING_UNDEFINED);
-+	shared->eChromaVInterp =
-+		PVRDRIChromaSittingToIMGInterp(psFormat,
-+					       __DRI_YUV_CHROMA_SITING_UNDEFINED);
-+
-+	return shared;
-+
-+ErrorDestroyImage:
-+	DestroyImageShared(shared);
-+
-+	return NULL;
++   PVRDRIFlushBuffersForSwap(psPVRContext, psPVRDrawable);
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageSharedFromDmaBufs(__DRIscreen *screen,
-+			     int width,
-+			     int height,
-+			     int fourcc,
-+			     uint64_t modifier,
-+			     int *fds,
-+			     int num_fds,
-+			     int *strides,
-+			     int *offsets,
-+			     enum __DRIYUVColorSpace color_space,
-+			     enum __DRISampleRange sample_range,
-+			     enum __DRIChromaSiting horiz_siting,
-+			     enum __DRIChromaSiting vert_siting,
-+			     unsigned *error)
++void
++DRIMODInvalidate(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	struct PVRDRIImageShared *shared;
-+	const PVRDRIImageFormat *psFormat;
-+	unsigned auiWidthShift[DRI_PLANES_MAX];
-+	unsigned auiHeightShift[DRI_PLANES_MAX];
-+	int i;
-+
-+	psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, fourcc);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported DRI FourCC (fourcc = 0x%X)\n",
-+			     __func__, fourcc);
-+		*error = __DRI_IMAGE_ERROR_BAD_MATCH;
-+		return NULL;
-+	}
-+
-+	/* When a modifier isn't specified, skip the validation */
-+	if (modifier != DRM_FORMAT_MOD_INVALID)
-+	{
-+		/*
-+		 * The modifier validation has to be done in this "higher" level
-+		 * function instead of pvr_dri_support. The support for
-+		 * modifiers is done on per format basis, but there is no way
-+		 * to pass the format information down to the plane creation API
-+		 * in pvr_dri_support.
-+		 */
-+		if (!PVRDRIValidateImageModifier(psPVRScreen, fourcc, modifier))
-+		{
-+			errorMessage("%s: Unsupported mod (fmt = %#x, mod = %"PRIx64")\n",
-+				     __func__, fourcc, modifier);
-+			*error = __DRI_IMAGE_ERROR_BAD_MATCH;
-+			return NULL;
-+		}
-+	}
-+
-+	if (psFormat->uiNumPlanes < num_fds)
-+	{
-+		errorMessage("%s: Unexpected number of fds for format (fds = %d, fourcc = 0x%X)\n",
-+			     __func__, num_fds, fourcc);
-+		*error = __DRI_IMAGE_ERROR_BAD_MATCH;
-+		return NULL;
-+	}
-+
-+	for (i = 0; i < num_fds; i++)
-+	{
-+		if (offsets[i] < 0)
-+		{
-+			errorMessage("%s: Offset %d unsupported (value = %d)\n",
-+				     __func__, i, offsets[i]);
-+			*error = __DRI_IMAGE_ERROR_BAD_ACCESS;
-+			return NULL;
-+		}
-+
-+		auiWidthShift[i] = psFormat->sPlanes[i].uiWidthShift;
-+		auiHeightShift[i] = psFormat->sPlanes[i].uiHeightShift;
-+	}
-+
-+	shared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE_FROM_DMABUFS);
-+	if (!shared)
-+	{
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	shared->psBuffer = PVRDRIBufferCreateFromFdsWithModifier(psPVRScreen->psImpl,
-+								  width,
-+								  height,
-+								  modifier,
-+								  num_fds,
-+								  fds,
-+								  strides,
-+								  offsets,
-+								  auiWidthShift,
-+								  auiHeightShift);
-+
-+	if (!shared->psBuffer)
-+	{
-+		errorMessage("%s: Failed to create buffer for shared image\n", __func__);
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		goto ErrorDestroyImage;
-+	}
-+
-+	shared->psFormat = psFormat;
-+	shared->eColourSpace = PVRDRIToIMGColourSpace(psFormat, color_space, sample_range);
-+	shared->eChromaUInterp = PVRDRIChromaSittingToIMGInterp(psFormat, horiz_siting);
-+	shared->eChromaVInterp = PVRDRIChromaSittingToIMGInterp(psFormat, vert_siting);
-+
-+	return shared;
-+
-+ErrorDestroyImage:
-+	DestroyImageShared(shared);
-+
-+	return NULL;
++   if (psPVRDrawable->psPVRScreen->bUseInvalidate)
++      p_atomic_inc(&psPVRDrawable->iInfoInvalid);
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageShared(__DRIscreen *screen,
-+                  int width,
-+                  int height,
-+                  int format,
-+                  unsigned int use,
-+                  int *piStride)
++void
++DRIMODFlushWithFlags(struct DRISUPContext *psPVRContext,
++                     struct DRISUPDrawable *psPVRDrawable,
++                     unsigned int uFlags, unsigned int uThrottleReason)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	struct PVRDRIImageShared *shared;
-+	const PVRDRIImageFormat *psFormat;
-+	unsigned int uiStride;
++   (void) uThrottleReason;
 +
-+	if ((use & __DRI_IMAGE_USE_CURSOR) && (use & __DRI_IMAGE_USE_SCANOUT))
-+	{
-+		return NULL;
-+	}
-+
-+	psFormat = PVRDRIFormatToImageFormat(psPVRScreen, format);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported DRI image format (format = 0x%X)\n",
-+			     __func__, format);
-+		return NULL;
-+	}
-+
-+	if (psFormat->uiNumPlanes != 1)
-+	{
-+		errorMessage("%s: Only single plane formats are supported (format 0x%X has %u planes)\n",
-+			     __func__, format, psFormat->uiNumPlanes);
-+		return NULL;
-+	}
-+
-+	shared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE);
-+	if (!shared)
-+	{
-+		return NULL;
-+	}
-+
-+	shared->psBuffer =
-+		PVRDRIBufferCreate(psPVRScreen->psImpl,
-+				   width,
-+				   height,
-+				   PVRDRIPixFmtGetBPP(psFormat->eIMGPixelFormat),
-+				   use,
-+				   &uiStride);
-+	if (!shared->psBuffer)
-+	{
-+		errorMessage("%s: Failed to create buffer\n", __func__);
-+		goto ErrorDestroyImage;
-+	}
-+
-+	shared->psFormat = psFormat;
-+
-+	*piStride = uiStride;
-+
-+	return shared;
-+
-+ErrorDestroyImage:
-+	DestroyImageShared(shared);
-+
-+	return NULL;
++   if ((uFlags & PVRDRI_FLUSH_DRAWABLE) != 0) {
++      PVRDRIFlushBuffersForSwap(psPVRContext, psPVRDrawable);
++   } else if ((uFlags & PVRDRI_FLUSH_CONTEXT) != 0) {
++      /*
++       * PVRDRI_FLUSH__CONTEXT means "glFlush". Most callers also specify
++       * PVRDRI_FLUSH_DRAWABLE. An exception is GBM, which flushes after an
++       * unmap, when there doesn't appear to be a need to flush outstanding
++       * GPU operations.
++       */
++   }
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageSharedWithModifiers(__DRIscreen *screen,
-+			       int width,
-+			       int height,
-+			       int format,
-+			       const uint64_t *modifiers,
-+			       unsigned int modifier_count,
-+			       int *piStride)
++int
++DRIMODQueryRendererInteger(struct DRISUPScreen *psPVRScreen, int iAttribute,
++                           unsigned int *puValue)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	struct PVRDRIImageShared *shared;
-+	const PVRDRIImageFormat *psFormat;
-+	unsigned int uiStride;
++   (void) psPVRScreen;
 +
-+	psFormat = PVRDRIFormatToImageFormat(psPVRScreen, format);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported DRI image format (format = 0x%X)\n",
-+			     __func__, format);
-+		return NULL;
-+	}
-+
-+	shared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE);
-+	if (!shared)
-+	{
-+		return NULL;
-+	}
-+
-+	shared->psBuffer = PVRDRIBufferCreateWithModifiers(psPVRScreen->psImpl,
-+							   width,
-+							   height,
-+							   psFormat->iDRIFourCC,
-+							   psFormat->eIMGPixelFormat,
-+							   modifiers,
-+							   modifier_count,
-+							   &uiStride);
-+	if (!shared->psBuffer)
-+	{
-+		errorMessage("%s: Failed to create buffer\n", __func__);
-+		goto ErrorDestroyImage;
-+	}
-+
-+	shared->psFormat = psFormat;
-+
-+	*piStride = uiStride;
-+
-+	return shared;
-+
-+ErrorDestroyImage:
-+	DestroyImageShared(shared);
-+
-+	return NULL;
++   switch (iAttribute) {
++   case PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY:
++      puValue[0] = 0;
++      puValue[0] |= PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_HIGH;
++      puValue[0] |= PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_MEDIUM;
++      puValue[0] |= PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_LOW;
++      return 0;
++   case PVRDRI_RENDERER_HAS_FRAMEBUFFER_SRGB:
++      puValue[0] = 1;
++      return 0;
++   default:
++      return -1;
++   }
 +}
 +
-+static struct PVRDRIImageShared *RefImageShared(struct PVRDRIImageShared *shared)
++int
++DRIMODQueryRendererString(struct DRISUPScreen *psPVRScreen, int iAttribute,
++                          const char **ppszValue)
 +{
-+	int iRefCount = p_atomic_inc_return(&shared->iRefCount);
++   (void) psPVRScreen;
++   (void) iAttribute;
++   (void) ppszValue;
 +
-+	(void)iRefCount;
-+	assert(iRefCount > 1);
-+
-+	return shared;
++   return -1;
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageSharedForSubImage(struct PVRDRIImageShared *psParent, int plane)
++void *
++DRIMODCreateFence(struct DRISUPContext *psPVRContext)
 +{
-+	struct PVRDRIImageShared *shared;
-+	struct PVRDRIImageShared *psAncestor;
-+	PVRDRIBufferImpl *psBuffer = NULL;
-+
-+	/* Sub-images represent a single plane in the parent image */
-+	if (!psParent->psBuffer)
-+	{
-+		return NULL;
-+	}
-+
-+	/*
-+	 * The ancestor image is the owner of the original buffer that will
-+	 * back the new image. The parent image may be a child of that image
-+	 * itself. The ancestor image must not be destroyed until all the
-+	 * child images that refer to it have been destroyed. A reference
-+	 * will be taken on the ancestor to ensure that is the case.
-+	 * We must distinguish between the parent's buffer and the ancestor's
-+	 * buffer. For example, plane 0 in the parent is not necessarily plane
-+	 * 0 in the ancestor.
-+	 */
-+	psAncestor = psParent;
-+	if (psAncestor->psAncestor)
-+	{
-+		psAncestor = psAncestor->psAncestor;
-+
-+		assert(!psAncestor->psAncestor);
-+	}
-+
-+	psBuffer = PVRDRISubBufferCreate(psParent->psPVRScreen->psImpl,
-+					 psParent->psBuffer,
-+					 plane);
-+	/*
-+	 * Older versions of PVR DRI Support don't support
-+	 * PVRDRISubBufferCreate.
-+	 */
-+	if (!psBuffer)
-+	{
-+		return NULL;
-+	}
-+
-+	shared = CommonImageSharedSetup(NULL, PVRDRI_IMAGE_SUBIMAGE);
-+	if (!shared)
-+	{
-+		goto ErrorDestroyBuffer;
-+	}
-+
-+	shared->psAncestor = RefImageShared(psAncestor);
-+	shared->psBuffer = psBuffer;
-+	shared->psPVRScreen = psParent->psPVRScreen;
-+
-+	shared->psFormat = PVRDRIIMGPixelFormatToImageFormat(psParent->psPVRScreen,
-+							     psParent->psFormat->sPlanes[plane].eIMGPixelFormat);
-+	assert(shared->psFormat);
-+
-+	return shared;
-+
-+ErrorDestroyBuffer:
-+	PVRDRIBufferDestroy(psBuffer);
-+	return NULL;
++   return PVRDRICreateFenceImpl(psPVRContext->eAPI,
++                                psPVRContext->psPVRScreen->psImpl,
++                                psPVRContext->psImpl);
 +}
 +
-+static __DRIimage *CommonImageSetup(void *loaderPrivate)
++void
++DRIMODDestroyFence(struct DRISUPScreen *psPVRScreen, void *pvFence)
 +{
-+	__DRIimage *image;
++   (void) psPVRScreen;
 +
-+	image = calloc(1, sizeof(*image));
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	image->loaderPrivate = loaderPrivate;
-+	image->iRefCount = 1;
-+
-+	return image;
++   PVRDRIDestroyFenceImpl(pvFence);
 +}
 +
-+void PVRDRIDestroyImage(__DRIimage *image)
++bool
++DRIMODClientWaitSync(struct DRISUPContext *psPVRContext, void *pvFence,
++                     unsigned int uFlags, uint64_t uTimeout)
 +{
-+	int iRefCount = p_atomic_dec_return(&image->iRefCount);
++   bool bFlushCommands = (uFlags & PVRDRI_FENCE_FLAG_FLUSH_COMMANDS);
++   bool bTimeout = (uTimeout != PVRDRI_FENCE_TIMEOUT_INFINITE);
 +
-+	assert(iRefCount >= 0);
++   if (psPVRContext && bFlushCommands) {
++      struct DRISUPDrawable *psPVRDrawable;
++      PVRDRIDrawableImpl *psDrawableImpl;
 +
-+	if (iRefCount > 0)
-+	{
-+		return;
-+	}
++      psPVRDrawable = psPVRContext->psPVRDrawable;
++      psDrawableImpl = psPVRDrawable ? psPVRDrawable->psImpl : NULL;
 +
-+	if (image->psShared)
-+	{
-+		DestroyImageShared(image->psShared);
-+	}
++      (void) PVRDRIEGLFlushBuffers(psPVRContext->eAPI,
++                                   psPVRContext->psPVRScreen->psImpl,
++                                   psPVRContext->psImpl,
++                                   psDrawableImpl, true, false, false);
++   }
 +
-+	PVRDRIEGLImageFree(image->psEGLImage);
-+
-+	free(image);
++   return PVRDRIClientWaitSyncImpl(PVRDRI_API_NONE, NULL, pvFence, false,
++                                   bTimeout, uTimeout);
 +}
 +
-+__DRIimage *PVRDRICreateImageFromName(__DRIscreen *screen,
-+				      int width, int height, int format,
-+				      int name, int pitch,
-+				      void *loaderPrivate)
++void
++DRIMODServerWaitSync(struct DRISUPContext *psPVRContext, void *pvFence,
++                     unsigned int uFlags)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	const PVRDRIImageFormat *psFormat;
-+	int iStride;
-+	int iOffset;
++   assert(uFlags == 0);
++   (void) uFlags;
 +
-+	psFormat = PVRDRIFormatToImageFormat(psPVRScreen, format);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported DRI image format (format = 0x%X)\n",
-+			     __func__, format);
-+		return NULL;
-+	}
-+
-+	iStride = pitch * PVRDRIPixFmtGetBlockSize(psFormat->eIMGPixelFormat);
-+	iOffset = 0;
-+
-+	return PVRDRICreateImageFromNames(screen, width, height, psFormat->iDRIFourCC,
-+					  &name, 1, &iStride, &iOffset, loaderPrivate);
++   if (pvFence) {
++      if (!PVRDRIServerWaitSyncImpl(psPVRContext->eAPI,
++                                    psPVRContext->psImpl, pvFence)) {
++         __driUtilMessage("%s: Server wait sync failed", __func__);
++      }
++   }
 +}
 +
-+__DRIimage *PVRDRICreateImageFromRenderbuffer2(__DRIcontext *context,
-+					      int           renderbuffer,
-+                                              void         *loaderPrivate,
-+					      unsigned     *error)
++unsigned int
++DRIMODGetFenceCapabilities(struct DRISUPScreen *psPVRScreen)
 +{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+	__DRIscreen *screen = psPVRContext->psPVRScreen->psDRIScreen;
-+	unsigned e;
-+	IMGEGLImage *psEGLImage;
-+	__DRIimage *image;
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	psEGLImage = PVRDRIEGLImageCreate();
-+	if (!psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	e = PVRDRIGetImageSource(psPVRContext->eAPI,
-+	                         psPVRContext->psPVRScreen->psImpl,
-+	                         psPVRContext->psImpl,
-+	                         EGL_GL_RENDERBUFFER_KHR,
-+	                         (uintptr_t)renderbuffer,
-+	                         0,
-+	                         psEGLImage);
-+
-+	if (e != PVRDRI_IMAGE_ERROR_SUCCESS)
-+	{
-+		PVRDRIEGLImageFree(psEGLImage);
-+		PVRDRIDestroyImage(image);
-+
-+		*error = e;
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(psEGLImage, image);
-+	
-+	/*
-+	 * We can't destroy the image after this point, as the
-+	 * renderbuffer now has a reference to it.
-+	 */
-+	image->psShared = CreateImageSharedFromEGLImage(screen,
-+							psEGLImage,
-+							PVRDRI_EGLIMAGE_IMGEGL);
-+	if (!image->psShared)
-+	{
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageDup(image->psShared->psEGLImage);
-+	if (!image->psEGLImage)
-+	{
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	image->iRefCount++;
-+
-+	*error = __DRI_IMAGE_ERROR_SUCCESS;
-+	return image;
++   return PVRDRIGetFenceCapabilities(psPVRScreen->psImpl);
 +}
 +
-+__DRIimage *PVRDRICreateImageFromRenderbuffer(__DRIcontext *context,
-+                                              int           renderbuffer,
-+                                              void         *loaderPrivate)
++void *
++DRIMODCreateFenceFD(struct DRISUPContext *psPVRContext, int iFD)
 +{
-+	unsigned error;
-+
-+	return PVRDRICreateImageFromRenderbuffer2(context,
-+						  renderbuffer,
-+						  loaderPrivate,
-+						  &error);
++   return PVRDRICreateFenceFd(psPVRContext->eAPI,
++                              psPVRContext->psPVRScreen->psImpl,
++                              psPVRContext->psImpl, iFD);
 +}
 +
-+__DRIimage *PVRDRICreateImage(__DRIscreen *screen,
-+			      int width, int height, int format,
-+			      unsigned int use,
-+			      void *loaderPrivate)
++int
++DRIMODGetFenceFD(struct DRISUPScreen *psPVRScreen, void *pvFence)
 +{
-+	__DRIimage *image;
-+	int iStride;
++   (void) psPVRScreen;
 +
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psShared = CreateImageShared(screen, width, height, format, use, &iStride);
-+	if (!image->psShared)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageCreateFromBuffer(width, height, iStride,
-+							    image->psShared->psFormat->eIMGPixelFormat,
-+							    image->psShared->eColourSpace,
-+							    image->psShared->eChromaUInterp,
-+							    image->psShared->eChromaVInterp,
-+							    image->psShared->psBuffer);
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	return image;
++   return PVRDRIGetFenceFd(pvFence);
 +}
 +
-+__DRIimage *PVRDRICreateImageWithModifiers(__DRIscreen *screen,
-+					   int width, int height, int format,
-+					   const uint64_t *modifiers,
-+					   const unsigned int modifier_count,
-+					   void *loaderPrivate)
++unsigned int
++DRIMODGetNumAPIProcs(struct DRISUPScreen *psPVRScreen, PVRDRIAPIType eAPI)
 +{
-+	__DRIimage *image;
-+	int iStride;
++   (void) psPVRScreen;
 +
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psShared = CreateImageSharedWithModifiers(screen, width, height, format,
-+							 modifiers, modifier_count,
-+							 &iStride);
-+	if (!image->psShared)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageCreateFromBuffer(width, height, iStride,
-+							    image->psShared->psFormat->eIMGPixelFormat,
-+							    image->psShared->eColourSpace,
-+							    image->psShared->eChromaUInterp,
-+							    image->psShared->eChromaVInterp,
-+							    image->psShared->psBuffer);
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	return image;
++   return PVRDRIGetNumAPIFuncs(eAPI);
 +}
 +
-+GLboolean PVRDRIQueryImage(__DRIimage *image, int attrib, int *value_ptr)
++const char *
++DRIMODGetAPIProcName(struct DRISUPScreen *psPVRScreen, PVRDRIAPIType eAPI,
++                     unsigned int uIndex)
 +{
-+	struct PVRDRIImageShared *shared = image->psShared;
-+	PVRDRIBufferAttribs sAttribs;
-+	int value;
-+	uint64_t ulValue;
++   (void) psPVRScreen;
 +
-+	PVRDRIEGLImageGetAttribs(image->psEGLImage, &sAttribs);
-+
-+	if (attrib == __DRI_IMAGE_ATTRIB_HANDLE ||
-+	    attrib == __DRI_IMAGE_ATTRIB_NAME ||
-+	    attrib == __DRI_IMAGE_ATTRIB_FD ||
-+	    attrib == __DRI_IMAGE_ATTRIB_OFFSET)
-+	{
-+		if (!shared->psFormat)
-+		{
-+			return GL_FALSE;
-+		}
-+
-+		switch (shared->psFormat->iDRIComponents)
-+		{
-+			case __DRI_IMAGE_COMPONENTS_R:
-+			case __DRI_IMAGE_COMPONENTS_RG:
-+			case __DRI_IMAGE_COMPONENTS_RGB:
-+			case __DRI_IMAGE_COMPONENTS_RGBA:
-+#if defined(__DRI_IMAGE_COMPONENTS_EXTERNAL)
-+			case __DRI_IMAGE_COMPONENTS_EXTERNAL:
-+#endif
-+				break;
-+			default:
-+				return GL_FALSE;
-+		}
-+	}
-+
-+	switch (attrib)
-+	{
-+		case __DRI_IMAGE_ATTRIB_STRIDE:
-+			*value_ptr = sAttribs.uiStrideInBytes;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_HANDLE:
-+			value = PVRDRIBufferGetHandle(shared->psBuffer);
-+			if (value == -1)
-+			{
-+				return GL_FALSE;
-+			}
-+
-+			*value_ptr = value;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_NAME:
-+			value = PVRDRIBufferGetName(shared->psBuffer);
-+			if (value == -1)
-+			{
-+				return GL_FALSE;
-+			}
-+
-+			*value_ptr = value;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_FORMAT:
-+			if (!shared->psFormat)
-+			{
-+				return GL_FALSE;
-+			}
-+
-+			*value_ptr = shared->psFormat->iDRIFormat;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_WIDTH:
-+			*value_ptr = sAttribs.uiWidth;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_HEIGHT:
-+			*value_ptr = sAttribs.uiHeight;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_COMPONENTS:
-+			if (!shared->psFormat || !shared->psFormat->iDRIComponents)
-+			{
-+				return GL_FALSE;
-+			}
-+
-+			*value_ptr = shared->psFormat->iDRIComponents;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_FD:
-+			value = PVRDRIBufferGetFd(shared->psBuffer);
-+			if (value == -1)
-+			{
-+				return GL_FALSE;
-+			}
-+
-+			*value_ptr = value;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_FOURCC:
-+			*value_ptr = shared->psFormat->iDRIFourCC;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_NUM_PLANES:
-+			*value_ptr = (int)shared->psFormat->uiNumPlanes;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_OFFSET:
-+			*value_ptr = PVRDRIBufferGetOffset(shared->psBuffer);
-+			break;
-+		case __DRI_IMAGE_ATTRIB_MODIFIER_LOWER:
-+			ulValue = PVRDRIBufferGetModifier(shared->psBuffer);
-+			*value_ptr = (int)(ulValue & 0xffffffff);
-+			break;
-+		case __DRI_IMAGE_ATTRIB_MODIFIER_UPPER:
-+			ulValue = PVRDRIBufferGetModifier(shared->psBuffer);
-+			*value_ptr = (int)((ulValue >> 32) & 0xffffffff);
-+			break;
-+		default:
-+			return GL_FALSE;
-+	}
-+
-+	return GL_TRUE;
++   return PVRDRIGetAPIFunc(eAPI, uIndex);
 +}
 +
-+__DRIimage *PVRDRIDupImage(__DRIimage *srcImage, void *loaderPrivate)
++void *
++DRIMODGetAPIProcAddress(struct DRISUPScreen *psPVRScreen, PVRDRIAPIType eAPI,
++                        unsigned int uIndex)
 +{
-+	__DRIimage *image;
++   const char *pszFunc;
++   void *pvHandle;
++   void *pvFunc;
++   const char *pszError;
 +
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
++   pszFunc = PVRDRIGetAPIFunc(eAPI, uIndex);
++   if (!pszFunc) {
++      __driUtilMessage("%s: No Proc for API %u at index %u",
++                       __func__, (unsigned int) eAPI, uIndex);
++      return NULL;
++   }
 +
-+	image->psShared = RefImageShared(srcImage->psShared);
++   pvHandle = PVRDRIEGLGetLibHandle(eAPI, psPVRScreen->psImpl);
++   if (!pvHandle) {
++      __driUtilMessage("%s: No library handle for API %u",
++                       __func__, (unsigned int) eAPI);
++      return NULL;
++   }
 +
-+	image->psEGLImage = PVRDRIEGLImageDup(srcImage->psEGLImage);
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
++   (void) dlerror();
++   pvFunc = dlsym(pvHandle, pszFunc);
++   pszError = dlerror();
++   if (pszError)
++      pvFunc = PVRDRIEGLGetProcAddress(eAPI, psPVRScreen->psImpl, pszFunc);
 +
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	return image;
++   return pvFunc;
 +}
 +
-+GLboolean PVRDRIValidateUsage(__DRIimage *image, unsigned int use)
++void
++DRIMODSetDamageRegion(struct DRISUPDrawable *psDRISUPDrawable,
++                      unsigned int uNRects, int *piRects)
 +{
-+	struct PVRDRIImageShared *shared = image->psShared;
-+	__DRIscreen *screen = shared->psPVRScreen->psDRIScreen;
-+
-+	if (use & (__DRI_IMAGE_USE_SCANOUT | __DRI_IMAGE_USE_CURSOR))
-+	{
-+		uint64_t modifier;
-+
-+		/*
-+		 * We are extra strict in this case as an application may ask for a
-+		 * handle so that the memory can be wrapped as a framebuffer/used as
-+		 * a cursor and this can only be done on a card node.
-+		 */
-+		if (drmGetNodeTypeFromFd(screen->fd) != DRM_NODE_PRIMARY)
-+		{
-+			return GL_FALSE;
-+		}
-+
-+		modifier = PVRDRIBufferGetModifier(shared->psBuffer);
-+
-+		if (modifier != DRM_FORMAT_MOD_INVALID &&
-+			modifier != DRM_FORMAT_MOD_LINEAR)
-+		{
-+			return GL_FALSE;
-+		}
-+	}
-+	else if (use & (__DRI_IMAGE_USE_SHARE))
-+	{
-+		/*
-+		 * We are less strict in this case as it's possible to share buffers
-+		 * using prime (but not flink) on a render node so we only need to know
-+		 * whether or not the fd belongs to the display.
-+		 */
-+		if (PVRDRIGetDeviceTypeFromFd(screen->fd) != PVRDRI_DEVICE_TYPE_DISPLAY)
-+		{
-+			return GL_FALSE;
-+		}
-+	}
-+
-+	return GL_TRUE;
++   (void) psDRISUPDrawable;
++   (void) uNRects;
++   (void) piRects;
 +}
-+
-+__DRIimage *PVRDRICreateImageFromNames(__DRIscreen *screen,
-+				       int width, int height, int fourcc,
-+				       int *names, int num_names,
-+				       int *strides, int *offsets,
-+				       void *loaderPrivate)
-+{
-+	__DRIimage *image;
-+	int iStride;
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psShared = CreateImageSharedFromNames(screen, width, height, fourcc,
-+						     names, num_names, strides, offsets);
-+	if (!image->psShared)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	if (image->psShared->psFormat->uiNumPlanes == 1)
-+	{
-+		iStride = strides[0];
-+	}
-+	else
-+	{
-+		iStride = width * PVRDRIPixFmtGetBlockSize(image->psShared->psFormat->eIMGPixelFormat);
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageCreateFromBuffer(width, height,
-+							    iStride,
-+							    image->psShared->psFormat->eIMGPixelFormat,
-+							    image->psShared->eColourSpace,
-+							    image->psShared->eChromaUInterp,
-+							    image->psShared->eChromaVInterp,
-+							    image->psShared->psBuffer);
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	return image;
-+}
-+
-+__DRIimage *PVRDRIFromPlanar(__DRIimage *srcImage, int plane,
-+			     void *loaderPrivate)
-+{
-+	__DRIimage *image;
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psShared = CreateImageSharedForSubImage(srcImage->psShared,
-+						       plane);
-+
-+	if (!image->psShared)
-+	{
-+		if (plane != 0)
-+		{
-+			errorMessage("%s: plane %d not supported\n",
-+				     __func__, plane);
-+		}
-+
-+		image->psShared = RefImageShared(srcImage->psShared);
-+
-+		image->psEGLImage = PVRDRIEGLImageDup(srcImage->psEGLImage);
-+	}
-+	else
-+	{
-+		image->psEGLImage = PVRDRIEGLImageCreateFromSubBuffer(
-+					image->psShared->psFormat->eIMGPixelFormat,
-+					image->psShared->psBuffer);
-+	}
-+
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	return image;
-+}
-+
-+__DRIimage *
-+PVRDRICreateImageFromTexture(__DRIcontext *context,
-+                             int glTarget,
-+                             unsigned texture,
-+                             int depth,
-+                             int level,
-+                             unsigned *error,
-+                             void *loaderPrivate)
-+{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+	__DRIscreen *screen = psPVRContext->psPVRScreen->psDRIScreen;
-+	IMGEGLImage *psEGLImage;
-+	__DRIimage *image;
-+	uint32_t eglTarget;
-+	unsigned e;
-+
-+	switch (glTarget)
-+	{
-+		case GL_TEXTURE_2D:
-+			eglTarget = EGL_GL_TEXTURE_2D_KHR;
-+			break;
-+		case GL_TEXTURE_CUBE_MAP:
-+			eglTarget = EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR + depth;
-+			break;
-+		default:
-+			errorMessage("%s: GL Target %d is not supported\n", __func__, glTarget);
-+			*error = __DRI_IMAGE_ERROR_BAD_PARAMETER;
-+			return NULL;
-+	}
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	psEGLImage = PVRDRIEGLImageCreate();
-+	if (!psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	e = PVRDRIGetImageSource(psPVRContext->eAPI,
-+	                         psPVRContext->psPVRScreen->psImpl,
-+	                         psPVRContext->psImpl,
-+	                         eglTarget,
-+	                         (uintptr_t)texture,
-+	                         (uint32_t)level,
-+	                         psEGLImage);
-+	*error = e;
-+
-+	if (e != PVRDRI_IMAGE_ERROR_SUCCESS)
-+	{
-+		PVRDRIEGLImageFree(psEGLImage);
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(psEGLImage, image);
-+
-+	/*
-+	 * We can't destroy the image after this point, as the
-+	 * texture now has a reference to it.
-+	 */
-+	image->psShared = CreateImageSharedFromEGLImage(screen,
-+							psEGLImage,
-+							PVRDRI_EGLIMAGE_IMGEGL);
-+	if (!image->psShared)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageDup(image->psShared->psEGLImage);
-+	if (!image->psEGLImage)
-+	{
-+		return NULL;
-+	}
-+
-+	image->iRefCount++;
-+
-+	return image;
-+}
-+
-+__DRIimage *PVRDRICreateImageFromFds(__DRIscreen *screen,
-+				     int width, int height, int fourcc,
-+				     int *fds, int num_fds,
-+				     int *strides, int *offsets,
-+				     void *loaderPrivate)
-+{
-+	unsigned error;
-+
-+	return PVRDRICreateImageFromDmaBufs(screen, width, height, fourcc,
-+					    fds, num_fds, strides, offsets,
-+					    __DRI_YUV_COLOR_SPACE_UNDEFINED,
-+					    __DRI_YUV_RANGE_UNDEFINED,
-+					    __DRI_YUV_CHROMA_SITING_UNDEFINED,
-+					    __DRI_YUV_CHROMA_SITING_UNDEFINED,
-+					    &error,
-+					    loaderPrivate);
-+}
-+
-+__DRIimage *
-+PVRDRICreateImageFromBuffer(__DRIcontext *context,
-+                            int target,
-+                            void *buffer,
-+                            unsigned *error,
-+                            void *loaderPrivate)
-+{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+	__DRIscreen *screen = psPVRContext->psPVRScreen->psDRIScreen;
-+	IMGEGLImage *psEGLImage;
-+	__DRIimage *image;
-+
-+	switch (target)
-+	{
-+#if defined(EGL_CL_IMAGE_IMG)
-+		case EGL_CL_IMAGE_IMG:
-+			break;
-+#endif
-+		default:
-+			errorMessage("%s: Target %d is not supported\n", __func__, target);
-+			*error = __DRI_IMAGE_ERROR_BAD_PARAMETER;
-+			return NULL;
-+	}
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	psEGLImage = PVRDRIEGLImageCreate();
-+	if (!psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	*error = PVRDRIGetImageSource(PVRDRI_API_CL,
-+				      psPVRContext->psPVRScreen->psImpl,
-+				      psPVRContext->psImpl,
-+				      target,
-+				      (uintptr_t)buffer,
-+				      0,
-+				      psEGLImage);
-+	if (*error != __DRI_IMAGE_ERROR_SUCCESS)
-+	{
-+		PVRDRIEGLImageFree(psEGLImage);
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(psEGLImage, image);
-+
-+	/*
-+	 * We can't destroy the image after this point, as the
-+	 * OCL image now has a reference to it.
-+	 */
-+	image->psShared = CreateImageSharedFromEGLImage(screen,
-+							psEGLImage,
-+							PVRDRI_EGLIMAGE_IMGOCL);
-+	if (!image->psShared)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageDup(image->psShared->psEGLImage);
-+	if (!image->psEGLImage)
-+	{
-+		return NULL;
-+	}
-+
-+	image->iRefCount++;
-+
-+	return image;
-+}
-+
-+__DRIimage *PVRDRICreateImageFromDmaBufs2(__DRIscreen *screen,
-+					  int width, int height, int fourcc,
-+					  uint64_t modifier,
-+					  int *fds, int num_fds,
-+					  int *strides, int *offsets,
-+					  enum __DRIYUVColorSpace color_space,
-+					  enum __DRISampleRange sample_range,
-+					  enum __DRIChromaSiting horiz_siting,
-+					  enum __DRIChromaSiting vert_siting,
-+					  unsigned *error,
-+					  void *loaderPrivate)
-+{
-+	__DRIimage *image;
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	image->psShared = CreateImageSharedFromDmaBufs(screen, width, height, fourcc,
-+						       modifier,
-+						       fds, num_fds, strides, offsets,
-+						       color_space, sample_range,
-+						       horiz_siting, vert_siting,
-+						       error);
-+	if (!image->psShared)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageCreateFromBuffer(width, height,
-+							    strides[0],
-+							    image->psShared->psFormat->eIMGPixelFormat,
-+							    image->psShared->eColourSpace,
-+							    image->psShared->eChromaUInterp,
-+							    image->psShared->eChromaVInterp,
-+							    image->psShared->psBuffer);
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	*error = __DRI_IMAGE_ERROR_SUCCESS;
-+
-+	return image;
-+}
-+
-+__DRIimage *PVRDRICreateImageFromDmaBufs(__DRIscreen *screen,
-+                                         int width, int height, int fourcc,
-+                                         int *fds, int num_fds,
-+                                         int *strides, int *offsets,
-+                                         enum __DRIYUVColorSpace color_space,
-+                                         enum __DRISampleRange sample_range,
-+                                         enum __DRIChromaSiting horiz_siting,
-+                                         enum __DRIChromaSiting vert_siting,
-+                                         unsigned *error,
-+                                         void *loaderPrivate)
-+{
-+	return PVRDRICreateImageFromDmaBufs2(screen,
-+					     width, height, fourcc,
-+					     DRM_FORMAT_MOD_INVALID,
-+					     fds, num_fds,
-+					     strides, offsets,
-+					     color_space,
-+					     sample_range,
-+					     horiz_siting,
-+					     vert_siting,
-+					     error,
-+					     loaderPrivate);
-+}
-+
-+void PVRDRIRefImage(__DRIimage *image)
-+{
-+	int iRefCount = p_atomic_inc_return(&image->iRefCount);
-+
-+	(void)iRefCount;
-+	assert(iRefCount > 1);
-+}
-+
-+void PVRDRIUnrefImage(__DRIimage *image)
-+{
-+	PVRDRIDestroyImage(image);
-+}
-+
-+PVRDRIImageType PVRDRIImageGetSharedType(__DRIimage *image)
-+{
-+	return image->psShared->eType;
-+}
-+
-+PVRDRIBufferImpl *PVRDRIImageGetSharedBuffer(__DRIimage *pImage)
-+{
-+	assert(pImage->psShared->eType != PVRDRI_IMAGE_FROM_EGLIMAGE);
-+
-+	return pImage->psShared->psBuffer;
-+}
-+
-+IMGEGLImage *PVRDRIImageGetSharedEGLImage(__DRIimage *pImage)
-+{
-+	assert(pImage->psShared->eType == PVRDRI_IMAGE_FROM_EGLIMAGE);
-+	return pImage->psShared->psEGLImage;
-+}
-+
-+IMGEGLImage *PVRDRIImageGetEGLImage(__DRIimage *pImage)
-+{
-+	return pImage->psEGLImage;
-+}
-+
-+__DRIimage *PVRDRIScreenGetDRIImage(void *hEGLImage)
-+{
-+	PVRDRIScreen *psPVRScreen = PVRDRIThreadGetCurrentScreen();
-+
-+	if (!psPVRScreen)
-+	{
-+		return NULL;
-+	}
-+
-+	return psPVRScreen->psDRIScreen->dri2.image->lookupEGLImage(
-+	      psPVRScreen->psDRIScreen,
-+	      hEGLImage,
-+	      psPVRScreen->psDRIScreen->loaderPrivate);
-+}
-+
-+void PVRDRIBlitImage(__DRIcontext *context,
-+		     __DRIimage *dst, __DRIimage *src,
-+		     int dstx0, int dsty0, int dstwidth, int dstheight,
-+		     int srcx0, int srcy0, int srcwidth, int srcheight,
-+		     int flush_flag)
-+{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+	bool res;
-+
-+	res = PVRDRIBlitEGLImage(psPVRContext->psPVRScreen->psImpl,
-+			psPVRContext->psImpl,
-+			dst->psEGLImage, dst->psShared->psBuffer,
-+			src->psEGLImage, src->psShared->psBuffer,
-+			dstx0, dsty0, dstwidth, dstheight,
-+			srcx0, srcy0, srcwidth, srcheight,
-+			flush_flag);
-+	
-+
-+	if (!res)
-+	{
-+		__driUtilMessage("%s: PVRDRIBlitEGLImage failed\n", __func__);
-+	}
-+}
-+
-+int PVRDRIGetCapabilities(__DRIscreen *screen)
-+{
-+	(void) screen;
-+
-+	return __DRI_IMAGE_CAP_GLOBAL_NAMES;
-+}
-+
-+void *PVRDRIMapImage(__DRIcontext *context, __DRIimage *image,
-+		    int x0, int y0, int width, int height,
-+		    unsigned int flags, int *stride, void **data)
-+{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+
-+	return PVRDRIMapEGLImage(psPVRContext->psPVRScreen->psImpl,
-+				 psPVRContext->psImpl,
-+				 image->psEGLImage, image->psShared->psBuffer,
-+				 x0, y0, width, height, flags, stride, data);
-+}
-+
-+void PVRDRIUnmapImage(__DRIcontext *context, __DRIimage *image, void *data)
-+{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+	bool res;
-+
-+	res = PVRDRIUnmapEGLImage(psPVRContext->psPVRScreen->psImpl,
-+			      psPVRContext->psImpl,
-+			      image->psEGLImage, image->psShared->psBuffer,
-+			      data);
-+	if (!res)
-+	{
-+		__driUtilMessage("%s: PVRDRIUnmapEGLImage failed\n", __func__);
-+	}
-+}
-diff --git a/src/mesa/drivers/dri/pvr/pvrimage.h b/src/mesa/drivers/dri/pvr/pvrimage.h
+diff --git a/src/mesa/drivers/dri/pvr/pvrimage_mod.c b/src/mesa/drivers/dri/pvr/pvrimage_mod.c
 new file mode 100644
-index 00000000000..9316ea3bedf
+index 00000000000..df4a7f4d6fb
 --- /dev/null
-+++ b/src/mesa/drivers/dri/pvr/pvrimage.h
-@@ -0,0 +1,131 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
++++ b/src/mesa/drivers/dri/pvr/pvrimage_mod.c
+@@ -0,0 +1,1282 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -7098,119 +7783,1270 @@
 + * THE SOFTWARE.
 + */
 +
-+#if !defined(__PVRIMAGE_H__)
-+#define __PVRIMAGE_H__
++#include <stdlib.h>
++#include <assert.h>
 +
-+#include "dri_support.h"
++#include "util/u_atomic.h"
++#include <xf86drm.h>
 +
-+__DRIimage *PVRDRICreateImageFromName(__DRIscreen *screen,
-+				      int width, int height, int format,
-+				      int name, int pitch,
-+				      void *loaderPrivate);
++#include "img_drm_fourcc.h"
++#include "pvrdri_mod.h"
 +
-+__DRIimage *PVRDRICreateImageFromRenderbuffer(__DRIcontext *context,
-+					      int renderbuffer,
-+					      void *loaderPrivate);
++struct PVRDRIImageShared {
++   int iRefCount;
 +
-+void PVRDRIDestroyImage(__DRIimage *image);
++   struct DRISUPScreen *psPVRScreen;
 +
-+__DRIimage *PVRDRICreateImage(__DRIscreen *screen,
-+			      int width, int height, int format,
-+			      unsigned int use,
-+			      void *loaderPrivate);
++   PVRDRIImageType eType;
++   const PVRDRIImageFormat *psFormat;
++   IMG_YUV_COLORSPACE eColourSpace;
++   IMG_YUV_CHROMA_INTERP eChromaUInterp;
++   IMG_YUV_CHROMA_INTERP eChromaVInterp;
 +
-+__DRIimage *PVRDRICreateImageWithModifiers(__DRIscreen *screen,
-+			      int width, int height, int format,
-+			      const uint64_t *modifiers,
-+			      const unsigned int modifier_count,
-+			      void *loaderPrivate);
++   PVRDRIBufferImpl *psBuffer;
++   IMGEGLImage *psEGLImage;
++   PVRDRIEGLImageType eglImageType;
++   struct PVRDRIImageShared *psAncestor;
++};
 +
-+GLboolean PVRDRIQueryImage(__DRIimage *image, int attrib, int *value);
++struct __DRIimageRec {
++   int iRefCount;
 +
-+__DRIimage *PVRDRIDupImage(__DRIimage *image, void *loaderPrivate);
++   void *pvLoaderPrivate;
 +
-+GLboolean PVRDRIValidateUsage(__DRIimage *image, unsigned int use);
++   struct PVRDRIImageShared *psShared;
 +
-+__DRIimage *PVRDRICreateImageFromNames(__DRIscreen *screen,
-+				       int width, int height, int fourcc,
-+				       int *names, int num_names,
-+				       int *strides, int *offsets,
-+				       void *loaderPrivate);
++   IMGEGLImage *psEGLImage;
++};
 +
-+__DRIimage *PVRDRIFromPlanar(__DRIimage *image, int plane,
-+			     void *loaderPrivate);
 +
-+__DRIimage *PVRDRICreateImageFromTexture(__DRIcontext *context,
-+					 int glTarget,
-+					 unsigned texture,
-+					 int depth,
-+					 int level,
-+					 unsigned *error,
-+					 void *loaderPrivate);
++static struct PVRDRIImageShared *
++CommonImageSharedSetup(struct DRISUPScreen *psPVRScreen,
++                       PVRDRIImageType eType)
++{
++   struct PVRDRIImageShared *psShared;
 +
-+__DRIimage *PVRDRICreateImageFromFds(__DRIscreen *screen,
-+				     int width, int height, int fourcc,
-+				     int *fds, int num_fds,
-+				     int *strides, int *offsets,
-+				     void *loaderPrivate);
++   psShared = calloc(1, sizeof(*psShared));
++   if (!psShared)
++      return NULL;
 +
-+__DRIimage *PVRDRICreateImageFromBuffer(__DRIcontext *context,
-+					int target,
-+					void *buffer,
-+					unsigned *error,
-+					void *loaderPrivate);
++   psShared->psPVRScreen = psPVRScreen;
++   psShared->eType = eType;
++   psShared->iRefCount = 1;
 +
-+__DRIimage *PVRDRICreateImageFromDmaBufs(__DRIscreen *screen,
-+                                         int width, int height, int fourcc,
-+                                         int *fds, int num_fds,
-+                                         int *strides, int *offsets,
-+                                         enum __DRIYUVColorSpace color_space,
-+                                         enum __DRISampleRange sample_range,
-+                                         enum __DRIChromaSiting horiz_siting,
-+                                         enum __DRIChromaSiting vert_siting,
-+                                         unsigned *error,
-+                                         void *loaderPrivate);
++   assert(psShared->eColourSpace == IMG_COLORSPACE_UNDEFINED &&
++          psShared->eChromaUInterp == IMG_CHROMA_INTERP_UNDEFINED &&
++          psShared->eChromaVInterp == IMG_CHROMA_INTERP_UNDEFINED);
 +
-+__DRIimage *PVRDRICreateImageFromDmaBufs2(__DRIscreen *screen,
-+					  int width, int height, int fourcc,
-+					  uint64_t modifier,
-+					  int *fds, int num_fds,
-+					  int *strides, int *offsets,
-+					  enum __DRIYUVColorSpace color_space,
-+					  enum __DRISampleRange sample_range,
-+					  enum __DRIChromaSiting horiz_siting,
-+					  enum __DRIChromaSiting vert_siting,
-+					  unsigned *error,
-+					  void *loaderPrivate);
++   return psShared;
++}
 +
-+void PVRDRIBlitImage(__DRIcontext *context,
-+		     __DRIimage *dst, __DRIimage *src,
-+		     int dstx0, int dsty0, int dstwidth, int dstheight,
-+		     int srcx0, int srcy0, int srcwidth, int srcheight,
-+		     int flush_flag);
++static void
++DestroyImageShared(struct PVRDRIImageShared *psShared)
++{
++   int iRefCount = p_atomic_dec_return(&psShared->iRefCount);
 +
-+int PVRDRIGetCapabilities(__DRIscreen *screen);
++   assert(iRefCount >= 0);
 +
-+void *PVRDRIMapImage(__DRIcontext *context, __DRIimage *image,
-+		    int x0, int y0, int width, int height,
-+		    unsigned int flags, int *stride, void **data);
++   if (iRefCount > 0)
++      return;
 +
-+void PVRDRIUnmapImage(__DRIcontext *context, __DRIimage *image, void *data);
++   switch (psShared->eType) {
++   case PVRDRI_IMAGE_FROM_NAMES:
++   case PVRDRI_IMAGE_FROM_DMABUFS:
++   case PVRDRI_IMAGE:
++      if (psShared->psBuffer)
++         PVRDRIBufferDestroy(psShared->psBuffer);
 +
-+__DRIimage *PVRDRICreateImageFromRenderbuffer2(__DRIcontext *context,
-+					       int renderbuffer,
-+					       void *loaderPrivate,
-+					       unsigned *error);
++      assert(!psShared->psAncestor);
++      break;
++   case PVRDRI_IMAGE_FROM_EGLIMAGE: {
++      PVRDRIScreenImpl *psScreenImpl;
 +
-+#endif /* !defined(__PVRIMAGE_H__) */
++      psScreenImpl = psShared->psPVRScreen->psImpl;
++
++      PVRDRIEGLImageDestroyExternal(psScreenImpl,
++                                    psShared->psEGLImage,
++                                    psShared->eglImageType);
++      break;
++   }
++   case PVRDRI_IMAGE_SUBIMAGE:
++      if (psShared->psBuffer)
++         PVRDRIBufferDestroy(psShared->psBuffer);
++
++      if (psShared->psAncestor)
++         DestroyImageShared(psShared->psAncestor);
++      break;
++   default:
++      errorMessage("%s: Unknown image type: %d",
++                   __func__, (int) psShared->eType);
++      break;
++   }
++
++   free(psShared);
++}
++
++static struct PVRDRIImageShared *
++CreateImageSharedFromEGLImage(struct DRISUPScreen *psPVRScreen,
++                              IMGEGLImage *psEGLImage,
++                              PVRDRIEGLImageType eglImageType)
++{
++   struct PVRDRIImageShared *psShared;
++   PVRDRIBufferAttribs sAttribs;
++   const PVRDRIImageFormat *psFormat;
++
++   PVRDRIEGLImageGetAttribs(psEGLImage, &sAttribs);
++
++   psFormat = PVRDRIIMGPixelFormatToImageFormat(psPVRScreen,
++                                                sAttribs.ePixFormat);
++   if (!psFormat)
++      return NULL;
++
++   psShared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE_FROM_EGLIMAGE);
++   if (!psShared)
++      return NULL;
++
++   psShared->psEGLImage = psEGLImage;
++   psShared->psFormat = psFormat;
++   psShared->eglImageType = eglImageType;
++
++   return psShared;
++}
++
++static struct PVRDRIImageShared *
++CreateImageSharedFromNames(struct DRISUPScreen *psPVRScreen,
++                           int iWidth, int iHeight, int iFourCC,
++                           int *piNames, int iNumNames,
++                           int *piStrides, int *piOffsets)
++{
++   struct PVRDRIImageShared *psShared;
++   const PVRDRIImageFormat *psFormat;
++   int aiPlaneNames[DRI_PLANES_MAX];
++   unsigned int auiWidthShift[DRI_PLANES_MAX];
++   unsigned int auiHeightShift[DRI_PLANES_MAX];
++   unsigned int i;
++
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat) {
++      errorMessage("%s: Unsupported DRI FourCC (fourcc = 0x%X)",
++                   __func__, iFourCC);
++      return NULL;
++   }
++
++   if (iNumNames != 1 && iNumNames != (int) psFormat->uiNumPlanes) {
++      errorMessage("%s: Unexpected number of names (%d) for fourcc "
++                   "(#%x) - expected 1 or %u",
++                   __func__, iNumNames, iFourCC, psFormat->uiNumPlanes);
++      return NULL;
++   }
++
++   for (i = 0; i < psFormat->uiNumPlanes; i++) {
++      if (piOffsets[i] < 0) {
++         errorMessage("%s: Offset %d unsupported (value = %d)",
++                      __func__, i, piOffsets[i]);
++         return NULL;
++      }
++
++      aiPlaneNames[i] = iNumNames == 1 ? piNames[0] : piNames[i];
++      auiWidthShift[i] = psFormat->sPlanes[i].uiWidthShift;
++      auiHeightShift[i] = psFormat->sPlanes[i].uiHeightShift;
++   }
++
++   psShared =
++      CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE_FROM_NAMES);
++   if (!psShared)
++      return NULL;
++
++   psShared->psBuffer = PVRDRIBufferCreateFromNames(psPVRScreen->psImpl,
++                                                    iWidth, iHeight,
++                                                    psFormat->uiNumPlanes,
++                                                    aiPlaneNames,
++                                                    piStrides, piOffsets,
++                                                    auiWidthShift,
++                                                    auiHeightShift);
++   if (!psShared->psBuffer) {
++      errorMessage("%s: Failed to create buffer for shared image",
++                   __func__);
++      goto ErrorDestroyImage;
++   }
++
++   psShared->psFormat = psFormat;
++   psShared->eColourSpace =
++      PVRDRIToIMGColourSpace(psFormat,
++                             PVRDRI_YUV_COLOR_SPACE_UNDEFINED,
++                             PVRDRI_YUV_RANGE_UNDEFINED);
++   psShared->eChromaUInterp =
++      PVRDRIChromaSittingToIMGInterp(psFormat,
++                                     PVRDRI_YUV_CHROMA_SITING_UNDEFINED);
++   psShared->eChromaVInterp =
++      PVRDRIChromaSittingToIMGInterp(psFormat,
++                                     PVRDRI_YUV_CHROMA_SITING_UNDEFINED);
++
++   return psShared;
++
++ErrorDestroyImage:
++   DestroyImageShared(psShared);
++
++   return NULL;
++}
++
++static struct PVRDRIImageShared *
++CreateImageSharedFromDMABufs(struct DRISUPScreen *psPVRScreen,
++                             int iWidth, int iHeight,
++                             int iFourCC, uint64_t uModifier,
++                             int *piFDs, int iNumFDs,
++                             int *piStrides, int *piOffsets,
++                             unsigned int uColorSpace,
++                             unsigned int uSampleRange,
++                             unsigned int uHorizSiting,
++                             unsigned int uVertSiting,
++                             unsigned int *puError)
++{
++   struct PVRDRIImageShared *psShared;
++   const PVRDRIImageFormat *psFormat;
++   int aiPlaneFDs[DRI_PLANES_MAX];
++   unsigned int auiWidthShift[DRI_PLANES_MAX];
++   unsigned int auiHeightShift[DRI_PLANES_MAX];
++   unsigned int i;
++
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat) {
++      errorMessage("%s: Unsupported DRI FourCC (fourcc = 0x%X)",
++                   __func__, iFourCC);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_MATCH;
++      return NULL;
++   }
++
++   /* When a modifier isn't specified, skip the validation */
++   if (uModifier != DRM_FORMAT_MOD_INVALID) {
++      /*
++       * The modifier validation has to be done in this "higher" level
++       * function instead of pvr_dri_support. The support for modifiers is
++       * done on per format basis, but there is no way to pass the format
++       * information down to the plane creation API in pvr_dri_support.
++       */
++      if (!PVRDRIValidateImageModifier(psPVRScreen, iFourCC, uModifier)) {
++         errorMessage("%s: Unsupported mod (fmt = %#x, mod = %#llx",
++                      __func__, iFourCC,
++                      (long long unsigned int) uModifier);
++         *puError = PVRDRI_IMAGE_ERROR_BAD_MATCH;
++         return NULL;
++      }
++   }
++
++   if (iNumFDs != 1 && iNumFDs != (int) psFormat->uiNumPlanes) {
++      errorMessage("%s: Unexpected number of FDs (%d) for fourcc "
++                   "(#%x) - expected 1 or %u",
++                   __func__, iNumFDs, iFourCC, psFormat->uiNumPlanes);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_MATCH;
++      return NULL;
++   }
++
++   for (i = 0; i < psFormat->uiNumPlanes; i++) {
++      if (piOffsets[i] < 0) {
++         errorMessage("%s: Offset %d unsupported (value = %d)",
++                      __func__, i, piOffsets[i]);
++         *puError = PVRDRI_IMAGE_ERROR_BAD_ACCESS;
++         return NULL;
++      }
++
++      aiPlaneFDs[i] = iNumFDs == 1 ? piFDs[0] : piFDs[i];
++      auiWidthShift[i] = psFormat->sPlanes[i].uiWidthShift;
++      auiHeightShift[i] = psFormat->sPlanes[i].uiHeightShift;
++   }
++
++   psShared = CommonImageSharedSetup(psPVRScreen,
++                                     PVRDRI_IMAGE_FROM_DMABUFS);
++   if (!psShared) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psShared->psBuffer =
++      PVRDRIBufferCreateFromFdsWithModifier(psPVRScreen->psImpl,
++                                            iWidth, iHeight, uModifier,
++                                            psFormat->uiNumPlanes, aiPlaneFDs,
++                                            piStrides, piOffsets,
++                                            auiWidthShift, auiHeightShift);
++   if (!psShared->psBuffer) {
++      errorMessage("%s: Failed to create buffer for shared image",
++                   __func__);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      goto ErrorDestroyImage;
++   }
++
++   psShared->psFormat = psFormat;
++   psShared->eColourSpace = PVRDRIToIMGColourSpace(psFormat, uColorSpace,
++                                                   uSampleRange);
++   psShared->eChromaUInterp = PVRDRIChromaSittingToIMGInterp(psFormat,
++                                                             uHorizSiting);
++   psShared->eChromaVInterp = PVRDRIChromaSittingToIMGInterp(psFormat,
++                                                             uVertSiting);
++
++   *puError = PVRDRI_IMAGE_ERROR_SUCCESS;
++
++   return psShared;
++
++ErrorDestroyImage:
++   DestroyImageShared(psShared);
++
++   return NULL;
++}
++
++static struct PVRDRIImageShared *
++CreateImageShared(struct DRISUPScreen *psPVRScreen, int iWidth, int iHeight,
++                  int iFourCC, unsigned int use, int *piStride)
++{
++   struct PVRDRIImageShared *psShared;
++   const PVRDRIImageFormat *psFormat;
++   unsigned int uStride;
++   unsigned int uBPP;
++
++   if ((use & PVDRI_BUFFER_USE_CURSOR)
++       && (use & PVDRI_BUFFER_USE_SCANOUT)) {
++      return NULL;
++   }
++
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat) {
++      errorMessage("%s: Unsupported DRI image format (format = 0x%X)",
++                   __func__, iFourCC);
++      return NULL;
++   }
++
++   if (psFormat->uiNumPlanes != 1) {
++      errorMessage("%s: Only single plane formats are supported (format 0x%X has %u planes)",
++          __func__, iFourCC, psFormat->uiNumPlanes);
++      return NULL;
++   }
++
++   uBPP = PVRDRIPixFmtGetBPP(psFormat->eIMGPixelFormat);
++
++   psShared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE);
++   if (!psShared)
++      return NULL;
++
++   psShared->psBuffer =
++      PVRDRIBufferCreate(psPVRScreen->psImpl, iWidth, iHeight, uBPP, use,
++                         &uStride);
++   if (!psShared->psBuffer) {
++      errorMessage("%s: Failed to create buffer", __func__);
++      goto ErrorDestroyImage;
++   }
++
++   psShared->psFormat = psFormat;
++
++   *piStride = uStride;
++
++   return psShared;
++
++ErrorDestroyImage:
++   DestroyImageShared(psShared);
++
++   return NULL;
++}
++
++static struct PVRDRIImageShared *
++CreateImageSharedWithModifiers(struct DRISUPScreen *psPVRScreen,
++                               int iWidth, int iHeight, int iFourCC,
++                               const uint64_t *puModifiers,
++                               unsigned int uModifierCount, int *piStride)
++{
++   struct PVRDRIImageShared *psShared;
++   const PVRDRIImageFormat *psFormat;
++   unsigned int uStride;
++
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat) {
++      errorMessage("%s: Unsupported DRI image format (format = 0x%X)",
++                   __func__, iFourCC);
++      return NULL;
++   }
++
++   psShared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE);
++   if (!psShared)
++      return NULL;
++
++   psShared->psBuffer =
++      PVRDRIBufferCreateWithModifiers(psPVRScreen->psImpl, iWidth, iHeight,
++                                      psFormat->iDRIFourCC,
++                                      psFormat->eIMGPixelFormat,
++                                      puModifiers, uModifierCount, &uStride);
++   if (!psShared->psBuffer) {
++      errorMessage("%s: Failed to create buffer", __func__);
++      goto ErrorDestroyImage;
++   }
++
++   psShared->psFormat = psFormat;
++
++   *piStride = uStride;
++
++   return psShared;
++
++ErrorDestroyImage:
++   DestroyImageShared(psShared);
++
++   return NULL;
++}
++
++static struct PVRDRIImageShared *
++RefImageShared(struct PVRDRIImageShared *psShared)
++{
++   int iRefCount = p_atomic_inc_return(&psShared->iRefCount);
++
++   (void) iRefCount;
++   assert(iRefCount > 1);
++
++   return psShared;
++}
++
++static struct PVRDRIImageShared *
++CreateImageSharedForSubImage(struct PVRDRIImageShared *psParent, int iPlane)
++{
++   struct PVRDRIImageShared *psShared;
++   struct PVRDRIImageShared *psAncestor;
++   PVRDRIBufferImpl *psBuffer = NULL;
++   IMG_PIXFMT eIMGPixelFormat;
++
++   /* Sub-images represent a single plane in the parent image */
++   if (!psParent->psBuffer)
++      return NULL;
++
++   /*
++    * The ancestor image is the owner of the original buffer that will back
++    * the new image. The parent image may be a child of that image itself. The
++    * ancestor image must not be destroyed until all the child images that
++    * refer to it have been destroyed. A reference will be taken on the
++    * ancestor to ensure that is the case.  We must distinguish between the
++    * parent's buffer and the ancestor's buffer. For example, plane 0 in the
++    * parent is not necessarily plane 0 in the ancestor.
++    */
++   psAncestor = psParent;
++   if (psAncestor->psAncestor) {
++      psAncestor = psAncestor->psAncestor;
++
++      assert(!psAncestor->psAncestor);
++   }
++
++   psBuffer = PVRDRISubBufferCreate(psParent->psPVRScreen->psImpl,
++                                    psParent->psBuffer, iPlane);
++   if (!psBuffer)
++      return NULL;
++
++   psShared = CommonImageSharedSetup(NULL, PVRDRI_IMAGE_SUBIMAGE);
++   if (!psShared)
++      goto ErrorDestroyBuffer;
++
++   psShared->psAncestor = RefImageShared(psAncestor);
++   psShared->psBuffer = psBuffer;
++   psShared->psPVRScreen = psParent->psPVRScreen;
++
++   eIMGPixelFormat = psParent->psFormat->sPlanes[iPlane].eIMGPixelFormat;
++
++   psShared->psFormat =
++      PVRDRIIMGPixelFormatToImageFormat(psParent->psPVRScreen,
++                                        eIMGPixelFormat);
++
++   assert(psShared->psFormat);
++
++   return psShared;
++
++ErrorDestroyBuffer:
++   PVRDRIBufferDestroy(psBuffer);
++   return NULL;
++}
++
++static __DRIimage *
++CommonImageSetup(void *pvLoaderPrivate)
++{
++   __DRIimage *psImage;
++
++   psImage = calloc(1, sizeof(*psImage));
++   if (!psImage)
++      return NULL;
++
++   psImage->pvLoaderPrivate = pvLoaderPrivate;
++   psImage->iRefCount = 1;
++
++   return psImage;
++}
++
++void
++DRIMODDestroyImage(__DRIimage *psImage)
++{
++   int iRefCount = p_atomic_dec_return(&psImage->iRefCount);
++
++   assert(iRefCount >= 0);
++
++   if (iRefCount > 0)
++      return;
++
++   if (psImage->psShared)
++      DestroyImageShared(psImage->psShared);
++
++   PVRDRIEGLImageFree(psImage->psEGLImage);
++   free(psImage);
++}
++
++__DRIimage *
++DRIMODCreateImageFromName(struct DRISUPScreen *psPVRScreen,
++                          int iWidth, int iHeight, int iFourCC, int iName,
++                          int iPitch, void *pvLoaderPrivate)
++{
++   const PVRDRIImageFormat *psFormat;
++   int iStride;
++   int iOffset;
++
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat) {
++      errorMessage("%s: Unsupported DRI image FourCC (format = 0x%X)",
++                   __func__, iFourCC);
++      return NULL;
++   }
++
++   iStride = iPitch * PVRDRIPixFmtGetBlockSize(psFormat->eIMGPixelFormat);
++   iOffset = 0;
++
++   return DRIMODCreateImageFromNames(psPVRScreen, iWidth, iHeight, iFourCC,
++                                     &iName, 1, &iStride, &iOffset,
++                                     pvLoaderPrivate);
++}
++
++__DRIimage *
++DRIMODCreateImageFromRenderBuffer2(struct DRISUPContext *psPVRContext,
++                                   int iRenderBuffer, void *pvLoaderPrivate,
++                                   unsigned int *puError)
++{
++   struct DRISUPScreen *psPVRScreen = psPVRContext->psPVRScreen;
++   unsigned int uError;
++   IMGEGLImage *psEGLImage;
++   __DRIimage *psImage;
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psEGLImage = PVRDRIEGLImageCreate();
++   if (!psEGLImage) {
++      DRIMODDestroyImage(psImage);
++
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   uError = PVRDRIGetImageSource(psPVRContext->eAPI, psPVRScreen->psImpl,
++                                 psPVRContext->psImpl, PVRDRI_GL_RENDERBUFFER,
++                                 (uintptr_t) iRenderBuffer, 0, psEGLImage);
++   if (uError != PVRDRI_IMAGE_ERROR_SUCCESS) {
++      PVRDRIEGLImageFree(psEGLImage);
++      DRIMODDestroyImage(psImage);
++
++      *puError = uError;
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psEGLImage, psImage);
++
++   /*
++    * We can't destroy the image after this point, as the
++    * renderbuffer now has a reference to it.
++    */
++   psImage->psShared =
++      CreateImageSharedFromEGLImage(psPVRScreen, psEGLImage,
++                                    PVRDRI_EGLIMAGE_IMGEGL);
++   if (!psImage->psShared) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psImage->psEGLImage = PVRDRIEGLImageDup(psImage->psShared->psEGLImage);
++   if (!psImage->psEGLImage) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psImage->iRefCount++;
++
++   *puError = PVRDRI_IMAGE_ERROR_SUCCESS;
++   return psImage;
++}
++
++
++__DRIimage *
++DRIMODCreateImageFromRenderbuffer(struct DRISUPContext *psPVRContext,
++                                  int iRenderBuffer, void *pvLoaderPrivate)
++{
++   unsigned int uError;
++
++   return DRIMODCreateImageFromRenderBuffer2(psPVRContext, iRenderBuffer,
++                                             pvLoaderPrivate, &uError);
++}
++
++__DRIimage *
++DRIMODCreateImage(struct DRISUPScreen *psPVRScreen, int iWidth, int iHeight,
++                  int iFourCC, unsigned int uUse, void *pvLoaderPrivate)
++{
++   __DRIimage *psImage;
++   struct PVRDRIImageShared *psShared;
++   IMG_PIXFMT eIMGPixelFormat;
++   int iStride;
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage)
++      return NULL;
++
++   psShared = CreateImageShared(psPVRScreen, iWidth, iHeight, iFourCC, uUse,
++                                &iStride);
++   if (!psShared) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   psImage->psShared = psShared;
++   eIMGPixelFormat = psShared->psFormat->eIMGPixelFormat;
++
++   psImage->psEGLImage =
++      PVRDRIEGLImageCreateFromBuffer(iWidth, iHeight, iStride,
++                                     eIMGPixelFormat, psShared->eColourSpace,
++                                     psShared->eChromaUInterp,
++                                     psShared->eChromaVInterp,
++                                     psShared->psBuffer);
++   if (!psImage->psEGLImage) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psImage->psEGLImage, psImage);
++
++   return psImage;
++}
++
++__DRIimage *
++DRIMODCreateImageWithModifiers(struct DRISUPScreen *psPVRScreen,
++                               int iWidth, int iHeight, int iFourCC,
++                               const uint64_t *puModifiers,
++                               const unsigned int uModifierCount,
++                               void *pvLoaderPrivate)
++{
++   __DRIimage *psImage;
++   struct PVRDRIImageShared *psShared;
++   IMG_PIXFMT eIMGPixelFormat;
++   int iStride;
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage)
++      return NULL;
++
++   psShared = CreateImageSharedWithModifiers(psPVRScreen,
++                                             iWidth, iHeight, iFourCC,
++                                             puModifiers, uModifierCount,
++                                             &iStride);
++   if (!psShared) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   psImage->psShared = psShared;
++   eIMGPixelFormat = psShared->psFormat->eIMGPixelFormat;
++
++   psImage->psEGLImage =
++      PVRDRIEGLImageCreateFromBuffer(iWidth, iHeight, iStride,
++                                     eIMGPixelFormat, psShared->eColourSpace,
++                                     psShared->eChromaUInterp,
++                                     psShared->eChromaVInterp,
++                                     psShared->psBuffer);
++   if (!psImage->psEGLImage) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psImage->psEGLImage, psImage);
++
++   return psImage;
++}
++
++bool
++DRIMODQueryImage(__DRIimage *psImage, int attrib, int *value_ptr)
++{
++   struct PVRDRIImageShared *psShared = psImage->psShared;
++   PVRDRIBufferAttribs sAttribs;
++   int value;
++   uint64_t ulValue;
++
++   PVRDRIEGLImageGetAttribs(psImage->psEGLImage, &sAttribs);
++
++   if (attrib == PVRDRI_IMAGE_ATTRIB_HANDLE ||
++       attrib == PVRDRI_IMAGE_ATTRIB_NAME ||
++       attrib == PVRDRI_IMAGE_ATTRIB_FD ||
++       attrib == PVRDRI_IMAGE_ATTRIB_OFFSET) {
++      if (!psShared->psFormat)
++         return false;
++
++      switch (psShared->psFormat->iDRIComponents) {
++      case PVRDRI_IMAGE_COMPONENTS_R:
++      case PVRDRI_IMAGE_COMPONENTS_RG:
++      case PVRDRI_IMAGE_COMPONENTS_RGB:
++      case PVRDRI_IMAGE_COMPONENTS_RGBA:
++      case PVRDRI_IMAGE_COMPONENTS_EXTERNAL:
++         break;
++      default:
++         return false;
++      }
++   }
++
++   switch (attrib) {
++   case PVRDRI_IMAGE_ATTRIB_STRIDE:
++      *value_ptr = sAttribs.uiStrideInBytes;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_HANDLE:
++      value = PVRDRIBufferGetHandle(psShared->psBuffer);
++      if (value == -1)
++         return false;
++
++      *value_ptr = value;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_NAME:
++      value = PVRDRIBufferGetName(psShared->psBuffer);
++      if (value == -1)
++         return false;
++
++      *value_ptr = value;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_FORMAT:
++      /* The caller should use PVRDRI_IMAGE_ATTRIB_FOURCC, and convert. */
++      return false;
++   case PVRDRI_IMAGE_ATTRIB_WIDTH:
++      *value_ptr = sAttribs.uiWidth;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_HEIGHT:
++      *value_ptr = sAttribs.uiHeight;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_COMPONENTS:
++      if (!psShared->psFormat || !psShared->psFormat->iDRIComponents)
++         return false;
++
++      *value_ptr = psShared->psFormat->iDRIComponents;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_FD:
++      value = PVRDRIBufferGetFd(psShared->psBuffer);
++      if (value == -1)
++         return false;
++
++      *value_ptr = value;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_FOURCC:
++      *value_ptr = psShared->psFormat->iDRIFourCC;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_NUM_PLANES:
++      *value_ptr = (int) psShared->psFormat->uiNumPlanes;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_OFFSET:
++      *value_ptr = PVRDRIBufferGetOffset(psShared->psBuffer);
++      break;
++   case PVRDRI_IMAGE_ATTRIB_MODIFIER_LOWER:
++      ulValue = PVRDRIBufferGetModifier(psShared->psBuffer);
++      *value_ptr = (int) (ulValue & 0xffffffff);
++      break;
++   case PVRDRI_IMAGE_ATTRIB_MODIFIER_UPPER:
++      ulValue = PVRDRIBufferGetModifier(psShared->psBuffer);
++      *value_ptr = (int) ((ulValue >> 32) & 0xffffffff);
++      break;
++   default:
++      return false;
++   }
++
++   return true;
++}
++
++__DRIimage *
++DRIMODDupImage(__DRIimage *psSrc, void *pvLoaderPrivate)
++{
++   __DRIimage *psDst;
++
++   psDst = CommonImageSetup(pvLoaderPrivate);
++   if (!psDst)
++      return NULL;
++
++   psDst->psShared = RefImageShared(psSrc->psShared);
++
++   psDst->psEGLImage = PVRDRIEGLImageDup(psSrc->psEGLImage);
++   if (!psDst->psEGLImage) {
++      DRIMODDestroyImage(psDst);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psDst->psEGLImage, psDst);
++
++   return psDst;
++}
++
++bool
++DRIMODValidateImageUsage(__DRIimage *psImage, unsigned int uUse)
++{
++   struct PVRDRIImageShared *psShared = psImage->psShared;
++
++   if (uUse & (PVDRI_BUFFER_USE_SCANOUT | PVDRI_BUFFER_USE_CURSOR)) {
++      uint64_t uModifier;
++
++      /*
++       * We are extra strict in this case as an application may ask for a
++       * handle so that the memory can be wrapped as a framebuffer/used as a
++       * cursor and this can only be done on a card node.
++       */
++      if (drmGetNodeTypeFromFd(psShared->psPVRScreen->iFD) != DRM_NODE_PRIMARY)
++         return false;
++
++      uModifier = PVRDRIBufferGetModifier(psShared->psBuffer);
++      if (uModifier != DRM_FORMAT_MOD_INVALID &&
++          uModifier != DRM_FORMAT_MOD_LINEAR)
++         return false;
++   } else if (uUse & (PVDRI_BUFFER_USE_SHARE)) {
++      /*
++       * We are less strict in this case as it's possible to share buffers
++       * using prime (but not flink) on a render node so we only need to know
++       * whether or not the FD belongs to the display.
++       */
++      if (PVRDRIGetDeviceTypeFromFd(psShared->psPVRScreen->iFD) !=
++          PVRDRI_DEVICE_TYPE_DISPLAY)
++         return false;
++   }
++
++   return true;
++}
++
++__DRIimage *
++DRIMODCreateImageFromNames(struct DRISUPScreen *psPVRScreen,
++                           int iWidth, int iHeight, int iFourCC,
++                           int *piNames, int iNumNames,
++                           int *piStrides, int *piOffsets,
++                           void *pvLoaderPrivate)
++{
++   __DRIimage *psImage;
++   struct PVRDRIImageShared *psShared;
++   IMG_PIXFMT eIMGPixelFormat;
++   int iStride;
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage)
++      return NULL;
++
++   psShared = CreateImageSharedFromNames(psPVRScreen,
++                                         iWidth, iHeight, iFourCC,
++                                         piNames, iNumNames,
++                                         piStrides, piOffsets);
++   if (!psShared) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   psImage->psShared = psShared;
++   eIMGPixelFormat = psShared->psFormat->eIMGPixelFormat;
++
++   if (psShared->psFormat->uiNumPlanes == 1)
++      iStride = piStrides[0];
++   else
++      iStride = iWidth * PVRDRIPixFmtGetBlockSize(eIMGPixelFormat);
++
++   psImage->psEGLImage =
++      PVRDRIEGLImageCreateFromBuffer(iWidth, iHeight, iStride,
++                                     eIMGPixelFormat, psShared->eColourSpace,
++                                     psShared->eChromaUInterp,
++                                     psShared->eChromaVInterp,
++                                     psShared->psBuffer);
++   if (!psImage->psEGLImage) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psImage->psEGLImage, psImage);
++
++   return psImage;
++}
++
++__DRIimage *
++DRIMODFromPlanar(__DRIimage *psSrc, int iPlane, void *pvLoaderPrivate)
++{
++   __DRIimage *psDst;
++   struct PVRDRIImageShared *psShared;
++
++   psDst = CommonImageSetup(pvLoaderPrivate);
++   if (!psDst)
++      return NULL;
++
++   psShared = CreateImageSharedForSubImage(psSrc->psShared, iPlane);
++   if (!psShared) {
++      if (iPlane != 0) {
++         errorMessage("%s: plane %d not supported", __func__, iPlane);
++      } else {
++         psDst->psShared = RefImageShared(psSrc->psShared);
++         psDst->psEGLImage = PVRDRIEGLImageDup(psSrc->psEGLImage);
++      }
++   } else {
++      IMG_PIXFMT eIMGPixelFormat;
++
++      psDst->psShared = psShared;
++      eIMGPixelFormat = psShared->psFormat->eIMGPixelFormat;
++
++      psDst->psEGLImage =
++         PVRDRIEGLImageCreateFromSubBuffer(eIMGPixelFormat, psShared->psBuffer);
++   }
++
++   if (!psDst->psEGLImage) {
++      DRIMODDestroyImage(psDst);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psDst->psEGLImage, psDst);
++
++   return psDst;
++}
++
++__DRIimage *
++DRIMODCreateImageFromTexture(struct DRISUPContext *psPVRContext, int iTarget,
++                             unsigned int uTexture, int iDepth, int iLevel,
++                             unsigned int *puError, void *pvLoaderPrivate)
++{
++   IMGEGLImage *psEGLImage;
++   __DRIimage *psImage;
++   uint32_t iEGLTarget;
++   unsigned int uError;
++
++   switch (iTarget) {
++   case PVRDRI_GL_TEXTURE_2D:
++      iEGLTarget = iTarget;
++      break;
++   case PVRDRI_GL_TEXTURE_CUBE_MAP_POSITIVE_X:
++      iEGLTarget = iTarget + iDepth;
++      break;
++   default:
++      errorMessage("%s: EGL GL texture %d is not supported",
++                   __func__, iTarget);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_PARAMETER;
++      return NULL;
++   }
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage)
++      return NULL;
++
++   psEGLImage = PVRDRIEGLImageCreate();
++   if (!psEGLImage) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   uError = PVRDRIGetImageSource(psPVRContext->eAPI,
++                                 psPVRContext->psPVRScreen->psImpl,
++                                 psPVRContext->psImpl, iEGLTarget, uTexture,
++                                 iLevel, psEGLImage);
++   *puError = uError;
++
++   if (uError != PVRDRI_IMAGE_ERROR_SUCCESS) {
++      PVRDRIEGLImageFree(psEGLImage);
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psEGLImage, psImage);
++
++   /*
++    * We can't destroy the image after this point, as the texture now has a
++    * reference to it.
++    */
++   psImage->psShared =
++      CreateImageSharedFromEGLImage(psPVRContext->psPVRScreen, psEGLImage,
++                                    PVRDRI_EGLIMAGE_IMGEGL);
++   if (!psImage->psShared)
++      return NULL;
++
++   psImage->psEGLImage = PVRDRIEGLImageDup(psImage->psShared->psEGLImage);
++   if (!psImage->psEGLImage)
++      return NULL;
++
++   psImage->iRefCount++;
++
++   return psImage;
++}
++
++__DRIimage *
++DRIMODCreateImageFromFDs(struct DRISUPScreen *psPVRScreen,
++                         int iWidth, int iHeight, int iFourCC,
++                         int *piFDs, int iNumFDs,
++                         int *piStrides, int *piOffsets,
++                         void *pvLoaderPrivate)
++{
++   unsigned int uError;
++
++   return DRIMODCreateImageFromDMABufs(psPVRScreen, iWidth, iHeight, iFourCC,
++                                       piFDs, iNumFDs, piStrides, piOffsets,
++                                       PVRDRI_YUV_COLOR_SPACE_UNDEFINED,
++                                       PVRDRI_YUV_RANGE_UNDEFINED,
++                                       PVRDRI_YUV_CHROMA_SITING_UNDEFINED,
++                                       PVRDRI_YUV_CHROMA_SITING_UNDEFINED,
++                                       &uError, pvLoaderPrivate);
++}
++
++__DRIimage *
++DRIMODCreateImageFromBuffer(struct DRISUPContext *psPVRContext, int iTarget,
++                            void *pvBuffer, unsigned int *puError,
++                            void *pvLoaderPrivate)
++{
++   IMGEGLImage *psEGLImage;
++   __DRIimage *psImage;
++
++   switch (iTarget) {
++   case PVRDRI_CL_IMAGE_IMG:
++      break;
++   default:
++      errorMessage("%s: Target %d is not supported", __func__, iTarget);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_PARAMETER;
++      return NULL;
++   }
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psEGLImage = PVRDRIEGLImageCreate();
++   if (!psEGLImage) {
++      DRIMODDestroyImage(psImage);
++
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   *puError = PVRDRIGetImageSource(PVRDRI_API_CL,
++                                   psPVRContext->psPVRScreen->psImpl,
++                                   psPVRContext->psImpl, iTarget,
++                                   (uintptr_t) pvBuffer, 0, psEGLImage);
++   if (*puError != PVRDRI_IMAGE_ERROR_SUCCESS) {
++      PVRDRIEGLImageFree(psEGLImage);
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psEGLImage, psImage);
++
++   /*
++    * We can't destroy the image after this point, as the OCL image now has a
++    * reference to it.
++    */
++   psImage->psShared =
++      CreateImageSharedFromEGLImage(psPVRContext->psPVRScreen, psEGLImage,
++                                    PVRDRI_EGLIMAGE_IMGOCL);
++   if (!psImage->psShared) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psImage->psEGLImage = PVRDRIEGLImageDup(psImage->psShared->psEGLImage);
++   if (!psImage->psEGLImage) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psImage->iRefCount++;
++
++   *puError = PVRDRI_IMAGE_ERROR_SUCCESS;
++
++   return psImage;
++}
++
++__DRIimage *
++DRIMODCreateImageFromDMABufs2(struct DRISUPScreen *psPVRScreen,
++                              int iWidth, int iHeight,
++                              int iFourCC, uint64_t uModifier,
++                              int *piFDs, int iNumFDs,
++                              int *piStrides, int *piOffsets,
++                              unsigned int uColorSpace,
++                              unsigned int uSampleRange,
++                              unsigned int uHorizSiting,
++                              unsigned int uVertSiting,
++                              unsigned int *puError,
++                              void *pvLoaderPrivate)
++{
++   __DRIimage *psImage;
++   struct PVRDRIImageShared *psShared;
++   IMG_PIXFMT eIMGPixelFormat;
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psShared = CreateImageSharedFromDMABufs(psPVRScreen, iWidth, iHeight,
++                                           iFourCC, uModifier, piFDs, iNumFDs,
++                                           piStrides, piOffsets,
++                                           uColorSpace, uSampleRange,
++                                           uHorizSiting, uVertSiting,
++                                           puError);
++   if (!psShared) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   psImage->psShared = psShared;
++   eIMGPixelFormat = psShared->psFormat->eIMGPixelFormat;
++
++   psImage->psEGLImage =
++      PVRDRIEGLImageCreateFromBuffer(iWidth, iHeight, piStrides[0],
++                                     eIMGPixelFormat, psShared->eColourSpace,
++                                     psShared->eChromaUInterp,
++                                     psShared->eChromaVInterp,
++                                     psShared->psBuffer);
++   if (!psImage->psEGLImage) {
++      DRIMODDestroyImage(psImage);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psImage->psEGLImage, psImage);
++
++   *puError = PVRDRI_IMAGE_ERROR_SUCCESS;
++
++   return psImage;
++}
++
++__DRIimage *
++DRIMODCreateImageFromDMABufs(struct DRISUPScreen *psPVRScreen,
++                             int iWidth, int iHeight, int iFourCC,
++                             int *piFDs, int iNumFDs,
++                             int *piStrides, int *piOffsets,
++                             unsigned int uColorSpace,
++                             unsigned int uSampleRange,
++                             unsigned int uHorizSiting,
++                             unsigned int uVertSiting,
++                             unsigned int *puError,
++                             void *pvLoaderPrivate)
++{
++   return DRIMODCreateImageFromDMABufs2(psPVRScreen, iWidth, iHeight,
++                                        iFourCC, DRM_FORMAT_MOD_INVALID,
++                                        piFDs, iNumFDs,
++                                        piStrides, piOffsets,
++                                        uColorSpace, uSampleRange,
++                                        uHorizSiting, uVertSiting,
++                                        puError, pvLoaderPrivate);
++}
++
++void
++PVRDRIRefImage(__DRIimage *psImage)
++{
++   int iRefCount = p_atomic_inc_return(&psImage->iRefCount);
++
++   (void) iRefCount;
++   assert(iRefCount > 1);
++}
++
++void
++PVRDRIUnrefImage(__DRIimage *psImage)
++{
++   DRIMODDestroyImage(psImage);
++}
++
++PVRDRIImageType
++PVRDRIImageGetSharedType(__DRIimage *psImage)
++{
++   return psImage->psShared->eType;
++}
++
++PVRDRIBufferImpl *
++PVRDRIImageGetSharedBuffer(__DRIimage *psImage)
++{
++   assert(psImage->psShared->eType != PVRDRI_IMAGE_FROM_EGLIMAGE);
++
++   return psImage->psShared->psBuffer;
++}
++
++IMGEGLImage *
++PVRDRIImageGetSharedEGLImage(__DRIimage *psImage)
++{
++   assert(psImage->psShared->eType == PVRDRI_IMAGE_FROM_EGLIMAGE);
++
++   return psImage->psShared->psEGLImage;
++}
++
++IMGEGLImage *
++PVRDRIImageGetEGLImage(__DRIimage *psImage)
++{
++   return psImage->psEGLImage;
++}
++
++__DRIimage *
++PVRDRIScreenGetDRIImage(void *hEGLImage)
++{
++   struct DRISUPScreen *psPVRScreen;
++
++   psPVRScreen = DRIMODThreadGetCurrentScreen();
++   if (!psPVRScreen)
++      return NULL;
++
++   return MODSUPLookupEGLImage(psPVRScreen->psDRIScreen, hEGLImage,
++                               psPVRScreen->pvLoaderPrivate);
++}
++
++void
++DRIMODBlitImage(struct DRISUPContext *psPVRContext,
++                __DRIimage *psDst, __DRIimage *psSrc,
++                int iDstX0, int iDstY0, int iDstWidth, int iDstHeight,
++                int iSrcX0, int iSrcY0, int iSrcWidth, int iSrcHeight,
++                int iFlushFlag)
++{
++   bool bRes;
++
++   bRes = PVRDRIBlitEGLImage(psPVRContext->psPVRScreen->psImpl,
++                             psPVRContext->psImpl,
++                             psDst->psEGLImage, psDst->psShared->psBuffer,
++                             psSrc->psEGLImage, psSrc->psShared->psBuffer,
++                             iDstX0, iDstY0, iDstWidth, iDstHeight,
++                             iSrcX0, iSrcY0, iSrcWidth, iSrcHeight,
++                             iFlushFlag);
++   if (!bRes)
++      __driUtilMessage("%s: PVRDRIBlitEGLImage failed", __func__);
++}
++
++int
++DRIMODGetImageCapabilities(struct DRISUPScreen *psPVRScreen)
++{
++   (void) psPVRScreen;
++
++   return PVRDRI_IMAGE_CAP_GLOBAL_NAMES;
++}
++
++void *
++DRIMODMapImage(struct DRISUPContext *psPVRContext, __DRIimage *psImage,
++               int iX0, int iY0, int iWidth, int iHeight,
++               unsigned int iFlags, int *iStride, void **ppvData)
++{
++   return PVRDRIMapEGLImage(psPVRContext->psPVRScreen->psImpl,
++                            psPVRContext->psImpl,
++                            psImage->psEGLImage, psImage->psShared->psBuffer,
++                            iX0, iY0, iWidth, iHeight, iFlags, iStride,
++                            ppvData);
++}
++
++void
++DRIMODUnmapImage(struct DRISUPContext *psPVRContext, __DRIimage *psImage,
++                 void *pvData)
++{
++   bool bRes;
++
++   bRes = PVRDRIUnmapEGLImage(psPVRContext->psPVRScreen->psImpl,
++                              psPVRContext->psImpl, psImage->psEGLImage,
++                              psImage->psShared->psBuffer, pvData);
++   if (!bRes)
++      __driUtilMessage("%s: PVRDRIUnmapEGLImage failed", __func__);
++}
 diff --git a/src/mesa/drivers/dri/pvr/pvrmesa.h b/src/mesa/drivers/dri/pvr/pvrmesa.h
 new file mode 100644
-index 00000000000..6e0fd8d296a
+index 00000000000..5e1c9c1b2e6
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/pvrmesa.h
-@@ -0,0 +1,41 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,36 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -7241,23 +9077,269 @@
 +#include "pvrdri.h"
 +
 +void pvrdri_free_dispatch_tables(PVRDRIScreen *psPVRScreen);
-+
 +bool pvrdri_create_dispatch_table(PVRDRIScreen *psPVRScreen,
-+				  PVRDRIAPIType eAPI);
-+
++                                  PVRDRIAPIType eAPI);
 +void pvrdri_set_null_dispatch_table(void);
-+
 +void pvrdri_set_dispatch_table(PVRDRIContext *psPVRContext);
 +
 +#endif /* !defined(__PVRMESA_H__) */
 diff --git a/src/mesa/drivers/dri/pvr/pvrutil.c b/src/mesa/drivers/dri/pvr/pvrutil.c
 new file mode 100644
-index 00000000000..b0e5d260341
+index 00000000000..40e9fdfc122
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/pvrutil.c
-@@ -0,0 +1,1067 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,245 @@
++/*
++ * Copyright (c) Imagination Technologies Ltd.
++ *
++ * The contents of this file are subject to the MIT license as set out below.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++#include <stdarg.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <assert.h>
++
++#include "drm-uapi/drm_fourcc.h"
++
++#include "utils.h"
++#include "dri_util.h"
++#include "pvrdri.h"
++
++#define MESSAGE_LENGTH_MAX 1024
++
++/*
++ * Define before including android/log.h and dlog.h as this is used by these
++ * headers.
++ */
++#define LOG_TAG "PVR-MESA"
++
++#if defined(HAVE_ANDROID_PLATFORM)
++#include <android/log.h>
++#define err_printf(f, args...) ((void)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, f, ##args))
++#define dbg_printf(f, args...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, f, ##args))
++#elif defined(HAVE_TIZEN_PLATFORM)
++#include <dlog.h>
++#define err_printf(f, args...) LOGE(f, ##args)
++#define dbg_printf(f, args...) LOGD(f, ##args)
++#else
++#define err_printf(f, args...) fprintf(stderr, f "\n", ##args)
++#define dbg_printf(f, args...) fprintf(stderr, "LibGL: " f "\n", ##args)
++#endif /* HAVE_ANDROID_PLATFORM */
++
++/* Standard error message */
++void PRINTFLIKE(1, 2)
++errorMessage(const char *f, ...)
++{
++   char message[MESSAGE_LENGTH_MAX];
++   va_list args;
++
++   va_start(args, f);
++   vsnprintf(message, sizeof message, f, args);
++   va_end(args);
++
++   err_printf("%s", message);
++}
++
++void PRINTFLIKE(1, 2)
++__driUtilMessage(const char *f, ...)
++{
++   char message[MESSAGE_LENGTH_MAX];
++   va_list args;
++
++   /*
++    * On Android and Tizen, always print messages; otherwise, only print if
++    * the environment variable LIBGL_DEBUG=verbose.
++    */
++#if !defined(HAVE_ANDROID_PLATFORM) && !defined(HAVE_TIZEN_PLATFORM)
++   char *ev = getenv("LIBGL_DEBUG");
++
++   if (!ev || strcmp(ev, "verbose") != 0)
++      return;
++#endif
++
++   va_start(args, f);
++   vsnprintf(message, sizeof message, f, args);
++   va_end(args);
++
++   dbg_printf("%s", message);
++}
++
++mesa_format
++PVRDRIMesaFormatToMesaFormat(int pvrdri_mesa_format)
++{
++   switch (pvrdri_mesa_format) {
++   case PVRDRI_MESA_FORMAT_NONE:
++      return MESA_FORMAT_NONE;
++   case PVRDRI_MESA_FORMAT_B8G8R8A8_UNORM:
++      return MESA_FORMAT_B8G8R8A8_UNORM;
++   case PVRDRI_MESA_FORMAT_B8G8R8X8_UNORM:
++      return MESA_FORMAT_B8G8R8X8_UNORM;
++   case PVRDRI_MESA_FORMAT_B5G6R5_UNORM:
++      return MESA_FORMAT_B5G6R5_UNORM;
++   case PVRDRI_MESA_FORMAT_R8G8B8A8_UNORM:
++      return MESA_FORMAT_R8G8B8A8_UNORM;
++   case PVRDRI_MESA_FORMAT_R8G8B8X8_UNORM:
++      return MESA_FORMAT_R8G8B8X8_UNORM;
++   case PVRDRI_MESA_FORMAT_YCBCR:
++      return MESA_FORMAT_YCBCR;
++#if defined(__DRI_ATTRIB_YUV_BIT)
++   case PVRDRI_MESA_FORMAT_YUV420_2PLANE:
++      return MESA_FORMAT_YUV420_2PLANE;
++   case PVRDRI_MESA_FORMAT_YVU420_2PLANE:
++      return MESA_FORMAT_YVU420_2PLANE;
++#endif
++   case PVRDRI_MESA_FORMAT_B8G8R8A8_SRGB:
++      return MESA_FORMAT_B8G8R8A8_SRGB;
++   case PVRDRI_MESA_FORMAT_R8G8B8A8_SRGB:
++      return MESA_FORMAT_R8G8B8A8_SRGB;
++   default:
++      __driUtilMessage("%s: Unknown format: %d", __func__, pvrdri_mesa_format);
++      break;
++   }
++
++   return MESA_FORMAT_NONE;
++}
++
++int
++PVRDRIFormatToFourCC(int dri_format)
++{
++   switch (dri_format) {
++   case __DRI_IMAGE_FORMAT_RGB565:
++      return DRM_FORMAT_RGB565;
++   case __DRI_IMAGE_FORMAT_XRGB8888:
++      return DRM_FORMAT_XRGB8888;
++   case __DRI_IMAGE_FORMAT_ARGB8888:
++      return DRM_FORMAT_ARGB8888;
++   case __DRI_IMAGE_FORMAT_ABGR8888:
++      return DRM_FORMAT_ABGR8888;
++   case __DRI_IMAGE_FORMAT_XBGR8888:
++      return DRM_FORMAT_XBGR8888;
++   case __DRI_IMAGE_FORMAT_R8:
++      return DRM_FORMAT_R8;
++   case __DRI_IMAGE_FORMAT_GR88:
++      return DRM_FORMAT_GR88;
++   case __DRI_IMAGE_FORMAT_NONE:
++      return 0;
++   case __DRI_IMAGE_FORMAT_XRGB2101010:
++      return DRM_FORMAT_XRGB2101010;
++   case __DRI_IMAGE_FORMAT_ARGB2101010:
++      return DRM_FORMAT_ARGB2101010;
++   case __DRI_IMAGE_FORMAT_SARGB8:
++      return __DRI_IMAGE_FOURCC_SARGB8888;
++   case __DRI_IMAGE_FORMAT_ARGB1555:
++      return DRM_FORMAT_ARGB1555;
++   case __DRI_IMAGE_FORMAT_R16:
++      return DRM_FORMAT_R16;
++   case __DRI_IMAGE_FORMAT_GR1616:
++      return DRM_FORMAT_GR1616;
++   case __DRI_IMAGE_FORMAT_YUYV:
++      return DRM_FORMAT_YUYV;
++   case __DRI_IMAGE_FORMAT_XBGR2101010:
++      return DRM_FORMAT_XBGR2101010;
++   case __DRI_IMAGE_FORMAT_ABGR2101010:
++      return DRM_FORMAT_ABGR2101010;
++   case __DRI_IMAGE_FORMAT_SABGR8:
++      return __DRI_IMAGE_FOURCC_SABGR8888;
++#if defined(__DRI_ATTRIB_YUV_BIT)
++   case __DRI_IMAGE_FORMAT_UYVY:
++      return DRM_FORMAT_UYVY;
++#endif
++   case __DRI_IMAGE_FORMAT_ARGB4444:
++      return DRM_FORMAT_ARGB4444;
++   case __DRI_IMAGE_FORMAT_YVU444_PACK10_IMG:
++      return DRM_FORMAT_YVU444_PACK10_IMG;
++   case __DRI_IMAGE_FORMAT_BGR888:
++      return DRM_FORMAT_BGR888;
++   default:
++      __driUtilMessage("%s: Unknown format: %d", __func__, dri_format);
++      break;
++   }
++
++   return 0;
++}
++
++int
++PVRDRIFourCCToDRIFormat(int iFourCC)
++{
++   switch (iFourCC) {
++   case 0:
++      return __DRI_IMAGE_FORMAT_NONE;
++   case DRM_FORMAT_RGB565:
++      return __DRI_IMAGE_FORMAT_RGB565;
++   case DRM_FORMAT_XRGB8888:
++      return __DRI_IMAGE_FORMAT_XRGB8888;
++   case DRM_FORMAT_ARGB8888:
++      return __DRI_IMAGE_FORMAT_ARGB8888;
++   case DRM_FORMAT_ABGR8888:
++      return __DRI_IMAGE_FORMAT_ABGR8888;
++   case DRM_FORMAT_XBGR8888:
++      return __DRI_IMAGE_FORMAT_XBGR8888;
++   case DRM_FORMAT_R8:
++      return __DRI_IMAGE_FORMAT_R8;
++   case DRM_FORMAT_GR88:
++      return __DRI_IMAGE_FORMAT_GR88;
++   case DRM_FORMAT_XRGB2101010:
++      return __DRI_IMAGE_FORMAT_XRGB2101010;
++   case DRM_FORMAT_ARGB2101010:
++      return __DRI_IMAGE_FORMAT_ARGB2101010;
++   case __DRI_IMAGE_FOURCC_SARGB8888:
++      return __DRI_IMAGE_FORMAT_SARGB8;
++   case DRM_FORMAT_ARGB1555:
++      return __DRI_IMAGE_FORMAT_ARGB1555;
++   case DRM_FORMAT_R16:
++      return __DRI_IMAGE_FORMAT_R16;
++   case DRM_FORMAT_GR1616:
++      return __DRI_IMAGE_FORMAT_GR1616;
++   case DRM_FORMAT_YUYV:
++      return __DRI_IMAGE_FORMAT_YUYV;
++   case DRM_FORMAT_XBGR2101010:
++      return __DRI_IMAGE_FORMAT_XBGR2101010;
++   case DRM_FORMAT_ABGR2101010:
++      return __DRI_IMAGE_FORMAT_ABGR2101010;
++   case __DRI_IMAGE_FOURCC_SABGR8888:
++      return __DRI_IMAGE_FORMAT_SABGR8;
++   case DRM_FORMAT_UYVY:
++#if defined(__DRI_ATTRIB_YUV_BIT)
++      return __DRI_IMAGE_FORMAT_UYVY;
++#endif
++   case DRM_FORMAT_ARGB4444:
++      return __DRI_IMAGE_FORMAT_ARGB4444;
++   case DRM_FORMAT_YVU444_PACK10_IMG:
++      return __DRI_IMAGE_FORMAT_YVU444_PACK10_IMG;
++   case DRM_FORMAT_BGR888:
++      return __DRI_IMAGE_FORMAT_BGR888;
++   default:
++      __driUtilMessage("%s: Unknown format: %d", __func__, iFourCC);
++      break;
++   }
++
++   return 0;
++}
+diff --git a/src/mesa/drivers/dri/pvr/pvrutil_mod.c b/src/mesa/drivers/dri/pvr/pvrutil_mod.c
+new file mode 100644
+index 00000000000..5359a5e2fde
+--- /dev/null
++++ b/src/mesa/drivers/dri/pvr/pvrutil_mod.c
+@@ -0,0 +1,937 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -7283,1058 +9365,930 @@
 + */
 +
 +#include <assert.h>
-+#include <stdarg.h>
-+#include <stdio.h>
 +#include <stdlib.h>
++#include <string.h>
 +
-+#include "utils.h"
-+#include "dri_util.h"
-+
-+#include "pvrdri.h"
-+
-+#define MESSAGE_LENGTH_MAX 1024
++#include "img_drm_fourcc.h"
++#include "pvrdri_mod.h"
 +
 +/*
-+ * define before including android/log.h and dlog.h as this is used by these
-+ * headers
++ * The following sRGB formats defined may not be defined in drm_fourcc.h, but
++ * match the corresponding __DRI_IMAGE_FOURCC formats in Mesa.
 + */
-+#define LOG_TAG "PVR-MESA"
++#if !defined(DRM_FORMAT_SARGB8888)
++#define DRM_FORMAT_SARGB8888 0x83324258
++#endif
 +
-+#if defined(HAVE_ANDROID_PLATFORM)
-+#include <android/log.h>
-+#define err_printf(f, args...) ((void)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, f, ##args))
-+#define dbg_printf(f, args...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, f, ##args))
-+#elif defined(HAVE_TIZEN_PLATFORM)
-+#include <dlog.h>
-+#define err_printf(f, args...) LOGE(f, ##args)
-+#define dbg_printf(f, args...) LOGD(f, ##args)
-+#else
-+#define err_printf(f, args...) fprintf(stderr, f, ##args)
-+#define dbg_printf(f, args...) fprintf(stderr, "LibGL: " f "\n", ##args)
-+#endif /* HAVE_ANDROID_PLATFORM */
++#if !defined(DRM_FORMAT_SABGR8888)
++#define DRM_FORMAT_SABGR8888 0x84324258
++#endif
 +
-+#define	PVRDRIMesaFormatEntry(f) {f, PVRDRI_ ## f }
++#if !defined(DRM_FORMAT_SBGR888)
++#define DRM_FORMAT_SBGR888   0xff324742
++#endif
 +
-+static const struct
-+{
-+	mesa_format eMesa;
-+	unsigned uPVRDRI;
-+} g_asMesaFormats[] = {
-+	PVRDRIMesaFormatEntry(MESA_FORMAT_B8G8R8A8_UNORM),
-+	PVRDRIMesaFormatEntry(MESA_FORMAT_B8G8R8X8_UNORM),
-+#ifdef HAVE_ANDROID_PLATFORM
-+	PVRDRIMesaFormatEntry(MESA_FORMAT_R8G8B8A8_UNORM),
-+	PVRDRIMesaFormatEntry(MESA_FORMAT_R8G8B8X8_UNORM),
++static const PVRDRIImageFormat g_asFormats[] = {
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R10G10B10A2_UNORM,
++      .iDRIFourCC = DRM_FORMAT_ABGR2101010,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R10G10B10A2_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_ARGB8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM_SRGB,
++      .iDRIFourCC = DRM_FORMAT_SARGB8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .bIsSRGB = true,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM_SRGB,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_ABGR8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM_SRGB,
++      .iDRIFourCC = DRM_FORMAT_SABGR8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .bIsSRGB = true,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM_SRGB,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B8G8R8X8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_XRGB8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGB,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B8G8R8X8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8B8X8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_XBGR8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGB,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8B8X8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8B8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_BGR888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGB,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8B8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++#if defined(DRM_FORMAT_SBGR888)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8B8_UNORM_SRGB,
++      .iDRIFourCC = DRM_FORMAT_SBGR888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGB,
++      .bIsSRGB = true,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8B8_UNORM_SRGB,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
 +#endif
-+	PVRDRIMesaFormatEntry(MESA_FORMAT_B5G6R5_UNORM),
-+};
-+
-+/* See pvrdri.h for documentation on PVRDRIImageFormat */
-+static const PVRDRIImageFormat g_asFormats[] =
-+{
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_R10G10B10A2_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_ABGR2101010,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_ABGR2101010,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGBA,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+			.eIMGPixelFormat = IMG_PIXFMT_R10G10B10A2_UNORM,
-+			.uiWidthShift = 0,
-+			.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_ARGB8888,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_ARGB8888,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGBA,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_ABGR8888,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_ABGR8888,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGBA,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_B8G8R8X8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_XRGB8888,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_XRGB8888,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGB,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_B8G8R8X8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_R8G8B8X8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_XBGR8888,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_XBGR8888,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGB,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8B8X8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_B5G6R5_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_RGB565,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_RGB565,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGB,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_B5G6R5_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_GR88,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_GR88,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RG,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_R8,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_R8,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_R,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+		{
-+		.eIMGPixelFormat = IMG_PIXFMT_L8A8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_GR88,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_GR88,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RG,
-+		.bQueryDmaBufFormatsExclude = true,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_L8A8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_L8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_R8,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_R8,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_R,
-+		.bQueryDmaBufFormatsExclude = true,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_L8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_D32_FLOAT,
-+		.iDRIFourCC = 0,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = 0,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_D32_FLOAT,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_S8_UINT,
-+		.iDRIFourCC = 0,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = 0,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_S8_UINT,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+#if defined(__DRI_IMAGE_FORMAT_ARGB4444)
-+	/* We patch this format into Mesa */
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_B4G4R4A4_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_ARGB4444,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_ARGB4444,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGBA,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_B4G4R4A4_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B5G6R5_UNORM,
++      .iDRIFourCC = DRM_FORMAT_RGB565,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGB,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B5G6R5_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_GR88,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RG,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_R8,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_R,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_L8A8_UNORM,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_L8A8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_L8_UNORM,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_L8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_D32_FLOAT,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_D32_FLOAT,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_S8_UINT,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_S8_UINT,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++#if defined(DRM_FORMAT_ARGB4444)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B4G4R4A4_UNORM,
++      .iDRIFourCC = DRM_FORMAT_ARGB4444,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B4G4R4A4_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
 +#endif
-+#if defined(__DRI_IMAGE_FORMAT_ARGB1555)
-+	/* We patch this format into Mesa */
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_B5G5R5A1_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_ARGB1555,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_ARGB1555,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGBA,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_B5G5R5A1_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
++#if defined(DRM_FORMAT_ARGB1555)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B5G5R5A1_UNORM,
++      .iDRIFourCC = DRM_FORMAT_ARGB1555,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B5G5R5A1_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
 +#endif
-+#if defined(__DRI_IMAGE_COMPONENTS_EXTERNAL)
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YUYV,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_YUYV,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_YUYV,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_EXTERNAL,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+			.eIMGPixelFormat = IMG_PIXFMT_YUYV,
-+			.uiWidthShift = 0,
-+			.uiHeightShift = 0
-+		},
-+	},
-+#if defined(__DRI_IMAGE_FOURCC_YVU444_PACK10_IMG)
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YVU10_444_1PLANE_PACK10,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_YVU444_PACK10_IMG,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_YVU444_PACK10_IMG,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_EXTERNAL,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+			.eIMGPixelFormat = IMG_PIXFMT_YVU10_444_1PLANE_PACK10,
-+			.uiWidthShift = 0,
-+			.uiHeightShift = 0,
-+		},
-+	},
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YUYV,
++      .iDRIFourCC = DRM_FORMAT_YUYV,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_EXTERNAL,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_YUYV,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++#if defined(DRM_FORMAT_YVU444_PACK10_IMG)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YVU10_444_1PLANE_PACK10,
++      .iDRIFourCC = DRM_FORMAT_YVU444_PACK10_IMG,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_EXTERNAL,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_YVU10_444_1PLANE_PACK10,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0,
++      },
++   },
 +#endif
++#if defined(DRM_FORMAT_MT21)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YVU8_420_2PLANE_PACK8_P,
++      .iDRIFourCC = DRM_FORMAT_MT21,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_UV,
++      .uiNumPlanes = 2,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++   },
 +#endif
-+#if defined(__DRI_IMAGE_FOURCC_MT21)
-+	/* We patch this format into Mesa */
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YVU8_420_2PLANE_PACK8_P,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_MT21,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_Y_UV,
-+		.uiNumPlanes = 2,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+		.sPlanes[1] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+	},
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YUV420_2PLANE,
++      .iDRIFourCC = DRM_FORMAT_NV12,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_UV,
++      .uiNumPlanes = 2,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++   },
++#if defined(DRM_FORMAT_NV21)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YVU420_2PLANE,
++      .iDRIFourCC = DRM_FORMAT_NV21,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_UV,
++      .uiNumPlanes = 2,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++   },
 +#endif
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YUV420_2PLANE,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_NV12,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_Y_UV,
-+		.uiNumPlanes = 2,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+		.sPlanes[1] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+	},
-+#if defined(__DRI_IMAGE_FOURCC_NV21)
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YVU420_2PLANE,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_NV21,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_Y_UV,
-+		.uiNumPlanes = 2,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+		.sPlanes[1] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+	},
-+#endif
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YUV420_3PLANE,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_YUV420,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_Y_U_V,
-+		.uiNumPlanes = 3,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+		.sPlanes[1] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+		.sPlanes[2] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YVU420_3PLANE,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_YVU420,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_Y_U_V,
-+		.uiNumPlanes = 3,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+		.sPlanes[1] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+		.sPlanes[2] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_D16_UNORM,
-+		.iDRIFourCC = 0,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = 0,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_D16_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_D24_UNORM_X8_TYPELESS,
-+		.iDRIFourCC = 0,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = 0,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_D24_UNORM_X8_TYPELESS,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YUV420_3PLANE,
++      .iDRIFourCC = DRM_FORMAT_YUV420,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_U_V,
++      .uiNumPlanes = 3,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++      .sPlanes[2] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YVU420_3PLANE,
++      .iDRIFourCC = DRM_FORMAT_YVU420,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_U_V,
++      .uiNumPlanes = 3,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++      .sPlanes[2] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YUV8_444_3PLANE_PACK8,
++      .iDRIFourCC = DRM_FORMAT_YUV444,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_U_V,
++      .uiNumPlanes = 3,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[2] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_D16_UNORM,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_D16_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_D24_UNORM_X8_TYPELESS,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_D24_UNORM_X8_TYPELESS,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
 +};
 +
 +/*
 + * Check if a PVR Screen has support for a particular format based upon its
-+ * position in g_asFormats. If querying of this information isn't supported
-+ * by pvr_dri_support then assume the format is supported.
++ * position in g_asFormats. If querying of this information isn't supported by
++ * pvr_dri_support then assume the format is supported.
 + */
 +static inline bool
-+PVRDRIScreenHasFormatFromIdx(const PVRDRIScreen * const psPVRScreen,
-+			     const unsigned int uiFormatIdx)
++PVRDRIScreenHasFormatFromIdx(const struct DRISUPScreen *const psPVRScreen,
++                             const unsigned int uiFormatIdx)
 +{
-+	if (psPVRScreen->iNumFormats > 0)
-+	{
-+		if (uiFormatIdx < ARRAY_SIZE(g_asFormats))
-+		{
-+			return psPVRScreen->pbHasFormat[uiFormatIdx];
-+		}
++   if (psPVRScreen->iNumFormats > 0) {
++      if (uiFormatIdx < ARRAY_SIZE(g_asFormats))
++         return psPVRScreen->pbHasFormat[uiFormatIdx];
++      return false;
++   }
 +
-+		return false;
-+	}
-+
-+	assert(psPVRScreen->iNumFormats == -1);
-+
-+	return true;
++   assert(psPVRScreen->iNumFormats == -1);
++   return true;
 +}
 +
-+/* Standard error message */
-+void PRINTFLIKE(1, 2) errorMessage(const char *f, ...)
++const struct __DRIconfigRec **
++PVRDRICreateConfigs(const struct DRISUPScreen *psPVRScreen)
 +{
-+	char message[MESSAGE_LENGTH_MAX];
-+	va_list args;
++   static const unsigned int auBackBufferModes[] = {
++      PVRDRI_ATTRIB_SWAP_NONE,
++      PVRDRI_ATTRIB_SWAP_UNDEFINED,
++   };
++   const uint8_t *puDepthBits = PVRDRIDepthBitsArray();
++   const uint8_t *puStencilBits = PVRDRIStencilBitsArray();
++   const uint8_t *puMSAASamples = PVRDRIMSAABitsArray();
++   const unsigned int uNumBackBufferModes = ARRAY_SIZE(auBackBufferModes);
++   const unsigned int uNumDepthStencilBits =
++      PVRDRIDepthStencilBitArraySize();
++   const unsigned int uNumMSAASamples = PVRDRIMSAABitArraySize();
++   struct __DRIconfigRec **ppsConfigs = NULL;
++   struct __DRIconfigRec **ppsNewConfigs;
++   unsigned int i;
 +
-+	va_start(args, f);
-+	vsnprintf(message, sizeof message, f, args);
-+	va_end(args);
++   for (i = 0; i < psPVRScreen->uNumMesaFormats; i++) {
++      if (!MODSUPCreateConfigs(&ppsNewConfigs, psPVRScreen->psDRIScreen,
++                               psPVRScreen->puMesaFormats[i],
++                               puDepthBits, puStencilBits,
++                               uNumDepthStencilBits,
++                               auBackBufferModes, uNumBackBufferModes,
++                               puMSAASamples, uNumMSAASamples,
++                               false, false, false,
++                               PVRDRI_YUV_DEPTH_RANGE_NONE,
++                               PVRDRI_YUV_CSC_STANDARD_NONE,
++                               PVRDRIMaxPBufferWidth(),
++                               PVRDRIMaxPBufferHeight())) {
++         __driUtilMessage("%s: Couldn't create DRI configs", __func__);
++         return NULL;
++      }
 +
-+	err_printf("%s", message);
++      ppsConfigs = MODSUPConcatConfigs(psPVRScreen->psDRIScreen,
++                                       ppsConfigs, ppsNewConfigs);
++   }
++
++   return (const struct __DRIconfigRec **) ppsConfigs;
 +}
 +
-+void PRINTFLIKE(1, 2) __driUtilMessage(const char *f, ...)
++const PVRDRIImageFormat *
++PVRDRIFourCCToImageFormat(struct DRISUPScreen *psPVRScreen, int iDRIFourCC)
 +{
-+	char message[MESSAGE_LENGTH_MAX];
-+	va_list args;
++   unsigned int i;
 +
-+	/*
-+	 * On Android and Tizen, always print messages; otherwise, only print if
-+	 * the environment variable LIBGL_DEBUG=verbose
-+	 */
-+#if !defined(HAVE_ANDROID_PLATFORM) && !defined(HAVE_TIZEN_PLATFORM)
-+	char *ev = getenv("LIBGL_DEBUG");
++   if (!iDRIFourCC)
++      return NULL;
 +
-+	if (!ev || strcmp(ev, "verbose") != 0)
-+	{
-+		return;
-+	}
-+#endif
++   for (i = 0; i < ARRAY_SIZE(g_asFormats); i++) {
++      if (g_asFormats[i].iDRIFourCC != iDRIFourCC)
++         continue;
 +
-+	va_start(args, f);
-+	vsnprintf(message, sizeof message, f, args);
-+	va_end(args);
++      if (!PVRDRIScreenHasFormatFromIdx(psPVRScreen, i))
++         break;
 +
-+	dbg_printf("%s", message);
++      return &g_asFormats[i];
++   }
++
++   return NULL;
 +}
 +
-+const __DRIconfig **PVRDRICreateConfigs(void)
++const PVRDRIImageFormat *
++PVRDRIIMGPixelFormatToImageFormat(struct DRISUPScreen *psPVRScreen,
++                                  IMG_PIXFMT eIMGPixelFormat)
 +{
-+	static const GLenum asBackBufferModes[]	= { __DRI_ATTRIB_SWAP_NONE, __DRI_ATTRIB_SWAP_UNDEFINED };
-+	const uint8_t *puDepthBits = PVRDRIDepthBitsArray();
-+	const uint8_t *puStencilBits = PVRDRIStencilBitsArray();
-+	const uint8_t *puMSAASamples = PVRDRIMSAABitsArray();
-+	const unsigned uNumBackBufferModes = ARRAY_SIZE(asBackBufferModes);
-+	const unsigned uNumDepthStencilBits = PVRDRIDepthStencilBitArraySize();
-+	const unsigned uNumMSAASamples = PVRDRIMSAABitArraySize();
-+	__DRIconfig **ppsConfigs = NULL;
-+	__DRIconfig **ppsNewConfigs;
-+	unsigned i;
++   unsigned int i;
 +
-+	for (i = 0; i < ARRAY_SIZE(g_asMesaFormats); i++)
-+	{
-+		if (!PVRDRIMesaFormatSupported(g_asMesaFormats[i].uPVRDRI))
-+			continue;
++   assert(eIMGPixelFormat != IMG_PIXFMT_UNKNOWN);
 +
-+		ppsNewConfigs = driCreateConfigs(g_asMesaFormats[i].eMesa,
-+						 puDepthBits,
-+						 puStencilBits,
-+						 uNumDepthStencilBits, 
-+						 asBackBufferModes,
-+						 uNumBackBufferModes, 
-+						 puMSAASamples,
-+						 uNumMSAASamples,
-+						 GL_FALSE,
-+						 GL_FALSE,
-+						 GL_FALSE
-+#if defined(__DRI_ATTRIB_YUV_BIT)
-+						 , __DRI_ATTRIB_YUV_DEPTH_RANGE_NONE,
-+						 __DRI_ATTRIB_YUV_CSC_STANDARD_NONE
-+#endif
-+						 );
++   for (i = 0; i < ARRAY_SIZE(g_asFormats); i++) {
++      if (g_asFormats[i].eIMGPixelFormat != eIMGPixelFormat)
++         continue;
 +
-+		ppsConfigs = driConcatConfigs(ppsConfigs, ppsNewConfigs);
-+	}
++      /*
++       * Assume that the screen has the format, i.e. it's supported by the
++       * HW+SW, since we can only have an IMG_PIXFMT from having called one of
++       * the other PVRDRI*ToImageFormat functions or one of the
++       * pvr_dri_support functions.
++       */
++      assert(PVRDRIScreenHasFormatFromIdx(psPVRScreen, i));
++      return &g_asFormats[i];
++   }
 +
-+	if (ppsConfigs)
-+	{
-+		for (i = 0; ppsConfigs[i]; i++)
-+		{
-+			ppsConfigs[i]->modes.maxPbufferWidth =
-+						PVRDRIMaxPBufferWidth();
-+			ppsConfigs[i]->modes.maxPbufferHeight =
-+						PVRDRIMaxPBufferHeight();
-+
-+			ppsConfigs[i]->modes.maxPbufferPixels =
-+						PVRDRIMaxPBufferWidth() *
-+						PVRDRIMaxPBufferHeight();
-+		}
-+	}
-+
-+	return (const __DRIconfig **)ppsConfigs;
-+}
-+
-+const PVRDRIImageFormat *PVRDRIFormatToImageFormat(PVRDRIScreen *psPVRScreen,
-+						   int iDRIFormat)
-+{
-+	unsigned i;
-+
-+	assert(iDRIFormat != __DRI_IMAGE_FORMAT_NONE);
-+
-+	for (i = 0; i < ARRAY_SIZE(g_asFormats); i++)
-+	{
-+		if (g_asFormats[i].iDRIFormat != iDRIFormat)
-+		{
-+			continue;
-+		}
-+
-+		if (!PVRDRIScreenHasFormatFromIdx(psPVRScreen, i))
-+		{
-+			break;
-+		}
-+
-+		return &g_asFormats[i];
-+	}
-+
-+	return NULL;
-+}
-+
-+const PVRDRIImageFormat *PVRDRIFourCCToImageFormat(PVRDRIScreen *psPVRScreen,
-+						   int iDRIFourCC)
-+{
-+	unsigned i;
-+
-+	if (!iDRIFourCC)
-+	{
-+		return NULL;
-+	}
-+
-+	for (i = 0; i < ARRAY_SIZE(g_asFormats); i++)
-+	{
-+		if (g_asFormats[i].iDRIFourCC != iDRIFourCC)
-+		{
-+			continue;
-+		}
-+
-+		if (!PVRDRIScreenHasFormatFromIdx(psPVRScreen, i))
-+		{
-+			break;
-+		}
-+
-+		return &g_asFormats[i];
-+	}
-+
-+	return NULL;
-+}
-+
-+const PVRDRIImageFormat *PVRDRIIMGPixelFormatToImageFormat(PVRDRIScreen *psPVRScreen,
-+							   IMG_PIXFMT eIMGPixelFormat)
-+{
-+	unsigned i;
-+
-+	assert(eIMGPixelFormat != IMG_PIXFMT_UNKNOWN);
-+
-+	for (i = 0; i < ARRAY_SIZE(g_asFormats); i++)
-+	{
-+		if (g_asFormats[i].eIMGPixelFormat != eIMGPixelFormat)
-+		{
-+			continue;
-+		}
-+
-+		/*
-+		 * Assume that the screen has the format, i.e. it's supported by
-+		 * the HW+SW, since we can only have an IMG_PIXFMT from having
-+		 * called one of the other PVRDRI*ToImageFormat functions or
-+		 * one of the pvr_dri_support functions.
-+		 */
-+		assert(PVRDRIScreenHasFormatFromIdx(psPVRScreen, i));
-+
-+		return &g_asFormats[i];
-+	}
-+
-+	return NULL;
++   return NULL;
 +}
 +
 +/*
 + * The EGL_EXT_image_dma_buf_import says that if a hint is unspecified then
-+ * the implementation may guess based on the pixel format or may fallback
-+ * to some default value. Furthermore, if a hint is unsupported then the
++ * the implementation may guess based on the pixel format or may fallback to
++ * some default value. Furthermore, if a hint is unsupported then the
 + * implementation may use whichever settings it wants to achieve the closest
 + * match.
 + */
-+IMG_YUV_COLORSPACE PVRDRIToIMGColourSpace(const PVRDRIImageFormat *psFormat,
-+					  enum __DRIYUVColorSpace eDRIColourSpace,
-+					  enum __DRISampleRange eDRISampleRange)
++IMG_YUV_COLORSPACE
++PVRDRIToIMGColourSpace(const PVRDRIImageFormat *psFormat,
++                       unsigned int uDRIColourSpace,
++                       unsigned int uDRISampleRange)
 +{
-+	switch (psFormat->iDRIComponents)
-+	{
-+		case __DRI_IMAGE_COMPONENTS_R:
-+		case __DRI_IMAGE_COMPONENTS_RG:
-+		case __DRI_IMAGE_COMPONENTS_RGB:
-+		case __DRI_IMAGE_COMPONENTS_RGBA:
-+			return IMG_COLORSPACE_UNDEFINED;
-+		case __DRI_IMAGE_COMPONENTS_Y_U_V:
-+		case __DRI_IMAGE_COMPONENTS_Y_UV:
-+		case __DRI_IMAGE_COMPONENTS_Y_XUXV:
-+#if defined(__DRI_IMAGE_COMPONENTS_EXTERNAL)
-+		case __DRI_IMAGE_COMPONENTS_EXTERNAL:
-+#endif
-+			break;
-+		default:
-+			errorMessage("Unrecognised DRI components (components = 0x%X)\n",
-+				     psFormat->iDRIComponents);
-+			unreachable("unhandled DRI component");
-+			return IMG_COLORSPACE_UNDEFINED;
-+	}
++   switch (psFormat->iDRIComponents) {
++   case PVRDRI_IMAGE_COMPONENTS_R:
++   case PVRDRI_IMAGE_COMPONENTS_RG:
++   case PVRDRI_IMAGE_COMPONENTS_RGB:
++   case PVRDRI_IMAGE_COMPONENTS_RGBA:
++      return IMG_COLORSPACE_UNDEFINED;
++   case PVRDRI_IMAGE_COMPONENTS_Y_U_V:
++   case PVRDRI_IMAGE_COMPONENTS_Y_UV:
++   case PVRDRI_IMAGE_COMPONENTS_Y_XUXV:
++   case PVRDRI_IMAGE_COMPONENTS_EXTERNAL:
++      break;
++   default:
++      errorMessage("%s: Unrecognised DRI components (components = 0x%X)",
++                   __func__, psFormat->iDRIComponents);
++      unreachable("unhandled DRI component");
++      return IMG_COLORSPACE_UNDEFINED;
++   }
 +
-+	switch (eDRIColourSpace)
-+	{
-+		case __DRI_YUV_COLOR_SPACE_UNDEFINED:
-+		case __DRI_YUV_COLOR_SPACE_ITU_REC601:
-+			switch (eDRISampleRange)
-+			{
-+				case __DRI_YUV_RANGE_UNDEFINED:
-+				case __DRI_YUV_NARROW_RANGE:
-+					return IMG_COLORSPACE_BT601_CONFORMANT_RANGE;
-+				case __DRI_YUV_FULL_RANGE:
-+					return IMG_COLORSPACE_BT601_FULL_RANGE;
-+				default:
-+					errorMessage("Unrecognised DRI sample range (sample range = 0x%X)\n",
-+						     eDRISampleRange);
-+					unreachable("unhandled sample range");
-+					return IMG_COLORSPACE_UNDEFINED;
-+			}
-+		case __DRI_YUV_COLOR_SPACE_ITU_REC709:
-+			switch (eDRISampleRange)
-+			{
-+				case __DRI_YUV_RANGE_UNDEFINED:
-+				case __DRI_YUV_NARROW_RANGE:
-+					return IMG_COLORSPACE_BT709_CONFORMANT_RANGE;
-+				case __DRI_YUV_FULL_RANGE:
-+					return IMG_COLORSPACE_BT709_FULL_RANGE;
-+				default:
-+					errorMessage("Unrecognised DRI sample range (sample range = 0x%X)\n",
-+						     eDRISampleRange);
-+					unreachable("unhandled sample range");
-+					return IMG_COLORSPACE_UNDEFINED;
-+			}
-+		case __DRI_YUV_COLOR_SPACE_ITU_REC2020:
-+			switch (eDRISampleRange)
-+			{
-+				case __DRI_YUV_RANGE_UNDEFINED:
-+				case __DRI_YUV_NARROW_RANGE:
-+					return IMG_COLORSPACE_BT2020_CONFORMANT_RANGE;
-+				case __DRI_YUV_FULL_RANGE:
-+					return IMG_COLORSPACE_BT2020_FULL_RANGE;
-+				default:
-+					errorMessage("Unrecognised DRI sample range (sample range = 0x%X)\n",
-+						     eDRISampleRange);
-+					assert(0);
-+					return IMG_COLORSPACE_UNDEFINED;
-+			}
-+		default:
-+			errorMessage("Unrecognised DRI colour space (colour space = 0x%X)\n",
-+				     eDRIColourSpace);
-+			unreachable("unhandled color space");
-+			return IMG_COLORSPACE_UNDEFINED;
-+	}
++   switch (uDRIColourSpace) {
++   case PVRDRI_YUV_COLOR_SPACE_UNDEFINED:
++   case PVRDRI_YUV_COLOR_SPACE_ITU_REC601:
++      switch (uDRISampleRange) {
++      case PVRDRI_YUV_RANGE_UNDEFINED:
++      case PVRDRI_YUV_NARROW_RANGE:
++         return IMG_COLORSPACE_BT601_CONFORMANT_RANGE;
++      case PVRDRI_YUV_FULL_RANGE:
++         return IMG_COLORSPACE_BT601_FULL_RANGE;
++      default:
++         errorMessage ("%s: Unrecognised DRI sample range (sample range = 0x%X)",
++                       __func__, uDRISampleRange);
++         unreachable("unhandled sample range");
++         return IMG_COLORSPACE_UNDEFINED;
++      }
++   case PVRDRI_YUV_COLOR_SPACE_ITU_REC709:
++      switch (uDRISampleRange) {
++      case PVRDRI_YUV_RANGE_UNDEFINED:
++      case PVRDRI_YUV_NARROW_RANGE:
++         return IMG_COLORSPACE_BT709_CONFORMANT_RANGE;
++      case PVRDRI_YUV_FULL_RANGE:
++         return IMG_COLORSPACE_BT709_FULL_RANGE;
++      default:
++         errorMessage ("%s: Unrecognised DRI sample range (sample range = 0x%X)",
++                       __func__, uDRISampleRange);
++         unreachable("unhandled sample range");
++         return IMG_COLORSPACE_UNDEFINED;
++      }
++   case PVRDRI_YUV_COLOR_SPACE_ITU_REC2020:
++      switch (uDRISampleRange) {
++      case PVRDRI_YUV_RANGE_UNDEFINED:
++      case PVRDRI_YUV_NARROW_RANGE:
++         return IMG_COLORSPACE_BT2020_CONFORMANT_RANGE;
++      case PVRDRI_YUV_FULL_RANGE:
++         return IMG_COLORSPACE_BT2020_FULL_RANGE;
++      default:
++         errorMessage ("%s: Unrecognised DRI sample range (sample range = 0x%X)",
++                       __func__, uDRISampleRange);
++         assert(0);
++         return IMG_COLORSPACE_UNDEFINED;
++      }
++   default:
++      errorMessage ("%s: Unrecognised DRI color space (color space = 0x%X)",
++                    __func__, uDRIColourSpace);
++      unreachable("unhandled color space");
++      return IMG_COLORSPACE_UNDEFINED;
++   }
 +}
 +
-+IMG_YUV_CHROMA_INTERP PVRDRIChromaSittingToIMGInterp(const PVRDRIImageFormat *psFormat,
-+						     enum __DRIChromaSiting eChromaSitting)
++IMG_YUV_CHROMA_INTERP
++PVRDRIChromaSittingToIMGInterp(const PVRDRIImageFormat *psFormat,
++                               unsigned int uChromaSitting)
 +{
-+	switch (psFormat->iDRIComponents)
-+	{
-+		case __DRI_IMAGE_COMPONENTS_R:
-+		case __DRI_IMAGE_COMPONENTS_RG:
-+		case __DRI_IMAGE_COMPONENTS_RGB:
-+		case __DRI_IMAGE_COMPONENTS_RGBA:
-+			return IMG_CHROMA_INTERP_UNDEFINED;
-+		case __DRI_IMAGE_COMPONENTS_Y_U_V:
-+		case __DRI_IMAGE_COMPONENTS_Y_UV:
-+		case __DRI_IMAGE_COMPONENTS_Y_XUXV:
-+#if defined(__DRI_IMAGE_COMPONENTS_EXTERNAL)
-+		case __DRI_IMAGE_COMPONENTS_EXTERNAL:
-+#endif
-+			break;
-+		default:
-+			errorMessage("Unrecognised DRI components (components = 0x%X)\n",
-+				     psFormat->iDRIComponents);
-+			unreachable("unhandled dri component");
-+			return IMG_CHROMA_INTERP_UNDEFINED;
-+	}
++   switch (psFormat->iDRIComponents) {
++   case PVRDRI_IMAGE_COMPONENTS_R:
++   case PVRDRI_IMAGE_COMPONENTS_RG:
++   case PVRDRI_IMAGE_COMPONENTS_RGB:
++   case PVRDRI_IMAGE_COMPONENTS_RGBA:
++      return IMG_CHROMA_INTERP_UNDEFINED;
++   case PVRDRI_IMAGE_COMPONENTS_Y_U_V:
++   case PVRDRI_IMAGE_COMPONENTS_Y_UV:
++   case PVRDRI_IMAGE_COMPONENTS_Y_XUXV:
++   case PVRDRI_IMAGE_COMPONENTS_EXTERNAL:
++      break;
++   default:
++      errorMessage("%s: Unrecognised DRI components (components = 0x%X)",
++                   __func__, psFormat->iDRIComponents);
++      unreachable("unhandled dri component");
++      return IMG_CHROMA_INTERP_UNDEFINED;
++   }
 +
-+	switch (eChromaSitting)
-+	{
-+		case __DRI_YUV_CHROMA_SITING_UNDEFINED:
-+		case __DRI_YUV_CHROMA_SITING_0:
-+			return IMG_CHROMA_INTERP_ZERO;
-+		case __DRI_YUV_CHROMA_SITING_0_5:
-+			return IMG_CHROMA_INTERP_HALF;
-+		default:
-+			errorMessage("Unrecognised DRI chroma sitting (chroma sitting = 0x%X)\n",
-+				     eChromaSitting);
-+			unreachable("unhandled chroma sitting");
-+			return IMG_CHROMA_INTERP_UNDEFINED;
-+	}
++   switch (uChromaSitting) {
++   case PVRDRI_YUV_CHROMA_SITING_UNDEFINED:
++   case PVRDRI_YUV_CHROMA_SITING_0:
++      return IMG_CHROMA_INTERP_ZERO;
++   case PVRDRI_YUV_CHROMA_SITING_0_5:
++      return IMG_CHROMA_INTERP_HALF;
++   default:
++      errorMessage ("%s: Unrecognised DRI chroma sitting (chroma sitting = 0x%X)",
++          __func__, uChromaSitting);
++      unreachable("unhandled chroma sitting");
++      return IMG_CHROMA_INTERP_UNDEFINED;
++   }
 +}
 +
-+bool PVRDRIGetSupportedFormats(PVRDRIScreen *psPVRScreen)
++bool
++PVRDRIGetSupportedFormats(struct DRISUPScreen *psPVRScreen)
 +{
-+	int *piFormats;
-+	IMG_PIXFMT *peImgFormats;
-+	bool bRet = false;
-+	unsigned i;
++   int *piFormats;
++   IMG_PIXFMT *peImgFormats;
++   bool bRet = false;
++   unsigned int i;
 +
-+	piFormats = malloc(ARRAY_SIZE(g_asFormats) * sizeof(*piFormats));
-+	peImgFormats = malloc(ARRAY_SIZE(g_asFormats) * sizeof(*peImgFormats));
++   piFormats = malloc(ARRAY_SIZE(g_asFormats) * sizeof(*piFormats));
++   peImgFormats = malloc(ARRAY_SIZE(g_asFormats) * sizeof(*peImgFormats));
 +
-+	psPVRScreen->pbHasFormat = malloc(ARRAY_SIZE(g_asFormats) *
-+					  sizeof(*psPVRScreen->pbHasFormat));
++   psPVRScreen->pbHasFormat = malloc(ARRAY_SIZE(g_asFormats) *
++                                     sizeof(*psPVRScreen->pbHasFormat));
 +
-+	psPVRScreen->psModifiers = calloc(ARRAY_SIZE(g_asFormats),
-+					   sizeof(*psPVRScreen->psModifiers));
++   psPVRScreen->psModifiers = calloc(ARRAY_SIZE(g_asFormats),
++                                     sizeof(*psPVRScreen->psModifiers));
 +
-+	if (!piFormats || !peImgFormats ||
-+	    !psPVRScreen->pbHasFormat || !psPVRScreen->psModifiers)
-+	{
-+		errorMessage("Out of memory\n");
++   if (!piFormats || !peImgFormats ||
++       !psPVRScreen->pbHasFormat || !psPVRScreen->psModifiers) {
++      errorMessage("%s: Out of memory", __func__);
++      goto err_free;
++   }
 +
-+		goto err_free;
-+	}
++   for (i = 0; i < ARRAY_SIZE(g_asFormats); i++) {
++      piFormats[i] = g_asFormats[i].iDRIFourCC;
++      peImgFormats[i] = g_asFormats[i].eIMGPixelFormat;
 +
-+	for (i = 0; i < ARRAY_SIZE(g_asFormats); i++)
-+	{
-+		piFormats[i] = g_asFormats[i].bQueryDmaBufFormatsExclude ?
-+			       0 : g_asFormats[i].iDRIFourCC;
++      psPVRScreen->psModifiers[i].iNumModifiers = -1;
++   }
 +
-+		peImgFormats[i] = g_asFormats[i].eIMGPixelFormat;
++   psPVRScreen->iNumFormats =
++      PVRDRIQuerySupportedFormats(psPVRScreen->psImpl, ARRAY_SIZE(g_asFormats),
++                                  piFormats, peImgFormats,
++                                  psPVRScreen->pbHasFormat);
++   if (psPVRScreen->iNumFormats == 0) {
++      __driUtilMessage("%s: Couldn't query supported pixel formats",
++                       __func__);
++      goto err_free;
++   }
 +
-+		psPVRScreen->psModifiers[i].iNumModifiers = -1;
-+	}
-+
-+	psPVRScreen->iNumFormats =
-+			PVRDRIQuerySupportedFormats(psPVRScreen->psImpl,
-+						    ARRAY_SIZE(g_asFormats),
-+						    piFormats,
-+						    peImgFormats,
-+						    psPVRScreen->pbHasFormat);
-+	if (psPVRScreen->iNumFormats == 0)
-+	{
-+		__driUtilMessage("Couldn't query supported pixel formats\n");
-+		goto err_free;
-+	}
-+
-+	bRet = true;
-+	goto cleanup;
++   bRet = true;
++   goto cleanup;
 +
 +err_free:
-+	free(psPVRScreen->psModifiers);
-+	psPVRScreen->psModifiers = NULL;
++   free(psPVRScreen->psModifiers);
++   psPVRScreen->psModifiers = NULL;
 +
-+	free(psPVRScreen->pbHasFormat);
-+	psPVRScreen->pbHasFormat = NULL;
++   free(psPVRScreen->pbHasFormat);
++   psPVRScreen->pbHasFormat = NULL;
 +cleanup:
-+	free(peImgFormats);
-+	free(piFormats);
-+	return bRet;
++   free(peImgFormats);
++   free(piFormats);
++   return bRet;
 +}
 +
-+GLboolean PVRDRIQueryDmaBufFormats(__DRIscreen *screen, int max,
-+				   int *formats, int *count)
++bool
++DRIMODQueryDMABufFormats(struct DRISUPScreen *psPVRScreen, int iMax,
++                         int *piFormats, int *piCount)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	int i, j;
++   int iLim;
++   unsigned int i;
++   int j;
 +
-+	assert(psPVRScreen->iNumFormats != 0);
++   assert(psPVRScreen->iNumFormats != 0);
 +
-+	if (psPVRScreen->iNumFormats < 0)
-+	{
-+		return GL_FALSE;
-+	}
++   if (psPVRScreen->iNumFormats < 0)
++      return false;
 +
-+	if (!max)
-+	{
-+		*count = psPVRScreen->iNumFormats;
-+		return GL_TRUE;
-+	}
++   iLim = (iMax) ? iMax : psPVRScreen->iNumFormats;
 +
-+	for (i = 0, j = 0; i < ARRAY_SIZE(g_asFormats) && j < max; i++)
-+	{
-+		if (psPVRScreen->pbHasFormat[i])
-+		{
-+			formats[j++] = g_asFormats[i].iDRIFourCC;
-+		}
-+	}
++   for (i = 0, j = 0; i < ARRAY_SIZE(g_asFormats) && j < iLim; i++) {
++      /*
++       * SRGB formats don't map to DRM formats, as defined by drm_fourcc.h, so
++       * should not be returned.
++       */
++      if (g_asFormats[i].bIsSRGB)
++         continue;
 +
-+	*count = j;
++      if (psPVRScreen->pbHasFormat[i] && g_asFormats[i].iDRIFourCC) {
++         if (iMax)
++            piFormats[j] = g_asFormats[i].iDRIFourCC;
++         j++;
++      }
++   }
 +
-+	return GL_TRUE;
++   *piCount = j;
++
++   return true;
 +}
 +
-+static bool PVRDRIGetSupportedModifiers(PVRDRIScreen *psPVRScreen,
-+					struct PVRDRIModifiers *psModifiers,
-+					const PVRDRIImageFormat *psFormat)
++static bool
++PVRDRIGetSupportedModifiers(struct DRISUPScreen *psPVRScreen,
++                            struct PVRDRIModifiers *psModifiers,
++                            const PVRDRIImageFormat *psFormat)
 +{
-+	int iNumModifiers;
++   int iNumModifiers;
 +
-+	iNumModifiers = PVRDRIQueryModifiers(psPVRScreen->psImpl,
-+					     psFormat->iDRIFourCC,
-+					     psFormat->eIMGPixelFormat,
-+					     NULL, NULL);
-+	if (iNumModifiers < 0)
-+	{
-+		errorMessage("Couldn't query modifiers for format 0x%x\n",
-+			     psFormat->iDRIFourCC);
-+		return false;
-+	}
++   iNumModifiers = PVRDRIQueryModifiers(psPVRScreen->psImpl,
++                                        psFormat->iDRIFourCC,
++                                        psFormat->eIMGPixelFormat,
++                                        NULL, NULL);
++   if (iNumModifiers < 0) {
++      errorMessage("%s: Couldn't query modifiers for format 0x%x",
++                   __func__, psFormat->iDRIFourCC);
++      return false;
++   }
 +
-+	psModifiers->puModifiers = malloc(iNumModifiers *
-+					  sizeof(*psModifiers->puModifiers));
-+	psModifiers->puExternalOnly = malloc(iNumModifiers *
-+					  sizeof(*psModifiers->puExternalOnly));
-+	if (!psModifiers->puModifiers || !psModifiers->puExternalOnly)
-+	{
-+		free(psModifiers->puModifiers);
-+		psModifiers->puModifiers = NULL;
++   psModifiers->puModifiers = malloc(iNumModifiers *
++                                     sizeof(*psModifiers->puModifiers));
++   psModifiers->puExternalOnly = malloc(iNumModifiers *
++                                        sizeof(*psModifiers->
++                                               puExternalOnly));
++   if (!psModifiers->puModifiers || !psModifiers->puExternalOnly) {
++      free(psModifiers->puModifiers);
++      psModifiers->puModifiers = NULL;
 +
-+		free(psModifiers->puExternalOnly);
-+		psModifiers->puExternalOnly = NULL;
++      free(psModifiers->puExternalOnly);
++      psModifiers->puExternalOnly = NULL;
 +
-+		errorMessage("Out of memory\n");
++      errorMessage("%s: Out of memory", __func__);
 +
-+		return false;
-+	}
-+	psModifiers->iNumModifiers = iNumModifiers;
++      return false;
++   }
++   psModifiers->iNumModifiers = iNumModifiers;
 +
-+	iNumModifiers = PVRDRIQueryModifiers(psPVRScreen->psImpl,
-+					    psFormat->iDRIFourCC,
-+					    psFormat->eIMGPixelFormat,
-+					    psModifiers->puModifiers,
-+					    psModifiers->puExternalOnly);
++   iNumModifiers = PVRDRIQueryModifiers(psPVRScreen->psImpl,
++                                        psFormat->iDRIFourCC,
++                                        psFormat->eIMGPixelFormat,
++                                        psModifiers->puModifiers,
++                                        psModifiers->puExternalOnly);
 +
-+	assert(iNumModifiers == psModifiers->iNumModifiers);
++   assert(iNumModifiers == psModifiers->iNumModifiers);
 +
-+	return true;
++   return true;
 +}
 +
-+static bool PVRDRIGetModifiersForFormat(PVRDRIScreen *psPVRScreen,
-+					int fourcc,
-+					const PVRDRIImageFormat **ppsFormat,
-+					const struct PVRDRIModifiers **ppsModifiers)
++static bool
++PVRDRIGetModifiersForFormat(struct DRISUPScreen *psPVRScreen, int iFourCC,
++                            const PVRDRIImageFormat **ppsFormat,
++                            const struct PVRDRIModifiers **ppsModifiers)
 +{
-+	const PVRDRIImageFormat *psFormat;
-+	struct PVRDRIModifiers *psModifiers;
-+	unsigned uIdx;
++   const PVRDRIImageFormat *psFormat;
++   struct PVRDRIModifiers *psModifiers;
++   unsigned int uIdx;
 +
-+	assert(psPVRScreen->iNumFormats != 0);
++   assert(psPVRScreen->iNumFormats != 0);
 +
-+	if (psPVRScreen->iNumFormats < 0)
-+	{
-+		return false;
-+	}
++   if (psPVRScreen->iNumFormats < 0)
++      return false;
 +
-+	psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, fourcc);
-+	if (!psFormat)
-+	{
-+		return false;
-+	}
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat)
++      return false;
 +
-+	uIdx = psFormat - g_asFormats;
-+	psModifiers = &psPVRScreen->psModifiers[uIdx];
++   uIdx = psFormat - g_asFormats;
++   psModifiers = &psPVRScreen->psModifiers[uIdx];
 +
-+	if (psModifiers->iNumModifiers < 0)
-+	{
-+		if (!PVRDRIGetSupportedModifiers(psPVRScreen,
-+						 psModifiers,
-+						 psFormat))
-+		{
-+			return false;
-+		}
-+	}
++   if (psModifiers->iNumModifiers < 0)
++      if (!PVRDRIGetSupportedModifiers(psPVRScreen, psModifiers, psFormat))
++         return false;
 +
-+	*ppsFormat = psFormat;
-+	*ppsModifiers = psModifiers;
++   *ppsFormat = psFormat;
++   *ppsModifiers = psModifiers;
 +
-+	return true;
++   return true;
 +}
 +
-+bool PVRDRIValidateImageModifier(PVRDRIScreen *psPVRScreen, const int iFourcc,
-+				 const uint64_t uiModifier)
++bool
++PVRDRIValidateImageModifier(struct DRISUPScreen *psPVRScreen,
++                            const int iFourCC, const uint64_t uiModifier)
 +{
-+	const PVRDRIImageFormat *psFormat;
-+	const struct PVRDRIModifiers *psModifiers;
++   const PVRDRIImageFormat *psFormat;
++   const struct PVRDRIModifiers *psModifiers;
 +
-+	if (!PVRDRIGetModifiersForFormat(psPVRScreen, iFourcc, &psFormat,
-+					 &psModifiers))
-+	{
-+		return false;
-+	}
++   if (!PVRDRIGetModifiersForFormat(psPVRScreen, iFourCC, &psFormat,
++                                    &psModifiers))
++      return false;
 +
-+	for (unsigned i = 0; i < psModifiers->iNumModifiers; i++)
-+	{
-+		if (psModifiers->puModifiers[i] == uiModifier)
-+		{
-+			return true;
-+		}
-+	}
++   for (int i = 0; i < psModifiers->iNumModifiers; i++)
++      if (psModifiers->puModifiers[i] == uiModifier)
++         return true;
 +
-+	return false;
++   return false;
 +}
 +
-+GLboolean PVRDRIQueryDmaBufModifiers(__DRIscreen *screen, int fourcc,
-+				     int max, uint64_t *modifiers,
-+				     unsigned int *external_only,
-+				     int *count)
++bool
++DRIMODQueryDMABufModifiers(struct DRISUPScreen *psPVRScreen, int iFourCC,
++                           int iMax, uint64_t *puModifiers,
++                           unsigned int *puExternalOnly, int *piCount)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	const PVRDRIImageFormat *psFormat;
-+	const struct PVRDRIModifiers *psModifiers;
-+	int num_copy;
++   const PVRDRIImageFormat *psFormat;
++   const struct PVRDRIModifiers *psModifiers;
++   int iNumCopy;
 +
-+	if (!PVRDRIGetModifiersForFormat(psPVRScreen,
-+					fourcc,
-+					&psFormat,
-+					&psModifiers))
-+	{
-+		return GL_FALSE;
-+	}
++   if (!PVRDRIGetModifiersForFormat(psPVRScreen, iFourCC, &psFormat,
++                                    &psModifiers))
++      return false;
 +
-+	if (!max)
-+	{
-+		*count = psModifiers->iNumModifiers;
-+		return GL_TRUE;
-+	}
++   if (!iMax) {
++      *piCount = psModifiers->iNumModifiers;
++      return true;
++   }
 +
-+	num_copy = (max < psModifiers->iNumModifiers) ?
-+			max : psModifiers->iNumModifiers;
++   iNumCopy = (iMax < psModifiers->iNumModifiers) ?
++      iMax : psModifiers->iNumModifiers;
 +
-+	if (modifiers)
-+	{
-+		(void) memcpy(modifiers,
-+			      psModifiers->puModifiers,
-+			      sizeof(*modifiers) * num_copy);
-+	}
++   if (puModifiers)
++      (void) memcpy(puModifiers, psModifiers->puModifiers,
++                    sizeof(*puModifiers) * iNumCopy);
 +
-+	if (external_only)
-+	{
-+		(void) memcpy(external_only,
-+			      psModifiers->puExternalOnly,
-+			      sizeof(*external_only) * num_copy);
-+	}
++   if (puExternalOnly)
++      (void) memcpy(puExternalOnly, psModifiers->puExternalOnly,
++                    sizeof(*puExternalOnly) * iNumCopy);
 +
-+	*count = num_copy;
++   *piCount = iNumCopy;
 +
-+	return GL_TRUE;
++   return true;
 +}
 +
-+GLboolean PVRDRIQueryDmaBufFormatModifierAttribs(__DRIscreen *screen,
-+						 uint32_t fourcc,
-+						 uint64_t modifier,
-+						 int attrib,
-+						 uint64_t *value)
++bool
++DRIMODQueryDMABufFormatModifierAttribs(struct DRISUPScreen *psPVRScreen,
++                                       uint32_t uFourCC, uint64_t uModifier,
++                                       int iAttribute, uint64_t *puValue)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	const PVRDRIImageFormat *psFormat;
-+	const struct PVRDRIModifiers *psModifiers;
-+	int i;
++   const PVRDRIImageFormat *psFormat;
++   const struct PVRDRIModifiers *psModifiers;
++   int i;
 +
-+	if (!PVRDRIGetModifiersForFormat(psPVRScreen,
-+					fourcc,
-+					&psFormat,
-+					&psModifiers))
-+	{
-+		return GL_FALSE;
-+	}
++   if (!PVRDRIGetModifiersForFormat(psPVRScreen, uFourCC, &psFormat,
++                                    &psModifiers))
++      return false;
 +
-+	for (i = 0; i < psModifiers->iNumModifiers; i++)
-+	{
-+		if (psModifiers->puModifiers[i] == modifier)
-+		{
-+			break;
-+		}
-+	}
-+	if (i == psModifiers->iNumModifiers)
-+	{
-+		return GL_FALSE;
-+	}
++   for (i = 0; i < psModifiers->iNumModifiers; i++)
++      if (psModifiers->puModifiers[i] == uModifier)
++         break;
 +
-+	switch (attrib)
-+	{
-+		case __DRI_IMAGE_FORMAT_MODIFIER_ATTRIB_PLANE_COUNT:
-+			*value = psFormat->uiNumPlanes;
-+			break;
-+		default:
-+			return GL_FALSE;
-+	}
++   if (i == psModifiers->iNumModifiers)
++      return false;
 +
-+	return GL_TRUE;
++   switch (iAttribute) {
++   case PVRDRI_IMAGE_FORMAT_MODIFIER_ATTRIB_PLANE_COUNT:
++      *puValue = psFormat->uiNumPlanes;
++      break;
++   default:
++      return false;
++   }
++
++   return true;
 +}
 +
-+void PVRDRIDestroyFormatInfo(PVRDRIScreen *psPVRScreen)
++void
++PVRDRIDestroyFormatInfo(struct DRISUPScreen *psPVRScreen)
 +{
-+	unsigned i;
++   unsigned int i;
 +
-+	if (psPVRScreen->psModifiers)
-+	{
-+		for (i = 0; i < ARRAY_SIZE(g_asFormats); i++)
-+		{
-+			free(psPVRScreen->psModifiers[i].puModifiers);
-+			free(psPVRScreen->psModifiers[i].puExternalOnly);
-+		}
-+		free(psPVRScreen->psModifiers);
-+	}
++   if (psPVRScreen->psModifiers) {
++      for (i = 0; i < ARRAY_SIZE(g_asFormats); i++) {
++         free(psPVRScreen->psModifiers[i].puModifiers);
++         free(psPVRScreen->psModifiers[i].puExternalOnly);
++      }
++      free(psPVRScreen->psModifiers);
++   }
 +
-+	free(psPVRScreen->pbHasFormat);
++   free(psPVRScreen->pbHasFormat);
++}
++
++bool
++PVRDRIGetMesaFormats(struct DRISUPScreen *psPVRScreen)
++{
++   const unsigned int auMesaFormatsBase[] = {
++      PVRDRI_MESA_FORMAT_B8G8R8A8_UNORM,
++      PVRDRI_MESA_FORMAT_B8G8R8A8_SRGB,
++      PVRDRI_MESA_FORMAT_B8G8R8X8_UNORM,
++      PVRDRI_MESA_FORMAT_B5G6R5_UNORM,
++   };
++   const unsigned int auMesaFormatsRGB[] = {
++      PVRDRI_MESA_FORMAT_R8G8B8A8_UNORM,
++      PVRDRI_MESA_FORMAT_R8G8B8A8_SRGB,
++      PVRDRI_MESA_FORMAT_R8G8B8X8_UNORM,
++   };
++   unsigned int uSizeMesaFormats;
++   bool bCapRGB;
++   unsigned int i, j;
++
++   bCapRGB = MODSUPGetCapability(psPVRScreen->psDRIScreen,
++                                 PVRDRI_LOADER_CAP_RGBA_ORDERING) != 0;
++
++   uSizeMesaFormats = sizeof(auMesaFormatsBase);
++   if (bCapRGB)
++      uSizeMesaFormats += sizeof(auMesaFormatsRGB);
++
++   /*
++    * We haven't checked if any of the Mesa formats are supported by the DDK
++    * at this point, so we may allocate more memory than we need.
++    */
++   psPVRScreen->puMesaFormats = malloc(uSizeMesaFormats);
++   if (psPVRScreen->puMesaFormats == NULL) {
++      __driUtilMessage("%s: Out of memory", __func__);
++      return false;
++   }
++
++   for (i = 0, j = 0; i < ARRAY_SIZE(auMesaFormatsBase); i++) {
++      unsigned int uMesaFormat = auMesaFormatsBase[i];
++
++      if (!PVRDRIMesaFormatSupported(uMesaFormat))
++         continue;
++
++      psPVRScreen->puMesaFormats[j++] = uMesaFormat;
++   }
++
++   if (bCapRGB) {
++      for (i = 0; i < ARRAY_SIZE(auMesaFormatsRGB); i++) {
++         unsigned int uMesaFormat = auMesaFormatsRGB[i];
++
++         if (!PVRDRIMesaFormatSupported(uMesaFormat))
++            continue;
++
++         psPVRScreen->puMesaFormats[j++] = uMesaFormat;
++      }
++   }
++
++   assert((j * sizeof(psPVRScreen->puMesaFormats[0])) <=
++          uSizeMesaFormats);
++
++   psPVRScreen->uNumMesaFormats = j;
++
++   return true;
++}
++
++void
++PVRDRIFreeMesaFormats(struct DRISUPScreen *psPVRScreen)
++{
++   free(psPVRScreen->puMesaFormats);
 +}
 diff --git a/src/meson.build b/src/meson.build
-index ae094fccf6c..e5865ac2a9d 100644
+index ae094fccf6c..75f11188b02 100644
 --- a/src/meson.build
 +++ b/src/meson.build
-@@ -26,6 +26,7 @@ inc_src = include_directories('.')
- inc_gallium = include_directories('gallium/include')
+@@ -27,6 +27,7 @@ inc_gallium = include_directories('gallium/include')
  inc_gallium_aux = include_directories('gallium/auxiliary')
  inc_amd_common = include_directories('amd/common')
-+inc_pvr = include_directories('mesa/main', 'mapi/glapi')
  
++inc_pvr = include_directories('mesa/main', 'mapi/glapi')
  libglsl_util = static_library(
    'glsl_util',
+   files(
 -- 
-2.22.0
+2.28.0
 
diff --git a/media-libs/arc-mesa-iris/arc-mesa-iris-20.2.1-r17.ebuild b/media-libs/arc-mesa-iris/arc-mesa-iris-20.2.1-r17.ebuild
deleted file mode 100644
index c2ea9c2..0000000
--- a/media-libs/arc-mesa-iris/arc-mesa-iris-20.2.1-r17.ebuild
+++ /dev/null
@@ -1,152 +0,0 @@
-# Copyright 2018 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.
-
-EAPI=6
-
-CROS_WORKON_COMMIT="08c0cc5028afa38522762872176f8f424cbc8d59"
-CROS_WORKON_TREE="80bd75d79f29e0c38289ee2a975c26522c231b6f"
-CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
-CROS_WORKON_LOCALNAME="mesa-iris"
-
-inherit base meson multilib-minimal flag-o-matic cros-workon arc-build
-
-DESCRIPTION="The Mesa 3D Graphics Library"
-HOMEPAGE="http://mesa3d.org/"
-
-KEYWORDS="*"
-
-# Most files are MIT/X11.
-# Some files in src/glx are SGI-B-2.0.
-LICENSE="MIT SGI-B-2.0"
-SLOT="0"
-
-IUSE="
-	cheets
-	cheets_user
-	cheets_user_64
-	debug
-	vulkan
-	android_vulkan_compute_0
-	android_aep
-"
-
-REQUIRED_USE="
-	cheets
-	android_vulkan_compute_0? ( vulkan )
-"
-
-DEPEND="
-	>=x11-libs/arc-libdrm-2.4.82[${MULTILIB_USEDEP}]
-	dev-libs/arc-libelf[${MULTILIB_USEDEP}]
-"
-
-RDEPEND="${DEPEND}"
-
-src_configure() {
-	arc-build-select-clang
-
-	multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-	# The AOSP build system defines the Make variable PLATFORM_SDK_VERSION,
-	# and Mesa's Android.mk files use it to define the macro
-	# ANDROID_API_LEVEL. Arc emulates that here.
-	if [[ -n "${ARC_PLATFORM_SDK_VERSION}" ]]; then
-		CPPFLAGS+=" -DANDROID_API_LEVEL=${ARC_PLATFORM_SDK_VERSION}"
-	fi
-
-	arc-build-create-cross-file
-
-	emesonargs+=(
-		--prefix="${ARC_PREFIX}/vendor"
-		--sysconfdir="/system/vendor/etc"
-		-Ddri-search-path="/system/$(get_libdir)/dri:/system/vendor/$(get_libdir)/dri"
-		-Dllvm=false
-		-Ddri3=false
-		-Dshader-cache=true
-		-Dglx=disabled
-		-Degl=true
-		-Dgbm=false
-		-Dgles1=true
-		-Dgles2=true
-		-Dshared-glapi=true
-		-Ddri-drivers=
-		-Dgallium-drivers=iris
-		-Dgallium-vdpau=false
-		-Dgallium-xa=false
-		-Dplatforms=android
-		-Degl-lib-suffix=_mesa
-		-Dgles-lib-suffix=_mesa
-		-Dvulkan-drivers=$(usex vulkan intel '')
-		--buildtype $(usex debug debug release)
-		--cross-file="${ARC_CROSS_FILE}"
-		-Dplatform-sdk-version="${ARC_PLATFORM_SDK_VERSION}"
-	)
-
-	meson_src_configure
-}
-
-# The meson eclass exports src_compile but not multilib_src_compile. src_compile
-# gets overridden by multilib-minimal
-multilib_src_compile() {
-	meson_src_compile
-}
-
-multilib_src_install() {
-	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)"
-	newexe "${BUILD_DIR}/src/mapi/shared-glapi/libglapi.so.0" libglapi.so.0
-
-	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/egl"
-	newexe "${BUILD_DIR}/src/egl/libEGL_mesa.so" libEGL_mesa.so
-	newexe "${BUILD_DIR}/src/mapi/es1api/libGLESv1_CM_mesa.so" libGLESv1_CM_mesa.so
-	newexe "${BUILD_DIR}/src/mapi/es2api/libGLESv2_mesa.so" libGLESv2_mesa.so
-
-	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/dri"
-	newexe "${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so" iris_dri.so
-
-	if use vulkan; then
-		exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/hw"
-		newexe "${BUILD_DIR}/src/intel/vulkan/libvulkan_intel.so" vulkan.cheets.so
-	fi
-}
-
-multilib_src_install_all() {
-	# For documentation on the feature set represented by each XML file
-	# installed into /vendor/etc/permissions, see
-	# <https://developer.android.com/reference/android/content/pm/PackageManager.html>.
-	# For example XML files for each feature, see
-	# <https://android.googlesource.com/platform/frameworks/native/+/master/data/etc>.
-
-	# Install init files to advertise supported API versions.
-	insinto "${ARC_PREFIX}/vendor/etc/init"
-	doins "${FILESDIR}/gles32.rc"
-
-	# Install vulkan files
-	if use vulkan; then
-		einfo "Using android vulkan."
-		insinto "${ARC_PREFIX}/vendor/etc/init"
-		doins "${FILESDIR}/vulkan.rc"
-
-		insinto "${ARC_PREFIX}/vendor/etc/permissions"
-		doins "${FILESDIR}/android.hardware.vulkan.level-1.xml"
-		doins "${FILESDIR}/android.hardware.vulkan.version-1_1.xml"
-
-		if use android_vulkan_compute_0; then
-			einfo "Using android vulkan_compute_0."
-			insinto "${ARC_PREFIX}/vendor/etc/permissions"
-			doins "${FILESDIR}/android.hardware.vulkan.compute-0.xml"
-		fi
-	fi
-
-	# Install permission file to declare opengles aep support.
-	if use android_aep; then
-		einfo "Using android aep."
-		insinto "${ARC_PREFIX}/vendor/etc/permissions"
-		doins "${FILESDIR}/android.hardware.opengles.aep.xml"
-	fi
-	# Install the dri header for arc-cros-gralloc
-	insinto "${ARC_PREFIX}/vendor/include/GL"
-	doins -r "${S}/include/GL/internal"
-}
diff --git a/media-libs/arc-mesa-iris/arc-mesa-iris-21.1.1-r28.ebuild b/media-libs/arc-mesa-iris/arc-mesa-iris-21.1.1-r28.ebuild
new file mode 100644
index 0000000..d626bc9
--- /dev/null
+++ b/media-libs/arc-mesa-iris/arc-mesa-iris-21.1.1-r28.ebuild
@@ -0,0 +1,153 @@
+# Copyright 2018 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.
+
+EAPI=6
+
+CROS_WORKON_COMMIT="efbaa7b580468b0e4861a70dbd1b56266b393d36"
+CROS_WORKON_TREE="f623425a2c035582400821c0eb4451faaac1b9f2"
+CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_LOCALNAME="mesa-iris"
+CROS_WORKON_EGIT_BRANCH="chromeos-iris"
+
+inherit base meson multilib-minimal flag-o-matic cros-workon arc-build
+
+DESCRIPTION="The Mesa 3D Graphics Library"
+HOMEPAGE="http://mesa3d.org/"
+
+KEYWORDS="*"
+
+# Most files are MIT/X11.
+# Some files in src/glx are SGI-B-2.0.
+LICENSE="MIT SGI-B-2.0"
+SLOT="0"
+
+IUSE="
+	cheets
+	cheets_user
+	cheets_user_64
+	debug
+	vulkan
+	android_vulkan_compute_0
+	android_aep
+"
+
+REQUIRED_USE="
+	cheets
+	android_vulkan_compute_0? ( vulkan )
+"
+
+DEPEND="
+	>=x11-libs/arc-libdrm-2.4.82[${MULTILIB_USEDEP}]
+	dev-libs/arc-libelf[${MULTILIB_USEDEP}]
+"
+
+RDEPEND="${DEPEND}"
+
+src_configure() {
+	arc-build-select-clang
+
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	# The AOSP build system defines the Make variable PLATFORM_SDK_VERSION,
+	# and Mesa's Android.mk files use it to define the macro
+	# ANDROID_API_LEVEL. Arc emulates that here.
+	if [[ -n "${ARC_PLATFORM_SDK_VERSION}" ]]; then
+		CPPFLAGS+=" -DANDROID_API_LEVEL=${ARC_PLATFORM_SDK_VERSION}"
+	fi
+
+	arc-build-create-cross-file
+
+	emesonargs+=(
+		--prefix="${ARC_PREFIX}/vendor"
+		--sysconfdir="/system/vendor/etc"
+		-Ddri-search-path="/system/$(get_libdir)/dri:/system/vendor/$(get_libdir)/dri"
+		-Dllvm=false
+		-Ddri3=false
+		-Dshader-cache=true
+		-Dglx=disabled
+		-Degl=true
+		-Dgbm=false
+		-Dgles1=true
+		-Dgles2=true
+		-Dshared-glapi=true
+		-Ddri-drivers=
+		-Dgallium-drivers=iris
+		-Dgallium-vdpau=false
+		-Dgallium-xa=false
+		-Dplatforms=android
+		-Degl-lib-suffix=_mesa
+		-Dgles-lib-suffix=_mesa
+		-Dvulkan-drivers=$(usex vulkan intel '')
+		--buildtype $(usex debug debug release)
+		--cross-file="${ARC_CROSS_FILE}"
+		-Dplatform-sdk-version="${ARC_PLATFORM_SDK_VERSION}"
+	)
+
+	meson_src_configure
+}
+
+# The meson eclass exports src_compile but not multilib_src_compile. src_compile
+# gets overridden by multilib-minimal
+multilib_src_compile() {
+	meson_src_compile
+}
+
+multilib_src_install() {
+	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)"
+	newexe "${BUILD_DIR}/src/mapi/shared-glapi/libglapi.so.0" libglapi.so.0
+
+	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/egl"
+	newexe "${BUILD_DIR}/src/egl/libEGL_mesa.so" libEGL_mesa.so
+	newexe "${BUILD_DIR}/src/mapi/es1api/libGLESv1_CM_mesa.so" libGLESv1_CM_mesa.so
+	newexe "${BUILD_DIR}/src/mapi/es2api/libGLESv2_mesa.so" libGLESv2_mesa.so
+
+	exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/dri"
+	newexe "${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so" iris_dri.so
+
+	if use vulkan; then
+		exeinto "${ARC_PREFIX}/vendor/$(get_libdir)/hw"
+		newexe "${BUILD_DIR}/src/intel/vulkan/libvulkan_intel.so" vulkan.cheets.so
+	fi
+}
+
+multilib_src_install_all() {
+	# For documentation on the feature set represented by each XML file
+	# installed into /vendor/etc/permissions, see
+	# <https://developer.android.com/reference/android/content/pm/PackageManager.html>.
+	# For example XML files for each feature, see
+	# <https://android.googlesource.com/platform/frameworks/native/+/master/data/etc>.
+
+	# Install init files to advertise supported API versions.
+	insinto "${ARC_PREFIX}/vendor/etc/init"
+	doins "${FILESDIR}/gles32.rc"
+
+	# Install vulkan files
+	if use vulkan; then
+		einfo "Using android vulkan."
+		insinto "${ARC_PREFIX}/vendor/etc/init"
+		doins "${FILESDIR}/vulkan.rc"
+
+		insinto "${ARC_PREFIX}/vendor/etc/permissions"
+		doins "${FILESDIR}/android.hardware.vulkan.level-1.xml"
+		doins "${FILESDIR}/android.hardware.vulkan.version-1_1.xml"
+
+		if use android_vulkan_compute_0; then
+			einfo "Using android vulkan_compute_0."
+			insinto "${ARC_PREFIX}/vendor/etc/permissions"
+			doins "${FILESDIR}/android.hardware.vulkan.compute-0.xml"
+		fi
+	fi
+
+	# Install permission file to declare opengles aep support.
+	if use android_aep; then
+		einfo "Using android aep."
+		insinto "${ARC_PREFIX}/vendor/etc/permissions"
+		doins "${FILESDIR}/android.hardware.opengles.aep.xml"
+	fi
+	# Install the dri header for arc-cros-gralloc
+	insinto "${ARC_PREFIX}/vendor/include/GL"
+	doins -r "${S}/include/GL/internal"
+}
diff --git a/media-libs/arc-mesa-iris/arc-mesa-iris-9999.ebuild b/media-libs/arc-mesa-iris/arc-mesa-iris-9999.ebuild
index 2287762..e60f257 100644
--- a/media-libs/arc-mesa-iris/arc-mesa-iris-9999.ebuild
+++ b/media-libs/arc-mesa-iris/arc-mesa-iris-9999.ebuild
@@ -6,6 +6,7 @@
 
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
 CROS_WORKON_LOCALNAME="mesa-iris"
+CROS_WORKON_EGIT_BRANCH="chromeos-iris"
 
 inherit base meson multilib-minimal flag-o-matic cros-workon arc-build
 
diff --git a/media-libs/arc-mesa-virgl/OWNERS b/media-libs/arc-mesa-virgl/OWNERS
new file mode 100644
index 0000000..0ed602b
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/OWNERS
@@ -0,0 +1 @@
+lepton@chromium.org
diff --git a/media-libs/arc-mesa-virgl/arc-mesa-virgl-20.0.7-r15.ebuild b/media-libs/arc-mesa-virgl/arc-mesa-virgl-20.0.7-r15.ebuild
deleted file mode 120000
index d77320b..0000000
--- a/media-libs/arc-mesa-virgl/arc-mesa-virgl-20.0.7-r15.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-arc-mesa-virgl-20.ebuild
\ No newline at end of file
diff --git a/media-libs/arc-mesa-virgl/arc-mesa-virgl-20.ebuild b/media-libs/arc-mesa-virgl/arc-mesa-virgl-20.ebuild
deleted file mode 100644
index fbf184c..0000000
--- a/media-libs/arc-mesa-virgl/arc-mesa-virgl-20.ebuild
+++ /dev/null
@@ -1,523 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.9.ebuild,v 1.3 2010/12/05 17:19:14 arfrever Exp $
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="e925e97746afa471b86e4f9608498f15fe9b2956"
-CROS_WORKON_TREE="cde5431fb6fb5b6843049a5df677de47050df448"
-CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
-CROS_WORKON_LOCALNAME="arc-mesa-virgl"
-CROS_WORKON_MANUAL_UPREV="1"
-
-EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
-
-MESON_AUTO_DEPEND=no
-
-inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
-
-OPENGL_DIR="xorg-x11"
-
-DESCRIPTION="OpenGL-like graphic library for Linux"
-HOMEPAGE="http://mesa3d.sourceforge.net/"
-
-# Most of the code is MIT/X11.
-# ralloc is LGPL-3
-# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
-LICENSE="MIT LGPL-3 SGI-B-2.0"
-SLOT="0"
-KEYWORDS="*"
-
-INTEL_CARDS="intel"
-RADEON_CARDS="amdgpu radeon"
-VIDEO_CARDS="${INTEL_CARDS} ${RADEON_CARDS} llvmpipe mach64 mga nouveau powervr r128 savage sis vmware tdfx via freedreno virgl"
-for card in ${VIDEO_CARDS}; do
-	IUSE_VIDEO_CARDS+=" video_cards_${card}"
-done
-
-# TODO(b/160748345): Remove hardcoded ARC_PLATFORM_SDK_VERSION when fixed.
-ARC_PLATFORM_SDK_VERSION=28
-
-IUSE="${IUSE_VIDEO_CARDS}
-	android_aep -android_gles2 -android_gles30
-	+android_gles31 -android_gles32	-android_vulkan_compute_0
-	+cheets classic debug dri +egl +gallium
-	-gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx
-	cheets_user cheets_user_64"
-
-# llvmpipe requires ARC++ _userdebug images, ARC++ _user images can't use it
-# (b/33072485, b/28802929).
-# Only allow one vulkan driver as they all write vulkan.cheets.so.
-REQUIRED_USE="
-	^^ ( android_gles2 android_gles30 android_gles31 android_gles32 )
-	android_aep? ( !android_gles2 !android_gles30 )
-	android_vulkan_compute_0? ( vulkan )
-	cheets? (
-		vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) )
-		video_cards_amdgpu? ( llvm )
-		video_cards_llvmpipe? ( !cheets_user !cheets_user_64 )
-	)"
-
-DEPEND="cheets? (
-		>=x11-libs/arc-libdrm-2.4.82[${MULTILIB_USEDEP}]
-		llvm? ( sys-devel/arc-llvm:=[${MULTILIB_USEDEP}] )
-		video_cards_amdgpu? (
-			dev-libs/arc-libelf[${MULTILIB_USEDEP}]
-		)
-	)"
-
-RDEPEND="${DEPEND}"
-
-# It is slow without texrels, if someone wants slow
-# mesa without texrels +pic use is worth the shot
-QA_EXECSTACK="usr/lib*/opengl/xorg-x11/lib/libGL.so*"
-QA_WX_LOAD="usr/lib*/opengl/xorg-x11/lib/libGL.so*"
-
-# Think about: ggi, fbcon, no-X configs
-
-driver_list() {
-	local uniq_driver=($(printf "%s\n" "$@" | sort -u))
-	local IFS=,
-	echo "${uniq_driver[*]}"
-}
-
-pkg_setup() {
-	# workaround toc-issue wrt #386545
-	use ppc64 && append-flags -mminimal-toc
-
-	# Remove symlinks created by an earlier version so we don't have
-	# install conflicts.
-	# TODO: Delete this after June 2019, since everybody should have
-	# upgraded by then.
-	local d
-	for d in EGL GL GLES GLES2 GLES3 KHR; do
-		local replaced_link="${ROOT}${ARC_VM_PREFIX}/vendor/include/${d}"
-		if [[ -L "${replaced_link}" ]]; then
-			rm -f "${replaced_link}"
-		fi
-	done
-}
-
-src_prepare() {
-	# workaround for cros-workon not preserving git metadata
-	if [[ ${PV} == 9999* && "${CROS_WORKON_INPLACE}" != "1" ]]; then
-		echo "#define MESA_GIT_SHA1 \"git-deadbeef\"" > src/git_sha1.h
-	fi
-
-	# apply patches
-	if [[ ${PV} != 9999* && -n ${SRC_PATCHES} ]]; then
-		EPATCH_FORCE="yes" \
-		EPATCH_SOURCE="${WORKDIR}/patches" \
-		EPATCH_SUFFIX="patch" \
-		epatch
-	fi
-	# FreeBSD 6.* doesn't have posix_memalign().
-	if [[ ${CHOST} == *-freebsd6.* ]]; then
-		sed -i \
-			-e "s/-DHAVE_POSIX_MEMALIGN//" \
-			configure.ac || die
-	fi
-
-	# Restrict gles version based on USE flag. (See crbug.com/30202361, b/30202371, b/31041422, b:68023287)
-	if use android_gles32; then
-		einfo "Limiting android to gles32."
-		epatch "${FILESDIR}/gles32/0001-limit-gles-version.patch"
-	elif use android_gles31; then
-		einfo "Limiting android to gles31."
-		epatch "${FILESDIR}/gles31/0001-limit-gles-version.patch"
-	elif use android_gles30; then
-		einfo "Limiting android to gles30."
-		epatch "${FILESDIR}/gles30/0001-limit-gles-version.patch"
-	elif use android_gles2; then
-		einfo "Limiting android to gles2."
-		epatch "${FILESDIR}/gles2/0001-limit-gles-version.patch"
-	fi
-
-	epatch "${FILESDIR}"/FROMLIST-glcpp-Hack-to-handle-expressions-in-line-di.patch
-
-	epatch "${FILESDIR}"/UPSTREAM-egl-android-set-window-usage-flags.patch
-
-	epatch "${FILESDIR}"/FROMLIST-egl-android-Increase-preferred-buffer-count-to-4.patch
-
-	epatch "${FILESDIR}"/UPSTREAM-virgl-Use-ETC2-formats-directly-when-possible.patch
-
-	epatch "${FILESDIR}"/BACKPORT-mapi-x86-Fix-dynamic-entries-in-x86-tsd-stubs.patch
-	# It's also fixed at Android master with http://ag/11992933. We can't
-	# merge it to R, so let' work around it at mesa side here.
-	epatch "${FILESDIR}"/UPSTREAM-mapi-Return-NULL-function-pointers-for-GL_EXT_debug_.patch
-
-	epatch "${FILESDIR}"/UPSTREAM-util-add-a-alignof-macro.patch
-	epatch "${FILESDIR}"/UPSTREAM-util-ralloc-fix-ralloc-alignment.patch
-	epatch "${FILESDIR}"/UPSTREAM-st-mesa-Fix-EGLImageTargetTexture2D-for-GL_TEXTURE_2.patch
-
-	epatch "${FILESDIR}"/UPSTREAM-dri_util-Update-internal_format-to-GL_RGB8-for-MESA_.patch
-
-	# merge request 6055
-	epatch "${FILESDIR}"/UPSTREAM-egl-android-Call-createImageFromDmaBufs-directly.patch
-	epatch "${FILESDIR}"/UPSTREAM-egl-android-Look-up-prime-fds-in-droid_create_image_.patch
-	epatch "${FILESDIR}"/UPSTREAM-egl-android-Drop-unused-ctx-argument.patch
-	epatch "${FILESDIR}"/UPSTREAM-egl-android-Simplify-droid_create_image_from_name-pa.patch
-	epatch "${FILESDIR}"/UPSTREAM-egl-android-Move-droid_create_image_from_prime_fds-f.patch
-	epatch "${FILESDIR}"/UPSTREAM-egl-android-Use-droid_create_image_from_prime_fds-in.patch
-	epatch "${FILESDIR}"/UPSTREAM-egl-android-Add-support-for-CrOS-buffer-info-perform.patch
-
-	# merge request 7805
-	epatch "${FILESDIR}"/UPSTREAM-egl-android-don-t-pass-loaderPriv-in-get_front_bo.patch
-	epatch "${FILESDIR}"/UPSTREAM-dri-add-image-cleanup-callback-to-loader-extensions.patch
-	epatch "${FILESDIR}"/BACKPORT-frontend-dri-plumb-loader-image-cleanup-callback.patch
-	epatch "${FILESDIR}"/BACKPORT-egl-android-implement-image-cleanup-callback.patch
-
-	# merge request 8211
-	epatch "${FILESDIR}"/UPSTREAM-egl-dri2-fix-image-loaderPrivate-type-mixup.patch
-
-	default
-}
-
-src_configure() {
-	cros_optimize_package_for_speed
-
-	if use cheets; then
-		#
-		# cheets-specific overrides
-		#
-
-		arc-build-select-clang
-	fi
-
-	multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-	tc-getPROG PKG_CONFIG pkg-config
-
-	if use !gallium && use !classic; then
-		ewarn "You enabled neither classic nor gallium USE flags. No hardware"
-		ewarn "drivers will be built."
-	fi
-
-	if use classic; then
-	# Configurable DRI drivers
-		# Intel code
-		driver_enable video_cards_intel i965
-
-		# Nouveau code
-		driver_enable video_cards_nouveau nouveau
-
-		# ATI code
-		driver_enable video_cards_radeon r100 r200
-	fi
-
-	if use gallium; then
-	# Configurable gallium drivers
-		gallium_enable video_cards_llvmpipe swrast
-
-		# Nouveau code
-		gallium_enable video_cards_nouveau nouveau
-
-		# ATI code
-		gallium_enable video_cards_radeon r300 r600
-		gallium_enable video_cards_amdgpu radeonsi
-
-		# Freedreno code
-		gallium_enable video_cards_freedreno freedreno
-
-		gallium_enable video_cards_virgl virgl
-	fi
-
-	if use vulkan; then
-		vulkan_enable video_cards_amdgpu amd
-		vulkan_enable video_cards_intel intel
-	fi
-
-	export LLVM_CONFIG=${SYSROOT}/usr/bin/llvm-config-host
-	EGL_PLATFORM="surfaceless"
-
-	if use cheets; then
-		#
-		# cheets-specific overrides
-		#
-
-		MESA_PLATFORM_SDK_VERSION=${ARC_PLATFORM_SDK_VERSION}
-
-		# Use llvm-config coming from ARC++ build.
-		export LLVM_CONFIG="${ARC_SYSROOT}/build/bin/llvm-config-host"
-
-		# FIXME(tfiga): Possibly use flag?
-		EGL_PLATFORM="android"
-
-		# The AOSP build system defines the Make variable
-		# PLATFORM_SDK_VERSION, and Mesa's Android.mk files use it to
-		# define the macro ANDROID_API_LEVEL. Arc emulates that here.
-		if [[ -n "${ARC_PLATFORM_SDK_VERSION}" ]]; then
-			CPPFLAGS+=" -DANDROID_API_LEVEL=${ARC_PLATFORM_SDK_VERSION}"
-		fi
-
-		#
-		# end of arc-mesa specific overrides
-		#
-	fi
-
-	if ! use llvm; then
-		export LLVM_CONFIG="no"
-	fi
-
-	arc-build-create-cross-file
-
-	emesonargs+=(
-		$(use cheets && echo "--prefix=${ARC_VM_PREFIX}/vendor")
-		$(use cheets && echo "--sysconfdir=/system/vendor/etc")
-		$(use cheets && echo "-Ddri-search-path=/system/$(get_libdir)/dri:/system/vendor/$(get_libdir)/dri")
-		-Dgallium-va=false
-		-Dgallium-vdpau=false
-		-Dgallium-xvmc=false
-		-Dgallium-omx=disabled
-		-Dglx=disabled
-		-Ddri3=false
-		-Dgles-lib-suffix=_mesa
-		-Degl-lib-suffix=_mesa
-		$(meson_use llvm)
-		$(use egl && echo "-Dplatforms=${EGL_PLATFORM}")
-		$(meson_use egl)
-		$(meson_use gbm)
-		$(meson_use gles1)
-		$(meson_use gles2)
-		$(meson_use selinux)
-		$(meson_use shared-glapi)
-		-Ddri-drivers=$(driver_list "${DRI_DRIVERS[@]}")
-		-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[@]}")
-		-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[@]}")
-		--buildtype $(usex debug debug release)
-		$(use cheets && echo "--cross-file=${ARC_CROSS_FILE}")
-		$(use cheets && echo "-Dplatform-sdk-version=${ARC_PLATFORM_SDK_VERSION}")
-	)
-
-	meson_src_configure
-}
-
-# The meson eclass exports src_compile but not multilib_src_compile. src_compile
-# gets overridden by multilib-minimal
-multilib_src_compile() {
-	meson_src_compile
-}
-
-multilib_src_install_cheets() {
-	exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)"
-	newexe ${BUILD_DIR}/src/mapi/shared-glapi/libglapi.so.0 libglapi.so.0
-
-	exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)/egl"
-	newexe ${BUILD_DIR}/src/egl/libEGL_mesa.so libEGL_mesa.so
-	newexe ${BUILD_DIR}/src/mapi/es1api/libGLESv1_CM_mesa.so libGLESv1_CM_mesa.so
-	newexe ${BUILD_DIR}/src/mapi/es2api/libGLESv2_mesa.so libGLESv2_mesa.so
-
-	exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)/dri"
-	if use classic && use video_cards_intel; then
-		newexe ${BUILD_DIR}/src/mesa/drivers/dri/libmesa_dri_drivers.so i965_dri.so
-	fi
-	if use gallium; then
-		if use video_cards_llvmpipe; then
-			newexe ${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so kms_swrast_dri.so
-		fi
-		if use video_cards_amdgpu; then
-			newexe ${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so radeonsi_dri.so
-		fi
-		if use video_cards_virgl; then
-			newexe ${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so virtio_gpu_dri.so
-		fi
-	fi
-
-	if use vulkan; then
-		exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)/hw"
-		if use video_cards_amdgpu; then
-			newexe ${BUILD_DIR}/src/amd/vulkan/libvulkan_radeon.so vulkan.cheets.so
-		fi
-		if use video_cards_intel; then
-			newexe ${BUILD_DIR}/src/intel/vulkan/libvulkan_intel.so vulkan.cheets.so
-		fi
-	fi
-}
-
-multilib_src_install() {
-	if use cheets; then
-		multilib_src_install_cheets
-		return
-	fi
-
-	meson_src_install
-
-	# Remove redundant headers
-	# GLU and GLUT
-	rm -f "${D}"/usr/include/GL/glu*.h || die "Removing GLU and GLUT headers failed."
-	# Glew includes
-	rm -f "${D}"/usr/include/GL/{glew,glxew,wglew}.h \
-		|| die "Removing glew includes failed."
-
-	# Move libGL and others from /usr/lib to /usr/lib/opengl/blah/lib
-	# because user can eselect desired GL provider.
-	ebegin "Moving libGL and friends for dynamic switching"
-		dodir /usr/$(get_libdir)/opengl/${OPENGL_DIR}/{lib,extensions,include}
-		local x
-		for x in "${D}"/usr/$(get_libdir)/libGL.{la,a,so*}; do
-			if [ -f ${x} -o -L ${x} ]; then
-				mv -f "${x}" "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/lib \
-					|| die "Failed to move ${x}"
-			fi
-		done
-		for x in "${D}"/usr/include/GL/{gl.h,glx.h,glext.h,glxext.h}; do
-			if [ -f ${x} -o -L ${x} ]; then
-				mv -f "${x}" "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/include \
-					|| die "Failed to move ${x}"
-			fi
-		done
-	eend $?
-
-	dodir /usr/$(get_libdir)/dri
-	insinto "/usr/$(get_libdir)/dri/"
-	insopts -m0755
-	# install the gallium drivers we use
-	local gallium_drivers_files=( i915_dri.so nouveau_dri.so r300_dri.so r600_dri.so msm_dri.so swrast_dri.so )
-	for x in ${gallium_drivers_files[@]}; do
-		if [ -f "${S}/$(get_libdir)/gallium/${x}" ]; then
-			doins "${S}/$(get_libdir)/gallium/${x}"
-		fi
-	done
-
-	# install classic drivers we use
-	local classic_drivers_files=( i810_dri.so i965_dri.so nouveau_vieux_dri.so radeon_dri.so r200_dri.so )
-	for x in ${classic_drivers_files[@]}; do
-		if [ -f "${S}/$(get_libdir)/${x}" ]; then
-			doins "${S}/$(get_libdir)/${x}"
-		fi
-	done
-}
-
-multilib_src_install_all_cheets() {
-	# Set driconf option to enable S3TC hardware decompression
-	insinto "${ARC_VM_PREFIX}/vendor/etc/"
-	doins "${FILESDIR}"/drirc
-
-	# For documentation on the feature set represented by each XML file
-	# installed into /vendor/etc/permissions, see
-	# <https://developer.android.com/reference/android/content/pm/PackageManager.html>.
-	# For example XML files for each feature, see
-	# <https://android.googlesource.com/platform/frameworks/native/+/master/data/etc>.
-
-	# Install init files to advertise supported API versions.
-	insinto "${ARC_VM_PREFIX}/vendor/etc/init"
-
-	if use android_gles32; then
-		doins "${FILESDIR}/gles32/init.gpu.rc"
-	elif use android_gles31; then
-		doins "${FILESDIR}/gles31/init.gpu.rc"
-	elif use android_gles30; then
-		doins "${FILESDIR}/gles30/init.gpu.rc"
-	elif use android_gles2; then
-		doins "${FILESDIR}/gles2/init.gpu.rc"
-	fi
-
-	# Install vulkan related files.
-	# TODO(b/164152220): Enable vulkan for virtio gpu.
-	if use vulkan; then
-		einfo "Using android vulkan."
-		insinto "${ARC_VM_PREFIX}/vendor/etc/init"
-		doins "${FILESDIR}/vulkan.rc"
-
-		insinto "${ARC_VM_PREFIX}/vendor/etc/permissions"
-
-		if use video_cards_intel; then
-			doins "${FILESDIR}/android.hardware.vulkan.level-1.xml"
-		else
-			doins "${FILESDIR}/android.hardware.vulkan.level-0.xml"
-		fi
-
-		if use video_cards_intel; then
-			doins "${FILESDIR}/android.hardware.vulkan.version-1_1.xml"
-		else
-			doins "${FILESDIR}/android.hardware.vulkan.version-1_0_3.xml"
-		fi
-	fi
-
-	if use android_vulkan_compute_0; then
-		einfo "Using android vulkan_compute_0."
-		insinto "${ARC_VM_PREFIX}/vendor/etc/permissions"
-		doins "${FILESDIR}/android.hardware.vulkan.compute-0.xml"
-	fi
-
-	# Install permission file to declare opengles aep support.
-	if use android_aep; then
-		einfo "Using android aep."
-		insinto "${ARC_VM_PREFIX}/vendor/etc/permissions"
-		doins "${FILESDIR}/android.hardware.opengles.aep.xml"
-	fi
-
-	# Install the dri header for arc-cros-gralloc
-	insinto "${ARC_VM_PREFIX}/vendor/include/GL"
-	doins -r "${S}/include/GL/internal"
-}
-
-multilib_src_install_all() {
-	if use cheets; then
-		multilib_src_install_all_cheets
-		return
-	fi
-
-	# Set driconf option to enable S3TC hardware decompression
-	insinto "/etc/"
-	doins "${FILESDIR}"/drirc
-}
-
-pkg_postinst() {
-	if use cheets; then
-		return
-	fi
-
-	# Switch to the xorg implementation.
-	echo
-	eselect opengl set --use-old ${OPENGL_DIR}
-}
-
-# $1 - VIDEO_CARDS flag
-# other args - names of DRI drivers to enable
-driver_enable() {
-	case $# in
-		# for enabling unconditionally
-		1)
-			DRI_DRIVERS+=("$1")
-			;;
-		*)
-			if use $1; then
-				shift
-				DRI_DRIVERS+=("$@")
-			fi
-			;;
-	esac
-}
-
-gallium_enable() {
-	case $# in
-		# for enabling unconditionally
-		1)
-			GALLIUM_DRIVERS+=("$1")
-			;;
-		*)
-			if use $1; then
-				shift
-				GALLIUM_DRIVERS+=("$@")
-			fi
-			;;
-	esac
-}
-
-vulkan_enable() {
-	case $# in
-		# for enabling unconditionally
-		1)
-			VULKAN_DRIVERS+=("$1")
-			;;
-		*)
-			if use $1; then
-				shift
-				VULKAN_DRIVERS+=("$@")
-			fi
-			;;
-	esac
-}
diff --git a/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.0.2-r3.ebuild b/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.0.2-r3.ebuild
new file mode 120000
index 0000000..33615d7
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.0.2-r3.ebuild
@@ -0,0 +1 @@
+arc-mesa-virgl-21.ebuild
\ No newline at end of file
diff --git a/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.1-r3.ebuild b/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.1-r3.ebuild
new file mode 120000
index 0000000..8ff2cdd
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.1-r3.ebuild
@@ -0,0 +1 @@
+arc-mesa-virgl-21.1.ebuild
\ No newline at end of file
diff --git a/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.1.ebuild b/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.1.ebuild
new file mode 100644
index 0000000..15fe57d
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.1.ebuild
@@ -0,0 +1,501 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.9.ebuild,v 1.3 2010/12/05 17:19:14 arfrever Exp $
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="47eabd0e6b926535a68a7173eba2ceeb4ed9747e"
+CROS_WORKON_TREE="d663408cd6538b6fee669db87ea77f6a38a37177"
+CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_LOCALNAME="arc-mesa-virgl"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_MANUAL_UPREV="1"
+
+EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
+
+MESON_AUTO_DEPEND=no
+
+inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
+
+OPENGL_DIR="xorg-x11"
+
+DESCRIPTION="OpenGL-like graphic library for Linux"
+HOMEPAGE="http://mesa3d.sourceforge.net/"
+
+# Most of the code is MIT/X11.
+# ralloc is LGPL-3
+# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
+LICENSE="MIT LGPL-3 SGI-B-2.0"
+SLOT="0"
+KEYWORDS="~*"
+
+INTEL_CARDS="intel"
+RADEON_CARDS="amdgpu radeon"
+VIDEO_CARDS="${INTEL_CARDS} ${RADEON_CARDS} llvmpipe mach64 mga nouveau powervr r128 savage sis vmware tdfx via freedreno virgl"
+for card in ${VIDEO_CARDS}; do
+	IUSE_VIDEO_CARDS+=" video_cards_${card}"
+done
+
+# TODO(b/160748345): Remove hardcoded ARC_PLATFORM_SDK_VERSION when fixed.
+ARC_PLATFORM_SDK_VERSION=28
+
+IUSE="${IUSE_VIDEO_CARDS}
+	android_aep -android_gles2 -android_gles30
+	+android_gles31 -android_gles32	-android_vulkan_compute_0
+	+cheets classic debug dri +egl +gallium
+	-gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx
+	cheets_user cheets_user_64"
+
+# llvmpipe requires ARC++ _userdebug images, ARC++ _user images can't use it
+# (b/33072485, b/28802929).
+# Only allow one vulkan driver as they all write vulkan.cheets.so.
+REQUIRED_USE="
+	^^ ( android_gles2 android_gles30 android_gles31 android_gles32 )
+	android_aep? ( !android_gles2 !android_gles30 )
+	android_vulkan_compute_0? ( vulkan )
+	cheets? (
+		vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_virgl ) )
+		video_cards_amdgpu? ( llvm )
+		video_cards_llvmpipe? ( !cheets_user !cheets_user_64 )
+	)"
+
+DEPEND="cheets? (
+		>=x11-libs/arc-libdrm-2.4.82[${MULTILIB_USEDEP}]
+		llvm? ( sys-devel/arc-llvm:=[${MULTILIB_USEDEP}] )
+		video_cards_amdgpu? (
+			dev-libs/arc-libelf[${MULTILIB_USEDEP}]
+		)
+	)"
+
+RDEPEND="${DEPEND}"
+
+# It is slow without texrels, if someone wants slow
+# mesa without texrels +pic use is worth the shot
+QA_EXECSTACK="usr/lib*/opengl/xorg-x11/lib/libGL.so*"
+QA_WX_LOAD="usr/lib*/opengl/xorg-x11/lib/libGL.so*"
+
+# Think about: ggi, fbcon, no-X configs
+
+driver_list() {
+	local uniq_driver=($(printf "%s\n" "$@" | sort -u))
+	local IFS=,
+	echo "${uniq_driver[*]}"
+}
+
+pkg_setup() {
+	# workaround toc-issue wrt #386545
+	use ppc64 && append-flags -mminimal-toc
+
+	# Remove symlinks created by an earlier version so we don't have
+	# install conflicts.
+	# TODO: Delete this after June 2019, since everybody should have
+	# upgraded by then.
+	local d
+	for d in EGL GL GLES GLES2 GLES3 KHR; do
+		local replaced_link="${ROOT}${ARC_VM_PREFIX}/vendor/include/${d}"
+		if [[ -L "${replaced_link}" ]]; then
+			rm -f "${replaced_link}"
+		fi
+	done
+}
+
+src_prepare() {
+	# workaround for cros-workon not preserving git metadata
+	if [[ ${PV} == 9999* && "${CROS_WORKON_INPLACE}" != "1" ]]; then
+		echo "#define MESA_GIT_SHA1 \"git-deadbeef\"" > src/git_sha1.h
+	fi
+
+	# apply patches
+	if [[ ${PV} != 9999* && -n ${SRC_PATCHES} ]]; then
+		EPATCH_FORCE="yes" \
+		EPATCH_SOURCE="${WORKDIR}/patches" \
+		EPATCH_SUFFIX="patch" \
+		epatch
+	fi
+	# FreeBSD 6.* doesn't have posix_memalign().
+	if [[ ${CHOST} == *-freebsd6.* ]]; then
+		sed -i \
+			-e "s/-DHAVE_POSIX_MEMALIGN//" \
+			configure.ac || die
+	fi
+
+	# Restrict gles version based on USE flag. (See crbug.com/30202361, b/30202371, b/31041422, b:68023287)
+	if use android_gles32; then
+		einfo "Limiting android to gles32."
+		epatch "${FILESDIR}/gles32/0001-limit-gles-version.patch"
+	elif use android_gles31; then
+		einfo "Limiting android to gles31."
+		epatch "${FILESDIR}/gles31/0001-limit-gles-version.patch"
+	elif use android_gles30; then
+		einfo "Limiting android to gles30."
+		epatch "${FILESDIR}/gles30/0001-limit-gles-version.patch"
+	elif use android_gles2; then
+		einfo "Limiting android to gles2."
+		epatch "${FILESDIR}/gles2/0001-limit-gles-version.patch"
+	fi
+
+	epatch "${FILESDIR}"/FROMLIST-glcpp-Hack-to-handle-expressions-in-line-di.patch
+
+	epatch "${FILESDIR}"/FROMLIST-egl-android-Increase-preferred-buffer-count-to-4.patch
+
+	epatch "${FILESDIR}"/CHROMIUM-hack-Override-GL_RENDERER-for-kindle-app.patch
+
+	# This is actually a reland of a reverted patch.
+	# See https://gitlab.freedesktop.org/virgl/virglrenderer/-/issues/216
+	epatch "${FILESDIR}"/UPSTREAM-virgl-fix-BGRA-emulation-artifacts-during-window-res.patch
+
+	epatch "${FILESDIR}"/UPSTREAM-Revert-virgl-Cache-depth-and-stencil-buffers.patch
+
+	default
+}
+
+src_configure() {
+	cros_optimize_package_for_speed
+
+	if use cheets; then
+		#
+		# cheets-specific overrides
+		#
+
+		arc-build-select-clang
+	fi
+
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	tc-getPROG PKG_CONFIG pkg-config
+
+	if use !gallium && use !classic && use !vulkan; then
+		ewarn "You enabled neither classic, gallium, nor vulkan "
+		ewarn "USE flags. No hardware drivers will be built."
+	fi
+
+	if use classic; then
+	# Configurable DRI drivers
+		# Intel code
+		driver_enable video_cards_intel i965
+
+		# Nouveau code
+		driver_enable video_cards_nouveau nouveau
+
+		# ATI code
+		driver_enable video_cards_radeon r100 r200
+	fi
+
+	if use gallium; then
+	# Configurable gallium drivers
+		gallium_enable video_cards_llvmpipe swrast
+
+		# Nouveau code
+		gallium_enable video_cards_nouveau nouveau
+
+		# ATI code
+		gallium_enable video_cards_radeon r300 r600
+		gallium_enable video_cards_amdgpu radeonsi
+
+		# Freedreno code
+		gallium_enable video_cards_freedreno freedreno
+
+		gallium_enable video_cards_virgl virgl
+	fi
+
+	if use vulkan; then
+		vulkan_enable video_cards_amdgpu amd
+		vulkan_enable video_cards_intel intel
+		vulkan_enable video_cards_virgl virtio-experimental
+	fi
+
+	export LLVM_CONFIG=${SYSROOT}/usr/bin/llvm-config-host
+	EGL_PLATFORM="surfaceless"
+
+	if use cheets; then
+		#
+		# cheets-specific overrides
+		#
+
+		MESA_PLATFORM_SDK_VERSION=${ARC_PLATFORM_SDK_VERSION}
+
+		# Use llvm-config coming from ARC++ build.
+		export LLVM_CONFIG="${ARC_SYSROOT}/build/bin/llvm-config-host"
+
+		# FIXME(tfiga): Possibly use flag?
+		EGL_PLATFORM="android"
+
+		# The AOSP build system defines the Make variable
+		# PLATFORM_SDK_VERSION, and Mesa's Android.mk files use it to
+		# define the macro ANDROID_API_LEVEL. Arc emulates that here.
+		if [[ -n "${ARC_PLATFORM_SDK_VERSION}" ]]; then
+			CPPFLAGS+=" -DANDROID_API_LEVEL=${ARC_PLATFORM_SDK_VERSION}"
+		fi
+
+		#
+		# end of arc-mesa specific overrides
+		#
+	fi
+
+	if ! use llvm; then
+		export LLVM_CONFIG="no"
+	fi
+
+	arc-build-create-cross-file
+
+	emesonargs+=(
+		$(use cheets && echo "--prefix=${ARC_VM_PREFIX}/vendor")
+		$(use cheets && echo "--sysconfdir=/system/vendor/etc")
+		$(use cheets && echo "-Ddri-search-path=/system/$(get_libdir)/dri:/system/vendor/$(get_libdir)/dri")
+		-Dgallium-va=false
+		-Dgallium-vdpau=false
+		-Dgallium-xvmc=false
+		-Dgallium-omx=disabled
+		-Dglx=disabled
+		-Ddri3=false
+		-Dgles-lib-suffix=_mesa
+		-Degl-lib-suffix=_mesa
+		$(meson_use llvm)
+		$(use egl && echo "-Dplatforms=${EGL_PLATFORM}")
+		$(meson_use egl)
+		$(meson_use gbm)
+		$(meson_use gles1)
+		$(meson_use gles2)
+		$(meson_use selinux)
+		$(meson_use shared-glapi)
+		-Ddri-drivers=$(driver_list "${DRI_DRIVERS[@]}")
+		-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[@]}")
+		-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[@]}")
+		--buildtype $(usex debug debug release)
+		$(use cheets && echo "--cross-file=${ARC_CROSS_FILE}")
+		$(use cheets && echo "-Dplatform-sdk-version=${ARC_PLATFORM_SDK_VERSION}")
+	)
+
+	meson_src_configure
+}
+
+# The meson eclass exports src_compile but not multilib_src_compile. src_compile
+# gets overridden by multilib-minimal
+multilib_src_compile() {
+	meson_src_compile
+}
+
+multilib_src_install_cheets() {
+	exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)"
+	newexe ${BUILD_DIR}/src/mapi/shared-glapi/libglapi.so.0 libglapi.so.0
+
+	exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)/egl"
+	newexe ${BUILD_DIR}/src/egl/libEGL_mesa.so libEGL_mesa.so
+	newexe ${BUILD_DIR}/src/mapi/es1api/libGLESv1_CM_mesa.so libGLESv1_CM_mesa.so
+	newexe ${BUILD_DIR}/src/mapi/es2api/libGLESv2_mesa.so libGLESv2_mesa.so
+
+	exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)/dri"
+	if use classic && use video_cards_intel; then
+		newexe ${BUILD_DIR}/src/mesa/drivers/dri/libmesa_dri_drivers.so i965_dri.so
+	fi
+	if use gallium; then
+		if use video_cards_llvmpipe; then
+			newexe ${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so kms_swrast_dri.so
+		fi
+		if use video_cards_amdgpu; then
+			newexe ${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so radeonsi_dri.so
+		fi
+		if use video_cards_virgl; then
+			newexe ${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so virtio_gpu_dri.so
+		fi
+	fi
+
+	if use vulkan; then
+		exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)/hw"
+		if use video_cards_amdgpu; then
+			newexe ${BUILD_DIR}/src/amd/vulkan/libvulkan_radeon.so vulkan.cheets.so
+		fi
+		if use video_cards_intel; then
+			newexe ${BUILD_DIR}/src/intel/vulkan/libvulkan_intel.so vulkan.cheets.so
+		fi
+		if use video_cards_virgl; then
+			newexe "${BUILD_DIR}"/src/virtio/vulkan/libvulkan_virtio.so vulkan.cheets.so
+		fi
+	fi
+}
+
+multilib_src_install() {
+	if use cheets; then
+		multilib_src_install_cheets
+		return
+	fi
+
+	meson_src_install
+
+	# Remove redundant headers
+	# GLU and GLUT
+	rm -f "${D}"/usr/include/GL/glu*.h || die "Removing GLU and GLUT headers failed."
+	# Glew includes
+	rm -f "${D}"/usr/include/GL/{glew,glxew,wglew}.h \
+		|| die "Removing glew includes failed."
+
+	# Move libGL and others from /usr/lib to /usr/lib/opengl/blah/lib
+	# because user can eselect desired GL provider.
+	ebegin "Moving libGL and friends for dynamic switching"
+		dodir /usr/$(get_libdir)/opengl/${OPENGL_DIR}/{lib,extensions,include}
+		local x
+		for x in "${D}"/usr/$(get_libdir)/libGL.{la,a,so*}; do
+			if [ -f ${x} -o -L ${x} ]; then
+				mv -f "${x}" "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/lib \
+					|| die "Failed to move ${x}"
+			fi
+		done
+		for x in "${D}"/usr/include/GL/{gl.h,glx.h,glext.h,glxext.h}; do
+			if [ -f ${x} -o -L ${x} ]; then
+				mv -f "${x}" "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/include \
+					|| die "Failed to move ${x}"
+			fi
+		done
+	eend $?
+
+	dodir /usr/$(get_libdir)/dri
+	insinto "/usr/$(get_libdir)/dri/"
+	insopts -m0755
+	# install the gallium drivers we use
+	local gallium_drivers_files=( i915_dri.so nouveau_dri.so r300_dri.so r600_dri.so msm_dri.so swrast_dri.so )
+	for x in ${gallium_drivers_files[@]}; do
+		if [ -f "${S}/$(get_libdir)/gallium/${x}" ]; then
+			doins "${S}/$(get_libdir)/gallium/${x}"
+		fi
+	done
+
+	# install classic drivers we use
+	local classic_drivers_files=( i810_dri.so i965_dri.so nouveau_vieux_dri.so radeon_dri.so r200_dri.so )
+	for x in ${classic_drivers_files[@]}; do
+		if [ -f "${S}/$(get_libdir)/${x}" ]; then
+			doins "${S}/$(get_libdir)/${x}"
+		fi
+	done
+}
+
+multilib_src_install_all_cheets() {
+	# Set driconf option to enable S3TC hardware decompression
+	insinto "${ARC_VM_PREFIX}/vendor/etc/"
+	doins "${FILESDIR}"/drirc
+
+	# For documentation on the feature set represented by each XML file
+	# installed into /vendor/etc/permissions, see
+	# <https://developer.android.com/reference/android/content/pm/PackageManager.html>.
+	# For example XML files for each feature, see
+	# <https://android.googlesource.com/platform/frameworks/native/+/master/data/etc>.
+
+	# Install init files to advertise supported API versions.
+	insinto "${ARC_VM_PREFIX}/vendor/etc/init"
+
+	if use android_gles32; then
+		doins "${FILESDIR}/gles32/init.gpu.rc"
+	elif use android_gles31; then
+		doins "${FILESDIR}/gles31/init.gpu.rc"
+	elif use android_gles30; then
+		doins "${FILESDIR}/gles30/init.gpu.rc"
+	elif use android_gles2; then
+		doins "${FILESDIR}/gles2/init.gpu.rc"
+	fi
+
+	# Install vulkan related files.
+	# TODO(b/164152220): Enable vulkan for virtio gpu.
+	if use vulkan; then
+		einfo "Using android vulkan."
+		insinto "${ARC_VM_PREFIX}/vendor/etc/init"
+		doins "${FILESDIR}/vulkan.rc"
+
+		insinto "${ARC_VM_PREFIX}/vendor/etc/permissions"
+		if use video_cards_virgl; then
+			doins "${FILESDIR}/android.hardware.vulkan.version-1_1.xml"
+		else
+			doins "${FILESDIR}/android.hardware.vulkan.version-1_0_3.xml"
+		fi
+		if use video_cards_intel || use video_cards_virgl; then
+			doins "${FILESDIR}/android.hardware.vulkan.level-1.xml"
+		else
+			doins "${FILESDIR}/android.hardware.vulkan.level-0.xml"
+		fi
+	fi
+
+	if use android_vulkan_compute_0; then
+		einfo "Using android vulkan_compute_0."
+		insinto "${ARC_VM_PREFIX}/vendor/etc/permissions"
+		doins "${FILESDIR}/android.hardware.vulkan.compute-0.xml"
+	fi
+
+	# Install permission file to declare opengles aep support.
+	if use android_aep; then
+		einfo "Using android aep."
+		insinto "${ARC_VM_PREFIX}/vendor/etc/permissions"
+		doins "${FILESDIR}/android.hardware.opengles.aep.xml"
+	fi
+
+	# Install the dri header for arc-cros-gralloc
+	insinto "${ARC_VM_PREFIX}/vendor/include/GL"
+	doins -r "${S}/include/GL/internal"
+}
+
+multilib_src_install_all() {
+	if use cheets; then
+		multilib_src_install_all_cheets
+		return
+	fi
+
+	# Set driconf option to enable S3TC hardware decompression
+	insinto "/etc/"
+	doins "${FILESDIR}"/drirc
+}
+
+pkg_postinst() {
+	if use cheets; then
+		return
+	fi
+
+	# Switch to the xorg implementation.
+	echo
+	eselect opengl set --use-old ${OPENGL_DIR}
+}
+
+# $1 - VIDEO_CARDS flag
+# other args - names of DRI drivers to enable
+driver_enable() {
+	case $# in
+		# for enabling unconditionally
+		1)
+			DRI_DRIVERS+=("$1")
+			;;
+		*)
+			if use $1; then
+				shift
+				DRI_DRIVERS+=("$@")
+			fi
+			;;
+	esac
+}
+
+gallium_enable() {
+	case $# in
+		# for enabling unconditionally
+		1)
+			GALLIUM_DRIVERS+=("$1")
+			;;
+		*)
+			if use $1; then
+				shift
+				GALLIUM_DRIVERS+=("$@")
+			fi
+			;;
+	esac
+}
+
+vulkan_enable() {
+	case $# in
+		# for enabling unconditionally
+		1)
+			VULKAN_DRIVERS+=("$1")
+			;;
+		*)
+			if use $1; then
+				shift
+				VULKAN_DRIVERS+=("$@")
+			fi
+			;;
+	esac
+}
diff --git a/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.ebuild b/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.ebuild
new file mode 100644
index 0000000..439578d
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/arc-mesa-virgl-21.ebuild
@@ -0,0 +1,510 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.9.ebuild,v 1.3 2010/12/05 17:19:14 arfrever Exp $
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="8ec046344b57f7041952f018f14ef626de94fe5d"
+CROS_WORKON_TREE="88bd3b1a95f9324ca0ef06e7bf3a025ce1de8f80"
+CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_LOCALNAME="arc-mesa-virgl"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_MANUAL_UPREV="1"
+
+EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
+
+MESON_AUTO_DEPEND=no
+
+inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
+
+OPENGL_DIR="xorg-x11"
+
+DESCRIPTION="OpenGL-like graphic library for Linux"
+HOMEPAGE="http://mesa3d.sourceforge.net/"
+
+# Most of the code is MIT/X11.
+# ralloc is LGPL-3
+# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
+LICENSE="MIT LGPL-3 SGI-B-2.0"
+SLOT="0"
+KEYWORDS="*"
+
+INTEL_CARDS="intel"
+RADEON_CARDS="amdgpu radeon"
+VIDEO_CARDS="${INTEL_CARDS} ${RADEON_CARDS} llvmpipe mach64 mga nouveau powervr r128 savage sis vmware tdfx via freedreno virgl"
+for card in ${VIDEO_CARDS}; do
+	IUSE_VIDEO_CARDS+=" video_cards_${card}"
+done
+
+# TODO(b/160748345): Remove hardcoded ARC_PLATFORM_SDK_VERSION when fixed.
+ARC_PLATFORM_SDK_VERSION=28
+
+IUSE="${IUSE_VIDEO_CARDS}
+	android_aep -android_gles2 -android_gles30
+	+android_gles31 -android_gles32	-android_vulkan_compute_0
+	+cheets classic debug dri +egl +gallium
+	-gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx
+	cheets_user cheets_user_64"
+
+# llvmpipe requires ARC++ _userdebug images, ARC++ _user images can't use it
+# (b/33072485, b/28802929).
+# Only allow one vulkan driver as they all write vulkan.cheets.so.
+REQUIRED_USE="
+	^^ ( android_gles2 android_gles30 android_gles31 android_gles32 )
+	android_aep? ( !android_gles2 !android_gles30 )
+	android_vulkan_compute_0? ( vulkan )
+	cheets? (
+		vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) )
+		video_cards_amdgpu? ( llvm )
+		video_cards_llvmpipe? ( !cheets_user !cheets_user_64 )
+	)"
+
+DEPEND="cheets? (
+		>=x11-libs/arc-libdrm-2.4.82[${MULTILIB_USEDEP}]
+		llvm? ( sys-devel/arc-llvm:=[${MULTILIB_USEDEP}] )
+		video_cards_amdgpu? (
+			dev-libs/arc-libelf[${MULTILIB_USEDEP}]
+		)
+	)"
+
+RDEPEND="${DEPEND}"
+
+# It is slow without texrels, if someone wants slow
+# mesa without texrels +pic use is worth the shot
+QA_EXECSTACK="usr/lib*/opengl/xorg-x11/lib/libGL.so*"
+QA_WX_LOAD="usr/lib*/opengl/xorg-x11/lib/libGL.so*"
+
+# Think about: ggi, fbcon, no-X configs
+
+driver_list() {
+	local uniq_driver=($(printf "%s\n" "$@" | sort -u))
+	local IFS=,
+	echo "${uniq_driver[*]}"
+}
+
+pkg_setup() {
+	# workaround toc-issue wrt #386545
+	use ppc64 && append-flags -mminimal-toc
+
+	# Remove symlinks created by an earlier version so we don't have
+	# install conflicts.
+	# TODO: Delete this after June 2019, since everybody should have
+	# upgraded by then.
+	local d
+	for d in EGL GL GLES GLES2 GLES3 KHR; do
+		local replaced_link="${ROOT}${ARC_VM_PREFIX}/vendor/include/${d}"
+		if [[ -L "${replaced_link}" ]]; then
+			rm -f "${replaced_link}"
+		fi
+	done
+}
+
+src_prepare() {
+	# workaround for cros-workon not preserving git metadata
+	if [[ ${PV} == 9999* && "${CROS_WORKON_INPLACE}" != "1" ]]; then
+		echo "#define MESA_GIT_SHA1 \"git-deadbeef\"" > src/git_sha1.h
+	fi
+
+	# apply patches
+	if [[ ${PV} != 9999* && -n ${SRC_PATCHES} ]]; then
+		EPATCH_FORCE="yes" \
+		EPATCH_SOURCE="${WORKDIR}/patches" \
+		EPATCH_SUFFIX="patch" \
+		epatch
+	fi
+	# FreeBSD 6.* doesn't have posix_memalign().
+	if [[ ${CHOST} == *-freebsd6.* ]]; then
+		sed -i \
+			-e "s/-DHAVE_POSIX_MEMALIGN//" \
+			configure.ac || die
+	fi
+
+	# Restrict gles version based on USE flag. (See crbug.com/30202361, b/30202371, b/31041422, b:68023287)
+	if use android_gles32; then
+		einfo "Limiting android to gles32."
+		epatch "${FILESDIR}/gles32/0001-limit-gles-version.patch"
+	elif use android_gles31; then
+		einfo "Limiting android to gles31."
+		epatch "${FILESDIR}/gles31/0001-limit-gles-version.patch"
+	elif use android_gles30; then
+		einfo "Limiting android to gles30."
+		epatch "${FILESDIR}/gles30/0001-limit-gles-version.patch"
+	elif use android_gles2; then
+		einfo "Limiting android to gles2."
+		epatch "${FILESDIR}/gles2/0001-limit-gles-version.patch"
+	fi
+
+	epatch "${FILESDIR}"/FROMLIST-glcpp-Hack-to-handle-expressions-in-line-di.patch
+
+	epatch "${FILESDIR}"/FROMLIST-egl-android-Increase-preferred-buffer-count-to-4.patch
+
+	epatch "${FILESDIR}"/CHROMIUM-hack-Override-GL_RENDERER-for-kindle-app.patch
+
+	epatch "${FILESDIR}"/UPSTREAM-virgl-Don-t-destroy-resource-while-it-s-in-use.patch
+
+	epatch "${FILESDIR}"/UPSTREAM-virgl-add-astc-2d-compressed-formats.patch
+
+	# This is actually a reland of a reverted patch.
+	# See https://gitlab.freedesktop.org/virgl/virglrenderer/-/issues/216
+	epatch "${FILESDIR}"/UPSTREAM-virgl-fix-BGRA-emulation-artifacts-during-window-res.patch
+
+	epatch "${FILESDIR}"/UPSTREAM-virgl-do-not-use-winsys-info-for-guest-storage-of-cl.patch
+
+	# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10685
+	epatch "${FILESDIR}"/BACKPORT-gallium-st-add-a-back-buffer-fallback-for-front-rend.patch
+	epatch "${FILESDIR}"/UPSTREAM-gallium-dri-implement-EGL_KHR_mutable_render_buffer.patch
+	epatch "${FILESDIR}"/UPSTREAM-egl-android-check-front-rendering-support-for-cros-g.patch
+	# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11008
+	epatch "${FILESDIR}"/UPSTREAM-virgl-Fix-the-leak-of-hw_res-used-as-fence.patch
+
+	default
+}
+
+src_configure() {
+	cros_optimize_package_for_speed
+
+	if use cheets; then
+		#
+		# cheets-specific overrides
+		#
+
+		arc-build-select-clang
+	fi
+
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	tc-getPROG PKG_CONFIG pkg-config
+
+	if use !gallium && use !classic; then
+		ewarn "You enabled neither classic nor gallium USE flags. No hardware"
+		ewarn "drivers will be built."
+	fi
+
+	if use classic; then
+	# Configurable DRI drivers
+		# Intel code
+		driver_enable video_cards_intel i965
+
+		# Nouveau code
+		driver_enable video_cards_nouveau nouveau
+
+		# ATI code
+		driver_enable video_cards_radeon r100 r200
+	fi
+
+	if use gallium; then
+	# Configurable gallium drivers
+		gallium_enable video_cards_llvmpipe swrast
+
+		# Nouveau code
+		gallium_enable video_cards_nouveau nouveau
+
+		# ATI code
+		gallium_enable video_cards_radeon r300 r600
+		gallium_enable video_cards_amdgpu radeonsi
+
+		# Freedreno code
+		gallium_enable video_cards_freedreno freedreno
+
+		gallium_enable video_cards_virgl virgl
+	fi
+
+	if use vulkan; then
+		vulkan_enable video_cards_amdgpu amd
+		vulkan_enable video_cards_intel intel
+	fi
+
+	export LLVM_CONFIG=${SYSROOT}/usr/bin/llvm-config-host
+	EGL_PLATFORM="surfaceless"
+
+	if use cheets; then
+		#
+		# cheets-specific overrides
+		#
+
+		MESA_PLATFORM_SDK_VERSION=${ARC_PLATFORM_SDK_VERSION}
+
+		# Use llvm-config coming from ARC++ build.
+		export LLVM_CONFIG="${ARC_SYSROOT}/build/bin/llvm-config-host"
+
+		# FIXME(tfiga): Possibly use flag?
+		EGL_PLATFORM="android"
+
+		# The AOSP build system defines the Make variable
+		# PLATFORM_SDK_VERSION, and Mesa's Android.mk files use it to
+		# define the macro ANDROID_API_LEVEL. Arc emulates that here.
+		if [[ -n "${ARC_PLATFORM_SDK_VERSION}" ]]; then
+			CPPFLAGS+=" -DANDROID_API_LEVEL=${ARC_PLATFORM_SDK_VERSION}"
+		fi
+
+		#
+		# end of arc-mesa specific overrides
+		#
+	fi
+
+	if ! use llvm; then
+		export LLVM_CONFIG="no"
+	fi
+
+	arc-build-create-cross-file
+
+	emesonargs+=(
+		$(use cheets && echo "--prefix=${ARC_VM_PREFIX}/vendor")
+		$(use cheets && echo "--sysconfdir=/system/vendor/etc")
+		$(use cheets && echo "-Ddri-search-path=/system/$(get_libdir)/dri:/system/vendor/$(get_libdir)/dri")
+		-Dgallium-va=false
+		-Dgallium-vdpau=false
+		-Dgallium-xvmc=false
+		-Dgallium-omx=disabled
+		-Dglx=disabled
+		-Ddri3=false
+		-Dgles-lib-suffix=_mesa
+		-Degl-lib-suffix=_mesa
+		$(meson_use llvm)
+		$(use egl && echo "-Dplatforms=${EGL_PLATFORM}")
+		$(meson_use egl)
+		$(meson_use gbm)
+		$(meson_use gles1)
+		$(meson_use gles2)
+		$(meson_use selinux)
+		$(meson_use shared-glapi)
+		-Ddri-drivers=$(driver_list "${DRI_DRIVERS[@]}")
+		-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[@]}")
+		-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[@]}")
+		--buildtype $(usex debug debug release)
+		$(use cheets && echo "--cross-file=${ARC_CROSS_FILE}")
+		$(use cheets && echo "-Dplatform-sdk-version=${ARC_PLATFORM_SDK_VERSION}")
+	)
+
+	meson_src_configure
+}
+
+# The meson eclass exports src_compile but not multilib_src_compile. src_compile
+# gets overridden by multilib-minimal
+multilib_src_compile() {
+	meson_src_compile
+}
+
+multilib_src_install_cheets() {
+	exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)"
+	newexe ${BUILD_DIR}/src/mapi/shared-glapi/libglapi.so.0 libglapi.so.0
+
+	exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)/egl"
+	newexe ${BUILD_DIR}/src/egl/libEGL_mesa.so libEGL_mesa.so
+	newexe ${BUILD_DIR}/src/mapi/es1api/libGLESv1_CM_mesa.so libGLESv1_CM_mesa.so
+	newexe ${BUILD_DIR}/src/mapi/es2api/libGLESv2_mesa.so libGLESv2_mesa.so
+
+	exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)/dri"
+	if use classic && use video_cards_intel; then
+		newexe ${BUILD_DIR}/src/mesa/drivers/dri/libmesa_dri_drivers.so i965_dri.so
+	fi
+	if use gallium; then
+		if use video_cards_llvmpipe; then
+			newexe ${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so kms_swrast_dri.so
+		fi
+		if use video_cards_amdgpu; then
+			newexe ${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so radeonsi_dri.so
+		fi
+		if use video_cards_virgl; then
+			newexe ${BUILD_DIR}/src/gallium/targets/dri/libgallium_dri.so virtio_gpu_dri.so
+		fi
+	fi
+
+	if use vulkan; then
+		exeinto "${ARC_VM_PREFIX}/vendor/$(get_libdir)/hw"
+		if use video_cards_amdgpu; then
+			newexe ${BUILD_DIR}/src/amd/vulkan/libvulkan_radeon.so vulkan.cheets.so
+		fi
+		if use video_cards_intel; then
+			newexe ${BUILD_DIR}/src/intel/vulkan/libvulkan_intel.so vulkan.cheets.so
+		fi
+	fi
+}
+
+multilib_src_install() {
+	if use cheets; then
+		multilib_src_install_cheets
+		return
+	fi
+
+	meson_src_install
+
+	# Remove redundant headers
+	# GLU and GLUT
+	rm -f "${D}"/usr/include/GL/glu*.h || die "Removing GLU and GLUT headers failed."
+	# Glew includes
+	rm -f "${D}"/usr/include/GL/{glew,glxew,wglew}.h \
+		|| die "Removing glew includes failed."
+
+	# Move libGL and others from /usr/lib to /usr/lib/opengl/blah/lib
+	# because user can eselect desired GL provider.
+	ebegin "Moving libGL and friends for dynamic switching"
+		dodir /usr/$(get_libdir)/opengl/${OPENGL_DIR}/{lib,extensions,include}
+		local x
+		for x in "${D}"/usr/$(get_libdir)/libGL.{la,a,so*}; do
+			if [ -f ${x} -o -L ${x} ]; then
+				mv -f "${x}" "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/lib \
+					|| die "Failed to move ${x}"
+			fi
+		done
+		for x in "${D}"/usr/include/GL/{gl.h,glx.h,glext.h,glxext.h}; do
+			if [ -f ${x} -o -L ${x} ]; then
+				mv -f "${x}" "${D}"/usr/$(get_libdir)/opengl/${OPENGL_DIR}/include \
+					|| die "Failed to move ${x}"
+			fi
+		done
+	eend $?
+
+	dodir /usr/$(get_libdir)/dri
+	insinto "/usr/$(get_libdir)/dri/"
+	insopts -m0755
+	# install the gallium drivers we use
+	local gallium_drivers_files=( i915_dri.so nouveau_dri.so r300_dri.so r600_dri.so msm_dri.so swrast_dri.so )
+	for x in ${gallium_drivers_files[@]}; do
+		if [ -f "${S}/$(get_libdir)/gallium/${x}" ]; then
+			doins "${S}/$(get_libdir)/gallium/${x}"
+		fi
+	done
+
+	# install classic drivers we use
+	local classic_drivers_files=( i810_dri.so i965_dri.so nouveau_vieux_dri.so radeon_dri.so r200_dri.so )
+	for x in ${classic_drivers_files[@]}; do
+		if [ -f "${S}/$(get_libdir)/${x}" ]; then
+			doins "${S}/$(get_libdir)/${x}"
+		fi
+	done
+}
+
+multilib_src_install_all_cheets() {
+	# Set driconf option to enable S3TC hardware decompression
+	insinto "${ARC_VM_PREFIX}/vendor/etc/"
+	doins "${FILESDIR}"/drirc
+
+	# For documentation on the feature set represented by each XML file
+	# installed into /vendor/etc/permissions, see
+	# <https://developer.android.com/reference/android/content/pm/PackageManager.html>.
+	# For example XML files for each feature, see
+	# <https://android.googlesource.com/platform/frameworks/native/+/master/data/etc>.
+
+	# Install init files to advertise supported API versions.
+	insinto "${ARC_VM_PREFIX}/vendor/etc/init"
+
+	if use android_gles32; then
+		doins "${FILESDIR}/gles32/init.gpu.rc"
+	elif use android_gles31; then
+		doins "${FILESDIR}/gles31/init.gpu.rc"
+	elif use android_gles30; then
+		doins "${FILESDIR}/gles30/init.gpu.rc"
+	elif use android_gles2; then
+		doins "${FILESDIR}/gles2/init.gpu.rc"
+	fi
+
+	# Install vulkan related files.
+	# TODO(b/164152220): Enable vulkan for virtio gpu.
+	if use vulkan; then
+		einfo "Using android vulkan."
+		insinto "${ARC_VM_PREFIX}/vendor/etc/init"
+		doins "${FILESDIR}/vulkan.rc"
+
+		insinto "${ARC_VM_PREFIX}/vendor/etc/permissions"
+
+		if use video_cards_intel; then
+			doins "${FILESDIR}/android.hardware.vulkan.level-1.xml"
+		else
+			doins "${FILESDIR}/android.hardware.vulkan.level-0.xml"
+		fi
+
+		if use video_cards_intel; then
+			doins "${FILESDIR}/android.hardware.vulkan.version-1_1.xml"
+		else
+			doins "${FILESDIR}/android.hardware.vulkan.version-1_0_3.xml"
+		fi
+	fi
+
+	if use android_vulkan_compute_0; then
+		einfo "Using android vulkan_compute_0."
+		insinto "${ARC_VM_PREFIX}/vendor/etc/permissions"
+		doins "${FILESDIR}/android.hardware.vulkan.compute-0.xml"
+	fi
+
+	# Install permission file to declare opengles aep support.
+	if use android_aep; then
+		einfo "Using android aep."
+		insinto "${ARC_VM_PREFIX}/vendor/etc/permissions"
+		doins "${FILESDIR}/android.hardware.opengles.aep.xml"
+	fi
+
+	# Install the dri header for arc-cros-gralloc
+	insinto "${ARC_VM_PREFIX}/vendor/include/GL"
+	doins -r "${S}/include/GL/internal"
+}
+
+multilib_src_install_all() {
+	if use cheets; then
+		multilib_src_install_all_cheets
+		return
+	fi
+
+	# Set driconf option to enable S3TC hardware decompression
+	insinto "/etc/"
+	doins "${FILESDIR}"/drirc
+}
+
+pkg_postinst() {
+	if use cheets; then
+		return
+	fi
+
+	# Switch to the xorg implementation.
+	echo
+	eselect opengl set --use-old ${OPENGL_DIR}
+}
+
+# $1 - VIDEO_CARDS flag
+# other args - names of DRI drivers to enable
+driver_enable() {
+	case $# in
+		# for enabling unconditionally
+		1)
+			DRI_DRIVERS+=("$1")
+			;;
+		*)
+			if use $1; then
+				shift
+				DRI_DRIVERS+=("$@")
+			fi
+			;;
+	esac
+}
+
+gallium_enable() {
+	case $# in
+		# for enabling unconditionally
+		1)
+			GALLIUM_DRIVERS+=("$1")
+			;;
+		*)
+			if use $1; then
+				shift
+				GALLIUM_DRIVERS+=("$@")
+			fi
+			;;
+	esac
+}
+
+vulkan_enable() {
+	case $# in
+		# for enabling unconditionally
+		1)
+			VULKAN_DRIVERS+=("$1")
+			;;
+		*)
+			if use $1; then
+				shift
+				VULKAN_DRIVERS+=("$@")
+			fi
+			;;
+	esac
+}
diff --git a/media-libs/arc-mesa-virgl/arc-mesa-virgl-9999.ebuild b/media-libs/arc-mesa-virgl/arc-mesa-virgl-9999.ebuild
index 84731a7..4968f5d 100644
--- a/media-libs/arc-mesa-virgl/arc-mesa-virgl-9999.ebuild
+++ b/media-libs/arc-mesa-virgl/arc-mesa-virgl-9999.ebuild
@@ -9,6 +9,7 @@
 EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
 CROS_WORKON_LOCALNAME="mesa"
+CROS_WORKON_EGIT_BRANCH="master"
 CROS_WORKON_MANUAL_UPREV="1"
 
 inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
@@ -50,7 +51,7 @@
 	android_aep? ( !android_gles2 !android_gles30 )
 	android_vulkan_compute_0? ( vulkan )
 	cheets? (
-		vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) )
+		vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_virgl ) )
 		video_cards_amdgpu? ( llvm )
 		video_cards_llvmpipe? ( !cheets_user !cheets_user_64 )
 	)"
@@ -152,9 +153,9 @@
 multilib_src_configure() {
 	tc-getPROG PKG_CONFIG pkg-config
 
-	if use !gallium && use !classic; then
-		ewarn "You enabled neither classic nor gallium USE flags. No hardware"
-		ewarn "drivers will be built."
+	if use !gallium && use !classic && use !vulkan; then
+		ewarn "You enabled neither classic, gallium, nor vulkan "
+		ewarn "USE flags. No hardware drivers will be built."
 	fi
 
 	if use classic; then
@@ -191,6 +192,7 @@
 	if use vulkan; then
 		vulkan_enable video_cards_amdgpu amd
 		vulkan_enable video_cards_intel intel
+		vulkan_enable video_cards_virgl virtio-experimental
 	fi
 
 	export LLVM_CONFIG=${SYSROOT}/usr/bin/llvm-config-host
@@ -297,6 +299,9 @@
 		if use video_cards_intel; then
 			newexe ${BUILD_DIR}/src/intel/vulkan/libvulkan_intel.so vulkan.cheets.so
 		fi
+		if use video_cards_virgl; then
+			newexe "${BUILD_DIR}"/src/virtio/vulkan/libvulkan_virtio.so vulkan.cheets.so
+		fi
 	fi
 }
 
@@ -384,8 +389,12 @@
 		doins "${FILESDIR}/vulkan.rc"
 
 		insinto "${ARC_VM_PREFIX}/vendor/etc/permissions"
-		doins "${FILESDIR}/android.hardware.vulkan.version-1_0_3.xml"
-		if use video_cards_intel; then
+		if use video_cards_virgl; then
+			doins "${FILESDIR}/android.hardware.vulkan.version-1_1.xml"
+		else
+			doins "${FILESDIR}/android.hardware.vulkan.version-1_0_3.xml"
+		fi
+		if use video_cards_intel || use video_cards_virgl; then
 			doins "${FILESDIR}/android.hardware.vulkan.level-1.xml"
 		else
 			doins "${FILESDIR}/android.hardware.vulkan.level-0.xml"
diff --git a/media-libs/arc-mesa-virgl/files/BACKPORT-egl-android-implement-image-cleanup-callback.patch b/media-libs/arc-mesa-virgl/files/BACKPORT-egl-android-implement-image-cleanup-callback.patch
deleted file mode 100644
index 91c3e42..0000000
--- a/media-libs/arc-mesa-virgl/files/BACKPORT-egl-android-implement-image-cleanup-callback.patch
+++ /dev/null
@@ -1,218 +0,0 @@
-From d1b8ea27dd304b81dba02a9d1d74441fb2e6caea Mon Sep 17 00:00:00 2001
-From: David Stevens <stevensd@chromium.org>
-Date: Thu, 26 Nov 2020 13:52:58 +0900
-Subject: [PATCH 11/11] egl/android: implement image cleanup callback
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-According to ANDROID_get_native_client_buffer, EGL implementations must
-guarantee that the lifetime of an EGLClientBuffer returned by
-eglGetNativeClientBufferANDROID is at least as long as that of the
-EGLImage which is bound to. Do this by acquiring a reference to the
-underlying AHardwareBuffer for all ANativeWindowBuffers which are bound
-to an _EGLImage.
-
-Signed-off-by: David Stevens <stevensd@chromium.org>
-Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7805>
-Change-Id: I4097fbcba91b1d5f6d7e0e423a84a808c101c347
----
- src/egl/drivers/dri2/platform_android.c | 72 ++++++++++++++++---------
- 1 file changed, 48 insertions(+), 24 deletions(-)
-
-diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
-index 0395b5246e4..1abe7d157c5 100644
---- a/src/egl/drivers/dri2/platform_android.c
-+++ b/src/egl/drivers/dri2/platform_android.c
-@@ -207,6 +207,7 @@ get_native_buffer_name(struct ANativeWindowBuffer *buf)
- static __DRIimage *
- droid_create_image_from_prime_fds_yuv(_EGLDisplay *disp,
-                                      struct ANativeWindowBuffer *buf,
-+                                     void *priv,
-                                      int num_fds, int fds[3])
- {
-    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-@@ -288,12 +289,13 @@ droid_create_image_from_prime_fds_yuv(_EGLDisplay *disp,
-       EGL_YUV_CHROMA_SITING_0_EXT,
-       EGL_YUV_CHROMA_SITING_0_EXT,
-       &error,
--      NULL);
-+      priv);
- }
- 
- static __DRIimage *
- droid_create_image_from_prime_fds(_EGLDisplay *disp,
--                                  struct ANativeWindowBuffer *buf)
-+                                  struct ANativeWindowBuffer *buf,
-+                                  void *priv)
- {
-    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-    int pitches[4] = { 0 }, offsets[4] = { 0 };
-@@ -308,7 +310,8 @@ droid_create_image_from_prime_fds(_EGLDisplay *disp,
-    if (is_yuv(buf->format)) {
-       __DRIimage *image;
- 
--      image = droid_create_image_from_prime_fds_yuv(disp, buf, num_fds, fds);
-+      image = droid_create_image_from_prime_fds_yuv(
-+            disp, buf, priv, num_fds, fds);
-       /*
-        * HACK: https://issuetracker.google.com/32077885
-        * There is no API available to properly query the IMPLEMENTATION_DEFINED
-@@ -347,7 +350,7 @@ droid_create_image_from_prime_fds(_EGLDisplay *disp,
-       EGL_YUV_CHROMA_SITING_0_EXT,
-       EGL_YUV_CHROMA_SITING_0_EXT,
-       &error,
--      NULL);
-+      priv);
- }
- 
- /* More recent CrOS gralloc has a perform op that fills out the struct below
-@@ -373,7 +376,8 @@ struct cros_gralloc0_buffer_info {
- 
- static __DRIimage *
- droid_create_image_from_cros_info(_EGLDisplay *disp,
--                                  struct ANativeWindowBuffer *buf)
-+                                  struct ANativeWindowBuffer *buf,
-+                                  void* priv)
- {
-    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-    struct cros_gralloc0_buffer_info info;
-@@ -396,7 +400,7 @@ droid_create_image_from_cros_info(_EGLDisplay *disp,
-                                                       EGL_YUV_CHROMA_SITING_0_EXT,
-                                                       EGL_YUV_CHROMA_SITING_0_EXT,
-                                                       &error,
--                                                      NULL);
-+                                                      priv);
-    }
- 
-    return NULL;
-@@ -404,15 +408,16 @@ droid_create_image_from_cros_info(_EGLDisplay *disp,
- 
- static __DRIimage *
- droid_create_image_from_native_buffer(_EGLDisplay *disp,
--                                      struct ANativeWindowBuffer *buf)
-+                                      struct ANativeWindowBuffer *buf,
-+                                      void *priv)
- {
-    __DRIimage *dri_image;
- 
--   dri_image = droid_create_image_from_cros_info(disp, buf);
-+   dri_image = droid_create_image_from_cros_info(disp, buf, priv);
-    if (dri_image)
-       return dri_image;
- 
--   return droid_create_image_from_prime_fds(disp, buf);
-+   return droid_create_image_from_prime_fds(disp, buf, priv);
- }
- 
- static EGLBoolean
-@@ -812,7 +817,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
-       }
- 
-       dri2_surf->dri_image_back =
--         droid_create_image_from_native_buffer(disp, dri2_surf->buffer);
-+         droid_create_image_from_native_buffer(disp, dri2_surf->buffer, NULL);
-       if (!dri2_surf->dri_image_back) {
-          _eglLog(_EGL_WARNING, "failed to create DRI image from FD");
-          return -1;
-@@ -973,7 +978,8 @@ droid_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
- #ifdef HAVE_DRM_GRALLOC
- static _EGLImage *
- droid_create_image_from_name(_EGLDisplay *disp,
--                             struct ANativeWindowBuffer *buf)
-+                             struct ANativeWindowBuffer *buf,
-+                             void *priv)
- {
-    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-    __DRIimage *dri_image;
-@@ -997,7 +1003,7 @@ droid_create_image_from_name(_EGLDisplay *disp,
- 					   format,
- 					   name,
- 					   buf->stride,
--					   dri2_img);
-+					   priv);
- }
- #endif /* HAVE_DRM_GRALLOC */
- 
-@@ -1051,15 +1057,19 @@ dri2_create_image_android_native_buffer(_EGLDisplay *disp,
-    }
- 
-    __DRIimage *dri_image =
--      droid_create_image_from_native_buffer(disp, buf);
-+      droid_create_image_from_native_buffer(disp, buf, buf);
- 
- #ifdef HAVE_DRM_GRALLOC
-    if (dri_image == NULL)
--      dri_image = droid_create_image_from_name(disp, buf);
-+      dri_image = droid_create_image_from_name(disp, buf, buf);
- #endif
- 
--   if (dri_image)
-+   if (dri_image) {
-+#if ANDROID_API_LEVEL >= 26
-+      AHardwareBuffer_acquire(ANativeWindowBuffer_getHardwareBuffer(buf));
-+#endif
-       return dri2_create_image_from_dri(disp, dri_image);
-+   }
- 
-    return NULL;
- }
-@@ -1173,6 +1183,17 @@ droid_get_capability(void *loaderPrivate, enum dri_loader_cap cap)
-    }
- }
- 
-+static void
-+droid_destroy_loader_image_state(void *loaderPrivate)
-+{
-+#if ANDROID_API_LEVEL >= 26
-+   if (loaderPrivate) {
-+      AHardwareBuffer_release(
-+            ANativeWindowBuffer_getHardwareBuffer(loaderPrivate));
-+   }
-+#endif
-+}
-+
- static EGLBoolean
- droid_add_configs_for_visuals(_EGLDriver *drv, _EGLDisplay *disp)
- {
-@@ -1277,12 +1298,13 @@ static const struct dri2_egl_display_vtbl droid_display_vtbl = {
- 
- #ifdef HAVE_DRM_GRALLOC
- static const __DRIdri2LoaderExtension droid_dri2_loader_extension = {
--   .base = { __DRI_DRI2_LOADER, 4 },
-+   .base = { __DRI_DRI2_LOADER, 5 },
- 
--   .getBuffers           = NULL,
--   .flushFrontBuffer     = droid_flush_front_buffer,
--   .getBuffersWithFormat = droid_get_buffers_with_format,
--   .getCapability        = droid_get_capability,
-+   .getBuffers               = NULL,
-+   .flushFrontBuffer         = droid_flush_front_buffer,
-+   .getBuffersWithFormat     = droid_get_buffers_with_format,
-+   .getCapability            = droid_get_capability,
-+   .destroyLoaderImageState  = droid_destroy_loader_image_state,
- };
- 
- static const __DRIextension *droid_dri2_loader_extensions[] = {
-@@ -1297,11 +1319,13 @@ static const __DRIextension *droid_dri2_loader_extensions[] = {
- #endif /* HAVE_DRM_GRALLOC */
- 
- static const __DRIimageLoaderExtension droid_image_loader_extension = {
--   .base = { __DRI_IMAGE_LOADER, 2 },
-+   .base = { __DRI_IMAGE_LOADER, 4 },
- 
--   .getBuffers          = droid_image_get_buffers,
--   .flushFrontBuffer    = droid_flush_front_buffer,
--   .getCapability       = droid_get_capability,
-+   .getBuffers               = droid_image_get_buffers,
-+   .flushFrontBuffer         = droid_flush_front_buffer,
-+   .getCapability            = droid_get_capability,
-+   .flushSwapBuffers         = NULL,
-+   .destroyLoaderImageState  = droid_destroy_loader_image_state,
- };
- 
- static void
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/BACKPORT-frontend-dri-plumb-loader-image-cleanup-callback.patch b/media-libs/arc-mesa-virgl/files/BACKPORT-frontend-dri-plumb-loader-image-cleanup-callback.patch
deleted file mode 100644
index 08dae36..0000000
--- a/media-libs/arc-mesa-virgl/files/BACKPORT-frontend-dri-plumb-loader-image-cleanup-callback.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 9277e452081670674dd9fabb909971da3b00c7f4 Mon Sep 17 00:00:00 2001
-From: David Stevens <stevensd@chromium.org>
-Date: Thu, 26 Nov 2020 13:15:55 +0900
-Subject: [PATCH 10/11] frontend/dri: plumb loader image cleanup callback
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: David Stevens <stevensd@chromium.org>
-Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7805>
----
- src/gallium/state_trackers/dri/dri2.c        |  3 +++
- src/gallium/state_trackers/dri/dri_helpers.c | 13 +++++++++++++
- src/gallium/state_trackers/dri/dri_screen.h  |  2 ++
- 3 files changed, 18 insertions(+)
-
-diff --git a/src/gallium/state_trackers/dri/dri2.c b/src/gallium/state_trackers/dri/dri2.c
-index 8b4402a74aa..b9f0bd35b47 100644
---- a/src/gallium/state_trackers/dri/dri2.c
-+++ b/src/gallium/state_trackers/dri/dri2.c
-@@ -801,6 +801,7 @@ dri2_create_image_from_winsys(__DRIscreen *_screen,
-    img->layer = 0;
-    img->use = 0;
-    img->loader_private = loaderPrivate;
-+   img->sPriv = _screen;
- 
-    return img;
- }
-@@ -1012,6 +1013,7 @@ dri2_create_image_common(__DRIscreen *_screen,
-    img->use = use;
- 
-    img->loader_private = loaderPrivate;
-+   img->sPriv = _screen;
-    return img;
- }
- 
-@@ -1260,6 +1262,7 @@ dri2_dup_image(__DRIimage *image, void *loaderPrivate)
-    /* This should be 0 for sub images, but dup is also used for base images. */
-    img->dri_components = image->dri_components;
-    img->loader_private = loaderPrivate;
-+   img->sPriv = image->sPriv;
- 
-    return img;
- }
-diff --git a/src/gallium/state_trackers/dri/dri_helpers.c b/src/gallium/state_trackers/dri/dri_helpers.c
-index 90a8a392fad..615fc70c1e1 100644
---- a/src/gallium/state_trackers/dri/dri_helpers.c
-+++ b/src/gallium/state_trackers/dri/dri_helpers.c
-@@ -296,6 +296,7 @@ dri2_create_image_from_renderbuffer2(__DRIcontext *context,
- 
-    img->dri_format = driGLFormatToImageFormat(rb->Format);
-    img->loader_private = loaderPrivate;
-+   img->sPriv = context->driScreenPriv;
- 
-    pipe_resource_reference(&img->texture, tex);
- 
-@@ -315,6 +316,17 @@ dri2_create_image_from_renderbuffer(__DRIcontext *context,
- void
- dri2_destroy_image(__DRIimage *img)
- {
-+   const __DRIimageLoaderExtension *imgLoader = img->sPriv->image.loader;
-+   const __DRIdri2LoaderExtension *dri2Loader = img->sPriv->dri2.loader;
-+
-+   if (imgLoader && imgLoader->base.version >= 4 &&
-+         imgLoader->destroyLoaderImageState) {
-+      imgLoader->destroyLoaderImageState(img->loader_private);
-+   } else if (dri2Loader && dri2Loader->base.version >= 5 &&
-+         dri2Loader->destroyLoaderImageState) {
-+      dri2Loader->destroyLoaderImageState(img->loader_private);
-+   }
-+
-    pipe_resource_reference(&img->texture, NULL);
-    FREE(img);
- }
-@@ -373,6 +385,7 @@ dri2_create_from_texture(__DRIcontext *context, int target, unsigned texture,
-    img->dri_format = driGLFormatToImageFormat(obj->Image[face][level]->TexFormat);
- 
-    img->loader_private = loaderPrivate;
-+   img->sPriv = context->driScreenPriv;
- 
-    pipe_resource_reference(&img->texture, tex);
- 
-diff --git a/src/gallium/state_trackers/dri/dri_screen.h b/src/gallium/state_trackers/dri/dri_screen.h
-index 1586439bba3..be8a5141237 100644
---- a/src/gallium/state_trackers/dri/dri_screen.h
-+++ b/src/gallium/state_trackers/dri/dri_screen.h
-@@ -118,6 +118,8 @@ struct __DRIimageRec {
-    enum __DRIChromaSiting horizontal_siting;
-    enum __DRIChromaSiting vertical_siting;
- 
-+   /* DRI loader screen */
-+   __DRIscreen *sPriv;
- };
- 
- static inline boolean
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/BACKPORT-gallium-st-add-a-back-buffer-fallback-for-front-rend.patch b/media-libs/arc-mesa-virgl/files/BACKPORT-gallium-st-add-a-back-buffer-fallback-for-front-rend.patch
new file mode 100644
index 0000000..f22a797
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/files/BACKPORT-gallium-st-add-a-back-buffer-fallback-for-front-rend.patch
@@ -0,0 +1,193 @@
+From 3377c69474b9c8517b5ce388c2546335fa9bf130 Mon Sep 17 00:00:00 2001
+From: Yiwei Zhang <zzyiwei@chromium.org>
+Date: Thu, 13 May 2021 06:15:10 +0000
+Subject: [PATCH 1/3] gallium/st: add a back buffer fallback for front
+ rendering
+
+Unlike front buffer used by big GL API for front rendering,
+EGL_KHR_mutable_render_buffer together with ES redirects GL_BACK to the
+front buffer.
+
+This patch adds a fallback to use back buffer and ensures no behavior
+change for unrelated frontends.
+
+Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
+Reviewed-by: Emma Anholt <emma@anholt.net>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10685>
+---
+ src/gallium/frontends/dri/dri2.c         |  6 ++++--
+ src/gallium/frontends/dri/dri_drawable.c |  4 +---
+ src/gallium/frontends/dri/dri_drawable.h |  2 +-
+ src/gallium/frontends/dri/drisw.c        |  8 +++++---
+ src/gallium/frontends/glx/xlib/xm_st.c   |  3 +++
+ src/gallium/frontends/hgl/hgl.c          |  3 +++
+ src/gallium/frontends/osmesa/osmesa.c    |  3 +++
+ src/mesa/state_tracker/st_manager.c      | 13 ++++++++++---
+ 8 files changed, 30 insertions(+), 12 deletions(-)
+
+diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c
+index b0c0d7eafbe..ddb41778dc0 100644
+--- a/src/gallium/frontends/dri/dri2.c
++++ b/src/gallium/frontends/dri/dri2.c
+@@ -669,7 +669,7 @@ dri2_allocate_textures(struct dri_context *ctx,
+    }
+ }
+ 
+-static void
++static bool
+ dri2_flush_frontbuffer(struct dri_context *ctx,
+                        struct dri_drawable *drawable,
+                        enum st_attachment_type statt)
+@@ -680,7 +680,7 @@ dri2_flush_frontbuffer(struct dri_context *ctx,
+    struct pipe_context *pipe = ctx->st->pipe;
+ 
+    if (statt != ST_ATTACHMENT_FRONT_LEFT)
+-      return;
++      return false;
+ 
+    if (drawable->stvis.samples > 1) {
+       /* Resolve the front buffer. */
+@@ -701,6 +701,8 @@ dri2_flush_frontbuffer(struct dri_context *ctx,
+    else if (loader->flushFrontBuffer) {
+       loader->flushFrontBuffer(dri_drawable, dri_drawable->loaderPrivate);
+    }
++
++   return true;
+ }
+ 
+ /**
+diff --git a/src/gallium/frontends/dri/dri_drawable.c b/src/gallium/frontends/dri/dri_drawable.c
+index 5ef0a2ca077..f7a203692ad 100644
+--- a/src/gallium/frontends/dri/dri_drawable.c
++++ b/src/gallium/frontends/dri/dri_drawable.c
+@@ -124,9 +124,7 @@ dri_st_framebuffer_flush_front(struct st_context_iface *stctx,
+       (struct dri_drawable *) stfbi->st_manager_private;
+ 
+    /* XXX remove this and just set the correct one on the framebuffer */
+-   drawable->flush_frontbuffer(ctx, drawable, statt);
+-
+-   return true;
++   return drawable->flush_frontbuffer(ctx, drawable, statt);
+ }
+ 
+ /**
+diff --git a/src/gallium/frontends/dri/dri_drawable.h b/src/gallium/frontends/dri/dri_drawable.h
+index 71cc6070090..a4d5c93c977 100644
+--- a/src/gallium/frontends/dri/dri_drawable.h
++++ b/src/gallium/frontends/dri/dri_drawable.h
+@@ -73,7 +73,7 @@ struct dri_drawable
+ 
+    void (*update_drawable_info)(struct dri_drawable *drawable);
+ 
+-   void (*flush_frontbuffer)(struct dri_context *ctx,
++   bool (*flush_frontbuffer)(struct dri_context *ctx,
+                              struct dri_drawable *drawable,
+                              enum st_attachment_type statt);
+ 
+diff --git a/src/gallium/frontends/dri/drisw.c b/src/gallium/frontends/dri/drisw.c
+index 70fd08e6155..336844c6b3e 100644
+--- a/src/gallium/frontends/dri/drisw.c
++++ b/src/gallium/frontends/dri/drisw.c
+@@ -290,15 +290,15 @@ drisw_copy_sub_buffer(__DRIdrawable *dPriv, int x, int y,
+    }
+ }
+ 
+-static void
++static bool
+ drisw_flush_frontbuffer(struct dri_context *ctx,
+                         struct dri_drawable *drawable,
+                         enum st_attachment_type statt)
+ {
+    struct pipe_resource *ptex;
+ 
+-   if (!ctx)
+-      return;
++   if (!ctx || statt != ST_ATTACHMENT_FRONT_LEFT)
++      return false;
+ 
+    if (drawable->stvis.samples > 1) {
+       /* Resolve the front buffer. */
+@@ -311,6 +311,8 @@ drisw_flush_frontbuffer(struct dri_context *ctx,
+    if (ptex) {
+       drisw_copy_to_front(ctx->st->pipe, ctx->dPriv, ptex);
+    }
++
++   return true;
+ }
+ 
+ /**
+diff --git a/src/gallium/frontends/glx/xlib/xm_st.c b/src/gallium/frontends/glx/xlib/xm_st.c
+index 04068a62656..cb4276fc702 100644
+--- a/src/gallium/frontends/glx/xlib/xm_st.c
++++ b/src/gallium/frontends/glx/xlib/xm_st.c
+@@ -267,6 +267,9 @@ xmesa_st_framebuffer_flush_front(struct st_context_iface *stctx,
+    struct xmesa_st_framebuffer *xstfb = xmesa_st_framebuffer(stfbi);
+    bool ret;
+ 
++   if (statt != ST_ATTACHMENT_FRONT_LEFT)
++      return false;
++
+    ret = xmesa_st_framebuffer_display(stfbi, stctx, statt);
+ 
+    if (ret && xmesa_strict_invalidate)
+diff --git a/src/gallium/frontends/hgl/hgl.c b/src/gallium/frontends/hgl/hgl.c
+index 7b13402e2d9..00b1c305ae0 100644
+--- a/src/gallium/frontends/hgl/hgl.c
++++ b/src/gallium/frontends/hgl/hgl.c
+@@ -65,6 +65,9 @@ hgl_st_framebuffer_flush_front(struct st_context_iface* stctxi,
+ 	struct hgl_buffer* buffer = hgl_st_framebuffer(stfbi);
+ 	struct pipe_resource* ptex = buffer->textures[statt];
+ 
++	if (statt != ST_ATTACHMENT_FRONT_LEFT)
++		return false;
++
+ 	if (!ptex)
+ 		return true;
+ 
+diff --git a/src/gallium/frontends/osmesa/osmesa.c b/src/gallium/frontends/osmesa/osmesa.c
+index 7d06c8d9df9..70e71ba830e 100644
+--- a/src/gallium/frontends/osmesa/osmesa.c
++++ b/src/gallium/frontends/osmesa/osmesa.c
+@@ -368,6 +368,9 @@ osmesa_st_framebuffer_flush_front(struct st_context_iface *stctx,
+    unsigned bpp;
+    int dst_stride;
+ 
++   if (statt != ST_ATTACHMENT_FRONT_LEFT)
++      return false;
++
+    if (osmesa->pp) {
+       struct pipe_resource *zsbuf = NULL;
+       unsigned i;
+diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c
+index ea3d5207ffd..32911d591a9 100644
+--- a/src/mesa/state_tracker/st_manager.c
++++ b/src/mesa/state_tracker/st_manager.c
+@@ -1148,15 +1148,22 @@ st_manager_flush_frontbuffer(struct st_context *st)
+        !stfb->Base.Visual.doubleBufferMode)
+       return;
+ 
++   /* Check front buffer used at the GL API level. */
++   enum st_attachment_type statt = ST_ATTACHMENT_FRONT_LEFT;
+    strb = st_renderbuffer(stfb->Base.Attachment[BUFFER_FRONT_LEFT].
+                           Renderbuffer);
++   if (!strb) {
++       /* Check back buffer redirected by EGL_KHR_mutable_render_buffer. */
++       statt = ST_ATTACHMENT_BACK_LEFT;
++       strb = st_renderbuffer(stfb->Base.Attachment[BUFFER_BACK_LEFT].
++                              Renderbuffer);
++   }
+ 
+    /* Do we have a front color buffer and has it been drawn to since last
+     * frontbuffer flush?
+     */
+-   if (strb && strb->defined) {
+-      stfb->iface->flush_front(&st->iface, stfb->iface,
+-                               ST_ATTACHMENT_FRONT_LEFT);
++   if (strb && strb->defined &&
++       stfb->iface->flush_front(&st->iface, stfb->iface, statt)) {
+       strb->defined = GL_FALSE;
+ 
+       /* Trigger an update of strb->defined on next draw */
+-- 
+2.32.0.rc0.204.g9fa02ecfa5-goog
+
diff --git a/media-libs/arc-mesa-virgl/files/BACKPORT-mapi-x86-Fix-dynamic-entries-in-x86-tsd-stubs.patch b/media-libs/arc-mesa-virgl/files/BACKPORT-mapi-x86-Fix-dynamic-entries-in-x86-tsd-stubs.patch
deleted file mode 100644
index 8a6b7b5..0000000
--- a/media-libs/arc-mesa-virgl/files/BACKPORT-mapi-x86-Fix-dynamic-entries-in-x86-tsd-stubs.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-From 66482303f6d19f1e498b31626c3cbae75e44e957 Mon Sep 17 00:00:00 2001
-From: Lepton Wu <lepton@chromium.org>
-Date: Mon, 22 Jun 2020 15:33:32 -0700
-Subject: [PATCH] mapi: x86: Fix dynamic entries in x86 tsd stubs.
-
-We need to update dynamic entries related code after updating
-asm stubs.
-
-Fixes: 45206d7673a ("mapi: Adapted libglvnd x86 tsd changes")
-Signed-off-by: Lepton Wu <lepton@chromium.org>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5598>
----
- src/mapi/entry_x86_tsd.h | 50 +++++++++++++++++++++++++++++++++-------
- 1 file changed, 42 insertions(+), 8 deletions(-)
-
-diff --git a/src/mapi/entry_x86_tsd.h b/src/mapi/entry_x86_tsd.h
-index 1cf3ea2964e..f5d9c41253f 100644
---- a/src/mapi/entry_x86_tsd.h
-+++ b/src/mapi/entry_x86_tsd.h
-@@ -39,8 +39,16 @@
- 
- #define X86_ENTRY_SIZE 64
- 
--__asm__(".text\n"
--        ".balign 32\n"
-+__asm__(".text\n");
-+
-+__asm__("x86_got:\n\t"
-+        "call 1f\n"
-+        "1:\n\t"
-+        "popl %eax\n\t"
-+        "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t"
-+        "ret");
-+
-+__asm__(".balign 32\n"
-         "x86_entry_start:");
- 
- #define STUB_ASM_ENTRY(func)        \
-@@ -49,11 +57,17 @@ __asm__(".text\n"
-    ".balign 32\n"                   \
-    func ":"
- 
-+#define LOC_BEGIN_SET_ECX
-+#define LOC_END_SET_ECX
-+#define LOC_END_JMP
-+
- #define STUB_ASM_CODE(slot)         \
-+   LOC_BEGIN_SET_ECX	            \
-    "call 1f\n\t"                    \
-    "1:\n\t"                         \
-    "popl %ecx\n\t"                  \
-    "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ecx\n\t" \
-+   LOC_END_SET_ECX                                \
-    "movl " ENTRY_CURRENT_TABLE "@GOT(%ecx), %eax\n\t" \
-    "mov (%eax), %eax\n\t"           \
-    "testl %eax, %eax\n\t"           \
-@@ -64,7 +78,8 @@ __asm__(".text\n"
-    "call " ENTRY_CURRENT_TABLE_GET "@PLT\n\t" \
-    "popl %ebx\n\t"                  \
-    "1:\n\t"                         \
--   "jmp *(4 * " slot ")(%eax)"
-+   "jmp *(4 * " slot ")(%eax)\n\t" \
-+   LOC_END_JMP
- 
- #define MAPI_TMP_STUB_ASM_GCC
- #include "mapi_tmp.h"
-@@ -74,9 +89,26 @@ __asm__(".text\n"
- __asm__(".balign 32\n"
-         "x86_entry_end:");
- 
-+#undef LOC_BEGIN_SET_ECX
-+#undef LOC_END_SET_ECX
-+#undef LOC_END_JMP
-+#define LOC_BEGIN_SET_ECX "jmp set_ecx\n\t"
-+#define LOC_END_SET_ECX "set_ecx:movl $0x12345678, %ecx\n\tloc_end_set_ecx:\n\t"
-+#define LOC_END_JMP "loc_end_jmp:"
-+
-+/* Any number big enough works. This is to make sure the final
-+ * jmp is a long jmp */
-+__asm__(STUB_ASM_CODE("10000"));
-+
-+extern const char loc_end_set_ecx[] HIDDEN;
-+extern const char loc_end_jmp[] HIDDEN;
-+
- #include <string.h>
- #include "u_execmem.h"
- 
-+extern unsigned long
-+x86_got();
-+
- extern const char x86_entry_start[] HIDDEN;
- extern const char x86_entry_end[] HIDDEN;
- 
-@@ -95,16 +127,15 @@ void
- entry_patch(mapi_func entry, int slot)
- {
-    char *code = (char *) entry;
--
--   *((unsigned long *) (code + 11)) = slot * sizeof(mapi_func);
--   *((unsigned long *) (code + 22)) = slot * sizeof(mapi_func);
-+   int offset = loc_end_jmp - x86_entry_end - sizeof(unsigned long);
-+   *((unsigned long *) (code + offset)) = slot * sizeof(mapi_func);
- }
- 
- mapi_func
- entry_generate(int slot)
- {
--   const char *code_templ = x86_entry_end - X86_ENTRY_SIZE;
--   void *code;
-+   const char *code_templ = x86_entry_end;
-+   char *code;
-    mapi_func entry;
- 
-    code = u_execmem_alloc(X86_ENTRY_SIZE);
-@@ -113,6 +144,9 @@ entry_generate(int slot)
- 
-    memcpy(code, code_templ, X86_ENTRY_SIZE);
-    entry = (mapi_func) code;
-+   int ecx_value_off = loc_end_set_ecx - x86_entry_end - sizeof(unsigned long);
-+   *((unsigned long *) (code + ecx_value_off)) = x86_got();
-+
-    entry_patch(entry, slot);
- 
-    return entry;
--- 
-2.28.0.163.g6104cc2f0b6-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/CHROMIUM-hack-Override-GL_RENDERER-for-kindle-app.patch b/media-libs/arc-mesa-virgl/files/CHROMIUM-hack-Override-GL_RENDERER-for-kindle-app.patch
new file mode 100644
index 0000000..335afad
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/files/CHROMIUM-hack-Override-GL_RENDERER-for-kindle-app.patch
@@ -0,0 +1,63 @@
+From ea82a2289fffe011267c64ce5d7d3e337d6201ac Mon Sep 17 00:00:00 2001
+From: Lepton Wu <lepton@chromium.org>
+Date: Fri, 5 Mar 2021 16:31:44 -0800
+Subject: [PATCH] CHROMIUM: hack: Override GL_RENDERER for kindle app
+
+We need this hack before Amazon fixes it at their side. We can't use
+dirconf since it's disabled in Android for now. This is a quick hack
+and should be removed soon.
+---
+ src/gallium/drivers/virgl/virgl_screen.c | 10 ++++++++++
+ src/gallium/drivers/virgl/virgl_screen.h |  1 +
+ 2 files changed, 11 insertions(+)
+
+diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
+index 30fa47a8fef..fb7b8a936ea 100644
+--- a/src/gallium/drivers/virgl/virgl_screen.c
++++ b/src/gallium/drivers/virgl/virgl_screen.c
+@@ -23,6 +23,7 @@
+ #include "util/u_memory.h"
+ #include "util/format/u_format.h"
+ #include "util/format/u_format_s3tc.h"
++#include "util/u_process.h"
+ #include "util/u_screen.h"
+ #include "util/u_video.h"
+ #include "util/u_math.h"
+@@ -63,6 +64,12 @@ virgl_get_vendor(struct pipe_screen *screen)
+ static const char *
+ virgl_get_name(struct pipe_screen *screen)
+ {
++   struct virgl_screen *vscreen = virgl_screen(screen);
++   if (vscreen->renderer_override)
++      return "Intel";
++   else
++      return "virgl";
++
+    return "virgl";
+ }
+ 
+@@ -957,6 +964,9 @@ virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *c
+                  &screen->caps.caps.v2.supported_readback_formats);
+    fixup_formats(&screen->caps.caps, &screen->caps.caps.v2.scanout);
+ 
++   const char *proc = util_get_process_name();
++   screen->renderer_override = proc && !strcmp("com.amazon.kindle", proc);
++
+    union virgl_caps *caps = &screen->caps.caps;
+    screen->tweak_gles_emulate_bgra &= !virgl_format_check_bitmask(PIPE_FORMAT_B8G8R8A8_SRGB, caps->v1.render.bitmask, false);
+    screen->refcnt = 1;
+diff --git a/src/gallium/drivers/virgl/virgl_screen.h b/src/gallium/drivers/virgl/virgl_screen.h
+index 22275cbea1c..966830067e2 100644
+--- a/src/gallium/drivers/virgl/virgl_screen.h
++++ b/src/gallium/drivers/virgl/virgl_screen.h
+@@ -56,6 +56,7 @@ struct virgl_screen {
+    uint32_t sub_ctx_id;
+    bool tweak_gles_emulate_bgra;
+    bool tweak_gles_apply_bgra_dest_swizzle;
++   bool renderer_override;
+    int32_t tweak_gles_tf3_value;
+ 
+    struct disk_cache *disk_cache;
+-- 
+2.31.1.498.g6c1eba8ee3d-goog
+
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-Revert-virgl-Cache-depth-and-stencil-buffers.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-Revert-virgl-Cache-depth-and-stencil-buffers.patch
new file mode 100644
index 0000000..373203c
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/files/UPSTREAM-Revert-virgl-Cache-depth-and-stencil-buffers.patch
@@ -0,0 +1,36 @@
+From a8e75bb73c6f8ce94c4f598a2f4763b12188991c Mon Sep 17 00:00:00 2001
+From: Lepton Wu <lepton@chromium.org>
+Date: Wed, 2 Jun 2021 18:00:06 -0700
+Subject: [PATCH] Revert "virgl: Cache depth and stencil buffers"
+
+This reverts commit d245d7b6b8bb75622dd43fb845f60d55ad3ebc89.
+
+It broke various dEQP EGL tests because the reused resource
+at host side could have a different sample_count with what we want.
+The example of tests get broken:
+
+dEQP-EGL.functional.color_clears.single_context.gles2.rgba8888_window
+
+Signed-off-by: Lepton Wu <lepton@chromium.org>
+Reviewed-by: Rohan Garg <rohan.garg@collabora.com>
+Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11152>
+---
+ src/gallium/winsys/virgl/drm/virgl_drm_winsys.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
+index 1dd7b001925..dfa145a73f7 100644
+--- a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
++++ b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
+@@ -63,7 +63,6 @@ static inline boolean can_cache_resource(uint32_t bind)
+           bind == VIRGL_BIND_VERTEX_BUFFER ||
+           bind == VIRGL_BIND_CUSTOM ||
+           bind == VIRGL_BIND_STAGING ||
+-          bind == VIRGL_BIND_DEPTH_STENCIL ||
+           bind == 0;
+ }
+ 
+-- 
+2.32.0.rc1.229.g3e70b5a671-goog
+
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-dri-add-image-cleanup-callback-to-loader-extensions.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-dri-add-image-cleanup-callback-to-loader-extensions.patch
deleted file mode 100644
index 89c2abe..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-dri-add-image-cleanup-callback-to-loader-extensions.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-From e0ded637ccc5a17437585b3417ce2d5a9eb30ffa Mon Sep 17 00:00:00 2001
-From: David Stevens <stevensd@chromium.org>
-Date: Thu, 26 Nov 2020 14:03:16 +0900
-Subject: [PATCH 09/11] dri: add image cleanup callback to loader extensions
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The callback may be used by dri drivers to perform cleanup when images
-are destroyed. It is added to the dri2 and image loader extensions.
-
-Signed-off-by: David Stevens <stevensd@chromium.org>
-Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7805>
----
- include/GL/internal/dri_interface.h | 22 ++++++++++++++++++++--
- 1 file changed, 20 insertions(+), 2 deletions(-)
-
-diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
-index e40106575c0..69969eebaa6 100644
---- a/include/GL/internal/dri_interface.h
-+++ b/include/GL/internal/dri_interface.h
-@@ -1106,7 +1106,7 @@ struct __DRIbufferRec {
- };
- 
- #define __DRI_DRI2_LOADER "DRI_DRI2Loader"
--#define __DRI_DRI2_LOADER_VERSION 4
-+#define __DRI_DRI2_LOADER_VERSION 5
- 
- enum dri_loader_cap {
-    /* Whether the loader handles RGBA channel ordering correctly. If not,
-@@ -1177,6 +1177,15 @@ struct __DRIdri2LoaderExtensionRec {
-      * \since 4
-      */
-     unsigned (*getCapability)(void *loaderPrivate, enum dri_loader_cap cap);
-+
-+    /**
-+     * Clean up any loader state associated with an image.
-+     *
-+     * \param loaderPrivate  Loader's private data that was previously passed
-+     *                       into a __DRIimageExtensionRec::createImage function
-+     * \since 5
-+     */
-+    void (*destroyLoaderImageState)(void *loaderPrivate);
- };
- 
- /**
-@@ -2003,7 +2012,7 @@ struct __DRIimageList {
- };
- 
- #define __DRI_IMAGE_LOADER "DRI_IMAGE_LOADER"
--#define __DRI_IMAGE_LOADER_VERSION 3
-+#define __DRI_IMAGE_LOADER_VERSION 4
- 
- struct __DRIimageLoaderExtensionRec {
-     __DRIextension base;
-@@ -2062,6 +2071,15 @@ struct __DRIimageLoaderExtensionRec {
-      * \since 3
-      */
-     void (*flushSwapBuffers)(__DRIdrawable *driDrawable, void *loaderPrivate);
-+
-+    /**
-+     * Clean up any loader state associated with an image.
-+     *
-+     * \param loaderPrivate  Loader's private data that was previously passed
-+     *                       into a __DRIimageExtensionRec::createImage function
-+     * \since 4
-+     */
-+    void (*destroyLoaderImageState)(void *loaderPrivate);
- };
- 
- /**
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-dri_util-Update-internal_format-to-GL_RGB8-for-MESA_.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-dri_util-Update-internal_format-to-GL_RGB8-for-MESA_.patch
deleted file mode 100644
index c01436e..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-dri_util-Update-internal_format-to-GL_RGB8-for-MESA_.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From 02a1f95386b43bf46cd1c8297d0955242f554fa2 Mon Sep 17 00:00:00 2001
-From: Nataraj Deshpande <nataraj.deshpande@intel.com>
-Date: Wed, 13 May 2020 14:32:13 -0700
-Subject: [PATCH] dri_util: Update internal_format to GL_RGB8 for
- MESA_FORMAT_R8G8B8X8_UNORM
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The commit helps to resolve GL_INVALID_OPERATION error returned
-during CTS test when Android format RGBX8888 fallback to RGBA8888
-and then set color with glTexSubImage2D(format=GL_RGB).
-
-Fixes android.hardware.nativehardware.cts.AHardwareBufferNativeTests:
- #SingleLayer_ColorTest_GpuSampledImageCanBeSampled_R8G8B8X8_UNORM
-
-Cc: <mesa-stable@lists.freedesktop.org>
-Fixes: bf576772ab4d ("dri_util: add driImageFormatToSizedInternalGLFormat function")
-Signed-off-by: Nataraj Deshpande <nataraj.deshpande@intel.com>
-Reviewed-by: Marek Olšák <marek.olsak@amd.com>
-Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5034>
----
- src/mesa/drivers/dri/common/dri_util.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
-index bfa3d35fd81..e90179c7f2e 100644
---- a/src/mesa/drivers/dri/common/dri_util.c
-+++ b/src/mesa/drivers/dri/common/dri_util.c
-@@ -935,7 +935,7 @@ static const struct {
-    {
-       .image_format    = __DRI_IMAGE_FORMAT_XBGR8888,
-       .mesa_format     =        MESA_FORMAT_R8G8B8X8_UNORM,
--      .internal_format =        GL_RGBA8,
-+      .internal_format =        GL_RGB8,
-    },
-    {
-       .image_format    = __DRI_IMAGE_FORMAT_R8,
--- 
-2.29.1.341.ge80a0c044ae-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Add-support-for-CrOS-buffer-info-perform.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Add-support-for-CrOS-buffer-info-perform.patch
deleted file mode 100644
index 374e3cc..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Add-support-for-CrOS-buffer-info-perform.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-From 9ef5282ff2991c9c58993844e1d4e387e128d9f3 Mon Sep 17 00:00:00 2001
-From: "Kristian H. Kristensen" <hoegsberg@google.com>
-Date: Mon, 10 Aug 2020 19:05:05 -0700
-Subject: [PATCH 07/11] egl/android: Add support for CrOS buffer info perform
- op
-
-This uses a new gralloc perform op that returns the buffer info we
-need.  No need to guess at formats, hard code offsets and recalculate
-strides.  This also gives us the format modifier as well as aux planes
-for compressed RGBA buffers.
-
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6055>
----
- src/egl/drivers/dri2/platform_android.c | 69 ++++++++++++++++++++++++-
- 1 file changed, 67 insertions(+), 2 deletions(-)
-
-diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
-index 73955b6299e..3b2dffad212 100644
---- a/src/egl/drivers/dri2/platform_android.c
-+++ b/src/egl/drivers/dri2/platform_android.c
-@@ -350,6 +350,71 @@ droid_create_image_from_prime_fds(_EGLDisplay *disp,
-       NULL);
- }
- 
-+/* More recent CrOS gralloc has a perform op that fills out the struct below
-+ * with canonical information about the buffer and its modifier, planes,
-+ * offsets and strides.  If we have this, we can skip straight to
-+ * createImageFromDmaBufs2() and avoid all the guessing and recalculations.
-+ * This also gives us the modifier and plane offsets/strides for multiplanar
-+ * compressed buffers (eg Intel CCS buffers) in order to make that work in Android.
-+ */
-+
-+static const char cros_gralloc_module_name[] = "CrOS Gralloc";
-+
-+#define CROS_GRALLOC_DRM_GET_BUFFER_INFO 4
-+
-+struct cros_gralloc0_buffer_info {
-+   uint32_t drm_fourcc;
-+   int num_fds;
-+   int fds[4];
-+   uint64_t modifier;
-+   int offset[4];
-+   int stride[4];
-+};
-+
-+static __DRIimage *
-+droid_create_image_from_cros_info(_EGLDisplay *disp,
-+                                  struct ANativeWindowBuffer *buf)
-+{
-+   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-+   struct cros_gralloc0_buffer_info info;
-+   unsigned error;
-+
-+   if (strcmp(dri2_dpy->gralloc->common.name, cros_gralloc_module_name) == 0 &&
-+       dri2_dpy->gralloc->perform &&
-+       dri2_dpy->image->base.version >= 15 &&
-+       dri2_dpy->image->createImageFromDmaBufs2 != NULL &&
-+       dri2_dpy->gralloc->perform(dri2_dpy->gralloc,
-+                                  CROS_GRALLOC_DRM_GET_BUFFER_INFO,
-+                                  buf->handle, &info) == 0) {
-+      return dri2_dpy->image->createImageFromDmaBufs2(dri2_dpy->dri_screen,
-+                                                      buf->width, buf->height,
-+                                                      info.drm_fourcc, info.modifier,
-+                                                      info.fds, info.num_fds,
-+                                                      info.stride, info.offset,
-+                                                      EGL_ITU_REC601_EXT,
-+                                                      EGL_YUV_FULL_RANGE_EXT,
-+                                                      EGL_YUV_CHROMA_SITING_0_EXT,
-+                                                      EGL_YUV_CHROMA_SITING_0_EXT,
-+                                                      &error,
-+                                                      NULL);
-+   }
-+
-+   return NULL;
-+}
-+
-+static __DRIimage *
-+droid_create_image_from_native_buffer(_EGLDisplay *disp,
-+                                      struct ANativeWindowBuffer *buf)
-+{
-+   __DRIimage *dri_image;
-+
-+   dri_image = droid_create_image_from_cros_info(disp, buf);
-+   if (dri_image)
-+      return dri_image;
-+
-+   return droid_create_image_from_prime_fds(disp, buf);
-+}
-+
- static EGLBoolean
- droid_window_dequeue_buffer(struct dri2_egl_surface *dri2_surf)
- {
-@@ -747,7 +812,7 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
-       }
- 
-       dri2_surf->dri_image_back =
--         droid_create_image_from_prime_fds(disp, dri2_surf->buffer);
-+         droid_create_image_from_native_buffer(disp, dri2_surf->buffer);
-       if (!dri2_surf->dri_image_back) {
-          _eglLog(_EGL_WARNING, "failed to create DRI image from FD");
-          return -1;
-@@ -986,7 +1051,7 @@ dri2_create_image_android_native_buffer(_EGLDisplay *disp,
-    }
- 
-    __DRIimage *dri_image =
--      droid_create_image_from_prime_fds(disp, buf);
-+      droid_create_image_from_native_buffer(disp, buf);
- 
- #ifdef HAVE_DRM_GRALLOC
-    if (dri_image == NULL)
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Call-createImageFromDmaBufs-directly.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Call-createImageFromDmaBufs-directly.patch
deleted file mode 100644
index f5bf085..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Call-createImageFromDmaBufs-directly.patch
+++ /dev/null
@@ -1,193 +0,0 @@
-From a66dbd4f27c83c928b0c44893173816d61a91937 Mon Sep 17 00:00:00 2001
-From: "Kristian H. Kristensen" <hoegsberg@google.com>
-Date: Thu, 6 Aug 2020 16:38:28 -0700
-Subject: [PATCH 01/11] egl/android: Call createImageFromDmaBufs directly
-
-Instead of building up EGL attribute lists and then having to parse
-them again, call the DRI driver directly and then use the
-dri2_create_image_from_dri() helper to wrap the __DRIimage in an
-EGLImage.
-
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6055>
----
- src/egl/drivers/dri2/egl_dri2.c         |  2 +-
- src/egl/drivers/dri2/egl_dri2.h         |  3 +
- src/egl/drivers/dri2/platform_android.c | 94 ++++++++++---------------
- 3 files changed, 41 insertions(+), 58 deletions(-)
-
-diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
-index 2a216ef1c80..d57f1486677 100644
---- a/src/egl/drivers/dri2/egl_dri2.c
-+++ b/src/egl/drivers/dri2/egl_dri2.c
-@@ -2141,7 +2141,7 @@ dri2_create_image(_EGLDriver *drv, _EGLDisplay *disp, _EGLContext *ctx,
-                                        attr_list);
- }
- 
--static _EGLImage *
-+_EGLImage *
- dri2_create_image_from_dri(_EGLDisplay *disp, __DRIimage *dri_image)
- {
-    struct dri2_egl_image *dri2_img;
-diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h
-index 96cf04d89e9..ac7f0de7ebd 100644
---- a/src/egl/drivers/dri2/egl_dri2.h
-+++ b/src/egl/drivers/dri2/egl_dri2.h
-@@ -435,6 +435,9 @@ _EGLImage *
- dri2_create_image_dma_buf(_EGLDisplay *disp, _EGLContext *ctx,
-                           EGLClientBuffer buffer, const EGLint *attr_list);
- 
-+_EGLImage *
-+dri2_create_image_from_dri(_EGLDisplay *disp, __DRIimage *dri_image);
-+
- #ifdef HAVE_X11_PLATFORM
- EGLBoolean
- dri2_initialize_x11(_EGLDriver *drv, _EGLDisplay *disp);
-diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
-index da90c44d601..3814187724a 100644
---- a/src/egl/drivers/dri2/platform_android.c
-+++ b/src/egl/drivers/dri2/platform_android.c
-@@ -788,18 +788,19 @@ droid_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
-    return EGL_TRUE;
- }
- 
--static _EGLImage *
-+static __DRIimage *
- droid_create_image_from_prime_fds_yuv(_EGLDisplay *disp, _EGLContext *ctx,
-                                      struct ANativeWindowBuffer *buf,
-                                      int num_fds, int fds[3])
- {
-    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-    struct android_ycbcr ycbcr;
--   size_t offsets[3];
--   size_t pitches[3];
-+   int offsets[3];
-+   int pitches[3];
-    enum chroma_order chroma_order;
-    int fourcc;
-    int ret;
-+   unsigned error;
- 
-    if (!dri2_dpy->gralloc->lock_ycbcr) {
-       _eglLog(_EGL_WARNING, "Gralloc does not support lock_ycbcr");
-@@ -863,52 +864,27 @@ droid_create_image_from_prime_fds_yuv(_EGLDisplay *disp, _EGLContext *ctx,
-       assert(num_fds == expected_planes);
-    }
- 
--   if (ycbcr.chroma_step == 2) {
--      /* Semi-planar Y + CbCr or Y + CrCb format. */
--      const EGLint attr_list_2plane[] = {
--         EGL_WIDTH, buf->width,
--         EGL_HEIGHT, buf->height,
--         EGL_LINUX_DRM_FOURCC_EXT, fourcc,
--         EGL_DMA_BUF_PLANE0_FD_EXT, fds[0],
--         EGL_DMA_BUF_PLANE0_PITCH_EXT, pitches[0],
--         EGL_DMA_BUF_PLANE0_OFFSET_EXT, offsets[0],
--         EGL_DMA_BUF_PLANE1_FD_EXT, fds[1],
--         EGL_DMA_BUF_PLANE1_PITCH_EXT, pitches[1],
--         EGL_DMA_BUF_PLANE1_OFFSET_EXT, offsets[1],
--         EGL_NONE, 0
--      };
--
--      return dri2_create_image_dma_buf(disp, ctx, NULL, attr_list_2plane);
--   } else {
--      /* Fully planar Y + Cb + Cr or Y + Cr + Cb format. */
--      const EGLint attr_list_3plane[] = {
--         EGL_WIDTH, buf->width,
--         EGL_HEIGHT, buf->height,
--         EGL_LINUX_DRM_FOURCC_EXT, fourcc,
--         EGL_DMA_BUF_PLANE0_FD_EXT, fds[0],
--         EGL_DMA_BUF_PLANE0_PITCH_EXT, pitches[0],
--         EGL_DMA_BUF_PLANE0_OFFSET_EXT, offsets[0],
--         EGL_DMA_BUF_PLANE1_FD_EXT, fds[1],
--         EGL_DMA_BUF_PLANE1_PITCH_EXT, pitches[1],
--         EGL_DMA_BUF_PLANE1_OFFSET_EXT, offsets[1],
--         EGL_DMA_BUF_PLANE2_FD_EXT, fds[2],
--         EGL_DMA_BUF_PLANE2_PITCH_EXT, pitches[2],
--         EGL_DMA_BUF_PLANE2_OFFSET_EXT, offsets[2],
--         EGL_NONE, 0
--      };
--
--      return dri2_create_image_dma_buf(disp, ctx, NULL, attr_list_3plane);
--   }
-+   return dri2_dpy->image->createImageFromDmaBufs(dri2_dpy->dri_screen,
-+      buf->width, buf->height, fourcc,
-+      fds, num_fds, pitches, offsets,
-+      EGL_ITU_REC601_EXT,
-+      EGL_YUV_NARROW_RANGE_EXT,
-+      EGL_YUV_CHROMA_SITING_0_EXT,
-+      EGL_YUV_CHROMA_SITING_0_EXT,
-+      &error,
-+      NULL);
- }
- 
--static _EGLImage *
-+static __DRIimage *
- droid_create_image_from_prime_fds(_EGLDisplay *disp, _EGLContext *ctx,
-                                   struct ANativeWindowBuffer *buf, int num_fds, int fds[3])
- {
--   unsigned int pitch;
-+   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-+   int pitches[4] = { 0 }, offsets[4] = { 0 };
-+   unsigned error;
- 
-    if (is_yuv(buf->format)) {
--      _EGLImage *image;
-+      __DRIimage *image;
- 
-       image = droid_create_image_from_prime_fds_yuv(disp, ctx, buf, num_fds, fds);
-       /*
-@@ -935,23 +911,21 @@ droid_create_image_from_prime_fds(_EGLDisplay *disp, _EGLContext *ctx,
-       return NULL;
-    }
- 
--   pitch = buf->stride * get_format_bpp(buf->format);
--   if (pitch == 0) {
-+   pitches[0] = buf->stride * get_format_bpp(buf->format);
-+   if (pitches[0] == 0) {
-       _eglError(EGL_BAD_PARAMETER, "eglCreateEGLImageKHR");
-       return NULL;
-    }
- 
--   const EGLint attr_list[] = {
--      EGL_WIDTH, buf->width,
--      EGL_HEIGHT, buf->height,
--      EGL_LINUX_DRM_FOURCC_EXT, fourcc,
--      EGL_DMA_BUF_PLANE0_FD_EXT, fds[0],
--      EGL_DMA_BUF_PLANE0_PITCH_EXT, pitch,
--      EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0,
--      EGL_NONE, 0
--   };
--
--   return dri2_create_image_dma_buf(disp, ctx, NULL, attr_list);
-+   return dri2_dpy->image->createImageFromDmaBufs(dri2_dpy->dri_screen,
-+      buf->width, buf->height, fourcc,
-+      fds, num_fds, pitches, offsets,
-+      EGL_ITU_REC601_EXT,
-+      EGL_YUV_NARROW_RANGE_EXT,
-+      EGL_YUV_CHROMA_SITING_0_EXT,
-+      EGL_YUV_CHROMA_SITING_0_EXT,
-+      &error,
-+      NULL);
- }
- 
- #ifdef HAVE_DRM_GRALLOC
-@@ -1053,8 +1027,14 @@ dri2_create_image_android_native_buffer(_EGLDisplay *disp,
-    }
- 
-    num_fds = get_native_buffer_fds(buf, fds);
--   if (num_fds > 0)
--      return droid_create_image_from_prime_fds(disp, ctx, buf, num_fds, fds);
-+   if (num_fds > 0) {
-+      __DRIimage *dri_image =
-+         droid_create_image_from_prime_fds(disp, ctx, buf, num_fds, fds);
-+      if (!dri_image)
-+         return EGL_NO_IMAGE_KHR;
-+
-+      return dri2_create_image_from_dri(disp, dri_image);
-+   }
- 
- #ifdef HAVE_DRM_GRALLOC
-    return droid_create_image_from_name(disp, ctx, buf);
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Drop-unused-ctx-argument.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Drop-unused-ctx-argument.patch
deleted file mode 100644
index 465476b..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Drop-unused-ctx-argument.patch
+++ /dev/null
@@ -1,71 +0,0 @@
-From a4cbe69e4766ceeb1b94d980b01461651e9f5837 Mon Sep 17 00:00:00 2001
-From: "Kristian H. Kristensen" <hoegsberg@google.com>
-Date: Thu, 6 Aug 2020 17:29:35 -0700
-Subject: [PATCH 03/11] egl/android: Drop unused ctx argument
-
-EGL_ANDROID_image_native_buffer requires the ctx argument to always be
-NULL, so not point in passing it around.
-
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6055>
----
- src/egl/drivers/dri2/platform_android.c | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
-index 646a7333755..6bcc3143606 100644
---- a/src/egl/drivers/dri2/platform_android.c
-+++ b/src/egl/drivers/dri2/platform_android.c
-@@ -789,7 +789,7 @@ droid_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
- }
- 
- static __DRIimage *
--droid_create_image_from_prime_fds_yuv(_EGLDisplay *disp, _EGLContext *ctx,
-+droid_create_image_from_prime_fds_yuv(_EGLDisplay *disp,
-                                      struct ANativeWindowBuffer *buf,
-                                      int num_fds, int fds[3])
- {
-@@ -876,7 +876,7 @@ droid_create_image_from_prime_fds_yuv(_EGLDisplay *disp, _EGLContext *ctx,
- }
- 
- static __DRIimage *
--droid_create_image_from_prime_fds(_EGLDisplay *disp, _EGLContext *ctx,
-+droid_create_image_from_prime_fds(_EGLDisplay *disp,
-                                   struct ANativeWindowBuffer *buf)
- {
-    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-@@ -892,7 +892,7 @@ droid_create_image_from_prime_fds(_EGLDisplay *disp, _EGLContext *ctx,
-    if (is_yuv(buf->format)) {
-       __DRIimage *image;
- 
--      image = droid_create_image_from_prime_fds_yuv(disp, ctx, buf, num_fds, fds);
-+      image = droid_create_image_from_prime_fds_yuv(disp, buf, num_fds, fds);
-       /*
-        * HACK: https://issuetracker.google.com/32077885
-        * There is no API available to properly query the IMPLEMENTATION_DEFINED
-@@ -936,7 +936,7 @@ droid_create_image_from_prime_fds(_EGLDisplay *disp, _EGLContext *ctx,
- 
- #ifdef HAVE_DRM_GRALLOC
- static _EGLImage *
--droid_create_image_from_name(_EGLDisplay *disp, _EGLContext *ctx,
-+droid_create_image_from_name(_EGLDisplay *disp,
-                              struct ANativeWindowBuffer *buf)
- {
-    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-@@ -1030,12 +1030,12 @@ dri2_create_image_android_native_buffer(_EGLDisplay *disp,
-    }
- 
-    __DRIimage *dri_image =
--      droid_create_image_from_prime_fds(disp, ctx, buf);
-+      droid_create_image_from_prime_fds(disp, buf);
-    if (dri_image)
-       return dri2_create_image_from_dri(disp, dri_image);
- 
- #ifdef HAVE_DRM_GRALLOC
--   return droid_create_image_from_name(disp, ctx, buf);
-+   return droid_create_image_from_name(disp, buf);
- #else
-    return NULL;
- #endif
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Look-up-prime-fds-in-droid_create_image_.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Look-up-prime-fds-in-droid_create_image_.patch
deleted file mode 100644
index 4de79f2..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Look-up-prime-fds-in-droid_create_image_.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-From c55d7757f0f16d52675e9178b5fca43a5ad03f30 Mon Sep 17 00:00:00 2001
-From: "Kristian H. Kristensen" <hoegsberg@google.com>
-Date: Thu, 6 Aug 2020 16:45:28 -0700
-Subject: [PATCH 02/11] egl/android: Look up prime fds in
- droid_create_image_from_prime_fds()
-
-We always need to look them up before calling this function, so move
-the lookup into the function to consolidate the code.
-
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6055>
----
- src/egl/drivers/dri2/platform_android.c | 22 ++++++++++------------
- 1 file changed, 10 insertions(+), 12 deletions(-)
-
-diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
-index 3814187724a..646a7333755 100644
---- a/src/egl/drivers/dri2/platform_android.c
-+++ b/src/egl/drivers/dri2/platform_android.c
-@@ -877,11 +877,17 @@ droid_create_image_from_prime_fds_yuv(_EGLDisplay *disp, _EGLContext *ctx,
- 
- static __DRIimage *
- droid_create_image_from_prime_fds(_EGLDisplay *disp, _EGLContext *ctx,
--                                  struct ANativeWindowBuffer *buf, int num_fds, int fds[3])
-+                                  struct ANativeWindowBuffer *buf)
- {
-    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-    int pitches[4] = { 0 }, offsets[4] = { 0 };
-    unsigned error;
-+   int num_fds;
-+   int fds[3];
-+
-+   num_fds = get_native_buffer_fds(buf, fds);
-+   if (num_fds == 0)
-+      return NULL;
- 
-    if (is_yuv(buf->format)) {
-       __DRIimage *image;
-@@ -1005,9 +1011,6 @@ dri2_create_image_android_native_buffer(_EGLDisplay *disp,
-                                         _EGLContext *ctx,
-                                         struct ANativeWindowBuffer *buf)
- {
--   int fds[3];
--   unsigned num_fds;
--
-    if (ctx != NULL) {
-       /* From the EGL_ANDROID_image_native_buffer spec:
-        *
-@@ -1026,15 +1029,10 @@ dri2_create_image_android_native_buffer(_EGLDisplay *disp,
-       return NULL;
-    }
- 
--   num_fds = get_native_buffer_fds(buf, fds);
--   if (num_fds > 0) {
--      __DRIimage *dri_image =
--         droid_create_image_from_prime_fds(disp, ctx, buf, num_fds, fds);
--      if (!dri_image)
--         return EGL_NO_IMAGE_KHR;
--
-+   __DRIimage *dri_image =
-+      droid_create_image_from_prime_fds(disp, ctx, buf);
-+   if (dri_image)
-       return dri2_create_image_from_dri(disp, dri_image);
--   }
- 
- #ifdef HAVE_DRM_GRALLOC
-    return droid_create_image_from_name(disp, ctx, buf);
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Move-droid_create_image_from_prime_fds-f.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Move-droid_create_image_from_prime_fds-f.patch
deleted file mode 100644
index f3e7150..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Move-droid_create_image_from_prime_fds-f.patch
+++ /dev/null
@@ -1,326 +0,0 @@
-From 95194827ba10969185a324ea8ee559324752bacd Mon Sep 17 00:00:00 2001
-From: "Kristian H. Kristensen" <hoegsberg@google.com>
-Date: Mon, 10 Aug 2020 18:42:33 -0700
-Subject: [PATCH 05/11] egl/android: Move droid_create_image_from_prime_fds()
- function up
-
-We'll use it for get_back_bo() next.
-
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6055>
----
- src/egl/drivers/dri2/platform_android.c | 292 ++++++++++++------------
- 1 file changed, 146 insertions(+), 146 deletions(-)
-
-diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
-index 01a62cf0d7b..b77acb4c273 100644
---- a/src/egl/drivers/dri2/platform_android.c
-+++ b/src/egl/drivers/dri2/platform_android.c
-@@ -204,6 +204,152 @@ get_native_buffer_name(struct ANativeWindowBuffer *buf)
- }
- #endif /* HAVE_DRM_GRALLOC */
- 
-+static __DRIimage *
-+droid_create_image_from_prime_fds_yuv(_EGLDisplay *disp,
-+                                     struct ANativeWindowBuffer *buf,
-+                                     int num_fds, int fds[3])
-+{
-+   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-+   struct android_ycbcr ycbcr;
-+   int offsets[3];
-+   int pitches[3];
-+   enum chroma_order chroma_order;
-+   int fourcc;
-+   int ret;
-+   unsigned error;
-+
-+   if (!dri2_dpy->gralloc->lock_ycbcr) {
-+      _eglLog(_EGL_WARNING, "Gralloc does not support lock_ycbcr");
-+      return NULL;
-+   }
-+
-+   memset(&ycbcr, 0, sizeof(ycbcr));
-+   ret = dri2_dpy->gralloc->lock_ycbcr(dri2_dpy->gralloc, buf->handle,
-+                                       0, 0, 0, 0, 0, &ycbcr);
-+   if (ret) {
-+      /* HACK: See droid_create_image_from_prime_fds() and
-+       * https://issuetracker.google.com/32077885.*/
-+      if (buf->format == HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED)
-+         return NULL;
-+
-+      _eglLog(_EGL_WARNING, "gralloc->lock_ycbcr failed: %d", ret);
-+      return NULL;
-+   }
-+   dri2_dpy->gralloc->unlock(dri2_dpy->gralloc, buf->handle);
-+
-+   /* When lock_ycbcr's usage argument contains no SW_READ/WRITE flags
-+    * it will return the .y/.cb/.cr pointers based on a NULL pointer,
-+    * so they can be interpreted as offsets. */
-+   offsets[0] = (size_t)ycbcr.y;
-+   /* We assume here that all the planes are located in one DMA-buf. */
-+   if ((size_t)ycbcr.cr < (size_t)ycbcr.cb) {
-+      chroma_order = YCrCb;
-+      offsets[1] = (size_t)ycbcr.cr;
-+      offsets[2] = (size_t)ycbcr.cb;
-+   } else {
-+      chroma_order = YCbCr;
-+      offsets[1] = (size_t)ycbcr.cb;
-+      offsets[2] = (size_t)ycbcr.cr;
-+   }
-+
-+   /* .ystride is the line length (in bytes) of the Y plane,
-+    * .cstride is the line length (in bytes) of any of the remaining
-+    * Cb/Cr/CbCr planes, assumed to be the same for Cb and Cr for fully
-+    * planar formats. */
-+   pitches[0] = ycbcr.ystride;
-+   pitches[1] = pitches[2] = ycbcr.cstride;
-+
-+   /* .chroma_step is the byte distance between the same chroma channel
-+    * values of subsequent pixels, assumed to be the same for Cb and Cr. */
-+   fourcc = get_fourcc_yuv(buf->format, chroma_order, ycbcr.chroma_step);
-+   if (fourcc == -1) {
-+      _eglLog(_EGL_WARNING, "unsupported YUV format, native = %x, chroma_order = %s, chroma_step = %d",
-+              buf->format, chroma_order == YCbCr ? "YCbCr" : "YCrCb", ycbcr.chroma_step);
-+      return NULL;
-+   }
-+
-+   /*
-+    * Since this is EGL_NATIVE_BUFFER_ANDROID don't assume that
-+    * the single-fd case cannot happen.  So handle eithe single
-+    * fd or fd-per-plane case:
-+    */
-+   if (num_fds == 1) {
-+      fds[2] = fds[1] = fds[0];
-+   } else {
-+      int expected_planes = (ycbcr.chroma_step == 2) ? 2 : 3;
-+      assert(num_fds == expected_planes);
-+   }
-+
-+   return dri2_dpy->image->createImageFromDmaBufs(dri2_dpy->dri_screen,
-+      buf->width, buf->height, fourcc,
-+      fds, num_fds, pitches, offsets,
-+      EGL_ITU_REC601_EXT,
-+      EGL_YUV_NARROW_RANGE_EXT,
-+      EGL_YUV_CHROMA_SITING_0_EXT,
-+      EGL_YUV_CHROMA_SITING_0_EXT,
-+      &error,
-+      NULL);
-+}
-+
-+static __DRIimage *
-+droid_create_image_from_prime_fds(_EGLDisplay *disp,
-+                                  struct ANativeWindowBuffer *buf)
-+{
-+   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-+   int pitches[4] = { 0 }, offsets[4] = { 0 };
-+   unsigned error;
-+   int num_fds;
-+   int fds[3];
-+
-+   num_fds = get_native_buffer_fds(buf, fds);
-+   if (num_fds == 0)
-+      return NULL;
-+
-+   if (is_yuv(buf->format)) {
-+      __DRIimage *image;
-+
-+      image = droid_create_image_from_prime_fds_yuv(disp, buf, num_fds, fds);
-+      /*
-+       * HACK: https://issuetracker.google.com/32077885
-+       * There is no API available to properly query the IMPLEMENTATION_DEFINED
-+       * format. As a workaround we rely here on gralloc allocating either
-+       * an arbitrary YCbCr 4:2:0 or RGBX_8888, with the latter being recognized
-+       * by lock_ycbcr failing.
-+       */
-+      if (image || buf->format != HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED)
-+         return image;
-+   }
-+
-+   /*
-+    * Non-YUV formats could *also* have multiple planes, such as ancillary
-+    * color compression state buffer, but the rest of the code isn't ready
-+    * yet to deal with modifiers:
-+    */
-+   assert(num_fds == 1);
-+
-+   const int fourcc = get_fourcc(buf->format);
-+   if (fourcc == -1) {
-+      _eglError(EGL_BAD_PARAMETER, "eglCreateEGLImageKHR");
-+      return NULL;
-+   }
-+
-+   pitches[0] = buf->stride * get_format_bpp(buf->format);
-+   if (pitches[0] == 0) {
-+      _eglError(EGL_BAD_PARAMETER, "eglCreateEGLImageKHR");
-+      return NULL;
-+   }
-+
-+   return dri2_dpy->image->createImageFromDmaBufs(dri2_dpy->dri_screen,
-+      buf->width, buf->height, fourcc,
-+      fds, num_fds, pitches, offsets,
-+      EGL_ITU_REC601_EXT,
-+      EGL_YUV_NARROW_RANGE_EXT,
-+      EGL_YUV_CHROMA_SITING_0_EXT,
-+      EGL_YUV_CHROMA_SITING_0_EXT,
-+      &error,
-+      NULL);
-+}
-+
- static EGLBoolean
- droid_window_dequeue_buffer(struct dri2_egl_surface *dri2_surf)
- {
-@@ -788,152 +934,6 @@ droid_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
-    return EGL_TRUE;
- }
- 
--static __DRIimage *
--droid_create_image_from_prime_fds_yuv(_EGLDisplay *disp,
--                                     struct ANativeWindowBuffer *buf,
--                                     int num_fds, int fds[3])
--{
--   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
--   struct android_ycbcr ycbcr;
--   int offsets[3];
--   int pitches[3];
--   enum chroma_order chroma_order;
--   int fourcc;
--   int ret;
--   unsigned error;
--
--   if (!dri2_dpy->gralloc->lock_ycbcr) {
--      _eglLog(_EGL_WARNING, "Gralloc does not support lock_ycbcr");
--      return NULL;
--   }
--
--   memset(&ycbcr, 0, sizeof(ycbcr));
--   ret = dri2_dpy->gralloc->lock_ycbcr(dri2_dpy->gralloc, buf->handle,
--                                       0, 0, 0, 0, 0, &ycbcr);
--   if (ret) {
--      /* HACK: See droid_create_image_from_prime_fds() and
--       * https://issuetracker.google.com/32077885.*/
--      if (buf->format == HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED)
--         return NULL;
--
--      _eglLog(_EGL_WARNING, "gralloc->lock_ycbcr failed: %d", ret);
--      return NULL;
--   }
--   dri2_dpy->gralloc->unlock(dri2_dpy->gralloc, buf->handle);
--
--   /* When lock_ycbcr's usage argument contains no SW_READ/WRITE flags
--    * it will return the .y/.cb/.cr pointers based on a NULL pointer,
--    * so they can be interpreted as offsets. */
--   offsets[0] = (size_t)ycbcr.y;
--   /* We assume here that all the planes are located in one DMA-buf. */
--   if ((size_t)ycbcr.cr < (size_t)ycbcr.cb) {
--      chroma_order = YCrCb;
--      offsets[1] = (size_t)ycbcr.cr;
--      offsets[2] = (size_t)ycbcr.cb;
--   } else {
--      chroma_order = YCbCr;
--      offsets[1] = (size_t)ycbcr.cb;
--      offsets[2] = (size_t)ycbcr.cr;
--   }
--
--   /* .ystride is the line length (in bytes) of the Y plane,
--    * .cstride is the line length (in bytes) of any of the remaining
--    * Cb/Cr/CbCr planes, assumed to be the same for Cb and Cr for fully
--    * planar formats. */
--   pitches[0] = ycbcr.ystride;
--   pitches[1] = pitches[2] = ycbcr.cstride;
--
--   /* .chroma_step is the byte distance between the same chroma channel
--    * values of subsequent pixels, assumed to be the same for Cb and Cr. */
--   fourcc = get_fourcc_yuv(buf->format, chroma_order, ycbcr.chroma_step);
--   if (fourcc == -1) {
--      _eglLog(_EGL_WARNING, "unsupported YUV format, native = %x, chroma_order = %s, chroma_step = %d",
--              buf->format, chroma_order == YCbCr ? "YCbCr" : "YCrCb", ycbcr.chroma_step);
--      return NULL;
--   }
--
--   /*
--    * Since this is EGL_NATIVE_BUFFER_ANDROID don't assume that
--    * the single-fd case cannot happen.  So handle eithe single
--    * fd or fd-per-plane case:
--    */
--   if (num_fds == 1) {
--      fds[2] = fds[1] = fds[0];
--   } else {
--      int expected_planes = (ycbcr.chroma_step == 2) ? 2 : 3;
--      assert(num_fds == expected_planes);
--   }
--
--   return dri2_dpy->image->createImageFromDmaBufs(dri2_dpy->dri_screen,
--      buf->width, buf->height, fourcc,
--      fds, num_fds, pitches, offsets,
--      EGL_ITU_REC601_EXT,
--      EGL_YUV_NARROW_RANGE_EXT,
--      EGL_YUV_CHROMA_SITING_0_EXT,
--      EGL_YUV_CHROMA_SITING_0_EXT,
--      &error,
--      NULL);
--}
--
--static __DRIimage *
--droid_create_image_from_prime_fds(_EGLDisplay *disp,
--                                  struct ANativeWindowBuffer *buf)
--{
--   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
--   int pitches[4] = { 0 }, offsets[4] = { 0 };
--   unsigned error;
--   int num_fds;
--   int fds[3];
--
--   num_fds = get_native_buffer_fds(buf, fds);
--   if (num_fds == 0)
--      return NULL;
--
--   if (is_yuv(buf->format)) {
--      __DRIimage *image;
--
--      image = droid_create_image_from_prime_fds_yuv(disp, buf, num_fds, fds);
--      /*
--       * HACK: https://issuetracker.google.com/32077885
--       * There is no API available to properly query the IMPLEMENTATION_DEFINED
--       * format. As a workaround we rely here on gralloc allocating either
--       * an arbitrary YCbCr 4:2:0 or RGBX_8888, with the latter being recognized
--       * by lock_ycbcr failing.
--       */
--      if (image || buf->format != HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED)
--         return image;
--   }
--
--   /*
--    * Non-YUV formats could *also* have multiple planes, such as ancillary
--    * color compression state buffer, but the rest of the code isn't ready
--    * yet to deal with modifiers:
--    */
--   assert(num_fds == 1);
--
--   const int fourcc = get_fourcc(buf->format);
--   if (fourcc == -1) {
--      _eglError(EGL_BAD_PARAMETER, "eglCreateEGLImageKHR");
--      return NULL;
--   }
--
--   pitches[0] = buf->stride * get_format_bpp(buf->format);
--   if (pitches[0] == 0) {
--      _eglError(EGL_BAD_PARAMETER, "eglCreateEGLImageKHR");
--      return NULL;
--   }
--
--   return dri2_dpy->image->createImageFromDmaBufs(dri2_dpy->dri_screen,
--      buf->width, buf->height, fourcc,
--      fds, num_fds, pitches, offsets,
--      EGL_ITU_REC601_EXT,
--      EGL_YUV_NARROW_RANGE_EXT,
--      EGL_YUV_CHROMA_SITING_0_EXT,
--      EGL_YUV_CHROMA_SITING_0_EXT,
--      &error,
--      NULL);
--}
--
- #ifdef HAVE_DRM_GRALLOC
- static _EGLImage *
- droid_create_image_from_name(_EGLDisplay *disp,
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Simplify-droid_create_image_from_name-pa.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Simplify-droid_create_image_from_name-pa.patch
deleted file mode 100644
index 8320a7e3..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Simplify-droid_create_image_from_name-pa.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 4b9dbe0bed5dac7f7a669b7cd1e8b28a5dee05de Mon Sep 17 00:00:00 2001
-From: "Kristian H. Kristensen" <hoegsberg@google.com>
-Date: Thu, 6 Aug 2020 17:39:47 -0700
-Subject: [PATCH 04/11] egl/android: Simplify droid_create_image_from_name()
- path
-
-This can now return an __DRIimage which we'll wrap in the shared code
-in dri2_create_image_android_native_buffer().
-
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6055>
----
- src/egl/drivers/dri2/platform_android.c | 29 +++++++------------------
- 1 file changed, 8 insertions(+), 21 deletions(-)
-
-diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
-index 6bcc3143606..01a62cf0d7b 100644
---- a/src/egl/drivers/dri2/platform_android.c
-+++ b/src/egl/drivers/dri2/platform_android.c
-@@ -940,7 +940,7 @@ droid_create_image_from_name(_EGLDisplay *disp,
-                              struct ANativeWindowBuffer *buf)
- {
-    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
--   struct dri2_egl_image *dri2_img;
-+   __DRIimage *dri_image;
-    int name;
-    int format;
- 
-@@ -954,15 +954,7 @@ droid_create_image_from_name(_EGLDisplay *disp,
-    if (format == -1)
-        return NULL;
- 
--   dri2_img = calloc(1, sizeof(*dri2_img));
--   if (!dri2_img) {
--      _eglError(EGL_BAD_ALLOC, "droid_create_image_mesa_drm");
--      return NULL;
--   }
--
--   _eglInitImage(&dri2_img->base, disp);
--
--   dri2_img->dri_image =
-+   return
-       dri2_dpy->image->createImageFromName(dri2_dpy->dri_screen,
- 					   buf->width,
- 					   buf->height,
-@@ -970,13 +962,6 @@ droid_create_image_from_name(_EGLDisplay *disp,
- 					   name,
- 					   buf->stride,
- 					   dri2_img);
--   if (!dri2_img->dri_image) {
--      free(dri2_img);
--      _eglError(EGL_BAD_ALLOC, "droid_create_image_mesa_drm");
--      return NULL;
--   }
--
--   return &dri2_img->base;
- }
- #endif /* HAVE_DRM_GRALLOC */
- 
-@@ -1031,14 +1016,16 @@ dri2_create_image_android_native_buffer(_EGLDisplay *disp,
- 
-    __DRIimage *dri_image =
-       droid_create_image_from_prime_fds(disp, buf);
-+
-+#ifdef HAVE_DRM_GRALLOC
-+   if (dri_image == NULL)
-+      dri_image = droid_create_image_from_name(disp, buf);
-+#endif
-+
-    if (dri_image)
-       return dri2_create_image_from_dri(disp, dri_image);
- 
--#ifdef HAVE_DRM_GRALLOC
--   return droid_create_image_from_name(disp, buf);
--#else
-    return NULL;
--#endif
- }
- 
- static _EGLImage *
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Use-droid_create_image_from_prime_fds-in.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Use-droid_create_image_from_prime_fds-in.patch
deleted file mode 100644
index cd9e9770..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-Use-droid_create_image_from_prime_fds-in.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-From 9e39ddf9e3940c705eb584a6b50ab4f2726049ea Mon Sep 17 00:00:00 2001
-From: "Kristian H. Kristensen" <hoegsberg@google.com>
-Date: Mon, 10 Aug 2020 18:44:34 -0700
-Subject: [PATCH 06/11] egl/android: Use droid_create_image_from_prime_fds() in
- get_back_bo()
-
-This function wants to create a __DRIimage for an ANativeWindowBuffer,
-which is mostly the same logic as when we create an EGLImage for an
-ANativeWindowBuffer.  Reuse droid_create_image_from_prime_fds().
-
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6055>
----
- src/egl/drivers/dri2/platform_android.c | 33 ++-----------------------
- 1 file changed, 2 insertions(+), 31 deletions(-)
-
-diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
-index b77acb4c273..73955b6299e 100644
---- a/src/egl/drivers/dri2/platform_android.c
-+++ b/src/egl/drivers/dri2/platform_android.c
-@@ -735,11 +735,7 @@ get_front_bo(struct dri2_egl_surface *dri2_surf, unsigned int format)
- static int
- get_back_bo(struct dri2_egl_surface *dri2_surf)
- {
--   struct dri2_egl_display *dri2_dpy =
--      dri2_egl_display(dri2_surf->base.Resource.Display);
--   int fourcc, pitch;
--   int offset = 0, fds[3];
--   unsigned num_fds;
-+   _EGLDisplay *disp = dri2_surf->base.Resource.Display;
- 
-    if (dri2_surf->dri_image_back)
-       return 0;
-@@ -750,33 +746,8 @@ get_back_bo(struct dri2_egl_surface *dri2_surf)
-          return -1;
-       }
- 
--      num_fds = get_native_buffer_fds(dri2_surf->buffer, fds);
--      if (num_fds == 0) {
--         _eglLog(_EGL_WARNING, "Could not get native buffer FD");
--         return -1;
--      }
--
--      fourcc = get_fourcc(dri2_surf->buffer->format);
--
--      pitch = dri2_surf->buffer->stride *
--         get_format_bpp(dri2_surf->buffer->format);
--
--      if (fourcc == -1 || pitch == 0) {
--         _eglLog(_EGL_WARNING, "Invalid buffer fourcc(%x) or pitch(%d)",
--                 fourcc, pitch);
--         return -1;
--      }
--
-       dri2_surf->dri_image_back =
--         dri2_dpy->image->createImageFromFds(dri2_dpy->dri_screen,
--                                             dri2_surf->base.Width,
--                                             dri2_surf->base.Height,
--                                             fourcc,
--                                             fds,
--                                             num_fds,
--                                             &pitch,
--                                             &offset,
--                                             dri2_surf);
-+         droid_create_image_from_prime_fds(disp, dri2_surf->buffer);
-       if (!dri2_surf->dri_image_back) {
-          _eglLog(_EGL_WARNING, "failed to create DRI image from FD");
-          return -1;
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-check-front-rendering-support-for-cros-g.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-check-front-rendering-support-for-cros-g.patch
new file mode 100644
index 0000000..5bcd9b5
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-check-front-rendering-support-for-cros-g.patch
@@ -0,0 +1,116 @@
+From f61337b54923fcfe4837ee9f555857268130dd95 Mon Sep 17 00:00:00 2001
+From: Yiwei Zhang <zzyiwei@chromium.org>
+Date: Thu, 13 May 2021 22:57:44 +0000
+Subject: [PATCH 3/3] egl/android: check front rendering support for cros
+ gralloc
+
+Enable EGL_KHR_mutable_render_buffer when below conditions are met:
+1. Driver part implementation of this extension is available
+2. Loader part implementation of this extension is available
+3. ClientAPIs must be OpenGL ES bits (ES, ES2 or ES3)
+4. Gralloc is cros gralloc and it supports front render usage query
+
+(4) is optional as long as another gralloc supports similar query.
+
+Upon window surface creation, if the surface type has mutable render
+buffer, then append the cached front rendering usage to the existing
+usage and properly set to the ANativeWindow.
+
+Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
+Reviewed-by: Emma Anholt <emma@anholt.net>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10685>
+---
+ src/egl/drivers/dri2/egl_dri2.h         |  2 ++
+ src/egl/drivers/dri2/platform_android.c | 47 +++++++++++++++++++++++--
+ 2 files changed, 47 insertions(+), 2 deletions(-)
+
+diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h
+index d7f9696da93..7d328040c2c 100644
+--- a/src/egl/drivers/dri2/egl_dri2.h
++++ b/src/egl/drivers/dri2/egl_dri2.h
+@@ -247,6 +247,8 @@ struct dri2_egl_display
+ 
+ #ifdef HAVE_ANDROID_PLATFORM
+    const gralloc_module_t *gralloc;
++   /* gralloc vendor usage bit for front rendering */
++   uint32_t front_rendering_usage;
+ #endif
+ 
+    bool                      is_render_node;
+diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
+index 2fff5ac4dc4..585c4432a37 100644
+--- a/src/egl/drivers/dri2/platform_android.c
++++ b/src/egl/drivers/dri2/platform_android.c
+@@ -346,6 +346,8 @@ droid_create_image_from_prime_fds(_EGLDisplay *disp,
+ static const char cros_gralloc_module_name[] = "CrOS Gralloc";
+ 
+ #define CROS_GRALLOC_DRM_GET_BUFFER_INFO 4
++#define CROS_GRALLOC_DRM_GET_USAGE 5
++#define CROS_GRALLOC_DRM_GET_USAGE_FRONT_RENDERING_BIT 0x1
+ 
+ struct cros_gralloc0_buffer_info {
+    uint32_t drm_fourcc;
+@@ -632,6 +634,10 @@ droid_create_surface(_EGLDisplay *disp, EGLint type, _EGLConfig *conf,
+       uint32_t usage = strcmp(dri2_dpy->driver_name, "kms_swrast") == 0
+             ? GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN
+             : GRALLOC_USAGE_HW_RENDER;
++
++      if (conf->SurfaceType & EGL_MUTABLE_RENDER_BUFFER_BIT_KHR)
++         usage |= dri2_dpy->front_rendering_usage;
++
+       native_window_set_usage(window, usage);
+    }
+ 
+@@ -1671,10 +1677,47 @@ dri2_initialize_android(_EGLDisplay *disp)
+    }
+ 
+    disp->Extensions.KHR_image = EGL_TRUE;
++
++   dri2_dpy->front_rendering_usage = 0;
+ #if ANDROID_API_LEVEL >= 24
+    if (dri2_dpy->mutable_render_buffer &&
+-       dri2_dpy->loader_extensions == droid_image_loader_extensions) {
+-      disp->Extensions.KHR_mutable_render_buffer = EGL_TRUE;
++       dri2_dpy->loader_extensions == droid_image_loader_extensions &&
++       /* In big GL, front rendering is done at the core API level by directly
++        * rendering on the front buffer. However, in ES, the front buffer is
++        * completely inaccessible through the core ES API.
++        *
++        * EGL_KHR_mutable_render_buffer is Android's attempt to re-introduce
++        * front rendering into ES by squeezing into EGL. Unlike big GL, this
++        * extension redirects GL_BACK used by ES for front rendering. Thus we
++        * restrict the enabling of this extension to ES only.
++        */
++       (disp->ClientAPIs & ~(EGL_OPENGL_ES_BIT | EGL_OPENGL_ES2_BIT |
++                             EGL_OPENGL_ES3_BIT_KHR)) == 0) {
++      /* For cros gralloc, if the front rendering query is supported, then all
++       * available window surface configs support front rendering because:
++       *
++       * 1) EGL queries cros gralloc for the front rendering usage bit here
++       * 2) EGL combines the front rendering usage bit with the existing usage
++       *    if the window surface requests mutable render buffer
++       * 3) EGL sets the combined usage onto the ANativeWindow and the next
++       *    dequeueBuffer will ask gralloc for an allocation/re-allocation with
++       *    the new combined usage
++       * 4) cros gralloc(on top of minigbm) resolves the front rendering usage
++       *    bit into either BO_USE_FRONT_RENDERING or BO_USE_LINEAR based on
++       *    the format support checking.
++       *
++       * So at least we can force BO_USE_LINEAR as the fallback.
++       */
++      uint32_t front_rendering_usage = 0;
++      if (!strcmp(dri2_dpy->gralloc->common.name, cros_gralloc_module_name) &&
++          dri2_dpy->gralloc->perform &&
++          dri2_dpy->gralloc->perform(
++                dri2_dpy->gralloc, CROS_GRALLOC_DRM_GET_USAGE,
++                CROS_GRALLOC_DRM_GET_USAGE_FRONT_RENDERING_BIT,
++                &front_rendering_usage) == 0) {
++         dri2_dpy->front_rendering_usage = front_rendering_usage;
++         disp->Extensions.KHR_mutable_render_buffer = EGL_TRUE;
++      }
+    }
+ #endif
+ 
+-- 
+2.32.0.rc0.204.g9fa02ecfa5-goog
+
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-don-t-pass-loaderPriv-in-get_front_bo.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-don-t-pass-loaderPriv-in-get_front_bo.patch
deleted file mode 100644
index 1172859..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-don-t-pass-loaderPriv-in-get_front_bo.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 937af204a97a9fdb175417905b8f408e5ef3b11b Mon Sep 17 00:00:00 2001
-From: David Stevens <stevensd@chromium.org>
-Date: Thu, 26 Nov 2020 18:29:31 +0900
-Subject: [PATCH 08/11] egl/android: don't pass loaderPriv in get_front_bo
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This is a noop, as no loader extensions pass a __DRIimage's
-loader_private data back to the loader.
-
-Signed-off-by: David Stevens <stevensd@chromium.org>
-Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7805>
----
- src/egl/drivers/dri2/platform_android.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
-index 3b2dffad212..0395b5246e4 100644
---- a/src/egl/drivers/dri2/platform_android.c
-+++ b/src/egl/drivers/dri2/platform_android.c
-@@ -787,7 +787,7 @@ get_front_bo(struct dri2_egl_surface *dri2_surf, unsigned int format)
-                                               dri2_surf->base.Height,
-                                               format,
-                                               0,
--                                              dri2_surf);
-+                                              NULL);
-       if (!dri2_surf->dri_image_front) {
-          _eglLog(_EGL_WARNING, "dri2_image_front allocation failed");
-          return -1;
--- 
-2.29.2.684.gfbc64c5ab5-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-set-window-usage-flags.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-set-window-usage-flags.patch
deleted file mode 100644
index 58268c7..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-android-set-window-usage-flags.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 31c420565c713a0398c7b872119acaf4f8dc3978 Mon Sep 17 00:00:00 2001
-From: David Stevens <stevensd@chromium.org>
-Date: Thu, 5 Mar 2020 12:52:38 +0900
-Subject: [PATCH] egl/android: set window usage flags
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-When creating an egl surface from an ANativeWindow, the window's usage
-flags need to be set so that buffers are allocated properly.
-
-Signed-off-by: David Stevens <stevensd@chromium.org>
-Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
-Reviewed-by: Lepton Wu <lepton@chromium.org>
----
- src/egl/drivers/dri2/platform_android.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/egl/drivers/dri2/platform_android.c b/src/egl/drivers/dri2/platform_android.c
-index 8973017324b..c682b06d200 100644
---- a/src/egl/drivers/dri2/platform_android.c
-+++ b/src/egl/drivers/dri2/platform_android.c
-@@ -432,6 +432,11 @@ droid_create_surface(_EGLDriver *drv, _EGLDisplay *disp, EGLint type,
- 
-       window->query(window, NATIVE_WINDOW_WIDTH, &dri2_surf->base.Width);
-       window->query(window, NATIVE_WINDOW_HEIGHT, &dri2_surf->base.Height);
-+
-+      uint32_t usage = strcmp(dri2_dpy->driver_name, "kms_swrast") == 0
-+            ? GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_OFTEN
-+            : GRALLOC_USAGE_HW_RENDER;
-+      native_window_set_usage(window, usage);
-    }
- 
-    config = dri2_get_dri_config(dri2_conf, type,
--- 
-2.25.1.481.gfbce0eb801-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-dri2-fix-image-loaderPrivate-type-mixup.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-dri2-fix-image-loaderPrivate-type-mixup.patch
deleted file mode 100644
index 4442375..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-egl-dri2-fix-image-loaderPrivate-type-mixup.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 8dcc949d7066ab1b5b45c22e62a2bea8febfc11e Mon Sep 17 00:00:00 2001
-From: David Stevens <stevensd@chromium.org>
-Date: Wed, 23 Dec 2020 23:38:32 +0900
-Subject: [PATCH] egl/dri2: fix image loaderPrivate type mixup
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The first callback which uses an image's loaderPrivate data was recently
-added. Prior to this, dri2_create_image_khr_texture had been setting the
-unused loaderPrivate field on the image it creates. This caused a
-pointer type mixup in platform_android when it started using the new
-callback. Fix this by no longer unnecessarily setting loaderPrivate in
-dri2_create_image_khr_texture.
-
-Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4010
-Fixes: a2fb87eea6d ("egl/android: implement image cleanup callback")
-Reviewed-by: Tapani Pälli <tapani.palli@intel.com>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8211>
----
- src/egl/drivers/dri2/egl_dri2.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
-index d57f1486677..18f7f6932d9 100644
---- a/src/egl/drivers/dri2/egl_dri2.c
-+++ b/src/egl/drivers/dri2/egl_dri2.c
-@@ -2389,7 +2389,7 @@ dri2_create_image_khr_texture(_EGLDisplay *disp, _EGLContext *ctx,
-                                               depth,
-                                               attrs.GLTextureLevel,
-                                               &error,
--                                              dri2_img);
-+                                              NULL);
-    dri2_create_image_khr_texture_error(error);
- 
-    if (!dri2_img->dri_image) {
--- 
-2.29.2.729.g45daf8777d-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-gallium-dri-implement-EGL_KHR_mutable_render_buffer.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-gallium-dri-implement-EGL_KHR_mutable_render_buffer.patch
new file mode 100644
index 0000000..27c6d2e
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/files/UPSTREAM-gallium-dri-implement-EGL_KHR_mutable_render_buffer.patch
@@ -0,0 +1,146 @@
+From abec42c9a300b431751a940679628218b73ea016 Mon Sep 17 00:00:00 2001
+From: Yiwei Zhang <zzyiwei@chromium.org>
+Date: Thu, 13 May 2021 18:38:50 +0000
+Subject: [PATCH 2/3] gallium/dri: implement EGL_KHR_mutable_render_buffer
+
+Tested with low-lantency stylus apps with this extension enabled, no
+regression on the cts.
+
+Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
+Reviewed-by: Emma Anholt <emma@anholt.net>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10685>
+---
+ src/gallium/frontends/dri/dri2.c        | 53 ++++++++++++++++++++-----
+ src/gallium/frontends/dri/dri_context.h |  6 +++
+ src/gallium/frontends/dri/dri_screen.h  |  2 +-
+ 3 files changed, 51 insertions(+), 10 deletions(-)
+
+diff --git a/src/gallium/frontends/dri/dri2.c b/src/gallium/frontends/dri/dri2.c
+index 0a84e0f2c9c..b664ad0dbe9 100644
+--- a/src/gallium/frontends/dri/dri2.c
++++ b/src/gallium/frontends/dri/dri2.c
+@@ -506,6 +506,21 @@ dri2_allocate_textures(struct dri_context *ctx,
+          pipe_resource_reference(buf, texture);
+       }
+ 
++      if (images.image_mask & __DRI_IMAGE_BUFFER_SHARED) {
++         struct pipe_resource **buf =
++            &drawable->textures[ST_ATTACHMENT_BACK_LEFT];
++         struct pipe_resource *texture = images.back->texture;
++
++         dri_drawable->w = texture->width0;
++         dri_drawable->h = texture->height0;
++
++         pipe_resource_reference(buf, texture);
++
++         ctx->is_shared_buffer_bound = true;
++      } else {
++         ctx->is_shared_buffer_bound = false;
++      }
++
+       /* Note: if there is both a back and a front buffer,
+        * then they have the same size.
+        */
+@@ -680,26 +695,41 @@ dri2_flush_frontbuffer(struct dri_context *ctx,
+    __DRIdrawable *dri_drawable = drawable->dPriv;
+    const __DRIimageLoaderExtension *image = drawable->sPriv->image.loader;
+    const __DRIdri2LoaderExtension *loader = drawable->sPriv->dri2.loader;
++   const __DRImutableRenderBufferLoaderExtension *shared_buffer_loader =
++      drawable->sPriv->mutableRenderBuffer.loader;
+    struct pipe_context *pipe = ctx->st->pipe;
++   struct pipe_fence_handle *fence = NULL;
++   int fence_fd = -1;
+ 
+-   if (statt != ST_ATTACHMENT_FRONT_LEFT)
+-      return false;
++   /* We need to flush for front buffer rendering when either we're using the
++    * front buffer at the GL API level, or when EGL_KHR_mutable_render_buffer
++    * has redirected GL_BACK to the front buffer.
++    */
++   if (statt != ST_ATTACHMENT_FRONT_LEFT &&
++       (!ctx->is_shared_buffer_bound || statt != ST_ATTACHMENT_BACK_LEFT))
++         return false;
+ 
+    if (drawable->stvis.samples > 1) {
+-      /* Resolve the front buffer. */
+-      dri_pipe_blit(ctx->st->pipe,
+-                    drawable->textures[ST_ATTACHMENT_FRONT_LEFT],
+-                    drawable->msaa_textures[ST_ATTACHMENT_FRONT_LEFT]);
++      /* Resolve the buffer used for front rendering. */
++      dri_pipe_blit(ctx->st->pipe, drawable->textures[statt],
++                    drawable->msaa_textures[statt]);
+    }
+ 
+-   if (drawable->textures[ST_ATTACHMENT_FRONT_LEFT]) {
+-      pipe->flush_resource(pipe, drawable->textures[ST_ATTACHMENT_FRONT_LEFT]);
++   if (drawable->textures[statt]) {
++      pipe->flush_resource(pipe, drawable->textures[statt]);
+    }
+ 
+-   pipe->flush(pipe, NULL, 0);
++   pipe->flush(pipe, ctx->is_shared_buffer_bound ? &fence : NULL, 0);
+ 
+    if (image) {
+       image->flushFrontBuffer(dri_drawable, dri_drawable->loaderPrivate);
++      if (ctx->is_shared_buffer_bound) {
++         if (fence)
++            fence_fd = pipe->screen->fence_get_fd(pipe->screen, fence);
++
++         shared_buffer_loader->displaySharedBuffer(dri_drawable, fence_fd,
++                                                   dri_drawable->loaderPrivate);
++      }
+    }
+    else if (loader->flushFrontBuffer) {
+       loader->flushFrontBuffer(dri_drawable, dri_drawable->loaderPrivate);
+@@ -2178,6 +2208,10 @@ static const __DRI2blobExtension driBlobExtension = {
+    .set_cache_funcs = set_blob_cache_funcs
+ };
+ 
++static const __DRImutableRenderBufferDriverExtension driMutableRenderBufferExtension = {
++   .base = { __DRI_MUTABLE_RENDER_BUFFER_DRIVER, 1 },
++};
++
+ /*
+  * Backend function init_screen.
+  */
+@@ -2192,6 +2226,7 @@ static const __DRIextension *dri_screen_extensions_base[] = {
+    &dri2InteropExtension.base,
+    &dri2NoErrorExtension.base,
+    &driBlobExtension.base,
++   &driMutableRenderBufferExtension.base,
+ };
+ 
+ /**
+diff --git a/src/gallium/frontends/dri/dri_context.h b/src/gallium/frontends/dri/dri_context.h
+index 96e21e0695c..4b2b045092c 100644
+--- a/src/gallium/frontends/dri/dri_context.h
++++ b/src/gallium/frontends/dri/dri_context.h
+@@ -52,6 +52,12 @@ struct dri_context
+ 
+    unsigned int bind_count;
+ 
++   /**
++    * True if the __DRIdrawable's current __DRIimageBufferMask is
++    * __DRI_IMAGE_BUFFER_SHARED.
++    */
++   bool is_shared_buffer_bound;
++
+    /* gallium */
+    struct st_api *stapi;
+    struct st_context_iface *st;
+diff --git a/src/gallium/frontends/dri/dri_screen.h b/src/gallium/frontends/dri/dri_screen.h
+index c967e9416c8..c6c08f9e3ea 100644
+--- a/src/gallium/frontends/dri/dri_screen.h
++++ b/src/gallium/frontends/dri/dri_screen.h
+@@ -87,7 +87,7 @@ struct dri_screen
+    __DRI2bufferDamageExtension buffer_damage_extension;
+ 
+    /* DRI exts on this screen. Populated at init time based on device caps. */
+-   const __DRIextension *screen_extensions[13];
++   const __DRIextension *screen_extensions[14];
+ 
+    /* OpenCL interop */
+    mtx_t opencl_func_mutex;
+-- 
+2.32.0.rc0.204.g9fa02ecfa5-goog
+
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-mapi-Return-NULL-function-pointers-for-GL_EXT_debug_.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-mapi-Return-NULL-function-pointers-for-GL_EXT_debug_.patch
deleted file mode 100644
index bd90675..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-mapi-Return-NULL-function-pointers-for-GL_EXT_debug_.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From a2065917cc8f95f76c2926d8d7cb4bf3c9ff7de1 Mon Sep 17 00:00:00 2001
-From: Lepton Wu <lepton@chromium.org>
-Date: Thu, 25 Jun 2020 13:52:24 -0700
-Subject: [PATCH] mapi: Return NULL function pointers for GL_EXT_debug_marker
-
-Mesa returns a stub function pointer to glAnything for years.
-Android framework till API level 30 just uses function pointers
-returned from eglGetProcAddress without checking if the underlying
-extension is supported. If we return stub pointers for functions
-in GL_EXT_debug_marker, Android just uses our stub functions instead
-of its own stubs and then fail the dEQP. In the past, the issue
-didn't show up because mesa only has limited slots and run out of slots
-before Android calls eglGetProcAddress on functions inside
-GL_EXT_debug_marker.
-
-Signed-off-by: Lepton Wu <lepton@chromium.org>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5652>
----
- src/mapi/mapi_glapi.c | 17 +++++++++++++++++
- 1 file changed, 17 insertions(+)
-
-diff --git a/src/mapi/mapi_glapi.c b/src/mapi/mapi_glapi.c
-index 1cee148c891..21ca0a0902d 100644
---- a/src/mapi/mapi_glapi.c
-+++ b/src/mapi/mapi_glapi.c
-@@ -169,6 +169,15 @@ _glapi_add_dispatch( const char * const * function_names,
-    return (alias) ? stub_get_slot(alias) : -1;
- }
- 
-+#if defined(ANDROID) && ANDROID_API_LEVEL <= 30
-+static int is_debug_marker_func(const char *name)
-+{
-+   return (!strcmp(name, "InsertEventMarkerEXT") ||
-+           !strcmp(name, "PushGroupMarkerEXT") ||
-+           !strcmp(name, "PopGroupMarkerEXT"));
-+}
-+#endif
-+
- static const struct mapi_stub *
- _glapi_get_stub(const char *name, int generate)
- {
-@@ -179,7 +188,15 @@ _glapi_get_stub(const char *name, int generate)
-    name += 2;
- 
-    stub = stub_find_public(name);
-+#if defined(ANDROID) && ANDROID_API_LEVEL <= 30
-+   /* Android framework till API Level 30 uses function pointers from
-+    * eglGetProcAddress without checking GL_EXT_debug_marker.
-+    * Make sure we don't return stub function pointers if we don't
-+    * support GL_EXT_debug_marker */
-+   if (!stub && !is_debug_marker_func(name))
-+#else
-    if (!stub)
-+#endif
-       stub = stub_find_dynamic(name, generate);
- 
-    return stub;
--- 
-2.28.0.163.g6104cc2f0b6-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-st-mesa-Fix-EGLImageTargetTexture2D-for-GL_TEXTURE_2.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-st-mesa-Fix-EGLImageTargetTexture2D-for-GL_TEXTURE_2.patch
deleted file mode 100644
index b036fc1..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-st-mesa-Fix-EGLImageTargetTexture2D-for-GL_TEXTURE_2.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-From 5e4d69ec786e56794a995be869b5a9b80d050f2d Mon Sep 17 00:00:00 2001
-From: Woody Chow <woodychow@google.com>
-Date: Wed, 19 Aug 2020 14:19:12 +0900
-Subject: [PATCH] st/mesa: Fix EGLImageTargetTexture2D for GL_TEXTURE_2D
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Before this change, internalFormat was defaulted to GL_RGBA (
-unsized internal format). Therefore, subsequent glTexSubImage2D
-call with type != GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT_4_4_4_4 or
-GL_UNSIGNED_SHORT_5_5_5_1 would give GL_INVALID_OPERATION.
-
-This fixes
-
-android.graphics.cts.BitmapColorSpaceTest#test16bitHardware
-android.graphics.cts.ImageDecoderTest#testDecodeBitmap*
-android.graphics.cts.BitmapTest#testNdkFormatsHardware
-
-in CtsGraphicsTestCases
-
-Reviewed-by: Marek Olšák <marek.olsak@amd.com>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6382>
----
- src/mesa/state_tracker/st_cb_eglimage.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/mesa/state_tracker/st_cb_eglimage.c b/src/mesa/state_tracker/st_cb_eglimage.c
-index 5b03c5eb580..bf25e313091 100644
---- a/src/mesa/state_tracker/st_cb_eglimage.c
-+++ b/src/mesa/state_tracker/st_cb_eglimage.c
-@@ -327,7 +327,9 @@ st_egl_image_target_texture_2d(struct gl_context *ctx, GLenum target,
-                          &native_supported))
-       return;
- 
--   st_bind_egl_image(ctx, texObj, texImage, &stimg, false, native_supported);
-+   st_bind_egl_image(ctx, texObj, texImage, &stimg,
-+                     target != GL_TEXTURE_EXTERNAL_OES,
-+                     native_supported);
-    pipe_resource_reference(&stimg.texture, NULL);
- }
- 
--- 
-2.28.0.402.g5ffc5be6b7-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-util-add-a-alignof-macro.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-util-add-a-alignof-macro.patch
deleted file mode 100644
index cad2124..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-util-add-a-alignof-macro.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 391eeb744356353e96ce34f23b8b16b718a02d61 Mon Sep 17 00:00:00 2001
-From: Rhys Perry <pendingchaos02@gmail.com>
-Date: Thu, 6 Aug 2020 14:53:36 +0100
-Subject: [PATCH] util: add a alignof() macro
-
-Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
-Reviewed-by: Eric Anholt <eric@anholt.net>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6206>
----
- src/util/macros.h | 10 ++++++++++
- 1 file changed, 10 insertions(+)
-
-diff --git a/src/util/macros.h b/src/util/macros.h
-index 04aec96b546..f9aa478c994 100644
---- a/src/util/macros.h
-+++ b/src/util/macros.h
-@@ -351,4 +351,14 @@ enum pipe_debug_type
-    PIPE_DEBUG_TYPE_CONFORMANCE,
- };
- 
-+#if !defined(alignof) && !defined(__cplusplus)
-+#if __STDC_VERSION__ >= 201112L
-+#define alignof(t) _Alignof(t)
-+#elif defined(_MSC_VER)
-+#define alignof(t) __alignof(t)
-+#else
-+#define alignof(t) __alignof__(t)
-+#endif
-+#endif
-+
- #endif /* UTIL_MACROS_H */
--- 
-2.28.0.297.g1956fa8f8d-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-util-ralloc-fix-ralloc-alignment.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-util-ralloc-fix-ralloc-alignment.patch
deleted file mode 100644
index cf7ada9..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-util-ralloc-fix-ralloc-alignment.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From a4c708dd24e5ba8ac381973c14db8d23f4ac97bf Mon Sep 17 00:00:00 2001
-From: Lepton Wu <lepton@chromium.org>
-Date: Thu, 13 Aug 2020 19:14:13 -0700
-Subject: [PATCH] util/ralloc: fix ralloc alignment.
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-On some malloc implementation, malloc doesn't always align to 16
-bytes even on 64 bits system. To make sure ralloc_header always
-starts at the wanted alignment, just force the size to be aligned at
-the alignment of ralloc_header. This fixes crashed on instruction
-like "movaps %xmm0,0x10(%rax)" which requires aligned memory access.
-
-Signed-off-by: Lepton Wu <lepton@chromium.org>
-Reviewed-by: Marek Olšák <marek.olsak@amd.com>
-Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6314>
----
- src/util/ralloc.c | 16 ++++++++++++++--
- 1 file changed, 14 insertions(+), 2 deletions(-)
-
-diff --git a/src/util/ralloc.c b/src/util/ralloc.c
-index f36f8bf3654..4c2cf0772ce 100644
---- a/src/util/ralloc.c
-+++ b/src/util/ralloc.c
-@@ -28,6 +28,9 @@
- #include <string.h>
- #include <stdint.h>
- 
-+#include "util/macros.h"
-+#include "util/u_math.h"
-+
- /* Some versions of MinGW are missing _vscprintf's declaration, although they
-  * still provide the symbol in the import library. */
- #ifdef __MINGW32__
-@@ -120,7 +123,15 @@ ralloc_context(const void *ctx)
- void *
- ralloc_size(const void *ctx, size_t size)
- {
--   void *block = malloc(size + sizeof(ralloc_header));
-+   /* Some malloc allocation doesn't always align to 16 bytes even on 64 bits
-+    * system, from Android bionic/tests/malloc_test.cpp:
-+    *  - Allocations of a size that rounds up to a multiple of 16 bytes
-+    *    must have at least 16 byte alignment.
-+    *  - Allocations of a size that rounds up to a multiple of 8 bytes and
-+    *    not 16 bytes, are only required to have at least 8 byte alignment.
-+    */
-+   void *block = malloc(align64(size + sizeof(ralloc_header),
-+                                alignof(ralloc_header)));
-    ralloc_header *info;
-    ralloc_header *parent;
- 
-@@ -167,7 +178,8 @@ resize(void *ptr, size_t size)
-    ralloc_header *child, *old, *info;
- 
-    old = get_header(ptr);
--   info = realloc(old, size + sizeof(ralloc_header));
-+   info = realloc(old, align64(size + sizeof(ralloc_header),
-+                               alignof(ralloc_header)));
- 
-    if (info == NULL)
-       return NULL;
--- 
-GitLab
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-Don-t-destroy-resource-while-it-s-in-use.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-Don-t-destroy-resource-while-it-s-in-use.patch
new file mode 100644
index 0000000..6783d4f
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-Don-t-destroy-resource-while-it-s-in-use.patch
@@ -0,0 +1,42 @@
+From c54fb6ef3d81b5c1e88c6d4ae2ea5d534cb18c8c Mon Sep 17 00:00:00 2001
+From: Lepton Wu <lepton@chromium.org>
+Date: Thu, 18 Mar 2021 23:05:19 -0700
+Subject: [PATCH] virgl: Don't destroy resource while it's in use.
+
+This is the race condition: thread 1 check reference count of resource
+and then find out out it's zero and then it begin to destroy it. Around
+the same time, thread 2 gets the lock and get the resource from the hash
+table and plan to use it. Then this resource gets destroyed while it's
+still in use.
+
+Signed-off-by: Lepton Wu <lepton@chromium.org>
+Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9701>
+---
+ src/gallium/winsys/virgl/drm/virgl_drm_winsys.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
+index f0e95eff8a6..0031db7d278 100644
+--- a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
++++ b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
+@@ -72,6 +72,16 @@ static void virgl_hw_res_destroy(struct virgl_drm_winsys *qdws,
+       struct drm_gem_close args;
+ 
+       mtx_lock(&qdws->bo_handles_mutex);
++
++      /* We intentionally avoid taking the lock in
++       * virgl_drm_resource_reference. Now that the
++       * lock is taken, we need to check the refcount
++       * again. */
++      if (pipe_is_referenced(&res->reference)) {
++         mtx_unlock(&qdws->bo_handles_mutex);
++         return;
++      }
++
+       _mesa_hash_table_remove_key(qdws->bo_handles,
+                              (void *)(uintptr_t)res->bo_handle);
+       if (res->flink_name)
+-- 
+2.31.1.498.g6c1eba8ee3d-goog
+
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-Fix-the-leak-of-hw_res-used-as-fence.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-Fix-the-leak-of-hw_res-used-as-fence.patch
new file mode 100644
index 0000000..bcd3f21
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-Fix-the-leak-of-hw_res-used-as-fence.patch
@@ -0,0 +1,36 @@
+From 4a3c715bb4654ae2c8b61bfb8af8dadde60d675a Mon Sep 17 00:00:00 2001
+From: cheyang <cheyang@bytedance.com>
+Date: Wed, 26 May 2021 20:44:57 +0800
+Subject: [PATCH] virgl:Fix the leak of hw_res used as fence
+
+Fence destroy hw_res not dec reference.Lead leak.
+Call virgl_drm_resource_reference() to release hw_res
+instead of calling virgl_hw_res_destroy() directly.
+
+Fixes: c54fb6ef3d8 ("virgl: Don't destroy resource while it's in use.")
+
+Signed-off-by: cheyang <cheyang@bytedance.com>
+Reviewed-by: Chia-I Wu <olvaffe@gmail.com>
+Reviewed-by: Lepton Wu <lepton@chromium.org>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11008>
+---
+ src/gallium/winsys/virgl/drm/virgl_drm_winsys.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
+index 6ff94ced519..1dd7b001925 100644
+--- a/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
++++ b/src/gallium/winsys/virgl/drm/virgl_drm_winsys.c
+@@ -1044,8 +1044,7 @@ static void virgl_fence_reference(struct virgl_winsys *vws,
+       if (vws->supports_fences) {
+          close(dfence->fd);
+       } else {
+-         struct virgl_drm_winsys *vdws = virgl_drm_winsys(vws);
+-         virgl_hw_res_destroy(vdws, dfence->hw_res);
++         virgl_drm_resource_reference(vws, &dfence->hw_res, NULL);
+       }
+       FREE(dfence);
+    }
+-- 
+2.32.0.rc0.204.g9fa02ecfa5-goog
+
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-Use-ETC2-formats-directly-when-possible.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-Use-ETC2-formats-directly-when-possible.patch
deleted file mode 100644
index 1e2f3b1..0000000
--- a/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-Use-ETC2-formats-directly-when-possible.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From 1c4f68b089b26918fff55196122309ac43e78e1b Mon Sep 17 00:00:00 2001
-From: Lepton Wu <lepton@chromium.org>
-Date: Sat, 11 Apr 2020 15:10:45 -0700
-Subject: [PATCH] virgl: Use ETC2 formats directly when possible.
-
-Don't emulate them with uncompressed formats if the host
-support them since uncompressed formats like GL_R16 could
-be not available on GLES hosts.
-
-Signed-off-by: Lepton Wu <lepton@chromium.org>
-Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
----
- src/gallium/drivers/virgl/virgl_encode.c | 10 ++++++++++
- src/gallium/drivers/virgl/virgl_hw.h     | 12 ++++++++++++
- src/gallium/drivers/virgl/virgl_screen.c |  3 +++
- 3 files changed, 25 insertions(+)
-
-diff --git a/src/gallium/drivers/virgl/virgl_encode.c b/src/gallium/drivers/virgl/virgl_encode.c
-index fa4e4c0d50e..6d71f5d6574 100644
---- a/src/gallium/drivers/virgl/virgl_encode.c
-+++ b/src/gallium/drivers/virgl/virgl_encode.c
-@@ -248,6 +248,16 @@ static const enum virgl_formats virgl_formats_conv_table[PIPE_FORMAT_COUNT] = {
-    CONV_FORMAT(R10G10B10X2_UNORM)
-    CONV_FORMAT(A4B4G4R4_UNORM)
-    CONV_FORMAT(R8_SRGB)
-+   CONV_FORMAT(ETC2_RGB8)
-+   CONV_FORMAT(ETC2_SRGB8)
-+   CONV_FORMAT(ETC2_RGB8A1)
-+   CONV_FORMAT(ETC2_SRGB8A1)
-+   CONV_FORMAT(ETC2_RGBA8)
-+   CONV_FORMAT(ETC2_SRGBA8)
-+   CONV_FORMAT(ETC2_R11_UNORM)
-+   CONV_FORMAT(ETC2_R11_SNORM)
-+   CONV_FORMAT(ETC2_RG11_UNORM)
-+   CONV_FORMAT(ETC2_RG11_SNORM)
- };
- 
- enum virgl_formats pipe_to_virgl_format(enum pipe_format format)
-diff --git a/src/gallium/drivers/virgl/virgl_hw.h b/src/gallium/drivers/virgl/virgl_hw.h
-index cfa89e2e2aa..b2bed9165ef 100644
---- a/src/gallium/drivers/virgl/virgl_hw.h
-+++ b/src/gallium/drivers/virgl/virgl_hw.h
-@@ -280,6 +280,18 @@ enum virgl_formats {
-    VIRGL_FORMAT_BPTC_RGB_FLOAT          = 257,
-    VIRGL_FORMAT_BPTC_RGB_UFLOAT         = 258,
- 
-+   /* etc2 compressed */
-+   VIRGL_FORMAT_ETC2_RGB8               = 269,
-+   VIRGL_FORMAT_ETC2_SRGB8              = 270,
-+   VIRGL_FORMAT_ETC2_RGB8A1             = 271,
-+   VIRGL_FORMAT_ETC2_SRGB8A1            = 272,
-+   VIRGL_FORMAT_ETC2_RGBA8              = 273,
-+   VIRGL_FORMAT_ETC2_SRGBA8             = 274,
-+   VIRGL_FORMAT_ETC2_R11_UNORM          = 275,
-+   VIRGL_FORMAT_ETC2_R11_SNORM          = 276,
-+   VIRGL_FORMAT_ETC2_RG11_UNORM         = 277,
-+   VIRGL_FORMAT_ETC2_RG11_SNORM         = 278,
-+
-    VIRGL_FORMAT_R10G10B10X2_UNORM       = 308,
-    VIRGL_FORMAT_A4B4G4R4_UNORM          = 311,
- 
-diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
-index 869e25cc46c..235d4280104 100644
---- a/src/gallium/drivers/virgl/virgl_screen.c
-+++ b/src/gallium/drivers/virgl/virgl_screen.c
-@@ -759,6 +759,9 @@ virgl_is_format_supported( struct pipe_screen *screen,
-    if (format_desc->layout == UTIL_FORMAT_LAYOUT_BPTC) {
-       goto out_lookup;
-    }
-+   if (format_desc->layout == UTIL_FORMAT_LAYOUT_ETC) {
-+      goto out_lookup;
-+   }
- 
-    if (format == PIPE_FORMAT_R11G11B10_FLOAT) {
-       goto out_lookup;
--- 
-2.27.0.rc2.251.g90737beb825-goog
-
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-add-astc-2d-compressed-formats.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-add-astc-2d-compressed-formats.patch
new file mode 100644
index 0000000..5e505b7
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-add-astc-2d-compressed-formats.patch
@@ -0,0 +1,121 @@
+From 6f4c4df6c2da6b2c055952df78bad8edf83c4dc8 Mon Sep 17 00:00:00 2001
+From: cheyang <cheyang@bytedance.com>
+Date: Fri, 26 Feb 2021 17:47:27 +0800
+Subject: [PATCH] virgl: add astc 2d compressed formats
+
+Signed-off-by: cheyang <cheyang@bytedance.com>
+Signed-off-by: hexin   <hexin.op@bytedance.com>
+Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9306>
+---
+ src/gallium/drivers/virgl/virgl_encode.c | 28 ++++++++++++++++++++++
+ src/gallium/drivers/virgl/virgl_screen.c |  5 ++++
+ src/virtio/virtio-gpu/virgl_hw.h         | 30 ++++++++++++++++++++++++
+ 3 files changed, 63 insertions(+)
+
+diff --git a/src/gallium/drivers/virgl/virgl_encode.c b/src/gallium/drivers/virgl/virgl_encode.c
+index 47a44c3489f..d93fb85098a 100644
+--- a/src/gallium/drivers/virgl/virgl_encode.c
++++ b/src/gallium/drivers/virgl/virgl_encode.c
+@@ -259,6 +259,34 @@ static const enum virgl_formats virgl_formats_conv_table[PIPE_FORMAT_COUNT] = {
+    CONV_FORMAT(ETC2_R11_SNORM)
+    CONV_FORMAT(ETC2_RG11_UNORM)
+    CONV_FORMAT(ETC2_RG11_SNORM)
++   CONV_FORMAT(ASTC_4x4)
++   CONV_FORMAT(ASTC_5x4)
++   CONV_FORMAT(ASTC_5x5)
++   CONV_FORMAT(ASTC_6x5)
++   CONV_FORMAT(ASTC_6x6)
++   CONV_FORMAT(ASTC_8x5)
++   CONV_FORMAT(ASTC_8x6)
++   CONV_FORMAT(ASTC_8x8)
++   CONV_FORMAT(ASTC_10x5)
++   CONV_FORMAT(ASTC_10x6)
++   CONV_FORMAT(ASTC_10x8)
++   CONV_FORMAT(ASTC_10x10)
++   CONV_FORMAT(ASTC_12x10)
++   CONV_FORMAT(ASTC_12x12)
++   CONV_FORMAT(ASTC_4x4_SRGB)
++   CONV_FORMAT(ASTC_5x4_SRGB)
++   CONV_FORMAT(ASTC_5x5_SRGB)
++   CONV_FORMAT(ASTC_6x5_SRGB)
++   CONV_FORMAT(ASTC_6x6_SRGB)
++   CONV_FORMAT(ASTC_8x5_SRGB)
++   CONV_FORMAT(ASTC_8x6_SRGB)
++   CONV_FORMAT(ASTC_8x8_SRGB )
++   CONV_FORMAT(ASTC_10x5_SRGB)
++   CONV_FORMAT(ASTC_10x6_SRGB)
++   CONV_FORMAT(ASTC_10x8_SRGB)
++   CONV_FORMAT(ASTC_10x10_SRGB)
++   CONV_FORMAT(ASTC_12x10_SRGB)
++   CONV_FORMAT(ASTC_12x12_SRGB)
+ };
+ 
+ enum virgl_formats pipe_to_virgl_format(enum pipe_format format)
+diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
+index 1189a3e1b59..24c692df405 100644
+--- a/src/gallium/drivers/virgl/virgl_screen.c
++++ b/src/gallium/drivers/virgl/virgl_screen.c
+@@ -670,6 +670,7 @@ virgl_is_format_supported( struct pipe_screen *screen,
+ 
+    if ((format_desc->layout == UTIL_FORMAT_LAYOUT_RGTC ||
+         format_desc->layout == UTIL_FORMAT_LAYOUT_ETC ||
++        format_desc->layout == UTIL_FORMAT_LAYOUT_ASTC ||
+         format_desc->layout == UTIL_FORMAT_LAYOUT_S3TC) &&
+        target == PIPE_TEXTURE_3D)
+       return false;
+@@ -731,6 +732,10 @@ virgl_is_format_supported( struct pipe_screen *screen,
+       goto out_lookup;
+    }
+ 
++   if (format_desc->layout == UTIL_FORMAT_LAYOUT_ASTC) {
++     goto out_lookup;
++   }
++
+    /* Find the first non-VOID channel. */
+    for (i = 0; i < 4; i++) {
+       if (format_desc->channel[i].type != UTIL_FORMAT_TYPE_VOID) {
+diff --git a/src/virtio/virtio-gpu/virgl_hw.h b/src/virtio/virtio-gpu/virgl_hw.h
+index 94997a3b005..c77d1fcec1f 100644
+--- a/src/virtio/virtio-gpu/virgl_hw.h
++++ b/src/virtio/virtio-gpu/virgl_hw.h
+@@ -358,6 +358,36 @@ enum virgl_formats {
+    VIRGL_FORMAT_ETC2_RG11_UNORM         = 277,
+    VIRGL_FORMAT_ETC2_RG11_SNORM         = 278,
+ 
++    /* astc compressed */
++   VIRGL_FORMAT_ASTC_4x4                = 279,
++   VIRGL_FORMAT_ASTC_5x4                = 280,
++   VIRGL_FORMAT_ASTC_5x5                = 281,
++   VIRGL_FORMAT_ASTC_6x5                = 282,
++   VIRGL_FORMAT_ASTC_6x6                = 283,
++   VIRGL_FORMAT_ASTC_8x5                = 284,
++   VIRGL_FORMAT_ASTC_8x6                = 285,
++   VIRGL_FORMAT_ASTC_8x8                = 286,
++   VIRGL_FORMAT_ASTC_10x5               = 287,
++   VIRGL_FORMAT_ASTC_10x6               = 288,
++   VIRGL_FORMAT_ASTC_10x8               = 289,
++   VIRGL_FORMAT_ASTC_10x10              = 290,
++   VIRGL_FORMAT_ASTC_12x10              = 291,
++   VIRGL_FORMAT_ASTC_12x12              = 292,
++   VIRGL_FORMAT_ASTC_4x4_SRGB           = 293,
++   VIRGL_FORMAT_ASTC_5x4_SRGB           = 294,
++   VIRGL_FORMAT_ASTC_5x5_SRGB           = 295,
++   VIRGL_FORMAT_ASTC_6x5_SRGB           = 296,
++   VIRGL_FORMAT_ASTC_6x6_SRGB           = 297,
++   VIRGL_FORMAT_ASTC_8x5_SRGB           = 298,
++   VIRGL_FORMAT_ASTC_8x6_SRGB           = 299,
++   VIRGL_FORMAT_ASTC_8x8_SRGB           = 300,
++   VIRGL_FORMAT_ASTC_10x5_SRGB          = 301,
++   VIRGL_FORMAT_ASTC_10x6_SRGB          = 302,
++   VIRGL_FORMAT_ASTC_10x8_SRGB          = 303,
++   VIRGL_FORMAT_ASTC_10x10_SRGB         = 304,
++   VIRGL_FORMAT_ASTC_12x10_SRGB         = 305,
++   VIRGL_FORMAT_ASTC_12x12_SRGB         = 306,
++
+    VIRGL_FORMAT_R10G10B10X2_UNORM       = 308,
+    VIRGL_FORMAT_A4B4G4R4_UNORM          = 311,
+ 
+-- 
+2.31.1.498.g6c1eba8ee3d-goog
+
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-do-not-use-winsys-info-for-guest-storage-of-cl.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-do-not-use-winsys-info-for-guest-storage-of-cl.patch
new file mode 100644
index 0000000..787cbb2
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-do-not-use-winsys-info-for-guest-storage-of-cl.patch
@@ -0,0 +1,43 @@
+From 47eabd0e6b926535a68a7173eba2ceeb4ed9747e Mon Sep 17 00:00:00 2001
+From: Yiwei Zhang <zzyiwei@chromium.org>
+Date: Tue, 11 May 2021 21:31:19 +0000
+Subject: [PATCH] virgl: do not use winsys info for guest storage of classic
+ resource
+
+winsys_stride is the stride of the host storage of the classic resource,
+and using that breaks the readback on the guest storage.
+
+v2: move the scrubbing to virgl_resource_from_handle
+The returned modifier also points directly to the host driver's real
+modifier but not a virtualized one. Leave plane_offset as zero here
+matches the prior behavior before introducing winsys info.
+
+Signed-off-by: Yiwei Zhang <zzyiwei@chromium.org>
+Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org> (v1)
+Reviewed-by: Chia-I Wu <olvaffe@gmail.com> (v2)
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10757>
+---
+ src/gallium/drivers/virgl/virgl_resource.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/gallium/drivers/virgl/virgl_resource.c b/src/gallium/drivers/virgl/virgl_resource.c
+index 76f0741cc03..4fc2eab8cfb 100644
+--- a/src/gallium/drivers/virgl/virgl_resource.c
++++ b/src/gallium/drivers/virgl/virgl_resource.c
+@@ -575,6 +575,13 @@ static struct pipe_resource *virgl_resource_from_handle(struct pipe_screen *scre
+                                                       &modifier,
+                                                       &res->blob_mem);
+ 
++   /* do not use winsys returns for guest storage info of classic resource */
++   if (!res->blob_mem) {
++      winsys_stride = 0;
++      plane_offset = 0;
++      modifier = 0;
++   }
++
+    virgl_resource_layout(&res->u.b, &res->metadata, plane, winsys_stride,
+                          plane_offset, modifier);
+    if (!res->hw_res) {
+-- 
+2.31.1.607.g51e8a6a459-goog
+
diff --git a/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-fix-BGRA-emulation-artifacts-during-window-res.patch b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-fix-BGRA-emulation-artifacts-during-window-res.patch
new file mode 100644
index 0000000..03fe0fb
--- /dev/null
+++ b/media-libs/arc-mesa-virgl/files/UPSTREAM-virgl-fix-BGRA-emulation-artifacts-during-window-res.patch
@@ -0,0 +1,40 @@
+From accc2222174a90fd24ee56ce751feb6022ecc0c7 Mon Sep 17 00:00:00 2001
+From: Ryan Neph <ryanneph@google.com>
+Date: Wed, 16 Dec 2020 01:18:09 +0000
+Subject: [PATCH] virgl: fix BGRA emulation artifacts during window resize
+
+On some devices, window resizing results in flashes of blue- and
+orange-tinted versions of the current frame until resizing is
+finished.
+
+This fix ensures that the emubgra tweak used for GLES virgl hosts
+has its enabled state flag set properly during resize events.
+
+v2: removed unrelated whitespace change
+
+Fixes: 6f68cacf619 ("virgl: Always enable emulated BGRA and swizzling unless specifically told not to")
+Signed-off-by: Ryan Neph <ryanneph@google.com>
+Reviewed-by: Gert Wollny <gert.wollny@collabora.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8119>
+---
+ src/gallium/drivers/virgl/virgl_screen.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/gallium/drivers/virgl/virgl_screen.c b/src/gallium/drivers/virgl/virgl_screen.c
+index f55b5f22ac6..80104b859d2 100644
+--- a/src/gallium/drivers/virgl/virgl_screen.c
++++ b/src/gallium/drivers/virgl/virgl_screen.c
+@@ -874,7 +874,9 @@ virgl_create_screen(struct virgl_winsys *vws, const struct pipe_screen_config *c
+    fixup_formats(&screen->caps.caps, &screen->caps.caps.v2.scanout);
+ 
+    union virgl_caps *caps = &screen->caps.caps;
+-   screen->tweak_gles_emulate_bgra &= !virgl_format_check_bitmask(PIPE_FORMAT_B8G8R8A8_SRGB, caps->v1.render.bitmask, false);
++   bool may_emulate_bgra = (caps->v2.capability_bits & VIRGL_CAP_APP_TWEAK_SUPPORT);
++   screen->tweak_gles_emulate_bgra &= !virgl_format_check_bitmask(
++       PIPE_FORMAT_B8G8R8A8_SRGB, caps->v1.render.bitmask, may_emulate_bgra);
+    screen->refcnt = 1;
+ 
+    slab_create_parent(&screen->transfer_pool, sizeof(struct virgl_transfer), 16);
+-- 
+2.31.1.498.g6c1eba8ee3d-goog
+
diff --git a/media-libs/arc-mesa/arc-mesa-19.0-r37.ebuild b/media-libs/arc-mesa/arc-mesa-19.0-r39.ebuild
similarity index 100%
rename from media-libs/arc-mesa/arc-mesa-19.0-r37.ebuild
rename to media-libs/arc-mesa/arc-mesa-19.0-r39.ebuild
diff --git a/media-libs/arc-mesa/arc-mesa-19.0.ebuild b/media-libs/arc-mesa/arc-mesa-19.0.ebuild
index 79c6b05..dd9e75c 100644
--- a/media-libs/arc-mesa/arc-mesa-19.0.ebuild
+++ b/media-libs/arc-mesa/arc-mesa-19.0.ebuild
@@ -8,6 +8,7 @@
 CROS_WORKON_TREE="040a39591a38d3dc778725575c72dcdc1b07e032"
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
 CROS_WORKON_LOCALNAME="arc-mesa"
+CROS_WORKON_EGIT_BRANCH="master"
 CROS_WORKON_MANUAL_UPREV="1"
 
 EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
@@ -153,6 +154,7 @@
 
 	epatch "${FILESDIR}"/FROMLIST-glsl-fix-an-incorrect-max_array_access-afte.patch
 	epatch "${FILESDIR}"/FROMLIST-glsl-fix-a-binding-points-assignment-for-ss.patch
+	epatch "${FILESDIR}"/UPSTREAM-glsl-mark-some-builtins-with-correct-glsl-es-version.patch
 
 	epatch "${FILESDIR}"/FROMLIST-glcpp-Hack-to-handle-expressions-in-line-di.patch
 	epatch "${FILESDIR}"/UPSTREAM-intel-Add-support-for-Comet-Lake.patch
@@ -196,6 +198,8 @@
 
 	epatch "${FILESDIR}"/UPSTREAM-anv-expose-VK_EXT_queue_family_foreign-on-A.patch
 	epatch "${FILESDIR}"/UPSTREAM-intel-limit-shader-geometry-on-BDW-GT1.patch
+	epatch "${FILESDIR}"/UPSTREAM-intel-change-urb-max-shader-geometry-for-KBL-GT1.patch
+	epatch "${FILESDIR}"/UPSTREAM-intel-change-urb-max-shader-geometry-for-CML-GT1.patch
 	default
 }
 
diff --git a/media-libs/arc-mesa/arc-mesa-9999.ebuild b/media-libs/arc-mesa/arc-mesa-9999.ebuild
index 1dd792a..a598bdb 100644
--- a/media-libs/arc-mesa/arc-mesa-9999.ebuild
+++ b/media-libs/arc-mesa/arc-mesa-9999.ebuild
@@ -9,6 +9,7 @@
 EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
 CROS_WORKON_LOCALNAME="mesa"
+CROS_WORKON_EGIT_BRANCH="master"
 CROS_WORKON_MANUAL_UPREV="1"
 
 inherit base meson multilib-minimal flag-o-matic toolchain-funcs cros-workon arc-build
diff --git a/media-libs/arc-mesa/files/UPSTREAM-glsl-mark-some-builtins-with-correct-glsl-es-version.patch b/media-libs/arc-mesa/files/UPSTREAM-glsl-mark-some-builtins-with-correct-glsl-es-version.patch
new file mode 100644
index 0000000..d129201
--- /dev/null
+++ b/media-libs/arc-mesa/files/UPSTREAM-glsl-mark-some-builtins-with-correct-glsl-es-version.patch
@@ -0,0 +1,50 @@
+From 12567de2be7291467e023a6c7fe2eca19ae5f820 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tapani=20P=C3=A4lli?= <tapani.palli@intel.com>
+Date: Tue, 25 Aug 2020 11:28:06 +0300
+Subject: [PATCH] glsl: mark some builtins with correct glsl(es) version check
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+GLSL Desktop spec 1.30.x:
+   "New built-ins: trunc(), round(), roundEven(), isnan(), isinf(), modf()"
+
+For ES, 3.00.x is the first ES spec that mentions the builtins.
+
+Signed-off-by: Tapani Pälli <tapani.palli@intel.com>
+Reviewed-by: Eric Anholt <eric@anholt.net>
+Reviewed-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6455>
+---
+ src/compiler/glsl/builtin_functions.cpp | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/compiler/glsl/builtin_functions.cpp b/src/compiler/glsl/builtin_functions.cpp
+index f6c208e60c1..2731cee3f2e 100644
+--- a/src/compiler/glsl/builtin_functions.cpp
++++ b/src/compiler/glsl/builtin_functions.cpp
+@@ -1796,9 +1796,9 @@ builtin_builder::create_builtins()
+    FI64(abs)
+    FI64(sign)
+    FD(floor)
+-   FD(trunc)
+-   FD(round)
+-   FD(roundEven)
++   FD130(trunc)
++   FD130(round)
++   FD130(roundEven)
+    FD(ceil)
+    FD(fract)
+ 
+@@ -1830,7 +1830,7 @@ builtin_builder::create_builtins()
+                 _mod(fp64, glsl_type::dvec4_type,  glsl_type::dvec4_type),
+                 NULL);
+ 
+-   FD(modf)
++   FD130(modf)
+ 
+    FIUD2_MIXED(min)
+    FIUD2_MIXED(max)
+-- 
+2.31.1.295.g9ea45b61b8-goog
+
diff --git a/media-libs/arc-mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-CML-GT1.patch b/media-libs/arc-mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-CML-GT1.patch
new file mode 100644
index 0000000..7620c61
--- /dev/null
+++ b/media-libs/arc-mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-CML-GT1.patch
@@ -0,0 +1,40 @@
+From 94b894c3f66d2d593115b861d7ba510c277f0037 Mon Sep 17 00:00:00 2001
+From: Abhishek Kumar <abhishek4.kumar@intel.com>
+Date: Wed, 27 Jan 2021 21:26:23 +0530
+Subject: [PATCH 2/2] intel: change urb max shader geometry for CML GT1
+
+Below deqp cts failure is seen on CML GT1 only , GT2 all test
+passes, changing the max shader geometry to 256 (previous 640)
+fixes all failure tests.Similar issue on BDW GT1
+https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3173
+
+dEQP-GLES31.functional.geometry_shading.layered.
+                render_with_default_layer_cubemap
+                render_with_default_layer_3d
+                render_with_default_layer_2d_array
+
+Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4102
+
+Signed-off-by: Abhishek Kumar <abhishek4.kumar@intel.com>
+Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8550>
+(cherry picked from commit 276e3927b54292b2c0687b1f9bbcc0d69e314de7)
+---
+ src/intel/dev/gen_device_info.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/intel/dev/gen_device_info.c b/src/intel/dev/gen_device_info.c
+index 1ae1207f517e..c325f4276179 100644
+--- a/src/intel/dev/gen_device_info.c
++++ b/src/intel/dev/gen_device_info.c
+@@ -785,6 +785,7 @@ static const struct gen_device_info gen_device_info_cfl_gt1 = {
+    .simulator_id = 24,
+    .urb.size = 128,
+    .urb.max_entries[MESA_SHADER_VERTEX] = 928,
++   .urb.max_entries[MESA_SHADER_GEOMETRY] = 256,
+ };
+ 
+ static const struct gen_device_info gen_device_info_cfl_gt2 = {
+-- 
+2.29.2
+
diff --git a/media-libs/arc-mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-KBL-GT1.patch b/media-libs/arc-mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-KBL-GT1.patch
new file mode 100644
index 0000000..2d04719
--- /dev/null
+++ b/media-libs/arc-mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-KBL-GT1.patch
@@ -0,0 +1,39 @@
+From e78365af3a028f6510a46235b21d3b4f17f44066 Mon Sep 17 00:00:00 2001
+From: Abhishek Kumar <abhishek4.kumar@intel.com>
+Date: Wed, 27 Jan 2021 21:24:30 +0530
+Subject: [PATCH 1/2] intel: change urb max shader geometry for KBL GT1
+
+Below Deqp CTS failure is seen on KBL GT1(tested on 0x5906) only ,
+GT2 all test passes, changing the max shader geometry to 256
+(previous 640) fixes all failure tests.Similar issues on
+CML GT1 (Gen9) is fixed
+https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8550
+
+dEQP-GLES31.functional.geometry_shading.layered.
+         render_with_default_layer_cubemap
+         render_with_default_layer_3d
+         render_with_default_layer_2d_array
+
+Signed-off-by: Abhishek Kumar <abhishek4.kumar@intel.com>
+Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8731>
+(cherry picked from commit 26c9574bdb16d7f6cbe06cd5ef5d1ce258afc1ba)
+---
+ src/intel/dev/gen_device_info.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/intel/dev/gen_device_info.c b/src/intel/dev/gen_device_info.c
+index 8eeca8debe55..1ae1207f517e 100644
+--- a/src/intel/dev/gen_device_info.c
++++ b/src/intel/dev/gen_device_info.c
+@@ -696,6 +696,7 @@ static const struct gen_device_info gen_device_info_kbl_gt1 = {
+    .simulator_id = 16,
+    .urb.size = 128,
+    .urb.max_entries[MESA_SHADER_VERTEX] = 928,
++   .urb.max_entries[MESA_SHADER_GEOMETRY] = 256,
+ };
+ 
+ static const struct gen_device_info gen_device_info_kbl_gt1_5 = {
+-- 
+2.29.2
+
diff --git a/media-libs/cros-camera-android-headers/cros-camera-android-headers-0.0.1-r178.ebuild b/media-libs/cros-camera-android-headers/cros-camera-android-headers-0.0.1-r178.ebuild
deleted file mode 100644
index 82fb10f..0000000
--- a/media-libs/cros-camera-android-headers/cros-camera-android-headers-0.0.1-r178.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="5a30cbf06df88c851268eeac7165cb89e36b1f9d"
-CROS_WORKON_TREE="3cb528fabbae99fda9407e6a5449e678a782b3ca"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE="camera/android/header_files"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-inherit cros-workon
-
-DESCRIPTION="Android header files required for building camera HAL v3"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="!media-libs/arc-camera3-android-headers"
-
-src_compile() {
-	true
-}
-
-src_install() {
-	local INCLUDE_DIR="/usr/include/android"
-	local LIB_DIR="/usr/$(get_libdir)"
-	local PC_FILE_TEMPLATE="camera/android/header_files/cros-camera-android-headers.pc.template"
-	local PC_FILE="${WORKDIR}/${PC_FILE_TEMPLATE##*/}"
-	PC_FILE=${PC_FILE%%.template}
-
-	insinto "${INCLUDE_DIR}"
-	doins -r camera/android/header_files/include/*
-
-	sed -e "s|@INCLUDE_DIR@|${INCLUDE_DIR}|" \
-		"${PC_FILE_TEMPLATE}" > "${PC_FILE}"
-	insinto "${LIB_DIR}/pkgconfig"
-	doins ${PC_FILE}
-}
diff --git a/media-libs/cros-camera-android-headers/cros-camera-android-headers-9999.ebuild b/media-libs/cros-camera-android-headers/cros-camera-android-headers-9999.ebuild
deleted file mode 100644
index d6ba84b..0000000
--- a/media-libs/cros-camera-android-headers/cros-camera-android-headers-9999.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE="camera/android/header_files"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-inherit cros-workon
-
-DESCRIPTION="Android header files required for building camera HAL v3"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-
-RDEPEND="!media-libs/arc-camera3-android-headers"
-
-src_compile() {
-	true
-}
-
-src_install() {
-	local INCLUDE_DIR="/usr/include/android"
-	local LIB_DIR="/usr/$(get_libdir)"
-	local PC_FILE_TEMPLATE="camera/android/header_files/cros-camera-android-headers.pc.template"
-	local PC_FILE="${WORKDIR}/${PC_FILE_TEMPLATE##*/}"
-	PC_FILE=${PC_FILE%%.template}
-
-	insinto "${INCLUDE_DIR}"
-	doins -r camera/android/header_files/include/*
-
-	sed -e "s|@INCLUDE_DIR@|${INCLUDE_DIR}|" \
-		"${PC_FILE_TEMPLATE}" > "${PC_FILE}"
-	insinto "${LIB_DIR}/pkgconfig"
-	doins ${PC_FILE}
-}
diff --git a/media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r159.ebuild b/media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r159.ebuild
deleted file mode 100644
index 27b695a..0000000
--- a/media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r159.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "82d90b383f9fe16cd8f88ecf297d788777842b22" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-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"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/tools/connector_client"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="A simple package that exercises cros-camera-libcamera_connector"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="media-libs/cros-camera-libcamera_connector"
-
-DEPEND="${RDEPEND}
-	x11-libs/libdrm"
-
-BDEPEND="virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dobin "${OUT}/cros_camera_connector_client"
-}
diff --git a/media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r245.ebuild b/media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r245.ebuild
new file mode 100644
index 0000000..f9468f4
--- /dev/null
+++ b/media-libs/cros-camera-connector-client/cros-camera-connector-client-0.0.1-r245.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "318ca9f48604274cd31481e13eb9321be3d94d8f" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "049eedf136293a1ab81617017200cb31032eb384" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+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"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/tools/connector_client"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="A simple package that exercises cros-camera-libcamera_connector"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="chromeos-base/cros-camera-libs"
+
+DEPEND="${RDEPEND}
+	x11-libs/libdrm"
+
+BDEPEND="virtual/pkgconfig"
+
+src_install() {
+	platform_src_install
+	dobin "${OUT}/cros_camera_connector_client"
+}
diff --git a/media-libs/cros-camera-connector-client/cros-camera-connector-client-9999.ebuild b/media-libs/cros-camera-connector-client/cros-camera-connector-client-9999.ebuild
index f176190..b2b492b 100644
--- a/media-libs/cros-camera-connector-client/cros-camera-connector-client-9999.ebuild
+++ b/media-libs/cros-camera-connector-client/cros-camera-connector-client-9999.ebuild
@@ -18,7 +18,7 @@
 LICENSE="BSD-Google"
 KEYWORDS="~*"
 
-RDEPEND="media-libs/cros-camera-libcamera_connector"
+RDEPEND="chromeos-base/cros-camera-libs"
 
 DEPEND="${RDEPEND}
 	x11-libs/libdrm"
diff --git a/media-libs/cros-camera-document-scanning/Manifest b/media-libs/cros-camera-document-scanning/Manifest
new file mode 100644
index 0000000..886d32f
--- /dev/null
+++ b/media-libs/cros-camera-document-scanning/Manifest
@@ -0,0 +1 @@
+DIST chromeos-document-scanning-lib-2021.06.22.tar.bz2 18327354 BLAKE2B 33d4fab618cda0f212df7df90f29ad5ba2eeae35939159c81f49d51ae9b9adf92b94e38af2486d3fc0266c7808ff1dfe53ccb5fbe5453588314ad909b8a47cca SHA512 4527906ecf865c7d8f94f09c33a935b4a8c7077a14535a02a10cfa0057aa3ea112a809bd698b4d93a28bc830b88bb17230e2c3993b1009f95920727f9d55dbd4
diff --git a/media-libs/cros-camera-document-scanning/OWNERS b/media-libs/cros-camera-document-scanning/OWNERS
new file mode 100644
index 0000000..8f44c3e
--- /dev/null
+++ b/media-libs/cros-camera-document-scanning/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-document-scanning/cros-camera-document-scanning-2021.06.22-r1.ebuild b/media-libs/cros-camera-document-scanning/cros-camera-document-scanning-2021.06.22-r1.ebuild
new file mode 120000
index 0000000..25a3b00
--- /dev/null
+++ b/media-libs/cros-camera-document-scanning/cros-camera-document-scanning-2021.06.22-r1.ebuild
@@ -0,0 +1 @@
+cros-camera-document-scanning-2021.06.22.ebuild
\ No newline at end of file
diff --git a/media-libs/cros-camera-document-scanning/cros-camera-document-scanning-2021.06.22.ebuild b/media-libs/cros-camera-document-scanning/cros-camera-document-scanning-2021.06.22.ebuild
new file mode 100644
index 0000000..7412ac1
--- /dev/null
+++ b/media-libs/cros-camera-document-scanning/cros-camera-document-scanning-2021.06.22.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Google3 document scanning library."
+
+IUSE="march_goldmont march_armv8 ondevice_document_scanner"
+
+SRC_URI="gs://chromeos-localmirror/distfiles/chromeos-document-scanning-lib-${PV}.tar.bz2"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+S="${WORKDIR}"
+
+src_install() {
+	insinto /usr/include/chromeos/libdocumentscanner/
+	doins document_scanner.h
+
+	if ! use ondevice_document_scanner; then
+		return
+	fi
+
+	local document_scanning_lib_path="/opt/google/chrome/ml_models/document_scanning/"
+
+	insinto "${document_scanning_lib_path}"
+	# Specified architecture use flag check should be put before amd64, arm, and
+	# arm64.
+	insopts -m0755
+	if use march_goldmont; then
+		newins "x86_64-goldmont/libdocumentscanner.so" "libdocumentscanner.so"
+	elif use march_armv8; then
+		newins "armv7-armv8-a+crc/libdocumentscanner.so" "libdocumentscanner.so"
+	elif use amd64; then
+		newins "x86_64/libdocumentscanner.so" "libdocumentscanner.so"
+	elif use arm; then
+		newins "armv7/libdocumentscanner.so" "libdocumentscanner.so"
+	elif use arm64; then
+		newins "arm/libdocumentscanner.so" "libdocumentscanner.so"
+	fi
+	insopts -m0644
+}
diff --git a/media-libs/cros-camera-facessd/Manifest b/media-libs/cros-camera-facessd/Manifest
new file mode 100644
index 0000000..8b1572f
--- /dev/null
+++ b/media-libs/cros-camera-facessd/Manifest
@@ -0,0 +1 @@
+DIST chromeos-facessd-lib-2021.05.19.tar.bz2 28014622 BLAKE2B 6d019b38988fca8f30efb619132ee179264bd04f3539112ed8d49707158c3bc29aba9ce29fd7ff246d7352daf41a6aabca5901427d584414219afa752e73879a SHA512 538ceb860bc5f08cce67aa85b323f206f8433cbdfbb9897410ae5117e4a9618ad0912095fbcf583b727258b41289b685328e860015e279b29a0f448bfd223128
diff --git a/media-libs/cros-camera-facessd/OWNERS b/media-libs/cros-camera-facessd/OWNERS
new file mode 100644
index 0000000..8f44c3e
--- /dev/null
+++ b/media-libs/cros-camera-facessd/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-facessd/cros-camera-facessd-2021.05.19-r1.ebuild b/media-libs/cros-camera-facessd/cros-camera-facessd-2021.05.19-r1.ebuild
new file mode 120000
index 0000000..3d5783e
--- /dev/null
+++ b/media-libs/cros-camera-facessd/cros-camera-facessd-2021.05.19-r1.ebuild
@@ -0,0 +1 @@
+cros-camera-facessd-2021.05.19.ebuild
\ No newline at end of file
diff --git a/media-libs/cros-camera-facessd/cros-camera-facessd-2021.05.19.ebuild b/media-libs/cros-camera-facessd/cros-camera-facessd-2021.05.19.ebuild
new file mode 100644
index 0000000..e3f2d51
--- /dev/null
+++ b/media-libs/cros-camera-facessd/cros-camera-facessd-2021.05.19.ebuild
@@ -0,0 +1,53 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Google3 face detection library."
+
+IUSE="march_alderlake march_bdver4 march_corei7 march_goldmont march_silvermont march_skylake march_tremont march_znver1 march_armv8"
+
+SRC_URI="gs://chromeos-localmirror/distfiles/chromeos-facessd-lib-${PV}.tar.bz2"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+S="${WORKDIR}"
+
+src_install() {
+	# Specified architecture use flag check should be put before amd64, arm, and
+	# arm64.
+	if use march_alderlake; then
+		dolib.so ./x86_64-alderlake/libfacessd_cros.so
+	elif use march_bdver4; then
+		dolib.so ./x86_64-bdver4/libfacessd_cros.so
+	elif use march_corei7; then
+		dolib.so ./x86_64-corei7/libfacessd_cros.so
+	elif use march_goldmont; then
+		dolib.so ./x86_64-goldmont/libfacessd_cros.so
+	elif use march_silvermont; then
+		dolib.so ./x86_64-silvermont/libfacessd_cros.so
+	elif use march_skylake; then
+		dolib.so ./x86_64-skylake/libfacessd_cros.so
+	elif use march_tremont; then
+		dolib.so ./x86_64-tremont/libfacessd_cros.so
+	elif use march_znver1; then
+		dolib.so ./x86_64-znver1/libfacessd_cros.so
+	elif use march_armv8; then
+		dolib.so ./armv7-armv8-a+crc/libfacessd_cros.so
+	elif use amd64; then
+		dolib.so ./x86_64/libfacessd_cros.so
+	elif use arm; then
+		dolib.so ./armv7/libfacessd_cros.so
+	elif use arm64; then
+		dolib.so ./arm/libfacessd_cros.so
+	fi
+
+	insinto /usr/include/cros-camera
+	doins ./*.h
+
+	# Install model file and anchor file
+	insinto /opt/google/cros-camera/ml_models
+	doins ./*.pb ./*.tflite
+}
diff --git a/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r50.ebuild b/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r50.ebuild
deleted file mode 100644
index 3f7a60d..0000000
--- a/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r50.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "5a6658345b607258b3cafbbf3298091060659eb9" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/hal/intel/ipu6 camera/include camera/mojo chromeos-config common-mk metrics"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/hal/intel/ipu6"
-
-inherit cros-camera cros-workon platform udev
-
-DESCRIPTION="Intel IPU6 (Image Processing Unit) Chrome OS camera HAL"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE="ipu6se ipu6ep"
-
-RDEPEND="
-	chromeos-base/chromeos-config-tools
-	chromeos-base/metrics
-	dev-libs/expat
-	!ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-libs-bin ) )
-	ipu6se? (
-		media-libs/intel-ipu6se-libs-bin
-		x11-libs/libva-intel-media-driver
-	)
-	ipu6ep? ( media-libs/intel-ipu6ep-libs-bin )
-	!media-libs/cros-camera-hal-intel-ipu6-squash
-	media-libs/cros-camera-libcamera_client
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_exif
-	media-libs/cros-camera-libcamera_metadata
-	media-libs/cros-camera-libcamera_v4l2_device
-	media-libs/cros-camera-libcbm
-	media-libs/libsync
-	media-libs/libyuv
-"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-libcab
-	sys-kernel/linux-headers
-	media-libs/cros-camera-android-headers
-	virtual/jpeg:0
-	virtual/pkgconfig"
-
-src_install() {
-	dolib.so "${OUT}/lib/libcamhal.so"
-	cros-camera_dohal "${OUT}/lib/libcamhal.so" intel-ipu6.so
-	dolib.so "${OUT}/lib/libcam_algo.so"
-
-	if use ipu6se; then
-		dolib.so "${OUT}/lib/libcam_algo_vendor_gpu.so"
-	fi
-
-	udev_dorules "${FILESDIR}/50-ipu-psys0.rules"
-}
diff --git a/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r99.ebuild b/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r99.ebuild
new file mode 100644
index 0000000..035cb2d
--- /dev/null
+++ b/media-libs/cros-camera-hal-intel-ipu6/cros-camera-hal-intel-ipu6-0.0.2-r99.ebuild
@@ -0,0 +1,58 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("8797d18ef997ad834bb916bee9cdb547a4d7d666" "3296cda4e0472a30add5f30bd899becf9219666b")
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "39c3d3a73f6da845a21c6cb5cc49dcca62f80f6a")
+CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/platform/camera")
+CROS_WORKON_LOCALNAME=("../platform2" "../platform/camera")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/camera_hal")
+CROS_WORKON_SUBTREE=(".gn common-mk" "hal/intel/ipu6")
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera_hal/hal/intel/ipu6"
+
+inherit cros-camera cros-workon platform udev
+
+DESCRIPTION="Intel IPU6 (Image Processing Unit) Chrome OS camera HAL"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE="ipu6se ipu6ep"
+
+RDEPEND="
+	chromeos-base/chromeos-config-tools
+	chromeos-base/cros-camera-libs
+	chromeos-base/cros-camera-android-deps
+	dev-libs/expat
+	!ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-camera-bins ) )
+	ipu6se? (
+		media-libs/intel-ipu6se-camera-bins
+		x11-libs/libva-intel-media-driver
+	)
+	ipu6ep? ( media-libs/intel-ipu6ep-camera-bins )
+	!media-libs/cros-camera-hal-intel-ipu6-squash
+	media-libs/libsync
+	media-libs/libyuv
+"
+
+DEPEND="${RDEPEND}
+	sys-kernel/linux-headers
+	virtual/jpeg:0
+	virtual/pkgconfig"
+
+src_install() {
+	platform_src_install
+
+	dolib.so "${OUT}/lib/libcamhal.so"
+	cros-camera_dohal "${OUT}/lib/libcamhal.so" intel-ipu6.so
+	dolib.so "${OUT}/lib/libcam_algo.so"
+
+	if use ipu6se; then
+		dolib.so "${OUT}/lib/libcam_algo_vendor_gpu.so"
+	fi
+
+	udev_dorules "${FILESDIR}/50-ipu-psys0.rules"
+}
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 4c421c4..c411682 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
@@ -3,14 +3,13 @@
 
 EAPI=7
 
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/hal/intel/ipu6 camera/include camera/mojo chromeos-config common-mk metrics"
-CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_PROJECT=("chromiumos/platform2" "chromiumos/platform/camera")
+CROS_WORKON_LOCALNAME=("../platform2" "../platform/camera")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/camera_hal")
+CROS_WORKON_SUBTREE=(".gn common-mk" "hal/intel/ipu6")
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
-PLATFORM_SUBDIR="camera/hal/intel/ipu6"
+PLATFORM_SUBDIR="camera_hal/hal/intel/ipu6"
 
 inherit cros-camera cros-workon platform udev
 
@@ -23,33 +22,28 @@
 
 RDEPEND="
 	chromeos-base/chromeos-config-tools
-	chromeos-base/metrics
+	chromeos-base/cros-camera-libs
+	chromeos-base/cros-camera-android-deps
 	dev-libs/expat
-	!ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-libs-bin ) )
+	!ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-camera-bins ) )
 	ipu6se? (
-		media-libs/intel-ipu6se-libs-bin
+		media-libs/intel-ipu6se-camera-bins
 		x11-libs/libva-intel-media-driver
 	)
-	ipu6ep? ( media-libs/intel-ipu6ep-libs-bin )
+	ipu6ep? ( media-libs/intel-ipu6ep-camera-bins )
 	!media-libs/cros-camera-hal-intel-ipu6-squash
-	media-libs/cros-camera-libcamera_client
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_exif
-	media-libs/cros-camera-libcamera_metadata
-	media-libs/cros-camera-libcamera_v4l2_device
-	media-libs/cros-camera-libcbm
 	media-libs/libsync
 	media-libs/libyuv
 "
 
 DEPEND="${RDEPEND}
-	media-libs/cros-camera-libcab
 	sys-kernel/linux-headers
-	media-libs/cros-camera-android-headers
 	virtual/jpeg:0
 	virtual/pkgconfig"
 
 src_install() {
+	platform_src_install
+
 	dolib.so "${OUT}/lib/libcamhal.so"
 	cros-camera_dohal "${OUT}/lib/libcamhal.so" intel-ipu6.so
 	dolib.so "${OUT}/lib/libcam_algo.so"
diff --git a/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r372.ebuild b/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r372.ebuild
deleted file mode 100644
index ec2c22b..0000000
--- a/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r372.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "46351f517a589c6ba64f17c0042dc2c5da2c0956" "347cdef009360a54e6d1dfc2b382bc812b2a55db" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb")
-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 common-mk metrics"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/hal/ip"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS IP camera HAL v3."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-RDEPEND="
-	media-libs/cros-camera-libcbm
-	media-libs/cros-camera-libjda
-	media-libs/libsync"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-android-headers
-	media-libs/cros-camera-libcamera_client
-	media-libs/cros-camera-libcamera_metadata
-	virtual/pkgconfig"
-
-src_install() {
-	cros-camera_dohal "${OUT}/lib/libcamera_hal.so" ip.so
-}
-
-platform_pkg_test() {
-	platform_test run "${OUT}"/request_queue_test
-}
diff --git a/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r483.ebuild b/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r483.ebuild
new file mode 100644
index 0000000..812e500
--- /dev/null
+++ b/media-libs/cros-camera-hal-ip/cros-camera-hal-ip-0.0.1-r483.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "08b12a8d5bd9bbe7ab69c8e6cd9f11b700d32b76" "309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b" "049eedf136293a1ab81617017200cb31032eb384" "6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+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 common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/hal/ip"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="Chrome OS IP camera HAL v3."
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+RDEPEND="
+	chromeos-base/cros-camera-android-deps
+	chromeos-base/cros-camera-libs
+	media-libs/libsync"
+
+DEPEND="${RDEPEND}
+	virtual/pkgconfig"
+
+src_install() {
+	cros-camera_dohal "${OUT}/lib/libcamera_hal.so" ip.so
+}
+
+platform_pkg_test() {
+	platform_test run "${OUT}"/request_queue_test
+}
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 b1be38e..8ce914f 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
@@ -5,7 +5,7 @@
 
 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 common-mk metrics"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/hal/ip camera/hal/usb camera/include camera/mojo common-mk"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -19,14 +19,11 @@
 SLOT="0"
 KEYWORDS="~*"
 RDEPEND="
-	media-libs/cros-camera-libcbm
-	media-libs/cros-camera-libjda
+	chromeos-base/cros-camera-android-deps
+	chromeos-base/cros-camera-libs
 	media-libs/libsync"
 
 DEPEND="${RDEPEND}
-	media-libs/cros-camera-android-headers
-	media-libs/cros-camera-libcamera_client
-	media-libs/cros-camera-libcamera_metadata
 	virtual/pkgconfig"
 
 src_install() {
diff --git a/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r770.ebuild b/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r770.ebuild
deleted file mode 100644
index e4e2b65..0000000
--- a/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r770.ebuild
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "347cdef009360a54e6d1dfc2b382bc812b2a55db" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/hal/usb camera/include camera/mojo chromeos-config common-mk metrics"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/hal/usb"
-CROS_CAMERA_TESTS=(
-	"image_processor_test"
-)
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS USB camera HAL v3."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="usb_camera_monocle generated_cros_config unibuild"
-
-RDEPEND="
-	dev-libs/re2
-	!media-libs/arc-camera3-hal-usb
-	media-libs/cros-camera-libcamera_client
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_exif
-	media-libs/cros-camera-libcamera_metadata
-	usb_camera_monocle? ( media-libs/librealtek-sdk )
-	media-libs/cros-camera-libcamera_timezone
-	media-libs/cros-camera-libcbm
-	media-libs/cros-camera-libjda
-	media-libs/libsync
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp )
-	)
-	chromeos-base/chromeos-config-tools"
-
-DEPEND="${RDEPEND}
-	>=chromeos-base/metrics-0.0.1-r3152
-	media-libs/cros-camera-android-headers
-	media-libs/libyuv
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	cros-camera_dohal "${OUT}/lib/libcamera_hal.so" usb.so
-}
diff --git a/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r903.ebuild b/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r903.ebuild
new file mode 100644
index 0000000..d747492
--- /dev/null
+++ b/media-libs/cros-camera-hal-usb/cros-camera-hal-usb-0.0.1-r903.ebuild
@@ -0,0 +1,49 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b" "049eedf136293a1ab81617017200cb31032eb384" "6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315" "aa0612733aca2d5ffa65470f07408228b473ebdb" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/hal/usb camera/include camera/mojo chromeos-config common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/hal/usb"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="Chrome OS USB camera HAL v3."
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/cros-camera-android-deps
+	chromeos-base/cros-camera-libs
+	dev-libs/re2
+	media-libs/libsync
+	chromeos-base/chromeos-config-tools"
+
+DEPEND="${RDEPEND}
+	media-libs/libyuv
+	virtual/pkgconfig"
+
+src_install() {
+	platform_src_install
+	cros-camera_dohal "${OUT}/lib/libcamera_hal.so" usb.so
+}
+
+platform_pkg_test() {
+	local tests=(
+		image_processor_test
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test run "${OUT}/${test_bin}"
+	done
+}
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 575dd9a..90b27e4 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
@@ -6,14 +6,11 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/hal/usb camera/include camera/mojo chromeos-config common-mk metrics"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/hal/usb camera/include camera/mojo chromeos-config common-mk"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
 PLATFORM_SUBDIR="camera/hal/usb"
-CROS_CAMERA_TESTS=(
-	"image_processor_test"
-)
 
 inherit cros-camera cros-workon platform
 
@@ -22,29 +19,15 @@
 LICENSE="BSD-Google"
 SLOT="0"
 KEYWORDS="~*"
-IUSE="usb_camera_monocle generated_cros_config unibuild"
 
 RDEPEND="
+	chromeos-base/cros-camera-android-deps
+	chromeos-base/cros-camera-libs
 	dev-libs/re2
-	!media-libs/arc-camera3-hal-usb
-	media-libs/cros-camera-libcamera_client
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_exif
-	media-libs/cros-camera-libcamera_metadata
-	usb_camera_monocle? ( media-libs/librealtek-sdk )
-	media-libs/cros-camera-libcamera_timezone
-	media-libs/cros-camera-libcbm
-	media-libs/cros-camera-libjda
 	media-libs/libsync
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp )
-	)
 	chromeos-base/chromeos-config-tools"
 
 DEPEND="${RDEPEND}
-	>=chromeos-base/metrics-0.0.1-r3152
-	media-libs/cros-camera-android-headers
 	media-libs/libyuv
 	virtual/pkgconfig"
 
@@ -52,3 +35,13 @@
 	platform_src_install
 	cros-camera_dohal "${OUT}/lib/libcamera_hal.so" usb.so
 }
+
+platform_pkg_test() {
+	local tests=(
+		image_processor_test
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test run "${OUT}/${test_bin}"
+	done
+}
diff --git a/media-libs/cros-camera-libcab-test/cros-camera-libcab-test-0.0.1-r460.ebuild b/media-libs/cros-camera-libcab-test/cros-camera-libcab-test-0.0.1-r460.ebuild
deleted file mode 100644
index 1dd5a78..0000000
--- a/media-libs/cros-camera-libcab-test/cros-camera-libcab-test-0.0.1-r460.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcab_test"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Test for camera algorithm bridge library"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	dev-cpp/gtest:=
-	!media-libs/arc-camera3-libcab-test
-	media-libs/cros-camera-libcab"
-
-DEPEND="${RDEPEND}"
-
-src_install() {
-	dobin "${OUT}/libcab_test"
-	dolib.so "${OUT}/lib/libcam_algo_test.so"
-}
diff --git a/media-libs/cros-camera-libcab-test/cros-camera-libcab-test-0.0.1-r546.ebuild b/media-libs/cros-camera-libcab-test/cros-camera-libcab-test-0.0.1-r546.ebuild
new file mode 100644
index 0000000..15bd1da
--- /dev/null
+++ b/media-libs/cros-camera-libcab-test/cros-camera-libcab-test-0.0.1-r546.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "049eedf136293a1ab81617017200cb31032eb384" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/common/libcab_test"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="Test for camera algorithm bridge library"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/cros-camera-libs
+	dev-cpp/gtest:="
+
+DEPEND="${RDEPEND}"
+
+src_install() {
+	dobin "${OUT}/libcab_test"
+	dolib.so "${OUT}/lib/libcam_algo_test.so"
+}
diff --git a/media-libs/cros-camera-libcab-test/cros-camera-libcab-test-9999.ebuild b/media-libs/cros-camera-libcab-test/cros-camera-libcab-test-9999.ebuild
index d357092..a6e9921 100644
--- a/media-libs/cros-camera-libcab-test/cros-camera-libcab-test-9999.ebuild
+++ b/media-libs/cros-camera-libcab-test/cros-camera-libcab-test-9999.ebuild
@@ -5,7 +5,7 @@
 
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -20,9 +20,8 @@
 KEYWORDS="~*"
 
 RDEPEND="
-	dev-cpp/gtest:=
-	!media-libs/arc-camera3-libcab-test
-	media-libs/cros-camera-libcab"
+	chromeos-base/cros-camera-libs
+	dev-cpp/gtest:="
 
 DEPEND="${RDEPEND}"
 
diff --git a/media-libs/cros-camera-libcab/cros-camera-libcab-0.0.1-r476.ebuild b/media-libs/cros-camera-libcab/cros-camera-libcab-0.0.1-r476.ebuild
deleted file mode 100644
index eb1ef36..0000000
--- a/media-libs/cros-camera-libcab/cros-camera-libcab-0.0.1-r476.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcab"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Camera algorithm bridge library for proprietary camera algorithm
-isolation"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="camera_feature_portrait_mode ipu6se"
-
-RDEPEND="
-	!media-libs/arc-camera3-libcab
-	camera_feature_portrait_mode? ( media-libs/cros-camera-libcam_gpu_algo )
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_ipc"
-
-DEPEND="${RDEPEND}"
-
-src_install() {
-	platform_src_install
-	dobin "${OUT}/cros_camera_algo"
-
-	dolib.a "${OUT}/libcab.pic.a"
-
-	cros-camera_doheader ../../include/cros-camera/camera_algorithm.h \
-		../../include/cros-camera/camera_algorithm_bridge.h
-
-	cros-camera_dopc ../libcab.pc.template
-
-	insinto /etc/init
-	doins ../init/cros-camera-algo.conf
-
-	insinto /etc/dbus-1/system.d
-	doins ../dbus/CrosCameraAlgo.conf
-
-	insinto "/usr/share/policy"
-	newins "../cros-camera-algo-${ARCH}.policy" cros-camera-algo.policy
-
-	# The sandboxed GPU service is used by Portrait Mode feature and IPU6SE
-	# camera HAL.
-	if use camera_feature_portrait_mode || use ipu6se ; then
-		insinto /etc/init
-		doins ../init/cros-camera-gpu-algo.conf
-
-		insinto "/usr/share/policy"
-		newins "../cros-camera-gpu-algo-${ARCH}.policy" cros-camera-gpu-algo.policy
-	fi
-}
diff --git a/media-libs/cros-camera-libcab/cros-camera-libcab-9999.ebuild b/media-libs/cros-camera-libcab/cros-camera-libcab-9999.ebuild
deleted file mode 100644
index f5c3d95..0000000
--- a/media-libs/cros-camera-libcab/cros-camera-libcab-9999.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcab"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Camera algorithm bridge library for proprietary camera algorithm
-isolation"
-
-LICENSE="BSD-Google"
-KEYWORDS="~*"
-IUSE="camera_feature_portrait_mode ipu6se"
-
-RDEPEND="
-	!media-libs/arc-camera3-libcab
-	camera_feature_portrait_mode? ( media-libs/cros-camera-libcam_gpu_algo )
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_ipc"
-
-DEPEND="${RDEPEND}"
-
-src_install() {
-	platform_src_install
-	dobin "${OUT}/cros_camera_algo"
-
-	dolib.a "${OUT}/libcab.pic.a"
-
-	cros-camera_doheader ../../include/cros-camera/camera_algorithm.h \
-		../../include/cros-camera/camera_algorithm_bridge.h
-
-	cros-camera_dopc ../libcab.pc.template
-
-	insinto /etc/init
-	doins ../init/cros-camera-algo.conf
-
-	insinto /etc/dbus-1/system.d
-	doins ../dbus/CrosCameraAlgo.conf
-
-	insinto "/usr/share/policy"
-	newins "../cros-camera-algo-${ARCH}.policy" cros-camera-algo.policy
-
-	# The sandboxed GPU service is used by Portrait Mode feature and IPU6SE
-	# camera HAL.
-	if use camera_feature_portrait_mode || use ipu6se ; then
-		insinto /etc/init
-		doins ../init/cros-camera-gpu-algo.conf
-
-		insinto "/usr/share/policy"
-		newins "../cros-camera-gpu-algo-${ARCH}.policy" cros-camera-gpu-algo.policy
-	fi
-}
diff --git a/media-libs/cros-camera-libcam_gpu_algo/cros-camera-libcam_gpu_algo-0.0.1-r201.ebuild b/media-libs/cros-camera-libcam_gpu_algo/cros-camera-libcam_gpu_algo-0.0.1-r201.ebuild
deleted file mode 100644
index d2284c6..0000000
--- a/media-libs/cros-camera-libcam_gpu_algo/cros-camera-libcam_gpu_algo-0.0.1-r201.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcam_gpu_algo"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera GPU algorithm library."
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="media-libs/cros-camera-effect-portrait-mode"
-
-DEPEND="${RDEPEND}"
-
-src_install() {
-	dolib.so "${OUT}/lib/libcam_gpu_algo.so"
-}
diff --git a/media-libs/cros-camera-libcam_gpu_algo/cros-camera-libcam_gpu_algo-9999.ebuild b/media-libs/cros-camera-libcam_gpu_algo/cros-camera-libcam_gpu_algo-9999.ebuild
deleted file mode 100644
index 4bf64ee..0000000
--- a/media-libs/cros-camera-libcam_gpu_algo/cros-camera-libcam_gpu_algo-9999.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcam_gpu_algo"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera GPU algorithm library."
-
-LICENSE="BSD-Google"
-KEYWORDS="~*"
-
-RDEPEND="media-libs/cros-camera-effect-portrait-mode"
-
-DEPEND="${RDEPEND}"
-
-src_install() {
-	dolib.so "${OUT}/lib/libcam_gpu_algo.so"
-}
diff --git a/media-libs/cros-camera-libcamera_client/cros-camera-libcamera_client-0.0.1-r267.ebuild b/media-libs/cros-camera-libcamera_client/cros-camera-libcamera_client-0.0.1-r267.ebuild
deleted file mode 100644
index da223e0..0000000
--- a/media-libs/cros-camera-libcamera_client/cros-camera-libcamera_client-0.0.1-r267.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "e35f965a2c3451a2fe74ceb04da2875e20d17f95" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/android common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/android/libcamera_client"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Android libcamera_client"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	!media-libs/arc-camera3-libcamera_client
-	media-libs/cros-camera-libcamera_metadata"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-android-headers"
-
-src_install() {
-	platform_src_install
-	local INCLUDE_DIR="/usr/include/android"
-	local LIB_DIR="/usr/$(get_libdir)"
-	local PC_FILE_TEMPLATE=libcamera_client.pc.template
-	local PC_FILE="${WORKDIR}/${PC_FILE_TEMPLATE##*/}"
-	PC_FILE="${PC_FILE%%.template}"
-
-	dolib.so "${OUT}/lib/libcamera_client.so"
-
-	insinto "${INCLUDE_DIR}/camera"
-	doins include/camera/*.h
-
-	sed -e "s|@INCLUDE_DIR@|${INCLUDE_DIR}|" -e "s|@LIB_DIR@|${LIB_DIR}|" \
-		"${PC_FILE_TEMPLATE}" > "${PC_FILE}"
-	insinto "${LIB_DIR}/pkgconfig"
-	doins "${PC_FILE}"
-}
diff --git a/media-libs/cros-camera-libcamera_client/cros-camera-libcamera_client-9999.ebuild b/media-libs/cros-camera-libcamera_client/cros-camera-libcamera_client-9999.ebuild
deleted file mode 100644
index c39b03d..0000000
--- a/media-libs/cros-camera-libcamera_client/cros-camera-libcamera_client-9999.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/android common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/android/libcamera_client"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Android libcamera_client"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-
-RDEPEND="
-	!media-libs/arc-camera3-libcamera_client
-	media-libs/cros-camera-libcamera_metadata"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-android-headers"
-
-src_install() {
-	platform_src_install
-	local INCLUDE_DIR="/usr/include/android"
-	local LIB_DIR="/usr/$(get_libdir)"
-	local PC_FILE_TEMPLATE=libcamera_client.pc.template
-	local PC_FILE="${WORKDIR}/${PC_FILE_TEMPLATE##*/}"
-	PC_FILE="${PC_FILE%%.template}"
-
-	dolib.so "${OUT}/lib/libcamera_client.so"
-
-	insinto "${INCLUDE_DIR}/camera"
-	doins include/camera/*.h
-
-	sed -e "s|@INCLUDE_DIR@|${INCLUDE_DIR}|" -e "s|@LIB_DIR@|${LIB_DIR}|" \
-		"${PC_FILE_TEMPLATE}" > "${PC_FILE}"
-	insinto "${LIB_DIR}/pkgconfig"
-	doins "${PC_FILE}"
-}
diff --git a/media-libs/cros-camera-libcamera_common/cros-camera-libcamera_common-0.0.1-r462.ebuild b/media-libs/cros-camera-libcamera_common/cros-camera-libcamera_common-0.0.1-r462.ebuild
deleted file mode 100644
index b538d08c..0000000
--- a/media-libs/cros-camera-libcamera_common/cros-camera-libcamera_common-0.0.1-r462.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_common"
-CROS_CAMERA_TESTS=(
-	"future_test"
-)
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS HAL common util."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	!media-libs/arc-camera3-libcamera_common
-	virtual/libudev"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_common.so"
-
-	cros-camera_doheader ../../include/cros-camera/common.h \
-		../../include/cros-camera/constants.h \
-		../../include/cros-camera/cros_camera_hal.h \
-		../../include/cros-camera/export.h \
-		../../include/cros-camera/future.h \
-		../../include/cros-camera/future_internal.h \
-		../../include/cros-camera/camera_thread.h
-
-	cros-camera_dopc ../libcamera_common.pc.template
-}
diff --git a/media-libs/cros-camera-libcamera_common/cros-camera-libcamera_common-9999.ebuild b/media-libs/cros-camera-libcamera_common/cros-camera-libcamera_common-9999.ebuild
deleted file mode 100644
index a84bd36..0000000
--- a/media-libs/cros-camera-libcamera_common/cros-camera-libcamera_common-9999.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_common"
-CROS_CAMERA_TESTS=(
-	"future_test"
-)
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS HAL common util."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-
-RDEPEND="
-	!media-libs/arc-camera3-libcamera_common
-	virtual/libudev"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_common.so"
-
-	cros-camera_doheader ../../include/cros-camera/common.h \
-		../../include/cros-camera/constants.h \
-		../../include/cros-camera/cros_camera_hal.h \
-		../../include/cros-camera/export.h \
-		../../include/cros-camera/future.h \
-		../../include/cros-camera/future_internal.h \
-		../../include/cros-camera/camera_thread.h
-
-	cros-camera_dopc ../libcamera_common.pc.template
-}
diff --git a/media-libs/cros-camera-libcamera_connector/cros-camera-libcamera_connector-0.0.1-r164.ebuild b/media-libs/cros-camera-libcamera_connector/cros-camera-libcamera_connector-0.0.1-r164.ebuild
deleted file mode 100644
index e046bef..0000000
--- a/media-libs/cros-camera-libcamera_connector/cros-camera-libcamera_connector-0.0.1-r164.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_connector"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera connector for simpler uses."
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-BDEPEND="virtual/pkgconfig"
-
-RDEPEND="
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_ipc
-	media-libs/cros-camera-libcamera_metadata
-	media-libs/libsync"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-android-headers
-	media-libs/cros-camera-libcamera_connector_headers
-	x11-libs/libdrm"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_connector.so"
-	cros-camera_dopc ../libcamera_connector.pc.template
-}
-
diff --git a/media-libs/cros-camera-libcamera_connector/cros-camera-libcamera_connector-9999.ebuild b/media-libs/cros-camera-libcamera_connector/cros-camera-libcamera_connector-9999.ebuild
deleted file mode 100644
index 5066c18..0000000
--- a/media-libs/cros-camera-libcamera_connector/cros-camera-libcamera_connector-9999.ebuild
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_connector"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera connector for simpler uses."
-
-LICENSE="BSD-Google"
-KEYWORDS="~*"
-
-BDEPEND="virtual/pkgconfig"
-
-RDEPEND="
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_ipc
-	media-libs/cros-camera-libcamera_metadata
-	media-libs/libsync"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-android-headers
-	media-libs/cros-camera-libcamera_connector_headers
-	x11-libs/libdrm"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_connector.so"
-	cros-camera_dopc ../libcamera_connector.pc.template
-}
-
diff --git a/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r143.ebuild b/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r143.ebuild
deleted file mode 100644
index 0b222ad..0000000
--- a/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r143.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_connector_test"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera connector test."
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-RDEPEND="
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_connector
-	dev-cpp/gtest:=
-	media-libs/libyuv
-	virtual/jpeg:0"
-
-DEPEND="${RDEPEND}"
-
-BDEPEND="virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dobin "${OUT}/cros_camera_connector_test"
-}
diff --git a/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r229.ebuild b/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r229.ebuild
new file mode 100644
index 0000000..b40cb66
--- /dev/null
+++ b/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-0.0.1-r229.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "049eedf136293a1ab81617017200cb31032eb384" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/common/libcamera_connector_test"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="Chrome OS camera connector test."
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/cros-camera-libs:=
+	dev-cpp/gtest:=
+	media-libs/libyuv
+	virtual/jpeg:0"
+
+DEPEND="${RDEPEND}"
+
+BDEPEND="virtual/pkgconfig"
+
+src_install() {
+	platform_src_install
+	dobin "${OUT}/cros_camera_connector_test"
+}
diff --git a/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-9999.ebuild b/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-9999.ebuild
index cff452c..3874adb 100644
--- a/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-9999.ebuild
+++ b/media-libs/cros-camera-libcamera_connector_test/cros-camera-libcamera_connector_test-9999.ebuild
@@ -19,8 +19,7 @@
 KEYWORDS="~*"
 
 RDEPEND="
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_connector
+	chromeos-base/cros-camera-libs:=
 	dev-cpp/gtest:=
 	media-libs/libyuv
 	virtual/jpeg:0"
diff --git a/media-libs/cros-camera-libcamera_exif/cros-camera-libcamera_exif-0.0.1-r459.ebuild b/media-libs/cros-camera-libcamera_exif/cros-camera-libcamera_exif-0.0.1-r459.ebuild
deleted file mode 100644
index ccbf2b9..0000000
--- a/media-libs/cros-camera-libcamera_exif/cros-camera-libcamera_exif-0.0.1-r459.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_exif"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera HAL exif util."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	!media-libs/arc-camera3-libcamera_exif
-	media-libs/libexif"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_exif.so"
-
-	cros-camera_doheader ../../include/cros-camera/exif_utils.h
-
-	cros-camera_dopc ../libcamera_exif.pc.template
-}
diff --git a/media-libs/cros-camera-libcamera_exif/cros-camera-libcamera_exif-9999.ebuild b/media-libs/cros-camera-libcamera_exif/cros-camera-libcamera_exif-9999.ebuild
deleted file mode 100644
index db27a99..0000000
--- a/media-libs/cros-camera-libcamera_exif/cros-camera-libcamera_exif-9999.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_exif"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera HAL exif util."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-
-RDEPEND="
-	!media-libs/arc-camera3-libcamera_exif
-	media-libs/libexif"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_exif.so"
-
-	cros-camera_doheader ../../include/cros-camera/exif_utils.h
-
-	cros-camera_dopc ../libcamera_exif.pc.template
-}
diff --git a/media-libs/cros-camera-libcamera_ipc/cros-camera-libcamera_ipc-0.0.1-r467.ebuild b/media-libs/cros-camera-libcamera_ipc/cros-camera-libcamera_ipc-0.0.1-r467.ebuild
deleted file mode 100644
index f3f0333..0000000
--- a/media-libs/cros-camera-libcamera_ipc/cros-camera-libcamera_ipc-0.0.1-r467.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_ipc"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS HAL IPC util."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="media-libs/cros-camera-libcamera_metadata"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-libcamera_common
-	virtual/pkgconfig"
-
-src_configure() {
-	cros_optimize_package_for_speed
-	platform_src_configure
-}
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_ipc.so"
-	dolib.a "${OUT}/libcamera_ipc_mojom.a"
-
-	cros-camera_doheader \
-		../../include/cros-camera/camera_mojo_channel_manager_token.h
-
-	cros-camera_dopc ../libcamera_ipc.pc.template
-}
diff --git a/media-libs/cros-camera-libcamera_ipc/cros-camera-libcamera_ipc-9999.ebuild b/media-libs/cros-camera-libcamera_ipc/cros-camera-libcamera_ipc-9999.ebuild
deleted file mode 100644
index af56568..0000000
--- a/media-libs/cros-camera-libcamera_ipc/cros-camera-libcamera_ipc-9999.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_ipc"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS HAL IPC util."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-
-RDEPEND="media-libs/cros-camera-libcamera_metadata"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-libcamera_common
-	virtual/pkgconfig"
-
-src_configure() {
-	cros_optimize_package_for_speed
-	platform_src_configure
-}
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_ipc.so"
-	dolib.a "${OUT}/libcamera_ipc_mojom.a"
-
-	cros-camera_doheader \
-		../../include/cros-camera/camera_mojo_channel_manager_token.h
-
-	cros-camera_dopc ../libcamera_ipc.pc.template
-}
diff --git a/media-libs/cros-camera-libcamera_metadata/cros-camera-libcamera_metadata-0.0.1-r267.ebuild b/media-libs/cros-camera-libcamera_metadata/cros-camera-libcamera_metadata-0.0.1-r267.ebuild
deleted file mode 100644
index ede53de..0000000
--- a/media-libs/cros-camera-libcamera_metadata/cros-camera-libcamera_metadata-0.0.1-r267.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "e35f965a2c3451a2fe74ceb04da2875e20d17f95" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/android common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/android/libcamera_metadata"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Android libcamera_metadata"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan"
-
-RDEPEND="!media-libs/arc-camera3-libcamera_metadata"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-android-headers"
-
-src_install() {
-	platform_src_install
-	local INCLUDE_DIR="/usr/include/android"
-	local LIB_DIR="/usr/$(get_libdir)"
-	local PC_FILE_TEMPLATE="libcamera_metadata.pc.template"
-	local PC_FILE="${WORKDIR}/${PC_FILE_TEMPLATE##*/}"
-	PC_FILE="${PC_FILE%%.template}"
-
-	dolib.so "${OUT}/lib/libcamera_metadata.so"
-
-	insinto "${INCLUDE_DIR}/system"
-	doins "include/system"/*.h
-	# Install into the system folder to avoid cros lint complaint of "include the
-	# directory when naming .h files"
-	doins "include/camera_metadata_hidden.h"
-
-	sed -e "s|@INCLUDE_DIR@|${INCLUDE_DIR}|" -e "s|@LIB_DIR@|${LIB_DIR}|" \
-		"${PC_FILE_TEMPLATE}" > "${PC_FILE}"
-	insinto "${LIB_DIR}/pkgconfig"
-	doins "${PC_FILE}"
-}
diff --git a/media-libs/cros-camera-libcamera_metadata/cros-camera-libcamera_metadata-9999.ebuild b/media-libs/cros-camera-libcamera_metadata/cros-camera-libcamera_metadata-9999.ebuild
deleted file mode 100644
index 9afe9d1..0000000
--- a/media-libs/cros-camera-libcamera_metadata/cros-camera-libcamera_metadata-9999.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/android common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/android/libcamera_metadata"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Android libcamera_metadata"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-IUSE="-asan"
-
-RDEPEND="!media-libs/arc-camera3-libcamera_metadata"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-android-headers"
-
-src_install() {
-	platform_src_install
-	local INCLUDE_DIR="/usr/include/android"
-	local LIB_DIR="/usr/$(get_libdir)"
-	local PC_FILE_TEMPLATE="libcamera_metadata.pc.template"
-	local PC_FILE="${WORKDIR}/${PC_FILE_TEMPLATE##*/}"
-	PC_FILE="${PC_FILE%%.template}"
-
-	dolib.so "${OUT}/lib/libcamera_metadata.so"
-
-	insinto "${INCLUDE_DIR}/system"
-	doins "include/system"/*.h
-	# Install into the system folder to avoid cros lint complaint of "include the
-	# directory when naming .h files"
-	doins "include/camera_metadata_hidden.h"
-
-	sed -e "s|@INCLUDE_DIR@|${INCLUDE_DIR}|" -e "s|@LIB_DIR@|${LIB_DIR}|" \
-		"${PC_FILE_TEMPLATE}" > "${PC_FILE}"
-	insinto "${LIB_DIR}/pkgconfig"
-	doins "${PC_FILE}"
-}
diff --git a/media-libs/cros-camera-libcamera_timezone/cros-camera-libcamera_timezone-0.0.1-r459.ebuild b/media-libs/cros-camera-libcamera_timezone/cros-camera-libcamera_timezone-0.0.1-r459.ebuild
deleted file mode 100644
index 7e6e33a..0000000
--- a/media-libs/cros-camera-libcamera_timezone/cros-camera-libcamera_timezone-0.0.1-r459.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_timezone"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera HAL Time zone util."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="!media-libs/arc-camera3-libcamera_timezone"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_timezone.so"
-
-	cros-camera_doheader ../../include/cros-camera/timezone.h
-
-	cros-camera_dopc ../libcamera_timezone.pc.template
-}
diff --git a/media-libs/cros-camera-libcamera_timezone/cros-camera-libcamera_timezone-9999.ebuild b/media-libs/cros-camera-libcamera_timezone/cros-camera-libcamera_timezone-9999.ebuild
deleted file mode 100644
index 9266dea..0000000
--- a/media-libs/cros-camera-libcamera_timezone/cros-camera-libcamera_timezone-9999.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcamera_timezone"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera HAL Time zone util."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-
-RDEPEND="!media-libs/arc-camera3-libcamera_timezone"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_timezone.so"
-
-	cros-camera_doheader ../../include/cros-camera/timezone.h
-
-	cros-camera_dopc ../libcamera_timezone.pc.template
-}
diff --git a/media-libs/cros-camera-libcamera_v4l2_device/cros-camera-libcamera_v4l2_device-0.0.1-r332.ebuild b/media-libs/cros-camera-libcamera_v4l2_device/cros-camera-libcamera_v4l2_device-0.0.1-r332.ebuild
deleted file mode 100644
index eda4cdd..0000000
--- a/media-libs/cros-camera-libcamera_v4l2_device/cros-camera-libcamera_v4l2_device-0.0.1-r332.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2837ddd0fde71236264c417fc5874ba3646d9a46"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "eb9df75b6c32a195902d080a694fe01bc4abca05" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common/v4l2_device camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/v4l2_device"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera HAL v3 V4L2 device utility."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND=""
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_v4l2_device.so"
-
-	cros-camera_doheader ../../include/cros-camera/v4l2_device.h
-
-	cros-camera_dopc libcamera_v4l2_device.pc.template
-}
diff --git a/media-libs/cros-camera-libcamera_v4l2_device/cros-camera-libcamera_v4l2_device-9999.ebuild b/media-libs/cros-camera-libcamera_v4l2_device/cros-camera-libcamera_v4l2_device-9999.ebuild
deleted file mode 100644
index 5e36fdc..0000000
--- a/media-libs/cros-camera-libcamera_v4l2_device/cros-camera-libcamera_v4l2_device-9999.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common/v4l2_device camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/v4l2_device"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera HAL v3 V4L2 device utility."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-
-RDEPEND=""
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcamera_v4l2_device.so"
-
-	cros-camera_doheader ../../include/cros-camera/v4l2_device.h
-
-	cros-camera_dopc libcamera_v4l2_device.pc.template
-}
diff --git a/media-libs/cros-camera-libcbm/cros-camera-libcbm-0.0.1-r460.ebuild b/media-libs/cros-camera-libcbm/cros-camera-libcbm-0.0.1-r460.ebuild
deleted file mode 100644
index addec73..0000000
--- a/media-libs/cros-camera-libcbm/cros-camera-libcbm-0.0.1-r460.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcbm"
-CROS_CAMERA_TESTS=(
-	"cbm_test"
-)
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera HAL buffer manager."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	!media-libs/arc-camera3-libcbm
-	media-libs/minigbm
-	x11-libs/libdrm"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-android-headers
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcbm.so"
-
-	cros-camera_doheader ../../include/cros-camera/camera_buffer_manager.h
-
-	cros-camera_dopc ../libcbm.pc.template
-}
diff --git a/media-libs/cros-camera-libcbm/cros-camera-libcbm-9999.ebuild b/media-libs/cros-camera-libcbm/cros-camera-libcbm-9999.ebuild
deleted file mode 100644
index e29cb3c..0000000
--- a/media-libs/cros-camera-libcbm/cros-camera-libcbm-9999.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/libcbm"
-CROS_CAMERA_TESTS=(
-	"cbm_test"
-)
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera HAL buffer manager."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-
-RDEPEND="
-	!media-libs/arc-camera3-libcbm
-	media-libs/minigbm
-	x11-libs/libdrm"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-android-headers
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.so "${OUT}/lib/libcbm.so"
-
-	cros-camera_doheader ../../include/cros-camera/camera_buffer_manager.h
-
-	cros-camera_dopc ../libcbm.pc.template
-}
diff --git a/media-libs/cros-camera-libhdr/Manifest b/media-libs/cros-camera-libhdr/Manifest
new file mode 100644
index 0000000..5d57832
--- /dev/null
+++ b/media-libs/cros-camera-libhdr/Manifest
@@ -0,0 +1 @@
+DIST chromeos-camera-libhdr-2021.06.11.tar.bz2 58149976 BLAKE2B 746e3763f3bdeafb8e10dcd1da9538b3022f58a17bb4730619db657ca15f7aea06ee160c6702168779dbce394ef07202054f4799a6805446d9efd633955a6e16 SHA512 31bfea9c53f77b4625eeefa9e7c7ead7497e7d0192b2fd12e814a341bdcd48297cf8108012e6c2b82bbcd3d8ec7c2d10ccf04ae1fd81ff429ec4d5b73b8c5a8a
diff --git a/media-libs/cros-camera-libhdr/OWNERS b/media-libs/cros-camera-libhdr/OWNERS
new file mode 100644
index 0000000..8f44c3e
--- /dev/null
+++ b/media-libs/cros-camera-libhdr/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/cros-camera-libhdr/cros-camera-libhdr-2021.06.11-r1.ebuild b/media-libs/cros-camera-libhdr/cros-camera-libhdr-2021.06.11-r1.ebuild
new file mode 120000
index 0000000..b8dce42
--- /dev/null
+++ b/media-libs/cros-camera-libhdr/cros-camera-libhdr-2021.06.11-r1.ebuild
@@ -0,0 +1 @@
+cros-camera-libhdr-2021.06.11.ebuild
\ No newline at end of file
diff --git a/media-libs/cros-camera-libhdr/cros-camera-libhdr-2021.06.11.ebuild b/media-libs/cros-camera-libhdr/cros-camera-libhdr-2021.06.11.ebuild
new file mode 100644
index 0000000..ae069f0
--- /dev/null
+++ b/media-libs/cros-camera-libhdr/cros-camera-libhdr-2021.06.11.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Chrome OS HDR related libraries ported from google3."
+
+IUSE="march_goldmont"
+
+SRC_URI="gs://chromeos-localmirror/distfiles/chromeos-camera-libhdr-${PV}.tar.bz2"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+S="${WORKDIR}"
+
+src_install() {
+	# march USE flag check should be put before amd64, arm, and arm64.
+	local march_path
+	if use march_goldmont; then
+		march_path="x86_64-goldmont"
+	elif use amd64; then
+		march_path="x86_64"
+	fi
+	einfo "Installing binaries built with march ${march_path}"
+
+	local libraries=(
+		"libhdrnet_cros.so"
+		"libgcam_ae_cros.so"
+	)
+	for library in "${libraries[@]}"; do
+		dolib.so "./${march_path}/${library}"
+	done
+
+	# Install header files.
+	insinto /usr/include/cros-camera
+	doins ./*.h
+}
diff --git a/media-libs/cros-camera-libjda/cros-camera-libjda-0.0.1-r539.ebuild b/media-libs/cros-camera-libjda/cros-camera-libjda-0.0.1-r539.ebuild
deleted file mode 100644
index 2d552e0..0000000
--- a/media-libs/cros-camera-libjda/cros-camera-libjda-0.0.1-r539.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk metrics"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/jpeg/libjda"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Library for using JPEG Decode Accelerator in Chrome"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_ipc"
-
-# cros-camera-libcbm is needed here because this package uses
-# //camera/common:libcamera_metrics rule. It doesn't directly use the package,
-# but another rule in that BUILD.gn requires libcbm upon opening the .gn file.
-# See crbug.com/995162 for detail.
-DEPEND="${RDEPEND}
-	>=chromeos-base/metrics-0.0.1-r3152
-	media-libs/cros-camera-libcbm
-	media-libs/libyuv
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.a "${OUT}/libjda.pic.a"
-
-	cros-camera_doheader ../../../include/cros-camera/jpeg_decode_accelerator.h
-
-	cros-camera_dopc ../libjda.pc.template
-}
diff --git a/media-libs/cros-camera-libjda/cros-camera-libjda-9999.ebuild b/media-libs/cros-camera-libjda/cros-camera-libjda-9999.ebuild
deleted file mode 100644
index 2d0caf5..0000000
--- a/media-libs/cros-camera-libjda/cros-camera-libjda-9999.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk metrics"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/jpeg/libjda"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Library for using JPEG Decode Accelerator in Chrome"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="~*"
-
-RDEPEND="
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_ipc"
-
-# cros-camera-libcbm is needed here because this package uses
-# //camera/common:libcamera_metrics rule. It doesn't directly use the package,
-# but another rule in that BUILD.gn requires libcbm upon opening the .gn file.
-# See crbug.com/995162 for detail.
-DEPEND="${RDEPEND}
-	>=chromeos-base/metrics-0.0.1-r3152
-	media-libs/cros-camera-libcbm
-	media-libs/libyuv
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dolib.a "${OUT}/libjda.pic.a"
-
-	cros-camera_doheader ../../../include/cros-camera/jpeg_decode_accelerator.h
-
-	cros-camera_dopc ../libjda.pc.template
-}
diff --git a/media-libs/cros-camera-libjda_test/cros-camera-libjda_test-0.0.1-r463.ebuild b/media-libs/cros-camera-libjda_test/cros-camera-libjda_test-0.0.1-r463.ebuild
deleted file mode 100644
index 431db5d..0000000
--- a/media-libs/cros-camera-libjda_test/cros-camera-libjda_test-0.0.1-r463.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/jpeg/libjda_test"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="End to end test for JPEG decode accelerator"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="dev-cpp/gtest"
-
-DEPEND="${RDEPEND}
-	media-libs/cros-camera-libjda"
-
-src_install() {
-	platform_src_install
-	dobin "${OUT}/libjda_test"
-}
diff --git a/media-libs/cros-camera-libjda_test/cros-camera-libjda_test-0.0.1-r549.ebuild b/media-libs/cros-camera-libjda_test/cros-camera-libjda_test-0.0.1-r549.ebuild
new file mode 100644
index 0000000..9491a2a
--- /dev/null
+++ b/media-libs/cros-camera-libjda_test/cros-camera-libjda_test-0.0.1-r549.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "049eedf136293a1ab81617017200cb31032eb384" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/common/jpeg/libjda_test"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="End to end test for JPEG decode accelerator"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="dev-cpp/gtest"
+
+DEPEND="${RDEPEND}
+	chromeos-base/cros-camera-libs"
+
+src_install() {
+	platform_src_install
+	dobin "${OUT}/libjda_test"
+}
diff --git a/media-libs/cros-camera-libjda_test/cros-camera-libjda_test-9999.ebuild b/media-libs/cros-camera-libjda_test/cros-camera-libjda_test-9999.ebuild
index a9489ae..9ea1d18 100644
--- a/media-libs/cros-camera-libjda_test/cros-camera-libjda_test-9999.ebuild
+++ b/media-libs/cros-camera-libjda_test/cros-camera-libjda_test-9999.ebuild
@@ -5,7 +5,7 @@
 
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -22,7 +22,7 @@
 RDEPEND="dev-cpp/gtest"
 
 DEPEND="${RDEPEND}
-	media-libs/cros-camera-libjda"
+	chromeos-base/cros-camera-libs"
 
 src_install() {
 	platform_src_install
diff --git a/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r516.ebuild b/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r516.ebuild
deleted file mode 100644
index 56deb7d..0000000
--- a/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r516.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8d228c8e702aebee142bcbf0763a15786eb5b3bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk metrics"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/common/jpeg/libjea_test"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="End to end test for JPEG encode accelerator"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="
-	>=chromeos-base/metrics-0.0.1-r3152
-	dev-cpp/gtest:=
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_exif
-	media-libs/cros-camera-libcamera_ipc
-	media-libs/cros-camera-libcamera_metadata
-	media-libs/cros-camera-libcbm
-	media-libs/libyuv"
-
-DEPEND="${RDEPEND}
-	>=chromeos-base/metrics-0.0.1-r3152
-	media-libs/libyuv
-	media-libs/cros-camera-android-headers"
-
-src_install() {
-	platform_src_install
-	dobin "${OUT}/libjea_test"
-}
diff --git a/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r602.ebuild b/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r602.ebuild
new file mode 100644
index 0000000..9e6544b
--- /dev/null
+++ b/media-libs/cros-camera-libjea_test/cros-camera-libjea_test-0.0.1-r602.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "049eedf136293a1ab81617017200cb31032eb384" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/common/jpeg/libjea_test"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="End to end test for JPEG encode accelerator"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/cros-camera-android-deps
+	chromeos-base/cros-camera-libs
+	dev-cpp/gtest:=
+	media-libs/libyuv"
+
+DEPEND="${RDEPEND}"
+
+src_install() {
+	platform_src_install
+	dobin "${OUT}/libjea_test"
+}
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 79f48c9..0f48fa9 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
@@ -5,7 +5,7 @@
 
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/mojo common-mk metrics"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include common-mk"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -20,19 +20,12 @@
 KEYWORDS="~*"
 
 RDEPEND="
-	>=chromeos-base/metrics-0.0.1-r3152
+	chromeos-base/cros-camera-android-deps
+	chromeos-base/cros-camera-libs
 	dev-cpp/gtest:=
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_exif
-	media-libs/cros-camera-libcamera_ipc
-	media-libs/cros-camera-libcamera_metadata
-	media-libs/cros-camera-libcbm
 	media-libs/libyuv"
 
-DEPEND="${RDEPEND}
-	>=chromeos-base/metrics-0.0.1-r3152
-	media-libs/libyuv
-	media-libs/cros-camera-android-headers"
+DEPEND="${RDEPEND}"
 
 src_install() {
 	platform_src_install
diff --git a/media-libs/cros-camera-test/cros-camera-test-0.0.1-r507.ebuild b/media-libs/cros-camera-test/cros-camera-test-0.0.1-r507.ebuild
deleted file mode 100644
index 61b645b..0000000
--- a/media-libs/cros-camera-test/cros-camera-test-0.0.1-r507.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "5de48d650f4a9303ff1997126f3bc7feb3532b67" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "ffccaa8b7bb1b063ae1051517543023ce055ef35" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-# TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE=".gn camera/build camera/camera3_test camera/common camera/include camera/mojo chromeos-config common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/camera3_test"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera HAL native test."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan"
-
-RDEPEND="
-	chromeos-base/chromeos-config-tools
-	!media-libs/arc-camera3-test
-	media-libs/cros-camera-libcamera_client
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_metadata
-	media-libs/cros-camera-libcbm
-	media-libs/libexif
-	media-libs/libsync
-	media-libs/minigbm
-	virtual/jpeg:0"
-
-DEPEND="${RDEPEND}
-	dev-cpp/gtest:=
-	media-libs/cros-camera-android-headers
-	media-libs/libyuv
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dobin "${OUT}/cros_camera_test"
-}
diff --git a/media-libs/cros-camera-test/cros-camera-test-0.0.1-r621.ebuild b/media-libs/cros-camera-test/cros-camera-test-0.0.1-r621.ebuild
new file mode 100644
index 0000000..b1122bf
--- /dev/null
+++ b/media-libs/cros-camera-test/cros-camera-test-0.0.1-r621.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "686790e236933c99eeef7eed68f3b4c7ca629daf" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "049eedf136293a1ab81617017200cb31032eb384" "aa0612733aca2d5ffa65470f07408228b473ebdb" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+# TODO(crbug.com/809389): Avoid directly including headers from other packages.
+CROS_WORKON_SUBTREE=".gn camera/build camera/camera3_test camera/common camera/include chromeos-config common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/camera3_test"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="Chrome OS camera HAL native test."
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="-asan"
+
+RDEPEND="
+	>=chromeos-base/cros-camera-libs-0.0.1-r34:=
+	chromeos-base/chromeos-config-tools
+	chromeos-base/cros-camera-android-deps
+	media-libs/libexif
+	media-libs/libsync
+	media-libs/minigbm
+	virtual/jpeg:0"
+
+DEPEND="${RDEPEND}
+	dev-cpp/gtest:=
+	media-libs/libyuv
+	virtual/pkgconfig"
+
+src_install() {
+	platform_src_install
+	dobin "${OUT}/cros_camera_test"
+}
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 2e0c3b6..203053b 100644
--- a/media-libs/cros-camera-test/cros-camera-test-9999.ebuild
+++ b/media-libs/cros-camera-test/cros-camera-test-9999.ebuild
@@ -6,7 +6,7 @@
 CROS_WORKON_PROJECT="chromiumos/platform2"
 CROS_WORKON_LOCALNAME="../platform2"
 # TODO(crbug.com/809389): Avoid directly including headers from other packages.
-CROS_WORKON_SUBTREE=".gn camera/build camera/camera3_test camera/common camera/include camera/mojo chromeos-config common-mk"
+CROS_WORKON_SUBTREE=".gn camera/build camera/camera3_test camera/common camera/include chromeos-config common-mk"
 CROS_WORKON_OUTOFTREE_BUILD="1"
 CROS_WORKON_INCREMENTAL_BUILD="1"
 
@@ -22,12 +22,9 @@
 IUSE="-asan"
 
 RDEPEND="
+	>=chromeos-base/cros-camera-libs-0.0.1-r34:=
 	chromeos-base/chromeos-config-tools
-	!media-libs/arc-camera3-test
-	media-libs/cros-camera-libcamera_client
-	media-libs/cros-camera-libcamera_common
-	media-libs/cros-camera-libcamera_metadata
-	media-libs/cros-camera-libcbm
+	chromeos-base/cros-camera-android-deps
 	media-libs/libexif
 	media-libs/libsync
 	media-libs/minigbm
@@ -35,7 +32,6 @@
 
 DEPEND="${RDEPEND}
 	dev-cpp/gtest:=
-	media-libs/cros-camera-android-headers
 	media-libs/libyuv
 	virtual/pkgconfig"
 
diff --git a/media-libs/cros-camera-v4l2_test/cros-camera-v4l2_test-0.0.1-r343.ebuild b/media-libs/cros-camera-v4l2_test/cros-camera-v4l2_test-0.0.1-r343.ebuild
deleted file mode 100644
index d587657..0000000
--- a/media-libs/cros-camera-v4l2_test/cros-camera-v4l2_test-0.0.1-r343.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-CROS_WORKON_COMMIT="2984cf2ed1586421495a61cd26987d7a9773d25b"
-CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "c920da127f686c434165b6056b1cd740f228df6b" "118ea4fce453b577679378bbfce57e1be03e86ae" "b4e6727c0b89ed2bfb186ca205366bab69948ccb" "347cdef009360a54e6d1dfc2b382bc812b2a55db" "4a9d701c1716dbba6b3de3a9927299f399ec4580" "52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/hal/usb chromeos-config common-mk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-PLATFORM_SUBDIR="camera/hal/usb/v4l2_test"
-
-inherit cros-camera cros-workon platform
-
-DESCRIPTION="Chrome OS camera V4L2 test."
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="generated_cros_config unibuild"
-
-RDEPEND="
-	chromeos-base/chromeos-config-tools
-	chromeos-base/libbrillo:=
-	dev-cpp/gtest:=
-	dev-libs/re2:=
-	media-libs/libyuv
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp )
-	)
-	virtual/jpeg:0"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-src_install() {
-	platform_src_install
-	dobin "${OUT}/media_v4l2_is_capture_device"
-	dobin "${OUT}/media_v4l2_test"
-}
diff --git a/media-libs/cros-camera-v4l2_test/cros-camera-v4l2_test-0.0.1-r471.ebuild b/media-libs/cros-camera-v4l2_test/cros-camera-v4l2_test-0.0.1-r471.ebuild
new file mode 100644
index 0000000..4da68c7
--- /dev/null
+++ b/media-libs/cros-camera-v4l2_test/cros-camera-v4l2_test-0.0.1-r471.ebuild
@@ -0,0 +1,40 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "49e3b5c529d012af19cb326eec9cf346538d4459" "c37af7d99913a584dbfb1b64fdb83acb19e91c20" "049eedf136293a1ab81617017200cb31032eb384" "309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b" "aa0612733aca2d5ffa65470f07408228b473ebdb" "791c6808b4f4f5f1c484108d66ff958d65f8f1e3")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_SUBTREE=".gn camera/build camera/common camera/include camera/hal/usb chromeos-config common-mk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+PLATFORM_SUBDIR="camera/hal/usb/v4l2_test"
+
+inherit cros-camera cros-workon platform
+
+DESCRIPTION="Chrome OS camera V4L2 test."
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	chromeos-base/chromeos-config-tools
+	chromeos-base/libbrillo:=
+	dev-cpp/gtest:=
+	dev-libs/re2:=
+	media-libs/libyuv
+	virtual/jpeg:0"
+
+DEPEND="${RDEPEND}
+	virtual/pkgconfig"
+
+src_install() {
+	platform_src_install
+	dobin "${OUT}/camera_characteristics_test"
+	dobin "${OUT}/media_v4l2_is_capture_device"
+	dobin "${OUT}/media_v4l2_test"
+}
diff --git a/media-libs/cros-camera-v4l2_test/cros-camera-v4l2_test-9999.ebuild b/media-libs/cros-camera-v4l2_test/cros-camera-v4l2_test-9999.ebuild
index e5ec2b5..3d84a32 100644
--- a/media-libs/cros-camera-v4l2_test/cros-camera-v4l2_test-9999.ebuild
+++ b/media-libs/cros-camera-v4l2_test/cros-camera-v4l2_test-9999.ebuild
@@ -18,7 +18,6 @@
 LICENSE="BSD-Google"
 SLOT="0"
 KEYWORDS="~*"
-IUSE="generated_cros_config unibuild"
 
 RDEPEND="
 	chromeos-base/chromeos-config-tools
@@ -26,10 +25,6 @@
 	dev-cpp/gtest:=
 	dev-libs/re2:=
 	media-libs/libyuv
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp )
-	)
 	virtual/jpeg:0"
 
 DEPEND="${RDEPEND}
@@ -37,6 +32,7 @@
 
 src_install() {
 	platform_src_install
+	dobin "${OUT}/camera_characteristics_test"
 	dobin "${OUT}/media_v4l2_is_capture_device"
 	dobin "${OUT}/media_v4l2_test"
 }
diff --git a/media-libs/evdi/Manifest b/media-libs/evdi/Manifest
index 6c4de65..d828c28 100644
--- a/media-libs/evdi/Manifest
+++ b/media-libs/evdi/Manifest
@@ -1 +1 @@
-DIST evdi-1.8.0.tar.gz 62402 BLAKE2B a7c1f3f72a534f776dfc9f929e30a51230fec9fdaafd68667c71cc133ba2d6fe3592908a3b6d1cdde92d39b59119cfb00e529a11bedf4da1be7c48110cd15990 SHA512 60214f1b78ff7dee1f25fe3816d70d3269e79648d5414d2f5cda8de8579193c73c517edb9c867064b86c4249485fc2d04f2d935fc3dccdb1ce2f58ba93f7be4d
+DIST evdi-1.9.1.tar.gz 66718 BLAKE2B 0bede8696f51838543eea3a5a2d2000bafd90b8d50dfe57bc75561c0c6b04e454fb527554069e47e133f06b3e784727150362a31a6a9550f7a2d0ecd0029884b SHA512 3af122adc2f6c4427ed679ff929ff7c32ad9cf4779a8969de549134419d99a5458da216c43f367209d81ada7a2fedd854a9ae86d8dc3af6ac1ba879258c6aa8a
diff --git a/media-libs/evdi/evdi-1.8.0.ebuild b/media-libs/evdi/evdi-1.8.0.ebuild
deleted file mode 100644
index 3680099..0000000
--- a/media-libs/evdi/evdi-1.8.0.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-inherit flag-o-matic toolchain-funcs
-
-DESCRIPTION="Extensible Virtual Display Interface Library"
-HOMEPAGE="https://github.com/DisplayLink/evdi"
-SRC_URI="https://github.com/DisplayLink/evdi/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-# evdi has mixed license: GPLv2 for the module, LGPL-2.1 for the library.
-# However, this ebuild is for the library only.
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="*"
-
-# We need drm only for its structs and defines, not for functions.
-DEPEND="x11-libs/libdrm"
-
-S=${WORKDIR}
-
-src_unpack() {
-	default
-	cd "${WORKDIR}"/${PN}-*
-	S=${PWD}
-}
-
-src_compile() {
-	tc-export CC
-	append-cppflags -DCHROMEOS -I../module
-	emake -C library
-}
-
-src_install() {
-	dolib.so library/libevdi.so
-
-	insinto /usr/include
-	doins library/evdi_lib.h
-}
diff --git a/media-libs/evdi/evdi-1.9.1-r1.ebuild b/media-libs/evdi/evdi-1.9.1-r1.ebuild
new file mode 100644
index 0000000..c351dbd
--- /dev/null
+++ b/media-libs/evdi/evdi-1.9.1-r1.ebuild
@@ -0,0 +1,41 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+inherit flag-o-matic toolchain-funcs
+
+DESCRIPTION="Extensible Virtual Display Interface Library"
+HOMEPAGE="https://github.com/DisplayLink/evdi"
+SRC_URI="https://github.com/DisplayLink/evdi/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+# evdi has mixed license: GPLv2 for the module, LGPL-2.1 for the library.
+# However, this ebuild is for the library only.
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="*"
+
+# We need drm only for its structs and defines, not for functions.
+DEPEND="x11-libs/libdrm"
+
+S=${WORKDIR}
+
+src_unpack() {
+	default
+	cd "${WORKDIR}"/${PN}-*
+	S=${PWD}
+}
+
+src_compile() {
+	tc-export CC
+	append-cppflags -DCHROMEOS -I../module
+	append-lfs-flags
+	emake -C library
+}
+
+src_install() {
+	dolib.so library/libevdi.so
+
+	insinto /usr/include
+	doins library/evdi_lib.h
+}
diff --git a/media-libs/freeimage/files/freeimage-3.15.3-jpeg-rename.patch b/media-libs/freeimage/files/freeimage-3.15.3-jpeg-rename.patch
new file mode 100644
index 0000000..4be6f1b
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.15.3-jpeg-rename.patch
@@ -0,0 +1,22 @@
+freeimage redefines a libjpeg function
+
+--- a/Source/FreeImage/PluginJPEG.cpp
++++ b/Source/FreeImage/PluginJPEG.cpp
+@@ -507,7 +507,7 @@
+   return FALSE.  You might want to issue an error message instead.
+ */
+ static BOOL 
+-jpeg_read_icc_profile(j_decompress_ptr cinfo, JOCTET **icc_data_ptr, unsigned *icc_data_len) {
++FreeImage_jpeg_read_icc_profile(j_decompress_ptr cinfo, JOCTET **icc_data_ptr, unsigned *icc_data_len) {
+ 	jpeg_saved_marker_ptr marker;
+ 	int num_markers = 0;
+ 	int seq_no;
+@@ -789,7 +789,7 @@
+ 	BYTE *icc_profile = NULL;
+ 	unsigned icc_length = 0;
+ 
+-	if( jpeg_read_icc_profile(cinfo, &icc_profile, &icc_length) ) {
++	if( FreeImage_jpeg_read_icc_profile(cinfo, &icc_profile, &icc_length) ) {
+ 		// copy ICC profile data
+ 		FreeImage_CreateICCProfile(dib, icc_profile, icc_length);
+ 		// clean up
diff --git a/media-libs/freeimage/files/freeimage-3.15.3-libjpeg-turbo.patch b/media-libs/freeimage/files/freeimage-3.15.3-libjpeg-turbo.patch
new file mode 100644
index 0000000..5591f4f
--- /dev/null
+++ b/media-libs/freeimage/files/freeimage-3.15.3-libjpeg-turbo.patch
@@ -0,0 +1,534 @@
+Fix freeimage compilation errors for newer version of libjpeg-turbo.
+Patch from Christian Heimes's fork at ttps://bitbucket.org/tiran/freeimageturbo
+
+--- /dev/null	2013-09-04 18:06:09.961000800 +1000
++++ LibJPEG/jpegcomp.h	2013-09-08 12:00:09.770737557 +1000
+@@ -0,0 +1,26 @@
++/*
++ * jpegcomp.h
++ *
++ * Copyright (C) 2010, D. R. Commander
++ * For conditions of distribution and use, see the accompanying README file.
++ *
++ * JPEG compatibility macros
++ * These declarations are considered internal to the JPEG library; most
++ * applications using the library shouldn't need to include this file.
++ */
++
++#if JPEG_LIB_VERSION >= 70
++#define _DCT_scaled_size DCT_h_scaled_size
++#define _min_DCT_scaled_size min_DCT_h_scaled_size
++#define _min_DCT_h_scaled_size min_DCT_h_scaled_size
++#define _min_DCT_v_scaled_size min_DCT_v_scaled_size
++#define _jpeg_width jpeg_width
++#define _jpeg_height jpeg_height
++#else
++#define _DCT_scaled_size DCT_scaled_size
++#define _min_DCT_scaled_size min_DCT_scaled_size
++#define _min_DCT_h_scaled_size min_DCT_scaled_size
++#define _min_DCT_v_scaled_size min_DCT_scaled_size
++#define _jpeg_width image_width
++#define _jpeg_height image_height
++#endif
+--- LibJPEG-orig/jpegint.h	2012-02-19 18:33:18.000000000 +1100
++++ LibJPEG/jpegint.h	2013-09-08 12:00:09.770737557 +1000
+@@ -2,7 +2,7 @@
+  * jpegint.h
+  *
+  * Copyright (C) 1991-1997, Thomas G. Lane.
+- * Modified 1997-2011 by Guido Vollbeding.
++ * Modified 1997-2009 by Guido Vollbeding.
+  * This file is part of the Independent JPEG Group's software.
+  * For conditions of distribution and use, see the accompanying README file.
+  *
+@@ -100,16 +100,14 @@
+ };
+ 
+ /* Forward DCT (also controls coefficient quantization) */
+-typedef JMETHOD(void, forward_DCT_ptr,
+-		(j_compress_ptr cinfo, jpeg_component_info * compptr,
+-		 JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
+-		 JDIMENSION start_row, JDIMENSION start_col,
+-		 JDIMENSION num_blocks));
+-
+ struct jpeg_forward_dct {
+   JMETHOD(void, start_pass, (j_compress_ptr cinfo));
+-  /* It is useful to allow each component to have a separate FDCT method. */
+-  forward_DCT_ptr forward_DCT[MAX_COMPONENTS];
++  /* perhaps this should be an array??? */
++  JMETHOD(void, forward_DCT, (j_compress_ptr cinfo,
++			      jpeg_component_info * compptr,
++			      JSAMPARRAY sample_data, JBLOCKROW coef_blocks,
++			      JDIMENSION start_row, JDIMENSION start_col,
++			      JDIMENSION num_blocks));
+ };
+ 
+ /* Entropy encoding */
+@@ -213,6 +211,10 @@
+   JMETHOD(void, start_pass, (j_decompress_ptr cinfo));
+   JMETHOD(boolean, decode_mcu, (j_decompress_ptr cinfo,
+ 				JBLOCKROW *MCU_data));
++
++  /* This is here to share code between baseline and progressive decoders; */
++  /* other modules probably should not use it */
++  boolean insufficient_data;	/* set TRUE after emitting warning */
+ };
+ 
+ /* Inverse DCT (also performs dequantization) */
+@@ -302,6 +304,7 @@
+ #define jinit_downsampler	jIDownsampler
+ #define jinit_forward_dct	jIFDCT
+ #define jinit_huff_encoder	jIHEncoder
++#define jinit_phuff_encoder	jIPHEncoder
+ #define jinit_arith_encoder	jIAEncoder
+ #define jinit_marker_writer	jIMWriter
+ #define jinit_master_decompress	jIDMaster
+@@ -311,6 +314,7 @@
+ #define jinit_input_controller	jIInCtlr
+ #define jinit_marker_reader	jIMReader
+ #define jinit_huff_decoder	jIHDecoder
++#define jinit_phuff_decoder	jIPHDecoder
+ #define jinit_arith_decoder	jIADecoder
+ #define jinit_inverse_dct	jIIDCT
+ #define jinit_upsampler		jIUpsampler
+@@ -321,41 +325,15 @@
+ #define jinit_memory_mgr	jIMemMgr
+ #define jdiv_round_up		jDivRound
+ #define jround_up		jRound
+-#define jzero_far		jZeroFar
+ #define jcopy_sample_rows	jCopySamples
+ #define jcopy_block_row		jCopyBlocks
++#define jzero_far		jZeroFar
+ #define jpeg_zigzag_order	jZIGTable
+ #define jpeg_natural_order	jZAGTable
+-#define jpeg_natural_order7	jZAG7Table
+-#define jpeg_natural_order6	jZAG6Table
+-#define jpeg_natural_order5	jZAG5Table
+-#define jpeg_natural_order4	jZAG4Table
+-#define jpeg_natural_order3	jZAG3Table
+-#define jpeg_natural_order2	jZAG2Table
+ #define jpeg_aritab		jAriTab
+ #endif /* NEED_SHORT_EXTERNAL_NAMES */
+ 
+ 
+-/* On normal machines we can apply MEMCOPY() and MEMZERO() to sample arrays
+- * and coefficient-block arrays.  This won't work on 80x86 because the arrays
+- * are FAR and we're assuming a small-pointer memory model.  However, some
+- * DOS compilers provide far-pointer versions of memcpy() and memset() even
+- * in the small-model libraries.  These will be used if USE_FMEM is defined.
+- * Otherwise, the routines in jutils.c do it the hard way.
+- */
+-
+-#ifndef NEED_FAR_POINTERS	/* normal case, same as regular macro */
+-#define FMEMZERO(target,size)	MEMZERO(target,size)
+-#else				/* 80x86 case */
+-#ifdef USE_FMEM
+-#define FMEMZERO(target,size)	_fmemset((void FAR *)(target), 0, (size_t)(size))
+-#else
+-EXTERN(void) jzero_far JPP((void FAR * target, size_t bytestozero));
+-#define FMEMZERO(target,size)	jzero_far(target, size)
+-#endif
+-#endif
+-
+-
+ /* Compression module initialization routines */
+ EXTERN(void) jinit_compress_master JPP((j_compress_ptr cinfo));
+ EXTERN(void) jinit_c_master_control JPP((j_compress_ptr cinfo,
+@@ -370,6 +348,7 @@
+ EXTERN(void) jinit_downsampler JPP((j_compress_ptr cinfo));
+ EXTERN(void) jinit_forward_dct JPP((j_compress_ptr cinfo));
+ EXTERN(void) jinit_huff_encoder JPP((j_compress_ptr cinfo));
++EXTERN(void) jinit_phuff_encoder JPP((j_compress_ptr cinfo));
+ EXTERN(void) jinit_arith_encoder JPP((j_compress_ptr cinfo));
+ EXTERN(void) jinit_marker_writer JPP((j_compress_ptr cinfo));
+ /* Decompression module initialization routines */
+@@ -383,6 +362,7 @@
+ EXTERN(void) jinit_input_controller JPP((j_decompress_ptr cinfo));
+ EXTERN(void) jinit_marker_reader JPP((j_decompress_ptr cinfo));
+ EXTERN(void) jinit_huff_decoder JPP((j_decompress_ptr cinfo));
++EXTERN(void) jinit_phuff_decoder JPP((j_decompress_ptr cinfo));
+ EXTERN(void) jinit_arith_decoder JPP((j_decompress_ptr cinfo));
+ EXTERN(void) jinit_inverse_dct JPP((j_decompress_ptr cinfo));
+ EXTERN(void) jinit_upsampler JPP((j_decompress_ptr cinfo));
+@@ -401,17 +381,12 @@
+ 				    int num_rows, JDIMENSION num_cols));
+ EXTERN(void) jcopy_block_row JPP((JBLOCKROW input_row, JBLOCKROW output_row,
+ 				  JDIMENSION num_blocks));
++EXTERN(void) jzero_far JPP((void FAR * target, size_t bytestozero));
+ /* Constant tables in jutils.c */
+ #if 0				/* This table is not actually needed in v6a */
+ extern const int jpeg_zigzag_order[]; /* natural coef order to zigzag order */
+ #endif
+ extern const int jpeg_natural_order[]; /* zigzag coef order to natural order */
+-extern const int jpeg_natural_order7[]; /* zz to natural order for 7x7 block */
+-extern const int jpeg_natural_order6[]; /* zz to natural order for 6x6 block */
+-extern const int jpeg_natural_order5[]; /* zz to natural order for 5x5 block */
+-extern const int jpeg_natural_order4[]; /* zz to natural order for 4x4 block */
+-extern const int jpeg_natural_order3[]; /* zz to natural order for 3x3 block */
+-extern const int jpeg_natural_order2[]; /* zz to natural order for 2x2 block */
+ 
+ /* Arithmetic coding probability estimation tables in jaricom.c */
+ extern const INT32 jpeg_aritab[];
+--- LibJPEG-orig/transupp.h	2012-02-19 18:33:18.000000000 +1100
++++ LibJPEG/transupp.h	2013-09-08 12:00:09.820737560 +1000
+@@ -1,7 +1,7 @@
+ /*
+  * transupp.h
+  *
+- * Copyright (C) 1997-2011, Thomas G. Lane, Guido Vollbeding.
++ * Copyright (C) 1997-2009, Thomas G. Lane, Guido Vollbeding.
+  * This file is part of the Independent JPEG Group's software.
+  * For conditions of distribution and use, see the accompanying README file.
+  *
+@@ -57,7 +57,6 @@
+  * corner up and/or left to make it so, simultaneously increasing the region
+  * dimensions to keep the lower right crop corner unchanged.  (Thus, the
+  * output image covers at least the requested region, but may cover more.)
+- * The adjustment of the region dimensions may be optionally disabled.
+  *
+  * We also provide a lossless-resize option, which is kind of a lossless-crop
+  * operation in the DCT coefficient block domain - it discards higher-order
+@@ -107,15 +106,13 @@
+ 
+ /*
+  * Codes for crop parameters, which can individually be unspecified,
+- * positive or negative for xoffset or yoffset,
+- * positive or forced for width or height.
++ * positive, or negative.  (Negative width or height makes no sense, though.)
+  */
+ 
+ typedef enum {
+-        JCROP_UNSET,
+-        JCROP_POS,
+-        JCROP_NEG,
+-        JCROP_FORCE
++	JCROP_UNSET,
++	JCROP_POS,
++	JCROP_NEG
+ } JCROP_CODE;
+ 
+ /*
+@@ -131,14 +128,21 @@
+   boolean trim;			/* if TRUE, trim partial MCUs as needed */
+   boolean force_grayscale;	/* if TRUE, convert color image to grayscale */
+   boolean crop;			/* if TRUE, crop source image */
++  boolean slow_hflip;  /* For best performance, the JXFORM_FLIP_H transform
++                          normally modifies the source coefficients in place.
++                          Setting this to TRUE will instead use a slower,
++                          double-buffered algorithm, which leaves the source
++                          coefficients in tact (necessary if other transformed
++                          images must be generated from the same set of
++                          coefficients. */
+ 
+   /* Crop parameters: application need not set these unless crop is TRUE.
+    * These can be filled in by jtransform_parse_crop_spec().
+    */
+   JDIMENSION crop_width;	/* Width of selected region */
+-  JCROP_CODE crop_width_set;	/* (forced disables adjustment) */
++  JCROP_CODE crop_width_set;
+   JDIMENSION crop_height;	/* Height of selected region */
+-  JCROP_CODE crop_height_set;	/* (forced disables adjustment) */
++  JCROP_CODE crop_height_set;
+   JDIMENSION crop_xoffset;	/* X offset of selected region */
+   JCROP_CODE crop_xoffset_set;	/* (negative measures from right edge) */
+   JDIMENSION crop_yoffset;	/* Y offset of selected region */
+--- LibJPEG-orig/transupp.c	2012-02-19 18:33:18.000000000 +1100
++++ LibJPEG/transupp.c	2013-09-08 12:00:09.819737560 +1000
+@@ -1,7 +1,8 @@
+ /*
+  * transupp.c
+  *
+- * Copyright (C) 1997-2011, Thomas G. Lane, Guido Vollbeding.
++ * Copyright (C) 1997-2009, Thomas G. Lane, Guido Vollbeding.
++ * Copyright (C) 2010, D. R. Commander.
+  * This file is part of the Independent JPEG Group's software.
+  * For conditions of distribution and use, see the accompanying README file.
+  *
+@@ -20,9 +21,19 @@
+ #include "jinclude.h"
+ #include "jpeglib.h"
+ #include "transupp.h"		/* My own external interface */
++#include "jpegcomp.h"
+ #include <ctype.h>		/* to declare isdigit() */
+ 
+ 
++#if JPEG_LIB_VERSION >= 70
++#define dstinfo_min_DCT_h_scaled_size dstinfo->min_DCT_h_scaled_size
++#define dstinfo_min_DCT_v_scaled_size dstinfo->min_DCT_v_scaled_size
++#else
++#define dstinfo_min_DCT_h_scaled_size DCTSIZE
++#define dstinfo_min_DCT_v_scaled_size DCTSIZE
++#endif
++
++
+ #if TRANSFORMS_SUPPORTED
+ 
+ /*
+@@ -134,7 +145,7 @@
+    * Partial iMCUs at the right edge are left untouched.
+    */
+   MCU_cols = srcinfo->output_width /
+-    (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
++    (dstinfo->max_h_samp_factor * dstinfo_min_DCT_h_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -200,7 +211,7 @@
+    * this is essentially the same as the routine above.
+    */
+   MCU_cols = srcinfo->output_width /
+-    (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
++    (dstinfo->max_h_samp_factor * dstinfo_min_DCT_h_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -265,7 +276,7 @@
+    * Partial iMCUs at the bottom edge are copied verbatim.
+    */
+   MCU_rows = srcinfo->output_height /
+-    (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
++    (dstinfo->max_v_samp_factor * dstinfo_min_DCT_v_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -393,7 +404,7 @@
+    * not mirrored.
+    */
+   MCU_cols = srcinfo->output_height /
+-    (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
++    (dstinfo->max_h_samp_factor * dstinfo_min_DCT_h_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -474,7 +485,7 @@
+    * not mirrored.
+    */
+   MCU_rows = srcinfo->output_width /
+-    (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
++    (dstinfo->max_v_samp_factor * dstinfo_min_DCT_v_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -542,9 +553,9 @@
+   jpeg_component_info *compptr;
+ 
+   MCU_cols = srcinfo->output_width /
+-    (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
++    (dstinfo->max_h_samp_factor * dstinfo_min_DCT_h_scaled_size);
+   MCU_rows = srcinfo->output_height /
+-    (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
++    (dstinfo->max_v_samp_factor * dstinfo_min_DCT_v_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -653,9 +664,9 @@
+   jpeg_component_info *compptr;
+ 
+   MCU_cols = srcinfo->output_height /
+-    (dstinfo->max_h_samp_factor * dstinfo->min_DCT_h_scaled_size);
++    (dstinfo->max_h_samp_factor * dstinfo_min_DCT_h_scaled_size);
+   MCU_rows = srcinfo->output_width /
+-    (dstinfo->max_v_samp_factor * dstinfo->min_DCT_v_scaled_size);
++    (dstinfo->max_v_samp_factor * dstinfo_min_DCT_v_scaled_size);
+ 
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+     compptr = dstinfo->comp_info + ci;
+@@ -771,7 +782,7 @@
+  * The routine returns TRUE if the spec string is valid, FALSE if not.
+  *
+  * The crop spec string should have the format
+- *	<width>[f]x<height>[f]{+-}<xoffset>{+-}<yoffset>
++ *	<width>x<height>{+-}<xoffset>{+-}<yoffset>
+  * where width, height, xoffset, and yoffset are unsigned integers.
+  * Each of the elements can be omitted to indicate a default value.
+  * (A weakness of this style is that it is not possible to omit xoffset
+@@ -793,22 +804,14 @@
+     /* fetch width */
+     if (! jt_read_integer(&spec, &info->crop_width))
+       return FALSE;
+-    if (*spec == 'f' || *spec == 'F') {
+-      spec++;
+-      info->crop_width_set = JCROP_FORCE;
+-    } else
+-      info->crop_width_set = JCROP_POS;
++    info->crop_width_set = JCROP_POS;
+   }
+-  if (*spec == 'x' || *spec == 'X') {
++  if (*spec == 'x' || *spec == 'X') {	
+     /* fetch height */
+     spec++;
+     if (! jt_read_integer(&spec, &info->crop_height))
+       return FALSE;
+-    if (*spec == 'f' || *spec == 'F') {
+-      spec++;
+-      info->crop_height_set = JCROP_FORCE;
+-    } else
+-      info->crop_height_set = JCROP_POS;
++    info->crop_height_set = JCROP_POS;
+   }
+   if (*spec == '+' || *spec == '-') {
+     /* fetch xoffset */
+@@ -897,7 +900,12 @@
+     info->num_components = srcinfo->num_components;
+ 
+   /* Compute output image dimensions and related values. */
++#if JPEG_LIB_VERSION >= 80
+   jpeg_core_output_dimensions(srcinfo);
++#else
++  srcinfo->output_width = srcinfo->image_width;
++  srcinfo->output_height = srcinfo->image_height;
++#endif
+ 
+   /* Return right away if -perfect is given and transformation is not perfect.
+    */
+@@ -905,15 +913,15 @@
+     if (info->num_components == 1) {
+       if (!jtransform_perfect_transform(srcinfo->output_width,
+ 	  srcinfo->output_height,
+-	  srcinfo->min_DCT_h_scaled_size,
+-	  srcinfo->min_DCT_v_scaled_size,
++	  srcinfo->_min_DCT_h_scaled_size,
++	  srcinfo->_min_DCT_v_scaled_size,
+ 	  info->transform))
+ 	return FALSE;
+     } else {
+       if (!jtransform_perfect_transform(srcinfo->output_width,
+ 	  srcinfo->output_height,
+-	  srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size,
+-	  srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size,
++	  srcinfo->max_h_samp_factor * srcinfo->_min_DCT_h_scaled_size,
++	  srcinfo->max_v_samp_factor * srcinfo->_min_DCT_v_scaled_size,
+ 	  info->transform))
+ 	return FALSE;
+     }
+@@ -932,26 +940,26 @@
+     info->output_width = srcinfo->output_height;
+     info->output_height = srcinfo->output_width;
+     if (info->num_components == 1) {
+-      info->iMCU_sample_width = srcinfo->min_DCT_v_scaled_size;
+-      info->iMCU_sample_height = srcinfo->min_DCT_h_scaled_size;
++      info->iMCU_sample_width = srcinfo->_min_DCT_v_scaled_size;
++      info->iMCU_sample_height = srcinfo->_min_DCT_h_scaled_size;
+     } else {
+       info->iMCU_sample_width =
+-	srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size;
++	srcinfo->max_v_samp_factor * srcinfo->_min_DCT_v_scaled_size;
+       info->iMCU_sample_height =
+-	srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size;
++	srcinfo->max_h_samp_factor * srcinfo->_min_DCT_h_scaled_size;
+     }
+     break;
+   default:
+     info->output_width = srcinfo->output_width;
+     info->output_height = srcinfo->output_height;
+     if (info->num_components == 1) {
+-      info->iMCU_sample_width = srcinfo->min_DCT_h_scaled_size;
+-      info->iMCU_sample_height = srcinfo->min_DCT_v_scaled_size;
++      info->iMCU_sample_width = srcinfo->_min_DCT_h_scaled_size;
++      info->iMCU_sample_height = srcinfo->_min_DCT_v_scaled_size;
+     } else {
+       info->iMCU_sample_width =
+-	srcinfo->max_h_samp_factor * srcinfo->min_DCT_h_scaled_size;
++	srcinfo->max_h_samp_factor * srcinfo->_min_DCT_h_scaled_size;
+       info->iMCU_sample_height =
+-	srcinfo->max_v_samp_factor * srcinfo->min_DCT_v_scaled_size;
++	srcinfo->max_v_samp_factor * srcinfo->_min_DCT_v_scaled_size;
+     }
+     break;
+   }
+@@ -988,16 +996,10 @@
+     else
+       yoffset = info->crop_yoffset;
+     /* Now adjust so that upper left corner falls at an iMCU boundary */
+-    if (info->crop_width_set == JCROP_FORCE)
+-      info->output_width = info->crop_width;
+-    else
+-      info->output_width =
+-        info->crop_width + (xoffset % info->iMCU_sample_width);
+-    if (info->crop_height_set == JCROP_FORCE)
+-      info->output_height = info->crop_height;
+-    else
+-      info->output_height =
+-        info->crop_height + (yoffset % info->iMCU_sample_height);
++    info->output_width =
++      info->crop_width + (xoffset % info->iMCU_sample_width);
++    info->output_height =
++      info->crop_height + (yoffset % info->iMCU_sample_height);
+     /* Save x/y offsets measured in iMCUs */
+     info->x_crop_offset = xoffset / info->iMCU_sample_width;
+     info->y_crop_offset = yoffset / info->iMCU_sample_height;
+@@ -1020,7 +1022,7 @@
+   case JXFORM_FLIP_H:
+     if (info->trim)
+       trim_right_edge(info, srcinfo->output_width);
+-    if (info->y_crop_offset != 0)
++    if (info->y_crop_offset != 0 || info->slow_hflip)
+       need_workspace = TRUE;
+     /* do_flip_h_no_crop doesn't need a workspace array */
+     break;
+@@ -1124,9 +1126,11 @@
+   jtemp = dstinfo->image_width;
+   dstinfo->image_width = dstinfo->image_height;
+   dstinfo->image_height = jtemp;
++#if JPEG_LIB_VERSION >= 70
+   itemp = dstinfo->min_DCT_h_scaled_size;
+   dstinfo->min_DCT_h_scaled_size = dstinfo->min_DCT_v_scaled_size;
+   dstinfo->min_DCT_v_scaled_size = itemp;
++#endif
+ 
+   /* Transpose sampling factors */
+   for (ci = 0; ci < dstinfo->num_components; ci++) {
+@@ -1362,8 +1366,10 @@
+   /* Correct the destination's image dimensions as necessary
+    * for rotate/flip, resize, and crop operations.
+    */
++#if JPEG_LIB_VERSION >= 70
+   dstinfo->jpeg_width = info->output_width;
+   dstinfo->jpeg_height = info->output_height;
++#endif
+ 
+   /* Transpose destination image parameters */
+   switch (info->transform) {
+@@ -1371,9 +1377,17 @@
+   case JXFORM_TRANSVERSE:
+   case JXFORM_ROT_90:
+   case JXFORM_ROT_270:
++#if JPEG_LIB_VERSION < 70
++    dstinfo->image_width = info->output_height;
++    dstinfo->image_height = info->output_width;
++#endif
+     transpose_critical_parameters(dstinfo);
+     break;
+   default:
++#if JPEG_LIB_VERSION < 70
++    dstinfo->image_width = info->output_width;
++    dstinfo->image_height = info->output_height;
++#endif
+     break;
+   }
+ 
+@@ -1389,6 +1403,7 @@
+       GETJOCTET(srcinfo->marker_list->data[5]) == 0) {
+     /* Suppress output of JFIF marker */
+     dstinfo->write_JFIF_header = FALSE;
++#if JPEG_LIB_VERSION >= 70
+     /* Adjust Exif image parameters */
+     if (dstinfo->jpeg_width != srcinfo->image_width ||
+ 	dstinfo->jpeg_height != srcinfo->image_height)
+@@ -1396,6 +1411,7 @@
+       adjust_exif_parameters(srcinfo->marker_list->data + 6,
+ 	srcinfo->marker_list->data_length - 6,
+ 	dstinfo->jpeg_width, dstinfo->jpeg_height);
++#endif
+   }
+ 
+   /* Return the appropriate output data set */
+@@ -1432,7 +1448,7 @@
+ 	      src_coef_arrays, dst_coef_arrays);
+     break;
+   case JXFORM_FLIP_H:
+-    if (info->y_crop_offset != 0)
++    if (info->y_crop_offset != 0 || info->slow_hflip)
+       do_flip_h(srcinfo, dstinfo, info->x_crop_offset, info->y_crop_offset,
+ 		src_coef_arrays, dst_coef_arrays);
+     else
\ No newline at end of file
diff --git a/media-libs/freeimage/files/freeimage-3.15.3-r2-unbundling.patch b/media-libs/freeimage/files/freeimage-3.15.3-r3-unbundling.patch
similarity index 100%
rename from media-libs/freeimage/files/freeimage-3.15.3-r2-unbundling.patch
rename to media-libs/freeimage/files/freeimage-3.15.3-r3-unbundling.patch
diff --git a/media-libs/freeimage/freeimage-3.15.3-r2.ebuild b/media-libs/freeimage/freeimage-3.15.3-r2.ebuild
deleted file mode 100644
index c1fc671..0000000
--- a/media-libs/freeimage/freeimage-3.15.3-r2.ebuild
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/freeimage/freeimage-3.15.3-r1.ebuild,v 1.1 2013/01/09 23:38:23 vapier Exp $
-
-EAPI="4"
-
-inherit toolchain-funcs eutils multilib
-
-MY_PN=FreeImage
-MY_PV=${PV//.}
-MY_P=${MY_PN}${MY_PV}
-
-DESCRIPTION="Image library supporting many formats"
-HOMEPAGE="http://freeimage.sourceforge.net/"
-SRC_URI="mirror://sourceforge/${PN}/${MY_P}.zip
-	mirror://sourceforge/${PN}/${MY_P}.pdf"
-
-LICENSE="|| ( GPL-2 FIPL-1.0 )"
-SLOT="0"
-KEYWORDS="*"
-IUSE="jpeg jpeg2k mng openexr png raw static-libs tiff"
-
-RDEPEND="sys-libs/zlib
-	jpeg? ( virtual/jpeg )
-	jpeg2k? ( media-libs/openjpeg )
-	mng? ( media-libs/libmng )
-	openexr? ( media-libs/openexr )
-	png? ( media-libs/libpng )
-	raw? ( media-libs/libraw )
-	tiff? (
-		media-libs/ilmbase
-		media-libs/tiff
-	)"
-DEPEND="${RDEPEND}
-	virtual/pkgconfig
-	app-arch/unzip"
-
-S=${WORKDIR}/${MY_PN}
-
-src_prepare() {
-	cd Source
-	cp LibJPEG/{transupp.c,transupp.h,jinclude.h} . || die
-	cp LibTIFF4/{tiffiop,tif_dir}.h . || die
-	rm -rf LibPNG LibMNG LibOpenJPEG ZLib OpenEXR LibRawLite LibTIFF4 LibJPEG || die
-	cd ..
-	edos2unix Makefile.{gnu,fip,srcs} fipMakefile.srcs */*.h */*/*.cpp
-	sed -i \
-		-e "s:/./:/:g" \
-		-e "s: ./: :g" \
-		-e 's: Source: \\\n\tSource:g' \
-		-e 's: Wrapper: \\\n\tWrapper:g' \
-		-e 's: Examples: \\\n\tExamples:g' \
-		-e 's: TestAPI: \\\n\tTestAPI:g' \
-		-e 's: -ISource: \\\n\t-ISource:g' \
-		-e 's: -IWrapper: \\\n\t-IWrapper:g' \
-		Makefile.srcs fipMakefile.srcs || die
-	sed -i \
-		-e "/LibJPEG/d" \
-		-e "/LibPNG/d" \
-		-e "/LibTIFF/d" \
-		-e "/Source\/ZLib/d" \
-		-e "/LibOpenJPEG/d" \
-		-e "/OpenEXR/d" \
-		-e "/LibRawLite/d" \
-		-e "/LibMNG/d" \
-		Makefile.srcs fipMakefile.srcs || die
-	epatch "${FILESDIR}"/${PF}-unbundling.patch
-	epatch "${FILESDIR}"/${P}-libpng-1.2.patch
-}
-
-foreach_make() {
-	local m
-	for m in Makefile.{gnu,fip} ; do
-		emake -f ${m} \
-			USE_EXR=$(usex openexr) \
-			USE_JPEG=$(usex jpeg) \
-			USE_JPEG2K=$(usex jpeg2k) \
-			USE_MNG=$(usex mng) \
-			USE_PNG=$(usex png) \
-			USE_TIFF=$(usex tiff) \
-			USE_RAW=$(usex raw) \
-			$(usex static-libs '' STATICLIB=) \
-			"$@"
-	done
-}
-
-src_compile() {
-	tc-export AR PKG_CONFIG
-	foreach_make \
-		CXX="$(tc-getCXX) -fPIC" \
-		CC="$(tc-getCC) -fPIC" \
-		${MY_PN}
-}
-
-src_install() {
-	foreach_make install DESTDIR="${ED}" INSTALLDIR="${ED}"/usr/$(get_libdir)
-	dodoc Whatsnew.txt "${DISTDIR}"/${MY_P}.pdf
-}
diff --git a/media-libs/freeimage/freeimage-3.15.3-r3.ebuild b/media-libs/freeimage/freeimage-3.15.3-r3.ebuild
new file mode 100644
index 0000000..ab52dba
--- /dev/null
+++ b/media-libs/freeimage/freeimage-3.15.3-r3.ebuild
@@ -0,0 +1,101 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/freeimage/freeimage-3.15.3-r1.ebuild,v 1.1 2013/01/09 23:38:23 vapier Exp $
+
+EAPI="4"
+
+inherit toolchain-funcs eutils multilib
+
+MY_PN=FreeImage
+MY_PV=${PV//.}
+MY_P=${MY_PN}${MY_PV}
+
+DESCRIPTION="Image library supporting many formats"
+HOMEPAGE="http://freeimage.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${MY_P}.zip
+	mirror://sourceforge/${PN}/${MY_P}.pdf"
+
+LICENSE="|| ( GPL-2 FIPL-1.0 )"
+SLOT="0"
+KEYWORDS="*"
+IUSE="jpeg jpeg2k mng openexr png raw static-libs tiff"
+
+RDEPEND="sys-libs/zlib
+	jpeg? ( virtual/jpeg )
+	jpeg2k? ( media-libs/openjpeg )
+	mng? ( media-libs/libmng )
+	openexr? ( media-libs/openexr )
+	png? ( media-libs/libpng )
+	raw? ( media-libs/libraw )
+	tiff? (
+		media-libs/ilmbase
+		media-libs/tiff
+	)"
+DEPEND="${RDEPEND}
+	virtual/pkgconfig
+	app-arch/unzip"
+
+S=${WORKDIR}/${MY_PN}
+
+src_prepare() {
+	cd Source
+	epatch "${FILESDIR}"/${P}-libjpeg-turbo.patch
+	cp LibJPEG/{jpegcomp.h,jpegint.h} . || die
+	cp LibJPEG/{transupp.c,transupp.h,jinclude.h} . || die
+	cp LibTIFF4/{tiffiop,tif_dir}.h . || die
+	rm -rf LibPNG LibMNG LibOpenJPEG ZLib OpenEXR LibRawLite LibTIFF4 LibJPEG || die
+	cd ..
+	edos2unix Makefile.{gnu,fip,srcs} fipMakefile.srcs */*.h */*/*.cpp
+	sed -i \
+		-e "s:/./:/:g" \
+		-e "s: ./: :g" \
+		-e 's: Source: \\\n\tSource:g' \
+		-e 's: Wrapper: \\\n\tWrapper:g' \
+		-e 's: Examples: \\\n\tExamples:g' \
+		-e 's: TestAPI: \\\n\tTestAPI:g' \
+		-e 's: -ISource: \\\n\t-ISource:g' \
+		-e 's: -IWrapper: \\\n\t-IWrapper:g' \
+		Makefile.srcs fipMakefile.srcs || die
+	sed -i \
+		-e "/LibJPEG/d" \
+		-e "/LibPNG/d" \
+		-e "/LibTIFF/d" \
+		-e "/Source\/ZLib/d" \
+		-e "/LibOpenJPEG/d" \
+		-e "/OpenEXR/d" \
+		-e "/LibRawLite/d" \
+		-e "/LibMNG/d" \
+		Makefile.srcs fipMakefile.srcs || die
+	epatch "${FILESDIR}"/${PF}-unbundling.patch
+	epatch "${FILESDIR}"/${P}-libpng-1.2.patch
+	epatch "${FILESDIR}"/${P}-jpeg-rename.patch
+}
+
+foreach_make() {
+	local m
+	for m in Makefile.{gnu,fip} ; do
+		emake -f ${m} \
+			USE_EXR=$(usex openexr) \
+			USE_JPEG=$(usex jpeg) \
+			USE_JPEG2K=$(usex jpeg2k) \
+			USE_MNG=$(usex mng) \
+			USE_PNG=$(usex png) \
+			USE_TIFF=$(usex tiff) \
+			USE_RAW=$(usex raw) \
+			$(usex static-libs '' STATICLIB=) \
+			"$@"
+	done
+}
+
+src_compile() {
+	tc-export AR PKG_CONFIG
+	foreach_make \
+		CXX="$(tc-getCXX) -fPIC" \
+		CC="$(tc-getCC) -fPIC" \
+		${MY_PN}
+}
+
+src_install() {
+	foreach_make install DESTDIR="${ED}" INSTALLDIR="${ED}"/usr/$(get_libdir)
+	dodoc Whatsnew.txt "${DISTDIR}"/${MY_P}.pdf
+}
diff --git a/media-libs/gmmlib/Manifest b/media-libs/gmmlib/Manifest
index 8daf7fd..c02317c 100644
--- a/media-libs/gmmlib/Manifest
+++ b/media-libs/gmmlib/Manifest
@@ -1 +1 @@
-DIST intel-gmmlib-20.3.2.tar.gz 729059 BLAKE2B 3cc07d9dc07fecd483c35bde41802c8a433a751310fe4d0273625f3a6e245a2dd6e5546b4e5bed40b04b22c4e00a648cce66b221c25da8c6f3f3637a890508bd SHA512 1d8ea369b5b22ca747f8bdaee0be24584b79ccdecaad6c85e5f0a41ac171459261c8c5b220797ffc525e7e29cfa1664f9eaca07f5e72d4a260f327d8980fb2dd
+DIST intel-gmmlib-21.1.1.tar.gz 737024 BLAKE2B d8a3b3bf1abe7faf7821ca120ebc40e0407dd8edf074ec8a8c05063c3ea48c0b4b33694210562aa4e6bd32fae30f45fcd23b04bb961535ffb10684ff180a9e2d SHA512 06becc986eb04c5243389686121bcc597ab16620fcb47943de14f901938dd906ad884b132da0e46ff939e7e599899d4262006efe19d14b3ed87b6f799ca40787
diff --git a/media-libs/gmmlib/files/gmmlib-20.2.2_conditional_testing.patch b/media-libs/gmmlib/files/gmmlib-20.2.2_conditional_testing.patch
new file mode 100644
index 0000000..7d826fa
--- /dev/null
+++ b/media-libs/gmmlib/files/gmmlib-20.2.2_conditional_testing.patch
@@ -0,0 +1,42 @@
+Makes the test suite run in src_test(), not src_compile(). Note that
+at the moment all the output from the test runner goes into the CTest log
+and all that src_test() shows is the overall status of the execution
+of the runner.
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,8 +1,6 @@
+ cmake_minimum_required (VERSION 3.1 FATAL_ERROR)
+ 
+-if (NOT DEFINED RUN_TEST_SUITE)
+-option (RUN_TEST_SUITE "run test suite after install" ON)
+-endif (NOT DEFINED RUN_TEST_SUITE)
++include(CTest)
+ 
+ add_subdirectory(Source/GmmLib)
+ 
+--- a/Source/GmmLib/CMakeLists.txt
++++ b/Source/GmmLib/CMakeLists.txt
+@@ -495,7 +495,7 @@
+ 		_X64)
+ endif()
+ 
+-if(NOT DEFINED RUN_TEST_SUITE OR RUN_TEST_SUITE)
++if(BUILD_TESTING)
+     add_subdirectory(ULT)
+ endif()
+ 
+--- a/Source/GmmLib/ULT/CMakeLists.txt
++++ b/Source/GmmLib/ULT/CMakeLists.txt
+@@ -151,9 +151,7 @@
+ 
+ add_custom_target(Run_ULT ALL DEPENDS GMMULT)
+ 
+-add_custom_command(
+-    TARGET Run_ULT
+-    POST_BUILD
+-    COMMAND echo running ULTs
++add_test(
++    NAME Run_ULT
+     COMMAND "${CMAKE_COMMAND}" -E env "LD_LIBRARY_PATH=$<TARGET_FILE_DIR:igfx_gmmumd_dll>" ${CMAKE_CFG_INTDIR}/${EXE_NAME} --gtest_filter=CTest*
+ )
diff --git a/media-libs/gmmlib/files/gmmlib-20.4.1_custom_cflags.patch b/media-libs/gmmlib/files/gmmlib-20.4.1_custom_cflags.patch
new file mode 100644
index 0000000..befd33f
--- /dev/null
+++ b/media-libs/gmmlib/files/gmmlib-20.4.1_custom_cflags.patch
@@ -0,0 +1,98 @@
+Prevent overriding of user-define CFLAGS, including -march flag.
+The flag -msse4.1 is required otherwise compile will not be able to inline sse4.1 code.
+Note: code should detect CPU features at runtime and use sse4.1 paths only if supported by CPU.
+
+--- a/Source/GmmLib/CMakeLists.txt
++++ b/Source/GmmLib/CMakeLists.txt
+@@ -54,6 +54,10 @@ if(NOT DEFINED BS_USE_OSDM_BUILD_SYSTEM)
+     endif()
+ endif()
+ 
++if(NOT DEFINED OVERRIDE_COMPILER_FLAGS)
++    option(OVERRIDE_COMPILER_FLAGS "Override user compiler FLAGS and use lib defaults" ON)
++endif()
++
+ # begin -- label bldsys file prologue
+ # WARNING: The "project" statement triggers reading of CMAKE_TOOLCHAIN_FILE
+ #   and so must precede the inclusion below of bs_init.cmake .
+--- a/Source/GmmLib/Linux.cmake
++++ b/Source/GmmLib/Linux.cmake
+@@ -38,7 +38,10 @@ SET (GMMLIB_COMPILER_FLAGS_COMMON
+     -Werror=format-security
+     -Werror=non-virtual-dtor
+     -Werror=return-type
++    )
+ 
++if (OVERRIDE_COMPILER_FLAGS)
++    list (APPEND GMMLIB_COMPILER_FLAGS_COMMON
+     # General optimization options
+     -march=${GMMLIB_MARCH}
+     -mpopcnt
+@@ -47,19 +50,31 @@ SET (GMMLIB_COMPILER_FLAGS_COMMON
+     -msse3
+     -mssse3
+     -msse4
+-    -msse4.1
+     -msse4.2
++    )
++endif()
++
++list (APPEND GMMLIB_COMPILER_FLAGS_COMMON
++    -msse4.1 # SSE4.1 compiler support is required to build
+     -mfpmath=sse
+     -finline-functions
+     -fno-short-enums
+     -Wa,--noexecstack
+     -fno-strict-aliasing
++    )
++
++if (OVERRIDE_COMPILER_FLAGS)
++    list (APPEND GMMLIB_COMPILER_FLAGS_COMMON
+     # Common defines
+     -DUSE_MMX
+     -DUSE_SSE
+     -DUSE_SSE2
+     -DUSE_SSE3
+     -DUSE_SSSE3
++    )
++endif()
++
++list (APPEND GMMLIB_COMPILER_FLAGS_COMMON
+     # Other common flags
+     -fstack-protector
+     -fdata-sections
+@@ -67,10 +82,15 @@ SET (GMMLIB_COMPILER_FLAGS_COMMON
+     -fmessage-length=0
+     -fvisibility=hidden
+     -fPIC
++    )
++
++if (OVERRIDE_COMPILER_FLAGS)
++    list (APPEND GMMLIB_COMPILER_FLAGS_COMMON
+     -g
+     # -m32 or -m64
+     -m${GMMLIB_ARCH}
+     )
++endif()
+ 
+ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+ #Gcc only flags
+@@ -128,13 +148,17 @@ SET( GMMLIB_COMPILER_FLAGS_RELEASEINTERNAL  ${GMMLIB_COMPILER_FLAGS_RELEASE})
+ 
+ #set predefined compiler flags set
+ add_compile_options("${GMMLIB_COMPILER_FLAGS_COMMON}")
++if (OVERRIDE_COMPILER_FLAGS)
+ add_compile_options("$<$<CONFIG:Debug>:${GMMLIB_COMPILER_FLAGS_DEBUG}>")
+ add_compile_options("$<$<CONFIG:Release>:${GMMLIB_COMPILER_FLAGS_RELEASE}>")
+ add_compile_options("$<$<CONFIG:ReleaseInternal>:${GMMLIB_COMPILER_FLAGS_RELEASEINTERNAL}>")
+ #cmake 3.3+, add_compile_options("$<$<COMPILE_LANGUAGE:CXX>:${GMMLIB_COMPILER_CXX_FLAGS_COMMON}>")
++endif()
+ foreach (flag ${GMMLIB_COMPILER_CXX_FLAGS_COMMON})
+     SET (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
+ endforeach()
+ 
++if (OVERRIDE_COMPILER_FLAGS)
+ SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m${GMMLIB_ARCH}")
+ SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -m${GMMLIB_ARCH}")
++endif()
+
diff --git a/media-libs/gmmlib/gmmlib-20.3.2-r1.ebuild b/media-libs/gmmlib/gmmlib-20.3.2-r1.ebuild
deleted file mode 120000
index 9b9292b..0000000
--- a/media-libs/gmmlib/gmmlib-20.3.2-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-gmmlib-20.3.2.ebuild
\ No newline at end of file
diff --git a/media-libs/gmmlib/gmmlib-20.3.2.ebuild b/media-libs/gmmlib/gmmlib-20.3.2.ebuild
deleted file mode 100644
index 224a25b..0000000
--- a/media-libs/gmmlib/gmmlib-20.3.2.ebuild
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CMAKE_ECLASS=cmake
-
-inherit cmake-multilib
-
-DESCRIPTION="Intel Graphics Memory Management Library"
-HOMEPAGE="https://github.com/intel/gmmlib"
-SRC_URI="https://github.com/intel/gmmlib/archive/intel-${P}.tar.gz"
-S="${WORKDIR}/${PN}-intel-${P}"
-KEYWORDS="*"
-LICENSE="MIT"
-SLOT="0"
-
-RDEPEND="${DEPEND}"
diff --git a/media-libs/gmmlib/gmmlib-21.1.1-r3.ebuild b/media-libs/gmmlib/gmmlib-21.1.1-r3.ebuild
new file mode 120000
index 0000000..18fdbd4
--- /dev/null
+++ b/media-libs/gmmlib/gmmlib-21.1.1-r3.ebuild
@@ -0,0 +1 @@
+gmmlib-21.1.1.ebuild
\ No newline at end of file
diff --git a/media-libs/gmmlib/gmmlib-21.1.1.ebuild b/media-libs/gmmlib/gmmlib-21.1.1.ebuild
new file mode 100644
index 0000000..d710884
--- /dev/null
+++ b/media-libs/gmmlib/gmmlib-21.1.1.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CMAKE_ECLASS=cmake
+
+inherit cmake-multilib
+
+DESCRIPTION="Intel Graphics Memory Management Library"
+HOMEPAGE="https://github.com/intel/gmmlib"
+SRC_URI="https://github.com/intel/gmmlib/archive/refs/tags/intel-${P}.tar.gz"
+S="${WORKDIR}/${PN}-intel-${P}"
+KEYWORDS="*"
+LICENSE="MIT"
+SLOT="0"
+IUSE="test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-20.2.2_conditional_testing.patch
+	"${FILESDIR}"/${PN}-20.4.1_custom_cflags.patch
+)
+
+multilib_src_configure() {
+	local mycmakeargs=(
+		-DBUILD_TYPE=Release
+		-DBUILD_TESTING=$(usex test)
+	)
+	cmake_src_configure
+}
diff --git a/media-libs/gmmlib/metadata.xml b/media-libs/gmmlib/metadata.xml
index 7ed71e5..648c3cc 100644
--- a/media-libs/gmmlib/metadata.xml
+++ b/media-libs/gmmlib/metadata.xml
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
-<maintainer type="project">
-	<email>media-video@gentoo.org</email>
-</maintainer>
-<maintainer type="person">
-	<email>marecki@gentoo.org</email>
-	<name>Marek Szuba</name>
-</maintainer>
+  <maintainer type="project">
+    <email>media-video@gentoo.org</email>
+  </maintainer>
+  <maintainer type="person">
+    <email>k2k@narod.ru</email>
+    <name>Evgeny Grin</name>
+  </maintainer>
 </pkgmetadata>
diff --git a/media-libs/harfbuzz/Manifest b/media-libs/harfbuzz/Manifest
deleted file mode 100644
index a813308..0000000
--- a/media-libs/harfbuzz/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST harfbuzz-1.7.6.tar.bz2 2586909 SHA256 da7bed39134826cd51e57c29f1dfbe342ccedb4f4773b1c951ff05ff383e2e9b SHA512 259656574b1ec2916ada951b759a591f45c11c5c639fa29831e06320312bf951f4f5ef6306f9ffc373abf0d40dbf944db918d4c54aca3bd7eab2c3a886db7a68 WHIRLPOOL a5374a110d8106c20fe07e96b9258e03a2638d24d234feb7ba6a8d918d65de877f29fafcb2debd9709c1e027ee6373376aeb9743681b8033602b6f7e93fac8a4
diff --git a/media-libs/harfbuzz/harfbuzz-1.7.6-r2.ebuild b/media-libs/harfbuzz/harfbuzz-1.7.6-r2.ebuild
deleted file mode 120000
index 61d5da4..0000000
--- a/media-libs/harfbuzz/harfbuzz-1.7.6-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-harfbuzz-1.7.6.ebuild
\ No newline at end of file
diff --git a/media-libs/harfbuzz/harfbuzz-1.7.6.ebuild b/media-libs/harfbuzz/harfbuzz-1.7.6.ebuild
deleted file mode 100644
index d4adb4e..0000000
--- a/media-libs/harfbuzz/harfbuzz-1.7.6.ebuild
+++ /dev/null
@@ -1,104 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-EGIT_REPO_URI="git://anongit.freedesktop.org/harfbuzz"
-[[ ${PV} == 9999 ]] && inherit git-r3 autotools
-
-PYTHON_COMPAT=( python2_7 )
-
-inherit eutils flag-o-matic libtool multilib-minimal python-any-r1 xdg-utils
-
-DESCRIPTION="An OpenType text shaping engine"
-HOMEPAGE="https://www.freedesktop.org/wiki/Software/HarfBuzz"
-[[ ${PV} == 9999 ]] || SRC_URI="https://www.freedesktop.org/software/${PN}/release/${P}.tar.bz2"
-
-LICENSE="Old-MIT ISC icu"
-SLOT="0/0.9.18" # 0.9.18 introduced the harfbuzz-icu split; bug #472416
-[[ ${PV} == 9999 ]] || \
-KEYWORDS="*"
-
-IUSE="+cairo debug fontconfig +glib graphite icu introspection static-libs test +truetype"
-REQUIRED_USE="introspection? ( glib )"
-
-RDEPEND="
-	cairo? ( x11-libs/cairo:= )
-	fontconfig? ( media-libs/fontconfig:1.0[${MULTILIB_USEDEP}] )
-	glib? ( >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}] )
-	graphite? ( >=media-gfx/graphite2-1.2.1:=[${MULTILIB_USEDEP}] )
-	icu? ( >=dev-libs/icu-51.2-r1:=[${MULTILIB_USEDEP}] )
-	introspection? ( >=dev-libs/gobject-introspection-1.34:= )
-	truetype? ( >=media-libs/freetype-2.5.0.1:2=[${MULTILIB_USEDEP}] )
-"
-DEPEND="${RDEPEND}
-	dev-util/gtk-doc-am
-	virtual/pkgconfig
-	test? ( ${PYTHON_DEPS} )
-"
-# eautoreconf requires gobject-introspection-common
-# ragel needed if regenerating *.hh files from *.rl
-[[ ${PV} = 9999 ]] && DEPEND="${DEPEND}
-	>=dev-libs/gobject-introspection-common-1.34
-	dev-util/ragel
-"
-
-pkg_setup() {
-	use test && python-any-r1_pkg_setup
-	if ! use debug ; then
-		append-cppflags -DHB_NDEBUG
-	fi
-}
-
-src_prepare() {
-	default
-
-	xdg_environment_reset
-
-	if [[ ${CHOST} == *-darwin* || ${CHOST} == *-solaris* ]] ; then
-		# on Darwin/Solaris we need to link with g++, like automake defaults
-		# to, but overridden by upstream because on Linux this is not
-		# necessary, bug #449126
-		sed -i \
-			-e 's/\<LINK\>/CXXLINK/' \
-			src/Makefile.am || die
-		sed -i \
-			-e '/libharfbuzz_la_LINK = /s/\<LINK\>/CXXLINK/' \
-			src/Makefile.in || die
-		sed -i \
-			-e '/AM_V_CCLD/s/\<LINK\>/CXXLINK/' \
-			test/api/Makefile.in || die
-	fi
-
-	[[ ${PV} == 9999 ]] && eautoreconf
-	elibtoolize # for Solaris
-
-	# failing test, https://bugs.freedesktop.org/show_bug.cgi?id=89190
-	sed -e 's#tests/arabic-fallback-shaping.tests##' -i test/shaping/Makefile.in || die "sed failed"
-}
-
-multilib_src_configure() {
-	ECONF_SOURCE="${S}" \
-	# harfbuzz-gobject only used for instrospection, bug #535852
-	econf \
-		--without-coretext \
-		--without-uniscribe \
-		$(use_enable static-libs static) \
-		$(multilib_native_use_with cairo) \
-		$(use_with fontconfig) \
-		$(use_with glib) \
-		$(use_with introspection gobject) \
-		$(use_with graphite graphite2) \
-		$(use_with icu) \
-		$(multilib_native_use_enable introspection) \
-		$(use_with truetype freetype)
-
-	if multilib_is_native_abi; then
-		ln -s "${S}"/docs/html docs/html || die
-	fi
-}
-
-multilib_src_install_all() {
-	einstalldocs
-	prune_libtool_files --modules
-}
diff --git a/media-libs/harfbuzz/metadata.xml b/media-libs/harfbuzz/metadata.xml
deleted file mode 100644
index fa37648..0000000
--- a/media-libs/harfbuzz/metadata.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>harfbuzz</herd>
-<upstream>
-<remote-id type="cpe">cpe:/a:harfbuzz_project:harfbuzz</remote-id>
-</upstream>
-</pkgmetadata>
diff --git a/media-libs/jpeg/Manifest b/media-libs/jpeg/Manifest
deleted file mode 100644
index edd947b..0000000
--- a/media-libs/jpeg/Manifest
+++ /dev/null
@@ -1,2 +0,0 @@
-DIST jpeg-6b-patches-2.tar.bz2 3703 RMD160 71f15f911baa0c60d5b2d78069c25f8a23f367b1 SHA1 dfb1a237f0984d3d3f03cdf3503b1ce72d50a81b SHA256 62d8496764330c57cc29137ee46c3cd76ce6463680f9e2e63af8bc4483439b2d
-DIST jpegsrc.v6b.tar.gz 613261 RMD160 18892206014fbb8cae2a44e281f4ed53feaf7882 SHA1 7079f0d6c42fad0cfba382cf6ad322add1ace8f9 SHA256 75c3ec241e9996504fe02a9ed4d12f16b74ade713972f3db9e65ce95cd27e35d
diff --git a/media-libs/jpeg/jpeg-6b-r11.ebuild b/media-libs/jpeg/jpeg-6b-r11.ebuild
deleted file mode 100644
index 62cc999..0000000
--- a/media-libs/jpeg/jpeg-6b-r11.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/jpeg/jpeg-6b-r9.ebuild,v 1.3 2010/01/18 15:35:38 ssuominen Exp $
-
-# this ebuild is only for the libjpeg.so.62 SONAME for ABI compat
-
-EAPI="2"
-
-inherit eutils libtool multilib toolchain-funcs
-
-PATCH_VER="2"
-DESCRIPTION="library to load, handle and manipulate images in the JPEG format (transition package)"
-HOMEPAGE="http://www.ijg.org/"
-SRC_URI="mirror://gentoo/jpegsrc.v${PV}.tar.gz
-	mirror://gentoo/${P}-patches-${PATCH_VER}.tar.bz2"
-
-LICENSE="IJG"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="!~media-libs/jpeg-6b:0
-	!media-libs/jpeg-compat"
-
-src_prepare() {
-	EPATCH_SUFFIX="patch" epatch "${WORKDIR}"/patch
-	elibtoolize
-}
-
-src_configure() {
-	tc-export CC
-	econf \
-		--enable-shared \
-		--disable-static \
-		--enable-maxmem=64
-}
-
-src_compile() {
-	emake libjpeg.la || die
-}
-
-src_install() {
-	dodir /usr/include /usr/$(get_libdir)
-	emake install-lib \
-		prefix="${D}/usr/" \
-		libdir='$(exec_prefix)/'$(get_libdir) || die
-}
diff --git a/media-libs/jpeg/metadata.xml b/media-libs/jpeg/metadata.xml
deleted file mode 100644
index e770d1b..0000000
--- a/media-libs/jpeg/metadata.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>graphics</herd>
-</pkgmetadata>
diff --git a/media-libs/libcamera/libcamera-0.0.1-r344.ebuild b/media-libs/libcamera/libcamera-0.0.1-r344.ebuild
deleted file mode 100644
index 69238f4..0000000
--- a/media-libs/libcamera/libcamera-0.0.1-r344.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-CROS_WORKON_COMMIT="7415c139cd1cab73fdd91785a7816eab51e7a567"
-CROS_WORKON_TREE="f7f0bc84eaa536e1c7ed7ecf20284545e19023b0"
-CROS_WORKON_PROJECT="chromiumos/third_party/libcamera"
-CROS_WORKON_INCREMENTAL_BUILD="1"
-
-inherit cros-workon meson
-
-DESCRIPTION="Camera support library for Linux"
-HOMEPAGE="https://www.libcamera.org"
-
-LICENSE="LGPL-2.1+"
-SLOT="0"
-KEYWORDS="*"
-IUSE="doc ipu3 rkisp1 test udev"
-
-RDEPEND="
-	media-libs/libjpeg-turbo
-	media-libs/libexif
-	>=net-libs/gnutls-3.3:=
-	udev? ( virtual/libudev )
-"
-
-DEPEND="
-	${RDEPEND}
-	dev-libs/openssl
-	>=dev-python/pyyaml-3:=
-"
-
-src_configure() {
-	local pipelines=(
-		"uvcvideo"
-		$(usev ipu3)
-		$(usev rkisp1)
-	)
-
-	pipeline_list() {
-		printf '%s,' "$@" | sed 's:,$::'
-	}
-
-	BUILD_DIR="$(cros-workon_get_build_dir)"
-
-	local emesonargs=(
-		$(meson_use test)
-		$(meson_feature doc documentation)
-		-Dandroid="enabled"
-		-Dpipelines="$(pipeline_list "${pipelines[@]}")"
-	)
-	meson_src_configure
-}
-
-src_compile() {
-	meson_src_compile
-}
-
-src_install() {
-	meson_src_install
-
-	dosym ../libcamera.so "/usr/$(get_libdir)/camera_hal/libcamera.so"
-}
diff --git a/media-libs/libcamera/libcamera-0.0.1-r540.ebuild b/media-libs/libcamera/libcamera-0.0.1-r540.ebuild
new file mode 100644
index 0000000..74b47af
--- /dev/null
+++ b/media-libs/libcamera/libcamera-0.0.1-r540.ebuild
@@ -0,0 +1,75 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="c11cc6f20b4f701afaa24416be2b711e2415d79d"
+CROS_WORKON_TREE="f069be1e4124d2430ef62cb3f389fcf33493beac"
+CROS_WORKON_PROJECT="chromiumos/third_party/libcamera"
+CROS_WORKON_INCREMENTAL_BUILD="1"
+
+inherit cros-workon meson
+
+DESCRIPTION="Camera support library for Linux"
+HOMEPAGE="https://www.libcamera.org"
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+KEYWORDS="*"
+IUSE="debug dev doc ipu3 rkisp1 test udev"
+
+RDEPEND="
+	chromeos-base/cros-camera-libs
+	dev? ( dev-libs/libevent[threads] )
+	dev-libs/libyaml
+	media-libs/libcamera-configs
+	media-libs/libjpeg-turbo
+	media-libs/libexif
+	>=net-libs/gnutls-3.3:=
+	media-libs/libyuv
+	udev? ( virtual/libudev )
+"
+
+DEPEND="
+	${RDEPEND}
+	dev-libs/openssl
+	>=dev-python/pyyaml-3:=
+"
+
+src_configure() {
+	local pipelines=(
+		"uvcvideo"
+		$(usev ipu3)
+		$(usev rkisp1)
+	)
+
+	pipeline_list() {
+		printf '%s,' "$@" | sed 's:,$::'
+	}
+
+	BUILD_DIR="$(cros-workon_get_build_dir)"
+
+	local emesonargs=(
+		$(meson_use test)
+		$(meson_feature dev cam)
+		$(meson_feature doc documentation)
+		-Dandroid="enabled"
+		-Dandroid_platform="cros"
+		-Dpipelines="$(pipeline_list "${pipelines[@]}")"
+		--buildtype "$(usex debug debug plain)"
+		--sysconfdir /etc/camera
+	)
+	meson_src_configure
+}
+
+src_compile() {
+	meson_src_compile
+}
+
+src_install() {
+	meson_src_install
+
+	dosym ../libcamera.so "/usr/$(get_libdir)/camera_hal/libcamera.so"
+
+	dostrip -x "/usr/$(get_libdir)/libcamera/"
+}
diff --git a/media-libs/libcamera/libcamera-9999.ebuild b/media-libs/libcamera/libcamera-9999.ebuild
index 433357f..c6b2ea6 100644
--- a/media-libs/libcamera/libcamera-9999.ebuild
+++ b/media-libs/libcamera/libcamera-9999.ebuild
@@ -1,7 +1,7 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI=7
 
 CROS_WORKON_PROJECT="chromiumos/third_party/libcamera"
 CROS_WORKON_INCREMENTAL_BUILD="1"
@@ -14,12 +14,17 @@
 LICENSE="LGPL-2.1+"
 SLOT="0"
 KEYWORDS="~*"
-IUSE="doc ipu3 rkisp1 test udev"
+IUSE="debug dev doc ipu3 rkisp1 test udev"
 
 RDEPEND="
+	chromeos-base/cros-camera-libs
+	dev? ( dev-libs/libevent[threads] )
+	dev-libs/libyaml
+	media-libs/libcamera-configs
 	media-libs/libjpeg-turbo
 	media-libs/libexif
 	>=net-libs/gnutls-3.3:=
+	media-libs/libyuv
 	udev? ( virtual/libudev )
 "
 
@@ -44,9 +49,13 @@
 
 	local emesonargs=(
 		$(meson_use test)
+		$(meson_feature dev cam)
 		$(meson_feature doc documentation)
 		-Dandroid="enabled"
+		-Dandroid_platform="cros"
 		-Dpipelines="$(pipeline_list "${pipelines[@]}")"
+		--buildtype "$(usex debug debug plain)"
+		--sysconfdir /etc/camera
 	)
 	meson_src_configure
 }
@@ -59,4 +68,6 @@
 	meson_src_install
 
 	dosym ../libcamera.so "/usr/$(get_libdir)/camera_hal/libcamera.so"
+
+	dostrip -x "/usr/$(get_libdir)/libcamera/"
 }
diff --git a/media-libs/libmtp/Manifest b/media-libs/libmtp/Manifest
index 09c2496..52cbb5c 100644
--- a/media-libs/libmtp/Manifest
+++ b/media-libs/libmtp/Manifest
@@ -1 +1 @@
-DIST libmtp-1.1.16.tar.gz 820516 BLAKE2B debc0755b91f44a878c4a5d4eb8d23c92ac17a80cf59ca13ada80bc1884ee7ab771153252258e33c834aba718a064d9e9a1b4618b3e0abe81bbffdfc7e5a2c88 SHA512 0540271930c1c932c5d06dcdd30142d407a4fadd022b195e8339d614fa3ec9b050605bf013b28ac6451f4dfcddf7add949c928acb1382802ab5fd6311c1628a0
+DIST libmtp-1.1.18.tar.gz 832463 BLAKE2B 136033e9700fcce6d5092f8f5f896ce40b2ef659d638bd2e432fb7522c1c4e7e930171198ada5c67c0f5dc7c94ed36ec7d2ac8f4faa3bb335d4a8abb032ae2ef SHA512 1a8d503effd83217c339a1aea3a16954d718059edf3110cb2f21cff74cdd1243e7f4880d4e12f8fbdc9a5deed366c4151babe6ecd6f4cf4b7330a27e27bf7cc8
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-00_disable_playlist.patch b/media-libs/libmtp/files/libmtp-1.1.16-00_disable_playlist.patch
deleted file mode 100644
index 920d34f..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-00_disable_playlist.patch
+++ /dev/null
@@ -1,276 +0,0 @@
-diff --git a/examples/Makefile.am b/examples/Makefile.am
-index 46ac70f..d59d595 100644
---- a/examples/Makefile.am
-+++ b/examples/Makefile.am
-@@ -1,7 +1,7 @@
- bin_PROGRAMS=mtp-connect mtp-detect mtp-tracks mtp-files \
--	mtp-folders mtp-trexist mtp-playlists mtp-getplaylist \
--	mtp-format mtp-albumart mtp-albums mtp-newplaylist mtp-emptyfolders \
-+	mtp-folders mtp-trexist \
-+	mtp-format mtp-albumart mtp-albums mtp-emptyfolders \
- 	mtp-thumb mtp-reset mtp-filetree
- 
- mtp_connect_SOURCES=connect.c connect.h delfile.c getfile.c newfolder.c \
- 	sendfile.c sendtr.c pathutils.c pathutils.h \
-@@ -11,9 +13,6 @@ mtp_tracks_SOURCES=tracks.c util.c util.h common.h
- mtp_files_SOURCES=files.c util.c util.h common.h
- mtp_folders_SOURCES=folders.c util.c util.h common.h
- mtp_trexist_SOURCES=trexist.c util.c util.h common.h
--mtp_playlists_SOURCES=playlists.c util.c util.h common.h
--mtp_getplaylist_SOURCES=getplaylist.c util.c util.h common.h
--mtp_newplaylist_SOURCES=newplaylist.c util.c util.h common.h
- mtp_format_SOURCES=format.c util.c util.h common.h
- mtp_albumart_SOURCES=albumart.c util.c util.h common.h
- mtp_albums_SOURCES=albums.c util.c util.h common.h
-diff --git a/examples/Makefile.in b/examples/Makefile.in
-index 81f5c13..577286d 100644
---- a/examples/Makefile.in
-+++ b/examples/Makefile.in
-@@ -90,10 +90,10 @@ build_triplet = @build@
- host_triplet = @host@
- bin_PROGRAMS = mtp-connect$(EXEEXT) mtp-detect$(EXEEXT) \
- 	mtp-tracks$(EXEEXT) mtp-files$(EXEEXT) mtp-folders$(EXEEXT) \
--	mtp-trexist$(EXEEXT) mtp-playlists$(EXEEXT) \
--	mtp-getplaylist$(EXEEXT) mtp-format$(EXEEXT) \
-+	mtp-trexist$(EXEEXT) \
-+	mtp-format$(EXEEXT) \
- 	mtp-albumart$(EXEEXT) mtp-albums$(EXEEXT) \
--	mtp-newplaylist$(EXEEXT) mtp-emptyfolders$(EXEEXT) \
-+	mtp-emptyfolders$(EXEEXT) \
- 	mtp-thumb$(EXEEXT) mtp-reset$(EXEEXT) mtp-filetree$(EXEEXT)
- subdir = examples
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-@@ -153,18 +153,6 @@ am_mtp_format_OBJECTS = format.$(OBJEXT) util.$(OBJEXT)
- mtp_format_OBJECTS = $(am_mtp_format_OBJECTS)
- mtp_format_LDADD = $(LDADD)
- mtp_format_DEPENDENCIES = ../src/libmtp.la
--am_mtp_getplaylist_OBJECTS = getplaylist.$(OBJEXT) util.$(OBJEXT)
--mtp_getplaylist_OBJECTS = $(am_mtp_getplaylist_OBJECTS)
--mtp_getplaylist_LDADD = $(LDADD)
--mtp_getplaylist_DEPENDENCIES = ../src/libmtp.la
--am_mtp_newplaylist_OBJECTS = newplaylist.$(OBJEXT) util.$(OBJEXT)
--mtp_newplaylist_OBJECTS = $(am_mtp_newplaylist_OBJECTS)
--mtp_newplaylist_LDADD = $(LDADD)
--mtp_newplaylist_DEPENDENCIES = ../src/libmtp.la
--am_mtp_playlists_OBJECTS = playlists.$(OBJEXT) util.$(OBJEXT)
--mtp_playlists_OBJECTS = $(am_mtp_playlists_OBJECTS)
--mtp_playlists_LDADD = $(LDADD)
--mtp_playlists_DEPENDENCIES = ../src/libmtp.la
- am_mtp_reset_OBJECTS = reset.$(OBJEXT) util.$(OBJEXT)
- mtp_reset_OBJECTS = $(am_mtp_reset_OBJECTS)
- mtp_reset_LDADD = $(LDADD)
-@@ -231,16 +219,14 @@ SOURCES = $(mtp_albumart_SOURCES) $(mtp_albums_SOURCES) \
- 	$(mtp_connect_SOURCES) $(mtp_detect_SOURCES) \
- 	$(mtp_emptyfolders_SOURCES) $(mtp_files_SOURCES) \
- 	$(mtp_filetree_SOURCES) $(mtp_folders_SOURCES) \
--	$(mtp_format_SOURCES) $(mtp_getplaylist_SOURCES) \
--	$(mtp_newplaylist_SOURCES) $(mtp_playlists_SOURCES) \
-+	$(mtp_format_SOURCES) \
- 	$(mtp_reset_SOURCES) $(mtp_thumb_SOURCES) \
- 	$(mtp_tracks_SOURCES) $(mtp_trexist_SOURCES)
- DIST_SOURCES = $(mtp_albumart_SOURCES) $(mtp_albums_SOURCES) \
- 	$(mtp_connect_SOURCES) $(mtp_detect_SOURCES) \
- 	$(mtp_emptyfolders_SOURCES) $(mtp_files_SOURCES) \
- 	$(mtp_filetree_SOURCES) $(mtp_folders_SOURCES) \
--	$(mtp_format_SOURCES) $(mtp_getplaylist_SOURCES) \
--	$(mtp_newplaylist_SOURCES) $(mtp_playlists_SOURCES) \
-+	$(mtp_format_SOURCES) \
- 	$(mtp_reset_SOURCES) $(mtp_thumb_SOURCES) \
- 	$(mtp_tracks_SOURCES) $(mtp_trexist_SOURCES)
- am__can_run_installinfo = \
-@@ -410,9 +396,6 @@ mtp_tracks_SOURCES = tracks.c util.c util.h common.h
- mtp_files_SOURCES = files.c util.c util.h common.h
- mtp_folders_SOURCES = folders.c util.c util.h common.h
- mtp_trexist_SOURCES = trexist.c util.c util.h common.h
--mtp_playlists_SOURCES = playlists.c util.c util.h common.h
--mtp_getplaylist_SOURCES = getplaylist.c util.c util.h common.h
--mtp_newplaylist_SOURCES = newplaylist.c util.c util.h common.h
- mtp_format_SOURCES = format.c util.c util.h common.h
- mtp_albumart_SOURCES = albumart.c util.c util.h common.h
- mtp_albums_SOURCES = albums.c util.c util.h common.h
-@@ -542,18 +525,6 @@ mtp-format$(EXEEXT): $(mtp_format_OBJECTS) $(mtp_format_DEPENDENCIES) $(EXTRA_mt
- 	@rm -f mtp-format$(EXEEXT)
- 	$(AM_V_CCLD)$(LINK) $(mtp_format_OBJECTS) $(mtp_format_LDADD) $(LIBS)
- 
--mtp-getplaylist$(EXEEXT): $(mtp_getplaylist_OBJECTS) $(mtp_getplaylist_DEPENDENCIES) $(EXTRA_mtp_getplaylist_DEPENDENCIES) 
--	@rm -f mtp-getplaylist$(EXEEXT)
--	$(AM_V_CCLD)$(LINK) $(mtp_getplaylist_OBJECTS) $(mtp_getplaylist_LDADD) $(LIBS)
--
--mtp-newplaylist$(EXEEXT): $(mtp_newplaylist_OBJECTS) $(mtp_newplaylist_DEPENDENCIES) $(EXTRA_mtp_newplaylist_DEPENDENCIES) 
--	@rm -f mtp-newplaylist$(EXEEXT)
--	$(AM_V_CCLD)$(LINK) $(mtp_newplaylist_OBJECTS) $(mtp_newplaylist_LDADD) $(LIBS)
--
--mtp-playlists$(EXEEXT): $(mtp_playlists_OBJECTS) $(mtp_playlists_DEPENDENCIES) $(EXTRA_mtp_playlists_DEPENDENCIES) 
--	@rm -f mtp-playlists$(EXEEXT)
--	$(AM_V_CCLD)$(LINK) $(mtp_playlists_OBJECTS) $(mtp_playlists_LDADD) $(LIBS)
--
- mtp-reset$(EXEEXT): $(mtp_reset_OBJECTS) $(mtp_reset_DEPENDENCIES) $(EXTRA_mtp_reset_DEPENDENCIES) 
- 	@rm -f mtp-reset$(EXEEXT)
- 	$(AM_V_CCLD)$(LINK) $(mtp_reset_OBJECTS) $(mtp_reset_LDADD) $(LIBS)
-@@ -587,11 +558,8 @@ distclean-compile:
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/folders.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getfile.Po@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getplaylist.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfolder.Po@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newplaylist.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pathutils.Po@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/playlists.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reset.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendtr.Po@am__quote@ # am--include-marker
-diff --git a/src/Makefile.am b/src/Makefile.am
-index 7dc1a1a..5494371 100644
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -1,9 +1,9 @@
- lib_LTLIBRARIES = libmtp.la
- 
- libmtp_la_CFLAGS = @LIBUSB_CFLAGS@
--libmtp_la_SOURCES = libmtp.c unicode.c unicode.h util.c util.h playlist-spl.c \
-+libmtp_la_SOURCES = libmtp.c unicode.c unicode.h util.c util.h \
- 	gphoto2-endian.h _stdint.h ptp.c ptp.h libusb-glue.h \
--	music-players.h device-flags.h playlist-spl.h mtpz.h \
-+	music-players.h device-flags.h mtpz.h \
- 	chdk_live_view.h chdk_ptp.h
- 
- if MTPZ_COMPILE
-diff --git a/src/Makefile.in b/src/Makefile.in
-index 2a4310d..31676d2 100644
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -140,8 +140,8 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
- LTLIBRARIES = $(lib_LTLIBRARIES)
- am__DEPENDENCIES_1 =
- am__libmtp_la_SOURCES_DIST = libmtp.c unicode.c unicode.h util.c \
--	util.h playlist-spl.c gphoto2-endian.h _stdint.h ptp.c ptp.h \
--	libusb-glue.h music-players.h device-flags.h playlist-spl.h \
-+	util.h gphoto2-endian.h _stdint.h ptp.c ptp.h \
-+	libusb-glue.h music-players.h device-flags.h \
- 	mtpz.h chdk_live_view.h chdk_ptp.h mtpz.c libusb1-glue.c \
- 	libusb-glue.c libopenusb1-glue.c
- @MTPZ_COMPILE_TRUE@am__objects_1 = libmtp_la-mtpz.lo
-@@ -150,7 +150,7 @@ am__libmtp_la_SOURCES_DIST = libmtp.c unicode.c unicode.h util.c \
- @LIBOPENUSB_COMPILE_TRUE@am__objects_4 =  \
- @LIBOPENUSB_COMPILE_TRUE@	libmtp_la-libopenusb1-glue.lo
- am_libmtp_la_OBJECTS = libmtp_la-libmtp.lo libmtp_la-unicode.lo \
--	libmtp_la-util.lo libmtp_la-playlist-spl.lo libmtp_la-ptp.lo \
-+	libmtp_la-util.lo libmtp_la-ptp.lo \
- 	$(am__objects_1) $(am__objects_2) $(am__objects_3) \
- 	$(am__objects_4)
- libmtp_la_OBJECTS = $(am_libmtp_la_OBJECTS)
-@@ -370,8 +370,8 @@ top_srcdir = @top_srcdir@
- lib_LTLIBRARIES = libmtp.la
- libmtp_la_CFLAGS = @LIBUSB_CFLAGS@
- libmtp_la_SOURCES = libmtp.c unicode.c unicode.h util.c util.h \
--	playlist-spl.c gphoto2-endian.h _stdint.h ptp.c ptp.h \
--	libusb-glue.h music-players.h device-flags.h playlist-spl.h \
-+	gphoto2-endian.h _stdint.h ptp.c ptp.h \
-+	libusb-glue.h music-players.h device-flags.h \
- 	mtpz.h chdk_live_view.h chdk_ptp.h $(am__append_1) \
- 	$(am__append_2) $(am__append_3) $(am__append_4)
- include_HEADERS = libmtp.h
-@@ -496,7 +496,6 @@ distclean-compile:
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-libusb-glue.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-libusb1-glue.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-mtpz.Plo@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-playlist-spl.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-ptp.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-unicode.Plo@am__quote@ # am--include-marker
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-util.Plo@am__quote@ # am--include-marker
-@@ -549,13 +548,6 @@ libmtp_la-util.lo: util.c
- @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmtp_la_CFLAGS) $(CFLAGS) -c -o libmtp_la-util.lo `test -f 'util.c' || echo '$(srcdir)/'`util.c
- 
--libmtp_la-playlist-spl.lo: playlist-spl.c
--@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmtp_la_CFLAGS) $(CFLAGS) -MT libmtp_la-playlist-spl.lo -MD -MP -MF $(DEPDIR)/libmtp_la-playlist-spl.Tpo -c -o libmtp_la-playlist-spl.lo `test -f 'playlist-spl.c' || echo '$(srcdir)/'`playlist-spl.c
--@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmtp_la-playlist-spl.Tpo $(DEPDIR)/libmtp_la-playlist-spl.Plo
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='playlist-spl.c' object='libmtp_la-playlist-spl.lo' libtool=yes @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmtp_la_CFLAGS) $(CFLAGS) -c -o libmtp_la-playlist-spl.lo `test -f 'playlist-spl.c' || echo '$(srcdir)/'`playlist-spl.c
--
- libmtp_la-ptp.lo: ptp.c
- @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmtp_la_CFLAGS) $(CFLAGS) -MT libmtp_la-ptp.lo -MD -MP -MF $(DEPDIR)/libmtp_la-ptp.Tpo -c -o libmtp_la-ptp.lo `test -f 'ptp.c' || echo '$(srcdir)/'`ptp.c
- @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmtp_la-ptp.Tpo $(DEPDIR)/libmtp_la-ptp.Plo
-diff --git a/src/libmtp.c b/src/libmtp.c
-index 23bb3d2..2338b36 100644
---- a/src/libmtp.c
-+++ b/src/libmtp.c
-@@ -40,7 +40,9 @@
- #include "ptp.h"
- #include "libusb-glue.h"
- #include "device-flags.h"
-+#if 0
- #include "playlist-spl.h"
-+#endif
- #include "util.h"
- 
- #include "mtpz.h"
-@@ -7032,6 +7034,7 @@ int LIBMTP_Set_Track_Name(LIBMTP_mtpdevice_t *device,
-   return ret;
- }
- 
-+#if 0
- /**
-  * This function renames a single playlist object file holder.
-  * This simply means that the <code>PTP_OPC_ObjectFileName</code>
-@@ -7068,6 +7071,7 @@ int LIBMTP_Set_Playlist_Name(LIBMTP_mtpdevice_t *device,
-   playlist->name = strdup(newname);
-   return ret;
- }
-+#endif
- 
- /**
-  * This function renames a single album.
-@@ -7485,6 +7489,7 @@ uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t *device, char *name,
-   return new_id;
- }
- 
-+#if 0
- /**
-  * This creates a new playlist metadata structure and allocates memory
-  * for it. Notice that if you add strings to this structure they
-@@ -7681,6 +7686,7 @@ LIBMTP_playlist_t *LIBMTP_Get_Playlist(LIBMTP_mtpdevice_t *device, uint32_t cons
- 
-   return pl;
- }
-+#endif
- 
- /**
-  * This function creates a new abstract list such as a playlist
-@@ -8237,6 +8243,7 @@ static int update_abstract_list(LIBMTP_mtpdevice_t *device,
- }
- 
- 
-+#if 0
- /**
-  * This routine creates a new playlist based on the metadata
-  * supplied. If the <code>tracks</code> field of the metadata
-@@ -8335,6 +8342,7 @@ int LIBMTP_Update_Playlist(LIBMTP_mtpdevice_t *device,
- 			      metadata->tracks,
- 			      metadata->no_tracks);
- }
-+#endif
- 
- /**
-  * This creates a new album metadata structure and allocates memory
-diff --git a/src/libmtp.h.in b/src/libmtp.h.in
-index 89d39d9..92325b2 100644
---- a/src/libmtp.h.in
-+++ b/src/libmtp.h.in
-@@ -1016,6 +1016,7 @@ int LIBMTP_Set_Folder_Name(LIBMTP_mtpdevice_t *, LIBMTP_folder_t *, const char *
- /** @} */
- 
- 
-+#if 0
- /**
-  * @}
-  * @defgroup playlists The audio/video playlist management API.
-@@ -1028,6 +1029,7 @@ LIBMTP_playlist_t *LIBMTP_Get_Playlist(LIBMTP_mtpdevice_t *, uint32_t const);
- int LIBMTP_Create_New_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * const);
- int LIBMTP_Update_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * const);
- int LIBMTP_Set_Playlist_Name(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t *, const char *);
-+#endif
- 
- /**
-  * @}
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-01_build_fixes.patch b/media-libs/libmtp/files/libmtp-1.1.16-01_build_fixes.patch
deleted file mode 100644
index 38f6570..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-01_build_fixes.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/ptp.h b/src/ptp.h
-index 7c06b64..4dedabf 100644
---- a/src/ptp.h
-+++ b/src/ptp.h
-@@ -3603,7 +3603,7 @@ uint16_t ptp_olympus_omd_move_focus (PTPParams* params, uint32_t direction, uint
- static inline int
- ptp_operation_issupported(PTPParams* params, uint16_t operation)
- {
--	unsigned int i=0;
-+	uint32_t i=0;
- 
- 	for (;i<params->deviceinfo.OperationsSupported_len;i++) {
- 		if (params->deviceinfo.OperationsSupported[i]==operation)
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-03_enable_ptp_support.patch b/media-libs/libmtp/files/libmtp-1.1.16-03_enable_ptp_support.patch
deleted file mode 100644
index b458536..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-03_enable_ptp_support.patch
+++ /dev/null
@@ -1,52 +0,0 @@
-diff --git a/src/libusb1-glue.c b/src/libusb1-glue.c
-index 636c544..2a8bb61 100644
---- a/src/libusb1-glue.c
-+++ b/src/libusb1-glue.c
-@@ -224,15 +224,15 @@ static void free_mtpdevice_list(mtpdevice_list_t *devlist)
- }
- 
- /**
-- * This checks if a device has an MTP descriptor. The descriptor was
-- * elaborated about in gPhoto bug 1482084, and some official documentation
-- * with no strings attached was published by Microsoft at
-+ * This checks if a device is a PTP device or has an MTP descriptor. The
-+ * descriptor was elaborated about in gPhoto bug 1482084, and some official
-+ * documentation with no strings attached was published by Microsoft at
-  * http://www.microsoft.com/whdc/system/bus/USB/USBFAQ_intermed.mspx#E3HAC
-  *
-  * @param dev a device struct from libusb.
-  * @param dumpfile set to non-NULL to make the descriptors dump out
-  *        to this file in human-readable hex so we can scruitinze them.
-- * @return 1 if the device is MTP compliant, 0 if not.
-+ * @return 1 if the device is PTP or MTP compliant, 0 if not.
-  */
- static int probe_device_descriptor(libusb_device *dev, FILE *dumpfile)
- {
-@@ -316,7 +316,6 @@ static int probe_device_descriptor(libusb_device *dev, FILE *dumpfile)
- 	   * TODO: Check for Still Image Capture class with PIMA 15740
- 	   * protocol, also known as PTP
- 	   */
--#if 0
- 	  if (intf->bInterfaceClass == LIBUSB_CLASS_PTP
- 	      && intf->bInterfaceSubClass == 0x01
- 	      && intf->bInterfaceProtocol == 0x01) {
-@@ -325,17 +324,9 @@ static int probe_device_descriptor(libusb_device *dev, FILE *dumpfile)
- 	      fprintf(dumpfile, "   Found PTP device, check vendor "
- 		      "extension...\n");
- 	    }
--	    /*
--	     * This is where we may insert code to open a PTP
--	     * session and query the vendor extension ID to see
--	     * if it is 0xffffffff, i.e. MTP according to the spec.
--	     */
--	    if (was_mtp_extension) {
--	      libusb_close(devh);
--	      return 1;
--	    }
-+	    libusb_close(devh);
-+	    return 1;
- 	  }
--#endif
- 
- 	  /*
- 	   * Next we search for the MTP substring in the interface name.
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-05_improve_warning_formatting.patch b/media-libs/libmtp/files/libmtp-1.1.16-05_improve_warning_formatting.patch
deleted file mode 100644
index 27caef1..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-05_improve_warning_formatting.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff --git a/src/libmtp.c b/src/libmtp.c
-index 2338b36..eeb9c8c 100644
---- a/src/libmtp.c
-+++ b/src/libmtp.c
-@@ -1922,15 +1922,15 @@ LIBMTP_mtpdevice_t *LIBMTP_Open_Raw_Device_Uncached(LIBMTP_raw_device_t *rawdevi
-   /* Check: if this is a PTP device, is it really tagged as MTP? */
-   if (current_params->deviceinfo.VendorExtensionID != 0x00000006) {
-     LIBMTP_ERROR("LIBMTP WARNING: no MTP vendor extension on device "
--		 "%d on bus %d",
-+		 "%d on bus %d\n",
- 		 rawdevice->devnum, rawdevice->bus_location);
--    LIBMTP_ERROR("LIBMTP WARNING: VendorExtensionID: %08x",
-+    LIBMTP_ERROR("LIBMTP WARNING: VendorExtensionID: %08x\n",
- 		 current_params->deviceinfo.VendorExtensionID);
--    LIBMTP_ERROR("LIBMTP WARNING: VendorExtensionDesc: %s",
-+    LIBMTP_ERROR("LIBMTP WARNING: VendorExtensionDesc: %s\n",
- 		 current_params->deviceinfo.VendorExtensionDesc);
-     LIBMTP_ERROR("LIBMTP WARNING: this typically means the device is PTP "
- 		 "(i.e. a camera) but not an MTP device at all. "
--		 "Trying to continue anyway.");
-+		 "Trying to continue anyway.\n");
-   }
- 
-   parse_extension_descriptor(mtp_device,
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-06_disable_ptp_canon_eos_setdevicepropvalue.patch b/media-libs/libmtp/files/libmtp-1.1.16-06_disable_ptp_canon_eos_setdevicepropvalue.patch
deleted file mode 100644
index 2db7c0e..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-06_disable_ptp_canon_eos_setdevicepropvalue.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-diff --git a/src/ptp.c b/src/ptp.c
-index d66c8f2..192795b 100644
---- a/src/ptp.c
-+++ b/src/ptp.c
-@@ -3158,6 +3158,7 @@ ptp_canon_eos_setdevicepropvalueex (PTPParams* params, unsigned char* data, unsi
- 	return ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL);
- }
- 
-+#if 0
- uint16_t
- ptp_canon_eos_setdevicepropvalue (PTPParams* params,
- 	uint16_t propcode, PTPPropertyValue *value, uint16_t datatype
-@@ -3240,6 +3241,7 @@ ptp_canon_eos_setdevicepropvalue (PTPParams* params,
- 	free (data);
- 	return ret;
- }
-+#endif
- 
- /**
-  * ptp_canon_getpartialobject:
-diff --git a/src/ptp.h b/src/ptp.h
-index 4dedabf..adfef90 100644
---- a/src/ptp.h
-+++ b/src/ptp.h
-@@ -3320,8 +3320,10 @@ uint16_t ptp_canon_eos_bulbstart (PTPParams* params);
- uint16_t ptp_canon_eos_bulbend (PTPParams* params);
- uint16_t ptp_canon_eos_getdevicepropdesc (PTPParams* params, uint16_t propcode,
- 				PTPDevicePropDesc *devicepropertydesc);
-+#if 0
- uint16_t ptp_canon_eos_setdevicepropvalue (PTPParams* params, uint16_t propcode,
-                         	PTPPropertyValue* value, uint16_t datatype);
-+#endif
- uint16_t ptp_nikon_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size);
- uint16_t ptp_nikon_curve_download (PTPParams* params, 
- 				unsigned char **data, unsigned int *size);
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-09_do_not_build_udev_and_examples.patch b/media-libs/libmtp/files/libmtp-1.1.16-09_do_not_build_udev_and_examples.patch
deleted file mode 100644
index d2858f6..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-09_do_not_build_udev_and_examples.patch
+++ /dev/null
@@ -1,635 +0,0 @@
-diff --git a/Makefile.am b/Makefile.am
-index 7b7e06b..ba8f69a 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,4 +1,4 @@
--SUBDIRS=src examples util doc
-+SUBDIRS=src util doc
- ACLOCAL_AMFLAGS=-I m4
- 
- pkgconfigdir=$(libdir)/pkgconfig
-@@ -8,24 +8,24 @@ EXTRA_DIST=libmtp.pc libmtp.sh COPYING README.windows.txt
- 
- # This stuff only makes sense on Linux so only
- # build and ship it on Linux.
--if USE_LINUX
--udevrulesdir=@UDEV@/rules.d
--hwdbdir=@UDEV@/hwdb.d
--udevrules_DATA=@UDEV_RULES@
--hwdb_DATA=69-libmtp.hwdb
--noinst_DATA=libmtp.usermap libmtp.fdi
--
--libmtp.usermap: util/mtp-hotplug
--	util/mtp-hotplug > libmtp.usermap
--
--@UDEV_RULES@: util/mtp-hotplug
--	util/mtp-hotplug -u -p"@UDEV@" @UDEV_GROUP@ @UDEV_MODE@ > @UDEV_RULES@
--
--libmtp.fdi: util/mtp-hotplug
--	util/mtp-hotplug -H > libmtp.fdi
--
--$(hwdb_DATA): util/mtp-hotplug
--	util/mtp-hotplug -w > $(hwdb_DATA)
--
--CLEANFILES = libmtp.usermap @UDEV_RULES@ libmtp.fdi libmtp.hwdb
--endif
-+#if USE_LINUX
-+#udevrulesdir=@UDEV@/rules.d
-+#hwdbdir=@UDEV@/hwdb.d
-+#udevrules_DATA=@UDEV_RULES@
-+#hwdb_DATA=69-libmtp.hwdb
-+#noinst_DATA=libmtp.usermap libmtp.fdi
-+#
-+#libmtp.usermap: util/mtp-hotplug
-+#	util/mtp-hotplug > libmtp.usermap
-+#
-+#@UDEV_RULES@: util/mtp-hotplug
-+#	util/mtp-hotplug -u -p"@UDEV@" @UDEV_GROUP@ @UDEV_MODE@ > @UDEV_RULES@
-+#
-+#libmtp.fdi: util/mtp-hotplug
-+#	util/mtp-hotplug -H > libmtp.fdi
-+#
-+#$(hwdb_DATA): util/mtp-hotplug
-+#	util/mtp-hotplug -w > $(hwdb_DATA)
-+#
-+#CLEANFILES = libmtp.usermap @UDEV_RULES@ libmtp.fdi libmtp.hwdb
-+#endif
-diff --git a/Makefile.in b/Makefile.in
-index 757c02c..a54aeb5 100644
---- a/Makefile.in
-+++ b/Makefile.in
-@@ -159,9 +159,8 @@ am__uninstall_files_from_dir = { \
-     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-          $(am__cd) "$$dir" && rm -f $$files; }; \
-   }
--am__installdirs = "$(DESTDIR)$(hwdbdir)" "$(DESTDIR)$(pkgconfigdir)" \
--	"$(DESTDIR)$(udevrulesdir)"
--DATA = $(hwdb_DATA) $(noinst_DATA) $(pkgconfig_DATA) $(udevrules_DATA)
-+am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
-+DATA = $(pkgconfig_DATA)
- RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
-   distclean-recursive maintainer-clean-recursive
- am__recursive_targets = \
-@@ -371,20 +370,11 @@ target_alias = @target_alias@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
--SUBDIRS = src examples util doc
-+SUBDIRS = src util doc
- ACLOCAL_AMFLAGS = -I m4
- pkgconfigdir = $(libdir)/pkgconfig
- pkgconfig_DATA = libmtp.pc
- EXTRA_DIST = libmtp.pc libmtp.sh COPYING README.windows.txt
--
--# This stuff only makes sense on Linux so only
--# build and ship it on Linux.
--@USE_LINUX_TRUE@udevrulesdir = @UDEV@/rules.d
--@USE_LINUX_TRUE@hwdbdir = @UDEV@/hwdb.d
--@USE_LINUX_TRUE@udevrules_DATA = @UDEV_RULES@
--@USE_LINUX_TRUE@hwdb_DATA = 69-libmtp.hwdb
--@USE_LINUX_TRUE@noinst_DATA = libmtp.usermap libmtp.fdi
--@USE_LINUX_TRUE@CLEANFILES = libmtp.usermap @UDEV_RULES@ libmtp.fdi libmtp.hwdb
- all: config.h
- 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
- 
-@@ -494,27 +484,6 @@ uninstall-pkgconfigDATA:
- 	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
- 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- 	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
--install-udevrulesDATA: $(udevrules_DATA)
--	@$(NORMAL_INSTALL)
--	@list='$(udevrules_DATA)'; test -n "$(udevrulesdir)" || list=; \
--	if test -n "$$list"; then \
--	  echo " $(MKDIR_P) '$(DESTDIR)$(udevrulesdir)'"; \
--	  $(MKDIR_P) "$(DESTDIR)$(udevrulesdir)" || exit 1; \
--	fi; \
--	for p in $$list; do \
--	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
--	  echo "$$d$$p"; \
--	done | $(am__base_list) | \
--	while read files; do \
--	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(udevrulesdir)'"; \
--	  $(INSTALL_DATA) $$files "$(DESTDIR)$(udevrulesdir)" || exit $$?; \
--	done
--
--uninstall-udevrulesDATA:
--	@$(NORMAL_UNINSTALL)
--	@list='$(udevrules_DATA)'; test -n "$(udevrulesdir)" || list=; \
--	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
--	dir='$(DESTDIR)$(udevrulesdir)'; $(am__uninstall_files_from_dir)
- 
- # This directory's subdirectories are mostly independent; you can cd
- # into them and run 'make' without going through this Makefile.
-@@ -818,7 +787,7 @@ check: check-recursive
- all-am: Makefile $(DATA) config.h
- installdirs: installdirs-recursive
- installdirs-am:
--	for dir in "$(DESTDIR)$(hwdbdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(udevrulesdir)"; do \
-+	for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
- 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
- 	done
- install: install-recursive
-@@ -843,7 +812,6 @@ install-strip:
- mostlyclean-generic:
- 
- clean-generic:
--	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
- 
- distclean-generic:
- 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-@@ -874,8 +842,7 @@ info: info-recursive
- 
- info-am:
- 
--install-data-am: install-hwdbDATA install-pkgconfigDATA \
--	install-udevrulesDATA
-+install-data-am: install-pkgconfigDATA
- 
- install-dvi: install-dvi-recursive
- 
-@@ -921,8 +888,7 @@ ps: ps-recursive
- 
- ps-am:
- 
--uninstall-am: uninstall-hwdbDATA uninstall-pkgconfigDATA \
--	uninstall-udevrulesDATA
-+uninstall-am: uninstall-pkgconfigDATA
- 
- .MAKE: $(am__recursive_targets) all install-am install-strip
- 
-@@ -935,30 +901,18 @@ uninstall-am: uninstall-hwdbDATA uninstall-pkgconfigDATA \
- 	distdir distuninstallcheck dvi dvi-am html html-am info \
- 	info-am install install-am install-data install-data-am \
- 	install-dvi install-dvi-am install-exec install-exec-am \
--	install-html install-html-am install-hwdbDATA install-info \
-+	install-html install-html-am install-info \
- 	install-info-am install-man install-pdf install-pdf-am \
- 	install-pkgconfigDATA install-ps install-ps-am install-strip \
--	install-udevrulesDATA installcheck installcheck-am installdirs \
-+	installcheck installcheck-am installdirs \
- 	installdirs-am maintainer-clean maintainer-clean-generic \
- 	mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
- 	ps ps-am tags tags-am uninstall uninstall-am \
--	uninstall-hwdbDATA uninstall-pkgconfigDATA \
--	uninstall-udevrulesDATA
-+	uninstall-pkgconfigDATA
- 
- .PRECIOUS: Makefile
- 
- 
--@USE_LINUX_TRUE@libmtp.usermap: util/mtp-hotplug
--@USE_LINUX_TRUE@	util/mtp-hotplug > libmtp.usermap
--
--@USE_LINUX_TRUE@@UDEV_RULES@: util/mtp-hotplug
--@USE_LINUX_TRUE@	util/mtp-hotplug -u -p"@UDEV@" @UDEV_GROUP@ @UDEV_MODE@ > @UDEV_RULES@
--
--@USE_LINUX_TRUE@libmtp.fdi: util/mtp-hotplug
--@USE_LINUX_TRUE@	util/mtp-hotplug -H > libmtp.fdi
--
--@USE_LINUX_TRUE@$(hwdb_DATA): util/mtp-hotplug
--@USE_LINUX_TRUE@	util/mtp-hotplug -w > $(hwdb_DATA)
- 
- # Tell versions [3.59,3.63) of GNU make to not export all variables.
- # Otherwise a system limit (for SysV at least) may be exceeded.
-diff --git a/util/Makefile.am b/util/Makefile.am
-index 11f3640..f39c888 100644
---- a/util/Makefile.am
-+++ b/util/Makefile.am
-@@ -1,11 +1,11 @@
--if USE_LINUX
--bin_PROGRAMS=mtp-hotplug
--mtp_hotplug_SOURCES=mtp-hotplug.c
--
--mtp_probedir=@UDEV@
--mtp_probe_PROGRAMS=mtp-probe
--mtp_probe_SOURCES=mtp-probe.c
--endif
-+#if USE_LINUX
-+#bin_PROGRAMS=mtp-hotplug
-+#mtp_hotplug_SOURCES=mtp-hotplug.c
-+#
-+#mtp_probedir=@UDEV@
-+#mtp_probe_PROGRAMS=mtp-probe
-+#mtp_probe_SOURCES=mtp-probe.c
-+#endif
- 
- AM_CPPFLAGS=-I$(top_builddir)/src
- LDADD=../src/libmtp.la
-diff --git a/util/Makefile.in b/util/Makefile.in
-index 0554846..f970da6 100644
---- a/util/Makefile.in
-+++ b/util/Makefile.in
-@@ -88,8 +88,6 @@ PRE_UNINSTALL = :
- POST_UNINSTALL = :
- build_triplet = @build@
- host_triplet = @host@
--@USE_LINUX_TRUE@bin_PROGRAMS = mtp-hotplug$(EXEEXT)
--@USE_LINUX_TRUE@mtp_probe_PROGRAMS = mtp-probe$(EXEEXT)
- subdir = util
- ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
- am__aclocal_m4_deps = $(top_srcdir)/m4/byteorder.m4 \
-@@ -104,85 +102,8 @@ mkinstalldirs = $(install_sh) -d
- CONFIG_HEADER = $(top_builddir)/config.h
- CONFIG_CLEAN_FILES =
- CONFIG_CLEAN_VPATH_FILES =
--am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(mtp_probedir)"
--PROGRAMS = $(bin_PROGRAMS) $(mtp_probe_PROGRAMS)
--am__mtp_hotplug_SOURCES_DIST = mtp-hotplug.c
--@USE_LINUX_TRUE@am_mtp_hotplug_OBJECTS = mtp-hotplug.$(OBJEXT)
--mtp_hotplug_OBJECTS = $(am_mtp_hotplug_OBJECTS)
--mtp_hotplug_LDADD = $(LDADD)
--mtp_hotplug_DEPENDENCIES = ../src/libmtp.la
--AM_V_lt = $(am__v_lt_@AM_V@)
--am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
--am__v_lt_0 = --silent
--am__v_lt_1 = 
--am__mtp_probe_SOURCES_DIST = mtp-probe.c
--@USE_LINUX_TRUE@am_mtp_probe_OBJECTS = mtp-probe.$(OBJEXT)
--mtp_probe_OBJECTS = $(am_mtp_probe_OBJECTS)
--mtp_probe_LDADD = $(LDADD)
--mtp_probe_DEPENDENCIES = ../src/libmtp.la
--AM_V_P = $(am__v_P_@AM_V@)
--am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
--am__v_P_0 = false
--am__v_P_1 = :
--AM_V_GEN = $(am__v_GEN_@AM_V@)
--am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
--am__v_GEN_0 = @echo "  GEN     " $@;
--am__v_GEN_1 = 
--AM_V_at = $(am__v_at_@AM_V@)
--am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
--am__v_at_0 = @
--am__v_at_1 = 
--DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
--depcomp = $(SHELL) $(top_srcdir)/depcomp
--am__maybe_remake_depfiles = depfiles
--am__depfiles_remade = ./$(DEPDIR)/mtp-hotplug.Po \
--	./$(DEPDIR)/mtp-probe.Po
--am__mv = mv -f
--COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
--	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
--LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
--	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
--	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
--	$(AM_CFLAGS) $(CFLAGS)
--AM_V_CC = $(am__v_CC_@AM_V@)
--am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
--am__v_CC_0 = @echo "  CC      " $@;
--am__v_CC_1 = 
--CCLD = $(CC)
--LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
--	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
--	$(AM_LDFLAGS) $(LDFLAGS) -o $@
--AM_V_CCLD = $(am__v_CCLD_@AM_V@)
--am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
--am__v_CCLD_0 = @echo "  CCLD    " $@;
--am__v_CCLD_1 = 
--SOURCES = $(mtp_hotplug_SOURCES) $(mtp_probe_SOURCES)
--DIST_SOURCES = $(am__mtp_hotplug_SOURCES_DIST) \
--	$(am__mtp_probe_SOURCES_DIST)
--am__can_run_installinfo = \
--  case $$AM_UPDATE_INFO_DIR in \
--    n|no|NO) false;; \
--    *) (install-info --version) >/dev/null 2>&1;; \
--  esac
--am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
--# Read a list of newline-separated strings from the standard input,
--# and print each of them once, without duplicates.  Input order is
--# *not* preserved.
--am__uniquify_input = $(AWK) '\
--  BEGIN { nonempty = 0; } \
--  { items[$$0] = 1; nonempty = 1; } \
--  END { if (nonempty) { for (i in items) print i; }; } \
--'
--# Make sure the list of sources is unique.  This is necessary because,
--# e.g., the same source file might be shared among _SOURCES variables
--# for different programs/libraries.
--am__define_uniq_tagged_files = \
--  list='$(am__tagged_files)'; \
--  unique=`for i in $$list; do \
--    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
--  done | $(am__uniquify_input)`
--ETAGS = etags
--CTAGS = ctags
-+SOURCES =
-+DIST_SOURCES =
- am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
- DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
- ACLOCAL = @ACLOCAL@
-@@ -317,15 +238,11 @@ target_alias = @target_alias@
- top_build_prefix = @top_build_prefix@
- top_builddir = @top_builddir@
- top_srcdir = @top_srcdir@
--@USE_LINUX_TRUE@mtp_hotplug_SOURCES = mtp-hotplug.c
--@USE_LINUX_TRUE@mtp_probedir = @UDEV@
--@USE_LINUX_TRUE@mtp_probe_SOURCES = mtp-probe.c
- AM_CPPFLAGS = -I$(top_builddir)/src
- LDADD = ../src/libmtp.la
- all: all-am
- 
- .SUFFIXES:
--.SUFFIXES: .c .lo .o .obj
- $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
- 	@for dep in $?; do \
- 	  case '$(am__configure_deps)' in \
-@@ -355,148 +272,6 @@ $(top_srcdir)/configure:  $(am__configure_deps)
- $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
- 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
- $(am__aclocal_m4_deps):
--install-binPROGRAMS: $(bin_PROGRAMS)
--	@$(NORMAL_INSTALL)
--	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
--	if test -n "$$list"; then \
--	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
--	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
--	fi; \
--	for p in $$list; do echo "$$p $$p"; done | \
--	sed 's/$(EXEEXT)$$//' | \
--	while read p p1; do if test -f $$p \
--	 || test -f $$p1 \
--	  ; then echo "$$p"; echo "$$p"; else :; fi; \
--	done | \
--	sed -e 'p;s,.*/,,;n;h' \
--	    -e 's|.*|.|' \
--	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
--	sed 'N;N;N;s,\n, ,g' | \
--	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
--	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
--	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
--	    else { print "f", $$3 "/" $$4, $$1; } } \
--	  END { for (d in files) print "f", d, files[d] }' | \
--	while read type dir files; do \
--	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
--	    test -z "$$files" || { \
--	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
--	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
--	    } \
--	; done
--
--uninstall-binPROGRAMS:
--	@$(NORMAL_UNINSTALL)
--	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
--	files=`for p in $$list; do echo "$$p"; done | \
--	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
--	      -e 's/$$/$(EXEEXT)/' \
--	`; \
--	test -n "$$list" || exit 0; \
--	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
--	cd "$(DESTDIR)$(bindir)" && rm -f $$files
--
--clean-binPROGRAMS:
--	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
--	echo " rm -f" $$list; \
--	rm -f $$list || exit $$?; \
--	test -n "$(EXEEXT)" || exit 0; \
--	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
--	echo " rm -f" $$list; \
--	rm -f $$list
--install-mtp_probePROGRAMS: $(mtp_probe_PROGRAMS)
--	@$(NORMAL_INSTALL)
--	@list='$(mtp_probe_PROGRAMS)'; test -n "$(mtp_probedir)" || list=; \
--	if test -n "$$list"; then \
--	  echo " $(MKDIR_P) '$(DESTDIR)$(mtp_probedir)'"; \
--	  $(MKDIR_P) "$(DESTDIR)$(mtp_probedir)" || exit 1; \
--	fi; \
--	for p in $$list; do echo "$$p $$p"; done | \
--	sed 's/$(EXEEXT)$$//' | \
--	while read p p1; do if test -f $$p \
--	 || test -f $$p1 \
--	  ; then echo "$$p"; echo "$$p"; else :; fi; \
--	done | \
--	sed -e 'p;s,.*/,,;n;h' \
--	    -e 's|.*|.|' \
--	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
--	sed 'N;N;N;s,\n, ,g' | \
--	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
--	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
--	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
--	    else { print "f", $$3 "/" $$4, $$1; } } \
--	  END { for (d in files) print "f", d, files[d] }' | \
--	while read type dir files; do \
--	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
--	    test -z "$$files" || { \
--	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(mtp_probedir)$$dir'"; \
--	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(mtp_probedir)$$dir" || exit $$?; \
--	    } \
--	; done
--
--uninstall-mtp_probePROGRAMS:
--	@$(NORMAL_UNINSTALL)
--	@list='$(mtp_probe_PROGRAMS)'; test -n "$(mtp_probedir)" || list=; \
--	files=`for p in $$list; do echo "$$p"; done | \
--	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
--	      -e 's/$$/$(EXEEXT)/' \
--	`; \
--	test -n "$$list" || exit 0; \
--	echo " ( cd '$(DESTDIR)$(mtp_probedir)' && rm -f" $$files ")"; \
--	cd "$(DESTDIR)$(mtp_probedir)" && rm -f $$files
--
--clean-mtp_probePROGRAMS:
--	@list='$(mtp_probe_PROGRAMS)'; test -n "$$list" || exit 0; \
--	echo " rm -f" $$list; \
--	rm -f $$list || exit $$?; \
--	test -n "$(EXEEXT)" || exit 0; \
--	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
--	echo " rm -f" $$list; \
--	rm -f $$list
--
--mtp-hotplug$(EXEEXT): $(mtp_hotplug_OBJECTS) $(mtp_hotplug_DEPENDENCIES) $(EXTRA_mtp_hotplug_DEPENDENCIES) 
--	@rm -f mtp-hotplug$(EXEEXT)
--	$(AM_V_CCLD)$(LINK) $(mtp_hotplug_OBJECTS) $(mtp_hotplug_LDADD) $(LIBS)
--
--mtp-probe$(EXEEXT): $(mtp_probe_OBJECTS) $(mtp_probe_DEPENDENCIES) $(EXTRA_mtp_probe_DEPENDENCIES) 
--	@rm -f mtp-probe$(EXEEXT)
--	$(AM_V_CCLD)$(LINK) $(mtp_probe_OBJECTS) $(mtp_probe_LDADD) $(LIBS)
--
--mostlyclean-compile:
--	-rm -f *.$(OBJEXT)
--
--distclean-compile:
--	-rm -f *.tab.c
--
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mtp-hotplug.Po@am__quote@ # am--include-marker
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mtp-probe.Po@am__quote@ # am--include-marker
--
--$(am__depfiles_remade):
--	@$(MKDIR_P) $(@D)
--	@echo '# dummy' >$@-t && $(am__mv) $@-t $@
--
--am--depfiles: $(am__depfiles_remade)
--
--.c.o:
--@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
--@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
--
--.c.obj:
--@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
--@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
--
--.c.lo:
--@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
--@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
--@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
--@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
- 
- mostlyclean-libtool:
- 	-rm -f *.lo
-@@ -506,37 +281,12 @@ clean-libtool:
- 
- ID: $(am__tagged_files)
- 	$(am__define_uniq_tagged_files); mkid -fID $$unique
--tags: tags-am
--TAGS: tags
--
--tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
--	set x; \
--	here=`pwd`; \
--	$(am__define_uniq_tagged_files); \
--	shift; \
--	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
--	  test -n "$$unique" || unique=$$empty_fix; \
--	  if test $$# -gt 0; then \
--	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
--	      "$$@" $$unique; \
--	  else \
--	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
--	      $$unique; \
--	  fi; \
--	fi
--ctags: ctags-am
--
--CTAGS: ctags
--ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
--	$(am__define_uniq_tagged_files); \
--	test -z "$(CTAGS_ARGS)$$unique" \
--	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
--	     $$unique
--
--GTAGS:
--	here=`$(am__cd) $(top_builddir) && pwd` \
--	  && $(am__cd) $(top_srcdir) \
--	  && gtags -i $(GTAGS_ARGS) "$$here"
-+tags: TAGS
-+TAGS:
-+
-+ctags: CTAGS
-+CTAGS:
-+
- cscopelist: cscopelist-am
- 
- cscopelist-am: $(am__tagged_files)
-@@ -553,9 +303,6 @@ cscopelist-am: $(am__tagged_files)
- 	  fi; \
- 	done >> $(top_builddir)/cscope.files
- 
--distclean-tags:
--	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
--
- distdir: $(BUILT_SOURCES)
- 	$(MAKE) $(AM_MAKEFLAGS) distdir-am
- 
-@@ -591,11 +338,8 @@ distdir-am: $(DISTFILES)
- 	done
- check-am: all-am
- check: check-am
--all-am: Makefile $(PROGRAMS)
-+all-am: Makefile
- installdirs:
--	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(mtp_probedir)"; do \
--	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
--	done
- install: install-am
- install-exec: install-exec-am
- install-data: install-data-am
-@@ -628,15 +372,12 @@ maintainer-clean-generic:
- 	@echo "it deletes files that may require special tools to rebuild."
- clean: clean-am
- 
--clean-am: clean-binPROGRAMS clean-generic clean-libtool \
--	clean-mtp_probePROGRAMS mostlyclean-am
-+clean-am: clean-generic clean-libtool mostlyclean-am
- 
- distclean: distclean-am
--		-rm -f ./$(DEPDIR)/mtp-hotplug.Po
--	-rm -f ./$(DEPDIR)/mtp-probe.Po
- 	-rm -f Makefile
--distclean-am: clean-am distclean-compile distclean-generic \
--	distclean-tags
-+
-+distclean-am: clean-am distclean-generic
- 
- dvi: dvi-am
- 
-@@ -650,13 +391,13 @@ info: info-am
- 
- info-am:
- 
--install-data-am: install-mtp_probePROGRAMS
-+install-data-am:
- 
- install-dvi: install-dvi-am
- 
- install-dvi-am:
- 
--install-exec-am: install-binPROGRAMS
-+install-exec-am:
- 
- install-html: install-html-am
- 
-@@ -679,15 +420,12 @@ install-ps-am:
- installcheck-am:
- 
- maintainer-clean: maintainer-clean-am
--		-rm -f ./$(DEPDIR)/mtp-hotplug.Po
--	-rm -f ./$(DEPDIR)/mtp-probe.Po
- 	-rm -f Makefile
- maintainer-clean-am: distclean-am maintainer-clean-generic
- 
- mostlyclean: mostlyclean-am
- 
--mostlyclean-am: mostlyclean-compile mostlyclean-generic \
--	mostlyclean-libtool
-+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
- 
- pdf: pdf-am
- 
-@@ -697,25 +435,24 @@ ps: ps-am
- 
- ps-am:
- 
--uninstall-am: uninstall-binPROGRAMS uninstall-mtp_probePROGRAMS
-+uninstall-am:
- 
- .MAKE: install-am install-strip
- 
--.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
--	clean-binPROGRAMS clean-generic clean-libtool \
--	clean-mtp_probePROGRAMS cscopelist-am ctags ctags-am distclean \
-+.PHONY: all all-am check check-am clean \
-+	clean-generic clean-libtool \
-+	cscopelist-am distclean \
- 	distclean-compile distclean-generic distclean-libtool \
- 	distclean-tags distdir dvi dvi-am html html-am info info-am \
--	install install-am install-binPROGRAMS install-data \
-+	install install-am install-data \
- 	install-data-am install-dvi install-dvi-am install-exec \
- 	install-exec-am install-html install-html-am install-info \
--	install-info-am install-man install-mtp_probePROGRAMS \
-+	install-info-am install-man \
- 	install-pdf install-pdf-am install-ps install-ps-am \
- 	install-strip installcheck installcheck-am installdirs \
- 	maintainer-clean maintainer-clean-generic mostlyclean \
- 	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
--	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
--	uninstall-binPROGRAMS uninstall-mtp_probePROGRAMS
-+	pdf pdf-am ps ps-am uninstall uninstall-am
- 
- .PRECIOUS: Makefile
- 
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-10_remove_nexus_s_from_device_list.patch b/media-libs/libmtp/files/libmtp-1.1.16-10_remove_nexus_s_from_device_list.patch
deleted file mode 100644
index d8b0839..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-10_remove_nexus_s_from_device_list.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/src/music-players.h b/src/music-players.h
-index 713305c..315ec73 100644
---- a/src/music-players.h
-+++ b/src/music-players.h
-@@ -2430,12 +2430,6 @@
-   // Reported by anonymous Sourceforge user
-   { "Google Inc (for Asus)", 0x18d1, "TF101 Transformer", 0x4e0f,
-       DEVICE_FLAGS_ANDROID_BUGS },
--  // 0x4e21 (Nexus S) is a USB Mass Storage device.
--  { "Google Inc (for Samsung)", 0x18d1, "Nexus S (MTP)", 0x4e25,
--      DEVICE_FLAGS_ANDROID_BUGS },
--  // 0x4e26 is also used by "Ramos W30HD Pro Quad Core"
--  { "Google Inc (for Samsung)", 0x18d1, "Nexus S (MTP+ADB)", 0x4e26,
--      DEVICE_FLAGS_ANDROID_BUGS },
-   // Reported by Chris Smith <tcgsmythe@users.sourceforge.net>
-   { "Google Inc (for Asus)", 0x18d1, "Nexus 7 (MTP)", 0x4e41,
-       DEVICE_FLAGS_ANDROID_BUGS },
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-15_read_chunks.patch b/media-libs/libmtp/files/libmtp-1.1.16-15_read_chunks.patch
deleted file mode 100644
index 7da63c5..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-15_read_chunks.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-diff --git a/src/libmtp.c b/src/libmtp.c
-index eeb9c8c..a9cc9f7 100644
---- a/src/libmtp.c
-+++ b/src/libmtp.c
-@@ -5114,6 +5114,56 @@ LIBMTP_track_t *LIBMTP_Get_Trackmetadata(LIBMTP_mtpdevice_t *device, uint32_t co
-   return track;
- }
- 
-+/**
-+ * This copies a chunk of a file off the device to memory.
-+ * @param device a pointer to the device to get the track from.
-+ * @param id the file ID of the file to retrieve.
-+ * @param offset the offset of the file to read from.
-+ * @param count the amount of data to read.
-+ * @param data a pointer to the data from the device. Must be
-+ *             <coded>free()</code>:ed by the caller after use.
-+ * @param datalen the amount of data written to <code>data</code>.
-+ * @return 0 if the transfer was successful, any other value means
-+ *           failure.
-+ */
-+int LIBMTP_Get_File_Chunk(LIBMTP_mtpdevice_t* device, uint32_t id,
-+                          uint32_t offset, uint32_t count,
-+                          unsigned char** data, uint32_t* datalen)
-+{
-+  uint16_t ret;
-+  PTPParams *params = (PTPParams *) device->params;
-+  PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo;
-+  PTPObject *ob;
-+
-+  if (!data || !datalen) {
-+    add_error_to_errorstack(device, LIBMTP_ERROR_GENERAL, "LIBMTP_Get_File_Chunk(): Invalid parameter.");
-+    return -1;
-+  }
-+
-+  ret = ptp_object_want (params, id, PTPOBJECT_OBJECTINFO_LOADED, &ob);
-+  if (ret != PTP_RC_OK) {
-+    add_error_to_errorstack(device, LIBMTP_ERROR_GENERAL, "LIBMTP_Get_File_Chunk(): Could not get object info.");
-+    return -1;
-+  }
-+  if (ob->oi.ObjectFormat == PTP_OFC_Association) {
-+    add_error_to_errorstack(device, LIBMTP_ERROR_GENERAL, "LIBMTP_Get_File_Chunk(): Bad object format.");
-+    return -1;
-+  }
-+
-+  ret = ptp_getpartialobject(params, id, offset, count, data, datalen);
-+
-+  if (ret == PTP_ERROR_CANCEL) {
-+    add_error_to_errorstack(device, LIBMTP_ERROR_CANCELLED, "LIBMTP_Get_File_Chunk(): Cancelled transfer.");
-+    return -1;
-+  }
-+  if (ret != PTP_RC_OK) {
-+    add_ptp_error_to_errorstack(device, ret, "LIBMTP_Get_File_Chunk(): Could not get file from device.");
-+    return -1;
-+  }
-+
-+  return 0;
-+}
-+
- /**
-  * This is a manual conversion from MTPDataGetFunc to PTPDataGetFunc
-  * to isolate the internal type.
-diff --git a/src/libmtp.h b/src/libmtp.h
-index 911bc15..f1b42a4 100644
---- a/src/libmtp.h
-+++ b/src/libmtp.h
-@@ -920,6 +920,8 @@ LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *,
- 					     uint32_t const,
- 					     uint32_t const);
- LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const);
-+int LIBMTP_Get_File_Chunk(LIBMTP_mtpdevice_t*, uint32_t, uint32_t, uint32_t,
-+                          unsigned char**, uint32_t*);
- int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * const,
- 			LIBMTP_progressfunc_t const, void const * const);
- int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*,
-diff --git a/src/libmtp.h.in b/src/libmtp.h.in
-index 92325b2..ec4ea79 100644
---- a/src/libmtp.h.in
-+++ b/src/libmtp.h.in
-@@ -920,6 +920,8 @@ LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *,
- 					     uint32_t const,
- 					     uint32_t const);
- LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const);
-+int LIBMTP_Get_File_Chunk(LIBMTP_mtpdevice_t*, uint32_t, uint32_t, uint32_t,
-+                          unsigned char**, uint32_t*);
- int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * const,
- 			LIBMTP_progressfunc_t const, void const * const);
- int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*,
-diff --git a/src/libmtp.sym b/src/libmtp.sym
-index 20d9195..7a619ac 100644
---- a/src/libmtp.sym
-+++ b/src/libmtp.sym
-@@ -49,6 +49,7 @@ LIBMTP_Get_Filelisting
- LIBMTP_Get_Filelisting_With_Callback
- LIBMTP_Get_Files_And_Folders
- LIBMTP_Get_Filemetadata
-+LIBMTP_Get_File_Chunk
- LIBMTP_Get_File_To_File
- LIBMTP_Get_File_To_File_Descriptor
- LIBMTP_Get_File_To_Handler
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-19_raw_read_directory.patch b/media-libs/libmtp/files/libmtp-1.1.16-19_raw_read_directory.patch
deleted file mode 100644
index cee3eae..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-19_raw_read_directory.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-diff --git a/src/libmtp.c b/src/libmtp.c
-index a9cc9f7..7f01d38 100644
---- a/src/libmtp.c
-+++ b/src/libmtp.c
-@@ -4555,6 +4555,67 @@ LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *device,
-   return retfiles;
- }
- 
-+/**
-+ * This function retrieves the list of ids of files and folders in a certain
-+ * folder with id parent on a certain storage on a certain device.
-+ * The device used with this operations must have been opened with
-+ * LIBMTP_Open_Raw_Device_Uncached() or it will fail.
-+ *
-+ * NOTE: the request will always perform I/O with the device.
-+ * @param device a pointer to the MTP device to report info from.
-+ * @param storage a storage on the device to report info from. If
-+ *        0 is passed in, the files for the given parent will be
-+ *        searched across all available storages.
-+ * @param parent the parent folder id.
-+ * @param out the pointer where the array of ids is returned. It is
-+ *        set only when the returned value > 0. The caller takes the
-+ *        ownership of the array and has to free() it.
-+ * @return the length of the returned array or -1 in case of failure.
-+ */
-+
-+int LIBMTP_Get_Children(LIBMTP_mtpdevice_t *device,
-+                        uint32_t const storage,
-+                        uint32_t const parent,
-+                        uint32_t **out)
-+{
-+  PTPParams *params = (PTPParams *) device->params;
-+  PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo;
-+  LIBMTP_file_t *retfiles = NULL;
-+  LIBMTP_file_t *curfile = NULL;
-+  PTPObjectHandles currentHandles;
-+  uint32_t storageid;
-+  uint16_t ret;
-+  int i = 0;
-+
-+  if (device->cached) {
-+    // This function is only supposed to be used by devices
-+    // opened as uncached!
-+    LIBMTP_ERROR("tried to use %s on a cached device!\n", __func__);
-+    return -1;
-+  }
-+
-+  if (storage == 0)
-+    storageid = PTP_GOH_ALL_STORAGE;
-+  else
-+    storageid = storage;
-+
-+  ret = ptp_getobjecthandles(params,
-+                             storageid,
-+                             PTP_GOH_ALL_FORMATS,
-+                             parent,
-+                             &currentHandles);
-+
-+  if (ret != PTP_RC_OK) {
-+    add_ptp_error_to_errorstack(device, ret,
-+        "LIBMTP_Get_Children(): could not get object handles.");
-+    return -1;
-+  }
-+
-+  if (currentHandles.Handler == NULL || currentHandles.n == 0)
-+    return 0;
-+  *out = currentHandles.Handler;
-+  return currentHandles.n;
-+}
- 
- /**
-  * This creates a new track metadata structure and allocates memory
-diff --git a/src/libmtp.h b/src/libmtp.h
-index f1b42a4..689bcc6 100644
---- a/src/libmtp.h
-+++ b/src/libmtp.h
-@@ -919,6 +919,10 @@ LIBMTP_file_t *LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *,
- LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *,
- 					     uint32_t const,
- 					     uint32_t const);
-+int LIBMTP_Get_Children(LIBMTP_mtpdevice_t *,
-+                        uint32_t const,
-+                        uint32_t const,
-+                        uint32_t **);
- LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const);
- int LIBMTP_Get_File_Chunk(LIBMTP_mtpdevice_t*, uint32_t, uint32_t, uint32_t,
-                           unsigned char**, uint32_t*);
-diff --git a/src/libmtp.h.in b/src/libmtp.h.in
-index ec4ea79..56166fa 100644
---- a/src/libmtp.h.in
-+++ b/src/libmtp.h.in
-@@ -919,6 +919,10 @@ LIBMTP_file_t *LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *,
- LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *,
- 					     uint32_t const,
- 					     uint32_t const);
-+int LIBMTP_Get_Children(LIBMTP_mtpdevice_t *,
-+                        uint32_t const,
-+                        uint32_t const,
-+                        uint32_t**);
- LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const);
- int LIBMTP_Get_File_Chunk(LIBMTP_mtpdevice_t*, uint32_t, uint32_t, uint32_t,
-                           unsigned char**, uint32_t*);
-diff --git a/src/libmtp.sym b/src/libmtp.sym
-index 7a619ac..c8bc10f 100644
---- a/src/libmtp.sym
-+++ b/src/libmtp.sym
-@@ -48,6 +48,7 @@ LIBMTP_Get_Filetype_Description
- LIBMTP_Get_Filelisting
- LIBMTP_Get_Filelisting_With_Callback
- LIBMTP_Get_Files_And_Folders
-+LIBMTP_Get_Children
- LIBMTP_Get_Filemetadata
- LIBMTP_Get_File_Chunk
- LIBMTP_Get_File_To_File
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-20_get_thumbnail_format.patch b/media-libs/libmtp/files/libmtp-1.1.16-20_get_thumbnail_format.patch
deleted file mode 100644
index b8aa045..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-20_get_thumbnail_format.patch
+++ /dev/null
@@ -1,70 +0,0 @@
-diff --git a/src/libmtp.c b/src/libmtp.c
-index ac4e9c7..3516e8b 100644
---- a/src/libmtp.c
-+++ b/src/libmtp.c
-@@ -9310,6 +9310,27 @@ int LIBMTP_TruncateObject(LIBMTP_mtpdevice_t *device, uint32_t const id,
- }
- 
- 
-+/**
-+ * Get thumbnail format of a file.
-+ * @param device a pointer to the device to get thumbnail format of.
-+ * @param id the object ID of the file to get thumbnail format of.
-+ * @return 0 on success, any other value means failure.
-+ */
-+int LIBMTP_Get_Thumbnail_Format(LIBMTP_mtpdevice_t *device, uint32_t const id,
-+                                uint16_t *format)
-+{
-+  PTPParams *params = (PTPParams *) device->params;
-+  uint16_t ret;
-+
-+  PTPObjectInfo object_info;
-+  ret = ptp_getobjectinfo(params, id, &object_info);
-+  if (ret != PTP_RC_OK)
-+    return -1;
-+
-+  *format = object_info.ThumbFormat;
-+  return 0;
-+}
-+
- /**
-  * This routine updates an album based on the metadata
-  * supplied. If the <code>tracks</code> field of the metadata
-diff --git a/src/libmtp.h b/src/libmtp.h
-index 689bcc6..1c7c71a 100644
---- a/src/libmtp.h
-+++ b/src/libmtp.h
-@@ -968,6 +968,8 @@ int LIBMTP_Get_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const,
-                           LIBMTP_filesampledata_t *);
- int LIBMTP_Get_Thumbnail(LIBMTP_mtpdevice_t *, uint32_t const,
-                          unsigned char **data, unsigned int *size);
-+int LIBMTP_Get_Thumbnail_Format(LIBMTP_mtpdevice_t *device, uint32_t const id,
-+                                uint16_t *format);
- 
- /**
-  * @}
-diff --git a/src/libmtp.h.in b/src/libmtp.h.in
-index 56166fa..db055ff 100644
---- a/src/libmtp.h.in
-+++ b/src/libmtp.h.in
-@@ -968,6 +968,8 @@ int LIBMTP_Get_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const,
-                           LIBMTP_filesampledata_t *);
- int LIBMTP_Get_Thumbnail(LIBMTP_mtpdevice_t *, uint32_t const,
-                          unsigned char **data, unsigned int *size);
-+int LIBMTP_Get_Thumbnail_Format(LIBMTP_mtpdevice_t *device, uint32_t const id,
-+                                uint16_t *format);
- 
- /**
-  * @}
-diff --git a/src/libmtp.sym b/src/libmtp.sym
-index c8bc10f..d4b09f1 100644
---- a/src/libmtp.sym
-+++ b/src/libmtp.sym
-@@ -105,6 +105,7 @@ LIBMTP_Set_Playlist_Name
- LIBMTP_Set_Album_Name
- LIBMTP_Set_Object_Filename
- LIBMTP_Get_Thumbnail
-+LIBMTP_Get_Thumbnail_Format
- LIBMTP_Read_Event
- LIBMTP_Read_Event_Async
- LIBMTP_Handle_Events_Timeout_Completed
diff --git a/media-libs/libmtp/files/libmtp-1.1.16-22_ptp_timezone.patch b/media-libs/libmtp/files/libmtp-1.1.16-22_ptp_timezone.patch
deleted file mode 100644
index 309ed99..0000000
--- a/media-libs/libmtp/files/libmtp-1.1.16-22_ptp_timezone.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-diff --git a/src/ptp-pack.c b/src/ptp-pack.c
-index 5319525..1f8c2cb 100644
---- a/src/ptp-pack.c
-+++ b/src/ptp-pack.c
-@@ -675,6 +675,7 @@ ptp_unpack_PTPTIME (const char *str) {
- 	char ptpdate[40];
- 	char tmp[5];
- 	size_t  ptpdatelen;
-+	size_t tzoffs;
- 	struct tm tm;
- 
- 	if (!str)
-@@ -711,6 +712,31 @@ ptp_unpack_PTPTIME (const char *str) {
- 	tmp[2] = 0;
- 	tm.tm_sec = atoi (tmp);
- 	tm.tm_isdst = -1;
-+	/* Check for optional '.s' (tenths of a second) and skip */
-+	/* MTP spec v1.1 section 3.2.5 */
-+	tzoffs = 15;
-+	if (ptpdate[tzoffs] == '.' && ptpdate[tzoffs + 1] != '\0') {
-+		tzoffs += 2;
-+	}
-+	/* Check for 'Z' (UTC time) */
-+	if (ptpdate[tzoffs] == 'Z') {
-+		return timegm (&tm);
-+	}
-+	/* Check for timezone offset [+/-HHMM] */
-+	if (strlen(ptpdate + tzoffs) == 5) {
-+		time_t tz = 0;
-+		strncpy (tmp, ptpdate + tzoffs + 1, 2);
-+		tmp[2] = 0;
-+		tz = atoi (tmp) * 60 * 60;
-+		strncpy (tmp, ptpdate + tzoffs + 3, 2);
-+		tmp[2] = 0;
-+		tz += atoi (tmp) * 60;
-+		if (ptpdate[tzoffs] == '-') {
-+			return timegm (&tm) + tz;
-+		}
-+		return timegm (&tm) - tz;
-+	}
-+	/* Unspecified timezone, use local time */
- 	return mktime (&tm);
- }
- 
-@@ -755,7 +781,7 @@ ptp_unpack_OI (PTPParams *params, unsigned char* data, PTPObjectInfo *oi, unsign
- 
- 	capture_date = ptp_unpack_string(params, data,
- 		PTP_oi_filenamelen+filenamelen*2+1, len, &capturedatelen);
--	/* subset of ISO 8601, without '.s' tenths of second and 
-+	/* subset of ISO 8601, with optional '.s' tenths of second and
- 	 * time zone
- 	 */
- 	oi->CaptureDate = ptp_unpack_PTPTIME(capture_date);
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-00_disable_playlist.patch b/media-libs/libmtp/files/libmtp-1.1.18-00_disable_playlist.patch
new file mode 100644
index 0000000..918805d
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-00_disable_playlist.patch
@@ -0,0 +1,275 @@
+diff --git a/examples/Makefile.am b/examples/Makefile.am
+index 46ac70f..0bac1b3 100644
+--- a/examples/Makefile.am
++++ b/examples/Makefile.am
+@@ -1,6 +1,6 @@
+ bin_PROGRAMS=mtp-connect mtp-detect mtp-tracks mtp-files \
+-	mtp-folders mtp-trexist mtp-playlists mtp-getplaylist \
+-	mtp-format mtp-albumart mtp-albums mtp-newplaylist mtp-emptyfolders \
++	mtp-folders mtp-trexist \
++	mtp-format mtp-albumart mtp-albums mtp-emptyfolders \
+ 	mtp-thumb mtp-reset mtp-filetree
+ 
+ mtp_connect_SOURCES=connect.c connect.h delfile.c getfile.c newfolder.c \
+@@ -11,9 +11,6 @@ mtp_tracks_SOURCES=tracks.c util.c util.h common.h
+ mtp_files_SOURCES=files.c util.c util.h common.h
+ mtp_folders_SOURCES=folders.c util.c util.h common.h
+ mtp_trexist_SOURCES=trexist.c util.c util.h common.h
+-mtp_playlists_SOURCES=playlists.c util.c util.h common.h
+-mtp_getplaylist_SOURCES=getplaylist.c util.c util.h common.h
+-mtp_newplaylist_SOURCES=newplaylist.c util.c util.h common.h
+ mtp_format_SOURCES=format.c util.c util.h common.h
+ mtp_albumart_SOURCES=albumart.c util.c util.h common.h
+ mtp_albums_SOURCES=albums.c util.c util.h common.h
+diff --git a/examples/Makefile.in b/examples/Makefile.in
+index 361e94c..76fe4a6 100644
+--- a/examples/Makefile.in
++++ b/examples/Makefile.in
+@@ -90,10 +90,10 @@ build_triplet = @build@
+ host_triplet = @host@
+ bin_PROGRAMS = mtp-connect$(EXEEXT) mtp-detect$(EXEEXT) \
+ 	mtp-tracks$(EXEEXT) mtp-files$(EXEEXT) mtp-folders$(EXEEXT) \
+-	mtp-trexist$(EXEEXT) mtp-playlists$(EXEEXT) \
+-	mtp-getplaylist$(EXEEXT) mtp-format$(EXEEXT) \
++	mtp-trexist$(EXEEXT) \
++	mtp-format$(EXEEXT) \
+ 	mtp-albumart$(EXEEXT) mtp-albums$(EXEEXT) \
+-	mtp-newplaylist$(EXEEXT) mtp-emptyfolders$(EXEEXT) \
++	mtp-emptyfolders$(EXEEXT) \
+ 	mtp-thumb$(EXEEXT) mtp-reset$(EXEEXT) mtp-filetree$(EXEEXT)
+ subdir = examples
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+@@ -153,18 +153,6 @@ am_mtp_format_OBJECTS = format.$(OBJEXT) util.$(OBJEXT)
+ mtp_format_OBJECTS = $(am_mtp_format_OBJECTS)
+ mtp_format_LDADD = $(LDADD)
+ mtp_format_DEPENDENCIES = ../src/libmtp.la
+-am_mtp_getplaylist_OBJECTS = getplaylist.$(OBJEXT) util.$(OBJEXT)
+-mtp_getplaylist_OBJECTS = $(am_mtp_getplaylist_OBJECTS)
+-mtp_getplaylist_LDADD = $(LDADD)
+-mtp_getplaylist_DEPENDENCIES = ../src/libmtp.la
+-am_mtp_newplaylist_OBJECTS = newplaylist.$(OBJEXT) util.$(OBJEXT)
+-mtp_newplaylist_OBJECTS = $(am_mtp_newplaylist_OBJECTS)
+-mtp_newplaylist_LDADD = $(LDADD)
+-mtp_newplaylist_DEPENDENCIES = ../src/libmtp.la
+-am_mtp_playlists_OBJECTS = playlists.$(OBJEXT) util.$(OBJEXT)
+-mtp_playlists_OBJECTS = $(am_mtp_playlists_OBJECTS)
+-mtp_playlists_LDADD = $(LDADD)
+-mtp_playlists_DEPENDENCIES = ../src/libmtp.la
+ am_mtp_reset_OBJECTS = reset.$(OBJEXT) util.$(OBJEXT)
+ mtp_reset_OBJECTS = $(am_mtp_reset_OBJECTS)
+ mtp_reset_LDADD = $(LDADD)
+@@ -231,16 +219,14 @@ SOURCES = $(mtp_albumart_SOURCES) $(mtp_albums_SOURCES) \
+ 	$(mtp_connect_SOURCES) $(mtp_detect_SOURCES) \
+ 	$(mtp_emptyfolders_SOURCES) $(mtp_files_SOURCES) \
+ 	$(mtp_filetree_SOURCES) $(mtp_folders_SOURCES) \
+-	$(mtp_format_SOURCES) $(mtp_getplaylist_SOURCES) \
+-	$(mtp_newplaylist_SOURCES) $(mtp_playlists_SOURCES) \
++	$(mtp_format_SOURCES) \
+ 	$(mtp_reset_SOURCES) $(mtp_thumb_SOURCES) \
+ 	$(mtp_tracks_SOURCES) $(mtp_trexist_SOURCES)
+ DIST_SOURCES = $(mtp_albumart_SOURCES) $(mtp_albums_SOURCES) \
+ 	$(mtp_connect_SOURCES) $(mtp_detect_SOURCES) \
+ 	$(mtp_emptyfolders_SOURCES) $(mtp_files_SOURCES) \
+ 	$(mtp_filetree_SOURCES) $(mtp_folders_SOURCES) \
+-	$(mtp_format_SOURCES) $(mtp_getplaylist_SOURCES) \
+-	$(mtp_newplaylist_SOURCES) $(mtp_playlists_SOURCES) \
++	$(mtp_format_SOURCES) \
+ 	$(mtp_reset_SOURCES) $(mtp_thumb_SOURCES) \
+ 	$(mtp_tracks_SOURCES) $(mtp_trexist_SOURCES)
+ am__can_run_installinfo = \
+@@ -410,9 +396,6 @@ mtp_tracks_SOURCES = tracks.c util.c util.h common.h
+ mtp_files_SOURCES = files.c util.c util.h common.h
+ mtp_folders_SOURCES = folders.c util.c util.h common.h
+ mtp_trexist_SOURCES = trexist.c util.c util.h common.h
+-mtp_playlists_SOURCES = playlists.c util.c util.h common.h
+-mtp_getplaylist_SOURCES = getplaylist.c util.c util.h common.h
+-mtp_newplaylist_SOURCES = newplaylist.c util.c util.h common.h
+ mtp_format_SOURCES = format.c util.c util.h common.h
+ mtp_albumart_SOURCES = albumart.c util.c util.h common.h
+ mtp_albums_SOURCES = albums.c util.c util.h common.h
+@@ -542,18 +525,6 @@ mtp-format$(EXEEXT): $(mtp_format_OBJECTS) $(mtp_format_DEPENDENCIES) $(EXTRA_mt
+ 	@rm -f mtp-format$(EXEEXT)
+ 	$(AM_V_CCLD)$(LINK) $(mtp_format_OBJECTS) $(mtp_format_LDADD) $(LIBS)
+ 
+-mtp-getplaylist$(EXEEXT): $(mtp_getplaylist_OBJECTS) $(mtp_getplaylist_DEPENDENCIES) $(EXTRA_mtp_getplaylist_DEPENDENCIES) 
+-	@rm -f mtp-getplaylist$(EXEEXT)
+-	$(AM_V_CCLD)$(LINK) $(mtp_getplaylist_OBJECTS) $(mtp_getplaylist_LDADD) $(LIBS)
+-
+-mtp-newplaylist$(EXEEXT): $(mtp_newplaylist_OBJECTS) $(mtp_newplaylist_DEPENDENCIES) $(EXTRA_mtp_newplaylist_DEPENDENCIES) 
+-	@rm -f mtp-newplaylist$(EXEEXT)
+-	$(AM_V_CCLD)$(LINK) $(mtp_newplaylist_OBJECTS) $(mtp_newplaylist_LDADD) $(LIBS)
+-
+-mtp-playlists$(EXEEXT): $(mtp_playlists_OBJECTS) $(mtp_playlists_DEPENDENCIES) $(EXTRA_mtp_playlists_DEPENDENCIES) 
+-	@rm -f mtp-playlists$(EXEEXT)
+-	$(AM_V_CCLD)$(LINK) $(mtp_playlists_OBJECTS) $(mtp_playlists_LDADD) $(LIBS)
+-
+ mtp-reset$(EXEEXT): $(mtp_reset_OBJECTS) $(mtp_reset_DEPENDENCIES) $(EXTRA_mtp_reset_DEPENDENCIES) 
+ 	@rm -f mtp-reset$(EXEEXT)
+ 	$(AM_V_CCLD)$(LINK) $(mtp_reset_OBJECTS) $(mtp_reset_LDADD) $(LIBS)
+@@ -587,11 +558,8 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/folders.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/format.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getfile.Po@am__quote@ # am--include-marker
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getplaylist.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newfolder.Po@am__quote@ # am--include-marker
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/newplaylist.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pathutils.Po@am__quote@ # am--include-marker
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/playlists.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reset.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendfile.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendtr.Po@am__quote@ # am--include-marker
+diff --git a/src/Makefile.am b/src/Makefile.am
+index 7dc1a1a..5494371 100644
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -1,9 +1,9 @@
+ lib_LTLIBRARIES = libmtp.la
+ 
+ libmtp_la_CFLAGS = @LIBUSB_CFLAGS@
+-libmtp_la_SOURCES = libmtp.c unicode.c unicode.h util.c util.h playlist-spl.c \
++libmtp_la_SOURCES = libmtp.c unicode.c unicode.h util.c util.h \
+ 	gphoto2-endian.h _stdint.h ptp.c ptp.h libusb-glue.h \
+-	music-players.h device-flags.h playlist-spl.h mtpz.h \
++	music-players.h device-flags.h mtpz.h \
+ 	chdk_live_view.h chdk_ptp.h
+ 
+ if MTPZ_COMPILE
+diff --git a/src/Makefile.in b/src/Makefile.in
+index 6d04072..8de3086 100644
+--- a/src/Makefile.in
++++ b/src/Makefile.in
+@@ -140,8 +140,8 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"
+ LTLIBRARIES = $(lib_LTLIBRARIES)
+ am__DEPENDENCIES_1 =
+ am__libmtp_la_SOURCES_DIST = libmtp.c unicode.c unicode.h util.c \
+-	util.h playlist-spl.c gphoto2-endian.h _stdint.h ptp.c ptp.h \
+-	libusb-glue.h music-players.h device-flags.h playlist-spl.h \
++	util.h gphoto2-endian.h _stdint.h ptp.c ptp.h \
++	libusb-glue.h music-players.h device-flags.h \
+ 	mtpz.h chdk_live_view.h chdk_ptp.h mtpz.c libusb1-glue.c \
+ 	libusb-glue.c libopenusb1-glue.c
+ @MTPZ_COMPILE_TRUE@am__objects_1 = libmtp_la-mtpz.lo
+@@ -150,7 +150,7 @@ am__libmtp_la_SOURCES_DIST = libmtp.c unicode.c unicode.h util.c \
+ @LIBOPENUSB_COMPILE_TRUE@am__objects_4 =  \
+ @LIBOPENUSB_COMPILE_TRUE@	libmtp_la-libopenusb1-glue.lo
+ am_libmtp_la_OBJECTS = libmtp_la-libmtp.lo libmtp_la-unicode.lo \
+-	libmtp_la-util.lo libmtp_la-playlist-spl.lo libmtp_la-ptp.lo \
++	libmtp_la-util.lo libmtp_la-ptp.lo \
+ 	$(am__objects_1) $(am__objects_2) $(am__objects_3) \
+ 	$(am__objects_4)
+ libmtp_la_OBJECTS = $(am_libmtp_la_OBJECTS)
+@@ -370,8 +370,8 @@ top_srcdir = @top_srcdir@
+ lib_LTLIBRARIES = libmtp.la
+ libmtp_la_CFLAGS = @LIBUSB_CFLAGS@
+ libmtp_la_SOURCES = libmtp.c unicode.c unicode.h util.c util.h \
+-	playlist-spl.c gphoto2-endian.h _stdint.h ptp.c ptp.h \
+-	libusb-glue.h music-players.h device-flags.h playlist-spl.h \
++	gphoto2-endian.h _stdint.h ptp.c ptp.h \
++	libusb-glue.h music-players.h device-flags.h \
+ 	mtpz.h chdk_live_view.h chdk_ptp.h $(am__append_1) \
+ 	$(am__append_2) $(am__append_3) $(am__append_4)
+ include_HEADERS = libmtp.h
+@@ -496,7 +496,6 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-libusb-glue.Plo@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-libusb1-glue.Plo@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-mtpz.Plo@am__quote@ # am--include-marker
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-playlist-spl.Plo@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-ptp.Plo@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-unicode.Plo@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libmtp_la-util.Plo@am__quote@ # am--include-marker
+@@ -549,13 +548,6 @@ libmtp_la-util.lo: util.c
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmtp_la_CFLAGS) $(CFLAGS) -c -o libmtp_la-util.lo `test -f 'util.c' || echo '$(srcdir)/'`util.c
+ 
+-libmtp_la-playlist-spl.lo: playlist-spl.c
+-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmtp_la_CFLAGS) $(CFLAGS) -MT libmtp_la-playlist-spl.lo -MD -MP -MF $(DEPDIR)/libmtp_la-playlist-spl.Tpo -c -o libmtp_la-playlist-spl.lo `test -f 'playlist-spl.c' || echo '$(srcdir)/'`playlist-spl.c
+-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmtp_la-playlist-spl.Tpo $(DEPDIR)/libmtp_la-playlist-spl.Plo
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='playlist-spl.c' object='libmtp_la-playlist-spl.lo' libtool=yes @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmtp_la_CFLAGS) $(CFLAGS) -c -o libmtp_la-playlist-spl.lo `test -f 'playlist-spl.c' || echo '$(srcdir)/'`playlist-spl.c
+-
+ libmtp_la-ptp.lo: ptp.c
+ @am__fastdepCC_TRUE@	$(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libmtp_la_CFLAGS) $(CFLAGS) -MT libmtp_la-ptp.lo -MD -MP -MF $(DEPDIR)/libmtp_la-ptp.Tpo -c -o libmtp_la-ptp.lo `test -f 'ptp.c' || echo '$(srcdir)/'`ptp.c
+ @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libmtp_la-ptp.Tpo $(DEPDIR)/libmtp_la-ptp.Plo
+diff --git a/src/libmtp.c b/src/libmtp.c
+index 4f2ec58..180c369 100644
+--- a/src/libmtp.c
++++ b/src/libmtp.c
+@@ -40,7 +40,9 @@
+ #include "ptp.h"
+ #include "libusb-glue.h"
+ #include "device-flags.h"
++#if 0
+ #include "playlist-spl.h"
++#endif
+ #include "util.h"
+ 
+ #include "mtpz.h"
+@@ -7065,6 +7067,7 @@ int LIBMTP_Set_Track_Name(LIBMTP_mtpdevice_t *device,
+   return ret;
+ }
+ 
++#if 0
+ /**
+  * This function renames a single playlist object file holder.
+  * This simply means that the <code>PTP_OPC_ObjectFileName</code>
+@@ -7101,6 +7104,7 @@ int LIBMTP_Set_Playlist_Name(LIBMTP_mtpdevice_t *device,
+   playlist->name = strdup(newname);
+   return ret;
+ }
++#endif
+ 
+ /**
+  * This function renames a single album.
+@@ -7518,6 +7522,7 @@ uint32_t LIBMTP_Create_Folder(LIBMTP_mtpdevice_t *device, char *name,
+   return new_id;
+ }
+ 
++#if 0
+ /**
+  * This creates a new playlist metadata structure and allocates memory
+  * for it. Notice that if you add strings to this structure they
+@@ -7714,6 +7719,7 @@ LIBMTP_playlist_t *LIBMTP_Get_Playlist(LIBMTP_mtpdevice_t *device, uint32_t cons
+ 
+   return pl;
+ }
++#endif
+ 
+ /**
+  * This function creates a new abstract list such as a playlist
+@@ -8270,6 +8276,7 @@ static int update_abstract_list(LIBMTP_mtpdevice_t *device,
+ }
+ 
+ 
++#if 0
+ /**
+  * This routine creates a new playlist based on the metadata
+  * supplied. If the <code>tracks</code> field of the metadata
+@@ -8368,6 +8375,7 @@ int LIBMTP_Update_Playlist(LIBMTP_mtpdevice_t *device,
+ 			      metadata->tracks,
+ 			      metadata->no_tracks);
+ }
++#endif
+ 
+ /**
+  * This creates a new album metadata structure and allocates memory
+diff --git a/src/libmtp.h.in b/src/libmtp.h.in
+index 8df68c5..f292ec1 100644
+--- a/src/libmtp.h.in
++++ b/src/libmtp.h.in
+@@ -1019,6 +1019,7 @@ int LIBMTP_Set_Folder_Name(LIBMTP_mtpdevice_t *, LIBMTP_folder_t *, const char *
+ /** @} */
+ 
+ 
++#if 0
+ /**
+  * @}
+  * @defgroup playlists The audio/video playlist management API.
+@@ -1031,6 +1032,7 @@ LIBMTP_playlist_t *LIBMTP_Get_Playlist(LIBMTP_mtpdevice_t *, uint32_t const);
+ int LIBMTP_Create_New_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * const);
+ int LIBMTP_Update_Playlist(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t * const);
+ int LIBMTP_Set_Playlist_Name(LIBMTP_mtpdevice_t *, LIBMTP_playlist_t *, const char *);
++#endif
+ 
+ /**
+  * @}
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-01_build_fixes.patch b/media-libs/libmtp/files/libmtp-1.1.18-01_build_fixes.patch
new file mode 100644
index 0000000..a8e6c13
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-01_build_fixes.patch
@@ -0,0 +1,13 @@
+diff --git a/src/ptp.h b/src/ptp.h
+index 8c8adad..3058d35 100644
+--- a/src/ptp.h
++++ b/src/ptp.h
+@@ -3669,7 +3669,7 @@ uint16_t ptp_olympus_omd_move_focus (PTPParams* params, uint32_t direction, uint
+ static inline int
+ ptp_operation_issupported(PTPParams* params, uint16_t operation)
+ {
+-	unsigned int i=0;
++	uint32_t i=0;
+ 
+ 	for (;i<params->deviceinfo.OperationsSupported_len;i++) {
+ 		if (params->deviceinfo.OperationsSupported[i]==operation)
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-03_enable_ptp_support.patch b/media-libs/libmtp/files/libmtp-1.1.18-03_enable_ptp_support.patch
new file mode 100644
index 0000000..c6543df
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-03_enable_ptp_support.patch
@@ -0,0 +1,52 @@
+diff --git a/src/libusb1-glue.c b/src/libusb1-glue.c
+index 6ba3eb7..32d5a9e 100644
+--- a/src/libusb1-glue.c
++++ b/src/libusb1-glue.c
+@@ -224,15 +224,15 @@ static void free_mtpdevice_list(mtpdevice_list_t *devlist)
+ }
+ 
+ /**
+- * This checks if a device has an MTP descriptor. The descriptor was
+- * elaborated about in gPhoto bug 1482084, and some official documentation
+- * with no strings attached was published by Microsoft at
++ * This checks if a device is a PTP device or has an MTP descriptor. The
++ * descriptor was elaborated about in gPhoto bug 1482084, and some official
++ * documentation with no strings attached was published by Microsoft at
+  * http://www.microsoft.com/whdc/system/bus/USB/USBFAQ_intermed.mspx#E3HAC
+  *
+  * @param dev a device struct from libusb.
+  * @param dumpfile set to non-NULL to make the descriptors dump out
+  *        to this file in human-readable hex so we can scruitinze them.
+- * @return 1 if the device is MTP compliant, 0 if not.
++ * @return 1 if the device is PTP or MTP compliant, 0 if not.
+  */
+ static int probe_device_descriptor(libusb_device *dev, FILE *dumpfile)
+ {
+@@ -316,7 +316,6 @@ static int probe_device_descriptor(libusb_device *dev, FILE *dumpfile)
+ 	   * TODO: Check for Still Image Capture class with PIMA 15740
+ 	   * protocol, also known as PTP
+ 	   */
+-#if 0
+ 	  if (intf->bInterfaceClass == LIBUSB_CLASS_PTP
+ 	      && intf->bInterfaceSubClass == 0x01
+ 	      && intf->bInterfaceProtocol == 0x01) {
+@@ -325,17 +324,9 @@ static int probe_device_descriptor(libusb_device *dev, FILE *dumpfile)
+ 	      fprintf(dumpfile, "   Found PTP device, check vendor "
+ 		      "extension...\n");
+ 	    }
+-	    /*
+-	     * This is where we may insert code to open a PTP
+-	     * session and query the vendor extension ID to see
+-	     * if it is 0xffffffff, i.e. MTP according to the spec.
+-	     */
+-	    if (was_mtp_extension) {
+-	      libusb_close(devh);
+-	      return 1;
+-	    }
++	    libusb_close(devh);
++	    return 1;
+ 	  }
+-#endif
+ 
+ 	  /*
+ 	   * Next we search for the MTP substring in the interface name.
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-05_improve_warning_formatting.patch b/media-libs/libmtp/files/libmtp-1.1.18-05_improve_warning_formatting.patch
new file mode 100644
index 0000000..ac1b6b3
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-05_improve_warning_formatting.patch
@@ -0,0 +1,24 @@
+diff --git a/src/libmtp.c b/src/libmtp.c
+index 180c369..da2cf9a 100644
+--- a/src/libmtp.c
++++ b/src/libmtp.c
+@@ -1939,15 +1939,15 @@ LIBMTP_mtpdevice_t *LIBMTP_Open_Raw_Device_Uncached(LIBMTP_raw_device_t *rawdevi
+   /* Check: if this is a PTP device, is it really tagged as MTP? */
+   if (current_params->deviceinfo.VendorExtensionID != 0x00000006) {
+     LIBMTP_ERROR("LIBMTP WARNING: no MTP vendor extension on device "
+-		 "%d on bus %d",
++		 "%d on bus %d\n",
+ 		 rawdevice->devnum, rawdevice->bus_location);
+-    LIBMTP_ERROR("LIBMTP WARNING: VendorExtensionID: %08x",
++    LIBMTP_ERROR("LIBMTP WARNING: VendorExtensionID: %08x\n",
+ 		 current_params->deviceinfo.VendorExtensionID);
+-    LIBMTP_ERROR("LIBMTP WARNING: VendorExtensionDesc: %s",
++    LIBMTP_ERROR("LIBMTP WARNING: VendorExtensionDesc: %s\n",
+ 		 current_params->deviceinfo.VendorExtensionDesc);
+     LIBMTP_ERROR("LIBMTP WARNING: this typically means the device is PTP "
+ 		 "(i.e. a camera) but not an MTP device at all. "
+-		 "Trying to continue anyway.");
++		 "Trying to continue anyway.\n");
+   }
+ 
+   parse_extension_descriptor(mtp_device,
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-06_disable_ptp_canon_eos_setdevicepropvalue.patch b/media-libs/libmtp/files/libmtp-1.1.18-06_disable_ptp_canon_eos_setdevicepropvalue.patch
new file mode 100644
index 0000000..e711c56
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-06_disable_ptp_canon_eos_setdevicepropvalue.patch
@@ -0,0 +1,35 @@
+diff --git a/src/ptp.c b/src/ptp.c
+index 2c0eae6..e1329c2 100644
+--- a/src/ptp.c
++++ b/src/ptp.c
+@@ -3231,6 +3231,7 @@ ptp_canon_eos_setdevicepropvalueex (PTPParams* params, unsigned char* data, unsi
+ 	return ptp_transaction(params, &ptp, PTP_DP_SENDDATA, size, &data, NULL);
+ }
+ 
++#if 0
+ uint16_t
+ ptp_canon_eos_setdevicepropvalue (PTPParams* params,
+ 	uint16_t propcode, PTPPropertyValue *value, uint16_t datatype
+@@ -3313,6 +3314,7 @@ ptp_canon_eos_setdevicepropvalue (PTPParams* params,
+ 	free (data);
+ 	return ret;
+ }
++#endif
+ 
+ /**
+  * ptp_canon_getpartialobject:
+diff --git a/src/ptp.h b/src/ptp.h
+index 3058d35..061c860 100644
+--- a/src/ptp.h
++++ b/src/ptp.h
+@@ -3386,8 +3386,10 @@ uint16_t ptp_canon_eos_bulbend (PTPParams* params);
+ uint16_t ptp_canon_eos_905f (PTPParams* params, uint32_t);
+ uint16_t ptp_canon_eos_getdevicepropdesc (PTPParams* params, uint16_t propcode,
+ 				PTPDevicePropDesc *devicepropertydesc);
++#if 0
+ uint16_t ptp_canon_eos_setdevicepropvalue (PTPParams* params, uint16_t propcode,
+                         	PTPPropertyValue* value, uint16_t datatype);
++#endif
+ uint16_t ptp_nikon_get_vendorpropcodes (PTPParams* params, uint16_t **props, unsigned int *size);
+ uint16_t ptp_nikon_curve_download (PTPParams* params, 
+ 				unsigned char **data, unsigned int *size);
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-09_do_not_build_udev_and_examples.patch b/media-libs/libmtp/files/libmtp-1.1.18-09_do_not_build_udev_and_examples.patch
new file mode 100644
index 0000000..9c1e62e
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-09_do_not_build_udev_and_examples.patch
@@ -0,0 +1,634 @@
+diff --git a/Makefile.am b/Makefile.am
+index 7b7e06b..ba8f69a 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -1,4 +1,4 @@
+-SUBDIRS=src examples util doc
++SUBDIRS=src util doc
+ ACLOCAL_AMFLAGS=-I m4
+ 
+ pkgconfigdir=$(libdir)/pkgconfig
+@@ -8,24 +8,24 @@ EXTRA_DIST=libmtp.pc libmtp.sh COPYING README.windows.txt
+ 
+ # This stuff only makes sense on Linux so only
+ # build and ship it on Linux.
+-if USE_LINUX
+-udevrulesdir=@UDEV@/rules.d
+-hwdbdir=@UDEV@/hwdb.d
+-udevrules_DATA=@UDEV_RULES@
+-hwdb_DATA=69-libmtp.hwdb
+-noinst_DATA=libmtp.usermap libmtp.fdi
+-
+-libmtp.usermap: util/mtp-hotplug
+-	util/mtp-hotplug > libmtp.usermap
+-
+-@UDEV_RULES@: util/mtp-hotplug
+-	util/mtp-hotplug -u -p"@UDEV@" @UDEV_GROUP@ @UDEV_MODE@ > @UDEV_RULES@
+-
+-libmtp.fdi: util/mtp-hotplug
+-	util/mtp-hotplug -H > libmtp.fdi
+-
+-$(hwdb_DATA): util/mtp-hotplug
+-	util/mtp-hotplug -w > $(hwdb_DATA)
+-
+-CLEANFILES = libmtp.usermap @UDEV_RULES@ libmtp.fdi libmtp.hwdb
+-endif
++#if USE_LINUX
++#udevrulesdir=@UDEV@/rules.d
++#hwdbdir=@UDEV@/hwdb.d
++#udevrules_DATA=@UDEV_RULES@
++#hwdb_DATA=69-libmtp.hwdb
++#noinst_DATA=libmtp.usermap libmtp.fdi
++#
++#libmtp.usermap: util/mtp-hotplug
++#	util/mtp-hotplug > libmtp.usermap
++#
++#@UDEV_RULES@: util/mtp-hotplug
++#	util/mtp-hotplug -u -p"@UDEV@" @UDEV_GROUP@ @UDEV_MODE@ > @UDEV_RULES@
++#
++#libmtp.fdi: util/mtp-hotplug
++#	util/mtp-hotplug -H > libmtp.fdi
++#
++#$(hwdb_DATA): util/mtp-hotplug
++#	util/mtp-hotplug -w > $(hwdb_DATA)
++#
++#CLEANFILES = libmtp.usermap @UDEV_RULES@ libmtp.fdi libmtp.hwdb
++#endif
+diff --git a/Makefile.in b/Makefile.in
+index b4eb120..a9e168e 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -159,9 +159,8 @@ am__uninstall_files_from_dir = { \
+     || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+          $(am__cd) "$$dir" && rm -f $$files; }; \
+   }
+-am__installdirs = "$(DESTDIR)$(hwdbdir)" "$(DESTDIR)$(pkgconfigdir)" \
+-	"$(DESTDIR)$(udevrulesdir)"
+-DATA = $(hwdb_DATA) $(noinst_DATA) $(pkgconfig_DATA) $(udevrules_DATA)
++am__installdirs = "$(DESTDIR)$(pkgconfigdir)"
++DATA = $(pkgconfig_DATA)
+ RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive	\
+   distclean-recursive maintainer-clean-recursive
+ am__recursive_targets = \
+@@ -371,20 +370,11 @@ target_alias = @target_alias@
+ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+-SUBDIRS = src examples util doc
++SUBDIRS = src util doc
+ ACLOCAL_AMFLAGS = -I m4
+ pkgconfigdir = $(libdir)/pkgconfig
+ pkgconfig_DATA = libmtp.pc
+ EXTRA_DIST = libmtp.pc libmtp.sh COPYING README.windows.txt
+-
+-# This stuff only makes sense on Linux so only
+-# build and ship it on Linux.
+-@USE_LINUX_TRUE@udevrulesdir = @UDEV@/rules.d
+-@USE_LINUX_TRUE@hwdbdir = @UDEV@/hwdb.d
+-@USE_LINUX_TRUE@udevrules_DATA = @UDEV_RULES@
+-@USE_LINUX_TRUE@hwdb_DATA = 69-libmtp.hwdb
+-@USE_LINUX_TRUE@noinst_DATA = libmtp.usermap libmtp.fdi
+-@USE_LINUX_TRUE@CLEANFILES = libmtp.usermap @UDEV_RULES@ libmtp.fdi libmtp.hwdb
+ all: config.h
+ 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
+ 
+@@ -494,27 +484,6 @@ uninstall-pkgconfigDATA:
+ 	@list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \
+ 	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ 	dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir)
+-install-udevrulesDATA: $(udevrules_DATA)
+-	@$(NORMAL_INSTALL)
+-	@list='$(udevrules_DATA)'; test -n "$(udevrulesdir)" || list=; \
+-	if test -n "$$list"; then \
+-	  echo " $(MKDIR_P) '$(DESTDIR)$(udevrulesdir)'"; \
+-	  $(MKDIR_P) "$(DESTDIR)$(udevrulesdir)" || exit 1; \
+-	fi; \
+-	for p in $$list; do \
+-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+-	  echo "$$d$$p"; \
+-	done | $(am__base_list) | \
+-	while read files; do \
+-	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(udevrulesdir)'"; \
+-	  $(INSTALL_DATA) $$files "$(DESTDIR)$(udevrulesdir)" || exit $$?; \
+-	done
+-
+-uninstall-udevrulesDATA:
+-	@$(NORMAL_UNINSTALL)
+-	@list='$(udevrules_DATA)'; test -n "$(udevrulesdir)" || list=; \
+-	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+-	dir='$(DESTDIR)$(udevrulesdir)'; $(am__uninstall_files_from_dir)
+ 
+ # This directory's subdirectories are mostly independent; you can cd
+ # into them and run 'make' without going through this Makefile.
+@@ -824,7 +793,7 @@ check: check-recursive
+ all-am: Makefile $(DATA) config.h
+ installdirs: installdirs-recursive
+ installdirs-am:
+-	for dir in "$(DESTDIR)$(hwdbdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(udevrulesdir)"; do \
++	for dir in "$(DESTDIR)$(pkgconfigdir)"; do \
+ 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ 	done
+ install: install-recursive
+@@ -849,7 +818,6 @@ install-strip:
+ mostlyclean-generic:
+ 
+ clean-generic:
+-	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+ 
+ distclean-generic:
+ 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+@@ -880,8 +848,7 @@ info: info-recursive
+ 
+ info-am:
+ 
+-install-data-am: install-hwdbDATA install-pkgconfigDATA \
+-	install-udevrulesDATA
++install-data-am: install-pkgconfigDATA
+ 
+ install-dvi: install-dvi-recursive
+ 
+@@ -927,8 +894,7 @@ ps: ps-recursive
+ 
+ ps-am:
+ 
+-uninstall-am: uninstall-hwdbDATA uninstall-pkgconfigDATA \
+-	uninstall-udevrulesDATA
++uninstall-am: uninstall-pkgconfigDATA
+ 
+ .MAKE: $(am__recursive_targets) all install-am install-strip
+ 
+@@ -942,29 +908,17 @@ uninstall-am: uninstall-hwdbDATA uninstall-pkgconfigDATA \
+ 	dvi-am html html-am info info-am install install-am \
+ 	install-data install-data-am install-dvi install-dvi-am \
+ 	install-exec install-exec-am install-html install-html-am \
+-	install-hwdbDATA install-info install-info-am install-man \
++	install-info install-info-am install-man \
+ 	install-pdf install-pdf-am install-pkgconfigDATA install-ps \
+-	install-ps-am install-strip install-udevrulesDATA installcheck \
++	install-ps-am install-strip installcheck \
+ 	installcheck-am installdirs installdirs-am maintainer-clean \
+ 	maintainer-clean-generic mostlyclean mostlyclean-generic \
+ 	mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
+-	uninstall-am uninstall-hwdbDATA uninstall-pkgconfigDATA \
+-	uninstall-udevrulesDATA
++	uninstall-am uninstall-pkgconfigDATA
+ 
+ .PRECIOUS: Makefile
+ 
+ 
+-@USE_LINUX_TRUE@libmtp.usermap: util/mtp-hotplug
+-@USE_LINUX_TRUE@	util/mtp-hotplug > libmtp.usermap
+-
+-@USE_LINUX_TRUE@@UDEV_RULES@: util/mtp-hotplug
+-@USE_LINUX_TRUE@	util/mtp-hotplug -u -p"@UDEV@" @UDEV_GROUP@ @UDEV_MODE@ > @UDEV_RULES@
+-
+-@USE_LINUX_TRUE@libmtp.fdi: util/mtp-hotplug
+-@USE_LINUX_TRUE@	util/mtp-hotplug -H > libmtp.fdi
+-
+-@USE_LINUX_TRUE@$(hwdb_DATA): util/mtp-hotplug
+-@USE_LINUX_TRUE@	util/mtp-hotplug -w > $(hwdb_DATA)
+ 
+ # Tell versions [3.59,3.63) of GNU make to not export all variables.
+ # Otherwise a system limit (for SysV at least) may be exceeded.
+diff --git a/util/Makefile.am b/util/Makefile.am
+index 11f3640..f39c888 100644
+--- a/util/Makefile.am
++++ b/util/Makefile.am
+@@ -1,11 +1,11 @@
+-if USE_LINUX
+-bin_PROGRAMS=mtp-hotplug
+-mtp_hotplug_SOURCES=mtp-hotplug.c
+-
+-mtp_probedir=@UDEV@
+-mtp_probe_PROGRAMS=mtp-probe
+-mtp_probe_SOURCES=mtp-probe.c
+-endif
++#if USE_LINUX
++#bin_PROGRAMS=mtp-hotplug
++#mtp_hotplug_SOURCES=mtp-hotplug.c
++#
++#mtp_probedir=@UDEV@
++#mtp_probe_PROGRAMS=mtp-probe
++#mtp_probe_SOURCES=mtp-probe.c
++#endif
+ 
+ AM_CPPFLAGS=-I$(top_builddir)/src
+ LDADD=../src/libmtp.la
+diff --git a/util/Makefile.in b/util/Makefile.in
+index 0dfb513..b6d19f9 100644
+--- a/util/Makefile.in
++++ b/util/Makefile.in
+@@ -88,8 +88,6 @@ PRE_UNINSTALL = :
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+-@USE_LINUX_TRUE@bin_PROGRAMS = mtp-hotplug$(EXEEXT)
+-@USE_LINUX_TRUE@mtp_probe_PROGRAMS = mtp-probe$(EXEEXT)
+ subdir = util
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/byteorder.m4 \
+@@ -104,85 +102,8 @@ mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = $(top_builddir)/config.h
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+-am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(mtp_probedir)"
+-PROGRAMS = $(bin_PROGRAMS) $(mtp_probe_PROGRAMS)
+-am__mtp_hotplug_SOURCES_DIST = mtp-hotplug.c
+-@USE_LINUX_TRUE@am_mtp_hotplug_OBJECTS = mtp-hotplug.$(OBJEXT)
+-mtp_hotplug_OBJECTS = $(am_mtp_hotplug_OBJECTS)
+-mtp_hotplug_LDADD = $(LDADD)
+-mtp_hotplug_DEPENDENCIES = ../src/libmtp.la
+-AM_V_lt = $(am__v_lt_@AM_V@)
+-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
+-am__v_lt_0 = --silent
+-am__v_lt_1 = 
+-am__mtp_probe_SOURCES_DIST = mtp-probe.c
+-@USE_LINUX_TRUE@am_mtp_probe_OBJECTS = mtp-probe.$(OBJEXT)
+-mtp_probe_OBJECTS = $(am_mtp_probe_OBJECTS)
+-mtp_probe_LDADD = $(LDADD)
+-mtp_probe_DEPENDENCIES = ../src/libmtp.la
+-AM_V_P = $(am__v_P_@AM_V@)
+-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
+-am__v_P_0 = false
+-am__v_P_1 = :
+-AM_V_GEN = $(am__v_GEN_@AM_V@)
+-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
+-am__v_GEN_0 = @echo "  GEN     " $@;
+-am__v_GEN_1 = 
+-AM_V_at = $(am__v_at_@AM_V@)
+-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
+-am__v_at_0 = @
+-am__v_at_1 = 
+-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
+-depcomp = $(SHELL) $(top_srcdir)/depcomp
+-am__maybe_remake_depfiles = depfiles
+-am__depfiles_remade = ./$(DEPDIR)/mtp-hotplug.Po \
+-	./$(DEPDIR)/mtp-probe.Po
+-am__mv = mv -f
+-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+-	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+-	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
+-	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+-	$(AM_CFLAGS) $(CFLAGS)
+-AM_V_CC = $(am__v_CC_@AM_V@)
+-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+-am__v_CC_0 = @echo "  CC      " $@;
+-am__v_CC_1 = 
+-CCLD = $(CC)
+-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+-	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+-	$(AM_LDFLAGS) $(LDFLAGS) -o $@
+-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+-am__v_CCLD_0 = @echo "  CCLD    " $@;
+-am__v_CCLD_1 = 
+-SOURCES = $(mtp_hotplug_SOURCES) $(mtp_probe_SOURCES)
+-DIST_SOURCES = $(am__mtp_hotplug_SOURCES_DIST) \
+-	$(am__mtp_probe_SOURCES_DIST)
+-am__can_run_installinfo = \
+-  case $$AM_UPDATE_INFO_DIR in \
+-    n|no|NO) false;; \
+-    *) (install-info --version) >/dev/null 2>&1;; \
+-  esac
+-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+-# Read a list of newline-separated strings from the standard input,
+-# and print each of them once, without duplicates.  Input order is
+-# *not* preserved.
+-am__uniquify_input = $(AWK) '\
+-  BEGIN { nonempty = 0; } \
+-  { items[$$0] = 1; nonempty = 1; } \
+-  END { if (nonempty) { for (i in items) print i; }; } \
+-'
+-# Make sure the list of sources is unique.  This is necessary because,
+-# e.g., the same source file might be shared among _SOURCES variables
+-# for different programs/libraries.
+-am__define_uniq_tagged_files = \
+-  list='$(am__tagged_files)'; \
+-  unique=`for i in $$list; do \
+-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+-  done | $(am__uniquify_input)`
+-ETAGS = etags
+-CTAGS = ctags
++SOURCES =
++DIST_SOURCES =
+ am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+@@ -317,15 +238,11 @@ target_alias = @target_alias@
+ top_build_prefix = @top_build_prefix@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+-@USE_LINUX_TRUE@mtp_hotplug_SOURCES = mtp-hotplug.c
+-@USE_LINUX_TRUE@mtp_probedir = @UDEV@
+-@USE_LINUX_TRUE@mtp_probe_SOURCES = mtp-probe.c
+ AM_CPPFLAGS = -I$(top_builddir)/src
+ LDADD = ../src/libmtp.la
+ all: all-am
+ 
+ .SUFFIXES:
+-.SUFFIXES: .c .lo .o .obj
+ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
+ 	@for dep in $?; do \
+ 	  case '$(am__configure_deps)' in \
+@@ -355,148 +272,6 @@ $(top_srcdir)/configure:  $(am__configure_deps)
+ $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
+ 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ $(am__aclocal_m4_deps):
+-install-binPROGRAMS: $(bin_PROGRAMS)
+-	@$(NORMAL_INSTALL)
+-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+-	if test -n "$$list"; then \
+-	  echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \
+-	  $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \
+-	fi; \
+-	for p in $$list; do echo "$$p $$p"; done | \
+-	sed 's/$(EXEEXT)$$//' | \
+-	while read p p1; do if test -f $$p \
+-	 || test -f $$p1 \
+-	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+-	done | \
+-	sed -e 'p;s,.*/,,;n;h' \
+-	    -e 's|.*|.|' \
+-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+-	sed 'N;N;N;s,\n, ,g' | \
+-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+-	    else { print "f", $$3 "/" $$4, $$1; } } \
+-	  END { for (d in files) print "f", d, files[d] }' | \
+-	while read type dir files; do \
+-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+-	    test -z "$$files" || { \
+-	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \
+-	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
+-	    } \
+-	; done
+-
+-uninstall-binPROGRAMS:
+-	@$(NORMAL_UNINSTALL)
+-	@list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
+-	files=`for p in $$list; do echo "$$p"; done | \
+-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+-	      -e 's/$$/$(EXEEXT)/' \
+-	`; \
+-	test -n "$$list" || exit 0; \
+-	echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
+-	cd "$(DESTDIR)$(bindir)" && rm -f $$files
+-
+-clean-binPROGRAMS:
+-	@list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \
+-	echo " rm -f" $$list; \
+-	rm -f $$list || exit $$?; \
+-	test -n "$(EXEEXT)" || exit 0; \
+-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+-	echo " rm -f" $$list; \
+-	rm -f $$list
+-install-mtp_probePROGRAMS: $(mtp_probe_PROGRAMS)
+-	@$(NORMAL_INSTALL)
+-	@list='$(mtp_probe_PROGRAMS)'; test -n "$(mtp_probedir)" || list=; \
+-	if test -n "$$list"; then \
+-	  echo " $(MKDIR_P) '$(DESTDIR)$(mtp_probedir)'"; \
+-	  $(MKDIR_P) "$(DESTDIR)$(mtp_probedir)" || exit 1; \
+-	fi; \
+-	for p in $$list; do echo "$$p $$p"; done | \
+-	sed 's/$(EXEEXT)$$//' | \
+-	while read p p1; do if test -f $$p \
+-	 || test -f $$p1 \
+-	  ; then echo "$$p"; echo "$$p"; else :; fi; \
+-	done | \
+-	sed -e 'p;s,.*/,,;n;h' \
+-	    -e 's|.*|.|' \
+-	    -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
+-	sed 'N;N;N;s,\n, ,g' | \
+-	$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
+-	  { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
+-	    if ($$2 == $$4) files[d] = files[d] " " $$1; \
+-	    else { print "f", $$3 "/" $$4, $$1; } } \
+-	  END { for (d in files) print "f", d, files[d] }' | \
+-	while read type dir files; do \
+-	    if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
+-	    test -z "$$files" || { \
+-	    echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(mtp_probedir)$$dir'"; \
+-	    $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(mtp_probedir)$$dir" || exit $$?; \
+-	    } \
+-	; done
+-
+-uninstall-mtp_probePROGRAMS:
+-	@$(NORMAL_UNINSTALL)
+-	@list='$(mtp_probe_PROGRAMS)'; test -n "$(mtp_probedir)" || list=; \
+-	files=`for p in $$list; do echo "$$p"; done | \
+-	  sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
+-	      -e 's/$$/$(EXEEXT)/' \
+-	`; \
+-	test -n "$$list" || exit 0; \
+-	echo " ( cd '$(DESTDIR)$(mtp_probedir)' && rm -f" $$files ")"; \
+-	cd "$(DESTDIR)$(mtp_probedir)" && rm -f $$files
+-
+-clean-mtp_probePROGRAMS:
+-	@list='$(mtp_probe_PROGRAMS)'; test -n "$$list" || exit 0; \
+-	echo " rm -f" $$list; \
+-	rm -f $$list || exit $$?; \
+-	test -n "$(EXEEXT)" || exit 0; \
+-	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
+-	echo " rm -f" $$list; \
+-	rm -f $$list
+-
+-mtp-hotplug$(EXEEXT): $(mtp_hotplug_OBJECTS) $(mtp_hotplug_DEPENDENCIES) $(EXTRA_mtp_hotplug_DEPENDENCIES) 
+-	@rm -f mtp-hotplug$(EXEEXT)
+-	$(AM_V_CCLD)$(LINK) $(mtp_hotplug_OBJECTS) $(mtp_hotplug_LDADD) $(LIBS)
+-
+-mtp-probe$(EXEEXT): $(mtp_probe_OBJECTS) $(mtp_probe_DEPENDENCIES) $(EXTRA_mtp_probe_DEPENDENCIES) 
+-	@rm -f mtp-probe$(EXEEXT)
+-	$(AM_V_CCLD)$(LINK) $(mtp_probe_OBJECTS) $(mtp_probe_LDADD) $(LIBS)
+-
+-mostlyclean-compile:
+-	-rm -f *.$(OBJEXT)
+-
+-distclean-compile:
+-	-rm -f *.tab.c
+-
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mtp-hotplug.Po@am__quote@ # am--include-marker
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mtp-probe.Po@am__quote@ # am--include-marker
+-
+-$(am__depfiles_remade):
+-	@$(MKDIR_P) $(@D)
+-	@echo '# dummy' >$@-t && $(am__mv) $@-t $@
+-
+-am--depfiles: $(am__depfiles_remade)
+-
+-.c.o:
+-@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
+-
+-.c.obj:
+-@am__fastdepCC_TRUE@	$(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+-
+-.c.lo:
+-@am__fastdepCC_TRUE@	$(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+-@am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	$(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+-@am__fastdepCC_FALSE@	$(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+ 
+ mostlyclean-libtool:
+ 	-rm -f *.lo
+@@ -506,37 +281,12 @@ clean-libtool:
+ 
+ ID: $(am__tagged_files)
+ 	$(am__define_uniq_tagged_files); mkid -fID $$unique
+-tags: tags-am
+-TAGS: tags
+-
+-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+-	set x; \
+-	here=`pwd`; \
+-	$(am__define_uniq_tagged_files); \
+-	shift; \
+-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
+-	  test -n "$$unique" || unique=$$empty_fix; \
+-	  if test $$# -gt 0; then \
+-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+-	      "$$@" $$unique; \
+-	  else \
+-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+-	      $$unique; \
+-	  fi; \
+-	fi
+-ctags: ctags-am
+-
+-CTAGS: ctags
+-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+-	$(am__define_uniq_tagged_files); \
+-	test -z "$(CTAGS_ARGS)$$unique" \
+-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+-	     $$unique
+-
+-GTAGS:
+-	here=`$(am__cd) $(top_builddir) && pwd` \
+-	  && $(am__cd) $(top_srcdir) \
+-	  && gtags -i $(GTAGS_ARGS) "$$here"
++tags: TAGS
++TAGS:
++
++ctags: CTAGS
++CTAGS:
++
+ cscopelist: cscopelist-am
+ 
+ cscopelist-am: $(am__tagged_files)
+@@ -553,9 +303,6 @@ cscopelist-am: $(am__tagged_files)
+ 	  fi; \
+ 	done >> $(top_builddir)/cscope.files
+ 
+-distclean-tags:
+-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+-
+ distdir: $(BUILT_SOURCES)
+ 	$(MAKE) $(AM_MAKEFLAGS) distdir-am
+ 
+@@ -591,11 +338,8 @@ distdir-am: $(DISTFILES)
+ 	done
+ check-am: all-am
+ check: check-am
+-all-am: Makefile $(PROGRAMS)
++all-am: Makefile
+ installdirs:
+-	for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(mtp_probedir)"; do \
+-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+-	done
+ install: install-am
+ install-exec: install-exec-am
+ install-data: install-data-am
+@@ -628,15 +372,12 @@ maintainer-clean-generic:
+ 	@echo "it deletes files that may require special tools to rebuild."
+ clean: clean-am
+ 
+-clean-am: clean-binPROGRAMS clean-generic clean-libtool \
+-	clean-mtp_probePROGRAMS mostlyclean-am
++clean-am: clean-generic clean-libtool mostlyclean-am
+ 
+ distclean: distclean-am
+-		-rm -f ./$(DEPDIR)/mtp-hotplug.Po
+-	-rm -f ./$(DEPDIR)/mtp-probe.Po
+ 	-rm -f Makefile
+-distclean-am: clean-am distclean-compile distclean-generic \
+-	distclean-tags
++
++distclean-am: clean-am distclean-generic
+ 
+ dvi: dvi-am
+ 
+@@ -650,13 +391,13 @@ info: info-am
+ 
+ info-am:
+ 
+-install-data-am: install-mtp_probePROGRAMS
++install-data-am:
+ 
+ install-dvi: install-dvi-am
+ 
+ install-dvi-am:
+ 
+-install-exec-am: install-binPROGRAMS
++install-exec-am:
+ 
+ install-html: install-html-am
+ 
+@@ -679,15 +420,12 @@ install-ps-am:
+ installcheck-am:
+ 
+ maintainer-clean: maintainer-clean-am
+-		-rm -f ./$(DEPDIR)/mtp-hotplug.Po
+-	-rm -f ./$(DEPDIR)/mtp-probe.Po
+ 	-rm -f Makefile
+ maintainer-clean-am: distclean-am maintainer-clean-generic
+ 
+ mostlyclean: mostlyclean-am
+ 
+-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+-	mostlyclean-libtool
++mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+ 
+ pdf: pdf-am
+ 
+@@ -697,25 +435,24 @@ ps: ps-am
+ 
+ ps-am:
+ 
+-uninstall-am: uninstall-binPROGRAMS uninstall-mtp_probePROGRAMS
++uninstall-am:
+ 
+ .MAKE: install-am install-strip
+ 
+-.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \
+-	clean-binPROGRAMS clean-generic clean-libtool \
+-	clean-mtp_probePROGRAMS cscopelist-am ctags ctags-am distclean \
++.PHONY: all all-am check check-am clean \
++	clean-generic clean-libtool \
++	cscopelist-am distclean \
+ 	distclean-compile distclean-generic distclean-libtool \
+ 	distclean-tags distdir dvi dvi-am html html-am info info-am \
+-	install install-am install-binPROGRAMS install-data \
++	install install-am install-data \
+ 	install-data-am install-dvi install-dvi-am install-exec \
+ 	install-exec-am install-html install-html-am install-info \
+-	install-info-am install-man install-mtp_probePROGRAMS \
++	install-info-am install-man \
+ 	install-pdf install-pdf-am install-ps install-ps-am \
+ 	install-strip installcheck installcheck-am installdirs \
+ 	maintainer-clean maintainer-clean-generic mostlyclean \
+ 	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+-	pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+-	uninstall-binPROGRAMS uninstall-mtp_probePROGRAMS
++	pdf pdf-am ps ps-am uninstall uninstall-am
+ 
+ .PRECIOUS: Makefile
+ 
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-10_remove_nexus_s_from_device_list.patch b/media-libs/libmtp/files/libmtp-1.1.18-10_remove_nexus_s_from_device_list.patch
new file mode 100644
index 0000000..c1877a4
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-10_remove_nexus_s_from_device_list.patch
@@ -0,0 +1,17 @@
+diff --git a/src/music-players.h b/src/music-players.h
+index 2f0b53a..72b446b 100644
+--- a/src/music-players.h
++++ b/src/music-players.h
+@@ -2530,12 +2530,6 @@
+   /* https://sourceforge.net/p/libmtp/bugs/1837/ */
+   { "Google Inc (for Samsung)", 0x18d1, "Nexus One (MTP)", 0x4e12,
+       DEVICE_FLAGS_ANDROID_BUGS },
+-  // 0x4e21 (Nexus S) is a USB Mass Storage device.
+-  { "Google Inc (for Samsung)", 0x18d1, "Nexus S (MTP)", 0x4e25,
+-      DEVICE_FLAGS_ANDROID_BUGS },
+-  // 0x4e26 is also used by "Ramos W30HD Pro Quad Core"
+-  { "Google Inc (for Samsung)", 0x18d1, "Nexus S (MTP+ADB)", 0x4e26,
+-      DEVICE_FLAGS_ANDROID_BUGS },
+   // Reported by Chris Smith <tcgsmythe@users.sourceforge.net>
+   { "Google Inc (for Asus)", 0x18d1, "Nexus 7 (MTP)", 0x4e41,
+       DEVICE_FLAGS_ANDROID_BUGS },
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-15_read_chunks.patch b/media-libs/libmtp/files/libmtp-1.1.18-15_read_chunks.patch
new file mode 100644
index 0000000..9d7a7dc
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-15_read_chunks.patch
@@ -0,0 +1,86 @@
+diff --git a/src/libmtp.c b/src/libmtp.c
+index da2cf9a..14d1532 100644
+--- a/src/libmtp.c
++++ b/src/libmtp.c
+@@ -5145,6 +5145,56 @@ LIBMTP_track_t *LIBMTP_Get_Trackmetadata(LIBMTP_mtpdevice_t *device, uint32_t co
+   return track;
+ }
+ 
++/**
++ * This copies a chunk of a file off the device to memory.
++ * @param device a pointer to the device to get the track from.
++ * @param id the file ID of the file to retrieve.
++ * @param offset the offset of the file to read from.
++ * @param count the amount of data to read.
++ * @param data a pointer to the data from the device. Must be
++ *             <coded>free()</code>:ed by the caller after use.
++ * @param datalen the amount of data written to <code>data</code>.
++ * @return 0 if the transfer was successful, any other value means
++ *           failure.
++ */
++int LIBMTP_Get_File_Chunk(LIBMTP_mtpdevice_t* device, uint32_t id,
++                          uint32_t offset, uint32_t count,
++                          unsigned char** data, uint32_t* datalen)
++{
++  uint16_t ret;
++  PTPParams *params = (PTPParams *) device->params;
++  PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo;
++  PTPObject *ob;
++
++  if (!data || !datalen) {
++    add_error_to_errorstack(device, LIBMTP_ERROR_GENERAL, "LIBMTP_Get_File_Chunk(): Invalid parameter.");
++    return -1;
++  }
++
++  ret = ptp_object_want (params, id, PTPOBJECT_OBJECTINFO_LOADED, &ob);
++  if (ret != PTP_RC_OK) {
++    add_error_to_errorstack(device, LIBMTP_ERROR_GENERAL, "LIBMTP_Get_File_Chunk(): Could not get object info.");
++    return -1;
++  }
++  if (ob->oi.ObjectFormat == PTP_OFC_Association) {
++    add_error_to_errorstack(device, LIBMTP_ERROR_GENERAL, "LIBMTP_Get_File_Chunk(): Bad object format.");
++    return -1;
++  }
++
++  ret = ptp_getpartialobject(params, id, offset, count, data, datalen);
++
++  if (ret == PTP_ERROR_CANCEL) {
++    add_error_to_errorstack(device, LIBMTP_ERROR_CANCELLED, "LIBMTP_Get_File_Chunk(): Cancelled transfer.");
++    return -1;
++  }
++  if (ret != PTP_RC_OK) {
++    add_ptp_error_to_errorstack(device, ret, "LIBMTP_Get_File_Chunk(): Could not get file from device.");
++    return -1;
++  }
++
++  return 0;
++}
++
+ /**
+  * This is a manual conversion from MTPDataGetFunc to PTPDataGetFunc
+  * to isolate the internal type.
+diff --git a/src/libmtp.h.in b/src/libmtp.h.in
+index f292ec1..671b922 100644
+--- a/src/libmtp.h.in
++++ b/src/libmtp.h.in
+@@ -923,6 +923,8 @@ LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *,
+ 					     uint32_t const,
+ 					     uint32_t const);
+ LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const);
++int LIBMTP_Get_File_Chunk(LIBMTP_mtpdevice_t*, uint32_t, uint32_t, uint32_t,
++                          unsigned char**, uint32_t*);
+ int LIBMTP_Get_File_To_File(LIBMTP_mtpdevice_t*, uint32_t, char const * const,
+ 			LIBMTP_progressfunc_t const, void const * const);
+ int LIBMTP_Get_File_To_File_Descriptor(LIBMTP_mtpdevice_t*,
+diff --git a/src/libmtp.sym b/src/libmtp.sym
+index fec6e58..6736dc4 100644
+--- a/src/libmtp.sym
++++ b/src/libmtp.sym
+@@ -50,6 +50,7 @@ LIBMTP_Get_Filelisting
+ LIBMTP_Get_Filelisting_With_Callback
+ LIBMTP_Get_Files_And_Folders
+ LIBMTP_Get_Filemetadata
++LIBMTP_Get_File_Chunk
+ LIBMTP_Get_File_To_File
+ LIBMTP_Get_File_To_File_Descriptor
+ LIBMTP_Get_File_To_Handler
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-19_raw_read_directory.patch b/media-libs/libmtp/files/libmtp-1.1.18-19_raw_read_directory.patch
new file mode 100644
index 0000000..43b4ccd
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-19_raw_read_directory.patch
@@ -0,0 +1,99 @@
+diff --git a/src/libmtp.c b/src/libmtp.c
+index 14d1532..0031756 100644
+--- a/src/libmtp.c
++++ b/src/libmtp.c
+@@ -4586,6 +4586,67 @@ LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *device,
+   return retfiles;
+ }
+ 
++/**
++ * This function retrieves the list of ids of files and folders in a certain
++ * folder with id parent on a certain storage on a certain device.
++ * The device used with this operations must have been opened with
++ * LIBMTP_Open_Raw_Device_Uncached() or it will fail.
++ *
++ * NOTE: the request will always perform I/O with the device.
++ * @param device a pointer to the MTP device to report info from.
++ * @param storage a storage on the device to report info from. If
++ *        0 is passed in, the files for the given parent will be
++ *        searched across all available storages.
++ * @param parent the parent folder id.
++ * @param out the pointer where the array of ids is returned. It is
++ *        set only when the returned value > 0. The caller takes the
++ *        ownership of the array and has to free() it.
++ * @return the length of the returned array or -1 in case of failure.
++ */
++
++int LIBMTP_Get_Children(LIBMTP_mtpdevice_t *device,
++                        uint32_t const storage,
++                        uint32_t const parent,
++                        uint32_t **out)
++{
++  PTPParams *params = (PTPParams *) device->params;
++  PTP_USB *ptp_usb = (PTP_USB*) device->usbinfo;
++  LIBMTP_file_t *retfiles = NULL;
++  LIBMTP_file_t *curfile = NULL;
++  PTPObjectHandles currentHandles;
++  uint32_t storageid;
++  uint16_t ret;
++  int i = 0;
++
++  if (device->cached) {
++    // This function is only supposed to be used by devices
++    // opened as uncached!
++    LIBMTP_ERROR("tried to use %s on a cached device!\n", __func__);
++    return -1;
++  }
++
++  if (storage == 0)
++    storageid = PTP_GOH_ALL_STORAGE;
++  else
++    storageid = storage;
++
++  ret = ptp_getobjecthandles(params,
++                             storageid,
++                             PTP_GOH_ALL_FORMATS,
++                             parent,
++                             &currentHandles);
++
++  if (ret != PTP_RC_OK) {
++    add_ptp_error_to_errorstack(device, ret,
++        "LIBMTP_Get_Children(): could not get object handles.");
++    return -1;
++  }
++
++  if (currentHandles.Handler == NULL || currentHandles.n == 0)
++    return 0;
++  *out = currentHandles.Handler;
++  return currentHandles.n;
++}
+ 
+ /**
+  * This creates a new track metadata structure and allocates memory
+diff --git a/src/libmtp.h.in b/src/libmtp.h.in
+index 671b922..5ed5164 100644
+--- a/src/libmtp.h.in
++++ b/src/libmtp.h.in
+@@ -922,6 +922,10 @@ LIBMTP_file_t *LIBMTP_Get_Filelisting_With_Callback(LIBMTP_mtpdevice_t *,
+ LIBMTP_file_t * LIBMTP_Get_Files_And_Folders(LIBMTP_mtpdevice_t *,
+ 					     uint32_t const,
+ 					     uint32_t const);
++int LIBMTP_Get_Children(LIBMTP_mtpdevice_t *,
++                        uint32_t const,
++                        uint32_t const,
++                        uint32_t**);
+ LIBMTP_file_t *LIBMTP_Get_Filemetadata(LIBMTP_mtpdevice_t *, uint32_t const);
+ int LIBMTP_Get_File_Chunk(LIBMTP_mtpdevice_t*, uint32_t, uint32_t, uint32_t,
+                           unsigned char**, uint32_t*);
+diff --git a/src/libmtp.sym b/src/libmtp.sym
+index 6736dc4..cc5329a 100644
+--- a/src/libmtp.sym
++++ b/src/libmtp.sym
+@@ -49,6 +49,7 @@ LIBMTP_Get_Filetype_Description
+ LIBMTP_Get_Filelisting
+ LIBMTP_Get_Filelisting_With_Callback
+ LIBMTP_Get_Files_And_Folders
++LIBMTP_Get_Children
+ LIBMTP_Get_Filemetadata
+ LIBMTP_Get_File_Chunk
+ LIBMTP_Get_File_To_File
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-20_get_thumbnail_format.patch b/media-libs/libmtp/files/libmtp-1.1.18-20_get_thumbnail_format.patch
new file mode 100644
index 0000000..9d61a1f
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-20_get_thumbnail_format.patch
@@ -0,0 +1,57 @@
+diff --git a/src/libmtp.c b/src/libmtp.c
+index 0031756..8cbee65 100644
+--- a/src/libmtp.c
++++ b/src/libmtp.c
+@@ -9354,6 +9354,27 @@ int LIBMTP_TruncateObject(LIBMTP_mtpdevice_t *device, uint32_t const id,
+ }
+ 
+ 
++/**
++ * Get thumbnail format of a file.
++ * @param device a pointer to the device to get thumbnail format of.
++ * @param id the object ID of the file to get thumbnail format of.
++ * @return 0 on success, any other value means failure.
++ */
++int LIBMTP_Get_Thumbnail_Format(LIBMTP_mtpdevice_t *device, uint32_t const id,
++                                uint16_t *format)
++{
++  PTPParams *params = (PTPParams *) device->params;
++  uint16_t ret;
++
++  PTPObjectInfo object_info;
++  ret = ptp_getobjectinfo(params, id, &object_info);
++  if (ret != PTP_RC_OK)
++    return -1;
++
++  *format = object_info.ThumbFormat;
++  return 0;
++}
++
+ /**
+  * This routine updates an album based on the metadata
+  * supplied. If the <code>tracks</code> field of the metadata
+diff --git a/src/libmtp.h.in b/src/libmtp.h.in
+index 5ed5164..a38a344 100644
+--- a/src/libmtp.h.in
++++ b/src/libmtp.h.in
+@@ -971,6 +971,8 @@ int LIBMTP_Get_Representative_Sample(LIBMTP_mtpdevice_t *, uint32_t const,
+                           LIBMTP_filesampledata_t *);
+ int LIBMTP_Get_Thumbnail(LIBMTP_mtpdevice_t *, uint32_t const,
+                          unsigned char **data, unsigned int *size);
++int LIBMTP_Get_Thumbnail_Format(LIBMTP_mtpdevice_t *device, uint32_t const id,
++                                uint16_t *format);
+ 
+ /**
+  * @}
+diff --git a/src/libmtp.sym b/src/libmtp.sym
+index cc5329a..e00f194 100644
+--- a/src/libmtp.sym
++++ b/src/libmtp.sym
+@@ -106,6 +106,7 @@ LIBMTP_Set_Playlist_Name
+ LIBMTP_Set_Album_Name
+ LIBMTP_Set_Object_Filename
+ LIBMTP_Get_Thumbnail
++LIBMTP_Get_Thumbnail_Format
+ LIBMTP_Read_Event
+ LIBMTP_Read_Event_Async
+ LIBMTP_Handle_Events_Timeout_Completed
diff --git a/media-libs/libmtp/files/libmtp-1.1.18-22_ptp_timezone.patch b/media-libs/libmtp/files/libmtp-1.1.18-22_ptp_timezone.patch
new file mode 100644
index 0000000..5dd88ec
--- /dev/null
+++ b/media-libs/libmtp/files/libmtp-1.1.18-22_ptp_timezone.patch
@@ -0,0 +1,53 @@
+diff --git a/src/ptp-pack.c b/src/ptp-pack.c
+index 70da5f9..ea19389 100644
+--- a/src/ptp-pack.c
++++ b/src/ptp-pack.c
+@@ -706,6 +706,7 @@ ptp_unpack_PTPTIME (const char *str) {
+ 	char ptpdate[40];
+ 	char tmp[5];
+ 	size_t  ptpdatelen;
++	size_t tzoffs;
+ 	struct tm tm;
+ 
+ 	if (!str)
+@@ -742,6 +743,31 @@ ptp_unpack_PTPTIME (const char *str) {
+ 	tmp[2] = 0;
+ 	tm.tm_sec = atoi (tmp);
+ 	tm.tm_isdst = -1;
++	/* Check for optional '.s' (tenths of a second) and skip */
++	/* MTP spec v1.1 section 3.2.5 */
++	tzoffs = 15;
++	if (ptpdate[tzoffs] == '.' && ptpdate[tzoffs + 1] != '\0') {
++		tzoffs += 2;
++	}
++	/* Check for 'Z' (UTC time) */
++	if (ptpdate[tzoffs] == 'Z') {
++		return timegm (&tm);
++	}
++	/* Check for timezone offset [+/-HHMM] */
++	if (strlen(ptpdate + tzoffs) == 5) {
++		time_t tz = 0;
++		strncpy (tmp, ptpdate + tzoffs + 1, 2);
++		tmp[2] = 0;
++		tz = atoi (tmp) * 60 * 60;
++		strncpy (tmp, ptpdate + tzoffs + 3, 2);
++		tmp[2] = 0;
++		tz += atoi (tmp) * 60;
++		if (ptpdate[tzoffs] == '-') {
++			return timegm (&tm) + tz;
++		}
++		return timegm (&tm) - tz;
++	}
++	/* Unspecified timezone, use local time */
+ 	return mktime (&tm);
+ }
+ 
+@@ -784,7 +810,7 @@ ptp_unpack_OI (PTPParams *params, unsigned char* data, PTPObjectInfo *oi, unsign
+ 
+ 	ptp_unpack_string(params, data, PTP_oi_filenamelen, len, &filenamelen, &oi->Filename);
+ 	ptp_unpack_string(params, data, PTP_oi_filenamelen+filenamelen*2+1, len, &capturedatelen, &capture_date);
+-	/* subset of ISO 8601, without '.s' tenths of second and 
++	/* subset of ISO 8601, with optional '.s' tenths of second and
+ 	 * time zone
+ 	 */
+ 	oi->CaptureDate = ptp_unpack_PTPTIME(capture_date);
diff --git a/media-libs/libmtp/libmtp-1.1.16-r3.ebuild b/media-libs/libmtp/libmtp-1.1.16-r3.ebuild
deleted file mode 120000
index c3f9ff8..0000000
--- a/media-libs/libmtp/libmtp-1.1.16-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-libmtp-1.1.16.ebuild
\ No newline at end of file
diff --git a/media-libs/libmtp/libmtp-1.1.16.ebuild b/media-libs/libmtp/libmtp-1.1.16.ebuild
deleted file mode 100644
index e2a137f..0000000
--- a/media-libs/libmtp/libmtp-1.1.16.ebuild
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-inherit autotools cros-sanitizers
-
-DESCRIPTION="An implementation of Microsoft's Media Transfer Protocol (MTP)."
-HOMEPAGE="http://libmtp.sourceforge.net/"
-SRC_URI="https://sourceforge.net/projects/libmtp/files/libmtp/1.1.16/libmtp-1.1.16.tar.gz"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan +crypt doc examples static-libs"
-
-RDEPEND="virtual/libusb:1
-	crypt? ( dev-libs/libgcrypt )"
-DEPEND="${RDEPEND}
-	virtual/pkgconfig
-	doc? ( app-doc/doxygen )"
-
-DOCS="AUTHORS ChangeLog README TODO"
-
-PATCHES=(
-	"${FILESDIR}"/${P}-00_disable_playlist.patch
-	"${FILESDIR}"/${P}-01_build_fixes.patch
-	"${FILESDIR}"/${P}-03_enable_ptp_support.patch
-	"${FILESDIR}"/${P}-05_improve_warning_formatting.patch
-	"${FILESDIR}"/${P}-06_disable_ptp_canon_eos_setdevicepropvalue.patch
-	"${FILESDIR}"/${P}-09_do_not_build_udev_and_examples.patch
-	"${FILESDIR}"/${P}-10_remove_nexus_s_from_device_list.patch
-	"${FILESDIR}"/${P}-15_read_chunks.patch
-	"${FILESDIR}"/${P}-19_raw_read_directory.patch
-	"${FILESDIR}"/${P}-20_get_thumbnail_format.patch
-	"${FILESDIR}"/${P}-22_ptp_timezone.patch
-)
-
-src_prepare() {
-	epatch "${PATCHES[@]}"
-}
-
-src_configure() {
-	sanitizers-setup-env
-	local myeconfargs=(
-		$(use_enable static-libs static)
-		$(use_enable doc doxygen)
-		$(use_enable crypt mtpz)
-	)
-	econf "${myeconfargs[@]}"
-}
-
-src_install() {
-	default
-	find "${ED}" -name '*.la' -exec rm -f {} +
-
-	if use examples; then
-		docinto examples
-		dodoc examples/*.{c,h,sh}
-	fi
-}
diff --git a/media-libs/libmtp/libmtp-1.1.18.ebuild b/media-libs/libmtp/libmtp-1.1.18.ebuild
new file mode 100644
index 0000000..419a6cf
--- /dev/null
+++ b/media-libs/libmtp/libmtp-1.1.18.ebuild
@@ -0,0 +1,61 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit autotools cros-sanitizers
+
+DESCRIPTION="An implementation of Microsoft's Media Transfer Protocol (MTP)."
+HOMEPAGE="http://libmtp.sourceforge.net/"
+SRC_URI="mirror://sourceforge/${PN}/${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="*"
+IUSE="-asan +crypt doc examples static-libs"
+
+RDEPEND="virtual/libusb:1
+	crypt? ( dev-libs/libgcrypt )"
+DEPEND="${RDEPEND}
+	virtual/pkgconfig
+	doc? ( app-doc/doxygen )"
+
+DOCS="AUTHORS ChangeLog README TODO"
+
+PATCHES=(
+	"${FILESDIR}"/${P}-00_disable_playlist.patch
+	"${FILESDIR}"/${P}-01_build_fixes.patch
+	"${FILESDIR}"/${P}-03_enable_ptp_support.patch
+	"${FILESDIR}"/${P}-05_improve_warning_formatting.patch
+	"${FILESDIR}"/${P}-06_disable_ptp_canon_eos_setdevicepropvalue.patch
+	"${FILESDIR}"/${P}-09_do_not_build_udev_and_examples.patch
+	"${FILESDIR}"/${P}-10_remove_nexus_s_from_device_list.patch
+	"${FILESDIR}"/${P}-15_read_chunks.patch
+	"${FILESDIR}"/${P}-19_raw_read_directory.patch
+	"${FILESDIR}"/${P}-20_get_thumbnail_format.patch
+	"${FILESDIR}"/${P}-22_ptp_timezone.patch
+)
+
+src_prepare() {
+	epatch "${PATCHES[@]}"
+}
+
+src_configure() {
+	sanitizers-setup-env
+	local myeconfargs=(
+		$(use_enable static-libs static)
+		$(use_enable doc doxygen)
+		$(use_enable crypt mtpz)
+	)
+	econf "${myeconfargs[@]}"
+}
+
+src_install() {
+	default
+	find "${ED}" -name '*.la' -exec rm -f {} +
+
+	if use examples; then
+		docinto examples
+		dodoc examples/*.{c,h,sh}
+	fi
+}
diff --git a/media-libs/libsync/libsync-0.0.1-r5.ebuild b/media-libs/libsync/libsync-0.0.1-r5.ebuild
deleted file mode 100644
index aa71471..0000000
--- a/media-libs/libsync/libsync-0.0.1-r5.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-inherit cros-constants
-
-CROS_WORKON_COMMIT="f4f4387b6bf2387efbcfd1453af4892e8982faf6"
-CROS_WORKON_TREE="6735ede3571072051f02df69fdf53bb239ebe6bd"
-CROS_WORKON_PROJECT="aosp/platform/system/core/libsync"
-CROS_WORKON_LOCALNAME="../aosp/system/libsync"
-CROS_WORKON_MANUAL_UPREV="1"
-
-inherit multilib cros-workon
-
-DESCRIPTION="Library for Android sync objects"
-HOMEPAGE="https://android.googlesource.com/platform/system/core/libsync"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="!media-libs/arc-camera3-libsync"
-
-src_prepare() {
-	cp "${FILESDIR}/Makefile" "${S}" || die "Copying Makefile"
-	cp "${FILESDIR}/strlcpy.c" "${S}" || die "Copying strlcpy.c"
-	cp "${FILESDIR}/libsync.pc.template" "${S}" || die "Copying libsync.pc.template"
-	epatch "${FILESDIR}/0001-libsync-add-prototype-for-strlcpy.patch"
-}
-
-src_configure() {
-	export GENTOO_LIBDIR=$(get_libdir)
-	tc-export CC
-}
diff --git a/media-libs/libsync/libsync-0.0.1-r6.ebuild b/media-libs/libsync/libsync-0.0.1-r6.ebuild
new file mode 100644
index 0000000..8c08674
--- /dev/null
+++ b/media-libs/libsync/libsync-0.0.1-r6.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+inherit cros-constants
+
+CROS_WORKON_COMMIT="f4f4387b6bf2387efbcfd1453af4892e8982faf6"
+CROS_WORKON_TREE="6735ede3571072051f02df69fdf53bb239ebe6bd"
+CROS_WORKON_PROJECT="aosp/platform/system/core/libsync"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
+CROS_WORKON_LOCALNAME="../aosp/system/libsync"
+CROS_WORKON_MANUAL_UPREV="1"
+
+inherit multilib cros-workon
+
+DESCRIPTION="Library for Android sync objects"
+HOMEPAGE="https://chromium.googlesource.com/aosp/platform/system/core/libsync"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="!media-libs/arc-camera3-libsync"
+
+src_prepare() {
+	cp "${FILESDIR}/Makefile" "${S}" || die "Copying Makefile"
+	cp "${FILESDIR}/strlcpy.c" "${S}" || die "Copying strlcpy.c"
+	cp "${FILESDIR}/libsync.pc.template" "${S}" || die "Copying libsync.pc.template"
+	epatch "${FILESDIR}/0001-libsync-add-prototype-for-strlcpy.patch"
+}
+
+src_configure() {
+	export GENTOO_LIBDIR=$(get_libdir)
+	tc-export CC
+}
diff --git a/media-libs/libsync/libsync-9999.ebuild b/media-libs/libsync/libsync-9999.ebuild
index f37e257..45c0adf 100644
--- a/media-libs/libsync/libsync-9999.ebuild
+++ b/media-libs/libsync/libsync-9999.ebuild
@@ -6,13 +6,15 @@
 inherit cros-constants
 
 CROS_WORKON_PROJECT="aosp/platform/system/core/libsync"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_REPO="${CROS_GIT_AOSP_URL}"
 CROS_WORKON_LOCALNAME="../aosp/system/libsync"
 CROS_WORKON_MANUAL_UPREV="1"
 
 inherit multilib cros-workon
 
 DESCRIPTION="Library for Android sync objects"
-HOMEPAGE="https://android.googlesource.com/platform/system/core/libsync"
+HOMEPAGE="https://chromium.googlesource.com/aosp/platform/system/core/libsync"
 
 LICENSE="BSD-Google"
 SLOT="0"
diff --git a/media-libs/libv4lplugins/libv4lplugins-0.0.1-r41.ebuild b/media-libs/libv4lplugins/libv4lplugins-0.0.1-r41.ebuild
deleted file mode 100644
index f0c82d4..0000000
--- a/media-libs/libv4lplugins/libv4lplugins-0.0.1-r41.ebuild
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-CROS_WORKON_COMMIT="679c8ed2cda9048369264127d210a0c3eb64f500"
-CROS_WORKON_TREE="7c66df737852487714c0118de5b77cf7ec7e6898"
-CROS_WORKON_PROJECT="chromiumos/third_party/libv4lplugins"
-inherit autotools cros-workon eutils
-
-MY_P=v4l-utils-1.18.1
-
-DESCRIPTION="Separate plugin library from upstream v4l-utils package"
-HOMEPAGE="http://git.linuxtv.org/v4l-utils.git"
-SRC_URI="http://linuxtv.org/downloads/v4l-utils/${MY_P}.tar.bz2"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="*"
-PLUGIN_IUSE="rockchip rockchip_v2"
-IUSE="${PLUGIN_IUSE}"
-REQUIRED_USE="^^ ( ${PLUGIN_IUSE} )"
-
-RDEPEND="media-libs/libv4l"
-DEPEND="${RDEPEND}"
-
-S=${WORKDIR}/${MY_P}
-
-src_unpack() {
-	cros-workon_src_unpack
-	default
-}
-
-src_prepare() {
-	if use rockchip; then
-		PLUGIN_DIR="libv4l-rockchip"
-	elif use rockchip_v2; then
-		PLUGIN_DIR="libv4l-rockchip_v2"
-	fi
-	mv ${PLUGIN_DIR} lib || die
-	# Append "SUBDIRS += ${PLUGIN_DIR}" at the end of lib/Makefile.am
-	sed -i -e "\$aSUBDIRS += ${PLUGIN_DIR}" lib/Makefile.am || die
-	# Add "lib/${PLUGIN_DIR}/Makefile" after lib/libv4l2rds/Makefile
-	sed -i -e "s:libv4l2rds/Makefile:&\n\tlib/${PLUGIN_DIR}/Makefile:" \
-		configure.ac || die
-	rm -rf include
-	eautoreconf
-}
-
-src_configure() {
-	econf \
-		--disable-static \
-		--disable-qv4l2 \
-		--disable-v4l-utils \
-		--without-jpeg
-}
-
-src_compile() {
-	emake -C lib/${PLUGIN_DIR}
-}
-
-src_install() {
-	emake -C lib/${PLUGIN_DIR} DESTDIR="${D}" install
-}
diff --git a/media-libs/libv4lplugins/libv4lplugins-0.0.1-r43.ebuild b/media-libs/libv4lplugins/libv4lplugins-0.0.1-r43.ebuild
new file mode 100644
index 0000000..6f383ed
--- /dev/null
+++ b/media-libs/libv4lplugins/libv4lplugins-0.0.1-r43.ebuild
@@ -0,0 +1,64 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="5"
+
+CROS_WORKON_COMMIT="a27091de7f759ebac3021472b95030b1c7ee9781"
+CROS_WORKON_TREE="9e0363f36d5a77f1c0625ae393afb70cc067bf82"
+CROS_WORKON_PROJECT="chromiumos/third_party/libv4lplugins"
+inherit autotools cros-workon eutils
+
+MY_P=v4l-utils-1.18.1
+
+DESCRIPTION="Separate plugin library from upstream v4l-utils package"
+HOMEPAGE="http://git.linuxtv.org/v4l-utils.git"
+SRC_URI="http://linuxtv.org/downloads/v4l-utils/${MY_P}.tar.bz2"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="*"
+PLUGIN_IUSE="rockchip rockchip_v2"
+IUSE="${PLUGIN_IUSE}"
+REQUIRED_USE="^^ ( ${PLUGIN_IUSE} )"
+
+RDEPEND="media-libs/libv4l"
+DEPEND="${RDEPEND}"
+
+S=${WORKDIR}/${MY_P}
+
+src_unpack() {
+	cros-workon_src_unpack
+	default
+}
+
+src_prepare() {
+	if use rockchip; then
+		PLUGIN_DIR="libv4l-rockchip"
+	elif use rockchip_v2; then
+		PLUGIN_DIR="libv4l-rockchip_v2"
+	fi
+	mv ${PLUGIN_DIR} lib || die
+	# Append "SUBDIRS += ${PLUGIN_DIR}" at the end of lib/Makefile.am
+	sed -i -e "\$aSUBDIRS += ${PLUGIN_DIR}" lib/Makefile.am || die
+	# Add "lib/${PLUGIN_DIR}/Makefile" after lib/libv4l2rds/Makefile
+	sed -i -e "s:libv4l2rds/Makefile:&\n\tlib/${PLUGIN_DIR}/Makefile:" \
+		configure.ac || die
+	rm -rf include
+	eautoreconf
+}
+
+src_configure() {
+	econf \
+		--disable-static \
+		--disable-qv4l2 \
+		--disable-v4l-utils \
+		--without-jpeg
+}
+
+src_compile() {
+	emake -C lib/${PLUGIN_DIR}
+}
+
+src_install() {
+	emake -C lib/${PLUGIN_DIR} DESTDIR="${D}" install
+}
diff --git a/media-libs/libyuv-test/Manifest b/media-libs/libyuv-test/Manifest
new file mode 100644
index 0000000..f8a2378
--- /dev/null
+++ b/media-libs/libyuv-test/Manifest
@@ -0,0 +1 @@
+DIST libyuv-1774.tar.gz 489138 BLAKE2B 0a8098d85d24b292b31d64d988589d83393e8f9d9f8dd431b5f4735a275d6f8f9ce7c40569641968e15e12a19c04d61751ea739a1bc265bedf9551a53a4f6d4d SHA512 8013047910ca69681091c85262255189af9e08e9653395c5d0bf6395bf11bc5c9d443123c6a9312e56251b583f63f9ea416e403e0c42f3e47e0cdd28125c92c0
diff --git a/media-libs/libyuv-test/OWNERS b/media-libs/libyuv-test/OWNERS
new file mode 100644
index 0000000..77859aa
--- /dev/null
+++ b/media-libs/libyuv-test/OWNERS
@@ -0,0 +1 @@
+pmolinalopez@google.com
diff --git a/media-libs/libyuv-test/libyuv-test-1774-r1.ebuild b/media-libs/libyuv-test/libyuv-test-1774-r1.ebuild
new file mode 120000
index 0000000..a17bb5d
--- /dev/null
+++ b/media-libs/libyuv-test/libyuv-test-1774-r1.ebuild
@@ -0,0 +1 @@
+libyuv-test-1774.ebuild
\ No newline at end of file
diff --git a/media-libs/libyuv-test/libyuv-test-1774.ebuild b/media-libs/libyuv-test/libyuv-test-1774.ebuild
new file mode 100644
index 0000000..830e4b6
--- /dev/null
+++ b/media-libs/libyuv-test/libyuv-test-1774.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cmake-utils
+
+DESCRIPTION="YUV library"
+LIBRARY_NAME="libyuv"
+HOMEPAGE="https://chromium.googlesource.com/libyuv/libyuv"
+GIT_SHA1="fc61dde1eb4b7807201fa20cd0a7d023363558b2"
+SRC_URI="${HOMEPAGE}/+archive/${GIT_SHA1}.tar.gz -> ${LIBRARY_NAME}-${PV}.tar.gz"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+DEPEND="
+	dev-cpp/gtest:=
+	virtual/jpeg:0"
+
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}"
+
+src_configure() {
+	local mycmakeargs=(
+		-DCMAKE_INSTALL_PREFIX="/usr/lib"
+		-DCMAKE_BUILD_TYPE="Release"
+		-DTEST=ON
+	)
+
+	cmake-utils_src_configure
+}
+
+src_install() {
+	newbin "${BUILD_DIR}/libyuv_unittest" libyuv_perftest
+}
diff --git a/media-libs/libyuv/Manifest b/media-libs/libyuv/Manifest
index a49049b..f8a2378 100644
--- a/media-libs/libyuv/Manifest
+++ b/media-libs/libyuv/Manifest
@@ -1 +1 @@
-DIST libyuv-1732.tar.gz 452121 BLAKE2B 8e77ce3d5c5c01cd1a89d606bdaa5376a6182b599ba9806b0aa605d70b23ac5192fa30cf5380f5b241cca2e7bfe6015c92986d004a817dba9e4593cee19123e6 SHA512 c5384772d0d6815494c5d4fea0d5bd87e4799d75714f0bf31282d6d08e027bba71f6a215bad16467d8308d362f1e87047d637985d75d3f2740f8691016a8c95e
+DIST libyuv-1774.tar.gz 489138 BLAKE2B 0a8098d85d24b292b31d64d988589d83393e8f9d9f8dd431b5f4735a275d6f8f9ce7c40569641968e15e12a19c04d61751ea739a1bc265bedf9551a53a4f6d4d SHA512 8013047910ca69681091c85262255189af9e08e9653395c5d0bf6395bf11bc5c9d443123c6a9312e56251b583f63f9ea416e403e0c42f3e47e0cdd28125c92c0
diff --git a/media-libs/libyuv/OWNERS b/media-libs/libyuv/OWNERS
new file mode 100644
index 0000000..8f44c3e
--- /dev/null
+++ b/media-libs/libyuv/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/camera/OWNERS
diff --git a/media-libs/libyuv/files/Makefile b/media-libs/libyuv/files/Makefile
index 193614f..06e8c44 100644
--- a/media-libs/libyuv/files/Makefile
+++ b/media-libs/libyuv/files/Makefile
@@ -42,6 +42,7 @@
 	source/scale_neon.o        \
 	source/scale_neon64.o      \
 	source/scale_gcc.o         \
+	source/scale_uv.o          \
 	source/video_common.o
 
 $(eval $(call add_object_rules,$(LOCAL_OBJS),CXX,cc,CXXFLAGS))
diff --git a/media-libs/libyuv/libyuv-1732-r1.ebuild b/media-libs/libyuv/libyuv-1732-r1.ebuild
deleted file mode 100644
index ce1fa3e..0000000
--- a/media-libs/libyuv/libyuv-1732-r1.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit cros-debug toolchain-funcs
-
-DESCRIPTION="YUV library"
-HOMEPAGE="https://chromium.googlesource.com/libyuv/libyuv"
-GIT_SHA1="53b529e362cc09560c89840fd02ddb68ae3b11aa"
-SRC_URI="https://chromium.googlesource.com/libyuv/libyuv/+archive/${GIT_SHA1}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-DEPEND="virtual/jpeg:0"
-
-RDEPEND="${DEPEND}"
-S="${WORKDIR}"
-
-src_prepare() {
-	rsync -a "${FILESDIR}"/. "${S}"/.
-	eapply_user
-}
-
-src_compile() {
-	tc-export CC CXX AR RANLIB LD NM PKG_CONFIG
-	cros-debug-add-NDEBUG
-	emake
-}
-
-src_install() {
-	insinto /usr/include
-	doins include/*.h
-	insinto /usr/include/libyuv
-	doins include/libyuv/*.h
-
-	insinto /usr/$(get_libdir)
-	dolib.a libyuv.pic.a
-
-	sed -e "s:@LIB@:$(get_libdir):g" libyuv.pc.in > libyuv.pc || die
-	insinto /usr/$(get_libdir)/pkgconfig
-	doins libyuv.pc
-}
diff --git a/media-libs/libyuv/libyuv-1774-r5.ebuild b/media-libs/libyuv/libyuv-1774-r5.ebuild
new file mode 120000
index 0000000..b1d4453
--- /dev/null
+++ b/media-libs/libyuv/libyuv-1774-r5.ebuild
@@ -0,0 +1 @@
+libyuv-1774.ebuild
\ No newline at end of file
diff --git a/media-libs/libyuv/libyuv-1774.ebuild b/media-libs/libyuv/libyuv-1774.ebuild
new file mode 100644
index 0000000..fa9ed4b
--- /dev/null
+++ b/media-libs/libyuv/libyuv-1774.ebuild
@@ -0,0 +1,36 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit cros-common.mk cros-debug
+
+DESCRIPTION="YUV library"
+HOMEPAGE="https://chromium.googlesource.com/libyuv/libyuv"
+GIT_SHA1="fc61dde1eb4b7807201fa20cd0a7d023363558b2"
+SRC_URI="https://chromium.googlesource.com/libyuv/libyuv/+archive/${GIT_SHA1}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+DEPEND="virtual/jpeg:0"
+
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}"
+
+src_unpack() {
+	default
+	cp -a "${FILESDIR}"/* "${S}"/ || die
+}
+
+src_install() {
+	insinto /usr/include
+	doins -r include/*
+
+	dolib.a libyuv.pic.a
+
+	insinto /usr/$(get_libdir)/pkgconfig
+	sed -e "s:@LIB@:$(get_libdir):g" libyuv.pc.in | newins - libyuv.pc
+}
diff --git a/media-libs/mesa-amd/mesa-amd-20.2.4-r29.ebuild b/media-libs/mesa-amd/mesa-amd-20.2.4-r29.ebuild
deleted file mode 100644
index 2d427e0..0000000
--- a/media-libs/mesa-amd/mesa-amd-20.2.4-r29.ebuild
+++ /dev/null
@@ -1,131 +0,0 @@
-# Copyright 1999-2019 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.9.ebuild,v 1.3 2010/12/05 17:19:14 arfrever Exp $
-
-EAPI=6
-
-CROS_WORKON_COMMIT="2fa8f6edee78cdb1d4fb174072b234e5cd57c383"
-CROS_WORKON_TREE="33dcd0c41baeace97dffee0b895a64f93a033f3e"
-CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
-CROS_WORKON_LOCALNAME="mesa-amd"
-CROS_WORKON_EGIT_BRANCH="chromeos-amd"
-
-inherit base flag-o-matic meson toolchain-funcs cros-workon
-
-DESCRIPTION="The Mesa 3D Graphics Library"
-HOMEPAGE="http://mesa3d.org/"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="*"
-
-VIDEO_CARDS="intel amdgpu radeon freedreno llvmpipe"
-for card in ${VIDEO_CARDS}; do
-	IUSE_VIDEO_CARDS+=" video_cards_${card}"
-done
-
-IUSE="${IUSE_VIDEO_CARDS} debug vulkan"
-
-# keep correct libdrm and dri2proto dep
-# keep blocks in rdepend for binpkg
-RDEPEND="
-	virtual/libelf
-	dev-libs/expat
-	x11-libs/libdrm
-	!media-libs/mesa
-"
-
-DEPEND="${RDEPEND}
-	sys-devel/bison
-	sys-devel/flex
-	virtual/pkgconfig
-	x11-base/xorg-proto
-	x11-libs/libva
-	sys-devel/llvm
-"
-
-driver_list() {
-	local drivers="$(sort -u <<< "${1// /$'\n'}")"
-	echo "${drivers//$'\n'/,}"
-}
-
-src_configure() {
-	tc-getPROG PKG_CONFIG pkg-config
-
-	cros_optimize_package_for_speed
-
-	# Intel code
-	dri_driver_enable video_cards_intel i965
-
-	gallium_enable video_cards_llvmpipe swrast
-
-	# ATI code
-	gallium_enable video_cards_radeon r300 r600
-	gallium_enable video_cards_amdgpu radeonsi
-
-	# Freedreno code
-	gallium_enable video_cards_freedreno freedreno
-
-	if use vulkan; then
-		vulkan_enable video_cards_intel intel
-		vulkan_enable video_cards_amdgpu amd
-	fi
-
-	export LLVM_CONFIG=${SYSROOT}/usr/lib/llvm/bin/llvm-config-host
-
-	append-flags "-UENABLE_SHADER_CACHE"
-
-	emesonargs+=(
-		-Dglx=disabled
-		-Dllvm=true
-		-Dshared-llvm=false
-		-Dplatforms=surfaceless
-		-Degl=true
-		-Dgbm=false
-		-Dgl=false
-		-Dgles1=false
-		-Dgles2=true
-		-Ddri-drivers=$(driver_list "${DRI_DRIVERS[*]}")
-		-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}")
-		-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}")
-		--buildtype $(usex debug debug release)
-		-Dgallium-va=true
-		-Dva-libs-path="/usr/$(get_libdir)/va/drivers"
-	)
-
-	meson_src_configure
-}
-
-src_install() {
-	meson_src_install
-
-	# Remove redundant GLES headers
-	rm -f "${D}"/usr/include/{EGL,GLES2,GLES3,KHR}/*.h || die "Removing GLES headers failed."
-
-	# Set driconf option to enable S3TC hardware decompression
-	insinto "/etc/"
-	doins "${FILESDIR}"/drirc
-}
-
-# $1 - VIDEO_CARDS flag (check skipped for "--")
-# other args - names of DRI drivers to enable
-dri_driver_enable() {
-	if [[ $1 == -- ]] || use $1; then
-		shift
-		DRI_DRIVERS+=("$@")
-	fi
-}
-
-gallium_enable() {
-	if [[ $1 == -- ]] || use $1; then
-		shift
-		GALLIUM_DRIVERS+=("$@")
-	fi
-}
-
-vulkan_enable() {
-	if [[ $1 == -- ]] || use $1; then
-		shift
-		VULKAN_DRIVERS+=("$@")
-	fi
-}
diff --git a/media-libs/mesa-amd/mesa-amd-21.1.0-r48.ebuild b/media-libs/mesa-amd/mesa-amd-21.1.0-r48.ebuild
new file mode 100644
index 0000000..567ac1e
--- /dev/null
+++ b/media-libs/mesa-amd/mesa-amd-21.1.0-r48.ebuild
@@ -0,0 +1,131 @@
+# Copyright 1999-2019 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.9.ebuild,v 1.3 2010/12/05 17:19:14 arfrever Exp $
+
+EAPI=6
+
+CROS_WORKON_COMMIT="ae283c6c143ae77e7dedbf3f9ea7f2f3ad945f87"
+CROS_WORKON_TREE="cbc74a968f7dbca5312df2f7cb8af5ecadf471c5"
+CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_LOCALNAME="mesa-amd"
+CROS_WORKON_EGIT_BRANCH="chromeos-amd"
+
+inherit base flag-o-matic meson toolchain-funcs cros-workon
+
+DESCRIPTION="The Mesa 3D Graphics Library"
+HOMEPAGE="http://mesa3d.org/"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="*"
+
+VIDEO_CARDS="intel amdgpu radeon freedreno llvmpipe"
+for card in ${VIDEO_CARDS}; do
+	IUSE_VIDEO_CARDS+=" video_cards_${card}"
+done
+
+IUSE="${IUSE_VIDEO_CARDS} debug vulkan"
+
+# keep correct libdrm and dri2proto dep
+# keep blocks in rdepend for binpkg
+RDEPEND="
+	virtual/libelf
+	dev-libs/expat
+	x11-libs/libdrm
+	!media-libs/mesa
+"
+
+DEPEND="${RDEPEND}
+	sys-devel/bison
+	sys-devel/flex
+	virtual/pkgconfig
+	x11-base/xorg-proto
+	x11-libs/libva
+	sys-devel/llvm
+"
+
+driver_list() {
+	local drivers="$(sort -u <<< "${1// /$'\n'}")"
+	echo "${drivers//$'\n'/,}"
+}
+
+src_configure() {
+	tc-getPROG PKG_CONFIG pkg-config
+
+	cros_optimize_package_for_speed
+
+	# Intel code
+	dri_driver_enable video_cards_intel i965
+
+	gallium_enable video_cards_llvmpipe swrast
+
+	# ATI code
+	gallium_enable video_cards_radeon r300 r600
+	gallium_enable video_cards_amdgpu radeonsi
+
+	# Freedreno code
+	gallium_enable video_cards_freedreno freedreno
+
+	if use vulkan; then
+		vulkan_enable video_cards_intel intel
+		vulkan_enable video_cards_amdgpu amd
+	fi
+
+	export LLVM_CONFIG=${SYSROOT}/usr/lib/llvm/bin/llvm-config-host
+
+	append-flags "-UENABLE_SHADER_CACHE"
+
+	emesonargs+=(
+		-Dglx=disabled
+		-Dllvm=true
+		-Dshared-llvm=false
+		-Dplatforms=
+		-Degl=true
+		-Dgbm=false
+		-Dgl=false
+		-Dgles1=false
+		-Dgles2=true
+		-Ddri-drivers=$(driver_list "${DRI_DRIVERS[*]}")
+		-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}")
+		-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}")
+		--buildtype $(usex debug debug release)
+		-Dgallium-va=true
+		-Dva-libs-path="/usr/$(get_libdir)/va/drivers"
+	)
+
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	# Remove redundant GLES headers
+	rm -f "${D}"/usr/include/{EGL,GLES2,GLES3,KHR}/*.h || die "Removing GLES headers failed."
+
+	# Set driconf option to enable S3TC hardware decompression
+	insinto "/etc/"
+	doins "${FILESDIR}"/drirc
+}
+
+# $1 - VIDEO_CARDS flag (check skipped for "--")
+# other args - names of DRI drivers to enable
+dri_driver_enable() {
+	if [[ $1 == -- ]] || use $1; then
+		shift
+		DRI_DRIVERS+=("$@")
+	fi
+}
+
+gallium_enable() {
+	if [[ $1 == -- ]] || use $1; then
+		shift
+		GALLIUM_DRIVERS+=("$@")
+	fi
+}
+
+vulkan_enable() {
+	if [[ $1 == -- ]] || use $1; then
+		shift
+		VULKAN_DRIVERS+=("$@")
+	fi
+}
diff --git a/media-libs/mesa-amd/mesa-amd-9999.ebuild b/media-libs/mesa-amd/mesa-amd-9999.ebuild
index e7bc4a4..4645f4a 100644
--- a/media-libs/mesa-amd/mesa-amd-9999.ebuild
+++ b/media-libs/mesa-amd/mesa-amd-9999.ebuild
@@ -77,7 +77,7 @@
 		-Dglx=disabled
 		-Dllvm=true
 		-Dshared-llvm=false
-		-Dplatforms=surfaceless
+		-Dplatforms=
 		-Degl=true
 		-Dgbm=false
 		-Dgl=false
diff --git a/media-libs/mesa-freedreno/mesa-freedreno-21.0.0_pre-r38.ebuild b/media-libs/mesa-freedreno/mesa-freedreno-21.0.0_pre-r38.ebuild
deleted file mode 100644
index 605d0ac..0000000
--- a/media-libs/mesa-freedreno/mesa-freedreno-21.0.0_pre-r38.ebuild
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="88061634c9f65f4c9496c59e446acf71b862da17"
-CROS_WORKON_TREE="81076becad9df804deff46f52f64efa2f7f47288"
-CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
-CROS_WORKON_LOCALNAME="mesa-freedreno"
-CROS_WORKON_EGIT_BRANCH="chromeos-freedreno"
-
-KEYWORDS="*"
-
-inherit base meson flag-o-matic cros-workon
-
-DESCRIPTION="The Mesa 3D Graphics Library"
-HOMEPAGE="http://mesa3d.org/"
-
-# Most of the code is MIT/X11.
-# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
-LICENSE="MIT SGI-B-2.0"
-
-IUSE="debug vulkan"
-
-COMMON_DEPEND="
-	dev-libs/expat:=
-	>=x11-libs/libdrm-2.4.94:=
-"
-
-RDEPEND="${COMMON_DEPEND}
-"
-
-DEPEND="${COMMON_DEPEND}
-"
-
-BDEPEND="
-	sys-devel/bison
-	sys-devel/flex
-	virtual/pkgconfig
-"
-
-src_configure() {
-	emesonargs+=(
-		-Dllvm=disabled
-		-Ddri3=disabled
-		-Dshader-cache=disabled
-		-Dglx=disabled
-		-Degl=enabled
-		-Dgbm=disabled
-		-Dgles1=disabled
-		-Dgles2=enabled
-		-Dshared-glapi=enabled
-		-Ddri-drivers=
-		-Dgallium-drivers=freedreno
-		-Dgallium-vdpau=disabled
-		-Dgallium-xa=disabled
-		-Dplatforms=
-		-Dtools=freedreno
-		--buildtype $(usex debug debug release)
-		-Dvulkan-drivers=$(usex vulkan freedreno '')
-	)
-
-	meson_src_configure
-}
-
-src_install() {
-	meson_src_install
-
-	find "${ED}" -name '*kgsl*' -exec rm -f {} +
-	rm -v -rf "${ED}/usr/include"
-}
diff --git a/media-libs/mesa-freedreno/mesa-freedreno-21.2.0_pre-r49.ebuild b/media-libs/mesa-freedreno/mesa-freedreno-21.2.0_pre-r49.ebuild
new file mode 100644
index 0000000..9dae572
--- /dev/null
+++ b/media-libs/mesa-freedreno/mesa-freedreno-21.2.0_pre-r49.ebuild
@@ -0,0 +1,71 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="1cd57dc10179783f443e1c148bc144184250968e"
+CROS_WORKON_TREE="5e2d3eccd85d551dcd7d7bfa5dac28a8d680dc88"
+CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_LOCALNAME="mesa-freedreno"
+CROS_WORKON_EGIT_BRANCH="chromeos-freedreno"
+
+KEYWORDS="*"
+
+inherit base meson flag-o-matic cros-workon
+
+DESCRIPTION="The Mesa 3D Graphics Library"
+HOMEPAGE="http://mesa3d.org/"
+
+# Most of the code is MIT/X11.
+# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
+LICENSE="MIT SGI-B-2.0"
+
+IUSE="debug vulkan"
+
+COMMON_DEPEND="
+	dev-libs/expat:=
+	>=x11-libs/libdrm-2.4.94:=
+"
+
+RDEPEND="${COMMON_DEPEND}
+"
+
+DEPEND="${COMMON_DEPEND}
+"
+
+BDEPEND="
+	sys-devel/bison
+	sys-devel/flex
+	virtual/pkgconfig
+"
+
+src_configure() {
+	emesonargs+=(
+		-Dllvm=disabled
+		-Ddri3=disabled
+		-Dshader-cache=disabled
+		-Dglx=disabled
+		-Degl=enabled
+		-Dgbm=disabled
+		-Dgles1=disabled
+		-Dgles2=enabled
+		-Dshared-glapi=enabled
+		-Ddri-drivers=
+		-Dgallium-drivers=freedreno
+		-Dgallium-vdpau=disabled
+		-Dgallium-xa=disabled
+		-Dplatforms=
+		-Dtools=freedreno
+		--buildtype $(usex debug debug release)
+		-Dvulkan-drivers=$(usex vulkan freedreno '')
+	)
+
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	find "${ED}" -name '*kgsl*' -exec rm -f {} +
+	rm -v -rf "${ED}/usr/include"
+}
diff --git a/media-libs/mesa-img/files/0001-dri-pvr-Introduce-PowerVR-DRI-driver.patch b/media-libs/mesa-img/files/0001-dri-pvr-Introduce-PowerVR-DRI-driver.patch
index 20d5df1..6ddf83d 100644
--- a/media-libs/mesa-img/files/0001-dri-pvr-Introduce-PowerVR-DRI-driver.patch
+++ b/media-libs/mesa-img/files/0001-dri-pvr-Introduce-PowerVR-DRI-driver.patch
@@ -1,93 +1,57 @@
-From d5a215eef7e97fd08f7278b3c1c1ede68c346a6f Mon Sep 17 00:00:00 2001
+From 05e0f3464f02fe32327266a849f0391a6ad06a1d Mon Sep 17 00:00:00 2001
 From: Frank Binns <frank.binns@imgtec.com>
-Date: Wed, 3 Jul 2019 10:48:29 +0100
-Subject: [PATCH 01/10] dri/pvr: Introduce PowerVR DRI driver.
+Date: Tue, 14 Apr 2020 09:47:46 +0100
+Subject: [PATCH] Add pvr dri driver
 
-Change-Id: Ied94552937389a736124347d2f068b7066eff198
 ---
- configure.ac                              |    7 +
- meson.build                               |   19 +-
- meson_options.txt                         |    4 +-
- src/mesa/drivers/dri/Makefile.am          |    6 +
- src/mesa/drivers/dri/meson.build          |    3 +
- src/mesa/drivers/dri/pvr/Makefile.am      |   44 +
- src/mesa/drivers/dri/pvr/Makefile.sources |   36 +
- src/mesa/drivers/dri/pvr/dri_support.h    |  969 ++++++++++++++
- src/mesa/drivers/dri/pvr/img_drm_fourcc.h |  110 ++
- src/mesa/drivers/dri/pvr/imgpixfmts.h     |   80 ++
- src/mesa/drivers/dri/pvr/imgyuv.h         |   58 +
- src/mesa/drivers/dri/pvr/mesa_context.c   |  258 ++++
- src/mesa/drivers/dri/pvr/meson.build      |   48 +
- src/mesa/drivers/dri/pvr/pvrcompat.c      | 1383 ++++++++++++++++++++
- src/mesa/drivers/dri/pvr/pvrdrawable.c    |  542 ++++++++
- src/mesa/drivers/dri/pvr/pvrdri.c         | 1018 +++++++++++++++
- src/mesa/drivers/dri/pvr/pvrdri.h         |  388 ++++++
- src/mesa/drivers/dri/pvr/pvrext.c         |  440 +++++++
- src/mesa/drivers/dri/pvr/pvrimage.c       | 1420 +++++++++++++++++++++
- src/mesa/drivers/dri/pvr/pvrimage.h       |  131 ++
- src/mesa/drivers/dri/pvr/pvrmesa.h        |   41 +
- src/mesa/drivers/dri/pvr/pvrutil.c        | 1067 ++++++++++++++++
- src/meson.build                           |    1 +
- 23 files changed, 8064 insertions(+), 9 deletions(-)
- create mode 100644 src/mesa/drivers/dri/pvr/Makefile.am
- create mode 100644 src/mesa/drivers/dri/pvr/Makefile.sources
+ meson.build                                |   17 +-
+ meson_options.txt                          |    4 +-
+ src/mesa/drivers/dri/meson.build           |    5 +
+ src/mesa/drivers/dri/pvr/dri_support.h     | 1246 ++++++++++++++++
+ src/mesa/drivers/dri/pvr/img_drm_fourcc.h  |  113 ++
+ src/mesa/drivers/dri/pvr/imgpixfmts.h      |  307 ++++
+ src/mesa/drivers/dri/pvr/imgyuv.h          |   58 +
+ src/mesa/drivers/dri/pvr/mesa_context.c    |  203 +++
+ src/mesa/drivers/dri/pvr/meson.build       |   48 +
+ src/mesa/drivers/dri/pvr/pvrcb.c           |  269 ++++
+ src/mesa/drivers/dri/pvr/pvrcompat.c       | 1529 ++++++++++++++++++++
+ src/mesa/drivers/dri/pvr/pvrdrawable_mod.c |  384 +++++
+ src/mesa/drivers/dri/pvr/pvrdri.c          |  583 ++++++++
+ src/mesa/drivers/dri/pvr/pvrdri.h          |  171 +++
+ src/mesa/drivers/dri/pvr/pvrdri_mod.c      |  584 ++++++++
+ src/mesa/drivers/dri/pvr/pvrdri_mod.h      |  450 ++++++
+ src/mesa/drivers/dri/pvr/pvrdri_support.h  |  437 ++++++
+ src/mesa/drivers/dri/pvr/pvrext.c          |  701 +++++++++
+ src/mesa/drivers/dri/pvr/pvrext_mod.c      |  276 ++++
+ src/mesa/drivers/dri/pvr/pvrimage_mod.c    | 1282 ++++++++++++++++
+ src/mesa/drivers/dri/pvr/pvrmesa.h         |   36 +
+ src/mesa/drivers/dri/pvr/pvrutil.c         |  245 ++++
+ src/mesa/drivers/dri/pvr/pvrutil_mod.c     |  937 ++++++++++++
+ src/meson.build                            |    1 +
+ 24 files changed, 9878 insertions(+), 8 deletions(-)
  create mode 100644 src/mesa/drivers/dri/pvr/dri_support.h
  create mode 100644 src/mesa/drivers/dri/pvr/img_drm_fourcc.h
  create mode 100644 src/mesa/drivers/dri/pvr/imgpixfmts.h
  create mode 100644 src/mesa/drivers/dri/pvr/imgyuv.h
  create mode 100644 src/mesa/drivers/dri/pvr/mesa_context.c
  create mode 100644 src/mesa/drivers/dri/pvr/meson.build
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrcb.c
  create mode 100644 src/mesa/drivers/dri/pvr/pvrcompat.c
- create mode 100644 src/mesa/drivers/dri/pvr/pvrdrawable.c
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrdrawable_mod.c
  create mode 100644 src/mesa/drivers/dri/pvr/pvrdri.c
  create mode 100644 src/mesa/drivers/dri/pvr/pvrdri.h
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrdri_mod.c
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrdri_mod.h
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrdri_support.h
  create mode 100644 src/mesa/drivers/dri/pvr/pvrext.c
- create mode 100644 src/mesa/drivers/dri/pvr/pvrimage.c
- create mode 100644 src/mesa/drivers/dri/pvr/pvrimage.h
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrext_mod.c
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrimage_mod.c
  create mode 100644 src/mesa/drivers/dri/pvr/pvrmesa.h
  create mode 100644 src/mesa/drivers/dri/pvr/pvrutil.c
+ create mode 100644 src/mesa/drivers/dri/pvr/pvrutil_mod.c
 
-diff --git a/configure.ac b/configure.ac
-index f3c2c3040a1..2b3176abf26 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -89,6 +89,7 @@ LIBDRM_REQUIRED=2.4.75
- LIBDRM_RADEON_REQUIRED=2.4.71
- LIBDRM_AMDGPU_REQUIRED=2.4.97
- LIBDRM_INTEL_REQUIRED=2.4.75
-+LIBDRM_PVR_REQUIRED=2.4.60
- LIBDRM_NVVIEUX_REQUIRED=2.4.66
- LIBDRM_NOUVEAU_REQUIRED=2.4.66
- LIBDRM_ETNAVIV_REQUIRED=2.4.89
-@@ -2081,6 +2082,10 @@ if test -n "$with_dri_drivers"; then
-             HAVE_R200_DRI=yes
-             PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
-             ;;
-+        xpvr)
-+            HAVE_PVR_DRI=yes;
-+            PKG_CHECK_MODULES([PVR], [libdrm >= $LIBDRM_PVR_REQUIRED])
-+            ;;
-         xswrast)
-             HAVE_SWRAST_DRI=yes
-             ;;
-@@ -2993,6 +2998,7 @@ AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
- AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
- AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
- AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
-+AM_CONDITIONAL(HAVE_PVR_DRI, test x$HAVE_PVR_DRI = xyes)
- AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
- 
- AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes)
-@@ -3192,6 +3198,7 @@ AC_CONFIG_FILES([Makefile
-                  src/mesa/drivers/dri/nouveau/Makefile
-                  src/mesa/drivers/dri/r200/Makefile
-                  src/mesa/drivers/dri/radeon/Makefile
-+                 src/mesa/drivers/dri/pvr/Makefile
-                  src/mesa/drivers/dri/swrast/Makefile
-                  src/mesa/drivers/osmesa/Makefile
-                  src/mesa/drivers/osmesa/osmesa.pc
 diff --git a/meson.build b/meson.build
-index 50d2eec97ef..f8cf8ab6753 100644
+index 50d2eec97ef..49400adedc5 100644
 --- a/meson.build
 +++ b/meson.build
 @@ -96,9 +96,9 @@ if _drivers.contains('auto')
@@ -125,10 +89,9 @@
    ['radeon', (with_gallium_radeonsi or with_dri_r100 or with_dri_r200 or
 -              with_gallium_r300 or with_gallium_r600)],
 -  ['nouveau', (with_gallium_nouveau or with_dri_nouveau)],
--  ['etnaviv', with_gallium_etnaviv],
 +              with_gallium_r300 or with_gallium_r600), true],
 +  ['nouveau', (with_gallium_nouveau or with_dri_nouveau), true],
-+  ['etnaviv', with_gallium_etnaviv, true],
+   ['etnaviv', with_gallium_etnaviv],
 +  ['pvr', with_dri_pvr, false],
  ]
  
@@ -157,135 +120,28 @@
    description : 'List of dri drivers to build. If this is set to auto all drivers applicable to the target OS/architecture will be built'
  )
  option(
-diff --git a/src/mesa/drivers/dri/Makefile.am b/src/mesa/drivers/dri/Makefile.am
-index 3876d7c4192..15b0d5391d2 100644
---- a/src/mesa/drivers/dri/Makefile.am
-+++ b/src/mesa/drivers/dri/Makefile.am
-@@ -36,6 +36,12 @@ MEGADRIVERS_DEPS += radeon/libradeon_dri.la
- MEGADRIVERS += radeon_dri.so
- endif
- 
-+if HAVE_PVR_DRI
-+SUBDIRS += pvr
-+MEGADRIVERS_DEPS += pvr/libpvr_dri.la
-+MEGADRIVERS += pvr_dri.so
-+endif
-+
- if HAVE_SWRAST_DRI
- SUBDIRS += swrast
- MEGADRIVERS_DEPS += swrast/libswrast_dri.la
 diff --git a/src/mesa/drivers/dri/meson.build b/src/mesa/drivers/dri/meson.build
-index 0410a5a12ec..dcad331da0e 100644
+index 0410a5a12ec..fb677add239 100644
 --- a/src/mesa/drivers/dri/meson.build
 +++ b/src/mesa/drivers/dri/meson.build
-@@ -40,6 +40,9 @@ endif
+@@ -40,6 +40,11 @@ endif
  if with_dri_nouveau
    subdir('nouveau')
  endif
 +if with_dri_pvr
 +  subdir('pvr')
++  dri_drivers += libpvr
++  dri_link += 'pvr_dri.so'
 +endif
  
  if dri_drivers != []
    libmesa_dri_drivers = shared_library(
-diff --git a/src/mesa/drivers/dri/pvr/Makefile.am b/src/mesa/drivers/dri/pvr/Makefile.am
-new file mode 100644
-index 00000000000..681c13e6102
---- /dev/null
-+++ b/src/mesa/drivers/dri/pvr/Makefile.am
-@@ -0,0 +1,44 @@
-+#
-+# Copyright (c) Imagination Technologies Ltd.
-+#
-+# The contents of this file are subject to the MIT license as set out below.
-+#
-+# Permission is hereby granted, free of charge, to any person obtaining a copy
-+# of this software and associated documentation files (the "Software"), to deal
-+# in the Software without restriction, including without limitation the rights
-+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+# copies of the Software, and to permit persons to whom the Software is
-+# furnished to do so, subject to the following conditions:
-+#
-+# The above copyright notice and this permission notice shall be included in
-+# all copies or substantial portions of the Software.
-+#
-+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+# THE SOFTWARE.
-+#
-+
-+include Makefile.sources
-+
-+AM_CFLAGS = \
-+	-I$(top_srcdir)/include \
-+	-I$(top_srcdir)/src \
-+	-I$(top_srcdir)/src/mapi \
-+	-I$(top_srcdir)/src/mapi/glapi \
-+	-I$(top_srcdir)/src/mesa \
-+	-I$(top_srcdir)/src/mesa/main \
-+	-I$(top_srcdir)/src/mesa/drivers/dri/common \
-+	-I$(top_builddir)/src/mesa/main \
-+	$(DEFINES) \
-+	$(VISIBILITY_CFLAGS) \
-+	$(PVR_CFLAGS)
-+
-+AM_CXXFLAGS = $(AM_CFLAGS)
-+
-+noinst_LTLIBRARIES = libpvr_dri.la
-+libpvr_dri_la_SOURCES = $(pvr_FILES)
-+libpvr_dri_la_LIBADD = $(PVR_LIBS)
-diff --git a/src/mesa/drivers/dri/pvr/Makefile.sources b/src/mesa/drivers/dri/pvr/Makefile.sources
-new file mode 100644
-index 00000000000..6e0c8eb39f9
---- /dev/null
-+++ b/src/mesa/drivers/dri/pvr/Makefile.sources
-@@ -0,0 +1,36 @@
-+#
-+# Copyright (c) Imagination Technologies Ltd.
-+#
-+# The contents of this file are subject to the MIT license as set out below.
-+#
-+# Permission is hereby granted, free of charge, to any person obtaining a copy
-+# of this software and associated documentation files (the "Software"), to deal
-+# in the Software without restriction, including without limitation the rights
-+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+# copies of the Software, and to permit persons to whom the Software is
-+# furnished to do so, subject to the following conditions:
-+#
-+# The above copyright notice and this permission notice shall be included in
-+# all copies or substantial portions of the Software.
-+#
-+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+# THE SOFTWARE.
-+#
-+
-+pvr_INCLUDES = \
-+	$(MESA_TOP)/src \
-+	$(MESA_TOP)/src/mesa/drivers/dri/pvr
-+
-+pvr_FILES = \
-+ mesa_context.c \
-+ pvrcompat.c \
-+ pvrdrawable.c \
-+ pvrdri.c \
-+ pvrext.c \
-+ pvrimage.c \
-+ pvrutil.c
 diff --git a/src/mesa/drivers/dri/pvr/dri_support.h b/src/mesa/drivers/dri/pvr/dri_support.h
 new file mode 100644
-index 00000000000..fc5a8c47410
+index 00000000000..f7dd739fe03
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/dri_support.h
-@@ -0,0 +1,969 @@
+@@ -0,0 +1,1246 @@
 +/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
 +/* vi: set ts=8 sw=8 sts=8: */
 +/*************************************************************************/ /*!
@@ -395,6 +251,13 @@
 +	PVRDRI_CONFIG_ATTRIB_YUV_DEPTH_RANGE = 18,
 +	PVRDRI_CONFIG_ATTRIB_YUV_CSC_STANDARD = 19,
 +	PVRDRI_CONFIG_ATTRIB_YUV_PLANE_BPP = 20,
++
++	/* Valid for use with with PVRDRICallbacksV2 */
++	PVRDRI_CONFIG_ATTRIB_RED_MASK = 21,
++	PVRDRI_CONFIG_ATTRIB_GREEN_MASK = 22,
++	PVRDRI_CONFIG_ATTRIB_BLUE_MASK = 23,
++	PVRDRI_CONFIG_ATTRIB_ALPHA_MASK = 24,
++	PVRDRI_CONFIG_ATTRIB_SRGB_CAPABLE = 25
 +} PVRDRIConfigAttrib;
 +
 +typedef enum
@@ -464,6 +327,8 @@
 +#define PVRDRI_MESA_FORMAT_YCBCR		6
 +#define PVRDRI_MESA_FORMAT_YUV420_2PLANE	7
 +#define PVRDRI_MESA_FORMAT_YVU420_2PLANE	8
++#define PVRDRI_MESA_FORMAT_B8G8R8A8_SRGB	9
++#define PVRDRI_MESA_FORMAT_R8G8B8A8_SRGB	10
 +
 +/* The blit flags match their DRI counterparts */
 +#define PVRDRI_BLIT_FLAG_FLUSH		0x0001
@@ -475,7 +340,7 @@
 +#define	PVRDRI_IMAGE_TRANSFER_READ_WRITE	\
 +		(PVRDRI_IMAGE_TRANSFER_READ | PVRDRI_IMAGE_TRANSFER_WRITE)
 +
-+/* The YUV defines match their DRI counterparts */
++/* The PVRDRI_YUV defines match their __DRI_ATTRIB_YUV counterparts */
 +#define PVRDRI_YUV_ORDER_NONE 0x0
 +#define PVRDRI_YUV_ORDER_YUV  0x1
 +#define PVRDRI_YUV_ORDER_YVU  0x2
@@ -505,9 +370,9 @@
 +#define PVRDRI_YUV_PLANE_BPP_10   0x4
 +
 +/* Flags for PVRDRICallbacks.DrawableGetParametersV2 */
-+/* Since callback interface version 2 */
++/* Since PVRDRICallbacks version 2 */
 +#define PVRDRI_GETPARAMS_FLAG_ALLOW_RECREATE	0x1
-+/* Since callback interface version 3 */
++/* Since PVRDRICallbacks version 3 */
 +#define PVRDRI_GETPARAMS_FLAG_NO_UPDATE		0x2
 +
 +/*
@@ -518,7 +383,7 @@
 + */
 +#define	PVRDRI_FENCE_CAP_NATIVE_FD 0x1
 +
-+typedef struct 
++typedef struct
 +{
 +	IMG_PIXFMT          ePixFormat;
 +	uint32_t            uiWidth;
@@ -562,6 +427,7 @@
 +/* Since PVRDRICallbacks version 2 */
 +typedef struct PVRDRIConfigRec PVRDRIConfig;
 +
++/* PVRDRISupportInterface (deprecated) */
 +typedef struct {
 +	/**********************************************************************
 +	 * Version 0 interface
@@ -597,18 +463,18 @@
 +	                                        bool bFlushAllSurfaces,
 +	                                        bool bSwapBuffers,
 +	                                        bool bWaitForHW);
-+	/* EGLFreeResources is deprecated */
++	/* Obsolete (no longer supported) */
 +	bool                 (*EGLFreeResources)(PVRDRIScreenImpl *psPVRScreenImpl);
 +	void                 (*EGLMarkRendersurfaceInvalid)(PVRDRIAPIType eAPI,
 +	                                                    PVRDRIScreenImpl *psScreenImpl,
 +	                                                    PVRDRIContextImpl *psContextImpl);
-+	/* EGLSetFrontBufferCallback is deprecated */
++	/* Obsolete (no longer supported) */
 +	void                 (*EGLSetFrontBufferCallback)(PVRDRIAPIType eAPI,
 +	                                                  PVRDRIScreenImpl *psScreenImpl,
 +	                                                  PVRDRIDrawableImpl *psDrawableImpl,
 +	                                                  void (*pfnCallback)(PVRDRIDrawable *));
 +
-+	/* Deprecated in version 1 (since 1.10) */
++	/* Obsolete (no longer supported) */
 +	unsigned             (*CreateContext)(PVRDRIContextImpl **ppsContextImpl,
 +	                                          PVRDRIAPIType eAPI,
 +	                                          PVRDRIAPISubType eAPISub,
@@ -652,7 +518,7 @@
 +	                                        PVRDRIContextImpl *psContextImpl,
 +	                                        PVRDRIDrawableImpl *psDrawableImpl);
 +
-+	/* Deprecated in version 1 (since 1.10) */
++	/* Obsolete (no longer supported) */
 +	PVRDRIDrawableImpl  *(*CreateDrawable)(PVRDRIDrawable *psPVRDrawable);
 +
 +	void                 (*DestroyDrawable)(PVRDRIDrawableImpl *psScreenImpl);
@@ -691,6 +557,7 @@
 +	                                              const unsigned int *puiWidthShift,
 +	                                              const unsigned int *puiHeightShift);
 +
++	/* Obsolete (no longer supported) */
 +	PVRDRIBufferImpl    *(*BufferCreateFromName)(PVRDRIScreenImpl *psScreenImpl,
 +	                                             int iName,
 +	                                             int iWidth,
@@ -698,7 +565,7 @@
 +	                                             int iStride,
 +	                                             int iOffset);
 +
-+	/* BufferCreateFromFds is deprecated */
++	/* Obsolete (no longer supported) */
 +	PVRDRIBufferImpl    *(*BufferCreateFromFds)(PVRDRIScreenImpl *psScreenImpl,
 +	                                            int iWidth,
 +	                                            int iHeight,
@@ -770,10 +637,9 @@
 +	void                 (*DestroyFence)(void *psDRIFence);
 +
 +	/*
-+	 * Support for flushing commands in ClientWaitSync is deprecated
-+	 * in version 2 (since 1.11), with the caller being responsible
-+	 * for the flush. A context and API need not be supplied if a flush
-+	 * isn't requested.
++	 * When calling ClientWaitSync, the eAPI, psContextImpl and
++	 * bFlushCommands parameters must be set to PVRDRI_API_NONE,
++	 * NULL and false, respectively.
 +	 */
 +	bool                 (*ClientWaitSync)(PVRDRIAPIType eAPI,
 +	                                       PVRDRIContextImpl *psContextImpl,
@@ -786,11 +652,12 @@
 +	                                       PVRDRIContextImpl *psContextImpl,
 +	                                       void *psDRIFence);
 +
-+	/* Deprecated in version 2 (since 1.11) */
++	/* Obsolete (no longer supported) */
 +	void                 (*DestroyFences)(PVRDRIScreenImpl *psScreenImpl);
 +
 +	/* EGL interface functions */
-+	/* Deprecated in version 1 (since 1.10) */
++
++	/* Obsolete (no longer supported) */
 +	bool                 (*EGLDrawableConfigFromGLMode)(PVRDRIDrawableImpl *psPVRDrawable,
 +	                                                    PVRDRIConfigInfo *psConfigInfo,
 +	                                                    int supportedAPIs,
@@ -883,18 +750,16 @@
 +	int                  (*GetFenceFd)(void *psDRIFence);
 +} PVRDRISupportInterface;
 +
-+/* Callbacks into non-impl layer */
++/* Callbacks into non-impl layer (deprecated) */
 +typedef struct
 +{
 +	/**********************************************************************
 +	 * Version 0 callbacks
 +	 **********************************************************************/
 +
-+	/*
-+	 * DrawableRecreate and DrawableGetParameters are deprecated in
-+	 * version 1.
-+	 */
++	/* Obsolete (no longer supported) */
 +	bool                 (*DrawableRecreate)(PVRDRIDrawable *psPVRDrawable);
++	/* Obsolete (no longer supported) */
 +	bool                 (*DrawableGetParameters)(PVRDRIDrawable *psPVRDrawable,
 +	                                              PVRDRIBufferImpl **ppsDstBuffer,
 +	                                              PVRDRIBufferImpl **ppsAccumBuffer,
@@ -922,13 +787,7 @@
 +	 * Version 1 callbacks
 +	 **********************************************************************/
 +
-+	/*
-+	 * Deprecated in version 2 (since 1.10).
-+	 *
-+	 * DrawableGetParametersV1 is a replacement for DrawableRecreate
-+	 * and DrawableGetParameters. The DRI Support library must use one
-+	 * interface or the other, otherwise the results are undefined.
-+	 */
++	/* Obsolete (no longer supported) */
 +	bool                 (*DrawableGetParametersV1)(PVRDRIDrawable *psPVRDrawable,
 +                                                        bool bAllowRecreate,
 +	                                                PVRDRIBufferImpl **ppsDstBuffer,
@@ -971,296 +830,570 @@
 +} PVRDRICallbacks;
 +
 +/*
-+ * Older versions of the DRI support library don't support
-+ * PVRDRIRegisterVersionedCallbacks.
-+ * The caller is not required to preserve the PVRDRICallbacks structure
-+ * after the call, so the callee must make a copy.
++ * The caller of PVRDRIRegisterVersionedCallbacks is not required to preserve
++ * the PVRDRICallbacks structure after the call, so the callee may need to
++ * make a copy of the structure.
 + */
 +bool PVRDRIRegisterVersionedCallbacks(const PVRDRICallbacks *psCallbacks,
 +				      unsigned uVersion);
 +
-+/******************************************************************************
-+ * Everything beyond this point is deprecated
-+ ******************************************************************************/
++/* The context flags match their __DRI_CTX_RESET counterparts */
++#define PVRDRI_CONTEXT_RESET_NO_NOTIFICATION		0
++#define PVRDRI_CONTEXT_RESET_LOSE_CONTEXT		1
++
++/* The context flags match their __DRI_CTX_RELEASE counterparts */
++#define PVRDRI_CONTEXT_RELEASE_BEHAVIOR_NONE		0
++#define PVRDRI_CONTEXT_RELEASE_BEHAVIOR_FLUSH		1
++
++/* The flush flags match their __DRI2_FLUSH counterparts */
++#define	PVRDRI_FLUSH_DRAWABLE             (1 << 0)
++#define PVRDRI_FLUSH_CONTEXT              (1 << 1)
++#define PVRDRI_FLUSH_INVALIDATE_ANCILLARY (1 << 2)
++
++/* The throttle reason defines match their __DRI2_THROTTLE counterparts */
++#define PVRDRI_THROTTLE_SWAPBUFFER	0
++#define PVRDRI_THROTTLE_COPYSUBBUFFER	1
++#define PVRDRI_THROTTLE_FLUSHFRONT	2
++
++/* The render query defines match their __DRI2_RENDERER_HAS counterparts */
++#define PVRDRI_RENDERER_HAS_TEXTURE_3D			0x000b
++#define PVRDRI_RENDERER_HAS_FRAMEBUFFER_SRGB		0x000c
++
++#define PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY		0x000d
++#define PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_LOW	(1 << 0)
++#define PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_MEDIUM	(1 << 1)
++#define PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_HIGH	(1 << 2)
++
++#define PVRDRI_RENDERER_OPENGL_ES2_CONTEXT_CLIENT_VERSION_IMG 0x7001
++
++/* The fence extension defines match their __DRI2_FENCE counterparts */
++#define PVRDRI_FENCE_TIMEOUT_INFINITE		0xffffffffffffffffull
++#define PVRDRI_FENCE_FLAG_FLUSH_COMMANDS	(1 << 0)
++
++/* The YUV defines match their __DRI_YUV counterparts */
++#define PVRDRI_YUV_COLOR_SPACE_UNDEFINED	0
++#define PVRDRI_YUV_COLOR_SPACE_ITU_REC601	0x327F
++#define PVRDRI_YUV_COLOR_SPACE_ITU_REC709	0x3280
++#define PVRDRI_YUV_COLOR_SPACE_ITU_REC2020	0x3281
++
++#define PVRDRI_YUV_RANGE_UNDEFINED		0
++#define PVRDRI_YUV_FULL_RANGE			0x3282
++#define PVRDRI_YUV_NARROW_RANGE			0x3283
++
++#define PVRDRI_YUV_CHROMA_SITING_UNDEFINED	0
++#define PVRDRI_YUV_CHROMA_SITING_0		0x3284
++#define PVRDRI_YUV_CHROMA_SITING_0_5		0x3285
 +
 +/*
-+ * Calling PVRDRIRegisterCallbacks is equivalent to calling
-+ * PVRDRIRegisterVersionedCallbacks with a version number of zero.
-+ * The caller is not required to preserve the PVRDRICallbacks structure
-+ * after the call, so the callee must make a copy.
++ * The image component defines match their __DRI2_IMAGE_COMPONENTS
++ * counterparts.
 + */
-+void PVRDRIRegisterCallbacks(PVRDRICallbacks *callbacks);
++#define PVRDRI_IMAGE_COMPONENTS_RGB		0x3001
++#define PVRDRI_IMAGE_COMPONENTS_RGBA		0x3002
++#define PVRDRI_IMAGE_COMPONENTS_Y_U_V		0x3003
++#define PVRDRI_IMAGE_COMPONENTS_Y_UV		0x3004
++#define PVRDRI_IMAGE_COMPONENTS_Y_XUXV		0x3005
++#define PVRDRI_IMAGE_COMPONENTS_R		0x3006
++#define PVRDRI_IMAGE_COMPONENTS_RG		0x3007
++#define PVRDRI_IMAGE_COMPONENTS_Y_UXVX		0x3008
++#define PVRDRI_IMAGE_COMPONENTS_AYUV		0x3009
++#define PVRDRI_IMAGE_COMPONENTS_XYUV		0x300A
++#define PVRDRI_IMAGE_COMPONENTS_EXTERNAL	0x300B
 +
-+PVRDRIDeviceType PVRDRIGetDeviceTypeFromFd(int iFd);
++/*
++ * The image format modifier attribute defines match their
++ * __DRI_IMAGE_FORMAT_MODIFIER_ATTRIB counterparts.
++ */
++#define PVRDRI_IMAGE_FORMAT_MODIFIER_ATTRIB_PLANE_COUNT	0x0001
 +
-+bool PVRDRIIsFirstScreen(PVRDRIScreenImpl *psScreenImpl);
++/* The image attribute defines match their __DRI_IMAGE_ATTRIB counterparts */
++#define PVRDRI_IMAGE_ATTRIB_STRIDE		0x2000
++#define PVRDRI_IMAGE_ATTRIB_HANDLE		0x2001
++#define PVRDRI_IMAGE_ATTRIB_NAME		0x2002
++#define PVRDRI_IMAGE_ATTRIB_FORMAT		0x2003
++#define PVRDRI_IMAGE_ATTRIB_WIDTH		0x2004
++#define PVRDRI_IMAGE_ATTRIB_HEIGHT		0x2005
++#define PVRDRI_IMAGE_ATTRIB_COMPONENTS		0x2006
++#define PVRDRI_IMAGE_ATTRIB_FD			0x2007
++#define PVRDRI_IMAGE_ATTRIB_FOURCC		0x2008
++#define PVRDRI_IMAGE_ATTRIB_NUM_PLANES		0x2009
++#define PVRDRI_IMAGE_ATTRIB_OFFSET		0x200A
++#define PVRDRI_IMAGE_ATTRIB_MODIFIER_LOWER	0x200B
++#define PVRDRI_IMAGE_ATTRIB_MODIFIER_UPPER	0x200C
 +
-+uint32_t PVRDRIPixFmtGetDepth(IMG_PIXFMT eFmt);
-+uint32_t PVRDRIPixFmtGetBPP(IMG_PIXFMT eFmt);
-+uint32_t PVRDRIPixFmtGetBlockSize(IMG_PIXFMT eFmt);
++/* The GL defines match their EGL_GL counterparts */
++#define PVRDRI_GL_RENDERBUFFER			0x30B9
++#define PVRDRI_GL_TEXTURE_2D			0x30B1
++#define PVRDRI_GL_TEXTURE_3D			0x30B2
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_POSITIVE_X	0x30B3
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_NEGATIVE_X	0x30B4
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_POSITIVE_Y	0x30B5
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_NEGATIVE_Y	0x30B6
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_POSITIVE_Z	0x30B7
++#define PVRDRI_GL_TEXTURE_CUBE_MAP_NEGATIVE_Z	0x30B8
 +
-+/* ScreenImpl functions */
-+PVRDRIScreenImpl *PVRDRICreateScreenImpl(int iFd);
-+void PVRDRIDestroyScreenImpl(PVRDRIScreenImpl *psScreenImpl);
++/* The CL defines match their EGL_CL counterparts */
++#define PVRDRI_CL_IMAGE_IMG			0x6010
 +
-+int PVRDRIAPIVersion(PVRDRIAPIType eAPI,
-+		     PVRDRIAPISubType eAPISub,
-+		     PVRDRIScreenImpl *psScreenImpl);
++/* The swap attribute defines match their __DRI_ATTRIB_SWAP counterparts */
++#define PVRDRI_ATTRIB_SWAP_NONE			0x0000
++#define PVRDRI_ATTRIB_SWAP_EXCHANGE		0x8061
++#define PVRDRI_ATTRIB_SWAP_COPY			0x8062
++#define PVRDRI_ATTRIB_SWAP_UNDEFINED		0x8063
 +
-+void *PVRDRIEGLGetLibHandle(PVRDRIAPIType eAPI,
-+			    PVRDRIScreenImpl *psScreenImpl);
++struct __DRIscreenRec;
++struct __DRIcontextRec;
++struct __DRIdrawableRec;
++struct __DRIbufferRec;
++struct __DRIconfigRec;
 +
-+PVRDRIGLAPIProc PVRDRIEGLGetProcAddress(PVRDRIAPIType eAPI,
-+					  PVRDRIScreenImpl *psScreenImpl,
-+					  const char *psProcName);
++struct DRISUPScreen;
++struct DRISUPContext;
++struct DRISUPDrawable;
++struct DRISUPBuffer;
 +
-+bool PVRDRIEGLFlushBuffers(PVRDRIAPIType eAPI,
-+                           PVRDRIScreenImpl *psScreenImpl,
-+                           PVRDRIContextImpl *psContextImpl,
-+                           PVRDRIDrawableImpl *psDrawableImpl,
-+                           bool bFlushAllSurfaces,
-+                           bool bSwapBuffers,
-+                           bool bWaitForHW);
-+bool PVRDRIEGLFreeResources(PVRDRIScreenImpl *psPVRScreenImpl);
-+void PVRDRIEGLMarkRendersurfaceInvalid(PVRDRIAPIType eAPI,
-+                                       PVRDRIScreenImpl *psScreenImpl,
-+                                       PVRDRIContextImpl *psContextImpl);
-+void PVRDRIEGLSetFrontBufferCallback(PVRDRIAPIType eAPI,
-+                                        PVRDRIScreenImpl *psScreenImpl,
-+                                        PVRDRIDrawableImpl *psDrawableImpl,
-+                                        void (*pfnCallback)(PVRDRIDrawable *));
++struct PVRDRIContextConfig
++{
++	unsigned int uMajorVersion;
++	unsigned int uMinorVersion;
++	uint32_t uFlags;
 +
-+unsigned PVRDRICreateContextImpl(PVRDRIContextImpl **ppsContextImpl,
-+				 PVRDRIAPIType eAPI,
-+				 PVRDRIAPISubType eAPISub,
-+				 PVRDRIScreenImpl *psScreenImpl,
-+				 const PVRDRIConfigInfo *psConfigInfo,
-+				 unsigned uMajorVersion,
-+				 unsigned uMinorVersion,
-+				 uint32_t uFlags,
-+				 bool bNotifyReset,
-+				 unsigned uPriority,
-+				 PVRDRIContextImpl *psSharedContextImpl);
++	int iResetStrategy;
++	unsigned int uPriority;
++	int iReleaseBehavior;
++};
 +
-+void PVRDRIDestroyContextImpl(PVRDRIContextImpl *psContextImpl,
-+			      PVRDRIAPIType eAPI,
-+			      PVRDRIScreenImpl *psScreenImpl);
++/* The image capability defines match their __DRI_IMAGE_CAP counterparts */
++#define	PVRDRI_IMAGE_CAP_GLOBAL_NAMES	1
 +
-+bool PVRDRIMakeCurrentGC(PVRDRIAPIType eAPI,
-+			 PVRDRIScreenImpl *psScreenImpl,
-+			 PVRDRIContextImpl *psContextImpl,
-+			 PVRDRIDrawableImpl *psWriteImpl,
-+			 PVRDRIDrawableImpl *psReadImpl);
++/*
++ * PVR DRI Support interface V2.
++ * This structure may change over time, as older interfaces become obsolete.
++ * For example, the v0 interface may be removed if superseded by newer
++ * interfaces.
++ */
++struct  PVRDRISupportInterfaceV2
++{
++	struct
++	{
++		struct DRISUPScreen *(*CreateScreen)
++			(struct __DRIscreenRec *psDRIScreen,
++			 int iFD,
++			 bool bUseInvalidate,
++			 void *pvLoaderPrivate,
++			 const struct __DRIconfigRec ***pppsConfigs,
++			 int *piMaxGLES1Version,
++			 int *piMaxGLES2Version);
 +
-+void PVRDRIMakeUnCurrentGC(PVRDRIAPIType eAPI,
-+			   PVRDRIScreenImpl *psScreenImpl);
++		void (*DestroyScreen)
++			(struct DRISUPScreen *psDRISUPScreen);
 +
-+unsigned PVRDRIGetImageSource(PVRDRIAPIType eAPI,
-+			      PVRDRIScreenImpl *psScreenImpl,
-+			      PVRDRIContextImpl *psContextImpl,
-+			      uint32_t  uiTarget,
-+			      uintptr_t uiBuffer,
-+			      uint32_t  uiLevel,
-+			      IMGEGLImage *psEGLImage);
++		unsigned int (*CreateContext)
++			(PVRDRIAPIType eAPI,
++			 PVRDRIConfig *psPVRDRIConfig,
++			 struct PVRDRIContextConfig *psCtxConfig,
++			 struct __DRIcontextRec *psDRIContext,
++			 struct DRISUPContext *psDRISUPSharedContext,
++			 struct DRISUPScreen *psDRISUPScreen,
++			 struct DRISUPContext **ppsDRISUPContext);
 +
-+bool PVRDRI2BindTexImage(PVRDRIAPIType eAPI,
-+			 PVRDRIScreenImpl *psScreenImpl,
-+			 PVRDRIContextImpl *psContextImpl,
-+			 PVRDRIDrawableImpl *psDrawableImpl);
++		void (*DestroyContext)
++			(struct DRISUPContext *psDRISUPContext);
 +
-+void PVRDRI2ReleaseTexImage(PVRDRIAPIType eAPI,
-+			    PVRDRIScreenImpl *psScreenImpl,
-+			    PVRDRIContextImpl *psContextImpl,
-+			    PVRDRIDrawableImpl *psDrawableImpl);
++		struct DRISUPDrawable *(*CreateDrawable)
++			(struct __DRIdrawableRec *psDRIDrawable,
++			 struct DRISUPScreen *psDRISUPDrawable,
++			 void *pvLoaderPrivate,
++			 PVRDRIConfig *psPVRDRIConfig);
 +
-+/* DrawableImpl functions */
-+PVRDRIDrawableImpl *PVRDRICreateDrawableImpl(PVRDRIDrawable *psPVRDrawable);
-+void PVRDRIDestroyDrawableImpl(PVRDRIDrawableImpl *psScreenImpl);
-+bool PVREGLDrawableCreate(PVRDRIScreenImpl *psScreenImpl,
-+                          PVRDRIDrawableImpl *psDrawableImpl);
-+bool PVREGLDrawableRecreate(PVRDRIScreenImpl *psScreenImpl,
-+                            PVRDRIDrawableImpl *psDrawableImpl);
-+bool PVREGLDrawableDestroy(PVRDRIScreenImpl *psScreenImpl,
-+                           PVRDRIDrawableImpl *psDrawableImpl);
-+void PVREGLDrawableDestroyConfig(PVRDRIDrawableImpl *psDrawableImpl);
++		void (*DestroyDrawable)
++			(struct DRISUPDrawable *psDRISUPDrawable);
 +
-+/* Buffer functions */
-+PVRDRIBufferImpl *PVRDRIBufferCreate(PVRDRIScreenImpl *psScreenImpl,
-+				     int iWidth,
-+				     int iHeight,
-+				     unsigned int uiBpp,
-+				     unsigned int uiUseFlags,
-+				     unsigned int *puiStride);
++		bool (*MakeCurrent)
++			(struct DRISUPContext *psDRISUPContext,
++			 struct DRISUPDrawable *psDRISUPWrite,
++			 struct DRISUPDrawable *psDRISUPRead);
 +
-+PVRDRIBufferImpl *
-+PVRDRIBufferCreateWithModifiers(PVRDRIScreenImpl *psScreenImpl,
-+			        int iWidth,
-+			        int iHeight,
-+			        int iFormat,
-+				IMG_PIXFMT eIMGPixelFormat,
-+			        const uint64_t *puiModifiers,
-+			        unsigned int uiModifierCount,
-+			        unsigned int *puiStride);
++		bool (*UnbindContext)
++			(struct DRISUPContext *psDRISUPContext);
 +
-+PVRDRIBufferImpl *PVRDRIBufferCreateFromNames(PVRDRIScreenImpl *psScreenImpl,
-+					   int iWidth,
-+					   int iHeight,
-+					   unsigned uiNumPlanes,
-+					   const int *piName,
-+					   const int *piStride,
-+					   const int *piOffset,
-+					   const unsigned int *puiWidthShift,
-+					   const unsigned int *puiHeightShift);
++		struct DRISUPBuffer *(*AllocateBuffer)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 unsigned int uAttachment,
++			 unsigned int uFormat,
++			 int iWidth,
++			 int iHeight,
++			 unsigned int *puName,
++			 unsigned int *puPitch,
++			 unsigned int *puCPP,
++			 unsigned int *puFlags);
 +
-+PVRDRIBufferImpl *PVRDRIBufferCreateFromName(PVRDRIScreenImpl *psScreenImpl,
-+					     int iName,
-+					     int iWidth,
-+					     int iHeight,
-+					     int iStride,
-+					     int iOffset);
++		void (*ReleaseBuffer)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 struct DRISUPBuffer *psDRISUPBuffer);
 +
-+PVRDRIBufferImpl *PVRDRIBufferCreateFromFds(PVRDRIScreenImpl *psScreenImpl,
-+					   int iWidth,
-+					   int iHeight,
-+					   unsigned uiNumPlanes,
-+					   const int *piFd,
-+					   const int *piStride,
-+					   const int *piOffset,
-+					   const unsigned int *puiWidthShift,
-+					   const unsigned int *puiHeightShift);
++		/* Functions to support the DRI TexBuffer extension */
++		void (*SetTexBuffer2)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iTarget,
++			 int iFormat,
++			 struct DRISUPDrawable *psDRISUPDrawable);
 +
-+PVRDRIBufferImpl *
-+PVRDRIBufferCreateFromFdsWithModifier(PVRDRIScreenImpl *psScreenImpl,
-+				      int iWidth,
-+				      int iHeight,
-+				      uint64_t uiModifier,
-+				      unsigned uiNumPlanes,
-+				      const int *piFd,
-+				      const int *piStride,
-+				      const int *piOffset,
-+				      const unsigned int *puiWidthShift,
-+				      const unsigned int *puiHeightShift);
++		void (*ReleaseTexBuffer)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iTarget,
++			 struct DRISUPDrawable *psDRISUPDrawable);
 +
-+PVRDRIBufferImpl *PVRDRISubBufferCreate(PVRDRIScreenImpl *psScreen,
-+					PVRDRIBufferImpl *psParent,
-+					int plane);
++		/* Functions to support the DRI Flush extension */
++		void (*Flush)
++			(struct DRISUPDrawable *psDRISUPDrawable);
 +
-+void PVRDRIBufferDestroy(PVRDRIBufferImpl *psBuffer);
++		void (*Invalidate)
++			(struct DRISUPDrawable *psDRISUPDrawable);
 +
-+int PVRDRIBufferGetFd(PVRDRIBufferImpl *psBuffer);
++		void (*FlushWithFlags)
++			(struct DRISUPContext *psDRISUPContext,
++			 struct DRISUPDrawable *psDRISUPDrawable,
++			 unsigned int uFlags,
++			 unsigned int uThrottleReason);
 +
-+int PVRDRIBufferGetHandle(PVRDRIBufferImpl *psBuffer);
++		/* Functions to support the DRI Image extension */
++		__DRIimage *(*CreateImageFromName)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 int iName,
++			 int iPitch,
++			 void *pvLoaderPrivate);
 +
-+uint64_t PVRDRIBufferGetModifier(PVRDRIBufferImpl *psBuffer);
++		__DRIimage *(*CreateImageFromRenderbuffer)
++			(struct DRISUPContext *psDRISUPContext,
++			int iRenderBuffer,
++			void *pvLoaderPrivate);
 +
-+int PVRDRIBufferGetName(PVRDRIBufferImpl *psBuffer);
++		void (*DestroyImage)
++			(__DRIimage *psImage);
 +
-+int PVRDRIBufferGetOffset(PVRDRIBufferImpl *psBuffer);
++		__DRIimage *(*CreateImage)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 unsigned int uUse,
++			 void *pvLoaderPrivate);
 +
-+/* Image functions */
-+IMGEGLImage *PVRDRIEGLImageCreate(void);
-+IMGEGLImage *PVRDRIEGLImageCreateFromBuffer(int iWidth,
-+					   int iHeight,
-+					   int iStride,
-+					   IMG_PIXFMT ePixelFormat,
-+					   IMG_YUV_COLORSPACE eColourSpace,
-+					   IMG_YUV_CHROMA_INTERP eChromaUInterp,
-+					   IMG_YUV_CHROMA_INTERP eChromaVInterp,
-+					   PVRDRIBufferImpl *psBuffer);
++		bool (*QueryImage)
++			(__DRIimage *psImage,
++			 int iAttrib,
++			 int *iValue);
 +
-+IMGEGLImage *PVRDRIEGLImageCreateFromSubBuffer(IMG_PIXFMT ePixelFormat,
-+					       PVRDRIBufferImpl *psSubBuffer);
++		__DRIimage *(*DupImage)
++			(__DRIimage *psImage,
++			 void *pvLoaderPrivate);
 +
-+IMGEGLImage *PVRDRIEGLImageDup(IMGEGLImage *psIn);
++		bool (*ValidateImageUsage)
++			(__DRIimage *psImage,
++			 unsigned int uUse);
 +
-+void PVRDRIEGLImageSetCallbackData(IMGEGLImage *psEGLImage, __DRIimage *image);
++		__DRIimage *(*CreateImageFromNames)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 int *piNames,
++			 int iNumNames,
++			 int *piStrides,
++			 int *piOffsets,
++			 void *pvLoaderPrivate);
++			 __DRIimage *(*FromPlanar)(__DRIimage *psImage,
++			 int iPlane,
++			 void *pvLoaderPrivate);
 +
-+void PVRDRIEGLImageDestroyExternal(PVRDRIScreenImpl *psScreenImpl,
-+                                   IMGEGLImage *psEGLImage,
-+				   PVRDRIEGLImageType eglImageType);
-+void PVRDRIEGLImageFree(IMGEGLImage *psEGLImage);
++		__DRIimage *(*CreateImageFromTexture)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iTarget,
++			 unsigned int uTexture,
++			 int iDepth,
++			 int iLevel,
++			 unsigned int *puError,
++			 void *pvLoaderPrivate);
 +
-+void PVRDRIEGLImageGetAttribs(IMGEGLImage *psEGLImage, PVRDRIBufferAttribs *psAttribs);
++		__DRIimage *(*CreateImageFromFDs)
++			(struct DRISUPScreen *psDRISUPcreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 int *piFDs,
++			 int iNumFDs,
++			 int *piStrides,
++			 int *piOffsets,
++			 void *pvLoaderPrivate);
 +
-+/* Sync functions */
-+void *PVRDRICreateFenceImpl(PVRDRIAPIType eAPI,
-+			    PVRDRIScreenImpl *psScreenImpl,
-+			    PVRDRIContextImpl *psContextImpl);
++		__DRIimage *(*CreateImageFromDMABufs)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 int *piFDs,
++			 int iNumFDs,
++			 int *piStrides,
++			 int *piOffsets,
++			 unsigned int uColorSpace,
++			 unsigned int uSampleRange,
++			 unsigned int uHorizSiting,
++			 unsigned int uVertSiting,
++			 unsigned int *puError,
++			 void *pvLoaderPrivate);
 +
-+void PVRDRIDestroyFenceImpl(void *psDRIFence);
++		int (*GetImageCapabilities)
++			(struct DRISUPScreen *psDRISUPScreen);
 +
-+bool PVRDRIClientWaitSyncImpl(PVRDRIAPIType eAPI,
-+			      PVRDRIContextImpl *psContextImpl,
-+			      void *psDRIFence,
-+			      bool bFlushCommands,
-+			      bool bTimeout,
-+			      uint64_t uiTimeout);
++		void (*BlitImage)
++			(struct DRISUPContext *psDRISUPContext,
++			 __DRIimage *psDst,
++			 __DRIimage *psSrc,
++			 int iDstX0,
++			 int iDstY0,
++			 int iDstWidth,
++			 int iDstHeight,
++			 int iSrcX0, int
++			 iSrcY0,
++			 int iSrcWidth,
++			 int iSrcHeight,
++			 int iFlushFlag);
 +
-+bool PVRDRIServerWaitSyncImpl(PVRDRIAPIType eAPI,
-+			      PVRDRIContextImpl *psContextImpl,
-+			      void *psDRIFence);
++		void *(*MapImage)
++			(struct DRISUPContext *psDRISUPContext,
++			 __DRIimage *psImage,
++			 int iX0,
++			 int iY0,
++			 int iWidth,
++			 int iHeight,
++			 unsigned int uFlags,
++			 int *piStride,
++			 void **ppvData);
 +
-+void PVRDRIDestroyFencesImpl(PVRDRIScreenImpl *psScreenImpl);
-+
-+/* EGL interface functions */
-+bool PVRDRIEGLDrawableConfigFromGLMode(PVRDRIDrawableImpl *psPVRDrawable,
-+				       PVRDRIConfigInfo *psConfigInfo,
-+				       int supportedAPIs,
-+				       IMG_PIXFMT ePixFmt);
-+
-+/* Blit functions */
-+bool PVRDRIBlitEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+		        PVRDRIContextImpl *psContextImpl,
-+			IMGEGLImage *psDstImage, PVRDRIBufferImpl *psDstBuffer,
-+			IMGEGLImage *psSrcImage, PVRDRIBufferImpl *psSrcBuffer,
-+			int iDstX, int iDstY, int iDstWidth, int iDstHeight,
-+			int iSrcX, int iSrcY, int iSrcWidth, int iSrcHeight,
-+			int iFlushFlag);
-+
-+/* Mapping functions */
-+void *PVRDRIMapEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+			PVRDRIContextImpl *psContextImpl,
-+			IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
-+			int iX, int iY, int iWidth, int iHeight,
-+			unsigned uiFlags, int *piStride, void **ppvData);
-+
-+bool PVRDRIUnmapEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+			 PVRDRIContextImpl *psContextImpl,
-+			 IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
++		void (*UnmapImage)
++			(struct DRISUPContext *psDRISUPContext,
++			 __DRIimage *psImage,
 +			 void *pvData);
 +
-+/* PVR utility support functions */
-+bool PVRDRIMesaFormatSupported(unsigned fmt);
-+unsigned PVRDRIDepthStencilBitArraySize(void);
-+const uint8_t *PVRDRIDepthBitsArray(void);
-+const uint8_t *PVRDRIStencilBitsArray(void);
-+unsigned PVRDRIMSAABitArraySize(void);
-+const uint8_t *PVRDRIMSAABitsArray(void);
-+uint32_t PVRDRIMaxPBufferWidth(void);
-+uint32_t PVRDRIMaxPBufferHeight(void);
++		__DRIimage *(*CreateImageWithModifiers)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 const uint64_t *puModifiers,
++			 const unsigned int uModifierCount,
++			 void *pvLoaderPrivate);
 +
-+unsigned PVRDRIGetNumAPIFuncs(PVRDRIAPIType eAPI);
-+const char *PVRDRIGetAPIFunc(PVRDRIAPIType eAPI, unsigned index);
++		__DRIimage *(*CreateImageFromDMABufs2)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iWidth,
++			 int iHeight,
++			 int iFourCC,
++			 uint64_t uModifier,
++			 int *piFDs,
++			 int iNumFDs,
++			 int *piStrides,
++			 int *piOffsets,
++			 unsigned int uColorSpace,
++			 unsigned int uSampleRange,
++			 unsigned int uHorizSiting,
++			 unsigned int uVertSiting,
++			 unsigned int *puError,
++			 void *pvLoaderPrivate);
 +
-+int PVRDRIQuerySupportedFormats(PVRDRIScreenImpl *psScreenImpl,
-+				unsigned uNumFormats,
-+				const int *piFormats,
-+				const IMG_PIXFMT *peImgFormats,
-+				bool *pbSupported);
++		bool (*QueryDMABufFormats)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iMax,
++			 int *piFormats,
++			 int *piCount);
 +
-+int PVRDRIQueryModifiers(PVRDRIScreenImpl *psScreenImpl,
-+			 int iFormat,
-+			 IMG_PIXFMT eImgFormat,
++		bool (*QueryDMABufModifiers)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iFourCC,
++			 int iMax,
 +			 uint64_t *puModifiers,
-+			 unsigned *puExternalOnly);
++			 unsigned int *piExternalOnly,
++			 int *piCount);
++
++		bool (*QueryDMABufFormatModifierAttribs)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 uint32_t uFourcc,
++			 uint64_t uModifier,
++			 int iAttrib,
++			 uint64_t *puValue);
++
++		__DRIimage *(*CreateImageFromRenderBuffer2)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iRenderBuffer,
++			 void *pvLoaderPrivate,
++			 unsigned int *puError);
++
++		__DRIimage *(*CreateImageFromBuffer)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iTarget,
++			 void *pvBuffer,
++			 unsigned int *puError,
++			 void *pvLoaderPrivate);
++
++		/* Functions to support the DRI Renderer Query extension */
++		int (*QueryRendererInteger)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iAttribute,
++			 unsigned int *puValue);
++
++		int (*QueryRendererString)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 int iAttribute,
++			 const char **ppszValue);
++
++		/* Functions to support the DRI Fence extension */
++		void *(*CreateFence)
++			(struct DRISUPContext *psDRISUPContext);
++
++		void (*DestroyFence)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 void *pvFence);
++
++		bool (*ClientWaitSync)
++			(struct DRISUPContext *psDRISUPContext,
++			 void *pvFence,
++			 unsigned int uFlags,
++			 uint64_t uTimeout);
++
++		void (*ServerWaitSync)
++			(struct DRISUPContext *psDRISUPContext,
++			 void *pvFence,
++			 unsigned int uFlags);
++
++		unsigned int (*GetFenceCapabilities)
++			(struct DRISUPScreen *psDRISUPScreen);
++
++		void *(*CreateFenceFD)
++			(struct DRISUPContext *psDRISUPContext,
++			 int iFD);
++
++		int (*GetFenceFD)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 void *pvFence);
++
++		unsigned int (*GetNumAPIProcs)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 PVRDRIAPIType eAPI);
++
++		const char *(*GetAPIProcName)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 PVRDRIAPIType eAPI,
++			 unsigned int uIndex);
++
++		void *(*GetAPIProcAddress)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 PVRDRIAPIType eAPI,
++			 unsigned int uIndex);
++
++		void (*SetDamageRegion)
++			(struct DRISUPDrawable *psDRISUPDrawable,
++			 unsigned int uNRects,
++			 int *piRects);
++	} v0;
++	/* The v1 interface is an extension of v0, so v0 is required as well */
++	struct {
++		void *(*GetFenceFromCLEvent)
++			(struct DRISUPScreen *psDRISUPScreen,
++			 intptr_t iCLEvent);
++	} v1;
++};
++
++/*
++ * Buffer mask values for the GetBuffers callback. These are the same as
++ * their enum __DRIimageBufferMask counterparts.
++ */
++#define PVRDRI_IMAGE_BUFFER_BACK	(1U << 0)
++#define PVRDRI_IMAGE_BUFFER_FRONT	(1U << 1)
++#define PVRDRI_IMAGE_BUFFER_PREV	(1U << 31)
++
++struct PVRDRIImageList {
++	uint32_t uImageMask;
++	__DRIimage *psBack;
++	__DRIimage *psFront;
++	__DRIimage *psPrev;
++};
++
++/* The loader capabilities defines match their dri_loader_cap counterparts */
++#define	PVRDRI_LOADER_CAP_RGBA_ORDERING	0
++
++/*
++ * PVR DRI Support callback interface V2.
++ * This structure may change over time, as older interfaces become obsolete.
++ * For example, the v0 interface may be removed if superseded by newer
++ * interfaces.
++ */
++struct PVRDRICallbacksV2
++{
++	struct {
++		bool (*RegisterSupportInterface)
++			(const void *psInterface,
++			 unsigned int uVersion,
++			 unsigned int uMinVersion);
++
++		int (*GetBuffers)
++			(struct __DRIdrawableRec *psDRIDrawable,
++			 unsigned int uFourCC,
++			 uint32_t *puStamp,
++			 void *pvLoaderPrivate,
++			 uint32_t uBufferMask,
++			 struct PVRDRIImageList *psImageList);
++
++		bool (*CreateConfigs)
++			(struct __DRIconfigRec ***pppsConfigs,
++			 struct __DRIscreenRec *psDRIScreen,
++			 int iPVRDRIMesaFormat,
++			 const uint8_t *puDepthBits,
++			 const uint8_t *puStencilBits,
++			 unsigned int uNumDepthStencilBits,
++			 const unsigned int *puDBModes,
++			 unsigned int uNumDBModes,
++			 const uint8_t *puMSAASamples,
++			 unsigned int uNumMSAAModes,
++			 bool bEnableAccum,
++			 bool bColorDepthMatch,
++			 bool bMutableRenderBuffer,
++			 int iYUVDepthRange,
++			 int iYUVCSCStandard,
++			 uint32_t uMaxPbufferWidth,
++			 uint32_t uMaxPbufferHeight);
++
++		struct __DRIconfigRec **(*ConcatConfigs)
++			(struct __DRIscreenRec *psDRIScreen,
++			 struct __DRIconfigRec **ppsConfigA,
++			 struct __DRIconfigRec **ppsConfigB);
++
++		bool (*ConfigQuery)
++			(const PVRDRIConfig *psConfig,
++			 PVRDRIConfigAttrib eConfigAttrib,
++			 unsigned int *puValueOut);
++
++		__DRIimage *(*LookupEGLImage)
++			(struct __DRIscreenRec *psDRIScreen,
++			 void *pvImage,
++			 void *pvLoaderPrivate);
++
++		unsigned int (*GetCapability)
++			(struct __DRIscreenRec *psDRIScreen,
++			 unsigned int uCapability);
++	} v0;
++};
 +
 +#endif /* defined(__PVRDRIIFCE_H__) */
 diff --git a/src/mesa/drivers/dri/pvr/img_drm_fourcc.h b/src/mesa/drivers/dri/pvr/img_drm_fourcc.h
 new file mode 100644
-index 00000000000..b023ef231cc
+index 00000000000..8d570ff8f53
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/img_drm_fourcc.h
-@@ -0,0 +1,110 @@
+@@ -0,0 +1,113 @@
 +/*************************************************************************/ /*!
 +@File
 +@Title          Wrapper around drm_fourcc.h
@@ -1318,7 +1451,8 @@
 +#endif
 +
 +/*
-+ * Upstream doesn't have a floating point format yet, so we invent one.
++ * Upstream doesn't have a floating point format yet, so let's make one
++ * up.
 + * Note: The kernel's core DRM needs to know about this format,
 + * otherwise it won't be supported and should not be exposed by our
 + * kernel modules either.
@@ -1330,7 +1464,7 @@
 +
 +/*
 + * Upstream does not have a packed 10 Bits Per Channel YVU format yet,
-+ * so we invent one.
++ * so let`s make one up.
 + * Note: at the moment this format is not intended to be used with
 + *       a framebuffer, so the kernels core DRM doesn`t need to know
 + *       about this format. This means that the kernel doesn`t need
@@ -1338,6 +1472,8 @@
 + */
 +#if !defined(__KERNEL__)
 +#define DRM_FORMAT_YVU444_PACK10_IMG fourcc_code('I', 'M', 'G', '2')
++#define DRM_FORMAT_YUV422_2PLANE_PACK10_IMG fourcc_code('I', 'M', 'G', '3')
++#define DRM_FORMAT_YUV420_2PLANE_PACK10_IMG fourcc_code('I', 'M', 'G', '4')
 +#endif
 +
 +/*
@@ -1373,13 +1509,12 @@
 +#endif /* IMG_DRM_FOURCC_H */
 diff --git a/src/mesa/drivers/dri/pvr/imgpixfmts.h b/src/mesa/drivers/dri/pvr/imgpixfmts.h
 new file mode 100644
-index 00000000000..9e70a960636
+index 00000000000..da12a0fb5f6
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/imgpixfmts.h
-@@ -0,0 +1,80 @@
+@@ -0,0 +1,307 @@
 +/*************************************************************************/ /*!
-+@File
-+@Title          Pixel formats
++@File           imgpixfmts.h
 +@Copyright      Copyright (c) Imagination Technologies Ltd. All Rights Reserved
 +@License        MIT
 +
@@ -1404,37 +1539,189 @@
 +THE SOFTWARE.
 +*/ /**************************************************************************/
 +
-+/****************************************************************************
++/******************************************************************************
 + **
-+ ** WARNING: This file is autogenerated - DO NOT EDIT.
++ ** WARNING: File is autogenerated by parsesystable.py - DO NOT EDIT.
++ ** Use fmts_systable.txt to add new formats.
 + **
-+ ** See fmts_systable.txt to add new formats.
-+ ****************************************************************************/
++ *****************************************************************************/
 +
-+#if !defined(_IMGPIXFMTS_H_)
-+#define _IMGPIXFMTS_H_
++#if !defined(IMGPIXFMTS_H)
++#define IMGPIXFMTS_H
 +
 +typedef enum _IMG_PIXFMT_
 +{
 +	IMG_PIXFMT_UNKNOWN = 0,
++	IMG_PIXFMT_RESERVED_1 = 1,
++	IMG_PIXFMT_RESERVED_2 = 2,
++	IMG_PIXFMT_RESERVED_3 = 3,
++	IMG_PIXFMT_RESERVED_4 = 4,
++	IMG_PIXFMT_RESERVED_5 = 5,
++	IMG_PIXFMT_RESERVED_6 = 6,
++	IMG_PIXFMT_RESERVED_7 = 7,
++	IMG_PIXFMT_RESERVED_8 = 8,
++	IMG_PIXFMT_RESERVED_9 = 9,
++	IMG_PIXFMT_RESERVED_10 = 10,
++	IMG_PIXFMT_RESERVED_11 = 11,
++	IMG_PIXFMT_RESERVED_12 = 12,
++	IMG_PIXFMT_RESERVED_13 = 13,
++	IMG_PIXFMT_RESERVED_14 = 14,
++	IMG_PIXFMT_RESERVED_15 = 15,
++	IMG_PIXFMT_RESERVED_16 = 16,
++	IMG_PIXFMT_RESERVED_17 = 17,
++	IMG_PIXFMT_RESERVED_18 = 18,
++	IMG_PIXFMT_RESERVED_19 = 19,
++	IMG_PIXFMT_RESERVED_20 = 20,
++	IMG_PIXFMT_RESERVED_21 = 21,
++	IMG_PIXFMT_RESERVED_22 = 22,
++	IMG_PIXFMT_RESERVED_23 = 23,
++	IMG_PIXFMT_RESERVED_24 = 24,
 +	IMG_PIXFMT_R10G10B10A2_UNORM = 25,
++	IMG_PIXFMT_RESERVED_26 = 26,
++	IMG_PIXFMT_RESERVED_27 = 27,
++	IMG_PIXFMT_B10G10R10A2_UNORM = 28,
++	IMG_PIXFMT_RESERVED_29 = 29,
++	IMG_PIXFMT_RESERVED_30 = 30,
++	IMG_PIXFMT_RESERVED_31 = 31,
 +	IMG_PIXFMT_R8G8B8A8_UNORM = 32,
++	IMG_PIXFMT_R8G8B8A8_UNORM_SRGB = 33,
++	IMG_PIXFMT_RESERVED_34 = 34,
++	IMG_PIXFMT_RESERVED_35 = 35,
++	IMG_PIXFMT_RESERVED_36 = 36,
 +	IMG_PIXFMT_R8G8B8X8_UNORM = 37,
++	IMG_PIXFMT_RESERVED_38 = 38,
++	IMG_PIXFMT_RESERVED_39 = 39,
++	IMG_PIXFMT_RESERVED_40 = 40,
++	IMG_PIXFMT_RESERVED_41 = 41,
++	IMG_PIXFMT_RESERVED_42 = 42,
++	IMG_PIXFMT_RESERVED_43 = 43,
++	IMG_PIXFMT_RESERVED_44 = 44,
++	IMG_PIXFMT_RESERVED_45 = 45,
++	IMG_PIXFMT_RESERVED_46 = 46,
++	IMG_PIXFMT_RESERVED_47 = 47,
++	IMG_PIXFMT_RESERVED_48 = 48,
++	IMG_PIXFMT_RESERVED_49 = 49,
++	IMG_PIXFMT_RESERVED_50 = 50,
 +	IMG_PIXFMT_D32_FLOAT = 51,
++	IMG_PIXFMT_RESERVED_52 = 52,
++	IMG_PIXFMT_RESERVED_53 = 53,
++	IMG_PIXFMT_RESERVED_54 = 54,
++	IMG_PIXFMT_RESERVED_55 = 55,
++	IMG_PIXFMT_RESERVED_56 = 56,
++	IMG_PIXFMT_RESERVED_57 = 57,
 +	IMG_PIXFMT_D24_UNORM_X8_TYPELESS = 58,
++	IMG_PIXFMT_RESERVED_59 = 59,
++	IMG_PIXFMT_RESERVED_60 = 60,
++	IMG_PIXFMT_RESERVED_61 = 61,
 +	IMG_PIXFMT_R8G8_UNORM = 62,
++	IMG_PIXFMT_RESERVED_63 = 63,
++	IMG_PIXFMT_RESERVED_64 = 64,
++	IMG_PIXFMT_RESERVED_65 = 65,
++	IMG_PIXFMT_RESERVED_66 = 66,
++	IMG_PIXFMT_RESERVED_67 = 67,
++	IMG_PIXFMT_RESERVED_68 = 68,
 +	IMG_PIXFMT_D16_UNORM = 69,
++	IMG_PIXFMT_RESERVED_70 = 70,
++	IMG_PIXFMT_RESERVED_71 = 71,
++	IMG_PIXFMT_RESERVED_72 = 72,
++	IMG_PIXFMT_RESERVED_73 = 73,
++	IMG_PIXFMT_RESERVED_74 = 74,
++	IMG_PIXFMT_RESERVED_75 = 75,
 +	IMG_PIXFMT_R8_UNORM = 76,
++	IMG_PIXFMT_RESERVED_77 = 77,
++	IMG_PIXFMT_RESERVED_78 = 78,
++	IMG_PIXFMT_RESERVED_79 = 79,
++	IMG_PIXFMT_RESERVED_80 = 80,
 +	IMG_PIXFMT_S8_UINT = 81,
++	IMG_PIXFMT_RESERVED_82 = 82,
++	IMG_PIXFMT_RESERVED_83 = 83,
++	IMG_PIXFMT_RESERVED_84 = 84,
 +	IMG_PIXFMT_B5G6R5_UNORM = 85,
 +	IMG_PIXFMT_R5G6B5_UNORM = 86,
 +	IMG_PIXFMT_B5G5R5A1_UNORM = 87,
 +	IMG_PIXFMT_B5G5R5X1_UNORM = 88,
 +	IMG_PIXFMT_B8G8R8A8_UNORM = 89,
 +	IMG_PIXFMT_B8G8R8X8_UNORM = 90,
++	IMG_PIXFMT_B8G8R8A8_UINT = 91,
++	IMG_PIXFMT_B8G8R8A8_SNORM = 92,
++	IMG_PIXFMT_B8G8R8A8_SINT = 93,
++	IMG_PIXFMT_B8G8R8A8_UNORM_SRGB = 94,
++	IMG_PIXFMT_RESERVED_95 = 95,
++	IMG_PIXFMT_RESERVED_96 = 96,
++	IMG_PIXFMT_RESERVED_97 = 97,
++	IMG_PIXFMT_RESERVED_98 = 98,
++	IMG_PIXFMT_RESERVED_99 = 99,
++	IMG_PIXFMT_RESERVED_100 = 100,
++	IMG_PIXFMT_RESERVED_101 = 101,
++	IMG_PIXFMT_RESERVED_102 = 102,
++	IMG_PIXFMT_RESERVED_103 = 103,
++	IMG_PIXFMT_RESERVED_104 = 104,
++	IMG_PIXFMT_RESERVED_105 = 105,
++	IMG_PIXFMT_RESERVED_106 = 106,
++	IMG_PIXFMT_RESERVED_107 = 107,
++	IMG_PIXFMT_RESERVED_108 = 108,
++	IMG_PIXFMT_RESERVED_109 = 109,
++	IMG_PIXFMT_RESERVED_110 = 110,
++	IMG_PIXFMT_RESERVED_111 = 111,
++	IMG_PIXFMT_RESERVED_112 = 112,
++	IMG_PIXFMT_RESERVED_113 = 113,
++	IMG_PIXFMT_RESERVED_114 = 114,
++	IMG_PIXFMT_RESERVED_115 = 115,
++	IMG_PIXFMT_RESERVED_116 = 116,
++	IMG_PIXFMT_RESERVED_117 = 117,
++	IMG_PIXFMT_RESERVED_118 = 118,
++	IMG_PIXFMT_RESERVED_119 = 119,
++	IMG_PIXFMT_RESERVED_120 = 120,
++	IMG_PIXFMT_RESERVED_121 = 121,
++	IMG_PIXFMT_RESERVED_122 = 122,
++	IMG_PIXFMT_RESERVED_123 = 123,
++	IMG_PIXFMT_RESERVED_124 = 124,
++	IMG_PIXFMT_RESERVED_125 = 125,
++	IMG_PIXFMT_RESERVED_126 = 126,
++	IMG_PIXFMT_RESERVED_127 = 127,
++	IMG_PIXFMT_RESERVED_128 = 128,
++	IMG_PIXFMT_RESERVED_129 = 129,
++	IMG_PIXFMT_RESERVED_130 = 130,
++	IMG_PIXFMT_RESERVED_131 = 131,
++	IMG_PIXFMT_RESERVED_132 = 132,
++	IMG_PIXFMT_RESERVED_133 = 133,
++	IMG_PIXFMT_RESERVED_134 = 134,
++	IMG_PIXFMT_RESERVED_135 = 135,
 +	IMG_PIXFMT_L8_UNORM = 136,
++	IMG_PIXFMT_RESERVED_137 = 137,
 +	IMG_PIXFMT_L8A8_UNORM = 138,
++	IMG_PIXFMT_RESERVED_139 = 139,
++	IMG_PIXFMT_RESERVED_140 = 140,
++	IMG_PIXFMT_RESERVED_141 = 141,
++	IMG_PIXFMT_RESERVED_142 = 142,
++	IMG_PIXFMT_RESERVED_143 = 143,
++	IMG_PIXFMT_RESERVED_144 = 144,
 +	IMG_PIXFMT_B4G4R4A4_UNORM = 145,
++	IMG_PIXFMT_RESERVED_146 = 146,
++	IMG_PIXFMT_RESERVED_147 = 147,
++	IMG_PIXFMT_RESERVED_148 = 148,
++	IMG_PIXFMT_RESERVED_149 = 149,
++	IMG_PIXFMT_RESERVED_150 = 150,
++	IMG_PIXFMT_RESERVED_151 = 151,
++	IMG_PIXFMT_RESERVED_152 = 152,
++	IMG_PIXFMT_RESERVED_153 = 153,
++	IMG_PIXFMT_RESERVED_154 = 154,
++	IMG_PIXFMT_RESERVED_155 = 155,
++	IMG_PIXFMT_RESERVED_156 = 156,
++	IMG_PIXFMT_RESERVED_157 = 157,
++	IMG_PIXFMT_RESERVED_158 = 158,
++	IMG_PIXFMT_RESERVED_159 = 159,
++	IMG_PIXFMT_R8G8B8_UNORM = 160,
++	IMG_PIXFMT_R8G8B8_UNORM_SRGB = 161,
++	IMG_PIXFMT_RESERVED_162 = 162,
++	IMG_PIXFMT_RESERVED_163 = 163,
++	IMG_PIXFMT_RESERVED_164 = 164,
++	IMG_PIXFMT_RESERVED_165 = 165,
++	IMG_PIXFMT_RESERVED_166 = 166,
++	IMG_PIXFMT_RESERVED_167 = 167,
++	IMG_PIXFMT_RESERVED_168 = 168,
++	IMG_PIXFMT_RESERVED_169 = 169,
++	IMG_PIXFMT_RESERVED_170 = 170,
 +	IMG_PIXFMT_UYVY = 171,
 +	IMG_PIXFMT_VYUY = 172,
 +	IMG_PIXFMT_YUYV = 173,
@@ -1444,22 +1731,98 @@
 +	IMG_PIXFMT_YVU420_2PLANE_MACRO_BLOCK = 177,
 +	IMG_PIXFMT_YUV420_3PLANE = 178,
 +	IMG_PIXFMT_YVU420_3PLANE = 179,
-+	IMG_PIXFMT_V8U8Y8A8 = 184,
++	IMG_PIXFMT_RESERVED_180 = 180,
++	IMG_PIXFMT_RESERVED_181 = 181,
++	IMG_PIXFMT_RESERVED_182 = 182,
++	IMG_PIXFMT_RESERVED_183 = 183,
++	IMG_PIXFMT_RESERVED_184 = 184,
++	IMG_PIXFMT_RESERVED_185 = 185,
++	IMG_PIXFMT_RESERVED_186 = 186,
++	IMG_PIXFMT_RESERVED_187 = 187,
++	IMG_PIXFMT_RESERVED_188 = 188,
++	IMG_PIXFMT_RESERVED_189 = 189,
++	IMG_PIXFMT_RESERVED_190 = 190,
++	IMG_PIXFMT_RESERVED_191 = 191,
++	IMG_PIXFMT_RESERVED_192 = 192,
++	IMG_PIXFMT_RESERVED_193 = 193,
++	IMG_PIXFMT_RESERVED_194 = 194,
++	IMG_PIXFMT_RESERVED_195 = 195,
++	IMG_PIXFMT_RESERVED_196 = 196,
++	IMG_PIXFMT_RESERVED_197 = 197,
++	IMG_PIXFMT_RESERVED_198 = 198,
++	IMG_PIXFMT_RESERVED_199 = 199,
++	IMG_PIXFMT_RESERVED_200 = 200,
 +	IMG_PIXFMT_YVU8_422_2PLANE_PACK8 = 201,
++	IMG_PIXFMT_RESERVED_202 = 202,
 +	IMG_PIXFMT_YVU10_444_1PLANE_PACK10 = 203,
++	IMG_PIXFMT_RESERVED_204 = 204,
++	IMG_PIXFMT_RESERVED_205 = 205,
++	IMG_PIXFMT_RESERVED_206 = 206,
 +	IMG_PIXFMT_YUV8_422_2PLANE_PACK8 = 207,
 +	IMG_PIXFMT_YUV8_444_3PLANE_PACK8 = 208,
++	IMG_PIXFMT_RESERVED_209 = 209,
++	IMG_PIXFMT_RESERVED_210 = 210,
++	IMG_PIXFMT_RESERVED_211 = 211,
++	IMG_PIXFMT_RESERVED_212 = 212,
++	IMG_PIXFMT_RESERVED_213 = 213,
++	IMG_PIXFMT_RESERVED_214 = 214,
++	IMG_PIXFMT_RESERVED_215 = 215,
++	IMG_PIXFMT_RESERVED_216 = 216,
++	IMG_PIXFMT_RESERVED_217 = 217,
++	IMG_PIXFMT_RESERVED_218 = 218,
++	IMG_PIXFMT_RESERVED_219 = 219,
++	IMG_PIXFMT_RESERVED_220 = 220,
++	IMG_PIXFMT_RESERVED_221 = 221,
++	IMG_PIXFMT_RESERVED_222 = 222,
++	IMG_PIXFMT_RESERVED_223 = 223,
++	IMG_PIXFMT_RESERVED_224 = 224,
++	IMG_PIXFMT_RESERVED_225 = 225,
++	IMG_PIXFMT_RESERVED_226 = 226,
++	IMG_PIXFMT_RESERVED_227 = 227,
++	IMG_PIXFMT_RESERVED_228 = 228,
++	IMG_PIXFMT_RESERVED_229 = 229,
++	IMG_PIXFMT_RESERVED_230 = 230,
++	IMG_PIXFMT_RESERVED_231 = 231,
++	IMG_PIXFMT_RESERVED_232 = 232,
++	IMG_PIXFMT_RESERVED_233 = 233,
++	IMG_PIXFMT_RESERVED_234 = 234,
++	IMG_PIXFMT_RESERVED_235 = 235,
++	IMG_PIXFMT_RESERVED_236 = 236,
++	IMG_PIXFMT_RESERVED_237 = 237,
++	IMG_PIXFMT_RESERVED_238 = 238,
++	IMG_PIXFMT_RESERVED_239 = 239,
++	IMG_PIXFMT_RESERVED_240 = 240,
++	IMG_PIXFMT_RESERVED_241 = 241,
++	IMG_PIXFMT_RESERVED_242 = 242,
++	IMG_PIXFMT_RESERVED_243 = 243,
++	IMG_PIXFMT_RESERVED_244 = 244,
 +	IMG_PIXFMT_YVU8_420_2PLANE_PACK8_P = 245,
++	IMG_PIXFMT_RESERVED_246 = 246,
++	IMG_PIXFMT_RESERVED_247 = 247,
++	IMG_PIXFMT_RESERVED_248 = 248,
 +	IMG_PIXFMT_YUV8_420_2PLANE_PACK8_P = 249,
++	IMG_PIXFMT_RESERVED_250 = 250,
++	IMG_PIXFMT_RESERVED_251 = 251,
 +	IMG_PIXFMT_UYVY10_422_1PLANE_PACK10_CUST1 = 252,
++	IMG_PIXFMT_RESERVED_253 = 253,
++	IMG_PIXFMT_RESERVED_254 = 254,
++	IMG_PIXFMT_RESERVED_255 = 255,
++	IMG_PIXFMT_RESERVED_256 = 256,
++	IMG_PIXFMT_RESERVED_257 = 257,
++	IMG_PIXFMT_RESERVED_258 = 258,
++	IMG_PIXFMT_RESERVED_259 = 259,
++	IMG_PIXFMT_RESERVED_260 = 260,
++	IMG_PIXFMT_RESERVED_261 = 261,
++	IMG_PIXFMT_RESERVED_262 = 262,
++	IMG_PIXFMT_RESERVED_263 = 263,
++	IMG_PIXFMT_RESERVED_264 = 264,
++#define IMG_PIXFMT_ENUM_COUNT 265
 +} IMG_PIXFMT;
 +
-+
-+
-+#endif /* _IMGPIXFMTS_H_ */
++#endif /* IMGPIXFMTS_H */
 diff --git a/src/mesa/drivers/dri/pvr/imgyuv.h b/src/mesa/drivers/dri/pvr/imgyuv.h
 new file mode 100644
-index 00000000000..a91ee10d3f3
+index 00000000000..7ae8fd19ac0
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/imgyuv.h
 @@ -0,0 +1,58 @@
@@ -1490,8 +1853,8 @@
 +THE SOFTWARE.
 +*/ /**************************************************************************/
 +
-+#if !defined(_IMGYUV_H_)
-+#define _IMGYUV_H_
++#if !defined(IMGYUV_H)
++#define IMGYUV_H
 +
 +typedef enum
 +{
@@ -1520,15 +1883,13 @@
 +} IMG_YUV_CHROMA_INTERP;
 +
 +
-+#endif /* _IMGYUV_H_ */
++#endif /* IMGYUV_H */
 diff --git a/src/mesa/drivers/dri/pvr/mesa_context.c b/src/mesa/drivers/dri/pvr/mesa_context.c
 new file mode 100644
-index 00000000000..064135222b6
+index 00000000000..594f792d212
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/mesa_context.c
-@@ -0,0 +1,258 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,203 @@
 +/**
 + * \file context.c
 + * Mesa context/visual/framebuffer management functions.
@@ -1563,7 +1924,6 @@
 + */
 +
 +#include <stdlib.h>
-+#include <dlfcn.h>
 +#include <assert.h>
 +
 +#include "main/version.h"
@@ -1576,11 +1936,10 @@
 +#include "dispatch.h"
 +#include "pvrmesa.h"
 +
-+
 +/**
-+ * This is the default function we plug into all dispatch table slots
-+ * This helps prevents a segfault when someone calls a GL function without
-+ * first checking if the extension is supported.
++ * This is the default function we plug into all dispatch table slots This
++ * helps prevents a segfault when someone calls a GL function without first
++ * checking if the extension is supported.
 + */
 +static int
 +generic_nop(void)
@@ -1596,44 +1955,34 @@
 +static struct _glapi_table *
 +pvrdri_alloc_dispatch_table(void)
 +{
-+	unsigned numEntries = _glapi_get_dispatch_table_size();
-+	_glapi_proc *table = malloc(numEntries * sizeof(_glapi_proc));
++   unsigned int numEntries = _glapi_get_dispatch_table_size();
++   _glapi_proc *table;
 +
-+	if (table)
-+	{
-+		unsigned i;
++   table = malloc(numEntries * sizeof(_glapi_proc));
++   if (table)
++      for (unsigned int i = 0; i < numEntries; i++)
++         table[i] = (_glapi_proc) generic_nop;
 +
-+		for (i = 0; i < numEntries; i++)
-+		{
-+			table[i] = (_glapi_proc) generic_nop;
-+		}
-+	}
-+
-+	return (struct _glapi_table *)table;
++   return (struct _glapi_table *) table;
 +}
 +
 +/**
-+ * Return a pointer to the pointer to the dispatch table of an API in PVRDRIScreen.
++ * Return a pointer to the pointer to the dispatch table of an API in
++ * PVRDRIScreen.
 + */
 +static struct _glapi_table **
 +pvrdri_get_dispatch_table_ptr(PVRDRIScreen *psPVRScreen, PVRDRIAPIType eAPI)
 +{
-+	switch (eAPI)
-+	{
-+		case PVRDRI_API_GLES1:
-+			return &psPVRScreen->psOGLES1Dispatch;
-+			break;
-+		case PVRDRI_API_GLES2:
-+			return &psPVRScreen->psOGLES2Dispatch;
-+			break;
-+		case PVRDRI_API_CL:
-+			assert(!"OpenCL doesn't have a dispatch table");
-+			break;
-+		case PVRDRI_API_NONE:
-+			assert(!"invalid API");
-+			break;
-+	}
-+	return NULL;
++   switch (eAPI) {
++   case PVRDRI_API_GLES1:
++      return &psPVRScreen->psOGLES1Dispatch;
++      break;
++   case PVRDRI_API_GLES2:
++      return &psPVRScreen->psOGLES2Dispatch;
++      break;
++   default:
++      return NULL;
++   }
 +}
 +
 +/**
@@ -1642,9 +1991,10 @@
 +static struct _glapi_table *
 +pvrdri_get_dispatch_table(PVRDRIScreen *psPVRScreen, PVRDRIAPIType eAPI)
 +{
-+	struct _glapi_table **ppsTable = pvrdri_get_dispatch_table_ptr(psPVRScreen, eAPI);
++   struct _glapi_table **ppsTable =
++      pvrdri_get_dispatch_table_ptr(psPVRScreen, eAPI);
 +
-+	return ppsTable ? *ppsTable : NULL;
++   return ppsTable ? *ppsTable : NULL;
 +}
 +
 +/**
@@ -1653,141 +2003,99 @@
 +void
 +pvrdri_free_dispatch_tables(PVRDRIScreen *psPVRScreen)
 +{
-+	if (psPVRScreen->psOGLES1Dispatch != NULL)
-+	{
-+		free(psPVRScreen->psOGLES1Dispatch);
-+		psPVRScreen->psOGLES1Dispatch = NULL;
-+	}
++   if (psPVRScreen->psOGLES1Dispatch != NULL) {
++      free(psPVRScreen->psOGLES1Dispatch);
++      psPVRScreen->psOGLES1Dispatch = NULL;
++   }
 +
-+	if (psPVRScreen->psOGLES2Dispatch != NULL)
-+	{
-+		free(psPVRScreen->psOGLES2Dispatch);
-+		psPVRScreen->psOGLES2Dispatch = NULL;
-+	}
++   if (psPVRScreen->psOGLES2Dispatch != NULL) {
++      free(psPVRScreen->psOGLES2Dispatch);
++      psPVRScreen->psOGLES2Dispatch = NULL;
++   }
 +}
 +
 +static void
-+pvrdri_add_mesa_dispatch(struct _glapi_table *psTable,
-+			 PVRDRIAPIType eAPI,
-+			 PVRDRIScreenImpl *psScreenImpl,
-+			 void *pvLibHandle,
-+			 const char *psFunc)
++pvrdri_add_mesa_dispatch(struct _glapi_table *psTable, PVRDRIAPIType eAPI,
++                         struct DRISUPScreen *psDRISUPScreen,
++                         unsigned int uIdx)
 +{
-+	int iOffset;
-+	const char *asFunc[] = {NULL, NULL};
-+	_glapi_proc pfFunc;
-+	const char *error;
++   const char *asFunc[] = { NULL, NULL };
++   int iOffset;
++   const char *psFunc;
++   _glapi_proc pfFunc;
 +
-+	(void) dlerror();
-+	pfFunc = dlsym(pvLibHandle, psFunc);
-+	error = dlerror();
-+	if (error != NULL)
-+	{
-+		pfFunc = PVRDRIEGLGetProcAddress(eAPI, psScreenImpl, psFunc);
-+		if (pfFunc == NULL)
-+		{
-+#if 0
-+			/*
-+			 * Not all extensions are supported, so there may
-+			 * be quite a lot of lookup failures.
-+			 */
-+			_mesa_warning(NULL, "Couldn't get address of %s", psFunc);
-+#endif
-+			return;
-+		}
-+	}
++   pfFunc = DRISUPGetAPIProcAddress(psDRISUPScreen, eAPI, uIdx);
++   if (pfFunc == NULL)
++      return;
 +
-+	asFunc[0] = psFunc;
-+	iOffset = _glapi_add_dispatch(asFunc, "");
-+	if (iOffset == -1)
-+	{
-+		_mesa_warning(NULL, "Couldn't add %s to the Mesa dispatch table", psFunc);
-+	}
-+	else
-+	{
-+		SET_by_offset(psTable, iOffset, pfFunc);
-+	}
++   psFunc = DRISUPGetAPIProcName(psDRISUPScreen, eAPI, uIdx);
++   assert(psFunc != NULL);
++
++   asFunc[0] = psFunc;
++   iOffset = _glapi_add_dispatch(asFunc, "");
++   if (iOffset == -1) {
++      _mesa_warning(NULL, "Couldn't add %s to the Mesa dispatch table",
++                    psFunc);
++   } else {
++      SET_by_offset(psTable, iOffset, pfFunc);
++   }
 +}
 +
 +static void
-+pvrdri_set_mesa_dispatch(struct _glapi_table *psTable,
-+			 PVRDRIAPIType eAPI,
-+			 PVRDRIScreenImpl *psScreenImpl,
-+			 void *pvLibHandle,
-+			 unsigned uNumFuncs)
++pvrdri_set_mesa_dispatch(struct _glapi_table *psTable, PVRDRIAPIType eAPI,
++                         struct DRISUPScreen *psDRISUPScreen,
++                         unsigned int uNumFuncs)
 +{
-+	unsigned i;
-+
-+	for (i = 0; i < uNumFuncs; i++)
-+	{
-+		const char *psFunc = PVRDRIGetAPIFunc(eAPI, i);
-+
-+		assert(psFunc);
-+
-+		pvrdri_add_mesa_dispatch(psTable,
-+					 eAPI,
-+					 psScreenImpl,
-+					 pvLibHandle,
-+					 psFunc);
-+	}
++   for (unsigned int i = 0; i < uNumFuncs; i++)
++      pvrdri_add_mesa_dispatch(psTable, eAPI, psDRISUPScreen, i);
 +}
 +
 +bool
 +pvrdri_create_dispatch_table(PVRDRIScreen *psPVRScreen, PVRDRIAPIType eAPI)
 +{
-+	PVRDRIScreenImpl *psScreenImpl = psPVRScreen->psImpl;
-+	struct _glapi_table **ppsTable = pvrdri_get_dispatch_table_ptr(psPVRScreen, eAPI);
-+	void *pvLibHandle;
-+	unsigned uNumFuncs;
++   struct DRISUPScreen *psDRISUPScreen = psPVRScreen->psDRISUPScreen;
++   struct _glapi_table **ppsTable;
++   unsigned int uNumFuncs;
 +
-+	if (ppsTable == NULL)
-+	{
-+		return false;
-+	}
++   ppsTable = pvrdri_get_dispatch_table_ptr(psPVRScreen, eAPI);
++   if (ppsTable == NULL)
++      return false;
 +
-+	if (*ppsTable != NULL)
-+	{
-+		return true;
-+	}
++   if (*ppsTable != NULL)
++      return true;
 +
-+	pvLibHandle = PVRDRIEGLGetLibHandle(eAPI, psScreenImpl);;
-+	uNumFuncs = PVRDRIGetNumAPIFuncs(eAPI);
-+	if (!pvLibHandle || !uNumFuncs)
-+	{
-+		return false;
-+	}
++   uNumFuncs = DRISUPGetNumAPIProcs(psDRISUPScreen, eAPI);
++   if (!uNumFuncs)
++      return false;
 +
-+	*ppsTable = pvrdri_alloc_dispatch_table();
-+	if (*ppsTable == NULL)
-+	{
-+		return false;
-+	}
++   *ppsTable = pvrdri_alloc_dispatch_table();
++   if (*ppsTable == NULL)
++      return false;
 +
-+	pvrdri_set_mesa_dispatch(*ppsTable,
-+				 eAPI,
-+				 psScreenImpl,
-+				 pvLibHandle,
-+				 uNumFuncs);
++   pvrdri_set_mesa_dispatch(*ppsTable, eAPI, psDRISUPScreen, uNumFuncs);
 +
-+	return true;
++   return true;
 +}
 +
 +void
 +pvrdri_set_null_dispatch_table(void)
 +{
-+	_glapi_set_dispatch(NULL);
++   _glapi_set_dispatch(NULL);
 +}
 +
 +void
 +pvrdri_set_dispatch_table(PVRDRIContext *psPVRContext)
 +{
-+	struct _glapi_table *psTable = pvrdri_get_dispatch_table(psPVRContext->psPVRScreen, psPVRContext->eAPI);
++   struct _glapi_table *psTable;
 +
-+	_glapi_set_dispatch(psTable);
++   psTable = pvrdri_get_dispatch_table(psPVRContext->psPVRScreen,
++                                       psPVRContext->eAPI);
++
++   _glapi_set_dispatch(psTable);
 +}
 diff --git a/src/mesa/drivers/dri/pvr/meson.build b/src/mesa/drivers/dri/pvr/meson.build
 new file mode 100644
-index 00000000000..768731a3761
+index 00000000000..5a3e87ea070
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/meson.build
 @@ -0,0 +1,48 @@
@@ -1815,38 +2123,311 @@
 +
 +files_pvr = files(
 +  'mesa_context.c',
++  'pvrcb.c',
 +  'pvrcompat.c',
-+  'pvrdrawable.c',
++  'pvrdrawable_mod.c',
 +  'pvrdri.c',
++  'pvrdri_mod.c',
 +  'pvrext.c',
-+  'pvrimage.c',
++  'pvrext_mod.c',
++  'pvrimage_mod.c',
 +  'pvrutil.c',
++  'pvrutil_mod.c',
 +)
 +
 +dep_libpvr = [
 +  dep_libdrm,
-+  dependency('pvrdri', required : false),
 +]
 +
 +libpvr = static_library(
 +  'pvr',
-+  [files_pvr, xmlpool_options_h, main_dispatch_h],
++  [files_pvr, main_dispatch_h],
 +  include_directories : [inc_common, inc_dri_common, inc_util, inc_pvr],
 +  c_args : [c_vis_args, no_override_init_args],
 +  cpp_args : [cpp_vis_args],
 +  dependencies : [dep_libpvr],
 +)
+diff --git a/src/mesa/drivers/dri/pvr/pvrcb.c b/src/mesa/drivers/dri/pvr/pvrcb.c
+new file mode 100644
+index 00000000000..7dfc3139cbb
+--- /dev/null
++++ b/src/mesa/drivers/dri/pvr/pvrcb.c
+@@ -0,0 +1,269 @@
++/*
++ * Copyright (c) Imagination Technologies Ltd.
++ *
++ * The contents of this file are subject to the MIT license as set out below.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
 +
-+dri_drivers += libpvr
-+dri_link += 'pvr_dri.so'
++#include <assert.h>
++
++#include "utils.h"
++#include "pvrdri.h"
++
++int
++MODSUPGetBuffers(__DRIdrawable *psDRIDrawable, unsigned int uFourCC,
++                 uint32_t *puStamp, void *pvLoaderPrivate,
++                 uint32_t uBufferMask, struct PVRDRIImageList *psImageList)
++{
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++   __DRIscreen *psDRIScreen = psDRIDrawable->driScreenPriv;
++   struct __DRIimageList sDRIList;
++   int res;
++
++#if !defined(DRI_IMAGE_HAS_BUFFER_PREV)
++   uBufferMask &= ~PVRDRI_IMAGE_BUFFER_PREV;
++#endif
++
++   if (psPVRDrawable->uFourCC != uFourCC) {
++      psPVRDrawable->uDRIFormat = PVRDRIFourCCToDRIFormat(uFourCC);
++      psPVRDrawable->uFourCC = uFourCC;
++   }
++
++   res = psDRIScreen->image.loader->getBuffers(psDRIDrawable,
++                                               psPVRDrawable->uDRIFormat,
++                                               puStamp,
++                                               pvLoaderPrivate,
++                                               uBufferMask, &sDRIList);
++
++   if (res) {
++      psImageList->uImageMask = sDRIList.image_mask;
++      psImageList->psBack = sDRIList.back;
++      psImageList->psFront = sDRIList.front;
++#if defined(DRI_IMAGE_HAS_BUFFER_PREV)
++      psImageList->psPrev = sDRIList.prev;
++#endif
++   }
++
++   return res;
++}
++
++bool
++MODSUPCreateConfigs(__DRIconfig ***pppsConfigs, __DRIscreen *psDRIScreen,
++                    int iPVRDRIMesaFormat, const uint8_t *puDepthBits,
++                    const uint8_t *puStencilBits,
++                    unsigned int uNumDepthStencilBits,
++                    const unsigned int *puDBModes, unsigned int uNumDBModes,
++                    const uint8_t *puMSAASamples, unsigned int uNumMSAAModes,
++                    bool bEnableAccum, bool bColorDepthMatch,
++                    bool bMutableRenderBuffer,
++                    int iYUVDepthRange, int iYUVCSCStandard,
++                    uint32_t uMaxPbufferWidth, uint32_t uMaxPbufferHeight)
++{
++   __DRIconfig **ppsConfigs;
++   mesa_format eFormat = PVRDRIMesaFormatToMesaFormat(iPVRDRIMesaFormat);
++   unsigned int i;
++
++   (void) psDRIScreen;
++
++   switch (eFormat) {
++   case MESA_FORMAT_NONE:
++      __driUtilMessage("%s: Unknown PVR DRI format: %u",
++                       __func__, iPVRDRIMesaFormat);
++      return false;
++   default:
++      break;
++   }
++
++   /*
++    * The double buffered modes array argument for driCreateConfigs has
++    * entries of type GLenum.
++    */
++   assert(sizeof(GLenum) == sizeof(unsigned int));
++
++   ppsConfigs = driCreateConfigs(eFormat, puDepthBits, puStencilBits,
++                                 uNumDepthStencilBits, (GLenum *) puDBModes,
++                                 uNumDBModes, puMSAASamples, uNumMSAAModes,
++                                 bEnableAccum, bColorDepthMatch,
++                                 bMutableRenderBuffer);
++   if (!ppsConfigs)
++      return false;
++
++   for (i = 0; ppsConfigs[i]; i++) {
++      ppsConfigs[i]->modes.maxPbufferWidth = uMaxPbufferWidth;
++      ppsConfigs[i]->modes.maxPbufferHeight = uMaxPbufferHeight;
++      ppsConfigs[i]->modes.maxPbufferPixels =
++         uMaxPbufferWidth * uMaxPbufferHeight;
++   }
++
++   *pppsConfigs = ppsConfigs;
++
++   return true;
++}
++
++__DRIconfig **
++MODSUPConcatConfigs(__DRIscreen *psDRIScreen,
++                    __DRIconfig **ppsConfigA, __DRIconfig **ppsConfigB)
++{
++   (void) psDRIScreen;
++
++   return driConcatConfigs(ppsConfigA, ppsConfigB);
++}
++
++struct __DRIimageRec *
++MODSUPLookupEGLImage(__DRIscreen *psDRIScreen, void *pvImage,
++                     void *pvLoaderPrivate)
++{
++   return psDRIScreen->dri2.image->lookupEGLImage(psDRIScreen,
++                                                  pvImage,
++                                                  pvLoaderPrivate);
++}
++
++
++unsigned int
++MODSUPGetCapability(__DRIscreen *psDRIScreen, unsigned int uCapability)
++{
++   if (psDRIScreen->image.loader->base.version >= 2 &&
++       psDRIScreen->image.loader->getCapability) {
++      enum dri_loader_cap eCapability =
++         (enum dri_loader_cap) uCapability;
++
++      return psDRIScreen->image.loader->getCapability(psDRIScreen,
++                                                      eCapability);
++   }
++
++   return 0;
++}
++
++bool
++PVRDRIConfigQuery(const PVRDRIConfig *psConfig,
++                  PVRDRIConfigAttrib eConfigAttrib, int *piValueOut)
++{
++   if (!psConfig || !piValueOut)
++      return false;
++
++   switch (eConfigAttrib) {
++   case PVRDRI_CONFIG_ATTRIB_RENDERABLE_TYPE:
++      *piValueOut = psConfig->iSupportedAPIs;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_RGB_MODE:
++      *piValueOut = psConfig->sGLMode.rgbMode;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_DOUBLE_BUFFER_MODE:
++      *piValueOut = psConfig->sGLMode.doubleBufferMode;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_RED_BITS:
++      *piValueOut = psConfig->sGLMode.redBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_GREEN_BITS:
++      *piValueOut = psConfig->sGLMode.greenBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_BLUE_BITS:
++      *piValueOut = psConfig->sGLMode.blueBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_ALPHA_BITS:
++      *piValueOut = psConfig->sGLMode.alphaBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_RGB_BITS:
++      *piValueOut = psConfig->sGLMode.rgbBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_DEPTH_BITS:
++      *piValueOut = psConfig->sGLMode.depthBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_STENCIL_BITS:
++      *piValueOut = psConfig->sGLMode.stencilBits;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_SAMPLE_BUFFERS:
++      *piValueOut = psConfig->sGLMode.sampleBuffers;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_SAMPLES:
++      *piValueOut = psConfig->sGLMode.samples;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_BIND_TO_TEXTURE_RGB:
++      *piValueOut = psConfig->sGLMode.bindToTextureRgb;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_BIND_TO_TEXTURE_RGBA:
++      *piValueOut = psConfig->sGLMode.bindToTextureRgba;
++      return true;
++#if defined(__DRI_ATTRIB_YUV_BIT)
++   case PVRDRI_CONFIG_ATTRIB_YUV_ORDER:
++      *piValueOut = psConfig->sGLMode.YUVOrder;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_YUV_NUM_OF_PLANES:
++      *piValueOut = psConfig->sGLMode.YUVNumberOfPlanes;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_YUV_SUBSAMPLE:
++      *piValueOut = psConfig->sGLMode.YUVSubsample;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_YUV_DEPTH_RANGE:
++      *piValueOut = psConfig->sGLMode.YUVDepthRange;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_YUV_CSC_STANDARD:
++      *piValueOut = psConfig->sGLMode.YUVCSCStandard;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_YUV_PLANE_BPP:
++      *piValueOut = psConfig->sGLMode.YUVPlaneBPP;
++      return true;
++#endif
++#if !defined(__DRI_ATTRIB_YUV_BIT)
++   case PVRDRI_CONFIG_ATTRIB_YUV_ORDER:
++   case PVRDRI_CONFIG_ATTRIB_YUV_NUM_OF_PLANES:
++   case PVRDRI_CONFIG_ATTRIB_YUV_SUBSAMPLE:
++   case PVRDRI_CONFIG_ATTRIB_YUV_DEPTH_RANGE:
++   case PVRDRI_CONFIG_ATTRIB_YUV_CSC_STANDARD:
++   case PVRDRI_CONFIG_ATTRIB_YUV_PLANE_BPP:
++      return false;
++#endif
++   case PVRDRI_CONFIG_ATTRIB_RED_MASK:
++      *piValueOut = psConfig->sGLMode.redMask;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_GREEN_MASK:
++      *piValueOut = psConfig->sGLMode.greenMask;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_BLUE_MASK:
++      *piValueOut = psConfig->sGLMode.blueMask;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_ALPHA_MASK:
++      *piValueOut = psConfig->sGLMode.alphaMask;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_SRGB_CAPABLE:
++      *piValueOut = psConfig->sGLMode.sRGBCapable;
++      return true;
++   case PVRDRI_CONFIG_ATTRIB_INVALID:
++      errorMessage("%s: Invalid attribute", __func__);
++      assert(0);
++      return false;
++   default:
++      return false;
++   }
++}
++
++bool
++MODSUPConfigQuery(const PVRDRIConfig *psConfig,
++                  PVRDRIConfigAttrib eConfigAttrib, unsigned int *puValueOut)
++{
++   bool bRes;
++   int iValue;
++
++   bRes = PVRDRIConfigQuery(psConfig, eConfigAttrib, &iValue);
++   if (bRes)
++      *puValueOut = (unsigned int) iValue;
++
++   return bRes;
++}
 diff --git a/src/mesa/drivers/dri/pvr/pvrcompat.c b/src/mesa/drivers/dri/pvr/pvrcompat.c
 new file mode 100644
-index 00000000000..e429e0cc135
+index 00000000000..bd225ca0c46
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/pvrcompat.c
-@@ -0,0 +1,1383 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,1529 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -1881,1361 +2462,1507 @@
 +#include <drm_fourcc.h>
 +
 +#include "pvrdri.h"
++#include "pvrdri_mod.h"
 +
 +#ifndef DRM_FORMAT_MOD_INVALID
-+#define DRM_FORMAT_MOD_INVALID ((1ULL<<56) - 1)
++#define DRM_FORMAT_MOD_INVALID ((1ULL << 56) - 1)
 +#endif
 +
 +#define _MAKESTRING(x) # x
 +#define MAKESTRING(x) _MAKESTRING(x)
 +
-+#define	PVRDRI_SUPPORT_LIB	"libpvr_dri_support.so"
++#define PVRDRI_SUPPORT_LIB "libpvr_dri_support.so"
 +
 +static void *gpvSupLib;
 +static int giSupLibRef;
 +
 +static PVRDRISupportInterface gsSup;
-+static unsigned guSupVer;
++static struct PVRDRISupportInterfaceV2 gsSupV2;
 +
 +static pthread_mutex_t gsCompatLock = PTHREAD_MUTEX_INITIALIZER;
 +
-+static void DumSupFunc(void) { abort(); }
-+
 +/* Call a function via the DRI Support interface structure */
-+#define CallFunc(field, ver, ...) 					\
-+	do { 								\
-+		if (guSupVer >= ver && gsSup.field)			\
-+			return gsSup.field(__VA_ARGS__);		\
-+	} while(0)
++#define CallFunc(field, ...)                    \
++   do {                                         \
++      if (gsSup.field)                          \
++         return gsSup.field(__VA_ARGS__);       \
++   } while(0)
 +
-+/* Define a function to test for a given DRI Support function */
-+#define DefineFunc_IsSupported(func, field, ver)			\
-+	bool func ## _IsSupported(void)					\
-+	{ return guSupVer >= ver && gsSup.field; }
-+
-+
-+/*
-+ * Lookup a function, and set the pointer to the function address.
-+ * If lookup fails, the pointer is set to the address of the dummy
-+ * support function, DumSupFunc.
-+ */
-+#define LookupFunc(func, ptr)						\
-+	do {								\
-+		if (!ptr)						\
-+		{							\
-+			ptr = dlsym(gpvSupLib, MAKESTRING(func));	\
-+			if (!ptr)					\
-+				ptr = (void *)DumSupFunc; 		\
-+		}							\
-+	} while(0)
-+
-+/*
-+ * Lookup a legacy DRI support function, and set the function pointer
-+ * in the support interface structure, gsSup.
-+ * If lookup fails, the function pointer is set to the address of the
-+ * dummy support function, DumSupFunc.
-+ */
-+#define LookupLegacyFunc(func, field)					\
-+	LookupFunc(func, gsSup.field)
-+
-+/*
-+ * This legacy version of CallFunc should only be used for functions that
-+ * used to be called directly in older versions of the DRI Support library.
-+ * Do not use this macro for functions that have only ever been available
-+ * via the PVRDRISupportInterface structure.
-+ * In summary, if you are modifying this file to support a new version of
-+ * the PVRDRISupportInterface structure, use CallFunc rather than this
-+ * macro.
-+ */
-+#define CallFuncLegacy(func, field, ...) 				\
-+	do { 								\
-+		LookupLegacyFunc(func, field);				\
-+									\
-+		if (gsSup.field != (void *)DumSupFunc)			\
-+			return gsSup.field(__VA_ARGS__);		\
-+	} while(0)
-+
-+/*
-+ * Legacy version of DefineFunc_IsSupported.
-+ * See the comments for CallFuncLegacy.
-+ */
-+#define DefineFunc_IsSupportedLegacy(func, field) 			\
-+	bool func ## _IsSupported(void) 				\
-+	{ 								\
-+		LookupLegacyFunc(func, field);				\
-+									\
-+		return gsSup.field != (void *)DumSupFunc;		\
-+	}
++/* Lookup a function, and set the pointer to the function address */
++#define LookupFunc(func, ptr)                   \
++   do {                                         \
++      ptr = dlsym(gpvSupLib, MAKESTRING(func)); \
++   } while(0)
 +
 +/*
 + * Calculate the size of a particular version of the PVRDRISupportInterface
 + * structure from the name of the last field in that version of the
 + * structure.
 + */
-+#define PVRDRIInterfaceSize(field) \
-+				(offsetof(PVRDRISupportInterface, field) + \
-+				sizeof((PVRDRISupportInterface *)0)->field)
++#define PVRDRIInterfaceSize(field)              \
++   (offsetof(PVRDRISupportInterface, field) +   \
++    sizeof((PVRDRISupportInterface *)0)->field)
++
++/* Call a function via the DRI Support interface structure */
++#define CallFuncV2(field, ...)                  \
++   do {                                         \
++      if (gsSupV2.field)                        \
++         return gsSupV2.field(__VA_ARGS__);     \
++   } while(0)
++
++/* Calculate the start of the PVRDRISupportInterfaceV2 structure */
++#define PVRDRIInterfaceV2Start(field)                   \
++   (offsetof(struct PVRDRISupportInterfaceV2, field))
++
++/* Calculate the end of the PVRDRISupportInterfaceV2 structure */
++#define PVRDRIInterfaceV2End(field)                             \
++   (offsetof(struct PVRDRISupportInterfaceV2, field) +          \
++    sizeof((struct PVRDRISupportInterfaceV2 *)0)->field)
 +
 +static void
 +CompatLock(void)
 +{
-+	int ret;
++   int ret;
 +
-+	ret = pthread_mutex_lock(&gsCompatLock);
-+	if (ret)
-+	{
-+		errorMessage("%s: Failed to lock mutex (%d)",
-+				 __func__, ret);
-+		abort();
-+	}
++   ret = pthread_mutex_lock(&gsCompatLock);
++   if (ret) {
++      errorMessage("%s: Failed to lock mutex (%d)", __func__, ret);
++      abort();
++   }
 +}
 +
 +static void
 +CompatUnlock(void)
 +{
-+	int ret;
++   int ret;
 +
-+	ret = pthread_mutex_unlock(&gsCompatLock);
-+	if (ret)
-+	{
-+		errorMessage("%s: Failed to unlock mutex (%d)",
-+				 __func__, ret);
-+		abort();
-+	}
++   ret = pthread_mutex_unlock(&gsCompatLock);
++   if (ret) {
++      errorMessage("%s: Failed to unlock mutex (%d)", __func__, ret);
++      abort();
++   }
 +}
 +
 +static void *
 +LoadLib(const char *path)
 +{
-+	void *handle;
++   void *handle;
 +
-+	/* Clear the error */
-+	(void) dlerror();
++   /* Clear the error */
++   (void) dlerror();
 +
-+	handle = dlopen(path, RTLD_NOW);
-+	if (handle)
-+	{
-+		__driUtilMessage("Loaded %s\n", path);
-+	}
-+	else
-+	{
-+		const char *error = dlerror();
++   handle = dlopen(path, RTLD_NOW);
++   if (handle) {
++      __driUtilMessage("Loaded %s", path);
++   } else {
++      const char *error;
 +
-+		if (!error)
-+		{
-+			error = "unknown error";
-+		}
++      error = dlerror();
++      if (!error)
++         error = "unknown error";
 +
-+		errorMessage("%s: Couldn't load %s: %s\n",
-+		             __func__, path, error);
-+	}
++      errorMessage("%s: Couldn't load %s: %s", __func__, path, error);
++   }
 +
-+	return handle;
++   return handle;
 +}
 +
 +static void
 +UnloadLib(void *handle, const char *name)
 +{
-+	if (!handle)
-+	{
-+		return;
-+	}
++   if (!handle)
++      return;
 +
-+	/* Clear the error */
-+	(void) dlerror();
++   /* Clear the error */
++   (void) dlerror();
 +
-+	if (dlclose(handle))
-+	{
-+		const char *error = dlerror();
++   if (dlclose(handle)) {
++      const char *error;
 +
-+		if (!error)
-+		{
-+			error = "unknown error";
-+		}
++      error = dlerror();
++      if (!error)
++         error = "unknown error";
 +
-+		errorMessage("%s: Couldn't unload %s: %s\n",
-+		             __func__, name, error);
-+	}
-+	else
-+	{
-+		__driUtilMessage("Unloaded %s\n", name);
-+	}
++      errorMessage("%s: Couldn't unload %s: %s", __func__, name, error);
++   } else {
++      __driUtilMessage("Unloaded %s", name);
++   }
 +}
 +
 +static bool
 +LoadSupportLib(void)
 +{
-+	gpvSupLib = LoadLib(PVRDRI_SUPPORT_LIB);
++   gpvSupLib = LoadLib(PVRDRI_SUPPORT_LIB);
 +
-+	return gpvSupLib != NULL;
++   return gpvSupLib != NULL;
 +}
 +
 +static void
 +UnloadSupportLib(void)
 +{
-+	UnloadLib(gpvSupLib, PVRDRI_SUPPORT_LIB);
-+	gpvSupLib = NULL;
-+}
-+
-+static bool
-+RegisterCallbacksCompat(const PVRDRICallbacks *psCallbacks)
-+{
-+	void (*pfRegisterCallbacks)(PVRDRICallbacks *psCallbacks) = NULL;
-+
-+	LookupFunc(PVRDRIRegisterCallbacks, pfRegisterCallbacks);
-+
-+	if (pfRegisterCallbacks != (void *)&DumSupFunc)
-+	{
-+		PVRDRICallbacks sCallbacks = *psCallbacks;
-+
-+		pfRegisterCallbacks(&sCallbacks);
-+
-+		return true;
-+	}
-+
-+	return false;
++   UnloadLib(gpvSupLib, PVRDRI_SUPPORT_LIB);
++   gpvSupLib = NULL;
 +}
 +
 +static void
 +CompatDeinit(void)
 +{
-+	UnloadSupportLib();
-+	memset(&gsSup, 0, sizeof(gsSup));
-+	guSupVer = 0;
++   UnloadSupportLib();
++   memset(&gsSup, 0, sizeof(gsSup));
++   memset(&gsSupV2, 0, sizeof(gsSupV2));
++}
++
++static void
++SetupLocalDRISupportInterfaceV2(void)
++{
++   gsSupV2.v0.CreateScreen = DRIMODCreateScreen;
++   gsSupV2.v0.DestroyScreen = DRIMODDestroyScreen;
++   gsSupV2.v0.CreateContext = DRIMODCreateContext;
++   gsSupV2.v0.DestroyContext = DRIMODDestroyContext;
++   gsSupV2.v0.CreateDrawable = DRIMODCreateDrawable;
++   gsSupV2.v0.DestroyDrawable = DRIMODDestroyDrawable;
++   gsSupV2.v0.MakeCurrent = DRIMODMakeCurrent;
++   gsSupV2.v0.UnbindContext = DRIMODUnbindContext;
++   gsSupV2.v0.AllocateBuffer = DRIMODAllocateBuffer;
++   gsSupV2.v0.ReleaseBuffer = DRIMODReleaseBuffer;
++   gsSupV2.v0.SetTexBuffer2 = DRIMODSetTexBuffer2;
++   gsSupV2.v0.ReleaseTexBuffer = DRIMODReleaseTexBuffer;
++   gsSupV2.v0.Flush = DRIMODFlush;
++   gsSupV2.v0.Invalidate = DRIMODInvalidate;
++   gsSupV2.v0.FlushWithFlags = DRIMODFlushWithFlags;
++   gsSupV2.v0.CreateImageFromName = DRIMODCreateImageFromName;
++   gsSupV2.v0.CreateImageFromRenderbuffer =
++      DRIMODCreateImageFromRenderbuffer;
++   gsSupV2.v0.DestroyImage = DRIMODDestroyImage;
++   gsSupV2.v0.CreateImage = DRIMODCreateImage;
++   gsSupV2.v0.QueryImage = DRIMODQueryImage;
++   gsSupV2.v0.DupImage = DRIMODDupImage;
++   gsSupV2.v0.ValidateImageUsage = DRIMODValidateImageUsage;
++   gsSupV2.v0.CreateImageFromNames = DRIMODCreateImageFromNames;
++   gsSupV2.v0.FromPlanar = DRIMODFromPlanar;
++   gsSupV2.v0.CreateImageFromTexture = DRIMODCreateImageFromTexture;
++   gsSupV2.v0.CreateImageFromFDs = DRIMODCreateImageFromFDs;
++   gsSupV2.v0.CreateImageFromDMABufs = DRIMODCreateImageFromDMABufs;
++   gsSupV2.v0.GetImageCapabilities = DRIMODGetImageCapabilities;
++   gsSupV2.v0.BlitImage = DRIMODBlitImage;
++   gsSupV2.v0.MapImage = DRIMODMapImage;
++   gsSupV2.v0.UnmapImage = DRIMODUnmapImage;
++   gsSupV2.v0.CreateImageWithModifiers = DRIMODCreateImageWithModifiers;
++   gsSupV2.v0.CreateImageFromDMABufs2 = DRIMODCreateImageFromDMABufs2;
++   gsSupV2.v0.QueryDMABufFormats = DRIMODQueryDMABufFormats;
++   gsSupV2.v0.QueryDMABufModifiers = DRIMODQueryDMABufModifiers;
++   gsSupV2.v0.QueryDMABufFormatModifierAttribs =
++      DRIMODQueryDMABufFormatModifierAttribs;
++   gsSupV2.v0.CreateImageFromRenderBuffer2 =
++      DRIMODCreateImageFromRenderBuffer2;
++   gsSupV2.v0.CreateImageFromBuffer = DRIMODCreateImageFromBuffer;
++   gsSupV2.v0.QueryRendererInteger = DRIMODQueryRendererInteger;
++   gsSupV2.v0.QueryRendererString = DRIMODQueryRendererString;
++   gsSupV2.v0.CreateFence = DRIMODCreateFence;
++   gsSupV2.v0.DestroyFence = DRIMODDestroyFence;
++   gsSupV2.v0.ClientWaitSync = DRIMODClientWaitSync;
++   gsSupV2.v0.ServerWaitSync = DRIMODServerWaitSync;
++   gsSupV2.v0.GetFenceCapabilities = DRIMODGetFenceCapabilities;
++   gsSupV2.v0.CreateFenceFD = DRIMODCreateFenceFD;
++   gsSupV2.v0.GetFenceFD = DRIMODGetFenceFD;
++   gsSupV2.v0.GetNumAPIProcs = DRIMODGetNumAPIProcs;
++   gsSupV2.v0.GetAPIProcName = DRIMODGetAPIProcName;
++   gsSupV2.v0.GetAPIProcAddress = DRIMODGetAPIProcAddress;
++   gsSupV2.v0.SetDamageRegion = DRIMODSetDamageRegion;
++
++   PVRDRIAdjustExtensions(0, 0);
 +}
 +
 +bool
-+PVRDRICompatInit(const PVRDRICallbacks *psCallbacks, unsigned uVersion)
++PVRDRICompatInit(const PVRDRICallbacks *psCallbacks, unsigned int uVersion,
++                 const struct PVRDRICallbacksV2 *psCallbacksV2,
++                 unsigned int uVersionV2, unsigned int uMinVersionV2)
 +{
-+	bool res;
++   bool (*pfRegisterVersionedCallbacks)(const PVRDRICallbacks *psCallbacks,
++                                        unsigned int uVersion);
++   bool (*pfRegisterVersionedCallbacksV2)(const void *pvCallbacks,
++                                          unsigned int uVersion,
++                                          unsigned int uMinVersion);
++   bool res;
 +
-+	bool (*pfRegisterVersionedCallbacks)(const PVRDRICallbacks *psCallbacks,
-+						    unsigned uVersion) = NULL;
++   CompatLock();
++   res = (giSupLibRef++ != 0);
++   if (res)
++      goto Exit;
 +
-+	CompatLock();
-+	res = (giSupLibRef++ != 0);
-+	if (res)
-+	{
-+		goto Exit;
-+	}
++   res = LoadSupportLib();
++   if (!res)
++      goto Exit;
 +
-+	res = LoadSupportLib();
-+	if (!res)
-+	{
-+		goto Exit;
-+	}
++   LookupFunc(PVRDRIRegisterVersionedCallbacksV2,
++              pfRegisterVersionedCallbacksV2);
 +
-+	LookupFunc(PVRDRIRegisterVersionedCallbacks, pfRegisterVersionedCallbacks);
++   LookupFunc(PVRDRIRegisterVersionedCallbacks,
++              pfRegisterVersionedCallbacks);
 +
-+	if (pfRegisterVersionedCallbacks != (void *)&DumSupFunc)
-+	{
-+		res = pfRegisterVersionedCallbacks(psCallbacks, uVersion);
-+	}
-+	else
-+	{
-+		res = RegisterCallbacksCompat(psCallbacks);
-+	}
++   res = (pfRegisterVersionedCallbacksV2 != NULL) ||
++      (pfRegisterVersionedCallbacks != NULL);
++   if (!res)
++      goto Exit;
++
++   if (pfRegisterVersionedCallbacksV2) {
++      res = pfRegisterVersionedCallbacksV2(psCallbacksV2,
++                                           uVersionV2, uMinVersionV2);
++   } else {
++      res = pfRegisterVersionedCallbacks(psCallbacks, uVersion);
++      if (res)
++         SetupLocalDRISupportInterfaceV2();
++   }
++
 +Exit:
-+	if (!res)
-+	{
-+		CompatDeinit();
-+		giSupLibRef--;
-+	}
-+	CompatUnlock();
++   if (!res) {
++      CompatDeinit();
++      giSupLibRef--;
++   }
++   CompatUnlock();
 +
-+	return res;
++   return res;
 +}
 +
 +void
 +PVRDRICompatDeinit(void)
 +{
-+	CompatLock();
-+
-+	if (--giSupLibRef == 0)
-+	{
-+		CompatDeinit();
-+	}
-+
-+	CompatUnlock();
++   CompatLock();
++   if (--giSupLibRef == 0)
++      CompatDeinit();
++   CompatUnlock();
 +}
 +
 +bool
 +PVRDRIRegisterSupportInterfaceV1(const PVRDRISupportInterface *psInterface,
-+				 unsigned uVersion)
++                                 unsigned int uVersion)
 +{
-+	size_t uSize;
++   size_t uSize;
 +
-+	/* The "default" case should be associated with the latest version */
-+	switch (uVersion)
-+	{
-+		default:
-+		case 2:
-+			uSize = PVRDRIInterfaceSize(GetFenceFd);
-+			break;
-+		case 1:
-+			uSize = PVRDRIInterfaceSize(CreateDrawableWithConfig);
-+			break;
-+		case 0:
-+			uSize = PVRDRIInterfaceSize(QueryModifiers);
-+			break;
-+	}
++   memset(&gsSup, 0, sizeof(gsSup));
++   memset(&gsSupV2, 0, sizeof(gsSupV2));
 +
-+	memcpy(&gsSup, psInterface, uSize);
++   /* The "default" case should be associated with the latest version */
++   switch (uVersion) {
++   default:
++   case 2:
++      uSize = PVRDRIInterfaceSize(GetFenceFd);
++      break;
++   case 1:
++   case 0:
++      return false;
++   }
 +
-+	guSupVer = uVersion;
++   memcpy(&gsSup, psInterface, uSize);
 +
-+	return true;
++   return true;
 +}
 +
++bool
++MODSUPRegisterSupportInterfaceV2(const void *pvInterface,
++                                 unsigned int uVersion,
++                                 unsigned int uMinVersion)
++{
++   size_t uStart, uEnd;
++
++   memset(&gsSup, 0, sizeof(gsSup));
++   memset(&gsSupV2, 0, sizeof(gsSupV2));
++
++   if (uVersion < uMinVersion)
++      return false;
++
++   /*
++    * Minimum versions we support. To prevent the accumulation of old unused
++    * interfaces in the PVRDRIInterfaceV2 structure, the caller specifies the
++    * minimum version it supports. This will be pointed to be the psInterface
++    * argument. Assuming we support that version, we must copy the structure
++    * passed to us into the correct place in our version of the interface
++    * structure.
++    */
++   switch (uMinVersion) {
++   case 0:
++      uStart = PVRDRIInterfaceV2Start(v0);
++      break;
++   case 1:
++      /* Version 1 requires version 0 */
++      return false;
++   default:
++      return false;
++   }
++
++   /* The "default" case should be associated with the latest version */
++   switch (uVersion) {
++   default:
++   case 1:
++      /* Version 1 is an extension of version 0 */
++      if (uMinVersion > 0)
++         return false;
++
++      uEnd = PVRDRIInterfaceV2End(v1);
++      break;
++   case 0:
++      uEnd = PVRDRIInterfaceV2End(v0);
++      break;
++   }
++
++   memcpy(((char *) &gsSupV2) + uStart, pvInterface, uEnd - uStart);
++
++   PVRDRIAdjustExtensions(uVersion, uMinVersion);
++
++   return true;
++}
++
++struct DRISUPScreen *
++DRISUPCreateScreen(struct __DRIscreenRec *psDRIScreen, int iFD,
++                   bool bUseInvalidate, void *pvLoaderPrivate,
++                   const struct __DRIconfigRec ***pppsConfigs,
++                   int *piMaxGLES1Version, int *piMaxGLES2Version)
++{
++   CallFuncV2(v0.CreateScreen,
++              psDRIScreen, iFD, bUseInvalidate, pvLoaderPrivate, pppsConfigs,
++              piMaxGLES1Version, piMaxGLES2Version);
++
++   return NULL;
++}
++
++void
++DRISUPDestroyScreen(struct DRISUPScreen *psDRISUPScreen)
++{
++   CallFuncV2(v0.DestroyScreen,
++              psDRISUPScreen);
++}
++
++unsigned int
++DRISUPCreateContext(PVRDRIAPIType eAPI, PVRDRIConfig *psPVRDRIConfig,
++                    struct PVRDRIContextConfig *psCtxConfig,
++                    struct __DRIcontextRec *psDRIContext,
++                    struct DRISUPContext *psDRISUPSharedContext,
++                    struct DRISUPScreen *psDRISUPScreen,
++                    struct DRISUPContext **ppsDRISUPContext)
++{
++   CallFuncV2(v0.CreateContext,
++              eAPI, psPVRDRIConfig, psCtxConfig, psDRIContext,
++              psDRISUPSharedContext, psDRISUPScreen, ppsDRISUPContext);
++
++   return PVRDRI_CONTEXT_ERROR_BAD_API;
++}
++
++void
++DRISUPDestroyContext(struct DRISUPContext *psDRISUPContext)
++{
++   CallFuncV2(v0.DestroyContext,
++              psDRISUPContext);
++}
++
++struct DRISUPDrawable *
++DRISUPCreateDrawable(struct __DRIdrawableRec *psDRIDrawable,
++                     struct DRISUPScreen *psDRISUPScreen,
++                     void *pvLoaderPrivate, PVRDRIConfig *psPVRDRIConfig)
++{
++   CallFuncV2(v0.CreateDrawable,
++              psDRIDrawable, psDRISUPScreen, pvLoaderPrivate, psPVRDRIConfig);
++
++   return NULL;
++}
++
++void
++DRISUPDestroyDrawable(struct DRISUPDrawable *psDRISUPDrawable)
++{
++   CallFuncV2(v0.DestroyDrawable,
++              psDRISUPDrawable);
++}
++
++bool
++DRISUPMakeCurrent(struct DRISUPContext *psDRISUPContext,
++                  struct DRISUPDrawable *psDRISUPWrite,
++                  struct DRISUPDrawable *psDRISUPRead)
++{
++   CallFuncV2(v0.MakeCurrent,
++              psDRISUPContext, psDRISUPWrite, psDRISUPRead);
++
++   return false;
++}
++
++bool
++DRISUPUnbindContext(struct DRISUPContext *psDRISUPContext)
++{
++   CallFuncV2(v0.UnbindContext,
++              psDRISUPContext);
++
++   return false;
++}
++
++struct DRISUPBuffer *
++DRISUPAllocateBuffer(struct DRISUPScreen *psDRISUPScreen,
++                     unsigned int uAttachment, unsigned int uFormat,
++                     int iWidth, int iHeight, unsigned int *puName,
++                     unsigned int *puPitch, unsigned int *puCPP,
++                     unsigned int *puFlags)
++{
++   CallFuncV2(v0.AllocateBuffer,
++              psDRISUPScreen, uAttachment, uFormat, iWidth, iHeight, puName,
++              puPitch, puCPP, puFlags);
++
++   return NULL;
++}
++
++void
++DRISUPReleaseBuffer(struct DRISUPScreen *psDRISUPScreen,
++                    struct DRISUPBuffer *psDRISUPBuffer)
++{
++   CallFuncV2(v0.ReleaseBuffer,
++              psDRISUPScreen, psDRISUPBuffer);
++}
++
++void
++DRISUPSetTexBuffer2(struct DRISUPContext *psDRISUPContext, int iTarget,
++                    int iFormat, struct DRISUPDrawable *psDRISUPDrawable)
++{
++   CallFuncV2(v0.SetTexBuffer2,
++              psDRISUPContext, iTarget, iFormat, psDRISUPDrawable);
++}
++
++void
++DRISUPReleaseTexBuffer(struct DRISUPContext *psDRISUPContext, int iTarget,
++                       struct DRISUPDrawable *psDRISUPDrawable)
++{
++   CallFuncV2(v0.ReleaseTexBuffer,
++              psDRISUPContext, iTarget, psDRISUPDrawable);
++}
++
++void
++DRISUPFlush(struct DRISUPDrawable *psDRISUPDrawable)
++{
++   CallFuncV2(v0.Flush,
++              psDRISUPDrawable);
++}
++
++void
++DRISUPInvalidate(struct DRISUPDrawable *psDRISUPDrawable)
++{
++   CallFuncV2(v0.Invalidate,
++              psDRISUPDrawable);
++}
++
++void
++DRISUPFlushWithFlags(struct DRISUPContext *psDRISUPContext,
++                     struct DRISUPDrawable *psDRISUPDrawable,
++                     unsigned int uFlags, unsigned int uThrottleReason)
++{
++   CallFuncV2(v0.FlushWithFlags,
++              psDRISUPContext, psDRISUPDrawable, uFlags, uThrottleReason);
++}
++
++__DRIimage *
++DRISUPCreateImageFromName(struct DRISUPScreen *psDRISUPScreen,
++                          int iWidth, int iHeight, int iFourCC, int iName,
++                          int iPitch, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromName,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, iName, iPitch,
++              pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromRenderbuffer(struct DRISUPContext *psDRISUPContext,
++                                  int iRenderBuffer, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromRenderbuffer,
++              psDRISUPContext, iRenderBuffer, pvLoaderPrivate);
++
++   return NULL;
++}
++
++void
++DRISUPDestroyImage(__DRIimage *psImage)
++{
++   CallFuncV2(v0.DestroyImage, psImage);
++}
++
++__DRIimage *
++DRISUPCreateImage(struct DRISUPScreen *psDRISUPScreen,
++                  int iWidth, int iHeight, int iFourCC, unsigned int uUse,
++                  void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImage,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, uUse, pvLoaderPrivate);
++
++   return NULL;
++}
++
++bool
++DRISUPQueryImage(__DRIimage *psImage, int iAttrib, int *piValue)
++{
++   CallFuncV2(v0.QueryImage,
++              psImage, iAttrib, piValue);
++
++   return false;
++}
++
++__DRIimage *
++DRISUPDupImage(__DRIimage *psImage, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.DupImage,
++              psImage, pvLoaderPrivate);
++
++   return NULL;
++}
++
++bool
++DRISUPValidateImageUsage(__DRIimage *psImage, unsigned int uUse)
++{
++   CallFuncV2(v0.ValidateImageUsage,
++              psImage, uUse);
++
++   return false;
++}
++
++__DRIimage *
++DRISUPCreateImageFromNames(struct DRISUPScreen *psDRISUPScreen,
++                           int iWidth, int iHeight, int iFourCC,
++                           int *piNames, int iNumNames,
++                           int *piStrides, int *piOffsets,
++                           void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromNames,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, piNames, iNumNames,
++              piStrides, piOffsets, pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPFromPlanar(__DRIimage *psImage, int iPlane, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.FromPlanar,
++              psImage, iPlane, pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromTexture(struct DRISUPContext *psDRISUPContext,
++                             int iTarget, unsigned int uTexture, int iDepth,
++                             int iLevel, unsigned int *puError,
++                             void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromTexture,
++              psDRISUPContext, iTarget, uTexture, iDepth, iLevel, puError,
++              pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromFDs(struct DRISUPScreen *psDRISUPcreen,
++                         int iWidth, int iHeight, int iFourCC,
++                         int *piFDs, int iNumFDs, int *piStrides,
++                         int *piOffsets, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromFDs,
++              psDRISUPcreen, iWidth, iHeight, iFourCC, piFDs, iNumFDs,
++              piStrides, piOffsets, pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromDmaBufs(struct DRISUPScreen *psDRISUPScreen,
++                             int iWidth, int iHeight, int iFourCC,
++                             int *piFDs, int iNumFDs,
++                             int *piStrides, int *piOffsets,
++                             unsigned int uColorSpace,
++                             unsigned int uSampleRange,
++                             unsigned int uHorizSiting,
++                             unsigned int uVertSiting,
++                             unsigned int *puError,
++                             void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromDMABufs,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, piFDs, iNumFDs,
++              piStrides, piOffsets, uColorSpace, uSampleRange,
++              uHorizSiting, uVertSiting, puError, pvLoaderPrivate);
++
++   return NULL;
++}
++
++int
++DRISUPGetImageCapabilities(struct DRISUPScreen *psDRISUPScreen)
++{
++   CallFuncV2(v0.GetImageCapabilities,
++              psDRISUPScreen);
++
++   return 0;
++}
++
++void
++DRISUPBlitImage(struct DRISUPContext *psDRISUPContext,
++                __DRIimage *psDst, __DRIimage *psSrc, int iDstX0, int iDstY0,
++                int iDstWidth, int iDstHeight, int iSrcX0, int iSrcY0,
++                int iSrcWidth, int iSrcHeight, int iFlushFlag)
++{
++   CallFuncV2(v0.BlitImage,
++              psDRISUPContext, psDst, psSrc, iDstX0, iDstY0,
++              iDstWidth, iDstHeight, iSrcX0, iSrcY0,
++              iSrcWidth, iSrcHeight, iFlushFlag);
++}
++
++void *
++DRISUPMapImage(struct DRISUPContext *psDRISUPContext, __DRIimage* psImage,
++               int iX0, int iY0, int iWidth, int iHeight, unsigned int uFlags,
++               int *piStride, void **ppvData)
++{
++   CallFuncV2(v0.MapImage,
++              psDRISUPContext, psImage, iX0, iY0, iWidth, iHeight, uFlags,
++              piStride, ppvData);
++
++   return NULL;
++}
++
++void
++DRISUPUnmapImage(struct DRISUPContext *psDRISUPContext, __DRIimage *psImage,
++                 void *pvData)
++{
++   CallFuncV2(v0.UnmapImage,
++              psDRISUPContext, psImage, pvData);
++}
++
++__DRIimage *
++DRISUPCreateImageWithModifiers(struct DRISUPScreen *psDRISUPScreen,
++                               int iWidth, int iHeight, int iFourCC,
++                               const uint64_t *puModifiers,
++                               const unsigned int uModifierCount,
++                               void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageWithModifiers,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, puModifiers,
++              uModifierCount, pvLoaderPrivate);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromDMABufs2(struct DRISUPScreen *psDRISUPScreen,
++                              int iWidth, int iHeight, int iFourCC,
++                              uint64_t uModifier, int *piFDs, int iNumFDs,
++                              int *piStrides, int *piOffsets,
++                              unsigned int uColorSpace,
++                              unsigned int uSampleRange,
++                              unsigned int uHorizSiting,
++                              unsigned int uVertSiting,
++                              unsigned int *puError, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromDMABufs2,
++              psDRISUPScreen, iWidth, iHeight, iFourCC, uModifier,
++              piFDs, iNumFDs, piStrides, piOffsets, uColorSpace, uSampleRange,
++              uHorizSiting, uVertSiting, puError, pvLoaderPrivate);
++
++   return NULL;
++}
++
++bool
++DRISUPQueryDMABufFormats(struct DRISUPScreen *psDRISUPScreen, int iMax,
++                         int *piFormats, int *piCount)
++{
++   CallFuncV2(v0.QueryDMABufFormats,
++              psDRISUPScreen, iMax, piFormats, piCount);
++
++   return false;
++}
++
++bool
++DRISUPQueryDMABufModifiers(struct DRISUPScreen *psDRISUPScreen, int iFourCC,
++                           int iMax, uint64_t *puModifiers,
++                           unsigned int *piExternalOnly, int *piCount)
++{
++   CallFuncV2(v0.QueryDMABufModifiers,
++              psDRISUPScreen, iFourCC, iMax, puModifiers, piExternalOnly,
++              piCount);
++
++   return false;
++}
++
++bool
++DRISUPQueryDMABufFormatModifierAttribs(struct DRISUPScreen *psDRISUPScreen,
++                                       uint32_t iFourCC, uint64_t uModifier,
++                                       int iAttrib, uint64_t *puValue)
++{
++   CallFuncV2(v0.QueryDMABufFormatModifierAttribs,
++              psDRISUPScreen, iFourCC, uModifier, iAttrib, puValue);
++
++   return false;
++}
++
++__DRIimage *
++DRISUPCreateImageFromRenderBuffer2(struct DRISUPContext *psDRISUPContext,
++                                   int iRenderBuffer, void *pvLoaderPrivate,
++                                   unsigned int *puError)
++{
++   CallFuncV2(v0.CreateImageFromRenderBuffer2,
++              psDRISUPContext, iRenderBuffer, pvLoaderPrivate, puError);
++
++   return NULL;
++}
++
++__DRIimage *
++DRISUPCreateImageFromBuffer(struct DRISUPContext *psDRISUPContext,
++                            int iTarget, void *pvBuffer,
++                            unsigned int *puError, void *pvLoaderPrivate)
++{
++   CallFuncV2(v0.CreateImageFromBuffer,
++              psDRISUPContext, iTarget, pvBuffer, puError, pvLoaderPrivate);
++
++   return NULL;
++}
++
++int
++DRISUPQueryRendererInteger(struct DRISUPScreen *psDRISUPScreen,
++                           int iAttribute, unsigned int *puValue)
++{
++   CallFuncV2(v0.QueryRendererInteger,
++              psDRISUPScreen, iAttribute, puValue);
++
++   return -1;
++}
++
++int
++DRISUPQueryRendererString(struct DRISUPScreen *psDRISUPScreen,
++                          int iAttribute, const char **ppszValue)
++{
++   CallFuncV2(v0.QueryRendererString,
++              psDRISUPScreen, iAttribute, ppszValue);
++
++   return -1;
++}
++
++void *
++DRISUPCreateFence(struct DRISUPContext *psDRISUPContext)
++{
++   CallFuncV2(v0.CreateFence,
++              psDRISUPContext);
++
++   return NULL;
++}
++
++void
++DRISUPDestroyFence(struct DRISUPScreen *psDRISUPScreen, void *pvFence)
++{
++   CallFuncV2(v0.DestroyFence,
++              psDRISUPScreen, pvFence);
++}
++
++bool
++DRISUPClientWaitSync(struct DRISUPContext *psDRISUPContext, void *pvFence,
++                     unsigned int uFlags, uint64_t uTimeout)
++{
++   CallFuncV2(v0.ClientWaitSync,
++              psDRISUPContext, pvFence, uFlags, uTimeout);
++
++   return false;
++}
++
++void
++DRISUPServerWaitSync(struct DRISUPContext *psDRISUPContext, void *pvFence,
++                     unsigned int uFlags)
++{
++   CallFuncV2(v0.ServerWaitSync,
++              psDRISUPContext, pvFence, uFlags);
++}
++
++unsigned int
++DRISUPGetFenceCapabilities(struct DRISUPScreen *psDRISUPScreen)
++{
++   CallFuncV2(v0.GetFenceCapabilities,
++              psDRISUPScreen);
++
++   return 0;
++}
++
++void *
++DRISUPCreateFenceFD(struct DRISUPContext *psDRISUPContext, int iFD)
++{
++   CallFuncV2(v0.CreateFenceFD,
++              psDRISUPContext, iFD);
++
++   return NULL;
++}
++
++int
++DRISUPGetFenceFD(struct DRISUPScreen *psDRISUPScreen, void *pvFence)
++{
++   CallFuncV2(v0.GetFenceFD,
++              psDRISUPScreen, pvFence);
++
++   return -1;
++}
++
++void *
++DRISUPGetFenceFromCLEvent(struct DRISUPScreen *psDRISUPScreen,
++                          intptr_t iCLEvent)
++{
++   CallFuncV2(v1.GetFenceFromCLEvent,
++              psDRISUPScreen, iCLEvent);
++
++   return NULL;
++}
++
++unsigned int
++DRISUPGetNumAPIProcs(struct DRISUPScreen *psDRISUPScreen,
++                     PVRDRIAPIType eAPI)
++{
++   CallFuncV2(v0.GetNumAPIProcs,
++              psDRISUPScreen, eAPI);
++
++   return 0;
++}
++
++const char *
++DRISUPGetAPIProcName(struct DRISUPScreen *psDRISUPScreen, PVRDRIAPIType eAPI,
++                     unsigned int uIndex)
++{
++   CallFuncV2(v0.GetAPIProcName,
++              psDRISUPScreen, eAPI, uIndex);
++
++   return NULL;
++}
++
++void *
++DRISUPGetAPIProcAddress(struct DRISUPScreen *psDRISUPScreen,
++                        PVRDRIAPIType eAPI, unsigned int uIndex)
++{
++   CallFuncV2(v0.GetAPIProcAddress,
++              psDRISUPScreen, eAPI, uIndex);
++
++   return NULL;
++}
++
++void
++DRISUPSetDamageRegion(struct DRISUPDrawable *psDRISUPDrawable,
++                      unsigned int uNRects, int *piRects)
++{
++   CallFuncV2(v0.SetDamageRegion,
++              psDRISUPDrawable, uNRects, piRects);
++}
++
++/******************************************************************************
++ * PVR DRI Support interface, version 1.
++ * Everything below this point is deprecated.
++ *****************************************************************************/
++
 +PVRDRIDeviceType
 +PVRDRIGetDeviceTypeFromFd(int iFd)
 +{
-+	CallFuncLegacy(PVRDRIGetDeviceTypeFromFd,
-+		       GetDeviceTypeFromFd,
-+		       iFd);
++   CallFunc(GetDeviceTypeFromFd, iFd);
 +
-+	return PVRDRI_DEVICE_TYPE_INVALID;
++   return PVRDRI_DEVICE_TYPE_INVALID;
 +}
 +
 +
 +bool
 +PVRDRIIsFirstScreen(PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIIsFirstScreen,
-+		       IsFirstScreen,
-+		       psScreenImpl);
++   CallFunc(IsFirstScreen, psScreenImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +
 +uint32_t
 +PVRDRIPixFmtGetDepth(IMG_PIXFMT eFmt)
 +{
-+	CallFuncLegacy(PVRDRIPixFmtGetDepth,
-+		       PixFmtGetDepth,
-+		       eFmt);
++   CallFunc(PixFmtGetDepth, eFmt);
 +
-+	return 0;
++   return 0;
 +}
 +
 +uint32_t
 +PVRDRIPixFmtGetBPP(IMG_PIXFMT eFmt)
 +{
-+	CallFuncLegacy(PVRDRIPixFmtGetBPP,
-+		       PixFmtGetBPP,
-+		       eFmt);
++   CallFunc(PixFmtGetBPP, eFmt);
 +
-+	return 0;
++   return 0;
 +}
 +
 +uint32_t
 +PVRDRIPixFmtGetBlockSize(IMG_PIXFMT eFmt)
 +{
-+	CallFuncLegacy(PVRDRIPixFmtGetBlockSize,
-+		       PixFmtGetBlockSize,
-+		       eFmt);
++   CallFunc(PixFmtGetBlockSize, eFmt);
 +
-+	return 0;
++   return 0;
 +}
 +
 +PVRDRIScreenImpl *
 +PVRDRICreateScreenImpl(int iFd)
 +{
-+	CallFuncLegacy(PVRDRICreateScreenImpl,
-+		       CreateScreen,
-+		       iFd);
++   CallFunc(CreateScreen, iFd);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +void
 +PVRDRIDestroyScreenImpl(PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIDestroyScreenImpl,
-+		       DestroyScreen,
-+		       psScreenImpl);
++   CallFunc(DestroyScreen, psScreenImpl);
 +}
 +
 +int
-+PVRDRIAPIVersion(PVRDRIAPIType eAPI,
-+		 PVRDRIAPISubType eAPISub,
-+		 PVRDRIScreenImpl *psScreenImpl)
++PVRDRIAPIVersion(PVRDRIAPIType eAPI, PVRDRIAPISubType eAPISub,
++                 PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIAPIVersion,
-+		       APIVersion,
-+		       eAPI,
-+		       eAPISub,
-+		       psScreenImpl);
++   CallFunc(APIVersion, eAPI, eAPISub, psScreenImpl);
 +
-+	return 0;
++   return 0;
 +}
 +
 +void *
-+PVRDRIEGLGetLibHandle(PVRDRIAPIType eAPI,
-+		      PVRDRIScreenImpl *psScreenImpl)
++PVRDRIEGLGetLibHandle(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIEGLGetLibHandle,
-+		       EGLGetLibHandle,
-+		       eAPI,
-+		       psScreenImpl);
++   CallFunc(EGLGetLibHandle, eAPI, psScreenImpl);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +PVRDRIGLAPIProc
-+PVRDRIEGLGetProcAddress(PVRDRIAPIType eAPI,
-+			PVRDRIScreenImpl *psScreenImpl,
-+			const char *psProcName)
++PVRDRIEGLGetProcAddress(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                        const char *psProcName)
 +{
-+	CallFuncLegacy(PVRDRIEGLGetProcAddress,
-+		       EGLGetProcAddress,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psProcName);
++   CallFunc(EGLGetProcAddress, eAPI, psScreenImpl, psProcName);
 +
-+	return (PVRDRIGLAPIProc)NULL;
++   return (PVRDRIGLAPIProc) NULL;
 +}
 +
 +bool
-+PVRDRIEGLFlushBuffers(PVRDRIAPIType eAPI,
-+		      PVRDRIScreenImpl *psScreenImpl,
-+		      PVRDRIContextImpl *psContextImpl,
-+		      PVRDRIDrawableImpl *psDrawableImpl,
-+		      bool bFlushAllSurfaces,
-+		      bool bSwapBuffers,
-+		      bool bWaitForHW)
++PVRDRIEGLFlushBuffers(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                      PVRDRIContextImpl *psContextImpl,
++                      PVRDRIDrawableImpl *psDrawableImpl,
++                      bool bFlushAllSurfaces, bool bSwapBuffers,
++                      bool bWaitForHW)
 +{
-+	CallFuncLegacy(PVRDRIEGLFlushBuffers,
-+		       EGLFlushBuffers,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psDrawableImpl,
-+		       bFlushAllSurfaces,
-+		       bSwapBuffers,
-+		       bWaitForHW);
++   CallFunc(EGLFlushBuffers, eAPI, psScreenImpl, psContextImpl,
++            psDrawableImpl, bFlushAllSurfaces, bSwapBuffers, bWaitForHW);
 +
-+	return false;
++   return false;
 +}
 +
 +void
 +PVRDRIEGLMarkRendersurfaceInvalid(PVRDRIAPIType eAPI,
-+				  PVRDRIScreenImpl *psScreenImpl,
-+				  PVRDRIContextImpl *psContextImpl)
++                                  PVRDRIScreenImpl *psScreenImpl,
++                                  PVRDRIContextImpl *psContextImpl)
 +{
-+	CallFuncLegacy(PVRDRIEGLMarkRendersurfaceInvalid,
-+		       EGLMarkRendersurfaceInvalid,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl);
++   CallFunc(EGLMarkRendersurfaceInvalid, eAPI, psScreenImpl, psContextImpl);
 +}
 +
-+static inline void PVRDRIConfigFromMesa(PVRDRIConfigInfo *psConfigInfo,
-+					const struct gl_config *psGLMode)
++unsigned int
++PVRDRICreateContextV1(PVRDRIScreenImpl *psScreenImpl,
++                      PVRDRIContextImpl *psSharedContextImpl,
++                      PVRDRIConfig *psConfig,
++                      PVRDRIAPIType eAPI, PVRDRIAPISubType eAPISub,
++                      unsigned int uMajorVersion, unsigned int uMinorVersion,
++                      uint32_t uFlags, bool bNotifyReset,
++                      unsigned int uPriority,
++                      PVRDRIContextImpl **ppsContextImpl)
 +{
-+	memset(psConfigInfo, 0, sizeof(*psConfigInfo));
++   CallFunc(CreateContextV1, psScreenImpl, psSharedContextImpl, psConfig,
++            eAPI, eAPISub, uMajorVersion, uMinorVersion, uFlags, bNotifyReset,
++            uPriority, ppsContextImpl);
 +
-+	if (psGLMode)
-+	{
-+		psConfigInfo->samples           = psGLMode->samples;
-+		psConfigInfo->redBits           = psGLMode->redBits;
-+		psConfigInfo->greenBits         = psGLMode->greenBits;
-+		psConfigInfo->blueBits          = psGLMode->blueBits;
-+		psConfigInfo->alphaBits         = psGLMode->alphaBits;
-+		psConfigInfo->rgbBits           = psGLMode->rgbBits;
-+		psConfigInfo->depthBits         = psGLMode->depthBits;
-+		psConfigInfo->stencilBits       = psGLMode->stencilBits;
-+		psConfigInfo->doubleBufferMode  = psGLMode->doubleBufferMode;
-+
-+		psConfigInfo->sampleBuffers     = psGLMode->sampleBuffers;
-+		psConfigInfo->bindToTextureRgb  = psGLMode->bindToTextureRgb;
-+		psConfigInfo->bindToTextureRgba = psGLMode->bindToTextureRgba;
-+	}
-+}
-+
-+unsigned
-+PVRDRISupportCreateContext(PVRDRIScreenImpl *psScreenImpl,
-+			   PVRDRIContextImpl *psSharedContextImpl,
-+			   PVRDRIConfig *psConfig,
-+			   PVRDRIAPIType eAPI,
-+			   PVRDRIAPISubType eAPISub,
-+			   unsigned uMajorVersion,
-+			   unsigned uMinorVersion,
-+			   uint32_t uFlags,
-+			   bool bNotifyReset,
-+			   unsigned uPriority,
-+			   PVRDRIContextImpl **ppsContextImpl)
-+{
-+	PVRDRIConfigInfo sConfigInfo;
-+
-+	CallFunc(CreateContextV1, 1,
-+		 psScreenImpl, psSharedContextImpl, psConfig, eAPI, eAPISub,
-+		 uMajorVersion, uMinorVersion, uFlags, bNotifyReset, uPriority,
-+		 ppsContextImpl);
-+
-+	PVRDRIConfigFromMesa(&sConfigInfo, &psConfig->sGLMode);
-+
-+	CallFuncLegacy(PVRDRICreateContextImpl,
-+		       CreateContext,
-+		       ppsContextImpl,
-+		       eAPI,
-+		       eAPISub,
-+		       psScreenImpl,
-+		       &sConfigInfo,
-+		       uMajorVersion,
-+		       uMinorVersion,
-+		       uFlags,
-+		       bNotifyReset,
-+		       uPriority,
-+		       psSharedContextImpl);
-+
-+	return PVRDRI_CONTEXT_ERROR_BAD_API;
++   return PVRDRI_CONTEXT_ERROR_BAD_API;
 +}
 +
 +void
-+PVRDRIDestroyContextImpl(PVRDRIContextImpl *psContextImpl,
-+			 PVRDRIAPIType eAPI,
-+			 PVRDRIScreenImpl *psScreenImpl)
++PVRDRIDestroyContextImpl(PVRDRIContextImpl *psContextImpl, PVRDRIAPIType eAPI,
++                         PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIDestroyContextImpl,
-+		       DestroyContext,
-+		       psContextImpl,
-+		       eAPI,
-+		       psScreenImpl);
++   CallFunc(DestroyContext, psContextImpl, eAPI, psScreenImpl);
 +}
 +
 +bool
-+PVRDRIMakeCurrentGC(PVRDRIAPIType eAPI,
-+		    PVRDRIScreenImpl *psScreenImpl,
-+		    PVRDRIContextImpl *psContextImpl,
-+		    PVRDRIDrawableImpl *psWriteImpl,
-+		    PVRDRIDrawableImpl *psReadImpl)
++PVRDRIMakeCurrentGC(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                    PVRDRIContextImpl *psContextImpl,
++                    PVRDRIDrawableImpl *psWriteImpl,
++                    PVRDRIDrawableImpl *psReadImpl)
 +{
-+	CallFuncLegacy(PVRDRIMakeCurrentGC,
-+		       MakeCurrentGC,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psWriteImpl,
-+		       psReadImpl);
++   CallFunc(MakeCurrentGC, eAPI, psScreenImpl, psContextImpl, psWriteImpl,
++            psReadImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +void
-+PVRDRIMakeUnCurrentGC(PVRDRIAPIType eAPI,
-+		      PVRDRIScreenImpl *psScreenImpl)
++PVRDRIMakeUnCurrentGC(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIMakeUnCurrentGC,
-+		       MakeUnCurrentGC,
-+		       eAPI,
-+		       psScreenImpl);
++   CallFunc(MakeUnCurrentGC, eAPI, psScreenImpl);
 +}
 +
-+unsigned
-+PVRDRIGetImageSource(PVRDRIAPIType eAPI,
-+		     PVRDRIScreenImpl *psScreenImpl,
-+		     PVRDRIContextImpl *psContextImpl,
-+		     uint32_t  uiTarget,
-+		     uintptr_t uiBuffer,
-+		     uint32_t  uiLevel,
-+		     IMGEGLImage *psEGLImage)
++unsigned int
++PVRDRIGetImageSource(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                     PVRDRIContextImpl *psContextImpl, uint32_t uiTarget,
++                     uintptr_t uiBuffer, uint32_t uiLevel,
++                     IMGEGLImage *psEGLImage)
 +{
-+	CallFuncLegacy(PVRDRIGetImageSource,
-+		       GetImageSource,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       uiTarget,
-+		       uiBuffer,
-+		       uiLevel,
-+		       psEGLImage);
++   CallFunc(GetImageSource, eAPI, psScreenImpl, psContextImpl, uiTarget,
++            uiBuffer, uiLevel, psEGLImage);
 +
-+	return PVRDRI_IMAGE_ERROR_BAD_MATCH;
++   return PVRDRI_IMAGE_ERROR_BAD_MATCH;
 +}
 +
 +bool
-+PVRDRI2BindTexImage(PVRDRIAPIType eAPI,
-+		    PVRDRIScreenImpl *psScreenImpl,
-+		    PVRDRIContextImpl *psContextImpl,
-+		    PVRDRIDrawableImpl *psDrawableImpl)
++PVRDRI2BindTexImage(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                    PVRDRIContextImpl *psContextImpl,
++                    PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVRDRI2BindTexImage,
-+		       BindTexImage,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psDrawableImpl);
++   CallFunc(BindTexImage, eAPI, psScreenImpl, psContextImpl, psDrawableImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +void
-+PVRDRI2ReleaseTexImage(PVRDRIAPIType eAPI,
-+		       PVRDRIScreenImpl *psScreenImpl,
-+		       PVRDRIContextImpl *psContextImpl,
-+		       PVRDRIDrawableImpl *psDrawableImpl)
++PVRDRI2ReleaseTexImage(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                       PVRDRIContextImpl *psContextImpl,
++                       PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVRDRI2ReleaseTexImage,
-+		       ReleaseTexImage,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psDrawableImpl);
++   CallFunc(ReleaseTexImage, eAPI, psScreenImpl, psContextImpl, psDrawableImpl);
 +}
 +
 +PVRDRIDrawableImpl *
-+PVRDRICreateDrawableImpl(PVRDRIDrawable *psPVRDrawable)
++PVRDRICreateDrawableWithConfig(PVRDRIDrawable *psPVRDrawable,
++                               PVRDRIConfig *psConfig)
 +{
-+	CallFuncLegacy(PVRDRICreateDrawableImpl,
-+		       CreateDrawable,
-+		       psPVRDrawable);
++   CallFunc(CreateDrawableWithConfig, psPVRDrawable, psConfig);
 +
-+	return NULL;
-+}
-+
-+PVRDRIDrawableImpl *
-+PVRDRISupportCreateDrawable(PVRDRIDrawable *psPVRDrawable,
-+			    PVRDRIConfig *psConfig)
-+{
-+	PVRDRIDrawableImpl *psDrawableImpl;
-+	PVRDRIConfigInfo sConfigInfo;
-+	IMG_PIXFMT ePixelFormat;
-+
-+	CallFunc(CreateDrawableWithConfig, 1,
-+		 psPVRDrawable,
-+		 psConfig);
-+
-+	ePixelFormat = PVRDRIGetPixelFormat(&psConfig->sGLMode);
-+	if (ePixelFormat == IMG_PIXFMT_UNKNOWN)
-+	{
-+		__driUtilMessage("%s: Couldn't work out pixel format", __func__);
-+		return NULL;
-+	}
-+
-+	psDrawableImpl = PVRDRICreateDrawableImpl(psPVRDrawable);
-+	if (!psDrawableImpl)
-+	{
-+		return NULL;
-+	}
-+
-+	PVRDRIConfigFromMesa(&sConfigInfo, &psConfig->sGLMode);
-+	if (!PVRDRIEGLDrawableConfigFromGLMode(psDrawableImpl,
-+	                                       &sConfigInfo,
-+	                                       psConfig->iSupportedAPIs,
-+	                                       ePixelFormat))
-+	{
-+		__driUtilMessage("%s: Couldn't derive EGL config", __func__);
-+		PVRDRIDestroyDrawableImpl(psDrawableImpl);
-+		return NULL;
-+	}
-+
-+	return psDrawableImpl;
++   return NULL;
 +}
 +
 +void
 +PVRDRIDestroyDrawableImpl(PVRDRIDrawableImpl *psScreenImpl)
 +{
-+	CallFuncLegacy(PVRDRIDestroyDrawableImpl,
-+		       DestroyDrawable,
-+		       psScreenImpl);
++   CallFunc(DestroyDrawable, psScreenImpl);
 +}
 +
 +bool
 +PVREGLDrawableCreate(PVRDRIScreenImpl *psScreenImpl,
-+		     PVRDRIDrawableImpl *psDrawableImpl)
++                     PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVREGLDrawableCreate,
-+		       EGLDrawableCreate,
-+		       psScreenImpl,
-+		       psDrawableImpl);
++   CallFunc(EGLDrawableCreate, psScreenImpl, psDrawableImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +bool
 +PVREGLDrawableRecreate(PVRDRIScreenImpl *psScreenImpl,
-+		       PVRDRIDrawableImpl *psDrawableImpl)
++                       PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVREGLDrawableRecreate,
-+		       EGLDrawableRecreate,
-+		       psScreenImpl,
-+		       psDrawableImpl);
++   CallFunc(EGLDrawableRecreate, psScreenImpl, psDrawableImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +bool
 +PVREGLDrawableDestroy(PVRDRIScreenImpl *psScreenImpl,
-+		      PVRDRIDrawableImpl *psDrawableImpl)
++                      PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVREGLDrawableDestroy,
-+		       EGLDrawableDestroy,
-+		       psScreenImpl,
-+		       psDrawableImpl);
++   CallFunc(EGLDrawableDestroy, psScreenImpl, psDrawableImpl);
 +
-+	return false;
++   return false;
 +}
 +
 +void
 +PVREGLDrawableDestroyConfig(PVRDRIDrawableImpl *psDrawableImpl)
 +{
-+	CallFuncLegacy(PVREGLDrawableDestroyConfig,
-+		       EGLDrawableDestroyConfig,
-+		       psDrawableImpl);
++   CallFunc(EGLDrawableDestroyConfig, psDrawableImpl);
 +}
 +
 +PVRDRIBufferImpl *
-+PVRDRIBufferCreate(PVRDRIScreenImpl *psScreenImpl,
-+		   int iWidth,
-+		   int iHeight,
-+		   unsigned int uiBpp,
-+		   unsigned int uiUseFlags,
-+		   unsigned int *puiStride)
++PVRDRIBufferCreate(PVRDRIScreenImpl *psScreenImpl, int iWidth, int iHeight,
++                   unsigned int uiBpp, unsigned int uiUseFlags,
++                   unsigned int *puiStride)
 +{
-+	CallFuncLegacy(PVRDRIBufferCreate,
-+		       BufferCreate,
-+		       psScreenImpl,
-+		       iWidth,
-+		       iHeight,
-+		       uiBpp,
-+		       uiUseFlags,
-+		       puiStride);
++   CallFunc(BufferCreate, psScreenImpl, iWidth, iHeight, uiBpp, uiUseFlags,
++            puiStride);
 +
-+	return NULL;
++   return NULL;
 +}
 +
-+DefineFunc_IsSupportedLegacy(PVRDRIBufferCreateWithModifiers,
-+			     BufferCreateWithModifiers)
-+
 +PVRDRIBufferImpl *
 +PVRDRIBufferCreateWithModifiers(PVRDRIScreenImpl *psScreenImpl,
-+				int iWidth,
-+				int iHeight,
-+				int format,
-+				IMG_PIXFMT eIMGPixelFormat,
-+				const uint64_t *puiModifiers,
-+				unsigned int uiModifierCount,
-+				unsigned int *puiStride)
++                                int iWidth, int iHeight,
++                                int format, IMG_PIXFMT eIMGPixelFormat,
++                                const uint64_t *puiModifiers,
++                                unsigned int uiModifierCount,
++                                unsigned int *puiStride)
 +{
-+	CallFuncLegacy(PVRDRIBufferCreateWithModifiers,
-+		       BufferCreateWithModifiers,
-+		       psScreenImpl,
-+		       iWidth,
-+		       iHeight,
-+		       format,
-+		       eIMGPixelFormat,
-+		       puiModifiers,
-+		       uiModifierCount,
-+		       puiStride);
++   CallFunc(BufferCreateWithModifiers, psScreenImpl, iWidth, iHeight, format,
++            eIMGPixelFormat, puiModifiers, uiModifierCount, puiStride);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +PVRDRIBufferImpl *
 +PVRDRIBufferCreateFromNames(PVRDRIScreenImpl *psScreenImpl,
-+			    int iWidth,
-+			    int iHeight,
-+			    unsigned uiNumPlanes,
-+			    const int *piName,
-+			    const int *piStride,
-+			    const int *piOffset,
-+			    const unsigned int *puiWidthShift,
-+			    const unsigned int *puiHeightShift)
++                            int iWidth, int iHeight, unsigned int uiNumPlanes,
++                            const int *piName, const int *piStride,
++                            const int *piOffset,
++                            const unsigned int *puiWidthShift,
++                            const unsigned int *puiHeightShift)
 +{
-+	CallFuncLegacy(PVRDRIBufferCreateFromNames,
-+		       BufferCreateFromNames,
-+		       psScreenImpl,
-+		       iWidth,
-+		       iHeight,
-+		       uiNumPlanes,
-+		       piName,
-+		       piStride,
-+		       piOffset,
-+		       puiWidthShift,
-+		       puiHeightShift);
++   CallFunc(BufferCreateFromNames, psScreenImpl, iWidth, iHeight, uiNumPlanes,
++            piName, piStride, piOffset, puiWidthShift, puiHeightShift);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +PVRDRIBufferImpl *
-+PVRDRIBufferCreateFromName(PVRDRIScreenImpl *psScreenImpl,
-+			   int iName,
-+			   int iWidth,
-+			   int iHeight,
-+			   int iStride,
-+			   int iOffset)
-+{
-+	CallFuncLegacy(PVRDRIBufferCreateFromName,
-+		       BufferCreateFromName,
-+		       psScreenImpl,
-+		       iName,
-+		       iWidth,
-+		       iHeight,
-+		       iStride,
-+		       iOffset);
-+
-+	return NULL;
-+}
-+
-+PVRDRIBufferImpl *
-+PVRDRIBufferCreateFromFds(PVRDRIScreenImpl *psScreenImpl,
-+			  int iWidth,
-+			  int iHeight,
-+			  unsigned uiNumPlanes,
-+			  const int *piFd,
-+			  const int *piStride,
-+			  const int *piOffset,
-+			  const unsigned int *puiWidthShift,
-+			  const unsigned int *puiHeightShift)
-+{
-+	CallFuncLegacy(PVRDRIBufferCreateFromFds,
-+		       BufferCreateFromFds,
-+		       psScreenImpl,
-+		       iWidth,
-+		       iHeight,
-+		       uiNumPlanes,
-+		       piFd,
-+		       piStride,
-+		       piOffset,
-+		       puiWidthShift,
-+		       puiHeightShift);
-+
-+	return NULL;
-+}
-+
-+DefineFunc_IsSupportedLegacy(PVRDRIBufferCreateFromFdsWithModifier,
-+			     BufferCreateFromFdsWithModifier)
-+
-+PVRDRIBufferImpl *
 +PVRDRIBufferCreateFromFdsWithModifier(PVRDRIScreenImpl *psScreenImpl,
-+				      int iWidth,
-+				      int iHeight,
-+				      uint64_t uiModifier,
-+				      unsigned uiNumPlanes,
-+				      const int *piFd,
-+				      const int *piStride,
-+				      const int *piOffset,
-+				      const unsigned int *puiWidthShift,
-+				      const unsigned int *puiHeightShift)
++                                      int iWidth, int iHeight,
++                                      uint64_t uiModifier,
++                                      unsigned int uiNumPlanes,
++                                      const int *piFd, const int *piStride,
++                                      const int *piOffset,
++                                      const unsigned int *puiWidthShift,
++                                      const unsigned int *puiHeightShift)
 +{
-+	CallFuncLegacy(PVRDRIBufferCreateFromFdsWithModifier,
-+		       BufferCreateFromFdsWithModifier,
-+		       psScreenImpl,
-+		       iWidth,
-+		       iHeight,
-+		       uiModifier,
-+		       uiNumPlanes,
-+		       piFd,
-+		       piStride,
-+		       piOffset,
-+		       puiWidthShift,
-+		       puiHeightShift);
++   CallFunc(BufferCreateFromFdsWithModifier, psScreenImpl, iWidth, iHeight,
++            uiModifier, uiNumPlanes, piFd, piStride, piOffset,
++            puiWidthShift, puiHeightShift);
 +
-+	if (uiModifier == DRM_FORMAT_MOD_INVALID)
-+	{
-+		CallFuncLegacy(PVRDRIBufferCreateFromFds,
-+			       BufferCreateFromFds,
-+			       psScreenImpl,
-+			       iWidth,
-+			       iHeight,
-+			       uiNumPlanes,
-+			       piFd,
-+			       piStride,
-+			       piOffset,
-+			       puiWidthShift,
-+			       puiHeightShift);
-+	}
-+
-+	return NULL;
++   return NULL;
 +}
 +
 +PVRDRIBufferImpl *
 +PVRDRISubBufferCreate(PVRDRIScreenImpl *psScreen,
-+		      PVRDRIBufferImpl *psParentBuffer,
-+		      int plane)
++                      PVRDRIBufferImpl *psParentBuffer, int plane)
 +{
-+	CallFuncLegacy(PVRDRISubBufferCreate,
-+		       SubBufferCreate,
-+		       psScreen,
-+		       psParentBuffer,
-+		       plane);
++   CallFunc(SubBufferCreate, psScreen, psParentBuffer, plane);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +void
 +PVRDRIBufferDestroy(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferDestroy,
-+		       BufferDestroy,
-+		       psBuffer);
++   CallFunc(BufferDestroy, psBuffer);
 +}
 +
 +int
 +PVRDRIBufferGetFd(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferGetFd,
-+		       BufferGetFd,
-+		       psBuffer);
++   CallFunc(BufferGetFd, psBuffer);
 +
-+	return -1;
++   return -1;
 +}
 +
 +int
 +PVRDRIBufferGetHandle(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferGetHandle,
-+		       BufferGetHandle,
-+		       psBuffer);
++   CallFunc(BufferGetHandle, psBuffer);
 +
-+	return 0;
++   return 0;
 +}
 +
 +uint64_t
 +PVRDRIBufferGetModifier(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferGetModifier,
-+		       BufferGetModifier,
-+		       psBuffer);
++   CallFunc(BufferGetModifier, psBuffer);
 +
-+	return DRM_FORMAT_MOD_INVALID;
++   return DRM_FORMAT_MOD_INVALID;
 +}
 +
 +int
 +PVRDRIBufferGetName(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferGetName,
-+		       BufferGetName,
-+		       psBuffer);
++   CallFunc(BufferGetName, psBuffer);
 +
-+	return 0;
++   return 0;
 +}
 +
-+DefineFunc_IsSupportedLegacy(PVRDRIBufferGetOffset, BufferGetOffset)
-+
 +int
 +PVRDRIBufferGetOffset(PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIBufferGetOffset,
-+		       BufferGetOffset,
-+		       psBuffer);
++   CallFunc(BufferGetOffset, psBuffer);
 +
-+	return 0;
++   return 0;
 +}
 +
 +IMGEGLImage *
 +PVRDRIEGLImageCreate(void)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageCreate,
-+		       EGLImageCreate);
++   CallFunc(EGLImageCreate);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +IMGEGLImage *
-+PVRDRIEGLImageCreateFromBuffer(int iWidth,
-+			       int iHeight,
-+			       int iStride,
-+			       IMG_PIXFMT ePixelFormat,
-+			       IMG_YUV_COLORSPACE eColourSpace,
-+			       IMG_YUV_CHROMA_INTERP eChromaUInterp,
-+			       IMG_YUV_CHROMA_INTERP eChromaVInterp,
-+			       PVRDRIBufferImpl *psBuffer)
++PVRDRIEGLImageCreateFromBuffer(int iWidth, int iHeight, int iStride,
++                               IMG_PIXFMT ePixelFormat,
++                               IMG_YUV_COLORSPACE eColourSpace,
++                               IMG_YUV_CHROMA_INTERP eChromaUInterp,
++                               IMG_YUV_CHROMA_INTERP eChromaVInterp,
++                               PVRDRIBufferImpl *psBuffer)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageCreateFromBuffer,
-+		       EGLImageCreateFromBuffer,
-+		       iWidth,
-+		       iHeight,
-+		       iStride,
-+		       ePixelFormat,
-+		       eColourSpace,
-+		       eChromaUInterp,
-+		       eChromaVInterp,
-+		       psBuffer);
++   CallFunc(EGLImageCreateFromBuffer, iWidth, iHeight, iStride, ePixelFormat,
++            eColourSpace, eChromaUInterp, eChromaVInterp, psBuffer);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +IMGEGLImage *
 +PVRDRIEGLImageCreateFromSubBuffer(IMG_PIXFMT ePixelFormat,
-+				  PVRDRIBufferImpl *psSubBuffer)
++                                  PVRDRIBufferImpl *psSubBuffer)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageCreateFromSubBuffer,
-+		       EGLImageCreateFromSubBuffer,
-+		       ePixelFormat,
-+		       psSubBuffer);
++   CallFunc(EGLImageCreateFromSubBuffer, ePixelFormat, psSubBuffer);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +IMGEGLImage *
 +PVRDRIEGLImageDup(IMGEGLImage *psIn)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageDup,
-+		       EGLImageDup,
-+		       psIn);
++   CallFunc(EGLImageDup, psIn);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +void
 +PVRDRIEGLImageSetCallbackData(IMGEGLImage *psEGLImage, __DRIimage *image)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageSetCallbackData,
-+		       EGLImageSetCallbackData,
-+		       psEGLImage,
-+		       image);
++   CallFunc(EGLImageSetCallbackData, psEGLImage, image);
 +}
 +
 +void
 +PVRDRIEGLImageDestroyExternal(PVRDRIScreenImpl *psScreenImpl,
-+			      IMGEGLImage *psEGLImage,
-+			      PVRDRIEGLImageType eglImageType)
++                              IMGEGLImage *psEGLImage,
++                              PVRDRIEGLImageType eglImageType)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageDestroyExternal,
-+		       EGLImageDestroyExternal,
-+		       psScreenImpl,
-+		       psEGLImage,
-+		       eglImageType);
++   CallFunc(EGLImageDestroyExternal, psScreenImpl, psEGLImage, eglImageType);
 +}
 +
 +void
 +PVRDRIEGLImageFree(IMGEGLImage *psEGLImage)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageFree,
-+		       EGLImageFree,
-+		       psEGLImage);
++   CallFunc(EGLImageFree, psEGLImage);
 +}
 +
 +void
 +PVRDRIEGLImageGetAttribs(IMGEGLImage *psEGLImage,
-+			 PVRDRIBufferAttribs *psAttribs)
++                         PVRDRIBufferAttribs *psAttribs)
 +{
-+	CallFuncLegacy(PVRDRIEGLImageGetAttribs,
-+		       EGLImageGetAttribs,
-+		       psEGLImage,
-+		       psAttribs);
++   CallFunc(EGLImageGetAttribs, psEGLImage, psAttribs);
 +}
 +
 +void *
-+PVRDRICreateFenceImpl(PVRDRIAPIType eAPI,
-+		      PVRDRIScreenImpl *psScreenImpl,
-+		      PVRDRIContextImpl *psContextImpl)
++PVRDRICreateFenceImpl(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                      PVRDRIContextImpl *psContextImpl)
 +{
-+	CallFuncLegacy(PVRDRICreateFenceImpl,
-+		       CreateFence,
-+		       eAPI,
-+		       psScreenImpl,
-+		       psContextImpl);
++   CallFunc(CreateFence, eAPI, psScreenImpl, psContextImpl);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +void *
-+PVRDRICreateFenceFdImpl(PVRDRIAPIType eAPI,
-+		      PVRDRIScreenImpl *psScreenImpl,
-+		      PVRDRIContextImpl *psContextImpl,
-+		      int iFd)
++PVRDRICreateFenceFd(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                    PVRDRIContextImpl *psContextImpl, int iFd)
 +{
-+	CallFunc(CreateFenceFd, 2,
-+		 eAPI,
-+	         psScreenImpl,
-+		 psContextImpl,
-+		 iFd);
++   CallFunc(CreateFenceFd, eAPI, psScreenImpl, psContextImpl, iFd);
 +
-+	return NULL;
++   return NULL;
 +}
 +
-+unsigned PVRDRIGetFenceCapabilitiesImpl(PVRDRIScreenImpl *psScreenImpl)
++unsigned int
++PVRDRIGetFenceCapabilities(PVRDRIScreenImpl *psScreenImpl)
 +{
-+	CallFunc(GetFenceCapabilities, 2,
-+		 psScreenImpl);
++   CallFunc(GetFenceCapabilities, psScreenImpl);
 +
-+	return 0;
++   return 0;
 +}
 +
-+int PVRDRIGetFenceFdImpl(void *psDRIFence)
++int
++PVRDRIGetFenceFd(void *pvFence)
 +{
-+	CallFunc(GetFenceFd, 2,
-+		 psDRIFence);
++   CallFunc(GetFenceFd, pvFence);
 +
-+	return -1;
++   return -1;
 +}
 +
 +void
-+PVRDRIDestroyFenceImpl(void *psDRIFence)
++PVRDRIDestroyFenceImpl(void *pvFence)
 +{
-+	CallFuncLegacy(PVRDRIDestroyFenceImpl,
-+		       DestroyFence,
-+		       psDRIFence);
++   CallFunc(DestroyFence, pvFence);
 +}
 +
 +bool
-+PVRDRIClientWaitSyncImpl(PVRDRIAPIType eAPI,
-+			 PVRDRIContextImpl *psContextImpl,
-+			 void *psDRIFence,
-+			 bool bFlushCommands,
-+			 bool bTimeout,
-+			 uint64_t uiTimeout)
++PVRDRIClientWaitSyncImpl(PVRDRIAPIType eAPI, PVRDRIContextImpl *psContextImpl,
++                         void *pvFence, bool bFlushCommands, bool bTimeout,
++                         uint64_t uiTimeout)
 +{
-+	CallFuncLegacy(PVRDRIClientWaitSyncImpl,
-+		       ClientWaitSync,
-+		       eAPI,
-+		       psContextImpl,
-+		       psDRIFence,
-+		       bFlushCommands,
-+		       bTimeout,
-+		       uiTimeout);
++   CallFunc(ClientWaitSync, eAPI, psContextImpl, pvFence, bFlushCommands,
++            bTimeout, uiTimeout);
 +
-+	return false;
++   return false;
 +}
 +
 +bool
-+PVRDRIServerWaitSyncImpl(PVRDRIAPIType eAPI,
-+			 PVRDRIContextImpl *psContextImpl,
-+			 void *psDRIFence)
++PVRDRIServerWaitSyncImpl(PVRDRIAPIType eAPI, PVRDRIContextImpl *psContextImpl,
++                         void *pvFence)
 +{
-+	CallFuncLegacy(PVRDRIServerWaitSyncImpl,
-+		       ServerWaitSync,
-+		       eAPI,
-+		       psContextImpl,
-+		       psDRIFence);
++   CallFunc(ServerWaitSync, eAPI, psContextImpl, pvFence);
 +
-+	return false;
++   return false;
 +}
 +
-+void
-+PVRDRIDestroyFencesImpl(PVRDRIScreenImpl *psScreenImpl)
-+{
-+	CallFuncLegacy(PVRDRIDestroyFencesImpl,
-+		       DestroyFences,
-+		       psScreenImpl);
-+}
-+
-+bool
-+PVRDRIEGLDrawableConfigFromGLMode(PVRDRIDrawableImpl *psPVRDrawable,
-+				  PVRDRIConfigInfo *psConfigInfo,
-+				  int supportedAPIs,
-+				  IMG_PIXFMT ePixFmt)
-+{
-+	CallFuncLegacy(PVRDRIEGLDrawableConfigFromGLMode,
-+		       EGLDrawableConfigFromGLMode,
-+		       psPVRDrawable,
-+		       psConfigInfo,
-+		       supportedAPIs,
-+		       ePixFmt);
-+
-+	return false;
-+}
-+
-+DefineFunc_IsSupportedLegacy(PVRDRIBlitEGLImage, BlitEGLImage)
-+
 +bool
 +PVRDRIBlitEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+		   PVRDRIContextImpl *psContextImpl,
-+		   IMGEGLImage *psDstImage,
-+		   PVRDRIBufferImpl *psDstBuffer,
-+		   IMGEGLImage *psSrcImage,
-+		   PVRDRIBufferImpl *psSrcBuffer,
-+		   int iDstX, int iDstY,
-+		   int iDstWidth, int iDstHeight,
-+		   int iSrcX, int iSrcY,
-+		   int iSrcWidth, int iSrcHeight,
-+		   int iFlushFlag)
++                   PVRDRIContextImpl *psContextImpl,
++                   IMGEGLImage *psDstImage, PVRDRIBufferImpl *psDstBuffer,
++                   IMGEGLImage *psSrcImage, PVRDRIBufferImpl *psSrcBuffer,
++                   int iDstX, int iDstY, int iDstWidth, int iDstHeight,
++                   int iSrcX, int iSrcY, int iSrcWidth, int iSrcHeight,
++                   int iFlushFlag)
 +{
-+	CallFuncLegacy(PVRDRIBlitEGLImage,
-+		       BlitEGLImage,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psDstImage, psDstBuffer,
-+		       psSrcImage, psSrcBuffer,
-+		       iDstX, iDstY,
-+		       iDstWidth, iDstHeight,
-+		       iSrcX, iSrcY,
-+		       iSrcWidth, iSrcHeight,
-+		       iFlushFlag);
++   CallFunc(BlitEGLImage, psScreenImpl, psContextImpl,
++            psDstImage, psDstBuffer,
++            psSrcImage, psSrcBuffer,
++            iDstX, iDstY, iDstWidth, iDstHeight,
++            iSrcX, iSrcY, iSrcWidth, iSrcHeight,
++            iFlushFlag);
 +
-+	return false;
++   return false;
 +}
 +
-+DefineFunc_IsSupportedLegacy(PVRDRIMapEGLImage, MapEGLImage)
-+
 +void *
 +PVRDRIMapEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+		  PVRDRIContextImpl *psContextImpl,
-+		  IMGEGLImage *psImage,
-+		  PVRDRIBufferImpl *psBuffer,
-+		  int iX, int iY, int iWidth, int iHeight,
-+		  unsigned uiFlags, int *iStride, void **ppvData)
++                  PVRDRIContextImpl *psContextImpl,
++                  IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
++                  int iX, int iY, int iWidth, int iHeight,
++                  unsigned int uiFlags, int *piStride, void **ppvData)
 +{
-+	CallFuncLegacy(PVRDRIMapEGLImage,
-+		       MapEGLImage,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psImage, psBuffer,
-+		       iX, iY, iWidth, iHeight,
-+		       uiFlags, iStride, ppvData);
++   CallFunc(MapEGLImage, psScreenImpl, psContextImpl, psImage, psBuffer,
++            iX, iY, iWidth, iHeight, uiFlags, piStride, ppvData);
 +
-+	return false;
++   return NULL;
 +}
 +
 +bool
 +PVRDRIUnmapEGLImage(PVRDRIScreenImpl *psScreenImpl,
-+		    PVRDRIContextImpl *psContextImpl,
-+		    IMGEGLImage *psImage,
-+		    PVRDRIBufferImpl *psBuffer,
-+		    void *pvData)
++                    PVRDRIContextImpl *psContextImpl,
++                    IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
++                    void *pvData)
 +{
-+	CallFuncLegacy(PVRDRIUnmapEGLImage,
-+		       UnmapEGLImage,
-+		       psScreenImpl,
-+		       psContextImpl,
-+		       psImage, psBuffer,
-+		       pvData);
++   CallFunc(UnmapEGLImage, psScreenImpl, psContextImpl, psImage, psBuffer,
++            pvData);
 +
-+	return false;
++   return false;
 +}
 +
 +bool
-+PVRDRIMesaFormatSupported(unsigned fmt)
++PVRDRIMesaFormatSupported(unsigned int iFormat)
 +{
-+	CallFuncLegacy(PVRDRIMesaFormatSupported,
-+		       MesaFormatSupported,
-+		       fmt);
++   CallFunc(MesaFormatSupported, iFormat);
 +
-+	return false;
++   return false;
 +}
 +
-+unsigned
++unsigned int
 +PVRDRIDepthStencilBitArraySize(void)
 +{
-+	CallFuncLegacy(PVRDRIDepthStencilBitArraySize,
-+		       DepthStencilBitArraySize);
++   CallFunc(DepthStencilBitArraySize);
 +
-+	return 0;
++   return 0;
 +}
 +
 +const uint8_t *
 +PVRDRIDepthBitsArray(void)
 +{
-+	CallFuncLegacy(PVRDRIDepthBitsArray,
-+		       DepthBitsArray);
++   CallFunc(DepthBitsArray);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +const uint8_t *
 +PVRDRIStencilBitsArray(void)
 +{
-+	CallFuncLegacy(PVRDRIStencilBitsArray,
-+		       StencilBitsArray);
++   CallFunc(StencilBitsArray);
 +
-+	return NULL;
++   return NULL;
 +}
 +
-+unsigned
++unsigned int
 +PVRDRIMSAABitArraySize(void)
 +{
-+	CallFuncLegacy(PVRDRIMSAABitArraySize,
-+		       MSAABitArraySize);
++   CallFunc(MSAABitArraySize);
 +
-+	return 0;
++   return 0;
 +}
 +
 +const uint8_t *
 +PVRDRIMSAABitsArray(void)
 +{
-+	CallFuncLegacy(PVRDRIMSAABitsArray,
-+		       MSAABitsArray);
++   CallFunc(MSAABitsArray);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +uint32_t
 +PVRDRIMaxPBufferWidth(void)
 +{
-+	CallFuncLegacy(PVRDRIMaxPBufferWidth,
-+		       MaxPBufferWidth);
++   CallFunc(MaxPBufferWidth);
 +
-+	return 0;
++   return 0;
 +}
 +
 +uint32_t
 +PVRDRIMaxPBufferHeight(void)
 +{
-+	CallFuncLegacy(PVRDRIMaxPBufferHeight,
-+		       MaxPBufferHeight);
++   CallFunc(MaxPBufferHeight);
 +
-+	return 0;
++   return 0;
 +}
 +
 +
-+unsigned
++unsigned int
 +PVRDRIGetNumAPIFuncs(PVRDRIAPIType eAPI)
 +{
-+	CallFuncLegacy(PVRDRIGetNumAPIFuncs,
-+		       GetNumAPIFuncs,
-+		       eAPI);
++   CallFunc(GetNumAPIFuncs, eAPI);
 +
-+	return 0;
++   return 0;
 +}
 +
 +const char *
-+PVRDRIGetAPIFunc(PVRDRIAPIType eAPI, unsigned index)
++PVRDRIGetAPIFunc(PVRDRIAPIType eAPI, unsigned int index)
 +{
-+	CallFuncLegacy(PVRDRIGetAPIFunc,
-+		       GetAPIFunc,
-+		       eAPI,
-+		       index);
++   CallFunc(GetAPIFunc, eAPI, index);
 +
-+	return NULL;
++   return NULL;
 +}
 +
 +int
 +PVRDRIQuerySupportedFormats(PVRDRIScreenImpl *psScreenImpl,
-+			    unsigned uNumFormats,
-+			    const int *iFormats,
-+			    const IMG_PIXFMT *peImgFormats,
-+			    bool *bSupported)
++                            unsigned int uNumFormats, const int *piFormats,
++                            const IMG_PIXFMT *peImgFormats, bool *bSupported)
 +{
-+	CallFuncLegacy(PVRDRIQuerySupportedFormats,
-+		       QuerySupportedFormats,
-+		       psScreenImpl,
-+		       uNumFormats,
-+		       iFormats,
-+		       peImgFormats,
-+		       bSupported);
++   CallFunc(QuerySupportedFormats, psScreenImpl, uNumFormats, piFormats,
++            peImgFormats, bSupported);
 +
-+	return -1;
++   return -1;
 +}
 +
 +int
 +PVRDRIQueryModifiers(PVRDRIScreenImpl *psScreenImpl,
-+		     int iFormat,
-+		     IMG_PIXFMT eImgFormat,
-+		     uint64_t *puModifiers,
-+		     unsigned *puExternalOnly)
++                     int iFormat, IMG_PIXFMT eImgFormat,
++                     uint64_t *puModifiers, unsigned int *puExternalOnly)
 +{
-+	CallFuncLegacy(PVRDRIQueryModifiers,
-+		       QueryModifiers,
-+		       psScreenImpl,
-+		       iFormat,
-+		       eImgFormat,
-+		       puModifiers,
-+		       puExternalOnly);
++   CallFunc(QueryModifiers, psScreenImpl, iFormat, eImgFormat, puModifiers,
++            puExternalOnly);
 +
-+	return -1;
++   return -1;
 +}
-diff --git a/src/mesa/drivers/dri/pvr/pvrdrawable.c b/src/mesa/drivers/dri/pvr/pvrdrawable.c
+diff --git a/src/mesa/drivers/dri/pvr/pvrdrawable_mod.c b/src/mesa/drivers/dri/pvr/pvrdrawable_mod.c
 new file mode 100644
-index 00000000000..a725645f7b6
+index 00000000000..e8bf8f8efda
 --- /dev/null
-+++ b/src/mesa/drivers/dri/pvr/pvrdrawable.c
-@@ -0,0 +1,542 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
++++ b/src/mesa/drivers/dri/pvr/pvrdrawable_mod.c
+@@ -0,0 +1,384 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -3263,527 +3990,369 @@
 +#include <assert.h>
 +
 +#include "util/u_atomic.h"
++#include "pvrdri_mod.h"
 +
-+#include "dri_util.h"
-+
-+#include "pvrdri.h"
-+#include "pvrimage.h"
-+
-+static inline void PVRDRIMarkRenderSurfaceAsInvalid(PVRDRIDrawable *psPVRDrawable)
++static inline void
++PVRDRIMarkRenderSurfaceAsInvalid(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	PVRDRIContext *psPVRContext = psPVRDrawable->psPVRContext;
++   struct DRISUPContext *psPVRContext = psPVRDrawable->psPVRContext;
 +
-+	if (psPVRContext)
-+	{
++   if (psPVRContext) {
++      struct DRISUPScreen *psPVRScreen = psPVRContext->psPVRScreen;
 +
-+		PVRDRIEGLMarkRendersurfaceInvalid(psPVRContext->eAPI,
-+						  psPVRContext->psPVRScreen->psImpl,
-+						  psPVRContext->psImpl);
-+	}
++      PVRDRIEGLMarkRendersurfaceInvalid(psPVRContext->eAPI,
++                                        psPVRScreen->psImpl,
++                                        psPVRContext->psImpl);
++   }
 +}
 +
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + PVR drawable local functions (image driver loader)
-+*/ /**************************************************************************/
++ *//**************************************************************************/
 +
-+static inline void PVRDrawableImageDestroy(PVRDRIDrawable *psPVRDrawable)
++static inline void
++PVRDrawableImageDestroy(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (psPVRDrawable->psImage)
-+	{
-+		PVRDRIUnrefImage(psPVRDrawable->psImage);
-+		psPVRDrawable->psImage = NULL;
-+	}
++   if (psPVRDrawable->psImage) {
++      PVRDRIUnrefImage(psPVRDrawable->psImage);
++      psPVRDrawable->psImage = NULL;
++   }
 +}
 +
-+static inline void PVRDrawableImageAccumDestroy(PVRDRIDrawable *psPVRDrawable)
++static inline void
++PVRDrawableImageAccumDestroy(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (psPVRDrawable->psImageAccum)
-+	{
-+		PVRDRIUnrefImage(psPVRDrawable->psImageAccum);
-+		psPVRDrawable->psImageAccum = NULL;
-+	}
++   if (psPVRDrawable->psImageAccum) {
++      PVRDRIUnrefImage(psPVRDrawable->psImageAccum);
++      psPVRDrawable->psImageAccum = NULL;
++   }
 +}
 +
-+static void PVRDrawableImageUpdate(PVRDRIDrawable *psPVRDrawable)
++static void
++PVRDrawableImageUpdate(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (psPVRDrawable->psImage != psPVRDrawable->psDRI)
-+	{
-+		assert(PVRDRIImageGetSharedBuffer(psPVRDrawable->psDRI) != NULL);
++   if (psPVRDrawable->psImage != psPVRDrawable->psDRI) {
++      assert(PVRDRIImageGetSharedBuffer(psPVRDrawable->psDRI) != NULL);
 +
-+		PVRDrawableImageDestroy(psPVRDrawable);
++      PVRDrawableImageDestroy(psPVRDrawable);
 +
-+		PVRDRIRefImage(psPVRDrawable->psDRI);
-+		psPVRDrawable->psImage = psPVRDrawable->psDRI;
-+	}
++      PVRDRIRefImage(psPVRDrawable->psDRI);
++      psPVRDrawable->psImage = psPVRDrawable->psDRI;
++   }
 +
-+	if (psPVRDrawable->psImageAccum != psPVRDrawable->psDRIAccum)
-+	{
-+		PVRDrawableImageAccumDestroy(psPVRDrawable);
++   if (psPVRDrawable->psImageAccum != psPVRDrawable->psDRIAccum) {
++      PVRDrawableImageAccumDestroy(psPVRDrawable);
 +
-+		if (psPVRDrawable->psDRIAccum)
-+		{
-+			PVRDRIRefImage(psPVRDrawable->psDRIAccum);
-+			psPVRDrawable->psImageAccum = psPVRDrawable->psDRIAccum;
-+		}
-+	}
++      if (psPVRDrawable->psDRIAccum) {
++         PVRDRIRefImage(psPVRDrawable->psDRIAccum);
++         psPVRDrawable->psImageAccum = psPVRDrawable->psDRIAccum;
++      }
++   }
 +}
 +
-+/*************************************************************************/ /*!
-+ Function Name		: PVRImageDrawableGetNativeInfo
-+ Inputs			: psPVRDrawable
-+ Returns		: Boolean
-+ Description		: Update native drawable information.
-+*/ /**************************************************************************/
-+static bool PVRImageDrawableGetNativeInfo(PVRDRIDrawable *psPVRDrawable)
++/*************************************************************************//*!
++Function Name            : PVRImageDrawableGetNativeInfo
++Inputs                   : psPVRDrawable
++Returns                  : Boolean
++Description              : Update native drawable information.
++ *//**************************************************************************/
++static bool
++PVRImageDrawableGetNativeInfo(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	__DRIdrawable *psDRIDrawable = psPVRDrawable->psDRIDrawable;
-+	__DRIscreen *psDRIScreen = psPVRDrawable->psPVRScreen->psDRIScreen;
-+	struct __DRIimageList sImages;
-+	uint32_t uiBufferMask;
-+	const PVRDRIImageFormat *psFormat;
++   struct PVRDRIImageList sImages;
++   uint32_t uBufferMask;
 +
-+	assert(psDRIScreen->image.loader != NULL);
-+	assert(psDRIScreen->image.loader->getBuffers);
++   if (psPVRDrawable->bDoubleBufferMode)
++      uBufferMask = PVRDRI_IMAGE_BUFFER_BACK;
++   else
++      uBufferMask = PVRDRI_IMAGE_BUFFER_FRONT;
 +
-+	psFormat = PVRDRIIMGPixelFormatToImageFormat(psPVRDrawable->psPVRScreen,
-+						     psPVRDrawable->ePixelFormat);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported format (format = %u)\n",
-+			     __func__, psPVRDrawable->ePixelFormat);
-+		return false;
-+	}
++   uBufferMask |= PVRDRI_IMAGE_BUFFER_PREV;
 +
-+	if (psPVRDrawable->sConfig.sGLMode.doubleBufferMode)
-+	{
-+		uiBufferMask = __DRI_IMAGE_BUFFER_BACK;
-+	}
-+	else
-+	{
-+		uiBufferMask = __DRI_IMAGE_BUFFER_FRONT;
-+	}
++   if (!MODSUPGetBuffers(psPVRDrawable->psDRIDrawable,
++                         psPVRDrawable->psFormat->iDRIFourCC,
++                         NULL, psPVRDrawable->pvLoaderPrivate,
++                         uBufferMask, &sImages)) {
++      errorMessage("%s: Image get buffers call failed", __func__);
++      return false;
++   }
 +
-+#if defined(DRI_IMAGE_HAS_BUFFER_PREV)
-+	uiBufferMask |= __DRI_IMAGE_BUFFER_PREV;
-+#endif
++   psPVRDrawable->psDRI =
++      (sImages.uImageMask & PVRDRI_IMAGE_BUFFER_BACK) ?
++      sImages.psBack : sImages.psFront;
 +
-+	if (!psDRIScreen->image.loader->getBuffers(psDRIDrawable,
-+						   psFormat->iDRIFormat,
-+						   NULL,
-+						   psDRIDrawable->loaderPrivate,
-+						   uiBufferMask,
-+						   &sImages))
-+	{
-+		errorMessage("%s: Image get buffers call failed\n", __func__);
-+		return false;
-+	}
++   if (sImages.uImageMask & PVRDRI_IMAGE_BUFFER_PREV)
++      psPVRDrawable->psDRIAccum = sImages.psPrev;
++   else
++      psPVRDrawable->psDRIAccum = NULL;
 +
-+	psPVRDrawable->psDRI =
-+		(sImages.image_mask & __DRI_IMAGE_BUFFER_BACK) ?
-+			sImages.back : sImages.front;
-+
-+#if defined(DRI_IMAGE_HAS_BUFFER_PREV)
-+	if (sImages.image_mask & __DRI_IMAGE_BUFFER_PREV)
-+	{
-+		psPVRDrawable->psDRIAccum = sImages.prev;
-+	}
-+	else
-+#endif
-+	{
-+		psPVRDrawable->psDRIAccum = NULL;
-+	}
-+
-+	return true;
++   return true;
 +}
 +
-+/*************************************************************************/ /*!
-+ Function Name		: PVRImageDrawableCreate
-+ Inputs			: psPVRDrawable
-+ Returns		: Boolean
-+ Description		: Create drawable
-+*/ /**************************************************************************/
-+static bool PVRImageDrawableCreate(PVRDRIDrawable *psPVRDrawable)
++/*************************************************************************//*!
++Function Name            : PVRImageDrawableCreate
++Inputs                   : psPVRDrawable
++Returns                  : Boolean
++Description              : Create drawable
++ *//**************************************************************************/
++static bool
++PVRImageDrawableCreate(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	__DRIdrawable *psDRIDrawable = psPVRDrawable->psDRIDrawable;
-+	uint32_t uBytesPerPixel;
-+	PVRDRIBufferAttribs sBufferAttribs;
++   uint32_t uBytesPerPixel;
++   PVRDRIBufferAttribs sBufferAttribs;
 +
-+	if (!PVRImageDrawableGetNativeInfo(psPVRDrawable))
-+	{
-+		return false;
-+	}
++   if (!PVRImageDrawableGetNativeInfo(psPVRDrawable))
++      return false;
 +
-+	PVRDRIEGLImageGetAttribs(
-+		PVRDRIImageGetEGLImage(psPVRDrawable->psDRI),
-+					&sBufferAttribs);
-+	uBytesPerPixel = PVRDRIPixFmtGetBlockSize(sBufferAttribs.ePixFormat);
++   PVRDRIEGLImageGetAttribs(PVRDRIImageGetEGLImage(psPVRDrawable->psDRI),
++                            &sBufferAttribs);
++   uBytesPerPixel = PVRDRIPixFmtGetBlockSize(sBufferAttribs.ePixFormat);
 +
-+	psDRIDrawable->w = sBufferAttribs.uiWidth;
-+	psDRIDrawable->h = sBufferAttribs.uiHeight;
-+	psPVRDrawable->uStride = sBufferAttribs.uiStrideInBytes;
-+	psPVRDrawable->uBytesPerPixel = uBytesPerPixel;
++   psPVRDrawable->uWidth = sBufferAttribs.uiWidth;
++   psPVRDrawable->uHeight = sBufferAttribs.uiHeight;
++   psPVRDrawable->uStride = sBufferAttribs.uiStrideInBytes;
++   psPVRDrawable->uBytesPerPixel = uBytesPerPixel;
 +
-+	PVRDrawableImageUpdate(psPVRDrawable);
++   PVRDrawableImageUpdate(psPVRDrawable);
 +
-+	if (!PVREGLDrawableCreate(psPVRDrawable->psPVRScreen->psImpl,
-+				  psPVRDrawable->psImpl))
-+	{
-+		errorMessage("%s: Couldn't create EGL drawable\n", __func__);
-+		return false;
-+	}
++   if (!PVREGLDrawableCreate(psPVRDrawable->psPVRScreen->psImpl,
++                             psPVRDrawable->psImpl)) {
++      errorMessage("%s: Couldn't create EGL drawable", __func__);
++      return false;
++   }
 +
-+	return true;
++   return true;
 +}
 +
-+/*************************************************************************/ /*!
-+ Function Name		: PVRImageDrawableUpdate
-+ Inputs			: psPVRDrawable
-+ Returns		: Boolean
-+ Description		: Update drawable
-+*/ /**************************************************************************/
-+static bool PVRImageDrawableUpdate(PVRDRIDrawable *psPVRDrawable,
-+				   bool bAllowRecreate)
++/*************************************************************************//*!
++Function Name            : PVRImageDrawableUpdate
++Inputs                   : psPVRDrawable
++Returns                  : Boolean
++Description              : Update drawable
++ *//**************************************************************************/
++static bool
++PVRImageDrawableUpdate(struct DRISUPDrawable *psPVRDrawable,
++                       bool bAllowRecreate)
 +{
-+	__DRIdrawable *psDRIDrawable = psPVRDrawable->psDRIDrawable;
-+	uint32_t uBytesPerPixel;
-+	PVRDRIBufferAttribs sBufferAttribs;
-+	bool bRecreate;
++   uint32_t uBytesPerPixel;
++   PVRDRIBufferAttribs sBufferAttribs;
++   bool bRecreate;
 +
-+	PVRDRIEGLImageGetAttribs(
-+		PVRDRIImageGetEGLImage(psPVRDrawable->psDRI),
-+					&sBufferAttribs);
-+	uBytesPerPixel = PVRDRIPixFmtGetBlockSize(sBufferAttribs.ePixFormat);
++   PVRDRIEGLImageGetAttribs(PVRDRIImageGetEGLImage(psPVRDrawable->psDRI),
++                            &sBufferAttribs);
++   uBytesPerPixel = PVRDRIPixFmtGetBlockSize(sBufferAttribs.ePixFormat);
 +
-+	bRecreate = (!psPVRDrawable->sConfig.sGLMode.doubleBufferMode &&
-+			psPVRDrawable->psImage !=
-+				psPVRDrawable->psDRI) ||
-+			(psDRIDrawable->w != sBufferAttribs.uiWidth) ||
-+			(psDRIDrawable->h != sBufferAttribs.uiHeight) ||
-+			(psPVRDrawable->uStride !=
-+				sBufferAttribs.uiStrideInBytes) ||
-+			(psPVRDrawable->uBytesPerPixel != uBytesPerPixel);
++   bRecreate =
++      (!psPVRDrawable->bDoubleBufferMode &&
++       psPVRDrawable->psImage != psPVRDrawable->psDRI) ||
++      (psPVRDrawable->uWidth != sBufferAttribs.uiWidth) ||
++      (psPVRDrawable->uHeight != sBufferAttribs.uiHeight) ||
++      (psPVRDrawable->uStride != sBufferAttribs.uiStrideInBytes) ||
++      (psPVRDrawable->uBytesPerPixel != uBytesPerPixel);
 +
-+	if (bRecreate)
-+	{
-+		if (bAllowRecreate)
-+		{
-+			PVRDRIMarkRenderSurfaceAsInvalid(psPVRDrawable);
++   if (bRecreate) {
++      if (bAllowRecreate) {
++         PVRDRIMarkRenderSurfaceAsInvalid(psPVRDrawable);
 +
-+			psDRIDrawable->w = sBufferAttribs.uiWidth;
-+			psDRIDrawable->h = sBufferAttribs.uiHeight;
-+			psPVRDrawable->uStride = sBufferAttribs.uiStrideInBytes;
-+			psPVRDrawable->uBytesPerPixel = uBytesPerPixel;
-+		}
-+		else
-+		{
-+			return false;
-+		}
-+	}
++         psPVRDrawable->uWidth = sBufferAttribs.uiWidth;
++         psPVRDrawable->uHeight = sBufferAttribs.uiHeight;
++         psPVRDrawable->uStride = sBufferAttribs.uiStrideInBytes;
++         psPVRDrawable->uBytesPerPixel = uBytesPerPixel;
++      } else {
++         return false;
++      }
++   }
 +
-+	PVRDrawableImageUpdate(psPVRDrawable);
++   PVRDrawableImageUpdate(psPVRDrawable);
 +
-+	if (bRecreate)
-+	{
-+		if (!PVREGLDrawableRecreate(psPVRDrawable->psPVRScreen->psImpl,
-+		                            psPVRDrawable->psImpl))
-+		{
-+			errorMessage("%s: Couldn't recreate EGL drawable\n",
-+				     __func__);
-+			return false;
-+		}
-+	}
++   if (bRecreate) {
++      if (!PVREGLDrawableRecreate(psPVRDrawable->psPVRScreen->psImpl,
++                                  psPVRDrawable->psImpl)) {
++         errorMessage("%s: Couldn't recreate EGL drawable", __func__);
++         return false;
++      }
++   }
 +
-+	return true;
++   return true;
 +}
 +
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + PVR drawable local functions
-+*/ /**************************************************************************/
++ *//**************************************************************************/
 +
-+/*************************************************************************/ /*!
-+ Function Name	: PVRDRIDrawableUpdate
-+ Inputs		: psPVRDrawable
-+ Description	: Update drawable
-+*/ /**************************************************************************/
-+static bool PVRDRIDrawableUpdate(PVRDRIDrawable *psPVRDrawable,
-+				 bool bAllowRecreate)
++/*************************************************************************//*!
++Function Name    : PVRDRIDrawableUpdate
++Inputs           : psPVRDrawable
++Description      : Update drawable
++ *//**************************************************************************/
++static bool
++PVRDRIDrawableUpdate(struct DRISUPDrawable *psPVRDrawable, bool bAllowRecreate)
 +{
-+	bool bRes;
-+	int iInfoInvalid = 0;
++   bool bRes;
++   int iInfoInvalid = 0;
 +
-+	/*
-+	 * The test for bDrawableUpdating is needed because drawable
-+	 * parameters are fetched (via KEGLGetDrawableParameters) when
-+	 * a drawable is recreated.
-+	 * The test for bFlushInProgress is to prevent the drawable
-+	 * information being updated during a flush, which could result
-+	 * in a call back into the Mesa platform code during the
-+	 * processing for a buffer swap, which could corrupt the platform
-+	 * state.
-+	 */
-+	if (psPVRDrawable->bDrawableUpdating ||
-+	    psPVRDrawable->bFlushInProgress)
-+	{
-+		return false;
-+	}
-+	psPVRDrawable->bDrawableUpdating = true;
++   /*
++    * The test for bDrawableUpdating is needed because drawable parameters are
++    * fetched (via KEGLGetDrawableParameters) when a drawable is recreated.
++    * The test for bFlushInProgress is to prevent the drawable information
++    * being updated during a flush, which could result in a call back into the
++    * Mesa platform code during the processing for a buffer swap, which could
++    * corrupt the platform state.
++    */
++   if (psPVRDrawable->bDrawableUpdating || psPVRDrawable->bFlushInProgress)
++      return false;
 +
-+	if (psPVRDrawable->psPVRScreen->bUseInvalidate)
-+	{
-+		iInfoInvalid = p_atomic_read(&psPVRDrawable->iInfoInvalid);
-+		bRes = !iInfoInvalid;
-+		if (bRes)
-+		{
-+			goto ExitNotUpdating;
-+		}
-+	}
++   psPVRDrawable->bDrawableUpdating = true;
 +
-+	bRes = PVRImageDrawableGetNativeInfo(psPVRDrawable);
-+	if (!bRes)
-+	{
-+		goto ExitNotUpdating;
-+	}
++   if (psPVRDrawable->psPVRScreen->bUseInvalidate) {
++      iInfoInvalid = p_atomic_read(&psPVRDrawable->iInfoInvalid);
++      bRes = !iInfoInvalid;
++      if (bRes)
++         goto ExitNotUpdating;
++   }
 +
-+	bRes = PVRImageDrawableUpdate(psPVRDrawable, bAllowRecreate);
-+	if (bRes && iInfoInvalid)
-+	{
-+		p_atomic_add(&psPVRDrawable->iInfoInvalid, -iInfoInvalid);
-+	}
++   bRes = PVRImageDrawableGetNativeInfo(psPVRDrawable);
++   if (!bRes)
++      goto ExitNotUpdating;
++
++   bRes = PVRImageDrawableUpdate(psPVRDrawable, bAllowRecreate);
++   if (bRes && iInfoInvalid)
++      p_atomic_add(&psPVRDrawable->iInfoInvalid, -iInfoInvalid);
 +
 +ExitNotUpdating:
-+	psPVRDrawable->bDrawableUpdating = false;
-+	return bRes;
++   psPVRDrawable->bDrawableUpdating = false;
++   return bRes;
 +}
 +
-+/*************************************************************************/ /*!
-+ Function Name	: PVRDRIDrawableRecreateV0
-+ Inputs		: psPVRDrawable
-+ Description	: Recreate drawable
-+*/ /**************************************************************************/
-+bool PVRDRIDrawableRecreateV0(PVRDRIDrawable *psPVRDrawable)
-+{
-+	return PVRDRIDrawableUpdate(psPVRDrawable, true);
-+}
-+
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + PVR drawable interface
-+*/ /**************************************************************************/
-+bool PVRDRIDrawableInit(PVRDRIDrawable *psPVRDrawable)
++ *//**************************************************************************/
++bool
++PVRDRIDrawableInit(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (psPVRDrawable->bInitialised)
-+	{
-+		return true;
-+	}
++   if (psPVRDrawable->bInitialised)
++      return true;
 +
-+	if (!PVRImageDrawableCreate(psPVRDrawable))
-+	{
-+		return false;
-+	}
++   if (!PVRImageDrawableCreate(psPVRDrawable))
++      return false;
 +
-+	psPVRDrawable->bInitialised = true;
++   psPVRDrawable->bInitialised = true;
 +
-+	return true;
++   return true;
 +}
 +
-+void PVRDRIDrawableDeinit(PVRDRIDrawable *psPVRDrawable)
++void
++PVRDRIDrawableDeinit(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	(void) PVREGLDrawableDestroy(psPVRDrawable->psPVRScreen->psImpl,
-+	                             psPVRDrawable->psImpl);
++   (void) PVREGLDrawableDestroy(psPVRDrawable->psPVRScreen->psImpl,
++                                psPVRDrawable->psImpl);
 +
-+	PVRDrawableImageDestroy(psPVRDrawable);
-+	PVRDrawableImageAccumDestroy(psPVRDrawable);
++   PVRDrawableImageDestroy(psPVRDrawable);
++   PVRDrawableImageAccumDestroy(psPVRDrawable);
 +
-+	psPVRDrawable->bInitialised = false;
++   psPVRDrawable->bInitialised = false;
 +}
 +
-+static bool PVRDRIDrawableGetParameters(PVRDRIDrawable *psPVRDrawable,
-+					PVRDRIBufferImpl **ppsDstBuffer,
-+					PVRDRIBufferImpl **ppsAccumBuffer)
++static bool
++PVRDRIDrawableGetParameters(struct DRISUPDrawable *psPVRDrawable,
++                            PVRDRIBufferImpl **ppsDstBuffer,
++                            PVRDRIBufferImpl **ppsAccumBuffer)
 +{
-+	if (ppsDstBuffer || ppsAccumBuffer)
-+	{
-+		PVRDRIBufferImpl *psDstBuffer;
-+		PVRDRIBufferImpl *psAccumBuffer;
++   if (ppsDstBuffer || ppsAccumBuffer) {
++      __DRIimage *psDstImage = psPVRDrawable->psImage;
++      __DRIimage *psAccumImage = psPVRDrawable->psImageAccum;
++      PVRDRIBufferImpl *psDstBuffer, *psAccumBuffer;
 +
-+		psDstBuffer = PVRDRIImageGetSharedBuffer(psPVRDrawable->psImage);
-+		if (!psDstBuffer)
-+		{
-+			errorMessage("%s: Couldn't get backing buffer\n",
-+				     __func__);
-+			return false;
-+		}
++      psDstBuffer = PVRDRIImageGetSharedBuffer(psDstImage);
++      if (!psDstBuffer) {
++         errorMessage("%s: Couldn't get backing buffer", __func__);
++         return false;
++      }
 +
-+		if (psPVRDrawable->psImageAccum)
-+		{
-+			psAccumBuffer =
-+				PVRDRIImageGetSharedBuffer(psPVRDrawable->psImageAccum);
-+			if (!psAccumBuffer)
-+			{
-+				psAccumBuffer = psDstBuffer;
-+			}
-+		}
-+		else
-+		{
-+			psAccumBuffer = psDstBuffer;
-+		}
++      if (psAccumImage) {
++         psAccumBuffer = PVRDRIImageGetSharedBuffer(psAccumImage);
++         if (!psAccumBuffer)
++            psAccumBuffer = psDstBuffer;
++      } else {
++         psAccumBuffer = psDstBuffer;
++      }
 +
-+		if (ppsDstBuffer)
-+		{
-+			*ppsDstBuffer = psDstBuffer;
-+		}
++      if (ppsDstBuffer)
++         *ppsDstBuffer = psDstBuffer;
 +
-+		if (ppsAccumBuffer)
-+		{
-+			*ppsAccumBuffer = psAccumBuffer;
-+		}
-+	}
++      if (ppsAccumBuffer)
++         *ppsAccumBuffer = psAccumBuffer;
++   }
 +
-+	return true;
++   return true;
 +}
 +
-+bool PVRDRIDrawableGetParametersV0(PVRDRIDrawable *psPVRDrawable,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer,
-+				   PVRDRIBufferAttribs *psAttribs,
-+				   bool *pbDoubleBuffered)
++bool
++PVRDRIDrawableQuery(const PVRDRIDrawable *psPVRDRIDrawable,
++                    PVRDRIBufferAttrib eBufferAttrib, uint32_t *uiValueOut)
 +{
-+	/*
-+	 * Some drawable updates may be required, which stop short of
-+	 * recreating the drawable.
-+	 */
-+	(void) PVRDRIDrawableUpdate(psPVRDrawable, false);
++   const struct DRISUPDrawable *psPVRDrawable;
 +
-+	if (!PVRDRIDrawableGetParameters(psPVRDrawable,
-+					 ppsDstBuffer,
-+					 ppsAccumBuffer))
-+	{
-+		return false;
-+	}
++   if (!psPVRDRIDrawable || !uiValueOut)
++      return false;
 +
-+	if (psAttribs)
-+	{
-+		psAttribs->uiWidth           = psPVRDrawable->psDRIDrawable->w;
-+		psAttribs->uiHeight          = psPVRDrawable->psDRIDrawable->h;
-+		psAttribs->ePixFormat        = psPVRDrawable->ePixelFormat;
-+		psAttribs->uiStrideInBytes   = psPVRDrawable->uStride;
-+	}
++   psPVRDrawable = (const struct DRISUPDrawable *) psPVRDRIDrawable;
 +
-+	if (pbDoubleBuffered)
-+	{
-+		*pbDoubleBuffered =
-+			psPVRDrawable->sConfig.sGLMode.doubleBufferMode;
-+	}
-+
-+	return true;
++   switch (eBufferAttrib) {
++   case PVRDRI_BUFFER_ATTRIB_TYPE:
++      *uiValueOut = (uint32_t) psPVRDrawable->eType;
++      return true;
++   case PVRDRI_BUFFER_ATTRIB_WIDTH:
++      *uiValueOut = (uint32_t) psPVRDrawable->uWidth;
++      return true;
++   case PVRDRI_BUFFER_ATTRIB_HEIGHT:
++      *uiValueOut = (uint32_t) psPVRDrawable->uHeight;
++      return true;
++   case PVRDRI_BUFFER_ATTRIB_STRIDE:
++      *uiValueOut = (uint32_t) psPVRDrawable->uStride;
++      return true;
++   case PVRDRI_BUFFER_ATTRIB_PIXEL_FORMAT:
++      *uiValueOut = (uint32_t) psPVRDrawable->psFormat->eIMGPixelFormat;
++      assert(sizeof(IMG_PIXFMT) <= sizeof(*uiValueOut));
++      return true;
++   case PVRDRI_BUFFER_ATTRIB_INVALID:
++      errorMessage("%s: Invalid attribute", __func__);
++      assert(0);
++      return false;
++   default:
++      return false;
++   }
 +}
 +
-+bool PVRDRIDrawableGetParametersV1(PVRDRIDrawable *psPVRDrawable,
-+				   bool bAllowRecreate,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer,
-+				   PVRDRIBufferAttribs *psAttribs,
-+				   bool *pbDoubleBuffered)
++bool
++PVRDRIDrawableGetParametersV2(PVRDRIDrawable *psPVRDRIDrawable,
++                              uint32_t uiFlags,
++                              PVRDRIBufferImpl **ppsDstBuffer,
++                              PVRDRIBufferImpl **ppsAccumBuffer)
 +{
-+	if (!PVRDRIDrawableUpdate(psPVRDrawable, bAllowRecreate))
-+	{
-+		if (bAllowRecreate)
-+		{
-+			return false;
-+		}
-+	}
++   const bool bNoUpdate = uiFlags & PVRDRI_GETPARAMS_FLAG_NO_UPDATE;
++   struct DRISUPDrawable *psPVRDrawable;
 +
-+	if (!PVRDRIDrawableGetParameters(psPVRDrawable,
-+					 ppsDstBuffer,
-+					 ppsAccumBuffer))
-+	{
-+		return false;
-+	}
++   psPVRDrawable = (struct DRISUPDrawable *) psPVRDRIDrawable;
 +
-+	if (psAttribs)
-+	{
-+		psAttribs->uiWidth           = psPVRDrawable->psDRIDrawable->w;
-+		psAttribs->uiHeight          = psPVRDrawable->psDRIDrawable->h;
-+		psAttribs->ePixFormat        = psPVRDrawable->ePixelFormat;
-+		psAttribs->uiStrideInBytes   = psPVRDrawable->uStride;
-+	}
++   if (!bNoUpdate) {
++      const bool bAllowRecreate =
++         uiFlags & PVRDRI_GETPARAMS_FLAG_ALLOW_RECREATE;
 +
-+	if (pbDoubleBuffered)
-+	{
-+		*pbDoubleBuffered =
-+			psPVRDrawable->sConfig.sGLMode.doubleBufferMode;
-+	}
++      if (!PVRDRIDrawableUpdate(psPVRDrawable, bAllowRecreate))
++         if (bAllowRecreate)
++            return false;
++   }
 +
-+	return true;
-+}
-+
-+bool PVRDRIDrawableQuery(const PVRDRIDrawable *psPVRDrawable,
-+			 PVRDRIBufferAttrib eBufferAttrib,
-+			 uint32_t *uiValueOut)
-+{
-+	if (!psPVRDrawable || !uiValueOut)
-+	{
-+		return false;
-+	}
-+
-+	switch (eBufferAttrib)
-+	{
-+		case PVRDRI_BUFFER_ATTRIB_TYPE:
-+			*uiValueOut = (uint32_t) psPVRDrawable->eType;
-+			return true;
-+		case PVRDRI_BUFFER_ATTRIB_WIDTH:
-+			*uiValueOut = (uint32_t) psPVRDrawable->psDRIDrawable->w;
-+			return true;
-+		case PVRDRI_BUFFER_ATTRIB_HEIGHT:
-+			*uiValueOut = (uint32_t) psPVRDrawable->psDRIDrawable->h;
-+			return true;
-+		case PVRDRI_BUFFER_ATTRIB_STRIDE:
-+			*uiValueOut = (uint32_t) psPVRDrawable->uStride;
-+			return true;
-+		case PVRDRI_BUFFER_ATTRIB_PIXEL_FORMAT:
-+			STATIC_ASSERT(sizeof(psPVRDrawable->ePixelFormat) <= sizeof(*uiValueOut));
-+			*uiValueOut = (uint32_t) psPVRDrawable->ePixelFormat;
-+			return true;
-+		case PVRDRI_BUFFER_ATTRIB_INVALID:
-+			errorMessage("%s: Invalid attribute", __func__);
-+			assert(0);
-+			break;
-+	}
-+
-+	return false;
-+}
-+
-+bool PVRDRIDrawableGetParametersV2(PVRDRIDrawable *psPVRDrawable,
-+				   uint32_t uiFlags,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer)
-+{
-+	const bool bNoUpdate = uiFlags & PVRDRI_GETPARAMS_FLAG_NO_UPDATE;
-+
-+	if (!bNoUpdate)
-+	{
-+		const bool bAllowRecreate =
-+			uiFlags & PVRDRI_GETPARAMS_FLAG_ALLOW_RECREATE;
-+
-+		if (!PVRDRIDrawableUpdate(psPVRDrawable, bAllowRecreate))
-+		{
-+			if (bAllowRecreate)
-+			{
-+				return false;
-+			}
-+		}
-+	}
-+
-+	return PVRDRIDrawableGetParameters(psPVRDrawable,
-+					   ppsDstBuffer, ppsAccumBuffer);
++   return PVRDRIDrawableGetParameters(psPVRDrawable,
++                                      ppsDstBuffer, ppsAccumBuffer);
 +}
 diff --git a/src/mesa/drivers/dri/pvr/pvrdri.c b/src/mesa/drivers/dri/pvr/pvrdri.c
 new file mode 100644
-index 00000000000..b53ddc5c621
+index 00000000000..b529568cc9b
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/pvrdri.c
-@@ -0,0 +1,1018 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,583 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -3808,21 +4377,776 @@
 + * THE SOFTWARE.
 + */
 +
-+#include <assert.h>
-+#include <pthread.h>
 +#include <string.h>
-+#include <xf86drm.h>
-+
-+#include "EGL/egl.h"
-+#include "EGL/eglext.h"
++#include <assert.h>
 +
 +#include "util/u_atomic.h"
-+#include "dri_util.h"
++#include "utils.h"
 +
 +#include "pvrdri.h"
-+#include "pvrimage.h"
-+
 +#include "pvrmesa.h"
++#include "pvrdri_mod.h"
++
++#define PVR_IMAGE_LOADER_VER_MIN 1
++
++struct PVRBuffer {
++   __DRIbuffer sDRIBuffer;
++   struct DRISUPBuffer *psDRISUPBuffer;
++};
++
++/*************************************************************************//*!
++ Local functions
++ *//**************************************************************************/
++
++static bool
++PVRLoaderIsSupported(__DRIscreen *psDRIScreen)
++{
++   if (psDRIScreen->image.loader) {
++      if (psDRIScreen->image.loader->base.version < PVR_IMAGE_LOADER_VER_MIN) {
++         __driUtilMessage("%s: Image loader extension version %d but need %d",
++                          __func__, psDRIScreen->image.loader->base.version,
++                          PVR_IMAGE_LOADER_VER_MIN);
++         return false;
++      } else if (!psDRIScreen->image.loader->getBuffers) {
++         __driUtilMessage("%s: Image loader extension missing support for getBuffers",
++                          __func__);
++         return false;
++      }
++   } else {
++      __driUtilMessage("%s: Image loader extension required", __func__);
++      return false;
++   }
++
++   return true;
++}
++
++static inline struct DRISUPContext *
++getSharedContextImpl(void *pvSharedContextPrivate)
++{
++   if (pvSharedContextPrivate == NULL)
++      return NULL;
++
++   return ((PVRDRIContext *) pvSharedContextPrivate)->psDRISUPContext;
++}
++
++static void
++PVRDRIScreenAddReference(PVRDRIScreen *psPVRScreen)
++{
++   int iRefCount = p_atomic_inc_return(&psPVRScreen->iRefCount);
++
++   (void) iRefCount;
++   assert(iRefCount > 1);
++}
++
++static void
++PVRDRIScreenRemoveReference(PVRDRIScreen *psPVRScreen)
++{
++   int iRefCount = p_atomic_dec_return(&psPVRScreen->iRefCount);
++
++   assert(iRefCount >= 0);
++
++   if (iRefCount != 0)
++      return;
++
++   pvrdri_free_dispatch_tables(psPVRScreen);
++   DRISUPDestroyScreen(psPVRScreen->psDRISUPScreen);
++   PVRDRICompatDeinit();
++   free(psPVRScreen);
++}
++
++static void
++PVRScreenPrintExtensions(__DRIscreen *psDRIScreen)
++{
++   /* Don't attempt to print anything if LIBGL_DEBUG isn't in the environment */
++   if (getenv("LIBGL_DEBUG") == NULL)
++      return;
++
++   if (psDRIScreen->extensions) {
++      const __DRIextension *psScreenExtensionVersionInfo =
++         PVRDRIScreenExtensionVersionInfo();
++      int i;
++      int j;
++
++      __driUtilMessage("Supported screen extensions:");
++
++      for (i = 0; psDRIScreen->extensions[i]; i++) {
++         for (j = 0; psScreenExtensionVersionInfo[j].name; j++) {
++            if (strcmp(psDRIScreen->extensions[i]->name,
++                       psScreenExtensionVersionInfo[j].name) == 0) {
++               __driUtilMessage("\t%s (supported version: %u - max version: %u)",
++                                psDRIScreen->extensions[i]->name,
++                                psDRIScreen->extensions[i]->version,
++                                psScreenExtensionVersionInfo[j].version);
++               break;
++            }
++         }
++
++         if (psScreenExtensionVersionInfo[j].name == NULL) {
++            __driUtilMessage("\t%s (supported version: %u - max version: unknown)",
++                             psDRIScreen->extensions[i]->name,
++                             psDRIScreen->extensions[i]->version);
++         }
++      }
++   } else {
++      __driUtilMessage("No screen extensions found");
++   }
++}
++
++/*************************************************************************//*!
++ Mesa driver API functions
++ *//**************************************************************************/
++
++static const __DRIconfig **
++PVRDRIInitScreen(__DRIscreen *psDRIScreen)
++{
++   PVRDRIScreen *psPVRScreen;
++   const __DRIconfig **ppsConfigs;
++   int iMaxGLES1Version, iMaxGLES2Version;
++   const PVRDRICallbacks sDRICallbacks = {
++      /* Version 0 callbacks */
++      .ImageGetSharedType = PVRDRIImageGetSharedType,
++      .ImageGetSharedBuffer = PVRDRIImageGetSharedBuffer,
++      .ImageGetSharedEGLImage = PVRDRIImageGetSharedEGLImage,
++      .ImageGetEGLImage = PVRDRIImageGetEGLImage,
++      .ScreenGetDRIImage = PVRDRIScreenGetDRIImage,
++      .RefImage = PVRDRIRefImage,
++      .UnrefImage = PVRDRIUnrefImage,
++
++      /* Version 1 callbacks */
++      .RegisterSupportInterfaceV1 = PVRDRIRegisterSupportInterfaceV1,
++
++      /* Version 2 callbacks */
++      .ConfigQuery = PVRDRIConfigQuery,
++      .DrawableGetParametersV2 = PVRDRIDrawableGetParametersV2,
++      .DrawableQuery = PVRDRIDrawableQuery,
++   };
++   const struct PVRDRICallbacksV2 sDRICallbacksV2 = {
++      /* Version 0 callbacks */
++      .v0.RegisterSupportInterface = MODSUPRegisterSupportInterfaceV2,
++      .v0.GetBuffers = MODSUPGetBuffers,
++      .v0.CreateConfigs = MODSUPCreateConfigs,
++      .v0.ConcatConfigs = MODSUPConcatConfigs,
++      .v0.ConfigQuery = MODSUPConfigQuery,
++      .v0.LookupEGLImage = MODSUPLookupEGLImage,
++      .v0.GetCapability = MODSUPGetCapability,
++   };
++
++   if (!PVRLoaderIsSupported(psDRIScreen))
++      return NULL;
++
++   if (!PVRDRICompatInit(&sDRICallbacks, 3, &sDRICallbacksV2, 0, 0))
++      return NULL;
++
++   psPVRScreen = calloc(1, sizeof(*psPVRScreen));
++   if (psPVRScreen == NULL) {
++      __driUtilMessage("%s: Couldn't allocate PVRDRIScreen", __func__);
++      goto ErrorCompatDeinit;
++   }
++
++   psDRIScreen->driverPrivate = psPVRScreen;
++   psPVRScreen->psDRIScreen = psDRIScreen;
++   psPVRScreen->iRefCount = 1;
++
++   psPVRScreen->psDRISUPScreen =
++      DRISUPCreateScreen(psDRIScreen, psDRIScreen->fd,
++                         psDRIScreen->dri2.useInvalidate != NULL,
++                         psDRIScreen->loaderPrivate,
++                         &ppsConfigs, &iMaxGLES1Version, &iMaxGLES2Version);
++   if (!psPVRScreen->psDRISUPScreen)
++      goto ErrorScreenFree;
++
++   psDRIScreen->max_gl_es1_version = iMaxGLES1Version;
++   psDRIScreen->max_gl_es2_version = iMaxGLES2Version;
++   psDRIScreen->extensions = PVRDRIScreenExtensions();
++
++   PVRScreenPrintExtensions(psDRIScreen);
++
++   return ppsConfigs;
++
++ErrorScreenFree:
++   psDRIScreen->driverPrivate = NULL;
++   free(psPVRScreen);
++
++ErrorCompatDeinit:
++   PVRDRICompatDeinit();
++
++   return NULL;
++}
++
++static void
++PVRDRIDestroyScreen(__DRIscreen *psDRIScreen)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++#if defined(DEBUG)
++   if (psPVRScreen->iBufferAlloc != 0 ||
++       psPVRScreen->iDrawableAlloc != 0 ||
++       psPVRScreen->iContextAlloc != 0) {
++      errorMessage("%s: Outstanding allocations: Contexts: %d Drawables: %d Buffers: %d",
++                   __func__, psPVRScreen->iContextAlloc,
++                   psPVRScreen->iDrawableAlloc, psPVRScreen->iBufferAlloc);
++
++      if (psPVRScreen->iRefCount > 1) {
++         errorMessage("%s: PVRDRIScreen resources will not be freed until its %d references are removed",
++                      __func__, psPVRScreen->iRefCount - 1);
++      }
++   }
++#endif
++
++   PVRDRIScreenRemoveReference(psPVRScreen);
++}
++
++static int
++PVRDRIScreenSupportedAPIs(PVRDRIScreen *psPVRScreen)
++{
++   unsigned int api_mask = psPVRScreen->psDRIScreen->api_mask;
++   int supported = 0;
++
++   if ((api_mask & (1 << __DRI_API_GLES)) != 0)
++      supported |= PVRDRI_API_BIT_GLES;
++
++   if ((api_mask & (1 << __DRI_API_GLES2)) != 0)
++      supported |= PVRDRI_API_BIT_GLES2;
++
++   if ((api_mask & (1 << __DRI_API_GLES3)) != 0)
++      supported |= PVRDRI_API_BIT_GLES3;
++
++   return supported;
++}
++
++static GLboolean
++PVRDRICreateContext(gl_api eMesaAPI, const struct gl_config *psGLMode,
++                    __DRIcontext *psDRIContext,
++                    const struct __DriverContextConfig *psCtxConfig,
++                    unsigned int *puError, void *pvSharedContextPrivate)
++{
++   __DRIscreen *psDRIScreen = psDRIContext->driScreenPriv;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   PVRDRIContext *psPVRContext;
++   struct DRISUPContext *psDRISUPContext;
++   struct DRISUPContext *psDRISUPSharedContext;
++   struct PVRDRIContextConfig sCtxConfig;
++   PVRDRIAPIType eAPI;
++
++   psDRISUPSharedContext = getSharedContextImpl(pvSharedContextPrivate);
++
++   sCtxConfig.uMajorVersion = psCtxConfig->major_version;
++   sCtxConfig.uMinorVersion = psCtxConfig->minor_version;
++   sCtxConfig.uFlags = psCtxConfig->flags;
++   sCtxConfig.iResetStrategy = PVRDRI_CONTEXT_RESET_NO_NOTIFICATION;
++   sCtxConfig.uPriority = PVRDRI_CONTEXT_PRIORITY_MEDIUM;
++   sCtxConfig.iReleaseBehavior = PVRDRI_CONTEXT_RELEASE_BEHAVIOR_FLUSH;
++
++   psPVRContext = calloc(1, sizeof(*psPVRContext));
++   if (psPVRContext == NULL) {
++      __driUtilMessage("%s: Couldn't allocate PVRDRIContext", __func__);
++      *puError = __DRI_CTX_ERROR_NO_MEMORY;
++      return GL_FALSE;
++   }
++
++   psPVRContext->psDRIContext = psDRIContext;
++   psPVRContext->psPVRScreen = psPVRScreen;
++
++   if (psGLMode)
++      psPVRContext->sConfig.sGLMode = *psGLMode;
++
++   switch (eMesaAPI) {
++   case API_OPENGLES:
++      eAPI = PVRDRI_API_GLES1;
++      break;
++   case API_OPENGLES2:
++      eAPI = PVRDRI_API_GLES2;
++      break;
++   default:
++      __driUtilMessage("%s: Unsupported API: %d",
++                       __func__, (int) eMesaAPI);
++      *puError = __DRI_CTX_ERROR_BAD_API;
++      goto ErrorContextFree;
++   }
++   psPVRContext->eAPI = eAPI;
++
++   if ((psCtxConfig->attribute_mask &
++        __DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY) != 0) {
++      sCtxConfig.iResetStrategy = psCtxConfig->reset_strategy;
++   }
++
++   if ((psCtxConfig->attribute_mask &
++        __DRIVER_CONTEXT_ATTRIB_RELEASE_BEHAVIOR) != 0) {
++      sCtxConfig.iReleaseBehavior = psCtxConfig->release_behavior;
++   }
++
++   if ((psCtxConfig->attribute_mask &
++        __DRIVER_CONTEXT_ATTRIB_PRIORITY) != 0) {
++      sCtxConfig.uPriority = psCtxConfig->priority;
++   }
++
++   *puError = DRISUPCreateContext(eAPI, &psPVRContext->sConfig, &sCtxConfig,
++                                  psDRIContext, psDRISUPSharedContext,
++                                  psPVRScreen->psDRISUPScreen,
++                                  &psDRISUPContext);
++   if (*puError != __DRI_CTX_ERROR_SUCCESS)
++      goto ErrorContextFree;
++
++   psPVRContext->psDRISUPContext = psDRISUPContext;
++
++   if (!pvrdri_create_dispatch_table(psPVRScreen, eAPI)) {
++      __driUtilMessage("%s: Couldn't create dispatch table", __func__);
++      *puError = __DRI_CTX_ERROR_BAD_API;
++      goto ErrorContextDestroy;
++   }
++#if defined(DEBUG)
++   p_atomic_inc(&psPVRScreen->iContextAlloc);
++#endif
++
++   psDRIContext->driverPrivate = (void *) psPVRContext;
++   PVRDRIScreenAddReference(psPVRScreen);
++
++   *puError = __DRI_CTX_ERROR_SUCCESS;
++
++   return GL_TRUE;
++
++ErrorContextDestroy:
++   DRISUPDestroyContext(psPVRContext->psDRISUPContext);
++
++ErrorContextFree:
++   free(psPVRContext);
++
++   return GL_FALSE;
++}
++
++static void
++PVRDRIDestroyContext(__DRIcontext *psDRIContext)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++   PVRDRIScreen *psPVRScreen = psPVRContext->psPVRScreen;
++
++   DRISUPDestroyContext(psPVRContext->psDRISUPContext);
++
++#if defined(DEBUG)
++   p_atomic_dec(&psPVRScreen->iContextAlloc);
++#endif
++
++   PVRDRIScreenRemoveReference(psPVRScreen);
++   free(psPVRContext);
++}
++
++static GLboolean
++PVRDRICreateBuffer(__DRIscreen *psDRIScreen, __DRIdrawable *psDRIDrawable,
++                   const struct gl_config *psGLMode, GLboolean bIsPixmap)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   PVRDRIDrawable *psPVRDrawable = NULL;
++
++   /* No known callers ever set this to true */
++   if (bIsPixmap)
++      return GL_FALSE;
++
++   if (!psGLMode) {
++      __driUtilMessage("%s: Invalid GL config", __func__);
++      return GL_FALSE;
++   }
++
++   psPVRDrawable = calloc(1, sizeof(*psPVRDrawable));
++   if (!psPVRDrawable) {
++      __driUtilMessage("%s: Couldn't allocate PVR drawable", __func__);
++      goto ErrorDrawableFree;
++   }
++
++   psDRIDrawable->driverPrivate = (void *) psPVRDrawable;
++   psPVRDrawable->psDRIDrawable = psDRIDrawable;
++   psPVRDrawable->psPVRScreen = psPVRScreen;
++   psPVRDrawable->sConfig.sGLMode = *psGLMode;
++   psPVRDrawable->sConfig.iSupportedAPIs =
++      PVRDRIScreenSupportedAPIs(psPVRScreen);
++
++   psPVRDrawable->psDRISUPDrawable =
++      DRISUPCreateDrawable(psDRIDrawable, psPVRScreen->psDRISUPScreen,
++                           psDRIDrawable->loaderPrivate,
++                           &psPVRDrawable->sConfig);
++   if (!psPVRDrawable->psDRISUPDrawable) {
++      __driUtilMessage("%s: Couldn't create DRI Support drawable",
++                       __func__);
++      goto ErrorDrawableFree;
++   }
++
++   /* Initialisation is completed in MakeCurrent */
++#if defined(DEBUG)
++   p_atomic_inc(&psPVRScreen->iDrawableAlloc);
++#endif
++   PVRDRIScreenAddReference(psPVRScreen);
++   return GL_TRUE;
++
++ErrorDrawableFree:
++   DRISUPDestroyDrawable(psPVRDrawable->psDRISUPDrawable);
++   free(psPVRDrawable);
++   psDRIDrawable->driverPrivate = NULL;
++
++   return GL_FALSE;
++}
++
++static void
++PVRDRIDestroyBuffer(__DRIdrawable *psDRIDrawable)
++{
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++
++   DRISUPDestroyDrawable(psPVRDrawable->psDRISUPDrawable);
++
++#if defined(DEBUG)
++   p_atomic_dec(&psPVRDrawable->psPVRScreen->iDrawableAlloc);
++#endif
++
++   PVRDRIScreenRemoveReference(psPVRDrawable->psPVRScreen);
++   free(psPVRDrawable);
++}
++
++static GLboolean
++PVRDRIMakeCurrent(__DRIcontext *psDRIContext,
++                  __DRIdrawable *psDRIWrite, __DRIdrawable *psDRIRead)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++   struct DRISUPDrawable *psDRISUPWrite;
++   struct DRISUPDrawable *psDRISUPRead;
++
++   if (psDRIWrite) {
++      PVRDRIDrawable *psPVRWrite = psDRIWrite->driverPrivate;
++
++      psDRISUPWrite = psPVRWrite->psDRISUPDrawable;
++   } else {
++      psDRISUPWrite = NULL;
++   }
++
++   if (psDRIRead) {
++      PVRDRIDrawable *psPVRRead = psDRIRead->driverPrivate;
++
++      psDRISUPRead = psPVRRead->psDRISUPDrawable;
++   } else {
++      psDRISUPRead = NULL;
++   }
++
++   if (!DRISUPMakeCurrent(psPVRContext->psDRISUPContext,
++                          psDRISUPWrite, psDRISUPRead))
++      goto ErrorUnlock;
++
++   pvrdri_set_dispatch_table(psPVRContext);
++
++   return GL_TRUE;
++
++ErrorUnlock:
++   return GL_FALSE;
++}
++
++static GLboolean
++PVRDRIUnbindContext(__DRIcontext *psDRIContext)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   pvrdri_set_null_dispatch_table();
++   DRISUPUnbindContext(psPVRContext->psDRISUPContext);
++
++   return GL_TRUE;
++}
++
++static __DRIbuffer *
++PVRDRIAllocateBuffer(__DRIscreen *psDRIScreen, unsigned int uAttachment,
++                     unsigned int uFormat, int iWidth, int iHeight)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   struct PVRBuffer *psBuffer;
++
++   psBuffer = calloc(1, sizeof(*psBuffer));
++   if (psBuffer == NULL) {
++      __driUtilMessage("%s: Failed to allocate buffer", __func__);
++      return NULL;
++   }
++
++   psBuffer->psDRISUPBuffer =
++      DRISUPAllocateBuffer(psPVRScreen->psDRISUPScreen, uAttachment, uFormat,
++                           iWidth, iHeight, &psBuffer->sDRIBuffer.name,
++                           &psBuffer->sDRIBuffer.pitch,
++                           &psBuffer->sDRIBuffer.cpp,
++                           &psBuffer->sDRIBuffer.flags);
++   if (!psBuffer->psDRISUPBuffer) {
++      __driUtilMessage("%s: Failed to create DRI Support buffer", __func__);
++      goto ErrorFreeDRIBuffer;
++   }
++
++   psBuffer->sDRIBuffer.attachment = uAttachment;
++
++#if defined(DEBUG)
++   p_atomic_inc(&psPVRScreen->iBufferAlloc);
++#endif
++
++   return &psBuffer->sDRIBuffer;
++
++ErrorFreeDRIBuffer:
++   free(psBuffer);
++
++   return NULL;
++}
++
++static void
++PVRDRIReleaseBuffer(__DRIscreen *psDRIScreen, __DRIbuffer *psDRIBuffer)
++{
++   struct PVRBuffer *psPVRBuffer = (struct PVRBuffer *) psDRIBuffer;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   DRISUPReleaseBuffer(psPVRScreen->psDRISUPScreen,
++                       psPVRBuffer->psDRISUPBuffer);
++
++#if defined(DEBUG)
++   p_atomic_dec(&psPVRScreen->iBufferAlloc);
++#endif
++
++   free(psPVRBuffer);
++}
++
++static const struct __DriverAPIRec pvr_driver_api = {
++   .InitScreen = PVRDRIInitScreen,
++   .DestroyScreen = PVRDRIDestroyScreen,
++   .CreateContext = PVRDRICreateContext,
++   .DestroyContext = PVRDRIDestroyContext,
++   .CreateBuffer = PVRDRICreateBuffer,
++   .DestroyBuffer = PVRDRIDestroyBuffer,
++   .SwapBuffers = NULL,
++   .MakeCurrent = PVRDRIMakeCurrent,
++   .UnbindContext = PVRDRIUnbindContext,
++   .AllocateBuffer = PVRDRIAllocateBuffer,
++   .ReleaseBuffer = PVRDRIReleaseBuffer,
++};
++
++static const struct __DRIDriverVtableExtensionRec pvr_vtable = {
++   .base = {__DRI_DRIVER_VTABLE, 1},
++   .vtable = &pvr_driver_api,
++};
++
++static const __DRIextension *pvr_driver_extensions[] = {
++   &driCoreExtension.base,
++   &driImageDriverExtension.base,
++   &driDRI2Extension.base,
++   &pvr_vtable.base,
++   NULL
++};
++
++const __DRIextension **__driDriverGetExtensions_pvr(void);
++
++PUBLIC const __DRIextension **
++__driDriverGetExtensions_pvr(void)
++{
++   globalDriverAPI = &pvr_driver_api;
++
++   return pvr_driver_extensions;
++}
+diff --git a/src/mesa/drivers/dri/pvr/pvrdri.h b/src/mesa/drivers/dri/pvr/pvrdri.h
+new file mode 100644
+index 00000000000..b497cc4839b
+--- /dev/null
++++ b/src/mesa/drivers/dri/pvr/pvrdri.h
+@@ -0,0 +1,171 @@
++/*
++ * Copyright (c) Imagination Technologies Ltd.
++ *
++ * The contents of this file are subject to the MIT license as set out below.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++#if !defined(__PVRDRI_H__)
++#define __PVRDRI_H__
++
++#include <stdbool.h>
++#include <stdint.h>
++#include <inttypes.h>
++
++#include <glapi/glapi.h>
++
++#include "main/mtypes.h"
++#include "util/macros.h"
++#include "dri_util.h"
++#include "pvrdri_support.h"
++
++struct PVRDRIConfigRec {
++   struct gl_config sGLMode;
++   int iSupportedAPIs;
++};
++
++/* PVR screen data */
++typedef struct PVRDRIScreen_TAG {
++   /* DRI screen structure pointer */
++   __DRIscreen *psDRIScreen;
++
++   /* Opaque PVR DRI Support screen structure pointer */
++   struct DRISUPScreen *psDRISUPScreen;
++
++   /* Reference count */
++   int iRefCount;
++
++#if defined(DEBUG)
++   /* Counters of outstanding allocations */
++   int iContextAlloc;
++   int iDrawableAlloc;
++   int iBufferAlloc;
++#endif
++
++   /* PVR OGLES 1 dispatch table */
++   struct _glapi_table *psOGLES1Dispatch;
++   /* PVR OGLES 2/3 dispatch table */
++   struct _glapi_table *psOGLES2Dispatch;
++} PVRDRIScreen;
++
++/* PVR context data */
++typedef struct PVRDRIContext_TAG {
++   /* Pointer to DRI context */
++   __DRIcontext *psDRIContext;
++
++   /* Opaque PVR DRI Support context structure pointer */
++   struct DRISUPContext *psDRISUPContext;
++
++   /* Pointer to PVRDRIScreen structure */
++   PVRDRIScreen *psPVRScreen;
++
++   /* GL config */
++   PVRDRIConfig sConfig;
++
++   /* API */
++   PVRDRIAPIType eAPI;
++} PVRDRIContext;
++
++/* PVR drawable data */
++typedef struct PVRDRIDrawable_TAG {
++   PVRDRIScreen *psPVRScreen;
++   __DRIdrawable *psDRIDrawable;
++   PVRDRIConfig sConfig;
++   struct DRISUPDrawable *psDRISUPDrawable;
++   unsigned int uFourCC;
++   unsigned int uDRIFormat;
++} PVRDRIDrawable;
++
++/*************************************************************************//*!
++ pvrutil.c
++ *//**************************************************************************/
++
++void PRINTFLIKE(1, 2) __driUtilMessage(const char *f, ...);
++void PRINTFLIKE(1, 2) errorMessage(const char *f, ...);
++
++mesa_format PVRDRIMesaFormatToMesaFormat(int pvrdri_mesa_format);
++int PVRDRIFormatToFourCC(int dri_format);
++int PVRDRIFourCCToDRIFormat(int iFourCC);
++
++/*************************************************************************//*!
++ pvrext.c
++ *//**************************************************************************/
++
++const __DRIextension **PVRDRIScreenExtensions(void);
++const __DRIextension *PVRDRIScreenExtensionVersionInfo(void);
++
++void PVRDRIAdjustExtensions(unsigned int uVersion, unsigned int uMinVersion);
++
++/*************************************************************************//*!
++ pvrcompat.c
++ *//**************************************************************************/
++
++bool PVRDRICompatInit(const PVRDRICallbacks *psCallbacks,
++                      unsigned int uVersion,
++                      const struct PVRDRICallbacksV2 *psCallbacksV2,
++                      unsigned int uVersionV2, unsigned int uMinVersionV2);
++void PVRDRICompatDeinit(void);
++
++bool PVRDRIRegisterSupportInterfaceV1(const PVRDRISupportInterface *psInterface,
++                                      unsigned int uVersion);
++bool MODSUPRegisterSupportInterfaceV2(const void *pvInterface,
++                                      unsigned int uVersion,
++                                      unsigned int uMinVersion);
++
++/*************************************************************************//*!
++ pvrcb.c
++ *//**************************************************************************/
++
++int MODSUPGetBuffers(struct __DRIdrawableRec *psDRIDrawable,
++                     unsigned int uFourCC, uint32_t *puStamp,
++                     void *pvLoaderPrivate, uint32_t uBufferMask,
++                     struct PVRDRIImageList *psImageList);
++
++bool MODSUPCreateConfigs(struct __DRIconfigRec ***psConfigs,
++                         struct __DRIscreenRec *psDRIScreen,
++                         int iPVRDRIMesaFormat, const uint8_t *puDepthBits,
++                         const uint8_t *puStencilBits,
++                         unsigned int uNumDepthStencilBits,
++                         const unsigned int *puDBModes,
++                         unsigned int uNumDBModes,
++                         const uint8_t *puMSAASamples,
++                         unsigned int uNumMSAAModes, bool bEnableAccum,
++                         bool bColorDepthMatch, bool bMutableRenderBuffer,
++                         int iYUVDepthRange, int iYUVCSCStandard,
++                         uint32_t uMaxPbufferWidth, uint32_t uMaxPbufferHeight);
++
++struct __DRIconfigRec **MODSUPConcatConfigs(struct __DRIscreenRec *psDRIScreen,
++                                            struct __DRIconfigRec **ppsConfigA,
++                                            struct __DRIconfigRec **ppsConfigB);
++
++__DRIimage *MODSUPLookupEGLImage(struct __DRIscreenRec *psDRIScreen,
++                                 void *pvImage, void *pvLoaderPrivate);
++
++unsigned int MODSUPGetCapability(struct __DRIscreenRec *psDRIScreen,
++                                 unsigned int uCapability);
++
++bool PVRDRIConfigQuery(const PVRDRIConfig *psConfig,
++                       PVRDRIConfigAttrib eConfigAttrib, int *piValueOut);
++
++bool MODSUPConfigQuery(const PVRDRIConfig *psConfig,
++                       PVRDRIConfigAttrib eConfigAttrib,
++                       unsigned int *puValueOut);
++
++#endif /* defined(__PVRDRI_H__) */
+diff --git a/src/mesa/drivers/dri/pvr/pvrdri_mod.c b/src/mesa/drivers/dri/pvr/pvrdri_mod.c
+new file mode 100644
+index 00000000000..0abe8a38d3a
+--- /dev/null
++++ b/src/mesa/drivers/dri/pvr/pvrdri_mod.c
+@@ -0,0 +1,584 @@
++/*
++ * Copyright (c) Imagination Technologies Ltd.
++ *
++ * The contents of this file are subject to the MIT license as set out below.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++#include <stdlib.h>
++#include <xf86drm.h>
++
++#include "pvrdri_mod.h"
 +
 +#define PVR_IMAGE_LOADER_VER_MIN 1
 +
@@ -3830,984 +5154,561 @@
 +#define PVRDRI_FLUSH_NEW_EXTERNAL_FRAME (1U << 1)
 +#define PVRDRI_FLUSH_ALL_SURFACES       (1U << 2)
 +
-+typedef struct PVRBufferRec
-+{
-+	__DRIbuffer sDRIBuffer;
-+	PVRDRIBufferImpl *psImpl;
-+} PVRBuffer;
 +
 +/* We need to know the current screen in order to lookup EGL images. */
-+static __thread PVRDRIScreen *gpsPVRScreen;
++static __thread struct DRISUPScreen *gpsPVRScreen;
 +
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + Local functions
-+*/ /**************************************************************************/
-+
-+static bool PVRLoaderIsSupported(__DRIscreen *psDRIScreen)
-+{
-+	if (psDRIScreen->image.loader)
-+	{
-+		if (psDRIScreen->image.loader->base.version < PVR_IMAGE_LOADER_VER_MIN)
-+		{
-+			__driUtilMessage("%s: Image loader extension version %d but need %d",
-+					 __func__,
-+					 psDRIScreen->image.loader->base.version,
-+					 PVR_IMAGE_LOADER_VER_MIN);
-+			return false;
-+		}
-+		else if (!psDRIScreen->image.loader->getBuffers)
-+		{
-+			__driUtilMessage("%s: Image loader extension missing support for getBuffers",
-+					 __func__);
-+			return false;
-+		}
-+	}
-+	else
-+	{
-+		__driUtilMessage("%s: Image loader extension required",
-+				 __func__);
-+		return false;
-+	}
-+
-+	return true;
-+}
++ *//**************************************************************************/
 +
 +static inline bool
-+PVRDRIFlushBuffers(PVRDRIContext *psPVRContext,
-+		   PVRDRIDrawable *psPVRDrawable,
-+		   uint32_t uiFlags)
++PVRDRIFlushBuffers(struct DRISUPContext *psPVRContext,
++                   struct DRISUPDrawable *psPVRDrawable, uint32_t uiFlags)
 +{
-+	assert(!(uiFlags & ~(PVRDRI_FLUSH_WAIT_FOR_HW |
-+			     PVRDRI_FLUSH_NEW_EXTERNAL_FRAME |
-+			     PVRDRI_FLUSH_ALL_SURFACES)));
++   PVRDRIDrawableImpl *psDrawableImpl;
++   bool bFlushAllSurfaces = (uiFlags & PVRDRI_FLUSH_ALL_SURFACES) != 0;
++   bool bSwapBuffers = (uiFlags & PVRDRI_FLUSH_NEW_EXTERNAL_FRAME) != 0;
++   bool bWaitForHW = (uiFlags & PVRDRI_FLUSH_WAIT_FOR_HW) != 0;
 +
-+	return PVRDRIEGLFlushBuffers(psPVRContext->eAPI,
-+	                             psPVRContext->psPVRScreen->psImpl,
-+	                             psPVRContext->psImpl,
-+	                             psPVRDrawable ? psPVRDrawable->psImpl : NULL,
-+	                             uiFlags & PVRDRI_FLUSH_ALL_SURFACES,
-+	                             uiFlags & PVRDRI_FLUSH_NEW_EXTERNAL_FRAME,
-+	                             uiFlags & PVRDRI_FLUSH_WAIT_FOR_HW);
++   psDrawableImpl = psPVRDrawable ? psPVRDrawable->psImpl : NULL;
++
++   assert(!(uiFlags & ~(PVRDRI_FLUSH_WAIT_FOR_HW |
++                        PVRDRI_FLUSH_NEW_EXTERNAL_FRAME |
++                        PVRDRI_FLUSH_ALL_SURFACES)));
++
++   return PVRDRIEGLFlushBuffers(psPVRContext->eAPI,
++                                psPVRContext->psPVRScreen->psImpl,
++                                psPVRContext->psImpl, psDrawableImpl,
++                                bFlushAllSurfaces, bSwapBuffers, bWaitForHW);
 +}
 +
 +void
-+PVRDRIFlushBuffersForSwap(PVRDRIContext *psPVRContext,
-+                          PVRDRIDrawable *psPVRDrawable)
++PVRDRIFlushBuffersForSwap(struct DRISUPContext *psPVRContext,
++                          struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (psPVRContext)
-+	{
-+		/*
-+		 * The bFlushInProgress flag is intended to prevent new
-+		 * buffers being fetched whilst a flush is in progress,
-+		 * which may corrupt the state maintained by the Mesa
-+		 * platform code.
-+		 */
-+		psPVRDrawable->bFlushInProgress = true;
++   if (psPVRContext) {
++      /*
++       * The bFlushInProgress flag is intended to prevent new buffers being
++       * fetched whilst a flush is in progress, which may corrupt the state
++       * maintained by the Mesa platform code.
++       */
++      psPVRDrawable->bFlushInProgress = true;
 +
-+		(void) PVRDRIFlushBuffers(psPVRContext,
-+					  psPVRDrawable,
-+					  PVRDRI_FLUSH_NEW_EXTERNAL_FRAME);
++      (void) PVRDRIFlushBuffers(psPVRContext,
++                                psPVRDrawable,
++                                PVRDRI_FLUSH_NEW_EXTERNAL_FRAME);
 +
-+		psPVRDrawable->bFlushInProgress = false;
-+	}
++      psPVRDrawable->bFlushInProgress = false;
++   }
 +}
 +
 +static void
-+PVRDRIFlushBuffersGC(PVRDRIContext *psPVRContext, PVRDRIDrawable *psPVRDrawable)
++PVRDRIFlushBuffersGC(struct DRISUPContext *psPVRContext,
++                     struct DRISUPDrawable *psPVRDrawable)
 +{
-+	(void) PVRDRIFlushBuffers(psPVRContext,
-+				  psPVRDrawable,
-+				  PVRDRI_FLUSH_WAIT_FOR_HW |
-+				  PVRDRI_FLUSH_ALL_SURFACES);
++   (void) PVRDRIFlushBuffers(psPVRContext, psPVRDrawable,
++                             PVRDRI_FLUSH_WAIT_FOR_HW |
++                             PVRDRI_FLUSH_ALL_SURFACES);
 +}
 +
-+static void PVRContextUnbind(PVRDRIContext *psPVRContext,
-+			     bool bMakeUnCurrent,
-+			     bool bMarkSurfaceInvalid)
++static void
++PVRContextUnbind(struct DRISUPContext *psPVRContext, bool bMakeUnCurrent,
++                 bool bMarkSurfaceInvalid)
 +{
-+	PVRDRIDrawable *psPVRDrawable = psPVRContext->psPVRDrawable;
++   struct DRISUPScreen *psPVRScreen = psPVRContext->psPVRScreen;
++   struct DRISUPDrawable *psPVRDrawable = psPVRContext->psPVRDrawable;
 +
-+	if (bMakeUnCurrent)
-+	{
-+		uint32_t uiFlags = PVRDRI_FLUSH_ALL_SURFACES;
++   if (bMakeUnCurrent && !psPVRContext->bMakeUncurrentNoFlush) {
++      uint32_t uiFlags = PVRDRI_FLUSH_ALL_SURFACES;
 +
-+		(void) PVRDRIFlushBuffers(psPVRContext, psPVRDrawable, uiFlags);
-+	}
-+	else if (psPVRDrawable)
-+	{
-+		PVRDRIFlushBuffersGC(psPVRContext, psPVRDrawable);
-+	}
++      (void) PVRDRIFlushBuffers(psPVRContext, psPVRDrawable, uiFlags);
++   } else if (psPVRDrawable) {
++      PVRDRIFlushBuffersGC(psPVRContext, psPVRDrawable);
++   }
 +
-+	if (bMakeUnCurrent)
-+	{
-+		PVRDRIMakeUnCurrentGC(psPVRContext->eAPI,
-+		                      psPVRContext->psPVRScreen->psImpl);
-+	}
++   if (bMakeUnCurrent)
++      PVRDRIMakeUnCurrentGC(psPVRContext->eAPI, psPVRScreen->psImpl);
 +
-+	if (psPVRDrawable != NULL)
-+	{
-+		if (bMarkSurfaceInvalid)
-+		{
-+			PVRDRIEGLMarkRendersurfaceInvalid(psPVRContext->eAPI,
-+			                                  psPVRContext->psPVRScreen->psImpl,
-+			                                  psPVRContext->psImpl);
-+		}
++   if (psPVRDrawable != NULL) {
++      if (bMarkSurfaceInvalid) {
++         PVRDRIEGLMarkRendersurfaceInvalid(psPVRContext->eAPI,
++                                           psPVRScreen->psImpl,
++                                           psPVRContext->psImpl);
++      }
 +
-+		psPVRContext->psPVRDrawable = NULL;
-+		psPVRDrawable->psPVRContext = NULL;
-+	}
++      psPVRContext->psPVRDrawable = NULL;
++      psPVRDrawable->psPVRContext = NULL;
++   }
 +}
 +
-+static inline PVRDRIContextImpl *
-+getSharedContextImpl(void *pvSharedContextPrivate)
++static inline void
++PVRDrawableUnbindContext(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	if (pvSharedContextPrivate == NULL)
-+	{
-+		return NULL;
-+	}
-+	return ((PVRDRIContext *)pvSharedContextPrivate)->psImpl;
++   struct DRISUPContext *psPVRContext = psPVRDrawable->psPVRContext;
++
++   if (psPVRContext)
++      PVRContextUnbind(psPVRContext, false, true);
 +}
 +
-+
-+static void PVRDRIScreenAddReference(PVRDRIScreen *psPVRScreen)
-+{
-+	int iRefCount = p_atomic_inc_return(&psPVRScreen->iRefCount);
-+	(void)iRefCount;
-+	assert(iRefCount > 1);
-+}
-+
-+static void PVRDRIScreenRemoveReference(PVRDRIScreen *psPVRScreen)
-+{
-+	int iRefCount = p_atomic_dec_return(&psPVRScreen->iRefCount);
-+
-+	assert(iRefCount >= 0);
-+
-+	if (iRefCount != 0)
-+	{
-+		return;
-+	}
-+
-+	pvrdri_free_dispatch_tables(psPVRScreen);
-+
-+	PVRDRIDestroyFencesImpl(psPVRScreen->psImpl);
-+
-+	PVRDRIDestroyFormatInfo(psPVRScreen);
-+
-+	PVRDRIDestroyScreenImpl(psPVRScreen->psImpl);
-+
-+	free(psPVRScreen);
-+}
-+
-+static inline void PVRDrawableUnbindContext(PVRDRIDrawable *psPVRDrawable)
-+{
-+	PVRDRIContext *psPVRContext = psPVRDrawable->psPVRContext;
-+
-+	if (psPVRContext)
-+	{
-+		PVRContextUnbind(psPVRContext, false, true);
-+	}
-+}
-+
-+static void PVRScreenPrintExtensions(__DRIscreen *psDRIScreen)
-+{
-+	/* Don't attempt to print anything if LIBGL_DEBUG isn't in the environment */
-+	if (getenv("LIBGL_DEBUG") == NULL)
-+	{
-+		return;
-+	}
-+
-+	if (psDRIScreen->extensions)
-+	{
-+		const __DRIextension *psScreenExtensionVersionInfo = PVRDRIScreenExtensionVersionInfo();
-+		int i;
-+		int j;
-+
-+		__driUtilMessage("Supported screen extensions:");
-+
-+		for (i = 0; psDRIScreen->extensions[i]; i++)
-+		{
-+			for (j = 0; psScreenExtensionVersionInfo[j].name; j++)
-+			{
-+				if (strcmp(psDRIScreen->extensions[i]->name,
-+				           psScreenExtensionVersionInfo[j].name) == 0)
-+				{
-+					__driUtilMessage("\t%s (supported version: %u - max version: %u)",
-+							 psDRIScreen->extensions[i]->name,
-+							 psDRIScreen->extensions[i]->version,
-+							 psScreenExtensionVersionInfo[j].version);
-+					break;
-+				}
-+			}
-+
-+			if (psScreenExtensionVersionInfo[j].name == NULL)
-+			{
-+				__driUtilMessage("\t%s (supported version: %u - max version: unknown)",
-+						 psDRIScreen->extensions[i]->name,
-+						 psDRIScreen->extensions[i]->version);
-+			}
-+		}
-+	}
-+	else
-+	{
-+		__driUtilMessage("No screen extensions found");
-+	}
-+}
-+
-+static bool PVRDRIConfigQuery(const PVRDRIConfig *psConfig,
-+			      PVRDRIConfigAttrib eConfigAttrib,
-+			      int *piValueOut)
-+{
-+	if (!psConfig || !piValueOut)
-+	{
-+		return false;
-+	}
-+
-+	switch (eConfigAttrib)
-+	{
-+		case PVRDRI_CONFIG_ATTRIB_RENDERABLE_TYPE:
-+			*piValueOut = psConfig->iSupportedAPIs;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_RGB_MODE:
-+			*piValueOut = psConfig->sGLMode.rgbMode;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_DOUBLE_BUFFER_MODE:
-+			*piValueOut = psConfig->sGLMode.doubleBufferMode;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_RED_BITS:
-+			*piValueOut = psConfig->sGLMode.redBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_GREEN_BITS:
-+			*piValueOut = psConfig->sGLMode.greenBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_BLUE_BITS:
-+			*piValueOut = psConfig->sGLMode.blueBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_ALPHA_BITS:
-+			*piValueOut = psConfig->sGLMode.alphaBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_RGB_BITS:
-+			*piValueOut = psConfig->sGLMode.rgbBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_DEPTH_BITS:
-+			*piValueOut = psConfig->sGLMode.depthBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_STENCIL_BITS:
-+			*piValueOut = psConfig->sGLMode.stencilBits;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_SAMPLE_BUFFERS:
-+			*piValueOut = psConfig->sGLMode.sampleBuffers;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_SAMPLES:
-+			*piValueOut = psConfig->sGLMode.samples;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_BIND_TO_TEXTURE_RGB:
-+			*piValueOut = psConfig->sGLMode.bindToTextureRgb;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_BIND_TO_TEXTURE_RGBA:
-+			*piValueOut = psConfig->sGLMode.bindToTextureRgba;
-+			return true;
-+#if defined(__DRI_ATTRIB_YUV_BIT)
-+		case PVRDRI_CONFIG_ATTRIB_YUV_ORDER:
-+			*piValueOut = psConfig->sGLMode.YUVOrder;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_YUV_NUM_OF_PLANES:
-+			*piValueOut = psConfig->sGLMode.YUVNumberOfPlanes;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_YUV_SUBSAMPLE:
-+			*piValueOut = psConfig->sGLMode.YUVSubsample;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_YUV_DEPTH_RANGE:
-+			*piValueOut = psConfig->sGLMode.YUVDepthRange;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_YUV_CSC_STANDARD:
-+			*piValueOut = psConfig->sGLMode.YUVCSCStandard;
-+			return true;
-+		case PVRDRI_CONFIG_ATTRIB_YUV_PLANE_BPP:
-+			*piValueOut = psConfig->sGLMode.YUVPlaneBPP;
-+			return true;
-+#endif
-+		case PVRDRI_CONFIG_ATTRIB_INVALID:
-+			errorMessage("%s: Invalid attribute", __func__);
-+			assert(0);
-+			/* fallthrough */
-+#if !defined(__DRI_ATTRIB_YUV_BIT)
-+		case PVRDRI_CONFIG_ATTRIB_YUV_ORDER:
-+		case PVRDRI_CONFIG_ATTRIB_YUV_NUM_OF_PLANES:
-+		case PVRDRI_CONFIG_ATTRIB_YUV_SUBSAMPLE:
-+		case PVRDRI_CONFIG_ATTRIB_YUV_DEPTH_RANGE:
-+		case PVRDRI_CONFIG_ATTRIB_YUV_CSC_STANDARD:
-+		case PVRDRI_CONFIG_ATTRIB_YUV_PLANE_BPP:
-+			return false;
-+#endif
-+	}
-+
-+	return false;
-+}
-+
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + Mesa driver API functions
-+*/ /**************************************************************************/
-+static const __DRIconfig **PVRDRIInitScreen(__DRIscreen *psDRIScreen)
++ *//**************************************************************************/
++struct DRISUPScreen *
++DRIMODCreateScreen(struct __DRIscreenRec *psDRIScreen, int iFD,
++                   bool bUseInvalidate, void *pvLoaderPrivate,
++                   const struct __DRIconfigRec ***pppsConfigs,
++                   int *piMaxGLES1Version, int *piMaxGLES2Version)
 +{
-+	PVRDRIScreen *psPVRScreen;
-+	const __DRIconfig **configs;
-+	const PVRDRICallbacks sDRICallbacks = {
-+		/* Version 0 callbacks */
-+		.DrawableRecreate            = PVRDRIDrawableRecreateV0,
-+		.DrawableGetParameters       = PVRDRIDrawableGetParametersV0,
-+		.ImageGetSharedType          = PVRDRIImageGetSharedType,
-+		.ImageGetSharedBuffer        = PVRDRIImageGetSharedBuffer,
-+		.ImageGetSharedEGLImage      = PVRDRIImageGetSharedEGLImage,
-+		.ImageGetEGLImage            = PVRDRIImageGetEGLImage,
-+		.ScreenGetDRIImage           = PVRDRIScreenGetDRIImage,
-+		.RefImage                    = PVRDRIRefImage,
-+		.UnrefImage                  = PVRDRIUnrefImage,
++   struct DRISUPScreen *psPVRScreen;
++   const struct __DRIconfigRec **ppsConfigs;
 +
-+		/* Version 1 callbacks */
-+		.DrawableGetParametersV1     = PVRDRIDrawableGetParametersV1,
-+		.RegisterSupportInterfaceV1  = PVRDRIRegisterSupportInterfaceV1,
++   psPVRScreen = calloc(1, sizeof(*psPVRScreen));
++   if (psPVRScreen == NULL) {
++      __driUtilMessage("%s: Couldn't allocate PVRDRIScreen", __func__);
++      return NULL;
++   }
 +
-+		/* Version 2 callbacks */
-+		.ConfigQuery                 = PVRDRIConfigQuery,
-+		.DrawableGetParametersV2     = PVRDRIDrawableGetParametersV2,
-+		.DrawableQuery               = PVRDRIDrawableQuery,
-+	};
++   psPVRScreen->psDRIScreen = psDRIScreen;
++   psPVRScreen->iFD = iFD;
++   psPVRScreen->bUseInvalidate = bUseInvalidate;
++   psPVRScreen->pvLoaderPrivate = pvLoaderPrivate;
 +
-+	if (!PVRLoaderIsSupported(psDRIScreen))
-+	{
-+		return NULL;
-+	}
++   if (!PVRDRIGetMesaFormats(psPVRScreen))
++      goto ErrorScreenFree;
 +
-+	if (!PVRDRICompatInit(&sDRICallbacks, 3))
-+	{
-+		return NULL;
-+	}
++   psPVRScreen->psImpl = PVRDRICreateScreenImpl(iFD);
++   if (psPVRScreen->psImpl == NULL)
++      goto ErrorScreenFree;
 +
-+	psPVRScreen = calloc(1, sizeof(*psPVRScreen));
-+	if (psPVRScreen == NULL)
-+	{
-+		__driUtilMessage("%s: Couldn't allocate PVRDRIScreen",
-+				 __func__);
-+		goto ErrorCompatDeinit;
-+	}
++   if (!PVRDRIGetSupportedFormats(psPVRScreen))
++      goto ErrorScreenImplDeinit;
 +
-+	DRIScreenPrivate(psDRIScreen) = psPVRScreen;
-+	psPVRScreen->psDRIScreen = psDRIScreen;
++   ppsConfigs = PVRDRICreateConfigs(psPVRScreen);
++   if (ppsConfigs == NULL) {
++      __driUtilMessage("%s: No framebuffer configs", __func__);
++      goto ErrorDestroyFormatInfo;
++   }
 +
-+	psPVRScreen->iRefCount = 1;
-+	psPVRScreen->bUseInvalidate = (psDRIScreen->dri2.useInvalidate != NULL);
++   *piMaxGLES1Version = PVRDRIAPIVersion(PVRDRI_API_GLES1,
++                                         PVRDRI_API_SUB_NONE,
++                                         psPVRScreen->psImpl);
 +
-+	psDRIScreen->extensions = PVRDRIScreenExtensions();
++   *piMaxGLES2Version = PVRDRIAPIVersion(PVRDRI_API_GLES2,
++                                         PVRDRI_API_SUB_NONE,
++                                         psPVRScreen->psImpl);
 +
-+	psPVRScreen->psImpl = PVRDRICreateScreenImpl(psDRIScreen->fd);
-+	if (psPVRScreen->psImpl == NULL)
-+	{
-+		goto ErrorScreenFree;
-+	}
++   *pppsConfigs = ppsConfigs;
 +
-+	if (!PVRDRIGetSupportedFormats(psPVRScreen))
-+	{
-+		goto ErrorScreenImplDeinit;
-+	}
-+
-+	psDRIScreen->max_gl_es1_version =
-+				PVRDRIAPIVersion(PVRDRI_API_GLES1,
-+					         PVRDRI_API_SUB_NONE,
-+					         psPVRScreen->psImpl);
-+
-+	psDRIScreen->max_gl_es2_version =
-+				PVRDRIAPIVersion(PVRDRI_API_GLES2,
-+					         PVRDRI_API_SUB_NONE,
-+					         psPVRScreen->psImpl);
-+
-+	configs = PVRDRICreateConfigs();
-+	if (configs == NULL)
-+	{
-+		__driUtilMessage("%s: No framebuffer configs", __func__);
-+		goto ErrorDestroyFormatInfo;
-+	}
-+
-+	PVRScreenPrintExtensions(psDRIScreen);
-+
-+	return configs;
++   return psPVRScreen;
 +
 +ErrorDestroyFormatInfo:
-+	PVRDRIDestroyFormatInfo(psPVRScreen);
++   PVRDRIDestroyFormatInfo(psPVRScreen);
 +
 +ErrorScreenImplDeinit:
-+	PVRDRIDestroyScreenImpl(psPVRScreen->psImpl);
++   PVRDRIDestroyScreenImpl(psPVRScreen->psImpl);
 +
 +ErrorScreenFree:
-+	free(psPVRScreen);
++   PVRDRIFreeMesaFormats(psPVRScreen);
 +
-+ErrorCompatDeinit:
-+	PVRDRICompatDeinit();
++   free(psPVRScreen);
 +
-+	return NULL;
++   return NULL;
 +}
 +
-+static void PVRDRIDestroyScreen(__DRIscreen *psDRIScreen)
++void
++DRIMODDestroyScreen(struct DRISUPScreen *psPVRScreen)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
-+
-+#if defined(DEBUG)
-+	if (psPVRScreen->iBufferAlloc != 0 || psPVRScreen->iDrawableAlloc != 0 || psPVRScreen->iContextAlloc != 0)
-+	{
-+		errorMessage("%s: Outstanding allocations: Contexts: %d Drawables: %d Buffers: %d.",
-+						 __func__,
-+						 psPVRScreen->iContextAlloc,
-+						 psPVRScreen->iDrawableAlloc,
-+						 psPVRScreen->iBufferAlloc);
-+
-+		if (psPVRScreen->iRefCount > 1)
-+		{
-+			errorMessage("%s: PVRDRIScreen resources will not be freed until its %d references are removed.",
-+							 __func__,
-+							 psPVRScreen->iRefCount - 1);
-+		}
-+	}
-+#endif
-+
-+	PVRDRIScreenRemoveReference(psPVRScreen);
-+
-+	PVRDRICompatDeinit();
++   PVRDRIDestroyFormatInfo(psPVRScreen);
++   PVRDRIDestroyScreenImpl(psPVRScreen->psImpl);
++   PVRDRIFreeMesaFormats(psPVRScreen);
++   free(psPVRScreen);
 +}
 +
-+static int PVRDRIScreenSupportedAPIs(PVRDRIScreen *psPVRScreen)
++unsigned int
++DRIMODCreateContext(PVRDRIAPIType eAPI, PVRDRIConfig *psPVRDRIConfig,
++                    struct PVRDRIContextConfig *psCtxConfig,
++                    struct __DRIcontextRec *psDRIContext,
++                    struct DRISUPContext *psPVRSharedContext,
++                    struct DRISUPScreen *psPVRScreen,
++                    struct DRISUPContext **ppsPVRContext)
 +{
-+	unsigned api_mask = psPVRScreen->psDRIScreen->api_mask;
-+	int supported = 0;
++   struct DRISUPContext *psPVRContext;
++   PVRDRIContextImpl *psSharedImpl;
++   bool bNotifyReset;
++   unsigned int uError;
 +
-+	if ((api_mask & (1 << __DRI_API_GLES)) != 0)
-+	{
-+		supported |= PVRDRI_API_BIT_GLES;
-+	}
++   psSharedImpl = psPVRSharedContext ? psPVRSharedContext->psImpl : NULL,
++      psPVRContext = calloc(1, sizeof(*psPVRContext));
++   if (psPVRContext == NULL) {
++      __driUtilMessage("%s: Couldn't allocate PVRDRIContext", __func__);
++      return PVRDRI_CONTEXT_ERROR_NO_MEMORY;
++   }
 +
-+	if ((api_mask & (1 << __DRI_API_GLES2)) != 0)
-+	{
-+		supported |= PVRDRI_API_BIT_GLES2;
-+	}
++   psPVRContext->psDRIContext = psDRIContext;
++   psPVRContext->psPVRScreen = psPVRScreen;
 +
-+	if ((api_mask & (1 << __DRI_API_GLES3)) != 0)
-+	{
-+		supported |= PVRDRI_API_BIT_GLES3;
-+	}
++   switch (eAPI) {
++   case PVRDRI_API_GLES1:
++   case PVRDRI_API_GLES2:
++      break;
++   default:
++      __driUtilMessage("%s: Unsupported API: %d", __func__, (int) eAPI);
++      uError = PVRDRI_CONTEXT_ERROR_BAD_API;
++      goto ErrorContextFree;
++   }
++   psPVRContext->eAPI = eAPI;
 +
-+	return supported;
-+}
++   switch (psCtxConfig->iResetStrategy) {
++   case PVRDRI_CONTEXT_RESET_NO_NOTIFICATION:
++      bNotifyReset = false;
++      break;
++   case PVRDRI_CONTEXT_RESET_LOSE_CONTEXT:
++      bNotifyReset = true;
++      break;
++   default:
++      __driUtilMessage("%s: Unsupported reset strategy: %d",
++                       __func__, psCtxConfig->iResetStrategy);
++      uError = PVRDRI_CONTEXT_ERROR_UNKNOWN_ATTRIBUTE;
++      goto ErrorContextFree;
++   }
 +
-+static GLboolean PVRDRICreateContext(gl_api eMesaAPI,
-+                                     const struct gl_config *psGLMode,
-+                                     __DRIcontext *psDRIContext,
-+                                     const struct __DriverContextConfig *psCtxConfig,
-+                                     unsigned *puError,
-+                                     void *pvSharedContextPrivate)
-+{
-+	__DRIscreen *psDRIScreen = psDRIContext->driScreenPriv;
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
-+	PVRDRIContext *psPVRContext;
-+	PVRDRIAPISubType eAPISub = PVRDRI_API_SUB_NONE;
-+	bool notify_reset = false;
-+	unsigned uPriority = PVRDRI_CONTEXT_PRIORITY_MEDIUM;
-+	bool bResult;
++   switch (psCtxConfig->iReleaseBehavior) {
++   case PVRDRI_CONTEXT_RELEASE_BEHAVIOR_NONE:
++      psPVRContext->bMakeUncurrentNoFlush = true;
++      break;
++   case PVRDRI_CONTEXT_RELEASE_BEHAVIOR_FLUSH:
++      psPVRContext->bMakeUncurrentNoFlush = false;
++      break;
++   default:
++      __driUtilMessage("%s: Unsupported release behaviour: %d",
++                       __func__, psCtxConfig->iReleaseBehavior);
++      uError = PVRDRI_CONTEXT_ERROR_UNKNOWN_ATTRIBUTE;
++      goto ErrorContextFree;
++   }
 +
-+	psPVRContext = calloc(1, sizeof(*psPVRContext));
-+	if (psPVRContext == NULL)
-+	{
-+		__driUtilMessage("%s: Couldn't allocate PVRDRIContext",
-+				 __func__);
-+		*puError = __DRI_CTX_ERROR_NO_MEMORY;
-+		return GL_FALSE;
-+	}
++   uError = PVRDRICreateContextV1(psPVRScreen->psImpl, psSharedImpl,
++                                  psPVRDRIConfig, psPVRContext->eAPI,
++                                  PVRDRI_API_SUB_NONE,
++                                  psCtxConfig->uMajorVersion,
++                                  psCtxConfig->uMinorVersion,
++                                  psCtxConfig->uFlags, bNotifyReset,
++                                  psCtxConfig->uPriority,
++                                  &psPVRContext->psImpl);
++   if (uError != PVRDRI_CONTEXT_ERROR_SUCCESS)
++      goto ErrorContextFree;
 +
-+	psPVRContext->psDRIContext = psDRIContext;
-+	psPVRContext->psPVRScreen = psPVRScreen;
++   *ppsPVRContext = psPVRContext;
 +
-+	if (psGLMode)
-+	{
-+		psPVRContext->sConfig.sGLMode = *psGLMode;
-+	}
++   return uError;
 +
-+	switch (eMesaAPI)
-+	{
-+		case API_OPENGLES:
-+			psPVRContext->eAPI = PVRDRI_API_GLES1;
-+			break;
-+		case API_OPENGLES2:
-+			psPVRContext->eAPI = PVRDRI_API_GLES2;
-+			break;
-+		default:
-+			__driUtilMessage("%s: Unsupported API: %d",
-+					 __func__,
-+					 (int)eMesaAPI);
-+			goto ErrorContextFree;
-+	}
-+
-+	if (psCtxConfig->attribute_mask & __DRIVER_CONTEXT_ATTRIB_RESET_STRATEGY)
-+	{
-+		switch (psCtxConfig->reset_strategy)
-+		{
-+			case __DRI_CTX_RESET_LOSE_CONTEXT:
-+				notify_reset = true;
-+				break;
-+			default:
-+				__driUtilMessage("%s: Unsupported reset strategy: %d",
-+						 __func__,
-+						 (int)psCtxConfig->reset_strategy);
-+				goto ErrorContextFree;
-+		}
-+	}
-+
-+	if (psCtxConfig->attribute_mask & __DRIVER_CONTEXT_ATTRIB_PRIORITY)
-+	{
-+		uPriority = psCtxConfig->priority;
-+	}
-+
-+	*puError = PVRDRISupportCreateContext(psPVRScreen->psImpl,
-+					      getSharedContextImpl(pvSharedContextPrivate),
-+					      &psPVRContext->sConfig,
-+					      psPVRContext->eAPI,
-+					      eAPISub,
-+                                              psCtxConfig->major_version,
-+                                              psCtxConfig->minor_version,
-+                                              psCtxConfig->flags,
-+					      notify_reset,
-+					      uPriority,
-+					      &psPVRContext->psImpl);
-+	if (*puError != __DRI_CTX_ERROR_SUCCESS)
-+	{
-+		goto ErrorContextFree;
-+	}
-+
-+	/*
-+	 * The dispatch table must be created after the context, because
-+	 * PVRDRIContextCreate loads the API library, and we need the
-+	 * library handle to populate the dispatch table.
-+	 */
-+	bResult = pvrdri_create_dispatch_table(psPVRScreen, psPVRContext->eAPI);
-+
-+	if (!bResult)
-+	{
-+		__driUtilMessage("%s: Couldn't create dispatch table",
-+				 __func__);
-+		*puError = __DRI_CTX_ERROR_BAD_API;
-+		goto ErrorContextDestroy;
-+	}
-+
-+#if defined(DEBUG)
-+	p_atomic_inc(&psPVRScreen->iContextAlloc);
-+#endif
-+
-+	psDRIContext->driverPrivate = (void *)psPVRContext;
-+	PVRDRIScreenAddReference(psPVRScreen);
-+
-+	*puError = __DRI_CTX_ERROR_SUCCESS;
-+
-+	return GL_TRUE;
-+
-+ErrorContextDestroy:
-+	PVRDRIDestroyContextImpl(psPVRContext->psImpl,
-+				 psPVRContext->eAPI,
-+				 psPVRScreen->psImpl);
 +ErrorContextFree:
-+	free(psPVRContext);
++   free(psPVRContext);
 +
-+	return GL_FALSE;
++   return uError;
 +}
 +
-+static void PVRDRIDestroyContext(__DRIcontext *psDRIContext)
++void
++DRIMODDestroyContext(struct DRISUPContext *psPVRContext)
 +{
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
-+	PVRDRIScreen *psPVRScreen = psPVRContext->psPVRScreen;
++   struct DRISUPScreen *psPVRScreen = psPVRContext->psPVRScreen;
 +
-+	PVRContextUnbind(psPVRContext, false, false);
-+
-+	PVRDRIDestroyContextImpl(psPVRContext->psImpl,
-+				 psPVRContext->eAPI,
-+				 psPVRScreen->psImpl);
-+
-+	free(psPVRContext);
-+
-+#if defined(DEBUG)
-+	p_atomic_dec(&psPVRScreen->iContextAlloc);
-+#endif
-+
-+	PVRDRIScreenRemoveReference(psPVRScreen);
++   PVRContextUnbind(psPVRContext, false, false);
++   PVRDRIDestroyContextImpl(psPVRContext->psImpl, psPVRContext->eAPI,
++                            psPVRScreen->psImpl);
++   free(psPVRContext);
 +}
 +
-+IMG_PIXFMT PVRDRIGetPixelFormat(const struct gl_config *psGLMode)
++static IMG_PIXFMT
++PVRDRIGetPixelFormat(PVRDRIConfig *psPVRDRIConfig)
 +{
-+	switch (psGLMode->rgbBits)
-+	{
-+		case 32:
-+		case 24:
-+			if (psGLMode->redMask   == 0x00FF0000 &&
-+			    psGLMode->greenMask == 0x0000FF00 &&
-+			    psGLMode->blueMask  == 0x000000FF)
-+			{
-+				if (psGLMode->alphaMask == 0xFF000000)
-+				{
-+					return IMG_PIXFMT_B8G8R8A8_UNORM;
-+				}
-+				else if (psGLMode->alphaMask == 0)
-+				{
-+					return IMG_PIXFMT_B8G8R8X8_UNORM;
-+				}
-+			}
++   unsigned int uRGBBits;
++   unsigned int uRedMask, uGreenMask, uBlueMask, uAlphaMask;
++   unsigned int uSRGBCapable;
++   bool bRes;
 +
-+			if (psGLMode->redMask   == 0x000000FF &&
-+			    psGLMode->greenMask == 0x0000FF00 &&
-+			    psGLMode->blueMask  == 0x00FF0000)
-+			{
-+				if (psGLMode->alphaMask == 0xFF000000)
-+				{
-+					return IMG_PIXFMT_R8G8B8A8_UNORM;
-+				}
-+				else if (psGLMode->alphaMask == 0)
-+				{
-+					return IMG_PIXFMT_R8G8B8X8_UNORM;
-+				}
-+			}
++   bRes = MODSUPConfigQuery(psPVRDRIConfig,
++                            PVRDRI_CONFIG_ATTRIB_RGB_BITS, &uRGBBits);
 +
-+			__driUtilMessage("%s: Unsupported buffer format", __func__);
-+			return IMG_PIXFMT_UNKNOWN;
++   bRes &= MODSUPConfigQuery(psPVRDRIConfig,
++                             PVRDRI_CONFIG_ATTRIB_RED_MASK, &uRedMask);
 +
-+		case 16:
-+			if (psGLMode->redMask   == 0xF800 &&
-+			    psGLMode->greenMask == 0x07E0 &&
-+			    psGLMode->blueMask  == 0x001F)
-+			{
-+				return IMG_PIXFMT_B5G6R5_UNORM;
-+			}
++   bRes &= MODSUPConfigQuery(psPVRDRIConfig,
++                             PVRDRI_CONFIG_ATTRIB_GREEN_MASK,
++                             &uGreenMask);
 +
-+		default:
-+			errorMessage("%s: Unsupported screen format\n", __func__);
-+			return IMG_PIXFMT_UNKNOWN;
-+	}
++   bRes &= MODSUPConfigQuery(psPVRDRIConfig,
++                             PVRDRI_CONFIG_ATTRIB_BLUE_MASK, &uBlueMask);
++
++   bRes &= MODSUPConfigQuery(psPVRDRIConfig,
++                             PVRDRI_CONFIG_ATTRIB_ALPHA_MASK,
++                             &uAlphaMask);
++
++   bRes &= MODSUPConfigQuery(psPVRDRIConfig,
++                             PVRDRI_CONFIG_ATTRIB_SRGB_CAPABLE,
++                             &uSRGBCapable);
++
++   if (!bRes) {
++      __driUtilMessage("%s: Config query failed", __func__);
++      return IMG_PIXFMT_UNKNOWN;
++   }
++
++   switch (uRGBBits) {
++   case 32:
++   case 24:
++      if (uRedMask == 0x00FF0000 &&
++          uGreenMask == 0x0000FF00 && uBlueMask == 0x000000FF) {
++         if (uAlphaMask == 0xFF000000) {
++            if (uSRGBCapable)
++               return IMG_PIXFMT_B8G8R8A8_UNORM_SRGB;
++            else
++               return IMG_PIXFMT_B8G8R8A8_UNORM;
++         } else if (uAlphaMask == 0) {
++            return IMG_PIXFMT_B8G8R8X8_UNORM;
++         }
++      }
++
++      if (uRedMask == 0x000000FF &&
++          uGreenMask == 0x0000FF00 && uBlueMask == 0x00FF0000) {
++         if (uAlphaMask == 0xFF000000) {
++            if (uSRGBCapable)
++               return IMG_PIXFMT_R8G8B8A8_UNORM_SRGB;
++            else
++               return IMG_PIXFMT_R8G8B8A8_UNORM;
++         } else if (uAlphaMask == 0) {
++            return IMG_PIXFMT_R8G8B8X8_UNORM;
++         }
++      }
++
++      __driUtilMessage("%s: Unsupported format", __func__);
++
++      return IMG_PIXFMT_UNKNOWN;
++   case 16:
++      if (uRedMask == 0xF800 &&
++          uGreenMask == 0x07E0 && uBlueMask == 0x001F) {
++         return IMG_PIXFMT_B5G6R5_UNORM;
++      }
++
++      __driUtilMessage("%s: Unsupported format", __func__);
++
++      return IMG_PIXFMT_UNKNOWN;
++   default:
++      __driUtilMessage("%s: Unsupported format", __func__);
++
++      return IMG_PIXFMT_UNKNOWN;
++   }
 +}
 +
-+static GLboolean PVRDRICreateBuffer(__DRIscreen *psDRIScreen,
-+                                    __DRIdrawable *psDRIDrawable,
-+                                    const struct gl_config *psGLMode,
-+                                    GLboolean bIsPixmap)
++struct DRISUPDrawable *
++DRIMODCreateDrawable(struct __DRIdrawableRec *psDRIDrawable,
++                     struct DRISUPScreen *psPVRScreen, void *pvLoaderPrivate,
++                     PVRDRIConfig *psPVRDRIConfig)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
-+	PVRDRIDrawable *psPVRDrawable = NULL;
++   struct DRISUPDrawable *psPVRDrawable;
++   IMG_PIXFMT ePixelFormat;
++   unsigned int uDoubleBufferMode;
 +
-+	/* No known callers ever set this to true */
-+	if (bIsPixmap)
-+	{
-+		return GL_FALSE;
-+	}
++   psPVRDrawable = calloc(1, sizeof(*psPVRDrawable));
++   if (!psPVRDrawable) {
++      __driUtilMessage("%s: Couldn't allocate PVR drawable", __func__);
++      goto ErrorDrawableFree;
++   }
 +
-+	if (!psGLMode)
-+	{
-+		__driUtilMessage("%s: Invalid GL config", __func__);
-+		return GL_FALSE;
-+	}
++   psPVRDrawable->psDRIDrawable = psDRIDrawable;
++   psPVRDrawable->psPVRScreen = psPVRScreen;
++   psPVRDrawable->pvLoaderPrivate = pvLoaderPrivate;
++   psPVRDrawable->psConfig = psPVRDRIConfig;
 +
-+	psPVRDrawable = calloc(1, sizeof(*psPVRDrawable));
-+	if (!psPVRDrawable)
-+	{
-+		__driUtilMessage("%s: Couldn't allocate PVR drawable", __func__);
-+		goto ErrorDrawableFree;
-+	}
++   ePixelFormat = PVRDRIGetPixelFormat(psPVRDRIConfig);
++   if (ePixelFormat == IMG_PIXFMT_UNKNOWN) {
++      __driUtilMessage("%s: Couldn't determine IMG pixel format", __func__);
++      goto ErrorDrawableFree;
++   }
 +
-+	psDRIDrawable->driverPrivate = (void *)psPVRDrawable;
++   psPVRDrawable->psFormat =
++      PVRDRIIMGPixelFormatToImageFormat(psPVRScreen, ePixelFormat);
++   if (!psPVRDrawable->psFormat) {
++      __driUtilMessage("%s: Unsupported IMG pixel format (format = %u)",
++                       __func__, ePixelFormat);
++      return false;
++   }
 +
-+	psPVRDrawable->psDRIDrawable = psDRIDrawable;
-+	psPVRDrawable->psPVRScreen = psPVRScreen;
-+	psPVRDrawable->sConfig.sGLMode = *psGLMode;
-+	psPVRDrawable->sConfig.iSupportedAPIs =
-+		PVRDRIScreenSupportedAPIs(psPVRScreen);
++   if (!MODSUPConfigQuery(psPVRDRIConfig,
++                          PVRDRI_CONFIG_ATTRIB_DOUBLE_BUFFER_MODE,
++                          &uDoubleBufferMode)) {
++      __driUtilMessage("%s: Couldn't query double buffer mode", __func__);
++      goto ErrorDrawableFree;
++   }
++   psPVRDrawable->bDoubleBufferMode = (uDoubleBufferMode != 0);
 +
-+	psPVRDrawable->ePixelFormat = PVRDRIGetPixelFormat(psGLMode);
-+	if (psPVRDrawable->ePixelFormat == IMG_PIXFMT_UNKNOWN)
-+	{
-+		__driUtilMessage("%s: Couldn't work out pixel format", __func__);
-+		goto ErrorDrawableFree;
-+	}
++   /*
++    * We aren't told the type of the drawable so treat double buffered
++    * drawables as windows and single buffered drawables as pixmaps (although
++    * these could actually be pbuffers).
++    */
++   if (psPVRDrawable->bDoubleBufferMode)
++      psPVRDrawable->eType = PVRDRI_DRAWABLE_WINDOW;
++   else
++      psPVRDrawable->eType = PVRDRI_DRAWABLE_PIXMAP;
 +
-+	/*
-+	 * Mesa doesn't tell us the drawable type so treat double buffered
-+	 * drawables as windows (although GLX supports double buffered pbuffers)
-+	 * and single buffered drawables as pixmaps (although these could
-+	 * actually be pbuffers).
-+	 */
-+	if (psPVRDrawable->sConfig.sGLMode.doubleBufferMode)
-+	{
-+		psPVRDrawable->eType = PVRDRI_DRAWABLE_WINDOW;
-+	}
-+	else
-+	{
-+		psPVRDrawable->eType = PVRDRI_DRAWABLE_PIXMAP;
-+	}
++   psPVRDrawable->psImpl =
++      PVRDRICreateDrawableWithConfig((PVRDRIDrawable *) psPVRDrawable,
++                                     psPVRDRIConfig);
++   if (!psPVRDrawable->psImpl) {
++      __driUtilMessage("%s: Couldn't create PVR drawable", __func__);
++      goto ErrorDrawableFree;
++   }
 +
-+	psPVRDrawable->psImpl =
-+		PVRDRISupportCreateDrawable(psPVRDrawable,
-+					    &psPVRDrawable->sConfig);
-+	if (!psPVRDrawable->psImpl)
-+	{
-+		__driUtilMessage("%s: Couldn't allocate PVR drawable", __func__);
-+		goto ErrorDrawableFree;
-+	}
-+
-+	/* Initialisation is completed in MakeCurrent */
-+#if defined(DEBUG)
-+	p_atomic_inc(&psPVRScreen->iDrawableAlloc);
-+#endif
-+	PVRDRIScreenAddReference(psPVRScreen);
-+	return GL_TRUE;
++   return psPVRDrawable;
 +
 +ErrorDrawableFree:
-+	PVRDRIDestroyDrawableImpl(psPVRDrawable->psImpl);
-+	free(psPVRDrawable);
-+	psDRIDrawable->driverPrivate = NULL;
++   PVRDRIDestroyDrawableImpl(psPVRDrawable->psImpl);
++   free(psPVRDrawable);
 +
-+	return GL_FALSE;
++   return NULL;
 +}
 +
-+static void PVRDRIDestroyBuffer(__DRIdrawable *psDRIDrawable)
++void
++DRIMODDestroyDrawable(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	PVRDRIDrawable *psPVRDrawable = (PVRDRIDrawable *)psDRIDrawable->driverPrivate;
-+	PVRDRIScreen *psPVRScreen = psPVRDrawable->psPVRScreen;
-+
-+	PVRDrawableUnbindContext(psPVRDrawable);
-+
-+	PVRDRIDrawableDeinit(psPVRDrawable);
-+
-+	PVREGLDrawableDestroyConfig(psPVRDrawable->psImpl);
-+
-+	PVRDRIDestroyDrawableImpl(psPVRDrawable->psImpl);
-+
-+	free(psPVRDrawable);
-+
-+#if defined(DEBUG)
-+	p_atomic_dec(&psPVRScreen->iDrawableAlloc);
-+#endif
-+
-+	PVRDRIScreenRemoveReference(psPVRScreen);
++   PVRDrawableUnbindContext(psPVRDrawable);
++   PVRDRIDrawableDeinit(psPVRDrawable);
++   PVREGLDrawableDestroyConfig(psPVRDrawable->psImpl);
++   PVRDRIDestroyDrawableImpl(psPVRDrawable->psImpl);
++   free(psPVRDrawable);
 +}
 +
-+static GLboolean PVRDRIMakeCurrent(__DRIcontext *psDRIContext,
-+				   __DRIdrawable *psDRIWrite,
-+				   __DRIdrawable *psDRIRead)
++bool
++DRIMODMakeCurrent(struct DRISUPContext *psPVRContext,
++                  struct DRISUPDrawable *psPVRWrite,
++                  struct DRISUPDrawable *psPVRRead)
 +{
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
-+	PVRDRIDrawable *psPVRWrite = (psDRIWrite) ? (PVRDRIDrawable *)psDRIWrite->driverPrivate : NULL;
-+	PVRDRIDrawable *psPVRRead = (psDRIRead) ? (PVRDRIDrawable *)psDRIRead->driverPrivate : NULL;
-+	PVRDRIDrawable *psPVRDrawableOld = psPVRContext->psPVRDrawable;
++   struct DRISUPDrawable *psPVRDrawableOld = psPVRContext->psPVRDrawable;
 +
-+	if (psPVRWrite != NULL)
-+	{
-+		if (!PVRDRIDrawableInit(psPVRWrite))
-+		{
-+			__driUtilMessage("%s: Couldn't initialise write drawable",
-+					 __func__);
-+			goto ErrorUnlock;
-+		}
-+	}
++   if (psPVRWrite != NULL) {
++      if (!PVRDRIDrawableInit(psPVRWrite)) {
++         __driUtilMessage("%s: Couldn't initialise write drawable", __func__);
++         return false;
++      }
++   }
 +
-+	if (psPVRRead != NULL)
-+	{
-+		if (!PVRDRIDrawableInit(psPVRRead))
-+		{
-+			__driUtilMessage("%s: Couldn't initialise read drawable",
-+					 __func__);
-+			goto ErrorUnlock;
-+		}
-+	}
++   if (psPVRRead != NULL) {
++      if (!PVRDRIDrawableInit(psPVRRead)) {
++         __driUtilMessage("%s: Couldn't initialise read drawable", __func__);
++         return false;
++      }
++   }
 +
-+	if (!PVRDRIMakeCurrentGC(psPVRContext->eAPI,
-+	                         psPVRContext->psPVRScreen->psImpl,
-+	                         psPVRContext->psImpl,
-+	                         psPVRWrite == NULL ? NULL : psPVRWrite->psImpl,
-+	                         psPVRRead  == NULL ? NULL : psPVRRead->psImpl))
-+	{
-+		goto ErrorUnlock;
-+	}
++   if (!PVRDRIMakeCurrentGC(psPVRContext->eAPI,
++                            psPVRContext->psPVRScreen->psImpl,
++                            psPVRContext->psImpl,
++                            psPVRWrite == NULL ? NULL : psPVRWrite->psImpl,
++                            psPVRRead == NULL ? NULL : psPVRRead->psImpl))
++      return false;
 +
-+	if (psPVRDrawableOld != NULL)
-+	{
-+		psPVRDrawableOld->psPVRContext = NULL;
-+	}
++   if (psPVRDrawableOld != NULL)
++      psPVRDrawableOld->psPVRContext = NULL;
 +
++   if (psPVRWrite != NULL)
++      psPVRWrite->psPVRContext = psPVRContext;
 +
-+	if (psPVRWrite != NULL)
-+	{
-+		psPVRWrite->psPVRContext = psPVRContext;
-+	}
++   psPVRContext->psPVRDrawable = psPVRWrite;
 +
-+	psPVRContext->psPVRDrawable = psPVRWrite;
++   DRIMODThreadSetCurrentScreen(psPVRContext->psPVRScreen);
 +
-+	pvrdri_set_dispatch_table(psPVRContext);
-+
-+	PVRDRIThreadSetCurrentScreen(psPVRContext->psPVRScreen);
-+
-+	return GL_TRUE;
-+
-+ErrorUnlock:
-+	return GL_FALSE;
++   return true;
 +}
 +
-+static GLboolean PVRDRIUnbindContext(__DRIcontext *psDRIContext)
++bool
++DRIMODUnbindContext(struct DRISUPContext *psPVRContext)
 +{
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
++   PVRContextUnbind(psPVRContext, true, false);
++   DRIMODThreadSetCurrentScreen(NULL);
 +
-+	pvrdri_set_null_dispatch_table();
-+
-+	PVRContextUnbind(psPVRContext, true, false);
-+	PVRDRIThreadSetCurrentScreen(NULL);
-+
-+	return GL_TRUE;
++   return true;
 +}
 +
-+static __DRIbuffer *PVRDRIAllocateBuffer(__DRIscreen *psDRIScreen,
-+					 unsigned int uAttachment,
-+					 unsigned int uFormat,
-+					 int iWidth,
-+					 int iHeight)
++struct DRISUPBuffer *
++DRIMODAllocateBuffer(struct DRISUPScreen *psPVRScreen,
++                     unsigned int uAttachment, unsigned int uFormat,
++                     int iWidth, int iHeight, unsigned int *puName,
++                     unsigned int *puPitch, unsigned int *puCPP,
++                     unsigned int *puFlags)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
-+	PVRBuffer *psBuffer;
-+	unsigned int uiBpp;
++   PVRDRIBufferImpl *psPVRBufferImpl;
++   unsigned int uBPP;
++   unsigned int uPitch;
 +
-+	/* GEM names are only supported on primary nodes */
-+	if (drmGetNodeTypeFromFd(psDRIScreen->fd) != DRM_NODE_PRIMARY)
-+	{
-+		__driUtilMessage("%s: Cannot allocate buffer", __func__);
-+		return NULL;
-+	}
++   (void) uAttachment;
 +
-+	/* This is based upon PVRDRIGetPixelFormat */
-+	switch (uFormat)
-+	{
-+		case 32:
-+		case 16:
-+			/* Format (depth) and bpp match */
-+			uiBpp = uFormat;
-+			break;
-+		case 24:
-+			uiBpp = 32;
-+			break;
-+		default:
-+			__driUtilMessage("%s: Unsupported format '%u'",
-+					 __func__, uFormat);
-+			return NULL;
-+	}
++   /* GEM names are only supported on primary nodes */
++   if (drmGetNodeTypeFromFd(psPVRScreen->iFD) != DRM_NODE_PRIMARY) {
++      __driUtilMessage("%s: Cannot allocate buffer", __func__);
++      return NULL;
++   }
 +
-+	psBuffer = calloc(1, sizeof(*psBuffer));
-+	if (psBuffer == NULL)
-+	{
-+		__driUtilMessage("%s: Failed to allocate buffer", __func__);
-+		return NULL;
-+	}
++   /* This is based upon PVRDRIGetPixelFormat */
++   switch (uFormat) {
++   case 32:
++   case 16:
++      /* Format (depth) and bpp match */
++      uBPP = uFormat;
++      break;
++   case 24:
++      uBPP = 32;
++      break;
++   default:
++      __driUtilMessage("%s: Unsupported format '%u'", __func__, uFormat);
++      return NULL;
++   }
 +
-+	psBuffer->psImpl = PVRDRIBufferCreate(psPVRScreen->psImpl,
-+					      iWidth,
-+					      iHeight,
-+					      uiBpp,
-+					      PVDRI_BUFFER_USE_SHARE,
-+					      &psBuffer->sDRIBuffer.pitch);
-+	if (!psBuffer->psImpl)
-+	{
-+		__driUtilMessage("%s: Failed to create backing buffer",
-+				 __func__);
-+		goto ErrorFreeDRIBuffer;
-+	}
++   psPVRBufferImpl = PVRDRIBufferCreate(psPVRScreen->psImpl, iWidth, iHeight,
++                                        uBPP, PVDRI_BUFFER_USE_SHARE, &uPitch);
++   if (!psPVRBufferImpl) {
++      __driUtilMessage("%s: Failed to create backing buffer", __func__);
++      return NULL;
++   }
 +
-+	psBuffer->sDRIBuffer.attachment = uAttachment;
-+	psBuffer->sDRIBuffer.name = PVRDRIBufferGetName(psBuffer->psImpl);
-+	psBuffer->sDRIBuffer.cpp = uiBpp / 8;
++   *puName = PVRDRIBufferGetName(psPVRBufferImpl);
++   *puPitch = uPitch;
++   *puCPP = uBPP / 8;
++   *puFlags = 0;
 +
-+#if defined(DEBUG)
-+	p_atomic_inc(&psPVRScreen->iBufferAlloc);
-+#endif
-+
-+	return &psBuffer->sDRIBuffer;
-+
-+ErrorFreeDRIBuffer:
-+	free(psBuffer);
-+
-+	return NULL;
++   return (struct DRISUPBuffer *) psPVRBufferImpl;
 +}
 +
-+static void PVRDRIReleaseBuffer(__DRIscreen *psDRIScreen,
-+				__DRIbuffer *psDRIBuffer)
++void
++DRIMODReleaseBuffer(struct DRISUPScreen *psPVRScreen,
++                    struct DRISUPBuffer *psPVRBuffer)
 +{
-+	PVRBuffer *psBuffer = (PVRBuffer *)psDRIBuffer;
-+#if defined(DEBUG)
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
-+#endif
++   PVRDRIBufferImpl *psPVRBufferImpl = (PVRDRIBufferImpl *) psPVRBuffer;
 +
-+	(void)psDRIScreen;
++   (void) psPVRScreen;
 +
-+	PVRDRIBufferDestroy(psBuffer->psImpl);
-+	free(psBuffer);
-+
-+#if defined(DEBUG)
-+	p_atomic_dec(&psPVRScreen->iBufferAlloc);
-+#endif
++   PVRDRIBufferDestroy(psPVRBufferImpl);
 +}
 +
-+/* Publish our driver implementation to the world. */
-+static const struct __DriverAPIRec pvr_driver_api =
-+{
-+	.InitScreen     = PVRDRIInitScreen,
-+	.DestroyScreen  = PVRDRIDestroyScreen,
-+	.CreateContext  = PVRDRICreateContext,
-+	.DestroyContext = PVRDRIDestroyContext,
-+	.CreateBuffer   = PVRDRICreateBuffer,
-+	.DestroyBuffer  = PVRDRIDestroyBuffer,
-+	.SwapBuffers    = NULL,
-+	.MakeCurrent    = PVRDRIMakeCurrent,
-+	.UnbindContext  = PVRDRIUnbindContext,
-+	.AllocateBuffer = PVRDRIAllocateBuffer,
-+	.ReleaseBuffer  = PVRDRIReleaseBuffer,
-+};
-+
-+static const struct __DRIDriverVtableExtensionRec pvr_vtable = {
-+   .base = { __DRI_DRIVER_VTABLE, 1 },
-+   .vtable = &pvr_driver_api,
-+};
-+
-+static const __DRIextension *pvr_driver_extensions[] = {
-+    &driCoreExtension.base,
-+    &driImageDriverExtension.base,
-+    &driDRI2Extension.base,
-+    &pvr_vtable.base,
-+    NULL
-+};
-+
-+const __DRIextension **__driDriverGetExtensions_pvr(void);
-+PUBLIC const __DRIextension **__driDriverGetExtensions_pvr(void)
-+{
-+   globalDriverAPI = &pvr_driver_api;
-+
-+   return pvr_driver_extensions;
-+}
-+
-+/*************************************************************************/ /*!
++/*************************************************************************//*!
 + Global functions
-+*/ /**************************************************************************/
++ *//**************************************************************************/
 +
-+void PVRDRIThreadSetCurrentScreen(PVRDRIScreen *psPVRScreen)
++void
++DRIMODThreadSetCurrentScreen(struct DRISUPScreen *psPVRScreen)
 +{
-+	gpsPVRScreen = psPVRScreen;
++   gpsPVRScreen = psPVRScreen;
 +}
 +
-+PVRDRIScreen *PVRDRIThreadGetCurrentScreen(void)
++struct DRISUPScreen *
++DRIMODThreadGetCurrentScreen(void)
 +{
-+	return gpsPVRScreen;
++   return gpsPVRScreen;
 +}
-diff --git a/src/mesa/drivers/dri/pvr/pvrdri.h b/src/mesa/drivers/dri/pvr/pvrdri.h
+diff --git a/src/mesa/drivers/dri/pvr/pvrdri_mod.h b/src/mesa/drivers/dri/pvr/pvrdri_mod.h
 new file mode 100644
-index 00000000000..50d930a59c2
+index 00000000000..e46b7b083e1
 --- /dev/null
-+++ b/src/mesa/drivers/dri/pvr/pvrdri.h
-@@ -0,0 +1,388 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
++++ b/src/mesa/drivers/dri/pvr/pvrdri_mod.h
+@@ -0,0 +1,450 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -4832,376 +5733,881 @@
 + * THE SOFTWARE.
 + */
 +
-+#if !defined(__PVRDRI2_H__)
-+#define __PVRDRI2_H__
++#if !defined(__PVRDRI_MOD_H__)
++#define __PVRDRI_MOD_H__
++
++#include <stdint.h>
 +#include <stdbool.h>
 +
-+#include <glapi/glapi.h>
-+
-+#include "main/mtypes.h"
-+#include "GL/internal/dri_interface.h"
-+
-+#include "util/macros.h"
-+
-+#include "dri_support.h"
++#include "pvrdri.h"
 +
 +/* This should match EGL_MAX_PLANES */
 +#define DRI_PLANES_MAX 3
 +
-+#define	DRI2_BUFFERS_MAX (3)
++#define DRI2_BUFFERS_MAX 3
 +
-+#define	DRIScreenPrivate(pScreen)	((pScreen)->driverPrivate)
++struct PVRDRIModifiers {
++   /* Number of modifiers for a given format */
++   int iNumModifiers;
 +
-+struct PVRDRIConfigRec
-+{
-+	struct gl_config sGLMode;
-+	int iSupportedAPIs;
-+};
++   /* Array of modifiers */
++   uint64_t *puModifiers;
 +
-+struct PVRDRIModifiers
-+{
-+	/* Number of modifiers for a given format */
-+	int         iNumModifiers;
-+	/* Array of modifiers */
-+	uint64_t    *puModifiers;
-+	/*
-+	 * Array of booleans that indicates which modifiers in the above array
-+	 * can only be used for EGL Image External (and so not for scanout).
-+	 */
-+	unsigned    *puExternalOnly;
++   /*
++    * Array of booleans that indicates which modifiers in the above array can
++    * only be used for EGL Image External (and so not for scanout).
++    */
++   unsigned int *puExternalOnly;
 +};
 +
 +/** Our PVR related screen data */
-+typedef struct PVRDRIScreen_TAG
-+{
-+	/* DRI screen structure pointer */
-+	__DRIscreen        *psDRIScreen;
-+	/* X Server sends invalidate events */
-+	bool                bUseInvalidate;
-+	/* Reference count */
-+	int iRefCount;
++struct DRISUPScreen {
++   /* DRI screen structure pointer */
++   struct __DRIscreenRec *psDRIScreen;
 +
-+#if defined(DEBUG)
-+	/* Counters of outstanding allocations */
-+	int iContextAlloc, iDrawableAlloc, iBufferAlloc;
-+#endif
++   /* Use invalidate events */
++   bool bUseInvalidate;
 +
-+	/* PVR OGLES 1 dispatch table */
-+	struct _glapi_table *psOGLES1Dispatch;
-+	/* PVR OGLES 2/3 dispatch table */
-+	struct _glapi_table *psOGLES2Dispatch;
++   int iFD;
 +
-+	PVRDRIScreenImpl    *psImpl;
++   void *pvLoaderPrivate;
 +
-+	/*
-+	 * Number of supported formats:
-+	 * -1 -> couldn't be queried (pvr_dri_support too old)
-+	 *  0 -> uninitialised or initialisation failed
-+	 */
-+	int                 iNumFormats;
-+	/* Indicates which entries in the image format array are supported */
-+	bool                *pbHasFormat;
-+	/* Array of modifiers for each image format array entry */
-+	struct PVRDRIModifiers *psModifiers;
-+} PVRDRIScreen;
++   PVRDRIScreenImpl *psImpl;
++
++   /*
++    * Number of supported formats:
++    * -1 -> couldn't be queried (pvr_dri_support too old)
++    *  0 -> uninitialised or initialisation failed
++    */
++   int iNumFormats;
++
++   /* Indicates which entries in the image format array are supported */
++   bool *pbHasFormat;
++
++   /* Array of modifiers for each image format array entry */
++   struct PVRDRIModifiers *psModifiers;
++
++   /* Supported Mesa formats */
++   unsigned int *puMesaFormats;
++   unsigned int uNumMesaFormats;
++};
 +
 +/** Our PVR related context data */
-+typedef struct PVRDRIContext_TAG
-+{
-+	/* Pointer to DRI context */
-+	__DRIcontext              *psDRIContext;
-+	/* Pointer to PVRDRIScreen structure */
-+	PVRDRIScreen              *psPVRScreen;
++struct DRISUPContext {
++   /* Pointer to DRI context */
++   struct __DRIcontextRec *psDRIContext;
 +
-+	PVRDRIConfig               sConfig;
++   /* Pointer to PVRDRIScreen structure */
++   struct DRISUPScreen *psPVRScreen;
 +
-+	/* Pointer to currently bound drawable */
-+	struct PVRDRIDrawable_TAG *psPVRDrawable;
++   /* Pointer to currently bound drawable */
++   struct DRISUPDrawable *psPVRDrawable;
 +
-+	/* API */
-+	PVRDRIAPIType             eAPI;
++   /* API */
++   PVRDRIAPIType eAPI;
 +
-+	PVRDRIContextImpl         *psImpl;
-+} PVRDRIContext;
++   PVRDRIContextImpl *psImpl;
 +
-+/** Our PVR related drawable data */
-+typedef struct PVRDRIDrawable_TAG
-+{
-+	/** Ptr to PVR screen, that spawned this drawable */
-+	PVRDRIScreen       *psPVRScreen;
++   /* Don't flush when the context is made uncurrent */
++   bool bMakeUncurrentNoFlush;
++};
 +
-+	/** DRI drawable data */
-+	__DRIdrawable      *psDRIDrawable;
++typedef struct PVRDRIImageFormat_TAG {
++   /*
++    * IMG pixel format for the entire/overall image, e.g.
++    * IMG_PIXFMT_B8G8R8A8_UNORM or IMG_PIXFMT_YUV420_2PLANE.
++    */
++   IMG_PIXFMT eIMGPixelFormat;
 +
-+	PVRDRIDrawableType  eType;
++   /*
++    * DRI fourcc for the entire/overall image (defined by dri_interface.h),
++    * e.g. __DRI_IMAGE_FOURCC_ARGB8888 or __DRI_IMAGE_FOURCC_NV12.
++    */
++   int iDRIFourCC;
 +
-+	PVRDRIConfig        sConfig;
++   /*
++    * DRI components for the entire/overall image (defined by
++    * dri_interface.h), e.g. __DRI_IMAGE_COMPONENTS_RGBA or
++    * __DRI_IMAGE_COMPONENTS_Y_UV.
++    *
++    * This specifies the image components and their groupings, in terms of
++    * sub-images/planes, but not the order in which they appear.
++    *
++    * For example:
++    * - any combination of BGRA channels would correspond to
++    *   __DRI_IMAGE_COMPONENTS_RGBA
++    * - any combination of BGR or BGRX would correspond to
++    *   __DRI_IMAGE_COMPONENTS_RGB
++    * - any combination of YUV with 2 planes would correspond to
++    *   __DRI_IMAGE_COMPONENTS_Y_UV
++    */
++   int iDRIComponents;
 +
-+	/** Are surface/buffers created? */
-+	bool                bInitialised;
++   /*
++    * True if the format represents an sRGB colour space and false if it
++    * represents a linear one.
++    */
++   bool bIsSRGB;
 +
-+	/** Buffer stride */
-+	unsigned            uStride;
++   /* The number of sub-images/planes that make up the overall image */
++   unsigned int uiNumPlanes;
 +
-+	/* Number of bytes per pixel */
-+	unsigned int        uBytesPerPixel;
++   /* Per-plane information */
++   struct {
++      /* IMG pixel format for the plane */
++      IMG_PIXFMT eIMGPixelFormat;
 +
-+	/* Context bound to this drawable */
-+	PVRDRIContext       *psPVRContext;
++      /*
++       * This is the amount that the image width should be bit-shifted in
++       * order to give the plane width. This value can be determined from the
++       * YUV sub-sampling ratios and should either be 0 (full * width), 1
++       * (half width) or 2 (quarter width).
++       */
++      unsigned int uiWidthShift;
 +
-+	/* IMG Pixel format for this drawable */
-+	IMG_PIXFMT          ePixelFormat;
-+
-+	/* Indicates the drawable info is invalid */
-+	int                 iInfoInvalid;
-+
-+	/* Indicates the drawable is currently being updated */
-+	bool                bDrawableUpdating;
-+
-+	/* Indicates a flush is in progress */
-+	bool                bFlushInProgress;
-+
-+	__DRIimage *psDRI;
-+	__DRIimage *psImage;
-+
-+	__DRIimage *psDRIAccum;
-+	__DRIimage *psImageAccum;
-+
-+	PVRDRIDrawableImpl *psImpl;
-+} PVRDRIDrawable;
-+
-+typedef struct PVRDRIImageFormat_TAG
-+{
-+	/*
-+	 * IMG pixel format for the entire/overall image, e.g.
-+	 * IMG_PIXFMT_B8G8R8A8_UNORM or IMG_PIXFMT_YUV420_2PLANE.
-+	 */
-+	IMG_PIXFMT eIMGPixelFormat;
-+
-+	/*
-+	 * DRI fourcc for the entire/overall image (defined by dri_interface.h),
-+	 * e.g. __DRI_IMAGE_FOURCC_ARGB8888 or __DRI_IMAGE_FOURCC_NV12.
-+	 */
-+	int iDRIFourCC;
-+
-+	/*
-+	 * DRI format for the entire/overall image (defined by dri_interface.h),
-+	 * e.g. __DRI_IMAGE_FORMAT_ARGB8888. This isn't applicable for YUV
-+	 * formats and should be set to __DRI_IMAGE_FORMAT_NONE.
-+	 */
-+	int iDRIFormat;
-+
-+	/*
-+	 * DRI components for the entire/overall image (defined by
-+	 * dri_interface.h), e.g. __DRI_IMAGE_COMPONENTS_RGBA or
-+	 * __DRI_IMAGE_COMPONENTS_Y_UV.
-+	 *
-+	 * This specifies the image components and their groupings, in terms of
-+	 * sub-images/planes, but not the order in which they appear.
-+	 *
-+	 * For example:
-+	 * - any combination of BGRA channels would correspond to
-+	 *   __DRI_IMAGE_COMPONENTS_RGBA
-+	 * - any combination of BGR or BGRX would correspond to
-+	 *   __DRI_IMAGE_COMPONENTS_RGB
-+	 * - any combination of YUV with 2 planes would correspond to
-+	 *   __DRI_IMAGE_COMPONENTS_Y_UV
-+	 */
-+	int iDRIComponents;
-+
-+	/* The number of sub-images/planes that make up the overall image */
-+	unsigned uiNumPlanes;
-+
-+	/*
-+	 * Don't return the format when the queryDmaBufFormats DRI Image
-+	 * extension function is called. Some DRM formats map to multiple
-+	 * IMG formats. The query should return just one of them.
-+	 */
-+	bool bQueryDmaBufFormatsExclude;
-+
-+	/* Per-plane information */
-+	struct
-+	{
-+		/* IMG pixel format for the plane */
-+		IMG_PIXFMT eIMGPixelFormat;
-+
-+		/*
-+		 * This is the amount that the image width should be bit-shifted
-+		 * in order to give the plane width. This value can be determined
-+		 * from the YUV sub-sampling ratios and should either be 0 (full
-+		 * width), 1 (half width) or 2 (quarter width).
-+		 */
-+		unsigned int uiWidthShift;
-+
-+		/*
-+		 * This is the amount that the image height should be bit-shifted
-+		 * in order to give the plane height. This value can be determined
-+		 * from the YUV sub-sampling ratios and should either be 0 (full
-+		 * height) or 1 (half height).
-+		 */
-+		unsigned int uiHeightShift;
-+	} sPlanes[DRI_PLANES_MAX];
++      /*
++       * This is the amount that the image height should be bit-shifted in
++       * order to give the plane height. This value can be determined from the
++       * YUV sub-sampling ratios and should either be 0 (full * height) or 1
++       * (half height).
++       */
++      unsigned int uiHeightShift;
++   } sPlanes[DRI_PLANES_MAX];
 +} PVRDRIImageFormat;
 +
++/** Our PVR related drawable data */
++struct DRISUPDrawable {
++   /** Ptr to PVR screen, that spawned this drawable */
++   struct DRISUPScreen *psPVRScreen;
 +
-+/*************************************************************************/ /*!
-+ pvrdri.c
-+*/ /**************************************************************************/
++   /** DRI drawable data */
++   struct __DRIdrawableRec *psDRIDrawable;
 +
-+IMG_PIXFMT PVRDRIGetPixelFormat(const struct gl_config *psGLMode);
-+PVRDRIScreen *PVRDRIThreadGetCurrentScreen(void);
-+void PVRDRIThreadSetCurrentScreen(PVRDRIScreen *psPVRScreen);
++   void *pvLoaderPrivate;
 +
-+void PVRDRIFlushBuffersForSwap(PVRDRIContext *psPVRContext,
-+                               PVRDRIDrawable *psPVRDrawable);
++   bool bDoubleBufferMode;
++   PVRDRIDrawableType eType;
 +
++   PVRDRIConfig *psConfig;
 +
-+/*************************************************************************/ /*!
-+ pvrutil.c
-+*/ /**************************************************************************/
++   /** Are surface/buffers created? */
++   bool bInitialised;
 +
-+void PRINTFLIKE(1, 2) __driUtilMessage(const char *f, ...);
-+void PRINTFLIKE(1, 2) errorMessage(const char *f, ...);
++   /* Width and height */
++   uint32_t uWidth;
++   uint32_t uHeight;
 +
-+const __DRIconfig **PVRDRICreateConfigs(void);
++   /** Buffer stride */
++   unsigned int uStride;
 +
-+const PVRDRIImageFormat *PVRDRIFormatToImageFormat(PVRDRIScreen *psPVRScreen,
-+						   int iDRIFormat);
-+const PVRDRIImageFormat *PVRDRIFourCCToImageFormat(PVRDRIScreen *psPVRScreen,
-+						   int iDRIFourCC);
-+const PVRDRIImageFormat *PVRDRIIMGPixelFormatToImageFormat(PVRDRIScreen *psPVRScreen,
-+							   IMG_PIXFMT eIMGPixelFormat);
++   /* Number of bytes per pixel */
++   unsigned int uBytesPerPixel;
 +
++   /* Context bound to this drawable */
++   struct DRISUPContext *psPVRContext;
++
++   /* Format of this drawable */
++   const PVRDRIImageFormat *psFormat;
++
++   /* Indicates the drawable info is invalid */
++   int iInfoInvalid;
++
++   /* Indicates the drawable is currently being updated */
++   bool bDrawableUpdating;
++
++   /* Indicates a flush is in progress */
++   bool bFlushInProgress;
++
++   __DRIimage *psDRI;
++   __DRIimage *psImage;
++
++   __DRIimage *psDRIAccum;
++   __DRIimage *psImageAccum;
++
++   PVRDRIDrawableImpl *psImpl;
++};
++
++/*************************************************************************//*!
++ pvrdri_mod.c
++ *//**************************************************************************/
++
++struct DRISUPScreen *DRIMODThreadGetCurrentScreen(void);
++void DRIMODThreadSetCurrentScreen(struct DRISUPScreen *psPVRScreen);
++
++void PVRDRIFlushBuffersForSwap(struct DRISUPContext *psPVRContext,
++                               struct DRISUPDrawable *psPVRDrawable);
++
++/*************************************************************************//*!
++ pvrutil_mod.c
++ *//**************************************************************************/
++
++const struct __DRIconfigRec **PVRDRICreateConfigs(const struct DRISUPScreen
++                                                  *psPVRScreen);
++const PVRDRIImageFormat *PVRDRIFourCCToImageFormat(struct DRISUPScreen
++                                                   *psPVRScreen,
++                                                   int iDRIFourCC);
++const PVRDRIImageFormat *PVRDRIIMGPixelFormatToImageFormat(struct DRISUPScreen *psPVRScreen,
++                                                           IMG_PIXFMT eIMGPixelFormat);
 +IMG_YUV_COLORSPACE PVRDRIToIMGColourSpace(const PVRDRIImageFormat *psFormat,
-+					  enum __DRIYUVColorSpace eDRIColourSpace,
-+					  enum __DRISampleRange eDRISampleRange);
++                                          unsigned int uDRIColourSpace,
++                                          unsigned int uDRISampleRange);
 +IMG_YUV_CHROMA_INTERP PVRDRIChromaSittingToIMGInterp(const PVRDRIImageFormat *psFormat,
-+						     enum __DRIChromaSiting eChromaSitting);
++                                                     unsigned int uChromaSitting);
++bool PVRDRIGetSupportedFormats(struct DRISUPScreen *psPVRScreen);
++void PVRDRIDestroyFormatInfo(struct DRISUPScreen *psPVRScreen);
++bool PVRDRIValidateImageModifier(struct DRISUPScreen *psPVRScreen,
++                                 const int iFourCC, const uint64_t uiModifier);
++bool PVRDRIGetMesaFormats(struct DRISUPScreen *psPVRScreen);
++void PVRDRIFreeMesaFormats(struct DRISUPScreen *psPVRScreen);
 +
-+bool PVRDRIGetSupportedFormats(PVRDRIScreen *psPVRScreen);
++/*************************************************************************//*!
++ pvrdrawable_mod.c
++ *//**************************************************************************/
 +
-+GLboolean PVRDRIQueryDmaBufFormats(__DRIscreen *screen, int max,
-+				   int *formats, int *count);
++bool PVRDRIDrawableInit(struct DRISUPDrawable *psPVRDrawable);
++void PVRDRIDrawableDeinit(struct DRISUPDrawable *psPVRDrawable);
++bool PVRDRIDrawableQuery(const PVRDRIDrawable *psPVRDRIDrawable,
++                         PVRDRIBufferAttrib eBufferAttrib,
++                         uint32_t *uiValueOut);
++bool PVRDRIDrawableGetParametersV2(PVRDRIDrawable *psPVRDRIDrawable,
++                                   uint32_t uiFlags,
++                                   PVRDRIBufferImpl **ppsDstBuffer,
++                                   PVRDRIBufferImpl **ppsAccumBuffer);
 +
-+GLboolean PVRDRIQueryDmaBufModifiers(__DRIscreen *screen, int fourcc,
-+				     int max, uint64_t *modifiers,
-+				     unsigned int *external_only,
-+				     int *count);
-+
-+GLboolean PVRDRIQueryDmaBufFormatModifierAttribs(__DRIscreen *screen,
-+						 uint32_t fourcc,
-+						 uint64_t modifier,
-+						 int attrib,
-+						 uint64_t *value);
-+
-+void PVRDRIDestroyFormatInfo(PVRDRIScreen *psPVRScreen);
-+
-+/*************************************************************************/ /*!
-+ pvrdrawable.c
-+*/ /**************************************************************************/
-+
-+bool PVRDRIDrawableInit(PVRDRIDrawable *psPVRDrawable);
-+void PVRDRIDrawableDeinit(PVRDRIDrawable *psPVRDrawable);
-+
-+/* Callbacks into non-impl layer */
-+
-+/* Version 0 callbacks (deprecated) */
-+bool PVRDRIDrawableRecreateV0(PVRDRIDrawable *psPVRDrawable);
-+bool PVRDRIDrawableGetParametersV0(PVRDRIDrawable *psPVRDrawable,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer,
-+				   PVRDRIBufferAttribs *psAttribs,
-+				   bool *pbDoubleBuffered);
-+
-+/* Version 1 callbacks (deprecated) */
-+bool PVRDRIDrawableGetParametersV1(PVRDRIDrawable *psPVRDrawable,
-+				   bool bAllowRecreate,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer,
-+				   PVRDRIBufferAttribs *psAttribs,
-+				   bool *pbDoubleBuffered);
-+
-+/* Version 2 callbacks */
-+bool PVRDRIDrawableQuery(const PVRDRIDrawable *psPVRDrawable,
-+			 PVRDRIBufferAttrib eBufferAttrib,
-+			 uint32_t *uiValueOut);
-+bool PVRDRIDrawableGetParametersV2(PVRDRIDrawable *psPVRDrawable,
-+				   uint32_t uiFlags,
-+				   PVRDRIBufferImpl **ppsDstBuffer,
-+				   PVRDRIBufferImpl **ppsAccumBuffer);
-+
-+/*************************************************************************/ /*!
-+ pvrimage.c
-+*/ /**************************************************************************/
++/*************************************************************************//*!
++pvrimage_mod.c
++ *//**************************************************************************/
 +
 +__DRIimage *PVRDRIScreenGetDRIImage(void *hEGLImage);
-+void PVRDRIRefImage(__DRIimage *image);
-+void PVRDRIUnrefImage(__DRIimage *image);
++void PVRDRIRefImage(__DRIimage *psImage);
++void PVRDRIUnrefImage(__DRIimage *psImage);
++PVRDRIImageType PVRDRIImageGetSharedType(__DRIimage *psImage);
++PVRDRIBufferImpl *PVRDRIImageGetSharedBuffer(__DRIimage *psImage);
++IMGEGLImage *PVRDRIImageGetSharedEGLImage(__DRIimage *psImage);
++IMGEGLImage *PVRDRIImageGetEGLImage(__DRIimage *psImage);
 +
-+/* Callbacks into non-impl layer */
-+PVRDRIImageType PVRDRIImageGetSharedType(__DRIimage *image);
-+PVRDRIBufferImpl *PVRDRIImageGetSharedBuffer(__DRIimage *image);
-+IMGEGLImage *PVRDRIImageGetSharedEGLImage(__DRIimage *image);
-+IMGEGLImage *PVRDRIImageGetEGLImage(__DRIimage *image);
++/*************************************************************************//*!
++ Functions to implement PVRDRISupportInterfaceV2, for backwards compatibility
++ With DRI Support libraries that only provide PVRDRISupportInterface.
++ *//**************************************************************************/
 +
-+/*************************************************************************/ /*!
-+ pvrext.c
-+*/ /**************************************************************************/
++struct DRISUPScreen *DRIMODCreateScreen(struct __DRIscreenRec *psDRIScreen,
++                                        int iFD, bool bUseInvalidate,
++                                        void *pvLoaderPrivate,
++                                        const struct __DRIconfigRec ***pppsConfigs,
++                                        int *piMaxGLES1Version,
++                                        int *piMaxGLES2Version);
++void DRIMODDestroyScreen(struct DRISUPScreen *psDRISUPScreen);
 +
-+const __DRIextension **PVRDRIScreenExtensions(void);
-+const __DRIextension *PVRDRIScreenExtensionVersionInfo(void);
++unsigned int DRIMODCreateContext(PVRDRIAPIType eAPI,
++                                 PVRDRIConfig *psPVRDRIConfig,
++                                 struct PVRDRIContextConfig *psCtxConfig,
++                                 struct __DRIcontextRec *psDRIContext,
++                                 struct DRISUPContext *psDRISUPSharedContext,
++                                 struct DRISUPScreen *psDRISUPScreen,
++                                 struct DRISUPContext **ppsDRISUPContext);
++void DRIMODDestroyContext(struct DRISUPContext *psDRISUPContext);
 +
-+/*************************************************************************/ /*!
-+ pvrcompat.c
-+*/ /**************************************************************************/
++struct DRISUPDrawable *DRIMODCreateDrawable(struct __DRIdrawableRec *psDRIDrawable,
++                                            struct DRISUPScreen *psDRISUPScreen,
++                                            void *pvLoaderPrivate,
++                                            PVRDRIConfig *psPVRDRIConfig);
++void DRIMODDestroyDrawable(struct DRISUPDrawable *psDRISUPDrawable);
 +
-+bool PVRDRICompatInit(const PVRDRICallbacks *psCallbacks, unsigned uVersion);
-+void PVRDRICompatDeinit(void);
++bool DRIMODMakeCurrent(struct DRISUPContext *psDRISUPContext,
++                       struct DRISUPDrawable *psDRISUPWrite,
++                       struct DRISUPDrawable *psDRISUPRead);
++bool DRIMODUnbindContext(struct DRISUPContext *psDRISUPContext);
 +
-+bool PVRDRIRegisterSupportInterfaceV1(const PVRDRISupportInterface *psInterface,
-+				      unsigned uVersion);
++struct DRISUPBuffer *DRIMODAllocateBuffer(struct DRISUPScreen *psDRISUPScreen,
++                                          unsigned int uAttchment,
++                                          unsigned int uFormat,
++                                          int iWidth, int iHeight,
++                                          unsigned int *puName,
++                                          unsigned int *puPitch,
++                                          unsigned int *puCPP,
++                                          unsigned int *puFlags);
++void DRIMODReleaseBuffer(struct DRISUPScreen *psDRISUPScreen,
++                         struct DRISUPBuffer *psDRISUPBuffer);
++void DRIMODSetTexBuffer2(struct DRISUPContext *psDRISUPContext, int iTarget,
++                         int iFormat, struct DRISUPDrawable *psDRISUPDrawable);
++void DRIMODReleaseTexBuffer(struct DRISUPContext *psDRISUPContext,
++                            int iTarget,
++                            struct DRISUPDrawable *psDRISUPDrawable);
 +
-+unsigned PVRDRISupportCreateContext(PVRDRIScreenImpl *psScreenImpl,
-+				    PVRDRIContextImpl *psSharedContextImpl,
-+				    PVRDRIConfig *psConfig,
-+				    PVRDRIAPIType eAPI,
-+				    PVRDRIAPISubType eAPISub,
-+				    unsigned uMajorVersion,
-+				    unsigned uMinorVersion,
-+				    uint32_t uFlags,
-+				    bool bNotifyReset,
-+				    unsigned uPriority,
-+				    PVRDRIContextImpl **ppsContextImpl);
++void DRIMODFlush(struct DRISUPDrawable *psDRISUPDrawable);
++void DRIMODInvalidate(struct DRISUPDrawable *psDRISUPDrawable);
++void DRIMODFlushWithFlags(struct DRISUPContext *psDRISUPContext,
++                          struct DRISUPDrawable *psDRISUPDrawable,
++                          unsigned int uFlags, unsigned int uThrottleReason);
 +
-+PVRDRIDrawableImpl *PVRDRISupportCreateDrawable(PVRDRIDrawable *psPVRDrawable,
-+						PVRDRIConfig *psConfig);
++__DRIimage *DRIMODCreateImageFromName(struct DRISUPScreen *psDRISUPScreen,
++                                      int iWidth, int iHeight, int iFourCC,
++                                      int iName, int iPitch,
++                                      void *pvLoaderPrivate);
++__DRIimage *DRIMODCreateImageFromRenderbuffer(struct DRISUPContext *psDRISUPContext,
++                                              int iRenderBuffer,
++                                              void *pvLoaderPrivate);
++void DRIMODDestroyImage(__DRIimage *psImage);
++__DRIimage *DRIMODCreateImage(struct DRISUPScreen *psDRISUPScreen,
++                              int iWidth, int iHeight, int iFourCC,
++                              unsigned int uUse, void *pvLoaderPrivate);
++bool DRIMODQueryImage(__DRIimage *psImage, int iAttrib, int *iValue);
++__DRIimage *DRIMODDupImage(__DRIimage *psImage, void *pvLoaderPrivate);
++bool DRIMODValidateImageUsage(__DRIimage *psImage, unsigned int uUse);
++__DRIimage *DRIMODCreateImageFromNames(struct DRISUPScreen *psDRISUPScreen,
++                                       int iWidth, int iHeight, int iFourCC,
++                                       int *piNames, int iNumNames,
++                                       int *piStrides, int *piOffsets,
++                                       void *pvLoaderPrivate);
++__DRIimage *DRIMODFromPlanar(__DRIimage *psImage, int iPlane,
++                             void *pvLoaderPrivate);
++__DRIimage *DRIMODCreateImageFromTexture(struct DRISUPContext *psDRISUPContext,
++                                         int iTarget, unsigned int uTexture,
++                                         int iDepth, int iLevel,
++                                         unsigned int *puError,
++                                         void *pvLoaderPrivate);
++__DRIimage *DRIMODCreateImageFromFDs(struct DRISUPScreen *psDRISUPcreen,
++                                     int iWidth, int iHeight, int iFourCC,
++                                     int *piFDs, int iNumFDs,
++                                     int *piStrides, int *piOffsets,
++                                     void *pvLoaderPrivate);
++__DRIimage *DRIMODCreateImageFromDMABufs(struct DRISUPScreen *psDRISUPScreen,
++                                         int iWidth, int iHeight, int iFourCC,
++                                         int *piFDs, int iNumFDs,
++                                         int *piStrides, int *piOffsets,
++                                         unsigned int uColorSpace,
++                                         unsigned int uSampleRange,
++                                         unsigned int uHorizSiting,
++                                         unsigned int uVertSiting,
++                                         unsigned int *puError,
++                                         void *pvLoaderPrivate);
++int DRIMODGetImageCapabilities(struct DRISUPScreen *psDRISUPScreen);
++void DRIMODBlitImage(struct DRISUPContext *psDRISUPContext,
++                     __DRIimage *psDst, __DRIimage *psSrc,
++                     int iDstX0, int iDstY0, int iDstWidth, int iDstHeight,
++                     int iSrcX0, int iSrcY0, int iSrcWidth, int iSrcHeight,
++                     int iFlushFlag);
++void *DRIMODMapImage(struct DRISUPContext *psDRISUPContext,
++                     __DRIimage *psImage,
++                     int iX0, int iY0, int iWidth, int iHeight,
++                     unsigned int iFlags, int *iStride, void **ppvData);
++void DRIMODUnmapImage(struct DRISUPContext *psDRISUPContext,
++                      __DRIimage *psImage, void *pvData);
++__DRIimage *DRIMODCreateImageWithModifiers(struct DRISUPScreen *psDRISUPScreen,
++                                           int iWidth, int iHeight,
++                                           int iFourCC,
++                                           const uint64_t *puModifiers,
++                                           const unsigned int uModifierCount,
++                                           void *pvLoaderPrivate);
++__DRIimage *DRIMODCreateImageFromDMABufs2(struct DRISUPScreen *psDRISUPScreen,
++                                          int iWidth, int iHeight,
++                                          int iFourCC, uint64_t uModifier,
++                                          int *piFDs, int iNumFDs,
++                                          int *piStrides, int *piOffsets,
++                                          unsigned int uColorSpace,
++                                          unsigned int uSampleRange,
++                                          unsigned int uHorizSiting,
++                                          unsigned int uVertSiting,
++                                          unsigned int *puError,
++                                          void *pvLoaderPrivate);
 +
-+bool PVRDRIBlitEGLImage_IsSupported(void);
-+bool PVRDRIMapEGLImage_IsSupported(void);
-+bool PVRDRIBufferGetOffset_IsSupported(void);
-+bool PVRDRIBufferCreateWithModifiers_IsSupported(void);
-+bool PVRDRIBufferCreateFromFdsWithModifier_IsSupported(void);
++bool DRIMODQueryDMABufFormats(struct DRISUPScreen *psDRISUPScreen, int iMax,
++                              int *piFormats, int *piCount);
++bool DRIMODQueryDMABufModifiers(struct DRISUPScreen *psDRISUPScreen,
++                                int iFourCC, int iMax, uint64_t *puModifiers,
++                                unsigned int *piExternalOnly, int *piCount);
++bool DRIMODQueryDMABufFormatModifierAttribs(struct DRISUPScreen *psDRISUPScreen,
++                                            uint32_t uFourCC,
++                                            uint64_t uModifier,
++                                            int iAttribute,
++                                            uint64_t *puValue);
 +
-+void *PVRDRICreateFenceFdImpl(PVRDRIAPIType eAPI,
-+			      PVRDRIScreenImpl *psScreenImpl,
-+			      PVRDRIContextImpl *psContextImpl,
-+			      int fd);
++__DRIimage *DRIMODCreateImageFromRenderBuffer2(struct DRISUPContext *psDRISUPContext,
++                                               int iRenderBuffer,
++                                               void *pvLoaderPrivate,
++                                               unsigned int *puError);
++__DRIimage *DRIMODCreateImageFromBuffer(struct DRISUPContext *psDRISUPContext,
++                                        int iTarget, void *pvBuffer,
++                                        unsigned int *puError,
++                                        void *pvLoaderPrivate);
 +
-+unsigned PVRDRIGetFenceCapabilitiesImpl(PVRDRIScreenImpl *psScreenImpl);
++int DRIMODQueryRendererInteger(struct DRISUPScreen *psDRISUPScreen,
++                               int iAttribute, unsigned int *puValue);
++int DRIMODQueryRendererString(struct DRISUPScreen *psDRISUPScreen,
++                              int iAttribute, const char **ppszValue);
 +
-+int PVRDRIGetFenceFdImpl(void *psDRIFence);
++void *DRIMODCreateFence(struct DRISUPContext *psDRISUPContext);
++void DRIMODDestroyFence(struct DRISUPScreen *psDRISUPScreen, void *pvFence);
++bool DRIMODClientWaitSync(struct DRISUPContext *psDRISUPContext,
++                          void *pvFence, unsigned int uFlags,
++                          uint64_t uTimeout);
++void DRIMODServerWaitSync(struct DRISUPContext *psDRISUPContext,
++                          void *pvFence, unsigned int uFlags);
++unsigned int DRIMODGetFenceCapabilities(struct DRISUPScreen *psDRISUPScreen);
++void *DRIMODCreateFenceFD(struct DRISUPContext *psDRISUPContext, int iFD);
++int DRIMODGetFenceFD(struct DRISUPScreen *psDRISUPScreen, void *pvFence);
 +
-+bool PVRDRIValidateImageModifier(PVRDRIScreen *psPVRScreen, const int iFourcc,
-+				 const uint64_t uiModifier);
-+#endif /* defined(__PVRDRI2_H__) */
++unsigned int DRIMODGetNumAPIProcs(struct DRISUPScreen *psDRISUPScreen,
++                                  PVRDRIAPIType eAPI);
++const char *DRIMODGetAPIProcName(struct DRISUPScreen *psDRISUPScreen,
++                                 PVRDRIAPIType eAPI, unsigned int uIndex);
++void *DRIMODGetAPIProcAddress(struct DRISUPScreen *psDRISUPScreen,
++                              PVRDRIAPIType eAPI, unsigned int uIndex);
++
++void DRIMODSetDamageRegion(struct DRISUPDrawable *psDRISUPDrawable,
++                           unsigned int uNRects, int *piRects);
++
++#endif /* defined(__PVRDRI_MOD_H__) */
+diff --git a/src/mesa/drivers/dri/pvr/pvrdri_support.h b/src/mesa/drivers/dri/pvr/pvrdri_support.h
+new file mode 100644
+index 00000000000..06eafa7fbf3
+--- /dev/null
++++ b/src/mesa/drivers/dri/pvr/pvrdri_support.h
+@@ -0,0 +1,437 @@
++/*
++ * Copyright (c) Imagination Technologies Ltd.
++ *
++ * The contents of this file are subject to the MIT license as set out below.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++#if !defined(__PVRDRI_SUPPORT_H__)
++#define __PVRDRI_SUPPORT_H__
++
++#include <stdint.h>
++#include <stdbool.h>
++
++#include "dri_support.h"
++
++struct DRISUPScreen *DRISUPCreateScreen(struct __DRIscreenRec *psDRIScreen,
++                                        int iFD, bool bUseInvalidate,
++                                        void *pvLoaderPrivate,
++                                        const struct __DRIconfigRec ***pppsConfigs,
++                                        int *piMaxGLES1Version,
++                                        int *piMaxGLES2Version);
++void DRISUPDestroyScreen(struct DRISUPScreen *psDRISUPScreen);
++
++unsigned int DRISUPCreateContext(PVRDRIAPIType eAPI,
++                                 PVRDRIConfig *psPVRDRIConfig,
++                                 struct PVRDRIContextConfig *psCtxConfig,
++                                 struct __DRIcontextRec *psDRIContext,
++                                 struct DRISUPContext *psDRISUPSharedContext,
++                                 struct DRISUPScreen *psDRISUPScreen,
++                                 struct DRISUPContext **ppsDRISUPContext);
++void DRISUPDestroyContext(struct DRISUPContext *psDRISUPContext);
++
++struct DRISUPDrawable *DRISUPCreateDrawable(struct __DRIdrawableRec *psDRIDrawable,
++                                            struct DRISUPScreen *psDRISUPScreen,
++                                            void *pvLoaderPrivate,
++                                            PVRDRIConfig *psPVRDRIConfig);
++void DRISUPDestroyDrawable(struct DRISUPDrawable *psDRISUPDrawable);
++
++bool DRISUPMakeCurrent(struct DRISUPContext *psDRISUPContext,
++                       struct DRISUPDrawable *psDRISUPWrite,
++                       struct DRISUPDrawable *psDRISUPRead);
++bool DRISUPUnbindContext(struct DRISUPContext *psDRISUPContext);
++
++struct DRISUPBuffer *DRISUPAllocateBuffer(struct DRISUPScreen *psDRISUPScreen,
++                                          unsigned int uAttchment,
++                                          unsigned int uFormat,
++                                          int iWidth, int iHeight,
++                                          unsigned int *puName,
++                                          unsigned int *puPitch,
++                                          unsigned int *puCPP,
++                                          unsigned int *puFlags);
++void DRISUPReleaseBuffer(struct DRISUPScreen *psDRISUPScreen,
++                         struct DRISUPBuffer *psDRISUPBuffer);
++void DRISUPSetTexBuffer2(struct DRISUPContext *psDRISUPContext,
++                         int iTarget, int iFormat,
++                         struct DRISUPDrawable *psDRISUPDrawable);
++void DRISUPReleaseTexBuffer(struct DRISUPContext *psDRISUPContext,
++                            int iTarget,
++                            struct DRISUPDrawable *psDRISUPDrawable);
++
++void DRISUPFlush(struct DRISUPDrawable *psDRISUPDrawable);
++void DRISUPInvalidate(struct DRISUPDrawable *psDRISUPDrawable);
++void DRISUPFlushWithFlags(struct DRISUPContext *psDRISUPContext,
++                          struct DRISUPDrawable *psDRISUPDrawable,
++                          unsigned int uFlags, unsigned int uThrottleReason);
++
++__DRIimage *DRISUPCreateImageFromName(struct DRISUPScreen *psDRISUPScreen,
++                                      int iWidth, int iHeight, int iFourCC,
++                                      int iName, int iPitch,
++                                      void *pvLoaderPrivate);
++__DRIimage *DRISUPCreateImageFromRenderbuffer(struct DRISUPContext *psDRISUPContext,
++                                              int iRenderBuffer,
++                                              void *pvLoaderPrivate);
++void DRISUPDestroyImage(__DRIimage *psImage);
++__DRIimage *DRISUPCreateImage(struct DRISUPScreen *psDRISUPScreen,
++                              int iWidth, int iHeight, int iFourCC,
++                              unsigned int uUse, void *pvLoaderPrivate);
++bool DRISUPQueryImage(__DRIimage *psImage, int iAttrib, int *piValue);
++__DRIimage *DRISUPDupImage(__DRIimage *psImage, void *pvLoaderPrivate);
++bool DRISUPValidateImageUsage(__DRIimage *psImage, unsigned int uUse);
++__DRIimage *DRISUPCreateImageFromNames(struct DRISUPScreen *psDRISUPScreen,
++                                       int iWidth, int iHeight, int iFourCC,
++                                       int *piNames, int iNumNames,
++                                       int *piStrides, int *piOffsets,
++                                       void *pvLoaderPrivate);
++__DRIimage *DRISUPFromPlanar(__DRIimage *psImage, int iPlane,
++                             void *pvLoaderPrivate);
++__DRIimage *DRISUPCreateImageFromTexture(struct DRISUPContext *psDRISUPContext,
++                                         int iTarget, unsigned int uTexture,
++                                         int iDepth, int iLevel,
++                                         unsigned int *puError,
++                                         void *pvLoaderPrivate);
++__DRIimage *DRISUPCreateImageFromFDs(struct DRISUPScreen *psDRISUPcreen,
++                                     int iWidth, int iHeight, int iFourCC,
++                                     int *piFDs, int iNumFDs,
++                                     int *piStrides, int *piOffsets,
++                                     void *pvLoaderPrivate);
++__DRIimage *DRISUPCreateImageFromDmaBufs(struct DRISUPScreen *psDRISUPScreen,
++                                         int iWidth, int iHeight, int iFourCC,
++                                         int *piFDs, int iNumFDs,
++                                         int *piStrides, int *piOffsets,
++                                         unsigned int uColorSpace,
++                                         unsigned int uSampleRange,
++                                         unsigned int uHorizSiting,
++                                         unsigned int uVertSiting,
++                                         unsigned int *puError,
++                                         void *pvLoaderPrivate);
++int DRISUPGetImageCapabilities(struct DRISUPScreen *psDRISUPScreen);
++void DRISUPBlitImage(struct DRISUPContext *psDRISUPContext,
++                     __DRIimage *psDst, __DRIimage *psSrc,
++                     int iDstX0, int iDstY0, int iDstWidth, int iDstHeight,
++                     int iSrcX0, int iSrcY0, int iSrcWidth, int iSrcHeight,
++                     int iFlushFlag);
++void *DRISUPMapImage(struct DRISUPContext *psDRISUPContext,
++                     __DRIimage *psImage,
++                     int iX0, int iY0, int iWidth, int iHeight,
++                     unsigned int uFlags, int *piStride, void **ppvData);
++void DRISUPUnmapImage(struct DRISUPContext *psDRISUPContext,
++                      __DRIimage *psImage, void *pvData);
++__DRIimage *DRISUPCreateImageWithModifiers(struct DRISUPScreen *psDRISUPScreen,
++                                           int iWidth, int iHeight, int iFourCC,
++                                           const uint64_t *puModifiers,
++                                           const unsigned int uModifierCount,
++                                           void *pvLoaderPrivate);
++__DRIimage *DRISUPCreateImageFromDMABufs2(struct DRISUPScreen *psDRISUPScreen,
++                                          int iWidth, int iHeight,
++                                          int iFourCC, uint64_t uModifier,
++                                          int *piFDs, int iNumFDs,
++                                          int *piStrides, int *piOffsets,
++                                          unsigned int uColorSpace,
++                                          unsigned int uSampleRange,
++                                          unsigned int uHorizSiting,
++                                          unsigned int uVertSiting,
++                                          unsigned int *puError,
++                                          void *pvLoaderPrivate);
++
++bool DRISUPQueryDMABufFormats(struct DRISUPScreen *psDRISUPScreen, int iMax,
++                              int *piFormats, int *piCount);
++bool DRISUPQueryDMABufModifiers(struct DRISUPScreen *psDRISUPScreen,
++                                int iFourCC, int iMax, uint64_t *puModifiers,
++                                unsigned int *piExternalOnly, int *piCount);
++bool DRISUPQueryDMABufFormatModifierAttribs(struct DRISUPScreen *psDRISUPScreen,
++                                            uint32_t uFourcc,
++                                            uint64_t uModifier,
++                                            int iAttrib, uint64_t *puValue);
++
++__DRIimage *DRISUPCreateImageFromRenderBuffer2(struct DRISUPContext *psDRISUPContext,
++                                               int iRenderBuffer,
++                                               void *pvLoaderPrivate,
++                                               unsigned int *puError);
++
++__DRIimage *DRISUPCreateImageFromBuffer(struct DRISUPContext *psDRISUPContext,
++                                        int iTarget, void *pvBuffer,
++                                        unsigned int *puError,
++                                        void *pvLoaderPrivate);
++
++int DRISUPQueryRendererInteger(struct DRISUPScreen *psDRISUPScreen,
++                               int iAttribute, unsigned int *puValue);
++int DRISUPQueryRendererString(struct DRISUPScreen *psDRISUPScreen,
++                              int iAttribute, const char **ppszValue);
++
++void *DRISUPCreateFence(struct DRISUPContext *psDRISUPContext);
++void DRISUPDestroyFence(struct DRISUPScreen *psDRISUPScreen, void *pvFence);
++bool DRISUPClientWaitSync(struct DRISUPContext *psDRISUPContext,
++                          void *pvFence, unsigned int uFlags,
++                          uint64_t uTimeout);
++void DRISUPServerWaitSync(struct DRISUPContext *psDRISUPContext,
++                          void *pvFence, unsigned int uFlags);
++unsigned int DRISUPGetFenceCapabilities(struct DRISUPScreen *psDRISUPScreen);
++void *DRISUPCreateFenceFD(struct DRISUPContext *psDRISUPContext, int iFD);
++int DRISUPGetFenceFD(struct DRISUPScreen *psDRISUPScreen, void *pvFence);
++void *DRISUPGetFenceFromCLEvent(struct DRISUPScreen *psDRISUPScreen,
++                                intptr_t iCLEvent);
++
++unsigned int DRISUPGetNumAPIProcs(struct DRISUPScreen *psDRISUPScreen,
++                                  PVRDRIAPIType eAPI);
++const char *DRISUPGetAPIProcName(struct DRISUPScreen *psDRISUPScreen,
++                                 PVRDRIAPIType eAPI, unsigned int uIndex);
++void *DRISUPGetAPIProcAddress(struct DRISUPScreen *psDRISUPScreen,
++                              PVRDRIAPIType eAPI, unsigned int uIndex);
++
++void DRISUPSetDamageRegion(struct DRISUPDrawable *psDRISUPDrawable,
++                           unsigned int uNRects, int *piRects);
++
++/******************************************************************************
++ * PVR DRI Support interface, version 1.
++ * Everything below this point is deprecated.
++ *****************************************************************************/
++
++#include "imgpixfmts.h"
++#include "imgyuv.h"
++
++PVRDRIDeviceType PVRDRIGetDeviceTypeFromFd(int iFd);
++bool PVRDRIIsFirstScreen(PVRDRIScreenImpl *psScreenImpl);
++
++uint32_t PVRDRIPixFmtGetDepth(IMG_PIXFMT eFmt);
++uint32_t PVRDRIPixFmtGetBPP(IMG_PIXFMT eFmt);
++uint32_t PVRDRIPixFmtGetBlockSize(IMG_PIXFMT eFmt);
++
++/* ScreenImpl functions */
++PVRDRIScreenImpl *PVRDRICreateScreenImpl(int iFd);
++void PVRDRIDestroyScreenImpl(PVRDRIScreenImpl *psScreenImpl);
++
++int PVRDRIAPIVersion(PVRDRIAPIType eAPI, PVRDRIAPISubType eAPISub,
++                     PVRDRIScreenImpl *psScreenImpl);
++
++void *PVRDRIEGLGetLibHandle(PVRDRIAPIType eAPI,
++                            PVRDRIScreenImpl *psScreenImpl);
++PVRDRIGLAPIProc PVRDRIEGLGetProcAddress(PVRDRIAPIType eAPI,
++                                        PVRDRIScreenImpl *psScreenImpl,
++                                        const char *psProcName);
++
++bool PVRDRIEGLFlushBuffers(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                           PVRDRIContextImpl *psContextImpl,
++                           PVRDRIDrawableImpl *psDrawableImpl,
++                           bool bFlushAllSurfaces, bool bSwapBuffers,
++                           bool bWaitForHW);
++void PVRDRIEGLMarkRendersurfaceInvalid(PVRDRIAPIType eAPI,
++                                       PVRDRIScreenImpl *psScreenImpl,
++                                       PVRDRIContextImpl *psContextImpl);
++
++unsigned int PVRDRICreateContextV1(PVRDRIScreenImpl *psScreenImpl,
++                                   PVRDRIContextImpl *psSharedContextImpl,
++                                   PVRDRIConfig *psConfig,
++                                   PVRDRIAPIType eAPI,
++                                   PVRDRIAPISubType eAPISub,
++                                   unsigned int uMajorVersion,
++                                   unsigned int uMinorVersion,
++                                   uint32_t uFlags, bool bNotifyReset,
++                                   unsigned int uPriority,
++                                   PVRDRIContextImpl **ppsContextImpl);
++void PVRDRIDestroyContextImpl(PVRDRIContextImpl *psContextImpl,
++                              PVRDRIAPIType eAPI,
++                              PVRDRIScreenImpl *psScreenImpl);
++
++bool PVRDRIMakeCurrentGC(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                         PVRDRIContextImpl *psContextImpl,
++                         PVRDRIDrawableImpl *psWriteImpl,
++                         PVRDRIDrawableImpl *psReadImpl);
++void PVRDRIMakeUnCurrentGC(PVRDRIAPIType eAPI,
++                           PVRDRIScreenImpl *psScreenImpl);
++
++unsigned int PVRDRIGetImageSource(PVRDRIAPIType eAPI,
++                                  PVRDRIScreenImpl *psScreenImpl,
++                                  PVRDRIContextImpl *psContextImpl,
++                                  uint32_t uiTarget, uintptr_t uiBuffer,
++                                  uint32_t uiLevel, IMGEGLImage *psEGLImage);
++
++bool PVRDRI2BindTexImage(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                         PVRDRIContextImpl *psContextImpl,
++                         PVRDRIDrawableImpl *psDrawableImpl);
++void PVRDRI2ReleaseTexImage(PVRDRIAPIType eAPI,
++                            PVRDRIScreenImpl *psScreenImpl,
++                            PVRDRIContextImpl *psContextImpl,
++                            PVRDRIDrawableImpl *psDrawableImpl);
++
++/* DrawableImpl functions */
++PVRDRIDrawableImpl *PVRDRICreateDrawableWithConfig(PVRDRIDrawable *psPVRDrawable,
++                                                   PVRDRIConfig *psConfig);
++void PVRDRIDestroyDrawableImpl(PVRDRIDrawableImpl *psScreenImpl);
++bool PVREGLDrawableCreate(PVRDRIScreenImpl *psScreenImpl,
++                          PVRDRIDrawableImpl *psDrawableImpl);
++bool PVREGLDrawableRecreate(PVRDRIScreenImpl *psScreenImpl,
++                            PVRDRIDrawableImpl *psDrawableImpl);
++bool PVREGLDrawableDestroy(PVRDRIScreenImpl *psScreenImpl,
++                           PVRDRIDrawableImpl *psDrawableImpl);
++void PVREGLDrawableDestroyConfig(PVRDRIDrawableImpl *psDrawableImpl);
++
++/* Buffer functions */
++PVRDRIBufferImpl *PVRDRIBufferCreate(PVRDRIScreenImpl *psScreenImpl,
++                                     int iWidth, int iHeight,
++                                     unsigned int uiBpp,
++                                     unsigned int uiUseFlags,
++                                     unsigned int *puiStride);
++PVRDRIBufferImpl *PVRDRIBufferCreateWithModifiers(PVRDRIScreenImpl *psScreenImpl,
++                                                  int iWidth, int iHeight,
++                                                  int iFormat,
++                                                  IMG_PIXFMT eIMGPixelFormat,
++                                                  const uint64_t *puiModifiers,
++                                                  unsigned int uiModifierCount,
++                                                  unsigned int *puiStride);
++PVRDRIBufferImpl *PVRDRIBufferCreateFromNames(PVRDRIScreenImpl *psScreenImpl,
++                                              int iWidth, int iHeight,
++                                              unsigned int uiNumPlanes,
++                                              const int *piName,
++                                              const int *piStride,
++                                              const int *piOffset,
++                                              const unsigned int *puiWidthShift,
++                                              const unsigned int *puiHeightShift);
++PVRDRIBufferImpl *PVRDRIBufferCreateFromFds(PVRDRIScreenImpl *psScreenImpl,
++                                            int iWidth, int iHeight,
++                                            unsigned int uiNumPlanes,
++                                            const int *piFd,
++                                            const int *piStride,
++                                            const int *piOffset,
++                                            const unsigned int *puiWidthShift,
++                                            const unsigned int *puiHeightShift);
++PVRDRIBufferImpl *PVRDRIBufferCreateFromFdsWithModifier(PVRDRIScreenImpl *psScreenImpl,
++                                                        int iWidth,
++                                                        int iHeight,
++                                                        uint64_t uiModifier,
++                                                        unsigned int uiNumPlanes,
++                                                        const int *piFd,
++                                                        const int *piStride,
++                                                        const int *piOffset,
++                                                        const unsigned int *puiWidthShift,
++                                                        const unsigned int *puiHeightShift);
++PVRDRIBufferImpl *PVRDRISubBufferCreate(PVRDRIScreenImpl *psScreen,
++                                        PVRDRIBufferImpl *psParent,
++                                        int plane);
++void PVRDRIBufferDestroy(PVRDRIBufferImpl *psBuffer);
++
++int PVRDRIBufferGetFd(PVRDRIBufferImpl *psBuffer);
++int PVRDRIBufferGetHandle(PVRDRIBufferImpl *psBuffer);
++uint64_t PVRDRIBufferGetModifier(PVRDRIBufferImpl *psBuffer);
++int PVRDRIBufferGetName(PVRDRIBufferImpl *psBuffer);
++int PVRDRIBufferGetOffset(PVRDRIBufferImpl *psBuffer);
++
++/* Image functions */
++IMGEGLImage *PVRDRIEGLImageCreate(void);
++IMGEGLImage *PVRDRIEGLImageCreateFromBuffer(int iWidth, int iHeight,
++                                            int iStride,
++                                            IMG_PIXFMT ePixelFormat,
++                                            IMG_YUV_COLORSPACE eColourSpace,
++                                            IMG_YUV_CHROMA_INTERP eChromaUInterp,
++                                            IMG_YUV_CHROMA_INTERP eChromaVInterp,
++                                            PVRDRIBufferImpl *psBuffer);
++IMGEGLImage *PVRDRIEGLImageCreateFromSubBuffer(IMG_PIXFMT ePixelFormat,
++                                               PVRDRIBufferImpl *psSubBuffer);
++IMGEGLImage *PVRDRIEGLImageDup(IMGEGLImage *psIn);
++
++void PVRDRIEGLImageSetCallbackData(IMGEGLImage *psEGLImage,
++                                   __DRIimage *image);
++
++void PVRDRIEGLImageDestroyExternal(PVRDRIScreenImpl *psScreenImpl,
++                                   IMGEGLImage *psEGLImage,
++                                   PVRDRIEGLImageType eglImageType);
++void PVRDRIEGLImageFree(IMGEGLImage *psEGLImage);
++
++void PVRDRIEGLImageGetAttribs(IMGEGLImage *psEGLImage,
++                              PVRDRIBufferAttribs *psAttribs);
++
++/* Sync functions */
++void *PVRDRICreateFenceImpl(PVRDRIAPIType eAPI,
++                            PVRDRIScreenImpl *psScreenImpl,
++                            PVRDRIContextImpl *psContextImpl);
++void PVRDRIDestroyFenceImpl(void *pvFence);
++
++bool PVRDRIClientWaitSyncImpl(PVRDRIAPIType eAPI,
++                              PVRDRIContextImpl *psContextImpl,
++                              void *pvFence, bool bFlushCommands,
++                              bool bTimeout, uint64_t uiTimeout);
++bool PVRDRIServerWaitSyncImpl(PVRDRIAPIType eAPI,
++                              PVRDRIContextImpl *psContextImpl,
++                              void *pvFence);
++
++/* Blit functions */
++bool PVRDRIBlitEGLImage(PVRDRIScreenImpl *psScreenImpl,
++                        PVRDRIContextImpl *psContextImpl,
++                        IMGEGLImage *psDstImage,
++                        PVRDRIBufferImpl *psDstBuffer,
++                        IMGEGLImage *psSrcImage,
++                        PVRDRIBufferImpl *psSrcBuffer,
++                        int iDstX, int iDstY, int iDstWidth, int iDstHeight,
++                        int iSrcX, int iSrcY, int iSrcWidth, int iSrcHeight,
++                        int iFlushFlag);
++
++/* Mapping functions */
++void *PVRDRIMapEGLImage(PVRDRIScreenImpl *psScreenImpl,
++                        PVRDRIContextImpl *psContextImpl,
++                        IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
++                        int iX, int iY, int iWidth, int iHeight,
++                        unsigned int uiFlags, int *piStride, void **ppvData);
++bool PVRDRIUnmapEGLImage(PVRDRIScreenImpl *psScreenImpl,
++                         PVRDRIContextImpl *psContextImpl,
++                         IMGEGLImage *psImage, PVRDRIBufferImpl *psBuffer,
++                         void *pvData);
++
++/* Fence functions */
++void *PVRDRICreateFenceImpl(PVRDRIAPIType eAPI,
++                            PVRDRIScreenImpl *psScreenImpl,
++                            PVRDRIContextImpl *psContextImpl);
++void *PVRDRICreateFenceFd(PVRDRIAPIType eAPI, PVRDRIScreenImpl *psScreenImpl,
++                          PVRDRIContextImpl *psContextImpl, int iFd);
++unsigned int PVRDRIGetFenceCapabilities(PVRDRIScreenImpl *psScreenImpl);
++int PVRDRIGetFenceFd(void *pvFence);
++void PVRDRIDestroyFenceImpl(void *pvFence);
++
++bool PVRDRIClientWaitSyncImpl(PVRDRIAPIType eAPI,
++                              PVRDRIContextImpl *psContextImpl, void *pvFence,
++                              bool bFlushCommands,
++                              bool bTimeout, uint64_t uiTimeout);
++
++bool PVRDRIServerWaitSyncImpl(PVRDRIAPIType eAPI,
++                              PVRDRIContextImpl *psContextImpl,
++                              void *pvFence);
++
++/* PVR utility support functions */
++bool PVRDRIMesaFormatSupported(unsigned int iFormat);
++unsigned int PVRDRIDepthStencilBitArraySize(void);
++const uint8_t *PVRDRIDepthBitsArray(void);
++const uint8_t *PVRDRIStencilBitsArray(void);
++unsigned int PVRDRIMSAABitArraySize(void);
++const uint8_t *PVRDRIMSAABitsArray(void);
++uint32_t PVRDRIMaxPBufferWidth(void);
++uint32_t PVRDRIMaxPBufferHeight(void);
++
++unsigned int PVRDRIGetNumAPIFuncs(PVRDRIAPIType eAPI);
++const char *PVRDRIGetAPIFunc(PVRDRIAPIType eAPI, unsigned int index);
++
++int PVRDRIQuerySupportedFormats(PVRDRIScreenImpl *psScreenImpl,
++                                unsigned int uNumFormats,
++                                const int *piFormats,
++                                const IMG_PIXFMT *peImgFormats,
++                                bool *pbSupported);
++int PVRDRIQueryModifiers(PVRDRIScreenImpl *psScreenImpl,
++                         int iFormat, IMG_PIXFMT eImgFormat,
++                         uint64_t *puModifiers, unsigned int *puExternalOnly);
++
++#endif /* defined(__PVRDRI_SUPPORT_H__) */
 diff --git a/src/mesa/drivers/dri/pvr/pvrext.c b/src/mesa/drivers/dri/pvr/pvrext.c
 new file mode 100644
-index 00000000000..c3782b6592b
+index 00000000000..79d76b40de9
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/pvrext.c
-@@ -0,0 +1,440 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,701 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -5262,320 +6668,588 @@
 + *    way.
 + */
 +
-+#include "util/u_atomic.h"
-+
 +#include "dri_util.h"
 +#include "utils.h"
 +
 +#include "dri_support.h"
 +#include "pvrdri.h"
-+#include "pvrimage.h"
 +
 +#include "EGL/egl.h"
 +#include "EGL/eglext.h"
++#include "EGL/eglmesaext.h"
 +
 +/* Maximum version numbers for each supported extension */
-+#define PVR_DRI_TEX_BUFFER_VERSION	2
-+#define PVR_DRI2_FLUSH_VERSION		4
-+#define PVR_DRI_IMAGE_VERSION		17
-+#define PVR_DRI2_ROBUSTNESS_VERSION	1
-+#define PVR_DRI2_FENCE_VERSION		2
++#define PVR_DRI_TEX_BUFFER_VERSION      3
++#define PVR_DRI2_FLUSH_VERSION          4
++#define PVR_DRI_IMAGE_VERSION           17
++#define PVR_DRI2_ROBUSTNESS_VERSION     1
++#define PVR_DRI2_FENCE_VERSION          2
++#define PVR_DRI2_RENDERER_QUERY_VERSION 1
++#define PVR_DRI2_BUFFER_DAMAGE_VERSION  1
 +
-+static void PVRDRIFlushDrawableContext(PVRDRIDrawable *psPVRDrawable,
-+				       PVRDRIContext *psPVRContext)
++static void
++PVRDRIExtSetTexBuffer(__DRIcontext *psDRIContext, GLint iTarget,
++                      GLint iFormat, __DRIdrawable *psDRIDrawable)
 +{
-+	PVRDRIContext *psPVRDrawContext = psPVRDrawable->psPVRContext;
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+	if (psPVRDrawContext)
-+	{
-+		PVRDRIEGLFlushBuffers(psPVRDrawContext->eAPI,
-+		                      psPVRDrawContext->psPVRScreen->psImpl,
-+		                      psPVRDrawContext->psImpl,
-+		                      psPVRDrawable->psImpl,
-+		                      false,
-+		                      false,
-+		                      (psPVRDrawContext != psPVRContext));
-+	}
++   DRISUPSetTexBuffer2(psPVRContext->psDRISUPContext,
++                       iTarget, iFormat, psPVRDrawable->psDRISUPDrawable);
 +}
 +
-+static void PVRDRIExtSetTexBuffer(__DRIcontext  *psDRIContext,
-+				  GLint          target,
-+				  GLint          format,
-+				  __DRIdrawable *psDRIDrawable)
++static void
++PVRDRIExtReleaseTexBuffer(__DRIcontext *psDRIContext, GLint iTarget,
++                          __DRIdrawable *psDRIDrawable)
 +{
-+	PVRDRIDrawable *psPVRDrawable = (PVRDRIDrawable *)psDRIDrawable->driverPrivate;
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+	(void)target;
-+	(void)format;
++   DRISUPReleaseTexBuffer(psPVRContext->psDRISUPContext,
++                          iTarget, psPVRDrawable->psDRISUPDrawable);
 +
-+	if (!psPVRDrawable->bInitialised)
-+	{
-+		if (!PVRDRIDrawableInit(psPVRDrawable))
-+		{
-+			__driUtilMessage("%s: Couldn't initialise pixmap", __func__);
-+			return;
-+		}
-+	}
-+
-+	PVRDRIFlushDrawableContext(psPVRDrawable, psPVRContext);
-+	PVRDRI2BindTexImage(psPVRContext->eAPI,
-+	                    psPVRContext->psPVRScreen->psImpl,
-+	                    psPVRContext->psImpl,
-+	                    psPVRDrawable->psImpl);
 +}
 +
-+static void PVRDRIExtReleaseTexBuffer(__DRIcontext  *psDRIContext,
-+				      GLint          target,
-+				      __DRIdrawable *psDRIDrawable)
-+{
-+	PVRDRIDrawable *psPVRDrawable = (PVRDRIDrawable *)psDRIDrawable->driverPrivate;
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
-+
-+	(void)target;
-+
-+	PVRDRI2ReleaseTexImage(psPVRContext->eAPI,
-+	                       psPVRContext->psPVRScreen->psImpl,
-+	                       psPVRContext->psImpl,
-+	                       psPVRDrawable->psImpl);
-+}
-+
-+static __DRItexBufferExtension pvrDRITexBufferExtension =
-+{
-+	.base			= { .name = __DRI_TEX_BUFFER, .version = PVR_DRI_TEX_BUFFER_VERSION },
-+	.setTexBuffer		= NULL,
-+	.setTexBuffer2		= PVRDRIExtSetTexBuffer,
-+	.releaseTexBuffer	= PVRDRIExtReleaseTexBuffer
++static __DRItexBufferExtension pvrDRITexBufferExtension = {
++   .base = {
++      .name = __DRI_TEX_BUFFER,
++      .version = PVR_DRI_TEX_BUFFER_VERSION,
++   },
++   .setTexBuffer = NULL,
++   .setTexBuffer2 = PVRDRIExtSetTexBuffer,
++   .releaseTexBuffer = PVRDRIExtReleaseTexBuffer,
 +};
 +
-+
-+static void PVRDRI2Flush(__DRIdrawable *psDRIDrawable)
++static void
++PVRDRI2Flush(__DRIdrawable *psDRIDrawable)
 +{
-+	PVRDRIDrawable *psPVRDrawable = (PVRDRIDrawable *)psDRIDrawable->driverPrivate;
-+	PVRDRIContext *psPVRContext = psPVRDrawable->psPVRContext;
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
 +
-+	PVRDRIFlushBuffersForSwap(psPVRContext, psPVRDrawable);
++   DRISUPFlush(psPVRDrawable->psDRISUPDrawable);
 +}
 +
-+static void PVRDRI2Invalidate(__DRIdrawable *psDRIDrawable)
++static void
++PVRDRI2Invalidate(__DRIdrawable *psDRIDrawable)
 +{
-+	PVRDRIDrawable *psPVRDrawable = (PVRDRIDrawable *)psDRIDrawable->driverPrivate;
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
 +
-+	if (psPVRDrawable->psPVRScreen->bUseInvalidate)
-+	{
-+		p_atomic_inc(&psPVRDrawable->iInfoInvalid);
-+	}
++   DRISUPInvalidate(psPVRDrawable->psDRISUPDrawable);
 +}
 +
-+static void PVRDRI2FlushWithFlags(__DRIcontext *psDRIContext,
-+				  __DRIdrawable *psDRIDrawable,
-+				  unsigned uFlags,
-+				  enum __DRI2throttleReason eThrottleReason)
++static void
++PVRDRI2FlushWithFlags(__DRIcontext *psDRIContext,
++                      __DRIdrawable *psDRIDrawable,
++                      unsigned int uFlags,
++                      enum __DRI2throttleReason eThrottleReason)
 +{
-+	PVRDRIContext *psPVRContext = (PVRDRIContext *)psDRIContext->driverPrivate;
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++   struct DRISUPDrawable *psDRISUPDrawable;
 +
-+	(void)eThrottleReason;
++   if ((uFlags & __DRI2_FLUSH_DRAWABLE) != 0) {
++      PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
 +
-+	if ((uFlags & __DRI2_FLUSH_DRAWABLE) != 0)
-+	{
-+		PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++      psDRISUPDrawable = psPVRDrawable->psDRISUPDrawable;
++   } else {
++      psDRISUPDrawable = NULL;
++   }
 +
-+		PVRDRIFlushBuffersForSwap(psPVRContext, psPVRDrawable);
-+	}
-+	else if ((uFlags & __DRI2_FLUSH_CONTEXT) != 0)
-+	{
-+		/*
-+		 * __DRI2_FLUSH__CONTEXT means "glFlush". Most callers
-+		 * also specify __DRI2_FLUSH_DRAWABLE. An exception is
-+		 * GBM, which flushes after an unmap, when there doesn't
-+		 * appear to be a need to flush outstanding GPU operations.
-+		 */
-+	}
++   DRISUPFlushWithFlags(psPVRContext->psDRISUPContext, psDRISUPDrawable,
++                        uFlags, (unsigned int) eThrottleReason);
 +}
 +
-+static __DRI2flushExtension pvrDRI2FlushExtension =
-+{
-+	.base			= { .name = __DRI2_FLUSH, .version = PVR_DRI2_FLUSH_VERSION },
-+	.flush			= PVRDRI2Flush,
-+	.invalidate		= PVRDRI2Invalidate,
-+	.flush_with_flags	= PVRDRI2FlushWithFlags,
++static __DRI2flushExtension pvrDRI2FlushExtension = {
++   .base = {
++      .name = __DRI2_FLUSH,
++      .version = PVR_DRI2_FLUSH_VERSION,
++   },
++   .flush = PVRDRI2Flush,
++   .invalidate = PVRDRI2Invalidate,
++   .flush_with_flags = PVRDRI2FlushWithFlags,
 +};
 +
-+
-+static __DRIimageExtension pvrDRIImage =
++static __DRIimage *
++PVRDRICreateImageFromName(__DRIscreen *psDRIScreen, int iWidth, int iHeight,
++                          int iFormat, int iName, int iPitch,
++                          void *pvLoaderPrivate)
 +{
-+	.base				= { .name = __DRI_IMAGE, .version = PVR_DRI_IMAGE_VERSION },
-+	.createImageFromName		= PVRDRICreateImageFromName,
-+	.createImageFromRenderbuffer	= PVRDRICreateImageFromRenderbuffer,
-+	.destroyImage			= PVRDRIDestroyImage,
-+	.createImage			= PVRDRICreateImage,
-+	.queryImage			= PVRDRIQueryImage,
-+	.dupImage			= PVRDRIDupImage,
-+	.validateUsage			= PVRDRIValidateUsage,
-+	.createImageFromNames		= PVRDRICreateImageFromNames,
-+	.fromPlanar			= PVRDRIFromPlanar,
-+	.createImageFromTexture		= PVRDRICreateImageFromTexture,
-+	.createImageFromFds		= PVRDRICreateImageFromFds,
-+	.createImageFromDmaBufs		= PVRDRICreateImageFromDmaBufs,
-+	.blitImage			= PVRDRIBlitImage,
-+	.getCapabilities		= PVRDRIGetCapabilities,
-+	.mapImage			= PVRDRIMapImage,
-+	.unmapImage			= PVRDRIUnmapImage,
-+	.createImageWithModifiers	= PVRDRICreateImageWithModifiers,
-+	.createImageFromDmaBufs2	= PVRDRICreateImageFromDmaBufs2,
-+	.queryDmaBufFormats		= PVRDRIQueryDmaBufFormats,
-+	.queryDmaBufModifiers		= PVRDRIQueryDmaBufModifiers,
-+	.queryDmaBufFormatModifierAttribs = PVRDRIQueryDmaBufFormatModifierAttribs,
-+	.createImageFromRenderbuffer2	= PVRDRICreateImageFromRenderbuffer2,
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   int iFourCC = PVRDRIFormatToFourCC(iFormat);
++
++   return DRISUPCreateImageFromName(psPVRScreen->psDRISUPScreen,
++                                    iWidth, iHeight, iFourCC, iName, iPitch,
++                                    pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromRenderbuffer(__DRIcontext *psDRIContext,
++                                  int iRenderBuffer, void *pvLoaderPrivate)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   return DRISUPCreateImageFromRenderbuffer(psPVRContext->psDRISUPContext,
++                                            iRenderBuffer, pvLoaderPrivate);
++}
++
++static void
++PVRDRIDestroyImage(__DRIimage *psImage)
++{
++   DRISUPDestroyImage(psImage);
++}
++
++static __DRIimage *
++PVRDRICreateImage(__DRIscreen *psDRIScreen, int iWidth, int iHeight,
++                  int iFormat, unsigned int uUse, void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   int iFourCC = PVRDRIFormatToFourCC(iFormat);
++
++   return DRISUPCreateImage(psPVRScreen->psDRISUPScreen, iWidth, iHeight,
++                            iFourCC, uUse, pvLoaderPrivate);
++}
++
++static GLboolean
++PVRDRIQueryImage(__DRIimage *psImage, int iAttrib, int *piValue)
++{
++   int iFourCC;
++
++   switch (iAttrib) {
++   case PVRDRI_IMAGE_ATTRIB_FORMAT:
++      if (DRISUPQueryImage(psImage,
++                           PVRDRI_IMAGE_ATTRIB_FOURCC, &iFourCC)) {
++         *piValue = PVRDRIFourCCToDRIFormat(iFourCC);
++         return GL_TRUE;
++      }
++      return GL_FALSE;
++   default:
++      return DRISUPQueryImage(psImage, iAttrib, piValue);
++   }
++
++}
++
++static __DRIimage *
++PVRDRIDupImage(__DRIimage *psImage, void *pvLoaderPrivate)
++{
++   return DRISUPDupImage(psImage, pvLoaderPrivate);
++}
++
++static GLboolean
++PVRDRIValidateImageUsage(__DRIimage *psImage, unsigned int uUse)
++{
++   return DRISUPValidateImageUsage(psImage, uUse);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromNames(__DRIscreen *psDRIScreen, int iWidth, int iHeight,
++                           int iFourCC, int *piNames, int iNumNames,
++                           int *piStrides, int *piOffsets,
++                           void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPCreateImageFromNames(psPVRScreen->psDRISUPScreen,
++                                     iWidth, iHeight, iFourCC,
++                                     piNames, iNumNames,
++                                     piStrides, piOffsets, pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRIFromPlanar(__DRIimage *psImage, int iPlane, void *pvLoaderPrivate)
++{
++   return DRISUPFromPlanar(psImage, iPlane, pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromTexture(__DRIcontext *psDRIContext, int iTarget,
++                             unsigned int uTexture, int iDepth, int iLevel,
++                             unsigned int *puError, void *pvLoaderPrivate)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++   int iEGLTarget;
++
++   switch (iTarget) {
++   case GL_TEXTURE_2D:
++      iEGLTarget = PVRDRI_GL_TEXTURE_2D;
++      break;
++   case GL_TEXTURE_3D:
++      iEGLTarget = PVRDRI_GL_TEXTURE_3D;
++      break;
++   case GL_TEXTURE_CUBE_MAP:
++      iEGLTarget = PVRDRI_GL_TEXTURE_CUBE_MAP_POSITIVE_X;
++      break;
++   default:
++      errorMessage("%s: GL Target %d is not supported",
++                   __func__, iTarget);
++      *puError = __DRI_IMAGE_ERROR_BAD_PARAMETER;
++      return NULL;
++   }
++
++   return DRISUPCreateImageFromTexture(psPVRContext->psDRISUPContext,
++                                       iEGLTarget, uTexture, iDepth, iLevel,
++                                       puError, pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromFds(__DRIscreen *psDRIScreen, int iWidth, int iHeight,
++                         int iFourCC, int *piFDs, int iNumFDs,
++                         int *piStrides, int *piOffsets,
++                         void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPCreateImageFromFDs(psPVRScreen->psDRISUPScreen,
++                                   iWidth, iHeight, iFourCC, piFDs, iNumFDs,
++                                   piStrides, piOffsets, pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromDmaBufs(__DRIscreen *psDRIScreen,
++                             int iWidth, int iHeight, int iFourCC,
++                             int *piFDs, int iNumFDs,
++                             int *piStrides, int *piOffsets,
++                             enum __DRIYUVColorSpace eColorSpace,
++                             enum __DRISampleRange eSampleRange,
++                             enum __DRIChromaSiting eHorizSiting,
++                             enum __DRIChromaSiting eVertSiting,
++                             unsigned int *puError, void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPCreateImageFromDmaBufs(psPVRScreen->psDRISUPScreen,
++                                       iWidth, iHeight, iFourCC,
++                                       piFDs, iNumFDs, piStrides, piOffsets,
++                                       (unsigned int) eColorSpace,
++                                       (unsigned int) eSampleRange,
++                                       (unsigned int) eHorizSiting,
++                                       (unsigned int) eVertSiting,
++                                       puError, pvLoaderPrivate);
++}
++
++static void
++PVRDRIBlitImage(__DRIcontext *psDRIContext,
++                __DRIimage *psDst, __DRIimage *psSrc,
++                int iDstX0, int iDstY0, int iDstWidth, int iDstHeight,
++                int iSrcX0, int iSrcY0, int iSrcWidth, int iSrcHeight,
++                int iFlushFlag)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   return DRISUPBlitImage(psPVRContext->psDRISUPContext,
++                          psDst, psSrc,
++                          iDstX0, iDstY0, iDstWidth, iDstHeight,
++                          iSrcX0, iSrcY0, iSrcWidth, iSrcHeight,
++                          iFlushFlag);
++}
++
++static int
++PVRDRIGetCapabilities(__DRIscreen *psDRIScreen)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPGetImageCapabilities(psPVRScreen->psDRISUPScreen);
++}
++
++static void *
++PVRDRIMapImage(__DRIcontext *psDRIContext, __DRIimage *psImage,
++               int iX0, int iY0, int iWidth, int iHeight,
++               unsigned int iFlags, int *piStride, void **ppvData)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   return DRISUPMapImage(psPVRContext->psDRISUPContext, psImage,
++                         iX0, iY0, iWidth, iHeight, iFlags, piStride,
++                         ppvData);
++}
++
++static void
++PVRDRIUnmapImage(__DRIcontext *psDRIContext, __DRIimage *psImage,
++                 void *pvData)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   return DRISUPUnmapImage(psPVRContext->psDRISUPContext, psImage, pvData);
++}
++
++static __DRIimage *
++PVRDRICreateImageWithModifiers(__DRIscreen *psDRIScreen,
++                               int iWidth, int iHeight, int iFormat,
++                               const uint64_t *puModifiers,
++                               const unsigned int uModifierCount,
++                               void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   int iFourCC = PVRDRIFormatToFourCC(iFormat);
++
++   return DRISUPCreateImageWithModifiers(psPVRScreen->psDRISUPScreen,
++                                         iWidth, iHeight, iFourCC,
++                                         puModifiers, uModifierCount,
++                                         pvLoaderPrivate);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromDmaBufs2(__DRIscreen *psDRIScreen,
++                              int iWidth, int iHeight,
++                              int iFourCC, uint64_t uModifier,
++                              int *piFDs, int iNumFDs,
++                              int *piStrides, int *piOffsets,
++                              enum __DRIYUVColorSpace eColorSpace,
++                              enum __DRISampleRange eSampleRange,
++                              enum __DRIChromaSiting eHorizSiting,
++                              enum __DRIChromaSiting eVertSiting,
++                              unsigned int *puError, void *pvLoaderPrivate)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPCreateImageFromDMABufs2(psPVRScreen->psDRISUPScreen,
++                                        iWidth, iHeight, iFourCC, uModifier,
++                                        piFDs, iNumFDs, piStrides, piOffsets,
++                                        (unsigned int) eColorSpace,
++                                        (unsigned int) eSampleRange,
++                                        (unsigned int) eHorizSiting,
++                                        (unsigned int) eVertSiting,
++                                        puError, pvLoaderPrivate);
++}
++
++static GLboolean
++PVRDRIQueryDmaBufFormats(__DRIscreen *psDRIScreen, int iMax,
++                         int *piFormats, int *piCount)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPQueryDMABufFormats(psPVRScreen->psDRISUPScreen, iMax,
++                                   piFormats, piCount);
++}
++
++static GLboolean
++PVRDRIQueryDmaBufModifiers(__DRIscreen *psDRIScreen, int iFourCC, int iMax,
++                           uint64_t *puModifiers,
++                           unsigned int *puExternalOnly, int *piCount)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPQueryDMABufModifiers(psPVRScreen->psDRISUPScreen, iFourCC,
++                                     iMax,
++                                     puModifiers, puExternalOnly, piCount);
++}
++
++static GLboolean
++PVRDRIQueryDmaBufFormatModifierAttribs(__DRIscreen *psDRIScreen,
++                                       uint32_t uFourCC, uint64_t uModifier,
++                                       int iAttrib, uint64_t *puValue)
++{
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   struct DRISUPScreen *psDRISUPScreen = psPVRScreen->psDRISUPScreen;
++
++   return DRISUPQueryDMABufFormatModifierAttribs(psDRISUPScreen, uFourCC,
++                                                 uModifier, iAttrib, puValue);
++}
++
++static __DRIimage *
++PVRDRICreateImageFromRenderbuffer2(__DRIcontext *psDRIContext,
++                                   int iRenderBuffer, void *pvLoaderPrivate,
++                                   unsigned int *puError)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++   struct DRISUPContext *psDRISUPContext = psPVRContext->psDRISUPContext;
++
++   return DRISUPCreateImageFromRenderBuffer2(psDRISUPContext, iRenderBuffer,
++                                             pvLoaderPrivate, puError);
++}
++
 +#if defined(EGL_IMG_cl_image)
-+	.createImageFromBuffer		= PVRDRICreateImageFromBuffer,
++static __DRIimage *
++PVRDRICreateImageFromBuffer(__DRIcontext *psDRIContext, int iTarget,
++                            void *pvBuffer, unsigned int *puError,
++                            void *pvLoaderPrivate)
++{
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
++
++   return DRISUPCreateImageFromBuffer(psPVRContext->psDRISUPContext, iTarget,
++                                      pvBuffer, puError, pvLoaderPrivate);
++}
++#endif
++
++static __DRIimageExtension pvrDRIImage = {
++   .base = {
++      .name = __DRI_IMAGE,
++      .version = PVR_DRI_IMAGE_VERSION,
++   },
++   .createImageFromName = PVRDRICreateImageFromName,
++   .createImageFromRenderbuffer = PVRDRICreateImageFromRenderbuffer,
++   .destroyImage = PVRDRIDestroyImage,
++   .createImage = PVRDRICreateImage,
++   .queryImage = PVRDRIQueryImage,
++   .dupImage = PVRDRIDupImage,
++   .validateUsage = PVRDRIValidateImageUsage,
++   .createImageFromNames = PVRDRICreateImageFromNames,
++   .fromPlanar = PVRDRIFromPlanar,
++   .createImageFromTexture = PVRDRICreateImageFromTexture,
++   .createImageFromFds = PVRDRICreateImageFromFds,
++   .createImageFromDmaBufs = PVRDRICreateImageFromDmaBufs,
++   .blitImage = PVRDRIBlitImage,
++   .getCapabilities = PVRDRIGetCapabilities,
++   .mapImage = PVRDRIMapImage,
++   .unmapImage = PVRDRIUnmapImage,
++   .createImageWithModifiers = PVRDRICreateImageWithModifiers,
++   .createImageFromDmaBufs2 = PVRDRICreateImageFromDmaBufs2,
++   .queryDmaBufFormats = PVRDRIQueryDmaBufFormats,
++   .queryDmaBufModifiers = PVRDRIQueryDmaBufModifiers,
++   .queryDmaBufFormatModifierAttribs =
++   PVRDRIQueryDmaBufFormatModifierAttribs,
++   .createImageFromRenderbuffer2 = PVRDRICreateImageFromRenderbuffer2,
++#if defined(EGL_IMG_cl_image)
++   .createImageFromBuffer = PVRDRICreateImageFromBuffer,
 +#endif
 +};
 +
-+static __DRIrobustnessExtension pvrDRIRobustness =
-+{
-+	.base = { .name = __DRI2_ROBUSTNESS, .version = PVR_DRI2_ROBUSTNESS_VERSION }
++static __DRIrobustnessExtension pvrDRIRobustness = {
++   .base = {
++      .name = __DRI2_ROBUSTNESS,
++      .version = PVR_DRI2_ROBUSTNESS_VERSION,
++   }
 +};
 +
 +static int
-+PVRDRIQueryRendererInteger(__DRIscreen *dri_screen,
-+                           int param, unsigned int *value)
++PVRDRIQueryRendererInteger(__DRIscreen *psDRIScreen, int iAttribute,
++                           unsigned int *puValue)
 +{
-+	switch (param)
-+	{
-+		case __DRI2_RENDERER_HAS_CONTEXT_PRIORITY:
-+			value[0] = 0;
-+			value[0] |= __DRI2_RENDERER_HAS_CONTEXT_PRIORITY_HIGH;
-+			value[0] |= __DRI2_RENDERER_HAS_CONTEXT_PRIORITY_MEDIUM;
-+			value[0] |= __DRI2_RENDERER_HAS_CONTEXT_PRIORITY_LOW;
-+			return 0;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++   int res;
 +
-+		default:
-+			return driQueryRendererIntegerCommon(dri_screen, param, value);
-+	}
++   res = DRISUPQueryRendererInteger(psPVRScreen->psDRISUPScreen,
++                                    iAttribute, puValue);
++   if (res == -1)
++      return driQueryRendererIntegerCommon(psDRIScreen, iAttribute, puValue);
++
++   return res;
 +}
 +
 +static int
-+PVRDRIQueryRendererString(__DRIscreen *dri_screen,
-+                          int param, const char **value)
++PVRDRIQueryRendererString(__DRIscreen *psDRIScreen, int iAttribute,
++                          const char **ppszValue)
 +{
-+	return -1;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPQueryRendererString(psPVRScreen->psDRISUPScreen, iAttribute,
++                                    ppszValue);
 +}
 +
 +static const __DRI2rendererQueryExtension pvrDRIRendererQueryExtension = {
-+   .base = { __DRI2_RENDERER_QUERY, 1 },
-+
++   .base = {
++      .name = __DRI2_RENDERER_QUERY,
++      .version = PVR_DRI2_RENDERER_QUERY_VERSION,
++   },
 +   .queryInteger = PVRDRIQueryRendererInteger,
 +   .queryString = PVRDRIQueryRendererString,
 +};
 +
 +
-+#if defined(__DRI2_FENCE)
-+static void *PVRDRICreateFenceEXT(__DRIcontext *psDRIContext)
++static void *
++PVRDRICreateFenceEXT(__DRIcontext *psDRIContext)
 +{
-+	PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
-+	PVRDRIScreen *psPVRScreen = psPVRContext->psPVRScreen;
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+	return PVRDRICreateFenceImpl(psPVRContext->eAPI,
-+				     psPVRScreen->psImpl,
-+				     psPVRContext->psImpl);
++   return DRISUPCreateFence(psPVRContext->psDRISUPContext);
 +}
 +
-+static void PVRDRIDestroyFenceEXT(__DRIscreen *psDRIScreen, void *psDRIFence)
++static void
++PVRDRIDestroyFenceEXT(__DRIscreen *psDRIScreen, void *pvFence)
 +{
-+	(void)psDRIScreen;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
 +
-+	PVRDRIDestroyFenceImpl(psDRIFence);
++   return DRISUPDestroyFence(psPVRScreen->psDRISUPScreen, pvFence);
 +}
 +
-+static GLboolean PVRDRIClientWaitSyncEXT(__DRIcontext *psDRIContext,
-+					 void *psDRIFence,
-+					 unsigned uFlags,
-+					 uint64_t uiTimeout)
++static GLboolean
++PVRDRIClientWaitSyncEXT(__DRIcontext *psDRIContext, void *pvFence,
++                        unsigned int uFlags, uint64_t uTimeout)
 +{
-+	bool bFlushCommands = (uFlags & __DRI2_FENCE_FLAG_FLUSH_COMMANDS);
-+	bool bTimeout = (uiTimeout != __DRI2_FENCE_TIMEOUT_INFINITE);
++   struct DRISUPContext *psDRISUPContext;
 +
-+	if (psDRIContext && bFlushCommands)
-+	{
-+		PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
-+		PVRDRIDrawable *psPVRDrawable = psPVRContext->psPVRDrawable;
++   if (psDRIContext) {
++      PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+		(void) PVRDRIEGLFlushBuffers(psPVRContext->eAPI,
-+					     psPVRContext->psPVRScreen->psImpl,
-+					     psPVRContext->psImpl,
-+					     psPVRDrawable ? psPVRDrawable->psImpl : NULL,
-+					     true, false, false);
-+	}
++      psDRISUPContext = psPVRContext->psDRISUPContext;
++   } else {
++      psDRISUPContext = NULL;
++   }
 +
-+	return PVRDRIClientWaitSyncImpl(PVRDRI_API_NONE,
-+					NULL,
-+					psDRIFence,
-+					false,
-+					bTimeout,
-+					uiTimeout);
++   return DRISUPClientWaitSync(psDRISUPContext, pvFence, uFlags, uTimeout);
 +}
 +
-+static void PVRDRIServerWaitSyncEXT(__DRIcontext *psDRIContext,
-+				    void *psDRIFence,
-+				    unsigned uFlags)
++static void
++PVRDRIServerWaitSyncEXT(__DRIcontext *psDRIContext, void *pvFence,
++                        unsigned int uFlags)
 +{
-+	(void)uFlags;
-+	assert(uFlags == 0);
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+	if (psDRIFence)
-+	{
-+		PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
-+
-+		if (!PVRDRIServerWaitSyncImpl(psPVRContext->eAPI,
-+					      psPVRContext->psImpl,
-+					      psDRIFence))
-+		{
-+			__driUtilMessage("%s: Server wait sync failed",
-+					 __func__);
-+		}
-+	}
++   return DRISUPServerWaitSync(psPVRContext->psDRISUPContext, pvFence, uFlags);
 +}
 +
-+static unsigned PVRDRIGetFenceCapabilitiesEXT(__DRIscreen *psDRIScreen)
++static unsigned int
++PVRDRIGetFenceCapabilitiesEXT(__DRIscreen *psDRIScreen)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(psDRIScreen);
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
 +
-+	return PVRDRIGetFenceCapabilitiesImpl(psPVRScreen->psImpl);
++   return DRISUPGetFenceCapabilities(psPVRScreen->psDRISUPScreen);
 +}
 +
-+static void *PVRDRICreateFenceFdEXT(__DRIcontext *psDRIContext, int iFd)
++static void *
++PVRDRICreateFenceFdEXT(__DRIcontext *psDRIContext, int iFD)
 +{
-+	PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
-+	PVRDRIScreen *psPVRScreen = psPVRContext->psPVRScreen;
++   PVRDRIContext *psPVRContext = psDRIContext->driverPrivate;
 +
-+	return PVRDRICreateFenceFdImpl(psPVRContext->eAPI,
-+				       psPVRScreen->psImpl,
-+				       psPVRContext->psImpl,
-+				       iFd);
++   return DRISUPCreateFenceFD(psPVRContext->psDRISUPContext, iFD);
 +}
 +
-+static int PVRDRIGetFenceFdEXT(__DRIscreen *psDRIScreen, void *psDRIFence)
++static int
++PVRDRIGetFenceFdEXT(__DRIscreen *psDRIScreen, void *pvFence)
 +{
-+	(void)psDRIScreen;
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
 +
-+	return PVRDRIGetFenceFdImpl(psDRIFence);
++   return DRISUPGetFenceFD(psPVRScreen->psDRISUPScreen, pvFence);
 +}
 +
-+const __DRI2fenceExtension pvrDRIFenceExtension =
++static void *
++PVRDRIGetFenceFromClEventEXT(__DRIscreen *psDRIScreen, intptr_t iClEvent)
 +{
-+	.base				= { .name = __DRI2_FENCE, .version = PVR_DRI2_FENCE_VERSION },
-+	.create_fence			= PVRDRICreateFenceEXT,
-+	/* Not currently supported */
-+	.get_fence_from_cl_event	= NULL,
-+	.destroy_fence			= PVRDRIDestroyFenceEXT,
-+	.client_wait_sync		= PVRDRIClientWaitSyncEXT,
-+	.server_wait_sync		= PVRDRIServerWaitSyncEXT,
-+	.get_capabilities		= PVRDRIGetFenceCapabilitiesEXT,
-+	.create_fence_fd		= PVRDRICreateFenceFdEXT,
-+	.get_fence_fd			= PVRDRIGetFenceFdEXT,
++   PVRDRIScreen *psPVRScreen = psDRIScreen->driverPrivate;
++
++   return DRISUPGetFenceFromCLEvent(psPVRScreen->psDRISUPScreen, iClEvent);
++}
++
++__DRI2fenceExtension pvrDRIFenceExtension = {
++   .base = {
++      .name = __DRI2_FENCE,
++      .version = PVR_DRI2_FENCE_VERSION,
++   },
++   .create_fence = PVRDRICreateFenceEXT,
++   .get_fence_from_cl_event = PVRDRIGetFenceFromClEventEXT,
++   .destroy_fence = PVRDRIDestroyFenceEXT,
++   .client_wait_sync = PVRDRIClientWaitSyncEXT,
++   .server_wait_sync = PVRDRIServerWaitSyncEXT,
++   .get_capabilities = PVRDRIGetFenceCapabilitiesEXT,
++   .create_fence_fd = PVRDRICreateFenceFdEXT,
++   .get_fence_fd = PVRDRIGetFenceFdEXT,
 +};
-+#endif /* defined(__DRI2_FENCE) */
++
++static void
++PVRDRISetDamageRegion(__DRIdrawable *psDRIDrawable,
++                      unsigned int uNRects, int *piRects)
++{
++   PVRDRIDrawable *psPVRDrawable = psDRIDrawable->driverPrivate;
++
++   DRISUPSetDamageRegion(psPVRDrawable->psDRISUPDrawable, uNRects, piRects);
++}
++
++#if defined(__DRI2_BUFFER_DAMAGE)
++const __DRI2bufferDamageExtension pvrDRIbufferDamageExtension = {
++   .base = {
++      .name = __DRI2_BUFFER_DAMAGE,
++      .version = PVR_DRI2_BUFFER_DAMAGE_VERSION,
++   },
++   .set_damage_region = PVRDRISetDamageRegion,
++};
++#endif
 +
 +/*
 + * Extension lists
@@ -5583,71 +7257,64 @@
 + * NOTE: When adding a new screen extension asScreenExtensionVersionInfo
 + *       should also be updated accordingly.
 + */
-+static const __DRIextension *apsScreenExtensions[] =
-+{
-+	&pvrDRITexBufferExtension.base,
-+	&pvrDRI2FlushExtension.base,
-+	&pvrDRIImage.base,
-+	&pvrDRIRobustness.base,
-+	&pvrDRIRendererQueryExtension.base,
-+#if defined(__DRI2_FENCE)
-+	&pvrDRIFenceExtension.base,
++static const __DRIextension *apsScreenExtensions[] = {
++   &pvrDRITexBufferExtension.base,
++   &pvrDRI2FlushExtension.base,
++   &pvrDRIImage.base,
++   &pvrDRIRobustness.base,
++   &pvrDRIRendererQueryExtension.base,
++   &pvrDRIFenceExtension.base,
++#if defined(__DRI2_BUFFER_DAMAGE)
++   &pvrDRIbufferDamageExtension.base,
 +#endif
-+	&dri2ConfigQueryExtension.base,
-+	NULL
++   &dri2ConfigQueryExtension.base,
++   NULL
 +};
 +
-+static const __DRIextension asScreenExtensionVersionInfo[] =
-+{
-+	{ .name = __DRI_TEX_BUFFER, .version = __DRI_TEX_BUFFER_VERSION },
-+	{ .name = __DRI2_FLUSH, .version = __DRI2_FLUSH_VERSION },
-+	{ .name = __DRI_IMAGE, .version = __DRI_IMAGE_VERSION },
-+	{ .name = __DRI2_ROBUSTNESS, .version = __DRI2_ROBUSTNESS_VERSION },
-+#if defined(__DRI2_FENCE)
-+	{ .name = __DRI2_FENCE, .version = __DRI2_FENCE_VERSION },
++static const __DRIextension asScreenExtensionVersionInfo[] = {
++   {.name = __DRI_TEX_BUFFER,.version = __DRI_TEX_BUFFER_VERSION},
++   {.name = __DRI2_FLUSH,.version = __DRI2_FLUSH_VERSION},
++   {.name = __DRI_IMAGE,.version = __DRI_IMAGE_VERSION},
++   {.name = __DRI2_ROBUSTNESS,.version = __DRI2_ROBUSTNESS_VERSION},
++   {.name = __DRI2_RENDERER_QUERY,.version = __DRI2_RENDERER_QUERY_VERSION},
++   {.name = __DRI2_FENCE,.version = __DRI2_FENCE_VERSION},
++#if defined(__DRI2_BUFFER_DAMAGE)
++   {.name = __DRI2_BUFFER_DAMAGE,.version = __DRI2_BUFFER_DAMAGE_VERSION},
 +#endif
-+	{ .name = __DRI2_CONFIG_QUERY, .version = __DRI2_CONFIG_QUERY_VERSION },
-+	{ .name = NULL, .version = 0 },
++   {.name = __DRI2_CONFIG_QUERY,.version = __DRI2_CONFIG_QUERY_VERSION},
++   {.name = NULL,.version = 0},
 +};
 +
-+const __DRIextension **PVRDRIScreenExtensions(void)
++const __DRIextension **
++PVRDRIScreenExtensions(void)
 +{
-+	if (!PVRDRIBlitEGLImage_IsSupported())
-+	{
-+		pvrDRIImage.base.version = 8;
-+	}
-+	else if (!PVRDRIMapEGLImage_IsSupported())
-+	{
-+		pvrDRIImage.base.version = 11;
-+	}
-+	else if (!PVRDRIBufferGetOffset_IsSupported())
-+	{
-+		pvrDRIImage.base.version = 12;
-+	}
-+	else if (!PVRDRIBufferCreateWithModifiers_IsSupported())
-+	{
-+		pvrDRIImage.base.version = 13;
-+	}
-+	else if (!PVRDRIBufferCreateFromFdsWithModifier_IsSupported())
-+	{
-+		pvrDRIImage.base.version = 14;
-+	}
-+
-+	return apsScreenExtensions;
++   return apsScreenExtensions;
 +}
 +
-+const __DRIextension *PVRDRIScreenExtensionVersionInfo(void)
++const __DRIextension *
++PVRDRIScreenExtensionVersionInfo(void)
 +{
-+	return asScreenExtensionVersionInfo;
++   return asScreenExtensionVersionInfo;
 +}
-diff --git a/src/mesa/drivers/dri/pvr/pvrimage.c b/src/mesa/drivers/dri/pvr/pvrimage.c
++
++void
++PVRDRIAdjustExtensions(unsigned int uVersion, unsigned int uMinVersion)
++{
++   switch (uVersion) {
++   default:
++   case 1:
++   case 0:
++      /* The KHR_cl_event2 EGL extension is not supported */
++      pvrDRIFenceExtension.get_fence_from_cl_event = NULL;
++      break;
++   }
++}
+diff --git a/src/mesa/drivers/dri/pvr/pvrext_mod.c b/src/mesa/drivers/dri/pvr/pvrext_mod.c
 new file mode 100644
-index 00000000000..873c852cf9e
+index 00000000000..dfb5c79eeb4
 --- /dev/null
-+++ b/src/mesa/drivers/dri/pvr/pvrimage.c
-@@ -0,0 +1,1420 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
++++ b/src/mesa/drivers/dri/pvr/pvrext_mod.c
+@@ -0,0 +1,276 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -5672,1408 +7339,264 @@
 + * THE SOFTWARE.
 + */
 +
++#include <dlfcn.h>
 +#include <assert.h>
-+#include <xf86drm.h>
 +
 +#include "util/u_atomic.h"
-+#include "dri_util.h"
++#include "pvrdri_mod.h"
 +
-+#include "img_drm_fourcc.h"
-+#include "pvrdri.h"
-+#include "pvrimage.h"
-+#include "EGL/egl.h"
-+#include "EGL/eglext.h"
-+
-+struct PVRDRIImageShared
++static void
++PVRDRIFlushDrawableContext(struct DRISUPDrawable *psPVRDrawable,
++                           struct DRISUPContext *psPVRContext)
 +{
-+	int iRefCount;
++   struct DRISUPContext *psPVRDrawContext = psPVRDrawable->psPVRContext;
 +
-+	PVRDRIScreen *psPVRScreen;
-+
-+	PVRDRIImageType eType;
-+	const PVRDRIImageFormat *psFormat;
-+	IMG_YUV_COLORSPACE eColourSpace;
-+	IMG_YUV_CHROMA_INTERP eChromaUInterp;
-+	IMG_YUV_CHROMA_INTERP eChromaVInterp;
-+
-+	PVRDRIBufferImpl *psBuffer;
-+	IMGEGLImage *psEGLImage;
-+	PVRDRIEGLImageType eglImageType;
-+	struct PVRDRIImageShared *psAncestor;
-+};
-+
-+struct __DRIimageRec
-+{
-+	int iRefCount;
-+
-+	void *loaderPrivate;
-+
-+	struct PVRDRIImageShared *psShared;
-+
-+	IMGEGLImage *psEGLImage;
-+};
-+
-+
-+static struct PVRDRIImageShared *
-+CommonImageSharedSetup(PVRDRIScreen *psPVRScreen, PVRDRIImageType eType)
-+{
-+	struct PVRDRIImageShared *shared;
-+
-+	shared = calloc(1, sizeof(*shared));
-+	if (!shared)
-+	{
-+		return NULL;
-+	}
-+
-+	shared->psPVRScreen = psPVRScreen;
-+	shared->eType = eType;
-+	shared->iRefCount = 1;
-+
-+	assert(shared->eColourSpace == IMG_COLORSPACE_UNDEFINED &&
-+	       shared->eChromaUInterp == IMG_CHROMA_INTERP_UNDEFINED &&
-+	       shared->eChromaVInterp == IMG_CHROMA_INTERP_UNDEFINED);
-+
-+	return shared;
++   if (psPVRDrawContext) {
++      PVRDRIEGLFlushBuffers(psPVRDrawContext->eAPI,
++                            psPVRDrawContext->psPVRScreen->psImpl,
++                            psPVRDrawContext->psImpl,
++                            psPVRDrawable->psImpl,
++                            false,
++                            false, (psPVRDrawContext != psPVRContext));
++   }
 +}
 +
-+static void DestroyImageShared(struct PVRDRIImageShared *shared)
++void
++DRIMODSetTexBuffer2(struct DRISUPContext *psPVRContext, int iTarget,
++                    int iFormat, struct DRISUPDrawable *psPVRDrawable)
 +{
-+	int iRefCount = p_atomic_dec_return(&shared->iRefCount);
++   (void) iTarget;
++   (void) iFormat;
 +
-+	assert(iRefCount >= 0);
++   if (!psPVRDrawable->bInitialised) {
++      if (!PVRDRIDrawableInit(psPVRDrawable)) {
++         __driUtilMessage("%s: Couldn't initialise pixmap", __func__);
++         return;
++      }
++   }
 +
-+	if (iRefCount > 0)
-+	{
-+		return;
-+	}
-+
-+	switch (shared->eType)
-+	{
-+		case PVRDRI_IMAGE_FROM_NAMES:
-+		case PVRDRI_IMAGE_FROM_DMABUFS:
-+		case PVRDRI_IMAGE:
-+			if (shared->psBuffer)
-+			{
-+				PVRDRIBufferDestroy(shared->psBuffer);
-+			}
-+			assert(!shared->psAncestor);
-+			free(shared);
-+			return;
-+		case PVRDRI_IMAGE_FROM_EGLIMAGE:
-+			PVRDRIEGLImageDestroyExternal(shared->psPVRScreen->psImpl,
-+			                              shared->psEGLImage,
-+						      shared->eglImageType);
-+			free(shared);
-+			return;
-+		case PVRDRI_IMAGE_SUBIMAGE:
-+			if (shared->psBuffer)
-+			{
-+				PVRDRIBufferDestroy(shared->psBuffer);
-+			}
-+			if (shared->psAncestor)
-+			{
-+				DestroyImageShared(shared->psAncestor);
-+			}
-+			free(shared);
-+			return;
-+	}
-+
-+	assert(!"unknown image type");
-+	free(shared);
++   PVRDRIFlushDrawableContext(psPVRDrawable, psPVRContext);
++   PVRDRI2BindTexImage(psPVRContext->eAPI, psPVRContext->psPVRScreen->psImpl,
++                       psPVRContext->psImpl, psPVRDrawable->psImpl);
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageSharedFromEGLImage(__DRIscreen *screen,
-+                              IMGEGLImage *psEGLImage,
-+			      PVRDRIEGLImageType eglImageType)
++void
++DRIMODReleaseTexBuffer(struct DRISUPContext *psPVRContext, int iTarget,
++                       struct DRISUPDrawable *psPVRDrawable)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	struct PVRDRIImageShared *shared;
-+	PVRDRIBufferAttribs sAttribs;
-+	const PVRDRIImageFormat *psFormat;
++   (void) iTarget;
 +
-+	PVRDRIEGLImageGetAttribs(psEGLImage, &sAttribs);
-+
-+	psFormat = PVRDRIIMGPixelFormatToImageFormat(psPVRScreen,
-+						     sAttribs.ePixFormat);
-+	if (!psFormat)
-+	{
-+		return NULL;
-+	}
-+
-+	shared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE_FROM_EGLIMAGE);
-+	if (!shared)
-+	{
-+		return NULL;
-+	}
-+
-+	shared->psEGLImage = psEGLImage;
-+	shared->psFormat = psFormat;
-+	shared->eglImageType = eglImageType;
-+
-+	return shared;
++   PVRDRI2ReleaseTexImage(psPVRContext->eAPI,
++                          psPVRContext->psPVRScreen->psImpl,
++                          psPVRContext->psImpl, psPVRDrawable->psImpl);
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageSharedFromNames(__DRIscreen *screen,
-+			   int width,
-+			   int height,
-+			   int fourcc,
-+			   int *names,
-+			   int num_names,
-+			   int *strides,
-+			   int *offsets)
++void
++DRIMODFlush(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	struct PVRDRIImageShared *shared;
-+	const PVRDRIImageFormat *psFormat;
-+	unsigned auiWidthShift[DRI_PLANES_MAX];
-+	unsigned auiHeightShift[DRI_PLANES_MAX];
-+	int i;
++   struct DRISUPContext *psPVRContext = psPVRDrawable->psPVRContext;
 +
-+	psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, fourcc);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported DRI FourCC (fourcc = 0x%X)\n",
-+			     __func__, fourcc);
-+		return NULL;
-+	}
-+
-+	if (psFormat->uiNumPlanes < num_names)
-+	{
-+		errorMessage("%s: Unexpected number of names for DRI FourCC (names = %d, fourcc = 0x%X)\n",
-+			     __func__, num_names, fourcc);
-+		return NULL;
-+	}
-+
-+	for (i = 0; i < num_names; i++)
-+	{
-+		if (offsets[i] < 0)
-+		{
-+			errorMessage("%s: Offset %d unsupported (value = %d)\n",
-+				     __func__, i, offsets[i]);
-+			return NULL;
-+		}
-+
-+		auiWidthShift[i] = psFormat->sPlanes[i].uiWidthShift;
-+		auiHeightShift[i] = psFormat->sPlanes[i].uiHeightShift;
-+	}
-+
-+	shared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE_FROM_NAMES);
-+	if (!shared)
-+	{
-+		return NULL;
-+	}
-+
-+	shared->psBuffer = PVRDRIBufferCreateFromNames(psPVRScreen->psImpl,
-+						        width,
-+						        height,
-+						        num_names,
-+						        names,
-+						        strides,
-+						        offsets,
-+						        auiWidthShift,
-+						        auiHeightShift);
-+
-+	if (!shared->psBuffer)
-+	{
-+		errorMessage("%s: Failed to create buffer for shared image\n", __func__);
-+		goto ErrorDestroyImage;
-+	}
-+
-+	shared->psFormat = psFormat;
-+	shared->eColourSpace =
-+		PVRDRIToIMGColourSpace(psFormat,
-+				       __DRI_YUV_COLOR_SPACE_UNDEFINED,
-+				       __DRI_YUV_RANGE_UNDEFINED);
-+	shared->eChromaUInterp =
-+		PVRDRIChromaSittingToIMGInterp(psFormat,
-+					       __DRI_YUV_CHROMA_SITING_UNDEFINED);
-+	shared->eChromaVInterp =
-+		PVRDRIChromaSittingToIMGInterp(psFormat,
-+					       __DRI_YUV_CHROMA_SITING_UNDEFINED);
-+
-+	return shared;
-+
-+ErrorDestroyImage:
-+	DestroyImageShared(shared);
-+
-+	return NULL;
++   PVRDRIFlushBuffersForSwap(psPVRContext, psPVRDrawable);
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageSharedFromDmaBufs(__DRIscreen *screen,
-+			     int width,
-+			     int height,
-+			     int fourcc,
-+			     uint64_t modifier,
-+			     int *fds,
-+			     int num_fds,
-+			     int *strides,
-+			     int *offsets,
-+			     enum __DRIYUVColorSpace color_space,
-+			     enum __DRISampleRange sample_range,
-+			     enum __DRIChromaSiting horiz_siting,
-+			     enum __DRIChromaSiting vert_siting,
-+			     unsigned *error)
++void
++DRIMODInvalidate(struct DRISUPDrawable *psPVRDrawable)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	struct PVRDRIImageShared *shared;
-+	const PVRDRIImageFormat *psFormat;
-+	unsigned auiWidthShift[DRI_PLANES_MAX];
-+	unsigned auiHeightShift[DRI_PLANES_MAX];
-+	int i;
-+
-+	psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, fourcc);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported DRI FourCC (fourcc = 0x%X)\n",
-+			     __func__, fourcc);
-+		*error = __DRI_IMAGE_ERROR_BAD_MATCH;
-+		return NULL;
-+	}
-+
-+	/* When a modifier isn't specified, skip the validation */
-+	if (modifier != DRM_FORMAT_MOD_INVALID)
-+	{
-+		/*
-+		 * The modifier validation has to be done in this "higher" level
-+		 * function instead of pvr_dri_support. The support for
-+		 * modifiers is done on per format basis, but there is no way
-+		 * to pass the format information down to the plane creation API
-+		 * in pvr_dri_support.
-+		 */
-+		if (!PVRDRIValidateImageModifier(psPVRScreen, fourcc, modifier))
-+		{
-+			errorMessage("%s: Unsupported mod (fmt = %#x, mod = %"PRIx64")\n",
-+				     __func__, fourcc, modifier);
-+			*error = __DRI_IMAGE_ERROR_BAD_MATCH;
-+			return NULL;
-+		}
-+	}
-+
-+	if (psFormat->uiNumPlanes < num_fds)
-+	{
-+		errorMessage("%s: Unexpected number of fds for format (fds = %d, fourcc = 0x%X)\n",
-+			     __func__, num_fds, fourcc);
-+		*error = __DRI_IMAGE_ERROR_BAD_MATCH;
-+		return NULL;
-+	}
-+
-+	for (i = 0; i < num_fds; i++)
-+	{
-+		if (offsets[i] < 0)
-+		{
-+			errorMessage("%s: Offset %d unsupported (value = %d)\n",
-+				     __func__, i, offsets[i]);
-+			*error = __DRI_IMAGE_ERROR_BAD_ACCESS;
-+			return NULL;
-+		}
-+
-+		auiWidthShift[i] = psFormat->sPlanes[i].uiWidthShift;
-+		auiHeightShift[i] = psFormat->sPlanes[i].uiHeightShift;
-+	}
-+
-+	shared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE_FROM_DMABUFS);
-+	if (!shared)
-+	{
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	shared->psBuffer = PVRDRIBufferCreateFromFdsWithModifier(psPVRScreen->psImpl,
-+								  width,
-+								  height,
-+								  modifier,
-+								  num_fds,
-+								  fds,
-+								  strides,
-+								  offsets,
-+								  auiWidthShift,
-+								  auiHeightShift);
-+
-+	if (!shared->psBuffer)
-+	{
-+		errorMessage("%s: Failed to create buffer for shared image\n", __func__);
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		goto ErrorDestroyImage;
-+	}
-+
-+	shared->psFormat = psFormat;
-+	shared->eColourSpace = PVRDRIToIMGColourSpace(psFormat, color_space, sample_range);
-+	shared->eChromaUInterp = PVRDRIChromaSittingToIMGInterp(psFormat, horiz_siting);
-+	shared->eChromaVInterp = PVRDRIChromaSittingToIMGInterp(psFormat, vert_siting);
-+
-+	return shared;
-+
-+ErrorDestroyImage:
-+	DestroyImageShared(shared);
-+
-+	return NULL;
++   if (psPVRDrawable->psPVRScreen->bUseInvalidate)
++      p_atomic_inc(&psPVRDrawable->iInfoInvalid);
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageShared(__DRIscreen *screen,
-+                  int width,
-+                  int height,
-+                  int format,
-+                  unsigned int use,
-+                  int *piStride)
++void
++DRIMODFlushWithFlags(struct DRISUPContext *psPVRContext,
++                     struct DRISUPDrawable *psPVRDrawable,
++                     unsigned int uFlags, unsigned int uThrottleReason)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	struct PVRDRIImageShared *shared;
-+	const PVRDRIImageFormat *psFormat;
-+	unsigned int uiStride;
++   (void) uThrottleReason;
 +
-+	if ((use & __DRI_IMAGE_USE_CURSOR) && (use & __DRI_IMAGE_USE_SCANOUT))
-+	{
-+		return NULL;
-+	}
-+
-+	psFormat = PVRDRIFormatToImageFormat(psPVRScreen, format);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported DRI image format (format = 0x%X)\n",
-+			     __func__, format);
-+		return NULL;
-+	}
-+
-+	if (psFormat->uiNumPlanes != 1)
-+	{
-+		errorMessage("%s: Only single plane formats are supported (format 0x%X has %u planes)\n",
-+			     __func__, format, psFormat->uiNumPlanes);
-+		return NULL;
-+	}
-+
-+	shared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE);
-+	if (!shared)
-+	{
-+		return NULL;
-+	}
-+
-+	shared->psBuffer =
-+		PVRDRIBufferCreate(psPVRScreen->psImpl,
-+				   width,
-+				   height,
-+				   PVRDRIPixFmtGetBPP(psFormat->eIMGPixelFormat),
-+				   use,
-+				   &uiStride);
-+	if (!shared->psBuffer)
-+	{
-+		errorMessage("%s: Failed to create buffer\n", __func__);
-+		goto ErrorDestroyImage;
-+	}
-+
-+	shared->psFormat = psFormat;
-+
-+	*piStride = uiStride;
-+
-+	return shared;
-+
-+ErrorDestroyImage:
-+	DestroyImageShared(shared);
-+
-+	return NULL;
++   if ((uFlags & PVRDRI_FLUSH_DRAWABLE) != 0) {
++      PVRDRIFlushBuffersForSwap(psPVRContext, psPVRDrawable);
++   } else if ((uFlags & PVRDRI_FLUSH_CONTEXT) != 0) {
++      /*
++       * PVRDRI_FLUSH__CONTEXT means "glFlush". Most callers also specify
++       * PVRDRI_FLUSH_DRAWABLE. An exception is GBM, which flushes after an
++       * unmap, when there doesn't appear to be a need to flush outstanding
++       * GPU operations.
++       */
++   }
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageSharedWithModifiers(__DRIscreen *screen,
-+			       int width,
-+			       int height,
-+			       int format,
-+			       const uint64_t *modifiers,
-+			       unsigned int modifier_count,
-+			       int *piStride)
++int
++DRIMODQueryRendererInteger(struct DRISUPScreen *psPVRScreen, int iAttribute,
++                           unsigned int *puValue)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	struct PVRDRIImageShared *shared;
-+	const PVRDRIImageFormat *psFormat;
-+	unsigned int uiStride;
++   (void) psPVRScreen;
 +
-+	psFormat = PVRDRIFormatToImageFormat(psPVRScreen, format);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported DRI image format (format = 0x%X)\n",
-+			     __func__, format);
-+		return NULL;
-+	}
-+
-+	shared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE);
-+	if (!shared)
-+	{
-+		return NULL;
-+	}
-+
-+	shared->psBuffer = PVRDRIBufferCreateWithModifiers(psPVRScreen->psImpl,
-+							   width,
-+							   height,
-+							   psFormat->iDRIFourCC,
-+							   psFormat->eIMGPixelFormat,
-+							   modifiers,
-+							   modifier_count,
-+							   &uiStride);
-+	if (!shared->psBuffer)
-+	{
-+		errorMessage("%s: Failed to create buffer\n", __func__);
-+		goto ErrorDestroyImage;
-+	}
-+
-+	shared->psFormat = psFormat;
-+
-+	*piStride = uiStride;
-+
-+	return shared;
-+
-+ErrorDestroyImage:
-+	DestroyImageShared(shared);
-+
-+	return NULL;
++   switch (iAttribute) {
++   case PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY:
++      puValue[0] = 0;
++      puValue[0] |= PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_HIGH;
++      puValue[0] |= PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_MEDIUM;
++      puValue[0] |= PVRDRI_RENDERER_HAS_CONTEXT_PRIORITY_LOW;
++      return 0;
++   case PVRDRI_RENDERER_HAS_FRAMEBUFFER_SRGB:
++      puValue[0] = 1;
++      return 0;
++   default:
++      return -1;
++   }
 +}
 +
-+static struct PVRDRIImageShared *RefImageShared(struct PVRDRIImageShared *shared)
++int
++DRIMODQueryRendererString(struct DRISUPScreen *psPVRScreen, int iAttribute,
++                          const char **ppszValue)
 +{
-+	int iRefCount = p_atomic_inc_return(&shared->iRefCount);
++   (void) psPVRScreen;
++   (void) iAttribute;
++   (void) ppszValue;
 +
-+	(void)iRefCount;
-+	assert(iRefCount > 1);
-+
-+	return shared;
++   return -1;
 +}
 +
-+static struct PVRDRIImageShared *
-+CreateImageSharedForSubImage(struct PVRDRIImageShared *psParent, int plane)
++void *
++DRIMODCreateFence(struct DRISUPContext *psPVRContext)
 +{
-+	struct PVRDRIImageShared *shared;
-+	struct PVRDRIImageShared *psAncestor;
-+	PVRDRIBufferImpl *psBuffer = NULL;
-+
-+	/* Sub-images represent a single plane in the parent image */
-+	if (!psParent->psBuffer)
-+	{
-+		return NULL;
-+	}
-+
-+	/*
-+	 * The ancestor image is the owner of the original buffer that will
-+	 * back the new image. The parent image may be a child of that image
-+	 * itself. The ancestor image must not be destroyed until all the
-+	 * child images that refer to it have been destroyed. A reference
-+	 * will be taken on the ancestor to ensure that is the case.
-+	 * We must distinguish between the parent's buffer and the ancestor's
-+	 * buffer. For example, plane 0 in the parent is not necessarily plane
-+	 * 0 in the ancestor.
-+	 */
-+	psAncestor = psParent;
-+	if (psAncestor->psAncestor)
-+	{
-+		psAncestor = psAncestor->psAncestor;
-+
-+		assert(!psAncestor->psAncestor);
-+	}
-+
-+	psBuffer = PVRDRISubBufferCreate(psParent->psPVRScreen->psImpl,
-+					 psParent->psBuffer,
-+					 plane);
-+	/*
-+	 * Older versions of PVR DRI Support don't support
-+	 * PVRDRISubBufferCreate.
-+	 */
-+	if (!psBuffer)
-+	{
-+		return NULL;
-+	}
-+
-+	shared = CommonImageSharedSetup(NULL, PVRDRI_IMAGE_SUBIMAGE);
-+	if (!shared)
-+	{
-+		goto ErrorDestroyBuffer;
-+	}
-+
-+	shared->psAncestor = RefImageShared(psAncestor);
-+	shared->psBuffer = psBuffer;
-+	shared->psPVRScreen = psParent->psPVRScreen;
-+
-+	shared->psFormat = PVRDRIIMGPixelFormatToImageFormat(psParent->psPVRScreen,
-+							     psParent->psFormat->sPlanes[plane].eIMGPixelFormat);
-+	assert(shared->psFormat);
-+
-+	return shared;
-+
-+ErrorDestroyBuffer:
-+	PVRDRIBufferDestroy(psBuffer);
-+	return NULL;
++   return PVRDRICreateFenceImpl(psPVRContext->eAPI,
++                                psPVRContext->psPVRScreen->psImpl,
++                                psPVRContext->psImpl);
 +}
 +
-+static __DRIimage *CommonImageSetup(void *loaderPrivate)
++void
++DRIMODDestroyFence(struct DRISUPScreen *psPVRScreen, void *pvFence)
 +{
-+	__DRIimage *image;
++   (void) psPVRScreen;
 +
-+	image = calloc(1, sizeof(*image));
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	image->loaderPrivate = loaderPrivate;
-+	image->iRefCount = 1;
-+
-+	return image;
++   PVRDRIDestroyFenceImpl(pvFence);
 +}
 +
-+void PVRDRIDestroyImage(__DRIimage *image)
++bool
++DRIMODClientWaitSync(struct DRISUPContext *psPVRContext, void *pvFence,
++                     unsigned int uFlags, uint64_t uTimeout)
 +{
-+	int iRefCount = p_atomic_dec_return(&image->iRefCount);
++   bool bFlushCommands = (uFlags & PVRDRI_FENCE_FLAG_FLUSH_COMMANDS);
++   bool bTimeout = (uTimeout != PVRDRI_FENCE_TIMEOUT_INFINITE);
 +
-+	assert(iRefCount >= 0);
++   if (psPVRContext && bFlushCommands) {
++      struct DRISUPDrawable *psPVRDrawable;
++      PVRDRIDrawableImpl *psDrawableImpl;
 +
-+	if (iRefCount > 0)
-+	{
-+		return;
-+	}
++      psPVRDrawable = psPVRContext->psPVRDrawable;
++      psDrawableImpl = psPVRDrawable ? psPVRDrawable->psImpl : NULL;
 +
-+	if (image->psShared)
-+	{
-+		DestroyImageShared(image->psShared);
-+	}
++      (void) PVRDRIEGLFlushBuffers(psPVRContext->eAPI,
++                                   psPVRContext->psPVRScreen->psImpl,
++                                   psPVRContext->psImpl,
++                                   psDrawableImpl, true, false, false);
++   }
 +
-+	PVRDRIEGLImageFree(image->psEGLImage);
-+
-+	free(image);
++   return PVRDRIClientWaitSyncImpl(PVRDRI_API_NONE, NULL, pvFence, false,
++                                   bTimeout, uTimeout);
 +}
 +
-+__DRIimage *PVRDRICreateImageFromName(__DRIscreen *screen,
-+				      int width, int height, int format,
-+				      int name, int pitch,
-+				      void *loaderPrivate)
++void
++DRIMODServerWaitSync(struct DRISUPContext *psPVRContext, void *pvFence,
++                     unsigned int uFlags)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	const PVRDRIImageFormat *psFormat;
-+	int iStride;
-+	int iOffset;
++   assert(uFlags == 0);
++   (void) uFlags;
 +
-+	psFormat = PVRDRIFormatToImageFormat(psPVRScreen, format);
-+	if (!psFormat)
-+	{
-+		errorMessage("%s: Unsupported DRI image format (format = 0x%X)\n",
-+			     __func__, format);
-+		return NULL;
-+	}
-+
-+	iStride = pitch * PVRDRIPixFmtGetBlockSize(psFormat->eIMGPixelFormat);
-+	iOffset = 0;
-+
-+	return PVRDRICreateImageFromNames(screen, width, height, psFormat->iDRIFourCC,
-+					  &name, 1, &iStride, &iOffset, loaderPrivate);
++   if (pvFence) {
++      if (!PVRDRIServerWaitSyncImpl(psPVRContext->eAPI,
++                                    psPVRContext->psImpl, pvFence)) {
++         __driUtilMessage("%s: Server wait sync failed", __func__);
++      }
++   }
 +}
 +
-+__DRIimage *PVRDRICreateImageFromRenderbuffer2(__DRIcontext *context,
-+					      int           renderbuffer,
-+                                              void         *loaderPrivate,
-+					      unsigned     *error)
++unsigned int
++DRIMODGetFenceCapabilities(struct DRISUPScreen *psPVRScreen)
 +{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+	__DRIscreen *screen = psPVRContext->psPVRScreen->psDRIScreen;
-+	unsigned e;
-+	IMGEGLImage *psEGLImage;
-+	__DRIimage *image;
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	psEGLImage = PVRDRIEGLImageCreate();
-+	if (!psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	e = PVRDRIGetImageSource(psPVRContext->eAPI,
-+	                         psPVRContext->psPVRScreen->psImpl,
-+	                         psPVRContext->psImpl,
-+	                         EGL_GL_RENDERBUFFER_KHR,
-+	                         (uintptr_t)renderbuffer,
-+	                         0,
-+	                         psEGLImage);
-+
-+	if (e != PVRDRI_IMAGE_ERROR_SUCCESS)
-+	{
-+		PVRDRIEGLImageFree(psEGLImage);
-+		PVRDRIDestroyImage(image);
-+
-+		*error = e;
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(psEGLImage, image);
-+	
-+	/*
-+	 * We can't destroy the image after this point, as the
-+	 * renderbuffer now has a reference to it.
-+	 */
-+	image->psShared = CreateImageSharedFromEGLImage(screen,
-+							psEGLImage,
-+							PVRDRI_EGLIMAGE_IMGEGL);
-+	if (!image->psShared)
-+	{
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageDup(image->psShared->psEGLImage);
-+	if (!image->psEGLImage)
-+	{
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	image->iRefCount++;
-+
-+	*error = __DRI_IMAGE_ERROR_SUCCESS;
-+	return image;
++   return PVRDRIGetFenceCapabilities(psPVRScreen->psImpl);
 +}
 +
-+__DRIimage *PVRDRICreateImageFromRenderbuffer(__DRIcontext *context,
-+                                              int           renderbuffer,
-+                                              void         *loaderPrivate)
++void *
++DRIMODCreateFenceFD(struct DRISUPContext *psPVRContext, int iFD)
 +{
-+	unsigned error;
-+
-+	return PVRDRICreateImageFromRenderbuffer2(context,
-+						  renderbuffer,
-+						  loaderPrivate,
-+						  &error);
++   return PVRDRICreateFenceFd(psPVRContext->eAPI,
++                              psPVRContext->psPVRScreen->psImpl,
++                              psPVRContext->psImpl, iFD);
 +}
 +
-+__DRIimage *PVRDRICreateImage(__DRIscreen *screen,
-+			      int width, int height, int format,
-+			      unsigned int use,
-+			      void *loaderPrivate)
++int
++DRIMODGetFenceFD(struct DRISUPScreen *psPVRScreen, void *pvFence)
 +{
-+	__DRIimage *image;
-+	int iStride;
++   (void) psPVRScreen;
 +
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psShared = CreateImageShared(screen, width, height, format, use, &iStride);
-+	if (!image->psShared)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageCreateFromBuffer(width, height, iStride,
-+							    image->psShared->psFormat->eIMGPixelFormat,
-+							    image->psShared->eColourSpace,
-+							    image->psShared->eChromaUInterp,
-+							    image->psShared->eChromaVInterp,
-+							    image->psShared->psBuffer);
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	return image;
++   return PVRDRIGetFenceFd(pvFence);
 +}
 +
-+__DRIimage *PVRDRICreateImageWithModifiers(__DRIscreen *screen,
-+					   int width, int height, int format,
-+					   const uint64_t *modifiers,
-+					   const unsigned int modifier_count,
-+					   void *loaderPrivate)
++unsigned int
++DRIMODGetNumAPIProcs(struct DRISUPScreen *psPVRScreen, PVRDRIAPIType eAPI)
 +{
-+	__DRIimage *image;
-+	int iStride;
++   (void) psPVRScreen;
 +
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psShared = CreateImageSharedWithModifiers(screen, width, height, format,
-+							 modifiers, modifier_count,
-+							 &iStride);
-+	if (!image->psShared)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageCreateFromBuffer(width, height, iStride,
-+							    image->psShared->psFormat->eIMGPixelFormat,
-+							    image->psShared->eColourSpace,
-+							    image->psShared->eChromaUInterp,
-+							    image->psShared->eChromaVInterp,
-+							    image->psShared->psBuffer);
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	return image;
++   return PVRDRIGetNumAPIFuncs(eAPI);
 +}
 +
-+GLboolean PVRDRIQueryImage(__DRIimage *image, int attrib, int *value_ptr)
++const char *
++DRIMODGetAPIProcName(struct DRISUPScreen *psPVRScreen, PVRDRIAPIType eAPI,
++                     unsigned int uIndex)
 +{
-+	struct PVRDRIImageShared *shared = image->psShared;
-+	PVRDRIBufferAttribs sAttribs;
-+	int value;
-+	uint64_t ulValue;
++   (void) psPVRScreen;
 +
-+	PVRDRIEGLImageGetAttribs(image->psEGLImage, &sAttribs);
-+
-+	if (attrib == __DRI_IMAGE_ATTRIB_HANDLE ||
-+	    attrib == __DRI_IMAGE_ATTRIB_NAME ||
-+	    attrib == __DRI_IMAGE_ATTRIB_FD ||
-+	    attrib == __DRI_IMAGE_ATTRIB_OFFSET)
-+	{
-+		if (!shared->psFormat)
-+		{
-+			return GL_FALSE;
-+		}
-+
-+		switch (shared->psFormat->iDRIComponents)
-+		{
-+			case __DRI_IMAGE_COMPONENTS_R:
-+			case __DRI_IMAGE_COMPONENTS_RG:
-+			case __DRI_IMAGE_COMPONENTS_RGB:
-+			case __DRI_IMAGE_COMPONENTS_RGBA:
-+#if defined(__DRI_IMAGE_COMPONENTS_EXTERNAL)
-+			case __DRI_IMAGE_COMPONENTS_EXTERNAL:
-+#endif
-+				break;
-+			default:
-+				return GL_FALSE;
-+		}
-+	}
-+
-+	switch (attrib)
-+	{
-+		case __DRI_IMAGE_ATTRIB_STRIDE:
-+			*value_ptr = sAttribs.uiStrideInBytes;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_HANDLE:
-+			value = PVRDRIBufferGetHandle(shared->psBuffer);
-+			if (value == -1)
-+			{
-+				return GL_FALSE;
-+			}
-+
-+			*value_ptr = value;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_NAME:
-+			value = PVRDRIBufferGetName(shared->psBuffer);
-+			if (value == -1)
-+			{
-+				return GL_FALSE;
-+			}
-+
-+			*value_ptr = value;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_FORMAT:
-+			if (!shared->psFormat)
-+			{
-+				return GL_FALSE;
-+			}
-+
-+			*value_ptr = shared->psFormat->iDRIFormat;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_WIDTH:
-+			*value_ptr = sAttribs.uiWidth;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_HEIGHT:
-+			*value_ptr = sAttribs.uiHeight;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_COMPONENTS:
-+			if (!shared->psFormat || !shared->psFormat->iDRIComponents)
-+			{
-+				return GL_FALSE;
-+			}
-+
-+			*value_ptr = shared->psFormat->iDRIComponents;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_FD:
-+			value = PVRDRIBufferGetFd(shared->psBuffer);
-+			if (value == -1)
-+			{
-+				return GL_FALSE;
-+			}
-+
-+			*value_ptr = value;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_FOURCC:
-+			*value_ptr = shared->psFormat->iDRIFourCC;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_NUM_PLANES:
-+			*value_ptr = (int)shared->psFormat->uiNumPlanes;
-+			break;
-+		case __DRI_IMAGE_ATTRIB_OFFSET:
-+			*value_ptr = PVRDRIBufferGetOffset(shared->psBuffer);
-+			break;
-+		case __DRI_IMAGE_ATTRIB_MODIFIER_LOWER:
-+			ulValue = PVRDRIBufferGetModifier(shared->psBuffer);
-+			*value_ptr = (int)(ulValue & 0xffffffff);
-+			break;
-+		case __DRI_IMAGE_ATTRIB_MODIFIER_UPPER:
-+			ulValue = PVRDRIBufferGetModifier(shared->psBuffer);
-+			*value_ptr = (int)((ulValue >> 32) & 0xffffffff);
-+			break;
-+		default:
-+			return GL_FALSE;
-+	}
-+
-+	return GL_TRUE;
++   return PVRDRIGetAPIFunc(eAPI, uIndex);
 +}
 +
-+__DRIimage *PVRDRIDupImage(__DRIimage *srcImage, void *loaderPrivate)
++void *
++DRIMODGetAPIProcAddress(struct DRISUPScreen *psPVRScreen, PVRDRIAPIType eAPI,
++                        unsigned int uIndex)
 +{
-+	__DRIimage *image;
++   const char *pszFunc;
++   void *pvHandle;
++   void *pvFunc;
++   const char *pszError;
 +
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
++   pszFunc = PVRDRIGetAPIFunc(eAPI, uIndex);
++   if (!pszFunc) {
++      __driUtilMessage("%s: No Proc for API %u at index %u",
++                       __func__, (unsigned int) eAPI, uIndex);
++      return NULL;
++   }
 +
-+	image->psShared = RefImageShared(srcImage->psShared);
++   pvHandle = PVRDRIEGLGetLibHandle(eAPI, psPVRScreen->psImpl);
++   if (!pvHandle) {
++      __driUtilMessage("%s: No library handle for API %u",
++                       __func__, (unsigned int) eAPI);
++      return NULL;
++   }
 +
-+	image->psEGLImage = PVRDRIEGLImageDup(srcImage->psEGLImage);
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
++   (void) dlerror();
++   pvFunc = dlsym(pvHandle, pszFunc);
++   pszError = dlerror();
++   if (pszError)
++      pvFunc = PVRDRIEGLGetProcAddress(eAPI, psPVRScreen->psImpl, pszFunc);
 +
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	return image;
++   return pvFunc;
 +}
 +
-+GLboolean PVRDRIValidateUsage(__DRIimage *image, unsigned int use)
++void
++DRIMODSetDamageRegion(struct DRISUPDrawable *psDRISUPDrawable,
++                      unsigned int uNRects, int *piRects)
 +{
-+	struct PVRDRIImageShared *shared = image->psShared;
-+	__DRIscreen *screen = shared->psPVRScreen->psDRIScreen;
-+
-+	if (use & (__DRI_IMAGE_USE_SCANOUT | __DRI_IMAGE_USE_CURSOR))
-+	{
-+		uint64_t modifier;
-+
-+		/*
-+		 * We are extra strict in this case as an application may ask for a
-+		 * handle so that the memory can be wrapped as a framebuffer/used as
-+		 * a cursor and this can only be done on a card node.
-+		 */
-+		if (drmGetNodeTypeFromFd(screen->fd) != DRM_NODE_PRIMARY)
-+		{
-+			return GL_FALSE;
-+		}
-+
-+		modifier = PVRDRIBufferGetModifier(shared->psBuffer);
-+
-+		if (modifier != DRM_FORMAT_MOD_INVALID &&
-+			modifier != DRM_FORMAT_MOD_LINEAR)
-+		{
-+			return GL_FALSE;
-+		}
-+	}
-+	else if (use & (__DRI_IMAGE_USE_SHARE))
-+	{
-+		/*
-+		 * We are less strict in this case as it's possible to share buffers
-+		 * using prime (but not flink) on a render node so we only need to know
-+		 * whether or not the fd belongs to the display.
-+		 */
-+		if (PVRDRIGetDeviceTypeFromFd(screen->fd) != PVRDRI_DEVICE_TYPE_DISPLAY)
-+		{
-+			return GL_FALSE;
-+		}
-+	}
-+
-+	return GL_TRUE;
++   (void) psDRISUPDrawable;
++   (void) uNRects;
++   (void) piRects;
 +}
-+
-+__DRIimage *PVRDRICreateImageFromNames(__DRIscreen *screen,
-+				       int width, int height, int fourcc,
-+				       int *names, int num_names,
-+				       int *strides, int *offsets,
-+				       void *loaderPrivate)
-+{
-+	__DRIimage *image;
-+	int iStride;
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psShared = CreateImageSharedFromNames(screen, width, height, fourcc,
-+						     names, num_names, strides, offsets);
-+	if (!image->psShared)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	if (image->psShared->psFormat->uiNumPlanes == 1)
-+	{
-+		iStride = strides[0];
-+	}
-+	else
-+	{
-+		iStride = width * PVRDRIPixFmtGetBlockSize(image->psShared->psFormat->eIMGPixelFormat);
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageCreateFromBuffer(width, height,
-+							    iStride,
-+							    image->psShared->psFormat->eIMGPixelFormat,
-+							    image->psShared->eColourSpace,
-+							    image->psShared->eChromaUInterp,
-+							    image->psShared->eChromaVInterp,
-+							    image->psShared->psBuffer);
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	return image;
-+}
-+
-+__DRIimage *PVRDRIFromPlanar(__DRIimage *srcImage, int plane,
-+			     void *loaderPrivate)
-+{
-+	__DRIimage *image;
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psShared = CreateImageSharedForSubImage(srcImage->psShared,
-+						       plane);
-+
-+	if (!image->psShared)
-+	{
-+		if (plane != 0)
-+		{
-+			errorMessage("%s: plane %d not supported\n",
-+				     __func__, plane);
-+		}
-+
-+		image->psShared = RefImageShared(srcImage->psShared);
-+
-+		image->psEGLImage = PVRDRIEGLImageDup(srcImage->psEGLImage);
-+	}
-+	else
-+	{
-+		image->psEGLImage = PVRDRIEGLImageCreateFromSubBuffer(
-+					image->psShared->psFormat->eIMGPixelFormat,
-+					image->psShared->psBuffer);
-+	}
-+
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	return image;
-+}
-+
-+__DRIimage *
-+PVRDRICreateImageFromTexture(__DRIcontext *context,
-+                             int glTarget,
-+                             unsigned texture,
-+                             int depth,
-+                             int level,
-+                             unsigned *error,
-+                             void *loaderPrivate)
-+{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+	__DRIscreen *screen = psPVRContext->psPVRScreen->psDRIScreen;
-+	IMGEGLImage *psEGLImage;
-+	__DRIimage *image;
-+	uint32_t eglTarget;
-+	unsigned e;
-+
-+	switch (glTarget)
-+	{
-+		case GL_TEXTURE_2D:
-+			eglTarget = EGL_GL_TEXTURE_2D_KHR;
-+			break;
-+		case GL_TEXTURE_CUBE_MAP:
-+			eglTarget = EGL_GL_TEXTURE_CUBE_MAP_POSITIVE_X_KHR + depth;
-+			break;
-+		default:
-+			errorMessage("%s: GL Target %d is not supported\n", __func__, glTarget);
-+			*error = __DRI_IMAGE_ERROR_BAD_PARAMETER;
-+			return NULL;
-+	}
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	psEGLImage = PVRDRIEGLImageCreate();
-+	if (!psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	e = PVRDRIGetImageSource(psPVRContext->eAPI,
-+	                         psPVRContext->psPVRScreen->psImpl,
-+	                         psPVRContext->psImpl,
-+	                         eglTarget,
-+	                         (uintptr_t)texture,
-+	                         (uint32_t)level,
-+	                         psEGLImage);
-+	*error = e;
-+
-+	if (e != PVRDRI_IMAGE_ERROR_SUCCESS)
-+	{
-+		PVRDRIEGLImageFree(psEGLImage);
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(psEGLImage, image);
-+
-+	/*
-+	 * We can't destroy the image after this point, as the
-+	 * texture now has a reference to it.
-+	 */
-+	image->psShared = CreateImageSharedFromEGLImage(screen,
-+							psEGLImage,
-+							PVRDRI_EGLIMAGE_IMGEGL);
-+	if (!image->psShared)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageDup(image->psShared->psEGLImage);
-+	if (!image->psEGLImage)
-+	{
-+		return NULL;
-+	}
-+
-+	image->iRefCount++;
-+
-+	return image;
-+}
-+
-+__DRIimage *PVRDRICreateImageFromFds(__DRIscreen *screen,
-+				     int width, int height, int fourcc,
-+				     int *fds, int num_fds,
-+				     int *strides, int *offsets,
-+				     void *loaderPrivate)
-+{
-+	unsigned error;
-+
-+	return PVRDRICreateImageFromDmaBufs(screen, width, height, fourcc,
-+					    fds, num_fds, strides, offsets,
-+					    __DRI_YUV_COLOR_SPACE_UNDEFINED,
-+					    __DRI_YUV_RANGE_UNDEFINED,
-+					    __DRI_YUV_CHROMA_SITING_UNDEFINED,
-+					    __DRI_YUV_CHROMA_SITING_UNDEFINED,
-+					    &error,
-+					    loaderPrivate);
-+}
-+
-+__DRIimage *
-+PVRDRICreateImageFromBuffer(__DRIcontext *context,
-+                            int target,
-+                            void *buffer,
-+                            unsigned *error,
-+                            void *loaderPrivate)
-+{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+	__DRIscreen *screen = psPVRContext->psPVRScreen->psDRIScreen;
-+	IMGEGLImage *psEGLImage;
-+	__DRIimage *image;
-+
-+	switch (target)
-+	{
-+#if defined(EGL_CL_IMAGE_IMG)
-+		case EGL_CL_IMAGE_IMG:
-+			break;
-+#endif
-+		default:
-+			errorMessage("%s: Target %d is not supported\n", __func__, target);
-+			*error = __DRI_IMAGE_ERROR_BAD_PARAMETER;
-+			return NULL;
-+	}
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		return NULL;
-+	}
-+
-+	psEGLImage = PVRDRIEGLImageCreate();
-+	if (!psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	*error = PVRDRIGetImageSource(PVRDRI_API_CL,
-+				      psPVRContext->psPVRScreen->psImpl,
-+				      psPVRContext->psImpl,
-+				      target,
-+				      (uintptr_t)buffer,
-+				      0,
-+				      psEGLImage);
-+	if (*error != __DRI_IMAGE_ERROR_SUCCESS)
-+	{
-+		PVRDRIEGLImageFree(psEGLImage);
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(psEGLImage, image);
-+
-+	/*
-+	 * We can't destroy the image after this point, as the
-+	 * OCL image now has a reference to it.
-+	 */
-+	image->psShared = CreateImageSharedFromEGLImage(screen,
-+							psEGLImage,
-+							PVRDRI_EGLIMAGE_IMGOCL);
-+	if (!image->psShared)
-+	{
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageDup(image->psShared->psEGLImage);
-+	if (!image->psEGLImage)
-+	{
-+		return NULL;
-+	}
-+
-+	image->iRefCount++;
-+
-+	return image;
-+}
-+
-+__DRIimage *PVRDRICreateImageFromDmaBufs2(__DRIscreen *screen,
-+					  int width, int height, int fourcc,
-+					  uint64_t modifier,
-+					  int *fds, int num_fds,
-+					  int *strides, int *offsets,
-+					  enum __DRIYUVColorSpace color_space,
-+					  enum __DRISampleRange sample_range,
-+					  enum __DRIChromaSiting horiz_siting,
-+					  enum __DRIChromaSiting vert_siting,
-+					  unsigned *error,
-+					  void *loaderPrivate)
-+{
-+	__DRIimage *image;
-+
-+	image = CommonImageSetup(loaderPrivate);
-+	if (!image)
-+	{
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	image->psShared = CreateImageSharedFromDmaBufs(screen, width, height, fourcc,
-+						       modifier,
-+						       fds, num_fds, strides, offsets,
-+						       color_space, sample_range,
-+						       horiz_siting, vert_siting,
-+						       error);
-+	if (!image->psShared)
-+	{
-+		PVRDRIDestroyImage(image);
-+		return NULL;
-+	}
-+
-+	image->psEGLImage = PVRDRIEGLImageCreateFromBuffer(width, height,
-+							    strides[0],
-+							    image->psShared->psFormat->eIMGPixelFormat,
-+							    image->psShared->eColourSpace,
-+							    image->psShared->eChromaUInterp,
-+							    image->psShared->eChromaVInterp,
-+							    image->psShared->psBuffer);
-+	if (!image->psEGLImage)
-+	{
-+		PVRDRIDestroyImage(image);
-+		*error = __DRI_IMAGE_ERROR_BAD_ALLOC;
-+		return NULL;
-+	}
-+
-+	PVRDRIEGLImageSetCallbackData(image->psEGLImage, image);
-+
-+	*error = __DRI_IMAGE_ERROR_SUCCESS;
-+
-+	return image;
-+}
-+
-+__DRIimage *PVRDRICreateImageFromDmaBufs(__DRIscreen *screen,
-+                                         int width, int height, int fourcc,
-+                                         int *fds, int num_fds,
-+                                         int *strides, int *offsets,
-+                                         enum __DRIYUVColorSpace color_space,
-+                                         enum __DRISampleRange sample_range,
-+                                         enum __DRIChromaSiting horiz_siting,
-+                                         enum __DRIChromaSiting vert_siting,
-+                                         unsigned *error,
-+                                         void *loaderPrivate)
-+{
-+	return PVRDRICreateImageFromDmaBufs2(screen,
-+					     width, height, fourcc,
-+					     DRM_FORMAT_MOD_INVALID,
-+					     fds, num_fds,
-+					     strides, offsets,
-+					     color_space,
-+					     sample_range,
-+					     horiz_siting,
-+					     vert_siting,
-+					     error,
-+					     loaderPrivate);
-+}
-+
-+void PVRDRIRefImage(__DRIimage *image)
-+{
-+	int iRefCount = p_atomic_inc_return(&image->iRefCount);
-+
-+	(void)iRefCount;
-+	assert(iRefCount > 1);
-+}
-+
-+void PVRDRIUnrefImage(__DRIimage *image)
-+{
-+	PVRDRIDestroyImage(image);
-+}
-+
-+PVRDRIImageType PVRDRIImageGetSharedType(__DRIimage *image)
-+{
-+	return image->psShared->eType;
-+}
-+
-+PVRDRIBufferImpl *PVRDRIImageGetSharedBuffer(__DRIimage *pImage)
-+{
-+	assert(pImage->psShared->eType != PVRDRI_IMAGE_FROM_EGLIMAGE);
-+
-+	return pImage->psShared->psBuffer;
-+}
-+
-+IMGEGLImage *PVRDRIImageGetSharedEGLImage(__DRIimage *pImage)
-+{
-+	assert(pImage->psShared->eType == PVRDRI_IMAGE_FROM_EGLIMAGE);
-+	return pImage->psShared->psEGLImage;
-+}
-+
-+IMGEGLImage *PVRDRIImageGetEGLImage(__DRIimage *pImage)
-+{
-+	return pImage->psEGLImage;
-+}
-+
-+__DRIimage *PVRDRIScreenGetDRIImage(void *hEGLImage)
-+{
-+	PVRDRIScreen *psPVRScreen = PVRDRIThreadGetCurrentScreen();
-+
-+	if (!psPVRScreen)
-+	{
-+		return NULL;
-+	}
-+
-+	return psPVRScreen->psDRIScreen->dri2.image->lookupEGLImage(
-+	      psPVRScreen->psDRIScreen,
-+	      hEGLImage,
-+	      psPVRScreen->psDRIScreen->loaderPrivate);
-+}
-+
-+void PVRDRIBlitImage(__DRIcontext *context,
-+		     __DRIimage *dst, __DRIimage *src,
-+		     int dstx0, int dsty0, int dstwidth, int dstheight,
-+		     int srcx0, int srcy0, int srcwidth, int srcheight,
-+		     int flush_flag)
-+{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+	bool res;
-+
-+	res = PVRDRIBlitEGLImage(psPVRContext->psPVRScreen->psImpl,
-+			psPVRContext->psImpl,
-+			dst->psEGLImage, dst->psShared->psBuffer,
-+			src->psEGLImage, src->psShared->psBuffer,
-+			dstx0, dsty0, dstwidth, dstheight,
-+			srcx0, srcy0, srcwidth, srcheight,
-+			flush_flag);
-+	
-+
-+	if (!res)
-+	{
-+		__driUtilMessage("%s: PVRDRIBlitEGLImage failed\n", __func__);
-+	}
-+}
-+
-+int PVRDRIGetCapabilities(__DRIscreen *screen)
-+{
-+	(void) screen;
-+
-+	return __DRI_IMAGE_CAP_GLOBAL_NAMES;
-+}
-+
-+void *PVRDRIMapImage(__DRIcontext *context, __DRIimage *image,
-+		    int x0, int y0, int width, int height,
-+		    unsigned int flags, int *stride, void **data)
-+{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+
-+	return PVRDRIMapEGLImage(psPVRContext->psPVRScreen->psImpl,
-+				 psPVRContext->psImpl,
-+				 image->psEGLImage, image->psShared->psBuffer,
-+				 x0, y0, width, height, flags, stride, data);
-+}
-+
-+void PVRDRIUnmapImage(__DRIcontext *context, __DRIimage *image, void *data)
-+{
-+	PVRDRIContext *psPVRContext = context->driverPrivate;
-+	bool res;
-+
-+	res = PVRDRIUnmapEGLImage(psPVRContext->psPVRScreen->psImpl,
-+			      psPVRContext->psImpl,
-+			      image->psEGLImage, image->psShared->psBuffer,
-+			      data);
-+	if (!res)
-+	{
-+		__driUtilMessage("%s: PVRDRIUnmapEGLImage failed\n", __func__);
-+	}
-+}
-diff --git a/src/mesa/drivers/dri/pvr/pvrimage.h b/src/mesa/drivers/dri/pvr/pvrimage.h
+diff --git a/src/mesa/drivers/dri/pvr/pvrimage_mod.c b/src/mesa/drivers/dri/pvr/pvrimage_mod.c
 new file mode 100644
-index 00000000000..9316ea3bedf
+index 00000000000..df4a7f4d6fb
 --- /dev/null
-+++ b/src/mesa/drivers/dri/pvr/pvrimage.h
-@@ -0,0 +1,131 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
++++ b/src/mesa/drivers/dri/pvr/pvrimage_mod.c
+@@ -0,0 +1,1282 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -7098,119 +7621,1270 @@
 + * THE SOFTWARE.
 + */
 +
-+#if !defined(__PVRIMAGE_H__)
-+#define __PVRIMAGE_H__
++#include <stdlib.h>
++#include <assert.h>
 +
-+#include "dri_support.h"
++#include "util/u_atomic.h"
++#include <xf86drm.h>
 +
-+__DRIimage *PVRDRICreateImageFromName(__DRIscreen *screen,
-+				      int width, int height, int format,
-+				      int name, int pitch,
-+				      void *loaderPrivate);
++#include "img_drm_fourcc.h"
++#include "pvrdri_mod.h"
 +
-+__DRIimage *PVRDRICreateImageFromRenderbuffer(__DRIcontext *context,
-+					      int renderbuffer,
-+					      void *loaderPrivate);
++struct PVRDRIImageShared {
++   int iRefCount;
 +
-+void PVRDRIDestroyImage(__DRIimage *image);
++   struct DRISUPScreen *psPVRScreen;
 +
-+__DRIimage *PVRDRICreateImage(__DRIscreen *screen,
-+			      int width, int height, int format,
-+			      unsigned int use,
-+			      void *loaderPrivate);
++   PVRDRIImageType eType;
++   const PVRDRIImageFormat *psFormat;
++   IMG_YUV_COLORSPACE eColourSpace;
++   IMG_YUV_CHROMA_INTERP eChromaUInterp;
++   IMG_YUV_CHROMA_INTERP eChromaVInterp;
 +
-+__DRIimage *PVRDRICreateImageWithModifiers(__DRIscreen *screen,
-+			      int width, int height, int format,
-+			      const uint64_t *modifiers,
-+			      const unsigned int modifier_count,
-+			      void *loaderPrivate);
++   PVRDRIBufferImpl *psBuffer;
++   IMGEGLImage *psEGLImage;
++   PVRDRIEGLImageType eglImageType;
++   struct PVRDRIImageShared *psAncestor;
++};
 +
-+GLboolean PVRDRIQueryImage(__DRIimage *image, int attrib, int *value);
++struct __DRIimageRec {
++   int iRefCount;
 +
-+__DRIimage *PVRDRIDupImage(__DRIimage *image, void *loaderPrivate);
++   void *pvLoaderPrivate;
 +
-+GLboolean PVRDRIValidateUsage(__DRIimage *image, unsigned int use);
++   struct PVRDRIImageShared *psShared;
 +
-+__DRIimage *PVRDRICreateImageFromNames(__DRIscreen *screen,
-+				       int width, int height, int fourcc,
-+				       int *names, int num_names,
-+				       int *strides, int *offsets,
-+				       void *loaderPrivate);
++   IMGEGLImage *psEGLImage;
++};
 +
-+__DRIimage *PVRDRIFromPlanar(__DRIimage *image, int plane,
-+			     void *loaderPrivate);
 +
-+__DRIimage *PVRDRICreateImageFromTexture(__DRIcontext *context,
-+					 int glTarget,
-+					 unsigned texture,
-+					 int depth,
-+					 int level,
-+					 unsigned *error,
-+					 void *loaderPrivate);
++static struct PVRDRIImageShared *
++CommonImageSharedSetup(struct DRISUPScreen *psPVRScreen,
++                       PVRDRIImageType eType)
++{
++   struct PVRDRIImageShared *psShared;
 +
-+__DRIimage *PVRDRICreateImageFromFds(__DRIscreen *screen,
-+				     int width, int height, int fourcc,
-+				     int *fds, int num_fds,
-+				     int *strides, int *offsets,
-+				     void *loaderPrivate);
++   psShared = calloc(1, sizeof(*psShared));
++   if (!psShared)
++      return NULL;
 +
-+__DRIimage *PVRDRICreateImageFromBuffer(__DRIcontext *context,
-+					int target,
-+					void *buffer,
-+					unsigned *error,
-+					void *loaderPrivate);
++   psShared->psPVRScreen = psPVRScreen;
++   psShared->eType = eType;
++   psShared->iRefCount = 1;
 +
-+__DRIimage *PVRDRICreateImageFromDmaBufs(__DRIscreen *screen,
-+                                         int width, int height, int fourcc,
-+                                         int *fds, int num_fds,
-+                                         int *strides, int *offsets,
-+                                         enum __DRIYUVColorSpace color_space,
-+                                         enum __DRISampleRange sample_range,
-+                                         enum __DRIChromaSiting horiz_siting,
-+                                         enum __DRIChromaSiting vert_siting,
-+                                         unsigned *error,
-+                                         void *loaderPrivate);
++   assert(psShared->eColourSpace == IMG_COLORSPACE_UNDEFINED &&
++          psShared->eChromaUInterp == IMG_CHROMA_INTERP_UNDEFINED &&
++          psShared->eChromaVInterp == IMG_CHROMA_INTERP_UNDEFINED);
 +
-+__DRIimage *PVRDRICreateImageFromDmaBufs2(__DRIscreen *screen,
-+					  int width, int height, int fourcc,
-+					  uint64_t modifier,
-+					  int *fds, int num_fds,
-+					  int *strides, int *offsets,
-+					  enum __DRIYUVColorSpace color_space,
-+					  enum __DRISampleRange sample_range,
-+					  enum __DRIChromaSiting horiz_siting,
-+					  enum __DRIChromaSiting vert_siting,
-+					  unsigned *error,
-+					  void *loaderPrivate);
++   return psShared;
++}
 +
-+void PVRDRIBlitImage(__DRIcontext *context,
-+		     __DRIimage *dst, __DRIimage *src,
-+		     int dstx0, int dsty0, int dstwidth, int dstheight,
-+		     int srcx0, int srcy0, int srcwidth, int srcheight,
-+		     int flush_flag);
++static void
++DestroyImageShared(struct PVRDRIImageShared *psShared)
++{
++   int iRefCount = p_atomic_dec_return(&psShared->iRefCount);
 +
-+int PVRDRIGetCapabilities(__DRIscreen *screen);
++   assert(iRefCount >= 0);
 +
-+void *PVRDRIMapImage(__DRIcontext *context, __DRIimage *image,
-+		    int x0, int y0, int width, int height,
-+		    unsigned int flags, int *stride, void **data);
++   if (iRefCount > 0)
++      return;
 +
-+void PVRDRIUnmapImage(__DRIcontext *context, __DRIimage *image, void *data);
++   switch (psShared->eType) {
++   case PVRDRI_IMAGE_FROM_NAMES:
++   case PVRDRI_IMAGE_FROM_DMABUFS:
++   case PVRDRI_IMAGE:
++      if (psShared->psBuffer)
++         PVRDRIBufferDestroy(psShared->psBuffer);
 +
-+__DRIimage *PVRDRICreateImageFromRenderbuffer2(__DRIcontext *context,
-+					       int renderbuffer,
-+					       void *loaderPrivate,
-+					       unsigned *error);
++      assert(!psShared->psAncestor);
++      break;
++   case PVRDRI_IMAGE_FROM_EGLIMAGE: {
++      PVRDRIScreenImpl *psScreenImpl;
 +
-+#endif /* !defined(__PVRIMAGE_H__) */
++      psScreenImpl = psShared->psPVRScreen->psImpl;
++
++      PVRDRIEGLImageDestroyExternal(psScreenImpl,
++                                    psShared->psEGLImage,
++                                    psShared->eglImageType);
++      break;
++   }
++   case PVRDRI_IMAGE_SUBIMAGE:
++      if (psShared->psBuffer)
++         PVRDRIBufferDestroy(psShared->psBuffer);
++
++      if (psShared->psAncestor)
++         DestroyImageShared(psShared->psAncestor);
++      break;
++   default:
++      errorMessage("%s: Unknown image type: %d",
++                   __func__, (int) psShared->eType);
++      break;
++   }
++
++   free(psShared);
++}
++
++static struct PVRDRIImageShared *
++CreateImageSharedFromEGLImage(struct DRISUPScreen *psPVRScreen,
++                              IMGEGLImage *psEGLImage,
++                              PVRDRIEGLImageType eglImageType)
++{
++   struct PVRDRIImageShared *psShared;
++   PVRDRIBufferAttribs sAttribs;
++   const PVRDRIImageFormat *psFormat;
++
++   PVRDRIEGLImageGetAttribs(psEGLImage, &sAttribs);
++
++   psFormat = PVRDRIIMGPixelFormatToImageFormat(psPVRScreen,
++                                                sAttribs.ePixFormat);
++   if (!psFormat)
++      return NULL;
++
++   psShared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE_FROM_EGLIMAGE);
++   if (!psShared)
++      return NULL;
++
++   psShared->psEGLImage = psEGLImage;
++   psShared->psFormat = psFormat;
++   psShared->eglImageType = eglImageType;
++
++   return psShared;
++}
++
++static struct PVRDRIImageShared *
++CreateImageSharedFromNames(struct DRISUPScreen *psPVRScreen,
++                           int iWidth, int iHeight, int iFourCC,
++                           int *piNames, int iNumNames,
++                           int *piStrides, int *piOffsets)
++{
++   struct PVRDRIImageShared *psShared;
++   const PVRDRIImageFormat *psFormat;
++   int aiPlaneNames[DRI_PLANES_MAX];
++   unsigned int auiWidthShift[DRI_PLANES_MAX];
++   unsigned int auiHeightShift[DRI_PLANES_MAX];
++   unsigned int i;
++
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat) {
++      errorMessage("%s: Unsupported DRI FourCC (fourcc = 0x%X)",
++                   __func__, iFourCC);
++      return NULL;
++   }
++
++   if (iNumNames != 1 && iNumNames != (int) psFormat->uiNumPlanes) {
++      errorMessage("%s: Unexpected number of names (%d) for fourcc "
++                   "(#%x) - expected 1 or %u",
++                   __func__, iNumNames, iFourCC, psFormat->uiNumPlanes);
++      return NULL;
++   }
++
++   for (i = 0; i < psFormat->uiNumPlanes; i++) {
++      if (piOffsets[i] < 0) {
++         errorMessage("%s: Offset %d unsupported (value = %d)",
++                      __func__, i, piOffsets[i]);
++         return NULL;
++      }
++
++      aiPlaneNames[i] = iNumNames == 1 ? piNames[0] : piNames[i];
++      auiWidthShift[i] = psFormat->sPlanes[i].uiWidthShift;
++      auiHeightShift[i] = psFormat->sPlanes[i].uiHeightShift;
++   }
++
++   psShared =
++      CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE_FROM_NAMES);
++   if (!psShared)
++      return NULL;
++
++   psShared->psBuffer = PVRDRIBufferCreateFromNames(psPVRScreen->psImpl,
++                                                    iWidth, iHeight,
++                                                    psFormat->uiNumPlanes,
++                                                    aiPlaneNames,
++                                                    piStrides, piOffsets,
++                                                    auiWidthShift,
++                                                    auiHeightShift);
++   if (!psShared->psBuffer) {
++      errorMessage("%s: Failed to create buffer for shared image",
++                   __func__);
++      goto ErrorDestroyImage;
++   }
++
++   psShared->psFormat = psFormat;
++   psShared->eColourSpace =
++      PVRDRIToIMGColourSpace(psFormat,
++                             PVRDRI_YUV_COLOR_SPACE_UNDEFINED,
++                             PVRDRI_YUV_RANGE_UNDEFINED);
++   psShared->eChromaUInterp =
++      PVRDRIChromaSittingToIMGInterp(psFormat,
++                                     PVRDRI_YUV_CHROMA_SITING_UNDEFINED);
++   psShared->eChromaVInterp =
++      PVRDRIChromaSittingToIMGInterp(psFormat,
++                                     PVRDRI_YUV_CHROMA_SITING_UNDEFINED);
++
++   return psShared;
++
++ErrorDestroyImage:
++   DestroyImageShared(psShared);
++
++   return NULL;
++}
++
++static struct PVRDRIImageShared *
++CreateImageSharedFromDMABufs(struct DRISUPScreen *psPVRScreen,
++                             int iWidth, int iHeight,
++                             int iFourCC, uint64_t uModifier,
++                             int *piFDs, int iNumFDs,
++                             int *piStrides, int *piOffsets,
++                             unsigned int uColorSpace,
++                             unsigned int uSampleRange,
++                             unsigned int uHorizSiting,
++                             unsigned int uVertSiting,
++                             unsigned int *puError)
++{
++   struct PVRDRIImageShared *psShared;
++   const PVRDRIImageFormat *psFormat;
++   int aiPlaneFDs[DRI_PLANES_MAX];
++   unsigned int auiWidthShift[DRI_PLANES_MAX];
++   unsigned int auiHeightShift[DRI_PLANES_MAX];
++   unsigned int i;
++
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat) {
++      errorMessage("%s: Unsupported DRI FourCC (fourcc = 0x%X)",
++                   __func__, iFourCC);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_MATCH;
++      return NULL;
++   }
++
++   /* When a modifier isn't specified, skip the validation */
++   if (uModifier != DRM_FORMAT_MOD_INVALID) {
++      /*
++       * The modifier validation has to be done in this "higher" level
++       * function instead of pvr_dri_support. The support for modifiers is
++       * done on per format basis, but there is no way to pass the format
++       * information down to the plane creation API in pvr_dri_support.
++       */
++      if (!PVRDRIValidateImageModifier(psPVRScreen, iFourCC, uModifier)) {
++         errorMessage("%s: Unsupported mod (fmt = %#x, mod = %#llx",
++                      __func__, iFourCC,
++                      (long long unsigned int) uModifier);
++         *puError = PVRDRI_IMAGE_ERROR_BAD_MATCH;
++         return NULL;
++      }
++   }
++
++   if (iNumFDs != 1 && iNumFDs != (int) psFormat->uiNumPlanes) {
++      errorMessage("%s: Unexpected number of FDs (%d) for fourcc "
++                   "(#%x) - expected 1 or %u",
++                   __func__, iNumFDs, iFourCC, psFormat->uiNumPlanes);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_MATCH;
++      return NULL;
++   }
++
++   for (i = 0; i < psFormat->uiNumPlanes; i++) {
++      if (piOffsets[i] < 0) {
++         errorMessage("%s: Offset %d unsupported (value = %d)",
++                      __func__, i, piOffsets[i]);
++         *puError = PVRDRI_IMAGE_ERROR_BAD_ACCESS;
++         return NULL;
++      }
++
++      aiPlaneFDs[i] = iNumFDs == 1 ? piFDs[0] : piFDs[i];
++      auiWidthShift[i] = psFormat->sPlanes[i].uiWidthShift;
++      auiHeightShift[i] = psFormat->sPlanes[i].uiHeightShift;
++   }
++
++   psShared = CommonImageSharedSetup(psPVRScreen,
++                                     PVRDRI_IMAGE_FROM_DMABUFS);
++   if (!psShared) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psShared->psBuffer =
++      PVRDRIBufferCreateFromFdsWithModifier(psPVRScreen->psImpl,
++                                            iWidth, iHeight, uModifier,
++                                            psFormat->uiNumPlanes, aiPlaneFDs,
++                                            piStrides, piOffsets,
++                                            auiWidthShift, auiHeightShift);
++   if (!psShared->psBuffer) {
++      errorMessage("%s: Failed to create buffer for shared image",
++                   __func__);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      goto ErrorDestroyImage;
++   }
++
++   psShared->psFormat = psFormat;
++   psShared->eColourSpace = PVRDRIToIMGColourSpace(psFormat, uColorSpace,
++                                                   uSampleRange);
++   psShared->eChromaUInterp = PVRDRIChromaSittingToIMGInterp(psFormat,
++                                                             uHorizSiting);
++   psShared->eChromaVInterp = PVRDRIChromaSittingToIMGInterp(psFormat,
++                                                             uVertSiting);
++
++   *puError = PVRDRI_IMAGE_ERROR_SUCCESS;
++
++   return psShared;
++
++ErrorDestroyImage:
++   DestroyImageShared(psShared);
++
++   return NULL;
++}
++
++static struct PVRDRIImageShared *
++CreateImageShared(struct DRISUPScreen *psPVRScreen, int iWidth, int iHeight,
++                  int iFourCC, unsigned int use, int *piStride)
++{
++   struct PVRDRIImageShared *psShared;
++   const PVRDRIImageFormat *psFormat;
++   unsigned int uStride;
++   unsigned int uBPP;
++
++   if ((use & PVDRI_BUFFER_USE_CURSOR)
++       && (use & PVDRI_BUFFER_USE_SCANOUT)) {
++      return NULL;
++   }
++
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat) {
++      errorMessage("%s: Unsupported DRI image format (format = 0x%X)",
++                   __func__, iFourCC);
++      return NULL;
++   }
++
++   if (psFormat->uiNumPlanes != 1) {
++      errorMessage("%s: Only single plane formats are supported (format 0x%X has %u planes)",
++          __func__, iFourCC, psFormat->uiNumPlanes);
++      return NULL;
++   }
++
++   uBPP = PVRDRIPixFmtGetBPP(psFormat->eIMGPixelFormat);
++
++   psShared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE);
++   if (!psShared)
++      return NULL;
++
++   psShared->psBuffer =
++      PVRDRIBufferCreate(psPVRScreen->psImpl, iWidth, iHeight, uBPP, use,
++                         &uStride);
++   if (!psShared->psBuffer) {
++      errorMessage("%s: Failed to create buffer", __func__);
++      goto ErrorDestroyImage;
++   }
++
++   psShared->psFormat = psFormat;
++
++   *piStride = uStride;
++
++   return psShared;
++
++ErrorDestroyImage:
++   DestroyImageShared(psShared);
++
++   return NULL;
++}
++
++static struct PVRDRIImageShared *
++CreateImageSharedWithModifiers(struct DRISUPScreen *psPVRScreen,
++                               int iWidth, int iHeight, int iFourCC,
++                               const uint64_t *puModifiers,
++                               unsigned int uModifierCount, int *piStride)
++{
++   struct PVRDRIImageShared *psShared;
++   const PVRDRIImageFormat *psFormat;
++   unsigned int uStride;
++
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat) {
++      errorMessage("%s: Unsupported DRI image format (format = 0x%X)",
++                   __func__, iFourCC);
++      return NULL;
++   }
++
++   psShared = CommonImageSharedSetup(psPVRScreen, PVRDRI_IMAGE);
++   if (!psShared)
++      return NULL;
++
++   psShared->psBuffer =
++      PVRDRIBufferCreateWithModifiers(psPVRScreen->psImpl, iWidth, iHeight,
++                                      psFormat->iDRIFourCC,
++                                      psFormat->eIMGPixelFormat,
++                                      puModifiers, uModifierCount, &uStride);
++   if (!psShared->psBuffer) {
++      errorMessage("%s: Failed to create buffer", __func__);
++      goto ErrorDestroyImage;
++   }
++
++   psShared->psFormat = psFormat;
++
++   *piStride = uStride;
++
++   return psShared;
++
++ErrorDestroyImage:
++   DestroyImageShared(psShared);
++
++   return NULL;
++}
++
++static struct PVRDRIImageShared *
++RefImageShared(struct PVRDRIImageShared *psShared)
++{
++   int iRefCount = p_atomic_inc_return(&psShared->iRefCount);
++
++   (void) iRefCount;
++   assert(iRefCount > 1);
++
++   return psShared;
++}
++
++static struct PVRDRIImageShared *
++CreateImageSharedForSubImage(struct PVRDRIImageShared *psParent, int iPlane)
++{
++   struct PVRDRIImageShared *psShared;
++   struct PVRDRIImageShared *psAncestor;
++   PVRDRIBufferImpl *psBuffer = NULL;
++   IMG_PIXFMT eIMGPixelFormat;
++
++   /* Sub-images represent a single plane in the parent image */
++   if (!psParent->psBuffer)
++      return NULL;
++
++   /*
++    * The ancestor image is the owner of the original buffer that will back
++    * the new image. The parent image may be a child of that image itself. The
++    * ancestor image must not be destroyed until all the child images that
++    * refer to it have been destroyed. A reference will be taken on the
++    * ancestor to ensure that is the case.  We must distinguish between the
++    * parent's buffer and the ancestor's buffer. For example, plane 0 in the
++    * parent is not necessarily plane 0 in the ancestor.
++    */
++   psAncestor = psParent;
++   if (psAncestor->psAncestor) {
++      psAncestor = psAncestor->psAncestor;
++
++      assert(!psAncestor->psAncestor);
++   }
++
++   psBuffer = PVRDRISubBufferCreate(psParent->psPVRScreen->psImpl,
++                                    psParent->psBuffer, iPlane);
++   if (!psBuffer)
++      return NULL;
++
++   psShared = CommonImageSharedSetup(NULL, PVRDRI_IMAGE_SUBIMAGE);
++   if (!psShared)
++      goto ErrorDestroyBuffer;
++
++   psShared->psAncestor = RefImageShared(psAncestor);
++   psShared->psBuffer = psBuffer;
++   psShared->psPVRScreen = psParent->psPVRScreen;
++
++   eIMGPixelFormat = psParent->psFormat->sPlanes[iPlane].eIMGPixelFormat;
++
++   psShared->psFormat =
++      PVRDRIIMGPixelFormatToImageFormat(psParent->psPVRScreen,
++                                        eIMGPixelFormat);
++
++   assert(psShared->psFormat);
++
++   return psShared;
++
++ErrorDestroyBuffer:
++   PVRDRIBufferDestroy(psBuffer);
++   return NULL;
++}
++
++static __DRIimage *
++CommonImageSetup(void *pvLoaderPrivate)
++{
++   __DRIimage *psImage;
++
++   psImage = calloc(1, sizeof(*psImage));
++   if (!psImage)
++      return NULL;
++
++   psImage->pvLoaderPrivate = pvLoaderPrivate;
++   psImage->iRefCount = 1;
++
++   return psImage;
++}
++
++void
++DRIMODDestroyImage(__DRIimage *psImage)
++{
++   int iRefCount = p_atomic_dec_return(&psImage->iRefCount);
++
++   assert(iRefCount >= 0);
++
++   if (iRefCount > 0)
++      return;
++
++   if (psImage->psShared)
++      DestroyImageShared(psImage->psShared);
++
++   PVRDRIEGLImageFree(psImage->psEGLImage);
++   free(psImage);
++}
++
++__DRIimage *
++DRIMODCreateImageFromName(struct DRISUPScreen *psPVRScreen,
++                          int iWidth, int iHeight, int iFourCC, int iName,
++                          int iPitch, void *pvLoaderPrivate)
++{
++   const PVRDRIImageFormat *psFormat;
++   int iStride;
++   int iOffset;
++
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat) {
++      errorMessage("%s: Unsupported DRI image FourCC (format = 0x%X)",
++                   __func__, iFourCC);
++      return NULL;
++   }
++
++   iStride = iPitch * PVRDRIPixFmtGetBlockSize(psFormat->eIMGPixelFormat);
++   iOffset = 0;
++
++   return DRIMODCreateImageFromNames(psPVRScreen, iWidth, iHeight, iFourCC,
++                                     &iName, 1, &iStride, &iOffset,
++                                     pvLoaderPrivate);
++}
++
++__DRIimage *
++DRIMODCreateImageFromRenderBuffer2(struct DRISUPContext *psPVRContext,
++                                   int iRenderBuffer, void *pvLoaderPrivate,
++                                   unsigned int *puError)
++{
++   struct DRISUPScreen *psPVRScreen = psPVRContext->psPVRScreen;
++   unsigned int uError;
++   IMGEGLImage *psEGLImage;
++   __DRIimage *psImage;
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psEGLImage = PVRDRIEGLImageCreate();
++   if (!psEGLImage) {
++      DRIMODDestroyImage(psImage);
++
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   uError = PVRDRIGetImageSource(psPVRContext->eAPI, psPVRScreen->psImpl,
++                                 psPVRContext->psImpl, PVRDRI_GL_RENDERBUFFER,
++                                 (uintptr_t) iRenderBuffer, 0, psEGLImage);
++   if (uError != PVRDRI_IMAGE_ERROR_SUCCESS) {
++      PVRDRIEGLImageFree(psEGLImage);
++      DRIMODDestroyImage(psImage);
++
++      *puError = uError;
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psEGLImage, psImage);
++
++   /*
++    * We can't destroy the image after this point, as the
++    * renderbuffer now has a reference to it.
++    */
++   psImage->psShared =
++      CreateImageSharedFromEGLImage(psPVRScreen, psEGLImage,
++                                    PVRDRI_EGLIMAGE_IMGEGL);
++   if (!psImage->psShared) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psImage->psEGLImage = PVRDRIEGLImageDup(psImage->psShared->psEGLImage);
++   if (!psImage->psEGLImage) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psImage->iRefCount++;
++
++   *puError = PVRDRI_IMAGE_ERROR_SUCCESS;
++   return psImage;
++}
++
++
++__DRIimage *
++DRIMODCreateImageFromRenderbuffer(struct DRISUPContext *psPVRContext,
++                                  int iRenderBuffer, void *pvLoaderPrivate)
++{
++   unsigned int uError;
++
++   return DRIMODCreateImageFromRenderBuffer2(psPVRContext, iRenderBuffer,
++                                             pvLoaderPrivate, &uError);
++}
++
++__DRIimage *
++DRIMODCreateImage(struct DRISUPScreen *psPVRScreen, int iWidth, int iHeight,
++                  int iFourCC, unsigned int uUse, void *pvLoaderPrivate)
++{
++   __DRIimage *psImage;
++   struct PVRDRIImageShared *psShared;
++   IMG_PIXFMT eIMGPixelFormat;
++   int iStride;
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage)
++      return NULL;
++
++   psShared = CreateImageShared(psPVRScreen, iWidth, iHeight, iFourCC, uUse,
++                                &iStride);
++   if (!psShared) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   psImage->psShared = psShared;
++   eIMGPixelFormat = psShared->psFormat->eIMGPixelFormat;
++
++   psImage->psEGLImage =
++      PVRDRIEGLImageCreateFromBuffer(iWidth, iHeight, iStride,
++                                     eIMGPixelFormat, psShared->eColourSpace,
++                                     psShared->eChromaUInterp,
++                                     psShared->eChromaVInterp,
++                                     psShared->psBuffer);
++   if (!psImage->psEGLImage) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psImage->psEGLImage, psImage);
++
++   return psImage;
++}
++
++__DRIimage *
++DRIMODCreateImageWithModifiers(struct DRISUPScreen *psPVRScreen,
++                               int iWidth, int iHeight, int iFourCC,
++                               const uint64_t *puModifiers,
++                               const unsigned int uModifierCount,
++                               void *pvLoaderPrivate)
++{
++   __DRIimage *psImage;
++   struct PVRDRIImageShared *psShared;
++   IMG_PIXFMT eIMGPixelFormat;
++   int iStride;
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage)
++      return NULL;
++
++   psShared = CreateImageSharedWithModifiers(psPVRScreen,
++                                             iWidth, iHeight, iFourCC,
++                                             puModifiers, uModifierCount,
++                                             &iStride);
++   if (!psShared) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   psImage->psShared = psShared;
++   eIMGPixelFormat = psShared->psFormat->eIMGPixelFormat;
++
++   psImage->psEGLImage =
++      PVRDRIEGLImageCreateFromBuffer(iWidth, iHeight, iStride,
++                                     eIMGPixelFormat, psShared->eColourSpace,
++                                     psShared->eChromaUInterp,
++                                     psShared->eChromaVInterp,
++                                     psShared->psBuffer);
++   if (!psImage->psEGLImage) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psImage->psEGLImage, psImage);
++
++   return psImage;
++}
++
++bool
++DRIMODQueryImage(__DRIimage *psImage, int attrib, int *value_ptr)
++{
++   struct PVRDRIImageShared *psShared = psImage->psShared;
++   PVRDRIBufferAttribs sAttribs;
++   int value;
++   uint64_t ulValue;
++
++   PVRDRIEGLImageGetAttribs(psImage->psEGLImage, &sAttribs);
++
++   if (attrib == PVRDRI_IMAGE_ATTRIB_HANDLE ||
++       attrib == PVRDRI_IMAGE_ATTRIB_NAME ||
++       attrib == PVRDRI_IMAGE_ATTRIB_FD ||
++       attrib == PVRDRI_IMAGE_ATTRIB_OFFSET) {
++      if (!psShared->psFormat)
++         return false;
++
++      switch (psShared->psFormat->iDRIComponents) {
++      case PVRDRI_IMAGE_COMPONENTS_R:
++      case PVRDRI_IMAGE_COMPONENTS_RG:
++      case PVRDRI_IMAGE_COMPONENTS_RGB:
++      case PVRDRI_IMAGE_COMPONENTS_RGBA:
++      case PVRDRI_IMAGE_COMPONENTS_EXTERNAL:
++         break;
++      default:
++         return false;
++      }
++   }
++
++   switch (attrib) {
++   case PVRDRI_IMAGE_ATTRIB_STRIDE:
++      *value_ptr = sAttribs.uiStrideInBytes;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_HANDLE:
++      value = PVRDRIBufferGetHandle(psShared->psBuffer);
++      if (value == -1)
++         return false;
++
++      *value_ptr = value;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_NAME:
++      value = PVRDRIBufferGetName(psShared->psBuffer);
++      if (value == -1)
++         return false;
++
++      *value_ptr = value;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_FORMAT:
++      /* The caller should use PVRDRI_IMAGE_ATTRIB_FOURCC, and convert. */
++      return false;
++   case PVRDRI_IMAGE_ATTRIB_WIDTH:
++      *value_ptr = sAttribs.uiWidth;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_HEIGHT:
++      *value_ptr = sAttribs.uiHeight;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_COMPONENTS:
++      if (!psShared->psFormat || !psShared->psFormat->iDRIComponents)
++         return false;
++
++      *value_ptr = psShared->psFormat->iDRIComponents;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_FD:
++      value = PVRDRIBufferGetFd(psShared->psBuffer);
++      if (value == -1)
++         return false;
++
++      *value_ptr = value;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_FOURCC:
++      *value_ptr = psShared->psFormat->iDRIFourCC;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_NUM_PLANES:
++      *value_ptr = (int) psShared->psFormat->uiNumPlanes;
++      break;
++   case PVRDRI_IMAGE_ATTRIB_OFFSET:
++      *value_ptr = PVRDRIBufferGetOffset(psShared->psBuffer);
++      break;
++   case PVRDRI_IMAGE_ATTRIB_MODIFIER_LOWER:
++      ulValue = PVRDRIBufferGetModifier(psShared->psBuffer);
++      *value_ptr = (int) (ulValue & 0xffffffff);
++      break;
++   case PVRDRI_IMAGE_ATTRIB_MODIFIER_UPPER:
++      ulValue = PVRDRIBufferGetModifier(psShared->psBuffer);
++      *value_ptr = (int) ((ulValue >> 32) & 0xffffffff);
++      break;
++   default:
++      return false;
++   }
++
++   return true;
++}
++
++__DRIimage *
++DRIMODDupImage(__DRIimage *psSrc, void *pvLoaderPrivate)
++{
++   __DRIimage *psDst;
++
++   psDst = CommonImageSetup(pvLoaderPrivate);
++   if (!psDst)
++      return NULL;
++
++   psDst->psShared = RefImageShared(psSrc->psShared);
++
++   psDst->psEGLImage = PVRDRIEGLImageDup(psSrc->psEGLImage);
++   if (!psDst->psEGLImage) {
++      DRIMODDestroyImage(psDst);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psDst->psEGLImage, psDst);
++
++   return psDst;
++}
++
++bool
++DRIMODValidateImageUsage(__DRIimage *psImage, unsigned int uUse)
++{
++   struct PVRDRIImageShared *psShared = psImage->psShared;
++
++   if (uUse & (PVDRI_BUFFER_USE_SCANOUT | PVDRI_BUFFER_USE_CURSOR)) {
++      uint64_t uModifier;
++
++      /*
++       * We are extra strict in this case as an application may ask for a
++       * handle so that the memory can be wrapped as a framebuffer/used as a
++       * cursor and this can only be done on a card node.
++       */
++      if (drmGetNodeTypeFromFd(psShared->psPVRScreen->iFD) != DRM_NODE_PRIMARY)
++         return false;
++
++      uModifier = PVRDRIBufferGetModifier(psShared->psBuffer);
++      if (uModifier != DRM_FORMAT_MOD_INVALID &&
++          uModifier != DRM_FORMAT_MOD_LINEAR)
++         return false;
++   } else if (uUse & (PVDRI_BUFFER_USE_SHARE)) {
++      /*
++       * We are less strict in this case as it's possible to share buffers
++       * using prime (but not flink) on a render node so we only need to know
++       * whether or not the FD belongs to the display.
++       */
++      if (PVRDRIGetDeviceTypeFromFd(psShared->psPVRScreen->iFD) !=
++          PVRDRI_DEVICE_TYPE_DISPLAY)
++         return false;
++   }
++
++   return true;
++}
++
++__DRIimage *
++DRIMODCreateImageFromNames(struct DRISUPScreen *psPVRScreen,
++                           int iWidth, int iHeight, int iFourCC,
++                           int *piNames, int iNumNames,
++                           int *piStrides, int *piOffsets,
++                           void *pvLoaderPrivate)
++{
++   __DRIimage *psImage;
++   struct PVRDRIImageShared *psShared;
++   IMG_PIXFMT eIMGPixelFormat;
++   int iStride;
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage)
++      return NULL;
++
++   psShared = CreateImageSharedFromNames(psPVRScreen,
++                                         iWidth, iHeight, iFourCC,
++                                         piNames, iNumNames,
++                                         piStrides, piOffsets);
++   if (!psShared) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   psImage->psShared = psShared;
++   eIMGPixelFormat = psShared->psFormat->eIMGPixelFormat;
++
++   if (psShared->psFormat->uiNumPlanes == 1)
++      iStride = piStrides[0];
++   else
++      iStride = iWidth * PVRDRIPixFmtGetBlockSize(eIMGPixelFormat);
++
++   psImage->psEGLImage =
++      PVRDRIEGLImageCreateFromBuffer(iWidth, iHeight, iStride,
++                                     eIMGPixelFormat, psShared->eColourSpace,
++                                     psShared->eChromaUInterp,
++                                     psShared->eChromaVInterp,
++                                     psShared->psBuffer);
++   if (!psImage->psEGLImage) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psImage->psEGLImage, psImage);
++
++   return psImage;
++}
++
++__DRIimage *
++DRIMODFromPlanar(__DRIimage *psSrc, int iPlane, void *pvLoaderPrivate)
++{
++   __DRIimage *psDst;
++   struct PVRDRIImageShared *psShared;
++
++   psDst = CommonImageSetup(pvLoaderPrivate);
++   if (!psDst)
++      return NULL;
++
++   psShared = CreateImageSharedForSubImage(psSrc->psShared, iPlane);
++   if (!psShared) {
++      if (iPlane != 0) {
++         errorMessage("%s: plane %d not supported", __func__, iPlane);
++      } else {
++         psDst->psShared = RefImageShared(psSrc->psShared);
++         psDst->psEGLImage = PVRDRIEGLImageDup(psSrc->psEGLImage);
++      }
++   } else {
++      IMG_PIXFMT eIMGPixelFormat;
++
++      psDst->psShared = psShared;
++      eIMGPixelFormat = psShared->psFormat->eIMGPixelFormat;
++
++      psDst->psEGLImage =
++         PVRDRIEGLImageCreateFromSubBuffer(eIMGPixelFormat, psShared->psBuffer);
++   }
++
++   if (!psDst->psEGLImage) {
++      DRIMODDestroyImage(psDst);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psDst->psEGLImage, psDst);
++
++   return psDst;
++}
++
++__DRIimage *
++DRIMODCreateImageFromTexture(struct DRISUPContext *psPVRContext, int iTarget,
++                             unsigned int uTexture, int iDepth, int iLevel,
++                             unsigned int *puError, void *pvLoaderPrivate)
++{
++   IMGEGLImage *psEGLImage;
++   __DRIimage *psImage;
++   uint32_t iEGLTarget;
++   unsigned int uError;
++
++   switch (iTarget) {
++   case PVRDRI_GL_TEXTURE_2D:
++      iEGLTarget = iTarget;
++      break;
++   case PVRDRI_GL_TEXTURE_CUBE_MAP_POSITIVE_X:
++      iEGLTarget = iTarget + iDepth;
++      break;
++   default:
++      errorMessage("%s: EGL GL texture %d is not supported",
++                   __func__, iTarget);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_PARAMETER;
++      return NULL;
++   }
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage)
++      return NULL;
++
++   psEGLImage = PVRDRIEGLImageCreate();
++   if (!psEGLImage) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   uError = PVRDRIGetImageSource(psPVRContext->eAPI,
++                                 psPVRContext->psPVRScreen->psImpl,
++                                 psPVRContext->psImpl, iEGLTarget, uTexture,
++                                 iLevel, psEGLImage);
++   *puError = uError;
++
++   if (uError != PVRDRI_IMAGE_ERROR_SUCCESS) {
++      PVRDRIEGLImageFree(psEGLImage);
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psEGLImage, psImage);
++
++   /*
++    * We can't destroy the image after this point, as the texture now has a
++    * reference to it.
++    */
++   psImage->psShared =
++      CreateImageSharedFromEGLImage(psPVRContext->psPVRScreen, psEGLImage,
++                                    PVRDRI_EGLIMAGE_IMGEGL);
++   if (!psImage->psShared)
++      return NULL;
++
++   psImage->psEGLImage = PVRDRIEGLImageDup(psImage->psShared->psEGLImage);
++   if (!psImage->psEGLImage)
++      return NULL;
++
++   psImage->iRefCount++;
++
++   return psImage;
++}
++
++__DRIimage *
++DRIMODCreateImageFromFDs(struct DRISUPScreen *psPVRScreen,
++                         int iWidth, int iHeight, int iFourCC,
++                         int *piFDs, int iNumFDs,
++                         int *piStrides, int *piOffsets,
++                         void *pvLoaderPrivate)
++{
++   unsigned int uError;
++
++   return DRIMODCreateImageFromDMABufs(psPVRScreen, iWidth, iHeight, iFourCC,
++                                       piFDs, iNumFDs, piStrides, piOffsets,
++                                       PVRDRI_YUV_COLOR_SPACE_UNDEFINED,
++                                       PVRDRI_YUV_RANGE_UNDEFINED,
++                                       PVRDRI_YUV_CHROMA_SITING_UNDEFINED,
++                                       PVRDRI_YUV_CHROMA_SITING_UNDEFINED,
++                                       &uError, pvLoaderPrivate);
++}
++
++__DRIimage *
++DRIMODCreateImageFromBuffer(struct DRISUPContext *psPVRContext, int iTarget,
++                            void *pvBuffer, unsigned int *puError,
++                            void *pvLoaderPrivate)
++{
++   IMGEGLImage *psEGLImage;
++   __DRIimage *psImage;
++
++   switch (iTarget) {
++   case PVRDRI_CL_IMAGE_IMG:
++      break;
++   default:
++      errorMessage("%s: Target %d is not supported", __func__, iTarget);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_PARAMETER;
++      return NULL;
++   }
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psEGLImage = PVRDRIEGLImageCreate();
++   if (!psEGLImage) {
++      DRIMODDestroyImage(psImage);
++
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   *puError = PVRDRIGetImageSource(PVRDRI_API_CL,
++                                   psPVRContext->psPVRScreen->psImpl,
++                                   psPVRContext->psImpl, iTarget,
++                                   (uintptr_t) pvBuffer, 0, psEGLImage);
++   if (*puError != PVRDRI_IMAGE_ERROR_SUCCESS) {
++      PVRDRIEGLImageFree(psEGLImage);
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psEGLImage, psImage);
++
++   /*
++    * We can't destroy the image after this point, as the OCL image now has a
++    * reference to it.
++    */
++   psImage->psShared =
++      CreateImageSharedFromEGLImage(psPVRContext->psPVRScreen, psEGLImage,
++                                    PVRDRI_EGLIMAGE_IMGOCL);
++   if (!psImage->psShared) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psImage->psEGLImage = PVRDRIEGLImageDup(psImage->psShared->psEGLImage);
++   if (!psImage->psEGLImage) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psImage->iRefCount++;
++
++   *puError = PVRDRI_IMAGE_ERROR_SUCCESS;
++
++   return psImage;
++}
++
++__DRIimage *
++DRIMODCreateImageFromDMABufs2(struct DRISUPScreen *psPVRScreen,
++                              int iWidth, int iHeight,
++                              int iFourCC, uint64_t uModifier,
++                              int *piFDs, int iNumFDs,
++                              int *piStrides, int *piOffsets,
++                              unsigned int uColorSpace,
++                              unsigned int uSampleRange,
++                              unsigned int uHorizSiting,
++                              unsigned int uVertSiting,
++                              unsigned int *puError,
++                              void *pvLoaderPrivate)
++{
++   __DRIimage *psImage;
++   struct PVRDRIImageShared *psShared;
++   IMG_PIXFMT eIMGPixelFormat;
++
++   psImage = CommonImageSetup(pvLoaderPrivate);
++   if (!psImage) {
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   psShared = CreateImageSharedFromDMABufs(psPVRScreen, iWidth, iHeight,
++                                           iFourCC, uModifier, piFDs, iNumFDs,
++                                           piStrides, piOffsets,
++                                           uColorSpace, uSampleRange,
++                                           uHorizSiting, uVertSiting,
++                                           puError);
++   if (!psShared) {
++      DRIMODDestroyImage(psImage);
++      return NULL;
++   }
++
++   psImage->psShared = psShared;
++   eIMGPixelFormat = psShared->psFormat->eIMGPixelFormat;
++
++   psImage->psEGLImage =
++      PVRDRIEGLImageCreateFromBuffer(iWidth, iHeight, piStrides[0],
++                                     eIMGPixelFormat, psShared->eColourSpace,
++                                     psShared->eChromaUInterp,
++                                     psShared->eChromaVInterp,
++                                     psShared->psBuffer);
++   if (!psImage->psEGLImage) {
++      DRIMODDestroyImage(psImage);
++      *puError = PVRDRI_IMAGE_ERROR_BAD_ALLOC;
++      return NULL;
++   }
++
++   PVRDRIEGLImageSetCallbackData(psImage->psEGLImage, psImage);
++
++   *puError = PVRDRI_IMAGE_ERROR_SUCCESS;
++
++   return psImage;
++}
++
++__DRIimage *
++DRIMODCreateImageFromDMABufs(struct DRISUPScreen *psPVRScreen,
++                             int iWidth, int iHeight, int iFourCC,
++                             int *piFDs, int iNumFDs,
++                             int *piStrides, int *piOffsets,
++                             unsigned int uColorSpace,
++                             unsigned int uSampleRange,
++                             unsigned int uHorizSiting,
++                             unsigned int uVertSiting,
++                             unsigned int *puError,
++                             void *pvLoaderPrivate)
++{
++   return DRIMODCreateImageFromDMABufs2(psPVRScreen, iWidth, iHeight,
++                                        iFourCC, DRM_FORMAT_MOD_INVALID,
++                                        piFDs, iNumFDs,
++                                        piStrides, piOffsets,
++                                        uColorSpace, uSampleRange,
++                                        uHorizSiting, uVertSiting,
++                                        puError, pvLoaderPrivate);
++}
++
++void
++PVRDRIRefImage(__DRIimage *psImage)
++{
++   int iRefCount = p_atomic_inc_return(&psImage->iRefCount);
++
++   (void) iRefCount;
++   assert(iRefCount > 1);
++}
++
++void
++PVRDRIUnrefImage(__DRIimage *psImage)
++{
++   DRIMODDestroyImage(psImage);
++}
++
++PVRDRIImageType
++PVRDRIImageGetSharedType(__DRIimage *psImage)
++{
++   return psImage->psShared->eType;
++}
++
++PVRDRIBufferImpl *
++PVRDRIImageGetSharedBuffer(__DRIimage *psImage)
++{
++   assert(psImage->psShared->eType != PVRDRI_IMAGE_FROM_EGLIMAGE);
++
++   return psImage->psShared->psBuffer;
++}
++
++IMGEGLImage *
++PVRDRIImageGetSharedEGLImage(__DRIimage *psImage)
++{
++   assert(psImage->psShared->eType == PVRDRI_IMAGE_FROM_EGLIMAGE);
++
++   return psImage->psShared->psEGLImage;
++}
++
++IMGEGLImage *
++PVRDRIImageGetEGLImage(__DRIimage *psImage)
++{
++   return psImage->psEGLImage;
++}
++
++__DRIimage *
++PVRDRIScreenGetDRIImage(void *hEGLImage)
++{
++   struct DRISUPScreen *psPVRScreen;
++
++   psPVRScreen = DRIMODThreadGetCurrentScreen();
++   if (!psPVRScreen)
++      return NULL;
++
++   return MODSUPLookupEGLImage(psPVRScreen->psDRIScreen, hEGLImage,
++                               psPVRScreen->pvLoaderPrivate);
++}
++
++void
++DRIMODBlitImage(struct DRISUPContext *psPVRContext,
++                __DRIimage *psDst, __DRIimage *psSrc,
++                int iDstX0, int iDstY0, int iDstWidth, int iDstHeight,
++                int iSrcX0, int iSrcY0, int iSrcWidth, int iSrcHeight,
++                int iFlushFlag)
++{
++   bool bRes;
++
++   bRes = PVRDRIBlitEGLImage(psPVRContext->psPVRScreen->psImpl,
++                             psPVRContext->psImpl,
++                             psDst->psEGLImage, psDst->psShared->psBuffer,
++                             psSrc->psEGLImage, psSrc->psShared->psBuffer,
++                             iDstX0, iDstY0, iDstWidth, iDstHeight,
++                             iSrcX0, iSrcY0, iSrcWidth, iSrcHeight,
++                             iFlushFlag);
++   if (!bRes)
++      __driUtilMessage("%s: PVRDRIBlitEGLImage failed", __func__);
++}
++
++int
++DRIMODGetImageCapabilities(struct DRISUPScreen *psPVRScreen)
++{
++   (void) psPVRScreen;
++
++   return PVRDRI_IMAGE_CAP_GLOBAL_NAMES;
++}
++
++void *
++DRIMODMapImage(struct DRISUPContext *psPVRContext, __DRIimage *psImage,
++               int iX0, int iY0, int iWidth, int iHeight,
++               unsigned int iFlags, int *iStride, void **ppvData)
++{
++   return PVRDRIMapEGLImage(psPVRContext->psPVRScreen->psImpl,
++                            psPVRContext->psImpl,
++                            psImage->psEGLImage, psImage->psShared->psBuffer,
++                            iX0, iY0, iWidth, iHeight, iFlags, iStride,
++                            ppvData);
++}
++
++void
++DRIMODUnmapImage(struct DRISUPContext *psPVRContext, __DRIimage *psImage,
++                 void *pvData)
++{
++   bool bRes;
++
++   bRes = PVRDRIUnmapEGLImage(psPVRContext->psPVRScreen->psImpl,
++                              psPVRContext->psImpl, psImage->psEGLImage,
++                              psImage->psShared->psBuffer, pvData);
++   if (!bRes)
++      __driUtilMessage("%s: PVRDRIUnmapEGLImage failed", __func__);
++}
 diff --git a/src/mesa/drivers/dri/pvr/pvrmesa.h b/src/mesa/drivers/dri/pvr/pvrmesa.h
 new file mode 100644
-index 00000000000..6e0fd8d296a
+index 00000000000..5e1c9c1b2e6
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/pvrmesa.h
-@@ -0,0 +1,41 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,36 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -7241,23 +8915,269 @@
 +#include "pvrdri.h"
 +
 +void pvrdri_free_dispatch_tables(PVRDRIScreen *psPVRScreen);
-+
 +bool pvrdri_create_dispatch_table(PVRDRIScreen *psPVRScreen,
-+				  PVRDRIAPIType eAPI);
-+
++                                  PVRDRIAPIType eAPI);
 +void pvrdri_set_null_dispatch_table(void);
-+
 +void pvrdri_set_dispatch_table(PVRDRIContext *psPVRContext);
 +
 +#endif /* !defined(__PVRMESA_H__) */
 diff --git a/src/mesa/drivers/dri/pvr/pvrutil.c b/src/mesa/drivers/dri/pvr/pvrutil.c
 new file mode 100644
-index 00000000000..b0e5d260341
+index 00000000000..40e9fdfc122
 --- /dev/null
 +++ b/src/mesa/drivers/dri/pvr/pvrutil.c
-@@ -0,0 +1,1067 @@
-+/* -*- mode: c; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* vi: set ts=8 sw=8 sts=8: */
+@@ -0,0 +1,245 @@
++/*
++ * Copyright (c) Imagination Technologies Ltd.
++ *
++ * The contents of this file are subject to the MIT license as set out below.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a copy
++ * of this software and associated documentation files (the "Software"), to deal
++ * in the Software without restriction, including without limitation the rights
++ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
++ * copies of the Software, and to permit persons to whom the Software is
++ * furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
++ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
++ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
++ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
++ * THE SOFTWARE.
++ */
++
++#include <stdarg.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <assert.h>
++
++#include "drm-uapi/drm_fourcc.h"
++
++#include "utils.h"
++#include "dri_util.h"
++#include "pvrdri.h"
++
++#define MESSAGE_LENGTH_MAX 1024
++
++/*
++ * Define before including android/log.h and dlog.h as this is used by these
++ * headers.
++ */
++#define LOG_TAG "PVR-MESA"
++
++#if defined(HAVE_ANDROID_PLATFORM)
++#include <android/log.h>
++#define err_printf(f, args...) ((void)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, f, ##args))
++#define dbg_printf(f, args...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, f, ##args))
++#elif defined(HAVE_TIZEN_PLATFORM)
++#include <dlog.h>
++#define err_printf(f, args...) LOGE(f, ##args)
++#define dbg_printf(f, args...) LOGD(f, ##args)
++#else
++#define err_printf(f, args...) fprintf(stderr, f "\n", ##args)
++#define dbg_printf(f, args...) fprintf(stderr, "LibGL: " f "\n", ##args)
++#endif /* HAVE_ANDROID_PLATFORM */
++
++/* Standard error message */
++void PRINTFLIKE(1, 2)
++errorMessage(const char *f, ...)
++{
++   char message[MESSAGE_LENGTH_MAX];
++   va_list args;
++
++   va_start(args, f);
++   vsnprintf(message, sizeof message, f, args);
++   va_end(args);
++
++   err_printf("%s", message);
++}
++
++void PRINTFLIKE(1, 2)
++__driUtilMessage(const char *f, ...)
++{
++   char message[MESSAGE_LENGTH_MAX];
++   va_list args;
++
++   /*
++    * On Android and Tizen, always print messages; otherwise, only print if
++    * the environment variable LIBGL_DEBUG=verbose.
++    */
++#if !defined(HAVE_ANDROID_PLATFORM) && !defined(HAVE_TIZEN_PLATFORM)
++   char *ev = getenv("LIBGL_DEBUG");
++
++   if (!ev || strcmp(ev, "verbose") != 0)
++      return;
++#endif
++
++   va_start(args, f);
++   vsnprintf(message, sizeof message, f, args);
++   va_end(args);
++
++   dbg_printf("%s", message);
++}
++
++mesa_format
++PVRDRIMesaFormatToMesaFormat(int pvrdri_mesa_format)
++{
++   switch (pvrdri_mesa_format) {
++   case PVRDRI_MESA_FORMAT_NONE:
++      return MESA_FORMAT_NONE;
++   case PVRDRI_MESA_FORMAT_B8G8R8A8_UNORM:
++      return MESA_FORMAT_B8G8R8A8_UNORM;
++   case PVRDRI_MESA_FORMAT_B8G8R8X8_UNORM:
++      return MESA_FORMAT_B8G8R8X8_UNORM;
++   case PVRDRI_MESA_FORMAT_B5G6R5_UNORM:
++      return MESA_FORMAT_B5G6R5_UNORM;
++   case PVRDRI_MESA_FORMAT_R8G8B8A8_UNORM:
++      return MESA_FORMAT_R8G8B8A8_UNORM;
++   case PVRDRI_MESA_FORMAT_R8G8B8X8_UNORM:
++      return MESA_FORMAT_R8G8B8X8_UNORM;
++   case PVRDRI_MESA_FORMAT_YCBCR:
++      return MESA_FORMAT_YCBCR;
++#if defined(__DRI_ATTRIB_YUV_BIT)
++   case PVRDRI_MESA_FORMAT_YUV420_2PLANE:
++      return MESA_FORMAT_YUV420_2PLANE;
++   case PVRDRI_MESA_FORMAT_YVU420_2PLANE:
++      return MESA_FORMAT_YVU420_2PLANE;
++#endif
++   case PVRDRI_MESA_FORMAT_B8G8R8A8_SRGB:
++      return MESA_FORMAT_B8G8R8A8_SRGB;
++   case PVRDRI_MESA_FORMAT_R8G8B8A8_SRGB:
++      return MESA_FORMAT_R8G8B8A8_SRGB;
++   default:
++      __driUtilMessage("%s: Unknown format: %d", __func__, pvrdri_mesa_format);
++      break;
++   }
++
++   return MESA_FORMAT_NONE;
++}
++
++int
++PVRDRIFormatToFourCC(int dri_format)
++{
++   switch (dri_format) {
++   case __DRI_IMAGE_FORMAT_RGB565:
++      return DRM_FORMAT_RGB565;
++   case __DRI_IMAGE_FORMAT_XRGB8888:
++      return DRM_FORMAT_XRGB8888;
++   case __DRI_IMAGE_FORMAT_ARGB8888:
++      return DRM_FORMAT_ARGB8888;
++   case __DRI_IMAGE_FORMAT_ABGR8888:
++      return DRM_FORMAT_ABGR8888;
++   case __DRI_IMAGE_FORMAT_XBGR8888:
++      return DRM_FORMAT_XBGR8888;
++   case __DRI_IMAGE_FORMAT_R8:
++      return DRM_FORMAT_R8;
++   case __DRI_IMAGE_FORMAT_GR88:
++      return DRM_FORMAT_GR88;
++   case __DRI_IMAGE_FORMAT_NONE:
++      return 0;
++   case __DRI_IMAGE_FORMAT_XRGB2101010:
++      return DRM_FORMAT_XRGB2101010;
++   case __DRI_IMAGE_FORMAT_ARGB2101010:
++      return DRM_FORMAT_ARGB2101010;
++   case __DRI_IMAGE_FORMAT_SARGB8:
++      return __DRI_IMAGE_FOURCC_SARGB8888;
++   case __DRI_IMAGE_FORMAT_ARGB1555:
++      return DRM_FORMAT_ARGB1555;
++   case __DRI_IMAGE_FORMAT_R16:
++      return DRM_FORMAT_R16;
++   case __DRI_IMAGE_FORMAT_GR1616:
++      return DRM_FORMAT_GR1616;
++   case __DRI_IMAGE_FORMAT_YUYV:
++      return DRM_FORMAT_YUYV;
++   case __DRI_IMAGE_FORMAT_XBGR2101010:
++      return DRM_FORMAT_XBGR2101010;
++   case __DRI_IMAGE_FORMAT_ABGR2101010:
++      return DRM_FORMAT_ABGR2101010;
++   case __DRI_IMAGE_FORMAT_SABGR8:
++      return __DRI_IMAGE_FOURCC_SABGR8888;
++#if defined(__DRI_ATTRIB_YUV_BIT)
++   case __DRI_IMAGE_FORMAT_UYVY:
++      return DRM_FORMAT_UYVY;
++#endif
++   case __DRI_IMAGE_FORMAT_ARGB4444:
++      return DRM_FORMAT_ARGB4444;
++   case __DRI_IMAGE_FORMAT_YVU444_PACK10_IMG:
++      return DRM_FORMAT_YVU444_PACK10_IMG;
++   case __DRI_IMAGE_FORMAT_BGR888:
++      return DRM_FORMAT_BGR888;
++   default:
++      __driUtilMessage("%s: Unknown format: %d", __func__, dri_format);
++      break;
++   }
++
++   return 0;
++}
++
++int
++PVRDRIFourCCToDRIFormat(int iFourCC)
++{
++   switch (iFourCC) {
++   case 0:
++      return __DRI_IMAGE_FORMAT_NONE;
++   case DRM_FORMAT_RGB565:
++      return __DRI_IMAGE_FORMAT_RGB565;
++   case DRM_FORMAT_XRGB8888:
++      return __DRI_IMAGE_FORMAT_XRGB8888;
++   case DRM_FORMAT_ARGB8888:
++      return __DRI_IMAGE_FORMAT_ARGB8888;
++   case DRM_FORMAT_ABGR8888:
++      return __DRI_IMAGE_FORMAT_ABGR8888;
++   case DRM_FORMAT_XBGR8888:
++      return __DRI_IMAGE_FORMAT_XBGR8888;
++   case DRM_FORMAT_R8:
++      return __DRI_IMAGE_FORMAT_R8;
++   case DRM_FORMAT_GR88:
++      return __DRI_IMAGE_FORMAT_GR88;
++   case DRM_FORMAT_XRGB2101010:
++      return __DRI_IMAGE_FORMAT_XRGB2101010;
++   case DRM_FORMAT_ARGB2101010:
++      return __DRI_IMAGE_FORMAT_ARGB2101010;
++   case __DRI_IMAGE_FOURCC_SARGB8888:
++      return __DRI_IMAGE_FORMAT_SARGB8;
++   case DRM_FORMAT_ARGB1555:
++      return __DRI_IMAGE_FORMAT_ARGB1555;
++   case DRM_FORMAT_R16:
++      return __DRI_IMAGE_FORMAT_R16;
++   case DRM_FORMAT_GR1616:
++      return __DRI_IMAGE_FORMAT_GR1616;
++   case DRM_FORMAT_YUYV:
++      return __DRI_IMAGE_FORMAT_YUYV;
++   case DRM_FORMAT_XBGR2101010:
++      return __DRI_IMAGE_FORMAT_XBGR2101010;
++   case DRM_FORMAT_ABGR2101010:
++      return __DRI_IMAGE_FORMAT_ABGR2101010;
++   case __DRI_IMAGE_FOURCC_SABGR8888:
++      return __DRI_IMAGE_FORMAT_SABGR8;
++   case DRM_FORMAT_UYVY:
++#if defined(__DRI_ATTRIB_YUV_BIT)
++      return __DRI_IMAGE_FORMAT_UYVY;
++#endif
++   case DRM_FORMAT_ARGB4444:
++      return __DRI_IMAGE_FORMAT_ARGB4444;
++   case DRM_FORMAT_YVU444_PACK10_IMG:
++      return __DRI_IMAGE_FORMAT_YVU444_PACK10_IMG;
++   case DRM_FORMAT_BGR888:
++      return __DRI_IMAGE_FORMAT_BGR888;
++   default:
++      __driUtilMessage("%s: Unknown format: %d", __func__, iFourCC);
++      break;
++   }
++
++   return 0;
++}
+diff --git a/src/mesa/drivers/dri/pvr/pvrutil_mod.c b/src/mesa/drivers/dri/pvr/pvrutil_mod.c
+new file mode 100644
+index 00000000000..5359a5e2fde
+--- /dev/null
++++ b/src/mesa/drivers/dri/pvr/pvrutil_mod.c
+@@ -0,0 +1,937 @@
 +/*
 + * Copyright (c) Imagination Technologies Ltd.
 + *
@@ -7283,1058 +9203,930 @@
 + */
 +
 +#include <assert.h>
-+#include <stdarg.h>
-+#include <stdio.h>
 +#include <stdlib.h>
++#include <string.h>
 +
-+#include "utils.h"
-+#include "dri_util.h"
-+
-+#include "pvrdri.h"
-+
-+#define MESSAGE_LENGTH_MAX 1024
++#include "img_drm_fourcc.h"
++#include "pvrdri_mod.h"
 +
 +/*
-+ * define before including android/log.h and dlog.h as this is used by these
-+ * headers
++ * The following sRGB formats defined may not be defined in drm_fourcc.h, but
++ * match the corresponding __DRI_IMAGE_FOURCC formats in Mesa.
 + */
-+#define LOG_TAG "PVR-MESA"
++#if !defined(DRM_FORMAT_SARGB8888)
++#define DRM_FORMAT_SARGB8888 0x83324258
++#endif
 +
-+#if defined(HAVE_ANDROID_PLATFORM)
-+#include <android/log.h>
-+#define err_printf(f, args...) ((void)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, f, ##args))
-+#define dbg_printf(f, args...) ((void)__android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, f, ##args))
-+#elif defined(HAVE_TIZEN_PLATFORM)
-+#include <dlog.h>
-+#define err_printf(f, args...) LOGE(f, ##args)
-+#define dbg_printf(f, args...) LOGD(f, ##args)
-+#else
-+#define err_printf(f, args...) fprintf(stderr, f, ##args)
-+#define dbg_printf(f, args...) fprintf(stderr, "LibGL: " f "\n", ##args)
-+#endif /* HAVE_ANDROID_PLATFORM */
++#if !defined(DRM_FORMAT_SABGR8888)
++#define DRM_FORMAT_SABGR8888 0x84324258
++#endif
 +
-+#define	PVRDRIMesaFormatEntry(f) {f, PVRDRI_ ## f }
++#if !defined(DRM_FORMAT_SBGR888)
++#define DRM_FORMAT_SBGR888   0xff324742
++#endif
 +
-+static const struct
-+{
-+	mesa_format eMesa;
-+	unsigned uPVRDRI;
-+} g_asMesaFormats[] = {
-+	PVRDRIMesaFormatEntry(MESA_FORMAT_B8G8R8A8_UNORM),
-+	PVRDRIMesaFormatEntry(MESA_FORMAT_B8G8R8X8_UNORM),
-+#ifdef HAVE_ANDROID_PLATFORM
-+	PVRDRIMesaFormatEntry(MESA_FORMAT_R8G8B8A8_UNORM),
-+	PVRDRIMesaFormatEntry(MESA_FORMAT_R8G8B8X8_UNORM),
++static const PVRDRIImageFormat g_asFormats[] = {
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R10G10B10A2_UNORM,
++      .iDRIFourCC = DRM_FORMAT_ABGR2101010,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R10G10B10A2_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_ARGB8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM_SRGB,
++      .iDRIFourCC = DRM_FORMAT_SARGB8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .bIsSRGB = true,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM_SRGB,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_ABGR8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM_SRGB,
++      .iDRIFourCC = DRM_FORMAT_SABGR8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .bIsSRGB = true,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM_SRGB,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B8G8R8X8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_XRGB8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGB,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B8G8R8X8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8B8X8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_XBGR8888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGB,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8B8X8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8B8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_BGR888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGB,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8B8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++#if defined(DRM_FORMAT_SBGR888)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8B8_UNORM_SRGB,
++      .iDRIFourCC = DRM_FORMAT_SBGR888,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGB,
++      .bIsSRGB = true,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8B8_UNORM_SRGB,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
 +#endif
-+	PVRDRIMesaFormatEntry(MESA_FORMAT_B5G6R5_UNORM),
-+};
-+
-+/* See pvrdri.h for documentation on PVRDRIImageFormat */
-+static const PVRDRIImageFormat g_asFormats[] =
-+{
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_R10G10B10A2_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_ABGR2101010,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_ABGR2101010,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGBA,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+			.eIMGPixelFormat = IMG_PIXFMT_R10G10B10A2_UNORM,
-+			.uiWidthShift = 0,
-+			.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_ARGB8888,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_ARGB8888,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGBA,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_B8G8R8A8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_ABGR8888,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_ABGR8888,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGBA,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8B8A8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_B8G8R8X8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_XRGB8888,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_XRGB8888,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGB,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_B8G8R8X8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_R8G8B8X8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_XBGR8888,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_XBGR8888,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGB,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8B8X8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_B5G6R5_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_RGB565,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_RGB565,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGB,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_B5G6R5_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_GR88,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_GR88,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RG,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_R8,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_R8,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_R,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+		{
-+		.eIMGPixelFormat = IMG_PIXFMT_L8A8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_GR88,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_GR88,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RG,
-+		.bQueryDmaBufFormatsExclude = true,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_L8A8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_L8_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_R8,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_R8,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_R,
-+		.bQueryDmaBufFormatsExclude = true,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_L8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_D32_FLOAT,
-+		.iDRIFourCC = 0,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = 0,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_D32_FLOAT,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_S8_UINT,
-+		.iDRIFourCC = 0,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = 0,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_S8_UINT,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+#if defined(__DRI_IMAGE_FORMAT_ARGB4444)
-+	/* We patch this format into Mesa */
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_B4G4R4A4_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_ARGB4444,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_ARGB4444,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGBA,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_B4G4R4A4_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B5G6R5_UNORM,
++      .iDRIFourCC = DRM_FORMAT_RGB565,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGB,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B5G6R5_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_GR88,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RG,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++      .iDRIFourCC = DRM_FORMAT_R8,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_R,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_L8A8_UNORM,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_L8A8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_L8_UNORM,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_L8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_D32_FLOAT,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_D32_FLOAT,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_S8_UINT,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_S8_UINT,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++#if defined(DRM_FORMAT_ARGB4444)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B4G4R4A4_UNORM,
++      .iDRIFourCC = DRM_FORMAT_ARGB4444,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B4G4R4A4_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
 +#endif
-+#if defined(__DRI_IMAGE_FORMAT_ARGB1555)
-+	/* We patch this format into Mesa */
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_B5G5R5A1_UNORM,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_ARGB1555,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_ARGB1555,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_RGBA,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_B5G5R5A1_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
++#if defined(DRM_FORMAT_ARGB1555)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_B5G5R5A1_UNORM,
++      .iDRIFourCC = DRM_FORMAT_ARGB1555,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_RGBA,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_B5G5R5A1_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
 +#endif
-+#if defined(__DRI_IMAGE_COMPONENTS_EXTERNAL)
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YUYV,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_YUYV,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_YUYV,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_EXTERNAL,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+			.eIMGPixelFormat = IMG_PIXFMT_YUYV,
-+			.uiWidthShift = 0,
-+			.uiHeightShift = 0
-+		},
-+	},
-+#if defined(__DRI_IMAGE_FOURCC_YVU444_PACK10_IMG)
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YVU10_444_1PLANE_PACK10,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_YVU444_PACK10_IMG,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_YVU444_PACK10_IMG,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_EXTERNAL,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+			.eIMGPixelFormat = IMG_PIXFMT_YVU10_444_1PLANE_PACK10,
-+			.uiWidthShift = 0,
-+			.uiHeightShift = 0,
-+		},
-+	},
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YUYV,
++      .iDRIFourCC = DRM_FORMAT_YUYV,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_EXTERNAL,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_YUYV,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++#if defined(DRM_FORMAT_YVU444_PACK10_IMG)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YVU10_444_1PLANE_PACK10,
++      .iDRIFourCC = DRM_FORMAT_YVU444_PACK10_IMG,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_EXTERNAL,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_YVU10_444_1PLANE_PACK10,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0,
++      },
++   },
 +#endif
++#if defined(DRM_FORMAT_MT21)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YVU8_420_2PLANE_PACK8_P,
++      .iDRIFourCC = DRM_FORMAT_MT21,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_UV,
++      .uiNumPlanes = 2,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++   },
 +#endif
-+#if defined(__DRI_IMAGE_FOURCC_MT21)
-+	/* We patch this format into Mesa */
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YVU8_420_2PLANE_PACK8_P,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_MT21,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_Y_UV,
-+		.uiNumPlanes = 2,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+		.sPlanes[1] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+	},
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YUV420_2PLANE,
++      .iDRIFourCC = DRM_FORMAT_NV12,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_UV,
++      .uiNumPlanes = 2,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++   },
++#if defined(DRM_FORMAT_NV21)
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YVU420_2PLANE,
++      .iDRIFourCC = DRM_FORMAT_NV21,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_UV,
++      .uiNumPlanes = 2,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++   },
 +#endif
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YUV420_2PLANE,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_NV12,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_Y_UV,
-+		.uiNumPlanes = 2,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+		.sPlanes[1] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+	},
-+#if defined(__DRI_IMAGE_FOURCC_NV21)
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YVU420_2PLANE,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_NV21,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_Y_UV,
-+		.uiNumPlanes = 2,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+		.sPlanes[1] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8G8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+	},
-+#endif
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YUV420_3PLANE,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_YUV420,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_Y_U_V,
-+		.uiNumPlanes = 3,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+		.sPlanes[1] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+		.sPlanes[2] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_YVU420_3PLANE,
-+		.iDRIFourCC = __DRI_IMAGE_FOURCC_YVU420,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = __DRI_IMAGE_COMPONENTS_Y_U_V,
-+		.uiNumPlanes = 3,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+		.sPlanes[1] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+		.sPlanes[2] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
-+				.uiWidthShift = 1,
-+				.uiHeightShift = 1
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_D16_UNORM,
-+		.iDRIFourCC = 0,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = 0,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_D16_UNORM,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
-+	{
-+		.eIMGPixelFormat = IMG_PIXFMT_D24_UNORM_X8_TYPELESS,
-+		.iDRIFourCC = 0,
-+		.iDRIFormat = __DRI_IMAGE_FORMAT_NONE,
-+		.iDRIComponents = 0,
-+		.uiNumPlanes = 1,
-+		.sPlanes[0] =
-+		{
-+				.eIMGPixelFormat = IMG_PIXFMT_D24_UNORM_X8_TYPELESS,
-+				.uiWidthShift = 0,
-+				.uiHeightShift = 0
-+		},
-+	},
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YUV420_3PLANE,
++      .iDRIFourCC = DRM_FORMAT_YUV420,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_U_V,
++      .uiNumPlanes = 3,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++      .sPlanes[2] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YVU420_3PLANE,
++      .iDRIFourCC = DRM_FORMAT_YVU420,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_U_V,
++      .uiNumPlanes = 3,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++      .sPlanes[2] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 1,
++         .uiHeightShift = 1},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_YUV8_444_3PLANE_PACK8,
++      .iDRIFourCC = DRM_FORMAT_YUV444,
++      .iDRIComponents = PVRDRI_IMAGE_COMPONENTS_Y_U_V,
++      .uiNumPlanes = 3,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[1] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++      .sPlanes[2] = {
++         .eIMGPixelFormat = IMG_PIXFMT_R8_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_D16_UNORM,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_D16_UNORM,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
++   {
++      .eIMGPixelFormat = IMG_PIXFMT_D24_UNORM_X8_TYPELESS,
++      .iDRIFourCC = 0,
++      .iDRIComponents = 0,
++      .uiNumPlanes = 1,
++      .sPlanes[0] = {
++         .eIMGPixelFormat = IMG_PIXFMT_D24_UNORM_X8_TYPELESS,
++         .uiWidthShift = 0,
++         .uiHeightShift = 0},
++   },
 +};
 +
 +/*
 + * Check if a PVR Screen has support for a particular format based upon its
-+ * position in g_asFormats. If querying of this information isn't supported
-+ * by pvr_dri_support then assume the format is supported.
++ * position in g_asFormats. If querying of this information isn't supported by
++ * pvr_dri_support then assume the format is supported.
 + */
 +static inline bool
-+PVRDRIScreenHasFormatFromIdx(const PVRDRIScreen * const psPVRScreen,
-+			     const unsigned int uiFormatIdx)
++PVRDRIScreenHasFormatFromIdx(const struct DRISUPScreen *const psPVRScreen,
++                             const unsigned int uiFormatIdx)
 +{
-+	if (psPVRScreen->iNumFormats > 0)
-+	{
-+		if (uiFormatIdx < ARRAY_SIZE(g_asFormats))
-+		{
-+			return psPVRScreen->pbHasFormat[uiFormatIdx];
-+		}
++   if (psPVRScreen->iNumFormats > 0) {
++      if (uiFormatIdx < ARRAY_SIZE(g_asFormats))
++         return psPVRScreen->pbHasFormat[uiFormatIdx];
++      return false;
++   }
 +
-+		return false;
-+	}
-+
-+	assert(psPVRScreen->iNumFormats == -1);
-+
-+	return true;
++   assert(psPVRScreen->iNumFormats == -1);
++   return true;
 +}
 +
-+/* Standard error message */
-+void PRINTFLIKE(1, 2) errorMessage(const char *f, ...)
++const struct __DRIconfigRec **
++PVRDRICreateConfigs(const struct DRISUPScreen *psPVRScreen)
 +{
-+	char message[MESSAGE_LENGTH_MAX];
-+	va_list args;
++   static const unsigned int auBackBufferModes[] = {
++      PVRDRI_ATTRIB_SWAP_NONE,
++      PVRDRI_ATTRIB_SWAP_UNDEFINED,
++   };
++   const uint8_t *puDepthBits = PVRDRIDepthBitsArray();
++   const uint8_t *puStencilBits = PVRDRIStencilBitsArray();
++   const uint8_t *puMSAASamples = PVRDRIMSAABitsArray();
++   const unsigned int uNumBackBufferModes = ARRAY_SIZE(auBackBufferModes);
++   const unsigned int uNumDepthStencilBits =
++      PVRDRIDepthStencilBitArraySize();
++   const unsigned int uNumMSAASamples = PVRDRIMSAABitArraySize();
++   struct __DRIconfigRec **ppsConfigs = NULL;
++   struct __DRIconfigRec **ppsNewConfigs;
++   unsigned int i;
 +
-+	va_start(args, f);
-+	vsnprintf(message, sizeof message, f, args);
-+	va_end(args);
++   for (i = 0; i < psPVRScreen->uNumMesaFormats; i++) {
++      if (!MODSUPCreateConfigs(&ppsNewConfigs, psPVRScreen->psDRIScreen,
++                               psPVRScreen->puMesaFormats[i],
++                               puDepthBits, puStencilBits,
++                               uNumDepthStencilBits,
++                               auBackBufferModes, uNumBackBufferModes,
++                               puMSAASamples, uNumMSAASamples,
++                               false, false, false,
++                               PVRDRI_YUV_DEPTH_RANGE_NONE,
++                               PVRDRI_YUV_CSC_STANDARD_NONE,
++                               PVRDRIMaxPBufferWidth(),
++                               PVRDRIMaxPBufferHeight())) {
++         __driUtilMessage("%s: Couldn't create DRI configs", __func__);
++         return NULL;
++      }
 +
-+	err_printf("%s", message);
++      ppsConfigs = MODSUPConcatConfigs(psPVRScreen->psDRIScreen,
++                                       ppsConfigs, ppsNewConfigs);
++   }
++
++   return (const struct __DRIconfigRec **) ppsConfigs;
 +}
 +
-+void PRINTFLIKE(1, 2) __driUtilMessage(const char *f, ...)
++const PVRDRIImageFormat *
++PVRDRIFourCCToImageFormat(struct DRISUPScreen *psPVRScreen, int iDRIFourCC)
 +{
-+	char message[MESSAGE_LENGTH_MAX];
-+	va_list args;
++   unsigned int i;
 +
-+	/*
-+	 * On Android and Tizen, always print messages; otherwise, only print if
-+	 * the environment variable LIBGL_DEBUG=verbose
-+	 */
-+#if !defined(HAVE_ANDROID_PLATFORM) && !defined(HAVE_TIZEN_PLATFORM)
-+	char *ev = getenv("LIBGL_DEBUG");
++   if (!iDRIFourCC)
++      return NULL;
 +
-+	if (!ev || strcmp(ev, "verbose") != 0)
-+	{
-+		return;
-+	}
-+#endif
++   for (i = 0; i < ARRAY_SIZE(g_asFormats); i++) {
++      if (g_asFormats[i].iDRIFourCC != iDRIFourCC)
++         continue;
 +
-+	va_start(args, f);
-+	vsnprintf(message, sizeof message, f, args);
-+	va_end(args);
++      if (!PVRDRIScreenHasFormatFromIdx(psPVRScreen, i))
++         break;
 +
-+	dbg_printf("%s", message);
++      return &g_asFormats[i];
++   }
++
++   return NULL;
 +}
 +
-+const __DRIconfig **PVRDRICreateConfigs(void)
++const PVRDRIImageFormat *
++PVRDRIIMGPixelFormatToImageFormat(struct DRISUPScreen *psPVRScreen,
++                                  IMG_PIXFMT eIMGPixelFormat)
 +{
-+	static const GLenum asBackBufferModes[]	= { __DRI_ATTRIB_SWAP_NONE, __DRI_ATTRIB_SWAP_UNDEFINED };
-+	const uint8_t *puDepthBits = PVRDRIDepthBitsArray();
-+	const uint8_t *puStencilBits = PVRDRIStencilBitsArray();
-+	const uint8_t *puMSAASamples = PVRDRIMSAABitsArray();
-+	const unsigned uNumBackBufferModes = ARRAY_SIZE(asBackBufferModes);
-+	const unsigned uNumDepthStencilBits = PVRDRIDepthStencilBitArraySize();
-+	const unsigned uNumMSAASamples = PVRDRIMSAABitArraySize();
-+	__DRIconfig **ppsConfigs = NULL;
-+	__DRIconfig **ppsNewConfigs;
-+	unsigned i;
++   unsigned int i;
 +
-+	for (i = 0; i < ARRAY_SIZE(g_asMesaFormats); i++)
-+	{
-+		if (!PVRDRIMesaFormatSupported(g_asMesaFormats[i].uPVRDRI))
-+			continue;
++   assert(eIMGPixelFormat != IMG_PIXFMT_UNKNOWN);
 +
-+		ppsNewConfigs = driCreateConfigs(g_asMesaFormats[i].eMesa,
-+						 puDepthBits,
-+						 puStencilBits,
-+						 uNumDepthStencilBits, 
-+						 asBackBufferModes,
-+						 uNumBackBufferModes, 
-+						 puMSAASamples,
-+						 uNumMSAASamples,
-+						 GL_FALSE,
-+						 GL_FALSE,
-+						 GL_FALSE
-+#if defined(__DRI_ATTRIB_YUV_BIT)
-+						 , __DRI_ATTRIB_YUV_DEPTH_RANGE_NONE,
-+						 __DRI_ATTRIB_YUV_CSC_STANDARD_NONE
-+#endif
-+						 );
++   for (i = 0; i < ARRAY_SIZE(g_asFormats); i++) {
++      if (g_asFormats[i].eIMGPixelFormat != eIMGPixelFormat)
++         continue;
 +
-+		ppsConfigs = driConcatConfigs(ppsConfigs, ppsNewConfigs);
-+	}
++      /*
++       * Assume that the screen has the format, i.e. it's supported by the
++       * HW+SW, since we can only have an IMG_PIXFMT from having called one of
++       * the other PVRDRI*ToImageFormat functions or one of the
++       * pvr_dri_support functions.
++       */
++      assert(PVRDRIScreenHasFormatFromIdx(psPVRScreen, i));
++      return &g_asFormats[i];
++   }
 +
-+	if (ppsConfigs)
-+	{
-+		for (i = 0; ppsConfigs[i]; i++)
-+		{
-+			ppsConfigs[i]->modes.maxPbufferWidth =
-+						PVRDRIMaxPBufferWidth();
-+			ppsConfigs[i]->modes.maxPbufferHeight =
-+						PVRDRIMaxPBufferHeight();
-+
-+			ppsConfigs[i]->modes.maxPbufferPixels =
-+						PVRDRIMaxPBufferWidth() *
-+						PVRDRIMaxPBufferHeight();
-+		}
-+	}
-+
-+	return (const __DRIconfig **)ppsConfigs;
-+}
-+
-+const PVRDRIImageFormat *PVRDRIFormatToImageFormat(PVRDRIScreen *psPVRScreen,
-+						   int iDRIFormat)
-+{
-+	unsigned i;
-+
-+	assert(iDRIFormat != __DRI_IMAGE_FORMAT_NONE);
-+
-+	for (i = 0; i < ARRAY_SIZE(g_asFormats); i++)
-+	{
-+		if (g_asFormats[i].iDRIFormat != iDRIFormat)
-+		{
-+			continue;
-+		}
-+
-+		if (!PVRDRIScreenHasFormatFromIdx(psPVRScreen, i))
-+		{
-+			break;
-+		}
-+
-+		return &g_asFormats[i];
-+	}
-+
-+	return NULL;
-+}
-+
-+const PVRDRIImageFormat *PVRDRIFourCCToImageFormat(PVRDRIScreen *psPVRScreen,
-+						   int iDRIFourCC)
-+{
-+	unsigned i;
-+
-+	if (!iDRIFourCC)
-+	{
-+		return NULL;
-+	}
-+
-+	for (i = 0; i < ARRAY_SIZE(g_asFormats); i++)
-+	{
-+		if (g_asFormats[i].iDRIFourCC != iDRIFourCC)
-+		{
-+			continue;
-+		}
-+
-+		if (!PVRDRIScreenHasFormatFromIdx(psPVRScreen, i))
-+		{
-+			break;
-+		}
-+
-+		return &g_asFormats[i];
-+	}
-+
-+	return NULL;
-+}
-+
-+const PVRDRIImageFormat *PVRDRIIMGPixelFormatToImageFormat(PVRDRIScreen *psPVRScreen,
-+							   IMG_PIXFMT eIMGPixelFormat)
-+{
-+	unsigned i;
-+
-+	assert(eIMGPixelFormat != IMG_PIXFMT_UNKNOWN);
-+
-+	for (i = 0; i < ARRAY_SIZE(g_asFormats); i++)
-+	{
-+		if (g_asFormats[i].eIMGPixelFormat != eIMGPixelFormat)
-+		{
-+			continue;
-+		}
-+
-+		/*
-+		 * Assume that the screen has the format, i.e. it's supported by
-+		 * the HW+SW, since we can only have an IMG_PIXFMT from having
-+		 * called one of the other PVRDRI*ToImageFormat functions or
-+		 * one of the pvr_dri_support functions.
-+		 */
-+		assert(PVRDRIScreenHasFormatFromIdx(psPVRScreen, i));
-+
-+		return &g_asFormats[i];
-+	}
-+
-+	return NULL;
++   return NULL;
 +}
 +
 +/*
 + * The EGL_EXT_image_dma_buf_import says that if a hint is unspecified then
-+ * the implementation may guess based on the pixel format or may fallback
-+ * to some default value. Furthermore, if a hint is unsupported then the
++ * the implementation may guess based on the pixel format or may fallback to
++ * some default value. Furthermore, if a hint is unsupported then the
 + * implementation may use whichever settings it wants to achieve the closest
 + * match.
 + */
-+IMG_YUV_COLORSPACE PVRDRIToIMGColourSpace(const PVRDRIImageFormat *psFormat,
-+					  enum __DRIYUVColorSpace eDRIColourSpace,
-+					  enum __DRISampleRange eDRISampleRange)
++IMG_YUV_COLORSPACE
++PVRDRIToIMGColourSpace(const PVRDRIImageFormat *psFormat,
++                       unsigned int uDRIColourSpace,
++                       unsigned int uDRISampleRange)
 +{
-+	switch (psFormat->iDRIComponents)
-+	{
-+		case __DRI_IMAGE_COMPONENTS_R:
-+		case __DRI_IMAGE_COMPONENTS_RG:
-+		case __DRI_IMAGE_COMPONENTS_RGB:
-+		case __DRI_IMAGE_COMPONENTS_RGBA:
-+			return IMG_COLORSPACE_UNDEFINED;
-+		case __DRI_IMAGE_COMPONENTS_Y_U_V:
-+		case __DRI_IMAGE_COMPONENTS_Y_UV:
-+		case __DRI_IMAGE_COMPONENTS_Y_XUXV:
-+#if defined(__DRI_IMAGE_COMPONENTS_EXTERNAL)
-+		case __DRI_IMAGE_COMPONENTS_EXTERNAL:
-+#endif
-+			break;
-+		default:
-+			errorMessage("Unrecognised DRI components (components = 0x%X)\n",
-+				     psFormat->iDRIComponents);
-+			unreachable("unhandled DRI component");
-+			return IMG_COLORSPACE_UNDEFINED;
-+	}
++   switch (psFormat->iDRIComponents) {
++   case PVRDRI_IMAGE_COMPONENTS_R:
++   case PVRDRI_IMAGE_COMPONENTS_RG:
++   case PVRDRI_IMAGE_COMPONENTS_RGB:
++   case PVRDRI_IMAGE_COMPONENTS_RGBA:
++      return IMG_COLORSPACE_UNDEFINED;
++   case PVRDRI_IMAGE_COMPONENTS_Y_U_V:
++   case PVRDRI_IMAGE_COMPONENTS_Y_UV:
++   case PVRDRI_IMAGE_COMPONENTS_Y_XUXV:
++   case PVRDRI_IMAGE_COMPONENTS_EXTERNAL:
++      break;
++   default:
++      errorMessage("%s: Unrecognised DRI components (components = 0x%X)",
++                   __func__, psFormat->iDRIComponents);
++      unreachable("unhandled DRI component");
++      return IMG_COLORSPACE_UNDEFINED;
++   }
 +
-+	switch (eDRIColourSpace)
-+	{
-+		case __DRI_YUV_COLOR_SPACE_UNDEFINED:
-+		case __DRI_YUV_COLOR_SPACE_ITU_REC601:
-+			switch (eDRISampleRange)
-+			{
-+				case __DRI_YUV_RANGE_UNDEFINED:
-+				case __DRI_YUV_NARROW_RANGE:
-+					return IMG_COLORSPACE_BT601_CONFORMANT_RANGE;
-+				case __DRI_YUV_FULL_RANGE:
-+					return IMG_COLORSPACE_BT601_FULL_RANGE;
-+				default:
-+					errorMessage("Unrecognised DRI sample range (sample range = 0x%X)\n",
-+						     eDRISampleRange);
-+					unreachable("unhandled sample range");
-+					return IMG_COLORSPACE_UNDEFINED;
-+			}
-+		case __DRI_YUV_COLOR_SPACE_ITU_REC709:
-+			switch (eDRISampleRange)
-+			{
-+				case __DRI_YUV_RANGE_UNDEFINED:
-+				case __DRI_YUV_NARROW_RANGE:
-+					return IMG_COLORSPACE_BT709_CONFORMANT_RANGE;
-+				case __DRI_YUV_FULL_RANGE:
-+					return IMG_COLORSPACE_BT709_FULL_RANGE;
-+				default:
-+					errorMessage("Unrecognised DRI sample range (sample range = 0x%X)\n",
-+						     eDRISampleRange);
-+					unreachable("unhandled sample range");
-+					return IMG_COLORSPACE_UNDEFINED;
-+			}
-+		case __DRI_YUV_COLOR_SPACE_ITU_REC2020:
-+			switch (eDRISampleRange)
-+			{
-+				case __DRI_YUV_RANGE_UNDEFINED:
-+				case __DRI_YUV_NARROW_RANGE:
-+					return IMG_COLORSPACE_BT2020_CONFORMANT_RANGE;
-+				case __DRI_YUV_FULL_RANGE:
-+					return IMG_COLORSPACE_BT2020_FULL_RANGE;
-+				default:
-+					errorMessage("Unrecognised DRI sample range (sample range = 0x%X)\n",
-+						     eDRISampleRange);
-+					assert(0);
-+					return IMG_COLORSPACE_UNDEFINED;
-+			}
-+		default:
-+			errorMessage("Unrecognised DRI colour space (colour space = 0x%X)\n",
-+				     eDRIColourSpace);
-+			unreachable("unhandled color space");
-+			return IMG_COLORSPACE_UNDEFINED;
-+	}
++   switch (uDRIColourSpace) {
++   case PVRDRI_YUV_COLOR_SPACE_UNDEFINED:
++   case PVRDRI_YUV_COLOR_SPACE_ITU_REC601:
++      switch (uDRISampleRange) {
++      case PVRDRI_YUV_RANGE_UNDEFINED:
++      case PVRDRI_YUV_NARROW_RANGE:
++         return IMG_COLORSPACE_BT601_CONFORMANT_RANGE;
++      case PVRDRI_YUV_FULL_RANGE:
++         return IMG_COLORSPACE_BT601_FULL_RANGE;
++      default:
++         errorMessage ("%s: Unrecognised DRI sample range (sample range = 0x%X)",
++                       __func__, uDRISampleRange);
++         unreachable("unhandled sample range");
++         return IMG_COLORSPACE_UNDEFINED;
++      }
++   case PVRDRI_YUV_COLOR_SPACE_ITU_REC709:
++      switch (uDRISampleRange) {
++      case PVRDRI_YUV_RANGE_UNDEFINED:
++      case PVRDRI_YUV_NARROW_RANGE:
++         return IMG_COLORSPACE_BT709_CONFORMANT_RANGE;
++      case PVRDRI_YUV_FULL_RANGE:
++         return IMG_COLORSPACE_BT709_FULL_RANGE;
++      default:
++         errorMessage ("%s: Unrecognised DRI sample range (sample range = 0x%X)",
++                       __func__, uDRISampleRange);
++         unreachable("unhandled sample range");
++         return IMG_COLORSPACE_UNDEFINED;
++      }
++   case PVRDRI_YUV_COLOR_SPACE_ITU_REC2020:
++      switch (uDRISampleRange) {
++      case PVRDRI_YUV_RANGE_UNDEFINED:
++      case PVRDRI_YUV_NARROW_RANGE:
++         return IMG_COLORSPACE_BT2020_CONFORMANT_RANGE;
++      case PVRDRI_YUV_FULL_RANGE:
++         return IMG_COLORSPACE_BT2020_FULL_RANGE;
++      default:
++         errorMessage ("%s: Unrecognised DRI sample range (sample range = 0x%X)",
++                       __func__, uDRISampleRange);
++         assert(0);
++         return IMG_COLORSPACE_UNDEFINED;
++      }
++   default:
++      errorMessage ("%s: Unrecognised DRI color space (color space = 0x%X)",
++                    __func__, uDRIColourSpace);
++      unreachable("unhandled color space");
++      return IMG_COLORSPACE_UNDEFINED;
++   }
 +}
 +
-+IMG_YUV_CHROMA_INTERP PVRDRIChromaSittingToIMGInterp(const PVRDRIImageFormat *psFormat,
-+						     enum __DRIChromaSiting eChromaSitting)
++IMG_YUV_CHROMA_INTERP
++PVRDRIChromaSittingToIMGInterp(const PVRDRIImageFormat *psFormat,
++                               unsigned int uChromaSitting)
 +{
-+	switch (psFormat->iDRIComponents)
-+	{
-+		case __DRI_IMAGE_COMPONENTS_R:
-+		case __DRI_IMAGE_COMPONENTS_RG:
-+		case __DRI_IMAGE_COMPONENTS_RGB:
-+		case __DRI_IMAGE_COMPONENTS_RGBA:
-+			return IMG_CHROMA_INTERP_UNDEFINED;
-+		case __DRI_IMAGE_COMPONENTS_Y_U_V:
-+		case __DRI_IMAGE_COMPONENTS_Y_UV:
-+		case __DRI_IMAGE_COMPONENTS_Y_XUXV:
-+#if defined(__DRI_IMAGE_COMPONENTS_EXTERNAL)
-+		case __DRI_IMAGE_COMPONENTS_EXTERNAL:
-+#endif
-+			break;
-+		default:
-+			errorMessage("Unrecognised DRI components (components = 0x%X)\n",
-+				     psFormat->iDRIComponents);
-+			unreachable("unhandled dri component");
-+			return IMG_CHROMA_INTERP_UNDEFINED;
-+	}
++   switch (psFormat->iDRIComponents) {
++   case PVRDRI_IMAGE_COMPONENTS_R:
++   case PVRDRI_IMAGE_COMPONENTS_RG:
++   case PVRDRI_IMAGE_COMPONENTS_RGB:
++   case PVRDRI_IMAGE_COMPONENTS_RGBA:
++      return IMG_CHROMA_INTERP_UNDEFINED;
++   case PVRDRI_IMAGE_COMPONENTS_Y_U_V:
++   case PVRDRI_IMAGE_COMPONENTS_Y_UV:
++   case PVRDRI_IMAGE_COMPONENTS_Y_XUXV:
++   case PVRDRI_IMAGE_COMPONENTS_EXTERNAL:
++      break;
++   default:
++      errorMessage("%s: Unrecognised DRI components (components = 0x%X)",
++                   __func__, psFormat->iDRIComponents);
++      unreachable("unhandled dri component");
++      return IMG_CHROMA_INTERP_UNDEFINED;
++   }
 +
-+	switch (eChromaSitting)
-+	{
-+		case __DRI_YUV_CHROMA_SITING_UNDEFINED:
-+		case __DRI_YUV_CHROMA_SITING_0:
-+			return IMG_CHROMA_INTERP_ZERO;
-+		case __DRI_YUV_CHROMA_SITING_0_5:
-+			return IMG_CHROMA_INTERP_HALF;
-+		default:
-+			errorMessage("Unrecognised DRI chroma sitting (chroma sitting = 0x%X)\n",
-+				     eChromaSitting);
-+			unreachable("unhandled chroma sitting");
-+			return IMG_CHROMA_INTERP_UNDEFINED;
-+	}
++   switch (uChromaSitting) {
++   case PVRDRI_YUV_CHROMA_SITING_UNDEFINED:
++   case PVRDRI_YUV_CHROMA_SITING_0:
++      return IMG_CHROMA_INTERP_ZERO;
++   case PVRDRI_YUV_CHROMA_SITING_0_5:
++      return IMG_CHROMA_INTERP_HALF;
++   default:
++      errorMessage ("%s: Unrecognised DRI chroma sitting (chroma sitting = 0x%X)",
++          __func__, uChromaSitting);
++      unreachable("unhandled chroma sitting");
++      return IMG_CHROMA_INTERP_UNDEFINED;
++   }
 +}
 +
-+bool PVRDRIGetSupportedFormats(PVRDRIScreen *psPVRScreen)
++bool
++PVRDRIGetSupportedFormats(struct DRISUPScreen *psPVRScreen)
 +{
-+	int *piFormats;
-+	IMG_PIXFMT *peImgFormats;
-+	bool bRet = false;
-+	unsigned i;
++   int *piFormats;
++   IMG_PIXFMT *peImgFormats;
++   bool bRet = false;
++   unsigned int i;
 +
-+	piFormats = malloc(ARRAY_SIZE(g_asFormats) * sizeof(*piFormats));
-+	peImgFormats = malloc(ARRAY_SIZE(g_asFormats) * sizeof(*peImgFormats));
++   piFormats = malloc(ARRAY_SIZE(g_asFormats) * sizeof(*piFormats));
++   peImgFormats = malloc(ARRAY_SIZE(g_asFormats) * sizeof(*peImgFormats));
 +
-+	psPVRScreen->pbHasFormat = malloc(ARRAY_SIZE(g_asFormats) *
-+					  sizeof(*psPVRScreen->pbHasFormat));
++   psPVRScreen->pbHasFormat = malloc(ARRAY_SIZE(g_asFormats) *
++                                     sizeof(*psPVRScreen->pbHasFormat));
 +
-+	psPVRScreen->psModifiers = calloc(ARRAY_SIZE(g_asFormats),
-+					   sizeof(*psPVRScreen->psModifiers));
++   psPVRScreen->psModifiers = calloc(ARRAY_SIZE(g_asFormats),
++                                     sizeof(*psPVRScreen->psModifiers));
 +
-+	if (!piFormats || !peImgFormats ||
-+	    !psPVRScreen->pbHasFormat || !psPVRScreen->psModifiers)
-+	{
-+		errorMessage("Out of memory\n");
++   if (!piFormats || !peImgFormats ||
++       !psPVRScreen->pbHasFormat || !psPVRScreen->psModifiers) {
++      errorMessage("%s: Out of memory", __func__);
++      goto err_free;
++   }
 +
-+		goto err_free;
-+	}
++   for (i = 0; i < ARRAY_SIZE(g_asFormats); i++) {
++      piFormats[i] = g_asFormats[i].iDRIFourCC;
++      peImgFormats[i] = g_asFormats[i].eIMGPixelFormat;
 +
-+	for (i = 0; i < ARRAY_SIZE(g_asFormats); i++)
-+	{
-+		piFormats[i] = g_asFormats[i].bQueryDmaBufFormatsExclude ?
-+			       0 : g_asFormats[i].iDRIFourCC;
++      psPVRScreen->psModifiers[i].iNumModifiers = -1;
++   }
 +
-+		peImgFormats[i] = g_asFormats[i].eIMGPixelFormat;
++   psPVRScreen->iNumFormats =
++      PVRDRIQuerySupportedFormats(psPVRScreen->psImpl, ARRAY_SIZE(g_asFormats),
++                                  piFormats, peImgFormats,
++                                  psPVRScreen->pbHasFormat);
++   if (psPVRScreen->iNumFormats == 0) {
++      __driUtilMessage("%s: Couldn't query supported pixel formats",
++                       __func__);
++      goto err_free;
++   }
 +
-+		psPVRScreen->psModifiers[i].iNumModifiers = -1;
-+	}
-+
-+	psPVRScreen->iNumFormats =
-+			PVRDRIQuerySupportedFormats(psPVRScreen->psImpl,
-+						    ARRAY_SIZE(g_asFormats),
-+						    piFormats,
-+						    peImgFormats,
-+						    psPVRScreen->pbHasFormat);
-+	if (psPVRScreen->iNumFormats == 0)
-+	{
-+		__driUtilMessage("Couldn't query supported pixel formats\n");
-+		goto err_free;
-+	}
-+
-+	bRet = true;
-+	goto cleanup;
++   bRet = true;
++   goto cleanup;
 +
 +err_free:
-+	free(psPVRScreen->psModifiers);
-+	psPVRScreen->psModifiers = NULL;
++   free(psPVRScreen->psModifiers);
++   psPVRScreen->psModifiers = NULL;
 +
-+	free(psPVRScreen->pbHasFormat);
-+	psPVRScreen->pbHasFormat = NULL;
++   free(psPVRScreen->pbHasFormat);
++   psPVRScreen->pbHasFormat = NULL;
 +cleanup:
-+	free(peImgFormats);
-+	free(piFormats);
-+	return bRet;
++   free(peImgFormats);
++   free(piFormats);
++   return bRet;
 +}
 +
-+GLboolean PVRDRIQueryDmaBufFormats(__DRIscreen *screen, int max,
-+				   int *formats, int *count)
++bool
++DRIMODQueryDMABufFormats(struct DRISUPScreen *psPVRScreen, int iMax,
++                         int *piFormats, int *piCount)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	int i, j;
++   int iLim;
++   unsigned int i;
++   int j;
 +
-+	assert(psPVRScreen->iNumFormats != 0);
++   assert(psPVRScreen->iNumFormats != 0);
 +
-+	if (psPVRScreen->iNumFormats < 0)
-+	{
-+		return GL_FALSE;
-+	}
++   if (psPVRScreen->iNumFormats < 0)
++      return false;
 +
-+	if (!max)
-+	{
-+		*count = psPVRScreen->iNumFormats;
-+		return GL_TRUE;
-+	}
++   iLim = (iMax) ? iMax : psPVRScreen->iNumFormats;
 +
-+	for (i = 0, j = 0; i < ARRAY_SIZE(g_asFormats) && j < max; i++)
-+	{
-+		if (psPVRScreen->pbHasFormat[i])
-+		{
-+			formats[j++] = g_asFormats[i].iDRIFourCC;
-+		}
-+	}
++   for (i = 0, j = 0; i < ARRAY_SIZE(g_asFormats) && j < iLim; i++) {
++      /*
++       * SRGB formats don't map to DRM formats, as defined by drm_fourcc.h, so
++       * should not be returned.
++       */
++      if (g_asFormats[i].bIsSRGB)
++         continue;
 +
-+	*count = j;
++      if (psPVRScreen->pbHasFormat[i] && g_asFormats[i].iDRIFourCC) {
++         if (iMax)
++            piFormats[j] = g_asFormats[i].iDRIFourCC;
++         j++;
++      }
++   }
 +
-+	return GL_TRUE;
++   *piCount = j;
++
++   return true;
 +}
 +
-+static bool PVRDRIGetSupportedModifiers(PVRDRIScreen *psPVRScreen,
-+					struct PVRDRIModifiers *psModifiers,
-+					const PVRDRIImageFormat *psFormat)
++static bool
++PVRDRIGetSupportedModifiers(struct DRISUPScreen *psPVRScreen,
++                            struct PVRDRIModifiers *psModifiers,
++                            const PVRDRIImageFormat *psFormat)
 +{
-+	int iNumModifiers;
++   int iNumModifiers;
 +
-+	iNumModifiers = PVRDRIQueryModifiers(psPVRScreen->psImpl,
-+					     psFormat->iDRIFourCC,
-+					     psFormat->eIMGPixelFormat,
-+					     NULL, NULL);
-+	if (iNumModifiers < 0)
-+	{
-+		errorMessage("Couldn't query modifiers for format 0x%x\n",
-+			     psFormat->iDRIFourCC);
-+		return false;
-+	}
++   iNumModifiers = PVRDRIQueryModifiers(psPVRScreen->psImpl,
++                                        psFormat->iDRIFourCC,
++                                        psFormat->eIMGPixelFormat,
++                                        NULL, NULL);
++   if (iNumModifiers < 0) {
++      errorMessage("%s: Couldn't query modifiers for format 0x%x",
++                   __func__, psFormat->iDRIFourCC);
++      return false;
++   }
 +
-+	psModifiers->puModifiers = malloc(iNumModifiers *
-+					  sizeof(*psModifiers->puModifiers));
-+	psModifiers->puExternalOnly = malloc(iNumModifiers *
-+					  sizeof(*psModifiers->puExternalOnly));
-+	if (!psModifiers->puModifiers || !psModifiers->puExternalOnly)
-+	{
-+		free(psModifiers->puModifiers);
-+		psModifiers->puModifiers = NULL;
++   psModifiers->puModifiers = malloc(iNumModifiers *
++                                     sizeof(*psModifiers->puModifiers));
++   psModifiers->puExternalOnly = malloc(iNumModifiers *
++                                        sizeof(*psModifiers->
++                                               puExternalOnly));
++   if (!psModifiers->puModifiers || !psModifiers->puExternalOnly) {
++      free(psModifiers->puModifiers);
++      psModifiers->puModifiers = NULL;
 +
-+		free(psModifiers->puExternalOnly);
-+		psModifiers->puExternalOnly = NULL;
++      free(psModifiers->puExternalOnly);
++      psModifiers->puExternalOnly = NULL;
 +
-+		errorMessage("Out of memory\n");
++      errorMessage("%s: Out of memory", __func__);
 +
-+		return false;
-+	}
-+	psModifiers->iNumModifiers = iNumModifiers;
++      return false;
++   }
++   psModifiers->iNumModifiers = iNumModifiers;
 +
-+	iNumModifiers = PVRDRIQueryModifiers(psPVRScreen->psImpl,
-+					    psFormat->iDRIFourCC,
-+					    psFormat->eIMGPixelFormat,
-+					    psModifiers->puModifiers,
-+					    psModifiers->puExternalOnly);
++   iNumModifiers = PVRDRIQueryModifiers(psPVRScreen->psImpl,
++                                        psFormat->iDRIFourCC,
++                                        psFormat->eIMGPixelFormat,
++                                        psModifiers->puModifiers,
++                                        psModifiers->puExternalOnly);
 +
-+	assert(iNumModifiers == psModifiers->iNumModifiers);
++   assert(iNumModifiers == psModifiers->iNumModifiers);
 +
-+	return true;
++   return true;
 +}
 +
-+static bool PVRDRIGetModifiersForFormat(PVRDRIScreen *psPVRScreen,
-+					int fourcc,
-+					const PVRDRIImageFormat **ppsFormat,
-+					const struct PVRDRIModifiers **ppsModifiers)
++static bool
++PVRDRIGetModifiersForFormat(struct DRISUPScreen *psPVRScreen, int iFourCC,
++                            const PVRDRIImageFormat **ppsFormat,
++                            const struct PVRDRIModifiers **ppsModifiers)
 +{
-+	const PVRDRIImageFormat *psFormat;
-+	struct PVRDRIModifiers *psModifiers;
-+	unsigned uIdx;
++   const PVRDRIImageFormat *psFormat;
++   struct PVRDRIModifiers *psModifiers;
++   unsigned int uIdx;
 +
-+	assert(psPVRScreen->iNumFormats != 0);
++   assert(psPVRScreen->iNumFormats != 0);
 +
-+	if (psPVRScreen->iNumFormats < 0)
-+	{
-+		return false;
-+	}
++   if (psPVRScreen->iNumFormats < 0)
++      return false;
 +
-+	psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, fourcc);
-+	if (!psFormat)
-+	{
-+		return false;
-+	}
++   psFormat = PVRDRIFourCCToImageFormat(psPVRScreen, iFourCC);
++   if (!psFormat)
++      return false;
 +
-+	uIdx = psFormat - g_asFormats;
-+	psModifiers = &psPVRScreen->psModifiers[uIdx];
++   uIdx = psFormat - g_asFormats;
++   psModifiers = &psPVRScreen->psModifiers[uIdx];
 +
-+	if (psModifiers->iNumModifiers < 0)
-+	{
-+		if (!PVRDRIGetSupportedModifiers(psPVRScreen,
-+						 psModifiers,
-+						 psFormat))
-+		{
-+			return false;
-+		}
-+	}
++   if (psModifiers->iNumModifiers < 0)
++      if (!PVRDRIGetSupportedModifiers(psPVRScreen, psModifiers, psFormat))
++         return false;
 +
-+	*ppsFormat = psFormat;
-+	*ppsModifiers = psModifiers;
++   *ppsFormat = psFormat;
++   *ppsModifiers = psModifiers;
 +
-+	return true;
++   return true;
 +}
 +
-+bool PVRDRIValidateImageModifier(PVRDRIScreen *psPVRScreen, const int iFourcc,
-+				 const uint64_t uiModifier)
++bool
++PVRDRIValidateImageModifier(struct DRISUPScreen *psPVRScreen,
++                            const int iFourCC, const uint64_t uiModifier)
 +{
-+	const PVRDRIImageFormat *psFormat;
-+	const struct PVRDRIModifiers *psModifiers;
++   const PVRDRIImageFormat *psFormat;
++   const struct PVRDRIModifiers *psModifiers;
 +
-+	if (!PVRDRIGetModifiersForFormat(psPVRScreen, iFourcc, &psFormat,
-+					 &psModifiers))
-+	{
-+		return false;
-+	}
++   if (!PVRDRIGetModifiersForFormat(psPVRScreen, iFourCC, &psFormat,
++                                    &psModifiers))
++      return false;
 +
-+	for (unsigned i = 0; i < psModifiers->iNumModifiers; i++)
-+	{
-+		if (psModifiers->puModifiers[i] == uiModifier)
-+		{
-+			return true;
-+		}
-+	}
++   for (int i = 0; i < psModifiers->iNumModifiers; i++)
++      if (psModifiers->puModifiers[i] == uiModifier)
++         return true;
 +
-+	return false;
++   return false;
 +}
 +
-+GLboolean PVRDRIQueryDmaBufModifiers(__DRIscreen *screen, int fourcc,
-+				     int max, uint64_t *modifiers,
-+				     unsigned int *external_only,
-+				     int *count)
++bool
++DRIMODQueryDMABufModifiers(struct DRISUPScreen *psPVRScreen, int iFourCC,
++                           int iMax, uint64_t *puModifiers,
++                           unsigned int *puExternalOnly, int *piCount)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	const PVRDRIImageFormat *psFormat;
-+	const struct PVRDRIModifiers *psModifiers;
-+	int num_copy;
++   const PVRDRIImageFormat *psFormat;
++   const struct PVRDRIModifiers *psModifiers;
++   int iNumCopy;
 +
-+	if (!PVRDRIGetModifiersForFormat(psPVRScreen,
-+					fourcc,
-+					&psFormat,
-+					&psModifiers))
-+	{
-+		return GL_FALSE;
-+	}
++   if (!PVRDRIGetModifiersForFormat(psPVRScreen, iFourCC, &psFormat,
++                                    &psModifiers))
++      return false;
 +
-+	if (!max)
-+	{
-+		*count = psModifiers->iNumModifiers;
-+		return GL_TRUE;
-+	}
++   if (!iMax) {
++      *piCount = psModifiers->iNumModifiers;
++      return true;
++   }
 +
-+	num_copy = (max < psModifiers->iNumModifiers) ?
-+			max : psModifiers->iNumModifiers;
++   iNumCopy = (iMax < psModifiers->iNumModifiers) ?
++      iMax : psModifiers->iNumModifiers;
 +
-+	if (modifiers)
-+	{
-+		(void) memcpy(modifiers,
-+			      psModifiers->puModifiers,
-+			      sizeof(*modifiers) * num_copy);
-+	}
++   if (puModifiers)
++      (void) memcpy(puModifiers, psModifiers->puModifiers,
++                    sizeof(*puModifiers) * iNumCopy);
 +
-+	if (external_only)
-+	{
-+		(void) memcpy(external_only,
-+			      psModifiers->puExternalOnly,
-+			      sizeof(*external_only) * num_copy);
-+	}
++   if (puExternalOnly)
++      (void) memcpy(puExternalOnly, psModifiers->puExternalOnly,
++                    sizeof(*puExternalOnly) * iNumCopy);
 +
-+	*count = num_copy;
++   *piCount = iNumCopy;
 +
-+	return GL_TRUE;
++   return true;
 +}
 +
-+GLboolean PVRDRIQueryDmaBufFormatModifierAttribs(__DRIscreen *screen,
-+						 uint32_t fourcc,
-+						 uint64_t modifier,
-+						 int attrib,
-+						 uint64_t *value)
++bool
++DRIMODQueryDMABufFormatModifierAttribs(struct DRISUPScreen *psPVRScreen,
++                                       uint32_t uFourCC, uint64_t uModifier,
++                                       int iAttribute, uint64_t *puValue)
 +{
-+	PVRDRIScreen *psPVRScreen = DRIScreenPrivate(screen);
-+	const PVRDRIImageFormat *psFormat;
-+	const struct PVRDRIModifiers *psModifiers;
-+	int i;
++   const PVRDRIImageFormat *psFormat;
++   const struct PVRDRIModifiers *psModifiers;
++   int i;
 +
-+	if (!PVRDRIGetModifiersForFormat(psPVRScreen,
-+					fourcc,
-+					&psFormat,
-+					&psModifiers))
-+	{
-+		return GL_FALSE;
-+	}
++   if (!PVRDRIGetModifiersForFormat(psPVRScreen, uFourCC, &psFormat,
++                                    &psModifiers))
++      return false;
 +
-+	for (i = 0; i < psModifiers->iNumModifiers; i++)
-+	{
-+		if (psModifiers->puModifiers[i] == modifier)
-+		{
-+			break;
-+		}
-+	}
-+	if (i == psModifiers->iNumModifiers)
-+	{
-+		return GL_FALSE;
-+	}
++   for (i = 0; i < psModifiers->iNumModifiers; i++)
++      if (psModifiers->puModifiers[i] == uModifier)
++         break;
 +
-+	switch (attrib)
-+	{
-+		case __DRI_IMAGE_FORMAT_MODIFIER_ATTRIB_PLANE_COUNT:
-+			*value = psFormat->uiNumPlanes;
-+			break;
-+		default:
-+			return GL_FALSE;
-+	}
++   if (i == psModifiers->iNumModifiers)
++      return false;
 +
-+	return GL_TRUE;
++   switch (iAttribute) {
++   case PVRDRI_IMAGE_FORMAT_MODIFIER_ATTRIB_PLANE_COUNT:
++      *puValue = psFormat->uiNumPlanes;
++      break;
++   default:
++      return false;
++   }
++
++   return true;
 +}
 +
-+void PVRDRIDestroyFormatInfo(PVRDRIScreen *psPVRScreen)
++void
++PVRDRIDestroyFormatInfo(struct DRISUPScreen *psPVRScreen)
 +{
-+	unsigned i;
++   unsigned int i;
 +
-+	if (psPVRScreen->psModifiers)
-+	{
-+		for (i = 0; i < ARRAY_SIZE(g_asFormats); i++)
-+		{
-+			free(psPVRScreen->psModifiers[i].puModifiers);
-+			free(psPVRScreen->psModifiers[i].puExternalOnly);
-+		}
-+		free(psPVRScreen->psModifiers);
-+	}
++   if (psPVRScreen->psModifiers) {
++      for (i = 0; i < ARRAY_SIZE(g_asFormats); i++) {
++         free(psPVRScreen->psModifiers[i].puModifiers);
++         free(psPVRScreen->psModifiers[i].puExternalOnly);
++      }
++      free(psPVRScreen->psModifiers);
++   }
 +
-+	free(psPVRScreen->pbHasFormat);
++   free(psPVRScreen->pbHasFormat);
++}
++
++bool
++PVRDRIGetMesaFormats(struct DRISUPScreen *psPVRScreen)
++{
++   const unsigned int auMesaFormatsBase[] = {
++      PVRDRI_MESA_FORMAT_B8G8R8A8_UNORM,
++      PVRDRI_MESA_FORMAT_B8G8R8A8_SRGB,
++      PVRDRI_MESA_FORMAT_B8G8R8X8_UNORM,
++      PVRDRI_MESA_FORMAT_B5G6R5_UNORM,
++   };
++   const unsigned int auMesaFormatsRGB[] = {
++      PVRDRI_MESA_FORMAT_R8G8B8A8_UNORM,
++      PVRDRI_MESA_FORMAT_R8G8B8A8_SRGB,
++      PVRDRI_MESA_FORMAT_R8G8B8X8_UNORM,
++   };
++   unsigned int uSizeMesaFormats;
++   bool bCapRGB;
++   unsigned int i, j;
++
++   bCapRGB = MODSUPGetCapability(psPVRScreen->psDRIScreen,
++                                 PVRDRI_LOADER_CAP_RGBA_ORDERING) != 0;
++
++   uSizeMesaFormats = sizeof(auMesaFormatsBase);
++   if (bCapRGB)
++      uSizeMesaFormats += sizeof(auMesaFormatsRGB);
++
++   /*
++    * We haven't checked if any of the Mesa formats are supported by the DDK
++    * at this point, so we may allocate more memory than we need.
++    */
++   psPVRScreen->puMesaFormats = malloc(uSizeMesaFormats);
++   if (psPVRScreen->puMesaFormats == NULL) {
++      __driUtilMessage("%s: Out of memory", __func__);
++      return false;
++   }
++
++   for (i = 0, j = 0; i < ARRAY_SIZE(auMesaFormatsBase); i++) {
++      unsigned int uMesaFormat = auMesaFormatsBase[i];
++
++      if (!PVRDRIMesaFormatSupported(uMesaFormat))
++         continue;
++
++      psPVRScreen->puMesaFormats[j++] = uMesaFormat;
++   }
++
++   if (bCapRGB) {
++      for (i = 0; i < ARRAY_SIZE(auMesaFormatsRGB); i++) {
++         unsigned int uMesaFormat = auMesaFormatsRGB[i];
++
++         if (!PVRDRIMesaFormatSupported(uMesaFormat))
++            continue;
++
++         psPVRScreen->puMesaFormats[j++] = uMesaFormat;
++      }
++   }
++
++   assert((j * sizeof(psPVRScreen->puMesaFormats[0])) <=
++          uSizeMesaFormats);
++
++   psPVRScreen->uNumMesaFormats = j;
++
++   return true;
++}
++
++void
++PVRDRIFreeMesaFormats(struct DRISUPScreen *psPVRScreen)
++{
++   free(psPVRScreen->puMesaFormats);
 +}
 diff --git a/src/meson.build b/src/meson.build
-index 60b0d640193..c4f5479189d 100644
+index 60b0d640193..3e1d1741b04 100644
 --- a/src/meson.build
 +++ b/src/meson.build
-@@ -26,6 +26,7 @@ inc_src = include_directories('.')
- inc_gallium = include_directories('gallium/include')
+@@ -27,6 +27,7 @@ inc_gallium = include_directories('gallium/include')
  inc_gallium_aux = include_directories('gallium/auxiliary')
  inc_amd_common = include_directories('amd/common')
-+inc_pvr = include_directories('mesa/main', 'mapi/glapi')
  
++inc_pvr = include_directories('mesa/main', 'mapi/glapi')
  libglsl_util = static_library(
    'glsl_util',
+   files(
 -- 
-2.22.0
+2.28.0
 
diff --git a/media-libs/mesa-img/mesa-img-19.0_pre1-r6.ebuild b/media-libs/mesa-img/mesa-img-19.0_pre1-r7.ebuild
similarity index 100%
rename from media-libs/mesa-img/mesa-img-19.0_pre1-r6.ebuild
rename to media-libs/mesa-img/mesa-img-19.0_pre1-r7.ebuild
diff --git a/media-libs/mesa-img/mesa-img-19.0_pre1.ebuild b/media-libs/mesa-img/mesa-img-19.0_pre1.ebuild
index ca8cf4d..a3563bb 100644
--- a/media-libs/mesa-img/mesa-img-19.0_pre1.ebuild
+++ b/media-libs/mesa-img/mesa-img-19.0_pre1.ebuild
@@ -11,6 +11,7 @@
 
 EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_EGIT_BRANCH="mesa-img"
 CROS_WORKON_MANUAL_UPREV="1"
 
 if [[ ${PV} = 9999* ]]; then
diff --git a/media-libs/mesa-iris/mesa-iris-20.2.1-r14.ebuild b/media-libs/mesa-iris/mesa-iris-20.2.1-r14.ebuild
deleted file mode 100644
index 14fafd0..0000000
--- a/media-libs/mesa-iris/mesa-iris-20.2.1-r14.ebuild
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="08c0cc5028afa38522762872176f8f424cbc8d59"
-CROS_WORKON_TREE="80bd75d79f29e0c38289ee2a975c26522c231b6f"
-CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
-CROS_WORKON_LOCALNAME="mesa-iris"
-CROS_WORKON_EGIT_BRANCH="chromeos-iris"
-
-KEYWORDS="*"
-
-inherit base meson flag-o-matic cros-workon
-
-DESCRIPTION="The Mesa 3D Graphics Library"
-HOMEPAGE="http://mesa3d.org/"
-
-# Most of the code is MIT/X11.
-# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
-LICENSE="MIT SGI-B-2.0"
-
-IUSE="debug vulkan tools"
-
-COMMON_DEPEND="
-	dev-libs/expat:=
-	>=x11-libs/libdrm-2.4.94:=
-"
-
-RDEPEND="${COMMON_DEPEND}
-"
-
-DEPEND="${COMMON_DEPEND}
-"
-
-BDEPEND="
-	sys-devel/bison
-	sys-devel/flex
-	virtual/pkgconfig
-"
-
-src_configure() {
-	emesonargs+=(
-		-Dllvm=false
-		-Ddri3=false
-		-Dshader-cache=false
-		-Dglx=disabled
-		-Degl=true
-		-Dgbm=false
-		-Dgles1=false
-		-Dgles2=true
-		-Dshared-glapi=true
-		-Ddri-drivers=
-		-Dgallium-drivers=iris
-		-Dgallium-vdpau=false
-		-Dgallium-xa=false
-		-Dplatforms=surfaceless
-		-Dtools=$(usex tools intel '')
-		--buildtype $(usex debug debug release)
- 		-Dvulkan-drivers=$(usex vulkan intel '')
-	)
-
-	meson_src_configure
-}
-
-src_install() {
-	meson_src_install
-
-	rm -v -rf "${ED}/usr/include"
-}
diff --git a/media-libs/mesa-iris/mesa-iris-21.1.1-r26.ebuild b/media-libs/mesa-iris/mesa-iris-21.1.1-r26.ebuild
new file mode 100644
index 0000000..c1bb33c
--- /dev/null
+++ b/media-libs/mesa-iris/mesa-iris-21.1.1-r26.ebuild
@@ -0,0 +1,72 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="efbaa7b580468b0e4861a70dbd1b56266b393d36"
+CROS_WORKON_TREE="f623425a2c035582400821c0eb4451faaac1b9f2"
+CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_LOCALNAME="mesa-iris"
+CROS_WORKON_EGIT_BRANCH="chromeos-iris"
+
+KEYWORDS="*"
+
+inherit base meson flag-o-matic cros-workon
+
+DESCRIPTION="The Mesa 3D Graphics Library"
+HOMEPAGE="http://mesa3d.org/"
+
+# Most of the code is MIT/X11.
+# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
+LICENSE="MIT SGI-B-2.0"
+
+IUSE="debug vulkan tools"
+
+COMMON_DEPEND="
+	dev-libs/expat:=
+	>=x11-libs/libdrm-2.4.94:=
+"
+
+RDEPEND="${COMMON_DEPEND}
+"
+
+DEPEND="${COMMON_DEPEND}
+"
+
+BDEPEND="
+	sys-devel/bison
+	sys-devel/flex
+	virtual/pkgconfig
+"
+
+src_configure() {
+	emesonargs+=(
+		-Dllvm=disabled
+		-Ddri3=disabled
+		-Dshader-cache=disabled
+		-Dglx=disabled
+		-Degl=enabled
+		-Dgbm=disabled
+		-Dgles1=disabled
+		-Dgles2=enabled
+		-Dshared-glapi=enabled
+		-Ddri-drivers=
+		-Dgallium-drivers=iris
+		-Dgallium-vdpau=disabled
+		-Dgallium-xa=disabled
+		# Set platforms empty to avoid the default "auto" setting. If
+		# platforms is empty meson.build will add surfaceless.
+		-Dplatforms=''
+		-Dtools=$(usex tools intel '')
+		--buildtype $(usex debug debug release)
+ 		-Dvulkan-drivers=$(usex vulkan intel '')
+	)
+
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	rm -v -rf "${ED}/usr/include"
+}
diff --git a/media-libs/mesa-iris/mesa-iris-9999.ebuild b/media-libs/mesa-iris/mesa-iris-9999.ebuild
index c01e307..c08e446 100644
--- a/media-libs/mesa-iris/mesa-iris-9999.ebuild
+++ b/media-libs/mesa-iris/mesa-iris-9999.ebuild
@@ -39,20 +39,22 @@
 
 src_configure() {
 	emesonargs+=(
-		-Dllvm=false
-		-Ddri3=false
-		-Dshader-cache=false
+		-Dllvm=disabled
+		-Ddri3=disabled
+		-Dshader-cache=disabled
 		-Dglx=disabled
-		-Degl=true
-		-Dgbm=false
-		-Dgles1=false
-		-Dgles2=true
-		-Dshared-glapi=true
+		-Degl=enabled
+		-Dgbm=disabled
+		-Dgles1=disabled
+		-Dgles2=enabled
+		-Dshared-glapi=enabled
 		-Ddri-drivers=
 		-Dgallium-drivers=iris
-		-Dgallium-vdpau=false
-		-Dgallium-xa=false
-		-Dplatforms=surfaceless
+		-Dgallium-vdpau=disabled
+		-Dgallium-xa=disabled
+		# Set platforms empty to avoid the default "auto" setting. If
+		# platforms is empty meson.build will add surfaceless.
+		-Dplatforms=''
 		-Dtools=$(usex tools intel '')
 		--buildtype $(usex debug debug release)
  		-Dvulkan-drivers=$(usex vulkan intel '')
diff --git a/media-libs/mesa-llvmpipe/mesa-llvmpipe-20.1.3-r2.ebuild b/media-libs/mesa-llvmpipe/mesa-llvmpipe-20.1.3-r3.ebuild
similarity index 100%
rename from media-libs/mesa-llvmpipe/mesa-llvmpipe-20.1.3-r2.ebuild
rename to media-libs/mesa-llvmpipe/mesa-llvmpipe-20.1.3-r3.ebuild
diff --git a/media-libs/mesa-llvmpipe/mesa-llvmpipe-20.1.ebuild b/media-libs/mesa-llvmpipe/mesa-llvmpipe-20.1.ebuild
index ec2a137..039d256 100644
--- a/media-libs/mesa-llvmpipe/mesa-llvmpipe-20.1.ebuild
+++ b/media-libs/mesa-llvmpipe/mesa-llvmpipe-20.1.ebuild
@@ -13,6 +13,7 @@
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
 CROS_WORKON_MANUAL_UPREV="1"
 CROS_WORKON_LOCALNAME="mesa"
+CROS_WORKON_EGIT_BRANCH="master"
 
 if [[ ${PV} = 9999* ]]; then
 	GIT_ECLASS="git-2"
@@ -130,7 +131,7 @@
 	# For llvmpipe on ARM we'll get errors about being unable to resolve
 	# "__aeabi_unwind_cpp_pr1" if we don't include this flag; seems wise
 	# to include it for all platforms though.
-	use video_cards_llvmpipe && append-flags "-rtlib=libgcc -shared-libgcc"
+	use video_cards_llvmpipe && append-flags "-rtlib=libgcc -shared-libgcc --unwindlib=libgcc"
 
 	if use !gallium && use !classic && use !vulkan; then
 		ewarn "You enabled neither classic, gallium, nor vulkan "
diff --git a/media-libs/mesa-llvmpipe/mesa-llvmpipe-9999.ebuild b/media-libs/mesa-llvmpipe/mesa-llvmpipe-9999.ebuild
index beca8b3..18297a5 100644
--- a/media-libs/mesa-llvmpipe/mesa-llvmpipe-9999.ebuild
+++ b/media-libs/mesa-llvmpipe/mesa-llvmpipe-9999.ebuild
@@ -10,6 +10,7 @@
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
 CROS_WORKON_MANUAL_UPREV="1"
 CROS_WORKON_LOCALNAME="mesa"
+CROS_WORKON_EGIT_BRANCH="master"
 
 if [[ ${PV} = 9999* ]]; then
 	GIT_ECLASS="git-2"
diff --git a/media-libs/mesa-panfrost/mesa-panfrost-9999.ebuild b/media-libs/mesa-panfrost/mesa-panfrost-9999.ebuild
index 495f633..38a55f9 100644
--- a/media-libs/mesa-panfrost/mesa-panfrost-9999.ebuild
+++ b/media-libs/mesa-panfrost/mesa-panfrost-9999.ebuild
@@ -7,6 +7,7 @@
 CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
 CROS_WORKON_LOCALNAME="mesa"
 CROS_WORKON_MANUAL_UPREV="1"
+CROS_WORKON_EGIT_BRANCH="mesa-20.3"
 
 KEYWORDS="~*"
 
diff --git a/media-libs/mesa/OWNERS b/media-libs/mesa/OWNERS
new file mode 100644
index 0000000..f7005e3
--- /dev/null
+++ b/media-libs/mesa/OWNERS
@@ -0,0 +1 @@
+ihf@chromium.org
diff --git a/media-libs/mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-CML-GT1.patch b/media-libs/mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-CML-GT1.patch
new file mode 100644
index 0000000..a408069
--- /dev/null
+++ b/media-libs/mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-CML-GT1.patch
@@ -0,0 +1,39 @@
+From 276e3927b54292b2c0687b1f9bbcc0d69e314de7 Mon Sep 17 00:00:00 2001
+From: Abhishek Kumar <abhishek4.kumar@intel.com>
+Date: Mon, 18 Jan 2021 10:24:23 +0530
+Subject: [PATCH 002/188] intel: change urb max shader geometry for CML GT1
+
+Below deqp cts failure is seen on CML GT1 only , GT2 all test
+passes, changing the max shader geometry to 256 (previous 640)
+fixes all failure tests.Similar issue on BDW GT1
+https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3173
+
+dEQP-GLES31.functional.geometry_shading.layered.
+		render_with_default_layer_cubemap
+		render_with_default_layer_3d
+		render_with_default_layer_2d_array
+
+Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4102
+
+Signed-off-by: Abhishek Kumar <abhishek4.kumar@intel.com>
+Acked-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8550>
+---
+ src/intel/dev/gen_device_info.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/intel/dev/gen_device_info.c b/src/intel/dev/gen_device_info.c
+index 5e26dc10b8c7..242251564658 100644
+--- a/src/intel/dev/gen_device_info.c
++++ b/src/intel/dev/gen_device_info.c
+@@ -764,6 +764,7 @@ static const struct gen_device_info gen_device_info_cfl_gt1 = {
+     * leading to some vertices to go missing if we use too much URB.
+     */
+    .urb.max_entries[MESA_SHADER_VERTEX] = 928,
++   .urb.max_entries[MESA_SHADER_GEOMETRY] = 256,
+    .simulator_id = 24,
+ };
+ static const struct gen_device_info gen_device_info_cfl_gt2 = {
+-- 
+2.7.4
+
diff --git a/media-libs/mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-KBL-GT1.patch b/media-libs/mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-KBL-GT1.patch
new file mode 100644
index 0000000..be6c1da
--- /dev/null
+++ b/media-libs/mesa/files/UPSTREAM-intel-change-urb-max-shader-geometry-for-KBL-GT1.patch
@@ -0,0 +1,38 @@
+From 26c9574bdb16d7f6cbe06cd5ef5d1ce258afc1ba Mon Sep 17 00:00:00 2001
+From: Abhishek Kumar <abhishek4.kumar@intel.com>
+Date: Tue, 26 Jan 2021 23:50:13 +0530
+Subject: [PATCH] intel: change urb max shader geometry for KBL GT1
+
+Below Deqp CTS failure is seen on KBL GT1(tested on 0x5906) only ,
+GT2 all test passes, changing the max shader geometry to 256
+(previous 640) fixes all failure tests.Similar issues on
+CML GT1 (Gen9) is fixed
+https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8550
+
+dEQP-GLES31.functional.geometry_shading.layered.
+	 render_with_default_layer_cubemap
+	 render_with_default_layer_3d
+	 render_with_default_layer_2d_array
+
+Signed-off-by: Abhishek Kumar <abhishek4.kumar@intel.com>
+Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
+Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8731>
+---
+ src/intel/dev/gen_device_info.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/intel/dev/gen_device_info.c b/src/intel/dev/gen_device_info.c
+index 242251564658..b29cc3d51a50 100644
+--- a/src/intel/dev/gen_device_info.c
++++ b/src/intel/dev/gen_device_info.c
+@@ -675,6 +675,7 @@ static const struct gen_device_info gen_device_info_kbl_gt1 = {
+     * leading to some vertices to go missing if we use too much URB.
+     */
+    .urb.max_entries[MESA_SHADER_VERTEX] = 928,
++   .urb.max_entries[MESA_SHADER_GEOMETRY] = 256,
+    .simulator_id = 16,
+ };
+ 
+-- 
+2.17.1
+
diff --git a/media-libs/mesa/mesa-20.2.0-r3.ebuild b/media-libs/mesa/mesa-20.2.0-r3.ebuild
deleted file mode 120000
index 4086334b..0000000
--- a/media-libs/mesa/mesa-20.2.0-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-mesa-20.2.ebuild
\ No newline at end of file
diff --git a/media-libs/mesa/mesa-20.2.ebuild b/media-libs/mesa/mesa-20.2.ebuild
deleted file mode 100644
index 3e527cf..0000000
--- a/media-libs/mesa/mesa-20.2.ebuild
+++ /dev/null
@@ -1,268 +0,0 @@
-# Copyright 1999-2019 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.9.ebuild,v 1.3 2010/12/05 17:19:14 arfrever Exp $
-
-EAPI=7
-
-MESON_AUTO_DEPEND=no
-
-CROS_WORKON_COMMIT="663d464366675bf6d44c5d4d00e04cbdfa3f6057"
-CROS_WORKON_TREE="b8d78e509c717d068a0199e10811bffd817f2dd4"
-
-EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
-CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
-CROS_WORKON_MANUAL_UPREV="1"
-CROS_WORKON_EGIT_BRANCH="mesa-20.2"
-
-if [[ ${PV} = 9999* ]]; then
-	GIT_ECLASS="git-2"
-	EXPERIMENTAL="true"
-fi
-
-inherit base multilib flag-o-matic meson toolchain-funcs ${GIT_ECLASS} cros-workon
-
-FOLDER="${PV/_rc*/}"
-[[ ${PV/_rc*/} == ${PV} ]] || FOLDER+="/RC"
-
-DESCRIPTION="OpenGL-like graphic library for Linux"
-HOMEPAGE="http://mesa3d.sourceforge.net/"
-
-#SRC_PATCHES="mirror://gentoo/${P}-gentoo-patches-01.tar.bz2"
-if [[ $PV = 9999* ]] || [[ -n ${CROS_WORKON_COMMIT} ]]; then
-	SRC_URI="${SRC_PATCHES}"
-else
-	SRC_URI="ftp://ftp.freedesktop.org/pub/mesa/${FOLDER}/${P}.tar.bz2
-		${SRC_PATCHES}"
-fi
-
-# Most of the code is MIT/X11.
-# ralloc is LGPL-3
-# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
-LICENSE="MIT LGPL-3 SGI-B-2.0"
-SLOT="0"
-KEYWORDS="*"
-
-INTEL_CARDS="intel"
-RADEON_CARDS="amdgpu radeon"
-VIDEO_CARDS="${INTEL_CARDS} ${RADEON_CARDS} freedreno llvmpipe mach64 mga nouveau r128 radeonsi savage sis softpipe tdfx via virgl vmware"
-for card in ${VIDEO_CARDS}; do
-	IUSE_VIDEO_CARDS+=" video_cards_${card}"
-done
-
-IUSE="${IUSE_VIDEO_CARDS}
-	+classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD
-	kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X"
-
-LIBDRM_DEPSTRING=">=x11-libs/libdrm-2.4.60"
-
-REQUIRED_USE="video_cards_amdgpu? ( llvm )
-	video_cards_llvmpipe? ( llvm )"
-
-# keep correct libdrm and dri2proto dep
-# keep blocks in rdepend for binpkg
-RDEPEND="
-	X? (
-		!<x11-base/xorg-server-1.7
-		>=x11-libs/libX11-1.3.99.901
-		x11-libs/libXdamage
-		x11-libs/libXext
-		x11-libs/libXrandr
-		x11-libs/libxshmfence
-		x11-libs/libXxf86vm
-	)
-	llvm? ( virtual/libelf )
-	dev-libs/expat
-	dev-libs/libgcrypt
-	virtual/udev
-	${LIBDRM_DEPSTRING}
-"
-
-DEPEND="${RDEPEND}
-	dev-libs/libxml2
-	sys-devel/bison
-	sys-devel/flex
-	virtual/pkgconfig
-	x11-base/xorg-proto
-	wayland? ( >=dev-libs/wayland-protocols-1.8 )
-	llvm? ( sys-devel/llvm )
-"
-
-driver_list() {
-	local drivers="$(sort -u <<< "${1// /$'\n'}")"
-	echo "${drivers//$'\n'/,}"
-}
-
-src_prepare() {
-	# FreeBSD 6.* doesn't have posix_memalign().
-	if [[ ${CHOST} == *-freebsd6.* ]]; then
-		sed -i \
-			-e "s/-DHAVE_POSIX_MEMALIGN//" \
-			configure.ac || die
-	fi
-
-	# Current meson 'auto' method does not work properly with cross
-	# compiling, so revert back to hard-coded 'config-tool' method.
-	# This should be fixed in a future meson release.  See:
-	# https://github.com/mesonbuild/meson/issues/7276
-	eapply "${FILESDIR}"/0001-Revert-meson-update-llvm-dependency-logic-for-meson-.patch
-
-	# Patch in the mesa build option to default the shader cache to disabled
-	# while still allowing it to be enabled via environment variable. This is
-	# landed in upstream mesa.
-	eapply "${FILESDIR}"/BACKPORT-disk_cache-build-option-for-disabled-by-def.patch
-
-	# Cherry-pick an anv dma-buf fix for virglrenderer Vulkan
-	eapply "${FILESDIR}"/UPSTREAM-anv-Add-DRM_RDWR-flag-in-anv_gem_handle_to_fd.patch
-
-	default
-}
-
-src_configure() {
-	tc-getPROG PKG_CONFIG pkg-config
-
-	cros_optimize_package_for_speed
-	# For llvmpipe on ARM we'll get errors about being unable to resolve
-	# "__aeabi_unwind_cpp_pr1" if we don't include this flag; seems wise
-	# to include it for all platforms though.
-	use video_cards_llvmpipe && append-flags "-rtlib=libgcc -shared-libgcc"
-
-	if use !gallium && use !classic && use !vulkan; then
-		ewarn "You enabled neither classic, gallium, nor vulkan "
-		ewarn "USE flags. No hardware drivers will be built."
-	fi
-
-	if use classic; then
-	# Configurable DRI drivers
-		# Intel code
-		dri_driver_enable video_cards_intel i965
-	fi
-
-	if use gallium; then
-	# Configurable gallium drivers
-		gallium_enable video_cards_llvmpipe swrast
-		gallium_enable video_cards_softpipe swrast
-
-		# Nouveau code
-		gallium_enable video_cards_nouveau nouveau
-
-		# ATI code
-		gallium_enable video_cards_radeon r300 r600
-		gallium_enable video_cards_amdgpu radeonsi
-
-		# Freedreno code
-		gallium_enable video_cards_freedreno freedreno
-
-		gallium_enable video_cards_virgl virgl
-	fi
-
-	if use vulkan; then
-		vulkan_enable video_cards_intel intel
-		vulkan_enable video_cards_amdgpu amd
-	fi
-
-	LLVM_ENABLE=false
-	if use llvm && use !video_cards_softpipe; then
-		emesonargs+=( -Dshared-llvm=false )
-		export LLVM_CONFIG=${SYSROOT}/usr/lib/llvm/bin/llvm-config-host
-		LLVM_ENABLE=true
-	fi
-
-	local egl_platforms=""
-	if use egl; then
-		egl_platforms="surfaceless"
-
-		if use drm; then
-			egl_platforms="${egl_platforms},drm"
-		fi
-
-		if use wayland; then
-			egl_platforms="${egl_platforms},wayland"
-		fi
-
-		if use X; then
-			egl_platforms="${egl_platforms},x11"
-		fi
-	fi
-
-	if use X; then
-		glx="dri"
-	else
-		glx="disabled"
-	fi
-
-	if use kvm_guest; then
-		emesonargs+=( -Ddri-search-path=/opt/google/cros-containers/lib )
-	fi
-
-	emesonargs+=(
-		-Dglx="${glx}"
-		-Dllvm="${LLVM_ENABLE}"
-		-Dplatforms="${egl_platforms}"
-		-Dshader-cache=default-disabled
-		$(meson_use egl)
-		$(meson_use gbm)
-		$(meson_use X gl)
-		$(meson_use gles1)
-		$(meson_use gles2)
-		$(meson_use selinux)
-		-Ddri-drivers=$(driver_list "${DRI_DRIVERS[*]}")
-		-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}")
-		-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}")
-		--buildtype $(usex debug debug release)
-	)
-
-	meson_src_configure
-}
-
-src_install() {
-	meson_src_install
-
-	# Remove redundant GLES headers
-	rm -f "${D}"/usr/include/{EGL,GLES2,GLES3,KHR}/*.h || die "Removing GLES headers failed."
-
-	dodir /usr/$(get_libdir)/dri
-	insinto "/usr/$(get_libdir)/dri/"
-	insopts -m0755
-	# install the gallium drivers we use
-	local gallium_drivers_files=( nouveau_dri.so r300_dri.so r600_dri.so msm_dri.so swrast_dri.so )
-	for x in ${gallium_drivers_files[@]}; do
-		if [ -f "${S}/$(get_libdir)/gallium/${x}" ]; then
-			doins "${S}/$(get_libdir)/gallium/${x}"
-		fi
-	done
-
-	# install classic drivers we use
-	local classic_drivers_files=( i810_dri.so i965_dri.so nouveau_vieux_dri.so radeon_dri.so r200_dri.so )
-	for x in ${classic_drivers_files[@]}; do
-		if [ -f "${S}/$(get_libdir)/${x}" ]; then
-			doins "${S}/$(get_libdir)/${x}"
-		fi
-	done
-
-	# Set driconf option to enable S3TC hardware decompression
-	insinto "/etc/"
-	doins "${FILESDIR}"/drirc
-}
-
-# $1 - VIDEO_CARDS flag (check skipped for "--")
-# other args - names of DRI drivers to enable
-dri_driver_enable() {
-	if [[ $1 == -- ]] || use $1; then
-		shift
-		DRI_DRIVERS+=("$@")
-	fi
-}
-
-gallium_enable() {
-	if [[ $1 == -- ]] || use $1; then
-		shift
-		GALLIUM_DRIVERS+=("$@")
-	fi
-}
-
-vulkan_enable() {
-	if [[ $1 == -- ]] || use $1; then
-		shift
-		VULKAN_DRIVERS+=("$@")
-	fi
-}
diff --git a/media-libs/mesa/mesa-21.0.2.ebuild b/media-libs/mesa/mesa-21.0.2.ebuild
new file mode 120000
index 0000000..5b9a11f
--- /dev/null
+++ b/media-libs/mesa/mesa-21.0.2.ebuild
@@ -0,0 +1 @@
+mesa-21.0.ebuild
\ No newline at end of file
diff --git a/media-libs/mesa/mesa-21.0.ebuild b/media-libs/mesa/mesa-21.0.ebuild
new file mode 100644
index 0000000..340a3c7
--- /dev/null
+++ b/media-libs/mesa/mesa-21.0.ebuild
@@ -0,0 +1,257 @@
+# Copyright 1999-2019 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.9.ebuild,v 1.3 2010/12/05 17:19:14 arfrever Exp $
+
+EAPI=7
+
+MESON_AUTO_DEPEND=no
+
+CROS_WORKON_COMMIT="8ec046344b57f7041952f018f14ef626de94fe5d"
+CROS_WORKON_TREE="b8d78e509c717d068a0199e10811bffd817f2dd4"
+
+EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
+CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_MANUAL_UPREV="1"
+CROS_WORKON_EGIT_BRANCH="mesa-21.0"
+
+if [[ ${PV} = 9999* ]]; then
+	GIT_ECLASS="git-2"
+	EXPERIMENTAL="true"
+fi
+
+inherit base multilib flag-o-matic meson toolchain-funcs ${GIT_ECLASS} cros-workon
+
+FOLDER="${PV/_rc*/}"
+[[ ${PV/_rc*/} == ${PV} ]] || FOLDER+="/RC"
+
+DESCRIPTION="OpenGL-like graphic library for Linux"
+HOMEPAGE="http://mesa3d.sourceforge.net/"
+
+#SRC_PATCHES="mirror://gentoo/${P}-gentoo-patches-01.tar.bz2"
+if [[ $PV = 9999* ]] || [[ -n ${CROS_WORKON_COMMIT} ]]; then
+	SRC_URI="${SRC_PATCHES}"
+else
+	SRC_URI="ftp://ftp.freedesktop.org/pub/mesa/${FOLDER}/${P}.tar.bz2
+		${SRC_PATCHES}"
+fi
+
+# Most of the code is MIT/X11.
+# ralloc is LGPL-3
+# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
+LICENSE="MIT LGPL-3 SGI-B-2.0"
+SLOT="0"
+KEYWORDS="*"
+
+INTEL_CARDS="intel"
+RADEON_CARDS="amdgpu radeon"
+VIDEO_CARDS="${INTEL_CARDS} ${RADEON_CARDS} freedreno llvmpipe mach64 mga nouveau r128 radeonsi savage sis softpipe tdfx via virgl vmware"
+for card in ${VIDEO_CARDS}; do
+	IUSE_VIDEO_CARDS+=" video_cards_${card}"
+done
+
+IUSE="${IUSE_VIDEO_CARDS}
+	+classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD
+	kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X"
+
+LIBDRM_DEPSTRING=">=x11-libs/libdrm-2.4.60"
+
+REQUIRED_USE="video_cards_amdgpu? ( llvm )
+	video_cards_llvmpipe? ( llvm )"
+
+# keep correct libdrm and dri2proto dep
+# keep blocks in rdepend for binpkg
+RDEPEND="
+	X? (
+		!<x11-base/xorg-server-1.7
+		>=x11-libs/libX11-1.3.99.901
+		x11-libs/libXdamage
+		x11-libs/libXext
+		x11-libs/libXrandr
+		x11-libs/libxshmfence
+		x11-libs/libXxf86vm
+	)
+	llvm? ( virtual/libelf )
+	dev-libs/expat
+	dev-libs/libgcrypt
+	virtual/udev
+	${LIBDRM_DEPSTRING}
+"
+
+DEPEND="${RDEPEND}
+	dev-libs/libxml2
+	sys-devel/bison
+	sys-devel/flex
+	virtual/pkgconfig
+	x11-base/xorg-proto
+	wayland? ( >=dev-libs/wayland-protocols-1.8 )
+	llvm? ( sys-devel/llvm )
+"
+
+driver_list() {
+	local drivers="$(sort -u <<< "${1// /$'\n'}")"
+	echo "${drivers//$'\n'/,}"
+}
+
+src_prepare() {
+	# FreeBSD 6.* doesn't have posix_memalign().
+	if [[ ${CHOST} == *-freebsd6.* ]]; then
+		sed -i \
+			-e "s/-DHAVE_POSIX_MEMALIGN//" \
+			configure.ac || die
+	fi
+
+	# Current meson 'auto' method does not work properly with cross
+	# compiling, so revert back to hard-coded 'config-tool' method.
+	# This should be fixed in a future meson release.  See:
+	# https://github.com/mesonbuild/meson/issues/7276
+	eapply "${FILESDIR}"/0001-Revert-meson-update-llvm-dependency-logic-for-meson-.patch
+
+	#Fix for deqp failures on CML/KBL GT1
+	eapply "${FILESDIR}"/UPSTREAM-intel-change-urb-max-shader-geometry-for-CML-GT1.patch
+	eapply "${FILESDIR}"/UPSTREAM-intel-change-urb-max-shader-geometry-for-KBL-GT1.patch
+	default
+}
+
+src_configure() {
+	tc-getPROG PKG_CONFIG pkg-config
+
+	cros_optimize_package_for_speed
+	# For llvmpipe on ARM we'll get errors about being unable to resolve
+	# "__aeabi_unwind_cpp_pr1" if we don't include this flag; seems wise
+	# to include it for all platforms though.
+	use video_cards_llvmpipe && append-flags "-rtlib=libgcc -shared-libgcc --unwindlib=libgcc"
+
+	if use !gallium && use !classic && use !vulkan; then
+		ewarn "You enabled neither classic, gallium, nor vulkan "
+		ewarn "USE flags. No hardware drivers will be built."
+	fi
+
+	if use classic; then
+	# Configurable DRI drivers
+		# Intel code
+		dri_driver_enable video_cards_intel i965
+	fi
+
+	if use gallium; then
+	# Configurable gallium drivers
+		gallium_enable video_cards_llvmpipe swrast
+		gallium_enable video_cards_softpipe swrast
+
+		# Nouveau code
+		gallium_enable video_cards_nouveau nouveau
+
+		# ATI code
+		gallium_enable video_cards_radeon r300 r600
+		gallium_enable video_cards_amdgpu radeonsi
+
+		# Freedreno code
+		gallium_enable video_cards_freedreno freedreno
+
+		gallium_enable video_cards_virgl virgl
+	fi
+
+	if use vulkan; then
+		vulkan_enable video_cards_intel intel
+		vulkan_enable video_cards_amdgpu amd
+	fi
+
+	LLVM_ENABLE=false
+	if use llvm && use !video_cards_softpipe; then
+		emesonargs+=( -Dshared-llvm=false )
+		export LLVM_CONFIG=${SYSROOT}/usr/lib/llvm/bin/llvm-config-host
+		LLVM_ENABLE=true
+	fi
+
+	local egl_platforms=""
+	if use egl; then
+		if use wayland; then
+			egl_platforms="${egl_platforms},wayland"
+		fi
+
+		if use X; then
+			egl_platforms="${egl_platforms},x11"
+		fi
+	fi
+	egl_platforms="${egl_platforms##,}"
+
+	if use X; then
+		glx="dri"
+	else
+		glx="disabled"
+	fi
+
+	if use kvm_guest; then
+		emesonargs+=( -Ddri-search-path=/opt/google/cros-containers/lib )
+	fi
+
+	emesonargs+=(
+		-Dglx="${glx}"
+		-Dllvm="${LLVM_ENABLE}"
+		-Dplatforms="${egl_platforms}"
+		-Dshader-cache-default=false
+		$(meson_feature egl)
+		$(meson_feature gbm)
+		$(meson_feature gles1)
+		$(meson_feature gles2)
+		$(meson_use selinux)
+		-Ddri-drivers=$(driver_list "${DRI_DRIVERS[*]}")
+		-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}")
+		-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}")
+		--buildtype $(usex debug debug release)
+	)
+
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	# Remove redundant GLES headers
+	rm -f "${D}"/usr/include/{EGL,GLES2,GLES3,KHR}/*.h || die "Removing GLES headers failed."
+
+	dodir /usr/$(get_libdir)/dri
+	insinto "/usr/$(get_libdir)/dri/"
+	insopts -m0755
+	# install the gallium drivers we use
+	local gallium_drivers_files=( nouveau_dri.so r300_dri.so r600_dri.so msm_dri.so swrast_dri.so )
+	for x in ${gallium_drivers_files[@]}; do
+		if [ -f "${S}/$(get_libdir)/gallium/${x}" ]; then
+			doins "${S}/$(get_libdir)/gallium/${x}"
+		fi
+	done
+
+	# install classic drivers we use
+	local classic_drivers_files=( i810_dri.so i965_dri.so nouveau_vieux_dri.so radeon_dri.so r200_dri.so )
+	for x in ${classic_drivers_files[@]}; do
+		if [ -f "${S}/$(get_libdir)/${x}" ]; then
+			doins "${S}/$(get_libdir)/${x}"
+		fi
+	done
+
+	# Set driconf option to enable S3TC hardware decompression
+	insinto "/etc/"
+	doins "${FILESDIR}"/drirc
+}
+
+# $1 - VIDEO_CARDS flag (check skipped for "--")
+# other args - names of DRI drivers to enable
+dri_driver_enable() {
+	if [[ $1 == -- ]] || use $1; then
+		shift
+		DRI_DRIVERS+=("$@")
+	fi
+}
+
+gallium_enable() {
+	if [[ $1 == -- ]] || use $1; then
+		shift
+		GALLIUM_DRIVERS+=("$@")
+	fi
+}
+
+vulkan_enable() {
+	if [[ $1 == -- ]] || use $1; then
+		shift
+		VULKAN_DRIVERS+=("$@")
+	fi
+}
diff --git a/media-libs/mesa/mesa-21.1-r1.ebuild b/media-libs/mesa/mesa-21.1-r1.ebuild
new file mode 120000
index 0000000..4327ac5
--- /dev/null
+++ b/media-libs/mesa/mesa-21.1-r1.ebuild
@@ -0,0 +1 @@
+mesa-21.1.ebuild
\ No newline at end of file
diff --git a/media-libs/mesa/mesa-21.1.ebuild b/media-libs/mesa/mesa-21.1.ebuild
new file mode 100644
index 0000000..1c0f2c3
--- /dev/null
+++ b/media-libs/mesa/mesa-21.1.ebuild
@@ -0,0 +1,248 @@
+# Copyright 1999-2019 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/media-libs/mesa/mesa-7.9.ebuild,v 1.3 2010/12/05 17:19:14 arfrever Exp $
+
+EAPI=7
+
+MESON_AUTO_DEPEND=no
+
+CROS_WORKON_COMMIT="0c94b3f55bc5f1db5aba3b294317b97241bfd9a0"
+CROS_WORKON_TREE="5d5b7c74a6aae79cfcfb57dcff3bc4574df27c32"
+
+EGIT_REPO_URI="git://anongit.freedesktop.org/mesa/mesa"
+CROS_WORKON_PROJECT="chromiumos/third_party/mesa"
+CROS_WORKON_MANUAL_UPREV="1"
+CROS_WORKON_EGIT_BRANCH="master"
+
+if [[ ${PV} = 9999* ]]; then
+	GIT_ECLASS="git-2"
+	EXPERIMENTAL="true"
+fi
+
+inherit base multilib flag-o-matic meson toolchain-funcs ${GIT_ECLASS} cros-workon
+
+FOLDER="${PV/_rc*/}"
+[[ ${PV/_rc*/} == ${PV} ]] || FOLDER+="/RC"
+
+DESCRIPTION="OpenGL-like graphic library for Linux"
+HOMEPAGE="http://mesa3d.sourceforge.net/"
+
+#SRC_PATCHES="mirror://gentoo/${P}-gentoo-patches-01.tar.bz2"
+if [[ $PV = 9999* ]] || [[ -n ${CROS_WORKON_COMMIT} ]]; then
+	SRC_URI="${SRC_PATCHES}"
+else
+	SRC_URI="ftp://ftp.freedesktop.org/pub/mesa/${FOLDER}/${P}.tar.bz2
+		${SRC_PATCHES}"
+fi
+
+# Most of the code is MIT/X11.
+# ralloc is LGPL-3
+# GLES[2]/gl[2]{,ext,platform}.h are SGI-B-2.0
+LICENSE="MIT LGPL-3 SGI-B-2.0"
+SLOT="0"
+KEYWORDS="~*"
+
+INTEL_CARDS="intel"
+RADEON_CARDS="amdgpu radeon"
+VIDEO_CARDS="${INTEL_CARDS} ${RADEON_CARDS} freedreno llvmpipe mach64 mga nouveau r128 radeonsi savage sis softpipe tdfx via virgl vmware"
+for card in ${VIDEO_CARDS}; do
+	IUSE_VIDEO_CARDS+=" video_cards_${card}"
+done
+
+IUSE="${IUSE_VIDEO_CARDS}
+	+classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD
+	kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X"
+
+LIBDRM_DEPSTRING=">=x11-libs/libdrm-2.4.60"
+
+REQUIRED_USE="video_cards_amdgpu? ( llvm )
+	video_cards_llvmpipe? ( llvm )"
+
+# keep correct libdrm and dri2proto dep
+# keep blocks in rdepend for binpkg
+RDEPEND="
+	X? (
+		!<x11-base/xorg-server-1.7
+		>=x11-libs/libX11-1.3.99.901
+		x11-libs/libXdamage
+		x11-libs/libXext
+		x11-libs/libXrandr
+		x11-libs/libxshmfence
+		x11-libs/libXxf86vm
+	)
+	llvm? ( virtual/libelf )
+	dev-libs/expat
+	dev-libs/libgcrypt
+	virtual/udev
+	${LIBDRM_DEPSTRING}
+"
+
+DEPEND="${RDEPEND}
+	dev-libs/libxml2
+	sys-devel/bison
+	sys-devel/flex
+	virtual/pkgconfig
+	x11-base/xorg-proto
+	wayland? ( >=dev-libs/wayland-protocols-1.8 )
+	llvm? ( sys-devel/llvm )
+"
+
+driver_list() {
+	local drivers="$(sort -u <<< "${1// /$'\n'}")"
+	echo "${drivers//$'\n'/,}"
+}
+
+src_prepare() {
+	# FreeBSD 6.* doesn't have posix_memalign().
+	if [[ ${CHOST} == *-freebsd6.* ]]; then
+		sed -i \
+			-e "s/-DHAVE_POSIX_MEMALIGN//" \
+			configure.ac || die
+	fi
+
+	default
+}
+
+src_configure() {
+	tc-getPROG PKG_CONFIG pkg-config
+
+	cros_optimize_package_for_speed
+	# For llvmpipe on ARM we'll get errors about being unable to resolve
+	# "__aeabi_unwind_cpp_pr1" if we don't include this flag; seems wise
+	# to include it for all platforms though.
+	use video_cards_llvmpipe && append-flags "-rtlib=libgcc -shared-libgcc --unwindlib=libgcc"
+
+	if use !gallium && use !classic && use !vulkan; then
+		ewarn "You enabled neither classic, gallium, nor vulkan "
+		ewarn "USE flags. No hardware drivers will be built."
+	fi
+
+	if use classic; then
+	# Configurable DRI drivers
+		# Intel code
+		dri_driver_enable video_cards_intel i965
+	fi
+
+	if use gallium; then
+	# Configurable gallium drivers
+		gallium_enable video_cards_llvmpipe swrast
+		gallium_enable video_cards_softpipe swrast
+
+		# Nouveau code
+		gallium_enable video_cards_nouveau nouveau
+
+		# ATI code
+		gallium_enable video_cards_radeon r300 r600
+		gallium_enable video_cards_amdgpu radeonsi
+
+		# Freedreno code
+		gallium_enable video_cards_freedreno freedreno
+
+		gallium_enable video_cards_virgl virgl
+	fi
+
+	if use vulkan; then
+		vulkan_enable video_cards_intel intel
+		vulkan_enable video_cards_amdgpu amd
+	fi
+
+	LLVM_ENABLE=false
+	if use llvm && use !video_cards_softpipe; then
+		emesonargs+=( -Dshared-llvm=false )
+		export LLVM_CONFIG=${SYSROOT}/usr/lib/llvm/bin/llvm-config-host
+		LLVM_ENABLE=true
+	fi
+
+	local egl_platforms=""
+	if use egl; then
+		if use wayland; then
+			egl_platforms="${egl_platforms},wayland"
+		fi
+
+		if use X; then
+			egl_platforms="${egl_platforms},x11"
+		fi
+	fi
+	egl_platforms="${egl_platforms##,}"
+
+	if use X; then
+		glx="dri"
+	else
+		glx="disabled"
+	fi
+
+	if use kvm_guest; then
+		emesonargs+=( -Ddri-search-path=/opt/google/cros-containers/lib )
+	fi
+
+	emesonargs+=(
+		-Dglx="${glx}"
+		-Dllvm="${LLVM_ENABLE}"
+		-Dplatforms="${egl_platforms}"
+		-Dshader-cache-default=false
+		$(meson_feature egl)
+		$(meson_feature gbm)
+		$(meson_feature gles1)
+		$(meson_feature gles2)
+		$(meson_use selinux)
+		-Ddri-drivers=$(driver_list "${DRI_DRIVERS[*]}")
+		-Dgallium-drivers=$(driver_list "${GALLIUM_DRIVERS[*]}")
+		-Dvulkan-drivers=$(driver_list "${VULKAN_DRIVERS[*]}")
+		--buildtype $(usex debug debug release)
+	)
+
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	# Remove redundant GLES headers
+	rm -f "${D}"/usr/include/{EGL,GLES2,GLES3,KHR}/*.h || die "Removing GLES headers failed."
+
+	dodir /usr/$(get_libdir)/dri
+	insinto "/usr/$(get_libdir)/dri/"
+	insopts -m0755
+	# install the gallium drivers we use
+	local gallium_drivers_files=( nouveau_dri.so r300_dri.so r600_dri.so msm_dri.so swrast_dri.so )
+	for x in ${gallium_drivers_files[@]}; do
+		if [ -f "${S}/$(get_libdir)/gallium/${x}" ]; then
+			doins "${S}/$(get_libdir)/gallium/${x}"
+		fi
+	done
+
+	# install classic drivers we use
+	local classic_drivers_files=( i810_dri.so i965_dri.so nouveau_vieux_dri.so radeon_dri.so r200_dri.so )
+	for x in ${classic_drivers_files[@]}; do
+		if [ -f "${S}/$(get_libdir)/${x}" ]; then
+			doins "${S}/$(get_libdir)/${x}"
+		fi
+	done
+
+	# Set driconf option to enable S3TC hardware decompression
+	insinto "/etc/"
+	doins "${FILESDIR}"/drirc
+}
+
+# $1 - VIDEO_CARDS flag (check skipped for "--")
+# other args - names of DRI drivers to enable
+dri_driver_enable() {
+	if [[ $1 == -- ]] || use $1; then
+		shift
+		DRI_DRIVERS+=("$@")
+	fi
+}
+
+gallium_enable() {
+	if [[ $1 == -- ]] || use $1; then
+		shift
+		GALLIUM_DRIVERS+=("$@")
+	fi
+}
+
+vulkan_enable() {
+	if [[ $1 == -- ]] || use $1; then
+		shift
+		VULKAN_DRIVERS+=("$@")
+	fi
+}
diff --git a/media-libs/minigbm/minigbm-0.0.1-r439.ebuild b/media-libs/minigbm/minigbm-0.0.1-r439.ebuild
deleted file mode 100644
index d109b7e..0000000
--- a/media-libs/minigbm/minigbm-0.0.1-r439.ebuild
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="9fe8c20f05116869f86d91fc542a17b9badf9ec3"
-CROS_WORKON_TREE="445cf807514840545f4e7761b911b42bbe92af07"
-CROS_WORKON_PROJECT="chromiumos/platform/minigbm"
-CROS_WORKON_LOCALNAME="../platform/minigbm"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit cros-sanitizers cros-workon cros-common.mk multilib
-
-DESCRIPTION="Mini GBM implementation"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/minigbm"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-VIDEO_CARDS="
-	amdgpu exynos intel marvell mediatek msm
-	radeon radeonsi rockchip tegra vc4 virgl
-"
-IUSE="-asan kernel-3_8 kernel-3_14 kernel-3_18 linear_align_256"
-for card in ${VIDEO_CARDS}; do
-	IUSE+=" video_cards_${card}"
-done
-
-MINI_GBM_PLATFORMS_USE=( mt8183 mt8192 )
-IUSE+=" ${MINI_GBM_PLATFORMS_USE[*]/#/minigbm_platform_}"
-
-RDEPEND="
-	x11-libs/libdrm
-	!media-libs/mesa[gbm]"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig
-	video_cards_amdgpu? (
-		virtual/opengles
-		x11-drivers/opengles-headers
-	)"
-
-src_prepare() {
-	default
-	sanitizers-setup-env
-	cros-common.mk_src_prepare
-}
-
-src_configure() {
-	export LIBDIR="/usr/$(get_libdir)"
-	append-cppflags -DDRI_DRIVER_DIR="/usr/$(get_libdir)/dri"
-	use video_cards_amdgpu && append-cppflags -DDRV_AMDGPU && export DRV_AMDGPU=1
-	use video_cards_exynos && append-cppflags -DDRV_EXYNOS && export DRV_EXYNOS=1
-	use video_cards_intel && append-cppflags -DDRV_I915 && export DRV_I915=1
-	if use video_cards_intel ; then
-		if ! (use kernel-3_8 || use kernel-3_14 || use kernel-3_18); then
-			append-cppflags -DI915_SCANOUT_Y_TILED
-		fi
-	fi
-	use video_cards_marvell && append-cppflags -DDRV_MARVELL && export DRV_MARVELL=1
-	use minigbm_platform_mt8183 && append-cppflags -DMTK_MT8183
-	use minigbm_platform_mt8192 && append-cppflags -DMTK_MT8192
-	use video_cards_mediatek && append-cppflags -DDRV_MEDIATEK && export DRV_MEDIATEK=1
-	use video_cards_msm && append-cppflags -DDRV_MSM && export DRV_MSM=1
-	use video_cards_radeon && append-cppflags -DDRV_RADEON && export DRV_RADEON=1
-	use video_cards_radeonsi && append-cppflags -DDRV_RADEON && export DRV_RADEON=1
-	use video_cards_rockchip && append-cppflags -DDRV_ROCKCHIP && export DRV_ROCKCHIP=1
-	use video_cards_tegra && append-cppflags -DDRV_TEGRA && export DRV_TEGRA=1
-	use video_cards_vc4 && append-cppflags -DDRV_VC4 && export DRV_VC4=1
-	use video_cards_virgl && append-cppflags -DDRV_VIRGL && export DRV_VIRGL=1
-	use linear_align_256 && append-cppflags -DLINEAR_ALIGN_256
-	cros-common.mk_src_configure
-}
-
-src_compile() {
-	cros-common.mk_src_compile
-}
-
-src_install() {
-	insinto "${EPREFIX}/etc/udev/rules.d"
-	doins "${FILESDIR}/50-vgem.rules"
-
-	default
-}
diff --git a/media-libs/minigbm/minigbm-0.0.1-r485.ebuild b/media-libs/minigbm/minigbm-0.0.1-r485.ebuild
new file mode 100644
index 0000000..7e99bc4
--- /dev/null
+++ b/media-libs/minigbm/minigbm-0.0.1-r485.ebuild
@@ -0,0 +1,85 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="bb9d4af4529b3019d830b8ef7e39479436b642af"
+CROS_WORKON_TREE="6db1492d66cd8acef88bacfe95f001e289adc55c"
+CROS_WORKON_PROJECT="chromiumos/platform/minigbm"
+CROS_WORKON_LOCALNAME="../platform/minigbm"
+CROS_WORKON_OUTOFTREE_BUILD=1
+
+inherit cros-sanitizers cros-workon cros-common.mk multilib
+
+DESCRIPTION="Mini GBM implementation"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/minigbm"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+VIDEO_CARDS="
+	amdgpu exynos intel marvell mediatek msm
+	radeon radeonsi rockchip tegra vc4 virgl
+"
+IUSE="-asan kernel-3_18 linear_align_256"
+for card in ${VIDEO_CARDS}; do
+	IUSE+=" video_cards_${card}"
+done
+
+MINI_GBM_PLATFORMS_USE=( mt8183 mt8192 mt8195 )
+IUSE+=" ${MINI_GBM_PLATFORMS_USE[*]/#/minigbm_platform_}"
+
+RDEPEND="
+	x11-libs/libdrm
+	!media-libs/mesa[gbm]"
+
+DEPEND="${RDEPEND}
+	virtual/pkgconfig
+	video_cards_amdgpu? (
+		virtual/opengles
+		x11-drivers/opengles-headers
+	)"
+
+src_prepare() {
+	default
+	sanitizers-setup-env
+	cros-common.mk_src_prepare
+}
+
+src_configure() {
+	export LIBDIR="/usr/$(get_libdir)"
+	append-cppflags -DDRI_DRIVER_DIR="/usr/$(get_libdir)/dri"
+	use video_cards_amdgpu && append-cppflags -DDRV_AMDGPU && export DRV_AMDGPU=1
+	use video_cards_exynos && append-cppflags -DDRV_EXYNOS && export DRV_EXYNOS=1
+	use video_cards_intel && append-cppflags -DDRV_I915 && export DRV_I915=1
+	if use video_cards_intel ; then
+		if ! use kernel-3_18; then
+			append-cppflags -DI915_SCANOUT_Y_TILED
+		fi
+	fi
+	use video_cards_marvell && append-cppflags -DDRV_MARVELL && export DRV_MARVELL=1
+	use minigbm_platform_mt8183 && append-cppflags -DMTK_MT8183
+	use minigbm_platform_mt8192 && append-cppflags -DMTK_MT8192
+	use minigbm_platform_mt8195 && append-cppflags -DMTK_MT8195
+	use video_cards_mediatek && append-cppflags -DDRV_MEDIATEK && export DRV_MEDIATEK=1
+	use video_cards_msm && append-cppflags -DDRV_MSM && export DRV_MSM=1
+	use video_cards_radeon && append-cppflags -DDRV_RADEON && export DRV_RADEON=1
+	use video_cards_radeonsi && append-cppflags -DDRV_RADEON && export DRV_RADEON=1
+	use video_cards_rockchip && append-cppflags -DDRV_ROCKCHIP && export DRV_ROCKCHIP=1
+	use video_cards_tegra && append-cppflags -DDRV_TEGRA && export DRV_TEGRA=1
+	use video_cards_vc4 && append-cppflags -DDRV_VC4 && export DRV_VC4=1
+	use video_cards_virgl && append-cppflags -DDRV_VIRGL && export DRV_VIRGL=1
+	use linear_align_256 && append-cppflags -DLINEAR_ALIGN_256
+	cros-common.mk_src_configure
+}
+
+src_compile() {
+	cros-common.mk_src_compile
+}
+
+src_install() {
+	insinto "${EPREFIX}/etc/udev/rules.d"
+	doins "${FILESDIR}/50-vgem.rules"
+
+	default
+}
diff --git a/media-libs/minigbm/minigbm-9999.ebuild b/media-libs/minigbm/minigbm-9999.ebuild
index f7afb1f..3db56fd 100644
--- a/media-libs/minigbm/minigbm-9999.ebuild
+++ b/media-libs/minigbm/minigbm-9999.ebuild
@@ -19,12 +19,12 @@
 	amdgpu exynos intel marvell mediatek msm
 	radeon radeonsi rockchip tegra vc4 virgl
 "
-IUSE="-asan kernel-3_8 kernel-3_14 kernel-3_18 linear_align_256"
+IUSE="-asan kernel-3_18 linear_align_256"
 for card in ${VIDEO_CARDS}; do
 	IUSE+=" video_cards_${card}"
 done
 
-MINI_GBM_PLATFORMS_USE=( mt8183 mt8192 )
+MINI_GBM_PLATFORMS_USE=( mt8183 mt8192 mt8195 )
 IUSE+=" ${MINI_GBM_PLATFORMS_USE[*]/#/minigbm_platform_}"
 
 RDEPEND="
@@ -51,13 +51,14 @@
 	use video_cards_exynos && append-cppflags -DDRV_EXYNOS && export DRV_EXYNOS=1
 	use video_cards_intel && append-cppflags -DDRV_I915 && export DRV_I915=1
 	if use video_cards_intel ; then
-		if ! (use kernel-3_8 || use kernel-3_14 || use kernel-3_18); then
+		if ! use kernel-3_18; then
 			append-cppflags -DI915_SCANOUT_Y_TILED
 		fi
 	fi
 	use video_cards_marvell && append-cppflags -DDRV_MARVELL && export DRV_MARVELL=1
 	use minigbm_platform_mt8183 && append-cppflags -DMTK_MT8183
 	use minigbm_platform_mt8192 && append-cppflags -DMTK_MT8192
+	use minigbm_platform_mt8195 && append-cppflags -DMTK_MT8195
 	use video_cards_mediatek && append-cppflags -DDRV_MEDIATEK && export DRV_MEDIATEK=1
 	use video_cards_msm && append-cppflags -DDRV_MSM && export DRV_MSM=1
 	use video_cards_radeon && append-cppflags -DDRV_RADEON && export DRV_RADEON=1
diff --git a/media-libs/opencv/opencv-4.1.2-r3.ebuild b/media-libs/opencv/opencv-4.1.2-r3.ebuild
index 30f20cf..597f68e 100644
--- a/media-libs/opencv/opencv-4.1.2-r3.ebuild
+++ b/media-libs/opencv/opencv-4.1.2-r3.ebuild
@@ -239,16 +239,13 @@
 	"${FILESDIR}/${P}-add-sstream-include.patch"
 )
 
-pkg_pretend() {
-	[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
-}
-
 pkg_setup() {
-	[[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
 	java-pkg-opt-2_pkg_setup
 }
 
 src_prepare() {
+	use openmp && tc-check-openmp
+
 	cmake-utils_src_prepare
 
 	# remove bundled stuff
diff --git a/media-libs/virglrenderer/OWNERS b/media-libs/virglrenderer/OWNERS
new file mode 100644
index 0000000..4f139fe
--- /dev/null
+++ b/media-libs/virglrenderer/OWNERS
@@ -0,0 +1 @@
+chromeos-ci-prod@chromeos-bot.iam.gserviceaccount.com
diff --git a/media-libs/virglrenderer/virglrenderer-0.8.2-r24.ebuild b/media-libs/virglrenderer/virglrenderer-0.8.2-r24.ebuild
deleted file mode 100644
index 6db064d..0000000
--- a/media-libs/virglrenderer/virglrenderer-0.8.2-r24.ebuild
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="4455b3fd7a10d7fb465dd4e9ee423dd30c6a48a8"
-CROS_WORKON_TREE="0c66bbaaaeefd3f451d70c62bc500ef6fab48c4c"
-CROS_WORKON_PROJECT="chromiumos/third_party/virglrenderer"
-
-# Prevent automatic uprevs of this package since upstream is out of our control.
-CROS_WORKON_MANUAL_UPREV="1"
-
-inherit cros-fuzzer cros-sanitizers eutils flag-o-matic meson cros-workon
-
-DESCRIPTION="library used implement a virtual 3D GPU used by qemu"
-HOMEPAGE="https://virgil3d.github.io/"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="*"
-IUSE="debug fuzzer profiling test"
-
-RDEPEND="
-	>=x11-libs/libdrm-2.4.50
-	media-libs/libepoxy
-	media-libs/minigbm
-	fuzzer? (
-		virtual/opengles
-	)
-"
-# We need autoconf-archive for @CODE_COVERAGE_RULES@. #568624
-DEPEND="${RDEPEND}
-	sys-devel/autoconf-archive
-	fuzzer? ( >=dev-libs/check-0.9.4 )
-	test? ( >=dev-libs/check-0.9.4 )"
-
-src_prepare() {
-	default
-}
-
-src_configure() {
-	sanitizers-setup-env
-
-	if use profiling; then
-		append-flags -fprofile-instr-generate -fcoverage-mapping
-		append-ldflags -fprofile-instr-generate -fcoverage-mapping
-	fi
-
-	emesonargs+=(
-		-Dminigbm_allocation="true"
-		-Dplatforms="egl"
-		$(meson_use fuzzer)
-		--buildtype $(usex debug debug release)
-	)
-
-	# virgl_fuzzer is only built with tests.
-	if use test || use fuzzer; then
-		emesonargs+=( -Dtests="true" )
-	fi
-
-	meson_src_configure
-}
-
-src_install() {
-	meson_src_install
-
-	fuzzer_install "${FILESDIR}/fuzzer-OWNERS" \
-		"${WORKDIR}/${P}-build"/tests/fuzzer/virgl_fuzzer \
-		--options "${FILESDIR}/virgl_fuzzer.options"
-	fuzzer_install "${FILESDIR}/fuzzer-OWNERS" \
-		"${WORKDIR}/${P}-build"/vtest/vtest_fuzzer \
-		--options "${FILESDIR}/vtest_fuzzer.options"
-
-	find "${ED}"/usr -name 'lib*.la' -delete
-}
diff --git a/media-libs/virglrenderer/virglrenderer-0.8.2-r54.ebuild b/media-libs/virglrenderer/virglrenderer-0.8.2-r54.ebuild
new file mode 100644
index 0000000..0044ecf
--- /dev/null
+++ b/media-libs/virglrenderer/virglrenderer-0.8.2-r54.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="7b5dd3eb47b82db16d8ab51a03b6cda8625fa8e9"
+CROS_WORKON_TREE="f4b861dfec2f86b6b3c33034d7af41e0a08a86e6"
+CROS_WORKON_PROJECT="chromiumos/third_party/virglrenderer"
+CROS_WORKON_EGIT_BRANCH="master"
+
+# Prevent automatic uprevs of this package since upstream is out of our control.
+CROS_WORKON_MANUAL_UPREV="1"
+
+inherit cros-fuzzer cros-sanitizers eutils flag-o-matic meson cros-workon
+
+DESCRIPTION="library used implement a virtual 3D GPU used by qemu"
+HOMEPAGE="https://virgil3d.github.io/"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="*"
+IUSE="debug fuzzer profiling test vulkan"
+
+RDEPEND="
+	>=x11-libs/libdrm-2.4.50
+	media-libs/libepoxy
+	media-libs/minigbm
+	fuzzer? (
+		virtual/opengles
+	)
+	vulkan? ( media-libs/vulkan-loader )
+"
+# We need autoconf-archive for @CODE_COVERAGE_RULES@. #568624
+DEPEND="${RDEPEND}
+	chromeos-base/percetto
+	sys-devel/autoconf-archive
+	fuzzer? ( >=dev-libs/check-0.9.4 )
+	test? ( >=dev-libs/check-0.9.4 )
+	vulkan? ( dev-util/vulkan-headers )
+"
+
+src_prepare() {
+	default
+}
+
+src_configure() {
+	sanitizers-setup-env
+
+	if use profiling; then
+		append-flags -fprofile-instr-generate -fcoverage-mapping
+		append-ldflags -fprofile-instr-generate -fcoverage-mapping
+	fi
+
+	emesonargs+=(
+		-Dtracing=percetto
+		-Dminigbm_allocation="true"
+		-Dplatforms="egl"
+		$(meson_use fuzzer)
+		$(meson_use vulkan venus-experimental)
+		--buildtype $(usex debug debug release)
+	)
+
+	# virgl_fuzzer is only built with tests.
+	if use test || use fuzzer; then
+		emesonargs+=( -Dtests="true" )
+	fi
+
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	fuzzer_install "${FILESDIR}/fuzzer-OWNERS" \
+		"${WORKDIR}/${P}-build"/tests/fuzzer/virgl_fuzzer \
+		--options "${FILESDIR}/virgl_fuzzer.options"
+	fuzzer_install "${FILESDIR}/fuzzer-OWNERS" \
+		"${WORKDIR}/${P}-build"/vtest/vtest_fuzzer \
+		--options "${FILESDIR}/vtest_fuzzer.options"
+
+	find "${ED}"/usr -name 'lib*.la' -delete
+}
diff --git a/media-libs/virglrenderer/virglrenderer-9999.ebuild b/media-libs/virglrenderer/virglrenderer-9999.ebuild
index 38e20fb..15143bc 100644
--- a/media-libs/virglrenderer/virglrenderer-9999.ebuild
+++ b/media-libs/virglrenderer/virglrenderer-9999.ebuild
@@ -4,6 +4,7 @@
 EAPI="6"
 
 CROS_WORKON_PROJECT="chromiumos/third_party/virglrenderer"
+CROS_WORKON_EGIT_BRANCH="master"
 
 # Prevent automatic uprevs of this package since upstream is out of our control.
 CROS_WORKON_MANUAL_UPREV="1"
@@ -16,7 +17,7 @@
 LICENSE="MIT"
 SLOT="0"
 KEYWORDS="~*"
-IUSE="debug fuzzer profiling test"
+IUSE="debug fuzzer profiling test vulkan"
 
 RDEPEND="
 	>=x11-libs/libdrm-2.4.50
@@ -25,12 +26,16 @@
 	fuzzer? (
 		virtual/opengles
 	)
+	vulkan? ( media-libs/vulkan-loader )
 "
 # We need autoconf-archive for @CODE_COVERAGE_RULES@. #568624
 DEPEND="${RDEPEND}
+	chromeos-base/percetto
 	sys-devel/autoconf-archive
 	fuzzer? ( >=dev-libs/check-0.9.4 )
-	test? ( >=dev-libs/check-0.9.4 )"
+	test? ( >=dev-libs/check-0.9.4 )
+	vulkan? ( dev-util/vulkan-headers )
+"
 
 src_prepare() {
 	default
@@ -45,9 +50,11 @@
 	fi
 
 	emesonargs+=(
+		-Dtracing=percetto
 		-Dminigbm_allocation="true"
 		-Dplatforms="egl"
 		$(meson_use fuzzer)
+		$(meson_use vulkan venus-experimental)
 		--buildtype $(usex debug debug release)
 	)
 
diff --git a/media-libs/vulkan-layers/Manifest b/media-libs/vulkan-layers/Manifest
new file mode 100644
index 0000000..c8f48af
--- /dev/null
+++ b/media-libs/vulkan-layers/Manifest
@@ -0,0 +1 @@
+DIST vulkan-layers-1.2.162.tar.gz 2398927 BLAKE2B febfcc88584cb7d69ac2f2bd95a73921d2dc92524b05f17e7d2a9f99336416260da60eefc560d93ad788d9a185d4dd865881f5bc8faf0dae388bacca59a21b7a SHA512 85eba0e1d07cafad212ef611fb1aef3113b6609361476cda7176a49110fe62d257b815f7c622d6ba959872785242e2231c7245242e7794ff5e60325d10f3061b
diff --git a/media-libs/vulkan-layers/OWNERS b/media-libs/vulkan-layers/OWNERS
new file mode 100644
index 0000000..3f0223d
--- /dev/null
+++ b/media-libs/vulkan-layers/OWNERS
@@ -0,0 +1,2 @@
+chadversary@chromium.org
+olv@google.com
diff --git a/media-libs/vulkan-layers/metadata.xml b/media-libs/vulkan-layers/metadata.xml
new file mode 100644
index 0000000..8cfd00f
--- /dev/null
+++ b/media-libs/vulkan-layers/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer type="project">
+		<email>x11@gentoo.org</email>
+		<name>X11</name>
+	</maintainer>
+	<maintainer type="person">
+		<email>sarnex@gentoo.org</email>
+		<name>Nick Sarnie</name>
+	</maintainer>
+	<upstream>
+		<remote-id type="github">KhronosGroup/Vulkan-ValidationLayers</remote-id>
+	</upstream>
+</pkgmetadata>
diff --git a/media-libs/vulkan-layers/vulkan-layers-1.2.162.ebuild b/media-libs/vulkan-layers/vulkan-layers-1.2.162.ebuild
new file mode 100644
index 0000000..639d57a
--- /dev/null
+++ b/media-libs/vulkan-layers/vulkan-layers-1.2.162.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+MY_PN=Vulkan-ValidationLayers
+CMAKE_ECLASS="cmake"
+PYTHON_COMPAT=( python3_{6,7,8,9} )
+inherit cmake-multilib python-any-r1
+
+if [[ ${PV} == *9999* ]]; then
+	EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
+	EGIT_SUBMODULES=()
+	inherit git-r3
+else
+	SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+	KEYWORDS="*"
+	S="${WORKDIR}"/${MY_PN}-${PV}
+fi
+
+DESCRIPTION="Vulkan Validation Layers"
+HOMEPAGE="https://github.com/KhronosGroup/Vulkan-ValidationLayers"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="wayland X"
+
+BDEPEND=">=dev-util/cmake-3.10.2"
+RDEPEND=">=dev-util/spirv-tools-2020.6:=[${MULTILIB_USEDEP}]"
+DEPEND="${RDEPEND} ${PYTHON_DEPS}
+	>=dev-util/glslang-10.11.0.0_pre20201216:=[${MULTILIB_USEDEP}]
+	>=dev-util/vulkan-headers-${PV}
+	wayland? ( dev-libs/wayland:=[${MULTILIB_USEDEP}] )
+	X? (
+		x11-libs/libX11:=[${MULTILIB_USEDEP}]
+		x11-libs/libXrandr:=[${MULTILIB_USEDEP}]
+	)
+"
+
+multilib_src_configure() {
+	local mycmakeargs=(
+		-DCMAKE_SKIP_RPATH=ON
+		-DBUILD_LAYER_SUPPORT_FILES=OFF
+		-DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland)
+		-DBUILD_WSI_XCB_SUPPORT=$(usex X)
+		-DBUILD_WSI_XLIB_SUPPORT=$(usex X)
+		-DBUILD_TESTS=OFF
+		-DGLSLANG_INSTALL_DIR="${ESYSROOT}/usr"
+		-DCMAKE_INSTALL_INCLUDEDIR="${ESYSROOT}/usr/include/vulkan/"
+		-DSPIRV_HEADERS_INSTALL_DIR="${ESYSROOT}/usr/include/spirv"
+	)
+	cmake_src_configure
+}
diff --git a/media-libs/vulkan-loader/Manifest b/media-libs/vulkan-loader/Manifest
index 13486ce..bbda310 100644
--- a/media-libs/vulkan-loader/Manifest
+++ b/media-libs/vulkan-loader/Manifest
@@ -1 +1 @@
-DIST vulkan-loader-1.1.92.1.tar.gz 1346712 BLAKE2B 60d29c38e72ff234261a3e75934d44de08c334c475e715066c210844ea672f0e2db3ebc8826df7d72392e3c2a0bbd0604b8770c0b35ddd8f72ed875234bae15d SHA512 c29d1fb43a2bdd0f291860dee0ffe7ec23a34c9431aeb76a46f8df0ec2f70601ccd3e96280f94d881f5550e3c9f07fe478f94eebcfd2aaf123045c7281313aac
+DIST vulkan-loader-1.2.162.tar.gz 1421710 BLAKE2B 94b739821c5a12a94a52d8f0a9d79c13055ef3b45b907d53b82325b7be13db52b77d01397534e939bed5629d7a405ff8a09f8da374274a066986b4126fae9863 SHA512 89a99f282b73ec59dde30e4c8c09056b40416185a14ff9b7f7bd496754840e5ac764e7624f1f9a0f11792e786b00f19c3c9e55ccbb22a3c501d8ea9e815d84f9
diff --git a/media-libs/vulkan-loader/OWNERS b/media-libs/vulkan-loader/OWNERS
new file mode 100644
index 0000000..882c57e
--- /dev/null
+++ b/media-libs/vulkan-loader/OWNERS
@@ -0,0 +1 @@
+chadversary@chromium.org
diff --git a/media-libs/vulkan-loader/files/CHROMIUM-Fix-cross-compilation.patch b/media-libs/vulkan-loader/files/CHROMIUM-Fix-cross-compilation.patch
new file mode 100644
index 0000000..97ff1cb
--- /dev/null
+++ b/media-libs/vulkan-loader/files/CHROMIUM-Fix-cross-compilation.patch
@@ -0,0 +1,32 @@
+From 9fdb318822206e143e8be453b986c470823dc16d Mon Sep 17 00:00:00 2001
+From: Chris McDonald <cjmcdonald@chromium.org>
+Date: Fri, 22 Jan 2021 14:27:57 -0800
+Subject: [PATCH] CHROMIUM: Fix cross-compilation
+
+Updating cmake-utils.eclass causes this build to break due to an intermediate
+binary not being visible on the PATH during compilation. This patch specifies
+that the binary should be used from the CWD during the build, which resolves
+the issue. This patch needs to be included and carried forward until the
+upstream bug is resolved.
+
+Upstream-Bug: https://github.com/KhronosGroup/Vulkan-Loader/issues/249
+---
+ loader/CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
+index 7cc5fd71e..70288cd3d 100644
+--- a/loader/CMakeLists.txt
++++ b/loader/CMakeLists.txt
+@@ -191,7 +191,7 @@ else(UNIX AND NOT APPLE) # i.e.: Linux
+         set(OPT_LOADER_SRCS ${OPT_LOADER_SRCS} unknown_ext_chain_gas.S)
+         add_executable(asm_offset asm_offset.c)
+         target_link_libraries(asm_offset Vulkan::Headers)
+-        add_custom_command(OUTPUT gen_defines.asm DEPENDS asm_offset COMMAND asm_offset GAS)
++        add_custom_command(OUTPUT gen_defines.asm DEPENDS asm_offset COMMAND ./asm_offset GAS)
+         add_custom_target(loader_asm_gen_files DEPENDS gen_defines.asm)
+         target_compile_definitions(asm_offset PRIVATE _XOPEN_SOURCE=500) # hush compiler warnings for readlink
+     else()
+-- 
+2.30.0.280.ga3ce27912f-goog
+
diff --git a/media-libs/vulkan-loader/files/vulkan-loader-1.1.92.1-sysroot-asm_offset.patch b/media-libs/vulkan-loader/files/vulkan-loader-1.1.92.1-sysroot-asm_offset.patch
deleted file mode 100644
index bfa4902..0000000
--- a/media-libs/vulkan-loader/files/vulkan-loader-1.1.92.1-sysroot-asm_offset.patch
+++ /dev/null
@@ -1,21 +0,0 @@
-Updating cmake-utils.eclass causes this build to break due to an intermediate
-binary not being visible on the PATH during compilation. This patch specifies
-that the binary should be used from the CWD during the build, which resolves
-the issue. This patch needs to be included and carried forward until the
-upstream bug is resolved.
-
-Upstream bug: https://github.com/KhronosGroup/Vulkan-Loader/issues/249
-
-diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
-index 34f6c97..e754c30 100644
---- a/loader/CMakeLists.txt
-+++ b/loader/CMakeLists.txt
-@@ -160,7 +160,7 @@ else(UNIX AND NOT APPLE) # i.e.: Linux
-         set(OPT_LOADER_SRCS ${OPT_LOADER_SRCS} unknown_ext_chain_gas.asm)
-         add_executable(asm_offset asm_offset.c)
-         add_dependencies(asm_offset generate_helper_files loader_gen_files)
--        add_custom_command(OUTPUT gen_defines.asm DEPENDS asm_offset COMMAND asm_offset GAS)
-+        add_custom_command(OUTPUT gen_defines.asm DEPENDS asm_offset COMMAND ./asm_offset GAS)
-         add_custom_target(loader_asm_gen_files DEPENDS gen_defines.asm)
-     else()
-         message(WARNING "Could not find working x86 GAS assembler\n${ASM_FAILURE_MSG}")
diff --git a/media-libs/vulkan-loader/files/vulkan-loader-1.2.162-Fix-pkgconfig.patch b/media-libs/vulkan-loader/files/vulkan-loader-1.2.162-Fix-pkgconfig.patch
new file mode 100644
index 0000000..f06f5cf
--- /dev/null
+++ b/media-libs/vulkan-loader/files/vulkan-loader-1.2.162-Fix-pkgconfig.patch
@@ -0,0 +1,43 @@
+From d0cfd15c09f1581278317a5c0ece8f213ba5578f Mon Sep 17 00:00:00 2001
+From: Nick Sarnie <sarnex@gentoo.org>
+Date: Wed, 16 Dec 2020 23:38:00 -0500
+Subject: [PATCH] Revert "pkgconfig: Missing lib suffx on win32"
+
+This reverts commit 10c4ebadb9fc41e0abf5a32daa7263c6d1aff575.
+
+Signed-off-by: Nick Sarnie <sarnex@gentoo.org>
+---
+ loader/CMakeLists.txt | 3 ---
+ loader/vulkan.pc.in   | 2 +-
+ 2 files changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/loader/CMakeLists.txt b/loader/CMakeLists.txt
+index 659511855..f7b9916b2 100644
+--- a/loader/CMakeLists.txt
++++ b/loader/CMakeLists.txt
+@@ -326,9 +326,6 @@ if(PKG_CONFIG_FOUND)
+     foreach(LIB ${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES} ${PLATFORM_LIBS})
+         set(PRIVATE_LIBS "${PRIVATE_LIBS} -l${LIB}")
+     endforeach()
+-    if(WIN32)
+-        set(LIB_SUFFIX "-1")
+-    endif ()
+     configure_file("vulkan.pc.in" "vulkan.pc" @ONLY)
+     install(FILES "${CMAKE_CURRENT_BINARY_DIR}/vulkan.pc" DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
+ endif()
+diff --git a/loader/vulkan.pc.in b/loader/vulkan.pc.in
+index fc17cb1f3..f1588c412 100644
+--- a/loader/vulkan.pc.in
++++ b/loader/vulkan.pc.in
+@@ -6,7 +6,7 @@ includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
+ Name: @CMAKE_PROJECT_NAME@
+ Description: Vulkan Loader
+ Version: @VK_API_VERSION@
+-Libs: -L${libdir} -lvulkan@LIB_SUFFIX@
++Libs: -L${libdir} -lvulkan
+ Libs.private: @PRIVATE_LIBS@
+ Cflags: -I${includedir}
+ 
+-- 
+2.29.2
+
diff --git a/media-libs/vulkan-loader/vulkan-loader-1.1.92.1-r1.ebuild b/media-libs/vulkan-loader/vulkan-loader-1.1.92.1-r1.ebuild
deleted file mode 120000
index 35b98e3..0000000
--- a/media-libs/vulkan-loader/vulkan-loader-1.1.92.1-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-vulkan-loader-1.1.92.1.ebuild
\ No newline at end of file
diff --git a/media-libs/vulkan-loader/vulkan-loader-1.1.92.1.ebuild b/media-libs/vulkan-loader/vulkan-loader-1.1.92.1.ebuild
deleted file mode 100644
index 4040b7e..0000000
--- a/media-libs/vulkan-loader/vulkan-loader-1.1.92.1.ebuild
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-PYTHON_COMPAT=( python3_{4,5,6} )
-
-if [[ "${PV}" == "9999" ]]; then
-	EGIT_REPO_URI="https://github.com/KhronosGroup/Vulkan-Loader.git"
-	EGIT_SUBMODULES=()
-	inherit git-r3
-else
-	KEYWORDS="*"
-	EGIT_COMMIT="4cd7e44fc1ca6c4d8361720b43a3588ddf9fc4b6"
-	SRC_URI="https://github.com/KhronosGroup/Vulkan-Loader/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
-	S="${WORKDIR}/Vulkan-Loader-${EGIT_COMMIT}"
-fi
-
-inherit python-any-r1 cmake-multilib
-
-DESCRIPTION="Vulkan Installable Client Driver (ICD) Loader"
-HOMEPAGE="https://github.com/KhronosGroup/Vulkan-Loader"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-IUSE="layers wayland X"
-
-PDEPEND="layers? ( media-libs/vulkan-layers:=[${MULTILIB_USEDEP}] )"
-DEPEND="
-	>=dev-util/vulkan-headers-1.1.92.0
-	wayland? ( dev-libs/wayland:=[${MULTILIB_USEDEP}] )
-	X? (
-		x11-libs/libX11:=[${MULTILIB_USEDEP}]
-		x11-libs/libXrandr:=[${MULTILIB_USEDEP}]
-	)"
-
-PATCHES=(
-	"${FILESDIR}"/vulkan-loader-1.1.92.1-sysroot-asm_offset.patch
-)
-
-multilib_src_configure() {
-	local mycmakeargs=(
-		-DCMAKE_SKIP_RPATH=True
-		-DBUILD_TESTS=False
-		-DBUILD_LOADER=True
-		-DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland)
-		-DBUILD_WSI_XCB_SUPPORT=$(usex X)
-		-DBUILD_WSI_XLIB_SUPPORT=$(usex X)
-		-DVULKAN_HEADERS_INSTALL_DIR="/usr"
-	)
-	cmake-utils_src_configure
-}
-
-multilib_src_install() {
-	keepdir /etc/vulkan/icd.d
-
-	cmake-utils_src_install
-}
-
-pkg_postinst() {
-	einfo "USE=demos has been dropped as per upstream packaging"
-	einfo "vulkaninfo is now available in the dev-util/vulkan-tools package"
-}
diff --git a/media-libs/vulkan-loader/vulkan-loader-1.2.162-r1.ebuild b/media-libs/vulkan-loader/vulkan-loader-1.2.162-r1.ebuild
new file mode 100644
index 0000000..a929f37
--- /dev/null
+++ b/media-libs/vulkan-loader/vulkan-loader-1.2.162-r1.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+MY_PN=Vulkan-Loader
+CMAKE_ECLASS="cmake"
+PYTHON_COMPAT=( python3_{6,7,8,9} )
+inherit flag-o-matic cmake-multilib python-any-r1 toolchain-funcs
+
+if [[ ${PV} == *9999* ]]; then
+	EGIT_REPO_URI="https://github.com/KhronosGroup/${MY_PN}.git"
+	EGIT_SUBMODULES=()
+	inherit git-r3
+else
+	SRC_URI="https://github.com/KhronosGroup/${MY_PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+	KEYWORDS="*"
+	S="${WORKDIR}"/${MY_PN}-${PV}
+fi
+
+DESCRIPTION="Vulkan Installable Client Driver (ICD) Loader"
+HOMEPAGE="https://github.com/KhronosGroup/Vulkan-Loader"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="layers wayland X"
+
+BDEPEND="
+	${PYTHON_DEPS}
+	>=dev-util/cmake-3.10.2
+"
+DEPEND="
+	~dev-util/vulkan-headers-${PV}
+	wayland? ( dev-libs/wayland:=[${MULTILIB_USEDEP}] )
+	X? (
+		x11-libs/libX11:=[${MULTILIB_USEDEP}]
+		x11-libs/libXrandr:=[${MULTILIB_USEDEP}]
+	)
+"
+PDEPEND="layers? ( media-libs/vulkan-layers:=[${MULTILIB_USEDEP}] )"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-${PV}-Fix-pkgconfig.patch"
+	"${FILESDIR}"/CHROMIUM-Fix-cross-compilation.patch
+)
+
+multilib_src_configure() {
+	# Integrated clang assembler doesn't work with x86 - Bug #698164
+	if tc-is-clang && [[ ${ABI} == x86 ]]; then
+		append-cflags -fno-integrated-as
+	fi
+
+	local mycmakeargs=(
+		-DCMAKE_SKIP_RPATH=ON
+		-DBUILD_TESTS=OFF
+		-DBUILD_LOADER=ON
+		-DBUILD_WSI_WAYLAND_SUPPORT=$(usex wayland)
+		-DBUILD_WSI_XCB_SUPPORT=$(usex X)
+		-DBUILD_WSI_XLIB_SUPPORT=$(usex X)
+		-DVULKAN_HEADERS_INSTALL_DIR="${ESYSROOT}/usr"
+	)
+	cmake_src_configure
+}
+
+multilib_src_install() {
+	keepdir /etc/vulkan/icd.d
+
+	cmake_src_install
+}
+
+pkg_postinst() {
+	einfo "USE=demos has been dropped as per upstream packaging"
+	einfo "vulkaninfo is now available in the dev-util/vulkan-tools package"
+}
diff --git a/media-libs/webrtc-apm/webrtc-apm-0.0.1-r19.ebuild b/media-libs/webrtc-apm/webrtc-apm-0.0.1-r19.ebuild
deleted file mode 100644
index 206b85e..0000000
--- a/media-libs/webrtc-apm/webrtc-apm-0.0.1-r19.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2018 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.
-
-EAPI=5
-
-CROS_WORKON_COMMIT="1a11b8a91619e22d988b853cba06713ccb98e2eb"
-CROS_WORKON_TREE="ae1d3dca7ac29fe68dc55ab02be8d4d812e078e3"
-CROS_WORKON_PROJECT="chromiumos/third_party/webrtc-apm"
-CROS_WORKON_LOCALNAME="webrtc-apm"
-
-inherit cros-workon multilib
-
-DESCRIPTION="Standalone WebRTC APM library"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="cpu_flags_x86_sse2 neon"
-
-DEPEND="dev-libs/iniparser:=
-	dev-libs/libevent:=
-	dev-libs/protobuf:="
-RDEPEND="${DEPEND}"
-
-src_configure() {
-	export USE_NEON=$(usex neon 1 0)
-	export USE_SSE2=$(usex cpu_flags_x86_sse2 1 0)
-}
-
-src_install() {
-	local INCLUDE_DIR="/usr/include/webrtc-apm"
-	local LIB_DIR="/usr/$(get_libdir)"
-
-	dolib libwebrtc_apm.so
-
-	insinto "${INCLUDE_DIR}"
-	doins webrtc_apm.h
-
-	sed -e "s|@INCLUDE_DIR@|${INCLUDE_DIR}|" -e "s|@LIB_DIR@|${LIB_DIR}|" \
-		libwebrtc_apm.pc.template > libwebrtc_apm.pc
-	insinto "${LIB_DIR}/pkgconfig"
-	doins libwebrtc_apm.pc
-}
diff --git a/media-libs/webrtc-apm/webrtc-apm-0.0.1-r25.ebuild b/media-libs/webrtc-apm/webrtc-apm-0.0.1-r25.ebuild
new file mode 100644
index 0000000..92c7c0f
--- /dev/null
+++ b/media-libs/webrtc-apm/webrtc-apm-0.0.1-r25.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2018 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.
+
+EAPI=5
+
+CROS_WORKON_COMMIT="b29aa58066487076f7fde3b817a00b8f2eaf05a5"
+CROS_WORKON_TREE="d7913d87dd4ea6cee195ad27b94ce6ad23840b87"
+CROS_WORKON_PROJECT="chromiumos/third_party/webrtc-apm"
+CROS_WORKON_LOCALNAME="webrtc-apm"
+
+inherit cros-workon multilib
+
+DESCRIPTION="Standalone WebRTC APM library"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE="cpu_flags_x86_sse2 neon"
+
+DEPEND="dev-libs/iniparser:=
+	dev-libs/libevent:=
+	dev-libs/protobuf:=
+	chromeos-base/metrics"
+RDEPEND="${DEPEND}"
+
+src_configure() {
+	export USE_NEON=$(usex neon 1 0)
+	export USE_SSE2=$(usex cpu_flags_x86_sse2 1 0)
+}
+
+src_install() {
+	local INCLUDE_DIR="/usr/include/webrtc-apm"
+	local LIB_DIR="/usr/$(get_libdir)"
+
+	dolib libwebrtc_apm.so
+
+	insinto "${INCLUDE_DIR}"
+	doins webrtc_apm.h
+
+	sed -e "s|@INCLUDE_DIR@|${INCLUDE_DIR}|" -e "s|@LIB_DIR@|${LIB_DIR}|" \
+		libwebrtc_apm.pc.template > libwebrtc_apm.pc
+	insinto "${LIB_DIR}/pkgconfig"
+	doins libwebrtc_apm.pc
+}
diff --git a/media-libs/webrtc-apm/webrtc-apm-9999.ebuild b/media-libs/webrtc-apm/webrtc-apm-9999.ebuild
index 054c9db..7636c8e 100644
--- a/media-libs/webrtc-apm/webrtc-apm-9999.ebuild
+++ b/media-libs/webrtc-apm/webrtc-apm-9999.ebuild
@@ -20,7 +20,8 @@
 
 DEPEND="dev-libs/iniparser:=
 	dev-libs/libevent:=
-	dev-libs/protobuf:="
+	dev-libs/protobuf:=
+	chromeos-base/metrics"
 RDEPEND="${DEPEND}"
 
 src_configure() {
diff --git a/media-sound/adhd/adhd-0.0.6-r2170.ebuild b/media-sound/adhd/adhd-0.0.6-r2170.ebuild
deleted file mode 100644
index 754be9c..0000000
--- a/media-sound/adhd/adhd-0.0.6-r2170.ebuild
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (c) 2012 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.
-
-EAPI=7
-CROS_WORKON_COMMIT="7dd7322b3ee0e3e1d814c78bb924328627b453ad"
-CROS_WORKON_TREE="affd5e26482e936c707354b5d762c1ef3720ef12"
-CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
-CROS_WORKON_LOCALNAME="adhd"
-CROS_WORKON_USE_VCSID=1
-
-inherit toolchain-funcs autotools cros-fuzzer cros-sanitizers cros-workon systemd user libchrome-version
-
-DESCRIPTION="Google A/V Daemon"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/"
-SRC_URI=""
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="asan +cras-apm fuzzer generated_cros_config selinux systemd unibuild"
-
-COMMON_DEPEND="
-	>=chromeos-base/metrics-0.0.1-r3152:=
-	dev-libs/iniparser:=
-	cras-apm? ( media-libs/webrtc-apm:= )
-	>=media-libs/alsa-lib-1.1.6-r3:=
-	media-libs/ladspa-sdk:=
-	media-libs/sbc:=
-	media-libs/speex:=
-	>=sys-apps/dbus-1.4.12:=
-	selinux? ( sys-libs/libselinux:= )
-	virtual/udev:=
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	media-sound/alsa-utils
-	media-plugins/alsa-plugins
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp )
-	)
-	chromeos-base/chromeos-config-tools
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	dev-libs/libpthread-stubs:=
-	media-sound/cras_rust:=
-"
-
-src_prepare() {
-	cd cras
-	eautoreconf
-	default
-}
-
-src_configure() {
-	cros_optimize_package_for_speed
-	sanitizers-setup-env
-	if use amd64 ; then
-		export FUZZER_LDFLAGS="-fsanitize=fuzzer"
-	fi
-
-	cd cras
-	# Disable external libraries for fuzzers.
-	if use fuzzer ; then
-		# Disable "gc-sections" for fuzzer builds, https://crbug.com/1026125 .
-		append-ldflags "-Wl,--no-gc-sections"
-		econf $(use_enable cras-apm webrtc-apm) \
-			--with-system-cras-rust \
-			$(use_enable amd64 fuzzer)
-	else
-		econf $(use_enable selinux) \
-			$(use_enable cras-apm webrtc-apm) \
-			--enable-metrics \
-			--with-system-cras-rust \
-			$(use_enable amd64 fuzzer) \
-			BASE_VER="$(libchrome_ver)"
-	fi
-}
-
-src_compile() {
-	emake CC="$(tc-getCC)" || die "Unable to build ADHD"
-}
-
-src_test() {
-	if ! use x86 && ! use amd64 ; then
-		elog "Skipping unit tests on non-x86 platform"
-	else
-		cd cras
-		# This is an ugly hack that happens to work, but should not be copied.
-		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir)" \
-		emake check
-	fi
-}
-
-src_install() {
-	emake DESTDIR="${D}" SYSTEMD="$(usex systemd)" install
-
-	# install common ucm config files.
-	insinto /usr/share/alsa/ucm
-	doins -r ucm-config/for_all_boards/*
-
-	# install common cras config files.
-	insinto /etc/cras
-	doins -r cras-config/for_all_boards/*
-
-	# install dbus config allowing cras access
-	insinto /etc/dbus-1/system.d
-	doins dbus-config/org.chromium.cras.conf
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	newins "seccomp/cras-seccomp-${ARCH}.policy" cras-seccomp.policy
-
-	# Install asound.conf for CRAS alsa plugin
-	insinto /etc
-	doins "${FILESDIR}"/asound.conf
-
-	if use fuzzer ; then
-		# Install example dsp.ini file for fuzzer
-		insinto /etc/cras
-		doins cras-config/dsp.ini.sample
-		# Install fuzzer binary
-		fuzzer_install "${S}/OWNERS.fuzz" cras/src/cras_rclient_message_fuzzer
-		fuzzer_install "${S}/OWNERS.fuzz" cras/src/cras_hfp_slc_fuzzer \
-			--dict "${S}/cras/src/fuzz/cras_hfp_slc.dict"
-	fi
-}
-
-pkg_preinst() {
-	enewuser "cras"
-	enewgroup "cras"
-}
diff --git a/media-sound/adhd/adhd-0.0.6-r2281.ebuild b/media-sound/adhd/adhd-0.0.6-r2281.ebuild
new file mode 100644
index 0000000..3289e8c
--- /dev/null
+++ b/media-sound/adhd/adhd-0.0.6-r2281.ebuild
@@ -0,0 +1,138 @@
+# Copyright (c) 2012 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.
+
+EAPI=7
+CROS_WORKON_COMMIT="f9922af83c912a308a83846662b338ce51a91eec"
+CROS_WORKON_TREE="e62b24ca0c95c5db285704697a8d941cbdbb742c"
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_USE_VCSID=1
+
+inherit toolchain-funcs autotools cros-fuzzer cros-sanitizers cros-workon systemd user libchrome-version
+
+DESCRIPTION="Google A/V Daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/"
+SRC_URI=""
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="asan +cras-apm fuzzer generated_cros_config selinux systemd unibuild"
+
+COMMON_DEPEND="
+	>=chromeos-base/metrics-0.0.1-r3152:=
+	dev-libs/iniparser:=
+	cras-apm? ( media-libs/webrtc-apm:= )
+	>=media-libs/alsa-lib-1.1.6-r3:=
+	media-libs/ladspa-sdk:=
+	media-libs/sbc:=
+	media-libs/speex:=
+	>=sys-apps/dbus-1.4.12:=
+	selinux? ( sys-libs/libselinux:= )
+	virtual/udev:=
+"
+
+RDEPEND="
+	${COMMON_DEPEND}
+	media-sound/alsa-utils
+	media-plugins/alsa-plugins
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp )
+	)
+	chromeos-base/chromeos-config-tools
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	dev-libs/libpthread-stubs:=
+	media-sound/cras_rust:=
+"
+
+src_prepare() {
+	cd cras
+	eautoreconf
+	default
+}
+
+src_configure() {
+	cros_optimize_package_for_speed
+	sanitizers-setup-env
+	if use amd64 ; then
+		export FUZZER_LDFLAGS="-fsanitize=fuzzer"
+	fi
+
+	cd cras
+	# Disable external libraries for fuzzers.
+	if use fuzzer ; then
+		# Disable "gc-sections" for fuzzer builds, https://crbug.com/1026125 .
+		append-ldflags "-Wl,--no-gc-sections"
+		econf $(use_enable cras-apm webrtc-apm) \
+			--with-system-cras-rust \
+			$(use_enable amd64 fuzzer)
+	else
+		econf $(use_enable selinux) \
+			$(use_enable cras-apm webrtc-apm) \
+			--enable-metrics \
+			--with-system-cras-rust \
+			$(use_enable amd64 fuzzer) \
+			BASE_VER="$(libchrome_ver)"
+	fi
+}
+
+src_compile() {
+	emake CC="$(tc-getCC)" || die "Unable to build ADHD"
+}
+
+src_test() {
+	if ! use x86 && ! use amd64 ; then
+		elog "Skipping unit tests on non-x86 platform"
+	else
+		cd cras
+		# This is an ugly hack that happens to work, but should not be copied.
+		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir)" \
+		emake check
+	fi
+}
+
+src_install() {
+	emake DESTDIR="${D}" SYSTEMD="$(usex systemd)" install
+
+	# install common ucm config files.
+	insinto /usr/share/alsa/ucm
+	doins -r ucm-config/for_all_boards/*
+
+	# install common cras config files.
+	insinto /etc/cras
+	doins -r cras-config/for_all_boards/*
+
+	# install dbus config allowing cras access
+	insinto /etc/dbus-1/system.d
+	doins dbus-config/org.chromium.cras.conf
+
+	# Install D-Bus XML files.
+	insinto /usr/share/dbus-1/interfaces/
+	doins cras/dbus_bindings/*.xml
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "seccomp/cras-seccomp-${ARCH}.policy" cras-seccomp.policy
+
+	# Install asound.conf for CRAS alsa plugin
+	insinto /etc
+	doins "${FILESDIR}"/asound.conf
+
+	if use fuzzer ; then
+		# Install example dsp.ini file for fuzzer
+		insinto /etc/cras
+		doins cras-config/dsp.ini.sample
+		# Install fuzzer binary
+		fuzzer_install "${S}/OWNERS.fuzz" cras/src/cras_rclient_message_fuzzer
+		fuzzer_install "${S}/OWNERS.fuzz" cras/src/cras_hfp_slc_fuzzer \
+			--dict "${S}/cras/src/fuzz/cras_hfp_slc.dict"
+	fi
+}
+
+pkg_preinst() {
+	enewuser "cras"
+	enewgroup "cras"
+}
diff --git a/media-sound/adhd/adhd-9999.ebuild b/media-sound/adhd/adhd-9999.ebuild
index 9076260..ddfa7a0 100644
--- a/media-sound/adhd/adhd-9999.ebuild
+++ b/media-sound/adhd/adhd-9999.ebuild
@@ -107,6 +107,10 @@
 	insinto /etc/dbus-1/system.d
 	doins dbus-config/org.chromium.cras.conf
 
+	# Install D-Bus XML files.
+	insinto /usr/share/dbus-1/interfaces/
+	doins cras/dbus_bindings/*.xml
+
 	# Install seccomp policy file.
 	insinto /usr/share/policy
 	newins "seccomp/cras-seccomp-${ARCH}.policy" cras-seccomp.policy
diff --git a/media-sound/alsa-utils/alsa-utils-1.2.1.ebuild b/media-sound/alsa-utils/alsa-utils-1.2.1.ebuild
index 047ef10..07da4af 100644
--- a/media-sound/alsa-utils/alsa-utils-1.2.1.ebuild
+++ b/media-sound/alsa-utils/alsa-utils-1.2.1.ebuild
@@ -62,17 +62,3 @@
 	# alsaucm: unable to obtain card list: No such file or directory
 	keepdir /usr/share/alsa/ucm
 }
-
-pkg_postinst() {
-	if [[ -z ${REPLACING_VERSIONS} ]]; then
-		elog
-		elog "To take advantage of the init script, and automate the process of"
-		elog "saving and restoring sound-card mixer levels you should"
-		elog "add alsasound to the boot runlevel. You can do this as"
-		elog "root like so:"
-		elog "# rc-update add alsasound boot"
-		ewarn
-		ewarn "The ALSA core should be built into the kernel or loaded through other"
-		ewarn "means. There is no longer any modular auto(un)loading in alsa-utils."
-	fi
-}
diff --git a/media-sound/audio_streams/audio_streams-0.1.0-r25.ebuild b/media-sound/audio_streams/audio_streams-0.1.0-r25.ebuild
deleted file mode 100644
index 091c900..0000000
--- a/media-sound/audio_streams/audio_streams-0.1.0-r25.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="4b60d55e74e39a8a92235652b45c54e4ea2f5299"
-CROS_WORKON_TREE="c66946a62c2f2eee94bfa0cd0f0c03b4da475040"
-CROS_WORKON_LOCALNAME="adhd"
-CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
-# We don't use CROS_WORKON_OUTOFTREE_BUILD here since audio_streams/Cargo.toml
-# is using "provided by ebuild" macro which supported by cros-rust
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="audio_streams"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Crate provides a basic interface for playing audio."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/audio_streams"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-DEPEND="
-	dev-rust/sync:=
-	dev-rust/sys_util:=
-"
-
-RDEPEND="!<=media-sound/audio_streams-0.1.0-r7"
diff --git a/media-sound/audio_streams/audio_streams-0.1.0-r28.ebuild b/media-sound/audio_streams/audio_streams-0.1.0-r28.ebuild
new file mode 100644
index 0000000..e2137a2
--- /dev/null
+++ b/media-sound/audio_streams/audio_streams-0.1.0-r28.ebuild
@@ -0,0 +1,32 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="5bb2043d82a16b88a5353e167ca1d628a538744e"
+CROS_WORKON_TREE="e5a0ad587f560a2b9eb5321c3eaff76ed3cf5626"
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since audio_streams/Cargo.toml
+# is using "provided by ebuild" macro which supported by cros-rust
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="audio_streams"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Crate provides a basic interface for playing audio."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/audio_streams"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+DEPEND="
+	dev-rust/sync:=
+	dev-rust/sys_util:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!<=media-sound/audio_streams-0.1.0-r7
+"
diff --git a/media-sound/audio_streams/audio_streams-9999.ebuild b/media-sound/audio_streams/audio_streams-9999.ebuild
index 8988b4d..f131925 100644
--- a/media-sound/audio_streams/audio_streams-9999.ebuild
+++ b/media-sound/audio_streams/audio_streams-9999.ebuild
@@ -23,5 +23,8 @@
 	dev-rust/sync:=
 	dev-rust/sys_util:=
 "
-
-RDEPEND="!<=media-sound/audio_streams-0.1.0-r7"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!<=media-sound/audio_streams-0.1.0-r7
+"
diff --git a/media-sound/cras-sys/cras-sys-0.1.0-r29.ebuild b/media-sound/cras-sys/cras-sys-0.1.0-r29.ebuild
deleted file mode 100644
index 60c69d2..0000000
--- a/media-sound/cras-sys/cras-sys-0.1.0-r29.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="5869f01249df06c60bc6e1e498c8f2084304ed55"
-CROS_WORKON_TREE="43eadf441b4d60610d3a026d893e7cb221bae3d3"
-CROS_RUST_SUBDIR="cras/client/cras-sys"
-# TODO(b/175640259) Fix tests for ARM.
-CROS_RUST_TEST_DIRECT_EXEC_ONLY="yes"
-
-CROS_WORKON_LOCALNAME="adhd"
-CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
-# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras-sys/Cargo.toml is
-# using "provided by ebuild" macro which supported by cros-rust.
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Crate for CRAS C-structures generated by bindgen"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/cras-sys"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-DEPEND="
-	dev-rust/data_model:=
-	media-sound/audio_streams:=
-"
-
-RDEPEND="!<=media-sound/cras-sys-0.1.0-r10"
diff --git a/media-sound/cras-sys/cras-sys-0.1.0-r48.ebuild b/media-sound/cras-sys/cras-sys-0.1.0-r48.ebuild
new file mode 100644
index 0000000..3e164e7
--- /dev/null
+++ b/media-sound/cras-sys/cras-sys-0.1.0-r48.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="45f45bc937c6a57b68a4534fb6e64f1859dff617"
+CROS_WORKON_TREE=("6c8939340ea089d520f7153d66be9e8690b5d594" "269d67a227b2d3fedb9eaef0322bd0c6f986b9da")
+CROS_RUST_SUBDIR="cras/client/cras-sys"
+# TODO(b/175640259) Fix tests for ARM.
+CROS_RUST_TEST_DIRECT_EXEC_ONLY="yes"
+
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras-sys/Cargo.toml is
+# using "provided by ebuild" macro which supported by cros-rust.
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} cras/src/common"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Crate for CRAS C-structures generated by bindgen"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/cras-sys"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+DEPEND="
+	dev-rust/data_model:=
+	media-sound/audio_streams:=
+	virtual/bindgen:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!<=media-sound/cras-sys-0.1.0-r10
+"
diff --git a/media-sound/cras-sys/cras-sys-9999.ebuild b/media-sound/cras-sys/cras-sys-9999.ebuild
index 15e5a59..4ffb6e14 100644
--- a/media-sound/cras-sys/cras-sys-9999.ebuild
+++ b/media-sound/cras-sys/cras-sys-9999.ebuild
@@ -12,7 +12,7 @@
 # We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras-sys/Cargo.toml is
 # using "provided by ebuild" macro which supported by cros-rust.
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} cras/src/common"
 
 inherit cros-workon cros-rust
 
@@ -26,6 +26,10 @@
 DEPEND="
 	dev-rust/data_model:=
 	media-sound/audio_streams:=
+	virtual/bindgen:=
 "
-
-RDEPEND="!<=media-sound/cras-sys-0.1.0-r10"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!<=media-sound/cras-sys-0.1.0-r10
+"
diff --git a/media-sound/cras_bench/Manifest b/media-sound/cras_bench/Manifest
new file mode 100644
index 0000000..eb304e7
--- /dev/null
+++ b/media-sound/cras_bench/Manifest
@@ -0,0 +1,3 @@
+DIST bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip 171775 BLAKE2B ec0ece4555d779bc8380937baac517a8adf3b0176c4bfb1324943a91366ad9688f528a4bd69e4587bcc4ad427c71a53016a3e2d32a050d9d4ec99caac4967a8e SHA512 5c5e82f276c1c962fbd9c7ddf21df9aa4291f3285f3fa07cd2c2790475ccba670b0627fc3d6faedd1508eca4d80bdae64a31383f001f04f3031112be81c3e697
+DIST bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip 9422 BLAKE2B bbc45c97551ee8126335b611ffca6574dac843d4db9b3221b10d26487f8eecfe38ba0cd67a4039a3ad921c25fea6294c43e4f4e7a57a060a30791acd6c4f9d39 SHA512 ba06242feb711e7fb6e821fd9ac029248b4f3e466fb1acf971d0db8196f3efe4d114ef137acbe4913073f8cbe8ccab4d47d8bafa21b867b2d6a6d57f5a647f0c
+DIST google-benchmark-1.5.5.tar.gz 176710 BLAKE2B 394f8b34873ccd45100e3b1f58dd7819d443733d9224ff003a9410ca30d8bacc6c7736b74dd50623144767e840dbc3cd9ff819a60de6e22a00b1edaf802f0992 SHA512 91a2cdf0245625c657b9bb8d76c7d616a99eaed333e42b34ceff4e996b8fa6027b1c7313a815e7b441d2f6e2e1244c139a0911d585bf0d2e767ac3cea23a67d1
diff --git a/media-sound/cras_bench/OWNERS b/media-sound/cras_bench/OWNERS
new file mode 100644
index 0000000..e040e6f
--- /dev/null
+++ b/media-sound/cras_bench/OWNERS
@@ -0,0 +1 @@
+include chromiumos/third_party/adhd:/OWNERS
diff --git a/media-sound/cras_bench/cras_bench-0.0.1-r3.ebuild b/media-sound/cras_bench/cras_bench-0.0.1-r3.ebuild
new file mode 100644
index 0000000..3bc894f
--- /dev/null
+++ b/media-sound/cras_bench/cras_bench-0.0.1-r3.ebuild
@@ -0,0 +1,53 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="f9922af83c912a308a83846662b338ce51a91eec"
+CROS_WORKON_TREE="e62b24ca0c95c5db285704697a8d941cbdbb742c"
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_USE_VCSID=1
+
+inherit toolchain-funcs cros-workon cros-bazel
+
+DESCRIPTION="Performance benchmarks for ChromeOS audio server"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/"
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	media-libs/alsa-lib
+"
+RDEPEND="${DEPEND}"
+
+bazel_external_uris="
+	https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip -> bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip
+	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip
+	https://github.com/google/benchmark/archive/refs/tags/v1.5.5.tar.gz -> google-benchmark-1.5.5.tar.gz
+"
+SRC_URI="${bazel_external_uris}"
+
+src_unpack() {
+	bazel_load_distfiles "${bazel_external_uris}"
+	cros-workon_src_unpack
+}
+
+src_prepare() {
+	cd cras || die
+	bazel_setup_crosstool
+	default
+}
+
+src_configure() {
+	cros_optimize_package_for_speed
+}
+
+src_compile() {
+	cd cras || die
+	ebazel build //src/benchmark:cras_bench
+}
+
+src_install() {
+	dobin cras/bazel-bin/src/benchmark/cras_bench
+}
diff --git a/media-sound/cras_bench/cras_bench-9999.ebuild b/media-sound/cras_bench/cras_bench-9999.ebuild
new file mode 100644
index 0000000..439bcb7
--- /dev/null
+++ b/media-sound/cras_bench/cras_bench-9999.ebuild
@@ -0,0 +1,51 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_USE_VCSID=1
+
+inherit toolchain-funcs cros-workon cros-bazel
+
+DESCRIPTION="Performance benchmarks for ChromeOS audio server"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/"
+LICENSE="BSD-Google"
+KEYWORDS="~*"
+IUSE=""
+
+DEPEND="
+	media-libs/alsa-lib
+"
+RDEPEND="${DEPEND}"
+
+bazel_external_uris="
+	https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip -> bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip
+	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip
+	https://github.com/google/benchmark/archive/refs/tags/v1.5.5.tar.gz -> google-benchmark-1.5.5.tar.gz
+"
+SRC_URI="${bazel_external_uris}"
+
+src_unpack() {
+	bazel_load_distfiles "${bazel_external_uris}"
+	cros-workon_src_unpack
+}
+
+src_prepare() {
+	cd cras || die
+	bazel_setup_crosstool
+	default
+}
+
+src_configure() {
+	cros_optimize_package_for_speed
+}
+
+src_compile() {
+	cd cras || die
+	ebazel build //src/benchmark:cras_bench
+}
+
+src_install() {
+	dobin cras/bazel-bin/src/benchmark/cras_bench
+}
diff --git a/media-sound/cras_bench/files/chromeos-version.sh b/media-sound/cras_bench/files/chromeos-version.sh
new file mode 100644
index 0000000..518f7a4
--- /dev/null
+++ b/media-sound/cras_bench/files/chromeos-version.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+# Copyright 2021 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.
+#
+# This echo statement sets the package base version (without its -r value).
+# If it is necessary to add a new blocker or version dependency on this ebuild
+# at the same time as revving the ebuild to a known version value, editing this
+# version can be useful.
+
+echo 0.0.1
diff --git a/media-sound/cras_rust/cras_rust-0.1.0-r5.ebuild b/media-sound/cras_rust/cras_rust-0.1.0-r5.ebuild
deleted file mode 100644
index 65ed845..0000000
--- a/media-sound/cras_rust/cras_rust-0.1.0-r5.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="5869f01249df06c60bc6e1e498c8f2084304ed55"
-CROS_WORKON_TREE="56f51edbec0ccbbca4e4cdd4694e849e4ae48f42"
-CROS_RUST_SUBDIR="cras/src/server/rust"
-
-CROS_WORKON_LOCALNAME="adhd"
-CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
-# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras/src/server/rust is
-# using the `provided by ebuild` macro from the cros-rust eclass
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Rust code which is used within cras"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/src/server/rust"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-DEPEND="
-	dev-rust/libc:=
-"
-
-src_install() {
-	dolib.a "$(cros-rust_get_build_dir)/libcras_rust.a"
-	cros-rust_src_install
-}
diff --git a/media-sound/cras_rust/cras_rust-0.1.0-r6.ebuild b/media-sound/cras_rust/cras_rust-0.1.0-r6.ebuild
new file mode 100644
index 0000000..ff89f89
--- /dev/null
+++ b/media-sound/cras_rust/cras_rust-0.1.0-r6.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="86e1a560610cb3a8dfbf6cedb7984c85830d6855"
+CROS_WORKON_TREE="56f51edbec0ccbbca4e4cdd4694e849e4ae48f42"
+CROS_RUST_SUBDIR="cras/src/server/rust"
+
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras/src/server/rust is
+# using the `provided by ebuild` macro from the cros-rust eclass
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Rust code which is used within cras"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/src/server/rust"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+DEPEND="
+	dev-rust/libc:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
+
+src_install() {
+	dolib.a "$(cros-rust_get_build_dir)/libcras_rust.a"
+	cros-rust_src_install
+}
diff --git a/media-sound/cras_rust/cras_rust-9999.ebuild b/media-sound/cras_rust/cras_rust-9999.ebuild
index aeb5fdf..073d30d 100644
--- a/media-sound/cras_rust/cras_rust-9999.ebuild
+++ b/media-sound/cras_rust/cras_rust-9999.ebuild
@@ -23,6 +23,9 @@
 DEPEND="
 	dev-rust/libc:=
 "
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
 
 src_install() {
 	dolib.a "$(cros-rust_get_build_dir)/libcras_rust.a"
diff --git a/media-sound/cras_tests/cras_tests-0.1.0-r25.ebuild b/media-sound/cras_tests/cras_tests-0.1.0-r25.ebuild
deleted file mode 100644
index bbdfb80..0000000
--- a/media-sound/cras_tests/cras_tests-0.1.0-r25.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="5869f01249df06c60bc6e1e498c8f2084304ed55"
-CROS_WORKON_TREE="aec12bcc055872282be343c4f5d67fa9f0a60927"
-CROS_RUST_SUBDIR="cras/client/cras_tests"
-
-CROS_WORKON_LOCALNAME="adhd"
-CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
-# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras-sys/Cargo.toml is
-# using "provided by ebuild" macro which supported by cros-rust
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Rust version cras test client"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/cras_tests"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-DEPEND="
-	>=dev-rust/getopts-0.2.18:=
-	!>=dev-rust/getopts-0.3
-	dev-rust/hound:=
-	media-sound/audio_streams:=
-	media-sound/libcras:=
-"
-
-RDEPEND="!<=media-sound/cras_tests-0.1.0-r12"
diff --git a/media-sound/cras_tests/cras_tests-0.1.0-r38.ebuild b/media-sound/cras_tests/cras_tests-0.1.0-r38.ebuild
new file mode 100644
index 0000000..55c4c2a
--- /dev/null
+++ b/media-sound/cras_tests/cras_tests-0.1.0-r38.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="82ba61f11c1f49704db5fcaf7b14ff1cb96860cc"
+CROS_WORKON_TREE=("494f6b2f84535576baf70eb7303bb7a60f8f94da" "4df4730b8dde3019b84b90e0b6785d53ae1480c8")
+CROS_RUST_SUBDIR="cras/client/cras_tests"
+
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras-sys/Cargo.toml is
+# using "provided by ebuild" macro which supported by cros-rust
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} cras/dbus_bindings"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Rust version cras test client"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/cras_tests"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+DEPEND="
+	dev-rust/chromeos-dbus-bindings:=
+	=dev-rust/dbus-0.8*:=
+	>=dev-rust/getopts-0.2.18:= <dev-rust/getopts-0.3
+	dev-rust/hound:=
+	dev-rust/sys_util:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+	media-sound/audio_streams:=
+	media-sound/libcras:=
+"
+# DEPEND isn't needed in RDEPEND because nothing from this ebuild is installed
+# to the cros_rust_registry.
+RDEPEND="
+	!<=media-sound/cras_tests-0.1.0-r12
+"
+
+src_install() {
+	dobin "$(cros-rust_get_build_dir)/cras_tests"
+}
diff --git a/media-sound/cras_tests/cras_tests-9999.ebuild b/media-sound/cras_tests/cras_tests-9999.ebuild
index bb526f3..e8d4cb6 100644
--- a/media-sound/cras_tests/cras_tests-9999.ebuild
+++ b/media-sound/cras_tests/cras_tests-9999.ebuild
@@ -9,7 +9,7 @@
 CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
 # We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras-sys/Cargo.toml is
 # using "provided by ebuild" macro which supported by cros-rust
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR} cras/dbus_bindings"
 
 inherit cros-workon cros-rust
 
@@ -21,11 +21,21 @@
 IUSE="test"
 
 DEPEND="
-	>=dev-rust/getopts-0.2.18:=
-	!>=dev-rust/getopts-0.3
+	dev-rust/chromeos-dbus-bindings:=
+	=dev-rust/dbus-0.8*:=
+	>=dev-rust/getopts-0.2.18:= <dev-rust/getopts-0.3
 	dev-rust/hound:=
+	dev-rust/sys_util:=
+	>=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
 	media-sound/audio_streams:=
 	media-sound/libcras:=
 "
+# DEPEND isn't needed in RDEPEND because nothing from this ebuild is installed
+# to the cros_rust_registry.
+RDEPEND="
+	!<=media-sound/cras_tests-0.1.0-r12
+"
 
-RDEPEND="!<=media-sound/cras_tests-0.1.0-r12"
+src_install() {
+	dobin "$(cros-rust_get_build_dir)/cras_tests"
+}
diff --git a/media-sound/cros_alsa/cros_alsa-0.1.0-r2.ebuild b/media-sound/cros_alsa/cros_alsa-0.1.0-r2.ebuild
deleted file mode 100644
index 9845ce0..0000000
--- a/media-sound/cros_alsa/cros_alsa-0.1.0-r2.ebuild
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5869f01249df06c60bc6e1e498c8f2084304ed55"
-CROS_WORKON_TREE="8df34d11e8b707d596006d273308a7bc953387a6"
-CROS_WORKON_LOCALNAME="adhd"
-CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
-CROS_WORKON_INCREMENTAL_BUILD=1
-# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cros_alsa/Cargo.toml
-# is using "provided by ebuild" macro which supported by cros-rust
-CROS_WORKON_SUBTREE="cros_alsa"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Rust version alsa-lib"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cros_alsa"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-DEPEND="
-	>=dev-rust/alsa-sys-0.2.0:= <dev-rust/alsa-sys-0.3.0
-	>=dev-rust/libc-0.2.65:=
-	<dev-rust/libc-0.3
-	=dev-rust/proc-macro2-1*:=
-	=dev-rust/quote-1*:=
-	=dev-rust/syn-1*:=
-	dev-rust/remain:=
-"
-
-pkg_setup() {
-	cros-rust_pkg_setup cros_alsa_derive
-	cros-rust_pkg_setup cros_alsa
-}
-
-src_compile() {
-	(
-		cd cros_alsa_derive || die
-		cros-rust_src_compile
-	)
-
-	cros-rust_src_compile
-}
-
-src_test() {
-	(
-		cd cros_alsa_derive || die
-		cros-rust_src_test
-	)
-
-	cros-rust_src_test
-}
-
-src_install() {
-	(
-		cd cros_alsa_derive || die
-		cros-rust_publish cros_alsa_derive "$(cros-rust_get_crate_version .)"
-	)
-
-	cros-rust_publish "${PN}" "$(cros-rust_get_crate_version)"
-}
-
-pkg_postinst() {
-	cros-rust_pkg_postinst cros_alsa_derive
-	cros-rust_pkg_postinst cros_alsa
-}
-
-pkg_prerm() {
-	cros-rust_pkg_prerm cros_alsa_derive
-	cros-rust_pkg_prerm cros_alsa
-}
diff --git a/media-sound/cros_alsa/cros_alsa-0.1.0-r5.ebuild b/media-sound/cros_alsa/cros_alsa-0.1.0-r5.ebuild
new file mode 100644
index 0000000..a4f5efa
--- /dev/null
+++ b/media-sound/cros_alsa/cros_alsa-0.1.0-r5.ebuild
@@ -0,0 +1,77 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="86e1a560610cb3a8dfbf6cedb7984c85830d6855"
+CROS_WORKON_TREE="527e35f492a820d8d3f1fd5c639d68664b7fcbd9"
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+CROS_WORKON_INCREMENTAL_BUILD=1
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cros_alsa/Cargo.toml
+# is using "provided by ebuild" macro which supported by cros-rust
+CROS_WORKON_SUBTREE="cros_alsa"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Rust version alsa-lib"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cros_alsa"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+DEPEND="
+	>=dev-rust/alsa-sys-0.2.0:= <dev-rust/alsa-sys-0.3.0
+	>=dev-rust/libc-0.2.65:=
+	<dev-rust/libc-0.3
+	=dev-rust/proc-macro2-1*:=
+	=dev-rust/quote-1*:=
+	=dev-rust/syn-1*:=
+	dev-rust/remain:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
+
+pkg_setup() {
+	cros-rust_pkg_setup cros_alsa_derive
+	cros-rust_pkg_setup cros_alsa
+}
+
+src_compile() {
+	(
+		cd cros_alsa_derive || die
+		cros-rust_src_compile
+	)
+
+	cros-rust_src_compile
+}
+
+src_test() {
+	(
+		cd cros_alsa_derive || die
+		cros-rust_src_test
+	)
+
+	cros-rust_src_test
+}
+
+src_install() {
+	(
+		cd cros_alsa_derive || die
+		cros-rust_publish cros_alsa_derive "$(cros-rust_get_crate_version .)"
+	)
+
+	cros-rust_publish "${PN}" "$(cros-rust_get_crate_version)"
+}
+
+pkg_postinst() {
+	cros-rust_pkg_postinst cros_alsa_derive
+	cros-rust_pkg_postinst cros_alsa
+}
+
+pkg_prerm() {
+	cros-rust_pkg_prerm cros_alsa_derive
+	cros-rust_pkg_prerm cros_alsa
+}
diff --git a/media-sound/cros_alsa/cros_alsa-9999.ebuild b/media-sound/cros_alsa/cros_alsa-9999.ebuild
index 97cc701..8e71bea 100644
--- a/media-sound/cros_alsa/cros_alsa-9999.ebuild
+++ b/media-sound/cros_alsa/cros_alsa-9999.ebuild
@@ -28,6 +28,9 @@
 	=dev-rust/syn-1*:=
 	dev-rust/remain:=
 "
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}"
 
 pkg_setup() {
 	cros-rust_pkg_setup cros_alsa_derive
diff --git a/media-sound/libcras/libcras-0.1.0-r51.ebuild b/media-sound/libcras/libcras-0.1.0-r51.ebuild
deleted file mode 100644
index 0d5144a..0000000
--- a/media-sound/libcras/libcras-0.1.0-r51.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="5869f01249df06c60bc6e1e498c8f2084304ed55"
-CROS_WORKON_TREE="631d1b754152eafdfc9ebdb24d1fa6cd55389879"
-CROS_RUST_SUBDIR="cras/client/libcras"
-
-CROS_WORKON_LOCALNAME="adhd"
-CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
-# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras-sys/Cargo.toml is
-# using "provided by ebuild" macro which supported by cros-rust
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Rust version libcras"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/libcras"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="test"
-
-DEPEND="
-	>=dev-rust/libc-0.2.44:=
-	dev-rust/data_model:=
-	dev-rust/sys_util:=
-	media-sound/audio_streams:=
-	media-sound/cras-sys:=
-"
-
-RDEPEND="!<=media-sound/libcras-0.1.0-r21"
diff --git a/media-sound/libcras/libcras-0.1.0-r56.ebuild b/media-sound/libcras/libcras-0.1.0-r56.ebuild
new file mode 100644
index 0000000..7a116b8
--- /dev/null
+++ b/media-sound/libcras/libcras-0.1.0-r56.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="d468e33178a76b9c3f0e28f3e1cbf518538d42b4"
+CROS_WORKON_TREE="ec4dd0d4955052d5311671f6724e123d6753116c"
+CROS_RUST_SUBDIR="cras/client/libcras"
+
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras-sys/Cargo.toml is
+# using "provided by ebuild" macro which supported by cros-rust
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Rust version libcras"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/libcras"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
+
+DEPEND="
+	>=dev-rust/libc-0.2.44:=
+	dev-rust/data_model:=
+	dev-rust/sys_util:=
+	media-sound/audio_streams:=
+	media-sound/cras-sys:=
+"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!<=media-sound/libcras-0.1.0-r21
+"
diff --git a/media-sound/libcras/libcras-9999.ebuild b/media-sound/libcras/libcras-9999.ebuild
index 069c936..6f102ed 100644
--- a/media-sound/libcras/libcras-9999.ebuild
+++ b/media-sound/libcras/libcras-9999.ebuild
@@ -28,5 +28,8 @@
 	media-sound/audio_streams:=
 	media-sound/cras-sys:=
 "
-
-RDEPEND="!<=media-sound/libcras-0.1.0-r21"
+# (crbug.com/1182669): build-time only deps need to be in RDEPEND so they are pulled in when
+# installing binpkgs since the full source tree is required to use the crate.
+RDEPEND="${DEPEND}
+	!<=media-sound/libcras-0.1.0-r21
+"
diff --git a/media-sound/sof_sys/files/chromeos-version.sh b/media-sound/sof_sys/files/chromeos-version.sh
new file mode 100755
index 0000000..f9c6838
--- /dev/null
+++ b/media-sound/sof_sys/files/chromeos-version.sh
@@ -0,0 +1,9 @@
+#!/bin/sh
+#
+# Copyright 2021 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.
+
+# Assumes the first 'version =' line in the Cargo.toml is the version for the
+# crate.
+awk '/^version = / { gsub(/"/, "", $0); print $3; exit }' "$1/sof_sys/Cargo.toml"
diff --git a/media-sound/sof_sys/sof_sys-0.1.0-r2.ebuild b/media-sound/sof_sys/sof_sys-0.1.0-r2.ebuild
new file mode 100644
index 0000000..7861764
--- /dev/null
+++ b/media-sound/sof_sys/sof_sys-0.1.0-r2.ebuild
@@ -0,0 +1,27 @@
+# Copyright 2020 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.
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6db32db512a77aba7f7d1eec65c94ae7c2b630d8"
+CROS_WORKON_TREE="722de0d042e40080ac592dcac92d934b39597d43"
+CROS_RUST_SUBDIR="sof_sys"
+
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras-sys/Cargo.toml is
+# using "provided by ebuild" macro which supported by cros-rust.
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Crate for SOF C-structures generated by bindgen"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/sof_sys"
+
+SRC_URI=""
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="test"
diff --git a/media-sound/sof_sys/sof_sys-9999.ebuild b/media-sound/sof_sys/sof_sys-9999.ebuild
index 2f1467a..51aad8d 100644
--- a/media-sound/sof_sys/sof_sys-9999.ebuild
+++ b/media-sound/sof_sys/sof_sys-9999.ebuild
@@ -4,44 +4,22 @@
 
 EAPI=7
 
+CROS_RUST_SUBDIR="sof_sys"
+
 CROS_WORKON_LOCALNAME="adhd"
 CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
 # We don't use CROS_WORKON_OUTOFTREE_BUILD here since cras-sys/Cargo.toml is
 # using "provided by ebuild" macro which supported by cros-rust.
 CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="sof_sys"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
 
 inherit cros-workon cros-rust
 
 DESCRIPTION="Crate for SOF C-structures generated by bindgen"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/main/sof_sys"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/sof_sys"
 
 SRC_URI=""
 
 LICENSE="BSD-Google"
 KEYWORDS="~*"
 IUSE="test"
-
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/sof_sys"
-
-	cros-rust_src_unpack
-}
-
-src_compile() {
-	use test && ecargo_test --no-run
-}
-
-src_test() {
-	if use x86 || use amd64; then
-		ecargo_test
-	else
-		elog "Skipping rust unit tests on non-x86 platform"
-	fi
-}
-
-src_install() {
-	cros-rust_publish "${PN}" "$(cros-rust_get_crate_version)"
-}
diff --git a/media-sound/sound_card_init/sound_card_init-0.1.0-r17.ebuild b/media-sound/sound_card_init/sound_card_init-0.1.0-r17.ebuild
new file mode 100644
index 0000000..e36056a
--- /dev/null
+++ b/media-sound/sound_card_init/sound_card_init-0.1.0-r17.ebuild
@@ -0,0 +1,55 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="4adb42db9ad5eadf04f5755a294ba8f6538d4074"
+CROS_WORKON_TREE="bbabf117ce1fac3718c2d641b9e289fddde8cbae"
+CROS_WORKON_LOCALNAME="adhd"
+CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
+# We don't use CROS_WORKON_OUTOFTREE_BUILD here since sound_card_init/Cargo.toml
+# is using "provided by ebuild" macro which supported by cros-rust
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE="sound_card_init"
+
+inherit cros-workon cros-rust udev user
+
+DESCRIPTION="Sound Card Initializer"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/sound_card_init"
+
+LICENSE="BSD-Google"
+KEYWORDS="-* amd64"
+
+DEPEND="
+	dev-rust/cc:=
+	dev-rust/getopts:=
+	dev-rust/sys_util:=
+	dev-rust/serde_yaml:=
+	dev-rust/remain:=
+	media-sound/audio_streams:=
+	media-sound/cros_alsa:=
+	media-sound/libcras:=
+	media-sound/sof_sys:=
+"
+
+src_install() {
+	dobin "$(cros-rust_get_build_dir)/sound_card_init"
+
+	# Add upstart job for sound_card_init.
+	insinto /etc/init
+	doins sound_card_init.conf
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "seccomp/sound_card_init-seccomp-${ARCH}.policy" sound_card_init-seccomp.policy
+
+	udev_dorules 99-sound_card_init.rules
+
+}
+
+pkg_preinst() {
+	enewuser "sound_card_init"
+	enewgroup "sound_card_init"
+
+	cros-rust_pkg_preinst
+}
diff --git a/media-sound/sound_card_init/sound_card_init-0.1.0-r9.ebuild b/media-sound/sound_card_init/sound_card_init-0.1.0-r9.ebuild
deleted file mode 100644
index b543a0d..0000000
--- a/media-sound/sound_card_init/sound_card_init-0.1.0-r9.ebuild
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="5869f01249df06c60bc6e1e498c8f2084304ed55"
-CROS_WORKON_TREE="489dc9b5be888f7a84485953d6560d4f374b3b12"
-CROS_WORKON_LOCALNAME="adhd"
-CROS_WORKON_PROJECT="chromiumos/third_party/adhd"
-# We don't use CROS_WORKON_OUTOFTREE_BUILD here since sound_card_init/Cargo.toml
-# is using "provided by ebuild" macro which supported by cros-rust
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE="sound_card_init"
-
-inherit cros-workon cros-rust udev user
-
-DESCRIPTION="Sound Card Initializer"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/sound_card_init"
-
-LICENSE="BSD-Google"
-KEYWORDS="-* amd64"
-
-DEPEND="
-	dev-rust/cc:=
-	dev-rust/getopts:=
-	dev-rust/sys_util:=
-	dev-rust/serde_yaml:=
-	dev-rust/remain:=
-	media-sound/cros_alsa:=
-	media-sound/audio_streams:=
-	media-sound/libcras:=
-"
-
-src_install() {
-	dobin "$(cros-rust_get_build_dir)/sound_card_init"
-
-	# Add upstart job for sound_card_init.
-	insinto /etc/init
-	doins sound_card_init.conf
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	newins "seccomp/sound_card_init-seccomp-${ARCH}.policy" sound_card_init-seccomp.policy
-
-	udev_dorules 99-sound_card_init.rules
-
-}
-
-pkg_preinst() {
-	enewuser "sound_card_init"
-	enewgroup "sound_card_init"
-}
diff --git a/media-sound/sound_card_init/sound_card_init-9999.ebuild b/media-sound/sound_card_init/sound_card_init-9999.ebuild
index 58682001..d2d56e9 100644
--- a/media-sound/sound_card_init/sound_card_init-9999.ebuild
+++ b/media-sound/sound_card_init/sound_card_init-9999.ebuild
@@ -24,9 +24,10 @@
 	dev-rust/sys_util:=
 	dev-rust/serde_yaml:=
 	dev-rust/remain:=
-	media-sound/cros_alsa:=
 	media-sound/audio_streams:=
+	media-sound/cros_alsa:=
 	media-sound/libcras:=
+	media-sound/sof_sys:=
 "
 
 src_install() {
@@ -47,4 +48,6 @@
 pkg_preinst() {
 	enewuser "sound_card_init"
 	enewgroup "sound_card_init"
+
+	cros-rust_pkg_preinst
 }
diff --git a/media-video/libva-utils/Manifest b/media-video/libva-utils/Manifest
index ff60167..010d98e 100644
--- a/media-video/libva-utils/Manifest
+++ b/media-video/libva-utils/Manifest
@@ -1 +1 @@
-DIST libva-utils-2.9.1.tar.gz 1198337 BLAKE2B 58f5a6a537c68eed74aec5dc8f1c4b5a0431062d1d9803d8ccb1e5c3b534edf4f91288009d5940a0ddab49beeadae92bf361bec0bee8a3214f04f3c6767b0992 SHA512 39d79d4eed1fc0890fbf89d5689d4f01f704d3c71b4986e0eaf4c4a2f836cc36338d0a01630092a31b740588426398d0381eae1dc0302b0df94859d9161d8378
+DIST libva-utils-2.11.1.tar.gz 1205472 BLAKE2B 251a318d10eb5907e0ee54f101a153cfe76a98d61fc1f4fabf890901b52e980439d77acfbb4e1b566d361a7cda5c7ab504e575067eb932b0e121904be34b801f SHA512 d64c4767269a810386e02426fce3bde6aa693ac899ace22900e4ae4918dfe461736fe0a031db36751281d5bd78960354cdfa4ca13c5f7c30cc67d05abdd0bcd2
diff --git a/media-video/libva-utils/libva-utils-2.11.1-r1.ebuild b/media-video/libva-utils/libva-utils-2.11.1-r1.ebuild
new file mode 120000
index 0000000..d53f141
--- /dev/null
+++ b/media-video/libva-utils/libva-utils-2.11.1-r1.ebuild
@@ -0,0 +1 @@
+libva-utils-2.11.1.ebuild
\ No newline at end of file
diff --git a/media-video/libva-utils/libva-utils-2.11.1.ebuild b/media-video/libva-utils/libva-utils-2.11.1.ebuild
new file mode 100644
index 0000000..aa14341
--- /dev/null
+++ b/media-video/libva-utils/libva-utils-2.11.1.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic
+
+DESCRIPTION="Collection of utilities and tests for VA-API"
+HOMEPAGE="https://01.org/linuxmedia/vaapi"
+SRC_URI="https://github.com/intel/libva-utils/archive/${PV}.tar.gz -> ${P}.tar.gz"
+KEYWORDS="*"
+
+LICENSE="MIT"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+	virtual/pkgconfig
+"
+DEPEND="
+	>=x11-libs/libva-2.0.0:=
+	>=x11-libs/libdrm-2.4
+"
+RDEPEND="${DEPEND}"
+
+DOCS=( NEWS )
+
+PATCHES=(
+	"${FILESDIR}"/0001-Add-a-flag-to-build-vendor.patch
+)
+
+src_prepare() {
+	default
+	sed -e 's/-Werror//' -i test/Makefile.am || die
+	eautoreconf
+}
+
+src_configure() {
+	# Building the tests needs its own TR1 library.
+	append-cppflags "-DGTEST_USE_OWN_TR1_TUPLE=1"
+	local myeconfargs=(
+		--disable-x11
+		--disable-wayland
+		--enable-drm
+		--enable-tests
+		"$(use_enable test vendor_intel)"
+	)
+	econf "${myeconfargs[@]}"
+}
diff --git a/media-video/libva-utils/libva-utils-2.9.1-r3.ebuild b/media-video/libva-utils/libva-utils-2.9.1-r3.ebuild
deleted file mode 120000
index ac06993..0000000
--- a/media-video/libva-utils/libva-utils-2.9.1-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-libva-utils-2.9.1.ebuild
\ No newline at end of file
diff --git a/media-video/libva-utils/libva-utils-2.9.1.ebuild b/media-video/libva-utils/libva-utils-2.9.1.ebuild
deleted file mode 100644
index 4c4b1edf..0000000
--- a/media-video/libva-utils/libva-utils-2.9.1.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit autotools flag-o-matic
-
-DESCRIPTION="Collection of utilities and tests for VA-API"
-HOMEPAGE="https://01.org/linuxmedia/vaapi"
-SRC_URI="https://github.com/intel/libva-utils/archive/${PV}.tar.gz -> ${P}.tar.gz"
-KEYWORDS="*"
-
-LICENSE="MIT"
-SLOT="0"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-BDEPEND="
-	virtual/pkgconfig
-"
-DEPEND="
-	>=x11-libs/libva-2.0.0:=
-	>=x11-libs/libdrm-2.4
-"
-RDEPEND="${DEPEND}"
-
-DOCS=( NEWS )
-
-PATCHES=(
-	"${FILESDIR}"/0001-Add-a-flag-to-build-vendor.patch
-)
-
-src_prepare() {
-	default
-	sed -e 's/-Werror//' -i test/Makefile.am || die
-	eautoreconf
-}
-
-src_configure() {
-	# Building the tests needs its own TR1 library.
-	append-cppflags "-DGTEST_USE_OWN_TR1_TUPLE=1"
-	local myeconfargs=(
-		--disable-x11
-		--disable-wayland
-		--enable-drm
-		--enable-tests
-		"$(use_enable test vendor_intel)"
-	)
-	econf "${myeconfargs[@]}"
-}
diff --git a/metadata/md5-cache/app-accessibility/brltty-6.1 b/metadata/md5-cache/app-accessibility/brltty-6.1
deleted file mode 100644
index 6048d37..0000000
--- a/metadata/md5-cache/app-accessibility/brltty-6.1
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install postinst preinst prepare setup
-DEPEND=virtual/pkgconfig java? ( >=virtual/jdk-1.4 ) bluetooth? ( net-wireless/bluez ) gpm? ( >=sys-libs/gpm-1.20 ) iconv? ( virtual/libiconv ) icu? ( dev-libs/icu ) ncurses? ( sys-libs/ncurses ) nls? ( virtual/libintl ) python? ( >=dev-python/cython-0.16 ) tcl? ( >=dev-lang/tcl-8.4.15 ) usb? ( virtual/libusb:0 ) X? ( x11-libs/libXaw ) ocaml? ( >=dev-ml/findlib-1.0.4-r1 ) java? ( >=dev-java/java-config-2.2.0-r3 ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=Daemon that provides access to the Linux/Unix console for a blind person
-EAPI=5
-HOMEPAGE=http://mielke.cc/brltty/
-IUSE=+api +beeper bluetooth +contracted-braille doc +fm gpm iconv icu java +midi ncurses nls ocaml +pcm python usb +speech tcl X elibc_FreeBSD java asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=GPL-2 LGPL-2.1
-RDEPEND=java? ( >=virtual/jre-1.4 ) bluetooth? ( net-wireless/bluez ) gpm? ( >=sys-libs/gpm-1.20 ) iconv? ( virtual/libiconv ) icu? ( dev-libs/icu ) ncurses? ( sys-libs/ncurses ) nls? ( virtual/libintl ) python? ( >=dev-python/cython-0.16 ) tcl? ( >=dev-lang/tcl-8.4.15 ) usb? ( virtual/libusb:0 ) X? ( x11-libs/libXaw ) java? ( >=dev-java/java-config-2.2.0-r3 ) sys-apps/baselayout
-REQUIRED_USE=doc? ( api ) java? ( api ) ocaml? ( api ) python? ( api ) tcl? ( api )
-SLOT=0
-SRC_URI=http://mielke.cc/brltty/archive/brltty-6.1.tar.xz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	findlib	d2cdd99abbdd240f5ccef654e38a4ea9	flag-o-matic	5d5921a298e95441da2f85be419894c0	java-pkg-opt-2	be255db325e3af8fbf3506cf63998341	java-utils-2	82402a1c36ab4bf38f3313a543f9e827	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
-_md5_=516a24c2e8608ba9d37f758a91970ca5
diff --git a/metadata/md5-cache/app-accessibility/brltty-6.3 b/metadata/md5-cache/app-accessibility/brltty-6.3
new file mode 100644
index 0000000..62dc30e
--- /dev/null
+++ b/metadata/md5-cache/app-accessibility/brltty-6.3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare setup
+DEPEND=virtual/pkgconfig java? ( >=virtual/jdk-1.4 ) bluetooth? ( net-wireless/bluez ) gpm? ( >=sys-libs/gpm-1.20 ) iconv? ( virtual/libiconv ) icu? ( dev-libs/icu ) ncurses? ( sys-libs/ncurses ) nls? ( virtual/libintl ) python? ( >=dev-python/cython-0.16 ) tcl? ( >=dev-lang/tcl-8.4.15 ) usb? ( virtual/libusb:0 ) X? ( x11-libs/libXaw ) ocaml? ( >=dev-ml/findlib-1.0.4-r1 ) java? ( >=dev-java/java-config-2.2.0-r3 ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig sys-apps/baselayout
+DESCRIPTION=Daemon that provides access to the Linux/Unix console for a blind person
+EAPI=5
+HOMEPAGE=http://brltty.app/
+IUSE=+api +beeper bluetooth +contracted-braille +fm gpm iconv icu java +midi ncurses nls ocaml +pcm python usb +speech tcl X elibc_FreeBSD java asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=GPL-2 LGPL-2.1
+RDEPEND=java? ( >=virtual/jre-1.4 ) bluetooth? ( net-wireless/bluez ) gpm? ( >=sys-libs/gpm-1.20 ) iconv? ( virtual/libiconv ) icu? ( dev-libs/icu ) ncurses? ( sys-libs/ncurses ) nls? ( virtual/libintl ) python? ( >=dev-python/cython-0.16 ) tcl? ( >=dev-lang/tcl-8.4.15 ) usb? ( virtual/libusb:0 ) X? ( x11-libs/libXaw ) java? ( >=dev-java/java-config-2.2.0-r3 ) sys-apps/baselayout
+REQUIRED_USE=java? ( api ) ocaml? ( api ) python? ( api ) tcl? ( api )
+SLOT=0
+SRC_URI=http://brltty.app/archive/brltty-6.3.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	findlib	d2cdd99abbdd240f5ccef654e38a4ea9	flag-o-matic	5d5921a298e95441da2f85be419894c0	java-pkg-opt-2	be255db325e3af8fbf3506cf63998341	java-utils-2	82402a1c36ab4bf38f3313a543f9e827	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
+_md5_=df0e10988861e37df5c2fbfedfc5f8d1
diff --git a/metadata/md5-cache/app-accessibility/brltty-6.3-r3 b/metadata/md5-cache/app-accessibility/brltty-6.3-r3
new file mode 100644
index 0000000..62dc30e
--- /dev/null
+++ b/metadata/md5-cache/app-accessibility/brltty-6.3-r3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare setup
+DEPEND=virtual/pkgconfig java? ( >=virtual/jdk-1.4 ) bluetooth? ( net-wireless/bluez ) gpm? ( >=sys-libs/gpm-1.20 ) iconv? ( virtual/libiconv ) icu? ( dev-libs/icu ) ncurses? ( sys-libs/ncurses ) nls? ( virtual/libintl ) python? ( >=dev-python/cython-0.16 ) tcl? ( >=dev-lang/tcl-8.4.15 ) usb? ( virtual/libusb:0 ) X? ( x11-libs/libXaw ) ocaml? ( >=dev-ml/findlib-1.0.4-r1 ) java? ( >=dev-java/java-config-2.2.0-r3 ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig sys-apps/baselayout
+DESCRIPTION=Daemon that provides access to the Linux/Unix console for a blind person
+EAPI=5
+HOMEPAGE=http://brltty.app/
+IUSE=+api +beeper bluetooth +contracted-braille +fm gpm iconv icu java +midi ncurses nls ocaml +pcm python usb +speech tcl X elibc_FreeBSD java asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=GPL-2 LGPL-2.1
+RDEPEND=java? ( >=virtual/jre-1.4 ) bluetooth? ( net-wireless/bluez ) gpm? ( >=sys-libs/gpm-1.20 ) iconv? ( virtual/libiconv ) icu? ( dev-libs/icu ) ncurses? ( sys-libs/ncurses ) nls? ( virtual/libintl ) python? ( >=dev-python/cython-0.16 ) tcl? ( >=dev-lang/tcl-8.4.15 ) usb? ( virtual/libusb:0 ) X? ( x11-libs/libXaw ) java? ( >=dev-java/java-config-2.2.0-r3 ) sys-apps/baselayout
+REQUIRED_USE=java? ( api ) ocaml? ( api ) python? ( api ) tcl? ( api )
+SLOT=0
+SRC_URI=http://brltty.app/archive/brltty-6.3.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	findlib	d2cdd99abbdd240f5ccef654e38a4ea9	flag-o-matic	5d5921a298e95441da2f85be419894c0	java-pkg-opt-2	be255db325e3af8fbf3506cf63998341	java-utils-2	82402a1c36ab4bf38f3313a543f9e827	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
+_md5_=df0e10988861e37df5c2fbfedfc5f8d1
diff --git a/metadata/md5-cache/app-accessibility/espeak-ng-1.49.3.12 b/metadata/md5-cache/app-accessibility/espeak-ng-1.49.3.12
new file mode 100644
index 0000000..d4b6e4b
--- /dev/null
+++ b/metadata/md5-cache/app-accessibility/espeak-ng-1.49.3.12
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Text-to-speech engine
+EAPI=6
+HOMEPAGE=https://github.com/espeak-ng/espeak-ng
+KEYWORDS=*
+LICENSE=GPL-3
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/espeak-ng-1.49.3.12.tar.gz
+_md5_=27b4f23baf72e2c3dd794ac7915686fc
diff --git a/metadata/md5-cache/app-accessibility/espeak-ng-1.49.3.7 b/metadata/md5-cache/app-accessibility/espeak-ng-1.49.3.7
deleted file mode 100644
index 0dfa8cb..0000000
--- a/metadata/md5-cache/app-accessibility/espeak-ng-1.49.3.7
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Text-to-speech engine
-EAPI=6
-HOMEPAGE=https://github.com/espeak-ng/espeak-ng
-KEYWORDS=*
-LICENSE=GPL-3
-SLOT=0
-SRC_URI=gs://chromeos-localmirror/distfiles/espeak-ng-1.49.3.7.tar.gz
-_md5_=27b4f23baf72e2c3dd794ac7915686fc
diff --git a/metadata/md5-cache/app-accessibility/googletts-14.7 b/metadata/md5-cache/app-accessibility/googletts-14.7
deleted file mode 100644
index 015ed2b..0000000
--- a/metadata/md5-cache/app-accessibility/googletts-14.7
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Google text-to-speech engine
-EAPI=6
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=!<chromeos-base/common-assets-0.0.2-r123
-SLOT=0
-SRC_URI=gs://chromeos-localmirror/distfiles/googletts-14.7.tar.xz
-_md5_=5d2e42951e6bc40d79d0eb72c692e5a6
diff --git a/metadata/md5-cache/app-accessibility/googletts-26.5 b/metadata/md5-cache/app-accessibility/googletts-26.5
new file mode 100644
index 0000000..b42c3db
--- /dev/null
+++ b/metadata/md5-cache/app-accessibility/googletts-26.5
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Google text-to-speech engine
+EAPI=6
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=!<chromeos-base/common-assets-0.0.2-r123
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/googletts-26.5.tar.xz
+_md5_=5d2e42951e6bc40d79d0eb72c692e5a6
diff --git a/metadata/md5-cache/app-admin/rsyslog-8.1904.0 b/metadata/md5-cache/app-admin/rsyslog-8.1904.0
deleted file mode 100644
index 84a7894..0000000
--- a/metadata/md5-cache/app-admin/rsyslog-8.1904.0
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile config configure install postinst prepare setup test unpack
-DEPEND=>=dev-libs/libfastjson-0.99.8:= >=dev-libs/libestr-0.1.9 >=sys-libs/zlib-1.2.5 chromeos-base/syslog-cat curl? ( >=net-misc/curl-7.35.0 ) dbi? ( >=dev-db/libdbi-0.8.3 ) elasticsearch? ( >=net-misc/curl-7.35.0 ) gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= ) jemalloc? ( >=dev-libs/jemalloc-3.3.1:= ) kafka? ( >=dev-libs/librdkafka-0.9.0.99:= ) kerberos? ( virtual/krb5 ) kubernetes? ( >=net-misc/curl-7.35.0 ) mdblookup? ( dev-libs/libmaxminddb:= ) mongodb? ( >=dev-libs/mongo-c-driver-1.1.10:= ) mysql? ( virtual/libmysqlclient:= ) normalize? ( >=dev-libs/libee-0.4.0 >=dev-libs/liblognorm-2.0.3:= ) clickhouse? ( >=net-misc/curl-7.35.0 ) omhttpfs? ( >=net-misc/curl-7.35.0 ) omudpspoof? ( >=net-libs/libnet-1.1.6 ) postgres? ( >=dev-db/postgresql-8.4.20:= ) rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0:= ) redis? ( >=dev-libs/hiredis-0.11.0:= ) relp? ( >=dev-libs/librelp-1.2.17:= ) rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] ) rfc5424hmac? ( !libressl? ( >=dev-libs/openssl-0.9.8y:0= ) libressl? ( dev-libs/libressl:= ) ) snmp? ( >=net-analyzer/net-snmp-5.7.2 ) ssl? ( gnutls? ( >=net-libs/gnutls-2.12.23:0= ) openssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) ) systemd? ( >=sys-apps/systemd-234 ) uuid? ( sys-apps/util-linux:0= ) xxhash? ( dev-libs/xxhash:= ) zeromq? ( >=net-libs/czmq-3.0.2 ) >=sys-devel/autoconf-archive-2015.02.24 virtual/pkgconfig elibc_musl? ( sys-libs/queue-standalone ) test? ( >=dev-libs/liblogging-1.0.1[stdlog] jemalloc? ( <sys-libs/libfaketime-0.9.7 ) !jemalloc? ( sys-libs/libfaketime ) || ( dev-lang/python:3.7 dev-lang/python:3.6 >=dev-lang/python-2.7.5-r2:2.7 ) ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig
-DESCRIPTION=An enhanced multi-threaded syslogd with database support and more
-EAPI=6
-HOMEPAGE=https://www.rsyslog.com/
-IUSE=curl dbi debug doc elasticsearch +gcrypt gnutls jemalloc kafka kerberos kubernetes libressl mdblookup mongodb mysql normalize clickhouse omhttp omhttpfs omudpspoof openssl postgres rabbitmq redis relp rfc3195 rfc5424hmac snmp ssl systemd test usertools +uuid xxhash zeromq kernel_linux
-KEYWORDS=*
-LICENSE=GPL-3 LGPL-3 Apache-2.0
-RDEPEND=>=dev-libs/libfastjson-0.99.8:= >=dev-libs/libestr-0.1.9 >=sys-libs/zlib-1.2.5 chromeos-base/syslog-cat curl? ( >=net-misc/curl-7.35.0 ) dbi? ( >=dev-db/libdbi-0.8.3 ) elasticsearch? ( >=net-misc/curl-7.35.0 ) gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= ) jemalloc? ( >=dev-libs/jemalloc-3.3.1:= ) kafka? ( >=dev-libs/librdkafka-0.9.0.99:= ) kerberos? ( virtual/krb5 ) kubernetes? ( >=net-misc/curl-7.35.0 ) mdblookup? ( dev-libs/libmaxminddb:= ) mongodb? ( >=dev-libs/mongo-c-driver-1.1.10:= ) mysql? ( virtual/libmysqlclient:= ) normalize? ( >=dev-libs/libee-0.4.0 >=dev-libs/liblognorm-2.0.3:= ) clickhouse? ( >=net-misc/curl-7.35.0 ) omhttpfs? ( >=net-misc/curl-7.35.0 ) omudpspoof? ( >=net-libs/libnet-1.1.6 ) postgres? ( >=dev-db/postgresql-8.4.20:= ) rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0:= ) redis? ( >=dev-libs/hiredis-0.11.0:= ) relp? ( >=dev-libs/librelp-1.2.17:= ) rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] ) rfc5424hmac? ( !libressl? ( >=dev-libs/openssl-0.9.8y:0= ) libressl? ( dev-libs/libressl:= ) ) snmp? ( >=net-analyzer/net-snmp-5.7.2 ) ssl? ( gnutls? ( >=net-libs/gnutls-2.12.23:0= ) openssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) ) systemd? ( >=sys-apps/systemd-234 ) uuid? ( sys-apps/util-linux:0= ) xxhash? ( dev-libs/xxhash:= ) zeromq? ( >=net-libs/czmq-3.0.2 )
-REQUIRED_USE=kubernetes? ( normalize ) ssl? ( || ( gnutls openssl ) )
-RESTRICT=!test? ( test )
-SLOT=0
-SRC_URI=https://www.rsyslog.com/files/download/rsyslog/rsyslog-8.1904.0.tar.gz doc? ( https://www.rsyslog.com/files/download/rsyslog/rsyslog-doc-8.1904.0.tar.gz )
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b9f3c0aa93e65ee9bd55c18afa57bb7d
diff --git a/metadata/md5-cache/app-admin/rsyslog-8.1904.0-r3 b/metadata/md5-cache/app-admin/rsyslog-8.1904.0-r3
deleted file mode 100644
index 84a7894..0000000
--- a/metadata/md5-cache/app-admin/rsyslog-8.1904.0-r3
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile config configure install postinst prepare setup test unpack
-DEPEND=>=dev-libs/libfastjson-0.99.8:= >=dev-libs/libestr-0.1.9 >=sys-libs/zlib-1.2.5 chromeos-base/syslog-cat curl? ( >=net-misc/curl-7.35.0 ) dbi? ( >=dev-db/libdbi-0.8.3 ) elasticsearch? ( >=net-misc/curl-7.35.0 ) gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= ) jemalloc? ( >=dev-libs/jemalloc-3.3.1:= ) kafka? ( >=dev-libs/librdkafka-0.9.0.99:= ) kerberos? ( virtual/krb5 ) kubernetes? ( >=net-misc/curl-7.35.0 ) mdblookup? ( dev-libs/libmaxminddb:= ) mongodb? ( >=dev-libs/mongo-c-driver-1.1.10:= ) mysql? ( virtual/libmysqlclient:= ) normalize? ( >=dev-libs/libee-0.4.0 >=dev-libs/liblognorm-2.0.3:= ) clickhouse? ( >=net-misc/curl-7.35.0 ) omhttpfs? ( >=net-misc/curl-7.35.0 ) omudpspoof? ( >=net-libs/libnet-1.1.6 ) postgres? ( >=dev-db/postgresql-8.4.20:= ) rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0:= ) redis? ( >=dev-libs/hiredis-0.11.0:= ) relp? ( >=dev-libs/librelp-1.2.17:= ) rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] ) rfc5424hmac? ( !libressl? ( >=dev-libs/openssl-0.9.8y:0= ) libressl? ( dev-libs/libressl:= ) ) snmp? ( >=net-analyzer/net-snmp-5.7.2 ) ssl? ( gnutls? ( >=net-libs/gnutls-2.12.23:0= ) openssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) ) systemd? ( >=sys-apps/systemd-234 ) uuid? ( sys-apps/util-linux:0= ) xxhash? ( dev-libs/xxhash:= ) zeromq? ( >=net-libs/czmq-3.0.2 ) >=sys-devel/autoconf-archive-2015.02.24 virtual/pkgconfig elibc_musl? ( sys-libs/queue-standalone ) test? ( >=dev-libs/liblogging-1.0.1[stdlog] jemalloc? ( <sys-libs/libfaketime-0.9.7 ) !jemalloc? ( sys-libs/libfaketime ) || ( dev-lang/python:3.7 dev-lang/python:3.6 >=dev-lang/python-2.7.5-r2:2.7 ) ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig
-DESCRIPTION=An enhanced multi-threaded syslogd with database support and more
-EAPI=6
-HOMEPAGE=https://www.rsyslog.com/
-IUSE=curl dbi debug doc elasticsearch +gcrypt gnutls jemalloc kafka kerberos kubernetes libressl mdblookup mongodb mysql normalize clickhouse omhttp omhttpfs omudpspoof openssl postgres rabbitmq redis relp rfc3195 rfc5424hmac snmp ssl systemd test usertools +uuid xxhash zeromq kernel_linux
-KEYWORDS=*
-LICENSE=GPL-3 LGPL-3 Apache-2.0
-RDEPEND=>=dev-libs/libfastjson-0.99.8:= >=dev-libs/libestr-0.1.9 >=sys-libs/zlib-1.2.5 chromeos-base/syslog-cat curl? ( >=net-misc/curl-7.35.0 ) dbi? ( >=dev-db/libdbi-0.8.3 ) elasticsearch? ( >=net-misc/curl-7.35.0 ) gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= ) jemalloc? ( >=dev-libs/jemalloc-3.3.1:= ) kafka? ( >=dev-libs/librdkafka-0.9.0.99:= ) kerberos? ( virtual/krb5 ) kubernetes? ( >=net-misc/curl-7.35.0 ) mdblookup? ( dev-libs/libmaxminddb:= ) mongodb? ( >=dev-libs/mongo-c-driver-1.1.10:= ) mysql? ( virtual/libmysqlclient:= ) normalize? ( >=dev-libs/libee-0.4.0 >=dev-libs/liblognorm-2.0.3:= ) clickhouse? ( >=net-misc/curl-7.35.0 ) omhttpfs? ( >=net-misc/curl-7.35.0 ) omudpspoof? ( >=net-libs/libnet-1.1.6 ) postgres? ( >=dev-db/postgresql-8.4.20:= ) rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0:= ) redis? ( >=dev-libs/hiredis-0.11.0:= ) relp? ( >=dev-libs/librelp-1.2.17:= ) rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] ) rfc5424hmac? ( !libressl? ( >=dev-libs/openssl-0.9.8y:0= ) libressl? ( dev-libs/libressl:= ) ) snmp? ( >=net-analyzer/net-snmp-5.7.2 ) ssl? ( gnutls? ( >=net-libs/gnutls-2.12.23:0= ) openssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) ) systemd? ( >=sys-apps/systemd-234 ) uuid? ( sys-apps/util-linux:0= ) xxhash? ( dev-libs/xxhash:= ) zeromq? ( >=net-libs/czmq-3.0.2 )
-REQUIRED_USE=kubernetes? ( normalize ) ssl? ( || ( gnutls openssl ) )
-RESTRICT=!test? ( test )
-SLOT=0
-SRC_URI=https://www.rsyslog.com/files/download/rsyslog/rsyslog-8.1904.0.tar.gz doc? ( https://www.rsyslog.com/files/download/rsyslog/rsyslog-doc-8.1904.0.tar.gz )
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b9f3c0aa93e65ee9bd55c18afa57bb7d
diff --git a/metadata/md5-cache/app-admin/rsyslog-8.2102.0 b/metadata/md5-cache/app-admin/rsyslog-8.2102.0
new file mode 100644
index 0000000..e8749b3
--- /dev/null
+++ b/metadata/md5-cache/app-admin/rsyslog-8.2102.0
@@ -0,0 +1,16 @@
+BDEPEND=>=sys-devel/autoconf-archive-2015.02.24 virtual/pkgconfig elibc_musl? ( sys-libs/queue-standalone ) test? ( jemalloc? ( <sys-libs/libfaketime-0.9.7 ) !jemalloc? ( sys-libs/libfaketime ) || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) ) >=app-portage/elt-patches-20170815 virtual/pkgconfig
+DEFINED_PHASES=compile config configure install prepare setup test unpack
+DEPEND=>=dev-libs/libfastjson-0.99.8:= >=dev-libs/libestr-0.1.9 >=sys-libs/zlib-1.2.5 chromeos-base/syslog-cat curl? ( >=net-misc/curl-7.35.0 ) dbi? ( >=dev-db/libdbi-0.8.3 ) elasticsearch? ( >=net-misc/curl-7.35.0 ) gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= ) imhttp? ( www-servers/civetweb ) impcap? ( net-libs/libpcap ) jemalloc? ( >=dev-libs/jemalloc-3.3.1:= ) kafka? ( >=dev-libs/librdkafka-0.9.0.99:= ) kerberos? ( virtual/krb5 ) kubernetes? ( >=net-misc/curl-7.35.0 ) mdblookup? ( dev-libs/libmaxminddb:= ) mongodb? ( >=dev-libs/mongo-c-driver-1.1.10:= ) mysql? ( dev-db/mysql-connector-c:= ) normalize? ( >=dev-libs/liblognorm-2.0.3:= ) clickhouse? ( >=net-misc/curl-7.35.0 ) omhttpfs? ( >=net-misc/curl-7.35.0 ) omudpspoof? ( >=net-libs/libnet-1.1.6 ) postgres? ( >=dev-db/postgresql-8.4.20:= ) rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0:= ) redis? ( >=dev-libs/hiredis-0.11.0:= ) relp? ( >=dev-libs/librelp-1.2.17:= ) rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] ) rfc5424hmac? ( !libressl? ( >=dev-libs/openssl-0.9.8y:0= ) libressl? ( dev-libs/libressl:= ) ) snmp? ( >=net-analyzer/net-snmp-5.7.2 ) ssl? ( gnutls? ( >=net-libs/gnutls-2.12.23:0= ) openssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) ) systemd? ( >=sys-apps/systemd-234 ) uuid? ( sys-apps/util-linux:0= ) xxhash? ( dev-libs/xxhash:= ) zeromq? ( >=net-libs/czmq-4:=[drafts] ) test? ( >=dev-libs/liblogging-1.0.1[stdlog] ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=An enhanced multi-threaded syslogd with database support and more
+EAPI=7
+HOMEPAGE=https://www.rsyslog.com/
+IUSE=clickhouse curl dbi debug doc elasticsearch +gcrypt gnutls imhttp impcap jemalloc kafka kerberos kubernetes libressl mdblookup mongodb mysql normalize omhttp omhttpfs omudpspoof +openssl postgres rabbitmq redis relp rfc3195 rfc5424hmac snmp +ssl systemd test usertools +uuid xxhash zeromq kernel_linux
+KEYWORDS=*
+LICENSE=GPL-3 LGPL-3 Apache-2.0
+RDEPEND=>=dev-libs/libfastjson-0.99.8:= >=dev-libs/libestr-0.1.9 >=sys-libs/zlib-1.2.5 chromeos-base/syslog-cat curl? ( >=net-misc/curl-7.35.0 ) dbi? ( >=dev-db/libdbi-0.8.3 ) elasticsearch? ( >=net-misc/curl-7.35.0 ) gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= ) imhttp? ( www-servers/civetweb ) impcap? ( net-libs/libpcap ) jemalloc? ( >=dev-libs/jemalloc-3.3.1:= ) kafka? ( >=dev-libs/librdkafka-0.9.0.99:= ) kerberos? ( virtual/krb5 ) kubernetes? ( >=net-misc/curl-7.35.0 ) mdblookup? ( dev-libs/libmaxminddb:= ) mongodb? ( >=dev-libs/mongo-c-driver-1.1.10:= ) mysql? ( dev-db/mysql-connector-c:= ) normalize? ( >=dev-libs/liblognorm-2.0.3:= ) clickhouse? ( >=net-misc/curl-7.35.0 ) omhttpfs? ( >=net-misc/curl-7.35.0 ) omudpspoof? ( >=net-libs/libnet-1.1.6 ) postgres? ( >=dev-db/postgresql-8.4.20:= ) rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0:= ) redis? ( >=dev-libs/hiredis-0.11.0:= ) relp? ( >=dev-libs/librelp-1.2.17:= ) rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] ) rfc5424hmac? ( !libressl? ( >=dev-libs/openssl-0.9.8y:0= ) libressl? ( dev-libs/libressl:= ) ) snmp? ( >=net-analyzer/net-snmp-5.7.2 ) ssl? ( gnutls? ( >=net-libs/gnutls-2.12.23:0= ) openssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) ) systemd? ( >=sys-apps/systemd-234 ) uuid? ( sys-apps/util-linux:0= ) xxhash? ( dev-libs/xxhash:= ) zeromq? ( >=net-libs/czmq-4:=[drafts] )
+REQUIRED_USE=kubernetes? ( normalize ) ssl? ( || ( gnutls openssl ) )
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://www.rsyslog.com/files/download/rsyslog/rsyslog-8.2102.0.tar.gz doc? ( https://www.rsyslog.com/files/download/rsyslog/rsyslog-doc-8.2102.0.tar.gz )
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=07180f9054f9cf7de6c305e225f632d6
diff --git a/metadata/md5-cache/app-admin/rsyslog-8.2102.0-r3 b/metadata/md5-cache/app-admin/rsyslog-8.2102.0-r3
new file mode 100644
index 0000000..e8749b3
--- /dev/null
+++ b/metadata/md5-cache/app-admin/rsyslog-8.2102.0-r3
@@ -0,0 +1,16 @@
+BDEPEND=>=sys-devel/autoconf-archive-2015.02.24 virtual/pkgconfig elibc_musl? ( sys-libs/queue-standalone ) test? ( jemalloc? ( <sys-libs/libfaketime-0.9.7 ) !jemalloc? ( sys-libs/libfaketime ) || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) ) >=app-portage/elt-patches-20170815 virtual/pkgconfig
+DEFINED_PHASES=compile config configure install prepare setup test unpack
+DEPEND=>=dev-libs/libfastjson-0.99.8:= >=dev-libs/libestr-0.1.9 >=sys-libs/zlib-1.2.5 chromeos-base/syslog-cat curl? ( >=net-misc/curl-7.35.0 ) dbi? ( >=dev-db/libdbi-0.8.3 ) elasticsearch? ( >=net-misc/curl-7.35.0 ) gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= ) imhttp? ( www-servers/civetweb ) impcap? ( net-libs/libpcap ) jemalloc? ( >=dev-libs/jemalloc-3.3.1:= ) kafka? ( >=dev-libs/librdkafka-0.9.0.99:= ) kerberos? ( virtual/krb5 ) kubernetes? ( >=net-misc/curl-7.35.0 ) mdblookup? ( dev-libs/libmaxminddb:= ) mongodb? ( >=dev-libs/mongo-c-driver-1.1.10:= ) mysql? ( dev-db/mysql-connector-c:= ) normalize? ( >=dev-libs/liblognorm-2.0.3:= ) clickhouse? ( >=net-misc/curl-7.35.0 ) omhttpfs? ( >=net-misc/curl-7.35.0 ) omudpspoof? ( >=net-libs/libnet-1.1.6 ) postgres? ( >=dev-db/postgresql-8.4.20:= ) rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0:= ) redis? ( >=dev-libs/hiredis-0.11.0:= ) relp? ( >=dev-libs/librelp-1.2.17:= ) rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] ) rfc5424hmac? ( !libressl? ( >=dev-libs/openssl-0.9.8y:0= ) libressl? ( dev-libs/libressl:= ) ) snmp? ( >=net-analyzer/net-snmp-5.7.2 ) ssl? ( gnutls? ( >=net-libs/gnutls-2.12.23:0= ) openssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) ) systemd? ( >=sys-apps/systemd-234 ) uuid? ( sys-apps/util-linux:0= ) xxhash? ( dev-libs/xxhash:= ) zeromq? ( >=net-libs/czmq-4:=[drafts] ) test? ( >=dev-libs/liblogging-1.0.1[stdlog] ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=An enhanced multi-threaded syslogd with database support and more
+EAPI=7
+HOMEPAGE=https://www.rsyslog.com/
+IUSE=clickhouse curl dbi debug doc elasticsearch +gcrypt gnutls imhttp impcap jemalloc kafka kerberos kubernetes libressl mdblookup mongodb mysql normalize omhttp omhttpfs omudpspoof +openssl postgres rabbitmq redis relp rfc3195 rfc5424hmac snmp +ssl systemd test usertools +uuid xxhash zeromq kernel_linux
+KEYWORDS=*
+LICENSE=GPL-3 LGPL-3 Apache-2.0
+RDEPEND=>=dev-libs/libfastjson-0.99.8:= >=dev-libs/libestr-0.1.9 >=sys-libs/zlib-1.2.5 chromeos-base/syslog-cat curl? ( >=net-misc/curl-7.35.0 ) dbi? ( >=dev-db/libdbi-0.8.3 ) elasticsearch? ( >=net-misc/curl-7.35.0 ) gcrypt? ( >=dev-libs/libgcrypt-1.5.3:= ) imhttp? ( www-servers/civetweb ) impcap? ( net-libs/libpcap ) jemalloc? ( >=dev-libs/jemalloc-3.3.1:= ) kafka? ( >=dev-libs/librdkafka-0.9.0.99:= ) kerberos? ( virtual/krb5 ) kubernetes? ( >=net-misc/curl-7.35.0 ) mdblookup? ( dev-libs/libmaxminddb:= ) mongodb? ( >=dev-libs/mongo-c-driver-1.1.10:= ) mysql? ( dev-db/mysql-connector-c:= ) normalize? ( >=dev-libs/liblognorm-2.0.3:= ) clickhouse? ( >=net-misc/curl-7.35.0 ) omhttpfs? ( >=net-misc/curl-7.35.0 ) omudpspoof? ( >=net-libs/libnet-1.1.6 ) postgres? ( >=dev-db/postgresql-8.4.20:= ) rabbitmq? ( >=net-libs/rabbitmq-c-0.3.0:= ) redis? ( >=dev-libs/hiredis-0.11.0:= ) relp? ( >=dev-libs/librelp-1.2.17:= ) rfc3195? ( >=dev-libs/liblogging-1.0.1:=[rfc3195] ) rfc5424hmac? ( !libressl? ( >=dev-libs/openssl-0.9.8y:0= ) libressl? ( dev-libs/libressl:= ) ) snmp? ( >=net-analyzer/net-snmp-5.7.2 ) ssl? ( gnutls? ( >=net-libs/gnutls-2.12.23:0= ) openssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) ) systemd? ( >=sys-apps/systemd-234 ) uuid? ( sys-apps/util-linux:0= ) xxhash? ( dev-libs/xxhash:= ) zeromq? ( >=net-libs/czmq-4:=[drafts] )
+REQUIRED_USE=kubernetes? ( normalize ) ssl? ( || ( gnutls openssl ) )
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://www.rsyslog.com/files/download/rsyslog/rsyslog-8.2102.0.tar.gz doc? ( https://www.rsyslog.com/files/download/rsyslog/rsyslog-doc-8.2102.0.tar.gz )
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=07180f9054f9cf7de6c305e225f632d6
diff --git a/metadata/md5-cache/app-benchmarks/glmark2-285 b/metadata/md5-cache/app-benchmarks/glmark2-285
index 5551be5..420433d 100644
--- a/metadata/md5-cache/app-benchmarks/glmark2-285
+++ b/metadata/md5-cache/app-benchmarks/glmark2-285
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( opengl opengles )
 SLOT=0
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/glmark2-bzr-285.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	waf-utils	0af0bf9207f47292d40e888b9687763c
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	waf-utils	0af0bf9207f47292d40e888b9687763c
 _md5_=4784991375a530b81f627209b2f2b599
diff --git a/metadata/md5-cache/app-benchmarks/glmark2-285-r16 b/metadata/md5-cache/app-benchmarks/glmark2-285-r16
index 5551be5..420433d 100644
--- a/metadata/md5-cache/app-benchmarks/glmark2-285-r16
+++ b/metadata/md5-cache/app-benchmarks/glmark2-285-r16
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( opengl opengles )
 SLOT=0
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/glmark2-bzr-285.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	waf-utils	0af0bf9207f47292d40e888b9687763c
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	waf-utils	0af0bf9207f47292d40e888b9687763c
 _md5_=4784991375a530b81f627209b2f2b599
diff --git a/metadata/md5-cache/app-benchmarks/microbenchmarks-0.0.1-r7 b/metadata/md5-cache/app-benchmarks/microbenchmarks-0.0.1-r7
index be47b66..1c7519a 100644
--- a/metadata/md5-cache/app-benchmarks/microbenchmarks-0.0.1-r7
+++ b/metadata/md5-cache/app-benchmarks/microbenchmarks-0.0.1-r7
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/0.0.1-r7
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=99cf2f4fbeab674a8075b65ea7c203d0
diff --git a/metadata/md5-cache/app-benchmarks/microbenchmarks-9999 b/metadata/md5-cache/app-benchmarks/microbenchmarks-9999
index b83568c..cc9e745 100644
--- a/metadata/md5-cache/app-benchmarks/microbenchmarks-9999
+++ b/metadata/md5-cache/app-benchmarks/microbenchmarks-9999
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=83860851ebc4c3b3e5a54834192be6dd
diff --git a/metadata/md5-cache/app-benchmarks/xfstests-0.0.1-r17 b/metadata/md5-cache/app-benchmarks/xfstests-0.0.1-r17
index 5e4a49a..ac82574 100644
--- a/metadata/md5-cache/app-benchmarks/xfstests-0.0.1-r17
+++ b/metadata/md5-cache/app-benchmarks/xfstests-0.0.1-r17
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=sys-fs/e2fsprogs dev-lang/perl sys-apps/attr sys-apps/diffutils sys-apps/gawk sys-apps/util-linux sys-devel/bc sys-fs/xfsprogs
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6ac1f4a84a9b0b78698598bd2826c213
diff --git a/metadata/md5-cache/app-benchmarks/xfstests-9999 b/metadata/md5-cache/app-benchmarks/xfstests-9999
index e218a18..ef02acea 100644
--- a/metadata/md5-cache/app-benchmarks/xfstests-9999
+++ b/metadata/md5-cache/app-benchmarks/xfstests-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=sys-fs/e2fsprogs dev-lang/perl sys-apps/attr sys-apps/diffutils sys-apps/gawk sys-apps/util-linux sys-devel/bc sys-fs/xfsprogs
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=54337db6e7378461791ce26b2184c132
diff --git a/metadata/md5-cache/app-crypt/nss-3.44-r2 b/metadata/md5-cache/app-crypt/nss-3.44-r2
index 16fd297..9280bb9 100644
--- a/metadata/md5-cache/app-crypt/nss-3.44-r2
+++ b/metadata/md5-cache/app-crypt/nss-3.44-r2
@@ -11,4 +11,4 @@
 SLOT=0
 SRC_URI=https://archive.mozilla.org/pub/security/nss/releases/NSS_3_44_RTM/src/nss-3.44.tar.gz cacert? ( https://dev.gentoo.org/~axs/distfiles/nss-cacert-class1-class3.patch ) nss-pem? ( https://dev.gentoo.org/~polynomial-c/nss-pem-20160329.tar.xz )
 _eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0e5d249336f62300fd9afcd1d4006ff3
+_md5_=329b75e4131ed86acf5c1a28a498515f
diff --git a/metadata/md5-cache/app-crypt/nss-3.44-r3 b/metadata/md5-cache/app-crypt/nss-3.44-r3
deleted file mode 100644
index 16fd297..0000000
--- a/metadata/md5-cache/app-crypt/nss-3.44-r3
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare test unpack
-DEPEND=>=virtual/pkgconfig-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/nspr-4.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-db/sqlite-3.8.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/nss-3.44[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=Mozilla's Network Security Services library that implements PKI support
-EAPI=6
-HOMEPAGE=http://www.mozilla.org/projects/security/pki/nss/
-IUSE=cacert +nss-pem utils abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=|| ( MPL-2.0 GPL-2 LGPL-2.1 )
-RDEPEND=>=dev-libs/nspr-4.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-db/sqlite-3.8.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/nss-3.44[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-RESTRICT=test
-SLOT=0
-SRC_URI=https://archive.mozilla.org/pub/security/nss/releases/NSS_3_44_RTM/src/nss-3.44.tar.gz cacert? ( https://dev.gentoo.org/~axs/distfiles/nss-cacert-class1-class3.patch ) nss-pem? ( https://dev.gentoo.org/~polynomial-c/nss-pem-20160329.tar.xz )
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0e5d249336f62300fd9afcd1d4006ff3
diff --git a/metadata/md5-cache/app-crypt/nss-3.44-r4 b/metadata/md5-cache/app-crypt/nss-3.44-r4
new file mode 100644
index 0000000..9280bb9
--- /dev/null
+++ b/metadata/md5-cache/app-crypt/nss-3.44-r4
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare test unpack
+DEPEND=>=virtual/pkgconfig-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/nspr-4.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-db/sqlite-3.8.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/nss-3.44[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=Mozilla's Network Security Services library that implements PKI support
+EAPI=6
+HOMEPAGE=http://www.mozilla.org/projects/security/pki/nss/
+IUSE=cacert +nss-pem utils abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( MPL-2.0 GPL-2 LGPL-2.1 )
+RDEPEND=>=dev-libs/nspr-4.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-db/sqlite-3.8.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/nss-3.44[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+RESTRICT=test
+SLOT=0
+SRC_URI=https://archive.mozilla.org/pub/security/nss/releases/NSS_3_44_RTM/src/nss-3.44.tar.gz cacert? ( https://dev.gentoo.org/~axs/distfiles/nss-cacert-class1-class3.patch ) nss-pem? ( https://dev.gentoo.org/~polynomial-c/nss-pem-20160329.tar.xz )
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=329b75e4131ed86acf5c1a28a498515f
diff --git a/metadata/md5-cache/app-crypt/tpm-tools-1.3.9.1-r2 b/metadata/md5-cache/app-crypt/tpm-tools-1.3.9.1-r2
index ac2207e..2b97d41 100644
--- a/metadata/md5-cache/app-crypt/tpm-tools-1.3.9.1-r2
+++ b/metadata/md5-cache/app-crypt/tpm-tools-1.3.9.1-r2
@@ -9,5 +9,5 @@
 RDEPEND=!tpm2? ( >=app-crypt/trousers-0.3.0 ) !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) pkcs11? ( dev-libs/opencryptoki )
 SLOT=0
 SRC_URI=mirror://sourceforge/trousers/tpm-tools/tpm-tools-1.3.9.1.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=35f537c5c42a56ab0ade1d4eceff0b9e
diff --git a/metadata/md5-cache/app-crypt/trousers-0.3.3-r105 b/metadata/md5-cache/app-crypt/trousers-0.3.3-r105
new file mode 100644
index 0000000..367362e
--- /dev/null
+++ b/metadata/md5-cache/app-crypt/trousers-0.3.3-r105
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install postinst prepare setup unpack
+DEPEND=chromeos-base/libhwsec-foundation >=chromeos-base/metrics-0.0.1-r3152 >=dev-libs/openssl-0.9.7:0= dev-util/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] virtual/pkgconfig sys-apps/baselayout
+DESCRIPTION=An open-source TCG Software Stack (TSS) v1.1 implementation
+EAPI=5
+HOMEPAGE=http://trousers.sf.net
+IUSE=asan doc mocktpm systemd tss_trace cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_60ed0f862fd08a2c848734d206da47d7666a8524 cros-debug
+KEYWORDS=*
+LICENSE=CPL-1.0
+PROPERTIES=live
+RDEPEND=chromeos-base/libhwsec-foundation >=chromeos-base/metrics-0.0.1-r3152 >=dev-libs/openssl-0.9.7:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] virtual/tmpfiles sys-apps/baselayout
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=11339e8ca54efef41670666f8ee52b15
diff --git a/metadata/md5-cache/app-crypt/trousers-0.3.3-r99 b/metadata/md5-cache/app-crypt/trousers-0.3.3-r99
deleted file mode 100644
index 15377df..0000000
--- a/metadata/md5-cache/app-crypt/trousers-0.3.3-r99
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst prepare setup unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152 >=dev-libs/openssl-0.9.7:0= dev-util/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=An open-source TCG Software Stack (TSS) v1.1 implementation
-EAPI=5
-HOMEPAGE=http://trousers.sf.net
-IUSE=asan doc mocktpm systemd tss_trace cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_aba7980808012c4eedfe9cffe497881ab62ea0ef cros-debug
-KEYWORDS=*
-LICENSE=CPL-1.0
-PROPERTIES=live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152 >=dev-libs/openssl-0.9.7:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
-SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=614d365b1d42c2205b3118ab8ed085c1
diff --git a/metadata/md5-cache/app-crypt/trousers-9999 b/metadata/md5-cache/app-crypt/trousers-9999
index d200a92..5e941fb 100644
--- a/metadata/md5-cache/app-crypt/trousers-9999
+++ b/metadata/md5-cache/app-crypt/trousers-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install postinst prepare setup unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152 >=dev-libs/openssl-0.9.7:0= dev-util/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] virtual/pkgconfig sys-apps/baselayout
+DEPEND=chromeos-base/libhwsec-foundation >=chromeos-base/metrics-0.0.1-r3152 >=dev-libs/openssl-0.9.7:0= dev-util/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] virtual/pkgconfig sys-apps/baselayout
 DESCRIPTION=An open-source TCG Software Stack (TSS) v1.1 implementation
 EAPI=5
 HOMEPAGE=http://trousers.sf.net
@@ -7,7 +7,7 @@
 KEYWORDS=~*
 LICENSE=CPL-1.0
 PROPERTIES=live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152 >=dev-libs/openssl-0.9.7:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
+RDEPEND=chromeos-base/libhwsec-foundation >=chromeos-base/metrics-0.0.1-r3152 >=dev-libs/openssl-0.9.7:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] virtual/tmpfiles sys-apps/baselayout
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9b242deb1a2a28a851a3e9b28e83db33
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=73ff1699bde8b0717cc8265b6d83b462
diff --git a/metadata/md5-cache/app-crypt/trousers-tests-0.0.1-r86 b/metadata/md5-cache/app-crypt/trousers-tests-0.0.1-r86
deleted file mode 100644
index 646978d..0000000
--- a/metadata/md5-cache/app-crypt/trousers-tests-0.0.1-r86
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=app-crypt/trousers !<chromeos-base/autotest-tests-0.0.1-r1521
-DESCRIPTION=Trousers TPM tests
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/trousers/
-IUSE=+autotest +tests_hardware_TPM cros_host cros_workon_tree_aba7980808012c4eedfe9cffe497881ab62ea0ef +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=app-crypt/trousers !<chromeos-base/autotest-tests-0.0.1-r1521 autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9e81e8620e290158ce3a17fec45bc7d5
diff --git a/metadata/md5-cache/app-crypt/trousers-tests-0.0.1-r90 b/metadata/md5-cache/app-crypt/trousers-tests-0.0.1-r90
new file mode 100644
index 0000000..6f3494d
--- /dev/null
+++ b/metadata/md5-cache/app-crypt/trousers-tests-0.0.1-r90
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=app-crypt/trousers !<chromeos-base/autotest-tests-0.0.1-r1521
+DESCRIPTION=Trousers TPM tests
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/trousers/
+IUSE=+autotest +tests_hardware_TPM cros_host cros_workon_tree_60ed0f862fd08a2c848734d206da47d7666a8524 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=app-crypt/trousers !<chromeos-base/autotest-tests-0.0.1-r1521 autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c062ca6c9b61f61c1dfafa4552ad1688
diff --git a/metadata/md5-cache/app-crypt/trousers-tests-9999 b/metadata/md5-cache/app-crypt/trousers-tests-9999
index ebc8270..d814930 100644
--- a/metadata/md5-cache/app-crypt/trousers-tests-9999
+++ b/metadata/md5-cache/app-crypt/trousers-tests-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=app-crypt/trousers !<chromeos-base/autotest-tests-0.0.1-r1521 autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d7e48f6e3ddfdbe87ccad58fda73a78b
diff --git a/metadata/md5-cache/app-emulation/lxc-4.0.9 b/metadata/md5-cache/app-emulation/lxc-4.0.9
new file mode 100644
index 0000000..ef654d2
--- /dev/null
+++ b/metadata/md5-cache/app-emulation/lxc-4.0.9
@@ -0,0 +1,14 @@
+BDEPEND=doc? ( app-doc/doxygen ) man? ( app-text/docbook-sgml-utils ) verify-sig? ( app-crypt/openpgp-keys-linuxcontainers ) >=app-portage/elt-patches-20170815 virtual/pkgconfig verify-sig? ( app-crypt/gnupg >=app-portage/gemato-16 )
+DEFINED_PHASES=configure install postinst prepare setup unpack
+DEPEND=app-misc/pax-utils sys-apps/util-linux sys-libs/libcap sys-libs/libseccomp virtual/awk caps? ( sys-libs/libcap ) pam? ( sys-libs/pam ) selinux? ( sys-libs/libselinux ) ssl? ( dev-libs/openssl:0= ) >=sys-kernel/linux-headers-4 apparmor? ( sys-apps/apparmor ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=A userspace interface for the Linux kernel containment features
+EAPI=7
+HOMEPAGE=https://linuxcontainers.org/ https://github.com/lxc/lxc
+IUSE=apparmor +caps doc man pam selinux +ssl +tools verify-sig kernel_linux verify-sig
+KEYWORDS=*
+LICENSE=LGPL-3
+RDEPEND=app-misc/pax-utils sys-apps/util-linux sys-libs/libcap sys-libs/libseccomp virtual/awk caps? ( sys-libs/libcap ) pam? ( sys-libs/pam ) selinux? ( sys-libs/libselinux ) ssl? ( dev-libs/openssl:0= )
+SLOT=4
+SRC_URI=https://linuxcontainers.org/downloads/lxc/lxc-4.0.9.tar.gz verify-sig? ( https://linuxcontainers.org/downloads/lxc/lxc-4.0.9.tar.gz.asc )
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	multilib	2477ebe553d3e4d2c606191fe6c33602	optfeature	f4941a15f8b66955c45f7b0e7c4ae890	pam	3f746974e1cc47cabe3bd488c08cdc8e	readme.gentoo-r1	22ae82e140bdd95d17a34fd5fd733190	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	verify-sig	40b4f4f782cf67118f594ce604cc4c0a
+_md5_=3e2347085f9c714587130e562c87a726
diff --git a/metadata/md5-cache/app-emulation/lxd-3.17 b/metadata/md5-cache/app-emulation/lxd-3.17
index 46efa65..7d7930f 100644
--- a/metadata/md5-cache/app-emulation/lxd-3.17
+++ b/metadata/md5-cache/app-emulation/lxd-3.17
@@ -6,9 +6,9 @@
 IUSE=+daemon +ipv6 +dnsmasq nls test tools kernel_linux
 KEYWORDS=-* amd64 arm arm64
 LICENSE=Apache-2.0 BSD BSD-2 LGPL-2.1 LGPL-3 MIT MPL-2.0
-RDEPEND=daemon? ( app-arch/xz-utils >=app-emulation/lxc-2.0.7[seccomp] dev-libs/libuv dev-libs/lzo dev-util/xdelta:3 dnsmasq? ( net-dns/dnsmasq[dhcp,ipv6?] ) net-firewall/ebtables net-firewall/iptables[ipv6?] net-libs/libnfnetlink net-libs/libnsl:0= net-misc/rsync[xattr] sys-apps/iproute2[ipv6?] sys-fs/fuse sys-fs/lxcfs sys-fs/squashfs-tools virtual/acl ) sys-apps/baselayout
+RDEPEND=daemon? ( app-arch/xz-utils >=app-emulation/lxc-2.0.7:0[seccomp] dev-libs/libuv dev-libs/lzo dev-util/xdelta:3 dnsmasq? ( net-dns/dnsmasq[dhcp,ipv6?] ) net-firewall/ebtables net-firewall/iptables[ipv6?] net-libs/libnfnetlink net-libs/libnsl:0= net-misc/rsync[xattr] sys-apps/iproute2[ipv6?] sys-fs/fuse sys-fs/lxcfs:0 sys-fs/squashfs-tools virtual/acl ) sys-apps/baselayout
 RESTRICT=test
 SLOT=0
 SRC_URI=https://linuxcontainers.org/downloads/lxd/lxd-3.17.tar.gz
 _eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=76448dcfd14509a0fc2972a5272750ba
+_md5_=6b01a4d5b347863fbfaefbd24c1d4287
diff --git a/metadata/md5-cache/app-emulation/lxd-3.17-r3 b/metadata/md5-cache/app-emulation/lxd-3.17-r3
deleted file mode 100644
index 46efa65..0000000
--- a/metadata/md5-cache/app-emulation/lxd-3.17-r3
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare setup test unpack
-DEPEND=dev-db/sqlite dev-go/cmp dev-go/crypto dev-go/errors dev-go/genproto dev-go/glog dev-go/go-sys dev-go/httprouter dev-go/net dev-go/protobuf dev-go/text dev-go/websocket dev-lang/tcl >=dev-lang/go-1.9.4 dev-libs/libuv dev-libs/protobuf:= nls? ( sys-devel/gettext ) test? ( app-misc/jq net-misc/curl sys-devel/gettext ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 dev-lang/go virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=Fast, dense and secure container management
-EAPI=6
-HOMEPAGE=https://linuxcontainers.org/lxd/introduction/
-IUSE=+daemon +ipv6 +dnsmasq nls test tools kernel_linux
-KEYWORDS=-* amd64 arm arm64
-LICENSE=Apache-2.0 BSD BSD-2 LGPL-2.1 LGPL-3 MIT MPL-2.0
-RDEPEND=daemon? ( app-arch/xz-utils >=app-emulation/lxc-2.0.7[seccomp] dev-libs/libuv dev-libs/lzo dev-util/xdelta:3 dnsmasq? ( net-dns/dnsmasq[dhcp,ipv6?] ) net-firewall/ebtables net-firewall/iptables[ipv6?] net-libs/libnfnetlink net-libs/libnsl:0= net-misc/rsync[xattr] sys-apps/iproute2[ipv6?] sys-fs/fuse sys-fs/lxcfs sys-fs/squashfs-tools virtual/acl ) sys-apps/baselayout
-RESTRICT=test
-SLOT=0
-SRC_URI=https://linuxcontainers.org/downloads/lxd/lxd-3.17.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=76448dcfd14509a0fc2972a5272750ba
diff --git a/metadata/md5-cache/app-emulation/lxd-3.17-r4 b/metadata/md5-cache/app-emulation/lxd-3.17-r4
new file mode 100644
index 0000000..7d7930f
--- /dev/null
+++ b/metadata/md5-cache/app-emulation/lxd-3.17-r4
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst prepare setup test unpack
+DEPEND=dev-db/sqlite dev-go/cmp dev-go/crypto dev-go/errors dev-go/genproto dev-go/glog dev-go/go-sys dev-go/httprouter dev-go/net dev-go/protobuf dev-go/text dev-go/websocket dev-lang/tcl >=dev-lang/go-1.9.4 dev-libs/libuv dev-libs/protobuf:= nls? ( sys-devel/gettext ) test? ( app-misc/jq net-misc/curl sys-devel/gettext ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 dev-lang/go virtual/pkgconfig sys-apps/baselayout
+DESCRIPTION=Fast, dense and secure container management
+EAPI=6
+HOMEPAGE=https://linuxcontainers.org/lxd/introduction/
+IUSE=+daemon +ipv6 +dnsmasq nls test tools kernel_linux
+KEYWORDS=-* amd64 arm arm64
+LICENSE=Apache-2.0 BSD BSD-2 LGPL-2.1 LGPL-3 MIT MPL-2.0
+RDEPEND=daemon? ( app-arch/xz-utils >=app-emulation/lxc-2.0.7:0[seccomp] dev-libs/libuv dev-libs/lzo dev-util/xdelta:3 dnsmasq? ( net-dns/dnsmasq[dhcp,ipv6?] ) net-firewall/ebtables net-firewall/iptables[ipv6?] net-libs/libnfnetlink net-libs/libnsl:0= net-misc/rsync[xattr] sys-apps/iproute2[ipv6?] sys-fs/fuse sys-fs/lxcfs:0 sys-fs/squashfs-tools virtual/acl ) sys-apps/baselayout
+RESTRICT=test
+SLOT=0
+SRC_URI=https://linuxcontainers.org/downloads/lxd/lxd-3.17.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=6b01a4d5b347863fbfaefbd24c1d4287
diff --git a/metadata/md5-cache/app-emulation/lxd-4.0.6 b/metadata/md5-cache/app-emulation/lxd-4.0.6
new file mode 100644
index 0000000..7f42b27
--- /dev/null
+++ b/metadata/md5-cache/app-emulation/lxd-4.0.6
@@ -0,0 +1,14 @@
+BDEPEND=dev-lang/go nls? ( sys-devel/gettext ) verify-sig? ( app-crypt/openpgp-keys-linuxcontainers ) >=app-portage/elt-patches-20170815 virtual/pkgconfig verify-sig? ( app-crypt/gnupg >=app-portage/gemato-16 )
+DEFINED_PHASES=compile configure install postinst setup test unpack
+DEPEND=app-arch/xz-utils >=app-emulation/lxc-3.0.0:4[apparmor?,seccomp(+)] dev-db/sqlite dev-libs/libuv dev-libs/lzo net-dns/dnsmasq[dhcp,ipv6?] virtual/libudev !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 dev-lang/go sys-apps/baselayout
+DESCRIPTION=Fast, dense and secure container management
+EAPI=7
+HOMEPAGE=https://linuxcontainers.org/lxd/introduction/ https://github.com/lxc/lxd
+IUSE=apparmor ipv6 nls verify-sig kernel_linux verify-sig
+KEYWORDS=*
+LICENSE=Apache-2.0 BSD BSD-2 LGPL-3 MIT MPL-2.0
+RDEPEND=app-arch/xz-utils >=app-emulation/lxc-3.0.0:4[apparmor?,seccomp(+)] dev-db/sqlite dev-libs/libuv dev-libs/lzo net-dns/dnsmasq[dhcp,ipv6?] virtual/libudev net-firewall/ebtables net-firewall/iptables[ipv6?] sys-apps/iproute2[ipv6?] sys-fs/fuse:0= sys-fs/lxcfs:4 sys-fs/squashfs-tools[lzma] virtual/acl sys-apps/baselayout
+SLOT=4
+SRC_URI=https://linuxcontainers.org/downloads/lxd/lxd-4.0.6.tar.gz verify-sig? ( https://linuxcontainers.org/downloads/lxd/lxd-4.0.6.tar.gz.asc )
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	cros-go	157c7bac0e032e424ec1c3316c127db8	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	multilib	2477ebe553d3e4d2c606191fe6c33602	optfeature	f4941a15f8b66955c45f7b0e7c4ae890	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	verify-sig	40b4f4f782cf67118f594ce604cc4c0a
+_md5_=0b9b1ad5234ab1b1d1e1cb0d17040ddb
diff --git a/metadata/md5-cache/app-emulation/qemu-9999 b/metadata/md5-cache/app-emulation/qemu-9999
index b65c827..200394d 100644
--- a/metadata/md5-cache/app-emulation/qemu-9999
+++ b/metadata/md5-cache/app-emulation/qemu-9999
@@ -13,5 +13,5 @@
 RESTRICT=!test? ( test )
 SLOT=0
 SRC_URI=https://gitlab.freedesktop.org/slirp/libslirp/repository/archive.tar.gz?ref=2faae0f778f818fadc873308f983289df697eb93 -> qemu-20200729-slirp.tar.gz https://github.com/cota/berkeley-testfloat-3/archive/5a59dcec19327396a011a17fd924aed4fec416b3.tar.gz -> qemu-20200729-berkeley-testfloat-3.tar.gz https://github.com/qemu/keycodemapdb/archive/6b3d716e2b6472eb7189d3220552280ef3d832ce.tar.gz -> qemu-20200718-keycodemapdb.tar.gz
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	fcaps	eeefea88d5fef2853d4c1e3770340302	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	l10n	97f2753e3f1f3753d53d856c7c0bbb0b	linux-info	327865b9921771330775d971263dc234	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	pax-utils	3551398d6ede2b572568832730cc2a45	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	readme.gentoo-r1	22ae82e140bdd95d17a34fd5fd733190	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	fcaps	eeefea88d5fef2853d4c1e3770340302	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	l10n	97f2753e3f1f3753d53d856c7c0bbb0b	linux-info	327865b9921771330775d971263dc234	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	pax-utils	3551398d6ede2b572568832730cc2a45	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	readme.gentoo-r1	22ae82e140bdd95d17a34fd5fd733190	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=a410705dce9c6be3a4b9c8858e470dbb
diff --git a/metadata/md5-cache/app-i18n/libhangul-0.0.10 b/metadata/md5-cache/app-i18n/libhangul-0.0.10
deleted file mode 100644
index 94cc286..0000000
--- a/metadata/md5-cache/app-i18n/libhangul-0.0.10
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=libhangul is a generalized and portable library for processing hangul.
-EAPI=0
-HOMEPAGE=http://kldp.net/projects/hangul/
-KEYWORDS=*
-LICENSE=LGPL-2.1
-SLOT=0
-SRC_URI=mirror://gentoo/libhangul-0.0.10.tar.gz
-_md5_=0f1d8c7c46b9869e31c495829a7d6862
diff --git a/metadata/md5-cache/app-text/ghostscript-gpl-9.53.3 b/metadata/md5-cache/app-text/ghostscript-gpl-9.53.3
deleted file mode 100644
index 15ec7e0..0000000
--- a/metadata/md5-cache/app-text/ghostscript-gpl-9.53.3
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare
-DEPEND=app-text/libpaper media-libs/fontconfig >=media-libs/freetype-2.4.9:2= >=media-libs/lcms-2.6:2 >=media-libs/libpng-1.6.2:0= >=sys-libs/zlib-1.2.7 virtual/jpeg:0 cups? ( >=net-print/cups-1.3.8 ) dbus? ( sys-apps/dbus ) gtk? ( || ( x11-libs/gtk+:3 x11-libs/gtk+:2 ) ) idn? ( net-dns/libidn ) tiff? ( >=media-libs/tiff-4.0.1:0= ) X? ( x11-libs/libXt x11-libs/libXext ) !!media-libs/jbig2dec virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Interpreter for the PostScript language and PDF
-EAPI=6
-HOMEPAGE=https://ghostscript.com/
-IUSE=asan cups dbus fuzzer gtk idn internal linguas_de crosfonts static-libs tiff unicode X linguas_ja linguas_ko linguas_zh_CN linguas_zh_TW fuzzer asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=internal? ( LICENSE.artifex_commercial ) !internal? ( AGPL-3 CPL-1.0 )
-RDEPEND=app-text/libpaper media-libs/fontconfig >=media-libs/freetype-2.4.9:2= >=media-libs/lcms-2.6:2 >=media-libs/libpng-1.6.2:0= >=sys-libs/zlib-1.2.7 virtual/jpeg:0 cups? ( >=net-print/cups-1.3.8 ) dbus? ( sys-apps/dbus ) gtk? ( || ( x11-libs/gtk+:3 x11-libs/gtk+:2 ) ) idn? ( net-dns/libidn ) tiff? ( >=media-libs/tiff-4.0.1:0= ) X? ( x11-libs/libXt x11-libs/libXext ) !!media-libs/jbig2dec !crosfonts? ( >=media-fonts/urw-fonts-2.4.9 ) linguas_ja? ( media-fonts/kochi-substitute ) linguas_ko? ( media-fonts/baekmuk-fonts ) linguas_zh_CN? ( media-fonts/arphicfonts ) linguas_zh_TW? ( media-fonts/arphicfonts )
-SLOT=0
-SRC_URI=https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9533/ghostscript-9.53.3.tar.xz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
-_md5_=38086338bf6c47c766e0afcd753f2522
diff --git a/metadata/md5-cache/app-text/ghostscript-gpl-9.53.3-r1 b/metadata/md5-cache/app-text/ghostscript-gpl-9.53.3-r1
deleted file mode 100644
index 15ec7e0..0000000
--- a/metadata/md5-cache/app-text/ghostscript-gpl-9.53.3-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare
-DEPEND=app-text/libpaper media-libs/fontconfig >=media-libs/freetype-2.4.9:2= >=media-libs/lcms-2.6:2 >=media-libs/libpng-1.6.2:0= >=sys-libs/zlib-1.2.7 virtual/jpeg:0 cups? ( >=net-print/cups-1.3.8 ) dbus? ( sys-apps/dbus ) gtk? ( || ( x11-libs/gtk+:3 x11-libs/gtk+:2 ) ) idn? ( net-dns/libidn ) tiff? ( >=media-libs/tiff-4.0.1:0= ) X? ( x11-libs/libXt x11-libs/libXext ) !!media-libs/jbig2dec virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Interpreter for the PostScript language and PDF
-EAPI=6
-HOMEPAGE=https://ghostscript.com/
-IUSE=asan cups dbus fuzzer gtk idn internal linguas_de crosfonts static-libs tiff unicode X linguas_ja linguas_ko linguas_zh_CN linguas_zh_TW fuzzer asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=internal? ( LICENSE.artifex_commercial ) !internal? ( AGPL-3 CPL-1.0 )
-RDEPEND=app-text/libpaper media-libs/fontconfig >=media-libs/freetype-2.4.9:2= >=media-libs/lcms-2.6:2 >=media-libs/libpng-1.6.2:0= >=sys-libs/zlib-1.2.7 virtual/jpeg:0 cups? ( >=net-print/cups-1.3.8 ) dbus? ( sys-apps/dbus ) gtk? ( || ( x11-libs/gtk+:3 x11-libs/gtk+:2 ) ) idn? ( net-dns/libidn ) tiff? ( >=media-libs/tiff-4.0.1:0= ) X? ( x11-libs/libXt x11-libs/libXext ) !!media-libs/jbig2dec !crosfonts? ( >=media-fonts/urw-fonts-2.4.9 ) linguas_ja? ( media-fonts/kochi-substitute ) linguas_ko? ( media-fonts/baekmuk-fonts ) linguas_zh_CN? ( media-fonts/arphicfonts ) linguas_zh_TW? ( media-fonts/arphicfonts )
-SLOT=0
-SRC_URI=https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9533/ghostscript-9.53.3.tar.xz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
-_md5_=38086338bf6c47c766e0afcd753f2522
diff --git a/metadata/md5-cache/app-text/ghostscript-gpl-9.54.0 b/metadata/md5-cache/app-text/ghostscript-gpl-9.54.0
new file mode 100644
index 0000000..516d3f5
--- /dev/null
+++ b/metadata/md5-cache/app-text/ghostscript-gpl-9.54.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare
+DEPEND=app-text/libpaper media-libs/fontconfig >=media-libs/freetype-2.4.9:2= >=media-libs/lcms-2.6:2 >=media-libs/libpng-1.6.2:0= >=sys-libs/zlib-1.2.7 virtual/jpeg:0 cups? ( >=net-print/cups-1.3.8 ) dbus? ( sys-apps/dbus ) gtk? ( || ( x11-libs/gtk+:3 x11-libs/gtk+:2 ) ) idn? ( net-dns/libidn ) tiff? ( >=media-libs/tiff-4.0.1:0= ) X? ( x11-libs/libXt x11-libs/libXext ) !!media-libs/jbig2dec virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Interpreter for the PostScript language and PDF
+EAPI=6
+HOMEPAGE=https://ghostscript.com/
+IUSE=asan cups dbus fuzzer gtk idn internal linguas_de crosfonts static-libs tiff unicode X linguas_ja linguas_ko linguas_zh_CN linguas_zh_TW fuzzer asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=internal? ( LICENSE.artifex_commercial ) !internal? ( AGPL-3 CPL-1.0 )
+RDEPEND=app-text/libpaper media-libs/fontconfig >=media-libs/freetype-2.4.9:2= >=media-libs/lcms-2.6:2 >=media-libs/libpng-1.6.2:0= >=sys-libs/zlib-1.2.7 virtual/jpeg:0 cups? ( >=net-print/cups-1.3.8 ) dbus? ( sys-apps/dbus ) gtk? ( || ( x11-libs/gtk+:3 x11-libs/gtk+:2 ) ) idn? ( net-dns/libidn ) tiff? ( >=media-libs/tiff-4.0.1:0= ) X? ( x11-libs/libXt x11-libs/libXext ) !!media-libs/jbig2dec !crosfonts? ( >=media-fonts/urw-fonts-2.4.9 ) linguas_ja? ( media-fonts/kochi-substitute ) linguas_ko? ( media-fonts/baekmuk-fonts ) linguas_zh_CN? ( media-fonts/arphicfonts ) linguas_zh_TW? ( media-fonts/arphicfonts )
+SLOT=0
+SRC_URI=https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9540/ghostscript-9.54.0.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
+_md5_=b09af1dd404d86b46d1bfd7658f0cd48
diff --git a/metadata/md5-cache/app-text/ghostscript-gpl-9.54.0-r3 b/metadata/md5-cache/app-text/ghostscript-gpl-9.54.0-r3
new file mode 100644
index 0000000..516d3f5
--- /dev/null
+++ b/metadata/md5-cache/app-text/ghostscript-gpl-9.54.0-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare
+DEPEND=app-text/libpaper media-libs/fontconfig >=media-libs/freetype-2.4.9:2= >=media-libs/lcms-2.6:2 >=media-libs/libpng-1.6.2:0= >=sys-libs/zlib-1.2.7 virtual/jpeg:0 cups? ( >=net-print/cups-1.3.8 ) dbus? ( sys-apps/dbus ) gtk? ( || ( x11-libs/gtk+:3 x11-libs/gtk+:2 ) ) idn? ( net-dns/libidn ) tiff? ( >=media-libs/tiff-4.0.1:0= ) X? ( x11-libs/libXt x11-libs/libXext ) !!media-libs/jbig2dec virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Interpreter for the PostScript language and PDF
+EAPI=6
+HOMEPAGE=https://ghostscript.com/
+IUSE=asan cups dbus fuzzer gtk idn internal linguas_de crosfonts static-libs tiff unicode X linguas_ja linguas_ko linguas_zh_CN linguas_zh_TW fuzzer asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=internal? ( LICENSE.artifex_commercial ) !internal? ( AGPL-3 CPL-1.0 )
+RDEPEND=app-text/libpaper media-libs/fontconfig >=media-libs/freetype-2.4.9:2= >=media-libs/lcms-2.6:2 >=media-libs/libpng-1.6.2:0= >=sys-libs/zlib-1.2.7 virtual/jpeg:0 cups? ( >=net-print/cups-1.3.8 ) dbus? ( sys-apps/dbus ) gtk? ( || ( x11-libs/gtk+:3 x11-libs/gtk+:2 ) ) idn? ( net-dns/libidn ) tiff? ( >=media-libs/tiff-4.0.1:0= ) X? ( x11-libs/libXt x11-libs/libXext ) !!media-libs/jbig2dec !crosfonts? ( >=media-fonts/urw-fonts-2.4.9 ) linguas_ja? ( media-fonts/kochi-substitute ) linguas_ko? ( media-fonts/baekmuk-fonts ) linguas_zh_CN? ( media-fonts/arphicfonts ) linguas_zh_TW? ( media-fonts/arphicfonts )
+SLOT=0
+SRC_URI=https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9540/ghostscript-9.54.0.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
+_md5_=b09af1dd404d86b46d1bfd7658f0cd48
diff --git a/metadata/md5-cache/brillo-base/libsparse-0.0.1-r8 b/metadata/md5-cache/brillo-base/libsparse-0.0.1-r8
deleted file mode 100644
index 8169d4a..0000000
--- a/metadata/md5-cache/brillo-base/libsparse-0.0.1-r8
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=configure info prepare setup unpack
-DEPEND=sys-libs/zlib:=
-DESCRIPTION=Library and cli tools for Android sparse files
-EAPI=7
-HOMEPAGE=https://android.googlesource.com/platform/system/core
-IUSE=cros_host cros_workon_tree_42c814a9b71ac7619efa0d47b68cb55fef759095
-KEYWORDS=*
-LICENSE=Apache-2.0
-PROPERTIES=live
-RDEPEND=sys-libs/zlib:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=79e84f04eb9dc3835db4c8e4c876b639
diff --git a/metadata/md5-cache/brillo-base/libsparse-0.0.1-r9 b/metadata/md5-cache/brillo-base/libsparse-0.0.1-r9
new file mode 100644
index 0000000..46961be
--- /dev/null
+++ b/metadata/md5-cache/brillo-base/libsparse-0.0.1-r9
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=configure info prepare setup unpack
+DEPEND=sys-libs/zlib:=
+DESCRIPTION=Library and cli tools for Android sparse files
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/system/core
+IUSE=cros_host cros_workon_tree_42c814a9b71ac7619efa0d47b68cb55fef759095
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live
+RDEPEND=sys-libs/zlib:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d1510853ff492df4790fb3ac5a210a8f
diff --git a/metadata/md5-cache/brillo-base/libsparse-9999 b/metadata/md5-cache/brillo-base/libsparse-9999
index fe08b9ac..845023c 100644
--- a/metadata/md5-cache/brillo-base/libsparse-9999
+++ b/metadata/md5-cache/brillo-base/libsparse-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=sys-libs/zlib:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0e54028ae42feab70e77e41dec41e97d
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=83bf64f27c97d0013ba090b0a2c657c5
diff --git a/metadata/md5-cache/chromeos-base/android-installer-0.0.1-r6 b/metadata/md5-cache/chromeos-base/android-installer-0.0.1-r6
deleted file mode 100644
index 121ea0b..0000000
--- a/metadata/md5-cache/chromeos-base/android-installer-0.0.1-r6
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DESCRIPTION=Android Installer for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/android-installer/
-IUSE=cros_host cros_workon_tree_096e46695d63714714d945b5b9e8378beb18891c python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=fe5a219aa2f51252d9317dbbb7b2de28
diff --git a/metadata/md5-cache/chromeos-base/android-installer-9999 b/metadata/md5-cache/chromeos-base/android-installer-9999
deleted file mode 100644
index 48da6d7..0000000
--- a/metadata/md5-cache/chromeos-base/android-installer-9999
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DESCRIPTION=Android Installer for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/android-installer/
-IUSE=cros_host cros_workon_tree_ python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=199dce7001c52d2485677669beb9c12f
diff --git a/metadata/md5-cache/chromeos-base/android-sdk-5303910 b/metadata/md5-cache/chromeos-base/android-sdk-5303910
deleted file mode 100644
index fb8ee6c..0000000
--- a/metadata/md5-cache/chromeos-base/android-sdk-5303910
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Android SDK
-EAPI=7
-HOMEPAGE=http://developer.android.com
-KEYWORDS=*
-LICENSE=Apache-2.0 BSD BSD-2 BSD-4 CPL-1.0 EPL-1.0 FTL GPL-2 IJG ISC icu LGPL-2 LGPL-2.1 libpng MIT MPL-1.1 openssl SGI-B-2.0 UoI-NCSA ZLIB W3C
-RDEPEND=<=virtual/jdk-9 >=virtual/jdk-9 >=dev-java/ant-core-1.6.5 sys-libs/zlib
-RESTRICT=strip
-SLOT=0
-SRC_URI=https://ci.android.com/builds/submitted/5303910/sdk/latest/android-sdk_5303910_linux-x86.zip https://ci.android.com/builds/submitted/4953408/sdk/latest/sdk-repo-linux-platforms-4953408.zip
-_md5_=457e015cc27e7ddac84306781851be92
diff --git a/metadata/md5-cache/chromeos-base/android-sdk-5303910-r4 b/metadata/md5-cache/chromeos-base/android-sdk-5303910-r4
deleted file mode 100644
index fb8ee6c..0000000
--- a/metadata/md5-cache/chromeos-base/android-sdk-5303910-r4
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Android SDK
-EAPI=7
-HOMEPAGE=http://developer.android.com
-KEYWORDS=*
-LICENSE=Apache-2.0 BSD BSD-2 BSD-4 CPL-1.0 EPL-1.0 FTL GPL-2 IJG ISC icu LGPL-2 LGPL-2.1 libpng MIT MPL-1.1 openssl SGI-B-2.0 UoI-NCSA ZLIB W3C
-RDEPEND=<=virtual/jdk-9 >=virtual/jdk-9 >=dev-java/ant-core-1.6.5 sys-libs/zlib
-RESTRICT=strip
-SLOT=0
-SRC_URI=https://ci.android.com/builds/submitted/5303910/sdk/latest/android-sdk_5303910_linux-x86.zip https://ci.android.com/builds/submitted/4953408/sdk/latest/sdk-repo-linux-platforms-4953408.zip
-_md5_=457e015cc27e7ddac84306781851be92
diff --git a/metadata/md5-cache/chromeos-base/android-sdk-6877874 b/metadata/md5-cache/chromeos-base/android-sdk-6877874
new file mode 100644
index 0000000..03e1c2b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/android-sdk-6877874
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install
+DESCRIPTION=Android SDK
+EAPI=7
+HOMEPAGE=http://developer.android.com
+KEYWORDS=*
+LICENSE=AOSP-SDK
+RDEPEND=<=virtual/jdk-9 >=virtual/jdk-9 >=dev-java/ant-core-1.6.5 sys-libs/zlib
+RESTRICT=strip
+SLOT=0
+SRC_URI=https://ci.android.com/builds/submitted/6877874/sdk/latest/android-sdk_6877874_linux-x86.zip https://ci.android.com/builds/submitted/4953408/sdk/latest/sdk-repo-linux-platforms-4953408.zip
+_md5_=3abe408cb528a9c774c1855eb5ebb46b
diff --git a/metadata/md5-cache/chromeos-base/android-sdk-6877874-r1 b/metadata/md5-cache/chromeos-base/android-sdk-6877874-r1
new file mode 100644
index 0000000..03e1c2b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/android-sdk-6877874-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install
+DESCRIPTION=Android SDK
+EAPI=7
+HOMEPAGE=http://developer.android.com
+KEYWORDS=*
+LICENSE=AOSP-SDK
+RDEPEND=<=virtual/jdk-9 >=virtual/jdk-9 >=dev-java/ant-core-1.6.5 sys-libs/zlib
+RESTRICT=strip
+SLOT=0
+SRC_URI=https://ci.android.com/builds/submitted/6877874/sdk/latest/android-sdk_6877874_linux-x86.zip https://ci.android.com/builds/submitted/4953408/sdk/latest/sdk-repo-linux-platforms-4953408.zip
+_md5_=3abe408cb528a9c774c1855eb5ebb46b
diff --git a/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-0.0.1-r158 b/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-0.0.1-r158
deleted file mode 100644
index c69c407..0000000
--- a/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-0.0.1-r158
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/nnapi:= dev-libs/openssl:= sci-libs/tensorflow:= dev-libs/libtextclassifier >=dev-cpp/eigen-3 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS port of the Android Neural Network API
-EAPI=7
-HOMEPAGE=https://developer.android.com/ndk/guides/neuralnetworks
-IUSE=cpu_flags_x86_avx2 vendor-nnhal minimal-driver nnapi_driver_tests cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_fa7b54dd4d1d381945bb11e0d349aedf3e178cde_7a08574830b90bb538e281ba8c2240d2826fefb9 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_fa7b54dd4d1d381945bb11e0d349aedf3e178cde_7a08574830b90bb538e281ba8c2240d2826fefb9 cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google Apache-2.0
-PROPERTIES=live live
-RDEPEND=chromeos-base/nnapi:= dev-libs/openssl:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r158
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ccbf1b5030e2ddede7721831292c158f
diff --git a/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-0.0.1-r199 b/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-0.0.1-r199
new file mode 100644
index 0000000..867bab9
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-0.0.1-r199
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/nnapi:= dev-libs/openssl:= sci-libs/tensorflow:= dev-libs/libtextclassifier >=dev-cpp/eigen-3 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS port of the Android Neural Network API
+EAPI=7
+HOMEPAGE=https://developer.android.com/ndk/guides/neuralnetworks
+IUSE=cpu_flags_x86_avx2 vendor-nnhal minimal-driver cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_4c0cc8d00d5d746519a55a17088ff6173845837c_7a08574830b90bb538e281ba8c2240d2826fefb9 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_4c0cc8d00d5d746519a55a17088ff6173845837c_7a08574830b90bb538e281ba8c2240d2826fefb9 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google Apache-2.0
+PROPERTIES=live live
+RDEPEND=chromeos-base/nnapi:= dev-libs/openssl:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r199
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=75ffd2c8d782e3e303bf0e296f398670
diff --git a/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-9999 b/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-9999
index 6f1d616..0b38967 100644
--- a/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-9999
+++ b/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-9999
@@ -1,14 +1,14 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/nnapi:= dev-libs/openssl:= sci-libs/tensorflow:= dev-libs/libtextclassifier >=dev-cpp/eigen-3 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/nnapi:= dev-libs/openssl:= sci-libs/tensorflow:= dev-libs/libtextclassifier >=dev-cpp/eigen-3 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS port of the Android Neural Network API
 EAPI=7
 HOMEPAGE=https://developer.android.com/ndk/guides/neuralnetworks
-IUSE=cpu_flags_x86_avx2 vendor-nnhal minimal-driver nnapi_driver_tests cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cpu_flags_x86_avx2 vendor-nnhal minimal-driver cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google Apache-2.0
 PROPERTIES=live live
 RDEPEND=chromeos-base/nnapi:= dev-libs/openssl:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0f665d5cfb651591ace0fc3999c29cc7
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ac42fe572a04080941fab7046fcd2278
diff --git a/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-vts-0.0.1-r27 b/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-vts-0.0.1-r27
new file mode 100644
index 0000000..e58d00a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-vts-0.0.1-r27
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/aosp-frameworks-ml-nn:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=HAL / Driver Vendor and Compatability Test Tools for NNAPI
+EAPI=7
+HOMEPAGE=https://developer.android.com/ndk/guides/neuralnetworks
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_4c0cc8d00d5d746519a55a17088ff6173845837c_7a08574830b90bb538e281ba8c2240d2826fefb9 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_4c0cc8d00d5d746519a55a17088ff6173845837c_7a08574830b90bb538e281ba8c2240d2826fefb9 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google Apache-2.0
+PROPERTIES=live live
+RDEPEND=chromeos-base/aosp-frameworks-ml-nn:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r27
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d1929730bdb08d2b2fa0253271f77bab
diff --git a/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-vts-9999 b/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-vts-9999
new file mode 100644
index 0000000..41b32ed
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/aosp-frameworks-ml-nn-vts-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/aosp-frameworks-ml-nn:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=HAL / Driver Vendor and Compatability Test Tools for NNAPI
+EAPI=7
+HOMEPAGE=https://developer.android.com/ndk/guides/neuralnetworks
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google Apache-2.0
+PROPERTIES=live live
+RDEPEND=chromeos-base/aosp-frameworks-ml-nn:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8317836f4efd0994e861740764f3c3a7
diff --git a/metadata/md5-cache/chromeos-base/arc-adbd-0.0.1-r340 b/metadata/md5-cache/chromeos-base/arc-adbd-0.0.1-r340
deleted file mode 100644
index 76b24e5..0000000
--- a/metadata/md5-cache/chromeos-base/arc-adbd-0.0.1-r340
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Container to run Android's adbd proxy.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/adbd
-IUSE=+seccomp fuzzer arcvm cros_host cros_workon_tree_a2c45ab60a41214142130b1d1051df94cac1e37a_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_a2c45ab60a41214142130b1d1051df94cac1e37a_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/minijail >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r340
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2386ba7f24aa9af194660818c42e0945
diff --git a/metadata/md5-cache/chromeos-base/arc-adbd-0.0.1-r368 b/metadata/md5-cache/chromeos-base/arc-adbd-0.0.1-r368
new file mode 100644
index 0000000..b8fbe45
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-adbd-0.0.1-r368
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Container to run Android's adbd proxy.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/adbd
+IUSE=+seccomp fuzzer arcvm cros_host cros_workon_tree_d5666e714c30f8f7921e63e91f60431992f31333_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_d5666e714c30f8f7921e63e91f60431992f31333_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/minijail >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r368
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e7af2d706768b6fb1e03e5cc51969028
diff --git a/metadata/md5-cache/chromeos-base/arc-adbd-9999 b/metadata/md5-cache/chromeos-base/arc-adbd-9999
index d83860d..08bae80 100644
--- a/metadata/md5-cache/chromeos-base/arc-adbd-9999
+++ b/metadata/md5-cache/chromeos-base/arc-adbd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Container to run Android's adbd proxy.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/adbd
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/minijail >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=68315da24bdee7c8df898448d7c91ae7
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b671d74994a0da2ba4a6da0255225fa2
diff --git a/metadata/md5-cache/chromeos-base/arc-apk-cache-0.0.1-r346 b/metadata/md5-cache/chromeos-base/arc-apk-cache-0.0.1-r346
deleted file mode 100644
index 8dc79f0..0000000
--- a/metadata/md5-cache/chromeos-base/arc-apk-cache-0.0.1-r346
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-db/sqlite:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Maintains APK cache in ARC.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/apk-cache
-IUSE=+seccomp cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e79a39f8f3a26e740eca5db95629cfb2e5d434aa_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e79a39f8f3a26e740eca5db95629cfb2e5d434aa_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/minijail dev-db/sqlite:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r346
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3ab05f2f3d62731ba7d0373df1f9340b
diff --git a/metadata/md5-cache/chromeos-base/arc-apk-cache-0.0.1-r374 b/metadata/md5-cache/chromeos-base/arc-apk-cache-0.0.1-r374
new file mode 100644
index 0000000..ff69ff6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-apk-cache-0.0.1-r374
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-db/sqlite:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Maintains APK cache in ARC.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/apk-cache
+IUSE=+seccomp cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4c6e571afb4a8fe4d876184e2d85fe856c411540_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4c6e571afb4a8fe4d876184e2d85fe856c411540_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/minijail dev-db/sqlite:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r374
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a7d4546aa93ac7daa419c893aba36ab4
diff --git a/metadata/md5-cache/chromeos-base/arc-apk-cache-9999 b/metadata/md5-cache/chromeos-base/arc-apk-cache-9999
index c1e0394..b73adce 100644
--- a/metadata/md5-cache/chromeos-base/arc-apk-cache-9999
+++ b/metadata/md5-cache/chromeos-base/arc-apk-cache-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-db/sqlite:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-db/sqlite:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Maintains APK cache in ARC.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/apk-cache
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/minijail dev-db/sqlite:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=016baeac60c03f8ba398f3554b6a9afd
diff --git a/metadata/md5-cache/chromeos-base/arc-appfuse-0.0.1-r273 b/metadata/md5-cache/chromeos-base/arc-appfuse-0.0.1-r273
deleted file mode 100644
index 7649d04..0000000
--- a/metadata/md5-cache/chromeos-base/arc-appfuse-0.0.1-r273
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=sys-apps/dbus:= sys-fs/fuse:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=D-Bus service to provide ARC Appfuse
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/appfuse
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_870cb50e86dd81c388ef1d394f6a1c290dfe726d_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_870cb50e86dd81c388ef1d394f6a1c290dfe726d_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=sys-apps/dbus:= sys-fs/fuse:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r273
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=6410adcb62e7267f7c039006b433237c
diff --git a/metadata/md5-cache/chromeos-base/arc-appfuse-0.0.1-r307 b/metadata/md5-cache/chromeos-base/arc-appfuse-0.0.1-r307
new file mode 100644
index 0000000..bb91008
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-appfuse-0.0.1-r307
@@ -0,0 +1,14 @@
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=sys-apps/dbus:= sys-fs/fuse:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=D-Bus service to provide ARC Appfuse
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/appfuse
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ac2c9f71de71bb13b6d64a1245a8ea072da49f28_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ac2c9f71de71bb13b6d64a1245a8ea072da49f28_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=sys-apps/dbus:= sys-fs/fuse:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r307
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=aaee75f9a0e049db1c3d44ede7937463
diff --git a/metadata/md5-cache/chromeos-base/arc-appfuse-9999 b/metadata/md5-cache/chromeos-base/arc-appfuse-9999
index ea5fbd7..ba6082b 100644
--- a/metadata/md5-cache/chromeos-base/arc-appfuse-9999
+++ b/metadata/md5-cache/chromeos-base/arc-appfuse-9999
@@ -1,6 +1,6 @@
 BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=sys-apps/dbus:= sys-fs/fuse:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=sys-apps/dbus:= sys-fs/fuse:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=D-Bus service to provide ARC Appfuse
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/appfuse
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=sys-apps/dbus:= sys-fs/fuse:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=47d518873fa153e1dec65ac7f7efdb93
diff --git a/metadata/md5-cache/chromeos-base/arc-base-0.0.1-r368 b/metadata/md5-cache/chromeos-base/arc-base-0.0.1-r368
deleted file mode 100644
index 9f6876a..0000000
--- a/metadata/md5-cache/chromeos-base/arc-base-0.0.1-r368
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install postinst preinst setup unpack
-DEPEND=!<chromeos-base/chromeos-cheets-scripts-0.0.3 sys-apps/baselayout
-DESCRIPTION=Container to run Android.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/bundle
-IUSE=arcpp arcvm cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_9fc9c94a2d45e1fa0d13e8eab0e41814a9cd8c42_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<chromeos-base/chromeos-cheets-scripts-0.0.3 sys-apps/baselayout
-REQUIRED_USE=|| ( arcpp arcvm )
-SLOT=0/0.0.1-r368
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=7df7f53322cfa63a07b474a9f71fac61
diff --git a/metadata/md5-cache/chromeos-base/arc-base-0.0.1-r395 b/metadata/md5-cache/chromeos-base/arc-base-0.0.1-r395
new file mode 100644
index 0000000..b6662ee
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-base-0.0.1-r395
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install postinst preinst setup unpack
+DEPEND=!<chromeos-base/chromeos-cheets-scripts-0.0.3 sys-apps/baselayout
+DESCRIPTION=Container to run Android.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/bundle
+IUSE=arcpp arcvm cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_9fc9c94a2d45e1fa0d13e8eab0e41814a9cd8c42_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<chromeos-base/chromeos-cheets-scripts-0.0.3 sys-apps/baselayout
+REQUIRED_USE=|| ( arcpp arcvm )
+SLOT=0/0.0.1-r395
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=2850f9b4b3f8572c5a414523439d3445
diff --git a/metadata/md5-cache/chromeos-base/arc-base-9999 b/metadata/md5-cache/chromeos-base/arc-base-9999
index 3b2be8f..9db1135 100644
--- a/metadata/md5-cache/chromeos-base/arc-base-9999
+++ b/metadata/md5-cache/chromeos-base/arc-base-9999
@@ -11,5 +11,5 @@
 RDEPEND=!<chromeos-base/chromeos-cheets-scripts-0.0.3 sys-apps/baselayout
 REQUIRED_USE=|| ( arcpp arcvm )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=fec601e4b68de27a84e56f9c0d6494e2
diff --git a/metadata/md5-cache/chromeos-base/arc-common-scripts-0.0.1-r152 b/metadata/md5-cache/chromeos-base/arc-common-scripts-0.0.1-r152
deleted file mode 100644
index 744d55d..0000000
--- a/metadata/md5-cache/chromeos-base/arc-common-scripts-0.0.1-r152
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=ARC++ common scripts.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/scripts
-IUSE=arcpp cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3635cafaa1e2fe54b2dd06c40c2a17b4e4659039_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<=chromeos-base/arc-base-0.0.1-r349 !<chromeos-base/arc-setup-0.0.1-r1084 app-misc/jq
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e400e59f5e256da707cc5d16e55cdd1b
diff --git a/metadata/md5-cache/chromeos-base/arc-common-scripts-0.0.1-r183 b/metadata/md5-cache/chromeos-base/arc-common-scripts-0.0.1-r183
new file mode 100644
index 0000000..536a0e4
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-common-scripts-0.0.1-r183
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=ARC++ common scripts.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/scripts
+IUSE=arcpp iioservice cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_bb51f9f8da453999f939ccb6a91e5c1a73b89308_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<=chromeos-base/arc-base-0.0.1-r349 !<chromeos-base/arc-setup-0.0.1-r1084 app-misc/jq
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4d3fb0a926c7b7259fc2af13ef6cc7de
diff --git a/metadata/md5-cache/chromeos-base/arc-common-scripts-9999 b/metadata/md5-cache/chromeos-base/arc-common-scripts-9999
index 103955e..e5548a8 100644
--- a/metadata/md5-cache/chromeos-base/arc-common-scripts-9999
+++ b/metadata/md5-cache/chromeos-base/arc-common-scripts-9999
@@ -3,11 +3,11 @@
 DESCRIPTION=ARC++ common scripts.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/scripts
-IUSE=arcpp cros_host cros_workon_tree_
+IUSE=arcpp iioservice cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=!<=chromeos-base/arc-base-0.0.1-r349 !<chromeos-base/arc-setup-0.0.1-r1084 app-misc/jq
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=bec51329cf482291b906e57c0cc5fcfe
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a920258a7e171b7f4f41a930e56f1b30
diff --git a/metadata/md5-cache/chromeos-base/arc-data-snapshotd-0.0.1-r40 b/metadata/md5-cache/chromeos-base/arc-data-snapshotd-0.0.1-r40
deleted file mode 100644
index 34cd302..0000000
--- a/metadata/md5-cache/chromeos-base/arc-data-snapshotd-0.0.1-r40
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/bootlockbox-client:= chromeos-base/minijail:= chromeos-base/system_api:= dev-libs/protobuf:= selinux? ( sys-libs/libselinux:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=ARC data snapshotd daemon in Chrome OS.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/data-snapshotd
-IUSE=+seccomp selinux cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_7eabed196d01863338304dc38454608d554693f5_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_7eabed196d01863338304dc38454608d554693f5_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/bootlockbox-client:= chromeos-base/minijail:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r40
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=5db9130b1255996dc33815b0a36de2a1
diff --git a/metadata/md5-cache/chromeos-base/arc-data-snapshotd-0.0.1-r84 b/metadata/md5-cache/chromeos-base/arc-data-snapshotd-0.0.1-r84
new file mode 100644
index 0000000..41b59ee
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-data-snapshotd-0.0.1-r84
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/bootlockbox-client:= chromeos-base/minijail:= chromeos-base/system_api:= dev-libs/protobuf:= selinux? ( sys-libs/libselinux:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=ARC data snapshotd daemon in Chrome OS.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/data-snapshotd
+IUSE=+seccomp selinux cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_9107f8d50d8863fe8587f75a2d4d7560450cf59d_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_9107f8d50d8863fe8587f75a2d4d7560450cf59d_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/bootlockbox-client:= chromeos-base/minijail:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r84
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=35d6655de369d5ee2212c8a851dc7c82
diff --git a/metadata/md5-cache/chromeos-base/arc-data-snapshotd-9999 b/metadata/md5-cache/chromeos-base/arc-data-snapshotd-9999
index 26945e1..43fda9c 100644
--- a/metadata/md5-cache/chromeos-base/arc-data-snapshotd-9999
+++ b/metadata/md5-cache/chromeos-base/arc-data-snapshotd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/bootlockbox-client:= chromeos-base/minijail:= chromeos-base/system_api:= dev-libs/protobuf:= selinux? ( sys-libs/libselinux:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/bootlockbox-client:= chromeos-base/minijail:= chromeos-base/system_api:= dev-libs/protobuf:= selinux? ( sys-libs/libselinux:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=ARC data snapshotd daemon in Chrome OS.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/data-snapshotd
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/bootlockbox-client:= chromeos-base/minijail:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=abd1d323afd4f0d78ce85fa307e33a9a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=da054c6f8f15cca6ca05e572e429d7e9
diff --git a/metadata/md5-cache/chromeos-base/arc-host-clock-service-0.0.1-r33 b/metadata/md5-cache/chromeos-base/arc-host-clock-service-0.0.1-r33
deleted file mode 100644
index 254139e..0000000
--- a/metadata/md5-cache/chromeos-base/arc-host-clock-service-0.0.1-r33
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=ARC host clock service
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/vm/host_clock
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_bd7a8b8c2a72289b8a9bad9133c39c6184921fe2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_bd7a8b8c2a72289b8a9bad9133c39c6184921fe2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r33
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=302679a141bda76c8be8b6d23fae6805
diff --git a/metadata/md5-cache/chromeos-base/arc-host-clock-service-0.0.1-r59 b/metadata/md5-cache/chromeos-base/arc-host-clock-service-0.0.1-r59
new file mode 100644
index 0000000..414c2c8
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-host-clock-service-0.0.1-r59
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=ARC host clock service
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/vm/host_clock
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_d5ebac6b78340ae031e643c6ddb2afdb32017e76_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_d5ebac6b78340ae031e643c6ddb2afdb32017e76_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r59
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=bb5a2154a903f93ee544427b92fe6d4c
diff --git a/metadata/md5-cache/chromeos-base/arc-host-clock-service-9999 b/metadata/md5-cache/chromeos-base/arc-host-clock-service-9999
index a0c7e6d..73b846c 100644
--- a/metadata/md5-cache/chromeos-base/arc-host-clock-service-9999
+++ b/metadata/md5-cache/chromeos-base/arc-host-clock-service-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=ARC host clock service
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/vm/host_clock
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=e0dcfac9ce27526432adffbbebdecbfe
diff --git a/metadata/md5-cache/chromeos-base/arc-keymaster-0.0.1-r210 b/metadata/md5-cache/chromeos-base/arc-keymaster-0.0.1-r210
deleted file mode 100644
index bc3942c..0000000
--- a/metadata/md5-cache/chromeos-base/arc-keymaster-0.0.1-r210
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6 dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst prepare setup test unpack
-DEPEND=chromeos-base/chaps:= chromeos-base/cryptohome:= chromeos-base/minijail:= dev-libs/protobuf:= chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Android keymaster service in Chrome OS.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/keymaster
-IUSE=+seccomp cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_7cbff7c391e32cecd310a2bbbc8b41ddb0e6d233_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_6dbc19849752c206e135ab59349ebb1cc62bb435 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_7cbff7c391e32cecd310a2bbbc8b41ddb0e6d233_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_6dbc19849752c206e135ab59349ebb1cc62bb435 cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/chaps:= chromeos-base/cryptohome:= chromeos-base/minijail:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r210
-SRC_URI=https://github.com/google/boringssl/archive/430a7423039682e4bbc7b522e3b57b2c8dca5e3b.tar.gz -> boringssl-430a7423039682e4bbc7b522e3b57b2c8dca5e3b.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=1bf65b4232c01d9c598eda99c5475ba5
diff --git a/metadata/md5-cache/chromeos-base/arc-keymaster-0.0.1-r246 b/metadata/md5-cache/chromeos-base/arc-keymaster-0.0.1-r246
new file mode 100644
index 0000000..b668386
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-keymaster-0.0.1-r246
@@ -0,0 +1,15 @@
+BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6 dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst prepare setup test unpack
+DEPEND=chromeos-base/chaps:= chromeos-base/cryptohome:= chromeos-base/minijail:= dev-libs/protobuf:= chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Android keymaster service in Chrome OS.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/keymaster
+IUSE=+seccomp cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_cd360f89c2a9c43343acba09894918cb5ef94620_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_6dbc19849752c206e135ab59349ebb1cc62bb435 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_cd360f89c2a9c43343acba09894918cb5ef94620_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_6dbc19849752c206e135ab59349ebb1cc62bb435 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/chaps:= chromeos-base/cryptohome:= chromeos-base/minijail:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r246
+SRC_URI=https://github.com/google/boringssl/archive/430a7423039682e4bbc7b522e3b57b2c8dca5e3b.tar.gz -> boringssl-430a7423039682e4bbc7b522e3b57b2c8dca5e3b.tar.gz
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=ef0a0e473ba1616cd1ae75f50288a58b
diff --git a/metadata/md5-cache/chromeos-base/arc-keymaster-9999 b/metadata/md5-cache/chromeos-base/arc-keymaster-9999
index 80bb444..79616b2 100644
--- a/metadata/md5-cache/chromeos-base/arc-keymaster-9999
+++ b/metadata/md5-cache/chromeos-base/arc-keymaster-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6 dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst prepare setup test unpack
-DEPEND=chromeos-base/chaps:= chromeos-base/cryptohome:= chromeos-base/minijail:= dev-libs/protobuf:= chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/chaps:= chromeos-base/cryptohome:= chromeos-base/minijail:= dev-libs/protobuf:= chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Android keymaster service in Chrome OS.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/keymaster
@@ -11,5 +11,5 @@
 RDEPEND=chromeos-base/chaps:= chromeos-base/cryptohome:= chromeos-base/minijail:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
 SRC_URI=https://github.com/google/boringssl/archive/430a7423039682e4bbc7b522e3b57b2c8dca5e3b.tar.gz -> boringssl-430a7423039682e4bbc7b522e3b57b2c8dca5e3b.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=cd094eee39846de7b725d05e6828cbfd
diff --git a/metadata/md5-cache/chromeos-base/arc-myfiles-0.0.1-r174 b/metadata/md5-cache/chromeos-base/arc-myfiles-0.0.1-r174
deleted file mode 100644
index 39bac73..0000000
--- a/metadata/md5-cache/chromeos-base/arc-myfiles-0.0.1-r174
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Container to run Android's MyFiles daemon.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/myfiles
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_44e015c48512f5c1bd9e73c1c350d3af9423c262_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/mount-passthrough !<chromeos-base/chromeos-cheets-scripts-0.0.2-r470
-SLOT=0/0.0.1-r174
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=31901c46509826eb2e5cb0d833ddc707
diff --git a/metadata/md5-cache/chromeos-base/arc-myfiles-0.0.1-r201 b/metadata/md5-cache/chromeos-base/arc-myfiles-0.0.1-r201
new file mode 100644
index 0000000..b0031b3
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-myfiles-0.0.1-r201
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Container to run Android's MyFiles daemon.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/myfiles
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c8a2550e2697f391dc686b4a72841d4568a5de73_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/mount-passthrough !<chromeos-base/chromeos-cheets-scripts-0.0.2-r470
+SLOT=0/0.0.1-r201
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=66fbee9b133736a272109b4981f36062
diff --git a/metadata/md5-cache/chromeos-base/arc-myfiles-9999 b/metadata/md5-cache/chromeos-base/arc-myfiles-9999
index 11a3d88..664013e 100644
--- a/metadata/md5-cache/chromeos-base/arc-myfiles-9999
+++ b/metadata/md5-cache/chromeos-base/arc-myfiles-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/mount-passthrough !<chromeos-base/chromeos-cheets-scripts-0.0.2-r470
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=c72484fefc9e714796fe3eca2e5322b7
diff --git a/metadata/md5-cache/chromeos-base/arc-obb-mounter-0.0.2-r423 b/metadata/md5-cache/chromeos-base/arc-obb-mounter-0.0.2-r423
deleted file mode 100644
index fc21247..0000000
--- a/metadata/md5-cache/chromeos-base/arc-obb-mounter-0.0.2-r423
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=D-Bus service to mount OBB files
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/obb-mounter
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_d530cceec5d2c60c71f02b70f0cdd617e82f2d0c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_d530cceec5d2c60c71f02b70f0cdd617e82f2d0c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.2-r423
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ecdd5272f63d286e94d2d5cef4ac7413
diff --git a/metadata/md5-cache/chromeos-base/arc-obb-mounter-0.0.2-r451 b/metadata/md5-cache/chromeos-base/arc-obb-mounter-0.0.2-r451
new file mode 100644
index 0000000..cbc6d7a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-obb-mounter-0.0.2-r451
@@ -0,0 +1,14 @@
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=D-Bus service to mount OBB files
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/obb-mounter
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e77993554f66d7d254d4cdb7210c63195cd7d453_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e77993554f66d7d254d4cdb7210c63195cd7d453_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.2-r451
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6e1c4668d225081f303baacfb2f83454
diff --git a/metadata/md5-cache/chromeos-base/arc-obb-mounter-9999 b/metadata/md5-cache/chromeos-base/arc-obb-mounter-9999
index c087e9d..bdc0051 100644
--- a/metadata/md5-cache/chromeos-base/arc-obb-mounter-9999
+++ b/metadata/md5-cache/chromeos-base/arc-obb-mounter-9999
@@ -1,6 +1,6 @@
 BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=D-Bus service to mount OBB files
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/obb-mounter
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=fcc926e007dcad9c377f001176341b5f
diff --git a/metadata/md5-cache/chromeos-base/arc-removable-media-0.0.1-r266 b/metadata/md5-cache/chromeos-base/arc-removable-media-0.0.1-r266
deleted file mode 100644
index 0604f43..0000000
--- a/metadata/md5-cache/chromeos-base/arc-removable-media-0.0.1-r266
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Container to run Android's removable-media daemon.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/removable-media
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_09c638306b818afa68992fcdd0d069ccbdcb3caa_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/mount-passthrough !<chromeos-base/chromeos-cheets-scripts-0.0.2-r470
-SLOT=0/0.0.1-r266
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=7bd34d7a7ebc4864eabe4d08add3b52a
diff --git a/metadata/md5-cache/chromeos-base/arc-removable-media-0.0.1-r293 b/metadata/md5-cache/chromeos-base/arc-removable-media-0.0.1-r293
new file mode 100644
index 0000000..a18191b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-removable-media-0.0.1-r293
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Container to run Android's removable-media daemon.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/removable-media
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a668f1f1ed688f833488719ca2ccefc7e1e4272b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/mount-passthrough !<chromeos-base/chromeos-cheets-scripts-0.0.2-r470
+SLOT=0/0.0.1-r293
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3db88b03e724a90d6b7d621a3143d535
diff --git a/metadata/md5-cache/chromeos-base/arc-removable-media-9999 b/metadata/md5-cache/chromeos-base/arc-removable-media-9999
index 07a3d94..840ac94 100644
--- a/metadata/md5-cache/chromeos-base/arc-removable-media-9999
+++ b/metadata/md5-cache/chromeos-base/arc-removable-media-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/mount-passthrough !<chromeos-base/chromeos-cheets-scripts-0.0.2-r470
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ea2bff079b6f94dfb4ad0ea84fe9bd83
diff --git a/metadata/md5-cache/chromeos-base/arc-sdcard-0.0.1-r267 b/metadata/md5-cache/chromeos-base/arc-sdcard-0.0.1-r267
deleted file mode 100644
index 709647a..0000000
--- a/metadata/md5-cache/chromeos-base/arc-sdcard-0.0.1-r267
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Container to run Android's sdcard daemon.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/sdcard
-IUSE=esdfs cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_2bd3f2208f90e7c6e42e1b037e211615995f768a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_2bd3f2208f90e7c6e42e1b037e211615995f768a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!esdfs? ( chromeos-base/arc-setup ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r267
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=78be8c0bfcb677949d87ca8e262c707b
diff --git a/metadata/md5-cache/chromeos-base/arc-sdcard-0.0.1-r293 b/metadata/md5-cache/chromeos-base/arc-sdcard-0.0.1-r293
new file mode 100644
index 0000000..ce2786b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-sdcard-0.0.1-r293
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Container to run Android's sdcard daemon.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/sdcard
+IUSE=esdfs cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8d42b591edbde62798f5c6399507eb627c83326f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8d42b591edbde62798f5c6399507eb627c83326f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!esdfs? ( chromeos-base/arc-setup ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r293
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3b2c2416efee91e8812e28eb94f4c84a
diff --git a/metadata/md5-cache/chromeos-base/arc-sdcard-9999 b/metadata/md5-cache/chromeos-base/arc-sdcard-9999
index 4807969..1c9f998 100644
--- a/metadata/md5-cache/chromeos-base/arc-sdcard-9999
+++ b/metadata/md5-cache/chromeos-base/arc-sdcard-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Container to run Android's sdcard daemon.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/container/sdcard
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=!esdfs? ( chromeos-base/arc-setup ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=6dce9b56a4e25d28d1c7301fc5da5430
diff --git a/metadata/md5-cache/chromeos-base/arc-sensor-service-0.0.1-r50 b/metadata/md5-cache/chromeos-base/arc-sensor-service-0.0.1-r50
deleted file mode 100644
index 71fc7ea..0000000
--- a/metadata/md5-cache/chromeos-base/arc-sensor-service-0.0.1-r50
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=ARC sensor service.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/sensor_service
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c4df5a89c2fa9fe19a2f058dd32ea9c45ed9d1b7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c4df5a89c2fa9fe19a2f058dd32ea9c45ed9d1b7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r50
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=660751c3d97cbd914c62b780f3d328b0
diff --git a/metadata/md5-cache/chromeos-base/arc-sensor-service-0.0.1-r79 b/metadata/md5-cache/chromeos-base/arc-sensor-service-0.0.1-r79
new file mode 100644
index 0000000..45b7d34
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-sensor-service-0.0.1-r79
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=ARC sensor service.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/sensor_service
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_37d18ee31b53064c7077aaf9c02849897112588c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_37d18ee31b53064c7077aaf9c02849897112588c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r79
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=62060ae5dfaadf7faba3e7a828e1092c
diff --git a/metadata/md5-cache/chromeos-base/arc-sensor-service-9999 b/metadata/md5-cache/chromeos-base/arc-sensor-service-9999
index f048cba..038cfa5 100644
--- a/metadata/md5-cache/chromeos-base/arc-sensor-service-9999
+++ b/metadata/md5-cache/chromeos-base/arc-sensor-service-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=ARC sensor service.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/sensor_service
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0d7533600a203d466e3ba35979305cd0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0b7af6d03bcc066f8b88eb8b54979f7f
diff --git a/metadata/md5-cache/chromeos-base/arc-setup-0.0.1-r1136 b/metadata/md5-cache/chromeos-base/arc-setup-0.0.1-r1136
deleted file mode 100644
index 4734a5c..0000000
--- a/metadata/md5-cache/chromeos-base/arc-setup-0.0.1-r1136
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=esdfs? ( chromeos-base/arc-sdcard ) chromeos-base/bootstat:= chromeos-base/chromeos-config-tools:= chromeos-base/cryptohome-client:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/patchpanel-client:= dev-libs/dbus-glib:= dev-libs/protobuf:= sys-libs/libselinux:= chromeos-base/minijail:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Set up environment to run ARC.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/setup
-IUSE=arcpp arcvm esdfs fuzzer generated_cros_config houdini houdini64 ndk_translation unibuild cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8e053bc08c1c1a3cabfd68002a489024009a06e1_4a9d701c1716dbba6b3de3a9927299f399ec4580_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8e053bc08c1c1a3cabfd68002a489024009a06e1_4a9d701c1716dbba6b3de3a9927299f399ec4580_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=esdfs? ( chromeos-base/arc-sdcard ) chromeos-base/bootstat:= chromeos-base/chromeos-config-tools:= chromeos-base/cryptohome-client:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/patchpanel-client:= dev-libs/dbus-glib:= dev-libs/protobuf:= sys-libs/libselinux:= chromeos-base/minijail:= !<chromeos-base/arc-common-scripts-0.0.1-r131 !<chromeos-base/arcvm-common-scripts-0.0.1-r77 chromeos-base/patchpanel arcvm? ( chromeos-base/crosvm ) arcpp? ( chromeos-base/swap-init esdfs? ( sys-apps/restorecon ) ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-REQUIRED_USE=|| ( arcpp arcvm )
-SLOT=0/0.0.1-r1136
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4e8da38e20ec44de427cf3d5ccfd06f1
diff --git a/metadata/md5-cache/chromeos-base/arc-setup-0.0.1-r1248 b/metadata/md5-cache/chromeos-base/arc-setup-0.0.1-r1248
new file mode 100644
index 0000000..eb030e4
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arc-setup-0.0.1-r1248
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=arcpp? ( esdfs? ( chromeos-base/arc-sdcard ) ) chromeos-base/bootstat:= chromeos-base/chromeos-config-tools:= chromeos-base/cryptohome-client:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/patchpanel-client:= dev-libs/libxml2:= dev-libs/protobuf:= sys-libs/libselinux:= chromeos-base/minijail:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/system_api:=[fuzzer?] test? ( chromeos-base/arc-base ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Set up environment to run ARC.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/setup
+IUSE=arcpp arcvm esdfs fuzzer generated_cros_config houdini houdini64 iioservice ndk_translation unibuild test cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_f4925a46fc9b9ab39b7c7a11ad97e12a0d0bb39d_aa0612733aca2d5ffa65470f07408228b473ebdb_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_f4925a46fc9b9ab39b7c7a11ad97e12a0d0bb39d_aa0612733aca2d5ffa65470f07408228b473ebdb_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=arcpp? ( esdfs? ( chromeos-base/arc-sdcard ) ) chromeos-base/bootstat:= chromeos-base/chromeos-config-tools:= chromeos-base/cryptohome-client:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/patchpanel-client:= dev-libs/libxml2:= dev-libs/protobuf:= sys-libs/libselinux:= chromeos-base/minijail:= !<chromeos-base/arc-common-scripts-0.0.1-r131 !<chromeos-base/arcvm-common-scripts-0.0.1-r77 chromeos-base/patchpanel arcvm? ( chromeos-base/crosvm ) arcpp? ( chromeos-base/swap-init esdfs? ( sys-apps/restorecon ) ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=|| ( arcpp arcvm )
+SLOT=0/0.0.1-r1248
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=bd249c8d2a40a39a09aa4174c3b04ab4
diff --git a/metadata/md5-cache/chromeos-base/arc-setup-9999 b/metadata/md5-cache/chromeos-base/arc-setup-9999
index 0f83f08..2b98832 100644
--- a/metadata/md5-cache/chromeos-base/arc-setup-9999
+++ b/metadata/md5-cache/chromeos-base/arc-setup-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=esdfs? ( chromeos-base/arc-sdcard ) chromeos-base/bootstat:= chromeos-base/chromeos-config-tools:= chromeos-base/cryptohome-client:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/patchpanel-client:= dev-libs/dbus-glib:= dev-libs/protobuf:= sys-libs/libselinux:= chromeos-base/minijail:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=arcpp? ( esdfs? ( chromeos-base/arc-sdcard ) ) chromeos-base/bootstat:= chromeos-base/chromeos-config-tools:= chromeos-base/cryptohome-client:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/patchpanel-client:= dev-libs/libxml2:= dev-libs/protobuf:= sys-libs/libselinux:= chromeos-base/minijail:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/system_api:=[fuzzer?] test? ( chromeos-base/arc-base ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Set up environment to run ARC.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/setup
-IUSE=arcpp arcvm esdfs fuzzer generated_cros_config houdini houdini64 ndk_translation unibuild cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=arcpp arcvm esdfs fuzzer generated_cros_config houdini houdini64 iioservice ndk_translation unibuild test cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=esdfs? ( chromeos-base/arc-sdcard ) chromeos-base/bootstat:= chromeos-base/chromeos-config-tools:= chromeos-base/cryptohome-client:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/patchpanel-client:= dev-libs/dbus-glib:= dev-libs/protobuf:= sys-libs/libselinux:= chromeos-base/minijail:= !<chromeos-base/arc-common-scripts-0.0.1-r131 !<chromeos-base/arcvm-common-scripts-0.0.1-r77 chromeos-base/patchpanel arcvm? ( chromeos-base/crosvm ) arcpp? ( chromeos-base/swap-init esdfs? ( sys-apps/restorecon ) ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=arcpp? ( esdfs? ( chromeos-base/arc-sdcard ) ) chromeos-base/bootstat:= chromeos-base/chromeos-config-tools:= chromeos-base/cryptohome-client:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/patchpanel-client:= dev-libs/libxml2:= dev-libs/protobuf:= sys-libs/libselinux:= chromeos-base/minijail:= !<chromeos-base/arc-common-scripts-0.0.1-r131 !<chromeos-base/arcvm-common-scripts-0.0.1-r77 chromeos-base/patchpanel arcvm? ( chromeos-base/crosvm ) arcpp? ( chromeos-base/swap-init esdfs? ( sys-apps/restorecon ) ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 REQUIRED_USE=|| ( arcpp arcvm )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=bad1f2c3efe3c69dd32d21cd6b8f89e0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7cd93220f1362dd86af2787490c2374e
diff --git a/metadata/md5-cache/chromeos-base/arc-sslh-init-0.0.1-r15 b/metadata/md5-cache/chromeos-base/arc-sslh-init-0.0.1-r19
similarity index 100%
rename from metadata/md5-cache/chromeos-base/arc-sslh-init-0.0.1-r15
rename to metadata/md5-cache/chromeos-base/arc-sslh-init-0.0.1-r19
diff --git a/metadata/md5-cache/chromeos-base/arcvm-boot-notification-server-0.0.1-r102 b/metadata/md5-cache/chromeos-base/arcvm-boot-notification-server-0.0.1-r102
new file mode 100644
index 0000000..5e283a8
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arcvm-boot-notification-server-0.0.1-r102
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=ARCVM boot notification server
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/boot_notification_server
+IUSE=+seccomp cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_0c5d891fa800a59e0e40fbece73b10a84f3fde65_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_0c5d891fa800a59e0e40fbece73b10a84f3fde65_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=28665b566f9dd859deeed2ec932f5a2c
diff --git a/metadata/md5-cache/chromeos-base/arcvm-boot-notification-server-0.0.1-r71 b/metadata/md5-cache/chromeos-base/arcvm-boot-notification-server-0.0.1-r71
deleted file mode 100644
index 36ec82c..0000000
--- a/metadata/md5-cache/chromeos-base/arcvm-boot-notification-server-0.0.1-r71
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=ARCVM boot notification server
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/boot_notification_server
-IUSE=+seccomp cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_546ca65e6631a7978be69ea8f13df0d99a1bc230_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_546ca65e6631a7978be69ea8f13df0d99a1bc230_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=45f8e583fe4f6a22b23f56be2b0d5e80
diff --git a/metadata/md5-cache/chromeos-base/arcvm-boot-notification-server-9999 b/metadata/md5-cache/chromeos-base/arcvm-boot-notification-server-9999
index 395fa53..35001a5 100644
--- a/metadata/md5-cache/chromeos-base/arcvm-boot-notification-server-9999
+++ b/metadata/md5-cache/chromeos-base/arcvm-boot-notification-server-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=ARCVM boot notification server
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/boot_notification_server
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=57dae0871a0fad1995e17d6734e131a0
diff --git a/metadata/md5-cache/chromeos-base/arcvm-codec-software-0.0.1 b/metadata/md5-cache/chromeos-base/arcvm-codec-software-0.0.1
index bef4d44..e648666 100644
--- a/metadata/md5-cache/chromeos-base/arcvm-codec-software-0.0.1
+++ b/metadata/md5-cache/chromeos-base/arcvm-codec-software-0.0.1
@@ -1,10 +1,10 @@
 DEFINED_PHASES=install
 DESCRIPTION=Install software codec configuration on ARCVM
 EAPI=5
-IUSE=arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=*
 LICENSE=BSD-Google
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build-constants	8e0737c700e22ae5b27a96091af3e368
+_eclasses_=arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f
 _md5_=011cd10f6e7454dcc655e5557be790bd
diff --git a/metadata/md5-cache/chromeos-base/arcvm-codec-software-0.0.1-r1 b/metadata/md5-cache/chromeos-base/arcvm-codec-software-0.0.1-r1
index bef4d44..e648666 100644
--- a/metadata/md5-cache/chromeos-base/arcvm-codec-software-0.0.1-r1
+++ b/metadata/md5-cache/chromeos-base/arcvm-codec-software-0.0.1-r1
@@ -1,10 +1,10 @@
 DEFINED_PHASES=install
 DESCRIPTION=Install software codec configuration on ARCVM
 EAPI=5
-IUSE=arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=*
 LICENSE=BSD-Google
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build-constants	8e0737c700e22ae5b27a96091af3e368
+_eclasses_=arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f
 _md5_=011cd10f6e7454dcc655e5557be790bd
diff --git a/metadata/md5-cache/chromeos-base/arcvm-common-scripts-0.0.1-r104 b/metadata/md5-cache/chromeos-base/arcvm-common-scripts-0.0.1-r104
deleted file mode 100644
index 4a138a8..0000000
--- a/metadata/md5-cache/chromeos-base/arcvm-common-scripts-0.0.1-r104
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=ARCVM common scripts.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/scripts
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ecb73efb7df94308415446f7ae5df12d18f3f098_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<=chromeos-base/arc-base-0.0.1-r349 !<=chromeos-base/arc-common-scripts-0.0.1-r132 chromeos-base/arcvm-mount-media-dirs
-SLOT=0/0.0.1-r104
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b36a109e4287c3566e3645fe979fca8b
diff --git a/metadata/md5-cache/chromeos-base/arcvm-common-scripts-0.0.1-r140 b/metadata/md5-cache/chromeos-base/arcvm-common-scripts-0.0.1-r140
new file mode 100644
index 0000000..a0cc876
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arcvm-common-scripts-0.0.1-r140
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=ARCVM common scripts.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/scripts
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_68f4c05e6bc458438aeae9eaf6c21df9bbf74427_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<=chromeos-base/arc-base-0.0.1-r349 !<=chromeos-base/arc-common-scripts-0.0.1-r132 chromeos-base/arcvm-mount-media-dirs
+SLOT=0/0.0.1-r140
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=78ec9f6a3588690cb85ab30a2cee978c
diff --git a/metadata/md5-cache/chromeos-base/arcvm-common-scripts-9999 b/metadata/md5-cache/chromeos-base/arcvm-common-scripts-9999
index b7d5794..c7df440 100644
--- a/metadata/md5-cache/chromeos-base/arcvm-common-scripts-9999
+++ b/metadata/md5-cache/chromeos-base/arcvm-common-scripts-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!<=chromeos-base/arc-base-0.0.1-r349 !<=chromeos-base/arc-common-scripts-0.0.1-r132 chromeos-base/arcvm-mount-media-dirs
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=1bff439b681cf3685400f535f0456d56
diff --git a/metadata/md5-cache/chromeos-base/arcvm-forward-pstore-0.0.1-r175 b/metadata/md5-cache/chromeos-base/arcvm-forward-pstore-0.0.1-r175
new file mode 100644
index 0000000..0574fee
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arcvm-forward-pstore-0.0.1-r175
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/protobuf:= chromeos-base/system_api:= chromeos-base/vm_protos:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Forwards pstore file for ARCVM after upgrade.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/vm/forward-pstore
+IUSE=+seccomp cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_7743fe686ef9bd5ed2f18d1eb6cf820611970167_7ef75a42aba67052842459f221271e681184cc89_c1bde153626532428bf7409bc0597e79452c5eb8 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_7743fe686ef9bd5ed2f18d1eb6cf820611970167_7ef75a42aba67052842459f221271e681184cc89_c1bde153626532428bf7409bc0597e79452c5eb8 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8fee15e6e7f676ccac535b13a5845208
diff --git a/metadata/md5-cache/chromeos-base/arcvm-forward-pstore-0.0.1-r40 b/metadata/md5-cache/chromeos-base/arcvm-forward-pstore-0.0.1-r40
deleted file mode 100644
index f6f27c2..0000000
--- a/metadata/md5-cache/chromeos-base/arcvm-forward-pstore-0.0.1-r40
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/protobuf:= chromeos-base/system_api:= chromeos-base/vm_protos:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Forwards pstore file for ARCVM after upgrade.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/vm/forward-pstore
-IUSE=+seccomp cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_fbd3e931f69a0bf810c1f26f1aa1368486c77944_631e6c6d6df99d6cdb1c79f2a2e9733cadbcfa8a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_fbd3e931f69a0bf810c1f26f1aa1368486c77944_631e6c6d6df99d6cdb1c79f2a2e9733cadbcfa8a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=7f5ac28b291c68e1c8457d164df5e115
diff --git a/metadata/md5-cache/chromeos-base/arcvm-forward-pstore-9999 b/metadata/md5-cache/chromeos-base/arcvm-forward-pstore-9999
index 708c126..cde7707 100644
--- a/metadata/md5-cache/chromeos-base/arcvm-forward-pstore-9999
+++ b/metadata/md5-cache/chromeos-base/arcvm-forward-pstore-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/protobuf:= chromeos-base/system_api:= chromeos-base/vm_protos:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-libs/protobuf:= chromeos-base/system_api:= chromeos-base/vm_protos:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Forwards pstore file for ARCVM after upgrade.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/arc/vm/forward-pstore
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=45bbbc04f38650859a56709e0d605f42
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5fe2f9eb5c671a0f0b8ddc515adfbe39
diff --git a/metadata/md5-cache/chromeos-base/arcvm-mojo-proxy-0.0.1-r34 b/metadata/md5-cache/chromeos-base/arcvm-mojo-proxy-0.0.1-r34
new file mode 100644
index 0000000..862705c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arcvm-mojo-proxy-0.0.1-r34
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=!chromeos-base/arcvm-vsock-proxy dev-libs/protobuf:= sys-fs/fuse >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=ARCVM mojo proxy.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/mojo_proxy
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e23cacccf4a8be891ad29fabf2c717600327a772_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e23cacccf4a8be891ad29fabf2c717600327a772_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!chromeos-base/arcvm-vsock-proxy dev-libs/protobuf:= sys-fs/fuse >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r34
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0fcf3d1793f38781b41fb2b65243dff4
diff --git a/metadata/md5-cache/chromeos-base/arcvm-mojo-proxy-0.0.1-r4 b/metadata/md5-cache/chromeos-base/arcvm-mojo-proxy-0.0.1-r4
deleted file mode 100644
index 627ea92..0000000
--- a/metadata/md5-cache/chromeos-base/arcvm-mojo-proxy-0.0.1-r4
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!chromeos-base/arcvm-vsock-proxy dev-libs/protobuf:= sys-fs/fuse >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=ARCVM mojo proxy.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/mojo_proxy
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_0598f6aab193a1da93fd10036c100a1d800350bc_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_0598f6aab193a1da93fd10036c100a1d800350bc_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!chromeos-base/arcvm-vsock-proxy dev-libs/protobuf:= sys-fs/fuse >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r4
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c7f0e195532f141f5e941cc2e9572b59
diff --git a/metadata/md5-cache/chromeos-base/arcvm-mojo-proxy-9999 b/metadata/md5-cache/chromeos-base/arcvm-mojo-proxy-9999
index 74cd401..9429a4b 100644
--- a/metadata/md5-cache/chromeos-base/arcvm-mojo-proxy-9999
+++ b/metadata/md5-cache/chromeos-base/arcvm-mojo-proxy-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!chromeos-base/arcvm-vsock-proxy dev-libs/protobuf:= sys-fs/fuse >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=!chromeos-base/arcvm-vsock-proxy dev-libs/protobuf:= sys-fs/fuse >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=ARCVM mojo proxy.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/mojo_proxy
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=!chromeos-base/arcvm-vsock-proxy dev-libs/protobuf:= sys-fs/fuse >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=26dedf56129316241b4a197056cbbf96
diff --git a/metadata/md5-cache/chromeos-base/arcvm-mount-media-dirs-0.0.1-r39 b/metadata/md5-cache/chromeos-base/arcvm-mount-media-dirs-0.0.1-r39
deleted file mode 100644
index e4ae4f9..0000000
--- a/metadata/md5-cache/chromeos-base/arcvm-mount-media-dirs-0.0.1-r39
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Mount media directories on a mount point shared with ARCVM.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/scripts/init/mount-media-dirs
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c9f42ec607fcaf0dc1770080e49f9705bf7c5301_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/mount-passthrough
-SLOT=0/0.0.1-r39
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=93bef5324ca66842cbcfce72337aac32
diff --git a/metadata/md5-cache/chromeos-base/arcvm-mount-media-dirs-0.0.1-r70 b/metadata/md5-cache/chromeos-base/arcvm-mount-media-dirs-0.0.1-r70
new file mode 100644
index 0000000..1c391b2
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/arcvm-mount-media-dirs-0.0.1-r70
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Mount media directories on a mount point shared with ARCVM.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/scripts/init/mount-media-dirs
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_954e934fa76d67253d978d97346b24a1fce9be2c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/mount-passthrough
+SLOT=0/0.0.1-r70
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=bbe3939d51f084b8765badac56776f70
diff --git a/metadata/md5-cache/chromeos-base/arcvm-mount-media-dirs-9999 b/metadata/md5-cache/chromeos-base/arcvm-mount-media-dirs-9999
index 7b5c2cc..16d35ea 100644
--- a/metadata/md5-cache/chromeos-base/arcvm-mount-media-dirs-9999
+++ b/metadata/md5-cache/chromeos-base/arcvm-mount-media-dirs-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/mount-passthrough
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=5aaa33674bef9422af928018c7eb0143
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c44d451e0153287762781756f3bf287d
diff --git a/metadata/md5-cache/chromeos-base/atrusctl-0.0.1-r946 b/metadata/md5-cache/chromeos-base/atrusctl-0.0.1-r946
deleted file mode 100644
index c00e37d..0000000
--- a/metadata/md5-cache/chromeos-base/atrusctl-0.0.1-r946
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=virtual/libusb:1 virtual/libudev:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=CrOS daemon for the Atrus speakerphone
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/atrusctl/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_bf3ca2cf751d3dcbf605278a8a41d0851e52d360 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_bf3ca2cf751d3dcbf605278a8a41d0851e52d360 cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=virtual/libusb:1 virtual/libudev:0= !sys-apps/atrusctl >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r946
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=dccb3fda671f9148222e52ee2cd1fdf8
diff --git a/metadata/md5-cache/chromeos-base/atrusctl-0.0.1-r973 b/metadata/md5-cache/chromeos-base/atrusctl-0.0.1-r973
new file mode 100644
index 0000000..e236707
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/atrusctl-0.0.1-r973
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=virtual/libusb:1 virtual/libudev:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=CrOS daemon for the Atrus speakerphone
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/atrusctl/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_90cfa2a210ebed49a8ce050686db523ef372c62c cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_90cfa2a210ebed49a8ce050686db523ef372c62c cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=virtual/libusb:1 virtual/libudev:0= !sys-apps/atrusctl >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r973
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=f2f667c434c3f9e06451c2c7f7435067
diff --git a/metadata/md5-cache/chromeos-base/atrusctl-9999 b/metadata/md5-cache/chromeos-base/atrusctl-9999
index 5cfc50a..d72cba5 100644
--- a/metadata/md5-cache/chromeos-base/atrusctl-9999
+++ b/metadata/md5-cache/chromeos-base/atrusctl-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=virtual/libusb:1 virtual/libudev:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=virtual/libusb:1 virtual/libudev:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=CrOS daemon for the Atrus speakerphone
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/atrusctl/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=virtual/libusb:1 virtual/libudev:0= !sys-apps/atrusctl >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=f98821055cc3d7477ed44a3a63a2f2d4
diff --git a/metadata/md5-cache/chromeos-base/attestation-0.0.1-r3041 b/metadata/md5-cache/chromeos-base/attestation-0.0.1-r3041
deleted file mode 100644
index 6746cfe..0000000
--- a/metadata/md5-cache/chromeos-base/attestation-0.0.1-r3041
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/chaps:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/tpm_manager:= test? ( chromeos-base/libhwsec:= ) chromeos-base/vboot_reference:= tpm2? ( chromeos-base/trunks:=[test?] chromeos-base/chromeos-ec-headers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Attestation service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/attestation/
-IUSE=test tpm tpm2 cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e2d4b5c2a34733c2112e0a9a8d0a2171f90ec316_5956de9997bc0735d9aeff6edc4d0098fb571b9b_989d840598227b15d78525d5f92c806011a9c158_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e3bf102d9535965e9911dc352202c6927e8f5514_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e2d4b5c2a34733c2112e0a9a8d0a2171f90ec316_5956de9997bc0735d9aeff6edc4d0098fb571b9b_989d840598227b15d78525d5f92c806011a9c158_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e3bf102d9535965e9911dc352202c6927e8f5514_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=Apache-2.0
-PROPERTIES=live live
-RDEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/chaps:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/tpm_manager:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-REQUIRED_USE=tpm2? ( !tpm )
-SLOT=0/0.0.1-r3041
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=21676e7bc0d814563af9b56b0cac0f70
diff --git a/metadata/md5-cache/chromeos-base/attestation-0.0.1-r3188 b/metadata/md5-cache/chromeos-base/attestation-0.0.1-r3188
new file mode 100644
index 0000000..f4219d4
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/attestation-0.0.1-r3188
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/chaps:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/tpm_manager:= chromeos-base/attestation-client test? ( chromeos-base/libhwsec:= ) chromeos-base/vboot_reference:= tpm2? ( chromeos-base/trunks:=[test?] chromeos-base/chromeos-ec-headers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Attestation service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/attestation/
+IUSE=generic_tpm2 test tpm tpm2 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8a6aa0783afea740fe52cec225aef91187cbcde6_8640df3a4aff4084b644aeefc4d31752a1d97665_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8a6aa0783afea740fe52cec225aef91187cbcde6_8640df3a4aff4084b644aeefc4d31752a1d97665_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live live
+RDEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/chaps:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/tpm_manager:= chromeos-base/attestation-client >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+REQUIRED_USE=tpm2? ( !tpm )
+SLOT=0/0.0.1-r3188
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=8b8ee3ee45754a2abb859df14b1526dd
diff --git a/metadata/md5-cache/chromeos-base/attestation-9999 b/metadata/md5-cache/chromeos-base/attestation-9999
index d595847..eeb8961 100644
--- a/metadata/md5-cache/chromeos-base/attestation-9999
+++ b/metadata/md5-cache/chromeos-base/attestation-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/chaps:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/tpm_manager:= test? ( chromeos-base/libhwsec:= ) chromeos-base/vboot_reference:= tpm2? ( chromeos-base/trunks:=[test?] chromeos-base/chromeos-ec-headers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/chaps:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/tpm_manager:= chromeos-base/attestation-client test? ( chromeos-base/libhwsec:= ) chromeos-base/vboot_reference:= tpm2? ( chromeos-base/trunks:=[test?] chromeos-base/chromeos-ec-headers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Attestation service for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/attestation/
-IUSE=test tpm tpm2 cros_host cros_workon_tree_ cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=generic_tpm2 test tpm tpm2 cros_host cros_workon_tree_ cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=Apache-2.0
 PROPERTIES=live live
-RDEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/chaps:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/tpm_manager:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/chaps:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/tpm_manager:= chromeos-base/attestation-client >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 REQUIRED_USE=tpm2? ( !tpm )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=a34a6c3ae8999d69e289d1b2d9efd91c
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=f913275287a55ef8f60192b760c7c671
diff --git a/metadata/md5-cache/chromeos-base/attestation-client-0.0.1-r260 b/metadata/md5-cache/chromeos-base/attestation-client-0.0.1-r260
deleted file mode 100644
index c689e72..0000000
--- a/metadata/md5-cache/chromeos-base/attestation-client-0.0.1-r260
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 ) chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Attestation D-Bus client library for Chromium OS
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/attestation/client/
-IUSE=cros_host cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e2d4b5c2a34733c2112e0a9a8d0a2171f90ec316_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e2d4b5c2a34733c2112e0a9a8d0a2171f90ec316_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!<chromeos-base/attestation-0.0.1 chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=3334e32385e9500eb2e2dc427f417722
diff --git a/metadata/md5-cache/chromeos-base/attestation-client-0.0.1-r318 b/metadata/md5-cache/chromeos-base/attestation-client-0.0.1-r318
new file mode 100644
index 0000000..e46eb5f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/attestation-client-0.0.1-r318
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 ) chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Attestation D-Bus client library for Chromium OS
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/attestation/client/
+IUSE=cros_host cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8a6aa0783afea740fe52cec225aef91187cbcde6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8a6aa0783afea740fe52cec225aef91187cbcde6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!<chromeos-base/attestation-0.0.1 chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=39dab654f44ae4291f2b15cd6b1180a5
diff --git a/metadata/md5-cache/chromeos-base/attestation-client-9999 b/metadata/md5-cache/chromeos-base/attestation-client-9999
index 136c871..291d912 100644
--- a/metadata/md5-cache/chromeos-base/attestation-client-9999
+++ b/metadata/md5-cache/chromeos-base/attestation-client-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 ) chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 ) chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Attestation D-Bus client library for Chromium OS
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/attestation/client/
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=!<chromeos-base/attestation-0.0.1 chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=027eb9465b6df47d0395c41add601db0
diff --git a/metadata/md5-cache/chromeos-base/audiotest-0.0.1-r90 b/metadata/md5-cache/chromeos-base/audiotest-0.0.1-r90
deleted file mode 100644
index c9093a1..0000000
--- a/metadata/md5-cache/chromeos-base/audiotest-0.0.1-r90
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=media-libs/alsa-lib media-sound/adhd
-DESCRIPTION=Audio test tools
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/audiotest
-IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_73626da07ec9a713034e026f65d181db14f62037
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=media-libs/alsa-lib media-sound/adhd
-SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e1a87255f440ebf94062cbc4302ef6cc
diff --git a/metadata/md5-cache/chromeos-base/audiotest-0.0.1-r93 b/metadata/md5-cache/chromeos-base/audiotest-0.0.1-r93
new file mode 100644
index 0000000..f5c9714
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/audiotest-0.0.1-r93
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=media-libs/alsa-lib media-sound/adhd
+DESCRIPTION=Audio test tools
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/audiotest
+IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e51a0909385bb2619e4b4e099e8a7e3dcd5e629c
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=media-libs/alsa-lib media-sound/adhd
+SLOT=0
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=5bf8895c63e8e3e4ac25359326ee9d8d
diff --git a/metadata/md5-cache/chromeos-base/audiotest-9999 b/metadata/md5-cache/chromeos-base/audiotest-9999
index a732bd9..b6d0fdf 100644
--- a/metadata/md5-cache/chromeos-base/audiotest-9999
+++ b/metadata/md5-cache/chromeos-base/audiotest-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=media-libs/alsa-lib media-sound/adhd
 SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=d2792c34fcde870b10fe4cf74475ed7a
diff --git a/metadata/md5-cache/chromeos-base/authpolicy-0.0.1-r1576 b/metadata/md5-cache/chromeos-base/authpolicy-0.0.1-r1576
deleted file mode 100644
index 8ee436b..0000000
--- a/metadata/md5-cache/chromeos-base/authpolicy-0.0.1-r1576
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/minijail-0.0.1-r1477:= dev-libs/protobuf:= samba? ( >=net-fs/samba-4.5.3-r6:= ) sys-apps/dbus:= sys-libs/libcap:= >=chromeos-base/protofiles-0.0.39:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Provides authentication to LDAP and fetching device/user policies
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/authpolicy/
-IUSE=+samba asan fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_b5d7fbdfbfcbc31321752d83e713f53f67bbb443_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_b5d7fbdfbfcbc31321752d83e713f53f67bbb443_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/minijail-0.0.1-r1477:= dev-libs/protobuf:= samba? ( >=net-fs/samba-4.5.3-r6:= ) sys-apps/dbus:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=106dd451554edc1478322368215c07f5
diff --git a/metadata/md5-cache/chromeos-base/authpolicy-0.0.1-r1646 b/metadata/md5-cache/chromeos-base/authpolicy-0.0.1-r1646
new file mode 100644
index 0000000..b75d5e9
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/authpolicy-0.0.1-r1646
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/minijail-0.0.1-r1477:= dev-libs/protobuf:= samba? ( >=net-fs/samba-4.5.3-r6:= ) sys-apps/dbus:= sys-libs/libcap:= >=chromeos-base/protofiles-0.0.45:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Provides authentication to LDAP and fetching device/user policies
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/authpolicy/
+IUSE=+samba asan fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8e29f11c718c4a832c570433a5cf1e5382d6576f_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8e29f11c718c4a832c570433a5cf1e5382d6576f_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/minijail-0.0.1-r1477:= dev-libs/protobuf:= samba? ( >=net-fs/samba-4.5.3-r6:= ) sys-apps/dbus:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=d98a69f039846cbe645fa79b965190cd
diff --git a/metadata/md5-cache/chromeos-base/authpolicy-9999 b/metadata/md5-cache/chromeos-base/authpolicy-9999
index c0f7eac..7c1e4e2 100644
--- a/metadata/md5-cache/chromeos-base/authpolicy-9999
+++ b/metadata/md5-cache/chromeos-base/authpolicy-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/minijail-0.0.1-r1477:= dev-libs/protobuf:= samba? ( >=net-fs/samba-4.5.3-r6:= ) sys-apps/dbus:= sys-libs/libcap:= >=chromeos-base/protofiles-0.0.39:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/minijail-0.0.1-r1477:= dev-libs/protobuf:= samba? ( >=net-fs/samba-4.5.3-r6:= ) sys-apps/dbus:= sys-libs/libcap:= >=chromeos-base/protofiles-0.0.45:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Provides authentication to LDAP and fetching device/user policies
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/authpolicy/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/minijail-0.0.1-r1477:= dev-libs/protobuf:= samba? ( >=net-fs/samba-4.5.3-r6:= ) sys-apps/dbus:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=c2ca64a1c3392b87fde2d76c069c5de5
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=a31410ff30e9d69a08745cac60382e67
diff --git a/metadata/md5-cache/chromeos-base/autotest-0.0.2-r13480 b/metadata/md5-cache/chromeos-base/autotest-0.0.2-r13480
deleted file mode 100644
index b316e32..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-0.0.2-r13480
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install postinst prepare setup test unpack
-DEPEND=!<chromeos-base/autotest-chrome-0.0.1-r1788 !<chromeos-base/autotest-tests-0.0.1-r3291 !<chromeos-base/autotest-deps-0.0.2 virtual/autotest-libs virtual/autotest-assistant-libs
-DESCRIPTION=Autotest scripts and tools
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc_7c21ad286a49cc09ef2bd9f6c03939f016e9c889
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-chrome-0.0.1-r1788 !<chromeos-base/autotest-tests-0.0.1-r3291 !<chromeos-base/autotest-deps-0.0.2 virtual/autotest-libs virtual/autotest-assistant-libs
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=38f7f236462653dd1cc6772738ec375b
diff --git a/metadata/md5-cache/chromeos-base/autotest-0.0.2-r14343 b/metadata/md5-cache/chromeos-base/autotest-0.0.2-r14343
new file mode 100644
index 0000000..00e29c7
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-0.0.2-r14343
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install postinst prepare setup test unpack
+DEPEND=!<chromeos-base/autotest-chrome-0.0.1-r1788 !<chromeos-base/autotest-tests-0.0.1-r3291 !<chromeos-base/autotest-deps-0.0.2 virtual/autotest-libs virtual/autotest-assistant-libs
+DESCRIPTION=Autotest scripts and tools
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed_19a599e153588e7beddcc62b22f526879f2985cf
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-chrome-0.0.1-r1788 !<chromeos-base/autotest-tests-0.0.1-r3291 !<chromeos-base/autotest-deps-0.0.2 virtual/autotest-libs virtual/autotest-assistant-libs
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6be609c96a16b9ca3df9cd5a588f7c08
diff --git a/metadata/md5-cache/chromeos-base/autotest-9999 b/metadata/md5-cache/chromeos-base/autotest-9999
index ee9b39b..aa698ff 100644
--- a/metadata/md5-cache/chromeos-base/autotest-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-chrome-0.0.1-r1788 !<chromeos-base/autotest-tests-0.0.1-r3291 !<chromeos-base/autotest-deps-0.0.2 virtual/autotest-libs virtual/autotest-assistant-libs
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e8a8c5249534a2ceb9b5c744f26a2e07
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=665b724077a2f497ea838dd3c2db82c4
diff --git a/metadata/md5-cache/chromeos-base/autotest-capability-default-0.0.5-r2 b/metadata/md5-cache/chromeos-base/autotest-capability-default-0.0.5-r4
similarity index 100%
rename from metadata/md5-cache/chromeos-base/autotest-capability-default-0.0.5-r2
rename to metadata/md5-cache/chromeos-base/autotest-capability-default-0.0.5-r4
diff --git a/metadata/md5-cache/chromeos-base/autotest-chrome-0.0.1-r7775 b/metadata/md5-cache/chromeos-base/autotest-chrome-0.0.1-r7775
deleted file mode 100644
index a35b940..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-chrome-0.0.1-r7775
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!chromeos-base/autotest-telemetry !<chromeos-base/autotest-tests-0.0.4 !<chromeos-base/autotest-tests-cellular-0.0.1-r3203 chromeos-base/autotest-deps-graphics chromeos-base/autotest-deps-policy chromeos-base/autotest-deps-webgl-mpd chromeos-base/chromeos-chrome dev-python/mkvparse shill? ( chromeos-base/shill-test-scripts ) chromeos-base/telemetry sys-apps/ethtool vaapi? ( x11-libs/libva ) tests_graphics_WebGLAquarium? ( app-benchmarks/microbenchmarks dev-util/memory-eater-locked ) virtual/autotest-private-libs
-DESCRIPTION=Autotest tests that require chrome_binary_test, or telemetry deps
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +cellular drm_atomic +shill +tpm tpm2 vaapi +tests_accessibility_Sanity +tests_accessibility_ChromeVoxSound +tests_audio_ActiveStreamStress +tests_audio_AudioCorruption +tests_audio_CrasSanity +tests_audio_PlaybackPower +tests_audio_SeekAudioFeedback +tests_autoupdate_EOL +tests_autoupdate_LoginStartUpdateLogout +tests_autoupdate_StartOOBEUpdate +tests_autoupdate_UpdateFromUI +tests_autoupdate_UserData +tests_bluetooth_AdapterReboot +tests_bluetooth_AdapterHealth +tests_bluetooth_IDCheck +tests_bluetooth_RegressionClient +tests_bluetooth_TurnOnOffUI +tests_desktopui_AudioFeedback +tests_desktopui_CheckRlzPingSent +tests_desktopui_ChromeSanity tests_desktopui_ConnectivityDiagnostics +tests_desktopui_MediaAudioFeedback +tests_desktopui_ScreenLocker +tests_desktopui_SimpleLogin +tests_desktopui_UrlFetchWithChromeDriver +tests_display_ClientChameleonConnection +tests_display_DisplayContainEdid +tests_dummy_IdleSuspend +tests_enterprise_FakeEnrollment +tests_enterprise_KioskEnrollment +tests_enterprise_OnlineDemoModeEnrollment +tests_enterprise_PowerManagement +tests_enterprise_RemoraRequisition +tests_graphics_Chrome +tests_graphics_Stress +tests_graphics_VideoRenderingPower +tests_graphics_VTSwitch +tests_graphics_WebGLAquarium +tests_graphics_WebGLManyPlanetsDeep tests_logging_AsanCrash +tests_logging_CrashServices +tests_logging_FeedbackReport +tests_login_ChromeProfileSanitary +tests_login_CryptohomeDataLeak +tests_login_CryptohomeIncognito +tests_login_GaiaLogin +tests_login_LoginSuccess +tests_login_OobeLocalization +tests_login_SavePassword +tests_login_UnicornLogin +tests_longevity_Tracker +tests_network_CastTDLS +tests_network_ChromeWifiConfigure +tests_platform_ChromeCgroups +tests_platform_InitLoginPerf +tests_platform_InputBrightness +tests_platform_InputBrowserNav +tests_platform_InputNewTab +tests_platform_InputScreenshot +tests_platform_InputVolume +tests_platform_LogoutPerf +tests_platform_LowMemoryTest +tests_platform_MouseScrollTest +tests_platform_PrintJob +tests_platform_SessionManagerBlockDevmodeSetting +tests_platform_ScrollTest +tests_policy_AccessibilityTest +tests_policy_ArcAudioCaptureAllowed +tests_policy_ArcBackupRestoreServiceEnabled +tests_policy_ArcExternalStorageDisabled +tests_policy_ArcVideoCaptureAllowed +tests_policy_ArcDisableScreenshots +tests_policy_AudioOutputAllowed +tests_policy_AutotestSanity +tests_policy_ChromeOsLockOnIdleSuspend +tests_policy_CookiesAllowedForUrls +tests_policy_CookiesBlockedForUrls +tests_policy_CookiesSessionOnlyForUrls +tests_policy_DefaultSearchProvider +tests_policy_DeveloperToolsAvailability +tests_policy_DeviceAllowBluetooth +tests_policy_DeviceAutoUpdateDisabled +tests_policy_DeviceCharging +tests_policy_DeviceDockMacAddressSource +tests_policy_DeviceScheduledCharging +tests_policy_DisableScreenshots +tests_policy_DownloadDirectory +tests_policy_DriveDisabled +tests_policy_DeviceEphemeralUsersEnabled +tests_policy_EnrollmentRetainment +tests_policy_EnterpriseForceInstallCustom +tests_policy_ExtensionPolicy +tests_policy_ExternalStorageDisabled +tests_policy_ExternalStorageReadOnly +tests_policy_ForceYouTubeRestrict +tests_policy_ForceYouTubeSafetyMode +tests_policy_KeyPermissions +tests_policy_KioskModeEnabled +tests_policy_NativePrintersBulkAccessMode +tests_policy_PinnedLauncherApps +tests_policy_PlatformKeys +tests_policy_PolicyRefreshRate +tests_policy_PowerManagementIdleSettings +tests_policy_PrintingEnabled +tests_policy_ProxySettings +tests_policy_ReportUploadFrequency +tests_policy_RestoreOnStartupURLs +tests_policy_SystemTimezone +tests_policy_VirtualMachinesAllowed +tests_policy_WilcoOnNonWilcoDevice +tests_policy_WilcoUSBPowershare +tests_power_AudioDetector +tests_power_BatteryDrain +tests_power_Consumption +tests_power_Display +tests_power_FlashVideoSuspend +tests_power_Idle +tests_power_IdleSuspend +tests_power_LoadTest +tests_power_LowMemorySuspend +tests_power_MeetClient +tests_power_Speedometer2 +tests_power_ThermalLoad +tests_power_UiResume +tests_power_VideoCall +tests_power_VideoDetector +tests_power_VideoEncode +tests_power_VideoPlayback +tests_power_VideoSuspend +tests_power_WebGL +tests_power_WifiIdle +tests_security_BundledExtensions +tests_telemetry_AFDOGenerateClient +tests_telemetry_Sanity +tests_telemetry_UnitTests +tests_telemetry_UnitTestsServer +tests_touch_GestureNav +tests_touch_MouseScroll +tests_touch_ScrollDirection +tests_touch_TapSettings +tests_touch_TabSwitch +tests_touch_TouchscreenScroll +tests_touch_TouchscreenTaps +tests_touch_TouchscreenZoom +tests_touch_StylusTaps +tests_video_AVAnalysis cellular? ( +tests_cellular_ModemControl +tests_cellular_SuspendResume +tests_network_ChromeCellularEndToEnd +tests_network_ChromeCellularNetworkPresent +tests_network_ChromeCellularNetworkProperties +tests_network_ChromeCellularSmokeTest ) shill? ( +tests_network_ChromeWifiEndToEnd +tests_network_FirewallHolePunch +tests_network_RackWiFiConnect +tests_network_RoamSuspendEndToEnd +tests_network_RoamWifiEndToEnd +tests_policy_GlobalNetworkSettings +tests_policy_WiFiAutoconnect +tests_policy_WiFiPrecedence +tests_policy_WiFiTypes ) tpm? ( +tests_platform_Pkcs11InitOnLogin ) tpm2? ( +tests_platform_Pkcs11InitOnLogin ) +tests_graphics_Idle drm_atomic? ( +tests_graphics_HwOverlays ) cros_host cros_workon_tree_8a5e4b77219713e15dd9d0c5567b70e2e344a509 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!chromeos-base/autotest-telemetry !<chromeos-base/autotest-tests-0.0.4 !<chromeos-base/autotest-tests-cellular-0.0.1-r3203 chromeos-base/autotest-deps-graphics chromeos-base/autotest-deps-policy chromeos-base/autotest-deps-webgl-mpd chromeos-base/chromeos-chrome dev-python/mkvparse shill? ( chromeos-base/shill-test-scripts ) chromeos-base/telemetry sys-apps/ethtool vaapi? ( x11-libs/libva ) tests_graphics_WebGLAquarium? ( app-benchmarks/microbenchmarks dev-util/memory-eater-locked ) virtual/autotest-private-libs autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0e51d83a342f8091df30f9bf299f8e91
diff --git a/metadata/md5-cache/chromeos-base/autotest-chrome-0.0.1-r7821 b/metadata/md5-cache/chromeos-base/autotest-chrome-0.0.1-r7821
new file mode 100644
index 0000000..212fe5d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-chrome-0.0.1-r7821
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!chromeos-base/autotest-telemetry !<chromeos-base/autotest-tests-0.0.4 !<chromeos-base/autotest-tests-cellular-0.0.1-r3203 chromeos-base/autotest-deps-graphics chromeos-base/autotest-deps-policy chromeos-base/autotest-deps-webgl-mpd chromeos-base/chromeos-chrome dev-python/mkvparse shill? ( chromeos-base/shill-test-scripts ) chromeos-base/telemetry sys-apps/ethtool vaapi? ( x11-libs/libva ) tests_graphics_WebGLAquarium? ( app-benchmarks/microbenchmarks dev-util/memory-eater-locked ) virtual/autotest-private-libs
+DESCRIPTION=Autotest tests that require chrome_binary_test, or telemetry deps
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +cellular drm_atomic +shill +tpm tpm2 vaapi +tests_accessibility_Check +tests_accessibility_ChromeVoxSound +tests_audio_ActiveStreamStress +tests_audio_AudioCorruption +tests_audio_CrasCheck +tests_audio_PlaybackPower +tests_audio_SeekAudioFeedback +tests_autoupdate_EOL +tests_autoupdate_LoginStartUpdateLogout +tests_autoupdate_StartOOBEUpdate +tests_autoupdate_UpdateFromUI +tests_autoupdate_UserData +tests_bluetooth_AdapterReboot +tests_bluetooth_AdapterHealth +tests_bluetooth_IDCheck +tests_bluetooth_RegressionClient +tests_bluetooth_TurnOnOffUI +tests_desktopui_AudioFeedback +tests_desktopui_CheckRlzPingSent +tests_desktopui_ChromeCheck tests_desktopui_ConnectivityDiagnostics +tests_desktopui_MediaAudioFeedback +tests_desktopui_ScreenLocker +tests_desktopui_SimpleLogin +tests_desktopui_UrlFetchWithChromeDriver +tests_display_ClientChameleonConnection +tests_display_DisplayContainEdid +tests_enterprise_FakeEnrollment +tests_enterprise_KioskEnrollment +tests_enterprise_OnlineDemoModeEnrollment +tests_enterprise_PowerManagement +tests_enterprise_RemoraRequisition +tests_graphics_Chrome +tests_graphics_Stress +tests_graphics_VideoRenderingPower +tests_graphics_VTSwitch +tests_graphics_WebGLAquarium +tests_graphics_WebGLManyPlanetsDeep tests_logging_AsanCrash +tests_logging_CrashServices +tests_logging_FeedbackReport +tests_login_ChromeProfileSanitary +tests_login_CryptohomeDataLeak +tests_login_CryptohomeIncognito +tests_login_GaiaLogin +tests_login_LoginSuccess +tests_login_OobeLocalization +tests_login_SavePassword +tests_login_UnicornLogin +tests_login_UserPolicyKeys +tests_longevity_Tracker +tests_network_CastTDLS +tests_network_ChromeWifiConfigure +tests_platform_ChromeCgroups +tests_platform_InitLoginPerf +tests_platform_InputBrightness +tests_platform_InputBrowserNav +tests_platform_InputNewTab +tests_platform_InputScreenshot +tests_platform_InputVolume +tests_platform_LogoutPerf +tests_platform_LowMemoryTest +tests_platform_MouseScrollTest +tests_platform_PrintJob +tests_platform_SessionManagerBlockDevmodeSetting +tests_platform_ScrollTest +tests_policy_ArcAudioCaptureAllowed +tests_policy_ArcBackupRestoreServiceEnabled +tests_policy_ArcExternalStorageDisabled +tests_policy_ArcVideoCaptureAllowed +tests_policy_ArcDisableScreenshots +tests_policy_AudioOutputAllowed +tests_policy_AutotestCheck +tests_policy_ChromeOsLockOnIdleSuspend +tests_policy_CookiesAllowedForUrls +tests_policy_CookiesBlockedForUrls +tests_policy_CookiesSessionOnlyForUrls +tests_policy_DefaultSearchProvider +tests_policy_DeveloperToolsAvailability +tests_policy_DeviceAllowBluetooth +tests_policy_DeviceAutoUpdateDisabled +tests_policy_DeviceCharging +tests_policy_DeviceDockMacAddressSource +tests_policy_DeviceScheduledCharging +tests_policy_DisableScreenshots +tests_policy_DownloadDirectory +tests_policy_DriveDisabled +tests_policy_DeviceEphemeralUsersEnabled +tests_policy_EnrollmentRetainment +tests_policy_EnterpriseForceInstallCustom +tests_policy_ExtensionPolicy +tests_policy_ExternalStorageDisabled +tests_policy_ExternalStorageReadOnly +tests_policy_ForceYouTubeRestrict +tests_policy_ForceYouTubeSafetyMode +tests_policy_KeyPermissions +tests_policy_KioskModeEnabled +tests_policy_NativePrintersBulkAccessMode +tests_policy_PinnedLauncherApps +tests_policy_PlatformKeys +tests_policy_PolicyRefreshRate +tests_policy_PowerManagementIdleSettings +tests_policy_PrintingEnabled +tests_policy_ProxySettings +tests_policy_ReportUploadFrequency +tests_policy_RestoreOnStartupURLs +tests_policy_SystemTimezone +tests_policy_VirtualMachinesAllowed +tests_policy_WilcoOnNonWilcoDevice +tests_policy_WilcoUSBPowershare +tests_power_AudioDetector +tests_power_BatteryDrain +tests_power_Consumption +tests_power_Display +tests_power_FlashVideoSuspend +tests_power_Idle +tests_power_IdleSuspend +tests_power_LoadTest +tests_power_LowMemorySuspend +tests_power_MeetClient +tests_power_Speedometer2 +tests_power_ThermalLoad +tests_power_UiResume +tests_power_VideoCall +tests_power_VideoDetector +tests_power_VideoEncode +tests_power_VideoPlayback +tests_power_VideoSuspend +tests_power_WebGL +tests_power_WifiIdle +tests_security_BundledExtensions +tests_stub_IdleSuspend +tests_telemetry_AFDOGenerateClient +tests_telemetry_Check +tests_telemetry_UnitTests +tests_telemetry_UnitTestsServer +tests_touch_GestureNav +tests_touch_MouseScroll +tests_touch_ScrollDirection +tests_touch_TapSettings +tests_touch_TabSwitch +tests_touch_TouchscreenScroll +tests_touch_TouchscreenTaps +tests_touch_TouchscreenZoom +tests_touch_StylusTaps +tests_video_AVAnalysis cellular? ( +tests_cellular_ModemControl +tests_cellular_SuspendResume +tests_network_ChromeCellularEndToEnd +tests_network_ChromeCellularNetworkPresent +tests_network_ChromeCellularNetworkProperties +tests_network_ChromeCellularSmokeTest ) shill? ( +tests_network_ChromeWifiEndToEnd +tests_network_FirewallHolePunch +tests_network_RackWiFiConnect +tests_network_RoamSuspendEndToEnd +tests_network_RoamWifiEndToEnd +tests_policy_GlobalNetworkSettings +tests_policy_WiFiAutoconnect +tests_policy_WiFiPrecedence +tests_policy_WiFiTypes ) tpm? ( +tests_platform_Pkcs11InitOnLogin ) tpm2? ( +tests_platform_Pkcs11InitOnLogin ) +tests_graphics_Idle drm_atomic? ( +tests_graphics_HwOverlays ) cros_host cros_workon_tree_6973c3a9a86e204afe2b17cab6b9e3e258fd648d +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!chromeos-base/autotest-telemetry !<chromeos-base/autotest-tests-0.0.4 !<chromeos-base/autotest-tests-cellular-0.0.1-r3203 chromeos-base/autotest-deps-graphics chromeos-base/autotest-deps-policy chromeos-base/autotest-deps-webgl-mpd chromeos-base/chromeos-chrome dev-python/mkvparse shill? ( chromeos-base/shill-test-scripts ) chromeos-base/telemetry sys-apps/ethtool vaapi? ( x11-libs/libva ) tests_graphics_WebGLAquarium? ( app-benchmarks/microbenchmarks dev-util/memory-eater-locked ) virtual/autotest-private-libs autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=fdacb798d70141b6b303245428d28758
diff --git a/metadata/md5-cache/chromeos-base/autotest-chrome-9999 b/metadata/md5-cache/chromeos-base/autotest-chrome-9999
index b74398c..51871b1 100644
--- a/metadata/md5-cache/chromeos-base/autotest-chrome-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-chrome-9999
@@ -3,11 +3,11 @@
 DESCRIPTION=Autotest tests that require chrome_binary_test, or telemetry deps
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +cellular drm_atomic +shill +tpm tpm2 vaapi +tests_accessibility_Sanity +tests_accessibility_ChromeVoxSound +tests_audio_ActiveStreamStress +tests_audio_AudioCorruption +tests_audio_CrasSanity +tests_audio_PlaybackPower +tests_audio_SeekAudioFeedback +tests_autoupdate_EOL +tests_autoupdate_LoginStartUpdateLogout +tests_autoupdate_StartOOBEUpdate +tests_autoupdate_UpdateFromUI +tests_autoupdate_UserData +tests_bluetooth_AdapterReboot +tests_bluetooth_AdapterHealth +tests_bluetooth_IDCheck +tests_bluetooth_RegressionClient +tests_bluetooth_TurnOnOffUI +tests_desktopui_AudioFeedback +tests_desktopui_CheckRlzPingSent +tests_desktopui_ChromeSanity tests_desktopui_ConnectivityDiagnostics +tests_desktopui_MediaAudioFeedback +tests_desktopui_ScreenLocker +tests_desktopui_SimpleLogin +tests_desktopui_UrlFetchWithChromeDriver +tests_display_ClientChameleonConnection +tests_display_DisplayContainEdid +tests_dummy_IdleSuspend +tests_enterprise_FakeEnrollment +tests_enterprise_KioskEnrollment +tests_enterprise_OnlineDemoModeEnrollment +tests_enterprise_PowerManagement +tests_enterprise_RemoraRequisition +tests_graphics_Chrome +tests_graphics_Stress +tests_graphics_VideoRenderingPower +tests_graphics_VTSwitch +tests_graphics_WebGLAquarium +tests_graphics_WebGLManyPlanetsDeep tests_logging_AsanCrash +tests_logging_CrashServices +tests_logging_FeedbackReport +tests_login_ChromeProfileSanitary +tests_login_CryptohomeDataLeak +tests_login_CryptohomeIncognito +tests_login_GaiaLogin +tests_login_LoginSuccess +tests_login_OobeLocalization +tests_login_SavePassword +tests_login_UnicornLogin +tests_longevity_Tracker +tests_network_CastTDLS +tests_network_ChromeWifiConfigure +tests_platform_ChromeCgroups +tests_platform_InitLoginPerf +tests_platform_InputBrightness +tests_platform_InputBrowserNav +tests_platform_InputNewTab +tests_platform_InputScreenshot +tests_platform_InputVolume +tests_platform_LogoutPerf +tests_platform_LowMemoryTest +tests_platform_MouseScrollTest +tests_platform_PrintJob +tests_platform_SessionManagerBlockDevmodeSetting +tests_platform_ScrollTest +tests_policy_AccessibilityTest +tests_policy_ArcAudioCaptureAllowed +tests_policy_ArcBackupRestoreServiceEnabled +tests_policy_ArcExternalStorageDisabled +tests_policy_ArcVideoCaptureAllowed +tests_policy_ArcDisableScreenshots +tests_policy_AudioOutputAllowed +tests_policy_AutotestSanity +tests_policy_ChromeOsLockOnIdleSuspend +tests_policy_CookiesAllowedForUrls +tests_policy_CookiesBlockedForUrls +tests_policy_CookiesSessionOnlyForUrls +tests_policy_DefaultSearchProvider +tests_policy_DeveloperToolsAvailability +tests_policy_DeviceAllowBluetooth +tests_policy_DeviceAutoUpdateDisabled +tests_policy_DeviceCharging +tests_policy_DeviceDockMacAddressSource +tests_policy_DeviceScheduledCharging +tests_policy_DisableScreenshots +tests_policy_DownloadDirectory +tests_policy_DriveDisabled +tests_policy_DeviceEphemeralUsersEnabled +tests_policy_EnrollmentRetainment +tests_policy_EnterpriseForceInstallCustom +tests_policy_ExtensionPolicy +tests_policy_ExternalStorageDisabled +tests_policy_ExternalStorageReadOnly +tests_policy_ForceYouTubeRestrict +tests_policy_ForceYouTubeSafetyMode +tests_policy_KeyPermissions +tests_policy_KioskModeEnabled +tests_policy_NativePrintersBulkAccessMode +tests_policy_PinnedLauncherApps +tests_policy_PlatformKeys +tests_policy_PolicyRefreshRate +tests_policy_PowerManagementIdleSettings +tests_policy_PrintingEnabled +tests_policy_ProxySettings +tests_policy_ReportUploadFrequency +tests_policy_RestoreOnStartupURLs +tests_policy_SystemTimezone +tests_policy_VirtualMachinesAllowed +tests_policy_WilcoOnNonWilcoDevice +tests_policy_WilcoUSBPowershare +tests_power_AudioDetector +tests_power_BatteryDrain +tests_power_Consumption +tests_power_Display +tests_power_FlashVideoSuspend +tests_power_Idle +tests_power_IdleSuspend +tests_power_LoadTest +tests_power_LowMemorySuspend +tests_power_MeetClient +tests_power_Speedometer2 +tests_power_ThermalLoad +tests_power_UiResume +tests_power_VideoCall +tests_power_VideoDetector +tests_power_VideoEncode +tests_power_VideoPlayback +tests_power_VideoSuspend +tests_power_WebGL +tests_power_WifiIdle +tests_security_BundledExtensions +tests_telemetry_AFDOGenerateClient +tests_telemetry_Sanity +tests_telemetry_UnitTests +tests_telemetry_UnitTestsServer +tests_touch_GestureNav +tests_touch_MouseScroll +tests_touch_ScrollDirection +tests_touch_TapSettings +tests_touch_TabSwitch +tests_touch_TouchscreenScroll +tests_touch_TouchscreenTaps +tests_touch_TouchscreenZoom +tests_touch_StylusTaps +tests_video_AVAnalysis cellular? ( +tests_cellular_ModemControl +tests_cellular_SuspendResume +tests_network_ChromeCellularEndToEnd +tests_network_ChromeCellularNetworkPresent +tests_network_ChromeCellularNetworkProperties +tests_network_ChromeCellularSmokeTest ) shill? ( +tests_network_ChromeWifiEndToEnd +tests_network_FirewallHolePunch +tests_network_RackWiFiConnect +tests_network_RoamSuspendEndToEnd +tests_network_RoamWifiEndToEnd +tests_policy_GlobalNetworkSettings +tests_policy_WiFiAutoconnect +tests_policy_WiFiPrecedence +tests_policy_WiFiTypes ) tpm? ( +tests_platform_Pkcs11InitOnLogin ) tpm2? ( +tests_platform_Pkcs11InitOnLogin ) +tests_graphics_Idle drm_atomic? ( +tests_graphics_HwOverlays ) cros_host cros_workon_tree_ +buildcheck autotest opengles
+IUSE=+autotest +cellular drm_atomic +shill +tpm tpm2 vaapi +tests_accessibility_Check +tests_accessibility_ChromeVoxSound +tests_audio_ActiveStreamStress +tests_audio_AudioCorruption +tests_audio_CrasCheck +tests_audio_PlaybackPower +tests_audio_SeekAudioFeedback +tests_autoupdate_EOL +tests_autoupdate_LoginStartUpdateLogout +tests_autoupdate_StartOOBEUpdate +tests_autoupdate_UpdateFromUI +tests_autoupdate_UserData +tests_bluetooth_AdapterReboot +tests_bluetooth_AdapterHealth +tests_bluetooth_IDCheck +tests_bluetooth_RegressionClient +tests_bluetooth_TurnOnOffUI +tests_desktopui_AudioFeedback +tests_desktopui_CheckRlzPingSent +tests_desktopui_ChromeCheck tests_desktopui_ConnectivityDiagnostics +tests_desktopui_MediaAudioFeedback +tests_desktopui_ScreenLocker +tests_desktopui_SimpleLogin +tests_desktopui_UrlFetchWithChromeDriver +tests_display_ClientChameleonConnection +tests_display_DisplayContainEdid +tests_enterprise_FakeEnrollment +tests_enterprise_KioskEnrollment +tests_enterprise_OnlineDemoModeEnrollment +tests_enterprise_PowerManagement +tests_enterprise_RemoraRequisition +tests_graphics_Chrome +tests_graphics_Stress +tests_graphics_VideoRenderingPower +tests_graphics_VTSwitch +tests_graphics_WebGLAquarium +tests_graphics_WebGLManyPlanetsDeep tests_logging_AsanCrash +tests_logging_CrashServices +tests_logging_FeedbackReport +tests_login_ChromeProfileSanitary +tests_login_CryptohomeDataLeak +tests_login_CryptohomeIncognito +tests_login_GaiaLogin +tests_login_LoginSuccess +tests_login_OobeLocalization +tests_login_SavePassword +tests_login_UnicornLogin +tests_login_UserPolicyKeys +tests_longevity_Tracker +tests_network_CastTDLS +tests_network_ChromeWifiConfigure +tests_platform_ChromeCgroups +tests_platform_InitLoginPerf +tests_platform_InputBrightness +tests_platform_InputBrowserNav +tests_platform_InputNewTab +tests_platform_InputScreenshot +tests_platform_InputVolume +tests_platform_LogoutPerf +tests_platform_LowMemoryTest +tests_platform_MouseScrollTest +tests_platform_PrintJob +tests_platform_SessionManagerBlockDevmodeSetting +tests_platform_ScrollTest +tests_policy_ArcAudioCaptureAllowed +tests_policy_ArcBackupRestoreServiceEnabled +tests_policy_ArcExternalStorageDisabled +tests_policy_ArcVideoCaptureAllowed +tests_policy_ArcDisableScreenshots +tests_policy_AudioOutputAllowed +tests_policy_AutotestCheck +tests_policy_ChromeOsLockOnIdleSuspend +tests_policy_CookiesAllowedForUrls +tests_policy_CookiesBlockedForUrls +tests_policy_CookiesSessionOnlyForUrls +tests_policy_DefaultSearchProvider +tests_policy_DeveloperToolsAvailability +tests_policy_DeviceAllowBluetooth +tests_policy_DeviceAutoUpdateDisabled +tests_policy_DeviceCharging +tests_policy_DeviceDockMacAddressSource +tests_policy_DeviceScheduledCharging +tests_policy_DisableScreenshots +tests_policy_DownloadDirectory +tests_policy_DriveDisabled +tests_policy_DeviceEphemeralUsersEnabled +tests_policy_EnrollmentRetainment +tests_policy_EnterpriseForceInstallCustom +tests_policy_ExtensionPolicy +tests_policy_ExternalStorageDisabled +tests_policy_ExternalStorageReadOnly +tests_policy_ForceYouTubeRestrict +tests_policy_ForceYouTubeSafetyMode +tests_policy_KeyPermissions +tests_policy_KioskModeEnabled +tests_policy_NativePrintersBulkAccessMode +tests_policy_PinnedLauncherApps +tests_policy_PlatformKeys +tests_policy_PolicyRefreshRate +tests_policy_PowerManagementIdleSettings +tests_policy_PrintingEnabled +tests_policy_ProxySettings +tests_policy_ReportUploadFrequency +tests_policy_RestoreOnStartupURLs +tests_policy_SystemTimezone +tests_policy_VirtualMachinesAllowed +tests_policy_WilcoOnNonWilcoDevice +tests_policy_WilcoUSBPowershare +tests_power_AudioDetector +tests_power_BatteryDrain +tests_power_Consumption +tests_power_Display +tests_power_FlashVideoSuspend +tests_power_Idle +tests_power_IdleSuspend +tests_power_LoadTest +tests_power_LowMemorySuspend +tests_power_MeetClient +tests_power_Speedometer2 +tests_power_ThermalLoad +tests_power_UiResume +tests_power_VideoCall +tests_power_VideoDetector +tests_power_VideoEncode +tests_power_VideoPlayback +tests_power_VideoSuspend +tests_power_WebGL +tests_power_WifiIdle +tests_security_BundledExtensions +tests_stub_IdleSuspend +tests_telemetry_AFDOGenerateClient +tests_telemetry_Check +tests_telemetry_UnitTests +tests_telemetry_UnitTestsServer +tests_touch_GestureNav +tests_touch_MouseScroll +tests_touch_ScrollDirection +tests_touch_TapSettings +tests_touch_TabSwitch +tests_touch_TouchscreenScroll +tests_touch_TouchscreenTaps +tests_touch_TouchscreenZoom +tests_touch_StylusTaps +tests_video_AVAnalysis cellular? ( +tests_cellular_ModemControl +tests_cellular_SuspendResume +tests_network_ChromeCellularEndToEnd +tests_network_ChromeCellularNetworkPresent +tests_network_ChromeCellularNetworkProperties +tests_network_ChromeCellularSmokeTest ) shill? ( +tests_network_ChromeWifiEndToEnd +tests_network_FirewallHolePunch +tests_network_RackWiFiConnect +tests_network_RoamSuspendEndToEnd +tests_network_RoamWifiEndToEnd +tests_policy_GlobalNetworkSettings +tests_policy_WiFiAutoconnect +tests_policy_WiFiPrecedence +tests_policy_WiFiTypes ) tpm? ( +tests_platform_Pkcs11InitOnLogin ) tpm2? ( +tests_platform_Pkcs11InitOnLogin ) +tests_graphics_Idle drm_atomic? ( +tests_graphics_HwOverlays ) cros_host cros_workon_tree_ +buildcheck autotest opengles
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=!chromeos-base/autotest-telemetry !<chromeos-base/autotest-tests-0.0.4 !<chromeos-base/autotest-tests-cellular-0.0.1-r3203 chromeos-base/autotest-deps-graphics chromeos-base/autotest-deps-policy chromeos-base/autotest-deps-webgl-mpd chromeos-base/chromeos-chrome dev-python/mkvparse shill? ( chromeos-base/shill-test-scripts ) chromeos-base/telemetry sys-apps/ethtool vaapi? ( x11-libs/libva ) tests_graphics_WebGLAquarium? ( app-benchmarks/microbenchmarks dev-util/memory-eater-locked ) virtual/autotest-private-libs autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=8a6d0cf00b5e3590277ce9f22671920a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=c66dc74f363aeacc0ddf78854919bf9f
diff --git a/metadata/md5-cache/chromeos-base/autotest-client-0.0.1 b/metadata/md5-cache/chromeos-base/autotest-client-0.0.1
index e0f125b..72b2edc 100644
--- a/metadata/md5-cache/chromeos-base/autotest-client-0.0.1
+++ b/metadata/md5-cache/chromeos-base/autotest-client-0.0.1
@@ -5,7 +5,7 @@
 HOMEPAGE=http://src.chromium.org
 IUSE=-moblab
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=GPL-2
 SLOT=0
 _eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda
-_md5_=1a29400bc1efd85db279a02503ee0a19
+_md5_=ecd612c3f3ab436eda12731ae6b35df2
diff --git a/metadata/md5-cache/chromeos-base/autotest-client-0.0.1-r2 b/metadata/md5-cache/chromeos-base/autotest-client-0.0.1-r2
deleted file mode 100644
index e0f125b..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-client-0.0.1-r2
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=install
-DEPEND=chromeos-base/autotest
-DESCRIPTION=Client portion of autotest installed at image creation time
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-IUSE=-moblab
-KEYWORDS=*
-LICENSE=BSD
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda
-_md5_=1a29400bc1efd85db279a02503ee0a19
diff --git a/metadata/md5-cache/chromeos-base/autotest-client-0.0.1-r3 b/metadata/md5-cache/chromeos-base/autotest-client-0.0.1-r3
new file mode 100644
index 0000000..72b2edc
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-client-0.0.1-r3
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install
+DEPEND=chromeos-base/autotest
+DESCRIPTION=Client portion of autotest installed at image creation time
+EAPI=4
+HOMEPAGE=http://src.chromium.org
+IUSE=-moblab
+KEYWORDS=*
+LICENSE=GPL-2
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda
+_md5_=ecd612c3f3ab436eda12731ae6b35df2
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-0.0.4-r13444 b/metadata/md5-cache/chromeos-base/autotest-deps-0.0.4-r13444
deleted file mode 100644
index ea99673..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-deps-0.0.4-r13444
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=dev-cpp/gtest:= dev-libs/libnl:0 >=dev-python/grpcio-1.19 >=dev-python/psutil-5.5.0 sys-devel/binutils
-DESCRIPTION=Autotest common deps
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=dev-cpp/gtest:= dev-libs/libnl:0 >=dev-python/grpcio-1.19 >=dev-python/psutil-5.5.0 sys-devel/binutils autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=dc23f82e088a776b293f53c768835d50
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-0.0.4-r14291 b/metadata/md5-cache/chromeos-base/autotest-deps-0.0.4-r14291
new file mode 100644
index 0000000..ecb25c7
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-0.0.4-r14291
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=dev-cpp/gtest:= dev-libs/libnl:0 >=dev-python/grpcio-1.19 >=dev-python/psutil-5.5.0 sys-devel/binutils chromeos-base/cros-config-api
+DESCRIPTION=Autotest common deps
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=dev-cpp/gtest:= dev-libs/libnl:0 >=dev-python/grpcio-1.19 >=dev-python/psutil-5.5.0 sys-devel/binutils autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=7f65df6a31af18136d9ae84327da18f7
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-9999 b/metadata/md5-cache/chromeos-base/autotest-deps-9999
index e1453c1..d0befe7 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=dev-cpp/gtest:= dev-libs/libnl:0 >=dev-python/grpcio-1.19 >=dev-python/psutil-5.5.0 sys-devel/binutils
+DEPEND=dev-cpp/gtest:= dev-libs/libnl:0 >=dev-python/grpcio-1.19 >=dev-python/psutil-5.5.0 sys-devel/binutils chromeos-base/cros-config-api
 DESCRIPTION=Autotest common deps
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=dev-cpp/gtest:= dev-libs/libnl:0 >=dev-python/grpcio-1.19 >=dev-python/psutil-5.5.0 sys-devel/binutils autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=bf03bb6aeb8f585f5f56b359711339fd
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=1f97760339d0ad970a03ed8e493c178a
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-camera-hal3-0.0.1-r5465 b/metadata/md5-cache/chromeos-base/autotest-deps-camera-hal3-0.0.1-r5465
deleted file mode 100644
index b86204c..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-deps-camera-hal3-0.0.1-r5465
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=media-libs/cros-camera-test
-DESCRIPTION=Dependencies for camera_HAL3 autotest
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=media-libs/cros-camera-test autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=06a36bc5b2c54242c2a096cee994b80d
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-camera-hal3-0.0.1-r6311 b/metadata/md5-cache/chromeos-base/autotest-deps-camera-hal3-0.0.1-r6311
new file mode 100644
index 0000000..7bb20ff
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-camera-hal3-0.0.1-r6311
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=media-libs/cros-camera-test
+DESCRIPTION=Dependencies for camera_HAL3 autotest
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=media-libs/cros-camera-test autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=855b0f80c48861b64e892b22c1d11ca3
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-camera-hal3-9999 b/metadata/md5-cache/chromeos-base/autotest-deps-camera-hal3-9999
index 82e0e8c..7957f56 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-camera-hal3-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-camera-hal3-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=media-libs/cros-camera-test autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=c0ce99eda3080dbb61e8b861296db421
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-cellular-0.0.1-r8254 b/metadata/md5-cache/chromeos-base/autotest-deps-cellular-0.0.1-r8254
deleted file mode 100644
index efb13a4..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-deps-cellular-0.0.1-r8254
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-deps-0.0.3 virtual/libgudev chromeos-base/autotest-fakemodem-conf dev-libs/dbus-glib
-DESCRIPTION=Autotest cellular deps
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-deps-0.0.3 virtual/libgudev chromeos-base/autotest-fakemodem-conf dev-libs/dbus-glib autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8f575fda8414b1fac045fe6eae8ad5e4
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-cellular-0.0.1-r9100 b/metadata/md5-cache/chromeos-base/autotest-deps-cellular-0.0.1-r9100
new file mode 100644
index 0000000..ec14833
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-cellular-0.0.1-r9100
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-deps-0.0.3 virtual/libgudev chromeos-base/autotest-fakemodem-conf dev-libs/dbus-glib
+DESCRIPTION=Autotest cellular deps
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-deps-0.0.3 virtual/libgudev chromeos-base/autotest-fakemodem-conf dev-libs/dbus-glib autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4c096a0ca3896c038b892c7c9d7b9df6
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-cellular-9999 b/metadata/md5-cache/chromeos-base/autotest-deps-cellular-9999
index c9215a3..1f01c45 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-cellular-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-cellular-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-deps-0.0.3 virtual/libgudev chromeos-base/autotest-fakemodem-conf dev-libs/dbus-glib autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=986106e8edf172edd0aaa5dd28adbf99
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-dbus-0.0.1-r4138 b/metadata/md5-cache/chromeos-base/autotest-deps-dbus-0.0.1-r4138
deleted file mode 100644
index 665246c..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-deps-dbus-0.0.1-r4138
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=chromeos-base/system_api dev-libs/protobuf:=
-DESCRIPTION=Autotest D-Bus deps
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e0eb98093a56876cc35c2ea34d2227cf
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-dbus-0.0.1-r4984 b/metadata/md5-cache/chromeos-base/autotest-deps-dbus-0.0.1-r4984
new file mode 100644
index 0000000..89418d7
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-dbus-0.0.1-r4984
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=chromeos-base/system_api dev-libs/protobuf:=
+DESCRIPTION=Autotest D-Bus deps
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=947c8584f68a16b7dcd55b1e1223834d
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-dbus-9999 b/metadata/md5-cache/chromeos-base/autotest-deps-dbus-9999
index ea8bff2..5aa2576 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-dbus-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-dbus-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=2eee34ef0be6245d6af2a9170e07b3db
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-glmark2-0.0.1-r8625 b/metadata/md5-cache/chromeos-base/autotest-deps-glmark2-0.0.1-r8625
deleted file mode 100644
index 2088dc7..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-deps-glmark2-0.0.1-r8625
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare setup unpack
-DEPEND=app-benchmarks/glmark2
-DESCRIPTION=Autotest glmark2 dependency
-EAPI=7
-HOMEPAGE=https://launchpad.net/glmark2
-IUSE=-asan +autotest asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-3
-PROPERTIES=live
-RDEPEND=app-benchmarks/glmark2 autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d9051a97136b45c1d7ac2be195679cf7
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-glmark2-0.0.1-r9471 b/metadata/md5-cache/chromeos-base/autotest-deps-glmark2-0.0.1-r9471
new file mode 100644
index 0000000..2c11ffc
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-glmark2-0.0.1-r9471
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst prepare setup unpack
+DEPEND=app-benchmarks/glmark2
+DESCRIPTION=Autotest glmark2 dependency
+EAPI=7
+HOMEPAGE=https://launchpad.net/glmark2
+IUSE=-asan +autotest asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-3
+PROPERTIES=live
+RDEPEND=app-benchmarks/glmark2 autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=591d457c8beaab9509f0e183a981191d
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-glmark2-9999 b/metadata/md5-cache/chromeos-base/autotest-deps-glmark2-9999
index aec3ebd..49c4505 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-glmark2-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-glmark2-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=app-benchmarks/glmark2 autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f136c14950040415964dab3b823bfc94
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-graphics-0.0.1-r8605 b/metadata/md5-cache/chromeos-base/autotest-deps-graphics-0.0.1-r8605
deleted file mode 100644
index 85ce5dd..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-deps-graphics-0.0.1-r8605
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-deps-0.0.4
-DESCRIPTION=Dependencies for graphics autotests
-EAPI=4
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-deps-0.0.4 autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e2159cd1ce7a3439727834a31340dc70
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-graphics-0.0.1-r9451 b/metadata/md5-cache/chromeos-base/autotest-deps-graphics-0.0.1-r9451
new file mode 100644
index 0000000..ad8c391
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-graphics-0.0.1-r9451
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-deps-0.0.4
+DESCRIPTION=Dependencies for graphics autotests
+EAPI=4
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-deps-0.0.4 autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=3e44963cc3a294699246733343141e09
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-graphics-9999 b/metadata/md5-cache/chromeos-base/autotest-deps-graphics-9999
index 7f9c0a4..4c60ca8 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-graphics-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-graphics-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-deps-0.0.4 autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=c8b3de1f5d19d829d7736317b66d0573
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-p2p-0.0.1-r8217 b/metadata/md5-cache/chromeos-base/autotest-deps-p2p-0.0.1-r8217
deleted file mode 100644
index 0ada1c7..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-deps-p2p-0.0.1-r8217
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-deps-0.0.4 dev-python/dpkt
-DESCRIPTION=Autotest p2p deps
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-deps-0.0.4 dev-python/dpkt autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a2910437866c8759824b2aea9dd5d374
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-p2p-0.0.1-r9063 b/metadata/md5-cache/chromeos-base/autotest-deps-p2p-0.0.1-r9063
new file mode 100644
index 0000000..7be831b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-p2p-0.0.1-r9063
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-deps-0.0.4 dev-python/dpkt
+DESCRIPTION=Autotest p2p deps
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-deps-0.0.4 dev-python/dpkt autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=c487ec092cdf9ef6ee97cffa2928e95f
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-p2p-9999 b/metadata/md5-cache/chromeos-base/autotest-deps-p2p-9999
index eb13115..d0eaa10 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-p2p-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-p2p-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-deps-0.0.4 dev-python/dpkt autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=615bf3cb9774363f9d043c5ef73d6e09
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-policy-0.0.1-r4214 b/metadata/md5-cache/chromeos-base/autotest-deps-policy-0.0.1-r4214
deleted file mode 100644
index e2096ea..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-deps-policy-0.0.1-r4214
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=>=chromeos-base/protofiles-0.0.39:= chromeos-base/system_api dev-libs/protobuf:=
-DESCRIPTION=Autotest policy deps
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0b31f220aeddf2576c64e1a880eed61a
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-policy-0.0.1-r5060 b/metadata/md5-cache/chromeos-base/autotest-deps-policy-0.0.1-r5060
new file mode 100644
index 0000000..3be7f12
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-policy-0.0.1-r5060
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=>=chromeos-base/protofiles-0.0.43:= chromeos-base/system_api dev-libs/protobuf:=
+DESCRIPTION=Autotest policy deps
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=021f0bebd76f9b8e46c5853171c7e563
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-policy-9999 b/metadata/md5-cache/chromeos-base/autotest-deps-policy-9999
index 695fbb0..efa7ed8 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-policy-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-policy-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=>=chromeos-base/protofiles-0.0.39:= chromeos-base/system_api dev-libs/protobuf:=
+DEPEND=>=chromeos-base/protofiles-0.0.43:= chromeos-base/system_api dev-libs/protobuf:=
 DESCRIPTION=Autotest policy deps
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c459cf27414f230a2127cebd625430ef
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=7fd38b840d7d4461f58e5da3419c760e
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-touchpad-0.0.1-r10073 b/metadata/md5-cache/chromeos-base/autotest-deps-touchpad-0.0.1-r10073
new file mode 100644
index 0000000..dec852f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-touchpad-0.0.1-r10073
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=x11-drivers/touchpad-tests chromeos-base/touch_firmware_test chromeos-base/mttools
+DESCRIPTION=Autotest touchpad deps
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=x11-drivers/touchpad-tests chromeos-base/touch_firmware_test chromeos-base/mttools autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f973fb421cffff20ec7e20fa088efdbc
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-touchpad-0.0.1-r9227 b/metadata/md5-cache/chromeos-base/autotest-deps-touchpad-0.0.1-r9227
deleted file mode 100644
index a3e0dbf..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-deps-touchpad-0.0.1-r9227
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=x11-drivers/touchpad-tests chromeos-base/touch_firmware_test chromeos-base/mttools
-DESCRIPTION=Autotest touchpad deps
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=x11-drivers/touchpad-tests chromeos-base/touch_firmware_test chromeos-base/mttools autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=1d6620a1c9bb19055032f281bac45eed
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-touchpad-9999 b/metadata/md5-cache/chromeos-base/autotest-deps-touchpad-9999
index a677448..8486497 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-touchpad-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-touchpad-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=x11-drivers/touchpad-tests chromeos-base/touch_firmware_test chromeos-base/mttools autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=7fda568cba3006fad358c53d7b74c7ca
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-uiautomator-0.0.3 b/metadata/md5-cache/chromeos-base/autotest-deps-uiautomator-0.0.3
index 0368c72..8c2f19d 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-uiautomator-0.0.3
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-uiautomator-0.0.3
@@ -8,5 +8,5 @@
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0
 SRC_URI=https://github.com/xiaocong/uiautomator/archive/57ba9333186cc2c748fce8596dd31593a28019a9.tar.gz -> autotest-deps-uiautomator-0.0.3.tar.gz
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	autotest-external-dep	f1a21cd720cbb70b488bedaaf1b64777	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	autotest-external-dep	f1a21cd720cbb70b488bedaaf1b64777	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=13fd55131d0f9a19f417b1e485ec73a3
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-uiautomator-0.0.3-r1 b/metadata/md5-cache/chromeos-base/autotest-deps-uiautomator-0.0.3-r1
index 0368c72..8c2f19d 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-uiautomator-0.0.3-r1
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-uiautomator-0.0.3-r1
@@ -8,5 +8,5 @@
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0
 SRC_URI=https://github.com/xiaocong/uiautomator/archive/57ba9333186cc2c748fce8596dd31593a28019a9.tar.gz -> autotest-deps-uiautomator-0.0.3.tar.gz
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	autotest-external-dep	f1a21cd720cbb70b488bedaaf1b64777	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	autotest-external-dep	f1a21cd720cbb70b488bedaaf1b64777	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=13fd55131d0f9a19f417b1e485ec73a3
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-webgl-mpd-0.0.1-r8777 b/metadata/md5-cache/chromeos-base/autotest-deps-webgl-mpd-0.0.1-r8777
deleted file mode 100644
index 5fbf9a1..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-deps-webgl-mpd-0.0.1-r8777
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DESCRIPTION=Dependencies for WebGL many planets deep test
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-SLOT=0/0.0.1-r8777
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4ca185851ca102bd9747f70fb88f0a06
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-webgl-mpd-0.0.1-r9623 b/metadata/md5-cache/chromeos-base/autotest-deps-webgl-mpd-0.0.1-r9623
new file mode 100644
index 0000000..bbd4b78
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-webgl-mpd-0.0.1-r9623
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DESCRIPTION=Dependencies for WebGL many planets deep test
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+SLOT=0/0.0.1-r9623
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9b512af1e5aea0a282c6a9050dc5e591
diff --git a/metadata/md5-cache/chromeos-base/autotest-deps-webgl-mpd-9999 b/metadata/md5-cache/chromeos-base/autotest-deps-webgl-mpd-9999
index 4ebf5d7..80675e7 100644
--- a/metadata/md5-cache/chromeos-base/autotest-deps-webgl-mpd-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-deps-webgl-mpd-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0/9999
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=10490e31cb9601468333ec4e9504a386
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-0.0.2-r4930 b/metadata/md5-cache/chromeos-base/autotest-server-tests-0.0.2-r4930
deleted file mode 100644
index 1a52e32..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-server-tests-0.0.2-r4930
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-0.0.2
-DESCRIPTION=Autotest server tests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=android-container android-container-pi android-vm-rvc +autotest biod +cellular cheets_user_64 -chromeless_tests -chromeless_tty cros_p2p debugd dlc_test has-kernelnext is-kernelnext -moblab +power_management +readahead +tpm tpm2 +tests_android_ACTS +tests_android_EasySetup +tests_audio_AudioAfterReboot +tests_audio_AudioAfterSuspend +tests_audio_AudioArtifacts +tests_audio_AudioARCPlayback +tests_audio_AudioARCRecord +tests_audio_AudioBasicAssistant +tests_audio_AudioBasicBluetoothPlayback +tests_audio_AudioBasicBluetoothPlaybackRecord +tests_audio_AudioBasicBluetoothRecord +tests_audio_AudioBasicExternalMicrophone +tests_audio_AudioBasicHDMI +tests_audio_AudioBasicHeadphone +tests_audio_AudioBasicHotwording +tests_audio_AudioBasicInternalMicrophone +tests_audio_AudioBasicInternalSpeaker +tests_audio_AudioBasicUSBPlayback +tests_audio_AudioBasicUSBPlaybackRecord +tests_audio_AudioBasicUSBRecord +tests_audio_AudioBluetoothConnectionStability +tests_audio_AudioNodeSwitch +tests_audio_AudioPinnedStream +tests_audio_AudioQualityAfterSuspend +tests_audio_AudioSanityCheck +tests_audio_AudioVolume +tests_audio_AudioWebRTCLoopback +tests_audio_InternalCardNodes +tests_audio_LeftRightInternalSpeaker +tests_audio_MediaBasicVerification +tests_audio_PowerConsumption +tests_audiovideo_AVSync +tests_autoupdate_Basic +tests_autoupdate_CatchBadSignatures +tests_autoupdate_Cellular +tests_autoupdate_DataPreserved +tests_autoupdate_ForcedOOBEUpdate +tests_autoupdate_FromUI +tests_autoupdate_Interruptions +tests_autoupdate_NonBlockingOOBEUpdate +tests_autoupdate_OmahaResponse +tests_autoupdate_P2P +tests_autoupdate_Periodic +tests_autoupdate_Rollback dlc_test? ( +tests_autoupdate_WithDLC ) has-kernelnext? ( +tests_autoupdate_StatefulCompatibility ) is-kernelnext? ( +tests_autoupdate_StatefulCompatibility ) cellular? ( +tests_cellular_StaleModemReboot ) android-container-pi? ( +tests_cheets_CTS_Instant +tests_cheets_CTS_P +tests_cheets_GTS ) android-vm-rvc? ( cheets_user_64? ( +tests_cheets_CTS_R +tests_cheets_GTS_R ) !cheets_user_64? ( +tests_cheets_VTS_R ) ) +tests_cheets_LabDependencies debugd? ( +tests_debugd_DevTools ) +tests_crosperf_Wrapper +tests_display_EdidStress +tests_display_HDCPScreen +tests_display_HotPlugAtBoot +tests_display_HotPlugAtSuspend +tests_display_HotPlugNoisy +tests_display_LidCloseOpen +tests_display_NoEdid +tests_display_Resolution +tests_display_ResolutionList +tests_display_ServerChameleonConnection +tests_display_SuspendStress +tests_display_SwitchMode +tests_dummy_PassServer +tests_dummy_FailServer +tests_dummy_FlakyTestServer +tests_dummy_SynchronousOffloadServer +tests_enterprise_ClearTPM +tests_enterprise_KioskEnrollmentServer +tests_enterprise_LongevityTrackerServer +tests_enterprise_OnlineDemoMode +tests_factory_Basic +tests_firmware_Bmpblk +tests_firmware_CgptStress +tests_firmware_ClearTPMOwnerAndReset +tests_firmware_ConsecutiveBoot +tests_firmware_ConsecutiveBootPowerButton +tests_firmware_ConsecutiveLidSwitch +tests_firmware_CorruptBothFwBodyAB +tests_firmware_CorruptBothFwSigAB +tests_firmware_CorruptBothKernelAB +tests_firmware_CorruptFwBodyA +tests_firmware_CorruptFwBodyB +tests_firmware_CorruptFwSigA +tests_firmware_CorruptFwSigB +tests_firmware_CorruptKernelA +tests_firmware_CorruptKernelB +tests_firmware_CorruptRecoveryCache +tests_firmware_Cr50BID +tests_firmware_Cr50CCDServoCap +tests_firmware_Cr50CCDUartStress +tests_firmware_Cr50CheckCap +tests_firmware_Cr50ConsoleCommands +tests_firmware_Cr50DeepSleepStress +tests_firmware_Cr50DeferredECReset +tests_firmware_Cr50DeviceState +tests_firmware_Cr50DevMode +tests_firmware_Cr50ECReset +tests_firmware_Cr50FactoryResetVC +tests_firmware_Cr50CCDFirmwareUpdate +tests_firmware_Cr50GetName +tests_firmware_Cr50InvalidateRW +tests_firmware_Cr50Open +tests_firmware_Cr50OpenWhileAPOff +tests_firmware_Cr50PartialBoardId +tests_firmware_Cr50Password +tests_firmware_Cr50PinWeaverServer +tests_firmware_Cr50RddG3 +tests_firmware_Cr50RejectUpdate +tests_firmware_Cr50RMAOpen +tests_firmware_Cr50SetBoardId +tests_firmware_Cr50ShortECC +tests_firmware_Cr50Testlab +tests_firmware_Cr50TpmManufactured +tests_firmware_Cr50TpmMode +tests_firmware_Cr50U2fCommands +tests_firmware_Cr50Unlock +tests_firmware_Cr50Update +tests_firmware_Cr50UpdateScriptStress +tests_firmware_Cr50USB +tests_firmware_Cr50WilcoEcrst +tests_firmware_Cr50WilcoRmaFactoryMode +tests_firmware_Cr50WPG3 +tests_firmware_DevBootUSB +tests_firmware_DevDefaultBoot +tests_firmware_DevMode +tests_firmware_DevModeStress +tests_firmware_DevScreenTimeout +tests_firmware_ECBattery +tests_firmware_ECBootTime +tests_firmware_ECCbiEeprom +tests_firmware_ECCharging +tests_firmware_ECChargingState +tests_firmware_ECHash +tests_firmware_ECKeyboard +tests_firmware_ECKeyboardReboot +tests_firmware_ECLidShutdown +tests_firmware_ECLidSwitch +tests_firmware_ECPowerButton +tests_firmware_ECPowerG3 +tests_firmware_ECSharedMem +tests_firmware_ECThermal +tests_firmware_ECUpdateId +tests_firmware_ECUsbPorts +tests_firmware_ECWakeSource +tests_firmware_ECWatchdog +tests_firmware_EventLog +tests_firmware_FAFTPrepare +tests_firmware_FAFTModeTransitions +tests_firmware_FAFTRPC +tests_firmware_FAFTSetup biod? ( +tests_firmware_Fingerprint +tests_firmware_FingerprintSigner ) +tests_firmware_FMap +tests_firmware_FWMPDisableCCD +tests_firmware_FwScreenCloseLid +tests_firmware_FwScreenPressPower +tests_firmware_FWupdateWP +tests_firmware_FWtries +tests_firmware_FWupdateThenSleep +tests_firmware_FWupdateWP +tests_firmware_IntegratedU2F +tests_firmware_InvalidUSB +tests_firmware_LegacyRecovery +tests_firmware_MenuModeTransition +tests_firmware_Mosys +tests_firmware_PDConnect +tests_firmware_PDDataSwap +tests_firmware_PDPowerSwap +tests_firmware_PDProtocol +tests_firmware_PDResetHard +tests_firmware_PDResetSoft +tests_firmware_PDTrySrc +tests_firmware_PDVbusRequest +tests_firmware_RecoveryButton +tests_firmware_RecoveryCacheBootKeys +tests_firmware_RollbackFirmware +tests_firmware_RollbackKernel +tests_firmware_SelfSignedBoot +tests_firmware_SetSerialNumber +tests_firmware_SoftwareSync +tests_firmware_StandbyPowerConsumption +tests_firmware_SysfsVPD +tests_firmware_TPMNotCorruptedDevMode tpm? ( +tests_firmware_TPMExtend ) tpm? ( +tests_firmware_TPMVersionCheck ) tpm? ( +tests_firmware_TPMKernelVersion ) tpm2? ( +tests_firmware_TPMExtend ) tpm2? ( +tests_firmware_TPMVersionCheck ) tpm2? ( +tests_firmware_TPMKernelVersion ) +tests_firmware_TryFwB +tests_firmware_TypeCCharging +tests_firmware_TypeCProbeUSB3 +tests_firmware_UpdateFirmwareDataKeyVersion +tests_firmware_UpdateFirmwareVersion +tests_firmware_UpdateKernelDataKeyVersion +tests_firmware_UpdateKernelSubkeyVersion +tests_firmware_UpdateKernelVersion +tests_firmware_UpdaterModes +tests_firmware_UserRequestRecovery +tests_firmware_WilcoDiagnosticsMode +tests_firmware_WriteProtect +tests_firmware_WriteProtectFunc +tests_graphics_MultipleDisplays +tests_graphics_PowerConsumption +tests_hardware_DiskFirmwareUpgrade +tests_hardware_MemoryIntegrity +tests_hardware_StorageQual +tests_hardware_StorageQualBase +tests_hardware_StorageQualCheckSetup +tests_hardware_StorageQualSuspendStress +tests_hardware_StorageQualTrimStress +tests_hardware_StorageQualV2 +tests_hardware_StorageStress +tests_infra_TLSExecDUTCommand +tests_kernel_EmptyLines +tests_kernel_ExternalUsbPeripheralsDetectionTest +tests_kernel_IdlePerf +tests_kernel_MemoryRamoop moblab? ( +tests_moblab_RunSuite +tests_moblab_StorageQual ) +tests_moblab_Setup cros_p2p? ( +tests_p2p_EndToEndTest ) +tests_network_FirewallHolePunchServer +tests_platform_ActivateDate +tests_platform_BootDevice +tests_platform_BootLockboxServer +tests_platform_BootPerfServer +tests_platform_CompromisedStatefulPartition +tests_platform_CorruptRootfs +tests_platform_CrashStateful +tests_platform_ExternalUsbPeripherals +tests_platform_FlashErasers +tests_platform_Flashrom +tests_platform_HWwatchdog +tests_platform_InitLoginPerfServer +tests_platform_InstallTestImage +tests_platform_InternalDisplay +tests_platform_KernelErrorPaths power_management? ( +tests_platform_PowerStatusStress +tests_power_DeferForFlashrom +tests_power_WakeSources ) +tests_platform_Powerwash +tests_platform_RotationFps +tests_platform_ServoPowerStateController +tests_platform_StageAndRecover +tests_platform_SuspendResumeTiming +tests_platform_SyncCrash readahead? ( +tests_platform_UReadAheadServer ) +tests_platform_Vpd +tests_policy_AUServer +tests_policy_DeviceChargingServer +tests_policy_DeviceServer +tests_policy_ExternalStorageServer +tests_policy_GlobalNetworkSettingsServer +tests_policy_WiFiAutoconnectServer +tests_policy_WiFiPrecedenceServer +tests_policy_WiFiTypesServer +tests_policy_WilcoServerDeviceDockMacAddressSource +tests_policy_WilcoServerOnNonWilcoDevice +tests_policy_WilcoServerUSBPowershare +tests_power_BrightnessResetAfterReboot +tests_power_ChargeControlWrapper +tests_power_MeetCall +tests_power_Monitoring +tests_power_LW +tests_power_PowerlogWrapper +tests_power_RPMTest +tests_power_ServoChargeStress +tests_power_ServodWrapper +tests_provision_CheetsUpdate +tests_provision_Cr50TOT +tests_provision_Cr50Update +tests_provision_FactoryImage +tests_provision_FirmwareUpdate +tests_provision_QuickProvision +tests_rlz_CheckPing +tests_sequences +tests_servo_LabControlVerification +tests_servo_LabstationVerification +tests_servo_USBMuxVerification +tests_servo_LogGrab +tests_servo_Verification +tests_servohost_Reboot +tests_stress_ClientTestReboot +tests_stress_EnrollmentRetainment cros_host cros_workon_tree_ee02c6712e3c791c059e42e7d66d1626aaea7162 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-REQUIRED_USE=?? ( has-kernelnext is-kernelnext )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=658539f95d7da937ecd2eeb2cf538597
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-0.0.2-r5175 b/metadata/md5-cache/chromeos-base/autotest-server-tests-0.0.2-r5175
new file mode 100644
index 0000000..359a5f8
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-server-tests-0.0.2-r5175
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-0.0.2
+DESCRIPTION=Autotest server tests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=android-container android-container-pi android-vm-rvc +autotest biod +cellular +cheets_user cheets_user_64 cheets_userdebug_64 -chromeless_tests -chromeless_tty cros_p2p debugd dlc_test has-kernelnext is-kernelnext -moblab +power_management +readahead +tpm tpm2 +tests_android_ACTS +tests_android_EasySetup +tests_audio_AudioAfterReboot +tests_audio_AudioAfterSuspend +tests_audio_AudioArtifacts +tests_audio_AudioBasicAssistant +tests_audio_AudioBasicBluetoothPlayback +tests_audio_AudioBasicBluetoothPlaybackRecord +tests_audio_AudioBasicBluetoothRecord +tests_audio_AudioBasicExternalMicrophone +tests_audio_AudioBasicHDMI +tests_audio_AudioBasicHeadphone +tests_audio_AudioBasicHotwording +tests_audio_AudioBasicInternalMicrophone +tests_audio_AudioBasicInternalSpeaker +tests_audio_AudioBasicUSBPlayback +tests_audio_AudioBasicUSBPlaybackRecord +tests_audio_AudioBasicUSBRecord +tests_audio_AudioBluetoothConnectionStability +tests_audio_AudioNodeSwitch +tests_audio_AudioPinnedStream +tests_audio_AudioQualityAfterSuspend +tests_audio_AudioTestAssumptionCheck +tests_audio_AudioVolume +tests_audio_AudioWebRTCLoopback +tests_audio_InternalCardNodes +tests_audio_LeftRightInternalSpeaker +tests_audio_MediaBasicVerification +tests_audio_PowerConsumption +tests_audiovideo_AVSync +tests_autoupdate_Basic +tests_autoupdate_CatchBadSignatures +tests_autoupdate_Cellular +tests_autoupdate_ConsecutiveUpdatesBeforeReboot +tests_autoupdate_DataPreserved +tests_autoupdate_ForcedOOBEUpdate +tests_autoupdate_FromUI +tests_autoupdate_Interruptions +tests_autoupdate_NonBlockingOOBEUpdate +tests_autoupdate_OmahaResponse +tests_autoupdate_P2P +tests_autoupdate_Periodic +tests_autoupdate_RejectDuplicateUpdate +tests_autoupdate_Rollback dlc_test? ( +tests_autoupdate_WithDLC ) has-kernelnext? ( +tests_autoupdate_StatefulCompatibility ) is-kernelnext? ( +tests_autoupdate_StatefulCompatibility ) cellular? ( +tests_cellular_StaleModemReboot ) android-container-pi? ( cheets_user? ( +tests_cheets_CTS_Instant +tests_cheets_CTS_P +tests_cheets_GTS ) cheets_user_64? ( +tests_cheets_CTS_Instant +tests_cheets_CTS_P +tests_cheets_GTS ) ) android-vm-rvc? ( cheets_user_64? ( +tests_cheets_CTS_R +tests_cheets_GTS_R ) cheets_userdebug_64? ( +tests_cheets_VTS_R ) ) +tests_cellular_Callbox_AssertCellularData +tests_cheets_LabDependencies debugd? ( +tests_debugd_DevTools ) +tests_crosperf_Wrapper +tests_display_EdidStress +tests_display_HDCPScreen +tests_display_HotPlugAtBoot +tests_display_HotPlugAtSuspend +tests_display_HotPlugNoisy +tests_display_LidCloseOpen +tests_display_NoEdid +tests_display_Resolution +tests_display_ResolutionList +tests_display_ServerChameleonConnection +tests_display_SuspendStress +tests_display_SwitchMode +tests_dummy_PassServer +tests_dummy_FailServer +tests_dummy_FlakyTestServer +tests_stub_SynchronousOffloadServer +tests_enterprise_ClearTPM +tests_enterprise_KioskEnrollmentServer +tests_enterprise_LongevityTrackerServer +tests_enterprise_OnlineDemoMode +tests_factory_Basic +tests_firmware_Bmpblk +tests_firmware_CgptStress +tests_firmware_ClearTPMOwnerAndReset +tests_firmware_ConsecutiveBoot +tests_firmware_ConsecutiveBootPowerButton +tests_firmware_ConsecutiveLidSwitch +tests_firmware_CorruptBothFwBodyAB +tests_firmware_CorruptBothFwSigAB +tests_firmware_CorruptBothKernelAB +tests_firmware_CorruptFwBodyA +tests_firmware_CorruptFwBodyB +tests_firmware_CorruptFwSigA +tests_firmware_CorruptFwSigB +tests_firmware_CorruptKernelA +tests_firmware_CorruptKernelB +tests_firmware_CorruptRecoveryCache +tests_firmware_Cr50BID +tests_firmware_Cr50CCDServoCap +tests_firmware_Cr50CCDUartStress +tests_firmware_Cr50CheckCap +tests_firmware_Cr50ConsoleCommands +tests_firmware_Cr50DeepSleepStress +tests_firmware_Cr50DeferredECReset +tests_firmware_Cr50DeviceState +tests_firmware_Cr50DevMode +tests_firmware_Cr50ECReset +tests_firmware_Cr50FactoryResetVC +tests_firmware_Cr50CCDFirmwareUpdate +tests_firmware_Cr50GetName +tests_firmware_Cr50InvalidateRW +tests_firmware_Cr50Keygen +tests_firmware_Cr50Open +tests_firmware_Cr50OpenWhileAPOff +tests_firmware_Cr50PartialBoardId +tests_firmware_Cr50Password +tests_firmware_Cr50PinWeaverServer +tests_firmware_Cr50RddG3 +tests_firmware_Cr50RejectUpdate +tests_firmware_Cr50RMAOpen +tests_firmware_Cr50SetBoardId +tests_firmware_Cr50ShortECC +tests_firmware_Cr50Testlab +tests_firmware_Cr50TpmManufactured +tests_firmware_Cr50TpmMode +tests_firmware_Cr50U2fCommands +tests_firmware_Cr50Unlock +tests_firmware_Cr50Update +tests_firmware_Cr50UpdateScriptStress +tests_firmware_Cr50USB +tests_firmware_Cr50VerifyEK +tests_firmware_Cr50WilcoEcrst +tests_firmware_Cr50WilcoRmaFactoryMode +tests_firmware_Cr50WPG3 +tests_firmware_CsmeFwUpdate +tests_firmware_DevBootUSB +tests_firmware_DevDefaultBoot +tests_firmware_DevMode +tests_firmware_DevModeStress +tests_firmware_DevScreenTimeout +tests_firmware_ECBattery +tests_firmware_ECBootTime +tests_firmware_ECCbiEeprom +tests_firmware_ECCharging +tests_firmware_ECChargingState +tests_firmware_ECHash +tests_firmware_ECKeyboard +tests_firmware_ECKeyboardReboot +tests_firmware_ECLidShutdown +tests_firmware_ECLidSwitch +tests_firmware_ECPowerButton +tests_firmware_ECPowerG3 +tests_firmware_ECSharedMem +tests_firmware_ECSystemLocked +tests_firmware_ECThermal +tests_firmware_ECUpdateId +tests_firmware_ECUsbPorts +tests_firmware_ECWakeSource +tests_firmware_ECWatchdog +tests_firmware_EmmcWriteLoad +tests_firmware_EventLog +tests_firmware_FAFTPrepare +tests_firmware_FAFTModeTransitions +tests_firmware_FAFTRPC +tests_firmware_FAFTSetup biod? ( +tests_firmware_Fingerprint +tests_firmware_FingerprintCrosConfig +tests_firmware_FingerprintSigner ) +tests_firmware_FMap +tests_firmware_FWMPDisableCCD +tests_firmware_FwScreenCloseLid +tests_firmware_FwScreenPressPower +tests_firmware_FWupdateWP +tests_firmware_FWtries +tests_firmware_FWupdateThenSleep +tests_firmware_FWupdateWP +tests_firmware_IntegratedU2F +tests_firmware_InvalidUSB +tests_firmware_LegacyRecovery +tests_firmware_MenuModeTransition +tests_firmware_Mosys +tests_firmware_PDConnect +tests_firmware_PDDataSwap +tests_firmware_PDPowerSwap +tests_firmware_PDProtocol +tests_firmware_PDResetHard +tests_firmware_PDResetSoft +tests_firmware_PDTrySrc +tests_firmware_PDVbusRequest +tests_firmware_RecoveryButton +tests_firmware_RecoveryCacheBootKeys +tests_firmware_RollbackFirmware +tests_firmware_RollbackKernel +tests_firmware_SelfSignedBoot +tests_firmware_SetSerialNumber +tests_firmware_SoftwareSync +tests_firmware_StandbyPowerConsumption +tests_firmware_SysfsVPD +tests_firmware_TPMNotCorruptedDevMode tpm? ( +tests_firmware_TPMExtend ) tpm? ( +tests_firmware_TPMVersionCheck ) tpm? ( +tests_firmware_TPMKernelVersion ) tpm2? ( +tests_firmware_TPMExtend ) tpm2? ( +tests_firmware_TPMVersionCheck ) tpm2? ( +tests_firmware_TPMKernelVersion ) +tests_firmware_TryFwB +tests_firmware_TypeCCharging +tests_firmware_TypeCProbeUSB3 +tests_firmware_UpdateFirmwareDataKeyVersion +tests_firmware_UpdateFirmwareVersion +tests_firmware_UpdateKernelDataKeyVersion +tests_firmware_UpdateKernelSubkeyVersion +tests_firmware_UpdateKernelVersion +tests_firmware_UpdaterModes +tests_firmware_UserRequestRecovery +tests_firmware_WilcoDiagnosticsMode +tests_firmware_WriteProtect +tests_firmware_WriteProtectFunc +tests_graphics_MultipleDisplays +tests_graphics_PowerConsumption +tests_hardware_DiskFirmwareUpgrade +tests_hardware_MemoryIntegrity +tests_hardware_StorageQual +tests_hardware_StorageQualBase +tests_hardware_StorageQualCheckSetup +tests_hardware_StorageQualSuspendStress +tests_hardware_StorageQualTrimStress +tests_hardware_StorageQualV2 +tests_hardware_StorageStress +tests_infra_TLSExecDUTCommand +tests_kernel_EmptyLines +tests_kernel_ExternalUsbPeripheralsDetectionTest +tests_kernel_IdlePerf +tests_kernel_MemoryRamoop moblab? ( +tests_moblab_RunSuite +tests_moblab_StorageQual ) +tests_moblab_Setup cros_p2p? ( +tests_p2p_EndToEndTest ) +tests_network_FirewallHolePunchServer +tests_platform_ActivateDate +tests_platform_BootDevice +tests_platform_BootLockboxServer +tests_platform_BootPerfServer +tests_platform_CompromisedStatefulPartition +tests_platform_CorruptRootfs +tests_platform_CrashStateful +tests_platform_ExternalUsbPeripherals +tests_platform_FetchCloudConfig +tests_platform_FlashErasers +tests_platform_Flashrom +tests_platform_HWwatchdog +tests_platform_InitLoginPerfServer +tests_platform_InstallTestImage +tests_platform_InternalDisplay +tests_platform_KernelErrorPaths +tests_platform_MTBF power_management? ( +tests_platform_PowerStatusStress +tests_power_DeferForFlashrom +tests_power_WakeSources ) +tests_platform_Powerwash +tests_platform_RotationFps +tests_platform_ServoPowerStateController +tests_platform_StageAndRecover +tests_platform_SuspendResumeTiming +tests_platform_SyncCrash readahead? ( +tests_platform_UReadAheadServer ) +tests_platform_Vpd +tests_policy_AUServer +tests_policy_DeviceChargingServer +tests_policy_DeviceServer +tests_policy_ExternalStorageServer +tests_policy_GlobalNetworkSettingsServer +tests_policy_WiFiAutoconnectServer +tests_policy_WiFiPrecedenceServer +tests_policy_WiFiTypesServer +tests_policy_WilcoServerDeviceDockMacAddressSource +tests_policy_WilcoServerOnNonWilcoDevice +tests_policy_WilcoServerUSBPowershare +tests_power_BrightnessResetAfterReboot +tests_power_ChargeControlWrapper +tests_power_MeetCall +tests_power_Monitoring +tests_power_LW +tests_power_PowerlogWrapper +tests_power_RPMTest +tests_power_ServoChargeStress +tests_power_ServodWrapper +tests_provision_CheetsUpdate +tests_provision_Cr50TOT +tests_provision_Cr50Update +tests_provision_FactoryImage +tests_provision_FirmwareUpdate +tests_provision_QuickProvision +tests_rlz_CheckPing +tests_sequences +tests_servo_LabControlVerification +tests_servo_LabstationVerification +tests_servo_USBMuxVerification +tests_servo_LogGrab +tests_servo_Verification +tests_servohost_Reboot +tests_stress_ClientTestReboot +tests_stress_EnrollmentRetainment +tests_stub_ServerToClientPass cros_host cros_workon_tree_f322f40e82140ffae58282b019287a4c64e642bc +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+REQUIRED_USE=?? ( has-kernelnext is-kernelnext )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=c3dbe61fd13d84d1980f963fd562d82e
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-9999 b/metadata/md5-cache/chromeos-base/autotest-server-tests-9999
index 46e8efb..3c5c1a7 100644
--- a/metadata/md5-cache/chromeos-base/autotest-server-tests-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-server-tests-9999
@@ -3,12 +3,12 @@
 DESCRIPTION=Autotest server tests
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=android-container android-container-pi android-vm-rvc +autotest biod +cellular cheets_user_64 -chromeless_tests -chromeless_tty cros_p2p debugd dlc_test has-kernelnext is-kernelnext -moblab +power_management +readahead +tpm tpm2 +tests_android_ACTS +tests_android_EasySetup +tests_audio_AudioAfterReboot +tests_audio_AudioAfterSuspend +tests_audio_AudioArtifacts +tests_audio_AudioARCPlayback +tests_audio_AudioARCRecord +tests_audio_AudioBasicAssistant +tests_audio_AudioBasicBluetoothPlayback +tests_audio_AudioBasicBluetoothPlaybackRecord +tests_audio_AudioBasicBluetoothRecord +tests_audio_AudioBasicExternalMicrophone +tests_audio_AudioBasicHDMI +tests_audio_AudioBasicHeadphone +tests_audio_AudioBasicHotwording +tests_audio_AudioBasicInternalMicrophone +tests_audio_AudioBasicInternalSpeaker +tests_audio_AudioBasicUSBPlayback +tests_audio_AudioBasicUSBPlaybackRecord +tests_audio_AudioBasicUSBRecord +tests_audio_AudioBluetoothConnectionStability +tests_audio_AudioNodeSwitch +tests_audio_AudioPinnedStream +tests_audio_AudioQualityAfterSuspend +tests_audio_AudioSanityCheck +tests_audio_AudioVolume +tests_audio_AudioWebRTCLoopback +tests_audio_InternalCardNodes +tests_audio_LeftRightInternalSpeaker +tests_audio_MediaBasicVerification +tests_audio_PowerConsumption +tests_audiovideo_AVSync +tests_autoupdate_Basic +tests_autoupdate_CatchBadSignatures +tests_autoupdate_Cellular +tests_autoupdate_DataPreserved +tests_autoupdate_ForcedOOBEUpdate +tests_autoupdate_FromUI +tests_autoupdate_Interruptions +tests_autoupdate_NonBlockingOOBEUpdate +tests_autoupdate_OmahaResponse +tests_autoupdate_P2P +tests_autoupdate_Periodic +tests_autoupdate_Rollback dlc_test? ( +tests_autoupdate_WithDLC ) has-kernelnext? ( +tests_autoupdate_StatefulCompatibility ) is-kernelnext? ( +tests_autoupdate_StatefulCompatibility ) cellular? ( +tests_cellular_StaleModemReboot ) android-container-pi? ( +tests_cheets_CTS_Instant +tests_cheets_CTS_P +tests_cheets_GTS ) android-vm-rvc? ( cheets_user_64? ( +tests_cheets_CTS_R +tests_cheets_GTS_R ) !cheets_user_64? ( +tests_cheets_VTS_R ) ) +tests_cheets_LabDependencies debugd? ( +tests_debugd_DevTools ) +tests_crosperf_Wrapper +tests_display_EdidStress +tests_display_HDCPScreen +tests_display_HotPlugAtBoot +tests_display_HotPlugAtSuspend +tests_display_HotPlugNoisy +tests_display_LidCloseOpen +tests_display_NoEdid +tests_display_Resolution +tests_display_ResolutionList +tests_display_ServerChameleonConnection +tests_display_SuspendStress +tests_display_SwitchMode +tests_dummy_PassServer +tests_dummy_FailServer +tests_dummy_FlakyTestServer +tests_dummy_SynchronousOffloadServer +tests_enterprise_ClearTPM +tests_enterprise_KioskEnrollmentServer +tests_enterprise_LongevityTrackerServer +tests_enterprise_OnlineDemoMode +tests_factory_Basic +tests_firmware_Bmpblk +tests_firmware_CgptStress +tests_firmware_ClearTPMOwnerAndReset +tests_firmware_ConsecutiveBoot +tests_firmware_ConsecutiveBootPowerButton +tests_firmware_ConsecutiveLidSwitch +tests_firmware_CorruptBothFwBodyAB +tests_firmware_CorruptBothFwSigAB +tests_firmware_CorruptBothKernelAB +tests_firmware_CorruptFwBodyA +tests_firmware_CorruptFwBodyB +tests_firmware_CorruptFwSigA +tests_firmware_CorruptFwSigB +tests_firmware_CorruptKernelA +tests_firmware_CorruptKernelB +tests_firmware_CorruptRecoveryCache +tests_firmware_Cr50BID +tests_firmware_Cr50CCDServoCap +tests_firmware_Cr50CCDUartStress +tests_firmware_Cr50CheckCap +tests_firmware_Cr50ConsoleCommands +tests_firmware_Cr50DeepSleepStress +tests_firmware_Cr50DeferredECReset +tests_firmware_Cr50DeviceState +tests_firmware_Cr50DevMode +tests_firmware_Cr50ECReset +tests_firmware_Cr50FactoryResetVC +tests_firmware_Cr50CCDFirmwareUpdate +tests_firmware_Cr50GetName +tests_firmware_Cr50InvalidateRW +tests_firmware_Cr50Open +tests_firmware_Cr50OpenWhileAPOff +tests_firmware_Cr50PartialBoardId +tests_firmware_Cr50Password +tests_firmware_Cr50PinWeaverServer +tests_firmware_Cr50RddG3 +tests_firmware_Cr50RejectUpdate +tests_firmware_Cr50RMAOpen +tests_firmware_Cr50SetBoardId +tests_firmware_Cr50ShortECC +tests_firmware_Cr50Testlab +tests_firmware_Cr50TpmManufactured +tests_firmware_Cr50TpmMode +tests_firmware_Cr50U2fCommands +tests_firmware_Cr50Unlock +tests_firmware_Cr50Update +tests_firmware_Cr50UpdateScriptStress +tests_firmware_Cr50USB +tests_firmware_Cr50WilcoEcrst +tests_firmware_Cr50WilcoRmaFactoryMode +tests_firmware_Cr50WPG3 +tests_firmware_DevBootUSB +tests_firmware_DevDefaultBoot +tests_firmware_DevMode +tests_firmware_DevModeStress +tests_firmware_DevScreenTimeout +tests_firmware_ECBattery +tests_firmware_ECBootTime +tests_firmware_ECCbiEeprom +tests_firmware_ECCharging +tests_firmware_ECChargingState +tests_firmware_ECHash +tests_firmware_ECKeyboard +tests_firmware_ECKeyboardReboot +tests_firmware_ECLidShutdown +tests_firmware_ECLidSwitch +tests_firmware_ECPowerButton +tests_firmware_ECPowerG3 +tests_firmware_ECSharedMem +tests_firmware_ECThermal +tests_firmware_ECUpdateId +tests_firmware_ECUsbPorts +tests_firmware_ECWakeSource +tests_firmware_ECWatchdog +tests_firmware_EventLog +tests_firmware_FAFTPrepare +tests_firmware_FAFTModeTransitions +tests_firmware_FAFTRPC +tests_firmware_FAFTSetup biod? ( +tests_firmware_Fingerprint +tests_firmware_FingerprintSigner ) +tests_firmware_FMap +tests_firmware_FWMPDisableCCD +tests_firmware_FwScreenCloseLid +tests_firmware_FwScreenPressPower +tests_firmware_FWupdateWP +tests_firmware_FWtries +tests_firmware_FWupdateThenSleep +tests_firmware_FWupdateWP +tests_firmware_IntegratedU2F +tests_firmware_InvalidUSB +tests_firmware_LegacyRecovery +tests_firmware_MenuModeTransition +tests_firmware_Mosys +tests_firmware_PDConnect +tests_firmware_PDDataSwap +tests_firmware_PDPowerSwap +tests_firmware_PDProtocol +tests_firmware_PDResetHard +tests_firmware_PDResetSoft +tests_firmware_PDTrySrc +tests_firmware_PDVbusRequest +tests_firmware_RecoveryButton +tests_firmware_RecoveryCacheBootKeys +tests_firmware_RollbackFirmware +tests_firmware_RollbackKernel +tests_firmware_SelfSignedBoot +tests_firmware_SetSerialNumber +tests_firmware_SoftwareSync +tests_firmware_StandbyPowerConsumption +tests_firmware_SysfsVPD +tests_firmware_TPMNotCorruptedDevMode tpm? ( +tests_firmware_TPMExtend ) tpm? ( +tests_firmware_TPMVersionCheck ) tpm? ( +tests_firmware_TPMKernelVersion ) tpm2? ( +tests_firmware_TPMExtend ) tpm2? ( +tests_firmware_TPMVersionCheck ) tpm2? ( +tests_firmware_TPMKernelVersion ) +tests_firmware_TryFwB +tests_firmware_TypeCCharging +tests_firmware_TypeCProbeUSB3 +tests_firmware_UpdateFirmwareDataKeyVersion +tests_firmware_UpdateFirmwareVersion +tests_firmware_UpdateKernelDataKeyVersion +tests_firmware_UpdateKernelSubkeyVersion +tests_firmware_UpdateKernelVersion +tests_firmware_UpdaterModes +tests_firmware_UserRequestRecovery +tests_firmware_WilcoDiagnosticsMode +tests_firmware_WriteProtect +tests_firmware_WriteProtectFunc +tests_graphics_MultipleDisplays +tests_graphics_PowerConsumption +tests_hardware_DiskFirmwareUpgrade +tests_hardware_MemoryIntegrity +tests_hardware_StorageQual +tests_hardware_StorageQualBase +tests_hardware_StorageQualCheckSetup +tests_hardware_StorageQualSuspendStress +tests_hardware_StorageQualTrimStress +tests_hardware_StorageQualV2 +tests_hardware_StorageStress +tests_infra_TLSExecDUTCommand +tests_kernel_EmptyLines +tests_kernel_ExternalUsbPeripheralsDetectionTest +tests_kernel_IdlePerf +tests_kernel_MemoryRamoop moblab? ( +tests_moblab_RunSuite +tests_moblab_StorageQual ) +tests_moblab_Setup cros_p2p? ( +tests_p2p_EndToEndTest ) +tests_network_FirewallHolePunchServer +tests_platform_ActivateDate +tests_platform_BootDevice +tests_platform_BootLockboxServer +tests_platform_BootPerfServer +tests_platform_CompromisedStatefulPartition +tests_platform_CorruptRootfs +tests_platform_CrashStateful +tests_platform_ExternalUsbPeripherals +tests_platform_FlashErasers +tests_platform_Flashrom +tests_platform_HWwatchdog +tests_platform_InitLoginPerfServer +tests_platform_InstallTestImage +tests_platform_InternalDisplay +tests_platform_KernelErrorPaths power_management? ( +tests_platform_PowerStatusStress +tests_power_DeferForFlashrom +tests_power_WakeSources ) +tests_platform_Powerwash +tests_platform_RotationFps +tests_platform_ServoPowerStateController +tests_platform_StageAndRecover +tests_platform_SuspendResumeTiming +tests_platform_SyncCrash readahead? ( +tests_platform_UReadAheadServer ) +tests_platform_Vpd +tests_policy_AUServer +tests_policy_DeviceChargingServer +tests_policy_DeviceServer +tests_policy_ExternalStorageServer +tests_policy_GlobalNetworkSettingsServer +tests_policy_WiFiAutoconnectServer +tests_policy_WiFiPrecedenceServer +tests_policy_WiFiTypesServer +tests_policy_WilcoServerDeviceDockMacAddressSource +tests_policy_WilcoServerOnNonWilcoDevice +tests_policy_WilcoServerUSBPowershare +tests_power_BrightnessResetAfterReboot +tests_power_ChargeControlWrapper +tests_power_MeetCall +tests_power_Monitoring +tests_power_LW +tests_power_PowerlogWrapper +tests_power_RPMTest +tests_power_ServoChargeStress +tests_power_ServodWrapper +tests_provision_CheetsUpdate +tests_provision_Cr50TOT +tests_provision_Cr50Update +tests_provision_FactoryImage +tests_provision_FirmwareUpdate +tests_provision_QuickProvision +tests_rlz_CheckPing +tests_sequences +tests_servo_LabControlVerification +tests_servo_LabstationVerification +tests_servo_USBMuxVerification +tests_servo_LogGrab +tests_servo_Verification +tests_servohost_Reboot +tests_stress_ClientTestReboot +tests_stress_EnrollmentRetainment cros_host cros_workon_tree_ +buildcheck autotest opengles
+IUSE=android-container android-container-pi android-vm-rvc +autotest biod +cellular +cheets_user cheets_user_64 cheets_userdebug_64 -chromeless_tests -chromeless_tty cros_p2p debugd dlc_test has-kernelnext is-kernelnext -moblab +power_management +readahead +tpm tpm2 +tests_android_ACTS +tests_android_EasySetup +tests_audio_AudioAfterReboot +tests_audio_AudioAfterSuspend +tests_audio_AudioArtifacts +tests_audio_AudioBasicAssistant +tests_audio_AudioBasicBluetoothPlayback +tests_audio_AudioBasicBluetoothPlaybackRecord +tests_audio_AudioBasicBluetoothRecord +tests_audio_AudioBasicExternalMicrophone +tests_audio_AudioBasicHDMI +tests_audio_AudioBasicHeadphone +tests_audio_AudioBasicHotwording +tests_audio_AudioBasicInternalMicrophone +tests_audio_AudioBasicInternalSpeaker +tests_audio_AudioBasicUSBPlayback +tests_audio_AudioBasicUSBPlaybackRecord +tests_audio_AudioBasicUSBRecord +tests_audio_AudioBluetoothConnectionStability +tests_audio_AudioNodeSwitch +tests_audio_AudioPinnedStream +tests_audio_AudioQualityAfterSuspend +tests_audio_AudioTestAssumptionCheck +tests_audio_AudioVolume +tests_audio_AudioWebRTCLoopback +tests_audio_InternalCardNodes +tests_audio_LeftRightInternalSpeaker +tests_audio_MediaBasicVerification +tests_audio_PowerConsumption +tests_audiovideo_AVSync +tests_autoupdate_Basic +tests_autoupdate_CatchBadSignatures +tests_autoupdate_Cellular +tests_autoupdate_ConsecutiveUpdatesBeforeReboot +tests_autoupdate_DataPreserved +tests_autoupdate_ForcedOOBEUpdate +tests_autoupdate_FromUI +tests_autoupdate_Interruptions +tests_autoupdate_NonBlockingOOBEUpdate +tests_autoupdate_OmahaResponse +tests_autoupdate_P2P +tests_autoupdate_Periodic +tests_autoupdate_RejectDuplicateUpdate +tests_autoupdate_Rollback dlc_test? ( +tests_autoupdate_WithDLC ) has-kernelnext? ( +tests_autoupdate_StatefulCompatibility ) is-kernelnext? ( +tests_autoupdate_StatefulCompatibility ) cellular? ( +tests_cellular_StaleModemReboot ) android-container-pi? ( cheets_user? ( +tests_cheets_CTS_Instant +tests_cheets_CTS_P +tests_cheets_GTS ) cheets_user_64? ( +tests_cheets_CTS_Instant +tests_cheets_CTS_P +tests_cheets_GTS ) ) android-vm-rvc? ( cheets_user_64? ( +tests_cheets_CTS_R +tests_cheets_GTS_R ) cheets_userdebug_64? ( +tests_cheets_VTS_R ) ) +tests_cellular_Callbox_AssertCellularData +tests_cheets_LabDependencies debugd? ( +tests_debugd_DevTools ) +tests_crosperf_Wrapper +tests_display_EdidStress +tests_display_HDCPScreen +tests_display_HotPlugAtBoot +tests_display_HotPlugAtSuspend +tests_display_HotPlugNoisy +tests_display_LidCloseOpen +tests_display_NoEdid +tests_display_Resolution +tests_display_ResolutionList +tests_display_ServerChameleonConnection +tests_display_SuspendStress +tests_display_SwitchMode +tests_dummy_PassServer +tests_dummy_FailServer +tests_dummy_FlakyTestServer +tests_stub_SynchronousOffloadServer +tests_enterprise_ClearTPM +tests_enterprise_KioskEnrollmentServer +tests_enterprise_LongevityTrackerServer +tests_enterprise_OnlineDemoMode +tests_factory_Basic +tests_firmware_Bmpblk +tests_firmware_CgptStress +tests_firmware_ClearTPMOwnerAndReset +tests_firmware_ConsecutiveBoot +tests_firmware_ConsecutiveBootPowerButton +tests_firmware_ConsecutiveLidSwitch +tests_firmware_CorruptBothFwBodyAB +tests_firmware_CorruptBothFwSigAB +tests_firmware_CorruptBothKernelAB +tests_firmware_CorruptFwBodyA +tests_firmware_CorruptFwBodyB +tests_firmware_CorruptFwSigA +tests_firmware_CorruptFwSigB +tests_firmware_CorruptKernelA +tests_firmware_CorruptKernelB +tests_firmware_CorruptRecoveryCache +tests_firmware_Cr50BID +tests_firmware_Cr50CCDServoCap +tests_firmware_Cr50CCDUartStress +tests_firmware_Cr50CheckCap +tests_firmware_Cr50ConsoleCommands +tests_firmware_Cr50DeepSleepStress +tests_firmware_Cr50DeferredECReset +tests_firmware_Cr50DeviceState +tests_firmware_Cr50DevMode +tests_firmware_Cr50ECReset +tests_firmware_Cr50FactoryResetVC +tests_firmware_Cr50CCDFirmwareUpdate +tests_firmware_Cr50GetName +tests_firmware_Cr50InvalidateRW +tests_firmware_Cr50Keygen +tests_firmware_Cr50Open +tests_firmware_Cr50OpenWhileAPOff +tests_firmware_Cr50PartialBoardId +tests_firmware_Cr50Password +tests_firmware_Cr50PinWeaverServer +tests_firmware_Cr50RddG3 +tests_firmware_Cr50RejectUpdate +tests_firmware_Cr50RMAOpen +tests_firmware_Cr50SetBoardId +tests_firmware_Cr50ShortECC +tests_firmware_Cr50Testlab +tests_firmware_Cr50TpmManufactured +tests_firmware_Cr50TpmMode +tests_firmware_Cr50U2fCommands +tests_firmware_Cr50Unlock +tests_firmware_Cr50Update +tests_firmware_Cr50UpdateScriptStress +tests_firmware_Cr50USB +tests_firmware_Cr50VerifyEK +tests_firmware_Cr50WilcoEcrst +tests_firmware_Cr50WilcoRmaFactoryMode +tests_firmware_Cr50WPG3 +tests_firmware_CsmeFwUpdate +tests_firmware_DevBootUSB +tests_firmware_DevDefaultBoot +tests_firmware_DevMode +tests_firmware_DevModeStress +tests_firmware_DevScreenTimeout +tests_firmware_ECBattery +tests_firmware_ECBootTime +tests_firmware_ECCbiEeprom +tests_firmware_ECCharging +tests_firmware_ECChargingState +tests_firmware_ECHash +tests_firmware_ECKeyboard +tests_firmware_ECKeyboardReboot +tests_firmware_ECLidShutdown +tests_firmware_ECLidSwitch +tests_firmware_ECPowerButton +tests_firmware_ECPowerG3 +tests_firmware_ECSharedMem +tests_firmware_ECSystemLocked +tests_firmware_ECThermal +tests_firmware_ECUpdateId +tests_firmware_ECUsbPorts +tests_firmware_ECWakeSource +tests_firmware_ECWatchdog +tests_firmware_EmmcWriteLoad +tests_firmware_EventLog +tests_firmware_FAFTPrepare +tests_firmware_FAFTModeTransitions +tests_firmware_FAFTRPC +tests_firmware_FAFTSetup biod? ( +tests_firmware_Fingerprint +tests_firmware_FingerprintCrosConfig +tests_firmware_FingerprintSigner ) +tests_firmware_FMap +tests_firmware_FWMPDisableCCD +tests_firmware_FwScreenCloseLid +tests_firmware_FwScreenPressPower +tests_firmware_FWupdateWP +tests_firmware_FWtries +tests_firmware_FWupdateThenSleep +tests_firmware_FWupdateWP +tests_firmware_IntegratedU2F +tests_firmware_InvalidUSB +tests_firmware_LegacyRecovery +tests_firmware_MenuModeTransition +tests_firmware_Mosys +tests_firmware_PDConnect +tests_firmware_PDDataSwap +tests_firmware_PDPowerSwap +tests_firmware_PDProtocol +tests_firmware_PDResetHard +tests_firmware_PDResetSoft +tests_firmware_PDTrySrc +tests_firmware_PDVbusRequest +tests_firmware_RecoveryButton +tests_firmware_RecoveryCacheBootKeys +tests_firmware_RollbackFirmware +tests_firmware_RollbackKernel +tests_firmware_SelfSignedBoot +tests_firmware_SetSerialNumber +tests_firmware_SoftwareSync +tests_firmware_StandbyPowerConsumption +tests_firmware_SysfsVPD +tests_firmware_TPMNotCorruptedDevMode tpm? ( +tests_firmware_TPMExtend ) tpm? ( +tests_firmware_TPMVersionCheck ) tpm? ( +tests_firmware_TPMKernelVersion ) tpm2? ( +tests_firmware_TPMExtend ) tpm2? ( +tests_firmware_TPMVersionCheck ) tpm2? ( +tests_firmware_TPMKernelVersion ) +tests_firmware_TryFwB +tests_firmware_TypeCCharging +tests_firmware_TypeCProbeUSB3 +tests_firmware_UpdateFirmwareDataKeyVersion +tests_firmware_UpdateFirmwareVersion +tests_firmware_UpdateKernelDataKeyVersion +tests_firmware_UpdateKernelSubkeyVersion +tests_firmware_UpdateKernelVersion +tests_firmware_UpdaterModes +tests_firmware_UserRequestRecovery +tests_firmware_WilcoDiagnosticsMode +tests_firmware_WriteProtect +tests_firmware_WriteProtectFunc +tests_graphics_MultipleDisplays +tests_graphics_PowerConsumption +tests_hardware_DiskFirmwareUpgrade +tests_hardware_MemoryIntegrity +tests_hardware_StorageQual +tests_hardware_StorageQualBase +tests_hardware_StorageQualCheckSetup +tests_hardware_StorageQualSuspendStress +tests_hardware_StorageQualTrimStress +tests_hardware_StorageQualV2 +tests_hardware_StorageStress +tests_infra_TLSExecDUTCommand +tests_kernel_EmptyLines +tests_kernel_ExternalUsbPeripheralsDetectionTest +tests_kernel_IdlePerf +tests_kernel_MemoryRamoop moblab? ( +tests_moblab_RunSuite +tests_moblab_StorageQual ) +tests_moblab_Setup cros_p2p? ( +tests_p2p_EndToEndTest ) +tests_network_FirewallHolePunchServer +tests_platform_ActivateDate +tests_platform_BootDevice +tests_platform_BootLockboxServer +tests_platform_BootPerfServer +tests_platform_CompromisedStatefulPartition +tests_platform_CorruptRootfs +tests_platform_CrashStateful +tests_platform_ExternalUsbPeripherals +tests_platform_FetchCloudConfig +tests_platform_FlashErasers +tests_platform_Flashrom +tests_platform_HWwatchdog +tests_platform_InitLoginPerfServer +tests_platform_InstallTestImage +tests_platform_InternalDisplay +tests_platform_KernelErrorPaths +tests_platform_MTBF power_management? ( +tests_platform_PowerStatusStress +tests_power_DeferForFlashrom +tests_power_WakeSources ) +tests_platform_Powerwash +tests_platform_RotationFps +tests_platform_ServoPowerStateController +tests_platform_StageAndRecover +tests_platform_SuspendResumeTiming +tests_platform_SyncCrash readahead? ( +tests_platform_UReadAheadServer ) +tests_platform_Vpd +tests_policy_AUServer +tests_policy_DeviceChargingServer +tests_policy_DeviceServer +tests_policy_ExternalStorageServer +tests_policy_GlobalNetworkSettingsServer +tests_policy_WiFiAutoconnectServer +tests_policy_WiFiPrecedenceServer +tests_policy_WiFiTypesServer +tests_policy_WilcoServerDeviceDockMacAddressSource +tests_policy_WilcoServerOnNonWilcoDevice +tests_policy_WilcoServerUSBPowershare +tests_power_BrightnessResetAfterReboot +tests_power_ChargeControlWrapper +tests_power_MeetCall +tests_power_Monitoring +tests_power_LW +tests_power_PowerlogWrapper +tests_power_RPMTest +tests_power_ServoChargeStress +tests_power_ServodWrapper +tests_provision_CheetsUpdate +tests_provision_Cr50TOT +tests_provision_Cr50Update +tests_provision_FactoryImage +tests_provision_FirmwareUpdate +tests_provision_QuickProvision +tests_rlz_CheckPing +tests_sequences +tests_servo_LabControlVerification +tests_servo_LabstationVerification +tests_servo_USBMuxVerification +tests_servo_LogGrab +tests_servo_Verification +tests_servohost_Reboot +tests_stress_ClientTestReboot +tests_stress_EnrollmentRetainment +tests_stub_ServerToClientPass cros_host cros_workon_tree_ +buildcheck autotest opengles
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 REQUIRED_USE=?? ( has-kernelnext is-kernelnext )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e7ea797bb2895418adfea26166f21389
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=0f6ce3cd2a513ec80e2c2143d244fb57
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-bluetooth-0.0.1-r3402 b/metadata/md5-cache/chromeos-base/autotest-server-tests-bluetooth-0.0.1-r3402
deleted file mode 100644
index 04a821d..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-server-tests-bluetooth-0.0.1-r3402
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DESCRIPTION=Autotest server tests for Bluetooth
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_bluetooth_AdapterAdvHealth +tests_bluetooth_AdapterAdvMonitor +tests_bluetooth_AdapterAudioLink +tests_bluetooth_AdapterAUHealth +tests_bluetooth_AdapterCLHealth +tests_bluetooth_AdapterLEAdvertising +tests_bluetooth_AdapterLEBetterTogether +tests_bluetooth_AdapterLEHIDHealth +tests_bluetooth_AdapterLEHealth +tests_bluetooth_AdapterMDHealth +tests_bluetooth_AdapterMTBF +tests_bluetooth_AdapterPowerMeasure +tests_bluetooth_AdapterQuickHealth +tests_bluetooth_AdapterSAHealth +tests_bluetooth_PeerUpdate +tests_bluetooth_AdapterSRHealth cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-server-tests-0.0.2-r4126 autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=914b8a07c3fa126f68d8dd4d7b46419f
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-bluetooth-0.0.1-r3429 b/metadata/md5-cache/chromeos-base/autotest-server-tests-bluetooth-0.0.1-r3429
new file mode 100644
index 0000000..f09071a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-server-tests-bluetooth-0.0.1-r3429
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DESCRIPTION=Autotest server tests for Bluetooth
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +tests_bluetooth_AdapterAdvHealth +tests_bluetooth_AdapterAdvMonitor +tests_bluetooth_AdapterAudioLink +tests_bluetooth_AdapterAUHealth +tests_bluetooth_AdapterCLHealth +tests_bluetooth_AdapterEPHealth +tests_bluetooth_AdapterLEAdvertising +tests_bluetooth_AdapterLEBetterTogether +tests_bluetooth_AdapterLEHIDHealth +tests_bluetooth_AdapterLEHealth +tests_bluetooth_AdapterLLTHealth +tests_bluetooth_AdapterMDHealth +tests_bluetooth_AdapterMTBF +tests_bluetooth_AdapterPowerMeasure +tests_bluetooth_AdapterQuickHealth +tests_bluetooth_AdapterSAHealth +tests_bluetooth_AdapterSRHealth +tests_bluetooth_PeerUpdate cros_host cros_workon_tree_f3c2c1b6ad950d4f0da89332f1e47d33bdda1857 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-server-tests-0.0.2-r4126 autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=bf4c2d2ee0243404b412feca746f3fa4
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-bluetooth-9999 b/metadata/md5-cache/chromeos-base/autotest-server-tests-bluetooth-9999
index bc5c970..39ed26c 100644
--- a/metadata/md5-cache/chromeos-base/autotest-server-tests-bluetooth-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-server-tests-bluetooth-9999
@@ -2,11 +2,11 @@
 DESCRIPTION=Autotest server tests for Bluetooth
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_bluetooth_AdapterAdvHealth +tests_bluetooth_AdapterAdvMonitor +tests_bluetooth_AdapterAudioLink +tests_bluetooth_AdapterAUHealth +tests_bluetooth_AdapterCLHealth +tests_bluetooth_AdapterLEAdvertising +tests_bluetooth_AdapterLEBetterTogether +tests_bluetooth_AdapterLEHIDHealth +tests_bluetooth_AdapterLEHealth +tests_bluetooth_AdapterMDHealth +tests_bluetooth_AdapterMTBF +tests_bluetooth_AdapterPowerMeasure +tests_bluetooth_AdapterQuickHealth +tests_bluetooth_AdapterSAHealth +tests_bluetooth_PeerUpdate +tests_bluetooth_AdapterSRHealth cros_host cros_workon_tree_ +buildcheck autotest opengles
+IUSE=+autotest +tests_bluetooth_AdapterAdvHealth +tests_bluetooth_AdapterAdvMonitor +tests_bluetooth_AdapterAudioLink +tests_bluetooth_AdapterAUHealth +tests_bluetooth_AdapterCLHealth +tests_bluetooth_AdapterEPHealth +tests_bluetooth_AdapterLEAdvertising +tests_bluetooth_AdapterLEBetterTogether +tests_bluetooth_AdapterLEHIDHealth +tests_bluetooth_AdapterLEHealth +tests_bluetooth_AdapterLLTHealth +tests_bluetooth_AdapterMDHealth +tests_bluetooth_AdapterMTBF +tests_bluetooth_AdapterPowerMeasure +tests_bluetooth_AdapterQuickHealth +tests_bluetooth_AdapterSAHealth +tests_bluetooth_AdapterSRHealth +tests_bluetooth_PeerUpdate cros_host cros_workon_tree_ +buildcheck autotest opengles
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-server-tests-0.0.2-r4126 autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b1f1b1f3c2e692b70e6730caf66e8f97
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=28307866022d2c775f0e45d0b6e71c61
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-shill-0.0.1-r3355 b/metadata/md5-cache/chromeos-base/autotest-server-tests-shill-0.0.1-r3355
deleted file mode 100644
index 2dba8ca..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-server-tests-shill-0.0.1-r3355
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DESCRIPTION=Autotest server tests for shill
-EAPI=4
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=-chromeless_tests +autotest -chromeless_tty +tests_network_WiFi_APSupportedRates +tests_network_WiFi_AssocConfigPerformance +tests_network_WiFi_AttenuatedPerf +tests_network_WiFi_BeaconInterval +tests_network_WiFi_BgscanBackoff +tests_network_WiFi_BluetoothScanPerf +tests_network_WiFi_BluetoothStreamPerf +tests_network_WiFi_BSSTMReq +tests_network_WiFi_BT_AntennaCoex +tests_network_WiFi_ChannelHop +tests_network_WiFi_ChannelScanDwellTime +tests_network_WiFi_ChaosConfigFailure +tests_network_WiFi_ChaosConnectDisconnect +tests_network_WiFi_ChaosLongConnect !chromeless_tty ( !chromeless_tests ( +tests_cellular_ChromeEndToEnd +tests_network_WiFi_ChromeEndToEnd +tests_network_WiFi_RoamEndToEnd +tests_network_WiFi_RoamSuspendEndToEnd ) ) +tests_network_WiFi_ConnectionIdentifier +tests_network_WiFi_CSA +tests_network_WiFi_CSADisconnect +tests_network_WiFi_DarkResumeActiveScans +tests_network_WiFi_DisableEnable +tests_network_WiFi_DisableRandomMACAddress +tests_network_WiFi_DisconnectReason +tests_network_WiFi_DTIMPeriod +tests_network_WiFi_FastReconnectInDarkResume +tests_network_WiFi_GTK +tests_network_WiFi_HiddenRemains +tests_network_WiFi_HiddenScan +tests_network_WiFi_LinkMonitorFailure +tests_network_WiFi_MalformedProbeResp +tests_network_WiFi_MultiAuth +tests_network_WiFi_OverlappingBSSScan +tests_network_WiFi_Perf +tests_network_WiFi_PMKSACaching +tests_network_WiFi_Prefer5Ghz +tests_network_WiFi_ProfileBasic +tests_network_WiFi_ProfileGUID +tests_network_WiFi_PTK +tests_network_WiFi_RandomMACAddress +tests_network_WiFi_RateControl +tests_network_WiFi_Reassociate +tests_network_WiFi_ReconnectInDarkResume +tests_network_WiFi_Reset +tests_network_WiFi_Roam +tests_network_WiFi_RoamDbus +tests_network_WiFi_RoamFT +tests_network_WiFi_RoamSuspendTimeout +tests_network_WiFi_SecChange +tests_network_WiFi_SetOptionalDhcpProperties +tests_network_WiFi_SimpleConnect +tests_network_WiFi_SSIDSwitchBack +tests_network_WiFi_SuspendStress +tests_network_WiFi_StressTest +tests_network_WiFi_Throttle +tests_network_WiFi_UpdateRouter +tests_network_WiFi_VerifyRouter +tests_network_WiFi_VisibleScan +tests_network_WiFi_WakeOnDisconnect +tests_network_WiFi_WakeOnSSID +tests_network_WiFi_WakeOnWiFiThrottling +tests_network_WiFi_WoWLAN +tests_network_WiFi_WMM cros_host cros_workon_tree_67c30b01c0b67d27e2ee30c3a08130d0b95a70ab +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d7872b7c47ea09a9c1f6271a372ed844
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-shill-0.0.1-r3402 b/metadata/md5-cache/chromeos-base/autotest-server-tests-shill-0.0.1-r3402
new file mode 100644
index 0000000..743b624
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-server-tests-shill-0.0.1-r3402
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DESCRIPTION=Autotest server tests for shill
+EAPI=4
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=-chromeless_tests +autotest -chromeless_tty +tests_network_WiFi_APSupportedRates +tests_network_WiFi_AssocConfigPerformance +tests_network_WiFi_AttenuatedPerf +tests_network_WiFi_BeaconInterval +tests_network_WiFi_BgscanBackoff +tests_network_WiFi_BluetoothScanPerf +tests_network_WiFi_BluetoothStreamPerf +tests_network_WiFi_BSSTMReq +tests_network_WiFi_BT_AntennaCoex +tests_network_WiFi_ChannelHop +tests_network_WiFi_ChannelScanDwellTime +tests_network_WiFi_ChaosConfigFailure +tests_network_WiFi_ChaosConnectDisconnect +tests_network_WiFi_ChaosLongConnect !chromeless_tty ( !chromeless_tests ( +tests_cellular_ChromeEndToEnd +tests_network_WiFi_ChromeEndToEnd +tests_network_WiFi_RoamEndToEnd +tests_network_WiFi_RoamSuspendEndToEnd ) ) +tests_network_WiFi_CSA +tests_network_WiFi_DarkResumeActiveScans +tests_network_WiFi_DisableEnable +tests_network_WiFi_DisableRandomMACAddress +tests_network_WiFi_DisconnectReason +tests_network_WiFi_DTIMPeriod +tests_network_WiFi_FastReconnectInDarkResume +tests_network_WiFi_GTK +tests_network_WiFi_HiddenRemains +tests_network_WiFi_HiddenScan +tests_network_WiFi_LinkMonitorFailure +tests_network_WiFi_MalformedProbeResp +tests_network_WiFi_MultiAuth +tests_network_WiFi_OverlappingBSSScan +tests_network_WiFi_Perf +tests_network_WiFi_PMKSACaching +tests_network_WiFi_Prefer5Ghz +tests_network_WiFi_ProfileBasic +tests_network_WiFi_ProfileGUID +tests_network_WiFi_PTK +tests_network_WiFi_RandomMACAddress +tests_network_WiFi_Reassociate +tests_network_WiFi_ReconnectInDarkResume +tests_network_WiFi_Reset +tests_network_WiFi_Roam +tests_network_WiFi_RoamDbus +tests_network_WiFi_RoamFT +tests_network_WiFi_RoamSuspendTimeout +tests_network_WiFi_SecChange +tests_network_WiFi_SetOptionalDhcpProperties +tests_network_WiFi_SimpleConnect +tests_network_WiFi_SSIDSwitchBack +tests_network_WiFi_SuspendStress +tests_network_WiFi_StressTest +tests_network_WiFi_Throttle +tests_network_WiFi_UpdateRouter +tests_network_WiFi_VerifyRouter +tests_network_WiFi_VisibleScan +tests_network_WiFi_WakeOnDisconnect +tests_network_WiFi_WakeOnSSID +tests_network_WiFi_WakeOnWiFiThrottling +tests_network_WiFi_WoWLAN +tests_network_WiFi_WMM cros_host cros_workon_tree_45230f81767e1e2835752c13a07d5ebd03df8a04 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=dd938a823dd3b09e8508410cc9608b73
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-shill-9999 b/metadata/md5-cache/chromeos-base/autotest-server-tests-shill-9999
index f1f780b..bd41b79 100644
--- a/metadata/md5-cache/chromeos-base/autotest-server-tests-shill-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-server-tests-shill-9999
@@ -2,11 +2,11 @@
 DESCRIPTION=Autotest server tests for shill
 EAPI=4
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=-chromeless_tests +autotest -chromeless_tty +tests_network_WiFi_APSupportedRates +tests_network_WiFi_AssocConfigPerformance +tests_network_WiFi_AttenuatedPerf +tests_network_WiFi_BeaconInterval +tests_network_WiFi_BgscanBackoff +tests_network_WiFi_BluetoothScanPerf +tests_network_WiFi_BluetoothStreamPerf +tests_network_WiFi_BSSTMReq +tests_network_WiFi_BT_AntennaCoex +tests_network_WiFi_ChannelHop +tests_network_WiFi_ChannelScanDwellTime +tests_network_WiFi_ChaosConfigFailure +tests_network_WiFi_ChaosConnectDisconnect +tests_network_WiFi_ChaosLongConnect !chromeless_tty ( !chromeless_tests ( +tests_cellular_ChromeEndToEnd +tests_network_WiFi_ChromeEndToEnd +tests_network_WiFi_RoamEndToEnd +tests_network_WiFi_RoamSuspendEndToEnd ) ) +tests_network_WiFi_ConnectionIdentifier +tests_network_WiFi_CSA +tests_network_WiFi_CSADisconnect +tests_network_WiFi_DarkResumeActiveScans +tests_network_WiFi_DisableEnable +tests_network_WiFi_DisableRandomMACAddress +tests_network_WiFi_DisconnectReason +tests_network_WiFi_DTIMPeriod +tests_network_WiFi_FastReconnectInDarkResume +tests_network_WiFi_GTK +tests_network_WiFi_HiddenRemains +tests_network_WiFi_HiddenScan +tests_network_WiFi_LinkMonitorFailure +tests_network_WiFi_MalformedProbeResp +tests_network_WiFi_MultiAuth +tests_network_WiFi_OverlappingBSSScan +tests_network_WiFi_Perf +tests_network_WiFi_PMKSACaching +tests_network_WiFi_Prefer5Ghz +tests_network_WiFi_ProfileBasic +tests_network_WiFi_ProfileGUID +tests_network_WiFi_PTK +tests_network_WiFi_RandomMACAddress +tests_network_WiFi_RateControl +tests_network_WiFi_Reassociate +tests_network_WiFi_ReconnectInDarkResume +tests_network_WiFi_Reset +tests_network_WiFi_Roam +tests_network_WiFi_RoamDbus +tests_network_WiFi_RoamFT +tests_network_WiFi_RoamSuspendTimeout +tests_network_WiFi_SecChange +tests_network_WiFi_SetOptionalDhcpProperties +tests_network_WiFi_SimpleConnect +tests_network_WiFi_SSIDSwitchBack +tests_network_WiFi_SuspendStress +tests_network_WiFi_StressTest +tests_network_WiFi_Throttle +tests_network_WiFi_UpdateRouter +tests_network_WiFi_VerifyRouter +tests_network_WiFi_VisibleScan +tests_network_WiFi_WakeOnDisconnect +tests_network_WiFi_WakeOnSSID +tests_network_WiFi_WakeOnWiFiThrottling +tests_network_WiFi_WoWLAN +tests_network_WiFi_WMM cros_host cros_workon_tree_ +buildcheck autotest opengles
+IUSE=-chromeless_tests +autotest -chromeless_tty +tests_network_WiFi_APSupportedRates +tests_network_WiFi_AssocConfigPerformance +tests_network_WiFi_AttenuatedPerf +tests_network_WiFi_BeaconInterval +tests_network_WiFi_BgscanBackoff +tests_network_WiFi_BluetoothScanPerf +tests_network_WiFi_BluetoothStreamPerf +tests_network_WiFi_BSSTMReq +tests_network_WiFi_BT_AntennaCoex +tests_network_WiFi_ChannelHop +tests_network_WiFi_ChannelScanDwellTime +tests_network_WiFi_ChaosConfigFailure +tests_network_WiFi_ChaosConnectDisconnect +tests_network_WiFi_ChaosLongConnect !chromeless_tty ( !chromeless_tests ( +tests_cellular_ChromeEndToEnd +tests_network_WiFi_ChromeEndToEnd +tests_network_WiFi_RoamEndToEnd +tests_network_WiFi_RoamSuspendEndToEnd ) ) +tests_network_WiFi_CSA +tests_network_WiFi_DarkResumeActiveScans +tests_network_WiFi_DisableEnable +tests_network_WiFi_DisableRandomMACAddress +tests_network_WiFi_DisconnectReason +tests_network_WiFi_DTIMPeriod +tests_network_WiFi_FastReconnectInDarkResume +tests_network_WiFi_GTK +tests_network_WiFi_HiddenRemains +tests_network_WiFi_HiddenScan +tests_network_WiFi_LinkMonitorFailure +tests_network_WiFi_MalformedProbeResp +tests_network_WiFi_MultiAuth +tests_network_WiFi_OverlappingBSSScan +tests_network_WiFi_Perf +tests_network_WiFi_PMKSACaching +tests_network_WiFi_Prefer5Ghz +tests_network_WiFi_ProfileBasic +tests_network_WiFi_ProfileGUID +tests_network_WiFi_PTK +tests_network_WiFi_RandomMACAddress +tests_network_WiFi_Reassociate +tests_network_WiFi_ReconnectInDarkResume +tests_network_WiFi_Reset +tests_network_WiFi_Roam +tests_network_WiFi_RoamDbus +tests_network_WiFi_RoamFT +tests_network_WiFi_RoamSuspendTimeout +tests_network_WiFi_SecChange +tests_network_WiFi_SetOptionalDhcpProperties +tests_network_WiFi_SimpleConnect +tests_network_WiFi_SSIDSwitchBack +tests_network_WiFi_SuspendStress +tests_network_WiFi_StressTest +tests_network_WiFi_Throttle +tests_network_WiFi_UpdateRouter +tests_network_WiFi_VerifyRouter +tests_network_WiFi_VisibleScan +tests_network_WiFi_WakeOnDisconnect +tests_network_WiFi_WakeOnSSID +tests_network_WiFi_WakeOnWiFiThrottling +tests_network_WiFi_WoWLAN +tests_network_WiFi_WMM cros_host cros_workon_tree_ +buildcheck autotest opengles
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=6fa752d9f8b507d4a99049e9e07b16b0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=0a31ae92188b6fd3d953d367cf96bfd5
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-tast-0.0.1-r145 b/metadata/md5-cache/chromeos-base/autotest-server-tests-tast-0.0.1-r145
deleted file mode 100644
index 700834b..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-server-tests-tast-0.0.1-r145
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DESCRIPTION=Autotest server tests for running Tast-based tests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
-IUSE=+autotest +tests_graphics_TraceReplayExtended +tests_tast cros_host cros_workon_tree_ba13741a280b0dc0bdbe0f5e0bf11ec5bb91921e +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e29ef7a0b8f4f06691de7e5f84b5f336
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-tast-0.0.1-r206 b/metadata/md5-cache/chromeos-base/autotest-server-tests-tast-0.0.1-r206
new file mode 100644
index 0000000..a4b5149
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-server-tests-tast-0.0.1-r206
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DESCRIPTION=Autotest server tests for running Tast-based tests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
+IUSE=+autotest +tests_graphics_TraceReplayExtended +tests_tast cros_host cros_workon_tree_92d41e1d76de84e19ce924a08931bf722c8a6b57 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=012ea6806bac9f8199d7f0c0203d2870
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-tast-9999 b/metadata/md5-cache/chromeos-base/autotest-server-tests-tast-9999
index d186a47..655266f 100644
--- a/metadata/md5-cache/chromeos-base/autotest-server-tests-tast-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-server-tests-tast-9999
@@ -8,5 +8,5 @@
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=04f84008863ec711f9bfd816fd13fa00
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-telemetry-0.0.1-r3240 b/metadata/md5-cache/chromeos-base/autotest-server-tests-telemetry-0.0.1-r3240
deleted file mode 100644
index 842d2a2..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-server-tests-telemetry-0.0.1-r3240
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-server-tests-0.0.2
-DESCRIPTION=Autotest server tests for shill
-EAPI=4
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_telemetry_AFDOGenerate +tests_telemetry_Benchmarks +tests_telemetry_Crosperf +tests_telemetry_CrosTests cros_host cros_workon_tree_a57877543603549c8eedff95ea99018cde9019a6 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=3bc8e1d17a1136b7159583584cf1d0af
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-telemetry-0.0.1-r3244 b/metadata/md5-cache/chromeos-base/autotest-server-tests-telemetry-0.0.1-r3244
new file mode 100644
index 0000000..bad52f0
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-server-tests-telemetry-0.0.1-r3244
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-server-tests-0.0.2
+DESCRIPTION=Autotest server tests for shill
+EAPI=4
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +tests_telemetry_AFDOGenerate +tests_telemetry_Benchmarks +tests_telemetry_Crosperf +tests_telemetry_CrosTests cros_host cros_workon_tree_d65e30706766190d6734a91965f32105b55496cf +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=f158e953f0bfb597e8413a9e0eb1c443
diff --git a/metadata/md5-cache/chromeos-base/autotest-server-tests-telemetry-9999 b/metadata/md5-cache/chromeos-base/autotest-server-tests-telemetry-9999
index 5d0a305..8d6005f 100644
--- a/metadata/md5-cache/chromeos-base/autotest-server-tests-telemetry-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-server-tests-telemetry-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ea9276697dcedaecdfa639af453c8a00
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-0.0.4-r8872 b/metadata/md5-cache/chromeos-base/autotest-tests-0.0.4-r8872
deleted file mode 100644
index c9978b1..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-0.0.4-r8872
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=>=chromeos-base/autotest-deps-0.0.3 !<=chromeos-base/autotest-factory-0.0.1-r4445 dev-python/numpy dev-python/pygobject dev-python/pytest dev-python/python-uinput media-sound/sox sys-apps/ethtool vaapi? ( x11-libs/libva ) virtual/autotest-tests tests_dbench? ( dev-libs/libaio ) tests_platform_MetricsUploader? ( >=chromeos-base/metrics-0.0.1-r3152 dev-python/protobuf-python ) tests_platform_SecureEraseFile? ( chromeos-base/secure-erase-file ) tests_hardware_MemoryLatency? ( app-benchmarks/lmbench ) tests_hardware_MemoryThroughput? ( app-benchmarks/lmbench ) tests_hardware_MemoryZRAMThroughput? ( app-benchmarks/microbenchmarks ) tests_kernel_Lmbench? ( app-benchmarks/lmbench ) arc-camera3? ( tests_camera_HAL3? ( chromeos-base/autotest-deps-camera-hal3 ) tests_camera_HAL3Perf? ( chromeos-base/autotest-deps-camera-hal3 ) ) tests_camera_V4L2? ( media-libs/libyuv dev-libs/re2 ) tests_xfsFilesystemTestSuite? ( app-benchmarks/xfstests ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-DESCRIPTION=Autotest tests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=arc-camera3 biod -chromeless_tests -chromeless_tty +crash_reporting cups dlc_test +encrypted_stateful +network_time +passive_metrics +profile vaapi +autotest x86? ( +tests_xfsFilesystemTestSuite +tests_hardware_UnsafeMemory ) amd64? ( +tests_xfsFilesystemTestSuite +tests_hardware_UnsafeMemory ) +tests_profiler_sync +tests_compilebench +tests_crashme +tests_dbench +tests_ddtest +tests_disktest +tests_fsx +tests_hackbench +tests_iperf +tests_bonnie +tests_iozone +tests_netpipe +tests_sleeptest +tests_kernel_sysrq_info +tests_unixbench +tests_autoupdate_Backoff +tests_autoupdate_BadMetadata +tests_autoupdate_CannedOmahaUpdate +tests_autoupdate_DisconnectReconnectNetwork dlc_test? ( +tests_autoupdate_InstallAndUpdateDLC ) +tests_autoupdate_PeriodicCheck +tests_autoupdate_UrlSwitch +tests_blktestsSuiteAll +tests_blktestsSuiteLoopOverBlk +tests_blktestsSuiteLoopOverFile +tests_blktestsSuiteRealBlk +tests_camera_V4L2 arc-camera3? ( +tests_camera_HAL3 +tests_camera_HAL3Perf ) +tests_dummy_Fail +tests_dummy_Pass +tests_dummy_SynchronousOffload tests_example_UnitTest +tests_firmware_LockedME +tests_firmware_RomSize +tests_firmware_SetFWMP +tests_firmware_VbootCrypto +tests_flaky_test +tests_hardware_Badblocks +tests_hardware_DiskSize +tests_hardware_EC +tests_hardware_EepromWriteProtect +tests_hardware_GobiGPS +tests_hardware_GPIOSwitches +tests_hardware_GPS +tests_hardware_I2CProbe +tests_hardware_Interrupt +tests_hardware_Keyboard +tests_hardware_LightSensor +tests_hardware_MemoryLatency +tests_hardware_MemoryThroughput +tests_hardware_MemoryZRAMThroughput +tests_hardware_Memtester +tests_hardware_MultiReader +tests_hardware_ProbeComponents +tests_hardware_RamFio +tests_hardware_RealtekCardReader +tests_hardware_Resolution +tests_hardware_SAT +tests_hardware_Smartctl +tests_hardware_SsdDetection +tests_hardware_StorageFio +tests_hardware_StorageFioOther +tests_hardware_StorageTrim +tests_hardware_StorageWearoutDetect +tests_hardware_TouchScreenPowerCycles tests_hardware_TouchScreenPresent +tests_hardware_TrimIntegrity +tests_infra_FirmwareAutoupdate +tests_kernel_AsyncDriverProbe +tests_kernel_FirmwareRequest +tests_kernel_CrosECSysfsAccel +tests_kernel_Delay +tests_kernel_fs_Punybench +tests_kernel_Ktime +tests_kernel_Lmbench +tests_kernel_Memory_Ramoop +tests_kernel_SchedBandwith crash_reporting? ( +tests_logging_CrashSender +tests_logging_KernelCrash +tests_logging_UdevCrash +tests_logging_UserCrash +tests_platform_AnomalyDetector ) +tests_network_EthCaps +tests_network_EthernetStressPlug +tests_network_Ipv6SimpleNegotiation +tests_network_NegotiatedLANSpeed +tests_platform_AccurateTime +tests_platform_AesThroughput !chromeless_tty? ( +tests_platform_BootPerf ) +tests_platform_CheckErrorsInLog +tests_platform_CleanShutdown +tests_platform_Crossystem +tests_platform_Crouton +tests_platform_DaemonsRespawn +tests_platform_DBusMachineIdRotation encrypted_stateful? ( +tests_platform_EncryptedStateful ) +tests_platform_ExternalUSBBootStress +tests_platform_ExternalUSBStress +tests_platform_FileNum +tests_platform_FileSize biod? ( +tests_platform_Fingerprint ) +tests_platform_Firewall +tests_platform_FullyChargedPowerStatus +tests_platform_HighResTimers +tests_platform_ImageLoader +tests_platform_ImageLoaderServer +tests_platform_KernelVersion +tests_platform_LibCBench +tests_platform_LogDupSuppression +tests_platform_LogNonKernelKmsg +tests_platform_MemCheck +tests_platform_MemoryMonitor chromeless_tty? ( +tests_platform_MetricsUploader ) +tests_platform_NetParms +tests_platform_OpenSSLActual profile? ( +tests_platform_Perf +tests_platform_Quipper ) cups? ( +tests_platform_PrinterPpds ) +tests_platform_Rootdev +tests_platform_SecureEraseFile !chromeless_tty? ( +tests_platform_SessionManagerStateKeyGeneration ) +tests_platform_TabletMode +tests_platform_TempFS network_time? ( +tests_platform_TLSDate +tests_platform_TLSDateActual ) +tests_platform_UdevVars +tests_suite_HWConfig +tests_suite_HWQual +tests_system_ColdBoot +tests_touch_HasInput +tests_touch_UpdateErrors +tests_touch_WakeupSource +tests_usbpd_DisplayPortSink +tests_vpd_ReadWrite cros-debug cros_host cros_workon_tree_bc717cc5e57b98e8bc662c4e14dca891ba53d5ad +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=>=chromeos-base/autotest-deps-0.0.3 !<=chromeos-base/autotest-factory-0.0.1-r4445 dev-python/numpy dev-python/pygobject dev-python/pytest dev-python/python-uinput media-sound/sox sys-apps/ethtool vaapi? ( x11-libs/libva ) virtual/autotest-tests tests_dbench? ( dev-libs/libaio ) tests_platform_MetricsUploader? ( >=chromeos-base/metrics-0.0.1-r3152 dev-python/protobuf-python ) tests_platform_SecureEraseFile? ( chromeos-base/secure-erase-file ) tests_hardware_MemoryLatency? ( app-benchmarks/lmbench ) tests_hardware_MemoryThroughput? ( app-benchmarks/lmbench ) tests_hardware_MemoryZRAMThroughput? ( app-benchmarks/microbenchmarks ) tests_kernel_Lmbench? ( app-benchmarks/lmbench ) arc-camera3? ( tests_camera_HAL3? ( chromeos-base/autotest-deps-camera-hal3 ) tests_camera_HAL3Perf? ( chromeos-base/autotest-deps-camera-hal3 ) ) tests_camera_V4L2? ( media-libs/libyuv dev-libs/re2 ) tests_xfsFilesystemTestSuite? ( app-benchmarks/xfstests ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=dda8a4e888d8a87777f4e0585e1d554f
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-0.0.4-r8903 b/metadata/md5-cache/chromeos-base/autotest-tests-0.0.4-r8903
new file mode 100644
index 0000000..1cc8516
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-0.0.4-r8903
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=>=chromeos-base/autotest-deps-0.0.3 !<=chromeos-base/autotest-factory-0.0.1-r4445 dev-python/numpy dev-python/pygobject dev-python/pytest dev-python/python-uinput media-sound/sox sys-apps/ethtool vaapi? ( x11-libs/libva ) virtual/autotest-tests tests_dbench? ( dev-libs/libaio ) tests_platform_MetricsUploader? ( >=chromeos-base/metrics-0.0.1-r3152 dev-python/protobuf-python ) tests_platform_SecureEraseFile? ( chromeos-base/secure-erase-file ) tests_hardware_MemoryLatency? ( app-benchmarks/lmbench ) tests_hardware_MemoryThroughput? ( app-benchmarks/lmbench ) tests_hardware_MemoryZRAMThroughput? ( app-benchmarks/microbenchmarks ) tests_kernel_Lmbench? ( app-benchmarks/lmbench ) arc-camera3? ( tests_camera_HAL3? ( chromeos-base/autotest-deps-camera-hal3 ) tests_camera_HAL3Perf? ( chromeos-base/autotest-deps-camera-hal3 ) ) tests_camera_V4L2? ( media-libs/libyuv dev-libs/re2 ) tests_xfsFilesystemTestSuite? ( app-benchmarks/xfstests ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+DESCRIPTION=Autotest tests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=arc-camera3 biod -chromeless_tests -chromeless_tty +crash_reporting cups dlc_test +encrypted_stateful +network_time +passive_metrics +profile vaapi +autotest x86? ( +tests_xfsFilesystemTestSuite +tests_hardware_UnsafeMemory ) amd64? ( +tests_xfsFilesystemTestSuite +tests_hardware_UnsafeMemory ) +tests_profiler_sync +tests_compilebench +tests_crashme +tests_dbench +tests_ddtest +tests_disktest +tests_fsx +tests_hackbench +tests_iperf +tests_bonnie +tests_iozone +tests_netpipe +tests_sleeptest +tests_kernel_sysrq_info +tests_unixbench +tests_autoupdate_Backoff +tests_autoupdate_BadMetadata +tests_autoupdate_CannedOmahaUpdate +tests_autoupdate_DisconnectReconnectNetwork dlc_test? ( +tests_autoupdate_InstallAndUpdateDLC ) +tests_autoupdate_PeriodicCheck +tests_autoupdate_UrlSwitch +tests_blktestsSuiteAll +tests_blktestsSuiteLoopOverBlk +tests_blktestsSuiteLoopOverFile +tests_blktestsSuiteRealBlk +tests_camera_V4L2 arc-camera3? ( +tests_camera_HAL3 +tests_camera_HAL3Perf ) +tests_dummy_Fail +tests_dummy_Pass +tests_dummy_SynchronousOffload tests_example_UnitTest +tests_firmware_CbfsMcache +tests_firmware_LockedME +tests_firmware_CheckEOPState +tests_firmware_RomSize +tests_firmware_SetFWMP +tests_firmware_VbootCrypto +tests_flaky_test +tests_hardware_Badblocks +tests_hardware_DiskSize +tests_hardware_EC +tests_hardware_EepromWriteProtect +tests_hardware_GobiGPS +tests_hardware_GPIOSwitches +tests_hardware_GPS +tests_hardware_I2CProbe +tests_hardware_Interrupt +tests_hardware_Keyboard +tests_hardware_LightSensor +tests_hardware_MemoryLatency +tests_hardware_MemoryThroughput +tests_hardware_MemoryZRAMThroughput +tests_hardware_Memtester +tests_hardware_MultiReader +tests_hardware_ProbeComponents +tests_hardware_RamFio +tests_hardware_RealtekCardReader +tests_hardware_Resolution +tests_hardware_SAT +tests_hardware_Smartctl +tests_hardware_SsdDetection +tests_hardware_StorageFio +tests_hardware_StorageFioOther +tests_hardware_StorageTrim +tests_hardware_StorageWearoutDetect +tests_hardware_TouchScreenPowerCycles tests_hardware_TouchScreenPresent +tests_hardware_TrimIntegrity +tests_infra_FirmwareAutoupdate +tests_kernel_AsyncDriverProbe +tests_kernel_FirmwareRequest +tests_kernel_CrosECSysfsAccel +tests_kernel_Delay +tests_kernel_fs_Punybench +tests_kernel_Ktime +tests_kernel_Lmbench +tests_kernel_Memory_Ramoop +tests_kernel_SchedBandwith crash_reporting? ( +tests_logging_CrashSender +tests_logging_KernelCrash +tests_logging_UdevCrash +tests_logging_UserCrash +tests_platform_AnomalyDetector ) +tests_network_EthCaps +tests_network_EthernetStressPlug +tests_network_Ipv6SimpleNegotiation +tests_network_NegotiatedLANSpeed +tests_platform_AccurateTime +tests_platform_AesThroughput !chromeless_tty? ( +tests_platform_BootPerf ) +tests_platform_CheckErrorsInLog +tests_platform_CleanShutdown +tests_platform_Crossystem +tests_platform_Crouton +tests_platform_DaemonsRespawn +tests_platform_DBusMachineIdRotation encrypted_stateful? ( +tests_platform_EncryptedStateful ) +tests_platform_ExternalUSBBootStress +tests_platform_ExternalUSBStress +tests_platform_FileNum +tests_platform_FileSize biod? ( +tests_platform_Fingerprint ) +tests_platform_Firewall +tests_platform_FullyChargedPowerStatus +tests_platform_HighResTimers +tests_platform_ImageLoader +tests_platform_ImageLoaderServer +tests_platform_KernelVersion +tests_platform_LibCBench +tests_platform_LogDupSuppression +tests_platform_LogNonKernelKmsg +tests_platform_MemCheck +tests_platform_MemoryMonitor chromeless_tty? ( +tests_platform_MetricsUploader ) +tests_platform_NetParms +tests_platform_OpenSSLActual profile? ( +tests_platform_Perf +tests_platform_Quipper ) cups? ( +tests_platform_PrinterPpds ) +tests_platform_Rootdev +tests_platform_SecureEraseFile !chromeless_tty? ( +tests_platform_SessionManagerStateKeyGeneration ) +tests_platform_TabletMode +tests_platform_TempFS network_time? ( +tests_platform_TLSDate +tests_platform_TLSDateActual ) +tests_platform_UdevVars +tests_suite_HWConfig +tests_suite_HWQual +tests_system_ColdBoot +tests_touch_HasInput +tests_touch_UpdateErrors +tests_touch_WakeupSource +tests_usbpd_DisplayPortSink +tests_vpd_ReadWrite cros-debug cros_host cros_workon_tree_45230f81767e1e2835752c13a07d5ebd03df8a04 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=>=chromeos-base/autotest-deps-0.0.3 !<=chromeos-base/autotest-factory-0.0.1-r4445 dev-python/numpy dev-python/pygobject dev-python/pytest dev-python/python-uinput media-sound/sox sys-apps/ethtool vaapi? ( x11-libs/libva ) virtual/autotest-tests tests_dbench? ( dev-libs/libaio ) tests_platform_MetricsUploader? ( >=chromeos-base/metrics-0.0.1-r3152 dev-python/protobuf-python ) tests_platform_SecureEraseFile? ( chromeos-base/secure-erase-file ) tests_hardware_MemoryLatency? ( app-benchmarks/lmbench ) tests_hardware_MemoryThroughput? ( app-benchmarks/lmbench ) tests_hardware_MemoryZRAMThroughput? ( app-benchmarks/microbenchmarks ) tests_kernel_Lmbench? ( app-benchmarks/lmbench ) arc-camera3? ( tests_camera_HAL3? ( chromeos-base/autotest-deps-camera-hal3 ) tests_camera_HAL3Perf? ( chromeos-base/autotest-deps-camera-hal3 ) ) tests_camera_V4L2? ( media-libs/libyuv dev-libs/re2 ) tests_xfsFilesystemTestSuite? ( app-benchmarks/xfstests ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=58e8fd21bdc2c00f756292c4071b60cf
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-9999
index 6017a4c..bfd33c3 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-9999
@@ -3,11 +3,11 @@
 DESCRIPTION=Autotest tests
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=arc-camera3 biod -chromeless_tests -chromeless_tty +crash_reporting cups dlc_test +encrypted_stateful +network_time +passive_metrics +profile vaapi +autotest x86? ( +tests_xfsFilesystemTestSuite +tests_hardware_UnsafeMemory ) amd64? ( +tests_xfsFilesystemTestSuite +tests_hardware_UnsafeMemory ) +tests_profiler_sync +tests_compilebench +tests_crashme +tests_dbench +tests_ddtest +tests_disktest +tests_fsx +tests_hackbench +tests_iperf +tests_bonnie +tests_iozone +tests_netpipe +tests_sleeptest +tests_kernel_sysrq_info +tests_unixbench +tests_autoupdate_Backoff +tests_autoupdate_BadMetadata +tests_autoupdate_CannedOmahaUpdate +tests_autoupdate_DisconnectReconnectNetwork dlc_test? ( +tests_autoupdate_InstallAndUpdateDLC ) +tests_autoupdate_PeriodicCheck +tests_autoupdate_UrlSwitch +tests_blktestsSuiteAll +tests_blktestsSuiteLoopOverBlk +tests_blktestsSuiteLoopOverFile +tests_blktestsSuiteRealBlk +tests_camera_V4L2 arc-camera3? ( +tests_camera_HAL3 +tests_camera_HAL3Perf ) +tests_dummy_Fail +tests_dummy_Pass +tests_dummy_SynchronousOffload tests_example_UnitTest +tests_firmware_LockedME +tests_firmware_RomSize +tests_firmware_SetFWMP +tests_firmware_VbootCrypto +tests_flaky_test +tests_hardware_Badblocks +tests_hardware_DiskSize +tests_hardware_EC +tests_hardware_EepromWriteProtect +tests_hardware_GobiGPS +tests_hardware_GPIOSwitches +tests_hardware_GPS +tests_hardware_I2CProbe +tests_hardware_Interrupt +tests_hardware_Keyboard +tests_hardware_LightSensor +tests_hardware_MemoryLatency +tests_hardware_MemoryThroughput +tests_hardware_MemoryZRAMThroughput +tests_hardware_Memtester +tests_hardware_MultiReader +tests_hardware_ProbeComponents +tests_hardware_RamFio +tests_hardware_RealtekCardReader +tests_hardware_Resolution +tests_hardware_SAT +tests_hardware_Smartctl +tests_hardware_SsdDetection +tests_hardware_StorageFio +tests_hardware_StorageFioOther +tests_hardware_StorageTrim +tests_hardware_StorageWearoutDetect +tests_hardware_TouchScreenPowerCycles tests_hardware_TouchScreenPresent +tests_hardware_TrimIntegrity +tests_infra_FirmwareAutoupdate +tests_kernel_AsyncDriverProbe +tests_kernel_FirmwareRequest +tests_kernel_CrosECSysfsAccel +tests_kernel_Delay +tests_kernel_fs_Punybench +tests_kernel_Ktime +tests_kernel_Lmbench +tests_kernel_Memory_Ramoop +tests_kernel_SchedBandwith crash_reporting? ( +tests_logging_CrashSender +tests_logging_KernelCrash +tests_logging_UdevCrash +tests_logging_UserCrash +tests_platform_AnomalyDetector ) +tests_network_EthCaps +tests_network_EthernetStressPlug +tests_network_Ipv6SimpleNegotiation +tests_network_NegotiatedLANSpeed +tests_platform_AccurateTime +tests_platform_AesThroughput !chromeless_tty? ( +tests_platform_BootPerf ) +tests_platform_CheckErrorsInLog +tests_platform_CleanShutdown +tests_platform_Crossystem +tests_platform_Crouton +tests_platform_DaemonsRespawn +tests_platform_DBusMachineIdRotation encrypted_stateful? ( +tests_platform_EncryptedStateful ) +tests_platform_ExternalUSBBootStress +tests_platform_ExternalUSBStress +tests_platform_FileNum +tests_platform_FileSize biod? ( +tests_platform_Fingerprint ) +tests_platform_Firewall +tests_platform_FullyChargedPowerStatus +tests_platform_HighResTimers +tests_platform_ImageLoader +tests_platform_ImageLoaderServer +tests_platform_KernelVersion +tests_platform_LibCBench +tests_platform_LogDupSuppression +tests_platform_LogNonKernelKmsg +tests_platform_MemCheck +tests_platform_MemoryMonitor chromeless_tty? ( +tests_platform_MetricsUploader ) +tests_platform_NetParms +tests_platform_OpenSSLActual profile? ( +tests_platform_Perf +tests_platform_Quipper ) cups? ( +tests_platform_PrinterPpds ) +tests_platform_Rootdev +tests_platform_SecureEraseFile !chromeless_tty? ( +tests_platform_SessionManagerStateKeyGeneration ) +tests_platform_TabletMode +tests_platform_TempFS network_time? ( +tests_platform_TLSDate +tests_platform_TLSDateActual ) +tests_platform_UdevVars +tests_suite_HWConfig +tests_suite_HWQual +tests_system_ColdBoot +tests_touch_HasInput +tests_touch_UpdateErrors +tests_touch_WakeupSource +tests_usbpd_DisplayPortSink +tests_vpd_ReadWrite cros-debug cros_host cros_workon_tree_ +buildcheck autotest opengles
+IUSE=arc-camera3 biod -chromeless_tests -chromeless_tty +crash_reporting cups dlc_test +encrypted_stateful +network_time +passive_metrics +profile vaapi +autotest x86? ( +tests_xfsFilesystemTestSuite +tests_hardware_UnsafeMemory ) amd64? ( +tests_xfsFilesystemTestSuite +tests_hardware_UnsafeMemory ) +tests_profiler_sync +tests_compilebench +tests_crashme +tests_dbench +tests_ddtest +tests_disktest +tests_fsx +tests_hackbench +tests_iperf +tests_bonnie +tests_iozone +tests_netpipe +tests_sleeptest +tests_kernel_sysrq_info +tests_unixbench +tests_autoupdate_Backoff +tests_autoupdate_BadMetadata +tests_autoupdate_CannedOmahaUpdate +tests_autoupdate_DisconnectReconnectNetwork dlc_test? ( +tests_autoupdate_InstallAndUpdateDLC ) +tests_autoupdate_PeriodicCheck +tests_autoupdate_UrlSwitch +tests_blktestsSuiteAll +tests_blktestsSuiteLoopOverBlk +tests_blktestsSuiteLoopOverFile +tests_blktestsSuiteRealBlk +tests_camera_V4L2 arc-camera3? ( +tests_camera_HAL3 +tests_camera_HAL3Perf ) +tests_dummy_Fail +tests_dummy_Pass +tests_dummy_SynchronousOffload tests_example_UnitTest +tests_firmware_CbfsMcache +tests_firmware_LockedME +tests_firmware_CheckEOPState +tests_firmware_RomSize +tests_firmware_SetFWMP +tests_firmware_VbootCrypto +tests_flaky_test +tests_hardware_Badblocks +tests_hardware_DiskSize +tests_hardware_EC +tests_hardware_EepromWriteProtect +tests_hardware_GobiGPS +tests_hardware_GPIOSwitches +tests_hardware_GPS +tests_hardware_I2CProbe +tests_hardware_Interrupt +tests_hardware_Keyboard +tests_hardware_LightSensor +tests_hardware_MemoryLatency +tests_hardware_MemoryThroughput +tests_hardware_MemoryZRAMThroughput +tests_hardware_Memtester +tests_hardware_MultiReader +tests_hardware_ProbeComponents +tests_hardware_RamFio +tests_hardware_RealtekCardReader +tests_hardware_Resolution +tests_hardware_SAT +tests_hardware_Smartctl +tests_hardware_SsdDetection +tests_hardware_StorageFio +tests_hardware_StorageFioOther +tests_hardware_StorageTrim +tests_hardware_StorageWearoutDetect +tests_hardware_TouchScreenPowerCycles tests_hardware_TouchScreenPresent +tests_hardware_TrimIntegrity +tests_infra_FirmwareAutoupdate +tests_kernel_AsyncDriverProbe +tests_kernel_FirmwareRequest +tests_kernel_CrosECSysfsAccel +tests_kernel_Delay +tests_kernel_fs_Punybench +tests_kernel_Ktime +tests_kernel_Lmbench +tests_kernel_Memory_Ramoop +tests_kernel_SchedBandwith crash_reporting? ( +tests_logging_CrashSender +tests_logging_KernelCrash +tests_logging_UdevCrash +tests_logging_UserCrash +tests_platform_AnomalyDetector ) +tests_network_EthCaps +tests_network_EthernetStressPlug +tests_network_Ipv6SimpleNegotiation +tests_network_NegotiatedLANSpeed +tests_platform_AccurateTime +tests_platform_AesThroughput !chromeless_tty? ( +tests_platform_BootPerf ) +tests_platform_CheckErrorsInLog +tests_platform_CleanShutdown +tests_platform_Crossystem +tests_platform_Crouton +tests_platform_DaemonsRespawn +tests_platform_DBusMachineIdRotation encrypted_stateful? ( +tests_platform_EncryptedStateful ) +tests_platform_ExternalUSBBootStress +tests_platform_ExternalUSBStress +tests_platform_FileNum +tests_platform_FileSize biod? ( +tests_platform_Fingerprint ) +tests_platform_Firewall +tests_platform_FullyChargedPowerStatus +tests_platform_HighResTimers +tests_platform_ImageLoader +tests_platform_ImageLoaderServer +tests_platform_KernelVersion +tests_platform_LibCBench +tests_platform_LogDupSuppression +tests_platform_LogNonKernelKmsg +tests_platform_MemCheck +tests_platform_MemoryMonitor chromeless_tty? ( +tests_platform_MetricsUploader ) +tests_platform_NetParms +tests_platform_OpenSSLActual profile? ( +tests_platform_Perf +tests_platform_Quipper ) cups? ( +tests_platform_PrinterPpds ) +tests_platform_Rootdev +tests_platform_SecureEraseFile !chromeless_tty? ( +tests_platform_SessionManagerStateKeyGeneration ) +tests_platform_TabletMode +tests_platform_TempFS network_time? ( +tests_platform_TLSDate +tests_platform_TLSDateActual ) +tests_platform_UdevVars +tests_suite_HWConfig +tests_suite_HWQual +tests_system_ColdBoot +tests_touch_HasInput +tests_touch_UpdateErrors +tests_touch_WakeupSource +tests_usbpd_DisplayPortSink +tests_vpd_ReadWrite cros-debug cros_host cros_workon_tree_ +buildcheck autotest opengles
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=>=chromeos-base/autotest-deps-0.0.3 !<=chromeos-base/autotest-factory-0.0.1-r4445 dev-python/numpy dev-python/pygobject dev-python/pytest dev-python/python-uinput media-sound/sox sys-apps/ethtool vaapi? ( x11-libs/libva ) virtual/autotest-tests tests_dbench? ( dev-libs/libaio ) tests_platform_MetricsUploader? ( >=chromeos-base/metrics-0.0.1-r3152 dev-python/protobuf-python ) tests_platform_SecureEraseFile? ( chromeos-base/secure-erase-file ) tests_hardware_MemoryLatency? ( app-benchmarks/lmbench ) tests_hardware_MemoryThroughput? ( app-benchmarks/lmbench ) tests_hardware_MemoryZRAMThroughput? ( app-benchmarks/microbenchmarks ) tests_kernel_Lmbench? ( app-benchmarks/lmbench ) arc-camera3? ( tests_camera_HAL3? ( chromeos-base/autotest-deps-camera-hal3 ) tests_camera_HAL3Perf? ( chromeos-base/autotest-deps-camera-hal3 ) ) tests_camera_V4L2? ( media-libs/libyuv dev-libs/re2 ) tests_xfsFilesystemTestSuite? ( app-benchmarks/xfstests ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=aa2abae91a4cd75a30dd03186ab21d05
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=05954964884befffcc67a382f30856cd
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-arc-public-0.0.1-r1162 b/metadata/md5-cache/chromeos-base/autotest-tests-arc-public-0.0.1-r1162
deleted file mode 100644
index 354ebb3..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-arc-public-0.0.1-r1162
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=dev-python/pyxattr chromeos-base/chromeos-chrome chromeos-base/autotest-chrome chromeos-base/telemetry
-DESCRIPTION=Public ARC autotests
-EAPI=5
-IUSE=+autotest +buildcheck autotest opengles cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-python/pyxattr chromeos-base/chromeos-chrome chromeos-base/autotest-chrome chromeos-base/telemetry autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=621e403b5c25180aa1c5fbfa17f467fd
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-arc-public-0.0.1-r2008 b/metadata/md5-cache/chromeos-base/autotest-tests-arc-public-0.0.1-r2008
new file mode 100644
index 0000000..07b1d25
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-arc-public-0.0.1-r2008
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=dev-python/pyxattr chromeos-base/chromeos-chrome chromeos-base/autotest-chrome chromeos-base/telemetry
+DESCRIPTION=Public ARC autotests
+EAPI=5
+IUSE=+autotest +buildcheck autotest opengles cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-python/pyxattr chromeos-base/chromeos-chrome chromeos-base/autotest-chrome chromeos-base/telemetry autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=d97415d26b6684af69b7c70780a7bf77
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-arc-public-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-arc-public-9999
index b742d60..5f582a0 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-arc-public-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-arc-public-9999
@@ -8,5 +8,5 @@
 PROPERTIES=live
 RDEPEND=dev-python/pyxattr chromeos-base/chromeos-chrome chromeos-base/autotest-chrome chromeos-base/telemetry autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a9d8ac170c97be1fc8124cafe565467e
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-audio-0.0.1-r3215 b/metadata/md5-cache/chromeos-base/autotest-tests-audio-0.0.1-r3215
deleted file mode 100644
index aa72e511..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-audio-0.0.1-r3215
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/audiotest !chromeless_tty? ( chromeos-base/telemetry )
-DESCRIPTION=Audio autotests
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest -chromeless_tty +tests_audio_Aconnect +tests_audio_Aplay !chromeless_tty? ( +tests_audio_AudioInputGain +tests_audio_CrasGetNodes ) +tests_audio_CRASFormatConversion +tests_audio_CrasDevSwitchStress +tests_audio_CrasPinnedStream +tests_audio_CrasStress cros_host cros_workon_tree_f93558b8a70c6080afd69871b0752fdf060d768c +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/audiotest !chromeless_tty? ( chromeos-base/telemetry ) autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3a7b029ccbcea821f7eeee1484f4ceb7
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-audio-0.0.1-r3219 b/metadata/md5-cache/chromeos-base/autotest-tests-audio-0.0.1-r3219
new file mode 100644
index 0000000..633a078
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-audio-0.0.1-r3219
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/audiotest !chromeless_tty? ( chromeos-base/telemetry )
+DESCRIPTION=Audio autotests
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest -chromeless_tty +tests_audio_Aconnect +tests_audio_Aplay !chromeless_tty? ( +tests_audio_AudioInputGain +tests_audio_CrasGetNodes ) +tests_audio_CRASFormatConversion +tests_audio_CrasDevSwitchStress +tests_audio_CrasPinnedStream +tests_audio_CrasStress cros_host cros_workon_tree_cb26b1124d2937d6e84fa895d1cdab8a4d3c5fd0 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/audiotest !chromeless_tty? ( chromeos-base/telemetry ) autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ebe1384184a2cf748d3196e24b1dfab7
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-audio-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-audio-9999
index ebe4794..39905de 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-audio-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-audio-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/audiotest !chromeless_tty? ( chromeos-base/telemetry ) autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=05874d4109d6dc81df032b30626081bf
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-cellular-0.0.1-r3238 b/metadata/md5-cache/chromeos-base/autotest-tests-cellular-0.0.1-r3238
deleted file mode 100644
index f856bfc..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-cellular-0.0.1-r3238
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-tests-0.0.2 chromeos-base/autotest-deps-cellular chromeos-base/shill-test-scripts dev-python/pygobject dev-python/pyusb sys-apps/ethtool
-DESCRIPTION=Cellular autotests
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_cellular_ActivateLTE +tests_cellular_ConnectFailure +tests_cellular_DeferredRegistration +tests_cellular_DisableWhileConnecting +tests_cellular_DisconnectFailure +tests_cellular_Identifiers +tests_cellular_OutOfCreditsSubscriptionState +tests_cellular_SIMLocking +tests_cellular_SafetyDance +tests_cellular_ScanningProperty +tests_cellular_ServiceName +tests_cellular_Smoke +tests_cellular_StressEnable +tests_cellular_MbimComplianceControlCommand +tests_cellular_MbimComplianceControlRequest +tests_cellular_MbimComplianceDataTransfer +tests_cellular_MbimComplianceDescriptor +tests_cellular_MbimComplianceError cros_host cros_workon_tree_35be4be4da4554ecafb38df95bb1526d806a11c9 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-tests-0.0.2 chromeos-base/autotest-deps-cellular chromeos-base/shill-test-scripts dev-python/pygobject dev-python/pyusb sys-apps/ethtool autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e1e3450b910857824564a8650fb8f8d9
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-cellular-0.0.1-r3257 b/metadata/md5-cache/chromeos-base/autotest-tests-cellular-0.0.1-r3257
new file mode 100644
index 0000000..7c461ca
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-cellular-0.0.1-r3257
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-tests-0.0.2 chromeos-base/autotest-deps-cellular chromeos-base/shill-test-scripts dev-python/pygobject dev-python/pyusb sys-apps/ethtool
+DESCRIPTION=Cellular autotests
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +tests_cellular_ActivateLTE +tests_cellular_ConnectFailure +tests_cellular_DeferredRegistration +tests_cellular_DisableWhileConnecting +tests_cellular_DisconnectFailure +tests_cellular_HermesErrorScenarios +tests_cellular_HermesMM_InstallEnable +tests_cellular_Hermes_MultiProfile +tests_cellular_Hermes_Restart_SlotSwitch +tests_cellular_Hermes_SingleProfile +tests_cellular_Identifiers +tests_cellular_OutOfCreditsSubscriptionState +tests_cellular_SIMLocking +tests_cellular_SafetyDance +tests_cellular_ScanningProperty +tests_cellular_ServiceName +tests_cellular_Smoke +tests_cellular_StressEnable +tests_cellular_ValidateTestEnvironment +tests_cellular_MbimComplianceControlCommand +tests_cellular_MbimComplianceControlRequest +tests_cellular_MbimComplianceDataTransfer +tests_cellular_MbimComplianceDescriptor +tests_cellular_MbimComplianceError cros_host cros_workon_tree_a3840d3e11f296901738b7aa519b87390dae70e7 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-tests-0.0.2 chromeos-base/autotest-deps-cellular chromeos-base/shill-test-scripts dev-python/pygobject dev-python/pyusb sys-apps/ethtool autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=940497685ba070fbcad56647008d708f
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-cellular-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-cellular-9999
index 2542ede..a3b0a59 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-cellular-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-cellular-9999
@@ -4,11 +4,11 @@
 DESCRIPTION=Cellular autotests
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_cellular_ActivateLTE +tests_cellular_ConnectFailure +tests_cellular_DeferredRegistration +tests_cellular_DisableWhileConnecting +tests_cellular_DisconnectFailure +tests_cellular_Identifiers +tests_cellular_OutOfCreditsSubscriptionState +tests_cellular_SIMLocking +tests_cellular_SafetyDance +tests_cellular_ScanningProperty +tests_cellular_ServiceName +tests_cellular_Smoke +tests_cellular_StressEnable +tests_cellular_MbimComplianceControlCommand +tests_cellular_MbimComplianceControlRequest +tests_cellular_MbimComplianceDataTransfer +tests_cellular_MbimComplianceDescriptor +tests_cellular_MbimComplianceError cros_host cros_workon_tree_ +buildcheck autotest opengles
+IUSE=+autotest +tests_cellular_ActivateLTE +tests_cellular_ConnectFailure +tests_cellular_DeferredRegistration +tests_cellular_DisableWhileConnecting +tests_cellular_DisconnectFailure +tests_cellular_HermesErrorScenarios +tests_cellular_HermesMM_InstallEnable +tests_cellular_Hermes_MultiProfile +tests_cellular_Hermes_Restart_SlotSwitch +tests_cellular_Hermes_SingleProfile +tests_cellular_Identifiers +tests_cellular_OutOfCreditsSubscriptionState +tests_cellular_SIMLocking +tests_cellular_SafetyDance +tests_cellular_ScanningProperty +tests_cellular_ServiceName +tests_cellular_Smoke +tests_cellular_StressEnable +tests_cellular_ValidateTestEnvironment +tests_cellular_MbimComplianceControlCommand +tests_cellular_MbimComplianceControlRequest +tests_cellular_MbimComplianceDataTransfer +tests_cellular_MbimComplianceDescriptor +tests_cellular_MbimComplianceError cros_host cros_workon_tree_ +buildcheck autotest opengles
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.2 chromeos-base/autotest-deps-cellular chromeos-base/shill-test-scripts dev-python/pygobject dev-python/pyusb sys-apps/ethtool autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f8859b60a085fc24b8988e32f7a5b451
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=52546c13ab30163a6c848e72523413f2
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-cryptohome-0.0.1-r3183 b/metadata/md5-cache/chromeos-base/autotest-tests-cryptohome-0.0.1-r3183
deleted file mode 100644
index 901aa95..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-cryptohome-0.0.1-r3183
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-tests-0.0.3
-DESCRIPTION=Cryptohome autotests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_platform_BootLockbox +tests_platform_CryptohomeBadPerms +tests_platform_CryptohomeChangePassword +tests_platform_CryptohomeFio +tests_platform_CryptohomeKeyEviction +tests_platform_CryptohomeLECredentialManager +tests_platform_CryptohomeLECredentialManagerServer +tests_platform_CryptohomeMigrateChapsToken +tests_platform_CryptohomeMigrateChapsTokenClient +tests_platform_CryptohomeMigrateKey +tests_platform_CryptohomeMount +tests_platform_CryptohomeMultiple +tests_platform_CryptohomeNonDirs +tests_platform_CryptohomeStress +tests_platform_CryptohomeTestAuth +tests_platform_CryptohomeTpmLiveTest +tests_platform_CryptohomeTpmLiveTestServer +tests_platform_CryptohomeTPMReOwn +tests_platform_CryptohomeTPMReOwnServer cros_host cros_workon_tree_64027579f73b432680a0fca8450ace233c20134c +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/cryptohome-dev-utils autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e32e06b9a720fdfb8da90e2250c5628b
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-cryptohome-0.0.1-r3187 b/metadata/md5-cache/chromeos-base/autotest-tests-cryptohome-0.0.1-r3187
new file mode 100644
index 0000000..eb8ef46
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-cryptohome-0.0.1-r3187
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-tests-0.0.3
+DESCRIPTION=Cryptohome autotests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +tests_platform_CryptohomeFio +tests_platform_CryptohomeStress cros_host cros_workon_tree_9d4e01e2ade94f263bd118fa7c26d4a67d8810ed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/cryptohome-dev-utils autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=2f2aaf8034acae313b21240a8567a874
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-cryptohome-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-cryptohome-9999
index 3ae01fd..b722703 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-cryptohome-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-cryptohome-9999
@@ -3,11 +3,11 @@
 DESCRIPTION=Cryptohome autotests
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_platform_BootLockbox +tests_platform_CryptohomeBadPerms +tests_platform_CryptohomeChangePassword +tests_platform_CryptohomeFio +tests_platform_CryptohomeKeyEviction +tests_platform_CryptohomeLECredentialManager +tests_platform_CryptohomeLECredentialManagerServer +tests_platform_CryptohomeMigrateChapsToken +tests_platform_CryptohomeMigrateChapsTokenClient +tests_platform_CryptohomeMigrateKey +tests_platform_CryptohomeMount +tests_platform_CryptohomeMultiple +tests_platform_CryptohomeNonDirs +tests_platform_CryptohomeStress +tests_platform_CryptohomeTestAuth +tests_platform_CryptohomeTpmLiveTest +tests_platform_CryptohomeTpmLiveTestServer +tests_platform_CryptohomeTPMReOwn +tests_platform_CryptohomeTPMReOwnServer cros_host cros_workon_tree_ +buildcheck autotest opengles
+IUSE=+autotest +tests_platform_CryptohomeFio +tests_platform_CryptohomeStress cros_host cros_workon_tree_ +buildcheck autotest opengles
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/cryptohome-dev-utils autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=8d11cad846c3d4051389f36a2fc80a22
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=0248b8405351362d2be7ae3e8acfd940
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-debugd-0.0.1-r3177 b/metadata/md5-cache/chromeos-base/autotest-tests-debugd-0.0.1-r3177
deleted file mode 100644
index 780bf8a..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-debugd-0.0.1-r3177
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DESCRIPTION=debugd autotests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_platform_TraceClockMonotonic +tests_platform_DebugDaemonGetNetworkStatus +tests_platform_DebugDaemonGetPerfData +tests_platform_DebugDaemonGetPerfOutputFd +tests_platform_DebugDaemonGetRoutes +tests_platform_DebugDaemonPerfDataInFeedbackLogs +tests_platform_DebugDaemonPing +tests_platform_DebugDaemonTracePath cros_host cros_workon_tree_7abe0fa6c1f4184fbc880685f156357a5ec6a435 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-tests-0.0.3 autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e0fa7cb857556ca264c1228d90d4a647
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-debugd-0.0.1-r3178 b/metadata/md5-cache/chromeos-base/autotest-tests-debugd-0.0.1-r3178
new file mode 100644
index 0000000..27d9cd7
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-debugd-0.0.1-r3178
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DESCRIPTION=debugd autotests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +tests_platform_TraceClockMonotonic +tests_platform_DebugDaemonGetNetworkStatus +tests_platform_DebugDaemonGetPerfData +tests_platform_DebugDaemonGetPerfOutputFd +tests_platform_DebugDaemonGetRoutes +tests_platform_DebugDaemonPerfDataInFeedbackLogs +tests_platform_DebugDaemonPing +tests_platform_DebugDaemonTracePath cros_host cros_workon_tree_6b7edca2573c9555e1eb7e2ca4abe3432cb63fe2 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-tests-0.0.3 autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=8432fb7d5ce1f105e46ed69faa262051
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-debugd-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-debugd-9999
index f8c9b43..e7305ba 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-debugd-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-debugd-9999
@@ -8,5 +8,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.3 autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=2ae8be6d5185e85d7aedd1af934f52eb
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-graphics-0.0.1-r3245 b/metadata/md5-cache/chromeos-base/autotest-tests-graphics-0.0.1-r3245
deleted file mode 100644
index bdfce71..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-graphics-0.0.1-r3245
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/autotest-deps-graphics tests_graphics_Gbm? ( media-libs/minigbm ) tests_graphics_GLBench? ( chromeos-base/glbench ) tests_graphics_GLMark2? ( chromeos-base/autotest-deps-glmark2 ) tests_graphics_SanAngeles? ( media-libs/waffle )
-DESCRIPTION=Graphics autotests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_graphics_dEQP +tests_graphics_Gbm +tests_graphics_GLAPICheck +tests_graphics_GLBench +tests_graphics_GLMark2 +tests_graphics_KernelConfig +tests_graphics_KernelMemory +tests_graphics_LibDRM +tests_graphics_PerfControl +tests_graphics_SanAngeles +tests_graphics_SyncControlTest +tests_graphics_Power asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7baac7cbb860b4652858adc33327facd8bd1642 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/autotest-deps-graphics tests_graphics_Gbm? ( media-libs/minigbm ) tests_graphics_GLBench? ( chromeos-base/glbench ) tests_graphics_GLMark2? ( chromeos-base/autotest-deps-glmark2 ) tests_graphics_SanAngeles? ( media-libs/waffle ) autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=58626937e5c886d880defa99e70612a5
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-graphics-0.0.1-r3265 b/metadata/md5-cache/chromeos-base/autotest-tests-graphics-0.0.1-r3265
new file mode 100644
index 0000000..0176d8c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-graphics-0.0.1-r3265
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/autotest-deps-graphics tests_graphics_Gbm? ( media-libs/minigbm ) tests_graphics_GLBench? ( chromeos-base/glbench ) tests_graphics_GLMark2? ( chromeos-base/autotest-deps-glmark2 ) tests_graphics_SanAngeles? ( media-libs/waffle )
+DESCRIPTION=Graphics autotests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +tests_graphics_dEQP +tests_graphics_Gbm +tests_graphics_GLAPICheck +tests_graphics_GLBench +tests_graphics_GLMark2 +tests_graphics_KernelConfig +tests_graphics_KernelMemory +tests_graphics_LibDRM +tests_graphics_PerfControl +tests_graphics_SanAngeles +tests_graphics_SyncControlTest +tests_graphics_parallel_dEQP +tests_graphics_Power asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_c0ffc312566b015e40f68885e0fc926bbce4d139 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/autotest-deps-graphics tests_graphics_Gbm? ( media-libs/minigbm ) tests_graphics_GLBench? ( chromeos-base/glbench ) tests_graphics_GLMark2? ( chromeos-base/autotest-deps-glmark2 ) tests_graphics_SanAngeles? ( media-libs/waffle ) autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=908076fef40272e495a9fc9745aab979
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-graphics-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-graphics-9999
index 1355847..d258c81 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-graphics-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-graphics-9999
@@ -3,11 +3,11 @@
 DESCRIPTION=Graphics autotests
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_graphics_dEQP +tests_graphics_Gbm +tests_graphics_GLAPICheck +tests_graphics_GLBench +tests_graphics_GLMark2 +tests_graphics_KernelConfig +tests_graphics_KernelMemory +tests_graphics_LibDRM +tests_graphics_PerfControl +tests_graphics_SanAngeles +tests_graphics_SyncControlTest +tests_graphics_Power asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ +buildcheck autotest opengles
+IUSE=+autotest +tests_graphics_dEQP +tests_graphics_Gbm +tests_graphics_GLAPICheck +tests_graphics_GLBench +tests_graphics_GLMark2 +tests_graphics_KernelConfig +tests_graphics_KernelMemory +tests_graphics_LibDRM +tests_graphics_PerfControl +tests_graphics_SanAngeles +tests_graphics_SyncControlTest +tests_graphics_parallel_dEQP +tests_graphics_Power asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ +buildcheck autotest opengles
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/autotest-deps-graphics tests_graphics_Gbm? ( media-libs/minigbm ) tests_graphics_GLBench? ( chromeos-base/glbench ) tests_graphics_GLMark2? ( chromeos-base/autotest-deps-glmark2 ) tests_graphics_SanAngeles? ( media-libs/waffle ) autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=52a9f8b166e3c3a799841b014232bce4
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=bd9b1a3e0390891a4a59d10fb5730823
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-ownershipapi-0.0.1-r7891 b/metadata/md5-cache/chromeos-base/autotest-tests-ownershipapi-0.0.1-r7891
deleted file mode 100644
index c7770fc..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-ownershipapi-0.0.1-r7891
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=chromeos-base/autotest-deps-dbus chromeos-base/autotest-deps-policy chromeos-base/chromeos-chrome chromeos-base/telemetry dev-python/protobuf-python dev-python/pygobject
-DESCRIPTION=login_OwnershipApi autotest
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+xset +tpmtools +autotest +tests_login_CryptohomeOwnerQuery +tests_login_MultipleSessions cros_host cros_workon_tree_0403c48eb6c76d705968f240a92353631701a279 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=chromeos-base/autotest-deps-dbus chromeos-base/autotest-deps-policy chromeos-base/chromeos-chrome chromeos-base/telemetry dev-python/protobuf-python dev-python/pygobject autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=6f9b654499d4fe2d303eb706472b1ec7
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-ownershipapi-0.0.1-r7892 b/metadata/md5-cache/chromeos-base/autotest-tests-ownershipapi-0.0.1-r7892
new file mode 100644
index 0000000..48eb020
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-ownershipapi-0.0.1-r7892
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=chromeos-base/autotest-deps-dbus chromeos-base/autotest-deps-policy chromeos-base/chromeos-chrome chromeos-base/telemetry dev-python/protobuf-python dev-python/pygobject
+DESCRIPTION=login_OwnershipApi autotest
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+xset +tpmtools +autotest +tests_login_CryptohomeOwnerQuery +tests_login_MultipleSessions cros_host cros_workon_tree_54ff09d88d01f0b74b519616c18d7e964daafc53 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=chromeos-base/autotest-deps-dbus chromeos-base/autotest-deps-policy chromeos-base/chromeos-chrome chromeos-base/telemetry dev-python/protobuf-python dev-python/pygobject autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=b6d99f6a4b598e5170862420a74beb07
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-ownershipapi-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-ownershipapi-9999
index 97f0ccf..e7bf19b 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-ownershipapi-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-ownershipapi-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/autotest-deps-dbus chromeos-base/autotest-deps-policy chromeos-base/chromeos-chrome chromeos-base/telemetry dev-python/protobuf-python dev-python/pygobject autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=d0e3f5ccc2a0eb23cdeda63e0535271e
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-p2p-0.0.1-r3163 b/metadata/md5-cache/chromeos-base/autotest-tests-p2p-0.0.1-r3163
index 475b9f8..4cd65a8 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-p2p-0.0.1-r3163
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-p2p-0.0.1-r3163
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/autotest-deps-p2p autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f41edd02427a192aef1c7365da436e2d
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-p2p-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-p2p-9999
index a7db729..f3d731a 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-p2p-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-p2p-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/autotest-deps-p2p autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=31fa0b52716282fb32256a3f4d37122e
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-power-0.0.1-r3227 b/metadata/md5-cache/chromeos-base/autotest-tests-power-0.0.1-r3227
deleted file mode 100644
index fc1d413..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-power-0.0.1-r3227
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=shill? ( chromeos-base/shill-test-scripts ) !<chromeos-base/autotest-tests-0.0.3
-DESCRIPTION=power autotests
-EAPI=4
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +shill +tests_hardware_Backlight +tests_power_ARMSettings +tests_power_Backlight +tests_power_BacklightControl +tests_power_BacklightSuspend +tests_power_BatteryCharge +tests_power_CheckAC +tests_power_CheckAfterSuspend +tests_power_CPUFreq +tests_power_CPUIdle +tests_power_Draw +tests_power_Dummy +tests_power_HotCPUSuspend +tests_power_KernelSuspend +tests_power_MemorySuspend +tests_power_NoConsoleSuspend +tests_power_ProbeDriver shill? ( +tests_power_Resume ) +tests_power_Standby +tests_power_StatsCPUFreq +tests_power_StatsCPUIdle +tests_power_StatsUSB +tests_power_Status shill? ( +tests_power_SuspendStress +tests_power_SuspendToIdle ) +tests_power_WaitForCoolDown +tests_power_WakeupRTC cros_host cros_workon_tree_9aef706603aa7bf550934b087dbf633d2371b94e +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=shill? ( chromeos-base/shill-test-scripts ) !<chromeos-base/autotest-tests-0.0.3 autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=10adc49bc9156127ce903b73cb77ca60
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-power-0.0.1-r3240 b/metadata/md5-cache/chromeos-base/autotest-tests-power-0.0.1-r3240
new file mode 100644
index 0000000..5803007
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-power-0.0.1-r3240
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=shill? ( chromeos-base/shill-test-scripts ) !<chromeos-base/autotest-tests-0.0.3
+DESCRIPTION=power autotests
+EAPI=4
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +shill +tests_hardware_Backlight +tests_power_ARMSettings +tests_power_Backlight +tests_power_BacklightControl +tests_power_BacklightSuspend +tests_power_BatteryCharge +tests_power_BatteryDesignCapacity +tests_power_CheckAC +tests_power_CheckAfterSuspend +tests_power_CPUFreq +tests_power_CPUIdle +tests_power_Draw +tests_power_Dummy +tests_power_HotCPUSuspend +tests_power_KernelSuspend +tests_power_MemorySuspend +tests_power_NoConsoleSuspend +tests_power_ProbeDriver shill? ( +tests_power_Resume ) +tests_power_Standby +tests_power_StatsCPUFreq +tests_power_StatsCPUIdle +tests_power_StatsUSB +tests_power_Status shill? ( +tests_power_SuspendStress +tests_power_SuspendToIdle ) +tests_power_WaitForCoolDown +tests_power_WakeupRTC cros_host cros_workon_tree_fafed70d3d1eef417289a57d9ace6237a0f33399 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=shill? ( chromeos-base/shill-test-scripts ) !<chromeos-base/autotest-tests-0.0.3 autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=40e14ca900868f3670b8a53fe713cf77
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-power-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-power-9999
index f140aeb..4b7fd64 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-power-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-power-9999
@@ -3,11 +3,11 @@
 DESCRIPTION=power autotests
 EAPI=4
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +shill +tests_hardware_Backlight +tests_power_ARMSettings +tests_power_Backlight +tests_power_BacklightControl +tests_power_BacklightSuspend +tests_power_BatteryCharge +tests_power_CheckAC +tests_power_CheckAfterSuspend +tests_power_CPUFreq +tests_power_CPUIdle +tests_power_Draw +tests_power_Dummy +tests_power_HotCPUSuspend +tests_power_KernelSuspend +tests_power_MemorySuspend +tests_power_NoConsoleSuspend +tests_power_ProbeDriver shill? ( +tests_power_Resume ) +tests_power_Standby +tests_power_StatsCPUFreq +tests_power_StatsCPUIdle +tests_power_StatsUSB +tests_power_Status shill? ( +tests_power_SuspendStress +tests_power_SuspendToIdle ) +tests_power_WaitForCoolDown +tests_power_WakeupRTC cros_host cros_workon_tree_ +buildcheck autotest opengles
+IUSE=+autotest +shill +tests_hardware_Backlight +tests_power_ARMSettings +tests_power_Backlight +tests_power_BacklightControl +tests_power_BacklightSuspend +tests_power_BatteryCharge +tests_power_BatteryDesignCapacity +tests_power_CheckAC +tests_power_CheckAfterSuspend +tests_power_CPUFreq +tests_power_CPUIdle +tests_power_Draw +tests_power_Dummy +tests_power_HotCPUSuspend +tests_power_KernelSuspend +tests_power_MemorySuspend +tests_power_NoConsoleSuspend +tests_power_ProbeDriver shill? ( +tests_power_Resume ) +tests_power_Standby +tests_power_StatsCPUFreq +tests_power_StatsCPUIdle +tests_power_StatsUSB +tests_power_Status shill? ( +tests_power_SuspendStress +tests_power_SuspendToIdle ) +tests_power_WaitForCoolDown +tests_power_WakeupRTC cros_host cros_workon_tree_ +buildcheck autotest opengles
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=shill? ( chromeos-base/shill-test-scripts ) !<chromeos-base/autotest-tests-0.0.3 autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=87a2a8410bc4e7f66ab0531bdd57759e
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=7db4e243c248677f4e035aa5c7c4f199
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-security-0.0.1-r3303 b/metadata/md5-cache/chromeos-base/autotest-tests-security-0.0.1-r3303
deleted file mode 100644
index a978829..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-security-0.0.1-r3303
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-tests-0.0.3 containers? ( tests_security_Libcontainer? ( chromeos-base/minijail chromeos-base/libcontainer ) ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-DESCRIPTION=Security autotests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest -chromeless_tests -chromeless_tty containers +seccomp selinux !chromeless_tty? ( !chromeless_tests? ( +tests_security_RendererSandbox +tests_security_SessionManagerDbusEndpoints ) ) seccomp? ( +tests_security_SeccompSyscallFilters ) containers? ( +tests_security_Libcontainer ) +tests_security_NosymfollowMountOption +tests_security_ProcessManagementPolicy +tests_security_RootfsOwners +tests_security_SysVIPC x86? ( +tests_security_x86Registers ) amd64? ( +tests_security_x86Registers ) cros_host cros_workon_tree_5ead5abe2e6a4f51e0785d23469ea9886901b155 +buildcheck autotest opengles cros-debug
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-tests-0.0.3 containers? ( tests_security_Libcontainer? ( chromeos-base/minijail chromeos-base/libcontainer ) ) autotest? ( chromeos-base/autotest ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9407529c4beea8f612552fecf1324d41
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-security-0.0.1-r3305 b/metadata/md5-cache/chromeos-base/autotest-tests-security-0.0.1-r3305
new file mode 100644
index 0000000..5df4335
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-security-0.0.1-r3305
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-tests-0.0.3 containers? ( tests_security_Libcontainer? ( chromeos-base/minijail chromeos-base/libcontainer ) ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+DESCRIPTION=Security autotests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest -chromeless_tests -chromeless_tty containers +seccomp selinux !chromeless_tty? ( !chromeless_tests? ( +tests_security_RendererSandbox +tests_security_SessionManagerDbusEndpoints ) ) seccomp? ( +tests_security_SeccompSyscallFilters ) containers? ( +tests_security_Libcontainer ) +tests_security_NosymfollowMountOption +tests_security_ProcessManagementPolicy +tests_security_RootfsOwners +tests_security_SysVIPC x86? ( +tests_security_x86Registers ) amd64? ( +tests_security_x86Registers ) cros_host cros_workon_tree_54ff09d88d01f0b74b519616c18d7e964daafc53 +buildcheck autotest opengles cros-debug
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-tests-0.0.3 containers? ( tests_security_Libcontainer? ( chromeos-base/minijail chromeos-base/libcontainer ) ) autotest? ( chromeos-base/autotest ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=06780260f9623ef590181d1e66b011ed
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-security-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-security-9999
index e1a3ff7..904004f 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-security-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-security-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.3 containers? ( tests_security_Libcontainer? ( chromeos-base/minijail chromeos-base/libcontainer ) ) autotest? ( chromeos-base/autotest ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a9ec7441af874a191bf07e377f922585
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-shill-0.0.1-r3231 b/metadata/md5-cache/chromeos-base/autotest-tests-shill-0.0.1-r3231
deleted file mode 100644
index 013f0fb..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-shill-0.0.1-r3231
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/shill-test-scripts
-DESCRIPTION=shill autotests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tpm tpm2 +tests_network_DhcpClasslessStaticRoute +tests_network_DhcpFailureWithStaticIP +tests_network_DhcpNak +tests_network_DhcpNegotiationSuccess +tests_network_DhcpNegotiationTimeout +tests_network_DhcpNonAsciiParameter +tests_network_DhcpRenew +tests_network_DhcpRenewWithOptionSubset +tests_network_DhcpRequestHostName +tests_network_DhcpStaticIP +tests_network_DhcpVendorEncapsulatedOptions +tests_network_DhcpWpadNegotiation +tests_network_WiFiInvalidParameters +tests_network_WiFiResume +tests_network_WlanPresent +tests_network_WlanRegulatory +tests_network_WlanHasIP tpm? ( +tests_network_VPNConnect ) tpm2? ( +tests_network_VPNConnect ) cros_host cros_workon_tree_dade62ef55fc7299cc303101e72215df02cbb3a7 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/shill-test-scripts autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=99c136b7c823ecf67a3083f63f491319
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-shill-0.0.1-r3233 b/metadata/md5-cache/chromeos-base/autotest-tests-shill-0.0.1-r3233
new file mode 100644
index 0000000..9b4202b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-shill-0.0.1-r3233
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/shill-test-scripts
+DESCRIPTION=shill autotests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +tpm tpm2 +tests_network_DhcpClasslessStaticRoute +tests_network_DhcpFailureWithStaticIP +tests_network_DhcpNak +tests_network_DhcpNegotiationSuccess +tests_network_DhcpNegotiationTimeout +tests_network_DhcpNonAsciiParameter +tests_network_DhcpRenew +tests_network_DhcpRenewWithOptionSubset +tests_network_DhcpRequestHostName +tests_network_DhcpStaticIP +tests_network_DhcpVendorEncapsulatedOptions +tests_network_DhcpWpadNegotiation +tests_network_WiFiInvalidParameters +tests_network_WiFiResume +tests_network_WlanPresent +tests_network_WlanRegulatory +tests_network_WlanHasIP tpm? ( +tests_network_VPNConnect ) tpm2? ( +tests_network_VPNConnect ) cros_host cros_workon_tree_8b8c2ee1306693fc53479eeeb8eab79cd41ba97e +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/shill-test-scripts autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=1189375fa4b6033cf496812eb5e4d83f
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-shill-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-shill-9999
index 19989fe..e434961 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-shill-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-shill-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/shill-test-scripts autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3919778a6a9a4a04f45fc657e5c0102c
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-smbprovider-0.0.1-r8 b/metadata/md5-cache/chromeos-base/autotest-tests-smbprovider-0.0.1-r8
deleted file mode 100644
index a765e25..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-smbprovider-0.0.1-r8
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=chromeos-base/chromeos-chrome chromeos-base/autotest-chrome
-DESCRIPTION=SmbProvider Autotests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_enterprise_SmbProviderDaemon cros_host cros_workon_tree_0403c48eb6c76d705968f240a92353631701a279 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=chromeos-base/chromeos-chrome chromeos-base/autotest-chrome autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a42596e348a9690b98bffaa68e9f47f0
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-smbprovider-0.0.1-r9 b/metadata/md5-cache/chromeos-base/autotest-tests-smbprovider-0.0.1-r9
new file mode 100644
index 0000000..36fb03d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-smbprovider-0.0.1-r9
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=chromeos-base/chromeos-chrome chromeos-base/autotest-chrome
+DESCRIPTION=SmbProvider Autotests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +tests_enterprise_SmbProviderDaemon cros_host cros_workon_tree_3cc870d4d7579e9ae029a6f9936868e4436148a7 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-chrome chromeos-base/autotest-chrome autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=1cd2a575c9ef5d3350eb806e01658d0a
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-smbprovider-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-smbprovider-9999
index 70e1dcf..d7e0713 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-smbprovider-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-smbprovider-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/chromeos-chrome chromeos-base/autotest-chrome autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=0a46a6f0ed87aa540c0d3aa933100622
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-toolchain-0.0.1-r10 b/metadata/md5-cache/chromeos-base/autotest-tests-toolchain-0.0.1-r10
deleted file mode 100644
index 0cb860e..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-toolchain-0.0.1-r10
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/toolchain-tests
-DESCRIPTION=Compilation and runtime tests for toolchain
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_platform_ToolchainTests cros_host cros_workon_tree_cd710543ff9c84e60725841b3c7f665a683a12fe +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/toolchain-tests autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=26ad6af1145543101f72266a004c77ba
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-toolchain-0.0.1-r12 b/metadata/md5-cache/chromeos-base/autotest-tests-toolchain-0.0.1-r12
new file mode 100644
index 0000000..d265e11
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-toolchain-0.0.1-r12
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/toolchain-tests
+DESCRIPTION=Compilation and runtime tests for toolchain
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +tests_platform_ToolchainTests cros_host cros_workon_tree_b5b6acaf59878be095d31a8a414321e24bb3cce3 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/toolchain-tests autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=13eb7bd9f283566a50eb753f32a76de9
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-toolchain-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-toolchain-9999
index dc2d9ac..0fd98a1 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-toolchain-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-toolchain-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.3 chromeos-base/toolchain-tests autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=efb1f6664bea2d10b7b5c2122370d8bb
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-touchpad-0.0.1-r4171 b/metadata/md5-cache/chromeos-base/autotest-tests-touchpad-0.0.1-r4171
index 59b7dda..fcaa7a4 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-touchpad-0.0.1-r4171
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-touchpad-0.0.1-r4171
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/autotest-deps-touchpad autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=7eba7f22db65cebaf2779fcbc71001b9
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-touchpad-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-touchpad-9999
index 380dc6f..52554f9 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-touchpad-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-touchpad-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/autotest-deps-touchpad autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f38e34bccfeb2ff163756031b1ebb98c
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-tpm-0.0.1-r3185 b/metadata/md5-cache/chromeos-base/autotest-tests-tpm-0.0.1-r3185
deleted file mode 100644
index cdbfb41..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-tpm-0.0.1-r3185
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=!<chromeos-base/autotest-tests-0.0.3 tpm2? ( chromeos-base/g2f_tools )
-DESCRIPTION=Autotests involving the tpm
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest tpm2 +tests_firmware_Cr50VirtualNVRam +tests_firmware_Cr50VirtualNVRamServer +tests_firmware_Cr50U2fPowerwash +tests_hardware_TPMCheck +tests_kernel_TPMStress +tests_platform_Pkcs11InitUnderErrors +tests_platform_Pkcs11ChangeAuthData +tests_platform_Pkcs11Events +tests_platform_Pkcs11LoadPerf +tests_platform_TPMEvict cros_host cros_workon_tree_4a255fc35c89bb76e753c432dcabb1fd70619597 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<chromeos-base/autotest-tests-0.0.3 tpm2? ( chromeos-base/g2f_tools ) autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d2e5e20acfe88709d62e610bc7b41c1f
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-tpm-0.0.1-r3189 b/metadata/md5-cache/chromeos-base/autotest-tests-tpm-0.0.1-r3189
new file mode 100644
index 0000000..6d56e8e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-tpm-0.0.1-r3189
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=!<chromeos-base/autotest-tests-0.0.3 tpm2? ( chromeos-base/g2f_tools )
+DESCRIPTION=Autotests involving the tpm
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest tpm2 +tests_firmware_Cr50VirtualNVRam +tests_firmware_Cr50VirtualNVRamServer +tests_firmware_Cr50U2fPowerwash +tests_hardware_TPMCheck +tests_kernel_TPMStress +tests_platform_Pkcs11InitUnderErrors +tests_platform_Pkcs11ChangeAuthData +tests_platform_Pkcs11Events +tests_platform_Pkcs11LoadPerf +tests_platform_TPMEvict cros_host cros_workon_tree_d5fca090b73d08131aee571109b77a337c42fd39 +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<chromeos-base/autotest-tests-0.0.3 tpm2? ( chromeos-base/g2f_tools ) autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=fcc0188dccbbd2db748406e052fdf156
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-tpm-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-tpm-9999
index 08584c1..0708310 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-tpm-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-tpm-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/autotest-tests-0.0.3 tpm2? ( chromeos-base/g2f_tools ) autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=c29804d9583787c9a453a2994d292312
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-vm-host-0.0.1-r1800 b/metadata/md5-cache/chromeos-base/autotest-tests-vm-host-0.0.1-r1800
deleted file mode 100644
index 00875ed..0000000
--- a/metadata/md5-cache/chromeos-base/autotest-tests-vm-host-0.0.1-r1800
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DESCRIPTION=kvm host autotests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=+autotest +tests_vm_CrosVmStart cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=62433af3b3da6c130c7b552e8b05317c
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-vm-host-0.0.1-r2646 b/metadata/md5-cache/chromeos-base/autotest-tests-vm-host-0.0.1-r2646
new file mode 100644
index 0000000..7c6d599
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-vm-host-0.0.1-r2646
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DESCRIPTION=kvm host autotests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=+autotest +tests_vm_CrosVmStart cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=3f08c1603f8c5215bc6de3c359aea57f
diff --git a/metadata/md5-cache/chromeos-base/autotest-tests-vm-host-9999 b/metadata/md5-cache/chromeos-base/autotest-tests-vm-host-9999
index 4967885..d0c756c 100644
--- a/metadata/md5-cache/chromeos-base/autotest-tests-vm-host-9999
+++ b/metadata/md5-cache/chromeos-base/autotest-tests-vm-host-9999
@@ -8,5 +8,5 @@
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e7265fb27c3e103602cd72bdfe5ac772
diff --git a/metadata/md5-cache/chromeos-base/avtest_label_detect-0.0.1-r3041 b/metadata/md5-cache/chromeos-base/avtest_label_detect-0.0.1-r3041
deleted file mode 100644
index eb6e51f..0000000
--- a/metadata/md5-cache/chromeos-base/avtest_label_detect-0.0.1-r3041
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=vaapi? ( x11-libs/libva )
-DESCRIPTION=Autotest label detector for audio/video/camera
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/avtest_label_detect
-IUSE=-asan v4l2_codec vaapi asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_34c95610bbb2e5b9e5a08f0ffc45a96171f940ff_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=vaapi? ( x11-libs/libva )
-SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b48988406d14ccda234ba5f455a0452e
diff --git a/metadata/md5-cache/chromeos-base/avtest_label_detect-0.0.1-r3070 b/metadata/md5-cache/chromeos-base/avtest_label_detect-0.0.1-r3070
new file mode 100644
index 0000000..5ba7477
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/avtest_label_detect-0.0.1-r3070
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=vaapi? ( x11-libs/libva )
+DESCRIPTION=Autotest label detector for audio/video/camera
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/avtest_label_detect
+IUSE=-asan v4l2_codec vaapi asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_396263bc402f0a6170b30ba28fb6694fd2c0ad06_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=vaapi? ( x11-libs/libva )
+SLOT=0
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=acd79cd728cd4d45473bb21a24148386
diff --git a/metadata/md5-cache/chromeos-base/avtest_label_detect-9999 b/metadata/md5-cache/chromeos-base/avtest_label_detect-9999
index de9eb51..9ba7c39 100644
--- a/metadata/md5-cache/chromeos-base/avtest_label_detect-9999
+++ b/metadata/md5-cache/chromeos-base/avtest_label_detect-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=vaapi? ( x11-libs/libva )
 SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=17551db4d9d7ba2a09d09b923b8785e5
diff --git a/metadata/md5-cache/chromeos-base/biod-0.0.1-r1936 b/metadata/md5-cache/chromeos-base/biod-0.0.1-r1936
deleted file mode 100644
index 0e5d382..0000000
--- a/metadata/md5-cache/chromeos-base/biod-0.0.1-r1936
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= sys-apps/flashmap:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/biod_proxy:= chromeos-base/chromeos-ec-headers:= chromeos-base/power_manager-client:= chromeos-base/system_api:=[fuzzer?] dev-libs/openssl:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Biometrics Daemon for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/README.md
-IUSE=fp_on_power_button fpmcu_firmware_bloonchipper fpmcu_firmware_dartmonkey fpmcu_firmware_nami fpmcu_firmware_nocturne fuzzer generated_cros_config unibuild fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_51edb0458f48b8592c9ba25d6b4d45f408e63998_4a9d701c1716dbba6b3de3a9927299f399ec4580_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_51edb0458f48b8592c9ba25d6b4d45f408e63998_4a9d701c1716dbba6b3de3a9927299f399ec4580_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= sys-apps/flashmap:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/biod_proxy:= sys-apps/flashrom virtual/chromeos-firmware-fpmcu fpmcu_firmware_bloonchipper? ( sys-firmware/chromeos-fpmcu-release-bloonchipper ) fpmcu_firmware_dartmonkey? ( sys-firmware/chromeos-fpmcu-release-dartmonkey ) fpmcu_firmware_nami? ( sys-firmware/chromeos-fpmcu-release-nami ) fpmcu_firmware_nocturne? ( sys-firmware/chromeos-fpmcu-release-nocturne ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r1936
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=45dd5de5d460038d14bec1ba812400dc
diff --git a/metadata/md5-cache/chromeos-base/biod-0.0.1-r2064 b/metadata/md5-cache/chromeos-base/biod-0.0.1-r2064
new file mode 100644
index 0000000..c38831d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/biod-0.0.1-r2064
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/chromeos-config-tools:= chromeos-base/libec:= >=chromeos-base/metrics-0.0.1-r3152:= sys-apps/flashmap:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/biod_proxy:= chromeos-base/chromeos-ec-headers:= chromeos-base/power_manager-client:= chromeos-base/system_api:=[fuzzer?] dev-libs/openssl:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Biometrics Daemon for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/README.md
+IUSE=fp_on_power_button fpmcu_firmware_bloonchipper fpmcu_firmware_dartmonkey fpmcu_firmware_nami fpmcu_firmware_nocturne fuzzer generated_cros_config unibuild fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_b1f4ad4ab3cbb07f7d6d2756b7c06a950376ea88_aa0612733aca2d5ffa65470f07408228b473ebdb_667180eb5db7eb65a292552b106b32aa5881c9eb_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_b1f4ad4ab3cbb07f7d6d2756b7c06a950376ea88_aa0612733aca2d5ffa65470f07408228b473ebdb_667180eb5db7eb65a292552b106b32aa5881c9eb_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/chromeos-config-tools:= chromeos-base/libec:= >=chromeos-base/metrics-0.0.1-r3152:= sys-apps/flashmap:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/biod_proxy:= sys-apps/flashrom virtual/chromeos-firmware-fpmcu fpmcu_firmware_bloonchipper? ( sys-firmware/chromeos-fpmcu-release-bloonchipper ) fpmcu_firmware_dartmonkey? ( sys-firmware/chromeos-fpmcu-release-dartmonkey ) fpmcu_firmware_nami? ( sys-firmware/chromeos-fpmcu-release-nami ) fpmcu_firmware_nocturne? ( sys-firmware/chromeos-fpmcu-release-nocturne ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r2064
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=bcd9e42d91b5e3176b55c64e05373d76
diff --git a/metadata/md5-cache/chromeos-base/biod-9999 b/metadata/md5-cache/chromeos-base/biod-9999
index 2efb0af..d47fce1 100644
--- a/metadata/md5-cache/chromeos-base/biod-9999
+++ b/metadata/md5-cache/chromeos-base/biod-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= sys-apps/flashmap:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/biod_proxy:= chromeos-base/chromeos-ec-headers:= chromeos-base/power_manager-client:= chromeos-base/system_api:=[fuzzer?] dev-libs/openssl:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/chromeos-config-tools:= chromeos-base/libec:= >=chromeos-base/metrics-0.0.1-r3152:= sys-apps/flashmap:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/biod_proxy:= chromeos-base/chromeos-ec-headers:= chromeos-base/power_manager-client:= chromeos-base/system_api:=[fuzzer?] dev-libs/openssl:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Biometrics Daemon for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/README.md
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= sys-apps/flashmap:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/biod_proxy:= sys-apps/flashrom virtual/chromeos-firmware-fpmcu fpmcu_firmware_bloonchipper? ( sys-firmware/chromeos-fpmcu-release-bloonchipper ) fpmcu_firmware_dartmonkey? ( sys-firmware/chromeos-fpmcu-release-dartmonkey ) fpmcu_firmware_nami? ( sys-firmware/chromeos-fpmcu-release-nami ) fpmcu_firmware_nocturne? ( sys-firmware/chromeos-fpmcu-release-nocturne ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=chromeos-base/chromeos-config-tools:= chromeos-base/libec:= >=chromeos-base/metrics-0.0.1-r3152:= sys-apps/flashmap:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/biod_proxy:= sys-apps/flashrom virtual/chromeos-firmware-fpmcu fpmcu_firmware_bloonchipper? ( sys-firmware/chromeos-fpmcu-release-bloonchipper ) fpmcu_firmware_dartmonkey? ( sys-firmware/chromeos-fpmcu-release-dartmonkey ) fpmcu_firmware_nami? ( sys-firmware/chromeos-fpmcu-release-nami ) fpmcu_firmware_nocturne? ( sys-firmware/chromeos-fpmcu-release-nocturne ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=248cb1fa051fa408b4407a7c9eb5626b
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=5a620de0c0558598fa83c269372108bc
diff --git a/metadata/md5-cache/chromeos-base/biod_proxy-0.0.1-r120 b/metadata/md5-cache/chromeos-base/biod_proxy-0.0.1-r120
deleted file mode 100644
index 5054f77..0000000
--- a/metadata/md5-cache/chromeos-base/biod_proxy-0.0.1-r120
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=DBus Proxy Library for Biometrics Daemon for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/README.md
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_51edb0458f48b8592c9ba25d6b4d45f408e63998_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_51edb0458f48b8592c9ba25d6b4d45f408e63998_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r120
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b8d306f65f2b0e497b5168b24ee1b5bb
diff --git a/metadata/md5-cache/chromeos-base/biod_proxy-0.0.1-r189 b/metadata/md5-cache/chromeos-base/biod_proxy-0.0.1-r189
new file mode 100644
index 0000000..b614254
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/biod_proxy-0.0.1-r189
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libbrillo:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=DBus Proxy Library for Biometrics Daemon for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/README.md
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_b1f4ad4ab3cbb07f7d6d2756b7c06a950376ea88_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_b1f4ad4ab3cbb07f7d6d2756b7c06a950376ea88_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r189
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=142338e320f98bcbede975fe29d379ae
diff --git a/metadata/md5-cache/chromeos-base/biod_proxy-9999 b/metadata/md5-cache/chromeos-base/biod_proxy-9999
index 2f77259..b3b46fb 100644
--- a/metadata/md5-cache/chromeos-base/biod_proxy-9999
+++ b/metadata/md5-cache/chromeos-base/biod_proxy-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libbrillo:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=DBus Proxy Library for Biometrics Daemon for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/README.md
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d9321d4ca71097984bd7b3db12bdc712
diff --git a/metadata/md5-cache/chromeos-base/bluetooth-0.0.1-r626 b/metadata/md5-cache/chromeos-base/bluetooth-0.0.1-r626
deleted file mode 100644
index 1a55164..0000000
--- a/metadata/md5-cache/chromeos-base/bluetooth-0.0.1-r626
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-config-tools:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) net-wireless/bluez:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Bluetooth service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/bluetooth
-IUSE=+bluetooth_suspend_management fuzzer generated_cros_config seccomp unibuild cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_1110d3ab53ee11f181e1853ce8d9dfe37b41a8ec_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_1110d3ab53ee11f181e1853ce8d9dfe37b41a8ec_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/chromeos-config-tools:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) net-wireless/bluez:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r626
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8eb6fc5ce66ffb591602fad73b408a2c
diff --git a/metadata/md5-cache/chromeos-base/bluetooth-9999 b/metadata/md5-cache/chromeos-base/bluetooth-9999
deleted file mode 100644
index 5d5328a..0000000
--- a/metadata/md5-cache/chromeos-base/bluetooth-9999
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-config-tools:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) net-wireless/bluez:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Bluetooth service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/bluetooth
-IUSE=+bluetooth_suspend_management fuzzer generated_cros_config seccomp unibuild cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/chromeos-config-tools:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) net-wireless/bluez:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2b155b29e50e6488f5739ddfdd3e6747
diff --git a/metadata/md5-cache/chromeos-base/bootid-logger-0.0.1-r27 b/metadata/md5-cache/chromeos-base/bootid-logger-0.0.1-r27
deleted file mode 100644
index ca3d057..0000000
--- a/metadata/md5-cache/chromeos-base/bootid-logger-0.0.1-r27
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Program to record the current boot ID to the log
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/bootid-logger
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_bb5eb47ba9b31a6ebc7856fdea2150a5756db444_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_bb5eb47ba9b31a6ebc7856fdea2150a5756db444_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!<=chromeos-base/croslog-0.0.1-r44 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c73d3ea119ba43aa5dc92ab60d09c207
diff --git a/metadata/md5-cache/chromeos-base/bootid-logger-0.0.1-r72 b/metadata/md5-cache/chromeos-base/bootid-logger-0.0.1-r72
new file mode 100644
index 0000000..425cceb
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/bootid-logger-0.0.1-r72
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Program to record the current boot ID to the log
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/bootid-logger
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_3f9bd291ca1a611db3eaaff6cce78f4ebaa0c7eb_fa823f91c6f2d1432f2bfaf49b5785eeb4e6e6fb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_3f9bd291ca1a611db3eaaff6cce78f4ebaa0c7eb_fa823f91c6f2d1432f2bfaf49b5785eeb4e6e6fb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!<=chromeos-base/croslog-0.0.1-r44 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e7bcf9b62a2d92032677b439ef653987
diff --git a/metadata/md5-cache/chromeos-base/bootid-logger-9999 b/metadata/md5-cache/chromeos-base/bootid-logger-9999
index b18fc53..ec90984 100644
--- a/metadata/md5-cache/chromeos-base/bootid-logger-9999
+++ b/metadata/md5-cache/chromeos-base/bootid-logger-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Program to record the current boot ID to the log
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/bootid-logger
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=!<=chromeos-base/croslog-0.0.1-r44 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=1a85e6ddbeabe3cb8ab0036433e37a4d
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2359f9d18cf30e4d7cd77f12801c8a80
diff --git a/metadata/md5-cache/chromeos-base/bootlockbox-client-0.0.1-r1166 b/metadata/md5-cache/chromeos-base/bootlockbox-client-0.0.1-r1166
new file mode 100644
index 0000000..447a379
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/bootlockbox-client-0.0.1-r1166
@@ -0,0 +1,14 @@
+BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=BootLockbox DBus client library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/
+IUSE=cros_host cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r1166
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=79a49a25d68dcaeb1ad7531864f2fbcc
diff --git a/metadata/md5-cache/chromeos-base/bootlockbox-client-0.0.1-r973 b/metadata/md5-cache/chromeos-base/bootlockbox-client-0.0.1-r973
deleted file mode 100644
index dd39fcb..0000000
--- a/metadata/md5-cache/chromeos-base/bootlockbox-client-0.0.1-r973
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=BootLockbox DBus client library for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/
-IUSE=cros_host cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r973
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=31c32bd775a8149b42fd2f900c58821c
diff --git a/metadata/md5-cache/chromeos-base/bootlockbox-client-9999 b/metadata/md5-cache/chromeos-base/bootlockbox-client-9999
index af612cb..a9a0e80 100644
--- a/metadata/md5-cache/chromeos-base/bootlockbox-client-9999
+++ b/metadata/md5-cache/chromeos-base/bootlockbox-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=BootLockbox DBus client library for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=cd4719e8b1aa2c3c5e1f3649d57a7915
diff --git a/metadata/md5-cache/chromeos-base/bootstat-0.0.2-r3081 b/metadata/md5-cache/chromeos-base/bootstat-0.0.2-r3081
deleted file mode 100644
index 3c17937..0000000
--- a/metadata/md5-cache/chromeos-base/bootstat-0.0.2-r3081
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS Boot Time Statistics Utilities
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/bootstat/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8e460b4319aa509e57ba887ac56806030aa85ccd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8e460b4319aa509e57ba887ac56806030aa85ccd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.2-r3081
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=335dd67ac59826790ac2685d58d2dcc3
diff --git a/metadata/md5-cache/chromeos-base/bootstat-0.0.2-r3116 b/metadata/md5-cache/chromeos-base/bootstat-0.0.2-r3116
new file mode 100644
index 0000000..9492e45
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/bootstat-0.0.2-r3116
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS Boot Time Statistics Utilities
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/bootstat/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_b871cc16ed8888c27944a61b1162d608b0921572_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_b871cc16ed8888c27944a61b1162d608b0921572_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.2-r3116
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=40cd7d7f4f00d2dfd2cdb8e0788bb161
diff --git a/metadata/md5-cache/chromeos-base/bootstat-9999 b/metadata/md5-cache/chromeos-base/bootstat-9999
index 889ba37..467a4c6 100644
--- a/metadata/md5-cache/chromeos-base/bootstat-9999
+++ b/metadata/md5-cache/chromeos-base/bootstat-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS Boot Time Statistics Utilities
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/bootstat/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=de863e65e972c5f3660c5cd8cf92e72e
diff --git a/metadata/md5-cache/chromeos-base/buffet-0.0.1-r2902 b/metadata/md5-cache/chromeos-base/buffet-0.0.1-r2902
deleted file mode 100644
index 1e2cabc..0000000
--- a/metadata/md5-cache/chromeos-base/buffet-0.0.1-r2902
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libweave:= chromeos-base/shill-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Local and cloud communication services for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/buffet/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_da25eefd3c0c9f59c7ef606fbc9c4ac8dacf0228_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_da25eefd3c0c9f59c7ef606fbc9c4ac8dacf0228_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libweave:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r2902
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=d2b201b91ff856776f1141564c455acf
diff --git a/metadata/md5-cache/chromeos-base/buffet-0.0.1-r2930 b/metadata/md5-cache/chromeos-base/buffet-0.0.1-r2930
new file mode 100644
index 0000000..c8a9126
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/buffet-0.0.1-r2930
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/libweave:= chromeos-base/shill-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Local and cloud communication services for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/buffet/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_47f6ceba57219100723f2671e0d507bd7605f22f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_47f6ceba57219100723f2671e0d507bd7605f22f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libweave:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r2930
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=1d3070d6ab63a756675905de404e238a
diff --git a/metadata/md5-cache/chromeos-base/buffet-9999 b/metadata/md5-cache/chromeos-base/buffet-9999
index dfee7d7..de3cac7 100644
--- a/metadata/md5-cache/chromeos-base/buffet-9999
+++ b/metadata/md5-cache/chromeos-base/buffet-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libweave:= chromeos-base/shill-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/libweave:= chromeos-base/shill-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Local and cloud communication services for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/buffet/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libweave:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=eaf5419aaf409e2d8565363e0e538483
diff --git a/metadata/md5-cache/chromeos-base/cbor-0.0.1-r101 b/metadata/md5-cache/chromeos-base/cbor-0.0.1-r101
new file mode 100644
index 0000000..55f7922
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cbor-0.0.1-r101
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Concise Binary Object Representation (CBOR) library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/cbor
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_f5f3d15e265fd3d3816c4b9533ecd5f3c05cf927 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_f5f3d15e265fd3d3816c4b9533ecd5f3c05cf927 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=cfdb9341c62a680da384eb4228b0b46a
diff --git a/metadata/md5-cache/chromeos-base/cbor-0.0.1-r75 b/metadata/md5-cache/chromeos-base/cbor-0.0.1-r75
deleted file mode 100644
index e69c77e..0000000
--- a/metadata/md5-cache/chromeos-base/cbor-0.0.1-r75
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Concise Binary Object Representation (CBOR) library for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/cbor
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_44021ce5241d712ce75d8be72c55f0e61dde192b cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_44021ce5241d712ce75d8be72c55f0e61dde192b cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=1d8caed9e90e170ccc8b2dddb5e66fe2
diff --git a/metadata/md5-cache/chromeos-base/cbor-9999 b/metadata/md5-cache/chromeos-base/cbor-9999
index 7def2aa..66cc18f 100644
--- a/metadata/md5-cache/chromeos-base/cbor-9999
+++ b/metadata/md5-cache/chromeos-base/cbor-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Concise Binary Object Representation (CBOR) library for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/cbor
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=36072f1884acce1db03fdfbd68fd599c
diff --git a/metadata/md5-cache/chromeos-base/cfm-dfu-notification-0.0.1-r104 b/metadata/md5-cache/chromeos-base/cfm-dfu-notification-0.0.1-r104
new file mode 100644
index 0000000..dbaadbb
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cfm-dfu-notification-0.0.1-r104
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Library to send firmware update notifications to CFM
+EAPI=7
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_63862a9eebc1145ee434295657abeeefaf884645_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_63862a9eebc1145ee434295657abeeefaf884645_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f5b7baeec291f77e49ea8d29a55b8d4d
diff --git a/metadata/md5-cache/chromeos-base/cfm-dfu-notification-0.0.1-r77 b/metadata/md5-cache/chromeos-base/cfm-dfu-notification-0.0.1-r77
deleted file mode 100644
index 12f0317..0000000
--- a/metadata/md5-cache/chromeos-base/cfm-dfu-notification-0.0.1-r77
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Library to send firmware update notifications to CFM
-EAPI=7
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_cb0770fe9b162f3437511fca1b23395c2a4758e9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_cb0770fe9b162f3437511fca1b23395c2a4758e9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=89e285798c109ee0acf0aec187fd54ee
diff --git a/metadata/md5-cache/chromeos-base/cfm-dfu-notification-9999 b/metadata/md5-cache/chromeos-base/cfm-dfu-notification-9999
index de86873..851d004 100644
--- a/metadata/md5-cache/chromeos-base/cfm-dfu-notification-9999
+++ b/metadata/md5-cache/chromeos-base/cfm-dfu-notification-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Library to send firmware update notifications to CFM
 EAPI=7
 IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=37dff4729471bed9857be8bb6767f695
diff --git a/metadata/md5-cache/chromeos-base/chameleon-0.0.2-r395 b/metadata/md5-cache/chromeos-base/chameleon-0.0.2-r395
deleted file mode 100644
index 0551643..0000000
--- a/metadata/md5-cache/chromeos-base/chameleon-0.0.2-r395
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=info install setup unpack
-DEPEND=dev-lang/python
-DESCRIPTION=Chameleon bundle for Autotest lab deployment
-EAPI=4
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/chameleon/
-IUSE=cros_host cros_workon_tree_bba3df3298c8ad0d5b58d9e01de04bdbedded81b
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-lang/python
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=88986cea0c5b32614eefa8fa0b9c1260
diff --git a/metadata/md5-cache/chromeos-base/chameleon-0.0.2-r445 b/metadata/md5-cache/chromeos-base/chameleon-0.0.2-r445
new file mode 100644
index 0000000..c8e4b7a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chameleon-0.0.2-r445
@@ -0,0 +1,13 @@
+DEFINED_PHASES=info install setup unpack
+DEPEND=dev-lang/python
+DESCRIPTION=Chameleon bundle for Autotest lab deployment
+EAPI=4
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/chameleon/
+IUSE=cros_host cros_workon_tree_5d4fe40c80ce462da9b210a2d334f988a40123f2
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-lang/python
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=8c939c0c717761d619cd8069522fe8d9
diff --git a/metadata/md5-cache/chromeos-base/chameleon-9999 b/metadata/md5-cache/chromeos-base/chameleon-9999
index 2ec680d..694061c 100644
--- a/metadata/md5-cache/chromeos-base/chameleon-9999
+++ b/metadata/md5-cache/chromeos-base/chameleon-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=dev-lang/python
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=56b6292b5c9d08d6dc539b688844c639
diff --git a/metadata/md5-cache/chromeos-base/chaps-0.0.1-r3258 b/metadata/md5-cache/chromeos-base/chaps-0.0.1-r3258
deleted file mode 100644
index e12b7eb..0000000
--- a/metadata/md5-cache/chromeos-base/chaps-0.0.1-r3258
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=!tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/openssl:= dev-libs/protobuf:= test? ( app-arch/gzip app-arch/tar ) chromeos-base/system_api:=[fuzzer?] fuzzer? ( dev-libs/libprotobuf-mutator ) tpm2? ( chromeos-base/trunks:=[test?] ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=PKCS #11 layer over TrouSerS
-EAPI=7
-HOMEPAGE=http://www.chromium.org/developers/design-documents/chaps-technical-design
-IUSE=systemd test tpm tpm2 fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5956de9997bc0735d9aeff6edc4d0098fb571b9b_8d228c8e702aebee142bcbf0763a15786eb5b3bb_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5956de9997bc0735d9aeff6edc4d0098fb571b9b_8d228c8e702aebee142bcbf0763a15786eb5b3bb_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/openssl:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-REQUIRED_USE=tpm2? ( !tpm )
-SLOT=0/0.0.1-r3258
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=1498c7804d3eb54c58741717ee19c4de
diff --git a/metadata/md5-cache/chromeos-base/chaps-0.0.1-r3376 b/metadata/md5-cache/chromeos-base/chaps-0.0.1-r3376
new file mode 100644
index 0000000..71907bb
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chaps-0.0.1-r3376
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=!tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/tpm_manager:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/openssl:= dev-libs/protobuf:= test? ( app-arch/gzip app-arch/tar ) chromeos-base/system_api:=[fuzzer?] fuzzer? ( dev-libs/libprotobuf-mutator ) tpm2? ( chromeos-base/trunks:=[test?] ) dev-libs/nss:= dev-libs/nspr:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=PKCS #11 layer over TrouSerS
+EAPI=7
+HOMEPAGE=http://www.chromium.org/developers/design-documents/chaps-technical-design
+IUSE=systemd test tpm tpm2 fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8640df3a4aff4084b644aeefc4d31752a1d97665_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_a06a3f47395fb7b584188c6852764bc773e5497e_8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8640df3a4aff4084b644aeefc4d31752a1d97665_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_a06a3f47395fb7b584188c6852764bc773e5497e_8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/tpm_manager:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/openssl:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+REQUIRED_USE=tpm2? ( !tpm )
+SLOT=0/0.0.1-r3376
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=f895b38eadf1c85fb2d47298e6c8c60a
diff --git a/metadata/md5-cache/chromeos-base/chaps-9999 b/metadata/md5-cache/chromeos-base/chaps-9999
index 005e19c..28ea85c 100644
--- a/metadata/md5-cache/chromeos-base/chaps-9999
+++ b/metadata/md5-cache/chromeos-base/chaps-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=!tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/openssl:= dev-libs/protobuf:= test? ( app-arch/gzip app-arch/tar ) chromeos-base/system_api:=[fuzzer?] fuzzer? ( dev-libs/libprotobuf-mutator ) tpm2? ( chromeos-base/trunks:=[test?] ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=!tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/tpm_manager:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/openssl:= dev-libs/protobuf:= test? ( app-arch/gzip app-arch/tar ) chromeos-base/system_api:=[fuzzer?] fuzzer? ( dev-libs/libprotobuf-mutator ) tpm2? ( chromeos-base/trunks:=[test?] ) dev-libs/nss:= dev-libs/nspr:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=PKCS #11 layer over TrouSerS
 EAPI=7
 HOMEPAGE=http://www.chromium.org/developers/design-documents/chaps-technical-design
@@ -8,8 +8,8 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=!tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/openssl:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=!tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/tpm_manager:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/openssl:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 REQUIRED_USE=tpm2? ( !tpm )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=70073c4ce69b23eafeda674a1cd11c13
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=36ddcfb676f682e567573efe7a8bd9ad
diff --git a/metadata/md5-cache/chromeos-base/chrome-binary-tests-0.0.1 b/metadata/md5-cache/chromeos-base/chrome-binary-tests-0.0.1
index 0e7969f..2b25738 100644
--- a/metadata/md5-cache/chromeos-base/chrome-binary-tests-0.0.1
+++ b/metadata/md5-cache/chromeos-base/chrome-binary-tests-0.0.1
@@ -3,8 +3,8 @@
 DESCRIPTION=Install Chromium binary tests to test image
 EAPI=6
 HOMEPAGE=http://www.chromium.org
-IUSE=vaapi
+IUSE=vaapi v4l2_codec
 KEYWORDS=*
 LICENSE=BSD-Google
 SLOT=0
-_md5_=192850b700b79b1091fd78bd85f1f0ea
+_md5_=675ee00119b84fc1ff3c79c5afe344c3
diff --git a/metadata/md5-cache/chromeos-base/chrome-binary-tests-0.0.1-r16 b/metadata/md5-cache/chromeos-base/chrome-binary-tests-0.0.1-r16
deleted file mode 100644
index 0e7969f..0000000
--- a/metadata/md5-cache/chromeos-base/chrome-binary-tests-0.0.1-r16
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=install
-DEPEND=chromeos-base/chromeos-chrome
-DESCRIPTION=Install Chromium binary tests to test image
-EAPI=6
-HOMEPAGE=http://www.chromium.org
-IUSE=vaapi
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-_md5_=192850b700b79b1091fd78bd85f1f0ea
diff --git a/metadata/md5-cache/chromeos-base/chrome-binary-tests-0.0.1-r18 b/metadata/md5-cache/chromeos-base/chrome-binary-tests-0.0.1-r18
new file mode 100644
index 0000000..2b25738
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chrome-binary-tests-0.0.1-r18
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DEPEND=chromeos-base/chromeos-chrome
+DESCRIPTION=Install Chromium binary tests to test image
+EAPI=6
+HOMEPAGE=http://www.chromium.org
+IUSE=vaapi v4l2_codec
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+_md5_=675ee00119b84fc1ff3c79c5afe344c3
diff --git a/metadata/md5-cache/chromeos-base/chrome-icu-89.0.4387.0_rc-r1 b/metadata/md5-cache/chromeos-base/chrome-icu-89.0.4387.0_rc-r1
deleted file mode 100644
index 46e5306..0000000
--- a/metadata/md5-cache/chromeos-base/chrome-icu-89.0.4387.0_rc-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup unpack
-DEPEND=net-print/cups x11-libs/libdrm
-DESCRIPTION=The ICU library copied from chrome/third_party
-EAPI=5
-HOMEPAGE=https://cs.chromium.org/chromium/src/third_party/icu/
-IUSE=asan chrome_internal component_build cups +libcxx msan neon +runhooks thinlto ubsan verbose xkbcommon chrome_internal asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=icu-58
-RDEPEND=!dev-libs/icu !<chromeos-base/chromeos-chrome-83.0.4098.4 xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config )
-RESTRICT=network-sandbox mirror
-SLOT=0/89.0.4387.0_rc-r1
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	chromium-source	02ac5d86b66541750756714fe10f8f49	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d48b37c7569848b63275318fa183d214
diff --git a/metadata/md5-cache/chromeos-base/chrome-icu-93.0.4554.0_rc-r1 b/metadata/md5-cache/chromeos-base/chrome-icu-93.0.4554.0_rc-r1
new file mode 100644
index 0000000..6cad220
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chrome-icu-93.0.4554.0_rc-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare setup unpack
+DEPEND=net-print/cups x11-libs/libdrm
+DESCRIPTION=The ICU library copied from chrome/third_party
+EAPI=5
+HOMEPAGE=https://cs.chromium.org/chromium/src/third_party/icu/
+IUSE=asan chrome_internal component_build cups +libcxx msan neon +runhooks thinlto ubsan verbose xkbcommon chrome_internal asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=icu-58
+RDEPEND=!dev-libs/icu !<chromeos-base/chromeos-chrome-83.0.4098.4 xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config )
+RESTRICT=network-sandbox mirror
+SLOT=0/93.0.4554.0_rc-r1
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	chromium-source	02ac5d86b66541750756714fe10f8f49	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=70ced7981ea1e4c14928c9e8ce634b60
diff --git a/metadata/md5-cache/chromeos-base/chrome-icu-9999 b/metadata/md5-cache/chromeos-base/chrome-icu-9999
index cd922d6..a67601c 100644
--- a/metadata/md5-cache/chromeos-base/chrome-icu-9999
+++ b/metadata/md5-cache/chromeos-base/chrome-icu-9999
@@ -9,5 +9,5 @@
 RDEPEND=!dev-libs/icu !<chromeos-base/chromeos-chrome-83.0.4098.4 xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config )
 RESTRICT=network-sandbox mirror
 SLOT=0/9999
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	chromium-source	02ac5d86b66541750756714fe10f8f49	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=180286f746db8dca776cd305918446b4
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	chromium-source	02ac5d86b66541750756714fe10f8f49	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=24d9f44582b0b5caf49636a7ca319c8d
diff --git a/metadata/md5-cache/chromeos-base/chromeos-accelerometer-init-0.0.1 b/metadata/md5-cache/chromeos-base/chromeos-accelerometer-init-0.0.1
index 9e4ccdb..f25c1df 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-accelerometer-init-0.0.1
+++ b/metadata/md5-cache/chromeos-base/chromeos-accelerometer-init-0.0.1
@@ -8,4 +8,4 @@
 RDEPEND=chromeos-base/mems_setup virtual/chromeos-ec-driver-init virtual/modutils virtual/udev
 SLOT=0
 _eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=56dbf9e4cbc8fc957b16c5c613ec2589
+_md5_=6b38b43a4121b21879dd77240135af2f
diff --git a/metadata/md5-cache/chromeos-base/chromeos-accelerometer-init-0.0.1-r25 b/metadata/md5-cache/chromeos-base/chromeos-accelerometer-init-0.0.1-r25
deleted file mode 100644
index 9e4ccdb..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-accelerometer-init-0.0.1-r25
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=install test
-DEPEND=virtual/pkgconfig
-DESCRIPTION=Chrome OS trigger allowing chrome to access cros-ec-accel device
-EAPI=5
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=chromeos-base/mems_setup virtual/chromeos-ec-driver-init virtual/modutils virtual/udev
-SLOT=0
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=56dbf9e4cbc8fc957b16c5c613ec2589
diff --git a/metadata/md5-cache/chromeos-base/chromeos-accelerometer-init-0.0.1-r27 b/metadata/md5-cache/chromeos-base/chromeos-accelerometer-init-0.0.1-r27
new file mode 100644
index 0000000..f25c1df
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-accelerometer-init-0.0.1-r27
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install test
+DEPEND=virtual/pkgconfig
+DESCRIPTION=Chrome OS trigger allowing chrome to access cros-ec-accel device
+EAPI=5
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=chromeos-base/mems_setup virtual/chromeos-ec-driver-init virtual/modutils virtual/udev
+SLOT=0
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=6b38b43a4121b21879dd77240135af2f
diff --git a/metadata/md5-cache/chromeos-base/chromeos-base-1-r3 b/metadata/md5-cache/chromeos-base/chromeos-base-1-r3
deleted file mode 100644
index ddfa2c5..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-base-1-r3
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=info install preinst setup unpack
-DEPEND=>=sys-apps/baselayout-2 !<sys-apps/baselayout-2.0.1-r227 !<sys-libs/timezone-data-2011d !<=app-admin/sudo-1.8.2 !<sys-apps/mawk-1.3.4 !<app-shells/bash-4.1 !<app-shells/dash-0.5.5 !<net-misc/openssh-5.2_p1-r8 app-shells/bash !cros_host? ( !pam? ( !app-admin/sudo ) !app-misc/editor-wrapper cros_embedded? ( app-shells/dash ) sys-libs/timezone-data ) sys-apps/baselayout
-DESCRIPTION=ChromeOS specific system setup
-EAPI=7
-HOMEPAGE=https://dev.chromium.org/
-IUSE=ac_only chromeless_tty cros_embedded cros_host pam vtconsole cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=>=sys-apps/baselayout-2 !<sys-apps/baselayout-2.0.1-r227 !<sys-libs/timezone-data-2011d !<=app-admin/sudo-1.8.2 !<sys-apps/mawk-1.3.4 !<app-shells/bash-4.1 !<app-shells/dash-0.5.5 !<net-misc/openssh-5.2_p1-r8 app-shells/bash !cros_host? ( !pam? ( !app-admin/sudo ) !app-misc/editor-wrapper cros_embedded? ( app-shells/dash ) sys-libs/timezone-data ) sys-apps/baselayout
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=e33bbabf13c40c16e6af677b0472e46c
diff --git a/metadata/md5-cache/chromeos-base/chromeos-base-1-r6 b/metadata/md5-cache/chromeos-base/chromeos-base-1-r6
new file mode 100644
index 0000000..af02a94
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-base-1-r6
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=info install preinst setup unpack
+DEPEND=>=sys-apps/baselayout-2 !<sys-apps/baselayout-2.0.1-r227 !<sys-libs/timezone-data-2011d !<=app-admin/sudo-1.8.2 !<sys-apps/mawk-1.3.4 !<app-shells/bash-4.1 !<app-shells/dash-0.5.5 !<net-misc/openssh-5.2_p1-r8 app-shells/bash !cros_host? ( !pam? ( !app-admin/sudo ) !app-misc/editor-wrapper cros_embedded? ( app-shells/dash ) sys-libs/timezone-data ) sys-apps/baselayout
+DESCRIPTION=ChromeOS specific system setup
+EAPI=7
+HOMEPAGE=https://dev.chromium.org/
+IUSE=ac_only chromeless_tty cros_embedded cros_host pam vtconsole cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=>=sys-apps/baselayout-2 !<sys-apps/baselayout-2.0.1-r227 !<sys-libs/timezone-data-2011d !<=app-admin/sudo-1.8.2 !<sys-apps/mawk-1.3.4 !<app-shells/bash-4.1 !<app-shells/dash-0.5.5 !<net-misc/openssh-5.2_p1-r8 app-shells/bash !cros_host? ( !pam? ( !app-admin/sudo ) !app-misc/editor-wrapper cros_embedded? ( app-shells/dash ) sys-libs/timezone-data ) sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=e33bbabf13c40c16e6af677b0472e46c
diff --git a/metadata/md5-cache/chromeos-base/chromeos-base-9999 b/metadata/md5-cache/chromeos-base/chromeos-base-9999
index b7b63a2..e95d5af 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-base-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-base-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=>=sys-apps/baselayout-2 !<sys-apps/baselayout-2.0.1-r227 !<sys-libs/timezone-data-2011d !<=app-admin/sudo-1.8.2 !<sys-apps/mawk-1.3.4 !<app-shells/bash-4.1 !<app-shells/dash-0.5.5 !<net-misc/openssh-5.2_p1-r8 app-shells/bash !cros_host? ( !pam? ( !app-admin/sudo ) !app-misc/editor-wrapper cros_embedded? ( app-shells/dash ) sys-libs/timezone-data ) sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=c8854fe8b5972cf9b0483d6ac4823290
diff --git a/metadata/md5-cache/chromeos-base/chromeos-chrome-89.0.4387.0_rc-r1 b/metadata/md5-cache/chromeos-base/chromeos-chrome-89.0.4387.0_rc-r1
deleted file mode 100644
index b1bee94..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-chrome-89.0.4387.0_rc-r1
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure install postinst preinst prepare setup unpack
-DEPEND=app-arch/bzip2 app-crypt/mit-krb5 app-misc/edid-decode authpolicy? ( chromeos-base/authpolicy ) ~chromeos-base/chrome-icu-89.0.4387.0_rc chromeos-base/gestures chromeos-base/libevdev fonts? ( chromeos-base/chromeos-fonts ) chrome_internal? ( chromeos-base/quickoffice ) dev-libs/nspr >=dev-libs/nss-3.12.2 >=media-libs/alsa-lib-1.0.19 media-libs/fontconfig media-libs/libsync x11-libs/libdrm ozone_platform_gbm? ( media-libs/minigbm ) v4lplugin? ( media-libs/libv4lplugins ) >=media-sound/adhd-0.0.1-r310 net-print/cups opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) sys-apps/dbus sys-apps/pciutils virtual/udev sys-libs/libcap chrome_remoting? ( sys-libs/pam ) vaapi? ( x11-libs/libva ) xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config ) accessibility? ( app-accessibility/brltty app-accessibility/espeak-ng app-accessibility/googletts ) libcxx? ( sys-libs/libcxxabi sys-libs/libcxx ) oobe_config? ( chromeos-base/oobe_config ) chromeos-base/protofiles >=dev-util/gperf-3.0.3 >=dev-util/pkgconfig-0.23 arm? ( x11-libs/libdrm ) sys-apps/baselayout
-DESCRIPTION=Open-source version of Google Chrome web browser
-EAPI=7
-HOMEPAGE=http://www.chromium.org/
-IUSE=+afdo_use afdo_verify +accessibility app_shell asan +authpolicy +build_tests cdm_factory_daemon +chrome_debug +cfi cfm chrome_debug_tests chrome_dcheck chrome_internal chrome_media +chrome_remoting clang_tidy component_build +debug_fission +fonts goma goma_thinlto +highdpi internal_gles_conform +libcxx mojo msan +nacl neon oobe_config opengl opengles orderfile_generate +orderfile_use orderfile_verify +runhooks strict_toolchain_checks +thinlto touchview ubsan v4l2_codec v4lplugin vaapi verbose vtable_verify xkbcommon ozone_platform_gbm ozone_platform_cast ozone_platform_headless ozone_platform_egltest ozone_platform_caca ozone_platform_default_gbm ozone_platform_default_cast ozone_platform_default_headless ozone_platform_default_egltest ozone_platform_default_caca +autotest +buildcheck autotest opengles chrome_internal asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=BSD-Google chrome_internal? ( Google-TOS )
-PROPERTIES=live
-RDEPEND=app-arch/bzip2 app-crypt/mit-krb5 app-misc/edid-decode authpolicy? ( chromeos-base/authpolicy ) ~chromeos-base/chrome-icu-89.0.4387.0_rc chromeos-base/gestures chromeos-base/libevdev fonts? ( chromeos-base/chromeos-fonts ) chrome_internal? ( chromeos-base/quickoffice ) dev-libs/nspr >=dev-libs/nss-3.12.2 >=media-libs/alsa-lib-1.0.19 media-libs/fontconfig media-libs/libsync x11-libs/libdrm ozone_platform_gbm? ( media-libs/minigbm ) v4lplugin? ( media-libs/libv4lplugins ) >=media-sound/adhd-0.0.1-r310 net-print/cups opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) sys-apps/dbus sys-apps/pciutils virtual/udev sys-libs/libcap chrome_remoting? ( sys-libs/pam ) vaapi? ( x11-libs/libva ) xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config ) accessibility? ( app-accessibility/brltty app-accessibility/espeak-ng app-accessibility/googletts ) libcxx? ( sys-libs/libcxxabi sys-libs/libcxx ) oobe_config? ( chromeos-base/oobe_config ) autotest? ( chromeos-base/autotest ) sys-apps/baselayout
-REQUIRED_USE=cfi? ( thinlto ) afdo_verify? ( !afdo_use ) orderfile_generate? ( !orderfile_use ) ^^ ( ozone_platform_default_gbm ozone_platform_default_cast ozone_platform_default_headless ozone_platform_default_egltest ozone_platform_default_caca )
-RESTRICT=network-sandbox mirror
-SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	binutils-funcs	6207477a739f6f25d13da27b9cc00160	chromium-source	02ac5d86b66541750756714fe10f8f49	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=10fdcccd7ade78bbfb61a15c0b954eda
diff --git a/metadata/md5-cache/chromeos-base/chromeos-chrome-93.0.4554.0_rc-r1 b/metadata/md5-cache/chromeos-base/chromeos-chrome-93.0.4554.0_rc-r1
new file mode 100644
index 0000000..68ec9cc
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-chrome-93.0.4554.0_rc-r1
@@ -0,0 +1,16 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure install postinst preinst prepare setup unpack
+DEPEND=app-arch/bzip2 app-crypt/mit-krb5 app-misc/edid-decode authpolicy? ( chromeos-base/authpolicy ) ~chromeos-base/chrome-icu-93.0.4554.0_rc chromeos-base/gestures chromeos-base/libevdev:= fonts? ( chromeos-base/chromeos-fonts ) chrome_internal? ( chromeos-base/quickoffice ) dev-libs/nspr >=dev-libs/nss-3.12.2 >=media-libs/alsa-lib-1.0.19 media-libs/fontconfig media-libs/libsync x11-libs/libdrm ozone_platform_gbm? ( media-libs/minigbm ) v4lplugin? ( media-libs/libv4lplugins ) >=media-sound/adhd-0.0.1-r310 net-print/cups opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) sys-apps/dbus sys-apps/pciutils virtual/udev sys-libs/libcap chrome_remoting? ( sys-libs/pam ) vaapi? ( x11-libs/libva ) xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config ) accessibility? ( app-accessibility/brltty app-accessibility/espeak-ng app-accessibility/googletts ) libcxx? ( sys-libs/libcxxabi sys-libs/libcxx ) oobe_config? ( chromeos-base/oobe_config ) iioservice? ( chromeos-base/iioservice ) chromeos-base/protofiles >=dev-util/gperf-3.0.3 >=dev-util/pkgconfig-0.23 arm? ( x11-libs/libdrm ) sys-apps/baselayout
+DESCRIPTION=Open-source version of Google Chrome web browser
+EAPI=7
+HOMEPAGE=http://www.chromium.org/
+IUSE=+afdo_use afdo_verify +accessibility app_shell asan +authpolicy +build_tests cdm_factory_daemon +chrome_debug +cfi cfm chrome_debug_tests chrome_dcheck chrome_internal chrome_media +chrome_remoting clang_tidy component_build cros-debug debug_fission +dwarf5 +fonts goma goma_thinlto +highdpi iioservice internal_gles_conform +libcxx mojo msan +nacl neon oobe_config opengl opengles orderfile_generate +orderfile_use orderfile_verify +runhooks strict_toolchain_checks +thinlto touchview ubsan v4l2_codec v4lplugin vaapi verbose vtable_verify xkbcommon ozone_platform_gbm ozone_platform_cast ozone_platform_headless ozone_platform_egltest ozone_platform_caca ozone_platform_default_gbm ozone_platform_default_cast ozone_platform_default_headless ozone_platform_default_egltest ozone_platform_default_caca +autotest +buildcheck autotest opengles chrome_internal asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=BSD-Google chrome_internal? ( Google-TOS )
+PROPERTIES=live
+RDEPEND=app-arch/bzip2 app-crypt/mit-krb5 app-misc/edid-decode authpolicy? ( chromeos-base/authpolicy ) ~chromeos-base/chrome-icu-93.0.4554.0_rc chromeos-base/gestures chromeos-base/libevdev:= fonts? ( chromeos-base/chromeos-fonts ) chrome_internal? ( chromeos-base/quickoffice ) dev-libs/nspr >=dev-libs/nss-3.12.2 >=media-libs/alsa-lib-1.0.19 media-libs/fontconfig media-libs/libsync x11-libs/libdrm ozone_platform_gbm? ( media-libs/minigbm ) v4lplugin? ( media-libs/libv4lplugins ) >=media-sound/adhd-0.0.1-r310 net-print/cups opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) sys-apps/dbus sys-apps/pciutils virtual/udev sys-libs/libcap chrome_remoting? ( sys-libs/pam ) vaapi? ( x11-libs/libva ) xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config ) accessibility? ( app-accessibility/brltty app-accessibility/espeak-ng app-accessibility/googletts ) libcxx? ( sys-libs/libcxxabi sys-libs/libcxx ) oobe_config? ( chromeos-base/oobe_config ) iioservice? ( chromeos-base/iioservice ) autotest? ( chromeos-base/autotest ) sys-apps/baselayout
+REQUIRED_USE=cfi? ( thinlto ) afdo_verify? ( !afdo_use ) orderfile_generate? ( !orderfile_use ) ^^ ( ozone_platform_default_gbm ozone_platform_default_cast ozone_platform_default_headless ozone_platform_default_egltest ozone_platform_default_caca )
+RESTRICT=network-sandbox mirror
+SLOT=0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	binutils-funcs	6207477a739f6f25d13da27b9cc00160	chromium-source	02ac5d86b66541750756714fe10f8f49	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=fff3c8ff9fe564063ca40e8f188aa43f
diff --git a/metadata/md5-cache/chromeos-base/chromeos-chrome-9999 b/metadata/md5-cache/chromeos-base/chromeos-chrome-9999
index 867baa7..ba7d482 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-chrome-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-chrome-9999
@@ -1,16 +1,16 @@
 BDEPEND=dev-vcs/git
 DEFINED_PHASES=compile configure install postinst preinst prepare setup unpack
-DEPEND=app-arch/bzip2 app-crypt/mit-krb5 app-misc/edid-decode authpolicy? ( chromeos-base/authpolicy ) ~chromeos-base/chrome-icu-9999 chromeos-base/gestures chromeos-base/libevdev fonts? ( chromeos-base/chromeos-fonts ) chrome_internal? ( chromeos-base/quickoffice ) dev-libs/nspr >=dev-libs/nss-3.12.2 >=media-libs/alsa-lib-1.0.19 media-libs/fontconfig media-libs/libsync x11-libs/libdrm ozone_platform_gbm? ( media-libs/minigbm ) v4lplugin? ( media-libs/libv4lplugins ) >=media-sound/adhd-0.0.1-r310 net-print/cups opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) sys-apps/dbus sys-apps/pciutils virtual/udev sys-libs/libcap chrome_remoting? ( sys-libs/pam ) vaapi? ( x11-libs/libva ) xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config ) accessibility? ( app-accessibility/brltty app-accessibility/espeak-ng app-accessibility/googletts ) libcxx? ( sys-libs/libcxxabi sys-libs/libcxx ) oobe_config? ( chromeos-base/oobe_config ) iioservice? ( chromeos-base/iioservice ) chromeos-base/protofiles >=dev-util/gperf-3.0.3 >=dev-util/pkgconfig-0.23 arm? ( x11-libs/libdrm ) sys-apps/baselayout
+DEPEND=app-arch/bzip2 app-crypt/mit-krb5 app-misc/edid-decode authpolicy? ( chromeos-base/authpolicy ) ~chromeos-base/chrome-icu-9999 chromeos-base/gestures chromeos-base/libevdev:= fonts? ( chromeos-base/chromeos-fonts ) chrome_internal? ( chromeos-base/quickoffice ) dev-libs/nspr >=dev-libs/nss-3.12.2 >=media-libs/alsa-lib-1.0.19 media-libs/fontconfig media-libs/libsync x11-libs/libdrm ozone_platform_gbm? ( media-libs/minigbm ) v4lplugin? ( media-libs/libv4lplugins ) >=media-sound/adhd-0.0.1-r310 net-print/cups opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) sys-apps/dbus sys-apps/pciutils virtual/udev sys-libs/libcap chrome_remoting? ( sys-libs/pam ) vaapi? ( x11-libs/libva ) xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config ) accessibility? ( app-accessibility/brltty app-accessibility/espeak-ng app-accessibility/googletts ) libcxx? ( sys-libs/libcxxabi sys-libs/libcxx ) oobe_config? ( chromeos-base/oobe_config ) iioservice? ( chromeos-base/iioservice ) chromeos-base/protofiles >=dev-util/gperf-3.0.3 >=dev-util/pkgconfig-0.23 arm? ( x11-libs/libdrm ) sys-apps/baselayout
 DESCRIPTION=Open-source version of Google Chrome web browser
 EAPI=7
 HOMEPAGE=http://www.chromium.org/
-IUSE=+afdo_use afdo_verify +accessibility app_shell asan +authpolicy +build_tests cdm_factory_daemon +chrome_debug +cfi cfm chrome_debug_tests chrome_dcheck chrome_internal chrome_media +chrome_remoting clang_tidy component_build +debug_fission +fonts goma goma_thinlto +highdpi iioservice internal_gles_conform +libcxx mojo msan +nacl neon oobe_config opengl opengles orderfile_generate +orderfile_use orderfile_verify +runhooks strict_toolchain_checks +thinlto touchview ubsan v4l2_codec v4lplugin vaapi verbose vtable_verify xkbcommon ozone_platform_gbm ozone_platform_cast ozone_platform_headless ozone_platform_egltest ozone_platform_caca ozone_platform_default_gbm ozone_platform_default_cast ozone_platform_default_headless ozone_platform_default_egltest ozone_platform_default_caca +autotest +buildcheck autotest opengles chrome_internal asan coverage fuzzer msan tsan ubsan
+IUSE=+afdo_use afdo_verify +accessibility app_shell asan +authpolicy +build_tests cdm_factory_daemon +chrome_debug +cfi cfm chrome_debug_tests chrome_dcheck chrome_internal chrome_media +chrome_remoting clang_tidy component_build cros-debug debug_fission +dwarf5 +fonts goma goma_thinlto +highdpi iioservice internal_gles_conform +libcxx mojo msan +nacl neon oobe_config opengl opengles orderfile_generate +orderfile_use orderfile_verify +runhooks strict_toolchain_checks +thinlto touchview ubsan v4l2_codec v4lplugin vaapi verbose vtable_verify xkbcommon ozone_platform_gbm ozone_platform_cast ozone_platform_headless ozone_platform_egltest ozone_platform_caca ozone_platform_default_gbm ozone_platform_default_cast ozone_platform_default_headless ozone_platform_default_egltest ozone_platform_default_caca +autotest +buildcheck autotest opengles chrome_internal asan coverage fuzzer msan tsan ubsan
 KEYWORDS=~*
 LICENSE=BSD-Google chrome_internal? ( Google-TOS )
 PROPERTIES=live
-RDEPEND=app-arch/bzip2 app-crypt/mit-krb5 app-misc/edid-decode authpolicy? ( chromeos-base/authpolicy ) ~chromeos-base/chrome-icu-9999 chromeos-base/gestures chromeos-base/libevdev fonts? ( chromeos-base/chromeos-fonts ) chrome_internal? ( chromeos-base/quickoffice ) dev-libs/nspr >=dev-libs/nss-3.12.2 >=media-libs/alsa-lib-1.0.19 media-libs/fontconfig media-libs/libsync x11-libs/libdrm ozone_platform_gbm? ( media-libs/minigbm ) v4lplugin? ( media-libs/libv4lplugins ) >=media-sound/adhd-0.0.1-r310 net-print/cups opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) sys-apps/dbus sys-apps/pciutils virtual/udev sys-libs/libcap chrome_remoting? ( sys-libs/pam ) vaapi? ( x11-libs/libva ) xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config ) accessibility? ( app-accessibility/brltty app-accessibility/espeak-ng app-accessibility/googletts ) libcxx? ( sys-libs/libcxxabi sys-libs/libcxx ) oobe_config? ( chromeos-base/oobe_config ) iioservice? ( chromeos-base/iioservice ) autotest? ( chromeos-base/autotest ) sys-apps/baselayout
+RDEPEND=app-arch/bzip2 app-crypt/mit-krb5 app-misc/edid-decode authpolicy? ( chromeos-base/authpolicy ) ~chromeos-base/chrome-icu-9999 chromeos-base/gestures chromeos-base/libevdev:= fonts? ( chromeos-base/chromeos-fonts ) chrome_internal? ( chromeos-base/quickoffice ) dev-libs/nspr >=dev-libs/nss-3.12.2 >=media-libs/alsa-lib-1.0.19 media-libs/fontconfig media-libs/libsync x11-libs/libdrm ozone_platform_gbm? ( media-libs/minigbm ) v4lplugin? ( media-libs/libv4lplugins ) >=media-sound/adhd-0.0.1-r310 net-print/cups opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) sys-apps/dbus sys-apps/pciutils virtual/udev sys-libs/libcap chrome_remoting? ( sys-libs/pam ) vaapi? ( x11-libs/libva ) xkbcommon? ( x11-libs/libxkbcommon x11-misc/xkeyboard-config ) accessibility? ( app-accessibility/brltty app-accessibility/espeak-ng app-accessibility/googletts ) libcxx? ( sys-libs/libcxxabi sys-libs/libcxx ) oobe_config? ( chromeos-base/oobe_config ) iioservice? ( chromeos-base/iioservice ) autotest? ( chromeos-base/autotest ) sys-apps/baselayout
 REQUIRED_USE=cfi? ( thinlto ) afdo_verify? ( !afdo_use ) orderfile_generate? ( !orderfile_use ) ^^ ( ozone_platform_default_gbm ozone_platform_default_cast ozone_platform_default_headless ozone_platform_default_egltest ozone_platform_default_caca )
 RESTRICT=network-sandbox mirror
 SLOT=0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	binutils-funcs	6207477a739f6f25d13da27b9cc00160	chromium-source	02ac5d86b66541750756714fe10f8f49	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=097f3c7a69bd8da5fc49d11ac94f4ffc
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	autotest-deponly	9b1e5d19c437abea0e7c0fa90c192abd	binutils-funcs	6207477a739f6f25d13da27b9cc00160	chromium-source	02ac5d86b66541750756714fe10f8f49	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=faf678f079e260d27258f4a3a3e93f57
diff --git a/metadata/md5-cache/chromeos-base/chromeos-common-script-0.0.1-r254 b/metadata/md5-cache/chromeos-base/chromeos-common-script-0.0.1-r254
deleted file mode 100644
index 2a8eda4..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-common-script-0.0.1-r254
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS storage info tools
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-common-script/
-IUSE=direncryption fsverity kernel-3_18 kernel-4_4 prjquota cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_f2131ce9c8ad903ceb133ba94152c94b28643590_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_f2131ce9c8ad903ceb133ba94152c94b28643590_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-REQUIRED_USE=prjquota? ( !kernel-4_4 !kernel-3_18 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=15a4135f18fc92b2d88814929584f8fe
diff --git a/metadata/md5-cache/chromeos-base/chromeos-common-script-0.0.1-r280 b/metadata/md5-cache/chromeos-base/chromeos-common-script-0.0.1-r280
new file mode 100644
index 0000000..870ddd7
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-common-script-0.0.1-r280
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS storage info tools
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-common-script/
+IUSE=direncryption fsverity kernel-3_18 kernel-4_4 prjquota cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_1e7b7af56eebd756a7256d798a6d7680d470250d_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_1e7b7af56eebd756a7256d798a6d7680d470250d_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=prjquota? ( !kernel-4_4 !kernel-3_18 )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=dc76f6155d413db576d5d4c80a6f05b1
diff --git a/metadata/md5-cache/chromeos-base/chromeos-common-script-9999 b/metadata/md5-cache/chromeos-base/chromeos-common-script-9999
index 4c32a8f..96cc706 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-common-script-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-common-script-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS storage info tools
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-common-script/
@@ -10,5 +10,5 @@
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 REQUIRED_USE=prjquota? ( !kernel-4_4 !kernel-3_18 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a7a1ef13995eda1a764c1ff1bf7811eb
diff --git a/metadata/md5-cache/chromeos-base/chromeos-config-0.0.2-r126 b/metadata/md5-cache/chromeos-base/chromeos-config-0.0.2-r126
deleted file mode 100644
index 7cd8936..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-config-0.0.2-r126
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup test unpack
-DEPEND=!fuzzer? ( virtual/chromeos-config-bsp:= )
-DESCRIPTION=Chromium OS-specific configuration
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/config/
-IUSE=fuzzer generated_cros_config cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!fuzzer? ( virtual/chromeos-config-bsp:= )
-SLOT=0/0.0.2-r126
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3153fe6c3f074ee5bada3cea29562686
diff --git a/metadata/md5-cache/chromeos-base/chromeos-config-0.0.2-r129 b/metadata/md5-cache/chromeos-base/chromeos-config-0.0.2-r129
new file mode 100644
index 0000000..5eea087
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-config-0.0.2-r129
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install setup test unpack
+DEPEND=!fuzzer? ( virtual/chromeos-config-bsp:= )
+DESCRIPTION=Chromium OS-specific configuration
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/config/
+IUSE=fuzzer zephyr_ec cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!fuzzer? ( virtual/chromeos-config-bsp:= )
+SLOT=0/0.0.2-r129
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=bcc6154f2fd6360801633ad512c80db0
diff --git a/metadata/md5-cache/chromeos-base/chromeos-config-9999 b/metadata/md5-cache/chromeos-base/chromeos-config-9999
index 4cd5f84..39f6013 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-config-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-config-9999
@@ -4,11 +4,11 @@
 DESCRIPTION=Chromium OS-specific configuration
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/config/
-IUSE=fuzzer generated_cros_config cros_host cros_workon_tree_
+IUSE=fuzzer zephyr_ec cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=!fuzzer? ( virtual/chromeos-config-bsp:= )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6c5d09e6fb73a034c40534a2a2117b8f
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=eae3b4d5a231da06f254509ac8835a6b
diff --git a/metadata/md5-cache/chromeos-base/chromeos-config-host-0.0.2-r602 b/metadata/md5-cache/chromeos-base/chromeos-config-host-0.0.2-r602
deleted file mode 100644
index 35e7b27..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-config-host-0.0.2-r602
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=>=sys-fs/squashfs-tools-4.3 dev-python/jinja[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] !<chromeos-base/chromeos-config-tools-0.0.4 dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-DESCRIPTION=Chrome OS configuration host tools
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-config
-IUSE=cros_host cros_workon_tree_4a9d701c1716dbba6b3de3a9927299f399ec4580 python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=>=sys-fs/squashfs-tools-4.3 dev-python/jinja[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] !<chromeos-base/chromeos-config-tools-0.0.4 python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 ) || ( python_targets_python3_6 python_targets_python3_7 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=cca942e214328f333e164e45c1838eed
diff --git a/metadata/md5-cache/chromeos-base/chromeos-config-host-0.0.2-r625 b/metadata/md5-cache/chromeos-base/chromeos-config-host-0.0.2-r625
new file mode 100644
index 0000000..8768f52
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-config-host-0.0.2-r625
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=>=sys-fs/squashfs-tools-4.3 dev-python/jinja[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] !<chromeos-base/chromeos-config-tools-0.0.4 dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+DESCRIPTION=Chrome OS configuration host tools
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-config
+IUSE=cros_host cros_workon_tree_aa0612733aca2d5ffa65470f07408228b473ebdb python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=>=sys-fs/squashfs-tools-4.3 dev-python/jinja[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] !<chromeos-base/chromeos-config-tools-0.0.4 python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 ) || ( python_targets_python3_6 python_targets_python3_7 )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=bca6412af38b9ddb6278bc5e164ae1e7
diff --git a/metadata/md5-cache/chromeos-base/chromeos-config-host-9999 b/metadata/md5-cache/chromeos-base/chromeos-config-host-9999
index 548262f..f98706b 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-config-host-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-config-host-9999
@@ -10,5 +10,5 @@
 RDEPEND=>=sys-fs/squashfs-tools-4.3 dev-python/jinja[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] !<chromeos-base/chromeos-config-tools-0.0.4 python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 ) || ( python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=4bf29a8a2f9eeb4256e385f8723142ae
diff --git a/metadata/md5-cache/chromeos-base/chromeos-config-tools-0.0.4-r1679 b/metadata/md5-cache/chromeos-base/chromeos-config-tools-0.0.4-r1679
deleted file mode 100644
index 2eaad69..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-config-tools-0.0.4-r1679
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS configuration tools
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-config
-IUSE=cros_host cros_workon_tree_4fdfdbe461ccedeaaf176391c0bbb0f74943be45_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_f89d62f067e47fc70b2a70153729f6d4e5067414 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_4fdfdbe461ccedeaaf176391c0bbb0f74943be45_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_f89d62f067e47fc70b2a70153729f6d4e5067414 cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1b42d4010046953a4e7d4492dae58716
diff --git a/metadata/md5-cache/chromeos-base/chromeos-config-tools-0.0.4-r1780 b/metadata/md5-cache/chromeos-base/chromeos-config-tools-0.0.4-r1780
new file mode 100644
index 0000000..87fbeb3
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-config-tools-0.0.4-r1780
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS configuration tools
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-config
+IUSE=cros_host cros_workon_tree_4fdfdbe461ccedeaaf176391c0bbb0f74943be45_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_71cce620cf464ad17334cff4d450f8805cd6c507 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_4fdfdbe461ccedeaaf176391c0bbb0f74943be45_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_71cce620cf464ad17334cff4d450f8805cd6c507 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=0cb8cf069570e5a9626d818940e706b4
diff --git a/metadata/md5-cache/chromeos-base/chromeos-config-tools-9999 b/metadata/md5-cache/chromeos-base/chromeos-config-tools-9999
index e807320..97be3be 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-config-tools-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-config-tools-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS configuration tools
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-config
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8d790d7e2adf4f02178bec3ac47bb864
diff --git a/metadata/md5-cache/chromeos-base/chromeos-cr50-0.0.1 b/metadata/md5-cache/chromeos-base/chromeos-cr50-0.0.1
index 1649057..f9b0ba5 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-cr50-0.0.1
+++ b/metadata/md5-cache/chromeos-base/chromeos-cr50-0.0.1
@@ -5,5 +5,5 @@
 LICENSE=BSD-Google
 RDEPEND=chromeos-base/chromeos-cr50-dev chromeos-base/chromeos-cr50-scripts
 SLOT=0
-SRC_URI=gs://chromeos-localmirror/distfiles//cr50.r0.0.11.w0.5.7.tbz2 gs://chromeos-localmirror/distfiles//cr50.r0.0.11.w0.6.7_FFFF_00000000_00000010.tbz2
-_md5_=a055fcbe84c0d355ff122b4114d81632
+SRC_URI=gs://chromeos-localmirror/distfiles//cr50.r0.0.11.w0.5.30.tbz2 gs://chromeos-localmirror/distfiles//cr50.r0.0.11.w0.6.30_FFFF_00000000_00000010.tbz2
+_md5_=dec6e5bb9b3cfa98dbe5e44e1c2058fb
diff --git a/metadata/md5-cache/chromeos-base/chromeos-cr50-0.0.1-r103 b/metadata/md5-cache/chromeos-base/chromeos-cr50-0.0.1-r103
new file mode 100644
index 0000000..f9b0ba5
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-cr50-0.0.1-r103
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Ebuild to support the Chrome OS CR50 device.
+EAPI=7
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=chromeos-base/chromeos-cr50-dev chromeos-base/chromeos-cr50-scripts
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles//cr50.r0.0.11.w0.5.30.tbz2 gs://chromeos-localmirror/distfiles//cr50.r0.0.11.w0.6.30_FFFF_00000000_00000010.tbz2
+_md5_=dec6e5bb9b3cfa98dbe5e44e1c2058fb
diff --git a/metadata/md5-cache/chromeos-base/chromeos-cr50-0.0.1-r95 b/metadata/md5-cache/chromeos-base/chromeos-cr50-0.0.1-r95
deleted file mode 100644
index 1649057..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-cr50-0.0.1-r95
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Ebuild to support the Chrome OS CR50 device.
-EAPI=7
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=chromeos-base/chromeos-cr50-dev chromeos-base/chromeos-cr50-scripts
-SLOT=0
-SRC_URI=gs://chromeos-localmirror/distfiles//cr50.r0.0.11.w0.5.7.tbz2 gs://chromeos-localmirror/distfiles//cr50.r0.0.11.w0.6.7_FFFF_00000000_00000010.tbz2
-_md5_=a055fcbe84c0d355ff122b4114d81632
diff --git a/metadata/md5-cache/chromeos-base/chromeos-cr50-dev-0.0.1-r169 b/metadata/md5-cache/chromeos-base/chromeos-cr50-dev-0.0.1-r169
deleted file mode 100644
index b7974ea..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-cr50-dev-0.0.1-r169
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=dev-libs/openssl:0= virtual/libusb:1= fuzzer? ( dev-libs/protobuf:= ) fuzzer? ( dev-libs/libprotobuf-mutator:= ) unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) )
-DESCRIPTION=Google Security Chip firmware code
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/refs/heads/cr50_stab
-IUSE=asan cros_host fuzzer msan quiet ubsan verbose ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_1d1c66467f1ce5e5b0117438c1c104b51f954f5d_80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754_f3d026c790bd3d7121bb96ed2a4932360d698a73
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<chromeos-base/chromeos-ec-0.0.2 !<chromeos-base/ec-utils-0.0.2 dev-libs/openssl:0= virtual/libusb:1= fuzzer? ( dev-libs/protobuf:= )
-RESTRICT=binchecks
-SLOT=0/0.0.1-r169
-SRC_URI=gs://chromeos-localmirror/distfiles/cr50.prod.ro.A.0.0.11 gs://chromeos-localmirror/distfiles/cr50.prod.ro.B.0.0.11
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9c37ebf5f3a8fa2ef010d6a1cd795700
diff --git a/metadata/md5-cache/chromeos-base/chromeos-cr50-dev-0.0.1-r210 b/metadata/md5-cache/chromeos-base/chromeos-cr50-dev-0.0.1-r210
new file mode 100644
index 0000000..83707a2
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-cr50-dev-0.0.1-r210
@@ -0,0 +1,16 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install setup unpack
+DEPEND=dev-libs/openssl:0= virtual/libusb:1= fuzzer? ( dev-libs/protobuf:= ) fuzzer? ( dev-libs/libprotobuf-mutator:= ) unibuild? ( chromeos-base/chromeos-config:= )
+DESCRIPTION=Google Security Chip firmware code
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/refs/heads/cr50_stab
+IUSE=asan cros_host fuzzer msan quiet ubsan verbose ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_231827d025fd8a333ffb02249aee9960ae19a701_679fa8b14bd105ad9959a0f82eaa928d5b18890d_f3d026c790bd3d7121bb96ed2a4932360d698a73
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<chromeos-base/chromeos-ec-0.0.2 !<chromeos-base/ec-utils-0.0.2 dev-libs/openssl:0= virtual/libusb:1= fuzzer? ( dev-libs/protobuf:= )
+RESTRICT=binchecks
+SLOT=0/0.0.1-r210
+SRC_URI=gs://chromeos-localmirror/distfiles/cr50.prod.ro.A.0.0.11 gs://chromeos-localmirror/distfiles/cr50.prod.ro.B.0.0.11
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f6218d82c2c098572ac8d680b490496d
diff --git a/metadata/md5-cache/chromeos-base/chromeos-cr50-dev-9999 b/metadata/md5-cache/chromeos-base/chromeos-cr50-dev-9999
index 4886269..b3cfe228 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-cr50-dev-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-cr50-dev-9999
@@ -1,10 +1,10 @@
 BDEPEND=dev-vcs/git
 DEFINED_PHASES=compile info install setup unpack
-DEPEND=dev-libs/openssl:0= virtual/libusb:1= fuzzer? ( dev-libs/protobuf:= ) fuzzer? ( dev-libs/libprotobuf-mutator:= ) unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) )
+DEPEND=dev-libs/openssl:0= virtual/libusb:1= fuzzer? ( dev-libs/protobuf:= ) fuzzer? ( dev-libs/libprotobuf-mutator:= ) unibuild? ( chromeos-base/chromeos-config:= )
 DESCRIPTION=Google Security Chip firmware code
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/refs/heads/cr50_stab
-IUSE=asan cros_host fuzzer msan quiet ubsan verbose ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_
+IUSE=asan cros_host fuzzer msan quiet ubsan verbose ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
@@ -12,5 +12,5 @@
 RESTRICT=binchecks
 SLOT=0/9999
 SRC_URI=gs://chromeos-localmirror/distfiles/cr50.prod.ro.A.0.0.11 gs://chromeos-localmirror/distfiles/cr50.prod.ro.B.0.0.11
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=7d239de518e10cae29530118723005eb
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9dde749be52201c10fd56dae70066c90
diff --git a/metadata/md5-cache/chromeos-base/chromeos-cr50-scripts-0.0.1-r72 b/metadata/md5-cache/chromeos-base/chromeos-cr50-scripts-0.0.1-r74
similarity index 100%
rename from metadata/md5-cache/chromeos-base/chromeos-cr50-scripts-0.0.1-r72
rename to metadata/md5-cache/chromeos-base/chromeos-cr50-scripts-0.0.1-r74
diff --git a/metadata/md5-cache/chromeos-base/chromeos-dbus-bindings-0.0.1-r2627 b/metadata/md5-cache/chromeos-base/chromeos-dbus-bindings-0.0.1-r2627
deleted file mode 100644
index c4bb187..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-dbus-bindings-0.0.1-r2627
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/expat sys-apps/dbus >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Utility for building Chrome D-Bus bindings from an XML description
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-dbus-bindings
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_9d31c60be7abd29c5a17c96bb681ea5d094c8a97_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_9d31c60be7abd29c5a17c96bb681ea5d094c8a97_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/expat sys-apps/dbus >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=3a9f4d4bdb7ad4abcb52118b7e541c39
diff --git a/metadata/md5-cache/chromeos-base/chromeos-dbus-bindings-0.0.1-r2655 b/metadata/md5-cache/chromeos-base/chromeos-dbus-bindings-0.0.1-r2655
new file mode 100644
index 0000000..1636e39
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-dbus-bindings-0.0.1-r2655
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/expat sys-apps/dbus >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Utility for building Chrome D-Bus bindings from an XML description
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-dbus-bindings
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e8023258ebab0150d1674664c16f6d197136cc8b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e8023258ebab0150d1674664c16f6d197136cc8b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/expat sys-apps/dbus >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=5781a91295bae57dd912bf90dfc8a5dd
diff --git a/metadata/md5-cache/chromeos-base/chromeos-dbus-bindings-9999 b/metadata/md5-cache/chromeos-base/chromeos-dbus-bindings-9999
index 57dd6f9..fdbee6a 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-dbus-bindings-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-dbus-bindings-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/expat sys-apps/dbus >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-libs/expat sys-apps/dbus >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Utility for building Chrome D-Bus bindings from an XML description
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-dbus-bindings
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/expat sys-apps/dbus >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=5cfd58620a6a3489d6ca905e98192525
diff --git a/metadata/md5-cache/chromeos-base/chromeos-ec-0.0.2-r10238 b/metadata/md5-cache/chromeos-base/chromeos-ec-0.0.2-r10238
new file mode 100644
index 0000000..a98ef9b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-ec-0.0.2-r10238
@@ -0,0 +1,15 @@
+BDEPEND=>=chromeos-base/chromeos-config-host-0.0.2 dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile info install prepare setup test unpack
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot )
+DESCRIPTION=Embedded Controller firmware code
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
+IUSE=ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_ef831ef09b8fdc0da7cceb25def086f853ae97cd_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test cros_host cros_workon_tree_ef831ef09b8fdc0da7cceb25def086f853ae97cd_f3d026c790bd3d7121bb96ed2a4932360d698a73
+KEYWORDS=*
+LICENSE=CrOS-EC
+PROPERTIES=live live
+RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
+RESTRICT=strip
+SLOT=0/0.0.2-r10238
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5c906ec9366e5740bc2f9e411bb7efb6
diff --git a/metadata/md5-cache/chromeos-base/chromeos-ec-0.0.2-r8958 b/metadata/md5-cache/chromeos-base/chromeos-ec-0.0.2-r8958
deleted file mode 100644
index 1db80c2..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-ec-0.0.2-r8958
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=>=chromeos-base/chromeos-config-host-0.0.2 dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot )
-DESCRIPTION=Embedded Controller firmware code
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_6369b461fc719249ee33d60e507422b13cd12e97_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test cros_host cros_workon_tree_6369b461fc719249ee33d60e507422b13cd12e97_f3d026c790bd3d7121bb96ed2a4932360d698a73
-KEYWORDS=*
-LICENSE=CrOS-EC
-PROPERTIES=live live
-RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
-RESTRICT=binchecks
-SLOT=0/0.0.2-r8958
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=86eaf622cfbc43904a480f96fdbaf3fd
diff --git a/metadata/md5-cache/chromeos-base/chromeos-ec-9999 b/metadata/md5-cache/chromeos-base/chromeos-ec-9999
index c9aea63..cc106a8 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-ec-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-ec-9999
@@ -1,15 +1,15 @@
 BDEPEND=>=chromeos-base/chromeos-config-host-0.0.2 dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot )
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot )
 DESCRIPTION=Embedded Controller firmware code
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test cros_host cros_workon_tree_
+IUSE=ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=CrOS-EC
 PROPERTIES=live live
 RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
-RESTRICT=binchecks
+RESTRICT=strip
 SLOT=0/9999
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=bf4c4d4042ea7509555bdda737ac6fc8
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5a47c786017c4178806a7da1f21ac8c1
diff --git a/metadata/md5-cache/chromeos-base/chromeos-ec-headers-0.0.1-r4230 b/metadata/md5-cache/chromeos-base/chromeos-ec-headers-0.0.1-r4230
deleted file mode 100644
index 144e449..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-ec-headers-0.0.1-r4230
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup unpack
-DESCRIPTION=Exported headers from the embedded controller codebase.
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/ec-development
-IUSE=cros_host cros_workon_tree_6369b461fc719249ee33d60e507422b13cd12e97_1d1c66467f1ce5e5b0117438c1c104b51f954f5d
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/0.0.1-r4230
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=282f8b4acfbcc85b860fc8407b04d4a9
diff --git a/metadata/md5-cache/chromeos-base/chromeos-ec-headers-0.0.1-r5531 b/metadata/md5-cache/chromeos-base/chromeos-ec-headers-0.0.1-r5531
new file mode 100644
index 0000000..2a32952
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-ec-headers-0.0.1-r5531
@@ -0,0 +1,12 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install setup unpack
+DESCRIPTION=Exported headers from the embedded controller codebase.
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/ec-development
+IUSE=cros_host cros_workon_tree_ef831ef09b8fdc0da7cceb25def086f853ae97cd_231827d025fd8a333ffb02249aee9960ae19a701
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0.0.1-r5531
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=dbd77a3534859c0a04e1e0b54468fa8d
diff --git a/metadata/md5-cache/chromeos-base/chromeos-ec-headers-9999 b/metadata/md5-cache/chromeos-base/chromeos-ec-headers-9999
index 32e578c..6653125 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-ec-headers-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-ec-headers-9999
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=1791094695d150f595c21f2092e13971
diff --git a/metadata/md5-cache/chromeos-base/chromeos-firmware-null-0.0.3-r161 b/metadata/md5-cache/chromeos-base/chromeos-firmware-null-0.0.3-r161
deleted file mode 100644
index a30a36d..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-firmware-null-0.0.3-r161
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile info install setup test unpack
-DEPEND=chromeos-base/vboot_reference unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) app-arch/gzip app-arch/sharutils app-arch/tar sys-apps/util-linux bootimage? ( sys-boot/chromeos-bootimage ) cros_ec? ( chromeos-base/chromeos-ec )
-DESCRIPTION=Chrome OS Firmware (Template - change to board name)
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/firmware/
-IUSE=cros_host cros_workon_tree_579ceeab90c24c84d387d7f87159b3343c29e804 cros_host cros_workon_tree_579ceeab90c24c84d387d7f87159b3343c29e804 bootimage cros_ec cros_ish unibuild generated_cros_config
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/vboot_reference unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) app-arch/gzip app-arch/sharutils app-arch/tar sys-apps/util-linux chromeos-base/vpd sys-apps/flashrom sys-apps/mosys cros_ish? ( chromeos-base/chromeos-ish )
-RESTRICT=mirror
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-firmware	7a74949f84df3e9126d114dde9da9292	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=df256951e53115ddf37be217edfdb3dd
diff --git a/metadata/md5-cache/chromeos-base/chromeos-firmware-null-0.0.3-r162 b/metadata/md5-cache/chromeos-base/chromeos-firmware-null-0.0.3-r162
new file mode 100644
index 0000000..57093a6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-firmware-null-0.0.3-r162
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile info install setup test unpack
+DEPEND=chromeos-base/vboot_reference unibuild? ( chromeos-base/chromeos-config ) app-arch/gzip app-arch/sharutils app-arch/tar sys-apps/util-linux bootimage? ( sys-boot/chromeos-bootimage ) cros_ec? ( chromeos-base/chromeos-ec ) zephyr? ( chromeos-base/chromeos-zephyr )
+DESCRIPTION=Chrome OS Firmware (Template - change to board name)
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/firmware/
+IUSE=cros_host cros_workon_tree_6f2eebf22cd242e9c01723dd03405fdd47e15478 cros_host cros_workon_tree_6f2eebf22cd242e9c01723dd03405fdd47e15478 bootimage cros_ec cros_ish tot_firmware unibuild zephyr zephyr_ec
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/vboot_reference unibuild? ( chromeos-base/chromeos-config ) app-arch/gzip app-arch/sharutils app-arch/tar sys-apps/util-linux chromeos-base/vpd sys-apps/flashrom sys-apps/mosys cros_ish? ( chromeos-base/chromeos-ish )
+RESTRICT=mirror
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-firmware	761bba6ac3bce60f271dc3194699687c	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=5c92f6225ec02a7b3494266a9982e45c
diff --git a/metadata/md5-cache/chromeos-base/chromeos-firmware-null-9999 b/metadata/md5-cache/chromeos-base/chromeos-firmware-null-9999
index 98674b3..5dc409e 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-firmware-null-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-firmware-null-9999
@@ -1,14 +1,14 @@
 DEFINED_PHASES=compile info install setup test unpack
-DEPEND=chromeos-base/vboot_reference unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) app-arch/gzip app-arch/sharutils app-arch/tar sys-apps/util-linux bootimage? ( sys-boot/chromeos-bootimage ) cros_ec? ( chromeos-base/chromeos-ec )
+DEPEND=chromeos-base/vboot_reference unibuild? ( chromeos-base/chromeos-config ) app-arch/gzip app-arch/sharutils app-arch/tar sys-apps/util-linux bootimage? ( sys-boot/chromeos-bootimage ) cros_ec? ( chromeos-base/chromeos-ec ) zephyr? ( chromeos-base/chromeos-zephyr )
 DESCRIPTION=Chrome OS Firmware (Template - change to board name)
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/firmware/
-IUSE=cros_host cros_workon_tree_ cros_host cros_workon_tree_ bootimage cros_ec cros_ish unibuild generated_cros_config
+IUSE=cros_host cros_workon_tree_ cros_host cros_workon_tree_ bootimage cros_ec cros_ish tot_firmware unibuild zephyr zephyr_ec
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/vboot_reference unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) app-arch/gzip app-arch/sharutils app-arch/tar sys-apps/util-linux chromeos-base/vpd sys-apps/flashrom sys-apps/mosys cros_ish? ( chromeos-base/chromeos-ish )
+RDEPEND=chromeos-base/vboot_reference unibuild? ( chromeos-base/chromeos-config ) app-arch/gzip app-arch/sharutils app-arch/tar sys-apps/util-linux chromeos-base/vpd sys-apps/flashrom sys-apps/mosys cros_ish? ( chromeos-base/chromeos-ish )
 RESTRICT=mirror
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-firmware	7a74949f84df3e9126d114dde9da9292	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-firmware	761bba6ac3bce60f271dc3194699687c	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=de6ecd6d5e24caf9d8a8cf4f989341c6
diff --git a/metadata/md5-cache/chromeos-base/chromeos-fpmcu-unittests-0.0.1-r2095 b/metadata/md5-cache/chromeos-base/chromeos-fpmcu-unittests-0.0.1-r2095
new file mode 100644
index 0000000..db51089
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-fpmcu-unittests-0.0.1-r2095
@@ -0,0 +1,15 @@
+BDEPEND=>=chromeos-base/chromeos-config-host-0.0.2 dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile info install prepare setup test unpack
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot )
+DESCRIPTION=ChromeOS fingerprint MCU unittest binaries
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
+IUSE=ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_ef831ef09b8fdc0da7cceb25def086f853ae97cd_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test cros_host cros_workon_tree_ef831ef09b8fdc0da7cceb25def086f853ae97cd_f3d026c790bd3d7121bb96ed2a4932360d698a73
+KEYWORDS=*
+LICENSE=CrOS-EC
+PROPERTIES=live live
+RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
+RESTRICT=binchecks
+SLOT=0/0.0.1-r2095
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b4f1958ff22e182c5197a12e6bbe8e8d
diff --git a/metadata/md5-cache/chromeos-base/chromeos-fpmcu-unittests-0.0.1-r816 b/metadata/md5-cache/chromeos-base/chromeos-fpmcu-unittests-0.0.1-r816
deleted file mode 100644
index 3da3dff..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-fpmcu-unittests-0.0.1-r816
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=>=chromeos-base/chromeos-config-host-0.0.2 dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot )
-DESCRIPTION=ChromeOS fingerprint MCU unittest binaries
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_6369b461fc719249ee33d60e507422b13cd12e97_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test cros_host cros_workon_tree_6369b461fc719249ee33d60e507422b13cd12e97_f3d026c790bd3d7121bb96ed2a4932360d698a73
-KEYWORDS=*
-LICENSE=CrOS-EC
-PROPERTIES=live live
-RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
-RESTRICT=binchecks
-SLOT=0/0.0.1-r816
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=38e513fcf60e2fcf2723b28c35bb619a
diff --git a/metadata/md5-cache/chromeos-base/chromeos-fpmcu-unittests-9999 b/metadata/md5-cache/chromeos-base/chromeos-fpmcu-unittests-9999
index ed92fea..ab9a0d3 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-fpmcu-unittests-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-fpmcu-unittests-9999
@@ -1,15 +1,15 @@
 BDEPEND=>=chromeos-base/chromeos-config-host-0.0.2 dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot )
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot )
 DESCRIPTION=ChromeOS fingerprint MCU unittest binaries
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test cros_host cros_workon_tree_
+IUSE=ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=CrOS-EC
 PROPERTIES=live live
 RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
 RESTRICT=binchecks
 SLOT=0/9999
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=6ae431bb3209635d2dfb2ad1c59595be
diff --git a/metadata/md5-cache/chromeos-base/chromeos-imageburner-0.0.1-r3100 b/metadata/md5-cache/chromeos-base/chromeos-imageburner-0.0.1-r3100
deleted file mode 100644
index ab3f4bd..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-imageburner-0.0.1-r3100
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/dbus-glib dev-libs/glib sys-apps/rootdev chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Image-burning service for Chromium OS
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/image-burner/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5bb685cc7bac46b747661bbf7fdc73e737421c15_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5bb685cc7bac46b747661bbf7fdc73e737421c15_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/dbus-glib dev-libs/glib sys-apps/rootdev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=131b5157f419b58427c58ae3d76f8bed
diff --git a/metadata/md5-cache/chromeos-base/chromeos-imageburner-0.0.1-r3133 b/metadata/md5-cache/chromeos-base/chromeos-imageburner-0.0.1-r3133
new file mode 100644
index 0000000..df6a81c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-imageburner-0.0.1-r3133
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=sys-apps/rootdev chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Image-burning service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/image-burner/
+IUSE=user_session_isolation cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_78bbddcb5c152ba63cb9408b189179ad60cfd2bc_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_78bbddcb5c152ba63cb9408b189179ad60cfd2bc_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=sys-apps/rootdev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=949071627044a4e9f4c81bc2f9b0d1cc
diff --git a/metadata/md5-cache/chromeos-base/chromeos-imageburner-9999 b/metadata/md5-cache/chromeos-base/chromeos-imageburner-9999
index 115d48d..9f76559 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-imageburner-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-imageburner-9999
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/dbus-glib dev-libs/glib sys-apps/rootdev chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=sys-apps/rootdev chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Image-burning service for Chromium OS
-EAPI=5
+EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/image-burner/
-IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=user_session_isolation cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=dev-libs/dbus-glib dev-libs/glib sys-apps/rootdev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=sys-apps/rootdev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c5e23ea088f9d4b75ae4259441df9c3b
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=6f5b057fae5d1ab142faa02352baf4bf
diff --git a/metadata/md5-cache/chromeos-base/chromeos-init-0.0.25-r4184 b/metadata/md5-cache/chromeos-base/chromeos-init-0.0.25-r4184
deleted file mode 100644
index b6a50f9..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-init-0.0.25-r4184
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/vboot_reference:= sys-apps/rootdev:= test? ( sys-process/psmisc dev-util/shunit2 sys-apps/diffutils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Upstart init scripts for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/init/
-IUSE=arcpp arcvm cros_embedded +debugd +encrypted_stateful +encrypted_reboot_vault frecon -lvm_stateful_partition kernel-3_8 kernel-3_10 kernel-3_14 kernel-3_18 +midi -s3halt +syslog systemd +udev vivid vtconsole cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_0be9b01657e3488badf97e2e2160b2c16db87cef_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_0be9b01657e3488badf97e2e2160b2c16db87cef_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/vboot_reference:= sys-apps/rootdev:= app-arch/tar app-misc/jq chromeos-base/bootstat !chromeos-base/chromeos-disableecho chromeos-base/chromeos-common-script chromeos-base/tty sys-apps/upstart sys-process/lsof virtual/chromeos-bootcomplete !cros_embedded? ( chromeos-base/common-assets chromeos-base/chromeos-storage-info chromeos-base/swap-init sys-fs/e2fsprogs ) frecon? ( sys-apps/frecon ) virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=50809bc1567ee691439ba437a35b2109
diff --git a/metadata/md5-cache/chromeos-base/chromeos-init-0.0.25-r4299 b/metadata/md5-cache/chromeos-base/chromeos-init-0.0.25-r4299
new file mode 100644
index 0000000..6a52fe0
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-init-0.0.25-r4299
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/vboot_reference:= sys-apps/rootdev:= test? ( sys-process/psmisc dev-util/shflags dev-util/shunit2 sys-apps/diffutils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Upstart init scripts for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/init/
+IUSE=arcpp arcvm cros_embedded +debugd +encrypted_stateful +encrypted_reboot_vault frecon lvm_stateful_partition kernel-3_18 +midi -s3halt +syslog systemd +udev vivid vtconsole cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_895c06f0f8e72deaf75137b0c309d0d15da65e21_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_895c06f0f8e72deaf75137b0c309d0d15da65e21_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/vboot_reference:= sys-apps/rootdev:= app-arch/tar app-misc/jq chromeos-base/bootstat !chromeos-base/chromeos-disableecho chromeos-base/chromeos-common-script chromeos-base/tty sys-apps/upstart !systemd? ( sys-apps/systemd-tmpfiles ) sys-process/lsof virtual/chromeos-bootcomplete !cros_embedded? ( chromeos-base/common-assets chromeos-base/chromeos-storage-info chromeos-base/swap-init sys-fs/e2fsprogs ) frecon? ( sys-apps/frecon ) virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=e89c9bb54cadf6eb4c07cc2030d307ee
diff --git a/metadata/md5-cache/chromeos-base/chromeos-init-9999 b/metadata/md5-cache/chromeos-base/chromeos-init-9999
index abf03f8..d9b807b 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-init-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-init-9999
@@ -1,14 +1,14 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/vboot_reference:= sys-apps/rootdev:= test? ( sys-process/psmisc dev-util/shunit2 sys-apps/diffutils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/vboot_reference:= sys-apps/rootdev:= test? ( sys-process/psmisc dev-util/shflags dev-util/shunit2 sys-apps/diffutils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Upstart init scripts for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/init/
-IUSE=arcpp arcvm cros_embedded +debugd +encrypted_stateful +encrypted_reboot_vault frecon -lvm_stateful_partition kernel-3_8 kernel-3_10 kernel-3_14 kernel-3_18 +midi -s3halt +syslog systemd +udev vivid vtconsole cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=arcpp arcvm cros_embedded +debugd +encrypted_stateful +encrypted_reboot_vault frecon lvm_stateful_partition kernel-3_18 +midi -s3halt +syslog systemd +udev vivid vtconsole cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/vboot_reference:= sys-apps/rootdev:= app-arch/tar app-misc/jq chromeos-base/bootstat !chromeos-base/chromeos-disableecho chromeos-base/chromeos-common-script chromeos-base/tty sys-apps/upstart sys-process/lsof virtual/chromeos-bootcomplete !cros_embedded? ( chromeos-base/common-assets chromeos-base/chromeos-storage-info chromeos-base/swap-init sys-fs/e2fsprogs ) frecon? ( sys-apps/frecon ) virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/vboot_reference:= sys-apps/rootdev:= app-arch/tar app-misc/jq chromeos-base/bootstat !chromeos-base/chromeos-disableecho chromeos-base/chromeos-common-script chromeos-base/tty sys-apps/upstart !systemd? ( sys-apps/systemd-tmpfiles ) sys-process/lsof virtual/chromeos-bootcomplete !cros_embedded? ( chromeos-base/common-assets chromeos-base/chromeos-storage-info chromeos-base/swap-init sys-fs/e2fsprogs ) frecon? ( sys-apps/frecon ) virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=7e38156df866248909101081d5b8faf7
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=6417e6e7fe728da10a45f4195cf09ff8
diff --git a/metadata/md5-cache/chromeos-base/chromeos-initramfs-0.0.1-r403 b/metadata/md5-cache/chromeos-base/chromeos-initramfs-0.0.1-r403
deleted file mode 100644
index 20a0bb6..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-initramfs-0.0.1-r403
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install prepare setup unpack
-DEPEND=factory_netboot_ramfs? ( app-arch/lbzip2 app-arch/pigz app-arch/sharutils app-misc/jq app-shells/bash chromeos-base/chromeos-base chromeos-base/chromeos-installer chromeos-base/chromeos-installshim chromeos-base/chromeos-storage-info chromeos-base/ec-utils chromeos-base/factory_installer chromeos-base/vboot_reference chromeos-base/vpd dev-libs/openssl:0= dev-util/shflags dev-util/xxd net-misc/curl net-misc/htpdate net-misc/uftp net-misc/wget sys-apps/coreutils sys-apps/flashrom sys-apps/iproute2 sys-apps/mosys sys-apps/util-linux sys-block/parted sys-fs/dosfstools sys-fs/e2fsprogs sys-libs/ncurses virtual/udev ) factory_shim_ramfs? ( chromeos-base/factory_installer chromeos-base/vboot_reference ) recovery_ramfs? ( chromeos-base/chromeos-installer chromeos-base/common-assets chromeos-base/vboot_reference chromeos-base/vpd sys-apps/flashrom sys-apps/pv virtual/assets virtual/chromeos-regions ) hypervisor_ramfs? ( chromeos-base/crosvm chromeos-base/sirenia virtual/linux-sources ) minios_ramfs? ( chromeos-base/minios dev-util/strace net-misc/curl net-misc/dhcp net-misc/dhcpcd net-wireless/wpa_supplicant-2_9 chromeos-base/minijail chromeos-base/chromeos-installer chromeos-base/factory_installer chromeos-base/common-assets chromeos-base/vboot_reference chromeos-base/vpd sys-apps/flashrom sys-apps/pv virtual/assets virtual/chromeos-regions ) sys-apps/busybox[-make-symlinks] sys-fs/lvm2 virtual/chromeos-bsp-initramfs chromeos-base/chromeos-init sys-apps/frecon-lite power_management? ( chromeos-base/power_manager ) unibuild? ( chromeos-base/chromeos-config ) chromeos-base/chromeos-config-tools
-DESCRIPTION=Create Chrome OS initramfs
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/initramfs/
-IUSE=+cros_ec_utils detachable device_tree +interactive_recovery legacy_firmware_ui -mtd +power_management physical_presence_power physical_presence_recovery unibuild +oobe_config factory_netboot_ramfs factory_shim_ramfs hypervisor_ramfs recovery_ramfs minios_ramfs cros_host cros_workon_tree_2246e62d1522bdc5bcd164b8fdc867e3271537f7 board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-REQUIRED_USE=|| ( factory_netboot_ramfs factory_shim_ramfs hypervisor_ramfs recovery_ramfs minios_ramfs )
-SLOT=0
-_eclasses_=cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e7b06f84b689d5782846b5576ddaebd9
diff --git a/metadata/md5-cache/chromeos-base/chromeos-initramfs-0.0.1-r429 b/metadata/md5-cache/chromeos-base/chromeos-initramfs-0.0.1-r429
new file mode 100644
index 0000000..307ede9
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-initramfs-0.0.1-r429
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile info install prepare setup unpack
+DEPEND=factory_netboot_ramfs? ( app-arch/lbzip2 app-arch/pigz app-arch/sharutils app-misc/jq app-shells/bash chromeos-base/chromeos-base chromeos-base/chromeos-installer chromeos-base/chromeos-installshim chromeos-base/chromeos-storage-info chromeos-base/ec-utils chromeos-base/factory_installer chromeos-base/vboot_reference chromeos-base/vpd dev-libs/openssl:0= dev-util/shflags dev-util/xxd net-misc/curl net-misc/htpdate net-misc/uftp net-misc/wget sys-apps/coreutils sys-apps/flashrom sys-apps/iproute2 sys-apps/mosys sys-apps/util-linux sys-fs/dosfstools sys-fs/e2fsprogs sys-libs/ncurses virtual/udev ) factory_shim_ramfs? ( chromeos-base/factory_installer chromeos-base/vboot_reference ) recovery_ramfs? ( chromeos-base/chromeos-installer chromeos-base/common-assets chromeos-base/vboot_reference chromeos-base/vpd sys-apps/flashrom sys-apps/pv virtual/assets virtual/chromeos-regions ) hypervisor_ramfs? ( chromeos-base/crosvm chromeos-base/sirenia virtual/linux-sources ) minios_ramfs? ( chromeos-base/minios dev-util/strace net-misc/curl net-misc/dhcp net-misc/dhcpcd net-wireless/wpa_supplicant-2_9 chromeos-base/minijail chromeos-base/chromeos-installer chromeos-base/factory_installer chromeos-base/common-assets chromeos-base/vboot_reference chromeos-base/vpd sys-apps/flashrom sys-apps/pv virtual/assets virtual/chromeos-regions ) sys-apps/busybox[-make-symlinks] sys-fs/lvm2 virtual/chromeos-bsp-initramfs chromeos-base/chromeos-init sys-apps/frecon-lite power_management? ( chromeos-base/power_manager ) unibuild? ( chromeos-base/chromeos-config ) chromeos-base/chromeos-config-tools
+DESCRIPTION=Create Chrome OS initramfs
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/initramfs/
+IUSE=+cros_ec_utils detachable device_tree +interactive_recovery legacy_firmware_ui -mtd +power_management physical_presence_power physical_presence_recovery unibuild +oobe_config factory_netboot_ramfs factory_shim_ramfs hypervisor_ramfs recovery_ramfs minios_ramfs cros_host cros_workon_tree_d2f3f9e688579f2bd08ba34bb2fbe237ba83bd1c board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+REQUIRED_USE=|| ( factory_netboot_ramfs factory_shim_ramfs hypervisor_ramfs recovery_ramfs minios_ramfs )
+SLOT=0
+_eclasses_=cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=0bdce7569f58a480b3bf3faa70d5193f
diff --git a/metadata/md5-cache/chromeos-base/chromeos-initramfs-9999 b/metadata/md5-cache/chromeos-base/chromeos-initramfs-9999
index e4febaa..852d5c1 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-initramfs-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-initramfs-9999
@@ -1,13 +1,13 @@
 DEFINED_PHASES=compile info install prepare setup unpack
-DEPEND=factory_netboot_ramfs? ( app-arch/lbzip2 app-arch/pigz app-arch/sharutils app-misc/jq app-shells/bash chromeos-base/chromeos-base chromeos-base/chromeos-installer chromeos-base/chromeos-installshim chromeos-base/chromeos-storage-info chromeos-base/ec-utils chromeos-base/factory_installer chromeos-base/vboot_reference chromeos-base/vpd dev-libs/openssl:0= dev-util/shflags dev-util/xxd net-misc/curl net-misc/htpdate net-misc/uftp net-misc/wget sys-apps/coreutils sys-apps/flashrom sys-apps/iproute2 sys-apps/mosys sys-apps/util-linux sys-block/parted sys-fs/dosfstools sys-fs/e2fsprogs sys-libs/ncurses virtual/udev ) factory_shim_ramfs? ( chromeos-base/factory_installer chromeos-base/vboot_reference ) recovery_ramfs? ( chromeos-base/chromeos-installer chromeos-base/common-assets chromeos-base/vboot_reference chromeos-base/vpd sys-apps/flashrom sys-apps/pv virtual/assets virtual/chromeos-regions ) hypervisor_ramfs? ( chromeos-base/crosvm chromeos-base/sirenia virtual/linux-sources ) minios_ramfs? ( chromeos-base/minios dev-util/strace net-misc/curl net-misc/dhcp net-misc/dhcpcd net-wireless/wpa_supplicant-2_9 chromeos-base/minijail chromeos-base/chromeos-installer chromeos-base/factory_installer chromeos-base/common-assets chromeos-base/vboot_reference chromeos-base/vpd sys-apps/flashrom sys-apps/pv virtual/assets virtual/chromeos-regions ) sys-apps/busybox[-make-symlinks] sys-fs/lvm2 virtual/chromeos-bsp-initramfs chromeos-base/chromeos-init sys-apps/frecon-lite power_management? ( chromeos-base/power_manager ) unibuild? ( chromeos-base/chromeos-config ) chromeos-base/chromeos-config-tools
+DEPEND=factory_netboot_ramfs? ( app-arch/lbzip2 app-arch/pigz app-arch/sharutils app-misc/jq app-shells/bash chromeos-base/chromeos-base chromeos-base/chromeos-installer chromeos-base/chromeos-installshim chromeos-base/chromeos-storage-info chromeos-base/ec-utils chromeos-base/factory_installer chromeos-base/vboot_reference chromeos-base/vpd dev-libs/openssl:0= dev-util/shflags dev-util/xxd net-misc/curl net-misc/htpdate net-misc/uftp net-misc/wget sys-apps/coreutils sys-apps/flashrom sys-apps/iproute2 sys-apps/mosys sys-apps/util-linux sys-fs/dosfstools sys-fs/e2fsprogs sys-libs/ncurses virtual/udev ) factory_shim_ramfs? ( chromeos-base/factory_installer chromeos-base/vboot_reference ) recovery_ramfs? ( chromeos-base/chromeos-installer chromeos-base/common-assets chromeos-base/vboot_reference chromeos-base/vpd sys-apps/flashrom sys-apps/pv virtual/assets virtual/chromeos-regions ) hypervisor_ramfs? ( chromeos-base/crosvm chromeos-base/sirenia virtual/linux-sources ) minios_ramfs? ( chromeos-base/minios dev-util/strace net-misc/curl net-misc/dhcp net-misc/dhcpcd net-wireless/wpa_supplicant-2_9 chromeos-base/minijail chromeos-base/chromeos-installer chromeos-base/factory_installer chromeos-base/common-assets chromeos-base/vboot_reference chromeos-base/vpd sys-apps/flashrom sys-apps/pv virtual/assets virtual/chromeos-regions ) sys-apps/busybox[-make-symlinks] sys-fs/lvm2 virtual/chromeos-bsp-initramfs chromeos-base/chromeos-init sys-apps/frecon-lite power_management? ( chromeos-base/power_manager ) unibuild? ( chromeos-base/chromeos-config ) chromeos-base/chromeos-config-tools
 DESCRIPTION=Create Chrome OS initramfs
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/initramfs/
-IUSE=+cros_ec_utils detachable device_tree +interactive_recovery legacy_firmware_ui -mtd +power_management physical_presence_power physical_presence_recovery unibuild +oobe_config factory_netboot_ramfs factory_shim_ramfs hypervisor_ramfs recovery_ramfs minios_ramfs cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild
+IUSE=+cros_ec_utils detachable device_tree +interactive_recovery legacy_firmware_ui -mtd +power_management physical_presence_power physical_presence_recovery unibuild +oobe_config factory_netboot_ramfs factory_shim_ramfs hypervisor_ramfs recovery_ramfs minios_ramfs cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 REQUIRED_USE=|| ( factory_netboot_ramfs factory_shim_ramfs hypervisor_ramfs recovery_ramfs minios_ramfs )
 SLOT=0
-_eclasses_=cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1827c4510cf005ec2adac3612ce681fa
+_eclasses_=cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=766cce8f7ec149bb9bb1865b8adb7143
diff --git a/metadata/md5-cache/chromeos-base/chromeos-installer-0.0.3-r3448 b/metadata/md5-cache/chromeos-base/chromeos-installer-0.0.3-r3448
deleted file mode 100644
index 7d042de..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-installer-0.0.3-r3448
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:= chromeos-base/vboot_reference x11-libs/libxkbcommon:= x11-misc/xkeyboard-config:= chromeos-base/verity dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= virtual/pkgconfig
-DESCRIPTION=Chrome OS Installer
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/installer/
-IUSE=cros_embedded enable_slow_boot_notify -mtd pam systemd +oobe_config lvm_stateful_partition cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_04eb33e4a1a28c4e52176cad04e7d44c0fc80b33_2b6d4230c92e83e39209823855064483eed04754_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_04eb33e4a1a28c4e52176cad04e7d44c0fc80b33_2b6d4230c92e83e39209823855064483eed04754_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libbrillo:= chromeos-base/vboot_reference x11-libs/libxkbcommon:= x11-misc/xkeyboard-config:= pam? ( app-admin/sudo ) chromeos-base/chromeos-common-script !cros_embedded? ( chromeos-base/chromeos-storage-info ) oobe_config? ( chromeos-base/oobe_config ) dev-libs/openssl:0= dev-util/shflags sys-apps/rootdev sys-apps/util-linux sys-apps/which sys-fs/e2fsprogs >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=52b7005052fc05bb7dcc0251ac4242e0
diff --git a/metadata/md5-cache/chromeos-base/chromeos-installer-0.0.3-r3492 b/metadata/md5-cache/chromeos-base/chromeos-installer-0.0.3-r3492
new file mode 100644
index 0000000..ba5aba5
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-installer-0.0.3-r3492
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libbrillo:= chromeos-base/vboot_reference chromeos-base/verity dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= virtual/pkgconfig
+DESCRIPTION=Chrome OS Installer
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/installer/
+IUSE=cros_embedded enable_slow_boot_notify -mtd pam systemd +oobe_config lvm_stateful_partition cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_186518012127f8b531f1bb71d661edbbe08ac304_33de53739dbe0fd2911d58694b622539ef0a2416_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_186518012127f8b531f1bb71d661edbbe08ac304_33de53739dbe0fd2911d58694b622539ef0a2416_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libbrillo:= chromeos-base/vboot_reference chromeos-base/verity pam? ( app-admin/sudo ) chromeos-base/chromeos-common-script !cros_embedded? ( chromeos-base/chromeos-storage-info ) oobe_config? ( chromeos-base/oobe_config ) dev-libs/openssl:0= dev-util/shflags sys-apps/rootdev sys-apps/util-linux sys-apps/which sys-fs/e2fsprogs >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=2a1145ca7788bf4166a654eb3017219d
diff --git a/metadata/md5-cache/chromeos-base/chromeos-installer-9999 b/metadata/md5-cache/chromeos-base/chromeos-installer-9999
index 3b7c888..a55009f 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-installer-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-installer-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:= chromeos-base/vboot_reference x11-libs/libxkbcommon:= x11-misc/xkeyboard-config:= chromeos-base/verity dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= virtual/pkgconfig
+DEPEND=chromeos-base/libbrillo:= chromeos-base/vboot_reference chromeos-base/verity dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= virtual/pkgconfig
 DESCRIPTION=Chrome OS Installer
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/installer/
@@ -7,7 +7,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/libbrillo:= chromeos-base/vboot_reference x11-libs/libxkbcommon:= x11-misc/xkeyboard-config:= pam? ( app-admin/sudo ) chromeos-base/chromeos-common-script !cros_embedded? ( chromeos-base/chromeos-storage-info ) oobe_config? ( chromeos-base/oobe_config ) dev-libs/openssl:0= dev-util/shflags sys-apps/rootdev sys-apps/util-linux sys-apps/which sys-fs/e2fsprogs >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=chromeos-base/libbrillo:= chromeos-base/vboot_reference chromeos-base/verity pam? ( app-admin/sudo ) chromeos-base/chromeos-common-script !cros_embedded? ( chromeos-base/chromeos-storage-info ) oobe_config? ( chromeos-base/oobe_config ) dev-libs/openssl:0= dev-util/shflags sys-apps/rootdev sys-apps/util-linux sys-apps/which sys-fs/e2fsprogs >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c44c016f1f351d06c8e9657e57130d9d
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=5c1a96829ecc12222a6c9cf402f215d1
diff --git a/metadata/md5-cache/chromeos-base/chromeos-lacros-92.0.4511.2-r5 b/metadata/md5-cache/chromeos-base/chromeos-lacros-92.0.4511.2-r5
new file mode 100644
index 0000000..7a2bed9
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-lacros-92.0.4511.2-r5
@@ -0,0 +1,12 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+EAPI=7
+IUSE=cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-chrome
+SLOT=0
+SRC_URI=gs://chrome-unsigned/desktop-5c0tCh/chromeos-lacros-squash-92.0.4511.2 gs://chrome-unsigned/desktop-5c0tCh/chromeos-lacros-metadata-92.0.4511.2
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=819140708da90f8c2a82332bf960ed53
diff --git a/metadata/md5-cache/chromeos-base/chromeos-lacros-9999 b/metadata/md5-cache/chromeos-base/chromeos-lacros-9999
new file mode 100644
index 0000000..3d43dfd
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-lacros-9999
@@ -0,0 +1,11 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+EAPI=7
+IUSE=cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-chrome
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2dfd09e93eb681c94080828ae2120f87
diff --git a/metadata/md5-cache/chromeos-base/chromeos-login-0.0.2-r4572 b/metadata/md5-cache/chromeos-base/chromeos-login-0.0.2-r4572
deleted file mode 100644
index a441bb3..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-login-0.0.2-r4572
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/bootstat:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/minijail:= chromeos-base/cryptohome:= chromeos-base/libchromeos-ui:= chromeos-base/libcontainer:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/nss:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-apps/util-linux:= >=chromeos-base/protofiles-0.0.39:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Login manager for Chromium OS.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-login/
-IUSE=arc_adb_sideloading cheets fuzzer generated_cros_config systemd unibuild user_session_isolation cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_ed310628c7b59ac5528ea8347990fc4f5e95c915_5c6a69ae1a339332642149aa39da47d14efbe3fd_fd58c41eff96201518af10b01b66391e72895365_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_ed310628c7b59ac5528ea8347990fc4f5e95c915_5c6a69ae1a339332642149aa39da47d14efbe3fd_fd58c41eff96201518af10b01b66391e72895365_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/bootstat:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/minijail:= chromeos-base/cryptohome:= chromeos-base/libchromeos-ui:= chromeos-base/libcontainer:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/nss:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-apps/util-linux:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.2-r4572
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=a82c8eb37bdaa465e31a1dac28812f9b
diff --git a/metadata/md5-cache/chromeos-base/chromeos-login-0.0.2-r4693 b/metadata/md5-cache/chromeos-base/chromeos-login-0.0.2-r4693
new file mode 100644
index 0000000..6586599
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-login-0.0.2-r4693
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/bootstat:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/minijail:= chromeos-base/cryptohome:= chromeos-base/libchromeos-ui:= chromeos-base/libcontainer:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/nss:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-apps/util-linux:= >=chromeos-base/protofiles-0.0.43:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Login manager for Chromium OS.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-login/
+IUSE=arc_adb_sideloading cheets fuzzer generated_cros_config systemd unibuild user_session_isolation cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_a2ab6048637d439be995dd4cdc3ef91d0291fb42_eae0546f4ee5132d4544af4770755eb05f60cba6_705938420b278cc4b739150868d71128b855d23e_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_a2ab6048637d439be995dd4cdc3ef91d0291fb42_eae0546f4ee5132d4544af4770755eb05f60cba6_705938420b278cc4b739150868d71128b855d23e_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/bootstat:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/minijail:= chromeos-base/cryptohome:= chromeos-base/libchromeos-ui:= chromeos-base/libcontainer:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/nss:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-apps/util-linux:= virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.2-r4693
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=03f6a1d3981db356e926a76912a8ecd4
diff --git a/metadata/md5-cache/chromeos-base/chromeos-login-9999 b/metadata/md5-cache/chromeos-base/chromeos-login-9999
index 9404a85..5386c22 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-login-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-login-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/bootstat:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/minijail:= chromeos-base/cryptohome:= chromeos-base/libchromeos-ui:= chromeos-base/libcontainer:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/nss:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-apps/util-linux:= >=chromeos-base/protofiles-0.0.39:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/bootstat:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/minijail:= chromeos-base/cryptohome:= chromeos-base/libchromeos-ui:= chromeos-base/libcontainer:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/nss:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-apps/util-linux:= >=chromeos-base/protofiles-0.0.43:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Login manager for Chromium OS.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/chromeos-login/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/bootstat:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/minijail:= chromeos-base/cryptohome:= chromeos-base/libchromeos-ui:= chromeos-base/libcontainer:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/nss:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-apps/util-linux:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=chromeos-base/bootstat:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/minijail:= chromeos-base/cryptohome:= chromeos-base/libchromeos-ui:= chromeos-base/libcontainer:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/nss:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-apps/util-linux:= virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=14dd6588b81254f3abf2066c40a42911
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=be251ae9f6ae53087fff5202e99316c0
diff --git a/metadata/md5-cache/chromeos-base/chromeos-nvt-tcon-updater-0.0.1-r3 b/metadata/md5-cache/chromeos-base/chromeos-nvt-tcon-updater-0.0.1-r3
deleted file mode 100644
index c5b3941..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-nvt-tcon-updater-0.0.1-r3
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install preinst setup unpack
-DEPEND=sys-apps/baselayout
-DESCRIPTION=Shell library for integrating the Novatek TCON Firmware updater
-EAPI=7
-IUSE=cros_host cros_workon_tree_6834738aeee587979fa49506d78791429a21b272
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/chromeos-init chromeos-base/common-assets chromeos-base/minijail sys-apps/novatek-tcon-fw-update-tool sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=95bd235e61a54c9592040e61c8ae379e
diff --git a/metadata/md5-cache/chromeos-base/chromeos-nvt-tcon-updater-0.0.1-r5 b/metadata/md5-cache/chromeos-base/chromeos-nvt-tcon-updater-0.0.1-r5
new file mode 100644
index 0000000..bd4647a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-nvt-tcon-updater-0.0.1-r5
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install preinst setup unpack
+DEPEND=sys-apps/baselayout
+DESCRIPTION=Shell library for integrating the Novatek TCON Firmware updater
+EAPI=7
+IUSE=cros_host cros_workon_tree_46004e0e5781880050cd53e1f573fda1e540cec5
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-init chromeos-base/common-assets chromeos-base/minijail sys-apps/novatek-tcon-fw-update-tool sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=9bc40a31b6e58b7f1b46d94f97f6a62c
diff --git a/metadata/md5-cache/chromeos-base/chromeos-nvt-tcon-updater-9999 b/metadata/md5-cache/chromeos-base/chromeos-nvt-tcon-updater-9999
index 0066c04..a42c2a1 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-nvt-tcon-updater-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-nvt-tcon-updater-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/chromeos-init chromeos-base/common-assets chromeos-base/minijail sys-apps/novatek-tcon-fw-update-tool sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=4d23048ea58e8f447b9de1e64d2a5afa
diff --git a/metadata/md5-cache/chromeos-base/chromeos-storage-info-0.0.1-r243 b/metadata/md5-cache/chromeos-base/chromeos-storage-info-0.0.1-r243
deleted file mode 100644
index e95d63f..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-storage-info-0.0.1-r243
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS storage info tools
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/storage_info/
-IUSE=+mmc nvme +sata test cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d5d5e575da16bb48f735ef93feedcfae4b1586e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d5d5e575da16bb48f735ef93feedcfae4b1586e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/chromeos-common-script sata? ( sys-apps/hdparm sys-apps/smartmontools ) nvme? ( sys-apps/smartmontools ) mmc? ( sys-apps/mmc-utils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e8133a187be261cf446db25e9a27602f
diff --git a/metadata/md5-cache/chromeos-base/chromeos-storage-info-0.0.1-r268 b/metadata/md5-cache/chromeos-base/chromeos-storage-info-0.0.1-r268
new file mode 100644
index 0000000..d729a6e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-storage-info-0.0.1-r268
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS storage info tools
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/storage_info/
+IUSE=+mmc nvme +sata test cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8d5d5e575da16bb48f735ef93feedcfae4b1586e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8d5d5e575da16bb48f735ef93feedcfae4b1586e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/chromeos-common-script sata? ( sys-apps/hdparm sys-apps/smartmontools ) nvme? ( sys-apps/smartmontools ) mmc? ( sys-apps/mmc-utils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1a9b111601638b09383ec751cd0f60dc
diff --git a/metadata/md5-cache/chromeos-base/chromeos-storage-info-9999 b/metadata/md5-cache/chromeos-base/chromeos-storage-info-9999
index 8c5f6ed..0149dbd 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-storage-info-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-storage-info-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS storage info tools
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/storage_info/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/chromeos-common-script sata? ( sys-apps/hdparm sys-apps/smartmontools ) nvme? ( sys-apps/smartmontools ) mmc? ( sys-apps/mmc-utils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=125d3625ea89468f58d1aa4368fbc08c
diff --git a/metadata/md5-cache/chromeos-base/chromeos-test-init-0.0.1-r3160 b/metadata/md5-cache/chromeos-base/chromeos-test-init-0.0.1-r3160
deleted file mode 100644
index 2da4660..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-test-init-0.0.1-r3160
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Additional upstart jobs that will be installed on test images
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/init/
-IUSE=+encrypted_stateful tpm2 cros_host cros_workon_tree_fb9ead379c6de47f8f051c3460a4f382026edcd1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<chromeos-base/hwsec-test-utils-0.0.1-r83
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=879116093365da77d0e06cc0d8317942
diff --git a/metadata/md5-cache/chromeos-base/chromeos-test-init-0.0.1-r3163 b/metadata/md5-cache/chromeos-base/chromeos-test-init-0.0.1-r3163
new file mode 100644
index 0000000..a93d8e3
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-test-init-0.0.1-r3163
@@ -0,0 +1,12 @@
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Additional upstart jobs that will be installed on test images
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/init/
+IUSE=+encrypted_stateful tpm2 cros_host cros_workon_tree_b82396efede47db2d3ecbb1e88bcb0b38713b6dd
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<chromeos-base/hwsec-test-utils-0.0.1-r83
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=166ca44c13bac67b2488bde693957e7c
diff --git a/metadata/md5-cache/chromeos-base/chromeos-test-init-9999 b/metadata/md5-cache/chromeos-base/chromeos-test-init-9999
index 59de800..2431205 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-test-init-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-test-init-9999
@@ -8,5 +8,5 @@
 PROPERTIES=live
 RDEPEND=!<chromeos-base/hwsec-test-utils-0.0.1-r83
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=85bdc92712b9001b9afa14966a25e655
diff --git a/metadata/md5-cache/chromeos-base/chromeos-test-root-0.0.1 b/metadata/md5-cache/chromeos-base/chromeos-test-root-0.0.1
index 38c509b..cf7e4ea 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-test-root-0.0.1
+++ b/metadata/md5-cache/chromeos-base/chromeos-test-root-0.0.1
@@ -5,6 +5,6 @@
 IUSE=+bootchart
 KEYWORDS=*
 LICENSE=BSD-Google
-RDEPEND=bootchart? ( app-benchmarks/bootchart ) chromeos-base/chromeos-test-init virtual/chromeos-test-testauthkeys virtual/chromeos-bsp-test-root
+RDEPEND=bootchart? ( app-benchmarks/bootchart ) chromeos-base/chromeos-test-init chromeos-base/update-utils virtual/chromeos-test-testauthkeys virtual/chromeos-bsp-test-root
 SLOT=0
-_md5_=47f83b193a5e2223f88a92933ff3b43d
+_md5_=20685215f0f6bcd854e3ff0ef136251f
diff --git a/metadata/md5-cache/chromeos-base/chromeos-test-root-0.0.1-r10 b/metadata/md5-cache/chromeos-base/chromeos-test-root-0.0.1-r10
deleted file mode 100644
index 38c509b..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-test-root-0.0.1-r10
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Install packages that must live in the rootfs in test images
-EAPI=6
-HOMEPAGE=http://www.chromium.org/
-IUSE=+bootchart
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=bootchart? ( app-benchmarks/bootchart ) chromeos-base/chromeos-test-init virtual/chromeos-test-testauthkeys virtual/chromeos-bsp-test-root
-SLOT=0
-_md5_=47f83b193a5e2223f88a92933ff3b43d
diff --git a/metadata/md5-cache/chromeos-base/chromeos-test-root-0.0.1-r11 b/metadata/md5-cache/chromeos-base/chromeos-test-root-0.0.1-r11
new file mode 100644
index 0000000..cf7e4ea
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-test-root-0.0.1-r11
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DESCRIPTION=Install packages that must live in the rootfs in test images
+EAPI=6
+HOMEPAGE=http://www.chromium.org/
+IUSE=+bootchart
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=bootchart? ( app-benchmarks/bootchart ) chromeos-base/chromeos-test-init chromeos-base/update-utils virtual/chromeos-test-testauthkeys virtual/chromeos-bsp-test-root
+SLOT=0
+_md5_=20685215f0f6bcd854e3ff0ef136251f
diff --git a/metadata/md5-cache/chromeos-base/chromeos-ti50-0.0.1 b/metadata/md5-cache/chromeos-base/chromeos-ti50-0.0.1
new file mode 100644
index 0000000..ed5e493
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-ti50-0.0.1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Ebuild to support the Chrome OS TI50 device.
+EAPI=7
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=chromeos-base/chromeos-cr50-dev chromeos-base/chromeos-cr50-scripts
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles//ti50.ro.0.0.11.rw.0.0.10.tar.xz
+_md5_=ef15feaebcb90cebd9e0262109ec3261
diff --git a/metadata/md5-cache/chromeos-base/chromeos-ti50-0.0.1-r4 b/metadata/md5-cache/chromeos-base/chromeos-ti50-0.0.1-r4
new file mode 100644
index 0000000..ed5e493
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-ti50-0.0.1-r4
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Ebuild to support the Chrome OS TI50 device.
+EAPI=7
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=chromeos-base/chromeos-cr50-dev chromeos-base/chromeos-cr50-scripts
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles//ti50.ro.0.0.11.rw.0.0.10.tar.xz
+_md5_=ef15feaebcb90cebd9e0262109ec3261
diff --git a/metadata/md5-cache/chromeos-base/chromeos-touch-common-0.0.1-r12 b/metadata/md5-cache/chromeos-base/chromeos-touch-common-0.0.1-r12
new file mode 100644
index 0000000..ecd2938
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-touch-common-0.0.1-r12
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Common shell libraries for touch firmware updater wrapper scripts
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os
+IUSE=cros_host cros_workon_tree_145f674e7339af04f66e124d84cf65762c0a7fc4
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/mosys !<chromeos-base/touch_updater-0.0.1-r167
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3ec3258e1e042f74cc2d6c111c12edff
diff --git a/metadata/md5-cache/chromeos-base/chromeos-touch-common-0.0.1-r8 b/metadata/md5-cache/chromeos-base/chromeos-touch-common-0.0.1-r8
deleted file mode 100644
index 71ab296..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-touch-common-0.0.1-r8
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Common shell libraries for touch firmware updater wrapper scripts
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os
-IUSE=cros_host cros_workon_tree_03eaeab5fc69cbf8992e481f207bd10eb1eb9764
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-apps/mosys !<chromeos-base/touch_updater-0.0.1-r167
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=1a0940a835869a3bea05f92ea65fc413
diff --git a/metadata/md5-cache/chromeos-base/chromeos-touch-common-9999 b/metadata/md5-cache/chromeos-base/chromeos-touch-common-9999
index cfb603f..9d09567 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-touch-common-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-touch-common-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=sys-apps/mosys !<chromeos-base/touch_updater-0.0.1-r167
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=4486e42cf03b8f39e988d8813bf4c852
diff --git a/metadata/md5-cache/chromeos-base/chromeos-touch-etphidiap-0.0.1-r13 b/metadata/md5-cache/chromeos-base/chromeos-touch-etphidiap-0.0.1-r13
new file mode 100644
index 0000000..76a6c73
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-touch-etphidiap-0.0.1-r13
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install preinst setup unpack
+DEPEND=sys-apps/baselayout
+DESCRIPTION=Wrapper for etphidiap touch firmware updater.
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os
+IUSE=cros_host cros_workon_tree_d27b69b780b7531fbca51927de61c58296c2d86d
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-touch-common sys-apps/etphidiap !<chromeos-base/touch_updater-0.0.1-r167 sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=f36fb0cb6c2dc58de1f1623ad9bf75f1
diff --git a/metadata/md5-cache/chromeos-base/chromeos-touch-etphidiap-0.0.1-r7 b/metadata/md5-cache/chromeos-base/chromeos-touch-etphidiap-0.0.1-r7
deleted file mode 100644
index b6f66ec..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-touch-etphidiap-0.0.1-r7
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install preinst setup unpack
-DEPEND=sys-apps/baselayout
-DESCRIPTION=Wrapper for etphidiap touch firmware updater.
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os
-IUSE=cros_host cros_workon_tree_642051d4a136d75b9511905d33fd47e13dbf39e2
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/chromeos-touch-common sys-apps/etphidiap !<chromeos-base/touch_updater-0.0.1-r167 sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=809b4511f2c41e708ff85465120dfa8a
diff --git a/metadata/md5-cache/chromeos-base/chromeos-touch-etphidiap-9999 b/metadata/md5-cache/chromeos-base/chromeos-touch-etphidiap-9999
index 014c971..a328d70 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-touch-etphidiap-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-touch-etphidiap-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/chromeos-touch-common sys-apps/etphidiap !<chromeos-base/touch_updater-0.0.1-r167 sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=497aba3022c1ae69c021f51f809ba272
diff --git a/metadata/md5-cache/chromeos-base/chromeos-touch-stupdate-0.0.1-r10 b/metadata/md5-cache/chromeos-base/chromeos-touch-stupdate-0.0.1-r10
new file mode 100644
index 0000000..62bd6a1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-touch-stupdate-0.0.1-r10
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install preinst setup unpack
+DEPEND=sys-apps/baselayout
+DESCRIPTION=Wrapper for ST touch firmware updater.
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os
+IUSE=cros_host cros_workon_tree_f3cfb0e19c23daa6dedda7e9b060a0979560343c
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-touch-common sys-apps/st-touch-fw-updater !<chromeos-base/touch_updater-0.0.1-r167 sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=c4543be2c007476ca3949fabd19461b5
diff --git a/metadata/md5-cache/chromeos-base/chromeos-touch-stupdate-0.0.1-r6 b/metadata/md5-cache/chromeos-base/chromeos-touch-stupdate-0.0.1-r6
deleted file mode 100644
index 06a287d..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-touch-stupdate-0.0.1-r6
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install preinst setup unpack
-DEPEND=sys-apps/baselayout
-DESCRIPTION=Wrapper for ST touch firmware updater.
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os
-IUSE=cros_host cros_workon_tree_5185e2274b83c9f287ab11e0dc5fa489aec2d615
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/chromeos-touch-common sys-apps/st-touch-fw-updater !<chromeos-base/touch_updater-0.0.1-r167 sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=51a51e6107e8e85c5a53aa9b1f5a4309
diff --git a/metadata/md5-cache/chromeos-base/chromeos-touch-stupdate-9999 b/metadata/md5-cache/chromeos-base/chromeos-touch-stupdate-9999
index 43c1682..f01527e2 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-touch-stupdate-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-touch-stupdate-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/chromeos-touch-common sys-apps/st-touch-fw-updater !<chromeos-base/touch_updater-0.0.1-r167 sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=e55b82602fc10e628bb936b009197a72
diff --git a/metadata/md5-cache/chromeos-base/chromeos-trim-0.0.1-r1628 b/metadata/md5-cache/chromeos-base/chromeos-trim-0.0.1-r1628
deleted file mode 100644
index 525ab78..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-trim-0.0.1-r1628
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Stateful partition periodic trimmer
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/trim/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_1e69ede3d074afd135fa6f2136ea5d99c425702b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_1e69ede3d074afd135fa6f2136ea5d99c425702b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/chromeos-common-script chromeos-base/chromeos-init sys-apps/util-linux >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e3477c9faba356d8bff10043710ec470
diff --git a/metadata/md5-cache/chromeos-base/chromeos-trim-0.0.1-r1653 b/metadata/md5-cache/chromeos-base/chromeos-trim-0.0.1-r1653
new file mode 100644
index 0000000..b39cb0f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-trim-0.0.1-r1653
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Stateful partition periodic trimmer
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/trim/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_1e69ede3d074afd135fa6f2136ea5d99c425702b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_1e69ede3d074afd135fa6f2136ea5d99c425702b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/chromeos-common-script chromeos-base/chromeos-init sys-apps/util-linux >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4a93e1c6c590fa6c0b8c90962bbd101c
diff --git a/metadata/md5-cache/chromeos-base/chromeos-trim-9999 b/metadata/md5-cache/chromeos-base/chromeos-trim-9999
index 157bb42..64fd438 100644
--- a/metadata/md5-cache/chromeos-base/chromeos-trim-9999
+++ b/metadata/md5-cache/chromeos-base/chromeos-trim-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Stateful partition periodic trimmer
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/trim/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/chromeos-common-script chromeos-base/chromeos-init sys-apps/util-linux >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=971be24137bdb2c4064a54770eaa8545
diff --git a/metadata/md5-cache/chromeos-base/chromeos-zephyr-0.0.1-r711 b/metadata/md5-cache/chromeos-base/chromeos-zephyr-0.0.1-r711
new file mode 100644
index 0000000..99246907
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-zephyr-0.0.1-r711
@@ -0,0 +1,14 @@
+BDEPEND=chromeos-base/zephyr-build-tools dev-python/docopt dev-python/pykwalify dev-util/ninja dev-vcs/git
+DEFINED_PHASES=compile configure info install setup unpack
+DEPEND=chromeos-base/chromeos-config
+DESCRIPTION=Zephyr based Embedded Controller firmware
+EAPI=7
+IUSE=unibuild cros_host cros_workon_tree_060f5aa8b2726d17e2d12f764587a6a3ab7eeb81_781df7da13c4275a2328c09e75fd937991d80e29_049362d45a6362cbdede3ebd10c38ed8d446410a_ef831ef09b8fdc0da7cceb25def086f853ae97cd
+KEYWORDS=*
+LICENSE=Apache-2.0 BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-config
+REQUIRED_USE=unibuild
+SLOT=0/0.0.1-r711
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6a21309d721f41bd93fc8d4e717f9f9e
diff --git a/metadata/md5-cache/chromeos-base/chromeos-zephyr-2_3-0.0.1-r110 b/metadata/md5-cache/chromeos-base/chromeos-zephyr-2_3-0.0.1-r110
deleted file mode 100644
index 7a6bf92..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-zephyr-2_3-0.0.1-r110
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-python/docopt dev-python/pykwalify dev-util/ninja dev-vcs/git
-DEFINED_PHASES=compile configure info install setup unpack
-DEPEND=chromeos-base/chromeos-config
-DESCRIPTION=Zephyr v2.3 based embedded controller firmware
-EAPI=7
-HOMEPAGE=http://src.chromium.org
-IUSE=cros_host cros_workon_tree_b38a9da11233b738387851e23ac9563d73a84aa3_c8b449c296158acf7ce11ac65e2ac577247560da_c7037905e78a10c0920e0834700c2b5888c8d114_cbfc2404c2e411908f5e8db083daf3041b408522 unibuild cros_host cros_workon_tree_b38a9da11233b738387851e23ac9563d73a84aa3_c8b449c296158acf7ce11ac65e2ac577247560da_c7037905e78a10c0920e0834700c2b5888c8d114_cbfc2404c2e411908f5e8db083daf3041b408522
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-REQUIRED_USE=unibuild
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	cros-zephyr	48b408acda79a76b0fe805200d3be2d4	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8a986e61e54d4bdfde400c9a373e6eee
diff --git a/metadata/md5-cache/chromeos-base/chromeos-zephyr-2_3-9999 b/metadata/md5-cache/chromeos-base/chromeos-zephyr-2_3-9999
deleted file mode 100644
index ec5ccc6..0000000
--- a/metadata/md5-cache/chromeos-base/chromeos-zephyr-2_3-9999
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-python/docopt dev-python/pykwalify dev-util/ninja dev-vcs/git
-DEFINED_PHASES=compile configure info install setup unpack
-DEPEND=chromeos-base/chromeos-config
-DESCRIPTION=Zephyr v2.3 based embedded controller firmware
-EAPI=7
-HOMEPAGE=http://src.chromium.org
-IUSE=cros_host cros_workon_tree_ unibuild cros_host cros_workon_tree_
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live
-REQUIRED_USE=unibuild
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	cros-zephyr	48b408acda79a76b0fe805200d3be2d4	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=914e4ea1a194b7097c4aaca12a3be1b0
diff --git a/metadata/md5-cache/chromeos-base/chromeos-zephyr-9999 b/metadata/md5-cache/chromeos-base/chromeos-zephyr-9999
new file mode 100644
index 0000000..2744d41
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromeos-zephyr-9999
@@ -0,0 +1,14 @@
+BDEPEND=chromeos-base/zephyr-build-tools dev-python/docopt dev-python/pykwalify dev-util/ninja dev-vcs/git
+DEFINED_PHASES=compile configure info install setup unpack
+DEPEND=chromeos-base/chromeos-config
+DESCRIPTION=Zephyr based Embedded Controller firmware
+EAPI=7
+IUSE=unibuild cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=Apache-2.0 BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-config
+REQUIRED_USE=unibuild
+SLOT=0/9999
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=47ac1a0cda351480ee4fb4a183ab87ef
diff --git a/metadata/md5-cache/chromeos-base/chromite-0.0.2-r7540 b/metadata/md5-cache/chromeos-base/chromite-0.0.2-r7540
deleted file mode 100644
index 68a10b5..0000000
--- a/metadata/md5-cache/chromeos-base/chromite-0.0.2-r7540
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Subset of chromite libs for importing on DUTs
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/chromite/
-IUSE=cros_host cros_workon_tree_d6b8223abd7183f83b74acd57e7d01aebb212821 python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RESTRICT=test
-SLOT=0/0.0.2-r7540
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d195631d1655b8400110d0c164ded701
diff --git a/metadata/md5-cache/chromeos-base/chromite-9999 b/metadata/md5-cache/chromeos-base/chromite-9999
deleted file mode 100644
index 64bd4c1..0000000
--- a/metadata/md5-cache/chromeos-base/chromite-9999
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Subset of chromite libs for importing on DUTs
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/chromite/
-IUSE=cros_host cros_workon_tree_ python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live
-RESTRICT=test
-SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f83944eded6395ef3b742cad1dc40a2a
diff --git a/metadata/md5-cache/chromeos-base/chromite-sdk-1 b/metadata/md5-cache/chromeos-base/chromite-sdk-1
index cafe6db..23a8246 100644
--- a/metadata/md5-cache/chromeos-base/chromite-sdk-1
+++ b/metadata/md5-cache/chromeos-base/chromite-sdk-1
@@ -2,9 +2,9 @@
 DESCRIPTION=Blend chromite bits into the SDK
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/chromite/
-IUSE=python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
+IUSE=python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9
 KEYWORDS=*
 LICENSE=BSD-Google
 SLOT=0
 _eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a4a2b4bb586261336c589046670ef74e
+_md5_=b010345687dd154c23c45f7dbd8313c7
diff --git a/metadata/md5-cache/chromeos-base/chromite-sdk-1-r1 b/metadata/md5-cache/chromeos-base/chromite-sdk-1-r1
deleted file mode 100644
index cafe6db..0000000
--- a/metadata/md5-cache/chromeos-base/chromite-sdk-1-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Blend chromite bits into the SDK
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/chromite/
-IUSE=python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a4a2b4bb586261336c589046670ef74e
diff --git a/metadata/md5-cache/chromeos-base/chromite-sdk-1-r2 b/metadata/md5-cache/chromeos-base/chromite-sdk-1-r2
new file mode 100644
index 0000000..23a8246
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chromite-sdk-1-r2
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=Blend chromite bits into the SDK
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/chromite/
+IUSE=python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b010345687dd154c23c45f7dbd8313c7
diff --git a/metadata/md5-cache/chromeos-base/chromium-source-89.0.4387.0_rc-r1 b/metadata/md5-cache/chromeos-base/chromium-source-93.0.4554.0_rc-r1
similarity index 100%
rename from metadata/md5-cache/chromeos-base/chromium-source-89.0.4387.0_rc-r1
rename to metadata/md5-cache/chromeos-base/chromium-source-93.0.4554.0_rc-r1
diff --git a/metadata/md5-cache/chromeos-base/chromiumos-assets-0.0.1-r14 b/metadata/md5-cache/chromeos-base/chromiumos-assets-0.0.1-r14
index 7b23e17..bc3b946 100644
--- a/metadata/md5-cache/chromeos-base/chromiumos-assets-0.0.1-r14
+++ b/metadata/md5-cache/chromeos-base/chromiumos-assets-0.0.1-r14
@@ -7,5 +7,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8c52da7abf115c148bc5ee839bcbcf14
diff --git a/metadata/md5-cache/chromeos-base/chromiumos-assets-9999 b/metadata/md5-cache/chromeos-base/chromiumos-assets-9999
index 4dff749..26d5e17 100644
--- a/metadata/md5-cache/chromeos-base/chromiumos-assets-9999
+++ b/metadata/md5-cache/chromeos-base/chromiumos-assets-9999
@@ -7,5 +7,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ac9c044d071d877406155729812ce5d2
diff --git a/metadata/md5-cache/chromeos-base/chunnel-0.1.0-r16 b/metadata/md5-cache/chromeos-base/chunnel-0.1.0-r16
deleted file mode 100644
index 906bfc2..0000000
--- a/metadata/md5-cache/chromeos-base/chunnel-0.1.0-r16
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
-DEPEND=chromeos-base/system_api:= dev-rust/libchromeos:= dev-rust/sys_util:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= >=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3 =dev-rust/tempfile-3*:= =dev-rust/remain-0.2*:= >=virtual/rust-1.39.0:= sys-apps/baselayout
-DESCRIPTION=Tunnel between localhost in different netns
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/chunnel
-IUSE=kvm_host cros_host cros_workon_tree_3500e9b09b6a848a59446fbd4b38b1df9cdd0f8e cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-apps/dbus sys-apps/baselayout
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=a01d5aa77307c6658c65392227376f5a
diff --git a/metadata/md5-cache/chromeos-base/chunnel-0.1.0-r19 b/metadata/md5-cache/chromeos-base/chunnel-0.1.0-r19
new file mode 100644
index 0000000..2e252e2
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/chunnel-0.1.0-r19
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/system_api:= dev-rust/libchromeos:= dev-rust/sys_util:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= >=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3 =dev-rust/remain-0.2*:= dev-rust/sys_util:= =dev-rust/tempfile-3*:= >=virtual/rust-1.39.0:= sys-apps/baselayout
+DESCRIPTION=Tunnel between localhost in different netns
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/chunnel
+IUSE=kvm_host cros_host cros_workon_tree_bac3b594c76e24ac386a4a97b24374325db5b73c cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/dbus sys-apps/baselayout
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=20516fca156336f9173825ec3f6edcf8
diff --git a/metadata/md5-cache/chromeos-base/chunnel-9999 b/metadata/md5-cache/chromeos-base/chunnel-9999
index 41aa925..81bf34d 100644
--- a/metadata/md5-cache/chromeos-base/chunnel-9999
+++ b/metadata/md5-cache/chromeos-base/chunnel-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
 DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
-DEPEND=chromeos-base/system_api:= dev-rust/libchromeos:= dev-rust/sys_util:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= >=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3 =dev-rust/tempfile-3*:= =dev-rust/remain-0.2*:= >=virtual/rust-1.39.0:= sys-apps/baselayout
+DEPEND=chromeos-base/system_api:= dev-rust/libchromeos:= dev-rust/sys_util:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= >=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3 =dev-rust/remain-0.2*:= dev-rust/sys_util:= =dev-rust/tempfile-3*:= >=virtual/rust-1.39.0:= sys-apps/baselayout
 DESCRIPTION=Tunnel between localhost in different netns
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/chunnel
-IUSE=kvm_host cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=kvm_host cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=sys-apps/dbus sys-apps/baselayout
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=1a5f0881d5c6ed6f64d32f3cc7c5358b
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=88bf7d9488bc054cc1f9d21dfac8eb96
diff --git a/metadata/md5-cache/chromeos-base/codelab-0.0.1-r125 b/metadata/md5-cache/chromeos-base/codelab-0.0.1-r125
deleted file mode 100644
index 95b0e9a..0000000
--- a/metadata/md5-cache/chromeos-base/codelab-0.0.1-r125
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Developer codelab for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/codelab/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c8339e925dbb6132281f13d2df57ba1cad2d6a62_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c8339e925dbb6132281f13d2df57ba1cad2d6a62_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r125
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3c0b3ebb6f8bcb01a37e37d1b00816f4
diff --git a/metadata/md5-cache/chromeos-base/codelab-0.0.1-r150 b/metadata/md5-cache/chromeos-base/codelab-0.0.1-r150
new file mode 100644
index 0000000..8c1d903
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/codelab-0.0.1-r150
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Developer codelab for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/codelab/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c8339e925dbb6132281f13d2df57ba1cad2d6a62_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c8339e925dbb6132281f13d2df57ba1cad2d6a62_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r150
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9369f7f8d1d0329614358bb953cc195a
diff --git a/metadata/md5-cache/chromeos-base/codelab-9999 b/metadata/md5-cache/chromeos-base/codelab-9999
index 5ccedcd..19aad2c 100644
--- a/metadata/md5-cache/chromeos-base/codelab-9999
+++ b/metadata/md5-cache/chromeos-base/codelab-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Developer codelab for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/codelab/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=a1292a0bad33a5c2279e2432e2e3a017
diff --git a/metadata/md5-cache/chromeos-base/common-assets-0.0.2-r132 b/metadata/md5-cache/chromeos-base/common-assets-0.0.2-r132
deleted file mode 100644
index 7bca005..0000000
--- a/metadata/md5-cache/chromeos-base/common-assets-0.0.2-r132
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Common Chromium OS assets (images, sounds, etc.)
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/assets
-IUSE=+fonts cros_host cros_workon_tree_79888e3275ab32c8e75d68a7a940d996c1dfa8c8
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=fonts? ( chromeos-base/chromeos-fonts ) x11-libs/pango
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=dcbf279884fdb8aad31fa0997342e03f
diff --git a/metadata/md5-cache/chromeos-base/common-assets-0.0.2-r137 b/metadata/md5-cache/chromeos-base/common-assets-0.0.2-r137
new file mode 100644
index 0000000..e456d6c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/common-assets-0.0.2-r137
@@ -0,0 +1,12 @@
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Common Chromium OS assets (images, sounds, etc.)
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/assets
+IUSE=+fonts cros_host cros_workon_tree_bee194c2ea879bf27d08e1ebaf64d33e61d7dbff
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=fonts? ( chromeos-base/chromeos-fonts ) x11-libs/pango
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=04e6d96af10035a95e495b818cdb826f
diff --git a/metadata/md5-cache/chromeos-base/common-assets-9999 b/metadata/md5-cache/chromeos-base/common-assets-9999
index ee5d360..15ddadf 100644
--- a/metadata/md5-cache/chromeos-base/common-assets-9999
+++ b/metadata/md5-cache/chromeos-base/common-assets-9999
@@ -8,5 +8,5 @@
 PROPERTIES=live
 RDEPEND=fonts? ( chromeos-base/chromeos-fonts ) x11-libs/pango
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=340da8ce360ee9c3897bf81d59516681
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=5df65fb56fa12678c5a3bc9846b7c6cb
diff --git a/metadata/md5-cache/chromeos-base/crash-reporter-0.0.1-r3466 b/metadata/md5-cache/chromeos-base/crash-reporter-0.0.1-r3466
deleted file mode 100644
index de81006..0000000
--- a/metadata/md5-cache/chromeos-base/crash-reporter-0.0.1-r3466
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/minijail:= chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?] >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= dev-libs/re2:= kvm_guest? ( net-libs/grpc:= ) net-misc/curl:= sys-libs/zlib:= chromeos-base/debugd-client:= chromeos-base/session_manager-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= chromeos-base/vm_protos:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Crash reporting service that uploads crash reports with debug information
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crash-reporter/
-IUSE=cheets chromeless_tty cros_ec cros_embedded -direncryption kvm_guest systemd fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3aeec20a2766fb611bbd71d1ab31881036d78ebe_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros_arm64 cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3aeec20a2766fb611bbd71d1ab31881036d78ebe_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros_i686 cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3aeec20a2766fb611bbd71d1ab31881036d78ebe_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3aeec20a2766fb611bbd71d1ab31881036d78ebe_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live live
-RDEPEND=chromeos-base/minijail:= chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?] >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= dev-libs/re2:= kvm_guest? ( net-libs/grpc:= ) net-misc/curl:= sys-libs/zlib:= chromeos-base/chromeos-ca-certificates || ( sys-apps/journald:= sys-apps/systemd:= ) direncryption? ( sys-apps/keyutils:= ) cros_ec? ( chromeos-base/ec-utils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r3466
-_eclasses_=cros-arm64	99e3147108567dd0bb2989d51049e8c0	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-i686	bc478c2bc9a572852d5b6d779f140dda	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=4f0d4620be8920aed5fffd0a2014d8de
diff --git a/metadata/md5-cache/chromeos-base/crash-reporter-0.0.1-r3586 b/metadata/md5-cache/chromeos-base/crash-reporter-0.0.1-r3586
new file mode 100644
index 0000000..e2efd8f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/crash-reporter-0.0.1-r3586
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/minijail:= chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?] >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= dev-libs/re2:= kvm_guest? ( net-libs/grpc:= ) net-misc/curl:= sys-libs/zlib:= chromeos-base/debugd-client:= chromeos-base/session_manager-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= chromeos-base/vm_protos:= test? ( app-arch/gzip ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Crash reporting service that uploads crash reports with debug information
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crash-reporter/
+IUSE=arcpp arcvm chromeless_tty cros_ec cros_embedded -direncryption kvm_guest systemd fuzzer test vm-containers cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_6801629d7f37434bc503901837418db96ea3fc51_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros_arm64 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_6801629d7f37434bc503901837418db96ea3fc51_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros_i686 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_6801629d7f37434bc503901837418db96ea3fc51_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_6801629d7f37434bc503901837418db96ea3fc51_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live live live
+RDEPEND=chromeos-base/minijail:= chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?] >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= dev-libs/re2:= kvm_guest? ( net-libs/grpc:= ) net-misc/curl:= sys-libs/zlib:= chromeos-base/chromeos-ca-certificates direncryption? ( sys-apps/keyutils:= ) cros_ec? ( chromeos-base/ec-utils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r3586
+_eclasses_=cros-arm64	99e3147108567dd0bb2989d51049e8c0	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-i686	bc478c2bc9a572852d5b6d779f140dda	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=93704fe032c11229be9945fb1cc3987a
diff --git a/metadata/md5-cache/chromeos-base/crash-reporter-9999 b/metadata/md5-cache/chromeos-base/crash-reporter-9999
index 8becfb3..2eec282 100644
--- a/metadata/md5-cache/chromeos-base/crash-reporter-9999
+++ b/metadata/md5-cache/chromeos-base/crash-reporter-9999
@@ -1,14 +1,14 @@
 BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/minijail:= chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?] >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= dev-libs/re2:= kvm_guest? ( net-libs/grpc:= ) net-misc/curl:= sys-libs/zlib:= chromeos-base/debugd-client:= chromeos-base/session_manager-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= chromeos-base/vm_protos:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/minijail:= chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?] >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= dev-libs/re2:= kvm_guest? ( net-libs/grpc:= ) net-misc/curl:= sys-libs/zlib:= chromeos-base/debugd-client:= chromeos-base/session_manager-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= chromeos-base/vm_protos:= test? ( app-arch/gzip ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Crash reporting service that uploads crash reports with debug information
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crash-reporter/
-IUSE=cheets chromeless_tty cros_ec cros_embedded -direncryption kvm_guest systemd fuzzer cros_host cros_workon_tree_ cros_arm64 cros_host cros_workon_tree_ cros_i686 cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=arcpp arcvm chromeless_tty cros_ec cros_embedded -direncryption kvm_guest systemd fuzzer test vm-containers cros_host cros_workon_tree_ cros_arm64 cros_host cros_workon_tree_ cros_i686 cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live live live
-RDEPEND=chromeos-base/minijail:= chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?] >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= dev-libs/re2:= kvm_guest? ( net-libs/grpc:= ) net-misc/curl:= sys-libs/zlib:= chromeos-base/chromeos-ca-certificates || ( sys-apps/journald:= sys-apps/systemd:= ) direncryption? ( sys-apps/keyutils:= ) cros_ec? ( chromeos-base/ec-utils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=chromeos-base/minijail:= chromeos-base/google-breakpad:=[cros_i686?,cros_arm64?] >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= dev-libs/re2:= kvm_guest? ( net-libs/grpc:= ) net-misc/curl:= sys-libs/zlib:= chromeos-base/chromeos-ca-certificates direncryption? ( sys-apps/keyutils:= ) cros_ec? ( chromeos-base/ec-utils ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-arm64	99e3147108567dd0bb2989d51049e8c0	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-i686	bc478c2bc9a572852d5b6d779f140dda	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=67b1558997d7e9d83b5a40cd1f608064
+_eclasses_=cros-arm64	99e3147108567dd0bb2989d51049e8c0	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-i686	bc478c2bc9a572852d5b6d779f140dda	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=4130b0e9a6566498982a7b96c14faa88
diff --git a/metadata/md5-cache/chromeos-base/cronista-0.24.52-r7 b/metadata/md5-cache/chromeos-base/cronista-0.24.52-r7
new file mode 100644
index 0000000..5eac814
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cronista-0.24.52-r7
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/libsirenia:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= >=dev-rust/openssl-0.10.25:= <dev-rust/openssl-0.11.0 >=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3 >=dev-rust/serde-1.0.114:= <dev-rust/serde-2.0.0 >=dev-rust/serde_derive-1.0.114:= <dev-rust/serde_derive-2.0.0 dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 dev-rust/system_api:= sys-apps/baselayout >=virtual/rust-1.39.0:=
+DESCRIPTION=Authenticated storage daemon.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cronista/
+IUSE=manatee cros_host cros_workon_tree_88e9197eef6172639e45852afa826fa1c6e0eb20 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/dbus sys-apps/baselayout
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.24.52-r7
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=5e5b29f64e23ee17b3ef6d844c7b9009
diff --git a/metadata/md5-cache/chromeos-base/cronista-9999 b/metadata/md5-cache/chromeos-base/cronista-9999
new file mode 100644
index 0000000..991286c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cronista-9999
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/libsirenia:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= >=dev-rust/openssl-0.10.25:= <dev-rust/openssl-0.11.0 >=dev-rust/protobuf-2.16.2:= <dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.16.2:= <dev-rust/protoc-rust-3 >=dev-rust/serde-1.0.114:= <dev-rust/serde-2.0.0 >=dev-rust/serde_derive-1.0.114:= <dev-rust/serde_derive-2.0.0 dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 dev-rust/system_api:= sys-apps/baselayout >=virtual/rust-1.39.0:=
+DESCRIPTION=Authenticated storage daemon.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cronista/
+IUSE=manatee cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/dbus sys-apps/baselayout
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=5dab22bc93ec4cdda07eb31b14f0b2ea
diff --git a/metadata/md5-cache/chromeos-base/cros-camera-0.0.1-r814 b/metadata/md5-cache/chromeos-base/cros-camera-0.0.1-r814
deleted file mode 100644
index a93d14d..0000000
--- a/metadata/md5-cache/chromeos-base/cros-camera-0.0.1-r814
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=!media-libs/arc-camera3 cros-camera-algo-sandbox? ( media-libs/cros-camera-libcab:= ) media-libs/cros-camera-hal-usb:= media-libs/cros-camera-libcamera_common:= media-libs/cros-camera-libcamera_ipc:= media-libs/cros-camera-libcamera_metadata:= media-libs/libsync:= libcamera? ( media-libs/libcamera ) !libcamera? ( virtual/cros-camera-hal virtual/cros-camera-hal-configs ) >=chromeos-base/metrics-0.0.1-r3152:= media-libs/cros-camera-android-headers:= media-libs/minigbm:= x11-libs/libdrm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Chrome OS camera service. The service is in charge of accessing camera device. It uses unix domain socket to build a synchronous channel.
-EAPI=7
-IUSE=arc-camera1 cheets +cros-camera-algo-sandbox -libcamera cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b21df3934baae3e61588cbb62bf9c4c55fbd8e63_8ef0124cfbd41e24ef10c73dd08c957e8b9e7ea1_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b21df3934baae3e61588cbb62bf9c4c55fbd8e63_8ef0124cfbd41e24ef10c73dd08c957e8b9e7ea1_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b21df3934baae3e61588cbb62bf9c4c55fbd8e63_8ef0124cfbd41e24ef10c73dd08c957e8b9e7ea1_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3 cros-camera-algo-sandbox? ( media-libs/cros-camera-libcab:= ) media-libs/cros-camera-hal-usb:= media-libs/cros-camera-libcamera_common:= media-libs/cros-camera-libcamera_ipc:= media-libs/cros-camera-libcamera_metadata:= media-libs/libsync:= libcamera? ( media-libs/libcamera ) !libcamera? ( virtual/cros-camera-hal virtual/cros-camera-hal-configs ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r814
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=7fb84e2a48175cc8605bef0a2d759066
diff --git a/metadata/md5-cache/chromeos-base/cros-camera-0.0.1-r963 b/metadata/md5-cache/chromeos-base/cros-camera-0.0.1-r963
new file mode 100644
index 0000000..32b0e27
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cros-camera-0.0.1-r963
@@ -0,0 +1,13 @@
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/cros-camera-libs-0.0.1-r34:= chromeos-base/cros-camera-android-deps:= media-libs/cros-camera-hal-usb:= media-libs/libsync:= libcamera? ( media-libs/libcamera ) !libcamera? ( virtual/cros-camera-hal virtual/cros-camera-hal-configs ) >=chromeos-base/metrics-0.0.1-r3152:= media-libs/minigbm:= x11-libs/libdrm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Chrome OS camera service. The service is in charge of accessing camera device. It uses unix domain socket to build a synchronous channel.
+EAPI=7
+IUSE=arc-camera1 cheets -libcamera cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_3853c1aaf018392449473e3155a42a6de4c514b5_9b0d49af4849355f570451641ca09d759740be73_049eedf136293a1ab81617017200cb31032eb384_6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_3853c1aaf018392449473e3155a42a6de4c514b5_9b0d49af4849355f570451641ca09d759740be73_049eedf136293a1ab81617017200cb31032eb384_6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/cros-camera-libs-0.0.1-r34:= chromeos-base/cros-camera-android-deps:= media-libs/cros-camera-hal-usb:= media-libs/libsync:= libcamera? ( media-libs/libcamera ) !libcamera? ( virtual/cros-camera-hal virtual/cros-camera-hal-configs ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= virtual/tmpfiles sys-apps/baselayout
+SLOT=0/0.0.1-r963
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=228d21cbc8f2b05752573e45aeb208a1
diff --git a/metadata/md5-cache/chromeos-base/cros-camera-9999 b/metadata/md5-cache/chromeos-base/cros-camera-9999
index 8c07f9f..fdf3a2d 100644
--- a/metadata/md5-cache/chromeos-base/cros-camera-9999
+++ b/metadata/md5-cache/chromeos-base/cros-camera-9999
@@ -1,13 +1,13 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git dev-vcs/git virtual/pkgconfig
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=!media-libs/arc-camera3 cros-camera-algo-sandbox? ( media-libs/cros-camera-libcab:= ) media-libs/cros-camera-hal-usb:= media-libs/cros-camera-libcamera_common:= media-libs/cros-camera-libcamera_ipc:= media-libs/cros-camera-libcamera_metadata:= media-libs/libsync:= libcamera? ( media-libs/libcamera ) !libcamera? ( virtual/cros-camera-hal virtual/cros-camera-hal-configs ) >=chromeos-base/metrics-0.0.1-r3152:= media-libs/cros-camera-android-headers:= media-libs/minigbm:= x11-libs/libdrm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/cros-camera-libs-0.0.1-r34:= chromeos-base/cros-camera-android-deps:= media-libs/cros-camera-hal-usb:= media-libs/libsync:= libcamera? ( media-libs/libcamera ) !libcamera? ( virtual/cros-camera-hal virtual/cros-camera-hal-configs ) >=chromeos-base/metrics-0.0.1-r3152:= media-libs/minigbm:= x11-libs/libdrm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Chrome OS camera service. The service is in charge of accessing camera device. It uses unix domain socket to build a synchronous channel.
 EAPI=7
-IUSE=arc-camera1 cheets +cros-camera-algo-sandbox -libcamera cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=arc-camera1 cheets -libcamera cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3 cros-camera-algo-sandbox? ( media-libs/cros-camera-libcab:= ) media-libs/cros-camera-hal-usb:= media-libs/cros-camera-libcamera_common:= media-libs/cros-camera-libcamera_ipc:= media-libs/cros-camera-libcamera_metadata:= media-libs/libsync:= libcamera? ( media-libs/libcamera ) !libcamera? ( virtual/cros-camera-hal virtual/cros-camera-hal-configs ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/cros-camera-libs-0.0.1-r34:= chromeos-base/cros-camera-android-deps:= media-libs/cros-camera-hal-usb:= media-libs/libsync:= libcamera? ( media-libs/libcamera ) !libcamera? ( virtual/cros-camera-hal virtual/cros-camera-hal-configs ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= virtual/tmpfiles sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=1d38a01cc8d683143be986743f0202f9
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=68ae839a5e9beae45e864f46cc7c9313
diff --git a/metadata/md5-cache/chromeos-base/cros-camera-android-deps-0.0.1-r31 b/metadata/md5-cache/chromeos-base/cros-camera-android-deps-0.0.1-r31
new file mode 100644
index 0000000..fbde321
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cros-camera-android-deps-0.0.1-r31
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Android dependencies needed by cros-camera service and vendor HALs
+EAPI=7
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_9696a94a7fbf4f5e2b41c543f362ed1a22899468_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_9696a94a7fbf4f5e2b41c543f362ed1a22899468_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!media-libs/cros-camera-android-headers !media-libs/cros-camera-libcamera_client !media-libs/cros-camera-libcamera_metadata >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7da1a93a173e7b1a57927e13f8eee34e
diff --git a/metadata/md5-cache/chromeos-base/cros-camera-android-deps-9999 b/metadata/md5-cache/chromeos-base/cros-camera-android-deps-9999
new file mode 100644
index 0000000..c4a49f8
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cros-camera-android-deps-9999
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Android dependencies needed by cros-camera service and vendor HALs
+EAPI=7
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!media-libs/cros-camera-android-headers !media-libs/cros-camera-libcamera_client !media-libs/cros-camera-libcamera_metadata >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f715507d35489f632dd3578dad2b3b0d
diff --git a/metadata/md5-cache/chromeos-base/cros-camera-libs-0.0.1-r115 b/metadata/md5-cache/chromeos-base/cros-camera-libs-0.0.1-r115
new file mode 100644
index 0000000..225b78d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cros-camera-libs-0.0.1-r115
@@ -0,0 +1,13 @@
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=!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 chromeos-base/cros-camera-android-deps:= camera_feature_portrait_mode? ( media-libs/cros-camera-effect-portrait-mode:= ) media-libs/libexif:= media-libs/libsync:= media-libs/minigbm:= media-libs/cros-camera-facessd:= virtual/libudev:= x11-libs/libdrm:= >=chromeos-base/metrics-0.0.1-r3152:= media-libs/cros-camera-libcamera_connector_headers:= media-libs/libyuv:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS camera common libraries.
+EAPI=7
+IUSE=camera_feature_portrait_mode ipu6se cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_0c32b7c859889403e93cba02daed08c9537ba10f_903fe92b2526a414ef04db27fd52554a9693158a_a9708ef639f0f7929195d0f3921ebd1a12ad96bd cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_0c32b7c859889403e93cba02daed08c9537ba10f_903fe92b2526a414ef04db27fd52554a9693158a_a9708ef639f0f7929195d0f3921ebd1a12ad96bd cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!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 chromeos-base/cros-camera-android-deps:= camera_feature_portrait_mode? ( media-libs/cros-camera-effect-portrait-mode:= ) media-libs/libexif:= media-libs/libsync:= media-libs/minigbm:= media-libs/cros-camera-facessd:= virtual/libudev:= x11-libs/libdrm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r115
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=535c4fb0e2d93a27cc904e1d81f311cd
diff --git a/metadata/md5-cache/chromeos-base/cros-camera-libs-9999 b/metadata/md5-cache/chromeos-base/cros-camera-libs-9999
new file mode 100644
index 0000000..8379b21
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cros-camera-libs-9999
@@ -0,0 +1,13 @@
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=!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 chromeos-base/cros-camera-android-deps:= camera_feature_portrait_mode? ( media-libs/cros-camera-effect-portrait-mode:= ) media-libs/libexif:= media-libs/libsync:= media-libs/minigbm:= media-libs/cros-camera-facessd:= virtual/libudev:= x11-libs/libdrm:= >=chromeos-base/metrics-0.0.1-r3152:= media-libs/cros-camera-libcamera_connector_headers:= media-libs/libyuv:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS camera common libraries.
+EAPI=7
+IUSE=camera_feature_portrait_mode ipu6se cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!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 chromeos-base/cros-camera-android-deps:= camera_feature_portrait_mode? ( media-libs/cros-camera-effect-portrait-mode:= ) media-libs/libexif:= media-libs/libsync:= media-libs/minigbm:= media-libs/cros-camera-facessd:= virtual/libudev:= x11-libs/libdrm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/9999
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e0ae2788b9410a010e040800e47a06f2
diff --git a/metadata/md5-cache/chromeos-base/cros-camera-tool-0.0.1-r301 b/metadata/md5-cache/chromeos-base/cros-camera-tool-0.0.1-r301
deleted file mode 100644
index 4fe17d2..0000000
--- a/metadata/md5-cache/chromeos-base/cros-camera-tool-0.0.1-r301
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera test utility.
-EAPI=7
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_871bb7e6654a823f1468a5857b4c74f12aaedbb5_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_871bb7e6654a823f1468a5857b4c74f12aaedbb5_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_871bb7e6654a823f1468a5857b4c74f12aaedbb5_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r301
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=638e6d8348da7deb9a1c56ed10d33a76
diff --git a/metadata/md5-cache/chromeos-base/cros-camera-tool-0.0.1-r331 b/metadata/md5-cache/chromeos-base/cros-camera-tool-0.0.1-r331
new file mode 100644
index 0000000..2b933d6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cros-camera-tool-0.0.1-r331
@@ -0,0 +1,13 @@
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS camera test utility.
+EAPI=7
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_d1fd07ac03f1ac6e670181ebd45b30e31efe5a87_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_d1fd07ac03f1ac6e670181ebd45b30e31efe5a87_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r331
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f12fb2f9ac28cb20912a60e45116141e
diff --git a/metadata/md5-cache/chromeos-base/cros-camera-tool-9999 b/metadata/md5-cache/chromeos-base/cros-camera-tool-9999
index 58a1ad0..3fe68c5 100644
--- a/metadata/md5-cache/chromeos-base/cros-camera-tool-9999
+++ b/metadata/md5-cache/chromeos-base/cros-camera-tool-9999
@@ -1,13 +1,13 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git dev-vcs/git
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS camera test utility.
 EAPI=7
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=56d816b4c5248142bbe0a5243f2f3aef
diff --git a/metadata/md5-cache/chromeos-base/cros-config-api-0.0.1-r162 b/metadata/md5-cache/chromeos-base/cros-config-api-0.0.1-r162
deleted file mode 100644
index 92cf44a..0000000
--- a/metadata/md5-cache/chromeos-base/cros-config-api-0.0.1-r162
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-DESCRIPTION=Provides python and go bindings to the config API
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/config/+/master/python/
-IUSE=cros_host cros_workon_tree_686a112b5f4cd87e9b30d9da284dd5ea5549e4d0_faeb0efb28f3d19cdfbc1d4a389e0cede598869b python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 ) || ( python_targets_python3_6 python_targets_python3_7 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f00a8e0310e1acf048baa160d5a440df
diff --git a/metadata/md5-cache/chromeos-base/cros-config-api-0.0.1-r236 b/metadata/md5-cache/chromeos-base/cros-config-api-0.0.1-r236
new file mode 100644
index 0000000..fb0ff2c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cros-config-api-0.0.1-r236
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=dev-go/genproto dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+DESCRIPTION=Provides python and go bindings to the config API
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/config/+/master/python/
+IUSE=cros_host cros_workon_tree_b81f24d0e9d14f4915eb0e73889e64eb5167ebc8_675640ffa98cd9dec94ff67a2fb998e4f1609223 python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-go/genproto python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 ) || ( python_targets_python3_6 python_targets_python3_7 )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=218b5b61884604900886003adf5f1abe
diff --git a/metadata/md5-cache/chromeos-base/cros-config-api-9999 b/metadata/md5-cache/chromeos-base/cros-config-api-9999
index c4201cb..157f267 100644
--- a/metadata/md5-cache/chromeos-base/cros-config-api-9999
+++ b/metadata/md5-cache/chromeos-base/cros-config-api-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+DEPEND=dev-go/genproto dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
 DESCRIPTION=Provides python and go bindings to the config API
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/config/+/master/python/
@@ -8,8 +8,8 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+RDEPEND=dev-go/genproto python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 ) || ( python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=375dd7785c0e9be01a76a89279e25a26
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fa31fdc17da95f13fbfad2e597c602cd
diff --git a/metadata/md5-cache/chromeos-base/cros-config-test-0.0.1 b/metadata/md5-cache/chromeos-base/cros-config-test-0.0.1
index f54c2c1..bce25a3 100644
--- a/metadata/md5-cache/chromeos-base/cros-config-test-0.0.1
+++ b/metadata/md5-cache/chromeos-base/cros-config-test-0.0.1
@@ -7,5 +7,5 @@
 LICENSE=BSD-Google
 RDEPEND=virtual/chromeos-bsp-test chromeos-base/tast-local-tests-cros
 SLOT=0
-_eclasses_=cros-config-test	f471acbbac2b4c021aba0d64bf01e79e	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a
+_eclasses_=cros-config-test	f471acbbac2b4c021aba0d64bf01e79e	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c
 _md5_=4b06206dd507b88386911de8b948ddd3
diff --git a/metadata/md5-cache/chromeos-base/cros-config-test-0.0.1-r4 b/metadata/md5-cache/chromeos-base/cros-config-test-0.0.1-r4
index f54c2c1..bce25a3 100644
--- a/metadata/md5-cache/chromeos-base/cros-config-test-0.0.1-r4
+++ b/metadata/md5-cache/chromeos-base/cros-config-test-0.0.1-r4
@@ -7,5 +7,5 @@
 LICENSE=BSD-Google
 RDEPEND=virtual/chromeos-bsp-test chromeos-base/tast-local-tests-cros
 SLOT=0
-_eclasses_=cros-config-test	f471acbbac2b4c021aba0d64bf01e79e	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a
+_eclasses_=cros-config-test	f471acbbac2b4c021aba0d64bf01e79e	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c
 _md5_=4b06206dd507b88386911de8b948ddd3
diff --git a/metadata/md5-cache/chromeos-base/cros-devutils-1-r1247 b/metadata/md5-cache/chromeos-base/cros-devutils-1-r1247
deleted file mode 100644
index 83ed6a7..0000000
--- a/metadata/md5-cache/chromeos-base/cros-devutils-1-r1247
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=Development utilities for ChromiumOS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/host/
-IUSE=cros_host cros_workon_tree_69c210f0bcc8749f08b8782fc1413367c25a78b7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=app-portage/gentoolkit >=chromeos-base/devserver-0.0.2 dev-lang/python dev-util/shflags dev-util/toolchain-utils sys-apps/flashmap
-SLOT=0/1-r1247
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6df469adfebf4e0f40f8ac04a090bc4a
diff --git a/metadata/md5-cache/chromeos-base/cros-devutils-1-r1252 b/metadata/md5-cache/chromeos-base/cros-devutils-1-r1252
new file mode 100644
index 0000000..e51d899
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cros-devutils-1-r1252
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install setup unpack
+DESCRIPTION=Development utilities for ChromiumOS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/host/
+IUSE=cros_host cros_workon_tree_0bcd941cfe6b3a9446ded078cab2e84fbab54ff8
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=app-portage/gentoolkit >=chromeos-base/devserver-0.0.2 dev-util/shflags dev-util/toolchain-utils
+SLOT=0/1-r1252
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ff9fcd22a357da0dca55eae2aef5c670
diff --git a/metadata/md5-cache/chromeos-base/cros-devutils-9999 b/metadata/md5-cache/chromeos-base/cros-devutils-9999
index f565d8b..0da3970 100644
--- a/metadata/md5-cache/chromeos-base/cros-devutils-9999
+++ b/metadata/md5-cache/chromeos-base/cros-devutils-9999
@@ -7,7 +7,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=app-portage/gentoolkit >=chromeos-base/devserver-0.0.2 dev-lang/python dev-util/shflags dev-util/toolchain-utils sys-apps/flashmap
+RDEPEND=app-portage/gentoolkit >=chromeos-base/devserver-0.0.2 dev-util/shflags dev-util/toolchain-utils
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=59d0749217ab537655a776f94491122d
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a7a2259336cb946cd3868eeae85e4607
diff --git a/metadata/md5-cache/chromeos-base/cros-disks-0.0.1-r3121 b/metadata/md5-cache/chromeos-base/cros-disks-0.0.1-r3121
deleted file mode 100644
index fa113c2..0000000
--- a/metadata/md5-cache/chromeos-base/cros-disks-0.0.1-r3121
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/session_manager-client:= sys-apps/rootdev:= sys-apps/util-linux:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Disk mounting daemon for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cros-disks/
-IUSE=chromeless_tty fuzzer +seccomp cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_34fa407c32f72e1e617af42b0b444d0d2cdd1a04_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_34fa407c32f72e1e617af42b0b444d0d2cdd1a04_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/session_manager-client:= sys-apps/rootdev:= sys-apps/util-linux:= net-fs/sshfs sys-fs/dosfstools sys-fs/exfat-utils sys-fs/fuse-exfat sys-fs/fuse-zip sys-fs/ntfs3g sys-fs/rar2fs virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r3121
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=7b35c203c3b62425a3ddbec0b89f3b44
diff --git a/metadata/md5-cache/chromeos-base/cros-disks-0.0.1-r3209 b/metadata/md5-cache/chromeos-base/cros-disks-0.0.1-r3209
new file mode 100644
index 0000000..1519ad3
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cros-disks-0.0.1-r3209
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/session_manager-client:= sys-apps/rootdev:= sys-apps/util-linux:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Disk mounting daemon for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cros-disks/
+IUSE=chromeless_tty fuzzer +seccomp cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a54bf486599e8f5d48317634dce7086ad82932c9_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a54bf486599e8f5d48317634dce7086ad82932c9_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/session_manager-client:= sys-apps/rootdev:= sys-apps/util-linux:= net-fs/sshfs sys-fs/archivemount sys-fs/dosfstools sys-fs/exfat-utils sys-fs/fuse-exfat sys-fs/fuse-zip sys-fs/ntfs3g sys-fs/rar2fs virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r3209
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=d826095df0cdaa0a207660c5e88a33e8
diff --git a/metadata/md5-cache/chromeos-base/cros-disks-9999 b/metadata/md5-cache/chromeos-base/cros-disks-9999
index 13d3bea..02073b6 100644
--- a/metadata/md5-cache/chromeos-base/cros-disks-9999
+++ b/metadata/md5-cache/chromeos-base/cros-disks-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/session_manager-client:= sys-apps/rootdev:= sys-apps/util-linux:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/session_manager-client:= sys-apps/rootdev:= sys-apps/util-linux:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Disk mounting daemon for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cros-disks/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/session_manager-client:= sys-apps/rootdev:= sys-apps/util-linux:= net-fs/sshfs sys-fs/dosfstools sys-fs/exfat-utils sys-fs/fuse-exfat sys-fs/fuse-zip sys-fs/ntfs3g sys-fs/rar2fs virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/session_manager-client:= sys-apps/rootdev:= sys-apps/util-linux:= net-fs/sshfs sys-fs/archivemount sys-fs/dosfstools sys-fs/exfat-utils sys-fs/fuse-exfat sys-fs/fuse-zip sys-fs/ntfs3g sys-fs/rar2fs virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=461c8641472a45432d1eea39a282bb23
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=7317841ba6fe08eff2dba19d1642e95a
diff --git a/metadata/md5-cache/chromeos-base/cros-testutils-0.0.1-r593 b/metadata/md5-cache/chromeos-base/cros-testutils-0.0.1-r593
deleted file mode 100644
index d605386..0000000
--- a/metadata/md5-cache/chromeos-base/cros-testutils-0.0.1-r593
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DESCRIPTION=Host test utilities for ChromiumOS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crostestutils/
-IUSE=cros_host cros_workon_tree_4f7ec40608856b0e545c41a19603298affba3429
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=app-emulation/qemu app-portage/gentoolkit app-shells/bash chromeos-base/cros-devutils dev-python/django
-SLOT=0/0.0.1-r593
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=35ef87a4b82c2fe02e076aacb46eab67
diff --git a/metadata/md5-cache/chromeos-base/cros-testutils-0.0.1-r615 b/metadata/md5-cache/chromeos-base/cros-testutils-0.0.1-r615
new file mode 100644
index 0000000..62eecdd
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cros-testutils-0.0.1-r615
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DESCRIPTION=Host test utilities for ChromiumOS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crostestutils/
+IUSE=cros_host cros_workon_tree_b2f14f8919270f945f2fe0a397e2de5b19eecac8
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=app-emulation/qemu app-portage/gentoolkit app-shells/bash chromeos-base/cros-devutils dev-python/django
+SLOT=0/0.0.1-r615
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7e322bb616e07f0de69af69579f93862
diff --git a/metadata/md5-cache/chromeos-base/cros-testutils-9999 b/metadata/md5-cache/chromeos-base/cros-testutils-9999
index 3232e1b..8e83545 100644
--- a/metadata/md5-cache/chromeos-base/cros-testutils-9999
+++ b/metadata/md5-cache/chromeos-base/cros-testutils-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=app-emulation/qemu app-portage/gentoolkit app-shells/bash chromeos-base/cros-devutils dev-python/django
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=dca0f1ac5f6f843b4e99526f86a26c33
diff --git a/metadata/md5-cache/chromeos-base/crosdns-0.0.1-r260 b/metadata/md5-cache/chromeos-base/crosdns-0.0.1-r260
deleted file mode 100644
index 9a43de9..0000000
--- a/metadata/md5-cache/chromeos-base/crosdns-0.0.1-r260
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Local hostname modifier service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/crosdns
-IUSE=+seccomp asan fuzzer fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_09d4f564fd3af2f98535a78dcb18a9d60fbf12c7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_09d4f564fd3af2f98535a78dcb18a9d60fbf12c7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/minijail:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=4ed337606cf5b46b7dd53e2b9aa84b10
diff --git a/metadata/md5-cache/chromeos-base/crosdns-0.0.1-r295 b/metadata/md5-cache/chromeos-base/crosdns-0.0.1-r295
new file mode 100644
index 0000000..bf01aa3
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/crosdns-0.0.1-r295
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Local hostname modifier service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/crosdns
+IUSE=+seccomp asan fuzzer fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_33b74b183dbb5431627e063dee32ca62eb6e8937_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_33b74b183dbb5431627e063dee32ca62eb6e8937_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/minijail:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=f9642b5fbbd769c05ba99b2690234f58
diff --git a/metadata/md5-cache/chromeos-base/crosdns-9999 b/metadata/md5-cache/chromeos-base/crosdns-9999
index e6722c2..7b85d78 100644
--- a/metadata/md5-cache/chromeos-base/crosdns-9999
+++ b/metadata/md5-cache/chromeos-base/crosdns-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/minijail:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Local hostname modifier service for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/crosdns
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/minijail:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=c455306c83022bbd408e9715f01557a7
diff --git a/metadata/md5-cache/chromeos-base/crosh-0.24.52-r3020 b/metadata/md5-cache/chromeos-base/crosh-0.24.52-r3020
deleted file mode 100644
index 38aee2a..0000000
--- a/metadata/md5-cache/chromeos-base/crosh-0.24.52-r3020
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= >=dev-rust/regex-1.0.6:= <dev-rust/regex-2.0.0 dev-rust/remain:= =dev-rust/rustyline-7*:= dev-rust/shell-words:= dev-rust/sys_util:= dev-rust/system_api:= dev-rust/tempfile:= >dev-rust/tlsdate_dbus-0.24.52-r8:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Chrome OS developer command-line shell
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crosh/
-IUSE=+rust-crosh cros_host cros_workon_tree_3b568ba353360379cea8574233c6504235632402 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=app-admin/sudo chromeos-base/vboot_reference net-misc/iputils net-misc/openssh net-wireless/iw sys-apps/dbus sys-apps/net-tools
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=5a1051c30c9aeaa66d6b81bef9ed39df
diff --git a/metadata/md5-cache/chromeos-base/crosh-0.24.52-r3041 b/metadata/md5-cache/chromeos-base/crosh-0.24.52-r3041
new file mode 100644
index 0000000..3b63eeb
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/crosh-0.24.52-r3041
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/chrono-0.4*:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= =dev-rust/rand-0.7*:= >=dev-rust/regex-1.0.6:= <dev-rust/regex-2.0.0 dev-rust/remain:= =dev-rust/rustyline-7*:= dev-rust/shell-words:= dev-rust/sys_util:= dev-rust/system_api:= dev-rust/tempfile:= >dev-rust/tlsdate_dbus-0.24.52-r8:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Chrome OS developer command-line shell
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crosh/
+IUSE=+rust-crosh cros_host cros_workon_tree_2fd1803e069e2dd096b39bb1b606f9527e268319 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=app-admin/sudo chromeos-base/vboot_reference net-misc/iputils net-misc/openssh net-wireless/iw sys-apps/dbus sys-apps/net-tools
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=917c133f5ee6ed7960e43f800f7733ae
diff --git a/metadata/md5-cache/chromeos-base/crosh-9999 b/metadata/md5-cache/chromeos-base/crosh-9999
index ac03456..348b852 100644
--- a/metadata/md5-cache/chromeos-base/crosh-9999
+++ b/metadata/md5-cache/chromeos-base/crosh-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= >=dev-rust/regex-1.0.6:= <dev-rust/regex-2.0.0 dev-rust/remain:= =dev-rust/rustyline-7*:= dev-rust/shell-words:= dev-rust/sys_util:= dev-rust/system_api:= dev-rust/tempfile:= >dev-rust/tlsdate_dbus-0.24.52-r8:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/chrono-0.4*:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= =dev-rust/rand-0.7*:= >=dev-rust/regex-1.0.6:= <dev-rust/regex-2.0.0 dev-rust/remain:= =dev-rust/rustyline-7*:= dev-rust/shell-words:= dev-rust/sys_util:= dev-rust/system_api:= dev-rust/tempfile:= >dev-rust/tlsdate_dbus-0.24.52-r8:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Chrome OS developer command-line shell
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/crosh/
-IUSE=+rust-crosh cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=+rust-crosh cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=app-admin/sudo chromeos-base/vboot_reference net-misc/iputils net-misc/openssh net-wireless/iw sys-apps/dbus sys-apps/net-tools
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dd6274352ae59e8e81a00697f09538c8
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=694ca545c3340ead80ab0a52d72a023b
diff --git a/metadata/md5-cache/chromeos-base/crosh-extension-0.38-r1066 b/metadata/md5-cache/chromeos-base/crosh-extension-0.38-r1066
deleted file mode 100644
index e07e2df..0000000
--- a/metadata/md5-cache/chromeos-base/crosh-extension-0.38-r1066
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=The Chromium OS Shell extension (the HTML/JS rendering part)
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/apps/libapps/+/master/nassh/doc/chromeos-crosh.md
-IUSE=cros_host cros_workon_tree_4375efd3f1ac8e87f0ceddd0e44abcbc88f7e536_67de3c6ed499a979b86bd94d59f3e05ceddb6152_e95e9883faf2bf625041c6a14c4f4390a712fe83_77ae5fe07f633a914ecfb9c4e2e4587ed3bf9d11_cd4a1b0ea75caed81d3d789912588a3c5ff0dd51
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<chromeos-base/common-assets-0.0.2
-RESTRICT=nomirror
-SLOT=0/0
-SRC_URI=https://storage.googleapis.com/chromium-nodejs/12.14.1/4572d3801500bcbebafadf203056d6263c840cda https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-bc482f2b229bd0797c104263dc60cb884a1c90f6e65f07050d0b94b165b3a255.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-2cd2dd365999ae139b6b0fb62a5a09e2a7fb5ab1c0926cf1968a1dec9b74fea5.tar.xz
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d5dd9e8a3407fc75bba9a6c718a0eef7
diff --git a/metadata/md5-cache/chromeos-base/crosh-extension-0.41-r1094 b/metadata/md5-cache/chromeos-base/crosh-extension-0.41-r1094
new file mode 100644
index 0000000..7143af6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/crosh-extension-0.41-r1094
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install setup unpack
+DESCRIPTION=The Chromium OS Shell extension (the HTML/JS rendering part)
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/apps/libapps/+/master/nassh/doc/chromeos-crosh.md
+IUSE=cros_host cros_workon_tree_c8e4301d10abb183fbcae5129cdfb4e39976794e_cf64b2ab94d17914fa8012c04d643fd2b4d70c87_4cff3943e175c2e8020a0c3d373503026fc448bc_d0acc31ea3395f8ee93a30762441b4aaa5c1ab0d_6b8af6a0c88be075c60fe9fa728f4f6f998fd1ac
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<chromeos-base/common-assets-0.0.2
+RESTRICT=nomirror
+SLOT=0/0
+SRC_URI=https://storage.googleapis.com/chromium-nodejs/14.15.4/b2e40ddbac04d05baafbb007f203c6663c9d4ca9 https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-2cd2dd365999ae139b6b0fb62a5a09e2a7fb5ab1c0926cf1968a1dec9b74fea5.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-16e0b36c0c3d448c7fd00d1db3ba27ff8477007fb4b0eae31ae25960aeae3fbc.tar.xz
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=79339708e992be4c6ac8c57e4b2048bd
diff --git a/metadata/md5-cache/chromeos-base/crosh-extension-9999 b/metadata/md5-cache/chromeos-base/crosh-extension-9999
index e3695b3..fc2bf39 100644
--- a/metadata/md5-cache/chromeos-base/crosh-extension-9999
+++ b/metadata/md5-cache/chromeos-base/crosh-extension-9999
@@ -10,6 +10,6 @@
 RDEPEND=!<chromeos-base/common-assets-0.0.2
 RESTRICT=nomirror
 SLOT=0/0
-SRC_URI=https://storage.googleapis.com/chromium-nodejs/12.14.1/4572d3801500bcbebafadf203056d6263c840cda https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-bc482f2b229bd0797c104263dc60cb884a1c90f6e65f07050d0b94b165b3a255.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-2cd2dd365999ae139b6b0fb62a5a09e2a7fb5ab1c0926cf1968a1dec9b74fea5.tar.xz
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0e066ebaafe8599c529c77a316e3f49c
+SRC_URI=https://storage.googleapis.com/chromium-nodejs/14.15.4/b2e40ddbac04d05baafbb007f203c6663c9d4ca9 https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/fonts-d6dc5eaf459abd058cd3aef1e25963fde893f9d87f5f55f340431697ce4b3506.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-2cd2dd365999ae139b6b0fb62a5a09e2a7fb5ab1c0926cf1968a1dec9b74fea5.tar.xz https://storage.googleapis.com/chromeos-localmirror/secureshell/distfiles/node_modules-16e0b36c0c3d448c7fd00d1db3ba27ff8477007fb4b0eae31ae25960aeae3fbc.tar.xz
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4a016cb93899b3993daab6bb1b61e94a
diff --git a/metadata/md5-cache/chromeos-base/croslog-0.0.1-r157 b/metadata/md5-cache/chromeos-base/croslog-0.0.1-r157
new file mode 100644
index 0000000..c75a2ee
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/croslog-0.0.1-r157
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Log viewer for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/croslog
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_fa823f91c6f2d1432f2bfaf49b5785eeb4e6e6fb_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_fa823f91c6f2d1432f2bfaf49b5785eeb4e6e6fb_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4d45cd01f4ee996a9b49a7847c0c36ab
diff --git a/metadata/md5-cache/chromeos-base/croslog-0.0.1-r77 b/metadata/md5-cache/chromeos-base/croslog-0.0.1-r77
deleted file mode 100644
index bb2d765..0000000
--- a/metadata/md5-cache/chromeos-base/croslog-0.0.1-r77
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Log viewer for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/croslog
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8fa9939ad3373da3aa1080b56644e815ce3b1e13_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8fa9939ad3373da3aa1080b56644e815ce3b1e13_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/bootid-logger >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=46133117709e48092bd8fcb457ef89bd
diff --git a/metadata/md5-cache/chromeos-base/croslog-9999 b/metadata/md5-cache/chromeos-base/croslog-9999
index d38e4ee..1d45279 100644
--- a/metadata/md5-cache/chromeos-base/croslog-9999
+++ b/metadata/md5-cache/chromeos-base/croslog-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Log viewer for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/croslog
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/bootid-logger >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=00aeee942443940ae1aea51d42c2ee93
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f5de1a14579328781f9946f60485a572
diff --git a/metadata/md5-cache/chromeos-base/crostini_client-0.1.0-r68 b/metadata/md5-cache/chromeos-base/crostini_client-0.1.0-r68
deleted file mode 100644
index cb12a15..0000000
--- a/metadata/md5-cache/chromeos-base/crostini_client-0.1.0-r68
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/system_api =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= =dev-rust/lazy_static-1*:= >=dev-rust/libc-0.2.44:= !>=dev-rust/libc-0.3 >=dev-rust/protobuf-2.16:= <dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.16:= <dev-rust/protoc-rust-3 >=virtual/rust-1.39.0:=
-DESCRIPTION=Command-line client for controlling crostini
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/crostini_client/
-IUSE=cros_host cros_workon_tree_60c2e566309cbc45609497df23ada5ab2bbfe25f cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-apps/dbus
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=08ddab9ffffa4aefeff645186d20d648
diff --git a/metadata/md5-cache/chromeos-base/crostini_client-0.1.0-r90 b/metadata/md5-cache/chromeos-base/crostini_client-0.1.0-r90
new file mode 100644
index 0000000..cf180fc
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/crostini_client-0.1.0-r90
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/system_api =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= =dev-rust/lazy_static-1*:= >=dev-rust/libc-0.2.44:= !>=dev-rust/libc-0.3 >=dev-rust/protobuf-2.16:= <dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.16:= <dev-rust/protoc-rust-3 >=virtual/rust-1.39.0:=
+DESCRIPTION=Command-line client for controlling crostini
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/crostini_client/
+IUSE=cros_host cros_workon_tree_ae9d28d78fee99f92d94d00406be35dd80bae0ac cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/dbus
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=9992666dd7a16074f70a77b496a71953
diff --git a/metadata/md5-cache/chromeos-base/crostini_client-9999 b/metadata/md5-cache/chromeos-base/crostini_client-9999
index cff0b21..deac712 100644
--- a/metadata/md5-cache/chromeos-base/crostini_client-9999
+++ b/metadata/md5-cache/chromeos-base/crostini_client-9999
@@ -1,14 +1,14 @@
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND=chromeos-base/system_api =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= =dev-rust/lazy_static-1*:= >=dev-rust/libc-0.2.44:= !>=dev-rust/libc-0.3 >=dev-rust/protobuf-2.16:= <dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.16:= <dev-rust/protoc-rust-3 >=virtual/rust-1.39.0:=
 DESCRIPTION=Command-line client for controlling crostini
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/crostini_client/
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=sys-apps/dbus
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=30d7875391ee91e5741d0ab0c050b5ee
diff --git a/metadata/md5-cache/chromeos-base/crosvm-0.1.0-r1150 b/metadata/md5-cache/chromeos-base/crosvm-0.1.0-r1150
deleted file mode 100644
index 5648620..0000000
--- a/metadata/md5-cache/chromeos-base/crosvm-0.1.0-r1150
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
-DEPEND=sys-apps/dtc:= sys-libs/libcap:= chromeos-base/libvda:= chromeos-base/minijail:= dev-libs/wayland:= crosvm-gpu? ( media-libs/virglrenderer:= ) crosvm-wl-dmabuf? ( media-libs/minigbm:= ) dev-rust/libchromeos:= virtual/libusb:1= =dev-rust/android_log-sys-0.2*:= >=dev-rust/anyhow-1.0.32:= <dev-rust/anyhow-2.0 =dev-rust/async-trait-0.1*:= fuzzer? ( dev-rust/cros_fuzz:= =dev-rust/rand-0.6*:= ) =dev-rust/bitflags-1*:= ~dev-rust/cc-1.0.25:= >=dev-rust/downcast-rs-1.2.0:= <dev-rust/downcast-rs-2.0 =dev-rust/futures-0.3*:= =dev-rust/gdbstub-0.4*:= ~dev-rust/getopts-0.2.18:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 dev-rust/libvda:= dev-rust/minijail:= ~dev-rust/num_cpus-1.9.0:= dev-rust/p9:= =dev-rust/paste-1*:= =dev-rust/pin-utils-0.1*:= ~dev-rust/pkg-config-0.3.11:= =dev-rust/proc-macro2-1*:= >=dev-rust/protobuf-2.8:= !>=dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.8:= !>=dev-rust/protoc-rust-3 =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 dev-rust/trace_events:= dev-rust/remain:= tpm2? ( chromeos-base/tpm2:= chromeos-base/trunks:= =dev-rust/dbus-0.6*:= ) media-sound/audio_streams:= media-sound/libcras:= crosvm-power-monitor-powerd? ( chromeos-base/system_api =dev-rust/dbus-0.6*:= ) >=virtual/rust-1.39.0:= sys-apps/baselayout
-DESCRIPTION=Utility for running VMs on Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/
-IUSE=test cros-debug crosvm-gpu -crosvm-plugin +crosvm-power-monitor-powerd +crosvm-video-decoder +crosvm-video-encoder +crosvm-wl-dmabuf fuzzer tpm2 arcvm_gce_l1 fuzzer cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86 cros_host cros_workon_tree_c7761aa088dd972cecf4fd74712582943c187fb3
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-apps/dtc:= sys-libs/libcap:= chromeos-base/libvda:= chromeos-base/minijail:= dev-libs/wayland:= crosvm-gpu? ( media-libs/virglrenderer:= ) crosvm-wl-dmabuf? ( media-libs/minigbm:= ) dev-rust/libchromeos:= virtual/libusb:1= !chromeos-base/crosvm-bin crosvm-power-monitor-powerd? ( sys-apps/dbus ) tpm2? ( sys-apps/dbus ) sys-apps/baselayout
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r1150
-SRC_URI=test? ( https://storage.googleapis.com/crosvm-testing/x86_64/2019_10_10_00_22/bzImage -> crosvm-bzImage-2019_10_10_00_22 )
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=57242b1319b68242d5a23418540803ce
diff --git a/metadata/md5-cache/chromeos-base/crosvm-0.1.0-r1401 b/metadata/md5-cache/chromeos-base/crosvm-0.1.0-r1401
new file mode 100644
index 0000000..67296d2
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/crosvm-0.1.0-r1401
@@ -0,0 +1,16 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=sys-apps/dtc:= sys-libs/libcap:= chromeos-base/libvda:= chromeos-base/minijail:= dev-libs/wayland:= crosvm-gpu? ( media-libs/virglrenderer:= ) crosvm-wl-dmabuf? ( media-libs/minigbm:= ) dev-rust/libchromeos:= virtual/libusb:1= dev-libs/wayland-protocols:= =dev-rust/android_log-sys-0.2*:= >=dev-rust/anyhow-1.0.32:= <dev-rust/anyhow-2.0 =dev-rust/async-task-4*:= =dev-rust/async-trait-0.1*:= =dev-rust/bitflags-1*:= ~dev-rust/cc-1.0.25:= dev-rust/cros_fuzz:= >=dev-rust/downcast-rs-1.2.0:= <dev-rust/downcast-rs-2.0 =dev-rust/futures-0.3*:= dev-rust/intrusive-collections:= =dev-rust/gdbstub-0.4*:= ~dev-rust/getopts-0.2.18:= >=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3.0 dev-rust/libvda:= dev-rust/minijail:= ~dev-rust/num_cpus-1.9.0:= >=dev-rust/once_cell-1.7.2:= <dev-rust/once_cell-2 dev-rust/p9:= =dev-rust/paste-1*:= =dev-rust/pin-utils-0.1*:= ~dev-rust/pkg-config-0.3.11:= =dev-rust/proc-macro2-1*:= >=dev-rust/protobuf-2.8:= !>=dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.8:= !>=dev-rust/protoc-rust-3 =dev-rust/quote-1*:= =dev-rust/rand-0.6*:= =dev-rust/serde-1*:= =dev-rust/serde_json-1*:= >=dev-rust/smallvec-1.6.1:= <dev-rust/smallvec-2 =dev-rust/syn-1*:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 dev-rust/remain:= dev-rust/vmm_vhost:= tpm2? ( chromeos-base/tpm2:= chromeos-base/trunks:= =dev-rust/dbus-0.6*:= ) media-sound/audio_streams:= media-sound/libcras:= crosvm-power-monitor-powerd? ( chromeos-base/system_api =dev-rust/dbus-0.6*:= ) >=virtual/rust-1.39.0:= sys-apps/baselayout
+DESCRIPTION=Utility for running VMs on Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/
+IUSE=test cros-debug crosvm-gpu -crosvm-direct -crosvm-plugin +crosvm-power-monitor-powerd +crosvm-video-decoder +crosvm-video-encoder +crosvm-wl-dmabuf fuzzer tpm2 android-vm-master arcvm_gce_l1 vhost-user-devices fuzzer cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86 cros_host cros_workon_tree_46859998bfa9cb66ba0df2968d5f3615c5b19e11
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/dtc:= sys-libs/libcap:= chromeos-base/libvda:= chromeos-base/minijail:= dev-libs/wayland:= crosvm-gpu? ( media-libs/virglrenderer:= ) crosvm-wl-dmabuf? ( media-libs/minigbm:= ) dev-rust/libchromeos:= virtual/libusb:1= !chromeos-base/crosvm-bin crosvm-power-monitor-powerd? ( sys-apps/dbus ) tpm2? ( sys-apps/dbus ) sys-apps/baselayout
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r1401
+SRC_URI=test? ( https://storage.googleapis.com/chromeos-localmirror/crosvm-testing-bzimage-x86_64-r0000 https://storage.googleapis.com/chromeos-localmirror/crosvm-testing-rootfs-x86_64-r0000 )
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=e2b619668f11f3f75126801389fa13cc
diff --git a/metadata/md5-cache/chromeos-base/crosvm-9999 b/metadata/md5-cache/chromeos-base/crosvm-9999
index 768941b..887e5f6 100644
--- a/metadata/md5-cache/chromeos-base/crosvm-9999
+++ b/metadata/md5-cache/chromeos-base/crosvm-9999
@@ -1,16 +1,16 @@
 BDEPEND=dev-vcs/git
 DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
-DEPEND=sys-apps/dtc:= sys-libs/libcap:= chromeos-base/libvda:= chromeos-base/minijail:= dev-libs/wayland:= crosvm-gpu? ( media-libs/virglrenderer:= ) crosvm-wl-dmabuf? ( media-libs/minigbm:= ) dev-rust/libchromeos:= virtual/libusb:1= =dev-rust/android_log-sys-0.2*:= >=dev-rust/anyhow-1.0.32:= <dev-rust/anyhow-2.0 =dev-rust/async-trait-0.1*:= fuzzer? ( dev-rust/cros_fuzz:= =dev-rust/rand-0.6*:= ) =dev-rust/bitflags-1*:= ~dev-rust/cc-1.0.25:= >=dev-rust/downcast-rs-1.2.0:= <dev-rust/downcast-rs-2.0 =dev-rust/futures-0.3*:= =dev-rust/gdbstub-0.4*:= ~dev-rust/getopts-0.2.18:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 dev-rust/libvda:= dev-rust/minijail:= ~dev-rust/num_cpus-1.9.0:= dev-rust/p9:= =dev-rust/paste-1*:= =dev-rust/pin-utils-0.1*:= ~dev-rust/pkg-config-0.3.11:= =dev-rust/proc-macro2-1*:= >=dev-rust/protobuf-2.8:= !>=dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.8:= !>=dev-rust/protoc-rust-3 =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 dev-rust/trace_events:= dev-rust/remain:= tpm2? ( chromeos-base/tpm2:= chromeos-base/trunks:= =dev-rust/dbus-0.6*:= ) media-sound/audio_streams:= media-sound/libcras:= crosvm-power-monitor-powerd? ( chromeos-base/system_api =dev-rust/dbus-0.6*:= ) >=virtual/rust-1.39.0:= sys-apps/baselayout
+DEPEND=sys-apps/dtc:= sys-libs/libcap:= chromeos-base/libvda:= chromeos-base/minijail:= dev-libs/wayland:= crosvm-gpu? ( media-libs/virglrenderer:= ) crosvm-wl-dmabuf? ( media-libs/minigbm:= ) dev-rust/libchromeos:= virtual/libusb:1= dev-libs/wayland-protocols:= =dev-rust/android_log-sys-0.2*:= >=dev-rust/anyhow-1.0.32:= <dev-rust/anyhow-2.0 =dev-rust/async-task-4*:= =dev-rust/async-trait-0.1*:= =dev-rust/bitflags-1*:= ~dev-rust/cc-1.0.25:= dev-rust/cros_fuzz:= >=dev-rust/downcast-rs-1.2.0:= <dev-rust/downcast-rs-2.0 =dev-rust/futures-0.3*:= dev-rust/intrusive-collections:= =dev-rust/gdbstub-0.4*:= ~dev-rust/getopts-0.2.18:= >=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3.0 dev-rust/libvda:= dev-rust/minijail:= ~dev-rust/num_cpus-1.9.0:= >=dev-rust/once_cell-1.7.2:= <dev-rust/once_cell-2 dev-rust/p9:= =dev-rust/paste-1*:= =dev-rust/pin-utils-0.1*:= ~dev-rust/pkg-config-0.3.11:= =dev-rust/proc-macro2-1*:= >=dev-rust/protobuf-2.8:= !>=dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.8:= !>=dev-rust/protoc-rust-3 =dev-rust/quote-1*:= =dev-rust/rand-0.6*:= =dev-rust/serde-1*:= =dev-rust/serde_json-1*:= >=dev-rust/smallvec-1.6.1:= <dev-rust/smallvec-2 =dev-rust/syn-1*:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 dev-rust/remain:= dev-rust/vmm_vhost:= tpm2? ( chromeos-base/tpm2:= chromeos-base/trunks:= =dev-rust/dbus-0.6*:= ) media-sound/audio_streams:= media-sound/libcras:= crosvm-power-monitor-powerd? ( chromeos-base/system_api =dev-rust/dbus-0.6*:= ) >=virtual/rust-1.39.0:= sys-apps/baselayout
 DESCRIPTION=Utility for running VMs on Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/
-IUSE=test cros-debug crosvm-gpu -crosvm-plugin +crosvm-power-monitor-powerd +crosvm-video-decoder +crosvm-video-encoder +crosvm-wl-dmabuf fuzzer tpm2 arcvm_gce_l1 fuzzer cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86 cros_host cros_workon_tree_
+IUSE=test cros-debug crosvm-gpu -crosvm-direct -crosvm-plugin +crosvm-power-monitor-powerd +crosvm-video-decoder +crosvm-video-encoder +crosvm-wl-dmabuf fuzzer tpm2 android-vm-master arcvm_gce_l1 vhost-user-devices fuzzer cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86 cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=sys-apps/dtc:= sys-libs/libcap:= chromeos-base/libvda:= chromeos-base/minijail:= dev-libs/wayland:= crosvm-gpu? ( media-libs/virglrenderer:= ) crosvm-wl-dmabuf? ( media-libs/minigbm:= ) dev-rust/libchromeos:= virtual/libusb:1= !chromeos-base/crosvm-bin crosvm-power-monitor-powerd? ( sys-apps/dbus ) tpm2? ( sys-apps/dbus ) sys-apps/baselayout
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-SRC_URI=test? ( https://storage.googleapis.com/crosvm-testing/x86_64/2019_10_10_00_22/bzImage -> crosvm-bzImage-2019_10_10_00_22 )
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=59342665c63f9b4da4aec1ee66a0774f
+SRC_URI=test? ( https://storage.googleapis.com/chromeos-localmirror/crosvm-testing-bzimage-x86_64-r0000 https://storage.googleapis.com/chromeos-localmirror/crosvm-testing-rootfs-x86_64-r0000 )
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=3e60799824c5dd96fd56496681bead46
diff --git a/metadata/md5-cache/chromeos-base/cryptohome-0.0.1-r3508 b/metadata/md5-cache/chromeos-base/cryptohome-0.0.1-r3508
deleted file mode 100644
index 9bb2ff8..0000000
--- a/metadata/md5-cache/chromeos-base/cryptohome-0.0.1-r3508
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=!chromeos-base/chromeos-cryptohome tpm? ( app-crypt/trousers:= ) fuzzer? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) selinux? ( sys-libs/libselinux:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/bootlockbox-client:= chromeos-base/cbor:= chromeos-base/chaps:= chromeos-base/chromeos-config-tools:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/tpm_manager:= dev-libs/dbus-glib:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/flashmap:= sys-apps/keyutils:= sys-apps/rootdev:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= sys-fs/lvm2:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) tpm2? ( chromeos-base/trunks:=[test?] ) chromeos-base/attestation-client:= chromeos-base/cryptohome-client:= chromeos-base/power_manager-client:= chromeos-base/protofiles:= chromeos-base/system_api:=[fuzzer?] chromeos-base/tpm_manager-client:= chromeos-base/vboot_reference:= chromeos-base/libhwsec:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Encrypted home directories for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/
-IUSE=-cert_provision cryptohome_userdataauth_interface +device_mapper -direncryption double_extend_pcr_issue fuzzer generated_cros_config mount_oop +vault_legacy_mount +downloads_bind_mount lvm_stateful_partition pinweaver selinux systemd test tpm tpm2 tpm2_simulator unibuild user_session_isolation cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901_989d840598227b15d78525d5f92c806011a9c158_4f428eceb77ddeae2a9cdbc99367fd321c975f15_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901_989d840598227b15d78525d5f92c806011a9c158_4f428eceb77ddeae2a9cdbc99367fd321c975f15_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!chromeos-base/chromeos-cryptohome tpm? ( app-crypt/trousers:= ) fuzzer? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) selinux? ( sys-libs/libselinux:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/bootlockbox-client:= chromeos-base/cbor:= chromeos-base/chaps:= chromeos-base/chromeos-config-tools:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/tpm_manager:= dev-libs/dbus-glib:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/flashmap:= sys-apps/keyutils:= sys-apps/rootdev:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= sys-fs/lvm2:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-REQUIRED_USE=device_mapper tpm2? ( !tpm )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=d2865b930428e5b765bede75eb0b2530
diff --git a/metadata/md5-cache/chromeos-base/cryptohome-0.0.1-r3707 b/metadata/md5-cache/chromeos-base/cryptohome-0.0.1-r3707
new file mode 100644
index 0000000..7df251c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cryptohome-0.0.1-r3707
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=!chromeos-base/chromeos-cryptohome tpm? ( app-crypt/trousers:= ) fuzzer? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) selinux? ( sys-libs/libselinux:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/bootlockbox-client:= chromeos-base/cbor:= chromeos-base/chaps:= chromeos-base/chromeos-config-tools:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/tpm_manager:= dev-libs/dbus-glib:= dev-libs/flatbuffers:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/flashmap:= sys-apps/keyutils:= sys-apps/rootdev:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= sys-fs/lvm2:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) tpm2? ( chromeos-base/trunks:=[test?] ) chromeos-base/attestation-client:= chromeos-base/cryptohome-client:= chromeos-base/power_manager-client:= chromeos-base/protofiles:= chromeos-base/system_api:=[fuzzer?] chromeos-base/tpm_manager-client:= chromeos-base/vboot_reference:= chromeos-base/libhwsec:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Encrypted home directories for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/
+IUSE=-cert_provision +device_mapper -direncription_allow_v2 -direncryption double_extend_pcr_issue +downloads_bind_mount fuzzer generated_cros_config generic_tpm2 kernel-5_10 kernel-5_4 kernel-upstream lvm_stateful_partition mount_oop pinweaver selinux slow_mount systemd test tpm tpm2 tpm2_simulator unibuild uprev-4-to-5 user_session_isolation +vault_legacy_mount vtpm_proxy cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_1a305e65cfaf27dd42734a37eda080d40b377d6c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_1a305e65cfaf27dd42734a37eda080d40b377d6c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!chromeos-base/chromeos-cryptohome tpm? ( app-crypt/trousers:= ) fuzzer? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) selinux? ( sys-libs/libselinux:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/bootlockbox-client:= chromeos-base/cbor:= chromeos-base/chaps:= chromeos-base/chromeos-config-tools:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/tpm_manager:= dev-libs/dbus-glib:= dev-libs/flatbuffers:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/flashmap:= sys-apps/keyutils:= sys-apps/rootdev:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= sys-fs/lvm2:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+REQUIRED_USE=device_mapper tpm2? ( !tpm )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=e16eaed8fc4300f191b9f335a71f74b1
diff --git a/metadata/md5-cache/chromeos-base/cryptohome-9999 b/metadata/md5-cache/chromeos-base/cryptohome-9999
index 368d536..e994bcb 100644
--- a/metadata/md5-cache/chromeos-base/cryptohome-9999
+++ b/metadata/md5-cache/chromeos-base/cryptohome-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=!chromeos-base/chromeos-cryptohome tpm? ( app-crypt/trousers:= ) fuzzer? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) selinux? ( sys-libs/libselinux:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/bootlockbox-client:= chromeos-base/cbor:= chromeos-base/chaps:= chromeos-base/chromeos-config-tools:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/tpm_manager:= dev-libs/dbus-glib:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/flashmap:= sys-apps/keyutils:= sys-apps/rootdev:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= sys-fs/lvm2:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) tpm2? ( chromeos-base/trunks:=[test?] ) chromeos-base/attestation-client:= chromeos-base/cryptohome-client:= chromeos-base/power_manager-client:= chromeos-base/protofiles:= chromeos-base/system_api:=[fuzzer?] chromeos-base/tpm_manager-client:= chromeos-base/vboot_reference:= chromeos-base/libhwsec:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=!chromeos-base/chromeos-cryptohome tpm? ( app-crypt/trousers:= ) fuzzer? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) selinux? ( sys-libs/libselinux:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/bootlockbox-client:= chromeos-base/cbor:= chromeos-base/chaps:= chromeos-base/chromeos-config-tools:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/tpm_manager:= dev-libs/dbus-glib:= dev-libs/flatbuffers:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/flashmap:= sys-apps/keyutils:= sys-apps/rootdev:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= sys-fs/lvm2:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) tpm2? ( chromeos-base/trunks:=[test?] ) chromeos-base/attestation-client:= chromeos-base/cryptohome-client:= chromeos-base/power_manager-client:= chromeos-base/protofiles:= chromeos-base/system_api:=[fuzzer?] chromeos-base/tpm_manager-client:= chromeos-base/vboot_reference:= chromeos-base/libhwsec:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Encrypted home directories for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome/
-IUSE=-cert_provision cryptohome_userdataauth_interface +device_mapper -direncryption double_extend_pcr_issue fuzzer generated_cros_config mount_oop +vault_legacy_mount +downloads_bind_mount lvm_stateful_partition pinweaver selinux systemd test tpm tpm2 tpm2_simulator unibuild user_session_isolation cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=-cert_provision +device_mapper -direncription_allow_v2 -direncryption double_extend_pcr_issue +downloads_bind_mount fuzzer generated_cros_config generic_tpm2 kernel-5_10 kernel-5_4 kernel-upstream lvm_stateful_partition mount_oop pinweaver selinux slow_mount systemd test tpm tpm2 tpm2_simulator unibuild uprev-4-to-5 user_session_isolation +vault_legacy_mount vtpm_proxy cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=!chromeos-base/chromeos-cryptohome tpm? ( app-crypt/trousers:= ) fuzzer? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) selinux? ( sys-libs/libselinux:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/bootlockbox-client:= chromeos-base/cbor:= chromeos-base/chaps:= chromeos-base/chromeos-config-tools:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/tpm_manager:= dev-libs/dbus-glib:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/flashmap:= sys-apps/keyutils:= sys-apps/rootdev:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= sys-fs/lvm2:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=!chromeos-base/chromeos-cryptohome tpm? ( app-crypt/trousers:= ) fuzzer? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) selinux? ( sys-libs/libselinux:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/bootlockbox-client:= chromeos-base/cbor:= chromeos-base/chaps:= chromeos-base/chromeos-config-tools:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/secure-erase-file:= chromeos-base/tpm_manager:= dev-libs/dbus-glib:= dev-libs/flatbuffers:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/flashmap:= sys-apps/keyutils:= sys-apps/rootdev:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= sys-fs/lvm2:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 REQUIRED_USE=device_mapper tpm2? ( !tpm )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=bd32734b3957f971ead097d1f76e954c
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=107b974fd37e154124277c89288a0a4c
diff --git a/metadata/md5-cache/chromeos-base/cryptohome-client-0.0.1-r1155 b/metadata/md5-cache/chromeos-base/cryptohome-client-0.0.1-r1155
deleted file mode 100644
index 3ff873b..0000000
--- a/metadata/md5-cache/chromeos-base/cryptohome-client-0.0.1-r1155
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Cryptohome D-Bus client library for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome
-IUSE=cros_host cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!<chromeos-base/cryptohome-0.0.1 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r1155
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=32ceaefc99200d32efa45a56cdbf8fc1
diff --git a/metadata/md5-cache/chromeos-base/cryptohome-client-0.0.1-r1348 b/metadata/md5-cache/chromeos-base/cryptohome-client-0.0.1-r1348
new file mode 100644
index 0000000..431d325
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cryptohome-client-0.0.1-r1348
@@ -0,0 +1,14 @@
+BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Cryptohome D-Bus client library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome
+IUSE=cros_host cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!<chromeos-base/cryptohome-0.0.1 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r1348
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=91bcc74293c0f33f84cb7e18c9ab0938
diff --git a/metadata/md5-cache/chromeos-base/cryptohome-client-9999 b/metadata/md5-cache/chromeos-base/cryptohome-client-9999
index b7bb8ee..2a941b9 100644
--- a/metadata/md5-cache/chromeos-base/cryptohome-client-9999
+++ b/metadata/md5-cache/chromeos-base/cryptohome-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Cryptohome D-Bus client library for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=!<chromeos-base/cryptohome-0.0.1 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=20dc936dd92afe6c085c94c499348da2
diff --git a/metadata/md5-cache/chromeos-base/cryptohome-dev-utils-0.0.1-r1185 b/metadata/md5-cache/chromeos-base/cryptohome-dev-utils-0.0.1-r1185
new file mode 100644
index 0000000..8691579
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cryptohome-dev-utils-0.0.1-r1185
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/chaps:= >=chromeos-base/metrics-0.0.1-r3152:= 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:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Cryptohome developer and testing utilities for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome
+IUSE=tpm tpm2 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9_1a305e65cfaf27dd42734a37eda080d40b377d6c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9ed3579a46a08a64f1ac9d96a1faaa6e15720b9_1a305e65cfaf27dd42734a37eda080d40b377d6c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/chaps:= >=chromeos-base/metrics-0.0.1-r3152:= 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:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=tpm2? ( !tpm )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=52163038a229709b280e0e858b529ec0
diff --git a/metadata/md5-cache/chromeos-base/cryptohome-dev-utils-0.0.1-r989 b/metadata/md5-cache/chromeos-base/cryptohome-dev-utils-0.0.1-r989
deleted file mode 100644
index 23ef05a..0000000
--- a/metadata/md5-cache/chromeos-base/cryptohome-dev-utils-0.0.1-r989
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/chaps:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/tpm_manager:= chromeos-base/secure-erase-file:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/keyutils:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Cryptohome developer and testing utilities for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome
-IUSE=tpm tpm2 cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901_4f428eceb77ddeae2a9cdbc99367fd321c975f15_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ec13f3a8d1478fae9ae8f5e2d35ec77d97c81901_4f428eceb77ddeae2a9cdbc99367fd321c975f15_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/chaps:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/tpm_manager:= chromeos-base/secure-erase-file:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/keyutils:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-REQUIRED_USE=tpm2? ( !tpm )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=940438032cefbf881b78319bae969293
diff --git a/metadata/md5-cache/chromeos-base/cryptohome-dev-utils-9999 b/metadata/md5-cache/chromeos-base/cryptohome-dev-utils-9999
index ded16fe..5063dff 100644
--- a/metadata/md5-cache/chromeos-base/cryptohome-dev-utils-9999
+++ b/metadata/md5-cache/chromeos-base/cryptohome-dev-utils-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/chaps:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/tpm_manager:= chromeos-base/secure-erase-file:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/keyutils:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/chaps:= >=chromeos-base/metrics-0.0.1-r3152:= 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:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Cryptohome developer and testing utilities for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cryptohome
@@ -8,8 +8,8 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/chaps:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/tpm_manager:= chromeos-base/secure-erase-file:= dev-libs/glib:= dev-libs/openssl:= dev-libs/protobuf:= sys-apps/keyutils:= sys-fs/e2fsprogs:= sys-fs/ecryptfs-utils:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=tpm? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:= ) chromeos-base/attestation:= chromeos-base/biod_proxy:= chromeos-base/chaps:= >=chromeos-base/metrics-0.0.1-r3152:= 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:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 REQUIRED_USE=tpm2? ( !tpm )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=64e41528d763c7f1474af6019241f0ee
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b10c5abc7f5a673e5b4b312640002dbc
diff --git a/metadata/md5-cache/chromeos-base/cups-fuzz-2.3.3-r11 b/metadata/md5-cache/chromeos-base/cups-fuzz-2.3.3-r11
deleted file mode 100644
index ba1f882..0000000
--- a/metadata/md5-cache/chromeos-base/cups-fuzz-2.3.3-r11
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup unpack
-DEPEND=net-print/cups:=[fuzzer] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-DESCRIPTION=Fuzzer for PPD and IPP functions in CUPS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/cups/+/cups-2-2-8/fuzzers/
-IUSE=asan fuzzer fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_6c56a58a6808e59bd763896a3b4e5fc1228d1c94 cros-debug
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=net-print/cups:=[fuzzer] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-REQUIRED_USE=fuzzer
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c3b8a05c62f6ced48974718ee859113f
diff --git a/metadata/md5-cache/chromeos-base/cups-fuzz-2.3.3-r18 b/metadata/md5-cache/chromeos-base/cups-fuzz-2.3.3-r18
new file mode 100644
index 0000000..80551e4
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/cups-fuzz-2.3.3-r18
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install setup unpack
+DEPEND=net-print/cups:=[fuzzer] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+DESCRIPTION=Fuzzer for PPD and IPP functions in CUPS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/cups/+/HEAD/fuzzers/
+IUSE=asan fuzzer fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_281e66bb2bfff2994b709d4209668c558742dee8 cros-debug
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=net-print/cups:=[fuzzer] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+REQUIRED_USE=fuzzer
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=009419682adc422201e1fe58bdc8a034
diff --git a/metadata/md5-cache/chromeos-base/cups-fuzz-9999 b/metadata/md5-cache/chromeos-base/cups-fuzz-9999
index 2e7d8c6..2954640 100644
--- a/metadata/md5-cache/chromeos-base/cups-fuzz-9999
+++ b/metadata/md5-cache/chromeos-base/cups-fuzz-9999
@@ -3,7 +3,7 @@
 DEPEND=net-print/cups:=[fuzzer] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
 DESCRIPTION=Fuzzer for PPD and IPP functions in CUPS
 EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/cups/+/cups-2-2-8/fuzzers/
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/cups/+/HEAD/fuzzers/
 IUSE=asan fuzzer fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug
 KEYWORDS=~*
 LICENSE=BSD-Google
@@ -11,5 +11,5 @@
 RDEPEND=net-print/cups:=[fuzzer] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
 REQUIRED_USE=fuzzer
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4910e7a7349f52beb358ee967eb4591c
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c4a0cb0331dc7b129cc22981dff97d1d
diff --git a/metadata/md5-cache/chromeos-base/debugd-0.0.1-r2979 b/metadata/md5-cache/chromeos-base/debugd-0.0.1-r2979
deleted file mode 100644
index 269c30c..0000000
--- a/metadata/md5-cache/chromeos-base/debugd-0.0.1-r2979
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/chromeos-login:= chromeos-base/minijail:= chromeos-base/shill-client:= chromeos-base/vboot_reference:= dev-libs/protobuf:= net-libs/libpcap:= net-wireless/iw:= sys-apps/rootdev:= sata? ( sys-apps/smartmontools:= ) chromeos-base/debugd-client:= chromeos-base/system_api:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Chrome OS debugging service
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/debugd/
-IUSE=arcvm cellular iwlwifi_dump nvme sata tpm cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8134ac0ea3a59bcb920a3d64f4192a4d36e881ae_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8134ac0ea3a59bcb920a3d64f4192a4d36e881ae_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/chromeos-login:= chromeos-base/minijail:= chromeos-base/shill-client:= chromeos-base/vboot_reference:= dev-libs/protobuf:= net-libs/libpcap:= net-wireless/iw:= sys-apps/rootdev:= sata? ( sys-apps/smartmontools:= ) iwlwifi_dump? ( chromeos-base/intel-wifi-fw-dump ) nvme? ( sys-apps/nvme-cli ) chromeos-base/chromeos-ssh-testkeys chromeos-base/chromeos-sshd-init !chromeos-base/workarounds sys-apps/iproute2 sys-apps/memtester >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r2979
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=5ebe5eea39311073322dc6bc6c5de2c2
diff --git a/metadata/md5-cache/chromeos-base/debugd-0.0.1-r3060 b/metadata/md5-cache/chromeos-base/debugd-0.0.1-r3060
new file mode 100644
index 0000000..e678c2d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/debugd-0.0.1-r3060
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/chromeos-login:= chromeos-base/minijail:= chromeos-base/shill-client:= chromeos-base/vboot_reference:= dev-libs/protobuf:= dev-libs/re2:= net-libs/libpcap:= net-wireless/iw:= sys-apps/rootdev:= sys-libs/libcap:= sata? ( sys-apps/smartmontools:= ) chromeos-base/debugd-client:= chromeos-base/system_api:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Chrome OS debugging service
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/debugd/
+IUSE=arcvm cellular iwlwifi_dump nvme sata tpm cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4ad17d812996a69d326586115483cd71328fae07_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4ad17d812996a69d326586115483cd71328fae07_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/chromeos-login:= chromeos-base/minijail:= chromeos-base/shill-client:= chromeos-base/vboot_reference:= dev-libs/protobuf:= dev-libs/re2:= net-libs/libpcap:= net-wireless/iw:= sys-apps/rootdev:= sys-libs/libcap:= sata? ( sys-apps/smartmontools:= ) iwlwifi_dump? ( chromeos-base/intel-wifi-fw-dump ) nvme? ( sys-apps/nvme-cli ) chromeos-base/chromeos-ssh-testkeys chromeos-base/chromeos-sshd-init !chromeos-base/workarounds sys-apps/iproute2 sys-apps/memtester >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r3060
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=3eaf5731049cf2b38216a70076a0eddf
diff --git a/metadata/md5-cache/chromeos-base/debugd-9999 b/metadata/md5-cache/chromeos-base/debugd-9999
index 219b613..ad2aad5 100644
--- a/metadata/md5-cache/chromeos-base/debugd-9999
+++ b/metadata/md5-cache/chromeos-base/debugd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/chromeos-login:= chromeos-base/minijail:= chromeos-base/shill-client:= chromeos-base/vboot_reference:= dev-libs/protobuf:= net-libs/libpcap:= net-wireless/iw:= sys-apps/rootdev:= sata? ( sys-apps/smartmontools:= ) chromeos-base/debugd-client:= chromeos-base/system_api:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/chromeos-login:= chromeos-base/minijail:= chromeos-base/shill-client:= chromeos-base/vboot_reference:= dev-libs/protobuf:= dev-libs/re2:= net-libs/libpcap:= net-wireless/iw:= sys-apps/rootdev:= sys-libs/libcap:= sata? ( sys-apps/smartmontools:= ) chromeos-base/debugd-client:= chromeos-base/system_api:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Chrome OS debugging service
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/debugd/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/chromeos-login:= chromeos-base/minijail:= chromeos-base/shill-client:= chromeos-base/vboot_reference:= dev-libs/protobuf:= net-libs/libpcap:= net-wireless/iw:= sys-apps/rootdev:= sata? ( sys-apps/smartmontools:= ) iwlwifi_dump? ( chromeos-base/intel-wifi-fw-dump ) nvme? ( sys-apps/nvme-cli ) chromeos-base/chromeos-ssh-testkeys chromeos-base/chromeos-sshd-init !chromeos-base/workarounds sys-apps/iproute2 sys-apps/memtester >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=chromeos-base/chromeos-login:= chromeos-base/minijail:= chromeos-base/shill-client:= chromeos-base/vboot_reference:= dev-libs/protobuf:= dev-libs/re2:= net-libs/libpcap:= net-wireless/iw:= sys-apps/rootdev:= sys-libs/libcap:= sata? ( sys-apps/smartmontools:= ) iwlwifi_dump? ( chromeos-base/intel-wifi-fw-dump ) nvme? ( sys-apps/nvme-cli ) chromeos-base/chromeos-ssh-testkeys chromeos-base/chromeos-sshd-init !chromeos-base/workarounds sys-apps/iproute2 sys-apps/memtester >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=c696ead7c42aad639750ac0b1aa7603c
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=53942c0f979428086b9c5801f5f07a3e
diff --git a/metadata/md5-cache/chromeos-base/debugd-client-0.0.1-r1965 b/metadata/md5-cache/chromeos-base/debugd-client-0.0.1-r1965
deleted file mode 100644
index 2048596..0000000
--- a/metadata/md5-cache/chromeos-base/debugd-client-0.0.1-r1965
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS debugd client library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/debugd/
-IUSE=cros_host cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8134ac0ea3a59bcb920a3d64f4192a4d36e881ae_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8134ac0ea3a59bcb920a3d64f4192a4d36e881ae_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r1965
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=225fdc6c94b53beed9c9ea1843aea95a
diff --git a/metadata/md5-cache/chromeos-base/debugd-client-0.0.1-r2045 b/metadata/md5-cache/chromeos-base/debugd-client-0.0.1-r2045
new file mode 100644
index 0000000..8f6b2b1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/debugd-client-0.0.1-r2045
@@ -0,0 +1,14 @@
+BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS debugd client library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/debugd/
+IUSE=cros_host cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4ad17d812996a69d326586115483cd71328fae07_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4ad17d812996a69d326586115483cd71328fae07_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r2045
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c0f98c6fb928e07daab5f66fbdc5ca93
diff --git a/metadata/md5-cache/chromeos-base/debugd-client-9999 b/metadata/md5-cache/chromeos-base/debugd-client-9999
index 7a8dbe6..fcc33f4 100644
--- a/metadata/md5-cache/chromeos-base/debugd-client-9999
+++ b/metadata/md5-cache/chromeos-base/debugd-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS debugd client library
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/debugd/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=308edde34df2bf06eae84cfc7264e6cd
diff --git a/metadata/md5-cache/chromeos-base/dev-install-0.0.1-r1200 b/metadata/md5-cache/chromeos-base/dev-install-0.0.1-r1200
deleted file mode 100644
index 004d82b..0000000
--- a/metadata/md5-cache/chromeos-base/dev-install-0.0.1-r1200
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chromium OS Developer Packages installer
-EAPI=7
-HOMEPAGE=http://dev.chromium.org/chromium-os/how-tos-and-troubleshooting/install-software-on-base-images
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_502a8a422d806ada8ab91dece10e72d4ce63a77e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_502a8a422d806ada8ab91dece10e72d4ce63a77e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/vboot_reference:= app-arch/bzip2 app-arch/tar net-misc/curl >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=51925606753dddea2902da0ce3cbfffa
diff --git a/metadata/md5-cache/chromeos-base/dev-install-0.0.1-r1226 b/metadata/md5-cache/chromeos-base/dev-install-0.0.1-r1226
new file mode 100644
index 0000000..5efd5b1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/dev-install-0.0.1-r1226
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chromium OS Developer Packages installer
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/chromium-os/how-tos-and-troubleshooting/install-software-on-base-images
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_d23a0367563b6fee09db7bcd5f0b7bcdd246b4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_d23a0367563b6fee09db7bcd5f0b7bcdd246b4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/vboot_reference:= app-arch/bzip2 app-arch/tar net-misc/curl >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=54d616ee0bc99a637387f1effe9821b4
diff --git a/metadata/md5-cache/chromeos-base/dev-install-9999 b/metadata/md5-cache/chromeos-base/dev-install-9999
index d76d8ba..d5668a4 100644
--- a/metadata/md5-cache/chromeos-base/dev-install-9999
+++ b/metadata/md5-cache/chromeos-base/dev-install-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chromium OS Developer Packages installer
 EAPI=7
 HOMEPAGE=http://dev.chromium.org/chromium-os/how-tos-and-troubleshooting/install-software-on-base-images
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/vboot_reference:= app-arch/bzip2 app-arch/tar net-misc/curl >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=a259f68359639bd6e6c4b9aed6559666
diff --git a/metadata/md5-cache/chromeos-base/devserver-0.0.3-r851 b/metadata/md5-cache/chromeos-base/devserver-0.0.3-r851
deleted file mode 100644
index 7f072c3..0000000
--- a/metadata/md5-cache/chromeos-base/devserver-0.0.3-r851
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup test unpack
-DEPEND=dev-python/psutil
-DESCRIPTION=Server to cache Chromium OS build artifacts from Google Storage.
-EAPI=7
-HOMEPAGE=http://dev.chromium.org/chromium-os/how-tos-and-troubleshooting/using-the-dev-server
-IUSE=cros_host cros_workon_tree_834304e1303f3b8cf891e206cf4b83a239e0ead7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-lang/python dev-python/protobuf-python dev-python/cherrypy net-misc/gsutil !<chromeos-base/cros-devutils-1
-SLOT=0/0.0.3-r851
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c3e6eead47601f51f10bcac11a587096
diff --git a/metadata/md5-cache/chromeos-base/devserver-0.0.3-r977 b/metadata/md5-cache/chromeos-base/devserver-0.0.3-r977
new file mode 100644
index 0000000..d675c4b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/devserver-0.0.3-r977
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup test unpack
+DEPEND=dev-python/psutil
+DESCRIPTION=Server to cache Chromium OS build artifacts from Google Storage.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/chromium-os/how-tos-and-troubleshooting/using-the-dev-server
+IUSE=cros_host cros_workon_tree_9f106081447f3fb142fa0718f95458437296f96d
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-lang/python dev-python/protobuf-python dev-python/cherrypy net-misc/gsutil !<chromeos-base/cros-devutils-1
+SLOT=0/0.0.3-r977
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=276d04a74a63aec3bdf4ca26c0b2a914
diff --git a/metadata/md5-cache/chromeos-base/devserver-9999 b/metadata/md5-cache/chromeos-base/devserver-9999
index 2d2cdc0..7577cc7 100644
--- a/metadata/md5-cache/chromeos-base/devserver-9999
+++ b/metadata/md5-cache/chromeos-base/devserver-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=dev-lang/python dev-python/protobuf-python dev-python/cherrypy net-misc/gsutil !<chromeos-base/cros-devutils-1
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e00a8adc858b8a828533b4203063e05c
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f6220d4509abee52b71f323e1ae254e8
diff --git a/metadata/md5-cache/chromeos-base/diagnostics-0.0.1-r885 b/metadata/md5-cache/chromeos-base/diagnostics-0.0.1-r885
deleted file mode 100644
index 17a28ea..0000000
--- a/metadata/md5-cache/chromeos-base/diagnostics-0.0.1-r885
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= dev-libs/re2:= net-libs/grpc:= virtual/libudev:= chromeos-base/debugd-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Device telemetry and diagnostics for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics
-IUSE=fuzzer wilco generated_cros_config unibuild cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_dde835d8e5d4e90e900043932ec617f548d7e7da_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_dde835d8e5d4e90e900043932ec617f548d7e7da_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= dev-libs/re2:= net-libs/grpc:= virtual/libudev:= chromeos-base/minijail dev-util/stressapptest wilco? ( sys-block/fio chromeos-base/chromeos-dtc-vm chromeos-base/vpd ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r885
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=b9428e81ac447f6ece5a069a14c80678
diff --git a/metadata/md5-cache/chromeos-base/diagnostics-0.0.1-r991 b/metadata/md5-cache/chromeos-base/diagnostics-0.0.1-r991
new file mode 100644
index 0000000..d7575d4
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/diagnostics-0.0.1-r991
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= dev-libs/re2:= net-libs/grpc:= virtual/libudev:= chromeos-base/debugd-client:= chromeos-base/system_api:=[fuzzer?] media-sound/adhd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Device telemetry and diagnostics for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics
+IUSE=fuzzer wilco generated_cros_config unibuild cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_afcd353b9d8c8408cf7fb45f9b3d934434a16eb5_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_afcd353b9d8c8408cf7fb45f9b3d934434a16eb5_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= dev-libs/re2:= net-libs/grpc:= virtual/libudev:= chromeos-base/minijail dev-util/stressapptest wilco? ( sys-block/fio chromeos-base/chromeos-dtc-vm chromeos-base/vpd ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r991
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=8f4866aaad54648f82e593c00f6426c1
diff --git a/metadata/md5-cache/chromeos-base/diagnostics-9999 b/metadata/md5-cache/chromeos-base/diagnostics-9999
index fd65285..23a410f 100644
--- a/metadata/md5-cache/chromeos-base/diagnostics-9999
+++ b/metadata/md5-cache/chromeos-base/diagnostics-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= dev-libs/re2:= net-libs/grpc:= virtual/libudev:= chromeos-base/debugd-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= dev-libs/re2:= net-libs/grpc:= virtual/libudev:= chromeos-base/debugd-client:= chromeos-base/system_api:=[fuzzer?] media-sound/adhd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Device telemetry and diagnostics for Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= dev-libs/re2:= net-libs/grpc:= virtual/libudev:= chromeos-base/minijail dev-util/stressapptest wilco? ( sys-block/fio chromeos-base/chromeos-dtc-vm chromeos-base/vpd ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=3a47c0619bc3f93beacebb9c85826056
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=56e01cf626ae39b8997db5edea3b16a8
diff --git a/metadata/md5-cache/chromeos-base/diagnostics-dpsl-test-0.0.1-r572 b/metadata/md5-cache/chromeos-base/diagnostics-dpsl-test-0.0.1-r572
deleted file mode 100644
index f3b6fff..0000000
--- a/metadata/md5-cache/chromeos-base/diagnostics-dpsl-test-0.0.1-r572
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Diagnostics DPSL test designed to be run inside VM
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics/dpsl/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_dde835d8e5d4e90e900043932ec617f548d7e7da_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_dde835d8e5d4e90e900043932ec617f548d7e7da_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=net-libs/grpc:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e8394f7fa715391f6181a7c21df461e8
diff --git a/metadata/md5-cache/chromeos-base/diagnostics-dpsl-test-0.0.1-r657 b/metadata/md5-cache/chromeos-base/diagnostics-dpsl-test-0.0.1-r657
new file mode 100644
index 0000000..7d9eed4
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/diagnostics-dpsl-test-0.0.1-r657
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Diagnostics DPSL test designed to be run inside VM
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics/dpsl/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_afcd353b9d8c8408cf7fb45f9b3d934434a16eb5_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_afcd353b9d8c8408cf7fb45f9b3d934434a16eb5_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=net-libs/grpc:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=ebd083ba792d96564c79e2450de0b65e
diff --git a/metadata/md5-cache/chromeos-base/diagnostics-dpsl-test-9999 b/metadata/md5-cache/chromeos-base/diagnostics-dpsl-test-9999
index 51d9b5d..ba76151 100644
--- a/metadata/md5-cache/chromeos-base/diagnostics-dpsl-test-9999
+++ b/metadata/md5-cache/chromeos-base/diagnostics-dpsl-test-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Diagnostics DPSL test designed to be run inside VM
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics/dpsl/
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=net-libs/grpc:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=beda9c0689041584b822037f4d582c24
diff --git a/metadata/md5-cache/chromeos-base/disk_updater-0.0.1-r3055 b/metadata/md5-cache/chromeos-base/disk_updater-0.0.1-r3055
deleted file mode 100644
index f3c24ab..0000000
--- a/metadata/md5-cache/chromeos-base/disk_updater-0.0.1-r3055
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Root disk firmware updater
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/disk_updater/
-IUSE=+sata mmc nvme cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_a84edaa470edc69e27335f718e4784a8fcc883f9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_a84edaa470edc69e27335f718e4784a8fcc883f9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/chromeos-common-script sata? ( sys-apps/hdparm ) mmc? ( sys-apps/mmc-utils ) nvme? ( sys-apps/nvme-cli ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r3055
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b278591792366d357e8fef6b1d7153ee
diff --git a/metadata/md5-cache/chromeos-base/disk_updater-0.0.1-r3081 b/metadata/md5-cache/chromeos-base/disk_updater-0.0.1-r3081
new file mode 100644
index 0000000..c432704
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/disk_updater-0.0.1-r3081
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Root disk firmware updater
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/disk_updater/
+IUSE=+sata mmc nvme cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a84edaa470edc69e27335f718e4784a8fcc883f9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a84edaa470edc69e27335f718e4784a8fcc883f9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/chromeos-common-script dev-util/shflags sata? ( sys-apps/hdparm ) mmc? ( sys-apps/mmc-utils ) nvme? ( sys-apps/nvme-cli ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r3081
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=52a24d753cb9df0d75e971c88f077a13
diff --git a/metadata/md5-cache/chromeos-base/disk_updater-9999 b/metadata/md5-cache/chromeos-base/disk_updater-9999
index 0869373..a6e9925 100644
--- a/metadata/md5-cache/chromeos-base/disk_updater-9999
+++ b/metadata/md5-cache/chromeos-base/disk_updater-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Root disk firmware updater
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/disk_updater/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/chromeos-common-script sata? ( sys-apps/hdparm ) mmc? ( sys-apps/mmc-utils ) nvme? ( sys-apps/nvme-cli ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=chromeos-base/chromeos-common-script dev-util/shflags sata? ( sys-apps/hdparm ) mmc? ( sys-apps/mmc-utils ) nvme? ( sys-apps/nvme-cli ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c60e15ad49cbfcad68196ee17354ebc9
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8b11f1ee0d444ccf7d876f07de2f999b
diff --git a/metadata/md5-cache/chromeos-base/dlcservice-0.0.1-r493 b/metadata/md5-cache/chromeos-base/dlcservice-0.0.1-r493
deleted file mode 100644
index a091346..0000000
--- a/metadata/md5-cache/chromeos-base/dlcservice-0.0.1-r493
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/imageloader:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= chromeos-base/dlcservice-client:= chromeos-base/imageloader-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/session_manager-client:= chromeos-base/update_engine-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=A D-Bus service for Downloadable Content (DLC)
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice/
-IUSE=fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3c5d846076bd47c52c409ba0132a36304e48a2b0_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3c5d846076bd47c52c409ba0132a36304e48a2b0_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/imageloader:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r493
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=70c5ce2c6304cc355e63bdf4ce9ed7b6
diff --git a/metadata/md5-cache/chromeos-base/dlcservice-0.0.1-r574 b/metadata/md5-cache/chromeos-base/dlcservice-0.0.1-r574
new file mode 100644
index 0000000..cf3d2d5
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/dlcservice-0.0.1-r574
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/imageloader:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= chromeos-base/dlcservice-client:= chromeos-base/imageloader-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/session_manager-client:= chromeos-base/update_engine-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=A D-Bus service for Downloadable Content (DLC)
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice/
+IUSE=fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e0da5eb8dbe45cc4e72a44ebaca7260e14bc4d22_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e0da5eb8dbe45cc4e72a44ebaca7260e14bc4d22_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/imageloader:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r574
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=abfd180bbe194e21ce7bee41e6c7c5cc
diff --git a/metadata/md5-cache/chromeos-base/dlcservice-9999 b/metadata/md5-cache/chromeos-base/dlcservice-9999
index d082676..440222a 100644
--- a/metadata/md5-cache/chromeos-base/dlcservice-9999
+++ b/metadata/md5-cache/chromeos-base/dlcservice-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/imageloader:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= chromeos-base/dlcservice-client:= chromeos-base/imageloader-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/session_manager-client:= chromeos-base/update_engine-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/imageloader:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= chromeos-base/dlcservice-client:= chromeos-base/imageloader-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/session_manager-client:= chromeos-base/update_engine-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=A D-Bus service for Downloadable Content (DLC)
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/imageloader:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=09c8220b9af6f05bb5b1dfcc8ad81bee
diff --git a/metadata/md5-cache/chromeos-base/dlcservice-client-0.0.1-r403 b/metadata/md5-cache/chromeos-base/dlcservice-client-0.0.1-r403
deleted file mode 100644
index 39ba65c..0000000
--- a/metadata/md5-cache/chromeos-base/dlcservice-client-0.0.1-r403
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-dbus-bindings >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=DlcService D-Bus client library for Chromium OS
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice/client
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3c5d846076bd47c52c409ba0132a36304e48a2b0_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3c5d846076bd47c52c409ba0132a36304e48a2b0_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=6242b98114f904ceb3b9f4480d625835
diff --git a/metadata/md5-cache/chromeos-base/dlcservice-client-0.0.1-r450 b/metadata/md5-cache/chromeos-base/dlcservice-client-0.0.1-r450
new file mode 100644
index 0000000..566c69b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/dlcservice-client-0.0.1-r450
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/chromeos-dbus-bindings >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=DlcService D-Bus client library for Chromium OS
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice/client
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e0da5eb8dbe45cc4e72a44ebaca7260e14bc4d22_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e0da5eb8dbe45cc4e72a44ebaca7260e14bc4d22_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=2194a8f7053e2f8428fa42bea98735a7
diff --git a/metadata/md5-cache/chromeos-base/dlcservice-client-9999 b/metadata/md5-cache/chromeos-base/dlcservice-client-9999
index f49301f..6470e46 100644
--- a/metadata/md5-cache/chromeos-base/dlcservice-client-9999
+++ b/metadata/md5-cache/chromeos-base/dlcservice-client-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-dbus-bindings >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/chromeos-dbus-bindings >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=DlcService D-Bus client library for Chromium OS
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice/client
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f8a3b22301bb21b0a176af5b510129aa
diff --git a/metadata/md5-cache/chromeos-base/dlp-0.0.1-r32 b/metadata/md5-cache/chromeos-base/dlp-0.0.1-r32
new file mode 100644
index 0000000..6f9abeb
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/dlp-0.0.1-r32
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/minijail:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/protobuf:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=A daemon that provides support for Data Leak Prevention restrictions for file accesses.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlp/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a85255af9133dcdacc994706bf7f95bf246eb918_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a85255af9133dcdacc994706bf7f95bf246eb918_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/minijail:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r32
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=fab5e7a46e03ad11e0cee7dac38deb5e
diff --git a/metadata/md5-cache/chromeos-base/dlp-9999 b/metadata/md5-cache/chromeos-base/dlp-9999
new file mode 100644
index 0000000..be86d28
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/dlp-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/minijail:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/protobuf:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=A daemon that provides support for Data Leak Prevention restrictions for file accesses.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlp/
+IUSE=cros_host cros_workon_tree_ cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/minijail:= !dev-db/leveldb dev-libs/leveldb:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=b5bac6abb84d39dedf3b249b93ec2be3
diff --git a/metadata/md5-cache/chromeos-base/dns-proxy-0.0.1-r71 b/metadata/md5-cache/chromeos-base/dns-proxy-0.0.1-r71
new file mode 100644
index 0000000..d3518db
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/dns-proxy-0.0.1-r71
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/metrics:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= chromeos-base/shill-dbus-client:= dev-libs/protobuf:= dev-libs/dbus-glib:= sys-apps/dbus:= net-misc/curl:= chromeos-base/permission_broker-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=A daemon that provides DNS proxying services.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/dns-proxy/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_6a93087f6ddb4402b72ae9b5f4f7da5535f33c7e_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_0589da423746e4e20fe7e50f7a19e2ac46e715a8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_6a93087f6ddb4402b72ae9b5f4f7da5535f33c7e_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_0589da423746e4e20fe7e50f7a19e2ac46e715a8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/metrics:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= chromeos-base/shill-dbus-client:= dev-libs/protobuf:= dev-libs/dbus-glib:= sys-apps/dbus:= net-misc/curl:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=4e6f8e169e5170bfb6f559cf0f862da6
diff --git a/metadata/md5-cache/chromeos-base/dns-proxy-9999 b/metadata/md5-cache/chromeos-base/dns-proxy-9999
new file mode 100644
index 0000000..48a27d6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/dns-proxy-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/metrics:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= chromeos-base/shill-dbus-client:= dev-libs/protobuf:= dev-libs/dbus-glib:= sys-apps/dbus:= net-misc/curl:= chromeos-base/permission_broker-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=A daemon that provides DNS proxying services.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/dns-proxy/
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/metrics:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= chromeos-base/shill-dbus-client:= dev-libs/protobuf:= dev-libs/dbus-glib:= sys-apps/dbus:= net-misc/curl:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=bf98d63c6d5d446314d1093c59622808
diff --git a/metadata/md5-cache/chromeos-base/drm-tests-0.0.1-r179 b/metadata/md5-cache/chromeos-base/drm-tests-0.0.1-r179
deleted file mode 100644
index 3ddaaa4..0000000
--- a/metadata/md5-cache/chromeos-base/drm-tests-0.0.1-r179
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup unpack
-DEPEND=virtual/opengles || ( media-libs/mesa[gbm] media-libs/minigbm ) media-libs/libsync vulkan? ( media-libs/vulkan-loader virtual/vulkan-icd ) x11-drivers/opengles-headers
-DESCRIPTION=Chrome OS DRM Tests
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/drm-tests/
-IUSE=vulkan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_b0b4e2ecd58e285d228e46eebb54bc1aadae79ba
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=virtual/opengles || ( media-libs/mesa[gbm] media-libs/minigbm ) media-libs/libsync vulkan? ( media-libs/vulkan-loader virtual/vulkan-icd )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c5dd198f72f9f24d3af6493ee4bdfe81
diff --git a/metadata/md5-cache/chromeos-base/drm-tests-0.0.1-r212 b/metadata/md5-cache/chromeos-base/drm-tests-0.0.1-r212
new file mode 100644
index 0000000..1b1ad17
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/drm-tests-0.0.1-r212
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup unpack
+DEPEND=virtual/opengles || ( media-libs/mesa[gbm] media-libs/minigbm ) media-libs/libsync vulkan? ( media-libs/vulkan-loader virtual/vulkan-icd ) x11-drivers/opengles-headers
+DESCRIPTION=Chrome OS DRM Tests
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/drm-tests/
+IUSE=vulkan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_9a8e6ab4c6d0c8ba694c15ce3b52b0e45c78e382
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=virtual/opengles || ( media-libs/mesa[gbm] media-libs/minigbm ) media-libs/libsync vulkan? ( media-libs/vulkan-loader virtual/vulkan-icd )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=f1ca589422f077db8ebcb96e601cfcbe
diff --git a/metadata/md5-cache/chromeos-base/drm-tests-9999 b/metadata/md5-cache/chromeos-base/drm-tests-9999
index 52e50c9..4ed93d8 100644
--- a/metadata/md5-cache/chromeos-base/drm-tests-9999
+++ b/metadata/md5-cache/chromeos-base/drm-tests-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=virtual/opengles || ( media-libs/mesa[gbm] media-libs/minigbm ) media-libs/libsync vulkan? ( media-libs/vulkan-loader virtual/vulkan-icd )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=86fe54ea4e87ade40f8645f472917407
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=df7694360989ff381b993c130f2be269
diff --git a/metadata/md5-cache/chromeos-base/easy-unlock-0.0.1-r2955 b/metadata/md5-cache/chromeos-base/easy-unlock-0.0.1-r2955
deleted file mode 100644
index e3ba48b..0000000
--- a/metadata/md5-cache/chromeos-base/easy-unlock-0.0.1-r2955
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/easy-unlock-crypto:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Service for supporting Easy Unlock in Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/easy-unlock/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ef83a68e71f0fc4deac90a21a6a5e93412707ca8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ef83a68e71f0fc4deac90a21a6a5e93412707ca8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/easy-unlock-crypto:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=72d22ffa2e7019b0858f67685b185340
diff --git a/metadata/md5-cache/chromeos-base/easy-unlock-0.0.1-r2982 b/metadata/md5-cache/chromeos-base/easy-unlock-0.0.1-r2982
new file mode 100644
index 0000000..2d68cba
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/easy-unlock-0.0.1-r2982
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/easy-unlock-crypto:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Service for supporting Easy Unlock in Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/easy-unlock/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_defc5f8c0627d2e120d6d81f092dd68ae4d5e440_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_defc5f8c0627d2e120d6d81f092dd68ae4d5e440_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/easy-unlock-crypto:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=7cb09eaa6dac0a6e878b23094f319c52
diff --git a/metadata/md5-cache/chromeos-base/easy-unlock-9999 b/metadata/md5-cache/chromeos-base/easy-unlock-9999
index cdf64ea..15560c0 100644
--- a/metadata/md5-cache/chromeos-base/easy-unlock-9999
+++ b/metadata/md5-cache/chromeos-base/easy-unlock-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/easy-unlock-crypto:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/easy-unlock-crypto:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Service for supporting Easy Unlock in Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/easy-unlock/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/easy-unlock-crypto:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=2b57d35d78844b211b335ca97a08ec72
diff --git a/metadata/md5-cache/chromeos-base/ec-devutils-0.0.2-r6963 b/metadata/md5-cache/chromeos-base/ec-devutils-0.0.2-r6963
deleted file mode 100644
index 49c26d2..0000000
--- a/metadata/md5-cache/chromeos-base/ec-devutils-0.0.2-r6963
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] virtual/pkgconfig dev-vcs/git python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)]
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=virtual/libusb:1= sys-apps/flashmap:=
-DESCRIPTION=Host development utilities for Chromium OS EC
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/ec-development
-IUSE=hammerd cros_host cros_workon_tree_6369b461fc719249ee33d60e507422b13cd12e97 python_targets_python2_7 python_targets_python3_6
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=virtual/libusb:1= sys-apps/flashmap:= app-mobilephone/dfu-util sys-firmware/servo-firmware sys-apps/flashrom !<chromeos-base/ec-utils-0.0.1-r6153 chromeos-base/ec-utils >=dev-python/pyusb-1.0.2[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)]
-REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ac52f57e7ef15d6d151db68ffb0bfa5d
diff --git a/metadata/md5-cache/chromeos-base/ec-devutils-0.0.2-r8243 b/metadata/md5-cache/chromeos-base/ec-devutils-0.0.2-r8243
new file mode 100644
index 0000000..b8999ed
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/ec-devutils-0.0.2-r8243
@@ -0,0 +1,15 @@
+BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,-python_single_target_python3_6(-)] virtual/pkgconfig dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,-python_single_target_python3_6(-)] dev-python/setuptools[python_targets_python3_6(-)?,-python_single_target_python3_6(-)]
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=virtual/libusb:1= sys-apps/flashmap:=
+DESCRIPTION=Host development utilities for Chromium OS EC
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/ec-development
+IUSE=hammerd cros_host cros_workon_tree_ef831ef09b8fdc0da7cceb25def086f853ae97cd python_targets_python3_6
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=virtual/libusb:1= sys-apps/flashmap:= app-mobilephone/dfu-util sys-firmware/servo-firmware sys-apps/flashrom !<chromeos-base/ec-utils-0.0.1-r6153 chromeos-base/ec-utils >=dev-python/pyusb-1.0.2[python_targets_python3_6(-)?,-python_single_target_python3_6(-)] python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,-python_single_target_python3_6(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a9f06812de5123b7b4607691e6afb373
diff --git a/metadata/md5-cache/chromeos-base/ec-devutils-9999 b/metadata/md5-cache/chromeos-base/ec-devutils-9999
index 861db86..32f951d 100644
--- a/metadata/md5-cache/chromeos-base/ec-devutils-9999
+++ b/metadata/md5-cache/chromeos-base/ec-devutils-9999
@@ -1,15 +1,15 @@
-BDEPEND=dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] virtual/pkgconfig dev-vcs/git python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)]
+BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,-python_single_target_python3_6(-)] virtual/pkgconfig dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,-python_single_target_python3_6(-)] dev-python/setuptools[python_targets_python3_6(-)?,-python_single_target_python3_6(-)]
 DEFINED_PHASES=compile configure info install prepare setup test unpack
 DEPEND=virtual/libusb:1= sys-apps/flashmap:=
 DESCRIPTION=Host development utilities for Chromium OS EC
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/ec-development
-IUSE=hammerd cros_host cros_workon_tree_ python_targets_python2_7 python_targets_python3_6
+IUSE=hammerd cros_host cros_workon_tree_ python_targets_python3_6
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=virtual/libusb:1= sys-apps/flashmap:= app-mobilephone/dfu-util sys-firmware/servo-firmware sys-apps/flashrom !<chromeos-base/ec-utils-0.0.1-r6153 chromeos-base/ec-utils >=dev-python/pyusb-1.0.2[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)]
-REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
+RDEPEND=virtual/libusb:1= sys-apps/flashmap:= app-mobilephone/dfu-util sys-firmware/servo-firmware sys-apps/flashrom !<chromeos-base/ec-utils-0.0.1-r6153 chromeos-base/ec-utils >=dev-python/pyusb-1.0.2[python_targets_python3_6(-)?,-python_single_target_python3_6(-)] python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,-python_single_target_python3_6(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=01417a30ce654d25f0a6f0d6c9c3c2b4
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d15a1e2c4641e3c1ac4a2214ff29bd01
diff --git a/metadata/md5-cache/chromeos-base/ec-utils-0.0.2-r10177 b/metadata/md5-cache/chromeos-base/ec-utils-0.0.2-r10177
new file mode 100644
index 0000000..010ca96
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/ec-utils-0.0.2-r10177
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst preinst setup unpack
+DEPEND=dev-embedded/libftdi:= dev-libs/openssl:0= sys-libs/zlib:= virtual/libusb:1= sys-apps/baselayout
+DESCRIPTION=Chrome OS EC Utility
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
+IUSE=static -updater_utils cros_host +cros_ec_utils cros_host cros_workon_tree_ef831ef09b8fdc0da7cceb25def086f853ae97cd
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-embedded/libftdi:= dev-libs/openssl:0= sys-libs/zlib:= virtual/libusb:1= sys-apps/baselayout
+SLOT=0/0.0.2-r10177
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=9990910f885b933681e6d627ad5d7487
diff --git a/metadata/md5-cache/chromeos-base/ec-utils-0.0.2-r8896 b/metadata/md5-cache/chromeos-base/ec-utils-0.0.2-r8896
deleted file mode 100644
index 47e28b9..0000000
--- a/metadata/md5-cache/chromeos-base/ec-utils-0.0.2-r8896
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst preinst setup unpack
-DEPEND=dev-embedded/libftdi:= dev-libs/openssl:0= virtual/libusb:1= sys-apps/baselayout
-DESCRIPTION=Chrome OS EC Utility
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
-IUSE=static -updater_utils cros_host +cros_ec_utils cros_host cros_workon_tree_6369b461fc719249ee33d60e507422b13cd12e97
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-embedded/libftdi:= dev-libs/openssl:0= virtual/libusb:1= sys-apps/baselayout
-SLOT=0/0.0.2-r8896
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=317f234285774468f195d97a9684df3e
diff --git a/metadata/md5-cache/chromeos-base/ec-utils-9999 b/metadata/md5-cache/chromeos-base/ec-utils-9999
index 905b57b..8875275 100644
--- a/metadata/md5-cache/chromeos-base/ec-utils-9999
+++ b/metadata/md5-cache/chromeos-base/ec-utils-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git
 DEFINED_PHASES=compile info install postinst preinst setup unpack
-DEPEND=dev-embedded/libftdi:= dev-libs/openssl:0= virtual/libusb:1= sys-apps/baselayout
+DEPEND=dev-embedded/libftdi:= dev-libs/openssl:0= sys-libs/zlib:= virtual/libusb:1= sys-apps/baselayout
 DESCRIPTION=Chrome OS EC Utility
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=dev-embedded/libftdi:= dev-libs/openssl:0= virtual/libusb:1= sys-apps/baselayout
+RDEPEND=dev-embedded/libftdi:= dev-libs/openssl:0= sys-libs/zlib:= virtual/libusb:1= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=9e54692b39be2d8f92c7c777cdf07fc5
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=2e0fcb19a00f2e94df3bc6bfa2f0e292
diff --git a/metadata/md5-cache/chromeos-base/ec-utils-test-0.0.1-r6067 b/metadata/md5-cache/chromeos-base/ec-utils-test-0.0.1-r6067
deleted file mode 100644
index c244466..0000000
--- a/metadata/md5-cache/chromeos-base/ec-utils-test-0.0.1-r6067
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=Chrome OS EC Utility Helper
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
-IUSE=biod -cr50_onboard cros_host cros_workon_tree_6369b461fc719249ee33d60e507422b13cd12e97
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/ec-utils biod? ( dev-util/shflags )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a4eb78f09712045b485e134ef362f568
diff --git a/metadata/md5-cache/chromeos-base/ec-utils-test-0.0.1-r7347 b/metadata/md5-cache/chromeos-base/ec-utils-test-0.0.1-r7347
new file mode 100644
index 0000000..6fc5837
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/ec-utils-test-0.0.1-r7347
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install setup unpack
+DESCRIPTION=Chrome OS EC Utility Helper
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
+IUSE=biod -cr50_onboard cros_host cros_workon_tree_ef831ef09b8fdc0da7cceb25def086f853ae97cd
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/ec-utils biod? ( chromeos-base/ec-devutils dev-util/shflags )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9aa3354786dec1d91e472eb7f5ac5971
diff --git a/metadata/md5-cache/chromeos-base/ec-utils-test-9999 b/metadata/md5-cache/chromeos-base/ec-utils-test-9999
index 26fb6fc..5d9b4e5 100644
--- a/metadata/md5-cache/chromeos-base/ec-utils-test-9999
+++ b/metadata/md5-cache/chromeos-base/ec-utils-test-9999
@@ -7,7 +7,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=chromeos-base/ec-utils biod? ( dev-util/shflags )
+RDEPEND=chromeos-base/ec-utils biod? ( chromeos-base/ec-devutils dev-util/shflags )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=39ef6a72a07b57f8c8a85c0c2b05ed2e
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=95ad63986feb9d7b0c655ff68f37a22c
diff --git a/metadata/md5-cache/chromeos-base/elan_i2chid_tools-1.12-r11 b/metadata/md5-cache/chromeos-base/elan_i2chid_tools-1.12-r11
new file mode 100644
index 0000000..5ee87b8
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/elan_i2chid_tools-1.12-r11
@@ -0,0 +1,10 @@
+DEFINED_PHASES=configure install
+DESCRIPTION=Elan Touchscreen I2C-HID Tools for Firmware Update
+EAPI=6
+HOMEPAGE=https://github.com/PaulLiang01043/elan_i2chid_tools
+KEYWORDS=*
+LICENSE=Apache-2.0
+SLOT=0
+SRC_URI=http://storage.googleapis.com/chromeos-localmirror/distfiles/elan_i2chid_tools-1.12.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=f10f7c477a74f285e0f5fa120a511c60
diff --git a/metadata/md5-cache/chromeos-base/elan_i2chid_tools-1.12-r7 b/metadata/md5-cache/chromeos-base/elan_i2chid_tools-1.12-r7
deleted file mode 100644
index 0a18726..0000000
--- a/metadata/md5-cache/chromeos-base/elan_i2chid_tools-1.12-r7
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=configure install
-DESCRIPTION=Elan Touchscreen I2C-HID Tools for Firmware Update
-EAPI=6
-HOMEPAGE=https://github.com/PaulLiang01043/elan_i2chid_tools
-KEYWORDS=*
-LICENSE=Apache-2.0
-SLOT=0
-SRC_URI=http://storage.googleapis.com/chromeos-localmirror/distfiles/elan_i2chid_tools-1.12.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1c914417153e3a18a2ed9634b6bc8e72
diff --git a/metadata/md5-cache/chromeos-base/factory-0.2.0-r1967 b/metadata/md5-cache/chromeos-base/factory-0.2.0-r1967
deleted file mode 100644
index 606a88ed..0000000
--- a/metadata/md5-cache/chromeos-base/factory-0.2.0-r1967
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=virtual/chromeos-bsp-factory:= virtual/chromeos-regions:= dev-python/jsonrpclib:= dev-python/pyyaml:= dev-python/protobuf-python:=
-DESCRIPTION=Chrome OS Factory Software Platform
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/factory/
-IUSE=cros_host cros_workon_tree_d971542dd40752467b234475febda9011d37afbc python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/0.2.0-r1967
-SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror//distfiles/webgl-aquarium-20130524.tar.bz2
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-factory	a2ce0261e426513fe3f7540d9a228910	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e7826a9ae3162c16d796af18d4342c62
diff --git a/metadata/md5-cache/chromeos-base/factory-0.2.0-r2116 b/metadata/md5-cache/chromeos-base/factory-0.2.0-r2116
new file mode 100644
index 0000000..49778f4
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/factory-0.2.0-r2116
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=virtual/chromeos-bsp-factory:= virtual/chromeos-regions:= dev-python/jsonrpclib:= dev-python/pyyaml:= dev-python/protobuf-python:=
+DESCRIPTION=Chrome OS Factory Software Platform
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/factory/
+IUSE=cros_host cros_workon_tree_0b71b982ad2195029b3bd1de56bc77376f9e8d3c python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0.2.0-r2116
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror//distfiles/webgl-aquarium-20130524.tar.bz2
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-factory	a2ce0261e426513fe3f7540d9a228910	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d9a50f04dc08a56b275a6dac285c4842
diff --git a/metadata/md5-cache/chromeos-base/factory-9999 b/metadata/md5-cache/chromeos-base/factory-9999
index 4ed7927..7436179 100644
--- a/metadata/md5-cache/chromeos-base/factory-9999
+++ b/metadata/md5-cache/chromeos-base/factory-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 SLOT=0/9999
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror//distfiles/webgl-aquarium-20130524.tar.bz2
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-factory	a2ce0261e426513fe3f7540d9a228910	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ee7585add84cedbcc70133c232e87407
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-factory	a2ce0261e426513fe3f7540d9a228910	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8fd514e91b1b360f88ddc8420b64ef0d
diff --git a/metadata/md5-cache/chromeos-base/factory-mini-0.0.1-r2037 b/metadata/md5-cache/chromeos-base/factory-mini-0.0.1-r2037
deleted file mode 100644
index 3ffff38..0000000
--- a/metadata/md5-cache/chromeos-base/factory-mini-0.0.1-r2037
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup unpack
-DEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/jsonrpclib:= dev-python/pyyaml:= dev-python/protobuf-python:= virtual/chromeos-bsp-factory:= virtual/chromeos-regions:=
-DESCRIPTION=Subset of factory software to be installed in test images
-EAPI=7
-IUSE=cros_host cros_workon_tree_d971542dd40752467b234475febda9011d37afbc python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/0.0.1-r2037
-SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror//distfiles/webgl-aquarium-20130524.tar.bz2
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=26203197995e6d8e1d90c072ce9b4e16
diff --git a/metadata/md5-cache/chromeos-base/factory-mini-0.0.1-r2184 b/metadata/md5-cache/chromeos-base/factory-mini-0.0.1-r2184
new file mode 100644
index 0000000..a58b90c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/factory-mini-0.0.1-r2184
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install setup unpack
+DEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/jsonrpclib:= dev-python/pyyaml:= dev-python/protobuf-python:= virtual/chromeos-bsp-factory:= virtual/chromeos-regions:=
+DESCRIPTION=Subset of factory software to be installed in test images
+EAPI=7
+IUSE=cros_host cros_workon_tree_0b71b982ad2195029b3bd1de56bc77376f9e8d3c python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0.0.1-r2184
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror//distfiles/webgl-aquarium-20130524.tar.bz2
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=51363baf5043ea94f885d5089a035cd3
diff --git a/metadata/md5-cache/chromeos-base/factory-mini-9999 b/metadata/md5-cache/chromeos-base/factory-mini-9999
index 44cf06d..a339dca 100644
--- a/metadata/md5-cache/chromeos-base/factory-mini-9999
+++ b/metadata/md5-cache/chromeos-base/factory-mini-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 SLOT=0/9999
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror//distfiles/webgl-aquarium-20130524.tar.bz2
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=5a32c811a6a07504e363251feb4fc5c5
diff --git a/metadata/md5-cache/chromeos-base/factory_installer-0.0.1-r147 b/metadata/md5-cache/chromeos-base/factory_installer-0.0.1-r147
deleted file mode 100644
index 1a60ad2..0000000
--- a/metadata/md5-cache/chromeos-base/factory_installer-0.0.1-r147
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=test? ( chromeos-base/chromeos-common-script ) dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=chromeos-base/chromeos-init:= !chromeos-base/chromeos-factoryinstall !chromeos-base/chromeos-factory chromeos-base/factory:= test? ( chromeos-base/secure-wipe:= ) x86? ( sys-boot/syslinux:= )
-DESCRIPTION=Chrome OS Factory Installer
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/factory_installer/
-IUSE=tty_console_ttyAMA0 tty_console_ttyAMA1 tty_console_ttyAMA2 tty_console_ttyAMA3 tty_console_ttyAMA4 tty_console_ttyAMA5 tty_console_ttyHSL0 tty_console_ttyHSL1 tty_console_ttyHSL2 tty_console_ttyHSL3 tty_console_ttyHSL4 tty_console_ttyHSL5 tty_console_ttyMSM0 tty_console_ttyMSM1 tty_console_ttyMSM2 tty_console_ttyMSM3 tty_console_ttyMSM4 tty_console_ttyMSM5 tty_console_ttymxc0 tty_console_ttymxc1 tty_console_ttymxc2 tty_console_ttymxc3 tty_console_ttymxc4 tty_console_ttymxc5 tty_console_ttyO0 tty_console_ttyO1 tty_console_ttyO2 tty_console_ttyO3 tty_console_ttyO4 tty_console_ttyO5 tty_console_ttyS0 tty_console_ttyS1 tty_console_ttyS2 tty_console_ttyS3 tty_console_ttyS4 tty_console_ttyS5 tty_console_ttySAC0 tty_console_ttySAC1 tty_console_ttySAC2 tty_console_ttySAC3 tty_console_ttySAC4 tty_console_ttySAC5 tty_console_ttyUSB0 tty_console_ttyUSB1 tty_console_ttyUSB2 tty_console_ttyUSB3 tty_console_ttyUSB4 tty_console_ttyUSB5 tty_console_tty0 tty_console_tty1 tty_console_tty2 tty_console_tty3 tty_console_tty4 tty_console_tty5 -asan test asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_f37a6f205f4d34d77c68fa26c950ddb21ccb94d4
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/chromeos-init:= !chromeos-base/chromeos-factoryinstall !chromeos-base/chromeos-factory app-arch/gzip app-arch/sharutils app-arch/tar app-misc/figlet chromeos-base/chromeos-config-tools chromeos-base/vboot_reference sys-apps/mosys sys-apps/util-linux app-arch/lbzip2 app-arch/pigz app-misc/jq chromeos-base/chromeos-installer chromeos-base/chromeos-storage-info chromeos-base/ec-utils chromeos-base/secure-wipe chromeos-base/vpd dev-util/stressapptest net-misc/htpdate net-wireless/iw sys-apps/flashrom sys-apps/net-tools sys-apps/upstart sys-apps/util-linux sys-block/parted sys-fs/e2fsprogs
-SLOT=0/0.0.1-r147
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-factory	a2ce0261e426513fe3f7540d9a228910	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4d1b94bf441a99636c2768e5c8dc92e2
diff --git a/metadata/md5-cache/chromeos-base/factory_installer-0.0.1-r153 b/metadata/md5-cache/chromeos-base/factory_installer-0.0.1-r153
new file mode 100644
index 0000000..2654845
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/factory_installer-0.0.1-r153
@@ -0,0 +1,14 @@
+BDEPEND=test? ( chromeos-base/chromeos-common-script ) dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst setup test unpack
+DEPEND=chromeos-base/chromeos-init:= !chromeos-base/chromeos-factoryinstall !chromeos-base/chromeos-factory chromeos-base/factory:= test? ( chromeos-base/secure-wipe:= ) x86? ( sys-boot/syslinux:= )
+DESCRIPTION=Chrome OS Factory Installer
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/factory_installer/
+IUSE=tty_console_ttyAMA0 tty_console_ttyAMA1 tty_console_ttyAMA2 tty_console_ttyAMA3 tty_console_ttyAMA4 tty_console_ttyAMA5 tty_console_ttyHSL0 tty_console_ttyHSL1 tty_console_ttyHSL2 tty_console_ttyHSL3 tty_console_ttyHSL4 tty_console_ttyHSL5 tty_console_ttyMSM0 tty_console_ttyMSM1 tty_console_ttyMSM2 tty_console_ttyMSM3 tty_console_ttyMSM4 tty_console_ttyMSM5 tty_console_ttymxc0 tty_console_ttymxc1 tty_console_ttymxc2 tty_console_ttymxc3 tty_console_ttymxc4 tty_console_ttymxc5 tty_console_ttyO0 tty_console_ttyO1 tty_console_ttyO2 tty_console_ttyO3 tty_console_ttyO4 tty_console_ttyO5 tty_console_ttyS0 tty_console_ttyS1 tty_console_ttyS2 tty_console_ttyS3 tty_console_ttyS4 tty_console_ttyS5 tty_console_ttySAC0 tty_console_ttySAC1 tty_console_ttySAC2 tty_console_ttySAC3 tty_console_ttySAC4 tty_console_ttySAC5 tty_console_ttyUSB0 tty_console_ttyUSB1 tty_console_ttyUSB2 tty_console_ttyUSB3 tty_console_ttyUSB4 tty_console_ttyUSB5 tty_console_tty0 tty_console_tty1 tty_console_tty2 tty_console_tty3 tty_console_tty4 tty_console_tty5 -asan test asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_4642a1742fa6ffde33b68b83d1e684a2e95980bd
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-init:= !chromeos-base/chromeos-factoryinstall !chromeos-base/chromeos-factory app-arch/gzip app-arch/sharutils app-arch/tar app-misc/figlet chromeos-base/chromeos-config-tools chromeos-base/vboot_reference sys-apps/mosys sys-apps/util-linux app-arch/lbzip2 app-arch/pigz app-misc/jq chromeos-base/chromeos-installer chromeos-base/chromeos-storage-info chromeos-base/ec-utils chromeos-base/secure-wipe chromeos-base/vpd dev-util/stressapptest net-misc/htpdate net-wireless/iw sys-apps/flashrom sys-apps/net-tools sys-apps/upstart sys-apps/util-linux sys-block/parted sys-fs/e2fsprogs
+SLOT=0/0.0.1-r153
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-factory	a2ce0261e426513fe3f7540d9a228910	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5ca51f2c4b5e524f2fe4def423bef83c
diff --git a/metadata/md5-cache/chromeos-base/factory_installer-9999 b/metadata/md5-cache/chromeos-base/factory_installer-9999
index f37f7d0a..be925e66 100644
--- a/metadata/md5-cache/chromeos-base/factory_installer-9999
+++ b/metadata/md5-cache/chromeos-base/factory_installer-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/chromeos-init:= !chromeos-base/chromeos-factoryinstall !chromeos-base/chromeos-factory app-arch/gzip app-arch/sharutils app-arch/tar app-misc/figlet chromeos-base/chromeos-config-tools chromeos-base/vboot_reference sys-apps/mosys sys-apps/util-linux app-arch/lbzip2 app-arch/pigz app-misc/jq chromeos-base/chromeos-installer chromeos-base/chromeos-storage-info chromeos-base/ec-utils chromeos-base/secure-wipe chromeos-base/vpd dev-util/stressapptest net-misc/htpdate net-wireless/iw sys-apps/flashrom sys-apps/net-tools sys-apps/upstart sys-apps/util-linux sys-block/parted sys-fs/e2fsprogs
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-factory	a2ce0261e426513fe3f7540d9a228910	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=24fd292d5916779b0c74a34ffe1319f3
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-factory	a2ce0261e426513fe3f7540d9a228910	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ec9ee236b91904b8e7ce8dd6b9f62a1e
diff --git a/metadata/md5-cache/chromeos-base/factory_runtime_probe-0.0.1-r24 b/metadata/md5-cache/chromeos-base/factory_runtime_probe-0.0.1-r24
new file mode 100644
index 0000000..eedf133
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/factory_runtime_probe-0.0.1-r24
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/shill-client:= chromeos-base/system_api:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Device component probe tool **for factory environment**.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/runtime_probe/
+IUSE=cros-debug generated_cros_config unibuild +factory_runtime_probe cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_5bcd4487aea45b91806e5db9af44e6b3d9290c13_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_5bcd4487aea45b91806e5db9af44e6b3d9290c13_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/ec-utils >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r24
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=079ad0725581478d13c5d08bfe9d96a0
diff --git a/metadata/md5-cache/chromeos-base/factory_runtime_probe-9999 b/metadata/md5-cache/chromeos-base/factory_runtime_probe-9999
new file mode 100644
index 0000000..1d49aecd
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/factory_runtime_probe-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/shill-client:= chromeos-base/system_api:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Device component probe tool **for factory environment**.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/runtime_probe/
+IUSE=cros-debug generated_cros_config unibuild +factory_runtime_probe cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/ec-utils >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b398e69ed46ee4ac89b7548085b8557b
diff --git a/metadata/md5-cache/chromeos-base/federated-service-0.0.1-r9 b/metadata/md5-cache/chromeos-base/federated-service-0.0.1-r9
new file mode 100644
index 0000000..aca843d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/federated-service-0.0.1-r9
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-db/sqlite:= chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Federated Computation service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/federated
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_bcf783a53d9171afe89622df54180eececb2b69f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_bcf783a53d9171afe89622df54180eececb2b69f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-db/sqlite:= chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=85d471d608fbb2c8076becdcc45d2f03
diff --git a/metadata/md5-cache/chromeos-base/federated-service-9999 b/metadata/md5-cache/chromeos-base/federated-service-9999
new file mode 100644
index 0000000..292dad9
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/federated-service-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-db/sqlite:= chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Federated Computation service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/federated
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-db/sqlite:= chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=c3f1ac7081254a8142e3c42b283c754f
diff --git a/metadata/md5-cache/chromeos-base/feedback-0.0.1-r791 b/metadata/md5-cache/chromeos-base/feedback-0.0.1-r791
deleted file mode 100644
index 66a79b6..0000000
--- a/metadata/md5-cache/chromeos-base/feedback-0.0.1-r791
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Feedback service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/feedback/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_53956281966054116af6855ac4e859d6eb6533d7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_53956281966054116af6855ac4e859d6eb6533d7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r791
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=deb85cda1c0cd799191101f4c6fff979
diff --git a/metadata/md5-cache/chromeos-base/feedback-0.0.1-r817 b/metadata/md5-cache/chromeos-base/feedback-0.0.1-r817
new file mode 100644
index 0000000..3e25387
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/feedback-0.0.1-r817
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Feedback service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/feedback/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_2a3b0ac1cf74d264898023f64759235fdc90aa74_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_2a3b0ac1cf74d264898023f64759235fdc90aa74_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r817
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ce5908c36c654852c639eab83ca38c0e
diff --git a/metadata/md5-cache/chromeos-base/feedback-9999 b/metadata/md5-cache/chromeos-base/feedback-9999
index ecb2805..f7a42d6 100644
--- a/metadata/md5-cache/chromeos-base/feedback-9999
+++ b/metadata/md5-cache/chromeos-base/feedback-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Feedback service for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/feedback/
@@ -10,5 +10,5 @@
 PROPERTIES=live live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=9d7ac849a7d350fd2133789eebdaddc5
diff --git a/metadata/md5-cache/chromeos-base/fingerprint_study-0.0.1-r23 b/metadata/md5-cache/chromeos-base/fingerprint_study-0.0.1-r23
deleted file mode 100644
index bc414bb..0000000
--- a/metadata/md5-cache/chromeos-base/fingerprint_study-0.0.1-r23
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Chromium OS Fingerprint user study software
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/study
-IUSE=cros_host cros_workon_tree_6af6dff2eb93d08a39ac84f045b89a4e485d94e9 python_targets_pypy3 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=python_targets_pypy3? ( >=dev-python/pypy3-7.3.0:0= ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] chromeos-base/ec-utils dev-python/cherrypy[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/python-gnupg[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/ws4py[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] virtual/chromeos-fpmcu-test
-SLOT=0/0.0.1-r23
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0f9fd8acb935d8c023952b346c313985
diff --git a/metadata/md5-cache/chromeos-base/fingerprint_study-0.0.1-r27 b/metadata/md5-cache/chromeos-base/fingerprint_study-0.0.1-r27
new file mode 100644
index 0000000..38df021
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/fingerprint_study-0.0.1-r27
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Chromium OS Fingerprint user study software
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/biod/study
+IUSE=cros_host cros_workon_tree_2436963e97a3c61ae366a6d52c012917afd63236 python_targets_pypy3 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=python_targets_pypy3? ( >=dev-python/pypy3-7.3.0:0= ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] chromeos-base/ec-utils chromeos-base/ec-utils-test dev-python/cherrypy[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/python-gnupg[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/ws4py[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] virtual/chromeos-fpmcu-test
+SLOT=0/0.0.1-r27
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ea6063c07e2129c431d52f07c61f17d9
diff --git a/metadata/md5-cache/chromeos-base/fingerprint_study-9999 b/metadata/md5-cache/chromeos-base/fingerprint_study-9999
index 8c7e087..fb5b672 100644
--- a/metadata/md5-cache/chromeos-base/fingerprint_study-9999
+++ b/metadata/md5-cache/chromeos-base/fingerprint_study-9999
@@ -7,7 +7,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=python_targets_pypy3? ( >=dev-python/pypy3-7.3.0:0= ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] chromeos-base/ec-utils dev-python/cherrypy[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/python-gnupg[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/ws4py[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] virtual/chromeos-fpmcu-test
+RDEPEND=python_targets_pypy3? ( >=dev-python/pypy3-7.3.0:0= ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] chromeos-base/ec-utils chromeos-base/ec-utils-test dev-python/cherrypy[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/python-gnupg[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/ws4py[python_targets_pypy3(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_pypy3(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] virtual/chromeos-fpmcu-test
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a4016f00b693b52c963e5504fb40fa66
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fde826240a82fbed0cfb18ec035e0d8d
diff --git a/metadata/md5-cache/chromeos-base/foomatic_shell-0.0.1-r30 b/metadata/md5-cache/chromeos-base/foomatic_shell-0.0.1-r30
deleted file mode 100644
index 212e279..0000000
--- a/metadata/md5-cache/chromeos-base/foomatic_shell-0.0.1-r30
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Mini shell used by foomatic-rip to execute scripts in PPD files.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/foomatic_shell/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_6b587aaada80ee2933381273c81abeeae91ff0ee_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_6b587aaada80ee2933381273c81abeeae91ff0ee_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r30
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d52ad75f336b99f14899d98c0c6dc446
diff --git a/metadata/md5-cache/chromeos-base/foomatic_shell-0.0.1-r59 b/metadata/md5-cache/chromeos-base/foomatic_shell-0.0.1-r59
new file mode 100644
index 0000000..c3c0138
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/foomatic_shell-0.0.1-r59
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Mini shell used by foomatic-rip to execute scripts in PPD files.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/foomatic_shell/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_92250239305f99e58bf74de7db462c841dfa3c4b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_92250239305f99e58bf74de7db462c841dfa3c4b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r59
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d70fd63a9a1d32fb3d7d30358e92d521
diff --git a/metadata/md5-cache/chromeos-base/foomatic_shell-9999 b/metadata/md5-cache/chromeos-base/foomatic_shell-9999
index 6adf862..38da631 100644
--- a/metadata/md5-cache/chromeos-base/foomatic_shell-9999
+++ b/metadata/md5-cache/chromeos-base/foomatic_shell-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Mini shell used by foomatic-rip to execute scripts in PPD files.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/foomatic_shell/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=01eba69fee9df858e15e963d3ff2ae9b
diff --git a/metadata/md5-cache/chromeos-base/g2f_tools-0.0.1-r438 b/metadata/md5-cache/chromeos-base/g2f_tools-0.0.1-r438
deleted file mode 100644
index 3d17ea8..0000000
--- a/metadata/md5-cache/chromeos-base/g2f_tools-0.0.1-r438
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libhwsec:= dev-libs/hidapi:= chromeos-base/chromeos-ec-headers:= chromeos-base/u2fd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=G2F gnubby (U2F+GCSE) development and testing tools
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/u2fd
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_989d840598227b15d78525d5f92c806011a9c158_8d228c8e702aebee142bcbf0763a15786eb5b3bb_20ed8021024637e492670d20fa5969a2ad75e4b6_0a4c2a4309ae045cba89a234a75d29007f13cf92_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_989d840598227b15d78525d5f92c806011a9c158_8d228c8e702aebee142bcbf0763a15786eb5b3bb_20ed8021024637e492670d20fa5969a2ad75e4b6_0a4c2a4309ae045cba89a234a75d29007f13cf92_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libhwsec:= dev-libs/hidapi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=bff9e23b80518abcbc7506d40b2acd42
diff --git a/metadata/md5-cache/chromeos-base/g2f_tools-0.0.1-r550 b/metadata/md5-cache/chromeos-base/g2f_tools-0.0.1-r550
new file mode 100644
index 0000000..dd5cb39
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/g2f_tools-0.0.1-r550
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libhwsec:= dev-libs/hidapi:= chromeos-base/chromeos-ec-headers:= chromeos-base/u2fd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=G2F gnubby (U2F+GCSE) development and testing tools
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/u2fd
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_a06a3f47395fb7b584188c6852764bc773e5497e_e4bdb36b8b1e5f01a3bbb9b825a32cf55222bfeb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_a06a3f47395fb7b584188c6852764bc773e5497e_e4bdb36b8b1e5f01a3bbb9b825a32cf55222bfeb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libhwsec:= dev-libs/hidapi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b7a592a75989bd6602214a6725b45892
diff --git a/metadata/md5-cache/chromeos-base/g2f_tools-9999 b/metadata/md5-cache/chromeos-base/g2f_tools-9999
index 23348d5..a2aef56 100644
--- a/metadata/md5-cache/chromeos-base/g2f_tools-9999
+++ b/metadata/md5-cache/chromeos-base/g2f_tools-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libhwsec:= dev-libs/hidapi:= chromeos-base/chromeos-ec-headers:= chromeos-base/u2fd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libhwsec:= dev-libs/hidapi:= chromeos-base/chromeos-ec-headers:= chromeos-base/u2fd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=G2F gnubby (U2F+GCSE) development and testing tools
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/u2fd
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libhwsec:= dev-libs/hidapi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=46d88d23fd0228c0a666520e434b233b
diff --git a/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.0 b/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.0
deleted file mode 100644
index 3a40a10..0000000
--- a/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.0
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=configure install
-DESCRIPTION=Goodix HIDRAW Firmware Update Tool
-EAPI=5
-HOMEPAGE=https://github.com/goodix/gdix_hid_firmware_update
-KEYWORDS=*
-LICENSE=Apache-2.0
-SLOT=0
-SRC_URI=https://github.com/goodix/gdix_hid_firmware_update/archive/v1.7.0.tar.gz -> gdix_hid_firmware_update-1.7.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a7192d1161a0f3b17bd26740a5ca3110
diff --git a/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.0-r1 b/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.0-r1
deleted file mode 100644
index 3a40a10..0000000
--- a/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.0-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=configure install
-DESCRIPTION=Goodix HIDRAW Firmware Update Tool
-EAPI=5
-HOMEPAGE=https://github.com/goodix/gdix_hid_firmware_update
-KEYWORDS=*
-LICENSE=Apache-2.0
-SLOT=0
-SRC_URI=https://github.com/goodix/gdix_hid_firmware_update/archive/v1.7.0.tar.gz -> gdix_hid_firmware_update-1.7.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a7192d1161a0f3b17bd26740a5ca3110
diff --git a/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.4 b/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.4
new file mode 100644
index 0000000..33840a1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.4
@@ -0,0 +1,10 @@
+DEFINED_PHASES=configure install
+DESCRIPTION=Goodix HIDRAW Firmware Update Tool
+EAPI=5
+HOMEPAGE=https://github.com/goodix/gdix_hid_firmware_update
+KEYWORDS=*
+LICENSE=Apache-2.0
+SLOT=0
+SRC_URI=https://github.com/goodix/gdix_hid_firmware_update/archive/v1.7.4.tar.gz -> gdix_hid_firmware_update-1.7.4.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=a7192d1161a0f3b17bd26740a5ca3110
diff --git a/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.4-r1 b/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.4-r1
new file mode 100644
index 0000000..33840a1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/gdix_hid_firmware_update-1.7.4-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=configure install
+DESCRIPTION=Goodix HIDRAW Firmware Update Tool
+EAPI=5
+HOMEPAGE=https://github.com/goodix/gdix_hid_firmware_update
+KEYWORDS=*
+LICENSE=Apache-2.0
+SLOT=0
+SRC_URI=https://github.com/goodix/gdix_hid_firmware_update/archive/v1.7.4.tar.gz -> gdix_hid_firmware_update-1.7.4.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=a7192d1161a0f3b17bd26740a5ca3110
diff --git a/metadata/md5-cache/chromeos-base/gestures-0.0.1-r601 b/metadata/md5-cache/chromeos-base/gestures-0.0.1-r601
deleted file mode 100644
index 1061acd..0000000
--- a/metadata/md5-cache/chromeos-base/gestures-0.0.1-r601
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-cpp/gtest:= X? ( x11-libs/libXi:= ) chromeos-base/gestures-conf:= chromeos-base/libevdev:= dev-libs/jsoncpp:= virtual/udev
-DESCRIPTION=Gesture recognizer library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/gestures/
-IUSE=-asan +X cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_4a446aa60563ea150004879ca2fd6f0ddc2e72cc
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/gestures-conf:= chromeos-base/libevdev:= dev-libs/jsoncpp:= virtual/udev
-SLOT=0/0.0.1-r601
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=54113cdc1369f444644e2879a34b7982
diff --git a/metadata/md5-cache/chromeos-base/gestures-0.0.1-r608 b/metadata/md5-cache/chromeos-base/gestures-0.0.1-r608
new file mode 100644
index 0000000..9dfbd63
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/gestures-0.0.1-r608
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-cpp/gtest:= X? ( x11-libs/libXi:= ) chromeos-base/gestures-conf:= chromeos-base/libevdev:= dev-libs/jsoncpp:= virtual/udev
+DESCRIPTION=Gesture recognizer library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/gestures/
+IUSE=-asan +X cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_f61862266364ee29a7990560bf5e6b7b6e151873
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/gestures-conf:= chromeos-base/libevdev:= dev-libs/jsoncpp:= virtual/udev
+SLOT=0/0.0.1-r608
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=95a6df193d3e25801abef2897972c044
diff --git a/metadata/md5-cache/chromeos-base/gestures-9999 b/metadata/md5-cache/chromeos-base/gestures-9999
index dc38ad7..5f90f01 100644
--- a/metadata/md5-cache/chromeos-base/gestures-9999
+++ b/metadata/md5-cache/chromeos-base/gestures-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/gestures-conf:= chromeos-base/libevdev:= dev-libs/jsoncpp:= virtual/udev
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=999ae599c6fb3f5a15586aab0be5f0d1
diff --git a/metadata/md5-cache/chromeos-base/gestures-conf-0.0.1-r130 b/metadata/md5-cache/chromeos-base/gestures-conf-0.0.1-r130
deleted file mode 100644
index a618be1..0000000
--- a/metadata/md5-cache/chromeos-base/gestures-conf-0.0.1-r130
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DEPEND=sys-apps/baselayout
-DESCRIPTION=Board specific gestures library configuration file.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/xorg-conf/
-IUSE=elan board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild cros_host cros_workon_tree_13e786e69d512c02c96419fbea8cc4bbf41de6af
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!chromeos-base/touchpad-linearity sys-apps/baselayout
-SLOT=0/0.0.1-r130
-_eclasses_=cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=531b0862e4a446c1d6ddd275561e3374
diff --git a/metadata/md5-cache/chromeos-base/gestures-conf-0.0.1-r138 b/metadata/md5-cache/chromeos-base/gestures-conf-0.0.1-r138
new file mode 100644
index 0000000..76bc885
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/gestures-conf-0.0.1-r138
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DEPEND=sys-apps/baselayout
+DESCRIPTION=Board specific gestures library configuration file.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/xorg-conf/
+IUSE=elan board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild cros_host cros_workon_tree_b2fb9cd3688231f48d3af4596cc6144c4beff52c
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!chromeos-base/touchpad-linearity sys-apps/baselayout
+SLOT=0/0.0.1-r138
+_eclasses_=cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=e9ededbde494869f4a98d07c45ca6d7a
diff --git a/metadata/md5-cache/chromeos-base/gestures-conf-9999 b/metadata/md5-cache/chromeos-base/gestures-conf-9999
index 9d5d54b..5fa2f45 100644
--- a/metadata/md5-cache/chromeos-base/gestures-conf-9999
+++ b/metadata/md5-cache/chromeos-base/gestures-conf-9999
@@ -4,11 +4,11 @@
 DESCRIPTION=Board specific gestures library configuration file.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/xorg-conf/
-IUSE=elan board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild cros_host cros_workon_tree_
+IUSE=elan board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=!chromeos-base/touchpad-linearity sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=04fe6792d4cc75446327890ead31ee24
diff --git a/metadata/md5-cache/chromeos-base/ghostscript-fuzz-0.0.1 b/metadata/md5-cache/chromeos-base/ghostscript-fuzz-0.0.1
index 9142d82..7398b54 100644
--- a/metadata/md5-cache/chromeos-base/ghostscript-fuzz-0.0.1
+++ b/metadata/md5-cache/chromeos-base/ghostscript-fuzz-0.0.1
@@ -9,5 +9,5 @@
 RDEPEND=app-text/ghostscript-gpl:=[fuzzer]
 REQUIRED_USE=fuzzer
 SLOT=0
-_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=521568f4773100ca59d2bf6c1d1e2af7
diff --git a/metadata/md5-cache/chromeos-base/ghostscript-fuzz-0.0.1-r5 b/metadata/md5-cache/chromeos-base/ghostscript-fuzz-0.0.1-r5
index 9142d82..7398b54 100644
--- a/metadata/md5-cache/chromeos-base/ghostscript-fuzz-0.0.1-r5
+++ b/metadata/md5-cache/chromeos-base/ghostscript-fuzz-0.0.1-r5
@@ -9,5 +9,5 @@
 RDEPEND=app-text/ghostscript-gpl:=[fuzzer]
 REQUIRED_USE=fuzzer
 SLOT=0
-_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=521568f4773100ca59d2bf6c1d1e2af7
diff --git a/metadata/md5-cache/chromeos-base/glbench-0.0.1-r15 b/metadata/md5-cache/chromeos-base/glbench-0.0.1-r15
deleted file mode 100644
index f3e66b6..0000000
--- a/metadata/md5-cache/chromeos-base/glbench-0.0.1-r15
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=>=dev-cpp/gflags-2.0:= media-libs/libpng:= virtual/opengles:= media-libs/waffle:= x11-drivers/opengles-headers:=
-DESCRIPTION=Microbenchmark for opengl/gles
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/glbench/
-IUSE=opengl opengles cros_host cros_workon_tree_a06262f549ab04d57db55306d37d111faa5e47a9
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=>=dev-cpp/gflags-2.0:= media-libs/libpng:= virtual/opengles:= media-libs/waffle:=
-SLOT=0/0.0.1-r15
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e8aa0ec1b8c20f7d56acace7ade4d261
diff --git a/metadata/md5-cache/chromeos-base/glbench-0.0.1-r17 b/metadata/md5-cache/chromeos-base/glbench-0.0.1-r17
new file mode 100644
index 0000000..12e965b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/glbench-0.0.1-r17
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install setup unpack
+DEPEND=>=dev-cpp/gflags-2.0:= media-libs/libpng:= virtual/opengles:= media-libs/waffle:= x11-drivers/opengles-headers:=
+DESCRIPTION=Microbenchmark for opengl/gles
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/glbench/
+IUSE=opengl opengles cros_host cros_workon_tree_809488d2c59844b032584c7972e75eb3fe498bba
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=>=dev-cpp/gflags-2.0:= media-libs/libpng:= virtual/opengles:= media-libs/waffle:=
+SLOT=0/0.0.1-r17
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e03d976c62a06fa1ce4acf327224923e
diff --git a/metadata/md5-cache/chromeos-base/glbench-9999 b/metadata/md5-cache/chromeos-base/glbench-9999
index 84b0e23..0da9698 100644
--- a/metadata/md5-cache/chromeos-base/glbench-9999
+++ b/metadata/md5-cache/chromeos-base/glbench-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=>=dev-cpp/gflags-2.0:= media-libs/libpng:= virtual/opengles:= media-libs/waffle:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=4e570216b2125e081c9024eedcc49fb1
diff --git a/metadata/md5-cache/chromeos-base/glib-bridge-0.0.1-r175 b/metadata/md5-cache/chromeos-base/glib-bridge-0.0.1-r175
deleted file mode 100644
index ccd8308..0000000
--- a/metadata/md5-cache/chromeos-base/glib-bridge-0.0.1-r175
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/glib:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=libchrome-glib message loop bridge
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/glib-bridge
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_0477fd01ac7704e38511a9cccaa4b4c3377ba146_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_0477fd01ac7704e38511a9cccaa4b4c3377ba146_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/glib:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a24d64c525ad933157101914943945c2
diff --git a/metadata/md5-cache/chromeos-base/glib-bridge-0.0.1-r202 b/metadata/md5-cache/chromeos-base/glib-bridge-0.0.1-r202
new file mode 100644
index 0000000..d583387
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/glib-bridge-0.0.1-r202
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/glib:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=libchrome-glib message loop bridge
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/glib-bridge
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a0d78fc5cbcc8bce3d024656c530b5b8a045d633_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a0d78fc5cbcc8bce3d024656c530b5b8a045d633_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/glib:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=10dd686f4a2f77a31aa897a324e51b55
diff --git a/metadata/md5-cache/chromeos-base/glib-bridge-9999 b/metadata/md5-cache/chromeos-base/glib-bridge-9999
index 9819c8d..9bfbfb9 100644
--- a/metadata/md5-cache/chromeos-base/glib-bridge-9999
+++ b/metadata/md5-cache/chromeos-base/glib-bridge-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/glib:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-libs/glib:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=libchrome-glib message loop bridge
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/glib-bridge
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/glib:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=7b7a01bcc4f86ab8cf6285e44f35a781
diff --git a/metadata/md5-cache/chromeos-base/goldctl-2021.03.31-r1 b/metadata/md5-cache/chromeos-base/goldctl-2021.03.31-r1
new file mode 100644
index 0000000..4ff710b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/goldctl-2021.03.31-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=This command-line tool lets clients upload images to gold
+EAPI=7
+HOMEPAGE=https://skia.googlesource.com/buildbot/+/HEAD/gold-client/
+KEYWORDS=*
+LICENSE=BSD-Google
+RESTRICT=mirror
+SLOT=0
+SRC_URI=amd64? ( cipd://skia/tools/goldctl/linux-amd64:0ov3TUTdHjrpXdmomZUYhtozjUPAOWj5pFnLb_wSN3cC -> goldctl-2021.03.31-amd64.zip ) x86? ( cipd://skia/tools/goldctl/linux-386:lSVGG0WGcohimf9T2UCs35aMvQ4T8-cfZ84hZEZfrLsC -> goldctl-2021.03.31-x86.zip ) arm64? ( cipd://skia/tools/goldctl/linux-arm64:NphODeY7HYsq6sZxzXGhwKkVtuoXWQkJT0rsVuzuwsIC -> goldctl-2021.03.31-arm64.zip ) arm? ( cipd://skia/tools/goldctl/linux-armv6l:R5kIju7TxEtjEaSnw9Q0coLcVVcCeIm0p5VQM2ka00oC -> goldctl-2021.03.31-arm.zip )
+_md5_=1c1ada9e36cb38079489d55dbe7699e0
diff --git a/metadata/md5-cache/chromeos-base/goldfishd-0.0.1-r482 b/metadata/md5-cache/chromeos-base/goldfishd-0.0.1-r482
deleted file mode 100644
index 13b06f3..0000000
--- a/metadata/md5-cache/chromeos-base/goldfishd-0.0.1-r482
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Android Emulator Daemon for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/goldfishd/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_639a8c5a575a0d7908a87bf99839c62c8af18e2b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_639a8c5a575a0d7908a87bf99839c62c8af18e2b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/autotest-client >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3bf30ed845ae937964147bbaa1289131
diff --git a/metadata/md5-cache/chromeos-base/goldfishd-0.0.1-r508 b/metadata/md5-cache/chromeos-base/goldfishd-0.0.1-r508
new file mode 100644
index 0000000..1c55e45
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/goldfishd-0.0.1-r508
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Android Emulator Daemon for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/goldfishd/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4c8cf5f4cf1d65ee1fbdfee54cce3754acaa9159_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4c8cf5f4cf1d65ee1fbdfee54cce3754acaa9159_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/autotest-client >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=29734fb1636d9079af4f0bb18a43df5b
diff --git a/metadata/md5-cache/chromeos-base/goldfishd-9999 b/metadata/md5-cache/chromeos-base/goldfishd-9999
index 6490c2a..c975464 100644
--- a/metadata/md5-cache/chromeos-base/goldfishd-9999
+++ b/metadata/md5-cache/chromeos-base/goldfishd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Android Emulator Daemon for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/goldfishd/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/autotest-client >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=222b61c95175c552cbf5e8e067e5f668
diff --git a/metadata/md5-cache/chromeos-base/google-breakpad-2021.01.04.224921-r194 b/metadata/md5-cache/chromeos-base/google-breakpad-2021.01.04.224921-r194
deleted file mode 100644
index a825be8..0000000
--- a/metadata/md5-cache/chromeos-base/google-breakpad-2021.01.04.224921-r194
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=net-misc/curl:= test? ( dev-cpp/gtest:= )
-DESCRIPTION=Google crash reporting
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/breakpad/breakpad
-IUSE=-alltests cros_host test cros_host cros_workon_tree_184089dceb0b42d62ecd2f855f5631f6e6382c75_5df994fdcdfab0b9b21d11fa25545442eae001e5 cros_arm64 cros_host cros_workon_tree_184089dceb0b42d62ecd2f855f5631f6e6382c75_5df994fdcdfab0b9b21d11fa25545442eae001e5 cros_i686 cros_host cros_workon_tree_184089dceb0b42d62ecd2f855f5631f6e6382c75_5df994fdcdfab0b9b21d11fa25545442eae001e5
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=net-misc/curl:=
-SLOT=0/2021.01.04.224921-r194
-_eclasses_=cros-arm64	99e3147108567dd0bb2989d51049e8c0	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-i686	bc478c2bc9a572852d5b6d779f140dda	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=33f5f1b9b083a0c7eef65fd60851b6b0
diff --git a/metadata/md5-cache/chromeos-base/google-breakpad-2021.06.11.172551-r204 b/metadata/md5-cache/chromeos-base/google-breakpad-2021.06.11.172551-r204
new file mode 100644
index 0000000..a4d94a1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/google-breakpad-2021.06.11.172551-r204
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=net-misc/curl:= test? ( dev-cpp/gtest:= )
+DESCRIPTION=Google crash reporting
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/breakpad/breakpad
+IUSE=-alltests cros_host test cros_host cros_workon_tree_e6ad581adc61b514dfbd11029be8b43a1c0f52a1_c2034bc1106379848e2c8c7b68f40d13b3c09097 cros_arm64 cros_host cros_workon_tree_e6ad581adc61b514dfbd11029be8b43a1c0f52a1_c2034bc1106379848e2c8c7b68f40d13b3c09097 cros_i686 cros_host cros_workon_tree_e6ad581adc61b514dfbd11029be8b43a1c0f52a1_c2034bc1106379848e2c8c7b68f40d13b3c09097
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live live
+RDEPEND=net-misc/curl:=
+SLOT=0/2021.06.11.172551-r204
+_eclasses_=cros-arm64	99e3147108567dd0bb2989d51049e8c0	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-i686	bc478c2bc9a572852d5b6d779f140dda	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e5a55f0ba3b3a7a18b90985b350dddb5
diff --git a/metadata/md5-cache/chromeos-base/google-breakpad-9999 b/metadata/md5-cache/chromeos-base/google-breakpad-9999
index b3cd015..69badc5 100644
--- a/metadata/md5-cache/chromeos-base/google-breakpad-9999
+++ b/metadata/md5-cache/chromeos-base/google-breakpad-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live live live
 RDEPEND=net-misc/curl:=
 SLOT=0/9999
-_eclasses_=cros-arm64	99e3147108567dd0bb2989d51049e8c0	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-i686	bc478c2bc9a572852d5b6d779f140dda	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d8e090eba7ae6576f0ad57004501f521
+_eclasses_=cros-arm64	99e3147108567dd0bb2989d51049e8c0	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-i686	bc478c2bc9a572852d5b6d779f140dda	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4b6f8a0ae715dcd8892c3b618b41404c
diff --git a/metadata/md5-cache/chromeos-base/graphics-utils-go-0.0.1-r85 b/metadata/md5-cache/chromeos-base/graphics-utils-go-0.0.1-r85
deleted file mode 100644
index 0d1b985..0000000
--- a/metadata/md5-cache/chromeos-base/graphics-utils-go-0.0.1-r85
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup test unpack
-DEPEND=chromeos-base/cros-config-api dev-go/crypto dev-go/fogleman-gg dev-go/go-image dev-go/gofpdf dev-go/golang-freetype dev-go/gonum-plot dev-go/protobuf dev-go/readline dev-go/svgo dev-lang/go
-DESCRIPTION=Portable graphics utils written in go
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/graphics/
-IUSE=cros_host cros_workon_tree_3ef0e7f190df0b27d79a06832b6ec37e064166a6
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/cros-config-api dev-go/crypto dev-go/fogleman-gg dev-go/go-image dev-go/gofpdf dev-go/golang-freetype dev-go/gonum-plot dev-go/protobuf dev-go/readline dev-go/svgo
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dd9e76bd02f4c4fd7166dac4ab51aca5
diff --git a/metadata/md5-cache/chromeos-base/graphics-utils-go-0.0.1-r92 b/metadata/md5-cache/chromeos-base/graphics-utils-go-0.0.1-r92
new file mode 100644
index 0000000..3826d91
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/graphics-utils-go-0.0.1-r92
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup test unpack
+DEPEND=chromeos-base/cros-config-api dev-go/crypto dev-go/fogleman-gg dev-go/go-image dev-go/gofpdf dev-go/golang-freetype dev-go/gonum-plot dev-go/protobuf dev-go/readline dev-go/svgo dev-lang/go
+DESCRIPTION=Portable graphics utils written in go
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/graphics/
+IUSE=cros_host cros_workon_tree_ee2a831469eb4e62c271b95b55a9b8eaa7706529
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/cros-config-api dev-go/crypto dev-go/fogleman-gg dev-go/go-image dev-go/gofpdf dev-go/golang-freetype dev-go/gonum-plot dev-go/protobuf dev-go/readline dev-go/svgo
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ab4bb17a1f4ebe1444c42469e8e95aec
diff --git a/metadata/md5-cache/chromeos-base/graphics-utils-go-9999 b/metadata/md5-cache/chromeos-base/graphics-utils-go-9999
index a33f9ac..054734b 100644
--- a/metadata/md5-cache/chromeos-base/graphics-utils-go-9999
+++ b/metadata/md5-cache/chromeos-base/graphics-utils-go-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/cros-config-api dev-go/crypto dev-go/fogleman-gg dev-go/go-image dev-go/gofpdf dev-go/golang-freetype dev-go/gonum-plot dev-go/protobuf dev-go/readline dev-go/svgo
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=18ec05243293b2e7db9273538c5d0a6d
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0d690007a19103eb8d1d83491575ffb8
diff --git a/metadata/md5-cache/chromeos-base/graphics-utils-python-0.0.1-r5 b/metadata/md5-cache/chromeos-base/graphics-utils-python-0.0.1-r5
index 7bdf95b..9bec7d8 100644
--- a/metadata/md5-cache/chromeos-base/graphics-utils-python-0.0.1-r5
+++ b/metadata/md5-cache/chromeos-base/graphics-utils-python-0.0.1-r5
@@ -11,5 +11,5 @@
 RDEPEND=chromeos-base/cros-config-api python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=923564c88c8ca72c6e4f9966aa036deb
diff --git a/metadata/md5-cache/chromeos-base/graphics-utils-python-9999 b/metadata/md5-cache/chromeos-base/graphics-utils-python-9999
index 1b398b1..25c9d7e 100644
--- a/metadata/md5-cache/chromeos-base/graphics-utils-python-9999
+++ b/metadata/md5-cache/chromeos-base/graphics-utils-python-9999
@@ -11,5 +11,5 @@
 RDEPEND=chromeos-base/cros-config-api python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=947b715d84c540614e15bf79c6b09923
diff --git a/metadata/md5-cache/chromeos-base/graphyte-0.0.1-r39 b/metadata/md5-cache/chromeos-base/graphyte-0.0.1-r39
index 44edf9d..c6af3ab1 100644
--- a/metadata/md5-cache/chromeos-base/graphyte-0.0.1-r39
+++ b/metadata/md5-cache/chromeos-base/graphyte-0.0.1-r39
@@ -10,5 +10,5 @@
 RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 )
 SLOT=0/0.0.1-r39
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=786a12b751cd39368137a4e6db9735be
diff --git a/metadata/md5-cache/chromeos-base/graphyte-9999 b/metadata/md5-cache/chromeos-base/graphyte-9999
index 48bc2ba..232905d 100644
--- a/metadata/md5-cache/chromeos-base/graphyte-9999
+++ b/metadata/md5-cache/chromeos-base/graphyte-9999
@@ -10,5 +10,5 @@
 RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=53d99aad1ff2bf1dc8b3946b93fb8755
diff --git a/metadata/md5-cache/chromeos-base/hammerd-0.0.1-r1030 b/metadata/md5-cache/chromeos-base/hammerd-0.0.1-r1030
new file mode 100644
index 0000000..bb8b349
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hammerd-0.0.1-r1030
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/ec-utils:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= dev-libs/openssl:0= sys-apps/flashmap:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=A daemon to update EC firmware of hammer, the base of the detachable.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hammerd/
+IUSE=-hammerd_api fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_34e232daea866bc143a645ad413e0abb368929ee_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_34e232daea866bc143a645ad413e0abb368929ee_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/ec-utils:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= dev-libs/openssl:0= sys-apps/flashmap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r1030
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=970629107418fb62337f92d4ee726dc1
diff --git a/metadata/md5-cache/chromeos-base/hammerd-0.0.1-r995 b/metadata/md5-cache/chromeos-base/hammerd-0.0.1-r995
deleted file mode 100644
index 8f034ac..0000000
--- a/metadata/md5-cache/chromeos-base/hammerd-0.0.1-r995
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/ec-utils:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= dev-libs/openssl:0= sys-apps/flashmap:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=A daemon to update EC firmware of hammer, the base of the detachable.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hammerd/
-IUSE=-hammerd_api fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4b29e9b6cad8bdca14a0c7b30b204bffcee041c7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4b29e9b6cad8bdca14a0c7b30b204bffcee041c7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/ec-utils:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= dev-libs/openssl:0= sys-apps/flashmap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r995
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=1f50ba1cdbee1a0875227f236b5bd699
diff --git a/metadata/md5-cache/chromeos-base/hammerd-9999 b/metadata/md5-cache/chromeos-base/hammerd-9999
index 4dc2519..c7bbf77 100644
--- a/metadata/md5-cache/chromeos-base/hammerd-9999
+++ b/metadata/md5-cache/chromeos-base/hammerd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/ec-utils:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= dev-libs/openssl:0= sys-apps/flashmap:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/ec-utils:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= dev-libs/openssl:0= sys-apps/flashmap:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=A daemon to update EC firmware of hammer, the base of the detachable.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hammerd/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/ec-utils:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= dev-libs/openssl:0= sys-apps/flashmap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=189bffff796998c9b10258b3d5cffc07
diff --git a/metadata/md5-cache/chromeos-base/hammerd-test-utils-0.0.1-r533 b/metadata/md5-cache/chromeos-base/hammerd-test-utils-0.0.1-r533
deleted file mode 100644
index ec1ea8a..0000000
--- a/metadata/md5-cache/chromeos-base/hammerd-test-utils-0.0.1-r533
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-vcs/git dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=chromeos-base/hammerd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Python wrapper of hammerd API and some python utility scripts.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hammerd/
-IUSE=+hammerd_api cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4b29e9b6cad8bdca14a0c7b30b204bffcee041c7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4b29e9b6cad8bdca14a0c7b30b204bffcee041c7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/hammerd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
-SLOT=0/0.0.1-r533
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dfc7c60e2fe88b1c217d9120b0343997
diff --git a/metadata/md5-cache/chromeos-base/hammerd-test-utils-0.0.1-r568 b/metadata/md5-cache/chromeos-base/hammerd-test-utils-0.0.1-r568
new file mode 100644
index 0000000..5179022
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hammerd-test-utils-0.0.1-r568
@@ -0,0 +1,15 @@
+BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-vcs/git dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=chromeos-base/hammerd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Python wrapper of hammerd API and some python utility scripts.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hammerd/
+IUSE=+hammerd_api cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_34e232daea866bc143a645ad413e0abb368929ee_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_34e232daea866bc143a645ad413e0abb368929ee_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/hammerd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
+SLOT=0/0.0.1-r568
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f5c8f7bc7a38bd9d4c20cbbbdad51820
diff --git a/metadata/md5-cache/chromeos-base/hammerd-test-utils-9999 b/metadata/md5-cache/chromeos-base/hammerd-test-utils-9999
index 3eded44..1d1004e 100644
--- a/metadata/md5-cache/chromeos-base/hammerd-test-utils-9999
+++ b/metadata/md5-cache/chromeos-base/hammerd-test-utils-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-vcs/git dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=chromeos-base/hammerd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/hammerd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Python wrapper of hammerd API and some python utility scripts.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hammerd/
@@ -11,5 +11,5 @@
 RDEPEND=chromeos-base/hammerd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=8b1cac82fbdb4e1f7489e8294aa1f8c8
diff --git a/metadata/md5-cache/chromeos-base/hardware_verifier-0.0.1-r209 b/metadata/md5-cache/chromeos-base/hardware_verifier-0.0.1-r209
deleted file mode 100644
index 9b3b285..0000000
--- a/metadata/md5-cache/chromeos-base/hardware_verifier-0.0.1-r209
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/system_api:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Hardware Verifier Tool/Lib for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hardware_verifier/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_580e5f512f707afbf93a05e1bfc01b7413e8a60f_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_580e5f512f707afbf93a05e1bfc01b7413e8a60f_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r209
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=d6b81090a9ee76458a6a1335445b4626
diff --git a/metadata/md5-cache/chromeos-base/hardware_verifier-0.0.1-r282 b/metadata/md5-cache/chromeos-base/hardware_verifier-0.0.1-r282
new file mode 100644
index 0000000..99842fe
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hardware_verifier-0.0.1-r282
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/system_api:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Hardware Verifier Tool/Lib for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hardware_verifier/
+IUSE=generated_cros_config unibuild cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_55818261ee7cf7ee7aaa319bfc67f186c8143b31_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_55818261ee7cf7ee7aaa319bfc67f186c8143b31_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r282
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=247764ac663eea3c28e83a8346fe06ac
diff --git a/metadata/md5-cache/chromeos-base/hardware_verifier-9999 b/metadata/md5-cache/chromeos-base/hardware_verifier-9999
index 63c04fd..cae4e01 100644
--- a/metadata/md5-cache/chromeos-base/hardware_verifier-9999
+++ b/metadata/md5-cache/chromeos-base/hardware_verifier-9999
@@ -1,14 +1,14 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/system_api:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/system_api:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Hardware Verifier Tool/Lib for Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hardware_verifier/
-IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=generated_cros_config unibuild cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=8cfe42ae0da1341ee166be3a8e5824f5
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=fc0efc9671622b8be9937af0b761e51d
diff --git a/metadata/md5-cache/chromeos-base/hardware_verifier_proto-0.0.1-r110 b/metadata/md5-cache/chromeos-base/hardware_verifier_proto-0.0.1-r110
deleted file mode 100644
index c37421f..0000000
--- a/metadata/md5-cache/chromeos-base/hardware_verifier_proto-0.0.1-r110
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/system_api:= chromeos-base/vboot_reference:= dev-go/protobuf dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Hardware Verifier go proto for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hardware_verifier/proto
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_580e5f512f707afbf93a05e1bfc01b7413e8a60f_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_580e5f512f707afbf93a05e1bfc01b7413e8a60f_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r110
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cad86ede10b49774f727c27df4624c25
diff --git a/metadata/md5-cache/chromeos-base/hardware_verifier_proto-0.0.1-r182 b/metadata/md5-cache/chromeos-base/hardware_verifier_proto-0.0.1-r182
new file mode 100644
index 0000000..76ed2fa
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hardware_verifier_proto-0.0.1-r182
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/system_api:= chromeos-base/vboot_reference:= dev-go/protobuf dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Hardware Verifier go proto for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hardware_verifier/proto
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_55818261ee7cf7ee7aaa319bfc67f186c8143b31_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_55818261ee7cf7ee7aaa319bfc67f186c8143b31_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r182
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3491753d5a00ab3ec30e92daeab7223d
diff --git a/metadata/md5-cache/chromeos-base/hardware_verifier_proto-9999 b/metadata/md5-cache/chromeos-base/hardware_verifier_proto-9999
index da8ca12..37764d1 100644
--- a/metadata/md5-cache/chromeos-base/hardware_verifier_proto-9999
+++ b/metadata/md5-cache/chromeos-base/hardware_verifier_proto-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/system_api:= chromeos-base/vboot_reference:= dev-go/protobuf dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/system_api:= chromeos-base/vboot_reference:= dev-go/protobuf dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Hardware Verifier go proto for Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hardware_verifier/proto
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=58b23fea9b583dd4814e9b7eef7c9508
diff --git a/metadata/md5-cache/chromeos-base/hps-tool-0.0.1-r49 b/metadata/md5-cache/chromeos-base/hps-tool-0.0.1-r49
new file mode 100644
index 0000000..cff0cfd
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hps-tool-0.0.1-r49
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/libusb:= dev-embedded/libftdi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=HPS utilities and tool
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/main/hps
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_bd22f6fa6d8ddce914d34c02064afe2f9e6abaf3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_bd22f6fa6d8ddce914d34c02064afe2f9e6abaf3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/libusb:= dev-embedded/libftdi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b8d18ae43ec18ecd9d091ef034c10d52
diff --git a/metadata/md5-cache/chromeos-base/hps-tool-9999 b/metadata/md5-cache/chromeos-base/hps-tool-9999
new file mode 100644
index 0000000..e5fc091
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hps-tool-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/libusb:= dev-embedded/libftdi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=HPS utilities and tool
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/main/hps
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/libusb:= dev-embedded/libftdi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=961c98d2b4edc5bfeea23c76f5b9e2b2
diff --git a/metadata/md5-cache/chromeos-base/hpsd-0.0.1-r37 b/metadata/md5-cache/chromeos-base/hpsd-0.0.1-r37
new file mode 100644
index 0000000..ca3087f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hpsd-0.0.1-r37
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/system_api:= dev-embedded/libftdi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Chrome OS HPS daemon.
+EAPI=7
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_bd22f6fa6d8ddce914d34c02064afe2f9e6abaf3_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_bd22f6fa6d8ddce914d34c02064afe2f9e6abaf3_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r37
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=0e3dcaa482616c7f6e0c2e74b91b18b0
diff --git a/metadata/md5-cache/chromeos-base/hpsd-9999 b/metadata/md5-cache/chromeos-base/hpsd-9999
new file mode 100644
index 0000000..bca8189
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hpsd-9999
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/system_api:= dev-embedded/libftdi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Chrome OS HPS daemon.
+EAPI=7
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=c094231c934a70f3112537a469063235
diff --git a/metadata/md5-cache/chromeos-base/hwid_extractor-0.0.1-r275 b/metadata/md5-cache/chromeos-base/hwid_extractor-0.0.1-r275
new file mode 100644
index 0000000..8509e09
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hwid_extractor-0.0.1-r275
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Chrome OS HWID Extractor
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/factory/
+IUSE=cros_host cros_host cros_workon_tree_787e61f61f8f834c455b1f09040b8c883b56e1bc_023c756f20b8f5566813867e074a4d444a80d343
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/vboot_reference chromeos-base/vpd dev-python/pyserial dev-util/hdctools sys-apps/flashrom
+SLOT=0/0.0.1-r275
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9fa65192b5df001887f1c053bb68a109
diff --git a/metadata/md5-cache/chromeos-base/hwid_extractor-9999 b/metadata/md5-cache/chromeos-base/hwid_extractor-9999
new file mode 100644
index 0000000..525159e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hwid_extractor-9999
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Chrome OS HWID Extractor
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/factory/
+IUSE=cros_host cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/vboot_reference chromeos-base/vpd dev-python/pyserial dev-util/hdctools sys-apps/flashrom
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ac39db6c488173d9cb07bf254e685bae
diff --git a/metadata/md5-cache/chromeos-base/hwsec-test-utils-0.0.1-r138 b/metadata/md5-cache/chromeos-base/hwsec-test-utils-0.0.1-r138
deleted file mode 100644
index 7189051..0000000
--- a/metadata/md5-cache/chromeos-base/hwsec-test-utils-0.0.1-r138
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:=[test?] ) chromeos-base/attestation:= chromeos-base/system_api:= dev-libs/openssl:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Hwsec-related test-only features. This package resides in test images only.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hwsec-test-utils/
-IUSE=test tpm tpm2 cros_host cros_workon_tree_e2d4b5c2a34733c2112e0a9a8d0a2171f90ec316_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e032004ea0f80ca4d1d9b01cebb46311ac2d8b33_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e2d4b5c2a34733c2112e0a9a8d0a2171f90ec316_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e032004ea0f80ca4d1d9b01cebb46311ac2d8b33_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-REQUIRED_USE=tpm2? ( !tpm )
-SLOT=0/0.0.1-r138
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=299cb9d0b23280c927898e6ecb0a2295
diff --git a/metadata/md5-cache/chromeos-base/hwsec-test-utils-0.0.1-r220 b/metadata/md5-cache/chromeos-base/hwsec-test-utils-0.0.1-r220
new file mode 100644
index 0000000..c29f6c9
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/hwsec-test-utils-0.0.1-r220
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:=[test?] ) chromeos-base/attestation:= chromeos-base/system_api:= dev-libs/openssl:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Hwsec-related test-only features. This package resides in test images only.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hwsec-test-utils/
+IUSE=test tpm tpm2 cros_host cros_workon_tree_8a6aa0783afea740fe52cec225aef91187cbcde6_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_13b6cac5121d40667689f2d48faddcb1bb34e1bb_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_8a6aa0783afea740fe52cec225aef91187cbcde6_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_13b6cac5121d40667689f2d48faddcb1bb34e1bb_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=tpm2? ( !tpm )
+SLOT=0/0.0.1-r220
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=338805c2ef97f7984163a378d8de0815
diff --git a/metadata/md5-cache/chromeos-base/hwsec-test-utils-9999 b/metadata/md5-cache/chromeos-base/hwsec-test-utils-9999
index 765f834..0f3d731 100644
--- a/metadata/md5-cache/chromeos-base/hwsec-test-utils-9999
+++ b/metadata/md5-cache/chromeos-base/hwsec-test-utils-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:=[test?] ) chromeos-base/attestation:= chromeos-base/system_api:= dev-libs/openssl:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/trunks:=[test?] ) chromeos-base/attestation:= chromeos-base/system_api:= dev-libs/openssl:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Hwsec-related test-only features. This package resides in test images only.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/hwsec-test-utils/
@@ -11,5 +11,5 @@
 RDEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 REQUIRED_USE=tpm2? ( !tpm )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=3ae215664ca37ce49b8976526c8cd8c5
diff --git a/metadata/md5-cache/chromeos-base/iioservice-0.0.1-r146 b/metadata/md5-cache/chromeos-base/iioservice-0.0.1-r146
new file mode 100644
index 0000000..14ba7c2
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/iioservice-0.0.1-r146
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= chromeos-base/mems_setup virtual/chromeos-ec-driver-init chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Chrome OS sensor HAL IPC util.
+EAPI=7
+IUSE=+seccomp cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_da73aae6d89c8e69c3740af612610792ce42b1a8_359903647899af99fb1bc9ba9d666b0e78fcb3a8_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_da73aae6d89c8e69c3740af612610792ce42b1a8_359903647899af99fb1bc9ba9d666b0e78fcb3a8_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= chromeos-base/mems_setup virtual/chromeos-ec-driver-init >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r146
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=0cac371775f5abe7321c2948229760f8
diff --git a/metadata/md5-cache/chromeos-base/iioservice-0.0.1-r88 b/metadata/md5-cache/chromeos-base/iioservice-0.0.1-r88
deleted file mode 100644
index 55ced14..0000000
--- a/metadata/md5-cache/chromeos-base/iioservice-0.0.1-r88
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Chrome OS sensor HAL IPC util.
-EAPI=7
-IUSE=+seccomp cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_871fd3a6dccaf2c2099f6200b55691f4ce8f07cb_fd9664c67f7b5bf90e85d620439201bab8f5ba3a_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_871fd3a6dccaf2c2099f6200b55691f4ce8f07cb_fd9664c67f7b5bf90e85d620439201bab8f5ba3a_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r88
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=6644cd0e62f32f10dc5e73cd0d48519f
diff --git a/metadata/md5-cache/chromeos-base/iioservice-9999 b/metadata/md5-cache/chromeos-base/iioservice-9999
index 636fd3c..90d8995 100644
--- a/metadata/md5-cache/chromeos-base/iioservice-9999
+++ b/metadata/md5-cache/chromeos-base/iioservice-9999
@@ -1,13 +1,13 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= chromeos-base/mems_setup virtual/chromeos-ec-driver-init chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Chrome OS sensor HAL IPC util.
 EAPI=7
 IUSE=+seccomp cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= chromeos-base/mems_setup virtual/chromeos-ec-driver-init >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=9cbf2ca8c932db1b17f3767a77bdba9d
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=ac4a30c5f37814d415d12f29dfb956d8
diff --git a/metadata/md5-cache/chromeos-base/iioservice_simpleclient-0.0.1-r33 b/metadata/md5-cache/chromeos-base/iioservice_simpleclient-0.0.1-r33
deleted file mode 100644
index d733910..0000000
--- a/metadata/md5-cache/chromeos-base/iioservice_simpleclient-0.0.1-r33
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=A simple client to test iioservice's mojo IPC for Chromium OS.
-EAPI=7
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_871fd3a6dccaf2c2099f6200b55691f4ce8f07cb_fd9664c67f7b5bf90e85d620439201bab8f5ba3a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_871fd3a6dccaf2c2099f6200b55691f4ce8f07cb_fd9664c67f7b5bf90e85d620439201bab8f5ba3a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r33
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6ae2e018050cb93c5327db24da76ab8a
diff --git a/metadata/md5-cache/chromeos-base/iioservice_simpleclient-0.0.1-r90 b/metadata/md5-cache/chromeos-base/iioservice_simpleclient-0.0.1-r90
new file mode 100644
index 0000000..19bc49f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/iioservice_simpleclient-0.0.1-r90
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=A simple client to test iioservice's mojo IPC for Chromium OS.
+EAPI=7
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_da73aae6d89c8e69c3740af612610792ce42b1a8_359903647899af99fb1bc9ba9d666b0e78fcb3a8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_da73aae6d89c8e69c3740af612610792ce42b1a8_359903647899af99fb1bc9ba9d666b0e78fcb3a8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r90
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ad2e7c77cb86c417940c8e5307748fec
diff --git a/metadata/md5-cache/chromeos-base/iioservice_simpleclient-9999 b/metadata/md5-cache/chromeos-base/iioservice_simpleclient-9999
index 14ad129..1f77aa9 100644
--- a/metadata/md5-cache/chromeos-base/iioservice_simpleclient-9999
+++ b/metadata/md5-cache/chromeos-base/iioservice_simpleclient-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=A simple client to test iioservice's mojo IPC for Chromium OS.
 EAPI=7
 IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libiioservice_ipc:= chromeos-base/libmems:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=7c8f404d4aba5b1e41d98f571c682299
diff --git a/metadata/md5-cache/chromeos-base/imageloader-0.0.1-r1560 b/metadata/md5-cache/chromeos-base/imageloader-0.0.1-r1560
deleted file mode 100644
index 648a729..0000000
--- a/metadata/md5-cache/chromeos-base/imageloader-0.0.1-r1560
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=dev-libs/openssl:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-fs/lvm2:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Allow mounting verified utility images
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/imageloader/
-IUSE=fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_a69ccb0af9f1534326c864d2e43e8021d0a62245_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_a69ccb0af9f1534326c864d2e43e8021d0a62245_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/openssl:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-fs/lvm2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r1560
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=15d19ca73b199e84cdb7d405cd984d93
diff --git a/metadata/md5-cache/chromeos-base/imageloader-0.0.1-r1604 b/metadata/md5-cache/chromeos-base/imageloader-0.0.1-r1604
new file mode 100644
index 0000000..8b6cbce
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/imageloader-0.0.1-r1604
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/vboot_reference:= dev-libs/openssl:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-fs/lvm2:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Allow mounting verified utility images
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/imageloader/
+IUSE=fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8742508828a5be4d730c2310952b9abe1398d014_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8742508828a5be4d730c2310952b9abe1398d014_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/vboot_reference:= dev-libs/openssl:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-fs/lvm2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r1604
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=6807d2a124bba9d77f658b355941209c
diff --git a/metadata/md5-cache/chromeos-base/imageloader-9999 b/metadata/md5-cache/chromeos-base/imageloader-9999
index 03abe0b..a91b055 100644
--- a/metadata/md5-cache/chromeos-base/imageloader-9999
+++ b/metadata/md5-cache/chromeos-base/imageloader-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=dev-libs/openssl:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-fs/lvm2:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/vboot_reference:= dev-libs/openssl:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-fs/lvm2:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Allow mounting verified utility images
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/imageloader/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=dev-libs/openssl:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-fs/lvm2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=chromeos-base/vboot_reference:= dev-libs/openssl:= dev-libs/protobuf:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) sys-fs/lvm2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=0e43c263ced4d8c685dd76f0274e184d
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=fd48aac8a5a94eb0105cb9bd78318b85
diff --git a/metadata/md5-cache/chromeos-base/imageloader-client-0.0.1-r602 b/metadata/md5-cache/chromeos-base/imageloader-client-0.0.1-r602
deleted file mode 100644
index b230040..0000000
--- a/metadata/md5-cache/chromeos-base/imageloader-client-0.0.1-r602
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=ImageLoader DBus client library for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/imageloader/
-IUSE=cros_host cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_a69ccb0af9f1534326c864d2e43e8021d0a62245_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_a69ccb0af9f1534326c864d2e43e8021d0a62245_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/imageloader >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r602
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d42045f492f91df946336d91b8e54e0d
diff --git a/metadata/md5-cache/chromeos-base/imageloader-client-0.0.1-r646 b/metadata/md5-cache/chromeos-base/imageloader-client-0.0.1-r646
new file mode 100644
index 0000000..aa3ab4d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/imageloader-client-0.0.1-r646
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=ImageLoader DBus client library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/imageloader/
+IUSE=cros_host cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8742508828a5be4d730c2310952b9abe1398d014_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8742508828a5be4d730c2310952b9abe1398d014_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/imageloader >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r646
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d74a03bed4d7ade8f801eee06d9e5e12
diff --git a/metadata/md5-cache/chromeos-base/imageloader-client-9999 b/metadata/md5-cache/chromeos-base/imageloader-client-9999
index 5979be8..38d5ba7 100644
--- a/metadata/md5-cache/chromeos-base/imageloader-client-9999
+++ b/metadata/md5-cache/chromeos-base/imageloader-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=ImageLoader DBus client library for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/imageloader/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/imageloader >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=5079728e20c3b68891c8366a8d884816
diff --git a/metadata/md5-cache/chromeos-base/inputcontrol-0.0.1-r115 b/metadata/md5-cache/chromeos-base/inputcontrol-0.0.1-r115
index a828d6b..da0f5e4 100644
--- a/metadata/md5-cache/chromeos-base/inputcontrol-0.0.1-r115
+++ b/metadata/md5-cache/chromeos-base/inputcontrol-0.0.1-r115
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=app-arch/gzip
 SLOT=0/0.0.1-r115
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=4caed6c4cc2c8992a9051f4e0fadac80
diff --git a/metadata/md5-cache/chromeos-base/inputcontrol-9999 b/metadata/md5-cache/chromeos-base/inputcontrol-9999
index 22f0e6d..a67f540 100644
--- a/metadata/md5-cache/chromeos-base/inputcontrol-9999
+++ b/metadata/md5-cache/chromeos-base/inputcontrol-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=app-arch/gzip
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f865bc34cdc2565e1ab0b85741cebf9e
diff --git a/metadata/md5-cache/chromeos-base/intel-gnalib-0.0.2 b/metadata/md5-cache/chromeos-base/intel-gnalib-0.0.2
new file mode 100644
index 0000000..e5c913b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/intel-gnalib-0.0.2
@@ -0,0 +1,12 @@
+BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6
+DEFINED_PHASES=compile configure install prepare test unpack
+DESCRIPTION=Intel GNA library for Gemini Lake and Tiger Lake
+EAPI=7
+HOMEPAGE=https://github.com/intel/gna
+IUSE=+clang
+KEYWORDS=-* amd64
+LICENSE=LGPL-2.1
+SLOT=0
+SRC_URI=https://github.com/intel/gna/archive/6e42dc7a53fff9d7e644ea48dac70c841c72a14b.tar.gz -> intel-gna-6e42dc7a.tar.gz
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	unpacker	04385b0f181c42fa9c18ec0e31729d1f	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=133506db9f0fdd532f139acecf08b8b3
diff --git a/metadata/md5-cache/chromeos-base/intel-gnalib-0.0.2-r2 b/metadata/md5-cache/chromeos-base/intel-gnalib-0.0.2-r2
new file mode 100644
index 0000000..e5c913b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/intel-gnalib-0.0.2-r2
@@ -0,0 +1,12 @@
+BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6
+DEFINED_PHASES=compile configure install prepare test unpack
+DESCRIPTION=Intel GNA library for Gemini Lake and Tiger Lake
+EAPI=7
+HOMEPAGE=https://github.com/intel/gna
+IUSE=+clang
+KEYWORDS=-* amd64
+LICENSE=LGPL-2.1
+SLOT=0
+SRC_URI=https://github.com/intel/gna/archive/6e42dc7a53fff9d7e644ea48dac70c841c72a14b.tar.gz -> intel-gna-6e42dc7a.tar.gz
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	unpacker	04385b0f181c42fa9c18ec0e31729d1f	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=133506db9f0fdd532f139acecf08b8b3
diff --git a/metadata/md5-cache/chromeos-base/intel-nnhal-0.0.1-r57 b/metadata/md5-cache/chromeos-base/intel-nnhal-0.0.1-r57
new file mode 100644
index 0000000..36711ab
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/intel-nnhal-0.0.1-r57
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=chromeos-base/aosp-frameworks-ml-nn chromeos-base/intel-openvino chromeos-base/intel-gnalib >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Intel NNAPI HAL
+EAPI=7
+HOMEPAGE=https://github.com/intel/nn-hal
+IUSE=vendor-nnhal cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=-* amd64
+LICENSE=BSD-Google
+RDEPEND=chromeos-base/aosp-frameworks-ml-nn chromeos-base/intel-openvino chromeos-base/intel-gnalib >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RESTRICT=strip
+SLOT=0/0.0.1-r57
+SRC_URI=https://github.com/intel/nn-hal/archive/1fed40d8b7cc73f47d19c488d52ba2d9c4ef6925.tar.gz -> intel-nn-hal-1fed40d8.tar.gz https://github.com/openvinotoolkit/openvino/archive/a4a1bff1cc5a6b22f806adac8845d2806772dacd.tar.xz -> intel-openvino-a4a1bff1.tar.xz
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	unpacker	04385b0f181c42fa9c18ec0e31729d1f
+_md5_=c9f50d77481092c27c5d387589bad23d
diff --git a/metadata/md5-cache/chromeos-base/intel-nnhal-9999 b/metadata/md5-cache/chromeos-base/intel-nnhal-9999
new file mode 100644
index 0000000..de0c83d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/intel-nnhal-9999
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=chromeos-base/aosp-frameworks-ml-nn chromeos-base/intel-openvino chromeos-base/intel-gnalib >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Intel NNAPI HAL
+EAPI=7
+HOMEPAGE=https://github.com/intel/nn-hal
+IUSE=vendor-nnhal cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=-* ~amd64
+LICENSE=BSD-Google
+RDEPEND=chromeos-base/aosp-frameworks-ml-nn chromeos-base/intel-openvino chromeos-base/intel-gnalib >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RESTRICT=strip
+SLOT=0/9999
+SRC_URI=https://github.com/intel/nn-hal/archive/1fed40d8b7cc73f47d19c488d52ba2d9c4ef6925.tar.gz -> intel-nn-hal-1fed40d8.tar.gz https://github.com/openvinotoolkit/openvino/archive/a4a1bff1cc5a6b22f806adac8845d2806772dacd.tar.xz -> intel-openvino-a4a1bff1.tar.xz
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	unpacker	04385b0f181c42fa9c18ec0e31729d1f
+_md5_=f67c9658c510db0c2937bdb0cc658f71
diff --git a/metadata/md5-cache/chromeos-base/intel-openvino-0.0.1 b/metadata/md5-cache/chromeos-base/intel-openvino-0.0.1
new file mode 100644
index 0000000..86e11bd
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/intel-openvino-0.0.1
@@ -0,0 +1,14 @@
+BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6
+DEFINED_PHASES=compile configure install prepare test unpack
+DEPEND=chromeos-base/intel-gnalib
+DESCRIPTION=Intel OpenVino Toolkit
+EAPI=7
+HOMEPAGE=https://github.com/openvinotoolkit/openvino
+IUSE=+clang
+KEYWORDS=-* amd64
+LICENSE=Apache-2.0
+RDEPEND=chromeos-base/intel-gnalib
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/intel-openvino-a4a1bff1.tar.xz
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	unpacker	04385b0f181c42fa9c18ec0e31729d1f	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=27eed9f3965b06dff4f5bb58a978d2b4
diff --git a/metadata/md5-cache/chromeos-base/intel-openvino-0.0.1-r6 b/metadata/md5-cache/chromeos-base/intel-openvino-0.0.1-r6
new file mode 100644
index 0000000..86e11bd
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/intel-openvino-0.0.1-r6
@@ -0,0 +1,14 @@
+BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6
+DEFINED_PHASES=compile configure install prepare test unpack
+DEPEND=chromeos-base/intel-gnalib
+DESCRIPTION=Intel OpenVino Toolkit
+EAPI=7
+HOMEPAGE=https://github.com/openvinotoolkit/openvino
+IUSE=+clang
+KEYWORDS=-* amd64
+LICENSE=Apache-2.0
+RDEPEND=chromeos-base/intel-gnalib
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/intel-openvino-a4a1bff1.tar.xz
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	unpacker	04385b0f181c42fa9c18ec0e31729d1f	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=27eed9f3965b06dff4f5bb58a978d2b4
diff --git a/metadata/md5-cache/chromeos-base/ippusb_bridge-0.0.1-r13 b/metadata/md5-cache/chromeos-base/ippusb_bridge-0.0.1-r13
deleted file mode 100644
index 5db7082..0000000
--- a/metadata/md5-cache/chromeos-base/ippusb_bridge-0.0.1-r13
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=virtual/libusb:1= >=dev-rust/chunked_transfer-1:= <dev-rust/chunked_transfer-2 >=dev-rust/getopts-0.2.18:= <dev-rust/getopts-0.3 >=dev-rust/httparse-1.3.4:= <dev-rust/httparse-1.4 >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3 >=dev-rust/rusb-0.6.2:= <dev-rust/rusb-0.7 dev-rust/sync:= dev-rust/sys_util:= >=dev-rust/tiny_http-0.7:= <dev-rust/tiny_http-0.8 >=virtual/rust-1.39.0:=
-DESCRIPTION=A proxy for HTTP traffic over an IPP-USB printer connection
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ippusb_bridge/
-IUSE=cros_host cros_workon_tree_47e1af9ab53267f4ae483933f7acd7f1f0c30a53 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=virtual/libusb:1=
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3ed35e770cf46557e54c71e6ddbde4ba
diff --git a/metadata/md5-cache/chromeos-base/ippusb_bridge-0.0.1-r34 b/metadata/md5-cache/chromeos-base/ippusb_bridge-0.0.1-r34
new file mode 100644
index 0000000..4a2ec75
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/ippusb_bridge-0.0.1-r34
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=virtual/libusb:1= >=dev-rust/chunked_transfer-1:= <dev-rust/chunked_transfer-2 >=dev-rust/getopts-0.2.18:= <dev-rust/getopts-0.3 >=dev-rust/httparse-1.3.4:= <dev-rust/httparse-1.4 >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3 >=dev-rust/rusb-0.6.2:= <dev-rust/rusb-0.7 dev-rust/sync:= dev-rust/sys_util:= >=dev-rust/tiny_http-0.8:= <dev-rust/tiny_http-0.9 >=virtual/rust-1.39.0:= sys-apps/baselayout
+DESCRIPTION=A proxy for HTTP traffic over an IPP-USB printer connection
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ippusb_bridge/
+IUSE=cros_host cros_workon_tree_197db4a2e529e4b31180ffea01f85f4905be77e7 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=virtual/libusb:1= !chromeos-base/ippusb_manager sys-apps/baselayout
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=eaafbd7d4ed068ff26f4d0dc302fbe34
diff --git a/metadata/md5-cache/chromeos-base/ippusb_bridge-9999 b/metadata/md5-cache/chromeos-base/ippusb_bridge-9999
index 5b54b89..f3e68e0 100644
--- a/metadata/md5-cache/chromeos-base/ippusb_bridge-9999
+++ b/metadata/md5-cache/chromeos-base/ippusb_bridge-9999
@@ -1,15 +1,15 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=virtual/libusb:1= >=dev-rust/chunked_transfer-1:= <dev-rust/chunked_transfer-2 >=dev-rust/getopts-0.2.18:= <dev-rust/getopts-0.3 >=dev-rust/httparse-1.3.4:= <dev-rust/httparse-1.4 >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3 >=dev-rust/rusb-0.6.2:= <dev-rust/rusb-0.7 dev-rust/sync:= dev-rust/sys_util:= >=dev-rust/tiny_http-0.7:= <dev-rust/tiny_http-0.8 >=virtual/rust-1.39.0:=
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=virtual/libusb:1= >=dev-rust/chunked_transfer-1:= <dev-rust/chunked_transfer-2 >=dev-rust/getopts-0.2.18:= <dev-rust/getopts-0.3 >=dev-rust/httparse-1.3.4:= <dev-rust/httparse-1.4 >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3 >=dev-rust/rusb-0.6.2:= <dev-rust/rusb-0.7 dev-rust/sync:= dev-rust/sys_util:= >=dev-rust/tiny_http-0.8:= <dev-rust/tiny_http-0.9 >=virtual/rust-1.39.0:= sys-apps/baselayout
 DESCRIPTION=A proxy for HTTP traffic over an IPP-USB printer connection
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ippusb_bridge/
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=virtual/libusb:1=
+RDEPEND=virtual/libusb:1= !chromeos-base/ippusb_manager sys-apps/baselayout
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=503960f8309270dc86d265550f7d443a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=377eeef21f6e2a21847e61aedfb2549e
diff --git a/metadata/md5-cache/chromeos-base/ippusb_manager-0.0.1-r343 b/metadata/md5-cache/chromeos-base/ippusb_manager-0.0.1-r343
deleted file mode 100644
index 69c4345..0000000
--- a/metadata/md5-cache/chromeos-base/ippusb_manager-0.0.1-r343
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/minijail:= virtual/libusb:1= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Service which manages communication between ippusb printers and cups.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ippusb_manager/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3dbd85f43fb55bdce2d3c7c6303e360189727eee_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_3dbd85f43fb55bdce2d3c7c6303e360189727eee_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/minijail:= virtual/libusb:1= chromeos-base/ippusb_bridge >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r343
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=81d4103b0ee0314b454dd9ae2fba5586
diff --git a/metadata/md5-cache/chromeos-base/ippusb_manager-9999 b/metadata/md5-cache/chromeos-base/ippusb_manager-9999
deleted file mode 100644
index c8c0b4a..0000000
--- a/metadata/md5-cache/chromeos-base/ippusb_manager-9999
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/minijail:= virtual/libusb:1= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Service which manages communication between ippusb printers and cups.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ippusb_manager/
-IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/minijail:= virtual/libusb:1= chromeos-base/ippusb_bridge >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=19365ad87128853b4ee017bf2b46dbaa
diff --git a/metadata/md5-cache/chromeos-base/jabra-vold-0.0.1-r16 b/metadata/md5-cache/chromeos-base/jabra-vold-0.0.1-r16
index b6afa4c..51afeea 100644
--- a/metadata/md5-cache/chromeos-base/jabra-vold-0.0.1-r16
+++ b/metadata/md5-cache/chromeos-base/jabra-vold-0.0.1-r16
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=>=media-libs/alsa-lib-1.0:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=854b4c30aa5818cf3f08751c239229da
diff --git a/metadata/md5-cache/chromeos-base/jabra-vold-9999 b/metadata/md5-cache/chromeos-base/jabra-vold-9999
index 481f342..1b56c64 100644
--- a/metadata/md5-cache/chromeos-base/jabra-vold-9999
+++ b/metadata/md5-cache/chromeos-base/jabra-vold-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=>=media-libs/alsa-lib-1.0:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=f76df8f69888df756f57f1be3f92acb5
diff --git a/metadata/md5-cache/chromeos-base/kerberos-0.0.1-r280 b/metadata/md5-cache/chromeos-base/kerberos-0.0.1-r280
deleted file mode 100644
index c5e81ae..0000000
--- a/metadata/md5-cache/chromeos-base/kerberos-0.0.1-r280
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/protobuf:= sys-apps/dbus:= chromeos-base/protofiles:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Requests and manages Kerberos tickets to enable Kerberos SSO
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/kerberos/
-IUSE=asan fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_9bee196bdd33a6196f11fb48dea1fee7e0e331b4_5c6a69ae1a339332642149aa39da47d14efbe3fd_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_9bee196bdd33a6196f11fb48dea1fee7e0e331b4_5c6a69ae1a339332642149aa39da47d14efbe3fd_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/protobuf:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r280
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=8922698234bcfc42eacd81b76d46a531
diff --git a/metadata/md5-cache/chromeos-base/kerberos-0.0.1-r350 b/metadata/md5-cache/chromeos-base/kerberos-0.0.1-r350
new file mode 100644
index 0000000..626a044
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/kerberos-0.0.1-r350
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/protobuf:= sys-apps/dbus:= chromeos-base/protofiles:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Requests and manages Kerberos tickets to enable Kerberos SSO
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/kerberos/
+IUSE=asan fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c30e2764e005547102b3c9a8051a886d32d11f70_eae0546f4ee5132d4544af4770755eb05f60cba6_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c30e2764e005547102b3c9a8051a886d32d11f70_eae0546f4ee5132d4544af4770755eb05f60cba6_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/protobuf:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r350
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=c12e3d13100ad3b87aef4706fb3c5641
diff --git a/metadata/md5-cache/chromeos-base/kerberos-9999 b/metadata/md5-cache/chromeos-base/kerberos-9999
index d79536a..d300b82 100644
--- a/metadata/md5-cache/chromeos-base/kerberos-9999
+++ b/metadata/md5-cache/chromeos-base/kerberos-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/protobuf:= sys-apps/dbus:= chromeos-base/protofiles:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/protobuf:= sys-apps/dbus:= chromeos-base/protofiles:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Requests and manages Kerberos tickets to enable Kerberos SSO
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/kerberos/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=app-crypt/mit-krb5:= chromeos-base/libbrillo:=[asan?,fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/protobuf:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=e77522838316fbe63be996b37ef31ba6
diff --git a/metadata/md5-cache/chromeos-base/lexmark-fax-pnh-0.0.1-r43 b/metadata/md5-cache/chromeos-base/lexmark-fax-pnh-0.0.1-r43
deleted file mode 100644
index 9521524..0000000
--- a/metadata/md5-cache/chromeos-base/lexmark-fax-pnh-0.0.1-r43
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=net-print/cups >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=ChromeOS implementation of the Lexmark fax-pnh-filter
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/lexmark-fax-pnh/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_4c04b0ebf35112629d2f6bc7e478514dcb5805cb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_4c04b0ebf35112629d2f6bc7e478514dcb5805cb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=MPL-2.0
-PROPERTIES=live live
-RDEPEND=net-print/cups >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r43
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dcb70cf4ce99b95cb309b3314a3b58d0
diff --git a/metadata/md5-cache/chromeos-base/lexmark-fax-pnh-0.0.1-r69 b/metadata/md5-cache/chromeos-base/lexmark-fax-pnh-0.0.1-r69
new file mode 100644
index 0000000..6528f19
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/lexmark-fax-pnh-0.0.1-r69
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=net-print/cups >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=ChromeOS implementation of the Lexmark fax-pnh-filter
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/lexmark-fax-pnh/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_4c04b0ebf35112629d2f6bc7e478514dcb5805cb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_4c04b0ebf35112629d2f6bc7e478514dcb5805cb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=MPL-2.0
+PROPERTIES=live live
+RDEPEND=net-print/cups >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r69
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d85ca3cb8216a23170f191ade82ea7e9
diff --git a/metadata/md5-cache/chromeos-base/lexmark-fax-pnh-9999 b/metadata/md5-cache/chromeos-base/lexmark-fax-pnh-9999
index 4c2501a..ffefc3d 100644
--- a/metadata/md5-cache/chromeos-base/lexmark-fax-pnh-9999
+++ b/metadata/md5-cache/chromeos-base/lexmark-fax-pnh-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=net-print/cups >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=net-print/cups >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=ChromeOS implementation of the Lexmark fax-pnh-filter
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/lexmark-fax-pnh/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=net-print/cups >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=21367ff9c23f457a70a62c54eaacb2f2
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3a4953e818a838073997dc0685f073cd
diff --git a/metadata/md5-cache/chromeos-base/libbrillo-0.0.1-r1754 b/metadata/md5-cache/chromeos-base/libbrillo-0.0.1-r1754
deleted file mode 100644
index f1b9d23..0000000
--- a/metadata/md5-cache/chromeos-base/libbrillo-0.0.1-r1754
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/minijail:= chromeos-base/vboot_reference:= dbus? ( dev-libs/dbus-glib:= ) dev-libs/openssl:= dev-libs/protobuf:= net-libs/grpc:= net-misc/curl:= sys-apps/rootdev:= device_mapper? ( sys-fs/lvm2:= ) lvm_stateful_partition? ( sys-fs/lvm2:= ) udev? ( virtual/libudev ) >=chromeos-base/protofiles-0.0.41:= dbus? ( chromeos-base/system_api:=[fuzzer?] ) dev-libs/modp_b64:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Base library for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libbrillo/
-IUSE=cros_host +dbus +device_mapper fuzzer -lvm_stateful_partition +udev cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_0dd1d84426488d6fef8310e3fba4e6790bd5e9e1_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_0dd1d84426488d6fef8310e3fba4e6790bd5e9e1_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/minijail:= chromeos-base/vboot_reference:= dbus? ( dev-libs/dbus-glib:= ) dev-libs/openssl:= dev-libs/protobuf:= net-libs/grpc:= net-misc/curl:= sys-apps/rootdev:= device_mapper? ( sys-fs/lvm2:= ) lvm_stateful_partition? ( sys-fs/lvm2:= ) udev? ( virtual/libudev ) !cros_host? ( chromeos-base/libchromeos-use-flags ) chromeos-base/chromeos-ca-certificates !chromeos-base/libchromeos >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-SLOT=0/0.0.1-r1754
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=43907c0650fb0806ef3d229af0a31eb5
diff --git a/metadata/md5-cache/chromeos-base/libbrillo-0.0.1-r1810 b/metadata/md5-cache/chromeos-base/libbrillo-0.0.1-r1810
new file mode 100644
index 0000000..c91f624
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libbrillo-0.0.1-r1810
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/minijail:= chromeos-base/vboot_reference:= dbus? ( dev-libs/dbus-glib:= ) dev-libs/openssl:= dev-libs/protobuf:= net-libs/grpc:= net-misc/curl:= sys-apps/rootdev:= device_mapper? ( sys-fs/lvm2:=[thin] ) lvm_stateful_partition? ( sys-fs/lvm2:= ) udev? ( virtual/libudev ) >=chromeos-base/protofiles-0.0.45:= dbus? ( chromeos-base/system_api:=[fuzzer?] ) dev-libs/modp_b64:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Base library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libbrillo/
+IUSE=cros_host +dbus +device_mapper fuzzer -lvm_stateful_partition +udev cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_b2715142a8baa452d041e27303d53d2e097d3113_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_b2715142a8baa452d041e27303d53d2e097d3113_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/minijail:= chromeos-base/vboot_reference:= dbus? ( dev-libs/dbus-glib:= ) dev-libs/openssl:= dev-libs/protobuf:= net-libs/grpc:= net-misc/curl:= sys-apps/rootdev:= device_mapper? ( sys-fs/lvm2:=[thin] ) lvm_stateful_partition? ( sys-fs/lvm2:= ) udev? ( virtual/libudev ) !cros_host? ( chromeos-base/libchromeos-use-flags ) chromeos-base/chromeos-ca-certificates !chromeos-base/libchromeos >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+SLOT=0/0.0.1-r1810
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1b64f51faf7c927ed8eff6d52a286f76
diff --git a/metadata/md5-cache/chromeos-base/libbrillo-9999 b/metadata/md5-cache/chromeos-base/libbrillo-9999
index 7476057..1429ca4 100644
--- a/metadata/md5-cache/chromeos-base/libbrillo-9999
+++ b/metadata/md5-cache/chromeos-base/libbrillo-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/minijail:= chromeos-base/vboot_reference:= dbus? ( dev-libs/dbus-glib:= ) dev-libs/openssl:= dev-libs/protobuf:= net-libs/grpc:= net-misc/curl:= sys-apps/rootdev:= device_mapper? ( sys-fs/lvm2:= ) lvm_stateful_partition? ( sys-fs/lvm2:= ) udev? ( virtual/libudev ) >=chromeos-base/protofiles-0.0.41:= dbus? ( chromeos-base/system_api:=[fuzzer?] ) dev-libs/modp_b64:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/minijail:= chromeos-base/vboot_reference:= dbus? ( dev-libs/dbus-glib:= ) dev-libs/openssl:= dev-libs/protobuf:= net-libs/grpc:= net-misc/curl:= sys-apps/rootdev:= device_mapper? ( sys-fs/lvm2:=[thin] ) lvm_stateful_partition? ( sys-fs/lvm2:= ) udev? ( virtual/libudev ) >=chromeos-base/protofiles-0.0.45:= dbus? ( chromeos-base/system_api:=[fuzzer?] ) dev-libs/modp_b64:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Base library for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libbrillo/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/minijail:= chromeos-base/vboot_reference:= dbus? ( dev-libs/dbus-glib:= ) dev-libs/openssl:= dev-libs/protobuf:= net-libs/grpc:= net-misc/curl:= sys-apps/rootdev:= device_mapper? ( sys-fs/lvm2:= ) lvm_stateful_partition? ( sys-fs/lvm2:= ) udev? ( virtual/libudev ) !cros_host? ( chromeos-base/libchromeos-use-flags ) chromeos-base/chromeos-ca-certificates !chromeos-base/libchromeos >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+RDEPEND=chromeos-base/minijail:= chromeos-base/vboot_reference:= dbus? ( dev-libs/dbus-glib:= ) dev-libs/openssl:= dev-libs/protobuf:= net-libs/grpc:= net-misc/curl:= sys-apps/rootdev:= device_mapper? ( sys-fs/lvm2:=[thin] ) lvm_stateful_partition? ( sys-fs/lvm2:= ) udev? ( virtual/libudev ) !cros_host? ( chromeos-base/libchromeos-use-flags ) chromeos-base/chromeos-ca-certificates !chromeos-base/libchromeos >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=42aa68bc6d202a1bbd06d7e5952df0ee
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d19ef3c12a730c6556b725aac5a86ba5
diff --git a/metadata/md5-cache/chromeos-base/libchrome-0.0.1-r118 b/metadata/md5-cache/chromeos-base/libchrome-0.0.1-r118
deleted file mode 100644
index 0d689cc..0000000
--- a/metadata/md5-cache/chromeos-base/libchrome-0.0.1-r118
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=dev-libs/double-conversion:= dev-libs/glib:2= dev-libs/libevent:= dev-libs/modp_b64:= crypto? ( dev-libs/nss:= dev-libs/openssl:= ) dbus? ( sys-apps/dbus:= 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 dev-cpp/gtest:= cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome base/ and dbus/ libraries extracted for use on Chrome OS
-EAPI=5
-HOMEPAGE=http://dev.chromium.org/chromium-os/packages/libchrome
-IUSE=cros_host +crypto +dbus fuzzer +mojo +timers cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_2ba090802d2c1273cc7f04bf8f4c8414cdb5fde4 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_2ba090802d2c1273cc7f04bf8f4c8414cdb5fde4 compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/double-conversion:= dev-libs/glib:2= dev-libs/libevent:= dev-libs/modp_b64:= crypto? ( dev-libs/nss:= dev-libs/openssl:= ) dbus? ( sys-apps/dbus:= 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 !chromeos-base/libmojo
-REQUIRED_USE=mojo? ( crypto )
-SLOT=0/0.0.1-r118
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1ccf435f08d8693a525df380060e2848
diff --git a/metadata/md5-cache/chromeos-base/libchrome-0.0.1-r184 b/metadata/md5-cache/chromeos-base/libchrome-0.0.1-r184
new file mode 100644
index 0000000..aa65bdc
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libchrome-0.0.1-r184
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=>=chromeos-base/perfetto-13.0:= >=dev-cpp/absl-20200923-r4:= dev-libs/double-conversion:= dev-libs/glib:2= dev-libs/libevent:= dev-libs/modp_b64:= crypto? ( dev-libs/nss:= dev-libs/openssl:= ) dbus? ( sys-apps/dbus:= 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 dev-cpp/gtest:= cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome base/ and dbus/ libraries extracted for use on Chrome OS
+EAPI=5
+HOMEPAGE=http://dev.chromium.org/chromium-os/packages/libchrome
+IUSE=cros_host +crypto +dbus fuzzer +mojo +timers libchrome_b182295239 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_3673ac409de15259cda121e9bfa103473a032b99 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_3673ac409de15259cda121e9bfa103473a032b99 compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/perfetto-13.0:= >=dev-cpp/absl-20200923-r4:= dev-libs/double-conversion:= dev-libs/glib:2= dev-libs/libevent:= dev-libs/modp_b64:= crypto? ( dev-libs/nss:= dev-libs/openssl:= ) dbus? ( sys-apps/dbus:= 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 !chromeos-base/libmojo
+REQUIRED_USE=mojo? ( crypto )
+SLOT=0/0.0.1-r184
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=4ceb3e6db36c7c1844ca1e2ada7a13c3
diff --git a/metadata/md5-cache/chromeos-base/libchrome-9999 b/metadata/md5-cache/chromeos-base/libchrome-9999
index ebef9cf..901b11d 100644
--- a/metadata/md5-cache/chromeos-base/libchrome-9999
+++ b/metadata/md5-cache/chromeos-base/libchrome-9999
@@ -1,14 +1,14 @@
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=dev-libs/double-conversion:= dev-libs/glib:2= dev-libs/libevent:= dev-libs/modp_b64:= crypto? ( dev-libs/nss:= dev-libs/openssl:= ) dbus? ( sys-apps/dbus:= 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 dev-cpp/gtest:= cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/perfetto-13.0:= >=dev-cpp/absl-20200923-r4:= dev-libs/double-conversion:= dev-libs/glib:2= dev-libs/libevent:= dev-libs/modp_b64:= crypto? ( dev-libs/nss:= dev-libs/openssl:= ) dbus? ( sys-apps/dbus:= 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 dev-cpp/gtest:= cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome base/ and dbus/ libraries extracted for use on Chrome OS
 EAPI=5
 HOMEPAGE=http://dev.chromium.org/chromium-os/packages/libchrome
-IUSE=cros_host +crypto +dbus fuzzer +mojo +timers cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ compilation_database cros_host test
+IUSE=cros_host +crypto +dbus fuzzer +mojo +timers libchrome_b182295239 cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=dev-libs/double-conversion:= dev-libs/glib:2= dev-libs/libevent:= dev-libs/modp_b64:= crypto? ( dev-libs/nss:= dev-libs/openssl:= ) dbus? ( sys-apps/dbus:= 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 !chromeos-base/libmojo
+RDEPEND=>=chromeos-base/perfetto-13.0:= >=dev-cpp/absl-20200923-r4:= dev-libs/double-conversion:= dev-libs/glib:2= dev-libs/libevent:= dev-libs/modp_b64:= crypto? ( dev-libs/nss:= dev-libs/openssl:= ) dbus? ( sys-apps/dbus:= 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 !chromeos-base/libmojo
 REQUIRED_USE=mojo? ( crypto )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1c2d8c1d78b357e0b7805f402888212b
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=fa9c901b22f1bd8d9a3e341f938f7cad
diff --git a/metadata/md5-cache/chromeos-base/libchromeos-ui-0.0.1-r1779 b/metadata/md5-cache/chromeos-base/libchromeos-ui-0.0.1-r1779
deleted file mode 100644
index 94d178a..0000000
--- a/metadata/md5-cache/chromeos-base/libchromeos-ui-0.0.1-r1779
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Library used to start Chromium-based UIs
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libchromeos-ui/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_01471fe321e7be48397d556f5b9a51e4f5d243a7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_01471fe321e7be48397d556f5b9a51e4f5d243a7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/bootstat >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r1779
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f0111634f801fd363a22bf9f0c7b57f1
diff --git a/metadata/md5-cache/chromeos-base/libchromeos-ui-0.0.1-r1807 b/metadata/md5-cache/chromeos-base/libchromeos-ui-0.0.1-r1807
new file mode 100644
index 0000000..2f30f161
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libchromeos-ui-0.0.1-r1807
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Library used to start Chromium-based UIs
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libchromeos-ui/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9b0fa02babfde71d911b22f3db40b34a99639c9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9b0fa02babfde71d911b22f3db40b34a99639c9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/bootstat >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r1807
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b4995d909e9cd93e811a41faaf0d68c5
diff --git a/metadata/md5-cache/chromeos-base/libchromeos-ui-9999 b/metadata/md5-cache/chromeos-base/libchromeos-ui-9999
index 3e8632f..0457d11 100644
--- a/metadata/md5-cache/chromeos-base/libchromeos-ui-9999
+++ b/metadata/md5-cache/chromeos-base/libchromeos-ui-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Library used to start Chromium-based UIs
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libchromeos-ui/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/bootstat >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=a0d4d73bf8bfc237f9af4fea2a095ccb
diff --git a/metadata/md5-cache/chromeos-base/libchromeos-use-flags-1-r21 b/metadata/md5-cache/chromeos-base/libchromeos-use-flags-1-r21
deleted file mode 100644
index 720f0eb..0000000
--- a/metadata/md5-cache/chromeos-base/libchromeos-use-flags-1-r21
+++ /dev/null
@@ -1,11 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Text file listing USE flags for chromeos-base/libchromeos
-EAPI=7
-IUSE=allow_consumer_kiosk arc arc_adb_sideloading arc_force_2x_scaling arc_native_bridge_64bit_support_experiment arc_transition_m_to_n arc_uses_cros_video_decoder arcpp arcvm asan background_blur big_little biod borealis_host cfm_enabled_device cheets clear_fast_ink_buffer compupdates diagnostics disable_background_blur disable_cros_video_decoder disable_explicit_dma_fences disable_native_gpu_memory_buffers disable_instant_tethering disable_spectre_variant2_mitigation disable_yuv420_biplanar dlc drm_atomic edge_touch_filtering enable_heuristic_palm_detection_filter enable_neural_palm_detection_filter force_breakpad gpu_sandbox_allow_sysv_shm gpu_sandbox_failures_not_fatal gpu_sandbox_start_early houdini houdini64 kvm_guest kvm_host kvm_transition lacros legacy_keyboard legacy_power_button moblab native_gpu_memory_buffers natural_scroll_default ndk_translation ndk_translation64 neon ondevice_handwriting ondevice_handwriting_dlc oobe_skip_postlogin oobe_skip_to_login opengles passive_event_listeners pita pita-camera pita-microphone rialto scheduler_configuration_performance screenshare_sw_codec shelf-hotseat smartdim tablet_form_factor touch_centric_device touchscreen_wakeup touchview video_capture_use_gpu_memory_buffer virtio_gpu webui-tab-strip wilco cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=addcfb3132a908a70ab4f8d558e0f5e1
diff --git a/metadata/md5-cache/chromeos-base/libchromeos-use-flags-1-r28 b/metadata/md5-cache/chromeos-base/libchromeos-use-flags-1-r28
new file mode 100644
index 0000000..263440a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libchromeos-use-flags-1-r28
@@ -0,0 +1,11 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Text file listing USE flags for chromeos-base/libchromeos
+EAPI=7
+IUSE=allow_consumer_kiosk arc arc_adb_sideloading arc_force_2x_scaling arc_native_bridge_64bit_support_experiment arc_transition_m_to_n arc_uses_cros_video_decoder arcpp arcvm asan background_blur big_little biod borealis_host cfm_enabled_device cheets clear_fast_ink_buffer compupdates diagnostics disable_background_blur disable_cros_video_decoder disable_explicit_dma_fences disable_native_gpu_memory_buffers disable_instant_tethering disable_spectre_variant2_mitigation drm_atomic edge_touch_filtering enable_dsp_hotword enable_heuristic_palm_detection_filter enable_neural_palm_detection_filter force_breakpad gpu_sandbox_allow_sysv_shm gpu_sandbox_failures_not_fatal gpu_sandbox_start_early houdini houdini64 kvm_guest kvm_host kvm_transition lacros legacy_keyboard legacy_power_button moblab native_gpu_memory_buffers natural_scroll_default ndk_translation ndk_translation64 neon ondevice_document_scanner ondevice_handwriting ondevice_handwriting_dlc ondevice_speech oobe_skip_postlogin oobe_skip_to_login opengles os_install_service passive_event_listeners pita pita-camera pita-microphone rialto scheduler_configuration_performance screenshare_sw_codec set_hw_overlay_strategy_none shelf-hotseat smartdim tablet_form_factor touch_centric_device touchscreen_wakeup touchview video_capture_use_gpu_memory_buffer virtio_gpu webui-tab-strip wilco cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=53c2e21463e933a16391815e33dbfdac
diff --git a/metadata/md5-cache/chromeos-base/libchromeos-use-flags-9999 b/metadata/md5-cache/chromeos-base/libchromeos-use-flags-9999
index 67a5a4f..be96927 100644
--- a/metadata/md5-cache/chromeos-base/libchromeos-use-flags-9999
+++ b/metadata/md5-cache/chromeos-base/libchromeos-use-flags-9999
@@ -2,10 +2,10 @@
 DEFINED_PHASES=info install setup unpack
 DESCRIPTION=Text file listing USE flags for chromeos-base/libchromeos
 EAPI=7
-IUSE=allow_consumer_kiosk arc arc_adb_sideloading arc_force_2x_scaling arc_native_bridge_64bit_support_experiment arc_transition_m_to_n arc_uses_cros_video_decoder arcpp arcvm asan background_blur big_little biod borealis_host cfm_enabled_device cheets clear_fast_ink_buffer compupdates diagnostics disable_background_blur disable_cros_video_decoder disable_explicit_dma_fences disable_native_gpu_memory_buffers disable_instant_tethering disable_spectre_variant2_mitigation disable_yuv420_biplanar dlc drm_atomic edge_touch_filtering enable_heuristic_palm_detection_filter enable_neural_palm_detection_filter force_breakpad gpu_sandbox_allow_sysv_shm gpu_sandbox_failures_not_fatal gpu_sandbox_start_early houdini houdini64 kvm_guest kvm_host kvm_transition lacros legacy_keyboard legacy_power_button moblab native_gpu_memory_buffers natural_scroll_default ndk_translation ndk_translation64 neon ondevice_handwriting ondevice_handwriting_dlc oobe_skip_postlogin oobe_skip_to_login opengles passive_event_listeners pita pita-camera pita-microphone rialto scheduler_configuration_performance screenshare_sw_codec shelf-hotseat smartdim tablet_form_factor touch_centric_device touchscreen_wakeup touchview video_capture_use_gpu_memory_buffer virtio_gpu webui-tab-strip wilco cros_host cros_workon_tree_
+IUSE=allow_consumer_kiosk arc arc_adb_sideloading arc_force_2x_scaling arc_native_bridge_64bit_support_experiment arc_transition_m_to_n arc_uses_cros_video_decoder arcpp arcvm asan background_blur big_little biod borealis_host cfm_enabled_device cheets clear_fast_ink_buffer compupdates diagnostics disable_background_blur disable_cros_video_decoder disable_explicit_dma_fences disable_native_gpu_memory_buffers disable_instant_tethering disable_spectre_variant2_mitigation drm_atomic edge_touch_filtering enable_dsp_hotword enable_heuristic_palm_detection_filter enable_neural_palm_detection_filter force_breakpad gpu_sandbox_allow_sysv_shm gpu_sandbox_failures_not_fatal gpu_sandbox_start_early houdini houdini64 kvm_guest kvm_host kvm_transition lacros legacy_keyboard legacy_power_button moblab native_gpu_memory_buffers natural_scroll_default ndk_translation ndk_translation64 neon ondevice_document_scanner ondevice_handwriting ondevice_handwriting_dlc ondevice_speech oobe_skip_postlogin oobe_skip_to_login opengles os_install_service passive_event_listeners pita pita-camera pita-microphone rialto scheduler_configuration_performance screenshare_sw_codec set_hw_overlay_strategy_none shelf-hotseat smartdim tablet_form_factor touch_centric_device touchscreen_wakeup touchview video_capture_use_gpu_memory_buffer virtio_gpu webui-tab-strip wilco cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f17870a6553a7562ba00d78a26cb5bb7
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4d0f357d014a27d6e6365adce9883dae
diff --git a/metadata/md5-cache/chromeos-base/libcontainer-0.0.1-r1542 b/metadata/md5-cache/chromeos-base/libcontainer-0.0.1-r1542
deleted file mode 100644
index 37a2566..0000000
--- a/metadata/md5-cache/chromeos-base/libcontainer-0.0.1-r1542
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/minijail:= device-mapper? ( sys-fs/lvm2:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Library to run jailed containers on Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libcontainer/
-IUSE=+device-mapper cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ed310628c7b59ac5528ea8347990fc4f5e95c915_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ed310628c7b59ac5528ea8347990fc4f5e95c915_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/minijail:= device-mapper? ( sys-fs/lvm2:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r1542
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=c3fd04a8ad6c3fc1aac1c2892bce3e83
diff --git a/metadata/md5-cache/chromeos-base/libcontainer-0.0.1-r1570 b/metadata/md5-cache/chromeos-base/libcontainer-0.0.1-r1570
new file mode 100644
index 0000000..d325c51
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libcontainer-0.0.1-r1570
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/minijail:= device-mapper? ( sys-fs/lvm2:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Library to run jailed containers on Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libcontainer/
+IUSE=+device-mapper cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a2ab6048637d439be995dd4cdc3ef91d0291fb42_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a2ab6048637d439be995dd4cdc3ef91d0291fb42_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/minijail:= device-mapper? ( sys-fs/lvm2:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r1570
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=f0e5a15fc370279ce716b44b15e53418
diff --git a/metadata/md5-cache/chromeos-base/libcontainer-9999 b/metadata/md5-cache/chromeos-base/libcontainer-9999
index d9fed88..61d1edb 100644
--- a/metadata/md5-cache/chromeos-base/libcontainer-9999
+++ b/metadata/md5-cache/chromeos-base/libcontainer-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/minijail:= device-mapper? ( sys-fs/lvm2:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/minijail:= device-mapper? ( sys-fs/lvm2:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Library to run jailed containers on Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libcontainer/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/minijail:= device-mapper? ( sys-fs/lvm2:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=9cb1ac9242c8a0449c98b0b5becb711d
diff --git a/metadata/md5-cache/chromeos-base/libec-0.0.1-r36 b/metadata/md5-cache/chromeos-base/libec-0.0.1-r36
new file mode 100644
index 0000000..0f11289
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libec-0.0.1-r36
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/chromeos-ec-headers:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Embedded Controller Library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libec
+IUSE=cros_host cros_workon_tree_b1f4ad4ab3cbb07f7d6d2756b7c06a950376ea88_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_667180eb5db7eb65a292552b106b32aa5881c9eb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_b1f4ad4ab3cbb07f7d6d2756b7c06a950376ea88_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_667180eb5db7eb65a292552b106b32aa5881c9eb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r36
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=89a8c178f7895ae05397d4d2885f2956
diff --git a/metadata/md5-cache/chromeos-base/libec-9999 b/metadata/md5-cache/chromeos-base/libec-9999
new file mode 100644
index 0000000..0ac412b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libec-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/chromeos-ec-headers:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Embedded Controller Library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libec
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a83a7bdf1058e5de5ae530d3a1d3bc93
diff --git a/metadata/md5-cache/chromeos-base/libevdev-0.0.1-r81 b/metadata/md5-cache/chromeos-base/libevdev-0.0.1-r81
deleted file mode 100644
index 93d94ab..0000000
--- a/metadata/md5-cache/chromeos-base/libevdev-0.0.1-r81
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DESCRIPTION=evdev userspace library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/libevdev
-IUSE=-asan cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_36d45015a70fa508f65011ff715aad905cb1a2d6
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/0.0.1-r81
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b857ee971c0233b642f5c364968e9107
diff --git a/metadata/md5-cache/chromeos-base/libevdev-0.0.1-r83 b/metadata/md5-cache/chromeos-base/libevdev-0.0.1-r83
new file mode 100644
index 0000000..3194a27
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libevdev-0.0.1-r83
@@ -0,0 +1,12 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DESCRIPTION=evdev userspace library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/libevdev
+IUSE=-asan cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_3eca4243cc1e474869fcb6bb441c0404101a66ae
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/1
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=60c66c19c5c1abc7a6196ced4c74c36f
diff --git a/metadata/md5-cache/chromeos-base/libevdev-9999 b/metadata/md5-cache/chromeos-base/libevdev-9999
index 7ea954d..84e4b67 100644
--- a/metadata/md5-cache/chromeos-base/libevdev-9999
+++ b/metadata/md5-cache/chromeos-base/libevdev-9999
@@ -7,6 +7,6 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-SLOT=0/9999
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6873c568b03a3c32fc7e0bd06d025627
+SLOT=0/1
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=34f96617dbd4a335e7ede20103661343
diff --git a/metadata/md5-cache/chromeos-base/libhwsec-0.0.1-r147 b/metadata/md5-cache/chromeos-base/libhwsec-0.0.1-r147
deleted file mode 100644
index ac9c254..0000000
--- a/metadata/md5-cache/chromeos-base/libhwsec-0.0.1-r147
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/openssl:0= !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Crypto and utility functions used in TPM related daemons.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libhwsec/
-IUSE=test tpm2 cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_989d840598227b15d78525d5f92c806011a9c158_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_989d840598227b15d78525d5f92c806011a9c158_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/openssl:0= !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r147
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=fb1a592a385ba0a26b4e036aa98844f2
diff --git a/metadata/md5-cache/chromeos-base/libhwsec-0.0.1-r179 b/metadata/md5-cache/chromeos-base/libhwsec-0.0.1-r179
new file mode 100644
index 0000000..792753f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libhwsec-0.0.1-r179
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libhwsec-foundation dev-libs/openssl:0= !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Crypto and utility functions used in TPM related daemons.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libhwsec/
+IUSE=test tpm2 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_0b612d0f1e8dbe59a5549b476f1e681e0b7fe94e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_0b612d0f1e8dbe59a5549b476f1e681e0b7fe94e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libhwsec-foundation dev-libs/openssl:0= !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r179
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b9479fdeb80ce14285f007e7cdab387a
diff --git a/metadata/md5-cache/chromeos-base/libhwsec-9999 b/metadata/md5-cache/chromeos-base/libhwsec-9999
index 4ef9bdd..2a07814 100644
--- a/metadata/md5-cache/chromeos-base/libhwsec-9999
+++ b/metadata/md5-cache/chromeos-base/libhwsec-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/openssl:0= !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libhwsec-foundation dev-libs/openssl:0= !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Crypto and utility functions used in TPM related daemons.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libhwsec/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=dev-libs/openssl:0= !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=chromeos-base/libhwsec-foundation dev-libs/openssl:0= !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=1b55f550c799842ff7f97795266d18c9
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0d8b745f71a5fd1804d17d1c121a20c8
diff --git a/metadata/md5-cache/chromeos-base/libhwsec-foundation-0.0.1-r51 b/metadata/md5-cache/chromeos-base/libhwsec-foundation-0.0.1-r51
new file mode 100644
index 0000000..a3e8650
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libhwsec-foundation-0.0.1-r51
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Crypto and utility functions used in TPM related daemons.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libhwsec-foundation/
+IUSE=test tpm2 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_0b612d0f1e8dbe59a5549b476f1e681e0b7fe94e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_0b612d0f1e8dbe59a5549b476f1e681e0b7fe94e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152 chromeos-base/system_api chromeos-base/tpm_manager-client >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r51
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=161d0b50707d66f33cf5041f45a95d6b
diff --git a/metadata/md5-cache/chromeos-base/libhwsec-foundation-9999 b/metadata/md5-cache/chromeos-base/libhwsec-foundation-9999
new file mode 100644
index 0000000..ad4c629
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libhwsec-foundation-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Crypto and utility functions used in TPM related daemons.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libhwsec-foundation/
+IUSE=test tpm2 cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152 chromeos-base/system_api chromeos-base/tpm_manager-client >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=cde2e824923e4678cef7a85ef5a8a3d6
diff --git a/metadata/md5-cache/chromeos-base/libiioservice_ipc-0.0.1-r139 b/metadata/md5-cache/chromeos-base/libiioservice_ipc-0.0.1-r139
new file mode 100644
index 0000000..be19f3c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libiioservice_ipc-0.0.1-r139
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS sensor HAL IPC util.
+EAPI=7
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_da73aae6d89c8e69c3740af612610792ce42b1a8_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_da73aae6d89c8e69c3740af612610792ce42b1a8_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r139
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=59516cc8afb5fda0b30c2c2700e028b1
diff --git a/metadata/md5-cache/chromeos-base/libiioservice_ipc-0.0.1-r86 b/metadata/md5-cache/chromeos-base/libiioservice_ipc-0.0.1-r86
deleted file mode 100644
index 46e3118..0000000
--- a/metadata/md5-cache/chromeos-base/libiioservice_ipc-0.0.1-r86
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS sensor HAL IPC util.
-EAPI=7
-IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_871fd3a6dccaf2c2099f6200b55691f4ce8f07cb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_871fd3a6dccaf2c2099f6200b55691f4ce8f07cb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r86
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=295cb172b285d19793837e5179b34de9
diff --git a/metadata/md5-cache/chromeos-base/libiioservice_ipc-9999 b/metadata/md5-cache/chromeos-base/libiioservice_ipc-9999
index af24ccb..529c414 100644
--- a/metadata/md5-cache/chromeos-base/libiioservice_ipc-9999
+++ b/metadata/md5-cache/chromeos-base/libiioservice_ipc-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS sensor HAL IPC util.
 EAPI=7
 IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=07d8a59e15159a40f26b20ee43c42f1c
diff --git a/metadata/md5-cache/chromeos-base/libipp-0.0.1-r126 b/metadata/md5-cache/chromeos-base/libipp-0.0.1-r126
deleted file mode 100644
index f6a5c19..0000000
--- a/metadata/md5-cache/chromeos-base/libipp-0.0.1-r126
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=The library for building and parsing IPP (Internet Printing Protocol) frames.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libipp/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_a30c13fe33c247bd5cbff62b4e1c55d0efbf759b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_a30c13fe33c247bd5cbff62b4e1c55d0efbf759b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r126
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=7de0b478cecfb04e71f57d49870e4527
diff --git a/metadata/md5-cache/chromeos-base/libipp-0.0.1-r153 b/metadata/md5-cache/chromeos-base/libipp-0.0.1-r153
new file mode 100644
index 0000000..b3c1725
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libipp-0.0.1-r153
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=The library for building and parsing IPP (Internet Printing Protocol) frames.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libipp/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_446ac148c9c5710eb395d8c044f4e44b8bf4361a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_446ac148c9c5710eb395d8c044f4e44b8bf4361a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r153
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=efbec616adc27b79ef4aacb9a4dc7825
diff --git a/metadata/md5-cache/chromeos-base/libipp-9999 b/metadata/md5-cache/chromeos-base/libipp-9999
index a6a81e9..da8e8e7 100644
--- a/metadata/md5-cache/chromeos-base/libipp-9999
+++ b/metadata/md5-cache/chromeos-base/libipp-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=The library for building and parsing IPP (Internet Printing Protocol) frames.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libipp/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ed10ee522e9d803f424361a92ca2fd49
diff --git a/metadata/md5-cache/chromeos-base/libmems-0.0.1-r157 b/metadata/md5-cache/chromeos-base/libmems-0.0.1-r157
deleted file mode 100644
index 6e59087..0000000
--- a/metadata/md5-cache/chromeos-base/libmems-0.0.1-r157
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=net-libs/libiio:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=MEMS support library for Chromium OS.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libmems
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_fd9664c67f7b5bf90e85d620439201bab8f5ba3a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_fd9664c67f7b5bf90e85d620439201bab8f5ba3a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=net-libs/libiio:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r157
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0bb1e79114bb99be2263ad254e2f89e9
diff --git a/metadata/md5-cache/chromeos-base/libmems-0.0.1-r192 b/metadata/md5-cache/chromeos-base/libmems-0.0.1-r192
new file mode 100644
index 0000000..754b15b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libmems-0.0.1-r192
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=net-libs/libiio:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=MEMS support library for Chromium OS.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libmems
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_359903647899af99fb1bc9ba9d666b0e78fcb3a8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_359903647899af99fb1bc9ba9d666b0e78fcb3a8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=net-libs/libiio:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r192
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=69a0ce4c715e6a2ab64c00048d570020
diff --git a/metadata/md5-cache/chromeos-base/libmems-9999 b/metadata/md5-cache/chromeos-base/libmems-9999
index 6e45180..d519fef 100644
--- a/metadata/md5-cache/chromeos-base/libmems-9999
+++ b/metadata/md5-cache/chromeos-base/libmems-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=net-libs/libiio:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=net-libs/libiio:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=MEMS support library for Chromium OS.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libmems
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=net-libs/libiio:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ca04e59bee91b9859d9a0ff5208802e5
diff --git a/metadata/md5-cache/chromeos-base/libpasswordprovider-0.0.1-r416 b/metadata/md5-cache/chromeos-base/libpasswordprovider-0.0.1-r416
deleted file mode 100644
index bf83300..0000000
--- a/metadata/md5-cache/chromeos-base/libpasswordprovider-0.0.1-r416
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=sys-apps/keyutils:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Library for storing and retrieving user password
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libpasswordprovider
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5c6a69ae1a339332642149aa39da47d14efbe3fd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5c6a69ae1a339332642149aa39da47d14efbe3fd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=sys-apps/keyutils:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r416
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9061c0c47430f8bb405da25220cce8df
diff --git a/metadata/md5-cache/chromeos-base/libpasswordprovider-0.0.1-r443 b/metadata/md5-cache/chromeos-base/libpasswordprovider-0.0.1-r443
new file mode 100644
index 0000000..0b555c5
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libpasswordprovider-0.0.1-r443
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=sys-apps/keyutils:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Library for storing and retrieving user password
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libpasswordprovider
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_eae0546f4ee5132d4544af4770755eb05f60cba6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_eae0546f4ee5132d4544af4770755eb05f60cba6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=sys-apps/keyutils:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r443
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d93a7f62f4a42df599672aebd99d4a5a
diff --git a/metadata/md5-cache/chromeos-base/libpasswordprovider-9999 b/metadata/md5-cache/chromeos-base/libpasswordprovider-9999
index 6502d4f..793beff 100644
--- a/metadata/md5-cache/chromeos-base/libpasswordprovider-9999
+++ b/metadata/md5-cache/chromeos-base/libpasswordprovider-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=sys-apps/keyutils:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=sys-apps/keyutils:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Library for storing and retrieving user password
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libpasswordprovider
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=sys-apps/keyutils:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f82fb4c8f5dcc6b6270c3d41483b0478
diff --git a/metadata/md5-cache/chromeos-base/libsirenia-0.1.0-r16 b/metadata/md5-cache/chromeos-base/libsirenia-0.1.0-r16
deleted file mode 100644
index 317d61f..0000000
--- a/metadata/md5-cache/chromeos-base/libsirenia-0.1.0-r16
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/sirenia-rpc-macros:= >=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2 =dev-rust/getopts-0.2*:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3 dev-rust/libchromeos:= dev-rust/minijail:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 >=virtual/rust-1.39.0:=
-DESCRIPTION=The support library for the ManaTEE runtime environment.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/libsirenia
-IUSE=cros_host cros_workon_tree_36749988683ed09546c9aaebe9f124beceb722e1 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r16
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=27df669a8ca5f14ebdbf3b7a0450bc45
diff --git a/metadata/md5-cache/chromeos-base/libsirenia-0.1.0-r39 b/metadata/md5-cache/chromeos-base/libsirenia-0.1.0-r39
new file mode 100644
index 0000000..05ab115
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libsirenia-0.1.0-r39
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/sirenia-rpc-macros:= =dev-rust/chrono-0.4*:= >=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2 =dev-rust/getopts-0.2*:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3 dev-rust/libchromeos:= dev-rust/minijail:= >=dev-rust/openssl-0.10.25:= <dev-rust/openssl-0.11.0 >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=The support library for the ManaTEE runtime environment.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/libsirenia
+IUSE=cros_host cros_workon_tree_41f3dce4c2ba5bc9fd7972e4ebb6cc36beaa8147 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/sirenia-rpc-macros:= =dev-rust/chrono-0.4*:= >=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2 =dev-rust/getopts-0.2*:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3 dev-rust/libchromeos:= dev-rust/minijail:= >=dev-rust/openssl-0.10.25:= <dev-rust/openssl-0.11.0 >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r39
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0f53ed0fd74004848050ead8f38999d9
diff --git a/metadata/md5-cache/chromeos-base/libsirenia-9999 b/metadata/md5-cache/chromeos-base/libsirenia-9999
index 8b6a58f..f70f77c 100644
--- a/metadata/md5-cache/chromeos-base/libsirenia-9999
+++ b/metadata/md5-cache/chromeos-base/libsirenia-9999
@@ -1,14 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/sirenia-rpc-macros:= >=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2 =dev-rust/getopts-0.2*:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3 dev-rust/libchromeos:= dev-rust/minijail:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/sirenia-rpc-macros:= =dev-rust/chrono-0.4*:= >=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2 =dev-rust/getopts-0.2*:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3 dev-rust/libchromeos:= dev-rust/minijail:= >=dev-rust/openssl-0.10.25:= <dev-rust/openssl-0.11.0 >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=The support library for the ManaTEE runtime environment.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/libsirenia
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
+RDEPEND=chromeos-base/sirenia-rpc-macros:= =dev-rust/chrono-0.4*:= >=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2 =dev-rust/getopts-0.2*:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3 dev-rust/libchromeos:= dev-rust/minijail:= >=dev-rust/openssl-0.10.25:= <dev-rust/openssl-0.11.0 >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=87dd91c298e79e1c6a5772522e8cde50
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5bf55caae321f4f08c22898ac4a79245
diff --git a/metadata/md5-cache/chromeos-base/libtpmcrypto-0.0.1-r267 b/metadata/md5-cache/chromeos-base/libtpmcrypto-0.0.1-r267
deleted file mode 100644
index 77448cb..0000000
--- a/metadata/md5-cache/chromeos-base/libtpmcrypto-0.0.1-r267
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Encrypts/Decrypts data to a serialized proto with TPM sealed key.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libtpmcrypto/
-IUSE=tpm tpm2 cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_6bcff6ea2d0ff76e4398205aee498eb314d63902_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_6bcff6ea2d0ff76e4398205aee498eb314d63902_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-REQUIRED_USE=tpm2? ( !tpm )
-SLOT=0/0.0.1-r267
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=81314471b648268b52d603a8dfce4366
diff --git a/metadata/md5-cache/chromeos-base/libtpmcrypto-0.0.1-r325 b/metadata/md5-cache/chromeos-base/libtpmcrypto-0.0.1-r325
new file mode 100644
index 0000000..7bb791e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libtpmcrypto-0.0.1-r325
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Encrypts/Decrypts data to a serialized proto with TPM sealed key.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libtpmcrypto/
+IUSE=tpm tpm2 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_5d77de997847c22cb783cc11cd0fab4f6fae59f0_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_5d77de997847c22cb783cc11cd0fab4f6fae59f0_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=tpm2? ( !tpm )
+SLOT=0/0.0.1-r325
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=aa8fdc10de62778f4841a00b3b16ea1c
diff --git a/metadata/md5-cache/chromeos-base/libtpmcrypto-9999 b/metadata/md5-cache/chromeos-base/libtpmcrypto-9999
index df3d47a..caca645 100644
--- a/metadata/md5-cache/chromeos-base/libtpmcrypto-9999
+++ b/metadata/md5-cache/chromeos-base/libtpmcrypto-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Encrypts/Decrypts data to a serialized proto with TPM sealed key.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/libtpmcrypto/
@@ -11,5 +11,5 @@
 RDEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 REQUIRED_USE=tpm2? ( !tpm )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=3340d7be0a182b0b70559a228501b705
diff --git a/metadata/md5-cache/chromeos-base/libva-fake-driver-0.0.1-r1 b/metadata/md5-cache/chromeos-base/libva-fake-driver-0.0.1-r1
index a652fc2..f8e89a2 100644
--- a/metadata/md5-cache/chromeos-base/libva-fake-driver-0.0.1-r1
+++ b/metadata/md5-cache/chromeos-base/libva-fake-driver-0.0.1-r1
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=>=x11-libs/libva-2.6.0:=
 SLOT=0/0.0.1-r1
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=1e4aaee393e3bdf9546f67c2ebe156a4
diff --git a/metadata/md5-cache/chromeos-base/libva-fake-driver-9999 b/metadata/md5-cache/chromeos-base/libva-fake-driver-9999
index ea7d3ae..a7a4204 100644
--- a/metadata/md5-cache/chromeos-base/libva-fake-driver-9999
+++ b/metadata/md5-cache/chromeos-base/libva-fake-driver-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=>=x11-libs/libva-2.6.0:=
 SLOT=0/9999
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=6f0f1c9f9a6e6717f317fb135242788f
diff --git a/metadata/md5-cache/chromeos-base/libvda-0.0.1-r193 b/metadata/md5-cache/chromeos-base/libvda-0.0.1-r193
deleted file mode 100644
index d42fa59..0000000
--- a/metadata/md5-cache/chromeos-base/libvda-0.0.1-r193
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/minigbm:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=libvda CrOS video decoding library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda
-IUSE=libvda_test cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_95abd403306bcd38620bd25a7e715a47abc46b1c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_95abd403306bcd38620bd25a7e715a47abc46b1c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=media-libs/minigbm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r193
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=fcdd303c0726af17c15ec7db6b936bd9
diff --git a/metadata/md5-cache/chromeos-base/libvda-0.0.1-r233 b/metadata/md5-cache/chromeos-base/libvda-0.0.1-r233
new file mode 100644
index 0000000..01b29bc
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libvda-0.0.1-r233
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=media-libs/minigbm:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=libvda CrOS video decoding library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda
+IUSE=libvda_test cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_fbf4dfb51a4aa58831d6179663e19f3d1ef68b16_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_fbf4dfb51a4aa58831d6179663e19f3d1ef68b16_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=media-libs/minigbm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r233
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=08e623dc94df5ffab4b7b27da7ce7373
diff --git a/metadata/md5-cache/chromeos-base/libvda-9999 b/metadata/md5-cache/chromeos-base/libvda-9999
index 2e47b91..d928728 100644
--- a/metadata/md5-cache/chromeos-base/libvda-9999
+++ b/metadata/md5-cache/chromeos-base/libvda-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/minigbm:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=media-libs/minigbm:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=libvda CrOS video decoding library
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=media-libs/minigbm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=695cc5b942434723f506fa14351e2e31
diff --git a/metadata/md5-cache/chromeos-base/libvda-gpu-tests-0.0.1-r187 b/metadata/md5-cache/chromeos-base/libvda-gpu-tests-0.0.1-r187
deleted file mode 100644
index bbe2387..0000000
--- a/metadata/md5-cache/chromeos-base/libvda-gpu-tests-0.0.1-r187
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:= media-libs/minigbm:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=libvda Chrome GPU tests
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_95abd403306bcd38620bd25a7e715a47abc46b1c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_95abd403306bcd38620bd25a7e715a47abc46b1c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libbrillo:= media-libs/minigbm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e595b0691f759d43f4bc7d9bd508e182
diff --git a/metadata/md5-cache/chromeos-base/libvda-gpu-tests-0.0.1-r227 b/metadata/md5-cache/chromeos-base/libvda-gpu-tests-0.0.1-r227
new file mode 100644
index 0000000..0f779a0
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libvda-gpu-tests-0.0.1-r227
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libbrillo:= media-libs/minigbm:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=libvda Chrome GPU tests
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_fbf4dfb51a4aa58831d6179663e19f3d1ef68b16_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_fbf4dfb51a4aa58831d6179663e19f3d1ef68b16_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libbrillo:= media-libs/minigbm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=893d0a40a659156598fe98f8e8f0d691
diff --git a/metadata/md5-cache/chromeos-base/libvda-gpu-tests-9999 b/metadata/md5-cache/chromeos-base/libvda-gpu-tests-9999
index ef4baeb..42d597f 100644
--- a/metadata/md5-cache/chromeos-base/libvda-gpu-tests-9999
+++ b/metadata/md5-cache/chromeos-base/libvda-gpu-tests-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:= media-libs/minigbm:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libbrillo:= media-libs/minigbm:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=libvda Chrome GPU tests
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libbrillo:= media-libs/minigbm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=7966c4b2769263fbe54c35ae8e95a351
diff --git a/metadata/md5-cache/chromeos-base/libweave-0.0.1-r1266 b/metadata/md5-cache/chromeos-base/libweave-0.0.1-r1266
deleted file mode 100644
index e910df9..0000000
--- a/metadata/md5-cache/chromeos-base/libweave-0.0.1-r1266
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Weave device library
-EAPI=7
-HOMEPAGE=http://dev.chromium.org/chromium-os/platform
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_be6429aaf7e01d2681cb9c8fee7ed73703282382 cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_be6429aaf7e01d2681cb9c8fee7ed73703282382 cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r1266
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e1f4037e85c1d19552a47699e41cf65c
diff --git a/metadata/md5-cache/chromeos-base/libweave-0.0.1-r1296 b/metadata/md5-cache/chromeos-base/libweave-0.0.1-r1296
new file mode 100644
index 0000000..6aa769c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/libweave-0.0.1-r1296
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Weave device library
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/chromium-os/platform
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_2537616b612f732756d25c0aa7be9b7b202b1361 cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_2537616b612f732756d25c0aa7be9b7b202b1361 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r1296
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ce979434282275a98c8ab847e2d84020
diff --git a/metadata/md5-cache/chromeos-base/libweave-9999 b/metadata/md5-cache/chromeos-base/libweave-9999
index 04626b9..c36452d 100644
--- a/metadata/md5-cache/chromeos-base/libweave-9999
+++ b/metadata/md5-cache/chromeos-base/libweave-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Weave device library
 EAPI=7
 HOMEPAGE=http://dev.chromium.org/chromium-os/platform
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d31305ab5cae10c3901d836ffabd2693
diff --git a/metadata/md5-cache/chromeos-base/lorgnette-0.0.1-r2985 b/metadata/md5-cache/chromeos-base/lorgnette-0.0.1-r2985
deleted file mode 100644
index 7ad8769..0000000
--- a/metadata/md5-cache/chromeos-base/lorgnette-0.0.1-r2985
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= media-libs/libpng:= media-gfx/sane-backends:= virtual/libusb:1 chromeos-base/permission_broker-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Document Scanning service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/lorgnette/
-IUSE=test cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_d334dedf11d8cc35a56b23c705f5d2e0ae7be9a6_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_d334dedf11d8cc35a56b23c705f5d2e0ae7be9a6_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= media-libs/libpng:= media-gfx/sane-backends:= virtual/libusb:1 chromeos-base/minijail media-gfx/sane-airscan test? ( media-gfx/perceptualdiff:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r2985
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=e4abb73ae290d60cac2bba60d9855a4d
diff --git a/metadata/md5-cache/chromeos-base/lorgnette-0.0.1-r3066 b/metadata/md5-cache/chromeos-base/lorgnette-0.0.1-r3066
new file mode 100644
index 0000000..37262af
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/lorgnette-0.0.1-r3066
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= media-libs/libpng:= media-gfx/sane-airscan:= media-gfx/sane-backends:= virtual/jpeg:0= virtual/libusb:1 chromeos-base/permission_broker-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Document Scanning service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/lorgnette/
+IUSE=test cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_7ab95adad72dd346e5249e117b29330382e9f716_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_7ab95adad72dd346e5249e117b29330382e9f716_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= media-libs/libpng:= media-gfx/sane-airscan:= media-gfx/sane-backends:= virtual/jpeg:0= virtual/libusb:1 chromeos-base/minijail test? ( chromeos-base/sane-backends-test media-gfx/perceptualdiff:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r3066
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=2595fa7f8f1dd2557029db4344eb35a6
diff --git a/metadata/md5-cache/chromeos-base/lorgnette-9999 b/metadata/md5-cache/chromeos-base/lorgnette-9999
index 3c7f50e..fcb5c7d 100644
--- a/metadata/md5-cache/chromeos-base/lorgnette-9999
+++ b/metadata/md5-cache/chromeos-base/lorgnette-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= media-libs/libpng:= media-gfx/sane-backends:= virtual/libusb:1 chromeos-base/permission_broker-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= media-libs/libpng:= media-gfx/sane-airscan:= media-gfx/sane-backends:= virtual/jpeg:0= virtual/libusb:1 chromeos-base/permission_broker-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Document Scanning service for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/lorgnette/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= media-libs/libpng:= media-gfx/sane-backends:= virtual/libusb:1 chromeos-base/minijail media-gfx/sane-airscan test? ( media-gfx/perceptualdiff:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= media-libs/libpng:= media-gfx/sane-airscan:= media-gfx/sane-backends:= virtual/jpeg:0= virtual/libusb:1 chromeos-base/minijail test? ( chromeos-base/sane-backends-test media-gfx/perceptualdiff:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=3866a3374382a4d6f8449bd0c6f353ae
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=49036f45d94f051e06dd1f77f89f617e
diff --git a/metadata/md5-cache/chromeos-base/lorgnette_cli-0.0.1-r101 b/metadata/md5-cache/chromeos-base/lorgnette_cli-0.0.1-r101
deleted file mode 100644
index 8705b4d..0000000
--- a/metadata/md5-cache/chromeos-base/lorgnette_cli-0.0.1-r101
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Command line interface to scanning service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/lorgnette
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_d334dedf11d8cc35a56b23c705f5d2e0ae7be9a6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_d334dedf11d8cc35a56b23c705f5d2e0ae7be9a6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/lorgnette >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=1e7388386c86cc0bcc1879e84cf72bb6
diff --git a/metadata/md5-cache/chromeos-base/lorgnette_cli-0.0.1-r144 b/metadata/md5-cache/chromeos-base/lorgnette_cli-0.0.1-r144
new file mode 100644
index 0000000..0047dbd
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/lorgnette_cli-0.0.1-r144
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Command line interface to scanning service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/lorgnette
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_7ab95adad72dd346e5249e117b29330382e9f716_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_7ab95adad72dd346e5249e117b29330382e9f716_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/lorgnette >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=dab580ea640e76590f833ac517181c18
diff --git a/metadata/md5-cache/chromeos-base/lorgnette_cli-9999 b/metadata/md5-cache/chromeos-base/lorgnette_cli-9999
index 6e5b759..0826ab7 100644
--- a/metadata/md5-cache/chromeos-base/lorgnette_cli-9999
+++ b/metadata/md5-cache/chromeos-base/lorgnette_cli-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Command line interface to scanning service for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/lorgnette
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/lorgnette >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=5c86acfc6c3e7b65c94cd7aac9a56fee
diff --git a/metadata/md5-cache/chromeos-base/manatee-client-0.0.1-r28 b/metadata/md5-cache/chromeos-base/manatee-client-0.0.1-r28
deleted file mode 100644
index dd7de84..0000000
--- a/metadata/md5-cache/chromeos-base/manatee-client-0.0.1-r28
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS ManaTEE D-Bus client library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8142910ebe1039f79b7c8e33260b6428bbee5ef3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8142910ebe1039f79b7c8e33260b6428bbee5ef3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r28
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cfc50cf8d5a20a5e4653ad66cc11cca0
diff --git a/metadata/md5-cache/chromeos-base/manatee-client-0.0.1-r86 b/metadata/md5-cache/chromeos-base/manatee-client-0.0.1-r86
new file mode 100644
index 0000000..ecaa521
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/manatee-client-0.0.1-r86
@@ -0,0 +1,14 @@
+BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS ManaTEE D-Bus client library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_727b5a2cdf7d07c050cc575ee636711da70333a2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_727b5a2cdf7d07c050cc575ee636711da70333a2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r86
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c5ef3098ce59beae65239301881148ef
diff --git a/metadata/md5-cache/chromeos-base/manatee-client-9999 b/metadata/md5-cache/chromeos-base/manatee-client-9999
index aeff170..c2db055 100644
--- a/metadata/md5-cache/chromeos-base/manatee-client-9999
+++ b/metadata/md5-cache/chromeos-base/manatee-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=chromeos-base/chromeos-dbus-bindings dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS ManaTEE D-Bus client library
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=c73b5f2d8dc45ed6874cf710fa2b84f2
diff --git a/metadata/md5-cache/chromeos-base/manatee-runtime-0.1.0-r7 b/metadata/md5-cache/chromeos-base/manatee-runtime-0.1.0-r7
new file mode 100644
index 0000000..afe93f8
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/manatee-runtime-0.1.0-r7
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/libsirenia:= dev-rust/libchromeos:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 dev-rust/sync:= dev-rust/sys_util:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Library for TEE apps to interact with sirenia.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/manatee-runtime/
+IUSE=cros_host manatee cros_host cros_workon_tree_d82e84546e6140f16431633e392a549997ff27f9 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r7
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5de9a116b4a949b45a45cc7a54bc63be
diff --git a/metadata/md5-cache/chromeos-base/manatee-runtime-9999 b/metadata/md5-cache/chromeos-base/manatee-runtime-9999
new file mode 100644
index 0000000..d6cf9b2
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/manatee-runtime-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/libsirenia:= dev-rust/libchromeos:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 dev-rust/sync:= dev-rust/sys_util:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Library for TEE apps to interact with sirenia.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/manatee-runtime/
+IUSE=cros_host manatee cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4c5dca1d12e75ffb627faf26712eaf1d
diff --git a/metadata/md5-cache/chromeos-base/mcastd-0.0.1-r162 b/metadata/md5-cache/chromeos-base/mcastd-0.0.1-r162
deleted file mode 100644
index 3aa18da..0000000
--- a/metadata/md5-cache/chromeos-base/mcastd-0.0.1-r162
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Multicast forwarder daemon
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/network/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_dce82635efeafb4457e130913bcabc6fcf00bdf7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_dce82635efeafb4457e130913bcabc6fcf00bdf7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= !chromeos-base/arc-networkd-mcastd >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r162
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c9ebe251855b9f2182c0a42e7c0ea793
diff --git a/metadata/md5-cache/chromeos-base/mcastd-0.0.1-r233 b/metadata/md5-cache/chromeos-base/mcastd-0.0.1-r233
new file mode 100644
index 0000000..8297104
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/mcastd-0.0.1-r233
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Multicast forwarder daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/network/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ae86a7d3ab814f4089a041bdf224a46af7c4b4bf_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ae86a7d3ab814f4089a041bdf224a46af7c4b4bf_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= !chromeos-base/arc-networkd-mcastd >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r233
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=46c94fc4cbeb0d811dcd42401d2f0a13
diff --git a/metadata/md5-cache/chromeos-base/mcastd-9999 b/metadata/md5-cache/chromeos-base/mcastd-9999
index c57a57a..5710495 100644
--- a/metadata/md5-cache/chromeos-base/mcastd-9999
+++ b/metadata/md5-cache/chromeos-base/mcastd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Multicast forwarder daemon
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/network/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= !chromeos-base/arc-networkd-mcastd >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=6fc64c064f96516dc11103e981b53f46
diff --git a/metadata/md5-cache/chromeos-base/memd-0.1.0-r63 b/metadata/md5-cache/chromeos-base/memd-0.1.0-r63
deleted file mode 100644
index aaa08c0..0000000
--- a/metadata/md5-cache/chromeos-base/memd-0.1.0-r63
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/system_api:= sys-apps/dbus:= ~dev-rust/chrono-0.4.2:= ~dev-rust/dbus-0.6.1:= =dev-rust/env_logger-0.6*:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 ~dev-rust/log-0.4.5:= >=dev-rust/protobuf-2.8:= !>=dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.8:= !>=dev-rust/protoc-rust-3 ~dev-rust/syslog-4.0.1:= ~dev-rust/time-0.1.40:= =dev-rust/tempfile-3*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Fine-grain memory metrics collector
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/metrics/memd/
-IUSE=+seccomp cros_host cros_workon_tree_f6601370d273ede0bc6b3a93a4211ab90c98ebdc_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-apps/dbus
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r63
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f13ca92ce52b91afd24623082dbce5e5
diff --git a/metadata/md5-cache/chromeos-base/memd-0.1.0-r96 b/metadata/md5-cache/chromeos-base/memd-0.1.0-r96
new file mode 100644
index 0000000..4b1c0f8
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/memd-0.1.0-r96
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/system_api:= sys-apps/dbus:= >=dev-rust/chrono-0.4.2:= <dev-rust/chrono-0.5.0 >=dev-rust/dbus-0.6.1:= <dev-rust/dbus-0.7.0 =dev-rust/env_logger-0.6*:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 >=dev-rust/log-0.4.5:= <dev-rust/log-0.5.0 >=dev-rust/protobuf-2.3:= <dev-rust/protobuf-3.0 >=dev-rust/protoc-rust-2.3:= <dev-rust/protoc-rust-3 =dev-rust/syslog-4*:= =dev-rust/tempfile-3*:= >=dev-rust/time-0.1.40:= <dev-rust/time-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Fine-grain memory metrics collector
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/metrics/memd/
+IUSE=+seccomp cros_host cros_workon_tree_75f65f147da7feb0796cb97c434e13bc61d8ee8f_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/dbus
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r96
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9f5cfe63486649f2968ce6735606c2c4
diff --git a/metadata/md5-cache/chromeos-base/memd-9999 b/metadata/md5-cache/chromeos-base/memd-9999
index 5671a50..27cf1c0 100644
--- a/metadata/md5-cache/chromeos-base/memd-9999
+++ b/metadata/md5-cache/chromeos-base/memd-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/system_api:= sys-apps/dbus:= ~dev-rust/chrono-0.4.2:= ~dev-rust/dbus-0.6.1:= =dev-rust/env_logger-0.6*:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 ~dev-rust/log-0.4.5:= >=dev-rust/protobuf-2.8:= !>=dev-rust/protobuf-3 >=dev-rust/protoc-rust-2.8:= !>=dev-rust/protoc-rust-3 ~dev-rust/syslog-4.0.1:= ~dev-rust/time-0.1.40:= =dev-rust/tempfile-3*:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/system_api:= sys-apps/dbus:= >=dev-rust/chrono-0.4.2:= <dev-rust/chrono-0.5.0 >=dev-rust/dbus-0.6.1:= <dev-rust/dbus-0.7.0 =dev-rust/env_logger-0.6*:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 >=dev-rust/log-0.4.5:= <dev-rust/log-0.5.0 >=dev-rust/protobuf-2.3:= <dev-rust/protobuf-3.0 >=dev-rust/protoc-rust-2.3:= <dev-rust/protoc-rust-3 =dev-rust/syslog-4*:= =dev-rust/tempfile-3*:= >=dev-rust/time-0.1.40:= <dev-rust/time-0.2.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Fine-grain memory metrics collector
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/metrics/memd/
-IUSE=+seccomp cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=+seccomp cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=sys-apps/dbus
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6c53cc01f463b2d193d8274401a6e8e5
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c48d637d578f7d6916d993d179c17bbe
diff --git a/metadata/md5-cache/chromeos-base/mems_setup-0.0.1-r189 b/metadata/md5-cache/chromeos-base/mems_setup-0.0.1-r189
deleted file mode 100644
index 01bb541..0000000
--- a/metadata/md5-cache/chromeos-base/mems_setup-0.0.1-r189
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libmems:= net-libs/libiio:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=MEMS Setup for Chromium OS.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/mems_setup
-IUSE=iioservice cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_18fa17a886b3196a3ec5ad479ac06a9d0a240b7e_fd9664c67f7b5bf90e85d620439201bab8f5ba3a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_18fa17a886b3196a3ec5ad479ac06a9d0a240b7e_fd9664c67f7b5bf90e85d620439201bab8f5ba3a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libmems:= net-libs/libiio:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r189
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b2b9b7eb1d2b87fa81c5df2db9105c84
diff --git a/metadata/md5-cache/chromeos-base/mems_setup-0.0.1-r245 b/metadata/md5-cache/chromeos-base/mems_setup-0.0.1-r245
new file mode 100644
index 0000000..c75185a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/mems_setup-0.0.1-r245
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libmems:= net-libs/libiio:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=MEMS Setup for Chromium OS.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/mems_setup
+IUSE=iioservice cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_da73aae6d89c8e69c3740af612610792ce42b1a8_956b1c75a21148c69a084aa4528169235fbae153_359903647899af99fb1bc9ba9d666b0e78fcb3a8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_da73aae6d89c8e69c3740af612610792ce42b1a8_956b1c75a21148c69a084aa4528169235fbae153_359903647899af99fb1bc9ba9d666b0e78fcb3a8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libmems:= net-libs/libiio:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r245
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
+_md5_=0ce8fc5f8a315a4660f2e2c30c41682f
diff --git a/metadata/md5-cache/chromeos-base/mems_setup-9999 b/metadata/md5-cache/chromeos-base/mems_setup-9999
index 2978e7b..ecd176f 100644
--- a/metadata/md5-cache/chromeos-base/mems_setup-9999
+++ b/metadata/md5-cache/chromeos-base/mems_setup-9999
@@ -1,6 +1,6 @@
-BDEPEND=dev-vcs/git dev-vcs/git
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libmems:= net-libs/libiio:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libmems:= net-libs/libiio:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=MEMS Setup for Chromium OS.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/mems_setup
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libmems:= net-libs/libiio:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ff2de2b88fbb81f9b71c0e0e1760d19e
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
+_md5_=e29c1dfcca499090851d4dd018db99de
diff --git a/metadata/md5-cache/chromeos-base/metrics-0.0.1-r3208 b/metadata/md5-cache/chromeos-base/metrics-0.0.1-r3208
deleted file mode 100644
index 5f941f4..0000000
--- a/metadata/md5-cache/chromeos-base/metrics-0.0.1-r3208
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=dev-libs/protobuf:= dev-libs/re2:= sys-apps/rootdev:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Metrics aggregation service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/metrics/
-IUSE=fuzzer metrics_uploader +passive_metrics systemd cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/protobuf:= dev-libs/re2:= sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r3208
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=80fdde07f77b685bbc6b43472e3b6d9e
diff --git a/metadata/md5-cache/chromeos-base/metrics-0.0.1-r3275 b/metadata/md5-cache/chromeos-base/metrics-0.0.1-r3275
new file mode 100644
index 0000000..c6cf1c6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/metrics-0.0.1-r3275
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=dev-libs/protobuf:= dev-libs/re2:= sys-apps/rootdev:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Metrics aggregation service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/metrics/
+IUSE=fuzzer metrics_uploader +passive_metrics systemd cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/protobuf:= dev-libs/re2:= sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= virtual/tmpfiles sys-apps/baselayout
+SLOT=0/0.0.1-r3275
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=8e6f3e652202f5027b7d7e0eaef78060
diff --git a/metadata/md5-cache/chromeos-base/metrics-9999 b/metadata/md5-cache/chromeos-base/metrics-9999
index ddfa7d0..9abc440 100644
--- a/metadata/md5-cache/chromeos-base/metrics-9999
+++ b/metadata/md5-cache/chromeos-base/metrics-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=dev-libs/protobuf:= dev-libs/re2:= sys-apps/rootdev:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=dev-libs/protobuf:= dev-libs/re2:= sys-apps/rootdev:= chromeos-base/session_manager-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Metrics aggregation service for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/metrics/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=dev-libs/protobuf:= dev-libs/re2:= sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=dev-libs/protobuf:= dev-libs/re2:= sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= virtual/tmpfiles sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=58dd13b9df0f62b153b89795bcf066f1
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=e87b9319e68c71c38c23dd15faaf31b4
diff --git a/metadata/md5-cache/chromeos-base/midis-0.0.1-r1126 b/metadata/md5-cache/chromeos-base/midis-0.0.1-r1126
deleted file mode 100644
index 47ad4b0..0000000
--- a/metadata/md5-cache/chromeos-base/midis-0.0.1-r1126
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=media-libs/alsa-lib:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=MIDI Server for Chromium OS
-EAPI=7
-IUSE=+seccomp asan fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_12cd47baf58eab10f40e9dea81b4d4ba450a69be_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_12cd47baf58eab10f40e9dea81b4d4ba450a69be_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/alsa-lib:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r1126
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=cf1287780ddd47b7623200453895d2e4
diff --git a/metadata/md5-cache/chromeos-base/midis-0.0.1-r1163 b/metadata/md5-cache/chromeos-base/midis-0.0.1-r1163
new file mode 100644
index 0000000..fac8253
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/midis-0.0.1-r1163
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=media-libs/alsa-lib:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=MIDI Server for Chromium OS
+EAPI=7
+IUSE=+seccomp asan fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4201568ef8a1ffe39683b4c0dee8aeefc7eacfc8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4201568ef8a1ffe39683b4c0dee8aeefc7eacfc8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live live
+RDEPEND=media-libs/alsa-lib:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r1163
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=61d46feb83f427b075697f251017975b
diff --git a/metadata/md5-cache/chromeos-base/midis-9999 b/metadata/md5-cache/chromeos-base/midis-9999
index bf60b10..505ba82 100644
--- a/metadata/md5-cache/chromeos-base/midis-9999
+++ b/metadata/md5-cache/chromeos-base/midis-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=media-libs/alsa-lib:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=media-libs/alsa-lib:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=MIDI Server for Chromium OS
 EAPI=7
 IUSE=+seccomp asan fuzzer cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
@@ -9,5 +9,5 @@
 PROPERTIES=live live live
 RDEPEND=media-libs/alsa-lib:= chromeos-base/libbrillo:=[asan?,fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=16cd3dd60eb7c01cd811e61aace24404
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=422d695d24bdb7dc17f1c14cffb3504a
diff --git a/metadata/md5-cache/chromeos-base/minijail-14-r12 b/metadata/md5-cache/chromeos-base/minijail-14-r12
deleted file mode 100644
index 9669f28..0000000
--- a/metadata/md5-cache/chromeos-base/minijail-14-r12
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=sys-libs/libcap:= !<chromeos-base/chromeos-minijail-1 cros_host? ( python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_6? ( dev-python/setuptools[python_targets_python3_6(-)] ) python_single_target_python3_7? ( dev-python/setuptools[python_targets_python3_7(-)] ) ) test? ( dev-cpp/gtest:= )
-DESCRIPTION=helper binary and library for sandboxing & restricting privs of services
-EAPI=7
-HOMEPAGE=https://android.googlesource.com/platform/external/minijail
-IUSE=asan cros-debug +seccomp test cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_9c61132d11322772a0cd5ad3b8784463c438bb70 python_single_target_python3_6 python_single_target_python3_7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-libs/libcap:= !<chromeos-base/chromeos-minijail-1
-SLOT=0/14-r12
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8285841665d64e5b1abdd03321bc567c
diff --git a/metadata/md5-cache/chromeos-base/minijail-14-r17 b/metadata/md5-cache/chromeos-base/minijail-14-r17
new file mode 100644
index 0000000..9b8923e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/minijail-14-r17
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=sys-libs/libcap:= !<chromeos-base/chromeos-minijail-1 cros_host? ( python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_6? ( dev-python/setuptools[python_targets_python3_6(-)] ) python_single_target_python3_7? ( dev-python/setuptools[python_targets_python3_7(-)] ) ) test? ( dev-cpp/gtest:= )
+DESCRIPTION=helper binary and library for sandboxing & restricting privs of services
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/external/minijail
+IUSE=asan cros-debug +seccomp test cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_8f0401ffc128cc569f1cf571161e18d32574949f python_single_target_python3_6 python_single_target_python3_7
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-libs/libcap:= !<chromeos-base/chromeos-minijail-1
+SLOT=0/14-r17
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1fa81fd3191824fbdfe9163ba5c72f6e
diff --git a/metadata/md5-cache/chromeos-base/minijail-16-r20 b/metadata/md5-cache/chromeos-base/minijail-16-r20
new file mode 100644
index 0000000..60a2e46
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/minijail-16-r20
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=sys-libs/libcap:= !<chromeos-base/chromeos-minijail-1 cros_host? ( python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_6? ( dev-python/setuptools[python_targets_python3_6(-)] ) python_single_target_python3_7? ( dev-python/setuptools[python_targets_python3_7(-)] ) ) test? ( dev-cpp/gtest:= )
+DESCRIPTION=helper binary and library for sandboxing & restricting privs of services
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/external/minijail
+IUSE=asan cros-debug +seccomp test cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_5d7a4ada8dd246f22883e11dd0ad0c42af38dbad python_single_target_python3_6 python_single_target_python3_7
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-libs/libcap:= !<chromeos-base/chromeos-minijail-1
+SLOT=0/16-r20
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=308ffab599ecc992672c331be2b38343
diff --git a/metadata/md5-cache/chromeos-base/minijail-9999 b/metadata/md5-cache/chromeos-base/minijail-9999
index a4eb01f..3a22e10 100644
--- a/metadata/md5-cache/chromeos-base/minijail-9999
+++ b/metadata/md5-cache/chromeos-base/minijail-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=sys-libs/libcap:= !<chromeos-base/chromeos-minijail-1
 SLOT=0/9999
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dabdf465b9afac650ed401f67414b1cd
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3a3dea48855bef024c8abc0e9296c9df
diff --git a/metadata/md5-cache/chromeos-base/minios-0.0.1-r6 b/metadata/md5-cache/chromeos-base/minios-0.0.1-r6
deleted file mode 100644
index 0af22a9..0000000
--- a/metadata/md5-cache/chromeos-base/minios-0.0.1-r6
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=The miniOS main logic.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/minios/
-IUSE=minios cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_7b5886413278a82efc9726fe8d06e9e246f3f07a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_7b5886413278a82efc9726fe8d06e9e246f3f07a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-REQUIRED_USE=minios
-SLOT=0/0.0.1-r6
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a73af2b2b280a77374aa011f59cedc52
diff --git a/metadata/md5-cache/chromeos-base/minios-0.0.1-r81 b/metadata/md5-cache/chromeos-base/minios-0.0.1-r81
new file mode 100644
index 0000000..bb5ace8
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/minios-0.0.1-r81
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/shill-client:= chromeos-base/update_engine-client:= x11-libs/libxkbcommon:= x11-misc/xkeyboard-config:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=The miniOS main logic.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/minios/
+IUSE=minios cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_fc9a07b01b4aef5e812b651af72adda305cf7fa8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_fc9a07b01b4aef5e812b651af72adda305cf7fa8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/shill-client:= chromeos-base/update_engine-client:= x11-libs/libxkbcommon:= x11-misc/xkeyboard-config:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=minios
+SLOT=0/0.0.1-r81
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=84c5a90f13de4daad719af3e122de1e9
diff --git a/metadata/md5-cache/chromeos-base/minios-9999 b/metadata/md5-cache/chromeos-base/minios-9999
index dbe27d2..a81bde6 100644
--- a/metadata/md5-cache/chromeos-base/minios-9999
+++ b/metadata/md5-cache/chromeos-base/minios-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/shill-client:= chromeos-base/update_engine-client:= x11-libs/libxkbcommon:= x11-misc/xkeyboard-config:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=The miniOS main logic.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/minios/
@@ -8,8 +8,8 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=chromeos-base/shill-client:= chromeos-base/update_engine-client:= x11-libs/libxkbcommon:= x11-misc/xkeyboard-config:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 REQUIRED_USE=minios
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=7a376993222027ca8c8b5a8a332fc5b9
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8eab6ae6e6cbf8b324afead5de102dee
diff --git a/metadata/md5-cache/chromeos-base/missive-0.0.1-r48 b/metadata/md5-cache/chromeos-base/missive-0.0.1-r48
new file mode 100644
index 0000000..54ffbe1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/missive-0.0.1-r48
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/minijail:= dev-libs/protobuf:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Daemon to encrypt, store, and forward reporting events for managed devices.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/missive/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c4aa6b23a008514b6a797f7132ee29236d1b0277_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c4aa6b23a008514b6a797f7132ee29236d1b0277_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/minijail:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=4383b48932fca744039caacd12839b55
diff --git a/metadata/md5-cache/chromeos-base/missive-9999 b/metadata/md5-cache/chromeos-base/missive-9999
new file mode 100644
index 0000000..ddf6077
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/missive-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/minijail:= dev-libs/protobuf:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Daemon to encrypt, store, and forward reporting events for managed devices.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/missive/
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/minijail:= dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=fcac3b0ad22efc1ee2ce4b75a9ae0fa0
diff --git a/metadata/md5-cache/chromeos-base/mist-0.0.1-r3045 b/metadata/md5-cache/chromeos-base/mist-0.0.1-r3045
deleted file mode 100644
index 4da70a5..0000000
--- a/metadata/md5-cache/chromeos-base/mist-0.0.1-r3045
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:=[udev] >=chromeos-base/metrics-0.0.1-r3152 dev-libs/protobuf:= net-dialup/ppp virtual/libusb:1 virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= virtual/pkgconfig
-DESCRIPTION=Chromium OS Modem Interface Switching Tool
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/mist/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_819df31f145c1b256b5a9753dc4fc2f6681f020c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_819df31f145c1b256b5a9753dc4fc2f6681f020c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libbrillo:=[udev] >=chromeos-base/metrics-0.0.1-r3152 dev-libs/protobuf:= net-dialup/ppp virtual/libusb:1 virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=ddb9a59d00e8833e6875fdff6033859f
diff --git a/metadata/md5-cache/chromeos-base/mist-0.0.1-r3110 b/metadata/md5-cache/chromeos-base/mist-0.0.1-r3110
new file mode 100644
index 0000000..8563aa6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/mist-0.0.1-r3110
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libbrillo:=[udev] >=chromeos-base/metrics-0.0.1-r3152 dev-libs/protobuf:= net-dialup/ppp virtual/libusb:1 virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= virtual/pkgconfig
+DESCRIPTION=Chromium OS Modem Interface Switching Tool
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/mist/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_460b5c588dbf96a4f62c05b2dd799de43949c37b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_460b5c588dbf96a4f62c05b2dd799de43949c37b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libbrillo:=[udev] >=chromeos-base/metrics-0.0.1-r3152 dev-libs/protobuf:= net-dialup/ppp virtual/libusb:1 virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=cc5fc27245a01a5e4788fbf51c9b63a4
diff --git a/metadata/md5-cache/chromeos-base/mist-9999 b/metadata/md5-cache/chromeos-base/mist-9999
index ca3f92e..eb6aee97 100644
--- a/metadata/md5-cache/chromeos-base/mist-9999
+++ b/metadata/md5-cache/chromeos-base/mist-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:=[udev] >=chromeos-base/metrics-0.0.1-r3152 dev-libs/protobuf:= net-dialup/ppp virtual/libusb:1 virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= virtual/pkgconfig
+DEPEND=chromeos-base/libbrillo:=[udev] >=chromeos-base/metrics-0.0.1-r3152 dev-libs/protobuf:= net-dialup/ppp virtual/libusb:1 virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= virtual/pkgconfig
 DESCRIPTION=Chromium OS Modem Interface Switching Tool
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/mist/
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libbrillo:=[udev] >=chromeos-base/metrics-0.0.1-r3152 dev-libs/protobuf:= net-dialup/ppp virtual/libusb:1 virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a65d88a76373a62dbeb08ddbed469ca0
diff --git a/metadata/md5-cache/chromeos-base/ml-0.0.1-r434 b/metadata/md5-cache/chromeos-base/ml-0.0.1-r434
deleted file mode 100644
index dafdd95..0000000
--- a/metadata/md5-cache/chromeos-base/ml-0.0.1-r434
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) nnapi? ( chromeos-base/aosp-frameworks-ml-nn ) >=dev-libs/libgrammar-0.0.3:=[ondevice_grammar=] dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=] >=dev-libs/libtextclassifier-0.0.1-r79:= sci-libs/tensorflow:= chromeos-base/system_api:=[fuzzer?] dev-cpp/absl:= dev-libs/libutf:= dev-libs/marisa-aosp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Machine learning service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ml
-IUSE=dlc fuzzer ml_benchmark_drivers nnapi ondevice_grammar ondevice_handwriting ondevice_handwriting_dlc ondevice_speech cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_15d392511855fd12421e2bb0d735d75278a92065_4dc9e176d315085cb2b8c8ad66d1965575ef5280_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_15d392511855fd12421e2bb0d735d75278a92065_4dc9e176d315085cb2b8c8ad66d1965575ef5280_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) nnapi? ( chromeos-base/aosp-frameworks-ml-nn ) >=dev-libs/libgrammar-0.0.3:=[ondevice_grammar=] dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=] >=dev-libs/libtextclassifier-0.0.1-r79:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-REQUIRED_USE=ondevice_speech? ( dlc )
-SLOT=0/0.0.1-r434
-SRC_URI=gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20200206-downloadable.tflite gs://chromeos-localmirror/distfiles/mlservice-model-test_add-20180914.tflite gs://chromeos-localmirror/distfiles/mlservice-model-search_ranker-20190923.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20181115.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190221.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190521-v3.tflite
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=02b0537ba3648c1adf3e28825132f852
diff --git a/metadata/md5-cache/chromeos-base/ml-0.0.1-r524 b/metadata/md5-cache/chromeos-base/ml-0.0.1-r524
new file mode 100644
index 0000000..d76f970
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/ml-0.0.1-r524
@@ -0,0 +1,16 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= internal? ( ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) ) nnapi? ( chromeos-base/aosp-frameworks-ml-nn ) media-libs/cros-camera-document-scanning:=[ondevice_document_scanner=] >=dev-libs/libgrammar-0.0.4:=[ondevice_grammar=] dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=] dev-libs/libsuggest:=[ondevice_text_suggestions=] >=dev-libs/libtextclassifier-0.0.1-r79:= sci-libs/tensorflow:= chromeos-base/system_api:=[fuzzer?] dev-cpp/absl:= dev-libs/libutf:= dev-libs/marisa-aosp:= fuzzer? ( dev-libs/libprotobuf-mutator ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Machine learning service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ml
+IUSE=dlc fuzzer internal ml_benchmark_drivers nnapi ondevice_document_scanner ondevice_grammar ondevice_handwriting ondevice_handwriting_dlc ondevice_speech ondevice_text_suggestions cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_517c3fdaddc3179ddb87307a44118265bb0c00c3_20d593bc4f76d08b642ac2d57ed2f4f9af04ce50_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_517c3fdaddc3179ddb87307a44118265bb0c00c3_20d593bc4f76d08b642ac2d57ed2f4f9af04ce50_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= internal? ( ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) ) nnapi? ( chromeos-base/aosp-frameworks-ml-nn ) media-libs/cros-camera-document-scanning:=[ondevice_document_scanner=] >=dev-libs/libgrammar-0.0.4:=[ondevice_grammar=] dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=] dev-libs/libsuggest:=[ondevice_text_suggestions=] >=dev-libs/libtextclassifier-0.0.1-r79:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+REQUIRED_USE=ondevice_speech? ( dlc )
+SLOT=0/0.0.1-r524
+SRC_URI=gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20200206-downloadable.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20201022-downloadable.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20210201-downloadable.tflite gs://chromeos-localmirror/distfiles/mlservice-model-test_add-20180914.tflite gs://chromeos-localmirror/distfiles/mlservice-model-search_ranker-20190923.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20181115.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190221.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190521-v3.tflite
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=77455ed6c8ebded36cdf715f3b5265ab
diff --git a/metadata/md5-cache/chromeos-base/ml-9999 b/metadata/md5-cache/chromeos-base/ml-9999
index 1f7a4e8..aed933c 100644
--- a/metadata/md5-cache/chromeos-base/ml-9999
+++ b/metadata/md5-cache/chromeos-base/ml-9999
@@ -1,16 +1,16 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) nnapi? ( chromeos-base/aosp-frameworks-ml-nn ) >=dev-libs/libgrammar-0.0.3:=[ondevice_grammar=] dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=] >=dev-libs/libtextclassifier-0.0.1-r79:= sci-libs/tensorflow:= chromeos-base/system_api:=[fuzzer?] dev-cpp/absl:= dev-libs/libutf:= dev-libs/marisa-aosp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= internal? ( ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) ) nnapi? ( chromeos-base/aosp-frameworks-ml-nn ) media-libs/cros-camera-document-scanning:=[ondevice_document_scanner=] >=dev-libs/libgrammar-0.0.4:=[ondevice_grammar=] dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=] dev-libs/libsuggest:=[ondevice_text_suggestions=] >=dev-libs/libtextclassifier-0.0.1-r79:= sci-libs/tensorflow:= chromeos-base/system_api:=[fuzzer?] dev-cpp/absl:= dev-libs/libutf:= dev-libs/marisa-aosp:= fuzzer? ( dev-libs/libprotobuf-mutator ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Machine learning service for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ml
-IUSE=dlc fuzzer ml_benchmark_drivers nnapi ondevice_grammar ondevice_handwriting ondevice_handwriting_dlc ondevice_speech cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=dlc fuzzer internal ml_benchmark_drivers nnapi ondevice_document_scanner ondevice_grammar ondevice_handwriting ondevice_handwriting_dlc ondevice_speech ondevice_text_suggestions cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) nnapi? ( chromeos-base/aosp-frameworks-ml-nn ) >=dev-libs/libgrammar-0.0.3:=[ondevice_grammar=] dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=] >=dev-libs/libtextclassifier-0.0.1-r79:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= internal? ( ondevice_speech? ( chromeos-soda/libsoda:=[dlc=] ) ) nnapi? ( chromeos-base/aosp-frameworks-ml-nn ) media-libs/cros-camera-document-scanning:=[ondevice_document_scanner=] >=dev-libs/libgrammar-0.0.4:=[ondevice_grammar=] dev-libs/libhandwriting:=[ondevice_handwriting=,ondevice_handwriting_dlc=] dev-libs/libsuggest:=[ondevice_text_suggestions=] >=dev-libs/libtextclassifier-0.0.1-r79:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 REQUIRED_USE=ondevice_speech? ( dlc )
 SLOT=0/9999
-SRC_URI=gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20200206-downloadable.tflite gs://chromeos-localmirror/distfiles/mlservice-model-test_add-20180914.tflite gs://chromeos-localmirror/distfiles/mlservice-model-search_ranker-20190923.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20181115.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190221.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190521-v3.tflite
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=00e245119742e37b1ac9ba266f91a9d8
+SRC_URI=gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20200206-downloadable.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20201022-downloadable.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20210201-downloadable.tflite gs://chromeos-localmirror/distfiles/mlservice-model-test_add-20180914.tflite gs://chromeos-localmirror/distfiles/mlservice-model-search_ranker-20190923.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20181115.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190221.tflite gs://chromeos-localmirror/distfiles/mlservice-model-smart_dim-20190521-v3.tflite
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=31441942c3144e08f86645a7dc177346
diff --git a/metadata/md5-cache/chromeos-base/ml-benchmark-0.0.1-r65 b/metadata/md5-cache/chromeos-base/ml-benchmark-0.0.1-r65
deleted file mode 100644
index 304d5a2..0000000
--- a/metadata/md5-cache/chromeos-base/ml-benchmark-0.0.1-r65
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!chromeos-base/ml_benchmark >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS ML Benchmarking Suite
-EAPI=7
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4dc9e176d315085cb2b8c8ad66d1965575ef5280_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4dc9e176d315085cb2b8c8ad66d1965575ef5280_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!chromeos-base/ml_benchmark >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r65
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=de2e7b31608dac895aa3f04d8163f6bc
diff --git a/metadata/md5-cache/chromeos-base/ml-benchmark-0.0.1-r97 b/metadata/md5-cache/chromeos-base/ml-benchmark-0.0.1-r97
new file mode 100644
index 0000000..3db6d8d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/ml-benchmark-0.0.1-r97
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=!chromeos-base/ml_benchmark dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS ML Benchmarking Suite
+EAPI=7
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_20d593bc4f76d08b642ac2d57ed2f4f9af04ce50_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_20d593bc4f76d08b642ac2d57ed2f4f9af04ce50_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!chromeos-base/ml_benchmark >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r97
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ede7aa823cb4d397bbe09b03bbc60bd5
diff --git a/metadata/md5-cache/chromeos-base/ml-benchmark-9999 b/metadata/md5-cache/chromeos-base/ml-benchmark-9999
index 71ee8f5..fc7aee0 100644
--- a/metadata/md5-cache/chromeos-base/ml-benchmark-9999
+++ b/metadata/md5-cache/chromeos-base/ml-benchmark-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!chromeos-base/ml_benchmark >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=!chromeos-base/ml_benchmark dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS ML Benchmarking Suite
 EAPI=7
 IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=!chromeos-base/ml_benchmark >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d7c1c56b06b5a9d15bcbf6e50022e50a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=42669848026ae90e1e7dd25fa3c06e4e
diff --git a/metadata/md5-cache/chromeos-base/ml-cmdline-0.0.1-r127 b/metadata/md5-cache/chromeos-base/ml-cmdline-0.0.1-r127
deleted file mode 100644
index 55e6652..0000000
--- a/metadata/md5-cache/chromeos-base/ml-cmdline-0.0.1-r127
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/ml:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Command line interface to machine learning service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ml
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_15d392511855fd12421e2bb0d735d75278a92065_4dc9e176d315085cb2b8c8ad66d1965575ef5280_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_15d392511855fd12421e2bb0d735d75278a92065_4dc9e176d315085cb2b8c8ad66d1965575ef5280_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/ml:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d40389cebba6200a53cecbbf22b5174d
diff --git a/metadata/md5-cache/chromeos-base/ml-cmdline-0.0.1-r213 b/metadata/md5-cache/chromeos-base/ml-cmdline-0.0.1-r213
new file mode 100644
index 0000000..34e2d24
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/ml-cmdline-0.0.1-r213
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/ml:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Command line interface to machine learning service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ml
+IUSE=internal cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_517c3fdaddc3179ddb87307a44118265bb0c00c3_20d593bc4f76d08b642ac2d57ed2f4f9af04ce50_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_517c3fdaddc3179ddb87307a44118265bb0c00c3_20d593bc4f76d08b642ac2d57ed2f4f9af04ce50_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/ml:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2f21469dc0e171e6286a355d220a6e97
diff --git a/metadata/md5-cache/chromeos-base/ml-cmdline-9999 b/metadata/md5-cache/chromeos-base/ml-cmdline-9999
index fa8d1e6..73211a8 100644
--- a/metadata/md5-cache/chromeos-base/ml-cmdline-9999
+++ b/metadata/md5-cache/chromeos-base/ml-cmdline-9999
@@ -1,14 +1,14 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/ml:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/ml:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Command line interface to machine learning service for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ml
-IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=internal cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
 RDEPEND=chromeos-base/chrome-icu:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/ml:= sci-libs/tensorflow:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=25d7d253b5f69ff83af242ddd48ca7b4
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=76bd38f53774a952a93546b9b84af40b
diff --git a/metadata/md5-cache/chromeos-base/modem-utilities-0.0.1-r2806 b/metadata/md5-cache/chromeos-base/modem-utilities-0.0.1-r2806
deleted file mode 100644
index 697e63d4f..0000000
--- a/metadata/md5-cache/chromeos-base/modem-utilities-0.0.1-r2806
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DEPEND=sys-apps/dbus:=
-DESCRIPTION=Chromium OS modem utilities
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/modem-utilities/
-IUSE=cros_host cros_workon_tree_c799f4a3f9e3b430591d95864cf9e9f245543492
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-apps/dbus:=
-SLOT=0/0.0.1-r2806
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=783ceabe9e019561f71813d8f23d8286
diff --git a/metadata/md5-cache/chromeos-base/modem-utilities-0.0.1-r2819 b/metadata/md5-cache/chromeos-base/modem-utilities-0.0.1-r2819
new file mode 100644
index 0000000..5fd906e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/modem-utilities-0.0.1-r2819
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chromium OS modem utilities
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/modem-utilities/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_27ef0d6acd54bc79665263fb561d89abb458d867_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_27ef0d6acd54bc79665263fb561d89abb458d867_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=sys-apps/dbus:= virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r2819
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a41cde372bc15204d9b8297a8d1d45de
diff --git a/metadata/md5-cache/chromeos-base/modem-utilities-9999 b/metadata/md5-cache/chromeos-base/modem-utilities-9999
index ca1daea..37e6708 100644
--- a/metadata/md5-cache/chromeos-base/modem-utilities-9999
+++ b/metadata/md5-cache/chromeos-base/modem-utilities-9999
@@ -1,14 +1,14 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DEPEND=sys-apps/dbus:=
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chromium OS modem utilities
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/modem-utilities/
-IUSE=cros_host cros_workon_tree_
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-apps/dbus:=
+PROPERTIES=live live
+RDEPEND=sys-apps/dbus:= virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4997d249ef1153cbaf4ead6563e5c531
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1ae29fa980658293c9ce6c74dea2cc5a
diff --git a/metadata/md5-cache/chromeos-base/modemfwd-0.0.1-r769 b/metadata/md5-cache/chromeos-base/modemfwd-0.0.1-r769
deleted file mode 100644
index c92d379..0000000
--- a/metadata/md5-cache/chromeos-base/modemfwd-0.0.1-r769
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=app-arch/xz-utils:= chromeos-base/chromeos-config:= chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= net-misc/modemmanager-next:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Modem firmware updater daemon
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/modemfwd
-IUSE=fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_d27e3e781d3fed35b41282fa73fc88f5a4c554db_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_d27e3e781d3fed35b41282fa73fc88f5a4c554db_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=app-arch/xz-utils:= chromeos-base/chromeos-config:= chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= net-misc/modemmanager-next:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=25e8e39cde4f930d5d665b25e66a4ddb
diff --git a/metadata/md5-cache/chromeos-base/modemfwd-0.0.1-r831 b/metadata/md5-cache/chromeos-base/modemfwd-0.0.1-r831
new file mode 100644
index 0000000..5b1bfe0
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/modemfwd-0.0.1-r831
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=app-arch/xz-utils:= chromeos-base/chromeos-config:= chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= net-misc/modemmanager-next:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Modem firmware updater daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/modemfwd
+IUSE=fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_2791849b7eefd7dd81590b85ffcc88a96fa05725_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_2791849b7eefd7dd81590b85ffcc88a96fa05725_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=app-arch/xz-utils:= chromeos-base/chromeos-config:= chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= net-misc/modemmanager-next:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=a0b38c57b974e185318e3405c79d5cdd
diff --git a/metadata/md5-cache/chromeos-base/modemfwd-9999 b/metadata/md5-cache/chromeos-base/modemfwd-9999
index 4a04fdf..cf3332e 100644
--- a/metadata/md5-cache/chromeos-base/modemfwd-9999
+++ b/metadata/md5-cache/chromeos-base/modemfwd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=app-arch/xz-utils:= chromeos-base/chromeos-config:= chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= net-misc/modemmanager-next:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=app-arch/xz-utils:= chromeos-base/chromeos-config:= chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= net-misc/modemmanager-next:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Modem firmware updater daemon
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/modemfwd
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=app-arch/xz-utils:= chromeos-base/chromeos-config:= chromeos-base/chromeos-config-tools:= dev-libs/protobuf:= net-misc/modemmanager-next:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=8c95180662d4998bccf0777d7be77153
diff --git a/metadata/md5-cache/chromeos-base/mount-passthrough-0.0.2-r441 b/metadata/md5-cache/chromeos-base/mount-passthrough-0.0.2-r441
deleted file mode 100644
index 136813c2..0000000
--- a/metadata/md5-cache/chromeos-base/mount-passthrough-0.0.2-r441
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Mounts the specified directory with different owner UID and GID
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/mount-passthrough
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_34260e7ee218d17ec48dac40604604e901d6784f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_34260e7ee218d17ec48dac40604604e901d6784f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.2-r441
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=87feefc61f3cfc3c6a15a2665f89b22d
diff --git a/metadata/md5-cache/chromeos-base/mount-passthrough-0.0.2-r471 b/metadata/md5-cache/chromeos-base/mount-passthrough-0.0.2-r471
new file mode 100644
index 0000000..199143b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/mount-passthrough-0.0.2-r471
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Mounts the specified directory with different owner UID and GID
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/mount-passthrough
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_92e3d0aa6c1005f33e6a3ca09fbb2a775cf67d9f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_92e3d0aa6c1005f33e6a3ca09fbb2a775cf67d9f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.2-r471
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=88943c21437a941e4bf3607d1fab2cfc
diff --git a/metadata/md5-cache/chromeos-base/mount-passthrough-9999 b/metadata/md5-cache/chromeos-base/mount-passthrough-9999
index fd53375..8ece9cd 100644
--- a/metadata/md5-cache/chromeos-base/mount-passthrough-9999
+++ b/metadata/md5-cache/chromeos-base/mount-passthrough-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Mounts the specified directory with different owner UID and GID
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/mount-passthrough
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ede689604538a77a2043e2e36fe18e53
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=80f062d4aa6b21581751ebfde09c2850
diff --git a/metadata/md5-cache/chromeos-base/mri_package-0.0.1-r258 b/metadata/md5-cache/chromeos-base/mri_package-0.0.1-r258
deleted file mode 100644
index dace0c2..0000000
--- a/metadata/md5-cache/chromeos-base/mri_package-0.0.1-r258
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=media-sound/adhd:= >=sys-apps/dbus-1.0:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Media perception service
-EAPI=7
-IUSE=internal cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_44516a1024b7c65ba5231f4e0268a63f5766fde4_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_44516a1024b7c65ba5231f4e0268a63f5766fde4_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=media-sound/adhd:= >=sys-apps/dbus-1.0:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-RESTRICT=mirror
-SLOT=0/0.0.1-r258
-SRC_URI=internal? ( gs://chromeos-localmirror-private/distfiles/mri_package-72.0.0.tar.gz )
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=435084ffc388adb0a653b0e42cf2202d
diff --git a/metadata/md5-cache/chromeos-base/mri_package-0.0.1-r290 b/metadata/md5-cache/chromeos-base/mri_package-0.0.1-r290
new file mode 100644
index 0000000..40e8aac
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/mri_package-0.0.1-r290
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=media-sound/adhd:= >=sys-apps/dbus-1.0:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Media perception service
+EAPI=7
+IUSE=internal cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_9b0d8acf9fe935775132a5c3231a3dc32cbb08c6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_9b0d8acf9fe935775132a5c3231a3dc32cbb08c6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=media-sound/adhd:= >=sys-apps/dbus-1.0:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RESTRICT=mirror
+SLOT=0/0.0.1-r290
+SRC_URI=internal? ( gs://chromeos-localmirror-private/distfiles/mri_package-72.0.0.tar.gz )
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=29e1e2e28a00376af8fb9c032dcae445
diff --git a/metadata/md5-cache/chromeos-base/mri_package-9999 b/metadata/md5-cache/chromeos-base/mri_package-9999
index d1ec063..1781f9f 100644
--- a/metadata/md5-cache/chromeos-base/mri_package-9999
+++ b/metadata/md5-cache/chromeos-base/mri_package-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=media-sound/adhd:= >=sys-apps/dbus-1.0:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=media-sound/adhd:= >=sys-apps/dbus-1.0:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Media perception service
 EAPI=7
 IUSE=internal cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
@@ -11,5 +11,5 @@
 RESTRICT=mirror
 SLOT=0/9999
 SRC_URI=internal? ( gs://chromeos-localmirror-private/distfiles/mri_package-72.0.0.tar.gz )
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=f1a28582b98f084b87e2e475b0200b1b
diff --git a/metadata/md5-cache/chromeos-base/mst_hub_updater-1.0.1 b/metadata/md5-cache/chromeos-base/mst_hub_updater-1.0.1
index 08ea9b2..84fd022 100644
--- a/metadata/md5-cache/chromeos-base/mst_hub_updater-1.0.1
+++ b/metadata/md5-cache/chromeos-base/mst_hub_updater-1.0.1
@@ -5,4 +5,4 @@
 LICENSE=BSD-Realtek
 SLOT=0
 SRC_URI=gs://chromeos-localmirror/distfiles/mst_hub_updater-1.0.1.tar.gz
-_md5_=79e5390c6082fd71e2af10d3ef55ae80
+_md5_=7757f8f03f1f5c9781b83376ed5a9d9f
diff --git a/metadata/md5-cache/chromeos-base/mst_hub_updater-1.0.1-r2 b/metadata/md5-cache/chromeos-base/mst_hub_updater-1.0.1-r2
deleted file mode 100644
index 08ea9b2..0000000
--- a/metadata/md5-cache/chromeos-base/mst_hub_updater-1.0.1-r2
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=configure install
-DESCRIPTION=Firmware Updater for Realtek DP Multimedia Hub
-EAPI=7
-KEYWORDS=*
-LICENSE=BSD-Realtek
-SLOT=0
-SRC_URI=gs://chromeos-localmirror/distfiles/mst_hub_updater-1.0.1.tar.gz
-_md5_=79e5390c6082fd71e2af10d3ef55ae80
diff --git a/metadata/md5-cache/chromeos-base/mst_hub_updater-1.0.1-r3 b/metadata/md5-cache/chromeos-base/mst_hub_updater-1.0.1-r3
new file mode 100644
index 0000000..84fd022
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/mst_hub_updater-1.0.1-r3
@@ -0,0 +1,8 @@
+DEFINED_PHASES=configure install
+DESCRIPTION=Firmware Updater for Realtek DP Multimedia Hub
+EAPI=7
+KEYWORDS=*
+LICENSE=BSD-Realtek
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/mst_hub_updater-1.0.1.tar.gz
+_md5_=7757f8f03f1f5c9781b83376ed5a9d9f
diff --git a/metadata/md5-cache/chromeos-base/mtpd-0.0.1-r894 b/metadata/md5-cache/chromeos-base/mtpd-0.0.1-r894
deleted file mode 100644
index 61ff6d5..0000000
--- a/metadata/md5-cache/chromeos-base/mtpd-0.0.1-r894
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=dev-libs/protobuf:= media-libs/libmtp:= virtual/udev chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=MTP daemon for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/mtpd
-IUSE=-asan +seccomp systemd test cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_687fa4fa888a9258a15947e2468f5427bd1b90dd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_687fa4fa888a9258a15947e2468f5427bd1b90dd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/protobuf:= media-libs/libmtp:= virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r894
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=f5d1582673279457efb008e44dbf45e9
diff --git a/metadata/md5-cache/chromeos-base/mtpd-0.0.1-r933 b/metadata/md5-cache/chromeos-base/mtpd-0.0.1-r933
new file mode 100644
index 0000000..483f811
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/mtpd-0.0.1-r933
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=dev-libs/protobuf:= media-libs/libmtp:= virtual/udev chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=MTP daemon for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/mtpd
+IUSE=-asan +seccomp systemd test cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8f376208dea965d63708243a36895e4e7bd272b0_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8f376208dea965d63708243a36895e4e7bd272b0_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/protobuf:= media-libs/libmtp:= virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r933
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=2acec4cf7e2b0f77fe2ec98a138c39d2
diff --git a/metadata/md5-cache/chromeos-base/mtpd-9999 b/metadata/md5-cache/chromeos-base/mtpd-9999
index 503fbff..8b7d7dc 100644
--- a/metadata/md5-cache/chromeos-base/mtpd-9999
+++ b/metadata/md5-cache/chromeos-base/mtpd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=dev-libs/protobuf:= media-libs/libmtp:= virtual/udev chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=dev-libs/protobuf:= media-libs/libmtp:= virtual/udev chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=MTP daemon for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/mtpd
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/protobuf:= media-libs/libmtp:= virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=2d753eb52cf53db09d6cbd9c1a11d960
diff --git a/metadata/md5-cache/chromeos-base/mttools-0.0.1-r160 b/metadata/md5-cache/chromeos-base/mttools-0.0.1-r160
deleted file mode 100644
index 7e73580..0000000
--- a/metadata/md5-cache/chromeos-base/mttools-0.0.1-r160
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=chromeos-base/gestures app-misc/utouch-evemu chromeos-base/libevdev chromeos-base/touch_firmware_test
-DESCRIPTION=Chromium OS multitouch utilities
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/mttools
-IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_2a249f0f3fca6ab3c82d86616802086874f5c901 cros-debug
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/gestures app-misc/utouch-evemu chromeos-base/libevdev chromeos-base/touch_firmware_test
-RESTRICT=test
-SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=4de9fa22ccd3c14d69b62f8a9a261c49
diff --git a/metadata/md5-cache/chromeos-base/mttools-0.0.1-r163 b/metadata/md5-cache/chromeos-base/mttools-0.0.1-r163
new file mode 100644
index 0000000..7e2469b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/mttools-0.0.1-r163
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=chromeos-base/gestures app-misc/utouch-evemu chromeos-base/libevdev:= chromeos-base/touch_firmware_test
+DESCRIPTION=Chromium OS multitouch utilities
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/mttools
+IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_c25299ae6b5a681897f432f3dc7c2459be2e4cc6 cros-debug
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/gestures app-misc/utouch-evemu chromeos-base/libevdev:= chromeos-base/touch_firmware_test
+RESTRICT=test
+SLOT=0
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=4298127ba6ff71aec9f3c2530d3db6d0
diff --git a/metadata/md5-cache/chromeos-base/mttools-9999 b/metadata/md5-cache/chromeos-base/mttools-9999
index 865ec49..b90751b 100644
--- a/metadata/md5-cache/chromeos-base/mttools-9999
+++ b/metadata/md5-cache/chromeos-base/mttools-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=chromeos-base/gestures app-misc/utouch-evemu chromeos-base/libevdev chromeos-base/touch_firmware_test
+DEPEND=chromeos-base/gestures app-misc/utouch-evemu chromeos-base/libevdev:= chromeos-base/touch_firmware_test
 DESCRIPTION=Chromium OS multitouch utilities
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/mttools
@@ -7,8 +7,8 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=chromeos-base/gestures app-misc/utouch-evemu chromeos-base/libevdev chromeos-base/touch_firmware_test
+RDEPEND=chromeos-base/gestures app-misc/utouch-evemu chromeos-base/libevdev:= chromeos-base/touch_firmware_test
 RESTRICT=test
 SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0092e00d21f212b314fc6245f195c740
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=c0142f589c656eee35c0576a29738ccc
diff --git a/metadata/md5-cache/chromeos-base/ndproxyd-0.0.1-r162 b/metadata/md5-cache/chromeos-base/ndproxyd-0.0.1-r162
deleted file mode 100644
index 84a2a9fc..0000000
--- a/metadata/md5-cache/chromeos-base/ndproxyd-0.0.1-r162
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=NDProxy daemon
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/network/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_dce82635efeafb4457e130913bcabc6fcf00bdf7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_dce82635efeafb4457e130913bcabc6fcf00bdf7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= !chromeos-base/arc-networkd-ndproxyd >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r162
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ae2a1da4e3c7acf5e60e50cfb7d0345f
diff --git a/metadata/md5-cache/chromeos-base/ndproxyd-0.0.1-r233 b/metadata/md5-cache/chromeos-base/ndproxyd-0.0.1-r233
new file mode 100644
index 0000000..53c2148
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/ndproxyd-0.0.1-r233
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=NDProxy daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/network/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ae86a7d3ab814f4089a041bdf224a46af7c4b4bf_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ae86a7d3ab814f4089a041bdf224a46af7c4b4bf_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= !chromeos-base/arc-networkd-ndproxyd >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r233
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6ead97bbdea1ce9eab2abd8269d4c876
diff --git a/metadata/md5-cache/chromeos-base/ndproxyd-9999 b/metadata/md5-cache/chromeos-base/ndproxyd-9999
index 1d54d4c..7c111d1 100644
--- a/metadata/md5-cache/chromeos-base/ndproxyd-9999
+++ b/metadata/md5-cache/chromeos-base/ndproxyd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=NDProxy daemon
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/network/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/protobuf:= chromeos-base/libbrillo:= !chromeos-base/arc-networkd-ndproxyd >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=5f5e7c3966855911a14fbe5ca08f5ca9
diff --git a/metadata/md5-cache/chromeos-base/nnapi-0.0.2-r2 b/metadata/md5-cache/chromeos-base/nnapi-0.0.2-r2
deleted file mode 100644
index 386b609..0000000
--- a/metadata/md5-cache/chromeos-base/nnapi-0.0.2-r2
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS support utils for Android Neural Network API
-EAPI=7
-HOMEPAGE=https://developer.android.com/ndk/guides/neuralnetworks
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_febb5c918e5047e2dd8a2bd416944894f76e41b3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_d0c498cd8aacda36a50685194a4f11a5538c36ec_f3727b50e53c0a9f165bce6d96002698678ebe1b_97c692ea262a87836db5893fc63567ed30eadea6_4007f79bbd89b30be582cb0cdb1292ce377f34e1_077dba53acf2e9a7a56288ee75d515afa7541b94_bcea173391bb1aa3b0978ecc33a27d447e59eb18_6a8c1be1913e7a9ccf5141a072ad595a1e9d3add cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_febb5c918e5047e2dd8a2bd416944894f76e41b3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_d0c498cd8aacda36a50685194a4f11a5538c36ec_f3727b50e53c0a9f165bce6d96002698678ebe1b_97c692ea262a87836db5893fc63567ed30eadea6_4007f79bbd89b30be582cb0cdb1292ce377f34e1_077dba53acf2e9a7a56288ee75d515afa7541b94_bcea173391bb1aa3b0978ecc33a27d447e59eb18_6a8c1be1913e7a9ccf5141a072ad595a1e9d3add cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google Apache-2.0
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.2-r2
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e9987b9b4808e451315936528f5aa3a0
diff --git a/metadata/md5-cache/chromeos-base/nnapi-0.0.2-r3 b/metadata/md5-cache/chromeos-base/nnapi-0.0.2-r3
new file mode 100644
index 0000000..4c79cad
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/nnapi-0.0.2-r3
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS support utils for Android Neural Network API
+EAPI=7
+HOMEPAGE=https://developer.android.com/ndk/guides/neuralnetworks
+IUSE=cros_host cros_workon_tree_eaed4f3b0a8201ef3951bf1960728885ff99e772_64b6839ee0c350c6387157eb82ce359c719646f1_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_d0c498cd8aacda36a50685194a4f11a5538c36ec_84e5da480e7ca644dd680845aadd3c35eef39972_60d005eccb2f9431ea99a17d8637375a9e5e387d_4007f79bbd89b30be582cb0cdb1292ce377f34e1_077dba53acf2e9a7a56288ee75d515afa7541b94_bcea173391bb1aa3b0978ecc33a27d447e59eb18_6a8c1be1913e7a9ccf5141a072ad595a1e9d3add cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_eaed4f3b0a8201ef3951bf1960728885ff99e772_64b6839ee0c350c6387157eb82ce359c719646f1_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_d0c498cd8aacda36a50685194a4f11a5538c36ec_84e5da480e7ca644dd680845aadd3c35eef39972_60d005eccb2f9431ea99a17d8637375a9e5e387d_4007f79bbd89b30be582cb0cdb1292ce377f34e1_077dba53acf2e9a7a56288ee75d515afa7541b94_bcea173391bb1aa3b0978ecc33a27d447e59eb18_6a8c1be1913e7a9ccf5141a072ad595a1e9d3add cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google Apache-2.0
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.2-r3
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9a5f372a5290cc4353e0b0ca71888951
diff --git a/metadata/md5-cache/chromeos-base/nnapi-9999 b/metadata/md5-cache/chromeos-base/nnapi-9999
index f0c292e..c92483a 100644
--- a/metadata/md5-cache/chromeos-base/nnapi-9999
+++ b/metadata/md5-cache/chromeos-base/nnapi-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS support utils for Android Neural Network API
 EAPI=7
 HOMEPAGE=https://developer.android.com/ndk/guides/neuralnetworks
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=fabd7b85bb4f189c346e15ca1c389328
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=732e62eecaa289c18a881c2c5e29ebc0
diff --git a/metadata/md5-cache/chromeos-base/ocr-0.0.1-r35 b/metadata/md5-cache/chromeos-base/ocr-0.0.1-r35
deleted file mode 100644
index df3831d..0000000
--- a/metadata/md5-cache/chromeos-base/ocr-0.0.1-r35
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=app-text/tesseract:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Optical Character Recognition service for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ocr/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_697eec34c5129d11b04c630c745b96cf47b43234_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_697eec34c5129d11b04c630c745b96cf47b43234_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=app-text/tesseract:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=79d9e5492c9d50a7e5ea55543183b220
diff --git a/metadata/md5-cache/chromeos-base/ocr-0.0.1-r66 b/metadata/md5-cache/chromeos-base/ocr-0.0.1-r66
new file mode 100644
index 0000000..28500d9
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/ocr-0.0.1-r66
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=app-text/tesseract:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Optical Character Recognition service for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ocr/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e3d4b675a41bab4b0a7d7f2cc58a3113f54af7fd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e3d4b675a41bab4b0a7d7f2cc58a3113f54af7fd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=app-text/tesseract:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=c9cfbdb08ab7f0cb246b8a9fcc4daf60
diff --git a/metadata/md5-cache/chromeos-base/ocr-9999 b/metadata/md5-cache/chromeos-base/ocr-9999
index 14a1770..6c55e8e 100644
--- a/metadata/md5-cache/chromeos-base/ocr-9999
+++ b/metadata/md5-cache/chromeos-base/ocr-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=app-text/tesseract:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=app-text/tesseract:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Optical Character Recognition service for Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/ocr/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=app-text/tesseract:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=ff0977bafd016d8c9d5b52dfbec77af7
diff --git a/metadata/md5-cache/chromeos-base/oobe_config-0.0.1-r380 b/metadata/md5-cache/chromeos-base/oobe_config-0.0.1-r380
deleted file mode 100644
index 6e59754..0000000
--- a/metadata/md5-cache/chromeos-base/oobe_config-0.0.1-r380
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libtpmcrypto:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/openssl:0= sys-apps/dbus:= chromeos-base/power_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Provides utilities to save and restore OOBE config.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/oobe_config/
-IUSE=tpm tpm2 cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_1023baf673223aa6f3a095cad3bb1d878a2bef4a_6bcff6ea2d0ff76e4398205aee498eb314d63902_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_1023baf673223aa6f3a095cad3bb1d878a2bef4a_6bcff6ea2d0ff76e4398205aee498eb314d63902_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libtpmcrypto:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/openssl:0= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-REQUIRED_USE=?? ( tpm tpm2 )
-SLOT=0/0.0.1-r380
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=4a99a1911919dcd3638d6c9cd885cf13
diff --git a/metadata/md5-cache/chromeos-base/oobe_config-0.0.1-r461 b/metadata/md5-cache/chromeos-base/oobe_config-0.0.1-r461
new file mode 100644
index 0000000..1cdc191
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/oobe_config-0.0.1-r461
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= sys-apps/dbus:= chromeos-base/power_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Provides utilities to save and restore OOBE config.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/oobe_config/
+IUSE=tpm tpm2 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_7baa8fedddc9a906490da6057fd2cf6c54eb6207_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_7baa8fedddc9a906490da6057fd2cf6c54eb6207_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+REQUIRED_USE=?? ( tpm tpm2 )
+SLOT=0/0.0.1-r461
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=0b222be8724ffe7fec6fc4539ffdca2b
diff --git a/metadata/md5-cache/chromeos-base/oobe_config-9999 b/metadata/md5-cache/chromeos-base/oobe_config-9999
index bc7b8bc..93b10dc 100644
--- a/metadata/md5-cache/chromeos-base/oobe_config-9999
+++ b/metadata/md5-cache/chromeos-base/oobe_config-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libtpmcrypto:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/openssl:0= sys-apps/dbus:= chromeos-base/power_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= sys-apps/dbus:= chromeos-base/power_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Provides utilities to save and restore OOBE config.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/oobe_config/
@@ -8,8 +8,8 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/libtpmcrypto:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/openssl:0= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 REQUIRED_USE=?? ( tpm tpm2 )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=950b2d4b12e9f498572be778009c1542
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=bf8ff5939d44e9f31cf89d9f2e442495
diff --git a/metadata/md5-cache/chromeos-base/os_install_service-1.0.0-r8 b/metadata/md5-cache/chromeos-base/os_install_service-1.0.0-r8
new file mode 100644
index 0000000..82c3f95
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/os_install_service-1.0.0-r8
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/system_api:= =dev-rust/anyhow-1.0*:= =dev-rust/chrono-0.4*:= =dev-rust/crossbeam-channel-0.5*:= =dev-rust/dbus-0.8*:= =dev-rust/lazy_static-1.4*:= =dev-rust/log-0.4*:= =dev-rust/nix-0.19*:= =dev-rust/serde-1.0*:= =dev-rust/serde_json-1.0*:= dev-rust/sys_util:= =dev-rust/tempfile-3*:= =dev-rust/thiserror-1.0*:= >=virtual/rust-1.39.0:=
+EAPI=7
+IUSE=test cros_host cros_workon_tree_63583eb163b76ac260df1aed8cdd71950f87b8b3 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-installer sys-apps/util-linux sys-block/parted virtual/tmpfiles
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/1.0.0-r8
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2151b58b8b7c0e3669c5930401f87044
diff --git a/metadata/md5-cache/chromeos-base/os_install_service-9999 b/metadata/md5-cache/chromeos-base/os_install_service-9999
new file mode 100644
index 0000000..59f9f0e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/os_install_service-9999
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/system_api:= =dev-rust/anyhow-1.0*:= =dev-rust/chrono-0.4*:= =dev-rust/crossbeam-channel-0.5*:= =dev-rust/dbus-0.8*:= =dev-rust/lazy_static-1.4*:= =dev-rust/log-0.4*:= =dev-rust/nix-0.19*:= =dev-rust/serde-1.0*:= =dev-rust/serde_json-1.0*:= dev-rust/sys_util:= =dev-rust/tempfile-3*:= =dev-rust/thiserror-1.0*:= >=virtual/rust-1.39.0:=
+EAPI=7
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-installer sys-apps/util-linux sys-block/parted virtual/tmpfiles
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2e4734716584f7697ddf7e755480eb00
diff --git a/metadata/md5-cache/chromeos-base/p2p-0.0.1-r3261 b/metadata/md5-cache/chromeos-base/p2p-0.0.1-r3261
deleted file mode 100644
index dc6ba17..0000000
--- a/metadata/md5-cache/chromeos-base/p2p-0.0.1-r3261
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/glib:= net-dns/avahi-daemon:= net-firewall/iptables:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Chromium OS P2P
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/p2p/
-IUSE=cros-debug cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_f8450508e6487031816df1175191c729d63d1cce_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_f8450508e6487031816df1175191c729d63d1cce_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/glib:= net-dns/avahi-daemon:= net-firewall/iptables:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=6f3f85c841d97a71db139ac194d6af7f
diff --git a/metadata/md5-cache/chromeos-base/p2p-0.0.1-r3326 b/metadata/md5-cache/chromeos-base/p2p-0.0.1-r3326
new file mode 100644
index 0000000..5a89943
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/p2p-0.0.1-r3326
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/glib:= net-dns/avahi-daemon:= net-firewall/iptables:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Chromium OS P2P
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/p2p/
+IUSE=cros-debug cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_4a45ea46c086c0a4b6eeff7eb1365097acd44641_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_4a45ea46c086c0a4b6eeff7eb1365097acd44641_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/glib:= net-dns/avahi-daemon:= net-firewall/iptables:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=7715b09d00bd41b07409b0ead1a0302d
diff --git a/metadata/md5-cache/chromeos-base/p2p-9999 b/metadata/md5-cache/chromeos-base/p2p-9999
index 4a428d0..9fa828b 100644
--- a/metadata/md5-cache/chromeos-base/p2p-9999
+++ b/metadata/md5-cache/chromeos-base/p2p-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/glib:= net-dns/avahi-daemon:= net-firewall/iptables:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/glib:= net-dns/avahi-daemon:= net-firewall/iptables:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Chromium OS P2P
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/p2p/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/glib:= net-dns/avahi-daemon:= net-firewall/iptables:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=6ca1aa2faac464e989ad11c15375f012
diff --git a/metadata/md5-cache/chromeos-base/patchpanel-0.0.2-r187 b/metadata/md5-cache/chromeos-base/patchpanel-0.0.2-r187
deleted file mode 100644
index f978e69..0000000
--- a/metadata/md5-cache/chromeos-base/patchpanel-0.0.2-r187
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=dev-libs/protobuf:= !chromeos-base/arc-networkd chromeos-base/shill-net:= chromeos-base/system_api:=[fuzzer?] chromeos-base/session_manager-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Patchpanel network connectivity management daemon
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/patchpanel/
-IUSE=fuzzer arcvm jetstream_routing cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_dce82635efeafb4457e130913bcabc6fcf00bdf7_8d85bf6a0f007851c46d0aca5117edd10ecb0760_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_dce82635efeafb4457e130913bcabc6fcf00bdf7_8d85bf6a0f007851c46d0aca5117edd10ecb0760_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/protobuf:= !chromeos-base/arc-networkd chromeos-base/shill-net:= chromeos-base/system_api:=[fuzzer?] chromeos-base/shill net-firewall/iptables net-misc/bridge-utils sys-apps/iproute2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.2-r187
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=f57065963d1a1f0fa31ba485e4053252
diff --git a/metadata/md5-cache/chromeos-base/patchpanel-0.0.2-r277 b/metadata/md5-cache/chromeos-base/patchpanel-0.0.2-r277
new file mode 100644
index 0000000..0e31bb5
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/patchpanel-0.0.2-r277
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=dev-libs/protobuf:= !chromeos-base/arc-networkd chromeos-base/shill-net:= chromeos-base/system_api:=[fuzzer?] chromeos-base/session_manager-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Patchpanel network connectivity management daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/patchpanel/
+IUSE=fuzzer arcvm jetstream_routing cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ae86a7d3ab814f4089a041bdf224a46af7c4b4bf_1ed695b253a6cd0f70c4ceccdfe60c38e9bed7b8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ae86a7d3ab814f4089a041bdf224a46af7c4b4bf_1ed695b253a6cd0f70c4ceccdfe60c38e9bed7b8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/protobuf:= !chromeos-base/arc-networkd chromeos-base/shill-net:= chromeos-base/system_api:=[fuzzer?] chromeos-base/shill net-firewall/iptables net-misc/bridge-utils sys-apps/iproute2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.2-r277
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=839e27b9bfe311f721c057c60a7018e5
diff --git a/metadata/md5-cache/chromeos-base/patchpanel-9999 b/metadata/md5-cache/chromeos-base/patchpanel-9999
index 3a78036..26758db 100644
--- a/metadata/md5-cache/chromeos-base/patchpanel-9999
+++ b/metadata/md5-cache/chromeos-base/patchpanel-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=dev-libs/protobuf:= !chromeos-base/arc-networkd chromeos-base/shill-net:= chromeos-base/system_api:=[fuzzer?] chromeos-base/session_manager-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=dev-libs/protobuf:= !chromeos-base/arc-networkd chromeos-base/shill-net:= chromeos-base/system_api:=[fuzzer?] chromeos-base/session_manager-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Patchpanel network connectivity management daemon
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/patchpanel/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/protobuf:= !chromeos-base/arc-networkd chromeos-base/shill-net:= chromeos-base/system_api:=[fuzzer?] chromeos-base/shill net-firewall/iptables net-misc/bridge-utils sys-apps/iproute2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=aa392722f3ac7a739074062fe0ca3a06
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=88f3e5848761aeeaff19a7524d594a06
diff --git a/metadata/md5-cache/chromeos-base/patchpanel-client-0.0.1-r149 b/metadata/md5-cache/chromeos-base/patchpanel-client-0.0.1-r149
new file mode 100644
index 0000000..8b4cfdc9
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/patchpanel-client-0.0.1-r149
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/protobuf:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Patchpanel network connectivity management D-Bus client
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/patchpanel/dbus/
+IUSE=fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ae86a7d3ab814f4089a041bdf224a46af7c4b4bf_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ae86a7d3ab814f4089a041bdf224a46af7c4b4bf_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!<chromeos-base/patchpanel-0.0.2 dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r149
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=929c84aac3af025dc332194c31325e91
diff --git a/metadata/md5-cache/chromeos-base/patchpanel-client-0.0.1-r78 b/metadata/md5-cache/chromeos-base/patchpanel-client-0.0.1-r78
deleted file mode 100644
index 57fe528..0000000
--- a/metadata/md5-cache/chromeos-base/patchpanel-client-0.0.1-r78
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/protobuf:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Patchpanel network connectivity management D-Bus client
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/patchpanel/dbus/
-IUSE=fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_dce82635efeafb4457e130913bcabc6fcf00bdf7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_dce82635efeafb4457e130913bcabc6fcf00bdf7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!<chromeos-base/patchpanel-0.0.2 dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r78
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=50ea058d06e8ce91e14609df64dd83d8
diff --git a/metadata/md5-cache/chromeos-base/patchpanel-client-9999 b/metadata/md5-cache/chromeos-base/patchpanel-client-9999
index 46a603a..d5b693c 100644
--- a/metadata/md5-cache/chromeos-base/patchpanel-client-9999
+++ b/metadata/md5-cache/chromeos-base/patchpanel-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/protobuf:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-libs/protobuf:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Patchpanel network connectivity management D-Bus client
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/patchpanel/dbus/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=!<chromeos-base/patchpanel-0.0.2 dev-libs/protobuf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=e6ff2ba99369cfc45edc27c8ab474dba
diff --git a/metadata/md5-cache/chromeos-base/pciguard-0.0.1-r48 b/metadata/md5-cache/chromeos-base/pciguard-0.0.1-r48
new file mode 100644
index 0000000..5febf9e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/pciguard-0.0.1-r48
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Chrome OS External PCI device security daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/pciguard/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8f8f3fd6e34931380cbc9f35bf9f2bb74d9c7c8b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8f8f3fd6e34931380cbc9f35bf9f2bb74d9c7c8b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=3ef1cb32801bcb48010d2e626cb4b844
diff --git a/metadata/md5-cache/chromeos-base/pciguard-0.0.1-r5 b/metadata/md5-cache/chromeos-base/pciguard-0.0.1-r5
deleted file mode 100644
index 6ceb651..0000000
--- a/metadata/md5-cache/chromeos-base/pciguard-0.0.1-r5
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Chrome OS External PCI device security daemon
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/pciguard/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_0e27fcf3db77ce2ea5e204cba2d598db32cd2c71_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_0e27fcf3db77ce2ea5e204cba2d598db32cd2c71_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=c24aa418d550636784aff0d087039e1d
diff --git a/metadata/md5-cache/chromeos-base/pciguard-9999 b/metadata/md5-cache/chromeos-base/pciguard-9999
index 46b7151..778899d 100644
--- a/metadata/md5-cache/chromeos-base/pciguard-9999
+++ b/metadata/md5-cache/chromeos-base/pciguard-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Chrome OS External PCI device security daemon
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/pciguard/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=c583ae02a721ce60cc8761fed4103bd6
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=9c13828b9a52f1c715274e8db418a5f7
diff --git a/metadata/md5-cache/chromeos-base/percetto-0.1.5 b/metadata/md5-cache/chromeos-base/percetto-0.1.5
new file mode 100644
index 0000000..f375b97
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/percetto-0.1.5
@@ -0,0 +1,14 @@
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure install test
+DEPEND=chromeos-base/perfetto:=
+DESCRIPTION=Percetto is a C wrapper for Perfetto SDK.
+EAPI=7
+HOMEPAGE=https://github.com/olvaffe/percetto
+IUSE=cros-debug
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=chromeos-base/perfetto:=
+SLOT=0
+SRC_URI=https://github.com/olvaffe/percetto/archive/v0.1.5.tar.gz -> percetto-0.1.5.tar.gz
+_eclasses_=cros-debug	d2750757005d6a444f8eb12bb9eb9944	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6b47f446513b10369e48a50bb7a58014
diff --git a/metadata/md5-cache/chromeos-base/perfetto-10.0_pre20201112 b/metadata/md5-cache/chromeos-base/perfetto-10.0_pre20201112
deleted file mode 100644
index afd23ff..0000000
--- a/metadata/md5-cache/chromeos-base/perfetto-10.0_pre20201112
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-util/gn dev-util/ninja dev-libs/protobuf
-DEFINED_PHASES=compile configure install preinst
-DEPEND=sys-apps/baselayout
-DESCRIPTION=An open-source project for performance instrumentation and tracing.
-EAPI=7
-HOMEPAGE=https://perfetto.dev/
-IUSE=cros-debug
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=sys-apps/baselayout
-SLOT=0
-SRC_URI=https://github.com/google/perfetto/archive/53d3c085a784d64808cf67a32cac80182ecd87ef.tar.gz -> perfetto-10.0_pre20201112.tar.gz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=776b537455bb038110481bc955332dfc
diff --git a/metadata/md5-cache/chromeos-base/perfetto-10.0_pre20201112-r3 b/metadata/md5-cache/chromeos-base/perfetto-10.0_pre20201112-r3
deleted file mode 100644
index afd23ff..0000000
--- a/metadata/md5-cache/chromeos-base/perfetto-10.0_pre20201112-r3
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-util/gn dev-util/ninja dev-libs/protobuf
-DEFINED_PHASES=compile configure install preinst
-DEPEND=sys-apps/baselayout
-DESCRIPTION=An open-source project for performance instrumentation and tracing.
-EAPI=7
-HOMEPAGE=https://perfetto.dev/
-IUSE=cros-debug
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=sys-apps/baselayout
-SLOT=0
-SRC_URI=https://github.com/google/perfetto/archive/53d3c085a784d64808cf67a32cac80182ecd87ef.tar.gz -> perfetto-10.0_pre20201112.tar.gz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=776b537455bb038110481bc955332dfc
diff --git a/metadata/md5-cache/chromeos-base/perfetto-15.0-r3 b/metadata/md5-cache/chromeos-base/perfetto-15.0-r3
new file mode 100644
index 0000000..67fb11d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/perfetto-15.0-r3
@@ -0,0 +1,14 @@
+BDEPEND=dev-util/gn dev-util/ninja dev-libs/protobuf dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup unpack
+DEPEND=sys-apps/baselayout
+DESCRIPTION=An open-source project for performance instrumentation and tracing.
+EAPI=7
+HOMEPAGE=https://perfetto.dev/
+IUSE=cros-debug cros_host cros_workon_tree_b247aba769f84322900406f9d373e8d7856cf6e0
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live
+RDEPEND=virtual/tmpfiles sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=324862747608f8adc18efa7eb6c02b16
diff --git a/metadata/md5-cache/chromeos-base/perfetto-9999 b/metadata/md5-cache/chromeos-base/perfetto-9999
new file mode 100644
index 0000000..932dd20
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/perfetto-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-util/gn dev-util/ninja dev-libs/protobuf dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup unpack
+DEPEND=sys-apps/baselayout
+DESCRIPTION=An open-source project for performance instrumentation and tracing.
+EAPI=7
+HOMEPAGE=https://perfetto.dev/
+IUSE=cros-debug cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=Apache-2.0
+PROPERTIES=live
+RDEPEND=virtual/tmpfiles sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=4eb85bd6012a16ae4c4e913ce5d58010
diff --git a/metadata/md5-cache/chromeos-base/perfetto_proto-15.0-r37 b/metadata/md5-cache/chromeos-base/perfetto_proto-15.0-r37
new file mode 100644
index 0000000..ccf127b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/perfetto_proto-15.0-r37
@@ -0,0 +1,14 @@
+BDEPEND=dev-go/protobuf dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
+DEPEND=dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Perfetto go proto for Chrome OS
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/external/perfetto/+/refs/tags/v15.0/protos/perfetto/metrics/android/
+IUSE=cros-debug cros_host cros_workon_tree_984c6b95246a821639541839c2029754912f2849_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_984c6b95246a821639541839c2029754912f2849_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=30ecd4a2aa4442286f6822ff4ccc227f
diff --git a/metadata/md5-cache/chromeos-base/perfetto_proto-9999 b/metadata/md5-cache/chromeos-base/perfetto_proto-9999
new file mode 100644
index 0000000..86d140a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/perfetto_proto-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-go/protobuf dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
+DEPEND=dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Perfetto go proto for Chrome OS
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/external/perfetto/+/refs/tags/v15.0/protos/perfetto/metrics/android/
+IUSE=cros-debug cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=Apache-2.0
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ac17e1621e88c21167d54d4fb4dbaf10
diff --git a/metadata/md5-cache/chromeos-base/perfetto_simple_producer-0.0.1-r22 b/metadata/md5-cache/chromeos-base/perfetto_simple_producer-0.0.1-r22
new file mode 100644
index 0000000..51097c6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/perfetto_simple_producer-0.0.1-r22
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/perfetto:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Simple Producer of Perfetto for Chromium OS.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/perfetto_simple_producer
+IUSE=cros-debug cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_651dd9220b7c1753d9be19d970253a5b5efee7de_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_651dd9220b7c1753d9be19d970253a5b5efee7de_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r22
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=08e60df71bcbf713f02bf10b35075674
diff --git a/metadata/md5-cache/chromeos-base/perfetto_simple_producer-9999 b/metadata/md5-cache/chromeos-base/perfetto_simple_producer-9999
new file mode 100644
index 0000000..9c7d37f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/perfetto_simple_producer-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/perfetto:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Simple Producer of Perfetto for Chromium OS.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/perfetto_simple_producer
+IUSE=cros-debug cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ccf299ddcc43c7a483fb44912e85381d
diff --git a/metadata/md5-cache/chromeos-base/permission_broker-0.0.1-r3103 b/metadata/md5-cache/chromeos-base/permission_broker-0.0.1-r3103
deleted file mode 100644
index 773da88..0000000
--- a/metadata/md5-cache/chromeos-base/permission_broker-0.0.1-r3103
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/patchpanel-client:= sys-apps/dbus:= virtual/libusb:1 virtual/udev chromeos-base/system_api:=[fuzzer?] sys-kernel/linux-headers:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Permission Broker for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/
-IUSE=cfm_enabled_device fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c5711e94f1e2955d244a0532a8f4026f478c9eaf_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c5711e94f1e2955d244a0532a8f4026f478c9eaf_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/patchpanel-client:= sys-apps/dbus:= virtual/libusb:1 virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r3103
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=98ab9ec09f222c603a1df57dd2ea31cf
diff --git a/metadata/md5-cache/chromeos-base/permission_broker-0.0.1-r3137 b/metadata/md5-cache/chromeos-base/permission_broker-0.0.1-r3137
new file mode 100644
index 0000000..c19091e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/permission_broker-0.0.1-r3137
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/patchpanel-client:= sys-apps/dbus:= virtual/libusb:1 virtual/udev chromeos-base/system_api:=[fuzzer?] sys-kernel/linux-headers:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Permission Broker for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/
+IUSE=cfm_enabled_device fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a43dee1645ab3169cf3c0d94a0d83cf4492ec75b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a43dee1645ab3169cf3c0d94a0d83cf4492ec75b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/patchpanel-client:= sys-apps/dbus:= virtual/libusb:1 virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r3137
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=66b55102cbcfa1f22ee07c657a61ac7a
diff --git a/metadata/md5-cache/chromeos-base/permission_broker-9999 b/metadata/md5-cache/chromeos-base/permission_broker-9999
index 5f98b8b..fac9eea 100644
--- a/metadata/md5-cache/chromeos-base/permission_broker-9999
+++ b/metadata/md5-cache/chromeos-base/permission_broker-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/patchpanel-client:= sys-apps/dbus:= virtual/libusb:1 virtual/udev chromeos-base/system_api:=[fuzzer?] sys-kernel/linux-headers:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/patchpanel-client:= sys-apps/dbus:= virtual/libusb:1 virtual/udev chromeos-base/system_api:=[fuzzer?] sys-kernel/linux-headers:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Permission Broker for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/patchpanel-client:= sys-apps/dbus:= virtual/libusb:1 virtual/udev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=9a619de5bdf337ee4118e4afe9e5c080
diff --git a/metadata/md5-cache/chromeos-base/permission_broker-client-0.0.1-r1851 b/metadata/md5-cache/chromeos-base/permission_broker-client-0.0.1-r1851
deleted file mode 100644
index 81241b1..0000000
--- a/metadata/md5-cache/chromeos-base/permission_broker-client-0.0.1-r1851
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Permission Broker DBus client library for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/
-IUSE=cros_host cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c5711e94f1e2955d244a0532a8f4026f478c9eaf_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c5711e94f1e2955d244a0532a8f4026f478c9eaf_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r1851
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=fb32d8b1470a788b9e28014a53a88f77
diff --git a/metadata/md5-cache/chromeos-base/permission_broker-client-0.0.1-r1885 b/metadata/md5-cache/chromeos-base/permission_broker-client-0.0.1-r1885
new file mode 100644
index 0000000..ab4c6ec
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/permission_broker-client-0.0.1-r1885
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Permission Broker DBus client library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/
+IUSE=cros_host cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a43dee1645ab3169cf3c0d94a0d83cf4492ec75b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a43dee1645ab3169cf3c0d94a0d83cf4492ec75b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r1885
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4d6361fc0ac89e77dfde7776a92e4910
diff --git a/metadata/md5-cache/chromeos-base/permission_broker-client-9999 b/metadata/md5-cache/chromeos-base/permission_broker-client-9999
index 92ea6ad..9153729 100644
--- a/metadata/md5-cache/chromeos-base/permission_broker-client-9999
+++ b/metadata/md5-cache/chromeos-base/permission_broker-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Permission Broker DBus client library for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/permission_broker/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=47c7b468d0dab08c7d9214e59215ed9b
diff --git a/metadata/md5-cache/chromeos-base/policy-go-proto-0.0.1-r183 b/metadata/md5-cache/chromeos-base/policy-go-proto-0.0.1-r183
deleted file mode 100644
index 384bb8d..0000000
--- a/metadata/md5-cache/chromeos-base/policy-go-proto-0.0.1-r183
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=>=chromeos-base/protofiles-0.0.39:= dev-go/protobuf:= dev-libs/protobuf:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS policy protocol buffer binding for go
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/policy_proto
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_f6e985347a838bbbdd2997e97c4b4940571f2dd2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_f6e985347a838bbbdd2997e97c4b4940571f2dd2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r183
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=5bf09c846902047d726aac8207500cca
diff --git a/metadata/md5-cache/chromeos-base/policy-go-proto-0.0.1-r209 b/metadata/md5-cache/chromeos-base/policy-go-proto-0.0.1-r209
new file mode 100644
index 0000000..d5847f2
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/policy-go-proto-0.0.1-r209
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst setup test unpack
+DEPEND=>=chromeos-base/protofiles-0.0.44:= dev-go/protobuf:= dev-libs/protobuf:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS policy protocol buffer binding for go
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/policy_proto
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_f6e985347a838bbbdd2997e97c4b4940571f2dd2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_f6e985347a838bbbdd2997e97c4b4940571f2dd2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r209
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b880ad6094370d857cdeafad8f9aacc3
diff --git a/metadata/md5-cache/chromeos-base/policy-go-proto-9999 b/metadata/md5-cache/chromeos-base/policy-go-proto-9999
index ecf4b75..e53cbd4 100644
--- a/metadata/md5-cache/chromeos-base/policy-go-proto-9999
+++ b/metadata/md5-cache/chromeos-base/policy-go-proto-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=>=chromeos-base/protofiles-0.0.39:= dev-go/protobuf:= dev-libs/protobuf:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/protofiles-0.0.44:= dev-go/protobuf:= dev-libs/protobuf:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS policy protocol buffer binding for go
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/policy_proto
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a1a1b82232a30b678fad63caa1d508b9
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=88c2962402b880f92b44c8941d189b04
diff --git a/metadata/md5-cache/chromeos-base/policy-testserver-0.0.1 b/metadata/md5-cache/chromeos-base/policy-testserver-0.0.1
index 4ebb2d3..14ec628 100644
--- a/metadata/md5-cache/chromeos-base/policy-testserver-0.0.1
+++ b/metadata/md5-cache/chromeos-base/policy-testserver-0.0.1
@@ -8,4 +8,4 @@
 RDEPEND=dev-python/protobuf-python
 SLOT=0
 _eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=26e97858060cb60a929aa22555a36f69
+_md5_=1b70b4c3582c4137f24d8bdbaa7bec78
diff --git a/metadata/md5-cache/chromeos-base/policy-testserver-0.0.1-r6 b/metadata/md5-cache/chromeos-base/policy-testserver-0.0.1-r6
deleted file mode 100644
index 4ebb2d3..0000000
--- a/metadata/md5-cache/chromeos-base/policy-testserver-0.0.1-r6
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile install setup unpack
-DEPEND=dev-libs/protobuf
-DESCRIPTION=Dependencies needed by the policy_testserver
-EAPI=6
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-python/protobuf-python
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=26e97858060cb60a929aa22555a36f69
diff --git a/metadata/md5-cache/chromeos-base/policy-testserver-0.0.1-r9 b/metadata/md5-cache/chromeos-base/policy-testserver-0.0.1-r9
new file mode 100644
index 0000000..14ec628
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/policy-testserver-0.0.1-r9
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install setup unpack
+DEPEND=dev-libs/protobuf
+DESCRIPTION=Dependencies needed by the policy_testserver
+EAPI=6
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-python/protobuf-python
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=1b70b4c3582c4137f24d8bdbaa7bec78
diff --git a/metadata/md5-cache/chromeos-base/policy_utils-0.0.1-r185 b/metadata/md5-cache/chromeos-base/policy_utils-0.0.1-r185
deleted file mode 100644
index 4b79eb08..0000000
--- a/metadata/md5-cache/chromeos-base/policy_utils-0.0.1-r185
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Device-policy-management library and tool for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/policy_utils/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_810726bd67b063c208f3b11b6078df471e15d38e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_810726bd67b063c208f3b11b6078df471e15d38e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=930be5f0d55b98a1594d5381604f087a
diff --git a/metadata/md5-cache/chromeos-base/policy_utils-0.0.1-r212 b/metadata/md5-cache/chromeos-base/policy_utils-0.0.1-r212
new file mode 100644
index 0000000..dd69b857
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/policy_utils-0.0.1-r212
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Device-policy-management library and tool for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/policy_utils/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_bf58ace8c926195d4bb88f6341df4c0acccfd003_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_bf58ace8c926195d4bb88f6341df4c0acccfd003_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=088d99af2c5fec85f3a1e8e68233e6ee
diff --git a/metadata/md5-cache/chromeos-base/policy_utils-9999 b/metadata/md5-cache/chromeos-base/policy_utils-9999
index 557bd3b..1a7e201 100644
--- a/metadata/md5-cache/chromeos-base/policy_utils-9999
+++ b/metadata/md5-cache/chromeos-base/policy_utils-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/system_api >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Device-policy-management library and tool for Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/policy_utils/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=66de907fb8c0c3ab0fc366d16a6de9b5
diff --git a/metadata/md5-cache/chromeos-base/power_manager-0.0.2-r3634 b/metadata/md5-cache/chromeos-base/power_manager-0.0.2-r3634
deleted file mode 100644
index 4793aa3..0000000
--- a/metadata/md5-cache/chromeos-base/power_manager-0.0.2-r3634
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/libnl:= dev-libs/protobuf:= dev-libs/re2:= cras? ( media-sound/adhd:= ) virtual/udev chromeos-base/chromeos-ec-headers:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Power Manager for Chromium OS
-EAPI=7
-HOMEPAGE=http://dev.chromium.org/chromium-os/packages/power_manager
-IUSE=-als buffet +cras cros_embedded +display_backlight fuzzer generated_cros_config -has_keyboard_backlight -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -mosys_eventlog +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco trogdor_sar_hack cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_da25eefd3c0c9f59c7ef606fbc9c4ac8dacf0228_4a9d701c1716dbba6b3de3a9927299f399ec4580_8d228c8e702aebee142bcbf0763a15786eb5b3bb_f89d62f067e47fc70b2a70153729f6d4e5067414_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_da25eefd3c0c9f59c7ef606fbc9c4ac8dacf0228_4a9d701c1716dbba6b3de3a9927299f399ec4580_8d228c8e702aebee142bcbf0763a15786eb5b3bb_f89d62f067e47fc70b2a70153729f6d4e5067414_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/libnl:= dev-libs/protobuf:= dev-libs/re2:= cras? ( media-sound/adhd:= ) virtual/udev chromeos-base/ec-utils mosys_eventlog? ( sys-apps/mosys ) trogdor_sar_hack? ( net-libs/libqrtr:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-REQUIRED_USE=?? ( keyboard_includes_side_buttons keyboard_convertible_no_side_buttons )
-SLOT=0/0.0.2-r3634
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=2c5bcfae73f4000e8c10b8aa5216323f
diff --git a/metadata/md5-cache/chromeos-base/power_manager-0.0.2-r3790 b/metadata/md5-cache/chromeos-base/power_manager-0.0.2-r3790
new file mode 100644
index 0000000..a9bb2f1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/power_manager-0.0.2-r3790
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/libnl:= dev-libs/protobuf:= dev-libs/re2:= cras? ( media-sound/adhd:= ) virtual/udev cellular? ( net-misc/modemmanager-next:= ) chromeos-base/chromeos-ec-headers:= chromeos-base/system_api:=[fuzzer?] qrtr? ( sys-apps/upstart:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Power Manager for Chromium OS
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/chromium-os/packages/power_manager
+IUSE=-als buffet cellular +cras cros_embedded +display_backlight fuzzer generated_cros_config -has_keyboard_backlight iioservice -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -mosys_eventlog +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco qrtr cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_47f6ceba57219100723f2671e0d507bd7605f22f_aa0612733aca2d5ffa65470f07408228b473ebdb_da73aae6d89c8e69c3740af612610792ce42b1a8_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_71cce620cf464ad17334cff4d450f8805cd6c507_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_47f6ceba57219100723f2671e0d507bd7605f22f_aa0612733aca2d5ffa65470f07408228b473ebdb_da73aae6d89c8e69c3740af612610792ce42b1a8_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_71cce620cf464ad17334cff4d450f8805cd6c507_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/libnl:= dev-libs/protobuf:= dev-libs/re2:= cras? ( media-sound/adhd:= ) virtual/udev cellular? ( net-misc/modemmanager-next:= ) chromeos-base/ec-utils iioservice? ( chromeos-base/libiioservice_ipc:= ) mosys_eventlog? ( sys-apps/mosys ) qrtr? ( net-libs/libqrtr:= ) virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+REQUIRED_USE=?? ( keyboard_includes_side_buttons keyboard_convertible_no_side_buttons )
+SLOT=0/0.0.2-r3790
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=46830bd9f8d71aac104a20139b68137d
diff --git a/metadata/md5-cache/chromeos-base/power_manager-9999 b/metadata/md5-cache/chromeos-base/power_manager-9999
index 4f3e02d..8d77a15 100644
--- a/metadata/md5-cache/chromeos-base/power_manager-9999
+++ b/metadata/md5-cache/chromeos-base/power_manager-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/libnl:= dev-libs/protobuf:= dev-libs/re2:= cras? ( media-sound/adhd:= ) virtual/udev chromeos-base/chromeos-ec-headers:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/libnl:= dev-libs/protobuf:= dev-libs/re2:= cras? ( media-sound/adhd:= ) virtual/udev cellular? ( net-misc/modemmanager-next:= ) chromeos-base/chromeos-ec-headers:= chromeos-base/system_api:=[fuzzer?] qrtr? ( sys-apps/upstart:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Power Manager for Chromium OS
 EAPI=7
 HOMEPAGE=http://dev.chromium.org/chromium-os/packages/power_manager
-IUSE=-als buffet +cras cros_embedded +display_backlight fuzzer generated_cros_config -has_keyboard_backlight -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -mosys_eventlog +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco trogdor_sar_hack cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=-als buffet cellular +cras cros_embedded +display_backlight fuzzer generated_cros_config -has_keyboard_backlight iioservice -keyboard_includes_side_buttons keyboard_convertible_no_side_buttons -legacy_power_button -mosys_eventlog +powerknobs systemd +touchpad_wakeup -touchscreen_wakeup unibuild wilco qrtr cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/libnl:= dev-libs/protobuf:= dev-libs/re2:= cras? ( media-sound/adhd:= ) virtual/udev chromeos-base/ec-utils mosys_eventlog? ( sys-apps/mosys ) trogdor_sar_hack? ( net-libs/libqrtr:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/metrics-0.0.1-r3152:= dev-libs/libnl:= dev-libs/protobuf:= dev-libs/re2:= cras? ( media-sound/adhd:= ) virtual/udev cellular? ( net-misc/modemmanager-next:= ) chromeos-base/ec-utils iioservice? ( chromeos-base/libiioservice_ipc:= ) mosys_eventlog? ( sys-apps/mosys ) qrtr? ( net-libs/libqrtr:= ) virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 REQUIRED_USE=?? ( keyboard_includes_side_buttons keyboard_convertible_no_side_buttons )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=caeb19a0d83904dabf8fcd0c50643399
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=175fdc8f32f6301bfc369c06c19afd3f
diff --git a/metadata/md5-cache/chromeos-base/power_manager-client-0.0.1-r2055 b/metadata/md5-cache/chromeos-base/power_manager-client-0.0.1-r2055
deleted file mode 100644
index fba2c7b..0000000
--- a/metadata/md5-cache/chromeos-base/power_manager-client-0.0.1-r2055
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=chromeos-base/chromeos-dbus-bindings:= dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Power manager DBus client library for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/power_manager/
-IUSE=cros_host cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_f89d62f067e47fc70b2a70153729f6d4e5067414_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_f89d62f067e47fc70b2a70153729f6d4e5067414_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r2055
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f6951e9e071fdf30f36c664a4ac07f5e
diff --git a/metadata/md5-cache/chromeos-base/power_manager-client-0.0.1-r2138 b/metadata/md5-cache/chromeos-base/power_manager-client-0.0.1-r2138
new file mode 100644
index 0000000..c1f673b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/power_manager-client-0.0.1-r2138
@@ -0,0 +1,14 @@
+BDEPEND=chromeos-base/chromeos-dbus-bindings:= dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Power manager DBus client library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/power_manager/
+IUSE=cros_host cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_71cce620cf464ad17334cff4d450f8805cd6c507_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_71cce620cf464ad17334cff4d450f8805cd6c507_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r2138
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7810d7f85d9a9a74eb5fb0cc1b061c89
diff --git a/metadata/md5-cache/chromeos-base/power_manager-client-9999 b/metadata/md5-cache/chromeos-base/power_manager-client-9999
index 6f3baf2..da9bdd6 100644
--- a/metadata/md5-cache/chromeos-base/power_manager-client-9999
+++ b/metadata/md5-cache/chromeos-base/power_manager-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=chromeos-base/chromeos-dbus-bindings:= dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Power manager DBus client library for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/power_manager/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d328bdefe390a7490c448043ed07b52f
diff --git a/metadata/md5-cache/chromeos-base/print_tools-0.0.1-r110 b/metadata/md5-cache/chromeos-base/print_tools-0.0.1-r110
deleted file mode 100644
index 705841c..0000000
--- a/metadata/md5-cache/chromeos-base/print_tools-0.0.1-r110
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libipp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Various tools for the native printing system.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/print_tools/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c6bc491fe392f5e9d523ed67fd52f0577c5d7c6c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c6bc491fe392f5e9d523ed67fd52f0577c5d7c6c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libipp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r110
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2692ce40431d9eb20aa73f0faaae8266
diff --git a/metadata/md5-cache/chromeos-base/print_tools-0.0.1-r137 b/metadata/md5-cache/chromeos-base/print_tools-0.0.1-r137
new file mode 100644
index 0000000..61c6073
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/print_tools-0.0.1-r137
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libipp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Various tools for the native printing system.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/print_tools/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4b4fcd4dc4944c9bab8f045c666e71f7045ef67a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4b4fcd4dc4944c9bab8f045c666e71f7045ef67a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libipp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r137
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2c6277d9d6d58148e7fb78d731a08f3b
diff --git a/metadata/md5-cache/chromeos-base/print_tools-9999 b/metadata/md5-cache/chromeos-base/print_tools-9999
index e40f897..a46fb36 100644
--- a/metadata/md5-cache/chromeos-base/print_tools-9999
+++ b/metadata/md5-cache/chromeos-base/print_tools-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libipp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libipp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Various tools for the native printing system.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/print_tools/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libipp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=af270c8a1070ed8ac42eabf89e6d74a3
diff --git a/metadata/md5-cache/chromeos-base/protofiles-0.0.42 b/metadata/md5-cache/chromeos-base/protofiles-0.0.42
deleted file mode 100644
index c5fb860..0000000
--- a/metadata/md5-cache/chromeos-base/protofiles-0.0.42
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=>=dev-vcs/git-1.8.2.1[curl]
-DEFINED_PHASES=compile install setup unpack
-DESCRIPTION=Protobuf installer for the device policy proto definitions.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromium/src/components/policy
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<chromeos-base/chromeos-chrome-82.0.4056.0_rc-r1
-SLOT=0/0.0.42
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3390ddeaeca6117136ef83b952266040
diff --git a/metadata/md5-cache/chromeos-base/protofiles-0.0.46 b/metadata/md5-cache/chromeos-base/protofiles-0.0.46
new file mode 100644
index 0000000..baae478
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/protofiles-0.0.46
@@ -0,0 +1,12 @@
+BDEPEND=>=dev-vcs/git-1.8.2.1[curl]
+DEFINED_PHASES=compile install setup unpack
+DESCRIPTION=Protobuf installer for the device policy proto definitions.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromium/src/components/policy
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<chromeos-base/chromeos-chrome-82.0.4056.0_rc-r1
+SLOT=0/0.0.46
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=79ad7739f21d5296f9f02132688f8a76
diff --git a/metadata/md5-cache/chromeos-base/pywalt-0.1.8 b/metadata/md5-cache/chromeos-base/pywalt-0.1.8
index eab22fc..ed1e762 100644
--- a/metadata/md5-cache/chromeos-base/pywalt-0.1.8
+++ b/metadata/md5-cache/chromeos-base/pywalt-0.1.8
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0
 SRC_URI=https://github.com/google/walt/archive/v0.1.8.tar.gz -> pywalt-0.1.8.tar.gz
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=530a9c7a46581fbf21fb25376c8ad85f
diff --git a/metadata/md5-cache/chromeos-base/pywalt-0.1.8-r2 b/metadata/md5-cache/chromeos-base/pywalt-0.1.8-r2
index eab22fc..ed1e762 100644
--- a/metadata/md5-cache/chromeos-base/pywalt-0.1.8-r2
+++ b/metadata/md5-cache/chromeos-base/pywalt-0.1.8-r2
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0
 SRC_URI=https://github.com/google/walt/archive/v0.1.8.tar.gz -> pywalt-0.1.8.tar.gz
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=530a9c7a46581fbf21fb25376c8ad85f
diff --git a/metadata/md5-cache/chromeos-base/quipper-0.0.1-r2640 b/metadata/md5-cache/chromeos-base/quipper-0.0.1-r2640
deleted file mode 100644
index 68cd7cc..0000000
--- a/metadata/md5-cache/chromeos-base/quipper-0.0.1-r2640
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=dev-cpp/gflags-2.0:= >=dev-libs/glib-2.30:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/re2:= dev-util/perf:= chromeos-base/protofiles:= test? ( app-shells/dash ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=quipper: chromiumos wide profiling
-EAPI=7
-HOMEPAGE=http://www.chromium.org/chromium-os/profiling-in-chromeos
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=dev-cpp/gflags-2.0:= >=dev-libs/glib-2.30:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/re2:= dev-util/perf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r2640
-SRC_URI=gs://chromeos-localmirror/distfiles/quipper-f2342a4ef58a99e70a82fa63bdfea539477a4a8a.tar.gz
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=924b4aab57ae4cba566d11f0020d840a
diff --git a/metadata/md5-cache/chromeos-base/quipper-0.0.1-r2670 b/metadata/md5-cache/chromeos-base/quipper-0.0.1-r2670
new file mode 100644
index 0000000..0dd00ef
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/quipper-0.0.1-r2670
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=dev-cpp/gflags-2.0:= >=dev-libs/glib-2.30:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/re2:= dev-util/perf:= chromeos-base/protofiles:= test? ( app-shells/dash ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=quipper: chromiumos wide profiling
+EAPI=7
+HOMEPAGE=http://www.chromium.org/chromium-os/profiling-in-chromeos
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=dev-cpp/gflags-2.0:= >=dev-libs/glib-2.30:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/re2:= dev-util/perf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r2670
+SRC_URI=gs://chromeos-localmirror/distfiles/quipper-9876dd56d3d337f481812f9f7d0be632a23e3266.tar.gz
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c7aab12874e54d54fad1e978d65fe38d
diff --git a/metadata/md5-cache/chromeos-base/quipper-9999 b/metadata/md5-cache/chromeos-base/quipper-9999
index eea683e..10ff1a4 100644
--- a/metadata/md5-cache/chromeos-base/quipper-9999
+++ b/metadata/md5-cache/chromeos-base/quipper-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=dev-cpp/gflags-2.0:= >=dev-libs/glib-2.30:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/re2:= dev-util/perf:= chromeos-base/protofiles:= test? ( app-shells/dash ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=dev-cpp/gflags-2.0:= >=dev-libs/glib-2.30:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/re2:= dev-util/perf:= chromeos-base/protofiles:= test? ( app-shells/dash ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=quipper: chromiumos wide profiling
 EAPI=7
 HOMEPAGE=http://www.chromium.org/chromium-os/profiling-in-chromeos
@@ -10,6 +10,6 @@
 PROPERTIES=live live
 RDEPEND=>=dev-cpp/gflags-2.0:= >=dev-libs/glib-2.30:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/re2:= dev-util/perf:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-SRC_URI=gs://chromeos-localmirror/distfiles/quipper-f2342a4ef58a99e70a82fa63bdfea539477a4a8a.tar.gz
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=bfb7d186d2377a371fc8d05df4784060
+SRC_URI=gs://chromeos-localmirror/distfiles/quipper-9876dd56d3d337f481812f9f7d0be632a23e3266.tar.gz
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8d275222cd4f15a246364a9a3f338ebc
diff --git a/metadata/md5-cache/chromeos-base/recover-duts-0.0.1-r421 b/metadata/md5-cache/chromeos-base/recover-duts-0.0.1-r421
deleted file mode 100644
index 5d3f5e9..0000000
--- a/metadata/md5-cache/chromeos-base/recover-duts-0.0.1-r421
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Test tool that recovers bricked Chromium OS test devices
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crostestutils/+/master/recover_duts/
-IUSE=cros_host cros_workon_tree_f4b9ec28863b19d383a13538b72050113cea51cc
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/chromeos-init
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=33faf08547b3ae7fb91af181b2908633
diff --git a/metadata/md5-cache/chromeos-base/recover-duts-0.0.1-r422 b/metadata/md5-cache/chromeos-base/recover-duts-0.0.1-r422
new file mode 100644
index 0000000..61a83bb
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/recover-duts-0.0.1-r422
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Test tool that recovers bricked Chromium OS test devices
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crostestutils/+/master/recover_duts/
+IUSE=cros_host cros_workon_tree_7fba3fbaf5f4b3d95027ac22c7f18264adf38c4e
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-init
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8e17a1f8c3f9fd99457685148393fc1f
diff --git a/metadata/md5-cache/chromeos-base/recover-duts-9999 b/metadata/md5-cache/chromeos-base/recover-duts-9999
index ab7181b..b35b2ae 100644
--- a/metadata/md5-cache/chromeos-base/recover-duts-9999
+++ b/metadata/md5-cache/chromeos-base/recover-duts-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/chromeos-init
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=46038a9cd8cbde2a0446bd53714fe066
diff --git a/metadata/md5-cache/chromeos-base/regions-0.0.1-r2015 b/metadata/md5-cache/chromeos-base/regions-0.0.1-r2015
deleted file mode 100644
index ead9e99..0000000
--- a/metadata/md5-cache/chromeos-base/regions-0.0.1-r2015
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup test unpack
-DESCRIPTION=Chromium OS Region Data
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/regions/
-IUSE=cros_host cros_workon_tree_8c66061f71ff3187484ec4cfa8c86320c90cfdb4
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=app-misc/jq
-SLOT=0/0.0.1-r2015
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=707755dfd20a5433e62c9c983b2f221f
diff --git a/metadata/md5-cache/chromeos-base/regions-0.0.1-r2021 b/metadata/md5-cache/chromeos-base/regions-0.0.1-r2021
new file mode 100644
index 0000000..b1e8fc6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/regions-0.0.1-r2021
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install setup test unpack
+DESCRIPTION=Chromium OS Region Data
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/regions/
+IUSE=cros-debug cros_host cros_workon_tree_1dcc0a04496edb24287a6e3bb5411bcffbf8e9f5
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=app-misc/jq
+SLOT=0/0.0.1-r2021
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8efc1019131ee2dac11ba4e448694be6
diff --git a/metadata/md5-cache/chromeos-base/regions-9999 b/metadata/md5-cache/chromeos-base/regions-9999
index 7d63c0d..8b49b9d 100644
--- a/metadata/md5-cache/chromeos-base/regions-9999
+++ b/metadata/md5-cache/chromeos-base/regions-9999
@@ -3,11 +3,11 @@
 DESCRIPTION=Chromium OS Region Data
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/regions/
-IUSE=cros_host cros_workon_tree_
+IUSE=cros-debug cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=app-misc/jq
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=7ac9cfcb215d7dc955992c5f33690906
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b88699ca7103ee80dc73b5344456b105
diff --git a/metadata/md5-cache/chromeos-base/rendernodehost-0.0.1-r160 b/metadata/md5-cache/chromeos-base/rendernodehost-0.0.1-r160
deleted file mode 100644
index a7bc9b9..0000000
--- a/metadata/md5-cache/chromeos-base/rendernodehost-0.0.1-r160
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=x11-libs/libdrm:= cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=host service for render node forwarding
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/rendernodehost/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-SLOT=0/0.0.1-r160
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6d62b20bed3c502c417490b3354ff234
diff --git a/metadata/md5-cache/chromeos-base/rendernodehost-0.0.1-r185 b/metadata/md5-cache/chromeos-base/rendernodehost-0.0.1-r185
new file mode 100644
index 0000000..aeb2c0a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/rendernodehost-0.0.1-r185
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=x11-libs/libdrm:= cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=host service for render node forwarding
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/rendernodehost/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+SLOT=0/0.0.1-r185
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3be77773aac89e10fac89eb8afb370ce
diff --git a/metadata/md5-cache/chromeos-base/rendernodehost-9999 b/metadata/md5-cache/chromeos-base/rendernodehost-9999
index 9f8d04a..7d35333 100644
--- a/metadata/md5-cache/chromeos-base/rendernodehost-9999
+++ b/metadata/md5-cache/chromeos-base/rendernodehost-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=x11-libs/libdrm:= cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=x11-libs/libdrm:= cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=host service for render node forwarding
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/rendernodehost/
@@ -9,5 +9,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live live
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=00ba41671c260b9c3c2f7b373e056891
diff --git a/metadata/md5-cache/chromeos-base/resourced-0.1.0-r28 b/metadata/md5-cache/chromeos-base/resourced-0.1.0-r28
new file mode 100644
index 0000000..c4d0c0b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/resourced-0.1.0-r28
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/anyhow-1*:= =dev-rust/dbus-0.8*:= =dev-rust/once_cell-1.7*:= dev-rust/sys_util:= >=virtual/rust-1.39.0:= sys-apps/baselayout
+DESCRIPTION=ChromeOS Resource Management Daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/resourced/
+IUSE=+seccomp cros_host cros_workon_tree_6a4d75e270c74394b3fc795e7a47070bd0c5b9a8 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/baselayout
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r28
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=1966037d4931465f99e0f919eef5a766
diff --git a/metadata/md5-cache/chromeos-base/resourced-9999 b/metadata/md5-cache/chromeos-base/resourced-9999
new file mode 100644
index 0000000..2068171
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/resourced-9999
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/anyhow-1*:= =dev-rust/dbus-0.8*:= =dev-rust/once_cell-1.7*:= dev-rust/sys_util:= >=virtual/rust-1.39.0:= sys-apps/baselayout
+DESCRIPTION=ChromeOS Resource Management Daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/resourced/
+IUSE=+seccomp cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/baselayout
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=231ace93095a85ed416e055a41de90a1
diff --git a/metadata/md5-cache/chromeos-base/rmad-0.0.1-r49 b/metadata/md5-cache/chromeos-base/rmad-0.0.1-r49
new file mode 100644
index 0000000..1b30336f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/rmad-0.0.1-r49
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/system_api chromeos-base/vboot_reference >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=ChromeOS RMA daemon.
+EAPI=7
+IUSE=cr50_onboard ti50_onboard cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_31bdaf2fb61472fd3a728d100c15226c71caca7b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_31bdaf2fb61472fd3a728d100c15226c71caca7b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=cr50_onboard? ( chromeos-base/chromeos-cr50 ) ti50_onboard? ( chromeos-base/chromeos-ti50 ) chromeos-base/runtime_probe >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r49
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=1654874264d3cb81483a083e95e18445
diff --git a/metadata/md5-cache/chromeos-base/rmad-9999 b/metadata/md5-cache/chromeos-base/rmad-9999
new file mode 100644
index 0000000..6d6ea57
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/rmad-9999
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/system_api chromeos-base/vboot_reference >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=ChromeOS RMA daemon.
+EAPI=7
+IUSE=cr50_onboard ti50_onboard cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=cr50_onboard? ( chromeos-base/chromeos-cr50 ) ti50_onboard? ( chromeos-base/chromeos-ti50 ) chromeos-base/runtime_probe >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=1ada6fce03e5b379b9be12a355c958df
diff --git a/metadata/md5-cache/chromeos-base/rmi4utils-1.2.13-r1 b/metadata/md5-cache/chromeos-base/rmi4utils-1.2.13-r1
deleted file mode 100644
index 62d8af6..0000000
--- a/metadata/md5-cache/chromeos-base/rmi4utils-1.2.13-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=configure install
-DESCRIPTION=Synaptics RMI4 Utilities for Firmware Update
-EAPI=4
-HOMEPAGE=https://github.com/aduggan/rmi4utils
-KEYWORDS=*
-LICENSE=Apache-2.0
-SLOT=0
-SRC_URI=https://github.com/aduggan/rmi4utils/archive/v1.2.13.tar.gz -> rmi4utils-1.2.13.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=802520a4aa6a748dd8046055ea9d1da1
diff --git a/metadata/md5-cache/chromeos-base/rmi4utils-1.3.6-r1 b/metadata/md5-cache/chromeos-base/rmi4utils-1.3.6-r1
new file mode 100644
index 0000000..56a5353
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/rmi4utils-1.3.6-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=configure install
+DESCRIPTION=Synaptics RMI4 Utilities for Firmware Update
+EAPI=7
+HOMEPAGE=https://github.com/aduggan/rmi4utils
+KEYWORDS=*
+LICENSE=Apache-2.0
+SLOT=0
+SRC_URI=https://github.com/aduggan/rmi4utils/archive/v1.3.6.tar.gz -> rmi4utils-1.3.6.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5c0ac445492a2c9aa98a2c66b04311c7
diff --git a/metadata/md5-cache/chromeos-base/run_oci-0.0.1-r1077 b/metadata/md5-cache/chromeos-base/run_oci-0.0.1-r1077
deleted file mode 100644
index 462d49b..0000000
--- a/metadata/md5-cache/chromeos-base/run_oci-0.0.1-r1077
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libcontainer:= sys-apps/util-linux:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Utility for running OCI-compatible containers
-EAPI=7
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ed310628c7b59ac5528ea8347990fc4f5e95c915_bcebcb36c5f685f0a530a8b411d7ffe49de01240_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_ed310628c7b59ac5528ea8347990fc4f5e95c915_bcebcb36c5f685f0a530a8b411d7ffe49de01240_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libcontainer:= sys-apps/util-linux:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=71aa48752fa56374951361ef066d8d95
diff --git a/metadata/md5-cache/chromeos-base/run_oci-0.0.1-r1108 b/metadata/md5-cache/chromeos-base/run_oci-0.0.1-r1108
new file mode 100644
index 0000000..e00e969
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/run_oci-0.0.1-r1108
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libcontainer:= sys-apps/util-linux:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Utility for running OCI-compatible containers
+EAPI=7
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a2ab6048637d439be995dd4cdc3ef91d0291fb42_6ed3b507fc245405455010e3d50c3a434a5d9548_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a2ab6048637d439be995dd4cdc3ef91d0291fb42_6ed3b507fc245405455010e3d50c3a434a5d9548_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libcontainer:= sys-apps/util-linux:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=309d4148c9f07c49c8279b62878c76c7
diff --git a/metadata/md5-cache/chromeos-base/run_oci-9999 b/metadata/md5-cache/chromeos-base/run_oci-9999
index 9f67903..4e80ab9 100644
--- a/metadata/md5-cache/chromeos-base/run_oci-9999
+++ b/metadata/md5-cache/chromeos-base/run_oci-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libcontainer:= sys-apps/util-linux:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libcontainer:= sys-apps/util-linux:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Utility for running OCI-compatible containers
 EAPI=7
 IUSE=cros_host cros_workon_tree_ cros-debug cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libcontainer:= sys-apps/util-linux:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=8bec23d4278001d7155199046121047d
diff --git a/metadata/md5-cache/chromeos-base/runtime_probe-0.0.1-r495 b/metadata/md5-cache/chromeos-base/runtime_probe-0.0.1-r495
deleted file mode 100644
index 0362a8b..0000000
--- a/metadata/md5-cache/chromeos-base/runtime_probe-0.0.1-r495
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Runtime probing on device componenets.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/runtime_probe/
-IUSE=generated_cros_config unibuild asan fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_fae342a0fc21bedcbf458a1b43150187b54dbe03_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4a9d701c1716dbba6b3de3a9927299f399ec4580_fae342a0fc21bedcbf458a1b43150187b54dbe03_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r495
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=3be71f9ee1bb70ae665bf76a119b10ab
diff --git a/metadata/md5-cache/chromeos-base/runtime_probe-0.0.1-r569 b/metadata/md5-cache/chromeos-base/runtime_probe-0.0.1-r569
new file mode 100644
index 0000000..4dac723
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/runtime_probe-0.0.1-r569
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Runtime probing on device componenets.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/runtime_probe/
+IUSE=generated_cros_config unibuild asan fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_5bcd4487aea45b91806e5db9af44e6b3d9290c13_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_aa0612733aca2d5ffa65470f07408228b473ebdb_5bcd4487aea45b91806e5db9af44e6b3d9290c13_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/ec-utils >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r569
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=27c384b5ddd7cdd7c5ae4d2852224095
diff --git a/metadata/md5-cache/chromeos-base/runtime_probe-9999 b/metadata/md5-cache/chromeos-base/runtime_probe-9999
index 40724a8..3f716a3 100644
--- a/metadata/md5-cache/chromeos-base/runtime_probe-9999
+++ b/metadata/md5-cache/chromeos-base/runtime_probe-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Runtime probing on device componenets.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/runtime_probe/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config:= ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools:= chromeos-base/ec-utils >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=b45283c9d05178f91e365a95348425ee
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=0fc686d2bfb544576a29b36e1ce9aec0
diff --git a/metadata/md5-cache/chromeos-base/sample-dlc-1.0.0 b/metadata/md5-cache/chromeos-base/sample-dlc-1.0.0
index 74b2499..2cacaac 100644
--- a/metadata/md5-cache/chromeos-base/sample-dlc-1.0.0
+++ b/metadata/md5-cache/chromeos-base/sample-dlc-1.0.0
@@ -1,12 +1,11 @@
 DEFINED_PHASES=install unpack
-DEPEND=chromeos-base/update_engine
 DESCRIPTION=A sample DLC
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice
-IUSE=dlc
+IUSE=dlc dlc_test
 KEYWORDS=*
 LICENSE=BSD-Google
-REQUIRED_USE=dlc
+REQUIRED_USE=dlc dlc_test
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	dlc	c539aa2d32aaba22acfb2eb623710a96
-_md5_=858ebda7430562f005fd492c4e9fdf92
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	dlc	7fff3565c77657ab37a6955949c208a7
+_md5_=b4d090714372ee2e10aa8fc08768b217
diff --git a/metadata/md5-cache/chromeos-base/sample-dlc-1.0.0-r1 b/metadata/md5-cache/chromeos-base/sample-dlc-1.0.0-r1
deleted file mode 100644
index 74b2499..0000000
--- a/metadata/md5-cache/chromeos-base/sample-dlc-1.0.0-r1
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=install unpack
-DEPEND=chromeos-base/update_engine
-DESCRIPTION=A sample DLC
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice
-IUSE=dlc
-KEYWORDS=*
-LICENSE=BSD-Google
-REQUIRED_USE=dlc
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	dlc	c539aa2d32aaba22acfb2eb623710a96
-_md5_=858ebda7430562f005fd492c4e9fdf92
diff --git a/metadata/md5-cache/chromeos-base/sample-dlc-1.0.0-r3 b/metadata/md5-cache/chromeos-base/sample-dlc-1.0.0-r3
new file mode 100644
index 0000000..2cacaac
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/sample-dlc-1.0.0-r3
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install unpack
+DESCRIPTION=A sample DLC
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/dlcservice
+IUSE=dlc dlc_test
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=dlc dlc_test
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	dlc	7fff3565c77657ab37a6955949c208a7
+_md5_=b4d090714372ee2e10aa8fc08768b217
diff --git a/metadata/md5-cache/chromeos-base/screen-capture-utils-0.0.1-r13 b/metadata/md5-cache/chromeos-base/screen-capture-utils-0.0.1-r13
deleted file mode 100644
index a19bece..0000000
--- a/metadata/md5-cache/chromeos-base/screen-capture-utils-0.0.1-r13
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!chromeos-base/screenshot media-libs/libpng:0= media-libs/minigbm:= x11-libs/libdrm:= virtual/opengles x11-drivers/opengles-headers >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Utilities for screen capturing
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/screen-capture-utils/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_87425e8ce0b739c39c6e03febd179b9d850ad295_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_87425e8ce0b739c39c6e03febd179b9d850ad295_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!chromeos-base/screenshot media-libs/libpng:0= media-libs/minigbm:= x11-libs/libdrm:= virtual/opengles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r13
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2f1321b183a5d3e5c2dbe667c16dd0b8
diff --git a/metadata/md5-cache/chromeos-base/screen-capture-utils-0.0.1-r88 b/metadata/md5-cache/chromeos-base/screen-capture-utils-0.0.1-r88
new file mode 100644
index 0000000..536faba
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/screen-capture-utils-0.0.1-r88
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/metrics !chromeos-base/screenshot media-libs/libpng:0= media-libs/minigbm:= net-libs/libvncserver x11-libs/libdrm:= virtual/opengles x11-drivers/opengles-headers >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Utilities for screen capturing
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/screen-capture-utils/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4abc9fac8153750a03865f00a60126fc46c47d5f_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4abc9fac8153750a03865f00a60126fc46c47d5f_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/metrics !chromeos-base/screenshot media-libs/libpng:0= media-libs/minigbm:= net-libs/libvncserver x11-libs/libdrm:= virtual/opengles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r88
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b0754a0193208f1d9814983c09a5cd9c
diff --git a/metadata/md5-cache/chromeos-base/screen-capture-utils-9999 b/metadata/md5-cache/chromeos-base/screen-capture-utils-9999
index 3efb190a8..943a3e4 100644
--- a/metadata/md5-cache/chromeos-base/screen-capture-utils-9999
+++ b/metadata/md5-cache/chromeos-base/screen-capture-utils-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!chromeos-base/screenshot media-libs/libpng:0= media-libs/minigbm:= x11-libs/libdrm:= virtual/opengles x11-drivers/opengles-headers >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/metrics !chromeos-base/screenshot media-libs/libpng:0= media-libs/minigbm:= net-libs/libvncserver x11-libs/libdrm:= virtual/opengles x11-drivers/opengles-headers >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Utilities for screen capturing
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/screen-capture-utils/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=!chromeos-base/screenshot media-libs/libpng:0= media-libs/minigbm:= x11-libs/libdrm:= virtual/opengles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=chromeos-base/metrics !chromeos-base/screenshot media-libs/libpng:0= media-libs/minigbm:= net-libs/libvncserver x11-libs/libdrm:= virtual/opengles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=851f4116d9521564712d703eeb5cbe93
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1453c047744795339594137b7d1cb88d
diff --git a/metadata/md5-cache/chromeos-base/sealed_storage-0.0.1-r276 b/metadata/md5-cache/chromeos-base/sealed_storage-0.0.1-r276
deleted file mode 100644
index 9c22cb5..0000000
--- a/metadata/md5-cache/chromeos-base/sealed_storage-0.0.1-r276
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/tpm_manager:=[test?] chromeos-base/trunks:=[test?] chromeos-base/protofiles:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Library for sealing data to device identity and state
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/sealed_storage
-IUSE=test tpm2 cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_384813f5d95af6db62e2f5487c196bf00e11c993_e3bf102d9535965e9911dc352202c6927e8f5514_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_384813f5d95af6db62e2f5487c196bf00e11c993_e3bf102d9535965e9911dc352202c6927e8f5514_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/tpm_manager:=[test?] chromeos-base/trunks:=[test?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-REQUIRED_USE=tpm2
-SLOT=0/0.0.1-r276
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c3c98f63caac9f0354e35368ba002634
diff --git a/metadata/md5-cache/chromeos-base/sealed_storage-0.0.1-r349 b/metadata/md5-cache/chromeos-base/sealed_storage-0.0.1-r349
new file mode 100644
index 0000000..eefd52e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/sealed_storage-0.0.1-r349
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/tpm_manager:=[test?] chromeos-base/trunks:=[test?] chromeos-base/protofiles:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Library for sealing data to device identity and state
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/sealed_storage
+IUSE=test tpm2 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8c9a3cf268c90fb53e2168f7124f6fa15c1d9f12_8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8c9a3cf268c90fb53e2168f7124f6fa15c1d9f12_8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/tpm_manager:=[test?] chromeos-base/trunks:=[test?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=tpm2
+SLOT=0/0.0.1-r349
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1fd23fdb278fbc26c7395c695712d951
diff --git a/metadata/md5-cache/chromeos-base/sealed_storage-9999 b/metadata/md5-cache/chromeos-base/sealed_storage-9999
index ede122c..e5b4391 100644
--- a/metadata/md5-cache/chromeos-base/sealed_storage-9999
+++ b/metadata/md5-cache/chromeos-base/sealed_storage-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/tpm_manager:=[test?] chromeos-base/trunks:=[test?] chromeos-base/protofiles:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/tpm_manager:=[test?] chromeos-base/trunks:=[test?] chromeos-base/protofiles:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Library for sealing data to device identity and state
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/sealed_storage
@@ -11,5 +11,5 @@
 RDEPEND=chromeos-base/tpm_manager:=[test?] chromeos-base/trunks:=[test?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 REQUIRED_USE=tpm2
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=babd9b538942850f16e63ca22fcd930a
diff --git a/metadata/md5-cache/chromeos-base/secanomalyd-0.0.1-r46 b/metadata/md5-cache/chromeos-base/secanomalyd-0.0.1-r46
new file mode 100644
index 0000000..a47fb89
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/secanomalyd-0.0.1-r46
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/metrics:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Chrome OS security-anomaly detection daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/secanomalyd/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_f5e4a2744562739c141e10842394812115ba314e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_f5e4a2744562739c141e10842394812115ba314e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/metrics:= chromeos-base/vboot_reference:= chromeos-base/minijail:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r46
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=5f4ca52c1dd5a5d72846f45d6c5eb4b0
diff --git a/metadata/md5-cache/chromeos-base/secanomalyd-9999 b/metadata/md5-cache/chromeos-base/secanomalyd-9999
new file mode 100644
index 0000000..72327941
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/secanomalyd-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/metrics:= chromeos-base/vboot_reference:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Chrome OS security-anomaly detection daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/secanomalyd/
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/metrics:= chromeos-base/vboot_reference:= chromeos-base/minijail:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=f0d2b08e58bf965ec5c1b3c3f60b4fff
diff --git a/metadata/md5-cache/chromeos-base/secure-erase-file-0.0.1-r903 b/metadata/md5-cache/chromeos-base/secure-erase-file-0.0.1-r903
deleted file mode 100644
index 3fa3363..0000000
--- a/metadata/md5-cache/chromeos-base/secure-erase-file-0.0.1-r903
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Secure file erasure for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/secure_erase_file/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4f428eceb77ddeae2a9cdbc99367fd321c975f15_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4f428eceb77ddeae2a9cdbc99367fd321c975f15_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r903
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e124758e43aa89592de2e902ea802ec8
diff --git a/metadata/md5-cache/chromeos-base/secure-erase-file-0.0.1-r929 b/metadata/md5-cache/chromeos-base/secure-erase-file-0.0.1-r929
new file mode 100644
index 0000000..933dc2c
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/secure-erase-file-0.0.1-r929
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Secure file erasure for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/secure_erase_file/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_1a305e65cfaf27dd42734a37eda080d40b377d6c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_1a305e65cfaf27dd42734a37eda080d40b377d6c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r929
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=533569d90882dca4622e9a9c79154d6c
diff --git a/metadata/md5-cache/chromeos-base/secure-erase-file-9999 b/metadata/md5-cache/chromeos-base/secure-erase-file-9999
index 1451335..16e0b01 100644
--- a/metadata/md5-cache/chromeos-base/secure-erase-file-9999
+++ b/metadata/md5-cache/chromeos-base/secure-erase-file-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Secure file erasure for Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/secure_erase_file/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=e28f882626d38ec416ead8ef7efde298
diff --git a/metadata/md5-cache/chromeos-base/secure-wipe-0.0.1-r124 b/metadata/md5-cache/chromeos-base/secure-wipe-0.0.1-r124
deleted file mode 100644
index ef7dcb3..0000000
--- a/metadata/md5-cache/chromeos-base/secure-wipe-0.0.1-r124
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Secure wipe
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/secure-wipe/
-IUSE=mmc nvme sata test cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_898687cfd878621b0aa42a27138c8a6c72210b16_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_898687cfd878621b0aa42a27138c8a6c72210b16_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=app-misc/jq sata? ( sys-apps/hdparm ) mmc? ( sys-apps/mmc-utils ) nvme? ( sys-apps/nvme-cli ) sys-apps/util-linux sys-block/fio >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r124
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c0c8dd862115aafdd30b561f16f46536
diff --git a/metadata/md5-cache/chromeos-base/secure-wipe-0.0.1-r149 b/metadata/md5-cache/chromeos-base/secure-wipe-0.0.1-r149
new file mode 100644
index 0000000..484e773
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/secure-wipe-0.0.1-r149
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Secure wipe
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/secure-wipe/
+IUSE=mmc nvme sata test cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_898687cfd878621b0aa42a27138c8a6c72210b16_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_898687cfd878621b0aa42a27138c8a6c72210b16_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=app-misc/jq sata? ( sys-apps/hdparm ) mmc? ( sys-apps/mmc-utils ) nvme? ( sys-apps/nvme-cli ) sys-apps/util-linux sys-block/fio >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r149
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=200bec7f14a10e7f7919d782ae988fb8
diff --git a/metadata/md5-cache/chromeos-base/secure-wipe-9999 b/metadata/md5-cache/chromeos-base/secure-wipe-9999
index fe19fc4..624c579 100644
--- a/metadata/md5-cache/chromeos-base/secure-wipe-9999
+++ b/metadata/md5-cache/chromeos-base/secure-wipe-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Secure wipe
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/secure-wipe/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=app-misc/jq sata? ( sys-apps/hdparm ) mmc? ( sys-apps/mmc-utils ) nvme? ( sys-apps/nvme-cli ) sys-apps/util-linux sys-block/fio >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d1d2224392377c7015315d0a18f38f78
diff --git a/metadata/md5-cache/chromeos-base/selinux-policy-0.0.1-r243 b/metadata/md5-cache/chromeos-base/selinux-policy-0.0.1-r243
deleted file mode 100644
index 1b14af3..0000000
--- a/metadata/md5-cache/chromeos-base/selinux-policy-0.0.1-r243
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile info install setup test unpack
-DEPEND=android-container-pi? ( chromeos-base/android-container-pi:0= ) android-vm-master? ( chromeos-base/android-vm-master:0= ) android-vm-rvc? ( chromeos-base/android-vm-rvc:0= )
-DESCRIPTION=Chrome OS SELinux Policy Package
-EAPI=7
-IUSE=android-container-pi android-vm-master android-vm-rvc selinux_audit_all selinux_develop selinux_experimental arc_first_release_n nocheck cheets_user cheets_user_64 cros_host cros_workon_tree_0252f6124aa16bbe96a19ebb94e51b9ecd3dfa72
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=android-container-pi? ( chromeos-base/android-container-pi:0= ) android-vm-master? ( chromeos-base/android-vm-master:0= ) android-vm-rvc? ( chromeos-base/android-vm-rvc:0= ) sys-apps/restorecon sys-process/audit
-SLOT=0/0.0.1-r243
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
-_md5_=85a2bf31340ac8c9f7b12f7d93709caa
diff --git a/metadata/md5-cache/chromeos-base/selinux-policy-0.0.1-r339 b/metadata/md5-cache/chromeos-base/selinux-policy-0.0.1-r339
new file mode 100644
index 0000000..44a6dd3
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/selinux-policy-0.0.1-r339
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile info install setup test unpack
+DEPEND=android-container-pi? ( chromeos-base/android-container-pi:0= ) android-vm-master? ( chromeos-base/android-vm-master:0= ) android-vm-rvc? ( chromeos-base/android-vm-rvc:0= ) android-vm-sc? ( chromeos-base/android-vm-sc:0= )
+DESCRIPTION=Chrome OS SELinux Policy Package
+EAPI=7
+IUSE=android-container-pi android-vm-master android-vm-rvc android-vm-sc selinux_audit_all selinux_develop selinux_experimental arc_first_release_n nocheck cheets_user cheets_user_64 cros_host cros_workon_tree_f51d612a47b82796078faca5ec54f1d83ef9a703
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=android-container-pi? ( chromeos-base/android-container-pi:0= ) android-vm-master? ( chromeos-base/android-vm-master:0= ) android-vm-rvc? ( chromeos-base/android-vm-rvc:0= ) android-vm-sc? ( chromeos-base/android-vm-sc:0= ) sys-apps/restorecon sys-process/audit
+SLOT=0/0.0.1-r339
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
+_md5_=485add9177e9ae2dc00593341a3a635f
diff --git a/metadata/md5-cache/chromeos-base/selinux-policy-9999 b/metadata/md5-cache/chromeos-base/selinux-policy-9999
index 3fde415..fc004c7 100644
--- a/metadata/md5-cache/chromeos-base/selinux-policy-9999
+++ b/metadata/md5-cache/chromeos-base/selinux-policy-9999
@@ -1,13 +1,13 @@
 BDEPEND=dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile info install setup test unpack
-DEPEND=android-container-pi? ( chromeos-base/android-container-pi:0= ) android-vm-master? ( chromeos-base/android-vm-master:0= ) android-vm-rvc? ( chromeos-base/android-vm-rvc:0= )
+DEPEND=android-container-pi? ( chromeos-base/android-container-pi:0= ) android-vm-master? ( chromeos-base/android-vm-master:0= ) android-vm-rvc? ( chromeos-base/android-vm-rvc:0= ) android-vm-sc? ( chromeos-base/android-vm-sc:0= )
 DESCRIPTION=Chrome OS SELinux Policy Package
 EAPI=7
-IUSE=android-container-pi android-vm-master android-vm-rvc selinux_audit_all selinux_develop selinux_experimental arc_first_release_n nocheck cheets_user cheets_user_64 cros_host cros_workon_tree_
+IUSE=android-container-pi android-vm-master android-vm-rvc android-vm-sc selinux_audit_all selinux_develop selinux_experimental arc_first_release_n nocheck cheets_user cheets_user_64 cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=android-container-pi? ( chromeos-base/android-container-pi:0= ) android-vm-master? ( chromeos-base/android-vm-master:0= ) android-vm-rvc? ( chromeos-base/android-vm-rvc:0= ) sys-apps/restorecon sys-process/audit
+RDEPEND=android-container-pi? ( chromeos-base/android-container-pi:0= ) android-vm-master? ( chromeos-base/android-vm-master:0= ) android-vm-rvc? ( chromeos-base/android-vm-rvc:0= ) android-vm-sc? ( chromeos-base/android-vm-sc:0= ) sys-apps/restorecon sys-process/audit
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
-_md5_=f1e75534107235529e20638a93d0ee82
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
+_md5_=603abaac79191629d687d0f3ffea6749
diff --git a/metadata/md5-cache/chromeos-base/session_manager-client-0.0.1-r2072 b/metadata/md5-cache/chromeos-base/session_manager-client-0.0.1-r2072
deleted file mode 100644
index 357c442..0000000
--- a/metadata/md5-cache/chromeos-base/session_manager-client-0.0.1-r2072
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Session manager (chromeos-login) DBus client library for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/login_manager/
-IUSE=cros_host cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_fd58c41eff96201518af10b01b66391e72895365_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_fd58c41eff96201518af10b01b66391e72895365_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!<chromeos-base/chromeos-login-0.0.2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r2072
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=347432985c098522c80ed3477b1d1938
diff --git a/metadata/md5-cache/chromeos-base/session_manager-client-0.0.1-r2138 b/metadata/md5-cache/chromeos-base/session_manager-client-0.0.1-r2138
new file mode 100644
index 0000000..428e2aa
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/session_manager-client-0.0.1-r2138
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Session manager (chromeos-login) DBus client library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/login_manager/
+IUSE=cros_host cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_705938420b278cc4b739150868d71128b855d23e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_705938420b278cc4b739150868d71128b855d23e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!<chromeos-base/chromeos-login-0.0.2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r2138
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=53fd797726a1f1c0cc29c4250345c9a9
diff --git a/metadata/md5-cache/chromeos-base/session_manager-client-9999 b/metadata/md5-cache/chromeos-base/session_manager-client-9999
index 11c817d..4652309 100644
--- a/metadata/md5-cache/chromeos-base/session_manager-client-9999
+++ b/metadata/md5-cache/chromeos-base/session_manager-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=cros_host? ( chromeos-base/chromeos-dbus-bindings:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Session manager (chromeos-login) DBus client library for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/login_manager/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=!<chromeos-base/chromeos-login-0.0.2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=06ed55cdb097c7bd3842e43d48640167
diff --git a/metadata/md5-cache/chromeos-base/shill-0.0.5-r2347 b/metadata/md5-cache/chromeos-base/shill-0.0.5-r2347
deleted file mode 100644
index 94f7a98..0000000
--- a/metadata/md5-cache/chromeos-base/shill-0.0.5-r2347
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/bootstat:= tpm? ( chromeos-base/chaps:= ) chromeos-base/minijail:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/nsswitch:= chromeos-base/patchpanel-client:= chromeos-base/shill-net:= dev-libs/re2:= cellular? ( net-dialup/ppp:= ) pppoe? ( net-dialup/ppp:= ) vpn? ( net-dialup/ppp:= ) net-dns/c-ares:= net-libs/libtirpc:= net-firewall/iptables:= net-libs/libnetfilter_queue:= net-libs/libnfnetlink:= wifi? ( virtual/wpa_supplicant ) wired_8021x? ( virtual/wpa_supplicant ) sys-apps/rootdev:= cellular? ( net-misc/modemmanager-next:= ) !kernel-3_10? ( !kernel-3_8? ( net-firewall/conntrack-tools:= ) ) chromeos-base/shill-client:= chromeos-base/power_manager-client:= chromeos-base/system_api:=[fuzzer?] vpn? ( chromeos-base/vpn-manager:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Shill Connection Manager for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/
-IUSE=cellular dhcpv6 fuzzer kernel-3_8 kernel-3_10 pppoe +seccomp systemd +tpm +vpn wake_on_wifi +wifi +wired_8021x wpa3_sae cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5c6a69ae1a339332642149aa39da47d14efbe3fd_8d228c8e702aebee142bcbf0763a15786eb5b3bb_b2ab4c8055664efcdcae34e2f953709ccc4da563_e0ed49a505c69afe4a7f216b86744c3dabcd5e4c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5c6a69ae1a339332642149aa39da47d14efbe3fd_8d228c8e702aebee142bcbf0763a15786eb5b3bb_b2ab4c8055664efcdcae34e2f953709ccc4da563_e0ed49a505c69afe4a7f216b86744c3dabcd5e4c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/bootstat:= tpm? ( chromeos-base/chaps:= ) chromeos-base/minijail:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/nsswitch:= chromeos-base/patchpanel-client:= chromeos-base/shill-net:= dev-libs/re2:= cellular? ( net-dialup/ppp:= ) pppoe? ( net-dialup/ppp:= ) vpn? ( net-dialup/ppp:= ) net-dns/c-ares:= net-libs/libtirpc:= net-firewall/iptables:= net-libs/libnetfilter_queue:= net-libs/libnfnetlink:= wifi? ( virtual/wpa_supplicant ) wired_8021x? ( virtual/wpa_supplicant ) sys-apps/rootdev:= cellular? ( net-misc/modemmanager-next:= ) !kernel-3_10? ( !kernel-3_8? ( net-firewall/conntrack-tools:= ) ) chromeos-base/patchpanel net-misc/dhcpcd dhcpv6? ( net-misc/dhcpcd[ipv6] ) vpn? ( net-vpn/openvpn ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.5-r2347
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=c4ffc8e0fed1de37b314e42058a311e8
diff --git a/metadata/md5-cache/chromeos-base/shill-0.0.5-r2702 b/metadata/md5-cache/chromeos-base/shill-0.0.5-r2702
new file mode 100644
index 0000000..6904cec
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/shill-0.0.5-r2702
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/bootstat:= tpm? ( chromeos-base/chaps:= ) chromeos-base/minijail:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/nsswitch:= chromeos-base/patchpanel-client:= chromeos-base/shill-net:= dev-libs/re2:= cellular? ( net-dialup/ppp:= ) pppoe? ( net-dialup/ppp:= ) vpn? ( net-dialup/ppp:= ) net-dns/c-ares:= net-libs/libtirpc:= net-firewall/conntrack-tools:= net-firewall/iptables:= wifi? ( virtual/wpa_supplicant ) wired_8021x? ( virtual/wpa_supplicant ) sys-apps/rootdev:= cellular? ( net-misc/modemmanager-next:= ) chromeos-base/shill-client:= chromeos-base/power_manager-client:= chromeos-base/system_api:=[fuzzer?] vpn? ( chromeos-base/vpn-manager:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Shill Connection Manager for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/
+IUSE=cellular dhcpv6 fuzzer pppoe systemd +tpm +vpn +wake_on_wifi +wifi +wired_8021x +wpa3_sae +wireguard cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_eae0546f4ee5132d4544af4770755eb05f60cba6_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_c4ab24982f8916bc61640a3912b5c1d0337b758f_767a114667a7ed090f12adcaca93e7d4ef6f034f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_eae0546f4ee5132d4544af4770755eb05f60cba6_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_c4ab24982f8916bc61640a3912b5c1d0337b758f_767a114667a7ed090f12adcaca93e7d4ef6f034f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PDEPEND=chromeos-base/patchpanel
+PROPERTIES=live live
+RDEPEND=chromeos-base/bootstat:= tpm? ( chromeos-base/chaps:= ) chromeos-base/minijail:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/nsswitch:= chromeos-base/patchpanel-client:= chromeos-base/shill-net:= dev-libs/re2:= cellular? ( net-dialup/ppp:= ) pppoe? ( net-dialup/ppp:= ) vpn? ( net-dialup/ppp:= ) net-dns/c-ares:= net-libs/libtirpc:= net-firewall/conntrack-tools:= net-firewall/iptables:= wifi? ( virtual/wpa_supplicant ) wired_8021x? ( virtual/wpa_supplicant ) sys-apps/rootdev:= cellular? ( net-misc/modemmanager-next:= ) net-misc/dhcpcd dhcpv6? ( net-misc/dhcpcd[ipv6] ) vpn? ( net-vpn/openvpn ) wireguard? ( net-vpn/wireguard-tools ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= virtual/tmpfiles sys-apps/baselayout
+SLOT=0/0.0.5-r2702
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=e755a769cd45903b17e1c67c2f080263
diff --git a/metadata/md5-cache/chromeos-base/shill-9999 b/metadata/md5-cache/chromeos-base/shill-9999
index 073b2b3..8af531b 100644
--- a/metadata/md5-cache/chromeos-base/shill-9999
+++ b/metadata/md5-cache/chromeos-base/shill-9999
@@ -1,14 +1,15 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/bootstat:= tpm? ( chromeos-base/chaps:= ) chromeos-base/minijail:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/nsswitch:= chromeos-base/patchpanel-client:= chromeos-base/shill-net:= dev-libs/re2:= cellular? ( net-dialup/ppp:= ) pppoe? ( net-dialup/ppp:= ) vpn? ( net-dialup/ppp:= ) net-dns/c-ares:= net-libs/libtirpc:= net-firewall/iptables:= net-libs/libnetfilter_queue:= net-libs/libnfnetlink:= wifi? ( virtual/wpa_supplicant ) wired_8021x? ( virtual/wpa_supplicant ) sys-apps/rootdev:= cellular? ( net-misc/modemmanager-next:= ) !kernel-3_10? ( !kernel-3_8? ( net-firewall/conntrack-tools:= ) ) chromeos-base/shill-client:= chromeos-base/power_manager-client:= chromeos-base/system_api:=[fuzzer?] vpn? ( chromeos-base/vpn-manager:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/bootstat:= tpm? ( chromeos-base/chaps:= ) chromeos-base/minijail:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/nsswitch:= chromeos-base/patchpanel-client:= chromeos-base/shill-net:= dev-libs/re2:= cellular? ( net-dialup/ppp:= ) pppoe? ( net-dialup/ppp:= ) vpn? ( net-dialup/ppp:= ) net-dns/c-ares:= net-libs/libtirpc:= net-firewall/conntrack-tools:= net-firewall/iptables:= wifi? ( virtual/wpa_supplicant ) wired_8021x? ( virtual/wpa_supplicant ) sys-apps/rootdev:= cellular? ( net-misc/modemmanager-next:= ) chromeos-base/shill-client:= chromeos-base/power_manager-client:= chromeos-base/system_api:=[fuzzer?] vpn? ( chromeos-base/vpn-manager:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Shill Connection Manager for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/
-IUSE=cellular dhcpv6 fuzzer kernel-3_8 kernel-3_10 pppoe +seccomp systemd +tpm +vpn wake_on_wifi +wifi +wired_8021x wpa3_sae cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cellular dhcpv6 fuzzer pppoe systemd +tpm +vpn +wake_on_wifi +wifi +wired_8021x +wpa3_sae +wireguard cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
+PDEPEND=chromeos-base/patchpanel
 PROPERTIES=live live
-RDEPEND=chromeos-base/bootstat:= tpm? ( chromeos-base/chaps:= ) chromeos-base/minijail:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/nsswitch:= chromeos-base/patchpanel-client:= chromeos-base/shill-net:= dev-libs/re2:= cellular? ( net-dialup/ppp:= ) pppoe? ( net-dialup/ppp:= ) vpn? ( net-dialup/ppp:= ) net-dns/c-ares:= net-libs/libtirpc:= net-firewall/iptables:= net-libs/libnetfilter_queue:= net-libs/libnfnetlink:= wifi? ( virtual/wpa_supplicant ) wired_8021x? ( virtual/wpa_supplicant ) sys-apps/rootdev:= cellular? ( net-misc/modemmanager-next:= ) !kernel-3_10? ( !kernel-3_8? ( net-firewall/conntrack-tools:= ) ) chromeos-base/patchpanel net-misc/dhcpcd dhcpv6? ( net-misc/dhcpcd[ipv6] ) vpn? ( net-vpn/openvpn ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=chromeos-base/bootstat:= tpm? ( chromeos-base/chaps:= ) chromeos-base/minijail:= chromeos-base/libpasswordprovider:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/nsswitch:= chromeos-base/patchpanel-client:= chromeos-base/shill-net:= dev-libs/re2:= cellular? ( net-dialup/ppp:= ) pppoe? ( net-dialup/ppp:= ) vpn? ( net-dialup/ppp:= ) net-dns/c-ares:= net-libs/libtirpc:= net-firewall/conntrack-tools:= net-firewall/iptables:= wifi? ( virtual/wpa_supplicant ) wired_8021x? ( virtual/wpa_supplicant ) sys-apps/rootdev:= cellular? ( net-misc/modemmanager-next:= ) net-misc/dhcpcd dhcpv6? ( net-misc/dhcpcd[ipv6] ) vpn? ( net-vpn/openvpn ) wireguard? ( net-vpn/wireguard-tools ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= virtual/tmpfiles sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=59e86cc162e9120d545167768e99af84
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=3e1432c2b60b59ccc292e0f1af539daf
diff --git a/metadata/md5-cache/chromeos-base/shill-cli-0.0.1-r70 b/metadata/md5-cache/chromeos-base/shill-cli-0.0.1-r70
deleted file mode 100644
index ea25445..0000000
--- a/metadata/md5-cache/chromeos-base/shill-cli-0.0.1-r70
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/shill-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Shill Command Line Interface
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/cli
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4fa61f1fa958cd34d16c6035cb2e6430dd6fd7b0_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4fa61f1fa958cd34d16c6035cb2e6430dd6fd7b0_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/shill-0.0.1-r2205 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e8048044b8530544756feefa0301e815
diff --git a/metadata/md5-cache/chromeos-base/shill-cli-0.0.1-r97 b/metadata/md5-cache/chromeos-base/shill-cli-0.0.1-r97
new file mode 100644
index 0000000..0101faa
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/shill-cli-0.0.1-r97
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/shill-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Shill Command Line Interface
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/cli
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_5b20850cb32f8fc1646e154b9c6c5b094e5b5961_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_5b20850cb32f8fc1646e154b9c6c5b094e5b5961_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/shill-0.0.1-r2205 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8f8728f4fcc7d570b671af96a1ce8a7d
diff --git a/metadata/md5-cache/chromeos-base/shill-cli-9999 b/metadata/md5-cache/chromeos-base/shill-cli-9999
index 1d6b856..969fbb1 100644
--- a/metadata/md5-cache/chromeos-base/shill-cli-9999
+++ b/metadata/md5-cache/chromeos-base/shill-cli-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/shill-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/shill-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Shill Command Line Interface
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/cli
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/shill-0.0.1-r2205 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=daf4cf606417fb5af117078548ac4255
diff --git a/metadata/md5-cache/chromeos-base/shill-client-0.0.1-r2274 b/metadata/md5-cache/chromeos-base/shill-client-0.0.1-r2274
deleted file mode 100644
index cc33a36..0000000
--- a/metadata/md5-cache/chromeos-base/shill-client-0.0.1-r2274
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=chromeos-base/chromeos-dbus-bindings:= dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Shill DBus client library for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/
-IUSE=cros_host cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_b2ab4c8055664efcdcae34e2f953709ccc4da563_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_b2ab4c8055664efcdcae34e2f953709ccc4da563_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!<chromeos-base/shill-0.0.2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=41ba3aeb82d8dc93d6bcbed8dcb4ecc7
diff --git a/metadata/md5-cache/chromeos-base/shill-client-0.0.1-r2588 b/metadata/md5-cache/chromeos-base/shill-client-0.0.1-r2588
new file mode 100644
index 0000000..d551655
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/shill-client-0.0.1-r2588
@@ -0,0 +1,14 @@
+BDEPEND=chromeos-base/chromeos-dbus-bindings:= dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Shill DBus client library for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/
+IUSE=cros_host cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c4ab24982f8916bc61640a3912b5c1d0337b758f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c4ab24982f8916bc61640a3912b5c1d0337b758f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!<chromeos-base/shill-0.0.2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b334b314026a411b9a0017f82db1445b
diff --git a/metadata/md5-cache/chromeos-base/shill-client-9999 b/metadata/md5-cache/chromeos-base/shill-client-9999
index 493c8b41..6025e2b 100644
--- a/metadata/md5-cache/chromeos-base/shill-client-9999
+++ b/metadata/md5-cache/chromeos-base/shill-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=chromeos-base/chromeos-dbus-bindings:= dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Shill DBus client library for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=!<chromeos-base/shill-0.0.2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=dc51cbd89b54f272886b514d9f64e0f8
diff --git a/metadata/md5-cache/chromeos-base/shill-dbus-client-0.0.1-r359 b/metadata/md5-cache/chromeos-base/shill-dbus-client-0.0.1-r359
new file mode 100644
index 0000000..7de3f40
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/shill-dbus-client-0.0.1-r359
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/shill-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Shill DBus client interface library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/shill/dbus/client
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c4ab24982f8916bc61640a3912b5c1d0337b758f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c4ab24982f8916bc61640a3912b5c1d0337b758f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=662a1756aadb8c72feaba802977c7d0a
diff --git a/metadata/md5-cache/chromeos-base/shill-dbus-client-0.0.1-r45 b/metadata/md5-cache/chromeos-base/shill-dbus-client-0.0.1-r45
deleted file mode 100644
index 1e75875..0000000
--- a/metadata/md5-cache/chromeos-base/shill-dbus-client-0.0.1-r45
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/shill-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Shill DBus client interface library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/shill/dbus/client
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_b2ab4c8055664efcdcae34e2f953709ccc4da563_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_b2ab4c8055664efcdcae34e2f953709ccc4da563_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=08f511cb054b673acaba35b17329b015
diff --git a/metadata/md5-cache/chromeos-base/shill-dbus-client-9999 b/metadata/md5-cache/chromeos-base/shill-dbus-client-9999
index efbd28d..59a35ee 100644
--- a/metadata/md5-cache/chromeos-base/shill-dbus-client-9999
+++ b/metadata/md5-cache/chromeos-base/shill-dbus-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/shill-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/shill-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Shill DBus client interface library
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/shill/dbus/client
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=4a4294301991bc29c96799ddfd5f2557
diff --git a/metadata/md5-cache/chromeos-base/shill-net-0.0.1-r121 b/metadata/md5-cache/chromeos-base/shill-net-0.0.1-r121
deleted file mode 100644
index b8e5f3f..0000000
--- a/metadata/md5-cache/chromeos-base/shill-net-0.0.1-r121
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Shill networking component interface library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/shill/net
-IUSE=fuzzer +wifi cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_b2ab4c8055664efcdcae34e2f953709ccc4da563_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_b2ab4c8055664efcdcae34e2f953709ccc4da563_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!<chromeos-base/shill-0.0.5 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=14f0635663dd03cd64152c5a9ac65ee1
diff --git a/metadata/md5-cache/chromeos-base/shill-net-0.0.1-r435 b/metadata/md5-cache/chromeos-base/shill-net-0.0.1-r435
new file mode 100644
index 0000000..3ffa2c3
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/shill-net-0.0.1-r435
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Shill networking component interface library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/shill/net
+IUSE=fuzzer +wifi cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c4ab24982f8916bc61640a3912b5c1d0337b758f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_c4ab24982f8916bc61640a3912b5c1d0337b758f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!<chromeos-base/shill-0.0.5 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0fcac092447baa06e4712c4b6bc51b8d
diff --git a/metadata/md5-cache/chromeos-base/shill-net-9999 b/metadata/md5-cache/chromeos-base/shill-net-9999
index a0c1816..1d6a5c7 100644
--- a/metadata/md5-cache/chromeos-base/shill-net-9999
+++ b/metadata/md5-cache/chromeos-base/shill-net-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Shill networking component interface library
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/shill/net
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=!<chromeos-base/shill-0.0.5 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=66c4880f2c9f1be1ef6ed7338d088273
diff --git a/metadata/md5-cache/chromeos-base/shill-test-scripts-0.0.1-r3157 b/metadata/md5-cache/chromeos-base/shill-test-scripts-0.0.1-r3157
deleted file mode 100644
index 98daabe..0000000
--- a/metadata/md5-cache/chromeos-base/shill-test-scripts-0.0.1-r3157
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=shill's test scripts
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/
-IUSE=cros_host cros_workon_tree_c4a6ad9b8774cd66229ba54ca1853b018ae2e07b python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8 >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9 >=dev-lang/python-exec-2:=[python_targets_python3_9] ) python_single_target_python3_6? ( dev-python/dbus-python[python_targets_python3_6(-)] ) python_single_target_python3_7? ( dev-python/dbus-python[python_targets_python3_7(-)] ) python_single_target_python3_8? ( dev-python/dbus-python[python_targets_python3_8(-)] ) python_single_target_python3_9? ( dev-python/dbus-python[python_targets_python3_9(-)] ) >=chromeos-base/shill-0.0.1-r2205 net-dns/dnsmasq sys-apps/iproute2
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=013f5b5197154e94ca07425c6948338a
diff --git a/metadata/md5-cache/chromeos-base/shill-test-scripts-0.0.1-r3160 b/metadata/md5-cache/chromeos-base/shill-test-scripts-0.0.1-r3160
new file mode 100644
index 0000000..26d2763
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/shill-test-scripts-0.0.1-r3160
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile info install setup unpack
+DESCRIPTION=shill's test scripts
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/shill/
+IUSE=cros_host cros_workon_tree_e1460bdb2664294ca3385078bdfc43239d9f3e49 python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8 >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9 >=dev-lang/python-exec-2:=[python_targets_python3_9] ) python_single_target_python3_6? ( dev-python/dbus-python[python_targets_python3_6(-)] ) python_single_target_python3_7? ( dev-python/dbus-python[python_targets_python3_7(-)] ) python_single_target_python3_8? ( dev-python/dbus-python[python_targets_python3_8(-)] ) python_single_target_python3_9? ( dev-python/dbus-python[python_targets_python3_9(-)] ) >=chromeos-base/shill-0.0.1-r2205 net-dns/dnsmasq sys-apps/iproute2
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=0464742a113e93592267dfef401621e8
diff --git a/metadata/md5-cache/chromeos-base/shill-test-scripts-9999 b/metadata/md5-cache/chromeos-base/shill-test-scripts-9999
index 9e2407c..96f013f 100644
--- a/metadata/md5-cache/chromeos-base/shill-test-scripts-9999
+++ b/metadata/md5-cache/chromeos-base/shill-test-scripts-9999
@@ -8,5 +8,5 @@
 PROPERTIES=live
 RDEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8 >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9 >=dev-lang/python-exec-2:=[python_targets_python3_9] ) python_single_target_python3_6? ( dev-python/dbus-python[python_targets_python3_6(-)] ) python_single_target_python3_7? ( dev-python/dbus-python[python_targets_python3_7(-)] ) python_single_target_python3_8? ( dev-python/dbus-python[python_targets_python3_8(-)] ) python_single_target_python3_9? ( dev-python/dbus-python[python_targets_python3_9(-)] ) >=chromeos-base/shill-0.0.1-r2205 net-dns/dnsmasq sys-apps/iproute2
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b2b2b4280ca75590ab67e0289b3f611c
diff --git a/metadata/md5-cache/chromeos-base/sirenia-0.24.52-r47 b/metadata/md5-cache/chromeos-base/sirenia-0.24.52-r47
deleted file mode 100644
index 7a16d62..0000000
--- a/metadata/md5-cache/chromeos-base/sirenia-0.24.52-r47
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=sys-apps/dbus chromeos-base/libsirenia:= =dev-rust/chrono-0.4*:= dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sync:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 >=virtual/rust-1.39.0:= sys-apps/baselayout
-DESCRIPTION=The runtime environment and middleware for ManaTEE.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/
-IUSE=cros_host cros_host cros_workon_tree_8142910ebe1039f79b7c8e33260b6428bbee5ef3 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-apps/dbus sys-apps/baselayout
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.24.52-r47
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=babb074c33a1417294484854c7563fd8
diff --git a/metadata/md5-cache/chromeos-base/sirenia-0.24.52-r82 b/metadata/md5-cache/chromeos-base/sirenia-0.24.52-r82
new file mode 100644
index 0000000..37079ed
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/sirenia-0.24.52-r82
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/libsirenia:= dev-libs/openssl:0= =dev-rust/base64-0.13*:= dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= >=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2.0 =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= =dev-rust/openssl-0.10*:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 >=virtual/rust-1.39.0:= sys-apps/baselayout
+DESCRIPTION=The runtime environment and middleware for ManaTEE.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/
+IUSE=cros_host manatee cros_host cros_workon_tree_727b5a2cdf7d07c050cc575ee636711da70333a2 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/libsirenia:= dev-libs/openssl:0= =dev-rust/base64-0.13*:= dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= >=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2.0 =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= =dev-rust/openssl-0.10*:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 chromeos-base/cronista chromeos-base/manatee-runtime dev-rust/manatee-client sys-apps/dbus sys-apps/baselayout
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.24.52-r82
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=162f6d955c5f798207df6b0a31ab8f7e
diff --git a/metadata/md5-cache/chromeos-base/sirenia-9999 b/metadata/md5-cache/chromeos-base/sirenia-9999
index d6c2957..438a6e1 100644
--- a/metadata/md5-cache/chromeos-base/sirenia-9999
+++ b/metadata/md5-cache/chromeos-base/sirenia-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=sys-apps/dbus chromeos-base/libsirenia:= =dev-rust/chrono-0.4*:= dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sync:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 >=virtual/rust-1.39.0:= sys-apps/baselayout
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/libsirenia:= dev-libs/openssl:0= =dev-rust/base64-0.13*:= dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= >=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2.0 =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= =dev-rust/openssl-0.10*:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 >=virtual/rust-1.39.0:= sys-apps/baselayout
 DESCRIPTION=The runtime environment and middleware for ManaTEE.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/
-IUSE=cros_host cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host manatee cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=sys-apps/dbus sys-apps/baselayout
+RDEPEND=chromeos-base/libsirenia:= dev-libs/openssl:0= =dev-rust/base64-0.13*:= dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= >=dev-rust/flexbuffers-0.1.1:= <dev-rust/flexbuffers-0.2.0 =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= =dev-rust/openssl-0.10*:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 chromeos-base/cronista chromeos-base/manatee-runtime dev-rust/manatee-client sys-apps/dbus sys-apps/baselayout
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=88b046ddfa090d800835f30df0ada455
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=607336e186cc57dd6f2a0726924d8b6c
diff --git a/metadata/md5-cache/chromeos-base/sirenia-rpc-macros-0.1.0-r1 b/metadata/md5-cache/chromeos-base/sirenia-rpc-macros-0.1.0-r1
deleted file mode 100644
index 13d6822..0000000
--- a/metadata/md5-cache/chromeos-base/sirenia-rpc-macros-0.1.0-r1
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Macros for generating the RPC implementation for Sirenia.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/libsirenia/sirenia-rpc-macros
-IUSE=cros_host cros_workon_tree_af363da38d201ae08d9f0116ac1c4bb64f46d677 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r1
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a410fe9108fa93371134dec578655772
diff --git a/metadata/md5-cache/chromeos-base/sirenia-rpc-macros-0.1.0-r2 b/metadata/md5-cache/chromeos-base/sirenia-rpc-macros-0.1.0-r2
new file mode 100644
index 0000000..af268c6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/sirenia-rpc-macros-0.1.0-r2
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Macros for generating the RPC implementation for Sirenia.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/libsirenia/sirenia-rpc-macros
+IUSE=cros_host cros_workon_tree_af363da38d201ae08d9f0116ac1c4bb64f46d677 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r2
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=66db40c74a97079323e0441801a0b16a
diff --git a/metadata/md5-cache/chromeos-base/sirenia-rpc-macros-9999 b/metadata/md5-cache/chromeos-base/sirenia-rpc-macros-9999
index 2bd6be1..57b14fc 100644
--- a/metadata/md5-cache/chromeos-base/sirenia-rpc-macros-9999
+++ b/metadata/md5-cache/chromeos-base/sirenia-rpc-macros-9999
@@ -1,14 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Macros for generating the RPC implementation for Sirenia.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/libsirenia/sirenia-rpc-macros
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
+RDEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=5763462da95fcca494bcc17d2ffb3356
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=290a52d2a0a581fb72c3fb449b1b6b80
diff --git a/metadata/md5-cache/chromeos-base/sisConsoletool-1.5.6.516 b/metadata/md5-cache/chromeos-base/sisConsoletool-1.5.6.516
deleted file mode 100644
index 677c636..0000000
--- a/metadata/md5-cache/chromeos-base/sisConsoletool-1.5.6.516
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=SiS Consoletool for Firmware Update
-EAPI=5
-HOMEPAGE=https://github.com/jason10071/sisConsoletool
-KEYWORDS=*
-LICENSE=Apache-2.0
-SLOT=0
-SRC_URI=https://github.com/jason10071/sisConsoletool/archive/v1.5.6.516.tar.gz -> sisConsoletool-1.5.6.516.tar.gz
-_md5_=f05461f4855d83fde24c04a1e51e4884
diff --git a/metadata/md5-cache/chromeos-base/sisConsoletool-1.5.6.518 b/metadata/md5-cache/chromeos-base/sisConsoletool-1.5.6.518
new file mode 100644
index 0000000..532f7b4
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/sisConsoletool-1.5.6.518
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=SiS Consoletool for Firmware Update
+EAPI=7
+HOMEPAGE=https://github.com/jason10071/sisConsoletool
+KEYWORDS=*
+LICENSE=Apache-2.0
+SLOT=0
+SRC_URI=https://github.com/jason10071/sisConsoletool/archive/v1.5.6.518.tar.gz -> sisConsoletool-1.5.6.518.tar.gz
+_md5_=4d97a24462f12845c3a5318eefae6900
diff --git a/metadata/md5-cache/chromeos-base/skylab-inventory-0.0.1-r77 b/metadata/md5-cache/chromeos-base/skylab-inventory-0.0.1-r77
deleted file mode 100644
index ebc82bb..0000000
--- a/metadata/md5-cache/chromeos-base/skylab-inventory-0.0.1-r77
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst setup test unpack
-DEPEND=dev-go/errors:= dev-go/go-sys:= dev-go/luci-tsmon:= dev-go/protobuf:= dev-lang/go
-DESCRIPTION=Chromium OS inventory tools
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/infra/skylab_inventory/
-IUSE=cros_host cros_workon_tree_174ef18b7db61bb2fc9bfffad805057249cc00be
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-go/errors:= dev-go/go-sys:= dev-go/luci-tsmon:= dev-go/protobuf:=
-RESTRICT=binchecks strip
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c35badf7ccc47cded9d48fc7439ecadc
diff --git a/metadata/md5-cache/chromeos-base/skylab-inventory-9999 b/metadata/md5-cache/chromeos-base/skylab-inventory-9999
deleted file mode 100644
index 137bb76..0000000
--- a/metadata/md5-cache/chromeos-base/skylab-inventory-9999
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst setup test unpack
-DEPEND=dev-go/errors:= dev-go/go-sys:= dev-go/luci-tsmon:= dev-go/protobuf:= dev-lang/go
-DESCRIPTION=Chromium OS inventory tools
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/infra/skylab_inventory/
-IUSE=cros_host cros_workon_tree_
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-go/errors:= dev-go/go-sys:= dev-go/luci-tsmon:= dev-go/protobuf:=
-RESTRICT=binchecks strip
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9f2ef8dfd95b7738080911f335ea5cd3
diff --git a/metadata/md5-cache/chromeos-base/smbfs-0.0.1-r168 b/metadata/md5-cache/chromeos-base/smbfs-0.0.1-r168
deleted file mode 100644
index b004504..0000000
--- a/metadata/md5-cache/chromeos-base/smbfs-0.0.1-r168
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND==sys-fs/fuse-2.9*:= net-fs/samba:= chromeos-base/system_api:= chromeos-base/libpasswordprovider:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=FUSE filesystem to mount SMB shares.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/smbfs/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5c6a69ae1a339332642149aa39da47d14efbe3fd_bb6856c3a41209f9f1b4692de3f1e180a19d2135_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5c6a69ae1a339332642149aa39da47d14efbe3fd_bb6856c3a41209f9f1b4692de3f1e180a19d2135_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND==sys-fs/fuse-2.9*:= net-fs/samba:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=5adfae76080e00488fafad6a2995523b
diff --git a/metadata/md5-cache/chromeos-base/smbfs-0.0.1-r203 b/metadata/md5-cache/chromeos-base/smbfs-0.0.1-r203
new file mode 100644
index 0000000..4d1201fc
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/smbfs-0.0.1-r203
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND==sys-fs/fuse-2.9*:= net-fs/samba:= chromeos-base/system_api:= chromeos-base/libpasswordprovider:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=FUSE filesystem to mount SMB shares.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/smbfs/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_eae0546f4ee5132d4544af4770755eb05f60cba6_75c3e472455b6f19ecd3d99e182d59e07d4e84da_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_eae0546f4ee5132d4544af4770755eb05f60cba6_75c3e472455b6f19ecd3d99e182d59e07d4e84da_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND==sys-fs/fuse-2.9*:= net-fs/samba:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=261c805906490bbb26c6cd069dbbf3e1
diff --git a/metadata/md5-cache/chromeos-base/smbfs-9999 b/metadata/md5-cache/chromeos-base/smbfs-9999
index 57455339..2494047 100644
--- a/metadata/md5-cache/chromeos-base/smbfs-9999
+++ b/metadata/md5-cache/chromeos-base/smbfs-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND==sys-fs/fuse-2.9*:= net-fs/samba:= chromeos-base/system_api:= chromeos-base/libpasswordprovider:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND==sys-fs/fuse-2.9*:= net-fs/samba:= chromeos-base/system_api:= chromeos-base/libpasswordprovider:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=FUSE filesystem to mount SMB shares.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/smbfs/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND==sys-fs/fuse-2.9*:= net-fs/samba:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=06b262d751d679e700db605e9424fc2e
diff --git a/metadata/md5-cache/chromeos-base/smbprovider-0.0.1-r679 b/metadata/md5-cache/chromeos-base/smbprovider-0.0.1-r679
deleted file mode 100644
index 451160d..0000000
--- a/metadata/md5-cache/chromeos-base/smbprovider-0.0.1-r679
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/protobuf:= >=net-fs/samba-4.5.3-r6 sys-apps/dbus:= chromeos-base/protofiles:= chromeos-base/system_api:=[fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Provides access to Samba file share
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/smbprovider/
-IUSE=fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5c6a69ae1a339332642149aa39da47d14efbe3fd_2fd1ce78f8da4aa4f9dd0dcb45b5e5e81f898bcd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5c6a69ae1a339332642149aa39da47d14efbe3fd_2fd1ce78f8da4aa4f9dd0dcb45b5e5e81f898bcd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/protobuf:= >=net-fs/samba-4.5.3-r6 sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=712027da320f18192c08378d3ba9a2ea
diff --git a/metadata/md5-cache/chromeos-base/smbprovider-0.0.1-r712 b/metadata/md5-cache/chromeos-base/smbprovider-0.0.1-r712
new file mode 100644
index 0000000..4df11c3
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/smbprovider-0.0.1-r712
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/protobuf:= >=net-fs/samba-4.5.3-r6 sys-apps/dbus:= chromeos-base/protofiles:= chromeos-base/system_api:=[fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Provides access to Samba file share
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/smbprovider/
+IUSE=fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_eae0546f4ee5132d4544af4770755eb05f60cba6_e23b68f653a4b37525fbe6a6f1a490c47c9d99cc_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_eae0546f4ee5132d4544af4770755eb05f60cba6_e23b68f653a4b37525fbe6a6f1a490c47c9d99cc_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/protobuf:= >=net-fs/samba-4.5.3-r6 sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=81b3689596426eee3ac09fea3f5e2248
diff --git a/metadata/md5-cache/chromeos-base/smbprovider-9999 b/metadata/md5-cache/chromeos-base/smbprovider-9999
index a4158de..a2e6dbc 100644
--- a/metadata/md5-cache/chromeos-base/smbprovider-9999
+++ b/metadata/md5-cache/chromeos-base/smbprovider-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/protobuf:= >=net-fs/samba-4.5.3-r6 sys-apps/dbus:= chromeos-base/protofiles:= chromeos-base/system_api:=[fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=dev-libs/protobuf:= >=net-fs/samba-4.5.3-r6 sys-apps/dbus:= chromeos-base/protofiles:= chromeos-base/system_api:=[fuzzer?] chromeos-base/libpasswordprovider:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Provides access to Samba file share
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/smbprovider/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/protobuf:= >=net-fs/samba-4.5.3-r6 sys-apps/dbus:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=f0ce4b150ad6a496aaaddbf7e1064602
diff --git a/metadata/md5-cache/chromeos-base/smogcheck-0.0.1-r3041 b/metadata/md5-cache/chromeos-base/smogcheck-0.0.1-r3041
deleted file mode 100644
index 7de7ed7..0000000
--- a/metadata/md5-cache/chromeos-base/smogcheck-0.0.1-r3041
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DESCRIPTION=TPM SmogCheck library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/smogcheck/
-IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_25b90cd13b01122d778a1d55d814c5b001b88d22_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/0.0.1-r3041
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=93e17c5c44b604543840cf20ff93cfde
diff --git a/metadata/md5-cache/chromeos-base/smogcheck-0.0.1-r3066 b/metadata/md5-cache/chromeos-base/smogcheck-0.0.1-r3066
new file mode 100644
index 0000000..d8c7a5b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/smogcheck-0.0.1-r3066
@@ -0,0 +1,12 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DESCRIPTION=TPM SmogCheck library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/smogcheck/
+IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_25b90cd13b01122d778a1d55d814c5b001b88d22_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0.0.1-r3066
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1fa5d0debfe9a3e3e4088afe98adac0e
diff --git a/metadata/md5-cache/chromeos-base/smogcheck-9999 b/metadata/md5-cache/chromeos-base/smogcheck-9999
index 13b411e..23a0e76 100644
--- a/metadata/md5-cache/chromeos-base/smogcheck-9999
+++ b/metadata/md5-cache/chromeos-base/smogcheck-9999
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=71b4bf3cda2160382ebb334b8c34be08
diff --git a/metadata/md5-cache/chromeos-base/sommelier-0.0.1-r142 b/metadata/md5-cache/chromeos-base/sommelier-0.0.1-r142
new file mode 100644
index 0000000..f090d60
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/sommelier-0.0.1-r142
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=media-libs/mesa:=[gbm] x11-base/xwayland:= x11-libs/libxkbcommon:= x11-libs/pixman:= dev-util/meson dev-util/ninja >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=A Wayland compositor for use in CrOS VMs
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/sommelier
+IUSE=kvm_guest cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_73d11c9c68b8ad83037d9b5820a42f0e51c57d74_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_73d11c9c68b8ad83037d9b5820a42f0e51c57d74_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!<chromeos-base/vm_guest_tools-0.0.2-r722 media-libs/mesa:=[gbm] x11-base/xwayland:= x11-libs/libxkbcommon:= x11-libs/pixman:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=kvm_guest
+SLOT=0/0.0.1-r142
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=688ee5ca2e1764184afd206da72491f6
diff --git a/metadata/md5-cache/chromeos-base/sommelier-0.0.1-r87 b/metadata/md5-cache/chromeos-base/sommelier-0.0.1-r87
deleted file mode 100644
index 87cfe55..0000000
--- a/metadata/md5-cache/chromeos-base/sommelier-0.0.1-r87
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/mesa:=[gbm] x11-base/xwayland:= x11-libs/libxkbcommon:= x11-libs/pixman:= dev-util/meson dev-util/ninja >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=A Wayland compositor for use in CrOS VMs
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/sommelier
-IUSE=kvm_guest cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_49f2407238a7bbb4103aa4cb20849473a838b480_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_49f2407238a7bbb4103aa4cb20849473a838b480_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!<chromeos-base/vm_guest_tools-0.0.2-r722 media-libs/mesa:=[gbm] x11-base/xwayland:= x11-libs/libxkbcommon:= x11-libs/pixman:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-REQUIRED_USE=kvm_guest
-SLOT=0/0.0.1-r87
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b1fcfbfc374dd50171a3c587bb0a5bc2
diff --git a/metadata/md5-cache/chromeos-base/sommelier-9999 b/metadata/md5-cache/chromeos-base/sommelier-9999
index add66fe..4bf1d2a 100644
--- a/metadata/md5-cache/chromeos-base/sommelier-9999
+++ b/metadata/md5-cache/chromeos-base/sommelier-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/mesa:=[gbm] x11-base/xwayland:= x11-libs/libxkbcommon:= x11-libs/pixman:= dev-util/meson dev-util/ninja >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=media-libs/mesa:=[gbm] x11-base/xwayland:= x11-libs/libxkbcommon:= x11-libs/pixman:= dev-util/meson dev-util/ninja >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=A Wayland compositor for use in CrOS VMs
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/sommelier
@@ -11,5 +11,5 @@
 RDEPEND=!<chromeos-base/vm_guest_tools-0.0.2-r722 media-libs/mesa:=[gbm] x11-base/xwayland:= x11-libs/libxkbcommon:= x11-libs/pixman:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 REQUIRED_USE=kvm_guest
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e1a6e55af2357b526f76431339f5104a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4f4099e7c3905bcf723197d0ec9b6e48
diff --git a/metadata/md5-cache/chromeos-base/st_flash-0.0.1-r1228 b/metadata/md5-cache/chromeos-base/st_flash-0.0.1-r1228
deleted file mode 100644
index 1aa6428..0000000
--- a/metadata/md5-cache/chromeos-base/st_flash-0.0.1-r1228
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=STM32 IAP firmware updater for Chrome OS touchpads
-EAPI=5
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_385387e5576998414ebd9e06ac553d13c0f69025_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_385387e5576998414ebd9e06ac553d13c0f69025_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=01b8f98305ef7497c9d5da885dd6590d
diff --git a/metadata/md5-cache/chromeos-base/st_flash-0.0.1-r1256 b/metadata/md5-cache/chromeos-base/st_flash-0.0.1-r1256
new file mode 100644
index 0000000..117fa7e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/st_flash-0.0.1-r1256
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=STM32 IAP firmware updater for Chrome OS touchpads
+EAPI=5
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_791e2808df33f88d5ae99fabe78c4f0dbd2035fa_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_791e2808df33f88d5ae99fabe78c4f0dbd2035fa_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=15e0bc040f2ba62ca24426c84f2f2141
diff --git a/metadata/md5-cache/chromeos-base/st_flash-9999 b/metadata/md5-cache/chromeos-base/st_flash-9999
index a88d37a..f3a9f2f 100644
--- a/metadata/md5-cache/chromeos-base/st_flash-9999
+++ b/metadata/md5-cache/chromeos-base/st_flash-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=STM32 IAP firmware updater for Chrome OS touchpads
 EAPI=5
 IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
@@ -8,5 +8,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=21c3d50f3d60451e233dfab1981dddfd
diff --git a/metadata/md5-cache/chromeos-base/swap-init-0.0.1-r36 b/metadata/md5-cache/chromeos-base/swap-init-0.0.1-r42
similarity index 100%
rename from metadata/md5-cache/chromeos-base/swap-init-0.0.1-r36
rename to metadata/md5-cache/chromeos-base/swap-init-0.0.1-r42
diff --git a/metadata/md5-cache/chromeos-base/syslog-cat-0.0.1-r22 b/metadata/md5-cache/chromeos-base/syslog-cat-0.0.1-r22
deleted file mode 100644
index 598140c..0000000
--- a/metadata/md5-cache/chromeos-base/syslog-cat-0.0.1-r22
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Simple command to forward stdout/err to syslog
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/syslog-cat
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_d7ac91bd9fca40b007f46a3584fbb60fac4f97d7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_d7ac91bd9fca40b007f46a3584fbb60fac4f97d7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=596d8ce1c0ee86db9d88464f4fdebd5f
diff --git a/metadata/md5-cache/chromeos-base/syslog-cat-0.0.1-r49 b/metadata/md5-cache/chromeos-base/syslog-cat-0.0.1-r49
new file mode 100644
index 0000000..5e01ad0
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/syslog-cat-0.0.1-r49
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Simple command to forward stdout/err to syslog
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/syslog-cat
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_5cbb3b50e94cd190817a813ffb446c07cde6990b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_5cbb3b50e94cd190817a813ffb446c07cde6990b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fc59b0a60f7e96e03931a653a95ceff4
diff --git a/metadata/md5-cache/chromeos-base/syslog-cat-9999 b/metadata/md5-cache/chromeos-base/syslog-cat-9999
index 8ce2a04..de68ae6 100644
--- a/metadata/md5-cache/chromeos-base/syslog-cat-9999
+++ b/metadata/md5-cache/chromeos-base/syslog-cat-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Simple command to forward stdout/err to syslog
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/syslog-cat
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=17a9979571deae77cc5b34e2802dee4d
diff --git a/metadata/md5-cache/chromeos-base/system-locales-2.23-r1 b/metadata/md5-cache/chromeos-base/system-locales-2.23-r1
deleted file mode 100644
index f630238..0000000
--- a/metadata/md5-cache/chromeos-base/system-locales-2.23-r1
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile install
-DEPEND=>=sys-libs/glibc-2.23
-DESCRIPTION=Some system locales when apps need more than C (not for apps using ICU for i18n)
-EAPI=5
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=public-domain
-RDEPEND=>=sys-libs/glibc-2.23
-SLOT=0
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=fd22a90738679224c6f97c8440f8b746
diff --git a/metadata/md5-cache/chromeos-base/system-locales-2.32-r1 b/metadata/md5-cache/chromeos-base/system-locales-2.32-r1
new file mode 100644
index 0000000..7763b91
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/system-locales-2.32-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install
+DEPEND=~sys-libs/glibc-2.32
+DESCRIPTION=Some system locales when apps need more than C (not for apps using ICU for i18n)
+EAPI=5
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=public-domain
+RDEPEND=~sys-libs/glibc-2.32
+SLOT=0
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=1ad325a2e253719416cbfc2618862bcc
diff --git a/metadata/md5-cache/chromeos-base/system-proxy-0.0.1-r169 b/metadata/md5-cache/chromeos-base/system-proxy-0.0.1-r169
deleted file mode 100644
index 23ac5a1..0000000
--- a/metadata/md5-cache/chromeos-base/system-proxy-0.0.1-r169
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libpasswordprovider:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= dev-libs/protobuf:= dev-libs/dbus-glib:= sys-apps/dbus:= net-misc/curl:= chromeos-base/permission_broker-client:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=A daemon that provides authentication support for system services and ARC apps behind an authenticated web proxy.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/system-proxy/
-IUSE=fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5c6a69ae1a339332642149aa39da47d14efbe3fd_44ed5733b5f3094beee0a282d504224240a8582f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_5c6a69ae1a339332642149aa39da47d14efbe3fd_44ed5733b5f3094beee0a282d504224240a8582f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libpasswordprovider:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= dev-libs/protobuf:= dev-libs/dbus-glib:= sys-apps/dbus:= net-misc/curl:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=18076c54a6132465a38a6431eae186a7
diff --git a/metadata/md5-cache/chromeos-base/system-proxy-0.0.1-r214 b/metadata/md5-cache/chromeos-base/system-proxy-0.0.1-r214
new file mode 100644
index 0000000..e9b3581
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/system-proxy-0.0.1-r214
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/libpasswordprovider:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= dev-libs/protobuf:= sys-apps/dbus:= net-misc/curl:= chromeos-base/permission_broker-client:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=A daemon that provides authentication support for system services and ARC apps behind an authenticated web proxy.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/system-proxy/
+IUSE=fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_eae0546f4ee5132d4544af4770755eb05f60cba6_4ec0160713133cb6e004285d204db461280e4549_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_eae0546f4ee5132d4544af4770755eb05f60cba6_4ec0160713133cb6e004285d204db461280e4549_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libpasswordprovider:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= dev-libs/protobuf:= sys-apps/dbus:= net-misc/curl:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=99fb53c5a57de79d81d4596fe0f525fe
diff --git a/metadata/md5-cache/chromeos-base/system-proxy-9999 b/metadata/md5-cache/chromeos-base/system-proxy-9999
index b74c4be..f752d3e 100644
--- a/metadata/md5-cache/chromeos-base/system-proxy-9999
+++ b/metadata/md5-cache/chromeos-base/system-proxy-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libpasswordprovider:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= dev-libs/protobuf:= dev-libs/dbus-glib:= sys-apps/dbus:= net-misc/curl:= chromeos-base/permission_broker-client:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/libpasswordprovider:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= dev-libs/protobuf:= sys-apps/dbus:= net-misc/curl:= chromeos-base/permission_broker-client:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=A daemon that provides authentication support for system services and ARC apps behind an authenticated web proxy.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/system-proxy/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=chromeos-base/libpasswordprovider:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= dev-libs/protobuf:= dev-libs/dbus-glib:= sys-apps/dbus:= net-misc/curl:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=chromeos-base/libpasswordprovider:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= dev-libs/protobuf:= sys-apps/dbus:= net-misc/curl:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=bfb16918563a157c44415525712c2a7e
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=4a336ed930157a91435e347400b9e8a3
diff --git a/metadata/md5-cache/chromeos-base/system_api-0.0.1-r4175 b/metadata/md5-cache/chromeos-base/system_api-0.0.1-r4175
deleted file mode 100644
index 9ed262b..0000000
--- a/metadata/md5-cache/chromeos-base/system_api-0.0.1-r4175
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=dev-go/protobuf:= dev-libs/protobuf:= cros_host? ( net-libs/grpc:= ) dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS system API (D-Bus service names, etc.)
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/system_api/
-IUSE=cros_host fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_fa94807d1776021aeabe89544645b6660a98dc16_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_fa94807d1776021aeabe89544645b6660a98dc16_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-SLOT=0/1
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=fb7b7edf74d003cf792cb239bad3bfbb
diff --git a/metadata/md5-cache/chromeos-base/system_api-0.0.1-r4369 b/metadata/md5-cache/chromeos-base/system_api-0.0.1-r4369
new file mode 100644
index 0000000..478180b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/system_api-0.0.1-r4369
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst setup test unpack
+DEPEND=dev-go/protobuf:= dev-libs/protobuf:= cros_host? ( net-libs/grpc:= ) dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS system API (D-Bus service names, etc.)
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/system_api/
+IUSE=cros_host fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_17b97c5c2ddeb8fe389f24ed79e581941c90795b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_17b97c5c2ddeb8fe389f24ed79e581941c90795b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+SLOT=0/1
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=473a8c9686cf755995a0189d29652a71
diff --git a/metadata/md5-cache/chromeos-base/system_api-9999 b/metadata/md5-cache/chromeos-base/system_api-9999
index e3cb5e3..8170c3c 100644
--- a/metadata/md5-cache/chromeos-base/system_api-9999
+++ b/metadata/md5-cache/chromeos-base/system_api-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=dev-go/protobuf:= dev-libs/protobuf:= cros_host? ( net-libs/grpc:= ) dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-go/protobuf:= dev-libs/protobuf:= cros_host? ( net-libs/grpc:= ) dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS system API (D-Bus service names, etc.)
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/system_api/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
 SLOT=0/1
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cc037a96cac8d7f4ecc1eb86012b9bce
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=14718f05608cd370de55f0127143668f
diff --git a/metadata/md5-cache/chromeos-base/tast-build-deps-2-r5 b/metadata/md5-cache/chromeos-base/tast-build-deps-2-r5
deleted file mode 100644
index ada4bcd..0000000
--- a/metadata/md5-cache/chromeos-base/tast-build-deps-2-r5
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DEPEND=chromeos-base/aosp-frameworks-base-proto chromeos-base/cros-config-api chromeos-base/hardware_verifier_proto chromeos-base/policy-go-proto chromeos-base/system_api chromeos-base/vm_protos chromeos-base/wilco-dtc-grpc-protos dev-go/boringssl-acvptool dev-go/cdp dev-go/clock dev-go/cmp dev-go/crypto dev-go/dbus dev-go/dst dev-go/exif dev-go/fscrypt dev-go/gapi-drive dev-go/genproto dev-go/godebug dev-go/golang-evdev dev-go/golint dev-go/gopacket dev-go/gopsutil dev-go/go-matroska dev-go/go-sys dev-go/grpc dev-go/mdns dev-go/mp4 dev-go/oauth2 dev-go/perfetto-protos dev-go/protobuf dev-go/selinux dev-go/subcommands dev-go/sync dev-go/uuid dev-go/vsock dev-go/yaml
-DESCRIPTION=Build-time dependencies of Tast binaries
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
-IUSE=cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/aosp-frameworks-base-proto chromeos-base/cros-config-api chromeos-base/hardware_verifier_proto chromeos-base/policy-go-proto chromeos-base/system_api chromeos-base/vm_protos chromeos-base/wilco-dtc-grpc-protos dev-go/boringssl-acvptool dev-go/cdp dev-go/clock dev-go/cmp dev-go/crypto dev-go/dbus dev-go/dst dev-go/exif dev-go/fscrypt dev-go/gapi-drive dev-go/genproto dev-go/godebug dev-go/golang-evdev dev-go/golint dev-go/gopacket dev-go/gopsutil dev-go/go-matroska dev-go/go-sys dev-go/grpc dev-go/mdns dev-go/mp4 dev-go/oauth2 dev-go/perfetto-protos dev-go/protobuf dev-go/selinux dev-go/subcommands dev-go/sync dev-go/uuid dev-go/vsock dev-go/yaml
-SLOT=0/2-r5
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=48eeead8c10cc93abae276a04eecbb2a
diff --git a/metadata/md5-cache/chromeos-base/tast-build-deps-2-r6 b/metadata/md5-cache/chromeos-base/tast-build-deps-2-r6
new file mode 100644
index 0000000..72ef0e8
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tast-build-deps-2-r6
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DEPEND=chromeos-base/aosp-frameworks-base-proto chromeos-base/cros-config-api chromeos-base/hardware_verifier_proto chromeos-base/perfetto_proto chromeos-base/policy-go-proto chromeos-base/system_api chromeos-base/vm_protos chromeos-base/wilco-dtc-grpc-protos dev-go/boringssl-acvptool dev-go/cdp dev-go/clock dev-go/cmp dev-go/crypto dev-go/dbus dev-go/dst dev-go/exif dev-go/fscrypt dev-go/gapi-drive dev-go/genproto dev-go/godebug dev-go/golang-evdev dev-go/golint dev-go/gopacket dev-go/gopsutil dev-go/go-matroska dev-go/go-sys dev-go/grpc dev-go/mdns dev-go/mp4 dev-go/oauth2 dev-go/perfetto-protos dev-go/protobuf dev-go/selinux dev-go/subcommands dev-go/sync dev-go/uuid dev-go/vsock dev-go/yaml
+DESCRIPTION=Build-time dependencies of Tast binaries
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
+IUSE=cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/aosp-frameworks-base-proto chromeos-base/cros-config-api chromeos-base/hardware_verifier_proto chromeos-base/perfetto_proto chromeos-base/policy-go-proto chromeos-base/system_api chromeos-base/vm_protos chromeos-base/wilco-dtc-grpc-protos dev-go/boringssl-acvptool dev-go/cdp dev-go/clock dev-go/cmp dev-go/crypto dev-go/dbus dev-go/dst dev-go/exif dev-go/fscrypt dev-go/gapi-drive dev-go/genproto dev-go/godebug dev-go/golang-evdev dev-go/golint dev-go/gopacket dev-go/gopsutil dev-go/go-matroska dev-go/go-sys dev-go/grpc dev-go/mdns dev-go/mp4 dev-go/oauth2 dev-go/perfetto-protos dev-go/protobuf dev-go/selinux dev-go/subcommands dev-go/sync dev-go/uuid dev-go/vsock dev-go/yaml
+SLOT=0/2-r6
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c0283d5f34e008948111cdadcab2d8f3
diff --git a/metadata/md5-cache/chromeos-base/tast-build-deps-9999 b/metadata/md5-cache/chromeos-base/tast-build-deps-9999
index 96f484e..cfe5430 100644
--- a/metadata/md5-cache/chromeos-base/tast-build-deps-9999
+++ b/metadata/md5-cache/chromeos-base/tast-build-deps-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git
 DEFINED_PHASES=info setup unpack
-DEPEND=chromeos-base/aosp-frameworks-base-proto chromeos-base/cros-config-api chromeos-base/hardware_verifier_proto chromeos-base/policy-go-proto chromeos-base/system_api chromeos-base/vm_protos chromeos-base/wilco-dtc-grpc-protos dev-go/boringssl-acvptool dev-go/cdp dev-go/clock dev-go/cmp dev-go/crypto dev-go/dbus dev-go/dst dev-go/exif dev-go/fscrypt dev-go/gapi-drive dev-go/genproto dev-go/godebug dev-go/golang-evdev dev-go/golint dev-go/gopacket dev-go/gopsutil dev-go/go-matroska dev-go/go-sys dev-go/grpc dev-go/mdns dev-go/mp4 dev-go/oauth2 dev-go/perfetto-protos dev-go/protobuf dev-go/selinux dev-go/subcommands dev-go/sync dev-go/uuid dev-go/vsock dev-go/yaml
+DEPEND=chromeos-base/aosp-frameworks-base-proto chromeos-base/cros-config-api chromeos-base/hardware_verifier_proto chromeos-base/perfetto_proto chromeos-base/policy-go-proto chromeos-base/system_api chromeos-base/vm_protos chromeos-base/wilco-dtc-grpc-protos dev-go/boringssl-acvptool dev-go/cdp dev-go/clock dev-go/cmp dev-go/crypto dev-go/dbus dev-go/dst dev-go/exif dev-go/fscrypt dev-go/gapi-drive dev-go/genproto dev-go/godebug dev-go/golang-evdev dev-go/golint dev-go/gopacket dev-go/gopsutil dev-go/go-matroska dev-go/go-sys dev-go/grpc dev-go/mdns dev-go/mp4 dev-go/oauth2 dev-go/perfetto-protos dev-go/protobuf dev-go/selinux dev-go/subcommands dev-go/sync dev-go/uuid dev-go/vsock dev-go/yaml
 DESCRIPTION=Build-time dependencies of Tast binaries
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=chromeos-base/aosp-frameworks-base-proto chromeos-base/cros-config-api chromeos-base/hardware_verifier_proto chromeos-base/policy-go-proto chromeos-base/system_api chromeos-base/vm_protos chromeos-base/wilco-dtc-grpc-protos dev-go/boringssl-acvptool dev-go/cdp dev-go/clock dev-go/cmp dev-go/crypto dev-go/dbus dev-go/dst dev-go/exif dev-go/fscrypt dev-go/gapi-drive dev-go/genproto dev-go/godebug dev-go/golang-evdev dev-go/golint dev-go/gopacket dev-go/gopsutil dev-go/go-matroska dev-go/go-sys dev-go/grpc dev-go/mdns dev-go/mp4 dev-go/oauth2 dev-go/perfetto-protos dev-go/protobuf dev-go/selinux dev-go/subcommands dev-go/sync dev-go/uuid dev-go/vsock dev-go/yaml
+RDEPEND=chromeos-base/aosp-frameworks-base-proto chromeos-base/cros-config-api chromeos-base/hardware_verifier_proto chromeos-base/perfetto_proto chromeos-base/policy-go-proto chromeos-base/system_api chromeos-base/vm_protos chromeos-base/wilco-dtc-grpc-protos dev-go/boringssl-acvptool dev-go/cdp dev-go/clock dev-go/cmp dev-go/crypto dev-go/dbus dev-go/dst dev-go/exif dev-go/fscrypt dev-go/gapi-drive dev-go/genproto dev-go/godebug dev-go/golang-evdev dev-go/golint dev-go/gopacket dev-go/gopsutil dev-go/go-matroska dev-go/go-sys dev-go/grpc dev-go/mdns dev-go/mp4 dev-go/oauth2 dev-go/perfetto-protos dev-go/protobuf dev-go/selinux dev-go/subcommands dev-go/sync dev-go/uuid dev-go/vsock dev-go/yaml
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9906e8faedf48fae779b9d1f90a10e4d
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e01686abc3a3763fabaa94c6b863c075
diff --git a/metadata/md5-cache/chromeos-base/tast-cmd-0.0.1-r1155 b/metadata/md5-cache/chromeos-base/tast-cmd-0.0.1-r1155
new file mode 100644
index 0000000..753c630
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tast-cmd-0.0.1-r1155
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup test unpack
+DEPEND=chromeos-base/tast-build-deps:= dev-lang/go
+DESCRIPTION=Host executables for running integration tests
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
+IUSE=cros_host cros_workon_tree_f962a7d69f70f98e292bc4a8161b165a1d3af867
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=app-arch/tar app-arch/xz-utils chromeos-base/google-breakpad chromeos-base/tast-build-deps chromeos-base/tast-vars net-misc/gsutil !chromeos-base/tast-common
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a81516626ce2b5b145aac3a0f2ca4fab
diff --git a/metadata/md5-cache/chromeos-base/tast-cmd-0.0.1-r930 b/metadata/md5-cache/chromeos-base/tast-cmd-0.0.1-r930
deleted file mode 100644
index 08e5559..0000000
--- a/metadata/md5-cache/chromeos-base/tast-cmd-0.0.1-r930
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup test unpack
-DEPEND=chromeos-base/tast-build-deps:= dev-lang/go
-DESCRIPTION=Host executables for running integration tests
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
-IUSE=cros_host cros_workon_tree_4e4dfbb8e5d2e543de9f9d5ae03ead03a83c6a54
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=app-arch/tar app-arch/xz-utils chromeos-base/google-breakpad chromeos-base/tast-build-deps chromeos-base/tast-vars net-misc/gsutil !chromeos-base/tast-common
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=755a2a21a253053a4ebb5438ee2ac9ef
diff --git a/metadata/md5-cache/chromeos-base/tast-cmd-9999 b/metadata/md5-cache/chromeos-base/tast-cmd-9999
index 770199d..0396030 100644
--- a/metadata/md5-cache/chromeos-base/tast-cmd-9999
+++ b/metadata/md5-cache/chromeos-base/tast-cmd-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=app-arch/tar app-arch/xz-utils chromeos-base/google-breakpad chromeos-base/tast-build-deps chromeos-base/tast-vars net-misc/gsutil !chromeos-base/tast-common
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=08d9ea75e31233a043a6540cfd739da9
diff --git a/metadata/md5-cache/chromeos-base/tast-local-apks-cros-0.0.1-r108 b/metadata/md5-cache/chromeos-base/tast-local-apks-cros-0.0.1-r108
new file mode 100644
index 0000000..7beef41
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tast-local-apks-cros-0.0.1-r108
@@ -0,0 +1,12 @@
+BDEPEND=chromeos-base/android-sdk dev-util/gn dev-vcs/git
+DEFINED_PHASES=compile info install setup unpack
+DESCRIPTION=Compiled apks used by local Tast tests in the cros bundle
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast-tests/+/master/android
+IUSE=cros_host cros_workon_tree_891957ec6f33631e7104b99559ddd79608d5911d
+KEYWORDS=*
+LICENSE=BSD-Google GPL-3
+PROPERTIES=live
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=730038f571080ecb00f3c47a9631e8d6
diff --git a/metadata/md5-cache/chromeos-base/tast-local-apks-cros-0.0.1-r91 b/metadata/md5-cache/chromeos-base/tast-local-apks-cros-0.0.1-r91
deleted file mode 100644
index 3366490..0000000
--- a/metadata/md5-cache/chromeos-base/tast-local-apks-cros-0.0.1-r91
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=chromeos-base/android-sdk dev-util/gn dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=Compiled apks used by local Tast tests in the cros bundle
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast-tests/+/master/android
-IUSE=cros_host cros_workon_tree_23b18cbb03574ba10c9bc31d8768c95a3e54421f
-KEYWORDS=*
-LICENSE=BSD-Google GPL-3
-PROPERTIES=live
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d014b90aecc42ff7992d4eb1deefaf86
diff --git a/metadata/md5-cache/chromeos-base/tast-local-apks-cros-9999 b/metadata/md5-cache/chromeos-base/tast-local-apks-cros-9999
index 2a7d830..a2cabe3 100644
--- a/metadata/md5-cache/chromeos-base/tast-local-apks-cros-9999
+++ b/metadata/md5-cache/chromeos-base/tast-local-apks-cros-9999
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google GPL-3
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f45715c471fb3e052e7e96e145901b9d
diff --git a/metadata/md5-cache/chromeos-base/tast-local-helpers-cros-0.0.1-r174 b/metadata/md5-cache/chromeos-base/tast-local-helpers-cros-0.0.1-r174
deleted file mode 100644
index 9f76f81..0000000
--- a/metadata/md5-cache/chromeos-base/tast-local-helpers-cros-0.0.1-r174
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-cpp/gtest:= media-libs/minigbm:= x11-libs/libdrm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Compiled executables used by local Tast tests in the cros bundle
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast-tests/+/master/helpers
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c1fa41175af84710f4a22f81faab420dcbb774c5 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c1fa41175af84710f4a22f81faab420dcbb774c5 cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google GPL-3
-PROPERTIES=live live
-RDEPEND=dev-cpp/gtest:= media-libs/minigbm:= x11-libs/libdrm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dd5ca5c474c690a1562f56834e6a58f4
diff --git a/metadata/md5-cache/chromeos-base/tast-local-helpers-cros-0.0.1-r205 b/metadata/md5-cache/chromeos-base/tast-local-helpers-cros-0.0.1-r205
new file mode 100644
index 0000000..7d737df
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tast-local-helpers-cros-0.0.1-r205
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-cpp/gtest:= media-libs/minigbm:= x11-libs/libdrm:= chromeos-base/goldctl >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Compiled executables used by local Tast tests in the cros bundle
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast-tests/+/master/helpers
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_28cbb351025522a4f769aec6fc01bfb93d49208b cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_28cbb351025522a4f769aec6fc01bfb93d49208b cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google GPL-3
+PROPERTIES=live live
+RDEPEND=dev-cpp/gtest:= media-libs/minigbm:= x11-libs/libdrm:= chromeos-base/goldctl >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b5396be84c965a3d9340b7b1fa004140
diff --git a/metadata/md5-cache/chromeos-base/tast-local-helpers-cros-9999 b/metadata/md5-cache/chromeos-base/tast-local-helpers-cros-9999
index 031a064..98d37f3 100644
--- a/metadata/md5-cache/chromeos-base/tast-local-helpers-cros-9999
+++ b/metadata/md5-cache/chromeos-base/tast-local-helpers-cros-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-cpp/gtest:= media-libs/minigbm:= x11-libs/libdrm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-cpp/gtest:= media-libs/minigbm:= x11-libs/libdrm:= chromeos-base/goldctl >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Compiled executables used by local Tast tests in the cros bundle
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast-tests/+/master/helpers
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google GPL-3
 PROPERTIES=live live
-RDEPEND=dev-cpp/gtest:= media-libs/minigbm:= x11-libs/libdrm:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=dev-cpp/gtest:= media-libs/minigbm:= x11-libs/libdrm:= chromeos-base/goldctl >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0cb9cffe9bda2958d9d9fb2e5fb58957
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=546ff51c2a987ec239f8928671800cb1
diff --git a/metadata/md5-cache/chromeos-base/tast-local-test-runner-0.0.1-r1106 b/metadata/md5-cache/chromeos-base/tast-local-test-runner-0.0.1-r1106
new file mode 100644
index 0000000..24ab4e5
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tast-local-test-runner-0.0.1-r1106
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup test unpack
+DEPEND=chromeos-base/tast-build-deps:= dev-lang/go
+DESCRIPTION=Runner for local integration tests
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
+IUSE=cros_host cros_workon_tree_f962a7d69f70f98e292bc4a8161b165a1d3af867
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=app-arch/tar !chromeos-base/tast-common
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=327a863e2cca444c1bcb943ce22797c6
diff --git a/metadata/md5-cache/chromeos-base/tast-local-test-runner-0.0.1-r881 b/metadata/md5-cache/chromeos-base/tast-local-test-runner-0.0.1-r881
deleted file mode 100644
index 39de635..0000000
--- a/metadata/md5-cache/chromeos-base/tast-local-test-runner-0.0.1-r881
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup test unpack
-DEPEND=chromeos-base/tast-build-deps:= dev-lang/go
-DESCRIPTION=Runner for local integration tests
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
-IUSE=cros_host cros_workon_tree_4e4dfbb8e5d2e543de9f9d5ae03ead03a83c6a54
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=app-arch/tar !chromeos-base/tast-common
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=fe20f6f82d6d62d91ad3eff208a3c632
diff --git a/metadata/md5-cache/chromeos-base/tast-local-test-runner-9999 b/metadata/md5-cache/chromeos-base/tast-local-test-runner-9999
index a62971a..fc95a52 100644
--- a/metadata/md5-cache/chromeos-base/tast-local-test-runner-9999
+++ b/metadata/md5-cache/chromeos-base/tast-local-test-runner-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=app-arch/tar !chromeos-base/tast-common
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=912d6f3eb89e31da8608476aa69b8c89
diff --git a/metadata/md5-cache/chromeos-base/tast-local-tests-cros-0.0.1-r4847 b/metadata/md5-cache/chromeos-base/tast-local-tests-cros-0.0.1-r4847
deleted file mode 100644
index bcd15b5..0000000
--- a/metadata/md5-cache/chromeos-base/tast-local-tests-cros-0.0.1-r4847
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup test unpack
-DEPEND=chromeos-base/tast-build-deps:= dev-lang/go dev-go/crypto
-DESCRIPTION=Bundle of local integration tests for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast-tests/
-IUSE=arc chromeless_tty chromeless_tests kernel-3_8 kernel-3_10 kernel-3_14 cros_host cros_workon_tree_59cda803398fced4cea109f4b20bfba201efbfe0_4e4dfbb8e5d2e543de9f9d5ae03ead03a83c6a54
-KEYWORDS=*
-LICENSE=Apache-2.0 BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/policy-testserver chromeos-base/tast-local-helpers-cros chromeos-base/wprgo !chromeless_tty? ( !chromeless_tests? ( chromeos-base/drm-tests ) ) dev-libs/openssl:0= arc? ( chromeos-base/tast-local-apks-cros dev-util/android-tools dev-util/android-uiautomator-server ) net-misc/curl sys-apps/memtester sys-apps/rootdev virtual/udev !kernel-3_14? ( !kernel-3_10? ( !kernel-3_8? ( chromeos-base/virtual-usb-printer ) ) ) app-arch/tar
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	tast-bundle	bc410bcb993795eb7269ad5ba875aa55	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d06c0ec9d95a175b8f5761cf13c1f24d
diff --git a/metadata/md5-cache/chromeos-base/tast-local-tests-cros-0.0.1-r6666 b/metadata/md5-cache/chromeos-base/tast-local-tests-cros-0.0.1-r6666
new file mode 100644
index 0000000..b7b872a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tast-local-tests-cros-0.0.1-r6666
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup test unpack
+DEPEND=chromeos-base/tast-build-deps:= dev-lang/go dev-go/crypto
+DESCRIPTION=Bundle of local integration tests for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast-tests/
+IUSE=arc chromeless_tty chromeless_tests cups cros_host cros_workon_tree_e3005392b15b79f2265369f719b360f97892b320_f962a7d69f70f98e292bc4a8161b165a1d3af867
+KEYWORDS=*
+LICENSE=Apache-2.0 BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/policy-testserver chromeos-base/tast-local-helpers-cros chromeos-base/virtual-usb-printer chromeos-base/wprgo !chromeless_tty? ( !chromeless_tests? ( chromeos-base/drm-tests ) ) dev-libs/openssl:0= arc? ( chromeos-base/tast-local-apks-cros dev-util/android-tools dev-util/android-uiautomator-server ) net-misc/curl cups? ( net-print/ippsample ) sys-apps/memtester sys-apps/rootdev virtual/udev app-arch/tar
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	tast-bundle	1b6d710312664806231ed19202cd8ddc	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7ac421a113b72192f8e48b5385e9f333
diff --git a/metadata/md5-cache/chromeos-base/tast-local-tests-cros-9999 b/metadata/md5-cache/chromeos-base/tast-local-tests-cros-9999
index 873a26a..2fac4b1 100644
--- a/metadata/md5-cache/chromeos-base/tast-local-tests-cros-9999
+++ b/metadata/md5-cache/chromeos-base/tast-local-tests-cros-9999
@@ -4,11 +4,11 @@
 DESCRIPTION=Bundle of local integration tests for Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast-tests/
-IUSE=arc chromeless_tty chromeless_tests kernel-3_8 kernel-3_10 kernel-3_14 cros_host cros_workon_tree_
+IUSE=arc chromeless_tty chromeless_tests cups cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=Apache-2.0 BSD-Google
 PROPERTIES=live
-RDEPEND=chromeos-base/policy-testserver chromeos-base/tast-local-helpers-cros chromeos-base/wprgo !chromeless_tty? ( !chromeless_tests? ( chromeos-base/drm-tests ) ) dev-libs/openssl:0= arc? ( chromeos-base/tast-local-apks-cros dev-util/android-tools dev-util/android-uiautomator-server ) net-misc/curl sys-apps/memtester sys-apps/rootdev virtual/udev !kernel-3_14? ( !kernel-3_10? ( !kernel-3_8? ( chromeos-base/virtual-usb-printer ) ) ) app-arch/tar
+RDEPEND=chromeos-base/policy-testserver chromeos-base/tast-local-helpers-cros chromeos-base/virtual-usb-printer chromeos-base/wprgo !chromeless_tty? ( !chromeless_tests? ( chromeos-base/drm-tests ) ) dev-libs/openssl:0= arc? ( chromeos-base/tast-local-apks-cros dev-util/android-tools dev-util/android-uiautomator-server ) net-misc/curl cups? ( net-print/ippsample ) sys-apps/memtester sys-apps/rootdev virtual/udev app-arch/tar
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	tast-bundle	bc410bcb993795eb7269ad5ba875aa55	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=594010b841a3a79f1dbf6a6ab3241074
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	tast-bundle	1b6d710312664806231ed19202cd8ddc	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=160ac78f5303e5971b88d25b89177a75
diff --git a/metadata/md5-cache/chromeos-base/tast-proto-0.0.1-r21 b/metadata/md5-cache/chromeos-base/tast-proto-0.0.1-r21
new file mode 100644
index 0000000..51f2bd1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tast-proto-0.0.1-r21
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=dev-lang/go
+DESCRIPTION=Provides go bindings to proto APIs for tast
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
+IUSE=cros_host cros_workon_tree_f962a7d69f70f98e292bc4a8161b165a1d3af867
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3a62c6209d8dd3fab68d2fcfc87e0186
diff --git a/metadata/md5-cache/chromeos-base/tast-proto-9999 b/metadata/md5-cache/chromeos-base/tast-proto-9999
new file mode 100644
index 0000000..e729fef
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tast-proto-9999
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=dev-lang/go
+DESCRIPTION=Provides go bindings to proto APIs for tast
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
+IUSE=cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a666e178209fd4f5a175db75474c8c9e
diff --git a/metadata/md5-cache/chromeos-base/tast-remote-tests-cros-0.0.1-r4885 b/metadata/md5-cache/chromeos-base/tast-remote-tests-cros-0.0.1-r4885
deleted file mode 100644
index 1b73cfe..0000000
--- a/metadata/md5-cache/chromeos-base/tast-remote-tests-cros-0.0.1-r4885
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup test unpack
-DEPEND=chromeos-base/tast-build-deps:= dev-lang/go dev-go/crypto
-DESCRIPTION=Bundle of remote integration tests for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast-tests/
-IUSE=cros_host cros_workon_tree_59cda803398fced4cea109f4b20bfba201efbfe0_4e4dfbb8e5d2e543de9f9d5ae03ead03a83c6a54_7c21ad286a49cc09ef2bd9f6c03939f016e9c889
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=app-arch/tar
-SLOT=0/0.0.1-r4885
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	tast-bundle	bc410bcb993795eb7269ad5ba875aa55	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f1e5678a6017ca4bb6befbb4f0f7a20e
diff --git a/metadata/md5-cache/chromeos-base/tast-remote-tests-cros-0.0.1-r6716 b/metadata/md5-cache/chromeos-base/tast-remote-tests-cros-0.0.1-r6716
new file mode 100644
index 0000000..e4cb9f0
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tast-remote-tests-cros-0.0.1-r6716
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup test unpack
+DEPEND=chromeos-base/tast-build-deps:= dev-lang/go dev-go/crypto
+DESCRIPTION=Bundle of remote integration tests for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast-tests/
+IUSE=cros_host cros_workon_tree_e3005392b15b79f2265369f719b360f97892b320_f962a7d69f70f98e292bc4a8161b165a1d3af867_19a599e153588e7beddcc62b22f526879f2985cf
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-python/pillow media-libs/opencv app-arch/tar
+SLOT=0/0.0.1-r6716
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	tast-bundle	1b6d710312664806231ed19202cd8ddc	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d73c3378fd1fcc764d21b577904fe1c9
diff --git a/metadata/md5-cache/chromeos-base/tast-remote-tests-cros-9999 b/metadata/md5-cache/chromeos-base/tast-remote-tests-cros-9999
index 4b9ea90..e74bc93 100644
--- a/metadata/md5-cache/chromeos-base/tast-remote-tests-cros-9999
+++ b/metadata/md5-cache/chromeos-base/tast-remote-tests-cros-9999
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=app-arch/tar
+RDEPEND=dev-python/pillow media-libs/opencv app-arch/tar
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	tast-bundle	bc410bcb993795eb7269ad5ba875aa55	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8a67b612ff7126a68953481fd236dffb
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	tast-bundle	1b6d710312664806231ed19202cd8ddc	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3b05127a08c6e34713bc6d19b99c44f4
diff --git a/metadata/md5-cache/chromeos-base/tast-use-flags-1-r30 b/metadata/md5-cache/chromeos-base/tast-use-flags-1-r30
deleted file mode 100644
index 8832e4c..0000000
--- a/metadata/md5-cache/chromeos-base/tast-use-flags-1-r30
+++ /dev/null
@@ -1,11 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Text file listing USE flags for Tast test dependencies
-EAPI=7
-IUSE=amd64 android-container-pi android-vm-pi android-vm-rvc arc arc-camera1 arc-camera3 arc-launched-32bit-abi arc_uses_cros_video_decoder arcpp arcvm arm arm64 asan betty biod borealis_host cert_provision cheets_user cheets_user_64 cheets_userdebug cheets_userdebug_64 chrome_internal chrome_media chromeless_tty containers coresched cr50_onboard crosvm-gpu cups diagnostics disable_cros_video_decoder dptf elm-kernelnext +display_backlight dlc dlc_test +drivefs drm_atomic elm fizz force_breakpad gboard_decoder grunt hana hana-kernelnext houdini houdini64 internal +internal_mic +internal_speaker iwlwifi_rescan kernel-3_8 kernel-3_10 kernel-3_14 kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-5_4 kernel-5_10 kukui kvm_host kvm_transition lxc memd ml_benchmark_drivers ml_service moblab mocktpm msan +nacl ndk_translation ndk_translation64 nnapi nyan_kitty ocr octopus pita racc rialto rk3399 selinux selinux_experimental skate smartdim snow spring +storage_wearout_detect touchview tpm2 transparent_hugepage ubsan unibuild usbguard v4l2_codec vaapi veyron_mickey veyron_rialto video_cards_amdgpu video_cards_intel virtio_gpu vulkan watchdog wifi_hostap_test wilco +wired_8021x wpa3_sae zork cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=93e9d766fc20c92a3af3b7714e984208
diff --git a/metadata/md5-cache/chromeos-base/tast-use-flags-1-r46 b/metadata/md5-cache/chromeos-base/tast-use-flags-1-r46
new file mode 100644
index 0000000..5e2da4a
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tast-use-flags-1-r46
@@ -0,0 +1,11 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Text file listing USE flags for Tast test dependencies
+EAPI=7
+IUSE=amd64 android-container-pi android-vm-pi android-vm-rvc arc arc-camera1 arc-camera3 arc-launched-32bit-abi arc_uses_cros_video_decoder arcpp arcvm arm arm64 asan betty biod borealis_host cdm_factory_daemon cert_provision cheets_user cheets_user_64 cheets_userdebug cheets_userdebug_64 chrome_internal chrome_media chromeless_tty containers coresched cr50_onboard crosvm-gpu cups diagnostics disable_cros_video_decoder dptf elm-kernelnext direncription_allow_v2 dlc dlc_test +drivefs drm_atomic elm fizz force_breakpad fwupd gboard_decoder grunt hammerd hana hana-kernelnext houdini houdini64 hps iioservice internal +internal_mic +internal_speaker iwlwifi_rescan kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-5_4 kernel-5_10 kernel-upstream kukui kvm_host kvm_transition lxc manatee mbo memd ml_benchmark_drivers ml_service moblab mocktpm msan +nacl ndk_translation ndk_translation64 nnapi nvme nyan_kitty ocr octopus ondevice_handwriting pita racc rialto rk3399 sata selinux selinux_experimental sirenia skate smartdim snow spring +storage_wearout_detect tablet_form_factor touchview tpm2 transparent_hugepage ubsan unibuild usbguard v4l2_codec vaapi veyron_mickey veyron_rialto vhost-user-devices video_cards_amdgpu video_cards_intel virtio_gpu vulkan watchdog wifi_hostap_test wilco +wired_8021x +wpa3_sae zork cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b11a7fb122137665c598661c6b08df03
diff --git a/metadata/md5-cache/chromeos-base/tast-use-flags-9999 b/metadata/md5-cache/chromeos-base/tast-use-flags-9999
index 72a43ee..6024b44 100644
--- a/metadata/md5-cache/chromeos-base/tast-use-flags-9999
+++ b/metadata/md5-cache/chromeos-base/tast-use-flags-9999
@@ -2,10 +2,10 @@
 DEFINED_PHASES=info install setup unpack
 DESCRIPTION=Text file listing USE flags for Tast test dependencies
 EAPI=7
-IUSE=amd64 android-container-pi android-vm-pi android-vm-rvc arc arc-camera1 arc-camera3 arc-launched-32bit-abi arc_uses_cros_video_decoder arcpp arcvm arm arm64 asan betty biod borealis_host cert_provision cheets_user cheets_user_64 cheets_userdebug cheets_userdebug_64 chrome_internal chrome_media chromeless_tty containers coresched cr50_onboard crosvm-gpu cups diagnostics disable_cros_video_decoder dptf elm-kernelnext +display_backlight dlc dlc_test +drivefs drm_atomic elm fizz force_breakpad gboard_decoder grunt hana hana-kernelnext houdini houdini64 internal +internal_mic +internal_speaker iwlwifi_rescan kernel-3_8 kernel-3_10 kernel-3_14 kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-5_4 kernel-5_10 kukui kvm_host kvm_transition lxc memd ml_benchmark_drivers ml_service moblab mocktpm msan +nacl ndk_translation ndk_translation64 nnapi nyan_kitty ocr octopus pita racc rialto rk3399 selinux selinux_experimental skate smartdim snow spring +storage_wearout_detect touchview tpm2 transparent_hugepage ubsan unibuild usbguard v4l2_codec vaapi veyron_mickey veyron_rialto video_cards_amdgpu video_cards_intel virtio_gpu vulkan watchdog wifi_hostap_test wilco +wired_8021x wpa3_sae zork cros_host cros_workon_tree_
+IUSE=amd64 android-container-pi android-vm-pi android-vm-rvc arc arc-camera1 arc-camera3 arc-launched-32bit-abi arc_uses_cros_video_decoder arcpp arcvm arm arm64 asan betty biod borealis_host cdm_factory_daemon cert_provision cheets_user cheets_user_64 cheets_userdebug cheets_userdebug_64 chrome_internal chrome_media chromeless_tty containers coresched cr50_onboard crosvm-gpu cups diagnostics disable_cros_video_decoder dptf elm-kernelnext direncription_allow_v2 dlc dlc_test +drivefs drm_atomic elm fizz force_breakpad fwupd gboard_decoder grunt hammerd hana hana-kernelnext houdini houdini64 hps iioservice internal +internal_mic +internal_speaker iwlwifi_rescan kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-5_4 kernel-5_10 kernel-upstream kukui kvm_host kvm_transition lxc manatee mbo memd ml_benchmark_drivers ml_service moblab mocktpm msan +nacl ndk_translation ndk_translation64 nnapi nvme nyan_kitty ocr octopus ondevice_handwriting pita racc rialto rk3399 sata selinux selinux_experimental sirenia skate smartdim snow spring +storage_wearout_detect tablet_form_factor touchview tpm2 transparent_hugepage ubsan unibuild usbguard v4l2_codec vaapi veyron_mickey veyron_rialto vhost-user-devices video_cards_amdgpu video_cards_intel virtio_gpu vulkan watchdog wifi_hostap_test wilco +wired_8021x +wpa3_sae zork cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6a44b07a37ff40ced902a5fa78bdf22a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e4d0813f355ded075b2c49cfd59ab6a7
diff --git a/metadata/md5-cache/chromeos-base/tast-vars-0.0.1-r1 b/metadata/md5-cache/chromeos-base/tast-vars-0.0.1-r1
index dd31448..9d53db0 100644
--- a/metadata/md5-cache/chromeos-base/tast-vars-0.0.1-r1
+++ b/metadata/md5-cache/chromeos-base/tast-vars-0.0.1-r1
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=virtual/tast-vars
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d5b97aca55555b1f63821bf4701e6371
diff --git a/metadata/md5-cache/chromeos-base/tast-vars-9999 b/metadata/md5-cache/chromeos-base/tast-vars-9999
index 59732f3..4004f2b 100644
--- a/metadata/md5-cache/chromeos-base/tast-vars-9999
+++ b/metadata/md5-cache/chromeos-base/tast-vars-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=virtual/tast-vars
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=1ba04dc57cf392b99a5b4668bbe04b68
diff --git a/metadata/md5-cache/chromeos-base/termina-dlc-89.13672.0.0.42001-r1 b/metadata/md5-cache/chromeos-base/termina-dlc-89.13672.0.0.42001-r1
deleted file mode 100644
index 1d45d40..0000000
--- a/metadata/md5-cache/chromeos-base/termina-dlc-89.13672.0.0.42001-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=chromeos-base/update_engine
-DESCRIPTION=DLC package for termina.
-EAPI=7
-IUSE=kvm_host dlc amd64 arm cros_host cros_workon_tree_
-KEYWORDS=*
-LICENSE=BSD-Google
-REQUIRED_USE=dlc kvm_host ^^ ( amd64 arm arm64 )
-RESTRICT=nomirror
-SLOT=0
-SRC_URI=amd64? ( gs://termina-component-testing/uprev-test/amd64/89.13672.0.0.42001/guest-vm-base.tbz -> termina_amd64.tbz ) arm? ( gs://termina-component-testing/uprev-test/arm/89.13672.0.0.42001/guest-vm-base.tbz -> termina_arm.tbz ) arm64? ( gs://termina-component-testing/uprev-test/arm/89.13672.0.0.42001/guest-vm-base.tbz -> termina_arm.tbz )
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	dlc	c539aa2d32aaba22acfb2eb623710a96	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f52813f059b2281ef70373fbd527e355
diff --git a/metadata/md5-cache/chromeos-base/termina-dlc-93.14054.0.0-r1 b/metadata/md5-cache/chromeos-base/termina-dlc-93.14054.0.0-r1
new file mode 100644
index 0000000..0cb852e
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/termina-dlc-93.14054.0.0-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile info install setup unpack
+DESCRIPTION=DLC package for termina.
+EAPI=7
+IUSE=kvm_host dlc amd64 arm cros_host cros_workon_tree_
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=dlc kvm_host ^^ ( amd64 arm arm64 )
+RESTRICT=nomirror
+SLOT=0
+SRC_URI=amd64? ( gs://termina-component-testing/uprev-test/amd64/93.14054.0.0/guest-vm-base.tbz -> termina_amd64.tbz ) arm? ( gs://termina-component-testing/uprev-test/arm/93.14054.0.0/guest-vm-base.tbz -> termina_arm.tbz ) arm64? ( gs://termina-component-testing/uprev-test/arm/93.14054.0.0/guest-vm-base.tbz -> termina_arm.tbz )
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	dlc	7fff3565c77657ab37a6955949c208a7	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8a12dfe11ddb070ad1a2e1808e7c4b64
diff --git a/metadata/md5-cache/chromeos-base/termina-dlc-9999 b/metadata/md5-cache/chromeos-base/termina-dlc-9999
index 4ee897c..48c984e 100644
--- a/metadata/md5-cache/chromeos-base/termina-dlc-9999
+++ b/metadata/md5-cache/chromeos-base/termina-dlc-9999
@@ -1,5 +1,4 @@
 DEFINED_PHASES=compile info install setup unpack
-DEPEND=chromeos-base/update_engine
 DESCRIPTION=DLC package for termina.
 EAPI=7
 IUSE=kvm_host dlc amd64 arm cros_host cros_workon_tree_
@@ -8,5 +7,5 @@
 REQUIRED_USE=dlc kvm_host ^^ ( amd64 arm arm64 )
 RESTRICT=nomirror
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	dlc	c539aa2d32aaba22acfb2eb623710a96	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8ff1e3212d2885430846102150778104
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	dlc	7fff3565c77657ab37a6955949c208a7	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=843c6a394c8cf67c23eae95b72185eed
diff --git a/metadata/md5-cache/chromeos-base/termina_container_tools-0.0.1 b/metadata/md5-cache/chromeos-base/termina_container_tools-0.0.1
index 49589e6..0e5d53b 100644
--- a/metadata/md5-cache/chromeos-base/termina_container_tools-0.0.1
+++ b/metadata/md5-cache/chromeos-base/termina_container_tools-0.0.1
@@ -1,5 +1,5 @@
 DEFINED_PHASES=install
-DEPEND=chromeos-base/chunnel chromeos-base/sommelier chromeos-base/vm_guest_tools vm_borealis? ( chromeos-base/crash-reporter ) net-libs/grpc:= dev-libs/protobuf:= media-libs/mesa x11-apps/xkbcomp x11-base/xwayland >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+DEPEND=chromeos-base/chunnel !vm_borealis? ( chromeos-base/sommelier ) chromeos-base/vm_guest_tools vm_borealis? ( chromeos-base/crash-reporter ) net-libs/grpc:= dev-libs/protobuf:= !vm_borealis? ( media-libs/mesa ) !vm_borealis? ( x11-apps/xkbcomp ) !vm_borealis? ( x11-base/xwayland ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
 DESCRIPTION=Packages tools for termina VM containers
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools
@@ -9,4 +9,4 @@
 RDEPEND=x11-themes/cros-adapta >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
 SLOT=0
 _eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=041e2d156e722f492d55927972922ba3
+_md5_=125630f460c69fd378430b9b94b71d5c
diff --git a/metadata/md5-cache/chromeos-base/termina_container_tools-0.0.1-r25 b/metadata/md5-cache/chromeos-base/termina_container_tools-0.0.1-r25
deleted file mode 100644
index 49589e6..0000000
--- a/metadata/md5-cache/chromeos-base/termina_container_tools-0.0.1-r25
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=install
-DEPEND=chromeos-base/chunnel chromeos-base/sommelier chromeos-base/vm_guest_tools vm_borealis? ( chromeos-base/crash-reporter ) net-libs/grpc:= dev-libs/protobuf:= media-libs/mesa x11-apps/xkbcomp x11-base/xwayland >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-DESCRIPTION=Packages tools for termina VM containers
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools
-IUSE=vm_borealis cros-debug
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=x11-themes/cros-adapta >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=041e2d156e722f492d55927972922ba3
diff --git a/metadata/md5-cache/chromeos-base/termina_container_tools-0.0.1-r30 b/metadata/md5-cache/chromeos-base/termina_container_tools-0.0.1-r30
new file mode 100644
index 0000000..0e5d53b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/termina_container_tools-0.0.1-r30
@@ -0,0 +1,12 @@
+DEFINED_PHASES=install
+DEPEND=chromeos-base/chunnel !vm_borealis? ( chromeos-base/sommelier ) chromeos-base/vm_guest_tools vm_borealis? ( chromeos-base/crash-reporter ) net-libs/grpc:= dev-libs/protobuf:= !vm_borealis? ( media-libs/mesa ) !vm_borealis? ( x11-apps/xkbcomp ) !vm_borealis? ( x11-base/xwayland ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+DESCRIPTION=Packages tools for termina VM containers
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools
+IUSE=vm_borealis cros-debug
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=x11-themes/cros-adapta >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=125630f460c69fd378430b9b94b71d5c
diff --git a/metadata/md5-cache/chromeos-base/test-server-0.0.1-r40 b/metadata/md5-cache/chromeos-base/test-server-0.0.1-r40
new file mode 100644
index 0000000..97855c9
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/test-server-0.0.1-r40
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DEPEND=dev-util/provision-server dev-util/test-exec-server dev-util/test-plan
+DESCRIPTION=Collection of test services installed into the cros_sdk env
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src
+IUSE=cros_host cros_workon_tree_f3ec367333d2cf60a121dbc47a5780c04ce28dc7
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-util/provision-server dev-util/test-exec-server dev-util/test-plan
+SLOT=0/0.0.1-r40
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6c9a87d5f73db9138b975da2cefa8f19
diff --git a/metadata/md5-cache/chromeos-base/test-server-9999 b/metadata/md5-cache/chromeos-base/test-server-9999
new file mode 100644
index 0000000..ecaea73
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/test-server-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DEPEND=dev-util/provision-server dev-util/test-exec-server dev-util/test-plan
+DESCRIPTION=Collection of test services installed into the cros_sdk env
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src
+IUSE=cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-util/provision-server dev-util/test-exec-server dev-util/test-plan
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d74c773a0d19b827b9478fcc009441d5
diff --git a/metadata/md5-cache/chromeos-base/thd-0.0.1-r316 b/metadata/md5-cache/chromeos-base/thd-0.0.1-r316
deleted file mode 100644
index 604d7b5..0000000
--- a/metadata/md5-cache/chromeos-base/thd-0.0.1-r316
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Thermal Daemon for Chromium OS
-EAPI=5
-HOMEPAGE=http://dev.chromium.org/chromium-os/packages/thd
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_1c6d674d28b3b153c7986a900cf2dc5c05dfd0b8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_1c6d674d28b3b153c7986a900cf2dc5c05dfd0b8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=7ceea9c869284d2e74b3a955c2a9cd92
diff --git a/metadata/md5-cache/chromeos-base/thd-0.0.1-r343 b/metadata/md5-cache/chromeos-base/thd-0.0.1-r343
new file mode 100644
index 0000000..5f9fc09
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/thd-0.0.1-r343
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Thermal Daemon for Chromium OS
+EAPI=5
+HOMEPAGE=http://dev.chromium.org/chromium-os/packages/thd
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ece498561dfd2919d08524f2ad5d5c60982feb4b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_ece498561dfd2919d08524f2ad5d5c60982feb4b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=ba4dd0fd63d2bebc9cfbce29190ab1be
diff --git a/metadata/md5-cache/chromeos-base/thd-9999 b/metadata/md5-cache/chromeos-base/thd-9999
index e6b5578..ae43107 100644
--- a/metadata/md5-cache/chromeos-base/thd-9999
+++ b/metadata/md5-cache/chromeos-base/thd-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Thermal Daemon for Chromium OS
 EAPI=5
 HOMEPAGE=http://dev.chromium.org/chromium-os/packages/thd
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=75c46430d9519c5ded02a48f6bc33466
diff --git a/metadata/md5-cache/chromeos-base/thermal-0.0.1 b/metadata/md5-cache/chromeos-base/thermal-0.0.1
deleted file mode 100644
index f474729..0000000
--- a/metadata/md5-cache/chromeos-base/thermal-0.0.1
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Simple thermal throttling script
-EAPI=4
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=!<chromeos-base/chromeos-bsp-daisy-0.0.1-r53 !<chromeos-base/chromeos-bsp-pit-private-0.0.1-r15 chromeos-base/chromeos-init
-SLOT=0
-_md5_=e067a75c2a1c555dbc4f6a2d26baca8e
diff --git a/metadata/md5-cache/chromeos-base/thermal-0.0.1-r4 b/metadata/md5-cache/chromeos-base/thermal-0.0.1-r4
deleted file mode 100644
index f474729..0000000
--- a/metadata/md5-cache/chromeos-base/thermal-0.0.1-r4
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Simple thermal throttling script
-EAPI=4
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=!<chromeos-base/chromeos-bsp-daisy-0.0.1-r53 !<chromeos-base/chromeos-bsp-pit-private-0.0.1-r15 chromeos-base/chromeos-init
-SLOT=0
-_md5_=e067a75c2a1c555dbc4f6a2d26baca8e
diff --git a/metadata/md5-cache/chromeos-base/timberslide-0.0.1-r1494 b/metadata/md5-cache/chromeos-base/timberslide-0.0.1-r1494
deleted file mode 100644
index 91c118d..0000000
--- a/metadata/md5-cache/chromeos-base/timberslide-0.0.1-r1494
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/re2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=EC log concatenator for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/timberslide/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_4fc04a2f4186bc5f583ec5f27235868dc3343d5b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_4fc04a2f4186bc5f583ec5f27235868dc3343d5b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/re2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r1494
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b4c600c58cff3827f8e11ff278dcd368
diff --git a/metadata/md5-cache/chromeos-base/timberslide-0.0.1-r1559 b/metadata/md5-cache/chromeos-base/timberslide-0.0.1-r1559
new file mode 100644
index 0000000..d464f33
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/timberslide-0.0.1-r1559
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/re2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=EC log concatenator for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/timberslide/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_ed5e8ef1b9fb278f4990bde11814cdf639d8aa20_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_ed5e8ef1b9fb278f4990bde11814cdf639d8aa20_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/re2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r1559
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5b0dfa39b6756145f99b27f94d643552
diff --git a/metadata/md5-cache/chromeos-base/timberslide-9999 b/metadata/md5-cache/chromeos-base/timberslide-9999
index d897136..25b3355 100644
--- a/metadata/md5-cache/chromeos-base/timberslide-9999
+++ b/metadata/md5-cache/chromeos-base/timberslide-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/re2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/re2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=EC log concatenator for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/timberslide/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/re2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=2c8ac5d5e1c911ea2f5bba37f8c3b4a1
diff --git a/metadata/md5-cache/chromeos-base/tnull-0.0.1-r28 b/metadata/md5-cache/chromeos-base/tnull-0.0.1-r28
index 002d7c5..1c1f4c3 100644
--- a/metadata/md5-cache/chromeos-base/tnull-0.0.1-r28
+++ b/metadata/md5-cache/chromeos-base/tnull-0.0.1-r28
@@ -9,5 +9,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=9d92d24175faf9e6b67a95d15174e036
diff --git a/metadata/md5-cache/chromeos-base/tnull-9999 b/metadata/md5-cache/chromeos-base/tnull-9999
index 6c97067..8bcf72d 100644
--- a/metadata/md5-cache/chromeos-base/tnull-9999
+++ b/metadata/md5-cache/chromeos-base/tnull-9999
@@ -9,5 +9,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=fe8b11d6ee02231a8e40a7f365230c5a
diff --git a/metadata/md5-cache/chromeos-base/toolchain-tests-0.0.1-r4297 b/metadata/md5-cache/chromeos-base/toolchain-tests-0.0.1-r4297
deleted file mode 100644
index 8f7eb54..0000000
--- a/metadata/md5-cache/chromeos-base/toolchain-tests-0.0.1-r4297
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DESCRIPTION=Compilation and runtime tests for toolchain
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
-IUSE=cros_host cros_workon_tree_9c318efb5bd9aef8b16389f9f2573412b9e576cc
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/0.0.1-r4297
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b1ee63c99f76204a6baaad09886aaddb
diff --git a/metadata/md5-cache/chromeos-base/toolchain-tests-0.0.1-r5143 b/metadata/md5-cache/chromeos-base/toolchain-tests-0.0.1-r5143
new file mode 100644
index 0000000..feeef52
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/toolchain-tests-0.0.1-r5143
@@ -0,0 +1,12 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DESCRIPTION=Compilation and runtime tests for toolchain
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/autotest/
+IUSE=cros_host cros_workon_tree_210df4cb14c4f7c420a697e85e6a7bec211d5bed
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0.0.1-r5143
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9d144bf90ad6e79e76cb227cf21121d4
diff --git a/metadata/md5-cache/chromeos-base/toolchain-tests-9999 b/metadata/md5-cache/chromeos-base/toolchain-tests-9999
index 84459bc..38f1df1 100644
--- a/metadata/md5-cache/chromeos-base/toolchain-tests-9999
+++ b/metadata/md5-cache/chromeos-base/toolchain-tests-9999
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ae2e5d50ffd97772f75b8f2264154265
diff --git a/metadata/md5-cache/chromeos-base/touch_firmware_calibration-0.0.1-r865 b/metadata/md5-cache/chromeos-base/touch_firmware_calibration-0.0.1-r865
deleted file mode 100644
index cb45c68..0000000
--- a/metadata/md5-cache/chromeos-base/touch_firmware_calibration-0.0.1-r865
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout virtual/pkgconfig
-DESCRIPTION=Touch Firmware Calibration
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/touch_firmware_calibration/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_106994593e4698856f0de3f4da8e62cfeb0c1694_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_106994593e4698856f0de3f4da8e62cfeb0c1694_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a7202eaf91e0b36a6d6db81a8686f4ac
diff --git a/metadata/md5-cache/chromeos-base/touch_firmware_calibration-0.0.1-r893 b/metadata/md5-cache/chromeos-base/touch_firmware_calibration-0.0.1-r893
new file mode 100644
index 0000000..645a6dc
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/touch_firmware_calibration-0.0.1-r893
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout virtual/pkgconfig
+DESCRIPTION=Touch Firmware Calibration
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/touch_firmware_calibration/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_92e357708a584d0da1efabfdc10b432c2bfc40c9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_92e357708a584d0da1efabfdc10b432c2bfc40c9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=b836c9231fb719d84a59f984c719c156
diff --git a/metadata/md5-cache/chromeos-base/touch_firmware_calibration-9999 b/metadata/md5-cache/chromeos-base/touch_firmware_calibration-9999
index 4f2d648..8348327 100644
--- a/metadata/md5-cache/chromeos-base/touch_firmware_calibration-9999
+++ b/metadata/md5-cache/chromeos-base/touch_firmware_calibration-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout virtual/pkgconfig
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout virtual/pkgconfig
 DESCRIPTION=Touch Firmware Calibration
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/touch_firmware_calibration/
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3f2d0d30f67da119cfdb592d8f5d1df9
diff --git a/metadata/md5-cache/chromeos-base/touch_firmware_test-0.0.1-r119 b/metadata/md5-cache/chromeos-base/touch_firmware_test-0.0.1-r119
index 6832ddc..564c72b 100644
--- a/metadata/md5-cache/chromeos-base/touch_firmware_test-0.0.1-r119
+++ b/metadata/md5-cache/chromeos-base/touch_firmware_test-0.0.1-r119
@@ -9,5 +9,5 @@
 RDEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=3989e2874f40e2b0b4e5215aa29e9210
diff --git a/metadata/md5-cache/chromeos-base/touch_firmware_test-9999 b/metadata/md5-cache/chromeos-base/touch_firmware_test-9999
index 917f064..c5e5c2c 100644
--- a/metadata/md5-cache/chromeos-base/touch_firmware_test-9999
+++ b/metadata/md5-cache/chromeos-base/touch_firmware_test-9999
@@ -9,5 +9,5 @@
 RDEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=3ec2b337730ff30d554e3207edab5217
diff --git a/metadata/md5-cache/chromeos-base/touch_keyboard-0.0.1-r1147 b/metadata/md5-cache/chromeos-base/touch_keyboard-0.0.1-r1147
deleted file mode 100644
index a7fd6e3..0000000
--- a/metadata/md5-cache/chromeos-base/touch_keyboard-0.0.1-r1147
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Touch Keyboard
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/touch_keyboard/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=c08fc94a6a859ef55f0a063888f38867
diff --git a/metadata/md5-cache/chromeos-base/touch_keyboard-0.0.1-r1172 b/metadata/md5-cache/chromeos-base/touch_keyboard-0.0.1-r1172
new file mode 100644
index 0000000..5b084fd
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/touch_keyboard-0.0.1-r1172
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Touch Keyboard
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/touch_keyboard/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=100af735c3c7414fe394ae6a5729847b
diff --git a/metadata/md5-cache/chromeos-base/touch_keyboard-9999 b/metadata/md5-cache/chromeos-base/touch_keyboard-9999
index 564d550..f45374c 100644
--- a/metadata/md5-cache/chromeos-base/touch_keyboard-9999
+++ b/metadata/md5-cache/chromeos-base/touch_keyboard-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Touch Keyboard
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/touch_keyboard/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=684dd5cf4aaffc4207bf0df6531e7b6c
diff --git a/metadata/md5-cache/chromeos-base/touch_updater-0.0.1-r202 b/metadata/md5-cache/chromeos-base/touch_updater-0.0.1-r202
deleted file mode 100644
index b53f908..0000000
--- a/metadata/md5-cache/chromeos-base/touch_updater-0.0.1-r202
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install preinst setup unpack
-DEPEND=sys-apps/baselayout
-DESCRIPTION=Touch firmware and config updater
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os
-IUSE=input_devices_synaptics input_devices_wacom input_devices_etphidiap input_devices_st input_devices_st_touchscreen input_devices_weida input_devices_goodix input_devices_sis input_devices_pixart input_devices_g2touch input_devices_cirque input_devices_elan_i2chid input_devices_melfas input_devices_emright input_devices_eps2pstiap cros_host cros_workon_tree_626e200c9c99eadfa3352d77feb5acca8c933264_b8aff264287e61e5a75e50cbcd4057fd9697a2c8
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/chromeos-touch-common input_devices_synaptics? ( chromeos-base/rmi4utils ) input_devices_wacom? ( chromeos-base/wacom_fw_flash ) input_devices_etphidiap? ( chromeos-base/chromeos-touch-etphidiap ) input_devices_st? ( chromeos-base/st_flash ) input_devices_st_touchscreen? ( chromeos-base/chromeos-touch-stupdate ) input_devices_weida? ( chromeos-base/weida_wdt_util ) input_devices_goodix? ( chromeos-base/gdix_hid_firmware_update ) input_devices_sis? ( chromeos-base/sisConsoletool ) input_devices_pixart? ( chromeos-base/pixart_tpfwup ) input_devices_g2touch? ( chromeos-base/g2update_tool ) input_devices_cirque? ( chromeos-base/cirque_fw_update ) input_devices_elan_i2chid? ( chromeos-base/elan_i2chid_tools ) input_devices_melfas? ( chromeos-base/mfs-console-tool ) input_devices_emright? ( chromeos-base/emright_fw_updater ) input_devices_eps2pstiap? ( chromeos-base/epstps2iap ) sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=8c85192d4b494ff961a66db87cb9801f
diff --git a/metadata/md5-cache/chromeos-base/touch_updater-0.0.1-r224 b/metadata/md5-cache/chromeos-base/touch_updater-0.0.1-r224
new file mode 100644
index 0000000..378b446
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/touch_updater-0.0.1-r224
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install preinst setup unpack
+DEPEND=sys-apps/baselayout
+DESCRIPTION=Touch firmware and config updater
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os
+IUSE=input_devices_synaptics input_devices_wacom input_devices_etphidiap input_devices_st input_devices_st_touchscreen input_devices_weida input_devices_goodix input_devices_sis input_devices_pixart input_devices_g2touch input_devices_cirque input_devices_elan_i2chid input_devices_melfas input_devices_emright input_devices_eps2pstiap input_devices_zinitix cros_host cros_workon_tree_4c5be99747ad647497aaf07a79cb4dd0ac28f841_589fe50e26955bab53030dec80ef99bf9546844b
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-touch-common input_devices_synaptics? ( chromeos-base/rmi4utils ) input_devices_wacom? ( chromeos-base/wacom_fw_flash ) input_devices_etphidiap? ( chromeos-base/chromeos-touch-etphidiap ) input_devices_st? ( chromeos-base/st_flash ) input_devices_st_touchscreen? ( chromeos-base/chromeos-touch-stupdate ) input_devices_weida? ( chromeos-base/weida_wdt_util ) input_devices_goodix? ( chromeos-base/gdix_hid_firmware_update ) input_devices_sis? ( chromeos-base/sisConsoletool ) input_devices_pixart? ( chromeos-base/pixart_tpfwup ) input_devices_g2touch? ( chromeos-base/g2update_tool ) input_devices_cirque? ( chromeos-base/cirque_fw_update ) input_devices_elan_i2chid? ( chromeos-base/elan_i2chid_tools ) input_devices_melfas? ( chromeos-base/mfs-console-tool ) input_devices_emright? ( chromeos-base/emright_fw_updater ) input_devices_eps2pstiap? ( chromeos-base/epstps2iap ) input_devices_zinitix? ( chromeos-base/zinitix_fw_updater ) sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=bf69ae00895bd21195d98513549f12a8
diff --git a/metadata/md5-cache/chromeos-base/touch_updater-9999 b/metadata/md5-cache/chromeos-base/touch_updater-9999
index 7238f4b..89318c5 100644
--- a/metadata/md5-cache/chromeos-base/touch_updater-9999
+++ b/metadata/md5-cache/chromeos-base/touch_updater-9999
@@ -4,11 +4,11 @@
 DESCRIPTION=Touch firmware and config updater
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os
-IUSE=input_devices_synaptics input_devices_wacom input_devices_etphidiap input_devices_st input_devices_st_touchscreen input_devices_weida input_devices_goodix input_devices_sis input_devices_pixart input_devices_g2touch input_devices_cirque input_devices_elan_i2chid input_devices_melfas input_devices_emright input_devices_eps2pstiap cros_host cros_workon_tree_
+IUSE=input_devices_synaptics input_devices_wacom input_devices_etphidiap input_devices_st input_devices_st_touchscreen input_devices_weida input_devices_goodix input_devices_sis input_devices_pixart input_devices_g2touch input_devices_cirque input_devices_elan_i2chid input_devices_melfas input_devices_emright input_devices_eps2pstiap input_devices_zinitix cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=chromeos-base/chromeos-touch-common input_devices_synaptics? ( chromeos-base/rmi4utils ) input_devices_wacom? ( chromeos-base/wacom_fw_flash ) input_devices_etphidiap? ( chromeos-base/chromeos-touch-etphidiap ) input_devices_st? ( chromeos-base/st_flash ) input_devices_st_touchscreen? ( chromeos-base/chromeos-touch-stupdate ) input_devices_weida? ( chromeos-base/weida_wdt_util ) input_devices_goodix? ( chromeos-base/gdix_hid_firmware_update ) input_devices_sis? ( chromeos-base/sisConsoletool ) input_devices_pixart? ( chromeos-base/pixart_tpfwup ) input_devices_g2touch? ( chromeos-base/g2update_tool ) input_devices_cirque? ( chromeos-base/cirque_fw_update ) input_devices_elan_i2chid? ( chromeos-base/elan_i2chid_tools ) input_devices_melfas? ( chromeos-base/mfs-console-tool ) input_devices_emright? ( chromeos-base/emright_fw_updater ) input_devices_eps2pstiap? ( chromeos-base/epstps2iap ) sys-apps/baselayout
+RDEPEND=chromeos-base/chromeos-touch-common input_devices_synaptics? ( chromeos-base/rmi4utils ) input_devices_wacom? ( chromeos-base/wacom_fw_flash ) input_devices_etphidiap? ( chromeos-base/chromeos-touch-etphidiap ) input_devices_st? ( chromeos-base/st_flash ) input_devices_st_touchscreen? ( chromeos-base/chromeos-touch-stupdate ) input_devices_weida? ( chromeos-base/weida_wdt_util ) input_devices_goodix? ( chromeos-base/gdix_hid_firmware_update ) input_devices_sis? ( chromeos-base/sisConsoletool ) input_devices_pixart? ( chromeos-base/pixart_tpfwup ) input_devices_g2touch? ( chromeos-base/g2update_tool ) input_devices_cirque? ( chromeos-base/cirque_fw_update ) input_devices_elan_i2chid? ( chromeos-base/elan_i2chid_tools ) input_devices_melfas? ( chromeos-base/mfs-console-tool ) input_devices_emright? ( chromeos-base/emright_fw_updater ) input_devices_eps2pstiap? ( chromeos-base/epstps2iap ) input_devices_zinitix? ( chromeos-base/zinitix_fw_updater ) sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=3114431a033d8392e25f7cf5692b1525
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=be9cbab8ccc05d493db35e968f2764d4
diff --git a/metadata/md5-cache/chromeos-base/tpm-0.0.1-r17 b/metadata/md5-cache/chromeos-base/tpm-0.0.1-r17
index f79374b..2445e58 100644
--- a/metadata/md5-cache/chromeos-base/tpm-0.0.1-r17
+++ b/metadata/md5-cache/chromeos-base/tpm-0.0.1-r17
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=app-crypt/trousers:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d34f3a150e311f2eb2394f497013928a
diff --git a/metadata/md5-cache/chromeos-base/tpm-9999 b/metadata/md5-cache/chromeos-base/tpm-9999
index aa3e572..f95480b 100644
--- a/metadata/md5-cache/chromeos-base/tpm-9999
+++ b/metadata/md5-cache/chromeos-base/tpm-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=app-crypt/trousers:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f4d306e226a82704f5c61b62a26f4d70
diff --git a/metadata/md5-cache/chromeos-base/tpm-check-0.0.1-r1909 b/metadata/md5-cache/chromeos-base/tpm-check-0.0.1-r1909
deleted file mode 100644
index 1093c97..0000000
--- a/metadata/md5-cache/chromeos-base/tpm-check-0.0.1-r1909
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DESCRIPTION=tpm check test
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vboot_reference/
-IUSE=+autotest +tests_hardware_TPMCheck cros_host cros_workon_tree_06c3486af100c39ddc9cb59381d087b4f2ed1634 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-SLOT=0/0.0.1-r1909
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d7a78c8a8f9ff5a79e139198a6a2594a
diff --git a/metadata/md5-cache/chromeos-base/tpm-check-0.0.1-r1954 b/metadata/md5-cache/chromeos-base/tpm-check-0.0.1-r1954
new file mode 100644
index 0000000..1e31fbb
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tpm-check-0.0.1-r1954
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DESCRIPTION=tpm check test
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vboot_reference/
+IUSE=+autotest +tests_hardware_TPMCheck cros_host cros_workon_tree_3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+SLOT=0/0.0.1-r1954
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8cf050d4abf4a114c22ab334a16b778c
diff --git a/metadata/md5-cache/chromeos-base/tpm-check-9999 b/metadata/md5-cache/chromeos-base/tpm-check-9999
index 9526759..d3df85e 100644
--- a/metadata/md5-cache/chromeos-base/tpm-check-9999
+++ b/metadata/md5-cache/chromeos-base/tpm-check-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0/9999
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=6f9612d32297b8c376d94aa08b0b40b1
diff --git a/metadata/md5-cache/chromeos-base/tpm-firmware-tests-0.0.1-r1929 b/metadata/md5-cache/chromeos-base/tpm-firmware-tests-0.0.1-r1929
deleted file mode 100644
index 0ed54f4..0000000
--- a/metadata/md5-cache/chromeos-base/tpm-firmware-tests-0.0.1-r1929
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DEPEND=app-crypt/trousers:= chromeos-base/tpm:=
-DESCRIPTION=TPM firmware tests
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vboot_reference/
-IUSE=+autotest +tests_hardware_TPMFirmware +tests_hardware_TPMFirmwareServer cros_host cros_workon_tree_06c3486af100c39ddc9cb59381d087b4f2ed1634 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-SLOT=0/0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=00512a3e820540548ce09813eda78646
diff --git a/metadata/md5-cache/chromeos-base/tpm-firmware-tests-0.0.1-r1974 b/metadata/md5-cache/chromeos-base/tpm-firmware-tests-0.0.1-r1974
new file mode 100644
index 0000000..b083d0d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tpm-firmware-tests-0.0.1-r1974
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DEPEND=app-crypt/trousers:= chromeos-base/tpm:=
+DESCRIPTION=TPM firmware tests
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vboot_reference/
+IUSE=+autotest +tests_hardware_TPMFirmware +tests_hardware_TPMFirmwareServer cros_host cros_workon_tree_3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+SLOT=0/0
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3af97147a23927d1db39ab4f61d27982
diff --git a/metadata/md5-cache/chromeos-base/tpm-firmware-tests-9999 b/metadata/md5-cache/chromeos-base/tpm-firmware-tests-9999
index 84b2353..8979c42 100644
--- a/metadata/md5-cache/chromeos-base/tpm-firmware-tests-9999
+++ b/metadata/md5-cache/chromeos-base/tpm-firmware-tests-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0/0
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=69e670cc784c4b3a24afc05332fa1bc2
diff --git a/metadata/md5-cache/chromeos-base/tpm2-0.0.1-r132 b/metadata/md5-cache/chromeos-base/tpm2-0.0.1-r132
deleted file mode 100644
index e0cb811..0000000
--- a/metadata/md5-cache/chromeos-base/tpm2-0.0.1-r132
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=dev-libs/openssl:0=
-DESCRIPTION=TPM2.0 library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/tpm2/
-IUSE=tpm2_simulator tpm2_simulator_manufacturer cros_host cros_workon_tree_80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/0.0.1-r132
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ae803c544ef7a41e9c5528c96799b9d9
diff --git a/metadata/md5-cache/chromeos-base/tpm2-0.0.1-r136 b/metadata/md5-cache/chromeos-base/tpm2-0.0.1-r136
new file mode 100644
index 0000000..2188f62
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tpm2-0.0.1-r136
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install setup unpack
+DEPEND=dev-libs/openssl:0=
+DESCRIPTION=TPM2.0 library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/tpm2/
+IUSE=generic_tpm2 tpm2_simulator tpm2_simulator_manufacturer cros_host cros_workon_tree_679fa8b14bd105ad9959a0f82eaa928d5b18890d
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0.0.1-r136
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=88305707e8c2d216eb96489c37b74a72
diff --git a/metadata/md5-cache/chromeos-base/tpm2-9999 b/metadata/md5-cache/chromeos-base/tpm2-9999
index bac3f59..7200d8e 100644
--- a/metadata/md5-cache/chromeos-base/tpm2-9999
+++ b/metadata/md5-cache/chromeos-base/tpm2-9999
@@ -4,10 +4,10 @@
 DESCRIPTION=TPM2.0 library
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/tpm2/
-IUSE=tpm2_simulator tpm2_simulator_manufacturer cros_host cros_workon_tree_
+IUSE=generic_tpm2 tpm2_simulator tpm2_simulator_manufacturer cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b607dc1a55944e9b238baafe54fd50ae
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8f3b0e37f015d0ba84758fe9c95c8163
diff --git a/metadata/md5-cache/chromeos-base/tpm2-simulator-0.0.1-r1780 b/metadata/md5-cache/chromeos-base/tpm2-simulator-0.0.1-r1780
deleted file mode 100644
index e3e8b18..0000000
--- a/metadata/md5-cache/chromeos-base/tpm2-simulator-0.0.1-r1780
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/tpm2:= dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=TPM 2.0 Simulator
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm2-simulator/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_bd13eabfc804c66584fba6988a8b836b170442d7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_bd13eabfc804c66584fba6988a8b836b170442d7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=82c885fc13041d2e533901da4514ad0e
diff --git a/metadata/md5-cache/chromeos-base/tpm2-simulator-0.0.1-r1818 b/metadata/md5-cache/chromeos-base/tpm2-simulator-0.0.1-r1818
new file mode 100644
index 0000000..7449fe7
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tpm2-simulator-0.0.1-r1818
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/tpm2:=[tpm2_simulator,tpm2_simulator_manufacturer] chromeos-base/vboot_reference:=[tpm2_simulator] dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=TPM 2.0 Simulator
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm2-simulator/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_01f3fdde08f176cc653d3d0c46c04c446cfa9a81_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_01f3fdde08f176cc653d3d0c46c04c446cfa9a81_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=56fae03942bb2e4713350c05abfa4958
diff --git a/metadata/md5-cache/chromeos-base/tpm2-simulator-9999 b/metadata/md5-cache/chromeos-base/tpm2-simulator-9999
index 20a6944..422757f 100644
--- a/metadata/md5-cache/chromeos-base/tpm2-simulator-9999
+++ b/metadata/md5-cache/chromeos-base/tpm2-simulator-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/tpm2:= dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/tpm2:=[tpm2_simulator,tpm2_simulator_manufacturer] chromeos-base/vboot_reference:=[tpm2_simulator] dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=TPM 2.0 Simulator
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm2-simulator/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/openssl:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=765545df909a8b9e993df0018920b418
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=1e49f07fbfc20797b440700cd308eba0
diff --git a/metadata/md5-cache/chromeos-base/tpm_lite-0.0.1-r16 b/metadata/md5-cache/chromeos-base/tpm_lite-0.0.1-r16
index f76b68a..d2c074b3 100644
--- a/metadata/md5-cache/chromeos-base/tpm_lite-0.0.1-r16
+++ b/metadata/md5-cache/chromeos-base/tpm_lite-0.0.1-r16
@@ -9,5 +9,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=dd72d8a77505999e183e54ac232a0bef
diff --git a/metadata/md5-cache/chromeos-base/tpm_lite-9999 b/metadata/md5-cache/chromeos-base/tpm_lite-9999
index 1e4c742..72c4245 100644
--- a/metadata/md5-cache/chromeos-base/tpm_lite-9999
+++ b/metadata/md5-cache/chromeos-base/tpm_lite-9999
@@ -9,5 +9,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=99b461cb781faa53987b05ac0a189d2c
diff --git a/metadata/md5-cache/chromeos-base/tpm_manager-0.0.1-r2146 b/metadata/md5-cache/chromeos-base/tpm_manager-0.0.1-r2146
deleted file mode 100644
index 8372d0f..0000000
--- a/metadata/md5-cache/chromeos-base/tpm_manager-0.0.1-r2146
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=!tpm2? ( app-crypt/trousers ) tpm2? ( chromeos-base/trunks ) >=chromeos-base/metrics-0.0.1-r3152 chromeos-base/minijail chromeos-base/libhwsec chromeos-base/libtpmcrypto chromeos-base/system_api:=[fuzzer?] tpm2? ( chromeos-base/trunks[test?] ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Daemon to manage TPM ownership.
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_manager/
-IUSE=test tpm tpm2 fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_989d840598227b15d78525d5f92c806011a9c158_6bcff6ea2d0ff76e4398205aee498eb314d63902_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e3bf102d9535965e9911dc352202c6927e8f5514_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_989d840598227b15d78525d5f92c806011a9c158_6bcff6ea2d0ff76e4398205aee498eb314d63902_8d228c8e702aebee142bcbf0763a15786eb5b3bb_e3bf102d9535965e9911dc352202c6927e8f5514_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=Apache-2.0
-PROPERTIES=live live
-RDEPEND=!tpm2? ( app-crypt/trousers ) tpm2? ( chromeos-base/trunks ) >=chromeos-base/metrics-0.0.1-r3152 chromeos-base/minijail chromeos-base/libhwsec chromeos-base/libtpmcrypto chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-REQUIRED_USE=tpm2? ( !tpm )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b8c68f06ba47682604249040e85c9591
diff --git a/metadata/md5-cache/chromeos-base/tpm_manager-0.0.1-r2255 b/metadata/md5-cache/chromeos-base/tpm_manager-0.0.1-r2255
new file mode 100644
index 0000000..283d0c1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tpm_manager-0.0.1-r2255
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=!tpm2? ( app-crypt/trousers ) tpm2? ( chromeos-base/trunks ) >=chromeos-base/metrics-0.0.1-r3152 chromeos-base/minijail chromeos-base/libhwsec chromeos-base/libtpmcrypto chromeos-base/system_api:=[fuzzer?] chromeos-base/tpm_manager-client tpm2? ( chromeos-base/trunks[test?] ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Daemon to manage TPM ownership.
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_manager/
+IUSE=pinweaver_csme test tpm tpm2 fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_5d77de997847c22cb783cc11cd0fab4f6fae59f0_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_5d77de997847c22cb783cc11cd0fab4f6fae59f0_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live live
+RDEPEND=!tpm2? ( app-crypt/trousers ) tpm2? ( chromeos-base/trunks ) >=chromeos-base/metrics-0.0.1-r3152 chromeos-base/minijail chromeos-base/libhwsec chromeos-base/libtpmcrypto chromeos-base/system_api:=[fuzzer?] chromeos-base/tpm_manager-client >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+REQUIRED_USE=tpm2? ( !tpm )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=c88c45d5ccb38be4158a3c25c5637f77
diff --git a/metadata/md5-cache/chromeos-base/tpm_manager-9999 b/metadata/md5-cache/chromeos-base/tpm_manager-9999
index 0febc98..ebf2546 100644
--- a/metadata/md5-cache/chromeos-base/tpm_manager-9999
+++ b/metadata/md5-cache/chromeos-base/tpm_manager-9999
@@ -1,14 +1,14 @@
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=!tpm2? ( app-crypt/trousers ) tpm2? ( chromeos-base/trunks ) >=chromeos-base/metrics-0.0.1-r3152 chromeos-base/minijail chromeos-base/libhwsec chromeos-base/libtpmcrypto chromeos-base/system_api:=[fuzzer?] tpm2? ( chromeos-base/trunks[test?] ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=!tpm2? ( app-crypt/trousers ) tpm2? ( chromeos-base/trunks ) >=chromeos-base/metrics-0.0.1-r3152 chromeos-base/minijail chromeos-base/libhwsec chromeos-base/libtpmcrypto chromeos-base/system_api:=[fuzzer?] chromeos-base/tpm_manager-client tpm2? ( chromeos-base/trunks[test?] ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Daemon to manage TPM ownership.
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_manager/
-IUSE=test tpm tpm2 fuzzer cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=pinweaver_csme test tpm tpm2 fuzzer cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=Apache-2.0
 PROPERTIES=live live
-RDEPEND=!tpm2? ( app-crypt/trousers ) tpm2? ( chromeos-base/trunks ) >=chromeos-base/metrics-0.0.1-r3152 chromeos-base/minijail chromeos-base/libhwsec chromeos-base/libtpmcrypto chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=!tpm2? ( app-crypt/trousers ) tpm2? ( chromeos-base/trunks ) >=chromeos-base/metrics-0.0.1-r3152 chromeos-base/minijail chromeos-base/libhwsec chromeos-base/libtpmcrypto chromeos-base/system_api:=[fuzzer?] chromeos-base/tpm_manager-client >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 REQUIRED_USE=tpm2? ( !tpm )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=82d28b2746152630eedb176056508398
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=859e5ff206780a4ca44b5a2f3fd21633
diff --git a/metadata/md5-cache/chromeos-base/tpm_manager-client-0.0.1-r215 b/metadata/md5-cache/chromeos-base/tpm_manager-client-0.0.1-r215
deleted file mode 100644
index 59f8ae5..0000000
--- a/metadata/md5-cache/chromeos-base/tpm_manager-client-0.0.1-r215
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 ) chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=TPM Manager D-Bus client library for Chromium OS
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_manager/client/
-IUSE=cros_host cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e3bf102d9535965e9911dc352202c6927e8f5514_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e3bf102d9535965e9911dc352202c6927e8f5514_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!<chromeos-base/tpm_manager-0.0.1 chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9de9230f3d3c6c4c5b20ff0952b1294d
diff --git a/metadata/md5-cache/chromeos-base/tpm_manager-client-0.0.1-r259 b/metadata/md5-cache/chromeos-base/tpm_manager-client-0.0.1-r259
new file mode 100644
index 0000000..6305643
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tpm_manager-client-0.0.1-r259
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 ) chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=TPM Manager D-Bus client library for Chromium OS
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_manager/client/
+IUSE=cros_host test tpm tpm2 fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_8cc20aa2c0f7a2d6b073576b3e41ac39c9be2df6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!<chromeos-base/tpm_manager-0.0.1-r2238 chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=6c0a1f981dbc21afc37ea2b21094accb
diff --git a/metadata/md5-cache/chromeos-base/tpm_manager-client-9999 b/metadata/md5-cache/chromeos-base/tpm_manager-client-9999
index eb07d57..9d12dbd 100644
--- a/metadata/md5-cache/chromeos-base/tpm_manager-client-9999
+++ b/metadata/md5-cache/chromeos-base/tpm_manager-client-9999
@@ -1,13 +1,13 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 ) chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=cros_host? ( >=chromeos-base/chromeos-dbus-bindings-0.0.1-r1058 ) chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=TPM Manager D-Bus client library for Chromium OS
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_manager/client/
-IUSE=cros_host cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host test tpm tpm2 fuzzer cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=!<chromeos-base/tpm_manager-0.0.1 chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=!<chromeos-base/tpm_manager-0.0.1-r2238 chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=71cda314d41d4b44b1f501f4b413a976
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=462efd000b57ae3a6d6771b68b463197
diff --git a/metadata/md5-cache/chromeos-base/tpm_softclear_utils-0.0.1-r188 b/metadata/md5-cache/chromeos-base/tpm_softclear_utils-0.0.1-r188
deleted file mode 100644
index ef033e6..0000000
--- a/metadata/md5-cache/chromeos-base/tpm_softclear_utils-0.0.1-r188
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/system_api:= chromeos-base/trunks:=[test?] ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Utilities for soft-clearing TPM. This package resides in test images only.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_softclear_utils/
-IUSE=test tpm tpm2 cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_d4688b618445182a5925e02136792a8973362e7c_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_d4688b618445182a5925e02136792a8973362e7c_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-REQUIRED_USE=tpm2? ( !tpm )
-SLOT=0/0.0.1-r188
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=956a55726a892ce15837225bf988ba26
diff --git a/metadata/md5-cache/chromeos-base/tpm_softclear_utils-0.0.1-r243 b/metadata/md5-cache/chromeos-base/tpm_softclear_utils-0.0.1-r243
new file mode 100644
index 0000000..09fffec
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tpm_softclear_utils-0.0.1-r243
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/system_api:= chromeos-base/trunks:=[test?] ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Utilities for soft-clearing TPM. This package resides in test images only.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_softclear_utils/
+IUSE=test tpm tpm2 cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_7797f13629c40bd876baedd3bf20a36d625d5e4f_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_7797f13629c40bd876baedd3bf20a36d625d5e4f_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=tpm2? ( !tpm )
+SLOT=0/0.0.1-r243
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=eca3499365233e82d96a9af9e26c2ec4
diff --git a/metadata/md5-cache/chromeos-base/tpm_softclear_utils-9999 b/metadata/md5-cache/chromeos-base/tpm_softclear_utils-9999
index 53b8b1c..5316c3b 100644
--- a/metadata/md5-cache/chromeos-base/tpm_softclear_utils-9999
+++ b/metadata/md5-cache/chromeos-base/tpm_softclear_utils-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/system_api:= chromeos-base/trunks:=[test?] ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) tpm2? ( chromeos-base/system_api:= chromeos-base/trunks:=[test?] ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Utilities for soft-clearing TPM. This package resides in test images only.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/tpm_softclear_utils/
@@ -11,5 +11,5 @@
 RDEPEND=tpm2? ( chromeos-base/trunks:= ) !tpm2? ( app-crypt/trousers:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 REQUIRED_USE=tpm2? ( !tpm )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=b31be778702e835ae57e6ae194941051
diff --git a/metadata/md5-cache/chromeos-base/tremplin-0.0.1-r127 b/metadata/md5-cache/chromeos-base/tremplin-0.0.1-r127
deleted file mode 100644
index df8770e..0000000
--- a/metadata/md5-cache/chromeos-base/tremplin-0.0.1-r127
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst setup test unpack
-DEPEND=app-emulation/lxd:= chromeos-base/vm_guest_tools:= chromeos-base/vm_protos:= dev-go/go-libaudit:= dev-go/go-sys:= dev-go/grpc:= dev-go/kobject:= dev-go/netlink:= dev-go/vsock:= dev-go/yaml:= dev-lang/go
-DESCRIPTION=Tremplin LXD client with gRPC support
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tremplin/
-IUSE=cros_host cros_workon_tree_55949f9f79ed15b23eda83631f0d73b40a0a1956
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=app-emulation/lxd:=
-SLOT=0/0.0.1-r127
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cb06af5c5ff08ac9d7332779d04eee5b
diff --git a/metadata/md5-cache/chromeos-base/tremplin-0.0.1-r136 b/metadata/md5-cache/chromeos-base/tremplin-0.0.1-r136
new file mode 100644
index 0000000..16b58a2
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/tremplin-0.0.1-r136
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=app-emulation/lxd:0 app-emulation/lxd:4 chromeos-base/vm_guest_tools:= chromeos-base/vm_protos:= dev-go/go-libaudit:= dev-go/go-sys:= dev-go/grpc:= dev-go/kobject:= dev-go/netlink:= dev-go/vsock:= dev-go/yaml:= dev-lang/go
+DESCRIPTION=Tremplin LXD client with gRPC support
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tremplin/
+IUSE=cros_host cros_workon_tree_d8596cb320788c979bbb9cfb0401124793b180df
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=app-emulation/lxd:0 app-emulation/lxd:4
+SLOT=0/0.0.1-r136
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fe3bcbbbf8726401637e3bb458f94117
diff --git a/metadata/md5-cache/chromeos-base/tremplin-9999 b/metadata/md5-cache/chromeos-base/tremplin-9999
index f0697ec..82be8b2 100644
--- a/metadata/md5-cache/chromeos-base/tremplin-9999
+++ b/metadata/md5-cache/chromeos-base/tremplin-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git
 DEFINED_PHASES=compile info install postinst setup test unpack
-DEPEND=app-emulation/lxd:= chromeos-base/vm_guest_tools:= chromeos-base/vm_protos:= dev-go/go-libaudit:= dev-go/go-sys:= dev-go/grpc:= dev-go/kobject:= dev-go/netlink:= dev-go/vsock:= dev-go/yaml:= dev-lang/go
+DEPEND=app-emulation/lxd:0 app-emulation/lxd:4 chromeos-base/vm_guest_tools:= chromeos-base/vm_protos:= dev-go/go-libaudit:= dev-go/go-sys:= dev-go/grpc:= dev-go/kobject:= dev-go/netlink:= dev-go/vsock:= dev-go/yaml:= dev-lang/go
 DESCRIPTION=Tremplin LXD client with gRPC support
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tremplin/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=app-emulation/lxd:=
+RDEPEND=app-emulation/lxd:0 app-emulation/lxd:4
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2ba8e4936c284542fb571d1fd1b60ecb
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fa359a5edd300f179e4ddbe9f3321605
diff --git a/metadata/md5-cache/chromeos-base/trunks-0.0.1-r2876 b/metadata/md5-cache/chromeos-base/trunks-0.0.1-r2876
deleted file mode 100644
index 2ddff22..0000000
--- a/metadata/md5-cache/chromeos-base/trunks-0.0.1-r2876
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/minijail:= chromeos-base/power_manager-client:= ftdi_tpm? ( dev-embedded/libftdi:= ) tpm2_simulator? ( chromeos-base/tpm2:= ) dev-libs/protobuf:= fuzzer? ( dev-cpp/gtest:= ) chromeos-base/chromeos-ec-headers:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Trunks service for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/trunks/
-IUSE=cr50_onboard fuzzer ftdi_tpm test tpm2_simulator cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_989d840598227b15d78525d5f92c806011a9c158_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_989d840598227b15d78525d5f92c806011a9c158_20ed8021024637e492670d20fa5969a2ad75e4b6_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=Apache-2.0
-PROPERTIES=live live
-RDEPEND=chromeos-base/minijail:= chromeos-base/power_manager-client:= ftdi_tpm? ( dev-embedded/libftdi:= ) tpm2_simulator? ( chromeos-base/tpm2:= ) dev-libs/protobuf:= fuzzer? ( dev-cpp/gtest:= ) cr50_onboard? ( chromeos-base/chromeos-cr50 ) !app-crypt/tpm-tools chromeos-base/libhwsec >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r2876
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=3dd4e7a0e9b10e6221421e19ed09ac33
diff --git a/metadata/md5-cache/chromeos-base/trunks-0.0.1-r2968 b/metadata/md5-cache/chromeos-base/trunks-0.0.1-r2968
new file mode 100644
index 0000000..968b9e8
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/trunks-0.0.1-r2968
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/power_manager-client:= ftdi_tpm? ( dev-embedded/libftdi:= ) tpm2_simulator? ( chromeos-base/tpm2:= vtpm_proxy? ( chromeos-base/tpm2-simulator:= ) ) dev-libs/protobuf:= fuzzer? ( dev-cpp/gtest:= ) chromeos-base/chromeos-ec-headers:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Trunks service for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/trunks/
+IUSE=cr50_onboard csme_emulator fuzzer ftdi_tpm generic_tpm2 pinweaver_csme test ti50_onboard tpm2_simulator vtpm_proxy cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_0b612d0f1e8dbe59a5549b476f1e681e0b7fe94e_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_0b612d0f1e8dbe59a5549b476f1e681e0b7fe94e_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_a06a3f47395fb7b584188c6852764bc773e5497e_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/power_manager-client:= ftdi_tpm? ( dev-embedded/libftdi:= ) tpm2_simulator? ( chromeos-base/tpm2:= vtpm_proxy? ( chromeos-base/tpm2-simulator:= ) ) dev-libs/protobuf:= fuzzer? ( dev-cpp/gtest:= ) cr50_onboard? ( chromeos-base/chromeos-cr50 ) ti50_onboard? ( chromeos-base/chromeos-ti50 ) !app-crypt/tpm-tools chromeos-base/libhwsec-foundation >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r2968
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=aed10492c8852588c3ec5caf79b179d2
diff --git a/metadata/md5-cache/chromeos-base/trunks-9999 b/metadata/md5-cache/chromeos-base/trunks-9999
index d7d9be7..420d970 100644
--- a/metadata/md5-cache/chromeos-base/trunks-9999
+++ b/metadata/md5-cache/chromeos-base/trunks-9999
@@ -1,14 +1,14 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/minijail:= chromeos-base/power_manager-client:= ftdi_tpm? ( dev-embedded/libftdi:= ) tpm2_simulator? ( chromeos-base/tpm2:= ) dev-libs/protobuf:= fuzzer? ( dev-cpp/gtest:= ) chromeos-base/chromeos-ec-headers:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/power_manager-client:= ftdi_tpm? ( dev-embedded/libftdi:= ) tpm2_simulator? ( chromeos-base/tpm2:= vtpm_proxy? ( chromeos-base/tpm2-simulator:= ) ) dev-libs/protobuf:= fuzzer? ( dev-cpp/gtest:= ) chromeos-base/chromeos-ec-headers:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Trunks service for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/trunks/
-IUSE=cr50_onboard fuzzer ftdi_tpm test tpm2_simulator cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cr50_onboard csme_emulator fuzzer ftdi_tpm generic_tpm2 pinweaver_csme test ti50_onboard tpm2_simulator vtpm_proxy cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=Apache-2.0
 PROPERTIES=live live
-RDEPEND=chromeos-base/minijail:= chromeos-base/power_manager-client:= ftdi_tpm? ( dev-embedded/libftdi:= ) tpm2_simulator? ( chromeos-base/tpm2:= ) dev-libs/protobuf:= fuzzer? ( dev-cpp/gtest:= ) cr50_onboard? ( chromeos-base/chromeos-cr50 ) !app-crypt/tpm-tools chromeos-base/libhwsec >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/power_manager-client:= ftdi_tpm? ( dev-embedded/libftdi:= ) tpm2_simulator? ( chromeos-base/tpm2:= vtpm_proxy? ( chromeos-base/tpm2-simulator:= ) ) dev-libs/protobuf:= fuzzer? ( dev-cpp/gtest:= ) cr50_onboard? ( chromeos-base/chromeos-cr50 ) ti50_onboard? ( chromeos-base/chromeos-ti50 ) !app-crypt/tpm-tools chromeos-base/libhwsec-foundation >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=e6f3a63219bae481d2de4665ead02eea
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=6a79e3855ff223fdcdb6b11b1e355fa1
diff --git a/metadata/md5-cache/chromeos-base/typecd-0.0.1-r108 b/metadata/md5-cache/chromeos-base/typecd-0.0.1-r108
deleted file mode 100644
index bf555f8..0000000
--- a/metadata/md5-cache/chromeos-base/typecd-0.0.1-r108
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/debugd-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Chrome OS USB Type C daemon
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/typecd/
-IUSE=+seccomp cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_f24a7f088427e5b089ec1a46be1764c1bf00823b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_f24a7f088427e5b089ec1a46be1764c1bf00823b_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=b28dfe4a4bba67135d3e7bb9bb1e658b
diff --git a/metadata/md5-cache/chromeos-base/typecd-0.0.1-r180 b/metadata/md5-cache/chromeos-base/typecd-0.0.1-r180
new file mode 100644
index 0000000..fc7223b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/typecd-0.0.1-r180
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/debugd-client:= chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Chrome OS USB Type C daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/typecd/
+IUSE=+seccomp cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_94b56d6d00224f6b44d9f6c77cd490426acc7c17_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_94b56d6d00224f6b44d9f6c77cd490426acc7c17_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=33eeaa39970303434b7d23b45affe6e5
diff --git a/metadata/md5-cache/chromeos-base/typecd-9999 b/metadata/md5-cache/chromeos-base/typecd-9999
index e359e6e..a527eab 100644
--- a/metadata/md5-cache/chromeos-base/typecd-9999
+++ b/metadata/md5-cache/chromeos-base/typecd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/debugd-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/debugd-client:= chromeos-base/session_manager-client:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Chrome OS USB Type C daemon
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/typecd/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=41c161fffc32e30653be017f413765bb
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=e8d51cf9c57ad32834b8e8695cea6658
diff --git a/metadata/md5-cache/chromeos-base/u2fd-0.0.1-r1053 b/metadata/md5-cache/chromeos-base/u2fd-0.0.1-r1053
deleted file mode 100644
index bde7f3c..0000000
--- a/metadata/md5-cache/chromeos-base/u2fd-0.0.1-r1053
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/attestation:= chromeos-base/attestation-client:= chromeos-base/cbor:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/power_manager-client:= chromeos-base/trunks:= dev-libs/hidapi:= chromeos-base/attestation-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=U2FHID Emulation Daemon
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/u2fhid
-IUSE=fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_20ed8021024637e492670d20fa5969a2ad75e4b6_989d840598227b15d78525d5f92c806011a9c158_8d228c8e702aebee142bcbf0763a15786eb5b3bb_0a4c2a4309ae045cba89a234a75d29007f13cf92_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_20ed8021024637e492670d20fa5969a2ad75e4b6_989d840598227b15d78525d5f92c806011a9c158_8d228c8e702aebee142bcbf0763a15786eb5b3bb_0a4c2a4309ae045cba89a234a75d29007f13cf92_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/attestation:= chromeos-base/attestation-client:= chromeos-base/cbor:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/power_manager-client:= chromeos-base/trunks:= dev-libs/hidapi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r1053
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=1372b763a3e761c1086e50c9ccbcfc92
diff --git a/metadata/md5-cache/chromeos-base/u2fd-0.0.1-r1165 b/metadata/md5-cache/chromeos-base/u2fd-0.0.1-r1165
new file mode 100644
index 0000000..4a67a43
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/u2fd-0.0.1-r1165
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/attestation:= chromeos-base/attestation-client:= chromeos-base/cbor:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/power_manager-client:= chromeos-base/trunks:= dev-libs/hidapi:= chromeos-base/attestation-client:= >=chromeos-base/protofiles-0.0.43:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=U2FHID Emulation Daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/u2fhid
+IUSE=fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a06a3f47395fb7b584188c6852764bc773e5497e_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e4bdb36b8b1e5f01a3bbb9b825a32cf55222bfeb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a06a3f47395fb7b584188c6852764bc773e5497e_81dfbbc1756a3b4224b447e7bf10a916d97c4f66_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e4bdb36b8b1e5f01a3bbb9b825a32cf55222bfeb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/attestation:= chromeos-base/attestation-client:= chromeos-base/cbor:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/power_manager-client:= chromeos-base/trunks:= dev-libs/hidapi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r1165
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=88d11b1ed3f7434ba01dfd1dd30768a9
diff --git a/metadata/md5-cache/chromeos-base/u2fd-9999 b/metadata/md5-cache/chromeos-base/u2fd-9999
index e21b877..58b4fb3 100644
--- a/metadata/md5-cache/chromeos-base/u2fd-9999
+++ b/metadata/md5-cache/chromeos-base/u2fd-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/attestation:= chromeos-base/attestation-client:= chromeos-base/cbor:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/power_manager-client:= chromeos-base/trunks:= dev-libs/hidapi:= chromeos-base/attestation-client:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/attestation:= chromeos-base/attestation-client:= chromeos-base/cbor:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/power_manager-client:= chromeos-base/trunks:= dev-libs/hidapi:= chromeos-base/attestation-client:= >=chromeos-base/protofiles-0.0.43:= chromeos-base/system_api:=[fuzzer?] >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=U2FHID Emulation Daemon
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/u2fhid
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/attestation:= chromeos-base/attestation-client:= chromeos-base/cbor:= chromeos-base/libhwsec:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/power_manager-client:= chromeos-base/trunks:= dev-libs/hidapi:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=811d92e90253b027438c70d31dd90fbc
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=63ef2c2440f35ca62b8de0404eedd949
diff --git a/metadata/md5-cache/chromeos-base/uboot-env-0.0.1-r7 b/metadata/md5-cache/chromeos-base/uboot-env-0.0.1-r7
deleted file mode 100644
index 14957bc0..0000000
--- a/metadata/md5-cache/chromeos-base/uboot-env-0.0.1-r7
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=info install setup unpack
-DEPEND=>=dev-lang/python-2.5
-DESCRIPTION=Python script to read/write u-boot environment
-EAPI=2
-IUSE=cros_host cros_workon_tree_33477d293e0a2890260c8fc617091a804f60a94c
-KEYWORDS=arm x86
-PROPERTIES=live
-RDEPEND=>=dev-lang/python-2.5
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2248d46d1988f3820cfd494c80b9ae65
diff --git a/metadata/md5-cache/chromeos-base/uboot-env-9999 b/metadata/md5-cache/chromeos-base/uboot-env-9999
deleted file mode 100644
index c5bc8f4..0000000
--- a/metadata/md5-cache/chromeos-base/uboot-env-9999
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=info install setup unpack
-DEPEND=>=dev-lang/python-2.5
-DESCRIPTION=Python script to read/write u-boot environment
-EAPI=2
-IUSE=cros_host cros_workon_tree_
-KEYWORDS=~arm ~x86
-PROPERTIES=live
-RDEPEND=>=dev-lang/python-2.5
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=4a77a3812c799788523a6b02685e4272
diff --git a/metadata/md5-cache/chromeos-base/update-utils-0.0.1-r40 b/metadata/md5-cache/chromeos-base/update-utils-0.0.1-r40
deleted file mode 100644
index fd6f2be..0000000
--- a/metadata/md5-cache/chromeos-base/update-utils-0.0.1-r40
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile info install setup test unpack
-DESCRIPTION=A set of utilities for updating Chrome OS.
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/
-IUSE=cros_host cros_workon_tree_ad0497a814b312099066cb2ef36e4d93107a16bb python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!chromeos-base/gmerge
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2508b6ed46714a07beee8019c3c7c3fe
diff --git a/metadata/md5-cache/chromeos-base/update-utils-0.0.1-r53 b/metadata/md5-cache/chromeos-base/update-utils-0.0.1-r53
new file mode 100644
index 0000000..de03161
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/update-utils-0.0.1-r53
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile info install setup test unpack
+DESCRIPTION=A set of utilities for updating Chrome OS.
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/
+IUSE=cros_host cros_workon_tree_c5397d8291620771eda0e67f65a17a683c0a5507 python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!chromeos-base/gmerge
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=2054ee144d042aed1884bc8b98c2bc68
diff --git a/metadata/md5-cache/chromeos-base/update-utils-9999 b/metadata/md5-cache/chromeos-base/update-utils-9999
index 83aacf7c..247a801 100644
--- a/metadata/md5-cache/chromeos-base/update-utils-9999
+++ b/metadata/md5-cache/chromeos-base/update-utils-9999
@@ -8,5 +8,5 @@
 PROPERTIES=live
 RDEPEND=!chromeos-base/gmerge
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=48773ed60e96b88f0c4169bfecce31de
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=9c42ca27e889419ca275dc4a358cfd8a
diff --git a/metadata/md5-cache/chromeos-base/update_engine-0.0.3-r3684 b/metadata/md5-cache/chromeos-base/update_engine-0.0.3-r3684
deleted file mode 100644
index 3cabcc2..0000000
--- a/metadata/md5-cache/chromeos-base/update_engine-0.0.3-r3684
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=app-arch/xz-utils:= chromeos-base/debugd-client:= dlc? ( chromeos-base/dlcservice-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:= test? ( sys-fs/squashfs-tools ) app-arch/bzip2:= chromeos-base/chromeos-ca-certificates:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= cros_p2p? ( chromeos-base/p2p:= ) dev-libs/expat:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/xz-embedded:= dev-util/bsdiff:= dev-util/puffin:= net-misc/curl:= sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS Update Engine
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/aosp/platform/system/update_engine/
-IUSE=cfm cros_host cros_p2p dlc fuzzer -hwid_override +power_management systemd cros-debug cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_e5e30f3e93b9a03cb1dddc5fb853009ea2fb4294 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_e5e30f3e93b9a03cb1dddc5fb853009ea2fb4294 cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=Apache-2.0
-PROPERTIES=live live
-RDEPEND=!cros_host? ( chromeos-base/chromeos-installer ) app-arch/bzip2:= chromeos-base/chromeos-ca-certificates:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= cros_p2p? ( chromeos-base/p2p:= ) dev-libs/expat:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/xz-embedded:= dev-util/bsdiff:= dev-util/puffin:= net-misc/curl:= sys-apps/rootdev:= cros_host? ( app-arch/unzip:= app-arch/xz-utils:= sys-libs/e2fsprogs-libs:= sys-fs/squashfs-tools ) power_management? ( chromeos-base/power_manager:= ) virtual/update-policy:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.3-r3684
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dd92d814d3a4c53405a76af225395859
diff --git a/metadata/md5-cache/chromeos-base/update_engine-0.0.3-r3760 b/metadata/md5-cache/chromeos-base/update_engine-0.0.3-r3760
new file mode 100644
index 0000000..201eba6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/update_engine-0.0.3-r3760
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=app-arch/xz-utils:= chromeos-base/debugd-client:= dlc? ( chromeos-base/dlcservice-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:= test? ( sys-fs/squashfs-tools ) app-arch/bzip2:= chromeos-base/chromeos-ca-certificates:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= cros_p2p? ( chromeos-base/p2p:= ) dev-libs/expat:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/xz-embedded:= dev-util/bsdiff:= dev-util/puffin:= net-misc/curl:= sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS Update Engine
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/aosp/platform/system/update_engine/
+IUSE=cfm cros_host cros_p2p dlc fuzzer -hwid_override minios +power_management systemd cros-debug cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_8147e94e7ebea6c5e875e4722b2e064d0ba861c4 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_8147e94e7ebea6c5e875e4722b2e064d0ba861c4 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live live
+RDEPEND=!cros_host? ( chromeos-base/chromeos-installer ) app-arch/bzip2:= chromeos-base/chromeos-ca-certificates:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= cros_p2p? ( chromeos-base/p2p:= ) dev-libs/expat:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/xz-embedded:= dev-util/bsdiff:= dev-util/puffin:= net-misc/curl:= sys-apps/rootdev:= cros_host? ( app-arch/unzip:= app-arch/xz-utils:= sys-libs/e2fsprogs-libs:= sys-fs/squashfs-tools ) power_management? ( chromeos-base/power_manager:= ) virtual/update-policy:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.3-r3760
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1090fa9607df8cd7ed1aa060a9794954
diff --git a/metadata/md5-cache/chromeos-base/update_engine-9999 b/metadata/md5-cache/chromeos-base/update_engine-9999
index 495338b..4f7e73a 100644
--- a/metadata/md5-cache/chromeos-base/update_engine-9999
+++ b/metadata/md5-cache/chromeos-base/update_engine-9999
@@ -1,14 +1,14 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=app-arch/xz-utils:= chromeos-base/debugd-client:= dlc? ( chromeos-base/dlcservice-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:= test? ( sys-fs/squashfs-tools ) app-arch/bzip2:= chromeos-base/chromeos-ca-certificates:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= cros_p2p? ( chromeos-base/p2p:= ) dev-libs/expat:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/xz-embedded:= dev-util/bsdiff:= dev-util/puffin:= net-misc/curl:= sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=app-arch/xz-utils:= chromeos-base/debugd-client:= dlc? ( chromeos-base/dlcservice-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:= test? ( sys-fs/squashfs-tools ) app-arch/bzip2:= chromeos-base/chromeos-ca-certificates:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= cros_p2p? ( chromeos-base/p2p:= ) dev-libs/expat:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/xz-embedded:= dev-util/bsdiff:= dev-util/puffin:= net-misc/curl:= sys-apps/rootdev:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS Update Engine
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/aosp/platform/system/update_engine/
-IUSE=cfm cros_host cros_p2p dlc fuzzer -hwid_override +power_management systemd cros-debug cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cfm cros_host cros_p2p dlc fuzzer -hwid_override minios +power_management systemd cros-debug cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=Apache-2.0
 PROPERTIES=live live
 RDEPEND=!cros_host? ( chromeos-base/chromeos-installer ) app-arch/bzip2:= chromeos-base/chromeos-ca-certificates:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/vboot_reference:= cros_p2p? ( chromeos-base/p2p:= ) dev-libs/expat:= dev-libs/openssl:= dev-libs/protobuf:= dev-libs/xz-embedded:= dev-util/bsdiff:= dev-util/puffin:= net-misc/curl:= sys-apps/rootdev:= cros_host? ( app-arch/unzip:= app-arch/xz-utils:= sys-libs/e2fsprogs-libs:= sys-fs/squashfs-tools ) power_management? ( chromeos-base/power_manager:= ) virtual/update-policy:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0edc3c4cb0e6f1d78f59d455f154bb67
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=47bf9c6cfc56496ef0d3c8cd6b750063
diff --git a/metadata/md5-cache/chromeos-base/update_engine-client-0.0.1-r1829 b/metadata/md5-cache/chromeos-base/update_engine-client-0.0.1-r1829
deleted file mode 100644
index 1889108..0000000
--- a/metadata/md5-cache/chromeos-base/update_engine-client-0.0.1-r1829
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=chromeos-base/chromeos-dbus-bindings:= dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS Update Engine client library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/aosp/platform/system/update_engine/
-IUSE=cros_host cros-debug cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_e5e30f3e93b9a03cb1dddc5fb853009ea2fb4294 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_e5e30f3e93b9a03cb1dddc5fb853009ea2fb4294 cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!<chromeos-base/update_engine-0.0.3 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2d39e403ef260e3fe2a44c9fc411c173
diff --git a/metadata/md5-cache/chromeos-base/update_engine-client-0.0.1-r1904 b/metadata/md5-cache/chromeos-base/update_engine-client-0.0.1-r1904
new file mode 100644
index 0000000..c42e5c1
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/update_engine-client-0.0.1-r1904
@@ -0,0 +1,14 @@
+BDEPEND=chromeos-base/chromeos-dbus-bindings:= dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS Update Engine client library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/aosp/platform/system/update_engine/
+IUSE=cros_host cros-debug cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_8147e94e7ebea6c5e875e4722b2e064d0ba861c4 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_8147e94e7ebea6c5e875e4722b2e064d0ba861c4 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!<chromeos-base/update_engine-0.0.3 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e429964645ace7fb5dcfc58643535acd
diff --git a/metadata/md5-cache/chromeos-base/update_engine-client-9999 b/metadata/md5-cache/chromeos-base/update_engine-client-9999
index b0fcb60..f84c6f9 100644
--- a/metadata/md5-cache/chromeos-base/update_engine-client-9999
+++ b/metadata/md5-cache/chromeos-base/update_engine-client-9999
@@ -1,6 +1,6 @@
 BDEPEND=chromeos-base/chromeos-dbus-bindings:= dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS Update Engine client library
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/aosp/platform/system/update_engine/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=!<chromeos-base/update_engine-0.0.3 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=495a07469752b00d229bff56527b7a53
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=85bfc33a074c5c6c8c02a3f459fad0a4
diff --git a/metadata/md5-cache/chromeos-base/update_payload-0.0.1-r338 b/metadata/md5-cache/chromeos-base/update_payload-0.0.1-r338
deleted file mode 100644
index f913142..0000000
--- a/metadata/md5-cache/chromeos-base/update_payload-0.0.1-r338
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup test unpack
-DESCRIPTION=Chrome OS Update Engine Update Payload Scripts
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/aosp/platform/system/update_engine
-IUSE=cros_host cros_workon_tree_e5e30f3e93b9a03cb1dddc5fb853009ea2fb4294 python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=Apache-2.0
-PROPERTIES=live
-RDEPEND=dev-python/protobuf-python[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] !<chromeos-base/devserver-0.0.3
-SLOT=0/0.0.1-r338
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=270819d3c60ca62715cc3aecab5d9cef
diff --git a/metadata/md5-cache/chromeos-base/update_payload-0.0.1-r388 b/metadata/md5-cache/chromeos-base/update_payload-0.0.1-r388
new file mode 100644
index 0000000..903fe2d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/update_payload-0.0.1-r388
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup test unpack
+DESCRIPTION=Chrome OS Update Engine Update Payload Scripts
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/aosp/platform/system/update_engine
+IUSE=cros_host cros_workon_tree_8147e94e7ebea6c5e875e4722b2e064d0ba861c4 python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live
+RDEPEND=dev-python/protobuf-python[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] !<chromeos-base/devserver-0.0.3
+SLOT=0/0.0.1-r388
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=37aac11b9418361a314436f2bb6f5f15
diff --git a/metadata/md5-cache/chromeos-base/update_payload-9999 b/metadata/md5-cache/chromeos-base/update_payload-9999
index 7ddb494..cd675d5 100644
--- a/metadata/md5-cache/chromeos-base/update_payload-9999
+++ b/metadata/md5-cache/chromeos-base/update_payload-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=dev-python/protobuf-python[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] !<chromeos-base/devserver-0.0.3
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=fa018b48923094b7d53e7becd08a7286
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3ff8c92a7c213e035c0c444de7080795
diff --git a/metadata/md5-cache/chromeos-base/ureadahead-diff-0.0.1-r72 b/metadata/md5-cache/chromeos-base/ureadahead-diff-0.0.1-r72
deleted file mode 100644
index 97c63a3..0000000
--- a/metadata/md5-cache/chromeos-base/ureadahead-diff-0.0.1-r72
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Calculate common part and difference of two ureadahead packs
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ureadahead-diff
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_977d7a50e6c3ca7269ed8703960e004ff32baa90_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_977d7a50e6c3ca7269ed8703960e004ff32baa90_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=bed161f28223924a91345b8ec06795f1
diff --git a/metadata/md5-cache/chromeos-base/ureadahead-diff-0.0.1-r98 b/metadata/md5-cache/chromeos-base/ureadahead-diff-0.0.1-r98
new file mode 100644
index 0000000..04ab32d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/ureadahead-diff-0.0.1-r98
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Calculate common part and difference of two ureadahead packs
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ureadahead-diff
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a3eac5d15a46a63784099b3fe4af44a89d376a6f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a3eac5d15a46a63784099b3fe4af44a89d376a6f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c7400908473cb20abb40b97808d9310a
diff --git a/metadata/md5-cache/chromeos-base/ureadahead-diff-9999 b/metadata/md5-cache/chromeos-base/ureadahead-diff-9999
index 0494315..2496adc6 100644
--- a/metadata/md5-cache/chromeos-base/ureadahead-diff-9999
+++ b/metadata/md5-cache/chromeos-base/ureadahead-diff-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Calculate common part and difference of two ureadahead packs
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/ureadahead-diff
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=5dae247b1575c379190acac83cc6c378
diff --git a/metadata/md5-cache/chromeos-base/usb_bouncer-0.0.1-r288 b/metadata/md5-cache/chromeos-base/usb_bouncer-0.0.1-r288
deleted file mode 100644
index 3c8c42a..0000000
--- a/metadata/md5-cache/chromeos-base/usb_bouncer-0.0.1-r288
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/openssl:0= sys-apps/usbguard:= chromeos-base/session_manager-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=Manage the usbguard whitelist
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/usb_bouncer/
-IUSE=fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_5dc493e2caaa42bf79c32b35650161dfbdd62747_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_5dc493e2caaa42bf79c32b35650161dfbdd62747_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/openssl:0= sys-apps/usbguard:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=66ef22ab740528640e1d18e4fd463fb6
diff --git a/metadata/md5-cache/chromeos-base/usb_bouncer-0.0.1-r362 b/metadata/md5-cache/chromeos-base/usb_bouncer-0.0.1-r362
new file mode 100644
index 0000000..8eb32c5
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/usb_bouncer-0.0.1-r362
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/openssl:0= sys-apps/usbguard:= chromeos-base/session_manager-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=Manage the usbguard whitelist
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/usb_bouncer/
+IUSE=fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_21fac63ce5008231f93827abac8fcfc8aa5bfae7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_21fac63ce5008231f93827abac8fcfc8aa5bfae7_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/openssl:0= sys-apps/usbguard:= virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=04adafd97f0f93dc3ea1434a3b6c6d67
diff --git a/metadata/md5-cache/chromeos-base/usb_bouncer-9999 b/metadata/md5-cache/chromeos-base/usb_bouncer-9999
index d78f99b..46b87bc 100644
--- a/metadata/md5-cache/chromeos-base/usb_bouncer-9999
+++ b/metadata/md5-cache/chromeos-base/usb_bouncer-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/openssl:0= sys-apps/usbguard:= chromeos-base/session_manager-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/openssl:0= sys-apps/usbguard:= chromeos-base/session_manager-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=Manage the usbguard whitelist
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/usb_bouncer/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/openssl:0= sys-apps/usbguard:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+RDEPEND=fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= dev-libs/openssl:0= sys-apps/usbguard:= virtual/tmpfiles >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=578397d7a2a90708a632bb8b546ee541
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=2a6d0fc1ebeac1e3437cead9b1ad20ab
diff --git a/metadata/md5-cache/chromeos-base/userfeedback-0.0.1-r2898 b/metadata/md5-cache/chromeos-base/userfeedback-0.0.1-r2898
deleted file mode 100644
index 060e8e3..0000000
--- a/metadata/md5-cache/chromeos-base/userfeedback-0.0.1-r2898
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Log scripts used by userfeedback to report cros system information
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/userfeedback/
-IUSE=systemd X cros_host cros_workon_tree_cf316d8f26c5d0d66cfb049d64c4283722a06059
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/chromeos-init chromeos-base/crash-reporter chromeos-base/modem-utilities chromeos-base/vboot_reference media-libs/fontconfig media-sound/alsa-utils sys-apps/coreboot-utils sys-apps/mosys sys-apps/net-tools sys-apps/pciutils sys-apps/usbutils X? ( x11-apps/setxkbmap )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c9f41c7187523c916d5cd8079ba4a6fe
diff --git a/metadata/md5-cache/chromeos-base/userfeedback-0.0.1-r2901 b/metadata/md5-cache/chromeos-base/userfeedback-0.0.1-r2901
new file mode 100644
index 0000000..17fa460
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/userfeedback-0.0.1-r2901
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Log scripts used by userfeedback to report cros system information
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/userfeedback/
+IUSE=systemd X cros_host cros_workon_tree_cdcb561649747aa33814231fe176727b71a94286
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/chromeos-init chromeos-base/crash-reporter chromeos-base/modem-utilities chromeos-base/vboot_reference media-libs/fontconfig media-sound/alsa-utils sys-apps/coreboot-utils sys-apps/mosys sys-apps/net-tools sys-apps/pciutils sys-apps/usbutils X? ( x11-apps/setxkbmap )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=cd4a8312ac61ba1e80cf8476a6110803
diff --git a/metadata/md5-cache/chromeos-base/userfeedback-9999 b/metadata/md5-cache/chromeos-base/userfeedback-9999
index f5802b9..d080711 100644
--- a/metadata/md5-cache/chromeos-base/userfeedback-9999
+++ b/metadata/md5-cache/chromeos-base/userfeedback-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/chromeos-init chromeos-base/crash-reporter chromeos-base/modem-utilities chromeos-base/vboot_reference media-libs/fontconfig media-sound/alsa-utils sys-apps/coreboot-utils sys-apps/mosys sys-apps/net-tools sys-apps/pciutils sys-apps/usbutils X? ( x11-apps/setxkbmap )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=880c641a0d6896ecbdedc9bdd3142457
diff --git a/metadata/md5-cache/chromeos-base/userspace_touchpad-0.0.1-r1215 b/metadata/md5-cache/chromeos-base/userspace_touchpad-0.0.1-r1215
deleted file mode 100644
index 72aca4d..0000000
--- a/metadata/md5-cache/chromeos-base/userspace_touchpad-0.0.1-r1215
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Userspace Touchpad
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/userspace_touchpad/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3d30b138a92e8fe6fcddb890d8af382e
diff --git a/metadata/md5-cache/chromeos-base/userspace_touchpad-0.0.1-r1240 b/metadata/md5-cache/chromeos-base/userspace_touchpad-0.0.1-r1240
new file mode 100644
index 0000000..de529ef
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/userspace_touchpad-0.0.1-r1240
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Userspace Touchpad
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/userspace_touchpad/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6dec9e72a7a7acf465653837e06ad241
diff --git a/metadata/md5-cache/chromeos-base/userspace_touchpad-9999 b/metadata/md5-cache/chromeos-base/userspace_touchpad-9999
index c885f3c..ffc4e17 100644
--- a/metadata/md5-cache/chromeos-base/userspace_touchpad-9999
+++ b/metadata/md5-cache/chromeos-base/userspace_touchpad-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Userspace Touchpad
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/userspace_touchpad/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ff364745af7fbf88bf3f3bb411f6d6c9
diff --git a/metadata/md5-cache/chromeos-base/usi-test-0.0.1-r2 b/metadata/md5-cache/chromeos-base/usi-test-0.0.1-r2
index f1df17b..b96bddc 100644
--- a/metadata/md5-cache/chromeos-base/usi-test-0.0.1-r2
+++ b/metadata/md5-cache/chromeos-base/usi-test-0.0.1-r2
@@ -11,5 +11,5 @@
 RDEPEND=~dev-python/hid-tools-0.2[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0/0.0.1-r2
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=142168440a101f34c60555a30daa66e4
diff --git a/metadata/md5-cache/chromeos-base/usi-test-9999 b/metadata/md5-cache/chromeos-base/usi-test-9999
index bde2117..0e5445a 100644
--- a/metadata/md5-cache/chromeos-base/usi-test-9999
+++ b/metadata/md5-cache/chromeos-base/usi-test-9999
@@ -11,5 +11,5 @@
 RDEPEND=~dev-python/hid-tools-0.2[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=163f418aae2aac6cf1bfa8180fb7b464
diff --git a/metadata/md5-cache/chromeos-base/vboot_reference-1.0-r2068 b/metadata/md5-cache/chromeos-base/vboot_reference-1.0-r2068
deleted file mode 100644
index 2e346ea..0000000
--- a/metadata/md5-cache/chromeos-base/vboot_reference-1.0-r2068
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/libzip:= dev-libs/openssl:= sys-apps/util-linux:=
-DESCRIPTION=Chrome OS verified boot tools
-EAPI=7
-IUSE=cros_host dev_debug_force fuzzer pd_sync test tpmtests tpm tpm2 tpm2_simulator cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_06c3486af100c39ddc9cb59381d087b4f2ed1634
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-libs/libzip:= dev-libs/openssl:= sys-apps/util-linux:=
-REQUIRED_USE=?? ( tpm2 tpm )
-SLOT=0/1.0-r2068
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ba4bc208d240d1be4e83de9f87b6f943
diff --git a/metadata/md5-cache/chromeos-base/vboot_reference-1.0-r2113 b/metadata/md5-cache/chromeos-base/vboot_reference-1.0-r2113
new file mode 100644
index 0000000..ddbbd4d
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/vboot_reference-1.0-r2113
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/libzip:= dev-libs/openssl:= sys-apps/util-linux:=
+DESCRIPTION=Chrome OS verified boot tools
+EAPI=7
+IUSE=cros_host dev_debug_force fuzzer pd_sync test tpmtests tpm tpm2 tpm2_simulator vtpm_proxy cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-libs/libzip:= dev-libs/openssl:= sys-apps/util-linux:=
+REQUIRED_USE=?? ( tpm2 tpm )
+SLOT=0/1.0-r2113
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=23c9f13a3a6fd2b305e5905e8016d31d
diff --git a/metadata/md5-cache/chromeos-base/vboot_reference-9999 b/metadata/md5-cache/chromeos-base/vboot_reference-9999
index 3c43159..8b6102c 100644
--- a/metadata/md5-cache/chromeos-base/vboot_reference-9999
+++ b/metadata/md5-cache/chromeos-base/vboot_reference-9999
@@ -3,12 +3,12 @@
 DEPEND=dev-libs/libzip:= dev-libs/openssl:= sys-apps/util-linux:=
 DESCRIPTION=Chrome OS verified boot tools
 EAPI=7
-IUSE=cros_host dev_debug_force fuzzer pd_sync test tpmtests tpm tpm2 tpm2_simulator cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
+IUSE=cros_host dev_debug_force fuzzer pd_sync test tpmtests tpm tpm2 tpm2_simulator vtpm_proxy cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=dev-libs/libzip:= dev-libs/openssl:= sys-apps/util-linux:=
 REQUIRED_USE=?? ( tpm2 tpm )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=13dc2b48ad3a8ff172c226c4fc789d61
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d92abdf4945e0e642524c6d58313e7a0
diff --git a/metadata/md5-cache/chromeos-base/vboot_reference-tests-0.0.1-r1929 b/metadata/md5-cache/chromeos-base/vboot_reference-tests-0.0.1-r1929
deleted file mode 100644
index c33c35f..0000000
--- a/metadata/md5-cache/chromeos-base/vboot_reference-tests-0.0.1-r1929
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst prepare setup unpack
-DESCRIPTION=vboot tests
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vboot_reference/
-IUSE=+autotest +tests_firmware_VbootCrypto cros_host cros_workon_tree_06c3486af100c39ddc9cb59381d087b4f2ed1634 +buildcheck autotest opengles
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=autotest? ( chromeos-base/autotest )
-SLOT=0/0.0.1-r1929
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ea053e0a983cd94ca8106220b0b5aec6
diff --git a/metadata/md5-cache/chromeos-base/vboot_reference-tests-0.0.1-r1974 b/metadata/md5-cache/chromeos-base/vboot_reference-tests-0.0.1-r1974
new file mode 100644
index 0000000..3413493
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/vboot_reference-tests-0.0.1-r1974
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst prepare setup unpack
+DESCRIPTION=vboot tests
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vboot_reference/
+IUSE=+autotest +tests_firmware_VbootCrypto cros_host cros_workon_tree_3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c +buildcheck autotest opengles
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=autotest? ( chromeos-base/autotest )
+SLOT=0/0.0.1-r1974
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c0325c2f7eb2cf7ecad20df9e12ee90b
diff --git a/metadata/md5-cache/chromeos-base/vboot_reference-tests-9999 b/metadata/md5-cache/chromeos-base/vboot_reference-tests-9999
index a30dddc..facc123 100644
--- a/metadata/md5-cache/chromeos-base/vboot_reference-tests-9999
+++ b/metadata/md5-cache/chromeos-base/vboot_reference-tests-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=autotest? ( chromeos-base/autotest )
 SLOT=0/9999
-_eclasses_=autotest	605b7cb5c6f24c3d362106dee3d4b20e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotest	eadb1cf950e538b3f253d33164e48304	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=da3f3894077f5a535851d73d99beff3a
diff --git a/metadata/md5-cache/chromeos-base/verity-0.0.1-r156 b/metadata/md5-cache/chromeos-base/verity-0.0.1-r156
deleted file mode 100644
index d559876..0000000
--- a/metadata/md5-cache/chromeos-base/verity-0.0.1-r156
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=File system integrity image generator for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/verity/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_2b6d4230c92e83e39209823855064483eed04754_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_2b6d4230c92e83e39209823855064483eed04754_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google GPL-2
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r156
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=fc5a8f95a24d614d1c1f3337cdf88050
diff --git a/metadata/md5-cache/chromeos-base/verity-0.0.1-r186 b/metadata/md5-cache/chromeos-base/verity-0.0.1-r186
new file mode 100644
index 0000000..27511dc
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/verity-0.0.1-r186
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=File system integrity image generator for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/verity/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_33de53739dbe0fd2911d58694b622539ef0a2416_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_33de53739dbe0fd2911d58694b622539ef0a2416_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google GPL-2
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r186
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fd1809b3279dc5fa55acb989ba7aae82
diff --git a/metadata/md5-cache/chromeos-base/verity-9999 b/metadata/md5-cache/chromeos-base/verity-9999
index 153d40d..8dd2cb9 100644
--- a/metadata/md5-cache/chromeos-base/verity-9999
+++ b/metadata/md5-cache/chromeos-base/verity-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=File system integrity image generator for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/verity/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=364067460a9cb3bd319e4bae991ee747
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=861f48d0f563d9b01116e29ea2dc60ea
diff --git a/metadata/md5-cache/chromeos-base/virtual-file-provider-0.0.1-r791 b/metadata/md5-cache/chromeos-base/virtual-file-provider-0.0.1-r791
deleted file mode 100644
index 9b9ccff..0000000
--- a/metadata/md5-cache/chromeos-base/virtual-file-provider-0.0.1-r791
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=sys-fs/fuse:= sys-libs/libcap:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=D-Bus service to provide virtual file
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/virtual_file_provider
-IUSE=arcvm cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_9bda1701529abe12c4692ef96c11a0e4d5687883_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_9bda1701529abe12c4692ef96c11a0e4d5687883_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r791
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=90febad1d265c8a4363a2a593ded1b33
diff --git a/metadata/md5-cache/chromeos-base/virtual-file-provider-0.0.1-r822 b/metadata/md5-cache/chromeos-base/virtual-file-provider-0.0.1-r822
new file mode 100644
index 0000000..c7d6572
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/virtual-file-provider-0.0.1-r822
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=sys-fs/fuse:= sys-libs/libcap:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=D-Bus service to provide virtual file
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/virtual_file_provider
+IUSE=arcvm cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_6012501ec6294d801b43321009548fb1528f3ef9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_6012501ec6294d801b43321009548fb1528f3ef9_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r822
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=351d32420acb35270b47576607e50d6b
diff --git a/metadata/md5-cache/chromeos-base/virtual-file-provider-9999 b/metadata/md5-cache/chromeos-base/virtual-file-provider-9999
index 2309ec4..ec74bd2 100644
--- a/metadata/md5-cache/chromeos-base/virtual-file-provider-9999
+++ b/metadata/md5-cache/chromeos-base/virtual-file-provider-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=sys-fs/fuse:= sys-libs/libcap:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=sys-fs/fuse:= sys-libs/libcap:= chromeos-base/system_api:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=D-Bus service to provide virtual file
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/virtual_file_provider
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=sys-fs/fuse:= sys-libs/libcap:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=d234ec9569acd482f1daaa7dcda96ba8
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=d67eb84a0b9dcf6c6687e56166939a9a
diff --git a/metadata/md5-cache/chromeos-base/virtual-usb-printer-0.0.1-r218 b/metadata/md5-cache/chromeos-base/virtual-usb-printer-0.0.1-r218
deleted file mode 100644
index ee80def..0000000
--- a/metadata/md5-cache/chromeos-base/virtual-usb-printer-0.0.1-r218
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=net-misc/usbip:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Used with USBIP to provide a virtual USB printer for testing.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/virtual-usb-printer/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_f46d4f200713a1e4f17d0f391b74f985120cdfcb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_f46d4f200713a1e4f17d0f391b74f985120cdfcb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live live
-RDEPEND=net-misc/usbip:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r218
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=231d8db6e522d8d5854f1e01c674a30a
diff --git a/metadata/md5-cache/chromeos-base/virtual-usb-printer-0.0.1-r274 b/metadata/md5-cache/chromeos-base/virtual-usb-printer-0.0.1-r274
new file mode 100644
index 0000000..5846323
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/virtual-usb-printer-0.0.1-r274
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libipp:= dev-libs/libxml2:= dev-libs/protobuf:= net-misc/usbip:= virtual/jpeg:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Used with USBIP to provide a virtual USB printer for testing.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/virtual-usb-printer/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_a1a60f36b19b903f80c2373a9b3bea197676ecae cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_a1a60f36b19b903f80c2373a9b3bea197676ecae cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live live
+RDEPEND=chromeos-base/libipp:= dev-libs/libxml2:= dev-libs/protobuf:= net-misc/usbip:= virtual/jpeg:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r274
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=eef0a1bb4547a998a84985f9fea9fdb8
diff --git a/metadata/md5-cache/chromeos-base/virtual-usb-printer-9999 b/metadata/md5-cache/chromeos-base/virtual-usb-printer-9999
index 0615b22..99b2d65 100644
--- a/metadata/md5-cache/chromeos-base/virtual-usb-printer-9999
+++ b/metadata/md5-cache/chromeos-base/virtual-usb-printer-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=net-misc/usbip:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libipp:= dev-libs/libxml2:= dev-libs/protobuf:= net-misc/usbip:= virtual/jpeg:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Used with USBIP to provide a virtual USB printer for testing.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/virtual-usb-printer/
@@ -8,7 +8,7 @@
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live live
-RDEPEND=net-misc/usbip:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+RDEPEND=chromeos-base/libipp:= dev-libs/libxml2:= dev-libs/protobuf:= net-misc/usbip:= virtual/jpeg:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0b75a7ad271959c7dbae75780ea2f25a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3a33102465d17e8c663dbb11caa4c780
diff --git a/metadata/md5-cache/chromeos-base/vkbench-0.0.1-r6 b/metadata/md5-cache/chromeos-base/vkbench-0.0.1-r6
deleted file mode 100644
index 3b79daa..0000000
--- a/metadata/md5-cache/chromeos-base/vkbench-0.0.1-r6
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-util/glslang dev-vcs/git dev-util/ninja >=dev-util/cmake-3.9.6
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=media-libs/libpng:= media-libs/vulkan-loader:= virtual/vulkan-icd:=
-DESCRIPTION=Microbenchmark for vulkan
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vkbench/
-IUSE=vulkan cros_host cros_workon_tree_10a3e8282983077cf77cbaf958fec0df459b1b00
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=media-libs/libpng:= media-libs/vulkan-loader:= virtual/vulkan-icd:=
-REQUIRED_USE=vulkan
-SLOT=0/0.0.1-r6
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=05584342df26bb06c14340bf5b92c0e0
diff --git a/metadata/md5-cache/chromeos-base/vkbench-0.0.1-r8 b/metadata/md5-cache/chromeos-base/vkbench-0.0.1-r8
new file mode 100644
index 0000000..61fb291
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/vkbench-0.0.1-r8
@@ -0,0 +1,15 @@
+BDEPEND=dev-util/glslang dev-vcs/git dev-util/ninja >=dev-util/cmake-3.9.6
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=dev-libs/libfmt:= media-libs/libpng:= media-libs/vulkan-loader:= virtual/vulkan-icd:=
+DESCRIPTION=Microbenchmark for vulkan
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vkbench/
+IUSE=vulkan cros_host cros_workon_tree_674da03cb295015def82ec04e960293b338845f6
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-libs/libfmt:= media-libs/libpng:= media-libs/vulkan-loader:= virtual/vulkan-icd:=
+REQUIRED_USE=vulkan
+SLOT=0/0.0.1-r8
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=08b66958f3bb0daf59f937b076af4315
diff --git a/metadata/md5-cache/chromeos-base/vkbench-9999 b/metadata/md5-cache/chromeos-base/vkbench-9999
index 12ca3ba..6f28b47 100644
--- a/metadata/md5-cache/chromeos-base/vkbench-9999
+++ b/metadata/md5-cache/chromeos-base/vkbench-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-util/glslang dev-vcs/git dev-util/ninja >=dev-util/cmake-3.9.6
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=media-libs/libpng:= media-libs/vulkan-loader:= virtual/vulkan-icd:=
+DEPEND=dev-libs/libfmt:= media-libs/libpng:= media-libs/vulkan-loader:= virtual/vulkan-icd:=
 DESCRIPTION=Microbenchmark for vulkan
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vkbench/
@@ -8,8 +8,8 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=media-libs/libpng:= media-libs/vulkan-loader:= virtual/vulkan-icd:=
+RDEPEND=dev-libs/libfmt:= media-libs/libpng:= media-libs/vulkan-loader:= virtual/vulkan-icd:=
 REQUIRED_USE=vulkan
 SLOT=0/9999
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=d901200770329188ab673fa2b6ec34ca
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=d4cb91e9064a17507e62526cbaddfbd8
diff --git a/metadata/md5-cache/chromeos-base/vm_guest_tools-0.0.2-r1004 b/metadata/md5-cache/chromeos-base/vm_guest_tools-0.0.2-r1004
deleted file mode 100644
index 01e6f8d..0000000
--- a/metadata/md5-cache/chromeos-base/vm_guest_tools-0.0.2-r1004
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst preinst setup test unpack
-DEPEND=!!chromeos-base/vm_tools chromeos-base/minijail:= net-libs/grpc:= dev-libs/protobuf:= dev-go/grpc:= dev-go/protobuf:= sys-kernel/linux-headers:= chromeos-base/vm_protos:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=VM guest tools for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools
-IUSE=kvm_guest vm-containers fuzzer vm_borealis cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_631e6c6d6df99d6cdb1c79f2a2e9733cadbcfa8a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_631e6c6d6df99d6cdb1c79f2a2e9733cadbcfa8a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!!chromeos-base/vm_tools chromeos-base/minijail:= net-libs/grpc:= dev-libs/protobuf:= vm-containers? ( chromeos-base/crash-reporter ) !fuzzer? ( chromeos-base/sommelier ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-REQUIRED_USE=kvm_guest
-SLOT=0/0.0.2-r1004
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=5ef018af6b4dbe73cd093356d1d14809
diff --git a/metadata/md5-cache/chromeos-base/vm_guest_tools-0.0.2-r1146 b/metadata/md5-cache/chromeos-base/vm_guest_tools-0.0.2-r1146
new file mode 100644
index 0000000..9238309
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/vm_guest_tools-0.0.2-r1146
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst setup test unpack
+DEPEND=!!chromeos-base/vm_tools chromeos-base/minijail:= net-libs/grpc:= dev-libs/protobuf:= dev-go/grpc:= dev-go/protobuf:= sys-kernel/linux-headers:= chromeos-base/vm_protos:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=VM guest tools for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools
+IUSE=kvm_guest vm-containers fuzzer vm_borealis cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_7ef75a42aba67052842459f221271e681184cc89_0865c9d3ea1e3df829430fe6bc25ecbc3bc865ca_c1bde153626532428bf7409bc0597e79452c5eb8_5159f439e8516f904859190cfd0375b7a4d05db2_cfed45e1497a68bae4f74947be9922019fe331cf_97190407ff6df6ae497a54e632369afdf09cd621_af0b5afed375b2398606e02dfedd5a7d116cfde7_40934111a9826b46aca5b0b3309b1cceea46f7a4_73d11c9c68b8ad83037d9b5820a42f0e51c57d74_dcc85a40b5c9518fac5d6d9b571131998bd62653_bf33fa9b44cf05a4e8a416a1a3e8ad2d905daa8e_889e63b35e958b34d6cf15f62b243d442f1bac83_04812f95a99341b51d5b838c9470f7915b2a5f11_d0bf87d1a53ee7e33eb547179efa5b2a5e535f84_a01dc69a1e1fa54805fe9b48ce5c278a7e70de0c cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_7ef75a42aba67052842459f221271e681184cc89_0865c9d3ea1e3df829430fe6bc25ecbc3bc865ca_c1bde153626532428bf7409bc0597e79452c5eb8_5159f439e8516f904859190cfd0375b7a4d05db2_cfed45e1497a68bae4f74947be9922019fe331cf_97190407ff6df6ae497a54e632369afdf09cd621_af0b5afed375b2398606e02dfedd5a7d116cfde7_40934111a9826b46aca5b0b3309b1cceea46f7a4_73d11c9c68b8ad83037d9b5820a42f0e51c57d74_dcc85a40b5c9518fac5d6d9b571131998bd62653_bf33fa9b44cf05a4e8a416a1a3e8ad2d905daa8e_889e63b35e958b34d6cf15f62b243d442f1bac83_04812f95a99341b51d5b838c9470f7915b2a5f11_d0bf87d1a53ee7e33eb547179efa5b2a5e535f84_a01dc69a1e1fa54805fe9b48ce5c278a7e70de0c cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=!!chromeos-base/vm_tools chromeos-base/minijail:= net-libs/grpc:= dev-libs/protobuf:= vm-containers? ( chromeos-base/crash-reporter ) !fuzzer? ( chromeos-base/sommelier ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+REQUIRED_USE=kvm_guest
+SLOT=0/0.0.2-r1146
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=9330fdd0aa09d208a60ee18f1e74f23e
diff --git a/metadata/md5-cache/chromeos-base/vm_guest_tools-9999 b/metadata/md5-cache/chromeos-base/vm_guest_tools-9999
index 578d825..de374ad 100644
--- a/metadata/md5-cache/chromeos-base/vm_guest_tools-9999
+++ b/metadata/md5-cache/chromeos-base/vm_guest_tools-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install postinst preinst setup test unpack
-DEPEND=!!chromeos-base/vm_tools chromeos-base/minijail:= net-libs/grpc:= dev-libs/protobuf:= dev-go/grpc:= dev-go/protobuf:= sys-kernel/linux-headers:= chromeos-base/vm_protos:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=!!chromeos-base/vm_tools chromeos-base/minijail:= net-libs/grpc:= dev-libs/protobuf:= dev-go/grpc:= dev-go/protobuf:= sys-kernel/linux-headers:= chromeos-base/vm_protos:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=VM guest tools for Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools
@@ -11,5 +11,5 @@
 RDEPEND=!!chromeos-base/vm_tools chromeos-base/minijail:= net-libs/grpc:= dev-libs/protobuf:= vm-containers? ( chromeos-base/crash-reporter ) !fuzzer? ( chromeos-base/sommelier ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 REQUIRED_USE=kvm_guest
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=0e06a22fcd4ed5d159ce2f9e2fceba67
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=0666c2a45bdf4f4ce529fcd9e796509c
diff --git a/metadata/md5-cache/chromeos-base/vm_host_tools-0.0.2-r1176 b/metadata/md5-cache/chromeos-base/vm_host_tools-0.0.2-r1176
deleted file mode 100644
index af94830..0000000
--- a/metadata/md5-cache/chromeos-base/vm_host_tools-0.0.2-r1176
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=app-arch/libarchive:= !!chromeos-base/vm_tools chromeos-base/chunnel:= chromeos-base/crosvm:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= net-libs/grpc:= dev-libs/protobuf:= chromeos-base/dlcservice-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vm_protos:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=VM host tools for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools
-IUSE=+kvm_host +seccomp +crosvm-wl-dmabuf fuzzer wilco +crosvm-virtio-video cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_631e6c6d6df99d6cdb1c79f2a2e9733cadbcfa8a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb_631e6c6d6df99d6cdb1c79f2a2e9733cadbcfa8a_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=app-arch/libarchive:= !!chromeos-base/vm_tools chromeos-base/chunnel:= chromeos-base/crosvm:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= net-libs/grpc:= dev-libs/protobuf:= dev-rust/9s >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-REQUIRED_USE=kvm_host cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0/0.0.2-r1176
-_eclasses_=arc-build-constants	8e0737c700e22ae5b27a96091af3e368	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=d252eb772a1339cd6b28c9a6c4052536
diff --git a/metadata/md5-cache/chromeos-base/vm_host_tools-0.0.2-r1351 b/metadata/md5-cache/chromeos-base/vm_host_tools-0.0.2-r1351
new file mode 100644
index 0000000..a747cbd
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/vm_host_tools-0.0.2-r1351
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=app-arch/libarchive:= !!chromeos-base/vm_tools chromeos-base/chunnel:= chromeos-base/crosvm:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= net-libs/grpc:= dev-libs/protobuf:= chromeos-base/dlcservice-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vm_protos:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=VM host tools for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools
+IUSE=+kvm_host +seccomp +crosvm-wl-dmabuf fuzzer wilco +crosvm-virtio-video vulkan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_7ef75a42aba67052842459f221271e681184cc89_6ac391aa2da8e29cd4de58f7f7b489a9dc053382_c1bde153626532428bf7409bc0597e79452c5eb8_01162da167ac566d9126a032da1b74f8889e9fa2_7418121e64c49c654817d862e1474490986f4278_1780a540acb435bb7583751430df696e44eef2e3_a925c76094f1522fb121dd0f53bbb329fb608d79_edcdfbcab4b3c4525ccb60500aa145d24cafd7f7_27d31e84486e3c2a8fcf2deb13b46af8311bbae9_82e4b5c7e0ce0efa9061a09d81555845183e8d63_dcc85a40b5c9518fac5d6d9b571131998bd62653_4b930736bc7da8c301f27c7a82718e7d605de289_04812f95a99341b51d5b838c9470f7915b2a5f11_d0bf87d1a53ee7e33eb547179efa5b2a5e535f84 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a9708ef639f0f7929195d0f3921ebd1a12ad96bd_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_7ef75a42aba67052842459f221271e681184cc89_6ac391aa2da8e29cd4de58f7f7b489a9dc053382_c1bde153626532428bf7409bc0597e79452c5eb8_01162da167ac566d9126a032da1b74f8889e9fa2_7418121e64c49c654817d862e1474490986f4278_1780a540acb435bb7583751430df696e44eef2e3_a925c76094f1522fb121dd0f53bbb329fb608d79_edcdfbcab4b3c4525ccb60500aa145d24cafd7f7_27d31e84486e3c2a8fcf2deb13b46af8311bbae9_82e4b5c7e0ce0efa9061a09d81555845183e8d63_dcc85a40b5c9518fac5d6d9b571131998bd62653_4b930736bc7da8c301f27c7a82718e7d605de289_04812f95a99341b51d5b838c9470f7915b2a5f11_d0bf87d1a53ee7e33eb547179efa5b2a5e535f84 cros-debug compilation_database cros_host test arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=app-arch/libarchive:= !!chromeos-base/vm_tools chromeos-base/chunnel:= chromeos-base/crosvm:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= net-libs/grpc:= dev-libs/protobuf:= dev-rust/s9 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+REQUIRED_USE=kvm_host cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0/0.0.2-r1351
+_eclasses_=arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=6cd4870e8afce963ac5c3596f06dac11
diff --git a/metadata/md5-cache/chromeos-base/vm_host_tools-9999 b/metadata/md5-cache/chromeos-base/vm_host_tools-9999
index 62c86c7..7345551 100644
--- a/metadata/md5-cache/chromeos-base/vm_host_tools-9999
+++ b/metadata/md5-cache/chromeos-base/vm_host_tools-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=app-arch/libarchive:= !!chromeos-base/vm_tools chromeos-base/chunnel:= chromeos-base/crosvm:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= net-libs/grpc:= dev-libs/protobuf:= chromeos-base/dlcservice-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vm_protos:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=app-arch/libarchive:= !!chromeos-base/vm_tools chromeos-base/chunnel:= chromeos-base/crosvm:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= net-libs/grpc:= dev-libs/protobuf:= chromeos-base/dlcservice-client:= chromeos-base/shill-client:= chromeos-base/system_api:=[fuzzer?] chromeos-base/vm_protos:= fuzzer? ( dev-libs/libprotobuf-mutator:= ) >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=VM host tools for Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools
-IUSE=+kvm_host +seccomp +crosvm-wl-dmabuf fuzzer wilco +crosvm-virtio-video cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=+kvm_host +seccomp +crosvm-wl-dmabuf fuzzer wilco +crosvm-virtio-video vulkan cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
-RDEPEND=app-arch/libarchive:= !!chromeos-base/vm_tools chromeos-base/chunnel:= chromeos-base/crosvm:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= net-libs/grpc:= dev-libs/protobuf:= dev-rust/9s >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-REQUIRED_USE=kvm_host cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+RDEPEND=app-arch/libarchive:= !!chromeos-base/vm_tools chromeos-base/chunnel:= chromeos-base/crosvm:= >=chromeos-base/metrics-0.0.1-r3152:= chromeos-base/minijail:= chromeos-base/patchpanel:= chromeos-base/patchpanel-client:= net-libs/grpc:= dev-libs/protobuf:= dev-rust/s9 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+REQUIRED_USE=kvm_host cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0/9999
-_eclasses_=arc-build-constants	8e0737c700e22ae5b27a96091af3e368	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=877bbceb53e1484346b0d623bd3e8dde
+_eclasses_=arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=25358c7c338e0ceecc4c28514be84ecb
diff --git a/metadata/md5-cache/chromeos-base/vm_protos-0.0.1-r171 b/metadata/md5-cache/chromeos-base/vm_protos-0.0.1-r171
deleted file mode 100644
index e37ffcd..0000000
--- a/metadata/md5-cache/chromeos-base/vm_protos-0.0.1-r171
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=dev-libs/protobuf:= net-libs/grpc:= !<chromeos-base/vm_guest_tools-0.0.2 !<chromeos-base/vm_host_tools-0.0.2 dev-go/protobuf:= dev-go/grpc:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS VM protobuf API
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/proto
-IUSE=fuzzer cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4561d6fa8ca7fc408c4ab1994661283d2842bdc8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4561d6fa8ca7fc408c4ab1994661283d2842bdc8_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/protobuf:= net-libs/grpc:= !<chromeos-base/vm_guest_tools-0.0.2 !<chromeos-base/vm_host_tools-0.0.2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r171
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9e528cbf3f681cb25d21110e90be53aa
diff --git a/metadata/md5-cache/chromeos-base/vm_protos-0.0.1-r206 b/metadata/md5-cache/chromeos-base/vm_protos-0.0.1-r206
new file mode 100644
index 0000000..d55b91f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/vm_protos-0.0.1-r206
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst setup test unpack
+DEPEND=dev-libs/protobuf:= net-libs/grpc:= !<chromeos-base/vm_guest_tools-0.0.2 !<chromeos-base/vm_host_tools-0.0.2 dev-go/protobuf:= dev-go/grpc:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS VM protobuf API
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/proto
+IUSE=fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_7a0977e263f3f9969fb2db8cbeafbb4bdc1f8bb4_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_7a0977e263f3f9969fb2db8cbeafbb4bdc1f8bb4_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/protobuf:= net-libs/grpc:= !<chromeos-base/vm_guest_tools-0.0.2 !<chromeos-base/vm_host_tools-0.0.2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r206
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7dccdfec3072130020d71bc44eff3e19
diff --git a/metadata/md5-cache/chromeos-base/vm_protos-9999 b/metadata/md5-cache/chromeos-base/vm_protos-9999
index d481f3c..290874c 100644
--- a/metadata/md5-cache/chromeos-base/vm_protos-9999
+++ b/metadata/md5-cache/chromeos-base/vm_protos-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=dev-libs/protobuf:= net-libs/grpc:= !<chromeos-base/vm_guest_tools-0.0.2 !<chromeos-base/vm_host_tools-0.0.2 dev-go/protobuf:= dev-go/grpc:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-libs/protobuf:= net-libs/grpc:= !<chromeos-base/vm_guest_tools-0.0.2 !<chromeos-base/vm_host_tools-0.0.2 dev-go/protobuf:= dev-go/grpc:= dev-lang/go >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS VM protobuf API
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vm_tools/proto
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/protobuf:= net-libs/grpc:= !<chromeos-base/vm_guest_tools-0.0.2 !<chromeos-base/vm_host_tools-0.0.2 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=0c23c096220fc279375d3956316d039b
diff --git a/metadata/md5-cache/chromeos-base/vpd-0.0.1-r142 b/metadata/md5-cache/chromeos-base/vpd-0.0.1-r142
deleted file mode 100644
index 37a4e5e..0000000
--- a/metadata/md5-cache/chromeos-base/vpd-0.0.1-r142
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile info install setup test unpack
-DEPEND=sys-apps/util-linux:=
-DESCRIPTION=ChromeOS vital product data utilities
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vpd/
-IUSE=static systemd cros_host cros_workon_tree_d29b8b1ff2b87fdb3142e8d6eedff5059831728e
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-apps/flashrom dev-util/shflags virtual/chromeos-activate-date
-SLOT=0/0.0.1-r142
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=848d852b2d67a605906f6c29ce3db6c8
diff --git a/metadata/md5-cache/chromeos-base/vpd-0.0.1-r146 b/metadata/md5-cache/chromeos-base/vpd-0.0.1-r146
new file mode 100644
index 0000000..ded03853
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/vpd-0.0.1-r146
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile info install setup test unpack
+DEPEND=sys-apps/util-linux:=
+DESCRIPTION=ChromeOS vital product data utilities
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/vpd/
+IUSE=static systemd cros_host cros_workon_tree_911162d238c7c2f42a593aa8419fd53f5307959c
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/flashrom dev-util/shflags virtual/chromeos-activate-date
+SLOT=0/0.0.1-r146
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c81a47b0416f9a142b9d378040fa2e1d
diff --git a/metadata/md5-cache/chromeos-base/vpd-9999 b/metadata/md5-cache/chromeos-base/vpd-9999
index f5004f1..8f3976a 100644
--- a/metadata/md5-cache/chromeos-base/vpd-9999
+++ b/metadata/md5-cache/chromeos-base/vpd-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=sys-apps/flashrom dev-util/shflags virtual/chromeos-activate-date
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a7ff440de1831dafdf1bf8fe0a36aa84
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=cf45179804a1c9a94779153db20bd14a
diff --git a/metadata/md5-cache/chromeos-base/vpn-manager-0.0.1-r2769 b/metadata/md5-cache/chromeos-base/vpn-manager-0.0.1-r2769
deleted file mode 100644
index cc66128..0000000
--- a/metadata/md5-cache/chromeos-base/vpn-manager-0.0.1-r2769
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=net-dialup/ppp:= net-dialup/xl2tpd:= net-vpn/strongswan:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=L2TP/IPsec VPN manager for Chromium OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vpn-manager/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e0ed49a505c69afe4a7f216b86744c3dabcd5e4c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e0ed49a505c69afe4a7f216b86744c3dabcd5e4c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=net-dialup/ppp:= net-dialup/xl2tpd:= net-vpn/strongswan:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r2769
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4f8fa81130da96d2c1622edee5695fc4
diff --git a/metadata/md5-cache/chromeos-base/vpn-manager-0.0.1-r2798 b/metadata/md5-cache/chromeos-base/vpn-manager-0.0.1-r2798
new file mode 100644
index 0000000..6cda380
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/vpn-manager-0.0.1-r2798
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=net-dialup/ppp:= net-dialup/xl2tpd:= net-vpn/strongswan:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=L2TP/IPsec VPN manager for Chromium OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vpn-manager/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_767a114667a7ed090f12adcaca93e7d4ef6f034f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_767a114667a7ed090f12adcaca93e7d4ef6f034f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=net-dialup/ppp:= net-dialup/xl2tpd:= net-vpn/strongswan:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r2798
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3091d01aa1079c7a0be6944be10fb899
diff --git a/metadata/md5-cache/chromeos-base/vpn-manager-9999 b/metadata/md5-cache/chromeos-base/vpn-manager-9999
index 8a7095a..0be8f09 100644
--- a/metadata/md5-cache/chromeos-base/vpn-manager-9999
+++ b/metadata/md5-cache/chromeos-base/vpn-manager-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=net-dialup/ppp:= net-dialup/xl2tpd:= net-vpn/strongswan:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=net-dialup/ppp:= net-dialup/xl2tpd:= net-vpn/strongswan:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=L2TP/IPsec VPN manager for Chromium OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/vpn-manager/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=net-dialup/ppp:= net-dialup/xl2tpd:= net-vpn/strongswan:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=413c8a88c67978306fbaa78133cb8c4b
diff --git a/metadata/md5-cache/chromeos-base/webplot-1.0-r7 b/metadata/md5-cache/chromeos-base/webplot-1.0-r7
deleted file mode 100644
index 6861c6a..0000000
--- a/metadata/md5-cache/chromeos-base/webplot-1.0-r7
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-python/setuptools[python_targets_python2_7(-)?,-python_single_target_python2_7(-)]
-DESCRIPTION=Web drawing tool for touch devices
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/webplot/
-IUSE=cros_host cros_workon_tree_3c21ded27c4b5eccf1c33467712ac8f96a603752 python_targets_python2_7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)]
-REQUIRED_USE=|| ( python_targets_python2_7 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=e3c4cc5cd80eae751b05f15af4d61fcf
diff --git a/metadata/md5-cache/chromeos-base/webplot-9999 b/metadata/md5-cache/chromeos-base/webplot-9999
deleted file mode 100644
index f4351dd..0000000
--- a/metadata/md5-cache/chromeos-base/webplot-9999
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-python/setuptools[python_targets_python2_7(-)?,-python_single_target_python2_7(-)]
-DESCRIPTION=Web drawing tool for touch devices
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/webplot/
-IUSE=cros_host cros_workon_tree_ python_targets_python2_7
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)]
-REQUIRED_USE=|| ( python_targets_python2_7 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=62e44a89b242ec3d3bf23857e3084ff8
diff --git a/metadata/md5-cache/chromeos-base/webserver-0.0.1-r2294 b/metadata/md5-cache/chromeos-base/webserver-0.0.1-r2294
deleted file mode 100644
index f6758b7..0000000
--- a/metadata/md5-cache/chromeos-base/webserver-0.0.1-r2294
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/permission_broker:= net-libs/libmicrohttpd:= !chromeos-base/libwebserv:= chromeos-base/permission_broker-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=HTTP sever interface library
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/webserver/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c5711e94f1e2955d244a0532a8f4026f478c9eaf_5e113c91839d131b5610c46c24fb2720e664d945_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_c5711e94f1e2955d244a0532a8f4026f478c9eaf_5e113c91839d131b5610c46c24fb2720e664d945_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/permission_broker:= net-libs/libmicrohttpd:= !chromeos-base/libwebserv:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0/0.0.1-r2294
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=9b2ddecfcd57636d406608c569ee42a0
diff --git a/metadata/md5-cache/chromeos-base/webserver-0.0.1-r2336 b/metadata/md5-cache/chromeos-base/webserver-0.0.1-r2336
new file mode 100644
index 0000000..185310b
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/webserver-0.0.1-r2336
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/permission_broker:= net-libs/libmicrohttpd:= !chromeos-base/libwebserv:= chromeos-base/permission_broker-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=HTTP sever interface library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/webserver/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a43dee1645ab3169cf3c0d94a0d83cf4492ec75b_06cc9079e44816d4dd5329a76829384766a3ea06_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_a43dee1645ab3169cf3c0d94a0d83cf4492ec75b_06cc9079e44816d4dd5329a76829384766a3ea06_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/permission_broker:= net-libs/libmicrohttpd:= !chromeos-base/libwebserv:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0/0.0.1-r2336
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=b729e9759605798c8f969f444089057d
diff --git a/metadata/md5-cache/chromeos-base/webserver-9999 b/metadata/md5-cache/chromeos-base/webserver-9999
index adf2a39..65d2cf6 100644
--- a/metadata/md5-cache/chromeos-base/webserver-9999
+++ b/metadata/md5-cache/chromeos-base/webserver-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/permission_broker:= net-libs/libmicrohttpd:= !chromeos-base/libwebserv:= chromeos-base/permission_broker-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/permission_broker:= net-libs/libmicrohttpd:= !chromeos-base/libwebserv:= chromeos-base/permission_broker-client:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=HTTP sever interface library
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/webserver/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/permission_broker:= net-libs/libmicrohttpd:= !chromeos-base/libwebserv:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=c01fe14e753dcd8e98dbf9f19773a346
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=056a89d9bd6bbc2b30d0c91c61b55ec9
diff --git a/metadata/md5-cache/chromeos-base/weida_wdt_util-0.9.6 b/metadata/md5-cache/chromeos-base/weida_wdt_util-0.9.6
deleted file mode 100644
index 4626b0f..0000000
--- a/metadata/md5-cache/chromeos-base/weida_wdt_util-0.9.6
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=configure install
-DESCRIPTION=A FW updating utility for Weida touchscreens
-EAPI=5
-HOMEPAGE=https://github.com/chenhn123/wdt_util_src
-KEYWORDS=*
-LICENSE=Apache-2.0
-SLOT=0
-SRC_URI=https://github.com/chenhn123/wdt_util_src/archive/wdt_util_v0.9.6.tar.gz -> weida_wdt_util-0.9.6.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=cef9206cb4bc42cb5830bbb1eaf65388
diff --git a/metadata/md5-cache/chromeos-base/weida_wdt_util-0.9.9 b/metadata/md5-cache/chromeos-base/weida_wdt_util-0.9.9
new file mode 100644
index 0000000..68b2063
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/weida_wdt_util-0.9.9
@@ -0,0 +1,10 @@
+DEFINED_PHASES=configure install
+DESCRIPTION=A FW updating utility for Weida touchscreens
+EAPI=7
+HOMEPAGE=https://github.com/chenhn123/wdt_util_src
+KEYWORDS=*
+LICENSE=Apache-2.0
+SLOT=0
+SRC_URI=https://github.com/chenhn123/wdt_util_src/archive/wdt_util_v0.9.9.tar.gz -> weida_wdt_util-0.9.9.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ce936b0e3ed7d6d8f748dbd31184d7dc
diff --git a/metadata/md5-cache/chromeos-base/wilco-dtc-grpc-protos-0.0.1-r126 b/metadata/md5-cache/chromeos-base/wilco-dtc-grpc-protos-0.0.1-r126
deleted file mode 100644
index dc2ba31..0000000
--- a/metadata/md5-cache/chromeos-base/wilco-dtc-grpc-protos-0.0.1-r126
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=dev-libs/protobuf:= net-libs/grpc:= dev-go/protobuf dev-go/grpc dev-lang/go cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS Wilco DTC proto/gRPC API
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics/grpc
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_bf3184eecb9926a81042768d016ede2399b2a52f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_bf3184eecb9926a81042768d016ede2399b2a52f_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=dev-libs/protobuf:= net-libs/grpc:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a13eb6a02df955494d9db75beddcc444
diff --git a/metadata/md5-cache/chromeos-base/wilco-dtc-grpc-protos-0.0.1-r152 b/metadata/md5-cache/chromeos-base/wilco-dtc-grpc-protos-0.0.1-r152
new file mode 100644
index 0000000..f3992e6
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/wilco-dtc-grpc-protos-0.0.1-r152
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install postinst setup test unpack
+DEPEND=dev-libs/protobuf:= net-libs/grpc:= dev-go/protobuf dev-go/grpc dev-lang/go cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS Wilco DTC proto/gRPC API
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics/grpc
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_32f385c265f6f3f6326d6b0befb16426b78eb150_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_32f385c265f6f3f6326d6b0befb16426b78eb150_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-libs/protobuf:= net-libs/grpc:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=be3dd724f84efff51fe784d7bdb5fdad
diff --git a/metadata/md5-cache/chromeos-base/wilco-dtc-grpc-protos-9999 b/metadata/md5-cache/chromeos-base/wilco-dtc-grpc-protos-9999
index ee0a970..2479104 100644
--- a/metadata/md5-cache/chromeos-base/wilco-dtc-grpc-protos-9999
+++ b/metadata/md5-cache/chromeos-base/wilco-dtc-grpc-protos-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install postinst setup test unpack
-DEPEND=dev-libs/protobuf:= net-libs/grpc:= dev-go/protobuf dev-go/grpc dev-lang/go cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-libs/protobuf:= net-libs/grpc:= dev-go/protobuf dev-go/grpc dev-lang/go cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS Wilco DTC proto/gRPC API
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/diagnostics/grpc
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=dev-libs/protobuf:= net-libs/grpc:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=35820e3f06eb1f3c8231511a0198b9dd
diff --git a/metadata/md5-cache/chromeos-base/zephyr-build-tools-0.0.1-r27 b/metadata/md5-cache/chromeos-base/zephyr-build-tools-0.0.1-r27
deleted file mode 100644
index 61a4022..0000000
--- a/metadata/md5-cache/chromeos-base/zephyr-build-tools-0.0.1-r27
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DESCRIPTION=Tools used for building Zephyr OS
-EAPI=7
-HOMEPAGE=http://src.chromium.org
-IUSE=cros_host cros_workon_tree_9829912881abaf97bc4ecd8d68e28612ccf9a31e python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-embedded/binman dev-python/colorama[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/docopt[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/jsonschema[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pykwalify[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pyyaml[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-util/ninja sys-apps/dtc python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 ) || ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=51a383a44b7fd49a5b52c1a6000712ba
diff --git a/metadata/md5-cache/chromeos-base/zephyr-build-tools-0.0.1-r93 b/metadata/md5-cache/chromeos-base/zephyr-build-tools-0.0.1-r93
new file mode 100644
index 0000000..47ebc0f
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/zephyr-build-tools-0.0.1-r93
@@ -0,0 +1,14 @@
+BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DESCRIPTION=Tools used for building Zephyr OS
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+IUSE=cros_host cros_workon_tree_f0345f01a3331f280eae5ffaa6570562fd42e79c python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-embedded/binman dev-python/colorama[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/docopt[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/hypothesis[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/jsonschema[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pykwalify[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pytest[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pyyaml[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/testfixtures[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-util/ninja sys-apps/dtc python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 ) || ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8e0cad7b28b5e87477ffcb053801c481
diff --git a/metadata/md5-cache/chromeos-base/zephyr-build-tools-9999 b/metadata/md5-cache/chromeos-base/zephyr-build-tools-9999
index dc0af4f..7c79eb70 100644
--- a/metadata/md5-cache/chromeos-base/zephyr-build-tools-9999
+++ b/metadata/md5-cache/chromeos-base/zephyr-build-tools-9999
@@ -7,8 +7,8 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=dev-embedded/binman dev-python/colorama[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/docopt[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/jsonschema[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pykwalify[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pyyaml[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-util/ninja sys-apps/dtc python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]
+RDEPEND=dev-embedded/binman dev-python/colorama[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/docopt[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/hypothesis[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/jsonschema[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pykwalify[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pytest[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pyyaml[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/testfixtures[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-util/ninja sys-apps/dtc python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 ) || ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8d02b0791cb2059b357b176016569c42
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=28905d22d3b330b1846a41e2e69cfbba
diff --git a/metadata/md5-cache/chromeos-base/zinitix_fw_updater-1.0.9 b/metadata/md5-cache/chromeos-base/zinitix_fw_updater-1.0.9
new file mode 100644
index 0000000..58610de
--- /dev/null
+++ b/metadata/md5-cache/chromeos-base/zinitix_fw_updater-1.0.9
@@ -0,0 +1,10 @@
+DEFINED_PHASES=configure install
+DESCRIPTION=Zinitix Digitizer for Firmware Update
+EAPI=7
+HOMEPAGE=https://github.com/zinitix-solution/zinitix_fw_updater
+KEYWORDS=*
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=https://github.com/zinitix-solution/zinitix_fw_updater/archive/v1.0.9.tar.gz -> zinitix_fw_updater-1.0.9.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fbb400d96f902f8885ab454b5cae82d2
diff --git a/metadata/md5-cache/dev-cpp/absl-20200923 b/metadata/md5-cache/dev-cpp/absl-20200923
index 449ed73..94c4691 100644
--- a/metadata/md5-cache/dev-cpp/absl-20200923
+++ b/metadata/md5-cache/dev-cpp/absl-20200923
@@ -7,5 +7,5 @@
 LICENSE=Apache-2.0
 SLOT=0
 SRC_URI=https://github.com/abseil/abseil-cpp/archive/20200923.tar.gz -> absl-20200923.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=bc58d6e17b7620c42aca666231bd2c96
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=a83e305e59d9293a1d14aebbe7c81810
diff --git a/metadata/md5-cache/dev-cpp/absl-20200923-r3 b/metadata/md5-cache/dev-cpp/absl-20200923-r3
deleted file mode 100644
index 449ed73..0000000
--- a/metadata/md5-cache/dev-cpp/absl-20200923-r3
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Abseil - C++ Common Libraries
-EAPI=6
-HOMEPAGE=https://abseil.io
-KEYWORDS=*
-LICENSE=Apache-2.0
-SLOT=0
-SRC_URI=https://github.com/abseil/abseil-cpp/archive/20200923.tar.gz -> absl-20200923.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=bc58d6e17b7620c42aca666231bd2c96
diff --git a/metadata/md5-cache/dev-cpp/absl-20200923-r4 b/metadata/md5-cache/dev-cpp/absl-20200923-r4
new file mode 100644
index 0000000..94c4691
--- /dev/null
+++ b/metadata/md5-cache/dev-cpp/absl-20200923-r4
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=sys-devel/make >=dev-util/cmake-3.9.6
+DESCRIPTION=Abseil - C++ Common Libraries
+EAPI=6
+HOMEPAGE=https://abseil.io
+KEYWORDS=*
+LICENSE=Apache-2.0
+SLOT=0
+SRC_URI=https://github.com/abseil/abseil-cpp/archive/20200923.tar.gz -> absl-20200923.tar.gz
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=a83e305e59d9293a1d14aebbe7c81810
diff --git a/metadata/md5-cache/dev-cpp/arc-gtest-1.8.0 b/metadata/md5-cache/dev-cpp/arc-gtest-1.8.0
deleted file mode 100644
index 44496af..0000000
--- a/metadata/md5-cache/dev-cpp/arc-gtest-1.8.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=|| ( >=dev-lang/python-2.7.5-r2:2.7 ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=Google C++ Testing Framework
-EAPI=5
-HOMEPAGE=http://github.com/google/googletest/
-IUSE=abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=BSD
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-SRC_URI=https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/googletest-release-1.8.0.tar.gz
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	autotools	d0e5375d47f4c809f406eb892e531513	autotools-multilib	037c4046d25f29e78dd44dccabd5d66b	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=6d81ad187e20c5a69e8318b7e09fbed5
diff --git a/metadata/md5-cache/dev-cpp/arc-gtest-1.8.0-r3 b/metadata/md5-cache/dev-cpp/arc-gtest-1.8.0-r3
deleted file mode 100644
index 44496af..0000000
--- a/metadata/md5-cache/dev-cpp/arc-gtest-1.8.0-r3
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=|| ( >=dev-lang/python-2.7.5-r2:2.7 ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=Google C++ Testing Framework
-EAPI=5
-HOMEPAGE=http://github.com/google/googletest/
-IUSE=abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=BSD
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-SRC_URI=https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/googletest-release-1.8.0.tar.gz
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	autotools	d0e5375d47f4c809f406eb892e531513	autotools-multilib	037c4046d25f29e78dd44dccabd5d66b	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=6d81ad187e20c5a69e8318b7e09fbed5
diff --git a/metadata/md5-cache/dev-cpp/gtest-1.10.0 b/metadata/md5-cache/dev-cpp/gtest-1.10.0
new file mode 100644
index 0000000..d57965a
--- /dev/null
+++ b/metadata/md5-cache/dev-cpp/gtest-1.10.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=!dev-cpp/gmock test? ( || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) ) sys-devel/make >=dev-util/cmake-3.9.6
+DESCRIPTION=Google C++ Testing Framework
+EAPI=6
+HOMEPAGE=https://github.com/google/googletest
+IUSE=doc examples test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=BSD
+RDEPEND=!dev-cpp/gmock
+SLOT=0
+SRC_URI=https://github.com/google/googletest/archive/v1.10.0.tar.gz -> gtest-1.10.0.tar.gz
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=8b11f1f372f2829718b4bc02d4356ee1
diff --git a/metadata/md5-cache/dev-cpp/gtest-1.8.2_pre b/metadata/md5-cache/dev-cpp/gtest-1.8.2_pre
deleted file mode 100644
index e224bb7..0000000
--- a/metadata/md5-cache/dev-cpp/gtest-1.8.2_pre
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=!dev-cpp/gmock test? ( || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) ) sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Google C++ Testing Framework
-EAPI=6
-HOMEPAGE=https://github.com/google/googletest
-IUSE=doc examples test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=!dev-cpp/gmock
-SLOT=0
-SRC_URI=https://github.com/google/googletest/archive/5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081.tar.gz -> gtest-1.8.2_pre.tar.gz
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=6f26909562515ad46743e3e051ebf4a2
diff --git a/metadata/md5-cache/dev-cpp/gtest-1.8.2_pre-r3 b/metadata/md5-cache/dev-cpp/gtest-1.8.2_pre-r3
deleted file mode 100644
index e224bb7..0000000
--- a/metadata/md5-cache/dev-cpp/gtest-1.8.2_pre-r3
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=!dev-cpp/gmock test? ( || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) ) sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Google C++ Testing Framework
-EAPI=6
-HOMEPAGE=https://github.com/google/googletest
-IUSE=doc examples test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=!dev-cpp/gmock
-SLOT=0
-SRC_URI=https://github.com/google/googletest/archive/5ec7f0c4a113e2f18ac2c6cc7df51ad6afc24081.tar.gz -> gtest-1.8.2_pre.tar.gz
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=6f26909562515ad46743e3e051ebf4a2
diff --git a/metadata/md5-cache/dev-db/mariadb-connector-c-3.0.6-r1 b/metadata/md5-cache/dev-db/mariadb-connector-c-3.0.6-r1
index 4e21a17..79af625 100644
--- a/metadata/md5-cache/dev-db/mariadb-connector-c-3.0.6-r1
+++ b/metadata/md5-cache/dev-db/mariadb-connector-c-3.0.6-r1
@@ -9,5 +9,5 @@
 RDEPEND=sys-libs/zlib:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] virtual/libiconv:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] curl? ( net-misc/curl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) kerberos? ( || ( app-crypt/mit-krb5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] app-crypt/heimdal[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) ssl? ( gnutls? ( >=net-libs/gnutls-3.3.24:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !gnutls? ( libressl? ( dev-libs/libressl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !libressl? ( dev-libs/openssl:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) ) mysqlcompat? ( !dev-db/mysql[client-libs(+)] !dev-db/mysql-cluster[client-libs(+)] !dev-db/mariadb[client-libs(+)] !dev-db/mariadb-galera[client-libs(+)] !dev-db/percona-server[client-libs(+)] !dev-db/mysql-connector-c ) !>=dev-db/mariadb-10.2.0[client-libs(+)]
 SLOT=0/3
 SRC_URI=https://downloads.mariadb.org/f/connector-c-3.0.6/mariadb-connector-c-3.0.6-src.tar.gz?serve -> mariadb-connector-c-3.0.6-src.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=b909e78eb3d1c644616e799132dfff7e
diff --git a/metadata/md5-cache/dev-embedded/binman-0.0.1-r1 b/metadata/md5-cache/dev-embedded/binman-0.0.1-r1
deleted file mode 100644
index 21fa9ee..0000000
--- a/metadata/md5-cache/dev-embedded/binman-0.0.1-r1
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DESCRIPTION=Binman tool (from U-Boot) for creating / adjusting firmware images
-EAPI=7
-HOMEPAGE=https://www.denx.de/wiki/U-Boot
-IUSE=cros_host cros_workon_tree_34c69bae738990ef8d7fc18553b02f41305d9e79 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=dev-embedded/dtoc dev-vcs/patman python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0fb2903c1fc5488455abd5124e8e91ea
diff --git a/metadata/md5-cache/dev-embedded/binman-0.0.1-r6 b/metadata/md5-cache/dev-embedded/binman-0.0.1-r6
new file mode 100644
index 0000000..55151eb
--- /dev/null
+++ b/metadata/md5-cache/dev-embedded/binman-0.0.1-r6
@@ -0,0 +1,14 @@
+BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DESCRIPTION=Binman tool (from U-Boot) for creating / adjusting firmware images
+EAPI=7
+HOMEPAGE=https://www.denx.de/wiki/U-Boot
+IUSE=cros_host cros_workon_tree_16384d991c25985ca4c0345c6b9fb7df570ff40c python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=dev-embedded/dtoc dev-vcs/patman python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1d86ecaf30b21fbd831f95a193f9776b
diff --git a/metadata/md5-cache/dev-embedded/binman-9999 b/metadata/md5-cache/dev-embedded/binman-9999
index 96399c6..43d9075 100644
--- a/metadata/md5-cache/dev-embedded/binman-9999
+++ b/metadata/md5-cache/dev-embedded/binman-9999
@@ -10,5 +10,5 @@
 RDEPEND=dev-embedded/dtoc dev-vcs/patman python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=37b9b238a6f2a014a7483186b965281f
diff --git a/metadata/md5-cache/dev-embedded/coreboot-sdk-0.0.1-r104 b/metadata/md5-cache/dev-embedded/coreboot-sdk-0.0.1-r104
deleted file mode 100644
index 49ccf24..0000000
--- a/metadata/md5-cache/dev-embedded/coreboot-sdk-0.0.1-r104
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install prepare setup unpack
-DESCRIPTION=upstream coreboot's compiler suite
-EAPI=7
-HOMEPAGE=https://www.coreboot.org
-IUSE=cros_host cros_workon_tree_9c76872c3e7ee7f33dd88e0286b0f067ccfc0535
-KEYWORDS=*
-LICENSE=GPL-3 LGPL-3
-PROPERTIES=live
-SLOT=0/0.0.1-r104
-SRC_URI=https://ftpmirror.gnu.org/gmp/gmp-6.2.0.tar.xz https://ftpmirror.gnu.org/mpfr/mpfr-4.1.0.tar.xz https://ftpmirror.gnu.org/mpc/mpc-1.2.0.tar.gz https://ftpmirror.gnu.org/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz https://ftpmirror.gnu.org/binutils/binutils-2.35.1.tar.xz https://acpica.org/sites/acpica/files/acpica-unix2-20200925.tar.gz http://mirrors.cdn.adacore.com/art/591c6d80c7a447af2deed1d7 -> gnat-gpl-2017-x86_64-linux-bin.tar.gz
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=be847cb2cc5ad959fe19799087a5c1db
diff --git a/metadata/md5-cache/dev-embedded/coreboot-sdk-0.0.1-r109 b/metadata/md5-cache/dev-embedded/coreboot-sdk-0.0.1-r109
new file mode 100644
index 0000000..8162301
--- /dev/null
+++ b/metadata/md5-cache/dev-embedded/coreboot-sdk-0.0.1-r109
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install prepare setup unpack
+DESCRIPTION=upstream coreboot's compiler suite
+EAPI=7
+HOMEPAGE=https://www.coreboot.org
+IUSE=cros_host cros_workon_tree_b47f5c0dc4c30f5e0d8dd1c910278946c334ecad
+KEYWORDS=*
+LICENSE=GPL-3 LGPL-3
+PROPERTIES=live
+SLOT=0/0.0.1-r109
+SRC_URI=https://ftpmirror.gnu.org/gmp/gmp-6.2.0.tar.xz https://ftpmirror.gnu.org/mpfr/mpfr-4.1.0.tar.xz https://ftpmirror.gnu.org/mpc/mpc-1.2.0.tar.gz https://ftpmirror.gnu.org/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz https://ftpmirror.gnu.org/binutils/binutils-2.35.1.tar.xz https://acpica.org/sites/acpica/files/acpica-unix2-20200925.tar.gz http://mirrors.cdn.adacore.com/art/591c6d80c7a447af2deed1d7 -> gnat-gpl-2017-x86_64-linux-bin.tar.gz
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2a989561d03bde4eccd3fb620d6af67b
diff --git a/metadata/md5-cache/dev-embedded/coreboot-sdk-9999 b/metadata/md5-cache/dev-embedded/coreboot-sdk-9999
index 3b4e31d..1ce9327 100644
--- a/metadata/md5-cache/dev-embedded/coreboot-sdk-9999
+++ b/metadata/md5-cache/dev-embedded/coreboot-sdk-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 SLOT=0/9999
 SRC_URI=https://ftpmirror.gnu.org/gmp/gmp-6.2.0.tar.xz https://ftpmirror.gnu.org/mpfr/mpfr-4.1.0.tar.xz https://ftpmirror.gnu.org/mpc/mpc-1.2.0.tar.gz https://ftpmirror.gnu.org/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz https://ftpmirror.gnu.org/binutils/binutils-2.35.1.tar.xz https://acpica.org/sites/acpica/files/acpica-unix2-20200925.tar.gz http://mirrors.cdn.adacore.com/art/591c6d80c7a447af2deed1d7 -> gnat-gpl-2017-x86_64-linux-bin.tar.gz
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=905624adabc0e50d3a9f68e32b2c5128
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6e716bda8b0550ca416b1aa8aacf5ddf
diff --git a/metadata/md5-cache/dev-embedded/dtoc-0.0.1-r1 b/metadata/md5-cache/dev-embedded/dtoc-0.0.1-r1
deleted file mode 100644
index 5068164..0000000
--- a/metadata/md5-cache/dev-embedded/dtoc-0.0.1-r1
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DESCRIPTION=Dtoc tool (from U-Boot) for converting devicetree files to C
-EAPI=7
-HOMEPAGE=https://www.denx.de/wiki/U-Boot
-IUSE=cros_host cros_workon_tree_056aa2ec54c99a4f1e14b29aa279ce4694bdddd0 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=dev-vcs/patman python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ca207c14cfbfb508e9f58d78ee52d38a
diff --git a/metadata/md5-cache/dev-embedded/dtoc-0.0.1-r3 b/metadata/md5-cache/dev-embedded/dtoc-0.0.1-r3
new file mode 100644
index 0000000..38ba41e
--- /dev/null
+++ b/metadata/md5-cache/dev-embedded/dtoc-0.0.1-r3
@@ -0,0 +1,14 @@
+BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DESCRIPTION=Dtoc tool (from U-Boot) for converting devicetree files to C
+EAPI=7
+HOMEPAGE=https://www.denx.de/wiki/U-Boot
+IUSE=cros_host cros_workon_tree_b9d094a27545777931d3af534417c065aa9d9985 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=dev-vcs/patman python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b1a6683c97025523e0cb7b8931e34a92
diff --git a/metadata/md5-cache/dev-embedded/dtoc-9999 b/metadata/md5-cache/dev-embedded/dtoc-9999
index 43e1624..88361b4 100644
--- a/metadata/md5-cache/dev-embedded/dtoc-9999
+++ b/metadata/md5-cache/dev-embedded/dtoc-9999
@@ -10,5 +10,5 @@
 RDEPEND=dev-vcs/patman python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=65921555a0915bebf83807f26e9d13c2
diff --git a/metadata/md5-cache/dev-embedded/ftdi_eeprom-0.4_rc1 b/metadata/md5-cache/dev-embedded/ftdi_eeprom-0.4_rc1
deleted file mode 100644
index 1f4ca0c..0000000
--- a/metadata/md5-cache/dev-embedded/ftdi_eeprom-0.4_rc1
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=install prepare
-DEPEND=>=dev-embedded/libftdi-0.19 dev-libs/confuse >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Utility to program external EEPROM for FTDI USB chips
-EAPI=2
-HOMEPAGE=http://www.intra2net.com/en/developer/libftdi/
-KEYWORDS=x86 amd64
-LICENSE=LGPL-2
-RDEPEND=>=dev-embedded/libftdi-0.19 dev-libs/confuse
-SLOT=0
-SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/ftdi_eeprom-0.4_rc1.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5ae88b325ebe097da461933662574597
diff --git a/metadata/md5-cache/dev-embedded/libftdi-1.2 b/metadata/md5-cache/dev-embedded/libftdi-1.2
index 3d88d66..f1a8678 100644
--- a/metadata/md5-cache/dev-embedded/libftdi-1.2
+++ b/metadata/md5-cache/dev-embedded/libftdi-1.2
@@ -10,5 +10,5 @@
 REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 python_single_target_python3_6 ) )
 SLOT=1
 SRC_URI=http://www.intra2net.com/en/developer/libftdi/download/libftdi1-1.2.tar.bz2
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=dc0d5898a2f4637895ebb5fa795ccefc
diff --git a/metadata/md5-cache/dev-embedded/libftdi-1.2-r3 b/metadata/md5-cache/dev-embedded/libftdi-1.2-r3
index 3d88d66..f1a8678 100644
--- a/metadata/md5-cache/dev-embedded/libftdi-1.2-r3
+++ b/metadata/md5-cache/dev-embedded/libftdi-1.2-r3
@@ -10,5 +10,5 @@
 REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 python_single_target_python3_6 ) )
 SLOT=1
 SRC_URI=http://www.intra2net.com/en/developer/libftdi/download/libftdi1-1.2.tar.bz2
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=dc0d5898a2f4637895ebb5fa795ccefc
diff --git a/metadata/md5-cache/dev-embedded/ti50-sdk-0.0.1 b/metadata/md5-cache/dev-embedded/ti50-sdk-0.0.1
new file mode 100644
index 0000000..74f0bb98
--- /dev/null
+++ b/metadata/md5-cache/dev-embedded/ti50-sdk-0.0.1
@@ -0,0 +1,11 @@
+BDEPEND=|| ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) dev-lang/perl sys-devel/gnuconfig || ( ( dev-lang/python:3.9 dev-python/sphinx[python_targets_python3_9(-),python_single_target_python3_9(+)] ) ( dev-lang/python:3.8 dev-python/sphinx[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ( dev-lang/python:3.7 dev-python/sphinx[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ( dev-lang/python:3.6 dev-python/sphinx[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ) >=dev-libs/libxml2-2.9.6 >=dev-lang/perl-5.0
+DEFINED_PHASES=compile install prepare setup unpack
+DEPEND=sys-libs/zlib >=sys-libs/ncurses-5.9-r3 sys-devel/binutils
+DESCRIPTION=Ebuild that installs Ti50's SDK
+EAPI=7
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA
+SLOT=0
+SRC_URI=https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/llvm-bb852a09ae36-src.tar.xz https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/rust-0da58007451a-rustc-0da58007451a-src.tar.xz https://static.rust-lang.org/dist/2020-08-26/cargo-beta-x86_64-unknown-linux-gnu.tar.xz -> rust-0da58007451a-cargo-beta-x86_64-unknown-linux-gnu.tar.xz https://static.rust-lang.org/dist/2020-08-26/rustc-beta-x86_64-unknown-linux-gnu.tar.xz -> rust-0da58007451a-rustc-beta-x86_64-unknown-linux-gnu.tar.xz https://static.rust-lang.org/dist/2020-08-26/rust-std-beta-x86_64-unknown-linux-gnu.tar.xz -> rust-0da58007451a-rust-std-beta-x86_64-unknown-linux-gnu.tar.xz https://static.rust-lang.org/dist/2020-08-26/rustfmt-beta-x86_64-unknown-linux-gnu.tar.xz -> rust-0da58007451a-rustfmt-beta-x86_64-unknown-linux-gnu.tar.xz https://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/newlib-1debd4d635c2-src.tar.xz
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=59b522794d718a2bf9cc4d9ae26c9089
diff --git a/metadata/md5-cache/dev-go/go-tools-0.0.1 b/metadata/md5-cache/dev-go/go-tools-0.0.1
index ae8b481..fab2dd5 100644
--- a/metadata/md5-cache/dev-go/go-tools-0.0.1
+++ b/metadata/md5-cache/dev-go/go-tools-0.0.1
@@ -1,13 +1,13 @@
 DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/net dev-go/xerrors dev-lang/go
+DEPEND=dev-go/mod dev-go/net dev-go/xerrors dev-lang/go
 DESCRIPTION=Packages and tools that support the Go programming language
 EAPI=5
 HOMEPAGE=https://golang.org/x/tools
 KEYWORDS=*
 LICENSE=BSD-Google
-RDEPEND=dev-go/net dev-go/xerrors
+RDEPEND=dev-go/mod dev-go/net dev-go/xerrors
 RESTRICT=binchecks strip
 SLOT=0
-SRC_URI=https://go.googlesource.com/tools/+archive/65e3620a7ae7ac25e8494a60f0e5ef4e4fba03b3.tar.gz -> go.googlesource.com-tools-65e3620a7ae7ac25e8494a60f0e5ef4e4fba03b3.tar.gz
+SRC_URI=https://go.googlesource.com/tools/+archive/c1934b75d054975b79a8179cb6f0a9b8b3fa33cd.tar.gz -> go.googlesource.com-tools-c1934b75d054975b79a8179cb6f0a9b8b3fa33cd.tar.gz
 _eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=29800732bc88f93bfec325e044e520a8
+_md5_=6c9bc5cd64e912baf0465c90483c7726
diff --git a/metadata/md5-cache/dev-go/go-tools-0.0.1-r13 b/metadata/md5-cache/dev-go/go-tools-0.0.1-r13
deleted file mode 100644
index ae8b481..0000000
--- a/metadata/md5-cache/dev-go/go-tools-0.0.1-r13
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/net dev-go/xerrors dev-lang/go
-DESCRIPTION=Packages and tools that support the Go programming language
-EAPI=5
-HOMEPAGE=https://golang.org/x/tools
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=dev-go/net dev-go/xerrors
-RESTRICT=binchecks strip
-SLOT=0
-SRC_URI=https://go.googlesource.com/tools/+archive/65e3620a7ae7ac25e8494a60f0e5ef4e4fba03b3.tar.gz -> go.googlesource.com-tools-65e3620a7ae7ac25e8494a60f0e5ef4e4fba03b3.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=29800732bc88f93bfec325e044e520a8
diff --git a/metadata/md5-cache/dev-go/go-tools-0.0.1-r14 b/metadata/md5-cache/dev-go/go-tools-0.0.1-r14
new file mode 100644
index 0000000..fab2dd5
--- /dev/null
+++ b/metadata/md5-cache/dev-go/go-tools-0.0.1-r14
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install nofetch postinst test unpack
+DEPEND=dev-go/mod dev-go/net dev-go/xerrors dev-lang/go
+DESCRIPTION=Packages and tools that support the Go programming language
+EAPI=5
+HOMEPAGE=https://golang.org/x/tools
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=dev-go/mod dev-go/net dev-go/xerrors
+RESTRICT=binchecks strip
+SLOT=0
+SRC_URI=https://go.googlesource.com/tools/+archive/c1934b75d054975b79a8179cb6f0a9b8b3fa33cd.tar.gz -> go.googlesource.com-tools-c1934b75d054975b79a8179cb6f0a9b8b3fa33cd.tar.gz
+_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=6c9bc5cd64e912baf0465c90483c7726
diff --git a/metadata/md5-cache/dev-go/luci-auth-0.0.1 b/metadata/md5-cache/dev-go/luci-auth-0.0.1
deleted file mode 100644
index 2472b1c..0000000
--- a/metadata/md5-cache/dev-go/luci-auth-0.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/gcp-compute dev-go/grpc dev-go/luci-common dev-go/maruel-subcommands dev-go/net dev-go/oauth2 dev-lang/go
-DESCRIPTION=LUCI Go auth library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/gcp-compute dev-go/grpc dev-go/luci-common dev-go/maruel-subcommands dev-go/net dev-go/oauth2
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2df32f1583bacb4be48dff88e55a6caa
diff --git a/metadata/md5-cache/dev-go/luci-auth-0.0.1-r4 b/metadata/md5-cache/dev-go/luci-auth-0.0.1-r4
deleted file mode 100644
index 2472b1c..0000000
--- a/metadata/md5-cache/dev-go/luci-auth-0.0.1-r4
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/gcp-compute dev-go/grpc dev-go/luci-common dev-go/maruel-subcommands dev-go/net dev-go/oauth2 dev-lang/go
-DESCRIPTION=LUCI Go auth library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/gcp-compute dev-go/grpc dev-go/luci-common dev-go/maruel-subcommands dev-go/net dev-go/oauth2
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2df32f1583bacb4be48dff88e55a6caa
diff --git a/metadata/md5-cache/dev-go/luci-chromeinfra-0.0.1 b/metadata/md5-cache/dev-go/luci-chromeinfra-0.0.1
deleted file mode 100644
index 1feb081..0000000
--- a/metadata/md5-cache/dev-go/luci-chromeinfra-0.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/luci-auth dev-go/homedir dev-lang/go
-DESCRIPTION=LUCI Go hardcoded chrome infra values library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/luci-auth dev-go/homedir
-RESTRICT=binchecks strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a7e0ece61853e0fbd725c08dc35310c2
diff --git a/metadata/md5-cache/dev-go/luci-chromeinfra-0.0.1-r2 b/metadata/md5-cache/dev-go/luci-chromeinfra-0.0.1-r2
deleted file mode 100644
index 1feb081..0000000
--- a/metadata/md5-cache/dev-go/luci-chromeinfra-0.0.1-r2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/luci-auth dev-go/homedir dev-lang/go
-DESCRIPTION=LUCI Go hardcoded chrome infra values library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/luci-auth dev-go/homedir
-RESTRICT=binchecks strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a7e0ece61853e0fbd725c08dc35310c2
diff --git a/metadata/md5-cache/dev-go/luci-common-0.0.1 b/metadata/md5-cache/dev-go/luci-common-0.0.1
deleted file mode 100644
index a656322..0000000
--- a/metadata/md5-cache/dev-go/luci-common-0.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/crypto dev-go/gapi-googleapi dev-go/gcp-pubsub dev-go/maruel-subcommands dev-go/net dev-go/oauth2 dev-go/op-logging dev-go/protobuf dev-lang/go
-DESCRIPTION=LUCI Go common library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/crypto dev-go/gapi-googleapi dev-go/gcp-pubsub dev-go/maruel-subcommands dev-go/net dev-go/oauth2 dev-go/op-logging dev-go/protobuf
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1080fa890a1eeeda068746234e3f1b03
diff --git a/metadata/md5-cache/dev-go/luci-common-0.0.1-r6 b/metadata/md5-cache/dev-go/luci-common-0.0.1-r6
deleted file mode 100644
index a656322..0000000
--- a/metadata/md5-cache/dev-go/luci-common-0.0.1-r6
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/crypto dev-go/gapi-googleapi dev-go/gcp-pubsub dev-go/maruel-subcommands dev-go/net dev-go/oauth2 dev-go/op-logging dev-go/protobuf dev-lang/go
-DESCRIPTION=LUCI Go common library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/crypto dev-go/gapi-googleapi dev-go/gcp-pubsub dev-go/maruel-subcommands dev-go/net dev-go/oauth2 dev-go/op-logging dev-go/protobuf
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1080fa890a1eeeda068746234e3f1b03
diff --git a/metadata/md5-cache/dev-go/luci-config-0.0.1 b/metadata/md5-cache/dev-go/luci-config-0.0.1
deleted file mode 100644
index af7b11c..0000000
--- a/metadata/md5-cache/dev-go/luci-config-0.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/net dev-lang/go
-DESCRIPTION=LUCI Go config library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/net
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=341f07df3ba93ec29ca5cca96ac551b7
diff --git a/metadata/md5-cache/dev-go/luci-config-0.0.1-r2 b/metadata/md5-cache/dev-go/luci-config-0.0.1-r2
deleted file mode 100644
index af7b11c..0000000
--- a/metadata/md5-cache/dev-go/luci-config-0.0.1-r2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/net dev-lang/go
-DESCRIPTION=LUCI Go config library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/net
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=341f07df3ba93ec29ca5cca96ac551b7
diff --git a/metadata/md5-cache/dev-go/luci-go-common-0.0.1 b/metadata/md5-cache/dev-go/luci-go-common-0.0.1
new file mode 100644
index 0000000..4678b4e
--- /dev/null
+++ b/metadata/md5-cache/dev-go/luci-go-common-0.0.1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install nofetch postinst test unpack
+DEPEND=dev-go/gapi-googleapi dev-go/grpc dev-go/protobuf dev-lang/go
+DESCRIPTION=LUCI-related packages and other common utility packages.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=dev-go/gapi-googleapi dev-go/grpc dev-go/protobuf
+SLOT=0
+SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/fbf085364d0e2db2aa35e78f526ca0d7468201a8.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-fbf085364d0e2db2aa35e78f526ca0d7468201a8.tar.gz
+_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8dcff8711928736bbe8110f445184a17
diff --git a/metadata/md5-cache/dev-go/luci-go-common-0.0.1-r1 b/metadata/md5-cache/dev-go/luci-go-common-0.0.1-r1
new file mode 100644
index 0000000..4678b4e
--- /dev/null
+++ b/metadata/md5-cache/dev-go/luci-go-common-0.0.1-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install nofetch postinst test unpack
+DEPEND=dev-go/gapi-googleapi dev-go/grpc dev-go/protobuf dev-lang/go
+DESCRIPTION=LUCI-related packages and other common utility packages.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=dev-go/gapi-googleapi dev-go/grpc dev-go/protobuf
+SLOT=0
+SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/fbf085364d0e2db2aa35e78f526ca0d7468201a8.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-fbf085364d0e2db2aa35e78f526ca0d7468201a8.tar.gz
+_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8dcff8711928736bbe8110f445184a17
diff --git a/metadata/md5-cache/dev-go/luci-grpc-0.0.1 b/metadata/md5-cache/dev-go/luci-grpc-0.0.1
deleted file mode 100644
index e1433b3..0000000
--- a/metadata/md5-cache/dev-go/luci-grpc-0.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/grpc dev-go/luci-common dev-go/luci-router dev-go/net dev-go/protobuf dev-lang/go
-DESCRIPTION=LUCI Go common library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/grpc dev-go/luci-common dev-go/luci-router dev-go/net dev-go/protobuf
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5451bbc5e18e06b1f0a9282a462036b7
diff --git a/metadata/md5-cache/dev-go/luci-grpc-0.0.1-r1 b/metadata/md5-cache/dev-go/luci-grpc-0.0.1-r1
deleted file mode 100644
index e1433b3..0000000
--- a/metadata/md5-cache/dev-go/luci-grpc-0.0.1-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/grpc dev-go/luci-common dev-go/luci-router dev-go/net dev-go/protobuf dev-lang/go
-DESCRIPTION=LUCI Go common library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/grpc dev-go/luci-common dev-go/luci-router dev-go/net dev-go/protobuf
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5451bbc5e18e06b1f0a9282a462036b7
diff --git a/metadata/md5-cache/dev-go/luci-logdog-streamclient-0.0.1 b/metadata/md5-cache/dev-go/luci-logdog-streamclient-0.0.1
deleted file mode 100644
index d468f68..0000000
--- a/metadata/md5-cache/dev-go/luci-logdog-streamclient-0.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/luci-common dev-go/luci-config dev-go/luci-grpc dev-go/protobuf dev-lang/go
-DESCRIPTION=LUCI Go LogDog stream client library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/luci-common dev-go/luci-config dev-go/luci-grpc dev-go/protobuf
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2f838a1a37e176b96f15dbb481d85510
diff --git a/metadata/md5-cache/dev-go/luci-logdog-streamclient-0.0.1-r4 b/metadata/md5-cache/dev-go/luci-logdog-streamclient-0.0.1-r4
deleted file mode 100644
index d468f68..0000000
--- a/metadata/md5-cache/dev-go/luci-logdog-streamclient-0.0.1-r4
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/luci-common dev-go/luci-config dev-go/luci-grpc dev-go/protobuf dev-lang/go
-DESCRIPTION=LUCI Go LogDog stream client library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/luci-common dev-go/luci-config dev-go/luci-grpc dev-go/protobuf
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2f838a1a37e176b96f15dbb481d85510
diff --git a/metadata/md5-cache/dev-go/luci-router-0.0.1 b/metadata/md5-cache/dev-go/luci-router-0.0.1
deleted file mode 100644
index 810dc7c..0000000
--- a/metadata/md5-cache/dev-go/luci-router-0.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/httprouter dev-go/net dev-lang/go
-DESCRIPTION=LUCI Go library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/httprouter dev-go/net
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1e0b2f1df3bb2de1cbfe3891cc64d90f
diff --git a/metadata/md5-cache/dev-go/luci-router-0.0.1-r1 b/metadata/md5-cache/dev-go/luci-router-0.0.1-r1
deleted file mode 100644
index 810dc7c..0000000
--- a/metadata/md5-cache/dev-go/luci-router-0.0.1-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/httprouter dev-go/net dev-lang/go
-DESCRIPTION=LUCI Go library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/httprouter dev-go/net
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1e0b2f1df3bb2de1cbfe3891cc64d90f
diff --git a/metadata/md5-cache/dev-go/luci-swarming-0.0.1 b/metadata/md5-cache/dev-go/luci-swarming-0.0.1
deleted file mode 100644
index fb455d9..0000000
--- a/metadata/md5-cache/dev-go/luci-swarming-0.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/gapi-gensupport dev-go/gapi-googleapi dev-go/net dev-lang/go
-DESCRIPTION=LUCI Go swarming API library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/gapi-gensupport dev-go/gapi-googleapi dev-go/net
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b3c0aec703612b1e770db4ba57624362
diff --git a/metadata/md5-cache/dev-go/luci-swarming-0.0.1-r2 b/metadata/md5-cache/dev-go/luci-swarming-0.0.1-r2
deleted file mode 100644
index fb455d9..0000000
--- a/metadata/md5-cache/dev-go/luci-swarming-0.0.1-r2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/gapi-gensupport dev-go/gapi-googleapi dev-go/net dev-lang/go
-DESCRIPTION=LUCI Go swarming API library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/gapi-gensupport dev-go/gapi-googleapi dev-go/net
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b3c0aec703612b1e770db4ba57624362
diff --git a/metadata/md5-cache/dev-go/luci-tsmon-0.0.1 b/metadata/md5-cache/dev-go/luci-tsmon-0.0.1
deleted file mode 100644
index 0dc99d3..0000000
--- a/metadata/md5-cache/dev-go/luci-tsmon-0.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/luci-auth dev-go/luci-chromeinfra dev-go/luci-common dev-go/protobuf dev-lang/go
-DESCRIPTION=LUCI Go tsmon library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/luci-auth dev-go/luci-chromeinfra dev-go/luci-common dev-go/protobuf
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a700107f39d24c12f87e38a7b0fcf357
diff --git a/metadata/md5-cache/dev-go/luci-tsmon-0.0.1-r4 b/metadata/md5-cache/dev-go/luci-tsmon-0.0.1-r4
deleted file mode 100644
index 0dc99d3..0000000
--- a/metadata/md5-cache/dev-go/luci-tsmon-0.0.1-r4
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-go/luci-auth dev-go/luci-chromeinfra dev-go/luci-common dev-go/protobuf dev-lang/go
-DESCRIPTION=LUCI Go tsmon library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/infra/luci/luci-go/
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-go/luci-auth dev-go/luci-chromeinfra dev-go/luci-common dev-go/protobuf
-RESTRICT=binchecks test strip
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/infra/luci/luci-go/+archive/77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz -> chromium.googlesource.com-infra-luci-luci-go-77b23ce4c9189484e14035690f439c97f7629c2e.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a700107f39d24c12f87e38a7b0fcf357
diff --git a/metadata/md5-cache/dev-go/mod-0.3.0 b/metadata/md5-cache/dev-go/mod-0.3.0
new file mode 100644
index 0000000..27c3729
--- /dev/null
+++ b/metadata/md5-cache/dev-go/mod-0.3.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install nofetch postinst test unpack
+DEPEND=dev-go/xerrors dev-lang/go
+DESCRIPTION=packages for writing tools that work directly with Go module mechanics
+EAPI=7
+HOMEPAGE=https://golang.org/x/mod
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=dev-go/xerrors
+RESTRICT=binchecks strip
+SLOT=0
+SRC_URI=https://go.googlesource.com/mod/+archive/v0.3.0.tar.gz -> go.googlesource.com-mod-v0.3.0.tar.gz
+_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=31e899ac97f92a78bc7ea734296368e6
diff --git a/metadata/md5-cache/dev-go/mod-0.3.0-r1 b/metadata/md5-cache/dev-go/mod-0.3.0-r1
new file mode 100644
index 0000000..27c3729
--- /dev/null
+++ b/metadata/md5-cache/dev-go/mod-0.3.0-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install nofetch postinst test unpack
+DEPEND=dev-go/xerrors dev-lang/go
+DESCRIPTION=packages for writing tools that work directly with Go module mechanics
+EAPI=7
+HOMEPAGE=https://golang.org/x/mod
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=dev-go/xerrors
+RESTRICT=binchecks strip
+SLOT=0
+SRC_URI=https://go.googlesource.com/mod/+archive/v0.3.0.tar.gz -> go.googlesource.com-mod-v0.3.0.tar.gz
+_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=31e899ac97f92a78bc7ea734296368e6
diff --git a/metadata/md5-cache/dev-go/protobuf-1.25.0 b/metadata/md5-cache/dev-go/protobuf-1.25.0
new file mode 100644
index 0000000..738220b
--- /dev/null
+++ b/metadata/md5-cache/dev-go/protobuf-1.25.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install nofetch postinst test unpack
+DEPEND=dev-go/cmp test? ( dev-go/sync ) dev-lang/go
+DESCRIPTION=Go support for Google's protocol buffers
+EAPI=5
+HOMEPAGE=https://github.com/protocolbuffers/protobuf-go
+IUSE=test
+KEYWORDS=*
+LICENSE=BSD-Google
+RESTRICT=binchecks strip
+SLOT=0
+SRC_URI=https://github.com/golang/protobuf/archive/v1.3.2.tar.gz -> github.com-golang-protobuf-v1.3.2.tar.gz https://github.com/protocolbuffers/protobuf-go/archive/v1.25.0.tar.gz -> github.com-protocolbuffers-protobuf-go-v1.25.0.tar.gz
+_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=a0242efe46560ba7426993bc661db234
diff --git a/metadata/md5-cache/dev-go/protobuf-1.25.0-r1 b/metadata/md5-cache/dev-go/protobuf-1.25.0-r1
new file mode 100644
index 0000000..738220b
--- /dev/null
+++ b/metadata/md5-cache/dev-go/protobuf-1.25.0-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install nofetch postinst test unpack
+DEPEND=dev-go/cmp test? ( dev-go/sync ) dev-lang/go
+DESCRIPTION=Go support for Google's protocol buffers
+EAPI=5
+HOMEPAGE=https://github.com/protocolbuffers/protobuf-go
+IUSE=test
+KEYWORDS=*
+LICENSE=BSD-Google
+RESTRICT=binchecks strip
+SLOT=0
+SRC_URI=https://github.com/golang/protobuf/archive/v1.3.2.tar.gz -> github.com-golang-protobuf-v1.3.2.tar.gz https://github.com/protocolbuffers/protobuf-go/archive/v1.25.0.tar.gz -> github.com-protocolbuffers-protobuf-go-v1.25.0.tar.gz
+_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=a0242efe46560ba7426993bc661db234
diff --git a/metadata/md5-cache/dev-go/protobuf-1.3.2 b/metadata/md5-cache/dev-go/protobuf-1.3.2
deleted file mode 100644
index 58a0fad..0000000
--- a/metadata/md5-cache/dev-go/protobuf-1.3.2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=test? ( dev-go/sync ) dev-lang/go
-DESCRIPTION=Go support for Protocol Buffers
-EAPI=5
-HOMEPAGE=https://github.com/golang/protobuf
-IUSE=test
-KEYWORDS=*
-LICENSE=BSD-Google
-RESTRICT=binchecks strip
-SLOT=0
-SRC_URI=https://github.com/golang/protobuf/archive/v1.3.2.tar.gz -> github.com-golang-protobuf-v1.3.2.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2791c130f53d0d083b90abdbf0d4f329
diff --git a/metadata/md5-cache/dev-go/protobuf-1.3.2-r1 b/metadata/md5-cache/dev-go/protobuf-1.3.2-r1
deleted file mode 100644
index 58a0fad..0000000
--- a/metadata/md5-cache/dev-go/protobuf-1.3.2-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=test? ( dev-go/sync ) dev-lang/go
-DESCRIPTION=Go support for Protocol Buffers
-EAPI=5
-HOMEPAGE=https://github.com/golang/protobuf
-IUSE=test
-KEYWORDS=*
-LICENSE=BSD-Google
-RESTRICT=binchecks strip
-SLOT=0
-SRC_URI=https://github.com/golang/protobuf/archive/v1.3.2.tar.gz -> github.com-golang-protobuf-v1.3.2.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2791c130f53d0d083b90abdbf0d4f329
diff --git a/metadata/md5-cache/dev-go/seccomp-0.0.1-r6 b/metadata/md5-cache/dev-go/seccomp-0.0.1-r6
deleted file mode 100644
index 01f47db..0000000
--- a/metadata/md5-cache/dev-go/seccomp-0.0.1-r6
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst setup test unpack
-DEPEND=dev-lang/go
-DESCRIPTION=Go support for Chromium OS Seccomp-BPF policy files
-EAPI=7
-HOMEPAGE=https://chromium.org/chromium-os/developer-guide/chromium-os-sandboxing
-IUSE=cros_host cros_workon_tree_bcf6f36ae65231da8c65997c0427f6edf6cf8acb
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RESTRICT=binchecks strip
-SLOT=0/0.0.1-r6
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=eaadd06002a4fa4a9cf86847d9f6ca96
diff --git a/metadata/md5-cache/dev-go/seccomp-0.0.1-r7 b/metadata/md5-cache/dev-go/seccomp-0.0.1-r7
new file mode 100644
index 0000000..893681d
--- /dev/null
+++ b/metadata/md5-cache/dev-go/seccomp-0.0.1-r7
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=dev-lang/go
+DESCRIPTION=Go support for Chromium OS Seccomp-BPF policy files
+EAPI=7
+HOMEPAGE=https://chromium.org/chromium-os/developer-guide/chromium-os-sandboxing
+IUSE=cros_host cros_workon_tree_e5e0d0ca30d0ce803ca251a36026c0c2b6a47624
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RESTRICT=binchecks strip
+SLOT=0/0.0.1-r7
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6c1b242064f580e74298e68c4c572cdc
diff --git a/metadata/md5-cache/dev-go/seccomp-9999 b/metadata/md5-cache/dev-go/seccomp-9999
index 4fa6efa..e55ef9e 100644
--- a/metadata/md5-cache/dev-go/seccomp-9999
+++ b/metadata/md5-cache/dev-go/seccomp-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RESTRICT=binchecks strip
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=8ce6257e185b9c034b08a5200fef0467
diff --git a/metadata/md5-cache/dev-go/syzkaller-0.0.10 b/metadata/md5-cache/dev-go/syzkaller-0.0.10
new file mode 100644
index 0000000..ba3e0e9
--- /dev/null
+++ b/metadata/md5-cache/dev-go/syzkaller-0.0.10
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install nofetch postinst prepare test unpack
+DEPEND=dev-lang/go
+DESCRIPTION=Syzkaller kernel fuzzer
+EAPI=7
+HOMEPAGE=https://github.com/google/syzkaller
+KEYWORDS=*
+LICENSE=Apache-2.0
+SLOT=0
+SRC_URI=https://github.com/google/syzkaller/archive/8ee2dea687224e1e5759783abf5046d298bbe167.tar.gz -> github.com-google-syzkaller-8ee2dea687224e1e5759783abf5046d298bbe167.tar.gz
+_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e6c1eb2ecece174e22f2e255884610c3
diff --git a/metadata/md5-cache/dev-go/syzkaller-0.0.5 b/metadata/md5-cache/dev-go/syzkaller-0.0.5
deleted file mode 100644
index 54fdb0ba..0000000
--- a/metadata/md5-cache/dev-go/syzkaller-0.0.5
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst prepare test unpack
-DEPEND=dev-lang/go
-DESCRIPTION=Syzkaller kernel fuzzer
-EAPI=7
-HOMEPAGE=https://github.com/google/syzkaller
-KEYWORDS=*
-LICENSE=Apache-2.0
-SLOT=0
-SRC_URI=https://github.com/google/syzkaller/archive/1bf9a662c66aa432ff2fe3bf2562578cef626c09.tar.gz -> github.com-google-syzkaller-1bf9a662c66aa432ff2fe3bf2562578cef626c09.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a2d880223b4a472bafb4b09be3ac9aed
diff --git a/metadata/md5-cache/dev-go/xerrors-0.0.1 b/metadata/md5-cache/dev-go/xerrors-0.0.1
index ce822df..4ca4878 100644
--- a/metadata/md5-cache/dev-go/xerrors-0.0.1
+++ b/metadata/md5-cache/dev-go/xerrors-0.0.1
@@ -7,6 +7,6 @@
 LICENSE=BSD
 RESTRICT=binchecks strip
 SLOT=0
-SRC_URI=https://github.com/golang/xerrors/archive/d61658bd2e18010be0e21349cc92b1b706e35146.tar.gz -> github.com-golang-xerrors-d61658bd2e18010be0e21349cc92b1b706e35146.tar.gz
+SRC_URI=https://github.com/golang/xerrors/archive/1a77d5e9f316d6917d88a497ab4db07399cbc923.tar.gz -> github.com-golang-xerrors-1a77d5e9f316d6917d88a497ab4db07399cbc923.tar.gz
 _eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d374cc167d14bfe68649e58a2fc716bf
+_md5_=6fcbf90b76154fbe391ad76bd969854b
diff --git a/metadata/md5-cache/dev-go/xerrors-0.0.1-r1 b/metadata/md5-cache/dev-go/xerrors-0.0.1-r1
deleted file mode 100644
index ce822df..0000000
--- a/metadata/md5-cache/dev-go/xerrors-0.0.1-r1
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile install nofetch postinst test unpack
-DEPEND=dev-lang/go
-DESCRIPTION=This package supports transitioning to the Go 2 proposal for error values.
-EAPI=6
-HOMEPAGE=https://github.com/golang/xerrors
-KEYWORDS=*
-LICENSE=BSD
-RESTRICT=binchecks strip
-SLOT=0
-SRC_URI=https://github.com/golang/xerrors/archive/d61658bd2e18010be0e21349cc92b1b706e35146.tar.gz -> github.com-golang-xerrors-d61658bd2e18010be0e21349cc92b1b706e35146.tar.gz
-_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d374cc167d14bfe68649e58a2fc716bf
diff --git a/metadata/md5-cache/dev-go/xerrors-0.0.1-r2 b/metadata/md5-cache/dev-go/xerrors-0.0.1-r2
new file mode 100644
index 0000000..4ca4878
--- /dev/null
+++ b/metadata/md5-cache/dev-go/xerrors-0.0.1-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile install nofetch postinst test unpack
+DEPEND=dev-lang/go
+DESCRIPTION=This package supports transitioning to the Go 2 proposal for error values.
+EAPI=6
+HOMEPAGE=https://github.com/golang/xerrors
+KEYWORDS=*
+LICENSE=BSD
+RESTRICT=binchecks strip
+SLOT=0
+SRC_URI=https://github.com/golang/xerrors/archive/1a77d5e9f316d6917d88a497ab4db07399cbc923.tar.gz -> github.com-golang-xerrors-1a77d5e9f316d6917d88a497ab4db07399cbc923.tar.gz
+_eclasses_=cros-go	157c7bac0e032e424ec1c3316c127db8	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=6fcbf90b76154fbe391ad76bd969854b
diff --git a/metadata/md5-cache/dev-haskell/aeson-1.4.6.0 b/metadata/md5-cache/dev-haskell/aeson-1.4.6.0
index 71b0dd5..36a860b 100644
--- a/metadata/md5-cache/dev-haskell/aeson-1.4.6.0
+++ b/metadata/md5-cache/dev-haskell/aeson-1.4.6.0
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/1.4.6.0
 SRC_URI=mirror://hackage/packages/archive/aeson/1.4.6.0/aeson-1.4.6.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=47b18574e1752fcb561c56cf331770fb
diff --git a/metadata/md5-cache/dev-haskell/attoparsec-0.13.2.3 b/metadata/md5-cache/dev-haskell/attoparsec-0.13.2.3
index 1738dd5..8f32c5f 100644
--- a/metadata/md5-cache/dev-haskell/attoparsec-0.13.2.3
+++ b/metadata/md5-cache/dev-haskell/attoparsec-0.13.2.3
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/0.13.2.3
 SRC_URI=mirror://hackage/packages/archive/attoparsec/0.13.2.3/attoparsec-0.13.2.3.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=31f1958dce62433c54652e0fd26e80df
diff --git a/metadata/md5-cache/dev-haskell/base-orphans-0.8.1 b/metadata/md5-cache/dev-haskell/base-orphans-0.8.1
index 2617da7..1dbbb78 100644
--- a/metadata/md5-cache/dev-haskell/base-orphans-0.8.1
+++ b/metadata/md5-cache/dev-haskell/base-orphans-0.8.1
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/0.8.1
 SRC_URI=mirror://hackage/packages/archive/base-orphans/0.8.1/base-orphans-0.8.1.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=2b25dfbca8e43a2e635360eff43d0d0b
diff --git a/metadata/md5-cache/dev-haskell/cabal-1.24.2.0 b/metadata/md5-cache/dev-haskell/cabal-1.24.2.0
index 8684e14..a39bd4f 100644
--- a/metadata/md5-cache/dev-haskell/cabal-1.24.2.0
+++ b/metadata/md5-cache/dev-haskell/cabal-1.24.2.0
@@ -10,5 +10,5 @@
 RESTRICT=test
 SLOT=0/1.24.2.0
 SRC_URI=mirror://hackage/packages/archive/Cabal/1.24.2.0/Cabal-1.24.2.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b6acc3768eb3ef6b8ea1f572006d5470
diff --git a/metadata/md5-cache/dev-haskell/cabal-2.0.0.2 b/metadata/md5-cache/dev-haskell/cabal-2.0.0.2
index 4ee86f5..ae6d431 100644
--- a/metadata/md5-cache/dev-haskell/cabal-2.0.0.2
+++ b/metadata/md5-cache/dev-haskell/cabal-2.0.0.2
@@ -10,5 +10,5 @@
 RESTRICT=test
 SLOT=0/2.0.0.2
 SRC_URI=https://hackage.haskell.org/package/Cabal-2.0.0.2/Cabal-2.0.0.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f84293787a1fe3abc58f3df2d1f5260f
diff --git a/metadata/md5-cache/dev-haskell/cabal-2.2.0.1 b/metadata/md5-cache/dev-haskell/cabal-2.2.0.1
index 682c245..19f0794 100644
--- a/metadata/md5-cache/dev-haskell/cabal-2.2.0.1
+++ b/metadata/md5-cache/dev-haskell/cabal-2.2.0.1
@@ -10,5 +10,5 @@
 RESTRICT=test
 SLOT=0/2.2.0.1
 SRC_URI=mirror://hackage/packages/archive/Cabal/2.2.0.1/Cabal-2.2.0.1.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=d97a9ee8bd61374f0e25d4142b9e4494
diff --git a/metadata/md5-cache/dev-haskell/cabal-2.4.0.1 b/metadata/md5-cache/dev-haskell/cabal-2.4.0.1
index b5b71d7..8c75066 100644
--- a/metadata/md5-cache/dev-haskell/cabal-2.4.0.1
+++ b/metadata/md5-cache/dev-haskell/cabal-2.4.0.1
@@ -10,5 +10,5 @@
 RESTRICT=test
 SLOT=0/2.4.0.1
 SRC_URI=https://hackage.haskell.org/package/Cabal-2.4.0.1/Cabal-2.4.0.1.tar.gz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=978ff80b4f399050e39816c61a87d3df
diff --git a/metadata/md5-cache/dev-haskell/contravariant-1.5.2 b/metadata/md5-cache/dev-haskell/contravariant-1.5.2
index 573b721..da835e9 100644
--- a/metadata/md5-cache/dev-haskell/contravariant-1.5.2
+++ b/metadata/md5-cache/dev-haskell/contravariant-1.5.2
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-haskell/transformers-0.2:=[profile?] <dev-haskell/transformers-0.6:=[profile?] >=dev-haskell/transformers-compat-0.3:=[profile?] <dev-haskell/transformers-compat-1:=[profile?] >=dev-haskell/void-0.6:=[profile?] <dev-haskell/void-1:=[profile?] >=dev-lang/ghc-7.4.1:= semigroups? ( >=dev-haskell/semigroups-0.15.2:=[profile?] <dev-haskell/semigroups-1:=[profile?] ) statevar? ( >=dev-haskell/statevar-1.1:=[profile?] <dev-haskell/statevar-1.3:=[profile?] ) tagged? ( >=dev-haskell/tagged-0.4.4:=[profile?] <dev-haskell/tagged-1:=[profile?] )
 SLOT=0/1.5.2
 SRC_URI=mirror://hackage/packages/archive/contravariant/1.5.2/contravariant-1.5.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e225e95220bc4cc9abd9d162e4165c6f
diff --git a/metadata/md5-cache/dev-haskell/dlist-0.8.0.7 b/metadata/md5-cache/dev-haskell/dlist-0.8.0.7
index 9dece6eb..f903f71 100644
--- a/metadata/md5-cache/dev-haskell/dlist-0.8.0.7
+++ b/metadata/md5-cache/dev-haskell/dlist-0.8.0.7
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/0.8.0.7
 SRC_URI=mirror://hackage/packages/archive/dlist/0.8.0.7/dlist-0.8.0.7.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a0c7c078fb0ea6cebaa8aef5206a5671
diff --git a/metadata/md5-cache/dev-haskell/hashable-1.3.0.0 b/metadata/md5-cache/dev-haskell/hashable-1.3.0.0
index f672e98..26174ca 100644
--- a/metadata/md5-cache/dev-haskell/hashable-1.3.0.0
+++ b/metadata/md5-cache/dev-haskell/hashable-1.3.0.0
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/1.3.0.0
 SRC_URI=mirror://hackage/packages/archive/hashable/1.3.0.0/hashable-1.3.0.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=083af3cbd4745f030d1841d2179ec55c
diff --git a/metadata/md5-cache/dev-haskell/hashable-time-0.2.0.2 b/metadata/md5-cache/dev-haskell/hashable-time-0.2.0.2
index 267fae7..683f2d6 100644
--- a/metadata/md5-cache/dev-haskell/hashable-time-0.2.0.2
+++ b/metadata/md5-cache/dev-haskell/hashable-time-0.2.0.2
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-haskell/hashable-1.2.3.3:=[profile?] >=dev-haskell/old-locale-1.0:=[profile?] <dev-haskell/old-locale-1.1:=[profile?] >=dev-lang/ghc-7.8.2:=
 SLOT=0/0.2.0.2
 SRC_URI=mirror://hackage/packages/archive/hashable-time/0.2.0.2/hashable-time-0.2.0.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fcb18b8e6ebd476e6736f730a204bbda
diff --git a/metadata/md5-cache/dev-haskell/integer-logarithms-1.0.3 b/metadata/md5-cache/dev-haskell/integer-logarithms-1.0.3
index b6adf6e..298bcf3 100644
--- a/metadata/md5-cache/dev-haskell/integer-logarithms-1.0.3
+++ b/metadata/md5-cache/dev-haskell/integer-logarithms-1.0.3
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/1.0.3
 SRC_URI=mirror://hackage/packages/archive/integer-logarithms/1.0.3/integer-logarithms-1.0.3.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6da650c07905ba3b16b9097e0cfc9a59
diff --git a/metadata/md5-cache/dev-haskell/nats-1.1.2 b/metadata/md5-cache/dev-haskell/nats-1.1.2
index c80e574..b9292d4 100644
--- a/metadata/md5-cache/dev-haskell/nats-1.1.2
+++ b/metadata/md5-cache/dev-haskell/nats-1.1.2
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-lang/ghc-7.4.1:= hashable? ( >=dev-haskell/hashable-1.1:=[profile?] <dev-haskell/hashable-1.4:=[profile?] )
 SLOT=0/1.1.2
 SRC_URI=mirror://hackage/packages/archive/nats/1.1.2/nats-1.1.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=2516612db1d3584b2344d0e455b06867
diff --git a/metadata/md5-cache/dev-haskell/old-time-1.1.0.3-r1 b/metadata/md5-cache/dev-haskell/old-time-1.1.0.3-r1
index 1f66ce2..76df34f 100644
--- a/metadata/md5-cache/dev-haskell/old-time-1.1.0.3-r1
+++ b/metadata/md5-cache/dev-haskell/old-time-1.1.0.3-r1
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-haskell/old-locale-1.0:=[profile?] <dev-haskell/old-locale-1.1:=[profile?] >=dev-lang/ghc-7.4.1:=
 SLOT=0/1.1.0.3
 SRC_URI=https://hackage.haskell.org/package/old-time-1.1.0.3/old-time-1.1.0.3.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=49907f84a24c9a8cee0398bd375b9e8f
diff --git a/metadata/md5-cache/dev-haskell/parsec-3.1.14.0 b/metadata/md5-cache/dev-haskell/parsec-3.1.14.0
index 4178440..36f3730 100644
--- a/metadata/md5-cache/dev-haskell/parsec-3.1.14.0
+++ b/metadata/md5-cache/dev-haskell/parsec-3.1.14.0
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/3.1.14.0
 SRC_URI=mirror://hackage/packages/archive/parsec/3.1.14.0/parsec-3.1.14.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=60503bf344eca2d71c48fd2ca460c5a8
diff --git a/metadata/md5-cache/dev-haskell/primitive-0.7.0.0 b/metadata/md5-cache/dev-haskell/primitive-0.7.0.0
index 43d69ea..3d2a9c2 100644
--- a/metadata/md5-cache/dev-haskell/primitive-0.7.0.0
+++ b/metadata/md5-cache/dev-haskell/primitive-0.7.0.0
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-lang/ghc-6.10.4:=
 SLOT=0/0.7.0.0
 SRC_URI=mirror://hackage/packages/archive/primitive/0.7.0.0/primitive-0.7.0.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=c252e9c0668509b3efa2755003849867
diff --git a/metadata/md5-cache/dev-haskell/regex-tdfa-1.3.0 b/metadata/md5-cache/dev-haskell/regex-tdfa-1.3.0
index 16d58dc..8002fd7 100644
--- a/metadata/md5-cache/dev-haskell/regex-tdfa-1.3.0
+++ b/metadata/md5-cache/dev-haskell/regex-tdfa-1.3.0
@@ -9,5 +9,5 @@
 RDEPEND=dev-haskell/mtl:=[profile?] dev-haskell/parsec:=[profile?] >=dev-haskell/regex-base-0.93.1:=[profile?] >=dev-lang/ghc-7.4.1:=
 SLOT=0/1.3.0
 SRC_URI=mirror://hackage/packages/archive/regex-tdfa/1.3.0/regex-tdfa-1.3.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e529eae28c2216a70486d77982ca6d03
diff --git a/metadata/md5-cache/dev-haskell/scientific-0.3.6.2 b/metadata/md5-cache/dev-haskell/scientific-0.3.6.2
index e55a2c7..984de21 100644
--- a/metadata/md5-cache/dev-haskell/scientific-0.3.6.2
+++ b/metadata/md5-cache/dev-haskell/scientific-0.3.6.2
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/0.3.6.2
 SRC_URI=mirror://hackage/packages/archive/scientific/0.3.6.2/scientific-0.3.6.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=34e702ae4f2c80e4018ad2370584d088
diff --git a/metadata/md5-cache/dev-haskell/semigroups-0.19.1 b/metadata/md5-cache/dev-haskell/semigroups-0.19.1
index 11bab59..cb89748 100644
--- a/metadata/md5-cache/dev-haskell/semigroups-0.19.1
+++ b/metadata/md5-cache/dev-haskell/semigroups-0.19.1
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-haskell/bytestring-builder-0.10.4:=[profile?] <dev-haskell/bytestring-builder-1:=[profile?] >=dev-haskell/hashable-1.1:=[profile?] <dev-haskell/hashable-1.4:=[profile?] >=dev-haskell/nats-0.1:=[profile?] <dev-haskell/nats-2:=[profile?] >=dev-haskell/tagged-0.4.4:=[profile?] <dev-haskell/tagged-1:=[profile?] >=dev-haskell/text-0.10:=[profile?] <dev-haskell/text-2:=[profile?] >=dev-haskell/unordered-containers-0.2:=[profile?] <dev-haskell/unordered-containers-0.3:=[profile?] >=dev-lang/ghc-7.4.1:= binary? ( dev-haskell/binary:=[profile?] ) transformers? ( >=dev-haskell/transformers-0.2:=[profile?] <dev-haskell/transformers-0.6:=[profile?] )
 SLOT=0/0.19.1
 SRC_URI=mirror://hackage/packages/archive/semigroups/0.19.1/semigroups-0.19.1.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b3bc8a79678d122a39ef817e254f21ed
diff --git a/metadata/md5-cache/dev-haskell/statevar-1.2 b/metadata/md5-cache/dev-haskell/statevar-1.2
index ee07007..ffbebb2 100644
--- a/metadata/md5-cache/dev-haskell/statevar-1.2
+++ b/metadata/md5-cache/dev-haskell/statevar-1.2
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-haskell/stm-2.0:=[profile?] <dev-haskell/stm-2.6:=[profile?] >=dev-haskell/transformers-0.2:=[profile?] <dev-haskell/transformers-0.6:=[profile?] >=dev-lang/ghc-7.4.1:=
 SLOT=0/1.2
 SRC_URI=mirror://hackage/packages/archive/StateVar/1.2/StateVar-1.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=316ee608d530e758ca56d4ee47a2ee2f
diff --git a/metadata/md5-cache/dev-haskell/stm-2.5.0.0 b/metadata/md5-cache/dev-haskell/stm-2.5.0.0
index e0b443f..0d0fd42 100644
--- a/metadata/md5-cache/dev-haskell/stm-2.5.0.0
+++ b/metadata/md5-cache/dev-haskell/stm-2.5.0.0
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-lang/ghc-7.4.1:=
 SLOT=0/2.5.0.0
 SRC_URI=mirror://hackage/packages/archive/stm/2.5.0.0/stm-2.5.0.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=4ef4f1b3ab4555b02b7d2fcc446de5ff
diff --git a/metadata/md5-cache/dev-haskell/tagged-0.8.6 b/metadata/md5-cache/dev-haskell/tagged-0.8.6
index c7b7812..d189d64 100644
--- a/metadata/md5-cache/dev-haskell/tagged-0.8.6
+++ b/metadata/md5-cache/dev-haskell/tagged-0.8.6
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-lang/ghc-7.4.1:=
 SLOT=0/0.8.6
 SRC_URI=mirror://hackage/packages/archive/tagged/0.8.6/tagged-0.8.6.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=0cf27210fd49981396913d428f74c190
diff --git a/metadata/md5-cache/dev-haskell/text-1.2.4.0 b/metadata/md5-cache/dev-haskell/text-1.2.4.0
index 4cf9515..64a961b 100644
--- a/metadata/md5-cache/dev-haskell/text-1.2.4.0
+++ b/metadata/md5-cache/dev-haskell/text-1.2.4.0
@@ -10,5 +10,5 @@
 RESTRICT=test
 SLOT=0/1.2.4.0
 SRC_URI=mirror://hackage/packages/archive/text/1.2.4.0/text-1.2.4.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=7157dad65ee185b7c9b031c624ab045f
diff --git a/metadata/md5-cache/dev-haskell/tf-random-0.5 b/metadata/md5-cache/dev-haskell/tf-random-0.5
index 838600a..8fbad89 100644
--- a/metadata/md5-cache/dev-haskell/tf-random-0.5
+++ b/metadata/md5-cache/dev-haskell/tf-random-0.5
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-haskell/primitive-0.3:=[profile?] dev-haskell/random:=[profile?] >=dev-lang/ghc-7.4.1:=
 SLOT=0/0.5
 SRC_URI=mirror://hackage/packages/archive/tf-random/0.5/tf-random-0.5.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b1342b25d8248853e5f17e1b1a76e935
diff --git a/metadata/md5-cache/dev-haskell/th-abstraction-0.3.1.0 b/metadata/md5-cache/dev-haskell/th-abstraction-0.3.1.0
index 5f6fe45..893476c 100644
--- a/metadata/md5-cache/dev-haskell/th-abstraction-0.3.1.0
+++ b/metadata/md5-cache/dev-haskell/th-abstraction-0.3.1.0
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/0.3.1.0
 SRC_URI=mirror://hackage/packages/archive/th-abstraction/0.3.1.0/th-abstraction-0.3.1.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=422b6841d4e6476584db48b0b5cd194e
diff --git a/metadata/md5-cache/dev-haskell/time-compat-1.9.2.2 b/metadata/md5-cache/dev-haskell/time-compat-1.9.2.2
index 94b416d..3b410a3 100644
--- a/metadata/md5-cache/dev-haskell/time-compat-1.9.2.2
+++ b/metadata/md5-cache/dev-haskell/time-compat-1.9.2.2
@@ -9,5 +9,5 @@
 RDEPEND=dev-haskell/old-time:=[profile?] >=dev-haskell/base-orphans-0.8.1:=[profile?] <dev-haskell/base-orphans-0.9:=[profile?] >=dev-lang/ghc-7.4.1:=
 SLOT=0/1.9.2.2
 SRC_URI=mirror://hackage/packages/archive/time-compat/1.9.2.2/time-compat-1.9.2.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=4a91d0d7d1ec1ac55662cb18b0b9eb33
diff --git a/metadata/md5-cache/dev-haskell/transformers-0.5.6.2 b/metadata/md5-cache/dev-haskell/transformers-0.5.6.2
index 731ee67..5586ab6 100644
--- a/metadata/md5-cache/dev-haskell/transformers-0.5.6.2
+++ b/metadata/md5-cache/dev-haskell/transformers-0.5.6.2
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-lang/ghc-7.4.1:=
 SLOT=0/0.5.6.2
 SRC_URI=mirror://hackage/packages/archive/transformers/0.5.6.2/transformers-0.5.6.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=246af7e55ccd8c115a277283a3b7a02c
diff --git a/metadata/md5-cache/dev-haskell/unordered-containers-0.2.10.0 b/metadata/md5-cache/dev-haskell/unordered-containers-0.2.10.0
index 3f49902..8bc4081 100644
--- a/metadata/md5-cache/dev-haskell/unordered-containers-0.2.10.0
+++ b/metadata/md5-cache/dev-haskell/unordered-containers-0.2.10.0
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/0.2.10.0
 SRC_URI=mirror://hackage/packages/archive/unordered-containers/0.2.10.0/unordered-containers-0.2.10.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f88ad21b25bbd7cc5859dd9c9d372605
diff --git a/metadata/md5-cache/dev-haskell/uuid-types-1.0.3 b/metadata/md5-cache/dev-haskell/uuid-types-1.0.3
index d6e4ead..7029420 100644
--- a/metadata/md5-cache/dev-haskell/uuid-types-1.0.3
+++ b/metadata/md5-cache/dev-haskell/uuid-types-1.0.3
@@ -10,5 +10,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/1.0.3
 SRC_URI=https://hackage.haskell.org/package/uuid-types-1.0.3/uuid-types-1.0.3.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=67ea7396b58cbdb6eabd95cebeb0cc86
diff --git a/metadata/md5-cache/dev-haskell/vector-0.12.0.3 b/metadata/md5-cache/dev-haskell/vector-0.12.0.3
index 86cb48d..11c0938 100644
--- a/metadata/md5-cache/dev-haskell/vector-0.12.0.3
+++ b/metadata/md5-cache/dev-haskell/vector-0.12.0.3
@@ -10,5 +10,5 @@
 RESTRICT=test
 SLOT=0/0.12.0.3
 SRC_URI=mirror://hackage/packages/archive/vector/0.12.0.3/vector-0.12.0.3.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e0692e6c2277c6f24ba4d13c26ab7f9b
diff --git a/metadata/md5-cache/dev-haskell/void-0.7.3 b/metadata/md5-cache/dev-haskell/void-0.7.3
index 1d79e7b..7c40796 100644
--- a/metadata/md5-cache/dev-haskell/void-0.7.3
+++ b/metadata/md5-cache/dev-haskell/void-0.7.3
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-haskell/hashable-1.1:=[profile?] >=dev-haskell/semigroups-0.8.2:=[profile?] >=dev-lang/ghc-7.4.1:=
 SLOT=0/0.7.3
 SRC_URI=mirror://hackage/packages/archive/void/0.7.3/void-0.7.3.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f768ebddf2f0de30f1bb6c8a6295a1ef
diff --git a/metadata/md5-cache/dev-lang/ghc-8.6.5 b/metadata/md5-cache/dev-lang/ghc-8.6.5
index d565356..3a61ce1 100644
--- a/metadata/md5-cache/dev-lang/ghc-8.6.5
+++ b/metadata/md5-cache/dev-lang/ghc-8.6.5
@@ -12,5 +12,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/8.6.5
 SRC_URI=!binary? ( https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-src.tar.xz test? ( https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-testsuite.tar.xz ) ) !ghcbootstrap? ( amd64? ( https://slyfox.uni.cx/~slyfox/distfiles/ghc-bin-8.4.3-x86_64-pc-linux-gnu.tbz2 ) ppc64? ( !big-endian? ( https://slyfox.uni.cx/~slyfox/distfiles/ghc-bin-8.6.5-powerpc64le-unknown-linux-gnu.tbz2 ) ) x86? ( https://slyfox.uni.cx/~slyfox/distfiles/ghc-bin-8.6.5-i686-pc-linux-gnu.tbz2 ) )
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	check-reqs	74c98e9a7b34b32be3548357852e9ec3	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	pax-utils	3551398d6ede2b572568832730cc2a45	prefix	e51c7882b7b721e54e684f7eb143cbfe	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	check-reqs	74c98e9a7b34b32be3548357852e9ec3	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	pax-utils	3551398d6ede2b572568832730cc2a45	prefix	e51c7882b7b721e54e684f7eb143cbfe	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
 _md5_=1ed9e4c2847d1ad30eae245994e215e2
diff --git a/metadata/md5-cache/dev-lang/ghc-8.6.5-r1 b/metadata/md5-cache/dev-lang/ghc-8.6.5-r1
index d565356..3a61ce1 100644
--- a/metadata/md5-cache/dev-lang/ghc-8.6.5-r1
+++ b/metadata/md5-cache/dev-lang/ghc-8.6.5-r1
@@ -12,5 +12,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/8.6.5
 SRC_URI=!binary? ( https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-src.tar.xz test? ( https://downloads.haskell.org/~ghc/8.6.5/ghc-8.6.5-testsuite.tar.xz ) ) !ghcbootstrap? ( amd64? ( https://slyfox.uni.cx/~slyfox/distfiles/ghc-bin-8.4.3-x86_64-pc-linux-gnu.tbz2 ) ppc64? ( !big-endian? ( https://slyfox.uni.cx/~slyfox/distfiles/ghc-bin-8.6.5-powerpc64le-unknown-linux-gnu.tbz2 ) ) x86? ( https://slyfox.uni.cx/~slyfox/distfiles/ghc-bin-8.6.5-i686-pc-linux-gnu.tbz2 ) )
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	check-reqs	74c98e9a7b34b32be3548357852e9ec3	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	pax-utils	3551398d6ede2b572568832730cc2a45	prefix	e51c7882b7b721e54e684f7eb143cbfe	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	check-reqs	74c98e9a7b34b32be3548357852e9ec3	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	pax-utils	3551398d6ede2b572568832730cc2a45	prefix	e51c7882b7b721e54e684f7eb143cbfe	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
 _md5_=1ed9e4c2847d1ad30eae245994e215e2
diff --git a/metadata/md5-cache/dev-lang/go-1.13.5 b/metadata/md5-cache/dev-lang/go-1.13.5
deleted file mode 100644
index ffb4caa..0000000
--- a/metadata/md5-cache/dev-lang/go-1.13.5
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install unpack
-DESCRIPTION=An expressive, concurrent, garbage-collected programming language
-EAPI=5
-HOMEPAGE=http://golang.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RESTRICT=binchecks strip
-SLOT=0
-SRC_URI=https://storage.googleapis.com/golang/go1.13.5.src.tar.gz https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=46c6ca2bcb15b6acaf6696d4d7f5ca8f
diff --git a/metadata/md5-cache/dev-lang/go-1.13.5-r1 b/metadata/md5-cache/dev-lang/go-1.13.5-r1
deleted file mode 100644
index ffb4caa..0000000
--- a/metadata/md5-cache/dev-lang/go-1.13.5-r1
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install unpack
-DESCRIPTION=An expressive, concurrent, garbage-collected programming language
-EAPI=5
-HOMEPAGE=http://golang.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RESTRICT=binchecks strip
-SLOT=0
-SRC_URI=https://storage.googleapis.com/golang/go1.13.5.src.tar.gz https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=46c6ca2bcb15b6acaf6696d4d7f5ca8f
diff --git a/metadata/md5-cache/dev-lang/go-1.15.7 b/metadata/md5-cache/dev-lang/go-1.15.7
new file mode 100644
index 0000000..f876e58
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/go-1.15.7
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install unpack
+DESCRIPTION=An expressive, concurrent, garbage-collected programming language
+EAPI=5
+HOMEPAGE=http://golang.org/
+KEYWORDS=*
+LICENSE=BSD-Google
+RESTRICT=binchecks strip
+SLOT=0
+SRC_URI=https://storage.googleapis.com/golang/go1.15.7.src.tar.gz https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=9a48b7b8dcf89ee0139f5a759ee7f900
diff --git a/metadata/md5-cache/dev-lang/go-1.15.7-r2 b/metadata/md5-cache/dev-lang/go-1.15.7-r2
new file mode 100644
index 0000000..f876e58
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/go-1.15.7-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install unpack
+DESCRIPTION=An expressive, concurrent, garbage-collected programming language
+EAPI=5
+HOMEPAGE=http://golang.org/
+KEYWORDS=*
+LICENSE=BSD-Google
+RESTRICT=binchecks strip
+SLOT=0
+SRC_URI=https://storage.googleapis.com/golang/go1.15.7.src.tar.gz https://storage.googleapis.com/golang/go1.4-bootstrap-20170531.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=9a48b7b8dcf89ee0139f5a759ee7f900
diff --git a/metadata/md5-cache/dev-lang/python-2.7.15 b/metadata/md5-cache/dev-lang/python-2.7.15
index e9da11f..da74b24 100644
--- a/metadata/md5-cache/dev-lang/python-2.7.15
+++ b/metadata/md5-cache/dev-lang/python-2.7.15
@@ -1,4 +1,4 @@
-DEFINED_PHASES=compile configure install postinst postrm prepare setup test
+DEFINED_PHASES=compile configure install postinst prepare setup test
 DEPEND=app-arch/bzip2:0= >=sys-libs/zlib-1.1.3:0= virtual/libffi:= virtual/libintl berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 sys-libs/db:4.4 sys-libs/db:4.3 sys-libs/db:4.2 ) ) gdbm? ( sys-libs/gdbm:0=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:0= ) readline? ( >=sys-libs/readline-4.1:0= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tk? ( >=dev-lang/tcl-8.0:0= >=dev-lang/tk-8.0:0= dev-tcltk/blt:0= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1 ) !!<sys-apps/portage-2.1.9 bluetooth? ( net-wireless/bluez ) virtual/pkgconfig >=sys-devel/autoconf-2.65 !sys-devel/gcc[libffi(-)] >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69
 DESCRIPTION=An interpreted, interactive, object-oriented programming language
 EAPI=5
@@ -11,5 +11,5 @@
 REQUIRED_USE=pgo_generate? ( !pgo_use )
 SLOT=2.7
 SRC_URI=https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz https://dev.gentoo.org/~floppym/python/python-gentoo-patches-2.7.15.tar.xz pgo_use? ( gs://chromeos-localmirror/distfiles/python-2.7.15-pgo-prof.profdata.tar.xz )
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5cefb591260f9002902d2c58d9173b81
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=cc87f9697da95097009880325303f2a3
diff --git a/metadata/md5-cache/dev-lang/python-2.7.15-r5 b/metadata/md5-cache/dev-lang/python-2.7.15-r5
deleted file mode 100644
index e9da11f..0000000
--- a/metadata/md5-cache/dev-lang/python-2.7.15-r5
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install postinst postrm prepare setup test
-DEPEND=app-arch/bzip2:0= >=sys-libs/zlib-1.1.3:0= virtual/libffi:= virtual/libintl berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 sys-libs/db:4.4 sys-libs/db:4.3 sys-libs/db:4.2 ) ) gdbm? ( sys-libs/gdbm:0=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:0= ) readline? ( >=sys-libs/readline-4.1:0= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tk? ( >=dev-lang/tcl-8.0:0= >=dev-lang/tk-8.0:0= dev-tcltk/blt:0= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1 ) !!<sys-apps/portage-2.1.9 bluetooth? ( net-wireless/bluez ) virtual/pkgconfig >=sys-devel/autoconf-2.65 !sys-devel/gcc[libffi(-)] >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69
-DESCRIPTION=An interpreted, interactive, object-oriented programming language
-EAPI=5
-HOMEPAGE=https://www.python.org/
-IUSE=-berkdb bluetooth build doc elibc_uclibc examples gdbm hardened ipv6 pgo_generate +pgo_use libressl +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml
-KEYWORDS=*
-LICENSE=PSF-2
-PDEPEND=>=app-eselect/eselect-python-20140125-r1
-RDEPEND=app-arch/bzip2:0= >=sys-libs/zlib-1.1.3:0= virtual/libffi:= virtual/libintl berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 sys-libs/db:4.4 sys-libs/db:4.3 sys-libs/db:4.2 ) ) gdbm? ( sys-libs/gdbm:0=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:0= ) readline? ( >=sys-libs/readline-4.1:0= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tk? ( >=dev-lang/tcl-8.0:0= >=dev-lang/tk-8.0:0= dev-tcltk/blt:0= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1 ) !!<sys-apps/portage-2.1.9 !build? ( app-misc/mime-types ) doc? ( dev-python/python-docs:2.7 )
-REQUIRED_USE=pgo_generate? ( !pgo_use )
-SLOT=2.7
-SRC_URI=https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz https://dev.gentoo.org/~floppym/python/python-gentoo-patches-2.7.15.tar.xz pgo_use? ( gs://chromeos-localmirror/distfiles/python-2.7.15-pgo-prof.profdata.tar.xz )
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5cefb591260f9002902d2c58d9173b81
diff --git a/metadata/md5-cache/dev-lang/python-2.7.15-r9 b/metadata/md5-cache/dev-lang/python-2.7.15-r9
new file mode 100644
index 0000000..da74b24
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/python-2.7.15-r9
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=app-arch/bzip2:0= >=sys-libs/zlib-1.1.3:0= virtual/libffi:= virtual/libintl berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 sys-libs/db:4.4 sys-libs/db:4.3 sys-libs/db:4.2 ) ) gdbm? ( sys-libs/gdbm:0=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:0= ) readline? ( >=sys-libs/readline-4.1:0= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tk? ( >=dev-lang/tcl-8.0:0= >=dev-lang/tk-8.0:0= dev-tcltk/blt:0= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1 ) !!<sys-apps/portage-2.1.9 bluetooth? ( net-wireless/bluez ) virtual/pkgconfig >=sys-devel/autoconf-2.65 !sys-devel/gcc[libffi(-)] >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69
+DESCRIPTION=An interpreted, interactive, object-oriented programming language
+EAPI=5
+HOMEPAGE=https://www.python.org/
+IUSE=-berkdb bluetooth build doc elibc_uclibc examples gdbm hardened ipv6 pgo_generate +pgo_use libressl +ncurses +readline sqlite +ssl +threads tk +wide-unicode wininst +xml
+KEYWORDS=*
+LICENSE=PSF-2
+PDEPEND=>=app-eselect/eselect-python-20140125-r1
+RDEPEND=app-arch/bzip2:0= >=sys-libs/zlib-1.1.3:0= virtual/libffi:= virtual/libintl berkdb? ( || ( sys-libs/db:5.3 sys-libs/db:5.1 sys-libs/db:4.8 sys-libs/db:4.7 sys-libs/db:4.6 sys-libs/db:4.5 sys-libs/db:4.4 sys-libs/db:4.3 sys-libs/db:4.2 ) ) gdbm? ( sys-libs/gdbm:0=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:0= ) readline? ( >=sys-libs/readline-4.1:0= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tk? ( >=dev-lang/tcl-8.0:0= >=dev-lang/tk-8.0:0= dev-tcltk/blt:0= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1 ) !!<sys-apps/portage-2.1.9 !build? ( app-misc/mime-types ) doc? ( dev-python/python-docs:2.7 )
+REQUIRED_USE=pgo_generate? ( !pgo_use )
+SLOT=2.7
+SRC_URI=https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz https://dev.gentoo.org/~floppym/python/python-gentoo-patches-2.7.15.tar.xz pgo_use? ( gs://chromeos-localmirror/distfiles/python-2.7.15-pgo-prof.profdata.tar.xz )
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=cc87f9697da95097009880325303f2a3
diff --git a/metadata/md5-cache/dev-lang/python-3.6.12 b/metadata/md5-cache/dev-lang/python-3.6.12
new file mode 100644
index 0000000..4836ff7
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/python-3.6.12
@@ -0,0 +1,17 @@
+BDEPEND=>=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure install postinst postrm preinst prepare test
+DEPEND=app-arch/bzip2:= app-arch/xz-utils:= dev-libs/libffi:= >=sys-libs/zlib-1.1.3:= virtual/libcrypt:= virtual/libintl gdbm? ( sys-libs/gdbm:=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:= ) readline? ( >=sys-libs/readline-4.1:= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:= ) libressl? ( dev-libs/libressl:= ) ) tk? ( >=dev-lang/tcl-8.0:= >=dev-lang/tk-8.0:= dev-tcltk/blt:= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1:= ) bluetooth? ( net-wireless/bluez ) test? ( app-arch/xz-utils[extra-filters(+)] ) virtual/pkgconfig !sys-devel/gcc[libffi(-)] !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69
+DESCRIPTION=An interpreted, interactive, object-oriented programming language
+EAPI=7
+HOMEPAGE=https://www.python.org/
+IUSE=bluetooth build examples gdbm hardened ipv6 libressl +ncurses +readline sqlite +ssl test +threads tk wininst +xml pgo_generate +pgo_use
+KEYWORDS=*
+LICENSE=PSF-2
+PDEPEND=>=app-eselect/eselect-python-20140125-r1
+RDEPEND=app-arch/bzip2:= app-arch/xz-utils:= dev-libs/libffi:= >=sys-libs/zlib-1.1.3:= virtual/libcrypt:= virtual/libintl gdbm? ( sys-libs/gdbm:=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:= ) readline? ( >=sys-libs/readline-4.1:= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:= ) libressl? ( dev-libs/libressl:= ) ) tk? ( >=dev-lang/tcl-8.0:= >=dev-lang/tk-8.0:= dev-tcltk/blt:= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1:= ) !build? ( app-misc/mime-types )
+REQUIRED_USE=pgo_generate? ( !pgo_use )
+RESTRICT=!test? ( test )
+SLOT=3.6/3.6m
+SRC_URI=https://www.python.org/ftp/python/3.6.12/Python-3.6.12.tar.xz https://dev.gentoo.org/~mgorny/dist/python/python-gentoo-patches-3.6.12-r1.tar.xz pgo_use? ( gs://chromeos-localmirror/distfiles/python-3.6-profile.tar.xz )
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	pax-utils	3551398d6ede2b572568832730cc2a45	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=325530db3a1f7714dc036e50c1b72baf
diff --git a/metadata/md5-cache/dev-lang/python-3.6.12-r4 b/metadata/md5-cache/dev-lang/python-3.6.12-r4
new file mode 100644
index 0000000..4836ff7
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/python-3.6.12-r4
@@ -0,0 +1,17 @@
+BDEPEND=>=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure install postinst postrm preinst prepare test
+DEPEND=app-arch/bzip2:= app-arch/xz-utils:= dev-libs/libffi:= >=sys-libs/zlib-1.1.3:= virtual/libcrypt:= virtual/libintl gdbm? ( sys-libs/gdbm:=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:= ) readline? ( >=sys-libs/readline-4.1:= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:= ) libressl? ( dev-libs/libressl:= ) ) tk? ( >=dev-lang/tcl-8.0:= >=dev-lang/tk-8.0:= dev-tcltk/blt:= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1:= ) bluetooth? ( net-wireless/bluez ) test? ( app-arch/xz-utils[extra-filters(+)] ) virtual/pkgconfig !sys-devel/gcc[libffi(-)] !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69
+DESCRIPTION=An interpreted, interactive, object-oriented programming language
+EAPI=7
+HOMEPAGE=https://www.python.org/
+IUSE=bluetooth build examples gdbm hardened ipv6 libressl +ncurses +readline sqlite +ssl test +threads tk wininst +xml pgo_generate +pgo_use
+KEYWORDS=*
+LICENSE=PSF-2
+PDEPEND=>=app-eselect/eselect-python-20140125-r1
+RDEPEND=app-arch/bzip2:= app-arch/xz-utils:= dev-libs/libffi:= >=sys-libs/zlib-1.1.3:= virtual/libcrypt:= virtual/libintl gdbm? ( sys-libs/gdbm:=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:= ) readline? ( >=sys-libs/readline-4.1:= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:= ) libressl? ( dev-libs/libressl:= ) ) tk? ( >=dev-lang/tcl-8.0:= >=dev-lang/tk-8.0:= dev-tcltk/blt:= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1:= ) !build? ( app-misc/mime-types )
+REQUIRED_USE=pgo_generate? ( !pgo_use )
+RESTRICT=!test? ( test )
+SLOT=3.6/3.6m
+SRC_URI=https://www.python.org/ftp/python/3.6.12/Python-3.6.12.tar.xz https://dev.gentoo.org/~mgorny/dist/python/python-gentoo-patches-3.6.12-r1.tar.xz pgo_use? ( gs://chromeos-localmirror/distfiles/python-3.6-profile.tar.xz )
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	pax-utils	3551398d6ede2b572568832730cc2a45	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=325530db3a1f7714dc036e50c1b72baf
diff --git a/metadata/md5-cache/dev-lang/python-3.6.5 b/metadata/md5-cache/dev-lang/python-3.6.5
deleted file mode 100644
index 6371760..0000000
--- a/metadata/md5-cache/dev-lang/python-3.6.5
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install postinst postrm preinst prepare test
-DEPEND=app-arch/bzip2:0= app-arch/xz-utils:0= >=sys-libs/zlib-1.1.3:0= virtual/libffi:= virtual/libintl gdbm? ( sys-libs/gdbm:0=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:0= ) readline? ( >=sys-libs/readline-4.1:0= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tk? ( >=dev-lang/tcl-8.0:0= >=dev-lang/tk-8.0:0= dev-tcltk/blt:0= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1:0= ) !!<sys-apps/sandbox-2.6-r1 test? ( app-arch/xz-utils[extra-filters(+)] ) virtual/pkgconfig !sys-devel/gcc[libffi(-)] >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69
-DESCRIPTION=An interpreted, interactive, object-oriented programming language
-EAPI=5
-HOMEPAGE=https://www.python.org/
-IUSE=build examples gdbm hardened ipv6 libressl +ncurses +readline sqlite +ssl test +threads tk wininst +xml
-KEYWORDS=*
-LICENSE=PSF-2
-PDEPEND=>=app-eselect/eselect-python-20140125-r1
-RDEPEND=app-arch/bzip2:0= app-arch/xz-utils:0= >=sys-libs/zlib-1.1.3:0= virtual/libffi:= virtual/libintl gdbm? ( sys-libs/gdbm:0=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:0= ) readline? ( >=sys-libs/readline-4.1:0= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tk? ( >=dev-lang/tcl-8.0:0= >=dev-lang/tk-8.0:0= dev-tcltk/blt:0= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1:0= ) !!<sys-apps/sandbox-2.6-r1 !build? ( app-misc/mime-types )
-RESTRICT=!test? ( test )
-SLOT=3.6/3.6m
-SRC_URI=https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz https://dev.gentoo.org/~floppym/python/python-gentoo-patches-3.6.4.tar.xz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b673ce534dbdab312647ea561d351f0b
diff --git a/metadata/md5-cache/dev-lang/python-3.6.5-r5 b/metadata/md5-cache/dev-lang/python-3.6.5-r5
deleted file mode 100644
index 6371760..0000000
--- a/metadata/md5-cache/dev-lang/python-3.6.5-r5
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install postinst postrm preinst prepare test
-DEPEND=app-arch/bzip2:0= app-arch/xz-utils:0= >=sys-libs/zlib-1.1.3:0= virtual/libffi:= virtual/libintl gdbm? ( sys-libs/gdbm:0=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:0= ) readline? ( >=sys-libs/readline-4.1:0= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tk? ( >=dev-lang/tcl-8.0:0= >=dev-lang/tk-8.0:0= dev-tcltk/blt:0= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1:0= ) !!<sys-apps/sandbox-2.6-r1 test? ( app-arch/xz-utils[extra-filters(+)] ) virtual/pkgconfig !sys-devel/gcc[libffi(-)] >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69
-DESCRIPTION=An interpreted, interactive, object-oriented programming language
-EAPI=5
-HOMEPAGE=https://www.python.org/
-IUSE=build examples gdbm hardened ipv6 libressl +ncurses +readline sqlite +ssl test +threads tk wininst +xml
-KEYWORDS=*
-LICENSE=PSF-2
-PDEPEND=>=app-eselect/eselect-python-20140125-r1
-RDEPEND=app-arch/bzip2:0= app-arch/xz-utils:0= >=sys-libs/zlib-1.1.3:0= virtual/libffi:= virtual/libintl gdbm? ( sys-libs/gdbm:0=[berkdb] ) ncurses? ( >=sys-libs/ncurses-5.2:0= ) readline? ( >=sys-libs/readline-4.1:0= ) sqlite? ( >=dev-db/sqlite-3.3.8:3= ) ssl? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:0= ) ) tk? ( >=dev-lang/tcl-8.0:0= >=dev-lang/tk-8.0:0= dev-tcltk/blt:0= dev-tcltk/tix ) xml? ( >=dev-libs/expat-2.1:0= ) !!<sys-apps/sandbox-2.6-r1 !build? ( app-misc/mime-types )
-RESTRICT=!test? ( test )
-SLOT=3.6/3.6m
-SRC_URI=https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz https://dev.gentoo.org/~floppym/python/python-gentoo-patches-3.6.4.tar.xz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b673ce534dbdab312647ea561d351f0b
diff --git a/metadata/md5-cache/dev-lang/rust-1.46.0-r1 b/metadata/md5-cache/dev-lang/rust-1.46.0-r1
deleted file mode 100644
index e34c075..0000000
--- a/metadata/md5-cache/dev-lang/rust-1.46.0-r1
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup
-DEPEND=|| ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-libs/libxml2-2.9.6 >=dev-lang/perl-5.0
-DESCRIPTION=Systems programming language from Mozilla
-EAPI=5
-HOMEPAGE=http://www.rust-lang.org/
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA
-RDEPEND=!dev-util/cargo
-REQUIRED_USE=amd64
-RESTRICT=binchecks strip
-SLOT=stable/1.46
-SRC_URI=https://static.rust-lang.org/dist/rustc-1.46.0-src.tar.gz -> rustc-1.46.0-src.tar.gz https://static.rust-lang.org/dist/2020-08-03/rust-std-1.45.2-x86_64-unknown-linux-gnu.tar.gz https://static.rust-lang.org/dist/rustc-1.45.2-x86_64-unknown-linux-gnu.tar.gz https://static.rust-lang.org/dist/cargo-0.46.1-x86_64-unknown-linux-gnu.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
-_md5_=daf80d8d345472b39d547b86c0c906ec
diff --git a/metadata/md5-cache/dev-lang/rust-1.47.0-r6 b/metadata/md5-cache/dev-lang/rust-1.47.0-r6
deleted file mode 100644
index 1fa6e0f8..0000000
--- a/metadata/md5-cache/dev-lang/rust-1.47.0-r6
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND==dev-lang/rust-bootstrap-1.46.0
-DEFINED_PHASES=compile configure install prepare setup
-DEPEND=|| ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-libs/libxml2-2.9.6 >=dev-lang/perl-5.0
-DESCRIPTION=Systems programming language from Mozilla
-EAPI=7
-HOMEPAGE=http://www.rust-lang.org/
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA
-RDEPEND=!dev-util/cargo
-REQUIRED_USE=amd64
-RESTRICT=binchecks strip
-SLOT=stable/1.47
-SRC_URI=https://static.rust-lang.org/dist/rustc-1.47.0-src.tar.gz -> rustc-1.47.0-src.tar.gz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e0d856eeec29770bb99306268222f0b2
diff --git a/metadata/md5-cache/dev-lang/rust-1.47.0-r7 b/metadata/md5-cache/dev-lang/rust-1.47.0-r7
new file mode 100644
index 0000000..dfe08e3
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/rust-1.47.0-r7
@@ -0,0 +1,15 @@
+BDEPEND==dev-lang/rust-bootstrap-1.46.0
+DEFINED_PHASES=compile configure install prepare setup
+DEPEND=|| ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-libs/libxml2-2.9.6 >=dev-lang/perl-5.0
+DESCRIPTION=Systems programming language from Mozilla
+EAPI=7
+HOMEPAGE=http://www.rust-lang.org/
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA
+RDEPEND=!dev-util/cargo
+REQUIRED_USE=amd64
+RESTRICT=binchecks strip
+SLOT=stable/1.47
+SRC_URI=https://static.rust-lang.org/dist/rustc-1.47.0-src.tar.gz -> rustc-1.47.0-src.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=64ea42ccc6ce20cb9338e7b922fadc5f
diff --git a/metadata/md5-cache/dev-lang/rust-1.51.0 b/metadata/md5-cache/dev-lang/rust-1.51.0
new file mode 100644
index 0000000..7db6c40
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/rust-1.51.0
@@ -0,0 +1,15 @@
+BDEPEND=dev-lang/rust-bootstrap:1.50.0
+DEFINED_PHASES=compile configure install prepare setup
+DEPEND=|| ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) >=dev-libs/libxml2-2.9.6 >=dev-lang/perl-5.0
+DESCRIPTION=Systems programming language from Mozilla
+EAPI=7
+HOMEPAGE=http://www.rust-lang.org/
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 ) BSD-1 BSD-2 BSD-4 UoI-NCSA
+RDEPEND=!dev-util/cargo
+REQUIRED_USE=amd64
+RESTRICT=binchecks strip
+SLOT=stable/1.51
+SRC_URI=https://static.rust-lang.org/dist/rustc-1.51.0-src.tar.gz -> rustc-1.51.0-src.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c38d176a5b743e5ae07929c2e6b4a4d4
diff --git a/metadata/md5-cache/dev-lang/rust-bootstrap-1.46.0 b/metadata/md5-cache/dev-lang/rust-bootstrap-1.46.0
index c0a3d7e..1170eb3 100644
--- a/metadata/md5-cache/dev-lang/rust-bootstrap-1.46.0
+++ b/metadata/md5-cache/dev-lang/rust-bootstrap-1.46.0
@@ -11,4 +11,4 @@
 SLOT=0
 SRC_URI=gs://chromeos-localmirror/distfiles/rustc-1.46.0-src.tar.gz !fullbootstrap? ( gs://chromeos-localmirror/distfiles/rust-bootstrap-1.45.2.tbz2 ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/mrustc-0.9.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.29.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.30.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.31.1-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.32.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.33.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.34.2-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.35.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.36.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.37.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.38.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.39.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.40.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.41.1-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.42.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.43.1-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.44.1-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.45.2-src.tar.gz )
 _eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=404c04a7e7016ca2f9ae3a477f74455b
+_md5_=b30be5c0d049dcf76170186883ddb481
diff --git a/metadata/md5-cache/dev-lang/rust-bootstrap-1.50.0 b/metadata/md5-cache/dev-lang/rust-bootstrap-1.50.0
new file mode 100644
index 0000000..59050d8
--- /dev/null
+++ b/metadata/md5-cache/dev-lang/rust-bootstrap-1.50.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare setup unpack
+DEPEND=dev-libs/openssl net-libs/libssh2
+DESCRIPTION=Bootstraps the rustc Rust compiler using mrustc
+EAPI=7
+HOMEPAGE=https://github.com/thepowersgang/mrustc
+IUSE=-fullbootstrap
+KEYWORDS=*
+LICENSE=MIT Apache-2.0 BSD-1 BSD-2 BSD-4 UoI-NCSA
+RDEPEND=dev-libs/openssl net-libs/libssh2
+RESTRICT=binchecks strip
+SLOT=1.50.0
+SRC_URI=gs://chromeos-localmirror/distfiles/rustc-1.50.0-src.tar.gz !fullbootstrap? ( gs://chromeos-localmirror/distfiles/rust-bootstrap-1.49.0.tbz2 ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/mrustc-0.9.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.29.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.30.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.31.1-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.32.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.33.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.34.2-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.35.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.36.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.37.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.38.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.39.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.40.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.41.1-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.42.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.43.1-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.44.1-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.45.2-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.46.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.47.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.48.0-src.tar.gz ) fullbootstrap? ( gs://chromeos-localmirror/distfiles/rustc-1.49.0-src.tar.gz )
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=da489fe557c5fa1b65c5231d871f506d
diff --git a/metadata/md5-cache/dev-libs/arc-libelf-0.8.13-r2 b/metadata/md5-cache/dev-libs/arc-libelf-0.8.13-r2
index a314d61..5aa004a 100644
--- a/metadata/md5-cache/dev-libs/arc-libelf-0.8.13-r2
+++ b/metadata/md5-cache/dev-libs/arc-libelf-0.8.13-r2
@@ -3,12 +3,12 @@
 DESCRIPTION=A ELF object file access library
 EAPI=6
 HOMEPAGE=http://www.mr511.de/software/
-IUSE=debug abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=debug abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=*
 LICENSE=LGPL-2
 RDEPEND=!dev-libs/arc-elfutils
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
 SRC_URI=http://www.mr511.de/software/libelf-0.8.13.tar.gz
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3616d6e4d1c2e432b2361deb7e55e369
diff --git a/metadata/md5-cache/dev-libs/closure_linter-2.3.13 b/metadata/md5-cache/dev-libs/closure_linter-2.3.13
index 631695b..2c640e4 100644
--- a/metadata/md5-cache/dev-libs/closure_linter-2.3.13
+++ b/metadata/md5-cache/dev-libs/closure_linter-2.3.13
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
 SRC_URI=http://closure-linter.googlecode.com/files/closure_linter-2.3.13.tar.gz -> closure_linter-2.3.13.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=69d94aeb0e4bcbfcd63298379734bd45
diff --git a/metadata/md5-cache/dev-libs/closure_linter-2.3.13-r2 b/metadata/md5-cache/dev-libs/closure_linter-2.3.13-r2
index 631695b..2c640e4 100644
--- a/metadata/md5-cache/dev-libs/closure_linter-2.3.13-r2
+++ b/metadata/md5-cache/dev-libs/closure_linter-2.3.13-r2
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
 SRC_URI=http://closure-linter.googlecode.com/files/closure_linter-2.3.13.tar.gz -> closure_linter-2.3.13.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=69d94aeb0e4bcbfcd63298379734bd45
diff --git a/metadata/md5-cache/dev-libs/double-conversion-3.1.5 b/metadata/md5-cache/dev-libs/double-conversion-3.1.5
index 15f56f3..4b64b92 100644
--- a/metadata/md5-cache/dev-libs/double-conversion-3.1.5
+++ b/metadata/md5-cache/dev-libs/double-conversion-3.1.5
@@ -7,5 +7,5 @@
 LICENSE=BSD
 SLOT=0/3
 SRC_URI=https://github.com/google/double-conversion/archive/v3.1.5.tar.gz -> double-conversion-3.1.5.tar.gz
-_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=38011d3d4272a02832e457230c24dc50
diff --git a/metadata/md5-cache/dev-libs/double-conversion-3.1.5-r1 b/metadata/md5-cache/dev-libs/double-conversion-3.1.5-r1
index 15f56f3..4b64b92 100644
--- a/metadata/md5-cache/dev-libs/double-conversion-3.1.5-r1
+++ b/metadata/md5-cache/dev-libs/double-conversion-3.1.5-r1
@@ -7,5 +7,5 @@
 LICENSE=BSD
 SLOT=0/3
 SRC_URI=https://github.com/google/double-conversion/archive/v3.1.5.tar.gz -> double-conversion-3.1.5.tar.gz
-_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=38011d3d4272a02832e457230c24dc50
diff --git a/metadata/md5-cache/dev-libs/glib-2.66.4-r1 b/metadata/md5-cache/dev-libs/glib-2.66.4-r1
deleted file mode 100644
index 6b5cdd2..0000000
--- a/metadata/md5-cache/dev-libs/glib-2.66.4-r1
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=doc? ( app-text/docbook-xsl-stylesheets dev-libs/libxslt ) >=sys-devel/gettext-0.19.8 gtk-doc? ( >=dev-util/gtk-doc-1.33 app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.5 ) systemtap? ( >=dev-util/systemtap-1.3 ) || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) test? ( >=sys-apps/dbus-1.2.14 ) virtual/pkgconfig app-arch/xz-utils >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DEFINED_PHASES=compile configure install postinst postrm preinst prepare setup test
-DEPEND=!<dev-util/gdbus-codegen-2.66.4 >=virtual/libiconv-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/libpcre-8.31:3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,static-libs?] >=virtual/libffi-3.0.13-r1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/libintl-0-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] kernel_linux? ( >=sys-apps/util-linux-2.23[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) selinux? ( >=sys-libs/libselinux-2.2.2-r5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xattr? ( !elibc_glibc? ( >=sys-apps/attr-2.4.47-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) cros_host? ( virtual/libelf:0= ) fam? ( >=virtual/fam-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sysprof? ( >=dev-util/sysprof-capture-3.38:4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-DESCRIPTION=The GLib library of C routines
-EAPI=7
-HOMEPAGE=https://www.gtk.org/
-IUSE=cros_host dbus debug doc elibc_glibc fam gtk-doc kernel_linux +mime selinux static-libs sysprof systemtap test utils xattr kernel_linux abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=LGPL-2.1+
-PDEPEND=dbus? ( gnome-base/dconf ) mime? ( x11-misc/shared-mime-info )
-RDEPEND=!<dev-util/gdbus-codegen-2.66.4 >=virtual/libiconv-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/libpcre-8.31:3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,static-libs?] >=virtual/libffi-3.0.13-r1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/libintl-0-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] kernel_linux? ( >=sys-apps/util-linux-2.23[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) selinux? ( >=sys-libs/libselinux-2.2.2-r5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xattr? ( !elibc_glibc? ( >=sys-apps/attr-2.4.47-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) cros_host? ( virtual/libelf:0= ) fam? ( >=virtual/fam-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sysprof? ( >=dev-util/sysprof-capture-3.38:4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-RESTRICT=!test? ( test )
-SLOT=2
-SRC_URI=mirror://gnome/sources/glib/2.66/glib-2.66.4.tar.xz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnome.org	532d56d07b9eace4831aaa817d2b756a	gnome2-utils	893e828f0f25f070f0b38d20c83c7670	linux-info	327865b9921771330775d971263dc234	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg	c7ba313ea1eaf266f95cc6235f7d6a07	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=e44e1499d0d45e3ac41ae87eda867904
diff --git a/metadata/md5-cache/dev-libs/glib-2.66.7-r2 b/metadata/md5-cache/dev-libs/glib-2.66.7-r2
new file mode 100644
index 0000000..a457499
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/glib-2.66.7-r2
@@ -0,0 +1,16 @@
+BDEPEND=doc? ( app-text/docbook-xsl-stylesheets dev-libs/libxslt ) >=sys-devel/gettext-0.19.8 gtk-doc? ( >=dev-util/gtk-doc-1.33 app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.5 ) systemtap? ( >=dev-util/systemtap-1.3 ) || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) test? ( >=sys-apps/dbus-1.2.14 ) virtual/pkgconfig app-arch/xz-utils >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure install postinst postrm preinst prepare setup test
+DEPEND=!<dev-util/gdbus-codegen-2.66.7 >=virtual/libiconv-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/libpcre-8.31:3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,static-libs?] >=virtual/libffi-3.0.13-r1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/libintl-0-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] kernel_linux? ( >=sys-apps/util-linux-2.23[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) selinux? ( >=sys-libs/libselinux-2.2.2-r5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xattr? ( !elibc_glibc? ( >=sys-apps/attr-2.4.47-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) cros_host? ( virtual/libelf:0= ) fam? ( >=virtual/fam-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sysprof? ( >=dev-util/sysprof-capture-3.38:4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+DESCRIPTION=The GLib library of C routines
+EAPI=7
+HOMEPAGE=https://www.gtk.org/
+IUSE=cros_host dbus debug doc elibc_glibc fam gtk-doc kernel_linux +mime selinux static-libs sysprof systemtap test utils xattr kernel_linux abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=LGPL-2.1+
+PDEPEND=dbus? ( gnome-base/dconf ) mime? ( x11-misc/shared-mime-info )
+RDEPEND=!<dev-util/gdbus-codegen-2.66.7 >=virtual/libiconv-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/libpcre-8.31:3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,static-libs?] >=virtual/libffi-3.0.13-r1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/libintl-0-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] kernel_linux? ( >=sys-apps/util-linux-2.23[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) selinux? ( >=sys-libs/libselinux-2.2.2-r5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xattr? ( !elibc_glibc? ( >=sys-apps/attr-2.4.47-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) cros_host? ( virtual/libelf:0= ) fam? ( >=virtual/fam-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sysprof? ( >=dev-util/sysprof-capture-3.38:4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+RESTRICT=!test? ( test )
+SLOT=2
+SRC_URI=mirror://gnome/sources/glib/2.66/glib-2.66.7.tar.xz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnome.org	532d56d07b9eace4831aaa817d2b756a	gnome2-utils	893e828f0f25f070f0b38d20c83c7670	linux-info	327865b9921771330775d971263dc234	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg	c7ba313ea1eaf266f95cc6235f7d6a07	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=3a6c86255b1a3249a01072eb270ed2b7
diff --git a/metadata/md5-cache/dev-libs/libdivsufsort-2.0.1 b/metadata/md5-cache/dev-libs/libdivsufsort-2.0.1
index 25af991..9cb05aa5 100644
--- a/metadata/md5-cache/dev-libs/libdivsufsort-2.0.1
+++ b/metadata/md5-cache/dev-libs/libdivsufsort-2.0.1
@@ -7,5 +7,5 @@
 LICENSE=MIT
 SLOT=0
 SRC_URI=https://github.com/y-256/libdivsufsort/archive/2.0.1.tar.gz -> libdivsufsort-2.0.1.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=afff22a36a688d32a32136de7b94ba54
diff --git a/metadata/md5-cache/dev-libs/libdivsufsort-2.0.1-r2 b/metadata/md5-cache/dev-libs/libdivsufsort-2.0.1-r2
index 25af991..9cb05aa5 100644
--- a/metadata/md5-cache/dev-libs/libdivsufsort-2.0.1-r2
+++ b/metadata/md5-cache/dev-libs/libdivsufsort-2.0.1-r2
@@ -7,5 +7,5 @@
 LICENSE=MIT
 SLOT=0
 SRC_URI=https://github.com/y-256/libdivsufsort/archive/2.0.1.tar.gz -> libdivsufsort-2.0.1.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=afff22a36a688d32a32136de7b94ba54
diff --git a/metadata/md5-cache/dev-libs/libevent-2.1.8 b/metadata/md5-cache/dev-libs/libevent-2.1.8
index 4c62059a..56dcaf1 100644
--- a/metadata/md5-cache/dev-libs/libevent-2.1.8
+++ b/metadata/md5-cache/dev-libs/libevent-2.1.8
@@ -10,4 +10,4 @@
 SLOT=0/2.1-6
 SRC_URI=https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz -> libevent-2.1.8.tar.gz
 _eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=26aa111259c7a99f1620de7f11628876
+_md5_=4c6cc22ff59d0c61a0021ea23c699782
diff --git a/metadata/md5-cache/dev-libs/libevent-2.1.8-r1 b/metadata/md5-cache/dev-libs/libevent-2.1.8-r1
deleted file mode 100644
index 4c62059a..0000000
--- a/metadata/md5-cache/dev-libs/libevent-2.1.8-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=ssl? ( !libressl? ( >=dev-libs/openssl-1.0.1h-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libressl? ( dev-libs/libressl[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=A library to execute a function when a specific event occurs on a file descriptor
-EAPI=5
-HOMEPAGE=http://libevent.org/ https://github.com/libevent/libevent/
-IUSE=debug libressl +ssl static-libs test +threads abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=ssl? ( !libressl? ( >=dev-libs/openssl-1.0.1h-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libressl? ( dev-libs/libressl[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) !<=dev-libs/9libs-1.0
-SLOT=0/2.1-6
-SRC_URI=https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz -> libevent-2.1.8.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=26aa111259c7a99f1620de7f11628876
diff --git a/metadata/md5-cache/dev-libs/libevent-2.1.8-r2 b/metadata/md5-cache/dev-libs/libevent-2.1.8-r2
new file mode 100644
index 0000000..56dcaf1
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libevent-2.1.8-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=ssl? ( !libressl? ( >=dev-libs/openssl-1.0.1h-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libressl? ( dev-libs/libressl[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=A library to execute a function when a specific event occurs on a file descriptor
+EAPI=5
+HOMEPAGE=http://libevent.org/ https://github.com/libevent/libevent/
+IUSE=debug libressl +ssl static-libs test +threads abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=BSD
+RDEPEND=ssl? ( !libressl? ( >=dev-libs/openssl-1.0.1h-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libressl? ( dev-libs/libressl[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) !<=dev-libs/9libs-1.0
+SLOT=0/2.1-6
+SRC_URI=https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/libevent-2.1.8-stable.tar.gz -> libevent-2.1.8.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=4c6cc22ff59d0c61a0021ea23c699782
diff --git a/metadata/md5-cache/dev-libs/libgit2-1.0.2_pre20200908-r1 b/metadata/md5-cache/dev-libs/libgit2-1.0.2_pre20200908-r1
index 0a70a40..51d4882 100644
--- a/metadata/md5-cache/dev-libs/libgit2-1.0.2_pre20200908-r1
+++ b/metadata/md5-cache/dev-libs/libgit2-1.0.2_pre20200908-r1
@@ -11,5 +11,5 @@
 RESTRICT=!test? ( test )
 SLOT=0/1.0.2_pre20200908-r1
 SRC_URI=https://github.com/libgit2/libgit2/archive/1e987525b3bd86fc29e7ff67d973861efd22faf7.tar.gz -> libgit2-1.0.2_pre20200908.tar.gz
-_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=2dcf6650ce28083276746bcf7df84231
diff --git a/metadata/md5-cache/dev-libs/libgrammar-0.0.3 b/metadata/md5-cache/dev-libs/libgrammar-0.0.3
deleted file mode 100644
index 6fe0fc9..0000000
--- a/metadata/md5-cache/dev-libs/libgrammar-0.0.3
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Google grammar check library for Chrome OS
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os
-IUSE=ondevice_grammar
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-SRC_URI=gs://chromeos-localmirror/distfiles/libgrammar-amd64-0.0.3.tar.gz
-_md5_=7633f990de63785d8ff1384a30b523cf
diff --git a/metadata/md5-cache/dev-libs/libgrammar-0.0.3-r1 b/metadata/md5-cache/dev-libs/libgrammar-0.0.3-r1
deleted file mode 100644
index 6fe0fc9..0000000
--- a/metadata/md5-cache/dev-libs/libgrammar-0.0.3-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Google grammar check library for Chrome OS
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os
-IUSE=ondevice_grammar
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-SRC_URI=gs://chromeos-localmirror/distfiles/libgrammar-amd64-0.0.3.tar.gz
-_md5_=7633f990de63785d8ff1384a30b523cf
diff --git a/metadata/md5-cache/dev-libs/libgrammar-0.0.4 b/metadata/md5-cache/dev-libs/libgrammar-0.0.4
new file mode 100644
index 0000000..5189003
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libgrammar-0.0.4
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=Google grammar check library for Chrome OS
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os
+IUSE=ondevice_grammar
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/libgrammar-0.0.4.tar.gz
+_md5_=d2a225a0a3f1b5c405c8be6c6e1f95d0
diff --git a/metadata/md5-cache/dev-libs/libgrammar-0.0.4-r1 b/metadata/md5-cache/dev-libs/libgrammar-0.0.4-r1
new file mode 100644
index 0000000..5189003
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libgrammar-0.0.4-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=Google grammar check library for Chrome OS
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os
+IUSE=ondevice_grammar
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/libgrammar-0.0.4.tar.gz
+_md5_=d2a225a0a3f1b5c405c8be6c6e1f95d0
diff --git a/metadata/md5-cache/dev-libs/libhandwriting-0.0.15 b/metadata/md5-cache/dev-libs/libhandwriting-0.0.15
index 1d254b3..7af5cd9 100644
--- a/metadata/md5-cache/dev-libs/libhandwriting-0.0.15
+++ b/metadata/md5-cache/dev-libs/libhandwriting-0.0.15
@@ -1,5 +1,4 @@
 DEFINED_PHASES=install
-DEPEND=chromeos-base/update_engine
 DESCRIPTION=Google handwriting recognition library for Chrome OS
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os
@@ -9,5 +8,5 @@
 REQUIRED_USE=ondevice_handwriting_dlc? ( dlc ) ?? ( ondevice_handwriting ondevice_handwriting_dlc )
 SLOT=0
 SRC_URI=gs://chromeos-localmirror/distfiles/libhandwriting-0.0.15.tar.gz
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	dlc	c539aa2d32aaba22acfb2eb623710a96
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	dlc	7fff3565c77657ab37a6955949c208a7
 _md5_=d93ccd4bd60844fbc79c93f4dba1360b
diff --git a/metadata/md5-cache/dev-libs/libhandwriting-0.0.15-r1 b/metadata/md5-cache/dev-libs/libhandwriting-0.0.15-r1
index 1d254b3..7af5cd9 100644
--- a/metadata/md5-cache/dev-libs/libhandwriting-0.0.15-r1
+++ b/metadata/md5-cache/dev-libs/libhandwriting-0.0.15-r1
@@ -1,5 +1,4 @@
 DEFINED_PHASES=install
-DEPEND=chromeos-base/update_engine
 DESCRIPTION=Google handwriting recognition library for Chrome OS
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os
@@ -9,5 +8,5 @@
 REQUIRED_USE=ondevice_handwriting_dlc? ( dlc ) ?? ( ondevice_handwriting ondevice_handwriting_dlc )
 SLOT=0
 SRC_URI=gs://chromeos-localmirror/distfiles/libhandwriting-0.0.15.tar.gz
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	dlc	c539aa2d32aaba22acfb2eb623710a96
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	dlc	7fff3565c77657ab37a6955949c208a7
 _md5_=d93ccd4bd60844fbc79c93f4dba1360b
diff --git a/metadata/md5-cache/dev-libs/libjcat-0.1.0 b/metadata/md5-cache/dev-libs/libjcat-0.1.0
deleted file mode 100644
index e5fd28f..0000000
--- a/metadata/md5-cache/dev-libs/libjcat-0.1.0
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=virtual/pkgconfig gtk-doc? ( dev-util/gtk-doc ) man? ( sys-apps/help2man ) test? ( net-libs/gnutls[tools] ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=dev-libs/glib:2 dev-libs/json-glib:= gpg? ( app-crypt/gpgme dev-libs/libgpg-error ) introspection? ( dev-libs/gobject-introspection:= ) pkcs7? ( net-libs/gnutls ) dev-lang/vala:=
-DESCRIPTION=Library and tool for reading and writing Jcat files
-EAPI=7
-HOMEPAGE=https://github.com/hughsie/libjcat
-IUSE=gpg gtk-doc +introspection man pkcs7 test
-KEYWORDS=*
-LICENSE=LGPL-2.1+
-RDEPEND=dev-libs/glib:2 dev-libs/json-glib:= gpg? ( app-crypt/gpgme dev-libs/libgpg-error ) introspection? ( dev-libs/gobject-introspection:= ) pkcs7? ( net-libs/gnutls )
-RESTRICT=!test? ( test )
-SLOT=0
-SRC_URI=https://github.com/hughsie/libjcat/archive/0.1.0.tar.gz -> libjcat-0.1.0.tar.gz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vala	2f3804278870542119da624a5eded505	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=0c073b082e643977ac7d4cdadaec3ba2
diff --git a/metadata/md5-cache/dev-libs/libjcat-0.1.0-r1 b/metadata/md5-cache/dev-libs/libjcat-0.1.0-r1
deleted file mode 100644
index e5fd28f..0000000
--- a/metadata/md5-cache/dev-libs/libjcat-0.1.0-r1
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=virtual/pkgconfig gtk-doc? ( dev-util/gtk-doc ) man? ( sys-apps/help2man ) test? ( net-libs/gnutls[tools] ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=dev-libs/glib:2 dev-libs/json-glib:= gpg? ( app-crypt/gpgme dev-libs/libgpg-error ) introspection? ( dev-libs/gobject-introspection:= ) pkcs7? ( net-libs/gnutls ) dev-lang/vala:=
-DESCRIPTION=Library and tool for reading and writing Jcat files
-EAPI=7
-HOMEPAGE=https://github.com/hughsie/libjcat
-IUSE=gpg gtk-doc +introspection man pkcs7 test
-KEYWORDS=*
-LICENSE=LGPL-2.1+
-RDEPEND=dev-libs/glib:2 dev-libs/json-glib:= gpg? ( app-crypt/gpgme dev-libs/libgpg-error ) introspection? ( dev-libs/gobject-introspection:= ) pkcs7? ( net-libs/gnutls )
-RESTRICT=!test? ( test )
-SLOT=0
-SRC_URI=https://github.com/hughsie/libjcat/archive/0.1.0.tar.gz -> libjcat-0.1.0.tar.gz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vala	2f3804278870542119da624a5eded505	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=0c073b082e643977ac7d4cdadaec3ba2
diff --git a/metadata/md5-cache/dev-libs/libjcat-0.1.8 b/metadata/md5-cache/dev-libs/libjcat-0.1.8
new file mode 100644
index 0000000..c8447fa
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libjcat-0.1.8
@@ -0,0 +1,15 @@
+BDEPEND=virtual/pkgconfig || ( ( dev-lang/python:3.9[xml] dev-python/setuptools[python_targets_python3_9(-),python_single_target_python3_9(+)] ) ( dev-lang/python:3.8[xml] dev-python/setuptools[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ( dev-lang/python:3.7[xml] dev-python/setuptools[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ( dev-lang/python:3.6[xml] dev-python/setuptools[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ( >=dev-lang/python-2.7.5-r2:2.7[xml] dev-python/setuptools[python_targets_python2_7(-),python_single_target_python2_7(+)] ) ) gtk-doc? ( dev-util/gtk-doc ) man? ( sys-apps/help2man ) test? ( net-libs/gnutls[tools] ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=dev-libs/glib:2 dev-libs/json-glib:= gpg? ( app-crypt/gpgme dev-libs/libgpg-error ) introspection? ( dev-libs/gobject-introspection:= ) pkcs7? ( net-libs/gnutls ) vala? ( dev-lang/vala:= )
+DESCRIPTION=Library and tool for reading and writing Jcat files
+EAPI=7
+HOMEPAGE=https://github.com/hughsie/libjcat
+IUSE=gpg gtk-doc +introspection man pkcs7 test vala
+KEYWORDS=*
+LICENSE=LGPL-2.1+
+RDEPEND=dev-libs/glib:2 dev-libs/json-glib:= gpg? ( app-crypt/gpgme dev-libs/libgpg-error ) introspection? ( dev-libs/gobject-introspection:= ) pkcs7? ( net-libs/gnutls ) vala? ( dev-lang/vala:= )
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://github.com/hughsie/libjcat/archive/0.1.8.tar.gz -> libjcat-0.1.8.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vala	2f3804278870542119da624a5eded505	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=83028dedb16c5c9b8286bbf81d2850ff
diff --git a/metadata/md5-cache/dev-libs/libjcat-0.1.8-r1 b/metadata/md5-cache/dev-libs/libjcat-0.1.8-r1
new file mode 100644
index 0000000..c8447fa
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libjcat-0.1.8-r1
@@ -0,0 +1,15 @@
+BDEPEND=virtual/pkgconfig || ( ( dev-lang/python:3.9[xml] dev-python/setuptools[python_targets_python3_9(-),python_single_target_python3_9(+)] ) ( dev-lang/python:3.8[xml] dev-python/setuptools[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ( dev-lang/python:3.7[xml] dev-python/setuptools[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ( dev-lang/python:3.6[xml] dev-python/setuptools[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ( >=dev-lang/python-2.7.5-r2:2.7[xml] dev-python/setuptools[python_targets_python2_7(-),python_single_target_python2_7(+)] ) ) gtk-doc? ( dev-util/gtk-doc ) man? ( sys-apps/help2man ) test? ( net-libs/gnutls[tools] ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=dev-libs/glib:2 dev-libs/json-glib:= gpg? ( app-crypt/gpgme dev-libs/libgpg-error ) introspection? ( dev-libs/gobject-introspection:= ) pkcs7? ( net-libs/gnutls ) vala? ( dev-lang/vala:= )
+DESCRIPTION=Library and tool for reading and writing Jcat files
+EAPI=7
+HOMEPAGE=https://github.com/hughsie/libjcat
+IUSE=gpg gtk-doc +introspection man pkcs7 test vala
+KEYWORDS=*
+LICENSE=LGPL-2.1+
+RDEPEND=dev-libs/glib:2 dev-libs/json-glib:= gpg? ( app-crypt/gpgme dev-libs/libgpg-error ) introspection? ( dev-libs/gobject-introspection:= ) pkcs7? ( net-libs/gnutls ) vala? ( dev-lang/vala:= )
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://github.com/hughsie/libjcat/archive/0.1.8.tar.gz -> libjcat-0.1.8.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vala	2f3804278870542119da624a5eded505	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=83028dedb16c5c9b8286bbf81d2850ff
diff --git a/metadata/md5-cache/dev-libs/libprotobuf-mutator-20200125 b/metadata/md5-cache/dev-libs/libprotobuf-mutator-20200125
index ab1e053..ba5a108 100644
--- a/metadata/md5-cache/dev-libs/libprotobuf-mutator-20200125
+++ b/metadata/md5-cache/dev-libs/libprotobuf-mutator-20200125
@@ -11,5 +11,5 @@
 RESTRICT=test
 SLOT=0
 SRC_URI=https://github.com/google/libprotobuf-mutator/archive/1c91e7253084730a3f6f85fca7ac39be4b91b09c.tar.gz -> libprotobuf-mutator-20200125.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=bba297437bafcdb266312b241c663519
diff --git a/metadata/md5-cache/dev-libs/libprotobuf-mutator-20200125-r1 b/metadata/md5-cache/dev-libs/libprotobuf-mutator-20200125-r1
index ab1e053..ba5a108 100644
--- a/metadata/md5-cache/dev-libs/libprotobuf-mutator-20200125-r1
+++ b/metadata/md5-cache/dev-libs/libprotobuf-mutator-20200125-r1
@@ -11,5 +11,5 @@
 RESTRICT=test
 SLOT=0
 SRC_URI=https://github.com/google/libprotobuf-mutator/archive/1c91e7253084730a3f6f85fca7ac39be4b91b09c.tar.gz -> libprotobuf-mutator-20200125.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=bba297437bafcdb266312b241c663519
diff --git a/metadata/md5-cache/dev-libs/libsuggest-0.0.9 b/metadata/md5-cache/dev-libs/libsuggest-0.0.9
new file mode 100644
index 0000000..b72cd5b
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libsuggest-0.0.9
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=Google text suggestions library for Chrome OS
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os
+IUSE=ondevice_text_suggestions
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/libsuggest-amd64-0.0.9.tar.gz
+_md5_=edef476659755ad5c1abb05af2c8af9f
diff --git a/metadata/md5-cache/dev-libs/libsuggest-0.0.9-r1 b/metadata/md5-cache/dev-libs/libsuggest-0.0.9-r1
new file mode 100644
index 0000000..b72cd5b
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libsuggest-0.0.9-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=Google text suggestions library for Chrome OS
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os
+IUSE=ondevice_text_suggestions
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/libsuggest-amd64-0.0.9.tar.gz
+_md5_=edef476659755ad5c1abb05af2c8af9f
diff --git a/metadata/md5-cache/dev-libs/libtextclassifier-0.0.1-r117 b/metadata/md5-cache/dev-libs/libtextclassifier-0.0.1-r117
new file mode 100644
index 0000000..b6c84b0
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libtextclassifier-0.0.1-r117
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/chrome-icu:= dev-libs/flatbuffers:= sci-libs/tensorflow:= sys-libs/zlib:= !<chromeos-base/ml-0.0.1-r369 dev-libs/libutf:= dev-libs/marisa-aosp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Library for classifying text
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/libtextclassifier/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_4fa2be0611424952390eb570106ed5944e294b46 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_4fa2be0611424952390eb570106ed5944e294b46 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live live
+RDEPEND=chromeos-base/chrome-icu:= dev-libs/flatbuffers:= sci-libs/tensorflow:= sys-libs/zlib:= !<chromeos-base/ml-0.0.1-r369 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r117
+SRC_URI=gs://chromeos-localmirror/distfiles/mlservice-model-language_identification-20190924.smfb gs://chromeos-localmirror/distfiles/mlservice-model-text_classifier_en-v711_vocab-v1.fb
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=76a819c153f70562ea14e42e1c0166a3
diff --git a/metadata/md5-cache/dev-libs/libtextclassifier-0.0.1-r89 b/metadata/md5-cache/dev-libs/libtextclassifier-0.0.1-r89
deleted file mode 100644
index b5e2ca6..0000000
--- a/metadata/md5-cache/dev-libs/libtextclassifier-0.0.1-r89
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chrome-icu:= dev-libs/flatbuffers:= sci-libs/tensorflow:= sys-libs/zlib:= !<chromeos-base/ml-0.0.1-r369 dev-libs/libutf:= dev-libs/marisa-aosp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Library for classifying text
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/libtextclassifier/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_a243a7ff07a53f79bc1acb91dc6890f6e13db061 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_a243a7ff07a53f79bc1acb91dc6890f6e13db061 cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=Apache-2.0
-PROPERTIES=live live
-RDEPEND=chromeos-base/chrome-icu:= dev-libs/flatbuffers:= sci-libs/tensorflow:= sys-libs/zlib:= !<chromeos-base/ml-0.0.1-r369 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r89
-SRC_URI=gs://chromeos-localmirror/distfiles/mlservice-model-language_identification-20190924.smfb gs://chromeos-localmirror/distfiles/mlservice-model-text_classifier_en-v711_vocab-v1.fb
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6d51b83c49ecb2077e43089b7c49fd22
diff --git a/metadata/md5-cache/dev-libs/libtextclassifier-9999 b/metadata/md5-cache/dev-libs/libtextclassifier-9999
index e68fac0..8ca3fe2 100644
--- a/metadata/md5-cache/dev-libs/libtextclassifier-9999
+++ b/metadata/md5-cache/dev-libs/libtextclassifier-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chrome-icu:= dev-libs/flatbuffers:= sci-libs/tensorflow:= sys-libs/zlib:= !<chromeos-base/ml-0.0.1-r369 dev-libs/libutf:= dev-libs/marisa-aosp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/chrome-icu:= dev-libs/flatbuffers:= sci-libs/tensorflow:= sys-libs/zlib:= !<chromeos-base/ml-0.0.1-r369 dev-libs/libutf:= dev-libs/marisa-aosp:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Library for classifying text
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/libtextclassifier/
@@ -11,5 +11,5 @@
 RDEPEND=chromeos-base/chrome-icu:= dev-libs/flatbuffers:= sci-libs/tensorflow:= sys-libs/zlib:= !<chromeos-base/ml-0.0.1-r369 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
 SRC_URI=gs://chromeos-localmirror/distfiles/mlservice-model-language_identification-20190924.smfb gs://chromeos-localmirror/distfiles/mlservice-model-text_classifier_en-v711_vocab-v1.fb
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2091a1cded3cf5d61571a8c6ef5a50bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=63c58468c481fdea1d8401395184f1c2
diff --git a/metadata/md5-cache/dev-libs/libutf-0.0.1-r43 b/metadata/md5-cache/dev-libs/libutf-0.0.1-r43
deleted file mode 100644
index 552273b..0000000
--- a/metadata/md5-cache/dev-libs/libutf-0.0.1-r43
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=A UTF-8 library based on the AOSP version of libutf.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/aosp/platform/external/libutf/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_fc022abae9d52285526cb0dda697e2bea18696ca cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_fc022abae9d52285526cb0dda697e2bea18696ca cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=MIT
-PROPERTIES=live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6f3b047f3a1f81d2640b9d2b3a82ccd4
diff --git a/metadata/md5-cache/dev-libs/libutf-0.0.1-r69 b/metadata/md5-cache/dev-libs/libutf-0.0.1-r69
new file mode 100644
index 0000000..6321646
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libutf-0.0.1-r69
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=A UTF-8 library based on the AOSP version of libutf.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/aosp/platform/external/libutf/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_fc022abae9d52285526cb0dda697e2bea18696ca cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_fc022abae9d52285526cb0dda697e2bea18696ca cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=MIT
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=58b4d8b5aa7891e08c822471023298eb
diff --git a/metadata/md5-cache/dev-libs/libutf-9999 b/metadata/md5-cache/dev-libs/libutf-9999
index 96aaf9e..97f5174 100644
--- a/metadata/md5-cache/dev-libs/libutf-9999
+++ b/metadata/md5-cache/dev-libs/libutf-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=A UTF-8 library based on the AOSP version of libutf.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/aosp/platform/external/libutf/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=94c69194dc4b803ef28da92da8581564
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2fbdb434ee69b4096490988f63d67f4c
diff --git a/metadata/md5-cache/dev-libs/libxmlb-0.1.15-r2 b/metadata/md5-cache/dev-libs/libxmlb-0.1.15-r2
deleted file mode 100644
index 0cbc73d..0000000
--- a/metadata/md5-cache/dev-libs/libxmlb-0.1.15-r2
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=>=dev-util/meson-0.47.0 virtual/pkgconfig introspection? ( || ( ( dev-lang/python:3.8 dev-python/setuptools[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ( dev-lang/python:3.7 dev-python/setuptools[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ( dev-lang/python:3.6 dev-python/setuptools[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ( >=dev-lang/python-2.7.5-r2:2.7 dev-python/setuptools[python_targets_python2_7(-),python_single_target_python2_7(+)] ) ) || ( dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 >=dev-lang/python-2.7.5-r2:2.7 ) ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DEFINED_PHASES=compile configure install setup test
-DEPEND=dev-libs/glib:2 sys-apps/util-linux stemmer? ( dev-libs/snowball-stemmer ) doc? ( dev-util/gtk-doc ) introspection? ( dev-libs/gobject-introspection )
-DESCRIPTION=Library to help create and query binary XML blobs
-EAPI=7
-HOMEPAGE=https://github.com/hughsie/libxmlb
-IUSE=doc introspection stemmer test
-KEYWORDS=*
-LICENSE=LGPL-2.1+
-RDEPEND=dev-libs/glib:2 sys-apps/util-linux stemmer? ( dev-libs/snowball-stemmer )
-RESTRICT=!test? ( test )
-SLOT=0
-SRC_URI=https://github.com/hughsie/libxmlb/archive/0.1.15.tar.gz -> libxmlb-0.1.15.tar.gz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=be4eee33b8dcb29a0e1dc753aa605304
diff --git a/metadata/md5-cache/dev-libs/libxmlb-0.3.2 b/metadata/md5-cache/dev-libs/libxmlb-0.3.2
new file mode 100644
index 0000000..4754c67
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libxmlb-0.3.2
@@ -0,0 +1,15 @@
+BDEPEND=|| ( dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-util/meson-0.47.0 virtual/pkgconfig introspection? ( || ( ( dev-lang/python:3.8 dev-python/setuptools[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ( dev-lang/python:3.7 dev-python/setuptools[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ( dev-lang/python:3.6 dev-python/setuptools[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ( >=dev-lang/python-2.7.5-r2:2.7 dev-python/setuptools[python_targets_python2_7(-),python_single_target_python2_7(+)] ) ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure install setup test
+DEPEND=dev-libs/glib:2 sys-apps/util-linux stemmer? ( dev-libs/snowball-stemmer ) doc? ( dev-util/gtk-doc ) introspection? ( dev-libs/gobject-introspection )
+DESCRIPTION=Library to help create and query binary XML blobs
+EAPI=7
+HOMEPAGE=https://github.com/hughsie/libxmlb
+IUSE=doc introspection stemmer test
+KEYWORDS=*
+LICENSE=LGPL-2.1+
+RDEPEND=dev-libs/glib:2 sys-apps/util-linux stemmer? ( dev-libs/snowball-stemmer )
+RESTRICT=!test? ( test )
+SLOT=0/2
+SRC_URI=https://github.com/hughsie/libxmlb/archive/0.3.2.tar.gz -> libxmlb-0.3.2.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7d372143959aa1c691947c160f241a4f
diff --git a/metadata/md5-cache/dev-libs/libxmlb-0.3.2-r1 b/metadata/md5-cache/dev-libs/libxmlb-0.3.2-r1
new file mode 100644
index 0000000..4754c67
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/libxmlb-0.3.2-r1
@@ -0,0 +1,15 @@
+BDEPEND=|| ( dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-util/meson-0.47.0 virtual/pkgconfig introspection? ( || ( ( dev-lang/python:3.8 dev-python/setuptools[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ( dev-lang/python:3.7 dev-python/setuptools[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ( dev-lang/python:3.6 dev-python/setuptools[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ( >=dev-lang/python-2.7.5-r2:2.7 dev-python/setuptools[python_targets_python2_7(-),python_single_target_python2_7(+)] ) ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure install setup test
+DEPEND=dev-libs/glib:2 sys-apps/util-linux stemmer? ( dev-libs/snowball-stemmer ) doc? ( dev-util/gtk-doc ) introspection? ( dev-libs/gobject-introspection )
+DESCRIPTION=Library to help create and query binary XML blobs
+EAPI=7
+HOMEPAGE=https://github.com/hughsie/libxmlb
+IUSE=doc introspection stemmer test
+KEYWORDS=*
+LICENSE=LGPL-2.1+
+RDEPEND=dev-libs/glib:2 sys-apps/util-linux stemmer? ( dev-libs/snowball-stemmer )
+RESTRICT=!test? ( test )
+SLOT=0/2
+SRC_URI=https://github.com/hughsie/libxmlb/archive/0.3.2.tar.gz -> libxmlb-0.3.2.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7d372143959aa1c691947c160f241a4f
diff --git a/metadata/md5-cache/dev-libs/marisa-aosp-0.0.1-r22 b/metadata/md5-cache/dev-libs/marisa-aosp-0.0.1-r22
deleted file mode 100644
index 8a7a222..0000000
--- a/metadata/md5-cache/dev-libs/marisa-aosp-0.0.1-r22
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git >=dev-vcs/git-1.8.2.1[curl] dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=MARISA: Matching Algorithm with Recursively Implemented StorAge (AOSP fork)
-EAPI=7
-HOMEPAGE=https://android.googlesource.com/platform/external/marisa-trie/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-2 LGPL-2.1 BSD-Google
-PROPERTIES=live live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d5c2672104ae2b02aa219628e98bb632
diff --git a/metadata/md5-cache/dev-libs/marisa-aosp-0.0.1-r47 b/metadata/md5-cache/dev-libs/marisa-aosp-0.0.1-r47
new file mode 100644
index 0000000..a5e702e
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/marisa-aosp-0.0.1-r47
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git >=dev-vcs/git-1.8.2.1[curl] dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=MARISA: Matching Algorithm with Recursively Implemented StorAge (AOSP fork)
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/external/marisa-trie/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-2 LGPL-2.1 BSD-Google
+PROPERTIES=live live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9cfa2f97c4250fedb1c30d30f9f456a0
diff --git a/metadata/md5-cache/dev-libs/marisa-aosp-9999 b/metadata/md5-cache/dev-libs/marisa-aosp-9999
index 4decdb8..37bdc90 100644
--- a/metadata/md5-cache/dev-libs/marisa-aosp-9999
+++ b/metadata/md5-cache/dev-libs/marisa-aosp-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git >=dev-vcs/git-1.8.2.1[curl] dev-vcs/git
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=MARISA: Matching Algorithm with Recursively Implemented StorAge (AOSP fork)
 EAPI=7
 HOMEPAGE=https://android.googlesource.com/platform/external/marisa-trie/
@@ -10,5 +10,5 @@
 PROPERTIES=live live live
 RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=73c2a01a78f13bc646bdc44d06732bed
diff --git a/metadata/md5-cache/dev-libs/modp_b64-0.0.1-r103 b/metadata/md5-cache/dev-libs/modp_b64-0.0.1-r103
deleted file mode 100644
index 2b29505..0000000
--- a/metadata/md5-cache/dev-libs/modp_b64-0.0.1-r103
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Base64 encoder/decoder library.
-EAPI=6
-HOMEPAGE=https://github.com/client9/stringencoders
-IUSE=fuzzer fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_0d9f5ec1543458ecbe0d97bbabbdd59b79d56c5a cros-debug cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_0d9f5ec1543458ecbe0d97bbabbdd59b79d56c5a compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD
-PROPERTIES=live live
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=4fc464f962a87285c5945ed13ad94dfe
diff --git a/metadata/md5-cache/dev-libs/modp_b64-0.0.1-r129 b/metadata/md5-cache/dev-libs/modp_b64-0.0.1-r129
new file mode 100644
index 0000000..054b4fe
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/modp_b64-0.0.1-r129
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Base64 encoder/decoder library.
+EAPI=6
+HOMEPAGE=https://github.com/client9/stringencoders
+IUSE=fuzzer fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_9473949bc842cc166ac244567638b94150a97865 cros-debug cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_9473949bc842cc166ac244567638b94150a97865 compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD
+PROPERTIES=live live
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=6e0db4fd6f163eebb153abb5a3dfcbc4
diff --git a/metadata/md5-cache/dev-libs/modp_b64-9999 b/metadata/md5-cache/dev-libs/modp_b64-9999
index 15e6e10..92fa96b 100644
--- a/metadata/md5-cache/dev-libs/modp_b64-9999
+++ b/metadata/md5-cache/dev-libs/modp_b64-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Base64 encoder/decoder library.
 EAPI=6
 HOMEPAGE=https://github.com/client9/stringencoders
@@ -8,5 +8,5 @@
 LICENSE=BSD
 PROPERTIES=live live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=dd207217309d6bcdb7bd8800381ceb63
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=edd5c3bafbe7d57199262f07b7a18dcc
diff --git a/metadata/md5-cache/dev-libs/nss-3.44-r2 b/metadata/md5-cache/dev-libs/nss-3.44-r2
index 43447cf7..e4601ad 100644
--- a/metadata/md5-cache/dev-libs/nss-3.44-r2
+++ b/metadata/md5-cache/dev-libs/nss-3.44-r2
@@ -11,4 +11,4 @@
 SLOT=0
 SRC_URI=https://archive.mozilla.org/pub/security/nss/releases/NSS_3_44_RTM/src/nss-3.44.tar.gz cacert? ( https://dev.gentoo.org/~axs/distfiles/nss-cacert-class1-class3.patch ) nss-pem? ( https://dev.gentoo.org/~polynomial-c/nss-pem-20160329.tar.xz )
 _eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e7e83451daa12a776b923e79a2c5fe5e
+_md5_=ff41b5688b0b55100a4345f0a8396913
diff --git a/metadata/md5-cache/dev-libs/nss-3.44-r6 b/metadata/md5-cache/dev-libs/nss-3.44-r6
deleted file mode 100644
index 43447cf7..0000000
--- a/metadata/md5-cache/dev-libs/nss-3.44-r6
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install postinst postrm prepare test unpack
-DEPEND=>=virtual/pkgconfig-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/nspr-4.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-db/sqlite-3.8.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=Mozilla's Network Security Services library that implements PKI support
-EAPI=6
-HOMEPAGE=http://www.mozilla.org/projects/security/pki/nss/
-IUSE=cacert cros_host +nss-pem utils abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=|| ( MPL-2.0 GPL-2 LGPL-2.1 )
-RDEPEND=>=dev-libs/nspr-4.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-db/sqlite-3.8.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !<app-crypt/nss-3.44[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-RESTRICT=test
-SLOT=0
-SRC_URI=https://archive.mozilla.org/pub/security/nss/releases/NSS_3_44_RTM/src/nss-3.44.tar.gz cacert? ( https://dev.gentoo.org/~axs/distfiles/nss-cacert-class1-class3.patch ) nss-pem? ( https://dev.gentoo.org/~polynomial-c/nss-pem-20160329.tar.xz )
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e7e83451daa12a776b923e79a2c5fe5e
diff --git a/metadata/md5-cache/dev-libs/nss-3.44-r7 b/metadata/md5-cache/dev-libs/nss-3.44-r7
new file mode 100644
index 0000000..e4601ad
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/nss-3.44-r7
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst postrm prepare test unpack
+DEPEND=>=virtual/pkgconfig-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-libs/nspr-4.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-db/sqlite-3.8.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=Mozilla's Network Security Services library that implements PKI support
+EAPI=6
+HOMEPAGE=http://www.mozilla.org/projects/security/pki/nss/
+IUSE=cacert cros_host +nss-pem utils abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( MPL-2.0 GPL-2 LGPL-2.1 )
+RDEPEND=>=dev-libs/nspr-4.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-db/sqlite-3.8.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !<app-crypt/nss-3.44[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+RESTRICT=test
+SLOT=0
+SRC_URI=https://archive.mozilla.org/pub/security/nss/releases/NSS_3_44_RTM/src/nss-3.44.tar.gz cacert? ( https://dev.gentoo.org/~axs/distfiles/nss-cacert-class1-class3.patch ) nss-pem? ( https://dev.gentoo.org/~polynomial-c/nss-pem-20160329.tar.xz )
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=ff41b5688b0b55100a4345f0a8396913
diff --git a/metadata/md5-cache/dev-libs/opencsd-0.14.3-r1 b/metadata/md5-cache/dev-libs/opencsd-0.14.3-r1
deleted file mode 100644
index 7c8e09b..0000000
--- a/metadata/md5-cache/dev-libs/opencsd-0.14.3-r1
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile install
-DESCRIPTION=Open source CoreSight trace decode library
-EAPI=7
-HOMEPAGE=https://github.com/Linaro/OpenCSD
-IUSE=debug
-KEYWORDS=*
-LICENSE=BSD
-SLOT=0
-SRC_URI=https://github.com/linaro/opencsd/archive/opencsd-0.14.3.tar.xz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9e374d2ca7330a80d74ccdf928267440
diff --git a/metadata/md5-cache/dev-libs/opencsd-1.0.0-r2 b/metadata/md5-cache/dev-libs/opencsd-1.0.0-r2
new file mode 100644
index 0000000..360ee4b
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/opencsd-1.0.0-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install
+DESCRIPTION=Open source CoreSight trace decode library
+EAPI=7
+HOMEPAGE=https://github.com/Linaro/OpenCSD
+IUSE=debug
+KEYWORDS=*
+LICENSE=BSD
+SLOT=0
+SRC_URI=https://github.com/linaro/opencsd/archive/opencsd-1.0.0.tar.xz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9db619bf50faa90b069ab8ad4e928318
diff --git a/metadata/md5-cache/dev-libs/openssl-1.1.1i b/metadata/md5-cache/dev-libs/openssl-1.1.1i
deleted file mode 100644
index edc81d8..0000000
--- a/metadata/md5-cache/dev-libs/openssl-1.1.1i
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=>=dev-lang/perl-5 sctp? ( >=net-misc/lksctp-tools-1.0.12 ) test? ( sys-apps/diffutils sys-devel/bc sys-process/procps )
-DEFINED_PHASES=compile configure install postinst prepare setup test
-DEPEND=>=app-misc/c_rehash-1.7-r1 zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-DESCRIPTION=full-strength general purpose cryptography library (including SSL and TLS)
-EAPI=7
-HOMEPAGE=https://www.openssl.org/
-IUSE=+asm bindist elibc_musl rfc3779 sctp cpu_flags_x86_sse2 sslv3 static-libs test tls-heartbeat vanilla zlib abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=openssl
-PDEPEND=app-misc/ca-certificates
-RDEPEND=>=app-misc/c_rehash-1.7-r1 zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<net-misc/openssh-8.0_p1-r3
-RESTRICT=!bindist? ( bindist ) !test? ( test )
-SLOT=0/1.1
-SRC_URI=mirror://openssl/source/openssl-1.1.1i.tar.gz bindist? ( mirror://gentoo/openssl-1.1.1i-bindist-1.0.tar.xz https://dev.gentoo.org/~whissi/dist/openssl/openssl-1.1.1i-bindist-1.0.tar.xz )
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=61c9ee7d33fed9b354b336cb2242d96a
diff --git a/metadata/md5-cache/dev-libs/openssl-1.1.1i-r1 b/metadata/md5-cache/dev-libs/openssl-1.1.1i-r1
deleted file mode 100644
index edc81d8..0000000
--- a/metadata/md5-cache/dev-libs/openssl-1.1.1i-r1
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=>=dev-lang/perl-5 sctp? ( >=net-misc/lksctp-tools-1.0.12 ) test? ( sys-apps/diffutils sys-devel/bc sys-process/procps )
-DEFINED_PHASES=compile configure install postinst prepare setup test
-DEPEND=>=app-misc/c_rehash-1.7-r1 zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-DESCRIPTION=full-strength general purpose cryptography library (including SSL and TLS)
-EAPI=7
-HOMEPAGE=https://www.openssl.org/
-IUSE=+asm bindist elibc_musl rfc3779 sctp cpu_flags_x86_sse2 sslv3 static-libs test tls-heartbeat vanilla zlib abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=openssl
-PDEPEND=app-misc/ca-certificates
-RDEPEND=>=app-misc/c_rehash-1.7-r1 zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<net-misc/openssh-8.0_p1-r3
-RESTRICT=!bindist? ( bindist ) !test? ( test )
-SLOT=0/1.1
-SRC_URI=mirror://openssl/source/openssl-1.1.1i.tar.gz bindist? ( mirror://gentoo/openssl-1.1.1i-bindist-1.0.tar.xz https://dev.gentoo.org/~whissi/dist/openssl/openssl-1.1.1i-bindist-1.0.tar.xz )
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=61c9ee7d33fed9b354b336cb2242d96a
diff --git a/metadata/md5-cache/dev-libs/openssl-1.1.1k b/metadata/md5-cache/dev-libs/openssl-1.1.1k
new file mode 100644
index 0000000..27ab330
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/openssl-1.1.1k
@@ -0,0 +1,16 @@
+BDEPEND=>=dev-lang/perl-5 sctp? ( >=net-misc/lksctp-tools-1.0.12 ) test? ( sys-apps/diffutils sys-devel/bc sys-process/procps )
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=>=app-misc/c_rehash-1.7-r1 zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+DESCRIPTION=full-strength general purpose cryptography library (including SSL and TLS)
+EAPI=7
+HOMEPAGE=https://www.openssl.org/
+IUSE=+asm bindist elibc_musl rfc3779 sctp cpu_flags_x86_sse2 sslv3 static-libs test tls-heartbeat vanilla zlib abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=openssl
+PDEPEND=app-misc/ca-certificates
+RDEPEND=>=app-misc/c_rehash-1.7-r1 zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<net-misc/openssh-8.0_p1-r3
+RESTRICT=!bindist? ( bindist ) !test? ( test )
+SLOT=0/1.1
+SRC_URI=mirror://openssl/source/openssl-1.1.1k.tar.gz bindist? ( mirror://gentoo/openssl-1.1.1i-bindist-1.0.tar.xz https://dev.gentoo.org/~whissi/dist/openssl/openssl-1.1.1i-bindist-1.0.tar.xz )
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f3d93001db211b35da50b1af3a9629ba
diff --git a/metadata/md5-cache/dev-libs/openssl-1.1.1k-r1 b/metadata/md5-cache/dev-libs/openssl-1.1.1k-r1
new file mode 100644
index 0000000..27ab330
--- /dev/null
+++ b/metadata/md5-cache/dev-libs/openssl-1.1.1k-r1
@@ -0,0 +1,16 @@
+BDEPEND=>=dev-lang/perl-5 sctp? ( >=net-misc/lksctp-tools-1.0.12 ) test? ( sys-apps/diffutils sys-devel/bc sys-process/procps )
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=>=app-misc/c_rehash-1.7-r1 zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+DESCRIPTION=full-strength general purpose cryptography library (including SSL and TLS)
+EAPI=7
+HOMEPAGE=https://www.openssl.org/
+IUSE=+asm bindist elibc_musl rfc3779 sctp cpu_flags_x86_sse2 sslv3 static-libs test tls-heartbeat vanilla zlib abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=openssl
+PDEPEND=app-misc/ca-certificates
+RDEPEND=>=app-misc/c_rehash-1.7-r1 zlib? ( >=sys-libs/zlib-1.2.8-r1[static-libs(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<net-misc/openssh-8.0_p1-r3
+RESTRICT=!bindist? ( bindist ) !test? ( test )
+SLOT=0/1.1
+SRC_URI=mirror://openssl/source/openssl-1.1.1k.tar.gz bindist? ( mirror://gentoo/openssl-1.1.1i-bindist-1.0.tar.xz https://dev.gentoo.org/~whissi/dist/openssl/openssl-1.1.1i-bindist-1.0.tar.xz )
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f3d93001db211b35da50b1af3a9629ba
diff --git a/metadata/md5-cache/dev-python/btsocket-1.0-r20 b/metadata/md5-cache/dev-python/btsocket-1.0-r20
deleted file mode 100644
index 3be1b67..0000000
--- a/metadata/md5-cache/dev-python/btsocket-1.0-r20
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-DESCRIPTION=Bluetooth Socket support module
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/btsocket/
-IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_00b91e25e3bf7c71b460b3870e960124ec6b53ec python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=ff0e36bab37f5787fe9415a9fa0f81e6
diff --git a/metadata/md5-cache/dev-python/btsocket-1.0-r21 b/metadata/md5-cache/dev-python/btsocket-1.0-r21
new file mode 100644
index 0000000..835d7a9
--- /dev/null
+++ b/metadata/md5-cache/dev-python/btsocket-1.0-r21
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+DESCRIPTION=Bluetooth Socket support module
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/btsocket/
+IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_5cc9a8b99ac89b6694f77a27a11613fe1a430581 python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=40147231a3f9a09c560203a6b2ae4cc8
diff --git a/metadata/md5-cache/dev-python/btsocket-9999 b/metadata/md5-cache/dev-python/btsocket-9999
index 4a4fd2c..178c847 100644
--- a/metadata/md5-cache/dev-python/btsocket-9999
+++ b/metadata/md5-cache/dev-python/btsocket-9999
@@ -10,5 +10,5 @@
 RDEPEND=python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=af53dab45f03e29e2a08fc545530ee7c
diff --git a/metadata/md5-cache/dev-python/cherrypy-17.4.1-r3 b/metadata/md5-cache/dev-python/cherrypy-17.4.1-r3
index 73d2229..accbf98 100644
--- a/metadata/md5-cache/dev-python/cherrypy-17.4.1-r3
+++ b/metadata/md5-cache/dev-python/cherrypy-17.4.1-r3
@@ -12,5 +12,5 @@
 RESTRICT=test
 SLOT=0
 SRC_URI=mirror://pypi/C/CherryPy/CherryPy-17.4.1.tar.gz
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d5d66f159bbc7ee8c5f203d7e33d7062
diff --git a/metadata/md5-cache/dev-python/dpkt-1.9.2 b/metadata/md5-cache/dev-python/dpkt-1.9.2
index 12fec85..87ff601 100644
--- a/metadata/md5-cache/dev-python/dpkt-1.9.2
+++ b/metadata/md5-cache/dev-python/dpkt-1.9.2
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=mirror://pypi/d/dpkt/dpkt-1.9.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=d6756cb354431007e8ead76ce0bed00b
diff --git a/metadata/md5-cache/dev-python/google-api-core-1.19.0 b/metadata/md5-cache/dev-python/google-api-core-1.19.0
index 7075c71..3a1bba9 100644
--- a/metadata/md5-cache/dev-python/google-api-core-1.19.0
+++ b/metadata/md5-cache/dev-python/google-api-core-1.19.0
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=mirror://pypi/g/google-api-core/google-api-core-1.19.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=26fa2f6c14e35909c305ccd2b8e5431d
diff --git a/metadata/md5-cache/dev-python/google-cloud-core-1.4.1 b/metadata/md5-cache/dev-python/google-cloud-core-1.4.1
index 76d8a56..369d72e 100644
--- a/metadata/md5-cache/dev-python/google-cloud-core-1.4.1
+++ b/metadata/md5-cache/dev-python/google-cloud-core-1.4.1
@@ -9,5 +9,5 @@
 REQUIRED_USE=|| ( python_targets_pypy3 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )
 SLOT=0
 SRC_URI=mirror://pypi/g/google-cloud-core/google-cloud-core-1.4.1.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=39c4e9cbac84e35b9f6bdb8d3c4ca0a8
diff --git a/metadata/md5-cache/dev-python/google-cloud-logging-1.15.1 b/metadata/md5-cache/dev-python/google-cloud-logging-1.15.1
index 9f2767f..2573915 100644
--- a/metadata/md5-cache/dev-python/google-cloud-logging-1.15.1
+++ b/metadata/md5-cache/dev-python/google-cloud-logging-1.15.1
@@ -11,5 +11,5 @@
 REQUIRED_USE=|| ( python_targets_pypy3 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0
 SRC_URI=mirror://pypi/g/google-cloud-logging/google-cloud-logging-1.15.1.tar.gz
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ff4ee1eb10190e0d0721fedabc109c7c
diff --git a/metadata/md5-cache/dev-python/google-cloud-pubsub-1.0.2 b/metadata/md5-cache/dev-python/google-cloud-pubsub-1.0.2
index 69aa7b7..bd1e829 100644
--- a/metadata/md5-cache/dev-python/google-cloud-pubsub-1.0.2
+++ b/metadata/md5-cache/dev-python/google-cloud-pubsub-1.0.2
@@ -11,5 +11,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=mirror://pypi/g/google-cloud-pubsub/google-cloud-pubsub-1.0.2.tar.gz
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=4c448de6787bc8c04c41c52758b0caca
diff --git a/metadata/md5-cache/dev-python/google-cloud-storage-1.19.0 b/metadata/md5-cache/dev-python/google-cloud-storage-1.19.0
index 4bd9ffc..4722655 100644
--- a/metadata/md5-cache/dev-python/google-cloud-storage-1.19.0
+++ b/metadata/md5-cache/dev-python/google-cloud-storage-1.19.0
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=mirror://pypi/g/google-cloud-storage/google-cloud-storage-1.19.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=f3b72fb8052a863d380e91380a9561b2
diff --git a/metadata/md5-cache/dev-python/google-resumable-media-0.3.3 b/metadata/md5-cache/dev-python/google-resumable-media-0.3.3
index 5a80369..79dc1f1 100644
--- a/metadata/md5-cache/dev-python/google-resumable-media-0.3.3
+++ b/metadata/md5-cache/dev-python/google-resumable-media-0.3.3
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=mirror://pypi/g/google-resumable-media/google-resumable-media-0.3.3.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=88bc75806a0c6c91ac07ea5e381da01d
diff --git a/metadata/md5-cache/dev-python/googleapis-common-protos-1.6.0 b/metadata/md5-cache/dev-python/googleapis-common-protos-1.6.0
index bc9f0ef..cc6f270 100644
--- a/metadata/md5-cache/dev-python/googleapis-common-protos-1.6.0
+++ b/metadata/md5-cache/dev-python/googleapis-common-protos-1.6.0
@@ -11,5 +11,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=mirror://pypi/g/googleapis-common-protos/googleapis-common-protos-1.6.0.tar.gz
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=b2316ff1cc1d3d3720c2f363c526a636
diff --git a/metadata/md5-cache/dev-python/grpc-google-iam-v1-0.12.3 b/metadata/md5-cache/dev-python/grpc-google-iam-v1-0.12.3
index 2fcc1e1..57cbacc 100644
--- a/metadata/md5-cache/dev-python/grpc-google-iam-v1-0.12.3
+++ b/metadata/md5-cache/dev-python/grpc-google-iam-v1-0.12.3
@@ -11,5 +11,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=mirror://pypi/g/grpc-google-iam-v1/grpc-google-iam-v1-0.12.3.tar.gz
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=0e823b92a2ac6f12324a57e0a553bad5
diff --git a/metadata/md5-cache/dev-python/grpcio-1.23.0 b/metadata/md5-cache/dev-python/grpcio-1.23.0
index c4f05cf..33d5057 100644
--- a/metadata/md5-cache/dev-python/grpcio-1.23.0
+++ b/metadata/md5-cache/dev-python/grpcio-1.23.0
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
 SRC_URI=mirror://pypi/g/grpcio/grpcio-1.23.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=299948b313f62735142b7c097dd9ba27
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=70c69c74e8f59f4c4c07a107bebabc8a
diff --git a/metadata/md5-cache/dev-python/grpcio-1.23.0-r2 b/metadata/md5-cache/dev-python/grpcio-1.23.0-r2
new file mode 100644
index 0000000..33d5057
--- /dev/null
+++ b/metadata/md5-cache/dev-python/grpcio-1.23.0-r2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=>=dev-libs/openssl-1.0.2:0=[-bindist] dev-python/cython[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/protobuf-python[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/six[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] net-dns/c-ares:= !<net-libs/grpc-1.16.0[python] sys-libs/zlib:= virtual/python-enum34[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] virtual/python-futures[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+DESCRIPTION=High-performance RPC framework (python libraries)
+EAPI=6
+HOMEPAGE=https://grpc.io
+IUSE=python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=>=dev-libs/openssl-1.0.2:0=[-bindist] dev-python/cython[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/protobuf-python[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/six[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] net-dns/c-ares:= !<net-libs/grpc-1.16.0[python] sys-libs/zlib:= virtual/python-enum34[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] virtual/python-futures[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
+SLOT=0
+SRC_URI=mirror://pypi/g/grpcio/grpcio-1.23.0.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=70c69c74e8f59f4c4c07a107bebabc8a
diff --git a/metadata/md5-cache/dev-python/hid-tools-0.2-r1 b/metadata/md5-cache/dev-python/hid-tools-0.2-r1
index f6acdd4..9d62664 100644
--- a/metadata/md5-cache/dev-python/hid-tools-0.2-r1
+++ b/metadata/md5-cache/dev-python/hid-tools-0.2-r1
@@ -11,5 +11,5 @@
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0
 SRC_URI=https://gitlab.freedesktop.org/libevdev/hid-tools/-/archive/0.2/hid-tools-0.2.tar.gz
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ec8eede038689e100bd2777c942d383d
diff --git a/metadata/md5-cache/dev-python/mkvparse-1.1.0 b/metadata/md5-cache/dev-python/mkvparse-1.1.0
index 735fc97..c30c6f8 100644
--- a/metadata/md5-cache/dev-python/mkvparse-1.1.0
+++ b/metadata/md5-cache/dev-python/mkvparse-1.1.0
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=https://github.com/vi/mkvparse/archive/v1.1.0.tar.gz -> mkvparse-1.1.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=7a8d6083793e412a953bec8c63e3618c
diff --git a/metadata/md5-cache/dev-python/mkvparse-1.1.0-r3 b/metadata/md5-cache/dev-python/mkvparse-1.1.0-r3
index 735fc97..c30c6f8 100644
--- a/metadata/md5-cache/dev-python/mkvparse-1.1.0-r3
+++ b/metadata/md5-cache/dev-python/mkvparse-1.1.0-r3
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=https://github.com/vi/mkvparse/archive/v1.1.0.tar.gz -> mkvparse-1.1.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=7a8d6083793e412a953bec8c63e3618c
diff --git a/metadata/md5-cache/dev-python/mysqlclient-1.4.2-r2 b/metadata/md5-cache/dev-python/mysqlclient-1.4.2-r2
index a60c16e..afe99f4 100644
--- a/metadata/md5-cache/dev-python/mysqlclient-1.4.2-r2
+++ b/metadata/md5-cache/dev-python/mysqlclient-1.4.2-r2
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
 SRC_URI=mirror://pypi/m/mysqlclient/mysqlclient-1.4.2.post1.tar.gz -> mysqlclient-1.4.2-r2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=d3daaaf48c43c690df8d9eaac1b5ebcd
diff --git a/metadata/md5-cache/dev-python/parse-1.16.0-r1 b/metadata/md5-cache/dev-python/parse-1.16.0-r1
index 7a09ea6..35113e0 100644
--- a/metadata/md5-cache/dev-python/parse-1.16.0-r1
+++ b/metadata/md5-cache/dev-python/parse-1.16.0-r1
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 )
 SLOT=0
 SRC_URI=https://github.com/r1chardj0n3s/parse/archive/27db6b3498aeee80aa87c083dda76f2df2d87fa4.zip -> parse-1.16.0.zip
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=3603acd08669affb3ae0209a44e1cd58
diff --git a/metadata/md5-cache/dev-python/pyahocorasick-1.4.0-r1 b/metadata/md5-cache/dev-python/pyahocorasick-1.4.0-r1
index eda5448..9cb5fac 100644
--- a/metadata/md5-cache/dev-python/pyahocorasick-1.4.0-r1
+++ b/metadata/md5-cache/dev-python/pyahocorasick-1.4.0-r1
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
 SRC_URI=mirror://pypi/p/pyahocorasick/pyahocorasick-1.4.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=d438d8752ffe5d16568fe84c63135ce5
diff --git a/metadata/md5-cache/dev-python/pyrad-2.1 b/metadata/md5-cache/dev-python/pyrad-2.1
index 8bde509..5af90fb 100644
--- a/metadata/md5-cache/dev-python/pyrad-2.1
+++ b/metadata/md5-cache/dev-python/pyrad-2.1
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
 SRC_URI=mirror://pypi/p/pyrad/pyrad-2.1.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=5406e1ab0bbcf8ef96538e539cbcfd22
diff --git a/metadata/md5-cache/dev-python/python-uinput-0.11.2 b/metadata/md5-cache/dev-python/python-uinput-0.11.2
index 80d365c..f192ac1 100644
--- a/metadata/md5-cache/dev-python/python-uinput-0.11.2
+++ b/metadata/md5-cache/dev-python/python-uinput-0.11.2
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=mirror://pypi/p/python-uinput/python-uinput-0.11.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=dede1210bd2bb78c267833e3d792863d
diff --git a/metadata/md5-cache/dev-python/python-uinput-0.11.2-r4 b/metadata/md5-cache/dev-python/python-uinput-0.11.2-r4
index 80d365c..f192ac1 100644
--- a/metadata/md5-cache/dev-python/python-uinput-0.11.2-r4
+++ b/metadata/md5-cache/dev-python/python-uinput-0.11.2-r4
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 )
 SLOT=0
 SRC_URI=mirror://pypi/p/python-uinput/python-uinput-0.11.2.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=dede1210bd2bb78c267833e3d792863d
diff --git a/metadata/md5-cache/dev-python/ws4py-0.5.1 b/metadata/md5-cache/dev-python/ws4py-0.5.1
index 9804f9e..0224e4b 100644
--- a/metadata/md5-cache/dev-python/ws4py-0.5.1
+++ b/metadata/md5-cache/dev-python/ws4py-0.5.1
@@ -11,5 +11,5 @@
 RESTRICT=!test? ( test )
 SLOT=0
 SRC_URI=https://github.com/Lawouach/WebSocket-for-Python/archive/0.5.1.tar.gz -> ws4py-0.5.1.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	vcs-snapshot	3be1ab44131e8c0bbdaa75823008444b	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	vcs-snapshot	3be1ab44131e8c0bbdaa75823008444b	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=eec26d787b5ca77900387b83133c2d28
diff --git a/metadata/md5-cache/dev-rust/9s-0.1.0-r26 b/metadata/md5-cache/dev-rust/9s-0.1.0-r26
deleted file mode 100644
index 2d79cf2..0000000
--- a/metadata/md5-cache/dev-rust/9s-0.1.0-r26
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/getopts:= dev-rust/libc:= dev-rust/libchromeos:= dev-rust/log:= dev-rust/p9:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Server binary for the 9P file system protocol
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/9s/
-IUSE=test cros_host cros_workon_tree_721a5c0f08ec5dabc2fdf2a8e0aec03a5d8942e5 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<chromeos-base/crosvm-0.0.1-r260 !dev-rust/9s:0.1.0
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=85dc51d8c659e1f47965523f442d162a
diff --git a/metadata/md5-cache/dev-rust/9s-9999 b/metadata/md5-cache/dev-rust/9s-9999
deleted file mode 100644
index ad44c51e..0000000
--- a/metadata/md5-cache/dev-rust/9s-9999
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/getopts:= dev-rust/libc:= dev-rust/libchromeos:= dev-rust/log:= dev-rust/p9:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Server binary for the 9P file system protocol
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/9s/
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<chromeos-base/crosvm-0.0.1-r260 !dev-rust/9s:0.1.0
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e48542aa8b40a2d3dfa82ca6fea7d3b8
diff --git a/metadata/md5-cache/dev-rust/addr2line-0.6.0 b/metadata/md5-cache/dev-rust/addr2line-0.6.0
index 4f27001..023e82d 100644
--- a/metadata/md5-cache/dev-rust/addr2line-0.6.0
+++ b/metadata/md5-cache/dev-rust/addr2line-0.6.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty addr2line crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/adler-1.0.2 b/metadata/md5-cache/dev-rust/adler-1.0.2
new file mode 100644
index 0000000..f00227e
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/adler-1.0.2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=A simple clean-room implementation of the Adler-32 checksum
+EAPI=7
+HOMEPAGE=https://github.com/jonas-schievink/adler.git
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.2/r0
+SRC_URI=https://crates.io/api/v1/crates/adler/1.0.2/download -> adler-1.0.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f694c59bf666233f278a3882a3966b1a
diff --git a/metadata/md5-cache/dev-rust/ahash-0.4.7 b/metadata/md5-cache/dev-rust/ahash-0.4.7
new file mode 100644
index 0000000..1b64b2e
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/ahash-0.4.7
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/const-random-0.1.6:= <dev-rust/const-random-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=A non-cryptographic hash function using AES-NI for high performance
+EAPI=7
+HOMEPAGE=https://crates.io/crates/ahash
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/const-random-0.1.6:= <dev-rust/const-random-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.7/r0
+SRC_URI=https://crates.io/api/v1/crates/ahash/0.4.7/download -> ahash-0.4.7.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=41eb732364a572fb594692f295469b25
diff --git a/metadata/md5-cache/dev-rust/aho-corasick-0.6.10 b/metadata/md5-cache/dev-rust/aho-corasick-0.6.10
index 6da4395..40fe157 100644
--- a/metadata/md5-cache/dev-rust/aho-corasick-0.6.10
+++ b/metadata/md5-cache/dev-rust/aho-corasick-0.6.10
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/memchr-2.0.0:= <dev-rust/memchr-3.0.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Fast multiple substring searching with finite state machines.
 EAPI=6
 HOMEPAGE=https://docs.rs/crate/aho-corasick/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.10/r0
 SRC_URI=https://crates.io/api/v1/crates/aho-corasick/0.6.10/download -> aho-corasick-0.6.10.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=5c0a0dd5a3f52108e3c1cef9d1ed40f3
diff --git a/metadata/md5-cache/dev-rust/aho-corasick-0.7.18 b/metadata/md5-cache/dev-rust/aho-corasick-0.7.18
new file mode 100644
index 0000000..6be0f74
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/aho-corasick-0.7.18
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/memchr-2.4.0:= <dev-rust/memchr-3.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Fast multiple substring searching.
+EAPI=7
+HOMEPAGE=https://github.com/BurntSushi/aho-corasick
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/memchr-2.4.0:= <dev-rust/memchr-3.0.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.7.18/r0
+SRC_URI=https://crates.io/api/v1/crates/aho-corasick/0.7.18/download -> aho-corasick-0.7.18.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9947696dcf25f8e14246eafb9cefe83d
diff --git a/metadata/md5-cache/dev-rust/aho-corasick-0.7.6 b/metadata/md5-cache/dev-rust/aho-corasick-0.7.6
deleted file mode 100644
index d2bc131..0000000
--- a/metadata/md5-cache/dev-rust/aho-corasick-0.7.6
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/memchr-2.2.0:= <dev-rust/memchr-3.0.0 >=virtual/rust-1.39.0:=
-DESCRIPTION=Fast multiple substring searching with finite state machines.
-EAPI=7
-HOMEPAGE=https://docs.rs/crate/aho-corasick/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=MIT
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.7.6/r0
-SRC_URI=https://crates.io/api/v1/crates/aho-corasick/0.7.6/download -> aho-corasick-0.7.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=647964e50dd94558b1c00ba748520bf7
diff --git a/metadata/md5-cache/dev-rust/alsa-sys-0.2.0 b/metadata/md5-cache/dev-rust/alsa-sys-0.2.0
index 0897a15..cc4a7de 100644
--- a/metadata/md5-cache/dev-rust/alsa-sys-0.2.0
+++ b/metadata/md5-cache/dev-rust/alsa-sys-0.2.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3 >=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0 >=media-libs/alsa-lib-1.1.8-r3:= <media-libs/alsa-lib-2.0.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=FFI bindings for the ALSA project (Advanced Linux Sound Architecture)
 EAPI=6
 HOMEPAGE=https://docs.rs/alsa-sys
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.0/r0
 SRC_URI=https://crates.io/api/v1/crates/alsa-sys/0.2.0/download -> alsa-sys-0.2.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6ee2ffc215c61611cea439a928807a20
diff --git a/metadata/md5-cache/dev-rust/android_log-sys-0.2.0 b/metadata/md5-cache/dev-rust/android_log-sys-0.2.0
index 9eefec6..16c8486 100644
--- a/metadata/md5-cache/dev-rust/android_log-sys-0.2.0
+++ b/metadata/md5-cache/dev-rust/android_log-sys-0.2.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty android_log-sys crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/ansi_term-0.11.0 b/metadata/md5-cache/dev-rust/ansi_term-0.11.0
index 6808adf..cec950a 100644
--- a/metadata/md5-cache/dev-rust/ansi_term-0.11.0
+++ b/metadata/md5-cache/dev-rust/ansi_term-0.11.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/winapi-0.3.4:= <dev-rust/winapi-0.4.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Library for ANSI terminal colours and styles (bold, underline).
 EAPI=6
 HOMEPAGE=https://github.com/ogham/rust-ansi-term
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.11.0/r0
 SRC_URI=https://crates.io/api/v1/crates/ansi_term/0.11.0/download -> ansi_term-0.11.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=4ffb9be5a3ecd0fac6d7c4ec948577f2
diff --git a/metadata/md5-cache/dev-rust/ansi_term-0.11.0-r1 b/metadata/md5-cache/dev-rust/ansi_term-0.11.0-r1
index 750cd3f..9796a9f 100644
--- a/metadata/md5-cache/dev-rust/ansi_term-0.11.0-r1
+++ b/metadata/md5-cache/dev-rust/ansi_term-0.11.0-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/winapi-0.3.4:= <dev-rust/winapi-0.4.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Library for ANSI terminal colours and styles (bold, underline).
 EAPI=6
 HOMEPAGE=https://github.com/ogham/rust-ansi-term
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.11.0/r1
 SRC_URI=https://crates.io/api/v1/crates/ansi_term/0.11.0/download -> ansi_term-0.11.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=4ffb9be5a3ecd0fac6d7c4ec948577f2
diff --git a/metadata/md5-cache/dev-rust/anyhow-1.0.32 b/metadata/md5-cache/dev-rust/anyhow-1.0.32
deleted file mode 100644
index 1319726..0000000
--- a/metadata/md5-cache/dev-rust/anyhow-1.0.32
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=A trait object based error type for easy idiomatic error handling.
-EAPI=7
-HOMEPAGE=https://github.com/thiserror/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.32/r0
-SRC_URI=https://crates.io/api/v1/crates/anyhow/1.0.32/download -> anyhow-1.0.32.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3da61c848bf45dba7ac32cba2480afe3
diff --git a/metadata/md5-cache/dev-rust/anyhow-1.0.35 b/metadata/md5-cache/dev-rust/anyhow-1.0.35
new file mode 100644
index 0000000..64cb6f1
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/anyhow-1.0.35
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=A trait object based error type for easy idiomatic error handling.
+EAPI=7
+HOMEPAGE=https://github.com/thiserror/
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.35/r0
+SRC_URI=https://crates.io/api/v1/crates/anyhow/1.0.35/download -> anyhow-1.0.35.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3da61c848bf45dba7ac32cba2480afe3
diff --git a/metadata/md5-cache/dev-rust/arc-swap-0.4.5 b/metadata/md5-cache/dev-rust/arc-swap-0.4.5
new file mode 100644
index 0000000..9a22347
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/arc-swap-0.4.5
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Atomically swappable Arc
+EAPI=7
+HOMEPAGE=https://github.com/vorner/arc-swap
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( Apache-2.0 MIT )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.5/r0
+SRC_URI=https://crates.io/api/v1/crates/arc-swap/0.4.5/download -> arc-swap-0.4.5.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0ced88617b45098066e88590f8d47c98
diff --git a/metadata/md5-cache/dev-rust/arrayvec-0.4.10 b/metadata/md5-cache/dev-rust/arrayvec-0.4.10
index daee870..1fa9c08 100644
--- a/metadata/md5-cache/dev-rust/arrayvec-0.4.10
+++ b/metadata/md5-cache/dev-rust/arrayvec-0.4.10
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/nodrop-0.1*:= =dev-rust/serde-1*:= =dev-rust/bencher-0.1*:= =dev-rust/matches-0.1*:= =dev-rust/serde_test-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A vector with fixed capacity, backed by an array (it can be stored on the stack too)
 EAPI=6
 HOMEPAGE=https://github.com/bluss/arrayvec
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.10/r0
 SRC_URI=https://crates.io/api/v1/crates/arrayvec/0.4.10/download -> arrayvec-0.4.10.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f68f6d45109c58bdcff0e3f139087c6b
diff --git a/metadata/md5-cache/dev-rust/ascii-1.0.0 b/metadata/md5-cache/dev-rust/ascii-1.0.0
index 584c952..8c89963 100644
--- a/metadata/md5-cache/dev-rust/ascii-1.0.0
+++ b/metadata/md5-cache/dev-rust/ascii-1.0.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/serde-1.0.25:= <dev-rust/serde-2 >=dev-rust/serde_test-1:= <dev-rust/serde_test-2 >=virtual/rust-1.39.0:=
 DESCRIPTION=ASCII-only equivalents to 'char', 'str' and 'String'.
 EAPI=7
 HOMEPAGE=https://docs.rs/crate/ascii/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.0/r0
 SRC_URI=https://crates.io/api/v1/crates/ascii/1.0.0/download -> ascii-1.0.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=e08e7df2ca251a739a0e4bef2c4e8747
diff --git a/metadata/md5-cache/dev-rust/assertions-0.1.0-r7 b/metadata/md5-cache/dev-rust/assertions-0.1.0-r7
deleted file mode 100644
index f62f34c..0000000
--- a/metadata/md5-cache/dev-rust/assertions-0.1.0-r7
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Crates for compile-time assertion macro.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/assertions
-IUSE=test cros_host cros_workon_tree_dbe587d866956d88c4445de8a9380cca33c6a231 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!!<=dev-rust/assertions-0.1.0-r3
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r7
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=5614fbc2e1cf657880337d43c59494d1
diff --git a/metadata/md5-cache/dev-rust/assertions-0.1.0-r8 b/metadata/md5-cache/dev-rust/assertions-0.1.0-r8
new file mode 100644
index 0000000..5250da4
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/assertions-0.1.0-r8
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Crates for compile-time assertion macro.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/assertions
+IUSE=test cros_host cros_workon_tree_dbe587d866956d88c4445de8a9380cca33c6a231 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!!<=dev-rust/assertions-0.1.0-r3
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r8
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=413de1215c1856c24609f29c5e90edad
diff --git a/metadata/md5-cache/dev-rust/assertions-9999 b/metadata/md5-cache/dev-rust/assertions-9999
index dd894c5..b27a92c 100644
--- a/metadata/md5-cache/dev-rust/assertions-9999
+++ b/metadata/md5-cache/dev-rust/assertions-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Crates for compile-time assertion macro.
 EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/assertions
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/assertions
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=!!<=dev-rust/assertions-0.1.0-r3
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b343952264928f5ed2eca30e22c25259
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1056132a0a9a16dd33a20f20f247112e
diff --git a/metadata/md5-cache/dev-rust/async-task-4.0.3 b/metadata/md5-cache/dev-rust/async-task-4.0.3
new file mode 100644
index 0000000..bfebd31
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/async-task-4.0.3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Task abstraction for building executors
+EAPI=7
+HOMEPAGE=https://github.com/smol-rs/async-task
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=4.0.3/r0
+SRC_URI=https://crates.io/api/v1/crates/async-task/4.0.3/download -> async-task-4.0.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e0f7e37e17e8159fd1c82f885c9c2675
diff --git a/metadata/md5-cache/dev-rust/async-trait-0.1.36 b/metadata/md5-cache/dev-rust/async-trait-0.1.36
index fdb5ff8..3d3011a 100644
--- a/metadata/md5-cache/dev-rust/async-trait-0.1.36
+++ b/metadata/md5-cache/dev-rust/async-trait-0.1.36
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Async trait methods
 EAPI=7
 HOMEPAGE=https://github.com/dtolnay/async-trait
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.36/r0
 SRC_URI=https://crates.io/api/v1/crates/async-trait/0.1.36/download -> async-trait-0.1.36.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d0fef127d24456c9594aa350577c8211
diff --git a/metadata/md5-cache/dev-rust/atty-0.2.11 b/metadata/md5-cache/dev-rust/atty-0.2.11
deleted file mode 100644
index eb7685f..0000000
--- a/metadata/md5-cache/dev-rust/atty-0.2.11
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/termion-1.5.1:= >=dev-rust/libc-0.2.0:= >=dev-rust/winapi-0.3.0:= >=virtual/rust-1.39.0:=
-DESCRIPTION=are you or are you not a tty?
-EAPI=6
-HOMEPAGE=https://github.com/softprops/atty
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.2.11/r0
-SRC_URI=https://crates.io/api/v1/crates/atty/0.2.11/download -> atty-0.2.11.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=592853346ae42d025acbaa00aa52594d
diff --git a/metadata/md5-cache/dev-rust/atty-0.2.14 b/metadata/md5-cache/dev-rust/atty-0.2.14
new file mode 100644
index 0000000..a9ffbe6
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/atty-0.2.14
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/libc-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A simple interface for querying atty
+EAPI=7
+HOMEPAGE=https://github.com/softprops/atty
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/libc-0.2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.14/r0
+SRC_URI=https://crates.io/api/v1/crates/atty/0.2.14/download -> atty-0.2.14.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4ed41431251e3947f1bbc62c94fdb3c5
diff --git a/metadata/md5-cache/dev-rust/autocfg-0.1.2 b/metadata/md5-cache/dev-rust/autocfg-0.1.2
index 8bbc37d..0a3137c 100644
--- a/metadata/md5-cache/dev-rust/autocfg-0.1.2
+++ b/metadata/md5-cache/dev-rust/autocfg-0.1.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust library for build scripts to automatically configure code based on compiler support
 EAPI=6
 HOMEPAGE=https://github.com/cuviper/autocfg
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.2/r0
 SRC_URI=https://crates.io/api/v1/crates/autocfg/0.1.2/download -> autocfg-0.1.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fda9579d780a9d1e29c9ea95abe4cbef
diff --git a/metadata/md5-cache/dev-rust/autocfg-1.0.0 b/metadata/md5-cache/dev-rust/autocfg-1.0.0
deleted file mode 100644
index 283305f..0000000
--- a/metadata/md5-cache/dev-rust/autocfg-1.0.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=A Rust library for build scripts to automatically configure code based on compiler support
-EAPI=7
-HOMEPAGE=https://github.com/cuviper/autocfg
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.0/r0
-SRC_URI=https://crates.io/api/v1/crates/autocfg/1.0.0/download -> autocfg-1.0.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6de1f03da89ff62be88bedaa5800e08e
diff --git a/metadata/md5-cache/dev-rust/autocfg-1.0.1 b/metadata/md5-cache/dev-rust/autocfg-1.0.1
new file mode 100644
index 0000000..8618dca
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/autocfg-1.0.1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=A Rust library for build scripts to automatically configure code based on compiler support
+EAPI=7
+HOMEPAGE=https://github.com/cuviper/autocfg
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.1/r0
+SRC_URI=https://crates.io/api/v1/crates/autocfg/1.0.1/download -> autocfg-1.0.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6de1f03da89ff62be88bedaa5800e08e
diff --git a/metadata/md5-cache/dev-rust/automod-0.1.1 b/metadata/md5-cache/dev-rust/automod-0.1.1
index 5974009..ca979a9 100644
--- a/metadata/md5-cache/dev-rust/automod-0.1.1
+++ b/metadata/md5-cache/dev-rust/automod-0.1.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty automod crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/average-0.9.3 b/metadata/md5-cache/dev-rust/average-0.9.3
index b49e985..ea2dd97 100644
--- a/metadata/md5-cache/dev-rust/average-0.9.3
+++ b/metadata/md5-cache/dev-rust/average-0.9.3
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty average crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.9.3/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/backtrace-0.3.7 b/metadata/md5-cache/dev-rust/backtrace-0.3.7
index cb91da3..52fdc11 100644
--- a/metadata/md5-cache/dev-rust/backtrace-0.3.7
+++ b/metadata/md5-cache/dev-rust/backtrace-0.3.7
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/cfg-if-0.1.0:= >=dev-rust/libc-0.2.0:= >=dev-rust/addr2line-0.6.0:= >=dev-rust/backtrace-sys-0.1.3:= >=dev-rust/rustc-demangle-0.1.4:= >=dev-rust/cpp_demangle-0.2.3:= >=dev-rust/findshlibs-0.3.3:= >=dev-rust/gimli-0.15.0:= >=dev-rust/memmap-0.6.2:= >=dev-rust/object-0.7.0:= >=dev-rust/rustc-serialize-0.3.0:= >=dev-rust/serde-1.0.0:= >=dev-rust/serde_derive-1.0.0:= >=dev-rust/winapi-0.3.3:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A library for acquiring backtraces at runtime for Rust.
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/backtrace-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.7/r0
 SRC_URI=https://crates.io/api/v1/crates/backtrace/0.3.7/download -> backtrace-0.3.7.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e4cd0864d529941f7ec234bc26f4511a
diff --git a/metadata/md5-cache/dev-rust/backtrace-sys-0.1.16 b/metadata/md5-cache/dev-rust/backtrace-sys-0.1.16
index 7d904755..9b89dbd 100644
--- a/metadata/md5-cache/dev-rust/backtrace-sys-0.1.16
+++ b/metadata/md5-cache/dev-rust/backtrace-sys-0.1.16
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/cc-1.0.0:= >=dev-rust/libc-0.2.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Bindings to the libbacktrace gcc library
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/backtrace-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.16/r0
 SRC_URI=https://crates.io/api/v1/crates/backtrace-sys/0.1.16/download -> backtrace-sys-0.1.16.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3ff642e41e05fc661b866cba653b8728
diff --git a/metadata/md5-cache/dev-rust/backtrace-sys-0.1.3 b/metadata/md5-cache/dev-rust/backtrace-sys-0.1.3
deleted file mode 100644
index a609752..0000000
--- a/metadata/md5-cache/dev-rust/backtrace-sys-0.1.3
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty backtrace-sys crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.1.3/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a24171f2ba7b7f5d00b155293ff5debe
diff --git a/metadata/md5-cache/dev-rust/base64-0.13.0 b/metadata/md5-cache/dev-rust/base64-0.13.0
new file mode 100644
index 0000000..53556b7d
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/base64-0.13.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=encodes and decodes base64 as bytes or utf8
+EAPI=7
+HOMEPAGE=https://github.com/marshallpierce/rust-base64
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.13.0/r0
+SRC_URI=https://crates.io/api/v1/crates/base64/0.13.0/download -> base64-0.13.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4de61c817ce63fe88aa27587443baa00
diff --git a/metadata/md5-cache/dev-rust/bencher-0.1.5 b/metadata/md5-cache/dev-rust/bencher-0.1.5
index 366c9cb..7d45428 100644
--- a/metadata/md5-cache/dev-rust/bencher-0.1.5
+++ b/metadata/md5-cache/dev-rust/bencher-0.1.5
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty bencher crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.5/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/bincode-0.8.0 b/metadata/md5-cache/dev-rust/bincode-0.8.0
index 898b1b2..2074ef9 100644
--- a/metadata/md5-cache/dev-rust/bincode-0.8.0
+++ b/metadata/md5-cache/dev-rust/bincode-0.8.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty bincode crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8e4a6d1ef01671ebbfa11bd51c59761b
diff --git a/metadata/md5-cache/dev-rust/bincode-1.0.1 b/metadata/md5-cache/dev-rust/bincode-1.0.1
index 499d435..58723ff 100644
--- a/metadata/md5-cache/dev-rust/bincode-1.0.1
+++ b/metadata/md5-cache/dev-rust/bincode-1.0.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/byteorder-1.2.0:= <dev-rust/byteorder-2.0.0 >=dev-rust/serde-1.0.63:= <dev-rust/serde-2.0.0 >=dev-rust/serde_derive-1.0.27:= <dev-rust/serde_derive-2.0.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=A compact encoder / decoder pair that uses a binary zero-fluff encoding scheme
 EAPI=6
 HOMEPAGE=https://github.com/TyOverby/bincode
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.1/r0
 SRC_URI=https://crates.io/api/v1/crates/bincode/1.0.1/download -> bincode-1.0.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=2eb47e8f951ce499a687790650e1510e
diff --git a/metadata/md5-cache/dev-rust/bincode-1.0.1-r1 b/metadata/md5-cache/dev-rust/bincode-1.0.1-r1
index 610ceea..a188ffa 100644
--- a/metadata/md5-cache/dev-rust/bincode-1.0.1-r1
+++ b/metadata/md5-cache/dev-rust/bincode-1.0.1-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/byteorder-1.2.0:= <dev-rust/byteorder-2.0.0 >=dev-rust/serde-1.0.63:= <dev-rust/serde-2.0.0 >=dev-rust/serde_derive-1.0.27:= <dev-rust/serde_derive-2.0.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=A compact encoder / decoder pair that uses a binary zero-fluff encoding scheme
 EAPI=6
 HOMEPAGE=https://github.com/TyOverby/bincode
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.1/r1
 SRC_URI=https://crates.io/api/v1/crates/bincode/1.0.1/download -> bincode-1.0.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=2eb47e8f951ce499a687790650e1510e
diff --git a/metadata/md5-cache/dev-rust/bincode-1.1.2 b/metadata/md5-cache/dev-rust/bincode-1.1.2
index a87de67..94e46c3 100644
--- a/metadata/md5-cache/dev-rust/bincode-1.1.2
+++ b/metadata/md5-cache/dev-rust/bincode-1.1.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/autocfg-0.1*:= =dev-rust/byteorder-1.3*:= >=dev-rust/serde-1.0.63:= >=dev-rust/serde_bytes-0.10.3:= >=dev-rust/serde_derive-1.0.27:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A compact encoder / decoder pair that uses a binary zero-fluff encoding scheme
 EAPI=6
 HOMEPAGE=https://github.com/TyOverby/bincode
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.1.2/r0
 SRC_URI=https://crates.io/api/v1/crates/bincode/1.1.2/download -> bincode-1.1.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=48c863915e3111592539e0c3a8a4fcbb
diff --git a/metadata/md5-cache/dev-rust/bindgen-0.49.0 b/metadata/md5-cache/dev-rust/bindgen-0.49.0
index 4e46738..3f4527a 100644
--- a/metadata/md5-cache/dev-rust/bindgen-0.49.0
+++ b/metadata/md5-cache/dev-rust/bindgen-0.49.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty bindgen crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.49.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/bindgen-0.51.0 b/metadata/md5-cache/dev-rust/bindgen-0.51.0
index f0bb953..5150b16 100644
--- a/metadata/md5-cache/dev-rust/bindgen-0.51.0
+++ b/metadata/md5-cache/dev-rust/bindgen-0.51.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty bindgen crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.51.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/bindgen-0.56.0 b/metadata/md5-cache/dev-rust/bindgen-0.56.0
index 844abcb..2410f60 100644
--- a/metadata/md5-cache/dev-rust/bindgen-0.56.0
+++ b/metadata/md5-cache/dev-rust/bindgen-0.56.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bitflags-1.0.3:= <dev-rust/bitflags-2.0.0 =dev-rust/cexpr-0.4*:= =dev-rust/clap-2*:= =dev-rust/clang-sys-1*:= =dev-rust/env_logger-0.8*:= =dev-rust/lazycell-1*:= =dev-rust/lazy_static-1*:= >=dev-rust/peeking_take_while-0.1.2:= <dev-rust/peeking_take_while-0.2.0 =dev-rust/quote-1*:= =dev-rust/regex-1*:= >=dev-rust/rustc-hash-1.0.1:= <dev-rust/rustc-hash-2.0.0 =dev-rust/shlex-0.1*:= =dev-rust/proc-macro2-1*:= =dev-rust/which-3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Automatically generates Rust FFI bindings to C and C++ libraries.
 EAPI=7
 HOMEPAGE=https://github.com/rust-lang/rust-bindgen
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/0.56.0
 SRC_URI=https://crates.io/api/v1/crates/bindgen/0.56.0/download -> bindgen-0.56.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=87fe380988c06d8af839ab618d5df5e1
diff --git a/metadata/md5-cache/dev-rust/bindgen-0.56.0-r1 b/metadata/md5-cache/dev-rust/bindgen-0.56.0-r1
new file mode 100644
index 0000000..d902c7f
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/bindgen-0.56.0-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/bitflags-1.0.3:= <dev-rust/bitflags-2.0.0 =dev-rust/cexpr-0.4*:= =dev-rust/clap-2*:= =dev-rust/clang-sys-1*:= =dev-rust/env_logger-0.8*:= =dev-rust/lazycell-1*:= =dev-rust/lazy_static-1*:= >=dev-rust/peeking_take_while-0.1.2:= <dev-rust/peeking_take_while-0.2.0 =dev-rust/quote-1*:= =dev-rust/regex-1*:= >=dev-rust/rustc-hash-1.0.1:= <dev-rust/rustc-hash-2.0.0 =dev-rust/shlex-0.1*:= =dev-rust/proc-macro2-1*:= =dev-rust/which-3*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Automatically generates Rust FFI bindings to C and C++ libraries.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang/rust-bindgen
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.56.0-r1
+SRC_URI=https://crates.io/api/v1/crates/bindgen/0.56.0/download -> bindgen-0.56.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=87fe380988c06d8af839ab618d5df5e1
diff --git a/metadata/md5-cache/dev-rust/bindgen-0.56.0-r2 b/metadata/md5-cache/dev-rust/bindgen-0.56.0-r2
new file mode 100644
index 0000000..b648dc8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/bindgen-0.56.0-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/bitflags-1.0.3:= <dev-rust/bitflags-2.0.0 =dev-rust/cexpr-0.4*:= =dev-rust/clap-2*:= =dev-rust/clang-sys-1*:= =dev-rust/env_logger-0.8*:= =dev-rust/lazycell-1*:= =dev-rust/lazy_static-1*:= >=dev-rust/peeking_take_while-0.1.2:= <dev-rust/peeking_take_while-0.2.0 =dev-rust/quote-1*:= =dev-rust/regex-1*:= >=dev-rust/rustc-hash-1.0.1:= <dev-rust/rustc-hash-2.0.0 =dev-rust/shlex-0.1*:= =dev-rust/proc-macro2-1*:= =dev-rust/which-3*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Automatically generates Rust FFI bindings to C and C++ libraries.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang/rust-bindgen
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.56.0-r2
+SRC_URI=https://crates.io/api/v1/crates/bindgen/0.56.0/download -> bindgen-0.56.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=87fe380988c06d8af839ab618d5df5e1
diff --git a/metadata/md5-cache/dev-rust/bitflags-0.7.0 b/metadata/md5-cache/dev-rust/bitflags-0.7.0
index 70f51b5..6c84861 100644
--- a/metadata/md5-cache/dev-rust/bitflags-0.7.0
+++ b/metadata/md5-cache/dev-rust/bitflags-0.7.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust macro to generate structures which behave like a set of bitflags
 EAPI=6
 HOMEPAGE=https://github.com/bitflags/bitflags
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.0/r0
 SRC_URI=https://crates.io/api/v1/crates/bitflags/0.7.0/download -> bitflags-0.7.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=463c7f17778d40fbf01d217c7f851547
diff --git a/metadata/md5-cache/dev-rust/bitflags-1.2.1 b/metadata/md5-cache/dev-rust/bitflags-1.2.1
index 001f38c..831d353 100644
--- a/metadata/md5-cache/dev-rust/bitflags-1.2.1
+++ b/metadata/md5-cache/dev-rust/bitflags-1.2.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust macro to generate structures which behave like a set of bitflags
 EAPI=7
 HOMEPAGE=https://github.com/bitflags/bitflags
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.2.1/r0
 SRC_URI=https://crates.io/api/v1/crates/bitflags/1.2.1/download -> bitflags-1.2.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=6fa7d524654d655573c4393309d0f425
diff --git a/metadata/md5-cache/dev-rust/built-0.3.1 b/metadata/md5-cache/dev-rust/built-0.3.1
index db676e4..5bb6bc3 100644
--- a/metadata/md5-cache/dev-rust/built-0.3.1
+++ b/metadata/md5-cache/dev-rust/built-0.3.1
@@ -1,12 +1,12 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/toml-0.5:= =dev-rust/chrono-0.4*:= =dev-rust/git2-0.9*:= >=dev-rust/semver-0.9:= =dev-rust/tempdir-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=built provides a crate with information from the time it was built.
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.1/r0
 SRC_URI=https://crates.io/api/v1/crates/built/0.3.1/download -> built-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=1cae24a47068ad758db699913d13eb56
diff --git a/metadata/md5-cache/dev-rust/byteorder-1.1.0 b/metadata/md5-cache/dev-rust/byteorder-1.1.0
index 5288a6d..cbd258d 100644
--- a/metadata/md5-cache/dev-rust/byteorder-1.1.0
+++ b/metadata/md5-cache/dev-rust/byteorder-1.1.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/quickcheck-0.4.2:= ~dev-rust/rand-0.3.20:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Library for reading/writing numbers in big-endian and little-endian
 EAPI=6
 HOMEPAGE=https://github.com/BurntSushi/byteorder
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Unlicense )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.1.0/r0
 SRC_URI=https://crates.io/api/v1/crates/byteorder/1.1.0/download -> byteorder-1.1.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e2eeaf49e7b2349ef3942cb4225bb7c2
diff --git a/metadata/md5-cache/dev-rust/byteorder-1.2.7 b/metadata/md5-cache/dev-rust/byteorder-1.2.7
index 4acb5c3..cebc15b 100644
--- a/metadata/md5-cache/dev-rust/byteorder-1.2.7
+++ b/metadata/md5-cache/dev-rust/byteorder-1.2.7
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty byteorder crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Unlicense )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.2.7/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=7b9619320573e8d34437d07ff1296f9a
diff --git a/metadata/md5-cache/dev-rust/byteorder-1.3.2 b/metadata/md5-cache/dev-rust/byteorder-1.3.2
index 319e451..f98eb99 100644
--- a/metadata/md5-cache/dev-rust/byteorder-1.3.2
+++ b/metadata/md5-cache/dev-rust/byteorder-1.3.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Library for reading/writing numbers in big-endian and little-endian
 EAPI=7
 HOMEPAGE=https://github.com/BurntSushi/byteorder
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Unlicense )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.3.2/r0
 SRC_URI=https://crates.io/api/v1/crates/byteorder/1.3.2/download -> byteorder-1.3.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=10702a44fba7d162a1988a6183ee0edb
diff --git a/metadata/md5-cache/dev-rust/byteorder-1.4.3 b/metadata/md5-cache/dev-rust/byteorder-1.4.3
new file mode 100644
index 0000000..93ce21b
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/byteorder-1.4.3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Library for reading/writing numbers in big-endian and little-endian.
+EAPI=7
+HOMEPAGE=https://github.com/BurntSushi/byteorder
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.4.3/r0
+SRC_URI=https://crates.io/api/v1/crates/byteorder/1.4.3/download -> byteorder-1.4.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=26177fa21b67c6c524ca22ea6eee8c78
diff --git a/metadata/md5-cache/dev-rust/bytes-0.3.0 b/metadata/md5-cache/dev-rust/bytes-0.3.0
index e7aa619..88963a5 100644
--- a/metadata/md5-cache/dev-rust/bytes-0.3.0
+++ b/metadata/md5-cache/dev-rust/bytes-0.3.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty bytes crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8e4a6d1ef01671ebbfa11bd51c59761b
diff --git a/metadata/md5-cache/dev-rust/bytes-0.4.11 b/metadata/md5-cache/dev-rust/bytes-0.4.11
index f960b21..6327c6d 100644
--- a/metadata/md5-cache/dev-rust/bytes-0.4.11
+++ b/metadata/md5-cache/dev-rust/bytes-0.4.11
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/byteorder-1.1*:= >=dev-rust/either-1.5.0:= >=dev-rust/iovec-0.1.0:= >=dev-rust/serde-1.0.0:= >=dev-rust/serde_test-1.0.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A utility library for working with bytes.
 EAPI=6
 HOMEPAGE=https://github.com/tokio-rs/bytes
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.11/r0
 SRC_URI=https://crates.io/api/v1/crates/bytes/0.4.11/download -> bytes-0.4.11.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=187d7707753daec1867650d64e13b5c8
diff --git a/metadata/md5-cache/dev-rust/bytes-0.4.11-r1 b/metadata/md5-cache/dev-rust/bytes-0.4.11-r1
new file mode 100644
index 0000000..5f88b5f
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/bytes-0.4.11-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/byteorder-1.1*:= >=dev-rust/either-1.5.0:= <dev-rust/either-2.0.0 =dev-rust/iovec-0.1*:= =dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A utility library for working with bytes.
+EAPI=7
+HOMEPAGE=https://github.com/tokio-rs/bytes
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/byteorder-1.1*:= >=dev-rust/either-1.5.0:= <dev-rust/either-2.0.0 =dev-rust/iovec-0.1*:= =dev-rust/serde-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.11/r1
+SRC_URI=https://crates.io/api/v1/crates/bytes/0.4.11/download -> bytes-0.4.11.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=94c23796d7661ee6dcd797ea80bc2a24
diff --git a/metadata/md5-cache/dev-rust/bytes-0.4.12 b/metadata/md5-cache/dev-rust/bytes-0.4.12
new file mode 100644
index 0000000..da93216
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/bytes-0.4.12
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/byteorder-1.1.0:= <dev-rust/byteorder-2.0.0 >=dev-rust/either-1.5.0:= <dev-rust/either-2.0.0 =dev-rust/iovec-0.1*:= =dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Types and traits for working with bytes
+EAPI=7
+HOMEPAGE=https://github.com/carllerche/bytes
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/byteorder-1.1.0:= <dev-rust/byteorder-2.0.0 >=dev-rust/either-1.5.0:= <dev-rust/either-2.0.0 =dev-rust/iovec-0.1*:= =dev-rust/serde-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.12/r0
+SRC_URI=https://crates.io/api/v1/crates/bytes/0.4.12/download -> bytes-0.4.12.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f2b6094712f9432b7571bcaa028fa540
diff --git a/metadata/md5-cache/dev-rust/bytes-0.5.6 b/metadata/md5-cache/dev-rust/bytes-0.5.6
index f2a7c5d..d61bc3b 100644
--- a/metadata/md5-cache/dev-rust/bytes-0.5.6
+++ b/metadata/md5-cache/dev-rust/bytes-0.5.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/serde-1.0.60:= <dev-rust/serde-2 >=virtual/rust-1.39.0:=
 DESCRIPTION=A utility library for working with bytes.
 EAPI=7
 HOMEPAGE=https://github.com/tokio-rs/bytes
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.6/r0
 SRC_URI=https://crates.io/api/v1/crates/bytes/0.5.6/download -> bytes-0.5.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=3494793e7f8e2bec90a6f0845fcbfc62
diff --git a/metadata/md5-cache/dev-rust/cc-1.0.25 b/metadata/md5-cache/dev-rust/cc-1.0.25
index 68337dd..63fbf9a 100644
--- a/metadata/md5-cache/dev-rust/cc-1.0.25
+++ b/metadata/md5-cache/dev-rust/cc-1.0.25
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/rayon-1.0.2:= >=dev-rust/tempdir-0.3.7:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A library to compile C/C++/assembly into a Rust library/application
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/cc-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.25/r0
 SRC_URI=https://crates.io/api/v1/crates/cc/1.0.25/download -> cc-1.0.25.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8b68286805c939680030a09ef7e1aca4
diff --git a/metadata/md5-cache/dev-rust/cexpr-0.4.0 b/metadata/md5-cache/dev-rust/cexpr-0.4.0
index 9aa8c33..d3e17d8 100644
--- a/metadata/md5-cache/dev-rust/cexpr-0.4.0
+++ b/metadata/md5-cache/dev-rust/cexpr-0.4.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/nom-5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A C expression parser and evaluator
 EAPI=7
 HOMEPAGE=https://github.com/jethrogb/rust-cexpr
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.0/r0
 SRC_URI=https://crates.io/api/v1/crates/cexpr/0.4.0/download -> cexpr-0.4.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=609b4050ba18c441d8ef651c65de20c7
diff --git a/metadata/md5-cache/dev-rust/cfg-if-0.1.10 b/metadata/md5-cache/dev-rust/cfg-if-0.1.10
index 5cc46c3..63a233f 100644
--- a/metadata/md5-cache/dev-rust/cfg-if-0.1.10
+++ b/metadata/md5-cache/dev-rust/cfg-if-0.1.10
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A macro to ergonomically define an item depending on a large number of #[cfg] parameters
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/cfg-if
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.10/r0
 SRC_URI=https://crates.io/api/v1/crates/cfg-if/0.1.10/download -> cfg-if-0.1.10.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ae630d8f9d1e358dc52265c39da3d351
diff --git a/metadata/md5-cache/dev-rust/cfg-if-1.0.0 b/metadata/md5-cache/dev-rust/cfg-if-1.0.0
index feb1174..ac1b669 100644
--- a/metadata/md5-cache/dev-rust/cfg-if-1.0.0
+++ b/metadata/md5-cache/dev-rust/cfg-if-1.0.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A macro to ergonomically define an item depending on a large number of #[cfg] parameters
 EAPI=7
 HOMEPAGE=https://github.com/alexcrichton/cfg-if
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.0/r0
 SRC_URI=https://crates.io/api/v1/crates/cfg-if/1.0.0/download -> cfg-if-1.0.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=e4ba87dc2fa6a64ebb032d6a370c9eaa
diff --git a/metadata/md5-cache/dev-rust/chashmap-2.2.2 b/metadata/md5-cache/dev-rust/chashmap-2.2.2
index ed06746..82cad88 100644
--- a/metadata/md5-cache/dev-rust/chashmap-2.2.2
+++ b/metadata/md5-cache/dev-rust/chashmap-2.2.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/owning_ref-0.3*:= =dev-rust/parking_lot-0.4*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Fast, concurrent hash maps with extensive API
 EAPI=6
 HOMEPAGE=https://gitlab.redox-os.org/redox-os/chashmap
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.2.2/r0
 SRC_URI=https://crates.io/api/v1/crates/chashmap/2.2.2/download -> chashmap-2.2.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=9db65a3685eca924e57271a21dfbc539
diff --git a/metadata/md5-cache/dev-rust/chromeos-dbus-bindings-0.24.52-r2 b/metadata/md5-cache/dev-rust/chromeos-dbus-bindings-0.24.52-r2
deleted file mode 100644
index 792b04f..0000000
--- a/metadata/md5-cache/dev-rust/chromeos-dbus-bindings-0.24.52-r2
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=>=dev-rust/dbus-codegen-0.5.0 dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Chrome OS D-Bus bindings generator for Rust.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-dbus-bindings/
-IUSE=cros_host cros_workon_tree_9d31c60be7abd29c5a17c96bb681ea5d094c8a97 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!chromeos-base/chromeos-dbus-bindings-rust
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.24.52-r2
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=32afb1acce965a29dc94643212132b85
diff --git a/metadata/md5-cache/dev-rust/chromeos-dbus-bindings-0.24.52-r5 b/metadata/md5-cache/dev-rust/chromeos-dbus-bindings-0.24.52-r5
new file mode 100644
index 0000000..59e0d1d
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/chromeos-dbus-bindings-0.24.52-r5
@@ -0,0 +1,15 @@
+BDEPEND=>=dev-rust/dbus-codegen-0.5.0 dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Chrome OS D-Bus bindings generator for Rust.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-dbus-bindings/
+IUSE=cros_host cros_workon_tree_e8023258ebab0150d1674664c16f6d197136cc8b cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!chromeos-base/chromeos-dbus-bindings-rust
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.24.52-r5
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e407f7ca361068f213a6e729c52ed84c
diff --git a/metadata/md5-cache/dev-rust/chromeos-dbus-bindings-9999 b/metadata/md5-cache/dev-rust/chromeos-dbus-bindings-9999
index 5aa43cf..f1415d7 100644
--- a/metadata/md5-cache/dev-rust/chromeos-dbus-bindings-9999
+++ b/metadata/md5-cache/dev-rust/chromeos-dbus-bindings-9999
@@ -1,15 +1,15 @@
 BDEPEND=>=dev-rust/dbus-codegen-0.5.0 dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Chrome OS D-Bus bindings generator for Rust.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/chromeos-dbus-bindings/
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=!chromeos-base/chromeos-dbus-bindings-rust
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d80e3982bee2233a28f611dce600471c
diff --git a/metadata/md5-cache/dev-rust/chrono-0.4.19 b/metadata/md5-cache/dev-rust/chrono-0.4.19
index b254e8b..06f84ac 100644
--- a/metadata/md5-cache/dev-rust/chrono-0.4.19
+++ b/metadata/md5-cache/dev-rust/chrono-0.4.19
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/num-integer-0.1.36:= =dev-rust/num-traits-0.2*:= >=dev-rust/num-iter-0.1.35:= >=dev-rust/rustc-serialize-0.3.20:= =dev-rust/serde-1*:= =dev-rust/serde_derive-1*:= =dev-rust/serde_json-1*:= >=dev-rust/time-0.1.43:= <dev-rust/time-0.2.0 =dev-rust/bincode-0.8*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Aims to be a feature-complete superset of the time library
 EAPI=7
 HOMEPAGE=https://github.com/chronotope/chrono
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.19/r0
 SRC_URI=https://crates.io/api/v1/crates/chrono/0.4.19/download -> chrono-0.4.19.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=e0a4174f7bdd14a30635c8f032ca4a30
diff --git a/metadata/md5-cache/dev-rust/chrono-0.4.2 b/metadata/md5-cache/dev-rust/chrono-0.4.2
deleted file mode 100644
index bfddb50..0000000
--- a/metadata/md5-cache/dev-rust/chrono-0.4.2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/num-integer-0.1.36:= =dev-rust/num-traits-0.2*:= >=dev-rust/num-iter-0.1.35:= >=dev-rust/rustc-serialize-0.3.20:= =dev-rust/ryu-0.2*:= =dev-rust/serde-1*:= =dev-rust/serde_derive-1*:= =dev-rust/serde_json-1*:= >=dev-rust/time-0.1.39:= =dev-rust/bincode-0.8*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Aims to be a feature-complete superset of the time library
-EAPI=6
-HOMEPAGE=https://github.com/chronotope/chrono
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.4.2/r0
-SRC_URI=https://crates.io/api/v1/crates/chrono/0.4.2/download -> chrono-0.4.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b3dc7dfc89fa37ef8af81db684d0b36f
diff --git a/metadata/md5-cache/dev-rust/chrono-0.4.2-r1 b/metadata/md5-cache/dev-rust/chrono-0.4.2-r1
deleted file mode 100644
index 9bd9ed2..0000000
--- a/metadata/md5-cache/dev-rust/chrono-0.4.2-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/num-integer-0.1.36:= =dev-rust/num-traits-0.2*:= >=dev-rust/num-iter-0.1.35:= >=dev-rust/rustc-serialize-0.3.20:= =dev-rust/ryu-0.2*:= =dev-rust/serde-1*:= =dev-rust/serde_derive-1*:= =dev-rust/serde_json-1*:= >=dev-rust/time-0.1.39:= =dev-rust/bincode-0.8*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Aims to be a feature-complete superset of the time library
-EAPI=6
-HOMEPAGE=https://github.com/chronotope/chrono
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.4.2/r1
-SRC_URI=https://crates.io/api/v1/crates/chrono/0.4.2/download -> chrono-0.4.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b3dc7dfc89fa37ef8af81db684d0b36f
diff --git a/metadata/md5-cache/dev-rust/chunked_transfer-1.2.0 b/metadata/md5-cache/dev-rust/chunked_transfer-1.2.0
index 72bef02..46964bc 100644
--- a/metadata/md5-cache/dev-rust/chunked_transfer-1.2.0
+++ b/metadata/md5-cache/dev-rust/chunked_transfer-1.2.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Encoder and decoder for HTTP chunked transfer coding (RFC 7230 § 4.1)
 EAPI=7
 HOMEPAGE=https://docs.rs/crate/chunked_transfer/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=Apache-2.0
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.2.0/r0
 SRC_URI=https://crates.io/api/v1/crates/chunked_transfer/1.2.0/download -> chunked_transfer-1.2.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=6f2f14ac2ade340f8e10e051cd69c789
diff --git a/metadata/md5-cache/dev-rust/clang-sys-1.0.3 b/metadata/md5-cache/dev-rust/clang-sys-1.0.3
deleted file mode 100644
index dbbf53e..0000000
--- a/metadata/md5-cache/dev-rust/clang-sys-1.0.3
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/glob-0.3*:= >=dev-rust/libc-0.2.39:= <dev-rust/libc-0.3.0 =dev-rust/libloading-0.6*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Rust bindings for libclang.
-EAPI=7
-HOMEPAGE=https://github.com/KyleMayes/clang-sys
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=Apache-2.0
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.3/r0
-SRC_URI=https://crates.io/api/v1/crates/clang-sys/1.0.3/download -> clang-sys-1.0.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=5ce03fd0f7e621adf3fd7bec74f162b8
diff --git a/metadata/md5-cache/dev-rust/clang-sys-1.2.0 b/metadata/md5-cache/dev-rust/clang-sys-1.2.0
new file mode 100644
index 0000000..28cadfb
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/clang-sys-1.2.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/glob-0.3*:= >=dev-rust/libc-0.2.39:= <dev-rust/libc-0.3.0 =dev-rust/libloading-0.7*:= =dev-rust/glob-0.3*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust bindings for libclang.
+EAPI=7
+HOMEPAGE=https://crates.io/crates/clang-sys
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND==dev-rust/glob-0.3*:= >=dev-rust/libc-0.2.39:= <dev-rust/libc-0.3.0 =dev-rust/libloading-0.7*:= =dev-rust/glob-0.3*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.2.0/r0
+SRC_URI=https://crates.io/api/v1/crates/clang-sys/1.2.0/download -> clang-sys-1.2.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fd58659b93b7d9d1523890463e7d2a4f
diff --git a/metadata/md5-cache/dev-rust/clap-2.33.0 b/metadata/md5-cache/dev-rust/clap-2.33.0
deleted file mode 100644
index 0136310..0000000
--- a/metadata/md5-cache/dev-rust/clap-2.33.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/bitflags-1*:= =dev-rust/textwrap-0.11*:= =dev-rust/unicode-width-0.1*:= =dev-rust/ansi_term-0.11*:= =dev-rust/atty-0.2*:= =dev-rust/clippy-0.0.166:= =dev-rust/strsim-0.8*:= =dev-rust/term_size-0.3*:= =dev-rust/vec_map-0.8*:= =dev-rust/yaml-rust-0.3.5:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Command Line Argument Parser
-EAPI=6
-HOMEPAGE=https://github.com/clap-rs/clap
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=2.33.0/r0
-SRC_URI=https://crates.io/api/v1/crates/clap/2.33.0/download -> clap-2.33.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=f0eb66533f2e781738b0e1d06213d9f0
diff --git a/metadata/md5-cache/dev-rust/clap-2.33.3 b/metadata/md5-cache/dev-rust/clap-2.33.3
new file mode 100644
index 0000000..8e7c1f8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/clap-2.33.3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/atty-0.2.2:= <dev-rust/atty-0.3.0 =dev-rust/bitflags-1*:= ~dev-rust/clippy-0.0.166:= =dev-rust/strsim-0.8*:= =dev-rust/term_size-0.3*:= =dev-rust/textwrap-0.11*:= >=dev-rust/unicode-width-0.1.4:= <dev-rust/unicode-width-0.2.0 =dev-rust/vec_map-0.8*:= >=dev-rust/yaml-rust-0.3.5:= <dev-rust/yaml-rust-0.4.0 =dev-rust/ansi_term-0.11*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A simple to use, efficient, and full-featured Command Line Argument Parser
+EAPI=7
+HOMEPAGE=https://clap.rs/
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/atty-0.2.2:= <dev-rust/atty-0.3.0 =dev-rust/bitflags-1*:= ~dev-rust/clippy-0.0.166:= =dev-rust/strsim-0.8*:= =dev-rust/term_size-0.3*:= =dev-rust/textwrap-0.11*:= >=dev-rust/unicode-width-0.1.4:= <dev-rust/unicode-width-0.2.0 =dev-rust/vec_map-0.8*:= >=dev-rust/yaml-rust-0.3.5:= <dev-rust/yaml-rust-0.4.0 =dev-rust/ansi_term-0.11*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=2.33.3/r0
+SRC_URI=https://crates.io/api/v1/crates/clap/2.33.3/download -> clap-2.33.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8ebd93651186ec4cb41bc607008c548e
diff --git a/metadata/md5-cache/dev-rust/clippy-0.0.166 b/metadata/md5-cache/dev-rust/clippy-0.0.166
index 2f16ba8..3592ab7 100644
--- a/metadata/md5-cache/dev-rust/clippy-0.0.166
+++ b/metadata/md5-cache/dev-rust/clippy-0.0.166
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty clippy crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.0.166/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fe642eb1e1c685d100e0b97134e98668
diff --git a/metadata/md5-cache/dev-rust/cloudabi-0.0.3 b/metadata/md5-cache/dev-rust/cloudabi-0.0.3
index 4fb8a92..22e97ab 100644
--- a/metadata/md5-cache/dev-rust/cloudabi-0.0.3
+++ b/metadata/md5-cache/dev-rust/cloudabi-0.0.3
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty cloudabi crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.0.3/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/cloudflare-zlib-sys-0.2.0 b/metadata/md5-cache/dev-rust/cloudflare-zlib-sys-0.2.0
new file mode 100644
index 0000000..a01d805
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/cloudflare-zlib-sys-0.2.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/cc-1.0.25:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Cloudflare fork of zlib with massive performance improvements
+EAPI=7
+HOMEPAGE=https://gitlab.com/kornelski/cloudflare-zlib-sys
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 ) ZLIB
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.0/r0
+SRC_URI=https://crates.io/api/v1/crates/cloudflare-zlib-sys/0.2.0/download -> cloudflare-zlib-sys-0.2.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4fd54b136eb3f8a931e8a860b0b62569
diff --git a/metadata/md5-cache/dev-rust/codespan-reporting-0.11.1 b/metadata/md5-cache/dev-rust/codespan-reporting-0.11.1
new file mode 100644
index 0000000..2156abc
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/codespan-reporting-0.11.1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/serde-1:= <dev-rust/serde-2 >=dev-rust/termcolor-1:= <dev-rust/termcolor-2 >=dev-rust/unicode-width-0.1:= <dev-rust/unicode-width-0.2 >=virtual/rust-1.39.0:=
+DESCRIPTION=Beautiful diagnostic reporting for text-based programming languages
+EAPI=7
+HOMEPAGE=https://crates.io/crates/codespan-reporting
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=>=dev-rust/serde-1:= <dev-rust/serde-2 >=dev-rust/termcolor-1:= <dev-rust/termcolor-2 >=dev-rust/unicode-width-0.1:= <dev-rust/unicode-width-0.2
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.11.1/r0
+SRC_URI=https://crates.io/api/v1/crates/codespan-reporting/0.11.1/download -> codespan-reporting-0.11.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9a145981d7b4839733e0f389792d4f09
diff --git a/metadata/md5-cache/dev-rust/codespan-reporting-0.9.5 b/metadata/md5-cache/dev-rust/codespan-reporting-0.9.5
new file mode 100644
index 0000000..db1c6cd
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/codespan-reporting-0.9.5
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/termcolor-1*:= =dev-rust/unicode-width-0.1*:= =dev-rust/serde-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Beautiful diagnostic reporting for text-based programming languages
+EAPI=7
+HOMEPAGE=https://github.com/brendanzab/codespan
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=Apache-2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.9.5/r0
+SRC_URI=https://crates.io/api/v1/crates/codespan-reporting/0.9.5/download -> codespan-reporting-0.9.5.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2c5335b5f688d9778a6cea33fcb0ad2a
diff --git a/metadata/md5-cache/dev-rust/compiler_builtins-0.1.0 b/metadata/md5-cache/dev-rust/compiler_builtins-0.1.0
new file mode 100644
index 0000000..04fbea1
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/compiler_builtins-0.1.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Empty crate
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.0/r0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2bde60a80008a5717cc088362983971e
diff --git a/metadata/md5-cache/dev-rust/compiler_builtins-0.1.2 b/metadata/md5-cache/dev-rust/compiler_builtins-0.1.2
new file mode 100644
index 0000000..fa12c23
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/compiler_builtins-0.1.2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Empty crate
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.2/r0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2bde60a80008a5717cc088362983971e
diff --git a/metadata/md5-cache/dev-rust/compiletest_rs-0.3.19 b/metadata/md5-cache/dev-rust/compiletest_rs-0.3.19
index 7c0e9a9..1ef783f 100644
--- a/metadata/md5-cache/dev-rust/compiletest_rs-0.3.19
+++ b/metadata/md5-cache/dev-rust/compiletest_rs-0.3.19
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty compiletest_rs crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.19/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=575a52568022b63766fb1d6754a308ae
diff --git a/metadata/md5-cache/dev-rust/const-random-0.1.6 b/metadata/md5-cache/dev-rust/const-random-0.1.6
new file mode 100644
index 0000000..6b99788
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/const-random-0.1.6
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Empty crate
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.6/r0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2bde60a80008a5717cc088362983971e
diff --git a/metadata/md5-cache/dev-rust/const_fn-0.4.3 b/metadata/md5-cache/dev-rust/const_fn-0.4.3
index 9b6a99a..033ff4b 100644
--- a/metadata/md5-cache/dev-rust/const_fn-0.4.3
+++ b/metadata/md5-cache/dev-rust/const_fn-0.4.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=An attribute for easy generation of const functions with conditional compilations.
 EAPI=7
 HOMEPAGE=https://github.com/taiki-e/const_fn
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.3/r0
 SRC_URI=https://crates.io/api/v1/crates/const_fn/0.4.3/download -> const_fn-0.4.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=9207dbeab4701c58cb0b7abd2838d8fb
diff --git a/metadata/md5-cache/dev-rust/cpp_demangle-0.2.3 b/metadata/md5-cache/dev-rust/cpp_demangle-0.2.3
index d2ddd92..89b3bdd 100644
--- a/metadata/md5-cache/dev-rust/cpp_demangle-0.2.3
+++ b/metadata/md5-cache/dev-rust/cpp_demangle-0.2.3
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty cpp_demangle crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.3/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/crates-index-0.5.1 b/metadata/md5-cache/dev-rust/crates-index-0.5.1
index 7f5c470..0d2504c 100644
--- a/metadata/md5-cache/dev-rust/crates-index-0.5.1
+++ b/metadata/md5-cache/dev-rust/crates-index-0.5.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty crates-index crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/crc32fast-1.2.1 b/metadata/md5-cache/dev-rust/crc32fast-1.2.1
new file mode 100644
index 0000000..05cc3c4
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/crc32fast-1.2.1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/cfg-if-1:= <dev-rust/cfg-if-2 >=virtual/rust-1.39.0:=
+DESCRIPTION=Fast, SIMD-accelerated CRC32 (IEEE) checksum computation
+EAPI=7
+HOMEPAGE=https://github.com/srijs/rust-crc32fast
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.2.1/r0
+SRC_URI=https://crates.io/api/v1/crates/crc32fast/1.2.1/download -> crc32fast-1.2.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b1f5f9086a318d207cffdf7866910bcb
diff --git a/metadata/md5-cache/dev-rust/criterion-0.2.0 b/metadata/md5-cache/dev-rust/criterion-0.2.0
index a263e56..83c94df 100644
--- a/metadata/md5-cache/dev-rust/criterion-0.2.0
+++ b/metadata/md5-cache/dev-rust/criterion-0.2.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty criterion crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/criterion-0.3.0 b/metadata/md5-cache/dev-rust/criterion-0.3.0
index d869f3f..c04a61e 100644
--- a/metadata/md5-cache/dev-rust/criterion-0.3.0
+++ b/metadata/md5-cache/dev-rust/criterion-0.3.0
@@ -1,12 +1,12 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty criterion crate
 EAPI=7
 HOMEPAGE=https://github.com/bheisler/criterion.rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=c648570a45c1b0c9bc5938c9f3d46062
diff --git a/metadata/md5-cache/dev-rust/cros_async-0.1.0-r9 b/metadata/md5-cache/dev-rust/cros_async-0.1.0-r9
new file mode 100644
index 0000000..a581be6
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/cros_async-0.1.0-r9
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/async-task-4*:= >=dev-rust/async-trait-0.1.36:= <dev-rust/async-trait-0.2 dev-rust/data_model:= =dev-rust/futures-0.3*:= dev-rust/io_uring:= >=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3 =dev-rust/paste-1*:= =dev-rust/pin-utils-0.1*:= =dev-rust/slab-0.4*:= dev-rust/sync:= dev-rust/sys_util:= dev-rust/tempfile:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2 >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust async tools for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/cros_async
+IUSE=cros_host cros_workon_tree_671a7be7202d6125151e12fb7e4331d0d184cb5f cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND==dev-rust/async-task-4*:= >=dev-rust/async-trait-0.1.36:= <dev-rust/async-trait-0.2 dev-rust/data_model:= =dev-rust/futures-0.3*:= dev-rust/io_uring:= >=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3 =dev-rust/paste-1*:= =dev-rust/pin-utils-0.1*:= =dev-rust/slab-0.4*:= dev-rust/sync:= dev-rust/sys_util:= dev-rust/tempfile:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r9
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fa1d2e2c7933a81668f5bfd6236e7d0f
diff --git a/metadata/md5-cache/dev-rust/cros_async-9999 b/metadata/md5-cache/dev-rust/cros_async-9999
new file mode 100644
index 0000000..871ff97
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/cros_async-9999
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/async-task-4*:= >=dev-rust/async-trait-0.1.36:= <dev-rust/async-trait-0.2 dev-rust/data_model:= =dev-rust/futures-0.3*:= dev-rust/io_uring:= >=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3 =dev-rust/paste-1*:= =dev-rust/pin-utils-0.1*:= =dev-rust/slab-0.4*:= dev-rust/sync:= dev-rust/sys_util:= dev-rust/tempfile:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2 >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust async tools for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/cros_async
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND==dev-rust/async-task-4*:= >=dev-rust/async-trait-0.1.36:= <dev-rust/async-trait-0.2 dev-rust/data_model:= =dev-rust/futures-0.3*:= dev-rust/io_uring:= >=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3 =dev-rust/paste-1*:= =dev-rust/pin-utils-0.1*:= =dev-rust/slab-0.4*:= dev-rust/sync:= dev-rust/sys_util:= dev-rust/tempfile:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ed38001abda5a1e018ee4c3d7053af45
diff --git a/metadata/md5-cache/dev-rust/cros_fuzz-0.1.0-r34 b/metadata/md5-cache/dev-rust/cros_fuzz-0.1.0-r34
new file mode 100644
index 0000000..8a65485
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/cros_fuzz-0.1.0-r34
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/rand_core-0.4*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Support crate for running rust fuzzers on Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cros-fuzz
+IUSE=fuzzer test cros_host cros_workon_tree_90bf2838f56bffe127636b5ea4988485595819a8_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND==dev-rust/rand_core-0.4*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r34
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fc4a9d61cd275cac4699f05907c82c4a
diff --git a/metadata/md5-cache/dev-rust/cros_fuzz-0.1.0-r8 b/metadata/md5-cache/dev-rust/cros_fuzz-0.1.0-r8
deleted file mode 100644
index 84099bd..0000000
--- a/metadata/md5-cache/dev-rust/cros_fuzz-0.1.0-r8
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/rand_core-0.4*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Support crate for running rust fuzzers on Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cros-fuzz
-IUSE=fuzzer test cros_host cros_workon_tree_90bf2838f56bffe127636b5ea4988485595819a8_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r8
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=103d3d76eebd89363d523c62ddb77e29
diff --git a/metadata/md5-cache/dev-rust/cros_fuzz-9999 b/metadata/md5-cache/dev-rust/cros_fuzz-9999
index 09e18de..a1dbf426 100644
--- a/metadata/md5-cache/dev-rust/cros_fuzz-9999
+++ b/metadata/md5-cache/dev-rust/cros_fuzz-9999
@@ -1,14 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/rand_core-0.4*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Support crate for running rust fuzzers on Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/cros-fuzz
-IUSE=fuzzer test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=fuzzer test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
+RDEPEND==dev-rust/rand_core-0.4*:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=495962db8e189ffd99ee900b89ce29af
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=48e5f6b2efc67e0813369d1c637778ed
diff --git a/metadata/md5-cache/dev-rust/crossbeam-channel-0.3.8 b/metadata/md5-cache/dev-rust/crossbeam-channel-0.3.8
index 73f0045..a76ba12 100644
--- a/metadata/md5-cache/dev-rust/crossbeam-channel-0.3.8
+++ b/metadata/md5-cache/dev-rust/crossbeam-channel-0.3.8
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/crossbeam-utils-0.6.5:= <dev-rust/crossbeam-utils-0.7.0 >=dev-rust/smallvec-0.6.2:= =dev-rust/rand-0.6*:= >=dev-rust/signal-hook-0.1.5:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides multi-producer multi-consumer channels for message passing.
 EAPI=6
 HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-channel
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.8/r0
 SRC_URI=https://crates.io/api/v1/crates/crossbeam-channel/0.3.8/download -> crossbeam-channel-0.3.8.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=abd661a9b4a6ccbf0d196668965274ac
diff --git a/metadata/md5-cache/dev-rust/crossbeam-channel-0.4.4 b/metadata/md5-cache/dev-rust/crossbeam-channel-0.4.4
new file mode 100644
index 0000000..7db5da4
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/crossbeam-channel-0.4.4
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/crossbeam-utils-0.7*:= =dev-rust/maybe-uninit-2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Multi-producer multi-consumer channels for message passing
+EAPI=7
+HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-channel
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/crossbeam-utils-0.7*:= =dev-rust/maybe-uninit-2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.4/r0
+SRC_URI=https://crates.io/api/v1/crates/crossbeam-channel/0.4.4/download -> crossbeam-channel-0.4.4.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3b5f5bc3eff694063008b202ad3bee3b
diff --git a/metadata/md5-cache/dev-rust/crossbeam-channel-0.5.0 b/metadata/md5-cache/dev-rust/crossbeam-channel-0.5.0
index 539157be..4894b25 100644
--- a/metadata/md5-cache/dev-rust/crossbeam-channel-0.5.0
+++ b/metadata/md5-cache/dev-rust/crossbeam-channel-0.5.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/cfg-if-1*:= >=dev-rust/crossbeam-utils-0.8.0:= <dev-rust/crossbeam-utils-0.9.0 =dev-rust/rand-0.7*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides multi-producer multi-consumer channels for message passing.
 EAPI=7
 HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-channel
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.0/r0
 SRC_URI=https://crates.io/api/v1/crates/crossbeam-channel/0.5.0/download -> crossbeam-channel-0.5.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=95180cbb059ddc62861cb5e1233f67d3
diff --git a/metadata/md5-cache/dev-rust/crossbeam-deque-0.7.1 b/metadata/md5-cache/dev-rust/crossbeam-deque-0.7.1
index fd4b474..09fabdb 100644
--- a/metadata/md5-cache/dev-rust/crossbeam-deque-0.7.1
+++ b/metadata/md5-cache/dev-rust/crossbeam-deque-0.7.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/crossbeam-epoch-0.7*:= =dev-rust/crossbeam-utils-0.6*:= =dev-rust/rand-0.6*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides work-stealing deques, which are primarily intended for building task schedulers
 EAPI=6
 HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-deque
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.1/r0
 SRC_URI=https://crates.io/api/v1/crates/crossbeam-deque/0.7.1/download -> crossbeam-deque-0.7.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=61fdeae26b4675f8578adc4e5642c67a
diff --git a/metadata/md5-cache/dev-rust/crossbeam-deque-0.7.3 b/metadata/md5-cache/dev-rust/crossbeam-deque-0.7.3
new file mode 100644
index 0000000..46ab06c
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/crossbeam-deque-0.7.3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/crossbeam-epoch-0.8*:= =dev-rust/crossbeam-utils-0.7*:= =dev-rust/maybe-uninit-2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Concurrent work-stealing deque
+EAPI=7
+HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-deque
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/crossbeam-epoch-0.8*:= =dev-rust/crossbeam-utils-0.7*:= =dev-rust/maybe-uninit-2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.7.3/r0
+SRC_URI=https://crates.io/api/v1/crates/crossbeam-deque/0.7.3/download -> crossbeam-deque-0.7.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0ff2a4f740eeaf4a9543b83e26364960
diff --git a/metadata/md5-cache/dev-rust/crossbeam-deque-0.8.0 b/metadata/md5-cache/dev-rust/crossbeam-deque-0.8.0
index a3facdc..2cb9e97 100644
--- a/metadata/md5-cache/dev-rust/crossbeam-deque-0.8.0
+++ b/metadata/md5-cache/dev-rust/crossbeam-deque-0.8.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/cfg-if-1*:= =dev-rust/crossbeam-epoch-0.9*:= =dev-rust/crossbeam-utils-0.8*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides work-stealing deques, which are primarily intended for building task schedulers
 EAPI=7
 HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-deque
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.0/r0
 SRC_URI=https://crates.io/api/v1/crates/crossbeam-deque/0.8.0/download -> crossbeam-deque-0.8.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=dde4cf9fac0e55cb3714dd1849ba3824
diff --git a/metadata/md5-cache/dev-rust/crossbeam-epoch-0.7.1 b/metadata/md5-cache/dev-rust/crossbeam-epoch-0.7.1
index c21350c..da1b739 100644
--- a/metadata/md5-cache/dev-rust/crossbeam-epoch-0.7.1
+++ b/metadata/md5-cache/dev-rust/crossbeam-epoch-0.7.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/arrayvec-0.4*:= =dev-rust/cfg-if-0.1*:= =dev-rust/crossbeam-utils-0.6*:= =dev-rust/memoffset-0.2*:= =dev-rust/scopeguard-0.3*:= =dev-rust/lazy_static-1*:= =dev-rust/rand-0.6*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides epoch-based garbage collection for building concurrent data structures
 EAPI=6
 HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-epoch
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.1/r0
 SRC_URI=https://crates.io/api/v1/crates/crossbeam-epoch/0.7.1/download -> crossbeam-epoch-0.7.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=94ff770b2fbcbb19ada8f0e9267aa678
diff --git a/metadata/md5-cache/dev-rust/crossbeam-epoch-0.8.2 b/metadata/md5-cache/dev-rust/crossbeam-epoch-0.8.2
new file mode 100644
index 0000000..5c87f40
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/crossbeam-epoch-0.8.2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0 =dev-rust/crossbeam-utils-0.7*:= =dev-rust/lazy_static-1*:= =dev-rust/maybe-uninit-2*:= =dev-rust/memoffset-0.5*:= =dev-rust/scopeguard-1*:= =dev-rust/autocfg-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Epoch-based garbage collection
+EAPI=7
+HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-epoch
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0 =dev-rust/crossbeam-utils-0.7*:= =dev-rust/lazy_static-1*:= =dev-rust/maybe-uninit-2*:= =dev-rust/memoffset-0.5*:= =dev-rust/scopeguard-1*:= =dev-rust/autocfg-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.8.2/r0
+SRC_URI=https://crates.io/api/v1/crates/crossbeam-epoch/0.8.2/download -> crossbeam-epoch-0.8.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a35e2c70553e95e2ad06fae1492e5c57
diff --git a/metadata/md5-cache/dev-rust/crossbeam-epoch-0.9.0 b/metadata/md5-cache/dev-rust/crossbeam-epoch-0.9.0
index ddaf152..78d2452 100644
--- a/metadata/md5-cache/dev-rust/crossbeam-epoch-0.9.0
+++ b/metadata/md5-cache/dev-rust/crossbeam-epoch-0.9.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/cfg-if-0.1*:= =dev-rust/const_fn-0.4*:= =dev-rust/crossbeam-utils-0.8*:= >=dev-rust/memoffset-0.5.4:= <dev-rust/memoffset-0.6.0 >=dev-rust/scopeguard-1.1.0:= <dev-rust/scopeguard-2.0.0 =dev-rust/lazy_static-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides epoch-based garbage collection for building concurrent data structures
 EAPI=7
 HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-epoch
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.9.0/r0
 SRC_URI=https://crates.io/api/v1/crates/crossbeam-epoch/0.9.0/download -> crossbeam-epoch-0.9.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=3680c11f0fe77b070e6e4b1c2a6c8fe8
diff --git a/metadata/md5-cache/dev-rust/crossbeam-queue-0.1.2 b/metadata/md5-cache/dev-rust/crossbeam-queue-0.1.2
index 3ddd550..9f79952 100644
--- a/metadata/md5-cache/dev-rust/crossbeam-queue-0.1.2
+++ b/metadata/md5-cache/dev-rust/crossbeam-queue-0.1.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/crossbeam-utils-0.6*:= =dev-rust/rand-0.6*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides concurrent queues that can be shared among threads
 EAPI=6
 HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.2/r0
 SRC_URI=https://crates.io/api/v1/crates/crossbeam-queue/0.1.2/download -> crossbeam-queue-0.1.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=0309153aeb1089d0b2e6deca53bd00cf
diff --git a/metadata/md5-cache/dev-rust/crossbeam-queue-0.2.3 b/metadata/md5-cache/dev-rust/crossbeam-queue-0.2.3
new file mode 100644
index 0000000..2bf02f1
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/crossbeam-queue-0.2.3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0 =dev-rust/crossbeam-utils-0.7*:= =dev-rust/maybe-uninit-2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Concurrent queues
+EAPI=7
+HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0 =dev-rust/crossbeam-utils-0.7*:= =dev-rust/maybe-uninit-2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.3/r0
+SRC_URI=https://crates.io/api/v1/crates/crossbeam-queue/0.2.3/download -> crossbeam-queue-0.2.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=da63740a53bcd452fafd78977e5e3dad
diff --git a/metadata/md5-cache/dev-rust/crossbeam-utils-0.6.5 b/metadata/md5-cache/dev-rust/crossbeam-utils-0.6.5
index 13def76..e7622eb 100644
--- a/metadata/md5-cache/dev-rust/crossbeam-utils-0.6.5
+++ b/metadata/md5-cache/dev-rust/crossbeam-utils-0.6.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/cfg-if-0.1*:= =dev-rust/lazy_static-1*:= =dev-rust/rand-0.6*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides miscellaneous tools for concurrent programming
 EAPI=6
 HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.5/r0
 SRC_URI=https://crates.io/api/v1/crates/crossbeam-utils/0.6.5/download -> crossbeam-utils-0.6.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a28c8c8dd284fc12bdd9a559de087049
diff --git a/metadata/md5-cache/dev-rust/crossbeam-utils-0.7.2 b/metadata/md5-cache/dev-rust/crossbeam-utils-0.7.2
new file mode 100644
index 0000000..5162b83
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/crossbeam-utils-0.7.2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0 >=dev-rust/lazy_static-1.1.0:= <dev-rust/lazy_static-2.0.0 =dev-rust/autocfg-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Utilities for concurrent programming
+EAPI=7
+HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0 >=dev-rust/lazy_static-1.1.0:= <dev-rust/lazy_static-2.0.0 =dev-rust/autocfg-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.7.2/r0
+SRC_URI=https://crates.io/api/v1/crates/crossbeam-utils/0.7.2/download -> crossbeam-utils-0.7.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=44128a6bb484eebd22dddf38bd825beb
diff --git a/metadata/md5-cache/dev-rust/crossbeam-utils-0.8.0 b/metadata/md5-cache/dev-rust/crossbeam-utils-0.8.0
deleted file mode 100644
index 68c0523..0000000
--- a/metadata/md5-cache/dev-rust/crossbeam-utils-0.8.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/autocfg-1*:= =dev-rust/cfg-if-1*:= =dev-rust/const_fn-0.4*:= =dev-rust/lazy_static-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=This crate provides miscellaneous tools for concurrent programming
-EAPI=7
-HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.8.0/r0
-SRC_URI=https://crates.io/api/v1/crates/crossbeam-utils/0.8.0/download -> crossbeam-utils-0.8.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b2047918660af77c9a6ec7ad9acfcaac
diff --git a/metadata/md5-cache/dev-rust/crossbeam-utils-0.8.3 b/metadata/md5-cache/dev-rust/crossbeam-utils-0.8.3
new file mode 100644
index 0000000..11712e7
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/crossbeam-utils-0.8.3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/autocfg-1*:= =dev-rust/cfg-if-1*:= =dev-rust/lazy_static-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=This crate provides miscellaneous tools for concurrent programming
+EAPI=7
+HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.8.3/r0
+SRC_URI=https://crates.io/api/v1/crates/crossbeam-utils/0.8.3/download -> crossbeam-utils-0.8.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a8de4c37e9200a609678600d154faf30
diff --git a/metadata/md5-cache/dev-rust/csv-1.1.1 b/metadata/md5-cache/dev-rust/csv-1.1.1
index fa537c0..a94694a 100644
--- a/metadata/md5-cache/dev-rust/csv-1.1.1
+++ b/metadata/md5-cache/dev-rust/csv-1.1.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty csv crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.1.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/curl-0.4.22 b/metadata/md5-cache/dev-rust/curl-0.4.22
index eb8757d..51dcb2b 100644
--- a/metadata/md5-cache/dev-rust/curl-0.4.22
+++ b/metadata/md5-cache/dev-rust/curl-0.4.22
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/curl-sys-0.4.18:= >=dev-rust/kernel32-sys-0.2.2:= >=dev-rust/libc-0.2.42:= >=dev-rust/schannel-0.1.13:= >=dev-rust/socket2-0.3.7:= >=dev-rust/winapi-0.2.7:= >=dev-rust/openssl-probe-0.1.2:= >=dev-rust/openssl-sys-0.9.43:= =dev-rust/mio-0.6*:= >=dev-rust/mio-extras-2.0.3:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/curl-sys-0.4.18:= <dev-rust/curl-sys-0.5.0 >=dev-rust/kernel32-sys-0.2.2:= <dev-rust/kernel32-sys-0.3.0 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 >=dev-rust/schannel-0.1.13:= <dev-rust/schannel-0.2.0 >=dev-rust/socket2-0.3.7:= <dev-rust/socket2-0.4.0 >=dev-rust/winapi-0.2.7:= <dev-rust/winapi-0.3.0 >=dev-rust/openssl-probe-0.1.2:= <dev-rust/openssl-probe-0.2.0 >=dev-rust/openssl-sys-0.9.43:= <dev-rust/openssl-sys-0.10.0 =dev-rust/mio-0.6*:= >=dev-rust/mio-extras-2.0.3:= <dev-rust/mio-extras-3.0.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust bindings to libcurl for making HTTP requests
-EAPI=6
+EAPI=7
 HOMEPAGE=https://github.com/alexcrichton/curl-rust
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
+RDEPEND=>=dev-rust/curl-sys-0.4.18:= <dev-rust/curl-sys-0.5.0 >=dev-rust/kernel32-sys-0.2.2:= <dev-rust/kernel32-sys-0.3.0 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 >=dev-rust/schannel-0.1.13:= <dev-rust/schannel-0.2.0 >=dev-rust/socket2-0.3.7:= <dev-rust/socket2-0.4.0 >=dev-rust/winapi-0.2.7:= <dev-rust/winapi-0.3.0 >=dev-rust/openssl-probe-0.1.2:= <dev-rust/openssl-probe-0.2.0 >=dev-rust/openssl-sys-0.9.43:= <dev-rust/openssl-sys-0.10.0 =dev-rust/mio-0.6*:= >=dev-rust/mio-extras-2.0.3:= <dev-rust/mio-extras-3.0.0
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.22/r0
 SRC_URI=https://crates.io/api/v1/crates/curl/0.4.22/download -> curl-0.4.22.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=71d5863aeaa87e58f0d278aa7cd06f15
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=242005484eda69d11c498c9901556efb
diff --git a/metadata/md5-cache/dev-rust/curl-0.4.22-r1 b/metadata/md5-cache/dev-rust/curl-0.4.22-r1
new file mode 100644
index 0000000..cc5ee03
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/curl-0.4.22-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/curl-sys-0.4.18:= <dev-rust/curl-sys-0.5.0 >=dev-rust/kernel32-sys-0.2.2:= <dev-rust/kernel32-sys-0.3.0 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 >=dev-rust/schannel-0.1.13:= <dev-rust/schannel-0.2.0 >=dev-rust/socket2-0.3.7:= <dev-rust/socket2-0.4.0 >=dev-rust/winapi-0.2.7:= <dev-rust/winapi-0.3.0 >=dev-rust/openssl-probe-0.1.2:= <dev-rust/openssl-probe-0.2.0 >=dev-rust/openssl-sys-0.9.43:= <dev-rust/openssl-sys-0.10.0 =dev-rust/mio-0.6*:= >=dev-rust/mio-extras-2.0.3:= <dev-rust/mio-extras-3.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust bindings to libcurl for making HTTP requests
+EAPI=7
+HOMEPAGE=https://github.com/alexcrichton/curl-rust
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/curl-sys-0.4.18:= <dev-rust/curl-sys-0.5.0 >=dev-rust/kernel32-sys-0.2.2:= <dev-rust/kernel32-sys-0.3.0 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 >=dev-rust/schannel-0.1.13:= <dev-rust/schannel-0.2.0 >=dev-rust/socket2-0.3.7:= <dev-rust/socket2-0.4.0 >=dev-rust/winapi-0.2.7:= <dev-rust/winapi-0.3.0 >=dev-rust/openssl-probe-0.1.2:= <dev-rust/openssl-probe-0.2.0 >=dev-rust/openssl-sys-0.9.43:= <dev-rust/openssl-sys-0.10.0 =dev-rust/mio-0.6*:= >=dev-rust/mio-extras-2.0.3:= <dev-rust/mio-extras-3.0.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.22/r1
+SRC_URI=https://crates.io/api/v1/crates/curl/0.4.22/download -> curl-0.4.22.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=242005484eda69d11c498c9901556efb
diff --git a/metadata/md5-cache/dev-rust/curl-sys-0.4.18 b/metadata/md5-cache/dev-rust/curl-sys-0.4.18
index fab07ad..a8ae4df 100644
--- a/metadata/md5-cache/dev-rust/curl-sys-0.4.18
+++ b/metadata/md5-cache/dev-rust/curl-sys-0.4.18
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/cc-1*:= >=dev-rust/libc-0.2.2:= >=dev-rust/libz-sys-1.0.18:= >=dev-rust/pkg-config-0.3.3:= =dev-rust/vcpkg-0.2*:= =dev-rust/winapi-0.3*:= =dev-rust/libnghttp2-sys-0.1*:= =dev-rust/openssl-sys-0.9*:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/cc-1*:= >=dev-rust/libc-0.2.2:= <dev-rust/libc-0.3.0 >=dev-rust/libz-sys-1.0.18:= <dev-rust/libz-sys-2.0.0 >=dev-rust/pkg-config-0.3.3:= <dev-rust/pkg-config-0.4.0 =dev-rust/vcpkg-0.2*:= =dev-rust/winapi-0.3*:= =dev-rust/libnghttp2-sys-0.1*:= =dev-rust/openssl-sys-0.9*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Native bindings to the libcurl library
-EAPI=6
+EAPI=7
 HOMEPAGE=https://github.com/alexcrichton/curl-rust/tree/master/curl-sys
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
+RDEPEND==dev-rust/cc-1*:= >=dev-rust/libc-0.2.2:= <dev-rust/libc-0.3.0 >=dev-rust/libz-sys-1.0.18:= <dev-rust/libz-sys-2.0.0 >=dev-rust/pkg-config-0.3.3:= <dev-rust/pkg-config-0.4.0 =dev-rust/vcpkg-0.2*:= =dev-rust/winapi-0.3*:= =dev-rust/libnghttp2-sys-0.1*:= =dev-rust/openssl-sys-0.9*:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.18/r0
 SRC_URI=https://crates.io/api/v1/crates/curl-sys/0.4.18/download -> curl-sys-0.4.18.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=933623c9b33614bad069ec44d0f55b6f
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b9b1d5441dc88dab283f25b4279165c2
diff --git a/metadata/md5-cache/dev-rust/curl-sys-0.4.18-r1 b/metadata/md5-cache/dev-rust/curl-sys-0.4.18-r1
new file mode 100644
index 0000000..9cfc336
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/curl-sys-0.4.18-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/cc-1*:= >=dev-rust/libc-0.2.2:= <dev-rust/libc-0.3.0 >=dev-rust/libz-sys-1.0.18:= <dev-rust/libz-sys-2.0.0 >=dev-rust/pkg-config-0.3.3:= <dev-rust/pkg-config-0.4.0 =dev-rust/vcpkg-0.2*:= =dev-rust/winapi-0.3*:= =dev-rust/libnghttp2-sys-0.1*:= =dev-rust/openssl-sys-0.9*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Native bindings to the libcurl library
+EAPI=7
+HOMEPAGE=https://github.com/alexcrichton/curl-rust/tree/master/curl-sys
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/cc-1*:= >=dev-rust/libc-0.2.2:= <dev-rust/libc-0.3.0 >=dev-rust/libz-sys-1.0.18:= <dev-rust/libz-sys-2.0.0 >=dev-rust/pkg-config-0.3.3:= <dev-rust/pkg-config-0.4.0 =dev-rust/vcpkg-0.2*:= =dev-rust/winapi-0.3*:= =dev-rust/libnghttp2-sys-0.1*:= =dev-rust/openssl-sys-0.9*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.18/r1
+SRC_URI=https://crates.io/api/v1/crates/curl-sys/0.4.18/download -> curl-sys-0.4.18.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b9b1d5441dc88dab283f25b4279165c2
diff --git a/metadata/md5-cache/dev-rust/data-encoding-2.1.2 b/metadata/md5-cache/dev-rust/data-encoding-2.1.2
index 858dcb9..9f7ab46 100644
--- a/metadata/md5-cache/dev-rust/data-encoding-2.1.2
+++ b/metadata/md5-cache/dev-rust/data-encoding-2.1.2
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty data-encoding crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.1.2/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/data_model-0.1.0-r28 b/metadata/md5-cache/dev-rust/data_model-0.1.0-r28
deleted file mode 100644
index 2e137b7..0000000
--- a/metadata/md5-cache/dev-rust/data_model-0.1.0-r28
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/assertions:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Crates includes traits and types for safe interaction with raw memory.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/data_model
-IUSE=test cros_host cros_workon_tree_8a5a39267e3e69d4359e4a665e12121ccb3262a7 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!!<=dev-rust/data_model-0.1.0-r13
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r28
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9d4c739d99b26fe241ba4fa5850423ce
diff --git a/metadata/md5-cache/dev-rust/data_model-0.1.0-r38 b/metadata/md5-cache/dev-rust/data_model-0.1.0-r38
new file mode 100644
index 0000000..7521e66
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/data_model-0.1.0-r38
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/assertions:= dev-rust/libc:= =dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Crates includes traits and types for safe interaction with raw memory.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/data_model
+IUSE=test cros_host cros_workon_tree_559dded7f8554570e0cbbc3d506d5f34fdc6eb86 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-rust/assertions:= dev-rust/libc:= =dev-rust/serde-1*:= !!<=dev-rust/data_model-0.1.0-r13
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r38
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3befb95ea042258020c866e21672ed15
diff --git a/metadata/md5-cache/dev-rust/data_model-9999 b/metadata/md5-cache/dev-rust/data_model-9999
index 233cdbe..2599d6d 100644
--- a/metadata/md5-cache/dev-rust/data_model-9999
+++ b/metadata/md5-cache/dev-rust/data_model-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/assertions:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/assertions:= dev-rust/libc:= =dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Crates includes traits and types for safe interaction with raw memory.
 EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/data_model
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/data_model
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=!!<=dev-rust/data_model-0.1.0-r13
+RDEPEND=dev-rust/assertions:= dev-rust/libc:= =dev-rust/serde-1*:= !!<=dev-rust/data_model-0.1.0-r13
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=542ed78c180bdc7cb4394acb2c698aa8
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2aeb88898836265c8b605590b7c61ca8
diff --git a/metadata/md5-cache/dev-rust/dbus-0.6.1 b/metadata/md5-cache/dev-rust/dbus-0.6.1
index ad7ff01..ecfdff141 100644
--- a/metadata/md5-cache/dev-rust/dbus-0.6.1
+++ b/metadata/md5-cache/dev-rust/dbus-0.6.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2.7:= >=dev-rust/libdbus-sys-0.1.2:= <dev-rust/libdbus-sys-0.2 >=dev-rust/tempdir-0.3.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust bindings to D-Bus.
 EAPI=6
 HOMEPAGE=https://github.com/diwic/dbus-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.1/r0
 SRC_URI=https://crates.io/api/v1/crates/dbus/0.6.1/download -> dbus-0.6.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ff0f1ed099d583c939183cf3cc7cf6ab
diff --git a/metadata/md5-cache/dev-rust/dbus-0.8.4 b/metadata/md5-cache/dev-rust/dbus-0.8.4
index afa92cd..db5e595 100644
--- a/metadata/md5-cache/dev-rust/dbus-0.8.4
+++ b/metadata/md5-cache/dev-rust/dbus-0.8.4
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/libc-0.2.66:= <dev-rust/libc-0.3 =dev-rust/libdbus-sys-0.2*:= =dev-rust/futures-0.3.1:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2.66:= <dev-rust/libc-0.3 =dev-rust/libdbus-sys-0.2*:= =dev-rust/futures-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust bindings to D-Bus.
 EAPI=7
 HOMEPAGE=https://github.com/diwic/dbus-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/libc-0.2.66:= <dev-rust/libc-0.3 =dev-rust/libdbus-sys-0.2*:= =dev-rust/futures-0.3*:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.4/r0
 SRC_URI=https://crates.io/api/v1/crates/dbus/0.8.4/download -> dbus-0.8.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8114330dfe87d017623f444f6cd31e8b
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9701710c45176a5d3560e3a41651f1ed
diff --git a/metadata/md5-cache/dev-rust/dbus-0.8.4-r1 b/metadata/md5-cache/dev-rust/dbus-0.8.4-r1
deleted file mode 100644
index 277bff4..0000000
--- a/metadata/md5-cache/dev-rust/dbus-0.8.4-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/libc-0.2.66:= <dev-rust/libc-0.3 =dev-rust/libdbus-sys-0.2*:= =dev-rust/futures-0.3.1:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Rust bindings to D-Bus.
-EAPI=7
-HOMEPAGE=https://github.com/diwic/dbus-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.8.4/r1
-SRC_URI=https://crates.io/api/v1/crates/dbus/0.8.4/download -> dbus-0.8.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8114330dfe87d017623f444f6cd31e8b
diff --git a/metadata/md5-cache/dev-rust/dbus-0.8.4-r2 b/metadata/md5-cache/dev-rust/dbus-0.8.4-r2
new file mode 100644
index 0000000..d74d0ae
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/dbus-0.8.4-r2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2.66:= <dev-rust/libc-0.3 =dev-rust/libdbus-sys-0.2*:= =dev-rust/futures-0.3*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust bindings to D-Bus.
+EAPI=7
+HOMEPAGE=https://github.com/diwic/dbus-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/libc-0.2.66:= <dev-rust/libc-0.3 =dev-rust/libdbus-sys-0.2*:= =dev-rust/futures-0.3*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.8.4/r2
+SRC_URI=https://crates.io/api/v1/crates/dbus/0.8.4/download -> dbus-0.8.4.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9701710c45176a5d3560e3a41651f1ed
diff --git a/metadata/md5-cache/dev-rust/dbus-codegen-0.5.0-r1 b/metadata/md5-cache/dev-rust/dbus-codegen-0.5.0-r1
index c416b8b..47319ad 100644
--- a/metadata/md5-cache/dev-rust/dbus-codegen-0.5.0-r1
+++ b/metadata/md5-cache/dev-rust/dbus-codegen-0.5.0-r1
@@ -1,14 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/clap-2.20.0:= <dev-rust/clap-3.0.0 >=dev-rust/dbus-0.8.0:= <dev-rust/dbus-0.9.0 >=dev-rust/xml-rs-0.3.0:= <dev-rust/xml-rs-0.4.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Binary crate to generate Rust code from XML introspection data.
 EAPI=7
 HOMEPAGE=https://github.com/diwic/dbus-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 RDEPEND=!<dev-rust/dbus-codegen-0.5.0 sys-apps/dbus
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/0.5.0-r1
 SRC_URI=https://crates.io/api/v1/crates/dbus-codegen/0.5.0/download -> dbus-codegen-0.5.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f3d2d6ca50a9d53b1199ba4e3652f653
diff --git a/metadata/md5-cache/dev-rust/derivative-2.1.1 b/metadata/md5-cache/dev-rust/derivative-2.1.1
index 649dbcc..30294fa 100644
--- a/metadata/md5-cache/dev-rust/derivative-2.1.1
+++ b/metadata/md5-cache/dev-rust/derivative-2.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= >=dev-rust/syn-1.0.3:= <dev-rust/syn-2 >=virtual/rust-1.39.0:=
 DESCRIPTION=A set of alternative 'derive' attributes for Rust.
 EAPI=7
 HOMEPAGE=https://github.com/mcarton/rust-derivative
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/derivative/2.1.1/download -> derivative-2.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=5efbca3b34662d752dc85ab37c0d5d90
diff --git a/metadata/md5-cache/dev-rust/derive-getters-0.1.1 b/metadata/md5-cache/dev-rust/derive-getters-0.1.1
new file mode 100644
index 0000000..5d087ef
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/derive-getters-0.1.1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/proc-macro2-1* =dev-rust/quote-1* =dev-rust/syn-1* >=virtual/rust-1.39.0:=
+DESCRIPTION=Simple Getters derive macro for generating field getter methods on a named struct.
+EAPI=7
+HOMEPAGE=https://git.sr.ht/~kvsari/derive-getters
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.1/r0
+SRC_URI=https://crates.io/api/v1/crates/derive-getters/0.1.1/download -> derive-getters-0.1.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3ba53fce369cac5fd23c6e8497d25b41
diff --git a/metadata/md5-cache/dev-rust/derive-getters-0.1.1-r1 b/metadata/md5-cache/dev-rust/derive-getters-0.1.1-r1
new file mode 100644
index 0000000..920b9e1
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/derive-getters-0.1.1-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Simple Getters derive macro for generating field getter methods on a named struct.
+EAPI=7
+HOMEPAGE=https://git.sr.ht/~kvsari/derive-getters
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.1/r1
+SRC_URI=https://crates.io/api/v1/crates/derive-getters/0.1.1/download -> derive-getters-0.1.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=11948526a4443ce7a5cbe114560a58d3
diff --git a/metadata/md5-cache/dev-rust/dirs-2.0.2 b/metadata/md5-cache/dev-rust/dirs-2.0.2
index bc695f1..4167c3e 100644
--- a/metadata/md5-cache/dev-rust/dirs-2.0.2
+++ b/metadata/md5-cache/dev-rust/dirs-2.0.2
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty dirs crate
 EAPI=7
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.0.2/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=7da3c1f8f115da7f13d2eae2e624386e
diff --git a/metadata/md5-cache/dev-rust/downcast-rs-1.2.0 b/metadata/md5-cache/dev-rust/downcast-rs-1.2.0
index b0a9329..89eadf3 100644
--- a/metadata/md5-cache/dev-rust/downcast-rs-1.2.0
+++ b/metadata/md5-cache/dev-rust/downcast-rs-1.2.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Trait object downcasting support using only safe Rust. It supports type parameters, associated types, and type constraints.
 EAPI=7
 HOMEPAGE=https://github.com/marcianx/downcast-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.2.0/r0
 SRC_URI=https://crates.io/api/v1/crates/downcast-rs/1.2.0/download -> downcast-rs-1.2.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=7b8b5c89c925c1a02c3d0e833be3eda9
diff --git a/metadata/md5-cache/dev-rust/dtoa-0.4.5 b/metadata/md5-cache/dev-rust/dtoa-0.4.5
index 27b2ba9..646de08 100644
--- a/metadata/md5-cache/dev-rust/dtoa-0.4.5
+++ b/metadata/md5-cache/dev-rust/dtoa-0.4.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Fast functions for printing floating-point primitives to an io::Write
 EAPI=6
 HOMEPAGE=https://github.com/dtolnay/dtoa
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.5/r0
 SRC_URI=https://crates.io/api/v1/crates/dtoa/0.4.5/download -> dtoa-0.4.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e7589bc98fd8837338211b77d8859dca
diff --git a/metadata/md5-cache/dev-rust/either-1.5.2 b/metadata/md5-cache/dev-rust/either-1.5.2
index c5d988b..c091636 100644
--- a/metadata/md5-cache/dev-rust/either-1.5.2
+++ b/metadata/md5-cache/dev-rust/either-1.5.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/serde-1.0.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Either has methods that are similar to Option and Result, and it also implements traits like Iterator.
 EAPI=6
 HOMEPAGE=https://github.com/bluss/either
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.5.2/r0
 SRC_URI=https://crates.io/api/v1/crates/either/1.5.2/download -> either-1.5.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=04c7d847f8bdd471ef0eee747e756bb9
diff --git a/metadata/md5-cache/dev-rust/encoding-0.2.33 b/metadata/md5-cache/dev-rust/encoding-0.2.33
index 618f145..5451526 100644
--- a/metadata/md5-cache/dev-rust/encoding-0.2.33
+++ b/metadata/md5-cache/dev-rust/encoding-0.2.33
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty encoding crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.33/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/enum-as-inner-0.2.1 b/metadata/md5-cache/dev-rust/enum-as-inner-0.2.1
index 8681ec6..c17f54f 100644
--- a/metadata/md5-cache/dev-rust/enum-as-inner-0.2.1
+++ b/metadata/md5-cache/dev-rust/enum-as-inner-0.2.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-0.4*:= =dev-rust/quote-0.6*:= =dev-rust/syn-0.15*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A deriving proc-macro for generating functions to automatically give access to the inner members of enum
 EAPI=6
 HOMEPAGE=https://github.com/bluejekyll/enum-as-inner
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.1/r0
 SRC_URI=https://crates.io/api/v1/crates/enum-as-inner/0.2.1/download -> enum-as-inner-0.2.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=69dc9f415fa303b721163ec7a490cbbc
diff --git a/metadata/md5-cache/dev-rust/enumn-0.1.0-r11 b/metadata/md5-cache/dev-rust/enumn-0.1.0-r11
deleted file mode 100644
index e545156..0000000
--- a/metadata/md5-cache/dev-rust/enumn-0.1.0-r11
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Convert number to enum
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/enumn
-IUSE=cros_host cros_workon_tree_c5170d4e4312bcef4a4e4e49403be6bc421c18aa cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!!<=dev-rust/enumn-0.0.1-r4
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r11
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=1cdb772da0124aefb312231bc2c817bd
diff --git a/metadata/md5-cache/dev-rust/enumn-0.1.0-r13 b/metadata/md5-cache/dev-rust/enumn-0.1.0-r13
new file mode 100644
index 0000000..437bed6
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/enumn-0.1.0-r13
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Convert number to enum
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/enumn
+IUSE=cros_host cros_workon_tree_c5170d4e4312bcef4a4e4e49403be6bc421c18aa cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= !!<=dev-rust/enumn-0.0.1-r4
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r13
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e0e196587ee194fbb3b650aacd426cb9
diff --git a/metadata/md5-cache/dev-rust/enumn-9999 b/metadata/md5-cache/dev-rust/enumn-9999
index ced22da..dd814d8 100644
--- a/metadata/md5-cache/dev-rust/enumn-9999
+++ b/metadata/md5-cache/dev-rust/enumn-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Convert number to enum
 EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/enumn
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/enumn
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=!!<=dev-rust/enumn-0.0.1-r4
+RDEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= !!<=dev-rust/enumn-0.0.1-r4
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=764dae455f649e5f594e4e479369b920
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ed2af4232ebccce94590a63e7a20792b
diff --git a/metadata/md5-cache/dev-rust/env_logger-0.4.3 b/metadata/md5-cache/dev-rust/env_logger-0.4.3
index 7bc2021..8d4b962 100644
--- a/metadata/md5-cache/dev-rust/env_logger-0.4.3
+++ b/metadata/md5-cache/dev-rust/env_logger-0.4.3
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty env_logger crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.3/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a24171f2ba7b7f5d00b155293ff5debe
diff --git a/metadata/md5-cache/dev-rust/env_logger-0.5.13 b/metadata/md5-cache/dev-rust/env_logger-0.5.13
index 924bffe..3648eae 100644
--- a/metadata/md5-cache/dev-rust/env_logger-0.5.13
+++ b/metadata/md5-cache/dev-rust/env_logger-0.5.13
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty env_logger crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.13/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a24171f2ba7b7f5d00b155293ff5debe
diff --git a/metadata/md5-cache/dev-rust/env_logger-0.6.0 b/metadata/md5-cache/dev-rust/env_logger-0.6.0
deleted file mode 100644
index 53c0008..0000000
--- a/metadata/md5-cache/dev-rust/env_logger-0.6.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/log-0.4*:= >=dev-rust/atty-0.2.5:= =dev-rust/humantime-1.1*:= >=dev-rust/regex-1.0.3:= >=dev-rust/termcolor-0.3.0:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Implements a logger that can be configured via environment variables.
-EAPI=6
-HOMEPAGE=https://github.com/sebasmagri/env_logger/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.6.0/r0
-SRC_URI=https://crates.io/api/v1/crates/env_logger/0.6.0/download -> env_logger-0.6.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1cb8adc1d635eb4b335576c2a1b22f9b
diff --git a/metadata/md5-cache/dev-rust/env_logger-0.6.1 b/metadata/md5-cache/dev-rust/env_logger-0.6.1
index 3ec5903..c585ed0 100644
--- a/metadata/md5-cache/dev-rust/env_logger-0.6.1
+++ b/metadata/md5-cache/dev-rust/env_logger-0.6.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/log-0.4*:= >=dev-rust/atty-0.2.5:= =dev-rust/humantime-1.1*:= >=dev-rust/regex-1.0.3:= >=dev-rust/termcolor-1.0.2:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Implements a logger that can be configured via environment variables.
 EAPI=6
 HOMEPAGE=https://github.com/sebasmagri/env_logger/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.1/r0
 SRC_URI=https://crates.io/api/v1/crates/env_logger/0.6.1/download -> env_logger-0.6.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a50e52fc8345fd791c6912a256d5bd10
diff --git a/metadata/md5-cache/dev-rust/env_logger-0.8.1 b/metadata/md5-cache/dev-rust/env_logger-0.8.1
deleted file mode 100644
index 141b4f7..0000000
--- a/metadata/md5-cache/dev-rust/env_logger-0.8.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/log-0.4.8:= <dev-rust/log-0.5.0 >=dev-rust/atty-0.2.5:= <dev-rust/atty-0.3.0 =dev-rust/humantime-2*:= >=dev-rust/regex-1.4.0:= <dev-rust/regex-2.0.0 >=dev-rust/termcolor-1.0.2:= <dev-rust/termcolor-2.0.0 >=virtual/rust-1.39.0:=
-DESCRIPTION=Implements a logger that can be configured via environment variables.
-EAPI=7
-HOMEPAGE=https://github.com/sebasmagri/env_logger/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.8.1/r0
-SRC_URI=https://crates.io/api/v1/crates/env_logger/0.8.1/download -> env_logger-0.8.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=446b0bed51d647a351436153db88e63f
diff --git a/metadata/md5-cache/dev-rust/env_logger-0.8.3 b/metadata/md5-cache/dev-rust/env_logger-0.8.3
new file mode 100644
index 0000000..431d252
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/env_logger-0.8.3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/atty-0.2.5:= <dev-rust/atty-0.3.0 =dev-rust/humantime-2*:= >=dev-rust/log-0.4.8:= <dev-rust/log-0.5.0 >=dev-rust/regex-1.0.3:= <dev-rust/regex-2.0.0 >=dev-rust/termcolor-1.0.2:= <dev-rust/termcolor-2.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=A logging implementation for 'log' which is configured via an environment variable.
+EAPI=7
+HOMEPAGE=https://crates.io/crates/env_logger
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/atty-0.2.5:= <dev-rust/atty-0.3.0 =dev-rust/humantime-2*:= >=dev-rust/log-0.4.8:= <dev-rust/log-0.5.0 >=dev-rust/regex-1.0.3:= <dev-rust/regex-2.0.0 >=dev-rust/termcolor-1.0.2:= <dev-rust/termcolor-2.0.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.8.3/r0
+SRC_URI=https://crates.io/api/v1/crates/env_logger/0.8.3/download -> env_logger-0.8.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=156a981e04bb2542ccd7d7e00dd7a501
diff --git a/metadata/md5-cache/dev-rust/error-chain-0.11.0 b/metadata/md5-cache/dev-rust/error-chain-0.11.0
index e91fc19..ec84bc9 100644
--- a/metadata/md5-cache/dev-rust/error-chain-0.11.0
+++ b/metadata/md5-cache/dev-rust/error-chain-0.11.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/backtrace-0.3.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Helps avoid boilerplate when using chained-errors.
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang-nursery/error-chain
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.11.0/r0
 SRC_URI=https://crates.io/api/v1/crates/error-chain/0.11.0/download -> error-chain-0.11.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=786e73e4a4c51a0434fb6d23c541bf04
diff --git a/metadata/md5-cache/dev-rust/eui48-0.4.6 b/metadata/md5-cache/dev-rust/eui48-0.4.6
index 45ad4f6..f4b31f8 100644
--- a/metadata/md5-cache/dev-rust/eui48-0.4.6
+++ b/metadata/md5-cache/dev-rust/eui48-0.4.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/rustc-serialize-0.3.24:= >=dev-rust/serde-1.0.80:= >=dev-rust/serde_json-1.0.37:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust library to represent and parse IEEE EUI-48 also known as MAC-48 media access control addresses.
 EAPI=6
 HOMEPAGE=https://github.com/abaumhauer/eui48
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.6/r0
 SRC_URI=https://crates.io/api/v1/crates/eui48/0.4.6/download -> eui48-0.4.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=d81bc0199a7772ea53d9d183fe3dc1c0
diff --git a/metadata/md5-cache/dev-rust/failure-0.1.5 b/metadata/md5-cache/dev-rust/failure-0.1.5
index fa86afc..14c1745 100644
--- a/metadata/md5-cache/dev-rust/failure-0.1.5
+++ b/metadata/md5-cache/dev-rust/failure-0.1.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/backtrace-0.3*:= =dev-rust/failure_derive-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Experimental error handling abstraction
 EAPI=6
 HOMEPAGE=https://rust-lang-nursery.github.io/failure/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.5/r0
 SRC_URI=https://crates.io/api/v1/crates/failure/0.1.5/download -> failure-0.1.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ce8f2f37e9aee73387c56079e803573b
diff --git a/metadata/md5-cache/dev-rust/failure_derive-0.1.5 b/metadata/md5-cache/dev-rust/failure_derive-0.1.5
index 4638754..6794d8c 100644
--- a/metadata/md5-cache/dev-rust/failure_derive-0.1.5
+++ b/metadata/md5-cache/dev-rust/failure_derive-0.1.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-0.4*:= =dev-rust/quote-0.6*:= =dev-rust/syn-0.15*:= =dev-rust/synstructure-0.10*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Derives for the failure crate
 EAPI=6
 HOMEPAGE=https://rust-lang-nursery.github.io/failure/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.5/r0
 SRC_URI=https://crates.io/api/v1/crates/failure_derive/0.1.5/download -> failure_derive-0.1.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b4ac01ce59fafb4137df7bb45e0f7d13
diff --git a/metadata/md5-cache/dev-rust/failure_derive-0.1.5-r1 b/metadata/md5-cache/dev-rust/failure_derive-0.1.5-r1
index a916a5f..88d81e5 100644
--- a/metadata/md5-cache/dev-rust/failure_derive-0.1.5-r1
+++ b/metadata/md5-cache/dev-rust/failure_derive-0.1.5-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-0.4*:= =dev-rust/quote-0.6*:= =dev-rust/syn-0.15*:= =dev-rust/synstructure-0.10*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Derives for the failure crate
 EAPI=6
 HOMEPAGE=https://rust-lang-nursery.github.io/failure/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.5/r1
 SRC_URI=https://crates.io/api/v1/crates/failure_derive/0.1.5/download -> failure_derive-0.1.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b4ac01ce59fafb4137df7bb45e0f7d13
diff --git a/metadata/md5-cache/dev-rust/fallible-iterator-0.2.0 b/metadata/md5-cache/dev-rust/fallible-iterator-0.2.0
index 75ec2a6..ac10437 100644
--- a/metadata/md5-cache/dev-rust/fallible-iterator-0.2.0
+++ b/metadata/md5-cache/dev-rust/fallible-iterator-0.2.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Fallible iterators for Rust
 EAPI=6
 HOMEPAGE=https://github.com/sfackler/rust-fallible-iterator
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.0/r0
 SRC_URI=https://crates.io/api/v1/crates/fallible-iterator/0.2.0/download -> fallible-iterator-0.2.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=cd5f578118dad0e51ff358105713eb04
diff --git a/metadata/md5-cache/dev-rust/fallible-streaming-iterator-0.1.9 b/metadata/md5-cache/dev-rust/fallible-streaming-iterator-0.1.9
index 6d9dd63..8655a13 100644
--- a/metadata/md5-cache/dev-rust/fallible-streaming-iterator-0.1.9
+++ b/metadata/md5-cache/dev-rust/fallible-streaming-iterator-0.1.9
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Fallible, streaming iteration
 EAPI=6
 HOMEPAGE=https://github.com/sfackler/fallible-streaming-iterator
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.9/r0
 SRC_URI=https://crates.io/api/v1/crates/fallible-streaming-iterator/0.1.9/download -> fallible-streaming-iterator-0.1.9.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=841e9e99d7e9bd293de07175ea072342
diff --git a/metadata/md5-cache/dev-rust/findshlibs-0.3.3 b/metadata/md5-cache/dev-rust/findshlibs-0.3.3
index 34a41fd..9f36f74 100644
--- a/metadata/md5-cache/dev-rust/findshlibs-0.3.3
+++ b/metadata/md5-cache/dev-rust/findshlibs-0.3.3
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty findshlibs crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.3/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/flame-0.1.12 b/metadata/md5-cache/dev-rust/flame-0.1.12
index 7e60434..60d94f9 100644
--- a/metadata/md5-cache/dev-rust/flame-0.1.12
+++ b/metadata/md5-cache/dev-rust/flame-0.1.12
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty flame crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.12/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/flamer-0.1.4 b/metadata/md5-cache/dev-rust/flamer-0.1.4
index 0cbd5b9..410ffbe 100644
--- a/metadata/md5-cache/dev-rust/flamer-0.1.4
+++ b/metadata/md5-cache/dev-rust/flamer-0.1.4
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty flamer crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.4/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/flate2-1.0.20 b/metadata/md5-cache/dev-rust/flate2-1.0.20
new file mode 100644
index 0000000..40c8bf2
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/flate2-1.0.20
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/cfg-if-1:= <dev-rust/cfg-if-2 >=dev-rust/crc32fast-1.2:= <dev-rust/crc32fast-2 >=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3 >=dev-rust/miniz_oxide-0.4.0:= <dev-rust/miniz_oxide-0.5 >=dev-rust/cloudflare-zlib-sys-0.2.0:= <dev-rust/cloudflare-zlib-sys-0.3 >=dev-rust/futures-0.1.25:= <dev-rust/futures-0.2 >=dev-rust/libz-sys-1.1.0:= <dev-rust/libz-sys-2 >=dev-rust/miniz-sys-0.1.11:= <dev-rust/miniz-sys-0.2 >=dev-rust/tokio-io-0.1.11:= <dev-rust/tokio-io-0.2 >=virtual/rust-1.39.0:=
+DESCRIPTION=DEFLATE compression and decompression exposed as Read/BufRead/Write streams.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang/flate2-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.20/r0
+SRC_URI=https://crates.io/api/v1/crates/flate2/1.0.20/download -> flate2-1.0.20.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7153b8fc087bc6b4e6bf3889b0ef5140
diff --git a/metadata/md5-cache/dev-rust/flate2-1.0.9 b/metadata/md5-cache/dev-rust/flate2-1.0.9
deleted file mode 100644
index feb219b..0000000
--- a/metadata/md5-cache/dev-rust/flate2-1.0.9
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty flate2 crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.9/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/flexbuffers-0.1.1 b/metadata/md5-cache/dev-rust/flexbuffers-0.1.1
index efa5bfb..e04d0f9 100644
--- a/metadata/md5-cache/dev-rust/flexbuffers-0.1.1
+++ b/metadata/md5-cache/dev-rust/flexbuffers-0.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bitflags-1.2.1:= <dev-rust/bitflags-2 >=dev-rust/byteorder-1.3.2:= <dev-rust/byteorder-2 =dev-rust/num_enum-0.5*:= >=dev-rust/serde-1.0.114:= <dev-rust/serde-2 =dev-rust/serde_derive-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Official FlexBuffers Rust runtime library.
 EAPI=7
 HOMEPAGE=https://google.github.io/flatbuffers/flexbuffers
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=Apache-2.0
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/flexbuffers/0.1.1/download -> flexbuffers-0.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=e2b21fbdf9426ef9e6a12af685334ffa
diff --git a/metadata/md5-cache/dev-rust/fnv-1.0.6 b/metadata/md5-cache/dev-rust/fnv-1.0.6
index 38251a0..8174932 100644
--- a/metadata/md5-cache/dev-rust/fnv-1.0.6
+++ b/metadata/md5-cache/dev-rust/fnv-1.0.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=An implementation of the Fowler–Noll–Vo hash function
 EAPI=6
 HOMEPAGE=https://github.com/servo/rust-fnv
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.6/r0
 SRC_URI=https://crates.io/api/v1/crates/fnv/1.0.6/download -> fnv-1.0.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e77f5bdbc9916c53e59afc8112ddd693
diff --git a/metadata/md5-cache/dev-rust/fnv-1.0.7 b/metadata/md5-cache/dev-rust/fnv-1.0.7
new file mode 100644
index 0000000..16aa5a0
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/fnv-1.0.7
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Fowler–Noll–Vo hash function
+EAPI=7
+HOMEPAGE=https://crates.io/crates/fnv
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( Apache-2.0 MIT )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.7/r0
+SRC_URI=https://crates.io/api/v1/crates/fnv/1.0.7/download -> fnv-1.0.7.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e55952e49759a3770c60dd0622c265b3
diff --git a/metadata/md5-cache/dev-rust/foreign-types-0.3.2 b/metadata/md5-cache/dev-rust/foreign-types-0.3.2
index 3eeda04..8a78c5b 100644
--- a/metadata/md5-cache/dev-rust/foreign-types-0.3.2
+++ b/metadata/md5-cache/dev-rust/foreign-types-0.3.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/foreign-types-shared-0.1:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A framework for Rust wrappers over C APIs.
 EAPI=6
 HOMEPAGE=https://github.com/sfackler/foreign-types
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.2/r0
 SRC_URI=https://crates.io/api/v1/crates/foreign-types/0.3.2/download -> foreign-types-0.3.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=92293f1a043a498ff4328f18b81b6830
diff --git a/metadata/md5-cache/dev-rust/foreign-types-shared-0.1.1 b/metadata/md5-cache/dev-rust/foreign-types-shared-0.1.1
index 4c9013b..3b677cd 100644
--- a/metadata/md5-cache/dev-rust/foreign-types-shared-0.1.1
+++ b/metadata/md5-cache/dev-rust/foreign-types-shared-0.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=An internal crate used by foreign-types
 EAPI=6
 HOMEPAGE=https://github.com/sfackler/foreign-types
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/foreign-types-shared/0.1.1/download -> foreign-types-shared-0.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b68d1b1ffe30543fa18074881501303e
diff --git a/metadata/md5-cache/dev-rust/fs2-0.4.3 b/metadata/md5-cache/dev-rust/fs2-0.4.3
index d16883b..0f4dfa8 100644
--- a/metadata/md5-cache/dev-rust/fs2-0.4.3
+++ b/metadata/md5-cache/dev-rust/fs2-0.4.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2.30:= <dev-rust/libc-0.3.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Cross-platform file locks and file duplication.
 EAPI=7
 HOMEPAGE=https://docs.rs/fs2
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.3/r0
 SRC_URI=https://crates.io/api/v1/crates/fs2/0.4.3/download -> fs2-0.4.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=78d57a57da1cec517f0249318cab943a
diff --git a/metadata/md5-cache/dev-rust/fuchsia-cprng-0.1.1 b/metadata/md5-cache/dev-rust/fuchsia-cprng-0.1.1
index 88f7f7e..191db6e 100644
--- a/metadata/md5-cache/dev-rust/fuchsia-cprng-0.1.1
+++ b/metadata/md5-cache/dev-rust/fuchsia-cprng-0.1.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty fuchsia-cprng crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/fuchsia-zircon-0.3.2 b/metadata/md5-cache/dev-rust/fuchsia-zircon-0.3.2
index 50fc36d..135f631 100644
--- a/metadata/md5-cache/dev-rust/fuchsia-zircon-0.3.2
+++ b/metadata/md5-cache/dev-rust/fuchsia-zircon-0.3.2
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty fuchsia-zircon crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.2/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b459f025504105b3b301bb8096b60267
diff --git a/metadata/md5-cache/dev-rust/fuchsia-zircon-sys-0.3.3 b/metadata/md5-cache/dev-rust/fuchsia-zircon-sys-0.3.3
index ba64cff..a0e33bb 100644
--- a/metadata/md5-cache/dev-rust/fuchsia-zircon-sys-0.3.3
+++ b/metadata/md5-cache/dev-rust/fuchsia-zircon-sys-0.3.3
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty fuchsia-zircon-sys crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.3/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/futures-0.1.26 b/metadata/md5-cache/dev-rust/futures-0.1.26
index 2de86c6..19a1551 100644
--- a/metadata/md5-cache/dev-rust/futures-0.1.26
+++ b/metadata/md5-cache/dev-rust/futures-0.1.26
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=This library is an implementation of zero-cost futures in Rust
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.26/r0
 SRC_URI=https://crates.io/api/v1/crates/futures/0.1.26/download -> futures-0.1.26.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a74af592cb192bcd6987e6d3c1d6e294
diff --git a/metadata/md5-cache/dev-rust/futures-0.1.31 b/metadata/md5-cache/dev-rust/futures-0.1.31
new file mode 100644
index 0000000..05e3b26
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-0.1.31
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=An implementation of futures and streams featuring zero allocations, composability, and iterator-like interfaces.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.31/r0
+SRC_URI=https://crates.io/api/v1/crates/futures/0.1.31/download -> futures-0.1.31.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a0dcf920b3fb213adb2a2c2908242501
diff --git a/metadata/md5-cache/dev-rust/futures-0.3.1 b/metadata/md5-cache/dev-rust/futures-0.3.1
deleted file mode 100644
index 325e0e4..0000000
--- a/metadata/md5-cache/dev-rust/futures-0.3.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/futures-channel-0.3.1:= <dev-rust/futures-channel-0.4 >=dev-rust/futures-core-0.3.1:= <dev-rust/futures-core-0.4 >=dev-rust/futures-executor-0.3.1:= <dev-rust/futures-executor-0.4 >=dev-rust/futures-util-0.3.1:= <dev-rust/futures-util-0.4 >=dev-rust/futures-sink-0.3.1:= <dev-rust/futures-sink-0.4 >=dev-rust/futures-macro-0.3.1:= <dev-rust/futures-macro-0.4 >=dev-rust/futures-io-0.3.1:= <dev-rust/futures-io-0.4 >=virtual/rust-1.39.0:=
-DESCRIPTION=This library is an implementation of zero-cost futures in Rust
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.1/r0
-SRC_URI=https://crates.io/api/v1/crates/futures/0.3.1/download -> futures-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=69e2ad8aa8bb59a0cde0a9a2ea436403
diff --git a/metadata/md5-cache/dev-rust/futures-0.3.13 b/metadata/md5-cache/dev-rust/futures-0.3.13
new file mode 100644
index 0000000..27243a5
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-0.3.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/futures-channel-0.3.13:= <dev-rust/futures-channel-0.4 >=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4 >=dev-rust/futures-executor-0.3.13:= <dev-rust/futures-executor-0.4 >=dev-rust/futures-io-0.3.13:= <dev-rust/futures-io-0.4 >=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4 >=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4 >=dev-rust/futures-util-0.3.13:= <dev-rust/futures-util-0.4 >=virtual/rust-1.39.0:=
+DESCRIPTION=This library is an implementation of zero-cost futures in Rust
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/futures-channel-0.3.13:= <dev-rust/futures-channel-0.4 >=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4 >=dev-rust/futures-executor-0.3.13:= <dev-rust/futures-executor-0.4 >=dev-rust/futures-io-0.3.13:= <dev-rust/futures-io-0.4 >=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4 >=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4 >=dev-rust/futures-util-0.3.13:= <dev-rust/futures-util-0.4 !~dev-rust/futures-0.3.1
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.13/r0
+SRC_URI=https://crates.io/api/v1/crates/futures/0.3.13/download -> futures-0.3.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=597597bb41b8d8a0d4878e278859cb2e
diff --git a/metadata/md5-cache/dev-rust/futures-channel-0.3.1 b/metadata/md5-cache/dev-rust/futures-channel-0.3.1
deleted file mode 100644
index 170d3c3..0000000
--- a/metadata/md5-cache/dev-rust/futures-channel-0.3.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/futures-core-0.3.1:= <dev-rust/futures-core-0.4 >=dev-rust/futures-sink-0.3.1:= <dev-rust/futures-sink-0.4 >=virtual/rust-1.39.0:=
-DESCRIPTION=Channels for asynchronous communication using futures-rs.
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.1/r0
-SRC_URI=https://crates.io/api/v1/crates/futures-channel/0.3.1/download -> futures-channel-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=47de54f455f1ff2aa658b176355b5383
diff --git a/metadata/md5-cache/dev-rust/futures-channel-0.3.13 b/metadata/md5-cache/dev-rust/futures-channel-0.3.13
new file mode 100644
index 0000000..9731c4e
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-channel-0.3.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4 >=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4 >=virtual/rust-1.39.0:=
+DESCRIPTION=Channels for asynchronous communication using futures-rs.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4 >=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4 !~dev-rust/futures-channel-0.3.1
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.13/r0
+SRC_URI=https://crates.io/api/v1/crates/futures-channel/0.3.13/download -> futures-channel-0.3.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2e1c1c66f8664c1c5ea85d2733b4aee8
diff --git a/metadata/md5-cache/dev-rust/futures-core-0.3.1 b/metadata/md5-cache/dev-rust/futures-core-0.3.1
deleted file mode 100644
index ed901ac..0000000
--- a/metadata/md5-cache/dev-rust/futures-core-0.3.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=The core traits and types in for the 'futures' library.
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.1/r0
-SRC_URI=https://crates.io/api/v1/crates/futures-core/0.3.1/download -> futures-core-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=84bf83264f57774a9fae13b562f4ed93
diff --git a/metadata/md5-cache/dev-rust/futures-core-0.3.13 b/metadata/md5-cache/dev-rust/futures-core-0.3.13
new file mode 100644
index 0000000..2eae846
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-core-0.3.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=The core traits and types in for the 'futures' library.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=!~dev-rust/futures-core-0.3.1
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.13/r0
+SRC_URI=https://crates.io/api/v1/crates/futures-core/0.3.13/download -> futures-core-0.3.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7c5ed1d2cc5f405cf997419382334006
diff --git a/metadata/md5-cache/dev-rust/futures-cpupool-0.1.8 b/metadata/md5-cache/dev-rust/futures-cpupool-0.1.8
index 8801b75..ac34882 100644
--- a/metadata/md5-cache/dev-rust/futures-cpupool-0.1.8
+++ b/metadata/md5-cache/dev-rust/futures-cpupool-0.1.8
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/futures-0.1:= >=dev-rust/num_cpus-1.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=An implementation of thread pools which hand out futures to the results of the computation on the threads themselves.
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.8/r0
 SRC_URI=https://crates.io/api/v1/crates/futures-cpupool/0.1.8/download -> futures-cpupool-0.1.8.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f72779a79e1f38d5cc68176d2cb82539
diff --git a/metadata/md5-cache/dev-rust/futures-cpupool-0.1.8-r1 b/metadata/md5-cache/dev-rust/futures-cpupool-0.1.8-r1
index 927db5a..7a6a289 100644
--- a/metadata/md5-cache/dev-rust/futures-cpupool-0.1.8-r1
+++ b/metadata/md5-cache/dev-rust/futures-cpupool-0.1.8-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/futures-0.1:= >=dev-rust/num_cpus-1.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=An implementation of thread pools which hand out futures to the results of the computation on the threads themselves.
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.8/r1
 SRC_URI=https://crates.io/api/v1/crates/futures-cpupool/0.1.8/download -> futures-cpupool-0.1.8.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f72779a79e1f38d5cc68176d2cb82539
diff --git a/metadata/md5-cache/dev-rust/futures-executor-0.3.1 b/metadata/md5-cache/dev-rust/futures-executor-0.3.1
deleted file mode 100644
index ca0a6d7..0000000
--- a/metadata/md5-cache/dev-rust/futures-executor-0.3.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/futures-core-0.3.1:= <dev-rust/futures-core-0.4 >=dev-rust/futures-task-0.3.1:= <dev-rust/futures-task-0.4 >=dev-rust/futures-util-0.3.1:= <dev-rust/futures-util-0.4 >=dev-rust/num_cpus-1.8.0:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Executors for asynchronous tasks based on the futures-rs library.
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.1/r0
-SRC_URI=https://crates.io/api/v1/crates/futures-executor/0.3.1/download -> futures-executor-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=db4f7dd51faa3bdb103984c9fc4a3e74
diff --git a/metadata/md5-cache/dev-rust/futures-executor-0.3.13 b/metadata/md5-cache/dev-rust/futures-executor-0.3.13
new file mode 100644
index 0000000..26d01dc
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-executor-0.3.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4 >=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4 >=dev-rust/futures-util-0.3.13:= <dev-rust/futures-util-0.4 >=dev-rust/num_cpus-1.8.0:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Executors for asynchronous tasks based on the futures-rs library.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4 >=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4 >=dev-rust/futures-util-0.3.13:= <dev-rust/futures-util-0.4 >=dev-rust/num_cpus-1.8.0:= !~dev-rust/futures-executor-0.3.1
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.13/r0
+SRC_URI=https://crates.io/api/v1/crates/futures-executor/0.3.13/download -> futures-executor-0.3.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a334fd1aacb36169216b1a607631d700
diff --git a/metadata/md5-cache/dev-rust/futures-io-0.3.1 b/metadata/md5-cache/dev-rust/futures-io-0.3.1
deleted file mode 100644
index 4352257..0000000
--- a/metadata/md5-cache/dev-rust/futures-io-0.3.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=The 'AsyncRead' and 'AsyncWrite' traits for the futures-rs library.
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.1/r0
-SRC_URI=https://crates.io/api/v1/crates/futures-io/0.3.1/download -> futures-io-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=6465fab22fcd09ee0e544820acc0e9ae
diff --git a/metadata/md5-cache/dev-rust/futures-io-0.3.13 b/metadata/md5-cache/dev-rust/futures-io-0.3.13
new file mode 100644
index 0000000..de147cf
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-io-0.3.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=The 'AsyncRead' and 'AsyncWrite' traits for the futures-rs library.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=!~dev-rust/futures-io-0.3.1
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.13/r0
+SRC_URI=https://crates.io/api/v1/crates/futures-io/0.3.13/download -> futures-io-0.3.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d81707a0f8a6860eaaf23509791414d7
diff --git a/metadata/md5-cache/dev-rust/futures-macro-0.3.1 b/metadata/md5-cache/dev-rust/futures-macro-0.3.1
deleted file mode 100644
index d21a3f4..0000000
--- a/metadata/md5-cache/dev-rust/futures-macro-0.3.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/proc-macro2-1*:= >=dev-rust/proc-macro-hack-0.5.9:= <dev-rust/proc-macro-hack-0.6 =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=The futures-rs procedural macro implementations.
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.1/r0
-SRC_URI=https://crates.io/api/v1/crates/futures-macro/0.3.1/download -> futures-macro-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=21203032691bf187c491bfee17bfba46
diff --git a/metadata/md5-cache/dev-rust/futures-macro-0.3.13 b/metadata/md5-cache/dev-rust/futures-macro-0.3.13
new file mode 100644
index 0000000..23e3712
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-macro-0.3.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/proc-macro2-1*:= >=dev-rust/proc-macro-hack-0.5.19:= <dev-rust/proc-macro-hack-0.6 =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=The futures-rs procedural macro implementations.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/proc-macro2-1*:= >=dev-rust/proc-macro-hack-0.5.19:= <dev-rust/proc-macro-hack-0.6 =dev-rust/quote-1*:= =dev-rust/syn-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.13/r0
+SRC_URI=https://crates.io/api/v1/crates/futures-macro/0.3.13/download -> futures-macro-0.3.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7b1295b7e318866d5560302c5a933f60
diff --git a/metadata/md5-cache/dev-rust/futures-sink-0.3.1 b/metadata/md5-cache/dev-rust/futures-sink-0.3.1
deleted file mode 100644
index 4c9a45d..0000000
--- a/metadata/md5-cache/dev-rust/futures-sink-0.3.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=The asynchronous 'Sink' trait for the futures-rs library.
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.1/r0
-SRC_URI=https://crates.io/api/v1/crates/futures-sink/0.3.1/download -> futures-sink-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=16a47a8af4c7864ee01c159d58d27ded
diff --git a/metadata/md5-cache/dev-rust/futures-sink-0.3.13 b/metadata/md5-cache/dev-rust/futures-sink-0.3.13
new file mode 100644
index 0000000..e74dc64b8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-sink-0.3.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=The asynchronous 'Sink' trait for the futures-rs library.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=!~dev-rust/futures-sink-0.3.1
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.13/r0
+SRC_URI=https://crates.io/api/v1/crates/futures-sink/0.3.13/download -> futures-sink-0.3.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f236863e1411c3693d86781882c82d9a
diff --git a/metadata/md5-cache/dev-rust/futures-task-0.3.1 b/metadata/md5-cache/dev-rust/futures-task-0.3.1
deleted file mode 100644
index 9cef017..0000000
--- a/metadata/md5-cache/dev-rust/futures-task-0.3.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Tools for working with tasks.
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.1/r0
-SRC_URI=https://crates.io/api/v1/crates/futures-task/0.3.1/download -> futures-task-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=6502bc1cf4c415848026d4ea98238016
diff --git a/metadata/md5-cache/dev-rust/futures-task-0.3.13 b/metadata/md5-cache/dev-rust/futures-task-0.3.13
new file mode 100644
index 0000000..944ce94
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-task-0.3.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Tools for working with tasks.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=!~dev-rust/futures-task-0.3.1
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.13/r0
+SRC_URI=https://crates.io/api/v1/crates/futures-task/0.3.13/download -> futures-task-0.3.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=59399c6a67febb99f2d3f3d8a95a1501
diff --git a/metadata/md5-cache/dev-rust/futures-util-0.3.1 b/metadata/md5-cache/dev-rust/futures-util-0.3.1
deleted file mode 100644
index 353baf1..0000000
--- a/metadata/md5-cache/dev-rust/futures-util-0.3.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/futures-core-0.3.1:= <dev-rust/futures-core-0.4 >=dev-rust/futures-task-0.3.1:= <dev-rust/futures-task-0.4 >=dev-rust/pin-utils-0.1.0_alpha4:= <dev-rust/pin-utils-0.2 >=dev-rust/proc-macro-nested-0.1.2:= <dev-rust/proc-macro-nested-0.2 >=dev-rust/futures-0.1.25:= <dev-rust/futures-0.2 >=dev-rust/futures-channel-0.3.1:= <dev-rust/futures-channel-0.4 >=dev-rust/futures-io-0.3.1:= <dev-rust/futures-io-0.4 >=dev-rust/futures-macro-0.3.1:= <dev-rust/futures-macro-0.4 >=dev-rust/futures-sink-0.3.1:= <dev-rust/futures-sink-0.4 >=dev-rust/memchr-2.2:= <dev-rust/memchr-3.0 >=dev-rust/proc-macro-hack-0.5.9:= <dev-rust/proc-macro-hack-0.6 >=dev-rust/slab-0.4:= <dev-rust/slab-1.0 >=dev-rust/tokio-io-0.1.9:= <dev-rust/tokio-io-0.2 >=virtual/rust-1.39.0:=
-DESCRIPTION=Common utilities and extension traits for the futures-rs library.
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.1/r0
-SRC_URI=https://crates.io/api/v1/crates/futures-util/0.3.1/download -> futures-util-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e7a357eef23d233f402233fd07e97870
diff --git a/metadata/md5-cache/dev-rust/futures-util-0.3.1-r1 b/metadata/md5-cache/dev-rust/futures-util-0.3.1-r1
deleted file mode 100644
index 16dd7a4..0000000
--- a/metadata/md5-cache/dev-rust/futures-util-0.3.1-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/futures-core-0.3.1:= <dev-rust/futures-core-0.4 >=dev-rust/futures-task-0.3.1:= <dev-rust/futures-task-0.4 >=dev-rust/pin-utils-0.1.0_alpha4:= <dev-rust/pin-utils-0.2 >=dev-rust/proc-macro-nested-0.1.2:= <dev-rust/proc-macro-nested-0.2 >=dev-rust/futures-0.1.25:= <dev-rust/futures-0.2 >=dev-rust/futures-channel-0.3.1:= <dev-rust/futures-channel-0.4 >=dev-rust/futures-io-0.3.1:= <dev-rust/futures-io-0.4 >=dev-rust/futures-macro-0.3.1:= <dev-rust/futures-macro-0.4 >=dev-rust/futures-sink-0.3.1:= <dev-rust/futures-sink-0.4 >=dev-rust/memchr-2.2:= <dev-rust/memchr-3.0 >=dev-rust/proc-macro-hack-0.5.9:= <dev-rust/proc-macro-hack-0.6 >=dev-rust/slab-0.4:= <dev-rust/slab-1.0 >=dev-rust/tokio-io-0.1.9:= <dev-rust/tokio-io-0.2 >=virtual/rust-1.39.0:=
-DESCRIPTION=Common utilities and extension traits for the futures-rs library.
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.1/r1
-SRC_URI=https://crates.io/api/v1/crates/futures-util/0.3.1/download -> futures-util-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e7a357eef23d233f402233fd07e97870
diff --git a/metadata/md5-cache/dev-rust/futures-util-0.3.13 b/metadata/md5-cache/dev-rust/futures-util-0.3.13
new file mode 100644
index 0000000..c7e9783
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-util-0.3.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/futures-channel-0.3.13:= <dev-rust/futures-channel-0.4 >=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4 >=dev-rust/futures-io-0.3.13:= <dev-rust/futures-io-0.4 >=dev-rust/futures-macro-0.3.13:= <dev-rust/futures-macro-0.4 >=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4 >=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4 >=dev-rust/memchr-2.2:= <dev-rust/memchr-3.0 >=dev-rust/pin-utils-0.1.0_alpha4:= <dev-rust/pin-utils-0.2 >=dev-rust/pin-project-lite-0.2.4_alpha4:= <dev-rust/pin-project-lite-0.3 >=dev-rust/proc-macro-hack-0.5.19:= <dev-rust/proc-macro-hack-0.6 >=dev-rust/proc-macro-nested-0.1.2:= <dev-rust/proc-macro-nested-0.2 >=dev-rust/slab-0.4.2:= <dev-rust/slab-1.0 ~dev-rust/tokio-io-0.1.9 >=virtual/rust-1.39.0:=
+DESCRIPTION=Common utilities and extension traits for the futures-rs library.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/futures-channel-0.3.13:= <dev-rust/futures-channel-0.4 >=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4 >=dev-rust/futures-io-0.3.13:= <dev-rust/futures-io-0.4 >=dev-rust/futures-macro-0.3.13:= <dev-rust/futures-macro-0.4 >=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4 >=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4 >=dev-rust/memchr-2.2:= <dev-rust/memchr-3.0 >=dev-rust/pin-utils-0.1.0_alpha4:= <dev-rust/pin-utils-0.2 >=dev-rust/pin-project-lite-0.2.4_alpha4:= <dev-rust/pin-project-lite-0.3 >=dev-rust/proc-macro-hack-0.5.19:= <dev-rust/proc-macro-hack-0.6 >=dev-rust/proc-macro-nested-0.1.2:= <dev-rust/proc-macro-nested-0.2 >=dev-rust/slab-0.4.2:= <dev-rust/slab-1.0 ~dev-rust/tokio-io-0.1.9 !~dev-rust/futures-util-0.3.1
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.13/r0
+SRC_URI=https://crates.io/api/v1/crates/futures-util/0.3.13/download -> futures-util-0.3.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5451987a57953af2e3cf100966559482
diff --git a/metadata/md5-cache/dev-rust/futures-util-0.3.13-r1 b/metadata/md5-cache/dev-rust/futures-util-0.3.13-r1
new file mode 100644
index 0000000..8e2fb6d
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/futures-util-0.3.13-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/futures-channel-0.3.13:= <dev-rust/futures-channel-0.4 >=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4 >=dev-rust/futures-io-0.3.13:= <dev-rust/futures-io-0.4 >=dev-rust/futures-macro-0.3.13:= <dev-rust/futures-macro-0.4 >=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4 >=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4 >=dev-rust/memchr-2.2:= <dev-rust/memchr-3.0 >=dev-rust/pin-utils-0.1.0_alpha4:= <dev-rust/pin-utils-0.2 >=dev-rust/pin-project-lite-0.2.4_alpha4:= <dev-rust/pin-project-lite-0.3 >=dev-rust/proc-macro-hack-0.5.19:= <dev-rust/proc-macro-hack-0.6 >=dev-rust/proc-macro-nested-0.1.2:= <dev-rust/proc-macro-nested-0.2 >=dev-rust/slab-0.4.2:= <dev-rust/slab-1.0 ~dev-rust/tokio-io-0.1.9 >=virtual/rust-1.39.0:=
+DESCRIPTION=Common utilities and extension traits for the futures-rs library.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/futures-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/futures-channel-0.3.13:= <dev-rust/futures-channel-0.4 >=dev-rust/futures-core-0.3.13:= <dev-rust/futures-core-0.4 >=dev-rust/futures-io-0.3.13:= <dev-rust/futures-io-0.4 >=dev-rust/futures-macro-0.3.13:= <dev-rust/futures-macro-0.4 >=dev-rust/futures-sink-0.3.13:= <dev-rust/futures-sink-0.4 >=dev-rust/futures-task-0.3.13:= <dev-rust/futures-task-0.4 >=dev-rust/memchr-2.2:= <dev-rust/memchr-3.0 >=dev-rust/pin-utils-0.1.0_alpha4:= <dev-rust/pin-utils-0.2 >=dev-rust/pin-project-lite-0.2.4_alpha4:= <dev-rust/pin-project-lite-0.3 >=dev-rust/proc-macro-hack-0.5.19:= <dev-rust/proc-macro-hack-0.6 >=dev-rust/proc-macro-nested-0.1.2:= <dev-rust/proc-macro-nested-0.2 >=dev-rust/slab-0.4.2:= <dev-rust/slab-1.0 ~dev-rust/tokio-io-0.1.9 !~dev-rust/futures-util-0.3.1
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.13/r1
+SRC_URI=https://crates.io/api/v1/crates/futures-util/0.3.13/download -> futures-util-0.3.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5451987a57953af2e3cf100966559482
diff --git a/metadata/md5-cache/dev-rust/gdbstub-0.4.2 b/metadata/md5-cache/dev-rust/gdbstub-0.4.2
index 700d2ec..1be7432 100644
--- a/metadata/md5-cache/dev-rust/gdbstub-0.4.2
+++ b/metadata/md5-cache/dev-rust/gdbstub-0.4.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/cfg-if-0.1*:= =dev-rust/log-0.4*:= =dev-rust/managed-0.8*:= =dev-rust/num-traits-0.2*:= =dev-rust/paste-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=An ergonomic and easy-to-integrate implementation of the GDB Remote Serial Protocol in Rust, with full #![no_std] support.
 EAPI=7
 HOMEPAGE=https://github.com/daniel5151/gdbstub
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.2/r0
 SRC_URI=https://crates.io/api/v1/crates/gdbstub/0.4.2/download -> gdbstub-0.4.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=c7dd4883d4d285cdcab4e17ae0995cf0
diff --git a/metadata/md5-cache/dev-rust/getopts-0.2.18 b/metadata/md5-cache/dev-rust/getopts-0.2.18
index 6b8ae4e..120f3f5 100644
--- a/metadata/md5-cache/dev-rust/getopts-0.2.18
+++ b/metadata/md5-cache/dev-rust/getopts-0.2.18
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=dev-rust/log:= dev-rust/unicode-width:= >=virtual/rust-1.39.0:=
 DESCRIPTION=getopts-like option parsing
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang/getopts
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.18/r0
 SRC_URI=https://crates.io/api/v1/crates/getopts/0.2.18/download -> getopts-0.2.18.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6ef2288f6f732bb35a22a8e8447e333d
diff --git a/metadata/md5-cache/dev-rust/getopts-0.2.21 b/metadata/md5-cache/dev-rust/getopts-0.2.21
new file mode 100644
index 0000000..e7cdc86
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/getopts-0.2.21
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/rustc-std-workspace-core-1*:= =dev-rust/rustc-std-workspace-std-1*:= >=dev-rust/unicode-width-0.1.5:= <dev-rust/unicode-width-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=getopts-like option parsing.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang/getopts
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/rustc-std-workspace-core-1*:= =dev-rust/rustc-std-workspace-std-1*:= >=dev-rust/unicode-width-0.1.5:= <dev-rust/unicode-width-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.21/r0
+SRC_URI=https://crates.io/api/v1/crates/getopts/0.2.21/download -> getopts-0.2.21.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d03aa5ca24af503f3f9e6ebfb91d586d
diff --git a/metadata/md5-cache/dev-rust/getrandom-0.1.15 b/metadata/md5-cache/dev-rust/getrandom-0.1.15
index 5060884..be5dcc4 100644
--- a/metadata/md5-cache/dev-rust/getrandom-0.1.15
+++ b/metadata/md5-cache/dev-rust/getrandom-0.1.15
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0 >=dev-rust/libc-0.2.64:= <dev-rust/libc-0.3.0 =dev-rust/rustc-std-workspace-core-1*:= >=dev-rust/stdweb-0.4.18:= <dev-rust/stdweb-0.5.0 >=dev-rust/wasi-0.9.0:= <dev-rust/wasi-0.10.0 >=dev-rust/wasm-bindgen-0.2.62:= <dev-rust/wasm-bindgen-0.3.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust library for retrieving random data from (operating) system source
 EAPI=7
 HOMEPAGE=https://github.com/rust-random/getrandom
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.15/r0
 SRC_URI=https://crates.io/api/v1/crates/getrandom/0.1.15/download -> getrandom-0.1.15.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f73324196126faf6a8084456b20ff696
diff --git a/metadata/md5-cache/dev-rust/gimli-0.15.0 b/metadata/md5-cache/dev-rust/gimli-0.15.0
index 9c2fb72..e3d6e70 100644
--- a/metadata/md5-cache/dev-rust/gimli-0.15.0
+++ b/metadata/md5-cache/dev-rust/gimli-0.15.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty gimli crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.15.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/git2-0.9.1 b/metadata/md5-cache/dev-rust/git2-0.9.1
index 9f785eb..be15d1c 100644
--- a/metadata/md5-cache/dev-rust/git2-0.9.1
+++ b/metadata/md5-cache/dev-rust/git2-0.9.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bitflags-1.0:= >=dev-rust/libc-0.2:= >=dev-rust/libgit2-sys-0.8.0:= =dev-rust/log-0.4*:= =dev-rust/url-1*:= >=dev-rust/openssl-probe-0.1.2:= >=dev-rust/openssl-sys-0.9.47:= >=virtual/rust-1.39.0:=
 DESCRIPTION=libgit2 bindings for Rust
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang/git2-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.9.1/r0
 SRC_URI=https://crates.io/api/v1/crates/git2/0.9.1/download -> git2-0.9.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f834ba7671188ee4f7d2d07d59381fd4
diff --git a/metadata/md5-cache/dev-rust/glob-0.3.0 b/metadata/md5-cache/dev-rust/glob-0.3.0
index 660554b..030904a8 100644
--- a/metadata/md5-cache/dev-rust/glob-0.3.0
+++ b/metadata/md5-cache/dev-rust/glob-0.3.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/nom-5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Support for matching file paths against Unix shell style patterns.
 EAPI=7
 HOMEPAGE=https://github.com/rust-lang/glob
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.0/r0
 SRC_URI=https://crates.io/api/v1/crates/glob/0.3.0/download -> glob-0.3.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=c31b35ec5583b27f8ba55a638e1d6188
diff --git a/metadata/md5-cache/dev-rust/h2-0.1.26 b/metadata/md5-cache/dev-rust/h2-0.1.26
index c0ac502..11c3a69 100644
--- a/metadata/md5-cache/dev-rust/h2-0.1.26
+++ b/metadata/md5-cache/dev-rust/h2-0.1.26
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/byteorder-1.0:= >=dev-rust/bytes-0.4.7:= >=dev-rust/fnv-1.0.5:= >=dev-rust/futures-0.1:= >=dev-rust/http-0.1.8:= >=dev-rust/indexmap-1.0:= >=dev-rust/log-0.4.1:= >=dev-rust/slab-0.4.0:= >=dev-rust/string-0.2:= >=dev-rust/tokio-io-0.1.4:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A Tokio aware, HTTP/2.0 client & server implementation for Rust.
 EAPI=6
 HOMEPAGE=https://github.com/hyperium/h2
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.26/r0
 SRC_URI=https://crates.io/api/v1/crates/h2/0.1.26/download -> h2-0.1.26.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=57b3cdb703c724859126c4b1c5f235b6
diff --git a/metadata/md5-cache/dev-rust/hashbrown-0.1.7 b/metadata/md5-cache/dev-rust/hashbrown-0.1.7
index 0b88090..d527941 100644
--- a/metadata/md5-cache/dev-rust/hashbrown-0.1.7
+++ b/metadata/md5-cache/dev-rust/hashbrown-0.1.7
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/byteorder-1.0.0:= >=dev-rust/scopeguard-0.3.0:= >=dev-rust/serde-1.0.0:= >=dev-rust/rand-0.5.1:= >=dev-rust/rustc-hash-1.0.0:= >=dev-rust/serde_test-1.0.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate is a Rust port of Google's high-performance SwissTable hash map, adapted to make it a drop-in replacement for Rust's standard HashMap and HashSet types.
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang/hashbrown
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.7/r0
 SRC_URI=https://crates.io/api/v1/crates/hashbrown/0.1.7/download -> hashbrown-0.1.7.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=62e55cacb795c3c2e51b273671a0fba6
diff --git a/metadata/md5-cache/dev-rust/hashbrown-0.9.1 b/metadata/md5-cache/dev-rust/hashbrown-0.9.1
new file mode 100644
index 0000000..f99bcbe
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/hashbrown-0.9.1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/ahash-0.4.4:= <dev-rust/ahash-0.5.0 =dev-rust/rustc-std-workspace-alloc-1*:= >=dev-rust/compiler_builtins-0.1.2:= <dev-rust/compiler_builtins-0.2.0 =dev-rust/rustc-std-workspace-core-1*:= =dev-rust/rayon-1*:= >=dev-rust/serde-1.0.25:= <dev-rust/serde-2.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=A Rust port of Google's SwissTable hash map
+EAPI=7
+HOMEPAGE=https://crates.io/crates/hashbrown
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( Apache-2.0 MIT )
+RDEPEND=>=dev-rust/ahash-0.4.4:= <dev-rust/ahash-0.5.0 =dev-rust/rustc-std-workspace-alloc-1*:= >=dev-rust/compiler_builtins-0.1.2:= <dev-rust/compiler_builtins-0.2.0 =dev-rust/rustc-std-workspace-core-1*:= =dev-rust/rayon-1*:= >=dev-rust/serde-1.0.25:= <dev-rust/serde-2.0.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.9.1/r0
+SRC_URI=https://crates.io/api/v1/crates/hashbrown/0.9.1/download -> hashbrown-0.9.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d093394085bf142178956f7c6dc5e98b
diff --git a/metadata/md5-cache/dev-rust/heapsize-0.4.2 b/metadata/md5-cache/dev-rust/heapsize-0.4.2
index 796ccfe..ea75a257 100644
--- a/metadata/md5-cache/dev-rust/heapsize-0.4.2
+++ b/metadata/md5-cache/dev-rust/heapsize-0.4.2
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty heapsize crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.2/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/heck-0.3.1 b/metadata/md5-cache/dev-rust/heck-0.3.1
index bacb4bd..d69df4b 100644
--- a/metadata/md5-cache/dev-rust/heck-0.3.1
+++ b/metadata/md5-cache/dev-rust/heck-0.3.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/unicode-segmentation-1.2.0:= <dev-rust/unicode-segmentation-2.0.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=heck is a case conversion library
 EAPI=7
 HOMEPAGE=https://github.com/withoutboats/heck
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.1/r0
 SRC_URI=https://crates.io/api/v1/crates/heck/0.3.1/download -> heck-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=1c380936eb0970089707da40d0dc88fc
diff --git a/metadata/md5-cache/dev-rust/hermit-abi-0.1.3 b/metadata/md5-cache/dev-rust/hermit-abi-0.1.3
index a3a243c..593ad2c 100644
--- a/metadata/md5-cache/dev-rust/hermit-abi-0.1.3
+++ b/metadata/md5-cache/dev-rust/hermit-abi-0.1.3
@@ -1,12 +1,12 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty hermit-abi crate
 EAPI=7
 HOMEPAGE=https://github.com/hermitcore/libhermit-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.3/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=8c1477352f7e65ce0b82467f45f52b89
diff --git a/metadata/md5-cache/dev-rust/hound-3.4.0 b/metadata/md5-cache/dev-rust/hound-3.4.0
index 6e60c6d..307ee18 100644
--- a/metadata/md5-cache/dev-rust/hound-3.4.0
+++ b/metadata/md5-cache/dev-rust/hound-3.4.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A wav encoding and decoding library
 EAPI=7
 HOMEPAGE=https://github.com/ruuda/hound
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=3.4.0/r0
 SRC_URI=https://crates.io/api/v1/crates/hound/3.4.0/download -> hound-3.4.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=02fbba0960462a9db11c94533a04cdea
diff --git a/metadata/md5-cache/dev-rust/http-0.1.17 b/metadata/md5-cache/dev-rust/http-0.1.17
deleted file mode 100644
index f6522b6..0000000
--- a/metadata/md5-cache/dev-rust/http-0.1.17
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty http crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.1.17/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/http-0.1.19 b/metadata/md5-cache/dev-rust/http-0.1.19
index 24665ed..ab3530c 100644
--- a/metadata/md5-cache/dev-rust/http-0.1.19
+++ b/metadata/md5-cache/dev-rust/http-0.1.19
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bytes-0.4:= >=dev-rust/fnv-1.0.5:= >=dev-rust/itoa-0.4.1:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A general purpose library of common HTTP types
 EAPI=6
 HOMEPAGE=https://github.com/hyperium/http
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.19/r0
 SRC_URI=https://crates.io/api/v1/crates/http/0.1.19/download -> http-0.1.19.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=cb9c0fb68363dcf13ca2a00f9e7b6e73
diff --git a/metadata/md5-cache/dev-rust/http-body-0.1.0 b/metadata/md5-cache/dev-rust/http-body-0.1.0
index 93e0d87..3dba43e 100644
--- a/metadata/md5-cache/dev-rust/http-body-0.1.0
+++ b/metadata/md5-cache/dev-rust/http-body-0.1.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bytes-0.4.11:= >=dev-rust/futures-0.1.25:= >=dev-rust/http-0.1.16:= >=dev-rust/tokio-buf-0.1:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A trait representing asynchronous operations on an HTTP body.
 EAPI=6
 HOMEPAGE=https://github.com/hyperium/http-body
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.0/r0
 SRC_URI=https://crates.io/api/v1/crates/http-body/0.1.0/download -> http-body-0.1.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a48304008ea886bff770dd3afba31a6b
diff --git a/metadata/md5-cache/dev-rust/httparse-1.0.0 b/metadata/md5-cache/dev-rust/httparse-1.0.0
index f2fd6c0..9804905 100644
--- a/metadata/md5-cache/dev-rust/httparse-1.0.0
+++ b/metadata/md5-cache/dev-rust/httparse-1.0.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty httparse crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/httparse-1.3.4 b/metadata/md5-cache/dev-rust/httparse-1.3.4
index 68e97a8..cc6c5c7 100644
--- a/metadata/md5-cache/dev-rust/httparse-1.3.4
+++ b/metadata/md5-cache/dev-rust/httparse-1.3.4
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A push parser for the HTTP 1.x protocol. Avoids allocations. No copy. Fast.
 EAPI=6
 HOMEPAGE=https://github.com/seanmonstar/httparse
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.3.4/r0
 SRC_URI=https://crates.io/api/v1/crates/httparse/1.3.4/download -> httparse-1.3.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f548d6a2948034facc146df469ae9169
diff --git a/metadata/md5-cache/dev-rust/httparse-1.3.4-r1 b/metadata/md5-cache/dev-rust/httparse-1.3.4-r1
index e03de14..954dd37 100644
--- a/metadata/md5-cache/dev-rust/httparse-1.3.4-r1
+++ b/metadata/md5-cache/dev-rust/httparse-1.3.4-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A push parser for the HTTP 1.x protocol. Avoids allocations. No copy. Fast.
 EAPI=6
 HOMEPAGE=https://github.com/seanmonstar/httparse
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.3.4/r1
 SRC_URI=https://crates.io/api/v1/crates/httparse/1.3.4/download -> httparse-1.3.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f548d6a2948034facc146df469ae9169
diff --git a/metadata/md5-cache/dev-rust/humantime-1.1.1 b/metadata/md5-cache/dev-rust/humantime-1.1.1
index 2a52ec0b..878e17c 100644
--- a/metadata/md5-cache/dev-rust/humantime-1.1.1
+++ b/metadata/md5-cache/dev-rust/humantime-1.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/quick-error-1*:= =dev-rust/chrono-0.4*:= =dev-rust/rand-0.4*:= >=dev-rust/time-0.1.39:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Human-friendly time parser and formatter.
 EAPI=6
 HOMEPAGE=https://github.com/tailhook/humantime
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/humantime/1.1.1/download -> humantime-1.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=cd559a426e257850011b37382a56fa11
diff --git a/metadata/md5-cache/dev-rust/humantime-2.0.1 b/metadata/md5-cache/dev-rust/humantime-2.0.1
deleted file mode 100644
index 6ece63a..0000000
--- a/metadata/md5-cache/dev-rust/humantime-2.0.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Human-friendly time parser and formatter.
-EAPI=7
-HOMEPAGE=https://github.com/tailhook/humantime
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=2.0.1/r0
-SRC_URI=https://crates.io/api/v1/crates/humantime/2.0.1/download -> humantime-2.0.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c56f5cf5438fe078c0595f40d7b4f7aa
diff --git a/metadata/md5-cache/dev-rust/humantime-2.1.0 b/metadata/md5-cache/dev-rust/humantime-2.1.0
new file mode 100644
index 0000000..9dcc484
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/humantime-2.1.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=A parser and formatter for std::time::{Duration, SystemTime}
+EAPI=7
+HOMEPAGE=https://github.com/tailhook/humantime
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=2.1.0/r0
+SRC_URI=https://crates.io/api/v1/crates/humantime/2.1.0/download -> humantime-2.1.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=09f3b93985d86a2f57361c8c1d7a6719
diff --git a/metadata/md5-cache/dev-rust/hyper-0.12.27 b/metadata/md5-cache/dev-rust/hyper-0.12.27
deleted file mode 100644
index c69a181..0000000
--- a/metadata/md5-cache/dev-rust/hyper-0.12.27
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty hyper crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.12.27/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/hyper-0.12.35 b/metadata/md5-cache/dev-rust/hyper-0.12.35
index 6dc24c6..1f47414 100644
--- a/metadata/md5-cache/dev-rust/hyper-0.12.35
+++ b/metadata/md5-cache/dev-rust/hyper-0.12.35
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bytes-0.4.4:= >=dev-rust/futures-0.1.21:= >=dev-rust/h2-0.1.10:= >=dev-rust/http-0.1.15:= >=dev-rust/httparse-1.0:= >=dev-rust/http-body-0.1:= >=dev-rust/iovec-0.1:= >=dev-rust/itoa-0.4.1:= >=dev-rust/log-0.4:= >=dev-rust/rustc_version-0.2:= >=dev-rust/time-0.1:= >=dev-rust/tokio-buf-0.1:= >=dev-rust/tokio-io-0.1:= >=dev-rust/want-0.2:= >=dev-rust/futures-cpupool-0.1.6:= >=dev-rust/net2-0.2.32:= >=dev-rust/tokio-0.1.14:= >=dev-rust/tokio-executor-0.1:= >=dev-rust/tokio-reactor-0.1:= >=dev-rust/tokio-tcp-0.1:= >=dev-rust/tokio-threadpool-0.1.3:= >=dev-rust/tokio-timer-0.2:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A fast and correct HTTP implementation for Rust.
 EAPI=6
 HOMEPAGE=https://github.com/hyperium/hyper
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.12.35/r0
 SRC_URI=https://crates.io/api/v1/crates/hyper/0.12.35/download -> hyper-0.12.35.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3a1787fc609cf31c59eba298a3f6d12a
diff --git a/metadata/md5-cache/dev-rust/hyper-tls-0.3.2 b/metadata/md5-cache/dev-rust/hyper-tls-0.3.2
index cef7b0d..00504f8 100644
--- a/metadata/md5-cache/dev-rust/hyper-tls-0.3.2
+++ b/metadata/md5-cache/dev-rust/hyper-tls-0.3.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bytes-0.4:= >=dev-rust/futures-0.1.21:= >=dev-rust/hyper-0.12:= >=dev-rust/native-tls-0.2:= >=dev-rust/tokio-io-0.1:= >=dev-rust/tokio-0.1.5:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Default TLS implementation for use with hyper
 EAPI=6
 HOMEPAGE=https://github.com/hyperium/hyper-tls
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.2/r0
 SRC_URI=https://crates.io/api/v1/crates/hyper-tls/0.3.2/download -> hyper-tls-0.3.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=7f83789c232af36e48a72f14440e6d1a
diff --git a/metadata/md5-cache/dev-rust/hyphenation-0.7.1 b/metadata/md5-cache/dev-rust/hyphenation-0.7.1
index 5e566be..6c49636 100644
--- a/metadata/md5-cache/dev-rust/hyphenation-0.7.1
+++ b/metadata/md5-cache/dev-rust/hyphenation-0.7.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty hyphenation crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=bc6aca5c8ee7fc43c9e14fd5a3e5e494
diff --git a/metadata/md5-cache/dev-rust/idna-0.1.5 b/metadata/md5-cache/dev-rust/idna-0.1.5
index 50e5054..ad71100 100644
--- a/metadata/md5-cache/dev-rust/idna-0.1.5
+++ b/metadata/md5-cache/dev-rust/idna-0.1.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/matches-0.1*:= =dev-rust/unicode-bidi-0.3*:= =dev-rust/unicode-normalization-0.1*:= =dev-rust/rustc-serialize-0.3*:= =dev-rust/rustc-test-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=IDNA (Internationalizing Domain Names in Applications) and Punycode
 EAPI=6
 HOMEPAGE=https://github.com/servo/rust-url/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.5/r0
 SRC_URI=https://crates.io/api/v1/crates/idna/0.1.5/download -> idna-0.1.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a68a9a86792c2045719543e28fd41634
diff --git a/metadata/md5-cache/dev-rust/indexmap-1.0.0 b/metadata/md5-cache/dev-rust/indexmap-1.0.0
deleted file mode 100644
index 2107879..0000000
--- a/metadata/md5-cache/dev-rust/indexmap-1.0.0
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty indexmap crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a24171f2ba7b7f5d00b155293ff5debe
diff --git a/metadata/md5-cache/dev-rust/indexmap-1.0.2 b/metadata/md5-cache/dev-rust/indexmap-1.0.2
index e2cf34d..044e9b4 100644
--- a/metadata/md5-cache/dev-rust/indexmap-1.0.2
+++ b/metadata/md5-cache/dev-rust/indexmap-1.0.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/serde-1*:= =dev-rust/fnv-1*:= =dev-rust/itertools-0.7*:= =dev-rust/lazy_static-1*:= =dev-rust/quickcheck-0.6*:= =dev-rust/rand-0.4*:= >=dev-rust/serde_test-1.0.5:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A hash table with consistent order and fast iteration.
 EAPI=6
 HOMEPAGE=https://github.com/bluss/indexmap
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.2/r0
 SRC_URI=https://crates.io/api/v1/crates/indexmap/1.0.2/download -> indexmap-1.0.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=0463ec6876aabb37d3e113ac06370dab
diff --git a/metadata/md5-cache/dev-rust/indexmap-1.6.2 b/metadata/md5-cache/dev-rust/indexmap-1.6.2
new file mode 100644
index 0000000..35c845d
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/indexmap-1.6.2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/hashbrown-0.9.1:= <dev-rust/hashbrown-0.10.0 =dev-rust/rayon-1*:= =dev-rust/serde-1*:= =dev-rust/autocfg-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A hash table with consistent order and fast iteration. The indexmap is a hash table where the iteration order of the key-value pairs is independent of the hash values of the keys. It has the usual hash table functionality, it preserves insertion order except after removals, and it allows lookup of its elements by either hash table key or numerical index. A corresponding hash set type is also provided. This crate was initially published under the name ordermap, but it was renamed to indexmap.
+EAPI=7
+HOMEPAGE=https://crates.io/crates/indexmap
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( Apache-2.0 MIT )
+RDEPEND=>=dev-rust/hashbrown-0.9.1:= <dev-rust/hashbrown-0.10.0 =dev-rust/rayon-1*:= =dev-rust/serde-1*:= =dev-rust/autocfg-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.6.2/r0
+SRC_URI=https://crates.io/api/v1/crates/indexmap/1.6.2/download -> indexmap-1.6.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=eda563ca5b68422573e43e521d3f9b0c
diff --git a/metadata/md5-cache/dev-rust/intrusive-collections-0.9.0 b/metadata/md5-cache/dev-rust/intrusive-collections-0.9.0
index cfc1c92..373ff61 100644
--- a/metadata/md5-cache/dev-rust/intrusive-collections-0.9.0
+++ b/metadata/md5-cache/dev-rust/intrusive-collections-0.9.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/memoffset-0.5.4:= <dev-rust/memoffset-0.6 >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust library for creating intrusive collections
 EAPI=7
 HOMEPAGE=https://github.com/Amanieu/intrusive-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.9.0/r0
 SRC_URI=https://crates.io/api/v1/crates/intrusive-collections/0.9.0/download -> intrusive-collections-0.9.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=33fb72f89c0a04f6ed2a52c49ceae853
diff --git a/metadata/md5-cache/dev-rust/io_uring-0.1.0-r6 b/metadata/md5-cache/dev-rust/io_uring-0.1.0-r6
new file mode 100644
index 0000000..a5c8d22
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/io_uring-0.1.0-r6
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/data_model:= >=dev-rust/libc-0.2.93:= dev-rust/sync:= dev-rust/sys_util:= dev-rust/tempfile:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Safe wrappers around the linux kernel's io_uring interface
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/io_uring
+IUSE=cros_host cros_workon_tree_3964a781d4aac3a0649b24bcce48011fda8c459a cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-rust/data_model:= >=dev-rust/libc-0.2.93:= dev-rust/sync:= dev-rust/sys_util:= dev-rust/tempfile:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r6
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5cc33db138c934bf34009d9082eba6a0
diff --git a/metadata/md5-cache/dev-rust/io_uring-9999 b/metadata/md5-cache/dev-rust/io_uring-9999
new file mode 100644
index 0000000..6470ba5
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/io_uring-9999
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/data_model:= >=dev-rust/libc-0.2.93:= dev-rust/sync:= dev-rust/sys_util:= dev-rust/tempfile:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Safe wrappers around the linux kernel's io_uring interface
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/io_uring
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-rust/data_model:= >=dev-rust/libc-0.2.93:= dev-rust/sync:= dev-rust/sys_util:= dev-rust/tempfile:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e63a124876ed4a1cacae9a5eff3047d5
diff --git a/metadata/md5-cache/dev-rust/iota-0.1.4 b/metadata/md5-cache/dev-rust/iota-0.1.4
index a110a41..788c588 100644
--- a/metadata/md5-cache/dev-rust/iota-0.1.4
+++ b/metadata/md5-cache/dev-rust/iota-0.1.4
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Related constants: 1 << iota
 EAPI=6
 HOMEPAGE=https://github.com/dtolnay/iota
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.4/r0
 SRC_URI=https://crates.io/api/v1/crates/iota/0.1.4/download -> iota-0.1.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fcae20bcc43f3bee9e8662892cd379dd
diff --git a/metadata/md5-cache/dev-rust/iovec-0.1.2 b/metadata/md5-cache/dev-rust/iovec-0.1.2
index a050224..f250057 100644
--- a/metadata/md5-cache/dev-rust/iovec-0.1.2
+++ b/metadata/md5-cache/dev-rust/iovec-0.1.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/libc-0.2*:= =dev-rust/winapi-0.2*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A specialized byte slice type for performing vectored I/O operations
 EAPI=6
 HOMEPAGE=https://github.com/carllerche/iovec
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.2/r0
 SRC_URI=https://crates.io/api/v1/crates/iovec/0.1.2/download -> iovec-0.1.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=9492a5f36f6937c51a97cd4607f7237c
diff --git a/metadata/md5-cache/dev-rust/iovec-0.1.4 b/metadata/md5-cache/dev-rust/iovec-0.1.4
new file mode 100644
index 0000000..f0ebbd0
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/iovec-0.1.4
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/libc-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Portable buffer type for scatter/gather I/O operations
+EAPI=7
+HOMEPAGE=https://github.com/carllerche/iovec
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/libc-0.2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.4/r0
+SRC_URI=https://crates.io/api/v1/crates/iovec/0.1.4/download -> iovec-0.1.4.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=62bd4f2bc3b02ead6ce8c7d79d8700cc
diff --git a/metadata/md5-cache/dev-rust/itertools-0.7.11 b/metadata/md5-cache/dev-rust/itertools-0.7.11
index a6d8efc..a5a172e 100644
--- a/metadata/md5-cache/dev-rust/itertools-0.7.11
+++ b/metadata/md5-cache/dev-rust/itertools-0.7.11
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty itertools crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.11/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/itoa-0.4.4 b/metadata/md5-cache/dev-rust/itoa-0.4.4
index ea18f40..cf4724e 100644
--- a/metadata/md5-cache/dev-rust/itoa-0.4.4
+++ b/metadata/md5-cache/dev-rust/itoa-0.4.4
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides fast functions for printing integer primitives to an io::Write or a fmt::Write.
 EAPI=6
 HOMEPAGE=https://github.com/dtolnay/itoa
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.4/r0
 SRC_URI=https://crates.io/api/v1/crates/itoa/0.4.4/download -> itoa-0.4.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=bdddc791c7e0e859796f00fb0bceb606
diff --git a/metadata/md5-cache/dev-rust/itoa-0.4.7 b/metadata/md5-cache/dev-rust/itoa-0.4.7
new file mode 100644
index 0000000..742e074
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/itoa-0.4.7
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Fast functions for printing integer primitives to an io::Write
+EAPI=7
+HOMEPAGE=https://crates.io/crates/itoa
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.7/r0
+SRC_URI=https://crates.io/api/v1/crates/itoa/0.4.7/download -> itoa-0.4.7.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2e9d63b65c212d120d1ccb17372090be
diff --git a/metadata/md5-cache/dev-rust/junit-report-0.4.0 b/metadata/md5-cache/dev-rust/junit-report-0.4.0
new file mode 100644
index 0000000..36d315b
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/junit-report-0.4.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/chrono-0.4.11:= <dev-rust/chrono-0.5.0 =dev-rust/derive-getters-0.1*:= >=dev-rust/thiserror-1.0.19:= <dev-rust/thiserror-2 >=dev-rust/xml-rs-0.8.3:= <dev-rust/xml-rs-0.9 >=virtual/rust-1.39.0:=
+DESCRIPTION=Generate JUnit compatible XML reports in Rust.
+EAPI=7
+HOMEPAGE=https://github.com/bachp/junit-report-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.0/r0
+SRC_URI=https://crates.io/api/v1/crates/junit-report/0.4.0/download -> junit-report-0.4.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7f3012cca4626dc0e0274ee0c99282e5
diff --git a/metadata/md5-cache/dev-rust/kernel32-sys-0.2.2 b/metadata/md5-cache/dev-rust/kernel32-sys-0.2.2
index 30cbded..b67c2fc 100644
--- a/metadata/md5-cache/dev-rust/kernel32-sys-0.2.2
+++ b/metadata/md5-cache/dev-rust/kernel32-sys-0.2.2
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty kernel32-sys crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.2/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/lazy_static-1.4.0 b/metadata/md5-cache/dev-rust/lazy_static-1.4.0
index 91de97f..d21a7a6 100644
--- a/metadata/md5-cache/dev-rust/lazy_static-1.4.0
+++ b/metadata/md5-cache/dev-rust/lazy_static-1.4.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/spin-0.5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A macro for declaring lazily evaluated statics in Rust.
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang-nursery/lazy-static.rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.4.0/r0
 SRC_URI=https://crates.io/api/v1/crates/lazy_static/1.4.0/download -> lazy_static-1.4.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ab0bec05458f0197fd74665f2bbc753a
diff --git a/metadata/md5-cache/dev-rust/lazy_static-1.4.0-r1 b/metadata/md5-cache/dev-rust/lazy_static-1.4.0-r1
new file mode 100644
index 0000000..e6fb2e1
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/lazy_static-1.4.0-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/spin-0.5*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A macro for declaring lazily evaluated statics in Rust.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/lazy-static.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/spin-0.5*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.4.0/r1
+SRC_URI=https://crates.io/api/v1/crates/lazy_static/1.4.0/download -> lazy_static-1.4.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ec9b49372a10d66998fabc7c7864dbec
diff --git a/metadata/md5-cache/dev-rust/lazycell-1.3.0 b/metadata/md5-cache/dev-rust/lazycell-1.3.0
index 3113052..770dc10 100644
--- a/metadata/md5-cache/dev-rust/lazycell-1.3.0
+++ b/metadata/md5-cache/dev-rust/lazycell-1.3.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/clippy-0.0*:= =dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A library providing a lazily filled Cell struct
 EAPI=7
 HOMEPAGE=https://github.com/indiv0/lazycell
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.3.0/r0
 SRC_URI=https://crates.io/api/v1/crates/lazycell/1.3.0/download -> lazycell-1.3.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=2831a805c391e869f99e4ee356046dec
diff --git a/metadata/md5-cache/dev-rust/lexical-core-0.6.0 b/metadata/md5-cache/dev-rust/lexical-core-0.6.0
index 03fe50b..ed42e0e 100644
--- a/metadata/md5-cache/dev-rust/lexical-core-0.6.0
+++ b/metadata/md5-cache/dev-rust/lexical-core-0.6.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty lexical-core crate
 EAPI=7
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=eebfd99c03729092f422b6acfa37c16c
diff --git a/metadata/md5-cache/dev-rust/libc-0.2.65 b/metadata/md5-cache/dev-rust/libc-0.2.65
deleted file mode 100644
index f38bbdd..0000000
--- a/metadata/md5-cache/dev-rust/libc-0.2.65
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/rustc-std-workspace-core-1.0.0:= >=virtual/rust-1.39.0:=
-DESCRIPTION=A Rust library with native bindings to the types and functions commonly found on various systems, including libc
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang/libc
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.2.65/r0
-SRC_URI=https://crates.io/api/v1/crates/libc/0.2.65/download -> libc-0.2.65.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=6c08d3324cd1eeeb95db215f5baab5ac
diff --git a/metadata/md5-cache/dev-rust/libc-0.2.74 b/metadata/md5-cache/dev-rust/libc-0.2.74
deleted file mode 100644
index 84c7c9a..0000000
--- a/metadata/md5-cache/dev-rust/libc-0.2.74
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/rustc-std-workspace-core-1.0.0:= >=virtual/rust-1.39.0:=
-DESCRIPTION=A Rust library with native bindings to the types and functions commonly found on various systems, including libc
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang/libc
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.2.74/r0
-SRC_URI=https://crates.io/api/v1/crates/libc/0.2.74/download -> libc-0.2.74.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=6c08d3324cd1eeeb95db215f5baab5ac
diff --git a/metadata/md5-cache/dev-rust/libc-0.2.80 b/metadata/md5-cache/dev-rust/libc-0.2.80
deleted file mode 100644
index 9f1a95a..0000000
--- a/metadata/md5-cache/dev-rust/libc-0.2.80
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/rustc-std-workspace-core-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=A Rust library with native bindings to the types and functions commonly found on various systems, including libc
-EAPI=7
-HOMEPAGE=https://github.com/rust-lang/libc
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.2.80/r0
-SRC_URI=https://crates.io/api/v1/crates/libc/0.2.80/download -> libc-0.2.80.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=74e5c2035283750bcd01468921cca8aa
diff --git a/metadata/md5-cache/dev-rust/libc-0.2.94 b/metadata/md5-cache/dev-rust/libc-0.2.94
new file mode 100644
index 0000000..7d5af57
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/libc-0.2.94
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/rustc-std-workspace-core-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Raw FFI bindings to platform libraries like libc.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang/libc
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/rustc-std-workspace-core-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.94/r0
+SRC_URI=https://crates.io/api/v1/crates/libc/0.2.94/download -> libc-0.2.94.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=abdb7bfc4d6fb88f8e60d71ddfa57161
diff --git a/metadata/md5-cache/dev-rust/libchromeos-0.1.0-r32 b/metadata/md5-cache/dev-rust/libchromeos-0.1.0-r32
deleted file mode 100644
index 1162962..0000000
--- a/metadata/md5-cache/dev-rust/libchromeos-0.1.0-r32
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/vboot_reference:= dev-rust/data_model:= =dev-rust/futures-0.3*:= =dev-rust/getopts-0.2*:= =dev-rust/intrusive-collections-0.9*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= >=dev-rust/pkg-config-0.3.11:= <dev-rust/pkg-config-0.4.0:= >=dev-rust/protobuf-2.1:= !>=dev-rust/protobuf-3.0:= dev-rust/system_api:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0.0 >=virtual/rust-1.39.0:=
-DESCRIPTION=A Rust utility library for Chrome OS
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libchromeos-rs/
-IUSE=test cros_host cros_workon_tree_d4ef272515c32732b2b0f1d81a46936e640b0d39 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/vboot_reference:= !!<=dev-rust/libchromeos-0.1.0-r2
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r32
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3cfc28168b2c94aa4f82bc09bb917e4d
diff --git a/metadata/md5-cache/dev-rust/libchromeos-0.1.0-r48 b/metadata/md5-cache/dev-rust/libchromeos-0.1.0-r48
new file mode 100644
index 0000000..5c24b75
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/libchromeos-0.1.0-r48
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/vboot_reference:= dev-rust/data_model:= =dev-rust/futures-0.3*:= =dev-rust/getopts-0.2*:= =dev-rust/intrusive-collections-0.9*:= >=dev-rust/lazy_static-1.4.0:= <dev-rust/lazy_static-2.0.0 =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= >=dev-rust/pkg-config-0.3.11:= <dev-rust/pkg-config-0.4.0:= >=dev-rust/protobuf-2.1:= !>=dev-rust/protobuf-3.0:= dev-rust/sys_util:= dev-rust/system_api:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0.0 >=dev-rust/zeroize-1.2.0:= <dev-rust/zeroize-2.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=A Rust utility library for Chrome OS
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libchromeos-rs/
+IUSE=test cros_host cros_workon_tree_9fc61789a553775b1e6e521274f32ec89920b1d8 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/vboot_reference:= !!<=dev-rust/libchromeos-0.1.0-r2
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r48
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=efcec37c9a0a76e970cef21fdef480ec
diff --git a/metadata/md5-cache/dev-rust/libchromeos-9999 b/metadata/md5-cache/dev-rust/libchromeos-9999
index cba6ce5..f0ab0c1 100644
--- a/metadata/md5-cache/dev-rust/libchromeos-9999
+++ b/metadata/md5-cache/dev-rust/libchromeos-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/vboot_reference:= dev-rust/data_model:= =dev-rust/futures-0.3*:= =dev-rust/getopts-0.2*:= =dev-rust/intrusive-collections-0.9*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= >=dev-rust/pkg-config-0.3.11:= <dev-rust/pkg-config-0.4.0:= >=dev-rust/protobuf-2.1:= !>=dev-rust/protobuf-3.0:= dev-rust/system_api:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0.0 >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/vboot_reference:= dev-rust/data_model:= =dev-rust/futures-0.3*:= =dev-rust/getopts-0.2*:= =dev-rust/intrusive-collections-0.9*:= >=dev-rust/lazy_static-1.4.0:= <dev-rust/lazy_static-2.0.0 =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= >=dev-rust/pkg-config-0.3.11:= <dev-rust/pkg-config-0.4.0:= >=dev-rust/protobuf-2.1:= !>=dev-rust/protobuf-3.0:= dev-rust/sys_util:= dev-rust/system_api:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0.0 >=dev-rust/zeroize-1.2.0:= <dev-rust/zeroize-2.0.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust utility library for Chrome OS
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/libchromeos-rs/
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=chromeos-base/vboot_reference:= !!<=dev-rust/libchromeos-0.1.0-r2
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c4aed98fef0a724623d2064131f0e79f
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2d5bcbc301d43c7f2e44d892d15e263f
diff --git a/metadata/md5-cache/dev-rust/libdbus-sys-0.1.3 b/metadata/md5-cache/dev-rust/libdbus-sys-0.1.3
index 7e3e0ff..240cbe2 100644
--- a/metadata/md5-cache/dev-rust/libdbus-sys-0.1.3
+++ b/metadata/md5-cache/dev-rust/libdbus-sys-0.1.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/pkg-config-0.3:= sys-apps/dbus >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust FFI bindings to libdbus.
 EAPI=6
 HOMEPAGE=https://github.com/diwic/dbus-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.3/r0
 SRC_URI=https://crates.io/api/v1/crates/libdbus-sys/0.1.3/download -> libdbus-sys-0.1.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ab821bf28f3fe1dcae3767b6a5bfd05d
diff --git a/metadata/md5-cache/dev-rust/libdbus-sys-0.1.3-r1 b/metadata/md5-cache/dev-rust/libdbus-sys-0.1.3-r1
index d3b5d86..d0ea632 100644
--- a/metadata/md5-cache/dev-rust/libdbus-sys-0.1.3-r1
+++ b/metadata/md5-cache/dev-rust/libdbus-sys-0.1.3-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/pkg-config-0.3:= sys-apps/dbus >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust FFI bindings to libdbus.
 EAPI=6
 HOMEPAGE=https://github.com/diwic/dbus-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.3/r1
 SRC_URI=https://crates.io/api/v1/crates/libdbus-sys/0.1.3/download -> libdbus-sys-0.1.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ab821bf28f3fe1dcae3767b6a5bfd05d
diff --git a/metadata/md5-cache/dev-rust/libdbus-sys-0.2.1 b/metadata/md5-cache/dev-rust/libdbus-sys-0.2.1
index 68f36e2..14e3434 100644
--- a/metadata/md5-cache/dev-rust/libdbus-sys-0.2.1
+++ b/metadata/md5-cache/dev-rust/libdbus-sys-0.2.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/pkg-config-0.3*:= sys-apps/dbus:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust FFI bindings to libdbus.
 EAPI=7
 HOMEPAGE=https://github.com/diwic/dbus-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.1/r0
 SRC_URI=https://crates.io/api/v1/crates/libdbus-sys/0.2.1/download -> libdbus-sys-0.2.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d90ad91a6a21f3d0eb443f37a61e500c
diff --git a/metadata/md5-cache/dev-rust/libgit2-sys-0.8.0 b/metadata/md5-cache/dev-rust/libgit2-sys-0.8.0
index e35af4e..d888b8e 100644
--- a/metadata/md5-cache/dev-rust/libgit2-sys-0.8.0
+++ b/metadata/md5-cache/dev-rust/libgit2-sys-0.8.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/cc-1.0.25:= >=dev-rust/libc-0.2:= >=dev-rust/libssh2-sys-0.2.11:= >=dev-rust/libz-sys-1.0.22:= >=dev-rust/pkg-config-0.3.7:= >=dev-rust/openssl-sys-0.9.47:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Native bindings to the libgit2 library
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang/git2-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.0/r0
 SRC_URI=https://crates.io/api/v1/crates/libgit2-sys/0.8.0/download -> libgit2-sys-0.8.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e554571ba4c274b62089eadcb7e79636
diff --git a/metadata/md5-cache/dev-rust/libloading-0.6.5 b/metadata/md5-cache/dev-rust/libloading-0.6.5
deleted file mode 100644
index 430faba..0000000
--- a/metadata/md5-cache/dev-rust/libloading-0.6.5
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/cfg-if-1*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=A safer binding to platform's dynamic library loading utilities
-EAPI=7
-HOMEPAGE=https://github.com/nagisa/rust_libloading/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=ISC
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.6.5/r0
-SRC_URI=https://crates.io/api/v1/crates/libloading/0.6.5/download -> libloading-0.6.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6f27aeb40aceeac448966acf4148b7b5
diff --git a/metadata/md5-cache/dev-rust/libloading-0.7.0 b/metadata/md5-cache/dev-rust/libloading-0.7.0
new file mode 100644
index 0000000..52f0381
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/libloading-0.7.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/cfg-if-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A safer binding to platform’s dynamic library loading utilities
+EAPI=7
+HOMEPAGE=https://crates.io/crates/libloading
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=ISC
+RDEPEND==dev-rust/cfg-if-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.7.0/r0
+SRC_URI=https://crates.io/api/v1/crates/libloading/0.7.0/download -> libloading-0.7.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=20121da4725702b4d726ff3831d4d2d4
diff --git a/metadata/md5-cache/dev-rust/libnghttp2-sys-0.1.1 b/metadata/md5-cache/dev-rust/libnghttp2-sys-0.1.1
index 4720cf9..7cdf575 100644
--- a/metadata/md5-cache/dev-rust/libnghttp2-sys-0.1.1
+++ b/metadata/md5-cache/dev-rust/libnghttp2-sys-0.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/cc-1.0.24:= =dev-rust/libc-0.2*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A common library for linking nghttp2 to rust programs (also known as libnghttp2).
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/nghttp2-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/libnghttp2-sys/0.1.1/download -> libnghttp2-sys-0.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=5d207b657a14d4ace1a66cba852d7529
diff --git a/metadata/md5-cache/dev-rust/libsqlite3-sys-0.15.0 b/metadata/md5-cache/dev-rust/libsqlite3-sys-0.15.0
index c37ce60..7c7a966 100644
--- a/metadata/md5-cache/dev-rust/libsqlite3-sys-0.15.0
+++ b/metadata/md5-cache/dev-rust/libsqlite3-sys-0.15.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bindgen-0.49*:= =dev-rust/cc-1*:= =dev-rust/pkg-config-0.3*:= =dev-rust/vcpkg-0.2*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Native bindings to the libsqlite3 library
 EAPI=6
 HOMEPAGE=https://github.com/jgallagher/rusqlite
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.15.0/r0
 SRC_URI=https://crates.io/api/v1/crates/libsqlite3-sys/0.15.0/download -> libsqlite3-sys-0.15.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e308356015f92177baacdf7901e4cb9b
diff --git a/metadata/md5-cache/dev-rust/libsqlite3-sys-0.16.0 b/metadata/md5-cache/dev-rust/libsqlite3-sys-0.16.0
index 9b628ac..b9bc405 100644
--- a/metadata/md5-cache/dev-rust/libsqlite3-sys-0.16.0
+++ b/metadata/md5-cache/dev-rust/libsqlite3-sys-0.16.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bindgen-0.51*:= =dev-rust/cc-1*:= =dev-rust/pkg-config-0.3*:= =dev-rust/vcpkg-0.2*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Native bindings to the libsqlite3 library
 EAPI=6
 HOMEPAGE=https://github.com/jgallagher/rusqlite
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.16.0/r0
 SRC_URI=https://crates.io/api/v1/crates/libsqlite3-sys/0.16.0/download -> libsqlite3-sys-0.16.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3baec2ce68c6bb154667fbc053b00673
diff --git a/metadata/md5-cache/dev-rust/libssh2-sys-0.2.11 b/metadata/md5-cache/dev-rust/libssh2-sys-0.2.11
index ae71acd..0527edd 100644
--- a/metadata/md5-cache/dev-rust/libssh2-sys-0.2.11
+++ b/metadata/md5-cache/dev-rust/libssh2-sys-0.2.11
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/cc-1.0.25:= >=dev-rust/libc-0.2:= >=dev-rust/libz-sys-1.0.21:= >=dev-rust/openssl-sys-0.9.35:= >=dev-rust/pkg-config-0.3.11:= >=dev-rust/vcpkg-0.2:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Native bindings to the libssh2 library
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/ssh2-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.11/r0
 SRC_URI=https://crates.io/api/v1/crates/libssh2-sys/0.2.11/download -> libssh2-sys-0.2.11.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e6510c3b34f2088db6bd4c5ca18996bb
diff --git a/metadata/md5-cache/dev-rust/libusb1-sys-0.3.7 b/metadata/md5-cache/dev-rust/libusb1-sys-0.3.7
index 2270823..aff062f 100644
--- a/metadata/md5-cache/dev-rust/libusb1-sys-0.3.7
+++ b/metadata/md5-cache/dev-rust/libusb1-sys-0.3.7
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/pkg-config-0.3*:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/libc-0.2*:= =dev-rust/pkg-config-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=FFI bindings for libusb
 EAPI=7
 HOMEPAGE=https://docs.rs/crate/libusb1-sys/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
+RDEPEND==dev-rust/libc-0.2*:= =dev-rust/pkg-config-0.3*:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.7/r0
 SRC_URI=https://crates.io/api/v1/crates/libusb1-sys/0.3.7/download -> libusb1-sys-0.3.7.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cccf0f3a7b6092f354c76984b119651c
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=dc44a266a7ab8525eb4a883ed26bf30d
diff --git a/metadata/md5-cache/dev-rust/libusb1-sys-0.3.7-r1 b/metadata/md5-cache/dev-rust/libusb1-sys-0.3.7-r1
deleted file mode 100644
index fb513dd..0000000
--- a/metadata/md5-cache/dev-rust/libusb1-sys-0.3.7-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/pkg-config-0.3*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=FFI bindings for libusb
-EAPI=7
-HOMEPAGE=https://docs.rs/crate/libusb1-sys/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=MIT
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.3.7/r1
-SRC_URI=https://crates.io/api/v1/crates/libusb1-sys/0.3.7/download -> libusb1-sys-0.3.7.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cccf0f3a7b6092f354c76984b119651c
diff --git a/metadata/md5-cache/dev-rust/libusb1-sys-0.3.7-r2 b/metadata/md5-cache/dev-rust/libusb1-sys-0.3.7-r2
new file mode 100644
index 0000000..e460ebb
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/libusb1-sys-0.3.7-r2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/libc-0.2*:= =dev-rust/pkg-config-0.3*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=FFI bindings for libusb
+EAPI=7
+HOMEPAGE=https://docs.rs/crate/libusb1-sys/
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/libc-0.2*:= =dev-rust/pkg-config-0.3*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.7/r2
+SRC_URI=https://crates.io/api/v1/crates/libusb1-sys/0.3.7/download -> libusb1-sys-0.3.7.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=dc44a266a7ab8525eb4a883ed26bf30d
diff --git a/metadata/md5-cache/dev-rust/libvda-0.1.0-r24 b/metadata/md5-cache/dev-rust/libvda-0.1.0-r24
deleted file mode 100644
index a8ddcc6..0000000
--- a/metadata/md5-cache/dev-rust/libvda-0.1.0-r24
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/libvda:= !!<=dev-rust/libvda-0.0.1-r5 dev-rust/pkg-config:= dev-rust/enumn:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Rust wrapper for chromeos-base/libvda
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda/rust
-IUSE=test cros_host cros_workon_tree_ef853e60ca368159e6086ff7ad9b3c9a9629af5c cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/libvda:= !!<=dev-rust/libvda-0.0.1-r5
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r24
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a1324c901277726c5027043ac05ff46f
diff --git a/metadata/md5-cache/dev-rust/libvda-0.1.0-r28 b/metadata/md5-cache/dev-rust/libvda-0.1.0-r28
new file mode 100644
index 0000000..ecddcfb
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/libvda-0.1.0-r28
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/libvda:= dev-rust/pkg-config:= dev-rust/enumn:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust wrapper for chromeos-base/libvda
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda/rust
+IUSE=test cros_host cros_workon_tree_142c68f4879301817d9f64b7ff516acdda20e554 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/libvda:= dev-rust/pkg-config:= dev-rust/enumn:= !!<=dev-rust/libvda-0.0.1-r5
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r28
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=bf85c7a38e3421ba73f8745c598d77ec
diff --git a/metadata/md5-cache/dev-rust/libvda-9999 b/metadata/md5-cache/dev-rust/libvda-9999
index 64deaf7..4a9cbe5 100644
--- a/metadata/md5-cache/dev-rust/libvda-9999
+++ b/metadata/md5-cache/dev-rust/libvda-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/libvda:= !!<=dev-rust/libvda-0.0.1-r5 dev-rust/pkg-config:= dev-rust/enumn:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/libvda:= dev-rust/pkg-config:= dev-rust/enumn:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust wrapper for chromeos-base/libvda
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/arc/vm/libvda/rust
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=chromeos-base/libvda:= !!<=dev-rust/libvda-0.0.1-r5
+RDEPEND=chromeos-base/libvda:= dev-rust/pkg-config:= dev-rust/enumn:= !!<=dev-rust/libvda-0.0.1-r5
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=151351169b834f2c51989eed3c857ed1
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=58799e46d1a52a284bdbdb74867ec8d2
diff --git a/metadata/md5-cache/dev-rust/libz-sys-1.0.18 b/metadata/md5-cache/dev-rust/libz-sys-1.0.18
deleted file mode 100644
index 054b8f4..0000000
--- a/metadata/md5-cache/dev-rust/libz-sys-1.0.18
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/cc-1*:= =dev-rust/libc-0.2*:= =dev-rust/pkg-config-0.3*:= =dev-rust/vcpkg-0.2*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=This crate provides multi-producer multi-consumer channels for message passing.
-EAPI=6
-HOMEPAGE=https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-channel
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.18/r0
-SRC_URI=https://crates.io/api/v1/crates/libz-sys/1.0.18/download -> libz-sys-1.0.18.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a831a3b9a615f9aec66dd98ef97183a5
diff --git a/metadata/md5-cache/dev-rust/libz-sys-1.0.25 b/metadata/md5-cache/dev-rust/libz-sys-1.0.25
deleted file mode 100644
index b8638f9..0000000
--- a/metadata/md5-cache/dev-rust/libz-sys-1.0.25
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/cc-1.0.18:= >=dev-rust/libc-0.2.43:= >=dev-rust/pkg-config-0.3.9:= >=dev-rust/vcpkg-0.2:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Bindings to the system libz library (also known as zlib).
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang/libz-sys
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.25/r0
-SRC_URI=https://crates.io/api/v1/crates/libz-sys/1.0.25/download -> libz-sys-1.0.25.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=8252b37814e1ee7583b6e5cdefdee819
diff --git a/metadata/md5-cache/dev-rust/libz-sys-1.1.2 b/metadata/md5-cache/dev-rust/libz-sys-1.1.2
new file mode 100644
index 0000000..15c3722
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/libz-sys-1.1.2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2.43:= <dev-rust/libc-0.3 >=dev-rust/cc-1.0.18:= <dev-rust/cc-2 >=dev-rust/pkg-config-0.3.9:= <dev-rust/pkg-config-0.4 >=dev-rust/vcpkg-0.2:= <dev-rust/vcpkg-0.3 >=virtual/rust-1.39.0:=
+DESCRIPTION=Bindings to the system libz library (also known as zlib).
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang/libz-sys
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.1.2/r0
+SRC_URI=https://crates.io/api/v1/crates/libz-sys/1.1.2/download -> libz-sys-1.1.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=51a7331d3ae6a4f9bca1f08f44edfc4f
diff --git a/metadata/md5-cache/dev-rust/linked-hash-map-0.5.2 b/metadata/md5-cache/dev-rust/linked-hash-map-0.5.2
index 018188f..3b50851 100644
--- a/metadata/md5-cache/dev-rust/linked-hash-map-0.5.2
+++ b/metadata/md5-cache/dev-rust/linked-hash-map-0.5.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/clippy-0.0*:= =dev-rust/heapsize-0.4*:= =dev-rust/serde-1*:= =dev-rust/serde_test-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A HashMap wrapper that holds key-value pairs in insertion order
 EAPI=6
 HOMEPAGE=https://github.com/contain-rs/linked-hash-map
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.2/r0
 SRC_URI=https://crates.io/api/v1/crates/linked-hash-map/0.5.2/download -> linked-hash-map-0.5.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=81356d66fac52dd2225e0d17512d2121
diff --git a/metadata/md5-cache/dev-rust/linked-hash-map-0.5.2-r1 b/metadata/md5-cache/dev-rust/linked-hash-map-0.5.2-r1
index f5a99c9..b6f1dde9 100644
--- a/metadata/md5-cache/dev-rust/linked-hash-map-0.5.2-r1
+++ b/metadata/md5-cache/dev-rust/linked-hash-map-0.5.2-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/clippy-0.0*:= =dev-rust/heapsize-0.4*:= =dev-rust/serde-1*:= =dev-rust/serde_test-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A HashMap wrapper that holds key-value pairs in insertion order
 EAPI=6
 HOMEPAGE=https://github.com/contain-rs/linked-hash-map
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.2/r1
 SRC_URI=https://crates.io/api/v1/crates/linked-hash-map/0.5.2/download -> linked-hash-map-0.5.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=81356d66fac52dd2225e0d17512d2121
diff --git a/metadata/md5-cache/dev-rust/lock_api-0.1.5 b/metadata/md5-cache/dev-rust/lock_api-0.1.5
index e5c4197..4a9c6a7 100644
--- a/metadata/md5-cache/dev-rust/lock_api-0.1.5
+++ b/metadata/md5-cache/dev-rust/lock_api-0.1.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/scopeguard-0.3*:= =dev-rust/owning_ref-0.4*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Wrappers to create fully-featured Mutex and RwLock types. Compatible with no_std
 EAPI=6
 HOMEPAGE=https://github.com/Amanieu/parking_lot
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.5/r0
 SRC_URI=https://crates.io/api/v1/crates/lock_api/0.1.5/download -> lock_api-0.1.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=26f5ecce9302bddfd744211c4709b48d
diff --git a/metadata/md5-cache/dev-rust/lock_api-0.3.4 b/metadata/md5-cache/dev-rust/lock_api-0.3.4
new file mode 100644
index 0000000..4ec951a
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/lock_api-0.3.4
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/owning_ref-0.4*:= =dev-rust/scopeguard-1*:= >=dev-rust/serde-1.0.90:= <dev-rust/serde-2.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Wrappers to create fully-featured Mutex and RwLock types. Compatible with no_std.
+EAPI=7
+HOMEPAGE=https://crates.io/crates/lock_api
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( Apache-2.0 MIT )
+RDEPEND==dev-rust/owning_ref-0.4*:= =dev-rust/scopeguard-1*:= >=dev-rust/serde-1.0.90:= <dev-rust/serde-2.0.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.4/r0
+SRC_URI=https://crates.io/api/v1/crates/lock_api/0.3.4/download -> lock_api-0.3.4.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=347e89eb667a7a8114993f7276eef0d4
diff --git a/metadata/md5-cache/dev-rust/log-0.4.11 b/metadata/md5-cache/dev-rust/log-0.4.11
deleted file mode 100644
index 918b1d5..0000000
--- a/metadata/md5-cache/dev-rust/log-0.4.11
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/cfg-if-0.1.2:= <dev-rust/cfg-if-0.2.0 =dev-rust/serde-1*:= =dev-rust/sval-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=A lightweight logging facade for rust
-EAPI=7
-HOMEPAGE=https://github.com/rust-lang/log
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.4.11/r0
-SRC_URI=https://crates.io/api/v1/crates/log/0.4.11/download -> log-0.4.11.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6626adece57a1c0f970a98cf83429e70
diff --git a/metadata/md5-cache/dev-rust/log-0.4.14 b/metadata/md5-cache/dev-rust/log-0.4.14
new file mode 100644
index 0000000..5ecf4e6
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/log-0.4.14
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/cfg-if-1*:= =dev-rust/serde-1*:= =dev-rust/sval-1*:= =dev-rust/value-bag-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A lightweight logging facade for Rust
+EAPI=7
+HOMEPAGE=https://crates.io/crates/log
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/cfg-if-1*:= =dev-rust/serde-1*:= =dev-rust/sval-1*:= =dev-rust/value-bag-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.14/r0
+SRC_URI=https://crates.io/api/v1/crates/log/0.4.14/download -> log-0.4.14.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1690ac14eb76220785c8ef988be6cc28
diff --git a/metadata/md5-cache/dev-rust/log-0.4.5 b/metadata/md5-cache/dev-rust/log-0.4.5
deleted file mode 100644
index 9cf38c7..0000000
--- a/metadata/md5-cache/dev-rust/log-0.4.5
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/cfg-if:= dev-rust/serde:= dev-rust/serde_test:= >=virtual/rust-1.39.0:=
-DESCRIPTION=A lightweight logging facade for rust
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang/log
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.4.5/r0
-SRC_URI=https://crates.io/api/v1/crates/log/0.4.5/download -> log-0.4.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a9f0592ec1e6c695598572e79249b38b
diff --git a/metadata/md5-cache/dev-rust/loom-0.1.1 b/metadata/md5-cache/dev-rust/loom-0.1.1
index 2585334..a40454b 100644
--- a/metadata/md5-cache/dev-rust/loom-0.1.1
+++ b/metadata/md5-cache/dev-rust/loom-0.1.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty loom crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/lru-0.1.16 b/metadata/md5-cache/dev-rust/lru-0.1.16
index 641ec47..0b46534 100644
--- a/metadata/md5-cache/dev-rust/lru-0.1.16
+++ b/metadata/md5-cache/dev-rust/lru-0.1.16
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/hashbrown-0.1*:= =dev-rust/scoped_threadpool-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=An implementation of a LRU cache. The cache supports put, get, get_mut and pop operations, all of which are O(1). This crate was heavily influenced by the LRU Cache implementation in an earlier version of Rust's std::collections crate.
 EAPI=6
 HOMEPAGE=https://github.com/jeromefroe/lru-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.16/r0
 SRC_URI=https://crates.io/api/v1/crates/lru/0.1.16/download -> lru-0.1.16.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=65ae5b329578092647986e5c328d9b9b
diff --git a/metadata/md5-cache/dev-rust/lru-0.6.5 b/metadata/md5-cache/dev-rust/lru-0.6.5
new file mode 100644
index 0000000..5333377
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/lru-0.6.5
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/hashbrown-0.9*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A LRU cache implementation
+EAPI=7
+HOMEPAGE=https://github.com/jeromefroe/lru-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/hashbrown-0.9*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.6.5/r0
+SRC_URI=https://crates.io/api/v1/crates/lru/0.6.5/download -> lru-0.6.5.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=179ea1f87824727c0f1909d81a8f57f3
diff --git a/metadata/md5-cache/dev-rust/lru-cache-0.1.2 b/metadata/md5-cache/dev-rust/lru-cache-0.1.2
index 389ec9f..4f3d10b 100644
--- a/metadata/md5-cache/dev-rust/lru-cache-0.1.2
+++ b/metadata/md5-cache/dev-rust/lru-cache-0.1.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/linked-hash-map-0.5*:= =dev-rust/heapsize-0.4*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A cache that holds a limited number of key-value pairs
 EAPI=6
 HOMEPAGE=https://github.com/contain-rs/lru-cache
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.2/r0
 SRC_URI=https://crates.io/api/v1/crates/lru-cache/0.1.2/download -> lru-cache-0.1.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ca44c14b6ca8abfa3bcce15535f7c4a2
diff --git a/metadata/md5-cache/dev-rust/managed-0.8.0 b/metadata/md5-cache/dev-rust/managed-0.8.0
index 7c513c9..a3f24ed 100644
--- a/metadata/md5-cache/dev-rust/managed-0.8.0
+++ b/metadata/md5-cache/dev-rust/managed-0.8.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=managed is a library that provides a way to logically own objects, whether or not heap allocation is available.
 EAPI=7
 HOMEPAGE=https://github.com/smoltcp-rs/rust-managed
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.0/r0
 SRC_URI=https://crates.io/api/v1/crates/managed/0.8.0/download -> managed-0.8.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=8fd32779cc99e75a82e21c06e0ba87b6
diff --git a/metadata/md5-cache/dev-rust/manatee-client-0.24.52-r13 b/metadata/md5-cache/dev-rust/manatee-client-0.24.52-r13
new file mode 100644
index 0000000..68d3958
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/manatee-client-0.24.52-r13
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=sys-apps/dbus chromeos-base/libsirenia:= dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= =dev-rust/log-0.4*:= =dev-rust/stderrlog-0.5*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 =dev-rust/which-4*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust D-Bus bindings for ManaTEE.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/manatee-client
+IUSE=cros_host cros_workon_tree_a1d60d57f61a5bca613446926cc66c65ac62ce8b_3508d2f3db0647ef3871071db0b2fbfd7b6af042 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/dbus
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.24.52-r13
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=82c1da291bf5df527464e4d94507cb03
diff --git a/metadata/md5-cache/dev-rust/manatee-client-0.24.52-r3 b/metadata/md5-cache/dev-rust/manatee-client-0.24.52-r3
deleted file mode 100644
index 1491692..0000000
--- a/metadata/md5-cache/dev-rust/manatee-client-0.24.52-r3
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/dbus-0.8*:= dev-rust/chromeos-dbus-bindings:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Rust D-Bus bindings for ManaTEE.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/manatee-client
-IUSE=cros_host cros_workon_tree_2336cfdf1864aa183d4f099c233c999636f9d5e1_bbcb9d3c399693aac6cde20e091eb62ee734e22b cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.24.52-r3
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cb00ab18ca04b6f48c08896bf95025f5
diff --git a/metadata/md5-cache/dev-rust/manatee-client-9999 b/metadata/md5-cache/dev-rust/manatee-client-9999
index 90ed6ad..2edc282 100644
--- a/metadata/md5-cache/dev-rust/manatee-client-9999
+++ b/metadata/md5-cache/dev-rust/manatee-client-9999
@@ -1,14 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/dbus-0.8*:= dev-rust/chromeos-dbus-bindings:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=sys-apps/dbus chromeos-base/libsirenia:= dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= =dev-rust/getopts-0.2*:= dev-rust/libchromeos:= =dev-rust/log-0.4*:= =dev-rust/stderrlog-0.5*:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 =dev-rust/which-4*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust D-Bus bindings for ManaTEE.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/sirenia/manatee-client
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
+RDEPEND=sys-apps/dbus
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=677cad53195c805f963ab8fab8ba9539
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d7e73d8c93f79e5ff79465f1dddbaf0a
diff --git a/metadata/md5-cache/dev-rust/matches-0.1.8 b/metadata/md5-cache/dev-rust/matches-0.1.8
index 7e9176b..b3c70f1 100644
--- a/metadata/md5-cache/dev-rust/matches-0.1.8
+++ b/metadata/md5-cache/dev-rust/matches-0.1.8
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A macro to evaluate, as a boolean, whether an expression matches a pattern
 EAPI=6
 HOMEPAGE=https://github.com/SimonSapin/rust-std-candidates
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.8/r0
 SRC_URI=https://crates.io/api/v1/crates/matches/0.1.8/download -> matches-0.1.8.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=4a292c75abb4d90b66d1c3feae66831e
diff --git a/metadata/md5-cache/dev-rust/maybe-uninit-2.0.0 b/metadata/md5-cache/dev-rust/maybe-uninit-2.0.0
new file mode 100644
index 0000000..7a04c5f
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/maybe-uninit-2.0.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=MaybeUninit for friends of backwards compatibility
+EAPI=7
+HOMEPAGE=https://crates.io/crates/maybe-uninit
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( Apache-2.0 MIT )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=2.0.0/r0
+SRC_URI=https://crates.io/api/v1/crates/maybe-uninit/2.0.0/download -> maybe-uninit-2.0.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3643f4199a90280407778d2a19d5ed88
diff --git a/metadata/md5-cache/dev-rust/memchr-2.2.1 b/metadata/md5-cache/dev-rust/memchr-2.2.1
index 8b1cead..c81151b 100644
--- a/metadata/md5-cache/dev-rust/memchr-2.2.1
+++ b/metadata/md5-cache/dev-rust/memchr-2.2.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2.18:= <dev-rust/libc-0.3.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Safe interface to memchr.
 EAPI=6
 HOMEPAGE=https://docs.rs/crate/memchr/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.2.1/r0
 SRC_URI=https://crates.io/api/v1/crates/memchr/2.2.1/download -> memchr-2.2.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=db4aca02ad3f6c4ae112d431d15bd6af
diff --git a/metadata/md5-cache/dev-rust/memchr-2.4.0 b/metadata/md5-cache/dev-rust/memchr-2.4.0
new file mode 100644
index 0000000..4d7849e
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/memchr-2.4.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2.18:= <dev-rust/libc-0.3.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Safe interface to memchr.
+EAPI=7
+HOMEPAGE=https://github.com/BurntSushi/rust-memchr
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/libc-0.2.18:= <dev-rust/libc-0.3.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=2.4.0/r0
+SRC_URI=https://crates.io/api/v1/crates/memchr/2.4.0/download -> memchr-2.4.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9c59693081d8f182a07c5b039f276b03
diff --git a/metadata/md5-cache/dev-rust/memmap-0.6.2 b/metadata/md5-cache/dev-rust/memmap-0.6.2
index b017b5f..e7969e2 100644
--- a/metadata/md5-cache/dev-rust/memmap-0.6.2
+++ b/metadata/md5-cache/dev-rust/memmap-0.6.2
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty memmap crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.2/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/memoffset-0.2.1 b/metadata/md5-cache/dev-rust/memoffset-0.2.1
index 2bfef54..0d2ba24 100644
--- a/metadata/md5-cache/dev-rust/memoffset-0.2.1
+++ b/metadata/md5-cache/dev-rust/memoffset-0.2.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=C-Like offset_of functionality for Rust structs
 EAPI=6
 HOMEPAGE=https://github.com/Gilnaa/memoffset
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.1/r0
 SRC_URI=https://crates.io/api/v1/crates/memoffset/0.2.1/download -> memoffset-0.2.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=827e49c10ca04132710ce228e3e2dd56
diff --git a/metadata/md5-cache/dev-rust/memoffset-0.5.5 b/metadata/md5-cache/dev-rust/memoffset-0.5.5
deleted file mode 100644
index 734cd82..0000000
--- a/metadata/md5-cache/dev-rust/memoffset-0.5.5
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/autocfg-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=C-Like offset_of functionality for Rust structs
-EAPI=7
-HOMEPAGE=https://github.com/Gilnaa/memoffset
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=MIT
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.5.5/r0
-SRC_URI=https://crates.io/api/v1/crates/memoffset/0.5.5/download -> memoffset-0.5.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=17653cae1d63c7ce920e49a84348a4bb
diff --git a/metadata/md5-cache/dev-rust/memoffset-0.5.6 b/metadata/md5-cache/dev-rust/memoffset-0.5.6
new file mode 100644
index 0000000..08a857e
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/memoffset-0.5.6
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/autocfg-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=C-Like offset_of functionality for Rust structs
+EAPI=7
+HOMEPAGE=https://github.com/Gilnaa/memoffset
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/autocfg-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.5.6/r0
+SRC_URI=https://crates.io/api/v1/crates/memoffset/0.5.6/download -> memoffset-0.5.6.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0ae7e6c5da7c116388dda4b007a5641c
diff --git a/metadata/md5-cache/dev-rust/minijail-0.2.1-r2 b/metadata/md5-cache/dev-rust/minijail-0.2.1-r2
deleted file mode 100644
index 7a8a6c4..0000000
--- a/metadata/md5-cache/dev-rust/minijail-0.2.1-r2
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 dev-rust/minijail-sys:= >=virtual/rust-1.39.0:=
-DESCRIPTION=rust bindings for minijail
-EAPI=7
-HOMEPAGE=https://android.googlesource.com/platform/external/minijail
-IUSE=asan test cros_host cros_workon_tree_2ac2853d10ad0e5f4b451d75ea3590649b9ee241 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.2.1-r2
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2b94616f80e7266f7f7e2cd335673a46
diff --git a/metadata/md5-cache/dev-rust/minijail-0.2.1-r6 b/metadata/md5-cache/dev-rust/minijail-0.2.1-r6
new file mode 100644
index 0000000..d31c946
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/minijail-0.2.1-r6
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 dev-rust/minijail-sys:= >=virtual/rust-1.39.0:=
+DESCRIPTION=rust bindings for minijail
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/external/minijail
+IUSE=asan test cros_host cros_workon_tree_2ac2853d10ad0e5f4b451d75ea3590649b9ee241 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 dev-rust/minijail-sys:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.2.1-r6
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=372ed08b79e33ef53d355845a46960ec
diff --git a/metadata/md5-cache/dev-rust/minijail-0.2.2-r8 b/metadata/md5-cache/dev-rust/minijail-0.2.2-r8
new file mode 100644
index 0000000..ad5e0ce
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/minijail-0.2.2-r8
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 dev-rust/minijail-sys:= >=virtual/rust-1.39.0:=
+DESCRIPTION=rust bindings for minijail
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/external/minijail
+IUSE=asan test cros_host cros_workon_tree_7dd54d6994a78efa674fac10be69ff0c8866e384 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 dev-rust/minijail-sys:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.2.2-r8
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a2d98350c902f4c1dfc5123eef536f83
diff --git a/metadata/md5-cache/dev-rust/minijail-9999 b/metadata/md5-cache/dev-rust/minijail-9999
index 858092b..462d8c9 100644
--- a/metadata/md5-cache/dev-rust/minijail-9999
+++ b/metadata/md5-cache/dev-rust/minijail-9999
@@ -1,14 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 dev-rust/minijail-sys:= >=virtual/rust-1.39.0:=
 DESCRIPTION=rust bindings for minijail
 EAPI=7
 HOMEPAGE=https://android.googlesource.com/platform/external/minijail
-IUSE=asan test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=asan test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
+RDEPEND=>=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 dev-rust/minijail-sys:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=77e1ce08839a2e2950d1691c73d1c6b8
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7bc7794171d39e00e925fcf1d05c38f7
diff --git a/metadata/md5-cache/dev-rust/minijail-sys-0.0.11-r2 b/metadata/md5-cache/dev-rust/minijail-sys-0.0.11-r2
deleted file mode 100644
index cedfb32..0000000
--- a/metadata/md5-cache/dev-rust/minijail-sys-0.0.11-r2
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/minijail:= sys-libs/libcap:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 >=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0 >=virtual/rust-1.39.0:=
-DESCRIPTION=rust bindings for minijail
-EAPI=7
-HOMEPAGE=https://android.googlesource.com/platform/external/minijail
-IUSE=test cros_host cros_workon_tree_c12462bccb06babed5abc2a8e153f3ff5b04d259 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/minijail:= sys-libs/libcap:=
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.0.11-r2
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=5c613764c45d8d31865ddbd6d309c053
diff --git a/metadata/md5-cache/dev-rust/minijail-sys-0.0.11-r6 b/metadata/md5-cache/dev-rust/minijail-sys-0.0.11-r6
new file mode 100644
index 0000000..cfeeaba
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/minijail-sys-0.0.11-r6
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/minijail:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 >=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0 sys-libs/libcap:= virtual/bindgen:= >=virtual/rust-1.39.0:=
+DESCRIPTION=rust bindings for minijail
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/external/minijail
+IUSE=test cros_host cros_workon_tree_c12462bccb06babed5abc2a8e153f3ff5b04d259 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/minijail:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 >=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0 sys-libs/libcap:= virtual/bindgen:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.0.11-r6
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5af106317406cc875b3d3c63dc5d0879
diff --git a/metadata/md5-cache/dev-rust/minijail-sys-0.0.12-r8 b/metadata/md5-cache/dev-rust/minijail-sys-0.0.12-r8
new file mode 100644
index 0000000..04a0b61
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/minijail-sys-0.0.12-r8
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/minijail:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 >=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0 sys-libs/libcap:= virtual/bindgen:= >=virtual/rust-1.39.0:=
+DESCRIPTION=rust bindings for minijail
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/external/minijail
+IUSE=test cros_host cros_workon_tree_1121f5e2d4d75def167b19e54a7e03264df8a7f7 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/minijail:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 >=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0 sys-libs/libcap:= virtual/bindgen:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.0.12-r8
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fdda0a550088150b70534a4a8f06be5d
diff --git a/metadata/md5-cache/dev-rust/minijail-sys-9999 b/metadata/md5-cache/dev-rust/minijail-sys-9999
index 5b8cbdc..b503f63 100644
--- a/metadata/md5-cache/dev-rust/minijail-sys-9999
+++ b/metadata/md5-cache/dev-rust/minijail-sys-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=chromeos-base/minijail:= sys-libs/libcap:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 >=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0 virtual/bindgen:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=chromeos-base/minijail:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 >=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0 sys-libs/libcap:= virtual/bindgen:= >=virtual/rust-1.39.0:=
 DESCRIPTION=rust bindings for minijail
 EAPI=7
 HOMEPAGE=https://android.googlesource.com/platform/external/minijail
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=chromeos-base/minijail:= sys-libs/libcap:=
+RDEPEND=chromeos-base/minijail:= >=dev-rust/libc-0.2.44:= <dev-rust/libc-0.3.0 >=dev-rust/pkg-config-0.3.0:= <dev-rust/pkg-config-0.4.0 sys-libs/libcap:= virtual/bindgen:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=bcc0250122759c6dfe07a8269a8605ad
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=82934542a10ef884170f3c3bf498ec18
diff --git a/metadata/md5-cache/dev-rust/miniz-sys-0.1.12 b/metadata/md5-cache/dev-rust/miniz-sys-0.1.12
new file mode 100644
index 0000000..fb61b8b
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/miniz-sys-0.1.12
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2:= <dev-rust/libc-0.3 >=dev-rust/cc-1.0:= <dev-rust/cc-2 >=virtual/rust-1.39.0:=
+DESCRIPTION=Bindings to the miniz.c library
+EAPI=7
+HOMEPAGE=https://github.com/alexcrichton/flate2-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.12/r0
+SRC_URI=https://crates.io/api/v1/crates/miniz-sys/0.1.12/download -> miniz-sys-0.1.12.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=05bb35708104da2c0ed4cb8b3df2b520
diff --git a/metadata/md5-cache/dev-rust/miniz_oxide-0.4.4 b/metadata/md5-cache/dev-rust/miniz_oxide-0.4.4
new file mode 100644
index 0000000..e93c048
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/miniz_oxide-0.4.4
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/adler-1.0:= <dev-rust/adler-2 >=virtual/rust-1.39.0:=
+DESCRIPTION=DEFLATE compression and decompression library rewritten in Rust based on miniz
+EAPI=7
+HOMEPAGE=https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT ZLIB Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.4/r0
+SRC_URI=https://crates.io/api/v1/crates/miniz_oxide/0.4.4/download -> miniz_oxide-0.4.4.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f065a31864be717acaec2bb063d326e6
diff --git a/metadata/md5-cache/dev-rust/mio-0.6.17 b/metadata/md5-cache/dev-rust/mio-0.6.17
index 623354c..04551f1 100644
--- a/metadata/md5-cache/dev-rust/mio-0.6.17
+++ b/metadata/md5-cache/dev-rust/mio-0.6.17
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/fuchsia-zircon-0.3*:= =dev-rust/fuchsia-zircon-sys-0.3*:= =dev-rust/iovec-0.1*:= =dev-rust/kernel32-sys-0.2*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= =dev-rust/miow-0.2*:= =dev-rust/net2-0.2*:= =dev-rust/slab-0.4*:= =dev-rust/winapi-0.2*:= =dev-rust/bytes-0.3*:= =dev-rust/env_logger-0.4*:= =dev-rust/tempdir-0.3*:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/iovec-0.1.1:= <dev-rust/iovec-0.2 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 =dev-rust/log-0.4*:= >=dev-rust/net2-0.2.29:= <dev-rust/net2-0.3.0 =dev-rust/slab-0.4*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Mio is a lightweight I/O library for Rust with a focus on adding as little overhead as possible over the OS abstractions
-EAPI=6
+EAPI=7
 HOMEPAGE=https://github.com/carllerche/mio
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
+RDEPEND=>=dev-rust/iovec-0.1.1:= <dev-rust/iovec-0.2 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 =dev-rust/log-0.4*:= >=dev-rust/net2-0.2.29:= <dev-rust/net2-0.3.0 =dev-rust/slab-0.4*:= !=dev-rust/mio-0.6*
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.17/r0
 SRC_URI=https://crates.io/api/v1/crates/mio/0.6.17/download -> mio-0.6.17.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d8daa378c765417dbdbd9cf0be44b5ac
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=20a92371a17948d001423d0013809a02
diff --git a/metadata/md5-cache/dev-rust/mio-0.6.17-r1 b/metadata/md5-cache/dev-rust/mio-0.6.17-r1
new file mode 100644
index 0000000..5fdcd58
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/mio-0.6.17-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/iovec-0.1.1:= <dev-rust/iovec-0.2 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 =dev-rust/log-0.4*:= >=dev-rust/net2-0.2.29:= <dev-rust/net2-0.3.0 =dev-rust/slab-0.4*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Mio is a lightweight I/O library for Rust with a focus on adding as little overhead as possible over the OS abstractions
+EAPI=7
+HOMEPAGE=https://github.com/carllerche/mio
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/iovec-0.1.1:= <dev-rust/iovec-0.2 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 =dev-rust/log-0.4*:= >=dev-rust/net2-0.2.29:= <dev-rust/net2-0.3.0 =dev-rust/slab-0.4*:= !=dev-rust/mio-0.6*
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.6.17/r1
+SRC_URI=https://crates.io/api/v1/crates/mio/0.6.17/download -> mio-0.6.17.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=20a92371a17948d001423d0013809a02
diff --git a/metadata/md5-cache/dev-rust/mio-0.6.17-r2 b/metadata/md5-cache/dev-rust/mio-0.6.17-r2
new file mode 100644
index 0000000..32bdec15
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/mio-0.6.17-r2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/iovec-0.1.1:= <dev-rust/iovec-0.2 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 =dev-rust/log-0.4*:= >=dev-rust/net2-0.2.29:= <dev-rust/net2-0.3.0 =dev-rust/slab-0.4*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Mio is a lightweight I/O library for Rust with a focus on adding as little overhead as possible over the OS abstractions
+EAPI=7
+HOMEPAGE=https://github.com/carllerche/mio
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/iovec-0.1.1:= <dev-rust/iovec-0.2 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 =dev-rust/log-0.4*:= >=dev-rust/net2-0.2.29:= <dev-rust/net2-0.3.0 =dev-rust/slab-0.4*:= !=dev-rust/mio-0.6*
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.6.17/r2
+SRC_URI=https://crates.io/api/v1/crates/mio/0.6.17/download -> mio-0.6.17.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=20a92371a17948d001423d0013809a02
diff --git a/metadata/md5-cache/dev-rust/mio-0.6.23 b/metadata/md5-cache/dev-rust/mio-0.6.23
new file mode 100644
index 0000000..2671b13
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/mio-0.6.23
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/cfg-if-0.1.9:= <dev-rust/cfg-if-0.2.0 >=dev-rust/iovec-0.1.1:= <dev-rust/iovec-0.2.0 =dev-rust/log-0.4*:= >=dev-rust/net2-0.2.36:= <dev-rust/net2-0.3.0 =dev-rust/slab-0.4*:= >=dev-rust/libc-0.2.54:= <dev-rust/libc-0.3.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Lightweight non-blocking IO
+EAPI=7
+HOMEPAGE=https://github.com/tokio-rs/mio
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/cfg-if-0.1.9:= <dev-rust/cfg-if-0.2.0 >=dev-rust/iovec-0.1.1:= <dev-rust/iovec-0.2.0 =dev-rust/log-0.4*:= >=dev-rust/net2-0.2.36:= <dev-rust/net2-0.3.0 =dev-rust/slab-0.4*:= >=dev-rust/libc-0.2.54:= <dev-rust/libc-0.3.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.6.23/r0
+SRC_URI=https://crates.io/api/v1/crates/mio/0.6.23/download -> mio-0.6.23.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ddb611e204c71ce4343b57475fcbd28c
diff --git a/metadata/md5-cache/dev-rust/mio-extras-2.0.5 b/metadata/md5-cache/dev-rust/mio-extras-2.0.5
index af83544..819516c 100644
--- a/metadata/md5-cache/dev-rust/mio-extras-2.0.5
+++ b/metadata/md5-cache/dev-rust/mio-extras-2.0.5
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty mio-extras crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.0.5/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/mio-uds-0.6.7 b/metadata/md5-cache/dev-rust/mio-uds-0.6.7
index b4e4559..42d6213 100644
--- a/metadata/md5-cache/dev-rust/mio-uds-0.6.7
+++ b/metadata/md5-cache/dev-rust/mio-uds-0.6.7
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/iovec-0.1*:= =dev-rust/libc-0.2*:= =dev-rust/mio-0.6*:= =dev-rust/tempdir-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A library for integrating Unix Domain Sockets with mio
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/mio-uds
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.7/r0
 SRC_URI=https://crates.io/api/v1/crates/mio-uds/0.6.7/download -> mio-uds-0.6.7.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e18dc2fc4c55e84d4baa97998a35777f
diff --git a/metadata/md5-cache/dev-rust/mio-uds-0.6.8 b/metadata/md5-cache/dev-rust/mio-uds-0.6.8
new file mode 100644
index 0000000..1c6458f
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/mio-uds-0.6.8
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/iovec-0.1*:= >=dev-rust/libc-0.2.69:= <dev-rust/libc-0.3.0 >=dev-rust/mio-0.6.5:= <dev-rust/mio-0.7.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Unix domain socket bindings for mio
+EAPI=7
+HOMEPAGE=https://github.com/deprecrated/mio-uds
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/iovec-0.1*:= >=dev-rust/libc-0.2.69:= <dev-rust/libc-0.3.0 >=dev-rust/mio-0.6.5:= <dev-rust/mio-0.7.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.6.8/r0
+SRC_URI=https://crates.io/api/v1/crates/mio-uds/0.6.8/download -> mio-uds-0.6.8.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3593256a2d93cb28dee32ff18da8e353
diff --git a/metadata/md5-cache/dev-rust/miow-0.2.1 b/metadata/md5-cache/dev-rust/miow-0.2.1
index 8cc28e8..8015951 100644
--- a/metadata/md5-cache/dev-rust/miow-0.2.1
+++ b/metadata/md5-cache/dev-rust/miow-0.2.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/kernel32-sys-0.2*:= =dev-rust/net2-0.2*:= =dev-rust/winapi-0.2*:= =dev-rust/ws2_32-sys-0.2*:= =dev-rust/rand-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A zero overhead Windows I/O library focusing on IOCP and other async I/O features
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/miow
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.1/r0
 SRC_URI=https://crates.io/api/v1/crates/miow/0.2.1/download -> miow-0.2.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=78961d5cb26fb286cd9440e6e968e52e
diff --git a/metadata/md5-cache/dev-rust/native-tls-0.2.3 b/metadata/md5-cache/dev-rust/native-tls-0.2.3
index 3b7553b..4bda31e 100644
--- a/metadata/md5-cache/dev-rust/native-tls-0.2.3
+++ b/metadata/md5-cache/dev-rust/native-tls-0.2.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/lazy_static-1.0:= >=dev-rust/libc-0.2:= >=dev-rust/log-0.4.5:= >=dev-rust/openssl-0.10.15:= >=dev-rust/openssl-probe-0.1:= >=dev-rust/openssl-sys-0.9.30:= >=dev-rust/schannel-0.1.13:= >=dev-rust/security-framework-0.3.1:= >=dev-rust/security-framework-sys-0.3.1:= >=dev-rust/tempfile-3.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=An abstraction over platform-specific TLS implementations.
 EAPI=6
 HOMEPAGE=https://github.com/sfackler/rust-native-tls
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.3/r0
 SRC_URI=https://crates.io/api/v1/crates/native-tls/0.2.3/download -> native-tls-0.2.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=19c8e2915d3fcfd49a849331990d2a5a
diff --git a/metadata/md5-cache/dev-rust/net2-0.2.33 b/metadata/md5-cache/dev-rust/net2-0.2.33
index d02ab47..4cb7b98 100644
--- a/metadata/md5-cache/dev-rust/net2-0.2.33
+++ b/metadata/md5-cache/dev-rust/net2-0.2.33
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/cfg-if-0.1*:= =dev-rust/libc-0.2*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Extensions to the standard library's networking types, proposed in RFC 1158
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang-nursery/net2-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.33/r0
 SRC_URI=https://crates.io/api/v1/crates/net2/0.2.33/download -> net2-0.2.33.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=eb5f024986bfa02b842da812edd2905c
diff --git a/metadata/md5-cache/dev-rust/net2-0.2.37 b/metadata/md5-cache/dev-rust/net2-0.2.37
new file mode 100644
index 0000000..31117e0
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/net2-0.2.37
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/cfg-if-0.1*:= >=dev-rust/libc-0.2.54:= <dev-rust/libc-0.3.0 =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Extensions to the standard library's networking types as proposed in RFC 1158.
+EAPI=7
+HOMEPAGE=https://github.com/deprecrated/net2-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/cfg-if-0.1*:= >=dev-rust/libc-0.2.54:= <dev-rust/libc-0.3.0 =dev-rust/winapi-0.3*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.37/r0
+SRC_URI=https://crates.io/api/v1/crates/net2/0.2.37/download -> net2-0.2.37.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f9385dd59c322fdc1dc5b69f05f9f9fc
diff --git a/metadata/md5-cache/dev-rust/nix-0.19.0 b/metadata/md5-cache/dev-rust/nix-0.19.0
index 7419192..388fee9 100644
--- a/metadata/md5-cache/dev-rust/nix-0.19.0
+++ b/metadata/md5-cache/dev-rust/nix-0.19.0
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/bitflags-1.1.0:= <dev-rust/bitflags-2.0.0 =dev-rust/cfg-if-1*:= >=dev-rust/libc-0.2.78:= <dev-rust/libc-3.0.0 >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/bitflags-1.1.0:= <dev-rust/bitflags-2.0.0 >=dev-rust/cfg-if-0.1.10:= <dev-rust/cfg-if-0.2.0 >=dev-rust/libc-0.2.78:= <dev-rust/libc-3.0.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust friendly bindings to *nix APIs.
 EAPI=7
 HOMEPAGE=https://github.com/nix-rust/nix
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
+RDEPEND=>=dev-rust/bitflags-1.1.0:= <dev-rust/bitflags-2.0.0 >=dev-rust/cfg-if-0.1.10:= <dev-rust/cfg-if-0.2.0 >=dev-rust/libc-0.2.78:= <dev-rust/libc-3.0.0
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.19.0/r0
 SRC_URI=https://crates.io/api/v1/crates/nix/0.19.0/download -> nix-0.19.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ed56fe2d299d50030715ffe17e833722
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=deeeccd209ced1dcc8132b64c712eca4
diff --git a/metadata/md5-cache/dev-rust/nix-0.19.0-r1 b/metadata/md5-cache/dev-rust/nix-0.19.0-r1
new file mode 100644
index 0000000..963bd55
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/nix-0.19.0-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/bitflags-1.1.0:= <dev-rust/bitflags-2.0.0 >=dev-rust/cfg-if-0.1.10:= <dev-rust/cfg-if-0.2.0 >=dev-rust/libc-0.2.78:= <dev-rust/libc-3.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust friendly bindings to *nix APIs.
+EAPI=7
+HOMEPAGE=https://github.com/nix-rust/nix
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/bitflags-1.1.0:= <dev-rust/bitflags-2.0.0 >=dev-rust/cfg-if-0.1.10:= <dev-rust/cfg-if-0.2.0 >=dev-rust/libc-0.2.78:= <dev-rust/libc-3.0.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.19.0/r1
+SRC_URI=https://crates.io/api/v1/crates/nix/0.19.0/download -> nix-0.19.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=deeeccd209ced1dcc8132b64c712eca4
diff --git a/metadata/md5-cache/dev-rust/no-panic-0.1.0 b/metadata/md5-cache/dev-rust/no-panic-0.1.0
deleted file mode 100644
index acfe3ca..0000000
--- a/metadata/md5-cache/dev-rust/no-panic-0.1.0
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty no-panic crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.1.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a24171f2ba7b7f5d00b155293ff5debe
diff --git a/metadata/md5-cache/dev-rust/no-panic-0.1.10 b/metadata/md5-cache/dev-rust/no-panic-0.1.10
index 0916b11..440abb5 100644
--- a/metadata/md5-cache/dev-rust/no-panic-0.1.10
+++ b/metadata/md5-cache/dev-rust/no-panic-0.1.10
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-0.4*:= =dev-rust/quote-0.6*:= =dev-rust/syn-0.15*:= =dev-rust/tempfile-3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust attribute macro to require that the compiler prove a function can't ever panic.
 EAPI=6
 HOMEPAGE=https://github.com/dtolnay/no-panic
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.10/r0
 SRC_URI=https://crates.io/api/v1/crates/no-panic/0.1.10/download -> no-panic-0.1.10.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=1d34483184bb9f4a5d5ea9a00acbc7e3
diff --git a/metadata/md5-cache/dev-rust/nodrop-0.1.13 b/metadata/md5-cache/dev-rust/nodrop-0.1.13
index 34dbc66..a40bb13 100644
--- a/metadata/md5-cache/dev-rust/nodrop-0.1.13
+++ b/metadata/md5-cache/dev-rust/nodrop-0.1.13
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/nodrop-union-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A wrapper type to inhibit drop (destructor)
 EAPI=6
 HOMEPAGE=https://github.com/bluss/arrayvec
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.13/r0
 SRC_URI=https://crates.io/api/v1/crates/nodrop/0.1.13/download -> nodrop-0.1.13.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f5c7565a04faf35ccae24885d0a1c357
diff --git a/metadata/md5-cache/dev-rust/nodrop-union-0.1.10 b/metadata/md5-cache/dev-rust/nodrop-union-0.1.10
index aa6e0c0..a930f4b 100644
--- a/metadata/md5-cache/dev-rust/nodrop-union-0.1.10
+++ b/metadata/md5-cache/dev-rust/nodrop-union-0.1.10
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A wrapper type to inhibit drop (destructor)
 EAPI=6
 HOMEPAGE=https://github.com/bluss/arrayvec
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.10/r0
 SRC_URI=https://crates.io/api/v1/crates/nodrop-union/0.1.10/download -> nodrop-union-0.1.10.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=d10a1446898e31b59890b54476b178ad
diff --git a/metadata/md5-cache/dev-rust/nom-5.1.2 b/metadata/md5-cache/dev-rust/nom-5.1.2
index e588f87..2ec3314 100644
--- a/metadata/md5-cache/dev-rust/nom-5.1.2
+++ b/metadata/md5-cache/dev-rust/nom-5.1.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/lazy_static-1*:= >=dev-rust/lexical-core-0.6.0 <dev-rust/lexical-core-0.8.0 =dev-rust/memchr-2*:= =dev-rust/regex-1*:= =dev-rust/version_check-0.9*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A byte-oriented, zero-copy, parser combinators library
 EAPI=7
 HOMEPAGE=https://github.com/Geal/nom
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=5.1.2/r0
 SRC_URI=https://crates.io/api/v1/crates/nom/5.1.2/download -> nom-5.1.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f787e8ed426c04084bae787c38665110
diff --git a/metadata/md5-cache/dev-rust/num-integer-0.1.38 b/metadata/md5-cache/dev-rust/num-integer-0.1.38
index 7a84644..66af581 100644
--- a/metadata/md5-cache/dev-rust/num-integer-0.1.38
+++ b/metadata/md5-cache/dev-rust/num-integer-0.1.38
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/num-traits-0.2.4:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Integer trait and functions for Rust.
 EAPI=6
 HOMEPAGE=https://github.com/rust-num/num-integer
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.38/r0
 SRC_URI=https://crates.io/api/v1/crates/num-integer/0.1.38/download -> num-integer-0.1.38.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6627d63ba545f841f78d6c38f49048c6
diff --git a/metadata/md5-cache/dev-rust/num-iter-0.1.37 b/metadata/md5-cache/dev-rust/num-iter-0.1.37
index 13647b6..d8168d1 100644
--- a/metadata/md5-cache/dev-rust/num-iter-0.1.37
+++ b/metadata/md5-cache/dev-rust/num-iter-0.1.37
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty num-iter crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.37/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b459f025504105b3b301bb8096b60267
diff --git a/metadata/md5-cache/dev-rust/num-traits-0.2.12 b/metadata/md5-cache/dev-rust/num-traits-0.2.12
new file mode 100644
index 0000000..2030ab8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/num-traits-0.2.12
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Numeric traits for generic mathematics in Rust.
+EAPI=6
+HOMEPAGE=https://github.com/rust-num/num-traits
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.12/r0
+SRC_URI=https://crates.io/api/v1/crates/num-traits/0.2.12/download -> num-traits-0.2.12.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=a0faad407b9562ee8e18cfbab21dff7e
diff --git a/metadata/md5-cache/dev-rust/num-traits-0.2.4 b/metadata/md5-cache/dev-rust/num-traits-0.2.4
deleted file mode 100644
index 6179a6f..0000000
--- a/metadata/md5-cache/dev-rust/num-traits-0.2.4
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Numeric traits for generic mathematics in Rust.
-EAPI=6
-HOMEPAGE=https://github.com/rust-num/num-traits
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.2.4/r0
-SRC_URI=https://crates.io/api/v1/crates/num-traits/0.2.4/download -> num-traits-0.2.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a0faad407b9562ee8e18cfbab21dff7e
diff --git a/metadata/md5-cache/dev-rust/num_cpus-1.13.0 b/metadata/md5-cache/dev-rust/num_cpus-1.13.0
index 9c76b4f..7b42429 100644
--- a/metadata/md5-cache/dev-rust/num_cpus-1.13.0
+++ b/metadata/md5-cache/dev-rust/num_cpus-1.13.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/hermit-abi-0.1.3:= <dev-rust/hermit-abi-0.2.0 >=dev-rust/libc-0.2.26:= <dev-rust/libc-0.3.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Get the number of CPUs on a machine
 EAPI=7
 HOMEPAGE=https://github.com/seanmonstar/num_cpus
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.13.0/r0
 SRC_URI=https://crates.io/api/v1/crates/num_cpus/1.13.0/download -> num_cpus-1.13.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d7b8d3095847eea2d817faef7b429fe5
diff --git a/metadata/md5-cache/dev-rust/num_cpus-1.9.0 b/metadata/md5-cache/dev-rust/num_cpus-1.9.0
index 443dfc3..53e445f 100644
--- a/metadata/md5-cache/dev-rust/num_cpus-1.9.0
+++ b/metadata/md5-cache/dev-rust/num_cpus-1.9.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2.26:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Get the number of CPUs on a machine
 EAPI=6
 HOMEPAGE=https://github.com/seanmonstar/num_cpus
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.9.0/r0
 SRC_URI=https://crates.io/api/v1/crates/num_cpus/1.9.0/download -> num_cpus-1.9.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=224962b00facb57ee87a8dc81e32d7d4
diff --git a/metadata/md5-cache/dev-rust/num_enum-0.5.0 b/metadata/md5-cache/dev-rust/num_enum-0.5.0
deleted file mode 100644
index 5ad35b9..0000000
--- a/metadata/md5-cache/dev-rust/num_enum-0.5.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/derivative-2*:= =dev-rust/num_enum_derive-0.5*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Procedural macros to make inter-operation between primitives and enums easier.
-EAPI=7
-HOMEPAGE=https://github.com/illicitonion/num_enum
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.5.0/r0
-SRC_URI=https://crates.io/api/v1/crates/num_enum/0.5.0/download -> num_enum-0.5.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9eab14a0c68bbee3d56ce6351ac458a3
diff --git a/metadata/md5-cache/dev-rust/num_enum-0.5.1-r1 b/metadata/md5-cache/dev-rust/num_enum-0.5.1-r1
new file mode 100644
index 0000000..83a3cc7
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/num_enum-0.5.1-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/derivative-2*:= >=dev-rust/num_enum_derive-0.5.1:= <dev-rust/num_enum_derive-0.6.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Procedural macros to make inter-operation between primitives and enums easier.
+EAPI=7
+HOMEPAGE=https://github.com/illicitonion/num_enum
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD
+RDEPEND==dev-rust/derivative-2*:= >=dev-rust/num_enum_derive-0.5.1:= <dev-rust/num_enum_derive-0.6.0 !=dev-rust/num_enum-5*
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.5.1/r1
+SRC_URI=https://crates.io/api/v1/crates/num_enum/0.5.1/download -> num_enum-0.5.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5d2ac09d3c5b9bd893a23d8b139b5d77
diff --git a/metadata/md5-cache/dev-rust/num_enum_derive-0.5.0 b/metadata/md5-cache/dev-rust/num_enum_derive-0.5.0
deleted file mode 100644
index e501026..0000000
--- a/metadata/md5-cache/dev-rust/num_enum_derive-0.5.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/proc-macro-crate-0.1.4:= <dev-rust/proc-macro-crate-0.2 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Internal implementation details for ::num_enum (Procedural macros to make inter-operation between primitives and enums easier)
-EAPI=7
-HOMEPAGE=https://github.com/illicitonion/num_enum
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.5.0/r0
-SRC_URI=https://crates.io/api/v1/crates/num_enum_derive/0.5.0/download -> num_enum_derive-0.5.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=81df469908e9d23b1c17757f2fbafd78
diff --git a/metadata/md5-cache/dev-rust/num_enum_derive-0.5.1 b/metadata/md5-cache/dev-rust/num_enum_derive-0.5.1
new file mode 100644
index 0000000..fa45ad5
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/num_enum_derive-0.5.1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/proc-macro-crate-0.1.4:= <dev-rust/proc-macro-crate-0.2 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Internal implementation details for ::num_enum (Procedural macros to make inter-operation between primitives and enums easier)
+EAPI=7
+HOMEPAGE=https://github.com/illicitonion/num_enum
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD
+RDEPEND=>=dev-rust/proc-macro-crate-0.1.4:= <dev-rust/proc-macro-crate-0.2 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= !=dev-rust/num_enum_derive-5*
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.5.1/r0
+SRC_URI=https://crates.io/api/v1/crates/num_enum_derive/0.5.1/download -> num_enum_derive-0.5.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0086dbc5b7f2dc4f21584ed5bc669dfd
diff --git a/metadata/md5-cache/dev-rust/object-0.7.0 b/metadata/md5-cache/dev-rust/object-0.7.0
index a43ad4d..059211f 100644
--- a/metadata/md5-cache/dev-rust/object-0.7.0
+++ b/metadata/md5-cache/dev-rust/object-0.7.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty object crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/once_cell-1.7.2 b/metadata/md5-cache/dev-rust/once_cell-1.7.2
new file mode 100644
index 0000000..7835eb5
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/once_cell-1.7.2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Single assignment cells and lazy values.
+EAPI=7
+HOMEPAGE=https://github.com/matklad/once_cell
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.7.2/r0
+SRC_URI=https://crates.io/api/v1/crates/once_cell/1.7.2/download -> once_cell-1.7.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a94e56ea4acf82de157a2098b502504e
diff --git a/metadata/md5-cache/dev-rust/openssl-0.10.22 b/metadata/md5-cache/dev-rust/openssl-0.10.22
deleted file mode 100644
index 609dbfe..0000000
--- a/metadata/md5-cache/dev-rust/openssl-0.10.22
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty openssl crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.10.22/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/openssl-0.10.25 b/metadata/md5-cache/dev-rust/openssl-0.10.25
deleted file mode 100644
index c4352ad..0000000
--- a/metadata/md5-cache/dev-rust/openssl-0.10.25
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/bitflags-1.0:= >=dev-rust/cfg-if-0.1:= >=dev-rust/foreign-types-0.3.1:= >=dev-rust/lazy_static-1.0:= >=dev-rust/libc-0.2:= >=dev-rust/openssl-sys-0.9.50:= >=virtual/rust-1.39.0:=
-DESCRIPTION=OpenSSL bindings for the Rust programming language.
-EAPI=6
-HOMEPAGE=https://github.com/sfackler/rust-openssl
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=Apache-2.0
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.10.25/r0
-SRC_URI=https://crates.io/api/v1/crates/openssl/0.10.25/download -> openssl-0.10.25.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=21c3269f764c5746aa10eee90f0d014e
diff --git a/metadata/md5-cache/dev-rust/openssl-0.10.32 b/metadata/md5-cache/dev-rust/openssl-0.10.32
new file mode 100644
index 0000000..69ae818
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/openssl-0.10.32
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/bitflags-1*:= =dev-rust/cfg-if-1*:= >=dev-rust/foreign-types-0.3.1:= <dev-rust/foreign-types-0.4.0 =dev-rust/lazy_static-1*:= =dev-rust/libc-0.2*:= >=dev-rust/openssl-sys-0.9.60:= <dev-rust/openssl-sys-0.10.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=OpenSSL bindings for the Rust programming language.
+EAPI=7
+HOMEPAGE=https://github.com/sfackler/rust-openssl
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND==dev-rust/bitflags-1*:= =dev-rust/cfg-if-1*:= >=dev-rust/foreign-types-0.3.1:= <dev-rust/foreign-types-0.4.0 =dev-rust/lazy_static-1*:= =dev-rust/libc-0.2*:= >=dev-rust/openssl-sys-0.9.60:= <dev-rust/openssl-sys-0.10.0 !=dev-rust/openssl-0.10*
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.10.32/r0
+SRC_URI=https://crates.io/api/v1/crates/openssl/0.10.32/download -> openssl-0.10.32.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3c1e808483a4c9a32b3c9f5782ee77e7
diff --git a/metadata/md5-cache/dev-rust/openssl-0.10.32-r1 b/metadata/md5-cache/dev-rust/openssl-0.10.32-r1
new file mode 100644
index 0000000..0b60215
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/openssl-0.10.32-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/bitflags-1*:= =dev-rust/cfg-if-1*:= >=dev-rust/foreign-types-0.3.1:= <dev-rust/foreign-types-0.4.0 =dev-rust/lazy_static-1*:= =dev-rust/libc-0.2*:= >=dev-rust/openssl-sys-0.9.60:= <dev-rust/openssl-sys-0.10.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=OpenSSL bindings for the Rust programming language.
+EAPI=7
+HOMEPAGE=https://github.com/sfackler/rust-openssl
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND==dev-rust/bitflags-1*:= =dev-rust/cfg-if-1*:= >=dev-rust/foreign-types-0.3.1:= <dev-rust/foreign-types-0.4.0 =dev-rust/lazy_static-1*:= =dev-rust/libc-0.2*:= >=dev-rust/openssl-sys-0.9.60:= <dev-rust/openssl-sys-0.10.0 !=dev-rust/openssl-0.10*
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.10.32/r1
+SRC_URI=https://crates.io/api/v1/crates/openssl/0.10.32/download -> openssl-0.10.32.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3c1e808483a4c9a32b3c9f5782ee77e7
diff --git a/metadata/md5-cache/dev-rust/openssl-probe-0.1.2 b/metadata/md5-cache/dev-rust/openssl-probe-0.1.2
index 7a6fea7..b269be7 100644
--- a/metadata/md5-cache/dev-rust/openssl-probe-0.1.2
+++ b/metadata/md5-cache/dev-rust/openssl-probe-0.1.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Tool for helping to find SSL certificate locations on the system for OpenSSL
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/openssl-probe
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.2/r0
 SRC_URI=https://crates.io/api/v1/crates/openssl-probe/0.1.2/download -> openssl-probe-0.1.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=5dc9ec963925ec082a28a282f951e96f
diff --git a/metadata/md5-cache/dev-rust/openssl-src-111.0.1 b/metadata/md5-cache/dev-rust/openssl-src-111.0.1
index f0f1122..989cf62 100644
--- a/metadata/md5-cache/dev-rust/openssl-src-111.0.1
+++ b/metadata/md5-cache/dev-rust/openssl-src-111.0.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty openssl-src crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-libs/openssl:0= >=virtual/rust-1.39.0:=
+DESCRIPTION=Empty openssl-src crate that pulls in the openssl headers.
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=111.0.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=900161294f5dae3873a5d1e154c9a699
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2d89a49fb294a4eaf30d0448ce3a9cc8
diff --git a/metadata/md5-cache/dev-rust/openssl-src-111.0.1-r1 b/metadata/md5-cache/dev-rust/openssl-src-111.0.1-r1
new file mode 100644
index 0000000..3052a1e
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/openssl-src-111.0.1-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-libs/openssl:0= >=virtual/rust-1.39.0:=
+DESCRIPTION=Empty openssl-src crate that pulls in the openssl headers.
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=111.0.1/r1
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2d89a49fb294a4eaf30d0448ce3a9cc8
diff --git a/metadata/md5-cache/dev-rust/openssl-sys-0.9.47 b/metadata/md5-cache/dev-rust/openssl-sys-0.9.47
deleted file mode 100644
index cd71e8c..0000000
--- a/metadata/md5-cache/dev-rust/openssl-sys-0.9.47
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/autocfg-0.1.2:= >=dev-rust/cc-1.0:= >=dev-rust/libc-0.2:= >=dev-rust/pkg-config-0.3.9:= >=dev-rust/vcpkg-0.2:= >=dev-rust/openssl-src-111.0.1:= >=virtual/rust-1.39.0:=
-DESCRIPTION=OpenSSL bindings for the Rust programming language.
-EAPI=6
-HOMEPAGE=https://github.com/sfackler/rust-openssl
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=MIT
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.9.47/r0
-SRC_URI=https://crates.io/api/v1/crates/openssl-sys/0.9.47/download -> openssl-sys-0.9.47.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=8cdcb904a67f89112cb861c6c0006e58
diff --git a/metadata/md5-cache/dev-rust/openssl-sys-0.9.52 b/metadata/md5-cache/dev-rust/openssl-sys-0.9.52
deleted file mode 100644
index 60279ae..0000000
--- a/metadata/md5-cache/dev-rust/openssl-sys-0.9.52
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/autocfg-0.1.2:= >=dev-rust/cc-1.0:= >=dev-rust/libc-0.2:= >=dev-rust/pkg-config-0.3.9:= >=dev-rust/vcpkg-0.2:= >=dev-rust/openssl-src-111.0.1:= >=virtual/rust-1.39.0:=
-DESCRIPTION=OpenSSL bindings for the Rust programming language.
-EAPI=6
-HOMEPAGE=https://github.com/sfackler/rust-openssl
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=MIT
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.9.52/r0
-SRC_URI=https://crates.io/api/v1/crates/openssl-sys/0.9.52/download -> openssl-sys-0.9.52.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=8cdcb904a67f89112cb861c6c0006e58
diff --git a/metadata/md5-cache/dev-rust/openssl-sys-0.9.60 b/metadata/md5-cache/dev-rust/openssl-sys-0.9.60
new file mode 100644
index 0000000..cec288c
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/openssl-sys-0.9.60
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/autocfg-1*:= =dev-rust/cc-1*:= =dev-rust/libc-0.2*:= >=dev-rust/pkg-config-0.3.9:= <dev-rust/pkg-config-0.4 >=dev-rust/vcpkg-0.2.8:= <dev-rust/vcpkg-0.3 >=dev-rust/openssl-src-111.0.1:= <dev-rust/openssl-src-112 >=virtual/rust-1.39.0:=
+DESCRIPTION=OpenSSL bindings for the Rust programming language.
+EAPI=7
+HOMEPAGE=https://github.com/sfackler/rust-openssl
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/autocfg-1*:= =dev-rust/cc-1*:= =dev-rust/libc-0.2*:= >=dev-rust/pkg-config-0.3.9:= <dev-rust/pkg-config-0.4 >=dev-rust/vcpkg-0.2.8:= <dev-rust/vcpkg-0.3 >=dev-rust/openssl-src-111.0.1:= <dev-rust/openssl-src-112 !=dev-rust/openssl-sys-0.9*
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.9.60/r0
+SRC_URI=https://crates.io/api/v1/crates/openssl-sys/0.9.60/download -> openssl-sys-0.9.60.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d42888d0b134b83088863a1f2a56d677
diff --git a/metadata/md5-cache/dev-rust/openssl-sys-0.9.60-r1 b/metadata/md5-cache/dev-rust/openssl-sys-0.9.60-r1
new file mode 100644
index 0000000..5cfb015
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/openssl-sys-0.9.60-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/autocfg-1*:= =dev-rust/cc-1*:= =dev-rust/libc-0.2*:= >=dev-rust/pkg-config-0.3.9:= <dev-rust/pkg-config-0.4 >=dev-rust/vcpkg-0.2.8:= <dev-rust/vcpkg-0.3 >=dev-rust/openssl-src-111.0.1:= <dev-rust/openssl-src-112 >=virtual/rust-1.39.0:=
+DESCRIPTION=OpenSSL bindings for the Rust programming language.
+EAPI=7
+HOMEPAGE=https://github.com/sfackler/rust-openssl
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/autocfg-1*:= =dev-rust/cc-1*:= =dev-rust/libc-0.2*:= >=dev-rust/pkg-config-0.3.9:= <dev-rust/pkg-config-0.4 >=dev-rust/vcpkg-0.2.8:= <dev-rust/vcpkg-0.3 >=dev-rust/openssl-src-111.0.1:= <dev-rust/openssl-src-112 !=dev-rust/openssl-sys-0.9*
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.9.60/r1
+SRC_URI=https://crates.io/api/v1/crates/openssl-sys/0.9.60/download -> openssl-sys-0.9.60.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d42888d0b134b83088863a1f2a56d677
diff --git a/metadata/md5-cache/dev-rust/owning_ref-0.3.3 b/metadata/md5-cache/dev-rust/owning_ref-0.3.3
index caee986..0eb2d54 100644
--- a/metadata/md5-cache/dev-rust/owning_ref-0.3.3
+++ b/metadata/md5-cache/dev-rust/owning_ref-0.3.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/stable_deref_trait-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A library for creating references that carry their owner with them.
 EAPI=6
 HOMEPAGE=https://github.com/Kimundi/owning-ref-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.3/r0
 SRC_URI=https://crates.io/api/v1/crates/owning_ref/0.3.3/download -> owning_ref-0.3.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f5a7d0de4978f44d7d84a95bc0b72ccd
diff --git a/metadata/md5-cache/dev-rust/owning_ref-0.4.0 b/metadata/md5-cache/dev-rust/owning_ref-0.4.0
index 62fb977..e383f90 100644
--- a/metadata/md5-cache/dev-rust/owning_ref-0.4.0
+++ b/metadata/md5-cache/dev-rust/owning_ref-0.4.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/stable_deref_trait-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A library for creating references that carry their owner with them.
 EAPI=6
 HOMEPAGE=https://github.com/Kimundi/owning-ref-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.0/r0
 SRC_URI=https://crates.io/api/v1/crates/owning_ref/0.4.0/download -> owning_ref-0.4.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f5a7d0de4978f44d7d84a95bc0b72ccd
diff --git a/metadata/md5-cache/dev-rust/p9-0.1.0-r29 b/metadata/md5-cache/dev-rust/p9-0.1.0-r29
deleted file mode 100644
index e13a7be..0000000
--- a/metadata/md5-cache/dev-rust/p9-0.1.0-r29
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/libc:= dev-rust/libchromeos:= =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= fuzzer? ( dev-rust/cros_fuzz:= ) >=virtual/rust-1.39.0:=
-DESCRIPTION=Server implementation of the 9P file system protocol
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/p9/
-IUSE=fuzzer test fuzzer cros_host cros_workon_tree_e1ab1203219f6d23c8922cb65be50f7f30fff5f1 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!!<=dev-rust/p9-0.1.0-r14
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r29
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b8e563326333d0c50678bd5fd9712aac
diff --git a/metadata/md5-cache/dev-rust/p9-0.1.0-r34 b/metadata/md5-cache/dev-rust/p9-0.1.0-r34
new file mode 100644
index 0000000..7906e1f
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/p9-0.1.0-r34
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/libc:= =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= dev-rust/sys_util:= fuzzer? ( dev-rust/cros_fuzz:= ) >=virtual/rust-1.39.0:=
+DESCRIPTION=Server implementation of the 9P file system protocol
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/p9/
+IUSE=fuzzer test fuzzer cros_host cros_workon_tree_35c56057196d0db164eba11f0482eef6a7510d23 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-rust/libc:= =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= dev-rust/sys_util:= fuzzer? ( dev-rust/cros_fuzz:= ) !!<=dev-rust/p9-0.1.0-r14
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r34
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=08b1217bc3700035b9aefcaaf087e1f4
diff --git a/metadata/md5-cache/dev-rust/p9-9999 b/metadata/md5-cache/dev-rust/p9-9999
index 7d781df..82fb0e0 100644
--- a/metadata/md5-cache/dev-rust/p9-9999
+++ b/metadata/md5-cache/dev-rust/p9-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/libc:= dev-rust/libchromeos:= =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= fuzzer? ( dev-rust/cros_fuzz:= ) >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/libc:= =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= dev-rust/sys_util:= fuzzer? ( dev-rust/cros_fuzz:= ) >=virtual/rust-1.39.0:=
 DESCRIPTION=Server implementation of the 9P file system protocol
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/p9/
-IUSE=fuzzer test fuzzer cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=fuzzer test fuzzer cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=!!<=dev-rust/p9-0.1.0-r14
+RDEPEND=dev-rust/libc:= =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= dev-rust/sys_util:= fuzzer? ( dev-rust/cros_fuzz:= ) !!<=dev-rust/p9-0.1.0-r14
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8e459b80753433b37f162958f545d185
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=077e837fdf04af427c28ed425348fdd4
diff --git a/metadata/md5-cache/dev-rust/parking_lot-0.4.8 b/metadata/md5-cache/dev-rust/parking_lot-0.4.8
index 14542ec..c4f2f05 100644
--- a/metadata/md5-cache/dev-rust/parking_lot-0.4.8
+++ b/metadata/md5-cache/dev-rust/parking_lot-0.4.8
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/parking_lot_core-0.2*:= =dev-rust/owning_ref-0.3*:= =dev-rust/rand-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This library provides implementations of Mutex, RwLock, Condvar and Once that are smaller, faster and more flexible than those in the Rust standard library
 EAPI=6
 HOMEPAGE=https://github.com/Amanieu/parking_lot
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.8/r0
 SRC_URI=https://crates.io/api/v1/crates/parking_lot/0.4.8/download -> parking_lot-0.4.8.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=9e2b57db1ed32e88122130d0eee73cd0
diff --git a/metadata/md5-cache/dev-rust/parking_lot-0.7.1 b/metadata/md5-cache/dev-rust/parking_lot-0.7.1
index babf9c6..667cb10 100644
--- a/metadata/md5-cache/dev-rust/parking_lot-0.7.1
+++ b/metadata/md5-cache/dev-rust/parking_lot-0.7.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/lock_api-0.1*:= =dev-rust/parking_lot_core-0.4*:= =dev-rust/rand-0.6*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This library provides implementations of Mutex, RwLock, Condvar and Once that are smaller, faster and more flexible than those in the Rust standard library
 EAPI=6
 HOMEPAGE=https://github.com/Amanieu/parking_lot
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.1/r0
 SRC_URI=https://crates.io/api/v1/crates/parking_lot/0.7.1/download -> parking_lot-0.7.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=47218be234a3aee45b91d8af08284b52
diff --git a/metadata/md5-cache/dev-rust/parking_lot-0.9.0 b/metadata/md5-cache/dev-rust/parking_lot-0.9.0
new file mode 100644
index 0000000..740e1e8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/parking_lot-0.9.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/lock_api-0.3.1:= <dev-rust/lock_api-0.4.0 =dev-rust/parking_lot_core-0.6*:= =dev-rust/rustc_version-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=More compact and efficient implementations of the standard synchronization primitives.
+EAPI=7
+HOMEPAGE=https://crates.io/crates/parking_lot
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( Apache-2.0 MIT )
+RDEPEND=>=dev-rust/lock_api-0.3.1:= <dev-rust/lock_api-0.4.0 =dev-rust/parking_lot_core-0.6*:= =dev-rust/rustc_version-0.2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.9.0/r0
+SRC_URI=https://crates.io/api/v1/crates/parking_lot/0.9.0/download -> parking_lot-0.9.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=209834b26521f50cff1abf9cd911c0fc
diff --git a/metadata/md5-cache/dev-rust/parking_lot_core-0.2.14 b/metadata/md5-cache/dev-rust/parking_lot_core-0.2.14
index 36e8d6d..e137c5f 100644
--- a/metadata/md5-cache/dev-rust/parking_lot_core-0.2.14
+++ b/metadata/md5-cache/dev-rust/parking_lot_core-0.2.14
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/libc-0.2*:= =dev-rust/rand-0.4*:= =dev-rust/smallvec-0.6*:= =dev-rust/winapi-0.3*:= =dev-rust/backtrace-0.3*:= =dev-rust/petgraph-0.4*:= =dev-rust/thread-id-3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=An advanced API for creating custom synchronization primitives
 EAPI=6
 HOMEPAGE=https://github.com/Amanieu/parking_lot
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.14/r0
 SRC_URI=https://crates.io/api/v1/crates/parking_lot_core/0.2.14/download -> parking_lot_core-0.2.14.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=9cf15821da22079f260243f9df8ecea9
diff --git a/metadata/md5-cache/dev-rust/parking_lot_core-0.4.0 b/metadata/md5-cache/dev-rust/parking_lot_core-0.4.0
index 198a9e7..dcaa027 100644
--- a/metadata/md5-cache/dev-rust/parking_lot_core-0.4.0
+++ b/metadata/md5-cache/dev-rust/parking_lot_core-0.4.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/libc-0.2*:= =dev-rust/rand-0.6*:= =dev-rust/rustc_version-0.2*:= =dev-rust/smallvec-0.6*:= =dev-rust/winapi-0.3*:= =dev-rust/backtrace-0.3*:= =dev-rust/petgraph-0.4*:= =dev-rust/thread-id-3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=An advanced API for creating custom synchronization primitives
 EAPI=6
 HOMEPAGE=https://github.com/Amanieu/parking_lot
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.0/r0
 SRC_URI=https://crates.io/api/v1/crates/parking_lot_core/0.4.0/download -> parking_lot_core-0.4.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=5a631ab0601fac654a40586c64adaa29
diff --git a/metadata/md5-cache/dev-rust/parking_lot_core-0.6.2 b/metadata/md5-cache/dev-rust/parking_lot_core-0.6.2
new file mode 100644
index 0000000..ee5978d
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/parking_lot_core-0.6.2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/backtrace-0.3.2:= <dev-rust/backtrace-0.4.0 >=dev-rust/cfg-if-0.1.5:= <dev-rust/cfg-if-0.2.0 >=dev-rust/petgraph-0.4.5:= <dev-rust/petgraph-0.5.0 =dev-rust/smallvec-0.6*:= >=dev-rust/thread-id-3.2.0:= <dev-rust/thread-id-4.0.0 =dev-rust/rustc_version-0.2*:= >=dev-rust/libc-0.2.55:= <dev-rust/libc-0.3.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=An advanced API for creating custom synchronization primitives.
+EAPI=7
+HOMEPAGE=https://crates.io/crates/parking_lot_core
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( Apache-2.0 MIT )
+RDEPEND=>=dev-rust/backtrace-0.3.2:= <dev-rust/backtrace-0.4.0 >=dev-rust/cfg-if-0.1.5:= <dev-rust/cfg-if-0.2.0 >=dev-rust/petgraph-0.4.5:= <dev-rust/petgraph-0.5.0 =dev-rust/smallvec-0.6*:= >=dev-rust/thread-id-3.2.0:= <dev-rust/thread-id-4.0.0 =dev-rust/rustc_version-0.2*:= >=dev-rust/libc-0.2.55:= <dev-rust/libc-0.3.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.6.2/r0
+SRC_URI=https://crates.io/api/v1/crates/parking_lot_core/0.6.2/download -> parking_lot_core-0.6.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=df2b829a358e2205c41c6e7b493d2bd3
diff --git a/metadata/md5-cache/dev-rust/paste-1.0.2 b/metadata/md5-cache/dev-rust/paste-1.0.2
index d870d8a..7effa5c 100644
--- a/metadata/md5-cache/dev-rust/paste-1.0.2
+++ b/metadata/md5-cache/dev-rust/paste-1.0.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Macros for all your token pasting needs
 EAPI=6
 HOMEPAGE=https://github.com/dtolnay/paste
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.2/r0
 SRC_URI=https://crates.io/api/v1/crates/paste/1.0.2/download -> paste-1.0.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e37201c6da9b5e2a2c929659789ffb7a
diff --git a/metadata/md5-cache/dev-rust/paw-1.0.0 b/metadata/md5-cache/dev-rust/paw-1.0.0
index 79c417d..b35719b5 100644
--- a/metadata/md5-cache/dev-rust/paw-1.0.0
+++ b/metadata/md5-cache/dev-rust/paw-1.0.0
@@ -1,12 +1,12 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty paw crate
 EAPI=7
 HOMEPAGE=https://github.com/rust-cli/paw
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=00f19a425c17ea89833361a9d1c6acef
diff --git a/metadata/md5-cache/dev-rust/peeking_take_while-0.1.2 b/metadata/md5-cache/dev-rust/peeking_take_while-0.1.2
index d1b6410..08b4143 100644
--- a/metadata/md5-cache/dev-rust/peeking_take_while-0.1.2
+++ b/metadata/md5-cache/dev-rust/peeking_take_while-0.1.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Like Iterator::take_while, but calls the predicate on a peeked value.
 EAPI=7
 HOMEPAGE=https://github.com/fitzgen/peeking_take_while
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.2/r0
 SRC_URI=https://crates.io/api/v1/crates/peeking_take_while/0.1.2/download -> peeking_take_while-0.1.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=56ab87518e732df7743c23b1c72bda2f
diff --git a/metadata/md5-cache/dev-rust/percent-encoding-1.0.1 b/metadata/md5-cache/dev-rust/percent-encoding-1.0.1
index 69a5482..1b8fe7f 100644
--- a/metadata/md5-cache/dev-rust/percent-encoding-1.0.1
+++ b/metadata/md5-cache/dev-rust/percent-encoding-1.0.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Percent encoding and decoding
 EAPI=6
 HOMEPAGE=https://github.com/servo/rust-url/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.1/r0
 SRC_URI=https://crates.io/api/v1/crates/percent-encoding/1.0.1/download -> percent-encoding-1.0.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=214b88bd705c706a0f78ce4e2cf12b8a
diff --git a/metadata/md5-cache/dev-rust/petgraph-0.4.13 b/metadata/md5-cache/dev-rust/petgraph-0.4.13
index eb8ff61..c607117 100644
--- a/metadata/md5-cache/dev-rust/petgraph-0.4.13
+++ b/metadata/md5-cache/dev-rust/petgraph-0.4.13
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty petgraph crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.13/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/petgraph-0.4.5 b/metadata/md5-cache/dev-rust/petgraph-0.4.5
new file mode 100644
index 0000000..7602f12
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/petgraph-0.4.5
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Empty crate
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.5/r0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2bde60a80008a5717cc088362983971e
diff --git a/metadata/md5-cache/dev-rust/pin-project-lite-0.2.4 b/metadata/md5-cache/dev-rust/pin-project-lite-0.2.4
new file mode 100644
index 0000000..8d93b1e
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/pin-project-lite-0.2.4
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=A lightweight version of pin-project written with declarative macros.
+EAPI=7
+HOMEPAGE=https://github.com/taiki-e/pin-project-lite
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.4/r0
+SRC_URI=https://crates.io/api/v1/crates/pin-project-lite/0.2.4/download -> pin-project-lite-0.2.4.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3ece97e6074d9672eba62326a8a6ba4d
diff --git a/metadata/md5-cache/dev-rust/pin-utils-0.1.0 b/metadata/md5-cache/dev-rust/pin-utils-0.1.0
new file mode 100644
index 0000000..f03fa41
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/pin-utils-0.1.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Utilities for pinning
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang-nursery/pin-utils
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=!~dev-rust/pin-utils-0.1.0_alpha4
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.0/r0
+SRC_URI=https://crates.io/api/v1/crates/pin-utils/0.1.0/download -> pin-utils-0.1.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=33aa0e5c710f5a66a324b20adf37ff64
diff --git a/metadata/md5-cache/dev-rust/pin-utils-0.1.0_alpha4 b/metadata/md5-cache/dev-rust/pin-utils-0.1.0_alpha4
deleted file mode 100644
index dc7df35..0000000
--- a/metadata/md5-cache/dev-rust/pin-utils-0.1.0_alpha4
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Utilities for pinning
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang-nursery/pin-utils
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.1.0_alpha4/r0
-SRC_URI=https://crates.io/api/v1/crates/pin-utils/pin-utils-0.1.0-alpha.4/download -> pin-utils-0.1.0-alpha.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=4cc59a4086074b1fbd38522ca21881f7
diff --git a/metadata/md5-cache/dev-rust/pkg-config-0.3.11-r2 b/metadata/md5-cache/dev-rust/pkg-config-0.3.11-r2
index 1313449..b20d38d 100644
--- a/metadata/md5-cache/dev-rust/pkg-config-0.3.11-r2
+++ b/metadata/md5-cache/dev-rust/pkg-config-0.3.11-r2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/lazy_static-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A library to run the pkg-config system tool at build time in order to be used in Cargo build scripts
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/pkg-config-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.11/r2
 SRC_URI=https://crates.io/api/v1/crates/pkg-config/0.3.11/download -> pkg-config-0.3.11.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=2c4f48112c1961eb2089f372e114eae7
diff --git a/metadata/md5-cache/dev-rust/ppv-lite86-0.2.10 b/metadata/md5-cache/dev-rust/ppv-lite86-0.2.10
index 3c3b75a..8186ed1 100644
--- a/metadata/md5-cache/dev-rust/ppv-lite86-0.2.10
+++ b/metadata/md5-cache/dev-rust/ppv-lite86-0.2.10
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Implementation of the crypto-simd API for x86
 EAPI=7
 HOMEPAGE=https://github.com/cryptocorrosion/cryptocorrosion
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.10/r0
 SRC_URI=https://crates.io/api/v1/crates/ppv-lite86/0.2.10/download -> ppv-lite86-0.2.10.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=c3ff0823dd75ffb741035e70b8573286
diff --git a/metadata/md5-cache/dev-rust/proc-macro-crate-0.1.5 b/metadata/md5-cache/dev-rust/proc-macro-crate-0.1.5
index 25fc86b..c436b68 100644
--- a/metadata/md5-cache/dev-rust/proc-macro-crate-0.1.5
+++ b/metadata/md5-cache/dev-rust/proc-macro-crate-0.1.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/toml-0.5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Replacement for crate (macro_rules keyword) in proc-macros.
 EAPI=7
 HOMEPAGE=https://github.com/bkchr/proc-macro-crate
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.5/r0
 SRC_URI=https://crates.io/api/v1/crates/proc-macro-crate/0.1.5/download -> proc-macro-crate-0.1.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=7f24e5c241b5192874591a943def6571
diff --git a/metadata/md5-cache/dev-rust/proc-macro-error-1.0.4 b/metadata/md5-cache/dev-rust/proc-macro-error-1.0.4
index 83e58d5..0588098 100644
--- a/metadata/md5-cache/dev-rust/proc-macro-error-1.0.4
+++ b/metadata/md5-cache/dev-rust/proc-macro-error-1.0.4
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-1*:= ~dev-rust/proc-macro-error-attr-1.0.4:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= =dev-rust/version_check-0.9*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate aims to make error reporting in proc-macros simple and easy to use
 EAPI=7
 HOMEPAGE=https://gitlab.com/CreepySkeleton/proc-macro-error
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.4/r0
 SRC_URI=https://crates.io/api/v1/crates/proc-macro-error/1.0.4/download -> proc-macro-error-1.0.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=354f5de20c6fd2b479c949e4204d4442
diff --git a/metadata/md5-cache/dev-rust/proc-macro-error-attr-1.0.4 b/metadata/md5-cache/dev-rust/proc-macro-error-attr-1.0.4
index 65a8166..1358e49 100644
--- a/metadata/md5-cache/dev-rust/proc-macro-error-attr-1.0.4
+++ b/metadata/md5-cache/dev-rust/proc-macro-error-attr-1.0.4
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/version_check-0.9*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Attribute macro for proc-macro-error crate
 EAPI=7
 HOMEPAGE=https://gitlab.com/CreepySkeleton/proc-macro-error
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.4/r0
 SRC_URI=https://crates.io/api/v1/crates/proc-macro-error-attr/1.0.4/download -> proc-macro-error-attr-1.0.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=02a1d14b5e7668c035aca3e63ad7b53b
diff --git a/metadata/md5-cache/dev-rust/proc-macro-hack-0.5.11 b/metadata/md5-cache/dev-rust/proc-macro-hack-0.5.11
deleted file mode 100644
index cb341b4..0000000
--- a/metadata/md5-cache/dev-rust/proc-macro-hack-0.5.11
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= >=dev-rust/syn-1.0.5:= <dev-rust/syn-2 >=virtual/rust-1.39.0:=
-DESCRIPTION=Procedural macros in expression position
-EAPI=6
-HOMEPAGE=https://github.com/dtolnay/proc-macro-hack
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.5.11/r0
-SRC_URI=https://crates.io/api/v1/crates/proc-macro-hack/0.5.11/download -> proc-macro-hack-0.5.11.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c8272d83e9ad0d704e531a888525d2e6
diff --git a/metadata/md5-cache/dev-rust/proc-macro-hack-0.5.19 b/metadata/md5-cache/dev-rust/proc-macro-hack-0.5.19
new file mode 100644
index 0000000..4c63219
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/proc-macro-hack-0.5.19
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Procedural macros in expression position
+EAPI=7
+HOMEPAGE=https://github.com/dtolnay/proc-macro-hack
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=!~dev-rust/proc-macro-hack-0.5.11
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.5.19/r0
+SRC_URI=https://crates.io/api/v1/crates/proc-macro-hack/0.5.19/download -> proc-macro-hack-0.5.19.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=001b26e38000fdeb7ad550c9a9b4f513
diff --git a/metadata/md5-cache/dev-rust/proc-macro-nested-0.1.3 b/metadata/md5-cache/dev-rust/proc-macro-nested-0.1.3
index 53df0a3..1ef7bf3 100644
--- a/metadata/md5-cache/dev-rust/proc-macro-nested-0.1.3
+++ b/metadata/md5-cache/dev-rust/proc-macro-nested-0.1.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Support for nested proc-macro-hack invocations
 EAPI=6
 HOMEPAGE=https://github.com/dtolnay/proc-macro-hack
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.3/r0
 SRC_URI=https://crates.io/api/v1/crates/proc-macro-nested/0.1.3/download -> proc-macro-nested-0.1.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=38bd84c1b11f7b578f41008d5407c0da
diff --git a/metadata/md5-cache/dev-rust/proc-macro2-0.4.21 b/metadata/md5-cache/dev-rust/proc-macro2-0.4.21
index 9696238..59420ce 100644
--- a/metadata/md5-cache/dev-rust/proc-macro2-0.4.21
+++ b/metadata/md5-cache/dev-rust/proc-macro2-0.4.21
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/unicode-xid-0.1:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Stable implemntation of the upcoming 'proc_macro' API
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/proc-macro2
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.21/r0
 SRC_URI=https://crates.io/api/v1/crates/proc-macro2/0.4.21/download -> proc-macro2-0.4.21.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e1e3eef5f89119558c2d40f4d98832f0
diff --git a/metadata/md5-cache/dev-rust/proc-macro2-1.0.19 b/metadata/md5-cache/dev-rust/proc-macro2-1.0.19
deleted file mode 100644
index 3620419..0000000
--- a/metadata/md5-cache/dev-rust/proc-macro2-1.0.19
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/unicode-xid-0.2*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Stable implemntation of the upcoming 'proc_macro' API
-EAPI=7
-HOMEPAGE=https://github.com/alexcrichton/proc-macro2
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.19/r0
-SRC_URI=https://crates.io/api/v1/crates/proc-macro2/1.0.19/download -> proc-macro2-1.0.19.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c928dbce7c62ffe4c2b70b394ef6d4cd
diff --git a/metadata/md5-cache/dev-rust/proc-macro2-1.0.24 b/metadata/md5-cache/dev-rust/proc-macro2-1.0.24
new file mode 100644
index 0000000..bd4a27d
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/proc-macro2-1.0.24
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/unicode-xid-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Stable implementation of the upcoming 'proc_macro' API
+EAPI=7
+HOMEPAGE=https://github.com/alexcrichton/proc-macro2
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.24/r0
+SRC_URI=https://crates.io/api/v1/crates/proc-macro2/1.0.24/download -> proc-macro2-1.0.24.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=704fb69e2d8144d5b616c558f6aad0ec
diff --git a/metadata/md5-cache/dev-rust/proc-macro2-1.0.26 b/metadata/md5-cache/dev-rust/proc-macro2-1.0.26
new file mode 100644
index 0000000..6d06df0
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/proc-macro2-1.0.26
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/unicode-xid-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Stable implementation of the upcoming 'proc_macro' API
+EAPI=7
+HOMEPAGE=https://github.com/alexcrichton/proc-macro2
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.26/r0
+SRC_URI=https://crates.io/api/v1/crates/proc-macro2/1.0.26/download -> proc-macro2-1.0.26.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b560c73f799e3652ad0a9497f0661b35
diff --git a/metadata/md5-cache/dev-rust/proc-macro2-1.0.26-r1 b/metadata/md5-cache/dev-rust/proc-macro2-1.0.26-r1
new file mode 100644
index 0000000..7471b04
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/proc-macro2-1.0.26-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/unicode-xid-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Stable implementation of the upcoming 'proc_macro' API
+EAPI=7
+HOMEPAGE=https://github.com/alexcrichton/proc-macro2
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/unicode-xid-0.2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.26/r1
+SRC_URI=https://crates.io/api/v1/crates/proc-macro2/1.0.26/download -> proc-macro2-1.0.26.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=476274a85dd2cee7f18a3b6dc36bc292
diff --git a/metadata/md5-cache/dev-rust/protobuf-2.16.2 b/metadata/md5-cache/dev-rust/protobuf-2.16.2
index ae1eac5..f8b3c47 100644
--- a/metadata/md5-cache/dev-rust/protobuf-2.16.2
+++ b/metadata/md5-cache/dev-rust/protobuf-2.16.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bytes-0.5*:= =dev-rust/serde-1*:= =dev-rust/serde_derive-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust implementation of Google protocol buffers
 EAPI=7
 HOMEPAGE=https://github.com/stepancheg/rust-protobuf/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.16.2/r0
 SRC_URI=https://crates.io/api/v1/crates/protobuf/2.16.2/download -> protobuf-2.16.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ce36163e820e9be114e6687050cb8a32
diff --git a/metadata/md5-cache/dev-rust/protobuf-2.24.1 b/metadata/md5-cache/dev-rust/protobuf-2.24.1
new file mode 100644
index 0000000..9e5c9e59
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/protobuf-2.24.1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/bytes-0.5*:= =dev-rust/serde-1*:= =dev-rust/serde_derive-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust implementation of Google protocol buffers
+EAPI=7
+HOMEPAGE=https://github.com/stepancheg/rust-protobuf/
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/bytes-0.5*:= =dev-rust/serde-1*:= =dev-rust/serde_derive-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=2.24.1/r0
+SRC_URI=https://crates.io/api/v1/crates/protobuf/2.24.1/download -> protobuf-2.24.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=60cd46391fc5fffbf25c14dced378569
diff --git a/metadata/md5-cache/dev-rust/protobuf-codegen-2.16.2 b/metadata/md5-cache/dev-rust/protobuf-codegen-2.16.2
index 20fc76c..910506f 100644
--- a/metadata/md5-cache/dev-rust/protobuf-codegen-2.16.2
+++ b/metadata/md5-cache/dev-rust/protobuf-codegen-2.16.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/protobuf-2.16.2:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Protobuf code generator and a protoc-gen-rust protoc plugin
 EAPI=7
 HOMEPAGE=https://github.com/stepancheg/rust-protobuf/protobuf-codegen
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/2.16.2
 SRC_URI=https://crates.io/api/v1/crates/protobuf-codegen/2.16.2/download -> protobuf-codegen-2.16.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=5fc6eb40ddc258c40ba9e9332f6547c7
diff --git a/metadata/md5-cache/dev-rust/protobuf-codegen-2.24.1 b/metadata/md5-cache/dev-rust/protobuf-codegen-2.24.1
new file mode 100644
index 0000000..daa8df2
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/protobuf-codegen-2.24.1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=~dev-rust/protobuf-2.24.1:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Protobuf code generator and a protoc-gen-rust protoc plugin
+EAPI=7
+HOMEPAGE=https://github.com/stepancheg/rust-protobuf/protobuf-codegen
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=~dev-rust/protobuf-2.24.1:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/2.24.1
+SRC_URI=https://crates.io/api/v1/crates/protobuf-codegen/2.24.1/download -> protobuf-codegen-2.24.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=53e04d34ff0791a0c2b3ec00f0632633
diff --git a/metadata/md5-cache/dev-rust/protoc-2.16.2 b/metadata/md5-cache/dev-rust/protoc-2.16.2
index c361d4c..305ed81 100644
--- a/metadata/md5-cache/dev-rust/protoc-2.16.2
+++ b/metadata/md5-cache/dev-rust/protoc-2.16.2
@@ -1,14 +1,14 @@
 BDEPEND=dev-libs/protobuf
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/log-0*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Protobuf protoc command as API
 EAPI=7
 HOMEPAGE=https://github.com/stepancheg/rust-protobuf/protoc/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.16.2/r0
 SRC_URI=https://crates.io/api/v1/crates/protoc/2.16.2/download -> protoc-2.16.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=b27e5b44f309365eb4e7e0dfb005eb3c
diff --git a/metadata/md5-cache/dev-rust/protoc-2.24.1 b/metadata/md5-cache/dev-rust/protoc-2.24.1
new file mode 100644
index 0000000..fe7dde1
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/protoc-2.24.1
@@ -0,0 +1,14 @@
+BDEPEND=dev-libs/protobuf
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/log-0*:= =dev-rust/which-4*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Protobuf protoc command as API
+EAPI=7
+HOMEPAGE=https://github.com/stepancheg/rust-protobuf/protoc/
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=2.24.1/r0
+SRC_URI=https://crates.io/api/v1/crates/protoc/2.24.1/download -> protoc-2.24.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ca90c97b33af3f72a7bf29f6ae3daff8
diff --git a/metadata/md5-cache/dev-rust/protoc-rust-2.16.2 b/metadata/md5-cache/dev-rust/protoc-rust-2.16.2
index 10ace19..b0fa2cc 100644
--- a/metadata/md5-cache/dev-rust/protoc-rust-2.16.2
+++ b/metadata/md5-cache/dev-rust/protoc-rust-2.16.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/protobuf-2.16.2:= ~dev-rust/protobuf-codegen-2.16.2:= ~dev-rust/protoc-2.16.2:= =dev-rust/tempfile-3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=protoc --rust_out=... available as API.
 EAPI=7
 HOMEPAGE=https://github.com/stepancheg/rust-protobuf/protoc-rust/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/2.16.2
 SRC_URI=https://crates.io/api/v1/crates/protoc-rust/2.16.2/download -> protoc-rust-2.16.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=4c473cf8ed09e65216463aa22bad059d
diff --git a/metadata/md5-cache/dev-rust/protoc-rust-2.24.1 b/metadata/md5-cache/dev-rust/protoc-rust-2.24.1
new file mode 100644
index 0000000..d8d4fa8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/protoc-rust-2.24.1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=~dev-rust/protobuf-2.24.1:= ~dev-rust/protobuf-codegen-2.24.1:= ~dev-rust/protoc-2.24.1:= =dev-rust/tempfile-3*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=protoc --rust_out=... available as API.
+EAPI=7
+HOMEPAGE=https://github.com/stepancheg/rust-protobuf/protoc-rust/
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=~dev-rust/protobuf-2.24.1:= ~dev-rust/protobuf-codegen-2.24.1:= ~dev-rust/protoc-2.24.1:= =dev-rust/tempfile-3*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/2.24.1
+SRC_URI=https://crates.io/api/v1/crates/protoc-rust/2.24.1/download -> protoc-rust-2.24.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6e3d8ce688e01032165ee3a7830e6a03
diff --git a/metadata/md5-cache/dev-rust/quick-error-1.2.1 b/metadata/md5-cache/dev-rust/quick-error-1.2.1
index 08229728..7396c06 100644
--- a/metadata/md5-cache/dev-rust/quick-error-1.2.1
+++ b/metadata/md5-cache/dev-rust/quick-error-1.2.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A macro which makes error types pleasant to write.
 EAPI=6
 HOMEPAGE=http://github.com/tailhook/quick-error
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.2.1/r0
 SRC_URI=https://crates.io/api/v1/crates/quick-error/1.2.1/download -> quick-error-1.2.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=54fca8389b6f482052cf4e7ff4951365
diff --git a/metadata/md5-cache/dev-rust/quickcheck-0.4.2 b/metadata/md5-cache/dev-rust/quickcheck-0.4.2
index 7894491..ae2e6b5a 100644
--- a/metadata/md5-cache/dev-rust/quickcheck-0.4.2
+++ b/metadata/md5-cache/dev-rust/quickcheck-0.4.2
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty quickcheck crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Unlicense )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.2/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=9321147df1848c51f3451667c55cf85d
diff --git a/metadata/md5-cache/dev-rust/quickcheck-0.6.2 b/metadata/md5-cache/dev-rust/quickcheck-0.6.2
index f123cdb..d418804 100644
--- a/metadata/md5-cache/dev-rust/quickcheck-0.6.2
+++ b/metadata/md5-cache/dev-rust/quickcheck-0.6.2
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty quickcheck crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Unlicense )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.2/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=7b9619320573e8d34437d07ff1296f9a
diff --git a/metadata/md5-cache/dev-rust/quickcheck-0.8.2 b/metadata/md5-cache/dev-rust/quickcheck-0.8.2
index 391f331..d8b063a 100644
--- a/metadata/md5-cache/dev-rust/quickcheck-0.8.2
+++ b/metadata/md5-cache/dev-rust/quickcheck-0.8.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/rand-0.6.5:= =dev-rust/rand_core-0.4*:= =dev-rust/env_logger-0.6*:= =dev-rust/log-0.4*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=QuickCheck is a way to do property based testing using randomly generated input
 EAPI=6
 HOMEPAGE=https://github.com/BurntSushi/quickcheck
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Unlicense )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.2/r0
 SRC_URI=https://crates.io/api/v1/crates/quickcheck/0.8.2/download -> quickcheck-0.8.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fcb8c4008a193740ee8e6f7311bf60cc
diff --git a/metadata/md5-cache/dev-rust/quote-0.6.10 b/metadata/md5-cache/dev-rust/quote-0.6.10
index 907fdb6..460f0cd 100644
--- a/metadata/md5-cache/dev-rust/quote-0.6.10
+++ b/metadata/md5-cache/dev-rust/quote-0.6.10
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/proc-macro2-0.4.21:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Quasi-quoting macro quote!(...)
 EAPI=6
 HOMEPAGE=https://github.com/dtolnay/quote
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.10/r0
 SRC_URI=https://crates.io/api/v1/crates/quote/0.6.10/download -> quote-0.6.10.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3dee3a77039946501509f7f7a124b0c7
diff --git a/metadata/md5-cache/dev-rust/quote-1.0.2 b/metadata/md5-cache/dev-rust/quote-1.0.2
deleted file mode 100644
index 53aa93a..0000000
--- a/metadata/md5-cache/dev-rust/quote-1.0.2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/proc-macro2-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Quasi-quoting macro quote!(...)
-EAPI=6
-HOMEPAGE=https://github.com/dtolnay/quote
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.2/r0
-SRC_URI=https://crates.io/api/v1/crates/quote/1.0.2/download -> quote-1.0.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=aa67189dd307244bb8cf0bb496432772
diff --git a/metadata/md5-cache/dev-rust/quote-1.0.9 b/metadata/md5-cache/dev-rust/quote-1.0.9
new file mode 100644
index 0000000..cd023e8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/quote-1.0.9
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/proc-macro2-1.0.20:= <dev-rust/proc-macro2-2.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Quasi-quoting macro quote!(...)
+EAPI=7
+HOMEPAGE=https://crates.io/crates/quote
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/proc-macro2-1.0.20:= <dev-rust/proc-macro2-2.0.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.9/r0
+SRC_URI=https://crates.io/api/v1/crates/quote/1.0.9/download -> quote-1.0.9.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3e2af1f029e3a26afa5a99b953f81208
diff --git a/metadata/md5-cache/dev-rust/rand-0.3.20 b/metadata/md5-cache/dev-rust/rand-0.3.20
index aea6b20..462524f 100644
--- a/metadata/md5-cache/dev-rust/rand-0.3.20
+++ b/metadata/md5-cache/dev-rust/rand-0.3.20
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty rand crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.20/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6a6f95690def37edad390c266623a6bc
diff --git a/metadata/md5-cache/dev-rust/rand-0.4.2 b/metadata/md5-cache/dev-rust/rand-0.4.2
index c50b687..110b717 100644
--- a/metadata/md5-cache/dev-rust/rand-0.4.2
+++ b/metadata/md5-cache/dev-rust/rand-0.4.2
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/fuchsia-zircon-0.3.2:= >=dev-rust/winapi-0.3.0:= >=dev-rust/libc-0.2.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust library for random number generation.
 EAPI=6
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/fuchsia-zircon-0.3.2:= >=dev-rust/winapi-0.3.0:= >=dev-rust/libc-0.2.0:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.2/r0
 SRC_URI=https://crates.io/api/v1/crates/rand/0.4.2/download -> rand-0.4.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=dfadb403bbd9a94139f79895e97bc5df
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=fce99cd237ab9d166555a20fad667a36
diff --git a/metadata/md5-cache/dev-rust/rand-0.4.2-r1 b/metadata/md5-cache/dev-rust/rand-0.4.2-r1
new file mode 100644
index 0000000..93ec615
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rand-0.4.2-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/fuchsia-zircon-0.3.2:= >=dev-rust/winapi-0.3.0:= >=dev-rust/libc-0.2.0:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A Rust library for random number generation.
+EAPI=6
+HOMEPAGE=https://github.com/rust-random/rand
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/fuchsia-zircon-0.3.2:= >=dev-rust/winapi-0.3.0:= >=dev-rust/libc-0.2.0:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.2/r1
+SRC_URI=https://crates.io/api/v1/crates/rand/0.4.2/download -> rand-0.4.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=fce99cd237ab9d166555a20fad667a36
diff --git a/metadata/md5-cache/dev-rust/rand-0.5.6 b/metadata/md5-cache/dev-rust/rand-0.5.6
index 385a843..e66584d 100644
--- a/metadata/md5-cache/dev-rust/rand-0.5.6
+++ b/metadata/md5-cache/dev-rust/rand-0.5.6
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty rand crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.6/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a24171f2ba7b7f5d00b155293ff5debe
diff --git a/metadata/md5-cache/dev-rust/rand-0.6.5 b/metadata/md5-cache/dev-rust/rand-0.6.5
index a61a728..b1f944c 100644
--- a/metadata/md5-cache/dev-rust/rand-0.6.5
+++ b/metadata/md5-cache/dev-rust/rand-0.6.5
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/autocfg-0.1*:= >=dev-rust/average-0.9.2:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_chacha-0.1.1:= ~dev-rust/rand_core-0.4.0:= ~dev-rust/rand_hc-0.1.0:= ~dev-rust/rand_isaac-0.1.1:= ~dev-rust/rand_jitter-0.1.3:= ~dev-rust/rand_pcg-0.1.2:= ~dev-rust/rand_xorshift-0.1.1:= ~dev-rust/rand_xoshiro-0.1.0:= =dev-rust/rand_os-0.1*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust library for random number generation.
-EAPI=6
+EAPI=7
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/autocfg-0.1*:= >=dev-rust/average-0.9.2:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_chacha-0.1.1:= ~dev-rust/rand_core-0.4.0:= ~dev-rust/rand_hc-0.1.0:= ~dev-rust/rand_isaac-0.1.1:= ~dev-rust/rand_jitter-0.1.3:= ~dev-rust/rand_pcg-0.1.2:= ~dev-rust/rand_xorshift-0.1.1:= ~dev-rust/rand_xoshiro-0.1.0:= =dev-rust/rand_os-0.1*:= =dev-rust/winapi-0.3*:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.5/r0
 SRC_URI=https://crates.io/api/v1/crates/rand/0.6.5/download -> rand-0.6.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=7a87c55062f5803722bce7d51228ae6c
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9aaa4f9f88697c0f721d2dfdcfe709be
diff --git a/metadata/md5-cache/dev-rust/rand-0.6.5-r1 b/metadata/md5-cache/dev-rust/rand-0.6.5-r1
new file mode 100644
index 0000000..c98b992
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rand-0.6.5-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/autocfg-0.1*:= >=dev-rust/average-0.9.2:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_chacha-0.1.1:= ~dev-rust/rand_core-0.4.0:= ~dev-rust/rand_hc-0.1.0:= ~dev-rust/rand_isaac-0.1.1:= ~dev-rust/rand_jitter-0.1.3:= ~dev-rust/rand_pcg-0.1.2:= ~dev-rust/rand_xorshift-0.1.1:= ~dev-rust/rand_xoshiro-0.1.0:= =dev-rust/rand_os-0.1*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A Rust library for random number generation.
+EAPI=7
+HOMEPAGE=https://github.com/rust-random/rand
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/autocfg-0.1*:= >=dev-rust/average-0.9.2:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_chacha-0.1.1:= ~dev-rust/rand_core-0.4.0:= ~dev-rust/rand_hc-0.1.0:= ~dev-rust/rand_isaac-0.1.1:= ~dev-rust/rand_jitter-0.1.3:= ~dev-rust/rand_pcg-0.1.2:= ~dev-rust/rand_xorshift-0.1.1:= ~dev-rust/rand_xoshiro-0.1.0:= =dev-rust/rand_os-0.1*:= =dev-rust/winapi-0.3*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.6.5/r1
+SRC_URI=https://crates.io/api/v1/crates/rand/0.6.5/download -> rand-0.6.5.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9aaa4f9f88697c0f721d2dfdcfe709be
diff --git a/metadata/md5-cache/dev-rust/rand-0.6.5-r2 b/metadata/md5-cache/dev-rust/rand-0.6.5-r2
new file mode 100644
index 0000000..e0bbc53
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rand-0.6.5-r2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/autocfg-0.1*:= >=dev-rust/average-0.9.2:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_chacha-0.1.1:= ~dev-rust/rand_core-0.4.0:= ~dev-rust/rand_hc-0.1.0:= ~dev-rust/rand_isaac-0.1.1:= ~dev-rust/rand_jitter-0.1.3:= ~dev-rust/rand_pcg-0.1.2:= ~dev-rust/rand_xorshift-0.1.1:= ~dev-rust/rand_xoshiro-0.1.0:= =dev-rust/rand_os-0.1*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A Rust library for random number generation.
+EAPI=7
+HOMEPAGE=https://github.com/rust-random/rand
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/autocfg-0.1*:= >=dev-rust/average-0.9.2:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_chacha-0.1.1:= ~dev-rust/rand_core-0.4.0:= ~dev-rust/rand_hc-0.1.0:= ~dev-rust/rand_isaac-0.1.1:= ~dev-rust/rand_jitter-0.1.3:= ~dev-rust/rand_pcg-0.1.2:= ~dev-rust/rand_xorshift-0.1.1:= ~dev-rust/rand_xoshiro-0.1.0:= =dev-rust/rand_os-0.1*:= =dev-rust/winapi-0.3*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.6.5/r2
+SRC_URI=https://crates.io/api/v1/crates/rand/0.6.5/download -> rand-0.6.5.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9aaa4f9f88697c0f721d2dfdcfe709be
diff --git a/metadata/md5-cache/dev-rust/rand-0.7.3 b/metadata/md5-cache/dev-rust/rand-0.7.3
index 7bc1962..4eb54b9 100644
--- a/metadata/md5-cache/dev-rust/rand-0.7.3
+++ b/metadata/md5-cache/dev-rust/rand-0.7.3
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/getrandom-0.1.1:= <dev-rust/getrandom-0.2.0 >=dev-rust/libc-0.2.22:= <dev-rust/libc-0.3.0 >=dev-rust/log-0.4.4:= <dev-rust/log-0.5.0 >=dev-rust/rand_chacha-0.2.1:= <dev-rust/rand_chacha-0.3.0 >=dev-rust/rand_core-0.5.1:= <dev-rust/rand_core-0.6.0 =dev-rust/rand_hc-0.2*:= =dev-rust/rand_pcg-0.2*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust library for random number generation.
 EAPI=7
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/getrandom-0.1.1:= <dev-rust/getrandom-0.2.0 >=dev-rust/libc-0.2.22:= <dev-rust/libc-0.3.0 >=dev-rust/log-0.4.4:= <dev-rust/log-0.5.0 >=dev-rust/rand_chacha-0.2.1:= <dev-rust/rand_chacha-0.3.0 >=dev-rust/rand_core-0.5.1:= <dev-rust/rand_core-0.6.0 =dev-rust/rand_hc-0.2*:= =dev-rust/rand_pcg-0.2*:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.3/r0
 SRC_URI=https://crates.io/api/v1/crates/rand/0.7.3/download -> rand-0.7.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a0d00858a03765076705a97cbe60843c
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e605486eada344a4a2ada1d4c4341f94
diff --git a/metadata/md5-cache/dev-rust/rand-0.7.3-r1 b/metadata/md5-cache/dev-rust/rand-0.7.3-r1
new file mode 100644
index 0000000..71506dd
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rand-0.7.3-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/getrandom-0.1.1:= <dev-rust/getrandom-0.2.0 >=dev-rust/libc-0.2.22:= <dev-rust/libc-0.3.0 >=dev-rust/log-0.4.4:= <dev-rust/log-0.5.0 >=dev-rust/rand_chacha-0.2.1:= <dev-rust/rand_chacha-0.3.0 >=dev-rust/rand_core-0.5.1:= <dev-rust/rand_core-0.6.0 =dev-rust/rand_hc-0.2*:= =dev-rust/rand_pcg-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A Rust library for random number generation.
+EAPI=7
+HOMEPAGE=https://github.com/rust-random/rand
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/getrandom-0.1.1:= <dev-rust/getrandom-0.2.0 >=dev-rust/libc-0.2.22:= <dev-rust/libc-0.3.0 >=dev-rust/log-0.4.4:= <dev-rust/log-0.5.0 >=dev-rust/rand_chacha-0.2.1:= <dev-rust/rand_chacha-0.3.0 >=dev-rust/rand_core-0.5.1:= <dev-rust/rand_core-0.6.0 =dev-rust/rand_hc-0.2*:= =dev-rust/rand_pcg-0.2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.7.3/r1
+SRC_URI=https://crates.io/api/v1/crates/rand/0.7.3/download -> rand-0.7.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e605486eada344a4a2ada1d4c4341f94
diff --git a/metadata/md5-cache/dev-rust/rand-0.7.3-r2 b/metadata/md5-cache/dev-rust/rand-0.7.3-r2
new file mode 100644
index 0000000..2abdc1e
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rand-0.7.3-r2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/getrandom-0.1.1:= <dev-rust/getrandom-0.2.0 >=dev-rust/libc-0.2.22:= <dev-rust/libc-0.3.0 >=dev-rust/log-0.4.4:= <dev-rust/log-0.5.0 >=dev-rust/rand_chacha-0.2.1:= <dev-rust/rand_chacha-0.3.0 >=dev-rust/rand_core-0.5.1:= <dev-rust/rand_core-0.6.0 =dev-rust/rand_hc-0.2*:= =dev-rust/rand_pcg-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A Rust library for random number generation.
+EAPI=7
+HOMEPAGE=https://github.com/rust-random/rand
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/getrandom-0.1.1:= <dev-rust/getrandom-0.2.0 >=dev-rust/libc-0.2.22:= <dev-rust/libc-0.3.0 >=dev-rust/log-0.4.4:= <dev-rust/log-0.5.0 >=dev-rust/rand_chacha-0.2.1:= <dev-rust/rand_chacha-0.3.0 >=dev-rust/rand_core-0.5.1:= <dev-rust/rand_core-0.6.0 =dev-rust/rand_hc-0.2*:= =dev-rust/rand_pcg-0.2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.7.3/r2
+SRC_URI=https://crates.io/api/v1/crates/rand/0.7.3/download -> rand-0.7.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e605486eada344a4a2ada1d4c4341f94
diff --git a/metadata/md5-cache/dev-rust/rand_chacha-0.1.1 b/metadata/md5-cache/dev-rust/rand_chacha-0.1.1
index 76797e9..b36a514 100644
--- a/metadata/md5-cache/dev-rust/rand_chacha-0.1.1
+++ b/metadata/md5-cache/dev-rust/rand_chacha-0.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/autocfg-0.1*:= <dev-rust/rand_core_transitional-0.4.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A cryptographically secure random number generator that uses the ChaCha algorithm
 EAPI=6
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_chacha/0.1.1/download -> rand_chacha-0.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=bedc1ae8bf2a571b687cb8ce7da4275a
diff --git a/metadata/md5-cache/dev-rust/rand_chacha-0.2.2 b/metadata/md5-cache/dev-rust/rand_chacha-0.2.2
index d1ce431..2ac23c48 100644
--- a/metadata/md5-cache/dev-rust/rand_chacha-0.2.2
+++ b/metadata/md5-cache/dev-rust/rand_chacha-0.2.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/ppv-lite86-0.2.6:= <dev-rust/ppv-lite86-0.3.0 =dev-rust/rand_core-0.5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A cryptographically secure random number generator that uses the ChaCha algorithm
 EAPI=7
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.2/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_chacha/0.2.2/download -> rand_chacha-0.2.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=531ff563b5726f0a3605d28b9a72d6f6
diff --git a/metadata/md5-cache/dev-rust/rand_core-0.4.0 b/metadata/md5-cache/dev-rust/rand_core-0.4.0
index 38541d5..1b25c63 100644
--- a/metadata/md5-cache/dev-rust/rand_core-0.4.0
+++ b/metadata/md5-cache/dev-rust/rand_core-0.4.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/serde-1*:= >=dev-rust/serde_derive-1.0.38:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Core traits and error types of the rand library, plus tools for implementing RNGs
 EAPI=6
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.0/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_core/0.4.0/download -> rand_core-0.4.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=0d1dc3cc5fd407c81ad13bad51f9c592
diff --git a/metadata/md5-cache/dev-rust/rand_core-0.5.1 b/metadata/md5-cache/dev-rust/rand_core-0.5.1
index e873b58..22ea914 100644
--- a/metadata/md5-cache/dev-rust/rand_core-0.5.1
+++ b/metadata/md5-cache/dev-rust/rand_core-0.5.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/getrandom-0.1*:= =dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Core traits and error types of the rand library, plus tools for implementing RNGs
 EAPI=7
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.1/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_core/0.5.1/download -> rand_core-0.5.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=4ce9b4ed8a541854fa7118c08cb9d2b9
diff --git a/metadata/md5-cache/dev-rust/rand_core_transitional-0.3.1 b/metadata/md5-cache/dev-rust/rand_core_transitional-0.3.1
index db46216..8212468 100644
--- a/metadata/md5-cache/dev-rust/rand_core_transitional-0.3.1
+++ b/metadata/md5-cache/dev-rust/rand_core_transitional-0.3.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/rand_core-0.4.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Transitional package for rand_core
 EAPI=6
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.1/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_core/0.3.1/download -> rand_core-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=608df72417a3485ccfe32e7f0b97ecb0
diff --git a/metadata/md5-cache/dev-rust/rand_core_transitional-0.3.1-r1 b/metadata/md5-cache/dev-rust/rand_core_transitional-0.3.1-r1
index da4e88a..ba62602 100644
--- a/metadata/md5-cache/dev-rust/rand_core_transitional-0.3.1-r1
+++ b/metadata/md5-cache/dev-rust/rand_core_transitional-0.3.1-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/rand_core-0.4.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Transitional package for rand_core
 EAPI=6
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.1/r1
 SRC_URI=https://crates.io/api/v1/crates/rand_core/0.3.1/download -> rand_core-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=608df72417a3485ccfe32e7f0b97ecb0
diff --git a/metadata/md5-cache/dev-rust/rand_hc-0.1.0 b/metadata/md5-cache/dev-rust/rand_hc-0.1.0
index b879e7b..caca30b 100644
--- a/metadata/md5-cache/dev-rust/rand_hc-0.1.0
+++ b/metadata/md5-cache/dev-rust/rand_hc-0.1.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/rand_core_transitional-0.3.1:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A cryptographically secure random number generator that uses the ChaCha algorithm
 EAPI=6
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.0/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_hc/0.1.0/download -> rand_hc-0.1.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=445343c963d07c7c2f34c07c00d9b188
diff --git a/metadata/md5-cache/dev-rust/rand_hc-0.2.0 b/metadata/md5-cache/dev-rust/rand_hc-0.2.0
index 632abb9..f8843f3 100644
--- a/metadata/md5-cache/dev-rust/rand_hc-0.2.0
+++ b/metadata/md5-cache/dev-rust/rand_hc-0.2.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/rand_core-0.5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A cryptographically secure random number generator that uses the HC-128 algorithm
 EAPI=7
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.0/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_hc/0.2.0/download -> rand_hc-0.2.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=5fc711e158f795effb6e379359bdfb2b
diff --git a/metadata/md5-cache/dev-rust/rand_isaac-0.1.1 b/metadata/md5-cache/dev-rust/rand_isaac-0.1.1
index b484282..7b868ec 100644
--- a/metadata/md5-cache/dev-rust/rand_isaac-0.1.1
+++ b/metadata/md5-cache/dev-rust/rand_isaac-0.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/rand_core_transitional-0.3.1:= =dev-rust/serde-1*:= >=dev-rust/serde_derive-1.0.38:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Implements the ISAAC and ISAAC-64 random number generators
 EAPI=6
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_isaac/0.1.1/download -> rand_isaac-0.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=093a09612bf284bf5b8bb8f6be3c3696
diff --git a/metadata/md5-cache/dev-rust/rand_isaac-0.1.1-r1 b/metadata/md5-cache/dev-rust/rand_isaac-0.1.1-r1
new file mode 100644
index 0000000..6ba2bec
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rand_isaac-0.1.1-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=~dev-rust/rand_core_transitional-0.3.1:= =dev-rust/serde-1*:= >=dev-rust/serde_derive-1.0.38:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Implements the ISAAC and ISAAC-64 random number generators
+EAPI=7
+HOMEPAGE=https://github.com/rust-random/rand
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=~dev-rust/rand_core_transitional-0.3.1:= =dev-rust/serde-1*:= >=dev-rust/serde_derive-1.0.38:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.1/r1
+SRC_URI=https://crates.io/api/v1/crates/rand_isaac/0.1.1/download -> rand_isaac-0.1.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=678820eda433021b0271f29a1128dba0
diff --git a/metadata/md5-cache/dev-rust/rand_jitter-0.1.3 b/metadata/md5-cache/dev-rust/rand_jitter-0.1.3
index 6fe0c70..44804fe 100644
--- a/metadata/md5-cache/dev-rust/rand_jitter-0.1.3
+++ b/metadata/md5-cache/dev-rust/rand_jitter-0.1.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= =dev-rust/rand_core-0.4*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Non-physical true random number generator based on timing jitter
 EAPI=6
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.3/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_jitter/0.1.3/download -> rand_jitter-0.1.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ce68820b363498bca458bd9400f437bb
diff --git a/metadata/md5-cache/dev-rust/rand_os-0.1.2 b/metadata/md5-cache/dev-rust/rand_os-0.1.2
index 511bef8..3a364f8 100644
--- a/metadata/md5-cache/dev-rust/rand_os-0.1.2
+++ b/metadata/md5-cache/dev-rust/rand_os-0.1.2
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/cloudabi-0.0.3:= =dev-rust/fuchsia-cprng-0.1*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_core-0.4.0:= ~dev-rust/rdrand-0.4.0:= =dev-rust/stdweb-0.4*:= >=dev-rust/wasm-bindgen-0.2.12:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_core-0.4.0:= =dev-rust/stdweb-0.4*:= >=dev-rust/wasm-bindgen-0.2.12:= <dev-rust/wasm-bindgen-0.3.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=A random number generator that retrieves randomness straight from the operating system
-EAPI=6
+EAPI=7
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_core-0.4.0:= =dev-rust/stdweb-0.4*:= >=dev-rust/wasm-bindgen-0.2.12:= <dev-rust/wasm-bindgen-0.3.0
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.2/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_os/0.1.2/download -> rand_os-0.1.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=3d18ab6b17443877d0430f2a8b05cab2
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=62f559aeab845dc6fb6a92a5dc2fa09f
diff --git a/metadata/md5-cache/dev-rust/rand_os-0.1.2-r1 b/metadata/md5-cache/dev-rust/rand_os-0.1.2-r1
new file mode 100644
index 0000000..3c81861
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rand_os-0.1.2-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_core-0.4.0:= =dev-rust/stdweb-0.4*:= >=dev-rust/wasm-bindgen-0.2.12:= <dev-rust/wasm-bindgen-0.3.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=A random number generator that retrieves randomness straight from the operating system
+EAPI=7
+HOMEPAGE=https://github.com/rust-random/rand
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= ~dev-rust/rand_core-0.4.0:= =dev-rust/stdweb-0.4*:= >=dev-rust/wasm-bindgen-0.2.12:= <dev-rust/wasm-bindgen-0.3.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.2/r1
+SRC_URI=https://crates.io/api/v1/crates/rand_os/0.1.2/download -> rand_os-0.1.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=62f559aeab845dc6fb6a92a5dc2fa09f
diff --git a/metadata/md5-cache/dev-rust/rand_pcg-0.1.2 b/metadata/md5-cache/dev-rust/rand_pcg-0.1.2
index 53c9195..e2627ec 100644
--- a/metadata/md5-cache/dev-rust/rand_pcg-0.1.2
+++ b/metadata/md5-cache/dev-rust/rand_pcg-0.1.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/autocfg-0.1*:= ~dev-rust/rand_core-0.4.0:= =dev-rust/serde-1*:= >=dev-rust/serde_derive-1.0.38:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Implements a selection of PCG random number generators.
 EAPI=6
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.2/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_pcg/0.1.2/download -> rand_pcg-0.1.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=741ae9e40e3e67ac6ae54a52faa1e567
diff --git a/metadata/md5-cache/dev-rust/rand_pcg-0.1.2-r1 b/metadata/md5-cache/dev-rust/rand_pcg-0.1.2-r1
new file mode 100644
index 0000000..15fa27e
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rand_pcg-0.1.2-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/autocfg-0.1*:= ~dev-rust/rand_core-0.4.0:= =dev-rust/serde-1*:= >=dev-rust/serde_derive-1.0.38:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Implements a selection of PCG random number generators.
+EAPI=7
+HOMEPAGE=https://github.com/rust-random/rand
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/autocfg-0.1*:= ~dev-rust/rand_core-0.4.0:= =dev-rust/serde-1*:= >=dev-rust/serde_derive-1.0.38:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.2/r1
+SRC_URI=https://crates.io/api/v1/crates/rand_pcg/0.1.2/download -> rand_pcg-0.1.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3775f677f908feaa2ae5c63757afd590
diff --git a/metadata/md5-cache/dev-rust/rand_pcg-0.2.1 b/metadata/md5-cache/dev-rust/rand_pcg-0.2.1
index 110e1dc..c488889 100644
--- a/metadata/md5-cache/dev-rust/rand_pcg-0.2.1
+++ b/metadata/md5-cache/dev-rust/rand_pcg-0.2.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/rand_core-0.5*:= =dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Implements a selection of PCG random number generators.
 EAPI=7
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.1/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_pcg/0.2.1/download -> rand_pcg-0.2.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=9997aefcce9bba3584e86a7f723bb464
diff --git a/metadata/md5-cache/dev-rust/rand_xorshift-0.1.1 b/metadata/md5-cache/dev-rust/rand_xorshift-0.1.1
index 491ee62..c16138b 100644
--- a/metadata/md5-cache/dev-rust/rand_xorshift-0.1.1
+++ b/metadata/md5-cache/dev-rust/rand_xorshift-0.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/rand_core_transitional-0.3.1:= =dev-rust/serde-1*:= >=dev-rust/serde_derive-1.0.38:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Implements the Xorshift random number generator
 EAPI=6
 HOMEPAGE=https://github.com/rust-random/rand
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/rand_xorshift/0.1.1/download -> rand_xorshift-0.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6aa5b793b5ed8f029899caf1679d6774
diff --git a/metadata/md5-cache/dev-rust/rand_xorshift-0.1.1-r1 b/metadata/md5-cache/dev-rust/rand_xorshift-0.1.1-r1
new file mode 100644
index 0000000..6f50c77
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rand_xorshift-0.1.1-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=~dev-rust/rand_core_transitional-0.3.1:= =dev-rust/serde-1*:= >=dev-rust/serde_derive-1.0.38:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Implements the Xorshift random number generator
+EAPI=7
+HOMEPAGE=https://github.com/rust-random/rand
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=~dev-rust/rand_core_transitional-0.3.1:= =dev-rust/serde-1*:= >=dev-rust/serde_derive-1.0.38:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.1/r1
+SRC_URI=https://crates.io/api/v1/crates/rand_xorshift/0.1.1/download -> rand_xorshift-0.1.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6829df83685f3e8e2f3c3d760e015033
diff --git a/metadata/md5-cache/dev-rust/rand_xoshiro-0.1.0 b/metadata/md5-cache/dev-rust/rand_xoshiro-0.1.0
index 738098f..acdd210 100644
--- a/metadata/md5-cache/dev-rust/rand_xoshiro-0.1.0
+++ b/metadata/md5-cache/dev-rust/rand_xoshiro-0.1.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty rand_xoshiro crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/rayon-1.0.2 b/metadata/md5-cache/dev-rust/rayon-1.0.2
index fbecf1e..5661f96 100644
--- a/metadata/md5-cache/dev-rust/rayon-1.0.2
+++ b/metadata/md5-cache/dev-rust/rayon-1.0.2
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty rayon crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.2/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b459f025504105b3b301bb8096b60267
diff --git a/metadata/md5-cache/dev-rust/rayon-1.5.0 b/metadata/md5-cache/dev-rust/rayon-1.5.0
index 83cce0b..17acf28 100644
--- a/metadata/md5-cache/dev-rust/rayon-1.5.0
+++ b/metadata/md5-cache/dev-rust/rayon-1.5.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/autocfg-1*:= =dev-rust/crossbeam-deque-0.8*:= =dev-rust/either-1*:= >=dev-rust/rayon-core-1.9:= <dev-rust/rayon-core-2.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Rayon is a data-parallelism library for Rust
 EAPI=7
 HOMEPAGE=https://github.com/rayon-rs/rayon
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.5.0/r0
 SRC_URI=https://crates.io/api/v1/crates/rayon/1.5.0/download -> rayon-1.5.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=a490c8003b4370aac8a3add68473e849
diff --git a/metadata/md5-cache/dev-rust/rayon-core-1.9.0 b/metadata/md5-cache/dev-rust/rayon-core-1.9.0
index c00704b..3238b68 100644
--- a/metadata/md5-cache/dev-rust/rayon-core-1.9.0
+++ b/metadata/md5-cache/dev-rust/rayon-core-1.9.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/crossbeam-channel-0.5*:= =dev-rust/crossbeam-deque-0.8*:= =dev-rust/crossbeam-utils-0.8*:= =dev-rust/lazy_static-1*:= >=dev-rust/num_cpus-1.2:= <dev-rust/num_cpus-2.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Rayon-core represents the core, stable APIs of Rayon: join, scope, and so forth
 EAPI=7
 HOMEPAGE=https://github.com/rayon-rs/rayon
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.9.0/r0
 SRC_URI=https://crates.io/api/v1/crates/rayon-core/1.9.0/download -> rayon-core-1.9.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=191ab4a2eeda57734ad193c4cd3f440e
diff --git a/metadata/md5-cache/dev-rust/rdrand-0.4.0 b/metadata/md5-cache/dev-rust/rdrand-0.4.0
index 65fd09a..85677e0 100644
--- a/metadata/md5-cache/dev-rust/rdrand-0.4.0
+++ b/metadata/md5-cache/dev-rust/rdrand-0.4.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/rand_core_transitional-0.3.1:= >=virtual/rust-1.39.0:=
 DESCRIPTION=An implementation of random number generator based on rdrand and rdseed instructions
 EAPI=6
 HOMEPAGE=https://github.com/nagisa/rust_rdrand/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=ISC
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.0/r0
 SRC_URI=https://crates.io/api/v1/crates/rdrand/0.4.0/download -> rdrand-0.4.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=596a14765589310a4b813e4fd934a7aa
diff --git a/metadata/md5-cache/dev-rust/redox_syscall-0.1.51 b/metadata/md5-cache/dev-rust/redox_syscall-0.1.51
index a90486a..dbb10f2 100644
--- a/metadata/md5-cache/dev-rust/redox_syscall-0.1.51
+++ b/metadata/md5-cache/dev-rust/redox_syscall-0.1.51
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty redox_syscall crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.51/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/redox_termios-0.1.1 b/metadata/md5-cache/dev-rust/redox_termios-0.1.1
index 8100458..6963ed3 100644
--- a/metadata/md5-cache/dev-rust/redox_termios-0.1.1
+++ b/metadata/md5-cache/dev-rust/redox_termios-0.1.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty redox_termios crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/regex-1.0.6 b/metadata/md5-cache/dev-rust/regex-1.0.6
index 176e6c4..5bcdc26 100644
--- a/metadata/md5-cache/dev-rust/regex-1.0.6
+++ b/metadata/md5-cache/dev-rust/regex-1.0.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/aho-corasick-0.6.7:= <dev-rust/aho-corasick-0.7.0 >=dev-rust/memchr-2.0.2:= <dev-rust/memchr-3.0.0 >=dev-rust/thread_local-0.3.6:= <dev-rust/thread_local-0.4.0 >=dev-rust/regex-syntax-0.6.2:= <dev-rust/regex-syntax-0.7.0 >=dev-rust/utf8-ranges-1.0.1:= <dev-rust/utf8-ranges-1.2.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=An implementation of regular expressions for Rust.
 EAPI=6
 HOMEPAGE=https://docs.rs/crate/regex/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.6/r0
 SRC_URI=https://crates.io/api/v1/crates/regex/1.0.6/download -> regex-1.0.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=79eb34fef05b53b09b5b0e74428d2db5
diff --git a/metadata/md5-cache/dev-rust/regex-1.4.2 b/metadata/md5-cache/dev-rust/regex-1.4.2
deleted file mode 100644
index 1be5953..0000000
--- a/metadata/md5-cache/dev-rust/regex-1.4.2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/aho-corasick-0.7.6:= <dev-rust/aho-corasick-0.8.0 >=dev-rust/memchr-2.2.1:= <dev-rust/memchr-3.0.0 =dev-rust/thread_local-1*:= >=dev-rust/regex-syntax-0.6.21:= <dev-rust/regex-syntax-0.7.0 >=virtual/rust-1.39.0:=
-DESCRIPTION=An implementation of regular expressions for Rust.
-EAPI=7
-HOMEPAGE=https://docs.rs/crate/regex/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.4.2/r0
-SRC_URI=https://crates.io/api/v1/crates/regex/1.4.2/download -> regex-1.4.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c6260fb088b7a5415ebb590bae2e852f
diff --git a/metadata/md5-cache/dev-rust/regex-1.5.3 b/metadata/md5-cache/dev-rust/regex-1.5.3
new file mode 100644
index 0000000..2ef9240
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/regex-1.5.3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/aho-corasick-0.7.18:= <dev-rust/aho-corasick-0.8.0 >=dev-rust/memchr-2.4.0:= <dev-rust/memchr-3.0.0 >=dev-rust/regex-syntax-0.6.25:= <dev-rust/regex-syntax-0.7.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang/regex
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/aho-corasick-0.7.18:= <dev-rust/aho-corasick-0.8.0 >=dev-rust/memchr-2.4.0:= <dev-rust/memchr-3.0.0 >=dev-rust/regex-syntax-0.6.25:= <dev-rust/regex-syntax-0.7.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.5.3/r0
+SRC_URI=https://crates.io/api/v1/crates/regex/1.5.3/download -> regex-1.5.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4e4383925fc57978c380fd8725a44ab0
diff --git a/metadata/md5-cache/dev-rust/regex-syntax-0.6.21 b/metadata/md5-cache/dev-rust/regex-syntax-0.6.21
deleted file mode 100644
index c0afffc..0000000
--- a/metadata/md5-cache/dev-rust/regex-syntax-0.6.21
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=A regular expression parser.
-EAPI=7
-HOMEPAGE=https://docs.rs/crate/regex/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.6.21/r0
-SRC_URI=https://crates.io/api/v1/crates/regex-syntax/0.6.21/download -> regex-syntax-0.6.21.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9f6048fd67013e7842d268a98b4eea57
diff --git a/metadata/md5-cache/dev-rust/regex-syntax-0.6.25 b/metadata/md5-cache/dev-rust/regex-syntax-0.6.25
new file mode 100644
index 0000000..49d640a
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/regex-syntax-0.6.25
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=A regular expression parser.
+EAPI=7
+HOMEPAGE=https://github.com/rust-lang/regex
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.6.25/r0
+SRC_URI=https://crates.io/api/v1/crates/regex-syntax/0.6.25/download -> regex-syntax-0.6.25.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9bd7ecd6e702e4ed08cbddc1603441ce
diff --git a/metadata/md5-cache/dev-rust/regex-syntax-0.6.5 b/metadata/md5-cache/dev-rust/regex-syntax-0.6.5
deleted file mode 100644
index 92df569..0000000
--- a/metadata/md5-cache/dev-rust/regex-syntax-0.6.5
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/ucd-util-0.1.0:= <dev-rust/ucd-util-0.2.0 >=virtual/rust-1.39.0:=
-DESCRIPTION=A regular expression parser.
-EAPI=6
-HOMEPAGE=https://docs.rs/crate/regex/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=MIT
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.6.5/r0
-SRC_URI=https://crates.io/api/v1/crates/regex-syntax/0.6.5/download -> regex-syntax-0.6.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=4d6d22d65aeba5ea2663402d6d26f76f
diff --git a/metadata/md5-cache/dev-rust/remain-0.2.1 b/metadata/md5-cache/dev-rust/remain-0.2.1
index f7c25df..f8d2517 100644
--- a/metadata/md5-cache/dev-rust/remain-0.2.1
+++ b/metadata/md5-cache/dev-rust/remain-0.2.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Compile-time checks that an enum or match is written in sorted order
 EAPI=6
 HOMEPAGE=https://github.com/dtolnay/remain
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.1/r0
 SRC_URI=https://crates.io/api/v1/crates/remain/0.2.1/download -> remain-0.2.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=822acba8f91b6e73aebe2601d7660332
diff --git a/metadata/md5-cache/dev-rust/remove_dir_all-0.5.1 b/metadata/md5-cache/dev-rust/remove_dir_all-0.5.1
index 3d99822..a108bcd 100644
--- a/metadata/md5-cache/dev-rust/remove_dir_all-0.5.1
+++ b/metadata/md5-cache/dev-rust/remove_dir_all-0.5.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/winapi-0.3.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A reliable implementation of remove_dir_all for Windows. For Unix systems re-exports std::fs::remove_dir_all.
 EAPI=6
 HOMEPAGE=https://github.com/Aaronepower/remove_dir_all.git
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.1/r0
 SRC_URI=https://crates.io/api/v1/crates/remove_dir_all/0.5.1/download -> remove_dir_all-0.5.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=5a7ee2e402e412a3dbaac0f31dfe3dfa
diff --git a/metadata/md5-cache/dev-rust/ring-0.14.6 b/metadata/md5-cache/dev-rust/ring-0.14.6
index c3c6b93..ab8fc79 100644
--- a/metadata/md5-cache/dev-rust/ring-0.14.6
+++ b/metadata/md5-cache/dev-rust/ring-0.14.6
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty ring crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.14.6/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/roxmltree-0.13.1 b/metadata/md5-cache/dev-rust/roxmltree-0.13.1
new file mode 100644
index 0000000..67c2a9a
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/roxmltree-0.13.1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/xmlparser-0.13.3:= <dev-rust/xmlparser-0.14 >=virtual/rust-1.39.0:=
+DESCRIPTION=Represent an XML as a read-only tree.
+EAPI=7
+HOMEPAGE=https://github.com/RazrFalcon/roxmltree
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.13.1/r0
+SRC_URI=https://crates.io/api/v1/crates/roxmltree/0.13.1/download -> roxmltree-0.13.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=36ada93a2efbe1eca1b4de49b38228cb
diff --git a/metadata/md5-cache/dev-rust/rusb-0.6.2 b/metadata/md5-cache/dev-rust/rusb-0.6.2
index e138855..42d045e 100644
--- a/metadata/md5-cache/dev-rust/rusb-0.6.2
+++ b/metadata/md5-cache/dev-rust/rusb-0.6.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libusb1-sys-0.3.5:= <dev-rust/libusb1-sys-0.4 =dev-rust/libc-0.2*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust library for accessing USB devices
 EAPI=7
 HOMEPAGE=https://docs.rs/crate/rusb/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.2/r0
 SRC_URI=https://crates.io/api/v1/crates/rusb/0.6.2/download -> rusb-0.6.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=84443b7ee9063f8e6c3eb7017e016197
diff --git a/metadata/md5-cache/dev-rust/rusqlite-0.19.0 b/metadata/md5-cache/dev-rust/rusqlite-0.19.0
index ea4fb76..77aedca 100644
--- a/metadata/md5-cache/dev-rust/rusqlite-0.19.0
+++ b/metadata/md5-cache/dev-rust/rusqlite-0.19.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bitflags-1*:= =dev-rust/fallible-iterator-0.2*:= =dev-rust/fallible-streaming-iterator-0.1*:= =dev-rust/libsqlite3-sys-0.15*:= =dev-rust/lru-cache-0.1*:= =dev-rust/memchr-2.2*:= =dev-rust/time-0.1*:= =dev-rust/byteorder-1.2*:= =dev-rust/chrono-0.4*:= =dev-rust/csv-1*:= =dev-rust/lazy_static-1*:= =dev-rust/serde_json-1*:= =dev-rust/url-1.7*:= =dev-rust/uuid-0.7*:= =dev-rust/regex-1*:= =dev-rust/tempdir-0.3*:= =dev-rust/unicase-2.4*:= =dev-rust/uuid-0.7*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rusqlite is an ergonomic wrapper for using SQLite from Rust
 EAPI=6
 HOMEPAGE=https://github.com/jgallagher/rusqlite
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.19.0/r0
 SRC_URI=https://crates.io/api/v1/crates/rusqlite/0.19.0/download -> rusqlite-0.19.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=54939ba9e49e1a7a49b1667f388d2730
diff --git a/metadata/md5-cache/dev-rust/rusqlite-0.20.0 b/metadata/md5-cache/dev-rust/rusqlite-0.20.0
index 3567938..3b81b16 100644
--- a/metadata/md5-cache/dev-rust/rusqlite-0.20.0
+++ b/metadata/md5-cache/dev-rust/rusqlite-0.20.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bitflags-1*:= =dev-rust/fallible-iterator-0.2*:= =dev-rust/fallible-streaming-iterator-0.1*:= =dev-rust/libsqlite3-sys-0.16*:= =dev-rust/lru-cache-0.1*:= =dev-rust/memchr-2.2*:= =dev-rust/time-0.1*:= =dev-rust/byteorder-1.2*:= =dev-rust/chrono-0.4*:= =dev-rust/csv-1*:= =dev-rust/lazy_static-1*:= =dev-rust/serde_json-1*:= =dev-rust/url-2*:= =dev-rust/uuid-0.7*:= =dev-rust/regex-1*:= =dev-rust/tempdir-0.3*:= =dev-rust/unicase-2.4*:= =dev-rust/uuid-0.7*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rusqlite is an ergonomic wrapper for using SQLite from Rust
 EAPI=6
 HOMEPAGE=https://github.com/jgallagher/rusqlite
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.20.0/r0
 SRC_URI=https://crates.io/api/v1/crates/rusqlite/0.20.0/download -> rusqlite-0.20.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ca37fac73077f423628842465a0c9b9a
diff --git a/metadata/md5-cache/dev-rust/rustc-demangle-0.1.4 b/metadata/md5-cache/dev-rust/rustc-demangle-0.1.4
index 839d129..4d89ac1 100644
--- a/metadata/md5-cache/dev-rust/rustc-demangle-0.1.4
+++ b/metadata/md5-cache/dev-rust/rustc-demangle-0.1.4
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Symbol demangling for Rust
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/rustc-demangle
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.4/r0
 SRC_URI=https://crates.io/api/v1/crates/rustc-demangle/0.1.4/download -> rustc-demangle-0.1.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=06722ff391b8bdaa74db19718f4cf8fd
diff --git a/metadata/md5-cache/dev-rust/rustc-hash-1.0.0 b/metadata/md5-cache/dev-rust/rustc-hash-1.0.0
deleted file mode 100644
index 37f8778..0000000
--- a/metadata/md5-cache/dev-rust/rustc-hash-1.0.0
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty rustc-hash crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/rustc-hash-1.1.0 b/metadata/md5-cache/dev-rust/rustc-hash-1.1.0
index 25267f4..8b61651 100644
--- a/metadata/md5-cache/dev-rust/rustc-hash-1.1.0
+++ b/metadata/md5-cache/dev-rust/rustc-hash-1.1.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=speed, non-cryptographic hash used in rustc
 EAPI=7
 HOMEPAGE=https://github.com/rust-lang-nursery/rustc-hash
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.1.0/r0
 SRC_URI=https://crates.io/api/v1/crates/rustc-hash/1.1.0/download -> rustc-hash-1.1.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=593dd9f8e97bfae4a45140a956b06d40
diff --git a/metadata/md5-cache/dev-rust/rustc-serialize-0.3.24 b/metadata/md5-cache/dev-rust/rustc-serialize-0.3.24
index 388ab0f..dadefcd 100644
--- a/metadata/md5-cache/dev-rust/rustc-serialize-0.3.24
+++ b/metadata/md5-cache/dev-rust/rustc-serialize-0.3.24
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/rand-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Serialization and deserialization support provided by the compiler in the form of derive(RustcEncodable, RustcDecodable).
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang-deprecated/rustc-serialize
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.24/r0
 SRC_URI=https://crates.io/api/v1/crates/rustc-serialize/0.3.24/download -> rustc-serialize-0.3.24.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=91a5761fe00ecbc93b689478caf18973
diff --git a/metadata/md5-cache/dev-rust/rustc-serialize-0.3.24-r1 b/metadata/md5-cache/dev-rust/rustc-serialize-0.3.24-r1
index 60a52e6..9d4d55c 100644
--- a/metadata/md5-cache/dev-rust/rustc-serialize-0.3.24-r1
+++ b/metadata/md5-cache/dev-rust/rustc-serialize-0.3.24-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/rand-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Serialization and deserialization support provided by the compiler in the form of derive(RustcEncodable, RustcDecodable).
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang-deprecated/rustc-serialize
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.24/r1
 SRC_URI=https://crates.io/api/v1/crates/rustc-serialize/0.3.24/download -> rustc-serialize-0.3.24.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=91a5761fe00ecbc93b689478caf18973
diff --git a/metadata/md5-cache/dev-rust/rustc-std-workspace-alloc-1.0.0 b/metadata/md5-cache/dev-rust/rustc-std-workspace-alloc-1.0.0
new file mode 100644
index 0000000..e48e1ec3
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rustc-std-workspace-alloc-1.0.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Empty crate
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.0/r0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2bde60a80008a5717cc088362983971e
diff --git a/metadata/md5-cache/dev-rust/rustc-std-workspace-core-1.0.0 b/metadata/md5-cache/dev-rust/rustc-std-workspace-core-1.0.0
index c5fac86..c5a9225 100644
--- a/metadata/md5-cache/dev-rust/rustc-std-workspace-core-1.0.0
+++ b/metadata/md5-cache/dev-rust/rustc-std-workspace-core-1.0.0
@@ -1,10 +1,10 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=bd17a758f31d5462ebd445618878377b
diff --git a/metadata/md5-cache/dev-rust/rustc-std-workspace-std-1.0.0 b/metadata/md5-cache/dev-rust/rustc-std-workspace-std-1.0.0
new file mode 100644
index 0000000..e48e1ec3
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/rustc-std-workspace-std-1.0.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Empty crate
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.0/r0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2bde60a80008a5717cc088362983971e
diff --git a/metadata/md5-cache/dev-rust/rustc-test-0.3.0 b/metadata/md5-cache/dev-rust/rustc-test-0.3.0
index b1adf50..13c08ff 100644
--- a/metadata/md5-cache/dev-rust/rustc-test-0.3.0
+++ b/metadata/md5-cache/dev-rust/rustc-test-0.3.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty rustc-test crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/rustc_version-0.2.3 b/metadata/md5-cache/dev-rust/rustc_version-0.2.3
index 1fcbd38..3070ea7 100644
--- a/metadata/md5-cache/dev-rust/rustc_version-0.2.3
+++ b/metadata/md5-cache/dev-rust/rustc_version-0.2.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/semver-0.9*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A library for querying the version of a rustc compiler
 EAPI=6
 HOMEPAGE=https://github.com/Kimundi/rustc-version-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.3/r0
 SRC_URI=https://crates.io/api/v1/crates/rustc_version/0.2.3/download -> rustc_version-0.2.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8d57b53039d2a11eb8239d0a2d6f2f07
diff --git a/metadata/md5-cache/dev-rust/rustyline-7.0.0-r1 b/metadata/md5-cache/dev-rust/rustyline-7.0.0-r1
index 8364f7a..7d10699 100644
--- a/metadata/md5-cache/dev-rust/rustyline-7.0.0-r1
+++ b/metadata/md5-cache/dev-rust/rustyline-7.0.0-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bitflags-1.2.0:= <dev-rust/bitflags-2.0.0 =dev-rust/fs2-0.4*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= =dev-rust/memchr-2*:= =dev-rust/nix-0.19*:= =dev-rust/unicode-segmentation-1*:= =dev-rust/unicode-width-0.1*:= =dev-rust/utf8parse-0.2*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rustyline, a readline implementation based on Antirez's Linenoise.
 EAPI=7
 HOMEPAGE=https://docs.rs/rustyline
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=7.0.0/r1
 SRC_URI=https://crates.io/api/v1/crates/rustyline/7.0.0/download -> rustyline-7.0.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=379f215c671112caa93430d5397b148d
diff --git a/metadata/md5-cache/dev-rust/ryu-0.2.8 b/metadata/md5-cache/dev-rust/ryu-0.2.8
index 2b86710..59a9e3d 100644
--- a/metadata/md5-cache/dev-rust/ryu-0.2.8
+++ b/metadata/md5-cache/dev-rust/ryu-0.2.8
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/no-panic-0.1*:= >=dev-rust/num_cpus-1.8.0:= =dev-rust/rand-0.5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Pure Rust implementation of Ryū, an algorithm to quickly convert floating point numbers to decimal strings.
 EAPI=6
 HOMEPAGE=https://github.com/dtolnay/ryu
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( Apache-2.0 Boost-1.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.8/r0
 SRC_URI=https://crates.io/api/v1/crates/ryu/0.2.8/download -> ryu-0.2.8.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=da07188f19ca468301de7d83f9fe84a0
diff --git a/metadata/md5-cache/dev-rust/ryu-1.0.5 b/metadata/md5-cache/dev-rust/ryu-1.0.5
new file mode 100644
index 0000000..fd3d58e
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/ryu-1.0.5
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/no-panic-0.1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Fast floating point to string conversion
+EAPI=7
+HOMEPAGE=https://crates.io/crates/ryu
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND==dev-rust/no-panic-0.1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.5/r0
+SRC_URI=https://crates.io/api/v1/crates/ryu/1.0.5/download -> ryu-1.0.5.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9f6edd4536500d5d0e1b7e87b21b5c70
diff --git a/metadata/md5-cache/dev-rust/s9-0.1.0-r35 b/metadata/md5-cache/dev-rust/s9-0.1.0-r35
new file mode 100644
index 0000000..9f758d0
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/s9-0.1.0-r35
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/getopts-0.2*:= =dev-rust/libc-0.2*:= dev-rust/libchromeos:= =dev-rust/log-0.4*:= dev-rust/p9:= dev-rust/sys_util:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Server binary for the 9P file system protocol
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/9s/
+IUSE=test cros_host cros_workon_tree_a65853288ed3e9a088f071b1946c83222b9a6d3e cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<chromeos-base/crosvm-0.0.1-r260 !dev-rust/9s
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f1eb6c9eb8a7a472637a8f610889cd41
diff --git a/metadata/md5-cache/dev-rust/s9-9999 b/metadata/md5-cache/dev-rust/s9-9999
new file mode 100644
index 0000000..0d8b857
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/s9-9999
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/getopts-0.2*:= =dev-rust/libc-0.2*:= dev-rust/libchromeos:= =dev-rust/log-0.4*:= dev-rust/p9:= dev-rust/sys_util:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Server binary for the 9P file system protocol
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/9s/
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<chromeos-base/crosvm-0.0.1-r260 !dev-rust/9s
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2053caffb6d3c3a75abe0364d1a2c4f6
diff --git a/metadata/md5-cache/dev-rust/schannel-0.1.15 b/metadata/md5-cache/dev-rust/schannel-0.1.15
index 251b03f..2b668ab 100644
--- a/metadata/md5-cache/dev-rust/schannel-0.1.15
+++ b/metadata/md5-cache/dev-rust/schannel-0.1.15
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/lazy_static-1*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust bindings to the Windows SChannel APIs providing TLS client and server functionality.
 EAPI=6
 HOMEPAGE=https://github.com/steffengy/schannel-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.15/r0
 SRC_URI=https://crates.io/api/v1/crates/schannel/0.1.15/download -> schannel-0.1.15.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ab40bf3a2b6abbeb2594bd73d4a90148
diff --git a/metadata/md5-cache/dev-rust/scoped-tls-0.1.0 b/metadata/md5-cache/dev-rust/scoped-tls-0.1.0
index d8fe2ce..a170191 100644
--- a/metadata/md5-cache/dev-rust/scoped-tls-0.1.0
+++ b/metadata/md5-cache/dev-rust/scoped-tls-0.1.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust library providing the old standard library's scoped_thread_local! macro as a library implementation on crates.io.
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/scoped-tls
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.0/r0
 SRC_URI=https://crates.io/api/v1/crates/scoped-tls/0.1.0/download -> scoped-tls-0.1.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a02ded527606af26467e29a6285ce5b1
diff --git a/metadata/md5-cache/dev-rust/scoped_threadpool-0.1.9 b/metadata/md5-cache/dev-rust/scoped_threadpool-0.1.9
index 9231412..03022b7 100644
--- a/metadata/md5-cache/dev-rust/scoped_threadpool-0.1.9
+++ b/metadata/md5-cache/dev-rust/scoped_threadpool-0.1.9
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty scoped_threadpool crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.9/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/scopeguard-0.3.3 b/metadata/md5-cache/dev-rust/scopeguard-0.3.3
index 529eabc..4a0ca6f 100644
--- a/metadata/md5-cache/dev-rust/scopeguard-0.3.3
+++ b/metadata/md5-cache/dev-rust/scopeguard-0.3.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A RAII scope guard that will run a given closure when it goes out of scope
 EAPI=6
 HOMEPAGE=https://github.com/bluss/scopeguard
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.3/r0
 SRC_URI=https://crates.io/api/v1/crates/scopeguard/0.3.3/download -> scopeguard-0.3.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=94dc2dc560c236e86accab95312d1d43
diff --git a/metadata/md5-cache/dev-rust/scopeguard-1.1.0 b/metadata/md5-cache/dev-rust/scopeguard-1.1.0
index b7aa153..f67381f 100644
--- a/metadata/md5-cache/dev-rust/scopeguard-1.1.0
+++ b/metadata/md5-cache/dev-rust/scopeguard-1.1.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A RAII scope guard that will run a given closure when it goes out of scope
 EAPI=7
 HOMEPAGE=https://github.com/bluss/scopeguard
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.1.0/r0
 SRC_URI=https://crates.io/api/v1/crates/scopeguard/1.1.0/download -> scopeguard-1.1.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=a9ebe4ba7eb70f79f8bf221532ad1c8d
diff --git a/metadata/md5-cache/dev-rust/security-framework-0.3.3 b/metadata/md5-cache/dev-rust/security-framework-0.3.3
index 6d4e464..230b9e7 100644
--- a/metadata/md5-cache/dev-rust/security-framework-0.3.3
+++ b/metadata/md5-cache/dev-rust/security-framework-0.3.3
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty security-framework crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.3/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=41923915aa8b03ebf1d6af087d106c83
diff --git a/metadata/md5-cache/dev-rust/security-framework-sys-0.3.3 b/metadata/md5-cache/dev-rust/security-framework-sys-0.3.3
index a9577ac..8dc9717 100644
--- a/metadata/md5-cache/dev-rust/security-framework-sys-0.3.3
+++ b/metadata/md5-cache/dev-rust/security-framework-sys-0.3.3
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty security-framework-sys crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.3/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=41923915aa8b03ebf1d6af087d106c83
diff --git a/metadata/md5-cache/dev-rust/semver-0.9.0 b/metadata/md5-cache/dev-rust/semver-0.9.0
index dd521aa..7b4a6cd 100644
--- a/metadata/md5-cache/dev-rust/semver-0.9.0
+++ b/metadata/md5-cache/dev-rust/semver-0.9.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/semver-parser-0.7*:= =dev-rust/serde-1*:= =dev-rust/crates-index-0.5*:= =dev-rust/serde_derive-1*:= =dev-rust/serde_json-1*:= =dev-rust/tempdir-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Semantic version parsing and comparison
 EAPI=6
 HOMEPAGE=https://docs.rs/crate/semver/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.9.0/r0
 SRC_URI=https://crates.io/api/v1/crates/semver/0.9.0/download -> semver-0.9.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8d525f630d7b1503585cfb816b623f18
diff --git a/metadata/md5-cache/dev-rust/semver-parser-0.7.0 b/metadata/md5-cache/dev-rust/semver-parser-0.7.0
index 51f524e..7bd7f02 100644
--- a/metadata/md5-cache/dev-rust/semver-parser-0.7.0
+++ b/metadata/md5-cache/dev-rust/semver-parser-0.7.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Parsing for the semver spec
 EAPI=6
 HOMEPAGE=https://github.com/steveklabnik/semver-parser
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.0/r0
 SRC_URI=https://crates.io/api/v1/crates/semver-parser/0.7.0/download -> semver-parser-0.7.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=65b1cf25f42ccb6ac2af5af503541bce
diff --git a/metadata/md5-cache/dev-rust/serde-0.8.23 b/metadata/md5-cache/dev-rust/serde-0.8.23
index 535ef20..b3305bf 100644
--- a/metadata/md5-cache/dev-rust/serde-0.8.23
+++ b/metadata/md5-cache/dev-rust/serde-0.8.23
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty serde crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.23/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a24171f2ba7b7f5d00b155293ff5debe
diff --git a/metadata/md5-cache/dev-rust/serde-1.0.114 b/metadata/md5-cache/dev-rust/serde-1.0.114
index c90000f..42dff63 100644
--- a/metadata/md5-cache/dev-rust/serde-1.0.114
+++ b/metadata/md5-cache/dev-rust/serde-1.0.114
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/serde_derive-1.0.114:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Serde is a framework for serializing and deserializing Rust data structures efficiently and generically
 EAPI=7
 HOMEPAGE=https://github.com/serde-rs/serde
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.114/r0
 SRC_URI=https://crates.io/api/v1/crates/serde/1.0.114/download -> serde-1.0.114.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=63da2ba6427bf8b4f1c342a1565507bf
diff --git a/metadata/md5-cache/dev-rust/serde-1.0.125 b/metadata/md5-cache/dev-rust/serde-1.0.125
new file mode 100644
index 0000000..e4cb03f
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/serde-1.0.125
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=~dev-rust/serde_derive-1.0.125:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A generic serialization/deserialization framework
+EAPI=7
+HOMEPAGE=https://serde.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=~dev-rust/serde_derive-1.0.125:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.125/r0
+SRC_URI=https://crates.io/api/v1/crates/serde/1.0.125/download -> serde-1.0.125.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1299331d6c69b365527e21725702990a
diff --git a/metadata/md5-cache/dev-rust/serde_bytes-0.10.5 b/metadata/md5-cache/dev-rust/serde_bytes-0.10.5
index 0b8ac18..6eca3f0 100644
--- a/metadata/md5-cache/dev-rust/serde_bytes-0.10.5
+++ b/metadata/md5-cache/dev-rust/serde_bytes-0.10.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bincode-1.0*:= =dev-rust/serde-1.0*:= =dev-rust/serde_derive-1.0*:= =dev-rust/serde_test-1.0*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Wrapper types to enable optimized handling of &[u8] and Vec<u8>
 EAPI=6
 HOMEPAGE=https://github.com/serde-rs/bytes
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.10.5/r0
 SRC_URI=https://crates.io/api/v1/crates/serde_bytes/0.10.5/download -> serde_bytes-0.10.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6672a45492a97789b9e802e387d81554
diff --git a/metadata/md5-cache/dev-rust/serde_derive-1.0.114 b/metadata/md5-cache/dev-rust/serde_derive-1.0.114
index ec411d2..7118160 100644
--- a/metadata/md5-cache/dev-rust/serde_derive-1.0.114
+++ b/metadata/md5-cache/dev-rust/serde_derive-1.0.114
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= >=dev-rust/syn-1.0.33:= <dev-rust/syn-2 >=virtual/rust-1.39.0:=
 DESCRIPTION=Serde is a framework for serializing and deserializing Rust data structures efficiently and generically
 EAPI=7
 HOMEPAGE=https://github.com/serde-rs/serde
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.114/r0
 SRC_URI=https://crates.io/api/v1/crates/serde_derive/1.0.114/download -> serde_derive-1.0.114.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=32cb0117cf05773546ea0d13c7fe9245
diff --git a/metadata/md5-cache/dev-rust/serde_derive-1.0.125 b/metadata/md5-cache/dev-rust/serde_derive-1.0.125
new file mode 100644
index 0000000..ee59d51
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/serde_derive-1.0.125
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= >=dev-rust/syn-1.0.60:= <dev-rust/syn-2.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Macros 1.1 implementation of #[derive(Serialize, Deserialize)]
+EAPI=7
+HOMEPAGE=https://serde.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= >=dev-rust/syn-1.0.60:= <dev-rust/syn-2.0.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.125/r0
+SRC_URI=https://crates.io/api/v1/crates/serde_derive/1.0.125/download -> serde_derive-1.0.125.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d3c1ff17cf6609b3a4833d7153311951
diff --git a/metadata/md5-cache/dev-rust/serde_json-0.8.6 b/metadata/md5-cache/dev-rust/serde_json-0.8.6
index b550d51..8e8e3a4 100644
--- a/metadata/md5-cache/dev-rust/serde_json-0.8.6
+++ b/metadata/md5-cache/dev-rust/serde_json-0.8.6
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty serde_json crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.6/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a24171f2ba7b7f5d00b155293ff5debe
diff --git a/metadata/md5-cache/dev-rust/serde_json-1.0.0 b/metadata/md5-cache/dev-rust/serde_json-1.0.0
deleted file mode 100644
index 2c2e0a9..0000000
--- a/metadata/md5-cache/dev-rust/serde_json-1.0.0
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty serde_json crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=41923915aa8b03ebf1d6af087d106c83
diff --git a/metadata/md5-cache/dev-rust/serde_json-1.0.39 b/metadata/md5-cache/dev-rust/serde_json-1.0.39
index ce7182a..dc56b78 100644
--- a/metadata/md5-cache/dev-rust/serde_json-1.0.39
+++ b/metadata/md5-cache/dev-rust/serde_json-1.0.39
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/itoa-0.4.3:= =dev-rust/ryu-0.2*:= >=dev-rust/serde-1.0.60:= =dev-rust/indexmap-1*:= =dev-rust/automod-0.1*:= =dev-rust/compiletest_rs-0.3*:= =dev-rust/serde_derive-1*:= =dev-rust/serde_stacker-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Serde is a framework for serializing and deserializing Rust data structures efficiently and generically.
 EAPI=6
 HOMEPAGE=https://github.com/serde-rs/json
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.39/r0
 SRC_URI=https://crates.io/api/v1/crates/serde_json/1.0.39/download -> serde_json-1.0.39.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3be7dfce4e170ed80f6b599d479bc0c4
diff --git a/metadata/md5-cache/dev-rust/serde_json-1.0.39-r1 b/metadata/md5-cache/dev-rust/serde_json-1.0.39-r1
index 096e7bd..f0c5a38 100644
--- a/metadata/md5-cache/dev-rust/serde_json-1.0.39-r1
+++ b/metadata/md5-cache/dev-rust/serde_json-1.0.39-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/itoa-0.4.3:= =dev-rust/ryu-0.2*:= >=dev-rust/serde-1.0.60:= =dev-rust/indexmap-1*:= =dev-rust/automod-0.1*:= =dev-rust/compiletest_rs-0.3*:= =dev-rust/serde_derive-1*:= =dev-rust/serde_stacker-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Serde is a framework for serializing and deserializing Rust data structures efficiently and generically.
 EAPI=6
 HOMEPAGE=https://github.com/serde-rs/json
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.39/r1
 SRC_URI=https://crates.io/api/v1/crates/serde_json/1.0.39/download -> serde_json-1.0.39.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3be7dfce4e170ed80f6b599d479bc0c4
diff --git a/metadata/md5-cache/dev-rust/serde_json-1.0.64 b/metadata/md5-cache/dev-rust/serde_json-1.0.64
new file mode 100644
index 0000000..855d2c3
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/serde_json-1.0.64
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/indexmap-1.5.0:= <dev-rust/indexmap-2.0.0 >=dev-rust/itoa-0.4.3:= <dev-rust/itoa-0.5.0 =dev-rust/ryu-1*:= >=dev-rust/serde-1.0.100:= <dev-rust/serde-2.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=A JSON serialization file format
+EAPI=7
+HOMEPAGE=https://crates.io/crates/serde_json
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/indexmap-1.5.0:= <dev-rust/indexmap-2.0.0 >=dev-rust/itoa-0.4.3:= <dev-rust/itoa-0.5.0 =dev-rust/ryu-1*:= >=dev-rust/serde-1.0.100:= <dev-rust/serde-2.0.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.64/r0
+SRC_URI=https://crates.io/api/v1/crates/serde_json/1.0.64/download -> serde_json-1.0.64.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8dd26b57bdb4ee2f48527717f85968a6
diff --git a/metadata/md5-cache/dev-rust/serde_repr-0.1.7 b/metadata/md5-cache/dev-rust/serde_repr-0.1.7
new file mode 100644
index 0000000..ca12810
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/serde_repr-0.1.7
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Derive Serialize and Deserialize that delegates to the underlying repr of a C-like enum.
+EAPI=7
+HOMEPAGE=https://crates.io/crates/serde_repr
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.7/r0
+SRC_URI=https://crates.io/api/v1/crates/serde_repr/0.1.7/download -> serde_repr-0.1.7.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=299a228fdb8db8ff3af5c618ba23ded8
diff --git a/metadata/md5-cache/dev-rust/serde_stacker-0.1.0 b/metadata/md5-cache/dev-rust/serde_stacker-0.1.0
index 18449b8..0af9356 100644
--- a/metadata/md5-cache/dev-rust/serde_stacker-0.1.0
+++ b/metadata/md5-cache/dev-rust/serde_stacker-0.1.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty serde_stacker crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/serde_test-1.0.0 b/metadata/md5-cache/dev-rust/serde_test-1.0.0
deleted file mode 100644
index 998318a..0000000
--- a/metadata/md5-cache/dev-rust/serde_test-1.0.0
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Empty serde_test crate
-EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b459f025504105b3b301bb8096b60267
diff --git a/metadata/md5-cache/dev-rust/serde_test-1.0.92 b/metadata/md5-cache/dev-rust/serde_test-1.0.92
index e101600..c86b8ca 100644
--- a/metadata/md5-cache/dev-rust/serde_test-1.0.92
+++ b/metadata/md5-cache/dev-rust/serde_test-1.0.92
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty serde_test crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.92/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/serde_yaml-0.8.11 b/metadata/md5-cache/dev-rust/serde_yaml-0.8.11
index 6712143..8e9c164 100644
--- a/metadata/md5-cache/dev-rust/serde_yaml-0.8.11
+++ b/metadata/md5-cache/dev-rust/serde_yaml-0.8.11
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/dtoa-0.4*:= =dev-rust/linked-hash-map-0.5*:= >=dev-rust/serde-1.0.60:= <dev-rust/serde-2.0 =dev-rust/yaml-rust-0.4*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=YAML support for Serde
 EAPI=6
 HOMEPAGE=https://docs.rs/crate/serde_yaml
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.11/r0
 SRC_URI=https://crates.io/api/v1/crates/serde_yaml/0.8.11/download -> serde_yaml-0.8.11.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=2d7dcff948c9f716cc50f024a0f369e2
diff --git a/metadata/md5-cache/dev-rust/shell-words-1.0.0 b/metadata/md5-cache/dev-rust/shell-words-1.0.0
index 029373d..fa6614b 100644
--- a/metadata/md5-cache/dev-rust/shell-words-1.0.0
+++ b/metadata/md5-cache/dev-rust/shell-words-1.0.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Process command line according to parsing rules of Unix shell.
 EAPI=7
 HOMEPAGE=https://github.com/tmiasko/shell-words
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.0/r0
 SRC_URI=https://crates.io/api/v1/crates/shell-words/1.0.0/download -> shell-words-1.0.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=621988a0b5019a7024c137960e47bf2f
diff --git a/metadata/md5-cache/dev-rust/shlex-0.1.1 b/metadata/md5-cache/dev-rust/shlex-0.1.1
index e87723a..2d1e222a 100644
--- a/metadata/md5-cache/dev-rust/shlex-0.1.1
+++ b/metadata/md5-cache/dev-rust/shlex-0.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Split a string into shell words, like Python's shlex.
 EAPI=7
 HOMEPAGE=https://github.com/comex/rust-shlex
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/shlex/0.1.1/download -> shlex-0.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=e3772ee820489e55e14a9d8bbbdf88c2
diff --git a/metadata/md5-cache/dev-rust/signal-hook-0.1.16 b/metadata/md5-cache/dev-rust/signal-hook-0.1.16
index 3217fa8..f4a745f 100644
--- a/metadata/md5-cache/dev-rust/signal-hook-0.1.16
+++ b/metadata/md5-cache/dev-rust/signal-hook-0.1.16
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty signal-hook crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.16/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/simplelog-0.10.0 b/metadata/md5-cache/dev-rust/simplelog-0.10.0
new file mode 100644
index 0000000..0b50e3f
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/simplelog-0.10.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/chrono-0.4*:= =dev-rust/log-0.4*:= =dev-rust/termcolor-1.1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A simple and easy-to-use logging facility for Rust's log crate
+EAPI=7
+HOMEPAGE=https://github.com/drakulix/simplelog.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/chrono-0.4*:= =dev-rust/log-0.4*:= =dev-rust/termcolor-1.1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.10.0/r0
+SRC_URI=https://crates.io/api/v1/crates/simplelog/0.10.0/download -> simplelog-0.10.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d3ea0ddfc283341d63bde6ac5a13811f
diff --git a/metadata/md5-cache/dev-rust/slab-0.4.2 b/metadata/md5-cache/dev-rust/slab-0.4.2
index 4a0429e..809ec4c 100644
--- a/metadata/md5-cache/dev-rust/slab-0.4.2
+++ b/metadata/md5-cache/dev-rust/slab-0.4.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Pre-allocated storage for a uniform data type
 EAPI=6
 HOMEPAGE=https://github.com/carllerche/slab
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.2/r0
 SRC_URI=https://crates.io/api/v1/crates/slab/0.4.2/download -> slab-0.4.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8431703a86a8ef35bf9628a8ecbde178
diff --git a/metadata/md5-cache/dev-rust/slab-0.4.3 b/metadata/md5-cache/dev-rust/slab-0.4.3
new file mode 100644
index 0000000..66f92d8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/slab-0.4.3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/serde-1.0.95:= <dev-rust/serde-2.0.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Pre-allocated storage for a uniform data type
+EAPI=7
+HOMEPAGE=https://github.com/tokio-rs/slab
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/serde-1.0.95:= <dev-rust/serde-2.0.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.4.3/r0
+SRC_URI=https://crates.io/api/v1/crates/slab/0.4.3/download -> slab-0.4.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=423b2cc9d156e5ce8e5a625cf870422e
diff --git a/metadata/md5-cache/dev-rust/smallvec-0.6.12 b/metadata/md5-cache/dev-rust/smallvec-0.6.12
index ecbc29f..2034155 100644
--- a/metadata/md5-cache/dev-rust/smallvec-0.6.12
+++ b/metadata/md5-cache/dev-rust/smallvec-0.6.12
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Small vector optimization for Rust
 EAPI=6
 HOMEPAGE=https://github.com/servo/rust-smallvec
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.12/r0
 SRC_URI=https://crates.io/api/v1/crates/smallvec/0.6.12/download -> smallvec-0.6.12.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=0a90dc4d8d25349f1848cb2cee51cf80
diff --git a/metadata/md5-cache/dev-rust/smallvec-0.6.12-r1 b/metadata/md5-cache/dev-rust/smallvec-0.6.12-r1
index 2fc0f3d..e006422 100644
--- a/metadata/md5-cache/dev-rust/smallvec-0.6.12-r1
+++ b/metadata/md5-cache/dev-rust/smallvec-0.6.12-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Small vector optimization for Rust
 EAPI=6
 HOMEPAGE=https://github.com/servo/rust-smallvec
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.12/r1
 SRC_URI=https://crates.io/api/v1/crates/smallvec/0.6.12/download -> smallvec-0.6.12.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=0a90dc4d8d25349f1848cb2cee51cf80
diff --git a/metadata/md5-cache/dev-rust/smallvec-0.6.14 b/metadata/md5-cache/dev-rust/smallvec-0.6.14
new file mode 100644
index 0000000..f593e19
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/smallvec-0.6.14
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/maybe-uninit-2*:= =dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION='Small vector' optimization: store up to a small number of items on the stack
+EAPI=7
+HOMEPAGE=https://crates.io/crates/smallvec
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/maybe-uninit-2*:= =dev-rust/serde-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.6.14/r0
+SRC_URI=https://crates.io/api/v1/crates/smallvec/0.6.14/download -> smallvec-0.6.14.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=45a4a916584c16ecc49052684c996fec
diff --git a/metadata/md5-cache/dev-rust/smallvec-1.6.1 b/metadata/md5-cache/dev-rust/smallvec-1.6.1
new file mode 100644
index 0000000..4b3595f
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/smallvec-1.6.1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Small vector optimization for Rust
+EAPI=7
+HOMEPAGE=https://github.com/servo/rust-smallvec
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.6.1/r0
+SRC_URI=https://crates.io/api/v1/crates/smallvec/1.6.1/download -> smallvec-1.6.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=bf50f32ed80f7a2e4dab2c5e7b6d0ee7
diff --git a/metadata/md5-cache/dev-rust/socket2-0.3.9 b/metadata/md5-cache/dev-rust/socket2-0.3.9
index be91540..839be30 100644
--- a/metadata/md5-cache/dev-rust/socket2-0.3.9
+++ b/metadata/md5-cache/dev-rust/socket2-0.3.9
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/cfg-if-0.1*:= =dev-rust/libc-0.2*:= =dev-rust/redox_syscall-0.1*:= =dev-rust/winapi-0.3*:= =dev-rust/tempdir-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Provide as direct as possible access to the system's functionality for sockets as possible
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/socket2-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.9/r0
 SRC_URI=https://crates.io/api/v1/crates/socket2/0.3.9/download -> socket2-0.3.9.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3f0a2dcec7d3a0e513f41e0fc23254b0
diff --git a/metadata/md5-cache/dev-rust/spin-0.4.10 b/metadata/md5-cache/dev-rust/spin-0.4.10
index 4fbf437..0b6330c 100644
--- a/metadata/md5-cache/dev-rust/spin-0.4.10
+++ b/metadata/md5-cache/dev-rust/spin-0.4.10
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Synchronization primitives based on spinning.
 EAPI=6
 HOMEPAGE=https://github.com/mvdnes/spin-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.10/r0
 SRC_URI=https://crates.io/api/v1/crates/spin/0.4.10/download -> spin-0.4.10.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fa6501919b9ea0b410fd6b597d0ede4f
diff --git a/metadata/md5-cache/dev-rust/spin-0.5.2 b/metadata/md5-cache/dev-rust/spin-0.5.2
index 504e8e5..c781eb8 100644
--- a/metadata/md5-cache/dev-rust/spin-0.5.2
+++ b/metadata/md5-cache/dev-rust/spin-0.5.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Synchronization primitives based on spinning.
 EAPI=6
 HOMEPAGE=https://github.com/mvdnes/spin-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.2/r0
 SRC_URI=https://crates.io/api/v1/crates/spin/0.5.2/download -> spin-0.5.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fa6501919b9ea0b410fd6b597d0ede4f
diff --git a/metadata/md5-cache/dev-rust/stable_deref_trait-1.1.1 b/metadata/md5-cache/dev-rust/stable_deref_trait-1.1.1
index 2493dd2..8e1874d 100644
--- a/metadata/md5-cache/dev-rust/stable_deref_trait-1.1.1
+++ b/metadata/md5-cache/dev-rust/stable_deref_trait-1.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=This crate defines an unsafe marker trait, StableDeref, for container types which deref to a fixed address which is valid even when the containing type is moved.
 EAPI=6
 HOMEPAGE=https://github.com/storyyeller/stable_deref_trait
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/stable_deref_trait/1.1.1/download -> stable_deref_trait-1.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=45ec6aa0ba5cd97b2d83e46f77b22130
diff --git a/metadata/md5-cache/dev-rust/stderrlog-0.5.0 b/metadata/md5-cache/dev-rust/stderrlog-0.5.0
index f5539bc..b3066d4 100644
--- a/metadata/md5-cache/dev-rust/stderrlog-0.5.0
+++ b/metadata/md5-cache/dev-rust/stderrlog-0.5.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/atty-0.2.6:= <dev-rust/atty-0.3.0 >=dev-rust/chrono-0.4.10:= <dev-rust/chrono-0.5.0 >=dev-rust/log-0.4.11:= <dev-rust/log-0.5.0 >=dev-rust/termcolor-1.1:= <dev-rust/termcolor-1.2 >=dev-rust/thread_local-1.0:= <dev-rust/thread_local-1.1 >=virtual/rust-1.39.0:=
 DESCRIPTION=Logger that aims to provide a simple case of env_logger that just logs to stderr based on verbosity
 EAPI=7
 HOMEPAGE=https://github.com/cardoe/stderrlog-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.0/r0
 SRC_URI=https://crates.io/api/v1/crates/stderrlog/0.5.0/download -> stderrlog-0.5.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=24f92316576d5f8686f970b976e5f727
diff --git a/metadata/md5-cache/dev-rust/stdweb-0.4.20 b/metadata/md5-cache/dev-rust/stdweb-0.4.20
index 820ba6d..bc125ef 100644
--- a/metadata/md5-cache/dev-rust/stdweb-0.4.20
+++ b/metadata/md5-cache/dev-rust/stdweb-0.4.20
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty stdweb crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.20/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/string-0.2.1 b/metadata/md5-cache/dev-rust/string-0.2.1
index de6bfff..9e7d580 100644
--- a/metadata/md5-cache/dev-rust/string-0.2.1
+++ b/metadata/md5-cache/dev-rust/string-0.2.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bytes-0.4:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A UTF-8 encoded string with configurable byte storage.
 EAPI=6
 HOMEPAGE=https://github.com/carllerche/string
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.1/r0
 SRC_URI=https://crates.io/api/v1/crates/string/0.2.1/download -> string-0.2.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3c17b654150aaf83969149884f191bdf
diff --git a/metadata/md5-cache/dev-rust/strsim-0.8.0 b/metadata/md5-cache/dev-rust/strsim-0.8.0
index 185a2a9..cf4938c 100644
--- a/metadata/md5-cache/dev-rust/strsim-0.8.0
+++ b/metadata/md5-cache/dev-rust/strsim-0.8.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Implementations of string similarity metrics.
 EAPI=6
 HOMEPAGE=https://github.com/dguo/strsim-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.0/r0
 SRC_URI=https://crates.io/api/v1/crates/strsim/0.8.0/download -> strsim-0.8.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f2a5717f1ffb813878d0dc6bed348dd2
diff --git a/metadata/md5-cache/dev-rust/strsim-0.8.0-r1 b/metadata/md5-cache/dev-rust/strsim-0.8.0-r1
index 25767a6..32e3409 100644
--- a/metadata/md5-cache/dev-rust/strsim-0.8.0-r1
+++ b/metadata/md5-cache/dev-rust/strsim-0.8.0-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Implementations of string similarity metrics.
 EAPI=6
 HOMEPAGE=https://github.com/dguo/strsim-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.0/r1
 SRC_URI=https://crates.io/api/v1/crates/strsim/0.8.0/download -> strsim-0.8.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f2a5717f1ffb813878d0dc6bed348dd2
diff --git a/metadata/md5-cache/dev-rust/structopt-0.3.20 b/metadata/md5-cache/dev-rust/structopt-0.3.20
index af0249c..768557b 100644
--- a/metadata/md5-cache/dev-rust/structopt-0.3.20
+++ b/metadata/md5-cache/dev-rust/structopt-0.3.20
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/clap-2.33.0:= <dev-rust/clap-3.0.0 >=dev-rust/lazy_static-1.4.0:= <dev-rust/lazy_static-2.0.0 =dev-rust/structopt-derive-0.4.13:= =dev-rust/paw-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Parse command line arguments by defining a struct.
 EAPI=7
 HOMEPAGE=https://github.com/TeXitoi/structopt
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.20/r0
 SRC_URI=https://crates.io/api/v1/crates/structopt/0.3.20/download -> structopt-0.3.20.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=e03610180ccf312d88c770782d844154
diff --git a/metadata/md5-cache/dev-rust/structopt-derive-0.4.13 b/metadata/md5-cache/dev-rust/structopt-derive-0.4.13
index 4245c36..fdb97474 100644
--- a/metadata/md5-cache/dev-rust/structopt-derive-0.4.13
+++ b/metadata/md5-cache/dev-rust/structopt-derive-0.4.13
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/heck-0.3*:= =dev-rust/proc-macro2-1*:= =dev-rust/proc-macro-error-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Parse command line argument by defining a struct, derive crate
 EAPI=7
 HOMEPAGE=https://github.com/TeXitoi/structopt
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.13/r0
 SRC_URI=https://crates.io/api/v1/crates/structopt-derive/0.4.13/download -> structopt-derive-0.4.13.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=cf83464df47082c784dae2bf8054d4aa
diff --git a/metadata/md5-cache/dev-rust/sval-1.0.0 b/metadata/md5-cache/dev-rust/sval-1.0.0
index 14beb70..fa33d8e 100644
--- a/metadata/md5-cache/dev-rust/sval-1.0.0
+++ b/metadata/md5-cache/dev-rust/sval-1.0.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty sval crate
 EAPI=7
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=eebfd99c03729092f422b6acfa37c16c
diff --git a/metadata/md5-cache/dev-rust/syn-0.15.21 b/metadata/md5-cache/dev-rust/syn-0.15.21
deleted file mode 100644
index 8876b64..0000000
--- a/metadata/md5-cache/dev-rust/syn-0.15.21
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/proc-macro2-0.4.4:= >=dev-rust/quote-0.6:= >=dev-rust/rayon-1.0:= =dev-rust/unicode-xid-0.1*:= >=dev-rust/walkdir-2.1:= >=dev-rust/regex-1.0:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Parser for rust source code
-EAPI=6
-HOMEPAGE=https://github.com/dtolnay/syn
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.15.21/r0
-SRC_URI=https://crates.io/api/v1/crates/syn/0.15.21/download -> syn-0.15.21.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=78e51cd9df2e485462b966c3fb41f250
diff --git a/metadata/md5-cache/dev-rust/syn-0.15.26 b/metadata/md5-cache/dev-rust/syn-0.15.26
index c56fa2c..450582c 100644
--- a/metadata/md5-cache/dev-rust/syn-0.15.26
+++ b/metadata/md5-cache/dev-rust/syn-0.15.26
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/proc-macro2-0.4.4:= =dev-rust/quote-0.6*:= =dev-rust/rayon-1.0*:= =dev-rust/unicode-xid-0.1*:= >=dev-rust/walkdir-2.1.0:= =dev-rust/regex-1.0*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Parser for rust source code
 EAPI=6
 HOMEPAGE=https://github.com/dtolnay/syn
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.15.26/r0
 SRC_URI=https://crates.io/api/v1/crates/syn/0.15.26/download -> syn-0.15.26.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=99ddca19c41402005ca371b43fe1f7f9
diff --git a/metadata/md5-cache/dev-rust/syn-0.15.26-r1 b/metadata/md5-cache/dev-rust/syn-0.15.26-r1
new file mode 100644
index 0000000..9101b1d
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/syn-0.15.26-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/proc-macro2-0.4.4:= <dev-rust/proc-macro2-0.5.0 =dev-rust/quote-0.6*:= =dev-rust/unicode-xid-0.1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Parser for rust source code
+EAPI=7
+HOMEPAGE=https://github.com/dtolnay/syn
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/proc-macro2-0.4.4:= <dev-rust/proc-macro2-0.5.0 =dev-rust/quote-0.6*:= =dev-rust/unicode-xid-0.1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.15.26/r1
+SRC_URI=https://crates.io/api/v1/crates/syn/0.15.26/download -> syn-0.15.26.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5d192d9c67f8278e4be07e857fd485c1
diff --git a/metadata/md5-cache/dev-rust/syn-1.0.38 b/metadata/md5-cache/dev-rust/syn-1.0.38
deleted file mode 100644
index afb8de4..0000000
--- a/metadata/md5-cache/dev-rust/syn-1.0.38
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/proc-macro2-1.0.13:= <dev-rust/proc-macro2-2 =dev-rust/quote-1*:= =dev-rust/unicode-xid-0.2*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Parser for rust source code
-EAPI=7
-HOMEPAGE=https://github.com/dtolnay/syn
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.38/r0
-SRC_URI=https://crates.io/api/v1/crates/syn/1.0.38/download -> syn-1.0.38.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=57d7fcf07b316da230bb6ac8d1d15cfa
diff --git a/metadata/md5-cache/dev-rust/syn-1.0.5 b/metadata/md5-cache/dev-rust/syn-1.0.5
deleted file mode 100644
index 921dbaf..0000000
--- a/metadata/md5-cache/dev-rust/syn-1.0.5
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/rayon-1*:= =dev-rust/unicode-xid-0.2*:= >=dev-rust/walkdir-2.1.0:= <dev-rust/walkdir-3 =dev-rust/regex-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Parser for rust source code
-EAPI=6
-HOMEPAGE=https://github.com/dtolnay/syn
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.5/r0
-SRC_URI=https://crates.io/api/v1/crates/syn/1.0.5/download -> syn-1.0.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=ba1f2f0ba96b85c043ca0a665213778c
diff --git a/metadata/md5-cache/dev-rust/syn-1.0.58 b/metadata/md5-cache/dev-rust/syn-1.0.58
new file mode 100644
index 0000000..241d32d
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/syn-1.0.58
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/proc-macro2-1.0.13:= <dev-rust/proc-macro2-2 =dev-rust/quote-1*:= =dev-rust/unicode-xid-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Parser for rust source code
+EAPI=7
+HOMEPAGE=https://github.com/dtolnay/syn
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.58/r0
+SRC_URI=https://crates.io/api/v1/crates/syn/1.0.58/download -> syn-1.0.58.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=57d7fcf07b316da230bb6ac8d1d15cfa
diff --git a/metadata/md5-cache/dev-rust/syn-1.0.69 b/metadata/md5-cache/dev-rust/syn-1.0.69
new file mode 100644
index 0000000..de161bd
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/syn-1.0.69
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/proc-macro2-1.0.26:= <dev-rust/proc-macro2-2 >=dev-rust/quote-1.0:= <dev-rust/quote-2 >=dev-rust/unicode-xid-0.2:= <dev-rust/unicode-xid-0.3 >=virtual/rust-1.39.0:=
+DESCRIPTION=Parser for Rust source code
+EAPI=7
+HOMEPAGE=https://crates.io/crates/syn
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/proc-macro2-1.0.26:= <dev-rust/proc-macro2-2 >=dev-rust/quote-1.0:= <dev-rust/quote-2 >=dev-rust/unicode-xid-0.2:= <dev-rust/unicode-xid-0.3
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.69/r0
+SRC_URI=https://crates.io/api/v1/crates/syn/1.0.69/download -> syn-1.0.69.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c8ed67637a24d3a40df46607b1821e0c
diff --git a/metadata/md5-cache/dev-rust/syn-1.0.72 b/metadata/md5-cache/dev-rust/syn-1.0.72
new file mode 100644
index 0000000..769db9703
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/syn-1.0.72
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/proc-macro2-1.0.26:= <dev-rust/proc-macro2-2.0.0 =dev-rust/quote-1*:= =dev-rust/unicode-xid-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Parser for Rust source code
+EAPI=7
+HOMEPAGE=https://crates.io/crates/syn
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/proc-macro2-1.0.26:= <dev-rust/proc-macro2-2.0.0 =dev-rust/quote-1*:= =dev-rust/unicode-xid-0.2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.72/r0
+SRC_URI=https://crates.io/api/v1/crates/syn/1.0.72/download -> syn-1.0.72.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6da94011eb02eebf871ebb2f2b6a5616
diff --git a/metadata/md5-cache/dev-rust/sync-0.1.0-r10 b/metadata/md5-cache/dev-rust/sync-0.1.0-r10
deleted file mode 100644
index e495fb6..0000000
--- a/metadata/md5-cache/dev-rust/sync-0.1.0-r10
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Containing a type sync::Mutex which wraps the standard library Mutex and mirrors the same methods
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/master/crosvm/sync
-IUSE=test cros_host cros_workon_tree_28852483b877a051ca092e4b811f8831872c49b0 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!!<=dev-rust/sync-0.1.0-r6
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r10
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=09e27dbfcef7aec75df1c3848c9e24ad
diff --git a/metadata/md5-cache/dev-rust/sync-0.1.0-r11 b/metadata/md5-cache/dev-rust/sync-0.1.0-r11
new file mode 100644
index 0000000..0f080b3
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/sync-0.1.0-r11
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Containing a type sync::Mutex which wraps the standard library Mutex and mirrors the same methods
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/sync
+IUSE=test cros_host cros_workon_tree_28852483b877a051ca092e4b811f8831872c49b0 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!!<=dev-rust/sync-0.1.0-r6
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r11
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f1c91aaeffc832c350e2e141bfe84723
diff --git a/metadata/md5-cache/dev-rust/sync-9999 b/metadata/md5-cache/dev-rust/sync-9999
index bbce7b2..c871c17 100644
--- a/metadata/md5-cache/dev-rust/sync-9999
+++ b/metadata/md5-cache/dev-rust/sync-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Containing a type sync::Mutex which wraps the standard library Mutex and mirrors the same methods
 EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/master/crosvm/sync
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/sync
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=!!<=dev-rust/sync-0.1.0-r6
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e7f57f25b63101137db5fc3fa289f063
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0bb17d1cbed697b315b0c2d1e7cebf9c
diff --git a/metadata/md5-cache/dev-rust/synstructure-0.10.1 b/metadata/md5-cache/dev-rust/synstructure-0.10.1
index 3398175..1b44450 100644
--- a/metadata/md5-cache/dev-rust/synstructure-0.10.1
+++ b/metadata/md5-cache/dev-rust/synstructure-0.10.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-0.4*:= =dev-rust/quote-0.6*:= =dev-rust/syn-0.15*:= =dev-rust/unicode-xid-0.1*:= =dev-rust/synstructure_test_traits-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides helper types for matching against enum variants, and extracting bindings to each of the fields in the deriving Struct or Enum in a generic way
 EAPI=6
 HOMEPAGE=https://crates.io/crates/synstructure
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.10.1/r0
 SRC_URI=https://crates.io/api/v1/crates/synstructure/0.10.1/download -> synstructure-0.10.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ff5ee63226ad0d5fdacd731e064c8606
diff --git a/metadata/md5-cache/dev-rust/synstructure-0.12.4 b/metadata/md5-cache/dev-rust/synstructure-0.12.4
new file mode 100644
index 0000000..8e25279
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/synstructure-0.12.4
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= =dev-rust/unicode-xid-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=This crate provides helper types for matching against enum variants, and extracting bindings to each of the fields in the deriving Struct or Enum in a generic way
+EAPI=7
+HOMEPAGE=https://crates.io/crates/synstructure
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= =dev-rust/unicode-xid-0.2*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.12.4/r0
+SRC_URI=https://crates.io/api/v1/crates/synstructure/0.12.4/download -> synstructure-0.12.4.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c2e1414403da5267fc49ce509106320b
diff --git a/metadata/md5-cache/dev-rust/synstructure_test_traits-0.1.0 b/metadata/md5-cache/dev-rust/synstructure_test_traits-0.1.0
index 7a9622b..2aa1968 100644
--- a/metadata/md5-cache/dev-rust/synstructure_test_traits-0.1.0
+++ b/metadata/md5-cache/dev-rust/synstructure_test_traits-0.1.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty synstructure_test_traits crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/sys-info-0.5.7 b/metadata/md5-cache/dev-rust/sys-info-0.5.7
index 56c967b..e3d9c3f 100644
--- a/metadata/md5-cache/dev-rust/sys-info-0.5.7
+++ b/metadata/md5-cache/dev-rust/sys-info-0.5.7
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2:= =dev-rust/cc-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Get system information in Rust
 EAPI=6
 HOMEPAGE=https://github.com/FillZpp/sys-info-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.7/r0
 SRC_URI=https://crates.io/api/v1/crates/sys-info/0.5.7/download -> sys-info-0.5.7.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3637c53dac713437c2e85a33b9e82e16
diff --git a/metadata/md5-cache/dev-rust/sys_util-0.1.0-r128 b/metadata/md5-cache/dev-rust/sys_util-0.1.0-r128
deleted file mode 100644
index f76c677..0000000
--- a/metadata/md5-cache/dev-rust/sys_util-0.1.0-r128
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=sys-libs/libcap:= !!<=dev-rust/sys_util-0.1.0-r60 =dev-rust/android_log-sys-0.2*:= >=dev-rust/libc-0.2.44:= =dev-rust/quote-1*:= =dev-rust/proc-macro2-1*:= =dev-rust/syn-1*:= dev-rust/data_model:= dev-rust/sync:= dev-rust/syscall_defines:= dev-rust/tempfile:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Small system utility modules for usage by other modules.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/master/crosvm/sys_util
-IUSE=test cros_host cros_workon_tree_8ebf630e48c208771bb2ed6a0ab1501db6df2ff2 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-libs/libcap:= !!<=dev-rust/sys_util-0.1.0-r60
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r128
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0478a8ff4d7ccb763b1c67b7b630aa69
diff --git a/metadata/md5-cache/dev-rust/sys_util-0.1.0-r161 b/metadata/md5-cache/dev-rust/sys_util-0.1.0-r161
new file mode 100644
index 0000000..06289f8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/sys_util-0.1.0-r161
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/android_log-sys-0.2*:= dev-rust/assertions:= dev-rust/data_model:= >=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3.0 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/serde-1*:= =dev-rust/serde_json-1*:= =dev-rust/syn-1*:= dev-rust/sync:= dev-rust/tempfile:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 sys-libs/libcap:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Small system utility modules for usage by other modules.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/sys_util
+IUSE=test cros_host cros_workon_tree_45225500d49ffe6b0cc50397b01585a13c61e9cc cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND==dev-rust/android_log-sys-0.2*:= dev-rust/assertions:= dev-rust/data_model:= >=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3.0 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/serde-1*:= =dev-rust/serde_json-1*:= =dev-rust/syn-1*:= dev-rust/sync:= dev-rust/tempfile:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 sys-libs/libcap:= !!<=dev-rust/sys_util-0.1.0-r60
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r161
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=46786446800d7be4397083b0042ad131
diff --git a/metadata/md5-cache/dev-rust/sys_util-9999 b/metadata/md5-cache/dev-rust/sys_util-9999
index 498631d..5009f0e 100644
--- a/metadata/md5-cache/dev-rust/sys_util-9999
+++ b/metadata/md5-cache/dev-rust/sys_util-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=sys-libs/libcap:= !!<=dev-rust/sys_util-0.1.0-r60 =dev-rust/android_log-sys-0.2*:= >=dev-rust/libc-0.2.44:= =dev-rust/quote-1*:= =dev-rust/proc-macro2-1*:= =dev-rust/syn-1*:= dev-rust/data_model:= dev-rust/sync:= dev-rust/syscall_defines:= dev-rust/tempfile:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/android_log-sys-0.2*:= dev-rust/assertions:= dev-rust/data_model:= >=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3.0 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/serde-1*:= =dev-rust/serde_json-1*:= =dev-rust/syn-1*:= dev-rust/sync:= dev-rust/tempfile:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 sys-libs/libcap:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Small system utility modules for usage by other modules.
 EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/master/crosvm/sys_util
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/sys_util
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=sys-libs/libcap:= !!<=dev-rust/sys_util-0.1.0-r60
+RDEPEND==dev-rust/android_log-sys-0.2*:= dev-rust/assertions:= dev-rust/data_model:= >=dev-rust/libc-0.2.93:= <dev-rust/libc-0.3.0 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/serde-1*:= =dev-rust/serde_json-1*:= =dev-rust/syn-1*:= dev-rust/sync:= dev-rust/tempfile:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 sys-libs/libcap:= !!<=dev-rust/sys_util-0.1.0-r60
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=35b655377e94ccb9cbb244872e1047fa
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=01ce7a95a085b2201107d0ca707662bb
diff --git a/metadata/md5-cache/dev-rust/syscall_defines-0.1.0-r9 b/metadata/md5-cache/dev-rust/syscall_defines-0.1.0-r9
deleted file mode 100644
index cf8b552..0000000
--- a/metadata/md5-cache/dev-rust/syscall_defines-0.1.0-r9
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Linux syscall defines.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/syscall_defines
-IUSE=test cros_host cros_workon_tree_9add594cd5c861053853b840d374d4e835d5d734 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!!<=dev-rust/syscall_defines-0.1.0-r2
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r9
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b379c26df2b9f91162473b7dda108130
diff --git a/metadata/md5-cache/dev-rust/syscall_defines-9999 b/metadata/md5-cache/dev-rust/syscall_defines-9999
deleted file mode 100644
index 54b98cc..0000000
--- a/metadata/md5-cache/dev-rust/syscall_defines-9999
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Linux syscall defines.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/syscall_defines
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!!<=dev-rust/syscall_defines-0.1.0-r2
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=db4093742356746869a3f0aa1b9951a7
diff --git a/metadata/md5-cache/dev-rust/syslog-4.0.1-r1 b/metadata/md5-cache/dev-rust/syslog-4.0.1-r1
index 21365f1..96dbf49 100644
--- a/metadata/md5-cache/dev-rust/syslog-4.0.1-r1
+++ b/metadata/md5-cache/dev-rust/syslog-4.0.1-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/error-chain-0.11.0:= >=dev-rust/libc-0.2.0:= >=dev-rust/log-0.4.1:= >=dev-rust/time-0.1.0:= >=dev-rust/unix_socket-0.5.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Send log messages to syslog.
 EAPI=7
 HOMEPAGE=https://github.com/Geal/rust-syslog
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=4.0.1/r1
 SRC_URI=https://crates.io/api/v1/crates/syslog/4.0.1/download -> syslog-4.0.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d687fec7f98917aff922afd0ac9fda2c
diff --git a/metadata/md5-cache/dev-rust/system_api-0.24.53-r10 b/metadata/md5-cache/dev-rust/system_api-0.24.53-r10
deleted file mode 100644
index a228ed9..0000000
--- a/metadata/md5-cache/dev-rust/system_api-0.24.53-r10
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=!chromeos-base/system_api-rust dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Chrome OS system API D-Bus bindings for Rust.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/system_api/
-IUSE=cros_host cros_workon_tree_fa94807d1776021aeabe89544645b6660a98dc16_a0d8550678a1ed2a4ab62782049032a024bf40df_be11cc324e5a3144545e14f1790627d38d05440a_98dba68cd28c82190ee09efa097e811530139082 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!chromeos-base/system_api-rust
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.24.53-r10
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=23d796f980f646b35edac01a07c6dc5f
diff --git a/metadata/md5-cache/dev-rust/system_api-0.24.53-r186 b/metadata/md5-cache/dev-rust/system_api-0.24.53-r186
new file mode 100644
index 0000000..dd19be6
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/system_api-0.24.53-r186
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Chrome OS system API D-Bus bindings for Rust.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/system_api/
+IUSE=cros_host cros_workon_tree_17b97c5c2ddeb8fe389f24ed79e581941c90795b_a0d8550678a1ed2a4ab62782049032a024bf40df_c3e1fc5061dcbd62acb501f21d7a3794f41b2160_2c7ac844cf2db48eca0465be0c5ada91c108f177_3b632cb1cbc6da698a355e078bfc220f0461deee cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= !chromeos-base/system_api-rust
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.24.53-r186
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2f8141b10576fdb170ef316f09f3a538
diff --git a/metadata/md5-cache/dev-rust/system_api-9999 b/metadata/md5-cache/dev-rust/system_api-9999
index 1396701..fab0e7e 100644
--- a/metadata/md5-cache/dev-rust/system_api-9999
+++ b/metadata/md5-cache/dev-rust/system_api-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=!chromeos-base/system_api-rust dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Chrome OS system API D-Bus bindings for Rust.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/system_api/
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=!chromeos-base/system_api-rust
+RDEPEND=dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= !chromeos-base/system_api-rust
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c20efa18558c6d8953a313d376ebcca3
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7c66ccac2a419c44c10c000c15aee51c
diff --git a/metadata/md5-cache/dev-rust/tempdir-0.3.7 b/metadata/md5-cache/dev-rust/tempdir-0.3.7
index a56c99e..2d8d61b 100644
--- a/metadata/md5-cache/dev-rust/tempdir-0.3.7
+++ b/metadata/md5-cache/dev-rust/tempdir-0.3.7
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/rand-0.4*:= =dev-rust/remove_dir_all-0.5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust library for creating a temporary directory and deleting its entire contents when the directory is dropped.
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang/tempdir
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.7/r0
 SRC_URI=https://crates.io/api/v1/crates/tempdir/0.3.7/download -> tempdir-0.3.7.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=5645057a0eb0b3511cac4aef9657f5b0
diff --git a/metadata/md5-cache/dev-rust/tempdir-0.3.7-r2 b/metadata/md5-cache/dev-rust/tempdir-0.3.7-r2
index fb9bde5..d0b7a67 100644
--- a/metadata/md5-cache/dev-rust/tempdir-0.3.7-r2
+++ b/metadata/md5-cache/dev-rust/tempdir-0.3.7-r2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/rand-0.4*:= =dev-rust/remove_dir_all-0.5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust library for creating a temporary directory and deleting its entire contents when the directory is dropped.
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang/tempdir
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.7/r2
 SRC_URI=https://crates.io/api/v1/crates/tempdir/0.3.7/download -> tempdir-0.3.7.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=5645057a0eb0b3511cac4aef9657f5b0
diff --git a/metadata/md5-cache/dev-rust/tempfile-3.0.7-r10 b/metadata/md5-cache/dev-rust/tempfile-3.0.7-r10
new file mode 100644
index 0000000..01d1b26
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tempfile-3.0.7-r10
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/cfg-if-0.1*:= >=dev-rust/libc-0.2.27:= =dev-rust/rand-0.6*:= =dev-rust/redox_syscall-0.1*:= =dev-rust/remove_dir_all-0.5*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A library for managing temporary files and directories
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/tempfile
+IUSE=test cros_host cros_workon_tree_4d1019d4ba75c8d6c18310a8bce67bcda0eceab5 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND==dev-rust/cfg-if-0.1*:= >=dev-rust/libc-0.2.27:= =dev-rust/rand-0.6*:= =dev-rust/redox_syscall-0.1*:= =dev-rust/remove_dir_all-0.5*:= =dev-rust/winapi-0.3*:= !!<=dev-rust/tempfile-3.0.7-r2
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/3.0.7-r10
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5d3cf6b8d1e784acc43ca7d34fec4937
diff --git a/metadata/md5-cache/dev-rust/tempfile-3.0.7-r8 b/metadata/md5-cache/dev-rust/tempfile-3.0.7-r8
deleted file mode 100644
index 8350545..0000000
--- a/metadata/md5-cache/dev-rust/tempfile-3.0.7-r8
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/cfg-if-0.1*:= >=dev-rust/libc-0.2.27:= =dev-rust/rand-0.6*:= =dev-rust/redox_syscall-0.1*:= =dev-rust/remove_dir_all-0.5*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=A library for managing temporary files and directories
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/tempfile
-IUSE=test cros_host cros_workon_tree_4d1019d4ba75c8d6c18310a8bce67bcda0eceab5 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!!<=dev-rust/tempfile-3.0.7-r2
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/3.0.7-r8
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e26c3cc5c2d63068ee21249e8ac89e62
diff --git a/metadata/md5-cache/dev-rust/tempfile-9999 b/metadata/md5-cache/dev-rust/tempfile-9999
index 4abed8c..8bf334f 100644
--- a/metadata/md5-cache/dev-rust/tempfile-9999
+++ b/metadata/md5-cache/dev-rust/tempfile-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/cfg-if-0.1*:= >=dev-rust/libc-0.2.27:= =dev-rust/rand-0.6*:= =dev-rust/redox_syscall-0.1*:= =dev-rust/remove_dir_all-0.5*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A library for managing temporary files and directories
 EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/+/HEAD/crosvm/tempfile
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crosvm/+/HEAD/tempfile
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=!!<=dev-rust/tempfile-3.0.7-r2
+RDEPEND==dev-rust/cfg-if-0.1*:= >=dev-rust/libc-0.2.27:= =dev-rust/rand-0.6*:= =dev-rust/redox_syscall-0.1*:= =dev-rust/remove_dir_all-0.5*:= =dev-rust/winapi-0.3*:= !!<=dev-rust/tempfile-3.0.7-r2
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=05189ed3259d605374136878df2eb734
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a00f15a527123cda558b162b7be622b9
diff --git a/metadata/md5-cache/dev-rust/term_size-0.3.0 b/metadata/md5-cache/dev-rust/term_size-0.3.0
index 76dc37a..1b065c3 100644
--- a/metadata/md5-cache/dev-rust/term_size-0.3.0
+++ b/metadata/md5-cache/dev-rust/term_size-0.3.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty term_size crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=611c760b759231009c177190d157e6d3
diff --git a/metadata/md5-cache/dev-rust/termcolor-0.3.6 b/metadata/md5-cache/dev-rust/termcolor-0.3.6
index 062e0d9..efad663 100644
--- a/metadata/md5-cache/dev-rust/termcolor-0.3.6
+++ b/metadata/md5-cache/dev-rust/termcolor-0.3.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/wincolor-0.1.6:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A simple cross platform library for writing colored text to a terminal.
 EAPI=6
 HOMEPAGE=https://github.com/BurntSushi/termcolor
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.6/r0
 SRC_URI=https://crates.io/api/v1/crates/termcolor/0.3.6/download -> termcolor-0.3.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=71a7755655a9ec37cc855c112e23c81b
diff --git a/metadata/md5-cache/dev-rust/termcolor-1.0.4 b/metadata/md5-cache/dev-rust/termcolor-1.0.4
deleted file mode 100644
index d94bed4..0000000
--- a/metadata/md5-cache/dev-rust/termcolor-1.0.4
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/wincolor-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=A simple cross platform library for writing colored text to a terminal.
-EAPI=6
-HOMEPAGE=https://github.com/BurntSushi/termcolor
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.0.4/r0
-SRC_URI=https://crates.io/api/v1/crates/termcolor/1.0.4/download -> termcolor-1.0.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a33c0cb402f99ca1bea751267cf049c2
diff --git a/metadata/md5-cache/dev-rust/termcolor-1.1.0 b/metadata/md5-cache/dev-rust/termcolor-1.1.0
deleted file mode 100644
index a5abe29..0000000
--- a/metadata/md5-cache/dev-rust/termcolor-1.1.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/winapi-util-0.1.3:= <dev-rust/winapi-util-0.2.0 >=virtual/rust-1.39.0:=
-DESCRIPTION=A simple cross platform library for writing colored text to a terminal.
-EAPI=6
-HOMEPAGE=https://github.com/BurntSushi/termcolor
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=1.1.0/r0
-SRC_URI=https://crates.io/api/v1/crates/termcolor/1.1.0/download -> termcolor-1.1.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1564d9ee467038c0a6ac441f0674e3bf
diff --git a/metadata/md5-cache/dev-rust/termcolor-1.1.2 b/metadata/md5-cache/dev-rust/termcolor-1.1.2
new file mode 100644
index 0000000..7983737
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/termcolor-1.1.2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=A simple cross platform library for writing colored text to a terminal.
+EAPI=7
+HOMEPAGE=https://github.com/BurntSushi/termcolor
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.1.2/r0
+SRC_URI=https://crates.io/api/v1/crates/termcolor/1.1.2/download -> termcolor-1.1.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=953ed7107cdf579f6ac70c33337ee432
diff --git a/metadata/md5-cache/dev-rust/termion-1.5.1 b/metadata/md5-cache/dev-rust/termion-1.5.1
index 1e516c1..37fce8e 100644
--- a/metadata/md5-cache/dev-rust/termion-1.5.1
+++ b/metadata/md5-cache/dev-rust/termion-1.5.1
@@ -1,13 +1,14 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2.8:= >=dev-rust/redox_syscall-0.1.0:= >=dev-rust/redox_termios-0.1.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A bindless library for manipulating terminals.
-EAPI=6
+EAPI=7
 HOMEPAGE=https://gitlab.redox-os.org/redox-os/termion
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/libc-0.2.8:= >=dev-rust/redox_syscall-0.1.0:= >=dev-rust/redox_termios-0.1.0:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.5.1/r0
 SRC_URI=https://crates.io/api/v1/crates/termion/1.5.1/download -> termion-1.5.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=f9354af9829acd07cb8cbc4cedf1941b
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9da6dc2c3bdc48e4593df66c4a339c6a
diff --git a/metadata/md5-cache/dev-rust/termion-1.5.1-r1 b/metadata/md5-cache/dev-rust/termion-1.5.1-r1
new file mode 100644
index 0000000..5ea0335
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/termion-1.5.1-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2.8:= >=dev-rust/redox_syscall-0.1.0:= >=dev-rust/redox_termios-0.1.0:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A bindless library for manipulating terminals.
+EAPI=7
+HOMEPAGE=https://gitlab.redox-os.org/redox-os/termion
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/libc-0.2.8:= >=dev-rust/redox_syscall-0.1.0:= >=dev-rust/redox_termios-0.1.0:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.5.1/r1
+SRC_URI=https://crates.io/api/v1/crates/termion/1.5.1/download -> termion-1.5.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9da6dc2c3bdc48e4593df66c4a339c6a
diff --git a/metadata/md5-cache/dev-rust/textwrap-0.11.0 b/metadata/md5-cache/dev-rust/textwrap-0.11.0
index 897bab9..44217fb 100644
--- a/metadata/md5-cache/dev-rust/textwrap-0.11.0
+++ b/metadata/md5-cache/dev-rust/textwrap-0.11.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/unicode-width-0.1*:= dev-rust/hyphenation:= dev-rust/term_size:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Word wrapping text
 EAPI=6
 HOMEPAGE=https://github.com/mgeisler/textwrap
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.11.0/r0
 SRC_URI=https://crates.io/api/v1/crates/textwrap/0.11.0/download -> textwrap-0.11.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=cebf716bd89565e88e958c15b2bce15a
diff --git a/metadata/md5-cache/dev-rust/thiserror-1.0.20 b/metadata/md5-cache/dev-rust/thiserror-1.0.20
index f59aa81..683bea4 100644
--- a/metadata/md5-cache/dev-rust/thiserror-1.0.20
+++ b/metadata/md5-cache/dev-rust/thiserror-1.0.20
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=~dev-rust/thiserror-impl-1.0.20:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A convenient derive macro for the standard library's std::error::Error trait.
 EAPI=7
 HOMEPAGE=https://github.com/dtolnay/thiserror
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.20/r0
 SRC_URI=https://crates.io/api/v1/crates/thiserror/1.0.20/download -> thiserror-1.0.20.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=0680505ed96d3b01a4724e61bda744d7
diff --git a/metadata/md5-cache/dev-rust/thiserror-impl-1.0.20 b/metadata/md5-cache/dev-rust/thiserror-impl-1.0.20
index fc48508..f2b1d49 100644
--- a/metadata/md5-cache/dev-rust/thiserror-impl-1.0.20
+++ b/metadata/md5-cache/dev-rust/thiserror-impl-1.0.20
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= >=dev-rust/syn-1.0.11:= <dev-rust/syn-2.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Implementation detail of the thiserror crate
 EAPI=7
 HOMEPAGE=https://github.com/thiserror/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.20/r0
 SRC_URI=https://crates.io/api/v1/crates/thiserror-impl/1.0.20/download -> thiserror-impl-1.0.20.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=1bd5fb985067c60eb2b257d3d107f071
diff --git a/metadata/md5-cache/dev-rust/thread-id-3.3.0 b/metadata/md5-cache/dev-rust/thread-id-3.3.0
index 1a07d55..d053fc7 100644
--- a/metadata/md5-cache/dev-rust/thread-id-3.3.0
+++ b/metadata/md5-cache/dev-rust/thread-id-3.3.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/libc-0.2*:= =dev-rust/redox_syscall-0.1*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Get a unique ID for the current thread in Rust
 EAPI=6
 HOMEPAGE=https://github.com/ruuda/thread-id
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=3.3.0/r0
 SRC_URI=https://crates.io/api/v1/crates/thread-id/3.3.0/download -> thread-id-3.3.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=2e841f56eefde6a97112215e5ca5f3c7
diff --git a/metadata/md5-cache/dev-rust/thread_local-0.3.6 b/metadata/md5-cache/dev-rust/thread_local-0.3.6
index 21fc7ba..09bffe3 100644
--- a/metadata/md5-cache/dev-rust/thread_local-0.3.6
+++ b/metadata/md5-cache/dev-rust/thread_local-0.3.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/lazy_static-1.0.0:= <dev-rust/lazy_static-2.0.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=Per-object thread-local storage.
 EAPI=6
 HOMEPAGE=https://docs.rs/crate/thread_local/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.6/r0
 SRC_URI=https://crates.io/api/v1/crates/thread_local/0.3.6/download -> thread_local-0.3.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=46aee761516e1d31a536c048573633aa
diff --git a/metadata/md5-cache/dev-rust/thread_local-1.0.1 b/metadata/md5-cache/dev-rust/thread_local-1.0.1
index 1d7e586d..6c2c625 100644
--- a/metadata/md5-cache/dev-rust/thread_local-1.0.1
+++ b/metadata/md5-cache/dev-rust/thread_local-1.0.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/lazy_static-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Per-object thread-local storage.
 EAPI=7
 HOMEPAGE=https://github.com/Amanieu/thread_local-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.1/r0
 SRC_URI=https://crates.io/api/v1/crates/thread_local/1.0.1/download -> thread_local-1.0.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ea20ca3fc81e5693b5ec223924647f8d
diff --git a/metadata/md5-cache/dev-rust/threadpool-1.7.1 b/metadata/md5-cache/dev-rust/threadpool-1.7.1
index 0120e14..7fc1075 100644
--- a/metadata/md5-cache/dev-rust/threadpool-1.7.1
+++ b/metadata/md5-cache/dev-rust/threadpool-1.7.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty threadpool crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.7.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/time-0.1.40 b/metadata/md5-cache/dev-rust/time-0.1.40
deleted file mode 100644
index f24c4ad..0000000
--- a/metadata/md5-cache/dev-rust/time-0.1.40
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/libc-0.2.1:= >=dev-rust/log-0.4.0:= >=dev-rust/redox_syscall-0.1.0:= >=dev-rust/winapi-0.3.0:= >=dev-rust/rustc-serialize-0.3.0:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Utilities for working with time-related functions in Rust.
-EAPI=6
-HOMEPAGE=https://github.com/rust-lang/time
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.1.40/r0
-SRC_URI=https://crates.io/api/v1/crates/time/0.1.40/download -> time-0.1.40.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=826a8f80353f772fc90d513b9411b735
diff --git a/metadata/md5-cache/dev-rust/time-0.1.44 b/metadata/md5-cache/dev-rust/time-0.1.44
index cb152a3..069524b 100644
--- a/metadata/md5-cache/dev-rust/time-0.1.44
+++ b/metadata/md5-cache/dev-rust/time-0.1.44
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2.1:= >=dev-rust/log-0.4.0:= >=dev-rust/redox_syscall-0.1.0:= >=dev-rust/wasi-0.10.0:= >=dev-rust/winapi-0.3.0:= >=dev-rust/rustc-serialize-0.3.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Utilities for working with time-related functions in Rust.
 EAPI=7
 HOMEPAGE=https://github.com/rust-lang/time
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.44/r0
 SRC_URI=https://crates.io/api/v1/crates/time/0.1.44/download -> time-0.1.44.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=581e3a8dafd09ce3b3d3819793364afa
diff --git a/metadata/md5-cache/dev-rust/timeout-readwrite-0.3.1 b/metadata/md5-cache/dev-rust/timeout-readwrite-0.3.1
index 7c38271..b28aef1 100644
--- a/metadata/md5-cache/dev-rust/timeout-readwrite-0.3.1
+++ b/metadata/md5-cache/dev-rust/timeout-readwrite-0.3.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/lazy_static-1.3.0:= <dev-rust/lazy_static-2.0.0 >=dev-rust/nix-0.17.0:= <dev-rust/nix-0.20.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=A Rust crate providing Reader and Writer structs that timeout
 EAPI=7
 HOMEPAGE=https://github.com/jcreekmore/timeout-readwrite-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.1/r0
 SRC_URI=https://crates.io/api/v1/crates/timeout-readwrite/0.3.1/download -> timeout-readwrite-0.3.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=35edf92f85bbad2b20c281f1d3aa64b5
diff --git a/metadata/md5-cache/dev-rust/tiny_http-0.7.0 b/metadata/md5-cache/dev-rust/tiny_http-0.7.0
deleted file mode 100644
index e385179..0000000
--- a/metadata/md5-cache/dev-rust/tiny_http-0.7.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/ascii-1*:= =dev-rust/chunked_transfer-1*:= =dev-rust/url-2*:= =dev-rust/chrono-0.4*:= =dev-rust/log-0.4*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Low level HTTP server library
-EAPI=7
-HOMEPAGE=https://docs.rs/crate/tiny_http/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.7.0/r0
-SRC_URI=https://crates.io/api/v1/crates/tiny_http/0.7.0/download -> tiny_http-0.7.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=843f415e208c06dd3928af3633200721
diff --git a/metadata/md5-cache/dev-rust/tiny_http-0.8.0 b/metadata/md5-cache/dev-rust/tiny_http-0.8.0
new file mode 100644
index 0000000..248ae9c
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tiny_http-0.8.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/ascii-1*:= =dev-rust/chunked_transfer-1*:= =dev-rust/url-2*:= =dev-rust/chrono-0.4*:= =dev-rust/log-0.4*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Low level HTTP server library
+EAPI=7
+HOMEPAGE=https://docs.rs/crate/tiny_http/
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/ascii-1*:= =dev-rust/chunked_transfer-1*:= =dev-rust/url-2*:= =dev-rust/chrono-0.4*:= =dev-rust/log-0.4*:= !~dev-rust/tiny_http-0.7.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.8.0/r0
+SRC_URI=https://crates.io/api/v1/crates/tiny_http/0.8.0/download -> tiny_http-0.8.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3a23ec47e4d7c1cb8fc623c6b51f1ee5
diff --git a/metadata/md5-cache/dev-rust/tlsdate_dbus-0.24.52-r11 b/metadata/md5-cache/dev-rust/tlsdate_dbus-0.24.52-r11
deleted file mode 100644
index ee0fbae..0000000
--- a/metadata/md5-cache/dev-rust/tlsdate_dbus-0.24.52-r11
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/dbus-0.8*:= dev-rust/chromeos-dbus-bindings:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Rust D-Bus bindings for tlsdate.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/tlsdate/+/master/
-IUSE=cros_host cros_workon_tree_9b4af5e6c151008162265b39fd9494ef88c832da cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.24.52-r11
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4cd00704763f33c5bcca036945d442cd
diff --git a/metadata/md5-cache/dev-rust/tlsdate_dbus-0.24.52-r24 b/metadata/md5-cache/dev-rust/tlsdate_dbus-0.24.52-r24
new file mode 100644
index 0000000..b350900
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tlsdate_dbus-0.24.52-r24
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/dbus-0.8*:= dev-rust/chromeos-dbus-bindings:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust D-Bus bindings for tlsdate.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/tlsdate/+/master/
+IUSE=cros_host cros_workon_tree_ac75e4e94cf1c6c37833513159b83d64b3de9104 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND==dev-rust/dbus-0.8*:= dev-rust/chromeos-dbus-bindings:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.24.52-r24
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6cb95862fb568174718611127e4dc5da
diff --git a/metadata/md5-cache/dev-rust/tlsdate_dbus-9999 b/metadata/md5-cache/dev-rust/tlsdate_dbus-9999
index 1ac76ec..143dd24 100644
--- a/metadata/md5-cache/dev-rust/tlsdate_dbus-9999
+++ b/metadata/md5-cache/dev-rust/tlsdate_dbus-9999
@@ -1,14 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/dbus-0.8*:= dev-rust/chromeos-dbus-bindings:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust D-Bus bindings for tlsdate.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/tlsdate/+/master/
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
+RDEPEND==dev-rust/dbus-0.8*:= dev-rust/chromeos-dbus-bindings:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b32dfa5eec4f5225995132c6b028e8cb
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b9423b0265d47a17e9241c47c1a9a61b
diff --git a/metadata/md5-cache/dev-rust/tokio-0.1.19 b/metadata/md5-cache/dev-rust/tokio-0.1.19
index 34009aa..7ed8311 100644
--- a/metadata/md5-cache/dev-rust/tokio-0.1.19
+++ b/metadata/md5-cache/dev-rust/tokio-0.1.19
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bytes-0.4*:= =dev-rust/futures-0.1*:= =dev-rust/mio-0.6*:= =dev-rust/num_cpus-1*:= =dev-rust/tokio-async-await-0.1*:= =dev-rust/tokio-codec-0.1*:= =dev-rust/tokio-current-thread-0.1*:= =dev-rust/tokio-executor-0.1*:= =dev-rust/tokio-fs-0.1*:= =dev-rust/tokio-io-0.1*:= =dev-rust/tokio-reactor-0.1*:= =dev-rust/tokio-sync-0.1*:= =dev-rust/tokio-tcp-0.1*:= =dev-rust/tokio-threadpool-0.1*:= =dev-rust/tokio-timer-0.2*:= =dev-rust/tokio-trace-core-0.1*:= =dev-rust/tokio-udp-0.1*:= =dev-rust/tokio-uds-0.2*:= =dev-rust/env_logger-0.5*:= =dev-rust/flate2-1*:= =dev-rust/futures-cpupool-0.1*:= =dev-rust/http-0.1*:= =dev-rust/httparse-1*:= =dev-rust/libc-0.2*:= =dev-rust/serde-1*:= =dev-rust/serde_derive-1*:= =dev-rust/serde_json-1*:= =dev-rust/time-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A runtime for writing reliable, asynchronous, and slim applications with the Rust programming language
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.19/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio/0.1.19/download -> tokio-0.1.19.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a778bc093f4a6a11d73c4919a143a93f
diff --git a/metadata/md5-cache/dev-rust/tokio-0.1.22 b/metadata/md5-cache/dev-rust/tokio-0.1.22
new file mode 100644
index 0000000..1bd3224
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-0.1.22
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/bytes-0.4*:= >=dev-rust/futures-0.1.20:= <dev-rust/futures-0.2.0 >=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0 >=dev-rust/num_cpus-1.8.0:= <dev-rust/num_cpus-2.0.0 =dev-rust/tokio-codec-0.1*:= >=dev-rust/tokio-current-thread-0.1.6:= <dev-rust/tokio-current-thread-0.2.0 >=dev-rust/tokio-executor-0.1.7:= <dev-rust/tokio-executor-0.2.0 >=dev-rust/tokio-fs-0.1.6:= <dev-rust/tokio-fs-0.2.0 >=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0 >=dev-rust/tokio-sync-0.1.5:= <dev-rust/tokio-sync-0.2.0 =dev-rust/tokio-tcp-0.1*:= >=dev-rust/tokio-threadpool-0.1.14:= <dev-rust/tokio-threadpool-0.2.0 >=dev-rust/tokio-timer-0.2.8:= <dev-rust/tokio-timer-0.3.0 =dev-rust/tokio-udp-0.1*:= =dev-rust/tracing-core-0.1*:= >=dev-rust/tokio-uds-0.2.1:= <dev-rust/tokio-uds-0.3.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=An event-driven, non-blocking I/O platform for writing asynchronous I/O backed applications.
+EAPI=7
+HOMEPAGE=https://tokio.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/bytes-0.4*:= >=dev-rust/futures-0.1.20:= <dev-rust/futures-0.2.0 >=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0 >=dev-rust/num_cpus-1.8.0:= <dev-rust/num_cpus-2.0.0 =dev-rust/tokio-codec-0.1*:= >=dev-rust/tokio-current-thread-0.1.6:= <dev-rust/tokio-current-thread-0.2.0 >=dev-rust/tokio-executor-0.1.7:= <dev-rust/tokio-executor-0.2.0 >=dev-rust/tokio-fs-0.1.6:= <dev-rust/tokio-fs-0.2.0 >=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0 >=dev-rust/tokio-sync-0.1.5:= <dev-rust/tokio-sync-0.2.0 =dev-rust/tokio-tcp-0.1*:= >=dev-rust/tokio-threadpool-0.1.14:= <dev-rust/tokio-threadpool-0.2.0 >=dev-rust/tokio-timer-0.2.8:= <dev-rust/tokio-timer-0.3.0 =dev-rust/tokio-udp-0.1*:= =dev-rust/tracing-core-0.1*:= >=dev-rust/tokio-uds-0.2.1:= <dev-rust/tokio-uds-0.3.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.22/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio/0.1.22/download -> tokio-0.1.22.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6783985fa825414cf2e41619c33322ae
diff --git a/metadata/md5-cache/dev-rust/tokio-async-await-0.1.7 b/metadata/md5-cache/dev-rust/tokio-async-await-0.1.7
index 3ab50644..653e974 100644
--- a/metadata/md5-cache/dev-rust/tokio-async-await-0.1.7
+++ b/metadata/md5-cache/dev-rust/tokio-async-await-0.1.7
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/futures-0.1*:= =dev-rust/tokio-io-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Experimental async/await support for Tokio
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.7/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-async-await/0.1.7/download -> tokio-async-await-0.1.7.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a6e8f6f933895c64f164c30191fc9878
diff --git a/metadata/md5-cache/dev-rust/tokio-buf-0.1.1 b/metadata/md5-cache/dev-rust/tokio-buf-0.1.1
index 246f326..a5b70ae 100644
--- a/metadata/md5-cache/dev-rust/tokio-buf-0.1.1
+++ b/metadata/md5-cache/dev-rust/tokio-buf-0.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bytes-0.4.10:= >=dev-rust/futures-0.1.23:= >=dev-rust/either-1.5:= >=dev-rust/tokio-mock-task-0.1.1:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Asynchronous stream of byte buffers
 EAPI=6
 HOMEPAGE=https://github.com/tokio-rs/tokio
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-buf/0.1.1/download -> tokio-buf-0.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=571cb583ae79566f3a224e0f65138989
diff --git a/metadata/md5-cache/dev-rust/tokio-codec-0.1.1 b/metadata/md5-cache/dev-rust/tokio-codec-0.1.1
index 4dae510..b8a3f68 100644
--- a/metadata/md5-cache/dev-rust/tokio-codec-0.1.1
+++ b/metadata/md5-cache/dev-rust/tokio-codec-0.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bytes-0.4*:= =dev-rust/futures-0.1*:= =dev-rust/tokio-io-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Utilities for encoding and decoding frames
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-codec/0.1.1/download -> tokio-codec-0.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fa40aef4f76716b1237b89266c460963
diff --git a/metadata/md5-cache/dev-rust/tokio-codec-0.1.2 b/metadata/md5-cache/dev-rust/tokio-codec-0.1.2
new file mode 100644
index 0000000..71221df
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-codec-0.1.2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/bytes-0.4.7:= <dev-rust/bytes-0.5.0 >=dev-rust/futures-0.1.18:= <dev-rust/futures-0.2.0 >=dev-rust/tokio-io-0.1.7:= <dev-rust/tokio-io-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Utilities for encoding and decoding frames.
+EAPI=7
+HOMEPAGE=https://tokio.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/bytes-0.4.7:= <dev-rust/bytes-0.5.0 >=dev-rust/futures-0.1.18:= <dev-rust/futures-0.2.0 >=dev-rust/tokio-io-0.1.7:= <dev-rust/tokio-io-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.2/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-codec/0.1.2/download -> tokio-codec-0.1.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=649f63f82b91b2b5fbca24c622b79b2c
diff --git a/metadata/md5-cache/dev-rust/tokio-core-0.1.17 b/metadata/md5-cache/dev-rust/tokio-core-0.1.17
index cd24deb..0cb668e 100644
--- a/metadata/md5-cache/dev-rust/tokio-core-0.1.17
+++ b/metadata/md5-cache/dev-rust/tokio-core-0.1.17
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bytes-0.3*:= =dev-rust/futures-0.1*:= =dev-rust/futures-cpupool-0.1*:= =dev-rust/iovec-0.1*:= =dev-rust/log-0.4*:= =dev-rust/mio-0.6*:= =dev-rust/scoped-tls-0.1*:= =dev-rust/tokio-0.1*:= =dev-rust/tokio-executor-0.1*:= =dev-rust/tokio-io-0.1*:= =dev-rust/tokio-reactor-0.1*:= =dev-rust/tokio-timer-0.2*:= =dev-rust/http-0.1*:= =dev-rust/httparse-1.0*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Core I/O and event loop abstraction for asynchronous I/O in Rust built on futures and mio.
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.17/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-core/0.1.17/download -> tokio-core-0.1.17.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=0ae6c6a59e32dc70165d89f24facb4d0
diff --git a/metadata/md5-cache/dev-rust/tokio-core-0.1.17-r1 b/metadata/md5-cache/dev-rust/tokio-core-0.1.17-r1
new file mode 100644
index 0000000..a9ce7b8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-core-0.1.17-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/bytes-0.4*:= =dev-rust/futures-0.1*:= =dev-rust/iovec-0.1*:= =dev-rust/log-0.4*:= >=dev-rust/mio-0.6.12:= <dev-rust/mio-0.7.0 =dev-rust/scoped-tls-0.1*:= >=dev-rust/tokio-0.1.5:= <dev-rust/tokio-0.2.0 >=dev-rust/tokio-executor-0.1.2:= <dev-rust/tokio-executor-0.2.0 =dev-rust/tokio-io-0.1*:= >=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0 >=dev-rust/tokio-timer-0.2.1:= <dev-rust/tokio-timer-0.3.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Core I/O and event loop abstraction for asynchronous I/O in Rust built on futures and mio.
+EAPI=7
+HOMEPAGE=https://tokio.rs/
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/bytes-0.4*:= =dev-rust/futures-0.1*:= =dev-rust/iovec-0.1*:= =dev-rust/log-0.4*:= >=dev-rust/mio-0.6.12:= <dev-rust/mio-0.7.0 =dev-rust/scoped-tls-0.1*:= >=dev-rust/tokio-0.1.5:= <dev-rust/tokio-0.2.0 >=dev-rust/tokio-executor-0.1.2:= <dev-rust/tokio-executor-0.2.0 =dev-rust/tokio-io-0.1*:= >=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0 >=dev-rust/tokio-timer-0.2.1:= <dev-rust/tokio-timer-0.3.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.17/r1
+SRC_URI=https://crates.io/api/v1/crates/tokio-core/0.1.17/download -> tokio-core-0.1.17.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=cbccae00ebb4c9f84a33a1a3d4d25887
diff --git a/metadata/md5-cache/dev-rust/tokio-curl-0.1.11 b/metadata/md5-cache/dev-rust/tokio-curl-0.1.11
index 32523a1..ad2cd06 100644
--- a/metadata/md5-cache/dev-rust/tokio-curl-0.1.11
+++ b/metadata/md5-cache/dev-rust/tokio-curl-0.1.11
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/curl-0.4*:= =dev-rust/env_logger-0.4*:= =dev-rust/futures-0.1*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= =dev-rust/mio-0.6*:= =dev-rust/scoped-tls-0.1*:= =dev-rust/slab-0.4*:= =dev-rust/tokio-core-0.1*:= =dev-rust/tokio-io-0.1*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=An implementation of an asynchronous HTTP client using futures backed by libcurl.
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.11/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-curl/0.1.11/download -> tokio-curl-0.1.11.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=115e87441fbc415c1a215c73235fd72d
diff --git a/metadata/md5-cache/dev-rust/tokio-curl-0.1.11-r1 b/metadata/md5-cache/dev-rust/tokio-curl-0.1.11-r1
index 0a0ded4..6b2a39d 100644
--- a/metadata/md5-cache/dev-rust/tokio-curl-0.1.11-r1
+++ b/metadata/md5-cache/dev-rust/tokio-curl-0.1.11-r1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/curl-0.4*:= =dev-rust/env_logger-0.4*:= =dev-rust/futures-0.1*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= =dev-rust/mio-0.6*:= =dev-rust/scoped-tls-0.1*:= =dev-rust/slab-0.4*:= =dev-rust/tokio-core-0.1*:= =dev-rust/tokio-io-0.1*:= =dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=An implementation of an asynchronous HTTP client using futures backed by libcurl.
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.11/r1
 SRC_URI=https://crates.io/api/v1/crates/tokio-curl/0.1.11/download -> tokio-curl-0.1.11.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=115e87441fbc415c1a215c73235fd72d
diff --git a/metadata/md5-cache/dev-rust/tokio-current-thread-0.1.6 b/metadata/md5-cache/dev-rust/tokio-current-thread-0.1.6
index e2d3dae..42316cc 100644
--- a/metadata/md5-cache/dev-rust/tokio-current-thread-0.1.6
+++ b/metadata/md5-cache/dev-rust/tokio-current-thread-0.1.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/futures-0.1*:= =dev-rust/tokio-executor-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Single threaded executor which manage many tasks concurrently on the current thread
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.6/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-current-thread/0.1.6/download -> tokio-current-thread-0.1.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8a9942685cb1bda00c650b335cc1632b
diff --git a/metadata/md5-cache/dev-rust/tokio-current-thread-0.1.7 b/metadata/md5-cache/dev-rust/tokio-current-thread-0.1.7
new file mode 100644
index 0000000..c2b3d75
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-current-thread-0.1.7
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 >=dev-rust/tokio-executor-0.1.7:= <dev-rust/tokio-executor-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Single threaded executor which manage many tasks concurrently on the current thread.
+EAPI=7
+HOMEPAGE=https://github.com/tokio-rs/tokio
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 >=dev-rust/tokio-executor-0.1.7:= <dev-rust/tokio-executor-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.7/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-current-thread/0.1.7/download -> tokio-current-thread-0.1.7.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6436b595df2a2b356e204b8b17499c76
diff --git a/metadata/md5-cache/dev-rust/tokio-executor-0.1.10 b/metadata/md5-cache/dev-rust/tokio-executor-0.1.10
new file mode 100644
index 0000000..391ad4a
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-executor-0.1.10
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/crossbeam-utils-0.7*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Future execution primitives
+EAPI=7
+HOMEPAGE=https://github.com/tokio-rs/tokio
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/crossbeam-utils-0.7*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.10/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-executor/0.1.10/download -> tokio-executor-0.1.10.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=98d69cf13bb5de3e8281ee374a45b5e6
diff --git a/metadata/md5-cache/dev-rust/tokio-executor-0.1.7 b/metadata/md5-cache/dev-rust/tokio-executor-0.1.7
index 2880737..fb32461 100644
--- a/metadata/md5-cache/dev-rust/tokio-executor-0.1.7
+++ b/metadata/md5-cache/dev-rust/tokio-executor-0.1.7
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/crossbeam-utils-0.6*:= =dev-rust/futures-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Future execution primitives
 EAPI=6
 HOMEPAGE=https://github.com/tokio-rs/tokio
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.7/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-executor/0.1.7/download -> tokio-executor-0.1.7.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=4092f7f5fa4315cdbfd12ccfa576a5d9
diff --git a/metadata/md5-cache/dev-rust/tokio-fs-0.1.6 b/metadata/md5-cache/dev-rust/tokio-fs-0.1.6
index 00f401b..4023799 100644
--- a/metadata/md5-cache/dev-rust/tokio-fs-0.1.6
+++ b/metadata/md5-cache/dev-rust/tokio-fs-0.1.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/futures-0.1*:= =dev-rust/tokio-io-0.1*:= =dev-rust/tokio-threadpool-0.1*:= =dev-rust/rand-0.6*:= =dev-rust/tempdir-0.3*:= =dev-rust/tempfile-3*:= =dev-rust/tokio-codec-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Asynchronous filesystem manipulation operations
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.6/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-fs/0.1.6/download -> tokio-fs-0.1.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=69fd5f0259d039d60cf55f69f8235b45
diff --git a/metadata/md5-cache/dev-rust/tokio-fs-0.1.7 b/metadata/md5-cache/dev-rust/tokio-fs-0.1.7
new file mode 100644
index 0000000..d990a32
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-fs-0.1.7
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/futures-0.1.21:= <dev-rust/futures-0.2.0 >=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-threadpool-0.1.3:= <dev-rust/tokio-threadpool-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Filesystem API for Tokio.
+EAPI=7
+HOMEPAGE=https://tokio.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/futures-0.1.21:= <dev-rust/futures-0.2.0 >=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-threadpool-0.1.3:= <dev-rust/tokio-threadpool-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.7/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-fs/0.1.7/download -> tokio-fs-0.1.7.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8b93756c960a04e7f021eaadc10e1385
diff --git a/metadata/md5-cache/dev-rust/tokio-io-0.1.12 b/metadata/md5-cache/dev-rust/tokio-io-0.1.12
index 1900f54..c0866fe 100644
--- a/metadata/md5-cache/dev-rust/tokio-io-0.1.12
+++ b/metadata/md5-cache/dev-rust/tokio-io-0.1.12
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bytes-0.4*:= =dev-rust/futures-0.1*:= =dev-rust/log-0.4*:= =dev-rust/tokio-current-thread-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Core I/O primitives for asynchronous I/O in Rust
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.12/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-io/0.1.12/download -> tokio-io-0.1.12.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=0890d9a71ad50becf4513b81cb2679a0
diff --git a/metadata/md5-cache/dev-rust/tokio-io-0.1.13 b/metadata/md5-cache/dev-rust/tokio-io-0.1.13
new file mode 100644
index 0000000..4bfb053
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-io-0.1.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/bytes-0.4.7:= <dev-rust/bytes-0.5.0 >=dev-rust/futures-0.1.18:= <dev-rust/futures-0.2.0 =dev-rust/log-0.4*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Core I/O primitives for asynchronous I/O in Rust.
+EAPI=7
+HOMEPAGE=https://tokio.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/bytes-0.4.7:= <dev-rust/bytes-0.5.0 >=dev-rust/futures-0.1.18:= <dev-rust/futures-0.2.0 =dev-rust/log-0.4*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.13/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-io/0.1.13/download -> tokio-io-0.1.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=eb87814171268c482eb0580d56ec0f84
diff --git a/metadata/md5-cache/dev-rust/tokio-io-0.1.9 b/metadata/md5-cache/dev-rust/tokio-io-0.1.9
new file mode 100644
index 0000000..a99f116
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-io-0.1.9
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Empty crate
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.9/r0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e7d10f36a41e64993d9c11cc32e8200e
diff --git a/metadata/md5-cache/dev-rust/tokio-io-pool-0.1.5 b/metadata/md5-cache/dev-rust/tokio-io-pool-0.1.5
index 85e110c..9eba4f2 100644
--- a/metadata/md5-cache/dev-rust/tokio-io-pool-0.1.5
+++ b/metadata/md5-cache/dev-rust/tokio-io-pool-0.1.5
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty tokio-io-pool crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.5/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/tokio-mock-task-0.1.1 b/metadata/md5-cache/dev-rust/tokio-mock-task-0.1.1
index aba2915..e0f911e 100644
--- a/metadata/md5-cache/dev-rust/tokio-mock-task-0.1.1
+++ b/metadata/md5-cache/dev-rust/tokio-mock-task-0.1.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty tokio-mock-task crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/tokio-reactor-0.1.12 b/metadata/md5-cache/dev-rust/tokio-reactor-0.1.12
new file mode 100644
index 0000000..77f4d740
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-reactor-0.1.12
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/crossbeam-utils-0.7*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 >=dev-rust/lazy_static-1.0.2:= <dev-rust/lazy_static-2.0.0 >=dev-rust/log-0.4.1:= <dev-rust/log-0.5.0 >=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0 >=dev-rust/num_cpus-1.8.0:= <dev-rust/num_cpus-2.0.0 =dev-rust/parking_lot-0.9*:= =dev-rust/slab-0.4*:= >=dev-rust/tokio-executor-0.1.1:= <dev-rust/tokio-executor-0.2.0 >=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-sync-0.1.1:= <dev-rust/tokio-sync-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Event loop that drives Tokio I/O resources.
+EAPI=7
+HOMEPAGE=https://tokio.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/crossbeam-utils-0.7*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 >=dev-rust/lazy_static-1.0.2:= <dev-rust/lazy_static-2.0.0 >=dev-rust/log-0.4.1:= <dev-rust/log-0.5.0 >=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0 >=dev-rust/num_cpus-1.8.0:= <dev-rust/num_cpus-2.0.0 =dev-rust/parking_lot-0.9*:= =dev-rust/slab-0.4*:= >=dev-rust/tokio-executor-0.1.1:= <dev-rust/tokio-executor-0.2.0 >=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-sync-0.1.1:= <dev-rust/tokio-sync-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.12/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-reactor/0.1.12/download -> tokio-reactor-0.1.12.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6e3a64479ae8739ff57314fadd7e1011
diff --git a/metadata/md5-cache/dev-rust/tokio-reactor-0.1.9 b/metadata/md5-cache/dev-rust/tokio-reactor-0.1.9
index 4ad812d..a3dcdbe 100644
--- a/metadata/md5-cache/dev-rust/tokio-reactor-0.1.9
+++ b/metadata/md5-cache/dev-rust/tokio-reactor-0.1.9
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/crossbeam-utils-0.6*:= =dev-rust/futures-0.1*:= =dev-rust/lazy_static-1*:= =dev-rust/log-0.4*:= =dev-rust/mio-0.6*:= =dev-rust/num_cpus-1*:= =dev-rust/parking_lot-0.7*:= =dev-rust/slab-0.4*:= =dev-rust/tokio-executor-0.1*:= =dev-rust/tokio-io-0.1*:= =dev-rust/tokio-sync-0.1*:= =dev-rust/tokio-io-pool-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Event loop that drives Tokio I/O resources
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.9/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-reactor/0.1.9/download -> tokio-reactor-0.1.9.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e24b40e1d0e626bc3f61bbe99d25c2b1
diff --git a/metadata/md5-cache/dev-rust/tokio-sync-0.1.5 b/metadata/md5-cache/dev-rust/tokio-sync-0.1.5
index afed895..9853a42 100644
--- a/metadata/md5-cache/dev-rust/tokio-sync-0.1.5
+++ b/metadata/md5-cache/dev-rust/tokio-sync-0.1.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/fnv-1*:= =dev-rust/futures-0.1*:= =dev-rust/env_logger-0.5*:= =dev-rust/loom-0.1*:= =dev-rust/tokio-mock-task-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Synchronization utilities
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.5/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-sync/0.1.5/download -> tokio-sync-0.1.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=33caf2567283c8e8dd31461eaeec4603
diff --git a/metadata/md5-cache/dev-rust/tokio-sync-0.1.8 b/metadata/md5-cache/dev-rust/tokio-sync-0.1.8
new file mode 100644
index 0000000..0589cbf
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-sync-0.1.8
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/fnv-1.0.6:= <dev-rust/fnv-2.0.0 >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Synchronization utilities.
+EAPI=7
+HOMEPAGE=https://tokio.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/fnv-1.0.6:= <dev-rust/fnv-2.0.0 >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.8/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-sync/0.1.8/download -> tokio-sync-0.1.8.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7b59a1b76b8c9c53bac0125080e99573
diff --git a/metadata/md5-cache/dev-rust/tokio-tcp-0.1.3 b/metadata/md5-cache/dev-rust/tokio-tcp-0.1.3
index b8940ea..e5fcbd1 100644
--- a/metadata/md5-cache/dev-rust/tokio-tcp-0.1.3
+++ b/metadata/md5-cache/dev-rust/tokio-tcp-0.1.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bytes-0.4*:= =dev-rust/futures-0.1*:= =dev-rust/iovec-0.1*:= =dev-rust/mio-0.6*:= =dev-rust/tokio-io-0.1*:= =dev-rust/tokio-reactor-0.1*:= =dev-rust/env_logger-0.5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=TCP bindings for tokio
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.3/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-tcp/0.1.3/download -> tokio-tcp-0.1.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f5a518ea454dc40102202ed661c36701
diff --git a/metadata/md5-cache/dev-rust/tokio-tcp-0.1.4 b/metadata/md5-cache/dev-rust/tokio-tcp-0.1.4
new file mode 100644
index 0000000..2bfa911
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-tcp-0.1.4
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/bytes-0.4*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 =dev-rust/iovec-0.1*:= >=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0 >=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=TCP bindings for tokio.
+EAPI=7
+HOMEPAGE=https://tokio.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/bytes-0.4*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 =dev-rust/iovec-0.1*:= >=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0 >=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.4/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-tcp/0.1.4/download -> tokio-tcp-0.1.4.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=72710045c675dc89c298ba88b9c3cb08
diff --git a/metadata/md5-cache/dev-rust/tokio-threadpool-0.1.14 b/metadata/md5-cache/dev-rust/tokio-threadpool-0.1.14
index bfe37f9..ab69373 100644
--- a/metadata/md5-cache/dev-rust/tokio-threadpool-0.1.14
+++ b/metadata/md5-cache/dev-rust/tokio-threadpool-0.1.14
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/crossbeam-deque-0.7*:= =dev-rust/crossbeam-queue-0.1*:= =dev-rust/crossbeam-utils-0.6*:= =dev-rust/futures-0.1*:= =dev-rust/log-0.4*:= =dev-rust/num_cpus-1*:= =dev-rust/rand-0.6*:= =dev-rust/slab-0.4*:= =dev-rust/tokio-executor-0.1*:= =dev-rust/env_logger-0.5*:= =dev-rust/futures-cpupool-0.1*:= =dev-rust/threadpool-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A task scheduler backed by a work-stealing thread pool
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.14/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-threadpool/0.1.14/download -> tokio-threadpool-0.1.14.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fb3182ad41c06dac9a75d7a6ce224713
diff --git a/metadata/md5-cache/dev-rust/tokio-threadpool-0.1.18 b/metadata/md5-cache/dev-rust/tokio-threadpool-0.1.18
new file mode 100644
index 0000000..4c0cc46
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-threadpool-0.1.18
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/crossbeam-deque-0.7*:= =dev-rust/crossbeam-queue-0.2*:= =dev-rust/crossbeam-utils-0.7*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 =dev-rust/lazy_static-1*:= =dev-rust/log-0.4*:= >=dev-rust/num_cpus-1.2.0:= <dev-rust/num_cpus-2.0.0 >=dev-rust/slab-0.4.1:= <dev-rust/slab-0.5.0 >=dev-rust/tokio-executor-0.1.8:= <dev-rust/tokio-executor-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=A task scheduler backed by a work-stealing thread pool.
+EAPI=7
+HOMEPAGE=https://github.com/tokio-rs/tokio
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/crossbeam-deque-0.7*:= =dev-rust/crossbeam-queue-0.2*:= =dev-rust/crossbeam-utils-0.7*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 =dev-rust/lazy_static-1*:= =dev-rust/log-0.4*:= >=dev-rust/num_cpus-1.2.0:= <dev-rust/num_cpus-2.0.0 >=dev-rust/slab-0.4.1:= <dev-rust/slab-0.5.0 >=dev-rust/tokio-executor-0.1.8:= <dev-rust/tokio-executor-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.18/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-threadpool/0.1.18/download -> tokio-threadpool-0.1.18.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7ac5c16172ae479589845ec4431ed402
diff --git a/metadata/md5-cache/dev-rust/tokio-timer-0.2.11 b/metadata/md5-cache/dev-rust/tokio-timer-0.2.11
index e527d48..3e9c0c8 100644
--- a/metadata/md5-cache/dev-rust/tokio-timer-0.2.11
+++ b/metadata/md5-cache/dev-rust/tokio-timer-0.2.11
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/crossbeam-utils-0.6*:= =dev-rust/futures-0.1*:= =dev-rust/slab-0.4*:= =dev-rust/tokio-executor-0.1*:= =dev-rust/rand-0.6*:= =dev-rust/tokio-mock-task-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Timer facilities for Tokio
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.11/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-timer/0.2.11/download -> tokio-timer-0.2.11.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6eb4aaad48c007876ff43d35643f2b68
diff --git a/metadata/md5-cache/dev-rust/tokio-timer-0.2.13 b/metadata/md5-cache/dev-rust/tokio-timer-0.2.13
new file mode 100644
index 0000000..1a9cc06
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-timer-0.2.13
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/crossbeam-utils-0.7*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 >=dev-rust/slab-0.4.1:= <dev-rust/slab-0.5.0 >=dev-rust/tokio-executor-0.1.1:= <dev-rust/tokio-executor-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Timer facilities for Tokio
+EAPI=7
+HOMEPAGE=https://github.com/tokio-rs/tokio
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/crossbeam-utils-0.7*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 >=dev-rust/slab-0.4.1:= <dev-rust/slab-0.5.0 >=dev-rust/tokio-executor-0.1.1:= <dev-rust/tokio-executor-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.13/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-timer/0.2.13/download -> tokio-timer-0.2.13.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6c4dfd99a9879a2e79ca42826e23c806
diff --git a/metadata/md5-cache/dev-rust/tokio-trace-core-0.1.0 b/metadata/md5-cache/dev-rust/tokio-trace-core-0.1.0
index aad82e9..d98138f 100644
--- a/metadata/md5-cache/dev-rust/tokio-trace-core-0.1.0
+++ b/metadata/md5-cache/dev-rust/tokio-trace-core-0.1.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/lazy_static-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Core primitives for tokio-trace
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.0/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-trace-core/0.1.0/download -> tokio-trace-core-0.1.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=964800fd29f9f944b985d7e81ecb5d40
diff --git a/metadata/md5-cache/dev-rust/tokio-udp-0.1.3 b/metadata/md5-cache/dev-rust/tokio-udp-0.1.3
index 9d313e45..44db802 100644
--- a/metadata/md5-cache/dev-rust/tokio-udp-0.1.3
+++ b/metadata/md5-cache/dev-rust/tokio-udp-0.1.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bytes-0.4*:= =dev-rust/futures-0.1*:= =dev-rust/log-0.4*:= =dev-rust/mio-0.6*:= =dev-rust/tokio-codec-0.1*:= =dev-rust/tokio-io-0.1*:= =dev-rust/tokio-reactor-0.1*:= =dev-rust/env_logger-0.5*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=UDP bindings for tokio
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.3/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-udp/0.1.3/download -> tokio-udp-0.1.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6cefec8acdcca9a6fdd8bfe9801ba070
diff --git a/metadata/md5-cache/dev-rust/tokio-udp-0.1.6 b/metadata/md5-cache/dev-rust/tokio-udp-0.1.6
new file mode 100644
index 0000000..8f3d3fd
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-udp-0.1.6
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/bytes-0.4*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 =dev-rust/log-0.4*:= >=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0 =dev-rust/tokio-codec-0.1*:= >=dev-rust/tokio-io-0.1.7:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=UDP bindings for tokio.
+EAPI=7
+HOMEPAGE=https://tokio.rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND==dev-rust/bytes-0.4*:= >=dev-rust/futures-0.1.19:= <dev-rust/futures-0.2.0 =dev-rust/log-0.4*:= >=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0 =dev-rust/tokio-codec-0.1*:= >=dev-rust/tokio-io-0.1.7:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.6/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-udp/0.1.6/download -> tokio-udp-0.1.6.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2586f76fc622c09fc0ed18e711d0ae35
diff --git a/metadata/md5-cache/dev-rust/tokio-uds-0.2.5 b/metadata/md5-cache/dev-rust/tokio-uds-0.2.5
index 9b316a6..5d15c71 100644
--- a/metadata/md5-cache/dev-rust/tokio-uds-0.2.5
+++ b/metadata/md5-cache/dev-rust/tokio-uds-0.2.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/bytes-0.4*:= =dev-rust/futures-0.1*:= =dev-rust/iovec-0.1*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= =dev-rust/mio-0.6*:= =dev-rust/mio-uds-0.6*:= =dev-rust/tokio-codec-0.1*:= =dev-rust/tokio-io-0.1*:= =dev-rust/tokio-reactor-0.1*:= =dev-rust/tempfile-3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Unix Domain sockets for Tokio
 EAPI=6
 HOMEPAGE=https://tokio.rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.5/r0
 SRC_URI=https://crates.io/api/v1/crates/tokio-uds/0.2.5/download -> tokio-uds-0.2.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=32b9cfe9fafd648820af9b47dcd39449
diff --git a/metadata/md5-cache/dev-rust/tokio-uds-0.2.7 b/metadata/md5-cache/dev-rust/tokio-uds-0.2.7
new file mode 100644
index 0000000..5062e70
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tokio-uds-0.2.7
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/bytes-0.4.8:= <dev-rust/bytes-0.5.0 >=dev-rust/futures-0.1.21:= <dev-rust/futures-0.2.0 >=dev-rust/iovec-0.1.2:= <dev-rust/iovec-0.2.0 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 >=dev-rust/log-0.4.2:= <dev-rust/log-0.5.0 >=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0 >=dev-rust/mio-uds-0.6.5:= <dev-rust/mio-uds-0.7.0 =dev-rust/tokio-codec-0.1*:= >=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0 >=virtual/rust-1.39.0:=
+DESCRIPTION=Unix Domain sockets for Tokio
+EAPI=7
+HOMEPAGE=https://github.com/tokio-rs/tokio
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/bytes-0.4.8:= <dev-rust/bytes-0.5.0 >=dev-rust/futures-0.1.21:= <dev-rust/futures-0.2.0 >=dev-rust/iovec-0.1.2:= <dev-rust/iovec-0.2.0 >=dev-rust/libc-0.2.42:= <dev-rust/libc-0.3.0 >=dev-rust/log-0.4.2:= <dev-rust/log-0.5.0 >=dev-rust/mio-0.6.14:= <dev-rust/mio-0.7.0 >=dev-rust/mio-uds-0.6.5:= <dev-rust/mio-uds-0.7.0 =dev-rust/tokio-codec-0.1*:= >=dev-rust/tokio-io-0.1.6:= <dev-rust/tokio-io-0.2.0 >=dev-rust/tokio-reactor-0.1.1:= <dev-rust/tokio-reactor-0.2.0
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.7/r0
+SRC_URI=https://crates.io/api/v1/crates/tokio-uds/0.2.7/download -> tokio-uds-0.2.7.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=571b753c8fe37ea457baca41b8ed4ced
diff --git a/metadata/md5-cache/dev-rust/toml-0.5.1 b/metadata/md5-cache/dev-rust/toml-0.5.1
index c3cb53e..bf10969 100644
--- a/metadata/md5-cache/dev-rust/toml-0.5.1
+++ b/metadata/md5-cache/dev-rust/toml-0.5.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/serde-1.0:= >=dev-rust/linked-hash-map-0.5.2:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A TOML decoder and encoder for Rust.
 EAPI=6
 HOMEPAGE=https://github.com/alexcrichton/toml-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.1/r0
 SRC_URI=https://crates.io/api/v1/crates/toml/0.5.1/download -> toml-0.5.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=cf38af70435e678ddaf04e7f23826002
diff --git a/metadata/md5-cache/dev-rust/trace_events-0.1.0-r8 b/metadata/md5-cache/dev-rust/trace_events-0.1.0-r8
deleted file mode 100644
index 3fe098c..0000000
--- a/metadata/md5-cache/dev-rust/trace_events-0.1.0-r8
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/libc-0.2*:= =dev-rust/criterion-0.2*:= >=dev-rust/serde_json-1:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Infrastructure for clients to emit trace events.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/trace_events/
-IUSE=test cros_host cros_workon_tree_e509681943a4a652c4575e6da2260621c04c8500 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!!<=dev-rust/trace_events-0.1.0-r2
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r8
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b3981cd23dd4fa07fcbaa6b5182e1d1d
diff --git a/metadata/md5-cache/dev-rust/trace_events-9999 b/metadata/md5-cache/dev-rust/trace_events-9999
deleted file mode 100644
index 27c92b9..0000000
--- a/metadata/md5-cache/dev-rust/trace_events-9999
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/libc-0.2*:= =dev-rust/criterion-0.2*:= >=dev-rust/serde_json-1:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Infrastructure for clients to emit trace events.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/trace_events/
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!!<=dev-rust/trace_events-0.1.0-r2
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6f5996cf38d8b3b5b59d62b468b6bf85
diff --git a/metadata/md5-cache/dev-rust/tracing-core-0.1.0 b/metadata/md5-cache/dev-rust/tracing-core-0.1.0
new file mode 100644
index 0000000..04fbea1
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/tracing-core-0.1.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Empty crate
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.0/r0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2bde60a80008a5717cc088362983971e
diff --git a/metadata/md5-cache/dev-rust/trust-dns-proto-0.7.3 b/metadata/md5-cache/dev-rust/trust-dns-proto-0.7.3
index fb28200..0b90def 100644
--- a/metadata/md5-cache/dev-rust/trust-dns-proto-0.7.3
+++ b/metadata/md5-cache/dev-rust/trust-dns-proto-0.7.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/byteorder-1*:= =dev-rust/enum-as-inner-0.2*:= =dev-rust/failure-0.1*:= =dev-rust/futures-0.1*:= =dev-rust/idna-0.1*:= =dev-rust/lazy_static-1*:= =dev-rust/log-0.4*:= =dev-rust/rand-0.6*:= =dev-rust/smallvec-0.6*:= =dev-rust/socket2-0.3*:= =dev-rust/tokio-executor-0.1*:= =dev-rust/tokio-io-0.1*:= =dev-rust/tokio-reactor-0.1*:= =dev-rust/tokio-tcp-0.1*:= =dev-rust/tokio-timer-0.2*:= =dev-rust/tokio-udp-0.1*:= =dev-rust/url-1*:= =dev-rust/data-encoding-2*:= =dev-rust/openssl-0.10*:= =dev-rust/ring-0.14*:= =dev-rust/serde-1*:= =dev-rust/untrusted-0.6*:= =dev-rust/env_logger-0.6*:= =dev-rust/tokio-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=DNS protocol library and implementation for Trust-DNS
 EAPI=6
 HOMEPAGE=http://www.trust-dns.org/index.html
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.3/r0
 SRC_URI=https://crates.io/api/v1/crates/trust-dns-proto/0.7.3/download -> trust-dns-proto-0.7.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b3c5a54e108814fc8c9875ecd402e94e
diff --git a/metadata/md5-cache/dev-rust/trust-dns-proto-0.7.3-r3 b/metadata/md5-cache/dev-rust/trust-dns-proto-0.7.3-r3
index d949dca..9939ec1 100644
--- a/metadata/md5-cache/dev-rust/trust-dns-proto-0.7.3-r3
+++ b/metadata/md5-cache/dev-rust/trust-dns-proto-0.7.3-r3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/byteorder-1*:= =dev-rust/enum-as-inner-0.2*:= =dev-rust/failure-0.1*:= =dev-rust/futures-0.1*:= =dev-rust/idna-0.1*:= =dev-rust/lazy_static-1*:= =dev-rust/log-0.4*:= =dev-rust/rand-0.6*:= =dev-rust/smallvec-0.6*:= =dev-rust/socket2-0.3*:= =dev-rust/tokio-executor-0.1*:= =dev-rust/tokio-io-0.1*:= =dev-rust/tokio-reactor-0.1*:= =dev-rust/tokio-tcp-0.1*:= =dev-rust/tokio-timer-0.2*:= =dev-rust/tokio-udp-0.1*:= =dev-rust/url-1*:= =dev-rust/data-encoding-2*:= =dev-rust/openssl-0.10*:= =dev-rust/ring-0.14*:= =dev-rust/serde-1*:= =dev-rust/untrusted-0.6*:= =dev-rust/env_logger-0.6*:= =dev-rust/tokio-0.1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=DNS protocol library and implementation for Trust-DNS
 EAPI=6
 HOMEPAGE=http://www.trust-dns.org/index.html
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.3/r3
 SRC_URI=https://crates.io/api/v1/crates/trust-dns-proto/0.7.3/download -> trust-dns-proto-0.7.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b3c5a54e108814fc8c9875ecd402e94e
diff --git a/metadata/md5-cache/dev-rust/try-lock-0.2.2 b/metadata/md5-cache/dev-rust/try-lock-0.2.2
index 2f3321e..6c721cb 100644
--- a/metadata/md5-cache/dev-rust/try-lock-0.2.2
+++ b/metadata/md5-cache/dev-rust/try-lock-0.2.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A light-weight lock guarded by an atomic boolean.
 EAPI=6
 HOMEPAGE=https://github.com/seanmonstar/try-lock
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.2/r0
 SRC_URI=https://crates.io/api/v1/crates/try-lock/0.2.2/download -> try-lock-0.2.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a74949c691cb6e85a9d7422c5b12a5b2
diff --git a/metadata/md5-cache/dev-rust/ucd-util-0.1.3 b/metadata/md5-cache/dev-rust/ucd-util-0.1.3
index 3e98913..37b959c 100644
--- a/metadata/md5-cache/dev-rust/ucd-util-0.1.3
+++ b/metadata/md5-cache/dev-rust/ucd-util-0.1.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=A small utility library for working with the Unicode character database.
 EAPI=6
 HOMEPAGE=https://github.com/BurntSushi/ucd-generate
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.3/r0
 SRC_URI=https://crates.io/api/v1/crates/ucd-util/0.1.3/download -> ucd-util-0.1.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=960bc995639964fcf318d0c60f78732f
diff --git a/metadata/md5-cache/dev-rust/unicase-2.4.0 b/metadata/md5-cache/dev-rust/unicase-2.4.0
index 0277076..186d7bf 100644
--- a/metadata/md5-cache/dev-rust/unicase-2.4.0
+++ b/metadata/md5-cache/dev-rust/unicase-2.4.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty unicase crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.4.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/unicode-bidi-0.3.4 b/metadata/md5-cache/dev-rust/unicode-bidi-0.3.4
index efb9a75..7cc75a9 100644
--- a/metadata/md5-cache/dev-rust/unicode-bidi-0.3.4
+++ b/metadata/md5-cache/dev-rust/unicode-bidi-0.3.4
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/matches-0.1*:= =dev-rust/flame-0.1*:= =dev-rust/flamer-0.1*:= =dev-rust/serde-1*:= =dev-rust/serde_test-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Implementation of the Unicode Bidirectional Algorithm
 EAPI=6
 HOMEPAGE=https://github.com/servo/unicode-bidi
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.4/r0
 SRC_URI=https://crates.io/api/v1/crates/unicode-bidi/0.3.4/download -> unicode-bidi-0.3.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=4bb4d7ea16db1e0822146a7a1d8f8cc3
diff --git a/metadata/md5-cache/dev-rust/unicode-normalization-0.1.8 b/metadata/md5-cache/dev-rust/unicode-normalization-0.1.8
index c5ccff4..f0a5d22 100644
--- a/metadata/md5-cache/dev-rust/unicode-normalization-0.1.8
+++ b/metadata/md5-cache/dev-rust/unicode-normalization-0.1.8
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/smallvec-0.6*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Unicode character composition and decomposition utilities
 EAPI=6
 HOMEPAGE=https://github.com/unicode-rs/unicode-normalization
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.8/r0
 SRC_URI=https://crates.io/api/v1/crates/unicode-normalization/0.1.8/download -> unicode-normalization-0.1.8.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=d2f03972966fda993b7579a9208909c1
diff --git a/metadata/md5-cache/dev-rust/unicode-segmentation-1.5.0 b/metadata/md5-cache/dev-rust/unicode-segmentation-1.5.0
index ef8b000..641ef3a 100644
--- a/metadata/md5-cache/dev-rust/unicode-segmentation-1.5.0
+++ b/metadata/md5-cache/dev-rust/unicode-segmentation-1.5.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides Grapheme Cluster, Word and Sentence boundaries according to Unicode Standard Annex #29 rules.
 EAPI=7
 HOMEPAGE=https://github.com/unicode-rs/unicode-segmentation
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.5.0/r0
 SRC_URI=https://crates.io/api/v1/crates/unicode-segmentation/1.5.0/download -> unicode-segmentation-1.5.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=4be712a5d5897506e3a7f5c13cadf51d
diff --git a/metadata/md5-cache/dev-rust/unicode-width-0.1.5 b/metadata/md5-cache/dev-rust/unicode-width-0.1.5
deleted file mode 100644
index 27e76c4..0000000
--- a/metadata/md5-cache/dev-rust/unicode-width-0.1.5
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=virtual/rust-1.39.0:=
-DESCRIPTION=Determine displayed width of 'char' and 'str' types according to Unicode Standard Annex #11 rules
-EAPI=6
-HOMEPAGE=https://github.com/unicode-rs/unicode-width
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.1.5/r0
-SRC_URI=https://crates.io/api/v1/crates/unicode-width/0.1.5/download -> unicode-width-0.1.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=454859fade96406028388b86fdfa3b0a
diff --git a/metadata/md5-cache/dev-rust/unicode-width-0.1.8 b/metadata/md5-cache/dev-rust/unicode-width-0.1.8
new file mode 100644
index 0000000..b498c05
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/unicode-width-0.1.8
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/compiler_builtins-0.1*:= =dev-rust/rustc-std-workspace-core-1*:= =dev-rust/rustc-std-workspace-std-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Determine displayed width of 'char' and 'str' types according to Unicode Standard Annex #11 rules.
+EAPI=7
+HOMEPAGE=https://github.com/unicode-rs/unicode-width
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/compiler_builtins-0.1*:= =dev-rust/rustc-std-workspace-core-1*:= =dev-rust/rustc-std-workspace-std-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.1.8/r0
+SRC_URI=https://crates.io/api/v1/crates/unicode-width/0.1.8/download -> unicode-width-0.1.8.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3723a2720b4ab67162750600f7d6e437
diff --git a/metadata/md5-cache/dev-rust/unicode-xid-0.1.0 b/metadata/md5-cache/dev-rust/unicode-xid-0.1.0
index 444f2a0..e136d91 100644
--- a/metadata/md5-cache/dev-rust/unicode-xid-0.1.0
+++ b/metadata/md5-cache/dev-rust/unicode-xid-0.1.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Determines whether characters have the XID_Start or XID_Continue properties according to Unicode Standard Annex #31
 EAPI=6
 HOMEPAGE=https://github.com/unicode-rs/unicode-xid
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.0/r0
 SRC_URI=https://crates.io/api/v1/crates/unicode-xid/0.1.0/download -> unicode-xid-0.1.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=587c9313949826bc56180f397b1b754d
diff --git a/metadata/md5-cache/dev-rust/unicode-xid-0.2.0 b/metadata/md5-cache/dev-rust/unicode-xid-0.2.0
index 59d5596..2f79be6 100644
--- a/metadata/md5-cache/dev-rust/unicode-xid-0.2.0
+++ b/metadata/md5-cache/dev-rust/unicode-xid-0.2.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Determine if a char is a valid identifier for a parser and/or lexer according to Unicode Standard Annex #31 rules.
 EAPI=6
 HOMEPAGE=https://github.com/unicode-rs/unicode-xid
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.0/r0
 SRC_URI=https://crates.io/api/v1/crates/unicode-xid/0.2.0/download -> unicode-xid-0.2.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8ee881ad43a2f02afa08b035d13f98b3
diff --git a/metadata/md5-cache/dev-rust/unicode-xid-0.2.2 b/metadata/md5-cache/dev-rust/unicode-xid-0.2.2
new file mode 100644
index 0000000..5289ab3
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/unicode-xid-0.2.2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Determine whether characters have the XID_Start or XID_Continue properties according to Unicode Standard Annex #31.
+EAPI=7
+HOMEPAGE=https://github.com/unicode-rs/unicode-xid
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.2/r0
+SRC_URI=https://crates.io/api/v1/crates/unicode-xid/0.2.2/download -> unicode-xid-0.2.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=419f2d1a564596b7d7dded89ea841f91
diff --git a/metadata/md5-cache/dev-rust/unix_socket-0.5.0 b/metadata/md5-cache/dev-rust/unix_socket-0.5.0
index d710c39..cdadfec 100644
--- a/metadata/md5-cache/dev-rust/unix_socket-0.5.0
+++ b/metadata/md5-cache/dev-rust/unix_socket-0.5.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/cfg-if-0.1.0:= >=dev-rust/libc-0.2.1:= >=dev-rust/tempdir-0.3.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Support for Unix domain socket clients and servers.
 EAPI=6
 HOMEPAGE=https://github.com/rust-lang-nursery/unix-socket
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.5.0/r0
 SRC_URI=https://crates.io/api/v1/crates/unix_socket/0.5.0/download -> unix_socket-0.5.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e02db72fd402939ed4ea6411b039a16f
diff --git a/metadata/md5-cache/dev-rust/untrusted-0.6.2 b/metadata/md5-cache/dev-rust/untrusted-0.6.2
index 22efc5b..65a8020 100644
--- a/metadata/md5-cache/dev-rust/untrusted-0.6.2
+++ b/metadata/md5-cache/dev-rust/untrusted-0.6.2
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty untrusted crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.6.2/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/url-1.7.2 b/metadata/md5-cache/dev-rust/url-1.7.2
index 52e8798..92c32bf 100644
--- a/metadata/md5-cache/dev-rust/url-1.7.2
+++ b/metadata/md5-cache/dev-rust/url-1.7.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/idna-0.1*:= =dev-rust/matches-0.1*:= =dev-rust/percent-encoding-1*:= =dev-rust/encoding-0.2*:= =dev-rust/heapsize-0.4*:= =dev-rust/rustc-serialize-0.3*:= =dev-rust/serde-0.8*:= =dev-rust/bencher-0.1*:= =dev-rust/rustc-test-0.3*:= =dev-rust/serde_json-0.8*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=URL library for Rust, based on the URL Standard
 EAPI=6
 HOMEPAGE=https://github.com/servo/rust-url
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.7.2/r0
 SRC_URI=https://crates.io/api/v1/crates/url/1.7.2/download -> url-1.7.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=542ef9d0180d5f1d919074b7a180ba4f
diff --git a/metadata/md5-cache/dev-rust/url-2.0.0 b/metadata/md5-cache/dev-rust/url-2.0.0
index 40ab7ac..cf9266a 100644
--- a/metadata/md5-cache/dev-rust/url-2.0.0
+++ b/metadata/md5-cache/dev-rust/url-2.0.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty url crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.0.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a24171f2ba7b7f5d00b155293ff5debe
diff --git a/metadata/md5-cache/dev-rust/utf8-ranges-1.0.4 b/metadata/md5-cache/dev-rust/utf8-ranges-1.0.4
index 11f84eb..c3f58f7 100644
--- a/metadata/md5-cache/dev-rust/utf8-ranges-1.0.4
+++ b/metadata/md5-cache/dev-rust/utf8-ranges-1.0.4
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=DEPRECATED. Use regex-syntax::utf8 submodule instead.
 EAPI=6
 HOMEPAGE=https://github.com/BurntSushi/utf8-ranges
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.4/r0
 SRC_URI=https://crates.io/api/v1/crates/utf8-ranges/1.0.4/download -> utf8-ranges-1.0.4.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=d5912f223591d9280a0337da4bd0d63d
diff --git a/metadata/md5-cache/dev-rust/utf8parse-0.2.0 b/metadata/md5-cache/dev-rust/utf8parse-0.2.0
index a231e4e..d553b5a 100644
--- a/metadata/md5-cache/dev-rust/utf8parse-0.2.0
+++ b/metadata/md5-cache/dev-rust/utf8parse-0.2.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Table-driven UTF-8 parser.
 EAPI=7
 HOMEPAGE=https://docs.rs/utf8parse/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.0/r0
 SRC_URI=https://crates.io/api/v1/crates/utf8parse/0.2.0/download -> utf8parse-0.2.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=431193648756458a73024e44354fc630
diff --git a/metadata/md5-cache/dev-rust/uuid-0.7.4 b/metadata/md5-cache/dev-rust/uuid-0.7.4
index a1db884..78ca36e 100644
--- a/metadata/md5-cache/dev-rust/uuid-0.7.4
+++ b/metadata/md5-cache/dev-rust/uuid-0.7.4
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty uuid crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.7.4/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/value-bag-1.0.0 b/metadata/md5-cache/dev-rust/value-bag-1.0.0
new file mode 100644
index 0000000..e48e1ec3
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/value-bag-1.0.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Empty crate
+EAPI=7
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.0/r0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2bde60a80008a5717cc088362983971e
diff --git a/metadata/md5-cache/dev-rust/vcpkg-0.2.11 b/metadata/md5-cache/dev-rust/vcpkg-0.2.11
new file mode 100644
index 0000000..2cc8306
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/vcpkg-0.2.11
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=This is a helper for finding native MSVC ABI libraries in a Vcpkg installation from cargo build scripts.
+EAPI=7
+HOMEPAGE=https://github.com/mcgoo/vcpkg-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=!=dev-rust/vcpkg-0.2*
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.11/r0
+SRC_URI=https://crates.io/api/v1/crates/vcpkg/0.2.11/download -> vcpkg-0.2.11.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5ccd65394565b763e0bcd515c9849993
diff --git a/metadata/md5-cache/dev-rust/vcpkg-0.2.11-r1 b/metadata/md5-cache/dev-rust/vcpkg-0.2.11-r1
new file mode 100644
index 0000000..3374651
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/vcpkg-0.2.11-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=This is a helper for finding native MSVC ABI libraries in a Vcpkg installation from cargo build scripts.
+EAPI=7
+HOMEPAGE=https://github.com/mcgoo/vcpkg-rs
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=!=dev-rust/vcpkg-0.2*
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.11/r1
+SRC_URI=https://crates.io/api/v1/crates/vcpkg/0.2.11/download -> vcpkg-0.2.11.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5ccd65394565b763e0bcd515c9849993
diff --git a/metadata/md5-cache/dev-rust/vcpkg-0.2.6 b/metadata/md5-cache/dev-rust/vcpkg-0.2.6
deleted file mode 100644
index c351c7b..0000000
--- a/metadata/md5-cache/dev-rust/vcpkg-0.2.6
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/lazy_static-1*:= >=dev-rust/tempdir-0.3.7:= >=virtual/rust-1.39.0:=
-DESCRIPTION=This is a helper for finding native MSVC ABI libraries in a Vcpkg installation from cargo build scripts.
-EAPI=6
-HOMEPAGE=https://github.com/mcgoo/vcpkg-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.2.6/r0
-SRC_URI=https://crates.io/api/v1/crates/vcpkg/0.2.6/download -> vcpkg-0.2.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=fea64c76ce8c0ab49f1c0d778a9177e5
diff --git a/metadata/md5-cache/dev-rust/vec_map-0.8.1 b/metadata/md5-cache/dev-rust/vec_map-0.8.1
deleted file mode 100644
index 855a2cb..0000000
--- a/metadata/md5-cache/dev-rust/vec_map-0.8.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/serde-1.0.0:= <dev-rust/serde-2.0.0 >=virtual/rust-1.39.0:=
-DESCRIPTION=A simple map based on a vector for small integer keys.
-EAPI=6
-HOMEPAGE=https://github.com/contain-rs/vec-map
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.8.1/r0
-SRC_URI=https://crates.io/api/v1/crates/vec_map/0.8.1/download -> vec_map-0.8.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9366846ad1ff005954a008fefa0322c1
diff --git a/metadata/md5-cache/dev-rust/vec_map-0.8.1-r1 b/metadata/md5-cache/dev-rust/vec_map-0.8.1-r1
deleted file mode 100644
index 6738023..0000000
--- a/metadata/md5-cache/dev-rust/vec_map-0.8.1-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/serde-1.0.0:= <dev-rust/serde-2.0.0 >=virtual/rust-1.39.0:=
-DESCRIPTION=A simple map based on a vector for small integer keys.
-EAPI=6
-HOMEPAGE=https://github.com/contain-rs/vec-map
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=|| ( MIT Apache-2.0 )
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0.8.1/r1
-SRC_URI=https://crates.io/api/v1/crates/vec_map/0.8.1/download -> vec_map-0.8.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9366846ad1ff005954a008fefa0322c1
diff --git a/metadata/md5-cache/dev-rust/vec_map-0.8.2 b/metadata/md5-cache/dev-rust/vec_map-0.8.2
new file mode 100644
index 0000000..99651ee
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/vec_map-0.8.2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/serde-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A simple map based on a vector for small integer keys
+EAPI=7
+HOMEPAGE=https://github.com/contain-rs/vec-map
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/serde-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.8.2/r0
+SRC_URI=https://crates.io/api/v1/crates/vec_map/0.8.2/download -> vec_map-0.8.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2ed4ffa41b94ee958505e06f628dfbf5
diff --git a/metadata/md5-cache/dev-rust/version_check-0.9.2 b/metadata/md5-cache/dev-rust/version_check-0.9.2
index f62ba3b..3d43f96 100644
--- a/metadata/md5-cache/dev-rust/version_check-0.9.2
+++ b/metadata/md5-cache/dev-rust/version_check-0.9.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Tiny crate to check the version of the installed/running rustc.
 EAPI=7
 HOMEPAGE=https://github.com/SergioBenitez/version_check
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.9.2/r0
 SRC_URI=https://crates.io/api/v1/crates/version_check/0.9.2/download -> version_check-0.9.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=2a57fc3c64c0e3378e5aa22a8cd14224
diff --git a/metadata/md5-cache/dev-rust/vm-memory-0.2.0 b/metadata/md5-cache/dev-rust/vm-memory-0.2.0
new file mode 100644
index 0000000..417d9bb
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/vm-memory-0.2.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2.39:= >=dev-rust/arc-swap-0.4.5:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Safe abstractions for accessing the VM physical memory
+EAPI=7
+HOMEPAGE=https://github.com/rust-vmm/vm-memory
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=Apache-2.0 BSD-Google
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.2.0/r0
+SRC_URI=https://crates.io/api/v1/crates/vm-memory/0.2.0/download -> vm-memory-0.2.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=0ca50b8fea9bf935678c87d863da2cb3
diff --git a/metadata/md5-cache/dev-rust/vmm_vhost-0.1.0-r2 b/metadata/md5-cache/dev-rust/vmm_vhost-0.1.0-r2
new file mode 100644
index 0000000..4b4a6a0
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/vmm_vhost-0.1.0-r2
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/bitflags-1.0.1:= >=dev-rust/libc-0.2.39:= dev-rust/sys_util:= dev-rust/tempfile:= =dev-rust/vm-memory-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A crate to support vhost backend drivers for virtio devices.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/rust-vmm/vhost/
+IUSE=cros_host cros_workon_tree_57e82370048b45b2bda2712eea78487d9d65a61c cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=Apache-2.0 BSD
+PROPERTIES=live
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r2
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8cd5fc5b48fa763ea198319917498d24
diff --git a/metadata/md5-cache/dev-rust/vmm_vhost-9999 b/metadata/md5-cache/dev-rust/vmm_vhost-9999
new file mode 100644
index 0000000..cbdf760
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/vmm_vhost-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/bitflags-1.0.1:= >=dev-rust/libc-0.2.39:= dev-rust/sys_util:= dev-rust/tempfile:= =dev-rust/vm-memory-0.2*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=A crate to support vhost backend drivers for virtio devices.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/rust-vmm/vhost/
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=~*
+LICENSE=Apache-2.0 BSD
+PROPERTIES=live
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2ef14d4d1df82aaa27280967f9ee39f1
diff --git a/metadata/md5-cache/dev-rust/void-1.0.2 b/metadata/md5-cache/dev-rust/void-1.0.2
index c439467..83e5c55 100644
--- a/metadata/md5-cache/dev-rust/void-1.0.2
+++ b/metadata/md5-cache/dev-rust/void-1.0.2
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=The uninhabited void type for use in statically impossible cases.
 EAPI=7
 HOMEPAGE=https://github.com/reem/rust-void.git
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.2/r0
 SRC_URI=https://crates.io/api/v1/crates/void/1.0.2/download -> void-1.0.2.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ac82e3a5c83fc235af862be3d14ac113
diff --git a/metadata/md5-cache/dev-rust/walkdir-2.2.5 b/metadata/md5-cache/dev-rust/walkdir-2.2.5
index fec33b4..c1a34cf 100644
--- a/metadata/md5-cache/dev-rust/walkdir-2.2.5
+++ b/metadata/md5-cache/dev-rust/walkdir-2.2.5
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty walkdir crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=2.2.5/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3216b88f05a479ae38768636000c5f30
diff --git a/metadata/md5-cache/dev-rust/want-0.2.0 b/metadata/md5-cache/dev-rust/want-0.2.0
index b95da0d..c815f14 100644
--- a/metadata/md5-cache/dev-rust/want-0.2.0
+++ b/metadata/md5-cache/dev-rust/want-0.2.0
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/futures-0.1:= >=dev-rust/log-0.4:= >=dev-rust/try-lock-0.2:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Detect when another Future wants a result.
 EAPI=6
 HOMEPAGE=https://github.com/seanmonstar/want
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.0/r0
 SRC_URI=https://crates.io/api/v1/crates/want/0.2.0/download -> want-0.2.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=45904c3b43e35e7446bffc2f68bbc86b
diff --git a/metadata/md5-cache/dev-rust/wasi-0.10.0 b/metadata/md5-cache/dev-rust/wasi-0.10.0
index 57d95be..97798f9 100644
--- a/metadata/md5-cache/dev-rust/wasi-0.10.0
+++ b/metadata/md5-cache/dev-rust/wasi-0.10.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty wasi crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.10.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/wasi-0.9.0 b/metadata/md5-cache/dev-rust/wasi-0.9.0
index ab54125..239b6d0 100644
--- a/metadata/md5-cache/dev-rust/wasi-0.9.0
+++ b/metadata/md5-cache/dev-rust/wasi-0.9.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty wasi crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.9.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/wasm-bindgen-0.2.68 b/metadata/md5-cache/dev-rust/wasm-bindgen-0.2.68
index 0aff84d..1678521 100644
--- a/metadata/md5-cache/dev-rust/wasm-bindgen-0.2.68
+++ b/metadata/md5-cache/dev-rust/wasm-bindgen-0.2.68
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty wasm-bindgen crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.68/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/which-3.1.1 b/metadata/md5-cache/dev-rust/which-3.1.1
index 0bbd0c7..e4948c9 100644
--- a/metadata/md5-cache/dev-rust/which-3.1.1
+++ b/metadata/md5-cache/dev-rust/which-3.1.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3 =dev-rust/thiserror-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Locate installed executable in cross platforms.
 EAPI=7
 HOMEPAGE=https://github.com/harryfei/which-rs.git
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=3.1.1/r0
 SRC_URI=https://crates.io/api/v1/crates/which/3.1.1/download -> which-3.1.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=2d45c22b5c0f345b402ab77a16b66b50
diff --git a/metadata/md5-cache/dev-rust/which-4.0.2 b/metadata/md5-cache/dev-rust/which-4.0.2
new file mode 100644
index 0000000..f617d31
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/which-4.0.2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3 =dev-rust/thiserror-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Locate installed executable in cross platforms.
+EAPI=7
+HOMEPAGE=https://github.com/harryfei/which-rs.git
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3 =dev-rust/thiserror-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=4.0.2/r0
+SRC_URI=https://crates.io/api/v1/crates/which/4.0.2/download -> which-4.0.2.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b841b6c041d1579e6717bf445c23cf02
diff --git a/metadata/md5-cache/dev-rust/winapi-0.2.8 b/metadata/md5-cache/dev-rust/winapi-0.2.8
index aa08dc3..2bbef35 100644
--- a/metadata/md5-cache/dev-rust/winapi-0.2.8
+++ b/metadata/md5-cache/dev-rust/winapi-0.2.8
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty winapi crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.8/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a24171f2ba7b7f5d00b155293ff5debe
diff --git a/metadata/md5-cache/dev-rust/winapi-0.3.6 b/metadata/md5-cache/dev-rust/winapi-0.3.6
index c9a9ee7..4e957b1 100644
--- a/metadata/md5-cache/dev-rust/winapi-0.3.6
+++ b/metadata/md5-cache/dev-rust/winapi-0.3.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/winapi-i686-pc-windows-gnu-0.4.0:= >=dev-rust/winapi-x86_64-pc-windows-gnu-0.4.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides raw FFI bindings to all of Windows API.
 EAPI=6
 HOMEPAGE=https://github.com/retep998/winapi-rs
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.6/r0
 SRC_URI=https://crates.io/api/v1/crates/winapi/0.3.6/download -> winapi-0.3.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a4a252e1d68938347b8c797fd0b4e630
diff --git a/metadata/md5-cache/dev-rust/winapi-0.3.9 b/metadata/md5-cache/dev-rust/winapi-0.3.9
new file mode 100644
index 0000000..7b1c270
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/winapi-0.3.9
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Raw FFI bindings for all of Windows API.
+EAPI=7
+HOMEPAGE=https://crates.io/crates/winapi
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.3.9/r0
+SRC_URI=https://crates.io/api/v1/crates/winapi/0.3.9/download -> winapi-0.3.9.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ec83541530f15aac0add6c7f308f284b
diff --git a/metadata/md5-cache/dev-rust/winapi-i686-pc-windows-gnu-0.4.0 b/metadata/md5-cache/dev-rust/winapi-i686-pc-windows-gnu-0.4.0
index 39cd701..d9984a5 100644
--- a/metadata/md5-cache/dev-rust/winapi-i686-pc-windows-gnu-0.4.0
+++ b/metadata/md5-cache/dev-rust/winapi-i686-pc-windows-gnu-0.4.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty winapi-i686-pc-windows-gnu crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b459f025504105b3b301bb8096b60267
diff --git a/metadata/md5-cache/dev-rust/winapi-util-0.1.5 b/metadata/md5-cache/dev-rust/winapi-util-0.1.5
index a61d732..39cd8af2 100644
--- a/metadata/md5-cache/dev-rust/winapi-util-0.1.5
+++ b/metadata/md5-cache/dev-rust/winapi-util-0.1.5
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/winapi-0.3*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=This crate provides a smattering of safe wrappers around various parts of the winapi crate.
 EAPI=6
 HOMEPAGE=https://github.com/BurntSushi/winapi-util
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Unlicense )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.5/r0
 SRC_URI=https://crates.io/api/v1/crates/winapi-util/0.1.5/download -> winapi-util-0.1.5.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=c648456c44e89798fa2fcdec17015bfc
diff --git a/metadata/md5-cache/dev-rust/winapi-x86_64-pc-windows-gnu-0.4.0 b/metadata/md5-cache/dev-rust/winapi-x86_64-pc-windows-gnu-0.4.0
index ce6703a..769d6bf 100644
--- a/metadata/md5-cache/dev-rust/winapi-x86_64-pc-windows-gnu-0.4.0
+++ b/metadata/md5-cache/dev-rust/winapi-x86_64-pc-windows-gnu-0.4.0
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty winapi-x86_64-pc-windows-gnu crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.0/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b459f025504105b3b301bb8096b60267
diff --git a/metadata/md5-cache/dev-rust/wincolor-0.1.6 b/metadata/md5-cache/dev-rust/wincolor-0.1.6
index 921646b..92f99f6 100644
--- a/metadata/md5-cache/dev-rust/wincolor-0.1.6
+++ b/metadata/md5-cache/dev-rust/wincolor-0.1.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/winapi-0.3.0:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A simple Windows specific API for controlling text color in a Windows console.
 EAPI=6
 HOMEPAGE=https://github.com/BurntSushi/termcolor/tree/master/wincolor
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.1.6/r0
 SRC_URI=https://crates.io/api/v1/crates/wincolor/0.1.6/download -> wincolor-0.1.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=4987a56aa9c6a796d607ea96d3f843a1
diff --git a/metadata/md5-cache/dev-rust/wincolor-1.0.1 b/metadata/md5-cache/dev-rust/wincolor-1.0.1
index 5a9245c..d88a1fd 100644
--- a/metadata/md5-cache/dev-rust/wincolor-1.0.1
+++ b/metadata/md5-cache/dev-rust/wincolor-1.0.1
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND==dev-rust/winapi-0.3*:= >=dev-rust/winapi-util-0.1.1:= >=virtual/rust-1.39.0:=
 DESCRIPTION=A simple Windows specific API for controlling text color in a Windows console.
 EAPI=6
 HOMEPAGE=https://github.com/BurntSushi/termcolor/tree/master/wincolor
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=1.0.1/r0
 SRC_URI=https://crates.io/api/v1/crates/wincolor/1.0.1/download -> wincolor-1.0.1.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=b467357f182178a61f841f815523a326
diff --git a/metadata/md5-cache/dev-rust/ws2_32-sys-0.2.1 b/metadata/md5-cache/dev-rust/ws2_32-sys-0.2.1
index 2eba3f7d..140416c 100644
--- a/metadata/md5-cache/dev-rust/ws2_32-sys-0.2.1
+++ b/metadata/md5-cache/dev-rust/ws2_32-sys-0.2.1
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty ws2_32-sys crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.2.1/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=900161294f5dae3873a5d1e154c9a699
diff --git a/metadata/md5-cache/dev-rust/xml-rs-0.3.6 b/metadata/md5-cache/dev-rust/xml-rs-0.3.6
index d430e16..0871b1c 100644
--- a/metadata/md5-cache/dev-rust/xml-rs-0.3.6
+++ b/metadata/md5-cache/dev-rust/xml-rs-0.3.6
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/bitflags-0.5.0:= <dev-rust/bitflags-0.8.0 >=virtual/rust-1.39.0:=
 DESCRIPTION=An XML library in pure Rust.
 EAPI=6
 HOMEPAGE=http://netvl.github.io/xml-rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.6/r0
 SRC_URI=https://crates.io/api/v1/crates/xml-rs/0.3.6/download -> xml-rs-0.3.6.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=2b1342a4d03bbefd2f04062b46daa75f
diff --git a/metadata/md5-cache/dev-rust/xml-rs-0.8.3 b/metadata/md5-cache/dev-rust/xml-rs-0.8.3
index 449b9c9..10e8e96 100644
--- a/metadata/md5-cache/dev-rust/xml-rs-0.8.3
+++ b/metadata/md5-cache/dev-rust/xml-rs-0.8.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=An XML library in pure Rust.
 EAPI=7
 HOMEPAGE=http://netvl.github.io/xml-rs/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=MIT
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.8.3/r0
 SRC_URI=https://crates.io/api/v1/crates/xml-rs/0.8.3/download -> xml-rs-0.8.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=495f1c10110dd60c901767bbb652f860
diff --git a/metadata/md5-cache/dev-rust/xmlparser-0.13.3 b/metadata/md5-cache/dev-rust/xmlparser-0.13.3
new file mode 100644
index 0000000..54c10b8
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/xmlparser-0.13.3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Pull-based, zero-allocation XML parser.
+EAPI=7
+HOMEPAGE=https://github.com/RazrFalcon/xmlparser
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0.13.3/r0
+SRC_URI=https://crates.io/api/v1/crates/xmlparser/0.13.3/download -> xmlparser-0.13.3.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=34b50e1e9428889ab5a955d174c2b906
diff --git a/metadata/md5-cache/dev-rust/yaml-rust-0.3.5 b/metadata/md5-cache/dev-rust/yaml-rust-0.3.5
index e6a83cf..fe9488d 100644
--- a/metadata/md5-cache/dev-rust/yaml-rust-0.3.5
+++ b/metadata/md5-cache/dev-rust/yaml-rust-0.3.5
@@ -1,11 +1,11 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=virtual/rust-1.39.0:=
 DESCRIPTION=Empty yaml-rust crate
 EAPI=6
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=BSD-Google
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.3.5/r0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a10c45c80def616e132a5a38403f8943
diff --git a/metadata/md5-cache/dev-rust/yaml-rust-0.4.3 b/metadata/md5-cache/dev-rust/yaml-rust-0.4.3
index f4f3f30..0ba3aec 100644
--- a/metadata/md5-cache/dev-rust/yaml-rust-0.4.3
+++ b/metadata/md5-cache/dev-rust/yaml-rust-0.4.3
@@ -1,13 +1,13 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/linked-hash-map-0.0.9:= <dev-rust/linked-hash-map-0.6 >=virtual/rust-1.39.0:=
 DESCRIPTION=The missing YAML 1.2 parser for rust
 EAPI=6
 HOMEPAGE=https://docs.rs/yaml-rust/
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=*
 LICENSE=|| ( MIT Apache-2.0 )
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0.4.3/r0
 SRC_URI=https://crates.io/api/v1/crates/yaml-rust/0.4.3/download -> yaml-rust-0.4.3.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6694779e8e125cd907400d6d378c9a5e
diff --git a/metadata/md5-cache/dev-rust/zeroize-1.2.0 b/metadata/md5-cache/dev-rust/zeroize-1.2.0
new file mode 100644
index 0000000..3bde535
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/zeroize-1.2.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/zeroize_derive-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Securely clear secrets from memory
+EAPI=7
+HOMEPAGE=https://github.com/iqlusioninc/crates/
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/zeroize_derive-1*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.2.0/r0
+SRC_URI=https://crates.io/api/v1/crates/zeroize/1.2.0/download -> zeroize-1.2.0.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=125361c3b520c84e355d999f80c3fc11
diff --git a/metadata/md5-cache/dev-rust/zeroize_derive-1.0.1 b/metadata/md5-cache/dev-rust/zeroize_derive-1.0.1
new file mode 100644
index 0000000..cd7da38
--- /dev/null
+++ b/metadata/md5-cache/dev-rust/zeroize_derive-1.0.1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= =dev-rust/synstructure-0.12*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Custom derive support for zeroize
+EAPI=7
+HOMEPAGE=https://github.com/iqlusioninc/crates/
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND==dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= =dev-rust/synstructure-0.12*:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.1/r0
+SRC_URI=https://crates.io/api/v1/crates/zeroize_derive/1.0.1/download -> zeroize_derive-1.0.1.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1db88d984079113b5f3de870539cfd6f
diff --git a/metadata/md5-cache/dev-util/android-tools-9.0.0_p3-r4 b/metadata/md5-cache/dev-util/android-tools-9.0.0_p3-r4
deleted file mode 100644
index 1d8b67e..0000000
--- a/metadata/md5-cache/dev-util/android-tools-9.0.0_p3-r4
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare test unpack
-DEPEND=sys-libs/zlib:= dev-libs/libpcre2:= dev-libs/openssl:= virtual/libusb:1= dev-lang/go dev-util/ninja >=dev-util/cmake-3.9.6
-DESCRIPTION=Android platform tools (adb, fastboot, and mkbootimg)
-EAPI=6
-HOMEPAGE=https://android.googlesource.com/platform/system/core.git/
-IUSE=python python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=Apache-2.0 BSD-2
-RDEPEND=sys-libs/zlib:= dev-libs/libpcre2:= dev-libs/openssl:= virtual/libusb:1= python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] )
-SLOT=0
-SRC_URI=https://git.archlinux.org/svntogit/community.git/snapshot/community-0ffb7b41d599741d100a6a00a4bb20e162cd3f90.tar.xz -> android-tools-9.0.0_r3-arch.tar.xz https://github.com/android/platform_system_core/archive/android-9.0.0_r3.tar.gz -> android-tools-9.0.0_r3-core.tar.gz https://github.com/google/boringssl/archive/45210dd4e21ace9d28cb76b3f83303fcdd2efcce.tar.gz -> boringssl-45210dd4e21ace9d28cb76b3f83303fcdd2efcce.tar.gz mirror://gentoo/android-tools-9.0.0_r3-e2fsprogs.tar.xz https://dev.gentoo.org/~zmedico/dist/android-tools-9.0.0_r3-e2fsprogs.tar.xz mirror://gentoo/android-tools-9.0.0_r3-extras.tar.xz https://dev.gentoo.org/~zmedico/dist/android-tools-9.0.0_r3-extras.tar.xz mirror://gentoo/android-tools-9.0.0_r3-selinux.tar.xz https://dev.gentoo.org/~zmedico/dist/android-tools-9.0.0_r3-selinux.tar.xz mirror://gentoo/android-tools-9.0.0_r3-f2fs-tools.tar.xz https://dev.gentoo.org/~zmedico/dist/android-tools-9.0.0_r3-f2fs-tools.tar.xz mirror://gentoo/android-tools-9.0.0_r3.ninja.xz https://dev.gentoo.org/~zmedico/dist/android-tools-9.0.0_r3.ninja.xz
-_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=cb69f2e628ba18cef801b528ac7fcef6
diff --git a/metadata/md5-cache/dev-util/android-tools-9.0.0_p3-r5 b/metadata/md5-cache/dev-util/android-tools-9.0.0_p3-r5
new file mode 100644
index 0000000..e34bd25
--- /dev/null
+++ b/metadata/md5-cache/dev-util/android-tools-9.0.0_p3-r5
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare test unpack
+DEPEND=sys-libs/zlib:= dev-libs/libpcre2:= dev-libs/openssl:= virtual/libusb:1= dev-lang/go dev-util/ninja >=dev-util/cmake-3.9.6
+DESCRIPTION=Android platform tools (adb, fastboot, and mkbootimg)
+EAPI=6
+HOMEPAGE=https://android.googlesource.com/platform/system/core.git/
+IUSE=python python_targets_python2_7 python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=Apache-2.0 BSD-2
+RDEPEND=sys-libs/zlib:= dev-libs/libpcre2:= dev-libs/openssl:= virtual/libusb:1= python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] )
+SLOT=0
+SRC_URI=https://git.archlinux.org/svntogit/community.git/snapshot/community-0ffb7b41d599741d100a6a00a4bb20e162cd3f90.tar.xz -> android-tools-9.0.0_r3-arch.tar.xz https://github.com/android/platform_system_core/archive/android-9.0.0_r3.tar.gz -> android-tools-9.0.0_r3-core.tar.gz https://github.com/google/boringssl/archive/45210dd4e21ace9d28cb76b3f83303fcdd2efcce.tar.gz -> boringssl-45210dd4e21ace9d28cb76b3f83303fcdd2efcce.tar.gz mirror://gentoo/android-tools-9.0.0_r3-e2fsprogs.tar.xz https://dev.gentoo.org/~zmedico/dist/android-tools-9.0.0_r3-e2fsprogs.tar.xz mirror://gentoo/android-tools-9.0.0_r3-extras.tar.xz https://dev.gentoo.org/~zmedico/dist/android-tools-9.0.0_r3-extras.tar.xz mirror://gentoo/android-tools-9.0.0_r3-selinux.tar.xz https://dev.gentoo.org/~zmedico/dist/android-tools-9.0.0_r3-selinux.tar.xz mirror://gentoo/android-tools-9.0.0_r3-f2fs-tools.tar.xz https://dev.gentoo.org/~zmedico/dist/android-tools-9.0.0_r3-f2fs-tools.tar.xz mirror://gentoo/android-tools-9.0.0_r3.ninja.xz https://dev.gentoo.org/~zmedico/dist/android-tools-9.0.0_r3.ninja.xz https://raw.githubusercontent.com/nmeum/android-tools/8a30dba5768304176fd78aaa131242f6b880f828/patches/core/0022-Use-glibc-s-gettid-when-using-glibc-2.30.patch -> android-tools-9.0.0_p3-fix-build-with-glibc-2.30.patch
+_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=2e35134519d186b0c0a83b7c6c588f23
diff --git a/metadata/md5-cache/dev-util/apitrace-8.0 b/metadata/md5-cache/dev-util/apitrace-8.0
deleted file mode 100644
index fedf450..0000000
--- a/metadata/md5-cache/dev-util/apitrace-8.0
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) media-libs/libpng:0= media-libs/mesa[egl?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] media-libs/waffle sys-libs/zlib:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-process/procps X? ( x11-libs/libX11 ) opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5[-gles2] dev-qt/qtnetwork:5 dev-qt/qtwebkit:5 dev-qt/qtwidgets:5[-gles2] ) system-snappy? ( >=app-arch/snappy-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Tool for tracing, analyzing, and debugging graphics APIs
-EAPI=6
-HOMEPAGE=https://github.com/apitrace/apitrace
-IUSE=+cli egl opengl opengles qt5 system-snappy X abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 +python_single_target_python2_7
-KEYWORDS=*
-LICENSE=MIT BSD CC-BY-3.0 CC-BY-4.0 public-domain
-RDEPEND=python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) media-libs/libpng:0= media-libs/mesa[egl?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] media-libs/waffle sys-libs/zlib:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-process/procps X? ( x11-libs/libX11 ) opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5[-gles2] dev-qt/qtnetwork:5 dev-qt/qtwebkit:5 dev-qt/qtwidgets:5[-gles2] ) system-snappy? ( >=app-arch/snappy-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-REQUIRED_USE=^^ ( python_single_target_python2_7 )
-SLOT=0
-SRC_URI=https://github.com/apitrace/apitrace/archive/8.0.tar.gz -> apitrace-8.0.tar.gz
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=abf73260a77d6852f22f6cb743a83d3f
diff --git a/metadata/md5-cache/dev-util/apitrace-8.0-r1 b/metadata/md5-cache/dev-util/apitrace-8.0-r1
deleted file mode 100644
index fedf450..0000000
--- a/metadata/md5-cache/dev-util/apitrace-8.0-r1
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) media-libs/libpng:0= media-libs/mesa[egl?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] media-libs/waffle sys-libs/zlib:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-process/procps X? ( x11-libs/libX11 ) opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5[-gles2] dev-qt/qtnetwork:5 dev-qt/qtwebkit:5 dev-qt/qtwidgets:5[-gles2] ) system-snappy? ( >=app-arch/snappy-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Tool for tracing, analyzing, and debugging graphics APIs
-EAPI=6
-HOMEPAGE=https://github.com/apitrace/apitrace
-IUSE=+cli egl opengl opengles qt5 system-snappy X abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 +python_single_target_python2_7
-KEYWORDS=*
-LICENSE=MIT BSD CC-BY-3.0 CC-BY-4.0 public-domain
-RDEPEND=python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) media-libs/libpng:0= media-libs/mesa[egl?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] media-libs/waffle sys-libs/zlib:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-process/procps X? ( x11-libs/libX11 ) opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5[-gles2] dev-qt/qtnetwork:5 dev-qt/qtwebkit:5 dev-qt/qtwidgets:5[-gles2] ) system-snappy? ( >=app-arch/snappy-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-REQUIRED_USE=^^ ( python_single_target_python2_7 )
-SLOT=0
-SRC_URI=https://github.com/apitrace/apitrace/archive/8.0.tar.gz -> apitrace-8.0.tar.gz
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=abf73260a77d6852f22f6cb743a83d3f
diff --git a/metadata/md5-cache/dev-util/apitrace-9.0 b/metadata/md5-cache/dev-util/apitrace-9.0
new file mode 100644
index 0000000..51af918
--- /dev/null
+++ b/metadata/md5-cache/dev-util/apitrace-9.0
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) media-libs/libpng:0= media-libs/waffle sys-libs/zlib:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-process/procps X? ( x11-libs/libX11 ) opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5[-gles2] dev-qt/qtnetwork:5 dev-qt/qtwebkit:5 dev-qt/qtwidgets:5[-gles2] ) system-snappy? ( >=app-arch/snappy-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-devel/make >=dev-util/cmake-3.9.6
+DESCRIPTION=Tool for tracing, analyzing, and debugging graphics APIs
+EAPI=6
+HOMEPAGE=https://github.com/apitrace/apitrace
+IUSE=+cli egl opengl opengles qt5 system-snappy X abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 +python_single_target_python3_6
+KEYWORDS=*
+LICENSE=MIT BSD CC-BY-3.0 CC-BY-4.0 public-domain
+RDEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) media-libs/libpng:0= media-libs/waffle sys-libs/zlib:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-process/procps X? ( x11-libs/libX11 ) opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5[-gles2] dev-qt/qtnetwork:5 dev-qt/qtwebkit:5 dev-qt/qtwidgets:5[-gles2] ) system-snappy? ( >=app-arch/snappy-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+REQUIRED_USE=^^ ( python_single_target_python3_6 )
+SLOT=0
+SRC_URI=https://github.com/apitrace/apitrace/archive/9.0.tar.gz -> apitrace-9.0.tar.gz
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=7f6a76c31b05f2ba56fb202cb9bde6d8
diff --git a/metadata/md5-cache/dev-util/apitrace-9.0-r1 b/metadata/md5-cache/dev-util/apitrace-9.0-r1
new file mode 100644
index 0000000..51af918
--- /dev/null
+++ b/metadata/md5-cache/dev-util/apitrace-9.0-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) media-libs/libpng:0= media-libs/waffle sys-libs/zlib:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-process/procps X? ( x11-libs/libX11 ) opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5[-gles2] dev-qt/qtnetwork:5 dev-qt/qtwebkit:5 dev-qt/qtwidgets:5[-gles2] ) system-snappy? ( >=app-arch/snappy-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-devel/make >=dev-util/cmake-3.9.6
+DESCRIPTION=Tool for tracing, analyzing, and debugging graphics APIs
+EAPI=6
+HOMEPAGE=https://github.com/apitrace/apitrace
+IUSE=+cli egl opengl opengles qt5 system-snappy X abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 +python_single_target_python3_6
+KEYWORDS=*
+LICENSE=MIT BSD CC-BY-3.0 CC-BY-4.0 public-domain
+RDEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) media-libs/libpng:0= media-libs/waffle sys-libs/zlib:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-process/procps X? ( x11-libs/libX11 ) opengl? ( virtual/opengl ) opengles? ( virtual/opengles ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5[-gles2] dev-qt/qtnetwork:5 dev-qt/qtwebkit:5 dev-qt/qtwidgets:5[-gles2] ) system-snappy? ( >=app-arch/snappy-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+REQUIRED_USE=^^ ( python_single_target_python3_6 )
+SLOT=0
+SRC_URI=https://github.com/apitrace/apitrace/archive/9.0.tar.gz -> apitrace-9.0.tar.gz
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=7f6a76c31b05f2ba56fb202cb9bde6d8
diff --git a/metadata/md5-cache/dev-util/bear-2.3.9 b/metadata/md5-cache/dev-util/bear-2.3.9
index bbb3620..b653eeb 100644
--- a/metadata/md5-cache/dev-util/bear-2.3.9
+++ b/metadata/md5-cache/dev-util/bear-2.3.9
@@ -7,5 +7,5 @@
 LICENSE=GPL-3
 SLOT=0
 SRC_URI=https://github.com/rizsotto/Bear/archive/2.3.9.tar.gz -> bear-2.3.9.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=06e9c8d811d737883a760665556eb3ac
diff --git a/metadata/md5-cache/dev-util/bear-2.3.9-r2 b/metadata/md5-cache/dev-util/bear-2.3.9-r2
index bbb3620..b653eeb 100644
--- a/metadata/md5-cache/dev-util/bear-2.3.9-r2
+++ b/metadata/md5-cache/dev-util/bear-2.3.9-r2
@@ -7,5 +7,5 @@
 LICENSE=GPL-3
 SLOT=0
 SRC_URI=https://github.com/rizsotto/Bear/archive/2.3.9.tar.gz -> bear-2.3.9.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=06e9c8d811d737883a760665556eb3ac
diff --git a/metadata/md5-cache/dev-util/bsdiff-4.3.1-r31 b/metadata/md5-cache/dev-util/bsdiff-4.3.1-r31
deleted file mode 100644
index 22ffb6c..0000000
--- a/metadata/md5-cache/dev-util/bsdiff-4.3.1-r31
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=app-arch/brotli-1.0.6:= app-arch/bzip2:= dev-libs/libdivsufsort:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=bsdiff: Binary Differencer using a suffix alg
-EAPI=7
-HOMEPAGE=http://www.daemonology.net/bsdiff/
-IUSE=cros_host cros_workon_tree_3a989be8b720701c4023d8b52d50648e01cf9dd2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_a6219da561ac98cfa3cdf9d1fb98cf15b5b28473 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_3a989be8b720701c4023d8b52d50648e01cf9dd2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_a6219da561ac98cfa3cdf9d1fb98cf15b5b28473 cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-2
-PROPERTIES=live live
-RDEPEND=>=app-arch/brotli-1.0.6:= app-arch/bzip2:= dev-libs/libdivsufsort:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/4.3.1-r31
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2a8ab0b7286c853b28b51c8e82573659
diff --git a/metadata/md5-cache/dev-util/bsdiff-4.3.1-r32 b/metadata/md5-cache/dev-util/bsdiff-4.3.1-r32
new file mode 100644
index 0000000..42544a8
--- /dev/null
+++ b/metadata/md5-cache/dev-util/bsdiff-4.3.1-r32
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=app-arch/brotli-1.0.6:= app-arch/bzip2:= dev-libs/libdivsufsort:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=bsdiff: Binary Differencer using a suffix alg
+EAPI=7
+HOMEPAGE=http://www.daemonology.net/bsdiff/
+IUSE=cros_host cros_workon_tree_3a989be8b720701c4023d8b52d50648e01cf9dd2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_a6219da561ac98cfa3cdf9d1fb98cf15b5b28473 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_3a989be8b720701c4023d8b52d50648e01cf9dd2_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_a6219da561ac98cfa3cdf9d1fb98cf15b5b28473 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-2
+PROPERTIES=live live
+RDEPEND=>=app-arch/brotli-1.0.6:= app-arch/bzip2:= dev-libs/libdivsufsort:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/4.3.1-r32
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=842d0af55522166b23f3aacc1eb02bcf
diff --git a/metadata/md5-cache/dev-util/bsdiff-9999 b/metadata/md5-cache/dev-util/bsdiff-9999
index 25229e4..80cc526 100644
--- a/metadata/md5-cache/dev-util/bsdiff-9999
+++ b/metadata/md5-cache/dev-util/bsdiff-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=app-arch/brotli-1.0.6:= app-arch/bzip2:= dev-libs/libdivsufsort:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=app-arch/brotli-1.0.6:= app-arch/bzip2:= dev-libs/libdivsufsort:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=bsdiff: Binary Differencer using a suffix alg
 EAPI=7
 HOMEPAGE=http://www.daemonology.net/bsdiff/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=>=app-arch/brotli-1.0.6:= app-arch/bzip2:= dev-libs/libdivsufsort:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2aff4bb25072136f6b3e4119440916b8
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f2519b1ba910deb3aaaad5b079d2c3d6
diff --git a/metadata/md5-cache/dev-util/cxxbridge-cmd-1.0.42 b/metadata/md5-cache/dev-util/cxxbridge-cmd-1.0.42
new file mode 100644
index 0000000..7289348
--- /dev/null
+++ b/metadata/md5-cache/dev-util/cxxbridge-cmd-1.0.42
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/clap-2.33:= <dev-rust/clap-3 >=dev-rust/codespan-reporting-0.11:= <dev-rust/codespan-reporting-0.12 >=dev-rust/proc-macro2-1.0.26:= <dev-rust/proc-macro2-2 >=dev-rust/quote-1.0:= <dev-rust/quote-2 >=dev-rust/syn-1.0.68:= <dev-rust/syn-2 >=virtual/rust-1.39.0:=
+DESCRIPTION=C++ code generator for integrating 'cxx' crate into a non-Cargo build.
+EAPI=7
+HOMEPAGE=https://crates.io/crates/cxxbridge-cmd
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=|| ( MIT Apache-2.0 )
+RDEPEND=>=dev-rust/clap-2.33:= <dev-rust/clap-3 >=dev-rust/codespan-reporting-0.11:= <dev-rust/codespan-reporting-0.12 >=dev-rust/proc-macro2-1.0.26:= <dev-rust/proc-macro2-2 >=dev-rust/quote-1.0:= <dev-rust/quote-2 >=dev-rust/syn-1.0.68:= <dev-rust/syn-2
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=1.0.42/r0
+SRC_URI=https://crates.io/api/v1/crates/cxxbridge-cmd/1.0.42/download -> cxxbridge-cmd-1.0.42.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=dd4c2226d24ceb3b00c6e864c0f80c67
diff --git a/metadata/md5-cache/dev-util/dut-server-0.0.1-r5 b/metadata/md5-cache/dev-util/dut-server-0.0.1-r5
new file mode 100644
index 0000000..d0113f5
--- /dev/null
+++ b/metadata/md5-cache/dev-util/dut-server-0.0.1-r5
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=dev-util/lro-server dev-go/grpc chromeos-base/cros-config-api dev-lang/go
+DESCRIPTION=DUT Service Server implementation for interfacing with the DUT
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/dut
+IUSE=cros_host cros_workon_tree_973d967f3987480fbaf6415e28a902e2956a3acd
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-util/lro-server dev-go/grpc chromeos-base/cros-config-api
+SLOT=0/0.0.1-r5
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=10c3166b14a80c02c3e353708bce2022
diff --git a/metadata/md5-cache/dev-util/dut-server-9999 b/metadata/md5-cache/dev-util/dut-server-9999
new file mode 100644
index 0000000..7f8fc3d
--- /dev/null
+++ b/metadata/md5-cache/dev-util/dut-server-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=dev-util/lro-server dev-go/grpc chromeos-base/cros-config-api dev-lang/go
+DESCRIPTION=DUT Service Server implementation for interfacing with the DUT
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/dut
+IUSE=cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-util/lro-server dev-go/grpc chromeos-base/cros-config-api
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8fd6178d28eca56a9bd499a12654e55f
diff --git a/metadata/md5-cache/dev-util/gdbus-codegen-2.66.7-r1 b/metadata/md5-cache/dev-util/gdbus-codegen-2.66.7-r1
new file mode 100644
index 0000000..e107091
--- /dev/null
+++ b/metadata/md5-cache/dev-util/gdbus-codegen-2.66.7-r1
@@ -0,0 +1,15 @@
+BDEPEND=dev-libs/libxslt app-text/docbook-xsl-stylesheets app-arch/xz-utils python_single_target_python3_6? ( dev-lang/python:3.6[xml] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[xml] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[xml] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9[xml] >=dev-lang/python-exec-2:=[python_targets_python3_9] )
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=python_single_target_python3_6? ( dev-lang/python:3.6[xml] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[xml] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[xml] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9[xml] >=dev-lang/python-exec-2:=[python_targets_python3_9] )
+DESCRIPTION=GDBus code and documentation generator
+EAPI=7
+HOMEPAGE=https://www.gtk.org/
+IUSE=python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9
+KEYWORDS=*
+LICENSE=LGPL-2+
+RDEPEND=python_single_target_python3_6? ( dev-lang/python:3.6[xml] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[xml] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[xml] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9[xml] >=dev-lang/python-exec-2:=[python_targets_python3_9] ) python_single_target_python3_6? ( dev-lang/python:3.6[xml] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[xml] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[xml] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9[xml] >=dev-lang/python-exec-2:=[python_targets_python3_9] )
+REQUIRED_USE=^^ ( python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9 )
+SLOT=0
+SRC_URI=mirror://gnome/sources/glib/2.66/glib-2.66.7.tar.xz
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnome.org	532d56d07b9eace4831aaa817d2b756a	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=52bb73910c139d1fb67d2c8047b5c37c
diff --git a/metadata/md5-cache/dev-util/glib-utils-2.66.4-r1 b/metadata/md5-cache/dev-util/glib-utils-2.66.4-r1
deleted file mode 100644
index 925a9f4..0000000
--- a/metadata/md5-cache/dev-util/glib-utils-2.66.4-r1
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-libs/libxslt app-text/docbook-xsl-stylesheets app-arch/xz-utils
-DEFINED_PHASES=compile configure install setup
-DEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8 >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9 >=dev-lang/python-exec-2:=[python_targets_python3_9] ) !<dev-libs/glib-2.56.2:2 cros-host? ( dev-libs/libxslt app-text/docbook-xsl-stylesheets )
-DESCRIPTION=Build utilities for GLib using projects
-EAPI=7
-HOMEPAGE=https://www.gtk.org/
-IUSE=cros-host python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9
-KEYWORDS=*
-LICENSE=LGPL-2.1+
-RDEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8 >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9 >=dev-lang/python-exec-2:=[python_targets_python3_9] ) !<dev-libs/glib-2.56.2:2
-REQUIRED_USE=^^ ( python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9 )
-SLOT=0
-SRC_URI=mirror://gnome/sources/glib/2.66/glib-2.66.4.tar.xz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnome.org	532d56d07b9eace4831aaa817d2b756a	multilib	2477ebe553d3e4d2c606191fe6c33602	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f5b0f92a78e91644cef58b0b3add3be6
diff --git a/metadata/md5-cache/dev-util/glib-utils-2.66.7-r2 b/metadata/md5-cache/dev-util/glib-utils-2.66.7-r2
new file mode 100644
index 0000000..83d2dc7
--- /dev/null
+++ b/metadata/md5-cache/dev-util/glib-utils-2.66.7-r2
@@ -0,0 +1,15 @@
+BDEPEND=dev-libs/libxslt app-text/docbook-xsl-stylesheets app-arch/xz-utils
+DEFINED_PHASES=compile configure install setup
+DEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8 >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9 >=dev-lang/python-exec-2:=[python_targets_python3_9] ) !<dev-libs/glib-2.56.2:2 cros-host? ( dev-libs/libxslt app-text/docbook-xsl-stylesheets )
+DESCRIPTION=Build utilities for GLib using projects
+EAPI=7
+HOMEPAGE=https://www.gtk.org/
+IUSE=cros-host python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9
+KEYWORDS=*
+LICENSE=LGPL-2.1+
+RDEPEND=python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8 >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9 >=dev-lang/python-exec-2:=[python_targets_python3_9] ) !<dev-libs/glib-2.56.2:2
+REQUIRED_USE=^^ ( python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9 )
+SLOT=0
+SRC_URI=mirror://gnome/sources/glib/2.66/glib-2.66.7.tar.xz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnome.org	532d56d07b9eace4831aaa817d2b756a	multilib	2477ebe553d3e4d2c606191fe6c33602	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4efed295d300580674903835619d9455
diff --git a/metadata/md5-cache/dev-util/gyp-2019.06.04.155326 b/metadata/md5-cache/dev-util/gyp-2019.06.04.155326
index f2c4b28..b92fcaf 100644
--- a/metadata/md5-cache/dev-util/gyp-2019.06.04.155326
+++ b/metadata/md5-cache/dev-util/gyp-2019.06.04.155326
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/gyp-2019.06.04.155326.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=95261ff7d425035dd73fc686dbda365b
diff --git a/metadata/md5-cache/dev-util/hdctools-0.0.1-r1301 b/metadata/md5-cache/dev-util/hdctools-0.0.1-r1301
deleted file mode 100644
index c0a9512..0000000
--- a/metadata/md5-cache/dev-util/hdctools-0.0.1-r1301
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-python/setuptools[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] virtual/pkgconfig
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=>=dev-embedded/libftdi-0.18:= dev-python/numpy:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] >=dev-python/pexpect-3.0:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-python/pyserial:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] >=dev-python/pyusb-1.0.2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] sys-power/uhubctl virtual/libusb:1 chromeos-base/ec-devutils:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] app-text/htmltidy:= test? ( dev-python/pytest:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] )
-DESCRIPTION=Software to communicate with servo/miniservo debug boards
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/servo
-IUSE=cros_host test cros_host cros_workon_tree_04045fd4dc21ac39e596863833ed61bdb89d2847 python_targets_python2_7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=>=dev-embedded/libftdi-0.18:= dev-python/numpy:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] >=dev-python/pexpect-3.0:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-python/pyserial:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] >=dev-python/pyusb-1.0.2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] sys-power/uhubctl virtual/libusb:1 chromeos-base/ec-devutils:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] virtual/servo-config-dut-usb3:* python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)]
-REQUIRED_USE=|| ( python_targets_python2_7 )
-SLOT=0/0.0.1-r1301
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
-_md5_=0bcccb592bb5e5c3491767ce4225dc34
diff --git a/metadata/md5-cache/dev-util/hdctools-0.0.1-r1400 b/metadata/md5-cache/dev-util/hdctools-0.0.1-r1400
new file mode 100644
index 0000000..f83503f
--- /dev/null
+++ b/metadata/md5-cache/dev-util/hdctools-0.0.1-r1400
@@ -0,0 +1,15 @@
+BDEPEND=test? ( dev-python/pytest[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] ) dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] virtual/pkgconfig
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=>=dev-embedded/libftdi-0.18:= dev-python/numpy[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] >=dev-python/pexpect-3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pyserial[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] >=dev-python/pyusb-1.0.2[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] sys-power/uhubctl virtual/libusb:1= chromeos-base/ec-devutils:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] app-text/htmltidy
+DESCRIPTION=Software to communicate with servo/miniservo debug boards
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/servo
+IUSE=cros_host test cros_host cros_workon_tree_10706ea9ac1e3d8b910c300d8a8f637dd9a2aec9 python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=>=dev-embedded/libftdi-0.18:= dev-python/numpy[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] >=dev-python/pexpect-3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pyserial[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] >=dev-python/pyusb-1.0.2[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] sys-power/uhubctl virtual/libusb:1= chromeos-base/ec-devutils:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] virtual/servo-config-dut-usb3:* python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )
+SLOT=0/0.0.1-r1400
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
+_md5_=910c1569e2fd40c391d751dbf9cb0711
diff --git a/metadata/md5-cache/dev-util/hdctools-9999 b/metadata/md5-cache/dev-util/hdctools-9999
index c1923c4..51cc562 100644
--- a/metadata/md5-cache/dev-util/hdctools-9999
+++ b/metadata/md5-cache/dev-util/hdctools-9999
@@ -1,15 +1,15 @@
-BDEPEND=dev-vcs/git python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-python/setuptools[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] virtual/pkgconfig
+BDEPEND=test? ( dev-python/pytest[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] ) dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] virtual/pkgconfig
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=>=dev-embedded/libftdi-0.18:= dev-python/numpy:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] >=dev-python/pexpect-3.0:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-python/pyserial:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] >=dev-python/pyusb-1.0.2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] sys-power/uhubctl virtual/libusb:1 chromeos-base/ec-devutils:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] app-text/htmltidy:= test? ( dev-python/pytest:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] )
+DEPEND=>=dev-embedded/libftdi-0.18:= dev-python/numpy[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] >=dev-python/pexpect-3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pyserial[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] >=dev-python/pyusb-1.0.2[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] sys-power/uhubctl virtual/libusb:1= chromeos-base/ec-devutils:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] app-text/htmltidy
 DESCRIPTION=Software to communicate with servo/miniservo debug boards
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/servo
-IUSE=cros_host test cros_host cros_workon_tree_ python_targets_python2_7
+IUSE=cros_host test cros_host cros_workon_tree_ python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=>=dev-embedded/libftdi-0.18:= dev-python/numpy:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] >=dev-python/pexpect-3.0:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-python/pyserial:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] >=dev-python/pyusb-1.0.2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] sys-power/uhubctl virtual/libusb:1 chromeos-base/ec-devutils:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] virtual/servo-config-dut-usb3:* python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)]
-REQUIRED_USE=|| ( python_targets_python2_7 )
+RDEPEND=>=dev-embedded/libftdi-0.18:= dev-python/numpy[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] >=dev-python/pexpect-3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-python/pyserial[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] >=dev-python/pyusb-1.0.2[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] sys-power/uhubctl virtual/libusb:1= chromeos-base/ec-devutils:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] virtual/servo-config-dut-usb3:* python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
-_md5_=a2cec61c5e314029895e42c411f3eb81
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
+_md5_=bccf43f3ef46822ab213478bf42cf8ff
diff --git a/metadata/md5-cache/dev-util/lro-server-0.0.1-r2 b/metadata/md5-cache/dev-util/lro-server-0.0.1-r2
new file mode 100644
index 0000000..81e3c9f
--- /dev/null
+++ b/metadata/md5-cache/dev-util/lro-server-0.0.1-r2
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=chromeos-base/cros-config-api dev-lang/go
+DESCRIPTION=Common golang library to support google.longrunning.operations server impls
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/lro
+IUSE=cros_host cros_workon_tree_0a82488b21ac7734f64c67f4addb83f5f0eceb3f
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<chromeos-base/test-server-0.0.1-r10
+SLOT=0/0.0.1-r2
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=bfea4213ed8ceb938ec9e7cfea63b599
diff --git a/metadata/md5-cache/dev-util/lro-server-9999 b/metadata/md5-cache/dev-util/lro-server-9999
new file mode 100644
index 0000000..eea3f67
--- /dev/null
+++ b/metadata/md5-cache/dev-util/lro-server-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=chromeos-base/cros-config-api dev-lang/go
+DESCRIPTION=Common golang library to support google.longrunning.operations server impls
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/lro
+IUSE=cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<chromeos-base/test-server-0.0.1-r10
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=84fd616813390cd8661efec44a7a47e5
diff --git a/metadata/md5-cache/dev-util/mem-0.0.1 b/metadata/md5-cache/dev-util/mem-0.0.1
index d8d41a9..e4b2480 100644
--- a/metadata/md5-cache/dev-util/mem-0.0.1
+++ b/metadata/md5-cache/dev-util/mem-0.0.1
@@ -9,5 +9,5 @@
 RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f30b281b641f2f100165c6b69b41ce63
diff --git a/metadata/md5-cache/dev-util/mem-0.0.1-r5 b/metadata/md5-cache/dev-util/mem-0.0.1-r5
deleted file mode 100644
index d8d41a9..0000000
--- a/metadata/md5-cache/dev-util/mem-0.0.1-r5
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-DEFINED_PHASES=compile configure install prepare test unpack
-DESCRIPTION=Utils for reading/writing to /dev/mem
-EAPI=7
-HOMEPAGE=http://chromium.org
-IUSE=python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 )
-SLOT=0
-_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f30b281b641f2f100165c6b69b41ce63
diff --git a/metadata/md5-cache/dev-util/mem-0.0.1-r6 b/metadata/md5-cache/dev-util/mem-0.0.1-r6
new file mode 100644
index 0000000..e4b2480
--- /dev/null
+++ b/metadata/md5-cache/dev-util/mem-0.0.1-r6
@@ -0,0 +1,13 @@
+BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+DEFINED_PHASES=compile configure install prepare test unpack
+DESCRIPTION=Utils for reading/writing to /dev/mem
+EAPI=7
+HOMEPAGE=http://chromium.org
+IUSE=python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 )
+SLOT=0
+_eclasses_=distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f30b281b641f2f100165c6b69b41ce63
diff --git a/metadata/md5-cache/dev-util/memory-eater-locked-0.0.1-r5 b/metadata/md5-cache/dev-util/memory-eater-locked-0.0.1-r5
index ac35ad1..75386ed 100644
--- a/metadata/md5-cache/dev-util/memory-eater-locked-0.0.1-r5
+++ b/metadata/md5-cache/dev-util/memory-eater-locked-0.0.1-r5
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=368f8ca7e8ced0aadd79b332fe402659
diff --git a/metadata/md5-cache/dev-util/memory-eater-locked-9999 b/metadata/md5-cache/dev-util/memory-eater-locked-9999
index 8625340..edabfa1 100644
--- a/metadata/md5-cache/dev-util/memory-eater-locked-9999
+++ b/metadata/md5-cache/dev-util/memory-eater-locked-9999
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=0d252a5feeee6c708fe7aaa9607e64ff
diff --git a/metadata/md5-cache/dev-util/meson-0.49.1-r1 b/metadata/md5-cache/dev-util/meson-0.49.1-r1
deleted file mode 100644
index 3355000..0000000
--- a/metadata/md5-cache/dev-util/meson-0.49.1-r1
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] test? ( dev-libs/glib:2 dev-libs/gobject-introspection dev-util/ninja dev-vcs/git virtual/pkgconfig ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-DESCRIPTION=Open source build system
-EAPI=6
-HOMEPAGE=http://mesonbuild.com/
-IUSE=test python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 )
-RESTRICT=!test? ( test )
-SLOT=0
-SRC_URI=mirror://pypi/m/meson/meson-0.49.1.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=d909c95f46d834ba799f4ae2c3b531f8
diff --git a/metadata/md5-cache/dev-util/perf-5.3.7 b/metadata/md5-cache/dev-util/perf-5.3.7
index 6a11102..2afc9ca 100644
--- a/metadata/md5-cache/dev-util/perf-5.3.7
+++ b/metadata/md5-cache/dev-util/perf-5.3.7
@@ -1,15 +1,15 @@
 BDEPEND=dev-util/patchutils sys-devel/bison sys-devel/flex java? ( virtual/jdk ) doc? ( app-text/asciidoc app-text/sgml-common app-text/xmlto sys-process/time )
 DEFINED_PHASES=compile install postinst prepare setup test unpack
-DEPEND=audit? ( sys-process/audit ) crypt? ( dev-libs/openssl:0= ) clang? ( sys-devel/clang:* sys-devel/llvm:* ) coresight? ( dev-libs/opencsd ) demangle? ( sys-libs/binutils-libs:= ) gtk? ( x11-libs/gtk+:2 ) java? ( virtual/jre:* ) lzma? ( app-arch/xz-utils ) numa? ( sys-process/numactl ) perl? ( dev-lang/perl:= ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) slang? ( sys-libs/slang ) systemtap? ( dev-util/systemtap ) unwind? ( sys-libs/llvm-libunwind ) zlib? ( sys-libs/zlib ) dev-libs/elfutils >=sys-kernel/linux-headers-4.4
+DEPEND=audit? ( sys-process/audit ) crypt? ( dev-libs/openssl:0= ) clang? ( sys-devel/clang:* sys-devel/llvm:* ) coresight? ( dev-libs/opencsd ) gtk? ( x11-libs/gtk+:2 ) java? ( virtual/jre:* ) lzma? ( app-arch/xz-utils ) numa? ( sys-process/numactl ) perl? ( dev-lang/perl:= ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) slang? ( sys-libs/slang ) systemtap? ( dev-util/systemtap ) unwind? ( sys-libs/llvm-libunwind ) zlib? ( sys-libs/zlib ) dev-libs/elfutils sys-libs/binutils-libs:= >=sys-kernel/linux-headers-4.4
 DESCRIPTION=Userland tools for Linux Performance Counters
 EAPI=7
 HOMEPAGE=https://perf.wiki.kernel.org/
 IUSE=audit clang coresight crypt debug +demangle +doc gtk java lzma numa perl python slang systemtap unwind zlib +python_single_target_python2_7 kernel_linux
 KEYWORDS=*
 LICENSE=GPL-2
-RDEPEND=audit? ( sys-process/audit ) crypt? ( dev-libs/openssl:0= ) clang? ( sys-devel/clang:* sys-devel/llvm:* ) coresight? ( dev-libs/opencsd ) demangle? ( sys-libs/binutils-libs:= ) gtk? ( x11-libs/gtk+:2 ) java? ( virtual/jre:* ) lzma? ( app-arch/xz-utils ) numa? ( sys-process/numactl ) perl? ( dev-lang/perl:= ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) slang? ( sys-libs/slang ) systemtap? ( dev-util/systemtap ) unwind? ( sys-libs/llvm-libunwind ) zlib? ( sys-libs/zlib ) dev-libs/elfutils
+RDEPEND=audit? ( sys-process/audit ) crypt? ( dev-libs/openssl:0= ) clang? ( sys-devel/clang:* sys-devel/llvm:* ) coresight? ( dev-libs/opencsd ) gtk? ( x11-libs/gtk+:2 ) java? ( virtual/jre:* ) lzma? ( app-arch/xz-utils ) numa? ( sys-process/numactl ) perl? ( dev-lang/perl:= ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) slang? ( sys-libs/slang ) systemtap? ( dev-util/systemtap ) unwind? ( sys-libs/llvm-libunwind ) zlib? ( sys-libs/zlib ) dev-libs/elfutils sys-libs/binutils-libs:=
 REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 ) )
 SLOT=0
 SRC_URI=https://www.kernel.org/pub/linux/kernel/v5.x/patch-5.3.7.xz https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.3.tar.xz
 _eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	multilib	2477ebe553d3e4d2c606191fe6c33602	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2e968844600d9c6385b815cc2fd56108
+_md5_=d3da095008284de39be1c4b725c0bd89
diff --git a/metadata/md5-cache/dev-util/perf-5.3.7-r12 b/metadata/md5-cache/dev-util/perf-5.3.7-r12
deleted file mode 100644
index 6a11102..0000000
--- a/metadata/md5-cache/dev-util/perf-5.3.7-r12
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-util/patchutils sys-devel/bison sys-devel/flex java? ( virtual/jdk ) doc? ( app-text/asciidoc app-text/sgml-common app-text/xmlto sys-process/time )
-DEFINED_PHASES=compile install postinst prepare setup test unpack
-DEPEND=audit? ( sys-process/audit ) crypt? ( dev-libs/openssl:0= ) clang? ( sys-devel/clang:* sys-devel/llvm:* ) coresight? ( dev-libs/opencsd ) demangle? ( sys-libs/binutils-libs:= ) gtk? ( x11-libs/gtk+:2 ) java? ( virtual/jre:* ) lzma? ( app-arch/xz-utils ) numa? ( sys-process/numactl ) perl? ( dev-lang/perl:= ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) slang? ( sys-libs/slang ) systemtap? ( dev-util/systemtap ) unwind? ( sys-libs/llvm-libunwind ) zlib? ( sys-libs/zlib ) dev-libs/elfutils >=sys-kernel/linux-headers-4.4
-DESCRIPTION=Userland tools for Linux Performance Counters
-EAPI=7
-HOMEPAGE=https://perf.wiki.kernel.org/
-IUSE=audit clang coresight crypt debug +demangle +doc gtk java lzma numa perl python slang systemtap unwind zlib +python_single_target_python2_7 kernel_linux
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=audit? ( sys-process/audit ) crypt? ( dev-libs/openssl:0= ) clang? ( sys-devel/clang:* sys-devel/llvm:* ) coresight? ( dev-libs/opencsd ) demangle? ( sys-libs/binutils-libs:= ) gtk? ( x11-libs/gtk+:2 ) java? ( virtual/jre:* ) lzma? ( app-arch/xz-utils ) numa? ( sys-process/numactl ) perl? ( dev-lang/perl:= ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) slang? ( sys-libs/slang ) systemtap? ( dev-util/systemtap ) unwind? ( sys-libs/llvm-libunwind ) zlib? ( sys-libs/zlib ) dev-libs/elfutils
-REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 ) )
-SLOT=0
-SRC_URI=https://www.kernel.org/pub/linux/kernel/v5.x/patch-5.3.7.xz https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.3.tar.xz
-_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	multilib	2477ebe553d3e4d2c606191fe6c33602	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2e968844600d9c6385b815cc2fd56108
diff --git a/metadata/md5-cache/dev-util/perf-5.3.7-r21 b/metadata/md5-cache/dev-util/perf-5.3.7-r21
new file mode 100644
index 0000000..2afc9ca
--- /dev/null
+++ b/metadata/md5-cache/dev-util/perf-5.3.7-r21
@@ -0,0 +1,15 @@
+BDEPEND=dev-util/patchutils sys-devel/bison sys-devel/flex java? ( virtual/jdk ) doc? ( app-text/asciidoc app-text/sgml-common app-text/xmlto sys-process/time )
+DEFINED_PHASES=compile install postinst prepare setup test unpack
+DEPEND=audit? ( sys-process/audit ) crypt? ( dev-libs/openssl:0= ) clang? ( sys-devel/clang:* sys-devel/llvm:* ) coresight? ( dev-libs/opencsd ) gtk? ( x11-libs/gtk+:2 ) java? ( virtual/jre:* ) lzma? ( app-arch/xz-utils ) numa? ( sys-process/numactl ) perl? ( dev-lang/perl:= ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) slang? ( sys-libs/slang ) systemtap? ( dev-util/systemtap ) unwind? ( sys-libs/llvm-libunwind ) zlib? ( sys-libs/zlib ) dev-libs/elfutils sys-libs/binutils-libs:= >=sys-kernel/linux-headers-4.4
+DESCRIPTION=Userland tools for Linux Performance Counters
+EAPI=7
+HOMEPAGE=https://perf.wiki.kernel.org/
+IUSE=audit clang coresight crypt debug +demangle +doc gtk java lzma numa perl python slang systemtap unwind zlib +python_single_target_python2_7 kernel_linux
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=audit? ( sys-process/audit ) crypt? ( dev-libs/openssl:0= ) clang? ( sys-devel/clang:* sys-devel/llvm:* ) coresight? ( dev-libs/opencsd ) gtk? ( x11-libs/gtk+:2 ) java? ( virtual/jre:* ) lzma? ( app-arch/xz-utils ) numa? ( sys-process/numactl ) perl? ( dev-lang/perl:= ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) slang? ( sys-libs/slang ) systemtap? ( dev-util/systemtap ) unwind? ( sys-libs/llvm-libunwind ) zlib? ( sys-libs/zlib ) dev-libs/elfutils sys-libs/binutils-libs:=
+REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 ) )
+SLOT=0
+SRC_URI=https://www.kernel.org/pub/linux/kernel/v5.x/patch-5.3.7.xz https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.3.tar.xz
+_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	multilib	2477ebe553d3e4d2c606191fe6c33602	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d3da095008284de39be1c4b725c0bd89
diff --git a/metadata/md5-cache/dev-util/provision-server-0.0.1-r7 b/metadata/md5-cache/dev-util/provision-server-0.0.1-r7
new file mode 100644
index 0000000..21b5f64
--- /dev/null
+++ b/metadata/md5-cache/dev-util/provision-server-0.0.1-r7
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=dev-util/lro-server dev-lang/go
+DESCRIPTION=Provision server implementation for installing CrOS on a test device
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/provision
+IUSE=cros_host cros_workon_tree_55dda3b3dc30d53d5401aa7b9aa5019068d99fbb
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-util/lro-server
+SLOT=0/0.0.1-r7
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f13503cfdc6c750cbf50a5e5517351d0
diff --git a/metadata/md5-cache/dev-util/provision-server-9999 b/metadata/md5-cache/dev-util/provision-server-9999
new file mode 100644
index 0000000..bc66990
--- /dev/null
+++ b/metadata/md5-cache/dev-util/provision-server-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=dev-util/lro-server dev-lang/go
+DESCRIPTION=Provision server implementation for installing CrOS on a test device
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/provision
+IUSE=cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-util/lro-server
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6ee329cb37cffecf0923b30603ba6e1c
diff --git a/metadata/md5-cache/dev-util/puffin-1.0.0-r437 b/metadata/md5-cache/dev-util/puffin-1.0.0-r437
deleted file mode 100644
index 1f7b523..0000000
--- a/metadata/md5-cache/dev-util/puffin-1.0.0-r437
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] dev-libs/protobuf:= dev-util/bsdiff:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Puffin: Deterministic patching tool for deflate streams
-EAPI=7
-HOMEPAGE=https://android.googlesource.com/platform/external/puffin/
-IUSE=asan fuzzer cros_host cros_workon_tree_824835433089136b9e63f6cfd441ed8c093fa54c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_bf3628aecbb786ad4e7a12068a4bc7c8b90bb88b cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_824835433089136b9e63f6cfd441ed8c093fa54c_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_bf3628aecbb786ad4e7a12068a4bc7c8b90bb88b cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] dev-libs/protobuf:= dev-util/bsdiff:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/1.0.0-r437
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d741a222b784321e39b58e2f39788e3b
diff --git a/metadata/md5-cache/dev-util/puffin-1.0.0-r439 b/metadata/md5-cache/dev-util/puffin-1.0.0-r439
new file mode 100644
index 0000000..7e18629
--- /dev/null
+++ b/metadata/md5-cache/dev-util/puffin-1.0.0-r439
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] dev-libs/protobuf:= dev-util/bsdiff:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Puffin: Deterministic patching tool for deflate streams
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/external/puffin/
+IUSE=asan fuzzer cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_d5b2e1140bb5d80e845bd170bd364e892b05ebd1 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_d5b2e1140bb5d80e845bd170bd364e892b05ebd1 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] dev-libs/protobuf:= dev-util/bsdiff:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/1.0.0-r439
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3dd385419ce684f0f688846056f21dd2
diff --git a/metadata/md5-cache/dev-util/puffin-9999 b/metadata/md5-cache/dev-util/puffin-9999
index 16adadc..03f9870 100644
--- a/metadata/md5-cache/dev-util/puffin-9999
+++ b/metadata/md5-cache/dev-util/puffin-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] dev-libs/protobuf:= dev-util/bsdiff:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] dev-libs/protobuf:= dev-util/bsdiff:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Puffin: Deterministic patching tool for deflate streams
 EAPI=7
 HOMEPAGE=https://android.googlesource.com/platform/external/puffin/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libbrillo:=[asan?,fuzzer?] dev-libs/protobuf:= dev-util/bsdiff:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=44d8bc079d66de408e3bd619bfb415c0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ca84877a0e8850875c81edff70e0a508
diff --git a/metadata/md5-cache/dev-util/sccache-0.2.13 b/metadata/md5-cache/dev-util/sccache-0.2.13
index 20aec6f..bbcddcf 100644
--- a/metadata/md5-cache/dev-util/sccache-0.2.13
+++ b/metadata/md5-cache/dev-util/sccache-0.2.13
@@ -10,5 +10,5 @@
 RDEPEND=dist-server? ( dev-libs/openssl:0= ) gcs? ( dev-libs/openssl:0= ) dist-server? ( sys-apps/bubblewrap )
 SLOT=0
 SRC_URI=https://github.com/mozilla/sccache/archive/0.2.13.tar.gz -> sccache-0.2.13.tar.gz https://crates.io/api/v1/crates/adler32/1.0.4/download -> adler32-1.0.4.crate https://crates.io/api/v1/crates/aho-corasick/0.7.6/download -> aho-corasick-0.7.6.crate https://crates.io/api/v1/crates/ansi_term/0.11.0/download -> ansi_term-0.11.0.crate https://crates.io/api/v1/crates/ar/0.6.2/download -> ar-0.6.2.crate https://crates.io/api/v1/crates/arc-swap/0.4.4/download -> arc-swap-0.4.4.crate https://crates.io/api/v1/crates/arrayref/0.3.5/download -> arrayref-0.3.5.crate https://crates.io/api/v1/crates/arrayvec/0.5.1/download -> arrayvec-0.5.1.crate https://crates.io/api/v1/crates/ascii/0.8.7/download -> ascii-0.8.7.crate https://crates.io/api/v1/crates/ascii/0.9.3/download -> ascii-0.9.3.crate https://crates.io/api/v1/crates/assert_cmd/0.9.1/download -> assert_cmd-0.9.1.crate https://crates.io/api/v1/crates/atty/0.2.13/download -> atty-0.2.13.crate https://crates.io/api/v1/crates/autocfg/0.1.7/download -> autocfg-0.1.7.crate https://crates.io/api/v1/crates/backtrace/0.3.40/download -> backtrace-0.3.40.crate https://crates.io/api/v1/crates/backtrace-sys/0.1.32/download -> backtrace-sys-0.1.32.crate https://crates.io/api/v1/crates/base64/0.10.1/download -> base64-0.10.1.crate https://crates.io/api/v1/crates/base64/0.11.0/download -> base64-0.11.0.crate https://crates.io/api/v1/crates/base64/0.9.3/download -> base64-0.9.3.crate https://crates.io/api/v1/crates/bincode/0.8.0/download -> bincode-0.8.0.crate https://crates.io/api/v1/crates/bincode/1.2.0/download -> bincode-1.2.0.crate https://crates.io/api/v1/crates/bincode/1.2.1/download -> bincode-1.2.1.crate https://crates.io/api/v1/crates/bitflags/1.2.1/download -> bitflags-1.2.1.crate https://crates.io/api/v1/crates/blake2b_simd/0.5.9/download -> blake2b_simd-0.5.9.crate https://crates.io/api/v1/crates/block-buffer/0.7.3/download -> block-buffer-0.7.3.crate https://crates.io/api/v1/crates/block-padding/0.1.5/download -> block-padding-0.1.5.crate https://crates.io/api/v1/crates/buf_redux/0.6.3/download -> buf_redux-0.6.3.crate https://crates.io/api/v1/crates/bufstream/0.1.4/download -> bufstream-0.1.4.crate https://crates.io/api/v1/crates/byte-tools/0.3.1/download -> byte-tools-0.3.1.crate https://crates.io/api/v1/crates/byteorder/1.3.2/download -> byteorder-1.3.2.crate https://crates.io/api/v1/crates/bytes/0.4.12/download -> bytes-0.4.12.crate https://crates.io/api/v1/crates/c2-chacha/0.2.3/download -> c2-chacha-0.2.3.crate https://crates.io/api/v1/crates/case/0.1.0/download -> case-0.1.0.crate https://crates.io/api/v1/crates/cc/1.0.48/download -> cc-1.0.48.crate https://crates.io/api/v1/crates/cfg-if/0.1.10/download -> cfg-if-0.1.10.crate https://crates.io/api/v1/crates/chrono/0.4.10/download -> chrono-0.4.10.crate https://crates.io/api/v1/crates/chunked_transfer/0.3.1/download -> chunked_transfer-0.3.1.crate https://crates.io/api/v1/crates/clap/2.33.0/download -> clap-2.33.0.crate https://crates.io/api/v1/crates/cloudabi/0.0.3/download -> cloudabi-0.0.3.crate https://crates.io/api/v1/crates/combine/3.8.1/download -> combine-3.8.1.crate https://crates.io/api/v1/crates/conhash/0.4.0/download -> conhash-0.4.0.crate https://crates.io/api/v1/crates/constant_time_eq/0.1.4/download -> constant_time_eq-0.1.4.crate https://crates.io/api/v1/crates/cookie/0.12.0/download -> cookie-0.12.0.crate https://crates.io/api/v1/crates/cookie_store/0.7.0/download -> cookie_store-0.7.0.crate https://crates.io/api/v1/crates/core-foundation/0.6.4/download -> core-foundation-0.6.4.crate https://crates.io/api/v1/crates/core-foundation-sys/0.6.2/download -> core-foundation-sys-0.6.2.crate https://crates.io/api/v1/crates/counted-array/0.1.2/download -> counted-array-0.1.2.crate https://crates.io/api/v1/crates/crc32fast/1.2.0/download -> crc32fast-1.2.0.crate https://crates.io/api/v1/crates/crossbeam-deque/0.7.2/download -> crossbeam-deque-0.7.2.crate https://crates.io/api/v1/crates/crossbeam-epoch/0.8.0/download -> crossbeam-epoch-0.8.0.crate https://crates.io/api/v1/crates/crossbeam-queue/0.1.2/download -> crossbeam-queue-0.1.2.crate https://crates.io/api/v1/crates/crossbeam-utils/0.5.0/download -> crossbeam-utils-0.5.0.crate https://crates.io/api/v1/crates/crossbeam-utils/0.6.6/download -> crossbeam-utils-0.6.6.crate https://crates.io/api/v1/crates/crossbeam-utils/0.7.0/download -> crossbeam-utils-0.7.0.crate https://crates.io/api/v1/crates/crypto-mac/0.7.0/download -> crypto-mac-0.7.0.crate https://crates.io/api/v1/crates/daemonize/0.3.0/download -> daemonize-0.3.0.crate https://crates.io/api/v1/crates/derive-error/0.0.3/download -> derive-error-0.0.3.crate https://crates.io/api/v1/crates/difference/2.0.0/download -> difference-2.0.0.crate https://crates.io/api/v1/crates/digest/0.8.1/download -> digest-0.8.1.crate https://crates.io/api/v1/crates/directories/1.0.2/download -> directories-1.0.2.crate https://crates.io/api/v1/crates/dirs/1.0.5/download -> dirs-1.0.5.crate https://crates.io/api/v1/crates/dtoa/0.4.4/download -> dtoa-0.4.4.crate https://crates.io/api/v1/crates/either/1.5.3/download -> either-1.5.3.crate https://crates.io/api/v1/crates/encoding_rs/0.8.20/download -> encoding_rs-0.8.20.crate https://crates.io/api/v1/crates/env_logger/0.5.13/download -> env_logger-0.5.13.crate https://crates.io/api/v1/crates/error-chain/0.11.0/download -> error-chain-0.11.0.crate https://crates.io/api/v1/crates/error-chain/0.12.1/download -> error-chain-0.12.1.crate https://crates.io/api/v1/crates/escargot/0.3.1/download -> escargot-0.3.1.crate https://crates.io/api/v1/crates/failure/0.1.6/download -> failure-0.1.6.crate https://crates.io/api/v1/crates/failure_derive/0.1.6/download -> failure_derive-0.1.6.crate https://crates.io/api/v1/crates/fake-simd/0.1.2/download -> fake-simd-0.1.2.crate https://crates.io/api/v1/crates/filetime/0.1.15/download -> filetime-0.1.15.crate https://crates.io/api/v1/crates/filetime/0.2.8/download -> filetime-0.2.8.crate https://crates.io/api/v1/crates/flate2/1.0.13/download -> flate2-1.0.13.crate https://crates.io/api/v1/crates/float-cmp/0.4.0/download -> float-cmp-0.4.0.crate https://crates.io/api/v1/crates/fnv/1.0.6/download -> fnv-1.0.6.crate https://crates.io/api/v1/crates/foreign-types/0.3.2/download -> foreign-types-0.3.2.crate https://crates.io/api/v1/crates/foreign-types-shared/0.1.1/download -> foreign-types-shared-0.1.1.crate https://crates.io/api/v1/crates/fuchsia-cprng/0.1.1/download -> fuchsia-cprng-0.1.1.crate https://crates.io/api/v1/crates/fuchsia-zircon/0.3.3/download -> fuchsia-zircon-0.3.3.crate https://crates.io/api/v1/crates/fuchsia-zircon-sys/0.3.3/download -> fuchsia-zircon-sys-0.3.3.crate https://crates.io/api/v1/crates/futures/0.1.29/download -> futures-0.1.29.crate https://crates.io/api/v1/crates/futures-cpupool/0.1.8/download -> futures-cpupool-0.1.8.crate https://crates.io/api/v1/crates/generic-array/0.12.3/download -> generic-array-0.12.3.crate https://crates.io/api/v1/crates/getopts/0.2.21/download -> getopts-0.2.21.crate https://crates.io/api/v1/crates/getrandom/0.1.13/download -> getrandom-0.1.13.crate https://crates.io/api/v1/crates/h2/0.1.26/download -> h2-0.1.26.crate https://crates.io/api/v1/crates/hermit-abi/0.1.3/download -> hermit-abi-0.1.3.crate https://crates.io/api/v1/crates/hmac/0.7.1/download -> hmac-0.7.1.crate https://crates.io/api/v1/crates/http/0.1.21/download -> http-0.1.21.crate https://crates.io/api/v1/crates/http-body/0.1.0/download -> http-body-0.1.0.crate https://crates.io/api/v1/crates/httparse/1.3.4/download -> httparse-1.3.4.crate https://crates.io/api/v1/crates/humantime/1.3.0/download -> humantime-1.3.0.crate https://crates.io/api/v1/crates/hyper/0.12.35/download -> hyper-0.12.35.crate https://crates.io/api/v1/crates/hyper-tls/0.3.2/download -> hyper-tls-0.3.2.crate https://crates.io/api/v1/crates/hyperx/0.12.0/download -> hyperx-0.12.0.crate https://crates.io/api/v1/crates/idna/0.1.5/download -> idna-0.1.5.crate https://crates.io/api/v1/crates/idna/0.2.0/download -> idna-0.2.0.crate https://crates.io/api/v1/crates/indexmap/1.3.0/download -> indexmap-1.3.0.crate https://crates.io/api/v1/crates/iovec/0.1.4/download -> iovec-0.1.4.crate https://crates.io/api/v1/crates/itertools/0.7.11/download -> itertools-0.7.11.crate https://crates.io/api/v1/crates/itoa/0.3.4/download -> itoa-0.3.4.crate https://crates.io/api/v1/crates/itoa/0.4.4/download -> itoa-0.4.4.crate https://crates.io/api/v1/crates/jobserver/0.1.19/download -> jobserver-0.1.19.crate https://crates.io/api/v1/crates/jsonwebtoken/6.0.1/download -> jsonwebtoken-6.0.1.crate https://crates.io/api/v1/crates/kernel32-sys/0.2.2/download -> kernel32-sys-0.2.2.crate https://crates.io/api/v1/crates/language-tags/0.2.2/download -> language-tags-0.2.2.crate https://crates.io/api/v1/crates/lazy_static/1.4.0/download -> lazy_static-1.4.0.crate https://crates.io/api/v1/crates/libc/0.2.66/download -> libc-0.2.66.crate https://crates.io/api/v1/crates/libmount/0.1.15/download -> libmount-0.1.15.crate https://crates.io/api/v1/crates/libz-sys/1.0.25/download -> libz-sys-1.0.25.crate https://crates.io/api/v1/crates/linked-hash-map/0.2.1/download -> linked-hash-map-0.2.1.crate https://crates.io/api/v1/crates/local-encoding/0.2.0/download -> local-encoding-0.2.0.crate https://crates.io/api/v1/crates/lock_api/0.3.2/download -> lock_api-0.3.2.crate https://crates.io/api/v1/crates/log/0.3.9/download -> log-0.3.9.crate https://crates.io/api/v1/crates/log/0.4.8/download -> log-0.4.8.crate https://crates.io/api/v1/crates/lru-disk-cache/0.4.0/download -> lru-disk-cache-0.4.0.crate https://crates.io/api/v1/crates/matches/0.1.8/download -> matches-0.1.8.crate https://crates.io/api/v1/crates/maybe-uninit/2.0.0/download -> maybe-uninit-2.0.0.crate https://crates.io/api/v1/crates/md-5/0.8.0/download -> md-5-0.8.0.crate https://crates.io/api/v1/crates/md5/0.3.8/download -> md5-0.3.8.crate https://crates.io/api/v1/crates/memcached-rs/0.3.0/download -> memcached-rs-0.3.0.crate https://crates.io/api/v1/crates/memchr/1.0.2/download -> memchr-1.0.2.crate https://crates.io/api/v1/crates/memchr/2.2.1/download -> memchr-2.2.1.crate https://crates.io/api/v1/crates/memoffset/0.5.3/download -> memoffset-0.5.3.crate https://crates.io/api/v1/crates/mime/0.2.6/download -> mime-0.2.6.crate https://crates.io/api/v1/crates/mime/0.3.14/download -> mime-0.3.14.crate https://crates.io/api/v1/crates/mime_guess/1.8.7/download -> mime_guess-1.8.7.crate https://crates.io/api/v1/crates/mime_guess/2.0.1/download -> mime_guess-2.0.1.crate https://crates.io/api/v1/crates/miniz_oxide/0.3.5/download -> miniz_oxide-0.3.5.crate https://crates.io/api/v1/crates/mio/0.6.21/download -> mio-0.6.21.crate https://crates.io/api/v1/crates/mio-named-pipes/0.1.6/download -> mio-named-pipes-0.1.6.crate https://crates.io/api/v1/crates/mio-uds/0.6.7/download -> mio-uds-0.6.7.crate https://crates.io/api/v1/crates/miow/0.2.1/download -> miow-0.2.1.crate https://crates.io/api/v1/crates/miow/0.3.3/download -> miow-0.3.3.crate https://crates.io/api/v1/crates/msdos_time/0.1.6/download -> msdos_time-0.1.6.crate https://crates.io/api/v1/crates/multipart/0.13.6/download -> multipart-0.13.6.crate https://crates.io/api/v1/crates/native-tls/0.2.3/download -> native-tls-0.2.3.crate https://crates.io/api/v1/crates/net2/0.2.33/download -> net2-0.2.33.crate https://crates.io/api/v1/crates/nix/0.11.1/download -> nix-0.11.1.crate https://crates.io/api/v1/crates/nix/0.14.1/download -> nix-0.14.1.crate https://crates.io/api/v1/crates/normalize-line-endings/0.2.2/download -> normalize-line-endings-0.2.2.crate https://crates.io/api/v1/crates/num-integer/0.1.41/download -> num-integer-0.1.41.crate https://crates.io/api/v1/crates/num-traits/0.1.43/download -> num-traits-0.1.43.crate https://crates.io/api/v1/crates/num-traits/0.2.10/download -> num-traits-0.2.10.crate https://crates.io/api/v1/crates/num_cpus/1.11.1/download -> num_cpus-1.11.1.crate https://crates.io/api/v1/crates/number_prefix/0.2.8/download -> number_prefix-0.2.8.crate https://crates.io/api/v1/crates/opaque-debug/0.2.3/download -> opaque-debug-0.2.3.crate https://crates.io/api/v1/crates/openssl/0.10.26/download -> openssl-0.10.26.crate https://crates.io/api/v1/crates/openssl-probe/0.1.2/download -> openssl-probe-0.1.2.crate https://crates.io/api/v1/crates/openssl-sys/0.9.53/download -> openssl-sys-0.9.53.crate https://crates.io/api/v1/crates/parking_lot/0.9.0/download -> parking_lot-0.9.0.crate https://crates.io/api/v1/crates/parking_lot_core/0.6.2/download -> parking_lot_core-0.6.2.crate https://crates.io/api/v1/crates/percent-encoding/1.0.1/download -> percent-encoding-1.0.1.crate https://crates.io/api/v1/crates/percent-encoding/2.1.0/download -> percent-encoding-2.1.0.crate https://crates.io/api/v1/crates/phf/0.7.24/download -> phf-0.7.24.crate https://crates.io/api/v1/crates/phf_codegen/0.7.24/download -> phf_codegen-0.7.24.crate https://crates.io/api/v1/crates/phf_generator/0.7.24/download -> phf_generator-0.7.24.crate https://crates.io/api/v1/crates/phf_shared/0.7.24/download -> phf_shared-0.7.24.crate https://crates.io/api/v1/crates/pkg-config/0.3.17/download -> pkg-config-0.3.17.crate https://crates.io/api/v1/crates/podio/0.1.6/download -> podio-0.1.6.crate https://crates.io/api/v1/crates/ppv-lite86/0.2.6/download -> ppv-lite86-0.2.6.crate https://crates.io/api/v1/crates/predicates/0.9.1/download -> predicates-0.9.1.crate https://crates.io/api/v1/crates/predicates-core/0.9.0/download -> predicates-core-0.9.0.crate https://crates.io/api/v1/crates/predicates-tree/0.9.0/download -> predicates-tree-0.9.0.crate https://crates.io/api/v1/crates/proc-macro2/1.0.6/download -> proc-macro2-1.0.6.crate https://crates.io/api/v1/crates/publicsuffix/1.5.4/download -> publicsuffix-1.5.4.crate https://crates.io/api/v1/crates/pulldown-cmark/0.0.3/download -> pulldown-cmark-0.0.3.crate https://crates.io/api/v1/crates/quick-error/1.2.2/download -> quick-error-1.2.2.crate https://crates.io/api/v1/crates/quote/0.3.15/download -> quote-0.3.15.crate https://crates.io/api/v1/crates/quote/1.0.2/download -> quote-1.0.2.crate https://crates.io/api/v1/crates/rand/0.3.23/download -> rand-0.3.23.crate https://crates.io/api/v1/crates/rand/0.4.6/download -> rand-0.4.6.crate https://crates.io/api/v1/crates/rand/0.5.6/download -> rand-0.5.6.crate https://crates.io/api/v1/crates/rand/0.6.5/download -> rand-0.6.5.crate https://crates.io/api/v1/crates/rand/0.7.2/download -> rand-0.7.2.crate https://crates.io/api/v1/crates/rand_chacha/0.1.1/download -> rand_chacha-0.1.1.crate https://crates.io/api/v1/crates/rand_chacha/0.2.1/download -> rand_chacha-0.2.1.crate https://crates.io/api/v1/crates/rand_core/0.3.1/download -> rand_core-0.3.1.crate https://crates.io/api/v1/crates/rand_core/0.4.2/download -> rand_core-0.4.2.crate https://crates.io/api/v1/crates/rand_core/0.5.1/download -> rand_core-0.5.1.crate https://crates.io/api/v1/crates/rand_hc/0.1.0/download -> rand_hc-0.1.0.crate https://crates.io/api/v1/crates/rand_hc/0.2.0/download -> rand_hc-0.2.0.crate https://crates.io/api/v1/crates/rand_isaac/0.1.1/download -> rand_isaac-0.1.1.crate https://crates.io/api/v1/crates/rand_jitter/0.1.4/download -> rand_jitter-0.1.4.crate https://crates.io/api/v1/crates/rand_os/0.1.3/download -> rand_os-0.1.3.crate https://crates.io/api/v1/crates/rand_pcg/0.1.2/download -> rand_pcg-0.1.2.crate https://crates.io/api/v1/crates/rand_xorshift/0.1.1/download -> rand_xorshift-0.1.1.crate https://crates.io/api/v1/crates/rdrand/0.4.0/download -> rdrand-0.4.0.crate https://crates.io/api/v1/crates/redis/0.9.1/download -> redis-0.9.1.crate https://crates.io/api/v1/crates/redox_syscall/0.1.56/download -> redox_syscall-0.1.56.crate https://crates.io/api/v1/crates/redox_users/0.3.1/download -> redox_users-0.3.1.crate https://crates.io/api/v1/crates/regex/1.3.1/download -> regex-1.3.1.crate https://crates.io/api/v1/crates/regex-syntax/0.6.12/download -> regex-syntax-0.6.12.crate https://crates.io/api/v1/crates/remove_dir_all/0.5.2/download -> remove_dir_all-0.5.2.crate https://crates.io/api/v1/crates/reqwest/0.9.22/download -> reqwest-0.9.22.crate https://crates.io/api/v1/crates/retry/0.4.0/download -> retry-0.4.0.crate https://crates.io/api/v1/crates/ring/0.14.6/download -> ring-0.14.6.crate https://crates.io/api/v1/crates/rouille/2.2.0/download -> rouille-2.2.0.crate https://crates.io/api/v1/crates/rust-argon2/0.5.1/download -> rust-argon2-0.5.1.crate https://crates.io/api/v1/crates/rustc-demangle/0.1.16/download -> rustc-demangle-0.1.16.crate https://crates.io/api/v1/crates/rustc_version/0.2.3/download -> rustc_version-0.2.3.crate https://crates.io/api/v1/crates/ryu/1.0.2/download -> ryu-1.0.2.crate https://crates.io/api/v1/crates/safemem/0.2.0/download -> safemem-0.2.0.crate https://crates.io/api/v1/crates/safemem/0.3.3/download -> safemem-0.3.3.crate https://crates.io/api/v1/crates/same-file/0.1.3/download -> same-file-0.1.3.crate https://crates.io/api/v1/crates/sccache/0.2.13/download -> sccache-0.2.13.crate https://crates.io/api/v1/crates/schannel/0.1.16/download -> schannel-0.1.16.crate https://crates.io/api/v1/crates/scopeguard/1.0.0/download -> scopeguard-1.0.0.crate https://crates.io/api/v1/crates/security-framework/0.3.4/download -> security-framework-0.3.4.crate https://crates.io/api/v1/crates/security-framework-sys/0.3.3/download -> security-framework-sys-0.3.3.crate https://crates.io/api/v1/crates/selenium-rs/0.1.1/download -> selenium-rs-0.1.1.crate https://crates.io/api/v1/crates/semver/0.9.0/download -> semver-0.9.0.crate https://crates.io/api/v1/crates/semver-parser/0.7.0/download -> semver-parser-0.7.0.crate https://crates.io/api/v1/crates/serde/1.0.103/download -> serde-1.0.103.crate https://crates.io/api/v1/crates/serde_derive/1.0.103/download -> serde_derive-1.0.103.crate https://crates.io/api/v1/crates/serde_json/1.0.44/download -> serde_json-1.0.44.crate https://crates.io/api/v1/crates/serde_urlencoded/0.5.5/download -> serde_urlencoded-0.5.5.crate https://crates.io/api/v1/crates/sha-1/0.8.1/download -> sha-1-0.8.1.crate https://crates.io/api/v1/crates/sha1/0.6.0/download -> sha1-0.6.0.crate https://crates.io/api/v1/crates/sha2/0.8.0/download -> sha2-0.8.0.crate https://crates.io/api/v1/crates/signal-hook/0.1.12/download -> signal-hook-0.1.12.crate https://crates.io/api/v1/crates/signal-hook-registry/1.2.0/download -> signal-hook-registry-1.2.0.crate https://crates.io/api/v1/crates/siphasher/0.2.3/download -> siphasher-0.2.3.crate https://crates.io/api/v1/crates/skeptic/0.4.0/download -> skeptic-0.4.0.crate https://crates.io/api/v1/crates/slab/0.4.2/download -> slab-0.4.2.crate https://crates.io/api/v1/crates/smallvec/0.6.13/download -> smallvec-0.6.13.crate https://crates.io/api/v1/crates/smallvec/1.0.0/download -> smallvec-1.0.0.crate https://crates.io/api/v1/crates/socket2/0.3.11/download -> socket2-0.3.11.crate https://crates.io/api/v1/crates/spin/0.5.2/download -> spin-0.5.2.crate https://crates.io/api/v1/crates/string/0.2.1/download -> string-0.2.1.crate https://crates.io/api/v1/crates/strip-ansi-escapes/0.1.0/download -> strip-ansi-escapes-0.1.0.crate https://crates.io/api/v1/crates/strsim/0.8.0/download -> strsim-0.8.0.crate https://crates.io/api/v1/crates/subtle/1.0.0/download -> subtle-1.0.0.crate https://crates.io/api/v1/crates/syn/0.11.11/download -> syn-0.11.11.crate https://crates.io/api/v1/crates/syn/1.0.11/download -> syn-1.0.11.crate https://crates.io/api/v1/crates/synom/0.11.3/download -> synom-0.11.3.crate https://crates.io/api/v1/crates/synstructure/0.12.3/download -> synstructure-0.12.3.crate https://crates.io/api/v1/crates/syslog/4.0.1/download -> syslog-4.0.1.crate https://crates.io/api/v1/crates/tar/0.4.26/download -> tar-0.4.26.crate https://crates.io/api/v1/crates/tempdir/0.3.7/download -> tempdir-0.3.7.crate https://crates.io/api/v1/crates/tempfile/3.1.0/download -> tempfile-3.1.0.crate https://crates.io/api/v1/crates/term/0.5.2/download -> term-0.5.2.crate https://crates.io/api/v1/crates/termcolor/1.0.5/download -> termcolor-1.0.5.crate https://crates.io/api/v1/crates/textwrap/0.11.0/download -> textwrap-0.11.0.crate https://crates.io/api/v1/crates/thread_local/0.3.6/download -> thread_local-0.3.6.crate https://crates.io/api/v1/crates/threadpool/1.7.1/download -> threadpool-1.7.1.crate https://crates.io/api/v1/crates/time/0.1.42/download -> time-0.1.42.crate https://crates.io/api/v1/crates/tiny_http/0.6.2/download -> tiny_http-0.6.2.crate https://crates.io/api/v1/crates/tokio/0.1.22/download -> tokio-0.1.22.crate https://crates.io/api/v1/crates/tokio-buf/0.1.1/download -> tokio-buf-0.1.1.crate https://crates.io/api/v1/crates/tokio-codec/0.1.1/download -> tokio-codec-0.1.1.crate https://crates.io/api/v1/crates/tokio-current-thread/0.1.6/download -> tokio-current-thread-0.1.6.crate https://crates.io/api/v1/crates/tokio-executor/0.1.9/download -> tokio-executor-0.1.9.crate https://crates.io/api/v1/crates/tokio-fs/0.1.6/download -> tokio-fs-0.1.6.crate https://crates.io/api/v1/crates/tokio-io/0.1.12/download -> tokio-io-0.1.12.crate https://crates.io/api/v1/crates/tokio-named-pipes/0.1.0/download -> tokio-named-pipes-0.1.0.crate https://crates.io/api/v1/crates/tokio-process/0.2.4/download -> tokio-process-0.2.4.crate https://crates.io/api/v1/crates/tokio-reactor/0.1.11/download -> tokio-reactor-0.1.11.crate https://crates.io/api/v1/crates/tokio-serde/0.1.0/download -> tokio-serde-0.1.0.crate https://crates.io/api/v1/crates/tokio-serde-bincode/0.1.1/download -> tokio-serde-bincode-0.1.1.crate https://crates.io/api/v1/crates/tokio-signal/0.2.7/download -> tokio-signal-0.2.7.crate https://crates.io/api/v1/crates/tokio-sync/0.1.7/download -> tokio-sync-0.1.7.crate https://crates.io/api/v1/crates/tokio-tcp/0.1.3/download -> tokio-tcp-0.1.3.crate https://crates.io/api/v1/crates/tokio-threadpool/0.1.17/download -> tokio-threadpool-0.1.17.crate https://crates.io/api/v1/crates/tokio-timer/0.2.12/download -> tokio-timer-0.2.12.crate https://crates.io/api/v1/crates/tokio-udp/0.1.5/download -> tokio-udp-0.1.5.crate https://crates.io/api/v1/crates/tokio-uds/0.2.5/download -> tokio-uds-0.2.5.crate https://crates.io/api/v1/crates/toml/0.4.10/download -> toml-0.4.10.crate https://crates.io/api/v1/crates/tower/0.1.1/download -> tower-0.1.1.crate https://crates.io/api/v1/crates/tower-buffer/0.1.2/download -> tower-buffer-0.1.2.crate https://crates.io/api/v1/crates/tower-discover/0.1.0/download -> tower-discover-0.1.0.crate https://crates.io/api/v1/crates/tower-layer/0.1.0/download -> tower-layer-0.1.0.crate https://crates.io/api/v1/crates/tower-limit/0.1.1/download -> tower-limit-0.1.1.crate https://crates.io/api/v1/crates/tower-load-shed/0.1.0/download -> tower-load-shed-0.1.0.crate https://crates.io/api/v1/crates/tower-retry/0.1.0/download -> tower-retry-0.1.0.crate https://crates.io/api/v1/crates/tower-service/0.2.0/download -> tower-service-0.2.0.crate https://crates.io/api/v1/crates/tower-timeout/0.1.1/download -> tower-timeout-0.1.1.crate https://crates.io/api/v1/crates/tower-util/0.1.0/download -> tower-util-0.1.0.crate https://crates.io/api/v1/crates/tracing/0.1.10/download -> tracing-0.1.10.crate https://crates.io/api/v1/crates/tracing-attributes/0.1.5/download -> tracing-attributes-0.1.5.crate https://crates.io/api/v1/crates/tracing-core/0.1.7/download -> tracing-core-0.1.7.crate https://crates.io/api/v1/crates/treeline/0.1.0/download -> treeline-0.1.0.crate https://crates.io/api/v1/crates/try-lock/0.2.2/download -> try-lock-0.2.2.crate https://crates.io/api/v1/crates/try_from/0.3.2/download -> try_from-0.3.2.crate https://crates.io/api/v1/crates/twoway/0.1.8/download -> twoway-0.1.8.crate https://crates.io/api/v1/crates/typenum/1.11.2/download -> typenum-1.11.2.crate https://crates.io/api/v1/crates/unicase/1.4.2/download -> unicase-1.4.2.crate https://crates.io/api/v1/crates/unicase/2.6.0/download -> unicase-2.6.0.crate https://crates.io/api/v1/crates/unicode-bidi/0.3.4/download -> unicode-bidi-0.3.4.crate https://crates.io/api/v1/crates/unicode-normalization/0.1.11/download -> unicode-normalization-0.1.11.crate https://crates.io/api/v1/crates/unicode-width/0.1.7/download -> unicode-width-0.1.7.crate https://crates.io/api/v1/crates/unicode-xid/0.0.4/download -> unicode-xid-0.0.4.crate https://crates.io/api/v1/crates/unicode-xid/0.2.0/download -> unicode-xid-0.2.0.crate https://crates.io/api/v1/crates/unix_socket/0.5.0/download -> unix_socket-0.5.0.crate https://crates.io/api/v1/crates/unreachable/1.0.0/download -> unreachable-1.0.0.crate https://crates.io/api/v1/crates/untrusted/0.6.2/download -> untrusted-0.6.2.crate https://crates.io/api/v1/crates/url/1.7.2/download -> url-1.7.2.crate https://crates.io/api/v1/crates/url/2.1.0/download -> url-2.1.0.crate https://crates.io/api/v1/crates/utf8parse/0.1.1/download -> utf8parse-0.1.1.crate https://crates.io/api/v1/crates/uuid/0.7.4/download -> uuid-0.7.4.crate https://crates.io/api/v1/crates/vcpkg/0.2.8/download -> vcpkg-0.2.8.crate https://crates.io/api/v1/crates/vec_map/0.8.1/download -> vec_map-0.8.1.crate https://crates.io/api/v1/crates/version-compare/0.0.10/download -> version-compare-0.0.10.crate https://crates.io/api/v1/crates/version_check/0.1.5/download -> version_check-0.1.5.crate https://crates.io/api/v1/crates/version_check/0.9.1/download -> version_check-0.9.1.crate https://crates.io/api/v1/crates/void/1.0.2/download -> void-1.0.2.crate https://crates.io/api/v1/crates/vte/0.3.3/download -> vte-0.3.3.crate https://crates.io/api/v1/crates/walkdir/1.0.7/download -> walkdir-1.0.7.crate https://crates.io/api/v1/crates/want/0.2.0/download -> want-0.2.0.crate https://crates.io/api/v1/crates/wasi/0.7.0/download -> wasi-0.7.0.crate https://crates.io/api/v1/crates/which/2.0.1/download -> which-2.0.1.crate https://crates.io/api/v1/crates/winapi/0.2.8/download -> winapi-0.2.8.crate https://crates.io/api/v1/crates/winapi/0.3.8/download -> winapi-0.3.8.crate https://crates.io/api/v1/crates/winapi-build/0.1.1/download -> winapi-build-0.1.1.crate https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download -> winapi-i686-pc-windows-gnu-0.4.0.crate https://crates.io/api/v1/crates/winapi-util/0.1.2/download -> winapi-util-0.1.2.crate https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download -> winapi-x86_64-pc-windows-gnu-0.4.0.crate https://crates.io/api/v1/crates/wincolor/1.0.2/download -> wincolor-1.0.2.crate https://crates.io/api/v1/crates/winreg/0.6.2/download -> winreg-0.6.2.crate https://crates.io/api/v1/crates/ws2_32-sys/0.2.1/download -> ws2_32-sys-0.2.1.crate https://crates.io/api/v1/crates/xattr/0.2.2/download -> xattr-0.2.2.crate https://crates.io/api/v1/crates/zip/0.4.2/download -> zip-0.4.2.crate
-_eclasses_=cargo	378185a01fbe9ce3ab1cff0a241ecd00	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	optfeature	6c9aa35fc16df43d7142ef2660e00e25	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cargo	378185a01fbe9ce3ab1cff0a241ecd00	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	optfeature	f4941a15f8b66955c45f7b0e7c4ae890	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=cadea8621179b89bfadafda21cff556e
diff --git a/metadata/md5-cache/dev-util/servo-config-dut-usb3-public-0.0.1-r1 b/metadata/md5-cache/dev-util/servo-config-dut-usb3-public-0.0.1-r1
index 93888f5..cfbf63e 100644
--- a/metadata/md5-cache/dev-util/servo-config-dut-usb3-public-0.0.1-r1
+++ b/metadata/md5-cache/dev-util/servo-config-dut-usb3-public-0.0.1-r1
@@ -7,5 +7,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/0.0.1-r1
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=eec52536e2d7064e4a2a0317da7e1678
diff --git a/metadata/md5-cache/dev-util/servo-config-dut-usb3-public-9999 b/metadata/md5-cache/dev-util/servo-config-dut-usb3-public-9999
index 2164ab7f5..c6cc389 100644
--- a/metadata/md5-cache/dev-util/servo-config-dut-usb3-public-9999
+++ b/metadata/md5-cache/dev-util/servo-config-dut-usb3-public-9999
@@ -7,5 +7,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=5abe71be9ad5e6a301efbb42f2c83a69
diff --git a/metadata/md5-cache/dev-util/shellcheck-0.7.1-r39 b/metadata/md5-cache/dev-util/shellcheck-0.7.1-r39
deleted file mode 100644
index 841e1d0..0000000
--- a/metadata/md5-cache/dev-util/shellcheck-0.7.1-r39
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst postrm setup test unpack
-DEPEND=dev-haskell/aeson:=[profile?] >=dev-haskell/diff-0.2.0:=[profile?] >=dev-haskell/mtl-2.2.1:=[profile?] >=dev-haskell/parsec-3.0:=[profile?] >=dev-haskell/quickcheck-2.7.4:2=[template_haskell,profile?] dev-haskell/regex-tdfa:=[profile?] dev-haskell/semigroups:=[profile?] >=dev-lang/ghc-7.8.2:= >=dev-haskell/cabal-1.18.1.3 <dev-haskell/cabal-2.5 dev-libs/gmp[static-libs] dev-libs/libffi[static-libs] doc? ( || ( dev-haskell/haddock >=dev-lang/ghc-7.10.2 ) ) hscolour? ( dev-haskell/hscolour )
-DESCRIPTION=Shell script analysis tool
-EAPI=6
-HOMEPAGE=https://www.shellcheck.net/
-IUSE=cros_host cros_workon_tree_2acafa54b76af021c96feb8e11cc38e07015c6e5 doc hscolour profile test
-KEYWORDS=*
-LICENSE=GPL-3
-PROPERTIES=live
-RESTRICT=!test? ( test )
-SLOT=0/0.7.1
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2c0e36cf3176d2a5bfe110ec00e525ae
diff --git a/metadata/md5-cache/dev-util/shellcheck-0.7.1-r44 b/metadata/md5-cache/dev-util/shellcheck-0.7.1-r44
new file mode 100644
index 0000000..c6f5e53
--- /dev/null
+++ b/metadata/md5-cache/dev-util/shellcheck-0.7.1-r44
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install postinst postrm setup test unpack
+DEPEND=dev-haskell/aeson:=[profile?] >=dev-haskell/diff-0.2.0:=[profile?] >=dev-haskell/mtl-2.2.1:=[profile?] >=dev-haskell/parsec-3.0:=[profile?] >=dev-haskell/quickcheck-2.7.4:2=[template_haskell,profile?] dev-haskell/regex-tdfa:=[profile?] dev-haskell/semigroups:=[profile?] >=dev-lang/ghc-7.8.2:= >=dev-haskell/cabal-1.18.1.3 <dev-haskell/cabal-2.5 dev-libs/gmp[static-libs] dev-libs/libffi[static-libs] doc? ( || ( dev-haskell/haddock >=dev-lang/ghc-7.10.2 ) ) hscolour? ( dev-haskell/hscolour )
+DESCRIPTION=Shell script analysis tool
+EAPI=6
+HOMEPAGE=https://www.shellcheck.net/
+IUSE=cros_host cros_workon_tree_a3d8fd0085198723b1f72f5a33e974abd59d352d doc hscolour profile test
+KEYWORDS=*
+LICENSE=GPL-3
+PROPERTIES=live
+RESTRICT=!test? ( test )
+SLOT=0/0.7.1
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=945ede78ce88a9cf996dda8153ed31e1
diff --git a/metadata/md5-cache/dev-util/shellcheck-9999 b/metadata/md5-cache/dev-util/shellcheck-9999
index 03feef6..9a12d8d 100644
--- a/metadata/md5-cache/dev-util/shellcheck-9999
+++ b/metadata/md5-cache/dev-util/shellcheck-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RESTRICT=!test? ( test )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ghc-package	cfc8267c6151d804d0c34bf9e180533f	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	haskell-cabal	433b5153bec6b0ffe21c7be2210e8396	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6b3be2cd504ce526a33c180b6eb5b232
diff --git a/metadata/md5-cache/dev-util/shflags-1.0.3 b/metadata/md5-cache/dev-util/shflags-1.0.3
deleted file mode 100644
index 659fa41..0000000
--- a/metadata/md5-cache/dev-util/shflags-1.0.3
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=install prepare test
-DESCRIPTION=Command-line flags module for Unix shell scripts
-EAPI=4
-HOMEPAGE=http://code.google.com/p/shflags/
-IUSE=examples
-KEYWORDS=*
-LICENSE=LGPL-2.1
-SLOT=0
-SRC_URI=http://shflags.googlecode.com/files/shflags-1.0.3.tgz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=84327947dc9858bff6af7b219fbaa3c1
diff --git a/metadata/md5-cache/dev-util/shflags-1.0.3-r1 b/metadata/md5-cache/dev-util/shflags-1.0.3-r1
deleted file mode 100644
index 659fa41..0000000
--- a/metadata/md5-cache/dev-util/shflags-1.0.3-r1
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=install prepare test
-DESCRIPTION=Command-line flags module for Unix shell scripts
-EAPI=4
-HOMEPAGE=http://code.google.com/p/shflags/
-IUSE=examples
-KEYWORDS=*
-LICENSE=LGPL-2.1
-SLOT=0
-SRC_URI=http://shflags.googlecode.com/files/shflags-1.0.3.tgz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=84327947dc9858bff6af7b219fbaa3c1
diff --git a/metadata/md5-cache/dev-util/stressapptest-1.0.9 b/metadata/md5-cache/dev-util/stressapptest-1.0.9
index 41c9c1c..f4f64a6 100644
--- a/metadata/md5-cache/dev-util/stressapptest-1.0.9
+++ b/metadata/md5-cache/dev-util/stressapptest-1.0.9
@@ -10,4 +10,4 @@
 SLOT=0
 SRC_URI=https://github.com/stressapptest/stressapptest/archive/v1.0.9.tar.gz -> stressapptest-1.0.9.tar.gz
 _eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=70f67c4c94bca2a6da4430c6775a4d32
+_md5_=74eb3571eb65290e26aafb940b310de7
diff --git a/metadata/md5-cache/dev-util/stressapptest-1.0.9-r4 b/metadata/md5-cache/dev-util/stressapptest-1.0.9-r4
deleted file mode 100644
index 41c9c1c..0000000
--- a/metadata/md5-cache/dev-util/stressapptest-1.0.9-r4
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare
-DEPEND=dev-libs/libaio
-DESCRIPTION=Stressful Application Test
-EAPI=6
-HOMEPAGE=https://github.com/stressapptest/stressapptest
-IUSE=debug cros_arm64
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-libs/libaio
-SLOT=0
-SRC_URI=https://github.com/stressapptest/stressapptest/archive/v1.0.9.tar.gz -> stressapptest-1.0.9.tar.gz
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=70f67c4c94bca2a6da4430c6775a4d32
diff --git a/metadata/md5-cache/dev-util/stressapptest-1.0.9-r5 b/metadata/md5-cache/dev-util/stressapptest-1.0.9-r5
new file mode 100644
index 0000000..f4f64a6
--- /dev/null
+++ b/metadata/md5-cache/dev-util/stressapptest-1.0.9-r5
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare
+DEPEND=dev-libs/libaio
+DESCRIPTION=Stressful Application Test
+EAPI=6
+HOMEPAGE=https://github.com/stressapptest/stressapptest
+IUSE=debug cros_arm64
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=dev-libs/libaio
+SLOT=0
+SRC_URI=https://github.com/stressapptest/stressapptest/archive/v1.0.9.tar.gz -> stressapptest-1.0.9.tar.gz
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=74eb3571eb65290e26aafb940b310de7
diff --git a/metadata/md5-cache/dev-util/test-exec-server-0.0.1-r11 b/metadata/md5-cache/dev-util/test-exec-server-0.0.1-r11
new file mode 100644
index 0000000..f6c216b
--- /dev/null
+++ b/metadata/md5-cache/dev-util/test-exec-server-0.0.1-r11
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=chromeos-base/tast-cmd:= chromeos-base/tast-proto dev-util/lro-server dev-lang/go
+DESCRIPTION=Test execution server for running tests and capturing results
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/execution
+IUSE=cros_host cros_workon_tree_e1ccefbfeef648c4212cf53a99e488290712a30d
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/tast-cmd:= chromeos-base/tast-proto dev-util/lro-server
+SLOT=0/0.0.1-r11
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=93ec922d1a7d2febcdbd4398ce084018
diff --git a/metadata/md5-cache/dev-util/test-exec-server-9999 b/metadata/md5-cache/dev-util/test-exec-server-9999
new file mode 100644
index 0000000..4492c45
--- /dev/null
+++ b/metadata/md5-cache/dev-util/test-exec-server-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=chromeos-base/tast-cmd:= chromeos-base/tast-proto dev-util/lro-server dev-lang/go
+DESCRIPTION=Test execution server for running tests and capturing results
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/execution
+IUSE=cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/tast-cmd:= chromeos-base/tast-proto dev-util/lro-server
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3fd2e3c3badadde38b3ffb1444373857
diff --git a/metadata/md5-cache/dev-util/test-plan-0.0.1-r10 b/metadata/md5-cache/dev-util/test-plan-0.0.1-r10
new file mode 100644
index 0000000..b3c65d7
--- /dev/null
+++ b/metadata/md5-cache/dev-util/test-plan-0.0.1-r10
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=chromeos-base/cros-config-api dev-go/glog dev-go/luci-go-common dev-go/maruel-subcommands dev-go/protobuf dev-lang/go
+DESCRIPTION=A tool to generate ChromeOS CoverageRule protos from SourceTestPlan protos.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/plan
+IUSE=cros_host cros_workon_tree_55726521578abdb261bd7fc4f14694a1224bdcd5
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/cros-config-api dev-go/glog dev-go/luci-go-common dev-go/maruel-subcommands dev-go/protobuf
+SLOT=0/0.0.1-r10
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fd9197300abb3bfe9bb39ac8c9bfe43c
diff --git a/metadata/md5-cache/dev-util/test-plan-9999 b/metadata/md5-cache/dev-util/test-plan-9999
new file mode 100644
index 0000000..33ae727
--- /dev/null
+++ b/metadata/md5-cache/dev-util/test-plan-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=chromeos-base/cros-config-api dev-go/glog dev-go/luci-go-common dev-go/maruel-subcommands dev-go/protobuf dev-lang/go
+DESCRIPTION=A tool to generate ChromeOS CoverageRule protos from SourceTestPlan protos.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/dev-util/+/HEAD/src/chromiumos/test/plan
+IUSE=cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/cros-config-api dev-go/glog dev-go/luci-go-common dev-go/maruel-subcommands dev-go/protobuf
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b6fef6464f933edb5decf3545d07ed36
diff --git a/metadata/md5-cache/dev-util/toolchain-utils-0.0.1-r664 b/metadata/md5-cache/dev-util/toolchain-utils-0.0.1-r664
deleted file mode 100644
index 85f4da0..0000000
--- a/metadata/md5-cache/dev-util/toolchain-utils-0.0.1-r664
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Compilation and runtime tests for toolchain
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/toolchain-utils/
-IUSE=cros_host cros_workon_tree_a512623f58d26799fbdb37b7f168eb8fea826a86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=app-misc/pax-utils dev-lang/python sys-devel/binutils
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=821893bd525e9a9b103293bdf231ba96
diff --git a/metadata/md5-cache/dev-util/toolchain-utils-0.0.1-r722 b/metadata/md5-cache/dev-util/toolchain-utils-0.0.1-r722
new file mode 100644
index 0000000..beedb1c
--- /dev/null
+++ b/metadata/md5-cache/dev-util/toolchain-utils-0.0.1-r722
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Compilation and runtime tests for toolchain
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/toolchain-utils/
+IUSE=cros_host cros_workon_tree_e911bdbba91a2d91d761b62a3d79ac8fd2c009dd
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=app-misc/pax-utils dev-lang/python sys-devel/binutils
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d2ceecdb98567e97de248c4ef35787d4
diff --git a/metadata/md5-cache/dev-util/toolchain-utils-9999 b/metadata/md5-cache/dev-util/toolchain-utils-9999
index 35cfd1e..d7a229b 100644
--- a/metadata/md5-cache/dev-util/toolchain-utils-9999
+++ b/metadata/md5-cache/dev-util/toolchain-utils-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=app-misc/pax-utils dev-lang/python sys-devel/binutils
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=9be17ccb113646afb8a84044c260ca25
diff --git a/metadata/md5-cache/dev-util/turbostat-5.10.46-r2263 b/metadata/md5-cache/dev-util/turbostat-5.10.46-r2263
new file mode 100644
index 0000000..bf80522
--- /dev/null
+++ b/metadata/md5-cache/dev-util/turbostat-5.10.46-r2263
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install setup unpack
+DEPEND=sys-libs/libcap:=
+DESCRIPTION=Intel processor C-state and P-state reporting tool
+EAPI=7
+HOMEPAGE=https://www.kernel.org/
+IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_3202862f18c3bfd4f166d01f916bce7bcee6894d_77108e315e621449fc0ca943e5bdf79aa8744ef8_82f471a1f381850d569b3edbfa0ba3ec42139f56
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=sys-libs/libcap:=
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7bd24154a5764124c51aada9fd620e38
diff --git a/metadata/md5-cache/dev-util/turbostat-5.4.88-r2220 b/metadata/md5-cache/dev-util/turbostat-5.4.88-r2220
deleted file mode 100644
index 1d6e71b..0000000
--- a/metadata/md5-cache/dev-util/turbostat-5.4.88-r2220
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup unpack
-DEPEND=sys-libs/libcap:=
-DESCRIPTION=Intel processor C-state and P-state reporting tool
-EAPI=7
-HOMEPAGE=https://www.kernel.org/
-IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_8f19927b7e96d151163f06f053f98d784879e517_3f029e0be2f731c347ddd69221163262d6302e64_271149b9f1e2617df41a5968210b918f9c716bd3
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=sys-libs/libcap:=
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=37c256f33754b7150ff9c379396edba9
diff --git a/metadata/md5-cache/dev-util/turbostat-9999 b/metadata/md5-cache/dev-util/turbostat-9999
index 7a3cced0..9c74fec 100644
--- a/metadata/md5-cache/dev-util/turbostat-9999
+++ b/metadata/md5-cache/dev-util/turbostat-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=sys-libs/libcap:=
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4f3d473f54fb1f8c409703193df734f8
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7a6806778966c7da1e2e2a69d2de25a4
diff --git a/metadata/md5-cache/dev-util/vulkan-tools-1.1.92.0 b/metadata/md5-cache/dev-util/vulkan-tools-1.1.92.0
deleted file mode 100644
index b298139..0000000
--- a/metadata/md5-cache/dev-util/vulkan-tools-1.1.92.0
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=cube? ( dev-util/glslang:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-util/vulkan-headers media-libs/vulkan-loader:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,wayland?,X?] wayland? ( dev-libs/wayland:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] x11-libs/libXrandr:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Official Vulkan Tools and Utilities for Windows, Linux, Android, and MacOS
-EAPI=6
-HOMEPAGE=https://github.com/KhronosGroup/Vulkan-Tools
-IUSE=-cube +vulkaninfo X wayland abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=Apache-2.0
-SLOT=0
-SRC_URI=https://github.com/KhronosGroup/Vulkan-Tools/archive/9bbdd552f0fd62741aa1f1e02ab3eafc45cf3c1e.tar.gz -> vulkan-tools-1.1.92.0.tar.gz
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=79d6b958431bf7c2242af692f1182343
diff --git a/metadata/md5-cache/dev-util/vulkan-tools-1.2.162 b/metadata/md5-cache/dev-util/vulkan-tools-1.2.162
new file mode 100644
index 0000000..11b15ce
--- /dev/null
+++ b/metadata/md5-cache/dev-util/vulkan-tools-1.2.162
@@ -0,0 +1,15 @@
+BDEPEND=|| ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) >=dev-util/cmake-3.10.2 cube? ( dev-util/glslang:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-util/ninja dev-util/cmake
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=>=media-libs/vulkan-loader-1.2.162:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,wayland?,X?] wayland? ( dev-libs/wayland:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] x11-libs/libXrandr:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) >=dev-util/vulkan-headers-1.2.162
+DESCRIPTION=Official Vulkan Tools and Utilities for Windows, Linux, Android, and MacOS
+EAPI=7
+HOMEPAGE=https://github.com/KhronosGroup/Vulkan-Tools
+IUSE=cube wayland +X abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=>=media-libs/vulkan-loader-1.2.162:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,wayland?,X?] wayland? ( dev-libs/wayland:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] x11-libs/libXrandr:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+REQUIRED_USE=cube? ( ^^ ( X wayland ) )
+SLOT=0
+SRC_URI=https://github.com/KhronosGroup/Vulkan-Tools/archive/v1.2.162.tar.gz -> vulkan-tools-1.2.162.tar.gz
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=5394ab94393271c00be423d617b43241
diff --git a/metadata/md5-cache/dev-vcs/patman-0.0.1-r341 b/metadata/md5-cache/dev-vcs/patman-0.0.1-r341
deleted file mode 100644
index 5c78d5c..0000000
--- a/metadata/md5-cache/dev-vcs/patman-0.0.1-r341
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,-python_single_target_python3_6(-)] dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,-python_single_target_python3_6(-)] dev-python/setuptools[python_targets_python3_6(-)?,-python_single_target_python3_6(-)]
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DESCRIPTION=Patman tool (from U-Boot) for sending patches upstream
-EAPI=7
-HOMEPAGE=https://www.denx.de/wiki/U-Boot
-IUSE=cros_host cros_workon_tree_8da6ef5b49d3307fea8b69f202dc39fc01c256bb python_targets_python3_6
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,-python_single_target_python3_6(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=15a65eb91a2b600709eb3220ad8a8e9f
diff --git a/metadata/md5-cache/dev-vcs/patman-0.0.1-r342 b/metadata/md5-cache/dev-vcs/patman-0.0.1-r342
new file mode 100644
index 0000000..c9f74b2
--- /dev/null
+++ b/metadata/md5-cache/dev-vcs/patman-0.0.1-r342
@@ -0,0 +1,14 @@
+BDEPEND=dev-python/setuptools[python_targets_python3_6(-)?,-python_single_target_python3_6(-)] dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,-python_single_target_python3_6(-)] dev-python/setuptools[python_targets_python3_6(-)?,-python_single_target_python3_6(-)]
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DESCRIPTION=Patman tool (from U-Boot) for sending patches upstream
+EAPI=7
+HOMEPAGE=https://www.denx.de/wiki/U-Boot
+IUSE=cros_host cros_workon_tree_3429c1a71068b0c1e875e3a0d6aea14f8b4564a5 python_targets_python3_6
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,-python_single_target_python3_6(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f285f91b2f4903fa96603f094566f0e6
diff --git a/metadata/md5-cache/dev-vcs/patman-9999 b/metadata/md5-cache/dev-vcs/patman-9999
index 9bb5ae2..35e89ae 100644
--- a/metadata/md5-cache/dev-vcs/patman-9999
+++ b/metadata/md5-cache/dev-vcs/patman-9999
@@ -10,5 +10,5 @@
 RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,-python_single_target_python3_6(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=9a3427f4b7f4c67264d1256525e92922
diff --git a/metadata/md5-cache/media-fonts/croscorefonts-1.31.0 b/metadata/md5-cache/media-fonts/croscorefonts-1.31.0
index 9eca9db..12ff078 100644
--- a/metadata/md5-cache/media-fonts/croscorefonts-1.31.0
+++ b/metadata/md5-cache/media-fonts/croscorefonts-1.31.0
@@ -1,12 +1,12 @@
 DEFINED_PHASES=install postinst postrm setup
 DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
 DESCRIPTION=Arimo, Tinos and Cousine in 4 weights and Symbol Neu developed by Monotype Imaging for Chrom*OS
-EAPI=5
+EAPI=7
 IUSE=X
 KEYWORDS=*
 LICENSE=Apache-2.0
 RESTRICT=strip binchecks
 SLOT=0
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/croscorefonts-1.31.0.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0e83654acdb6638d939863dd3f60150e
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=cb19f5c9bbed07c455c16c84674264cb
diff --git a/metadata/md5-cache/media-fonts/croscorefonts-1.31.0-r1 b/metadata/md5-cache/media-fonts/croscorefonts-1.31.0-r1
deleted file mode 100644
index 9eca9db..0000000
--- a/metadata/md5-cache/media-fonts/croscorefonts-1.31.0-r1
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=install postinst postrm setup
-DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
-DESCRIPTION=Arimo, Tinos and Cousine in 4 weights and Symbol Neu developed by Monotype Imaging for Chrom*OS
-EAPI=5
-IUSE=X
-KEYWORDS=*
-LICENSE=Apache-2.0
-RESTRICT=strip binchecks
-SLOT=0
-SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/croscorefonts-1.31.0.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0e83654acdb6638d939863dd3f60150e
diff --git a/metadata/md5-cache/media-fonts/croscorefonts-1.31.0-r2 b/metadata/md5-cache/media-fonts/croscorefonts-1.31.0-r2
new file mode 100644
index 0000000..12ff078
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/croscorefonts-1.31.0-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=install postinst postrm setup
+DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
+DESCRIPTION=Arimo, Tinos and Cousine in 4 weights and Symbol Neu developed by Monotype Imaging for Chrom*OS
+EAPI=7
+IUSE=X
+KEYWORDS=*
+LICENSE=Apache-2.0
+RESTRICT=strip binchecks
+SLOT=0
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/croscorefonts-1.31.0.tar.bz2
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=cb19f5c9bbed07c455c16c84674264cb
diff --git a/metadata/md5-cache/media-fonts/crosextrafonts-20130214 b/metadata/md5-cache/media-fonts/crosextrafonts-20130214
index 880b471..2ec13db 100644
--- a/metadata/md5-cache/media-fonts/crosextrafonts-20130214
+++ b/metadata/md5-cache/media-fonts/crosextrafonts-20130214
@@ -1,12 +1,12 @@
 DEFINED_PHASES=install postinst postrm setup
 DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
 DESCRIPTION=Caladea font for Chrom*OS by Huerta Tipografia
-EAPI=0
+EAPI=7
 IUSE=X
 KEYWORDS=*
 LICENSE=Apache-2.0
 RESTRICT=strip binchecks
 SLOT=0
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/crosextrafonts-20130214.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a15915f1f0896a7dd29858bef3ddbc1b
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=7bafa04f72e9fe2473b438fb7b343960
diff --git a/metadata/md5-cache/media-fonts/crosextrafonts-20130214-r1 b/metadata/md5-cache/media-fonts/crosextrafonts-20130214-r1
new file mode 100644
index 0000000..2ec13db
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/crosextrafonts-20130214-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=install postinst postrm setup
+DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
+DESCRIPTION=Caladea font for Chrom*OS by Huerta Tipografia
+EAPI=7
+IUSE=X
+KEYWORDS=*
+LICENSE=Apache-2.0
+RESTRICT=strip binchecks
+SLOT=0
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/crosextrafonts-20130214.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=7bafa04f72e9fe2473b438fb7b343960
diff --git a/metadata/md5-cache/media-fonts/crosextrafonts-carlito-20130920 b/metadata/md5-cache/media-fonts/crosextrafonts-carlito-20130920
index f0fac01..1f773a5 100644
--- a/metadata/md5-cache/media-fonts/crosextrafonts-carlito-20130920
+++ b/metadata/md5-cache/media-fonts/crosextrafonts-carlito-20130920
@@ -1,12 +1,12 @@
 DEFINED_PHASES=install postinst postrm setup
 DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
 DESCRIPTION=Carlito font for Chrom*OS by tyPoland Lukasz Dziedzic
-EAPI=0
+EAPI=7
 IUSE=X
 KEYWORDS=*
 LICENSE=OFL-1.1
 RESTRICT=strip binchecks
 SLOT=0
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/crosextrafonts-carlito-20130920.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0657c23eaa1191b323a2f8792a955984
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=018b236941c0d2705d0d9cc9822860c9
diff --git a/metadata/md5-cache/media-fonts/crosextrafonts-carlito-20130920-r1 b/metadata/md5-cache/media-fonts/crosextrafonts-carlito-20130920-r1
new file mode 100644
index 0000000..1f773a5
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/crosextrafonts-carlito-20130920-r1
@@ -0,0 +1,12 @@
+DEFINED_PHASES=install postinst postrm setup
+DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
+DESCRIPTION=Carlito font for Chrom*OS by tyPoland Lukasz Dziedzic
+EAPI=7
+IUSE=X
+KEYWORDS=*
+LICENSE=OFL-1.1
+RESTRICT=strip binchecks
+SLOT=0
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/crosextrafonts-carlito-20130920.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=018b236941c0d2705d0d9cc9822860c9
diff --git a/metadata/md5-cache/media-fonts/ko-nanumfonts-3.20 b/metadata/md5-cache/media-fonts/ko-nanumfonts-3.20
index c2e2c02..3c5e939 100644
--- a/metadata/md5-cache/media-fonts/ko-nanumfonts-3.20
+++ b/metadata/md5-cache/media-fonts/ko-nanumfonts-3.20
@@ -1,7 +1,7 @@
 DEFINED_PHASES=install postinst postrm setup
 DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
 DESCRIPTION=Nanum Gothic fonts released by Naver Inc. under OFL
-EAPI=5
+EAPI=7
 HOMEPAGE=http://hangeul.naver.com/index.nhn
 IUSE=X
 KEYWORDS=*
@@ -9,5 +9,5 @@
 RESTRICT=strip binchecks
 SLOT=0
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/ko-nanumfonts-3.20.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1591f014014107404188e87628137d16
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=f8422f17b56882098e64c0c35d687247
diff --git a/metadata/md5-cache/media-fonts/ko-nanumfonts-3.20-r1 b/metadata/md5-cache/media-fonts/ko-nanumfonts-3.20-r1
new file mode 100644
index 0000000..3c5e939
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/ko-nanumfonts-3.20-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=install postinst postrm setup
+DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
+DESCRIPTION=Nanum Gothic fonts released by Naver Inc. under OFL
+EAPI=7
+HOMEPAGE=http://hangeul.naver.com/index.nhn
+IUSE=X
+KEYWORDS=*
+LICENSE=OFL-1.1
+RESTRICT=strip binchecks
+SLOT=0
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/ko-nanumfonts-3.20.tar.bz2
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=f8422f17b56882098e64c0c35d687247
diff --git a/metadata/md5-cache/media-fonts/lohitfonts-cros-2.5.5 b/metadata/md5-cache/media-fonts/lohitfonts-cros-2.5.5
index f6563f5..a07ade8 100644
--- a/metadata/md5-cache/media-fonts/lohitfonts-cros-2.5.5
+++ b/metadata/md5-cache/media-fonts/lohitfonts-cros-2.5.5
@@ -1,7 +1,7 @@
 DEFINED_PHASES=install postinst postrm setup
 DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
 DESCRIPTION=6 Lohit fonts for Indic scripts
-EAPI=5
+EAPI=7
 HOMEPAGE=http://fedorahosted.org/lohit
 IUSE=X
 KEYWORDS=*
@@ -9,5 +9,5 @@
 RESTRICT=strip binchecks
 SLOT=0
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/lohitfonts-cros-2.5.5.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2ff65e8c22d5e65025da6435640a632c
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=0010c7dfdd5550ffbbc7052db21f5450
diff --git a/metadata/md5-cache/media-fonts/lohitfonts-cros-2.5.5-r1 b/metadata/md5-cache/media-fonts/lohitfonts-cros-2.5.5-r1
deleted file mode 100644
index f6563f5..0000000
--- a/metadata/md5-cache/media-fonts/lohitfonts-cros-2.5.5-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=install postinst postrm setup
-DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
-DESCRIPTION=6 Lohit fonts for Indic scripts
-EAPI=5
-HOMEPAGE=http://fedorahosted.org/lohit
-IUSE=X
-KEYWORDS=*
-LICENSE=OFL-1.1
-RESTRICT=strip binchecks
-SLOT=0
-SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/lohitfonts-cros-2.5.5.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2ff65e8c22d5e65025da6435640a632c
diff --git a/metadata/md5-cache/media-fonts/lohitfonts-cros-2.5.5-r2 b/metadata/md5-cache/media-fonts/lohitfonts-cros-2.5.5-r2
new file mode 100644
index 0000000..a07ade8
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/lohitfonts-cros-2.5.5-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=install postinst postrm setup
+DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
+DESCRIPTION=6 Lohit fonts for Indic scripts
+EAPI=7
+HOMEPAGE=http://fedorahosted.org/lohit
+IUSE=X
+KEYWORDS=*
+LICENSE=OFL-1.1
+RESTRICT=strip binchecks
+SLOT=0
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/lohitfonts-cros-2.5.5.tar.bz2
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=0010c7dfdd5550ffbbc7052db21f5450
diff --git a/metadata/md5-cache/media-fonts/noto-cjk-20190409 b/metadata/md5-cache/media-fonts/noto-cjk-20190409
deleted file mode 100644
index 90ef387..0000000
--- a/metadata/md5-cache/media-fonts/noto-cjk-20190409
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=install postinst postrm setup
-DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
-DESCRIPTION=Noto Pan CJK fonts developed by Adobe
-EAPI=5
-IUSE=X
-KEYWORDS=*
-LICENSE=OFL-1.1
-RESTRICT=strip binchecks
-SLOT=0
-SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/noto-cjk-20190409.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=232473051ed17801e0bb652d86f3c741
diff --git a/metadata/md5-cache/media-fonts/noto-cjk-20190409-r1 b/metadata/md5-cache/media-fonts/noto-cjk-20190409-r1
deleted file mode 100644
index 90ef387..0000000
--- a/metadata/md5-cache/media-fonts/noto-cjk-20190409-r1
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=install postinst postrm setup
-DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
-DESCRIPTION=Noto Pan CJK fonts developed by Adobe
-EAPI=5
-IUSE=X
-KEYWORDS=*
-LICENSE=OFL-1.1
-RESTRICT=strip binchecks
-SLOT=0
-SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/noto-cjk-20190409.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=232473051ed17801e0bb652d86f3c741
diff --git a/metadata/md5-cache/media-fonts/noto-cjk-20210501 b/metadata/md5-cache/media-fonts/noto-cjk-20210501
new file mode 100644
index 0000000..b9723fd
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/noto-cjk-20210501
@@ -0,0 +1,12 @@
+DEFINED_PHASES=install postinst postrm setup
+DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
+DESCRIPTION=Noto Pan CJK fonts developed by Adobe
+EAPI=7
+IUSE=X
+KEYWORDS=*
+LICENSE=OFL-1.1
+RESTRICT=strip binchecks
+SLOT=0
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/noto-cjk-20210501.tar.bz2
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=601b954df591f5a806e320251e732f70
diff --git a/metadata/md5-cache/media-fonts/noto-cjk-20210501-r2 b/metadata/md5-cache/media-fonts/noto-cjk-20210501-r2
new file mode 100644
index 0000000..b9723fd
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/noto-cjk-20210501-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=install postinst postrm setup
+DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
+DESCRIPTION=Noto Pan CJK fonts developed by Adobe
+EAPI=7
+IUSE=X
+KEYWORDS=*
+LICENSE=OFL-1.1
+RESTRICT=strip binchecks
+SLOT=0
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/noto-cjk-20210501.tar.bz2
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=601b954df591f5a806e320251e732f70
diff --git a/metadata/md5-cache/media-fonts/robotofonts-2.132 b/metadata/md5-cache/media-fonts/robotofonts-2.132
index 96870ae..3139e30 100644
--- a/metadata/md5-cache/media-fonts/robotofonts-2.132
+++ b/metadata/md5-cache/media-fonts/robotofonts-2.132
@@ -1,12 +1,12 @@
 DEFINED_PHASES=install postinst postrm setup
 DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
 DESCRIPTION=Roboto fonts by Google for Material Design
-EAPI=5
+EAPI=7
 IUSE=X
 KEYWORDS=*
 LICENSE=Apache-2.0
 RESTRICT=strip binchecks
 SLOT=0
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/robotofonts-2.132.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c100ae9cc2a7616dbf5296a4e4636ab6
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=6e7b4d259842c408f177ccaaa4e31123
diff --git a/metadata/md5-cache/media-fonts/robotofonts-2.132-r1 b/metadata/md5-cache/media-fonts/robotofonts-2.132-r1
deleted file mode 100644
index 96870ae..0000000
--- a/metadata/md5-cache/media-fonts/robotofonts-2.132-r1
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=install postinst postrm setup
-DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
-DESCRIPTION=Roboto fonts by Google for Material Design
-EAPI=5
-IUSE=X
-KEYWORDS=*
-LICENSE=Apache-2.0
-RESTRICT=strip binchecks
-SLOT=0
-SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/robotofonts-2.132.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c100ae9cc2a7616dbf5296a4e4636ab6
diff --git a/metadata/md5-cache/media-fonts/robotofonts-2.132-r2 b/metadata/md5-cache/media-fonts/robotofonts-2.132-r2
new file mode 100644
index 0000000..3139e30
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/robotofonts-2.132-r2
@@ -0,0 +1,12 @@
+DEFINED_PHASES=install postinst postrm setup
+DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
+DESCRIPTION=Roboto fonts by Google for Material Design
+EAPI=7
+IUSE=X
+KEYWORDS=*
+LICENSE=Apache-2.0
+RESTRICT=strip binchecks
+SLOT=0
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/robotofonts-2.132.tar.bz2
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=6e7b4d259842c408f177ccaaa4e31123
diff --git a/metadata/md5-cache/media-fonts/tibt-jomolhari-0.0.3c b/metadata/md5-cache/media-fonts/tibt-jomolhari-0.0.3c
index 703e5c6..210cba1 100644
--- a/metadata/md5-cache/media-fonts/tibt-jomolhari-0.0.3c
+++ b/metadata/md5-cache/media-fonts/tibt-jomolhari-0.0.3c
@@ -1,7 +1,7 @@
 DEFINED_PHASES=install postinst postrm setup
 DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
 DESCRIPTION=Jomolhari font for Tibetan
-EAPI=0
+EAPI=7
 HOMEPAGE=https://sites.google.com/site/chrisfynn2/home/fonts/jomolhari
 IUSE=X
 KEYWORDS=*
@@ -9,5 +9,5 @@
 RESTRICT=strip binchecks
 SLOT=0
 SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/tibt-jomolhari-0.0.3c.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	font	bc3df4ed373e09f86a90e8fad39034d6	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=086e5da2896d57d7229dd511c66a92d7
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=5a9e85144767f56d7438309425c2130b
diff --git a/metadata/md5-cache/media-fonts/tibt-jomolhari-0.0.3c-r1 b/metadata/md5-cache/media-fonts/tibt-jomolhari-0.0.3c-r1
new file mode 100644
index 0000000..210cba1
--- /dev/null
+++ b/metadata/md5-cache/media-fonts/tibt-jomolhari-0.0.3c-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=install postinst postrm setup
+DEPEND=X? ( x11-apps/mkfontdir media-fonts/encodings ) >=media-libs/fontconfig-2.4.0
+DESCRIPTION=Jomolhari font for Tibetan
+EAPI=7
+HOMEPAGE=https://sites.google.com/site/chrisfynn2/home/fonts/jomolhari
+IUSE=X
+KEYWORDS=*
+LICENSE=OFL-1.1
+RESTRICT=strip binchecks
+SLOT=0
+SRC_URI=http://commondatastorage.googleapis.com/chromeos-localmirror/distfiles/tibt-jomolhari-0.0.3c.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	font	bc3df4ed373e09f86a90e8fad39034d6
+_md5_=5a9e85144767f56d7438309425c2130b
diff --git a/metadata/md5-cache/media-gfx/deqp-2020.01.22-r1 b/metadata/md5-cache/media-gfx/deqp-2020.01.22-r1
deleted file mode 100644
index 708c12e..0000000
--- a/metadata/md5-cache/media-gfx/deqp-2020.01.22-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare test unpack
-DEPEND=virtual/opengles media-libs/minigbm media-libs/libpng vulkan? ( virtual/vulkan-icd ) x11-drivers/opengles-headers x11-libs/libX11 dev-util/ninja >=dev-util/cmake-3.9.6
-DESCRIPTION=drawElements Quality Program - an OpenGL ES testsuite
-EAPI=6
-HOMEPAGE=https://android.googlesource.com/platform/external/deqp
-IUSE=-vulkan asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=virtual/opengles media-libs/minigbm media-libs/libpng vulkan? ( virtual/vulkan-icd )
-SLOT=0
-SRC_URI=https://android.googlesource.com/platform/external/deqp/+archive/a3d4f2bdc5414efa20b0288e1bf75a4c1bd758c0.tar.gz -> deqp-a3d4f2bdc5414efa20b0288e1bf75a4c1bd758c0.tar.gz https://github.com/KhronosGroup/glslang/archive/1ff0c181bb37b06371e2ffa2810d473c5e01c9b7.tar.gz -> glslang-1ff0c181bb37b06371e2ffa2810d473c5e01c9b7.tar.gz https://github.com/KhronosGroup/SPIRV-Tools/archive/2c0111e6eba779cf30e8c7f5a733ea0762895ba0.tar.gz -> SPIRV-Tools-2c0111e6eba779cf30e8c7f5a733ea0762895ba0.tar.gz https://github.com/KhronosGroup/SPIRV-Headers/archive/842ec90674627ed2ffef609e3cd79d1562eded01.tar.gz -> SPIRV-Headers-842ec90674627ed2ffef609e3cd79d1562eded01.tar.gz https://github.com/google/amber/archive/62ef3e4e056d80f848baadee745cc176f6252cc3.tar.gz -> amber-62ef3e4e056d80f848baadee745cc176f6252cc3.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=6813fa7b75097ad74d5cde9f29cef483
diff --git a/metadata/md5-cache/media-gfx/deqp-2021.02.10-r3 b/metadata/md5-cache/media-gfx/deqp-2021.02.10-r3
new file mode 100644
index 0000000..6d76912
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/deqp-2021.02.10-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare test unpack
+DEPEND=virtual/opengles media-libs/minigbm media-libs/libpng vulkan? ( virtual/vulkan-icd ) x11-drivers/opengles-headers x11-libs/libX11 dev-util/ninja >=dev-util/cmake-3.9.6
+DESCRIPTION=drawElements Quality Program - an OpenGL ES testsuite
+EAPI=6
+HOMEPAGE=https://android.googlesource.com/platform/external/deqp
+IUSE=-vulkan asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=virtual/opengles media-libs/minigbm media-libs/libpng vulkan? ( virtual/vulkan-icd )
+SLOT=0
+SRC_URI=https://android.googlesource.com/platform/external/deqp/+archive/e58b0b2e5075855482dc7d9991b0db35f9afe0c4.tar.gz -> deqp-e58b0b2e5075855482dc7d9991b0db35f9afe0c4.tar.gz https://github.com/KhronosGroup/glslang/archive/ffccefddfd9a02ec0c0b6dd04ef5e1042279c97f.tar.gz -> glslang-ffccefddfd9a02ec0c0b6dd04ef5e1042279c97f.tar.gz https://github.com/KhronosGroup/SPIRV-Tools/archive/cd590fa3341284cd6d1ee82366155786cfd44c96.tar.gz -> SPIRV-Tools-cd590fa3341284cd6d1ee82366155786cfd44c96.tar.gz https://github.com/KhronosGroup/SPIRV-Headers/archive/104ecc356c1bea4476320faca64440cd1df655a3.tar.gz -> SPIRV-Headers-104ecc356c1bea4476320faca64440cd1df655a3.tar.gz https://github.com/google/amber/archive/4d0115cccfcb3b73d20b6513b1c40748e6403c50.tar.gz -> amber-4d0115cccfcb3b73d20b6513b1c40748e6403c50.tar.gz
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=962688ba1589f7914a53229a56573d20
diff --git a/metadata/md5-cache/media-gfx/deqp-runner-0.3.0 b/metadata/md5-cache/media-gfx/deqp-runner-0.3.0
deleted file mode 100644
index b2088af..0000000
--- a/metadata/md5-cache/media-gfx/deqp-runner-0.3.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare prerm setup test unpack
-DEPEND==dev-rust/anyhow-1*:= >=dev-rust/criterion-0.3.0:= <dev-rust/criterion-0.4.0 >=dev-rust/lazy_static-1.4:= <dev-rust/lazy_static-2.0 >=dev-rust/rand-0.7.3:= <dev-rust/rand-0.8 >=dev-rust/rayon-1.5.0:= <dev-rust/rayon-2.0.0 =dev-rust/regex-1*:= >=dev-rust/stderrlog-0.4:= <dev-rust/stderrlog-0.6 =dev-rust/structopt-0.3*:= >=dev-rust/thread-id-3.3.0:= <dev-rust/thread-id-4.0 >=dev-rust/timeout-readwrite-0.3.1:= <dev-rust/timeout-readwrite-0.4 >=virtual/rust-1.39.0:=
-DESCRIPTION=A VK-GL-CTS/dEQP wrapper program to parallelize it across CPUs and report results against a baseline.
-EAPI=7
-HOMEPAGE=https://gitlab.freedesktop.org/anholt/deqp-runner
-IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=MIT
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/r0
-SRC_URI=https://crates.io/api/v1/crates/deqp-runner/0.3.0/download -> deqp-runner-0.3.0.crate
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cd202c275e600eacbf15ab546702d34e
diff --git a/metadata/md5-cache/media-gfx/deqp-runner-0.6.5 b/metadata/md5-cache/media-gfx/deqp-runner-0.6.5
new file mode 100644
index 0000000..5bd4592
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/deqp-runner-0.6.5
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare prerm setup test unpack
+DEPEND==dev-rust/anyhow-1*:= >=dev-rust/crossbeam-utils-0.8:= <dev-rust/crossbeam-utils-0.9 >=dev-rust/flate2-1.0.18:= <dev-rust/flate2-2 =dev-rust/junit-report-0.4*:= >=dev-rust/lazy_static-1.4:= <dev-rust/lazy_static-2.0 >=dev-rust/log-0.4:= >=dev-rust/rand-0.7.3:= <dev-rust/rand-0.8 >=dev-rust/rayon-1.5.0:= <dev-rust/rayon-2.0.0 =dev-rust/regex-1*:= >=dev-rust/roxmltree-0.13.0:= <dev-rust/roxmltree-0.14 >=dev-rust/stderrlog-0.4:= <dev-rust/stderrlog-0.6 =dev-rust/structopt-0.3*:= >=dev-rust/thread-id-3.3.0:= <dev-rust/thread-id-4.0 >=dev-rust/timeout-readwrite-0.3.1:= <dev-rust/timeout-readwrite-0.4 >=virtual/rust-1.39.0:=
+DESCRIPTION=A VK-GL-CTS/dEQP wrapper program to parallelize it across CPUs and report results against a baseline.
+EAPI=7
+HOMEPAGE=https://gitlab.freedesktop.org/anholt/deqp-runner
+IUSE=cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=MIT
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/r0
+SRC_URI=https://crates.io/api/v1/crates/deqp-runner/0.6.5/download -> deqp-runner-0.6.5.crate
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f8897e4d62adf57e2f4ff1bc614cfbfa
diff --git a/metadata/md5-cache/media-gfx/sane-airscan-0.99.20 b/metadata/md5-cache/media-gfx/sane-airscan-0.99.20
deleted file mode 100644
index 3b8ec08..0000000
--- a/metadata/md5-cache/media-gfx/sane-airscan-0.99.20
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=>=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DEFINED_PHASES=compile configure install test
-DEPEND=dev-libs/libxml2:= media-gfx/sane-backends:= media-libs/libjpeg-turbo:= media-libs/libpng:= net-dns/avahi:= net-libs/libsoup:=
-DESCRIPTION=eSCL and WSD SANE backend
-EAPI=7
-HOMEPAGE=https://github.com/alexpevzner/sane-airscan
-IUSE=asan fuzzer fuzzer asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=dev-libs/libxml2:= media-gfx/sane-backends:= media-libs/libjpeg-turbo:= media-libs/libpng:= net-dns/avahi:= net-libs/libsoup:=
-SLOT=0/0.99.20
-SRC_URI=https://github.com/alexpevzner/sane-airscan/archive/0.99.20.tar.gz -> sane-airscan-0.99.20.tar.gz
-_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4715c20009627c20582633ccc56b024e
diff --git a/metadata/md5-cache/media-gfx/sane-airscan-0.99.20-r2 b/metadata/md5-cache/media-gfx/sane-airscan-0.99.20-r2
deleted file mode 100644
index 296a596..0000000
--- a/metadata/md5-cache/media-gfx/sane-airscan-0.99.20-r2
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=>=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DEFINED_PHASES=compile configure install test
-DEPEND=dev-libs/libxml2:= media-gfx/sane-backends:= media-libs/libjpeg-turbo:= media-libs/libpng:= net-dns/avahi:= net-libs/libsoup:=
-DESCRIPTION=eSCL and WSD SANE backend
-EAPI=7
-HOMEPAGE=https://github.com/alexpevzner/sane-airscan
-IUSE=asan fuzzer fuzzer asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=dev-libs/libxml2:= media-gfx/sane-backends:= media-libs/libjpeg-turbo:= media-libs/libpng:= net-dns/avahi:= net-libs/libsoup:=
-SLOT=0/0.99.20-r2
-SRC_URI=https://github.com/alexpevzner/sane-airscan/archive/0.99.20.tar.gz -> sane-airscan-0.99.20.tar.gz
-_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4715c20009627c20582633ccc56b024e
diff --git a/metadata/md5-cache/media-gfx/sane-airscan-0.99.26 b/metadata/md5-cache/media-gfx/sane-airscan-0.99.26
new file mode 100644
index 0000000..5ffc3b0
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/sane-airscan-0.99.26
@@ -0,0 +1,14 @@
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure install test
+DEPEND=dev-libs/libxml2:= media-gfx/sane-backends:= media-libs/libjpeg-turbo:= media-libs/libpng:= net-dns/avahi:= net-libs/libsoup:=
+DESCRIPTION=eSCL and WSD SANE backend
+EAPI=7
+HOMEPAGE=https://github.com/alexpevzner/sane-airscan
+IUSE=asan fuzzer fuzzer asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2:= media-gfx/sane-backends:= media-libs/libjpeg-turbo:= media-libs/libpng:= net-dns/avahi:= net-libs/libsoup:=
+SLOT=0/0.99.26
+SRC_URI=https://github.com/alexpevzner/sane-airscan/archive/0.99.26.tar.gz -> sane-airscan-0.99.26.tar.gz
+_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=50edfd631e1f530d6ec1caea53e2b5bf
diff --git a/metadata/md5-cache/media-gfx/sane-airscan-0.99.26-r2 b/metadata/md5-cache/media-gfx/sane-airscan-0.99.26-r2
new file mode 100644
index 0000000..40eb0c0
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/sane-airscan-0.99.26-r2
@@ -0,0 +1,14 @@
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure install test
+DEPEND=dev-libs/libxml2:= media-gfx/sane-backends:= media-libs/libjpeg-turbo:= media-libs/libpng:= net-dns/avahi:= net-libs/libsoup:=
+DESCRIPTION=eSCL and WSD SANE backend
+EAPI=7
+HOMEPAGE=https://github.com/alexpevzner/sane-airscan
+IUSE=asan fuzzer fuzzer asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=dev-libs/libxml2:= media-gfx/sane-backends:= media-libs/libjpeg-turbo:= media-libs/libpng:= net-dns/avahi:= net-libs/libsoup:=
+SLOT=0/0.99.26-r2
+SRC_URI=https://github.com/alexpevzner/sane-airscan/archive/0.99.26.tar.gz -> sane-airscan-0.99.26.tar.gz
+_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=50edfd631e1f530d6ec1caea53e2b5bf
diff --git a/metadata/md5-cache/media-gfx/sane-backends-1.0.31 b/metadata/md5-cache/media-gfx/sane-backends-1.0.31
deleted file mode 100644
index ead3dcd..0000000
--- a/metadata/md5-cache/media-gfx/sane-backends-1.0.31
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=>=app-portage/elt-patches-20170815 virtual/pkgconfig virtual/pkgconfig
-DEFINED_PHASES=compile configure install postinst prepare setup test
-DEPEND=sane_backends_dc210? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dc240? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dell1600n_net? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/tiff-3.9.7-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_canon_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_hpsj5s? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_mustek_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) usb? ( >=virtual/libusb-1-r1:1=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gphoto2? ( >=media-libs/libgphoto2-2.5.3.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( >=media-libs/libv4l-0.9.5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xinetd? ( sys-apps/xinetd ) snmp? ( net-analyzer/net-snmp:0= ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( sys-kernel/linux-headers ) >=sys-devel/gettext-0.18.1 >=virtual/pkgconfig-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout
-DESCRIPTION=Scanner Access Now Easy - Backends
-EAPI=7
-HOMEPAGE=http://www.sane-project.org/
-IUSE=gphoto2 ipv6 snmp systemd threads usb v4l xinetd zeroconf +sane_backends_abaton +sane_backends_agfafocus +sane_backends_apple +sane_backends_artec +sane_backends_artec_eplus48u +sane_backends_as6e +sane_backends_avision +sane_backends_bh +sane_backends_canon +sane_backends_canon630u +sane_backends_canon_dr +sane_backends_canon_lide70 -sane_backends_canon_pp +sane_backends_cardscan +sane_backends_coolscan +sane_backends_coolscan2 +sane_backends_coolscan3 +sane_backends_dc210 +sane_backends_dc240 +sane_backends_dc25 +sane_backends_dell1600n_net +sane_backends_dmc +sane_backends_epjitsu +sane_backends_epson +sane_backends_epson2 -sane_backends_escl +sane_backends_fujitsu +sane_backends_genesys +sane_backends_gt68xx +sane_backends_hp +sane_backends_hp3500 +sane_backends_hp3900 +sane_backends_hp4200 +sane_backends_hp5400 +sane_backends_hp5590 +sane_backends_hpljm1005 -sane_backends_hpsj5s +sane_backends_hs2p +sane_backends_ibm +sane_backends_kodak +sane_backends_kodakaio +sane_backends_kvs1025 +sane_backends_kvs20xx sane_backends_kvs40xx +sane_backends_leo +sane_backends_lexmark +sane_backends_ma1509 +sane_backends_magicolor +sane_backends_matsushita +sane_backends_microtek +sane_backends_microtek2 +sane_backends_mustek -sane_backends_mustek_pp +sane_backends_mustek_usb sane_backends_mustek_usb2 +sane_backends_nec +sane_backends_net +sane_backends_niash +sane_backends_p5 +sane_backends_pie +sane_backends_pixma +sane_backends_plustek +sane_backends_plustek_pp -sane_backends_pnm +sane_backends_qcam +sane_backends_ricoh +sane_backends_ricoh2 +sane_backends_rts8891 +sane_backends_s9036 +sane_backends_sceptre +sane_backends_sharp +sane_backends_sm3600 +sane_backends_sm3840 +sane_backends_snapscan +sane_backends_sp15c +sane_backends_st400 +sane_backends_stv680 +sane_backends_tamarack +sane_backends_teco1 +sane_backends_teco2 +sane_backends_teco3 +sane_backends_test +sane_backends_u12 +sane_backends_umax +sane_backends_umax1220u +sane_backends_umax_pp +sane_backends_xerox_mfp abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=GPL-2 public-domain
-RDEPEND=sane_backends_dc210? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dc240? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dell1600n_net? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/tiff-3.9.7-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_canon_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_hpsj5s? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_mustek_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) usb? ( >=virtual/libusb-1-r1:1=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gphoto2? ( >=media-libs/libgphoto2-2.5.3.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( >=media-libs/libv4l-0.9.5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xinetd? ( sys-apps/xinetd ) snmp? ( net-analyzer/net-snmp:0= ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-apps/baselayout
-REQUIRED_USE=sane_backends_mustek_usb2? ( threads ) sane_backends_kvs40xx? ( threads )
-SLOT=0
-SRC_URI=https://gitlab.com/sane-project/backends/-/archive/1.0.31/backends-1.0.31.tar.gz -> sane-backends-1.0.31.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=79aa4f06e0afdee917e29720cb1e5bc3
diff --git a/metadata/md5-cache/media-gfx/sane-backends-1.0.31-r3 b/metadata/md5-cache/media-gfx/sane-backends-1.0.31-r3
deleted file mode 100644
index ead3dcd..0000000
--- a/metadata/md5-cache/media-gfx/sane-backends-1.0.31-r3
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=>=app-portage/elt-patches-20170815 virtual/pkgconfig virtual/pkgconfig
-DEFINED_PHASES=compile configure install postinst prepare setup test
-DEPEND=sane_backends_dc210? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dc240? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dell1600n_net? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/tiff-3.9.7-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_canon_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_hpsj5s? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_mustek_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) usb? ( >=virtual/libusb-1-r1:1=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gphoto2? ( >=media-libs/libgphoto2-2.5.3.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( >=media-libs/libv4l-0.9.5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xinetd? ( sys-apps/xinetd ) snmp? ( net-analyzer/net-snmp:0= ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( sys-kernel/linux-headers ) >=sys-devel/gettext-0.18.1 >=virtual/pkgconfig-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout
-DESCRIPTION=Scanner Access Now Easy - Backends
-EAPI=7
-HOMEPAGE=http://www.sane-project.org/
-IUSE=gphoto2 ipv6 snmp systemd threads usb v4l xinetd zeroconf +sane_backends_abaton +sane_backends_agfafocus +sane_backends_apple +sane_backends_artec +sane_backends_artec_eplus48u +sane_backends_as6e +sane_backends_avision +sane_backends_bh +sane_backends_canon +sane_backends_canon630u +sane_backends_canon_dr +sane_backends_canon_lide70 -sane_backends_canon_pp +sane_backends_cardscan +sane_backends_coolscan +sane_backends_coolscan2 +sane_backends_coolscan3 +sane_backends_dc210 +sane_backends_dc240 +sane_backends_dc25 +sane_backends_dell1600n_net +sane_backends_dmc +sane_backends_epjitsu +sane_backends_epson +sane_backends_epson2 -sane_backends_escl +sane_backends_fujitsu +sane_backends_genesys +sane_backends_gt68xx +sane_backends_hp +sane_backends_hp3500 +sane_backends_hp3900 +sane_backends_hp4200 +sane_backends_hp5400 +sane_backends_hp5590 +sane_backends_hpljm1005 -sane_backends_hpsj5s +sane_backends_hs2p +sane_backends_ibm +sane_backends_kodak +sane_backends_kodakaio +sane_backends_kvs1025 +sane_backends_kvs20xx sane_backends_kvs40xx +sane_backends_leo +sane_backends_lexmark +sane_backends_ma1509 +sane_backends_magicolor +sane_backends_matsushita +sane_backends_microtek +sane_backends_microtek2 +sane_backends_mustek -sane_backends_mustek_pp +sane_backends_mustek_usb sane_backends_mustek_usb2 +sane_backends_nec +sane_backends_net +sane_backends_niash +sane_backends_p5 +sane_backends_pie +sane_backends_pixma +sane_backends_plustek +sane_backends_plustek_pp -sane_backends_pnm +sane_backends_qcam +sane_backends_ricoh +sane_backends_ricoh2 +sane_backends_rts8891 +sane_backends_s9036 +sane_backends_sceptre +sane_backends_sharp +sane_backends_sm3600 +sane_backends_sm3840 +sane_backends_snapscan +sane_backends_sp15c +sane_backends_st400 +sane_backends_stv680 +sane_backends_tamarack +sane_backends_teco1 +sane_backends_teco2 +sane_backends_teco3 +sane_backends_test +sane_backends_u12 +sane_backends_umax +sane_backends_umax1220u +sane_backends_umax_pp +sane_backends_xerox_mfp abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=GPL-2 public-domain
-RDEPEND=sane_backends_dc210? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dc240? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dell1600n_net? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/tiff-3.9.7-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_canon_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_hpsj5s? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_mustek_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) usb? ( >=virtual/libusb-1-r1:1=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gphoto2? ( >=media-libs/libgphoto2-2.5.3.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( >=media-libs/libv4l-0.9.5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xinetd? ( sys-apps/xinetd ) snmp? ( net-analyzer/net-snmp:0= ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-apps/baselayout
-REQUIRED_USE=sane_backends_mustek_usb2? ( threads ) sane_backends_kvs40xx? ( threads )
-SLOT=0
-SRC_URI=https://gitlab.com/sane-project/backends/-/archive/1.0.31/backends-1.0.31.tar.gz -> sane-backends-1.0.31.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=79aa4f06e0afdee917e29720cb1e5bc3
diff --git a/metadata/md5-cache/media-gfx/sane-backends-1.0.32 b/metadata/md5-cache/media-gfx/sane-backends-1.0.32
new file mode 100644
index 0000000..79127d5
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/sane-backends-1.0.32
@@ -0,0 +1,15 @@
+BDEPEND=>=app-portage/elt-patches-20170815 virtual/pkgconfig virtual/pkgconfig
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=sane_backends_dc210? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dc240? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dell1600n_net? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/tiff-3.9.7-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_canon_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_hpsj5s? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_mustek_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) usb? ( >=virtual/libusb-1-r1:1=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gphoto2? ( >=media-libs/libgphoto2-2.5.3.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( >=media-libs/libv4l-0.9.5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xinetd? ( sys-apps/xinetd ) snmp? ( net-analyzer/net-snmp:0= ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( sys-kernel/linux-headers ) >=sys-devel/gettext-0.18.1 >=virtual/pkgconfig-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout
+DESCRIPTION=Scanner Access Now Easy - Backends
+EAPI=7
+HOMEPAGE=http://www.sane-project.org/
+IUSE=gphoto2 ipv6 snmp systemd threads usb v4l xinetd zeroconf +sane_backends_abaton +sane_backends_agfafocus +sane_backends_apple +sane_backends_artec +sane_backends_artec_eplus48u +sane_backends_as6e +sane_backends_avision +sane_backends_bh +sane_backends_canon +sane_backends_canon630u +sane_backends_canon_dr +sane_backends_canon_lide70 -sane_backends_canon_pp +sane_backends_cardscan +sane_backends_coolscan +sane_backends_coolscan2 +sane_backends_coolscan3 +sane_backends_dc210 +sane_backends_dc240 +sane_backends_dc25 +sane_backends_dell1600n_net +sane_backends_dmc +sane_backends_epjitsu +sane_backends_epson +sane_backends_epson2 -sane_backends_escl +sane_backends_fujitsu +sane_backends_genesys +sane_backends_gt68xx +sane_backends_hp +sane_backends_hp3500 +sane_backends_hp3900 +sane_backends_hp4200 +sane_backends_hp5400 +sane_backends_hp5590 +sane_backends_hpljm1005 -sane_backends_hpsj5s +sane_backends_hs2p +sane_backends_ibm +sane_backends_kodak +sane_backends_kodakaio +sane_backends_kvs1025 +sane_backends_kvs20xx sane_backends_kvs40xx +sane_backends_leo +sane_backends_lexmark +sane_backends_ma1509 +sane_backends_magicolor +sane_backends_matsushita +sane_backends_microtek +sane_backends_microtek2 +sane_backends_mustek -sane_backends_mustek_pp +sane_backends_mustek_usb sane_backends_mustek_usb2 +sane_backends_nec +sane_backends_net +sane_backends_niash +sane_backends_p5 +sane_backends_pie +sane_backends_pixma +sane_backends_plustek +sane_backends_plustek_pp -sane_backends_pnm +sane_backends_qcam +sane_backends_ricoh +sane_backends_ricoh2 +sane_backends_rts8891 +sane_backends_s9036 +sane_backends_sceptre +sane_backends_sharp +sane_backends_sm3600 +sane_backends_sm3840 +sane_backends_snapscan +sane_backends_sp15c +sane_backends_st400 +sane_backends_stv680 +sane_backends_tamarack +sane_backends_teco1 +sane_backends_teco2 +sane_backends_teco3 +sane_backends_test +sane_backends_u12 +sane_backends_umax +sane_backends_umax1220u +sane_backends_umax_pp +sane_backends_xerox_mfp abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=GPL-2 public-domain
+RDEPEND=sane_backends_dc210? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dc240? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dell1600n_net? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/tiff-3.9.7-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_canon_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_hpsj5s? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_mustek_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) usb? ( >=virtual/libusb-1-r1:1=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gphoto2? ( >=media-libs/libgphoto2-2.5.3.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( >=media-libs/libv4l-0.9.5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xinetd? ( sys-apps/xinetd ) snmp? ( net-analyzer/net-snmp:0= ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-apps/baselayout
+REQUIRED_USE=sane_backends_mustek_usb2? ( threads ) sane_backends_kvs40xx? ( threads )
+SLOT=0
+SRC_URI=https://gitlab.com/sane-project/backends/-/archive/1.0.32/backends-1.0.32.tar.gz -> sane-backends-1.0.32.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=015968e2f62386d7fe0643a931383ffa
diff --git a/metadata/md5-cache/media-gfx/sane-backends-1.0.32-r2 b/metadata/md5-cache/media-gfx/sane-backends-1.0.32-r2
new file mode 100644
index 0000000..79127d5
--- /dev/null
+++ b/metadata/md5-cache/media-gfx/sane-backends-1.0.32-r2
@@ -0,0 +1,15 @@
+BDEPEND=>=app-portage/elt-patches-20170815 virtual/pkgconfig virtual/pkgconfig
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=sane_backends_dc210? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dc240? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dell1600n_net? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/tiff-3.9.7-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_canon_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_hpsj5s? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_mustek_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) usb? ( >=virtual/libusb-1-r1:1=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gphoto2? ( >=media-libs/libgphoto2-2.5.3.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( >=media-libs/libv4l-0.9.5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xinetd? ( sys-apps/xinetd ) snmp? ( net-analyzer/net-snmp:0= ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( sys-kernel/linux-headers ) >=sys-devel/gettext-0.18.1 >=virtual/pkgconfig-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout
+DESCRIPTION=Scanner Access Now Easy - Backends
+EAPI=7
+HOMEPAGE=http://www.sane-project.org/
+IUSE=gphoto2 ipv6 snmp systemd threads usb v4l xinetd zeroconf +sane_backends_abaton +sane_backends_agfafocus +sane_backends_apple +sane_backends_artec +sane_backends_artec_eplus48u +sane_backends_as6e +sane_backends_avision +sane_backends_bh +sane_backends_canon +sane_backends_canon630u +sane_backends_canon_dr +sane_backends_canon_lide70 -sane_backends_canon_pp +sane_backends_cardscan +sane_backends_coolscan +sane_backends_coolscan2 +sane_backends_coolscan3 +sane_backends_dc210 +sane_backends_dc240 +sane_backends_dc25 +sane_backends_dell1600n_net +sane_backends_dmc +sane_backends_epjitsu +sane_backends_epson +sane_backends_epson2 -sane_backends_escl +sane_backends_fujitsu +sane_backends_genesys +sane_backends_gt68xx +sane_backends_hp +sane_backends_hp3500 +sane_backends_hp3900 +sane_backends_hp4200 +sane_backends_hp5400 +sane_backends_hp5590 +sane_backends_hpljm1005 -sane_backends_hpsj5s +sane_backends_hs2p +sane_backends_ibm +sane_backends_kodak +sane_backends_kodakaio +sane_backends_kvs1025 +sane_backends_kvs20xx sane_backends_kvs40xx +sane_backends_leo +sane_backends_lexmark +sane_backends_ma1509 +sane_backends_magicolor +sane_backends_matsushita +sane_backends_microtek +sane_backends_microtek2 +sane_backends_mustek -sane_backends_mustek_pp +sane_backends_mustek_usb sane_backends_mustek_usb2 +sane_backends_nec +sane_backends_net +sane_backends_niash +sane_backends_p5 +sane_backends_pie +sane_backends_pixma +sane_backends_plustek +sane_backends_plustek_pp -sane_backends_pnm +sane_backends_qcam +sane_backends_ricoh +sane_backends_ricoh2 +sane_backends_rts8891 +sane_backends_s9036 +sane_backends_sceptre +sane_backends_sharp +sane_backends_sm3600 +sane_backends_sm3840 +sane_backends_snapscan +sane_backends_sp15c +sane_backends_st400 +sane_backends_stv680 +sane_backends_tamarack +sane_backends_teco1 +sane_backends_teco2 +sane_backends_teco3 +sane_backends_test +sane_backends_u12 +sane_backends_umax +sane_backends_umax1220u +sane_backends_umax_pp +sane_backends_xerox_mfp abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=GPL-2 public-domain
+RDEPEND=sane_backends_dc210? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dc240? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_dell1600n_net? ( >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/tiff-3.9.7-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_canon_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_hpsj5s? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sane_backends_mustek_pp? ( >=sys-libs/libieee1284-0.2.11-r3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) usb? ( >=virtual/libusb-1-r1:1=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gphoto2? ( >=media-libs/libgphoto2-2.5.3.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=virtual/jpeg-0-r2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( >=media-libs/libv4l-0.9.5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xinetd? ( sys-apps/xinetd ) snmp? ( net-analyzer/net-snmp:0= ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-apps/baselayout
+REQUIRED_USE=sane_backends_mustek_usb2? ( threads ) sane_backends_kvs40xx? ( threads )
+SLOT=0
+SRC_URI=https://gitlab.com/sane-project/backends/-/archive/1.0.32/backends-1.0.32.tar.gz -> sane-backends-1.0.32.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=015968e2f62386d7fe0643a931383ffa
diff --git a/metadata/md5-cache/media-libs/arc-camera-profile-0.0.1-r588 b/metadata/md5-cache/media-libs/arc-camera-profile-0.0.1-r588
deleted file mode 100644
index 8495f16..0000000
--- a/metadata/md5-cache/media-libs/arc-camera-profile-0.0.1-r588
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_timezone virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Runtime detect the number of cameras on device to generate corresponding media_profiles.xml.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_347cdef009360a54e6d1dfc2b382bc812b2a55db_b4e6727c0b89ed2bfb186ca205366bab69948ccb_871bb7e6654a823f1468a5857b4c74f12aaedbb5_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_347cdef009360a54e6d1dfc2b382bc812b2a55db_b4e6727c0b89ed2bfb186ca205366bab69948ccb_871bb7e6654a823f1468a5857b4c74f12aaedbb5_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_347cdef009360a54e6d1dfc2b382bc812b2a55db_b4e6727c0b89ed2bfb186ca205366bab69948ccb_871bb7e6654a823f1468a5857b4c74f12aaedbb5_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_timezone >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5cfd4292d19e03fe8ddc8339821270b8
diff --git a/metadata/md5-cache/media-libs/arc-camera-profile-0.0.1-r697 b/metadata/md5-cache/media-libs/arc-camera-profile-0.0.1-r697
new file mode 100644
index 0000000..fc5e1fb
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-camera-profile-0.0.1-r697
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Runtime detect the number of cameras on device to generate corresponding media_profiles.xml.
+EAPI=5
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b_049eedf136293a1ab81617017200cb31032eb384_d1fd07ac03f1ac6e670181ebd45b30e31efe5a87_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b_049eedf136293a1ab81617017200cb31032eb384_d1fd07ac03f1ac6e670181ebd45b30e31efe5a87_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=d8e69c022cf9cce46896f0d7ab128b8e
diff --git a/metadata/md5-cache/media-libs/arc-camera-profile-9999 b/metadata/md5-cache/media-libs/arc-camera-profile-9999
index 92fb9e8..9c86532 100644
--- a/metadata/md5-cache/media-libs/arc-camera-profile-9999
+++ b/metadata/md5-cache/media-libs/arc-camera-profile-9999
@@ -1,12 +1,12 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_timezone virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Runtime detect the number of cameras on device to generate corresponding media_profiles.xml.
 EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_timezone >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c726dc36297cdc38e4229214c056804d
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=68c0c61b82a230f6454b3d842366e922
diff --git a/metadata/md5-cache/media-libs/arc-camera-service-0.0.1-r522 b/metadata/md5-cache/media-libs/arc-camera-service-0.0.1-r522
deleted file mode 100644
index 9867df6..0000000
--- a/metadata/md5-cache/media-libs/arc-camera-service-0.0.1-r522
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=!chromeos-base/arc-camera-service media-libs/cros-camera-libcamera_timezone virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=ARC camera service. The service is in charge of accessing camera device. It uses linux domain socket (/run/camera/camera.sock) to build a synchronous channel.
-EAPI=5
-IUSE=-asan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_347cdef009360a54e6d1dfc2b382bc812b2a55db_0b0bd701798d12b090a5bbbcec163ecdb45e2567_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_347cdef009360a54e6d1dfc2b382bc812b2a55db_0b0bd701798d12b090a5bbbcec163ecdb45e2567_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!chromeos-base/arc-camera-service media-libs/cros-camera-libcamera_timezone >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=f8bb37b4aa31debeb250c7c25d93ccee
diff --git a/metadata/md5-cache/media-libs/arc-camera-service-9999 b/metadata/md5-cache/media-libs/arc-camera-service-9999
deleted file mode 100644
index b382bf8..0000000
--- a/metadata/md5-cache/media-libs/arc-camera-service-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=!chromeos-base/arc-camera-service media-libs/cros-camera-libcamera_timezone virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=ARC camera service. The service is in charge of accessing camera device. It uses linux domain socket (/run/camera/camera.sock) to build a synchronous channel.
-EAPI=5
-IUSE=-asan cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=!chromeos-base/arc-camera-service media-libs/cros-camera-libcamera_timezone >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9b792fb58861a2c78b9f9aab86dc3c3d
diff --git a/metadata/md5-cache/media-libs/arc-cros-gralloc-0.0.1-r386 b/metadata/md5-cache/media-libs/arc-cros-gralloc-0.0.1-r386
deleted file mode 100644
index 7132bb2..0000000
--- a/metadata/md5-cache/media-libs/arc-cros-gralloc-0.0.1-r386
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!<media-libs/minigbm-0.0.1-r438 x11-libs/arc-libdrm[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] video_cards_amdgpu? ( virtual/arc-opengles ) sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=ChromeOS gralloc implementation
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/minigbm
-IUSE=kernel-3_8 kernel-3_14 kernel-3_18 video_cards_amdgpu video_cards_exynos video_cards_intel video_cards_marvell video_cards_mediatek video_cards_msm video_cards_rockchip video_cards_tegra video_cards_virgl minigbm_platform_mt8183 minigbm_platform_mt8192 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master cros_host cros_workon_tree_445cf807514840545f4e7761b911b42bbe92af07
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<media-libs/minigbm-0.0.1-r438 x11-libs/arc-libdrm[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=294ce3f64cba6e077214f83921a46d18
diff --git a/metadata/md5-cache/media-libs/arc-cros-gralloc-0.0.1-r432 b/metadata/md5-cache/media-libs/arc-cros-gralloc-0.0.1-r432
new file mode 100644
index 0000000..b7f1d4d
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-cros-gralloc-0.0.1-r432
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=!<media-libs/minigbm-0.0.1-r438 x11-libs/arc-libdrm[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] video_cards_amdgpu? ( virtual/arc-opengles ) sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=ChromeOS gralloc implementation
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/minigbm
+IUSE=kernel-3_18 video_cards_amdgpu video_cards_exynos video_cards_intel video_cards_marvell video_cards_mediatek video_cards_msm video_cards_rockchip video_cards_tegra video_cards_virgl minigbm_platform_mt8183 minigbm_platform_mt8192 minigbm_platform_mt8195 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master cros_host cros_workon_tree_6db1492d66cd8acef88bacfe95f001e289adc55c
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<media-libs/minigbm-0.0.1-r438 x11-libs/arc-libdrm[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fb1adc7731880c3fad810d5610e97722
diff --git a/metadata/md5-cache/media-libs/arc-cros-gralloc-9999 b/metadata/md5-cache/media-libs/arc-cros-gralloc-9999
index 7fbc145..6fef408 100644
--- a/metadata/md5-cache/media-libs/arc-cros-gralloc-9999
+++ b/metadata/md5-cache/media-libs/arc-cros-gralloc-9999
@@ -4,12 +4,12 @@
 DESCRIPTION=ChromeOS gralloc implementation
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/minigbm
-IUSE=kernel-3_8 kernel-3_14 kernel-3_18 video_cards_amdgpu video_cards_exynos video_cards_intel video_cards_marvell video_cards_mediatek video_cards_msm video_cards_rockchip video_cards_tegra video_cards_virgl minigbm_platform_mt8183 minigbm_platform_mt8192 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master cros_host cros_workon_tree_
+IUSE=kernel-3_18 video_cards_amdgpu video_cards_exynos video_cards_intel video_cards_marvell video_cards_mediatek video_cards_msm video_cards_rockchip video_cards_tegra video_cards_virgl minigbm_platform_mt8183 minigbm_platform_mt8192 minigbm_platform_mt8195 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=!<media-libs/minigbm-0.0.1-r438 x11-libs/arc-libdrm[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9697139559f5bd23c81d90bfb0d0fe6a
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=586f6319148804c6e15dbc082dba23e5
diff --git a/metadata/md5-cache/media-libs/arc-mesa-19.0 b/metadata/md5-cache/media-libs/arc-mesa-19.0
index 36de677..222384e 100644
--- a/metadata/md5-cache/media-libs/arc-mesa-19.0
+++ b/metadata/md5-cache/media-libs/arc-mesa-19.0
@@ -1,14 +1,14 @@
 DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
-DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( >=sys-devel/arc-llvm-9:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( >=sys-devel/arc-llvm-9:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
 DESCRIPTION=OpenGL-like graphic library for Linux
 EAPI=6
 HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl +gallium -gbm gles1 gles2 +llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_040a39591a38d3dc778725575c72dcdc1b07e032 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl +gallium -gbm gles1 gles2 +llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_040a39591a38d3dc778725575c72dcdc1b07e032 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=*
 LICENSE=MIT LGPL-3 SGI-B-2.0
 PROPERTIES=live
 RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( >=sys-devel/arc-llvm-9:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
-REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d4e504bab55cca136d4f60c7be14240e
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=ce8f37f15c1277e203e53bc8e67f58bd
diff --git a/metadata/md5-cache/media-libs/arc-mesa-19.0-r37 b/metadata/md5-cache/media-libs/arc-mesa-19.0-r37
deleted file mode 100644
index 36de677..0000000
--- a/metadata/md5-cache/media-libs/arc-mesa-19.0-r37
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
-DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( >=sys-devel/arc-llvm-9:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=OpenGL-like graphic library for Linux
-EAPI=6
-HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl +gallium -gbm gles1 gles2 +llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_040a39591a38d3dc778725575c72dcdc1b07e032 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=MIT LGPL-3 SGI-B-2.0
-PROPERTIES=live
-RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( >=sys-devel/arc-llvm-9:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
-REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d4e504bab55cca136d4f60c7be14240e
diff --git a/metadata/md5-cache/media-libs/arc-mesa-19.0-r39 b/metadata/md5-cache/media-libs/arc-mesa-19.0-r39
new file mode 100644
index 0000000..222384e
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-mesa-19.0-r39
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
+DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( >=sys-devel/arc-llvm-9:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=6
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl +gallium -gbm gles1 gles2 +llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_040a39591a38d3dc778725575c72dcdc1b07e032 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( >=sys-devel/arc-llvm-9:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=ce8f37f15c1277e203e53bc8e67f58bd
diff --git a/metadata/md5-cache/media-libs/arc-mesa-9999 b/metadata/md5-cache/media-libs/arc-mesa-9999
index cbee745..9f35be3 100644
--- a/metadata/md5-cache/media-libs/arc-mesa-9999
+++ b/metadata/md5-cache/media-libs/arc-mesa-9999
@@ -1,14 +1,14 @@
 DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
-DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( >=sys-devel/arc-llvm-9:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( >=sys-devel/arc-llvm-9:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
 DESCRIPTION=OpenGL-like graphic library for Linux
 EAPI=6
 HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl +gallium -gbm gles1 gles2 +llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl +gallium -gbm gles1 gles2 +llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=~*
 LICENSE=MIT LGPL-3 SGI-B-2.0
 PROPERTIES=live
 RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( >=sys-devel/arc-llvm-9:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
-REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=f9ffb10b0857a28d7836055a812a636b
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=dc7f31c3876cef1e94c87c581bcaf749
diff --git a/metadata/md5-cache/media-libs/arc-mesa-amd-20.2.4-r30 b/metadata/md5-cache/media-libs/arc-mesa-amd-20.2.4-r30
deleted file mode 100644
index 1937233..0000000
--- a/metadata/md5-cache/media-libs/arc-mesa-amd-20.2.4-r30
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=The Mesa 3D Graphics Library
-EAPI=6
-HOMEPAGE=http://mesa3d.org/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe android-container-pi -android_vulkan_compute_0 cheets debug vulkan cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_33dcd0c41baeace97dffee0b895a64f93a033f3e arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=MIT
-PROPERTIES=live
-RDEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !media-libs/arc-mesa
-REQUIRED_USE=android_vulkan_compute_0? ( vulkan ) vulkan? ( || ( video_cards_amdgpu video_cards_intel ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=7004dbd3587dce08d77ea8db3715f896
diff --git a/metadata/md5-cache/media-libs/arc-mesa-amd-21.1.0-r49 b/metadata/md5-cache/media-libs/arc-mesa-amd-21.1.0-r49
new file mode 100644
index 0000000..5f1f668
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-mesa-amd-21.1.0-r49
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=The Mesa 3D Graphics Library
+EAPI=6
+HOMEPAGE=http://mesa3d.org/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe android-container-pi -android_vulkan_compute_0 cheets debug vulkan cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_cbc74a968f7dbca5312df2f7cb8af5ecadf471c5 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=MIT
+PROPERTIES=live
+RDEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !media-libs/arc-mesa
+REQUIRED_USE=android_vulkan_compute_0? ( vulkan ) vulkan? ( || ( video_cards_amdgpu video_cards_intel ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=9f41b0c3d57b8d0a381de5bcf8e50707
diff --git a/metadata/md5-cache/media-libs/arc-mesa-amd-9999 b/metadata/md5-cache/media-libs/arc-mesa-amd-9999
index c0a965e..fd5217c 100644
--- a/metadata/md5-cache/media-libs/arc-mesa-amd-9999
+++ b/metadata/md5-cache/media-libs/arc-mesa-amd-9999
@@ -1,14 +1,14 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
 DESCRIPTION=The Mesa 3D Graphics Library
 EAPI=6
 HOMEPAGE=http://mesa3d.org/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe android-container-pi -android_vulkan_compute_0 cheets debug vulkan cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe android-container-pi -android_vulkan_compute_0 cheets debug vulkan cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=~*
 LICENSE=MIT
 PROPERTIES=live
 RDEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !media-libs/arc-mesa
-REQUIRED_USE=android_vulkan_compute_0? ( vulkan ) vulkan? ( || ( video_cards_amdgpu video_cards_intel ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=android_vulkan_compute_0? ( vulkan ) vulkan? ( || ( video_cards_amdgpu video_cards_intel ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=7c9d65aeece52e94cea11638ea8ac79f
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=b39ab6ec5ae73f75e6df4003ec9b8514
diff --git a/metadata/md5-cache/media-libs/arc-mesa-freedreno-21.0.0_pre-r44 b/metadata/md5-cache/media-libs/arc-mesa-freedreno-21.0.0_pre-r44
deleted file mode 100644
index 5f921e9..0000000
--- a/metadata/md5-cache/media-libs/arc-mesa-freedreno-21.0.0_pre-r44
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install pretend setup test unpack
-DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=OpenGL-like graphic library for Linux
-EAPI=6
-HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=cheets cheets_user cheets_user_64 debug -vulkan abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_81076becad9df804deff46f52f64efa2f7f47288 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=MIT SGI-B-2.0
-PROPERTIES=live
-RDEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-REQUIRED_USE=cheets cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=fd423bdfdce2340f9b15b5b8b5f11859
diff --git a/metadata/md5-cache/media-libs/arc-mesa-freedreno-21.2.0_pre-r56 b/metadata/md5-cache/media-libs/arc-mesa-freedreno-21.2.0_pre-r56
new file mode 100644
index 0000000..3c21a70
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-mesa-freedreno-21.2.0_pre-r56
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install pretend setup test unpack
+DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=6
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=cheets cheets_user cheets_user_64 debug -vulkan abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_5e2d3eccd85d551dcd7d7bfa5dac28a8d680dc88 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=MIT SGI-B-2.0
+PROPERTIES=live
+RDEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+REQUIRED_USE=cheets cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=ce632ea587b72b7c1b0bbe5dbd353937
diff --git a/metadata/md5-cache/media-libs/arc-mesa-freedreno-9999 b/metadata/md5-cache/media-libs/arc-mesa-freedreno-9999
index bc5d463..1dc64d6 100644
--- a/metadata/md5-cache/media-libs/arc-mesa-freedreno-9999
+++ b/metadata/md5-cache/media-libs/arc-mesa-freedreno-9999
@@ -1,14 +1,14 @@
 DEFINED_PHASES=compile configure info install pretend setup test unpack
-DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
 DESCRIPTION=OpenGL-like graphic library for Linux
 EAPI=6
 HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=cheets cheets_user cheets_user_64 debug -vulkan abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=cheets cheets_user cheets_user_64 debug -vulkan abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=~*
 LICENSE=MIT SGI-B-2.0
 PROPERTIES=live
 RDEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-REQUIRED_USE=cheets cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=cheets cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=70d5de271424ecf265ff940efce8e0a4
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=7d96284ecbeeafdd8786047faa989fec
diff --git a/metadata/md5-cache/media-libs/arc-mesa-img-19.0_pre1 b/metadata/md5-cache/media-libs/arc-mesa-img-19.0_pre1
index ef360f5..0c64d22 100644
--- a/metadata/md5-cache/media-libs/arc-mesa-img-19.0_pre1
+++ b/metadata/md5-cache/media-libs/arc-mesa-img-19.0_pre1
@@ -3,12 +3,12 @@
 DESCRIPTION=OpenGL-like graphic library for Linux
 EAPI=5
 HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl -gallium -gbm gles1 gles2 -llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_040a39591a38d3dc778725575c72dcdc1b07e032 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl -gallium -gbm gles1 gles2 -llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_040a39591a38d3dc778725575c72dcdc1b07e032 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=*
 LICENSE=MIT LGPL-3 SGI-B-2.0
 PROPERTIES=live
 RDEPEND=video_cards_powervr? ( media-libs/arc-img-ddk !<media-libs/arc-img-ddk-1.9 ) cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
-REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_powervr ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_powervr ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	autotools	d0e5375d47f4c809f406eb892e531513	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a482958b12904d8796f7945ebb546f28
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	autotools	d0e5375d47f4c809f406eb892e531513	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=781670352d2d848b1161245998a3c38f
diff --git a/metadata/md5-cache/media-libs/arc-mesa-img-19.0_pre1-r7 b/metadata/md5-cache/media-libs/arc-mesa-img-19.0_pre1-r7
deleted file mode 100644
index ef360f5..0000000
--- a/metadata/md5-cache/media-libs/arc-mesa-img-19.0_pre1-r7
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
-DEPEND=video_cards_powervr? ( media-libs/arc-img-ddk !<media-libs/arc-img-ddk-1.9 ) cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=OpenGL-like graphic library for Linux
-EAPI=5
-HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl -gallium -gbm gles1 gles2 -llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_040a39591a38d3dc778725575c72dcdc1b07e032 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=MIT LGPL-3 SGI-B-2.0
-PROPERTIES=live
-RDEPEND=video_cards_powervr? ( media-libs/arc-img-ddk !<media-libs/arc-img-ddk-1.9 ) cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
-REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_powervr ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	autotools	d0e5375d47f4c809f406eb892e531513	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a482958b12904d8796f7945ebb546f28
diff --git a/metadata/md5-cache/media-libs/arc-mesa-img-19.0_pre1-r8 b/metadata/md5-cache/media-libs/arc-mesa-img-19.0_pre1-r8
new file mode 100644
index 0000000..0c64d22
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-mesa-img-19.0_pre1-r8
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
+DEPEND=video_cards_powervr? ( media-libs/arc-img-ddk !<media-libs/arc-img-ddk-1.9 ) cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=5
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl -gallium -gbm gles1 gles2 -llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_040a39591a38d3dc778725575c72dcdc1b07e032 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=video_cards_powervr? ( media-libs/arc-img-ddk !<media-libs/arc-img-ddk-1.9 ) cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_powervr ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	autotools	d0e5375d47f4c809f406eb892e531513	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=781670352d2d848b1161245998a3c38f
diff --git a/metadata/md5-cache/media-libs/arc-mesa-img-9999 b/metadata/md5-cache/media-libs/arc-mesa-img-9999
index 71c15f8..2651aca 100644
--- a/metadata/md5-cache/media-libs/arc-mesa-img-9999
+++ b/metadata/md5-cache/media-libs/arc-mesa-img-9999
@@ -3,12 +3,12 @@
 DESCRIPTION=OpenGL-like graphic library for Linux
 EAPI=5
 HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl -gallium -gbm gles1 gles2 -llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 cheets +classic debug dri egl -gallium -gbm gles1 gles2 -llvm +nptl pic selinux shared-glapi vulkan X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=~*
 LICENSE=MIT LGPL-3 SGI-B-2.0
 PROPERTIES=live
 RDEPEND=video_cards_powervr? ( media-libs/arc-img-ddk !<media-libs/arc-img-ddk-1.9 ) cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
-REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_powervr ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_powervr ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	autotools	d0e5375d47f4c809f406eb892e531513	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=4148dca2711958aaa49e751b85b66fd6
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	autotools	d0e5375d47f4c809f406eb892e531513	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=c69bfb4bdf96843cf987ffabbe8ca139
diff --git a/metadata/md5-cache/media-libs/arc-mesa-iris-20.2.1-r17 b/metadata/md5-cache/media-libs/arc-mesa-iris-20.2.1-r17
deleted file mode 100644
index a0c3b94..0000000
--- a/metadata/md5-cache/media-libs/arc-mesa-iris-20.2.1-r17
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=The Mesa 3D Graphics Library
-EAPI=6
-HOMEPAGE=http://mesa3d.org/
-IUSE=cheets cheets_user cheets_user_64 debug vulkan android_vulkan_compute_0 android_aep abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_80bd75d79f29e0c38289ee2a975c26522c231b6f arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=MIT SGI-B-2.0
-PROPERTIES=live
-RDEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-REQUIRED_USE=cheets android_vulkan_compute_0? ( vulkan ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=7d6601cca940fd54f031e4004962920b
diff --git a/metadata/md5-cache/media-libs/arc-mesa-iris-21.1.1-r28 b/metadata/md5-cache/media-libs/arc-mesa-iris-21.1.1-r28
new file mode 100644
index 0000000..5723e2f
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-mesa-iris-21.1.1-r28
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=The Mesa 3D Graphics Library
+EAPI=6
+HOMEPAGE=http://mesa3d.org/
+IUSE=cheets cheets_user cheets_user_64 debug vulkan android_vulkan_compute_0 android_aep abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_f623425a2c035582400821c0eb4451faaac1b9f2 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=MIT SGI-B-2.0
+PROPERTIES=live
+RDEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+REQUIRED_USE=cheets android_vulkan_compute_0? ( vulkan ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=4563bbbbc6dbc514a4c7ec27ea882902
diff --git a/metadata/md5-cache/media-libs/arc-mesa-iris-9999 b/metadata/md5-cache/media-libs/arc-mesa-iris-9999
index 830c91c..40f0d80 100644
--- a/metadata/md5-cache/media-libs/arc-mesa-iris-9999
+++ b/metadata/md5-cache/media-libs/arc-mesa-iris-9999
@@ -1,14 +1,14 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
 DESCRIPTION=The Mesa 3D Graphics Library
 EAPI=6
 HOMEPAGE=http://mesa3d.org/
-IUSE=cheets cheets_user cheets_user_64 debug vulkan android_vulkan_compute_0 android_aep abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=cheets cheets_user cheets_user_64 debug vulkan android_vulkan_compute_0 android_aep abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=~*
 LICENSE=MIT SGI-B-2.0
 PROPERTIES=live
 RDEPEND=>=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-REQUIRED_USE=cheets android_vulkan_compute_0? ( vulkan ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=cheets android_vulkan_compute_0? ( vulkan ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b23abd7cfe30f361b6f8196e22003916
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=d2f2c1a10aec3236e5c23a79b33293ca
diff --git a/metadata/md5-cache/media-libs/arc-mesa-virgl-20 b/metadata/md5-cache/media-libs/arc-mesa-virgl-20
deleted file mode 100644
index ac56f772..0000000
--- a/metadata/md5-cache/media-libs/arc-mesa-virgl-20
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
-DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=OpenGL-like graphic library for Linux
-EAPI=6
-HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 +cheets classic debug dri +egl +gallium -gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_cde5431fb6fb5b6843049a5df677de47050df448 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=MIT LGPL-3 SGI-B-2.0
-PROPERTIES=live
-RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
-REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=7fe44f78b5c04ea9cfa840d48f3ae45e
diff --git a/metadata/md5-cache/media-libs/arc-mesa-virgl-20.0.7-r15 b/metadata/md5-cache/media-libs/arc-mesa-virgl-20.0.7-r15
deleted file mode 100644
index ac56f772..0000000
--- a/metadata/md5-cache/media-libs/arc-mesa-virgl-20.0.7-r15
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
-DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=OpenGL-like graphic library for Linux
-EAPI=6
-HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 +cheets classic debug dri +egl +gallium -gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_cde5431fb6fb5b6843049a5df677de47050df448 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=MIT LGPL-3 SGI-B-2.0
-PROPERTIES=live
-RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
-REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=7fe44f78b5c04ea9cfa840d48f3ae45e
diff --git a/metadata/md5-cache/media-libs/arc-mesa-virgl-21 b/metadata/md5-cache/media-libs/arc-mesa-virgl-21
new file mode 100644
index 0000000..33d5012
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-mesa-virgl-21
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
+DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=6
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 +cheets classic debug dri +egl +gallium -gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_88bd3b1a95f9324ca0ef06e7bf3a025ce1de8f80 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=57eede8bbb73fa395899aef940dae03b
diff --git a/metadata/md5-cache/media-libs/arc-mesa-virgl-21.0.2-r3 b/metadata/md5-cache/media-libs/arc-mesa-virgl-21.0.2-r3
new file mode 100644
index 0000000..33d5012
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-mesa-virgl-21.0.2-r3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
+DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=6
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 +cheets classic debug dri +egl +gallium -gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_88bd3b1a95f9324ca0ef06e7bf3a025ce1de8f80 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=57eede8bbb73fa395899aef940dae03b
diff --git a/metadata/md5-cache/media-libs/arc-mesa-virgl-21.1 b/metadata/md5-cache/media-libs/arc-mesa-virgl-21.1
new file mode 100644
index 0000000..8363588
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-mesa-virgl-21.1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
+DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=6
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 +cheets classic debug dri +egl +gallium -gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_d663408cd6538b6fee669db87ea77f6a38a37177 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=~*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_virgl ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=72a61c02ae38a83910e0ba830458bc0a
diff --git a/metadata/md5-cache/media-libs/arc-mesa-virgl-21.1-r3 b/metadata/md5-cache/media-libs/arc-mesa-virgl-21.1-r3
new file mode 100644
index 0000000..8363588
--- /dev/null
+++ b/metadata/md5-cache/media-libs/arc-mesa-virgl-21.1-r3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
+DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=6
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 +cheets classic debug dri +egl +gallium -gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_d663408cd6538b6fee669db87ea77f6a38a37177 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=~*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_virgl ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=72a61c02ae38a83910e0ba830458bc0a
diff --git a/metadata/md5-cache/media-libs/arc-mesa-virgl-9999 b/metadata/md5-cache/media-libs/arc-mesa-virgl-9999
index eab6fbd..0b30541 100644
--- a/metadata/md5-cache/media-libs/arc-mesa-virgl-9999
+++ b/metadata/md5-cache/media-libs/arc-mesa-virgl-9999
@@ -1,14 +1,14 @@
 DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
-DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
 DESCRIPTION=OpenGL-like graphic library for Linux
 EAPI=6
 HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 +cheets classic debug dri +egl +gallium -gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_savage video_cards_sis video_cards_vmware video_cards_tdfx video_cards_via video_cards_freedreno video_cards_virgl android_aep -android_gles2 -android_gles30 +android_gles31 -android_gles32 -android_vulkan_compute_0 +cheets classic debug dri +egl +gallium -gbm +gles1 +gles2 -llvm +nptl pic selinux +shared-glapi -vulkan -X xlib-glx cheets_user cheets_user_64 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=~*
 LICENSE=MIT LGPL-3 SGI-B-2.0
 PROPERTIES=live
 RDEPEND=cheets? ( >=x11-libs/arc-libdrm-2.4.82[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] llvm? ( sys-devel/arc-llvm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_amdgpu? ( dev-libs/arc-libelf[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) )
-REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=^^ ( android_gles2 android_gles30 android_gles31 android_gles32 ) android_aep? ( !android_gles2 !android_gles30 ) android_vulkan_compute_0? ( vulkan ) cheets? ( vulkan? ( ^^ ( video_cards_amdgpu video_cards_intel video_cards_virgl ) ) video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( !cheets_user !cheets_user_64 ) ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=592b39933ee1ca4fcf0daae178deceaf
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=a730c6e9f63f71acee0d7ad346d371d7
diff --git a/metadata/md5-cache/media-libs/cros-camera-android-headers-0.0.1-r178 b/metadata/md5-cache/media-libs/cros-camera-android-headers-0.0.1-r178
deleted file mode 100644
index 4ceaeda..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-android-headers-0.0.1-r178
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=Android header files required for building camera HAL v3
-EAPI=5
-IUSE=cros_host cros_workon_tree_3cb528fabbae99fda9407e6a5449e678a782b3ca
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!media-libs/arc-camera3-android-headers
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b088c5f7b3aa9c2f8e4ac1914a852e84
diff --git a/metadata/md5-cache/media-libs/cros-camera-android-headers-9999 b/metadata/md5-cache/media-libs/cros-camera-android-headers-9999
deleted file mode 100644
index 7e1b5f0..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-android-headers-9999
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=Android header files required for building camera HAL v3
-EAPI=5
-IUSE=cros_host cros_workon_tree_
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!media-libs/arc-camera3-android-headers
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=eed0286acafb1b7997882a3667a26c2e
diff --git a/metadata/md5-cache/media-libs/cros-camera-connector-client-0.0.1-r159 b/metadata/md5-cache/media-libs/cros-camera-connector-client-0.0.1-r159
deleted file mode 100644
index d574bc7..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-connector-client-0.0.1-r159
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_connector x11-libs/libdrm >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=A simple package that exercises cros-camera-libcamera_connector
-EAPI=7
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_82d90b383f9fe16cd8f88ecf297d788777842b22_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_82d90b383f9fe16cd8f88ecf297d788777842b22_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_82d90b383f9fe16cd8f88ecf297d788777842b22_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_connector >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r159
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6440f41d2aca8974ccb904bb3cb086b2
diff --git a/metadata/md5-cache/media-libs/cros-camera-connector-client-0.0.1-r245 b/metadata/md5-cache/media-libs/cros-camera-connector-client-0.0.1-r245
new file mode 100644
index 0000000..741fc21
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-connector-client-0.0.1-r245
@@ -0,0 +1,13 @@
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/cros-camera-libs x11-libs/libdrm >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=A simple package that exercises cros-camera-libcamera_connector
+EAPI=7
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_318ca9f48604274cd31481e13eb9321be3d94d8f_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_318ca9f48604274cd31481e13eb9321be3d94d8f_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-libs >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r245
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e09a0d78e888b56e78d29a29d5aeb7bb
diff --git a/metadata/md5-cache/media-libs/cros-camera-connector-client-9999 b/metadata/md5-cache/media-libs/cros-camera-connector-client-9999
index f273615..01deae0 100644
--- a/metadata/md5-cache/media-libs/cros-camera-connector-client-9999
+++ b/metadata/md5-cache/media-libs/cros-camera-connector-client-9999
@@ -1,13 +1,13 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git dev-vcs/git
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_connector x11-libs/libdrm >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/cros-camera-libs x11-libs/libdrm >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=A simple package that exercises cros-camera-libcamera_connector
 EAPI=7
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_connector >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-libs >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dcffd8edce53e6f793de30868df3e2ae
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7515ce089787e1e1762f67d96627b0da
diff --git a/metadata/md5-cache/media-libs/cros-camera-document-scanning-2021.06.22 b/metadata/md5-cache/media-libs/cros-camera-document-scanning-2021.06.22
new file mode 100644
index 0000000..4def096
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-document-scanning-2021.06.22
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Google3 document scanning library.
+EAPI=7
+IUSE=march_goldmont march_armv8 ondevice_document_scanner
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/chromeos-document-scanning-lib-2021.06.22.tar.bz2
+_md5_=aea3c48e9632fe55ad12e0f62be4d4d4
diff --git a/metadata/md5-cache/media-libs/cros-camera-document-scanning-2021.06.22-r1 b/metadata/md5-cache/media-libs/cros-camera-document-scanning-2021.06.22-r1
new file mode 100644
index 0000000..4def096
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-document-scanning-2021.06.22-r1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Google3 document scanning library.
+EAPI=7
+IUSE=march_goldmont march_armv8 ondevice_document_scanner
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/chromeos-document-scanning-lib-2021.06.22.tar.bz2
+_md5_=aea3c48e9632fe55ad12e0f62be4d4d4
diff --git a/metadata/md5-cache/media-libs/cros-camera-facessd-2021.05.19 b/metadata/md5-cache/media-libs/cros-camera-facessd-2021.05.19
new file mode 100644
index 0000000..b9bb4dd
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-facessd-2021.05.19
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Google3 face detection library.
+EAPI=7
+IUSE=march_alderlake march_bdver4 march_corei7 march_goldmont march_silvermont march_skylake march_tremont march_znver1 march_armv8
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/chromeos-facessd-lib-2021.05.19.tar.bz2
+_md5_=b13794558d6c26af3d141025aeab9ddc
diff --git a/metadata/md5-cache/media-libs/cros-camera-facessd-2021.05.19-r1 b/metadata/md5-cache/media-libs/cros-camera-facessd-2021.05.19-r1
new file mode 100644
index 0000000..b9bb4dd
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-facessd-2021.05.19-r1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Google3 face detection library.
+EAPI=7
+IUSE=march_alderlake march_bdver4 march_corei7 march_goldmont march_silvermont march_skylake march_tremont march_znver1 march_armv8
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/chromeos-facessd-lib-2021.05.19.tar.bz2
+_md5_=b13794558d6c26af3d141025aeab9ddc
diff --git a/metadata/md5-cache/media-libs/cros-camera-hal-intel-ipu6-0.0.2-r50 b/metadata/md5-cache/media-libs/cros-camera-hal-intel-ipu6-0.0.2-r50
deleted file mode 100644
index ac88482..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-hal-intel-ipu6-0.0.2-r50
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-config-tools chromeos-base/metrics dev-libs/expat !ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-libs-bin ) ) ipu6se? ( media-libs/intel-ipu6se-libs-bin x11-libs/libva-intel-media-driver ) ipu6ep? ( media-libs/intel-ipu6ep-libs-bin ) !media-libs/cros-camera-hal-intel-ipu6-squash media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcamera_v4l2_device media-libs/cros-camera-libcbm media-libs/libsync media-libs/libyuv media-libs/cros-camera-libcab sys-kernel/linux-headers media-libs/cros-camera-android-headers virtual/jpeg:0 virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Intel IPU6 (Image Processing Unit) Chrome OS camera HAL
-EAPI=7
-IUSE=ipu6se ipu6ep cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_5a6658345b607258b3cafbbf3298091060659eb9_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_5a6658345b607258b3cafbbf3298091060659eb9_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_5a6658345b607258b3cafbbf3298091060659eb9_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=Apache-2.0
-PROPERTIES=live live live
-RDEPEND=chromeos-base/chromeos-config-tools chromeos-base/metrics dev-libs/expat !ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-libs-bin ) ) ipu6se? ( media-libs/intel-ipu6se-libs-bin x11-libs/libva-intel-media-driver ) ipu6ep? ( media-libs/intel-ipu6ep-libs-bin ) !media-libs/cros-camera-hal-intel-ipu6-squash media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcamera_v4l2_device media-libs/cros-camera-libcbm media-libs/libsync media-libs/libyuv >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
-_md5_=f633c358c7393e765a3d17cb5ea0a38e
diff --git a/metadata/md5-cache/media-libs/cros-camera-hal-intel-ipu6-0.0.2-r99 b/metadata/md5-cache/media-libs/cros-camera-hal-intel-ipu6-0.0.2-r99
new file mode 100644
index 0000000..45719bd
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-hal-intel-ipu6-0.0.2-r99
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/chromeos-config-tools chromeos-base/cros-camera-libs chromeos-base/cros-camera-android-deps dev-libs/expat !ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-camera-bins ) ) ipu6se? ( media-libs/intel-ipu6se-camera-bins x11-libs/libva-intel-media-driver ) ipu6ep? ( media-libs/intel-ipu6ep-camera-bins ) !media-libs/cros-camera-hal-intel-ipu6-squash media-libs/libsync media-libs/libyuv sys-kernel/linux-headers virtual/jpeg:0 virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Intel IPU6 (Image Processing Unit) Chrome OS camera HAL
+EAPI=7
+IUSE=ipu6se ipu6ep cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_39c3d3a73f6da845a21c6cb5cc49dcca62f80f6a cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_39c3d3a73f6da845a21c6cb5cc49dcca62f80f6a cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live live
+RDEPEND=chromeos-base/chromeos-config-tools chromeos-base/cros-camera-libs chromeos-base/cros-camera-android-deps dev-libs/expat !ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-camera-bins ) ) ipu6se? ( media-libs/intel-ipu6se-camera-bins x11-libs/libva-intel-media-driver ) ipu6ep? ( media-libs/intel-ipu6ep-camera-bins ) !media-libs/cros-camera-hal-intel-ipu6-squash media-libs/libsync media-libs/libyuv >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
+_md5_=bbda7bfe2462e99ded910c9f07b549a5
diff --git a/metadata/md5-cache/media-libs/cros-camera-hal-intel-ipu6-9999 b/metadata/md5-cache/media-libs/cros-camera-hal-intel-ipu6-9999
index 2f27ac3..c3e87cd 100644
--- a/metadata/md5-cache/media-libs/cros-camera-hal-intel-ipu6-9999
+++ b/metadata/md5-cache/media-libs/cros-camera-hal-intel-ipu6-9999
@@ -1,13 +1,13 @@
-BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git virtual/pkgconfig
+BDEPEND=dev-vcs/git dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-config-tools chromeos-base/metrics dev-libs/expat !ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-libs-bin ) ) ipu6se? ( media-libs/intel-ipu6se-libs-bin x11-libs/libva-intel-media-driver ) ipu6ep? ( media-libs/intel-ipu6ep-libs-bin ) !media-libs/cros-camera-hal-intel-ipu6-squash media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcamera_v4l2_device media-libs/cros-camera-libcbm media-libs/libsync media-libs/libyuv media-libs/cros-camera-libcab sys-kernel/linux-headers media-libs/cros-camera-android-headers virtual/jpeg:0 virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/chromeos-config-tools chromeos-base/cros-camera-libs chromeos-base/cros-camera-android-deps dev-libs/expat !ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-camera-bins ) ) ipu6se? ( media-libs/intel-ipu6se-camera-bins x11-libs/libva-intel-media-driver ) ipu6ep? ( media-libs/intel-ipu6ep-camera-bins ) !media-libs/cros-camera-hal-intel-ipu6-squash media-libs/libsync media-libs/libyuv sys-kernel/linux-headers virtual/jpeg:0 virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Intel IPU6 (Image Processing Unit) Chrome OS camera HAL
 EAPI=7
-IUSE=ipu6se ipu6ep cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=ipu6se ipu6ep cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=Apache-2.0
-PROPERTIES=live live live
-RDEPEND=chromeos-base/chromeos-config-tools chromeos-base/metrics dev-libs/expat !ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-libs-bin ) ) ipu6se? ( media-libs/intel-ipu6se-libs-bin x11-libs/libva-intel-media-driver ) ipu6ep? ( media-libs/intel-ipu6ep-libs-bin ) !media-libs/cros-camera-hal-intel-ipu6-squash media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcamera_v4l2_device media-libs/cros-camera-libcbm media-libs/libsync media-libs/libyuv >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=chromeos-base/chromeos-config-tools chromeos-base/cros-camera-libs chromeos-base/cros-camera-android-deps dev-libs/expat !ipu6se? ( !ipu6ep? ( media-libs/intel-ipu6-camera-bins ) ) ipu6se? ( media-libs/intel-ipu6se-camera-bins x11-libs/libva-intel-media-driver ) ipu6ep? ( media-libs/intel-ipu6ep-camera-bins ) !media-libs/cros-camera-hal-intel-ipu6-squash media-libs/libsync media-libs/libyuv >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
-_md5_=72dc3432043db70761ed07b1643d1b7a
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
+_md5_=98d83fbba4b69555d9663f19bb25652d
diff --git a/metadata/md5-cache/media-libs/cros-camera-hal-ip-0.0.1-r372 b/metadata/md5-cache/media-libs/cros-camera-hal-ip-0.0.1-r372
deleted file mode 100644
index fc49893..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-hal-ip-0.0.1-r372
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcbm media-libs/cros-camera-libjda media-libs/libsync media-libs/cros-camera-android-headers media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_metadata virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS IP camera HAL v3.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_46351f517a589c6ba64f17c0042dc2c5da2c0956_347cdef009360a54e6d1dfc2b382bc812b2a55db_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_46351f517a589c6ba64f17c0042dc2c5da2c0956_347cdef009360a54e6d1dfc2b382bc812b2a55db_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_46351f517a589c6ba64f17c0042dc2c5da2c0956_347cdef009360a54e6d1dfc2b382bc812b2a55db_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcbm media-libs/cros-camera-libjda media-libs/libsync >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=dbcb5c95686bd3ca2633653049267eee
diff --git a/metadata/md5-cache/media-libs/cros-camera-hal-ip-0.0.1-r483 b/metadata/md5-cache/media-libs/cros-camera-hal-ip-0.0.1-r483
new file mode 100644
index 0000000..38e7112
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-hal-ip-0.0.1-r483
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs media-libs/libsync virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS IP camera HAL v3.
+EAPI=5
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_08b12a8d5bd9bbe7ab69c8e6cd9f11b700d32b76_309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b_049eedf136293a1ab81617017200cb31032eb384_6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_08b12a8d5bd9bbe7ab69c8e6cd9f11b700d32b76_309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b_049eedf136293a1ab81617017200cb31032eb384_6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs media-libs/libsync >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=969bc63c1a110bdb4619b53ff954a3dd
diff --git a/metadata/md5-cache/media-libs/cros-camera-hal-ip-9999 b/metadata/md5-cache/media-libs/cros-camera-hal-ip-9999
index 739ef43..9d45a27 100644
--- a/metadata/md5-cache/media-libs/cros-camera-hal-ip-9999
+++ b/metadata/md5-cache/media-libs/cros-camera-hal-ip-9999
@@ -1,12 +1,12 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcbm media-libs/cros-camera-libjda media-libs/libsync media-libs/cros-camera-android-headers media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_metadata virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs media-libs/libsync virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS IP camera HAL v3.
 EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcbm media-libs/cros-camera-libjda media-libs/libsync >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs media-libs/libsync >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=801b43d42ba9aa0010e98a68c52554bf
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=415703279c1f9728dc2e22dbe2e46997
diff --git a/metadata/md5-cache/media-libs/cros-camera-hal-usb-0.0.1-r770 b/metadata/md5-cache/media-libs/cros-camera-hal-usb-0.0.1-r770
deleted file mode 100644
index 620e6ef..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-hal-usb-0.0.1-r770
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/re2 !media-libs/arc-camera3-hal-usb media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_metadata usb_camera_monocle? ( media-libs/librealtek-sdk ) media-libs/cros-camera-libcamera_timezone media-libs/cros-camera-libcbm media-libs/cros-camera-libjda media-libs/libsync unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) chromeos-base/chromeos-config-tools >=chromeos-base/metrics-0.0.1-r3152 media-libs/cros-camera-android-headers media-libs/libyuv virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS USB camera HAL v3.
-EAPI=5
-IUSE=usb_camera_monocle generated_cros_config unibuild cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_347cdef009360a54e6d1dfc2b382bc812b2a55db_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_347cdef009360a54e6d1dfc2b382bc812b2a55db_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_347cdef009360a54e6d1dfc2b382bc812b2a55db_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=dev-libs/re2 !media-libs/arc-camera3-hal-usb media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_metadata usb_camera_monocle? ( media-libs/librealtek-sdk ) media-libs/cros-camera-libcamera_timezone media-libs/cros-camera-libcbm media-libs/cros-camera-libjda media-libs/libsync unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) chromeos-base/chromeos-config-tools >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e6da3f0048d0ca43ab1f01190ed6c171
diff --git a/metadata/md5-cache/media-libs/cros-camera-hal-usb-0.0.1-r903 b/metadata/md5-cache/media-libs/cros-camera-hal-usb-0.0.1-r903
new file mode 100644
index 0000000..2c0319d
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-hal-usb-0.0.1-r903
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs dev-libs/re2 media-libs/libsync chromeos-base/chromeos-config-tools media-libs/libyuv virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS USB camera HAL v3.
+EAPI=5
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b_049eedf136293a1ab81617017200cb31032eb384_6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315_aa0612733aca2d5ffa65470f07408228b473ebdb_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b_049eedf136293a1ab81617017200cb31032eb384_6cdd3e4e16d9890ff8b5fe897e4cf5a94620c315_aa0612733aca2d5ffa65470f07408228b473ebdb_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs dev-libs/re2 media-libs/libsync chromeos-base/chromeos-config-tools >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=ff6ff07b728d696deb70fd908edd1c4f
diff --git a/metadata/md5-cache/media-libs/cros-camera-hal-usb-9999 b/metadata/md5-cache/media-libs/cros-camera-hal-usb-9999
index f72243a..7558844 100644
--- a/metadata/md5-cache/media-libs/cros-camera-hal-usb-9999
+++ b/metadata/md5-cache/media-libs/cros-camera-hal-usb-9999
@@ -1,12 +1,12 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/re2 !media-libs/arc-camera3-hal-usb media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_metadata usb_camera_monocle? ( media-libs/librealtek-sdk ) media-libs/cros-camera-libcamera_timezone media-libs/cros-camera-libcbm media-libs/cros-camera-libjda media-libs/libsync unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) chromeos-base/chromeos-config-tools >=chromeos-base/metrics-0.0.1-r3152 media-libs/cros-camera-android-headers media-libs/libyuv virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs dev-libs/re2 media-libs/libsync chromeos-base/chromeos-config-tools media-libs/libyuv virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS USB camera HAL v3.
 EAPI=5
-IUSE=usb_camera_monocle generated_cros_config unibuild cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=dev-libs/re2 !media-libs/arc-camera3-hal-usb media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_metadata usb_camera_monocle? ( media-libs/librealtek-sdk ) media-libs/cros-camera-libcamera_timezone media-libs/cros-camera-libcbm media-libs/cros-camera-libjda media-libs/libsync unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) chromeos-base/chromeos-config-tools >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs dev-libs/re2 media-libs/libsync chromeos-base/chromeos-config-tools >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=13561b7358131e2a565b81afd5a49b59
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=0b432e995476a74673916b08b6f5d85a
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcab-0.0.1-r476 b/metadata/md5-cache/media-libs/cros-camera-libcab-0.0.1-r476
deleted file mode 100644
index 50811ef..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcab-0.0.1-r476
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcab camera_feature_portrait_mode? ( media-libs/cros-camera-libcam_gpu_algo ) media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Camera algorithm bridge library for proprietary camera algorithm isolation
-EAPI=7
-IUSE=camera_feature_portrait_mode ipu6se cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcab camera_feature_portrait_mode? ( media-libs/cros-camera-libcam_gpu_algo ) media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r476
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dca540f5da6d1683032548ddbcdd2cb6
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcab-9999 b/metadata/md5-cache/media-libs/cros-camera-libcab-9999
deleted file mode 100644
index b8f28ab..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcab-9999
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcab camera_feature_portrait_mode? ( media-libs/cros-camera-libcam_gpu_algo ) media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Camera algorithm bridge library for proprietary camera algorithm isolation
-EAPI=7
-IUSE=camera_feature_portrait_mode ipu6se cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcab camera_feature_portrait_mode? ( media-libs/cros-camera-libcam_gpu_algo ) media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/9999
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3037a8595759bdbd76931d52cc0bbb79
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcab-test-0.0.1-r460 b/metadata/md5-cache/media-libs/cros-camera-libcab-test-0.0.1-r460
deleted file mode 100644
index 2f930c0..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcab-test-0.0.1-r460
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-cpp/gtest:= !media-libs/arc-camera3-libcab-test media-libs/cros-camera-libcab >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Test for camera algorithm bridge library
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=dev-cpp/gtest:= !media-libs/arc-camera3-libcab-test media-libs/cros-camera-libcab >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d2e32b7bc06061b3d00564fd0f66530c
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcab-test-0.0.1-r546 b/metadata/md5-cache/media-libs/cros-camera-libcab-test-0.0.1-r546
new file mode 100644
index 0000000..5b7c8ce
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-libcab-test-0.0.1-r546
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/cros-camera-libs dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Test for camera algorithm bridge library
+EAPI=5
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-libs dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=3f1ceb6724fc598fe7407c3002622a21
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcab-test-9999 b/metadata/md5-cache/media-libs/cros-camera-libcab-test-9999
index ced872e..fe4f4a6 100644
--- a/metadata/md5-cache/media-libs/cros-camera-libcab-test-9999
+++ b/metadata/md5-cache/media-libs/cros-camera-libcab-test-9999
@@ -1,12 +1,12 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-cpp/gtest:= !media-libs/arc-camera3-libcab-test media-libs/cros-camera-libcab >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/cros-camera-libs dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Test for camera algorithm bridge library
 EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=dev-cpp/gtest:= !media-libs/arc-camera3-libcab-test media-libs/cros-camera-libcab >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-libs dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=37587b66db1be8c0585e51f71049f619
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=c3e0999a6c5be76c6fe57f8dd64c5a79
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcam_gpu_algo-0.0.1-r201 b/metadata/md5-cache/media-libs/cros-camera-libcam_gpu_algo-0.0.1-r201
deleted file mode 100644
index 63ca4e3..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcam_gpu_algo-0.0.1-r201
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-effect-portrait-mode >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera GPU algorithm library.
-EAPI=7
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-effect-portrait-mode >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r201
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=12e9fc9707e0e648d916addaf0105448
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcam_gpu_algo-9999 b/metadata/md5-cache/media-libs/cros-camera-libcam_gpu_algo-9999
deleted file mode 100644
index b0a9590..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcam_gpu_algo-9999
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-effect-portrait-mode >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera GPU algorithm library.
-EAPI=7
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-effect-portrait-mode >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/9999
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=39950afdb0b21aca2c4a572582402bb3
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_client-0.0.1-r267 b/metadata/md5-cache/media-libs/cros-camera-libcamera_client-0.0.1-r267
deleted file mode 100644
index 3648fbb..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_client-0.0.1-r267
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcamera_client media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-android-headers >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Android libcamera_client
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_e35f965a2c3451a2fe74ceb04da2875e20d17f95_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_e35f965a2c3451a2fe74ceb04da2875e20d17f95_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_e35f965a2c3451a2fe74ceb04da2875e20d17f95_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcamera_client media-libs/cros-camera-libcamera_metadata >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=94a6697e9e43a3c11196d60c8eef705c
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_client-9999 b/metadata/md5-cache/media-libs/cros-camera-libcamera_client-9999
deleted file mode 100644
index a17a6a1..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_client-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcamera_client media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-android-headers >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Android libcamera_client
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcamera_client media-libs/cros-camera-libcamera_metadata >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d569f3bdf9966b030a26ce9ac32b8197
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_common-0.0.1-r462 b/metadata/md5-cache/media-libs/cros-camera-libcamera_common-0.0.1-r462
deleted file mode 100644
index d14fc4c..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_common-0.0.1-r462
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcamera_common virtual/libudev virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS HAL common util.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcamera_common virtual/libudev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=02755969f7fa39c947c82b360dd33f04
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_common-9999 b/metadata/md5-cache/media-libs/cros-camera-libcamera_common-9999
deleted file mode 100644
index bacd8bb..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_common-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcamera_common virtual/libudev virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS HAL common util.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcamera_common virtual/libudev >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=49f8034839b4dc299f9d2815d624d3fa
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_connector-0.0.1-r164 b/metadata/md5-cache/media-libs/cros-camera-libcamera_connector-0.0.1-r164
deleted file mode 100644
index b7650d4..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_connector-0.0.1-r164
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc media-libs/cros-camera-libcamera_metadata media-libs/libsync media-libs/cros-camera-android-headers media-libs/cros-camera-libcamera_connector_headers x11-libs/libdrm >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera connector for simpler uses.
-EAPI=7
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc media-libs/cros-camera-libcamera_metadata media-libs/libsync >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r164
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=25808f3d9324786fd07e1bc4738f5205
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_connector-9999 b/metadata/md5-cache/media-libs/cros-camera-libcamera_connector-9999
deleted file mode 100644
index b499d5c..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_connector-9999
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc media-libs/cros-camera-libcamera_metadata media-libs/libsync media-libs/cros-camera-android-headers media-libs/cros-camera-libcamera_connector_headers x11-libs/libdrm >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera connector for simpler uses.
-EAPI=7
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc media-libs/cros-camera-libcamera_metadata media-libs/libsync >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/9999
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=597bb3cd249c4fa97c6f28e99b790842
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_connector_test-0.0.1-r143 b/metadata/md5-cache/media-libs/cros-camera-libcamera_connector_test-0.0.1-r143
deleted file mode 100644
index e1f02d0..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_connector_test-0.0.1-r143
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_connector dev-cpp/gtest:= media-libs/libyuv virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera connector test.
-EAPI=7
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_connector dev-cpp/gtest:= media-libs/libyuv virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0/0.0.1-r143
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0fd66ff5e8b148210245e82eedf6f374
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_connector_test-0.0.1-r229 b/metadata/md5-cache/media-libs/cros-camera-libcamera_connector_test-0.0.1-r229
new file mode 100644
index 0000000..ff1fcb6
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-libcamera_connector_test-0.0.1-r229
@@ -0,0 +1,13 @@
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/cros-camera-libs:= dev-cpp/gtest:= media-libs/libyuv virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS camera connector test.
+EAPI=7
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-libs:= dev-cpp/gtest:= media-libs/libyuv virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0/0.0.1-r229
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d5b6265f33825d38830aaf278c1037b7
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_connector_test-9999 b/metadata/md5-cache/media-libs/cros-camera-libcamera_connector_test-9999
index 26e9754..572ce6c 100644
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_connector_test-9999
+++ b/metadata/md5-cache/media-libs/cros-camera-libcamera_connector_test-9999
@@ -1,13 +1,13 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git dev-vcs/git
+BDEPEND=virtual/pkgconfig dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_connector dev-cpp/gtest:= media-libs/libyuv virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/cros-camera-libs:= dev-cpp/gtest:= media-libs/libyuv virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS camera connector test.
 EAPI=7
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_connector dev-cpp/gtest:= media-libs/libyuv virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-libs:= dev-cpp/gtest:= media-libs/libyuv virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0/9999
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2d7d99d4c971883c62470886e3f6c63a
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=687d06a9c511efd126a30a2857510ecf
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_exif-0.0.1-r459 b/metadata/md5-cache/media-libs/cros-camera-libcamera_exif-0.0.1-r459
deleted file mode 100644
index 550e5f4..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_exif-0.0.1-r459
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcamera_exif media-libs/libexif virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera HAL exif util.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcamera_exif media-libs/libexif >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=45a20f275a4a8c1c7fdf9b20571c679c
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_exif-9999 b/metadata/md5-cache/media-libs/cros-camera-libcamera_exif-9999
deleted file mode 100644
index 6e774a2..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_exif-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcamera_exif media-libs/libexif virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera HAL exif util.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcamera_exif media-libs/libexif >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=30a4356bed3980e288de39524836949f
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_ipc-0.0.1-r467 b/metadata/md5-cache/media-libs/cros-camera-libcamera_ipc-0.0.1-r467
deleted file mode 100644
index 15af94a..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_ipc-0.0.1-r467
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcamera_common virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS HAL IPC util.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_metadata >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=8c52fd4d59bca77e5bbb23b9752bbd81
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_ipc-9999 b/metadata/md5-cache/media-libs/cros-camera-libcamera_ipc-9999
deleted file mode 100644
index 8681cc5d7..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_ipc-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcamera_common virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS HAL IPC util.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_metadata >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=fd659a53b2c83d92f453a6793985f492
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_metadata-0.0.1-r267 b/metadata/md5-cache/media-libs/cros-camera-libcamera_metadata-0.0.1-r267
deleted file mode 100644
index 1847fd1..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_metadata-0.0.1-r267
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcamera_metadata media-libs/cros-camera-android-headers >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Android libcamera_metadata
-EAPI=5
-IUSE=-asan cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_e35f965a2c3451a2fe74ceb04da2875e20d17f95_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_e35f965a2c3451a2fe74ceb04da2875e20d17f95_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_e35f965a2c3451a2fe74ceb04da2875e20d17f95_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcamera_metadata >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=fa3c87d2fd0cab5740585e537be572c3
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_metadata-9999 b/metadata/md5-cache/media-libs/cros-camera-libcamera_metadata-9999
deleted file mode 100644
index c8619c0..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_metadata-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcamera_metadata media-libs/cros-camera-android-headers >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Android libcamera_metadata
-EAPI=5
-IUSE=-asan cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcamera_metadata >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c0cd6161dae069b524af5286f99cafe0
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_timezone-0.0.1-r459 b/metadata/md5-cache/media-libs/cros-camera-libcamera_timezone-0.0.1-r459
deleted file mode 100644
index 27fd98a..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_timezone-0.0.1-r459
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcamera_timezone virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera HAL Time zone util.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcamera_timezone >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=f529fdc1fa0721e6e1f95cd02707f4a5
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_timezone-9999 b/metadata/md5-cache/media-libs/cros-camera-libcamera_timezone-9999
deleted file mode 100644
index 8cbc8af..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_timezone-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcamera_timezone virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera HAL Time zone util.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcamera_timezone >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=8388da902ef5a6836599e19f5f678efd
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_v4l2_device-0.0.1-r332 b/metadata/md5-cache/media-libs/cros-camera-libcamera_v4l2_device-0.0.1-r332
deleted file mode 100644
index 4aad139..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_v4l2_device-0.0.1-r332
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera HAL v3 V4L2 device utility.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_eb9df75b6c32a195902d080a694fe01bc4abca05_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_eb9df75b6c32a195902d080a694fe01bc4abca05_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_eb9df75b6c32a195902d080a694fe01bc4abca05_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e9b485064142771ad0e62607031f0400
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcamera_v4l2_device-9999 b/metadata/md5-cache/media-libs/cros-camera-libcamera_v4l2_device-9999
deleted file mode 100644
index 462835a..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcamera_v4l2_device-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera HAL v3 V4L2 device utility.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=>=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=89dcc048bdf493296f61807f7d0d7ac4
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcbm-0.0.1-r460 b/metadata/md5-cache/media-libs/cros-camera-libcbm-0.0.1-r460
deleted file mode 100644
index 45b1dfb..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcbm-0.0.1-r460
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcbm media-libs/minigbm x11-libs/libdrm media-libs/cros-camera-android-headers virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera HAL buffer manager.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcbm media-libs/minigbm x11-libs/libdrm >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=874684052dc3b7284f18ae26baf8468b
diff --git a/metadata/md5-cache/media-libs/cros-camera-libcbm-9999 b/metadata/md5-cache/media-libs/cros-camera-libcbm-9999
deleted file mode 100644
index 458dfba0..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libcbm-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=!media-libs/arc-camera3-libcbm media-libs/minigbm x11-libs/libdrm media-libs/cros-camera-android-headers virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera HAL buffer manager.
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=!media-libs/arc-camera3-libcbm media-libs/minigbm x11-libs/libdrm >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=59f0590687a774028dd6666a7148ac3f
diff --git a/metadata/md5-cache/media-libs/cros-camera-libhdr-2021.06.11 b/metadata/md5-cache/media-libs/cros-camera-libhdr-2021.06.11
new file mode 100644
index 0000000..ec6f17f
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-libhdr-2021.06.11
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Chrome OS HDR related libraries ported from google3.
+EAPI=7
+IUSE=march_goldmont
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/chromeos-camera-libhdr-2021.06.11.tar.bz2
+_md5_=6eb138d3588a91298673e792e12045ec
diff --git a/metadata/md5-cache/media-libs/cros-camera-libhdr-2021.06.11-r1 b/metadata/md5-cache/media-libs/cros-camera-libhdr-2021.06.11-r1
new file mode 100644
index 0000000..ec6f17f
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-libhdr-2021.06.11-r1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=install
+DESCRIPTION=Chrome OS HDR related libraries ported from google3.
+EAPI=7
+IUSE=march_goldmont
+KEYWORDS=*
+LICENSE=BSD-Google
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/chromeos-camera-libhdr-2021.06.11.tar.bz2
+_md5_=6eb138d3588a91298673e792e12045ec
diff --git a/metadata/md5-cache/media-libs/cros-camera-libjda-0.0.1-r539 b/metadata/md5-cache/media-libs/cros-camera-libjda-0.0.1-r539
deleted file mode 100644
index 105e1b2..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libjda-0.0.1-r539
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc >=chromeos-base/metrics-0.0.1-r3152 media-libs/cros-camera-libcbm media-libs/libyuv virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Library for using JPEG Decode Accelerator in Chrome
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=97c359b0f2c3edeaae6f2c2f708a1f00
diff --git a/metadata/md5-cache/media-libs/cros-camera-libjda-9999 b/metadata/md5-cache/media-libs/cros-camera-libjda-9999
deleted file mode 100644
index 91205d8..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libjda-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc >=chromeos-base/metrics-0.0.1-r3152 media-libs/cros-camera-libcbm media-libs/libyuv virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Library for using JPEG Decode Accelerator in Chrome
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
-KEYWORDS=~*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_ipc >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=60d72e78e0105616b8c03d21eee29418
diff --git a/metadata/md5-cache/media-libs/cros-camera-libjda_test-0.0.1-r463 b/metadata/md5-cache/media-libs/cros-camera-libjda_test-0.0.1-r463
deleted file mode 100644
index 7e0b970..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libjda_test-0.0.1-r463
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-cpp/gtest media-libs/cros-camera-libjda >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=End to end test for JPEG decode accelerator
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=dev-cpp/gtest >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d19da323252963d419e28508951b09df
diff --git a/metadata/md5-cache/media-libs/cros-camera-libjda_test-0.0.1-r549 b/metadata/md5-cache/media-libs/cros-camera-libjda_test-0.0.1-r549
new file mode 100644
index 0000000..dfe0fb8
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-libjda_test-0.0.1-r549
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-cpp/gtest chromeos-base/cros-camera-libs >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=End to end test for JPEG decode accelerator
+EAPI=5
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=dev-cpp/gtest >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=28287234cb0d56481f7f334f99df8959
diff --git a/metadata/md5-cache/media-libs/cros-camera-libjda_test-9999 b/metadata/md5-cache/media-libs/cros-camera-libjda_test-9999
index 5d4de9c..9fb2c89 100644
--- a/metadata/md5-cache/media-libs/cros-camera-libjda_test-9999
+++ b/metadata/md5-cache/media-libs/cros-camera-libjda_test-9999
@@ -1,12 +1,12 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-cpp/gtest media-libs/cros-camera-libjda >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=dev-cpp/gtest chromeos-base/cros-camera-libs >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=End to end test for JPEG decode accelerator
 EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=dev-cpp/gtest >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=dev-cpp/gtest >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=08f4b779e64ca895f167a695e55b7047
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=4a0a523a3fc411073a484aac891bbe5f
diff --git a/metadata/md5-cache/media-libs/cros-camera-libjea_test-0.0.1-r516 b/metadata/md5-cache/media-libs/cros-camera-libjea_test-0.0.1-r516
deleted file mode 100644
index 29e5c5d..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-libjea_test-0.0.1-r516
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152 dev-cpp/gtest:= media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_ipc media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcbm media-libs/libyuv >=chromeos-base/metrics-0.0.1-r3152 media-libs/libyuv media-libs/cros-camera-android-headers >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=End to end test for JPEG encode accelerator
-EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8d228c8e702aebee142bcbf0763a15786eb5b3bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152 dev-cpp/gtest:= media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_ipc media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcbm media-libs/libyuv >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2e767bbde1afb96fd110112afb8bc963
diff --git a/metadata/md5-cache/media-libs/cros-camera-libjea_test-0.0.1-r602 b/metadata/md5-cache/media-libs/cros-camera-libjea_test-0.0.1-r602
new file mode 100644
index 0000000..75bb5f3
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-libjea_test-0.0.1-r602
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs dev-cpp/gtest:= media-libs/libyuv >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=End to end test for JPEG encode accelerator
+EAPI=5
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs dev-cpp/gtest:= media-libs/libyuv >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=e007223032df43faef7290e2c788370c
diff --git a/metadata/md5-cache/media-libs/cros-camera-libjea_test-9999 b/metadata/md5-cache/media-libs/cros-camera-libjea_test-9999
index 2aa3bb7..56c9cf3 100644
--- a/metadata/md5-cache/media-libs/cros-camera-libjea_test-9999
+++ b/metadata/md5-cache/media-libs/cros-camera-libjea_test-9999
@@ -1,12 +1,12 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152 dev-cpp/gtest:= media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_ipc media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcbm media-libs/libyuv >=chromeos-base/metrics-0.0.1-r3152 media-libs/libyuv media-libs/cros-camera-android-headers >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs dev-cpp/gtest:= media-libs/libyuv >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=End to end test for JPEG encode accelerator
 EAPI=5
-IUSE=cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152 dev-cpp/gtest:= media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_exif media-libs/cros-camera-libcamera_ipc media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcbm media-libs/libyuv >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=chromeos-base/cros-camera-android-deps chromeos-base/cros-camera-libs dev-cpp/gtest:= media-libs/libyuv >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9b59e7490a1d73dd5ab09fc129149c0c
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=69a13d61f90a23421f2d144efe545418
diff --git a/metadata/md5-cache/media-libs/cros-camera-test-0.0.1-r507 b/metadata/md5-cache/media-libs/cros-camera-test-0.0.1-r507
deleted file mode 100644
index d99ec65..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-test-0.0.1-r507
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-config-tools !media-libs/arc-camera3-test media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcbm media-libs/libexif media-libs/libsync media-libs/minigbm virtual/jpeg:0 dev-cpp/gtest:= media-libs/cros-camera-android-headers media-libs/libyuv virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera HAL native test.
-EAPI=5
-IUSE=-asan cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_5de48d650f4a9303ff1997126f3bc7feb3532b67_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_5de48d650f4a9303ff1997126f3bc7feb3532b67_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_5de48d650f4a9303ff1997126f3bc7feb3532b67_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_ffccaa8b7bb1b063ae1051517543023ce055ef35_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=chromeos-base/chromeos-config-tools !media-libs/arc-camera3-test media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcbm media-libs/libexif media-libs/libsync media-libs/minigbm virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a297c134962a94c1c1d9c934b9741a20
diff --git a/metadata/md5-cache/media-libs/cros-camera-test-0.0.1-r621 b/metadata/md5-cache/media-libs/cros-camera-test-0.0.1-r621
new file mode 100644
index 0000000..fd7629f
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-test-0.0.1-r621
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=chromeos-base/cros-camera-libs-0.0.1-r34:= chromeos-base/chromeos-config-tools chromeos-base/cros-camera-android-deps media-libs/libexif media-libs/libsync media-libs/minigbm virtual/jpeg:0 dev-cpp/gtest:= media-libs/libyuv virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS camera HAL native test.
+EAPI=5
+IUSE=-asan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_686790e236933c99eeef7eed68f3b4c7ca629daf_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_aa0612733aca2d5ffa65470f07408228b473ebdb_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_686790e236933c99eeef7eed68f3b4c7ca629daf_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_aa0612733aca2d5ffa65470f07408228b473ebdb_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/cros-camera-libs-0.0.1-r34:= chromeos-base/chromeos-config-tools chromeos-base/cros-camera-android-deps media-libs/libexif media-libs/libsync media-libs/minigbm virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=83d4eb43e603bfa6dc194534cfe254e9
diff --git a/metadata/md5-cache/media-libs/cros-camera-test-9999 b/metadata/md5-cache/media-libs/cros-camera-test-9999
index 0566a49..f060773 100644
--- a/metadata/md5-cache/media-libs/cros-camera-test-9999
+++ b/metadata/md5-cache/media-libs/cros-camera-test-9999
@@ -1,12 +1,12 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-config-tools !media-libs/arc-camera3-test media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcbm media-libs/libexif media-libs/libsync media-libs/minigbm virtual/jpeg:0 dev-cpp/gtest:= media-libs/cros-camera-android-headers media-libs/libyuv virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=chromeos-base/cros-camera-libs-0.0.1-r34:= chromeos-base/chromeos-config-tools chromeos-base/cros-camera-android-deps media-libs/libexif media-libs/libsync media-libs/minigbm virtual/jpeg:0 dev-cpp/gtest:= media-libs/libyuv virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS camera HAL native test.
 EAPI=5
-IUSE=-asan cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=-asan cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=chromeos-base/chromeos-config-tools !media-libs/arc-camera3-test media-libs/cros-camera-libcamera_client media-libs/cros-camera-libcamera_common media-libs/cros-camera-libcamera_metadata media-libs/cros-camera-libcbm media-libs/libexif media-libs/libsync media-libs/minigbm virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=>=chromeos-base/cros-camera-libs-0.0.1-r34:= chromeos-base/chromeos-config-tools chromeos-base/cros-camera-android-deps media-libs/libexif media-libs/libsync media-libs/minigbm virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1245ef5c761953c54bd2a54287e4f636
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=e4a77b6b41edbc88bc0fae3da0f707af
diff --git a/metadata/md5-cache/media-libs/cros-camera-v4l2_test-0.0.1-r343 b/metadata/md5-cache/media-libs/cros-camera-v4l2_test-0.0.1-r343
deleted file mode 100644
index 3a38723..0000000
--- a/metadata/md5-cache/media-libs/cros-camera-v4l2_test-0.0.1-r343
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-config-tools chromeos-base/libbrillo:= dev-cpp/gtest:= dev-libs/re2:= media-libs/libyuv unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) virtual/jpeg:0 virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Chrome OS camera V4L2 test.
-EAPI=6
-IUSE=generated_cros_config unibuild cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_347cdef009360a54e6d1dfc2b382bc812b2a55db_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_347cdef009360a54e6d1dfc2b382bc812b2a55db_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_c920da127f686c434165b6056b1cd740f228df6b_118ea4fce453b577679378bbfce57e1be03e86ae_b4e6727c0b89ed2bfb186ca205366bab69948ccb_347cdef009360a54e6d1dfc2b382bc812b2a55db_4a9d701c1716dbba6b3de3a9927299f399ec4580_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=chromeos-base/chromeos-config-tools chromeos-base/libbrillo:= dev-cpp/gtest:= dev-libs/re2:= media-libs/libyuv unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=58d2a49d69aee1b5d021933c13b992d6
diff --git a/metadata/md5-cache/media-libs/cros-camera-v4l2_test-0.0.1-r471 b/metadata/md5-cache/media-libs/cros-camera-v4l2_test-0.0.1-r471
new file mode 100644
index 0000000..3d0aaf1
--- /dev/null
+++ b/metadata/md5-cache/media-libs/cros-camera-v4l2_test-0.0.1-r471
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/chromeos-config-tools chromeos-base/libbrillo:= dev-cpp/gtest:= dev-libs/re2:= media-libs/libyuv virtual/jpeg:0 virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Chrome OS camera V4L2 test.
+EAPI=6
+IUSE=cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b_aa0612733aca2d5ffa65470f07408228b473ebdb_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_49e3b5c529d012af19cb326eec9cf346538d4459_c37af7d99913a584dbfb1b64fdb83acb19e91c20_049eedf136293a1ab81617017200cb31032eb384_309b7116bd1f5aeb3ece4e1d90ce13f61b7e1b4b_aa0612733aca2d5ffa65470f07408228b473ebdb_791c6808b4f4f5f1c484108d66ff958d65f8f1e3 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/chromeos-config-tools chromeos-base/libbrillo:= dev-cpp/gtest:= dev-libs/re2:= media-libs/libyuv virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=2580ece9a7cbaf2d4f8fba41ef6920d2
diff --git a/metadata/md5-cache/media-libs/cros-camera-v4l2_test-9999 b/metadata/md5-cache/media-libs/cros-camera-v4l2_test-9999
index a0963cd..c1e9669 100644
--- a/metadata/md5-cache/media-libs/cros-camera-v4l2_test-9999
+++ b/metadata/md5-cache/media-libs/cros-camera-v4l2_test-9999
@@ -1,12 +1,12 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=chromeos-base/chromeos-config-tools chromeos-base/libbrillo:= dev-cpp/gtest:= dev-libs/re2:= media-libs/libyuv unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) virtual/jpeg:0 virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=chromeos-base/chromeos-config-tools chromeos-base/libbrillo:= dev-cpp/gtest:= dev-libs/re2:= media-libs/libyuv virtual/jpeg:0 virtual/pkgconfig >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Chrome OS camera V4L2 test.
 EAPI=6
-IUSE=generated_cros_config unibuild cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test cros_host cros_workon_tree_ cros-debug cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+IUSE=cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
 KEYWORDS=~*
 LICENSE=BSD-Google
-PROPERTIES=live live live
-RDEPEND=chromeos-base/chromeos-config-tools chromeos-base/libbrillo:= dev-cpp/gtest:= dev-libs/re2:= media-libs/libyuv unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+PROPERTIES=live live
+RDEPEND=chromeos-base/chromeos-config-tools chromeos-base/libbrillo:= dev-cpp/gtest:= dev-libs/re2:= media-libs/libyuv virtual/jpeg:0 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-camera	a12ab5d8adf739e116011ddee63e87f8	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=58a3cb4e711249ddaefe66445c6234f6
+_eclasses_=cros-camera	edfe7d3bbe26994c0ee8019d7597b0b6	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=d2ef9c7210255cb5af49e48195692c30
diff --git a/metadata/md5-cache/media-libs/evdi-1.8.0 b/metadata/md5-cache/media-libs/evdi-1.8.0
deleted file mode 100644
index 938c56b..0000000
--- a/metadata/md5-cache/media-libs/evdi-1.8.0
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile install unpack
-DEPEND=x11-libs/libdrm
-DESCRIPTION=Extensible Virtual Display Interface Library
-EAPI=5
-HOMEPAGE=https://github.com/DisplayLink/evdi
-KEYWORDS=*
-LICENSE=LGPL-2.1
-SLOT=0
-SRC_URI=https://github.com/DisplayLink/evdi/archive/v1.8.0.tar.gz -> evdi-1.8.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d1a1fde6bce4ba8f81390bb08708f20e
diff --git a/metadata/md5-cache/media-libs/evdi-1.9.1-r1 b/metadata/md5-cache/media-libs/evdi-1.9.1-r1
new file mode 100644
index 0000000..ec18356
--- /dev/null
+++ b/metadata/md5-cache/media-libs/evdi-1.9.1-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install unpack
+DEPEND=x11-libs/libdrm
+DESCRIPTION=Extensible Virtual Display Interface Library
+EAPI=5
+HOMEPAGE=https://github.com/DisplayLink/evdi
+KEYWORDS=*
+LICENSE=LGPL-2.1
+SLOT=0
+SRC_URI=https://github.com/DisplayLink/evdi/archive/v1.9.1.tar.gz -> evdi-1.9.1.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=872011b8cf6334f61bc8cb7dea155386
diff --git a/metadata/md5-cache/media-libs/freeimage-3.15.3-r2 b/metadata/md5-cache/media-libs/freeimage-3.15.3-r2
deleted file mode 100644
index e72cc36..0000000
--- a/metadata/md5-cache/media-libs/freeimage-3.15.3-r2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install prepare
-DEPEND=sys-libs/zlib jpeg? ( virtual/jpeg ) jpeg2k? ( media-libs/openjpeg ) mng? ( media-libs/libmng ) openexr? ( media-libs/openexr ) png? ( media-libs/libpng ) raw? ( media-libs/libraw ) tiff? ( media-libs/ilmbase media-libs/tiff ) virtual/pkgconfig app-arch/unzip
-DESCRIPTION=Image library supporting many formats
-EAPI=4
-HOMEPAGE=http://freeimage.sourceforge.net/
-IUSE=jpeg jpeg2k mng openexr png raw static-libs tiff
-KEYWORDS=*
-LICENSE=|| ( GPL-2 FIPL-1.0 )
-RDEPEND=sys-libs/zlib jpeg? ( virtual/jpeg ) jpeg2k? ( media-libs/openjpeg ) mng? ( media-libs/libmng ) openexr? ( media-libs/openexr ) png? ( media-libs/libpng ) raw? ( media-libs/libraw ) tiff? ( media-libs/ilmbase media-libs/tiff )
-SLOT=0
-SRC_URI=mirror://sourceforge/freeimage/FreeImage3153.zip mirror://sourceforge/freeimage/FreeImage3153.pdf
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=4cfe72a6d8f2c3c4e296a81287ea85c8
diff --git a/metadata/md5-cache/media-libs/freeimage-3.15.3-r3 b/metadata/md5-cache/media-libs/freeimage-3.15.3-r3
new file mode 100644
index 0000000..cee57d5
--- /dev/null
+++ b/metadata/md5-cache/media-libs/freeimage-3.15.3-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install prepare
+DEPEND=sys-libs/zlib jpeg? ( virtual/jpeg ) jpeg2k? ( media-libs/openjpeg ) mng? ( media-libs/libmng ) openexr? ( media-libs/openexr ) png? ( media-libs/libpng ) raw? ( media-libs/libraw ) tiff? ( media-libs/ilmbase media-libs/tiff ) virtual/pkgconfig app-arch/unzip
+DESCRIPTION=Image library supporting many formats
+EAPI=4
+HOMEPAGE=http://freeimage.sourceforge.net/
+IUSE=jpeg jpeg2k mng openexr png raw static-libs tiff
+KEYWORDS=*
+LICENSE=|| ( GPL-2 FIPL-1.0 )
+RDEPEND=sys-libs/zlib jpeg? ( virtual/jpeg ) jpeg2k? ( media-libs/openjpeg ) mng? ( media-libs/libmng ) openexr? ( media-libs/openexr ) png? ( media-libs/libpng ) raw? ( media-libs/libraw ) tiff? ( media-libs/ilmbase media-libs/tiff )
+SLOT=0
+SRC_URI=mirror://sourceforge/freeimage/FreeImage3153.zip mirror://sourceforge/freeimage/FreeImage3153.pdf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=e004febd17d000ce535f032457089567
diff --git a/metadata/md5-cache/media-libs/gmmlib-20.3.2 b/metadata/md5-cache/media-libs/gmmlib-20.3.2
deleted file mode 100644
index 1499b36..0000000
--- a/metadata/md5-cache/media-libs/gmmlib-20.3.2
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-util/ninja dev-util/cmake
-DEFINED_PHASES=compile configure install prepare test
-DESCRIPTION=Intel Graphics Memory Management Library
-EAPI=7
-HOMEPAGE=https://github.com/intel/gmmlib
-IUSE=abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=MIT
-SLOT=0
-SRC_URI=https://github.com/intel/gmmlib/archive/intel-gmmlib-20.3.2.tar.gz
-_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=f8c80563443572001375a1dfb37d1ab8
diff --git a/metadata/md5-cache/media-libs/gmmlib-20.3.2-r1 b/metadata/md5-cache/media-libs/gmmlib-20.3.2-r1
deleted file mode 100644
index 1499b36..0000000
--- a/metadata/md5-cache/media-libs/gmmlib-20.3.2-r1
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-util/ninja dev-util/cmake
-DEFINED_PHASES=compile configure install prepare test
-DESCRIPTION=Intel Graphics Memory Management Library
-EAPI=7
-HOMEPAGE=https://github.com/intel/gmmlib
-IUSE=abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=MIT
-SLOT=0
-SRC_URI=https://github.com/intel/gmmlib/archive/intel-gmmlib-20.3.2.tar.gz
-_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=f8c80563443572001375a1dfb37d1ab8
diff --git a/metadata/md5-cache/media-libs/gmmlib-21.1.1 b/metadata/md5-cache/media-libs/gmmlib-21.1.1
new file mode 100644
index 0000000..68c427f
--- /dev/null
+++ b/metadata/md5-cache/media-libs/gmmlib-21.1.1
@@ -0,0 +1,13 @@
+BDEPEND=dev-util/ninja dev-util/cmake
+DEFINED_PHASES=compile configure install prepare test
+DESCRIPTION=Intel Graphics Memory Management Library
+EAPI=7
+HOMEPAGE=https://github.com/intel/gmmlib
+IUSE=test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=MIT
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://github.com/intel/gmmlib/archive/refs/tags/intel-gmmlib-21.1.1.tar.gz
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=8cc0802b2262a143fd30bab67005909a
diff --git a/metadata/md5-cache/media-libs/gmmlib-21.1.1-r3 b/metadata/md5-cache/media-libs/gmmlib-21.1.1-r3
new file mode 100644
index 0000000..68c427f
--- /dev/null
+++ b/metadata/md5-cache/media-libs/gmmlib-21.1.1-r3
@@ -0,0 +1,13 @@
+BDEPEND=dev-util/ninja dev-util/cmake
+DEFINED_PHASES=compile configure install prepare test
+DESCRIPTION=Intel Graphics Memory Management Library
+EAPI=7
+HOMEPAGE=https://github.com/intel/gmmlib
+IUSE=test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=MIT
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://github.com/intel/gmmlib/archive/refs/tags/intel-gmmlib-21.1.1.tar.gz
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=8cc0802b2262a143fd30bab67005909a
diff --git a/metadata/md5-cache/media-libs/harfbuzz-1.7.6 b/metadata/md5-cache/media-libs/harfbuzz-1.7.6
deleted file mode 100644
index fe57620..0000000
--- a/metadata/md5-cache/media-libs/harfbuzz-1.7.6
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=cairo? ( x11-libs/cairo:= ) fontconfig? ( media-libs/fontconfig:1.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) glib? ( >=dev-libs/glib-2.34.3:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) graphite? ( >=media-gfx/graphite2-1.2.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) icu? ( >=dev-libs/icu-51.2-r1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) introspection? ( >=dev-libs/gobject-introspection-1.34:= ) truetype? ( >=media-libs/freetype-2.5.0.1:2=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-util/gtk-doc-am virtual/pkgconfig test? ( || ( >=dev-lang/python-2.7.5-r2:2.7 ) ) >=app-portage/elt-patches-20170815
-DESCRIPTION=An OpenType text shaping engine
-EAPI=5
-HOMEPAGE=https://www.freedesktop.org/wiki/Software/HarfBuzz
-IUSE=+cairo debug fontconfig +glib graphite icu introspection static-libs test +truetype abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=Old-MIT ISC icu
-RDEPEND=cairo? ( x11-libs/cairo:= ) fontconfig? ( media-libs/fontconfig:1.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) glib? ( >=dev-libs/glib-2.34.3:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) graphite? ( >=media-gfx/graphite2-1.2.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) icu? ( >=dev-libs/icu-51.2-r1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) introspection? ( >=dev-libs/gobject-introspection-1.34:= ) truetype? ( >=media-libs/freetype-2.5.0.1:2=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-REQUIRED_USE=introspection? ( glib )
-SLOT=0/0.9.18
-SRC_URI=https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-1.7.6.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=5da83b4553da56321c341475151d3c51
diff --git a/metadata/md5-cache/media-libs/harfbuzz-1.7.6-r2 b/metadata/md5-cache/media-libs/harfbuzz-1.7.6-r2
deleted file mode 100644
index fe57620..0000000
--- a/metadata/md5-cache/media-libs/harfbuzz-1.7.6-r2
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=cairo? ( x11-libs/cairo:= ) fontconfig? ( media-libs/fontconfig:1.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) glib? ( >=dev-libs/glib-2.34.3:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) graphite? ( >=media-gfx/graphite2-1.2.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) icu? ( >=dev-libs/icu-51.2-r1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) introspection? ( >=dev-libs/gobject-introspection-1.34:= ) truetype? ( >=media-libs/freetype-2.5.0.1:2=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-util/gtk-doc-am virtual/pkgconfig test? ( || ( >=dev-lang/python-2.7.5-r2:2.7 ) ) >=app-portage/elt-patches-20170815
-DESCRIPTION=An OpenType text shaping engine
-EAPI=5
-HOMEPAGE=https://www.freedesktop.org/wiki/Software/HarfBuzz
-IUSE=+cairo debug fontconfig +glib graphite icu introspection static-libs test +truetype abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=Old-MIT ISC icu
-RDEPEND=cairo? ( x11-libs/cairo:= ) fontconfig? ( media-libs/fontconfig:1.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) glib? ( >=dev-libs/glib-2.34.3:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) graphite? ( >=media-gfx/graphite2-1.2.1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) icu? ( >=dev-libs/icu-51.2-r1:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) introspection? ( >=dev-libs/gobject-introspection-1.34:= ) truetype? ( >=media-libs/freetype-2.5.0.1:2=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-REQUIRED_USE=introspection? ( glib )
-SLOT=0/0.9.18
-SRC_URI=https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-1.7.6.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=5da83b4553da56321c341475151d3c51
diff --git a/metadata/md5-cache/media-libs/jpeg-6b-r11 b/metadata/md5-cache/media-libs/jpeg-6b-r11
deleted file mode 100644
index 14ed761..0000000
--- a/metadata/md5-cache/media-libs/jpeg-6b-r11
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure install prepare
-DEPEND=>=app-portage/elt-patches-20170815
-DESCRIPTION=library to load, handle and manipulate images in the JPEG format (transition package)
-EAPI=2
-HOMEPAGE=http://www.ijg.org/
-KEYWORDS=*
-LICENSE=IJG
-RDEPEND=!~media-libs/jpeg-6b:0 !media-libs/jpeg-compat
-SLOT=0
-SRC_URI=mirror://gentoo/jpegsrc.v6b.tar.gz mirror://gentoo/jpeg-6b-patches-2.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2ed929d740a465785295687b19cea6b3
diff --git a/metadata/md5-cache/media-libs/libcamera-0.0.1-r344 b/metadata/md5-cache/media-libs/libcamera-0.0.1-r344
deleted file mode 100644
index 55871e0..0000000
--- a/metadata/md5-cache/media-libs/libcamera-0.0.1-r344
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/libjpeg-turbo media-libs/libexif >=net-libs/gnutls-3.3:= udev? ( virtual/libudev ) dev-libs/openssl >=dev-python/pyyaml-3:= >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DESCRIPTION=Camera support library for Linux
-EAPI=6
-HOMEPAGE=https://www.libcamera.org
-IUSE=doc ipu3 rkisp1 test udev cros_host cros_workon_tree_f7f0bc84eaa536e1c7ed7ecf20284545e19023b0
-KEYWORDS=*
-LICENSE=LGPL-2.1+
-PROPERTIES=live
-RDEPEND=media-libs/libjpeg-turbo media-libs/libexif >=net-libs/gnutls-3.3:= udev? ( virtual/libudev )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b2f26240dde4dda6f268ed3a5b7320b9
diff --git a/metadata/md5-cache/media-libs/libcamera-0.0.1-r540 b/metadata/md5-cache/media-libs/libcamera-0.0.1-r540
new file mode 100644
index 0000000..ad20281
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libcamera-0.0.1-r540
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=chromeos-base/cros-camera-libs dev? ( dev-libs/libevent[threads] ) dev-libs/libyaml media-libs/libcamera-configs media-libs/libjpeg-turbo media-libs/libexif >=net-libs/gnutls-3.3:= media-libs/libyuv udev? ( virtual/libudev ) dev-libs/openssl >=dev-python/pyyaml-3:=
+DESCRIPTION=Camera support library for Linux
+EAPI=7
+HOMEPAGE=https://www.libcamera.org
+IUSE=debug dev doc ipu3 rkisp1 test udev cros_host cros_workon_tree_f069be1e4124d2430ef62cb3f389fcf33493beac
+KEYWORDS=*
+LICENSE=LGPL-2.1+
+PROPERTIES=live
+RDEPEND=chromeos-base/cros-camera-libs dev? ( dev-libs/libevent[threads] ) dev-libs/libyaml media-libs/libcamera-configs media-libs/libjpeg-turbo media-libs/libexif >=net-libs/gnutls-3.3:= media-libs/libyuv udev? ( virtual/libudev )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7bb46cacf26147ea2e5be34c95c81b6d
diff --git a/metadata/md5-cache/media-libs/libcamera-9999 b/metadata/md5-cache/media-libs/libcamera-9999
index a1f460b..7bb543e 100644
--- a/metadata/md5-cache/media-libs/libcamera-9999
+++ b/metadata/md5-cache/media-libs/libcamera-9999
@@ -1,13 +1,14 @@
+BDEPEND=dev-vcs/git >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=media-libs/libjpeg-turbo media-libs/libexif >=net-libs/gnutls-3.3:= udev? ( virtual/libudev ) dev-libs/openssl >=dev-python/pyyaml-3:= >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
+DEPEND=chromeos-base/cros-camera-libs dev? ( dev-libs/libevent[threads] ) dev-libs/libyaml media-libs/libcamera-configs media-libs/libjpeg-turbo media-libs/libexif >=net-libs/gnutls-3.3:= media-libs/libyuv udev? ( virtual/libudev ) dev-libs/openssl >=dev-python/pyyaml-3:=
 DESCRIPTION=Camera support library for Linux
-EAPI=6
+EAPI=7
 HOMEPAGE=https://www.libcamera.org
-IUSE=doc ipu3 rkisp1 test udev cros_host cros_workon_tree_
+IUSE=debug dev doc ipu3 rkisp1 test udev cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=LGPL-2.1+
 PROPERTIES=live
-RDEPEND=media-libs/libjpeg-turbo media-libs/libexif >=net-libs/gnutls-3.3:= udev? ( virtual/libudev )
+RDEPEND=chromeos-base/cros-camera-libs dev? ( dev-libs/libevent[threads] ) dev-libs/libyaml media-libs/libcamera-configs media-libs/libjpeg-turbo media-libs/libexif >=net-libs/gnutls-3.3:= media-libs/libyuv udev? ( virtual/libudev )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=ae4e8bf44aab7c3f83c70507386f9b97
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=71a24ca4c2608953653445d834ca86ed
diff --git a/metadata/md5-cache/media-libs/libmtp-1.1.16 b/metadata/md5-cache/media-libs/libmtp-1.1.16
deleted file mode 100644
index 9bedba6..0000000
--- a/metadata/md5-cache/media-libs/libmtp-1.1.16
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure install prepare
-DEPEND=virtual/libusb:1 crypt? ( dev-libs/libgcrypt ) virtual/pkgconfig doc? ( app-doc/doxygen ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=An implementation of Microsoft's Media Transfer Protocol (MTP).
-EAPI=5
-HOMEPAGE=http://libmtp.sourceforge.net/
-IUSE=-asan +crypt doc examples static-libs asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=LGPL-2.1
-RDEPEND=virtual/libusb:1 crypt? ( dev-libs/libgcrypt )
-SLOT=0
-SRC_URI=https://sourceforge.net/projects/libmtp/files/libmtp/1.1.16/libmtp-1.1.16.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e696348052a7e2a57d18ca195af55287
diff --git a/metadata/md5-cache/media-libs/libmtp-1.1.16-r3 b/metadata/md5-cache/media-libs/libmtp-1.1.16-r3
deleted file mode 100644
index 9bedba6..0000000
--- a/metadata/md5-cache/media-libs/libmtp-1.1.16-r3
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure install prepare
-DEPEND=virtual/libusb:1 crypt? ( dev-libs/libgcrypt ) virtual/pkgconfig doc? ( app-doc/doxygen ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=An implementation of Microsoft's Media Transfer Protocol (MTP).
-EAPI=5
-HOMEPAGE=http://libmtp.sourceforge.net/
-IUSE=-asan +crypt doc examples static-libs asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=LGPL-2.1
-RDEPEND=virtual/libusb:1 crypt? ( dev-libs/libgcrypt )
-SLOT=0
-SRC_URI=https://sourceforge.net/projects/libmtp/files/libmtp/1.1.16/libmtp-1.1.16.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e696348052a7e2a57d18ca195af55287
diff --git a/metadata/md5-cache/media-libs/libmtp-1.1.18 b/metadata/md5-cache/media-libs/libmtp-1.1.18
new file mode 100644
index 0000000..71ff69b
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libmtp-1.1.18
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install prepare
+DEPEND=virtual/libusb:1 crypt? ( dev-libs/libgcrypt ) virtual/pkgconfig doc? ( app-doc/doxygen ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=An implementation of Microsoft's Media Transfer Protocol (MTP).
+EAPI=5
+HOMEPAGE=http://libmtp.sourceforge.net/
+IUSE=-asan +crypt doc examples static-libs asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=LGPL-2.1
+RDEPEND=virtual/libusb:1 crypt? ( dev-libs/libgcrypt )
+SLOT=0
+SRC_URI=mirror://sourceforge/libmtp/libmtp-1.1.18.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=18cca32d14a68d451462f98a3b9ae993
diff --git a/metadata/md5-cache/media-libs/libsync-0.0.1-r5 b/metadata/md5-cache/media-libs/libsync-0.0.1-r5
deleted file mode 100644
index 393da7e..0000000
--- a/metadata/md5-cache/media-libs/libsync-0.0.1-r5
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=configure info prepare setup unpack
-DESCRIPTION=Library for Android sync objects
-EAPI=5
-HOMEPAGE=https://android.googlesource.com/platform/system/core/libsync
-IUSE=cros_host cros_workon_tree_6735ede3571072051f02df69fdf53bb239ebe6bd
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!media-libs/arc-camera3-libsync
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=f44e2280978c4af9b43ec856d2553b79
diff --git a/metadata/md5-cache/media-libs/libsync-0.0.1-r6 b/metadata/md5-cache/media-libs/libsync-0.0.1-r6
new file mode 100644
index 0000000..698bbc9
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libsync-0.0.1-r6
@@ -0,0 +1,12 @@
+DEFINED_PHASES=configure info prepare setup unpack
+DESCRIPTION=Library for Android sync objects
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/aosp/platform/system/core/libsync
+IUSE=cros_host cros_workon_tree_6735ede3571072051f02df69fdf53bb239ebe6bd
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!media-libs/arc-camera3-libsync
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=9574c2029bedf5c573e9b1bf774367d6
diff --git a/metadata/md5-cache/media-libs/libsync-9999 b/metadata/md5-cache/media-libs/libsync-9999
index 7a56fad..b53a3b9 100644
--- a/metadata/md5-cache/media-libs/libsync-9999
+++ b/metadata/md5-cache/media-libs/libsync-9999
@@ -1,12 +1,12 @@
 DEFINED_PHASES=configure info prepare setup unpack
 DESCRIPTION=Library for Android sync objects
 EAPI=5
-HOMEPAGE=https://android.googlesource.com/platform/system/core/libsync
+HOMEPAGE=https://chromium.googlesource.com/aosp/platform/system/core/libsync
 IUSE=cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=!media-libs/arc-camera3-libsync
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=975c73b015164300548f464a444e6afc
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=4670b2be39ce486dbd88fe7becf209a2
diff --git a/metadata/md5-cache/media-libs/libv4lplugins-0.0.1-r41 b/metadata/md5-cache/media-libs/libv4lplugins-0.0.1-r41
deleted file mode 100644
index 98299f1..0000000
--- a/metadata/md5-cache/media-libs/libv4lplugins-0.0.1-r41
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=media-libs/libv4l >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Separate plugin library from upstream v4l-utils package
-EAPI=5
-HOMEPAGE=http://git.linuxtv.org/v4l-utils.git
-IUSE=rockchip rockchip_v2 cros_host cros_workon_tree_7c66df737852487714c0118de5b77cf7ec7e6898
-KEYWORDS=*
-LICENSE=LGPL-2.1
-PROPERTIES=live
-RDEPEND=media-libs/libv4l
-REQUIRED_USE=^^ ( rockchip rockchip_v2 )
-SLOT=0
-SRC_URI=http://linuxtv.org/downloads/v4l-utils/v4l-utils-1.18.1.tar.bz2
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=14fea56b90072d72278206ebafb2e8c8
diff --git a/metadata/md5-cache/media-libs/libv4lplugins-0.0.1-r43 b/metadata/md5-cache/media-libs/libv4lplugins-0.0.1-r43
new file mode 100644
index 0000000..efacf9c
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libv4lplugins-0.0.1-r43
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=media-libs/libv4l >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Separate plugin library from upstream v4l-utils package
+EAPI=5
+HOMEPAGE=http://git.linuxtv.org/v4l-utils.git
+IUSE=rockchip rockchip_v2 cros_host cros_workon_tree_9e0363f36d5a77f1c0625ae393afb70cc067bf82
+KEYWORDS=*
+LICENSE=LGPL-2.1
+PROPERTIES=live
+RDEPEND=media-libs/libv4l
+REQUIRED_USE=^^ ( rockchip rockchip_v2 )
+SLOT=0
+SRC_URI=http://linuxtv.org/downloads/v4l-utils/v4l-utils-1.18.1.tar.bz2
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=f14c3153624f79ec183402071a0881ab
diff --git a/metadata/md5-cache/media-libs/libv4lplugins-9999 b/metadata/md5-cache/media-libs/libv4lplugins-9999
index da7671f..149debf 100644
--- a/metadata/md5-cache/media-libs/libv4lplugins-9999
+++ b/metadata/md5-cache/media-libs/libv4lplugins-9999
@@ -11,5 +11,5 @@
 REQUIRED_USE=^^ ( rockchip rockchip_v2 )
 SLOT=0
 SRC_URI=http://linuxtv.org/downloads/v4l-utils/v4l-utils-1.18.1.tar.bz2
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e75c7ea92b58cb866cde529d3db4681d
diff --git a/metadata/md5-cache/media-libs/libyuv-1732-r1 b/metadata/md5-cache/media-libs/libyuv-1732-r1
deleted file mode 100644
index 2afed87..0000000
--- a/metadata/md5-cache/media-libs/libyuv-1732-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install prepare
-DEPEND=virtual/jpeg:0
-DESCRIPTION=YUV library
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/libyuv/libyuv
-IUSE=cros-debug
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=virtual/jpeg:0
-SLOT=0
-SRC_URI=https://chromium.googlesource.com/libyuv/libyuv/+archive/53b529e362cc09560c89840fd02ddb68ae3b11aa.tar.gz -> libyuv-1732.tar.gz
-_eclasses_=cros-debug	d2750757005d6a444f8eb12bb9eb9944	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=aa415aed6cb0784f903e42a296d0e4b1
diff --git a/metadata/md5-cache/media-libs/libyuv-1774 b/metadata/md5-cache/media-libs/libyuv-1774
new file mode 100644
index 0000000..fbb596f
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libyuv-1774
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare test unpack
+DEPEND=virtual/jpeg:0
+DESCRIPTION=YUV library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/libyuv/libyuv
+IUSE=cros-debug
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=virtual/jpeg:0
+SLOT=0
+SRC_URI=https://chromium.googlesource.com/libyuv/libyuv/+archive/fc61dde1eb4b7807201fa20cd0a7d023363558b2.tar.gz -> libyuv-1774.tar.gz
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-debug	d2750757005d6a444f8eb12bb9eb9944	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e105813cceacabf1729dc4f4e2d2df53
diff --git a/metadata/md5-cache/media-libs/libyuv-1774-r5 b/metadata/md5-cache/media-libs/libyuv-1774-r5
new file mode 100644
index 0000000..fbb596f
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libyuv-1774-r5
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare test unpack
+DEPEND=virtual/jpeg:0
+DESCRIPTION=YUV library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/libyuv/libyuv
+IUSE=cros-debug
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=virtual/jpeg:0
+SLOT=0
+SRC_URI=https://chromium.googlesource.com/libyuv/libyuv/+archive/fc61dde1eb4b7807201fa20cd0a7d023363558b2.tar.gz -> libyuv-1774.tar.gz
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-debug	d2750757005d6a444f8eb12bb9eb9944	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e105813cceacabf1729dc4f4e2d2df53
diff --git a/metadata/md5-cache/media-libs/libyuv-test-1774 b/metadata/md5-cache/media-libs/libyuv-test-1774
new file mode 100644
index 0000000..04594d9
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libyuv-test-1774
@@ -0,0 +1,13 @@
+BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=dev-cpp/gtest:= virtual/jpeg:0
+DESCRIPTION=YUV library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/libyuv/libyuv
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=dev-cpp/gtest:= virtual/jpeg:0
+SLOT=0
+SRC_URI=https://chromium.googlesource.com/libyuv/libyuv/+archive/fc61dde1eb4b7807201fa20cd0a7d023363558b2.tar.gz -> libyuv-1774.tar.gz
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=48c3284ee8e261b31668a1ef57c54737
diff --git a/metadata/md5-cache/media-libs/libyuv-test-1774-r1 b/metadata/md5-cache/media-libs/libyuv-test-1774-r1
new file mode 100644
index 0000000..04594d9
--- /dev/null
+++ b/metadata/md5-cache/media-libs/libyuv-test-1774-r1
@@ -0,0 +1,13 @@
+BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=dev-cpp/gtest:= virtual/jpeg:0
+DESCRIPTION=YUV library
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/libyuv/libyuv
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=dev-cpp/gtest:= virtual/jpeg:0
+SLOT=0
+SRC_URI=https://chromium.googlesource.com/libyuv/libyuv/+archive/fc61dde1eb4b7807201fa20cd0a7d023363558b2.tar.gz -> libyuv-1774.tar.gz
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=48c3284ee8e261b31668a1ef57c54737
diff --git a/metadata/md5-cache/media-libs/mesa-20.2 b/metadata/md5-cache/media-libs/mesa-20.2
deleted file mode 100644
index 6c5e580..0000000
--- a/metadata/md5-cache/media-libs/mesa-20.2
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=>=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm )
-DESCRIPTION=OpenGL-like graphic library for Linux
-EAPI=7
-HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_r128 video_cards_radeonsi video_cards_savage video_cards_sis video_cards_softpipe video_cards_tdfx video_cards_via video_cards_virgl video_cards_vmware +classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X cros_host cros_workon_tree_b8d78e509c717d068a0199e10811bffd817f2dd4
-KEYWORDS=*
-LICENSE=MIT LGPL-3 SGI-B-2.0
-PROPERTIES=live
-RDEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
-REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
-SLOT=0
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a7517f95974a23a09ab7395792630d90
diff --git a/metadata/md5-cache/media-libs/mesa-20.2.0-r3 b/metadata/md5-cache/media-libs/mesa-20.2.0-r3
deleted file mode 100644
index 6c5e580..0000000
--- a/metadata/md5-cache/media-libs/mesa-20.2.0-r3
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=>=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm )
-DESCRIPTION=OpenGL-like graphic library for Linux
-EAPI=7
-HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_r128 video_cards_radeonsi video_cards_savage video_cards_sis video_cards_softpipe video_cards_tdfx video_cards_via video_cards_virgl video_cards_vmware +classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X cros_host cros_workon_tree_b8d78e509c717d068a0199e10811bffd817f2dd4
-KEYWORDS=*
-LICENSE=MIT LGPL-3 SGI-B-2.0
-PROPERTIES=live
-RDEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
-REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
-SLOT=0
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a7517f95974a23a09ab7395792630d90
diff --git a/metadata/md5-cache/media-libs/mesa-21.0 b/metadata/md5-cache/media-libs/mesa-21.0
new file mode 100644
index 0000000..8cfd428
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mesa-21.0
@@ -0,0 +1,15 @@
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm )
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=7
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_r128 video_cards_radeonsi video_cards_savage video_cards_sis video_cards_softpipe video_cards_tdfx video_cards_via video_cards_virgl video_cards_vmware +classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X cros_host cros_workon_tree_b8d78e509c717d068a0199e10811bffd817f2dd4
+KEYWORDS=*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
+REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
+SLOT=0
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e7866b55d492edacf94ab7926b0f16ea
diff --git a/metadata/md5-cache/media-libs/mesa-21.0.2 b/metadata/md5-cache/media-libs/mesa-21.0.2
new file mode 100644
index 0000000..8cfd428
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mesa-21.0.2
@@ -0,0 +1,15 @@
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm )
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=7
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_r128 video_cards_radeonsi video_cards_savage video_cards_sis video_cards_softpipe video_cards_tdfx video_cards_via video_cards_virgl video_cards_vmware +classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X cros_host cros_workon_tree_b8d78e509c717d068a0199e10811bffd817f2dd4
+KEYWORDS=*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
+REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
+SLOT=0
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e7866b55d492edacf94ab7926b0f16ea
diff --git a/metadata/md5-cache/media-libs/mesa-21.1 b/metadata/md5-cache/media-libs/mesa-21.1
new file mode 100644
index 0000000..84e0296
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mesa-21.1
@@ -0,0 +1,15 @@
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm )
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=7
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_r128 video_cards_radeonsi video_cards_savage video_cards_sis video_cards_softpipe video_cards_tdfx video_cards_via video_cards_virgl video_cards_vmware +classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X cros_host cros_workon_tree_5d5b7c74a6aae79cfcfb57dcff3bc4574df27c32
+KEYWORDS=~*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
+REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
+SLOT=0
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=361bbd2650b22d8635b0c05b5070860c
diff --git a/metadata/md5-cache/media-libs/mesa-21.1-r1 b/metadata/md5-cache/media-libs/mesa-21.1-r1
new file mode 100644
index 0000000..84e0296
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mesa-21.1-r1
@@ -0,0 +1,15 @@
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm )
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=7
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_r128 video_cards_radeonsi video_cards_savage video_cards_sis video_cards_softpipe video_cards_tdfx video_cards_via video_cards_virgl video_cards_vmware +classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X cros_host cros_workon_tree_5d5b7c74a6aae79cfcfb57dcff3bc4574df27c32
+KEYWORDS=~*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libxshmfence x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
+REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
+SLOT=0
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=361bbd2650b22d8635b0c05b5070860c
diff --git a/metadata/md5-cache/media-libs/mesa-9999 b/metadata/md5-cache/media-libs/mesa-9999
index 8d74cc2..3df391bc 100644
--- a/metadata/md5-cache/media-libs/mesa-9999
+++ b/metadata/md5-cache/media-libs/mesa-9999
@@ -1,4 +1,4 @@
-BDEPEND=virtual/pkgconfig sys-devel/bison sys-devel/flex >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git dev-vcs/git
+BDEPEND=virtual/pkgconfig sys-devel/bison sys-devel/flex >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install prepare setup test unpack
 DEPEND=dev-libs/expat:= dev-libs/libgcrypt:= llvm? ( sys-devel/llvm:= ) llvm? ( virtual/libelf:= ) virtual/udev:= X? ( !<x11-base/xorg-server-1.7:= >=x11-libs/libX11-1.3.99.901:= x11-libs/libXdamage:= x11-libs/libXext:= x11-libs/libXrandr:= x11-libs/libxshmfence:= x11-libs/libXxf86vm:= ) >=x11-libs/libdrm-2.4.60:= dev-libs/libxml2:= x11-base/xorg-proto:= wayland? ( >=dev-libs/wayland-protocols-1.8:= )
 DESCRIPTION=OpenGL-like graphic library for Linux
@@ -11,5 +11,5 @@
 RDEPEND=dev-libs/expat:= dev-libs/libgcrypt:= llvm? ( sys-devel/llvm:= ) llvm? ( virtual/libelf:= ) virtual/udev:= X? ( !<x11-base/xorg-server-1.7:= >=x11-libs/libX11-1.3.99.901:= x11-libs/libXdamage:= x11-libs/libXext:= x11-libs/libXrandr:= x11-libs/libxshmfence:= x11-libs/libXxf86vm:= ) >=x11-libs/libdrm-2.4.60:=
 REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
 SLOT=0/9999
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=2df1ea6349f93dd6f45f672b8e7cdb3c
diff --git a/metadata/md5-cache/media-libs/mesa-amd-20.2.4-r29 b/metadata/md5-cache/media-libs/mesa-amd-20.2.4-r29
deleted file mode 100644
index 9d199ec..0000000
--- a/metadata/md5-cache/media-libs/mesa-amd-20.2.4-r29
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=virtual/libelf dev-libs/expat x11-libs/libdrm !media-libs/mesa sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto x11-libs/libva sys-devel/llvm >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DESCRIPTION=The Mesa 3D Graphics Library
-EAPI=6
-HOMEPAGE=http://mesa3d.org/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe debug vulkan cros_host cros_workon_tree_33dcd0c41baeace97dffee0b895a64f93a033f3e
-KEYWORDS=*
-LICENSE=MIT
-PROPERTIES=live
-RDEPEND=virtual/libelf dev-libs/expat x11-libs/libdrm !media-libs/mesa
-SLOT=0
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=37e72288bd15a3efa699f3843445ce2b
diff --git a/metadata/md5-cache/media-libs/mesa-amd-21.1.0-r48 b/metadata/md5-cache/media-libs/mesa-amd-21.1.0-r48
new file mode 100644
index 0000000..4b374db
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mesa-amd-21.1.0-r48
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=virtual/libelf dev-libs/expat x11-libs/libdrm !media-libs/mesa sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto x11-libs/libva sys-devel/llvm >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DESCRIPTION=The Mesa 3D Graphics Library
+EAPI=6
+HOMEPAGE=http://mesa3d.org/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe debug vulkan cros_host cros_workon_tree_cbc74a968f7dbca5312df2f7cb8af5ecadf471c5
+KEYWORDS=*
+LICENSE=MIT
+PROPERTIES=live
+RDEPEND=virtual/libelf dev-libs/expat x11-libs/libdrm !media-libs/mesa
+SLOT=0
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=ca981a8438e051df6cfe33e20d3f3844
diff --git a/metadata/md5-cache/media-libs/mesa-amd-9999 b/metadata/md5-cache/media-libs/mesa-amd-9999
index 9e3d6cf..d338c06 100644
--- a/metadata/md5-cache/media-libs/mesa-amd-9999
+++ b/metadata/md5-cache/media-libs/mesa-amd-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=virtual/libelf dev-libs/expat x11-libs/libdrm !media-libs/mesa sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto x11-libs/libva sys-devel/llvm >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
+DEPEND=virtual/libelf dev-libs/expat x11-libs/libdrm !media-libs/mesa sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto x11-libs/libva sys-devel/llvm >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
 DESCRIPTION=The Mesa 3D Graphics Library
 EAPI=6
 HOMEPAGE=http://mesa3d.org/
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=virtual/libelf dev-libs/expat x11-libs/libdrm !media-libs/mesa
 SLOT=0
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=62f02a0cbc5b0bffcb92895ba88c411c
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=1756c3a320b5b914005dd57594faa8a8
diff --git a/metadata/md5-cache/media-libs/mesa-freedreno-21.0.0_pre-r38 b/metadata/md5-cache/media-libs/mesa-freedreno-21.0.0_pre-r38
deleted file mode 100644
index 59c6df2..0000000
--- a/metadata/md5-cache/media-libs/mesa-freedreno-21.0.0_pre-r38
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
-DESCRIPTION=The Mesa 3D Graphics Library
-EAPI=7
-HOMEPAGE=http://mesa3d.org/
-IUSE=debug vulkan cros_host cros_workon_tree_81076becad9df804deff46f52f64efa2f7f47288
-KEYWORDS=*
-LICENSE=MIT SGI-B-2.0
-PROPERTIES=live
-RDEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
-SLOT=0/21.0.0_pre-r38
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=db430a3b788d515a4452b7d053f6ba90
diff --git a/metadata/md5-cache/media-libs/mesa-freedreno-21.2.0_pre-r49 b/metadata/md5-cache/media-libs/mesa-freedreno-21.2.0_pre-r49
new file mode 100644
index 0000000..c9f5d2f
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mesa-freedreno-21.2.0_pre-r49
@@ -0,0 +1,14 @@
+BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
+DESCRIPTION=The Mesa 3D Graphics Library
+EAPI=7
+HOMEPAGE=http://mesa3d.org/
+IUSE=debug vulkan cros_host cros_workon_tree_5e2d3eccd85d551dcd7d7bfa5dac28a8d680dc88
+KEYWORDS=*
+LICENSE=MIT SGI-B-2.0
+PROPERTIES=live
+RDEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
+SLOT=0/21.2.0_pre-r49
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=02b84ee292ca7961d1d837af5943be4a
diff --git a/metadata/md5-cache/media-libs/mesa-freedreno-9999 b/metadata/md5-cache/media-libs/mesa-freedreno-9999
index 0148aa8..e9bc836 100644
--- a/metadata/md5-cache/media-libs/mesa-freedreno-9999
+++ b/metadata/md5-cache/media-libs/mesa-freedreno-9999
@@ -1,4 +1,4 @@
-BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git
+BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
 DEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
 DESCRIPTION=The Mesa 3D Graphics Library
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
 SLOT=0/9999
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=cfe0eb948c9c6dd8dc193110254c1978
diff --git a/metadata/md5-cache/media-libs/mesa-img-19.0_pre1 b/metadata/md5-cache/media-libs/mesa-img-19.0_pre1
index 0c5cbd0..692715b 100644
--- a/metadata/md5-cache/media-libs/mesa-img-19.0_pre1
+++ b/metadata/md5-cache/media-libs/mesa-img-19.0_pre1
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=!media-libs/mesa X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm ) video_cards_powervr? ( virtual/img-ddk !<media-libs/img-ddk-1.9 !<media-libs/img-ddk-bin-1.9 ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
+DEPEND=!media-libs/mesa X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm ) video_cards_powervr? ( virtual/img-ddk !<media-libs/img-ddk-1.9 !<media-libs/img-ddk-bin-1.9 ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
 DESCRIPTION=OpenGL-like graphic library for Linux
 EAPI=6
 HOMEPAGE=http://mesa3d.sourceforge.net/
@@ -10,5 +10,5 @@
 RDEPEND=!media-libs/mesa X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
 REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
 SLOT=0
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=ab5aeec05727a2445d222939a0dd90ce
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=25c78ba298149162539415f920609bc0
diff --git a/metadata/md5-cache/media-libs/mesa-img-19.0_pre1-r6 b/metadata/md5-cache/media-libs/mesa-img-19.0_pre1-r6
deleted file mode 100644
index 0c5cbd0..0000000
--- a/metadata/md5-cache/media-libs/mesa-img-19.0_pre1-r6
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=!media-libs/mesa X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm ) video_cards_powervr? ( virtual/img-ddk !<media-libs/img-ddk-1.9 !<media-libs/img-ddk-bin-1.9 ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DESCRIPTION=OpenGL-like graphic library for Linux
-EAPI=6
-HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_radeonsi video_cards_savage video_cards_sis video_cards_softpipe video_cards_tdfx video_cards_via video_cards_virgl video_cards_vmware +classic debug dri drm egl -gallium -gbm gles1 gles2 -llvm +nptl pic selinux shared-glapi kernel_FreeBSD vulkan wayland xlib-glx X cros_host cros_workon_tree_b09304eab38348e2a157c4adc75542a460746ce9
-KEYWORDS=*
-LICENSE=MIT LGPL-3 SGI-B-2.0
-PROPERTIES=live
-RDEPEND=!media-libs/mesa X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
-REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
-SLOT=0
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=ab5aeec05727a2445d222939a0dd90ce
diff --git a/metadata/md5-cache/media-libs/mesa-img-19.0_pre1-r7 b/metadata/md5-cache/media-libs/mesa-img-19.0_pre1-r7
new file mode 100644
index 0000000..692715b
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mesa-img-19.0_pre1-r7
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=!media-libs/mesa X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm ) video_cards_powervr? ( virtual/img-ddk !<media-libs/img-ddk-1.9 !<media-libs/img-ddk-bin-1.9 ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=6
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_powervr video_cards_r128 video_cards_radeonsi video_cards_savage video_cards_sis video_cards_softpipe video_cards_tdfx video_cards_via video_cards_virgl video_cards_vmware +classic debug dri drm egl -gallium -gbm gles1 gles2 -llvm +nptl pic selinux shared-glapi kernel_FreeBSD vulkan wayland xlib-glx X cros_host cros_workon_tree_b09304eab38348e2a157c4adc75542a460746ce9
+KEYWORDS=*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=!media-libs/mesa X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
+REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
+SLOT=0
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=25c78ba298149162539415f920609bc0
diff --git a/metadata/md5-cache/media-libs/mesa-img-9999 b/metadata/md5-cache/media-libs/mesa-img-9999
index 609350f..12bd864 100644
--- a/metadata/md5-cache/media-libs/mesa-img-9999
+++ b/metadata/md5-cache/media-libs/mesa-img-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=!media-libs/mesa X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm ) video_cards_powervr? ( virtual/img-ddk !<media-libs/img-ddk-1.9 !<media-libs/img-ddk-bin-1.9 ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
+DEPEND=!media-libs/mesa X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto wayland? ( >=dev-libs/wayland-protocols-1.8 ) llvm? ( sys-devel/llvm ) video_cards_powervr? ( virtual/img-ddk !<media-libs/img-ddk-1.9 !<media-libs/img-ddk-bin-1.9 ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
 DESCRIPTION=OpenGL-like graphic library for Linux
 EAPI=6
 HOMEPAGE=http://mesa3d.sourceforge.net/
@@ -10,5 +10,5 @@
 RDEPEND=!media-libs/mesa X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
 REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
 SLOT=0
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=a6bb24473410e23ad3251ac15baa0028
diff --git a/metadata/md5-cache/media-libs/mesa-iris-20.2.1-r14 b/metadata/md5-cache/media-libs/mesa-iris-20.2.1-r14
deleted file mode 100644
index 4d21e05..0000000
--- a/metadata/md5-cache/media-libs/mesa-iris-20.2.1-r14
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
-DESCRIPTION=The Mesa 3D Graphics Library
-EAPI=7
-HOMEPAGE=http://mesa3d.org/
-IUSE=debug vulkan tools cros_host cros_workon_tree_80bd75d79f29e0c38289ee2a975c26522c231b6f
-KEYWORDS=*
-LICENSE=MIT SGI-B-2.0
-PROPERTIES=live
-RDEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
-SLOT=0/20.2.1-r14
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=005bb24a0522ed8b75b4ee8f71b0c080
diff --git a/metadata/md5-cache/media-libs/mesa-iris-21.1.1-r26 b/metadata/md5-cache/media-libs/mesa-iris-21.1.1-r26
new file mode 100644
index 0000000..2ba3e8b
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mesa-iris-21.1.1-r26
@@ -0,0 +1,14 @@
+BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
+DESCRIPTION=The Mesa 3D Graphics Library
+EAPI=7
+HOMEPAGE=http://mesa3d.org/
+IUSE=debug vulkan tools cros_host cros_workon_tree_f623425a2c035582400821c0eb4451faaac1b9f2
+KEYWORDS=*
+LICENSE=MIT SGI-B-2.0
+PROPERTIES=live
+RDEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
+SLOT=0/21.1.1-r26
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f1f017744a85ea9b7676ea8e53afd7b5
diff --git a/metadata/md5-cache/media-libs/mesa-iris-9999 b/metadata/md5-cache/media-libs/mesa-iris-9999
index 2772644..51e5b51 100644
--- a/metadata/md5-cache/media-libs/mesa-iris-9999
+++ b/metadata/md5-cache/media-libs/mesa-iris-9999
@@ -1,4 +1,4 @@
-BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git
+BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
 DEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
 DESCRIPTION=The Mesa 3D Graphics Library
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
 SLOT=0/9999
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=40146f9dbcb100b00832d10566626d8d
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a0d1b68999e4cc90b0c80f70af34c6d4
diff --git a/metadata/md5-cache/media-libs/mesa-llvmpipe-20.1 b/metadata/md5-cache/media-libs/mesa-llvmpipe-20.1
index 28e0de6..2d6c79b 100644
--- a/metadata/md5-cache/media-libs/mesa-llvmpipe-20.1
+++ b/metadata/md5-cache/media-libs/mesa-llvmpipe-20.1
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) wayland? ( dev-libs/wayland >=dev-libs/wayland-protocols-1.8 ) !media-libs/mesa llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto llvm? ( sys-devel/llvm ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
+DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) wayland? ( dev-libs/wayland >=dev-libs/wayland-protocols-1.8 ) !media-libs/mesa llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto llvm? ( sys-devel/llvm ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
 DESCRIPTION=OpenGL-like graphic library for Linux
 EAPI=6
 HOMEPAGE=http://mesa3d.sourceforge.net/
@@ -10,5 +10,5 @@
 RDEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) wayland? ( dev-libs/wayland >=dev-libs/wayland-protocols-1.8 ) !media-libs/mesa llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
 REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
 SLOT=0
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=47b5de0bb40406442f2f7c7d39eba0d9
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=702dbc0061405abe6c1f113138d930b8
diff --git a/metadata/md5-cache/media-libs/mesa-llvmpipe-20.1.3-r2 b/metadata/md5-cache/media-libs/mesa-llvmpipe-20.1.3-r2
deleted file mode 100644
index 28e0de6..0000000
--- a/metadata/md5-cache/media-libs/mesa-llvmpipe-20.1.3-r2
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) wayland? ( dev-libs/wayland >=dev-libs/wayland-protocols-1.8 ) !media-libs/mesa llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto llvm? ( sys-devel/llvm ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DESCRIPTION=OpenGL-like graphic library for Linux
-EAPI=6
-HOMEPAGE=http://mesa3d.sourceforge.net/
-IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_r128 video_cards_radeonsi video_cards_savage video_cards_sis video_cards_softpipe video_cards_tdfx video_cards_via video_cards_virgl video_cards_vmware +classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X cros_host cros_workon_tree_b8d78e509c717d068a0199e10811bffd817f2dd4
-KEYWORDS=*
-LICENSE=MIT LGPL-3 SGI-B-2.0
-PROPERTIES=live
-RDEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) wayland? ( dev-libs/wayland >=dev-libs/wayland-protocols-1.8 ) !media-libs/mesa llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
-REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
-SLOT=0
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=47b5de0bb40406442f2f7c7d39eba0d9
diff --git a/metadata/md5-cache/media-libs/mesa-llvmpipe-20.1.3-r3 b/metadata/md5-cache/media-libs/mesa-llvmpipe-20.1.3-r3
new file mode 100644
index 0000000..2d6c79b
--- /dev/null
+++ b/metadata/md5-cache/media-libs/mesa-llvmpipe-20.1.3-r3
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) wayland? ( dev-libs/wayland >=dev-libs/wayland-protocols-1.8 ) !media-libs/mesa llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto llvm? ( sys-devel/llvm ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DESCRIPTION=OpenGL-like graphic library for Linux
+EAPI=6
+HOMEPAGE=http://mesa3d.sourceforge.net/
+IUSE=video_cards_intel video_cards_amdgpu video_cards_radeon video_cards_freedreno video_cards_llvmpipe video_cards_mach64 video_cards_mga video_cards_nouveau video_cards_r128 video_cards_radeonsi video_cards_savage video_cards_sis video_cards_softpipe video_cards_tdfx video_cards_via video_cards_virgl video_cards_vmware +classic debug dri drm egl +gallium -gbm gles1 gles2 kernel_FreeBSD kvm_guest llvm +nptl pic selinux shared-glapi vulkan wayland xlib-glx X cros_host cros_workon_tree_b8d78e509c717d068a0199e10811bffd817f2dd4
+KEYWORDS=*
+LICENSE=MIT LGPL-3 SGI-B-2.0
+PROPERTIES=live
+RDEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) wayland? ( dev-libs/wayland >=dev-libs/wayland-protocols-1.8 ) !media-libs/mesa llvm? ( virtual/libelf ) dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
+REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
+SLOT=0
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=702dbc0061405abe6c1f113138d930b8
diff --git a/metadata/md5-cache/media-libs/mesa-llvmpipe-9999 b/metadata/md5-cache/media-libs/mesa-llvmpipe-9999
index aadbb33..0c0d193 100644
--- a/metadata/md5-cache/media-libs/mesa-llvmpipe-9999
+++ b/metadata/md5-cache/media-libs/mesa-llvmpipe-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) wayland? ( dev-libs/wayland >=dev-libs/wayland-protocols-1.8 ) llvm? ( virtual/libelf ) !media-libs/mesa dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto llvm? ( sys-devel/llvm ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
+DEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) wayland? ( dev-libs/wayland >=dev-libs/wayland-protocols-1.8 ) llvm? ( virtual/libelf ) !media-libs/mesa dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60 dev-libs/libxml2 sys-devel/bison sys-devel/flex virtual/pkgconfig x11-base/xorg-proto llvm? ( sys-devel/llvm ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
 DESCRIPTION=OpenGL-like graphic library for Linux
 EAPI=6
 HOMEPAGE=http://mesa3d.sourceforge.net/
@@ -10,5 +10,5 @@
 RDEPEND=X? ( !<x11-base/xorg-server-1.7 >=x11-libs/libX11-1.3.99.901 x11-libs/libXdamage x11-libs/libXext x11-libs/libXrandr x11-libs/libXxf86vm ) wayland? ( dev-libs/wayland >=dev-libs/wayland-protocols-1.8 ) llvm? ( virtual/libelf ) !media-libs/mesa dev-libs/expat dev-libs/libgcrypt virtual/udev >=x11-libs/libdrm-2.4.60
 REQUIRED_USE=video_cards_amdgpu? ( llvm ) video_cards_llvmpipe? ( llvm )
 SLOT=0
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=8ecf785fa1b6f80dade5419b7035c915
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=5675ef71778dbb14076a6199fc83b9e0
diff --git a/metadata/md5-cache/media-libs/mesa-panfrost-20.3.2 b/metadata/md5-cache/media-libs/mesa-panfrost-20.3.2
index bbb1188..fab3b55 100644
--- a/metadata/md5-cache/media-libs/mesa-panfrost-20.3.2
+++ b/metadata/md5-cache/media-libs/mesa-panfrost-20.3.2
@@ -1,4 +1,4 @@
-BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git
+BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
 DEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
 DESCRIPTION=The Mesa 3D Graphics Library
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
 SLOT=0/20.3.2
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=247d6c26a7966826e83360f22e7b26ef
diff --git a/metadata/md5-cache/media-libs/mesa-panfrost-9999 b/metadata/md5-cache/media-libs/mesa-panfrost-9999
index 4cfb463..5322b49 100644
--- a/metadata/md5-cache/media-libs/mesa-panfrost-9999
+++ b/metadata/md5-cache/media-libs/mesa-panfrost-9999
@@ -1,4 +1,4 @@
-BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git
+BDEPEND=sys-devel/bison sys-devel/flex virtual/pkgconfig >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
 DEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
 DESCRIPTION=The Mesa 3D Graphics Library
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=dev-libs/expat:= >=x11-libs/libdrm-2.4.94:=
 SLOT=0/9999
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=0939c9ed2e950410905b6d7c293e9fc6
+_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=839738781362e761492a93326d6d38dd
diff --git a/metadata/md5-cache/media-libs/minigbm-0.0.1-r439 b/metadata/md5-cache/media-libs/minigbm-0.0.1-r439
deleted file mode 100644
index 4b95b77..0000000
--- a/metadata/md5-cache/media-libs/minigbm-0.0.1-r439
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=x11-libs/libdrm !media-libs/mesa[gbm] virtual/pkgconfig video_cards_amdgpu? ( virtual/opengles x11-drivers/opengles-headers )
-DESCRIPTION=Mini GBM implementation
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/minigbm
-IUSE=-asan kernel-3_8 kernel-3_14 kernel-3_18 linear_align_256 video_cards_amdgpu video_cards_exynos video_cards_intel video_cards_marvell video_cards_mediatek video_cards_msm video_cards_radeon video_cards_radeonsi video_cards_rockchip video_cards_tegra video_cards_vc4 video_cards_virgl minigbm_platform_mt8183 minigbm_platform_mt8192 asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_445cf807514840545f4e7761b911b42bbe92af07
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=x11-libs/libdrm !media-libs/mesa[gbm]
-SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=3aa71f41b15fed0a6008958d1919340b
diff --git a/metadata/md5-cache/media-libs/minigbm-0.0.1-r485 b/metadata/md5-cache/media-libs/minigbm-0.0.1-r485
new file mode 100644
index 0000000..8d05529
--- /dev/null
+++ b/metadata/md5-cache/media-libs/minigbm-0.0.1-r485
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=x11-libs/libdrm !media-libs/mesa[gbm] virtual/pkgconfig video_cards_amdgpu? ( virtual/opengles x11-drivers/opengles-headers )
+DESCRIPTION=Mini GBM implementation
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/minigbm
+IUSE=-asan kernel-3_18 linear_align_256 video_cards_amdgpu video_cards_exynos video_cards_intel video_cards_marvell video_cards_mediatek video_cards_msm video_cards_radeon video_cards_radeonsi video_cards_rockchip video_cards_tegra video_cards_vc4 video_cards_virgl minigbm_platform_mt8183 minigbm_platform_mt8192 minigbm_platform_mt8195 asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_6db1492d66cd8acef88bacfe95f001e289adc55c
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=x11-libs/libdrm !media-libs/mesa[gbm]
+SLOT=0
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=9a81748ac96d0e9b369ee1683699189e
diff --git a/metadata/md5-cache/media-libs/minigbm-9999 b/metadata/md5-cache/media-libs/minigbm-9999
index c70c47e8..a741729 100644
--- a/metadata/md5-cache/media-libs/minigbm-9999
+++ b/metadata/md5-cache/media-libs/minigbm-9999
@@ -3,11 +3,11 @@
 DESCRIPTION=Mini GBM implementation
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/minigbm
-IUSE=-asan kernel-3_8 kernel-3_14 kernel-3_18 linear_align_256 video_cards_amdgpu video_cards_exynos video_cards_intel video_cards_marvell video_cards_mediatek video_cards_msm video_cards_radeon video_cards_radeonsi video_cards_rockchip video_cards_tegra video_cards_vc4 video_cards_virgl minigbm_platform_mt8183 minigbm_platform_mt8192 asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
+IUSE=-asan kernel-3_18 linear_align_256 video_cards_amdgpu video_cards_exynos video_cards_intel video_cards_marvell video_cards_mediatek video_cards_msm video_cards_radeon video_cards_radeonsi video_cards_rockchip video_cards_tegra video_cards_vc4 video_cards_virgl minigbm_platform_mt8183 minigbm_platform_mt8192 minigbm_platform_mt8195 asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=x11-libs/libdrm !media-libs/mesa[gbm]
 SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b0063a44bccfd3b1ddbbe3afde6ffc67
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=f592a178d48d870ec54d5d1ac6a5aeaf
diff --git a/metadata/md5-cache/media-libs/opencv-4.1.2-r3 b/metadata/md5-cache/media-libs/opencv-4.1.2-r3
index 46fe23e..0ac0e7d 100644
--- a/metadata/md5-cache/media-libs/opencv-4.1.2-r3
+++ b/metadata/md5-cache/media-libs/opencv-4.1.2-r3
@@ -1,5 +1,5 @@
 BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6
-DEFINED_PHASES=compile configure install preinst prepare pretend setup test
+DEFINED_PHASES=compile configure install preinst prepare setup test
 DEPEND=app-arch/bzip2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/protobuf:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/zlib[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] cuda? ( dev-util/nvidia-cuda-toolkit:0= ) contribhdf? ( sci-libs/hdf5:= ) ffmpeg? ( libav? ( media-video/libav:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !libav? ( media-video/ffmpeg:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) gdal? ( sci-libs/gdal:= ) gflags? ( dev-cpp/gflags[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) glog? ( dev-cpp/glog[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gphoto2? ( media-libs/libgphoto2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gstreamer? ( media-libs/gstreamer:1.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] media-libs/gst-plugins-base:1.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gtk? ( dev-libs/glib:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] x11-libs/gtk+:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] opengl? ( x11-libs/gtkglext[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) ieee1394? ( media-libs/libdc1394[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/libraw1394[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) java? ( >=virtual/jre-1.6:* ) jpeg? ( virtual/jpeg:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) lapack? ( virtual/lapack ) opencl? ( virtual/opencl[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) openexr? ( media-libs/openexr[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) opengl? ( virtual/opengl[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] virtual/glu[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) png? ( media-libs/libpng:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/numpy[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] ) qt5? ( dev-qt/qtgui:5 dev-qt/qtwidgets:5 dev-qt/qttest:5 dev-qt/qtconcurrent:5 opengl? ( dev-qt/qtopengl:5 ) ) tesseract? ( app-text/tesseract[opencl=] ) threads? ( dev-cpp/tbb[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tiff? ( media-libs/tiff:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) v4l? ( >=media-libs/libv4l-0.8.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) vtk? ( sci-libs/vtk[rendering] ) webp? ( media-libs/libwebp[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xine? ( media-libs/xine-lib ) virtual/pkgconfig[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] eigen? ( dev-cpp/eigen:3 ) java? ( >=virtual/jdk-1.6 ) vaapi? ( x11-libs/libva ) java? ( >=dev-java/java-config-2.2.0-r3 ) java? ( >=dev-java/ant-core-1.8.2:0 >=dev-java/javatoolkit-0.3.0-r2 )
 DESCRIPTION=A collection of algorithms and sample code for various computer vision problems
 EAPI=7
@@ -11,5 +11,5 @@
 REQUIRED_USE=cuda? ( tesseract? ( opencl ) ) dnnsamples? ( examples ) gflags? ( contrib ) glog? ( contrib ) contribcvv? ( contrib qt5 ) contribdnn? ( contrib ) contribhdf? ( contrib ) contribsfm? ( contrib eigen gflags glog ) contribxfeatures2d? ( contrib download ) java? ( python ) opengl? ( || ( gtk qt5 ) ) python? ( || ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 ) ) tesseract? ( contrib )
 SLOT=0/4.1.2
 SRC_URI=https://github.com/opencv/opencv/archive/4.1.2.tar.gz -> opencv-4.1.2.tar.gz dnnsamples? ( https://dev.gentoo.org/~amynka/snap/opencv-3.4.0-res10_300x300-caffeemodel.tar.gz ) contrib? ( https://github.com/opencv/opencv_contrib/archive/4.1.2.tar.gz -> opencv-4.1.2_contrib.tar.gz contribdnn? ( https://dev.gentoo.org/~amynka/snap/opencv-3.4.0-face_landmark_model.tar.gz ) contribxfeatures2d? ( https://dev.gentoo.org/~amynka/snap/vgg_boostdesc-3.2.0.tar.gz ) )
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	java-ant-2	4e2b30d918dda38a51839a4d45282b62	java-pkg-opt-2	be255db325e3af8fbf3506cf63998341	java-utils-2	82402a1c36ab4bf38f3313a543f9e827	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=6ba3f62c1eefc57ef927bd7e80562e20
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	java-ant-2	4e2b30d918dda38a51839a4d45282b62	java-pkg-opt-2	be255db325e3af8fbf3506cf63998341	java-utils-2	82402a1c36ab4bf38f3313a543f9e827	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=debbddda5bccacdee773c6ab82e6d547
diff --git a/metadata/md5-cache/media-libs/virglrenderer-0.8.2-r24 b/metadata/md5-cache/media-libs/virglrenderer-0.8.2-r24
deleted file mode 100644
index c9df7a8..0000000
--- a/metadata/md5-cache/media-libs/virglrenderer-0.8.2-r24
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=>=x11-libs/libdrm-2.4.50 media-libs/libepoxy media-libs/minigbm fuzzer? ( virtual/opengles ) sys-devel/autoconf-archive fuzzer? ( >=dev-libs/check-0.9.4 ) test? ( >=dev-libs/check-0.9.4 ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
-DESCRIPTION=library used implement a virtual 3D GPU used by qemu
-EAPI=6
-HOMEPAGE=https://virgil3d.github.io/
-IUSE=debug fuzzer profiling test fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_0c66bbaaaeefd3f451d70c62bc500ef6fab48c4c
-KEYWORDS=*
-LICENSE=MIT
-PROPERTIES=live
-RDEPEND=>=x11-libs/libdrm-2.4.50 media-libs/libepoxy media-libs/minigbm fuzzer? ( virtual/opengles )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=264df632cf42ca4050e72601370a2355
diff --git a/metadata/md5-cache/media-libs/virglrenderer-0.8.2-r54 b/metadata/md5-cache/media-libs/virglrenderer-0.8.2-r54
new file mode 100644
index 0000000..b2c492f
--- /dev/null
+++ b/metadata/md5-cache/media-libs/virglrenderer-0.8.2-r54
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=>=x11-libs/libdrm-2.4.50 media-libs/libepoxy media-libs/minigbm fuzzer? ( virtual/opengles ) vulkan? ( media-libs/vulkan-loader ) chromeos-base/percetto sys-devel/autoconf-archive fuzzer? ( >=dev-libs/check-0.9.4 ) test? ( >=dev-libs/check-0.9.4 ) vulkan? ( dev-util/vulkan-headers ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DESCRIPTION=library used implement a virtual 3D GPU used by qemu
+EAPI=6
+HOMEPAGE=https://virgil3d.github.io/
+IUSE=debug fuzzer profiling test vulkan fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_f4b861dfec2f86b6b3c33034d7af41e0a08a86e6
+KEYWORDS=*
+LICENSE=MIT
+PROPERTIES=live
+RDEPEND=>=x11-libs/libdrm-2.4.50 media-libs/libepoxy media-libs/minigbm fuzzer? ( virtual/opengles ) vulkan? ( media-libs/vulkan-loader )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=544f6289ba664d49493d3f5fe677a7a3
diff --git a/metadata/md5-cache/media-libs/virglrenderer-9999 b/metadata/md5-cache/media-libs/virglrenderer-9999
index 2c5d145..7532507 100644
--- a/metadata/md5-cache/media-libs/virglrenderer-9999
+++ b/metadata/md5-cache/media-libs/virglrenderer-9999
@@ -1,13 +1,13 @@
 DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=>=x11-libs/libdrm-2.4.50 media-libs/libepoxy media-libs/minigbm fuzzer? ( virtual/opengles ) sys-devel/autoconf-archive fuzzer? ( >=dev-libs/check-0.9.4 ) test? ( >=dev-libs/check-0.9.4 ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2
+DEPEND=>=x11-libs/libdrm-2.4.50 media-libs/libepoxy media-libs/minigbm fuzzer? ( virtual/opengles ) vulkan? ( media-libs/vulkan-loader ) chromeos-base/percetto sys-devel/autoconf-archive fuzzer? ( >=dev-libs/check-0.9.4 ) test? ( >=dev-libs/check-0.9.4 ) vulkan? ( dev-util/vulkan-headers ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
 DESCRIPTION=library used implement a virtual 3D GPU used by qemu
 EAPI=6
 HOMEPAGE=https://virgil3d.github.io/
-IUSE=debug fuzzer profiling test fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
+IUSE=debug fuzzer profiling test vulkan fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=MIT
 PROPERTIES=live
-RDEPEND=>=x11-libs/libdrm-2.4.50 media-libs/libepoxy media-libs/minigbm fuzzer? ( virtual/opengles )
+RDEPEND=>=x11-libs/libdrm-2.4.50 media-libs/libepoxy media-libs/minigbm fuzzer? ( virtual/opengles ) vulkan? ( media-libs/vulkan-loader )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9b8c6b003c76c17257fee318154613cd
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=fd2dfc30a56c35cd8c6e2996e5f79981
diff --git a/metadata/md5-cache/media-libs/vulkan-layers-1.2.162 b/metadata/md5-cache/media-libs/vulkan-layers-1.2.162
new file mode 100644
index 0000000..4c73c9b
--- /dev/null
+++ b/metadata/md5-cache/media-libs/vulkan-layers-1.2.162
@@ -0,0 +1,14 @@
+BDEPEND=>=dev-util/cmake-3.10.2 dev-util/ninja dev-util/cmake
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=>=dev-util/spirv-tools-2020.6:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) >=dev-util/glslang-10.11.0.0_pre20201216:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/vulkan-headers-1.2.162 wayland? ( dev-libs/wayland:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] x11-libs/libXrandr:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+DESCRIPTION=Vulkan Validation Layers
+EAPI=7
+HOMEPAGE=https://github.com/KhronosGroup/Vulkan-ValidationLayers
+IUSE=wayland X abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=>=dev-util/spirv-tools-2020.6:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+SLOT=0
+SRC_URI=https://github.com/KhronosGroup/Vulkan-ValidationLayers/archive/v1.2.162.tar.gz -> vulkan-layers-1.2.162.tar.gz
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=343b553b332680b37a604955f27e2871
diff --git a/metadata/md5-cache/media-libs/vulkan-loader-1.1.92.1 b/metadata/md5-cache/media-libs/vulkan-loader-1.1.92.1
deleted file mode 100644
index 516a19cf..0000000
--- a/metadata/md5-cache/media-libs/vulkan-loader-1.1.92.1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare setup test
-DEPEND=>=dev-util/vulkan-headers-1.1.92.0 wayland? ( dev-libs/wayland:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] x11-libs/libXrandr:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Vulkan Installable Client Driver (ICD) Loader
-EAPI=6
-HOMEPAGE=https://github.com/KhronosGroup/Vulkan-Loader
-IUSE=layers wayland X abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=Apache-2.0
-PDEPEND=layers? ( media-libs/vulkan-layers:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-SLOT=0
-SRC_URI=https://github.com/KhronosGroup/Vulkan-Loader/archive/4cd7e44fc1ca6c4d8361720b43a3588ddf9fc4b6.tar.gz -> vulkan-loader-1.1.92.1.tar.gz
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=2135d5c956333d43d5f4bc87b8faca40
diff --git a/metadata/md5-cache/media-libs/vulkan-loader-1.1.92.1-r1 b/metadata/md5-cache/media-libs/vulkan-loader-1.1.92.1-r1
deleted file mode 100644
index 516a19cf..0000000
--- a/metadata/md5-cache/media-libs/vulkan-loader-1.1.92.1-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare setup test
-DEPEND=>=dev-util/vulkan-headers-1.1.92.0 wayland? ( dev-libs/wayland:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] x11-libs/libXrandr:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Vulkan Installable Client Driver (ICD) Loader
-EAPI=6
-HOMEPAGE=https://github.com/KhronosGroup/Vulkan-Loader
-IUSE=layers wayland X abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=Apache-2.0
-PDEPEND=layers? ( media-libs/vulkan-layers:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
-SLOT=0
-SRC_URI=https://github.com/KhronosGroup/Vulkan-Loader/archive/4cd7e44fc1ca6c4d8361720b43a3588ddf9fc4b6.tar.gz -> vulkan-loader-1.1.92.1.tar.gz
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=2135d5c956333d43d5f4bc87b8faca40
diff --git a/metadata/md5-cache/media-libs/vulkan-loader-1.2.162-r1 b/metadata/md5-cache/media-libs/vulkan-loader-1.2.162-r1
new file mode 100644
index 0000000..8fde50e
--- /dev/null
+++ b/metadata/md5-cache/media-libs/vulkan-loader-1.2.162-r1
@@ -0,0 +1,14 @@
+BDEPEND=|| ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) >=dev-util/cmake-3.10.2 dev-util/ninja dev-util/cmake
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=~dev-util/vulkan-headers-1.2.162 wayland? ( dev-libs/wayland:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] x11-libs/libXrandr:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+DESCRIPTION=Vulkan Installable Client Driver (ICD) Loader
+EAPI=7
+HOMEPAGE=https://github.com/KhronosGroup/Vulkan-Loader
+IUSE=layers wayland X abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=Apache-2.0
+PDEPEND=layers? ( media-libs/vulkan-layers:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+SLOT=0
+SRC_URI=https://github.com/KhronosGroup/Vulkan-Loader/archive/v1.2.162.tar.gz -> vulkan-loader-1.2.162.tar.gz
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=e020cf42f1ddbb61fd3ceacccee5441b
diff --git a/metadata/md5-cache/media-libs/waffle-1.6.0-r13 b/metadata/md5-cache/media-libs/waffle-1.6.0-r13
index 147bd4f..1c6f1fa 100644
--- a/metadata/md5-cache/media-libs/waffle-1.6.0-r13
+++ b/metadata/md5-cache/media-libs/waffle-1.6.0-r13
@@ -10,5 +10,5 @@
 REQUIRED_USE=|| ( opengl opengles ) opengl? ( X ) || ( X gbm wayland )
 SLOT=0
 SRC_URI=https://github.com/fjhenigman/waffle/archive/null2.tar.gz -> waffle-1.6.0-r1.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=d03a92a859e96f8cb0057b9c0b211dfa
diff --git a/metadata/md5-cache/media-libs/webrtc-apm-0.0.1-r19 b/metadata/md5-cache/media-libs/webrtc-apm-0.0.1-r19
deleted file mode 100644
index 6dbcc44..0000000
--- a/metadata/md5-cache/media-libs/webrtc-apm-0.0.1-r19
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure info install setup unpack
-DEPEND=dev-libs/iniparser:= dev-libs/libevent:= dev-libs/protobuf:=
-DESCRIPTION=Standalone WebRTC APM library
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm
-IUSE=cpu_flags_x86_sse2 neon cros_host cros_workon_tree_ae1d3dca7ac29fe68dc55ab02be8d4d812e078e3
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-libs/iniparser:= dev-libs/libevent:= dev-libs/protobuf:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=355fd7df05623af7c81ba8b7af527189
diff --git a/metadata/md5-cache/media-libs/webrtc-apm-0.0.1-r25 b/metadata/md5-cache/media-libs/webrtc-apm-0.0.1-r25
new file mode 100644
index 0000000..b9e4cd6
--- /dev/null
+++ b/metadata/md5-cache/media-libs/webrtc-apm-0.0.1-r25
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure info install setup unpack
+DEPEND=dev-libs/iniparser:= dev-libs/libevent:= dev-libs/protobuf:= chromeos-base/metrics
+DESCRIPTION=Standalone WebRTC APM library
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm
+IUSE=cpu_flags_x86_sse2 neon cros_host cros_workon_tree_d7913d87dd4ea6cee195ad27b94ce6ad23840b87
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-libs/iniparser:= dev-libs/libevent:= dev-libs/protobuf:= chromeos-base/metrics
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=3ed891c842da193263db7ba0d7192309
diff --git a/metadata/md5-cache/media-libs/webrtc-apm-9999 b/metadata/md5-cache/media-libs/webrtc-apm-9999
index b0b6e75..a139089 100644
--- a/metadata/md5-cache/media-libs/webrtc-apm-9999
+++ b/metadata/md5-cache/media-libs/webrtc-apm-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=configure info install setup unpack
-DEPEND=dev-libs/iniparser:= dev-libs/libevent:= dev-libs/protobuf:=
+DEPEND=dev-libs/iniparser:= dev-libs/libevent:= dev-libs/protobuf:= chromeos-base/metrics
 DESCRIPTION=Standalone WebRTC APM library
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/webrtc-apm
@@ -7,7 +7,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=dev-libs/iniparser:= dev-libs/libevent:= dev-libs/protobuf:=
+RDEPEND=dev-libs/iniparser:= dev-libs/libevent:= dev-libs/protobuf:= chromeos-base/metrics
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=7d600ea1106b021b0b37aaaa8f37ef11
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=d32e579e67b74a633881bb70b256a8c2
diff --git a/metadata/md5-cache/media-sound/adhd-0.0.6-r2170 b/metadata/md5-cache/media-sound/adhd-0.0.6-r2170
deleted file mode 100644
index 807a598..0000000
--- a/metadata/md5-cache/media-sound/adhd-0.0.6-r2170
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=>=app-portage/elt-patches-20170815 dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst prepare setup test unpack
-DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/iniparser:= cras-apm? ( media-libs/webrtc-apm:= ) >=media-libs/alsa-lib-1.1.6-r3:= media-libs/ladspa-sdk:= media-libs/sbc:= media-libs/speex:= >=sys-apps/dbus-1.4.12:= selinux? ( sys-libs/libselinux:= ) virtual/udev:= dev-libs/libpthread-stubs:= media-sound/cras_rust:= !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout
-DESCRIPTION=Google A/V Daemon
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/
-IUSE=asan +cras-apm fuzzer generated_cros_config selinux systemd unibuild fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_affd5e26482e936c707354b5d762c1ef3720ef12
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/iniparser:= cras-apm? ( media-libs/webrtc-apm:= ) >=media-libs/alsa-lib-1.1.6-r3:= media-libs/ladspa-sdk:= media-libs/sbc:= media-libs/speex:= >=sys-apps/dbus-1.4.12:= selinux? ( sys-libs/libselinux:= ) virtual/udev:= media-sound/alsa-utils media-plugins/alsa-plugins unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) chromeos-base/chromeos-config-tools sys-apps/baselayout
-SLOT=0/0.0.6-r2170
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=90812f0c24db58a54727a3a9db8159fc
diff --git a/metadata/md5-cache/media-sound/adhd-0.0.6-r2281 b/metadata/md5-cache/media-sound/adhd-0.0.6-r2281
new file mode 100644
index 0000000..a4a00f6
--- /dev/null
+++ b/metadata/md5-cache/media-sound/adhd-0.0.6-r2281
@@ -0,0 +1,14 @@
+BDEPEND=>=app-portage/elt-patches-20170815 dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst prepare setup test unpack
+DEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/iniparser:= cras-apm? ( media-libs/webrtc-apm:= ) >=media-libs/alsa-lib-1.1.6-r3:= media-libs/ladspa-sdk:= media-libs/sbc:= media-libs/speex:= >=sys-apps/dbus-1.4.12:= selinux? ( sys-libs/libselinux:= ) virtual/udev:= dev-libs/libpthread-stubs:= media-sound/cras_rust:= !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout
+DESCRIPTION=Google A/V Daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/
+IUSE=asan +cras-apm fuzzer generated_cros_config selinux systemd unibuild fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_e62b24ca0c95c5db285704697a8d941cbdbb742c
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/iniparser:= cras-apm? ( media-libs/webrtc-apm:= ) >=media-libs/alsa-lib-1.1.6-r3:= media-libs/ladspa-sdk:= media-libs/sbc:= media-libs/speex:= >=sys-apps/dbus-1.4.12:= selinux? ( sys-libs/libselinux:= ) virtual/udev:= media-sound/alsa-utils media-plugins/alsa-plugins unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) chromeos-base/chromeos-config-tools sys-apps/baselayout
+SLOT=0/0.0.6-r2281
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=f43ae1589298849ec190117a48924325
diff --git a/metadata/md5-cache/media-sound/adhd-9999 b/metadata/md5-cache/media-sound/adhd-9999
index 1f3b907..f143c2f 100644
--- a/metadata/md5-cache/media-sound/adhd-9999
+++ b/metadata/md5-cache/media-sound/adhd-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=>=chromeos-base/metrics-0.0.1-r3152:= dev-libs/iniparser:= cras-apm? ( media-libs/webrtc-apm:= ) >=media-libs/alsa-lib-1.1.6-r3:= media-libs/ladspa-sdk:= media-libs/sbc:= media-libs/speex:= >=sys-apps/dbus-1.4.12:= selinux? ( sys-libs/libselinux:= ) virtual/udev:= media-sound/alsa-utils media-plugins/alsa-plugins unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp ) ) chromeos-base/chromeos-config-tools sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=0dce1b661d126c082a4d99936ae59cb4
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=e951975d7e25c9c43c7b36ba55d8391d
diff --git a/metadata/md5-cache/media-sound/alsa-utils-1.2.1 b/metadata/md5-cache/media-sound/alsa-utils-1.2.1
index e6afa75..f4fe88a 100644
--- a/metadata/md5-cache/media-sound/alsa-utils-1.2.1
+++ b/metadata/md5-cache/media-sound/alsa-utils-1.2.1
@@ -1,5 +1,5 @@
 BDEPEND=virtual/pkgconfig virtual/pkgconfig virtual/pkgconfig
-DEFINED_PHASES=configure install postinst
+DEFINED_PHASES=configure install
 DEPEND=>=media-libs/alsa-lib-1.2.1 libsamplerate? ( media-libs/libsamplerate ) ncurses? ( >=sys-libs/ncurses-5.7-r7:0= ) bat? ( sci-libs/fftw:= ) doc? ( app-text/xmlto )
 DESCRIPTION=Advanced Linux Sound Architecture Utils (alsactl, alsamixer, etc.)
 EAPI=7
@@ -11,4 +11,4 @@
 SLOT=0.9
 SRC_URI=https://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.1.tar.bz2
 _eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
-_md5_=ff13a0b0d0e0db1ff2b2f466de7d7854
+_md5_=fe007ef3effbd90ff5cf2d0170e001a4
diff --git a/metadata/md5-cache/media-sound/alsa-utils-1.2.1-r2 b/metadata/md5-cache/media-sound/alsa-utils-1.2.1-r2
index e6afa75..f4fe88a 100644
--- a/metadata/md5-cache/media-sound/alsa-utils-1.2.1-r2
+++ b/metadata/md5-cache/media-sound/alsa-utils-1.2.1-r2
@@ -1,5 +1,5 @@
 BDEPEND=virtual/pkgconfig virtual/pkgconfig virtual/pkgconfig
-DEFINED_PHASES=configure install postinst
+DEFINED_PHASES=configure install
 DEPEND=>=media-libs/alsa-lib-1.2.1 libsamplerate? ( media-libs/libsamplerate ) ncurses? ( >=sys-libs/ncurses-5.7-r7:0= ) bat? ( sci-libs/fftw:= ) doc? ( app-text/xmlto )
 DESCRIPTION=Advanced Linux Sound Architecture Utils (alsactl, alsamixer, etc.)
 EAPI=7
@@ -11,4 +11,4 @@
 SLOT=0.9
 SRC_URI=https://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.1.tar.bz2
 _eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
-_md5_=ff13a0b0d0e0db1ff2b2f466de7d7854
+_md5_=fe007ef3effbd90ff5cf2d0170e001a4
diff --git a/metadata/md5-cache/media-sound/audio_streams-0.1.0-r25 b/metadata/md5-cache/media-sound/audio_streams-0.1.0-r25
deleted file mode 100644
index 8074c84..0000000
--- a/metadata/md5-cache/media-sound/audio_streams-0.1.0-r25
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/sync:= dev-rust/sys_util:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Crate provides a basic interface for playing audio.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/audio_streams
-IUSE=test cros_host cros_workon_tree_c66946a62c2f2eee94bfa0cd0f0c03b4da475040 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<=media-sound/audio_streams-0.1.0-r7
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r25
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b7c1851ac136ba15d2554d69c557280e
diff --git a/metadata/md5-cache/media-sound/audio_streams-0.1.0-r28 b/metadata/md5-cache/media-sound/audio_streams-0.1.0-r28
new file mode 100644
index 0000000..e132c9e
--- /dev/null
+++ b/metadata/md5-cache/media-sound/audio_streams-0.1.0-r28
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/sync:= dev-rust/sys_util:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Crate provides a basic interface for playing audio.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/audio_streams
+IUSE=test cros_host cros_workon_tree_e5a0ad587f560a2b9eb5321c3eaff76ed3cf5626 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-rust/sync:= dev-rust/sys_util:= !<=media-sound/audio_streams-0.1.0-r7
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r28
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=08dcb51166d5e93fe9c312a157f1c218
diff --git a/metadata/md5-cache/media-sound/audio_streams-9999 b/metadata/md5-cache/media-sound/audio_streams-9999
index d8a2701..475bcc0 100644
--- a/metadata/md5-cache/media-sound/audio_streams-9999
+++ b/metadata/md5-cache/media-sound/audio_streams-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND=dev-rust/sync:= dev-rust/sys_util:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Crate provides a basic interface for playing audio.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/audio_streams
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=!<=media-sound/audio_streams-0.1.0-r7
+RDEPEND=dev-rust/sync:= dev-rust/sys_util:= !<=media-sound/audio_streams-0.1.0-r7
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=855721b15345e8397feb4d1585496f5c
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=59cef9e41180b71d364ae892505e2137
diff --git a/metadata/md5-cache/media-sound/cras-sys-0.1.0-r29 b/metadata/md5-cache/media-sound/cras-sys-0.1.0-r29
deleted file mode 100644
index a987467..0000000
--- a/metadata/md5-cache/media-sound/cras-sys-0.1.0-r29
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/data_model:= media-sound/audio_streams:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Crate for CRAS C-structures generated by bindgen
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/cras-sys
-IUSE=test cros_host cros_workon_tree_43eadf441b4d60610d3a026d893e7cb221bae3d3 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<=media-sound/cras-sys-0.1.0-r10
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r29
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=59fee5fe7900d3d0e801a00222ce275f
diff --git a/metadata/md5-cache/media-sound/cras-sys-0.1.0-r48 b/metadata/md5-cache/media-sound/cras-sys-0.1.0-r48
new file mode 100644
index 0000000..7602198
--- /dev/null
+++ b/metadata/md5-cache/media-sound/cras-sys-0.1.0-r48
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/data_model:= media-sound/audio_streams:= virtual/bindgen:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Crate for CRAS C-structures generated by bindgen
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/cras-sys
+IUSE=test cros_host cros_workon_tree_6c8939340ea089d520f7153d66be9e8690b5d594_269d67a227b2d3fedb9eaef0322bd0c6f986b9da cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-rust/data_model:= media-sound/audio_streams:= virtual/bindgen:= !<=media-sound/cras-sys-0.1.0-r10
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r48
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2d8d640f82ad781f7ca4895b84caa70b
diff --git a/metadata/md5-cache/media-sound/cras-sys-9999 b/metadata/md5-cache/media-sound/cras-sys-9999
index 0e4129e..b2bf198 100644
--- a/metadata/md5-cache/media-sound/cras-sys-9999
+++ b/metadata/md5-cache/media-sound/cras-sys-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/data_model:= media-sound/audio_streams:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/data_model:= media-sound/audio_streams:= virtual/bindgen:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Crate for CRAS C-structures generated by bindgen
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/cras-sys
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=!<=media-sound/cras-sys-0.1.0-r10
+RDEPEND=dev-rust/data_model:= media-sound/audio_streams:= virtual/bindgen:= !<=media-sound/cras-sys-0.1.0-r10
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=603044612a16422c0e19b4b6d168a2c6
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6b4d135f3a00904651b6018d633841b2
diff --git a/metadata/md5-cache/media-sound/cras_bench-0.0.1-r3 b/metadata/md5-cache/media-sound/cras_bench-0.0.1-r3
new file mode 100644
index 0000000..e7027b3
--- /dev/null
+++ b/metadata/md5-cache/media-sound/cras_bench-0.0.1-r3
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git >=dev-util/bazel-0.20
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=media-libs/alsa-lib
+DESCRIPTION=Performance benchmarks for ChromeOS audio server
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/
+IUSE=cros_host cros_workon_tree_e62b24ca0c95c5db285704697a8d941cbdbb742c
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=media-libs/alsa-lib
+SLOT=0/0.0.1-r3
+SRC_URI=https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip -> bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip https://github.com/google/benchmark/archive/refs/tags/v1.5.5.tar.gz -> google-benchmark-1.5.5.tar.gz
+_eclasses_=bazel	754d004c54b3ac8a286975d232cbab17	cros-bazel	f8f1ddf279e2cce6ed2320142f477dbf	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=458c85e3e2d57d7437f38a0605b91fa6
diff --git a/metadata/md5-cache/media-sound/cras_bench-9999 b/metadata/md5-cache/media-sound/cras_bench-9999
new file mode 100644
index 0000000..234f4b8
--- /dev/null
+++ b/metadata/md5-cache/media-sound/cras_bench-9999
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git >=dev-util/bazel-0.20
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=media-libs/alsa-lib
+DESCRIPTION=Performance benchmarks for ChromeOS audio server
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/
+IUSE=cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=media-libs/alsa-lib
+SLOT=0/9999
+SRC_URI=https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip -> bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip https://github.com/google/benchmark/archive/refs/tags/v1.5.5.tar.gz -> google-benchmark-1.5.5.tar.gz
+_eclasses_=bazel	754d004c54b3ac8a286975d232cbab17	cros-bazel	f8f1ddf279e2cce6ed2320142f477dbf	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4a6d3e9c8fc59ef1a5202b5bf7abb9a0
diff --git a/metadata/md5-cache/media-sound/cras_rust-0.1.0-r5 b/metadata/md5-cache/media-sound/cras_rust-0.1.0-r5
deleted file mode 100644
index 1a5c2d8f..0000000
--- a/metadata/md5-cache/media-sound/cras_rust-0.1.0-r5
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=dev-rust/libc:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Rust code which is used within cras
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/src/server/rust
-IUSE=test cros_host cros_workon_tree_56f51edbec0ccbbca4e4cdd4694e849e4ae48f42 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r5
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=608385bbb1a8528f7a8c4509860bf9ea
diff --git a/metadata/md5-cache/media-sound/cras_rust-0.1.0-r6 b/metadata/md5-cache/media-sound/cras_rust-0.1.0-r6
new file mode 100644
index 0000000..8678e66
--- /dev/null
+++ b/metadata/md5-cache/media-sound/cras_rust-0.1.0-r6
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/libc:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust code which is used within cras
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/src/server/rust
+IUSE=test cros_host cros_workon_tree_56f51edbec0ccbbca4e4cdd4694e849e4ae48f42 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=dev-rust/libc:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r6
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=024e8a45ef3432334ef0115087632eac
diff --git a/metadata/md5-cache/media-sound/cras_rust-9999 b/metadata/md5-cache/media-sound/cras_rust-9999
index e625ec7..2b04f3f 100644
--- a/metadata/md5-cache/media-sound/cras_rust-9999
+++ b/metadata/md5-cache/media-sound/cras_rust-9999
@@ -1,14 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND=dev-rust/libc:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust code which is used within cras
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/src/server/rust
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
+RDEPEND=dev-rust/libc:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=59658920aeb7347eabb3a09fb58a5b37
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=61e3a1fa4570836fd8e57269463a9ea2
diff --git a/metadata/md5-cache/media-sound/cras_tests-0.1.0-r25 b/metadata/md5-cache/media-sound/cras_tests-0.1.0-r25
deleted file mode 100644
index d93a61d..0000000
--- a/metadata/md5-cache/media-sound/cras_tests-0.1.0-r25
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/getopts-0.2.18:= !>=dev-rust/getopts-0.3 dev-rust/hound:= media-sound/audio_streams:= media-sound/libcras:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Rust version cras test client
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/cras_tests
-IUSE=test cros_host cros_workon_tree_aec12bcc055872282be343c4f5d67fa9f0a60927 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<=media-sound/cras_tests-0.1.0-r12
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r25
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=21672588a070da38a90a32d7e2a7cb3d
diff --git a/metadata/md5-cache/media-sound/cras_tests-0.1.0-r38 b/metadata/md5-cache/media-sound/cras_tests-0.1.0-r38
new file mode 100644
index 0000000..6a65fc1
--- /dev/null
+++ b/metadata/md5-cache/media-sound/cras_tests-0.1.0-r38
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= >=dev-rust/getopts-0.2.18:= <dev-rust/getopts-0.3 dev-rust/hound:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 media-sound/audio_streams:= media-sound/libcras:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust version cras test client
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/cras_tests
+IUSE=test cros_host cros_workon_tree_494f6b2f84535576baf70eb7303bb7a60f8f94da_4df4730b8dde3019b84b90e0b6785d53ae1480c8 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=!<=media-sound/cras_tests-0.1.0-r12
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r38
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8392f32edd6bc85d1b61c3c1dc4fa13c
diff --git a/metadata/md5-cache/media-sound/cras_tests-9999 b/metadata/md5-cache/media-sound/cras_tests-9999
index 92cee8f..bf6802b 100644
--- a/metadata/md5-cache/media-sound/cras_tests-9999
+++ b/metadata/md5-cache/media-sound/cras_tests-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/getopts-0.2.18:= !>=dev-rust/getopts-0.3 dev-rust/hound:= media-sound/audio_streams:= media-sound/libcras:= >=virtual/rust-1.39.0:=
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/chromeos-dbus-bindings:= =dev-rust/dbus-0.8*:= >=dev-rust/getopts-0.2.18:= <dev-rust/getopts-0.3 dev-rust/hound:= dev-rust/sys_util:= >=dev-rust/thiserror-1.0.20:= <dev-rust/thiserror-2.0 media-sound/audio_streams:= media-sound/libcras:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust version cras test client
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/cras_tests
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=!<=media-sound/cras_tests-0.1.0-r12
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ae0c95705148335cb562378cea6e9596
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7364cccfb44136a299cb40a18de5a8ba
diff --git a/metadata/md5-cache/media-sound/cros_alsa-0.1.0-r2 b/metadata/md5-cache/media-sound/cros_alsa-0.1.0-r2
deleted file mode 100644
index 519269f..0000000
--- a/metadata/md5-cache/media-sound/cros_alsa-0.1.0-r2
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/alsa-sys-0.2.0:= <dev-rust/alsa-sys-0.3.0 >=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= dev-rust/remain:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Rust version alsa-lib
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cros_alsa
-IUSE=test cros_host cros_workon_tree_8df34d11e8b707d596006d273308a7bc953387a6 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r2
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ac818f08b3eba75abfa4ec5c1a5b42a8
diff --git a/metadata/md5-cache/media-sound/cros_alsa-0.1.0-r5 b/metadata/md5-cache/media-sound/cros_alsa-0.1.0-r5
new file mode 100644
index 0000000..c0033aa
--- /dev/null
+++ b/metadata/md5-cache/media-sound/cros_alsa-0.1.0-r5
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/alsa-sys-0.2.0:= <dev-rust/alsa-sys-0.3.0 >=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= dev-rust/remain:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust version alsa-lib
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cros_alsa
+IUSE=test cros_host cros_workon_tree_527e35f492a820d8d3f1fd5c639d68664b7fcbd9 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=>=dev-rust/alsa-sys-0.2.0:= <dev-rust/alsa-sys-0.3.0 >=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= dev-rust/remain:=
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r5
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=07717dde82b5d143c2e921fa139ccb1d
diff --git a/metadata/md5-cache/media-sound/cros_alsa-9999 b/metadata/md5-cache/media-sound/cros_alsa-9999
index cced4b6..da4e4d8 100644
--- a/metadata/md5-cache/media-sound/cros_alsa-9999
+++ b/metadata/md5-cache/media-sound/cros_alsa-9999
@@ -1,14 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/alsa-sys-0.2.0:= <dev-rust/alsa-sys-0.3.0 >=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= dev-rust/remain:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust version alsa-lib
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cros_alsa
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
+RDEPEND=>=dev-rust/alsa-sys-0.2.0:= <dev-rust/alsa-sys-0.3.0 >=dev-rust/libc-0.2.65:= <dev-rust/libc-0.3 =dev-rust/proc-macro2-1*:= =dev-rust/quote-1*:= =dev-rust/syn-1*:= dev-rust/remain:=
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6e6ad8e2e49121dfd02ba17c3fe9e039
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=55c16c409ed023fa9075850e7fd7a1d2
diff --git a/metadata/md5-cache/media-sound/libcras-0.1.0-r51 b/metadata/md5-cache/media-sound/libcras-0.1.0-r51
deleted file mode 100644
index f6b1066..0000000
--- a/metadata/md5-cache/media-sound/libcras-0.1.0-r51
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/libc-0.2.44:= dev-rust/data_model:= dev-rust/sys_util:= media-sound/audio_streams:= media-sound/cras-sys:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Rust version libcras
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/libcras
-IUSE=test cros_host cros_workon_tree_631d1b754152eafdfc9ebdb24d1fa6cd55389879 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!<=media-sound/libcras-0.1.0-r21
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r51
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=01d372605db7539f3d3657ccd3a27f50
diff --git a/metadata/md5-cache/media-sound/libcras-0.1.0-r56 b/metadata/md5-cache/media-sound/libcras-0.1.0-r56
new file mode 100644
index 0000000..4be935f
--- /dev/null
+++ b/metadata/md5-cache/media-sound/libcras-0.1.0-r56
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/libc-0.2.44:= dev-rust/data_model:= dev-rust/sys_util:= media-sound/audio_streams:= media-sound/cras-sys:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Rust version libcras
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/libcras
+IUSE=test cros_host cros_workon_tree_ec4dd0d4955052d5311671f6724e123d6753116c cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=>=dev-rust/libc-0.2.44:= dev-rust/data_model:= dev-rust/sys_util:= media-sound/audio_streams:= media-sound/cras-sys:= !<=media-sound/libcras-0.1.0-r21
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r56
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3f57031a94f2443bad367d1de85b4029
diff --git a/metadata/md5-cache/media-sound/libcras-9999 b/metadata/md5-cache/media-sound/libcras-9999
index 129d471..47a1cc4 100644
--- a/metadata/md5-cache/media-sound/libcras-9999
+++ b/metadata/md5-cache/media-sound/libcras-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/libc-0.2.44:= dev-rust/data_model:= dev-rust/sys_util:= media-sound/audio_streams:= media-sound/cras-sys:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Rust version libcras
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/cras/client/libcras
-IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=!<=media-sound/libcras-0.1.0-r21
+RDEPEND=>=dev-rust/libc-0.2.44:= dev-rust/data_model:= dev-rust/sys_util:= media-sound/audio_streams:= media-sound/cras-sys:= !<=media-sound/libcras-0.1.0-r21
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=1c5ada3e4c5e2d93999ad42b1d29b580
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=99c1ce46799dfbbdc43c55475caa6a0e
diff --git a/metadata/md5-cache/media-sound/sof_sys-0.1.0-r2 b/metadata/md5-cache/media-sound/sof_sys-0.1.0-r2
new file mode 100644
index 0000000..2a4467c
--- /dev/null
+++ b/metadata/md5-cache/media-sound/sof_sys-0.1.0-r2
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Crate for SOF C-structures generated by bindgen
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/sof_sys
+IUSE=test cros_host cros_workon_tree_722de0d042e40080ac592dcac92d934b39597d43 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r2
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d87cc372fe9b1ada64ff5c711cdf96ef
diff --git a/metadata/md5-cache/media-sound/sof_sys-9999 b/metadata/md5-cache/media-sound/sof_sys-9999
new file mode 100644
index 0000000..3cec61e
--- /dev/null
+++ b/metadata/md5-cache/media-sound/sof_sys-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=virtual/rust-1.39.0:=
+DESCRIPTION=Crate for SOF C-structures generated by bindgen
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/sof_sys
+IUSE=test cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=~*
+LICENSE=BSD-Google
+PROPERTIES=live
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=856a9c060f6cdce2d7519d72f19d7ed2
diff --git a/metadata/md5-cache/media-sound/sound_card_init-0.1.0-r17 b/metadata/md5-cache/media-sound/sound_card_init-0.1.0-r17
new file mode 100644
index 0000000..d9a4263
--- /dev/null
+++ b/metadata/md5-cache/media-sound/sound_card_init-0.1.0-r17
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=dev-rust/cc:= dev-rust/getopts:= dev-rust/sys_util:= dev-rust/serde_yaml:= dev-rust/remain:= media-sound/audio_streams:= media-sound/cros_alsa:= media-sound/libcras:= media-sound/sof_sys:= >=virtual/rust-1.39.0:= sys-apps/baselayout
+DESCRIPTION=Sound Card Initializer
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/sound_card_init
+IUSE=cros_host cros_workon_tree_bbabf117ce1fac3718c2d641b9e289fddde8cbae cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=-* amd64
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=sys-apps/baselayout
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/0.1.0-r17
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=ca65a7c1c447948af4e79556899de55d
diff --git a/metadata/md5-cache/media-sound/sound_card_init-0.1.0-r9 b/metadata/md5-cache/media-sound/sound_card_init-0.1.0-r9
deleted file mode 100644
index b69f8e2..0000000
--- a/metadata/md5-cache/media-sound/sound_card_init-0.1.0-r9
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
-DEPEND=dev-rust/cc:= dev-rust/getopts:= dev-rust/sys_util:= dev-rust/serde_yaml:= dev-rust/remain:= media-sound/cros_alsa:= media-sound/audio_streams:= media-sound/libcras:= >=virtual/rust-1.39.0:= sys-apps/baselayout
-DESCRIPTION=Sound Card Initializer
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/sound_card_init
-IUSE=cros_host cros_workon_tree_489dc9b5be888f7a84485953d6560d4f374b3b12 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=-* amd64
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=sys-apps/baselayout
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/0.1.0-r9
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=7dd37fe9f6f5bc00f1f7c6bf4c16dbc5
diff --git a/metadata/md5-cache/media-sound/sound_card_init-9999 b/metadata/md5-cache/media-sound/sound_card_init-9999
index a349564..cb78dd3 100644
--- a/metadata/md5-cache/media-sound/sound_card_init-9999
+++ b/metadata/md5-cache/media-sound/sound_card_init-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
-DEPEND=dev-rust/cc:= dev-rust/getopts:= dev-rust/sys_util:= dev-rust/serde_yaml:= dev-rust/remain:= media-sound/cros_alsa:= media-sound/audio_streams:= media-sound/libcras:= >=virtual/rust-1.39.0:= sys-apps/baselayout
+DEPEND=dev-rust/cc:= dev-rust/getopts:= dev-rust/sys_util:= dev-rust/serde_yaml:= dev-rust/remain:= media-sound/audio_streams:= media-sound/cros_alsa:= media-sound/libcras:= media-sound/sof_sys:= >=virtual/rust-1.39.0:= sys-apps/baselayout
 DESCRIPTION=Sound Card Initializer
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/adhd/+/HEAD/sound_card_init
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=-* ~amd64
 LICENSE=BSD-Google
 PROPERTIES=live
 RDEPEND=sys-apps/baselayout
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=6275269df33fdfbe7a757b72766b583a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=08624b2414645366ed604b5ee4368377
diff --git a/metadata/md5-cache/media-video/libva-utils-2.11.1 b/metadata/md5-cache/media-video/libva-utils-2.11.1
new file mode 100644
index 0000000..468ff01
--- /dev/null
+++ b/metadata/md5-cache/media-video/libva-utils-2.11.1
@@ -0,0 +1,15 @@
+BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815
+DEFINED_PHASES=configure prepare
+DEPEND=>=x11-libs/libva-2.0.0:= >=x11-libs/libdrm-2.4 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Collection of utilities and tests for VA-API
+EAPI=7
+HOMEPAGE=https://01.org/linuxmedia/vaapi
+IUSE=test
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=x11-libs/libva-2.0.0:= >=x11-libs/libdrm-2.4
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://github.com/intel/libva-utils/archive/2.11.1.tar.gz -> libva-utils-2.11.1.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ee72d9061fcde49a7ea5ff70f2dbd20e
diff --git a/metadata/md5-cache/media-video/libva-utils-2.11.1-r1 b/metadata/md5-cache/media-video/libva-utils-2.11.1-r1
new file mode 100644
index 0000000..468ff01
--- /dev/null
+++ b/metadata/md5-cache/media-video/libva-utils-2.11.1-r1
@@ -0,0 +1,15 @@
+BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815
+DEFINED_PHASES=configure prepare
+DEPEND=>=x11-libs/libva-2.0.0:= >=x11-libs/libdrm-2.4 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Collection of utilities and tests for VA-API
+EAPI=7
+HOMEPAGE=https://01.org/linuxmedia/vaapi
+IUSE=test
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=x11-libs/libva-2.0.0:= >=x11-libs/libdrm-2.4
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://github.com/intel/libva-utils/archive/2.11.1.tar.gz -> libva-utils-2.11.1.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ee72d9061fcde49a7ea5ff70f2dbd20e
diff --git a/metadata/md5-cache/media-video/libva-utils-2.9.1 b/metadata/md5-cache/media-video/libva-utils-2.9.1
deleted file mode 100644
index e4223ef..0000000
--- a/metadata/md5-cache/media-video/libva-utils-2.9.1
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815
-DEFINED_PHASES=configure prepare
-DEPEND=>=x11-libs/libva-2.0.0:= >=x11-libs/libdrm-2.4 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Collection of utilities and tests for VA-API
-EAPI=7
-HOMEPAGE=https://01.org/linuxmedia/vaapi
-IUSE=test
-KEYWORDS=*
-LICENSE=MIT
-RDEPEND=>=x11-libs/libva-2.0.0:= >=x11-libs/libdrm-2.4
-RESTRICT=!test? ( test )
-SLOT=0
-SRC_URI=https://github.com/intel/libva-utils/archive/2.9.1.tar.gz -> libva-utils-2.9.1.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b80b20ed474a82d7f5b3d8dedec3c737
diff --git a/metadata/md5-cache/media-video/libva-utils-2.9.1-r3 b/metadata/md5-cache/media-video/libva-utils-2.9.1-r3
deleted file mode 100644
index e4223ef..0000000
--- a/metadata/md5-cache/media-video/libva-utils-2.9.1-r3
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815
-DEFINED_PHASES=configure prepare
-DEPEND=>=x11-libs/libva-2.0.0:= >=x11-libs/libdrm-2.4 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Collection of utilities and tests for VA-API
-EAPI=7
-HOMEPAGE=https://01.org/linuxmedia/vaapi
-IUSE=test
-KEYWORDS=*
-LICENSE=MIT
-RDEPEND=>=x11-libs/libva-2.0.0:= >=x11-libs/libdrm-2.4
-RESTRICT=!test? ( test )
-SLOT=0
-SRC_URI=https://github.com/intel/libva-utils/archive/2.9.1.tar.gz -> libva-utils-2.9.1.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b80b20ed474a82d7f5b3d8dedec3c737
diff --git a/metadata/md5-cache/net-dialup/ppp-2.4.7-r9 b/metadata/md5-cache/net-dialup/ppp-2.4.7-r9
deleted file mode 100644
index 7d05c27..0000000
--- a/metadata/md5-cache/net-dialup/ppp-2.4.7-r9
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile install postinst prepare setup
-DEPEND=activefilter? ( net-libs/libpcap ) atm? ( net-dialup/linux-atm ) pam? ( virtual/pam ) gtk? ( x11-libs/gtk+:2 ) eap-tls? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:= ) ) virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=Point-to-Point Protocol (PPP)
-EAPI=6
-HOMEPAGE=https://ppp.samba.org/
-IUSE=activefilter atm dhcp eap-tls gtk ipv6 libressl pam radius kernel_linux
-KEYWORDS=*
-LICENSE=BSD GPL-2
-PDEPEND=net-dialup/ppp-scripts
-RDEPEND=activefilter? ( net-libs/libpcap ) atm? ( net-dialup/linux-atm ) pam? ( virtual/pam ) gtk? ( x11-libs/gtk+:2 ) eap-tls? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:= ) ) sys-apps/baselayout
-SLOT=0/2.4.7
-SRC_URI=https://download.samba.org/pub/ppp/ppp-2.4.7.tar.gz https://dev.gentoo.org/~polynomial-c/ppp-2.4.7-patches-6.tar.xz http://www.netservers.net.uk/gpl/ppp-dhcpc.tgz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	pam	3f746974e1cc47cabe3bd488c08cdc8e	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=f3129482e0624d535d70366488fab45a
diff --git a/metadata/md5-cache/net-dialup/ppp-2.4.9-r3 b/metadata/md5-cache/net-dialup/ppp-2.4.9-r3
new file mode 100644
index 0000000..f86d9f5
--- /dev/null
+++ b/metadata/md5-cache/net-dialup/ppp-2.4.9-r3
@@ -0,0 +1,15 @@
+BDEPEND=virtual/pkgconfig
+DEFINED_PHASES=compile install postinst prepare setup
+DEPEND=activefilter? ( net-libs/libpcap ) atm? ( net-dialup/linux-atm ) pam? ( sys-libs/pam ) gtk? ( x11-libs/gtk+:2 ) !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:= ) sys-apps/baselayout
+DESCRIPTION=Point-to-Point Protocol (PPP)
+EAPI=7
+HOMEPAGE=https://ppp.samba.org/
+IUSE=activefilter atm dhcp eap-tls gtk ipv6 libressl pam radius kernel_linux
+KEYWORDS=*
+LICENSE=BSD GPL-2
+PDEPEND=net-dialup/ppp-scripts
+RDEPEND=activefilter? ( net-libs/libpcap ) atm? ( net-dialup/linux-atm ) pam? ( sys-libs/pam ) gtk? ( x11-libs/gtk+:2 ) !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:= ) !<net-misc/netifrc-0.7.1-r2 sys-apps/baselayout
+SLOT=0/2.4.9
+SRC_URI=https://github.com/paulusmack/ppp/archive/ppp-2.4.9.tar.gz https://dev.gentoo.org/~polynomial-c/ppp-2.4.9-patches-02.tar.xz http://www.netservers.net.uk/gpl/ppp-dhcpc.tgz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	multilib	2477ebe553d3e4d2c606191fe6c33602	pam	3f746974e1cc47cabe3bd488c08cdc8e	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=40e0ae3f144edee73f292576d454f333
diff --git a/metadata/md5-cache/net-dialup/xl2tpd-1.3.12-r1 b/metadata/md5-cache/net-dialup/xl2tpd-1.3.12-r2
similarity index 100%
rename from metadata/md5-cache/net-dialup/xl2tpd-1.3.12-r1
rename to metadata/md5-cache/net-dialup/xl2tpd-1.3.12-r2
diff --git a/metadata/md5-cache/net-dns/avahi-0.7-r5 b/metadata/md5-cache/net-dns/avahi-0.7-r5
deleted file mode 100644
index bd98c20..0000000
--- a/metadata/md5-cache/net-dns/avahi-0.7-r5
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install postinst preinst prepare setup test
-DEPEND=dev-libs/libdaemon dev-libs/expat dev-libs/glib:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] gdbm? ( sys-libs/gdbm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) qt5? ( dev-qt/qtcore:5 ) gtk? ( x11-libs/gtk+:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gtk3? ( x11-libs/gtk+:3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dbus? ( sys-apps/dbus[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) kernel_linux? ( sys-libs/libcap ) introspection? ( dev-libs/gobject-introspection:= ) mono? ( dev-lang/mono gtk? ( dev-dotnet/gtk-sharp ) ) python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dbus? ( dev-python/dbus-python[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) introspection? ( dev-python/pygobject:3[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) ) bookmarks? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] >=dev-python/twisted-16.0.0[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) doc? ( app-doc/doxygen ) app-doc/xmltoman dev-util/intltool virtual/pkgconfig[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 =sys-devel/automake-1.11* >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=System which facilitates service discovery on a local network
-EAPI=6
-HOMEPAGE=http://avahi.org/
-IUSE=autoipd bookmarks dbus doc fuzzer gdbm gtk gtk3 howl-compat +introspection ipv6 kernel_linux mdnsresponder-compat mono nls python qt5 selinux test fuzzer asan coverage fuzzer msan tsan ubsan abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 python_targets_python2_7
-KEYWORDS=*
-LICENSE=LGPL-2.1
-RDEPEND=dev-libs/libdaemon dev-libs/expat dev-libs/glib:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] gdbm? ( sys-libs/gdbm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) qt5? ( dev-qt/qtcore:5 ) gtk? ( x11-libs/gtk+:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gtk3? ( x11-libs/gtk+:3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dbus? ( sys-apps/dbus[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) kernel_linux? ( sys-libs/libcap ) introspection? ( dev-libs/gobject-introspection:= ) mono? ( dev-lang/mono gtk? ( dev-dotnet/gtk-sharp ) ) python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dbus? ( dev-python/dbus-python[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) introspection? ( dev-python/pygobject:3[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) ) bookmarks? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] >=dev-python/twisted-16.0.0[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) howl-compat? ( !net-misc/howl ) mdnsresponder-compat? ( !net-misc/mDNSResponder ) selinux? ( sec-policy/selinux-avahi ) sys-apps/baselayout
-REQUIRED_USE=python? ( dbus gdbm || ( python_targets_python2_7 ) ) mono? ( dbus ) howl-compat? ( dbus ) mdnsresponder-compat? ( dbus )
-SLOT=0
-SRC_URI=https://github.com/lathiat/avahi/archive/v0.7.tar.gz -> avahi-0.7.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	mono-env	59ca1177366cc9e14521d3501e9bb281	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=192707c15b05b62862e5b056b651d5b7
diff --git a/metadata/md5-cache/net-dns/avahi-0.8 b/metadata/md5-cache/net-dns/avahi-0.8
new file mode 100644
index 0000000..6465f88
--- /dev/null
+++ b/metadata/md5-cache/net-dns/avahi-0.8
@@ -0,0 +1,16 @@
+BDEPEND=dev-util/glib-utils doc? ( app-doc/doxygen ) app-doc/xmltoman dev-util/intltool virtual/pkgconfig >=app-portage/elt-patches-20170815 virtual/pkgconfig
+DEFINED_PHASES=compile configure install postinst preinst prepare setup test
+DEPEND=dev-libs/libdaemon dev-libs/libevent:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/expat dev-libs/glib:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] gdbm? ( sys-libs/gdbm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) qt5? ( dev-qt/qtcore:5 ) gtk2? ( x11-libs/gtk+:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gtk? ( x11-libs/gtk+:3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dbus? ( sys-apps/dbus[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) kernel_linux? ( sys-libs/libcap ) introspection? ( dev-libs/gobject-introspection:= ) mono? ( dev-lang/mono gtk2? ( dev-dotnet/gtk-sharp:2 ) ) python? ( python_targets_python3_7? ( dev-lang/python:3.7[gdbm] ) python_targets_python3_8? ( dev-lang/python:3.8[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dbus? ( dev-python/dbus-python[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) introspection? ( dev-python/pygobject:3[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) ) bookmarks? ( python_targets_python3_7? ( dev-lang/python:3.7[gdbm] ) python_targets_python3_8? ( dev-lang/python:3.8[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/twisted-16.0.0[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout
+DESCRIPTION=System which facilitates service discovery on a local network
+EAPI=7
+HOMEPAGE=http://avahi.org/
+IUSE=autoipd bookmarks dbus doc fuzzer gdbm gtk gtk2 howl-compat +introspection ipv6 kernel_linux mdnsresponder-compat mono nls python qt5 selinux systemd test fuzzer asan coverage fuzzer msan tsan ubsan abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 python_targets_python3_7 python_targets_python3_8
+KEYWORDS=*
+LICENSE=LGPL-2.1
+RDEPEND=dev-libs/libdaemon dev-libs/libevent:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/expat dev-libs/glib:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] gdbm? ( sys-libs/gdbm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) qt5? ( dev-qt/qtcore:5 ) gtk2? ( x11-libs/gtk+:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gtk? ( x11-libs/gtk+:3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dbus? ( sys-apps/dbus[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) kernel_linux? ( sys-libs/libcap ) introspection? ( dev-libs/gobject-introspection:= ) mono? ( dev-lang/mono gtk2? ( dev-dotnet/gtk-sharp:2 ) ) python? ( python_targets_python3_7? ( dev-lang/python:3.7[gdbm] ) python_targets_python3_8? ( dev-lang/python:3.8[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dbus? ( dev-python/dbus-python[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) introspection? ( dev-python/pygobject:3[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) ) bookmarks? ( python_targets_python3_7? ( dev-lang/python:3.7[gdbm] ) python_targets_python3_8? ( dev-lang/python:3.8[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/twisted-16.0.0[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) selinux? ( sec-policy/selinux-avahi ) sys-apps/baselayout
+REQUIRED_USE=python? ( dbus gdbm || ( python_targets_python3_7 python_targets_python3_8 ) ) mono? ( dbus ) howl-compat? ( dbus ) mdnsresponder-compat? ( dbus ) systemd? ( dbus )
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://github.com/lathiat/avahi/archive/v0.8.tar.gz -> avahi-0.8.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	mono-env	59ca1177366cc9e14521d3501e9bb281	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=af2a9067af406bbb2170af38b7f2e9bd
diff --git a/metadata/md5-cache/net-dns/avahi-0.8-r2 b/metadata/md5-cache/net-dns/avahi-0.8-r2
new file mode 100644
index 0000000..6465f88
--- /dev/null
+++ b/metadata/md5-cache/net-dns/avahi-0.8-r2
@@ -0,0 +1,16 @@
+BDEPEND=dev-util/glib-utils doc? ( app-doc/doxygen ) app-doc/xmltoman dev-util/intltool virtual/pkgconfig >=app-portage/elt-patches-20170815 virtual/pkgconfig
+DEFINED_PHASES=compile configure install postinst preinst prepare setup test
+DEPEND=dev-libs/libdaemon dev-libs/libevent:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/expat dev-libs/glib:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] gdbm? ( sys-libs/gdbm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) qt5? ( dev-qt/qtcore:5 ) gtk2? ( x11-libs/gtk+:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gtk? ( x11-libs/gtk+:3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dbus? ( sys-apps/dbus[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) kernel_linux? ( sys-libs/libcap ) introspection? ( dev-libs/gobject-introspection:= ) mono? ( dev-lang/mono gtk2? ( dev-dotnet/gtk-sharp:2 ) ) python? ( python_targets_python3_7? ( dev-lang/python:3.7[gdbm] ) python_targets_python3_8? ( dev-lang/python:3.8[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dbus? ( dev-python/dbus-python[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) introspection? ( dev-python/pygobject:3[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) ) bookmarks? ( python_targets_python3_7? ( dev-lang/python:3.7[gdbm] ) python_targets_python3_8? ( dev-lang/python:3.8[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/twisted-16.0.0[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout
+DESCRIPTION=System which facilitates service discovery on a local network
+EAPI=7
+HOMEPAGE=http://avahi.org/
+IUSE=autoipd bookmarks dbus doc fuzzer gdbm gtk gtk2 howl-compat +introspection ipv6 kernel_linux mdnsresponder-compat mono nls python qt5 selinux systemd test fuzzer asan coverage fuzzer msan tsan ubsan abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 python_targets_python3_7 python_targets_python3_8
+KEYWORDS=*
+LICENSE=LGPL-2.1
+RDEPEND=dev-libs/libdaemon dev-libs/libevent:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/expat dev-libs/glib:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] gdbm? ( sys-libs/gdbm:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) qt5? ( dev-qt/qtcore:5 ) gtk2? ( x11-libs/gtk+:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) gtk? ( x11-libs/gtk+:3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dbus? ( sys-apps/dbus[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) kernel_linux? ( sys-libs/libcap ) introspection? ( dev-libs/gobject-introspection:= ) mono? ( dev-lang/mono gtk2? ( dev-dotnet/gtk-sharp:2 ) ) python? ( python_targets_python3_7? ( dev-lang/python:3.7[gdbm] ) python_targets_python3_8? ( dev-lang/python:3.8[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dbus? ( dev-python/dbus-python[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) introspection? ( dev-python/pygobject:3[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) ) bookmarks? ( python_targets_python3_7? ( dev-lang/python:3.7[gdbm] ) python_targets_python3_8? ( dev-lang/python:3.8[gdbm] ) >=dev-lang/python-exec-2:=[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/twisted-16.0.0[python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) selinux? ( sec-policy/selinux-avahi ) sys-apps/baselayout
+REQUIRED_USE=python? ( dbus gdbm || ( python_targets_python3_7 python_targets_python3_8 ) ) mono? ( dbus ) howl-compat? ( dbus ) mdnsresponder-compat? ( dbus ) systemd? ( dbus )
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://github.com/lathiat/avahi/archive/v0.8.tar.gz -> avahi-0.8.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	mono-env	59ca1177366cc9e14521d3501e9bb281	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=af2a9067af406bbb2170af38b7f2e9bd
diff --git a/metadata/md5-cache/net-firewall/conntrack-tools-1.4.4-r13 b/metadata/md5-cache/net-firewall/conntrack-tools-1.4.4-r17
similarity index 100%
rename from metadata/md5-cache/net-firewall/conntrack-tools-1.4.4-r13
rename to metadata/md5-cache/net-firewall/conntrack-tools-1.4.4-r17
diff --git a/metadata/md5-cache/net-fs/nfs-utils-1.2.3 b/metadata/md5-cache/net-fs/nfs-utils-1.2.3
deleted file mode 100644
index 03ec398..0000000
--- a/metadata/md5-cache/net-fs/nfs-utils-1.2.3
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare
-DEPEND=tcpd? ( sys-apps/tcp-wrappers ) caps? ( sys-libs/libcap ) sys-libs/e2fsprogs-libs net-nds/rpcbind net-libs/libtirpc nfsv4? ( >=dev-libs/libevent-1.0b >=net-libs/libnfsidmap-0.21-r1 kerberos? ( net-libs/librpcsecgss net-libs/libgssglue net-libs/libtirpc[kerberos] app-crypt/mit-krb5 ) ) >=sys-apps/util-linux-2.12r-r7
-DESCRIPTION=NFS client and server daemons
-EAPI=2
-HOMEPAGE=http://linux-nfs.org/
-IUSE=caps ipv6 kerberos +nfsv3 +nfsv4 tcpd elibc_glibc
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=tcpd? ( sys-apps/tcp-wrappers ) caps? ( sys-libs/libcap ) sys-libs/e2fsprogs-libs net-nds/rpcbind net-libs/libtirpc nfsv4? ( >=dev-libs/libevent-1.0b >=net-libs/libnfsidmap-0.21-r1 kerberos? ( net-libs/librpcsecgss net-libs/libgssglue net-libs/libtirpc[kerberos] app-crypt/mit-krb5 ) ) !net-nds/portmap
-RESTRICT=test
-SLOT=0
-SRC_URI=mirror://sourceforge/nfs/nfs-utils-1.2.3.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9a8f292d431a4c6e27da831f5c77cd80
diff --git a/metadata/md5-cache/net-fs/nfs-utils-1.3.4 b/metadata/md5-cache/net-fs/nfs-utils-1.3.4
deleted file mode 100644
index f71b002..0000000
--- a/metadata/md5-cache/net-fs/nfs-utils-1.3.4
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare
-DEPEND=tcpd? ( sys-apps/tcp-wrappers ) caps? ( sys-libs/libcap ) sys-libs/e2fsprogs-libs >=net-nds/rpcbind-0.2.4 net-libs/libtirpc:= libmount? ( sys-apps/util-linux ) nfsdcld? ( >=dev-db/sqlite-3.3 ) nfsv4? ( dev-libs/libevent:= >=net-libs/libnfsidmap-0.21-r1 kerberos? ( >=net-libs/libtirpc-0.2.4-r1[kerberos] app-crypt/mit-krb5 ) nfsidmap? ( >=net-libs/libnfsidmap-0.24 >=sys-apps/keyutils-1.5.9 ) ) nfsv41? ( sys-fs/lvm2 ) uuid? ( sys-apps/util-linux ) virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig
-DESCRIPTION=NFS client and server daemons
-EAPI=5
-HOMEPAGE=http://linux-nfs.org/
-IUSE=caps ipv6 kerberos +libmount nfsdcld +nfsidmap +nfsv4 nfsv41 selinux tcpd +uuid
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=tcpd? ( sys-apps/tcp-wrappers ) caps? ( sys-libs/libcap ) sys-libs/e2fsprogs-libs >=net-nds/rpcbind-0.2.4 net-libs/libtirpc:= libmount? ( sys-apps/util-linux ) nfsdcld? ( >=dev-db/sqlite-3.3 ) nfsv4? ( dev-libs/libevent:= >=net-libs/libnfsidmap-0.21-r1 kerberos? ( >=net-libs/libtirpc-0.2.4-r1[kerberos] app-crypt/mit-krb5 ) nfsidmap? ( >=net-libs/libnfsidmap-0.24 >=sys-apps/keyutils-1.5.9 ) ) nfsv41? ( sys-fs/lvm2 ) uuid? ( sys-apps/util-linux ) !net-nds/portmap !<sys-apps/openrc-0.13.9 selinux? ( sec-policy/selinux-rpc sec-policy/selinux-rpcbind )
-REQUIRED_USE=kerberos? ( nfsv4 )
-RESTRICT=test
-SLOT=0
-SRC_URI=mirror://sourceforge/nfs/nfs-utils-1.3.4.tar.bz2
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5a38c162f07775020a9a240ab316dfe3
diff --git a/metadata/md5-cache/net-fs/samba-4.11.13 b/metadata/md5-cache/net-fs/samba-4.11.13
index dd5898a..633fb38 100644
--- a/metadata/md5-cache/net-fs/samba-4.11.13
+++ b/metadata/md5-cache/net-fs/samba-4.11.13
@@ -11,5 +11,5 @@
 RESTRICT=test
 SLOT=0
 SRC_URI=mirror://samba/stable/samba-4.11.13.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	pam	3f746974e1cc47cabe3bd488c08cdc8e	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	waf-utils	0af0bf9207f47292d40e888b9687763c
-_md5_=eba983d0d44be3b5830aa0e9a16d6160
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	pam	3f746974e1cc47cabe3bd488c08cdc8e	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	waf-utils	0af0bf9207f47292d40e888b9687763c
+_md5_=d6b65e706ace276581f7e48d32acac0c
diff --git a/metadata/md5-cache/net-fs/samba-4.11.13-r5 b/metadata/md5-cache/net-fs/samba-4.11.13-r5
deleted file mode 100644
index dd5898a..0000000
--- a/metadata/md5-cache/net-fs/samba-4.11.13-r5
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare setup test
-DEPEND=>=app-arch/libarchive-3.1.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] perl? ( dev-lang/perl:= ) dev-libs/libaio[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/libbsd[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/libgcrypt:0 dev-libs/iniparser:0 dev-libs/libtasn1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/popt[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] python? ( python_single_target_python3_6? ( dev-python/subunit[python_targets_python3_6(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python_single_target_python3_7? ( dev-python/subunit[python_targets_python3_7(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python_single_target_python3_8? ( dev-python/subunit[python_targets_python3_8(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/cmocka-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=net-libs/gnutls-3.2.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] net-libs/libnsl:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-apps/attr[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/e2fsprogs-libs[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/ldb-2.0.12[ldap(+)?,python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] <sys-libs/ldb-2.1.0[ldap(+)?,python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/libcap sys-libs/ncurses:0= sys-libs/readline:0= >=sys-libs/talloc-2.2.0[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tdb-1.4.2[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tevent-0.10.0[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/zlib[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] virtual/libiconv pam? ( sys-libs/pam ) acl? ( virtual/acl ) addns? ( net-dns/bind-tools[gssapi] python_single_target_python3_6? ( dev-python/dnspython:=[python_targets_python3_6(-)] ) python_single_target_python3_7? ( dev-python/dnspython:=[python_targets_python3_7(-)] ) python_single_target_python3_8? ( dev-python/dnspython:=[python_targets_python3_8(-)] ) ) ceph? ( sys-cluster/ceph ) cluster? ( net-libs/rpcsvc-proto !dev-db/ctdb ) cups? ( net-print/cups ) debug? ( dev-util/lttng-ust ) dmapi? ( sys-apps/dmapi ) fam? ( virtual/fam ) gpg? ( app-crypt/gpgme ) json? ( dev-libs/jansson ) ldap? ( net-nds/openldap[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) snapper? ( sys-apps/dbus ) system-heimdal? ( >=app-crypt/heimdal-1.5[-ssl,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) system-mitkrb5? ( >=app-crypt/mit-krb5-1.15.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( net-dns/avahi ) python_single_target_python3_6? ( dev-lang/python:3.6[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) app-text/docbook-xsl-stylesheets dev-libs/libxslt net-libs/libtirpc[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] virtual/pkgconfig || ( net-libs/rpcsvc-proto <sys-libs/glibc-2.26[rpc(+)] ) test? ( !system-mitkrb5? ( >=sys-libs/nss_wrapper-1.1.3 >=net-dns/resolv_wrapper-1.1.4 >=net-libs/socket_wrapper-1.1.9 >=sys-libs/uid_wrapper-1.2.1 ) ) virtual/pkgconfig
-DESCRIPTION=Samba Suite Version 4
-EAPI=6
-HOMEPAGE=https://www.samba.org/
-IUSE=acl addc addns ads ceph client cluster cups debug dmapi fam gpg iprint json ldap pam perl profiling-data python quota selinux snapper syslog system-heimdal +system-mitkrb5 systemd test winbind zeroconf python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 kernel_linux
-KEYWORDS=*
-LICENSE=GPL-3
-RDEPEND=>=app-arch/libarchive-3.1.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] perl? ( dev-lang/perl:= ) dev-libs/libaio[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/libbsd[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/libgcrypt:0 dev-libs/iniparser:0 dev-libs/libtasn1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/popt[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] python? ( python_single_target_python3_6? ( dev-python/subunit[python_targets_python3_6(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python_single_target_python3_7? ( dev-python/subunit[python_targets_python3_7(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python_single_target_python3_8? ( dev-python/subunit[python_targets_python3_8(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/cmocka-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=net-libs/gnutls-3.2.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] net-libs/libnsl:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-apps/attr[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/e2fsprogs-libs[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/ldb-2.0.12[ldap(+)?,python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] <sys-libs/ldb-2.1.0[ldap(+)?,python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/libcap sys-libs/ncurses:0= sys-libs/readline:0= >=sys-libs/talloc-2.2.0[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tdb-1.4.2[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tevent-0.10.0[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/zlib[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] virtual/libiconv pam? ( sys-libs/pam ) acl? ( virtual/acl ) addns? ( net-dns/bind-tools[gssapi] python_single_target_python3_6? ( dev-python/dnspython:=[python_targets_python3_6(-)] ) python_single_target_python3_7? ( dev-python/dnspython:=[python_targets_python3_7(-)] ) python_single_target_python3_8? ( dev-python/dnspython:=[python_targets_python3_8(-)] ) ) ceph? ( sys-cluster/ceph ) cluster? ( net-libs/rpcsvc-proto !dev-db/ctdb ) cups? ( net-print/cups ) debug? ( dev-util/lttng-ust ) dmapi? ( sys-apps/dmapi ) fam? ( virtual/fam ) gpg? ( app-crypt/gpgme ) json? ( dev-libs/jansson ) ldap? ( net-nds/openldap[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) snapper? ( sys-apps/dbus ) system-heimdal? ( >=app-crypt/heimdal-1.5[-ssl,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) system-mitkrb5? ( >=app-crypt/mit-krb5-1.15.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( net-dns/avahi ) python? ( python_single_target_python3_6? ( dev-lang/python:3.6[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) ) client? ( net-fs/cifs-utils[ads?] ) selinux? ( sec-policy/selinux-samba ) !dev-perl/Parse-Yapp
-REQUIRED_USE=addc? ( python json winbind ) addns? ( python ) ads? ( acl ldap winbind ) cluster? ( ads ) gpg? ( addc ) python? ( ldap ) test? ( python ) ?? ( system-heimdal system-mitkrb5 ) ^^ ( python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 )
-RESTRICT=test
-SLOT=0
-SRC_URI=mirror://samba/stable/samba-4.11.13.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	pam	3f746974e1cc47cabe3bd488c08cdc8e	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	waf-utils	0af0bf9207f47292d40e888b9687763c
-_md5_=eba983d0d44be3b5830aa0e9a16d6160
diff --git a/metadata/md5-cache/net-fs/samba-4.11.13-r7 b/metadata/md5-cache/net-fs/samba-4.11.13-r7
new file mode 100644
index 0000000..633fb38
--- /dev/null
+++ b/metadata/md5-cache/net-fs/samba-4.11.13-r7
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=>=app-arch/libarchive-3.1.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] perl? ( dev-lang/perl:= ) dev-libs/libaio[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/libbsd[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/libgcrypt:0 dev-libs/iniparser:0 dev-libs/libtasn1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/popt[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] python? ( python_single_target_python3_6? ( dev-python/subunit[python_targets_python3_6(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python_single_target_python3_7? ( dev-python/subunit[python_targets_python3_7(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python_single_target_python3_8? ( dev-python/subunit[python_targets_python3_8(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/cmocka-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=net-libs/gnutls-3.2.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] net-libs/libnsl:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-apps/attr[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/e2fsprogs-libs[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/ldb-2.0.12[ldap(+)?,python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] <sys-libs/ldb-2.1.0[ldap(+)?,python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/libcap sys-libs/ncurses:0= sys-libs/readline:0= >=sys-libs/talloc-2.2.0[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tdb-1.4.2[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tevent-0.10.0[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/zlib[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] virtual/libiconv pam? ( sys-libs/pam ) acl? ( virtual/acl ) addns? ( net-dns/bind-tools[gssapi] python_single_target_python3_6? ( dev-python/dnspython:=[python_targets_python3_6(-)] ) python_single_target_python3_7? ( dev-python/dnspython:=[python_targets_python3_7(-)] ) python_single_target_python3_8? ( dev-python/dnspython:=[python_targets_python3_8(-)] ) ) ceph? ( sys-cluster/ceph ) cluster? ( net-libs/rpcsvc-proto !dev-db/ctdb ) cups? ( net-print/cups ) debug? ( dev-util/lttng-ust ) dmapi? ( sys-apps/dmapi ) fam? ( virtual/fam ) gpg? ( app-crypt/gpgme ) json? ( dev-libs/jansson ) ldap? ( net-nds/openldap[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) snapper? ( sys-apps/dbus ) system-heimdal? ( >=app-crypt/heimdal-1.5[-ssl,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) system-mitkrb5? ( >=app-crypt/mit-krb5-1.15.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( net-dns/avahi ) python_single_target_python3_6? ( dev-lang/python:3.6[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) app-text/docbook-xsl-stylesheets dev-libs/libxslt net-libs/libtirpc[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] virtual/pkgconfig || ( net-libs/rpcsvc-proto <sys-libs/glibc-2.26[rpc(+)] ) test? ( !system-mitkrb5? ( >=sys-libs/nss_wrapper-1.1.3 >=net-dns/resolv_wrapper-1.1.4 >=net-libs/socket_wrapper-1.1.9 >=sys-libs/uid_wrapper-1.2.1 ) ) virtual/pkgconfig
+DESCRIPTION=Samba Suite Version 4
+EAPI=6
+HOMEPAGE=https://www.samba.org/
+IUSE=acl addc addns ads ceph client cluster cups debug dmapi fam gpg iprint json ldap pam perl profiling-data python quota selinux snapper syslog system-heimdal +system-mitkrb5 systemd test winbind zeroconf python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 kernel_linux
+KEYWORDS=*
+LICENSE=GPL-3
+RDEPEND=>=app-arch/libarchive-3.1.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] perl? ( dev-lang/perl:= ) dev-libs/libaio[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/libbsd[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/libgcrypt:0 dev-libs/iniparser:0 dev-libs/libtasn1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] dev-libs/popt[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] python? ( python_single_target_python3_6? ( dev-python/subunit[python_targets_python3_6(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python_single_target_python3_7? ( dev-python/subunit[python_targets_python3_7(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python_single_target_python3_8? ( dev-python/subunit[python_targets_python3_8(-),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) >=dev-util/cmocka-1.1.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=net-libs/gnutls-3.2.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] net-libs/libnsl:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-apps/attr[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/e2fsprogs-libs[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/ldb-2.0.12[ldap(+)?,python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] <sys-libs/ldb-2.1.0[ldap(+)?,python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/libcap sys-libs/ncurses:0= sys-libs/readline:0= >=sys-libs/talloc-2.2.0[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tdb-1.4.2[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tevent-0.10.0[python?,python_single_target_python3_6(-)?,python_single_target_python3_7(-)?,python_single_target_python3_8(-)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/zlib[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] virtual/libiconv pam? ( sys-libs/pam ) acl? ( virtual/acl ) addns? ( net-dns/bind-tools[gssapi] python_single_target_python3_6? ( dev-python/dnspython:=[python_targets_python3_6(-)] ) python_single_target_python3_7? ( dev-python/dnspython:=[python_targets_python3_7(-)] ) python_single_target_python3_8? ( dev-python/dnspython:=[python_targets_python3_8(-)] ) ) ceph? ( sys-cluster/ceph ) cluster? ( net-libs/rpcsvc-proto !dev-db/ctdb ) cups? ( net-print/cups ) debug? ( dev-util/lttng-ust ) dmapi? ( sys-apps/dmapi ) fam? ( virtual/fam ) gpg? ( app-crypt/gpgme ) json? ( dev-libs/jansson ) ldap? ( net-nds/openldap[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) snapper? ( sys-apps/dbus ) system-heimdal? ( >=app-crypt/heimdal-1.5[-ssl,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) system-mitkrb5? ( >=app-crypt/mit-krb5-1.15.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) systemd? ( sys-apps/systemd:0= ) zeroconf? ( net-dns/avahi ) python? ( python_single_target_python3_6? ( dev-lang/python:3.6[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[threads(+),xml(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) ) client? ( net-fs/cifs-utils[ads?] ) selinux? ( sec-policy/selinux-samba ) !dev-perl/Parse-Yapp
+REQUIRED_USE=addc? ( python json winbind ) addns? ( python ) ads? ( acl ldap winbind ) cluster? ( ads ) gpg? ( addc ) python? ( ldap ) test? ( python ) ?? ( system-heimdal system-mitkrb5 ) ^^ ( python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 )
+RESTRICT=test
+SLOT=0
+SRC_URI=mirror://samba/stable/samba-4.11.13.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	pam	3f746974e1cc47cabe3bd488c08cdc8e	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	waf-utils	0af0bf9207f47292d40e888b9687763c
+_md5_=d6b65e706ace276581f7e48d32acac0c
diff --git a/metadata/md5-cache/net-fs/sshfs-2.10-r4 b/metadata/md5-cache/net-fs/sshfs-2.10-r4
index 2c84428..4201c27 100644
--- a/metadata/md5-cache/net-fs/sshfs-2.10-r4
+++ b/metadata/md5-cache/net-fs/sshfs-2.10-r4
@@ -9,5 +9,5 @@
 RDEPEND=>=sys-fs/fuse-2.6.0_pre3:0 >=dev-libs/glib-2.4.2 >=net-misc/openssh-4.4
 SLOT=0
 SRC_URI=https://github.com/libfuse/sshfs/releases/download/sshfs-2.10/sshfs-2.10.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=4cabcfb79f8138cd6d1322a20639de1d
diff --git a/metadata/md5-cache/net-libs/grpc-1.16.1 b/metadata/md5-cache/net-libs/grpc-1.16.1
index 7dd0a21..51f8a76 100644
--- a/metadata/md5-cache/net-libs/grpc-1.16.1
+++ b/metadata/md5-cache/net-libs/grpc-1.16.1
@@ -9,5 +9,5 @@
 RDEPEND=>=dev-libs/openssl-1.0.2:0=[-bindist] !dev-libs/grpc dev-libs/protobuf:= net-dns/c-ares:= sys-libs/zlib:= systemtap? ( dev-util/systemtap )
 SLOT=0
 SRC_URI=https://github.com/grpc/grpc/archive/v1.16.1.tar.gz -> grpc-1.16.1.tar.gz
-_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=884b1560ffc869a9ded3a218b26b3bc9
+_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=bbf9eb0961c0ac299ce866d31a2a63db
diff --git a/metadata/md5-cache/net-libs/grpc-1.16.1-r5 b/metadata/md5-cache/net-libs/grpc-1.16.1-r5
deleted file mode 100644
index 7dd0a21..0000000
--- a/metadata/md5-cache/net-libs/grpc-1.16.1-r5
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare
-DEPEND=>=dev-libs/openssl-1.0.2:0=[-bindist] !dev-libs/grpc dev-libs/protobuf:= net-dns/c-ares:= sys-libs/zlib:= systemtap? ( dev-util/systemtap ) virtual/pkgconfig
-DESCRIPTION=Modern open source high performance RPC framework
-EAPI=6
-HOMEPAGE=https://www.grpc.io
-IUSE=examples doc systemtap static-libs fuzzer asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=>=dev-libs/openssl-1.0.2:0=[-bindist] !dev-libs/grpc dev-libs/protobuf:= net-dns/c-ares:= sys-libs/zlib:= systemtap? ( dev-util/systemtap )
-SLOT=0
-SRC_URI=https://github.com/grpc/grpc/archive/v1.16.1.tar.gz -> grpc-1.16.1.tar.gz
-_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=884b1560ffc869a9ded3a218b26b3bc9
diff --git a/metadata/md5-cache/net-libs/grpc-1.16.1-r6 b/metadata/md5-cache/net-libs/grpc-1.16.1-r6
new file mode 100644
index 0000000..51f8a76
--- /dev/null
+++ b/metadata/md5-cache/net-libs/grpc-1.16.1-r6
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst prepare
+DEPEND=>=dev-libs/openssl-1.0.2:0=[-bindist] !dev-libs/grpc dev-libs/protobuf:= net-dns/c-ares:= sys-libs/zlib:= systemtap? ( dev-util/systemtap ) virtual/pkgconfig
+DESCRIPTION=Modern open source high performance RPC framework
+EAPI=6
+HOMEPAGE=https://www.grpc.io
+IUSE=examples doc systemtap static-libs fuzzer asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=>=dev-libs/openssl-1.0.2:0=[-bindist] !dev-libs/grpc dev-libs/protobuf:= net-dns/c-ares:= sys-libs/zlib:= systemtap? ( dev-util/systemtap )
+SLOT=0
+SRC_URI=https://github.com/grpc/grpc/archive/v1.16.1.tar.gz -> grpc-1.16.1.tar.gz
+_eclasses_=cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=bbf9eb0961c0ac299ce866d31a2a63db
diff --git a/metadata/md5-cache/net-libs/libiio-0.21 b/metadata/md5-cache/net-libs/libiio-0.21
index fb66b2d..1861561 100644
--- a/metadata/md5-cache/net-libs/libiio-0.21
+++ b/metadata/md5-cache/net-libs/libiio-0.21
@@ -10,5 +10,5 @@
 RDEPEND=dev-libs/libxml2:= aio? ( dev-libs/libaio ) libiio_all? ( zeroconf? ( net-dns/avahi ) ) !dev-libs/libiio
 SLOT=0/0.21
 SRC_URI=https://github.com/analogdevicesinc/libiio/archive/v0.21.tar.gz -> libiio-0.21.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=755095ba302211fe0b57e01c449644e7
diff --git a/metadata/md5-cache/net-libs/libiio-0.21-r2 b/metadata/md5-cache/net-libs/libiio-0.21-r2
index fb66b2d..1861561 100644
--- a/metadata/md5-cache/net-libs/libiio-0.21-r2
+++ b/metadata/md5-cache/net-libs/libiio-0.21-r2
@@ -10,5 +10,5 @@
 RDEPEND=dev-libs/libxml2:= aio? ( dev-libs/libaio ) libiio_all? ( zeroconf? ( net-dns/avahi ) ) !dev-libs/libiio
 SLOT=0/0.21
 SRC_URI=https://github.com/analogdevicesinc/libiio/archive/v0.21.tar.gz -> libiio-0.21.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=755095ba302211fe0b57e01c449644e7
diff --git a/metadata/md5-cache/net-libs/libmbim-1.25.0-r70 b/metadata/md5-cache/net-libs/libmbim-1.25.0-r70
deleted file mode 100644
index 111811f..0000000
--- a/metadata/md5-cache/net-libs/libmbim-1.25.0-r70
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure info install prepare setup test unpack
-DEPEND=>=dev-libs/glib-2.36 virtual/libgudev doc? ( dev-util/gtk-doc ) virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=MBIM modem protocol helper library
-EAPI=6
-HOMEPAGE=http://cgit.freedesktop.org/libmbim/
-IUSE=-asan doc static-libs asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_f12afb4a186825cd665f2e525c3898f8773445ac
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=>=dev-libs/glib-2.36 virtual/libgudev
-SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=6095bf8c21075dfae603adb4f120dfcb
diff --git a/metadata/md5-cache/net-libs/libmbim-1.25.3-r75 b/metadata/md5-cache/net-libs/libmbim-1.25.3-r75
new file mode 100644
index 0000000..46abc50
--- /dev/null
+++ b/metadata/md5-cache/net-libs/libmbim-1.25.3-r75
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure info install prepare setup test unpack
+DEPEND=>=dev-libs/glib-2.36 virtual/libgudev doc? ( dev-util/gtk-doc ) virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=MBIM modem protocol helper library
+EAPI=6
+HOMEPAGE=http://cgit.freedesktop.org/libmbim/
+IUSE=-asan doc static-libs asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_b9755a1074ada9c532a88c68dd45adee57247c46
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=>=dev-libs/glib-2.36 virtual/libgudev
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=042b8d45935a0ae8216ab08150c74a53
diff --git a/metadata/md5-cache/net-libs/libmbim-9999 b/metadata/md5-cache/net-libs/libmbim-9999
index a581744..995f4c7 100644
--- a/metadata/md5-cache/net-libs/libmbim-9999
+++ b/metadata/md5-cache/net-libs/libmbim-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=>=dev-libs/glib-2.36 virtual/libgudev
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6ffc81d2d408444460b01f7f7c758cf3
diff --git a/metadata/md5-cache/net-libs/libproxy-0.4.13-r2 b/metadata/md5-cache/net-libs/libproxy-0.4.13-r2
index b2075b5..437d2ec 100644
--- a/metadata/md5-cache/net-libs/libproxy-0.4.13-r2
+++ b/metadata/md5-cache/net-libs/libproxy-0.4.13-r2
@@ -11,5 +11,5 @@
 REQUIRED_USE=python? ( || ( python_targets_python2_7 ) )
 SLOT=0
 SRC_URI=https://github.com/libproxy/libproxy/archive/0.4.13.tar.gz -> libproxy-0.4.13.tar.gz
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	mono-env	59ca1177366cc9e14521d3501e9bb281	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	mono-env	59ca1177366cc9e14521d3501e9bb281	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=c12d2e85416ae33f76c76989c9e149ad
diff --git a/metadata/md5-cache/net-libs/libqmi-1.27.3-r96 b/metadata/md5-cache/net-libs/libqmi-1.27.3-r96
deleted file mode 100644
index 65f5eca..0000000
--- a/metadata/md5-cache/net-libs/libqmi-1.27.3-r96
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure info install prepare setup test unpack
-DEPEND=>=dev-libs/glib-2.36 mbim? ( >=net-libs/libmbim-1.18.0 ) doc? ( dev-util/gtk-doc ) sys-devel/autoconf-archive virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=QMI modem protocol helper library
-EAPI=6
-HOMEPAGE=http://cgit.freedesktop.org/libqmi/
-IUSE=-asan doc mbim qrtr static-libs asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_c56e5c4a204668f72aec5b5065d42229cb9e49c9
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=>=dev-libs/glib-2.36 mbim? ( >=net-libs/libmbim-1.18.0 )
-SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e3ec5bbed9b9dc2ed21f459c34c00b9b
diff --git a/metadata/md5-cache/net-libs/libqmi-1.29.5-r103 b/metadata/md5-cache/net-libs/libqmi-1.29.5-r103
new file mode 100644
index 0000000..6ec8713
--- /dev/null
+++ b/metadata/md5-cache/net-libs/libqmi-1.29.5-r103
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure info install prepare setup test unpack
+DEPEND=>=dev-libs/glib-2.36 mbim? ( >=net-libs/libmbim-1.18.0 ) qrtr? ( net-libs/libqrtr-glib ) doc? ( dev-util/gtk-doc ) sys-devel/autoconf-archive virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=QMI modem protocol helper library
+EAPI=6
+HOMEPAGE=http://cgit.freedesktop.org/libqmi/
+IUSE=-asan doc mbim qrtr static-libs asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_dce4e660d9cd78ea98e76aebf8eed517b076c3a9
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=>=dev-libs/glib-2.36 mbim? ( >=net-libs/libmbim-1.18.0 ) qrtr? ( net-libs/libqrtr-glib )
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=0a9721fca963f7d63ca7291c1cb1659a
diff --git a/metadata/md5-cache/net-libs/libqmi-9999 b/metadata/md5-cache/net-libs/libqmi-9999
index f5dd81d..4aaadc2 100644
--- a/metadata/md5-cache/net-libs/libqmi-9999
+++ b/metadata/md5-cache/net-libs/libqmi-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=configure info install prepare setup test unpack
-DEPEND=>=dev-libs/glib-2.36 mbim? ( >=net-libs/libmbim-1.18.0 ) doc? ( dev-util/gtk-doc ) sys-devel/autoconf-archive virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DEPEND=>=dev-libs/glib-2.36 mbim? ( >=net-libs/libmbim-1.18.0 ) qrtr? ( net-libs/libqrtr-glib ) doc? ( dev-util/gtk-doc ) sys-devel/autoconf-archive virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
 DESCRIPTION=QMI modem protocol helper library
 EAPI=6
 HOMEPAGE=http://cgit.freedesktop.org/libqmi/
@@ -7,7 +7,7 @@
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-RDEPEND=>=dev-libs/glib-2.36 mbim? ( >=net-libs/libmbim-1.18.0 )
+RDEPEND=>=dev-libs/glib-2.36 mbim? ( >=net-libs/libmbim-1.18.0 ) qrtr? ( net-libs/libqrtr-glib )
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e39908808f8bcb0f55133df73b1b19f0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=3a94d0d03c1d30066b5146f3fae67d6d
diff --git a/metadata/md5-cache/net-libs/libqrtr-0.0.1-r21 b/metadata/md5-cache/net-libs/libqrtr-0.0.1-r21
deleted file mode 100644
index 88bd6d8..0000000
--- a/metadata/md5-cache/net-libs/libqrtr-0.0.1-r21
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure info install preinst prepare setup test unpack
-DEPEND=sys-kernel/linux-headers virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout
-DESCRIPTION=QRTR userspace helper library
-EAPI=5
-HOMEPAGE=https://github.com/andersson/qrtr
-IUSE=-asan -qrtr_ns asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_9fc5b98c54615474f4c167d5034b6eb15475e046
-KEYWORDS=*
-LICENSE=BSD
-PROPERTIES=live
-RDEPEND=sys-apps/baselayout
-SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=ff8fd5f0f4cc84865bf1b2c5ecc87007
diff --git a/metadata/md5-cache/net-libs/libqrtr-0.0.1-r23 b/metadata/md5-cache/net-libs/libqrtr-0.0.1-r23
new file mode 100644
index 0000000..07cd420
--- /dev/null
+++ b/metadata/md5-cache/net-libs/libqrtr-0.0.1-r23
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure info install preinst prepare setup test unpack
+DEPEND=sys-kernel/linux-headers virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout
+DESCRIPTION=QRTR userspace helper library
+EAPI=5
+HOMEPAGE=https://github.com/andersson/qrtr
+IUSE=-asan -qrtr_ns asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_9fc5b98c54615474f4c167d5034b6eb15475e046
+KEYWORDS=*
+LICENSE=BSD
+PROPERTIES=live
+RDEPEND=sys-apps/baselayout
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=ff8fd5f0f4cc84865bf1b2c5ecc87007
diff --git a/metadata/md5-cache/net-libs/libqrtr-9999 b/metadata/md5-cache/net-libs/libqrtr-9999
index e205326..59e4138 100644
--- a/metadata/md5-cache/net-libs/libqrtr-9999
+++ b/metadata/md5-cache/net-libs/libqrtr-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=sys-apps/baselayout
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3624a123e7f8fbb9468470dcb40086cf
diff --git a/metadata/md5-cache/net-libs/libqrtr-glib-1.1.0-r4 b/metadata/md5-cache/net-libs/libqrtr-glib-1.1.0-r4
new file mode 100644
index 0000000..e3311d9
--- /dev/null
+++ b/metadata/md5-cache/net-libs/libqrtr-glib-1.1.0-r4
@@ -0,0 +1,14 @@
+BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815 dev-vcs/git
+DEFINED_PHASES=configure info install prepare setup test unpack
+DEPEND=>=dev-libs/glib-2.36:2 doc? ( dev-util/gtk-doc ) sys-devel/autoconf-archive !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=QRTR modem protocol helper library
+EAPI=7
+HOMEPAGE=https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib
+IUSE=doc static-libs asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_4f570b6770ab57ec0d70319dafc98cef6a6c6062
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=>=dev-libs/glib-2.36:2
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3b4c7b7a5146c805d593d2031f8d7973
diff --git a/metadata/md5-cache/net-libs/libqrtr-glib-9999 b/metadata/md5-cache/net-libs/libqrtr-glib-9999
new file mode 100644
index 0000000..b4a619d
--- /dev/null
+++ b/metadata/md5-cache/net-libs/libqrtr-glib-9999
@@ -0,0 +1,14 @@
+BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815 dev-vcs/git
+DEFINED_PHASES=configure info install prepare setup test unpack
+DEPEND=>=dev-libs/glib-2.36:2 doc? ( dev-util/gtk-doc ) sys-devel/autoconf-archive !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=QRTR modem protocol helper library
+EAPI=7
+HOMEPAGE=https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib
+IUSE=doc static-libs asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=>=dev-libs/glib-2.36:2
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=346172b49561b8e422bb3cf55bccba92
diff --git a/metadata/md5-cache/net-libs/librmnetctl-1.0_p20180801 b/metadata/md5-cache/net-libs/librmnetctl-1.0_p20180801
index 80fc828..b6c59b0 100644
--- a/metadata/md5-cache/net-libs/librmnetctl-1.0_p20180801
+++ b/metadata/md5-cache/net-libs/librmnetctl-1.0_p20180801
@@ -7,5 +7,5 @@
 LICENSE=BSD
 SLOT=0
 SRC_URI=gs://chromeos-localmirror/distfiles/librmnetctl-1.0_p20180801.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6e8ce602a93a250834d28d45529a8109
diff --git a/metadata/md5-cache/net-libs/librmnetctl-1.0_p20180801-r3 b/metadata/md5-cache/net-libs/librmnetctl-1.0_p20180801-r3
index 80fc828..b6c59b0 100644
--- a/metadata/md5-cache/net-libs/librmnetctl-1.0_p20180801-r3
+++ b/metadata/md5-cache/net-libs/librmnetctl-1.0_p20180801-r3
@@ -7,5 +7,5 @@
 LICENSE=BSD
 SLOT=0
 SRC_URI=gs://chromeos-localmirror/distfiles/librmnetctl-1.0_p20180801.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=6e8ce602a93a250834d28d45529a8109
diff --git a/metadata/md5-cache/net-misc/dhcpcd-6.8.2 b/metadata/md5-cache/net-misc/dhcpcd-6.8.2
index 4f00eae..e664fe5 100644
--- a/metadata/md5-cache/net-misc/dhcpcd-6.8.2
+++ b/metadata/md5-cache/net-misc/dhcpcd-6.8.2
@@ -3,11 +3,11 @@
 DESCRIPTION=A fully featured, yet light weight RFC2131 compliant DHCP client
 EAPI=5
 HOMEPAGE=http://roy.marples.name/projects/dhcpcd/
-IUSE=elibc_glibc +embedded ipv6 kernel_linux +udev +dbus
+IUSE=elibc_glibc +embedded ipv6 kernel_linux +udev +dbus asan coverage fuzzer msan tsan ubsan
 KEYWORDS=*
 LICENSE=BSD-2
 RDEPEND=udev? ( virtual/udev ) dbus? ( sys-apps/dbus ) sys-apps/baselayout
 SLOT=0
 SRC_URI=http://roy.marples.name/downloads/dhcpcd/dhcpcd-6.8.2.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=659974d24d1138fc99e9ddc324402e8d
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=4762b257f827cb58db7199c6d20488ee
diff --git a/metadata/md5-cache/net-misc/dhcpcd-6.8.2-r21 b/metadata/md5-cache/net-misc/dhcpcd-6.8.2-r21
deleted file mode 100644
index 4f00eae..0000000
--- a/metadata/md5-cache/net-misc/dhcpcd-6.8.2-r21
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure install postinst preinst prepare
-DEPEND=udev? ( virtual/udev ) dbus? ( sys-apps/dbus ) virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=A fully featured, yet light weight RFC2131 compliant DHCP client
-EAPI=5
-HOMEPAGE=http://roy.marples.name/projects/dhcpcd/
-IUSE=elibc_glibc +embedded ipv6 kernel_linux +udev +dbus
-KEYWORDS=*
-LICENSE=BSD-2
-RDEPEND=udev? ( virtual/udev ) dbus? ( sys-apps/dbus ) sys-apps/baselayout
-SLOT=0
-SRC_URI=http://roy.marples.name/downloads/dhcpcd/dhcpcd-6.8.2.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=659974d24d1138fc99e9ddc324402e8d
diff --git a/metadata/md5-cache/net-misc/dhcpcd-6.8.2-r24 b/metadata/md5-cache/net-misc/dhcpcd-6.8.2-r24
new file mode 100644
index 0000000..e664fe5
--- /dev/null
+++ b/metadata/md5-cache/net-misc/dhcpcd-6.8.2-r24
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install postinst preinst prepare
+DEPEND=udev? ( virtual/udev ) dbus? ( sys-apps/dbus ) virtual/pkgconfig sys-apps/baselayout
+DESCRIPTION=A fully featured, yet light weight RFC2131 compliant DHCP client
+EAPI=5
+HOMEPAGE=http://roy.marples.name/projects/dhcpcd/
+IUSE=elibc_glibc +embedded ipv6 kernel_linux +udev +dbus asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=BSD-2
+RDEPEND=udev? ( virtual/udev ) dbus? ( sys-apps/dbus ) sys-apps/baselayout
+SLOT=0
+SRC_URI=http://roy.marples.name/downloads/dhcpcd/dhcpcd-6.8.2.tar.bz2
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=4762b257f827cb58db7199c6d20488ee
diff --git a/metadata/md5-cache/net-misc/diag-0.1_p20190122 b/metadata/md5-cache/net-misc/diag-0.1_p20190122
deleted file mode 100644
index e4f6c73..0000000
--- a/metadata/md5-cache/net-misc/diag-0.1_p20190122
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile install
-DEPEND=net-libs/libqrtr:= virtual/udev:=
-DESCRIPTION=DIAG channel diagnostics communication tool
-EAPI=6
-HOMEPAGE=https://github.com/andersson/diag
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=net-libs/libqrtr:= virtual/udev:=
-SLOT=0
-SRC_URI=https://github.com/andersson/diag/archive/bf8035f68b0748d1380977aafc4349331b74cbda.tar.gz -> diag-0.1_p20190122.tar.gz
-_md5_=d0f24b9905f842435938a1ef304f395c
diff --git a/metadata/md5-cache/net-misc/diag-0.1_p20190122-r1 b/metadata/md5-cache/net-misc/diag-0.1_p20190122-r1
deleted file mode 100644
index e4f6c73..0000000
--- a/metadata/md5-cache/net-misc/diag-0.1_p20190122-r1
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile install
-DEPEND=net-libs/libqrtr:= virtual/udev:=
-DESCRIPTION=DIAG channel diagnostics communication tool
-EAPI=6
-HOMEPAGE=https://github.com/andersson/diag
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=net-libs/libqrtr:= virtual/udev:=
-SLOT=0
-SRC_URI=https://github.com/andersson/diag/archive/bf8035f68b0748d1380977aafc4349331b74cbda.tar.gz -> diag-0.1_p20190122.tar.gz
-_md5_=d0f24b9905f842435938a1ef304f395c
diff --git a/metadata/md5-cache/net-misc/diag-0.1_p20200329 b/metadata/md5-cache/net-misc/diag-0.1_p20200329
new file mode 100644
index 0000000..b189c7f
--- /dev/null
+++ b/metadata/md5-cache/net-misc/diag-0.1_p20200329
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install prepare
+DEPEND=net-libs/libqrtr:= virtual/udev:=
+DESCRIPTION=DIAG channel diagnostics communication tool
+EAPI=7
+HOMEPAGE=https://github.com/andersson/diag
+KEYWORDS=*
+LICENSE=BSD
+RDEPEND=net-libs/libqrtr:= virtual/udev:=
+SLOT=0
+SRC_URI=https://github.com/andersson/diag/archive/d06e599d197790c9e84ac41a51bf124a69768c4f.tar.gz -> diag-0.1_p20200329.tar.gz
+_md5_=89d971ca6bd2fe7996b58f5aed40e04e
diff --git a/metadata/md5-cache/net-misc/diag-0.1_p20200329-r1 b/metadata/md5-cache/net-misc/diag-0.1_p20200329-r1
new file mode 100644
index 0000000..b189c7f
--- /dev/null
+++ b/metadata/md5-cache/net-misc/diag-0.1_p20200329-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile install prepare
+DEPEND=net-libs/libqrtr:= virtual/udev:=
+DESCRIPTION=DIAG channel diagnostics communication tool
+EAPI=7
+HOMEPAGE=https://github.com/andersson/diag
+KEYWORDS=*
+LICENSE=BSD
+RDEPEND=net-libs/libqrtr:= virtual/udev:=
+SLOT=0
+SRC_URI=https://github.com/andersson/diag/archive/d06e599d197790c9e84ac41a51bf124a69768c4f.tar.gz -> diag-0.1_p20200329.tar.gz
+_md5_=89d971ca6bd2fe7996b58f5aed40e04e
diff --git a/metadata/md5-cache/net-misc/htpdate-1.0.4 b/metadata/md5-cache/net-misc/htpdate-1.0.4
index b124fca..e50733d 100644
--- a/metadata/md5-cache/net-misc/htpdate-1.0.4
+++ b/metadata/md5-cache/net-misc/htpdate-1.0.4
@@ -1,10 +1,10 @@
-DEFINED_PHASES=compile install postinst unpack
+DEFINED_PHASES=compile install unpack
 DESCRIPTION=Synchronize local workstation with time offered by remote webservers
-EAPI=0
+EAPI=7
 HOMEPAGE=http://www.clevervest.com/htp/
 KEYWORDS=*
 LICENSE=GPL-2
 SLOT=0
 SRC_URI=http://www.clevervest.com/htp/archive/c/htpdate-1.0.4.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=46ec3cab695068be184db645cbf402ea
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1167973faa627f5d3d696f8ca93a8337
diff --git a/metadata/md5-cache/net-misc/htpdate-1.0.4-r6 b/metadata/md5-cache/net-misc/htpdate-1.0.4-r6
deleted file mode 100644
index b124fca..0000000
--- a/metadata/md5-cache/net-misc/htpdate-1.0.4-r6
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=compile install postinst unpack
-DESCRIPTION=Synchronize local workstation with time offered by remote webservers
-EAPI=0
-HOMEPAGE=http://www.clevervest.com/htp/
-KEYWORDS=*
-LICENSE=GPL-2
-SLOT=0
-SRC_URI=http://www.clevervest.com/htp/archive/c/htpdate-1.0.4.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=46ec3cab695068be184db645cbf402ea
diff --git a/metadata/md5-cache/net-misc/htpdate-1.0.4-r7 b/metadata/md5-cache/net-misc/htpdate-1.0.4-r7
new file mode 100644
index 0000000..e50733d
--- /dev/null
+++ b/metadata/md5-cache/net-misc/htpdate-1.0.4-r7
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile install unpack
+DESCRIPTION=Synchronize local workstation with time offered by remote webservers
+EAPI=7
+HOMEPAGE=http://www.clevervest.com/htp/
+KEYWORDS=*
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=http://www.clevervest.com/htp/archive/c/htpdate-1.0.4.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1167973faa627f5d3d696f8ca93a8337
diff --git a/metadata/md5-cache/net-misc/modemmanager-next-1.15.0-r373 b/metadata/md5-cache/net-misc/modemmanager-next-1.15.0-r373
deleted file mode 100644
index d5d7031..0000000
--- a/metadata/md5-cache/net-misc/modemmanager-next-1.15.0-r373
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure info install preinst prepare setup test unpack
-DEPEND=>=dev-libs/glib-2.36 >=sys-apps/dbus-1.2 dev-libs/dbus-glib net-dialup/ppp mbim? ( net-libs/libmbim ) qmi? ( net-libs/libqmi ) !net-misc/modemmanager virtual/libgudev dev-util/pkgconfig dev-util/intltool >=dev-util/gtk-doc-1.13 !net-misc/modemmanager-next-interfaces !net-misc/modemmanager >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=Modem and mobile broadband management libraries
-EAPI=6
-HOMEPAGE=http://mail.gnome.org/archives/networkmanager-list/2008-July/msg00274.html
-IUSE=doc mbim systemd qmi asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_201b5e6e70f0affac75f58b90bbfe3eec34cd901
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=>=dev-libs/glib-2.36 >=sys-apps/dbus-1.2 dev-libs/dbus-glib net-dialup/ppp mbim? ( net-libs/libmbim ) qmi? ( net-libs/libqmi ) !net-misc/modemmanager sys-apps/baselayout
-SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=eb9b54ce9592b8d344b66d420f297943
diff --git a/metadata/md5-cache/net-misc/modemmanager-next-1.17.0-r417 b/metadata/md5-cache/net-misc/modemmanager-next-1.17.0-r417
new file mode 100644
index 0000000..05ab856
--- /dev/null
+++ b/metadata/md5-cache/net-misc/modemmanager-next-1.17.0-r417
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure info install preinst prepare setup test unpack
+DEPEND=>=dev-libs/glib-2.36 >=sys-apps/dbus-1.2 dev-libs/dbus-glib net-dialup/ppp mbim? ( net-libs/libmbim ) qmi? ( net-libs/libqmi ) qrtr? ( net-libs/libqrtr-glib ) !net-misc/modemmanager virtual/libgudev dev-util/pkgconfig dev-util/intltool >=dev-util/gtk-doc-1.13 !net-misc/modemmanager-next-interfaces !net-misc/modemmanager >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig virtual/pkgconfig sys-apps/baselayout
+DESCRIPTION=Modem and mobile broadband management libraries
+EAPI=6
+HOMEPAGE=http://mail.gnome.org/archives/networkmanager-list/2008-July/msg00274.html
+IUSE=doc mbim systemd qmi qrtr asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_cfa9bb35e4db8f971b84b1327cd2583d2ab1718e
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=>=dev-libs/glib-2.36 >=sys-apps/dbus-1.2 dev-libs/dbus-glib net-dialup/ppp mbim? ( net-libs/libmbim ) qmi? ( net-libs/libqmi ) qrtr? ( net-libs/libqrtr-glib ) !net-misc/modemmanager sys-apps/baselayout
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=0858c993eff934156393671485b69847
diff --git a/metadata/md5-cache/net-misc/modemmanager-next-9999 b/metadata/md5-cache/net-misc/modemmanager-next-9999
index 630e22f..3ccfd6c 100644
--- a/metadata/md5-cache/net-misc/modemmanager-next-9999
+++ b/metadata/md5-cache/net-misc/modemmanager-next-9999
@@ -1,13 +1,13 @@
 DEFINED_PHASES=configure info install preinst prepare setup test unpack
-DEPEND=>=dev-libs/glib-2.36 >=sys-apps/dbus-1.2 dev-libs/dbus-glib net-dialup/ppp mbim? ( net-libs/libmbim ) qmi? ( net-libs/libqmi ) !net-misc/modemmanager virtual/libgudev dev-util/pkgconfig dev-util/intltool >=dev-util/gtk-doc-1.13 !net-misc/modemmanager-next-interfaces !net-misc/modemmanager >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig virtual/pkgconfig sys-apps/baselayout
+DEPEND=>=dev-libs/glib-2.36 >=sys-apps/dbus-1.2 dev-libs/dbus-glib net-dialup/ppp mbim? ( net-libs/libmbim ) qmi? ( net-libs/libqmi ) qrtr? ( net-libs/libqrtr-glib ) !net-misc/modemmanager virtual/libgudev dev-util/pkgconfig dev-util/intltool >=dev-util/gtk-doc-1.13 !net-misc/modemmanager-next-interfaces !net-misc/modemmanager >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig virtual/pkgconfig sys-apps/baselayout
 DESCRIPTION=Modem and mobile broadband management libraries
 EAPI=6
 HOMEPAGE=http://mail.gnome.org/archives/networkmanager-list/2008-July/msg00274.html
-IUSE=doc mbim systemd qmi asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
+IUSE=doc mbim systemd qmi qrtr asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-RDEPEND=>=dev-libs/glib-2.36 >=sys-apps/dbus-1.2 dev-libs/dbus-glib net-dialup/ppp mbim? ( net-libs/libmbim ) qmi? ( net-libs/libqmi ) !net-misc/modemmanager sys-apps/baselayout
+RDEPEND=>=dev-libs/glib-2.36 >=sys-apps/dbus-1.2 dev-libs/dbus-glib net-dialup/ppp mbim? ( net-libs/libmbim ) qmi? ( net-libs/libqmi ) qrtr? ( net-libs/libqrtr-glib ) !net-misc/modemmanager sys-apps/baselayout
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c062744bc614debaee84c95486c9062b
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=99bb8193331e4e5edf1b08e9e1c2e7bb
diff --git a/metadata/md5-cache/net-misc/qc-netmgr-0.1_p20201006 b/metadata/md5-cache/net-misc/qc-netmgr-0.1_p20201006
index 1ed8afe..fdde69f 100644
--- a/metadata/md5-cache/net-misc/qc-netmgr-0.1_p20201006
+++ b/metadata/md5-cache/net-misc/qc-netmgr-0.1_p20201006
@@ -9,5 +9,5 @@
 RDEPEND=net-libs/librmnetctl net-libs/libqrtr sys-apps/baselayout
 SLOT=0
 SRC_URI=https://source.codeaurora.org/quic/dataservices/modem-data-manager/log/?h=LC.UM.1.0 -> qc-netmgr-0.1_p20201006.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=390ab6718e4f85e9d8f8338756491390
diff --git a/metadata/md5-cache/net-misc/qc-netmgr-0.1_p20201006-r5 b/metadata/md5-cache/net-misc/qc-netmgr-0.1_p20201006-r5
index 1ed8afe..fdde69f 100644
--- a/metadata/md5-cache/net-misc/qc-netmgr-0.1_p20201006-r5
+++ b/metadata/md5-cache/net-misc/qc-netmgr-0.1_p20201006-r5
@@ -9,5 +9,5 @@
 RDEPEND=net-libs/librmnetctl net-libs/libqrtr sys-apps/baselayout
 SLOT=0
 SRC_URI=https://source.codeaurora.org/quic/dataservices/modem-data-manager/log/?h=LC.UM.1.0 -> qc-netmgr-0.1_p20201006.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=390ab6718e4f85e9d8f8338756491390
diff --git a/metadata/md5-cache/net-misc/qmi-ping-0.1_p20180606 b/metadata/md5-cache/net-misc/qmi-ping-0.1_p20180606
index 4d47750..674a6b2 100644
--- a/metadata/md5-cache/net-misc/qmi-ping-0.1_p20180606
+++ b/metadata/md5-cache/net-misc/qmi-ping-0.1_p20180606
@@ -9,5 +9,5 @@
 RDEPEND=net-libs/libqrtr
 SLOT=0
 SRC_URI=https://github.com/andersson/qmi-ping/archive/36799ff5464a7ee384dcf3ad3a8f1d2b107f062e.tar.gz -> qmi-ping-0.1_p20180606.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=c730f8df5ef21317605719ec15821265
diff --git a/metadata/md5-cache/net-misc/qmi-ping-0.1_p20180606-r2 b/metadata/md5-cache/net-misc/qmi-ping-0.1_p20180606-r2
index 4d47750..674a6b2 100644
--- a/metadata/md5-cache/net-misc/qmi-ping-0.1_p20180606-r2
+++ b/metadata/md5-cache/net-misc/qmi-ping-0.1_p20180606-r2
@@ -9,5 +9,5 @@
 RDEPEND=net-libs/libqrtr
 SLOT=0
 SRC_URI=https://github.com/andersson/qmi-ping/archive/36799ff5464a7ee384dcf3ad3a8f1d2b107f062e.tar.gz -> qmi-ping-0.1_p20180606.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=c730f8df5ef21317605719ec15821265
diff --git a/metadata/md5-cache/net-misc/rmtfs-0.3_p20200203 b/metadata/md5-cache/net-misc/rmtfs-0.3_p20200203
deleted file mode 100644
index 603aee3..0000000
--- a/metadata/md5-cache/net-misc/rmtfs-0.3_p20200203
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure install preinst
-DEPEND=net-libs/libqrtr virtual/udev sys-apps/baselayout
-DESCRIPTION=QMI Remote File System Server
-EAPI=6
-HOMEPAGE=https://github.com/andersson/rmtfs
-IUSE=asan +seccomp asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=net-libs/libqrtr virtual/udev sys-apps/baselayout
-SLOT=0
-SRC_URI=https://github.com/andersson/rmtfs/archive/9ef260ba6f550857dd87c3818ba3759343f45d2d.tar.gz -> rmtfs-0.3_p20200203.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=ccedbb048f807ed1bc2534797c9c53a5
diff --git a/metadata/md5-cache/net-misc/rmtfs-0.3_p20200203-r8 b/metadata/md5-cache/net-misc/rmtfs-0.3_p20200203-r8
deleted file mode 100644
index 603aee3..0000000
--- a/metadata/md5-cache/net-misc/rmtfs-0.3_p20200203-r8
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure install preinst
-DEPEND=net-libs/libqrtr virtual/udev sys-apps/baselayout
-DESCRIPTION=QMI Remote File System Server
-EAPI=6
-HOMEPAGE=https://github.com/andersson/rmtfs
-IUSE=asan +seccomp asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=net-libs/libqrtr virtual/udev sys-apps/baselayout
-SLOT=0
-SRC_URI=https://github.com/andersson/rmtfs/archive/9ef260ba6f550857dd87c3818ba3759343f45d2d.tar.gz -> rmtfs-0.3_p20200203.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=ccedbb048f807ed1bc2534797c9c53a5
diff --git a/metadata/md5-cache/net-misc/rmtfs-0.3_p20210408 b/metadata/md5-cache/net-misc/rmtfs-0.3_p20210408
new file mode 100644
index 0000000..1456af7
--- /dev/null
+++ b/metadata/md5-cache/net-misc/rmtfs-0.3_p20210408
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install preinst
+DEPEND=net-libs/libqrtr:= virtual/udev:= sys-apps/baselayout
+DESCRIPTION=QMI Remote File System Server
+EAPI=7
+HOMEPAGE=https://github.com/andersson/rmtfs
+IUSE=asan +seccomp asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=BSD
+RDEPEND=net-libs/libqrtr:= virtual/udev:= sys-apps/baselayout
+SLOT=0
+SRC_URI=https://github.com/andersson/rmtfs/archive/293ab8babb27ac0f24247bb101fed9420c629c29.tar.gz -> rmtfs-0.3_p20210408.tar.gz
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=c2ce1023eb53970f2f03b40ddf7d3150
diff --git a/metadata/md5-cache/net-misc/rmtfs-0.3_p20210408-r2 b/metadata/md5-cache/net-misc/rmtfs-0.3_p20210408-r2
new file mode 100644
index 0000000..1456af7
--- /dev/null
+++ b/metadata/md5-cache/net-misc/rmtfs-0.3_p20210408-r2
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install preinst
+DEPEND=net-libs/libqrtr:= virtual/udev:= sys-apps/baselayout
+DESCRIPTION=QMI Remote File System Server
+EAPI=7
+HOMEPAGE=https://github.com/andersson/rmtfs
+IUSE=asan +seccomp asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=BSD
+RDEPEND=net-libs/libqrtr:= virtual/udev:= sys-apps/baselayout
+SLOT=0
+SRC_URI=https://github.com/andersson/rmtfs/archive/293ab8babb27ac0f24247bb101fed9420c629c29.tar.gz -> rmtfs-0.3_p20210408.tar.gz
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=c2ce1023eb53970f2f03b40ddf7d3150
diff --git a/metadata/md5-cache/net-misc/rpmsgexport-0.1_p20180228 b/metadata/md5-cache/net-misc/rpmsgexport-0.1_p20180228
index 3bb3e69..c895b05 100644
--- a/metadata/md5-cache/net-misc/rpmsgexport-0.1_p20180228
+++ b/metadata/md5-cache/net-misc/rpmsgexport-0.1_p20180228
@@ -7,5 +7,5 @@
 LICENSE=BSD
 SLOT=0
 SRC_URI=https://github.com/andersson/rpmsgexport/archive/324d88d668f36c6a5e6a9c2003a050b8a5a3cd60.tar.gz -> rpmsgexport-0.1_p20180228.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=684a9f262ee917ad8d55caa32d1100aa
diff --git a/metadata/md5-cache/net-misc/rpmsgexport-0.1_p20180228-r2 b/metadata/md5-cache/net-misc/rpmsgexport-0.1_p20180228-r2
index 3bb3e69..c895b05 100644
--- a/metadata/md5-cache/net-misc/rpmsgexport-0.1_p20180228-r2
+++ b/metadata/md5-cache/net-misc/rpmsgexport-0.1_p20180228-r2
@@ -7,5 +7,5 @@
 LICENSE=BSD
 SLOT=0
 SRC_URI=https://github.com/andersson/rpmsgexport/archive/324d88d668f36c6a5e6a9c2003a050b8a5a3cd60.tar.gz -> rpmsgexport-0.1_p20180228.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=684a9f262ee917ad8d55caa32d1100aa
diff --git a/metadata/md5-cache/net-misc/tlsdate-0.0.5-r84 b/metadata/md5-cache/net-misc/tlsdate-0.0.5-r84
deleted file mode 100644
index fb6b908..0000000
--- a/metadata/md5-cache/net-misc/tlsdate-0.0.5-r84
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install preinst prepare setup unpack
-DEPEND=dev-libs/openssl:0= dev-libs/libevent dbus? ( sys-apps/dbus ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=Update local time over HTTPS
-EAPI=6
-HOMEPAGE=https://github.com/ioerror/tlsdate
-IUSE=-asan +dbus +seccomp systemd asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_9b4af5e6c151008162265b39fd9494ef88c832da cros-debug
-KEYWORDS=*
-LICENSE=BSD
-PROPERTIES=live
-RDEPEND=dev-libs/openssl:0= dev-libs/libevent dbus? ( sys-apps/dbus ) chromeos-base/chromeos-ca-certificates sys-apps/baselayout
-SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=d0950c7a5a70f2edfbdfc08d32f3c555
diff --git a/metadata/md5-cache/net-misc/tlsdate-0.0.5-r95 b/metadata/md5-cache/net-misc/tlsdate-0.0.5-r95
new file mode 100644
index 0000000..ab8fee1
--- /dev/null
+++ b/metadata/md5-cache/net-misc/tlsdate-0.0.5-r95
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install preinst prepare setup unpack
+DEPEND=dev-libs/openssl:0= dev-libs/libevent dbus? ( sys-apps/dbus ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig sys-apps/baselayout
+DESCRIPTION=Update local time over HTTPS
+EAPI=6
+HOMEPAGE=https://github.com/ioerror/tlsdate
+IUSE=-asan +dbus +seccomp systemd asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ac75e4e94cf1c6c37833513159b83d64b3de9104 cros-debug
+KEYWORDS=*
+LICENSE=BSD
+PROPERTIES=live
+RDEPEND=dev-libs/openssl:0= dev-libs/libevent dbus? ( sys-apps/dbus ) chromeos-base/chromeos-ca-certificates sys-apps/baselayout
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=fef6227d1aff0003c5a4f8441c2e8f63
diff --git a/metadata/md5-cache/net-misc/tlsdate-9999 b/metadata/md5-cache/net-misc/tlsdate-9999
index 1e64885..cb90af4 100644
--- a/metadata/md5-cache/net-misc/tlsdate-9999
+++ b/metadata/md5-cache/net-misc/tlsdate-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=dev-libs/openssl:0= dev-libs/libevent dbus? ( sys-apps/dbus ) chromeos-base/chromeos-ca-certificates sys-apps/baselayout
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=bf89cabbedd0888b18f23a1f77bcef00
diff --git a/metadata/md5-cache/net-misc/usbip-4.19-r6 b/metadata/md5-cache/net-misc/usbip-4.19-r6
deleted file mode 100644
index 76cea16..0000000
--- a/metadata/md5-cache/net-misc/usbip-4.19-r6
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure info install postinst prepare setup unpack
-DEPEND=>=dev-libs/glib-2.6 sys-apps/hwids >=sys-kernel/linux-headers-3.17 virtual/libudev tcpd? ( sys-apps/tcp-wrappers ) virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Userspace utilities for a general USB device sharing system over IP networks
-EAPI=6
-HOMEPAGE=https://www.kernel.org/
-IUSE=static-libs tcpd cros_host cros_workon_tree_8744f13bfe3b621588fb29672e8b643b1d3c69cc
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=>=dev-libs/glib-2.6 sys-apps/hwids >=sys-kernel/linux-headers-3.17 virtual/libudev tcpd? ( sys-apps/tcp-wrappers )
-SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=84ccaa3945b075df51ea0f64f11f14bd
diff --git a/metadata/md5-cache/net-misc/usbip-4.19-r7 b/metadata/md5-cache/net-misc/usbip-4.19-r7
new file mode 100644
index 0000000..a03e310
--- /dev/null
+++ b/metadata/md5-cache/net-misc/usbip-4.19-r7
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure info install postinst prepare setup unpack
+DEPEND=>=dev-libs/glib-2.6 sys-apps/hwids >=sys-kernel/linux-headers-3.17 virtual/libudev tcpd? ( sys-apps/tcp-wrappers ) virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Userspace utilities for a general USB device sharing system over IP networks
+EAPI=6
+HOMEPAGE=https://www.kernel.org/
+IUSE=static-libs tcpd cros_host cros_workon_tree_f3a0a0009d4cfe0cd2783cefc1c92f3c79fef691
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=>=dev-libs/glib-2.6 sys-apps/hwids >=sys-kernel/linux-headers-3.17 virtual/libudev tcpd? ( sys-apps/tcp-wrappers )
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=8351d29c2aed6e5da26486c23b69ab7b
diff --git a/metadata/md5-cache/net-misc/usbip-9999 b/metadata/md5-cache/net-misc/usbip-9999
index 49fb8d8..feed1b2 100644
--- a/metadata/md5-cache/net-misc/usbip-9999
+++ b/metadata/md5-cache/net-misc/usbip-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=>=dev-libs/glib-2.6 sys-apps/hwids >=sys-kernel/linux-headers-3.17 virtual/libudev tcpd? ( sys-apps/tcp-wrappers )
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=89b492a0773470a756de8a0e166da868
diff --git a/metadata/md5-cache/net-print/cups-2.3.3-r146 b/metadata/md5-cache/net-print/cups-2.3.3-r146
deleted file mode 100644
index 720f8f1..0000000
--- a/metadata/md5-cache/net-print/cups-2.3.3-r146
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst postrm preinst prepare setup test unpack
-DEPEND=app-text/libpaper acl? ( kernel_linux? ( sys-apps/acl sys-apps/attr ) ) dbus? ( >=sys-apps/dbus-1.6.18-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) java? ( >=virtual/jre-1.6:* ) kerberos? ( >=virtual/krb5-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !net-print/lprng pam? ( virtual/pam ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) ssl? ( >=dev-libs/libgcrypt-1.5.3:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=net-libs/gnutls-2.12.23-r6[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) systemd? ( sys-apps/systemd ) usb? ( virtual/libusb:1 ) X? ( x11-misc/xdg-utils ) xinetd? ( sys-apps/xinetd ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20140508 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) >=virtual/pkgconfig-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] test? ( dev-cpp/gtest >=chromeos-base/libchrome-0.0.1-r31:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout java? ( >=dev-java/java-config-2.2.0-r3 ) virtual/pkgconfig
-DESCRIPTION=The Common Unix Printing System
-EAPI=5
-HOMEPAGE=http://www.cups.org/
-IUSE=acl dbus debug java kerberos pam python +seccomp selinux +ssl static-libs systemd test +threads upstart usb X xinetd zeroconf asan fuzzer +linguas_ca +linguas_cs +linguas_de +linguas_es +linguas_fr +linguas_it +linguas_ja +linguas_ru cros-debug cros_host cros_workon_tree_081a54fa0c3a21d0b9c026f2ab24d99fa2a8ee8c kernel_linux abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 +python_single_target_python2_7 elibc_FreeBSD java fuzzer asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=app-text/libpaper acl? ( kernel_linux? ( sys-apps/acl sys-apps/attr ) ) dbus? ( >=sys-apps/dbus-1.6.18-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) java? ( >=virtual/jre-1.6:* ) kerberos? ( >=virtual/krb5-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !net-print/lprng pam? ( virtual/pam ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) ssl? ( >=dev-libs/libgcrypt-1.5.3:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=net-libs/gnutls-2.12.23-r6[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) systemd? ( sys-apps/systemd ) usb? ( virtual/libusb:1 ) X? ( x11-misc/xdg-utils ) xinetd? ( sys-apps/xinetd ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20140508 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) selinux? ( sec-policy/selinux-cups ) sys-apps/baselayout java? ( >=dev-java/java-config-2.2.0-r3 )
-REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 ) ) usb? ( threads ) ?? ( systemd upstart )
-SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	fdo-mime	9c46e30acd923ff12e325dbe96bb98b9	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	gnome2-utils	893e828f0f25f070f0b38d20c83c7670	java-pkg-opt-2	be255db325e3af8fbf3506cf63998341	java-utils-2	82402a1c36ab4bf38f3313a543f9e827	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	pam	3f746974e1cc47cabe3bd488c08cdc8e	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=5c6f5a643bd5be3faaed040bbdd8a0f5
diff --git a/metadata/md5-cache/net-print/cups-2.3.3-r196 b/metadata/md5-cache/net-print/cups-2.3.3-r196
new file mode 100644
index 0000000..4346cd5
--- /dev/null
+++ b/metadata/md5-cache/net-print/cups-2.3.3-r196
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure info install postinst postrm preinst prepare setup test unpack
+DEPEND=app-text/libpaper acl? ( kernel_linux? ( sys-apps/acl sys-apps/attr ) ) dbus? ( >=sys-apps/dbus-1.6.18-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) java? ( >=virtual/jre-1.6:* ) kerberos? ( >=virtual/krb5-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !net-print/lprng pam? ( virtual/pam ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) ssl? ( >=dev-libs/libgcrypt-1.5.3:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=net-libs/gnutls-2.12.23-r6[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) systemd? ( sys-apps/systemd ) usb? ( virtual/libusb:1 ) X? ( x11-misc/xdg-utils ) xinetd? ( sys-apps/xinetd ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20140508 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) >=virtual/pkgconfig-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] test? ( dev-cpp/gtest >=chromeos-base/libchrome-0.0.1-r31:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout java? ( >=dev-java/java-config-2.2.0-r3 ) virtual/pkgconfig
+DESCRIPTION=The Common Unix Printing System
+EAPI=5
+HOMEPAGE=http://www.cups.org/
+IUSE=acl dbus debug java kerberos pam python +seccomp selinux +ssl static-libs systemd test +threads upstart usb X xinetd zeroconf asan fuzzer +linguas_ca +linguas_cs +linguas_de +linguas_es +linguas_fr +linguas_it +linguas_ja +linguas_ru cros-debug cros_host cros_workon_tree_9fe07ac7bed15d529469e9ae9619cf4b25aa3772 kernel_linux abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 +python_single_target_python2_7 elibc_FreeBSD java fuzzer asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live
+RDEPEND=app-text/libpaper acl? ( kernel_linux? ( sys-apps/acl sys-apps/attr ) ) dbus? ( >=sys-apps/dbus-1.6.18-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) java? ( >=virtual/jre-1.6:* ) kerberos? ( >=virtual/krb5-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !net-print/lprng pam? ( virtual/pam ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) ssl? ( >=dev-libs/libgcrypt-1.5.3:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=net-libs/gnutls-2.12.23-r6[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) systemd? ( sys-apps/systemd ) usb? ( virtual/libusb:1 ) X? ( x11-misc/xdg-utils ) xinetd? ( sys-apps/xinetd ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20140508 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) selinux? ( sec-policy/selinux-cups ) sys-apps/baselayout java? ( >=dev-java/java-config-2.2.0-r3 )
+REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 ) ) usb? ( threads ) ?? ( systemd upstart )
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	fdo-mime	9c46e30acd923ff12e325dbe96bb98b9	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	gnome2-utils	893e828f0f25f070f0b38d20c83c7670	java-pkg-opt-2	be255db325e3af8fbf3506cf63998341	java-utils-2	82402a1c36ab4bf38f3313a543f9e827	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	pam	3f746974e1cc47cabe3bd488c08cdc8e	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=c070b678d107a2fd6173cdb186bc55fc
diff --git a/metadata/md5-cache/net-print/cups-9999 b/metadata/md5-cache/net-print/cups-9999
index 08db7f2..a616b05 100644
--- a/metadata/md5-cache/net-print/cups-9999
+++ b/metadata/md5-cache/net-print/cups-9999
@@ -5,10 +5,10 @@
 HOMEPAGE=http://www.cups.org/
 IUSE=acl dbus debug java kerberos pam python +seccomp selinux +ssl static-libs systemd test +threads upstart usb X xinetd zeroconf asan fuzzer +linguas_ca +linguas_cs +linguas_de +linguas_es +linguas_fr +linguas_it +linguas_ja +linguas_ru cros-debug cros_host cros_workon_tree_ kernel_linux abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 +python_single_target_python2_7 elibc_FreeBSD java fuzzer asan coverage fuzzer msan tsan ubsan
 KEYWORDS=~*
-LICENSE=GPL-2
+LICENSE=Apache-2.0
 PROPERTIES=live
 RDEPEND=app-text/libpaper acl? ( kernel_linux? ( sys-apps/acl sys-apps/attr ) ) dbus? ( >=sys-apps/dbus-1.6.18-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) java? ( >=virtual/jre-1.6:* ) kerberos? ( >=virtual/krb5-0-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !net-print/lprng pam? ( virtual/pam ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) ) ssl? ( >=dev-libs/libgcrypt-1.5.3:0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=net-libs/gnutls-2.12.23-r6[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) systemd? ( sys-apps/systemd ) usb? ( virtual/libusb:1 ) X? ( x11-misc/xdg-utils ) xinetd? ( sys-apps/xinetd ) zeroconf? ( >=net-dns/avahi-0.6.31-r2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20140508 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) selinux? ( sec-policy/selinux-cups ) sys-apps/baselayout java? ( >=dev-java/java-config-2.2.0-r3 )
 REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 ) ) usb? ( threads ) ?? ( systemd upstart )
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	fdo-mime	9c46e30acd923ff12e325dbe96bb98b9	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	gnome2-utils	893e828f0f25f070f0b38d20c83c7670	java-pkg-opt-2	be255db325e3af8fbf3506cf63998341	java-utils-2	82402a1c36ab4bf38f3313a543f9e827	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	pam	3f746974e1cc47cabe3bd488c08cdc8e	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=37e6312f8d9e034214767b9ac64be53b
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	fdo-mime	9c46e30acd923ff12e325dbe96bb98b9	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	gnome2-utils	893e828f0f25f070f0b38d20c83c7670	java-pkg-opt-2	be255db325e3af8fbf3506cf63998341	java-utils-2	82402a1c36ab4bf38f3313a543f9e827	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	pam	3f746974e1cc47cabe3bd488c08cdc8e	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=f294c5d6292849bd8fc7fc50808a3248
diff --git a/metadata/md5-cache/net-print/cups-filters-1.28.5 b/metadata/md5-cache/net-print/cups-filters-1.28.5
deleted file mode 100644
index 88cb779..0000000
--- a/metadata/md5-cache/net-print/cups-filters-1.28.5
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-util/gdbus-codegen >=sys-devel/gettext-0.18.3 virtual/pkgconfig test? ( media-fonts/dejavu ) virtual/pkgconfig
-DEFINED_PHASES=compile configure install postinst prepare test
-DEPEND=!postscript? ( >=app-text/poppler-0.32:=[cxx,jpeg?,lcms,tiff?,utils] ) >=app-text/qpdf-10.0.1:= chromeos-base/foomatic_shell dev-libs/glib:2 media-libs/fontconfig media-libs/freetype:2 media-libs/lcms:2 >=net-print/cups-1.7.3 !<=net-print/cups-1.5.9999 sys-devel/bc sys-libs/zlib dbus? ( sys-apps/dbus ) foomatic? ( !net-print/foomatic-filters ) jpeg? ( virtual/jpeg:0 ) ldap? ( net-nds/openldap ) pdf? ( app-text/mupdf ) perl? ( dev-lang/perl:= ) png? ( media-libs/libpng:0= ) postscript? ( >=app-text/ghostscript-gpl-9.09[cups] ) tiff? ( media-libs/tiff:0 ) zeroconf? ( net-dns/avahi[dbus] )
-DESCRIPTION=Cups filters
-EAPI=7
-HOMEPAGE=https://wiki.linuxfoundation.org/openprinting/cups-filters
-IUSE=dbus +foomatic ipp_autosetup jpeg ldap pclm pdf perl png +postscript static-libs test tiff zeroconf asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=MIT GPL-2
-RDEPEND=!postscript? ( >=app-text/poppler-0.32:=[cxx,jpeg?,lcms,tiff?,utils] ) >=app-text/qpdf-10.0.1:= chromeos-base/foomatic_shell dev-libs/glib:2 media-libs/fontconfig media-libs/freetype:2 media-libs/lcms:2 >=net-print/cups-1.7.3 !<=net-print/cups-1.5.9999 sys-devel/bc sys-libs/zlib dbus? ( sys-apps/dbus ) foomatic? ( !net-print/foomatic-filters ) jpeg? ( virtual/jpeg:0 ) ldap? ( net-nds/openldap ) pdf? ( app-text/mupdf ) perl? ( dev-lang/perl:= ) png? ( media-libs/libpng:0= ) postscript? ( >=app-text/ghostscript-gpl-9.09[cups] ) tiff? ( media-libs/tiff:0 ) zeroconf? ( net-dns/avahi[dbus] )
-RESTRICT=!test? ( test )
-SLOT=0
-SRC_URI=http://www.openprinting.org/download/cups-filters/cups-filters-1.28.5.tar.xz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	perl-functions	6ec4c4d8fc8324200f1c14e8d158c59b	perl-module	97206c028d9bdc9f248e022ac5c9fc83	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8b81a46281777c16d1dc55db875fc64b
diff --git a/metadata/md5-cache/net-print/cups-filters-1.28.5-r4 b/metadata/md5-cache/net-print/cups-filters-1.28.5-r4
deleted file mode 100644
index 88cb779..0000000
--- a/metadata/md5-cache/net-print/cups-filters-1.28.5-r4
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-util/gdbus-codegen >=sys-devel/gettext-0.18.3 virtual/pkgconfig test? ( media-fonts/dejavu ) virtual/pkgconfig
-DEFINED_PHASES=compile configure install postinst prepare test
-DEPEND=!postscript? ( >=app-text/poppler-0.32:=[cxx,jpeg?,lcms,tiff?,utils] ) >=app-text/qpdf-10.0.1:= chromeos-base/foomatic_shell dev-libs/glib:2 media-libs/fontconfig media-libs/freetype:2 media-libs/lcms:2 >=net-print/cups-1.7.3 !<=net-print/cups-1.5.9999 sys-devel/bc sys-libs/zlib dbus? ( sys-apps/dbus ) foomatic? ( !net-print/foomatic-filters ) jpeg? ( virtual/jpeg:0 ) ldap? ( net-nds/openldap ) pdf? ( app-text/mupdf ) perl? ( dev-lang/perl:= ) png? ( media-libs/libpng:0= ) postscript? ( >=app-text/ghostscript-gpl-9.09[cups] ) tiff? ( media-libs/tiff:0 ) zeroconf? ( net-dns/avahi[dbus] )
-DESCRIPTION=Cups filters
-EAPI=7
-HOMEPAGE=https://wiki.linuxfoundation.org/openprinting/cups-filters
-IUSE=dbus +foomatic ipp_autosetup jpeg ldap pclm pdf perl png +postscript static-libs test tiff zeroconf asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=MIT GPL-2
-RDEPEND=!postscript? ( >=app-text/poppler-0.32:=[cxx,jpeg?,lcms,tiff?,utils] ) >=app-text/qpdf-10.0.1:= chromeos-base/foomatic_shell dev-libs/glib:2 media-libs/fontconfig media-libs/freetype:2 media-libs/lcms:2 >=net-print/cups-1.7.3 !<=net-print/cups-1.5.9999 sys-devel/bc sys-libs/zlib dbus? ( sys-apps/dbus ) foomatic? ( !net-print/foomatic-filters ) jpeg? ( virtual/jpeg:0 ) ldap? ( net-nds/openldap ) pdf? ( app-text/mupdf ) perl? ( dev-lang/perl:= ) png? ( media-libs/libpng:0= ) postscript? ( >=app-text/ghostscript-gpl-9.09[cups] ) tiff? ( media-libs/tiff:0 ) zeroconf? ( net-dns/avahi[dbus] )
-RESTRICT=!test? ( test )
-SLOT=0
-SRC_URI=http://www.openprinting.org/download/cups-filters/cups-filters-1.28.5.tar.xz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	perl-functions	6ec4c4d8fc8324200f1c14e8d158c59b	perl-module	97206c028d9bdc9f248e022ac5c9fc83	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8b81a46281777c16d1dc55db875fc64b
diff --git a/metadata/md5-cache/net-print/cups-filters-1.28.7 b/metadata/md5-cache/net-print/cups-filters-1.28.7
new file mode 100644
index 0000000..09ed789
--- /dev/null
+++ b/metadata/md5-cache/net-print/cups-filters-1.28.7
@@ -0,0 +1,15 @@
+BDEPEND=dev-util/gdbus-codegen >=sys-devel/gettext-0.18.3 virtual/pkgconfig test? ( media-fonts/dejavu ) virtual/pkgconfig
+DEFINED_PHASES=compile configure install postinst prepare test
+DEPEND=!postscript? ( >=app-text/poppler-0.32:=[cxx,jpeg?,lcms,tiff?,utils] ) >=app-text/qpdf-10.0.1:= chromeos-base/foomatic_shell dev-libs/glib:2 media-libs/fontconfig media-libs/freetype:2 media-libs/lcms:2 >=net-print/cups-1.7.3 !<=net-print/cups-1.5.9999 sys-devel/bc sys-libs/zlib dbus? ( sys-apps/dbus ) foomatic? ( !net-print/foomatic-filters ) jpeg? ( virtual/jpeg:0 ) ldap? ( net-nds/openldap ) pdf? ( app-text/mupdf ) perl? ( dev-lang/perl:= ) png? ( media-libs/libpng:0= ) postscript? ( >=app-text/ghostscript-gpl-9.09[cups] ) tiff? ( media-libs/tiff:0 ) zeroconf? ( net-dns/avahi[dbus] )
+DESCRIPTION=Cups filters
+EAPI=7
+HOMEPAGE=https://wiki.linuxfoundation.org/openprinting/cups-filters
+IUSE=dbus +foomatic ipp_autosetup jpeg ldap pclm pdf perl png +postscript static-libs test tiff zeroconf asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=MIT GPL-2
+RDEPEND=!postscript? ( >=app-text/poppler-0.32:=[cxx,jpeg?,lcms,tiff?,utils] ) >=app-text/qpdf-10.0.1:= chromeos-base/foomatic_shell dev-libs/glib:2 media-libs/fontconfig media-libs/freetype:2 media-libs/lcms:2 >=net-print/cups-1.7.3 !<=net-print/cups-1.5.9999 sys-devel/bc sys-libs/zlib dbus? ( sys-apps/dbus ) foomatic? ( !net-print/foomatic-filters ) jpeg? ( virtual/jpeg:0 ) ldap? ( net-nds/openldap ) pdf? ( app-text/mupdf ) perl? ( dev-lang/perl:= ) png? ( media-libs/libpng:0= ) postscript? ( >=app-text/ghostscript-gpl-9.09[cups] ) tiff? ( media-libs/tiff:0 ) zeroconf? ( net-dns/avahi[dbus] )
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=http://www.openprinting.org/download/cups-filters/cups-filters-1.28.7.tar.xz
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	perl-functions	6ec4c4d8fc8324200f1c14e8d158c59b	perl-module	97206c028d9bdc9f248e022ac5c9fc83	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=72726e5a691731e35079788a000f8b90
diff --git a/metadata/md5-cache/net-print/cups-filters-1.28.7-r1 b/metadata/md5-cache/net-print/cups-filters-1.28.7-r1
new file mode 100644
index 0000000..09ed789
--- /dev/null
+++ b/metadata/md5-cache/net-print/cups-filters-1.28.7-r1
@@ -0,0 +1,15 @@
+BDEPEND=dev-util/gdbus-codegen >=sys-devel/gettext-0.18.3 virtual/pkgconfig test? ( media-fonts/dejavu ) virtual/pkgconfig
+DEFINED_PHASES=compile configure install postinst prepare test
+DEPEND=!postscript? ( >=app-text/poppler-0.32:=[cxx,jpeg?,lcms,tiff?,utils] ) >=app-text/qpdf-10.0.1:= chromeos-base/foomatic_shell dev-libs/glib:2 media-libs/fontconfig media-libs/freetype:2 media-libs/lcms:2 >=net-print/cups-1.7.3 !<=net-print/cups-1.5.9999 sys-devel/bc sys-libs/zlib dbus? ( sys-apps/dbus ) foomatic? ( !net-print/foomatic-filters ) jpeg? ( virtual/jpeg:0 ) ldap? ( net-nds/openldap ) pdf? ( app-text/mupdf ) perl? ( dev-lang/perl:= ) png? ( media-libs/libpng:0= ) postscript? ( >=app-text/ghostscript-gpl-9.09[cups] ) tiff? ( media-libs/tiff:0 ) zeroconf? ( net-dns/avahi[dbus] )
+DESCRIPTION=Cups filters
+EAPI=7
+HOMEPAGE=https://wiki.linuxfoundation.org/openprinting/cups-filters
+IUSE=dbus +foomatic ipp_autosetup jpeg ldap pclm pdf perl png +postscript static-libs test tiff zeroconf asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=MIT GPL-2
+RDEPEND=!postscript? ( >=app-text/poppler-0.32:=[cxx,jpeg?,lcms,tiff?,utils] ) >=app-text/qpdf-10.0.1:= chromeos-base/foomatic_shell dev-libs/glib:2 media-libs/fontconfig media-libs/freetype:2 media-libs/lcms:2 >=net-print/cups-1.7.3 !<=net-print/cups-1.5.9999 sys-devel/bc sys-libs/zlib dbus? ( sys-apps/dbus ) foomatic? ( !net-print/foomatic-filters ) jpeg? ( virtual/jpeg:0 ) ldap? ( net-nds/openldap ) pdf? ( app-text/mupdf ) perl? ( dev-lang/perl:= ) png? ( media-libs/libpng:0= ) postscript? ( >=app-text/ghostscript-gpl-9.09[cups] ) tiff? ( media-libs/tiff:0 ) zeroconf? ( net-dns/avahi[dbus] )
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=http://www.openprinting.org/download/cups-filters/cups-filters-1.28.7.tar.xz
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	perl-functions	6ec4c4d8fc8324200f1c14e8d158c59b	perl-module	97206c028d9bdc9f248e022ac5c9fc83	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=72726e5a691731e35079788a000f8b90
diff --git a/metadata/md5-cache/net-print/cups_proxy-0.0.1-r149 b/metadata/md5-cache/net-print/cups_proxy-0.0.1-r149
deleted file mode 100644
index d40b1be..0000000
--- a/metadata/md5-cache/net-print/cups_proxy-0.0.1-r149
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libbrillo:= net-libs/libmicrohttpd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
-DESCRIPTION=CUPS Proxy Daemon for Chromium OS
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cups_proxy/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_6e5b8d8860aab37b0f9c1fa02030639cea55fb52_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_6e5b8d8860aab37b0f9c1fa02030639cea55fb52_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=chromeos-base/libbrillo:= net-libs/libmicrohttpd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1c26dab559ac6cbfdd13994b95b04546
diff --git a/metadata/md5-cache/net-print/cups_proxy-0.0.1-r186 b/metadata/md5-cache/net-print/cups_proxy-0.0.1-r186
new file mode 100644
index 0000000..7591fd7
--- /dev/null
+++ b/metadata/md5-cache/net-print/cups_proxy-0.0.1-r186
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install preinst setup test unpack
+DEPEND=chromeos-base/libbrillo:= net-libs/libmicrohttpd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
+DESCRIPTION=CUPS Proxy Daemon for Chromium OS
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cups_proxy/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_3d941a32a42e1b92a1e353ab03fde0c52d50b4ab_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_3d941a32a42e1b92a1e353ab03fde0c52d50b4ab_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=chromeos-base/libbrillo:= net-libs/libmicrohttpd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=7ee5e9701f68daf0dddfe2e9a3735370
diff --git a/metadata/md5-cache/net-print/cups_proxy-9999 b/metadata/md5-cache/net-print/cups_proxy-9999
index 54b574f..e8eb5de 100644
--- a/metadata/md5-cache/net-print/cups_proxy-9999
+++ b/metadata/md5-cache/net-print/cups_proxy-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install preinst setup test unpack
-DEPEND=chromeos-base/libbrillo:= net-libs/libmicrohttpd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:= sys-apps/baselayout
+DEPEND=chromeos-base/libbrillo:= net-libs/libmicrohttpd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:= sys-apps/baselayout
 DESCRIPTION=CUPS Proxy Daemon for Chromium OS
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/cups_proxy/
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=chromeos-base/libbrillo:= net-libs/libmicrohttpd:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:= sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=70ca177218eec27019a89e7b5435bdef
diff --git a/metadata/md5-cache/net-print/dymo-cups-drivers-1.4.0 b/metadata/md5-cache/net-print/dymo-cups-drivers-1.4.0
index 83b309f..0db2e38 100644
--- a/metadata/md5-cache/net-print/dymo-cups-drivers-1.4.0
+++ b/metadata/md5-cache/net-print/dymo-cups-drivers-1.4.0
@@ -11,5 +11,5 @@
 RESTRICT=!test? ( test )
 SLOT=0
 SRC_URI=http://download.dymo.com/Download%20Drivers/Linux/Download/dymo-cups-drivers-1.4.0.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=27972ebf130a49b870fec6e485a5f837
diff --git a/metadata/md5-cache/net-print/dymo-cups-drivers-1.4.0-r2 b/metadata/md5-cache/net-print/dymo-cups-drivers-1.4.0-r2
index 83b309f..0db2e38 100644
--- a/metadata/md5-cache/net-print/dymo-cups-drivers-1.4.0-r2
+++ b/metadata/md5-cache/net-print/dymo-cups-drivers-1.4.0-r2
@@ -11,5 +11,5 @@
 RESTRICT=!test? ( test )
 SLOT=0
 SRC_URI=http://download.dymo.com/Download%20Drivers/Linux/Download/dymo-cups-drivers-1.4.0.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=27972ebf130a49b870fec6e485a5f837
diff --git a/metadata/md5-cache/net-print/epson-inkjet-printer-escpr-1.7.6 b/metadata/md5-cache/net-print/epson-inkjet-printer-escpr-1.7.6
index 9587d21..7d7fa7f 100644
--- a/metadata/md5-cache/net-print/epson-inkjet-printer-escpr-1.7.6
+++ b/metadata/md5-cache/net-print/epson-inkjet-printer-escpr-1.7.6
@@ -9,5 +9,5 @@
 RDEPEND=net-print/cups
 SLOT=0
 SRC_URI=https://download3.ebz.epson.net/dsc/f/03/00/10/33/90/13c8b802beeae061b6eb08248a0417be08484a26/epson-inkjet-printer-escpr-1.7.6-1lsb3.2.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5449fcdbff8540128dcee5fad980be84
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=94279ae5038c2195391f5d45a1eddfbc
diff --git a/metadata/md5-cache/net-print/epson-inkjet-printer-escpr-1.7.6-r5 b/metadata/md5-cache/net-print/epson-inkjet-printer-escpr-1.7.6-r5
deleted file mode 100644
index 9587d21..0000000
--- a/metadata/md5-cache/net-print/epson-inkjet-printer-escpr-1.7.6-r5
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure install prepare
-DEPEND=net-print/cups >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Epson Inkjet Printer Driver (ESC/P-R)
-EAPI=5
-HOMEPAGE=http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX
-IUSE=asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=net-print/cups
-SLOT=0
-SRC_URI=https://download3.ebz.epson.net/dsc/f/03/00/10/33/90/13c8b802beeae061b6eb08248a0417be08484a26/epson-inkjet-printer-escpr-1.7.6-1lsb3.2.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5449fcdbff8540128dcee5fad980be84
diff --git a/metadata/md5-cache/net-print/epson-inkjet-printer-escpr-1.7.6-r6 b/metadata/md5-cache/net-print/epson-inkjet-printer-escpr-1.7.6-r6
new file mode 100644
index 0000000..7d7fa7f
--- /dev/null
+++ b/metadata/md5-cache/net-print/epson-inkjet-printer-escpr-1.7.6-r6
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install prepare
+DEPEND=net-print/cups >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Epson Inkjet Printer Driver (ESC/P-R)
+EAPI=5
+HOMEPAGE=http://download.ebz.epson.net/dsc/search/01/search/?OSC=LX
+IUSE=asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=net-print/cups
+SLOT=0
+SRC_URI=https://download3.ebz.epson.net/dsc/f/03/00/10/33/90/13c8b802beeae061b6eb08248a0417be08484a26/epson-inkjet-printer-escpr-1.7.6-1lsb3.2.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=94279ae5038c2195391f5d45a1eddfbc
diff --git a/metadata/md5-cache/net-print/hplip-3.19.6 b/metadata/md5-cache/net-print/hplip-3.19.6
index 6494223..032eefd 100644
--- a/metadata/md5-cache/net-print/hplip-3.19.6
+++ b/metadata/md5-cache/net-print/hplip-3.19.6
@@ -11,4 +11,4 @@
 SLOT=0
 SRC_URI=mirror://sourceforge/hplip/hplip-3.19.6.tar.gz https://dev.gentoo.org/~billie/distfiles/hplip-3.18.12-patches-1.tar.xz
 _eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	readme.gentoo-r1	22ae82e140bdd95d17a34fd5fd733190	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=57933c66786ca005e3cb11dbe5bb8f03
+_md5_=cb7cddbb4ffa0721cc23755a1d098d42
diff --git a/metadata/md5-cache/net-print/hplip-3.19.6-r4 b/metadata/md5-cache/net-print/hplip-3.19.6-r4
deleted file mode 100644
index 6494223..0000000
--- a/metadata/md5-cache/net-print/hplip-3.19.6-r4
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=configure install postinst prepare setup
-DEPEND=net-print/cups virtual/jpeg:0 hpijs? ( net-print/cups-filters[foomatic] ) !minimal? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[threads,xml] >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6[threads,xml] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) sys-apps/dbus !libusb0? ( virtual/libusb:1 ) libusb0? ( virtual/libusb:0 ) scanner? ( media-gfx/sane-backends ) snmp? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:= ) net-analyzer/net-snmp ) ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 =sys-devel/automake-1.13* >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig
-DESCRIPTION=HP Linux Imaging and Printing - Print, scan, fax drivers and service tools
-EAPI=6
-HOMEPAGE=https://developers.hp.com/hp-linux-imaging-and-printing
-IUSE=doc fax +hpcups hpijs kde libnotify libressl -libusb0 minimal parport policykit qt5 scanner +snmp static-ppds X kernel_linux python_single_target_python2_7 python_single_target_python3_6
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=net-print/cups virtual/jpeg:0 hpijs? ( net-print/cups-filters[foomatic] ) !minimal? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[threads,xml] >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6[threads,xml] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) sys-apps/dbus !libusb0? ( virtual/libusb:1 ) libusb0? ( virtual/libusb:0 ) scanner? ( media-gfx/sane-backends ) snmp? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:= ) net-analyzer/net-snmp ) ) app-text/ghostscript-gpl !minimal? ( python_single_target_python2_7? ( >=dev-python/dbus-python-1.2.0-r1[python_targets_python2_7(-)] ) python_single_target_python3_6? ( >=dev-python/dbus-python-1.2.0-r1[python_targets_python3_6(-)] ) python_single_target_python2_7? ( dev-python/pygobject:2[python_targets_python2_7(-)] ) python_single_target_python3_6? ( dev-python/pygobject:3[python_targets_python3_6(-)] ) fax? ( python_single_target_python2_7? ( dev-python/reportlab[python_targets_python2_7(-)] ) python_single_target_python3_6? ( dev-python/reportlab[python_targets_python3_6(-)] ) ) kernel_linux? ( virtual/udev ) qt5? ( python_single_target_python2_7? ( >=dev-python/PyQt5-5.5.1[dbus,gui,widgets,python_targets_python2_7(-)] ) python_single_target_python3_6? ( >=dev-python/PyQt5-5.5.1[dbus,gui,widgets,python_targets_python3_6(-)] ) libnotify? ( python_single_target_python2_7? ( dev-python/notify2[python_targets_python2_7(-)] ) python_single_target_python3_6? ( dev-python/notify2[python_targets_python3_6(-)] ) ) ) scanner? ( python_single_target_python2_7? ( >=dev-python/reportlab-3.2[python_targets_python2_7(-)] ) python_single_target_python3_6? ( >=dev-python/reportlab-3.2[python_targets_python3_6(-)] ) python_single_target_python2_7? ( >=dev-python/pillow-3.1.1[python_targets_python2_7(-)] ) python_single_target_python3_6? ( >=dev-python/pillow-3.1.1[python_targets_python3_6(-)] ) X? ( || ( kde? ( kde-misc/skanlite ) media-gfx/xsane media-gfx/sane-frontends ) ) ) ) policykit? ( sys-auth/polkit )
-REQUIRED_USE=!minimal? ( ^^ ( python_single_target_python2_7 python_single_target_python3_6 ) )
-SLOT=0
-SRC_URI=mirror://sourceforge/hplip/hplip-3.19.6.tar.gz https://dev.gentoo.org/~billie/distfiles/hplip-3.18.12-patches-1.tar.xz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	readme.gentoo-r1	22ae82e140bdd95d17a34fd5fd733190	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=57933c66786ca005e3cb11dbe5bb8f03
diff --git a/metadata/md5-cache/net-print/hplip-3.19.6-r5 b/metadata/md5-cache/net-print/hplip-3.19.6-r5
new file mode 100644
index 0000000..032eefd
--- /dev/null
+++ b/metadata/md5-cache/net-print/hplip-3.19.6-r5
@@ -0,0 +1,14 @@
+DEFINED_PHASES=configure install postinst prepare setup
+DEPEND=net-print/cups virtual/jpeg:0 hpijs? ( net-print/cups-filters[foomatic] ) !minimal? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[threads,xml] >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6[threads,xml] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) sys-apps/dbus !libusb0? ( virtual/libusb:1 ) libusb0? ( virtual/libusb:0 ) scanner? ( media-gfx/sane-backends ) snmp? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:= ) net-analyzer/net-snmp ) ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 =sys-devel/automake-1.13* >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig
+DESCRIPTION=HP Linux Imaging and Printing - Print, scan, fax drivers and service tools
+EAPI=6
+HOMEPAGE=https://developers.hp.com/hp-linux-imaging-and-printing
+IUSE=doc fax +hpcups hpijs kde libnotify libressl -libusb0 minimal parport policykit qt5 scanner +snmp static-ppds X kernel_linux python_single_target_python2_7 python_single_target_python3_6
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=net-print/cups virtual/jpeg:0 hpijs? ( net-print/cups-filters[foomatic] ) !minimal? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[threads,xml] >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6[threads,xml] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) sys-apps/dbus !libusb0? ( virtual/libusb:1 ) libusb0? ( virtual/libusb:0 ) scanner? ( media-gfx/sane-backends ) snmp? ( !libressl? ( dev-libs/openssl:0= ) libressl? ( dev-libs/libressl:= ) net-analyzer/net-snmp ) ) app-text/ghostscript-gpl !minimal? ( python_single_target_python2_7? ( >=dev-python/dbus-python-1.2.0-r1[python_targets_python2_7(-)] ) python_single_target_python3_6? ( >=dev-python/dbus-python-1.2.0-r1[python_targets_python3_6(-)] ) python_single_target_python2_7? ( dev-python/pygobject:2[python_targets_python2_7(-)] ) python_single_target_python3_6? ( dev-python/pygobject:3[python_targets_python3_6(-)] ) fax? ( python_single_target_python2_7? ( dev-python/reportlab[python_targets_python2_7(-)] ) python_single_target_python3_6? ( dev-python/reportlab[python_targets_python3_6(-)] ) ) kernel_linux? ( virtual/udev ) qt5? ( python_single_target_python2_7? ( >=dev-python/PyQt5-5.5.1[dbus,gui,widgets,python_targets_python2_7(-)] ) python_single_target_python3_6? ( >=dev-python/PyQt5-5.5.1[dbus,gui,widgets,python_targets_python3_6(-)] ) libnotify? ( python_single_target_python2_7? ( dev-python/notify2[python_targets_python2_7(-)] ) python_single_target_python3_6? ( dev-python/notify2[python_targets_python3_6(-)] ) ) ) scanner? ( python_single_target_python2_7? ( >=dev-python/reportlab-3.2[python_targets_python2_7(-)] ) python_single_target_python3_6? ( >=dev-python/reportlab-3.2[python_targets_python3_6(-)] ) python_single_target_python2_7? ( >=dev-python/pillow-3.1.1[python_targets_python2_7(-)] ) python_single_target_python3_6? ( >=dev-python/pillow-3.1.1[python_targets_python3_6(-)] ) X? ( || ( kde? ( kde-misc/skanlite ) media-gfx/xsane media-gfx/sane-frontends ) ) ) ) policykit? ( sys-auth/polkit )
+REQUIRED_USE=!minimal? ( ^^ ( python_single_target_python2_7 python_single_target_python3_6 ) )
+SLOT=0
+SRC_URI=mirror://sourceforge/hplip/hplip-3.19.6.tar.gz https://dev.gentoo.org/~billie/distfiles/hplip-3.18.12-patches-1.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	readme.gentoo-r1	22ae82e140bdd95d17a34fd5fd733190	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=cb7cddbb4ffa0721cc23755a1d098d42
diff --git a/metadata/md5-cache/net-print/ippsample-1.0.0 b/metadata/md5-cache/net-print/ippsample-1.0.0
new file mode 100644
index 0000000..f2bc901
--- /dev/null
+++ b/metadata/md5-cache/net-print/ippsample-1.0.0
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install test
+DEPEND=ssl? ( >=dev-libs/libgcrypt-1.5.3:= >=net-libs/gnutls-3.6.14:= )
+DESCRIPTION=ippsample print testing utility
+EAPI=7
+HOMEPAGE=https://github.com/istopwg/ippsample/blob/master/README.md
+IUSE=+ssl
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=ssl? ( >=dev-libs/libgcrypt-1.5.3:= >=net-libs/gnutls-3.6.14:= )
+SLOT=0
+SRC_URI=https://github.com/istopwg/ippsample/archive/ecfd14a4b6198a360e2b2ff48acc95ddde501019.zip -> ippsample-1.0.0.zip
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=847b9b2a64172315ff7bb2c345761f42
diff --git a/metadata/md5-cache/net-print/ippsample-1.0.0-r1 b/metadata/md5-cache/net-print/ippsample-1.0.0-r1
new file mode 100644
index 0000000..f2bc901
--- /dev/null
+++ b/metadata/md5-cache/net-print/ippsample-1.0.0-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install test
+DEPEND=ssl? ( >=dev-libs/libgcrypt-1.5.3:= >=net-libs/gnutls-3.6.14:= )
+DESCRIPTION=ippsample print testing utility
+EAPI=7
+HOMEPAGE=https://github.com/istopwg/ippsample/blob/master/README.md
+IUSE=+ssl
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=ssl? ( >=dev-libs/libgcrypt-1.5.3:= >=net-libs/gnutls-3.6.14:= )
+SLOT=0
+SRC_URI=https://github.com/istopwg/ippsample/archive/ecfd14a4b6198a360e2b2ff48acc95ddde501019.zip -> ippsample-1.0.0.zip
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=847b9b2a64172315ff7bb2c345761f42
diff --git a/metadata/md5-cache/net-print/starcupsdrv-3.6.0a_pre20170914 b/metadata/md5-cache/net-print/starcupsdrv-3.6.0a_pre20170914
index 9a28ed8..4a63321 100644
--- a/metadata/md5-cache/net-print/starcupsdrv-3.6.0a_pre20170914
+++ b/metadata/md5-cache/net-print/starcupsdrv-3.6.0a_pre20170914
@@ -9,5 +9,5 @@
 RDEPEND=net-print/cups:=
 SLOT=0
 SRC_URI=http://www.starmicronics.com/support/DriverFolder/drvr/starcupsdrv-3.6.0a_linux_20170914.tar.gz -> starcupsdrv-3.6.0a_linux_20170914.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fa918a8673338b6dab6f8a6d8bab5196
diff --git a/metadata/md5-cache/net-print/starcupsdrv-3.6.0a_pre20170914-r3 b/metadata/md5-cache/net-print/starcupsdrv-3.6.0a_pre20170914-r3
index 9a28ed8..4a63321 100644
--- a/metadata/md5-cache/net-print/starcupsdrv-3.6.0a_pre20170914-r3
+++ b/metadata/md5-cache/net-print/starcupsdrv-3.6.0a_pre20170914-r3
@@ -9,5 +9,5 @@
 RDEPEND=net-print/cups:=
 SLOT=0
 SRC_URI=http://www.starmicronics.com/support/DriverFolder/drvr/starcupsdrv-3.6.0a_linux_20170914.tar.gz -> starcupsdrv-3.6.0a_linux_20170914.tar.gz
-_eclasses_=cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=fa918a8673338b6dab6f8a6d8bab5196
diff --git a/metadata/md5-cache/net-vpn/strongswan-5.7.2 b/metadata/md5-cache/net-vpn/strongswan-5.7.2
index 49f114a..88227ed 100644
--- a/metadata/md5-cache/net-vpn/strongswan-5.7.2
+++ b/metadata/md5-cache/net-vpn/strongswan-5.7.2
@@ -10,4 +10,4 @@
 SLOT=0
 SRC_URI=https://download.strongswan.org/strongswan-5.7.2.tar.bz2
 _eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=473a78452508156cdc4aeb8fbfd5d9d0
+_md5_=391f4feeb0036b7c3fb247bf7eda9b45
diff --git a/metadata/md5-cache/net-vpn/strongswan-5.7.2-r2 b/metadata/md5-cache/net-vpn/strongswan-5.7.2-r2
deleted file mode 100644
index 49f114a..0000000
--- a/metadata/md5-cache/net-vpn/strongswan-5.7.2-r2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure install setup
-DEPEND=!net-misc/openswan gmp? ( >=dev-libs/gmp-4.1.5:= ) gcrypt? ( dev-libs/libgcrypt:0 ) caps? ( sys-libs/libcap ) curl? ( net-misc/curl ) ldap? ( net-nds/openldap ) openssl? ( >=dev-libs/openssl-0.9.8:=[-bindist] ) mysql? ( dev-db/mysql-connector-c:= ) sqlite? ( >=dev-db/sqlite-3.3.1 ) systemd? ( sys-apps/systemd ) networkmanager? ( net-misc/networkmanager ) pam? ( sys-libs/pam ) strongswan_plugins_unbound? ( net-dns/unbound:= net-libs/ldns ) virtual/linux-sources sys-kernel/linux-headers virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=IPsec-based VPN solution, supporting IKEv1/IKEv2 and MOBIKE
-EAPI=6
-HOMEPAGE=https://www.strongswan.org/
-IUSE=+caps curl +constraints debug dhcp eap farp gcrypt +gmp ldap mysql networkmanager +non-root +openssl selinux sqlite systemd pam pkcs11 +strongswan_plugins_led +strongswan_plugins_lookip +strongswan_plugins_systime-fix +strongswan_plugins_unity +strongswan_plugins_vici strongswan_plugins_aesni strongswan_plugins_blowfish strongswan_plugins_ccm strongswan_plugins_chapoly strongswan_plugins_ctr strongswan_plugins_forecast strongswan_plugins_gcm strongswan_plugins_ha strongswan_plugins_ipseckey strongswan_plugins_newhope strongswan_plugins_ntru strongswan_plugins_padlock strongswan_plugins_rdrand strongswan_plugins_save-keys strongswan_plugins_unbound strongswan_plugins_whitelist kernel_linux
-KEYWORDS=*
-LICENSE=GPL-2 RSA DES
-RDEPEND=!net-misc/openswan gmp? ( >=dev-libs/gmp-4.1.5:= ) gcrypt? ( dev-libs/libgcrypt:0 ) caps? ( sys-libs/libcap ) curl? ( net-misc/curl ) ldap? ( net-nds/openldap ) openssl? ( >=dev-libs/openssl-0.9.8:=[-bindist] ) mysql? ( dev-db/mysql-connector-c:= ) sqlite? ( >=dev-db/sqlite-3.3.1 ) systemd? ( sys-apps/systemd ) networkmanager? ( net-misc/networkmanager ) pam? ( sys-libs/pam ) strongswan_plugins_unbound? ( net-dns/unbound:= net-libs/ldns ) virtual/logger sys-apps/iproute2 !net-vpn/libreswan selinux? ( sec-policy/selinux-ipsec ) sys-apps/baselayout
-SLOT=0
-SRC_URI=https://download.strongswan.org/strongswan-5.7.2.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=473a78452508156cdc4aeb8fbfd5d9d0
diff --git a/metadata/md5-cache/net-vpn/strongswan-5.7.2-r3 b/metadata/md5-cache/net-vpn/strongswan-5.7.2-r3
new file mode 100644
index 0000000..88227ed
--- /dev/null
+++ b/metadata/md5-cache/net-vpn/strongswan-5.7.2-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=configure install setup
+DEPEND=!net-misc/openswan gmp? ( >=dev-libs/gmp-4.1.5:= ) gcrypt? ( dev-libs/libgcrypt:0 ) caps? ( sys-libs/libcap ) curl? ( net-misc/curl ) ldap? ( net-nds/openldap ) openssl? ( >=dev-libs/openssl-0.9.8:=[-bindist] ) mysql? ( dev-db/mysql-connector-c:= ) sqlite? ( >=dev-db/sqlite-3.3.1 ) systemd? ( sys-apps/systemd ) networkmanager? ( net-misc/networkmanager ) pam? ( sys-libs/pam ) strongswan_plugins_unbound? ( net-dns/unbound:= net-libs/ldns ) virtual/linux-sources sys-kernel/linux-headers virtual/pkgconfig sys-apps/baselayout
+DESCRIPTION=IPsec-based VPN solution, supporting IKEv1/IKEv2 and MOBIKE
+EAPI=6
+HOMEPAGE=https://www.strongswan.org/
+IUSE=+caps curl +constraints debug dhcp eap farp gcrypt +gmp ldap mysql networkmanager +non-root +openssl selinux sqlite systemd pam pkcs11 +strongswan_plugins_led +strongswan_plugins_lookip +strongswan_plugins_systime-fix +strongswan_plugins_unity +strongswan_plugins_vici strongswan_plugins_aesni strongswan_plugins_blowfish strongswan_plugins_ccm strongswan_plugins_chapoly strongswan_plugins_ctr strongswan_plugins_forecast strongswan_plugins_gcm strongswan_plugins_ha strongswan_plugins_ipseckey strongswan_plugins_newhope strongswan_plugins_ntru strongswan_plugins_padlock strongswan_plugins_rdrand strongswan_plugins_save-keys strongswan_plugins_unbound strongswan_plugins_whitelist kernel_linux
+KEYWORDS=*
+LICENSE=GPL-2 RSA DES
+RDEPEND=!net-misc/openswan gmp? ( >=dev-libs/gmp-4.1.5:= ) gcrypt? ( dev-libs/libgcrypt:0 ) caps? ( sys-libs/libcap ) curl? ( net-misc/curl ) ldap? ( net-nds/openldap ) openssl? ( >=dev-libs/openssl-0.9.8:=[-bindist] ) mysql? ( dev-db/mysql-connector-c:= ) sqlite? ( >=dev-db/sqlite-3.3.1 ) systemd? ( sys-apps/systemd ) networkmanager? ( net-misc/networkmanager ) pam? ( sys-libs/pam ) strongswan_plugins_unbound? ( net-dns/unbound:= net-libs/ldns ) virtual/logger sys-apps/iproute2 !net-vpn/libreswan selinux? ( sec-policy/selinux-ipsec ) sys-apps/baselayout
+SLOT=0
+SRC_URI=https://download.strongswan.org/strongswan-5.7.2.tar.bz2
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=391f4feeb0036b7c3fb247bf7eda9b45
diff --git a/metadata/md5-cache/net-wireless/Wi-FiTestSuite-Linux-DUT-0.0.1-r1 b/metadata/md5-cache/net-wireless/Wi-FiTestSuite-Linux-DUT-0.0.1-r1
index ec89ee5..48e43a5 100644
--- a/metadata/md5-cache/net-wireless/Wi-FiTestSuite-Linux-DUT-0.0.1-r1
+++ b/metadata/md5-cache/net-wireless/Wi-FiTestSuite-Linux-DUT-0.0.1-r1
@@ -8,5 +8,5 @@
 LICENSE=ISC
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ca042b0d39f9943aa76709e335e9ac06
diff --git a/metadata/md5-cache/net-wireless/Wi-FiTestSuite-Linux-DUT-9999 b/metadata/md5-cache/net-wireless/Wi-FiTestSuite-Linux-DUT-9999
index a45dfd4..45ce103 100644
--- a/metadata/md5-cache/net-wireless/Wi-FiTestSuite-Linux-DUT-9999
+++ b/metadata/md5-cache/net-wireless/Wi-FiTestSuite-Linux-DUT-9999
@@ -8,5 +8,5 @@
 LICENSE=ISC
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=5473ae4ec4bff2ee4b74189cf4b1448b
diff --git a/metadata/md5-cache/net-wireless/ath3k-1-r4 b/metadata/md5-cache/net-wireless/ath3k-1-r4
deleted file mode 100644
index 35abb9d..0000000
--- a/metadata/md5-cache/net-wireless/ath3k-1-r4
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Atheros AR3012 firmware
-EAPI=4
-HOMEPAGE=http://www.atheros.com/
-IUSE=cros_host cros_workon_tree_50e0e93725a1202cb402f054fa71d7267c3f1107
-KEYWORDS=*
-LICENSE=Atheros
-PROPERTIES=live
-RESTRICT=binchecks
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=34c5eed7ac5a851219f92cbf6b778717
diff --git a/metadata/md5-cache/net-wireless/ath3k-9999 b/metadata/md5-cache/net-wireless/ath3k-9999
deleted file mode 100644
index 8acaf2e..0000000
--- a/metadata/md5-cache/net-wireless/ath3k-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Atheros AR3012 firmware
-EAPI=4
-HOMEPAGE=http://www.atheros.com/
-IUSE=cros_host cros_workon_tree_
-KEYWORDS=~*
-LICENSE=Atheros
-PROPERTIES=live
-RESTRICT=binchecks
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=fada673115f9b2fcaade264ef94e549c
diff --git a/metadata/md5-cache/net-wireless/bluez-5.54-r505 b/metadata/md5-cache/net-wireless/bluez-5.54-r505
deleted file mode 100644
index 44e0819..0000000
--- a/metadata/md5-cache/net-wireless/bluez-5.54-r505
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=>=dev-libs/glib-2.14:2= app-arch/bzip2:= sys-apps/dbus:= virtual/libudev:= cups? ( net-print/cups:= ) readline? ( sys-libs/readline:= ) >=chromeos-base/metrics-0.0.1-r3152:= dev-util/pkgconfig:= sys-devel/flex:= >=app-portage/elt-patches-20170815 virtual/pkgconfig virtual/pkgconfig dev-vcs/git
-DEFINED_PHASES=configure info install postinst prepare setup test unpack
-DEPEND=>=dev-libs/glib-2.14:2= app-arch/bzip2:= sys-apps/dbus:= virtual/libudev:= cups? ( net-print/cups:= ) readline? ( sys-libs/readline:= ) >=chromeos-base/metrics-0.0.1-r3152:= !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-DESCRIPTION=Bluetooth Tools and System Daemons for Linux
-EAPI=7
-HOMEPAGE=http://www.bluez.org/
-IUSE=asan bluez-next bluez-upstream cups debug systemd readline bt_deprecated_tools cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_5453e3acdb5ecf1e4db9a9ae5ce6fd3d5fb7940a_5453e3acdb5ecf1e4db9a9ae5ce6fd3d5fb7940a_6fd5d8ac2220b7e8e188c956b786ba71d1658453
-KEYWORDS=*
-LICENSE=GPL-2 LGPL-2.1
-PROPERTIES=live
-RDEPEND=>=dev-libs/glib-2.14:2= app-arch/bzip2:= sys-apps/dbus:= virtual/libudev:= cups? ( net-print/cups:= ) readline? ( sys-libs/readline:= ) >=chromeos-base/metrics-0.0.1-r3152:= !net-wireless/bluez-hcidump !net-wireless/bluez-libs !net-wireless/bluez-test !net-wireless/bluez-utils sys-apps/baselayout >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
-REQUIRED_USE=?? ( bluez-next bluez-upstream )
-SLOT=0/5.54-r505
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=687e9a2b55e7d9a7dd9bc0d2bd28c28b
diff --git a/metadata/md5-cache/net-wireless/bluez-5.54-r597 b/metadata/md5-cache/net-wireless/bluez-5.54-r597
new file mode 100644
index 0000000..87ac8ae
--- /dev/null
+++ b/metadata/md5-cache/net-wireless/bluez-5.54-r597
@@ -0,0 +1,15 @@
+BDEPEND=>=dev-libs/glib-2.14:2= app-arch/bzip2:= sys-apps/dbus:= virtual/libudev:= cups? ( net-print/cups:= ) readline? ( sys-libs/readline:= ) >=chromeos-base/metrics-0.0.1-r3152:= dev-util/pkgconfig:= sys-devel/flex:= >=app-portage/elt-patches-20170815 virtual/pkgconfig virtual/pkgconfig dev-vcs/git
+DEFINED_PHASES=configure info install postinst prepare setup test unpack
+DEPEND=>=dev-libs/glib-2.14:2= app-arch/bzip2:= sys-apps/dbus:= virtual/libudev:= cups? ( net-print/cups:= ) readline? ( sys-libs/readline:= ) >=chromeos-base/metrics-0.0.1-r3152:= !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 sys-apps/baselayout >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+DESCRIPTION=Bluetooth Tools and System Daemons for Linux
+EAPI=7
+HOMEPAGE=http://www.bluez.org/
+IUSE=asan bluez-next bluez-upstream cups debug fuzzer hid2hci systemd readline bt_deprecated_tools cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_f6a13bc35a4fee801b0556bde9b43556aa7b6fce_f6a13bc35a4fee801b0556bde9b43556aa7b6fce_222eadaf67220ca68aa38117b584ffa2075edf43
+KEYWORDS=*
+LICENSE=GPL-2 LGPL-2.1
+PROPERTIES=live
+RDEPEND=>=dev-libs/glib-2.14:2= app-arch/bzip2:= sys-apps/dbus:= virtual/libudev:= cups? ( net-print/cups:= ) readline? ( sys-libs/readline:= ) >=chromeos-base/metrics-0.0.1-r3152:= !net-wireless/bluez-hcidump !net-wireless/bluez-libs !net-wireless/bluez-test !net-wireless/bluez-utils sys-apps/baselayout >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] virtual/tmpfiles
+REQUIRED_USE=?? ( bluez-next bluez-upstream )
+SLOT=0/5.54-r597
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=370962028fbe298ce4463608a3920733
diff --git a/metadata/md5-cache/net-wireless/bluez-9999 b/metadata/md5-cache/net-wireless/bluez-9999
index 1db6e3c..4ee391c 100644
--- a/metadata/md5-cache/net-wireless/bluez-9999
+++ b/metadata/md5-cache/net-wireless/bluez-9999
@@ -4,12 +4,12 @@
 DESCRIPTION=Bluetooth Tools and System Daemons for Linux
 EAPI=7
 HOMEPAGE=http://www.bluez.org/
-IUSE=asan bluez-next bluez-upstream cups debug systemd readline bt_deprecated_tools cros-debug asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
+IUSE=asan bluez-next bluez-upstream cups debug fuzzer hid2hci systemd readline bt_deprecated_tools cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=GPL-2 LGPL-2.1
 PROPERTIES=live
-RDEPEND=>=dev-libs/glib-2.14:2= app-arch/bzip2:= sys-apps/dbus:= virtual/libudev:= cups? ( net-print/cups:= ) readline? ( sys-libs/readline:= ) >=chromeos-base/metrics-0.0.1-r3152:= !net-wireless/bluez-hcidump !net-wireless/bluez-libs !net-wireless/bluez-test !net-wireless/bluez-utils sys-apps/baselayout >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=]
+RDEPEND=>=dev-libs/glib-2.14:2= app-arch/bzip2:= sys-apps/dbus:= virtual/libudev:= cups? ( net-print/cups:= ) readline? ( sys-libs/readline:= ) >=chromeos-base/metrics-0.0.1-r3152:= !net-wireless/bluez-hcidump !net-wireless/bluez-libs !net-wireless/bluez-test !net-wireless/bluez-utils sys-apps/baselayout >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] virtual/tmpfiles
 REQUIRED_USE=?? ( bluez-next bluez-upstream )
 SLOT=0/9999
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=79a354332e6c3763bf8771e9f9df64a0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	tmpfiles	6170dc7770585fb3f16efdee789a3218	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=62e785f2feb72b15b217404c63d70c7e
diff --git a/metadata/md5-cache/net-wireless/crda-3.18-r5 b/metadata/md5-cache/net-wireless/crda-3.18-r6
similarity index 100%
rename from metadata/md5-cache/net-wireless/crda-3.18-r5
rename to metadata/md5-cache/net-wireless/crda-3.18-r6
diff --git a/metadata/md5-cache/net-wireless/hostap-test-0.0.1-r25 b/metadata/md5-cache/net-wireless/hostap-test-0.0.1-r25
deleted file mode 100644
index 1837598..0000000
--- a/metadata/md5-cache/net-wireless/hostap-test-0.0.1-r25
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=dev-libs/libnl:3= dev-libs/openssl:0= net-libs/libpcap:=
-DESCRIPTION=Test package for the hostap project, intended for a VM
-EAPI=7
-HOMEPAGE=https://w1.fi
-IUSE=dbus asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_6d582cf0466d6c65df648fffaf3dc947511ac537 python_targets_python3_6 python_targets_python3_7
-KEYWORDS=*
-LICENSE=BSD
-PROPERTIES=live
-RDEPEND=dev-libs/libnl:3= dev-libs/openssl:0= net-libs/libpcap:= python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dbus? ( dev-python/dbus-python[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/pygobject[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] sys-apps/dbus ) dev-python/pycryptodome[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/pyrad[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] net-analyzer/wireshark net-wireless/crda python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 ) || ( python_targets_python3_6 python_targets_python3_7 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4effd658ad2fa2613ee7e9081d802944
diff --git a/metadata/md5-cache/net-wireless/hostap-test-0.0.1-r37 b/metadata/md5-cache/net-wireless/hostap-test-0.0.1-r37
new file mode 100644
index 0000000..da84663
--- /dev/null
+++ b/metadata/md5-cache/net-wireless/hostap-test-0.0.1-r37
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=dev-libs/libnl:3= dev-libs/openssl:0= net-libs/libpcap:=
+DESCRIPTION=Test package for the hostap project, intended for a VM
+EAPI=7
+HOMEPAGE=https://w1.fi
+IUSE=dbus asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_76ef3707eefe49ae08b8c889ada1c4a987fbaa6e python_targets_python3_6 python_targets_python3_7
+KEYWORDS=*
+LICENSE=BSD
+PROPERTIES=live
+RDEPEND=dev-libs/libnl:3= dev-libs/openssl:0= net-libs/libpcap:= python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dbus? ( dev-python/dbus-python[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/pygobject[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] sys-apps/dbus ) dev-python/pycryptodome[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/pyrad[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] net-analyzer/wireshark net-wireless/crda python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 ) || ( python_targets_python3_6 python_targets_python3_7 )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=55e3ca6459a5a24d7324626e15872f4e
diff --git a/metadata/md5-cache/net-wireless/hostap-test-9999 b/metadata/md5-cache/net-wireless/hostap-test-9999
index 6ce34b0..dab9a24 100644
--- a/metadata/md5-cache/net-wireless/hostap-test-9999
+++ b/metadata/md5-cache/net-wireless/hostap-test-9999
@@ -11,5 +11,5 @@
 RDEPEND=dev-libs/libnl:3= dev-libs/openssl:0= net-libs/libpcap:= python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dbus? ( dev-python/dbus-python[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/pygobject[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] sys-apps/dbus ) dev-python/pycryptodome[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/pyrad[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)] net-analyzer/wireshark net-wireless/crda python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
 REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 ) || ( python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=78089c2269b73289dfea55cb4c537c8c
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=098055317c1edba83e9240ee8b4e5557
diff --git a/metadata/md5-cache/net-wireless/hostapd-2.9-r147 b/metadata/md5-cache/net-wireless/hostapd-2.9-r147
deleted file mode 100644
index 9a5a13c..0000000
--- a/metadata/md5-cache/net-wireless/hostapd-2.9-r147
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst setup unpack
-DEPEND=libressl? ( dev-libs/libressl:0= ) !libressl? ( internal-tls? ( dev-libs/libtommath ) !internal-tls? ( dev-libs/openssl:0=[-bindist] ) ) kernel_linux? ( dev-libs/libnl:3 crda? ( net-wireless/crda ) ) netlink? ( net-libs/libnfnetlink ) sqlite? ( >=dev-db/sqlite-3 )
-DESCRIPTION=IEEE 802.11 wireless LAN Host AP daemon
-EAPI=6
-HOMEPAGE=http://w1.fi
-IUSE=internal-tls ipv6 libressl logwatch netlink sqlite +suiteb +wps +crda cros_host cros_workon_tree_6d582cf0466d6c65df648fffaf3dc947511ac537 savedconfig
-KEYWORDS=*
-LICENSE=BSD
-PROPERTIES=live
-RDEPEND=libressl? ( dev-libs/libressl:0= ) !libressl? ( internal-tls? ( dev-libs/libtommath ) !internal-tls? ( dev-libs/openssl:0=[-bindist] ) ) kernel_linux? ( dev-libs/libnl:3 crda? ( net-wireless/crda ) ) netlink? ( net-libs/libnfnetlink ) sqlite? ( >=dev-db/sqlite-3 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	portability	536c5e70c5fb252ed3b769e04aa3f05b	preserve-libs	ef207dc62baddfddfd39a164d9797648	savedconfig	973a6df1a0949eba28a185eac79de815	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=b73c7d77e2181c7bb7e032e9a08bb48a
diff --git a/metadata/md5-cache/net-wireless/hostapd-2.9-r159 b/metadata/md5-cache/net-wireless/hostapd-2.9-r159
new file mode 100644
index 0000000..f2c8b60
--- /dev/null
+++ b/metadata/md5-cache/net-wireless/hostapd-2.9-r159
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install postinst setup unpack
+DEPEND=libressl? ( dev-libs/libressl:0= ) !libressl? ( internal-tls? ( dev-libs/libtommath ) !internal-tls? ( dev-libs/openssl:0=[-bindist] ) ) kernel_linux? ( dev-libs/libnl:3 crda? ( net-wireless/crda ) ) netlink? ( net-libs/libnfnetlink ) sqlite? ( >=dev-db/sqlite-3 )
+DESCRIPTION=IEEE 802.11 wireless LAN Host AP daemon
+EAPI=6
+HOMEPAGE=http://w1.fi
+IUSE=internal-tls ipv6 libressl logwatch netlink sqlite +suiteb +wps +crda cros_host cros_workon_tree_76ef3707eefe49ae08b8c889ada1c4a987fbaa6e savedconfig
+KEYWORDS=*
+LICENSE=BSD
+PROPERTIES=live
+RDEPEND=libressl? ( dev-libs/libressl:0= ) !libressl? ( internal-tls? ( dev-libs/libtommath ) !internal-tls? ( dev-libs/openssl:0=[-bindist] ) ) kernel_linux? ( dev-libs/libnl:3 crda? ( net-wireless/crda ) ) netlink? ( net-libs/libnfnetlink ) sqlite? ( >=dev-db/sqlite-3 )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	portability	536c5e70c5fb252ed3b769e04aa3f05b	preserve-libs	ef207dc62baddfddfd39a164d9797648	savedconfig	973a6df1a0949eba28a185eac79de815	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=5f06051c79fbc1b6908666c4270df531
diff --git a/metadata/md5-cache/net-wireless/hostapd-9999 b/metadata/md5-cache/net-wireless/hostapd-9999
index d389244..395a8f3 100644
--- a/metadata/md5-cache/net-wireless/hostapd-9999
+++ b/metadata/md5-cache/net-wireless/hostapd-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=libressl? ( dev-libs/libressl:0= ) !libressl? ( internal-tls? ( dev-libs/libtommath ) !internal-tls? ( dev-libs/openssl:0=[-bindist] ) ) kernel_linux? ( dev-libs/libnl:3 crda? ( net-wireless/crda ) ) netlink? ( net-libs/libnfnetlink ) sqlite? ( >=dev-db/sqlite-3 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	portability	536c5e70c5fb252ed3b769e04aa3f05b	preserve-libs	ef207dc62baddfddfd39a164d9797648	savedconfig	973a6df1a0949eba28a185eac79de815	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=c76fe822ad03145b8c054a2e25a5a99b
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	portability	536c5e70c5fb252ed3b769e04aa3f05b	preserve-libs	ef207dc62baddfddfd39a164d9797648	savedconfig	973a6df1a0949eba28a185eac79de815	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=69efaf2000fb73dfdf2da87ab5daefc8
diff --git a/metadata/md5-cache/net-wireless/iw-5.4 b/metadata/md5-cache/net-wireless/iw-5.4
deleted file mode 100644
index c3adf57..0000000
--- a/metadata/md5-cache/net-wireless/iw-5.4
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=virtual/pkgconfig
-DEFINED_PHASES=compile install prepare
-DEPEND=dev-libs/libnl:=
-DESCRIPTION=nl80211-based configuration utility for wireless devices using the mac80211 kernel stack
-EAPI=7
-HOMEPAGE=https://wireless.kernel.org/en/users/Documentation/iw
-KEYWORDS=*
-LICENSE=ISC
-RDEPEND=dev-libs/libnl:=
-SLOT=0
-SRC_URI=https://www.kernel.org/pub/software/network/iw/iw-5.4.tar.xz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b4ead33020da8daba5a1868d42d082f5
diff --git a/metadata/md5-cache/net-wireless/iw-5.4-r1 b/metadata/md5-cache/net-wireless/iw-5.4-r1
deleted file mode 100644
index c3adf57..0000000
--- a/metadata/md5-cache/net-wireless/iw-5.4-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=virtual/pkgconfig
-DEFINED_PHASES=compile install prepare
-DEPEND=dev-libs/libnl:=
-DESCRIPTION=nl80211-based configuration utility for wireless devices using the mac80211 kernel stack
-EAPI=7
-HOMEPAGE=https://wireless.kernel.org/en/users/Documentation/iw
-KEYWORDS=*
-LICENSE=ISC
-RDEPEND=dev-libs/libnl:=
-SLOT=0
-SRC_URI=https://www.kernel.org/pub/software/network/iw/iw-5.4.tar.xz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b4ead33020da8daba5a1868d42d082f5
diff --git a/metadata/md5-cache/net-wireless/iw-5.9 b/metadata/md5-cache/net-wireless/iw-5.9
new file mode 100644
index 0000000..7f47888
--- /dev/null
+++ b/metadata/md5-cache/net-wireless/iw-5.9
@@ -0,0 +1,13 @@
+BDEPEND=virtual/pkgconfig
+DEFINED_PHASES=compile install prepare
+DEPEND=dev-libs/libnl:=
+DESCRIPTION=nl80211 configuration utility for wireless devices using the mac80211 stack
+EAPI=7
+HOMEPAGE=https://wireless.wiki.kernel.org/en/users/Documentation/iw
+KEYWORDS=*
+LICENSE=ISC
+RDEPEND=dev-libs/libnl:=
+SLOT=0
+SRC_URI=https://www.kernel.org/pub/software/network/iw/iw-5.9.tar.xz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=15a87fd525124b841a0047d74d6bbb19
diff --git a/metadata/md5-cache/net-wireless/iw-5.9-r3 b/metadata/md5-cache/net-wireless/iw-5.9-r3
new file mode 100644
index 0000000..7f47888
--- /dev/null
+++ b/metadata/md5-cache/net-wireless/iw-5.9-r3
@@ -0,0 +1,13 @@
+BDEPEND=virtual/pkgconfig
+DEFINED_PHASES=compile install prepare
+DEPEND=dev-libs/libnl:=
+DESCRIPTION=nl80211 configuration utility for wireless devices using the mac80211 stack
+EAPI=7
+HOMEPAGE=https://wireless.wiki.kernel.org/en/users/Documentation/iw
+KEYWORDS=*
+LICENSE=ISC
+RDEPEND=dev-libs/libnl:=
+SLOT=0
+SRC_URI=https://www.kernel.org/pub/software/network/iw/iw-5.9.tar.xz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=15a87fd525124b841a0047d74d6bbb19
diff --git a/metadata/md5-cache/net-wireless/marvell_sd8787-14.64.2.47-r60 b/metadata/md5-cache/net-wireless/marvell_sd8787-14.64.2.47-r60
deleted file mode 100644
index a5bafd6..0000000
--- a/metadata/md5-cache/net-wireless/marvell_sd8787-14.64.2.47-r60
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Marvell SD8787 firmware image
-EAPI=4
-HOMEPAGE=http://www.marvell.com/
-IUSE=pcie cros_host cros_workon_tree_96903a8ed3af141cbbf01b6ec074e5a95fc3dc9d
-KEYWORDS=*
-LICENSE=Marvell-sd8787
-PROPERTIES=live
-RESTRICT=binchecks strip test
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=4c07553b942b2219cad62ac6c2c61606
diff --git a/metadata/md5-cache/net-wireless/marvell_sd8787-14.64.2.47-r62 b/metadata/md5-cache/net-wireless/marvell_sd8787-14.64.2.47-r62
new file mode 100644
index 0000000..5c5ebdd
--- /dev/null
+++ b/metadata/md5-cache/net-wireless/marvell_sd8787-14.64.2.47-r62
@@ -0,0 +1,12 @@
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Marvell SD8787 firmware image
+EAPI=4
+HOMEPAGE=http://www.marvell.com/
+IUSE=pcie cros_host cros_workon_tree_a0e0d6a8237cfff8d336dce79ae184b0dfd8204e
+KEYWORDS=*
+LICENSE=Marvell-sd8787
+PROPERTIES=live
+RESTRICT=binchecks strip test
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=2a8de96f0a33c0234da94857a68e3be4
diff --git a/metadata/md5-cache/net-wireless/marvell_sd8787-9999 b/metadata/md5-cache/net-wireless/marvell_sd8787-9999
index 0f4e93d..4019269 100644
--- a/metadata/md5-cache/net-wireless/marvell_sd8787-9999
+++ b/metadata/md5-cache/net-wireless/marvell_sd8787-9999
@@ -8,5 +8,5 @@
 PROPERTIES=live
 RESTRICT=binchecks strip test
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=51f0967d3fbe6feb73b362e6a80c2c5b
diff --git a/metadata/md5-cache/net-wireless/systembt-0.0.1-r46 b/metadata/md5-cache/net-wireless/systembt-0.0.1-r46
new file mode 100644
index 0000000..0dad83a
--- /dev/null
+++ b/metadata/md5-cache/net-wireless/systembt-0.0.1-r46
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/modp_b64:= dev-libs/tinyxml2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Bluetooth Tools and System Daemons for Linux
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/system/bt/
+IUSE=bt-bringup cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_3cc6ea87ef525e84c9ed2cbf6809a6a4895b4ad4_1e793181081ea50dec9407274b86bde3dfe50a71 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb_3cc6ea87ef525e84c9ed2cbf6809a6a4895b4ad4_1e793181081ea50dec9407274b86bde3dfe50a71 cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=Apache-2.0
+PROPERTIES=live live
+RDEPEND=dev-libs/modp_b64:= dev-libs/tinyxml2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=?? ( bt-bringup )
+SLOT=0/0.0.1-r46
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=466fc4d890067d59637d5c22344a7ec0
diff --git a/metadata/md5-cache/net-wireless/systembt-9999 b/metadata/md5-cache/net-wireless/systembt-9999
new file mode 100644
index 0000000..b779f18
--- /dev/null
+++ b/metadata/md5-cache/net-wireless/systembt-9999
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=dev-libs/modp_b64:= dev-libs/tinyxml2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Bluetooth Tools and System Daemons for Linux
+EAPI=7
+HOMEPAGE=https://android.googlesource.com/platform/system/bt/
+IUSE=bt-bringup cros_host cros_workon_tree_ cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_ cros-debug compilation_database cros_host test
+KEYWORDS=~*
+LICENSE=Apache-2.0
+PROPERTIES=live live
+RDEPEND=dev-libs/modp_b64:= dev-libs/tinyxml2:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+REQUIRED_USE=?? ( bt-bringup )
+SLOT=0/9999
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e94e1d07f83fc1a970429554648bee69
diff --git a/metadata/md5-cache/net-wireless/wpa_supplicant-2_9-2.9-r12 b/metadata/md5-cache/net-wireless/wpa_supplicant-2_9-2.9-r12
deleted file mode 100644
index 939edb5..0000000
--- a/metadata/md5-cache/net-wireless/wpa_supplicant-2_9-2.9-r12
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install postinst preinst prepare setup unpack
-DEPEND=chromeos-base/minijail dbus? ( sys-apps/dbus ) kernel_linux? ( dev-libs/libnl:3 net-wireless/crda ) !kernel_linux? ( net-libs/libpcap ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5 dev-qt/qtsvg:5 dev-qt/qtwidgets:5 ) readline? ( sys-libs/ncurses:0 sys-libs/readline:0 ) !libressl? ( dev-libs/openssl:0=[bindist=] ) libressl? ( dev-libs/libressl:0= ) smartcard? ( dev-libs/engine_pkcs11 ) virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=IEEE 802.1X/WPA supplicant for secure wireless transfers
-EAPI=7
-HOMEPAGE=https://w1.fi/wpa_supplicant/
-IUSE=ap bindist dbus debug eap-sim +hs2-0 libressl p2p ps3 qt5 readline selinux smartcard systemd +tdls uncommon-eap-types wifi_hostap_test wps kernel_linux kernel_FreeBSD wimax asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_6d582cf0466d6c65df648fffaf3dc947511ac537
-KEYWORDS=*
-LICENSE=|| ( GPL-2 BSD )
-PROPERTIES=live
-RDEPEND=chromeos-base/minijail dbus? ( sys-apps/dbus ) kernel_linux? ( dev-libs/libnl:3 net-wireless/crda ) !kernel_linux? ( net-libs/libpcap ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5 dev-qt/qtsvg:5 dev-qt/qtwidgets:5 ) readline? ( sys-libs/ncurses:0 sys-libs/readline:0 ) !libressl? ( dev-libs/openssl:0=[bindist=] ) libressl? ( dev-libs/libressl:0= ) smartcard? ( dev-libs/engine_pkcs11 ) !net-wireless/wpa_supplicant !net-wireless/wpa_supplicant-2_8 selinux? ( sec-policy/selinux-networkmanager ) sys-apps/baselayout
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	qmake-utils	bdf97e69a34b864d6d545f4ec3143ff7	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=071e3825d45a39fd77cd4220f1c2489e
diff --git a/metadata/md5-cache/net-wireless/wpa_supplicant-2_9-2.9-r27 b/metadata/md5-cache/net-wireless/wpa_supplicant-2_9-2.9-r27
new file mode 100644
index 0000000..a3fe312
--- /dev/null
+++ b/metadata/md5-cache/net-wireless/wpa_supplicant-2_9-2.9-r27
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install postinst preinst prepare setup unpack
+DEPEND=chromeos-base/minijail dbus? ( sys-apps/dbus ) kernel_linux? ( dev-libs/libnl:3 net-wireless/crda ) !kernel_linux? ( net-libs/libpcap ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5 dev-qt/qtsvg:5 dev-qt/qtwidgets:5 ) readline? ( sys-libs/ncurses:0 sys-libs/readline:0 ) !libressl? ( dev-libs/openssl:0=[bindist=] ) libressl? ( dev-libs/libressl:0= ) smartcard? ( dev-libs/engine_pkcs11 ) virtual/pkgconfig sys-apps/baselayout
+DESCRIPTION=IEEE 802.1X/WPA supplicant for secure wireless transfers
+EAPI=7
+HOMEPAGE=https://w1.fi/wpa_supplicant/
+IUSE=ap bindist dbus debug eap-sim +hs2-0 libressl mbo p2p ps3 qt5 readline +seccomp selinux smartcard systemd +tdls uncommon-eap-types wifi_hostap_test +wnm wps kernel_linux kernel_FreeBSD wimax asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_76ef3707eefe49ae08b8c889ada1c4a987fbaa6e
+KEYWORDS=*
+LICENSE=|| ( GPL-2 BSD )
+PROPERTIES=live
+RDEPEND=chromeos-base/minijail dbus? ( sys-apps/dbus ) kernel_linux? ( dev-libs/libnl:3 net-wireless/crda ) !kernel_linux? ( net-libs/libpcap ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5 dev-qt/qtsvg:5 dev-qt/qtwidgets:5 ) readline? ( sys-libs/ncurses:0 sys-libs/readline:0 ) !libressl? ( dev-libs/openssl:0=[bindist=] ) libressl? ( dev-libs/libressl:0= ) smartcard? ( dev-libs/engine_pkcs11 ) !net-wireless/wpa_supplicant !net-wireless/wpa_supplicant-2_8 selinux? ( sec-policy/selinux-networkmanager ) sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	qmake-utils	bdf97e69a34b864d6d545f4ec3143ff7	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=5b5da83376c9edb1226b70f6d1b6d139
diff --git a/metadata/md5-cache/net-wireless/wpa_supplicant-2_9-9999 b/metadata/md5-cache/net-wireless/wpa_supplicant-2_9-9999
index 1b0c022..e19352d 100644
--- a/metadata/md5-cache/net-wireless/wpa_supplicant-2_9-9999
+++ b/metadata/md5-cache/net-wireless/wpa_supplicant-2_9-9999
@@ -4,11 +4,11 @@
 DESCRIPTION=IEEE 802.1X/WPA supplicant for secure wireless transfers
 EAPI=7
 HOMEPAGE=https://w1.fi/wpa_supplicant/
-IUSE=ap bindist dbus debug eap-sim +hs2-0 libressl p2p ps3 qt5 readline selinux smartcard systemd +tdls uncommon-eap-types wifi_hostap_test wps kernel_linux kernel_FreeBSD wimax asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
+IUSE=ap bindist dbus debug eap-sim +hs2-0 libressl mbo p2p ps3 qt5 readline +seccomp selinux smartcard systemd +tdls uncommon-eap-types wifi_hostap_test +wnm wps kernel_linux kernel_FreeBSD wimax asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=|| ( GPL-2 BSD )
 PROPERTIES=live
 RDEPEND=chromeos-base/minijail dbus? ( sys-apps/dbus ) kernel_linux? ( dev-libs/libnl:3 net-wireless/crda ) !kernel_linux? ( net-libs/libpcap ) qt5? ( dev-qt/qtcore:5 dev-qt/qtgui:5 dev-qt/qtsvg:5 dev-qt/qtwidgets:5 ) readline? ( sys-libs/ncurses:0 sys-libs/readline:0 ) !libressl? ( dev-libs/openssl:0=[bindist=] ) libressl? ( dev-libs/libressl:0= ) smartcard? ( dev-libs/engine_pkcs11 ) !net-wireless/wpa_supplicant !net-wireless/wpa_supplicant-2_8 selinux? ( sec-policy/selinux-networkmanager ) sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	qmake-utils	bdf97e69a34b864d6d545f4ec3143ff7	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=bca6c226bfffc5b6355efae3b1b5390e
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	qmake-utils	bdf97e69a34b864d6d545f4ec3143ff7	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=9ab98584d9c0412f5fce0c4455c63a5e
diff --git a/metadata/md5-cache/sci-electronics/sigrok-cli-0.5.0-r17 b/metadata/md5-cache/sci-electronics/sigrok-cli-0.5.0-r17
index 7b3a9f5..8d84315 100644
--- a/metadata/md5-cache/sci-electronics/sigrok-cli-0.5.0-r17
+++ b/metadata/md5-cache/sci-electronics/sigrok-cli-0.5.0-r17
@@ -10,5 +10,5 @@
 RDEPEND=>=dev-libs/glib-2.28.0 >=sci-libs/libsigrok-0.3.0 decode? ( >=sci-libs/libsigrokdecode-0.3.0 python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) )
 REQUIRED_USE=decode? ( ^^ ( python_single_target_python3_6 ) )
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=0ace0df1510b176b35ebbbeacba2bc78
diff --git a/metadata/md5-cache/sci-electronics/sigrok-cli-9999 b/metadata/md5-cache/sci-electronics/sigrok-cli-9999
index e4d3da7..2a22cbf 100644
--- a/metadata/md5-cache/sci-electronics/sigrok-cli-9999
+++ b/metadata/md5-cache/sci-electronics/sigrok-cli-9999
@@ -10,5 +10,5 @@
 RDEPEND=>=dev-libs/glib-2.28.0 >=sci-libs/libsigrok-0.3.0 decode? ( >=sci-libs/libsigrokdecode-0.3.0 python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) )
 REQUIRED_USE=decode? ( ^^ ( python_single_target_python3_6 ) )
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=3dd3de327fd977ff6651953a5db4be75
diff --git a/metadata/md5-cache/sci-libs/libsigrok-0.3.0-r68 b/metadata/md5-cache/sci-libs/libsigrok-0.3.0-r68
index 6f9d4c7..4d157f4 100644
--- a/metadata/md5-cache/sci-libs/libsigrok-0.3.0-r68
+++ b/metadata/md5-cache/sci-libs/libsigrok-0.3.0-r68
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!static-libs? ( >=dev-libs/glib-2.32.0 >=dev-libs/libzip-0.8 ftdi? ( >=dev-embedded/libftdi-0.16 ) serial? ( dev-libs/libserialport ) usb? ( virtual/libusb:1 ) ) static-libs? ( >=dev-libs/glib-2.32.0[static-libs(+)] >=dev-libs/libzip-0.8[static-libs(+)] ftdi? ( >=dev-embedded/libftdi-0.16[static-libs(+)] ) serial? ( dev-libs/libserialport[static-libs(+)] ) usb? ( virtual/libusb:1[static-libs(+)] ) )
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=e79b160e9b5913dde82774cc14c8a0e2
diff --git a/metadata/md5-cache/sci-libs/libsigrok-9999 b/metadata/md5-cache/sci-libs/libsigrok-9999
index 3150253..5b5e276 100644
--- a/metadata/md5-cache/sci-libs/libsigrok-9999
+++ b/metadata/md5-cache/sci-libs/libsigrok-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 RDEPEND=!static-libs? ( >=dev-libs/glib-2.32.0 >=dev-libs/libzip-0.8 ftdi? ( >=dev-embedded/libftdi-0.16 ) serial? ( dev-libs/libserialport ) usb? ( virtual/libusb:1 ) ) static-libs? ( >=dev-libs/glib-2.32.0[static-libs(+)] >=dev-libs/libzip-0.8[static-libs(+)] ftdi? ( >=dev-embedded/libftdi-0.16[static-libs(+)] ) serial? ( dev-libs/libserialport[static-libs(+)] ) usb? ( virtual/libusb:1[static-libs(+)] ) )
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=f83fa6896a895d8c697f016b0827a02f
diff --git a/metadata/md5-cache/sci-libs/libsigrokdecode-0.3.0-r21 b/metadata/md5-cache/sci-libs/libsigrokdecode-0.3.0-r21
index 21a513c..1eb3b9c 100644
--- a/metadata/md5-cache/sci-libs/libsigrokdecode-0.3.0-r21
+++ b/metadata/md5-cache/sci-libs/libsigrokdecode-0.3.0-r21
@@ -10,5 +10,5 @@
 RDEPEND=>=dev-libs/glib-2.24.0 python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] )
 REQUIRED_USE=^^ ( python_single_target_python3_6 )
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=8cf327046e9dbc351406ec08c547155a
diff --git a/metadata/md5-cache/sci-libs/libsigrokdecode-9999 b/metadata/md5-cache/sci-libs/libsigrokdecode-9999
index ecd680a..da562e8 100644
--- a/metadata/md5-cache/sci-libs/libsigrokdecode-9999
+++ b/metadata/md5-cache/sci-libs/libsigrokdecode-9999
@@ -10,5 +10,5 @@
 RDEPEND=>=dev-libs/glib-2.24.0 python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] )
 REQUIRED_USE=^^ ( python_single_target_python3_6 )
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=73d40369ee5e89fd4a7327d6d13ab4b4
diff --git a/metadata/md5-cache/sci-libs/tensorflow-1.14.0 b/metadata/md5-cache/sci-libs/tensorflow-1.14.0
index 54bd63a..6db855a 100644
--- a/metadata/md5-cache/sci-libs/tensorflow-1.14.0
+++ b/metadata/md5-cache/sci-libs/tensorflow-1.14.0
@@ -12,5 +12,5 @@
 REQUIRED_USE=python? ( || ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 ) !minimal )
 SLOT=0
 SRC_URI=https://github.com/tensorflow/tensorflow/archive/v1.14.0.tar.gz -> tensorflow-1.14.0.tar.gz http://www.kurims.kyoto-u.ac.jp/~ooura/fft.tgz -> oourafft-20061228.tgz https://bitbucket.org/eigen/eigen/get/a0d250e79c79.tar.gz -> eigen-a0d250e79c79.tar.gz https://github.com/abseil/abseil-cpp/archive/daf381e8535a1f1f1b8a75966a74e7cca63dee89.tar.gz -> abseil-cpp-daf381e8535a1f1f1b8a75966a74e7cca63dee89.tar.gz https://github.com/bazelbuild/bazel-skylib/archive/0.6.0.tar.gz -> bazel-skylib-0.6.0.tar.gz https://github.com/bazelbuild/rules_closure/archive/cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz -> bazelbuild-rules_closure-cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz https://github.com/bazelbuild/rules_docker/archive/b8ff6a85ec359db3fd5657accd3e524daf12016d.tar.gz -> rules_docker-b8ff6a85ec359db3fd5657accd3e524daf12016d.tar.gz https://github.com/bazelbuild/rules_swift/releases/download/0.9.0/rules_swift.0.9.0.tar.gz -> bazelbuild-rules_swift.0.9.0.tar.gz https://github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz -> farmhash-816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz https://github.com/google/gemmlowp/archive/12fed0cd7cfcd9e169bf1925bc3a7a58725fdcc3.zip -> gemmlowp-12fed0cd7cfcd9e169bf1925bc3a7a58725fdcc3.zip https://github.com/google/highwayhash/archive/fd3d9af80465e4383162e4a7c5e2f406e82dd968.tar.gz -> highwayhash-fd3d9af80465e4383162e4a7c5e2f406e82dd968.tar.gz https://github.com/intel/ARM_NEON_2_x86_SSE/archive/1200fe90bb174a6224a525ee60148671a786a71f.tar.gz -> ARM_NEON_2_x86_SSE-1200fe90bb174a6224a525ee60148671a786a71f.tar.gz https://github.com/nlopezgi/bazel-toolchains/archive/94d31935a2c94fe7e7c7379a0f3393e181928ff7.tar.gz -> bazel-toolchains-94d31935a2c94fe7e7c7379a0f3393e181928ff7.tar.gz cuda? ( https://github.com/nvidia/nccl/archive/f93fe9bfd94884cec2ba711897222e0df5569a53.tar.gz -> nvidia-nccl-f93fe9bfd94884cec2ba711897222e0df5569a53.tar.gz https://github.com/NVlabs/cub/archive/1.8.0.zip -> cub-1.8.0.zip ) python? ( http://mirror.tensorflow.org/docs.python.org/2.7/_sources/license.rst.txt -> tensorflow-1.14.0-python-license.rst.txt https://pypi.python.org/packages/bc/cc/3cdb0a02e7e96f6c70bd971bc8a90b8463fda83e264fa9c5c1c98ceabd81/backports.weakref-1.0rc1.tar.gz )
-_eclasses_=bazel	592c42af547e54af23ac236ca7b2af14	check-reqs	74c98e9a7b34b32be3548357852e9ec3	cros-bazel	25596f146e3e31b4732609dc5dcbb8c6	cuda	bb861e5221b7272ac90c2f12791c1e66	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=bazel	754d004c54b3ac8a286975d232cbab17	check-reqs	74c98e9a7b34b32be3548357852e9ec3	cros-bazel	f8f1ddf279e2cce6ed2320142f477dbf	cuda	bb861e5221b7272ac90c2f12791c1e66	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=7799a5c27dbdbdc583ccfc1326916e8d
diff --git a/metadata/md5-cache/sci-libs/tensorflow-1.14.0-r13 b/metadata/md5-cache/sci-libs/tensorflow-1.14.0-r13
index 54bd63a..6db855a 100644
--- a/metadata/md5-cache/sci-libs/tensorflow-1.14.0-r13
+++ b/metadata/md5-cache/sci-libs/tensorflow-1.14.0-r13
@@ -12,5 +12,5 @@
 REQUIRED_USE=python? ( || ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 ) !minimal )
 SLOT=0
 SRC_URI=https://github.com/tensorflow/tensorflow/archive/v1.14.0.tar.gz -> tensorflow-1.14.0.tar.gz http://www.kurims.kyoto-u.ac.jp/~ooura/fft.tgz -> oourafft-20061228.tgz https://bitbucket.org/eigen/eigen/get/a0d250e79c79.tar.gz -> eigen-a0d250e79c79.tar.gz https://github.com/abseil/abseil-cpp/archive/daf381e8535a1f1f1b8a75966a74e7cca63dee89.tar.gz -> abseil-cpp-daf381e8535a1f1f1b8a75966a74e7cca63dee89.tar.gz https://github.com/bazelbuild/bazel-skylib/archive/0.6.0.tar.gz -> bazel-skylib-0.6.0.tar.gz https://github.com/bazelbuild/rules_closure/archive/cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz -> bazelbuild-rules_closure-cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz https://github.com/bazelbuild/rules_docker/archive/b8ff6a85ec359db3fd5657accd3e524daf12016d.tar.gz -> rules_docker-b8ff6a85ec359db3fd5657accd3e524daf12016d.tar.gz https://github.com/bazelbuild/rules_swift/releases/download/0.9.0/rules_swift.0.9.0.tar.gz -> bazelbuild-rules_swift.0.9.0.tar.gz https://github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz -> farmhash-816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz https://github.com/google/gemmlowp/archive/12fed0cd7cfcd9e169bf1925bc3a7a58725fdcc3.zip -> gemmlowp-12fed0cd7cfcd9e169bf1925bc3a7a58725fdcc3.zip https://github.com/google/highwayhash/archive/fd3d9af80465e4383162e4a7c5e2f406e82dd968.tar.gz -> highwayhash-fd3d9af80465e4383162e4a7c5e2f406e82dd968.tar.gz https://github.com/intel/ARM_NEON_2_x86_SSE/archive/1200fe90bb174a6224a525ee60148671a786a71f.tar.gz -> ARM_NEON_2_x86_SSE-1200fe90bb174a6224a525ee60148671a786a71f.tar.gz https://github.com/nlopezgi/bazel-toolchains/archive/94d31935a2c94fe7e7c7379a0f3393e181928ff7.tar.gz -> bazel-toolchains-94d31935a2c94fe7e7c7379a0f3393e181928ff7.tar.gz cuda? ( https://github.com/nvidia/nccl/archive/f93fe9bfd94884cec2ba711897222e0df5569a53.tar.gz -> nvidia-nccl-f93fe9bfd94884cec2ba711897222e0df5569a53.tar.gz https://github.com/NVlabs/cub/archive/1.8.0.zip -> cub-1.8.0.zip ) python? ( http://mirror.tensorflow.org/docs.python.org/2.7/_sources/license.rst.txt -> tensorflow-1.14.0-python-license.rst.txt https://pypi.python.org/packages/bc/cc/3cdb0a02e7e96f6c70bd971bc8a90b8463fda83e264fa9c5c1c98ceabd81/backports.weakref-1.0rc1.tar.gz )
-_eclasses_=bazel	592c42af547e54af23ac236ca7b2af14	check-reqs	74c98e9a7b34b32be3548357852e9ec3	cros-bazel	25596f146e3e31b4732609dc5dcbb8c6	cuda	bb861e5221b7272ac90c2f12791c1e66	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=bazel	754d004c54b3ac8a286975d232cbab17	check-reqs	74c98e9a7b34b32be3548357852e9ec3	cros-bazel	f8f1ddf279e2cce6ed2320142f477dbf	cuda	bb861e5221b7272ac90c2f12791c1e66	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=7799a5c27dbdbdc583ccfc1326916e8d
diff --git a/metadata/md5-cache/sci-libs/tensorflow-2.3.1 b/metadata/md5-cache/sci-libs/tensorflow-2.3.1
deleted file mode 100644
index be6357c..0000000
--- a/metadata/md5-cache/sci-libs/tensorflow-2.3.1
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=app-arch/unzip >=dev-libs/protobuf-3.8.0 dev-java/java-config dev-lang/swig !minimal? ( =dev-util/bazel-3* ) cuda? ( >=dev-util/nvidia-cuda-toolkit-9.1[profiler] ) !python? ( dev-lang/python ) python? ( dev-python/cython dev-python/mock >=dev-python/grpcio-tools-1.28 ) >=dev-util/bazel-0.20
-DEFINED_PHASES=compile configure install prepare setup unpack
-DEPEND=!minimal? ( app-arch/snappy dev-db/lmdb dev-db/sqlite dev-libs/double-conversion dev-libs/icu >=dev-libs/jsoncpp-1.9.2 ) dev-libs/libpcre !minimal? ( dev-libs/nsync ) dev-libs/openssl:0= >=dev-libs/protobuf-3.8.0:= >=dev-libs/re2-0.2019.06.01 !minimal? ( media-libs/giflib ) media-libs/libjpeg-turbo media-libs/libpng:0 !minimal? ( >=net-libs/grpc-1.28 ) net-misc/curl sys-libs/zlib !minimal? ( >=sys-apps/hwloc-2 ) cuda? ( || ( ( =dev-util/nvidia-cuda-toolkit-10.2*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.1*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.0*[profiler] =dev-libs/cudnn-7.4* ) ( =dev-util/nvidia-cuda-toolkit-9.2*[profiler] =dev-libs/cudnn-7.1* ) ( =dev-util/nvidia-cuda-toolkit-9.1*[profiler] =dev-libs/cudnn-7.0* ) ) ) mpi? ( virtual/mpi ) python? ( python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-libs/flatbuffers-1.12.0:= dev-python/absl-py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/astor-0.7.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/astunparse[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/gast-0.3.3[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/h5py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/numpy-1.19[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/google-pasta-0.1.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/opt-einsum[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/protobuf-python-3.8.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/pybind11[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/six[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/termcolor[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/grpcio-1.28[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/wrapt-1.11.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=net-libs/google-cloud-cpp-0.10.0 >=sci-libs/keras-applications-1.0.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-libs/keras-preprocessing-1.1.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-visualization/tensorboard-2.3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/dill[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/tblib[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) python? ( dev-python/mock dev-python/setuptools )
-DESCRIPTION=Computation framework using data flow graphs for scalable machine learning
-EAPI=7
-HOMEPAGE=https://www.tensorflow.org/
-IUSE=cuda mpi +python xla minimal label_image benchmark_model python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
-KEYWORDS=*
-LICENSE=Apache-2.0
-PDEPEND=python? ( >=sci-libs/tensorflow-estimator-2.3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] )
-RDEPEND=!minimal? ( app-arch/snappy dev-db/lmdb dev-db/sqlite dev-libs/double-conversion dev-libs/icu >=dev-libs/jsoncpp-1.9.2 ) dev-libs/libpcre !minimal? ( dev-libs/nsync ) dev-libs/openssl:0= >=dev-libs/protobuf-3.8.0:= >=dev-libs/re2-0.2019.06.01 !minimal? ( media-libs/giflib ) media-libs/libjpeg-turbo media-libs/libpng:0 !minimal? ( >=net-libs/grpc-1.28 ) net-misc/curl sys-libs/zlib !minimal? ( >=sys-apps/hwloc-2 ) cuda? ( || ( ( =dev-util/nvidia-cuda-toolkit-10.2*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.1*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.0*[profiler] =dev-libs/cudnn-7.4* ) ( =dev-util/nvidia-cuda-toolkit-9.2*[profiler] =dev-libs/cudnn-7.1* ) ( =dev-util/nvidia-cuda-toolkit-9.1*[profiler] =dev-libs/cudnn-7.0* ) ) ) mpi? ( virtual/mpi ) python? ( python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-libs/flatbuffers-1.12.0:= dev-python/absl-py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/astor-0.7.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/astunparse[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/gast-0.3.3[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/h5py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/numpy-1.19[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/google-pasta-0.1.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/opt-einsum[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/protobuf-python-3.8.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/pybind11[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/six[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/termcolor[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/grpcio-1.28[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/wrapt-1.11.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=net-libs/google-cloud-cpp-0.10.0 >=sci-libs/keras-applications-1.0.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-libs/keras-preprocessing-1.1.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-visualization/tensorboard-2.3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/dill[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/tblib[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] )
-REQUIRED_USE=python? ( || ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 ) )
-SLOT=0
-SRC_URI=https://github.com/tensorflow/tensorflow/archive/v2.3.1.tar.gz -> tensorflow-2.3.1.tar.gz https://dev.gentoo.org/~perfinion/patches/tensorflow-patches-2.3.1.tar.bz2 minimal? ( https://github.com/Maratyszcza/FP16/archive/4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip -> FP16-4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip https://github.com/Maratyszcza/FXdiv/archive/b408327ac2a15ec3e43352421954f5b1967701d1.zip -> FXdiv-b408327ac2a15ec3e43352421954f5b1967701d1.zip https://github.com/Maratyszcza/pthreadpool/archive/029c88620802e1361ccf41d1970bd5b07fd6b7bb.zip -> pthreadpool-029c88620802e1361ccf41d1970bd5b07fd6b7bb.zip https://github.com/Maratyszcza/psimd/archive/072586a71b55b7f8c584153d223e95687148a900.zip -> psimd-072586a71b55b7f8c584153d223e95687148a900.zip https://github.com/google/XNNPACK/archive/8b283aa30a3186c6e640aed520543e9c067132d2.zip -> XNNPACK-8b283aa30a3186c6e640aed520543e9c067132d2.zip https://github.com/googleapis/googleapis/archive/541b1ded4abadcc38e8178680b0677f65594ea6f.zip -> googleapis-541b1ded4abadcc38e8178680b0677f65594ea6f.zip ) https://github.com/petewarden/OouraFFT/archive/v1.0.tar.gz -> OouraFFT-v1.0.tar.gz https://gitlab.com/libeigen/eigen/-/archive/386d809bde475c65b7940f290efe80e6a05878c4/eigen-386d809bde475c65b7940f290efe80e6a05878c4.tar.gz https://github.com/abseil/abseil-cpp/archive/df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz -> abseil-cpp-df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz https://github.com/bazelbuild/bazel-skylib/releases/download/0.9.0/bazel_skylib-0.9.0.tar.gz https://github.com/bazelbuild/rules_apple/archive/5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz -> bazelbuild-rules_apple-5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip -> bazelbuild-rules_android-v0.1.1.zip https://github.com/bazelbuild/apple_support/archive/501b4afb27745c4813a88ffa28acd901408014e4.tar.gz -> bazelbuild-apple_support-501b4afb27745c4813a88ffa28acd901408014e4.tar.gz https://github.com/bazelbuild/bazel-toolchains/archive/92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz -> bazel-toolchains-92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip -> bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip https://github.com/bazelbuild/rules_closure/archive/308b05b2419edb5c8ee0471b67a40403df940149.tar.gz -> bazelbuild-rules_closure-308b05b2419edb5c8ee0471b67a40403df940149.tar.gz !minimal? ( https://github.com/bazelbuild/rules_docker/releases/download/v0.10.0/rules_docker-v0.10.0.tar.gz -> bazelbuild-rules_docker-v0.10.0.tar.gz ) https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip !minimal? ( https://github.com/bazelbuild/rules_proto/archive/97d8af4dc474595af3900dd85cb3a29ad28cc313.tar.gz -> bazelbuild-rules_proto-97d8af4dc474595af3900dd85cb3a29ad28cc313.tar.gz ) https://github.com/bazelbuild/rules_python/releases/download/0.0.1/rules_python-0.0.1.tar.gz -> bazelbuild-rules_python-0.0.1.tar.gz https://github.com/bazelbuild/rules_swift/archive/3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz -> bazelbuild-rules_swift-3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz https://github.com/dmlc/dlpack/archive/3efc489b55385936531a06ff83425b719387ec63.tar.gz -> dlpack-3efc489b55385936531a06ff83425b719387ec63.tar.gz https://github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz -> farmhash-816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz https://github.com/google/gemmlowp/archive/fda83bdc38b118cc6b56753bd540caa49e570745.zip -> gemmlowp-fda83bdc38b118cc6b56753bd540caa49e570745.zip https://github.com/google/highwayhash/archive/fd3d9af80465e4383162e4a7c5e2f406e82dd968.tar.gz -> highwayhash-fd3d9af80465e4383162e4a7c5e2f406e82dd968.tar.gz https://github.com/google/re2/archive/506cfa4bffd060c06ec338ce50ea3468daa6c814.tar.gz -> re2-506cfa4bffd060c06ec338ce50ea3468daa6c814.tar.gz https://github.com/joe-kuo/sobol_data/archive/835a7d7b1ee3bc83e575e302a985c66ec4b65249.tar.gz -> sobol_data-835a7d7b1ee3bc83e575e302a985c66ec4b65249.tar.gz https://github.com/llvm/llvm-project/archive/7e825abd5704ce28b166f9463d4bd304348fd2a9.tar.gz -> llvm-7e825abd5704ce28b166f9463d4bd304348fd2a9.tar.gz https://github.com/mborgerding/kissfft/archive/36dbc057604f00aacfc0288ddad57e3b21cfc1b8.tar.gz -> kissfft-36dbc057604f00aacfc0288ddad57e3b21cfc1b8.tar.gz https://github.com/google/ruy/archive/34ea9f4993955fa1ff4eb58e504421806b7f2e8f.zip -> ruy-34ea9f4993955fa1ff4eb58e504421806b7f2e8f.zip https://github.com/pytorch/cpuinfo/archive/d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz -> pytorch-cpuinfo-d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz https://github.com/pytorch/cpuinfo/archive/6cecd15784fcb6c5c0aa7311c6248879ce2cb8b2.zip -> pytorch-cpuinfo-6cecd15784fcb6c5c0aa7311c6248879ce2cb8b2.zip cuda? ( https://github.com/nvidia/nccl/archive/5949d96f36d050e59d05872f8bbffd2549318e95.tar.gz -> nvidia-nccl-5949d96f36d050e59d05872f8bbffd2549318e95.tar.gz https://github.com/NVlabs/cub/archive/1.8.0.zip -> cub-1.8.0.zip ) https://github.com/intel/ARM_NEON_2_x86_SSE/archive/1200fe90bb174a6224a525ee60148671a786a71f.tar.gz -> ARM_NEON_2_x86_SSE-1200fe90bb174a6224a525ee60148671a786a71f.tar.gz python? ( https://storage.googleapis.com/mirror.tensorflow.org/docs.python.org/2.7/_sources/license.rst.txt -> tensorflow-1.15.0-python-license.rst.txt https://pypi.python.org/packages/bc/cc/3cdb0a02e7e96f6c70bd971bc8a90b8463fda83e264fa9c5c1c98ceabd81/backports.weakref-1.0rc1.tar.gz )
-_eclasses_=bazel	592c42af547e54af23ac236ca7b2af14	check-reqs	74c98e9a7b34b32be3548357852e9ec3	cros-bazel	25596f146e3e31b4732609dc5dcbb8c6	cuda	bb861e5221b7272ac90c2f12791c1e66	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=935b376b2b782ec56c5e45dcf3fe5930
diff --git a/metadata/md5-cache/sci-libs/tensorflow-2.5.0 b/metadata/md5-cache/sci-libs/tensorflow-2.5.0
new file mode 100644
index 0000000..a3b52ce
--- /dev/null
+++ b/metadata/md5-cache/sci-libs/tensorflow-2.5.0
@@ -0,0 +1,16 @@
+BDEPEND=app-arch/unzip >=dev-libs/protobuf-3.8.0 dev-java/java-config dev-lang/swig !minimal? ( =dev-util/bazel-3* ) cuda? ( >=dev-util/nvidia-cuda-toolkit-9.1[profiler] ) !python? ( dev-lang/python ) python? ( dev-python/cython dev-python/mock >=dev-python/grpcio-tools-1.28 ) >=dev-util/bazel-0.20
+DEFINED_PHASES=compile configure install prepare setup unpack
+DEPEND=!minimal? ( app-arch/snappy dev-db/lmdb dev-db/sqlite dev-libs/double-conversion dev-libs/icu >=dev-libs/jsoncpp-1.9.2 ) dev-libs/libpcre !minimal? ( dev-libs/nsync ) dev-libs/openssl:0= >=dev-libs/protobuf-3.8.0:= >=dev-libs/re2-0.2019.06.01 !minimal? ( media-libs/giflib ) media-libs/libjpeg-turbo media-libs/libpng:0 !minimal? ( >=net-libs/grpc-1.28 ) net-misc/curl sys-libs/zlib !minimal? ( >=sys-apps/hwloc-2 ) cuda? ( || ( ( =dev-util/nvidia-cuda-toolkit-10.2*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.1*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.0*[profiler] =dev-libs/cudnn-7.4* ) ( =dev-util/nvidia-cuda-toolkit-9.2*[profiler] =dev-libs/cudnn-7.1* ) ( =dev-util/nvidia-cuda-toolkit-9.1*[profiler] =dev-libs/cudnn-7.0* ) ) ) mpi? ( virtual/mpi ) python? ( python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-libs/flatbuffers-1.12.0:= dev-python/absl-py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/astor-0.7.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/astunparse[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/gast-0.3.3[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/h5py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/numpy-1.19[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/google-pasta-0.1.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/opt-einsum[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/protobuf-python-3.8.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/pybind11[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/six[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/termcolor[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/grpcio-1.28[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/wrapt-1.11.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=net-libs/google-cloud-cpp-0.10.0 >=sci-libs/keras-applications-1.0.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-libs/keras-preprocessing-1.1.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-visualization/tensorboard-2.3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/dill[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/tblib[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) python? ( dev-python/mock dev-python/setuptools )
+DESCRIPTION=Computation framework using data flow graphs for scalable machine learning
+EAPI=7
+HOMEPAGE=https://www.tensorflow.org/
+IUSE=cuda mpi +python xla minimal label_image benchmark_model xnnpack python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
+KEYWORDS=*
+LICENSE=Apache-2.0
+PDEPEND=python? ( >=sci-libs/tensorflow-estimator-2.3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] )
+RDEPEND=!minimal? ( app-arch/snappy dev-db/lmdb dev-db/sqlite dev-libs/double-conversion dev-libs/icu >=dev-libs/jsoncpp-1.9.2 ) dev-libs/libpcre !minimal? ( dev-libs/nsync ) dev-libs/openssl:0= >=dev-libs/protobuf-3.8.0:= >=dev-libs/re2-0.2019.06.01 !minimal? ( media-libs/giflib ) media-libs/libjpeg-turbo media-libs/libpng:0 !minimal? ( >=net-libs/grpc-1.28 ) net-misc/curl sys-libs/zlib !minimal? ( >=sys-apps/hwloc-2 ) cuda? ( || ( ( =dev-util/nvidia-cuda-toolkit-10.2*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.1*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.0*[profiler] =dev-libs/cudnn-7.4* ) ( =dev-util/nvidia-cuda-toolkit-9.2*[profiler] =dev-libs/cudnn-7.1* ) ( =dev-util/nvidia-cuda-toolkit-9.1*[profiler] =dev-libs/cudnn-7.0* ) ) ) mpi? ( virtual/mpi ) python? ( python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-libs/flatbuffers-1.12.0:= dev-python/absl-py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/astor-0.7.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/astunparse[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/gast-0.3.3[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/h5py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/numpy-1.19[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/google-pasta-0.1.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/opt-einsum[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/protobuf-python-3.8.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/pybind11[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/six[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/termcolor[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/grpcio-1.28[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/wrapt-1.11.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=net-libs/google-cloud-cpp-0.10.0 >=sci-libs/keras-applications-1.0.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-libs/keras-preprocessing-1.1.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-visualization/tensorboard-2.3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/dill[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/tblib[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] )
+REQUIRED_USE=python? ( || ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 ) )
+SLOT=0
+SRC_URI=https://github.com/tensorflow/tensorflow/archive/v2.5.0.tar.gz -> tensorflow-2.5.0.tar.gz https://github.com/abseil/abseil-cpp/archive/6f9d96a1f41439ac172ee2ef7ccd8edf0e5d068c.tar.gz -> abseil-cpp-6f9d96a1f41439ac172ee2ef7ccd8edf0e5d068c.tar.gz https://github.com/bazelbuild/apple_support/archive/501b4afb27745c4813a88ffa28acd901408014e4.tar.gz -> bazelbuild-apple_support-501b4afb27745c4813a88ffa28acd901408014e4.tar.gz https://github.com/bazelbuild/bazel-toolchains/archive/92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz -> bazel-toolchains-92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz -> bazel-skylib-1.0.3.tar.gz https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip -> bazelbuild-rules_android-v0.1.1.zip https://github.com/bazelbuild/rules_apple/archive/5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz -> bazelbuild-rules_apple-5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip -> bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip https://github.com/bazelbuild/rules_closure/archive/308b05b2419edb5c8ee0471b67a40403df940149.tar.gz -> bazelbuild-rules_closure-308b05b2419edb5c8ee0471b67a40403df940149.tar.gz https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip https://github.com/bazelbuild/rules_swift/archive/3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz -> bazelbuild-rules_swift-3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz https://github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz -> farmhash-816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz https://github.com/google/gemmlowp/archive/fda83bdc38b118cc6b56753bd540caa49e570745.zip -> gemmlowp-fda83bdc38b118cc6b56753bd540caa49e570745.zip https://github.com/google/ruy/archive/54774a7a2cf85963777289193629d4bd42de4a59.zip -> ruy-54774a7a2cf85963777289193629d4bd42de4a59.zip https://github.com/google/XNNPACK/archive/79cd5f9e18ad0925ac9a050b00ea5a36230072db.zip -> XNNPACK-79cd5f9e18ad0925ac9a050b00ea5a36230072db.zip https://github.com/intel/ARM_NEON_2_x86_SSE/archive/1200fe90bb174a6224a525ee60148671a786a71f.tar.gz -> ARM_NEON_2_x86_SSE-1200fe90bb174a6224a525ee60148671a786a71f.tar.gz https://github.com/googleapis/googleapis/archive/541b1ded4abadcc38e8178680b0677f65594ea6f.zip -> googleapis-541b1ded4abadcc38e8178680b0677f65594ea6f.zip https://github.com/petewarden/OouraFFT/archive/v1.0.tar.gz -> OouraFFT-v1.0.tar.gz https://github.com/pytorch/cpuinfo/archive/5916273f79a21551890fd3d56fc5375a78d1598d.zip -> pytorch-cpuinfo-5916273f79a21551890fd3d56fc5375a78d1598d.zip https://github.com/pytorch/cpuinfo/archive/d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz -> pytorch-cpuinfo-d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz https://github.com/Maratyszcza/FP16/archive/4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip -> FP16-4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip https://github.com/Maratyszcza/FXdiv/archive/63058eff77e11aa15bf531df5dd34395ec3017c8.zip -> FXdiv-63058eff77e11aa15bf531df5dd34395ec3017c8.zip https://github.com/Maratyszcza/pthreadpool/archive/b8374f80e42010941bda6c85b0e3f1a1bd77a1e0.zip -> pthreadpool-b8374f80e42010941bda6c85b0e3f1a1bd77a1e0.zip https://github.com/tensorflow/toolchains/archive/v1.1.10.tar.gz -> tensorflow_toolchains_v1.1.10.tar.gz https://gitlab.com/libeigen/eigen/-/archive/f612df273689a19d25b45ca4f8269463207c4fee/eigen-f612df273689a19d25b45ca4f8269463207c4fee.tar.gz -> eigen-f612df273689a19d25b45ca4f8269463207c4fee.tar.gz
+_eclasses_=bazel	754d004c54b3ac8a286975d232cbab17	check-reqs	74c98e9a7b34b32be3548357852e9ec3	cros-bazel	f8f1ddf279e2cce6ed2320142f477dbf	cuda	bb861e5221b7272ac90c2f12791c1e66	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=db3a0656379ca43f062bef88b500e2e7
diff --git a/metadata/md5-cache/sci-libs/tensorflow-2.5.0-r2 b/metadata/md5-cache/sci-libs/tensorflow-2.5.0-r2
new file mode 100644
index 0000000..a3b52ce
--- /dev/null
+++ b/metadata/md5-cache/sci-libs/tensorflow-2.5.0-r2
@@ -0,0 +1,16 @@
+BDEPEND=app-arch/unzip >=dev-libs/protobuf-3.8.0 dev-java/java-config dev-lang/swig !minimal? ( =dev-util/bazel-3* ) cuda? ( >=dev-util/nvidia-cuda-toolkit-9.1[profiler] ) !python? ( dev-lang/python ) python? ( dev-python/cython dev-python/mock >=dev-python/grpcio-tools-1.28 ) >=dev-util/bazel-0.20
+DEFINED_PHASES=compile configure install prepare setup unpack
+DEPEND=!minimal? ( app-arch/snappy dev-db/lmdb dev-db/sqlite dev-libs/double-conversion dev-libs/icu >=dev-libs/jsoncpp-1.9.2 ) dev-libs/libpcre !minimal? ( dev-libs/nsync ) dev-libs/openssl:0= >=dev-libs/protobuf-3.8.0:= >=dev-libs/re2-0.2019.06.01 !minimal? ( media-libs/giflib ) media-libs/libjpeg-turbo media-libs/libpng:0 !minimal? ( >=net-libs/grpc-1.28 ) net-misc/curl sys-libs/zlib !minimal? ( >=sys-apps/hwloc-2 ) cuda? ( || ( ( =dev-util/nvidia-cuda-toolkit-10.2*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.1*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.0*[profiler] =dev-libs/cudnn-7.4* ) ( =dev-util/nvidia-cuda-toolkit-9.2*[profiler] =dev-libs/cudnn-7.1* ) ( =dev-util/nvidia-cuda-toolkit-9.1*[profiler] =dev-libs/cudnn-7.0* ) ) ) mpi? ( virtual/mpi ) python? ( python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-libs/flatbuffers-1.12.0:= dev-python/absl-py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/astor-0.7.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/astunparse[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/gast-0.3.3[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/h5py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/numpy-1.19[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/google-pasta-0.1.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/opt-einsum[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/protobuf-python-3.8.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/pybind11[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/six[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/termcolor[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/grpcio-1.28[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/wrapt-1.11.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=net-libs/google-cloud-cpp-0.10.0 >=sci-libs/keras-applications-1.0.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-libs/keras-preprocessing-1.1.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-visualization/tensorboard-2.3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/dill[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/tblib[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] ) python? ( dev-python/mock dev-python/setuptools )
+DESCRIPTION=Computation framework using data flow graphs for scalable machine learning
+EAPI=7
+HOMEPAGE=https://www.tensorflow.org/
+IUSE=cuda mpi +python xla minimal label_image benchmark_model xnnpack python_targets_python3_6 python_targets_python3_7 python_targets_python3_8
+KEYWORDS=*
+LICENSE=Apache-2.0
+PDEPEND=python? ( >=sci-libs/tensorflow-estimator-2.3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] )
+RDEPEND=!minimal? ( app-arch/snappy dev-db/lmdb dev-db/sqlite dev-libs/double-conversion dev-libs/icu >=dev-libs/jsoncpp-1.9.2 ) dev-libs/libpcre !minimal? ( dev-libs/nsync ) dev-libs/openssl:0= >=dev-libs/protobuf-3.8.0:= >=dev-libs/re2-0.2019.06.01 !minimal? ( media-libs/giflib ) media-libs/libjpeg-turbo media-libs/libpng:0 !minimal? ( >=net-libs/grpc-1.28 ) net-misc/curl sys-libs/zlib !minimal? ( >=sys-apps/hwloc-2 ) cuda? ( || ( ( =dev-util/nvidia-cuda-toolkit-10.2*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.1*[profiler] =dev-libs/cudnn-7* ) ( =dev-util/nvidia-cuda-toolkit-10.0*[profiler] =dev-libs/cudnn-7.4* ) ( =dev-util/nvidia-cuda-toolkit-9.2*[profiler] =dev-libs/cudnn-7.1* ) ( =dev-util/nvidia-cuda-toolkit-9.1*[profiler] =dev-libs/cudnn-7.0* ) ) ) mpi? ( virtual/mpi ) python? ( python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-libs/flatbuffers-1.12.0:= dev-python/absl-py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/astor-0.7.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/astunparse[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/gast-0.3.3[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/h5py[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/numpy-1.19[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/google-pasta-0.1.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/opt-einsum[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/protobuf-python-3.8.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/pybind11[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/six[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/termcolor[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/grpcio-1.28[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=dev-python/wrapt-1.11.1[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=net-libs/google-cloud-cpp-0.10.0 >=sci-libs/keras-applications-1.0.8[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-libs/keras-preprocessing-1.1.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] >=sci-visualization/tensorboard-2.3.0[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/dill[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] dev-python/tblib[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-)] )
+REQUIRED_USE=python? ( || ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 ) )
+SLOT=0
+SRC_URI=https://github.com/tensorflow/tensorflow/archive/v2.5.0.tar.gz -> tensorflow-2.5.0.tar.gz https://github.com/abseil/abseil-cpp/archive/6f9d96a1f41439ac172ee2ef7ccd8edf0e5d068c.tar.gz -> abseil-cpp-6f9d96a1f41439ac172ee2ef7ccd8edf0e5d068c.tar.gz https://github.com/bazelbuild/apple_support/archive/501b4afb27745c4813a88ffa28acd901408014e4.tar.gz -> bazelbuild-apple_support-501b4afb27745c4813a88ffa28acd901408014e4.tar.gz https://github.com/bazelbuild/bazel-toolchains/archive/92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz -> bazel-toolchains-92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz -> bazel-skylib-1.0.3.tar.gz https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip -> bazelbuild-rules_android-v0.1.1.zip https://github.com/bazelbuild/rules_apple/archive/5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz -> bazelbuild-rules_apple-5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip -> bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip https://github.com/bazelbuild/rules_closure/archive/308b05b2419edb5c8ee0471b67a40403df940149.tar.gz -> bazelbuild-rules_closure-308b05b2419edb5c8ee0471b67a40403df940149.tar.gz https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip https://github.com/bazelbuild/rules_swift/archive/3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz -> bazelbuild-rules_swift-3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz https://github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz -> farmhash-816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz https://github.com/google/gemmlowp/archive/fda83bdc38b118cc6b56753bd540caa49e570745.zip -> gemmlowp-fda83bdc38b118cc6b56753bd540caa49e570745.zip https://github.com/google/ruy/archive/54774a7a2cf85963777289193629d4bd42de4a59.zip -> ruy-54774a7a2cf85963777289193629d4bd42de4a59.zip https://github.com/google/XNNPACK/archive/79cd5f9e18ad0925ac9a050b00ea5a36230072db.zip -> XNNPACK-79cd5f9e18ad0925ac9a050b00ea5a36230072db.zip https://github.com/intel/ARM_NEON_2_x86_SSE/archive/1200fe90bb174a6224a525ee60148671a786a71f.tar.gz -> ARM_NEON_2_x86_SSE-1200fe90bb174a6224a525ee60148671a786a71f.tar.gz https://github.com/googleapis/googleapis/archive/541b1ded4abadcc38e8178680b0677f65594ea6f.zip -> googleapis-541b1ded4abadcc38e8178680b0677f65594ea6f.zip https://github.com/petewarden/OouraFFT/archive/v1.0.tar.gz -> OouraFFT-v1.0.tar.gz https://github.com/pytorch/cpuinfo/archive/5916273f79a21551890fd3d56fc5375a78d1598d.zip -> pytorch-cpuinfo-5916273f79a21551890fd3d56fc5375a78d1598d.zip https://github.com/pytorch/cpuinfo/archive/d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz -> pytorch-cpuinfo-d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz https://github.com/Maratyszcza/FP16/archive/4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip -> FP16-4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip https://github.com/Maratyszcza/FXdiv/archive/63058eff77e11aa15bf531df5dd34395ec3017c8.zip -> FXdiv-63058eff77e11aa15bf531df5dd34395ec3017c8.zip https://github.com/Maratyszcza/pthreadpool/archive/b8374f80e42010941bda6c85b0e3f1a1bd77a1e0.zip -> pthreadpool-b8374f80e42010941bda6c85b0e3f1a1bd77a1e0.zip https://github.com/tensorflow/toolchains/archive/v1.1.10.tar.gz -> tensorflow_toolchains_v1.1.10.tar.gz https://gitlab.com/libeigen/eigen/-/archive/f612df273689a19d25b45ca4f8269463207c4fee/eigen-f612df273689a19d25b45ca4f8269463207c4fee.tar.gz -> eigen-f612df273689a19d25b45ca4f8269463207c4fee.tar.gz
+_eclasses_=bazel	754d004c54b3ac8a286975d232cbab17	check-reqs	74c98e9a7b34b32be3548357852e9ec3	cros-bazel	f8f1ddf279e2cce6ed2320142f477dbf	cuda	bb861e5221b7272ac90c2f12791c1e66	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=db3a0656379ca43f062bef88b500e2e7
diff --git a/metadata/md5-cache/sys-apps/aver-updater-0.0.1-r22 b/metadata/md5-cache/sys-apps/aver-updater-0.0.1-r22
index b197ca0..1534fb9 100644
--- a/metadata/md5-cache/sys-apps/aver-updater-0.0.1-r22
+++ b/metadata/md5-cache/sys-apps/aver-updater-0.0.1-r22
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=64ac351c4b4e75805e24381170de4518
diff --git a/metadata/md5-cache/sys-apps/aver-updater-9999 b/metadata/md5-cache/sys-apps/aver-updater-9999
index 6fd8ef8..29c9612 100644
--- a/metadata/md5-cache/sys-apps/aver-updater-9999
+++ b/metadata/md5-cache/sys-apps/aver-updater-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=45ac725800db3f5628d77433e9aa64d5
diff --git a/metadata/md5-cache/sys-apps/coreboot-utils-0.0.1-r4665 b/metadata/md5-cache/sys-apps/coreboot-utils-0.0.1-r4665
deleted file mode 100644
index fdcc806..0000000
--- a/metadata/md5-cache/sys-apps/coreboot-utils-0.0.1-r4665
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup unpack
-DEPEND=!static? ( sys-apps/pciutils ) static? ( sys-apps/pciutils[static-libs(+)] )
-DESCRIPTION=Utilities for modifying coreboot firmware images
-EAPI=7
-HOMEPAGE=http://coreboot.org
-IUSE=cros_host mma +pci static cros_host cros_workon_tree_2e32d2a5a79f8e88be91b44b40a65211c6ea4dae_06c3486af100c39ddc9cb59381d087b4f2ed1634
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!static? ( sys-apps/pciutils )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=170f59c94a068fc53fa279db91e4ab1e
diff --git a/metadata/md5-cache/sys-apps/coreboot-utils-0.0.1-r4889 b/metadata/md5-cache/sys-apps/coreboot-utils-0.0.1-r4889
new file mode 100644
index 0000000..699b525
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/coreboot-utils-0.0.1-r4889
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install setup unpack
+DEPEND=!static? ( sys-apps/pciutils ) static? ( sys-apps/pciutils[static-libs(+)] )
+DESCRIPTION=Utilities for modifying coreboot firmware images
+EAPI=7
+HOMEPAGE=http://coreboot.org
+IUSE=cros_host mma +pci static cros_host cros_workon_tree_799331977582570b4553d5b8ecf53f17828b8175_0e26966d3f2069b8ac7134030bcdf1022620e54b_68a5efcfa8adcf49f7e7b213e8693b754999b180_7970bef34ce4d0b3023def52ff72e1c4cd2eca85_1f141a99a47f4c9edd8fdf11508f24cee865b31e_2928430a62aab173b801749223f89a315b2f5e1c_c4524c42dcd8ee9f61dc34d99e71983e065c591c_181b7ecc670fb8b8481356d96e48592587a73c68_e03866d9ecdf3529248f3d4bd0b63499a092f2c3_974edbc79de4f730edf8c9d01bc9186f97417f1d_bfef75f3a17da232f402e1799b42c25c2b1c5176_327b75387dd5fa21a18900c37c6017c6378024be_f0e6fefacbfcbd78417e52a97ba25032cf8fa1ed_357d07fc1526ad76c1a186e437b7736e3a254d65_2d58e3830d3fc4159e3f127522d8f7b1bee5c8d7_362eda536c1c8032f60673bd7943efd3bd9dfb7a
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!static? ( sys-apps/pciutils )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a66efdfc67bb6341ba4f2bf93b66ec02
diff --git a/metadata/md5-cache/sys-apps/coreboot-utils-9999 b/metadata/md5-cache/sys-apps/coreboot-utils-9999
index 179ae59..60a045d 100644
--- a/metadata/md5-cache/sys-apps/coreboot-utils-9999
+++ b/metadata/md5-cache/sys-apps/coreboot-utils-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=!static? ( sys-apps/pciutils )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2f5fb9409d410f0f75effb929b5ed70f
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1739e49b6085d800d754b917a1c847c0
diff --git a/metadata/md5-cache/sys-apps/daisydog-0.0.1-r29 b/metadata/md5-cache/sys-apps/daisydog-0.0.1-r29
deleted file mode 100644
index ac269bc..0000000
--- a/metadata/md5-cache/sys-apps/daisydog-0.0.1-r29
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install preinst prepare setup unpack
-DEPEND=sys-apps/baselayout
-DESCRIPTION=Simple HW watchdog daemon
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/daisydog
-IUSE=cros_host cros_workon_tree_69123874bc250bb615c60d6daf7eb45dfe3d7e90
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=sys-apps/baselayout
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
-_md5_=a11c0878e87b2496090585de92297a01
diff --git a/metadata/md5-cache/sys-apps/daisydog-0.0.1-r31 b/metadata/md5-cache/sys-apps/daisydog-0.0.1-r31
new file mode 100644
index 0000000..95a2d77
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/daisydog-0.0.1-r31
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install preinst prepare setup unpack
+DEPEND=sys-apps/baselayout
+DESCRIPTION=Simple HW watchdog daemon
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/daisydog
+IUSE=cros_host cros_workon_tree_7a2f69d271925735904e8f921ddbc5dbd17e77ac
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=sys-apps/baselayout
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_md5_=ae102cf55f410941b1e11f4cfbac41c3
diff --git a/metadata/md5-cache/sys-apps/daisydog-9999 b/metadata/md5-cache/sys-apps/daisydog-9999
index a99a22f..6771a0d 100644
--- a/metadata/md5-cache/sys-apps/daisydog-9999
+++ b/metadata/md5-cache/sys-apps/daisydog-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=sys-apps/baselayout
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621
 _md5_=5cecd400268f491510045574e9cd49e3
diff --git a/metadata/md5-cache/sys-apps/dbus-1.10.12 b/metadata/md5-cache/sys-apps/dbus-1.10.12
deleted file mode 100644
index 281debd..0000000
--- a/metadata/md5-cache/sys-apps/dbus-1.10.12
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare setup test
-DEPEND=>=dev-libs/expat-2 selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/systemd:0= ) X? ( x11-libs/libX11 x11-libs/libXt ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20131008-r4 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) virtual/pkgconfig doc? ( app-doc/doxygen app-text/xmlto app-text/docbook-xml-dtd:4.4 ) test? ( >=dev-libs/glib-2.36:2 || ( >=dev-lang/python-2.7.5-r2:2.7 ) ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig test? ( !prefix? ( x11-base/xorg-server ) x11-apps/xhost ) sys-apps/baselayout
-DESCRIPTION=A message bus system, a simple way for applications to talk to each other
-EAPI=5
-HOMEPAGE=https://dbus.freedesktop.org/
-IUSE=debug doc selinux static-libs systemd test ubsan user-session X asan coverage fuzzer msan tsan ubsan kernel_linux test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=|| ( AFL-2.1 GPL-2 )
-RDEPEND=>=dev-libs/expat-2 selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/systemd:0= ) X? ( x11-libs/libX11 x11-libs/libXt ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20131008-r4 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) selinux? ( sec-policy/selinux-dbus ) sys-apps/baselayout
-SLOT=0
-SRC_URI=https://dbus.freedesktop.org/releases/dbus/dbus-1.10.12.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	readme.gentoo-r1	22ae82e140bdd95d17a34fd5fd733190	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	virtualx	e9162f65645513120b4e12863a5fa972
-_md5_=c874538c81d3ccad633801c291d85155
diff --git a/metadata/md5-cache/sys-apps/dbus-1.10.12-r12 b/metadata/md5-cache/sys-apps/dbus-1.10.12-r12
deleted file mode 100644
index 281debd..0000000
--- a/metadata/md5-cache/sys-apps/dbus-1.10.12-r12
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare setup test
-DEPEND=>=dev-libs/expat-2 selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/systemd:0= ) X? ( x11-libs/libX11 x11-libs/libXt ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20131008-r4 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) virtual/pkgconfig doc? ( app-doc/doxygen app-text/xmlto app-text/docbook-xml-dtd:4.4 ) test? ( >=dev-libs/glib-2.36:2 || ( >=dev-lang/python-2.7.5-r2:2.7 ) ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig test? ( !prefix? ( x11-base/xorg-server ) x11-apps/xhost ) sys-apps/baselayout
-DESCRIPTION=A message bus system, a simple way for applications to talk to each other
-EAPI=5
-HOMEPAGE=https://dbus.freedesktop.org/
-IUSE=debug doc selinux static-libs systemd test ubsan user-session X asan coverage fuzzer msan tsan ubsan kernel_linux test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=|| ( AFL-2.1 GPL-2 )
-RDEPEND=>=dev-libs/expat-2 selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/systemd:0= ) X? ( x11-libs/libX11 x11-libs/libXt ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20131008-r4 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) selinux? ( sec-policy/selinux-dbus ) sys-apps/baselayout
-SLOT=0
-SRC_URI=https://dbus.freedesktop.org/releases/dbus/dbus-1.10.12.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	readme.gentoo-r1	22ae82e140bdd95d17a34fd5fd733190	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	virtualx	e9162f65645513120b4e12863a5fa972
-_md5_=c874538c81d3ccad633801c291d85155
diff --git a/metadata/md5-cache/sys-apps/dbus-1.12.20 b/metadata/md5-cache/sys-apps/dbus-1.12.20
new file mode 100644
index 0000000..879fb71
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/dbus-1.12.20
@@ -0,0 +1,15 @@
+BDEPEND=sys-devel/autoconf-archive virtual/pkgconfig doc? ( app-doc/doxygen app-text/xmlto app-text/docbook-xml-dtd:4.4 ) >=app-portage/elt-patches-20170815 virtual/pkgconfig
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=>=dev-libs/expat-2.1.0 elogind? ( sys-auth/elogind ) selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/systemd:0= ) X? ( x11-libs/libX11 x11-libs/libXt ) dev-libs/expat test? ( || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) >=dev-libs/glib-2.40:2 ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 test? ( !prefix? ( x11-base/xorg-server ) x11-apps/xhost ) sys-apps/baselayout
+DESCRIPTION=A message bus system, a simple way for applications to talk to each other
+EAPI=7
+HOMEPAGE=https://dbus.freedesktop.org/
+IUSE=debug default-dbus-timeout-250 doc elogind kernel_linux selinux static-libs systemd test user-session X ubsan asan coverage fuzzer msan tsan ubsan kernel_linux test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( AFL-2.1 GPL-2 )
+RDEPEND=>=dev-libs/expat-2.1.0 elogind? ( sys-auth/elogind ) selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/systemd:0= ) X? ( x11-libs/libX11 x11-libs/libXt ) selinux? ( sec-policy/selinux-dbus ) sys-apps/baselayout
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://dbus.freedesktop.org/releases/dbus/dbus-1.12.20.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	readme.gentoo-r1	22ae82e140bdd95d17a34fd5fd733190	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	virtualx	e9162f65645513120b4e12863a5fa972
+_md5_=ce3a21760ea7aff0c95e2f3459e4557a
diff --git a/metadata/md5-cache/sys-apps/dbus-1.12.20-r3 b/metadata/md5-cache/sys-apps/dbus-1.12.20-r3
new file mode 100644
index 0000000..879fb71
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/dbus-1.12.20-r3
@@ -0,0 +1,15 @@
+BDEPEND=sys-devel/autoconf-archive virtual/pkgconfig doc? ( app-doc/doxygen app-text/xmlto app-text/docbook-xml-dtd:4.4 ) >=app-portage/elt-patches-20170815 virtual/pkgconfig
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=>=dev-libs/expat-2.1.0 elogind? ( sys-auth/elogind ) selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/systemd:0= ) X? ( x11-libs/libX11 x11-libs/libXt ) dev-libs/expat test? ( || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) >=dev-libs/glib-2.40:2 ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 test? ( !prefix? ( x11-base/xorg-server ) x11-apps/xhost ) sys-apps/baselayout
+DESCRIPTION=A message bus system, a simple way for applications to talk to each other
+EAPI=7
+HOMEPAGE=https://dbus.freedesktop.org/
+IUSE=debug default-dbus-timeout-250 doc elogind kernel_linux selinux static-libs systemd test user-session X ubsan asan coverage fuzzer msan tsan ubsan kernel_linux test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( AFL-2.1 GPL-2 )
+RDEPEND=>=dev-libs/expat-2.1.0 elogind? ( sys-auth/elogind ) selinux? ( sys-libs/libselinux ) systemd? ( sys-apps/systemd:0= ) X? ( x11-libs/libX11 x11-libs/libXt ) selinux? ( sec-policy/selinux-dbus ) sys-apps/baselayout
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://dbus.freedesktop.org/releases/dbus/dbus-1.12.20.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	readme.gentoo-r1	22ae82e140bdd95d17a34fd5fd733190	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	user	7c566af8c48023219fd63246e88d6621	virtualx	e9162f65645513120b4e12863a5fa972
+_md5_=ce3a21760ea7aff0c95e2f3459e4557a
diff --git a/metadata/md5-cache/sys-apps/debianutils-3.1.3 b/metadata/md5-cache/sys-apps/debianutils-3.1.3
deleted file mode 100644
index f26b86d..0000000
--- a/metadata/md5-cache/sys-apps/debianutils-3.1.3
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile install unpack
-DESCRIPTION=A selection of tools from Debian
-EAPI=0
-HOMEPAGE=http://packages.qa.debian.org/d/debianutils.html
-IUSE=kernel_linux static
-KEYWORDS=*
-LICENSE=BSD GPL-2 SMAIL
-PDEPEND=|| ( >=sys-apps/coreutils-6.10-r1 sys-apps/mktemp sys-freebsd/freebsd-ubin )
-SLOT=0
-SRC_URI=mirror://debian/pool/main/d/debianutils/debianutils_3.1.3.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a2df3c9f5a5e0fd65d6785b5815b7c45
diff --git a/metadata/md5-cache/sys-apps/debianutils-3.1.3-r1 b/metadata/md5-cache/sys-apps/debianutils-3.1.3-r1
deleted file mode 100644
index f26b86d..0000000
--- a/metadata/md5-cache/sys-apps/debianutils-3.1.3-r1
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile install unpack
-DESCRIPTION=A selection of tools from Debian
-EAPI=0
-HOMEPAGE=http://packages.qa.debian.org/d/debianutils.html
-IUSE=kernel_linux static
-KEYWORDS=*
-LICENSE=BSD GPL-2 SMAIL
-PDEPEND=|| ( >=sys-apps/coreutils-6.10-r1 sys-apps/mktemp sys-freebsd/freebsd-ubin )
-SLOT=0
-SRC_URI=mirror://debian/pool/main/d/debianutils/debianutils_3.1.3.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a2df3c9f5a5e0fd65d6785b5815b7c45
diff --git a/metadata/md5-cache/sys-apps/dtc-1.6.0 b/metadata/md5-cache/sys-apps/dtc-1.6.0
index 291453d..d16c30d4 100644
--- a/metadata/md5-cache/sys-apps/dtc-1.6.0
+++ b/metadata/md5-cache/sys-apps/dtc-1.6.0
@@ -10,5 +10,5 @@
 REQUIRED_USE=python? ( || ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 ) )
 SLOT=0
 SRC_URI=mirror://kernel/software/utils/dtc/dtc-1.6.0.tar.xz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=25323cbdca1d04b89ecd96266d6611d4
diff --git a/metadata/md5-cache/sys-apps/dtc-1.6.0-r2 b/metadata/md5-cache/sys-apps/dtc-1.6.0-r2
index 291453d..d16c30d4 100644
--- a/metadata/md5-cache/sys-apps/dtc-1.6.0-r2
+++ b/metadata/md5-cache/sys-apps/dtc-1.6.0-r2
@@ -10,5 +10,5 @@
 REQUIRED_USE=python? ( || ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 ) )
 SLOT=0
 SRC_URI=mirror://kernel/software/utils/dtc/dtc-1.6.0.tar.xz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=25323cbdca1d04b89ecd96266d6611d4
diff --git a/metadata/md5-cache/sys-apps/em100-0.0.1-r57 b/metadata/md5-cache/sys-apps/em100-0.0.1-r57
deleted file mode 100644
index a754c90..0000000
--- a/metadata/md5-cache/sys-apps/em100-0.0.1-r57
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=virtual/libusb:1
-DESCRIPTION=A simple utility to control a Dediprog EM100pro from Linux
-EAPI=4
-IUSE=cros_host cros_workon_tree_45851aa24cb1b0ab35bc50902890c781602a2d54
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=virtual/libusb:1
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=2792688a6519874d8e4870d5243eb015
diff --git a/metadata/md5-cache/sys-apps/em100-0.0.1-r59 b/metadata/md5-cache/sys-apps/em100-0.0.1-r59
new file mode 100644
index 0000000..e6da9f4d9
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/em100-0.0.1-r59
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile info install setup unpack
+DEPEND=virtual/libusb:1
+DESCRIPTION=A simple utility to control a Dediprog EM100pro from Linux
+EAPI=4
+IUSE=cros_host cros_workon_tree_2f879048ca8d17db5d58aae8a69a130b17564b56
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=virtual/libusb:1
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=e4b420dd42769e621749da68948c3ed7
diff --git a/metadata/md5-cache/sys-apps/em100-9999 b/metadata/md5-cache/sys-apps/em100-9999
index 57c3a85..61a4696a 100644
--- a/metadata/md5-cache/sys-apps/em100-9999
+++ b/metadata/md5-cache/sys-apps/em100-9999
@@ -8,5 +8,5 @@
 PROPERTIES=live
 RDEPEND=virtual/libusb:1
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=ca55c30cd7471d3aab006fcfee6d887b
diff --git a/metadata/md5-cache/sys-apps/fitpicker-0.0.1-r2083 b/metadata/md5-cache/sys-apps/fitpicker-0.0.1-r2083
deleted file mode 100644
index b986bec..0000000
--- a/metadata/md5-cache/sys-apps/fitpicker-0.0.1-r2083
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=sys-apps/dtc-1.4.1 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Utility for picking a kernel/device tree from a FIT image.
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/fitpicker/
-IUSE=cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4ece3f8f3d85b6237e276452a02c7c6044463211_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_4ece3f8f3d85b6237e276452a02c7c6044463211_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=>=sys-apps/dtc-1.4.1 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=45712b7b4f870bda1e3cc2200e022158
diff --git a/metadata/md5-cache/sys-apps/fitpicker-0.0.1-r2108 b/metadata/md5-cache/sys-apps/fitpicker-0.0.1-r2108
new file mode 100644
index 0000000..d0d73ea
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/fitpicker-0.0.1-r2108
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=>=sys-apps/dtc-1.4.1 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Utility for picking a kernel/device tree from a FIT image.
+EAPI=5
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/fitpicker/
+IUSE=cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4ece3f8f3d85b6237e276452a02c7c6044463211_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_4ece3f8f3d85b6237e276452a02c7c6044463211_e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb cros-debug compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=>=sys-apps/dtc-1.4.1 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=22d8cb80ad6c52819b9d1f48cfdf28c1
diff --git a/metadata/md5-cache/sys-apps/fitpicker-9999 b/metadata/md5-cache/sys-apps/fitpicker-9999
index 3678b67..62cff6d 100644
--- a/metadata/md5-cache/sys-apps/fitpicker-9999
+++ b/metadata/md5-cache/sys-apps/fitpicker-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=>=sys-apps/dtc-1.4.1 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=>=sys-apps/dtc-1.4.1 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Utility for picking a kernel/device tree from a FIT image.
 EAPI=5
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform2/+/master/fitpicker/
@@ -9,5 +9,5 @@
 PROPERTIES=live live
 RDEPEND=>=sys-apps/dtc-1.4.1 >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] >=chromeos-base/libbrillo-0.0.1-r1651:=
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	platform	cd60a3aa853d28001988f2b07bf2e56c	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	platform	efc0b92bddaaf9cd74eceec133e77973	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=c2374b2f77f9f0d7c6b45c04b9cc61dd
diff --git a/metadata/md5-cache/sys-apps/flashmap-0.3-r35 b/metadata/md5-cache/sys-apps/flashmap-0.3-r35
index cdb9d1f..2e9d806 100644
--- a/metadata/md5-cache/sys-apps/flashmap-0.3-r35
+++ b/metadata/md5-cache/sys-apps/flashmap-0.3-r35
@@ -11,5 +11,5 @@
 RDEPEND=python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] )
 RESTRICT=test
 SLOT=0/0.3-r35
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=153c776fcfa72b1f24e0e5be0e34679d
diff --git a/metadata/md5-cache/sys-apps/flashmap-9999 b/metadata/md5-cache/sys-apps/flashmap-9999
index 3499357..e5300a5 100644
--- a/metadata/md5-cache/sys-apps/flashmap-9999
+++ b/metadata/md5-cache/sys-apps/flashmap-9999
@@ -11,5 +11,5 @@
 RDEPEND=python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] )
 RESTRICT=test
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=3cdabe62adfa5755f180eaf0ee212d0d
diff --git a/metadata/md5-cache/sys-apps/flashrom-0.9.9-r1129 b/metadata/md5-cache/sys-apps/flashrom-0.9.9-r1129
deleted file mode 100644
index f246a31..0000000
--- a/metadata/md5-cache/sys-apps/flashrom-0.9.9-r1129
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=sys-apps/diffutils dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=!static? ( atahpt? ( sys-apps/pciutils ) dediprog? ( virtual/libusb:1 ) drkaiser? ( sys-apps/pciutils ) fdtmap? ( sys-apps/dtc ) ft2232_spi? ( dev-embedded/libftdi:= ) gfxnvidia? ( sys-apps/pciutils ) internal? ( sys-apps/pciutils ) nic3com? ( sys-apps/pciutils ) nicintel_spi? ( sys-apps/pciutils ) nicintel? ( sys-apps/pciutils ) nicnatsemi? ( sys-apps/pciutils ) nicrealtek? ( sys-apps/pciutils ) raiden_debug_spi? ( virtual/libusb:1 ) ogp_spi? ( sys-apps/pciutils ) rayer_spi? ( sys-apps/pciutils ) satamv? ( sys-apps/pciutils ) satasii? ( sys-apps/pciutils ) ) static? ( atahpt? ( sys-apps/pciutils[static-libs(+)] ) dediprog? ( virtual/libusb:1[static-libs(+)] ) drkaiser? ( sys-apps/pciutils[static-libs(+)] ) fdtmap? ( sys-apps/dtc[static-libs(+)] ) ft2232_spi? ( dev-embedded/libftdi:=[static-libs(+)] ) gfxnvidia? ( sys-apps/pciutils[static-libs(+)] ) internal? ( sys-apps/pciutils[static-libs(+)] ) nic3com? ( sys-apps/pciutils[static-libs(+)] ) nicintel_spi? ( sys-apps/pciutils[static-libs(+)] ) nicintel? ( sys-apps/pciutils[static-libs(+)] ) nicnatsemi? ( sys-apps/pciutils[static-libs(+)] ) nicrealtek? ( sys-apps/pciutils[static-libs(+)] ) raiden_debug_spi? ( virtual/libusb:1[static-libs(+)] ) ogp_spi? ( sys-apps/pciutils[static-libs(+)] ) rayer_spi? ( sys-apps/pciutils[static-libs(+)] ) satamv? ( sys-apps/pciutils[static-libs(+)] ) satasii? ( sys-apps/pciutils[static-libs(+)] ) )
-DESCRIPTION=Utility for reading, writing, erasing and verifying flash ROM chips
-EAPI=7
-HOMEPAGE=https://flashrom.org/
-IUSE=atahpt +bitbang_spi +buspirate_spi dediprog +drkaiser +dummy +fdtmap +ft2232_spi +gfxnvidia +internal +linux_mtd +linux_spi +lspcon_i2c_spi +nic3com +nicintel +nicintel_spi +nicnatsemi +nicrealtek +ogp_spi +raiden_debug_spi +rayer_spi +realtek_mst_i2c_spi +satasii +satamv +serprog static +wiki cros_host cros_workon_tree_47097697c13a31a043e4b85fdfdb36e6c194bfca
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!static? ( atahpt? ( sys-apps/pciutils ) dediprog? ( virtual/libusb:1 ) drkaiser? ( sys-apps/pciutils ) fdtmap? ( sys-apps/dtc ) ft2232_spi? ( dev-embedded/libftdi:= ) gfxnvidia? ( sys-apps/pciutils ) internal? ( sys-apps/pciutils ) nic3com? ( sys-apps/pciutils ) nicintel_spi? ( sys-apps/pciutils ) nicintel? ( sys-apps/pciutils ) nicnatsemi? ( sys-apps/pciutils ) nicrealtek? ( sys-apps/pciutils ) raiden_debug_spi? ( virtual/libusb:1 ) ogp_spi? ( sys-apps/pciutils ) rayer_spi? ( sys-apps/pciutils ) satamv? ( sys-apps/pciutils ) satasii? ( sys-apps/pciutils ) ) internal? ( sys-apps/dmidecode )
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=2a4ac778475868f2562763f730aa5668
diff --git a/metadata/md5-cache/sys-apps/flashrom-0.9.9-r1244 b/metadata/md5-cache/sys-apps/flashrom-0.9.9-r1244
new file mode 100644
index 0000000..1487b10
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/flashrom-0.9.9-r1244
@@ -0,0 +1,14 @@
+BDEPEND=sys-apps/diffutils dev-vcs/git >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=!static? ( atahpt? ( sys-apps/pciutils ) atapromise? ( sys-apps/pciutils ) atavia? ( sys-apps/pciutils ) ch341a_spi? ( virtual/libusb:1 ) dediprog? ( virtual/libusb:1 ) developerbox_spi? ( virtual/libusb:1 ) digilent_spi? ( virtual/libusb:1 ) drkaiser? ( sys-apps/pciutils ) ft2232_spi? ( dev-embedded/libftdi:= ) gfxnvidia? ( sys-apps/pciutils ) internal? ( sys-apps/pciutils ) it8212? ( sys-apps/pciutils ) jlink_spi? ( dev-embedded/libjaylink ) nic3com? ( sys-apps/pciutils ) nicintel_eeprom? ( sys-apps/pciutils ) nicintel_spi? ( sys-apps/pciutils ) nicintel? ( sys-apps/pciutils ) nicnatsemi? ( sys-apps/pciutils ) nicrealtek? ( sys-apps/pciutils ) raiden_debug_spi? ( virtual/libusb:1 ) ogp_spi? ( sys-apps/pciutils ) pickit2_spi? ( virtual/libusb:0 ) rayer_spi? ( sys-apps/pciutils ) satamv? ( sys-apps/pciutils ) satasii? ( sys-apps/pciutils ) stlinkv3_spi? ( virtual/libusb:1 ) usbblaster_spi? ( dev-embedded/libftdi:1= ) ) static? ( atahpt? ( sys-apps/pciutils[static-libs(+)] ) atapromise? ( sys-apps/pciutils[static-libs(+)] ) atavia? ( sys-apps/pciutils[static-libs(+)] ) ch341a_spi? ( virtual/libusb:1[static-libs(+)] ) dediprog? ( virtual/libusb:1[static-libs(+)] ) developerbox_spi? ( virtual/libusb:1[static-libs(+)] ) digilent_spi? ( virtual/libusb:1[static-libs(+)] ) drkaiser? ( sys-apps/pciutils[static-libs(+)] ) ft2232_spi? ( dev-embedded/libftdi:=[static-libs(+)] ) gfxnvidia? ( sys-apps/pciutils[static-libs(+)] ) internal? ( sys-apps/pciutils[static-libs(+)] ) it8212? ( sys-apps/pciutils[static-libs(+)] ) jlink_spi? ( dev-embedded/libjaylink[static-libs(+)] ) nic3com? ( sys-apps/pciutils[static-libs(+)] ) nicintel_eeprom? ( sys-apps/pciutils[static-libs(+)] ) nicintel_spi? ( sys-apps/pciutils[static-libs(+)] ) nicintel? ( sys-apps/pciutils[static-libs(+)] ) nicnatsemi? ( sys-apps/pciutils[static-libs(+)] ) nicrealtek? ( sys-apps/pciutils[static-libs(+)] ) raiden_debug_spi? ( virtual/libusb:1[static-libs(+)] ) ogp_spi? ( sys-apps/pciutils[static-libs(+)] ) pickit2_spi? ( virtual/libusb:0[static-libs(+)] ) rayer_spi? ( sys-apps/pciutils[static-libs(+)] ) satamv? ( sys-apps/pciutils[static-libs(+)] ) satasii? ( sys-apps/pciutils[static-libs(+)] ) stlinkv3_spi? ( virtual/libusb:1[static-libs(+)] ) usbblaster_spi? ( dev-embedded/libftdi:1=[static-libs(+)] ) ) test? ( dev-util/cmocka )
+DESCRIPTION=Utility for reading, writing, erasing and verifying flash ROM chips
+EAPI=7
+HOMEPAGE=https://flashrom.org/
+IUSE=atahpt atapromise +atavia +buspirate_spi +ch341a_spi dediprog +developerbox_spi +digilent_spi +drkaiser +dummy ene_lpc +ft2232_spi +gfxnvidia +internal +it8212 jlink_spi +linux_mtd +linux_spi +lspcon_i2c_spi mec1308 mstarddc_spi +nic3com +nicintel +nicintel_eeprom +nicintel_spi +nicnatsemi +nicrealtek +ogp_spi +pickit2_spi +pony_spi +raiden_debug_spi +rayer_spi +realtek_mst_i2c_spi +satasii +satamv +serprog static +stlinkv3_spi test +usbblaster_spi +wiki cros_host cros_workon_tree_6b9f4673e9d065a9f4cad040ace211b94d9e7bef
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!static? ( atahpt? ( sys-apps/pciutils ) atapromise? ( sys-apps/pciutils ) atavia? ( sys-apps/pciutils ) ch341a_spi? ( virtual/libusb:1 ) dediprog? ( virtual/libusb:1 ) developerbox_spi? ( virtual/libusb:1 ) digilent_spi? ( virtual/libusb:1 ) drkaiser? ( sys-apps/pciutils ) ft2232_spi? ( dev-embedded/libftdi:= ) gfxnvidia? ( sys-apps/pciutils ) internal? ( sys-apps/pciutils ) it8212? ( sys-apps/pciutils ) jlink_spi? ( dev-embedded/libjaylink ) nic3com? ( sys-apps/pciutils ) nicintel_eeprom? ( sys-apps/pciutils ) nicintel_spi? ( sys-apps/pciutils ) nicintel? ( sys-apps/pciutils ) nicnatsemi? ( sys-apps/pciutils ) nicrealtek? ( sys-apps/pciutils ) raiden_debug_spi? ( virtual/libusb:1 ) ogp_spi? ( sys-apps/pciutils ) pickit2_spi? ( virtual/libusb:0 ) rayer_spi? ( sys-apps/pciutils ) satamv? ( sys-apps/pciutils ) satasii? ( sys-apps/pciutils ) stlinkv3_spi? ( virtual/libusb:1 ) usbblaster_spi? ( dev-embedded/libftdi:1= ) ) internal? ( sys-apps/dmidecode )
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=aa91ec6e3af5e21577945d516649570b
diff --git a/metadata/md5-cache/sys-apps/flashrom-9999 b/metadata/md5-cache/sys-apps/flashrom-9999
index 235c589..46f3077 100644
--- a/metadata/md5-cache/sys-apps/flashrom-9999
+++ b/metadata/md5-cache/sys-apps/flashrom-9999
@@ -1,14 +1,14 @@
-BDEPEND=sys-apps/diffutils dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=!static? ( atahpt? ( sys-apps/pciutils ) dediprog? ( virtual/libusb:1 ) drkaiser? ( sys-apps/pciutils ) fdtmap? ( sys-apps/dtc ) ft2232_spi? ( dev-embedded/libftdi:= ) gfxnvidia? ( sys-apps/pciutils ) internal? ( sys-apps/pciutils ) nic3com? ( sys-apps/pciutils ) nicintel_spi? ( sys-apps/pciutils ) nicintel? ( sys-apps/pciutils ) nicnatsemi? ( sys-apps/pciutils ) nicrealtek? ( sys-apps/pciutils ) raiden_debug_spi? ( virtual/libusb:1 ) ogp_spi? ( sys-apps/pciutils ) rayer_spi? ( sys-apps/pciutils ) satamv? ( sys-apps/pciutils ) satasii? ( sys-apps/pciutils ) ) static? ( atahpt? ( sys-apps/pciutils[static-libs(+)] ) dediprog? ( virtual/libusb:1[static-libs(+)] ) drkaiser? ( sys-apps/pciutils[static-libs(+)] ) fdtmap? ( sys-apps/dtc[static-libs(+)] ) ft2232_spi? ( dev-embedded/libftdi:=[static-libs(+)] ) gfxnvidia? ( sys-apps/pciutils[static-libs(+)] ) internal? ( sys-apps/pciutils[static-libs(+)] ) nic3com? ( sys-apps/pciutils[static-libs(+)] ) nicintel_spi? ( sys-apps/pciutils[static-libs(+)] ) nicintel? ( sys-apps/pciutils[static-libs(+)] ) nicnatsemi? ( sys-apps/pciutils[static-libs(+)] ) nicrealtek? ( sys-apps/pciutils[static-libs(+)] ) raiden_debug_spi? ( virtual/libusb:1[static-libs(+)] ) ogp_spi? ( sys-apps/pciutils[static-libs(+)] ) rayer_spi? ( sys-apps/pciutils[static-libs(+)] ) satamv? ( sys-apps/pciutils[static-libs(+)] ) satasii? ( sys-apps/pciutils[static-libs(+)] ) )
+BDEPEND=sys-apps/diffutils dev-vcs/git >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=!static? ( atahpt? ( sys-apps/pciutils ) atapromise? ( sys-apps/pciutils ) atavia? ( sys-apps/pciutils ) ch341a_spi? ( virtual/libusb:1 ) dediprog? ( virtual/libusb:1 ) developerbox_spi? ( virtual/libusb:1 ) digilent_spi? ( virtual/libusb:1 ) drkaiser? ( sys-apps/pciutils ) ft2232_spi? ( dev-embedded/libftdi:= ) gfxnvidia? ( sys-apps/pciutils ) internal? ( sys-apps/pciutils ) it8212? ( sys-apps/pciutils ) jlink_spi? ( dev-embedded/libjaylink ) nic3com? ( sys-apps/pciutils ) nicintel_eeprom? ( sys-apps/pciutils ) nicintel_spi? ( sys-apps/pciutils ) nicintel? ( sys-apps/pciutils ) nicnatsemi? ( sys-apps/pciutils ) nicrealtek? ( sys-apps/pciutils ) raiden_debug_spi? ( virtual/libusb:1 ) ogp_spi? ( sys-apps/pciutils ) pickit2_spi? ( virtual/libusb:0 ) rayer_spi? ( sys-apps/pciutils ) satamv? ( sys-apps/pciutils ) satasii? ( sys-apps/pciutils ) stlinkv3_spi? ( virtual/libusb:1 ) usbblaster_spi? ( dev-embedded/libftdi:1= ) ) static? ( atahpt? ( sys-apps/pciutils[static-libs(+)] ) atapromise? ( sys-apps/pciutils[static-libs(+)] ) atavia? ( sys-apps/pciutils[static-libs(+)] ) ch341a_spi? ( virtual/libusb:1[static-libs(+)] ) dediprog? ( virtual/libusb:1[static-libs(+)] ) developerbox_spi? ( virtual/libusb:1[static-libs(+)] ) digilent_spi? ( virtual/libusb:1[static-libs(+)] ) drkaiser? ( sys-apps/pciutils[static-libs(+)] ) ft2232_spi? ( dev-embedded/libftdi:=[static-libs(+)] ) gfxnvidia? ( sys-apps/pciutils[static-libs(+)] ) internal? ( sys-apps/pciutils[static-libs(+)] ) it8212? ( sys-apps/pciutils[static-libs(+)] ) jlink_spi? ( dev-embedded/libjaylink[static-libs(+)] ) nic3com? ( sys-apps/pciutils[static-libs(+)] ) nicintel_eeprom? ( sys-apps/pciutils[static-libs(+)] ) nicintel_spi? ( sys-apps/pciutils[static-libs(+)] ) nicintel? ( sys-apps/pciutils[static-libs(+)] ) nicnatsemi? ( sys-apps/pciutils[static-libs(+)] ) nicrealtek? ( sys-apps/pciutils[static-libs(+)] ) raiden_debug_spi? ( virtual/libusb:1[static-libs(+)] ) ogp_spi? ( sys-apps/pciutils[static-libs(+)] ) pickit2_spi? ( virtual/libusb:0[static-libs(+)] ) rayer_spi? ( sys-apps/pciutils[static-libs(+)] ) satamv? ( sys-apps/pciutils[static-libs(+)] ) satasii? ( sys-apps/pciutils[static-libs(+)] ) stlinkv3_spi? ( virtual/libusb:1[static-libs(+)] ) usbblaster_spi? ( dev-embedded/libftdi:1=[static-libs(+)] ) ) test? ( dev-util/cmocka )
 DESCRIPTION=Utility for reading, writing, erasing and verifying flash ROM chips
 EAPI=7
 HOMEPAGE=https://flashrom.org/
-IUSE=atahpt +bitbang_spi +buspirate_spi dediprog +drkaiser +dummy +fdtmap +ft2232_spi +gfxnvidia +internal +linux_mtd +linux_spi +lspcon_i2c_spi +nic3com +nicintel +nicintel_spi +nicnatsemi +nicrealtek +ogp_spi +raiden_debug_spi +rayer_spi +realtek_mst_i2c_spi +satasii +satamv +serprog static +wiki cros_host cros_workon_tree_
+IUSE=atahpt atapromise +atavia +buspirate_spi +ch341a_spi dediprog +developerbox_spi +digilent_spi +drkaiser +dummy ene_lpc +ft2232_spi +gfxnvidia +internal +it8212 jlink_spi +linux_mtd +linux_spi +lspcon_i2c_spi mec1308 mstarddc_spi +nic3com +nicintel +nicintel_eeprom +nicintel_spi +nicnatsemi +nicrealtek +ogp_spi +pickit2_spi +pony_spi +raiden_debug_spi +rayer_spi +realtek_mst_i2c_spi +satasii +satamv +serprog static +stlinkv3_spi test +usbblaster_spi +wiki cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-RDEPEND=!static? ( atahpt? ( sys-apps/pciutils ) dediprog? ( virtual/libusb:1 ) drkaiser? ( sys-apps/pciutils ) fdtmap? ( sys-apps/dtc ) ft2232_spi? ( dev-embedded/libftdi:= ) gfxnvidia? ( sys-apps/pciutils ) internal? ( sys-apps/pciutils ) nic3com? ( sys-apps/pciutils ) nicintel_spi? ( sys-apps/pciutils ) nicintel? ( sys-apps/pciutils ) nicnatsemi? ( sys-apps/pciutils ) nicrealtek? ( sys-apps/pciutils ) raiden_debug_spi? ( virtual/libusb:1 ) ogp_spi? ( sys-apps/pciutils ) rayer_spi? ( sys-apps/pciutils ) satamv? ( sys-apps/pciutils ) satasii? ( sys-apps/pciutils ) ) internal? ( sys-apps/dmidecode )
+RDEPEND=!static? ( atahpt? ( sys-apps/pciutils ) atapromise? ( sys-apps/pciutils ) atavia? ( sys-apps/pciutils ) ch341a_spi? ( virtual/libusb:1 ) dediprog? ( virtual/libusb:1 ) developerbox_spi? ( virtual/libusb:1 ) digilent_spi? ( virtual/libusb:1 ) drkaiser? ( sys-apps/pciutils ) ft2232_spi? ( dev-embedded/libftdi:= ) gfxnvidia? ( sys-apps/pciutils ) internal? ( sys-apps/pciutils ) it8212? ( sys-apps/pciutils ) jlink_spi? ( dev-embedded/libjaylink ) nic3com? ( sys-apps/pciutils ) nicintel_eeprom? ( sys-apps/pciutils ) nicintel_spi? ( sys-apps/pciutils ) nicintel? ( sys-apps/pciutils ) nicnatsemi? ( sys-apps/pciutils ) nicrealtek? ( sys-apps/pciutils ) raiden_debug_spi? ( virtual/libusb:1 ) ogp_spi? ( sys-apps/pciutils ) pickit2_spi? ( virtual/libusb:0 ) rayer_spi? ( sys-apps/pciutils ) satamv? ( sys-apps/pciutils ) satasii? ( sys-apps/pciutils ) stlinkv3_spi? ( virtual/libusb:1 ) usbblaster_spi? ( dev-embedded/libftdi:1= ) ) internal? ( sys-apps/dmidecode )
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=46ec1d1ab51dc0a0fdf2689f63058c0b
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=15c862c8e52e76d802eb15b3326679fc
diff --git a/metadata/md5-cache/sys-apps/flashrom-tester-1.6.0-r56 b/metadata/md5-cache/sys-apps/flashrom-tester-1.6.0-r56
deleted file mode 100644
index 6675931..0000000
--- a/metadata/md5-cache/sys-apps/flashrom-tester-1.6.0-r56
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
-DEPEND=>=dev-rust/rand-0.6.4:= =dev-rust/chrono-0.4*:= =dev-rust/clap-2.33*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= =dev-rust/built-0.3*:= =dev-rust/sys-info-0.5.7:= =dev-rust/serde_json-1*:= >=virtual/rust-1.39.0:=
-DESCRIPTION=Utility for AVL qualification of SPI flash chips with flashrom
-EAPI=7
-HOMEPAGE=https://www.flashrom.org/Flashrom
-IUSE=cros_host cros_workon_tree_7f2a6742d55adf60b4a1cb46f316e30050c1a59c cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!<=sys-apps/flashrom-tester-1.60-r41
-REQUIRED_USE=?? ( asan lsan msan tsan )
-SLOT=0/1.6.0-r56
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d31b393d525597e3b1e020bf9223782c
diff --git a/metadata/md5-cache/sys-apps/flashrom-tester-1.6.0-r59 b/metadata/md5-cache/sys-apps/flashrom-tester-1.6.0-r59
new file mode 100644
index 0000000..8903ad8
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/flashrom-tester-1.6.0-r59
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
+DEPEND=>=dev-rust/rand-0.6.4:= =dev-rust/chrono-0.4*:= =dev-rust/clap-2.33*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= =dev-rust/built-0.3*:= =dev-rust/sys-info-0.5.7:= =dev-rust/serde_json-1*:= >=virtual/rust-1.39.0:=
+DESCRIPTION=Utility for AVL qualification of SPI flash chips with flashrom
+EAPI=7
+HOMEPAGE=https://www.flashrom.org/Flashrom
+IUSE=cros_host cros_workon_tree_0b4dc5d2acaf537f04737355784e7261d7031408 cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!<=sys-apps/flashrom-tester-1.60-r41
+REQUIRED_USE=?? ( asan lsan msan tsan )
+SLOT=0/1.6.0-r59
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5e05edb66571fbad37143666dc0c8a74
diff --git a/metadata/md5-cache/sys-apps/flashrom-tester-9999 b/metadata/md5-cache/sys-apps/flashrom-tester-9999
index c4a36ed..4a71e4f 100644
--- a/metadata/md5-cache/sys-apps/flashrom-tester-9999
+++ b/metadata/md5-cache/sys-apps/flashrom-tester-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst prepare prerm setup test unpack
+DEFINED_PHASES=compile configure info install postinst preinst prepare prerm setup test unpack
 DEPEND=>=dev-rust/rand-0.6.4:= =dev-rust/chrono-0.4*:= =dev-rust/clap-2.33*:= =dev-rust/libc-0.2*:= =dev-rust/log-0.4*:= =dev-rust/built-0.3*:= =dev-rust/sys-info-0.5.7:= =dev-rust/serde_json-1*:= >=virtual/rust-1.39.0:=
 DESCRIPTION=Utility for AVL qualification of SPI flash chips with flashrom
 EAPI=7
 HOMEPAGE=https://www.flashrom.org/Flashrom
-IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan test tsan ubsan x86
+IUSE=cros_host cros_workon_tree_ cros-debug asan coverage fuzzer msan tsan ubsan amd64 asan cros_host fuzzer lsan +lto msan sccache test tsan ubsan x86
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=!<=sys-apps/flashrom-tester-1.60-r41
 REQUIRED_USE=?? ( asan lsan msan tsan )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	cc1e81520159c4de5cb8be63e66e4986	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=1cba72d19f7da01ef1d7bbf02a7221e5
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-rust	4ea5b08ffae6d27d86cc6d34d71f3446	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2dcbb27d4fabbe2fab2478d476009673
diff --git a/metadata/md5-cache/sys-apps/frecon-0.0.1-r174 b/metadata/md5-cache/sys-apps/frecon-0.0.1-r174
deleted file mode 100644
index 2b55fd4..0000000
--- a/metadata/md5-cache/sys-apps/frecon-0.0.1-r174
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=virtual/udev sys-apps/dbus:= media-libs/libpng:0= sys-apps/libtsm:= x11-libs/libdrm:= media-sound/adhd:=
-DESCRIPTION=Chrome OS KMS console
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/frecon
-IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_3d33111677bfa34cd2094b48c070ab5e0ddab1e7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=virtual/udev sys-apps/dbus:= media-libs/libpng:0= sys-apps/libtsm:= x11-libs/libdrm:=
-SLOT=0/0.0.1-r174
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cf73566ca939b99952cee2884aa3a1ef
diff --git a/metadata/md5-cache/sys-apps/frecon-0.0.1-r175 b/metadata/md5-cache/sys-apps/frecon-0.0.1-r175
new file mode 100644
index 0000000..07602bd
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/frecon-0.0.1-r175
@@ -0,0 +1,14 @@
+BDEPEND=virtual/pkgconfig dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=virtual/udev sys-apps/dbus:= media-libs/libpng:0= sys-apps/libtsm:= x11-libs/libdrm:= media-sound/adhd:=
+DESCRIPTION=Chrome OS KMS console
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/frecon
+IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_a96a7377abfe6ed34ede08a29f37699b83e55684
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=virtual/udev sys-apps/dbus:= media-libs/libpng:0= sys-apps/libtsm:= x11-libs/libdrm:=
+SLOT=0/0.0.1-r175
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5fbf1a10557a63cb275fb85fcc009e65
diff --git a/metadata/md5-cache/sys-apps/frecon-9999 b/metadata/md5-cache/sys-apps/frecon-9999
index 2fd5cc6..7b403ad 100644
--- a/metadata/md5-cache/sys-apps/frecon-9999
+++ b/metadata/md5-cache/sys-apps/frecon-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=virtual/udev sys-apps/dbus:= media-libs/libpng:0= sys-apps/libtsm:= x11-libs/libdrm:=
 SLOT=0/9999
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=d3f3279b6d87cc75990bdfa3df1303be
diff --git a/metadata/md5-cache/sys-apps/frecon-lite-0.0.1-r69 b/metadata/md5-cache/sys-apps/frecon-lite-0.0.1-r69
deleted file mode 100644
index 3bfc30e..0000000
--- a/metadata/md5-cache/sys-apps/frecon-lite-0.0.1-r69
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git
-DEFINED_PHASES=compile configure info prepare setup test unpack
-DEPEND=media-libs/libpng:0= sys-apps/libtsm:= media-sound/adhd:= x11-libs/libdrm:=
-DESCRIPTION=Chrome OS KMS console (without DBUS/UDEV support)
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/frecon
-IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_3d33111677bfa34cd2094b48c070ab5e0ddab1e7
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=media-libs/libpng:0= sys-apps/libtsm:=
-SLOT=0/0.0.1-r69
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e4aca564b576c6c04465d13591f63777
diff --git a/metadata/md5-cache/sys-apps/frecon-lite-0.0.1-r70 b/metadata/md5-cache/sys-apps/frecon-lite-0.0.1-r70
new file mode 100644
index 0000000..93dd80f
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/frecon-lite-0.0.1-r70
@@ -0,0 +1,14 @@
+BDEPEND=virtual/pkgconfig dev-vcs/git
+DEFINED_PHASES=compile configure info prepare setup test unpack
+DEPEND=media-libs/libpng:0= sys-apps/libtsm:= media-sound/adhd:= x11-libs/libdrm:=
+DESCRIPTION=Chrome OS KMS console (without DBUS/UDEV support)
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/frecon
+IUSE=-asan asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_a96a7377abfe6ed34ede08a29f37699b83e55684
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=media-libs/libpng:0= sys-apps/libtsm:=
+SLOT=0/0.0.1-r70
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=03fd979b2d0d54fbbb098368f982279f
diff --git a/metadata/md5-cache/sys-apps/frecon-lite-9999 b/metadata/md5-cache/sys-apps/frecon-lite-9999
index 519c2ef..3e3dfbd 100644
--- a/metadata/md5-cache/sys-apps/frecon-lite-9999
+++ b/metadata/md5-cache/sys-apps/frecon-lite-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=media-libs/libpng:0= sys-apps/libtsm:=
 SLOT=0/9999
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ea51614689249cc2d3459e8c732ff28c
diff --git a/metadata/md5-cache/sys-apps/fwupd-1.5.0-r82 b/metadata/md5-cache/sys-apps/fwupd-1.5.0-r82
deleted file mode 100644
index e7474e4..0000000
--- a/metadata/md5-cache/sys-apps/fwupd-1.5.0-r82
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst postrm preinst prepare setup test unpack
-DEPEND=|| ( dev-lang/vala:0.36 dev-lang/vala:0.34 dev-lang/vala:0.32 ) python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python2_7? ( dev-python/pillow[python_targets_python2_7(-)] dev-python/pycairo[python_targets_python2_7(-)] dev-python/pygobject:3[cairo,python_targets_python2_7(-)] ) >=app-arch/gcab-1.0 app-arch/libarchive:= dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error >=dev-libs/libgudev-232:= >=dev-libs/libgusb-0.3.5:=[introspection?] >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13 >=net-libs/libsoup-2.51.92:2.4[introspection?] virtual/libelf:0= virtual/udev consolekit? ( >=sys-auth/consolekit-1.0.0 ) dell? ( sys-libs/efivar >=sys-libs/libsmbios-2.4.0 ) elogind? ( sys-auth/elogind ) !minimal? ( >=sys-auth/polkit-0.103 ) nvme? ( sys-libs/efivar ) redfish? ( sys-libs/efivar ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( app-crypt/tpm2-tss media-libs/fontconfig media-libs/freetype sys-boot/gnu-efi sys-boot/efibootmgr >=sys-libs/efivar-33 x11-libs/cairo ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 virtual/pkgconfig sys-apps/baselayout dev-util/desktop-file-utils x11-misc/shared-mime-info
-DESCRIPTION=Aims to make updating firmware on Linux automatic, safe and reliable
-EAPI=6
-HOMEPAGE=https://fwupd.org
-IUSE=agent amt consolekit dell gtk-doc elogind flashrom_i2c +minimal +gpg introspection +man nls nvme pkcs7 redfish synaptics systemd test thunderbolt uefi cros_host cros_workon_tree_c5e71820405d28bea34577cacbeeb1ddb3c974d5 kernel_linux python_single_target_python2_7 python_single_target_python3_6 python_single_target_python3_7
-KEYWORDS=*
-LICENSE=LGPL-2.1+
-PROPERTIES=live
-RDEPEND=>=app-arch/gcab-1.0 app-arch/libarchive:= dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error >=dev-libs/libgudev-232:= >=dev-libs/libgusb-0.3.5:=[introspection?] >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13 >=net-libs/libsoup-2.51.92:2.4[introspection?] virtual/libelf:0= virtual/udev consolekit? ( >=sys-auth/consolekit-1.0.0 ) dell? ( sys-libs/efivar >=sys-libs/libsmbios-2.4.0 ) elogind? ( sys-auth/elogind ) !minimal? ( >=sys-auth/polkit-0.103 ) nvme? ( sys-libs/efivar ) redfish? ( sys-libs/efivar ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( app-crypt/tpm2-tss media-libs/fontconfig media-libs/freetype sys-boot/gnu-efi sys-boot/efibootmgr >=sys-libs/efivar-33 x11-libs/cairo ) !<sci-chemistry/chemical-mime-data-0.1.94-r4 sys-apps/dbus sys-apps/baselayout
-REQUIRED_USE=^^ ( python_single_target_python2_7 python_single_target_python3_6 python_single_target_python3_7 ) ^^ ( consolekit elogind minimal systemd ) dell? ( uefi ) minimal? ( !introspection )
-RESTRICT=!test? ( test )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vala	2f3804278870542119da624a5eded505	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg	c7ba313ea1eaf266f95cc6235f7d6a07	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=989a4695a32470545ac35c9c2166a2f6
diff --git a/metadata/md5-cache/sys-apps/fwupd-1.6.1-r127 b/metadata/md5-cache/sys-apps/fwupd-1.6.1-r127
new file mode 100644
index 0000000..6d30960
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/fwupd-1.6.1-r127
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure info install postinst postrm preinst prepare setup test unpack
+DEPEND=>=app-arch/gcab-1.0 dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error dev-libs/libgudev:= >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13:= >=net-libs/libsoup-2.51.92:2.4[introspection?] net-misc/curl virtual/libelf:0= virtual/udev archive? ( app-arch/libarchive:= ) dell? ( >=sys-libs/libsmbios-2.4.0 ) elogind? ( >=sys-auth/elogind-211 ) flashrom? ( sys-apps/flashrom ) gnutls? ( net-libs/gnutls ) gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] ) lzma? ( app-arch/xz-utils ) policykit? ( >=sys-auth/polkit-0.103 ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( sys-apps/fwupd-efi sys-boot/efibootmgr sys-fs/udisks sys-libs/efivar ) x11-libs/pango || ( dev-lang/vala:0.36 dev-lang/vala:0.34 dev-lang/vala:0.32 ) python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8 >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9 >=dev-lang/python-exec-2:=[python_targets_python3_9] ) python_single_target_python2_7? ( dev-python/pillow[python_targets_python2_7(-)] dev-python/pycairo[python_targets_python2_7(-)] dev-python/pygobject:3[cairo,python_targets_python2_7(-)] ) !<sci-chemistry/chemical-mime-data-0.1.94-r4 >=app-arch/gcab-1.0 dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error dev-libs/libgudev:= >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13:= >=net-libs/libsoup-2.51.92:2.4[introspection?] net-misc/curl virtual/libelf:0= virtual/udev archive? ( app-arch/libarchive:= ) dell? ( >=sys-libs/libsmbios-2.4.0 ) elogind? ( >=sys-auth/elogind-211 ) flashrom? ( sys-apps/flashrom ) gnutls? ( net-libs/gnutls ) gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] ) lzma? ( app-arch/xz-utils ) policykit? ( >=sys-auth/polkit-0.103 ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( sys-apps/fwupd-efi sys-boot/efibootmgr sys-fs/udisks sys-libs/efivar ) sys-apps/dbus >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array virtual/pkgconfig sys-apps/baselayout dev-util/desktop-file-utils x11-misc/shared-mime-info
+DESCRIPTION=Aims to make updating firmware on Linux automatic, safe and reliable
+EAPI=6
+HOMEPAGE=https://fwupd.org
+IUSE=+agent amt archive +bluetooth dell +dummy +gnutls gtk-doc +gusb elogind flashrom +gpg lzma minimal introspection +man nls nvme pkcs7 policykit spi synaptics systemd test thunderbolt uefi cros_host cros_workon_tree_3445c6105d04d1a045d86e4d9d25bbadd2953cf9 kernel_linux python_single_target_python2_7 python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9
+KEYWORDS=*
+LICENSE=LGPL-2.1+
+PROPERTIES=live
+RDEPEND=!<sci-chemistry/chemical-mime-data-0.1.94-r4 >=app-arch/gcab-1.0 dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error dev-libs/libgudev:= >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13:= >=net-libs/libsoup-2.51.92:2.4[introspection?] net-misc/curl virtual/libelf:0= virtual/udev archive? ( app-arch/libarchive:= ) dell? ( >=sys-libs/libsmbios-2.4.0 ) elogind? ( >=sys-auth/elogind-211 ) flashrom? ( sys-apps/flashrom ) gnutls? ( net-libs/gnutls ) gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] ) lzma? ( app-arch/xz-utils ) policykit? ( >=sys-auth/polkit-0.103 ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( sys-apps/fwupd-efi sys-boot/efibootmgr sys-fs/udisks sys-libs/efivar ) sys-apps/dbus sys-apps/baselayout
+REQUIRED_USE=^^ ( python_single_target_python2_7 python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9 ) dell? ( uefi ) minimal? ( !introspection ) spi? ( lzma ) synaptics? ( gnutls ) uefi? ( gnutls )
+RESTRICT=!test? ( test )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vala	2f3804278870542119da624a5eded505	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg	c7ba313ea1eaf266f95cc6235f7d6a07	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=4439ff99e490ce45ff3a3821e3947b3b
diff --git a/metadata/md5-cache/sys-apps/fwupd-9998 b/metadata/md5-cache/sys-apps/fwupd-9998
new file mode 100644
index 0000000..a17c5d4
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/fwupd-9998
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst postrm preinst prepare setup test unpack
+DEPEND=>=app-arch/gcab-1.0 dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error dev-libs/libgudev:= >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13:= >=net-libs/libsoup-2.51.92:2.4[introspection?] net-misc/curl virtual/libelf:0= virtual/udev archive? ( app-arch/libarchive:= ) dell? ( >=sys-libs/libsmbios-2.4.0 ) elogind? ( >=sys-auth/elogind-211 ) flashrom? ( sys-apps/flashrom ) gnutls? ( net-libs/gnutls ) gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] ) lzma? ( app-arch/xz-utils ) policykit? ( >=sys-auth/polkit-0.103 ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( sys-apps/fwupd-efi sys-boot/efibootmgr sys-fs/udisks sys-libs/efivar ) x11-libs/pango || ( dev-lang/vala:0.36 dev-lang/vala:0.34 dev-lang/vala:0.32 ) python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8 >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9 >=dev-lang/python-exec-2:=[python_targets_python3_9] ) python_single_target_python2_7? ( dev-python/pillow[python_targets_python2_7(-)] dev-python/pycairo[python_targets_python2_7(-)] dev-python/pygobject:3[cairo,python_targets_python2_7(-)] ) !<sci-chemistry/chemical-mime-data-0.1.94-r4 >=app-arch/gcab-1.0 dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error dev-libs/libgudev:= >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13:= >=net-libs/libsoup-2.51.92:2.4[introspection?] net-misc/curl virtual/libelf:0= virtual/udev archive? ( app-arch/libarchive:= ) dell? ( >=sys-libs/libsmbios-2.4.0 ) elogind? ( >=sys-auth/elogind-211 ) flashrom? ( sys-apps/flashrom ) gnutls? ( net-libs/gnutls ) gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] ) lzma? ( app-arch/xz-utils ) policykit? ( >=sys-auth/polkit-0.103 ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( sys-apps/fwupd-efi sys-boot/efibootmgr sys-fs/udisks sys-libs/efivar ) sys-apps/dbus >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array virtual/pkgconfig sys-apps/baselayout dev-util/desktop-file-utils x11-misc/shared-mime-info
+DESCRIPTION=Aims to make updating firmware on Linux automatic, safe and reliable
+EAPI=6
+HOMEPAGE=https://fwupd.org
+IUSE=+agent amt archive +bluetooth dell +dummy +gnutls gtk-doc +gusb elogind flashrom +gpg lzma minimal introspection +man nls nvme pkcs7 policykit spi synaptics systemd test thunderbolt uefi kernel_linux python_single_target_python2_7 python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9
+KEYWORDS=*
+LICENSE=LGPL-2.1+
+PROPERTIES=live
+RDEPEND=!<sci-chemistry/chemical-mime-data-0.1.94-r4 >=app-arch/gcab-1.0 dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error dev-libs/libgudev:= >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13:= >=net-libs/libsoup-2.51.92:2.4[introspection?] net-misc/curl virtual/libelf:0= virtual/udev archive? ( app-arch/libarchive:= ) dell? ( >=sys-libs/libsmbios-2.4.0 ) elogind? ( >=sys-auth/elogind-211 ) flashrom? ( sys-apps/flashrom ) gnutls? ( net-libs/gnutls ) gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] ) lzma? ( app-arch/xz-utils ) policykit? ( >=sys-auth/polkit-0.103 ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( sys-apps/fwupd-efi sys-boot/efibootmgr sys-fs/udisks sys-libs/efivar ) sys-apps/dbus sys-apps/baselayout
+REQUIRED_USE=^^ ( python_single_target_python2_7 python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9 ) dell? ( uefi ) minimal? ( !introspection ) spi? ( lzma ) synaptics? ( gnutls ) uefi? ( gnutls )
+RESTRICT=!test? ( test )
+SLOT=0
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vala	2f3804278870542119da624a5eded505	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg	c7ba313ea1eaf266f95cc6235f7d6a07	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=195c05940864187dfba749b2fb3d60be
diff --git a/metadata/md5-cache/sys-apps/fwupd-9999 b/metadata/md5-cache/sys-apps/fwupd-9999
index 992fc66..d7adb56 100644
--- a/metadata/md5-cache/sys-apps/fwupd-9999
+++ b/metadata/md5-cache/sys-apps/fwupd-9999
@@ -1,15 +1,15 @@
 DEFINED_PHASES=compile configure info install postinst postrm preinst prepare setup test unpack
-DEPEND=|| ( dev-lang/vala:0.36 dev-lang/vala:0.34 dev-lang/vala:0.32 ) python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python2_7? ( dev-python/pillow[python_targets_python2_7(-)] dev-python/pycairo[python_targets_python2_7(-)] dev-python/pygobject:3[cairo,python_targets_python2_7(-)] ) >=app-arch/gcab-1.0 app-arch/libarchive:= dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error >=dev-libs/libgudev-232:= >=dev-libs/libgusb-0.3.5:=[introspection?] >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13 >=net-libs/libsoup-2.51.92:2.4[introspection?] virtual/libelf:0= virtual/udev consolekit? ( >=sys-auth/consolekit-1.0.0 ) dell? ( sys-libs/efivar >=sys-libs/libsmbios-2.4.0 ) elogind? ( sys-auth/elogind ) !minimal? ( >=sys-auth/polkit-0.103 ) nvme? ( sys-libs/efivar ) redfish? ( sys-libs/efivar ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( app-crypt/tpm2-tss media-libs/fontconfig media-libs/freetype sys-boot/gnu-efi sys-boot/efibootmgr >=sys-libs/efivar-33 x11-libs/cairo ) >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 virtual/pkgconfig sys-apps/baselayout dev-util/desktop-file-utils x11-misc/shared-mime-info
+DEPEND=>=app-arch/gcab-1.0 dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error dev-libs/libgudev:= >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13:= >=net-libs/libsoup-2.51.92:2.4[introspection?] net-misc/curl virtual/libelf:0= virtual/udev archive? ( app-arch/libarchive:= ) dell? ( >=sys-libs/libsmbios-2.4.0 ) elogind? ( >=sys-auth/elogind-211 ) flashrom? ( sys-apps/flashrom ) gnutls? ( net-libs/gnutls ) gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] ) lzma? ( app-arch/xz-utils ) policykit? ( >=sys-auth/polkit-0.103 ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( sys-apps/fwupd-efi sys-boot/efibootmgr sys-fs/udisks sys-libs/efivar ) x11-libs/pango || ( dev-lang/vala:0.36 dev-lang/vala:0.34 dev-lang/vala:0.32 ) python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7 >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8 >=dev-lang/python-exec-2:=[python_targets_python3_8] ) python_single_target_python3_9? ( dev-lang/python:3.9 >=dev-lang/python-exec-2:=[python_targets_python3_9] ) python_single_target_python2_7? ( dev-python/pillow[python_targets_python2_7(-)] dev-python/pycairo[python_targets_python2_7(-)] dev-python/pygobject:3[cairo,python_targets_python2_7(-)] ) !<sci-chemistry/chemical-mime-data-0.1.94-r4 >=app-arch/gcab-1.0 dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error dev-libs/libgudev:= >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13:= >=net-libs/libsoup-2.51.92:2.4[introspection?] net-misc/curl virtual/libelf:0= virtual/udev archive? ( app-arch/libarchive:= ) dell? ( >=sys-libs/libsmbios-2.4.0 ) elogind? ( >=sys-auth/elogind-211 ) flashrom? ( sys-apps/flashrom ) gnutls? ( net-libs/gnutls ) gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] ) lzma? ( app-arch/xz-utils ) policykit? ( >=sys-auth/polkit-0.103 ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( sys-apps/fwupd-efi sys-boot/efibootmgr sys-fs/udisks sys-libs/efivar ) sys-apps/dbus >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array virtual/pkgconfig sys-apps/baselayout dev-util/desktop-file-utils x11-misc/shared-mime-info
 DESCRIPTION=Aims to make updating firmware on Linux automatic, safe and reliable
 EAPI=6
 HOMEPAGE=https://fwupd.org
-IUSE=agent amt consolekit dell gtk-doc elogind flashrom_i2c +minimal +gpg introspection +man nls nvme pkcs7 redfish synaptics systemd test thunderbolt uefi cros_host cros_workon_tree_ kernel_linux python_single_target_python2_7 python_single_target_python3_6 python_single_target_python3_7
+IUSE=+agent amt archive +bluetooth dell +dummy +gnutls gtk-doc +gusb elogind flashrom +gpg lzma minimal introspection +man nls nvme pkcs7 policykit spi synaptics systemd test thunderbolt uefi cros_host cros_workon_tree_ kernel_linux python_single_target_python2_7 python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9
 KEYWORDS=~*
 LICENSE=LGPL-2.1+
 PROPERTIES=live
-RDEPEND=>=app-arch/gcab-1.0 app-arch/libarchive:= dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error >=dev-libs/libgudev-232:= >=dev-libs/libgusb-0.3.5:=[introspection?] >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13 >=net-libs/libsoup-2.51.92:2.4[introspection?] virtual/libelf:0= virtual/udev consolekit? ( >=sys-auth/consolekit-1.0.0 ) dell? ( sys-libs/efivar >=sys-libs/libsmbios-2.4.0 ) elogind? ( sys-auth/elogind ) !minimal? ( >=sys-auth/polkit-0.103 ) nvme? ( sys-libs/efivar ) redfish? ( sys-libs/efivar ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( app-crypt/tpm2-tss media-libs/fontconfig media-libs/freetype sys-boot/gnu-efi sys-boot/efibootmgr >=sys-libs/efivar-33 x11-libs/cairo ) !<sci-chemistry/chemical-mime-data-0.1.94-r4 sys-apps/dbus sys-apps/baselayout
-REQUIRED_USE=^^ ( python_single_target_python2_7 python_single_target_python3_6 python_single_target_python3_7 ) ^^ ( consolekit elogind minimal systemd ) dell? ( uefi ) minimal? ( !introspection )
+RDEPEND=!<sci-chemistry/chemical-mime-data-0.1.94-r4 >=app-arch/gcab-1.0 dev-db/sqlite >=dev-libs/glib-2.45.8:2 dev-libs/json-glib dev-libs/libgpg-error dev-libs/libgudev:= >=dev-libs/libjcat-0.1.0[gpg?,pkcs7?] >=dev-libs/libxmlb-0.1.13:= >=net-libs/libsoup-2.51.92:2.4[introspection?] net-misc/curl virtual/libelf:0= virtual/udev archive? ( app-arch/libarchive:= ) dell? ( >=sys-libs/libsmbios-2.4.0 ) elogind? ( >=sys-auth/elogind-211 ) flashrom? ( sys-apps/flashrom ) gnutls? ( net-libs/gnutls ) gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] ) lzma? ( app-arch/xz-utils ) policykit? ( >=sys-auth/polkit-0.103 ) systemd? ( >=sys-apps/systemd-211 ) uefi? ( sys-apps/fwupd-efi sys-boot/efibootmgr sys-fs/udisks sys-libs/efivar ) sys-apps/dbus sys-apps/baselayout
+REQUIRED_USE=^^ ( python_single_target_python2_7 python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 python_single_target_python3_9 ) dell? ( uefi ) minimal? ( !introspection ) spi? ( lzma ) synaptics? ( gnutls ) uefi? ( gnutls )
 RESTRICT=!test? ( test )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vala	2f3804278870542119da624a5eded505	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg	c7ba313ea1eaf266f95cc6235f7d6a07	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=d0d5610baa3b1f5b1719cae3389f290b
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vala	2f3804278870542119da624a5eded505	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg	c7ba313ea1eaf266f95cc6235f7d6a07	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=a4f09892f23ccd835bd647e0a24b6520
diff --git a/metadata/md5-cache/sys-apps/huddly-updater-0.0.1-r84 b/metadata/md5-cache/sys-apps/huddly-updater-0.0.1-r84
index bc02f4e..45c670c 100644
--- a/metadata/md5-cache/sys-apps/huddly-updater-0.0.1-r84
+++ b/metadata/md5-cache/sys-apps/huddly-updater-0.0.1-r84
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/libbrillo:= chromeos-base/cfm-dfu-notification:= dev-libs/msgpack:= virtual/libusb:1 virtual/libudev:0= app-arch/unzip >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
 SLOT=0/0.0.1-r84
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=cb687b4e571718eddb57dd2116405e55
diff --git a/metadata/md5-cache/sys-apps/huddly-updater-9999 b/metadata/md5-cache/sys-apps/huddly-updater-9999
index 9ec9f3c..bedb457 100644
--- a/metadata/md5-cache/sys-apps/huddly-updater-9999
+++ b/metadata/md5-cache/sys-apps/huddly-updater-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/libbrillo:= chromeos-base/cfm-dfu-notification:= dev-libs/msgpack:= virtual/libusb:1 virtual/libudev:0= app-arch/unzip >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=a3fbd54ea7ccd17f77dc616d65129ceb
diff --git a/metadata/md5-cache/sys-apps/hwids-20150717 b/metadata/md5-cache/sys-apps/hwids-20150717
index 196d89c..10fcb3e 100644
--- a/metadata/md5-cache/sys-apps/hwids-20150717
+++ b/metadata/md5-cache/sys-apps/hwids-20150717
@@ -1,4 +1,4 @@
-DEFINED_PHASES=compile install postinst prepare
+DEFINED_PHASES=compile install prepare
 DEPEND=udev? ( dev-lang/perl >=virtual/udev-206 ) virtual/pkgconfig
 DESCRIPTION=Hardware (PCI, USB, OUI, IAB) IDs databases
 EAPI=5
@@ -10,4 +10,4 @@
 SLOT=0
 SRC_URI=https://github.com/gentoo/hwids/archive/hwids-20150717.tar.gz
 _eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e31b421381b3f80c4d294187c4c9dca4
+_md5_=3a651a174fef3000aac6620a5d2591c8
diff --git a/metadata/md5-cache/sys-apps/hwids-20150717-r8 b/metadata/md5-cache/sys-apps/hwids-20150717-r8
deleted file mode 100644
index 196d89c..0000000
--- a/metadata/md5-cache/sys-apps/hwids-20150717-r8
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install postinst prepare
-DEPEND=udev? ( dev-lang/perl >=virtual/udev-206 ) virtual/pkgconfig
-DESCRIPTION=Hardware (PCI, USB, OUI, IAB) IDs databases
-EAPI=5
-HOMEPAGE=https://github.com/gentoo/hwids
-IUSE=+net +pci +udev +usb +hwids-lite
-KEYWORDS=*
-LICENSE=|| ( GPL-2 BSD ) public-domain
-RDEPEND=!<sys-apps/pciutils-3.1.9-r2 !<sys-apps/usbutils-005-r1
-SLOT=0
-SRC_URI=https://github.com/gentoo/hwids/archive/hwids-20150717.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=e31b421381b3f80c4d294187c4c9dca4
diff --git a/metadata/md5-cache/sys-apps/hwids-20150717-r9 b/metadata/md5-cache/sys-apps/hwids-20150717-r9
new file mode 100644
index 0000000..10fcb3e
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/hwids-20150717-r9
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile install prepare
+DEPEND=udev? ( dev-lang/perl >=virtual/udev-206 ) virtual/pkgconfig
+DESCRIPTION=Hardware (PCI, USB, OUI, IAB) IDs databases
+EAPI=5
+HOMEPAGE=https://github.com/gentoo/hwids
+IUSE=+net +pci +udev +usb +hwids-lite
+KEYWORDS=*
+LICENSE=|| ( GPL-2 BSD ) public-domain
+RDEPEND=!<sys-apps/pciutils-3.1.9-r2 !<sys-apps/usbutils-005-r1
+SLOT=0
+SRC_URI=https://github.com/gentoo/hwids/archive/hwids-20150717.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=3a651a174fef3000aac6620a5d2591c8
diff --git a/metadata/md5-cache/sys-apps/journald-242 b/metadata/md5-cache/sys-apps/journald-242
deleted file mode 100644
index 47d2daa..0000000
--- a/metadata/md5-cache/sys-apps/journald-242
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test unpack
-DEPEND=>=sys-kernel/linux-headers-3.10 >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 virtual/pkgconfig virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=System and service manager for Linux
-EAPI=6
-HOMEPAGE=https://www.freedesktop.org/wiki/Software/systemd
-IUSE=-acl -gcrypt -http -lzma +pcre -qrcode -seccomp -selinux +split-usr abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=GPL-2 LGPL-2.1 public-domain
-RDEPEND=>=sys-apps/util-linux-2.30:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/libcap:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !<sys-libs/glibc-2.16 acl? ( sys-apps/acl:0= ) gcrypt? ( >=dev-libs/libgcrypt-1.4.5:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) http? ( >=net-libs/libmicrohttpd-0.9.33:0= ) lzma? ( >=app-arch/xz-utils-5.0.5-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) pcre? ( dev-libs/libpcre2 ) qrcode? ( media-gfx/qrencode:0= ) seccomp? ( sys-libs/libseccomp:0= ) selinux? ( sys-libs/libselinux:0= ) >=sys-apps/baselayout-2.2 !sys-apps/systemd sys-apps/baselayout
-SLOT=0/2
-SRC_URI=https://github.com/systemd/systemd/archive/v242/journald-242.tar.gz -> systemd-242.tar.gz
-_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5606a06b6803377663a63cc2564e6d5e
diff --git a/metadata/md5-cache/sys-apps/journald-242-r7 b/metadata/md5-cache/sys-apps/journald-242-r7
deleted file mode 100644
index 47d2daa..0000000
--- a/metadata/md5-cache/sys-apps/journald-242-r7
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test unpack
-DEPEND=>=sys-kernel/linux-headers-3.10 >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 virtual/pkgconfig virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=System and service manager for Linux
-EAPI=6
-HOMEPAGE=https://www.freedesktop.org/wiki/Software/systemd
-IUSE=-acl -gcrypt -http -lzma +pcre -qrcode -seccomp -selinux +split-usr abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=GPL-2 LGPL-2.1 public-domain
-RDEPEND=>=sys-apps/util-linux-2.30:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/libcap:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !<sys-libs/glibc-2.16 acl? ( sys-apps/acl:0= ) gcrypt? ( >=dev-libs/libgcrypt-1.4.5:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) http? ( >=net-libs/libmicrohttpd-0.9.33:0= ) lzma? ( >=app-arch/xz-utils-5.0.5-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) pcre? ( dev-libs/libpcre2 ) qrcode? ( media-gfx/qrencode:0= ) seccomp? ( sys-libs/libseccomp:0= ) selinux? ( sys-libs/libselinux:0= ) >=sys-apps/baselayout-2.2 !sys-apps/systemd sys-apps/baselayout
-SLOT=0/2
-SRC_URI=https://github.com/systemd/systemd/archive/v242/journald-242.tar.gz -> systemd-242.tar.gz
-_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5606a06b6803377663a63cc2564e6d5e
diff --git a/metadata/md5-cache/sys-apps/libtsm-3-r2 b/metadata/md5-cache/sys-apps/libtsm-3-r2
deleted file mode 100644
index 97ad428..0000000
--- a/metadata/md5-cache/sys-apps/libtsm-3-r2
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=prepare
-DEPEND=!!=sys-apps/kmscon-7
-DESCRIPTION=Terminal Emulator State Machine
-EAPI=5
-HOMEPAGE=http://cgit.freedesktop.org/~dvdhrm/libtsm
-KEYWORDS=*
-LICENSE=LGPL-2.1 MIT
-RDEPEND=!!=sys-apps/kmscon-7
-SLOT=0
-SRC_URI=http://www.freedesktop.org/software/kmscon/releases/libtsm-3.tar.xz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5aa552bd320bf5e6e3cc802f58253bd8
diff --git a/metadata/md5-cache/sys-apps/libtsm-3-r3 b/metadata/md5-cache/sys-apps/libtsm-3-r3
new file mode 100644
index 0000000..c536aa8
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/libtsm-3-r3
@@ -0,0 +1,12 @@
+DEFINED_PHASES=configure prepare
+DEPEND=!!=sys-apps/kmscon-7
+DESCRIPTION=Terminal Emulator State Machine
+EAPI=5
+HOMEPAGE=http://cgit.freedesktop.org/~dvdhrm/libtsm
+KEYWORDS=*
+LICENSE=LGPL-2.1 MIT
+RDEPEND=!!=sys-apps/kmscon-7
+SLOT=0
+SRC_URI=http://www.freedesktop.org/software/kmscon/releases/libtsm-3.tar.xz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=d437af8752902889430869f7d1cc87ad
diff --git a/metadata/md5-cache/sys-apps/logitech-updater-0.0.1-r36 b/metadata/md5-cache/sys-apps/logitech-updater-0.0.1-r36
deleted file mode 100644
index b5883ab..0000000
--- a/metadata/md5-cache/sys-apps/logitech-updater-0.0.1-r36
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=configure info install preinst setup unpack
-DEPEND=chromeos-base/libbrillo:= virtual/libusb:1= chromeos-base/cfm-dfu-notification:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
-DESCRIPTION=Logitech firmware updater
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/logitech-updater
-IUSE=cros-debug cros_host cros_workon_tree_04ae3a02c7715e36e51a752d882ffea18dc74c76 cros-debug
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/libbrillo:= virtual/libusb:1= chromeos-base/cfm-dfu-notification:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
-SLOT=0/0.0.1-r36
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=ab2656b785509303292e32cac9c7a2ec
diff --git a/metadata/md5-cache/sys-apps/logitech-updater-0.0.1-r38 b/metadata/md5-cache/sys-apps/logitech-updater-0.0.1-r38
new file mode 100644
index 0000000..6b13507
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/logitech-updater-0.0.1-r38
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=configure info install preinst setup unpack
+DEPEND=chromeos-base/libbrillo:= virtual/libusb:1= chromeos-base/cfm-dfu-notification:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
+DESCRIPTION=Logitech firmware updater
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/logitech-updater
+IUSE=cros-debug cros_host cros_workon_tree_90de1569f3cb060aad3d52ca223c9db67efff1e3 cros-debug
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/libbrillo:= virtual/libusb:1= chromeos-base/cfm-dfu-notification:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
+SLOT=0/0.0.1-r38
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=1815d8cad8a3f3e33ecf59a4f8e77e46
diff --git a/metadata/md5-cache/sys-apps/logitech-updater-9999 b/metadata/md5-cache/sys-apps/logitech-updater-9999
index fce8639..84775de 100644
--- a/metadata/md5-cache/sys-apps/logitech-updater-9999
+++ b/metadata/md5-cache/sys-apps/logitech-updater-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/libbrillo:= virtual/libusb:1= chromeos-base/cfm-dfu-notification:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=974889840fc65ee3d6f06bf6fbb18e0a
diff --git a/metadata/md5-cache/sys-apps/mimo-updater-0.0.1-r24 b/metadata/md5-cache/sys-apps/mimo-updater-0.0.1-r24
index 8ffdcde..668c7b5 100644
--- a/metadata/md5-cache/sys-apps/mimo-updater-0.0.1-r24
+++ b/metadata/md5-cache/sys-apps/mimo-updater-0.0.1-r24
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/libbrillo:= virtual/libusb:1 virtual/libudev:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
 SLOT=0/0.0.1-r24
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=7c6243281d9a756fc2ad521db0f5e498
diff --git a/metadata/md5-cache/sys-apps/mimo-updater-9999 b/metadata/md5-cache/sys-apps/mimo-updater-9999
index b774217..b2a001b 100644
--- a/metadata/md5-cache/sys-apps/mimo-updater-9999
+++ b/metadata/md5-cache/sys-apps/mimo-updater-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/libbrillo:= virtual/libusb:1 virtual/libudev:0= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=718682785f9c3f6a0b4362798c191264
diff --git a/metadata/md5-cache/sys-apps/mmc-utils-0.0.1-r22 b/metadata/md5-cache/sys-apps/mmc-utils-0.0.1-r22
deleted file mode 100644
index 54c6507..0000000
--- a/metadata/md5-cache/sys-apps/mmc-utils-0.0.1-r22
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=configure info setup unpack
-DESCRIPTION=Userspace tools for MMC/SD devices
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/mmc-utils
-IUSE=static cros_host cros_workon_tree_c33e33f2cca1cfe902549b5e32748656c937e009
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a1f1adfa0a622e5f2f95d759c3080db0
diff --git a/metadata/md5-cache/sys-apps/mmc-utils-0.0.1-r23 b/metadata/md5-cache/sys-apps/mmc-utils-0.0.1-r23
new file mode 100644
index 0000000..73456ea
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/mmc-utils-0.0.1-r23
@@ -0,0 +1,12 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=configure info setup unpack
+DESCRIPTION=Userspace tools for MMC/SD devices
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/mmc-utils
+IUSE=static cros_host cros_workon_tree_ef12a78ebfea31de945ebbe2d56e405fea38258b
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f52122d3ef6a76e02dd3b7e29b20adc3
diff --git a/metadata/md5-cache/sys-apps/mmc-utils-9999 b/metadata/md5-cache/sys-apps/mmc-utils-9999
index 7b21db9..f44bec4 100644
--- a/metadata/md5-cache/sys-apps/mmc-utils-9999
+++ b/metadata/md5-cache/sys-apps/mmc-utils-9999
@@ -8,5 +8,5 @@
 LICENSE=GPL-2
 PROPERTIES=live
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=8fab2247ac0cd5d06565648b17884d15
diff --git a/metadata/md5-cache/sys-apps/mosys-1.2.3-r1232 b/metadata/md5-cache/sys-apps/mosys-1.2.3-r1232
deleted file mode 100644
index a03d41a..0000000
--- a/metadata/md5-cache/sys-apps/mosys-1.2.3-r1232
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=>=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git dev-vcs/git
-DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) vpd_file_cache? ( chromeos-base/vpd ) dev-util/cmocka chromeos-base/minijail cros_host? ( dev-util/gn ) dev-cpp/gtest:=
-DESCRIPTION=Utility for obtaining various bits of low-level system info
-EAPI=7
-HOMEPAGE=http://mosys.googlecode.com/
-IUSE=generated_cros_config unibuild vpd_file_cache cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8de8a013f37ac253ba70dec07feafa54b0862c7c cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb_8de8a013f37ac253ba70dec07feafa54b0862c7c compilation_database cros_host test
-KEYWORDS=*
-LICENSE=BSD-Google BSD Apache-2.0 MIT ISC Unlicense
-PROPERTIES=live live
-RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) vpd_file_cache? ( chromeos-base/vpd ) dev-util/cmocka chromeos-base/minijail
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	platform	cd60a3aa853d28001988f2b07bf2e56c	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=fce6fb4ad311600621611f516b027ce4
diff --git a/metadata/md5-cache/sys-apps/mosys-1.2.3-r1294 b/metadata/md5-cache/sys-apps/mosys-1.2.3-r1294
new file mode 100644
index 0000000..bfa985f
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/mosys-1.2.3-r1294
@@ -0,0 +1,14 @@
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git dev-vcs/git
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) vpd_file_cache? ( chromeos-base/vpd ) dev-util/cmocka chromeos-base/minijail cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
+DESCRIPTION=Utility for obtaining various bits of low-level system info
+EAPI=7
+HOMEPAGE=http://mosys.googlecode.com/
+IUSE=generated_cros_config unibuild vpd_file_cache cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_bcf4019b8955138ea74f9724cd90d5490c3c8b70 cros-debug fuzzer asan coverage fuzzer msan tsan ubsan cros_host cros_workon_tree_791c6808b4f4f5f1c484108d66ff958d65f8f1e3_bcf4019b8955138ea74f9724cd90d5490c3c8b70 compilation_database cros_host test
+KEYWORDS=*
+LICENSE=BSD-Google BSD Apache-2.0 MIT ISC Unlicense
+PROPERTIES=live live
+RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) vpd_file_cache? ( chromeos-base/vpd ) dev-util/cmocka chromeos-base/minijail
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	platform	efc0b92bddaaf9cd74eceec133e77973	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f2d6f06ee4bc779ac1ddb125eeb48876
diff --git a/metadata/md5-cache/sys-apps/mosys-9999 b/metadata/md5-cache/sys-apps/mosys-9999
index 5a98cb8..06d1f61 100644
--- a/metadata/md5-cache/sys-apps/mosys-9999
+++ b/metadata/md5-cache/sys-apps/mosys-9999
@@ -1,6 +1,6 @@
-BDEPEND=>=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git dev-vcs/git
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git dev-vcs/git
 DEFINED_PHASES=compile configure info install setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) vpd_file_cache? ( chromeos-base/vpd ) dev-util/cmocka chromeos-base/minijail cros_host? ( dev-util/gn ) dev-cpp/gtest:=
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) vpd_file_cache? ( chromeos-base/vpd ) dev-util/cmocka chromeos-base/minijail cros_host? ( dev-util/gn ) >=dev-cpp/gtest-1.10.0:=
 DESCRIPTION=Utility for obtaining various bits of low-level system info
 EAPI=7
 HOMEPAGE=http://mosys.googlecode.com/
@@ -10,5 +10,5 @@
 PROPERTIES=live live
 RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) vpd_file_cache? ( chromeos-base/vpd ) dev-util/cmocka chromeos-base/minijail
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	platform	cd60a3aa853d28001988f2b07bf2e56c	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-fuzzer	b480bfcdd51a928c9a2254c6641649a2	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	platform	efc0b92bddaaf9cd74eceec133e77973	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=ea9ccb604c04b27b114f544ef40e5b60
diff --git a/metadata/md5-cache/sys-apps/novatek-tcon-fw-update-tool-0.0.1-r4 b/metadata/md5-cache/sys-apps/novatek-tcon-fw-update-tool-0.0.1-r4
index 9e458e6..fc4510b 100644
--- a/metadata/md5-cache/sys-apps/novatek-tcon-fw-update-tool-0.0.1-r4
+++ b/metadata/md5-cache/sys-apps/novatek-tcon-fw-update-tool-0.0.1-r4
@@ -7,5 +7,5 @@
 LICENSE=BSD
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=acdbafba030e35c05b23e33cf4e355ad
diff --git a/metadata/md5-cache/sys-apps/novatek-tcon-fw-update-tool-9999 b/metadata/md5-cache/sys-apps/novatek-tcon-fw-update-tool-9999
index a2a0444..fc044dd 100644
--- a/metadata/md5-cache/sys-apps/novatek-tcon-fw-update-tool-9999
+++ b/metadata/md5-cache/sys-apps/novatek-tcon-fw-update-tool-9999
@@ -7,5 +7,5 @@
 LICENSE=BSD
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=4d4316d8817806476dc36b05dec1a1c5
diff --git a/metadata/md5-cache/sys-apps/portage-2.3.75-r56 b/metadata/md5-cache/sys-apps/portage-2.3.75-r56
deleted file mode 100644
index 23552d4..0000000
--- a/metadata/md5-cache/sys-apps/portage-2.3.75-r56
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure info install preinst prepare setup test unpack
-DEPEND=!build? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[ssl(+)] ) python_targets_python3_6? ( dev-lang/python:3.6[ssl(+)] ) python_targets_python3_7? ( dev-lang/python:3.7[ssl(+)] ) ) >=app-arch/tar-1.27 dev-lang/python-exec:2 >=sys-apps/sed-4.0.5 sys-devel/patch doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 ) epydoc? ( python_targets_python2_7? ( >=dev-python/epydoc-2.0[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[bzip2(+),threads(+)] ) python_targets_python3_6? ( dev-lang/python:3.6[bzip2(+),threads(+)] ) python_targets_python3_7? ( dev-lang/python:3.7[bzip2(+),threads(+)] ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] virtual/pkgconfig
-DESCRIPTION=Portage is the package management and distribution system for Gentoo
-EAPI=5
-HOMEPAGE=https://wiki.gentoo.org/wiki/Project:Portage
-IUSE=build doc epydoc gentoo-dev +ipc +native-extensions -rsync-verify selinux xattr python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 cros_host cros_workon_tree_d9b674fa27b8166f180fc6f40238a588593b97cb
-KEYWORDS=*
-LICENSE=GPL-2
-PDEPEND=!build? ( >=net-misc/rsync-2.6.4 userland_GNU? ( >=sys-apps/coreutils-6.4 ) )
-PROPERTIES=live
-RDEPEND=>=app-arch/tar-1.27 dev-lang/python-exec:2 !build? ( >=sys-apps/sed-4.0.5 app-shells/bash:0[readline] >=app-admin/eselect-1.2 python_targets_python2_7? ( dev-python/pyblake2[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) rsync-verify? ( >=app-portage/gemato-14[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] >=app-crypt/openpgp-keys-gentoo-release-20180706 >=app-crypt/gnupg-2.2.4-r2[ssl(-)] ) ) elibc_FreeBSD? ( sys-freebsd/freebsd-bin ) elibc_glibc? ( >=sys-apps/sandbox-2.2 ) elibc_musl? ( >=sys-apps/sandbox-2.2 ) elibc_uclibc? ( >=sys-apps/sandbox-2.2 ) >=app-misc/pax-utils-0.1.17 selinux? ( >=sys-libs/libselinux-2.0.94[python,python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] ) xattr? ( kernel_linux? ( >=sys-apps/install-xattr-0.3 python_targets_python2_7? ( dev-python/pyxattr[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) ) ) !<app-portage/gentoolkit-0.3.0.8-r4 !<app-admin/logrotate-3.8.0 !<app-portage/repoman-2.3.10 python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[bzip2(+),threads(+)] ) python_targets_python3_6? ( dev-lang/python:3.6[bzip2(+),threads(+)] ) python_targets_python3_7? ( dev-lang/python:3.7[bzip2(+),threads(+)] ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
-REQUIRED_USE=epydoc? ( python_targets_python2_7 ) || ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=b13608779e9e39e0e02cf00297a62337
diff --git a/metadata/md5-cache/sys-apps/portage-2.3.75-r59 b/metadata/md5-cache/sys-apps/portage-2.3.75-r59
new file mode 100644
index 0000000..1dfaa26
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/portage-2.3.75-r59
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure info install preinst prepare setup test unpack
+DEPEND=!build? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[ssl(+)] ) python_targets_python3_6? ( dev-lang/python:3.6[ssl(+)] ) python_targets_python3_7? ( dev-lang/python:3.7[ssl(+)] ) ) >=app-arch/tar-1.27 dev-lang/python-exec:2 >=sys-apps/sed-4.0.5 sys-devel/patch doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 ) epydoc? ( python_targets_python2_7? ( >=dev-python/epydoc-2.0[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) ) python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[bzip2(+),threads(+)] ) python_targets_python3_6? ( dev-lang/python:3.6[bzip2(+),threads(+)] ) python_targets_python3_7? ( dev-lang/python:3.7[bzip2(+),threads(+)] ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] dev-python/setuptools[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] virtual/pkgconfig
+DESCRIPTION=Portage is the package management and distribution system for Gentoo
+EAPI=5
+HOMEPAGE=https://wiki.gentoo.org/wiki/Project:Portage
+IUSE=build doc epydoc gentoo-dev +ipc +native-extensions -rsync-verify selinux xattr python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 cros_host cros_workon_tree_36a4c89a02e336f72bbad9139911e34c2f91aaae
+KEYWORDS=*
+LICENSE=GPL-2
+PDEPEND=!build? ( >=net-misc/rsync-2.6.4 userland_GNU? ( >=sys-apps/coreutils-6.4 ) )
+PROPERTIES=live
+RDEPEND=>=app-arch/tar-1.27 dev-lang/python-exec:2 !build? ( >=sys-apps/sed-4.0.5 app-shells/bash:0[readline] >=app-admin/eselect-1.2 python_targets_python2_7? ( dev-python/pyblake2[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) rsync-verify? ( >=app-portage/gemato-14[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] >=app-crypt/openpgp-keys-gentoo-release-20180706 >=app-crypt/gnupg-2.2.4-r2[ssl(-)] ) ) elibc_FreeBSD? ( sys-freebsd/freebsd-bin ) elibc_glibc? ( >=sys-apps/sandbox-2.2 ) elibc_musl? ( >=sys-apps/sandbox-2.2 ) elibc_uclibc? ( >=sys-apps/sandbox-2.2 ) >=app-misc/pax-utils-0.1.17 selinux? ( >=sys-libs/libselinux-2.0.94[python,python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] ) xattr? ( kernel_linux? ( >=sys-apps/install-xattr-0.3 python_targets_python2_7? ( dev-python/pyxattr[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) ) ) !<app-portage/gentoolkit-0.3.0.8-r4 !<app-admin/logrotate-3.8.0 !<app-portage/repoman-2.3.10 python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[bzip2(+),threads(+)] ) python_targets_python3_6? ( dev-lang/python:3.6[bzip2(+),threads(+)] ) python_targets_python3_7? ( dev-lang/python:3.7[bzip2(+),threads(+)] ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
+REQUIRED_USE=epydoc? ( python_targets_python2_7 ) || ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=0ea907f6cc33ea0228813ed971932f19
diff --git a/metadata/md5-cache/sys-apps/portage-9999 b/metadata/md5-cache/sys-apps/portage-9999
index 08fa269..bfae8fd 100644
--- a/metadata/md5-cache/sys-apps/portage-9999
+++ b/metadata/md5-cache/sys-apps/portage-9999
@@ -11,5 +11,5 @@
 RDEPEND=>=app-arch/tar-1.27 dev-lang/python-exec:2 !build? ( >=sys-apps/sed-4.0.5 app-shells/bash:0[readline] >=app-admin/eselect-1.2 python_targets_python2_7? ( dev-python/pyblake2[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) rsync-verify? ( >=app-portage/gemato-14[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] >=app-crypt/openpgp-keys-gentoo-release-20180706 >=app-crypt/gnupg-2.2.4-r2[ssl(-)] ) ) elibc_FreeBSD? ( sys-freebsd/freebsd-bin ) elibc_glibc? ( >=sys-apps/sandbox-2.2 ) elibc_musl? ( >=sys-apps/sandbox-2.2 ) elibc_uclibc? ( >=sys-apps/sandbox-2.2 ) >=app-misc/pax-utils-0.1.17 selinux? ( >=sys-libs/libselinux-2.0.94[python,python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)] ) xattr? ( kernel_linux? ( >=sys-apps/install-xattr-0.3 python_targets_python2_7? ( dev-python/pyxattr[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) ) ) !<app-portage/gentoolkit-0.3.0.8-r4 !<app-admin/logrotate-3.8.0 !<app-portage/repoman-2.3.10 python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7[bzip2(+),threads(+)] ) python_targets_python3_6? ( dev-lang/python:3.6[bzip2(+),threads(+)] ) python_targets_python3_7? ( dev-lang/python:3.7[bzip2(+),threads(+)] ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,python_targets_python3_7(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-),-python_single_target_python3_7(-)]
 REQUIRED_USE=epydoc? ( python_targets_python2_7 ) || ( python_targets_python2_7 python_targets_python3_6 python_targets_python3_7 )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	distutils-r1	198e3b9ddb55ae36b2a50b07ca2877ef	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=45edffa88ba1177326d8b67291720fe6
diff --git a/metadata/md5-cache/sys-apps/pv-1.1.4-r1 b/metadata/md5-cache/sys-apps/pv-1.1.4-r1
deleted file mode 100644
index a1d660f..0000000
--- a/metadata/md5-cache/sys-apps/pv-1.1.4-r1
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=compile configure install
-DESCRIPTION=Pipe Viewer: a tool for monitoring the progress of data through a pipe
-EAPI=2
-HOMEPAGE=http://www.ivarch.com/programs/pv.shtml
-IUSE=nls
-KEYWORDS=*
-LICENSE=Artistic-2
-SLOT=0
-SRC_URI=mirror://sourceforge/pipeviewer/pv-1.1.4.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=a3bf55faeb5a5833e81e6183f88033fb
diff --git a/metadata/md5-cache/sys-apps/ripgrep-12.1.1 b/metadata/md5-cache/sys-apps/ripgrep-12.1.1
index cfc3605..cf6ecac 100644
--- a/metadata/md5-cache/sys-apps/ripgrep-12.1.1
+++ b/metadata/md5-cache/sys-apps/ripgrep-12.1.1
@@ -9,5 +9,5 @@
 RDEPEND=pcre? ( dev-libs/libpcre2 )
 SLOT=0
 SRC_URI=https://github.com/BurntSushi/ripgrep/archive/12.1.1.tar.gz -> ripgrep-12.1.1.tar.gz https://github.com/BurntSushi/ripgrep/releases/download/12.1.1/ripgrep-12.1.1-x86_64-unknown-linux-musl.tar.gz https://crates.io/api/v1/crates/aho-corasick/0.7.10/download -> aho-corasick-0.7.10.crate https://crates.io/api/v1/crates/atty/0.2.14/download -> atty-0.2.14.crate https://crates.io/api/v1/crates/autocfg/1.0.0/download -> autocfg-1.0.0.crate https://crates.io/api/v1/crates/base64/0.12.1/download -> base64-0.12.1.crate https://crates.io/api/v1/crates/bitflags/1.2.1/download -> bitflags-1.2.1.crate https://crates.io/api/v1/crates/bstr/0.2.13/download -> bstr-0.2.13.crate https://crates.io/api/v1/crates/bytecount/0.6.0/download -> bytecount-0.6.0.crate https://crates.io/api/v1/crates/byteorder/1.3.4/download -> byteorder-1.3.4.crate https://crates.io/api/v1/crates/cc/1.0.54/download -> cc-1.0.54.crate https://crates.io/api/v1/crates/cfg-if/0.1.10/download -> cfg-if-0.1.10.crate https://crates.io/api/v1/crates/clap/2.33.1/download -> clap-2.33.1.crate https://crates.io/api/v1/crates/crossbeam-channel/0.4.2/download -> crossbeam-channel-0.4.2.crate https://crates.io/api/v1/crates/crossbeam-utils/0.7.2/download -> crossbeam-utils-0.7.2.crate https://crates.io/api/v1/crates/encoding_rs/0.8.23/download -> encoding_rs-0.8.23.crate https://crates.io/api/v1/crates/encoding_rs_io/0.1.7/download -> encoding_rs_io-0.1.7.crate https://crates.io/api/v1/crates/fnv/1.0.7/download -> fnv-1.0.7.crate https://crates.io/api/v1/crates/fs_extra/1.1.0/download -> fs_extra-1.1.0.crate https://crates.io/api/v1/crates/glob/0.3.0/download -> glob-0.3.0.crate https://crates.io/api/v1/crates/hermit-abi/0.1.13/download -> hermit-abi-0.1.13.crate https://crates.io/api/v1/crates/itoa/0.4.5/download -> itoa-0.4.5.crate https://crates.io/api/v1/crates/jemallocator/0.3.2/download -> jemallocator-0.3.2.crate https://crates.io/api/v1/crates/jemalloc-sys/0.3.2/download -> jemalloc-sys-0.3.2.crate https://crates.io/api/v1/crates/lazy_static/1.4.0/download -> lazy_static-1.4.0.crate https://crates.io/api/v1/crates/libc/0.2.71/download -> libc-0.2.71.crate https://crates.io/api/v1/crates/log/0.4.8/download -> log-0.4.8.crate https://crates.io/api/v1/crates/maybe-uninit/2.0.0/download -> maybe-uninit-2.0.0.crate https://crates.io/api/v1/crates/memchr/2.3.3/download -> memchr-2.3.3.crate https://crates.io/api/v1/crates/memmap/0.7.0/download -> memmap-0.7.0.crate https://crates.io/api/v1/crates/num_cpus/1.13.0/download -> num_cpus-1.13.0.crate https://crates.io/api/v1/crates/packed_simd/0.3.3/download -> packed_simd-0.3.3.crate https://crates.io/api/v1/crates/pcre2/0.2.3/download -> pcre2-0.2.3.crate https://crates.io/api/v1/crates/pcre2-sys/0.2.2/download -> pcre2-sys-0.2.2.crate https://crates.io/api/v1/crates/pkg-config/0.3.17/download -> pkg-config-0.3.17.crate https://crates.io/api/v1/crates/proc-macro2/1.0.17/download -> proc-macro2-1.0.17.crate https://crates.io/api/v1/crates/quote/1.0.6/download -> quote-1.0.6.crate https://crates.io/api/v1/crates/regex/1.3.9/download -> regex-1.3.9.crate https://crates.io/api/v1/crates/regex-automata/0.1.9/download -> regex-automata-0.1.9.crate https://crates.io/api/v1/crates/regex-syntax/0.6.18/download -> regex-syntax-0.6.18.crate https://crates.io/api/v1/crates/ryu/1.0.4/download -> ryu-1.0.4.crate https://crates.io/api/v1/crates/same-file/1.0.6/download -> same-file-1.0.6.crate https://crates.io/api/v1/crates/serde/1.0.110/download -> serde-1.0.110.crate https://crates.io/api/v1/crates/serde_derive/1.0.110/download -> serde_derive-1.0.110.crate https://crates.io/api/v1/crates/serde_json/1.0.53/download -> serde_json-1.0.53.crate https://crates.io/api/v1/crates/strsim/0.8.0/download -> strsim-0.8.0.crate https://crates.io/api/v1/crates/syn/1.0.27/download -> syn-1.0.27.crate https://crates.io/api/v1/crates/termcolor/1.1.0/download -> termcolor-1.1.0.crate https://crates.io/api/v1/crates/textwrap/0.11.0/download -> textwrap-0.11.0.crate https://crates.io/api/v1/crates/thread_local/1.0.1/download -> thread_local-1.0.1.crate https://crates.io/api/v1/crates/unicode-width/0.1.7/download -> unicode-width-0.1.7.crate https://crates.io/api/v1/crates/unicode-xid/0.2.0/download -> unicode-xid-0.2.0.crate https://crates.io/api/v1/crates/walkdir/2.3.1/download -> walkdir-2.3.1.crate https://crates.io/api/v1/crates/winapi/0.3.8/download -> winapi-0.3.8.crate https://crates.io/api/v1/crates/winapi-i686-pc-windows-gnu/0.4.0/download -> winapi-i686-pc-windows-gnu-0.4.0.crate https://crates.io/api/v1/crates/winapi-util/0.1.5/download -> winapi-util-0.1.5.crate https://crates.io/api/v1/crates/winapi-x86_64-pc-windows-gnu/0.4.0/download -> winapi-x86_64-pc-windows-gnu-0.4.0.crate
-_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	cargo	378185a01fbe9ce3ab1cff0a241ecd00	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	cargo	378185a01fbe9ce3ab1cff0a241ecd00	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=a781eb5557eff0ef7034ba9cbe6cda7b
diff --git a/metadata/md5-cache/sys-apps/rootdev-0.0.1-r38 b/metadata/md5-cache/sys-apps/rootdev-0.0.1-r38
index acb3dbb..9411d8a 100644
--- a/metadata/md5-cache/sys-apps/rootdev-0.0.1-r38
+++ b/metadata/md5-cache/sys-apps/rootdev-0.0.1-r38
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/0.0.1-r38
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=1827beb65bf63b3d07043e147548aef1
diff --git a/metadata/md5-cache/sys-apps/rootdev-9999 b/metadata/md5-cache/sys-apps/rootdev-9999
index 565e4c5..90fe944 100644
--- a/metadata/md5-cache/sys-apps/rootdev-9999
+++ b/metadata/md5-cache/sys-apps/rootdev-9999
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=78b665735a7c322c64bc6492fa0499bb
diff --git a/metadata/md5-cache/sys-apps/sandbox-2.11-r6 b/metadata/md5-cache/sys-apps/sandbox-2.11-r6
deleted file mode 100644
index d77217d..0000000
--- a/metadata/md5-cache/sys-apps/sandbox-2.11-r6
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure install postinst preinst prepare test
-DEPEND=app-arch/xz-utils >=app-misc/pax-utils-0.1.19 >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=sandbox'd LD_PRELOAD hack
-EAPI=5
-HOMEPAGE=https://www.gentoo.org/proj/en/portage/sandbox/
-IUSE=abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=GPL-2
-SLOT=0
-SRC_URI=mirror://gentoo/sandbox-2.11.tar.xz https://dev.gentoo.org/~vapier/dist/sandbox-2.11.tar.xz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=cd12c82443c54dfd86368d1341f68a04
diff --git a/metadata/md5-cache/sys-apps/sandbox-2.11-r9 b/metadata/md5-cache/sys-apps/sandbox-2.11-r9
new file mode 100644
index 0000000..7778844
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/sandbox-2.11-r9
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare test
+DEPEND=app-arch/xz-utils >=app-misc/pax-utils-0.1.19 >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=sandbox'd LD_PRELOAD hack
+EAPI=5
+HOMEPAGE=https://www.gentoo.org/proj/en/portage/sandbox/
+IUSE=abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=GPL-2
+SLOT=0
+SRC_URI=mirror://gentoo/sandbox-2.11.tar.xz https://dev.gentoo.org/~vapier/dist/sandbox-2.11.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=223746f27e3f8168dc97b6a122a1b648
diff --git a/metadata/md5-cache/sys-apps/sis-updater-0.0.1-r26 b/metadata/md5-cache/sys-apps/sis-updater-0.0.1-r26
deleted file mode 100644
index 03ef6ac..0000000
--- a/metadata/md5-cache/sys-apps/sis-updater-0.0.1-r26
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git virtual/pkgconfig
-DEFINED_PHASES=compile configure info install preinst prepare setup test unpack
-DEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
-DESCRIPTION=A tool to update SiS firmware on Mimo from Chromium OS.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/sis-updater
-IUSE=cros_host cros_workon_tree_aa5c80eca011d83e5c8532f991e61d6211be68e6 cros-debug
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
-SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
-_md5_=1637ad7a2e4d496300f6b2d335dffbd3
diff --git a/metadata/md5-cache/sys-apps/sis-updater-0.0.1-r27 b/metadata/md5-cache/sys-apps/sis-updater-0.0.1-r27
new file mode 100644
index 0000000..a014cd1
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/sis-updater-0.0.1-r27
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=compile configure info install preinst prepare setup test unpack
+DEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
+DESCRIPTION=A tool to update SiS firmware on Mimo from Chromium OS.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/third_party/sis-updater
+IUSE=cros_host cros_workon_tree_5da4d25450bac2866073b62de2673b44f4811c4f cros-debug
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
+SLOT=0
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_md5_=23261aed22d3faa1e03f1f088863d5c3
diff --git a/metadata/md5-cache/sys-apps/sis-updater-9999 b/metadata/md5-cache/sys-apps/sis-updater-9999
index 4ea4ba6..d16a765 100644
--- a/metadata/md5-cache/sys-apps/sis-updater-9999
+++ b/metadata/md5-cache/sys-apps/sis-updater-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=chromeos-base/libbrillo:= >=chromeos-base/libchrome-0.0.1-r117:0=[cros-debug=] sys-apps/baselayout
 SLOT=0
-_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
+_eclasses_=cros-common.mk	0d2a9d7d20c4d4ab08fc94b6ca128a88	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libchrome	b0adbfd1a2eae79766f7256eaad1da23	libchrome-version	f89118941e7f3c3825d2fe216c977c57	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621
 _md5_=1dcdf7e997f2d1a4ff8413a75696c5ea
diff --git a/metadata/md5-cache/sys-apps/superiotool-0.0.1-r2938 b/metadata/md5-cache/sys-apps/superiotool-0.0.1-r2938
deleted file mode 100644
index 5f4e0b5..0000000
--- a/metadata/md5-cache/sys-apps/superiotool-0.0.1-r2938
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=sys-apps/pciutils
-DESCRIPTION=Superiotool allows you to detect which Super I/O you have on your mainboard, and it can provide detailed information about the register contents of the Super I/O.
-EAPI=4
-HOMEPAGE=http://www.coreboot.org/Superiotool
-IUSE=cros_host cros_workon_tree_2e32d2a5a79f8e88be91b44b40a65211c6ea4dae
-KEYWORDS=amd64 x86
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=sys-apps/pciutils
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=07f8991b5539d8f8802dad9831188f83
diff --git a/metadata/md5-cache/sys-apps/superiotool-9999 b/metadata/md5-cache/sys-apps/superiotool-9999
deleted file mode 100644
index d2e9f87..0000000
--- a/metadata/md5-cache/sys-apps/superiotool-9999
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=sys-apps/pciutils
-DESCRIPTION=Superiotool allows you to detect which Super I/O you have on your mainboard, and it can provide detailed information about the register contents of the Super I/O.
-EAPI=4
-HOMEPAGE=http://www.coreboot.org/Superiotool
-IUSE=cros_host cros_workon_tree_
-KEYWORDS=~amd64 ~x86
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=sys-apps/pciutils
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=32163a6f60ebe9b2ef0bd3e03cba9be3
diff --git a/metadata/md5-cache/sys-apps/systemd-tmpfiles-247-r2 b/metadata/md5-cache/sys-apps/systemd-tmpfiles-247-r2
new file mode 100644
index 0000000..3beb5ff
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/systemd-tmpfiles-247-r2
@@ -0,0 +1,16 @@
+BDEPEND=app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.5 app-text/docbook-xsl-stylesheets dev-libs/libxslt:0 >=dev-util/meson-0.46 >=dev-util/intltool-0.50 >=sys-apps/coreutils-8.16 sys-devel/m4 virtual/pkgconfig test? ( || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
+DEPEND=sys-apps/acl:0= >=sys-apps/util-linux-2.30:0= >=sys-kernel/linux-headers-3.11 sys-libs/libcap:0= selinux? ( sys-libs/libselinux:0= )
+DESCRIPTION=Creates, deletes and cleans up volatile and temporary files and directories
+EAPI=7
+HOMEPAGE=https://www.freedesktop.org/wiki/Software/systemd
+IUSE=selinux test cros_host cros_workon_tree_83bd8f9f33dcbdab56dd52d44086e72c63b85e7b
+KEYWORDS=*
+LICENSE=BSD-2 GPL-2 LGPL-2.1 MIT public-domain
+PROPERTIES=live
+RDEPEND=sys-apps/acl:0= >=sys-apps/util-linux-2.30:0= >=sys-kernel/linux-headers-3.11 sys-libs/libcap:0= selinux? ( sys-libs/libselinux:0= ) !sys-apps/opentmpfiles !sys-apps/systemd
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=elibc_musl? ( https://dev.gentoo.org/~gyakovlev/distfiles/systemd-tmpfiles-247-musl.tar.xz )
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=bab8a9a3e28ebb604336e0edcc5074ce
diff --git a/metadata/md5-cache/sys-apps/systemd-tmpfiles-9999 b/metadata/md5-cache/sys-apps/systemd-tmpfiles-9999
new file mode 100644
index 0000000..89e4070
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/systemd-tmpfiles-9999
@@ -0,0 +1,16 @@
+BDEPEND=app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.5 app-text/docbook-xsl-stylesheets dev-libs/libxslt:0 >=dev-util/meson-0.46 >=dev-util/intltool-0.50 >=sys-apps/coreutils-8.16 sys-devel/m4 virtual/pkgconfig test? ( || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install postinst prepare setup test unpack
+DEPEND=sys-apps/acl:0= >=sys-apps/util-linux-2.30:0= >=sys-kernel/linux-headers-3.11 sys-libs/libcap:0= selinux? ( sys-libs/libselinux:0= )
+DESCRIPTION=Creates, deletes and cleans up volatile and temporary files and directories
+EAPI=7
+HOMEPAGE=https://www.freedesktop.org/wiki/Software/systemd
+IUSE=selinux test cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=BSD-2 GPL-2 LGPL-2.1 MIT public-domain
+PROPERTIES=live
+RDEPEND=sys-apps/acl:0= >=sys-apps/util-linux-2.30:0= >=sys-kernel/linux-headers-3.11 sys-libs/libcap:0= selinux? ( sys-libs/libselinux:0= ) !sys-apps/opentmpfiles !sys-apps/systemd
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=elibc_musl? ( https://dev.gentoo.org/~gyakovlev/distfiles/systemd-tmpfiles-9999-musl.tar.xz )
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c322fe64586dd4f2743a4a002a4b4176
diff --git a/metadata/md5-cache/sys-apps/upstart-1.2-r42 b/metadata/md5-cache/sys-apps/upstart-1.2-r42
deleted file mode 100644
index bd8810e..0000000
--- a/metadata/md5-cache/sys-apps/upstart-1.2-r42
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git >=app-portage/elt-patches-20170815
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=>=dev-libs/expat-2.0.0 nls? ( sys-devel/gettext ) direncryption? ( sys-fs/e2fsprogs ) >=sys-apps/dbus-1.2.16 >=sys-libs/libnih-1.0.2 selinux? ( sys-libs/libselinux sys-libs/libsepol ) udev_bridge? ( >=virtual/libudev-146 ) direncryption? ( sys-apps/keyutils ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=An event-based replacement for the init daemon
-EAPI=7
-HOMEPAGE=http://upstart.ubuntu.com/
-IUSE=debug direncryption examples nls selinux udev_bridge cros_host cros_workon_tree_d69eb10c4a65ca386a5bbb961dfe31b246b5fb91
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=>=sys-apps/dbus-1.2.16 >=sys-libs/libnih-1.0.2 selinux? ( sys-libs/libselinux sys-libs/libsepol ) udev_bridge? ( >=virtual/libudev-146 ) direncryption? ( sys-apps/keyutils ) selinux? ( chromeos-base/selinux-policy )
-SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8fcd3cee3b5915fc40191bc91055efb6
diff --git a/metadata/md5-cache/sys-apps/upstart-1.2-r43 b/metadata/md5-cache/sys-apps/upstart-1.2-r43
new file mode 100644
index 0000000..c35d7c0
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/upstart-1.2-r43
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git >=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=>=dev-libs/expat-2.0.0 nls? ( sys-devel/gettext ) direncryption? ( sys-fs/e2fsprogs ) >=sys-apps/dbus-1.2.16 >=sys-libs/libnih-1.0.2 selinux? ( sys-libs/libselinux sys-libs/libsepol ) udev_bridge? ( >=virtual/libudev-146 ) direncryption? ( sys-apps/keyutils ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=An event-based replacement for the init daemon
+EAPI=7
+HOMEPAGE=http://upstart.ubuntu.com/
+IUSE=debug direncryption examples nls selinux udev_bridge cros_host cros_workon_tree_d69eb10c4a65ca386a5bbb961dfe31b246b5fb91
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=>=sys-apps/dbus-1.2.16 >=sys-libs/libnih-1.0.2 selinux? ( sys-libs/libselinux sys-libs/libsepol ) udev_bridge? ( >=virtual/libudev-146 ) direncryption? ( sys-apps/keyutils ) selinux? ( chromeos-base/selinux-policy )
+SLOT=0
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3d7efc289bd7a3fe85a3722d8824af62
diff --git a/metadata/md5-cache/sys-apps/upstart-9999 b/metadata/md5-cache/sys-apps/upstart-9999
index 8babf9e..b63b3fe 100644
--- a/metadata/md5-cache/sys-apps/upstart-9999
+++ b/metadata/md5-cache/sys-apps/upstart-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=>=sys-apps/dbus-1.2.16 >=sys-libs/libnih-1.0.2 selinux? ( sys-libs/libselinux sys-libs/libsepol ) udev_bridge? ( >=virtual/libudev-146 ) direncryption? ( sys-apps/keyutils ) selinux? ( chromeos-base/selinux-policy )
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=9d2b5cfebf1f94afa626b649a77fc1ac
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f5f5eedaa933a581df143d2853ce35c6
diff --git a/metadata/md5-cache/sys-apps/ureadahead-0.100.0 b/metadata/md5-cache/sys-apps/ureadahead-0.100.0
index 28557b0..a7faaf6 100644
--- a/metadata/md5-cache/sys-apps/ureadahead-0.100.0
+++ b/metadata/md5-cache/sys-apps/ureadahead-0.100.0
@@ -3,9 +3,12 @@
 DESCRIPTION=Ureadahead - Read files in advance during boot
 EAPI=6
 HOMEPAGE=https://launchpad.net/ureadahead
+IUSE=arcvm arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=*
 LICENSE=GPL-2
 RDEPEND=sys-apps/util-linux >=sys-fs/e2fsprogs-1.41 sys-libs/libnih
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
 SRC_URI=https://launchpad.net/ureadahead/trunk/0.100.0/+download/ureadahead-0.100.0.tar.gz
-_md5_=0504bac25ee8c1bb9cccf65b9dab9f4f
+_eclasses_=arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f
+_md5_=3b4dfb2ea3fb4d195df150373772e548
diff --git a/metadata/md5-cache/sys-apps/ureadahead-0.100.0-r12 b/metadata/md5-cache/sys-apps/ureadahead-0.100.0-r12
deleted file mode 100644
index 28557b0..0000000
--- a/metadata/md5-cache/sys-apps/ureadahead-0.100.0-r12
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=configure install
-DEPEND=sys-apps/util-linux >=sys-fs/e2fsprogs-1.41 sys-libs/libnih dev-util/pkgconfig sys-devel/gettext
-DESCRIPTION=Ureadahead - Read files in advance during boot
-EAPI=6
-HOMEPAGE=https://launchpad.net/ureadahead
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=sys-apps/util-linux >=sys-fs/e2fsprogs-1.41 sys-libs/libnih
-SLOT=0
-SRC_URI=https://launchpad.net/ureadahead/trunk/0.100.0/+download/ureadahead-0.100.0.tar.gz
-_md5_=0504bac25ee8c1bb9cccf65b9dab9f4f
diff --git a/metadata/md5-cache/sys-apps/ureadahead-0.100.0-r17 b/metadata/md5-cache/sys-apps/ureadahead-0.100.0-r17
new file mode 100644
index 0000000..a7faaf6
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/ureadahead-0.100.0-r17
@@ -0,0 +1,14 @@
+DEFINED_PHASES=configure install
+DEPEND=sys-apps/util-linux >=sys-fs/e2fsprogs-1.41 sys-libs/libnih dev-util/pkgconfig sys-devel/gettext
+DESCRIPTION=Ureadahead - Read files in advance during boot
+EAPI=6
+HOMEPAGE=https://launchpad.net/ureadahead
+IUSE=arcvm arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=sys-apps/util-linux >=sys-fs/e2fsprogs-1.41 sys-libs/libnih
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+SRC_URI=https://launchpad.net/ureadahead/trunk/0.100.0/+download/ureadahead-0.100.0.tar.gz
+_eclasses_=arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f
+_md5_=3b4dfb2ea3fb4d195df150373772e548
diff --git a/metadata/md5-cache/sys-apps/usbguard-20190808-r8 b/metadata/md5-cache/sys-apps/usbguard-20190808-r10
similarity index 100%
rename from metadata/md5-cache/sys-apps/usbguard-20190808-r8
rename to metadata/md5-cache/sys-apps/usbguard-20190808-r10
diff --git a/metadata/md5-cache/sys-apps/usbutils-007 b/metadata/md5-cache/sys-apps/usbutils-007
deleted file mode 100644
index 55800d0..0000000
--- a/metadata/md5-cache/sys-apps/usbutils-007
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup unpack
-DEPEND=virtual/libusb:1= zlib? ( sys-libs/zlib:= ) app-arch/xz-utils virtual/pkgconfig
-DESCRIPTION=USB enumeration utilities
-EAPI=5
-HOMEPAGE=http://linux-usb.sourceforge.net/
-IUSE=python zlib +python_single_target_python2_7
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=virtual/libusb:1= zlib? ( sys-libs/zlib:= ) sys-apps/hwids python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) )
-REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 ) )
-SLOT=0
-SRC_URI=mirror://kernel/linux/utils/usb/usbutils/usbutils-007.tar.xz
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0ec76028a95273a94ddf7dfaa7dbfd9b
diff --git a/metadata/md5-cache/sys-apps/usbutils-007-r4 b/metadata/md5-cache/sys-apps/usbutils-007-r4
deleted file mode 100644
index 55800d0..0000000
--- a/metadata/md5-cache/sys-apps/usbutils-007-r4
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup unpack
-DEPEND=virtual/libusb:1= zlib? ( sys-libs/zlib:= ) app-arch/xz-utils virtual/pkgconfig
-DESCRIPTION=USB enumeration utilities
-EAPI=5
-HOMEPAGE=http://linux-usb.sourceforge.net/
-IUSE=python zlib +python_single_target_python2_7
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=virtual/libusb:1= zlib? ( sys-libs/zlib:= ) sys-apps/hwids python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) )
-REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 ) )
-SLOT=0
-SRC_URI=mirror://kernel/linux/utils/usb/usbutils/usbutils-007.tar.xz
-_eclasses_=base	ec46b36a6f6fd1d0b505a33e0b74e413	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0ec76028a95273a94ddf7dfaa7dbfd9b
diff --git a/metadata/md5-cache/sys-apps/util-linux-2.32-r7 b/metadata/md5-cache/sys-apps/util-linux-2.32-r7
deleted file mode 100644
index acc59e0..0000000
--- a/metadata/md5-cache/sys-apps/util-linux-2.32-r7
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=virtual/pkgconfig nls? ( sys-devel/gettext ) test? ( sys-devel/bc ) >=app-portage/elt-patches-20170815 virtual/pkgconfig
-DEFINED_PHASES=compile configure install postinst prepare setup test
-DEPEND=caps? ( sys-libs/libcap-ng ) cramfs? ( sys-libs/zlib:= ) ncurses? ( >=sys-libs/ncurses-5.2-r2:0=[unicode?] ) nls? ( virtual/libintl[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) pam? ( sys-libs/pam ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) ) readline? ( sys-libs/readline:0= ) selinux? ( >=sys-libs/libselinux-2.2.2-r4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) slang? ( sys-libs/slang ) !build? ( systemd? ( sys-apps/systemd ) ) udev? ( virtual/libudev:= ) virtual/os-headers
-DESCRIPTION=Various useful Linux utilities
-EAPI=7
-HOMEPAGE=https://www.kernel.org/pub/linux/utils/util-linux/ https://github.com/karelzak/util-linux
-IUSE=build caps +cramfs fdformat kill ncurses nls pam python +readline selinux slang static-libs +suid systemd test tty-helpers udev unicode userland_GNU kernel-3_8 kernel-3_10 kernel-3_14 kernel-3_18 cros_host python_single_target_python2_7 python_single_target_python3_6 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=GPL-2 LGPL-2.1 BSD-4 MIT public-domain
-RDEPEND=caps? ( sys-libs/libcap-ng ) cramfs? ( sys-libs/zlib:= ) ncurses? ( >=sys-libs/ncurses-5.2-r2:0=[unicode?] ) nls? ( virtual/libintl[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) pam? ( sys-libs/pam ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) ) readline? ( sys-libs/readline:0= ) selinux? ( >=sys-libs/libselinux-2.2.2-r4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) slang? ( sys-libs/slang ) !build? ( systemd? ( sys-apps/systemd ) ) udev? ( virtual/libudev:= ) kill? ( !sys-apps/coreutils[kill] !sys-process/procps[kill] ) !net-wireless/rfkill !sys-process/schedutils !sys-apps/setarch !<sys-apps/sysvinit-2.88-r7 !<sys-libs/e2fsprogs-libs-1.41.8 !<sys-fs/e2fsprogs-1.41.8 !<app-shells/bash-completion-2.7-r1
-REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 python_single_target_python3_6 ) )
-SLOT=0
-SRC_URI=mirror://kernel/linux/utils/util-linux/v2.32/util-linux-2.32.tar.xz
-_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	pam	3f746974e1cc47cabe3bd488c08cdc8e	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=24066b346135e7b070df2daea84acfc4
diff --git a/metadata/md5-cache/sys-apps/util-linux-2.36.2-r1 b/metadata/md5-cache/sys-apps/util-linux-2.36.2-r1
new file mode 100644
index 0000000..4798130
--- /dev/null
+++ b/metadata/md5-cache/sys-apps/util-linux-2.36.2-r1
@@ -0,0 +1,16 @@
+BDEPEND=virtual/pkgconfig nls? ( sys-devel/gettext ) test? ( sys-devel/bc ) >=app-portage/elt-patches-20170815 virtual/pkgconfig
+DEFINED_PHASES=compile configure install postinst prepare test
+DEPEND=virtual/libcrypt:= audit? ( >=sys-process/audit-2.6:= ) caps? ( sys-libs/libcap-ng ) cramfs? ( sys-libs/zlib:= ) cryptsetup? ( sys-fs/cryptsetup ) hardlink? ( dev-libs/libpcre2:= ) ncurses? ( >=sys-libs/ncurses-5.2-r2:0=[unicode?] magic? ( sys-apps/file:0= ) ) nls? ( virtual/libintl[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) pam? ( sys-libs/pam ) ppc? ( sys-libs/librtas ) ppc64? ( sys-libs/librtas ) python? ( python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] ) readline? ( sys-libs/readline:0= ) selinux? ( >=sys-libs/libselinux-2.2.2-r4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) slang? ( sys-libs/slang ) !build? ( systemd? ( sys-apps/systemd ) ) udev? ( virtual/libudev:= ) virtual/os-headers
+DESCRIPTION=Various useful Linux utilities
+EAPI=7
+HOMEPAGE=https://www.kernel.org/pub/linux/utils/util-linux/ https://github.com/karelzak/util-linux
+IUSE=audit build caps +cramfs cryptsetup fdformat hardlink kill +logger magic ncurses nls pam python +readline selinux slang static-libs su +suid systemd test tty-helpers udev unicode userland_GNU split-usr python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=GPL-2 GPL-3 LGPL-2.1 BSD-4 MIT public-domain
+RDEPEND=virtual/libcrypt:= audit? ( >=sys-process/audit-2.6:= ) caps? ( sys-libs/libcap-ng ) cramfs? ( sys-libs/zlib:= ) cryptsetup? ( sys-fs/cryptsetup ) hardlink? ( dev-libs/libpcre2:= ) ncurses? ( >=sys-libs/ncurses-5.2-r2:0=[unicode?] magic? ( sys-apps/file:0= ) ) nls? ( virtual/libintl[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) pam? ( sys-libs/pam ) ppc? ( sys-libs/librtas ) ppc64? ( sys-libs/librtas ) python? ( python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] ) readline? ( sys-libs/readline:0= ) selinux? ( >=sys-libs/libselinux-2.2.2-r4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) slang? ( sys-libs/slang ) !build? ( systemd? ( sys-apps/systemd ) ) udev? ( virtual/libudev:= ) hardlink? ( !app-arch/hardlink ) logger? ( !>=app-admin/sysklogd-2.0[logger] ) kill? ( !sys-apps/coreutils[kill] !sys-process/procps[kill] ) su? ( !<sys-apps/shadow-4.7-r2 !>=sys-apps/shadow-4.7-r2[su] ) !net-wireless/rfkill !<app-shells/bash-completion-2.7-r1
+REQUIRED_USE=python? ( || ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 ) )
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://www.kernel.org/pub/linux/utils/util-linux/v2.36/util-linux-2.36.2.tar.xz
+_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	pam	3f746974e1cc47cabe3bd488c08cdc8e	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	usr-ldscript	766f0a506b45f02361ad1b8ca205b7e1
+_md5_=7ebeb703c715f23e3c9d63e6fe7036ab
diff --git a/metadata/md5-cache/sys-block/parted-3.1-r3 b/metadata/md5-cache/sys-block/parted-3.1-r3
deleted file mode 100644
index a1c479b..0000000
--- a/metadata/md5-cache/sys-block/parted-3.1-r3
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure install prepare test
-DEPEND=>=sys-fs/e2fsprogs-1.27 >=sys-libs/ncurses-5.2 nls? ( >=sys-devel/gettext-0.12.1-r2 ) readline? ( >=sys-libs/readline-5.2 ) selinux? ( sys-libs/libselinux ) device-mapper? ( || ( >=sys-fs/lvm2-2.02.45 sys-fs/device-mapper ) ) dev-util/pkgconfig test? ( >=dev-libs/check-0.9.3 ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 =sys-devel/automake-1.11* >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Create, destroy, resize, check, copy partitions and file systems
-EAPI=3
-HOMEPAGE=http://www.gnu.org/software/parted
-IUSE=+debug device-mapper nls readline selinux static-libs test
-KEYWORDS=*
-LICENSE=GPL-3
-RDEPEND=>=sys-fs/e2fsprogs-1.27 >=sys-libs/ncurses-5.2 nls? ( >=sys-devel/gettext-0.12.1-r2 ) readline? ( >=sys-libs/readline-5.2 ) selinux? ( sys-libs/libselinux ) device-mapper? ( || ( >=sys-fs/lvm2-2.02.45 sys-fs/device-mapper ) )
-SLOT=0
-SRC_URI=mirror://gnu/parted/parted-3.1.tar.xz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=4825fd831cbdcfd3bbfb41ba7f005227
diff --git a/metadata/md5-cache/sys-block/parted-3.1-r4 b/metadata/md5-cache/sys-block/parted-3.1-r4
new file mode 100644
index 0000000..8957cad
--- /dev/null
+++ b/metadata/md5-cache/sys-block/parted-3.1-r4
@@ -0,0 +1,14 @@
+BDEPEND=>=app-portage/elt-patches-20170815
+DEFINED_PHASES=configure install prepare test
+DEPEND=>=sys-fs/e2fsprogs-1.27 >=sys-libs/ncurses-5.2 nls? ( >=sys-devel/gettext-0.12.1-r2 ) readline? ( >=sys-libs/readline-5.2 ) selinux? ( sys-libs/libselinux ) device-mapper? ( || ( >=sys-fs/lvm2-2.02.45 sys-fs/device-mapper ) ) dev-util/pkgconfig test? ( >=dev-libs/check-0.9.3 ) !<sys-devel/gettext-0.18.1.1-r3 =sys-devel/automake-1.11* >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Create, destroy, resize, check, copy partitions and file systems
+EAPI=7
+HOMEPAGE=http://www.gnu.org/software/parted
+IUSE=+debug device-mapper nls readline selinux static-libs test
+KEYWORDS=*
+LICENSE=GPL-3
+RDEPEND=>=sys-fs/e2fsprogs-1.27 >=sys-libs/ncurses-5.2 nls? ( >=sys-devel/gettext-0.12.1-r2 ) readline? ( >=sys-libs/readline-5.2 ) selinux? ( sys-libs/libselinux ) device-mapper? ( || ( >=sys-fs/lvm2-2.02.45 sys-fs/device-mapper ) )
+SLOT=0
+SRC_URI=mirror://gnu/parted/parted-3.1.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=76c2a2f3b39fcb4bdbb1154d89c7020c
diff --git a/metadata/md5-cache/sys-boot/bootstub-1.0-r15 b/metadata/md5-cache/sys-boot/bootstub-1.0-r15
index f04c595..3803bb0 100644
--- a/metadata/md5-cache/sys-boot/bootstub-1.0-r15
+++ b/metadata/md5-cache/sys-boot/bootstub-1.0-r15
@@ -8,5 +8,5 @@
 LICENSE=GPL-3
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=3b24f31d667c430714c3f56cb008e88a
diff --git a/metadata/md5-cache/sys-boot/bootstub-9999 b/metadata/md5-cache/sys-boot/bootstub-9999
index a56ccac..55ef4e0 100644
--- a/metadata/md5-cache/sys-boot/bootstub-9999
+++ b/metadata/md5-cache/sys-boot/bootstub-9999
@@ -8,5 +8,5 @@
 LICENSE=GPL-3
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=09210bfe93e58855a6b5033a72533c54
diff --git a/metadata/md5-cache/sys-boot/chromeos-bmpblk-1.0.1-r264 b/metadata/md5-cache/sys-boot/chromeos-bmpblk-1.0.1-r264
deleted file mode 100644
index f3de039..0000000
--- a/metadata/md5-cache/sys-boot/chromeos-bmpblk-1.0.1-r264
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=|| ( dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) dev-vcs/git
-DEFINED_PHASES=compile info install prepare setup unpack
-DEPEND=virtual/chromeos-vendor-strings
-DESCRIPTION=Chrome OS Firmware Bitmap Block
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/bmpblk/
-IUSE=detachable diag_payload +minidiag physical_presence_power physical_presence_recovery cros_host cros_workon_tree_25682679eeff95571ad86628e48a10348e7ba650 board_use_ambassador board_use_asurada board_use_atlas board_use_auron_paine board_use_auron_yuna board_use_banjo board_use_brya board_use_buddy board_use_butterfly board_use_candy board_use_chell board_use_cid board_use_clapper board_use_cranky board_use_daisy board_use_daisy_snow board_use_daisy_spring board_use_daisy_skate board_use_dedede board_use_deltaur board_use_dragonegg board_use_drallion board_use_endeavour board_use_enguarde board_use_expresso board_use_eve board_use_falco board_use_fizz board_use_flapjack board_use_glados board_use_glimmer board_use_gnawty board_use_grunt board_use_guado board_use_hatch board_use_jacuzzi board_use_kalista board_use_kevin board_use_kip board_use_kukui board_use_lars board_use_leon board_use_link board_use_lulu board_use_lumpy board_use_mccloud board_use_meowth board_use_monroe board_use_mushu board_use_nami board_use_nautilus board_use_ninja board_use_nocturne board_use_nyan board_use_nyan_big board_use_octopus board_use_orco board_use_palkia board_use_panther board_use_parrot board_use_peach_pi board_use_peach_pit board_use_peppy board_use_poppy board_use_puff board_use_quawks board_use_rammus board_use_reks board_use_rikku board_use_sarien board_use_scarlet board_use_soraka board_use_squawks board_use_stout board_use_strongbad board_use_stumpy board_use_sumo board_use_swanky board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_veyron_brain board_use_veyron_danger board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_minnie board_use_veyron_pinky board_use_veyron_romy board_use_volteer board_use_winky board_use_wolf board_use_zako board_use_zoombini board_use_zork cros_host unibuild
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/1.0.1-r264
-_eclasses_=cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=eb6951cb2094e945d9de3a4211c580a7
diff --git a/metadata/md5-cache/sys-boot/chromeos-bmpblk-1.0.1-r301 b/metadata/md5-cache/sys-boot/chromeos-bmpblk-1.0.1-r301
new file mode 100644
index 0000000..e2460e5
--- /dev/null
+++ b/metadata/md5-cache/sys-boot/chromeos-bmpblk-1.0.1-r301
@@ -0,0 +1,12 @@
+BDEPEND=|| ( dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) dev-vcs/git
+DEFINED_PHASES=compile info install prepare setup unpack
+DESCRIPTION=Chrome OS Firmware Bitmap Block
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/bmpblk/
+IUSE=detachable diag_payload +minidiag physical_presence_power physical_presence_recovery cros_host cros_workon_tree_adc125e63a2cf7b47603a336a8390afa9374aede board_use_ambassador board_use_asurada board_use_atlas board_use_auron_paine board_use_auron_yuna board_use_banjo board_use_brya board_use_buddy board_use_butterfly board_use_candy board_use_chell board_use_cherry board_use_cid board_use_clapper board_use_cranky board_use_daisy board_use_daisy_snow board_use_daisy_spring board_use_daisy_skate board_use_dedede board_use_deltaur board_use_dragonegg board_use_drallion board_use_endeavour board_use_enguarde board_use_expresso board_use_eve board_use_falco board_use_fizz board_use_flapjack board_use_glados board_use_glimmer board_use_gnawty board_use_grunt board_use_guado board_use_hatch board_use_jacuzzi board_use_kalista board_use_keeby board_use_kevin board_use_kip board_use_kukui board_use_lars board_use_leon board_use_link board_use_lulu board_use_lumpy board_use_mccloud board_use_meowth board_use_monroe board_use_mushu board_use_nami board_use_nautilus board_use_ninja board_use_nocturne board_use_nyan board_use_nyan_big board_use_octopus board_use_orco board_use_palkia board_use_panther board_use_parrot board_use_peach_pi board_use_peach_pit board_use_peppy board_use_poppy board_use_puff board_use_quawks board_use_rammus board_use_reks board_use_rikku board_use_sarien board_use_scarlet board_use_soraka board_use_squawks board_use_stout board_use_strongbad board_use_stumpy board_use_sumo board_use_swanky board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_veyron_brain board_use_veyron_danger board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_minnie board_use_veyron_pinky board_use_veyron_romy board_use_volteer board_use_winky board_use_wolf board_use_zako board_use_zoombini board_use_zork cros_host unibuild
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/1.0.1-r301
+_eclasses_=cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4ad95ec054c61444bf127513f86d0183
diff --git a/metadata/md5-cache/sys-boot/chromeos-bmpblk-9999 b/metadata/md5-cache/sys-boot/chromeos-bmpblk-9999
index 1dc2baa..6126609 100644
--- a/metadata/md5-cache/sys-boot/chromeos-bmpblk-9999
+++ b/metadata/md5-cache/sys-boot/chromeos-bmpblk-9999
@@ -1,13 +1,12 @@
 BDEPEND=|| ( dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) dev-vcs/git
 DEFINED_PHASES=compile info install prepare setup unpack
-DEPEND=virtual/chromeos-vendor-strings
 DESCRIPTION=Chrome OS Firmware Bitmap Block
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/bmpblk/
-IUSE=detachable diag_payload +minidiag physical_presence_power physical_presence_recovery cros_host cros_workon_tree_ board_use_ambassador board_use_asurada board_use_atlas board_use_auron_paine board_use_auron_yuna board_use_banjo board_use_brya board_use_buddy board_use_butterfly board_use_candy board_use_chell board_use_cid board_use_clapper board_use_cranky board_use_daisy board_use_daisy_snow board_use_daisy_spring board_use_daisy_skate board_use_dedede board_use_deltaur board_use_dragonegg board_use_drallion board_use_endeavour board_use_enguarde board_use_expresso board_use_eve board_use_falco board_use_fizz board_use_flapjack board_use_glados board_use_glimmer board_use_gnawty board_use_grunt board_use_guado board_use_hatch board_use_jacuzzi board_use_kalista board_use_kevin board_use_kip board_use_kukui board_use_lars board_use_leon board_use_link board_use_lulu board_use_lumpy board_use_mccloud board_use_meowth board_use_monroe board_use_mushu board_use_nami board_use_nautilus board_use_ninja board_use_nocturne board_use_nyan board_use_nyan_big board_use_octopus board_use_orco board_use_palkia board_use_panther board_use_parrot board_use_peach_pi board_use_peach_pit board_use_peppy board_use_poppy board_use_puff board_use_quawks board_use_rammus board_use_reks board_use_rikku board_use_sarien board_use_scarlet board_use_soraka board_use_squawks board_use_stout board_use_strongbad board_use_stumpy board_use_sumo board_use_swanky board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_veyron_brain board_use_veyron_danger board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_minnie board_use_veyron_pinky board_use_veyron_romy board_use_volteer board_use_winky board_use_wolf board_use_zako board_use_zoombini board_use_zork cros_host unibuild
+IUSE=detachable diag_payload +minidiag physical_presence_power physical_presence_recovery cros_host cros_workon_tree_ board_use_ambassador board_use_asurada board_use_atlas board_use_auron_paine board_use_auron_yuna board_use_banjo board_use_brya board_use_buddy board_use_butterfly board_use_candy board_use_chell board_use_cherry board_use_cid board_use_clapper board_use_cranky board_use_daisy board_use_daisy_snow board_use_daisy_spring board_use_daisy_skate board_use_dedede board_use_deltaur board_use_dragonegg board_use_drallion board_use_endeavour board_use_enguarde board_use_expresso board_use_eve board_use_falco board_use_fizz board_use_flapjack board_use_glados board_use_glimmer board_use_gnawty board_use_grunt board_use_guado board_use_hatch board_use_jacuzzi board_use_kalista board_use_keeby board_use_kevin board_use_kip board_use_kukui board_use_lars board_use_leon board_use_link board_use_lulu board_use_lumpy board_use_mccloud board_use_meowth board_use_monroe board_use_mushu board_use_nami board_use_nautilus board_use_ninja board_use_nocturne board_use_nyan board_use_nyan_big board_use_octopus board_use_orco board_use_palkia board_use_panther board_use_parrot board_use_peach_pi board_use_peach_pit board_use_peppy board_use_poppy board_use_puff board_use_quawks board_use_rammus board_use_reks board_use_rikku board_use_sarien board_use_scarlet board_use_soraka board_use_squawks board_use_stout board_use_strongbad board_use_stumpy board_use_sumo board_use_swanky board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_veyron_brain board_use_veyron_danger board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_minnie board_use_veyron_pinky board_use_veyron_romy board_use_volteer board_use_winky board_use_wolf board_use_zako board_use_zoombini board_use_zork cros_host unibuild
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6957d2fd3315a09639b77c90c966166c
+_eclasses_=cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3421f0328291e35601e7073a17b1033a
diff --git a/metadata/md5-cache/sys-boot/chromeos-bootimage-0.0.3 b/metadata/md5-cache/sys-boot/chromeos-bootimage-0.0.3
deleted file mode 100644
index ff4267e..0000000
--- a/metadata/md5-cache/sys-boot/chromeos-bootimage-0.0.3
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=chromeos-base/vboot_reference
-DEFINED_PHASES=compile install
-DEPEND=sys-boot/coreboot depthcharge? ( sys-boot/depthcharge:= ) bmpblk? ( sys-boot/chromeos-bmpblk:= ) tianocore? ( sys-boot/edk2:= ) seabios? ( sys-boot/chromeos-seabios:= ) unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) u-boot? ( sys-boot/u-boot:= ) cros_ec? ( chromeos-base/chromeos-ec:= ) pd_sync? ( chromeos-base/chromeos-ec:= )
-DESCRIPTION=ChromeOS firmware image builder
-EAPI=7
-HOMEPAGE=http://www.chromium.org
-IUSE=alex aplrvp atlas auron bayleybay beltino bolt butterfly chell cnlrvp coral cyan dedede deltaur dragonegg drallion emeraldlake2 eve endeavour falco fizz fox glados glkrvp grunt hatch jecht kalista kblrvp kunimitsu link lumpy lumpy64 mario meowth mushu nasher nami nautilus nocturne octopus palkia panther parrot peppy poppy puff pyro rambi rammus reef samus sand sarien sklrvp slippy snappy soraka squawks stout strago stumpy sumo volteer zoombini zork tglrvp diag_payload seabios wilco_ec fsp unibuild u-boot tianocore cros_ec pd_sync +bmpblk generated_cros_config ec_ro_sync +depthcharge cros-debug
-KEYWORDS=*
-LICENSE=GPL-2
-SLOT=0
-_eclasses_=cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e9d1c439235316781d4321d855ba4d38
diff --git a/metadata/md5-cache/sys-boot/chromeos-bootimage-0.0.3-r85 b/metadata/md5-cache/sys-boot/chromeos-bootimage-0.0.3-r85
deleted file mode 100644
index ff4267e..0000000
--- a/metadata/md5-cache/sys-boot/chromeos-bootimage-0.0.3-r85
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=chromeos-base/vboot_reference
-DEFINED_PHASES=compile install
-DEPEND=sys-boot/coreboot depthcharge? ( sys-boot/depthcharge:= ) bmpblk? ( sys-boot/chromeos-bmpblk:= ) tianocore? ( sys-boot/edk2:= ) seabios? ( sys-boot/chromeos-seabios:= ) unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) u-boot? ( sys-boot/u-boot:= ) cros_ec? ( chromeos-base/chromeos-ec:= ) pd_sync? ( chromeos-base/chromeos-ec:= )
-DESCRIPTION=ChromeOS firmware image builder
-EAPI=7
-HOMEPAGE=http://www.chromium.org
-IUSE=alex aplrvp atlas auron bayleybay beltino bolt butterfly chell cnlrvp coral cyan dedede deltaur dragonegg drallion emeraldlake2 eve endeavour falco fizz fox glados glkrvp grunt hatch jecht kalista kblrvp kunimitsu link lumpy lumpy64 mario meowth mushu nasher nami nautilus nocturne octopus palkia panther parrot peppy poppy puff pyro rambi rammus reef samus sand sarien sklrvp slippy snappy soraka squawks stout strago stumpy sumo volteer zoombini zork tglrvp diag_payload seabios wilco_ec fsp unibuild u-boot tianocore cros_ec pd_sync +bmpblk generated_cros_config ec_ro_sync +depthcharge cros-debug
-KEYWORDS=*
-LICENSE=GPL-2
-SLOT=0
-_eclasses_=cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e9d1c439235316781d4321d855ba4d38
diff --git a/metadata/md5-cache/sys-boot/chromeos-bootimage-0.0.4-r2 b/metadata/md5-cache/sys-boot/chromeos-bootimage-0.0.4-r2
new file mode 100644
index 0000000..c0d7cd2
--- /dev/null
+++ b/metadata/md5-cache/sys-boot/chromeos-bootimage-0.0.4-r2
@@ -0,0 +1,13 @@
+BDEPEND=chromeos-base/vboot_reference dev-vcs/git
+DEFINED_PHASES=compile info install setup unpack
+DEPEND=sys-boot/coreboot:= depthcharge? ( sys-boot/depthcharge:= ) bmpblk? ( sys-boot/chromeos-bmpblk:= ) tianocore? ( sys-boot/edk2:= ) seabios? ( sys-boot/chromeos-seabios:= ) unibuild? ( chromeos-base/chromeos-config:= ) u-boot? ( sys-boot/u-boot:= ) cros_ec? ( chromeos-base/chromeos-ec:= ) zephyr_ec? ( chromeos-base/chromeos-zephyr:= ) pd_sync? ( chromeos-base/chromeos-ec:= )
+DESCRIPTION=ChromeOS firmware image builder
+EAPI=7
+HOMEPAGE=http://www.chromium.org
+IUSE=diag_payload seabios wilco_ec zephyr_ec fsp unibuild u-boot tianocore cros_ec pd_sync +bmpblk ec_ro_sync +depthcharge cros-debug cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=952797e9c6b70f3572d3295ae59eb78b
diff --git a/metadata/md5-cache/sys-boot/chromeos-bootimage-9999 b/metadata/md5-cache/sys-boot/chromeos-bootimage-9999
new file mode 100644
index 0000000..7ddf047
--- /dev/null
+++ b/metadata/md5-cache/sys-boot/chromeos-bootimage-9999
@@ -0,0 +1,13 @@
+BDEPEND=chromeos-base/vboot_reference dev-vcs/git
+DEFINED_PHASES=compile info install setup unpack
+DEPEND=sys-boot/coreboot:= depthcharge? ( sys-boot/depthcharge:= ) bmpblk? ( sys-boot/chromeos-bmpblk:= ) tianocore? ( sys-boot/edk2:= ) seabios? ( sys-boot/chromeos-seabios:= ) unibuild? ( chromeos-base/chromeos-config:= ) u-boot? ( sys-boot/u-boot:= ) cros_ec? ( chromeos-base/chromeos-ec:= ) zephyr_ec? ( chromeos-base/chromeos-zephyr:= ) pd_sync? ( chromeos-base/chromeos-ec:= )
+DESCRIPTION=ChromeOS firmware image builder
+EAPI=7
+HOMEPAGE=http://www.chromium.org
+IUSE=diag_payload seabios wilco_ec zephyr_ec fsp unibuild u-boot tianocore cros_ec pd_sync +bmpblk ec_ro_sync +depthcharge cros-debug cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=GPL-2
+PROPERTIES=live
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-debug	d2750757005d6a444f8eb12bb9eb9944	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=17ce66722a1430816b0f213772f3de0e
diff --git a/metadata/md5-cache/sys-boot/chromeos-seabios-0.0.1-r88 b/metadata/md5-cache/sys-boot/chromeos-seabios-0.0.1-r88
index 9b54fcb..1d692ff 100644
--- a/metadata/md5-cache/sys-boot/chromeos-seabios-0.0.1-r88
+++ b/metadata/md5-cache/sys-boot/chromeos-seabios-0.0.1-r88
@@ -8,5 +8,5 @@
 LICENSE=GPL-2
 PROPERTIES=live
 SLOT=0/0.0.1-r88
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=f411830117b5bcf389767a6a5e26a71a
diff --git a/metadata/md5-cache/sys-boot/chromeos-seabios-9999 b/metadata/md5-cache/sys-boot/chromeos-seabios-9999
index ca210fb..ede1936 100644
--- a/metadata/md5-cache/sys-boot/chromeos-seabios-9999
+++ b/metadata/md5-cache/sys-boot/chromeos-seabios-9999
@@ -8,5 +8,5 @@
 LICENSE=GPL-2
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=b79e86b4dc6274be0a7928c36559cfd0
diff --git a/metadata/md5-cache/sys-boot/chromeos-vendor-strings-null-0.0.1 b/metadata/md5-cache/sys-boot/chromeos-vendor-strings-null-0.0.1
deleted file mode 100644
index 1e692e2..0000000
--- a/metadata/md5-cache/sys-boot/chromeos-vendor-strings-null-0.0.1
+++ /dev/null
@@ -1,7 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Vendor firmware strings placeholder
-EAPI=5
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-_md5_=4a0c5986f52c56b7c6d6f50d754b4afe
diff --git a/metadata/md5-cache/sys-boot/coreboot-0.0.1-r4142 b/metadata/md5-cache/sys-boot/coreboot-0.0.1-r4142
deleted file mode 100644
index 54c2ece..0000000
--- a/metadata/md5-cache/sys-boot/coreboot-0.0.1-r4142
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install prepare setup unpack
-DEPEND=mtc? ( sys-boot/mtc:= ) virtual/coreboot-private-files bmpblk? ( sys-boot/chromeos-bmpblk:= ) intel_mrc? ( x86? ( sys-boot/chromeos-mrc:= ) amd64? ( sys-boot/chromeos-mrc:= ) ) chipset_stoneyridge? ( sys-boot/amd-firmware:= ) chipset_picasso? ( >=sys-boot/amd-picasso-fsp-0.0.2:= ) qca-framework? ( sys-boot/qca-framework:= ) unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) )
-DESCRIPTION=coreboot firmware
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=em100-mode fsp memmaps mocktpm quiet-cb rmt vmx mtc mma +bmpblk +intel_mrc qca-framework quiet unibuild verbose amd_cpu coreboot-sdk chipset_stoneyridge chipset_picasso generated_cros_config board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild cros_host cros_workon_tree_2e32d2a5a79f8e88be91b44b40a65211c6ea4dae_e58b88828fa7d1946361c9ef45f9f1128cf92c89_06c3486af100c39ddc9cb59381d087b4f2ed1634_3155925d35f57041703913dde70f8eebf96d79df_9a3dae98d5e43b8fd1a6eddb17ab66ab121aa131_45d22a8711f85c4310c0c2121d3dc8a72793d375_c0433b88f972fa26dded401be022c1c026cd644e
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RESTRICT=strip
-SLOT=0/0.0.1-r4142
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b6fa7809773d802b95debd0106a42229
diff --git a/metadata/md5-cache/sys-boot/coreboot-0.0.1-r4457 b/metadata/md5-cache/sys-boot/coreboot-0.0.1-r4457
new file mode 100644
index 0000000..f88c672
--- /dev/null
+++ b/metadata/md5-cache/sys-boot/coreboot-0.0.1-r4457
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install prepare setup unpack
+DEPEND=mtc? ( sys-boot/mtc:= ) coreboot-private-files-board? ( sys-boot/coreboot-private-files-board:= ) coreboot-private-files-chipset? ( sys-boot/coreboot-private-files-chipset:= ) virtual/coreboot-private-files bmpblk? ( sys-boot/chromeos-bmpblk:= ) chipset_stoneyridge? ( sys-boot/amd-firmware:= ) chipset_picasso? ( >=sys-boot/amd-picasso-fsp-0.0.2:= ) chipset_cezanne? ( sys-boot/amd-cezanne-fsp:= ) unibuild? ( chromeos-base/chromeos-config:= )
+DESCRIPTION=coreboot firmware
+EAPI=7
+HOMEPAGE=http://www.coreboot.org
+IUSE=em100-mode fsp memmaps mocktpm quiet-cb rmt vmx mtc mma +bmpblk quiet unibuild verbose amd_cpu coreboot-sdk chipset_stoneyridge chipset_picasso chipset_cezanne coreboot-private-files-board coreboot-private-files-chipset board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild cros_host cros_workon_tree_0039a6731a3018302bff712c112c2464f8192e79_d6d71de60d72b25dfa814f04f38f6e1f874fe88e_3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c_27bb5107ef257116a45f756ad185272ae385faf9_71e64b41a2f07ca30f4745b73c3964bc3c59dcf2_45d22a8711f85c4310c0c2121d3dc8a72793d375_c0433b88f972fa26dded401be022c1c026cd644e
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RESTRICT=strip
+SLOT=0/0.0.1-r4457
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=f60128604e9bfef77b56a10ebcdb51ae
diff --git a/metadata/md5-cache/sys-boot/coreboot-9999 b/metadata/md5-cache/sys-boot/coreboot-9999
index b34aa78..a7e1962 100644
--- a/metadata/md5-cache/sys-boot/coreboot-9999
+++ b/metadata/md5-cache/sys-boot/coreboot-9999
@@ -1,14 +1,14 @@
 BDEPEND=dev-vcs/git
 DEFINED_PHASES=compile info install prepare setup unpack
-DEPEND=mtc? ( sys-boot/mtc:= ) virtual/coreboot-private-files bmpblk? ( sys-boot/chromeos-bmpblk:= ) intel_mrc? ( x86? ( sys-boot/chromeos-mrc:= ) amd64? ( sys-boot/chromeos-mrc:= ) ) chipset_stoneyridge? ( sys-boot/amd-firmware:= ) chipset_picasso? ( >=sys-boot/amd-picasso-fsp-0.0.2:= ) qca-framework? ( sys-boot/qca-framework:= ) unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) )
+DEPEND=mtc? ( sys-boot/mtc:= ) coreboot-private-files-board? ( sys-boot/coreboot-private-files-board:= ) coreboot-private-files-chipset? ( sys-boot/coreboot-private-files-chipset:= ) virtual/coreboot-private-files bmpblk? ( sys-boot/chromeos-bmpblk:= ) chipset_stoneyridge? ( sys-boot/amd-firmware:= ) chipset_picasso? ( >=sys-boot/amd-picasso-fsp-0.0.2:= ) chipset_cezanne? ( sys-boot/amd-cezanne-fsp:= ) unibuild? ( chromeos-base/chromeos-config:= )
 DESCRIPTION=coreboot firmware
 EAPI=7
 HOMEPAGE=http://www.coreboot.org
-IUSE=em100-mode fsp memmaps mocktpm quiet-cb rmt vmx mtc mma +bmpblk +intel_mrc qca-framework quiet unibuild verbose amd_cpu coreboot-sdk chipset_stoneyridge chipset_picasso generated_cros_config board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild cros_host cros_workon_tree_
+IUSE=em100-mode fsp memmaps mocktpm quiet-cb rmt vmx mtc mma +bmpblk quiet unibuild verbose amd_cpu coreboot-sdk chipset_stoneyridge chipset_picasso chipset_cezanne coreboot-private-files-board coreboot-private-files-chipset board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RESTRICT=strip
 SLOT=0/9999
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=552244e0c4ed0e55912ca9cfe9d073d2
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6ee6fe57b1404c5c4e14a027a95935a1
diff --git a/metadata/md5-cache/sys-boot/coreinfo-0.0.1-r3920 b/metadata/md5-cache/sys-boot/coreinfo-0.0.1-r3920
deleted file mode 100644
index 5f8718c4..0000000
--- a/metadata/md5-cache/sys-boot/coreinfo-0.0.1-r3920
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-embedded/coreboot-sdk:= dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=sys-boot/libpayload:=
-DESCRIPTION=coreboot's coreinfo payload
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=cros_host cros_workon_tree_2e32d2a5a79f8e88be91b44b40a65211c6ea4dae
-KEYWORDS=-* amd64 x86
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/0.0.1-r3920
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3813b8c3fd0a279d3386a0e5d43eced6
diff --git a/metadata/md5-cache/sys-boot/coreinfo-9999 b/metadata/md5-cache/sys-boot/coreinfo-9999
deleted file mode 100644
index 633f951..0000000
--- a/metadata/md5-cache/sys-boot/coreinfo-9999
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-embedded/coreboot-sdk:= dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=sys-boot/libpayload:=
-DESCRIPTION=coreboot's coreinfo payload
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=cros_host cros_workon_tree_
-KEYWORDS=-* ~amd64 ~x86
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/9999
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a9abeaa14c4f5a4eaf26ac719a4b2a1d
diff --git a/metadata/md5-cache/sys-boot/depthcharge-0.0.1-r3159 b/metadata/md5-cache/sys-boot/depthcharge-0.0.1-r3159
deleted file mode 100644
index 4cc2ede..0000000
--- a/metadata/md5-cache/sys-boot/depthcharge-0.0.1-r3159
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-python/kconfiglib dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DEPEND=sys-boot/coreboot:= chromeos-base/chromeos-ec-headers:= sys-boot/libpayload:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) )
-DESCRIPTION=coreboot's depthcharge payload
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=detachable diag_payload fwconsole mocktpm pd_sync unibuild verbose debug generated_cros_config +minidiag physical_presence_power physical_presence_recovery cros_host cros_workon_tree_1a47ce4df0f45de4343b2c349f88570ab637cf74_06c3486af100c39ddc9cb59381d087b4f2ed1634 board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/0.0.1-r3159
-_eclasses_=cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=752bb13e70142c34394a96fd43342534
diff --git a/metadata/md5-cache/sys-boot/depthcharge-0.0.1-r3288 b/metadata/md5-cache/sys-boot/depthcharge-0.0.1-r3288
new file mode 100644
index 0000000..b74bfd0
--- /dev/null
+++ b/metadata/md5-cache/sys-boot/depthcharge-0.0.1-r3288
@@ -0,0 +1,13 @@
+BDEPEND=dev-python/kconfiglib dev-vcs/git
+DEFINED_PHASES=compile info install setup unpack
+DEPEND=sys-boot/coreboot:= chromeos-base/chromeos-ec-headers:= sys-boot/libpayload:= unibuild? ( chromeos-base/chromeos-config:= )
+DESCRIPTION=coreboot's depthcharge payload
+EAPI=7
+HOMEPAGE=http://www.coreboot.org
+IUSE=detachable diag_payload fwconsole mocktpm pd_sync unibuild verbose debug +minidiag physical_presence_power physical_presence_recovery cros_host cros_workon_tree_da095db43f621ecd0e59572cc290ac6f892753fc_3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+SLOT=0/0.0.1-r3288
+_eclasses_=cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b81473a8a7e8327d414499e02d8e10c4
diff --git a/metadata/md5-cache/sys-boot/depthcharge-9999 b/metadata/md5-cache/sys-boot/depthcharge-9999
index 13719dd..68948b0 100644
--- a/metadata/md5-cache/sys-boot/depthcharge-9999
+++ b/metadata/md5-cache/sys-boot/depthcharge-9999
@@ -1,13 +1,13 @@
 BDEPEND=dev-python/kconfiglib dev-vcs/git
 DEFINED_PHASES=compile info install setup unpack
-DEPEND=sys-boot/coreboot:= chromeos-base/chromeos-ec-headers:= sys-boot/libpayload:= unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) )
+DEPEND=sys-boot/coreboot:= chromeos-base/chromeos-ec-headers:= sys-boot/libpayload:= unibuild? ( chromeos-base/chromeos-config:= )
 DESCRIPTION=coreboot's depthcharge payload
 EAPI=7
 HOMEPAGE=http://www.coreboot.org
-IUSE=detachable diag_payload fwconsole mocktpm pd_sync unibuild verbose debug generated_cros_config +minidiag physical_presence_power physical_presence_recovery cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild
+IUSE=detachable diag_payload fwconsole mocktpm pd_sync unibuild verbose debug +minidiag physical_presence_power physical_presence_recovery cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=3270c56e488fb43a838498327417e6c0
+_eclasses_=cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=823b9a2c6bd912ceeaf2181edd946b4c
diff --git a/metadata/md5-cache/sys-boot/edk2-0.0.1-r36 b/metadata/md5-cache/sys-boot/edk2-0.0.1-r36
index 8af7034..d7c1b44 100644
--- a/metadata/md5-cache/sys-boot/edk2-0.0.1-r36
+++ b/metadata/md5-cache/sys-boot/edk2-0.0.1-r36
@@ -9,5 +9,5 @@
 PROPERTIES=live
 SLOT=0/0.0.1-r36
 SRC_URI=https://www.openssl.org/source/openssl-1.1.0e.tar.gz
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=cf6da632749b0dea100a34bd60edcaa2
diff --git a/metadata/md5-cache/sys-boot/edk2-9999 b/metadata/md5-cache/sys-boot/edk2-9999
index 555a3ae..fc72255 100644
--- a/metadata/md5-cache/sys-boot/edk2-9999
+++ b/metadata/md5-cache/sys-boot/edk2-9999
@@ -9,5 +9,5 @@
 PROPERTIES=live
 SLOT=0/9999
 SRC_URI=https://www.openssl.org/source/openssl-1.1.0e.tar.gz
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=b4df054c018d5a9bfc86bbf7d15e669d
diff --git a/metadata/md5-cache/sys-boot/grub-2.02 b/metadata/md5-cache/sys-boot/grub-2.02
index 154c3c6..3a139fe 100644
--- a/metadata/md5-cache/sys-boot/grub-2.02
+++ b/metadata/md5-cache/sys-boot/grub-2.02
@@ -6,5 +6,5 @@
 LICENSE=GPL-3
 SLOT=0
 SRC_URI=ftp://ftp.gnu.org/gnu/grub/grub-2.02.tar.xz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=eb21f3f4cded6a0d6353f1e2ac5a5859
+_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=bd2b1f9954fc9d39ba0cae97c2cb5b7a
diff --git a/metadata/md5-cache/sys-boot/grub-2.02-r3 b/metadata/md5-cache/sys-boot/grub-2.02-r3
deleted file mode 100644
index 154c3c6..0000000
--- a/metadata/md5-cache/sys-boot/grub-2.02-r3
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=compile configure install prepare
-DESCRIPTION=GNU GRUB 2 boot loader
-EAPI=5
-HOMEPAGE=http://www.gnu.org/software/grub/
-KEYWORDS=-* amd64
-LICENSE=GPL-3
-SLOT=0
-SRC_URI=ftp://ftp.gnu.org/gnu/grub/grub-2.02.tar.xz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=eb21f3f4cded6a0d6353f1e2ac5a5859
diff --git a/metadata/md5-cache/sys-boot/grub-2.02-r7 b/metadata/md5-cache/sys-boot/grub-2.02-r7
new file mode 100644
index 0000000..3a139fe
--- /dev/null
+++ b/metadata/md5-cache/sys-boot/grub-2.02-r7
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile configure install prepare
+DESCRIPTION=GNU GRUB 2 boot loader
+EAPI=5
+HOMEPAGE=http://www.gnu.org/software/grub/
+KEYWORDS=-* amd64
+LICENSE=GPL-3
+SLOT=0
+SRC_URI=ftp://ftp.gnu.org/gnu/grub/grub-2.02.tar.xz
+_eclasses_=bash-completion-r1	47a7402d95930413ce25ba8d857339bb	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=bd2b1f9954fc9d39ba0cae97c2cb5b7a
diff --git a/metadata/md5-cache/sys-boot/libpayload-0.0.1-r3990 b/metadata/md5-cache/sys-boot/libpayload-0.0.1-r3990
deleted file mode 100644
index 0e0955d..0000000
--- a/metadata/md5-cache/sys-boot/libpayload-0.0.1-r3990
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=coreboot's libpayload library
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=coreboot-sdk verbose cros_host cros_workon_tree_2e32d2a5a79f8e88be91b44b40a65211c6ea4dae board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/0.0.1-r3990
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cec8381c091336f95c1a186bad58ac7e
diff --git a/metadata/md5-cache/sys-boot/libpayload-0.0.1-r4178 b/metadata/md5-cache/sys-boot/libpayload-0.0.1-r4178
new file mode 100644
index 0000000..c9dbc73
--- /dev/null
+++ b/metadata/md5-cache/sys-boot/libpayload-0.0.1-r4178
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install setup unpack
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= )
+DESCRIPTION=coreboot's libpayload library
+EAPI=7
+HOMEPAGE=http://www.coreboot.org
+IUSE=coreboot-sdk unibuild verbose cros_host cros_workon_tree_b5a9076b809964e8c39cac28e54a2e8ad99169c8_705ef94c6144066c732bc3b44a3fed2e79debfd5_3866d5128a8888a5cbbf8e2ea4a546537e16d2ce board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+SLOT=0/0.0.1-r4178
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e82814ef3b2346187e9e9b00550f2d82
diff --git a/metadata/md5-cache/sys-boot/libpayload-9999 b/metadata/md5-cache/sys-boot/libpayload-9999
index 0c71fdf..50f706f 100644
--- a/metadata/md5-cache/sys-boot/libpayload-9999
+++ b/metadata/md5-cache/sys-boot/libpayload-9999
@@ -1,12 +1,13 @@
 BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
+DEFINED_PHASES=compile configure info install setup unpack
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= )
 DESCRIPTION=coreboot's libpayload library
 EAPI=7
 HOMEPAGE=http://www.coreboot.org
-IUSE=coreboot-sdk verbose cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild
+IUSE=coreboot-sdk unibuild verbose cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 SLOT=0/9999
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e24c856e0607a5b98b9977fab24056a5
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=352d40d67d1fdd5144e2e05b9cd61a78
diff --git a/metadata/md5-cache/sys-boot/u-boot-2020.10-r2828 b/metadata/md5-cache/sys-boot/u-boot-2020.10-r2828
deleted file mode 100644
index 36c108f..0000000
--- a/metadata/md5-cache/sys-boot/u-boot-2020.10-r2828
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup unpack
-DEPEND=sandbox? ( media-libs/libsdl:= )
-DESCRIPTION=Das U-Boot boot loader
-EAPI=7
-HOMEPAGE=http://www.denx.de/wiki/U-Boot
-IUSE=dev generated_cros_config sandbox unibuild vboot werror cros_host cros_workon_tree_35ebd6a3b5d8c89eb1cdc4d68b8ad69c0c8dd8be_06c3486af100c39ddc9cb59381d087b4f2ed1634
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=sandbox? ( media-libs/libsdl:= ) chromeos-base/u-boot-scripts !!sys-boot/chromeos-u-boot unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) )
-SLOT=0/2020.10-r2828
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e36b0ff17f0eb09aba52d3f62af67b7a
diff --git a/metadata/md5-cache/sys-boot/u-boot-2021.07-r2879 b/metadata/md5-cache/sys-boot/u-boot-2021.07-r2879
new file mode 100644
index 0000000..d3df29e
--- /dev/null
+++ b/metadata/md5-cache/sys-boot/u-boot-2021.07-r2879
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile configure info install setup unpack
+DEPEND=sandbox? ( media-libs/libsdl:= )
+DESCRIPTION=Das U-Boot boot loader
+EAPI=7
+HOMEPAGE=http://www.denx.de/wiki/U-Boot
+IUSE=dev generated_cros_config sandbox unibuild vboot werror cros_host cros_workon_tree_de4f0c255aa3b757f43b4dd4f7a60f08ead04f30_3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=sandbox? ( media-libs/libsdl:= ) chromeos-base/u-boot-scripts !!sys-boot/chromeos-u-boot unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) )
+SLOT=0/2021.07-r2879
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e962543e988fa1ff1c658d64463684cb
diff --git a/metadata/md5-cache/sys-boot/u-boot-9999 b/metadata/md5-cache/sys-boot/u-boot-9999
index b181ba5..f18b8f3 100644
--- a/metadata/md5-cache/sys-boot/u-boot-9999
+++ b/metadata/md5-cache/sys-boot/u-boot-9999
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=sandbox? ( media-libs/libsdl:= ) chromeos-base/u-boot-scripts !!sys-boot/chromeos-u-boot unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) )
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=0f5634d7606d2cd93e630c41d6727436
diff --git a/metadata/md5-cache/sys-devel/arc-build-0.0.3 b/metadata/md5-cache/sys-devel/arc-build-0.0.3
index 27588bb..25e0238 100644
--- a/metadata/md5-cache/sys-devel/arc-build-0.0.3
+++ b/metadata/md5-cache/sys-devel/arc-build-0.0.3
@@ -1,10 +1,10 @@
 DEFINED_PHASES=compile configure install test
 DESCRIPTION=Ebuild for per-sysroot arc-build components.
 EAPI=5
-IUSE=abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=*
 LICENSE=BSD-Google
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 SLOT=0
-_eclasses_=arc-build-constants	8e0737c700e22ae5b27a96091af3e368	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=71ba9f5e6090fb4d6bb966d22642d185
diff --git a/metadata/md5-cache/sys-devel/arc-build-0.0.3-r17 b/metadata/md5-cache/sys-devel/arc-build-0.0.3-r17
deleted file mode 100644
index 27588bb..0000000
--- a/metadata/md5-cache/sys-devel/arc-build-0.0.3-r17
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=compile configure install test
-DESCRIPTION=Ebuild for per-sysroot arc-build components.
-EAPI=5
-IUSE=abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=BSD-Google
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-SLOT=0
-_eclasses_=arc-build-constants	8e0737c700e22ae5b27a96091af3e368	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=71ba9f5e6090fb4d6bb966d22642d185
diff --git a/metadata/md5-cache/sys-devel/arc-build-0.0.3-r18 b/metadata/md5-cache/sys-devel/arc-build-0.0.3-r18
new file mode 100644
index 0000000..25e0238
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/arc-build-0.0.3-r18
@@ -0,0 +1,10 @@
+DEFINED_PHASES=compile configure install test
+DESCRIPTION=Ebuild for per-sysroot arc-build components.
+EAPI=5
+IUSE=abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=BSD-Google
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+SLOT=0
+_eclasses_=arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=71ba9f5e6090fb4d6bb966d22642d185
diff --git a/metadata/md5-cache/sys-devel/arc-llvm-8.0.1 b/metadata/md5-cache/sys-devel/arc-llvm-8.0.1
deleted file mode 100644
index dd4012a..0000000
--- a/metadata/md5-cache/sys-devel/arc-llvm-8.0.1
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=dev-util/ninja >=dev-util/cmake-3.7.0-r1 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=Low Level Virtual Machine
-EAPI=6
-HOMEPAGE=https://llvm.org/
-IUSE=debug doc exegesis libedit libffi ncurses test xar xml kernel_Darwin llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=UoI-NCSA rc BSD public-domain llvm_targets_ARM? ( LLVM-Grant )
-RDEPEND=!sys-devel/arc-llvm:0 !<sys-devel/arc-llvm-8
-REQUIRED_USE=|| ( llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-RESTRICT=!test? ( test )
-SLOT=8
-SRC_URI=https://github.com/llvm/llvm-project/releases/download/llvmorg-8.0.1/llvm-8.0.1.src.tar.xz !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-8.0.1-manpages.tar.bz2 )
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=6e960f142bb228b26692862a2d36636b
diff --git a/metadata/md5-cache/sys-devel/arc-llvm-8.0.1-r3 b/metadata/md5-cache/sys-devel/arc-llvm-8.0.1-r3
deleted file mode 100644
index dd4012a..0000000
--- a/metadata/md5-cache/sys-devel/arc-llvm-8.0.1-r3
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=dev-util/ninja >=dev-util/cmake-3.7.0-r1 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=Low Level Virtual Machine
-EAPI=6
-HOMEPAGE=https://llvm.org/
-IUSE=debug doc exegesis libedit libffi ncurses test xar xml kernel_Darwin llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=UoI-NCSA rc BSD public-domain llvm_targets_ARM? ( LLVM-Grant )
-RDEPEND=!sys-devel/arc-llvm:0 !<sys-devel/arc-llvm-8
-REQUIRED_USE=|| ( llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-RESTRICT=!test? ( test )
-SLOT=8
-SRC_URI=https://github.com/llvm/llvm-project/releases/download/llvmorg-8.0.1/llvm-8.0.1.src.tar.xz !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-8.0.1-manpages.tar.bz2 )
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=6e960f142bb228b26692862a2d36636b
diff --git a/metadata/md5-cache/sys-devel/arc-llvm-9.0.0 b/metadata/md5-cache/sys-devel/arc-llvm-9.0.0
index 3c47e1c..2c2eb9b 100644
--- a/metadata/md5-cache/sys-devel/arc-llvm-9.0.0
+++ b/metadata/md5-cache/sys-devel/arc-llvm-9.0.0
@@ -3,13 +3,13 @@
 DESCRIPTION=Low Level Virtual Machine
 EAPI=6
 HOMEPAGE=https://llvm.org/
-IUSE=debug doc exegesis libedit libffi ncurses test xar xml kernel_Darwin llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=debug doc exegesis libedit libffi ncurses test xar xml kernel_Darwin llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=*
 LICENSE=UoI-NCSA rc BSD public-domain llvm_targets_ARM? ( LLVM-Grant )
 RDEPEND=!sys-devel/arc-llvm:0 !<sys-devel/arc-llvm-9
-REQUIRED_USE=|| ( llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+REQUIRED_USE=|| ( llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 RESTRICT=!test? ( test )
 SLOT=9
 SRC_URI=https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.0/llvm-9.0.0.src.tar.xz !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-9.0.0-manpages.tar.bz2 )
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=e9b0a287da74b930e742827ee2723257
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=d32bb9f2cc171c4f5300f1c4153eea4c
diff --git a/metadata/md5-cache/sys-devel/arc-llvm-9.0.0-r1 b/metadata/md5-cache/sys-devel/arc-llvm-9.0.0-r1
deleted file mode 100644
index 3c47e1c..0000000
--- a/metadata/md5-cache/sys-devel/arc-llvm-9.0.0-r1
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=dev-util/ninja >=dev-util/cmake-3.7.0-r1 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=Low Level Virtual Machine
-EAPI=6
-HOMEPAGE=https://llvm.org/
-IUSE=debug doc exegesis libedit libffi ncurses test xar xml kernel_Darwin llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=UoI-NCSA rc BSD public-domain llvm_targets_ARM? ( LLVM-Grant )
-RDEPEND=!sys-devel/arc-llvm:0 !<sys-devel/arc-llvm-9
-REQUIRED_USE=|| ( llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-RESTRICT=!test? ( test )
-SLOT=9
-SRC_URI=https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.0/llvm-9.0.0.src.tar.xz !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-9.0.0-manpages.tar.bz2 )
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=e9b0a287da74b930e742827ee2723257
diff --git a/metadata/md5-cache/sys-devel/arc-llvm-9.0.0-r2 b/metadata/md5-cache/sys-devel/arc-llvm-9.0.0-r2
new file mode 100644
index 0000000..2c2eb9b
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/arc-llvm-9.0.0-r2
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=dev-util/ninja >=dev-util/cmake-3.7.0-r1 sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=Low Level Virtual Machine
+EAPI=6
+HOMEPAGE=https://llvm.org/
+IUSE=debug doc exegesis libedit libffi ncurses test xar xml kernel_Darwin llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=UoI-NCSA rc BSD public-domain llvm_targets_ARM? ( LLVM-Grant )
+RDEPEND=!sys-devel/arc-llvm:0 !<sys-devel/arc-llvm-9
+REQUIRED_USE=|| ( llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore ) cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+RESTRICT=!test? ( test )
+SLOT=9
+SRC_URI=https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.0/llvm-9.0.0.src.tar.xz !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-9.0.0-manpages.tar.bz2 )
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=d32bb9f2cc171c4f5300f1c4153eea4c
diff --git a/metadata/md5-cache/sys-devel/autofdo-0.19 b/metadata/md5-cache/sys-devel/autofdo-0.19
deleted file mode 100644
index e584c5a..0000000
--- a/metadata/md5-cache/sys-devel/autofdo-0.19
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure install prepare
-DEPEND=dev-libs/openssl:0= dev-libs/protobuf:= dev-libs/libffi sys-devel/llvm sys-libs/zlib >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Utilies for generating, examining AFDO profiles
-EAPI=5
-HOMEPAGE=http://gcc.gnu.org/wiki/AutoFDO
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-libs/openssl:0= dev-libs/protobuf:= dev-libs/libffi sys-devel/llvm sys-libs/zlib
-SLOT=0
-SRC_URI=https://github.com/google/autofdo/archive/0.19.tar.gz -> autofdo-0.19.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=f298b49806bfe0327c80e4f966b4fae4
diff --git a/metadata/md5-cache/sys-devel/autofdo-0.19-r2 b/metadata/md5-cache/sys-devel/autofdo-0.19-r2
deleted file mode 100644
index e584c5a..0000000
--- a/metadata/md5-cache/sys-devel/autofdo-0.19-r2
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure install prepare
-DEPEND=dev-libs/openssl:0= dev-libs/protobuf:= dev-libs/libffi sys-devel/llvm sys-libs/zlib >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Utilies for generating, examining AFDO profiles
-EAPI=5
-HOMEPAGE=http://gcc.gnu.org/wiki/AutoFDO
-KEYWORDS=*
-LICENSE=Apache-2.0
-RDEPEND=dev-libs/openssl:0= dev-libs/protobuf:= dev-libs/libffi sys-devel/llvm sys-libs/zlib
-SLOT=0
-SRC_URI=https://github.com/google/autofdo/archive/0.19.tar.gz -> autofdo-0.19.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=f298b49806bfe0327c80e4f966b4fae4
diff --git a/metadata/md5-cache/sys-devel/autofdo-0.21 b/metadata/md5-cache/sys-devel/autofdo-0.21
new file mode 100644
index 0000000..f5fefa6
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/autofdo-0.21
@@ -0,0 +1,13 @@
+BDEPEND=>=app-portage/elt-patches-20170815 dev-util/ninja dev-util/cmake
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=dev-libs/openssl:0= dev-libs/protobuf:= dev-libs/libffi sys-devel/llvm sys-libs/zlib !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Utility for generating AFDO profiles
+EAPI=7
+HOMEPAGE=http://gcc.gnu.org/wiki/AutoFDO
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=dev-libs/openssl:0= dev-libs/protobuf:= dev-libs/libffi sys-devel/llvm sys-libs/zlib
+SLOT=0
+SRC_URI=https://github.com/google/autofdo/archive/0.21.tar.xz -> autofdo-0.21.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cmake	b22e256fd899c7e0c747e8834eff121a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=f34d15d56a6f436d26492a95ccf6c59d
diff --git a/metadata/md5-cache/sys-devel/autofdo-0.21-r1 b/metadata/md5-cache/sys-devel/autofdo-0.21-r1
new file mode 100644
index 0000000..f5fefa6
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/autofdo-0.21-r1
@@ -0,0 +1,13 @@
+BDEPEND=>=app-portage/elt-patches-20170815 dev-util/ninja dev-util/cmake
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=dev-libs/openssl:0= dev-libs/protobuf:= dev-libs/libffi sys-devel/llvm sys-libs/zlib !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Utility for generating AFDO profiles
+EAPI=7
+HOMEPAGE=http://gcc.gnu.org/wiki/AutoFDO
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=dev-libs/openssl:0= dev-libs/protobuf:= dev-libs/libffi sys-devel/llvm sys-libs/zlib
+SLOT=0
+SRC_URI=https://github.com/google/autofdo/archive/0.21.tar.xz -> autofdo-0.21.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cmake	b22e256fd899c7e0c747e8834eff121a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=f34d15d56a6f436d26492a95ccf6c59d
diff --git a/metadata/md5-cache/sys-devel/binutils-2.27.0-r26 b/metadata/md5-cache/sys-devel/binutils-2.27.0-r26
deleted file mode 100644
index 886d7ec..0000000
--- a/metadata/md5-cache/sys-devel/binutils-2.27.0-r26
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=>=app-portage/elt-patches-20170815 dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst postrm setup test unpack
-DEPEND=>=sys-devel/binutils-config-1.9 test? ( dev-util/dejagnu ) nls? ( sys-devel/gettext ) sys-devel/flex sys-devel/gnuconfig
-DESCRIPTION=Tools necessary to build programs
-EAPI=7
-HOMEPAGE=http://sources.redhat.com/binutils/
-IUSE=cros_host hardened mounted_binutils multitarget nls test vanilla next_binutils prev_binutils cros_host cros_workon_tree_ef450283e06228c68b26fbb47ba99b06cc0c3eea
-KEYWORDS=*
-LICENSE=|| ( GPL-3 LGPL-3 )
-PROPERTIES=live
-RDEPEND=>=sys-devel/binutils-config-1.9
-REQUIRED_USE=next_binutils? ( !prev_binutils )
-RESTRICT=fetch test
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	gnuconfig	9200bfc8e0184357abfb86a08edd4fc3	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=1d17402b3317a65ecce3ae76d3b042d4
diff --git a/metadata/md5-cache/sys-devel/binutils-2.35.2 b/metadata/md5-cache/sys-devel/binutils-2.35.2
new file mode 100644
index 0000000..00cc08b
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/binutils-2.35.2
@@ -0,0 +1,15 @@
+BDEPEND=>=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure install postinst postrm prepare test
+DEPEND=>=sys-devel/binutils-config-3 test? ( dev-util/dejagnu ) nls? ( sys-devel/gettext ) sys-devel/flex sys-devel/gnuconfig
+DESCRIPTION=Tools necessary to build programs
+EAPI=7
+HOMEPAGE=http://sources.redhat.com/binutils/
+IUSE=cet cros_host hardened multitarget nls test vanilla
+KEYWORDS=*
+LICENSE=|| ( GPL-3 LGPL-3 )
+RDEPEND=>=sys-devel/binutils-config-3
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=mirror://gnu/binutils/binutils-2.35.2.tar.xz https://dev.gentoo.org/~dilfridge/distfiles/binutils-2.35.2-patches-1.tar.xz
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnuconfig	9200bfc8e0184357abfb86a08edd4fc3	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4b33711621bb63be767c7fe40d39391f
diff --git a/metadata/md5-cache/sys-devel/binutils-2.35.2-r3 b/metadata/md5-cache/sys-devel/binutils-2.35.2-r3
new file mode 100644
index 0000000..00cc08b
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/binutils-2.35.2-r3
@@ -0,0 +1,15 @@
+BDEPEND=>=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure install postinst postrm prepare test
+DEPEND=>=sys-devel/binutils-config-3 test? ( dev-util/dejagnu ) nls? ( sys-devel/gettext ) sys-devel/flex sys-devel/gnuconfig
+DESCRIPTION=Tools necessary to build programs
+EAPI=7
+HOMEPAGE=http://sources.redhat.com/binutils/
+IUSE=cet cros_host hardened multitarget nls test vanilla
+KEYWORDS=*
+LICENSE=|| ( GPL-3 LGPL-3 )
+RDEPEND=>=sys-devel/binutils-config-3
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=mirror://gnu/binutils/binutils-2.35.2.tar.xz https://dev.gentoo.org/~dilfridge/distfiles/binutils-2.35.2-patches-1.tar.xz
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnuconfig	9200bfc8e0184357abfb86a08edd4fc3	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4b33711621bb63be767c7fe40d39391f
diff --git a/metadata/md5-cache/sys-devel/binutils-9999 b/metadata/md5-cache/sys-devel/binutils-9999
deleted file mode 100644
index 6f17a54..0000000
--- a/metadata/md5-cache/sys-devel/binutils-9999
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=>=app-portage/elt-patches-20170815 dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst postrm setup test unpack
-DEPEND=>=sys-devel/binutils-config-1.9 test? ( dev-util/dejagnu ) nls? ( sys-devel/gettext ) sys-devel/flex sys-devel/gnuconfig
-DESCRIPTION=Tools necessary to build programs
-EAPI=7
-HOMEPAGE=http://sources.redhat.com/binutils/
-IUSE=cros_host hardened mounted_binutils multitarget nls test vanilla next_binutils prev_binutils cros_host cros_workon_tree_
-KEYWORDS=~*
-LICENSE=|| ( GPL-3 LGPL-3 )
-PROPERTIES=live
-RDEPEND=>=sys-devel/binutils-config-1.9
-REQUIRED_USE=next_binutils? ( !prev_binutils )
-RESTRICT=fetch test
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	gnuconfig	9200bfc8e0184357abfb86a08edd4fc3	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8db91896b0066caf2be7a74744a2b36c
diff --git a/metadata/md5-cache/sys-devel/gcc-10.2.0 b/metadata/md5-cache/sys-devel/gcc-10.2.0
new file mode 100644
index 0000000..15d5dd6
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/gcc-10.2.0
@@ -0,0 +1,15 @@
+BDEPEND=sys-devel/binutils
+DEFINED_PHASES=compile configure install postinst postrm prepare
+DEPEND=>=sys-libs/zlib-1.1.4 >=sys-devel/gcc-config-1.6 virtual/libiconv >=dev-libs/gmp-4.3.2 >=dev-libs/mpc-0.8.1 >=dev-libs/mpfr-2.4.2 graphite? ( >=dev-libs/cloog-0.18.0 >=dev-libs/isl-0.11.1 ) test? ( >=dev-util/dejagnu-1.4.4 >=sys-devel/autogen-5.5.4 ) >=sys-apps/texinfo-4.8 >=sys-devel/bison-1.875
+DESCRIPTION=The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking. This Compiler is based off of Crosstoolv14.
+EAPI=7
+IUSE=cet gcc_repo gcj git_gcc go graphite gtk hardened hardfp llvm-next llvm-tot mounted_gcc multilib nls cxx openmp test tests +thumb upstream_gcc vanilla vtable_verify +wrapper_ccache
+KEYWORDS=*
+LICENSE=GPL-3 LGPL-3 libgcc FDL-1.2
+PDEPEND=>=sys-devel/gcc-config-2.3
+RDEPEND=>=sys-libs/zlib-1.1.4 >=sys-devel/gcc-config-1.6 virtual/libiconv >=dev-libs/gmp-4.3.2 >=dev-libs/mpc-0.8.1 >=dev-libs/mpfr-2.4.2 graphite? ( >=dev-libs/cloog-0.18.0 >=dev-libs/isl-0.11.1 )
+RESTRICT=strip
+SLOT=x86_64-pc-linux-gnu
+SRC_URI=mirror://gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz https://dev.gentoo.org/~slyfox/distfiles/gcc-10.2.0-patches-6.tar.bz2
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b4aea5c97a9270cb76acf3e484efd42e
diff --git a/metadata/md5-cache/sys-devel/gcc-10.2.0-r15 b/metadata/md5-cache/sys-devel/gcc-10.2.0-r15
new file mode 100644
index 0000000..15d5dd6
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/gcc-10.2.0-r15
@@ -0,0 +1,15 @@
+BDEPEND=sys-devel/binutils
+DEFINED_PHASES=compile configure install postinst postrm prepare
+DEPEND=>=sys-libs/zlib-1.1.4 >=sys-devel/gcc-config-1.6 virtual/libiconv >=dev-libs/gmp-4.3.2 >=dev-libs/mpc-0.8.1 >=dev-libs/mpfr-2.4.2 graphite? ( >=dev-libs/cloog-0.18.0 >=dev-libs/isl-0.11.1 ) test? ( >=dev-util/dejagnu-1.4.4 >=sys-devel/autogen-5.5.4 ) >=sys-apps/texinfo-4.8 >=sys-devel/bison-1.875
+DESCRIPTION=The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking. This Compiler is based off of Crosstoolv14.
+EAPI=7
+IUSE=cet gcc_repo gcj git_gcc go graphite gtk hardened hardfp llvm-next llvm-tot mounted_gcc multilib nls cxx openmp test tests +thumb upstream_gcc vanilla vtable_verify +wrapper_ccache
+KEYWORDS=*
+LICENSE=GPL-3 LGPL-3 libgcc FDL-1.2
+PDEPEND=>=sys-devel/gcc-config-2.3
+RDEPEND=>=sys-libs/zlib-1.1.4 >=sys-devel/gcc-config-1.6 virtual/libiconv >=dev-libs/gmp-4.3.2 >=dev-libs/mpc-0.8.1 >=dev-libs/mpfr-2.4.2 graphite? ( >=dev-libs/cloog-0.18.0 >=dev-libs/isl-0.11.1 )
+RESTRICT=strip
+SLOT=x86_64-pc-linux-gnu
+SRC_URI=mirror://gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz https://dev.gentoo.org/~slyfox/distfiles/gcc-10.2.0-patches-6.tar.bz2
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b4aea5c97a9270cb76acf3e484efd42e
diff --git a/metadata/md5-cache/sys-devel/gcc-4.9.2-r278 b/metadata/md5-cache/sys-devel/gcc-4.9.2-r278
deleted file mode 100644
index e0b7f80..0000000
--- a/metadata/md5-cache/sys-devel/gcc-4.9.2-r278
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=sys-devel/binutils dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst postrm setup unpack
-DEPEND=>=sys-libs/zlib-1.1.4 >=sys-devel/gcc-config-1.6 virtual/libiconv >=dev-libs/gmp-4.3.2 >=dev-libs/mpc-0.8.1 >=dev-libs/mpfr-2.4.2 graphite? ( >=dev-libs/cloog-0.18.0 >=dev-libs/isl-0.11.1 ) test? ( >=dev-util/dejagnu-1.4.4 >=sys-devel/autogen-5.5.4 ) >=sys-apps/texinfo-4.8 >=sys-devel/bison-1.875
-DESCRIPTION=The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking. This Compiler is based off of Crosstoolv14.
-EAPI=7
-IUSE=gcc_repo gcj git_gcc go graphite gtk hardened hardfp llvm-next llvm-tot mounted_gcc multilib nls cxx openmp test tests +thumb upstream_gcc vanilla vtable_verify +wrapper_ccache next_gcc prev_gcc cros_host cros_workon_tree_aff2e49c815be09f20e4346cc98144b604388cb7
-KEYWORDS=*
-LICENSE=GPL-3 LGPL-3 libgcc FDL-1.2
-PDEPEND=>=sys-devel/gcc-config-1.7
-PROPERTIES=live
-RDEPEND=>=sys-libs/zlib-1.1.4 >=sys-devel/gcc-config-1.6 virtual/libiconv >=dev-libs/gmp-4.3.2 >=dev-libs/mpc-0.8.1 >=dev-libs/mpfr-2.4.2 graphite? ( >=dev-libs/cloog-0.18.0 >=dev-libs/isl-0.11.1 )
-REQUIRED_USE=next_gcc? ( !prev_gcc )
-RESTRICT=mirror strip
-SLOT=x86_64-pc-linux-gnu
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=5c494b70d9d066643076b1d12aac71ec
diff --git a/metadata/md5-cache/sys-devel/gcc-9999 b/metadata/md5-cache/sys-devel/gcc-9999
deleted file mode 100644
index f5b31da..0000000
--- a/metadata/md5-cache/sys-devel/gcc-9999
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=sys-devel/binutils dev-vcs/git
-DEFINED_PHASES=compile configure info install postinst postrm setup unpack
-DEPEND=>=sys-libs/zlib-1.1.4 >=sys-devel/gcc-config-1.6 virtual/libiconv >=dev-libs/gmp-4.3.2 >=dev-libs/mpc-0.8.1 >=dev-libs/mpfr-2.4.2 graphite? ( >=dev-libs/cloog-0.18.0 >=dev-libs/isl-0.11.1 ) test? ( >=dev-util/dejagnu-1.4.4 >=sys-devel/autogen-5.5.4 ) >=sys-apps/texinfo-4.8 >=sys-devel/bison-1.875
-DESCRIPTION=The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking. This Compiler is based off of Crosstoolv14.
-EAPI=7
-IUSE=gcc_repo gcj git_gcc go graphite gtk hardened hardfp llvm-next llvm-tot mounted_gcc multilib nls cxx openmp test tests +thumb upstream_gcc vanilla vtable_verify +wrapper_ccache next_gcc prev_gcc cros_host cros_workon_tree_
-KEYWORDS=~*
-LICENSE=GPL-3 LGPL-3 libgcc FDL-1.2
-PDEPEND=>=sys-devel/gcc-config-1.7
-PROPERTIES=live
-RDEPEND=>=sys-libs/zlib-1.1.4 >=sys-devel/gcc-config-1.6 virtual/libiconv >=dev-libs/gmp-4.3.2 >=dev-libs/mpc-0.8.1 >=dev-libs/mpfr-2.4.2 graphite? ( >=dev-libs/cloog-0.18.0 >=dev-libs/isl-0.11.1 )
-REQUIRED_USE=next_gcc? ( !prev_gcc )
-RESTRICT=mirror strip
-SLOT=x86_64-pc-linux-gnu
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f507432623753bfbb3e70c14bedcd665
diff --git a/metadata/md5-cache/sys-devel/gcc-bin-4.9.2 b/metadata/md5-cache/sys-devel/gcc-bin-4.9.2
index c465067..5a583e4 100644
--- a/metadata/md5-cache/sys-devel/gcc-bin-4.9.2
+++ b/metadata/md5-cache/sys-devel/gcc-bin-4.9.2
@@ -7,4 +7,4 @@
 RESTRICT=binchecks strip
 SLOT=0
 SRC_URI=gs://chromiumos-sdk/2021/01/aarch64-cros-linux-gnu-2021.01.04.014317.tar.xz gs://chromiumos-sdk/2021/01/armv7a-cros-linux-gnueabihf-2021.01.04.014317.tar.xz gs://chromiumos-sdk/2021/01/x86_64-cros-linux-gnu-2021.01.04.014317.tar.xz
-_md5_=eb9112191c2e4aa40b2f494b80e2cdda
+_md5_=56147de2889d7739af34997345075d1a
diff --git a/metadata/md5-cache/sys-devel/gcc-bin-4.9.2-r1 b/metadata/md5-cache/sys-devel/gcc-bin-4.9.2-r1
deleted file mode 100644
index c465067..0000000
--- a/metadata/md5-cache/sys-devel/gcc-bin-4.9.2-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=install prepare unpack
-DESCRIPTION=Frozen GCC 4.9.2 toolchains for Chrome OS
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os
-KEYWORDS=*
-LICENSE=GPL-3 LGPL-3 libgcc FDL-1.2
-RESTRICT=binchecks strip
-SLOT=0
-SRC_URI=gs://chromiumos-sdk/2021/01/aarch64-cros-linux-gnu-2021.01.04.014317.tar.xz gs://chromiumos-sdk/2021/01/armv7a-cros-linux-gnueabihf-2021.01.04.014317.tar.xz gs://chromiumos-sdk/2021/01/x86_64-cros-linux-gnu-2021.01.04.014317.tar.xz
-_md5_=eb9112191c2e4aa40b2f494b80e2cdda
diff --git a/metadata/md5-cache/sys-devel/gcc-bin-4.9.2-r2 b/metadata/md5-cache/sys-devel/gcc-bin-4.9.2-r2
new file mode 100644
index 0000000..5a583e4
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/gcc-bin-4.9.2-r2
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install prepare unpack
+DESCRIPTION=Frozen GCC 4.9.2 toolchains for Chrome OS
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os
+KEYWORDS=*
+LICENSE=GPL-3 LGPL-3 libgcc FDL-1.2
+RESTRICT=binchecks strip
+SLOT=0
+SRC_URI=gs://chromiumos-sdk/2021/01/aarch64-cros-linux-gnu-2021.01.04.014317.tar.xz gs://chromiumos-sdk/2021/01/armv7a-cros-linux-gnueabihf-2021.01.04.014317.tar.xz gs://chromiumos-sdk/2021/01/x86_64-cros-linux-gnu-2021.01.04.014317.tar.xz
+_md5_=56147de2889d7739af34997345075d1a
diff --git a/metadata/md5-cache/sys-devel/gdb-9.2.20200923 b/metadata/md5-cache/sys-devel/gdb-9.2.20200923
index c963a24..b512bf1 100644
--- a/metadata/md5-cache/sys-devel/gdb-9.2.20200923
+++ b/metadata/md5-cache/sys-devel/gdb-9.2.20200923
@@ -11,4 +11,4 @@
 SLOT=0
 SRC_URI=https://android.googlesource.com/toolchain/gdb/+archive/234e271db36e2a8be022f7a4bbabfa1623a6ae9a.tar.gz -> gdb-9.2.20200923.tar.gz
 _eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
-_md5_=070880b92bd730e1f03a1cc3b54d282a
+_md5_=712204dc60992ef1c996ec4ca4f391e9
diff --git a/metadata/md5-cache/sys-devel/gdb-9.2.20200923-r1 b/metadata/md5-cache/sys-devel/gdb-9.2.20200923-r1
deleted file mode 100644
index c963a24..0000000
--- a/metadata/md5-cache/sys-devel/gdb-9.2.20200923-r1
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare setup test unpack
-DEPEND=server? ( !dev-util/gdbserver ) client? ( sys-libs/readline:0= lzma? ( app-arch/xz-utils ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) ) xml? ( dev-libs/expat ) sys-libs/zlib ) app-arch/xz-utils sys-apps/texinfo client? ( >=sys-libs/ncurses-5.2-r2:0= virtual/yacc test? ( dev-util/dejagnu ) nls? ( sys-devel/gettext ) )
-DESCRIPTION=GNU debugger
-EAPI=6
-HOMEPAGE=https://sourceware.org/gdb/
-IUSE=+client lzma mounted_sources multitarget nls +python +server test vanilla xml python_single_target_python2_7 python_single_target_python3_6
-KEYWORDS=*
-LICENSE=GPL-2 LGPL-2
-RDEPEND=server? ( !dev-util/gdbserver ) client? ( sys-libs/readline:0= lzma? ( app-arch/xz-utils ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) ) xml? ( dev-libs/expat ) sys-libs/zlib )
-REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 python_single_target_python3_6 ) ) || ( client server )
-SLOT=0
-SRC_URI=https://android.googlesource.com/toolchain/gdb/+archive/234e271db36e2a8be022f7a4bbabfa1623a6ae9a.tar.gz -> gdb-9.2.20200923.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
-_md5_=070880b92bd730e1f03a1cc3b54d282a
diff --git a/metadata/md5-cache/sys-devel/gdb-9.2.20200923-r5 b/metadata/md5-cache/sys-devel/gdb-9.2.20200923-r5
new file mode 100644
index 0000000..b512bf1
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/gdb-9.2.20200923-r5
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install postinst prepare setup test unpack
+DEPEND=server? ( !dev-util/gdbserver ) client? ( sys-libs/readline:0= lzma? ( app-arch/xz-utils ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) ) xml? ( dev-libs/expat ) sys-libs/zlib ) app-arch/xz-utils sys-apps/texinfo client? ( >=sys-libs/ncurses-5.2-r2:0= virtual/yacc test? ( dev-util/dejagnu ) nls? ( sys-devel/gettext ) )
+DESCRIPTION=GNU debugger
+EAPI=6
+HOMEPAGE=https://sourceware.org/gdb/
+IUSE=+client lzma mounted_sources multitarget nls +python +server test vanilla xml python_single_target_python2_7 python_single_target_python3_6
+KEYWORDS=*
+LICENSE=GPL-2 LGPL-2
+RDEPEND=server? ( !dev-util/gdbserver ) client? ( sys-libs/readline:0= lzma? ( app-arch/xz-utils ) python? ( python_single_target_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 >=dev-lang/python-exec-2:=[python_targets_python2_7] ) python_single_target_python3_6? ( dev-lang/python:3.6 >=dev-lang/python-exec-2:=[python_targets_python3_6] ) ) xml? ( dev-libs/expat ) sys-libs/zlib )
+REQUIRED_USE=python? ( ^^ ( python_single_target_python2_7 python_single_target_python3_6 ) ) || ( client server )
+SLOT=0
+SRC_URI=https://android.googlesource.com/toolchain/gdb/+archive/234e271db36e2a8be022f7a4bbabfa1623a6ae9a.tar.gz -> gdb-9.2.20200923.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
+_md5_=712204dc60992ef1c996ec4ca4f391e9
diff --git a/metadata/md5-cache/sys-devel/llvm-12.0_pre408248_p20201125 b/metadata/md5-cache/sys-devel/llvm-12.0_pre408248_p20201125
deleted file mode 100644
index ec56f56..0000000
--- a/metadata/md5-cache/sys-devel/llvm-12.0_pre408248_p20201125
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-lang/perl libffi? ( virtual/pkgconfig ) sys-devel/gnuconfig || ( ( dev-lang/python:3.9 dev-python/sphinx[python_targets_python3_9(-),python_single_target_python3_9(+)] doc? ( dev-python/recommonmark[python_targets_python3_9(-),python_single_target_python3_9(+)] ) ) ( dev-lang/python:3.8 dev-python/sphinx[python_targets_python3_8(-),python_single_target_python3_8(+)] doc? ( dev-python/recommonmark[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ) ( dev-lang/python:3.7 dev-python/sphinx[python_targets_python3_7(-),python_single_target_python3_7(+)] doc? ( dev-python/recommonmark[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ) ( dev-lang/python:3.6 dev-python/sphinx[python_targets_python3_6(-),python_single_target_python3_6(+)] doc? ( dev-python/recommonmark[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ) ) dev-util/ninja dev-util/cmake >=dev-vcs/git-1.8.2.1[curl]
-DEFINED_PHASES=compile configure install postinst postrm prepare setup test unpack
-DEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ocaml? ( >=dev-lang/ocaml-4.00.0:0= dev-ml/findlib dev-ml/ocaml-ctypes ) sys-devel/binutils ocaml? ( test? ( dev-ml/ounit ) )
-DESCRIPTION=Low Level Virtual Machine
-EAPI=7
-HOMEPAGE=http://llvm.org/
-IUSE=debug +default-compiler-rt +default-libcxx doc libedit +libffi +llvm-crt llvm-next llvm_pgo_generate +llvm_pgo_use llvm-next_pgo_use llvm-tot multitarget ncurses ocaml test +thinlto xml video_cards_radeon abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=-* amd64
-LICENSE=UoI-NCSA
-PROPERTIES=live
-RDEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ocaml? ( >=dev-lang/ocaml-4.00.0:0= dev-ml/findlib dev-ml/ocaml-ctypes ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r2 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) !<=sys-devel/llvm-8.0_pre !sys-devel/lld !sys-devel/clang
-REQUIRED_USE=llvm_pgo_generate? ( !llvm_pgo_use )
-SLOT=8
-SRC_URI=!llvm-tot? ( !llvm-next? ( llvm_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-f402e682d0ef5598eeffc9a21a691b03e602ff58.tar.xz ) ) llvm-next? ( llvm-next_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-7f6f9f4cf966c78a315d15d6e913c43cfa45c47c.tar.xz ) ) )
-_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=98e2a773427529fa97a43d31a36777ee
diff --git a/metadata/md5-cache/sys-devel/llvm-12.0_pre408248_p20201125-r7 b/metadata/md5-cache/sys-devel/llvm-12.0_pre408248_p20201125-r7
deleted file mode 100644
index ec56f56..0000000
--- a/metadata/md5-cache/sys-devel/llvm-12.0_pre408248_p20201125-r7
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-lang/perl libffi? ( virtual/pkgconfig ) sys-devel/gnuconfig || ( ( dev-lang/python:3.9 dev-python/sphinx[python_targets_python3_9(-),python_single_target_python3_9(+)] doc? ( dev-python/recommonmark[python_targets_python3_9(-),python_single_target_python3_9(+)] ) ) ( dev-lang/python:3.8 dev-python/sphinx[python_targets_python3_8(-),python_single_target_python3_8(+)] doc? ( dev-python/recommonmark[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ) ( dev-lang/python:3.7 dev-python/sphinx[python_targets_python3_7(-),python_single_target_python3_7(+)] doc? ( dev-python/recommonmark[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ) ( dev-lang/python:3.6 dev-python/sphinx[python_targets_python3_6(-),python_single_target_python3_6(+)] doc? ( dev-python/recommonmark[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ) ) dev-util/ninja dev-util/cmake >=dev-vcs/git-1.8.2.1[curl]
-DEFINED_PHASES=compile configure install postinst postrm prepare setup test unpack
-DEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ocaml? ( >=dev-lang/ocaml-4.00.0:0= dev-ml/findlib dev-ml/ocaml-ctypes ) sys-devel/binutils ocaml? ( test? ( dev-ml/ounit ) )
-DESCRIPTION=Low Level Virtual Machine
-EAPI=7
-HOMEPAGE=http://llvm.org/
-IUSE=debug +default-compiler-rt +default-libcxx doc libedit +libffi +llvm-crt llvm-next llvm_pgo_generate +llvm_pgo_use llvm-next_pgo_use llvm-tot multitarget ncurses ocaml test +thinlto xml video_cards_radeon abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=-* amd64
-LICENSE=UoI-NCSA
-PROPERTIES=live
-RDEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ocaml? ( >=dev-lang/ocaml-4.00.0:0= dev-ml/findlib dev-ml/ocaml-ctypes ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r2 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) !<=sys-devel/llvm-8.0_pre !sys-devel/lld !sys-devel/clang
-REQUIRED_USE=llvm_pgo_generate? ( !llvm_pgo_use )
-SLOT=8
-SRC_URI=!llvm-tot? ( !llvm-next? ( llvm_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-f402e682d0ef5598eeffc9a21a691b03e602ff58.tar.xz ) ) llvm-next? ( llvm-next_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-7f6f9f4cf966c78a315d15d6e913c43cfa45c47c.tar.xz ) ) )
-_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=98e2a773427529fa97a43d31a36777ee
diff --git a/metadata/md5-cache/sys-devel/llvm-12.0_pre422132_p20210405 b/metadata/md5-cache/sys-devel/llvm-12.0_pre422132_p20210405
new file mode 100644
index 0000000..bc3284d
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/llvm-12.0_pre422132_p20210405
@@ -0,0 +1,16 @@
+BDEPEND=dev-lang/perl libffi? ( virtual/pkgconfig ) sys-devel/gnuconfig || ( ( dev-lang/python:3.9 dev-python/sphinx[python_targets_python3_9(-),python_single_target_python3_9(+)] doc? ( dev-python/recommonmark[python_targets_python3_9(-),python_single_target_python3_9(+)] ) ) ( dev-lang/python:3.8 dev-python/sphinx[python_targets_python3_8(-),python_single_target_python3_8(+)] doc? ( dev-python/recommonmark[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ) ( dev-lang/python:3.7 dev-python/sphinx[python_targets_python3_7(-),python_single_target_python3_7(+)] doc? ( dev-python/recommonmark[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ) ( dev-lang/python:3.6 dev-python/sphinx[python_targets_python3_6(-),python_single_target_python3_6(+)] doc? ( dev-python/recommonmark[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ) ) dev-util/ninja dev-util/cmake >=dev-vcs/git-1.8.2.1[curl]
+DEFINED_PHASES=compile configure install postinst postrm prepare setup test unpack
+DEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ocaml? ( >=dev-lang/ocaml-4.00.0:0= dev-ml/findlib dev-ml/ocaml-ctypes ) sys-devel/binutils ocaml? ( test? ( dev-ml/ounit ) )
+DESCRIPTION=Low Level Virtual Machine
+EAPI=7
+HOMEPAGE=http://llvm.org/
+IUSE=debug +default-compiler-rt +default-libcxx doc libedit +libffi +llvm-crt llvm-next llvm_pgo_generate +llvm_pgo_use llvm-next_pgo_use llvm-tot multitarget ncurses ocaml test +thinlto xml video_cards_radeon abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=-* amd64
+LICENSE=UoI-NCSA
+PROPERTIES=live
+RDEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ocaml? ( >=dev-lang/ocaml-4.00.0:0= dev-ml/findlib dev-ml/ocaml-ctypes ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r2 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) !<=sys-devel/llvm-8.0_pre !sys-devel/lld !sys-devel/clang
+REQUIRED_USE=llvm_pgo_generate? ( !llvm_pgo_use )
+SLOT=8
+SRC_URI=!llvm-tot? ( !llvm-next? ( llvm_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-cd442157cff4aad209ae532cbf031abbe10bc1df.tar.xz ) ) llvm-next? ( llvm-next_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-cd442157cff4aad209ae532cbf031abbe10bc1df.tar.xz ) ) )
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=2bec9fb76df4273431e645646135c896
diff --git a/metadata/md5-cache/sys-devel/llvm-12.0_pre422132_p20210405-r9 b/metadata/md5-cache/sys-devel/llvm-12.0_pre422132_p20210405-r9
new file mode 100644
index 0000000..bc3284d
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/llvm-12.0_pre422132_p20210405-r9
@@ -0,0 +1,16 @@
+BDEPEND=dev-lang/perl libffi? ( virtual/pkgconfig ) sys-devel/gnuconfig || ( ( dev-lang/python:3.9 dev-python/sphinx[python_targets_python3_9(-),python_single_target_python3_9(+)] doc? ( dev-python/recommonmark[python_targets_python3_9(-),python_single_target_python3_9(+)] ) ) ( dev-lang/python:3.8 dev-python/sphinx[python_targets_python3_8(-),python_single_target_python3_8(+)] doc? ( dev-python/recommonmark[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ) ( dev-lang/python:3.7 dev-python/sphinx[python_targets_python3_7(-),python_single_target_python3_7(+)] doc? ( dev-python/recommonmark[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ) ( dev-lang/python:3.6 dev-python/sphinx[python_targets_python3_6(-),python_single_target_python3_6(+)] doc? ( dev-python/recommonmark[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ) ) dev-util/ninja dev-util/cmake >=dev-vcs/git-1.8.2.1[curl]
+DEFINED_PHASES=compile configure install postinst postrm prepare setup test unpack
+DEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ocaml? ( >=dev-lang/ocaml-4.00.0:0= dev-ml/findlib dev-ml/ocaml-ctypes ) sys-devel/binutils ocaml? ( test? ( dev-ml/ounit ) )
+DESCRIPTION=Low Level Virtual Machine
+EAPI=7
+HOMEPAGE=http://llvm.org/
+IUSE=debug +default-compiler-rt +default-libcxx doc libedit +libffi +llvm-crt llvm-next llvm_pgo_generate +llvm_pgo_use llvm-next_pgo_use llvm-tot multitarget ncurses ocaml test +thinlto xml video_cards_radeon abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=-* amd64
+LICENSE=UoI-NCSA
+PROPERTIES=live
+RDEPEND=sys-libs/zlib:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ocaml? ( >=dev-lang/ocaml-4.00.0:0= dev-ml/findlib dev-ml/ocaml-ctypes ) abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r2 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) !<=sys-devel/llvm-8.0_pre !sys-devel/lld !sys-devel/clang
+REQUIRED_USE=llvm_pgo_generate? ( !llvm_pgo_use )
+SLOT=8
+SRC_URI=!llvm-tot? ( !llvm-next? ( llvm_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-cd442157cff4aad209ae532cbf031abbe10bc1df.tar.xz ) ) llvm-next? ( llvm-next_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-cd442157cff4aad209ae532cbf031abbe10bc1df.tar.xz ) ) )
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=2bec9fb76df4273431e645646135c896
diff --git a/metadata/md5-cache/sys-devel/llvm-9.0.0 b/metadata/md5-cache/sys-devel/llvm-9.0.0
index 273331d..89ac26f 100644
--- a/metadata/md5-cache/sys-devel/llvm-9.0.0
+++ b/metadata/md5-cache/sys-devel/llvm-9.0.0
@@ -12,5 +12,5 @@
 RESTRICT=!test? ( test )
 SLOT=9
 SRC_URI=https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.0/llvm-9.0.0.src.tar.xz !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-9.0.0-manpages.tar.bz2 )
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
 _md5_=4a9693d961063e52a095b798a60cfeb1
diff --git a/metadata/md5-cache/sys-devel/llvm-9.0.0-r3 b/metadata/md5-cache/sys-devel/llvm-9.0.0-r3
deleted file mode 100644
index 273331d..0000000
--- a/metadata/md5-cache/sys-devel/llvm-9.0.0-r3
+++ /dev/null
@@ -1,16 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test
-DEPEND=sys-libs/zlib:0= exegesis? ( dev-libs/libpfm:= ) gold? ( || ( >=sys-devel/binutils-2.31.1-r4:*[plugins] <sys-devel/binutils-2.31.1-r4:*[cxx] ) ) libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xar? ( app-arch/xar ) xml? ( dev-libs/libxml2:2=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-lang/perl || ( >=sys-devel/gcc-3.0 >=sys-devel/llvm-3.5 ( >=sys-freebsd/freebsd-lib-9.1-r10 sys-libs/libcxx ) ) kernel_Darwin? ( <sys-libs/libcxx-9.0.0.9999 >=sys-devel/binutils-apple-5.1 ) doc? ( || ( ( dev-lang/python:3.9 dev-python/recommonmark[python_targets_python3_9(-),python_single_target_python3_9(+)] dev-python/sphinx[python_targets_python3_9(-),python_single_target_python3_9(+)] ) ( dev-lang/python:3.8 dev-python/recommonmark[python_targets_python3_8(-),python_single_target_python3_8(+)] dev-python/sphinx[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ( dev-lang/python:3.7 dev-python/recommonmark[python_targets_python3_7(-),python_single_target_python3_7(+)] dev-python/sphinx[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ( dev-lang/python:3.6 dev-python/recommonmark[python_targets_python3_6(-),python_single_target_python3_6(+)] dev-python/sphinx[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ) ) !doc? ( || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) ) gold? ( sys-libs/binutils-libs ) libffi? ( virtual/pkgconfig ) !!<dev-python/configparser-3.3.0.2 || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) dev-util/ninja >=dev-util/cmake-3.7.0-r1
-DESCRIPTION=Low Level Virtual Machine
-EAPI=6
-HOMEPAGE=https://llvm.org/
-IUSE=debug doc exegesis gold libedit +libffi ncurses test tools xar xml kernel_Darwin llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=UoI-NCSA rc BSD public-domain llvm_targets_ARM? ( LLVM-Grant )
-PDEPEND=sys-devel/llvm-common gold? ( sys-devel/llvmgold )
-RDEPEND=sys-libs/zlib:0= exegesis? ( dev-libs/libpfm:= ) gold? ( || ( >=sys-devel/binutils-2.31.1-r4:*[plugins] <sys-devel/binutils-2.31.1-r4:*[cxx] ) ) libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xar? ( app-arch/xar ) xml? ( dev-libs/libxml2:2=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<sys-devel/llvm-9
-REQUIRED_USE=|| ( llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore )
-RESTRICT=!test? ( test )
-SLOT=9
-SRC_URI=https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.0/llvm-9.0.0.src.tar.xz !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-9.0.0-manpages.tar.bz2 )
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=4a9693d961063e52a095b798a60cfeb1
diff --git a/metadata/md5-cache/sys-devel/llvm-9.0.0-r4 b/metadata/md5-cache/sys-devel/llvm-9.0.0-r4
new file mode 100644
index 0000000..89ac26f
--- /dev/null
+++ b/metadata/md5-cache/sys-devel/llvm-9.0.0-r4
@@ -0,0 +1,16 @@
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=sys-libs/zlib:0= exegesis? ( dev-libs/libpfm:= ) gold? ( || ( >=sys-devel/binutils-2.31.1-r4:*[plugins] <sys-devel/binutils-2.31.1-r4:*[cxx] ) ) libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xar? ( app-arch/xar ) xml? ( dev-libs/libxml2:2=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-lang/perl || ( >=sys-devel/gcc-3.0 >=sys-devel/llvm-3.5 ( >=sys-freebsd/freebsd-lib-9.1-r10 sys-libs/libcxx ) ) kernel_Darwin? ( <sys-libs/libcxx-9.0.0.9999 >=sys-devel/binutils-apple-5.1 ) doc? ( || ( ( dev-lang/python:3.9 dev-python/recommonmark[python_targets_python3_9(-),python_single_target_python3_9(+)] dev-python/sphinx[python_targets_python3_9(-),python_single_target_python3_9(+)] ) ( dev-lang/python:3.8 dev-python/recommonmark[python_targets_python3_8(-),python_single_target_python3_8(+)] dev-python/sphinx[python_targets_python3_8(-),python_single_target_python3_8(+)] ) ( dev-lang/python:3.7 dev-python/recommonmark[python_targets_python3_7(-),python_single_target_python3_7(+)] dev-python/sphinx[python_targets_python3_7(-),python_single_target_python3_7(+)] ) ( dev-lang/python:3.6 dev-python/recommonmark[python_targets_python3_6(-),python_single_target_python3_6(+)] dev-python/sphinx[python_targets_python3_6(-),python_single_target_python3_6(+)] ) ) ) !doc? ( || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) ) gold? ( sys-libs/binutils-libs ) libffi? ( virtual/pkgconfig ) !!<dev-python/configparser-3.3.0.2 || ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) dev-util/ninja >=dev-util/cmake-3.7.0-r1
+DESCRIPTION=Low Level Virtual Machine
+EAPI=6
+HOMEPAGE=https://llvm.org/
+IUSE=debug doc exegesis gold libedit +libffi ncurses test tools xar xml kernel_Darwin llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=UoI-NCSA rc BSD public-domain llvm_targets_ARM? ( LLVM-Grant )
+PDEPEND=sys-devel/llvm-common gold? ( sys-devel/llvmgold )
+RDEPEND=sys-libs/zlib:0= exegesis? ( dev-libs/libpfm:= ) gold? ( || ( >=sys-devel/binutils-2.31.1-r4:*[plugins] <sys-devel/binutils-2.31.1-r4:*[cxx] ) ) libedit? ( dev-libs/libedit:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libffi? ( >=virtual/libffi-3.0.13-r1:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) xar? ( app-arch/xar ) xml? ( dev-libs/libxml2:2=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<sys-devel/llvm-9
+REQUIRED_USE=|| ( llvm_targets_AArch64 llvm_targets_AMDGPU llvm_targets_ARM llvm_targets_BPF llvm_targets_Hexagon llvm_targets_Lanai llvm_targets_Mips llvm_targets_MSP430 llvm_targets_NVPTX llvm_targets_PowerPC llvm_targets_Sparc llvm_targets_SystemZ llvm_targets_WebAssembly llvm_targets_X86 llvm_targets_XCore )
+RESTRICT=!test? ( test )
+SLOT=9
+SRC_URI=https://github.com/llvm/llvm-project/releases/download/llvmorg-9.0.0/llvm-9.0.0.src.tar.xz !doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/llvm-9.0.0-manpages.tar.bz2 )
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	pax-utils	3551398d6ede2b572568832730cc2a45	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=4a9693d961063e52a095b798a60cfeb1
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-bloonchipper-0.0.1-r39 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-bloonchipper-0.0.1-r39
deleted file mode 100644
index e4db059..0000000
--- a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-bloonchipper-0.0.1-r39
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
-DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
-DESCRIPTION=Chrome OS EC release firmware for bloonchipper.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=cros_host cros_workon_tree_6af4af6a53e1bd149f0e4dc8a390a736006af5f1_80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754_f3d026c790bd3d7121bb96ed2a4932360d698a73 ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_6af4af6a53e1bd149f0e4dc8a390a736006af5f1_80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
-RESTRICT=binchecksbinchecks strip
-SLOT=0/0.0.1-r39
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dcf7f3dbc385382e3a8889bf9e7f2752
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-bloonchipper-0.0.1-r48 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-bloonchipper-0.0.1-r48
new file mode 100644
index 0000000..9969f67
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-bloonchipper-0.0.1-r48
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
+DEFINED_PHASES=compile info install prepare setup test unpack
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
+DESCRIPTION=Chrome OS EC release firmware for bloonchipper.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
+IUSE=cros_host cros_workon_tree_57ec13f9095b7a6d49a429f8d6b1c14c6837344d_679fa8b14bd105ad9959a0f82eaa928d5b18890d_f3d026c790bd3d7121bb96ed2a4932360d698a73 ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_57ec13f9095b7a6d49a429f8d6b1c14c6837344d_679fa8b14bd105ad9959a0f82eaa928d5b18890d_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
+RESTRICT=binchecksbinchecks strip
+SLOT=0/0.0.1-r48
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d65f63634c006e9a2750c299fb1b8096
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-bloonchipper-9999 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-bloonchipper-9999
index 73a5ef3b..7a09ebf 100644
--- a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-bloonchipper-9999
+++ b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-bloonchipper-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
 DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
 DESCRIPTION=Chrome OS EC release firmware for bloonchipper.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=cros_host cros_workon_tree_ ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test
+IUSE=cros_host cros_workon_tree_ ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
 RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
 RESTRICT=binchecksbinchecks strip
 SLOT=0/9999
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=cea836d5193bd67772b93ca7276ca90b
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-dartmonkey-0.0.1-r27 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-dartmonkey-0.0.1-r27
deleted file mode 100644
index 7064ea0..0000000
--- a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-dartmonkey-0.0.1-r27
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
-DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
-DESCRIPTION=Chrome OS EC release firmware for dartmonkey.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=cros_host cros_workon_tree_8153273126093f8370ddcbdc06a2a63e7832469b_80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754_f3d026c790bd3d7121bb96ed2a4932360d698a73 ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_8153273126093f8370ddcbdc06a2a63e7832469b_80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
-RESTRICT=binchecksbinchecks strip
-SLOT=0/0.0.1-r27
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=05d4b83cc252bd90245df5dbd7ec4c54
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-dartmonkey-0.0.1-r37 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-dartmonkey-0.0.1-r37
new file mode 100644
index 0000000..78645db
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-dartmonkey-0.0.1-r37
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
+DEFINED_PHASES=compile info install prepare setup test unpack
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
+DESCRIPTION=Chrome OS EC release firmware for dartmonkey.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
+IUSE=cros_host cros_workon_tree_c58fb6b1d5dcbcdf2a513e88558e47031f0ae606_679fa8b14bd105ad9959a0f82eaa928d5b18890d_f3d026c790bd3d7121bb96ed2a4932360d698a73 ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_c58fb6b1d5dcbcdf2a513e88558e47031f0ae606_679fa8b14bd105ad9959a0f82eaa928d5b18890d_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
+RESTRICT=binchecksbinchecks strip
+SLOT=0/0.0.1-r37
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e026d1ed358b8f8ba233cfe866e48e8f
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-dartmonkey-9999 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-dartmonkey-9999
index 73e9288..74cfe95 100644
--- a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-dartmonkey-9999
+++ b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-dartmonkey-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
 DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
 DESCRIPTION=Chrome OS EC release firmware for dartmonkey.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=cros_host cros_workon_tree_ ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test
+IUSE=cros_host cros_workon_tree_ ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
 RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
 RESTRICT=binchecksbinchecks strip
 SLOT=0/9999
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=67657e7d5f0de46bfcd5cec06ebe2c84
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nami-0.0.1-r26 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nami-0.0.1-r26
deleted file mode 100644
index 31c23bd..0000000
--- a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nami-0.0.1-r26
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
-DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
-DESCRIPTION=Chrome OS EC release firmware for nami_fp.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=cros_host cros_workon_tree_8153273126093f8370ddcbdc06a2a63e7832469b_80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754_f3d026c790bd3d7121bb96ed2a4932360d698a73 ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_8153273126093f8370ddcbdc06a2a63e7832469b_80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
-RESTRICT=binchecksbinchecks strip
-SLOT=0/0.0.1-r26
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=836e6babc5367aeae835780ba9f0c7f1
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nami-0.0.1-r36 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nami-0.0.1-r36
new file mode 100644
index 0000000..4cf40c0
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nami-0.0.1-r36
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
+DEFINED_PHASES=compile info install prepare setup test unpack
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
+DESCRIPTION=Chrome OS EC release firmware for nami_fp.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
+IUSE=cros_host cros_workon_tree_c58fb6b1d5dcbcdf2a513e88558e47031f0ae606_679fa8b14bd105ad9959a0f82eaa928d5b18890d_f3d026c790bd3d7121bb96ed2a4932360d698a73 ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_c58fb6b1d5dcbcdf2a513e88558e47031f0ae606_679fa8b14bd105ad9959a0f82eaa928d5b18890d_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
+RESTRICT=binchecksbinchecks strip
+SLOT=0/0.0.1-r36
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2a8bcdb2e09f2cd0e6c37e366537ccc8
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nami-9999 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nami-9999
index 3dc83ff..36e5387 100644
--- a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nami-9999
+++ b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nami-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
 DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
 DESCRIPTION=Chrome OS EC release firmware for nami_fp.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=cros_host cros_workon_tree_ ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test
+IUSE=cros_host cros_workon_tree_ ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
 RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
 RESTRICT=binchecksbinchecks strip
 SLOT=0/9999
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=9ac73720881a7cbc618a5a260e117909
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nocturne-0.0.1-r26 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nocturne-0.0.1-r26
deleted file mode 100644
index 7612806..0000000
--- a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nocturne-0.0.1-r26
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
-DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
-DESCRIPTION=Chrome OS EC release firmware for nocturne_fp.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=cros_host cros_workon_tree_8153273126093f8370ddcbdc06a2a63e7832469b_80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754_f3d026c790bd3d7121bb96ed2a4932360d698a73 ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_8153273126093f8370ddcbdc06a2a63e7832469b_80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live live
-RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
-RESTRICT=binchecksbinchecks strip
-SLOT=0/0.0.1-r26
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f03bccd35a19aa63a915549410491417
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nocturne-0.0.1-r36 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nocturne-0.0.1-r36
new file mode 100644
index 0000000..883b1d1
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nocturne-0.0.1-r36
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
+DEFINED_PHASES=compile info install prepare setup test unpack
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
+DESCRIPTION=Chrome OS EC release firmware for nocturne_fp.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
+IUSE=cros_host cros_workon_tree_c58fb6b1d5dcbcdf2a513e88558e47031f0ae606_679fa8b14bd105ad9959a0f82eaa928d5b18890d_f3d026c790bd3d7121bb96ed2a4932360d698a73 ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_c58fb6b1d5dcbcdf2a513e88558e47031f0ae606_679fa8b14bd105ad9959a0f82eaa928d5b18890d_f3d026c790bd3d7121bb96ed2a4932360d698a73 quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live live
+RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
+RESTRICT=binchecksbinchecks strip
+SLOT=0/0.0.1-r36
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c00479b2576b78488b3a9f7f7a948b49
diff --git a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nocturne-9999 b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nocturne-9999
index 4f64f1f..28e49cf 100644
--- a/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nocturne-9999
+++ b/metadata/md5-cache/sys-firmware/chromeos-fpmcu-release-nocturne-9999
@@ -1,15 +1,15 @@
 BDEPEND=dev-vcs/git dev-vcs/git chromeos-base/chromeos-config-host
 DEFINED_PHASES=compile info install prepare setup test unpack
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
+DEPEND=unibuild? ( chromeos-base/chromeos-config:= ) fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= ) dev-embedded/libftdi:1= fuzzer? ( dev-libs/libprotobuf-mutator:= ) test? ( dev-libs/libprotobuf-mutator:= ) virtual/chromeos-ec-private-files virtual/chromeos-ec-touch-firmware unibuild? ( chromeos-base/chromeos-config:= ) bootblock_in_ec? ( sys-boot/coreboot ) virtual/chromeos-ec-private-files virtual/chromeos-config-bsp
 DESCRIPTION=Chrome OS EC release firmware for nocturne_fp.
 EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md
-IUSE=cros_host cros_workon_tree_ ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild generated_cros_config cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild generated_cros_config fuzzer bootblock_in_ec asan msan ubsan test
+IUSE=cros_host cros_workon_tree_ ec_firmware_bds ec_firmware_cr50 ec_firmware_cyan ec_firmware_dingdong ec_firmware_elm ec_firmware_glkrvp ec_firmware_hadoken ec_firmware_hammer ec_firmware_hoho ec_firmware_jerry ec_firmware_oak ec_firmware_oak_pd ec_firmware_plankton ec_firmware_poppy ec_firmware_samus ec_firmware_samus_pd ec_firmware_strago ec_firmware_wand ec_firmware_zinger ec_firmware_extra_bds ec_firmware_extra_cr50 ec_firmware_extra_cyan ec_firmware_extra_dingdong ec_firmware_extra_elm ec_firmware_extra_glkrvp ec_firmware_extra_hadoken ec_firmware_extra_hammer ec_firmware_extra_hoho ec_firmware_extra_jerry ec_firmware_extra_oak ec_firmware_extra_oak_pd ec_firmware_extra_plankton ec_firmware_extra_poppy ec_firmware_extra_samus ec_firmware_extra_samus_pd ec_firmware_extra_strago ec_firmware_extra_wand ec_firmware_extra_zinger cros_host unibuild cros_host cros_workon_tree_ quiet verbose coreboot-sdk unibuild fuzzer bootblock_in_ec asan msan ubsan test
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live live
 RDEPEND=fuzzer? ( dev-libs/openssl:= dev-libs/protobuf:= ) test? ( dev-libs/openssl:= dev-libs/protobuf:= )
 RESTRICT=binchecksbinchecks strip
 SLOT=0/9999
-_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	dee6af0a414c3a5730d68b69a2bfd296	cros-ec-board	a4af6505ff4c30e36bb75a310eae3535	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	9741bb3901e8a0737ba8ceec69ac354a	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=coreboot-sdk	b3fb569501ebe9ba5b808b9766a0392f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-ec	12499835cbfa67cb99a77b6a1e57e313	cros-ec-board	9439c4f29a6191c8d4c7daa1cf7c4f1d	cros-ec-merge-ro	a4d1c4dc442bcc9b1d3b46603cdafbd4	cros-ec-release	9a95b7bb0fefbcec0803c657f36fa8df	cros-ec-utils	5498f49404d3d05041dad891c1fd163c	cros-unibuild	b24e55d25b82e1b66400619ed7e13f9c	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=47e7f6d092fdf631a7073f8c037db43b
diff --git a/metadata/md5-cache/sys-firmware/fw-engprod-tools-0.0.1-r36 b/metadata/md5-cache/sys-firmware/fw-engprod-tools-0.0.1-r36
deleted file mode 100644
index 4f5c3c4..0000000
--- a/metadata/md5-cache/sys-firmware/fw-engprod-tools-0.0.1-r36
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install postinst setup test unpack
-DEPEND=dev-go/crypto:= dev-go/gapi-discovery:= dev-go/gapi-option:= dev-lang/go
-DESCRIPTION=Tooling related to firmware release testing.
-EAPI=7
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crostestutils/+/HEAD/go/src/firmware/
-IUSE=cros_host cros_workon_tree_4f7ec40608856b0e545c41a19603298affba3429
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=836554b57ed8501ffa83e3eccf9a15cb
diff --git a/metadata/md5-cache/sys-firmware/fw-engprod-tools-0.0.1-r58 b/metadata/md5-cache/sys-firmware/fw-engprod-tools-0.0.1-r58
new file mode 100644
index 0000000..01a82b9
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/fw-engprod-tools-0.0.1-r58
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=compile info install postinst setup test unpack
+DEPEND=dev-go/crypto:= dev-go/gapi-discovery:= dev-go/gapi-option:= dev-lang/go
+DESCRIPTION=Tooling related to firmware release testing.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/crostestutils/+/HEAD/go/src/firmware/
+IUSE=cros_host cros_workon_tree_b2f14f8919270f945f2fe0a397e2de5b19eecac8
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+SLOT=0/0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ec2bbebde238bd851b272845f1f6db34
diff --git a/metadata/md5-cache/sys-firmware/fw-engprod-tools-9999 b/metadata/md5-cache/sys-firmware/fw-engprod-tools-9999
index 4c3b98a..d844043 100644
--- a/metadata/md5-cache/sys-firmware/fw-engprod-tools-9999
+++ b/metadata/md5-cache/sys-firmware/fw-engprod-tools-9999
@@ -9,5 +9,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0/0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-go	157c7bac0e032e424ec1c3316c127db8	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=1249fe4c3ca7559c32d4c54f07f1ce7e
diff --git a/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-4 b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-4
index 3bea7a1..d2addce 100644
--- a/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-4
+++ b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-4
@@ -5,4 +5,4 @@
 LICENSE=Google-Partners-Website
 SLOT=0
 SRC_URI=gs://chromeos-localmirror/distfiles/parade-ps8705a3-firmware-4.tar.xz
-_md5_=43e358a8f965c3c1964bb6725989cbf1
+_md5_=583bd73220dd6e8a4b44f4b507105e2d
diff --git a/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-4-r1 b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-4-r1
index 3bea7a1..d2addce 100644
--- a/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-4-r1
+++ b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-4-r1
@@ -5,4 +5,4 @@
 LICENSE=Google-Partners-Website
 SLOT=0
 SRC_URI=gs://chromeos-localmirror/distfiles/parade-ps8705a3-firmware-4.tar.xz
-_md5_=43e358a8f965c3c1964bb6725989cbf1
+_md5_=583bd73220dd6e8a4b44f4b507105e2d
diff --git a/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-5-r1 b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-5-r1
index fc7e842..b4770dd 100644
--- a/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-5-r1
+++ b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-5-r1
@@ -5,4 +5,4 @@
 LICENSE=Google-Partners-Website
 SLOT=0
 SRC_URI=gs://chromeos-localmirror/distfiles/parade-ps8705a3-firmware-5.tar.xz
-_md5_=43e358a8f965c3c1964bb6725989cbf1
+_md5_=583bd73220dd6e8a4b44f4b507105e2d
diff --git a/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-6-r1 b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-6-r1
index da7f953..114d778 100644
--- a/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-6-r1
+++ b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-6-r1
@@ -5,4 +5,4 @@
 LICENSE=Google-Partners-Website
 SLOT=0
 SRC_URI=gs://chromeos-localmirror/distfiles/parade-ps8705a3-firmware-6.tar.xz
-_md5_=43e358a8f965c3c1964bb6725989cbf1
+_md5_=583bd73220dd6e8a4b44f4b507105e2d
diff --git a/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-8-r1 b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-8-r1
new file mode 100644
index 0000000..0b917b3
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-8-r1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=install
+DESCRIPTION=PS8705-A3 Firmware Binary
+EAPI=7
+KEYWORDS=*
+LICENSE=Google-Partners-Website
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/parade-ps8705a3-firmware-8.tar.xz
+_md5_=583bd73220dd6e8a4b44f4b507105e2d
diff --git a/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-9-r1 b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-9-r1
new file mode 100644
index 0000000..789864d
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/parade-ps8705a3-firmware-9-r1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=install
+DESCRIPTION=PS8705-A3 Firmware Binary
+EAPI=7
+KEYWORDS=*
+LICENSE=Google-Partners-Website
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/parade-ps8705a3-firmware-9.tar.xz
+_md5_=583bd73220dd6e8a4b44f4b507105e2d
diff --git a/metadata/md5-cache/sys-firmware/parade-ps8805a2-firmware-21-r1 b/metadata/md5-cache/sys-firmware/parade-ps8805a2-firmware-21-r1
new file mode 100644
index 0000000..1ea54ef3
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/parade-ps8805a2-firmware-21-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DEPEND=!sys-boot/chromeos-firmware-ps8805
+DESCRIPTION=PS8805-A2 Firmware Binary
+EAPI=6
+KEYWORDS=*
+LICENSE=Google-Partners-Website
+RDEPEND=!sys-boot/chromeos-firmware-ps8805
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/parade-ps8805a2-firmware-21.tar.xz
+_md5_=2834b2fa3da06c9e70507fd28d049b74
diff --git a/metadata/md5-cache/sys-firmware/parade-ps8815a1-firmware-18-r1 b/metadata/md5-cache/sys-firmware/parade-ps8815a1-firmware-18-r1
new file mode 100644
index 0000000..5fd1d65
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/parade-ps8815a1-firmware-18-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DEPEND=!sys-boot/chromeos-firmware-ps8815
+DESCRIPTION=PS8815-A1 Firmware Binary
+EAPI=7
+KEYWORDS=*
+LICENSE=Google-Partners-Website
+RDEPEND=!sys-boot/chromeos-firmware-ps8815
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/parade-ps8815a1-firmware-18.tar.xz
+_md5_=8debdfff48d382b98e4d88855afe96ef
diff --git a/metadata/md5-cache/sys-firmware/parade-ps8815a2-firmware-19 b/metadata/md5-cache/sys-firmware/parade-ps8815a2-firmware-19
new file mode 100644
index 0000000..362fe21
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/parade-ps8815a2-firmware-19
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DEPEND=!sys-boot/chromeos-firmware-ps8815
+DESCRIPTION=PS8815-A2 Firmware Binary
+EAPI=7
+KEYWORDS=*
+LICENSE=Google-Partners-Website
+RDEPEND=!sys-boot/chromeos-firmware-ps8815
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles/parade-ps8815a2-firmware-19.tar.xz
+_md5_=ae3ec3fb799bf88351dda9e02c460968
diff --git a/metadata/md5-cache/sys-firmware/servo-firmware-0.0.1 b/metadata/md5-cache/sys-firmware/servo-firmware-0.0.1
index bd96dab..15d27f6 100644
--- a/metadata/md5-cache/sys-firmware/servo-firmware-0.0.1
+++ b/metadata/md5-cache/sys-firmware/servo-firmware-0.0.1
@@ -6,5 +6,5 @@
 LICENSE=BSD-Google
 RDEPEND=!<chromeos-base/ec-devutils-0.0.2
 SLOT=0
-SRC_URI=gs://chromeos-localmirror/distfiles//c2d2_v2.4.35-f1113c92b.tar.gz gs://chromeos-localmirror/distfiles//servo_micro_v2.4.35-f1113c92b.tar.gz gs://chromeos-localmirror/distfiles//servo_v4_v2.4.35-f1113c92b.tar.gz gs://chromeos-localmirror/distfiles//servo_v4p1_v2.0.5159-529612865.tar.xz gs://chromeos-localmirror/distfiles//sweetberry_v2.3.7-096c7ee84.tar.gz
-_md5_=e1f49680248639e381face0cd2007100
+SRC_URI=gs://chromeos-localmirror/distfiles//c2d2_v2.4.35-f1113c92b.tar.gz gs://chromeos-localmirror/distfiles//servo_micro_v2.4.57-ce329f64f.tar.xz gs://chromeos-localmirror/distfiles//servo_micro_v2.4.35-f1113c92b.tar.gz gs://chromeos-localmirror/distfiles//servo_v4_v2.4.58-c37246f9c.tar.xz gs://chromeos-localmirror/distfiles//servo_v4_v2.4.57-ce329f64f.tar.xz gs://chromeos-localmirror/distfiles//servo_v4p1_v2.0.8584+1a7e7e64c.tar.xz gs://chromeos-localmirror/distfiles//servo_v4p1_v2.0.7721-8af602eee.tar.xz gs://chromeos-localmirror/distfiles//sweetberry_v2.3.7-096c7ee84.tar.gz
+_md5_=d295888664b7b977e9a6420fb9f5c156
diff --git a/metadata/md5-cache/sys-firmware/servo-firmware-0.0.1-r26 b/metadata/md5-cache/sys-firmware/servo-firmware-0.0.1-r26
deleted file mode 100644
index bd96dab..0000000
--- a/metadata/md5-cache/sys-firmware/servo-firmware-0.0.1-r26
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Firmware for tools based on Chromium OS EC
-EAPI=5
-HOMEPAGE=https://www.chromium.org/chromium-os/ec-development
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=!<chromeos-base/ec-devutils-0.0.2
-SLOT=0
-SRC_URI=gs://chromeos-localmirror/distfiles//c2d2_v2.4.35-f1113c92b.tar.gz gs://chromeos-localmirror/distfiles//servo_micro_v2.4.35-f1113c92b.tar.gz gs://chromeos-localmirror/distfiles//servo_v4_v2.4.35-f1113c92b.tar.gz gs://chromeos-localmirror/distfiles//servo_v4p1_v2.0.5159-529612865.tar.xz gs://chromeos-localmirror/distfiles//sweetberry_v2.3.7-096c7ee84.tar.gz
-_md5_=e1f49680248639e381face0cd2007100
diff --git a/metadata/md5-cache/sys-firmware/servo-firmware-0.0.1-r33 b/metadata/md5-cache/sys-firmware/servo-firmware-0.0.1-r33
new file mode 100644
index 0000000..15d27f6
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/servo-firmware-0.0.1-r33
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=Firmware for tools based on Chromium OS EC
+EAPI=5
+HOMEPAGE=https://www.chromium.org/chromium-os/ec-development
+KEYWORDS=*
+LICENSE=BSD-Google
+RDEPEND=!<chromeos-base/ec-devutils-0.0.2
+SLOT=0
+SRC_URI=gs://chromeos-localmirror/distfiles//c2d2_v2.4.35-f1113c92b.tar.gz gs://chromeos-localmirror/distfiles//servo_micro_v2.4.57-ce329f64f.tar.xz gs://chromeos-localmirror/distfiles//servo_micro_v2.4.35-f1113c92b.tar.gz gs://chromeos-localmirror/distfiles//servo_v4_v2.4.58-c37246f9c.tar.xz gs://chromeos-localmirror/distfiles//servo_v4_v2.4.57-ce329f64f.tar.xz gs://chromeos-localmirror/distfiles//servo_v4p1_v2.0.8584+1a7e7e64c.tar.xz gs://chromeos-localmirror/distfiles//servo_v4p1_v2.0.7721-8af602eee.tar.xz gs://chromeos-localmirror/distfiles//sweetberry_v2.3.7-096c7ee84.tar.gz
+_md5_=d295888664b7b977e9a6420fb9f5c156
diff --git a/metadata/md5-cache/sys-firmware/thinkpad-usbc-gen2-dock-0.0.1-r1 b/metadata/md5-cache/sys-firmware/thinkpad-usbc-gen2-dock-0.0.1-r1
deleted file mode 100644
index a904460..0000000
--- a/metadata/md5-cache/sys-firmware/thinkpad-usbc-gen2-dock-0.0.1-r1
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DESCRIPTION=Installs firmware update files used by fwupd.
-EAPI=7
-HOMEPAGE=https://fwupd.org/downloads
-IUSE=cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=MIT
-PROPERTIES=live
-RDEPEND=sys-apps/fwupd
-SLOT=0/0.0.1-r1
-SRC_URI=https://fwupd.org/downloads/06998fa5a9590b7ed0f90ad679ba48a27feba097095ae084e830e5106767d29a-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab https://fwupd.org/downloads/d619a3c051e33df53094e274fbb672bdfa50d19d950ec337de36a68fe682fe18-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab https://fwupd.org/downloads/a5c8f0883f6089b780a25490b53eb8d5d6ba8a1d109ce44f18bd2b2ef3ffe315-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab https://fwupd.org/downloads/fbed8f8eee1e125a47a627724065e36ef8d7d0342c8d03fdba60616c4de3554e-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab https://fwupd.org/downloads/d72204e110613bfacd65ca8e8783bf7f07272f4dfdb785cf1bd1c94b83ac5d33-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
-_md5_=7a6bf5b3dcfb5d65aea8119b50f998f8
diff --git a/metadata/md5-cache/sys-firmware/thinkpad-usbc-gen2-dock-0.0.1-r4 b/metadata/md5-cache/sys-firmware/thinkpad-usbc-gen2-dock-0.0.1-r4
new file mode 100644
index 0000000..6a496e5
--- /dev/null
+++ b/metadata/md5-cache/sys-firmware/thinkpad-usbc-gen2-dock-0.0.1-r4
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git virtual/pkgconfig
+DEFINED_PHASES=info install setup unpack
+DESCRIPTION=Installs firmware update files used by fwupd.
+EAPI=7
+HOMEPAGE=https://fwupd.org/downloads
+IUSE=cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1 remote
+KEYWORDS=*
+LICENSE=LVFS-Vendor-Agreement-v1
+PROPERTIES=live
+RDEPEND=sys-apps/fwupd
+RESTRICT=mirror
+SLOT=0/0.0.1-r4
+SRC_URI=gs://chromeos-localmirror/lvfs//29835d73b07590db964d796e508058e512c55ff0ca2a75b9c8ac2ed1fe305de5-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab gs://chromeos-localmirror/lvfs//ac37f23af002e91df11094b08fd2e076cf9c8cb4f08930be8eefe35850097a60-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab gs://chromeos-localmirror/lvfs//2e0bf8aaf9c63ca11cfe3444d032277c21ec0d678e5963123a8b33e5dcd37d99-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab gs://chromeos-localmirror/lvfs//9a13f9fefa59ae42c06e9861dc20a0e53e35d471c6a1c05d6426a011b0fada30-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab gs://chromeos-localmirror/lvfs//f241ce8c26d83546d5bfd1d67b70b9324f32ea4790acebb2a5e7d5a071eaaa85-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-fwupd	b20d3a2d6dece1bc3030df7fcd82c829	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
+_md5_=da69f977a683ec08425d2e320d77a898
diff --git a/metadata/md5-cache/sys-firmware/thinkpad-usbc-gen2-dock-9999 b/metadata/md5-cache/sys-firmware/thinkpad-usbc-gen2-dock-9999
index 2c6821e..e426af9 100644
--- a/metadata/md5-cache/sys-firmware/thinkpad-usbc-gen2-dock-9999
+++ b/metadata/md5-cache/sys-firmware/thinkpad-usbc-gen2-dock-9999
@@ -1,14 +1,15 @@
-BDEPEND=virtual/pkgconfig dev-vcs/git
+BDEPEND=dev-vcs/git virtual/pkgconfig
 DEFINED_PHASES=info install setup unpack
 DESCRIPTION=Installs firmware update files used by fwupd.
 EAPI=7
 HOMEPAGE=https://fwupd.org/downloads
-IUSE=cros_host cros_workon_tree_
+IUSE=cros_host cros_workon_tree_ remote
 KEYWORDS=~*
-LICENSE=MIT
+LICENSE=LVFS-Vendor-Agreement-v1
 PROPERTIES=live
 RDEPEND=sys-apps/fwupd
+RESTRICT=mirror
 SLOT=0/9999
-SRC_URI=https://fwupd.org/downloads/06998fa5a9590b7ed0f90ad679ba48a27feba097095ae084e830e5106767d29a-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab https://fwupd.org/downloads/d619a3c051e33df53094e274fbb672bdfa50d19d950ec337de36a68fe682fe18-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab https://fwupd.org/downloads/a5c8f0883f6089b780a25490b53eb8d5d6ba8a1d109ce44f18bd2b2ef3ffe315-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab https://fwupd.org/downloads/fbed8f8eee1e125a47a627724065e36ef8d7d0342c8d03fdba60616c4de3554e-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab https://fwupd.org/downloads/d72204e110613bfacd65ca8e8783bf7f07272f4dfdb785cf1bd1c94b83ac5d33-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
-_md5_=9e382047eb967319c5ccdf52d28345f3
+SRC_URI=gs://chromeos-localmirror/lvfs//29835d73b07590db964d796e508058e512c55ff0ca2a75b9c8ac2ed1fe305de5-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab gs://chromeos-localmirror/lvfs//ac37f23af002e91df11094b08fd2e076cf9c8cb4f08930be8eefe35850097a60-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab gs://chromeos-localmirror/lvfs//2e0bf8aaf9c63ca11cfe3444d032277c21ec0d678e5963123a8b33e5dcd37d99-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab gs://chromeos-localmirror/lvfs//9a13f9fefa59ae42c06e9861dc20a0e53e35d471c6a1c05d6426a011b0fada30-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab gs://chromeos-localmirror/lvfs//f241ce8c26d83546d5bfd1d67b70b9324f32ea4790acebb2a5e7d5a071eaaa85-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-fwupd	b20d3a2d6dece1bc3030df7fcd82c829	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6
+_md5_=172a48f2c4b58caefecc4f16780aa4cf
diff --git a/metadata/md5-cache/sys-fs/archivemount-0.8.12 b/metadata/md5-cache/sys-fs/archivemount-0.8.12
new file mode 100644
index 0000000..3e40b73
--- /dev/null
+++ b/metadata/md5-cache/sys-fs/archivemount-0.8.12
@@ -0,0 +1,13 @@
+BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815
+DEFINED_PHASES=prepare
+DEPEND=app-arch/libarchive:= sys-fs/fuse:0 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Mount archives using libarchive and FUSE
+EAPI=7
+HOMEPAGE=https://www.cybernoia.de/software/archivemount.html https://github.com/cybernoid/archivemount
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=app-arch/libarchive:= sys-fs/fuse:0
+SLOT=0
+SRC_URI=https://www.cybernoia.de/software/archivemount/archivemount-0.8.12.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=86c151cf36118e869646a0d772e71d04
diff --git a/metadata/md5-cache/sys-fs/archivemount-0.8.12-r2 b/metadata/md5-cache/sys-fs/archivemount-0.8.12-r2
new file mode 100644
index 0000000..3e40b73
--- /dev/null
+++ b/metadata/md5-cache/sys-fs/archivemount-0.8.12-r2
@@ -0,0 +1,13 @@
+BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815
+DEFINED_PHASES=prepare
+DEPEND=app-arch/libarchive:= sys-fs/fuse:0 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Mount archives using libarchive and FUSE
+EAPI=7
+HOMEPAGE=https://www.cybernoia.de/software/archivemount.html https://github.com/cybernoid/archivemount
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=app-arch/libarchive:= sys-fs/fuse:0
+SLOT=0
+SRC_URI=https://www.cybernoia.de/software/archivemount/archivemount-0.8.12.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=86c151cf36118e869646a0d772e71d04
diff --git a/metadata/md5-cache/sys-fs/fuse-2.9.8-r3 b/metadata/md5-cache/sys-fs/fuse-2.9.8-r4
similarity index 100%
rename from metadata/md5-cache/sys-fs/fuse-2.9.8-r3
rename to metadata/md5-cache/sys-fs/fuse-2.9.8-r4
diff --git a/metadata/md5-cache/sys-fs/fuse-common-3.2.6-r2 b/metadata/md5-cache/sys-fs/fuse-common-3.2.6-r2
index d4cd38e..0f00a76 100644
--- a/metadata/md5-cache/sys-fs/fuse-common-3.2.6-r2
+++ b/metadata/md5-cache/sys-fs/fuse-common-3.2.6-r2
@@ -1,5 +1,5 @@
 DEFINED_PHASES=compile configure install prepare test
-DEPEND=virtual/pkgconfig >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 virtual/pkgconfig
+DEPEND=virtual/pkgconfig >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array virtual/pkgconfig
 DESCRIPTION=Common files for multiple slots of sys-fs/fuse
 EAPI=6
 HOMEPAGE=https://github.com/libfuse/libfuse
@@ -9,5 +9,5 @@
 RESTRICT=test
 SLOT=0
 SRC_URI=https://github.com/libfuse/libfuse/releases/download/fuse-3.2.6/fuse-3.2.6.tar.xz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=cb9d7e5d1d87b00e0fcc960b3c2d60a0
diff --git a/metadata/md5-cache/sys-fs/fuse-exfat-1.3.0-r1 b/metadata/md5-cache/sys-fs/fuse-exfat-1.3.0-r1
new file mode 100644
index 0000000..eb667cb
--- /dev/null
+++ b/metadata/md5-cache/sys-fs/fuse-exfat-1.3.0-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=install
+DEPEND=sys-fs/fuse:0 virtual/pkgconfig
+DESCRIPTION=exFAT filesystem FUSE module
+EAPI=6
+HOMEPAGE=https://github.com/relan/exfat
+KEYWORDS=*
+LICENSE=GPL-2+
+RDEPEND=sys-fs/fuse:0
+SLOT=0
+SRC_URI=https://github.com/relan/exfat/releases/download/v1.3.0/fuse-exfat-1.3.0.tar.gz
+_md5_=b8540ee9dbbe99291bdb079122c4d3ba
diff --git a/metadata/md5-cache/sys-fs/fuse-zip-0.7.0-r12 b/metadata/md5-cache/sys-fs/fuse-zip-0.7.0-r12
deleted file mode 100644
index d794cb0..0000000
--- a/metadata/md5-cache/sys-fs/fuse-zip-0.7.0-r12
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install
-DEPEND=dev-libs/libzip:= sys-fs/fuse:0
-DESCRIPTION=FUSE file system to navigate, extract, create and modify ZIP archives
-EAPI=7
-HOMEPAGE=https://bitbucket.org/agalanin/fuse-zip
-KEYWORDS=*
-LICENSE=GPL-3
-RDEPEND=dev-libs/libzip:= sys-fs/fuse:0
-RESTRICT=test
-SLOT=0
-SRC_URI=https://bitbucket.org/agalanin/fuse-zip/downloads/fuse-zip-0.7.0.tar.gz
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=ea47a220d7812f307dcfc5724596ad52
diff --git a/metadata/md5-cache/sys-fs/fuse-zip-0.7.0-r15 b/metadata/md5-cache/sys-fs/fuse-zip-0.7.0-r15
new file mode 100644
index 0000000..06c139d
--- /dev/null
+++ b/metadata/md5-cache/sys-fs/fuse-zip-0.7.0-r15
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile install
+DEPEND=chromeos-base/chrome-icu dev-libs/libzip:= sys-fs/fuse:0
+DESCRIPTION=FUSE file system to navigate, extract, create and modify ZIP archives
+EAPI=7
+HOMEPAGE=https://bitbucket.org/agalanin/fuse-zip
+IUSE=asan coverage fuzzer msan tsan ubsan
+KEYWORDS=*
+LICENSE=GPL-3
+RDEPEND=chromeos-base/chrome-icu dev-libs/libzip:= sys-fs/fuse:0
+RESTRICT=test
+SLOT=0
+SRC_URI=https://bitbucket.org/agalanin/fuse-zip/downloads/fuse-zip-0.7.0.tar.gz
+_eclasses_=cros-sanitizers	fcc8f96c24bfce0853f07c00f65fb50a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1b5a14db6ebaaf6ef3eafd3d1e143a80
diff --git a/metadata/md5-cache/sys-fs/lxcfs-4.0.8 b/metadata/md5-cache/sys-fs/lxcfs-4.0.8
new file mode 100644
index 0000000..658ff13
--- /dev/null
+++ b/metadata/md5-cache/sys-fs/lxcfs-4.0.8
@@ -0,0 +1,15 @@
+BDEPEND=sys-apps/help2man verify-sig? ( app-crypt/openpgp-keys-linuxcontainers ) >=app-portage/elt-patches-20170815 virtual/pkgconfig verify-sig? ( app-crypt/gnupg >=app-portage/gemato-16 )
+DEFINED_PHASES=configure install prepare test unpack
+DEPEND=dev-libs/glib:2 sys-fs/fuse:0 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=FUSE filesystem for LXC
+EAPI=7
+HOMEPAGE=https://linuxcontainers.org/lxcfs/introduction/ https://github.com/lxc/lxcfs/
+IUSE=verify-sig
+KEYWORDS=*
+LICENSE=Apache-2.0
+RDEPEND=dev-libs/glib:2 sys-fs/fuse:0
+RESTRICT=test
+SLOT=4
+SRC_URI=https://linuxcontainers.org/downloads/lxcfs/lxcfs-4.0.8.tar.gz verify-sig? ( https://linuxcontainers.org/downloads/lxcfs/lxcfs-4.0.8.tar.gz.asc )
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	verify-sig	40b4f4f782cf67118f594ce604cc4c0a
+_md5_=cb9d187c27ec7076160f1e8be316dd23
diff --git a/metadata/md5-cache/sys-fs/mtd-utils-1.5.0 b/metadata/md5-cache/sys-fs/mtd-utils-1.5.0
deleted file mode 100644
index c18a149..0000000
--- a/metadata/md5-cache/sys-fs/mtd-utils-1.5.0
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile install prepare unpack
-DEPEND=!sys-fs/mtd dev-libs/lzo sys-libs/zlib >=sys-apps/util-linux-2.16 xattr? ( sys-apps/acl )
-DESCRIPTION=MTD userspace tools (NFTL, JFFS2, NAND, FTL, UBI)
-EAPI=3
-HOMEPAGE=http://git.infradead.org/?p=mtd-utils.git;a=summary
-IUSE=xattr
-KEYWORDS=amd64 arm ~mips ppc x86 ~amd64-linux ~arm-linux ~x86-linux
-LICENSE=GPL-2
-RDEPEND=!sys-fs/mtd dev-libs/lzo sys-libs/zlib >=sys-apps/util-linux-2.16
-SLOT=0
-SRC_URI=http://git.infradead.org/mtd-utils.git/snapshot/v1.5.0.tar.gz -> mtd-utils-1.5.0.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	vcs-snapshot	3be1ab44131e8c0bbdaa75823008444b
-_md5_=2c35362c914dfe86e00af1a574bf58d8
diff --git a/metadata/md5-cache/sys-fs/rar2fs-1.29.1-r1 b/metadata/md5-cache/sys-fs/rar2fs-1.29.1-r1
deleted file mode 100644
index cc731ac..0000000
--- a/metadata/md5-cache/sys-fs/rar2fs-1.29.1-r1
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=>=app-portage/elt-patches-20170815
-DEFINED_PHASES=configure prepare
-DEPEND=>=app-arch/unrar-5:= sys-fs/fuse:0 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=A FUSE based filesystem that can mount one or multiple RAR archive(s)
-EAPI=7
-HOMEPAGE=https://hasse69.github.io/rar2fs/ https://github.com/hasse69/rar2fs
-IUSE=debug
-KEYWORDS=*
-LICENSE=GPL-3
-RDEPEND=>=app-arch/unrar-5:= sys-fs/fuse:0
-SLOT=0
-SRC_URI=https://github.com/hasse69/rar2fs/releases/download/v1.29.1/rar2fs-1.29.1.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=93c76dbc2698dbb4f2297154ec98b293
diff --git a/metadata/md5-cache/sys-fs/rar2fs-1.29.5-r1 b/metadata/md5-cache/sys-fs/rar2fs-1.29.5-r1
new file mode 100644
index 0000000..03cdc1f
--- /dev/null
+++ b/metadata/md5-cache/sys-fs/rar2fs-1.29.5-r1
@@ -0,0 +1,14 @@
+BDEPEND=>=app-portage/elt-patches-20170815
+DEFINED_PHASES=configure prepare
+DEPEND=>=app-arch/unrar-5:= sys-fs/fuse:0 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=A FUSE based filesystem that can mount one or multiple RAR archive(s)
+EAPI=7
+HOMEPAGE=https://hasse69.github.io/rar2fs/ https://github.com/hasse69/rar2fs
+IUSE=debug
+KEYWORDS=*
+LICENSE=GPL-3
+RDEPEND=>=app-arch/unrar-5:= sys-fs/fuse:0
+SLOT=0
+SRC_URI=https://github.com/hasse69/rar2fs/releases/download/v1.29.5/rar2fs-1.29.5.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2bcce997f0b64a607703c2f26da81b41
diff --git a/metadata/md5-cache/sys-fs/squashfs-tools-4.3 b/metadata/md5-cache/sys-fs/squashfs-tools-4.3
deleted file mode 100644
index 43d1994..0000000
--- a/metadata/md5-cache/sys-fs/squashfs-tools-4.3
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare
-DEPEND=sys-libs/zlib !xz? ( !lzo? ( sys-libs/zlib ) ) lz4? ( app-arch/lz4 ) lzma? ( app-arch/xz-utils ) lzo? ( dev-libs/lzo ) xattr? ( selinux? ( sys-libs/libselinux ) sys-apps/attr ) xz? ( app-arch/xz-utils )
-DESCRIPTION=Tool for creating compressed filesystem type squashfs
-EAPI=5
-HOMEPAGE=http://squashfs.sourceforge.net
-IUSE=lz4 lzma lzo selinux xattr +xz
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=sys-libs/zlib !xz? ( !lzo? ( sys-libs/zlib ) ) lz4? ( app-arch/lz4 ) lzma? ( app-arch/xz-utils ) lzo? ( dev-libs/lzo ) xattr? ( selinux? ( sys-libs/libselinux ) sys-apps/attr ) xz? ( app-arch/xz-utils )
-REQUIRED_USE=selinux? ( xattr )
-SLOT=0
-SRC_URI=mirror://sourceforge/squashfs/squashfs4.3.tar.gz mirror://debian/pool/main/s/squashfs-tools/squashfs-tools_4.3-3.debian.tar.xz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=7a1f46fd0492f85f45c1640743e8ed07
diff --git a/metadata/md5-cache/sys-fs/squashfs-tools-4.3-r11 b/metadata/md5-cache/sys-fs/squashfs-tools-4.3-r11
deleted file mode 100644
index 43d1994..0000000
--- a/metadata/md5-cache/sys-fs/squashfs-tools-4.3-r11
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare
-DEPEND=sys-libs/zlib !xz? ( !lzo? ( sys-libs/zlib ) ) lz4? ( app-arch/lz4 ) lzma? ( app-arch/xz-utils ) lzo? ( dev-libs/lzo ) xattr? ( selinux? ( sys-libs/libselinux ) sys-apps/attr ) xz? ( app-arch/xz-utils )
-DESCRIPTION=Tool for creating compressed filesystem type squashfs
-EAPI=5
-HOMEPAGE=http://squashfs.sourceforge.net
-IUSE=lz4 lzma lzo selinux xattr +xz
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=sys-libs/zlib !xz? ( !lzo? ( sys-libs/zlib ) ) lz4? ( app-arch/lz4 ) lzma? ( app-arch/xz-utils ) lzo? ( dev-libs/lzo ) xattr? ( selinux? ( sys-libs/libselinux ) sys-apps/attr ) xz? ( app-arch/xz-utils )
-REQUIRED_USE=selinux? ( xattr )
-SLOT=0
-SRC_URI=mirror://sourceforge/squashfs/squashfs4.3.tar.gz mirror://debian/pool/main/s/squashfs-tools/squashfs-tools_4.3-3.debian.tar.xz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=7a1f46fd0492f85f45c1640743e8ed07
diff --git a/metadata/md5-cache/sys-fs/squashfs-tools-4.4_p1 b/metadata/md5-cache/sys-fs/squashfs-tools-4.4_p1
new file mode 100644
index 0000000..219efdb
--- /dev/null
+++ b/metadata/md5-cache/sys-fs/squashfs-tools-4.4_p1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare
+DEPEND=sys-libs/zlib lz4? ( app-arch/lz4 ) lzma? ( app-arch/xz-utils ) lzo? ( dev-libs/lzo ) xattr? ( selinux? ( sys-libs/libselinux ) sys-apps/attr ) zstd? ( app-arch/zstd )
+DESCRIPTION=tools to create and extract Squashfs filesystems
+EAPI=7
+HOMEPAGE=https://github.com/plougher/squashfs-tools/
+IUSE=debug lz4 lzma lzo selinux xattr zstd
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=sys-libs/zlib lz4? ( app-arch/lz4 ) lzma? ( app-arch/xz-utils ) lzo? ( dev-libs/lzo ) xattr? ( selinux? ( sys-libs/libselinux ) sys-apps/attr ) zstd? ( app-arch/zstd )
+REQUIRED_USE=selinux? ( xattr )
+SLOT=0
+SRC_URI=https://github.com/plougher/squashfs-tools/archive/4.4-git.1.tar.gz -> squashfs-tools-4.4-git.1.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7505acff5443ca524f3546fef0713ae2
diff --git a/metadata/md5-cache/sys-fs/squashfs-tools-4.4_p1-r2 b/metadata/md5-cache/sys-fs/squashfs-tools-4.4_p1-r2
new file mode 100644
index 0000000..219efdb
--- /dev/null
+++ b/metadata/md5-cache/sys-fs/squashfs-tools-4.4_p1-r2
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare
+DEPEND=sys-libs/zlib lz4? ( app-arch/lz4 ) lzma? ( app-arch/xz-utils ) lzo? ( dev-libs/lzo ) xattr? ( selinux? ( sys-libs/libselinux ) sys-apps/attr ) zstd? ( app-arch/zstd )
+DESCRIPTION=tools to create and extract Squashfs filesystems
+EAPI=7
+HOMEPAGE=https://github.com/plougher/squashfs-tools/
+IUSE=debug lz4 lzma lzo selinux xattr zstd
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=sys-libs/zlib lz4? ( app-arch/lz4 ) lzma? ( app-arch/xz-utils ) lzo? ( dev-libs/lzo ) xattr? ( selinux? ( sys-libs/libselinux ) sys-apps/attr ) zstd? ( app-arch/zstd )
+REQUIRED_USE=selinux? ( xattr )
+SLOT=0
+SRC_URI=https://github.com/plougher/squashfs-tools/archive/4.4-git.1.tar.gz -> squashfs-tools-4.4-git.1.tar.gz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7505acff5443ca524f3546fef0713ae2
diff --git a/metadata/md5-cache/sys-fs/udev-225-r30 b/metadata/md5-cache/sys-fs/udev-225-r30
deleted file mode 100644
index 9a20dfb..0000000
--- a/metadata/md5-cache/sys-fs/udev-225-r30
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install postinst prepare test
-DEPEND=>=sys-apps/util-linux-2.24 sys-libs/libcap[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] acl? ( sys-apps/acl ) kmod? ( >=sys-apps/kmod-16 ) selinux? ( >=sys-libs/libselinux-2.1.9 ) !<sys-libs/glibc-2.11 !sys-apps/gentoo-systemd-integration !sys-apps/systemd abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) dev-util/gperf >=dev-util/intltool-0.50 >=sys-apps/coreutils-8.16 virtual/os-headers virtual/pkgconfig >=sys-devel/make-3.82-r4 >=sys-kernel/linux-headers-3.9 app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.5 app-text/docbook-xsl-stylesheets dev-libs/libxslt >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig sys-apps/baselayout
-DESCRIPTION=Linux dynamic and persistent device naming support (aka userspace devfs)
-EAPI=5
-HOMEPAGE=https://www.freedesktop.org/wiki/Software/systemd
-IUSE=acl +kmod openrc selinux static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=LGPL-2.1 MIT GPL-2
-PDEPEND=>=sys-apps/hwids-20140304[udev] openrc? ( >=sys-fs/udev-init-scripts-26 )
-RDEPEND=>=sys-apps/util-linux-2.24 sys-libs/libcap[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] acl? ( sys-apps/acl ) kmod? ( >=sys-apps/kmod-16 ) selinux? ( >=sys-libs/libselinux-2.1.9 ) !<sys-libs/glibc-2.11 !sys-apps/gentoo-systemd-integration !sys-apps/systemd abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) !<sec-policy/selinux-base-2.20120725-r10 sys-apps/baselayout
-RESTRICT=test
-SLOT=0
-SRC_URI=https://github.com/systemd/systemd/archive/v225.tar.gz -> systemd-225.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
-_md5_=208237664f5c26140f7dc8c926704e0c
diff --git a/metadata/md5-cache/sys-fs/udev-225-r35 b/metadata/md5-cache/sys-fs/udev-225-r35
new file mode 100644
index 0000000..1efeacc
--- /dev/null
+++ b/metadata/md5-cache/sys-fs/udev-225-r35
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst prepare test
+DEPEND=>=sys-apps/util-linux-2.24 sys-libs/libcap[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] acl? ( sys-apps/acl ) kmod? ( >=sys-apps/kmod-16 ) selinux? ( >=sys-libs/libselinux-2.1.9 ) !<sys-libs/glibc-2.11 !sys-apps/gentoo-systemd-integration !sys-apps/systemd abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) dev-util/gperf >=dev-util/intltool-0.50 >=sys-apps/coreutils-8.16 virtual/os-headers virtual/pkgconfig >=sys-devel/make-3.82-r4 >=sys-kernel/linux-headers-3.9 app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.5 app-text/docbook-xsl-stylesheets dev-libs/libxslt >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig sys-apps/baselayout
+DESCRIPTION=Linux dynamic and persistent device naming support (aka userspace devfs)
+EAPI=5
+HOMEPAGE=https://www.freedesktop.org/wiki/Software/systemd
+IUSE=acl +kmod openrc selinux static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=LGPL-2.1 MIT GPL-2
+PDEPEND=>=sys-apps/hwids-20140304[udev] openrc? ( >=sys-fs/udev-init-scripts-26 )
+RDEPEND=>=sys-apps/util-linux-2.24 sys-libs/libcap[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] acl? ( sys-apps/acl ) kmod? ( >=sys-apps/kmod-16 ) selinux? ( >=sys-libs/libselinux-2.1.9 ) !<sys-libs/glibc-2.11 !sys-apps/gentoo-systemd-integration !sys-apps/systemd abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r7 !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] ) !<sec-policy/selinux-base-2.20120725-r10 sys-apps/baselayout
+RESTRICT=test
+SLOT=0
+SRC_URI=https://github.com/systemd/systemd/archive/v225.tar.gz -> systemd-225.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	bash-completion-r1	47a7402d95930413ce25ba8d857339bb	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	udev	452708c3f55cf6e918b045adb949a9e6	user	7c566af8c48023219fd63246e88d6621	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
+_md5_=14be25ad818954e3d16b21623d1d27c7
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_10-3.10.18-r1239 b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_10-3.10.18-r1239
deleted file mode 100644
index 5a719f5..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_10-3.10.18-r1239
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 3.10
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_09982d06f7bc4b015f73479d1cf6e2c345e3df37 board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!sys-kernel/kernel-freon
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=afbf6af3c0cdead7dcb3639dba59146d
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_10-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_10-9999
deleted file mode 100644
index fcd0803..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_10-9999
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 3.10
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=~*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!sys-kernel/kernel-freon
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=c4c484c3afde7a611c01f448cdd1c8de
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_14-3.14-r2260 b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_14-3.14-r2260
deleted file mode 100644
index a49bb2a..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_14-3.14-r2260
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 3.14
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_4d1ab54b0473d6c760bba04769b3bc89aef9a32f board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/3.14/R81-12607.58-1578524353.gcov.xz -> chromeos-kernel-3_14-R81-12607.58-1578524353.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=eba60bfa28741ae14ec392d4b1754ad0
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_14-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_14-9999
deleted file mode 100644
index b4200ea..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_14-9999
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 3.14
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=~*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/3.14/R81-12607.58-1578524353.gcov.xz -> chromeos-kernel-3_14-R81-12607.58-1578524353.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=16552a681a534054b2529b4d5de53d21
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_18-3.18-r2620 b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_18-3.18-r2620
deleted file mode 100644
index 722ab73..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_18-3.18-r2620
+++ /dev/null
@@ -1,17 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 3.18
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_112619411f476cebba19aa10288f5d9ec3bc9790 board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-RDEPEND=!!sys-kernel/gale-kernel-3_18
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/3.18/R89-13660.0-1609151716.gcov.xz -> chromeos-kernel-3_18-R89-13660.0-1609151716.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b0efd27059ad7cbb2e620386c775da2c
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_18-3.18-r2668 b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_18-3.18-r2668
new file mode 100644
index 0000000..0ff61be
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_18-3.18-r2668
@@ -0,0 +1,17 @@
+BDEPEND=dev-vcs/git sys-apps/debianutils
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
+DESCRIPTION=Chrome OS Linux Kernel 3.18
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
+IUSE=cros_host cros_workon_tree_584f5e2f76ae08f52c5abfaeaa1dba472471bb83 board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+RDEPEND=!!sys-kernel/gale-kernel-3_18
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+RESTRICT=binchecks mirror
+SLOT=0
+SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/3.18/R93-14010.0-1623663215.gcov.xz -> chromeos-kernel-3_18-R93-14010.0-1623663215.gcov.xz )
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=29f6e7f04dcee71a1bff6e5c0361ab15
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_18-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_18-9999
index 4d558fe..5209c48 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_18-9999
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_18-9999
@@ -4,14 +4,14 @@
 DESCRIPTION=Chrome OS Linux Kernel 3.18
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
 RDEPEND=!!sys-kernel/gale-kernel-3_18
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/3.18/R89-13660.0-1609151716.gcov.xz -> chromeos-kernel-3_18-R89-13660.0-1609151716.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=86264aedbf22b18c812e537509d1d0e0
+SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/3.18/R93-14010.0-1623663215.gcov.xz -> chromeos-kernel-3_18-R93-14010.0-1623663215.gcov.xz )
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=81df0105b1c33b83c0058b9c02ca5ed3
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_8-3.8.11-r860 b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_8-3.8.11-r860
deleted file mode 100644
index fa622f0..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_8-3.8.11-r860
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 3.8
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_384327298544dbbeacfb00d82c68ad7825dcb7cc board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/3.8/R77-12240.0-1563788154.gcov.xz -> chromeos-kernel-3_8-R77-12240.0-1563788154.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e55a2a4b102776694f18a0312768507d
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_8-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-3_8-9999
deleted file mode 100644
index b6979f0..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-3_8-9999
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 3.8
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=~*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/3.8/R77-12240.0-1563788154.gcov.xz -> chromeos-kernel-3_8-R77-12240.0-1563788154.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=37ec7f83cef34999b5fb35e47b6b2bdb
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_14-4.14.214-r1474 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_14-4.14.214-r1474
deleted file mode 100644
index 80a73d2..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_14-4.14.214-r1474
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 4.14
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_d8d063ecc1d3b05bc4d74de525c815abce4d91be board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.14/R89-13662.0-1609152087.gcov.xz -> chromeos-kernel-4_14-R89-13662.0-1609152087.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b3d74cedf26eb5d0db43dc9f955e6ca0
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_14-4.14.237-r1641 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_14-4.14.237-r1641
new file mode 100644
index 0000000..a68e1a9
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_14-4.14.237-r1641
@@ -0,0 +1,16 @@
+BDEPEND=dev-vcs/git sys-apps/debianutils
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
+DESCRIPTION=Chrome OS Linux Kernel 4.14
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
+IUSE=cros_host cros_workon_tree_66e638dfefa1448cbb74e4aa39634a314ab106a4 board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+RESTRICT=binchecks mirror
+SLOT=0
+SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.14/R93-14023.0-1623663563.gcov.xz -> chromeos-kernel-4_14-R93-14023.0-1623663563.gcov.xz )
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=9f6d471e757bfaabcbb64d572186f54f
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_14-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_14-9999
index 52b8f51..8e4f779 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_14-9999
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_14-9999
@@ -4,13 +4,13 @@
 DESCRIPTION=Chrome OS Linux Kernel 4.14
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.14/R89-13662.0-1609152087.gcov.xz -> chromeos-kernel-4_14-R89-13662.0-1609152087.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=5c54de069f061cf044280f346190e691
+SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.14/R93-14023.0-1623663563.gcov.xz -> chromeos-kernel-4_14-R93-14023.0-1623663563.gcov.xz )
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=feaceb10ab49d2f9b432a1696153a9bc
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-4.19.166-r1789 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-4.19.166-r1789
deleted file mode 100644
index 6d8d629..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-4.19.166-r1789
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 4.19
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_a871c03db88776276394472f840cda1f065c0f9e board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.19/R89-13660.0-1609151538.gcov.xz -> chromeos-kernel-4_19-R89-13660.0-1609151538.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=367a37e4fec36784242e4fcb7895e34a
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-4.19.195-r2048 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-4.19.195-r2048
new file mode 100644
index 0000000..27fb558
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-4.19.195-r2048
@@ -0,0 +1,16 @@
+BDEPEND=dev-vcs/git sys-apps/debianutils
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
+DESCRIPTION=Chrome OS Linux Kernel 4.19
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
+IUSE=cros_host cros_workon_tree_0ea0bfa48fd873d3f53398e55979de8ea14ed1a1 board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+RESTRICT=binchecks mirror
+SLOT=0
+SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.19/R93-14021.0-1623663098.gcov.xz -> chromeos-kernel-4_19-R93-14021.0-1623663098.gcov.xz )
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=195d6508d523cbaa2dd1b8ecc4aded89
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-9999
index 314871c..ce03346 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-9999
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-9999
@@ -4,13 +4,13 @@
 DESCRIPTION=Chrome OS Linux Kernel 4.19
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.19/R89-13660.0-1609151538.gcov.xz -> chromeos-kernel-4_19-R89-13660.0-1609151538.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=68632c095daf54a20b381421ec4b5ce1
+SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.19/R93-14021.0-1623663098.gcov.xz -> chromeos-kernel-4_19-R93-14021.0-1623663098.gcov.xz )
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=abb3cc0376b2f206f51dfbcd04e82587
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-ht-4.19.115-r10 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-ht-4.19.115-r10
new file mode 100644
index 0000000..79d049b
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-ht-4.19.115-r10
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git sys-apps/debianutils
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
+DESCRIPTION=Chrome OS Linux Kernel 4.19-ht
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
+IUSE=cros_host cros_workon_tree_fa55a46690cd73594e89eb9b5066e99177dabc8e board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+RESTRICT=binchecks mirror
+SLOT=0
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3b57e34cb79420ccc978caa598f34509
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-ht-4.19.115-r8 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-ht-4.19.115-r8
deleted file mode 100644
index 011e219..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-ht-4.19.115-r8
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 4.19-ht
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_fa55a46690cd73594e89eb9b5066e99177dabc8e board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=349d14546c928e864940e5f63b802fd6
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-ht-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-ht-9999
index 8fa0e4e..2a1562c 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-ht-9999
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_19-ht-9999
@@ -4,12 +4,12 @@
 DESCRIPTION=Chrome OS Linux Kernel 4.19-ht
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=43fa28e3b1f921f4a9333da14e3e36ca
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5be3b0b1b40afcb53e6ff14138b86d00
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_4-4.4.250-r2540 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_4-4.4.250-r2540
deleted file mode 100644
index 644cf84..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_4-4.4.250-r2540
+++ /dev/null
@@ -1,16 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 4.4
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_61318ff26971ef4dd69d07df230568aaa72cff04 board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.4/R89-13671.0-1609151607.gcov.xz -> chromeos-kernel-4_4-R89-13671.0-1609151607.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f7ef3ee6b422f35e4b7074600998d7e1
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_4-4.4.273-r2681 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_4-4.4.273-r2681
new file mode 100644
index 0000000..03cc683
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_4-4.4.273-r2681
@@ -0,0 +1,16 @@
+BDEPEND=dev-vcs/git sys-apps/debianutils
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
+DESCRIPTION=Chrome OS Linux Kernel 4.4
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
+IUSE=cros_host cros_workon_tree_e3252c59b87ed40c9ff881fe2f97048605e0a3bf board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+RESTRICT=binchecks mirror
+SLOT=0
+SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.4/R93-14021.0-1623663147.gcov.xz -> chromeos-kernel-4_4-R93-14021.0-1623663147.gcov.xz )
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=950a2afb7cebf441e83d81cdff5ed44f
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_4-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_4-9999
index 1e7783b..0d4b84b 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-4_4-9999
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-4_4-9999
@@ -4,13 +4,13 @@
 DESCRIPTION=Chrome OS Linux Kernel 4.4
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.4/R89-13671.0-1609151607.gcov.xz -> chromeos-kernel-4_4-R89-13671.0-1609151607.gcov.xz )
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d00e029b614e5eba610db2029a31e46f
+SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/4.4/R93-14021.0-1623663147.gcov.xz -> chromeos-kernel-4_4-R93-14021.0-1623663147.gcov.xz )
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5ea42567067c44f2f665f8cc48bd9615
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-5_10-5.10.46-r477 b/metadata/md5-cache/sys-kernel/chromeos-kernel-5_10-5.10.46-r477
new file mode 100644
index 0000000..162f4b6
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-5_10-5.10.46-r477
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git sys-apps/debianutils
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
+DESCRIPTION=Chrome OS Linux Kernel 5.10
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
+IUSE=cros_host cros_workon_tree_9a3e6b51afa8764e98a98e805c1ecd7ec2f041b2 board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+RESTRICT=binchecks mirror
+SLOT=0
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=8c3c4c02f96c06c12247eec211368b05
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-5_10-5.10.6-r45 b/metadata/md5-cache/sys-kernel/chromeos-kernel-5_10-5.10.6-r45
deleted file mode 100644
index 63fbad2..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-5_10-5.10.6-r45
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 5.10
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_fc459ba5798aadc9326424d22e78af869d1ed11c board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=dc4dc0ef047e9b0872f46babf2358d56
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-5_10-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-5_10-9999
index f326e93..a3c5e52 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-5_10-9999
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-5_10-9999
@@ -4,12 +4,12 @@
 DESCRIPTION=Chrome OS Linux Kernel 5.10
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=96a920facad6ed99db1aedf1af230435
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ef8ef648bcee7182cfe602873192d895
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-5_4-5.4.128-r2362 b/metadata/md5-cache/sys-kernel/chromeos-kernel-5_4-5.4.128-r2362
new file mode 100644
index 0000000..e8dc3ff
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-5_4-5.4.128-r2362
@@ -0,0 +1,16 @@
+BDEPEND=dev-vcs/git sys-apps/debianutils
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
+DESCRIPTION=Chrome OS Linux Kernel 5.4
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
+IUSE=cros_host cros_workon_tree_d2088f2a2ad01abfc14810345aa1f171011ad20a board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+RESTRICT=binchecks mirror
+SLOT=0
+SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/5.4/R93-14021.0-1623663354.gcov.xz -> chromeos-kernel-5_4-R93-14021.0-1623663354.gcov.xz )
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=024efaccfca27870bc5a4a45332ea715
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-5_4-5.4.88-r1710 b/metadata/md5-cache/sys-kernel/chromeos-kernel-5_4-5.4.88-r1710
deleted file mode 100644
index e79f418..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-5_4-5.4.88-r1710
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel 5.4
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ac96d75f112d5f55daae42d71ddea958a980aa64 board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4e3aa04a18e05d6af146da8a19a1cae0
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-5_4-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-5_4-9999
index e1513b1..27b3603 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-5_4-9999
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-5_4-9999
@@ -4,12 +4,13 @@
 DESCRIPTION=Chrome OS Linux Kernel 5.4
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=206fd3dc768dd00fc0349c9348c7ec45
+SRC_URI=kernel_afdo? ( gs://chromeos-prebuilt/afdo-job/cwp/kernel/5.4/R93-14021.0-1623663354.gcov.xz -> chromeos-kernel-5_4-R93-14021.0-1623663354.gcov.xz )
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4d3399fff3d11bae7638fe674a03c73e
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-experimental-4.18_rc2-r23 b/metadata/md5-cache/sys-kernel/chromeos-kernel-experimental-4.18_rc2-r23
index 1120c4f..b19d355 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-experimental-4.18_rc2-r23
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-experimental-4.18_rc2-r23
@@ -4,12 +4,12 @@
 DESCRIPTION=Chrome OS Linux Kernel (experimental)
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_1e11905e9a7cd3f8925678d2dcc192026a35f442 board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_1e11905e9a7cd3f8925678d2dcc192026a35f442 board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=62de9888ac7f469d01e5f8be70666dd3
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-experimental-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-experimental-9999
index 5c89f851..19cb832 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-experimental-9999
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-experimental-9999
@@ -4,12 +4,12 @@
 DESCRIPTION=Chrome OS Linux Kernel (experimental)
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=6fa154c3cb90e05d520c2757ae40ac43
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=3f72a511ed7cef04a3f208ec3c9262a8
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-next-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-next-9999
index 45294f8..9a6dc43 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-next-9999
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-next-9999
@@ -4,12 +4,12 @@
 DESCRIPTION=Chrome OS Linux Kernel (next)
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=35914cc248af0e0288a4f6acc872bdcb
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=312b277127e16395e68f76cd598a2570
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-upstream-5.10-r18 b/metadata/md5-cache/sys-kernel/chromeos-kernel-upstream-5.10-r18
deleted file mode 100644
index d387e09..0000000
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-upstream-5.10-r18
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-vcs/git sys-apps/debianutils
-DEFINED_PHASES=compile configure info install prepare setup unpack
-DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
-DESCRIPTION=Chrome OS Linux Kernel latest upstream rc
-EAPI=7
-HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_9bc339d3af6c2510a2a01bb7cd542fd3ffaf6cb2 board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
-KEYWORDS=*
-LICENSE=GPL-2
-PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
-RESTRICT=binchecks mirror
-SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=436a5a9313e3648a1eac0aa413f3cbbd
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-upstream-5.13_rc7-r28 b/metadata/md5-cache/sys-kernel/chromeos-kernel-upstream-5.13_rc7-r28
new file mode 100644
index 0000000..192f332
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-upstream-5.13_rc7-r28
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git sys-apps/debianutils
+DEFINED_PHASES=compile configure info install prepare setup unpack
+DEPEND=sys-kernel/linux-firmware factory_netboot_ramfs? ( chromeos-base/chromeos-initramfs[factory_netboot_ramfs] ) factory_shim_ramfs? ( chromeos-base/chromeos-initramfs[factory_shim_ramfs] ) minios_ramfs? ( chromeos-base/chromeos-initramfs[minios_ramfs] ) recovery_ramfs? ( chromeos-base/chromeos-initramfs[recovery_ramfs] ) builtin_fw_mali_g57? ( virtual/opengles ) builtin_fw_t210_bpmp? ( sys-kernel/tegra_bpmp-t210 ) builtin_fw_t210_nouveau? ( sys-kernel/nouveau-firmware ) builtin_fw_x86_aml_ucode? ( chromeos-base/aml-ucode-firmware-private ) builtin_fw_x86_apl_ucode? ( chromeos-base/apl-ucode-firmware-private ) builtin_fw_x86_bdw_ucode? ( chromeos-base/bdw-ucode-firmware-private ) builtin_fw_x86_bsw_ucode? ( chromeos-base/bsw-ucode-firmware-private ) builtin_fw_x86_byt_ucode? ( chromeos-base/byt-ucode-firmware-private ) builtin_fw_x86_cml_ucode? ( chromeos-base/cml-ucode-firmware-private ) builtin_fw_x86_glk_ucode? ( chromeos-base/glk-ucode-firmware-private ) builtin_fw_x86_jsl_ucode? ( chromeos-base/jsl-ucode-firmware-private ) builtin_fw_x86_kbl_ucode? ( chromeos-base/kbl-ucode-firmware-private ) builtin_fw_x86_skl_ucode? ( chromeos-base/skl-ucode-firmware-private ) builtin_fw_x86_whl_ucode? ( chromeos-base/whl-ucode-firmware-private )
+DESCRIPTION=Chrome OS Linux Kernel latest upstream rc
+EAPI=7
+HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
+IUSE=cros_host cros_workon_tree_05cff5472871455d25debb0f398a4fa861e5a5c3 board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+KEYWORDS=*
+LICENSE=GPL-2
+PROPERTIES=live
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+RESTRICT=binchecks mirror
+SLOT=0
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=748a95c38db6ce21e2639b87914ab0f4
diff --git a/metadata/md5-cache/sys-kernel/chromeos-kernel-upstream-9999 b/metadata/md5-cache/sys-kernel/chromeos-kernel-upstream-9999
index 470b9ef..59e9bfb 100644
--- a/metadata/md5-cache/sys-kernel/chromeos-kernel-upstream-9999
+++ b/metadata/md5-cache/sys-kernel/chromeos-kernel-upstream-9999
@@ -4,12 +4,12 @@
 DESCRIPTION=Chrome OS Linux Kernel latest upstream rc
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=~*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f09ede9c75202a99f005dc803d996f67
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=dc3bf375324bc59ed9e58cf38c9b6033
diff --git a/metadata/md5-cache/sys-kernel/linux-firmware-0.0.1-r416 b/metadata/md5-cache/sys-kernel/linux-firmware-0.0.1-r416
deleted file mode 100644
index 53942aa..0000000
--- a/metadata/md5-cache/sys-kernel/linux-firmware-0.0.1-r416
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=dev-lang/python dev-vcs/git dev-vcs/git
-DEFINED_PHASES=info install setup test unpack
-DESCRIPTION=Firmware images from the upstream linux-fimware package
-EAPI=7
-HOMEPAGE=https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/
-IUSE=kernel-4_19 kernel-5_4 kernel-upstream linux_firmware_adreno-630 linux_firmware_adsp_apl linux_firmware_adsp_cnl linux_firmware_adsp_glk linux_firmware_adsp_kbl linux_firmware_adsp_skl linux_firmware_ath9k_htc linux_firmware_ath10k_qca6174a-5 linux_firmware_ath10k_qca6174a-3 linux_firmware_ath10k_wcn3990 linux_firmware_amdgpu_carrizo linux_firmware_amdgpu_picasso linux_firmware_amdgpu_raven2 linux_firmware_amdgpu_renoir linux_firmware_amdgpu_stoney linux_firmware_amdgpu_vega12 linux_firmware_bcm4354-bt linux_firmware_cros-pd linux_firmware_fw_sst linux_firmware_fw_sst2 linux_firmware_i915_bxt linux_firmware_i915_cnl linux_firmware_i915_glk linux_firmware_i915_jsl linux_firmware_i915_kbl linux_firmware_i915_skl linux_firmware_i915_tgl linux_firmware_ibt_9260 linux_firmware_ibt_9560 linux_firmware_ibt_ax200 linux_firmware_ibt_ax201 linux_firmware_ibt-hw linux_firmware_ipu3_fw linux_firmware_keyspan_usb linux_firmware_marvell-mwlwifi linux_firmware_marvell-pcie8897 linux_firmware_marvell-pcie8997 linux_firmware_mt8173-vpu linux_firmware_nvidia-xusb linux_firmware_qca6174a-3-bt linux_firmware_qca6174a-5-bt linux_firmware_qca-wcn3990-bt linux_firmware_qca-wcn3991-bt linux_firmware_rockchip-dptx linux_firmware_rt2870 linux_firmware_rtl8107e-1 linux_firmware_rtl8107e-2 linux_firmware_rtl8125a-3 linux_firmware_rtl8153 linux_firmware_rtl8168fp-3 linux_firmware_rtl8168g-1 linux_firmware_rtl8168g-2 linux_firmware_rtl8168h-1 linux_firmware_rtl8168h-2 linux_firmware_rtl_bt-8822ce-uart linux_firmware_rtl_bt-8822ce-usb linux_firmware_rtw8822c linux_firmware_venus-52 linux_firmware_venus-54 linux_firmware_ath3k-all linux_firmware_ath3k-ar3011 linux_firmware_ath3k-ar3012 linux_firmware_iwlwifi-all linux_firmware_iwlwifi-100 linux_firmware_iwlwifi-105 linux_firmware_iwlwifi-135 linux_firmware_iwlwifi-1000 linux_firmware_iwlwifi-1000 linux_firmware_iwlwifi-2000 linux_firmware_iwlwifi-2030 linux_firmware_iwlwifi-3160 linux_firmware_iwlwifi-3945 linux_firmware_iwlwifi-4965 linux_firmware_iwlwifi-5000 linux_firmware_iwlwifi-5150 linux_firmware_iwlwifi-6000 linux_firmware_iwlwifi-6005 linux_firmware_iwlwifi-6030 linux_firmware_iwlwifi-6050 linux_firmware_iwlwifi-7260 linux_firmware_iwlwifi-7265 linux_firmware_iwlwifi-7265D linux_firmware_iwlwifi-9000 linux_firmware_iwlwifi-9260 linux_firmware_iwlwifi-cc linux_firmware_iwlwifi-QuZ linux_firmware_brcmfmac-all linux_firmware_brcmfmac4354-sdio linux_firmware_brcmfmac4356-pcie linux_firmware_brcmfmac4371-pcie video_cards_radeon video_cards_amdgpu cros_host cros_workon_tree_787fa668bcaf34da636007c3b85fb7741f57852b
-KEYWORDS=*
-LICENSE=linux_firmware_adreno-630? ( LICENSE.qcom ) linux_firmware_adsp_apl? ( LICENCE.adsp_sst ) linux_firmware_adsp_cnl? ( LICENCE.adsp_sst ) linux_firmware_adsp_glk? ( LICENCE.adsp_sst ) linux_firmware_adsp_kbl? ( LICENCE.adsp_sst ) linux_firmware_adsp_skl? ( LICENCE.adsp_sst ) linux_firmware_amdgpu_carrizo? ( LICENSE.amdgpu ) linux_firmware_amdgpu_picasso? ( LICENSE.amdgpu ) linux_firmware_amdgpu_raven2? ( LICENSE.amdgpu ) linux_firmware_amdgpu_renoir? ( LICENSE.amdgpu ) linux_firmware_amdgpu_stoney? ( LICENSE.amdgpu ) linux_firmware_amdgpu_vega12? ( LICENSE.amdgpu ) linux_firmware_ath3k-all? ( LICENCE.atheros_firmware ) linux_firmware_ath3k-ar3011? ( LICENCE.atheros_firmware ) linux_firmware_ath3k-ar3012? ( LICENCE.atheros_firmware ) linux_firmware_ath9k_htc? ( LICENCE.atheros_firmware ) linux_firmware_ath10k_qca6174a-5? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_ath10k_qca6174a-3? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_ath10k_wcn3990? ( LICENCE.atheros_firmware ) linux_firmware_bcm4354-bt? ( LICENCE.broadcom_bcm43xx ) linux_firmware_cros-pd? ( BSD-Google ) linux_firmware_fw_sst? ( LICENCE.fw_sst ) linux_firmware_fw_sst2? ( LICENCE.IntcSST2 ) linux_firmware_i915_bxt? ( LICENSE.i915 ) linux_firmware_i915_cnl? ( LICENSE.i915 ) linux_firmware_i915_glk? ( LICENSE.i915 ) linux_firmware_i915_jsl? ( LICENSE.i915 ) linux_firmware_i915_kbl? ( LICENSE.i915 ) linux_firmware_i915_skl? ( LICENSE.i915 ) linux_firmware_i915_tgl? ( LICENSE.i915 ) linux_firmware_ipu3_fw? ( LICENSE.ipu3_firmware ) linux_firmware_ibt_9260? ( LICENCE.ibt_firmware ) linux_firmware_ibt_9560? ( LICENCE.ibt_firmware ) linux_firmware_ibt_ax200? ( LICENCE.ibt_firmware ) linux_firmware_ibt_ax201? ( LICENCE.ibt_firmware ) linux_firmware_ibt-hw? ( LICENCE.ibt_firmware ) linux_firmware_keyspan_usb? ( LICENSE.keyspan_usb ) linux_firmware_marvell-mwlwifi? ( LICENCE.Marvell ) linux_firmware_marvell-pcie8897? ( LICENCE.Marvell ) linux_firmware_marvell-pcie8997? ( LICENCE.Marvell ) linux_firmware_mt8173-vpu? ( LICENCE.mediatek-vpu ) linux_firmware_nvidia-xusb? ( LICENCE.nvidia ) linux_firmware_qca6174a-3-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca6174a-5-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca-wcn3990-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca-wcn3991-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_rockchip-dptx? ( LICENCE.rockchip ) linux_firmware_rt2870? ( LICENCE.ralink-firmware.txt LICENCE.ralink_a_mediatek_company_firmware ) linux_firmware_rtl8107e-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8107e-2? ( LICENCE.rtl_nic ) linux_firmware_rtl8125a-3? ( LICENCE.rtl_nic ) linux_firmware_rtl8153? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtl8168fp-3? ( LICENCE.rtl_nic ) linux_firmware_rtl8168g-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8168g-2? ( LICENCE.rtl_nic ) linux_firmware_rtl8168h-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8168h-2? ( LICENCE.rtl_nic ) linux_firmware_rtl_bt-8822ce-uart? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtl_bt-8822ce-usb? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtw8822c? ( LICENCE.rtlwifi_firmware ) linux_firmware_venus-52? ( LICENSE.qcom ) linux_firmware_venus-54? ( LICENSE.qcom ) linux_firmware_iwlwifi-all? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-100? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-105? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-135? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-1000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-1000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-2000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-2030? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-3160? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-3945? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-4965? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-5000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-5150? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6005? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6030? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6050? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7260? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7265? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7265D? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-9000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-9260? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-cc? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-QuZ? ( LICENCE.iwlwifi_firmware ) linux_firmware_brcmfmac-all? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4354-sdio? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4356-pcie? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4371-pcie? ( LICENCE.broadcom_bcm43xx ) video_cards_radeon? ( LICENSE.radeon ) video_cards_amdgpu? ( LICENSE.amdgpu )
-PROPERTIES=live
-RDEPEND=linux_firmware_adreno-630? ( !media-libs/a630-fw ) linux_firmware_ath3k-all? ( !net-wireless/ath3k ) linux_firmware_ath3k-ar3011? ( !net-wireless/ath3k ) linux_firmware_ath3k-ar3012? ( !net-wireless/ath3k ) linux_firmware_keyspan_usb? ( !sys-kernel/chromeos-kernel-3_8[firmware_install] !sys-kernel/chromeos-kernel-3_10[firmware_install] !sys-kernel/chromeos-kernel-3_14[firmware_install] !sys-kernel/chromeos-kernel-3_18[firmware_install] !sys-kernel/chromeos-kernel-4_4[firmware_install] ) linux_firmware_marvell-pcie8897? ( !net-wireless/marvell_sd8787[pcie] ) linux_firmware_marvell-pcie8997? ( !net-wireless/marvell_sd8787[pcie] ) linux_firmware_mt8173-vpu? ( !media-libs/vpu-fw ) linux_firmware_nvidia-xusb? ( !sys-kernel/xhci-firmware ) linux_firmware_rt2870? ( !net-wireless/realtek-rt2800-firmware ) !net-wireless/ath6k !net-wireless/ath10k !net-wireless/iwl1000-ucode !net-wireless/iwl2000-ucode !net-wireless/iwl2030-ucode !net-wireless/iwl3945-ucode !net-wireless/iwl4965-ucode !net-wireless/iwl5000-ucode !net-wireless/iwl6000-ucode !net-wireless/iwl6005-ucode !net-wireless/iwl6030-ucode !net-wireless/iwl6050-ucode
-REQUIRED_USE=?? ( kernel-4_19 kernel-5_4 kernel-upstream )
-RESTRICT=binchecks strip
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=684cdafd9e9a8d5396d5efec4938e27c
diff --git a/metadata/md5-cache/sys-kernel/linux-firmware-0.0.1-r467 b/metadata/md5-cache/sys-kernel/linux-firmware-0.0.1-r467
new file mode 100644
index 0000000..c92a774
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/linux-firmware-0.0.1-r467
@@ -0,0 +1,15 @@
+BDEPEND=dev-lang/python dev-vcs/git dev-vcs/git
+DEFINED_PHASES=info install setup test unpack
+DESCRIPTION=Firmware images from the upstream linux-fimware package
+EAPI=7
+HOMEPAGE=https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/
+IUSE=kernel-4_19 kernel-5_4 kernel-upstream linux_firmware_adreno-630 linux_firmware_adreno-660 linux_firmware_adsp_apl linux_firmware_adsp_cnl linux_firmware_adsp_glk linux_firmware_adsp_kbl linux_firmware_adsp_skl linux_firmware_ath9k_htc linux_firmware_ath10k_qca6174a-5 linux_firmware_ath10k_qca6174a-3 linux_firmware_ath10k_wcn3990 linux_firmware_amdgpu_carrizo linux_firmware_amdgpu_green_sardine linux_firmware_amdgpu_picasso linux_firmware_amdgpu_raven2 linux_firmware_amdgpu_renoir linux_firmware_amdgpu_stoney linux_firmware_amdgpu_vega12 linux_firmware_bcm4354-bt linux_firmware_cros-pd linux_firmware_fw_sst linux_firmware_fw_sst2 linux_firmware_i915_adl linux_firmware_i915_bxt linux_firmware_i915_cnl linux_firmware_i915_glk linux_firmware_i915_jsl linux_firmware_i915_kbl linux_firmware_i915_skl linux_firmware_i915_tgl linux_firmware_ibt_9260 linux_firmware_ibt_9560 linux_firmware_ibt_ax200 linux_firmware_ibt_ax201 linux_firmware_ibt-hw linux_firmware_ipu3_fw linux_firmware_keyspan_usb linux_firmware_marvell-mwlwifi linux_firmware_marvell-pcie8897 linux_firmware_marvell-pcie8997 linux_firmware_mt7921e linux_firmware_mt7921e-bt linux_firmware_mt8173-vpu linux_firmware_nvidia-xusb linux_firmware_qca6174a-3-bt linux_firmware_qca6174a-5-bt linux_firmware_qca-wcn3990-bt linux_firmware_qca-wcn3991-bt linux_firmware_rockchip-dptx linux_firmware_rt2870 linux_firmware_rtl8107e-1 linux_firmware_rtl8107e-2 linux_firmware_rtl8125a-3 linux_firmware_rtl8153 linux_firmware_rtl8168fp-3 linux_firmware_rtl8168g-1 linux_firmware_rtl8168g-2 linux_firmware_rtl8168h-1 linux_firmware_rtl8168h-2 linux_firmware_rtl_bt-8822ce-uart linux_firmware_rtl_bt-8822ce-usb linux_firmware_rtl_bt-8852ae-usb linux_firmware_rtw8822c linux_firmware_rtw8852a linux_firmware_venus-52 linux_firmware_venus-54 linux_firmware_ath3k-all linux_firmware_ath3k-ar3011 linux_firmware_ath3k-ar3012 linux_firmware_iwlwifi-all linux_firmware_iwlwifi-100 linux_firmware_iwlwifi-105 linux_firmware_iwlwifi-135 linux_firmware_iwlwifi-1000 linux_firmware_iwlwifi-1000 linux_firmware_iwlwifi-2000 linux_firmware_iwlwifi-2030 linux_firmware_iwlwifi-3160 linux_firmware_iwlwifi-3945 linux_firmware_iwlwifi-4965 linux_firmware_iwlwifi-5000 linux_firmware_iwlwifi-5150 linux_firmware_iwlwifi-6000 linux_firmware_iwlwifi-6005 linux_firmware_iwlwifi-6030 linux_firmware_iwlwifi-6050 linux_firmware_iwlwifi-7260 linux_firmware_iwlwifi-7265 linux_firmware_iwlwifi-7265D linux_firmware_iwlwifi-9000 linux_firmware_iwlwifi-9260 linux_firmware_iwlwifi-cc linux_firmware_iwlwifi-QuZ linux_firmware_brcmfmac-all linux_firmware_brcmfmac4354-sdio linux_firmware_brcmfmac4356-pcie linux_firmware_brcmfmac4371-pcie video_cards_radeon video_cards_amdgpu cros_host cros_workon_tree_88bba44e96f96f30758702983502712897feeafa
+KEYWORDS=*
+LICENSE=linux_firmware_adreno-630? ( LICENSE.qcom ) linux_firmware_adreno-660? ( LICENSE.qcom ) linux_firmware_adsp_apl? ( LICENCE.adsp_sst ) linux_firmware_adsp_cnl? ( LICENCE.adsp_sst ) linux_firmware_adsp_glk? ( LICENCE.adsp_sst ) linux_firmware_adsp_kbl? ( LICENCE.adsp_sst ) linux_firmware_adsp_skl? ( LICENCE.adsp_sst ) linux_firmware_amdgpu_carrizo? ( LICENSE.amdgpu ) linux_firmware_amdgpu_green_sardine? ( LICENSE.amdgpu ) linux_firmware_amdgpu_picasso? ( LICENSE.amdgpu ) linux_firmware_amdgpu_raven2? ( LICENSE.amdgpu ) linux_firmware_amdgpu_renoir? ( LICENSE.amdgpu ) linux_firmware_amdgpu_stoney? ( LICENSE.amdgpu ) linux_firmware_amdgpu_vega12? ( LICENSE.amdgpu ) linux_firmware_ath3k-all? ( LICENCE.atheros_firmware ) linux_firmware_ath3k-ar3011? ( LICENCE.atheros_firmware ) linux_firmware_ath3k-ar3012? ( LICENCE.atheros_firmware ) linux_firmware_ath9k_htc? ( LICENCE.atheros_firmware ) linux_firmware_ath10k_qca6174a-5? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_ath10k_qca6174a-3? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_ath10k_wcn3990? ( LICENCE.atheros_firmware ) linux_firmware_bcm4354-bt? ( LICENCE.broadcom_bcm43xx ) linux_firmware_cros-pd? ( BSD-Google ) linux_firmware_fw_sst? ( LICENCE.fw_sst ) linux_firmware_fw_sst2? ( LICENCE.IntcSST2 ) linux_firmware_i915_adl? ( LICENSE.i915 ) linux_firmware_i915_bxt? ( LICENSE.i915 ) linux_firmware_i915_cnl? ( LICENSE.i915 ) linux_firmware_i915_glk? ( LICENSE.i915 ) linux_firmware_i915_jsl? ( LICENSE.i915 ) linux_firmware_i915_kbl? ( LICENSE.i915 ) linux_firmware_i915_skl? ( LICENSE.i915 ) linux_firmware_i915_tgl? ( LICENSE.i915 ) linux_firmware_ipu3_fw? ( LICENSE.ipu3_firmware ) linux_firmware_ibt_9260? ( LICENCE.ibt_firmware ) linux_firmware_ibt_9560? ( LICENCE.ibt_firmware ) linux_firmware_ibt_ax200? ( LICENCE.ibt_firmware ) linux_firmware_ibt_ax201? ( LICENCE.ibt_firmware ) linux_firmware_ibt-hw? ( LICENCE.ibt_firmware ) linux_firmware_keyspan_usb? ( LICENSE.keyspan_usb ) linux_firmware_marvell-mwlwifi? ( LICENCE.Marvell ) linux_firmware_marvell-pcie8897? ( LICENCE.Marvell ) linux_firmware_marvell-pcie8997? ( LICENCE.Marvell ) linux_firmware_mt7921e? ( LICENCE.mediatek-nic ) linux_firmware_mt7921e-bt? ( LICENCE.mediatek-nic ) linux_firmware_mt8173-vpu? ( LICENCE.mediatek-vpu ) linux_firmware_nvidia-xusb? ( LICENCE.nvidia ) linux_firmware_qca6174a-3-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca6174a-5-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca-wcn3990-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca-wcn3991-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_rockchip-dptx? ( LICENCE.rockchip ) linux_firmware_rt2870? ( LICENCE.ralink-firmware.txt LICENCE.ralink_a_mediatek_company_firmware ) linux_firmware_rtl8107e-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8107e-2? ( LICENCE.rtl_nic ) linux_firmware_rtl8125a-3? ( LICENCE.rtl_nic ) linux_firmware_rtl8153? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtl8168fp-3? ( LICENCE.rtl_nic ) linux_firmware_rtl8168g-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8168g-2? ( LICENCE.rtl_nic ) linux_firmware_rtl8168h-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8168h-2? ( LICENCE.rtl_nic ) linux_firmware_rtl_bt-8822ce-uart? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtl_bt-8822ce-usb? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtl_bt-8852ae-usb? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtw8822c? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtw8852a? ( LICENCE.rtlwifi_firmware ) linux_firmware_venus-52? ( LICENSE.qcom ) linux_firmware_venus-54? ( LICENSE.qcom ) linux_firmware_iwlwifi-all? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-100? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-105? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-135? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-1000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-1000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-2000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-2030? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-3160? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-3945? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-4965? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-5000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-5150? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6005? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6030? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6050? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7260? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7265? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7265D? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-9000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-9260? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-cc? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-QuZ? ( LICENCE.iwlwifi_firmware ) linux_firmware_brcmfmac-all? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4354-sdio? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4356-pcie? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4371-pcie? ( LICENCE.broadcom_bcm43xx ) video_cards_radeon? ( LICENSE.radeon ) video_cards_amdgpu? ( LICENSE.amdgpu )
+PROPERTIES=live
+RDEPEND=linux_firmware_adreno-630? ( !media-libs/a630-fw ) linux_firmware_adreno-630? ( !media-libs/a660-fw ) linux_firmware_ath3k-all? ( !net-wireless/ath3k ) linux_firmware_ath3k-ar3011? ( !net-wireless/ath3k ) linux_firmware_ath3k-ar3012? ( !net-wireless/ath3k ) linux_firmware_keyspan_usb? ( !sys-kernel/chromeos-kernel-3_18[firmware_install] !sys-kernel/chromeos-kernel-4_4[firmware_install] ) linux_firmware_marvell-pcie8897? ( !net-wireless/marvell_sd8787[pcie] ) linux_firmware_marvell-pcie8997? ( !net-wireless/marvell_sd8787[pcie] ) linux_firmware_mt8173-vpu? ( !media-libs/vpu-fw ) linux_firmware_nvidia-xusb? ( !sys-kernel/xhci-firmware ) linux_firmware_rt2870? ( !net-wireless/realtek-rt2800-firmware ) !net-wireless/ath6k !net-wireless/ath10k !net-wireless/iwl1000-ucode !net-wireless/iwl2000-ucode !net-wireless/iwl2030-ucode !net-wireless/iwl3945-ucode !net-wireless/iwl4965-ucode !net-wireless/iwl5000-ucode !net-wireless/iwl6000-ucode !net-wireless/iwl6005-ucode !net-wireless/iwl6030-ucode !net-wireless/iwl6050-ucode
+REQUIRED_USE=?? ( kernel-4_19 kernel-5_4 kernel-upstream )
+RESTRICT=binchecks strip
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=2c2a4b799779d98bc541d24f551921f5
diff --git a/metadata/md5-cache/sys-kernel/linux-firmware-9999 b/metadata/md5-cache/sys-kernel/linux-firmware-9999
index 4d8b723..c42c725 100644
--- a/metadata/md5-cache/sys-kernel/linux-firmware-9999
+++ b/metadata/md5-cache/sys-kernel/linux-firmware-9999
@@ -3,13 +3,13 @@
 DESCRIPTION=Firmware images from the upstream linux-fimware package
 EAPI=7
 HOMEPAGE=https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/
-IUSE=kernel-4_19 kernel-5_4 kernel-upstream linux_firmware_adreno-630 linux_firmware_adsp_apl linux_firmware_adsp_cnl linux_firmware_adsp_glk linux_firmware_adsp_kbl linux_firmware_adsp_skl linux_firmware_ath9k_htc linux_firmware_ath10k_qca6174a-5 linux_firmware_ath10k_qca6174a-3 linux_firmware_ath10k_wcn3990 linux_firmware_amdgpu_carrizo linux_firmware_amdgpu_picasso linux_firmware_amdgpu_raven2 linux_firmware_amdgpu_renoir linux_firmware_amdgpu_stoney linux_firmware_amdgpu_vega12 linux_firmware_bcm4354-bt linux_firmware_cros-pd linux_firmware_fw_sst linux_firmware_fw_sst2 linux_firmware_i915_bxt linux_firmware_i915_cnl linux_firmware_i915_glk linux_firmware_i915_jsl linux_firmware_i915_kbl linux_firmware_i915_skl linux_firmware_i915_tgl linux_firmware_ibt_9260 linux_firmware_ibt_9560 linux_firmware_ibt_ax200 linux_firmware_ibt_ax201 linux_firmware_ibt-hw linux_firmware_ipu3_fw linux_firmware_keyspan_usb linux_firmware_marvell-mwlwifi linux_firmware_marvell-pcie8897 linux_firmware_marvell-pcie8997 linux_firmware_mt8173-vpu linux_firmware_nvidia-xusb linux_firmware_qca6174a-3-bt linux_firmware_qca6174a-5-bt linux_firmware_qca-wcn3990-bt linux_firmware_qca-wcn3991-bt linux_firmware_rockchip-dptx linux_firmware_rt2870 linux_firmware_rtl8107e-1 linux_firmware_rtl8107e-2 linux_firmware_rtl8125a-3 linux_firmware_rtl8153 linux_firmware_rtl8168fp-3 linux_firmware_rtl8168g-1 linux_firmware_rtl8168g-2 linux_firmware_rtl8168h-1 linux_firmware_rtl8168h-2 linux_firmware_rtl_bt-8822ce-uart linux_firmware_rtl_bt-8822ce-usb linux_firmware_rtw8822c linux_firmware_venus-52 linux_firmware_venus-54 linux_firmware_ath3k-all linux_firmware_ath3k-ar3011 linux_firmware_ath3k-ar3012 linux_firmware_iwlwifi-all linux_firmware_iwlwifi-100 linux_firmware_iwlwifi-105 linux_firmware_iwlwifi-135 linux_firmware_iwlwifi-1000 linux_firmware_iwlwifi-1000 linux_firmware_iwlwifi-2000 linux_firmware_iwlwifi-2030 linux_firmware_iwlwifi-3160 linux_firmware_iwlwifi-3945 linux_firmware_iwlwifi-4965 linux_firmware_iwlwifi-5000 linux_firmware_iwlwifi-5150 linux_firmware_iwlwifi-6000 linux_firmware_iwlwifi-6005 linux_firmware_iwlwifi-6030 linux_firmware_iwlwifi-6050 linux_firmware_iwlwifi-7260 linux_firmware_iwlwifi-7265 linux_firmware_iwlwifi-7265D linux_firmware_iwlwifi-9000 linux_firmware_iwlwifi-9260 linux_firmware_iwlwifi-cc linux_firmware_iwlwifi-QuZ linux_firmware_brcmfmac-all linux_firmware_brcmfmac4354-sdio linux_firmware_brcmfmac4356-pcie linux_firmware_brcmfmac4371-pcie video_cards_radeon video_cards_amdgpu cros_host cros_workon_tree_
+IUSE=kernel-4_19 kernel-5_4 kernel-upstream linux_firmware_adreno-630 linux_firmware_adreno-660 linux_firmware_adsp_apl linux_firmware_adsp_cnl linux_firmware_adsp_glk linux_firmware_adsp_kbl linux_firmware_adsp_skl linux_firmware_ath9k_htc linux_firmware_ath10k_qca6174a-5 linux_firmware_ath10k_qca6174a-3 linux_firmware_ath10k_wcn3990 linux_firmware_amdgpu_carrizo linux_firmware_amdgpu_green_sardine linux_firmware_amdgpu_picasso linux_firmware_amdgpu_raven2 linux_firmware_amdgpu_renoir linux_firmware_amdgpu_stoney linux_firmware_amdgpu_vega12 linux_firmware_bcm4354-bt linux_firmware_cros-pd linux_firmware_fw_sst linux_firmware_fw_sst2 linux_firmware_i915_adl linux_firmware_i915_bxt linux_firmware_i915_cnl linux_firmware_i915_glk linux_firmware_i915_jsl linux_firmware_i915_kbl linux_firmware_i915_skl linux_firmware_i915_tgl linux_firmware_ibt_9260 linux_firmware_ibt_9560 linux_firmware_ibt_ax200 linux_firmware_ibt_ax201 linux_firmware_ibt-hw linux_firmware_ipu3_fw linux_firmware_keyspan_usb linux_firmware_marvell-mwlwifi linux_firmware_marvell-pcie8897 linux_firmware_marvell-pcie8997 linux_firmware_mt7921e linux_firmware_mt7921e-bt linux_firmware_mt8173-vpu linux_firmware_nvidia-xusb linux_firmware_qca6174a-3-bt linux_firmware_qca6174a-5-bt linux_firmware_qca-wcn3990-bt linux_firmware_qca-wcn3991-bt linux_firmware_rockchip-dptx linux_firmware_rt2870 linux_firmware_rtl8107e-1 linux_firmware_rtl8107e-2 linux_firmware_rtl8125a-3 linux_firmware_rtl8153 linux_firmware_rtl8168fp-3 linux_firmware_rtl8168g-1 linux_firmware_rtl8168g-2 linux_firmware_rtl8168h-1 linux_firmware_rtl8168h-2 linux_firmware_rtl_bt-8822ce-uart linux_firmware_rtl_bt-8822ce-usb linux_firmware_rtl_bt-8852ae-usb linux_firmware_rtw8822c linux_firmware_rtw8852a linux_firmware_venus-52 linux_firmware_venus-54 linux_firmware_ath3k-all linux_firmware_ath3k-ar3011 linux_firmware_ath3k-ar3012 linux_firmware_iwlwifi-all linux_firmware_iwlwifi-100 linux_firmware_iwlwifi-105 linux_firmware_iwlwifi-135 linux_firmware_iwlwifi-1000 linux_firmware_iwlwifi-1000 linux_firmware_iwlwifi-2000 linux_firmware_iwlwifi-2030 linux_firmware_iwlwifi-3160 linux_firmware_iwlwifi-3945 linux_firmware_iwlwifi-4965 linux_firmware_iwlwifi-5000 linux_firmware_iwlwifi-5150 linux_firmware_iwlwifi-6000 linux_firmware_iwlwifi-6005 linux_firmware_iwlwifi-6030 linux_firmware_iwlwifi-6050 linux_firmware_iwlwifi-7260 linux_firmware_iwlwifi-7265 linux_firmware_iwlwifi-7265D linux_firmware_iwlwifi-9000 linux_firmware_iwlwifi-9260 linux_firmware_iwlwifi-cc linux_firmware_iwlwifi-QuZ linux_firmware_brcmfmac-all linux_firmware_brcmfmac4354-sdio linux_firmware_brcmfmac4356-pcie linux_firmware_brcmfmac4371-pcie video_cards_radeon video_cards_amdgpu cros_host cros_workon_tree_
 KEYWORDS=~*
-LICENSE=linux_firmware_adreno-630? ( LICENSE.qcom ) linux_firmware_adsp_apl? ( LICENCE.adsp_sst ) linux_firmware_adsp_cnl? ( LICENCE.adsp_sst ) linux_firmware_adsp_glk? ( LICENCE.adsp_sst ) linux_firmware_adsp_kbl? ( LICENCE.adsp_sst ) linux_firmware_adsp_skl? ( LICENCE.adsp_sst ) linux_firmware_amdgpu_carrizo? ( LICENSE.amdgpu ) linux_firmware_amdgpu_picasso? ( LICENSE.amdgpu ) linux_firmware_amdgpu_raven2? ( LICENSE.amdgpu ) linux_firmware_amdgpu_renoir? ( LICENSE.amdgpu ) linux_firmware_amdgpu_stoney? ( LICENSE.amdgpu ) linux_firmware_amdgpu_vega12? ( LICENSE.amdgpu ) linux_firmware_ath3k-all? ( LICENCE.atheros_firmware ) linux_firmware_ath3k-ar3011? ( LICENCE.atheros_firmware ) linux_firmware_ath3k-ar3012? ( LICENCE.atheros_firmware ) linux_firmware_ath9k_htc? ( LICENCE.atheros_firmware ) linux_firmware_ath10k_qca6174a-5? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_ath10k_qca6174a-3? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_ath10k_wcn3990? ( LICENCE.atheros_firmware ) linux_firmware_bcm4354-bt? ( LICENCE.broadcom_bcm43xx ) linux_firmware_cros-pd? ( BSD-Google ) linux_firmware_fw_sst? ( LICENCE.fw_sst ) linux_firmware_fw_sst2? ( LICENCE.IntcSST2 ) linux_firmware_i915_bxt? ( LICENSE.i915 ) linux_firmware_i915_cnl? ( LICENSE.i915 ) linux_firmware_i915_glk? ( LICENSE.i915 ) linux_firmware_i915_jsl? ( LICENSE.i915 ) linux_firmware_i915_kbl? ( LICENSE.i915 ) linux_firmware_i915_skl? ( LICENSE.i915 ) linux_firmware_i915_tgl? ( LICENSE.i915 ) linux_firmware_ipu3_fw? ( LICENSE.ipu3_firmware ) linux_firmware_ibt_9260? ( LICENCE.ibt_firmware ) linux_firmware_ibt_9560? ( LICENCE.ibt_firmware ) linux_firmware_ibt_ax200? ( LICENCE.ibt_firmware ) linux_firmware_ibt_ax201? ( LICENCE.ibt_firmware ) linux_firmware_ibt-hw? ( LICENCE.ibt_firmware ) linux_firmware_keyspan_usb? ( LICENSE.keyspan_usb ) linux_firmware_marvell-mwlwifi? ( LICENCE.Marvell ) linux_firmware_marvell-pcie8897? ( LICENCE.Marvell ) linux_firmware_marvell-pcie8997? ( LICENCE.Marvell ) linux_firmware_mt8173-vpu? ( LICENCE.mediatek-vpu ) linux_firmware_nvidia-xusb? ( LICENCE.nvidia ) linux_firmware_qca6174a-3-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca6174a-5-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca-wcn3990-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca-wcn3991-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_rockchip-dptx? ( LICENCE.rockchip ) linux_firmware_rt2870? ( LICENCE.ralink-firmware.txt LICENCE.ralink_a_mediatek_company_firmware ) linux_firmware_rtl8107e-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8107e-2? ( LICENCE.rtl_nic ) linux_firmware_rtl8125a-3? ( LICENCE.rtl_nic ) linux_firmware_rtl8153? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtl8168fp-3? ( LICENCE.rtl_nic ) linux_firmware_rtl8168g-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8168g-2? ( LICENCE.rtl_nic ) linux_firmware_rtl8168h-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8168h-2? ( LICENCE.rtl_nic ) linux_firmware_rtl_bt-8822ce-uart? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtl_bt-8822ce-usb? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtw8822c? ( LICENCE.rtlwifi_firmware ) linux_firmware_venus-52? ( LICENSE.qcom ) linux_firmware_venus-54? ( LICENSE.qcom ) linux_firmware_iwlwifi-all? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-100? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-105? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-135? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-1000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-1000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-2000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-2030? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-3160? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-3945? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-4965? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-5000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-5150? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6005? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6030? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6050? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7260? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7265? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7265D? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-9000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-9260? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-cc? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-QuZ? ( LICENCE.iwlwifi_firmware ) linux_firmware_brcmfmac-all? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4354-sdio? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4356-pcie? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4371-pcie? ( LICENCE.broadcom_bcm43xx ) video_cards_radeon? ( LICENSE.radeon ) video_cards_amdgpu? ( LICENSE.amdgpu )
+LICENSE=linux_firmware_adreno-630? ( LICENSE.qcom ) linux_firmware_adreno-660? ( LICENSE.qcom ) linux_firmware_adsp_apl? ( LICENCE.adsp_sst ) linux_firmware_adsp_cnl? ( LICENCE.adsp_sst ) linux_firmware_adsp_glk? ( LICENCE.adsp_sst ) linux_firmware_adsp_kbl? ( LICENCE.adsp_sst ) linux_firmware_adsp_skl? ( LICENCE.adsp_sst ) linux_firmware_amdgpu_carrizo? ( LICENSE.amdgpu ) linux_firmware_amdgpu_green_sardine? ( LICENSE.amdgpu ) linux_firmware_amdgpu_picasso? ( LICENSE.amdgpu ) linux_firmware_amdgpu_raven2? ( LICENSE.amdgpu ) linux_firmware_amdgpu_renoir? ( LICENSE.amdgpu ) linux_firmware_amdgpu_stoney? ( LICENSE.amdgpu ) linux_firmware_amdgpu_vega12? ( LICENSE.amdgpu ) linux_firmware_ath3k-all? ( LICENCE.atheros_firmware ) linux_firmware_ath3k-ar3011? ( LICENCE.atheros_firmware ) linux_firmware_ath3k-ar3012? ( LICENCE.atheros_firmware ) linux_firmware_ath9k_htc? ( LICENCE.atheros_firmware ) linux_firmware_ath10k_qca6174a-5? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_ath10k_qca6174a-3? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_ath10k_wcn3990? ( LICENCE.atheros_firmware ) linux_firmware_bcm4354-bt? ( LICENCE.broadcom_bcm43xx ) linux_firmware_cros-pd? ( BSD-Google ) linux_firmware_fw_sst? ( LICENCE.fw_sst ) linux_firmware_fw_sst2? ( LICENCE.IntcSST2 ) linux_firmware_i915_adl? ( LICENSE.i915 ) linux_firmware_i915_bxt? ( LICENSE.i915 ) linux_firmware_i915_cnl? ( LICENSE.i915 ) linux_firmware_i915_glk? ( LICENSE.i915 ) linux_firmware_i915_jsl? ( LICENSE.i915 ) linux_firmware_i915_kbl? ( LICENSE.i915 ) linux_firmware_i915_skl? ( LICENSE.i915 ) linux_firmware_i915_tgl? ( LICENSE.i915 ) linux_firmware_ipu3_fw? ( LICENSE.ipu3_firmware ) linux_firmware_ibt_9260? ( LICENCE.ibt_firmware ) linux_firmware_ibt_9560? ( LICENCE.ibt_firmware ) linux_firmware_ibt_ax200? ( LICENCE.ibt_firmware ) linux_firmware_ibt_ax201? ( LICENCE.ibt_firmware ) linux_firmware_ibt-hw? ( LICENCE.ibt_firmware ) linux_firmware_keyspan_usb? ( LICENSE.keyspan_usb ) linux_firmware_marvell-mwlwifi? ( LICENCE.Marvell ) linux_firmware_marvell-pcie8897? ( LICENCE.Marvell ) linux_firmware_marvell-pcie8997? ( LICENCE.Marvell ) linux_firmware_mt7921e? ( LICENCE.mediatek-nic ) linux_firmware_mt7921e-bt? ( LICENCE.mediatek-nic ) linux_firmware_mt8173-vpu? ( LICENCE.mediatek-vpu ) linux_firmware_nvidia-xusb? ( LICENCE.nvidia ) linux_firmware_qca6174a-3-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca6174a-5-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca-wcn3990-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_qca-wcn3991-bt? ( LICENSE.QualcommAtheros_ath10k ) linux_firmware_rockchip-dptx? ( LICENCE.rockchip ) linux_firmware_rt2870? ( LICENCE.ralink-firmware.txt LICENCE.ralink_a_mediatek_company_firmware ) linux_firmware_rtl8107e-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8107e-2? ( LICENCE.rtl_nic ) linux_firmware_rtl8125a-3? ( LICENCE.rtl_nic ) linux_firmware_rtl8153? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtl8168fp-3? ( LICENCE.rtl_nic ) linux_firmware_rtl8168g-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8168g-2? ( LICENCE.rtl_nic ) linux_firmware_rtl8168h-1? ( LICENCE.rtl_nic ) linux_firmware_rtl8168h-2? ( LICENCE.rtl_nic ) linux_firmware_rtl_bt-8822ce-uart? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtl_bt-8822ce-usb? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtl_bt-8852ae-usb? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtw8822c? ( LICENCE.rtlwifi_firmware ) linux_firmware_rtw8852a? ( LICENCE.rtlwifi_firmware ) linux_firmware_venus-52? ( LICENSE.qcom ) linux_firmware_venus-54? ( LICENSE.qcom ) linux_firmware_iwlwifi-all? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-100? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-105? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-135? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-1000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-1000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-2000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-2030? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-3160? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-3945? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-4965? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-5000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-5150? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6005? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6030? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-6050? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7260? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7265? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-7265D? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-9000? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-9260? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-cc? ( LICENCE.iwlwifi_firmware ) linux_firmware_iwlwifi-QuZ? ( LICENCE.iwlwifi_firmware ) linux_firmware_brcmfmac-all? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4354-sdio? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4356-pcie? ( LICENCE.broadcom_bcm43xx ) linux_firmware_brcmfmac4371-pcie? ( LICENCE.broadcom_bcm43xx ) video_cards_radeon? ( LICENSE.radeon ) video_cards_amdgpu? ( LICENSE.amdgpu )
 PROPERTIES=live
-RDEPEND=linux_firmware_adreno-630? ( !media-libs/a630-fw ) linux_firmware_ath3k-all? ( !net-wireless/ath3k ) linux_firmware_ath3k-ar3011? ( !net-wireless/ath3k ) linux_firmware_ath3k-ar3012? ( !net-wireless/ath3k ) linux_firmware_keyspan_usb? ( !sys-kernel/chromeos-kernel-3_8[firmware_install] !sys-kernel/chromeos-kernel-3_10[firmware_install] !sys-kernel/chromeos-kernel-3_14[firmware_install] !sys-kernel/chromeos-kernel-3_18[firmware_install] !sys-kernel/chromeos-kernel-4_4[firmware_install] ) linux_firmware_marvell-pcie8897? ( !net-wireless/marvell_sd8787[pcie] ) linux_firmware_marvell-pcie8997? ( !net-wireless/marvell_sd8787[pcie] ) linux_firmware_mt8173-vpu? ( !media-libs/vpu-fw ) linux_firmware_nvidia-xusb? ( !sys-kernel/xhci-firmware ) linux_firmware_rt2870? ( !net-wireless/realtek-rt2800-firmware ) !net-wireless/ath6k !net-wireless/ath10k !net-wireless/iwl1000-ucode !net-wireless/iwl2000-ucode !net-wireless/iwl2030-ucode !net-wireless/iwl3945-ucode !net-wireless/iwl4965-ucode !net-wireless/iwl5000-ucode !net-wireless/iwl6000-ucode !net-wireless/iwl6005-ucode !net-wireless/iwl6030-ucode !net-wireless/iwl6050-ucode
+RDEPEND=linux_firmware_adreno-630? ( !media-libs/a630-fw ) linux_firmware_adreno-630? ( !media-libs/a660-fw ) linux_firmware_ath3k-all? ( !net-wireless/ath3k ) linux_firmware_ath3k-ar3011? ( !net-wireless/ath3k ) linux_firmware_ath3k-ar3012? ( !net-wireless/ath3k ) linux_firmware_keyspan_usb? ( !sys-kernel/chromeos-kernel-3_18[firmware_install] !sys-kernel/chromeos-kernel-4_4[firmware_install] ) linux_firmware_marvell-pcie8897? ( !net-wireless/marvell_sd8787[pcie] ) linux_firmware_marvell-pcie8997? ( !net-wireless/marvell_sd8787[pcie] ) linux_firmware_mt8173-vpu? ( !media-libs/vpu-fw ) linux_firmware_nvidia-xusb? ( !sys-kernel/xhci-firmware ) linux_firmware_rt2870? ( !net-wireless/realtek-rt2800-firmware ) !net-wireless/ath6k !net-wireless/ath10k !net-wireless/iwl1000-ucode !net-wireless/iwl2000-ucode !net-wireless/iwl2030-ucode !net-wireless/iwl3945-ucode !net-wireless/iwl4965-ucode !net-wireless/iwl5000-ucode !net-wireless/iwl6000-ucode !net-wireless/iwl6005-ucode !net-wireless/iwl6030-ucode !net-wireless/iwl6050-ucode
 REQUIRED_USE=?? ( kernel-4_19 kernel-5_4 kernel-upstream )
 RESTRICT=binchecks strip
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b4b439c85612bfc6d77a0871797f0627
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4464a6813312b909be3958982b84af4d
diff --git a/metadata/md5-cache/sys-kernel/linux-headers-4.14 b/metadata/md5-cache/sys-kernel/linux-headers-4.14
index f335068..ef78784 100644
--- a/metadata/md5-cache/sys-kernel/linux-headers-4.14
+++ b/metadata/md5-cache/sys-kernel/linux-headers-4.14
@@ -11,4 +11,4 @@
 SLOT=0
 SRC_URI=mirror://gentoo/gentoo-headers-base-4.14.tar.xz mirror://gentoo/gentoo-headers-4.14-1.tar.xz
 _eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	kernel-2	50e2a9c5725758a927075467bd13698f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
-_md5_=9f8dd0aeb0b1542324058603d5d81809
+_md5_=be179a14b741ce6408907f7a836d7545
diff --git a/metadata/md5-cache/sys-kernel/linux-headers-4.14-r31 b/metadata/md5-cache/sys-kernel/linux-headers-4.14-r31
deleted file mode 100644
index f335068..0000000
--- a/metadata/md5-cache/sys-kernel/linux-headers-4.14-r31
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile install postinst postrm preinst prepare setup test unpack
-DEPEND=app-arch/xz-utils dev-lang/perl
-DESCRIPTION=Linux system headers
-EAPI=6
-HOMEPAGE=http://www.kernel.org/ http://www.gentoo.org/
-IUSE=crosscompile_opts_headers-only
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=!!media-sound/alsa-headers
-RESTRICT=binchecks strip
-SLOT=0
-SRC_URI=mirror://gentoo/gentoo-headers-base-4.14.tar.xz mirror://gentoo/gentoo-headers-4.14-1.tar.xz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	kernel-2	50e2a9c5725758a927075467bd13698f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
-_md5_=9f8dd0aeb0b1542324058603d5d81809
diff --git a/metadata/md5-cache/sys-kernel/linux-headers-4.14-r37 b/metadata/md5-cache/sys-kernel/linux-headers-4.14-r37
new file mode 100644
index 0000000..ef78784
--- /dev/null
+++ b/metadata/md5-cache/sys-kernel/linux-headers-4.14-r37
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile install postinst postrm preinst prepare setup test unpack
+DEPEND=app-arch/xz-utils dev-lang/perl
+DESCRIPTION=Linux system headers
+EAPI=6
+HOMEPAGE=http://www.kernel.org/ http://www.gentoo.org/
+IUSE=crosscompile_opts_headers-only
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=!!media-sound/alsa-headers
+RESTRICT=binchecks strip
+SLOT=0
+SRC_URI=mirror://gentoo/gentoo-headers-base-4.14.tar.xz mirror://gentoo/gentoo-headers-4.14-1.tar.xz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	kernel-2	50e2a9c5725758a927075467bd13698f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
+_md5_=be179a14b741ce6408907f7a836d7545
diff --git a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-0.0.1-r2937 b/metadata/md5-cache/sys-kernel/tegra_lp0_resume-0.0.1-r2937
deleted file mode 100644
index c84f4aa..0000000
--- a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-0.0.1-r2937
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=lp0 resume blob for Tegra
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=cros_host cros_workon_tree_2e32d2a5a79f8e88be91b44b40a65211c6ea4dae
-KEYWORDS=-* arm arm64
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/0.0.1-r2937
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d3f97d418db634dadff9890603bc3859
diff --git a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-9999 b/metadata/md5-cache/sys-kernel/tegra_lp0_resume-9999
deleted file mode 100644
index c1335e4..0000000
--- a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=lp0 resume blob for Tegra
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=cros_host cros_workon_tree_
-KEYWORDS=-* ~arm ~arm64
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=e33747f246c93440d0e46e2b5b769558
diff --git a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t132-0.0.1-r2505 b/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t132-0.0.1-r2505
deleted file mode 100644
index 10179ef..0000000
--- a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t132-0.0.1-r2505
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=lp0 resume blob for Tegra
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=cros_host cros_workon_tree_2e32d2a5a79f8e88be91b44b40a65211c6ea4dae
-KEYWORDS=-* arm arm64
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/0.0.1-r2505
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=263685bdf373d9d41f50544e63e4edfc
diff --git a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t132-9999 b/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t132-9999
deleted file mode 100644
index f22dd0d..0000000
--- a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t132-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=lp0 resume blob for Tegra
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=cros_host cros_workon_tree_
-KEYWORDS=-* ~arm ~arm64
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=7067c17da1c0f548d811af94ae6e107a
diff --git a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t210-0.0.1-r2004 b/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t210-0.0.1-r2004
deleted file mode 100644
index e6306f9..0000000
--- a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t210-0.0.1-r2004
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=lp0 resume blob for Tegra
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=cros_host cros_workon_tree_2e32d2a5a79f8e88be91b44b40a65211c6ea4dae
-KEYWORDS=-* arm arm64
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/0.0.1-r2004
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=439d43366cd685d63a6966c20939dea1
diff --git a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t210-9999 b/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t210-9999
deleted file mode 100644
index 2ddd459..0000000
--- a/metadata/md5-cache/sys-kernel/tegra_lp0_resume-t210-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile info install setup unpack
-DESCRIPTION=lp0 resume blob for Tegra
-EAPI=7
-HOMEPAGE=http://www.coreboot.org
-IUSE=cros_host cros_workon_tree_
-KEYWORDS=-* ~arm ~arm64
-LICENSE=GPL-2
-PROPERTIES=live
-SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=94bf294c605b995f644ac27e6bea707d
diff --git a/metadata/md5-cache/sys-kernel/upstream-kernel-mainline-9999 b/metadata/md5-cache/sys-kernel/upstream-kernel-mainline-9999
index 01ede22..9488642 100644
--- a/metadata/md5-cache/sys-kernel/upstream-kernel-mainline-9999
+++ b/metadata/md5-cache/sys-kernel/upstream-kernel-mainline-9999
@@ -4,12 +4,12 @@
 DESCRIPTION=Linux Kernel Upstream (mainline)
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=c07f93f3a1635317d89b72b8c6e7e3a7
diff --git a/metadata/md5-cache/sys-kernel/upstream-kernel-next-9999 b/metadata/md5-cache/sys-kernel/upstream-kernel-next-9999
index 0fb7202..4e5e0fd 100644
--- a/metadata/md5-cache/sys-kernel/upstream-kernel-next-9999
+++ b/metadata/md5-cache/sys-kernel/upstream-kernel-next-9999
@@ -4,12 +4,12 @@
 DESCRIPTION=Linux Kernel Upstream (next)
 EAPI=7
 HOMEPAGE=https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel
-IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kvm board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_heli board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc64 board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-kernelnext board_use_trogdor64 board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-kernelnext board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless34 -wireless38 -wireless318 -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown kasan kcov kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag wireless34 x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
+IUSE=cros_host cros_workon_tree_ board_use_acorn board_use_adlrvp board_use_ambassador board_use_amd64-corei7 board_use_amd64-generic board_use_amd64-generic-cheets board_use_amd64-generic-goofy board_use_amd64-generic_embedded board_use_amd64-host board_use_aplrvp board_use_aries board_use_arkham board_use_arm-generic board_use_arm64-generic board_use_arm64-llvmpipe board_use_asuka board_use_asurada board_use_atlas board_use_atlas-blueznext board_use_atlas-kernelnext board_use_atlas-kvm board_use_aurora board_use_aurora-borealis board_use_auron board_use_auron_paine board_use_auron_pearlvalley board_use_auron_yuna board_use_banjo board_use_banon board_use_bayleybay board_use_beaglebone board_use_beaglebone_servo board_use_beaglebone_vv1 board_use_beltino board_use_betty board_use_betty-arc-r board_use_betty-arc-s board_use_betty-arc64 board_use_betty-arcmaster board_use_betty-arcnext board_use_betty-arcvm-master board_use_betty-pi-arc board_use_blackwall board_use_bob board_use_bob-arc64 board_use_bobcat board_use_bolt board_use_borealis board_use_bruteus board_use_brya board_use_brya-manatee board_use_bubs board_use_buddy board_use_buddy-cfm board_use_butterfly board_use_bwtm2 board_use_candy board_use_capri board_use_capri-zfpga board_use_caroline board_use_caroline-arc64 board_use_caroline-kernelnext board_use_caroline-ndktranslation board_use_caroline-userdebug board_use_cardhu board_use_cave board_use_celes board_use_celes-cheets board_use_chell board_use_chell-cheets board_use_cherry board_use_cheza board_use_cheza-freedreno board_use_cheza64 board_use_cheza64-freedreno board_use_cid board_use_clapper board_use_cmlrvp board_use_cobblepot board_use_coral board_use_coral-kernelnext board_use_cosmos board_use_cranky board_use_cyan board_use_cyan-cheets board_use_cyan-kernelnext board_use_cyclone board_use_daisy board_use_daisy_embedded board_use_daisy_skate board_use_daisy_snow board_use_daisy_spring board_use_daisy_winter board_use_dalmore board_use_danger board_use_danger_embedded board_use_dedede board_use_deltaur board_use_drallion board_use_duck board_use_edgar board_use_elm board_use_elm-arc64 board_use_elm-cheets board_use_elm-kernelnext board_use_endeavour board_use_enguarde board_use_eve board_use_eve-arcnext board_use_eve-arc-r board_use_eve-arcvm board_use_eve-arcvm-mesa-virgl-next board_use_eve-arm64 board_use_eve-campfire board_use_eve-kernelnext board_use_eve-kvm board_use_eve-lacros board_use_eve-manatee board_use_eve-swap board_use_eve-userdebug board_use_excelsior board_use_expresso board_use_falco board_use_falco_gles board_use_falco_li board_use_fb1 board_use_fizz board_use_fizz-accelerator board_use_fizz-cfm board_use_fizz-labstation board_use_fizz-moblab board_use_fizz-satlab board_use_flapjack board_use_foster board_use_galaxy board_use_gale board_use_gandof board_use_genesis board_use_glados board_use_glados-cheets board_use_glimmer board_use_glimmer-cheets board_use_glkrvp board_use_gnawty board_use_gonzo board_use_gru board_use_grunt board_use_grunt-arc64 board_use_grunt-arc-r board_use_grunt-kernelnext board_use_guado board_use_guado-accelerator board_use_guado-cfm board_use_guado-macrophage board_use_guado_moblab board_use_guado_labstation board_use_guybrush board_use_hana board_use_hana-arc64 board_use_hana-kernelnext board_use_hatch board_use_hatch-arc-r board_use_hatch-arc-r-ack board_use_hatch-arc-r-signed board_use_hatch-arc-r-userdebug board_use_hatch-arc-s board_use_hatch-blueznext board_use_hatch-borealis board_use_hatch-diskswap board_use_hatch-kernelnext board_use_hatch-manatee board_use_heli board_use_herobrine board_use_hsb board_use_ironhide board_use_jacuzzi board_use_jacuzzi-arc64 board_use_jacuzzi-kernelnext board_use_jecht board_use_kalista board_use_kalista-cfm board_use_kayle board_use_kblrvp board_use_keeby board_use_kefka board_use_kefka-kernelnext board_use_kevin board_use_kevin64 board_use_kevin-arc64 board_use_kevin-tpm2 board_use_kevin-userdebug board_use_kidd board_use_kip board_use_klang board_use_kukui board_use_kukui-arc-r board_use_kukui-arc-r-signed board_use_kukui-arc64 board_use_kukui-kernelnext board_use_kumo board_use_kunimitsu board_use_lakitu board_use_lakitu-arm64 board_use_lakitu-gpu board_use_lakitu-nc board_use_lakitu_next board_use_lakitu-slice board_use_lakitu-st board_use_lars board_use_lars-kernelnext board_use_laser board_use_lasilla-ground board_use_lassen board_use_leon board_use_link board_use_littlejoe board_use_loonix board_use_lulu board_use_lulu-cheets board_use_lumpy board_use_majolica board_use_mancomb board_use_mappy board_use_mappy_flashstation board_use_marble board_use_mccloud board_use_metis board_use_minnowboard board_use_mipseb-n32-generic board_use_mipseb-n64-generic board_use_mipseb-o32-generic board_use_mipsel-n32-generic board_use_mipsel-n64-generic board_use_mipsel-o32-generic board_use_mistral board_use_moblab-generic-vm board_use_monroe board_use_moose board_use_mushu board_use_nami board_use_nami-kernelnext board_use_nami-kvm board_use_nautilus board_use_ninja board_use_nocturne board_use_nocturne-kernelnext board_use_novato board_use_novato-arc64 board_use_novato-arcnext board_use_nyan board_use_nyan_big board_use_nyan_blaze board_use_nyan_kitty board_use_oak board_use_oak-cheets board_use_octavius board_use_octopus board_use_orco board_use_palkia board_use_panda board_use_panther board_use_panther_embedded board_use_panther_goofy board_use_panther_moblab board_use_parrot board_use_parrot32 board_use_parrot64 board_use_parrot_ivb board_use_peach board_use_peach_kirby board_use_peach_pi board_use_peach_pit board_use_peppy board_use_plaso board_use_poppy board_use_ppcbe-32-generic board_use_ppcbe-64-generic board_use_ppcle-32-generic board_use_ppcle-64-generic board_use_puff board_use_puff-borealis board_use_puff-macrophage board_use_puff-moblab board_use_puppy board_use_purin board_use_pyro board_use_quawks board_use_rainier board_use_rambi board_use_rammus board_use_rammus-arc-r board_use_rammus-arc-r-userdebug board_use_raspberrypi board_use_reef board_use_relm board_use_reks board_use_reven board_use_rikku board_use_rikku-cfm board_use_rizer board_use_romer board_use_rotor board_use_rowan board_use_rush board_use_rush_ryu board_use_sama5d3 board_use_samus board_use_samus-cheets board_use_sand board_use_sarien board_use_sarien-arc64 board_use_sarien-kvm board_use_scarlet board_use_scarlet-arc64 board_use_senor board_use_sentry board_use_setzer board_use_shadowkeep board_use_shogun board_use_sklrvp board_use_smaug board_use_smaug-cheets board_use_smaug-kasan board_use_snappy board_use_snappy-kernelnext board_use_sonic board_use_soraka board_use_soraka-libcamera board_use_squawks board_use_stelvio board_use_storm board_use_storm_nand board_use_stout board_use_strago board_use_strongbad board_use_stumpy board_use_stumpy_moblab board_use_stumpy_pico board_use_sumo board_use_swanky board_use_tails board_use_tatl board_use_tael board_use_tegra3-generic board_use_terra board_use_tglrvp board_use_tidus board_use_tricky board_use_trogdor board_use_trogdor-arc-r board_use_trogdor-kernelnext board_use_trogdor64 board_use_trogdor64-manatee board_use_ultima board_use_umaro board_use_veyron board_use_veyron_fievel board_use_veyron_gus board_use_veyron_jaq board_use_veyron_jerry board_use_veyron_mickey board_use_veyron_mighty board_use_veyron_minnie board_use_veyron_minnie-cheets board_use_veyron_nicky board_use_veyron_pinky board_use_veyron_remy board_use_veyron_rialto board_use_veyron_shark board_use_veyron_speedy board_use_veyron_speedy-cheets board_use_veyron_thea board_use_veyron_tiger board_use_viking board_use_viking-poc2 board_use_volteer board_use_volteer-borealis board_use_volteer-kernelnext board_use_volteer-manatee board_use_whirlwind board_use_whlrvp board_use_winky board_use_wizpig board_use_wolf board_use_wristpin board_use_wsb board_use_x30evb board_use_x32-generic board_use_x86-agz board_use_x86-alex board_use_x86-alex32 board_use_x86-alex32_he board_use_x86-alex_he board_use_x86-alex_hubble board_use_x86-dogfood board_use_x86-generic board_use_x86-generic_embedded board_use_x86-mario board_use_x86-mario64 board_use_x86-zgb board_use_x86-zgb32 board_use_x86-zgb32_he board_use_x86-zgb_he board_use_zako board_use_zoombini board_use_zork board_use_zork-arc-r board_use_zork-borealis board_use_zork-kernelnext board_use_zork-minios cros_host unibuild apply_patches -asan buildtest +clang -compilation_database -device_tree +dt_compression +fit_compression_kernel_lz4 fit_compression_kernel_lzma firmware_install frozen_gcc -kernel_sources kernel_warning_level_1 kernel_warning_level_2 kernel_warning_level_3 +lld +llvm_ias nfc -wireless42 -wifi_testbed_ap -boot_dts_device_tree -nowerror -ppp -binder -selinux_develop -transparent_hugepage tpm2 -kernel_afdo -kernel_afdo_verify +vdso32 -criu -docker -lxc acpi_ac acpi_debug allocator_slab apex binder blkdevram builtin_driver_amdgpu ca0132 cec criu cros_ec_mec debug debugobjects devdebug diskswap dmadebug dm_snapshot docker dp_cec drm_dp_aux_chardev dwc2_dual_role dyndebug ec2_guest_net eve_bt_hacks eve_wifi_etsi factory_netboot_ramfs factory_shim_ramfs failslab fbconsole goldfish highmem hypervisor_guest i2cdev iioservice irqsoff_tracer iscsi lockdown lxc kasan kcov kcsan kernel_compress_xz kexec_file kgdb kmemleak kvm kvm_invept_global kvm_host kvm_nested lockdebug lockstat mbim memory_debug minios_ramfs module_sign nfc nfs nowerror pca954x pcserial plan9 ppp preempt_tracer pvrdebug qmi realtekpstor recovery_ramfs samsung_serial sched_tracer selinux_develop socketmon systemtap tpm transparent_hugepage ubsan usb_gadget usb_gadget_acm usb_gadget_audio usb_gadget_ncm usbip vfat virtio_balloon vivid vlan vtpm_proxy vmware_guest vtconsole wifi_testbed_ap wifi_diag x32 xen_guest builtin_fw_amdgpu builtin_fw_amdgpu_carrizo builtin_fw_amdgpu_green_sardine builtin_fw_amdgpu_picasso builtin_fw_amdgpu_raven2 builtin_fw_amdgpu_renoir builtin_fw_amdgpu_stoney builtin_fw_guc_adl builtin_fw_guc_g9 builtin_fw_guc_jsl builtin_fw_guc_tgl builtin_fw_huc_adl builtin_fw_huc_g9 builtin_fw_huc_jsl builtin_fw_huc_tgl builtin_fw_mali_g57 builtin_fw_t124_xusb builtin_fw_t210_bpmp builtin_fw_t210_nouveau builtin_fw_t210_xusb builtin_fw_vega12 builtin_fw_x86_aml_ucode builtin_fw_x86_apl_ucode builtin_fw_x86_bdw_ucode builtin_fw_x86_bsw_ucode builtin_fw_x86_byt_ucode builtin_fw_x86_cml_ucode builtin_fw_x86_glk_ucode builtin_fw_x86_jsl_ucode builtin_fw_x86_kbl_ucode builtin_fw_x86_skl_ucode builtin_fw_x86_whl_ucode
 KEYWORDS=*
 LICENSE=GPL-2
 PROPERTIES=live
-REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
+REQUIRED_USE=compilation_database? ( clang ) ?? ( fit_compression_kernel_lz4 fit_compression_kernel_lzma ) frozen_gcc? ( !clang ) lld? ( clang ) llvm_ias? ( clang ) kgdb? ( vtconsole ) ?? ( factory_netboot_ramfs factory_shim_ramfs minios_ramfs recovery_ramfs ) factory_netboot_ramfs? ( i2cdev ) factory_shim_ramfs? ( i2cdev ) recovery_ramfs? ( i2cdev ) factory_netboot_ramfs? ( || ( tpm tpm2 ) ) factory_shim_ramfs? ( || ( tpm tpm2 ) ) recovery_ramfs? ( || ( tpm tpm2 ) )
 RESTRICT=binchecks mirror
 SLOT=0
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	f20f4e190885bd31e207124e79022246	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	a25a439fba980c7ee4c3847ca21c4ec1	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-board	5a35dc532daffcd208914d59a1adb8f4	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-kernel2	2c7600e1fd5d5e154c7012d9e7e88d43	cros-workon	ff100259492312ff6570e490bcb9a320	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=101da4609976a9fd1b83c50b61864495
diff --git a/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre408248 b/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre408248
deleted file mode 100644
index f762d15..0000000
--- a/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre408248
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test unpack
-DEPEND=sys-devel/llvm sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Compiler runtime library for clang
-EAPI=6
-HOMEPAGE=http://compiler-rt.llvm.org/
-IUSE=+llvm-crt llvm-next llvm-tot
-KEYWORDS=*
-LICENSE=UoI-NCSA
-PROPERTIES=live
-SLOT=0
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=38a915fd80c048e777875b9293233d0e
diff --git a/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre408248-r3 b/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre408248-r3
deleted file mode 100644
index f762d15..0000000
--- a/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre408248-r3
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test unpack
-DEPEND=sys-devel/llvm sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Compiler runtime library for clang
-EAPI=6
-HOMEPAGE=http://compiler-rt.llvm.org/
-IUSE=+llvm-crt llvm-next llvm-tot
-KEYWORDS=*
-LICENSE=UoI-NCSA
-PROPERTIES=live
-SLOT=0
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=38a915fd80c048e777875b9293233d0e
diff --git a/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre422132 b/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre422132
new file mode 100644
index 0000000..4949766
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre422132
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure install prepare setup test unpack
+DEPEND=sys-devel/llvm sys-devel/make >=dev-util/cmake-3.9.6
+DESCRIPTION=Compiler runtime library for clang
+EAPI=6
+HOMEPAGE=http://compiler-rt.llvm.org/
+IUSE=+llvm-crt llvm-next llvm-tot
+KEYWORDS=*
+LICENSE=UoI-NCSA
+PROPERTIES=live
+SLOT=0
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=2bb116a44458d79790bd6d725fb4eecb
diff --git a/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre422132-r4 b/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre422132-r4
new file mode 100644
index 0000000..4949766
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/compiler-rt-12.0_pre422132-r4
@@ -0,0 +1,12 @@
+DEFINED_PHASES=compile configure install prepare setup test unpack
+DEPEND=sys-devel/llvm sys-devel/make >=dev-util/cmake-3.9.6
+DESCRIPTION=Compiler runtime library for clang
+EAPI=6
+HOMEPAGE=http://compiler-rt.llvm.org/
+IUSE=+llvm-crt llvm-next llvm-tot
+KEYWORDS=*
+LICENSE=UoI-NCSA
+PROPERTIES=live
+SLOT=0
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=2bb116a44458d79790bd6d725fb4eecb
diff --git a/metadata/md5-cache/sys-libs/gcc-libs-10.2.0 b/metadata/md5-cache/sys-libs/gcc-libs-10.2.0
new file mode 100644
index 0000000..ef26b0b
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/gcc-libs-10.2.0
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install
+DESCRIPTION=The GNU Compiler Collection. This builds and installs the libgcc, libstdc++, and libgo libraries. It is board-specific.
+EAPI=7
+IUSE=go hardened hardfp libatomic +thumb vtable_verify
+KEYWORDS=*
+LICENSE=GPL-3 LGPL-3 FDL-1.2
+REQUIRED_USE=go? ( libatomic )
+SLOT=0
+SRC_URI=mirror://gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7f54585bee54267a3a56aa2e81679556
diff --git a/metadata/md5-cache/sys-libs/gcc-libs-10.2.0-r1 b/metadata/md5-cache/sys-libs/gcc-libs-10.2.0-r1
new file mode 100644
index 0000000..ef26b0b
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/gcc-libs-10.2.0-r1
@@ -0,0 +1,11 @@
+DEFINED_PHASES=compile configure install
+DESCRIPTION=The GNU Compiler Collection. This builds and installs the libgcc, libstdc++, and libgo libraries. It is board-specific.
+EAPI=7
+IUSE=go hardened hardfp libatomic +thumb vtable_verify
+KEYWORDS=*
+LICENSE=GPL-3 LGPL-3 FDL-1.2
+REQUIRED_USE=go? ( libatomic )
+SLOT=0
+SRC_URI=mirror://gnu/gcc/gcc-10.2.0/gcc-10.2.0.tar.xz
+_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7f54585bee54267a3a56aa2e81679556
diff --git a/metadata/md5-cache/sys-libs/gcc-libs-4.9.2-r50 b/metadata/md5-cache/sys-libs/gcc-libs-4.9.2-r50
deleted file mode 100644
index 24e7e65..0000000
--- a/metadata/md5-cache/sys-libs/gcc-libs-4.9.2-r50
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup unpack
-DESCRIPTION=The GNU Compiler Collection. This builds and installs the libgcc, libstdc++, and libgo libraries. It is board-specific.
-EAPI=7
-IUSE=go hardened hardfp libatomic mounted_gcc +thumb vtable_verify cros_host cros_workon_tree_aff2e49c815be09f20e4346cc98144b604388cb7
-KEYWORDS=*
-LICENSE=GPL-3 LGPL-3 FDL-1.2
-PROPERTIES=live
-REQUIRED_USE=go? ( libatomic )
-SLOT=0/4.9.2-r50
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f7722e8a06ed254a941cb6d8b369f892
diff --git a/metadata/md5-cache/sys-libs/gcc-libs-9999 b/metadata/md5-cache/sys-libs/gcc-libs-9999
deleted file mode 100644
index 4a5b104..0000000
--- a/metadata/md5-cache/sys-libs/gcc-libs-9999
+++ /dev/null
@@ -1,12 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=compile configure info install setup unpack
-DESCRIPTION=The GNU Compiler Collection. This builds and installs the libgcc, libstdc++, and libgo libraries. It is board-specific.
-EAPI=7
-IUSE=go hardened hardfp libatomic mounted_gcc +thumb vtable_verify cros_host cros_workon_tree_
-KEYWORDS=~*
-LICENSE=GPL-3 LGPL-3 FDL-1.2
-PROPERTIES=live
-REQUIRED_USE=go? ( libatomic )
-SLOT=0/9999
-_eclasses_=binutils-funcs	6207477a739f6f25d13da27b9cc00160	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8e5d1aab1d882ee139f788d54653891b
diff --git a/metadata/md5-cache/sys-libs/glibc-2.27-r20 b/metadata/md5-cache/sys-libs/glibc-2.27-r20
deleted file mode 100644
index eeefb5f..0000000
--- a/metadata/md5-cache/sys-libs/glibc-2.27-r20
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install postinst preinst prepare test unpack
-DEPEND=nscd? ( selinux? ( audit? ( sys-process/audit ) caps? ( sys-libs/libcap ) ) ) suid? ( caps? ( sys-libs/libcap ) ) selinux? ( sys-libs/libselinux ) systemtap? ( dev-util/systemtap ) >=app-misc/pax-utils-0.1.10 sys-devel/bison !<sys-apps/sandbox-1.6 !<sys-apps/portage-2.1.2 !<sys-devel/bison-2.7 doc? ( sys-apps/texinfo ) >=sys-devel/binutils-2.24 >=sys-devel/gcc-4.9 virtual/os-headers sys-devel/gnuconfig virtual/pkgconfig
-DESCRIPTION=GNU libc C library
-EAPI=5
-HOMEPAGE=https://www.gnu.org/software/libc/
-IUSE=audit caps compile-locales crosscompile_opts_headers-only doc gd hardened headers-only +multiarch multilib nscd profile selinux suid systemtap vanilla
-KEYWORDS=*
-LICENSE=LGPL-2.1+ BSD HPND ISC inner-net rc PCRE
-PDEPEND=!vanilla? ( sys-libs/timezone-data )
-RDEPEND=nscd? ( selinux? ( audit? ( sys-process/audit ) caps? ( sys-libs/libcap ) ) ) suid? ( caps? ( sys-libs/libcap ) ) selinux? ( sys-libs/libselinux ) systemtap? ( dev-util/systemtap ) sys-apps/gentoo-functions !sys-kernel/ps3-sources !sys-libs/nss-db vanilla? ( !sys-libs/timezone-data )
-RESTRICT=strip
-SLOT=2.2
-SRC_URI=mirror://gnu/glibc/glibc-2.27.tar.xz https://dev.gentoo.org/~dilfridge/distfiles/glibc-2.27-patches-3.tar.bz2 multilib? ( https://dev.gentoo.org/~dilfridge/distfiles/gcc-multilib-bootstrap-20180511.tar.xz )
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnuconfig	9200bfc8e0184357abfb86a08edd4fc3	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	prefix	e51c7882b7b721e54e684f7eb143cbfe	preserve-libs	ef207dc62baddfddfd39a164d9797648	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72
-_md5_=2b8fb74478a08ebeb8c9cf5a2530b8c5
diff --git a/metadata/md5-cache/sys-libs/glibc-2.32-r14 b/metadata/md5-cache/sys-libs/glibc-2.32-r14
new file mode 100644
index 0000000..280dde7
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/glibc-2.32-r14
@@ -0,0 +1,16 @@
+BDEPEND=|| ( dev-lang/python:3.9 dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) >=app-misc/pax-utils-0.1.10 sys-devel/bison doc? ( sys-apps/texinfo ) !compile-locales? ( app-arch/gzip sys-apps/grep virtual/awk ) >=sys-devel/binutils-2.24 >=sys-devel/gcc-6 virtual/pkgconfig
+DEFINED_PHASES=compile configure install postinst preinst prepare setup test unpack
+DEPEND=gd? ( media-libs/gd:2= ) nscd? ( selinux? ( audit? ( sys-process/audit ) caps? ( sys-libs/libcap ) ) ) suid? ( caps? ( sys-libs/libcap ) ) selinux? ( sys-libs/libselinux ) systemtap? ( dev-util/systemtap ) !<net-misc/openssh-8.1_p1-r2 compile-locales? ( app-arch/gzip sys-apps/grep virtual/awk ) test? ( >=net-dns/libidn2-2.3.0 ) virtual/os-headers sys-devel/gnuconfig
+DESCRIPTION=GNU libc C library
+EAPI=7
+HOMEPAGE=https://www.gnu.org/software/libc/
+IUSE=audit caps cet compile-locales +crypt custom-cflags doc gd headers-only +multiarch multilib nscd profile selinux +ssp +static-libs static-pie suid systemtap test vanilla crosscompile_opts_headers-only
+KEYWORDS=*
+LICENSE=LGPL-2.1+ BSD HPND ISC inner-net rc PCRE
+PDEPEND=gd? ( media-libs/gd:2= ) nscd? ( selinux? ( audit? ( sys-process/audit ) caps? ( sys-libs/libcap ) ) ) suid? ( caps? ( sys-libs/libcap ) ) selinux? ( sys-libs/libselinux ) systemtap? ( dev-util/systemtap ) !<net-misc/openssh-8.1_p1-r2 app-arch/gzip sys-apps/grep virtual/awk sys-apps/gentoo-functions !vanilla? ( sys-libs/timezone-data )
+RDEPEND=>=net-dns/libidn2-2.3.0 vanilla? ( !sys-libs/timezone-data )
+RESTRICT=!test? ( test )
+SLOT=2.2
+SRC_URI=mirror://gnu/glibc/glibc-2.32.tar.xz https://dev.gentoo.org/~dilfridge/distfiles/glibc-2.32-patches-8.tar.xz riscv? ( https://dev.gentoo.org/~dilfridge/distfiles/backport-rv32.txz ) https://gitweb.gentoo.org/proj/locale-gen.git/snapshot/locale-gen-2.10.tar.gz multilib? ( https://dev.gentoo.org/~dilfridge/distfiles/gcc-multilib-bootstrap-20201208.tar.xz )
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnuconfig	9200bfc8e0184357abfb86a08edd4fc3	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	prefix	e51c7882b7b721e54e684f7eb143cbfe	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=e88ba46c36533c603baec8a80a87f811
diff --git a/metadata/md5-cache/sys-libs/ldb-2.0.12 b/metadata/md5-cache/sys-libs/ldb-2.0.12
new file mode 100644
index 0000000..90c444f
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/ldb-2.0.12
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=dev-libs/libxslt doc? ( app-doc/doxygen ) virtual/pkgconfig python_single_target_python3_6? ( dev-lang/python:3.6[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) !elibc_FreeBSD? ( dev-libs/libbsd[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-libs/popt[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/cmocka-1.1.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/talloc-2.2.0[python?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tdb-1.4.2[python?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tevent-0.10.0[python(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ldap? ( net-nds/openldap ) lmdb? ( >=dev-db/lmdb-0.9.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python? ( python_single_target_python3_6? ( dev-lang/python:3.6[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) )
+DESCRIPTION=An LDAP-like embedded database
+EAPI=6
+HOMEPAGE=https://ldb.samba.org
+IUSE=doc +ldap +lmdb python test python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=LGPL-3
+RDEPEND=!elibc_FreeBSD? ( dev-libs/libbsd[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-libs/popt[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/cmocka-1.1.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/talloc-2.2.0[python?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tdb-1.4.2[python?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tevent-0.10.0[python(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ldap? ( net-nds/openldap ) lmdb? ( >=dev-db/lmdb-0.9.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python? ( python_single_target_python3_6? ( dev-lang/python:3.6[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) )
+REQUIRED_USE=python? ( ^^ ( python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 ) ) test? ( python )
+RESTRICT=!test? ( test )
+SLOT=0/2.0.12
+SRC_URI=https://www.samba.org/ftp/pub/ldb/ldb-2.0.12.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	waf-utils	0af0bf9207f47292d40e888b9687763c
+_md5_=fc14d2da6d5850fd1f1b744340b0710a
diff --git a/metadata/md5-cache/sys-libs/ldb-2.0.12-r1 b/metadata/md5-cache/sys-libs/ldb-2.0.12-r1
new file mode 100644
index 0000000..90c444f
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/ldb-2.0.12-r1
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst prepare setup test
+DEPEND=dev-libs/libxslt doc? ( app-doc/doxygen ) virtual/pkgconfig python_single_target_python3_6? ( dev-lang/python:3.6[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) !elibc_FreeBSD? ( dev-libs/libbsd[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-libs/popt[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/cmocka-1.1.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/talloc-2.2.0[python?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tdb-1.4.2[python?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tevent-0.10.0[python(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ldap? ( net-nds/openldap ) lmdb? ( >=dev-db/lmdb-0.9.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python? ( python_single_target_python3_6? ( dev-lang/python:3.6[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) )
+DESCRIPTION=An LDAP-like embedded database
+EAPI=6
+HOMEPAGE=https://ldb.samba.org
+IUSE=doc +ldap +lmdb python test python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=LGPL-3
+RDEPEND=!elibc_FreeBSD? ( dev-libs/libbsd[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-libs/popt[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=dev-util/cmocka-1.1.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/talloc-2.2.0[python?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tdb-1.4.2[python?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/tevent-0.10.0[python(+)?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ldap? ( net-nds/openldap ) lmdb? ( >=dev-db/lmdb-0.9.16[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) python? ( python_single_target_python3_6? ( dev-lang/python:3.6[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_6] ) python_single_target_python3_7? ( dev-lang/python:3.7[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_7] ) python_single_target_python3_8? ( dev-lang/python:3.8[threads(+)] >=dev-lang/python-exec-2:=[python_targets_python3_8] ) )
+REQUIRED_USE=python? ( ^^ ( python_single_target_python3_6 python_single_target_python3_7 python_single_target_python3_8 ) ) test? ( python )
+RESTRICT=!test? ( test )
+SLOT=0/2.0.12
+SRC_URI=https://www.samba.org/ftp/pub/ldb/ldb-2.0.12.tar.gz
+_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-single-r1	674c48c926cbb44e91b656e0399d8f54	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	waf-utils	0af0bf9207f47292d40e888b9687763c
+_md5_=fc14d2da6d5850fd1f1b744340b0710a
diff --git a/metadata/md5-cache/sys-libs/libcxx-12.0_pre408248 b/metadata/md5-cache/sys-libs/libcxx-12.0_pre408248
deleted file mode 100644
index 0767954..0000000
--- a/metadata/md5-cache/sys-libs/libcxx-12.0_pre408248
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test unpack
-DEPEND=libcxxabi? ( sys-libs/libcxxabi[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) ) !cros_host? ( sys-libs/gcc-libs ) cros_host? ( sys-devel/llvm ) app-arch/xz-utils dev-util/ninja >=dev-util/cmake-3.9.6
-DESCRIPTION=New implementation of the C++ standard library, targeting C++11
-EAPI=6
-HOMEPAGE=http://libcxx.llvm.org/
-IUSE=+compiler-rt cros_host elibc_glibc elibc_musl +libcxxabi libcxxrt libunwind llvm-next llvm-tot msan +static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=|| ( UoI-NCSA MIT )
-PROPERTIES=live
-RDEPEND=libcxxabi? ( sys-libs/libcxxabi[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) ) !cros_host? ( sys-libs/gcc-libs )
-REQUIRED_USE=libunwind? ( || ( libcxxabi libcxxrt ) ) ?? ( libcxxabi libcxxrt )
-SLOT=0
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	llvm	aa54e879d157ef21f6ecf31f255eaa2e	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=4b08069846b7989dbd4cf7e14650a4f0
diff --git a/metadata/md5-cache/sys-libs/libcxx-12.0_pre408248-r3 b/metadata/md5-cache/sys-libs/libcxx-12.0_pre408248-r3
deleted file mode 100644
index 0767954..0000000
--- a/metadata/md5-cache/sys-libs/libcxx-12.0_pre408248-r3
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test unpack
-DEPEND=libcxxabi? ( sys-libs/libcxxabi[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) ) !cros_host? ( sys-libs/gcc-libs ) cros_host? ( sys-devel/llvm ) app-arch/xz-utils dev-util/ninja >=dev-util/cmake-3.9.6
-DESCRIPTION=New implementation of the C++ standard library, targeting C++11
-EAPI=6
-HOMEPAGE=http://libcxx.llvm.org/
-IUSE=+compiler-rt cros_host elibc_glibc elibc_musl +libcxxabi libcxxrt libunwind llvm-next llvm-tot msan +static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=|| ( UoI-NCSA MIT )
-PROPERTIES=live
-RDEPEND=libcxxabi? ( sys-libs/libcxxabi[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) ) !cros_host? ( sys-libs/gcc-libs )
-REQUIRED_USE=libunwind? ( || ( libcxxabi libcxxrt ) ) ?? ( libcxxabi libcxxrt )
-SLOT=0
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	llvm	aa54e879d157ef21f6ecf31f255eaa2e	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=4b08069846b7989dbd4cf7e14650a4f0
diff --git a/metadata/md5-cache/sys-libs/libcxx-12.0_pre422132 b/metadata/md5-cache/sys-libs/libcxx-12.0_pre422132
new file mode 100644
index 0000000..a53a949
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/libcxx-12.0_pre422132
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare setup test unpack
+DEPEND=libcxxabi? ( sys-libs/libcxxabi[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) ) !cros_host? ( sys-libs/gcc-libs ) cros_host? ( sys-devel/llvm ) app-arch/xz-utils dev-util/ninja >=dev-util/cmake-3.9.6
+DESCRIPTION=New implementation of the C++ standard library, targeting C++11
+EAPI=6
+HOMEPAGE=http://libcxx.llvm.org/
+IUSE=+compiler-rt cros_host elibc_glibc elibc_musl +libcxxabi libcxxrt libunwind llvm-next llvm-tot msan +static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( UoI-NCSA MIT )
+PROPERTIES=live
+RDEPEND=libcxxabi? ( sys-libs/libcxxabi[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) ) !cros_host? ( sys-libs/gcc-libs )
+REQUIRED_USE=libunwind? ( || ( libcxxabi libcxxrt ) ) ?? ( libcxxabi libcxxrt )
+SLOT=0
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	llvm	aa54e879d157ef21f6ecf31f255eaa2e	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=5809ebc495ccd047ebdeb96e2dae4363
diff --git a/metadata/md5-cache/sys-libs/libcxx-12.0_pre422132-r1 b/metadata/md5-cache/sys-libs/libcxx-12.0_pre422132-r1
new file mode 100644
index 0000000..a53a949
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/libcxx-12.0_pre422132-r1
@@ -0,0 +1,14 @@
+DEFINED_PHASES=compile configure install prepare setup test unpack
+DEPEND=libcxxabi? ( sys-libs/libcxxabi[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) ) !cros_host? ( sys-libs/gcc-libs ) cros_host? ( sys-devel/llvm ) app-arch/xz-utils dev-util/ninja >=dev-util/cmake-3.9.6
+DESCRIPTION=New implementation of the C++ standard library, targeting C++11
+EAPI=6
+HOMEPAGE=http://libcxx.llvm.org/
+IUSE=+compiler-rt cros_host elibc_glibc elibc_musl +libcxxabi libcxxrt libunwind llvm-next llvm-tot msan +static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( UoI-NCSA MIT )
+PROPERTIES=live
+RDEPEND=libcxxabi? ( sys-libs/libcxxabi[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) libcxxrt? ( sys-libs/libcxxrt[libunwind=,static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) ) !cros_host? ( sys-libs/gcc-libs )
+REQUIRED_USE=libunwind? ( || ( libcxxabi libcxxrt ) ) ?? ( libcxxabi libcxxrt )
+SLOT=0
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	llvm	aa54e879d157ef21f6ecf31f255eaa2e	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=5809ebc495ccd047ebdeb96e2dae4363
diff --git a/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre408248 b/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre408248
deleted file mode 100644
index a72ef3a..0000000
--- a/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre408248
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test unpack
-DEPEND=libunwind? ( || ( >=sys-libs/libunwind-1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/llvm-libunwind-3.9.0-r1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) !cros_host? ( sys-libs/gcc-libs ) cros_host? ( sys-devel/llvm ) dev-util/ninja >=dev-util/cmake-3.9.6
-DESCRIPTION=Low level support for a standard C++ library
-EAPI=6
-HOMEPAGE=http://libcxxabi.llvm.org/
-IUSE=+compiler-rt cros_host libunwind msan llvm-next llvm-tot +static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=|| ( UoI-NCSA MIT )
-PROPERTIES=live
-RDEPEND=libunwind? ( || ( >=sys-libs/libunwind-1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/llvm-libunwind-3.9.0-r1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) !cros_host? ( sys-libs/gcc-libs )
-SLOT=0
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	llvm	aa54e879d157ef21f6ecf31f255eaa2e	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=7185f1bed0be431df58436c09cefda5f
diff --git a/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre408248-r3 b/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre408248-r3
deleted file mode 100644
index a72ef3a..0000000
--- a/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre408248-r3
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test unpack
-DEPEND=libunwind? ( || ( >=sys-libs/libunwind-1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/llvm-libunwind-3.9.0-r1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) !cros_host? ( sys-libs/gcc-libs ) cros_host? ( sys-devel/llvm ) dev-util/ninja >=dev-util/cmake-3.9.6
-DESCRIPTION=Low level support for a standard C++ library
-EAPI=6
-HOMEPAGE=http://libcxxabi.llvm.org/
-IUSE=+compiler-rt cros_host libunwind msan llvm-next llvm-tot +static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=|| ( UoI-NCSA MIT )
-PROPERTIES=live
-RDEPEND=libunwind? ( || ( >=sys-libs/libunwind-1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/llvm-libunwind-3.9.0-r1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) !cros_host? ( sys-libs/gcc-libs )
-SLOT=0
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	llvm	aa54e879d157ef21f6ecf31f255eaa2e	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=7185f1bed0be431df58436c09cefda5f
diff --git a/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre422132 b/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre422132
new file mode 100644
index 0000000..7258962
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre422132
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare setup test unpack
+DEPEND=libunwind? ( || ( >=sys-libs/libunwind-1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/llvm-libunwind-3.9.0-r1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) !cros_host? ( sys-libs/gcc-libs ) cros_host? ( sys-devel/llvm ) dev-util/ninja >=dev-util/cmake-3.9.6
+DESCRIPTION=Low level support for a standard C++ library
+EAPI=6
+HOMEPAGE=http://libcxxabi.llvm.org/
+IUSE=+compiler-rt cros_host libunwind msan llvm-next llvm-tot +static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( UoI-NCSA MIT )
+PROPERTIES=live
+RDEPEND=libunwind? ( || ( >=sys-libs/libunwind-1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/llvm-libunwind-3.9.0-r1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) !cros_host? ( sys-libs/gcc-libs )
+SLOT=0
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	llvm	aa54e879d157ef21f6ecf31f255eaa2e	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=272b33bdc7465632780bbe1ba85fbb1c
diff --git a/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre422132-r1 b/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre422132-r1
new file mode 100644
index 0000000..7258962
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/libcxxabi-12.0_pre422132-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare setup test unpack
+DEPEND=libunwind? ( || ( >=sys-libs/libunwind-1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/llvm-libunwind-3.9.0-r1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) !cros_host? ( sys-libs/gcc-libs ) cros_host? ( sys-devel/llvm ) dev-util/ninja >=dev-util/cmake-3.9.6
+DESCRIPTION=Low level support for a standard C++ library
+EAPI=6
+HOMEPAGE=http://libcxxabi.llvm.org/
+IUSE=+compiler-rt cros_host libunwind msan llvm-next llvm-tot +static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( UoI-NCSA MIT )
+PROPERTIES=live
+RDEPEND=libunwind? ( || ( >=sys-libs/libunwind-1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/llvm-libunwind-3.9.0-r1[static-libs?,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) !cros_host? ( sys-libs/gcc-libs )
+SLOT=0
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	llvm	aa54e879d157ef21f6ecf31f255eaa2e	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=272b33bdc7465632780bbe1ba85fbb1c
diff --git a/metadata/md5-cache/sys-libs/lithium-0.0.1-r3 b/metadata/md5-cache/sys-libs/lithium-0.0.1-r3
index 1eab2dc..bb0b782 100644
--- a/metadata/md5-cache/sys-libs/lithium-0.0.1-r3
+++ b/metadata/md5-cache/sys-libs/lithium-0.0.1-r3
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=71ef491deae7a8296145e16929f587eb
diff --git a/metadata/md5-cache/sys-libs/lithium-9999 b/metadata/md5-cache/sys-libs/lithium-9999
index 9525e43..e0036c1 100644
--- a/metadata/md5-cache/sys-libs/lithium-9999
+++ b/metadata/md5-cache/sys-libs/lithium-9999
@@ -8,5 +8,5 @@
 LICENSE=BSD-Google
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
 _md5_=33359022de93aabda819c52552eae6f2
diff --git a/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre408248 b/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre408248
deleted file mode 100644
index 4588660..0000000
--- a/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre408248
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test unpack
-DEPEND=!sys-libs/libunwind cros_host? ( sys-devel/llvm ) sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=C++ runtime stack unwinder from LLVM
-EAPI=6
-HOMEPAGE=https://github.com/llvm-mirror/libunwind
-IUSE=cros_host debug llvm-next llvm-tot +static-libs +shared-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=|| ( UoI-NCSA MIT )
-PROPERTIES=live
-RDEPEND=!sys-libs/libunwind
-SLOT=0
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=68433a1dfab7be2ea8328c0d4c428d04
diff --git a/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre408248-r2 b/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre408248-r2
deleted file mode 100644
index 4588660..0000000
--- a/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre408248-r2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup test unpack
-DEPEND=!sys-libs/libunwind cros_host? ( sys-devel/llvm ) sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=C++ runtime stack unwinder from LLVM
-EAPI=6
-HOMEPAGE=https://github.com/llvm-mirror/libunwind
-IUSE=cros_host debug llvm-next llvm-tot +static-libs +shared-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=|| ( UoI-NCSA MIT )
-PROPERTIES=live
-RDEPEND=!sys-libs/libunwind
-SLOT=0
-_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=68433a1dfab7be2ea8328c0d4c428d04
diff --git a/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre422132 b/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre422132
new file mode 100644
index 0000000..16cc745
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre422132
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare setup test unpack
+DEPEND=!sys-libs/libunwind cros_host? ( sys-devel/llvm ) sys-devel/make >=dev-util/cmake-3.9.6
+DESCRIPTION=C++ runtime stack unwinder from LLVM
+EAPI=6
+HOMEPAGE=https://github.com/llvm-mirror/libunwind
+IUSE=cros_host debug llvm-next llvm-tot +static-libs +shared-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( UoI-NCSA MIT )
+PROPERTIES=live
+RDEPEND=!sys-libs/libunwind
+SLOT=0
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=aa706672074a18202cccbfc445dc67f7
diff --git a/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre422132-r1 b/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre422132-r1
new file mode 100644
index 0000000..16cc745
--- /dev/null
+++ b/metadata/md5-cache/sys-libs/llvm-libunwind-12.0_pre422132-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare setup test unpack
+DEPEND=!sys-libs/libunwind cros_host? ( sys-devel/llvm ) sys-devel/make >=dev-util/cmake-3.9.6
+DESCRIPTION=C++ runtime stack unwinder from LLVM
+EAPI=6
+HOMEPAGE=https://github.com/llvm-mirror/libunwind
+IUSE=cros_host debug llvm-next llvm-tot +static-libs +shared-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( UoI-NCSA MIT )
+PROPERTIES=live
+RDEPEND=!sys-libs/libunwind
+SLOT=0
+_eclasses_=cmake-multilib	b396704c8c04bb210b7b45dff5c67fea	cmake-utils	91d6ef31dc426240577497cacbf2508c	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-llvm	bb582d113e05e1d252d1c86ac2983b68	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=aa706672074a18202cccbfc445dc67f7
diff --git a/metadata/md5-cache/sys-power/dptf-3_10-8.0.10001-r2 b/metadata/md5-cache/sys-power/dptf-3_10-8.0.10001-r2
deleted file mode 100644
index df79d58..0000000
--- a/metadata/md5-cache/sys-power/dptf-3_10-8.0.10001-r2
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Intel(R) Dynamic Platform & Thermal Framework
-EAPI=6
-HOMEPAGE=https://01.org/dptf/
-IUSE=debug
-KEYWORDS=-* amd64 x86
-LICENSE=Apache-2.0 GPL-2 BSD
-SLOT=0
-SRC_URI=https://github.com/01org/dptf/archive/8.0.10001.tar.gz -> dptf-8.0.10001.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=1bbf3685655afcc7300e7063a0aa3885
diff --git a/metadata/md5-cache/sys-power/dptf-8.8.10300-r1 b/metadata/md5-cache/sys-power/dptf-8.8.10300-r1
deleted file mode 100644
index 307556598a..0000000
--- a/metadata/md5-cache/sys-power/dptf-8.8.10300-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools sys-apps/dbus sys-libs/ncurses sys-libs/readline sys-devel/make >=dev-util/cmake-3.9.6
-DESCRIPTION=Intel(R) Dynamic Platform & Thermal Framework
-EAPI=6
-HOMEPAGE=https://01.org/dptf/
-IUSE=debug generated_cros_config unibuild
-KEYWORDS=-* amd64 x86
-LICENSE=Apache-2.0 GPL-2 BSD
-RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools sys-apps/dbus sys-libs/ncurses sys-libs/readline
-SLOT=0
-SRC_URI=https://github.com/intel/dptf/archive/8.8.10300.tar.gz -> dptf-8.8.10300.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=abc16729e0e26653dff250f4f757eb64
diff --git a/metadata/md5-cache/sys-power/dptf-9.0.10500-r1 b/metadata/md5-cache/sys-power/dptf-9.0.10500-r1
new file mode 100644
index 0000000..e2d4d8a
--- /dev/null
+++ b/metadata/md5-cache/sys-power/dptf-9.0.10500-r1
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools sys-apps/dbus sys-libs/ncurses sys-libs/readline sys-devel/make >=dev-util/cmake-3.9.6
+DESCRIPTION=Intel(R) Dynamic Platform & Thermal Framework
+EAPI=6
+HOMEPAGE=https://01.org/dptf/
+IUSE=debug generated_cros_config unibuild
+KEYWORDS=-* amd64 x86
+LICENSE=Apache-2.0 GPL-2 BSD
+RDEPEND=unibuild? ( !generated_cros_config? ( chromeos-base/chromeos-config ) generated_cros_config? ( chromeos-base/chromeos-config-bsp:= ) ) chromeos-base/chromeos-config-tools sys-apps/dbus sys-libs/ncurses sys-libs/readline
+SLOT=0
+SRC_URI=https://github.com/intel/dptf/archive/9.0.10500.tar.gz -> dptf-9.0.10500.tar.gz
+_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=abc16729e0e26653dff250f4f757eb64
diff --git a/metadata/md5-cache/sys-power/dptf-policy-ap-8.8.10300-r2 b/metadata/md5-cache/sys-power/dptf-policy-ap-8.8.10300-r2
deleted file mode 100644
index fffb37e..0000000
--- a/metadata/md5-cache/sys-power/dptf-policy-ap-8.8.10300-r2
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Adaptive Performance Policy for Intel(R) Dynamic Platform & Thermal Framework
-EAPI=5
-KEYWORDS=*
-LICENSE=LICENSE.intel-dptf-private
-RDEPEND=!sys-power/dptf-atlas-private !sys-power/dptf-dedede-private !sys-power/dptf-drallion-private !sys-power/dptf-hatch-private !sys-power/dptf-volteer-private
-RESTRICT=mirror
-SLOT=0
-SRC_URI=gs://chromeos-binaries/HOME/bcs-chipset-kbl-private/chipset-kbl-private/dptf/DptfPolicyAdaptivePerformance-8.8.10300.tbz2
-_eclasses_=cros-binary	1c6eaa4fc56e7f712aa6c195e2ce5b73
-_md5_=0ed241fd24841732f235366414e7ac9b
diff --git a/metadata/md5-cache/sys-power/dptf-policy-ap-9.0.10500-r1 b/metadata/md5-cache/sys-power/dptf-policy-ap-9.0.10500-r1
new file mode 100644
index 0000000..a3a9d75
--- /dev/null
+++ b/metadata/md5-cache/sys-power/dptf-policy-ap-9.0.10500-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=Adaptive Performance Policy for Intel(R) Dynamic Platform & Thermal Framework
+EAPI=5
+KEYWORDS=*
+LICENSE=LICENSE.intel-dptf-private
+RESTRICT=mirror
+SLOT=0
+SRC_URI=gs://chromeos-binaries/HOME/bcs-chipset-kbl-private/chipset-kbl-private/dptf/DptfPolicyAdaptivePerformance-9.0.10500.tbz2
+_eclasses_=cros-binary	1c6eaa4fc56e7f712aa6c195e2ce5b73
+_md5_=dfe8b2e589a2412bf1194d171aa10134
diff --git a/metadata/md5-cache/sys-power/dptf-policy-passive2-8.8.10300-r2 b/metadata/md5-cache/sys-power/dptf-policy-passive2-8.8.10300-r2
deleted file mode 100644
index 1205b36..0000000
--- a/metadata/md5-cache/sys-power/dptf-policy-passive2-8.8.10300-r2
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Passive2 Policy for Intel(R) Dynamic Platform & Thermal Framework
-EAPI=5
-KEYWORDS=*
-LICENSE=LICENSE.intel-dptf-private
-RDEPEND=!sys-power/dptf-dedede-private !sys-power/dptf-volteer-private
-RESTRICT=mirror
-SLOT=0
-SRC_URI=gs://chromeos-binaries/HOME/bcs-chipset-kbl-private/chipset-kbl-private/dptf/DptfPolicyPassive2-8.8.10300.tbz2
-_eclasses_=cros-binary	1c6eaa4fc56e7f712aa6c195e2ce5b73
-_md5_=598f64b7a327dca5a0bad1ffb177cd5b
diff --git a/metadata/md5-cache/sys-power/dptf-policy-passive2-9.0.10500-r1 b/metadata/md5-cache/sys-power/dptf-policy-passive2-9.0.10500-r1
new file mode 100644
index 0000000..49242b8
--- /dev/null
+++ b/metadata/md5-cache/sys-power/dptf-policy-passive2-9.0.10500-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=Passive2 Policy for Intel(R) Dynamic Platform & Thermal Framework
+EAPI=5
+KEYWORDS=*
+LICENSE=LICENSE.intel-dptf-private
+RESTRICT=mirror
+SLOT=0
+SRC_URI=gs://chromeos-binaries/HOME/bcs-chipset-kbl-private/chipset-kbl-private/dptf/DptfPolicyPassive2-9.0.10500.tbz2
+_eclasses_=cros-binary	1c6eaa4fc56e7f712aa6c195e2ce5b73
+_md5_=ca12868dfe2e507dc929e8ba83fd5f8e
diff --git a/metadata/md5-cache/sys-power/dptf-policy-vs-8.8.10300-r2 b/metadata/md5-cache/sys-power/dptf-policy-vs-8.8.10300-r2
deleted file mode 100644
index d4a1a2b..0000000
--- a/metadata/md5-cache/sys-power/dptf-policy-vs-8.8.10300-r2
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=install
-DESCRIPTION=Virtual Sensor Policy for Intel(R) Dynamic Platform & Thermal Framework
-EAPI=5
-KEYWORDS=*
-LICENSE=LICENSE.intel-dptf-private
-RDEPEND=!sys-power/dptf-dedede-private !sys-power/dptf-volteer-private
-RESTRICT=mirror
-SLOT=0
-SRC_URI=gs://chromeos-binaries/HOME/bcs-chipset-kbl-private/chipset-kbl-private/dptf/DptfPolicyVirtualSensor-8.8.10300.tbz2
-_eclasses_=cros-binary	1c6eaa4fc56e7f712aa6c195e2ce5b73
-_md5_=c7d3bbc6251fe03d6d21dba189e465c5
diff --git a/metadata/md5-cache/sys-power/dptf-policy-vs-9.0.10500-r1 b/metadata/md5-cache/sys-power/dptf-policy-vs-9.0.10500-r1
new file mode 100644
index 0000000..db2831a
--- /dev/null
+++ b/metadata/md5-cache/sys-power/dptf-policy-vs-9.0.10500-r1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=install
+DESCRIPTION=Virtual Sensor Policy for Intel(R) Dynamic Platform & Thermal Framework
+EAPI=5
+KEYWORDS=*
+LICENSE=LICENSE.intel-dptf-private
+RESTRICT=mirror
+SLOT=0
+SRC_URI=gs://chromeos-binaries/HOME/bcs-chipset-kbl-private/chipset-kbl-private/dptf/DptfPolicyVirtualSensor-9.0.10500.tbz2
+_eclasses_=cros-binary	1c6eaa4fc56e7f712aa6c195e2ce5b73
+_md5_=c42878251902d94220fc105884a738b4
diff --git a/metadata/md5-cache/sys-power/pm-utils-1.4.1-r3 b/metadata/md5-cache/sys-power/pm-utils-1.4.1-r3
deleted file mode 100644
index a402aa5..0000000
--- a/metadata/md5-cache/sys-power/pm-utils-1.4.1-r3
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=configure install prepare
-DEPEND=!<sys-power/powermgmt-base-1.31 !>=sys-power/powermgmt-base-1.31[-pm-utils]
-DESCRIPTION=Suspend and hibernation utilities
-EAPI=2
-HOMEPAGE=http://pm-utils.freedesktop.org/
-IUSE=alsa debug networkmanager ntp video_cards_intel video_cards_radeon
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=!<sys-power/powermgmt-base-1.31 !>=sys-power/powermgmt-base-1.31[-pm-utils] sys-apps/dbus >=sys-apps/util-linux-2.13 sys-power/pm-quirks alsa? ( media-sound/alsa-utils ) networkmanager? ( net-misc/networkmanager ) ntp? ( || ( net-misc/ntp net-misc/openntpd ) ) amd64? ( !video_cards_intel? ( sys-apps/vbetool ) ) x86? ( !video_cards_intel? ( sys-apps/vbetool ) ) video_cards_radeon? ( app-laptop/radeontool )
-SLOT=0
-SRC_URI=http://pm-utils.freedesktop.org/releases/pm-utils-1.4.1.tar.gz
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=ffb97f505eca2fdfb10c1751b29b07b3
diff --git a/metadata/md5-cache/sys-process/audit-2.8.4 b/metadata/md5-cache/sys-process/audit-2.8.4
index f11ed37..ecc8da0 100644
--- a/metadata/md5-cache/sys-process/audit-2.8.4
+++ b/metadata/md5-cache/sys-process/audit-2.8.4
@@ -3,7 +3,7 @@
 DESCRIPTION=Userspace utilities for storing and processing auditing records
 EAPI=6
 HOMEPAGE=https://people.redhat.com/sgrubb/audit/
-IUSE=gssapi ldap python static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 python_targets_python2_7 python_targets_python3_6 kernel_linux
+IUSE=cros_host gssapi ldap python static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 python_targets_python2_7 python_targets_python3_6 kernel_linux
 KEYWORDS=*
 LICENSE=GPL-2+ LGPL-2.1+
 RDEPEND=gssapi? ( virtual/krb5 ) ldap? ( net-nds/openldap ) sys-libs/libcap-ng python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] )
@@ -12,4 +12,4 @@
 SLOT=0
 SRC_URI=https://people.redhat.com/sgrubb/audit/audit-2.8.4.tar.gz
 _eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5d45b97f904aa985f7c833624ce50357
+_md5_=fb78152d6dfe81bc36d0201de9de79f3
diff --git a/metadata/md5-cache/sys-process/audit-2.8.4-r5 b/metadata/md5-cache/sys-process/audit-2.8.4-r5
deleted file mode 100644
index f11ed37..0000000
--- a/metadata/md5-cache/sys-process/audit-2.8.4-r5
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure install postinst preinst prepare setup test
-DEPEND=gssapi? ( virtual/krb5 ) ldap? ( net-nds/openldap ) sys-libs/libcap-ng python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] ) >=sys-kernel/linux-headers-2.6.34 python? ( dev-lang/swig:0 ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig
-DESCRIPTION=Userspace utilities for storing and processing auditing records
-EAPI=6
-HOMEPAGE=https://people.redhat.com/sgrubb/audit/
-IUSE=gssapi ldap python static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 python_targets_python2_7 python_targets_python3_6 kernel_linux
-KEYWORDS=*
-LICENSE=GPL-2+ LGPL-2.1+
-RDEPEND=gssapi? ( virtual/krb5 ) ldap? ( net-nds/openldap ) sys-libs/libcap-ng python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] )
-REQUIRED_USE=python? ( || ( python_targets_python2_7 python_targets_python3_6 ) )
-RESTRICT=test
-SLOT=0
-SRC_URI=https://people.redhat.com/sgrubb/audit/audit-2.8.4.tar.gz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=5d45b97f904aa985f7c833624ce50357
diff --git a/metadata/md5-cache/sys-process/audit-2.8.4-r6 b/metadata/md5-cache/sys-process/audit-2.8.4-r6
new file mode 100644
index 0000000..ecc8da0
--- /dev/null
+++ b/metadata/md5-cache/sys-process/audit-2.8.4-r6
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install postinst preinst prepare setup test
+DEPEND=gssapi? ( virtual/krb5 ) ldap? ( net-nds/openldap ) sys-libs/libcap-ng python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] ) >=sys-kernel/linux-headers-2.6.34 python? ( dev-lang/swig:0 ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 virtual/pkgconfig
+DESCRIPTION=Userspace utilities for storing and processing auditing records
+EAPI=6
+HOMEPAGE=https://people.redhat.com/sgrubb/audit/
+IUSE=cros_host gssapi ldap python static-libs abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 python_targets_python2_7 python_targets_python3_6 kernel_linux
+KEYWORDS=*
+LICENSE=GPL-2+ LGPL-2.1+
+RDEPEND=gssapi? ( virtual/krb5 ) ldap? ( net-nds/openldap ) sys-libs/libcap-ng python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) python_targets_python3_6? ( dev-lang/python:3.6 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,python_targets_python3_6(-)?,-python_single_target_python2_7(-),-python_single_target_python3_6(-)] )
+REQUIRED_USE=python? ( || ( python_targets_python2_7 python_targets_python3_6 ) )
+RESTRICT=test
+SLOT=0
+SRC_URI=https://people.redhat.com/sgrubb/audit/audit-2.8.4.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	systemd	71fd8d2065d102753fb9e4d20eaf3e9f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=fb78152d6dfe81bc36d0201de9de79f3
diff --git a/metadata/md5-cache/sys-process/criu-3.15 b/metadata/md5-cache/sys-process/criu-3.15
new file mode 100644
index 0000000..e22bef9
--- /dev/null
+++ b/metadata/md5-cache/sys-process/criu-3.15
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-libs/protobuf-c dev-libs/libnl:3 net-libs/libnet:1.1 sys-libs/libcap selinux? ( sys-libs/libselinux ) setproctitle? ( dev-libs/libbsd ) doc? ( app-text/asciidoc app-text/xmlto )
+DESCRIPTION=utility to checkpoint/restore a process tree
+EAPI=7
+HOMEPAGE=https://criu.org/
+IUSE=doc selinux setproctitle static-libs kernel_linux python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-libs/protobuf-c dev-libs/libnl:3 net-libs/libnet:1.1 sys-libs/libcap selinux? ( sys-libs/libselinux ) setproctitle? ( dev-libs/libbsd ) dev-python/protobuf-python[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )
+RESTRICT=test
+SLOT=0
+SRC_URI=https://download.openvz.org/criu/criu-3.15.tar.bz2
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c553f9e11f26235a34f6433cca529ad2
diff --git a/metadata/md5-cache/sys-process/criu-3.15-r1 b/metadata/md5-cache/sys-process/criu-3.15-r1
new file mode 100644
index 0000000..e22bef9
--- /dev/null
+++ b/metadata/md5-cache/sys-process/criu-3.15-r1
@@ -0,0 +1,15 @@
+DEFINED_PHASES=compile configure install prepare setup test
+DEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-libs/protobuf-c dev-libs/libnl:3 net-libs/libnet:1.1 sys-libs/libcap selinux? ( sys-libs/libselinux ) setproctitle? ( dev-libs/libbsd ) doc? ( app-text/asciidoc app-text/xmlto )
+DESCRIPTION=utility to checkpoint/restore a process tree
+EAPI=7
+HOMEPAGE=https://criu.org/
+IUSE=doc selinux setproctitle static-libs kernel_linux python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9
+KEYWORDS=*
+LICENSE=GPL-2
+RDEPEND=python_targets_python3_6? ( dev-lang/python:3.6 ) python_targets_python3_7? ( dev-lang/python:3.7 ) python_targets_python3_8? ( dev-lang/python:3.8 ) python_targets_python3_9? ( dev-lang/python:3.9 ) >=dev-lang/python-exec-2:=[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)] dev-libs/protobuf-c dev-libs/libnl:3 net-libs/libnet:1.1 sys-libs/libcap selinux? ( sys-libs/libselinux ) setproctitle? ( dev-libs/libbsd ) dev-python/protobuf-python[python_targets_python3_6(-)?,python_targets_python3_7(-)?,python_targets_python3_8(-)?,python_targets_python3_9(-)?,-python_single_target_python3_6(-),-python_single_target_python3_7(-),-python_single_target_python3_8(-),-python_single_target_python3_9(-)]
+REQUIRED_USE=|| ( python_targets_python3_6 python_targets_python3_7 python_targets_python3_8 python_targets_python3_9 )
+RESTRICT=test
+SLOT=0
+SRC_URI=https://download.openvz.org/criu/criu-3.15.tar.bz2
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=c553f9e11f26235a34f6433cca529ad2
diff --git a/metadata/md5-cache/sys-process/criu-3.7 b/metadata/md5-cache/sys-process/criu-3.7
deleted file mode 100644
index bbe87a8..0000000
--- a/metadata/md5-cache/sys-process/criu-3.7
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup
-DEPEND=dev-libs/protobuf-c python? ( dev-python/protobuf-python[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) dev-libs/libnl:3 net-libs/libnet:1.1 sys-libs/libcap python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) selinux? ( sys-libs/libselinux ) setproctitle? ( dev-libs/libbsd ) app-text/asciidoc app-text/xmlto
-DESCRIPTION=utility to checkpoint/restore a process tree
-EAPI=6
-HOMEPAGE=http://criu.org/
-IUSE=python selinux setproctitle static-libs kernel_linux python_targets_python2_7
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=dev-libs/protobuf-c python? ( dev-python/protobuf-python[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) dev-libs/libnl:3 net-libs/libnet:1.1 sys-libs/libcap python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) selinux? ( sys-libs/libselinux ) setproctitle? ( dev-libs/libbsd ) python? ( || ( dev-python/protobuf-python[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-libs/protobuf[python,python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) dev-python/ipaddr[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] )
-REQUIRED_USE=python? ( || ( python_targets_python2_7 ) )
-SLOT=0
-SRC_URI=http://download.openvz.org/criu/criu-3.7.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=bbbfec0ebb1022ff24dbc32e2f8ae76c
diff --git a/metadata/md5-cache/sys-process/criu-3.7-r2 b/metadata/md5-cache/sys-process/criu-3.7-r2
deleted file mode 100644
index bbe87a8..0000000
--- a/metadata/md5-cache/sys-process/criu-3.7-r2
+++ /dev/null
@@ -1,14 +0,0 @@
-DEFINED_PHASES=compile configure install prepare setup
-DEPEND=dev-libs/protobuf-c python? ( dev-python/protobuf-python[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) dev-libs/libnl:3 net-libs/libnet:1.1 sys-libs/libcap python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) selinux? ( sys-libs/libselinux ) setproctitle? ( dev-libs/libbsd ) app-text/asciidoc app-text/xmlto
-DESCRIPTION=utility to checkpoint/restore a process tree
-EAPI=6
-HOMEPAGE=http://criu.org/
-IUSE=python selinux setproctitle static-libs kernel_linux python_targets_python2_7
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=dev-libs/protobuf-c python? ( dev-python/protobuf-python[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) dev-libs/libnl:3 net-libs/libnet:1.1 sys-libs/libcap python? ( python_targets_python2_7? ( >=dev-lang/python-2.7.5-r2:2.7 ) >=dev-lang/python-exec-2:=[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) selinux? ( sys-libs/libselinux ) setproctitle? ( dev-libs/libbsd ) python? ( || ( dev-python/protobuf-python[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] dev-libs/protobuf[python,python_targets_python2_7(-)?,-python_single_target_python2_7(-)] ) dev-python/ipaddr[python_targets_python2_7(-)?,-python_single_target_python2_7(-)] )
-REQUIRED_USE=python? ( || ( python_targets_python2_7 ) )
-SLOT=0
-SRC_URI=http://download.openvz.org/criu/criu-3.7.tar.bz2
-_eclasses_=desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	linux-info	327865b9921771330775d971263dc234	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	python-r1	79e26ce8f853c9daebe9a4956e37cc1b	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=bbbfec0ebb1022ff24dbc32e2f8ae76c
diff --git a/metadata/md5-cache/virtual/arc-codec-1 b/metadata/md5-cache/virtual/arc-codec-1
index e82b97a..259aa96 100644
--- a/metadata/md5-cache/virtual/arc-codec-1
+++ b/metadata/md5-cache/virtual/arc-codec-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS ArcCodec virtual package
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 RDEPEND=chromeos-base/arc-codec-software
 SLOT=0
-_md5_=9b95d9063aa4da87208e7799245da9bf
+_md5_=785f0620af96475f70b647db54f9c8c1
diff --git a/metadata/md5-cache/virtual/arc-codec-1-r2 b/metadata/md5-cache/virtual/arc-codec-1-r2
new file mode 100644
index 0000000..259aa96
--- /dev/null
+++ b/metadata/md5-cache/virtual/arc-codec-1-r2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS ArcCodec virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/arc-codec-software
+SLOT=0
+_md5_=785f0620af96475f70b647db54f9c8c1
diff --git a/metadata/md5-cache/virtual/arc-hardware-features-1 b/metadata/md5-cache/virtual/arc-hardware-features-1
index bacf437..fbc0c5b 100644
--- a/metadata/md5-cache/virtual/arc-hardware-features-1
+++ b/metadata/md5-cache/virtual/arc-hardware-features-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS ARC++ hardware features virtual package.
-EAPI=6
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 RDEPEND=chromeos-base/arc-hardware-features-default
 SLOT=0
-_md5_=3cb5e8b57d8d49304d2b6ebb1a1b119a
+_md5_=ef71c8ec1fe8972a83275e475a347c70
diff --git a/metadata/md5-cache/virtual/arc-hardware-features-1-r2 b/metadata/md5-cache/virtual/arc-hardware-features-1-r2
new file mode 100644
index 0000000..fbc0c5b
--- /dev/null
+++ b/metadata/md5-cache/virtual/arc-hardware-features-1-r2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS ARC++ hardware features virtual package.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/arc-hardware-features-default
+SLOT=0
+_md5_=ef71c8ec1fe8972a83275e475a347c70
diff --git a/metadata/md5-cache/virtual/arc-media-profiles-1 b/metadata/md5-cache/virtual/arc-media-profiles-1
index ee3867a..850d91e 100644
--- a/metadata/md5-cache/virtual/arc-media-profiles-1
+++ b/metadata/md5-cache/virtual/arc-media-profiles-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS Arc media profiles virtual package
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 RDEPEND=chromeos-base/arc-media-profiles-default
 SLOT=0
-_md5_=23e3fbc82d4b4a32cd80356913f95345
+_md5_=385ad00f6158f27a4b9b13a567eb786d
diff --git a/metadata/md5-cache/virtual/arc-media-profiles-1-r2 b/metadata/md5-cache/virtual/arc-media-profiles-1-r2
new file mode 100644
index 0000000..850d91e
--- /dev/null
+++ b/metadata/md5-cache/virtual/arc-media-profiles-1-r2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS Arc media profiles virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/arc-media-profiles-default
+SLOT=0
+_md5_=385ad00f6158f27a4b9b13a567eb786d
diff --git a/metadata/md5-cache/virtual/arc-opengles-1 b/metadata/md5-cache/virtual/arc-opengles-1
index bfe7c08..2bd32142 100644
--- a/metadata/md5-cache/virtual/arc-opengles-1
+++ b/metadata/md5-cache/virtual/arc-opengles-1
@@ -1,7 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Virtual for ARC OpenGLES implementations
-EAPI=5
+EAPI=7
 KEYWORDS=*
+LICENSE=metapackage
 RDEPEND=media-libs/arc-mesa
 SLOT=0
-_md5_=23d1edeb43e2c313e892e7b3dbb39d46
+_md5_=8aa020c92e02a2b029917c49469a2e11
diff --git a/metadata/md5-cache/virtual/arc-opengles-1-r2 b/metadata/md5-cache/virtual/arc-opengles-1-r2
new file mode 100644
index 0000000..2bd32142
--- /dev/null
+++ b/metadata/md5-cache/virtual/arc-opengles-1-r2
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Virtual for ARC OpenGLES implementations
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=media-libs/arc-mesa
+SLOT=0
+_md5_=8aa020c92e02a2b029917c49469a2e11
diff --git a/metadata/md5-cache/virtual/arcvm-codec-1 b/metadata/md5-cache/virtual/arcvm-codec-1
index f90b975..98cd5fc 100644
--- a/metadata/md5-cache/virtual/arcvm-codec-1
+++ b/metadata/md5-cache/virtual/arcvm-codec-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS ARCVM codec virtual package
-EAPI=5
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 RDEPEND=chromeos-base/arcvm-codec-software
 SLOT=0
-_md5_=7e8d7834796a974871f1dfe9cd653771
+_md5_=b8f218b07b109f35e682d0fa01b1d66e
diff --git a/metadata/md5-cache/virtual/arcvm-codec-1-r2 b/metadata/md5-cache/virtual/arcvm-codec-1-r2
new file mode 100644
index 0000000..98cd5fc
--- /dev/null
+++ b/metadata/md5-cache/virtual/arcvm-codec-1-r2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS ARCVM codec virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/arcvm-codec-software
+SLOT=0
+_md5_=b8f218b07b109f35e682d0fa01b1d66e
diff --git a/metadata/md5-cache/virtual/assets-1 b/metadata/md5-cache/virtual/assets-1
index a722c41..7336970 100644
--- a/metadata/md5-cache/virtual/assets-1
+++ b/metadata/md5-cache/virtual/assets-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Additional assets for a given target; common assets should go in chromeos-assets.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=chromeos-base/chromiumos-assets
 SLOT=0
-_md5_=94f047adc718d5a2bb127c1e8c3e87f4
+_md5_=526faa72aa64235a4fe12b8f6d1ae8cd
diff --git a/metadata/md5-cache/virtual/assets-1-r1 b/metadata/md5-cache/virtual/assets-1-r1
deleted file mode 100644
index a722c41..0000000
--- a/metadata/md5-cache/virtual/assets-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Additional assets for a given target; common assets should go in chromeos-assets.
-EAPI=4
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=chromeos-base/chromiumos-assets
-SLOT=0
-_md5_=94f047adc718d5a2bb127c1e8c3e87f4
diff --git a/metadata/md5-cache/virtual/assets-1-r3 b/metadata/md5-cache/virtual/assets-1-r3
new file mode 100644
index 0000000..7336970
--- /dev/null
+++ b/metadata/md5-cache/virtual/assets-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Additional assets for a given target; common assets should go in chromeos-assets.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromiumos-assets
+SLOT=0
+_md5_=526faa72aa64235a4fe12b8f6d1ae8cd
diff --git a/metadata/md5-cache/virtual/autotest-assistant-libs-1 b/metadata/md5-cache/virtual/autotest-assistant-libs-1
index 3278098..94c5753 100644
--- a/metadata/md5-cache/virtual/autotest-assistant-libs-1
+++ b/metadata/md5-cache/virtual/autotest-assistant-libs-1
@@ -1,7 +1,7 @@
 DEFINED_PHASES=-
 DESCRIPTION=This package can be overriden to bring in additional assistant autotest libraries
-EAPI=6
+EAPI=7
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=80af68d49df722131c2281f308e57ff3
+_md5_=644f6b10ae2598c34352a0c933f5efb0
diff --git a/metadata/md5-cache/virtual/autotest-assistant-libs-1-r2 b/metadata/md5-cache/virtual/autotest-assistant-libs-1-r2
new file mode 100644
index 0000000..94c5753
--- /dev/null
+++ b/metadata/md5-cache/virtual/autotest-assistant-libs-1-r2
@@ -0,0 +1,7 @@
+DEFINED_PHASES=-
+DESCRIPTION=This package can be overriden to bring in additional assistant autotest libraries
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=644f6b10ae2598c34352a0c933f5efb0
diff --git a/metadata/md5-cache/virtual/autotest-capability-1 b/metadata/md5-cache/virtual/autotest-capability-1
index 7a07fc7..86e6408 100644
--- a/metadata/md5-cache/virtual/autotest-capability-1
+++ b/metadata/md5-cache/virtual/autotest-capability-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Virtual package installing files define the capability of DUTs. We run or skip test cases base on those capabilities. See README.md for details.
-EAPI=5
+EAPI=7
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=chromeos-base/autotest-capability-default
 SLOT=0
-_md5_=e3594fd17cff0bf6d5963cff444a1ddb
+_md5_=bc7fe3c9f5bdde12ca459e2facda3ef4
diff --git a/metadata/md5-cache/virtual/autotest-capability-1-r2 b/metadata/md5-cache/virtual/autotest-capability-1-r2
new file mode 100644
index 0000000..86e6408
--- /dev/null
+++ b/metadata/md5-cache/virtual/autotest-capability-1-r2
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Virtual package installing files define the capability of DUTs. We run or skip test cases base on those capabilities. See README.md for details.
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/autotest-capability-default
+SLOT=0
+_md5_=bc7fe3c9f5bdde12ca459e2facda3ef4
diff --git a/metadata/md5-cache/virtual/autotest-libs-1 b/metadata/md5-cache/virtual/autotest-libs-1
index bf5de65..40eddd2 100644
--- a/metadata/md5-cache/virtual/autotest-libs-1
+++ b/metadata/md5-cache/virtual/autotest-libs-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=This package can be overriden to bring in additional (e.g. board-specific) autotest infrastructure.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=ffe2ba5a458fbe60c7db03054b353c29
+_md5_=e1a84ec45dce11d2f4517b46fc05c610
diff --git a/metadata/md5-cache/virtual/autotest-libs-1-r1 b/metadata/md5-cache/virtual/autotest-libs-1-r1
deleted file mode 100644
index bf5de65..0000000
--- a/metadata/md5-cache/virtual/autotest-libs-1-r1
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=This package can be overriden to bring in additional (e.g. board-specific) autotest infrastructure.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-_md5_=ffe2ba5a458fbe60c7db03054b353c29
diff --git a/metadata/md5-cache/virtual/autotest-libs-1-r3 b/metadata/md5-cache/virtual/autotest-libs-1-r3
new file mode 100644
index 0000000..40eddd2
--- /dev/null
+++ b/metadata/md5-cache/virtual/autotest-libs-1-r3
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=This package can be overriden to bring in additional (e.g. board-specific) autotest infrastructure.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=e1a84ec45dce11d2f4517b46fc05c610
diff --git a/metadata/md5-cache/virtual/autotest-private-libs-1 b/metadata/md5-cache/virtual/autotest-private-libs-1
index 5fe14cb..2357ba3 100644
--- a/metadata/md5-cache/virtual/autotest-private-libs-1
+++ b/metadata/md5-cache/virtual/autotest-private-libs-1
@@ -1,7 +1,7 @@
 DEFINED_PHASES=-
 DESCRIPTION=This package can be overriden to bring in additional autotest libraries
-EAPI=6
+EAPI=7
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=498d90648b7c747b754069d1d4c3bd4d
+_md5_=d6b319d727078e2e738dbdec8052547f
diff --git a/metadata/md5-cache/virtual/autotest-private-libs-1-r2 b/metadata/md5-cache/virtual/autotest-private-libs-1-r2
new file mode 100644
index 0000000..2357ba3
--- /dev/null
+++ b/metadata/md5-cache/virtual/autotest-private-libs-1-r2
@@ -0,0 +1,7 @@
+DEFINED_PHASES=-
+DESCRIPTION=This package can be overriden to bring in additional autotest libraries
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=d6b319d727078e2e738dbdec8052547f
diff --git a/metadata/md5-cache/virtual/autotest-tests-1 b/metadata/md5-cache/virtual/autotest-tests-1
index 7cbd6ab..e38a89d 100644
--- a/metadata/md5-cache/virtual/autotest-tests-1
+++ b/metadata/md5-cache/virtual/autotest-tests-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Autotest tests virtual package. This package can be overriden by an overlay to bring in Autotest tests.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=9a24d3fd0c699ddddb48a88e7d068b86
+_md5_=eee96c243123047d32502dfe8da5a930
diff --git a/metadata/md5-cache/virtual/autotest-tests-1-r1 b/metadata/md5-cache/virtual/autotest-tests-1-r1
deleted file mode 100644
index 7cbd6ab..0000000
--- a/metadata/md5-cache/virtual/autotest-tests-1-r1
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Autotest tests virtual package. This package can be overriden by an overlay to bring in Autotest tests.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-_md5_=9a24d3fd0c699ddddb48a88e7d068b86
diff --git a/metadata/md5-cache/virtual/autotest-tests-1-r3 b/metadata/md5-cache/virtual/autotest-tests-1-r3
new file mode 100644
index 0000000..e38a89d
--- /dev/null
+++ b/metadata/md5-cache/virtual/autotest-tests-1-r3
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Autotest tests virtual package. This package can be overriden by an overlay to bring in Autotest tests.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=eee96c243123047d32502dfe8da5a930
diff --git a/metadata/md5-cache/virtual/bindgen-0.0.1 b/metadata/md5-cache/virtual/bindgen-0.0.1
new file mode 100644
index 0000000..f0c20fe
--- /dev/null
+++ b/metadata/md5-cache/virtual/bindgen-0.0.1
@@ -0,0 +1,8 @@
+BDEPEND==dev-rust/bindgen-0.0.1
+DEFINED_PHASES=-
+DESCRIPTION=Prevent needing to build dev-rust/bindgen for each board.
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0/0.0.1
+_md5_=6c41bf131b3e52ae837ebf8f4599cd09
diff --git a/metadata/md5-cache/virtual/bindgen-0.56.0 b/metadata/md5-cache/virtual/bindgen-0.56.0
index 7e98da0..ff4806a 100644
--- a/metadata/md5-cache/virtual/bindgen-0.56.0
+++ b/metadata/md5-cache/virtual/bindgen-0.56.0
@@ -3,6 +3,6 @@
 DESCRIPTION=Prevent needing to build dev-rust/bindgen for each board.
 EAPI=7
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0/0.56.0
-_md5_=d0cbcb2e22fc3168f29c4815afdc0f28
+_md5_=6c41bf131b3e52ae837ebf8f4599cd09
diff --git a/metadata/md5-cache/virtual/bindgen-0.56.0-r1 b/metadata/md5-cache/virtual/bindgen-0.56.0-r1
new file mode 100644
index 0000000..895d621
--- /dev/null
+++ b/metadata/md5-cache/virtual/bindgen-0.56.0-r1
@@ -0,0 +1,8 @@
+BDEPEND==dev-rust/bindgen-0.56.0-r1
+DEFINED_PHASES=-
+DESCRIPTION=Prevent needing to build dev-rust/bindgen for each board.
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0/0.56.0-r1
+_md5_=6c41bf131b3e52ae837ebf8f4599cd09
diff --git a/metadata/md5-cache/virtual/bindgen-0.56.0-r2 b/metadata/md5-cache/virtual/bindgen-0.56.0-r2
new file mode 100644
index 0000000..07b9fa3
--- /dev/null
+++ b/metadata/md5-cache/virtual/bindgen-0.56.0-r2
@@ -0,0 +1,8 @@
+BDEPEND==dev-rust/bindgen-0.56.0-r2
+DEFINED_PHASES=-
+DESCRIPTION=Prevent needing to build dev-rust/bindgen for each board.
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0/0.56.0-r2
+_md5_=6c41bf131b3e52ae837ebf8f4599cd09
diff --git a/metadata/md5-cache/virtual/cheets-1 b/metadata/md5-cache/virtual/cheets-1
index 59221b6..890f31e 100644
--- a/metadata/md5-cache/virtual/cheets-1
+++ b/metadata/md5-cache/virtual/cheets-1
@@ -1,7 +1,7 @@
 DEFINED_PHASES=-
 DESCRIPTION=Generic ebuild which satisifies virtual/cheets, the project which enables the Play Store on Chrome OS. This is a direct dependency of virtual/target-chromium-os, but is expected to be overridden in other overlays, so today this depends on nothing.
-EAPI=5
+EAPI=7
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=8ab5aeb25efbe6b15a93036aaf63cbf2
+_md5_=c805e95f6cfd5bbd2e7c14ae05cedd83
diff --git a/metadata/md5-cache/virtual/cheets-1-r1 b/metadata/md5-cache/virtual/cheets-1-r1
deleted file mode 100644
index 59221b6..0000000
--- a/metadata/md5-cache/virtual/cheets-1-r1
+++ /dev/null
@@ -1,7 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Generic ebuild which satisifies virtual/cheets, the project which enables the Play Store on Chrome OS. This is a direct dependency of virtual/target-chromium-os, but is expected to be overridden in other overlays, so today this depends on nothing.
-EAPI=5
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-_md5_=8ab5aeb25efbe6b15a93036aaf63cbf2
diff --git a/metadata/md5-cache/virtual/cheets-1-r3 b/metadata/md5-cache/virtual/cheets-1-r3
new file mode 100644
index 0000000..890f31e
--- /dev/null
+++ b/metadata/md5-cache/virtual/cheets-1-r3
@@ -0,0 +1,7 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisifies virtual/cheets, the project which enables the Play Store on Chrome OS. This is a direct dependency of virtual/target-chromium-os, but is expected to be overridden in other overlays, so today this depends on nothing.
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=c805e95f6cfd5bbd2e7c14ae05cedd83
diff --git a/metadata/md5-cache/virtual/chromeos-activate-date-1 b/metadata/md5-cache/virtual/chromeos-activate-date-1
index e23293e..3cdd618 100644
--- a/metadata/md5-cache/virtual/chromeos-activate-date-1
+++ b/metadata/md5-cache/virtual/chromeos-activate-date-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS Activate Date virtual package
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 RDEPEND=chromeos-base/chromeos-activate-date
 SLOT=0
-_md5_=22d3521c0f3accf876f9ac29bb0417ec
+_md5_=9e6ce17dae9466aeb26a853dbdc20550
diff --git a/metadata/md5-cache/virtual/chromeos-activate-date-1-r1 b/metadata/md5-cache/virtual/chromeos-activate-date-1-r1
deleted file mode 100644
index e23293e..0000000
--- a/metadata/md5-cache/virtual/chromeos-activate-date-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Chrome OS Activate Date virtual package
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=chromeos-base/chromeos-activate-date
-SLOT=0
-_md5_=22d3521c0f3accf876f9ac29bb0417ec
diff --git a/metadata/md5-cache/virtual/chromeos-activate-date-1-r3 b/metadata/md5-cache/virtual/chromeos-activate-date-1-r3
new file mode 100644
index 0000000..3cdd618
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-activate-date-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS Activate Date virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-activate-date
+SLOT=0
+_md5_=9e6ce17dae9466aeb26a853dbdc20550
diff --git a/metadata/md5-cache/virtual/chromeos-auth-config-1 b/metadata/md5-cache/virtual/chromeos-auth-config-1
index f7e9242f..e38aec5 100644
--- a/metadata/md5-cache/virtual/chromeos-auth-config-1
+++ b/metadata/md5-cache/virtual/chromeos-auth-config-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=ChromeOS auth virtual package. This package will RDEPEND on the actual package that installs the ChromeOS PAM configs.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=chromeos-base/chromeos-auth-config
 SLOT=0
-_md5_=432998b76c2dee5d88f3b27dd74a027e
+_md5_=3fa7b077a252ae5dc428b5e0e29fe4d1
diff --git a/metadata/md5-cache/virtual/chromeos-auth-config-1-r1 b/metadata/md5-cache/virtual/chromeos-auth-config-1-r1
deleted file mode 100644
index f7e9242f..0000000
--- a/metadata/md5-cache/virtual/chromeos-auth-config-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=ChromeOS auth virtual package. This package will RDEPEND on the actual package that installs the ChromeOS PAM configs.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=chromeos-base/chromeos-auth-config
-SLOT=0
-_md5_=432998b76c2dee5d88f3b27dd74a027e
diff --git a/metadata/md5-cache/virtual/chromeos-auth-config-1-r3 b/metadata/md5-cache/virtual/chromeos-auth-config-1-r3
new file mode 100644
index 0000000..e38aec5
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-auth-config-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=ChromeOS auth virtual package. This package will RDEPEND on the actual package that installs the ChromeOS PAM configs.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-auth-config
+SLOT=0
+_md5_=3fa7b077a252ae5dc428b5e0e29fe4d1
diff --git a/metadata/md5-cache/virtual/chromeos-bootcomplete-1 b/metadata/md5-cache/virtual/chromeos-bootcomplete-1
index b39a8ee..f93093e 100644
--- a/metadata/md5-cache/virtual/chromeos-bootcomplete-1
+++ b/metadata/md5-cache/virtual/chromeos-bootcomplete-1
@@ -1,11 +1,11 @@
 DEFINED_PHASES=-
 DEPEND=|| ( !cros_embedded? ( chromeos-base/bootcomplete-login ) chromeos-base/bootcomplete-embedded )
 DESCRIPTION=Virtual package installing the boot-complete boot marker that represents the system being operationnal and ready to use. Boards should override it to define their own boot-complete.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 IUSE=cros_embedded
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=|| ( !cros_embedded? ( chromeos-base/bootcomplete-login ) chromeos-base/bootcomplete-embedded )
 SLOT=0
-_md5_=eae1772e1fe7969a0d001f9ec94b718f
+_md5_=36b6a77db6ec2e12fce7c8b321eb34a3
diff --git a/metadata/md5-cache/virtual/chromeos-bootcomplete-1-r1 b/metadata/md5-cache/virtual/chromeos-bootcomplete-1-r1
deleted file mode 100644
index b39a8ee..0000000
--- a/metadata/md5-cache/virtual/chromeos-bootcomplete-1-r1
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=|| ( !cros_embedded? ( chromeos-base/bootcomplete-login ) chromeos-base/bootcomplete-embedded )
-DESCRIPTION=Virtual package installing the boot-complete boot marker that represents the system being operationnal and ready to use. Boards should override it to define their own boot-complete.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-IUSE=cros_embedded
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=|| ( !cros_embedded? ( chromeos-base/bootcomplete-login ) chromeos-base/bootcomplete-embedded )
-SLOT=0
-_md5_=eae1772e1fe7969a0d001f9ec94b718f
diff --git a/metadata/md5-cache/virtual/chromeos-bootcomplete-1-r3 b/metadata/md5-cache/virtual/chromeos-bootcomplete-1-r3
new file mode 100644
index 0000000..f93093e
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-bootcomplete-1-r3
@@ -0,0 +1,11 @@
+DEFINED_PHASES=-
+DEPEND=|| ( !cros_embedded? ( chromeos-base/bootcomplete-login ) chromeos-base/bootcomplete-embedded )
+DESCRIPTION=Virtual package installing the boot-complete boot marker that represents the system being operationnal and ready to use. Boards should override it to define their own boot-complete.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+IUSE=cros_embedded
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=|| ( !cros_embedded? ( chromeos-base/bootcomplete-login ) chromeos-base/bootcomplete-embedded )
+SLOT=0
+_md5_=36b6a77db6ec2e12fce7c8b321eb34a3
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-1 b/metadata/md5-cache/virtual/chromeos-bsp-1
index 411f551..2f4eadd 100644
--- a/metadata/md5-cache/virtual/chromeos-bsp-1
+++ b/metadata/md5-cache/virtual/chromeos-bsp-1
@@ -1,10 +1,10 @@
 DEFINED_PHASES=-
 DEPEND=!chromeos-base/chromeos-bsp-null sys-kernel/linux-firmware
 DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp. This is a direct dependency of virtual/target-chromium-os, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific configuration files and drivers which are not suitable for inclusion in a generic board overlay.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 RDEPEND=!chromeos-base/chromeos-bsp-null sys-kernel/linux-firmware
 SLOT=0
-_md5_=d028e1010eae50187108e49183dba356
+_md5_=f4fc012ea7f5a101dd596425514588d8
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-1-r2 b/metadata/md5-cache/virtual/chromeos-bsp-1-r2
deleted file mode 100644
index 411f551..0000000
--- a/metadata/md5-cache/virtual/chromeos-bsp-1-r2
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=!chromeos-base/chromeos-bsp-null sys-kernel/linux-firmware
-DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp. This is a direct dependency of virtual/target-chromium-os, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific configuration files and drivers which are not suitable for inclusion in a generic board overlay.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=!chromeos-base/chromeos-bsp-null sys-kernel/linux-firmware
-SLOT=0
-_md5_=d028e1010eae50187108e49183dba356
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-1-r4 b/metadata/md5-cache/virtual/chromeos-bsp-1-r4
new file mode 100644
index 0000000..2f4eadd
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-bsp-1-r4
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=!chromeos-base/chromeos-bsp-null sys-kernel/linux-firmware
+DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp. This is a direct dependency of virtual/target-chromium-os, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific configuration files and drivers which are not suitable for inclusion in a generic board overlay.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=!chromeos-base/chromeos-bsp-null sys-kernel/linux-firmware
+SLOT=0
+_md5_=f4fc012ea7f5a101dd596425514588d8
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-dev-1 b/metadata/md5-cache/virtual/chromeos-bsp-dev-1
index 7d9d1d5..1f2b260 100644
--- a/metadata/md5-cache/virtual/chromeos-bsp-dev-1
+++ b/metadata/md5-cache/virtual/chromeos-bsp-dev-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp-dev. This is a direct dependency of virtual/target-chromium-os-dev, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific developer only files and executables which are not suitable for inclusion in a generic board overlay.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 SLOT=0
-_md5_=7c42a39b594c57c223a935926fd4f1d5
+_md5_=88e1baea7727efe1142006652c5229b0
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-dev-1-r1 b/metadata/md5-cache/virtual/chromeos-bsp-dev-1-r1
deleted file mode 100644
index 7d9d1d5..0000000
--- a/metadata/md5-cache/virtual/chromeos-bsp-dev-1-r1
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp-dev. This is a direct dependency of virtual/target-chromium-os-dev, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific developer only files and executables which are not suitable for inclusion in a generic board overlay.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD
-SLOT=0
-_md5_=7c42a39b594c57c223a935926fd4f1d5
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-dev-1-r3 b/metadata/md5-cache/virtual/chromeos-bsp-dev-1-r3
new file mode 100644
index 0000000..1f2b260
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-bsp-dev-1-r3
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp-dev. This is a direct dependency of virtual/target-chromium-os-dev, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific developer only files and executables which are not suitable for inclusion in a generic board overlay.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=88e1baea7727efe1142006652c5229b0
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-dev-root-1 b/metadata/md5-cache/virtual/chromeos-bsp-dev-root-1
index ee46a6f..54165b5 100644
--- a/metadata/md5-cache/virtual/chromeos-bsp-dev-root-1
+++ b/metadata/md5-cache/virtual/chromeos-bsp-dev-root-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-bsp-dev-root. This is a direct dependency of chromeos-base/chromeos-dev-root, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific developer only files and executables which are not suitable for inclusion on the root partition in a generic board overlay.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=1500dfc65c22f734529cdd310465f48b
+_md5_=c0863af7bff1f45172cd3ad6ba120c1e
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-dev-root-1-r1 b/metadata/md5-cache/virtual/chromeos-bsp-dev-root-1-r1
deleted file mode 100644
index ee46a6f..0000000
--- a/metadata/md5-cache/virtual/chromeos-bsp-dev-root-1-r1
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-bsp-dev-root. This is a direct dependency of chromeos-base/chromeos-dev-root, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific developer only files and executables which are not suitable for inclusion on the root partition in a generic board overlay.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-_md5_=1500dfc65c22f734529cdd310465f48b
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-dev-root-1-r3 b/metadata/md5-cache/virtual/chromeos-bsp-dev-root-1-r3
new file mode 100644
index 0000000..54165b5
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-bsp-dev-root-1-r3
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-bsp-dev-root. This is a direct dependency of chromeos-base/chromeos-dev-root, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific developer only files and executables which are not suitable for inclusion on the root partition in a generic board overlay.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=c0863af7bff1f45172cd3ad6ba120c1e
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-factory-1 b/metadata/md5-cache/virtual/chromeos-bsp-factory-1
index 6f46df4..bab1e97 100644
--- a/metadata/md5-cache/virtual/chromeos-bsp-factory-1
+++ b/metadata/md5-cache/virtual/chromeos-bsp-factory-1
@@ -4,7 +4,7 @@
 EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=|| ( chromeos-base/factory-board chromeos-base/chromeos-factory-board ) chromeos-base/factory-baseboard
 SLOT=0
-_md5_=62220c15f67dd6139649a516d879a924
+_md5_=f751f770e3e280c6899a8e4937188431
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-factory-1-r1 b/metadata/md5-cache/virtual/chromeos-bsp-factory-1-r1
deleted file mode 100644
index 6f46df4..0000000
--- a/metadata/md5-cache/virtual/chromeos-bsp-factory-1-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=|| ( chromeos-base/factory-board chromeos-base/chromeos-factory-board ) chromeos-base/factory-baseboard
-DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp-factory. This is a direct dependency of chromeos-base/factory, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific configuration files and drivers which are not suitable for inclusion in a generic board overlay.
-EAPI=7
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=|| ( chromeos-base/factory-board chromeos-base/chromeos-factory-board ) chromeos-base/factory-baseboard
-SLOT=0
-_md5_=62220c15f67dd6139649a516d879a924
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-factory-1-r2 b/metadata/md5-cache/virtual/chromeos-bsp-factory-1-r2
new file mode 100644
index 0000000..bab1e97
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-bsp-factory-1-r2
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=|| ( chromeos-base/factory-board chromeos-base/chromeos-factory-board ) chromeos-base/factory-baseboard
+DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp-factory. This is a direct dependency of chromeos-base/factory, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific configuration files and drivers which are not suitable for inclusion in a generic board overlay.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=|| ( chromeos-base/factory-board chromeos-base/chromeos-factory-board ) chromeos-base/factory-baseboard
+SLOT=0
+_md5_=f751f770e3e280c6899a8e4937188431
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-initramfs-1 b/metadata/md5-cache/virtual/chromeos-bsp-initramfs-1
index e1672b4..bc5b699 100644
--- a/metadata/md5-cache/virtual/chromeos-bsp-initramfs-1
+++ b/metadata/md5-cache/virtual/chromeos-bsp-initramfs-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=This package can be overriden to bring in additional configurations for initramfs. See platform/initramfs/recovery/README for details.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=7db7732a730dc0bd8edd7cc893ca4f41
+_md5_=84edee96d1686224500e8360abb3fbc2
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-initramfs-1-r2 b/metadata/md5-cache/virtual/chromeos-bsp-initramfs-1-r2
new file mode 100644
index 0000000..bc5b699
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-bsp-initramfs-1-r2
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=This package can be overriden to bring in additional configurations for initramfs. See platform/initramfs/recovery/README for details.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=84edee96d1686224500e8360abb3fbc2
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-test-1 b/metadata/md5-cache/virtual/chromeos-bsp-test-1
index f10fcc6..ca3ae52 100644
--- a/metadata/md5-cache/virtual/chromeos-bsp-test-1
+++ b/metadata/md5-cache/virtual/chromeos-bsp-test-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp-test. This is a direct dependency of virtual/target-chromium-os-test, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific test-only files and executables which are not suitable for inclusion in a generic board overlay.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 SLOT=0
-_md5_=f0c7491f264e0f195c8156e6ffa4aca4
+_md5_=4d3f886e4a1788b1d1e6feead4066142
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-test-1-r1 b/metadata/md5-cache/virtual/chromeos-bsp-test-1-r1
deleted file mode 100644
index f10fcc6..0000000
--- a/metadata/md5-cache/virtual/chromeos-bsp-test-1-r1
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp-test. This is a direct dependency of virtual/target-chromium-os-test, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific test-only files and executables which are not suitable for inclusion in a generic board overlay.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD
-SLOT=0
-_md5_=f0c7491f264e0f195c8156e6ffa4aca4
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-test-1-r3 b/metadata/md5-cache/virtual/chromeos-bsp-test-1-r3
new file mode 100644
index 0000000..ca3ae52
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-bsp-test-1-r3
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-bsp-test. This is a direct dependency of virtual/target-chromium-os-test, but is expected to be overridden in an overlay for each specialized board. A typical non-generic implementation will install any board-specific test-only files and executables which are not suitable for inclusion in a generic board overlay.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=4d3f886e4a1788b1d1e6feead4066142
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-test-root-1 b/metadata/md5-cache/virtual/chromeos-bsp-test-root-1
index 1be1306..2cf3e7b 100644
--- a/metadata/md5-cache/virtual/chromeos-bsp-test-root-1
+++ b/metadata/md5-cache/virtual/chromeos-bsp-test-root-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-bsp-test-root. This package is merged onto the rootfs when an image is modified for test. A typical non-generic implementation will install any board-specific test-only files which are required on the rootfs (such as upstart jobs) but which are not suitable for inclusion in a generic board overlay.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=a8e7e52949507759ee8d3d016dc55b60
+_md5_=38cac82e90b711494d5c173695c30c3c
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-test-root-1-r1 b/metadata/md5-cache/virtual/chromeos-bsp-test-root-1-r1
deleted file mode 100644
index 1be1306..0000000
--- a/metadata/md5-cache/virtual/chromeos-bsp-test-root-1-r1
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-bsp-test-root. This package is merged onto the rootfs when an image is modified for test. A typical non-generic implementation will install any board-specific test-only files which are required on the rootfs (such as upstart jobs) but which are not suitable for inclusion in a generic board overlay.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-_md5_=a8e7e52949507759ee8d3d016dc55b60
diff --git a/metadata/md5-cache/virtual/chromeos-bsp-test-root-1-r3 b/metadata/md5-cache/virtual/chromeos-bsp-test-root-1-r3
new file mode 100644
index 0000000..2cf3e7b
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-bsp-test-root-1-r3
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-bsp-test-root. This package is merged onto the rootfs when an image is modified for test. A typical non-generic implementation will install any board-specific test-only files which are required on the rootfs (such as upstart jobs) but which are not suitable for inclusion in a generic board overlay.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=38cac82e90b711494d5c173695c30c3c
diff --git a/metadata/md5-cache/virtual/chromeos-config-bsp-1 b/metadata/md5-cache/virtual/chromeos-config-bsp-1
index 383a78e..a9cf791 100644
--- a/metadata/md5-cache/virtual/chromeos-config-bsp-1
+++ b/metadata/md5-cache/virtual/chromeos-config-bsp-1
@@ -1,10 +1,10 @@
 DEFINED_PHASES=-
 DEPEND=chromeos-base/chromeos-config-bsp
 DESCRIPTION=Chrome OS BSP config virtual package
-EAPI=5
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 RDEPEND=chromeos-base/chromeos-config-bsp
 SLOT=0
-_md5_=cdd0a4f8c7981b4429b583aff8245ee2
+_md5_=929c5c5c6e492706700de3c9b61812c7
diff --git a/metadata/md5-cache/virtual/chromeos-config-bsp-1-r2 b/metadata/md5-cache/virtual/chromeos-config-bsp-1-r2
deleted file mode 100644
index 383a78e..0000000
--- a/metadata/md5-cache/virtual/chromeos-config-bsp-1-r2
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=chromeos-base/chromeos-config-bsp
-DESCRIPTION=Chrome OS BSP config virtual package
-EAPI=5
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=chromeos-base/chromeos-config-bsp
-SLOT=0
-_md5_=cdd0a4f8c7981b4429b583aff8245ee2
diff --git a/metadata/md5-cache/virtual/chromeos-config-bsp-1-r4 b/metadata/md5-cache/virtual/chromeos-config-bsp-1-r4
new file mode 100644
index 0000000..a9cf791
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-config-bsp-1-r4
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=chromeos-base/chromeos-config-bsp
+DESCRIPTION=Chrome OS BSP config virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-config-bsp
+SLOT=0
+_md5_=929c5c5c6e492706700de3c9b61812c7
diff --git a/metadata/md5-cache/virtual/chromeos-ec-driver-init-1 b/metadata/md5-cache/virtual/chromeos-ec-driver-init-1
index a26ee7f..670b8dd 100644
--- a/metadata/md5-cache/virtual/chromeos-ec-driver-init-1
+++ b/metadata/md5-cache/virtual/chromeos-ec-driver-init-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-ec-driver This is a direct dependency of chromeos-base/chromeos-accelerometer-init, and it is overridden in private overlay to load cros-ec stack for special ECs.
-EAPI=6
+EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 SLOT=0
-_md5_=7e97ddc769109465e405906b5964e405
+_md5_=a9b6e863973b004b07945b33f35cc16e
diff --git a/metadata/md5-cache/virtual/chromeos-ec-driver-init-1-r2 b/metadata/md5-cache/virtual/chromeos-ec-driver-init-1-r2
new file mode 100644
index 0000000..670b8dd
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-ec-driver-init-1-r2
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-ec-driver This is a direct dependency of chromeos-base/chromeos-accelerometer-init, and it is overridden in private overlay to load cros-ec stack for special ECs.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=a9b6e863973b004b07945b33f35cc16e
diff --git a/metadata/md5-cache/virtual/chromeos-ec-private-files-1 b/metadata/md5-cache/virtual/chromeos-ec-private-files-1
new file mode 100644
index 0000000..094c35e
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-ec-private-files-1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-ec-private-files. This is a direct dependency of chromeos-base/chromeos-ec, and it is overridden in private overlay to retrieve the private sources for the EC build.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-ec-private-files-null
+SLOT=0
+_md5_=aee2d649f497d821642b4dcebc23bd0c
diff --git a/metadata/md5-cache/virtual/chromeos-ec-private-files-1-r1 b/metadata/md5-cache/virtual/chromeos-ec-private-files-1-r1
deleted file mode 100644
index a871998..0000000
--- a/metadata/md5-cache/virtual/chromeos-ec-private-files-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-ec-private-files. This is a direct dependency of chromeos-base/chromeos-ec, and it is overridden in private overlay to retrieve the private sources for the EC build.
-EAPI=5
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=chromeos-base/chromeos-ec-private-files-null
-SLOT=0
-_md5_=9806b6d30b598002d2140956efced12f
diff --git a/metadata/md5-cache/virtual/chromeos-ec-private-files-1-r3 b/metadata/md5-cache/virtual/chromeos-ec-private-files-1-r3
new file mode 100644
index 0000000..094c35e
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-ec-private-files-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-ec-private-files. This is a direct dependency of chromeos-base/chromeos-ec, and it is overridden in private overlay to retrieve the private sources for the EC build.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-ec-private-files-null
+SLOT=0
+_md5_=aee2d649f497d821642b4dcebc23bd0c
diff --git a/metadata/md5-cache/virtual/chromeos-ec-touch-firmware-1 b/metadata/md5-cache/virtual/chromeos-ec-touch-firmware-1
index bc442c7..10030c7 100644
--- a/metadata/md5-cache/virtual/chromeos-ec-touch-firmware-1
+++ b/metadata/md5-cache/virtual/chromeos-ec-touch-firmware-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-ec-touch-firmware. This is a direct dependency of chromeos-base/chromeos-ec, and can be overridden in an overlay for each specialized board, if a touch FW needs to be provided to the EC build system at compile time (e.g. to generate hashes to be included in RW section).
-EAPI=5
+EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 SLOT=0
-_md5_=98c90ab018a589d5d487023e84d43fba
+_md5_=709a9a67715a4bf85c136aac1bcd3961
diff --git a/metadata/md5-cache/virtual/chromeos-ec-touch-firmware-1-r2 b/metadata/md5-cache/virtual/chromeos-ec-touch-firmware-1-r2
new file mode 100644
index 0000000..10030c7
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-ec-touch-firmware-1-r2
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-ec-touch-firmware. This is a direct dependency of chromeos-base/chromeos-ec, and can be overridden in an overlay for each specialized board, if a touch FW needs to be provided to the EC build system at compile time (e.g. to generate hashes to be included in RW section).
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/ec/
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=709a9a67715a4bf85c136aac1bcd3961
diff --git a/metadata/md5-cache/virtual/chromeos-firewall-1 b/metadata/md5-cache/virtual/chromeos-firewall-1
index 04d31ef..d36f56e 100644
--- a/metadata/md5-cache/virtual/chromeos-firewall-1
+++ b/metadata/md5-cache/virtual/chromeos-firewall-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS Firewall virtual package. This package will RDEPEND on the actual package that installs the upstart scripts to configure the firewall. Any board overlays that wish to change the firewall settings can do so with their own virtual package and corresponding ebuild.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=chromeos-base/chromeos-firewall-init
 SLOT=0
-_md5_=f740fcca95c7f888eb6fda6172563c79
+_md5_=25ca1f026263ae3dc9ec6ba7d5b06519
diff --git a/metadata/md5-cache/virtual/chromeos-firewall-1-r1 b/metadata/md5-cache/virtual/chromeos-firewall-1-r1
deleted file mode 100644
index 04d31ef..0000000
--- a/metadata/md5-cache/virtual/chromeos-firewall-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Chrome OS Firewall virtual package. This package will RDEPEND on the actual package that installs the upstart scripts to configure the firewall. Any board overlays that wish to change the firewall settings can do so with their own virtual package and corresponding ebuild.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=chromeos-base/chromeos-firewall-init
-SLOT=0
-_md5_=f740fcca95c7f888eb6fda6172563c79
diff --git a/metadata/md5-cache/virtual/chromeos-firewall-1-r3 b/metadata/md5-cache/virtual/chromeos-firewall-1-r3
new file mode 100644
index 0000000..d36f56e
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-firewall-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS Firewall virtual package. This package will RDEPEND on the actual package that installs the upstart scripts to configure the firewall. Any board overlays that wish to change the firewall settings can do so with their own virtual package and corresponding ebuild.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-firewall-init
+SLOT=0
+_md5_=25ca1f026263ae3dc9ec6ba7d5b06519
diff --git a/metadata/md5-cache/virtual/chromeos-firmware-1 b/metadata/md5-cache/virtual/chromeos-firmware-1
index 3aba466..8712b2d 100644
--- a/metadata/md5-cache/virtual/chromeos-firmware-1
+++ b/metadata/md5-cache/virtual/chromeos-firmware-1
@@ -1,11 +1,11 @@
 DEFINED_PHASES=-
 DEPEND=bootimage? ( sys-boot/chromeos-bootimage ) cros_ec? ( chromeos-base/chromeos-ec ) cros_ish? ( chromeos-base/chromeos-ish )
 DESCRIPTION=Chrome OS Firmware virtual package
-EAPI=5
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 IUSE=bootimage cros_ec cros_ish
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 RDEPEND=!bootimage? ( chromeos-base/chromeos-firmware-null ) bootimage? ( sys-boot/chromeos-bootimage ) cros_ec? ( chromeos-base/chromeos-ec ) cros_ish? ( chromeos-base/chromeos-ish )
 SLOT=0
-_md5_=c9c451d4ab9a3e5c72f55a4264b75eb9
+_md5_=4f7883641a74b091e95154f0b65223f0
diff --git a/metadata/md5-cache/virtual/chromeos-firmware-1-r4 b/metadata/md5-cache/virtual/chromeos-firmware-1-r4
deleted file mode 100644
index 3aba466..0000000
--- a/metadata/md5-cache/virtual/chromeos-firmware-1-r4
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=bootimage? ( sys-boot/chromeos-bootimage ) cros_ec? ( chromeos-base/chromeos-ec ) cros_ish? ( chromeos-base/chromeos-ish )
-DESCRIPTION=Chrome OS Firmware virtual package
-EAPI=5
-HOMEPAGE=http://src.chromium.org
-IUSE=bootimage cros_ec cros_ish
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=!bootimage? ( chromeos-base/chromeos-firmware-null ) bootimage? ( sys-boot/chromeos-bootimage ) cros_ec? ( chromeos-base/chromeos-ec ) cros_ish? ( chromeos-base/chromeos-ish )
-SLOT=0
-_md5_=c9c451d4ab9a3e5c72f55a4264b75eb9
diff --git a/metadata/md5-cache/virtual/chromeos-firmware-1-r6 b/metadata/md5-cache/virtual/chromeos-firmware-1-r6
new file mode 100644
index 0000000..8712b2d
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-firmware-1-r6
@@ -0,0 +1,11 @@
+DEFINED_PHASES=-
+DEPEND=bootimage? ( sys-boot/chromeos-bootimage ) cros_ec? ( chromeos-base/chromeos-ec ) cros_ish? ( chromeos-base/chromeos-ish )
+DESCRIPTION=Chrome OS Firmware virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+IUSE=bootimage cros_ec cros_ish
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=!bootimage? ( chromeos-base/chromeos-firmware-null ) bootimage? ( sys-boot/chromeos-bootimage ) cros_ec? ( chromeos-base/chromeos-ec ) cros_ish? ( chromeos-base/chromeos-ish )
+SLOT=0
+_md5_=4f7883641a74b091e95154f0b65223f0
diff --git a/metadata/md5-cache/virtual/chromeos-firmware-fpmcu-1 b/metadata/md5-cache/virtual/chromeos-firmware-fpmcu-1
new file mode 100644
index 0000000..f22f7d3
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-firmware-fpmcu-1
@@ -0,0 +1,7 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-firmware-fpmcu. Overridden in the private overlay.
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=94119dcd984ad11fc420767f202dcb0e
diff --git a/metadata/md5-cache/virtual/chromeos-firmware-fpmcu-1-r1 b/metadata/md5-cache/virtual/chromeos-firmware-fpmcu-1-r1
deleted file mode 100644
index 9cc0259..0000000
--- a/metadata/md5-cache/virtual/chromeos-firmware-fpmcu-1-r1
+++ /dev/null
@@ -1,6 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-firmware-fpmcu. Overridden in the private overlay.
-EAPI=6
-KEYWORDS=*
-SLOT=0
-_md5_=1c316de9512ad1daa706fd73f9e4553c
diff --git a/metadata/md5-cache/virtual/chromeos-firmware-fpmcu-1-r3 b/metadata/md5-cache/virtual/chromeos-firmware-fpmcu-1-r3
new file mode 100644
index 0000000..f22f7d3
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-firmware-fpmcu-1-r3
@@ -0,0 +1,7 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-firmware-fpmcu. Overridden in the private overlay.
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=94119dcd984ad11fc420767f202dcb0e
diff --git a/metadata/md5-cache/virtual/chromeos-fpmcu-test-1 b/metadata/md5-cache/virtual/chromeos-fpmcu-test-1
new file mode 100644
index 0000000..2b7a73d
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-fpmcu-test-1
@@ -0,0 +1,7 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-fpmcu-test. Overridden in the private overlay.
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=0da2e120b5dca17f17fd7fa50c0afb51
diff --git a/metadata/md5-cache/virtual/chromeos-fpmcu-test-1-r1 b/metadata/md5-cache/virtual/chromeos-fpmcu-test-1-r1
deleted file mode 100644
index fb77d4f..0000000
--- a/metadata/md5-cache/virtual/chromeos-fpmcu-test-1-r1
+++ /dev/null
@@ -1,6 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-fpmcu-test. Overridden in the private overlay.
-EAPI=6
-KEYWORDS=*
-SLOT=0
-_md5_=d544d60f42ee8f43686610c33c58411b
diff --git a/metadata/md5-cache/virtual/chromeos-fpmcu-test-1-r3 b/metadata/md5-cache/virtual/chromeos-fpmcu-test-1-r3
new file mode 100644
index 0000000..2b7a73d
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-fpmcu-test-1-r3
@@ -0,0 +1,7 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisfies virtual/chromeos-fpmcu-test. Overridden in the private overlay.
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=0da2e120b5dca17f17fd7fa50c0afb51
diff --git a/metadata/md5-cache/virtual/chromeos-interface-1 b/metadata/md5-cache/virtual/chromeos-interface-1
index 7e2f5cd..9637462 100644
--- a/metadata/md5-cache/virtual/chromeos-interface-1
+++ b/metadata/md5-cache/virtual/chromeos-interface-1
@@ -1,10 +1,10 @@
 DEFINED_PHASES=-
 DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-interface. This is a direct dependency of chromeos-base/chromeos, but can be overridden in an overlay for specialized boards. To satisfy this virtual, a package should cause to be installed everything a user would need to interact with the system locally.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 IUSE=-chromeless_tty
 KEYWORDS=*
-LICENSE=BSD
+LICENSE=metapackage
 RDEPEND=!chromeless_tty? ( chromeos-base/chromeos-login chromeos-base/chromeos-chrome )
 SLOT=0
-_md5_=fce6b003bf806d16f2a69a3b47d81031
+_md5_=2f0ae6228f7c49bfcfea1e551e888a91
diff --git a/metadata/md5-cache/virtual/chromeos-interface-1-r5 b/metadata/md5-cache/virtual/chromeos-interface-1-r5
deleted file mode 100644
index 7e2f5cd..0000000
--- a/metadata/md5-cache/virtual/chromeos-interface-1-r5
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-interface. This is a direct dependency of chromeos-base/chromeos, but can be overridden in an overlay for specialized boards. To satisfy this virtual, a package should cause to be installed everything a user would need to interact with the system locally.
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-IUSE=-chromeless_tty
-KEYWORDS=*
-LICENSE=BSD
-RDEPEND=!chromeless_tty? ( chromeos-base/chromeos-login chromeos-base/chromeos-chrome )
-SLOT=0
-_md5_=fce6b003bf806d16f2a69a3b47d81031
diff --git a/metadata/md5-cache/virtual/chromeos-interface-1-r7 b/metadata/md5-cache/virtual/chromeos-interface-1-r7
new file mode 100644
index 0000000..9637462
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-interface-1-r7
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild which satisifies virtual/chromeos-interface. This is a direct dependency of chromeos-base/chromeos, but can be overridden in an overlay for specialized boards. To satisfy this virtual, a package should cause to be installed everything a user would need to interact with the system locally.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+IUSE=-chromeless_tty
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=!chromeless_tty? ( chromeos-base/chromeos-login chromeos-base/chromeos-chrome )
+SLOT=0
+_md5_=2f0ae6228f7c49bfcfea1e551e888a91
diff --git a/metadata/md5-cache/virtual/chromeos-oobe-assets-1 b/metadata/md5-cache/virtual/chromeos-oobe-assets-1
index 8c9597c..30b84fb 100644
--- a/metadata/md5-cache/virtual/chromeos-oobe-assets-1
+++ b/metadata/md5-cache/virtual/chromeos-oobe-assets-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS OOBE assets virtual package
-EAPI=5
+EAPI=7
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=chromeos-base/chromeos-oobe-assets
 SLOT=0
-_md5_=8af0e51c2edacc25015857d5d9d76ed3
+_md5_=86648e13b57acdfd8231482fba096e1b
diff --git a/metadata/md5-cache/virtual/chromeos-oobe-assets-1-r2 b/metadata/md5-cache/virtual/chromeos-oobe-assets-1-r2
new file mode 100644
index 0000000..30b84fb
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-oobe-assets-1-r2
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS OOBE assets virtual package
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-oobe-assets
+SLOT=0
+_md5_=86648e13b57acdfd8231482fba096e1b
diff --git a/metadata/md5-cache/virtual/chromeos-regions-1 b/metadata/md5-cache/virtual/chromeos-regions-1
index 60cea76..c056fa7 100644
--- a/metadata/md5-cache/virtual/chromeos-regions-1
+++ b/metadata/md5-cache/virtual/chromeos-regions-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS Regions virtual package
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=chromeos-base/regions
 SLOT=0
-_md5_=f0541a8e36b0574a533b305526aa338f
+_md5_=24a12e21135d386b8e3eed7df371c289
diff --git a/metadata/md5-cache/virtual/chromeos-regions-1-r2 b/metadata/md5-cache/virtual/chromeos-regions-1-r2
new file mode 100644
index 0000000..c056fa7
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-regions-1-r2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS Regions virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/regions
+SLOT=0
+_md5_=24a12e21135d386b8e3eed7df371c289
diff --git a/metadata/md5-cache/virtual/chromeos-test-testauthkeys-1 b/metadata/md5-cache/virtual/chromeos-test-testauthkeys-1
index 28830ec..b6984dc 100644
--- a/metadata/md5-cache/virtual/chromeos-test-testauthkeys-1
+++ b/metadata/md5-cache/virtual/chromeos-test-testauthkeys-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Generic ebuild that satisifies virtual/chromeos-test-testauthkeys. This is a direct dependency of chromeos-base/chromeos-test-testauthkeys, but is expected to be overridden in an overlay for some specialized board.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://www.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=chromeos-base/chromeos-test-testauthkeys
 SLOT=0
-_md5_=15d38a193421cd412eb8e95de408bd5f
+_md5_=e23352ce66f53567b9f38157b2bae245
diff --git a/metadata/md5-cache/virtual/chromeos-test-testauthkeys-1-r1 b/metadata/md5-cache/virtual/chromeos-test-testauthkeys-1-r1
deleted file mode 100644
index 28830ec..0000000
--- a/metadata/md5-cache/virtual/chromeos-test-testauthkeys-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Generic ebuild that satisifies virtual/chromeos-test-testauthkeys. This is a direct dependency of chromeos-base/chromeos-test-testauthkeys, but is expected to be overridden in an overlay for some specialized board.
-EAPI=4
-HOMEPAGE=http://www.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=chromeos-base/chromeos-test-testauthkeys
-SLOT=0
-_md5_=15d38a193421cd412eb8e95de408bd5f
diff --git a/metadata/md5-cache/virtual/chromeos-test-testauthkeys-1-r3 b/metadata/md5-cache/virtual/chromeos-test-testauthkeys-1-r3
new file mode 100644
index 0000000..b6984dc
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromeos-test-testauthkeys-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Generic ebuild that satisifies virtual/chromeos-test-testauthkeys. This is a direct dependency of chromeos-base/chromeos-test-testauthkeys, but is expected to be overridden in an overlay for some specialized board.
+EAPI=7
+HOMEPAGE=http://www.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-test-testauthkeys
+SLOT=0
+_md5_=e23352ce66f53567b9f38157b2bae245
diff --git a/metadata/md5-cache/virtual/chromeos-vendor-strings-1 b/metadata/md5-cache/virtual/chromeos-vendor-strings-1
deleted file mode 100644
index 9f12495..0000000
--- a/metadata/md5-cache/virtual/chromeos-vendor-strings-1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=sys-boot/chromeos-vendor-strings-null
-DESCRIPTION=Vendor firmware strings virtual package
-EAPI=5
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=sys-boot/chromeos-vendor-strings-null
-SLOT=0
-_md5_=e9d6d0fe23565ab1636db12f8a01deff
diff --git a/metadata/md5-cache/virtual/chromium-os-fuzzers-1-r55 b/metadata/md5-cache/virtual/chromium-os-fuzzers-1-r55
deleted file mode 100644
index 946c627..0000000
--- a/metadata/md5-cache/virtual/chromium-os-fuzzers-1-r55
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DESCRIPTION=List of packages that should be fuzzed
-EAPI=7
-HOMEPAGE=https://dev.chromium.org/
-IUSE=asan msan cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/arc-adbd[fuzzer] asan? ( chromeos-base/arc-keymaster[fuzzer] ) chromeos-base/arc-obb-mounter[fuzzer] chromeos-base/arc-setup[fuzzer] chromeos-base/authpolicy[fuzzer] chromeos-base/biod[fuzzer] chromeos-base/bluetooth[fuzzer] chromeos-base/chaps[fuzzer] chromeos-base/chromeos-ec[fuzzer] chromeos-base/chromeos-login[fuzzer] chromeos-base/crash-reporter[fuzzer] chromeos-base/cros-disks[fuzzer] chromeos-base/crosdns[fuzzer] chromeos-base/cryptohome[fuzzer] chromeos-base/cups-fuzz[fuzzer] chromeos-base/diagnostics[fuzzer] chromeos-base/dlcservice[fuzzer] chromeos-base/foomatic_shell[fuzzer] chromeos-base/ghostscript-fuzz[fuzzer] chromeos-base/hammerd[fuzzer] chromeos-base/imageloader[fuzzer] chromeos-base/ippusb_manager[fuzzer] chromeos-base/kerberos[fuzzer] chromeos-base/libbrillo[fuzzer] chromeos-base/libipp[fuzzer] asan? ( chromeos-base/libvda[fuzzer] ) chromeos-base/metrics[fuzzer] chromeos-base/ml[fuzzer] chromeos-base/modemfwd[fuzzer] chromeos-base/p2p[fuzzer] chromeos-base/patchpanel[fuzzer] chromeos-base/patchpanel-client[fuzzer] chromeos-base/permission_broker[fuzzer] chromeos-base/power_manager[fuzzer] chromeos-base/runtime_probe[fuzzer] >=chromeos-base/shill-0.0.1-r2205[fuzzer] chromeos-base/smbprovider[fuzzer] chromeos-base/system-proxy[fuzzer] chromeos-base/trunks[fuzzer] chromeos-base/u2fd[fuzzer] chromeos-base/update_engine[fuzzer] chromeos-base/usb_bouncer[fuzzer] chromeos-base/vboot_reference[fuzzer] chromeos-base/vm_guest_tools[fuzzer] chromeos-base/vpn-manager[fuzzer] asan? ( chromeos-base/vm_host_tools[fuzzer] ) dev-libs/modp_b64[fuzzer] asan? ( dev-rust/p9[fuzzer] ) dev-util/bsdiff[fuzzer] dev-util/puffin[fuzzer] media-gfx/sane-airscan[fuzzer] media-libs/virglrenderer[fuzzer] media-sound/adhd[fuzzer] net-dns/avahi[fuzzer]
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=52bf576055c4113e9037b2b0e7739384
diff --git a/metadata/md5-cache/virtual/chromium-os-fuzzers-1-r59 b/metadata/md5-cache/virtual/chromium-os-fuzzers-1-r59
new file mode 100644
index 0000000..41452fd
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromium-os-fuzzers-1-r59
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DESCRIPTION=List of packages that should be fuzzed
+EAPI=7
+HOMEPAGE=https://dev.chromium.org/
+IUSE=asan msan cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=metapackage
+PROPERTIES=live
+RDEPEND=chromeos-base/arc-adbd[fuzzer] asan? ( chromeos-base/arc-keymaster[fuzzer] ) chromeos-base/arc-obb-mounter[fuzzer] chromeos-base/arc-setup[fuzzer] chromeos-base/authpolicy[fuzzer] chromeos-base/biod[fuzzer] chromeos-base/chaps[fuzzer] chromeos-base/chromeos-ec[fuzzer] chromeos-base/chromeos-login[fuzzer] chromeos-base/crash-reporter[fuzzer] chromeos-base/cros-disks[fuzzer] chromeos-base/crosdns[fuzzer] chromeos-base/cryptohome[fuzzer] chromeos-base/cups-fuzz[fuzzer] chromeos-base/diagnostics[fuzzer] chromeos-base/dlcservice[fuzzer] chromeos-base/foomatic_shell[fuzzer] chromeos-base/ghostscript-fuzz[fuzzer] chromeos-base/hammerd[fuzzer] chromeos-base/imageloader[fuzzer] chromeos-base/kerberos[fuzzer] chromeos-base/libbrillo[fuzzer] chromeos-base/libipp[fuzzer] asan? ( chromeos-base/libvda[fuzzer] ) chromeos-base/metrics[fuzzer] chromeos-base/ml[fuzzer] chromeos-base/modemfwd[fuzzer] chromeos-base/p2p[fuzzer] chromeos-base/patchpanel[fuzzer] chromeos-base/patchpanel-client[fuzzer] chromeos-base/permission_broker[fuzzer] chromeos-base/power_manager[fuzzer] chromeos-base/runtime_probe[fuzzer] >=chromeos-base/shill-0.0.1-r2205[fuzzer] chromeos-base/smbprovider[fuzzer] chromeos-base/system-proxy[fuzzer] chromeos-base/trunks[fuzzer] chromeos-base/u2fd[fuzzer] chromeos-base/update_engine[fuzzer] chromeos-base/usb_bouncer[fuzzer] chromeos-base/vboot_reference[fuzzer] chromeos-base/vm_guest_tools[fuzzer] chromeos-base/vpn-manager[fuzzer] asan? ( chromeos-base/vm_host_tools[fuzzer] ) dev-libs/modp_b64[fuzzer] asan? ( dev-rust/p9[fuzzer] ) dev-util/bsdiff[fuzzer] dev-util/puffin[fuzzer] media-gfx/sane-airscan[fuzzer] media-libs/virglrenderer[fuzzer] media-sound/adhd[fuzzer] net-dns/avahi[fuzzer] net-wireless/bluez[fuzzer]
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5239207a2280e773a4169ab4060c9384
diff --git a/metadata/md5-cache/virtual/chromium-os-fuzzers-9999 b/metadata/md5-cache/virtual/chromium-os-fuzzers-9999
index 995951a..825bb17 100644
--- a/metadata/md5-cache/virtual/chromium-os-fuzzers-9999
+++ b/metadata/md5-cache/virtual/chromium-os-fuzzers-9999
@@ -5,9 +5,9 @@
 HOMEPAGE=https://dev.chromium.org/
 IUSE=asan msan cros_host cros_workon_tree_
 KEYWORDS=~*
-LICENSE=BSD-Google
+LICENSE=metapackage
 PROPERTIES=live
-RDEPEND=chromeos-base/arc-adbd[fuzzer] asan? ( chromeos-base/arc-keymaster[fuzzer] ) chromeos-base/arc-obb-mounter[fuzzer] chromeos-base/arc-setup[fuzzer] chromeos-base/authpolicy[fuzzer] chromeos-base/biod[fuzzer] chromeos-base/bluetooth[fuzzer] chromeos-base/chaps[fuzzer] chromeos-base/chromeos-ec[fuzzer] chromeos-base/chromeos-login[fuzzer] chromeos-base/crash-reporter[fuzzer] chromeos-base/cros-disks[fuzzer] chromeos-base/crosdns[fuzzer] chromeos-base/cryptohome[fuzzer] chromeos-base/cups-fuzz[fuzzer] chromeos-base/diagnostics[fuzzer] chromeos-base/dlcservice[fuzzer] chromeos-base/foomatic_shell[fuzzer] chromeos-base/ghostscript-fuzz[fuzzer] chromeos-base/hammerd[fuzzer] chromeos-base/imageloader[fuzzer] chromeos-base/ippusb_manager[fuzzer] chromeos-base/kerberos[fuzzer] chromeos-base/libbrillo[fuzzer] chromeos-base/libipp[fuzzer] asan? ( chromeos-base/libvda[fuzzer] ) chromeos-base/metrics[fuzzer] chromeos-base/ml[fuzzer] chromeos-base/modemfwd[fuzzer] chromeos-base/p2p[fuzzer] chromeos-base/patchpanel[fuzzer] chromeos-base/patchpanel-client[fuzzer] chromeos-base/permission_broker[fuzzer] chromeos-base/power_manager[fuzzer] chromeos-base/runtime_probe[fuzzer] >=chromeos-base/shill-0.0.1-r2205[fuzzer] chromeos-base/smbprovider[fuzzer] chromeos-base/system-proxy[fuzzer] chromeos-base/trunks[fuzzer] chromeos-base/u2fd[fuzzer] chromeos-base/update_engine[fuzzer] chromeos-base/usb_bouncer[fuzzer] chromeos-base/vboot_reference[fuzzer] chromeos-base/vm_guest_tools[fuzzer] chromeos-base/vpn-manager[fuzzer] asan? ( chromeos-base/vm_host_tools[fuzzer] ) dev-libs/modp_b64[fuzzer] asan? ( dev-rust/p9[fuzzer] ) dev-util/bsdiff[fuzzer] dev-util/puffin[fuzzer] media-gfx/sane-airscan[fuzzer] media-libs/virglrenderer[fuzzer] media-sound/adhd[fuzzer] net-dns/avahi[fuzzer]
+RDEPEND=chromeos-base/arc-adbd[fuzzer] asan? ( chromeos-base/arc-keymaster[fuzzer] ) chromeos-base/arc-obb-mounter[fuzzer] chromeos-base/arc-setup[fuzzer] chromeos-base/authpolicy[fuzzer] chromeos-base/biod[fuzzer] chromeos-base/chaps[fuzzer] chromeos-base/chromeos-ec[fuzzer] chromeos-base/chromeos-login[fuzzer] chromeos-base/crash-reporter[fuzzer] chromeos-base/cros-disks[fuzzer] chromeos-base/crosdns[fuzzer] chromeos-base/cryptohome[fuzzer] chromeos-base/cups-fuzz[fuzzer] chromeos-base/diagnostics[fuzzer] chromeos-base/dlcservice[fuzzer] chromeos-base/foomatic_shell[fuzzer] chromeos-base/ghostscript-fuzz[fuzzer] chromeos-base/hammerd[fuzzer] chromeos-base/imageloader[fuzzer] chromeos-base/kerberos[fuzzer] chromeos-base/libbrillo[fuzzer] chromeos-base/libipp[fuzzer] asan? ( chromeos-base/libvda[fuzzer] ) chromeos-base/metrics[fuzzer] chromeos-base/ml[fuzzer] chromeos-base/modemfwd[fuzzer] chromeos-base/p2p[fuzzer] chromeos-base/patchpanel[fuzzer] chromeos-base/patchpanel-client[fuzzer] chromeos-base/permission_broker[fuzzer] chromeos-base/power_manager[fuzzer] chromeos-base/runtime_probe[fuzzer] >=chromeos-base/shill-0.0.1-r2205[fuzzer] chromeos-base/smbprovider[fuzzer] chromeos-base/system-proxy[fuzzer] chromeos-base/trunks[fuzzer] chromeos-base/u2fd[fuzzer] chromeos-base/update_engine[fuzzer] chromeos-base/usb_bouncer[fuzzer] chromeos-base/vboot_reference[fuzzer] chromeos-base/vm_guest_tools[fuzzer] chromeos-base/vpn-manager[fuzzer] asan? ( chromeos-base/vm_host_tools[fuzzer] ) dev-libs/modp_b64[fuzzer] asan? ( dev-rust/p9[fuzzer] ) dev-util/bsdiff[fuzzer] dev-util/puffin[fuzzer] media-gfx/sane-airscan[fuzzer] media-libs/virglrenderer[fuzzer] media-sound/adhd[fuzzer] net-dns/avahi[fuzzer] net-wireless/bluez[fuzzer]
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=cb64bb2bf3978e81d0e41c378a561fba
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=6d6a426e8fbd2f1331941be057ad2b60
diff --git a/metadata/md5-cache/virtual/chromium-os-printing-1 b/metadata/md5-cache/virtual/chromium-os-printing-1
index 361773e..5eeebe0 100644
--- a/metadata/md5-cache/virtual/chromium-os-printing-1
+++ b/metadata/md5-cache/virtual/chromium-os-printing-1
@@ -1,10 +1,10 @@
 DEFINED_PHASES=-
 DESCRIPTION=List of packages required for the Chromium OS Printing subsystem
-EAPI=5
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 IUSE=internal postscript
 KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=chromeos-base/ippusb_manager chromeos-base/lexmark-fax-pnh net-print/cups net-print/cups-filters net-print/dymo-cups-drivers net-print/epson-inkjet-printer-escpr net-print/starcupsdrv internal? ( net-print/konica-minolta-printing-license ) internal? ( net-print/xerox-printing-license ) internal? ( net-print/fuji-xerox-printing-license ) postscript? ( net-print/hplip )
+LICENSE=metapackage
+RDEPEND=chromeos-base/ippusb_bridge chromeos-base/lexmark-fax-pnh net-print/cups net-print/cups-filters net-print/dymo-cups-drivers net-print/epson-inkjet-printer-escpr net-print/starcupsdrv internal? ( net-print/konica-minolta-printing-license ) internal? ( net-print/xerox-printing-license ) internal? ( net-print/fuji-xerox-printing-license ) postscript? ( net-print/hplip )
 SLOT=0
-_md5_=6e5fd208f075de0b1142341063b7d82b
+_md5_=8329521c7fa455dc3ef28d485e063247
diff --git a/metadata/md5-cache/virtual/chromium-os-printing-1-r10 b/metadata/md5-cache/virtual/chromium-os-printing-1-r10
deleted file mode 100644
index 361773e..0000000
--- a/metadata/md5-cache/virtual/chromium-os-printing-1-r10
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=List of packages required for the Chromium OS Printing subsystem
-EAPI=5
-HOMEPAGE=http://dev.chromium.org/
-IUSE=internal postscript
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=chromeos-base/ippusb_manager chromeos-base/lexmark-fax-pnh net-print/cups net-print/cups-filters net-print/dymo-cups-drivers net-print/epson-inkjet-printer-escpr net-print/starcupsdrv internal? ( net-print/konica-minolta-printing-license ) internal? ( net-print/xerox-printing-license ) internal? ( net-print/fuji-xerox-printing-license ) postscript? ( net-print/hplip )
-SLOT=0
-_md5_=6e5fd208f075de0b1142341063b7d82b
diff --git a/metadata/md5-cache/virtual/chromium-os-printing-1-r13 b/metadata/md5-cache/virtual/chromium-os-printing-1-r13
new file mode 100644
index 0000000..5eeebe0
--- /dev/null
+++ b/metadata/md5-cache/virtual/chromium-os-printing-1-r13
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of packages required for the Chromium OS Printing subsystem
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+IUSE=internal postscript
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/ippusb_bridge chromeos-base/lexmark-fax-pnh net-print/cups net-print/cups-filters net-print/dymo-cups-drivers net-print/epson-inkjet-printer-escpr net-print/starcupsdrv internal? ( net-print/konica-minolta-printing-license ) internal? ( net-print/xerox-printing-license ) internal? ( net-print/fuji-xerox-printing-license ) postscript? ( net-print/hplip )
+SLOT=0
+_md5_=8329521c7fa455dc3ef28d485e063247
diff --git a/metadata/md5-cache/virtual/coreboot-private-files-1 b/metadata/md5-cache/virtual/coreboot-private-files-1
new file mode 100644
index 0000000..37be311
--- /dev/null
+++ b/metadata/md5-cache/virtual/coreboot-private-files-1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Coreboot private files virtual package
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=sys-boot/coreboot-private-files-null
+SLOT=0
+_md5_=3ba072be066879c46f527cd5167af2cc
diff --git a/metadata/md5-cache/virtual/coreboot-private-files-1-r1 b/metadata/md5-cache/virtual/coreboot-private-files-1-r1
deleted file mode 100644
index 09a88ab..0000000
--- a/metadata/md5-cache/virtual/coreboot-private-files-1-r1
+++ /dev/null
@@ -1,7 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Coreboot private files virtual package
-EAPI=4
-KEYWORDS=*
-RDEPEND=sys-boot/coreboot-private-files-null
-SLOT=0
-_md5_=3c899bceba56a7b269a252d19ce89ce8
diff --git a/metadata/md5-cache/virtual/coreboot-private-files-1-r3 b/metadata/md5-cache/virtual/coreboot-private-files-1-r3
new file mode 100644
index 0000000..37be311
--- /dev/null
+++ b/metadata/md5-cache/virtual/coreboot-private-files-1-r3
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Coreboot private files virtual package
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=sys-boot/coreboot-private-files-null
+SLOT=0
+_md5_=3ba072be066879c46f527cd5167af2cc
diff --git a/metadata/md5-cache/virtual/cros-camera-hal-1 b/metadata/md5-cache/virtual/cros-camera-hal-1
index 211892b..289feb9 100644
--- a/metadata/md5-cache/virtual/cros-camera-hal-1
+++ b/metadata/md5-cache/virtual/cros-camera-hal-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS camera HAL virtual package
-EAPI=5
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=media-libs/cros-camera-hal-usb
 SLOT=0
-_md5_=b1ce0c364a43cbfc67d5c4f6650ebf44
+_md5_=c182ceab48588554e526e09e6c590810
diff --git a/metadata/md5-cache/virtual/cros-camera-hal-1-r2 b/metadata/md5-cache/virtual/cros-camera-hal-1-r2
new file mode 100644
index 0000000..289feb9
--- /dev/null
+++ b/metadata/md5-cache/virtual/cros-camera-hal-1-r2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS camera HAL virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=media-libs/cros-camera-hal-usb
+SLOT=0
+_md5_=c182ceab48588554e526e09e6c590810
diff --git a/metadata/md5-cache/virtual/cros-camera-hal-configs-1 b/metadata/md5-cache/virtual/cros-camera-hal-configs-1
index 0d00661..6472cb4 100644
--- a/metadata/md5-cache/virtual/cros-camera-hal-configs-1
+++ b/metadata/md5-cache/virtual/cros-camera-hal-configs-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS camera HAL configs virtual package
-EAPI=5
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=c0c40d0ddf5671f834dbf3748115914f
+_md5_=a5238f751dc98161aba10a90af2b960f
diff --git a/metadata/md5-cache/virtual/cros-camera-hal-configs-1-r2 b/metadata/md5-cache/virtual/cros-camera-hal-configs-1-r2
new file mode 100644
index 0000000..6472cb4
--- /dev/null
+++ b/metadata/md5-cache/virtual/cros-camera-hal-configs-1-r2
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS camera HAL configs virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=a5238f751dc98161aba10a90af2b960f
diff --git a/metadata/md5-cache/virtual/dptf-1 b/metadata/md5-cache/virtual/dptf-1
new file mode 100644
index 0000000..f47cc80
--- /dev/null
+++ b/metadata/md5-cache/virtual/dptf-1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Intel(R) Dynamic Platform & Thermal Framework
+EAPI=7
+HOMEPAGE=https://01.org/dptf/
+KEYWORDS=-* amd64 x86
+LICENSE=metapackage
+RDEPEND=sys-power/dptf
+SLOT=0
+_md5_=ad800fc192cb3fe242da4242650c0d41
diff --git a/metadata/md5-cache/virtual/dptf-1-r1 b/metadata/md5-cache/virtual/dptf-1-r1
deleted file mode 100644
index f49898a..0000000
--- a/metadata/md5-cache/virtual/dptf-1-r1
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Intel(R) Dynamic Platform & Thermal Framework
-EAPI=5
-HOMEPAGE=https://01.org/dptf/
-IUSE=kernel-3_10
-KEYWORDS=-* amd64 x86
-LICENSE=Apache-2.0 GPL-2 BSD
-RDEPEND=kernel-3_10? ( sys-power/dptf-3_10 ) !kernel-3_10? ( sys-power/dptf ) kernel-3_10? ( !sys-power/dptf ) !kernel-3_10? ( !sys-power/dptf-3_10 )
-REQUIRED_USE=?? ( kernel-3_10 )
-SLOT=0
-_md5_=9ba6e545b7ea95bb474c6d9b2afd3159
diff --git a/metadata/md5-cache/virtual/dptf-1-r2 b/metadata/md5-cache/virtual/dptf-1-r2
new file mode 100644
index 0000000..f47cc80
--- /dev/null
+++ b/metadata/md5-cache/virtual/dptf-1-r2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Intel(R) Dynamic Platform & Thermal Framework
+EAPI=7
+HOMEPAGE=https://01.org/dptf/
+KEYWORDS=-* amd64 x86
+LICENSE=metapackage
+RDEPEND=sys-power/dptf
+SLOT=0
+_md5_=ad800fc192cb3fe242da4242650c0d41
diff --git a/metadata/md5-cache/virtual/glu-1 b/metadata/md5-cache/virtual/glu-1
new file mode 100644
index 0000000..d1e65c2
--- /dev/null
+++ b/metadata/md5-cache/virtual/glu-1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Virtual for OpenGL utility library
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=|| ( media-libs/glu media-libs/opengl-apple )
+SLOT=0
+_md5_=7d7c2d41557c97136d275162e6c89b54
diff --git a/metadata/md5-cache/virtual/glu-1-r3 b/metadata/md5-cache/virtual/glu-1-r3
new file mode 100644
index 0000000..d1e65c2
--- /dev/null
+++ b/metadata/md5-cache/virtual/glu-1-r3
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Virtual for OpenGL utility library
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=|| ( media-libs/glu media-libs/opengl-apple )
+SLOT=0
+_md5_=7d7c2d41557c97136d275162e6c89b54
diff --git a/metadata/md5-cache/virtual/glu-9.0 b/metadata/md5-cache/virtual/glu-9.0
deleted file mode 100644
index 6501297..0000000
--- a/metadata/md5-cache/virtual/glu-9.0
+++ /dev/null
@@ -1,7 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Virtual for OpenGL utility library
-EAPI=0
-KEYWORDS=*
-RDEPEND=|| ( media-libs/glu media-libs/opengl-apple )
-SLOT=0
-_md5_=6ec4bf0c18f73a0d79500cbf99cccd8f
diff --git a/metadata/md5-cache/virtual/glu-9.0-r1 b/metadata/md5-cache/virtual/glu-9.0-r1
deleted file mode 100644
index 6501297..0000000
--- a/metadata/md5-cache/virtual/glu-9.0-r1
+++ /dev/null
@@ -1,7 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Virtual for OpenGL utility library
-EAPI=0
-KEYWORDS=*
-RDEPEND=|| ( media-libs/glu media-libs/opengl-apple )
-SLOT=0
-_md5_=6ec4bf0c18f73a0d79500cbf99cccd8f
diff --git a/metadata/md5-cache/virtual/implicit-system-1 b/metadata/md5-cache/virtual/implicit-system-1
index cfe818c..6119e92 100644
--- a/metadata/md5-cache/virtual/implicit-system-1
+++ b/metadata/md5-cache/virtual/implicit-system-1
@@ -1,9 +1,10 @@
 DEFINED_PHASES=-
 DEPEND=app-shells/dash chromeos-base/chromeos-base app-misc/ca-certificates !chromeos-base/root-certificates sys-apps/baselayout sys-apps/coreutils sys-apps/findutils sys-apps/grep sys-apps/mawk sys-apps/sed sys-apps/which sys-process/procps sys-apps/net-tools sys-apps/shadow sys-apps/util-linux sys-libs/gcc-libs sys-libs/libcxxabi sys-libs/libcxx sys-libs/timezone-data
 DESCRIPTION=Metapackage that provides the implicit system dependencies of anything CrOS-ish. These are things like 'mv', 'ls', 'mkfs', 'a shell', 'c libraries', users and groups, SSL certs, etc. If every package had to specify them, it'd be onerous and also difficult to replace them with other functional equivalents. Developers should assume that this metapackage supplies functionality roughly equivalent to a POSIX-compliant system. Each package we include here has justification provided inline. For further reference, see POSIX (1003.1-2008): http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html FHS: http://www.pathname.com/fhs/pub/fhs-2.3.html Other than the standard C and C++ libraries (libc, libpthreads, libstdc++, etc), if you're linking against a library that happens to be installed by a package listed here, you MUST also depend on the appropriate package. Exclusions: compression utils, e.g. tar/bzip2/gzip: at this time, we don't store data compressed on the rootfs, and don't expect users to be interacting on the command line. If your daemon needs functionality like this, ideally you'd use a library that implements this functionality and not command-line tools. iputils: ping et al are helpful diagnostic tools, but not required for normal system function.
-EAPI=5
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
+LICENSE=metapackage
 RDEPEND=app-shells/dash chromeos-base/chromeos-base app-misc/ca-certificates !chromeos-base/root-certificates sys-apps/baselayout sys-apps/coreutils sys-apps/findutils sys-apps/grep sys-apps/mawk sys-apps/sed sys-apps/which sys-process/procps sys-apps/net-tools sys-apps/shadow sys-apps/util-linux sys-libs/gcc-libs sys-libs/libcxxabi sys-libs/libcxx sys-libs/timezone-data
 SLOT=0
-_md5_=3018335eb14b1e6b8d43443083f0ca30
+_md5_=366855c8505b8a7cefc455e0116c8d2f
diff --git a/metadata/md5-cache/virtual/implicit-system-1-r4 b/metadata/md5-cache/virtual/implicit-system-1-r4
deleted file mode 100644
index cfe818c..0000000
--- a/metadata/md5-cache/virtual/implicit-system-1-r4
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=app-shells/dash chromeos-base/chromeos-base app-misc/ca-certificates !chromeos-base/root-certificates sys-apps/baselayout sys-apps/coreutils sys-apps/findutils sys-apps/grep sys-apps/mawk sys-apps/sed sys-apps/which sys-process/procps sys-apps/net-tools sys-apps/shadow sys-apps/util-linux sys-libs/gcc-libs sys-libs/libcxxabi sys-libs/libcxx sys-libs/timezone-data
-DESCRIPTION=Metapackage that provides the implicit system dependencies of anything CrOS-ish. These are things like 'mv', 'ls', 'mkfs', 'a shell', 'c libraries', users and groups, SSL certs, etc. If every package had to specify them, it'd be onerous and also difficult to replace them with other functional equivalents. Developers should assume that this metapackage supplies functionality roughly equivalent to a POSIX-compliant system. Each package we include here has justification provided inline. For further reference, see POSIX (1003.1-2008): http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html FHS: http://www.pathname.com/fhs/pub/fhs-2.3.html Other than the standard C and C++ libraries (libc, libpthreads, libstdc++, etc), if you're linking against a library that happens to be installed by a package listed here, you MUST also depend on the appropriate package. Exclusions: compression utils, e.g. tar/bzip2/gzip: at this time, we don't store data compressed on the rootfs, and don't expect users to be interacting on the command line. If your daemon needs functionality like this, ideally you'd use a library that implements this functionality and not command-line tools. iputils: ping et al are helpful diagnostic tools, but not required for normal system function.
-EAPI=5
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-RDEPEND=app-shells/dash chromeos-base/chromeos-base app-misc/ca-certificates !chromeos-base/root-certificates sys-apps/baselayout sys-apps/coreutils sys-apps/findutils sys-apps/grep sys-apps/mawk sys-apps/sed sys-apps/which sys-process/procps sys-apps/net-tools sys-apps/shadow sys-apps/util-linux sys-libs/gcc-libs sys-libs/libcxxabi sys-libs/libcxx sys-libs/timezone-data
-SLOT=0
-_md5_=3018335eb14b1e6b8d43443083f0ca30
diff --git a/metadata/md5-cache/virtual/implicit-system-1-r6 b/metadata/md5-cache/virtual/implicit-system-1-r6
new file mode 100644
index 0000000..6119e92
--- /dev/null
+++ b/metadata/md5-cache/virtual/implicit-system-1-r6
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=app-shells/dash chromeos-base/chromeos-base app-misc/ca-certificates !chromeos-base/root-certificates sys-apps/baselayout sys-apps/coreutils sys-apps/findutils sys-apps/grep sys-apps/mawk sys-apps/sed sys-apps/which sys-process/procps sys-apps/net-tools sys-apps/shadow sys-apps/util-linux sys-libs/gcc-libs sys-libs/libcxxabi sys-libs/libcxx sys-libs/timezone-data
+DESCRIPTION=Metapackage that provides the implicit system dependencies of anything CrOS-ish. These are things like 'mv', 'ls', 'mkfs', 'a shell', 'c libraries', users and groups, SSL certs, etc. If every package had to specify them, it'd be onerous and also difficult to replace them with other functional equivalents. Developers should assume that this metapackage supplies functionality roughly equivalent to a POSIX-compliant system. Each package we include here has justification provided inline. For further reference, see POSIX (1003.1-2008): http://pubs.opengroup.org/onlinepubs/9699919799/idx/utilities.html FHS: http://www.pathname.com/fhs/pub/fhs-2.3.html Other than the standard C and C++ libraries (libc, libpthreads, libstdc++, etc), if you're linking against a library that happens to be installed by a package listed here, you MUST also depend on the appropriate package. Exclusions: compression utils, e.g. tar/bzip2/gzip: at this time, we don't store data compressed on the rootfs, and don't expect users to be interacting on the command line. If your daemon needs functionality like this, ideally you'd use a library that implements this functionality and not command-line tools. iputils: ping et al are helpful diagnostic tools, but not required for normal system function.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=app-shells/dash chromeos-base/chromeos-base app-misc/ca-certificates !chromeos-base/root-certificates sys-apps/baselayout sys-apps/coreutils sys-apps/findutils sys-apps/grep sys-apps/mawk sys-apps/sed sys-apps/which sys-process/procps sys-apps/net-tools sys-apps/shadow sys-apps/util-linux sys-libs/gcc-libs sys-libs/libcxxabi sys-libs/libcxx sys-libs/timezone-data
+SLOT=0
+_md5_=366855c8505b8a7cefc455e0116c8d2f
diff --git a/metadata/md5-cache/virtual/libfp-1 b/metadata/md5-cache/virtual/libfp-1
index 7aa90c3..7856e58 100644
--- a/metadata/md5-cache/virtual/libfp-1
+++ b/metadata/md5-cache/virtual/libfp-1
@@ -1,6 +1,7 @@
 DEFINED_PHASES=-
 DESCRIPTION=Virtual for fingerprint support libraries
-EAPI=5
+EAPI=7
 KEYWORDS=*
+LICENSE=metapackage
 SLOT=0
-_md5_=50b098b4103abd8e7e8fcd5b03e55b61
+_md5_=8cc63cbfdd9ada0c83c7fe919c4cb2be
diff --git a/metadata/md5-cache/virtual/libfp-1-r2 b/metadata/md5-cache/virtual/libfp-1-r2
new file mode 100644
index 0000000..7856e58
--- /dev/null
+++ b/metadata/md5-cache/virtual/libfp-1-r2
@@ -0,0 +1,7 @@
+DEFINED_PHASES=-
+DESCRIPTION=Virtual for fingerprint support libraries
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=8cc63cbfdd9ada0c83c7fe919c4cb2be
diff --git a/metadata/md5-cache/virtual/linux-sources-1 b/metadata/md5-cache/virtual/linux-sources-1
index af7a04fd..8e45541 100644
--- a/metadata/md5-cache/virtual/linux-sources-1
+++ b/metadata/md5-cache/virtual/linux-sources-1
@@ -1,11 +1,11 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS Kernel virtual package
-EAPI=5
+EAPI=7
 HOMEPAGE=http://src.chromium.org
-IUSE=kernel-3_8 kernel-3_10 kernel-3_14 kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-4_19-ht kernel-5_4 kernel-5_10 kernel-experimental kernel-next kernel-upstream kernel-upstream-mainline kernel-upstream-next
+IUSE=kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-4_19-ht kernel-5_4 kernel-5_10 kernel-experimental kernel-next kernel-upstream kernel-upstream-mainline kernel-upstream-next
 KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=kernel-3_8? ( sys-kernel/chromeos-kernel-3_8 ) kernel-3_10? ( sys-kernel/chromeos-kernel-3_10 ) kernel-3_14? ( sys-kernel/chromeos-kernel-3_14 ) kernel-3_18? ( sys-kernel/chromeos-kernel-3_18 ) kernel-4_4? ( sys-kernel/chromeos-kernel-4_4 ) kernel-4_14? ( sys-kernel/chromeos-kernel-4_14 ) kernel-4_19? ( sys-kernel/chromeos-kernel-4_19 ) kernel-4_19-ht? ( sys-kernel/chromeos-kernel-4_19-ht ) kernel-5_4? ( sys-kernel/chromeos-kernel-5_4 ) kernel-5_10? ( sys-kernel/chromeos-kernel-5_10 ) kernel-experimental? ( sys-kernel/chromeos-kernel-experimental ) kernel-next? ( sys-kernel/chromeos-kernel-next ) kernel-upstream? ( sys-kernel/chromeos-kernel-upstream ) kernel-upstream-mainline? ( sys-kernel/upstream-kernel-mainline ) kernel-upstream-next? ( sys-kernel/upstream-kernel-next ) !kernel-3_8? ( !sys-kernel/chromeos-kernel-3_8 ) !kernel-3_10? ( !sys-kernel/chromeos-kernel-3_10 ) !kernel-3_14? ( !sys-kernel/chromeos-kernel-3_14 ) !kernel-3_18? ( !sys-kernel/chromeos-kernel-3_18 ) !kernel-4_4? ( !sys-kernel/chromeos-kernel-4_4 ) !kernel-4_14? ( !sys-kernel/chromeos-kernel-4_14 ) !kernel-4_19? ( !sys-kernel/chromeos-kernel-4_19 ) !kernel-4_19-ht? ( !sys-kernel/chromeos-kernel-4_19-ht ) !kernel-5_4? ( !sys-kernel/chromeos-kernel-5_4 ) !kernel-5_10? ( !sys-kernel/chromeos-kernel-5_10 ) !kernel-experimental? ( !sys-kernel/chromeos-kernel-experimental ) !kernel-next? ( !sys-kernel/chromeos-kernel-next ) !kernel-upstream? ( !sys-kernel/chromeos-kernel-upstream ) !kernel-upstream-mainline? ( !sys-kernel/chromeos-kernel-upstream-mainline ) !kernel-upstream-next? ( !sys-kernel/chromeos-kernel-upstream-next ) !kernel-3_8? ( !kernel-3_10? ( !kernel-3_14? ( !kernel-3_18? ( !kernel-4_4? ( !kernel-4_14? ( !kernel-4_19? ( !kernel-4_19-ht? ( !kernel-5_4? ( !kernel-5_10? ( !kernel-experimental? ( !kernel-next? ( !kernel-upstream? ( !kernel-upstream-mainline? ( !kernel-upstream-next? ( sys-kernel/chromeos-kernel-5_4 ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
-REQUIRED_USE=^^ ( kernel-3_8 kernel-3_10 kernel-3_14 kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-4_19-ht kernel-5_4 kernel-5_10 kernel-experimental kernel-next kernel-upstream kernel-upstream-mainline kernel-upstream-next )
+LICENSE=metapackage
+RDEPEND=kernel-3_18? ( sys-kernel/chromeos-kernel-3_18 ) kernel-4_4? ( sys-kernel/chromeos-kernel-4_4 ) kernel-4_14? ( sys-kernel/chromeos-kernel-4_14 ) kernel-4_19? ( sys-kernel/chromeos-kernel-4_19 ) kernel-4_19-ht? ( sys-kernel/chromeos-kernel-4_19-ht ) kernel-5_4? ( sys-kernel/chromeos-kernel-5_4 ) kernel-5_10? ( sys-kernel/chromeos-kernel-5_10 ) kernel-experimental? ( sys-kernel/chromeos-kernel-experimental ) kernel-next? ( sys-kernel/chromeos-kernel-next ) kernel-upstream? ( sys-kernel/chromeos-kernel-upstream ) kernel-upstream-mainline? ( sys-kernel/upstream-kernel-mainline ) kernel-upstream-next? ( sys-kernel/upstream-kernel-next ) !kernel-3_18? ( !sys-kernel/chromeos-kernel-3_18 ) !kernel-4_4? ( !sys-kernel/chromeos-kernel-4_4 ) !kernel-4_14? ( !sys-kernel/chromeos-kernel-4_14 ) !kernel-4_19? ( !sys-kernel/chromeos-kernel-4_19 ) !kernel-4_19-ht? ( !sys-kernel/chromeos-kernel-4_19-ht ) !kernel-5_4? ( !sys-kernel/chromeos-kernel-5_4 ) !kernel-5_10? ( !sys-kernel/chromeos-kernel-5_10 ) !kernel-experimental? ( !sys-kernel/chromeos-kernel-experimental ) !kernel-next? ( !sys-kernel/chromeos-kernel-next ) !kernel-upstream? ( !sys-kernel/chromeos-kernel-upstream ) !kernel-upstream-mainline? ( !sys-kernel/chromeos-kernel-upstream-mainline ) !kernel-upstream-next? ( !sys-kernel/chromeos-kernel-upstream-next ) !kernel-3_18? ( !kernel-4_4? ( !kernel-4_14? ( !kernel-4_19? ( !kernel-4_19-ht? ( !kernel-5_4? ( !kernel-5_10? ( !kernel-experimental? ( !kernel-next? ( !kernel-upstream? ( !kernel-upstream-mainline? ( !kernel-upstream-next? ( sys-kernel/chromeos-kernel-5_4 ) ) ) ) ) ) ) ) ) ) ) )
+REQUIRED_USE=^^ ( kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-4_19-ht kernel-5_4 kernel-5_10 kernel-experimental kernel-next kernel-upstream kernel-upstream-mainline kernel-upstream-next )
 SLOT=0
-_md5_=3d84ffd4d02d617e0c0313367bb809da
+_md5_=47050dc1cc4b27c8f7f4111d757ef63c
diff --git a/metadata/md5-cache/virtual/linux-sources-1-r24 b/metadata/md5-cache/virtual/linux-sources-1-r24
deleted file mode 100644
index af7a04fd..0000000
--- a/metadata/md5-cache/virtual/linux-sources-1-r24
+++ /dev/null
@@ -1,11 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Chrome OS Kernel virtual package
-EAPI=5
-HOMEPAGE=http://src.chromium.org
-IUSE=kernel-3_8 kernel-3_10 kernel-3_14 kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-4_19-ht kernel-5_4 kernel-5_10 kernel-experimental kernel-next kernel-upstream kernel-upstream-mainline kernel-upstream-next
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=kernel-3_8? ( sys-kernel/chromeos-kernel-3_8 ) kernel-3_10? ( sys-kernel/chromeos-kernel-3_10 ) kernel-3_14? ( sys-kernel/chromeos-kernel-3_14 ) kernel-3_18? ( sys-kernel/chromeos-kernel-3_18 ) kernel-4_4? ( sys-kernel/chromeos-kernel-4_4 ) kernel-4_14? ( sys-kernel/chromeos-kernel-4_14 ) kernel-4_19? ( sys-kernel/chromeos-kernel-4_19 ) kernel-4_19-ht? ( sys-kernel/chromeos-kernel-4_19-ht ) kernel-5_4? ( sys-kernel/chromeos-kernel-5_4 ) kernel-5_10? ( sys-kernel/chromeos-kernel-5_10 ) kernel-experimental? ( sys-kernel/chromeos-kernel-experimental ) kernel-next? ( sys-kernel/chromeos-kernel-next ) kernel-upstream? ( sys-kernel/chromeos-kernel-upstream ) kernel-upstream-mainline? ( sys-kernel/upstream-kernel-mainline ) kernel-upstream-next? ( sys-kernel/upstream-kernel-next ) !kernel-3_8? ( !sys-kernel/chromeos-kernel-3_8 ) !kernel-3_10? ( !sys-kernel/chromeos-kernel-3_10 ) !kernel-3_14? ( !sys-kernel/chromeos-kernel-3_14 ) !kernel-3_18? ( !sys-kernel/chromeos-kernel-3_18 ) !kernel-4_4? ( !sys-kernel/chromeos-kernel-4_4 ) !kernel-4_14? ( !sys-kernel/chromeos-kernel-4_14 ) !kernel-4_19? ( !sys-kernel/chromeos-kernel-4_19 ) !kernel-4_19-ht? ( !sys-kernel/chromeos-kernel-4_19-ht ) !kernel-5_4? ( !sys-kernel/chromeos-kernel-5_4 ) !kernel-5_10? ( !sys-kernel/chromeos-kernel-5_10 ) !kernel-experimental? ( !sys-kernel/chromeos-kernel-experimental ) !kernel-next? ( !sys-kernel/chromeos-kernel-next ) !kernel-upstream? ( !sys-kernel/chromeos-kernel-upstream ) !kernel-upstream-mainline? ( !sys-kernel/chromeos-kernel-upstream-mainline ) !kernel-upstream-next? ( !sys-kernel/chromeos-kernel-upstream-next ) !kernel-3_8? ( !kernel-3_10? ( !kernel-3_14? ( !kernel-3_18? ( !kernel-4_4? ( !kernel-4_14? ( !kernel-4_19? ( !kernel-4_19-ht? ( !kernel-5_4? ( !kernel-5_10? ( !kernel-experimental? ( !kernel-next? ( !kernel-upstream? ( !kernel-upstream-mainline? ( !kernel-upstream-next? ( sys-kernel/chromeos-kernel-5_4 ) ) ) ) ) ) ) ) ) ) ) ) ) ) )
-REQUIRED_USE=^^ ( kernel-3_8 kernel-3_10 kernel-3_14 kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-4_19-ht kernel-5_4 kernel-5_10 kernel-experimental kernel-next kernel-upstream kernel-upstream-mainline kernel-upstream-next )
-SLOT=0
-_md5_=3d84ffd4d02d617e0c0313367bb809da
diff --git a/metadata/md5-cache/virtual/linux-sources-1-r27 b/metadata/md5-cache/virtual/linux-sources-1-r27
new file mode 100644
index 0000000..8e45541
--- /dev/null
+++ b/metadata/md5-cache/virtual/linux-sources-1-r27
@@ -0,0 +1,11 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS Kernel virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+IUSE=kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-4_19-ht kernel-5_4 kernel-5_10 kernel-experimental kernel-next kernel-upstream kernel-upstream-mainline kernel-upstream-next
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=kernel-3_18? ( sys-kernel/chromeos-kernel-3_18 ) kernel-4_4? ( sys-kernel/chromeos-kernel-4_4 ) kernel-4_14? ( sys-kernel/chromeos-kernel-4_14 ) kernel-4_19? ( sys-kernel/chromeos-kernel-4_19 ) kernel-4_19-ht? ( sys-kernel/chromeos-kernel-4_19-ht ) kernel-5_4? ( sys-kernel/chromeos-kernel-5_4 ) kernel-5_10? ( sys-kernel/chromeos-kernel-5_10 ) kernel-experimental? ( sys-kernel/chromeos-kernel-experimental ) kernel-next? ( sys-kernel/chromeos-kernel-next ) kernel-upstream? ( sys-kernel/chromeos-kernel-upstream ) kernel-upstream-mainline? ( sys-kernel/upstream-kernel-mainline ) kernel-upstream-next? ( sys-kernel/upstream-kernel-next ) !kernel-3_18? ( !sys-kernel/chromeos-kernel-3_18 ) !kernel-4_4? ( !sys-kernel/chromeos-kernel-4_4 ) !kernel-4_14? ( !sys-kernel/chromeos-kernel-4_14 ) !kernel-4_19? ( !sys-kernel/chromeos-kernel-4_19 ) !kernel-4_19-ht? ( !sys-kernel/chromeos-kernel-4_19-ht ) !kernel-5_4? ( !sys-kernel/chromeos-kernel-5_4 ) !kernel-5_10? ( !sys-kernel/chromeos-kernel-5_10 ) !kernel-experimental? ( !sys-kernel/chromeos-kernel-experimental ) !kernel-next? ( !sys-kernel/chromeos-kernel-next ) !kernel-upstream? ( !sys-kernel/chromeos-kernel-upstream ) !kernel-upstream-mainline? ( !sys-kernel/chromeos-kernel-upstream-mainline ) !kernel-upstream-next? ( !sys-kernel/chromeos-kernel-upstream-next ) !kernel-3_18? ( !kernel-4_4? ( !kernel-4_14? ( !kernel-4_19? ( !kernel-4_19-ht? ( !kernel-5_4? ( !kernel-5_10? ( !kernel-experimental? ( !kernel-next? ( !kernel-upstream? ( !kernel-upstream-mainline? ( !kernel-upstream-next? ( sys-kernel/chromeos-kernel-5_4 ) ) ) ) ) ) ) ) ) ) ) )
+REQUIRED_USE=^^ ( kernel-3_18 kernel-4_4 kernel-4_14 kernel-4_19 kernel-4_19-ht kernel-5_4 kernel-5_10 kernel-experimental kernel-next kernel-upstream kernel-upstream-mainline kernel-upstream-next )
+SLOT=0
+_md5_=47050dc1cc4b27c8f7f4111d757ef63c
diff --git a/metadata/md5-cache/virtual/lpe-support-0.0.1 b/metadata/md5-cache/virtual/lpe-support-0.0.1
deleted file mode 100644
index 8448d34..0000000
--- a/metadata/md5-cache/virtual/lpe-support-0.0.1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=apl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_apl] ) cnl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_cnl] ) glk_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_glk] ) kbl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_kbl] ) media-libs/lpe-support-topology media-libs/lpe-support-blacklist skl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_skl] )
-DESCRIPTION=Ebuild which pulls in any necessary ebuilds as dependencies or portage actions.
-EAPI=4
-IUSE=skl_lpe apl_lpe kbl_lpe cnl_lpe glk_lpe
-KEYWORDS=-* amd64 x86
-RDEPEND=apl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_apl] ) cnl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_cnl] ) glk_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_glk] ) kbl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_kbl] ) media-libs/lpe-support-topology media-libs/lpe-support-blacklist skl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_skl] )
-SLOT=0
-_md5_=e1d7de5d1c2997121f7b08e04799e1c9
diff --git a/metadata/md5-cache/virtual/lpe-support-0.0.1-r5 b/metadata/md5-cache/virtual/lpe-support-0.0.1-r5
deleted file mode 100644
index 8448d34..0000000
--- a/metadata/md5-cache/virtual/lpe-support-0.0.1-r5
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=apl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_apl] ) cnl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_cnl] ) glk_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_glk] ) kbl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_kbl] ) media-libs/lpe-support-topology media-libs/lpe-support-blacklist skl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_skl] )
-DESCRIPTION=Ebuild which pulls in any necessary ebuilds as dependencies or portage actions.
-EAPI=4
-IUSE=skl_lpe apl_lpe kbl_lpe cnl_lpe glk_lpe
-KEYWORDS=-* amd64 x86
-RDEPEND=apl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_apl] ) cnl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_cnl] ) glk_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_glk] ) kbl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_kbl] ) media-libs/lpe-support-topology media-libs/lpe-support-blacklist skl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_skl] )
-SLOT=0
-_md5_=e1d7de5d1c2997121f7b08e04799e1c9
diff --git a/metadata/md5-cache/virtual/lpe-support-1 b/metadata/md5-cache/virtual/lpe-support-1
new file mode 100644
index 0000000..e4194b3
--- /dev/null
+++ b/metadata/md5-cache/virtual/lpe-support-1
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=apl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_apl] ) cnl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_cnl] ) glk_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_glk] ) kbl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_kbl] ) media-libs/lpe-support-topology media-libs/lpe-support-blacklist skl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_skl] )
+DESCRIPTION=Ebuild which pulls in any necessary ebuilds as dependencies or portage actions.
+EAPI=7
+IUSE=skl_lpe apl_lpe kbl_lpe cnl_lpe glk_lpe
+KEYWORDS=-* amd64 x86
+LICENSE=metapackage
+RDEPEND=apl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_apl] ) cnl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_cnl] ) glk_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_glk] ) kbl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_kbl] ) media-libs/lpe-support-topology media-libs/lpe-support-blacklist skl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_skl] )
+SLOT=0
+_md5_=121f279e68ada69ae7b0f34c5a17c9ab
diff --git a/metadata/md5-cache/virtual/lpe-support-1-r7 b/metadata/md5-cache/virtual/lpe-support-1-r7
new file mode 100644
index 0000000..e4194b3
--- /dev/null
+++ b/metadata/md5-cache/virtual/lpe-support-1-r7
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=apl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_apl] ) cnl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_cnl] ) glk_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_glk] ) kbl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_kbl] ) media-libs/lpe-support-topology media-libs/lpe-support-blacklist skl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_skl] )
+DESCRIPTION=Ebuild which pulls in any necessary ebuilds as dependencies or portage actions.
+EAPI=7
+IUSE=skl_lpe apl_lpe kbl_lpe cnl_lpe glk_lpe
+KEYWORDS=-* amd64 x86
+LICENSE=metapackage
+RDEPEND=apl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_apl] ) cnl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_cnl] ) glk_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_glk] ) kbl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_kbl] ) media-libs/lpe-support-topology media-libs/lpe-support-blacklist skl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_skl] )
+SLOT=0
+_md5_=121f279e68ada69ae7b0f34c5a17c9ab
diff --git a/metadata/md5-cache/virtual/opengles-1 b/metadata/md5-cache/virtual/opengles-1
index 0778ee2..fb0ff45 100644
--- a/metadata/md5-cache/virtual/opengles-1
+++ b/metadata/md5-cache/virtual/opengles-1
@@ -1,7 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Virtual for OpenGLES implementations
-EAPI=5
+EAPI=7
 KEYWORDS=*
+LICENSE=metapackage
 RDEPEND=media-libs/mesa[egl,gles2]
 SLOT=0
-_md5_=2f7cc9ca461ad7e78bf248c6447bea66
+_md5_=150f0c046fed33c8f29d19e6e865c128
diff --git a/metadata/md5-cache/virtual/opengles-1-r2 b/metadata/md5-cache/virtual/opengles-1-r2
deleted file mode 100644
index 0778ee2..0000000
--- a/metadata/md5-cache/virtual/opengles-1-r2
+++ /dev/null
@@ -1,7 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Virtual for OpenGLES implementations
-EAPI=5
-KEYWORDS=*
-RDEPEND=media-libs/mesa[egl,gles2]
-SLOT=0
-_md5_=2f7cc9ca461ad7e78bf248c6447bea66
diff --git a/metadata/md5-cache/virtual/opengles-1-r4 b/metadata/md5-cache/virtual/opengles-1-r4
new file mode 100644
index 0000000..fb0ff45
--- /dev/null
+++ b/metadata/md5-cache/virtual/opengles-1-r4
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Virtual for OpenGLES implementations
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=media-libs/mesa[egl,gles2]
+SLOT=0
+_md5_=150f0c046fed33c8f29d19e6e865c128
diff --git a/metadata/md5-cache/virtual/rust-1.46.0 b/metadata/md5-cache/virtual/rust-1.46.0
deleted file mode 100644
index a62c390..0000000
--- a/metadata/md5-cache/virtual/rust-1.46.0
+++ /dev/null
@@ -1,7 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=~dev-lang/rust-1.46.0:=
-DESCRIPTION=Virtual for the Rust language compiler
-EAPI=6
-KEYWORDS=*
-SLOT=0/1.46.0
-_md5_=164fc08ee3fe56e28c586365c467101b
diff --git a/metadata/md5-cache/virtual/rust-1.47.0 b/metadata/md5-cache/virtual/rust-1.47.0
new file mode 100644
index 0000000..5d3e69a
--- /dev/null
+++ b/metadata/md5-cache/virtual/rust-1.47.0
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DEPEND=~dev-lang/rust-1.47.0:=
+DESCRIPTION=Virtual for the Rust language compiler
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0/1.47.0
+_md5_=562a9b7b89850bc9d641a4adb3977d36
diff --git a/metadata/md5-cache/virtual/rust-1.47.0-r5 b/metadata/md5-cache/virtual/rust-1.47.0-r5
deleted file mode 100644
index 564fce8..0000000
--- a/metadata/md5-cache/virtual/rust-1.47.0-r5
+++ /dev/null
@@ -1,7 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=~dev-lang/rust-1.47.0:=
-DESCRIPTION=Virtual for the Rust language compiler
-EAPI=6
-KEYWORDS=*
-SLOT=0/1.47.0
-_md5_=164fc08ee3fe56e28c586365c467101b
diff --git a/metadata/md5-cache/virtual/rust-1.47.0-r7 b/metadata/md5-cache/virtual/rust-1.47.0-r7
new file mode 100644
index 0000000..5d3e69a
--- /dev/null
+++ b/metadata/md5-cache/virtual/rust-1.47.0-r7
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DEPEND=~dev-lang/rust-1.47.0:=
+DESCRIPTION=Virtual for the Rust language compiler
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0/1.47.0
+_md5_=562a9b7b89850bc9d641a4adb3977d36
diff --git a/metadata/md5-cache/virtual/rust-1.51.0 b/metadata/md5-cache/virtual/rust-1.51.0
new file mode 100644
index 0000000..a09a172
--- /dev/null
+++ b/metadata/md5-cache/virtual/rust-1.51.0
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DEPEND=~dev-lang/rust-1.51.0:=
+DESCRIPTION=Virtual for the Rust language compiler
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0/1.51.0
+_md5_=562a9b7b89850bc9d641a4adb3977d36
diff --git a/metadata/md5-cache/virtual/rust-1.51.0-r1 b/metadata/md5-cache/virtual/rust-1.51.0-r1
new file mode 100644
index 0000000..a09a172
--- /dev/null
+++ b/metadata/md5-cache/virtual/rust-1.51.0-r1
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DEPEND=~dev-lang/rust-1.51.0:=
+DESCRIPTION=Virtual for the Rust language compiler
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0/1.51.0
+_md5_=562a9b7b89850bc9d641a4adb3977d36
diff --git a/metadata/md5-cache/virtual/service-manager-1 b/metadata/md5-cache/virtual/service-manager-1
index 4ece837..b86e59c 100644
--- a/metadata/md5-cache/virtual/service-manager-1
+++ b/metadata/md5-cache/virtual/service-manager-1
@@ -1,9 +1,10 @@
 DEFINED_PHASES=-
 DEPEND=chromeos-base/chromeos-init
 DESCRIPTION=Generic ebuild which satisifies virtual/service-manager. This is a direct dependency of chromeos-base/chromeos, but can be overridden in an overlay for specialized boards. To satisfy this virtual, a package should cause to be installed everything required to bring the system up and start managing system services.
-EAPI=5
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
+LICENSE=metapackage
 RDEPEND=chromeos-base/chromeos-init
 SLOT=0
-_md5_=a912f0f641486ce3f8f261de66046897
+_md5_=aacb28cfd4a447d1598161b049d6e8ea
diff --git a/metadata/md5-cache/virtual/service-manager-1-r1 b/metadata/md5-cache/virtual/service-manager-1-r1
deleted file mode 100644
index 4ece837..0000000
--- a/metadata/md5-cache/virtual/service-manager-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=chromeos-base/chromeos-init
-DESCRIPTION=Generic ebuild which satisifies virtual/service-manager. This is a direct dependency of chromeos-base/chromeos, but can be overridden in an overlay for specialized boards. To satisfy this virtual, a package should cause to be installed everything required to bring the system up and start managing system services.
-EAPI=5
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-RDEPEND=chromeos-base/chromeos-init
-SLOT=0
-_md5_=a912f0f641486ce3f8f261de66046897
diff --git a/metadata/md5-cache/virtual/service-manager-1-r3 b/metadata/md5-cache/virtual/service-manager-1-r3
new file mode 100644
index 0000000..b86e59c
--- /dev/null
+++ b/metadata/md5-cache/virtual/service-manager-1-r3
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=chromeos-base/chromeos-init
+DESCRIPTION=Generic ebuild which satisifies virtual/service-manager. This is a direct dependency of chromeos-base/chromeos, but can be overridden in an overlay for specialized boards. To satisfy this virtual, a package should cause to be installed everything required to bring the system up and start managing system services.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-init
+SLOT=0
+_md5_=aacb28cfd4a447d1598161b049d6e8ea
diff --git a/metadata/md5-cache/virtual/servo-config-dut-usb3-1 b/metadata/md5-cache/virtual/servo-config-dut-usb3-1
new file mode 100644
index 0000000..6ff0c4f
--- /dev/null
+++ b/metadata/md5-cache/virtual/servo-config-dut-usb3-1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List DUT USB 3 capability of Servo devices (virtual).
+EAPI=7
+IUSE=internal
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=dev-util/servo-config-dut-usb3-public:= internal? ( dev-util/servo-config-dut-usb3-private:= )
+SLOT=0/1
+_md5_=0b39a1897f65d365f2a9f6a18894a4d4
diff --git a/metadata/md5-cache/virtual/servo-config-dut-usb3-1-r1 b/metadata/md5-cache/virtual/servo-config-dut-usb3-1-r1
deleted file mode 100644
index 7b7dd21..0000000
--- a/metadata/md5-cache/virtual/servo-config-dut-usb3-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=List DUT USB 3 capability of Servo devices (virtual).
-EAPI=7
-IUSE=internal
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=dev-util/servo-config-dut-usb3-public:= internal? ( dev-util/servo-config-dut-usb3-private:= )
-SLOT=0/1-r1
-_md5_=a28b589ad50512d0b8e06144fa5b780b
diff --git a/metadata/md5-cache/virtual/servo-config-dut-usb3-1-r2 b/metadata/md5-cache/virtual/servo-config-dut-usb3-1-r2
new file mode 100644
index 0000000..7fd88d8
--- /dev/null
+++ b/metadata/md5-cache/virtual/servo-config-dut-usb3-1-r2
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List DUT USB 3 capability of Servo devices (virtual).
+EAPI=7
+IUSE=internal
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=dev-util/servo-config-dut-usb3-public:= internal? ( dev-util/servo-config-dut-usb3-private:= )
+SLOT=0/1-r2
+_md5_=0b39a1897f65d365f2a9f6a18894a4d4
diff --git a/metadata/md5-cache/virtual/target-chromium-os-1-r152 b/metadata/md5-cache/virtual/target-chromium-os-1-r152
deleted file mode 100644
index bfd7cc3..0000000
--- a/metadata/md5-cache/virtual/target-chromium-os-1-r152
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DESCRIPTION=List of packages that are needed inside the Chromium OS base (release)
-EAPI=7
-HOMEPAGE=https://dev.chromium.org/
-IUSE=arc-camera1 arc-camera3 biod bluetooth bootchart buffet cellular compupdates containers cr50_onboard +cras +crash_reporting +cros_disks cros_embedded cups +debugd diagnostics dlc dlc_test dptf eclog +fonts fpstudy fuzzer fwupd hammerd iioservice ime input_devices_evdev intel_lpe iwlwifi_rescan kerberos_daemon kernel-3_8 kvm_host manatee media_perception memd mist minios modemfwd ml_service mtd +network_time nfc pam pciguard perfetto postscript +power_management +profile racc +readahead scanner selinux +shill smbprovider +syslog +system_locales system_proxy systemd touchview +tpm -tpm2 +trim_supported typecd usb_bouncer usbguard +vpn watchdog cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=input_devices_evdev? ( app-misc/evtest ) syslog? ( app-admin/rsyslog chromeos-base/croslog sys-apps/journald ) biod? ( chromeos-base/biod ) fpstudy? ( chromeos-base/fingerprint_study ) compupdates? ( chromeos-base/imageloader ) dlc? ( chromeos-base/dlcservice ) dlc_test? ( chromeos-base/sample-dlc chromeos-base/test-dlc ) bluetooth? ( chromeos-base/bluetooth ) bootchart? ( app-benchmarks/bootchart ) tpm? ( !tpm2? ( app-crypt/trousers ) chromeos-base/chaps ) tpm2? ( chromeos-base/trunks ) pam? ( virtual/chromeos-auth-config ) fonts? ( chromeos-base/chromeos-fonts ) chromeos-base/chromeos-installer chromeos-base/dev-install perfetto? ( chromeos-base/perfetto ) crash_reporting? ( chromeos-base/crash-reporter ) mist? ( chromeos-base/mist ) modemfwd? ( chromeos-base/modemfwd ) buffet? ( chromeos-base/buffet ) containers? ( chromeos-base/run_oci ) cros_disks? ( chromeos-base/cros-disks ) debugd? ( chromeos-base/debugd ) diagnostics? ( chromeos-base/diagnostics ) kerberos_daemon? ( chromeos-base/kerberos ) scanner? ( chromeos-base/lorgnette ) ml_service? ( chromeos-base/ml ) hammerd? ( chromeos-base/hammerd ) racc? ( chromeos-base/hardware_verifier chromeos-base/runtime_probe ) iioservice? ( chromeos-base/iioservice ) media_perception? ( chromeos-base/mri_package ) memd? ( chromeos-base/memd ) power_management? ( chromeos-base/power_manager ) !chromeos-base/platform2 profile? ( chromeos-base/quipper ) selinux? ( chromeos-base/selinux-policy ) shill? ( >=chromeos-base/shill-0.0.1-r2205 ) manatee? ( chromeos-base/sirenia ) usb_bouncer? ( chromeos-base/usb_bouncer ) chromeos-base/update_engine vpn? ( chromeos-base/vpn-manager ) cras? ( media-sound/adhd media-sound/cras_tests ) trim_supported? ( chromeos-base/chromeos-trim ) network_time? ( net-misc/tlsdate ) iwlwifi_rescan? ( net-wireless/iwlwifi_rescan ) nfc? ( net-wireless/neard chromeos-base/neard-configs ) readahead? ( sys-apps/ureadahead ) pam? ( sys-auth/pam_pwdfile ) watchdog? ( sys-apps/daisydog ) mtd? ( sys-fs/mtd-utils ) cups? ( virtual/chromium-os-printing ) touchview? ( chromeos-base/chromeos-accelerometer-init ) system_locales? ( chromeos-base/system-locales ) system_proxy? ( chromeos-base/system-proxy ) eclog? ( chromeos-base/timberslide ) chromeos-base/chromeos-machine-id-regen systemd? ( sys-apps/systemd ) usbguard? ( sys-apps/usbguard ) kvm_host? ( chromeos-base/crosdns chromeos-base/crostini_client chromeos-base/vm_host_tools dlc? ( chromeos-base/termina-dlc ) ) sys-kernel/linux-firmware virtual/chromeos-bsp virtual/chromeos-firewall virtual/chromeos-firmware virtual/chromeos-interface virtual/chromeos-regions virtual/implicit-system virtual/linux-sources virtual/modutils virtual/service-manager cr50_onboard? ( chromeos-base/chromeos-cr50 chromeos-base/u2fd ) ime? ( app-i18n/chinese-input app-i18n/keyboard-input app-i18n/japanese-input app-i18n/hangul-input ) fuzzer? ( virtual/target-fuzzers ) !dev-python/socksipy arc-camera1? ( chromeos-base/cros-camera ) arc-camera3? ( chromeos-base/cros-camera ) fwupd? ( sys-apps/fwupd ) smbprovider? ( chromeos-base/smbfs chromeos-base/smbprovider ) typecd? ( chromeos-base/typecd ) pciguard? ( chromeos-base/pciguard ) minios? ( chromeos-base/minios ) !cros_embedded? ( x86? ( dptf? ( virtual/dptf ) intel_lpe? ( virtual/lpe-support ) ) amd64? ( dptf? ( virtual/dptf ) intel_lpe? ( virtual/lpe-support ) ) app-arch/tar app-editors/vim app-shells/bash chromeos-base/common-assets chromeos-base/chromeos-imageburner chromeos-base/crosh chromeos-base/crosh-extension chromeos-base/inputcontrol chromeos-base/mtpd chromeos-base/permission_broker chromeos-base/userfeedback chromeos-base/vboot_reference chromeos-base/vpd bluetooth? ( kernel-3_8? ( net-wireless/ath3k ) ) net-wireless/crda sys-apps/dbus sys-apps/flashrom sys-apps/iproute2 sys-apps/pv sys-apps/rootdev !systemd? ( sys-apps/systemd-tmpfiles sys-apps/upstart ) sys-fs/e2fsprogs virtual/assets virtual/cheets virtual/udev )
-REQUIRED_USE=cellular? ( shill ) modemfwd? ( cellular )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=598ceada4c9289971dc0bf12f2830420
diff --git a/metadata/md5-cache/virtual/target-chromium-os-1-r172 b/metadata/md5-cache/virtual/target-chromium-os-1-r172
new file mode 100644
index 0000000..9afb281
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-chromium-os-1-r172
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DESCRIPTION=List of packages that are needed inside the Chromium OS base (release)
+EAPI=7
+HOMEPAGE=https://dev.chromium.org/
+IUSE=arc-camera1 arc-camera3 biod bluetooth bootchart buffet cellular compupdates containers cr50_onboard +cras +crash_reporting +cros_disks cros_embedded cups +debugd diagnostics dlc dlc_test dlp dns-proxy dptf eclog +fonts fpstudy fuzzer fwupd hammerd iioservice ime input_devices_evdev intel_lpe iwlwifi_rescan kerberos_daemon kvm_host lacros_rootfs manatee media_perception memd missive mist minios secanomalyd modemfwd ml_service hps mtd +network_time nfc os_install_service pam pciguard perfetto postscript +power_management +profile racc +readahead resourced rmad scanner selinux +shill sirenia smbprovider +syslog +system_locales system_proxy systemd ti50_onboard touchview +tpm -tpm2 +trim_supported typecd usb_bouncer usbguard +vpn watchdog cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=metapackage
+PROPERTIES=live
+RDEPEND=input_devices_evdev? ( app-misc/evtest ) syslog? ( app-admin/rsyslog chromeos-base/croslog ) biod? ( chromeos-base/biod ) fpstudy? ( chromeos-base/fingerprint_study ) compupdates? ( chromeos-base/imageloader ) dlc? ( chromeos-base/dlcservice ) dlc_test? ( chromeos-base/sample-dlc chromeos-base/test-dlc ) bluetooth? ( net-wireless/bluez ) bootchart? ( app-benchmarks/bootchart ) tpm? ( !tpm2? ( app-crypt/trousers ) chromeos-base/chaps ) tpm2? ( chromeos-base/trunks ) pam? ( virtual/chromeos-auth-config ) fonts? ( chromeos-base/chromeos-fonts ) chromeos-base/chromeos-installer chromeos-base/dev-install os_install_service? ( chromeos-base/os_install_service ) perfetto? ( chromeos-base/perfetto ) crash_reporting? ( chromeos-base/crash-reporter ) missive? ( chromeos-base/missive ) mist? ( chromeos-base/mist ) modemfwd? ( chromeos-base/modemfwd ) buffet? ( chromeos-base/buffet ) containers? ( chromeos-base/run_oci ) cros_disks? ( chromeos-base/cros-disks ) debugd? ( chromeos-base/debugd ) diagnostics? ( chromeos-base/diagnostics ) dlp? ( chromeos-base/dlp ) kerberos_daemon? ( chromeos-base/kerberos ) scanner? ( chromeos-base/lorgnette ) ml_service? ( chromeos-base/ml ) hps? ( chromeos-base/hpsd ) hammerd? ( chromeos-base/hammerd ) racc? ( chromeos-base/hardware_verifier chromeos-base/runtime_probe ) rmad? ( chromeos-base/rmad ) iioservice? ( chromeos-base/iioservice ) media_perception? ( chromeos-base/mri_package ) memd? ( chromeos-base/memd ) power_management? ( chromeos-base/power_manager ) !chromeos-base/platform2 profile? ( chromeos-base/quipper ) resourced? ( chromeos-base/resourced ) selinux? ( chromeos-base/selinux-policy ) shill? ( >=chromeos-base/shill-0.0.1-r2205 ) manatee? ( chromeos-base/sirenia ) sirenia? ( chromeos-base/sirenia ) usb_bouncer? ( chromeos-base/usb_bouncer ) chromeos-base/update_engine vpn? ( chromeos-base/vpn-manager ) cras? ( media-sound/adhd media-sound/cras_tests ) trim_supported? ( chromeos-base/chromeos-trim ) network_time? ( net-misc/tlsdate ) iwlwifi_rescan? ( net-wireless/iwlwifi_rescan ) nfc? ( net-wireless/neard chromeos-base/neard-configs ) readahead? ( sys-apps/ureadahead ) pam? ( sys-auth/pam_pwdfile ) watchdog? ( sys-apps/daisydog ) mtd? ( sys-fs/mtd-utils ) cups? ( virtual/chromium-os-printing ) touchview? ( !iioservice? ( chromeos-base/chromeos-accelerometer-init ) ) system_locales? ( chromeos-base/system-locales ) system_proxy? ( chromeos-base/system-proxy ) eclog? ( chromeos-base/timberslide ) chromeos-base/chromeos-machine-id-regen systemd? ( sys-apps/systemd ) !systemd? ( sys-apps/systemd-tmpfiles ) usbguard? ( sys-apps/usbguard ) kvm_host? ( chromeos-base/crosdns chromeos-base/crostini_client chromeos-base/vm_host_tools chromeos-base/termina-dlc ) sys-kernel/linux-firmware virtual/chromeos-bsp virtual/chromeos-firewall virtual/chromeos-firmware virtual/chromeos-interface virtual/chromeos-regions virtual/implicit-system virtual/linux-sources virtual/modutils virtual/service-manager cr50_onboard? ( chromeos-base/chromeos-cr50 chromeos-base/u2fd ) ti50_onboard? ( chromeos-base/chromeos-ti50 chromeos-base/u2fd ) ime? ( app-i18n/chinese-input app-i18n/keyboard-input app-i18n/japanese-input app-i18n/hangul-input ) fuzzer? ( virtual/target-fuzzers ) !dev-python/socksipy arc-camera1? ( chromeos-base/cros-camera ) arc-camera3? ( chromeos-base/cros-camera ) fwupd? ( sys-apps/fwupd ) smbprovider? ( chromeos-base/smbfs chromeos-base/smbprovider ) typecd? ( chromeos-base/typecd ) pciguard? ( chromeos-base/pciguard ) minios? ( chromeos-base/minios ) secanomalyd? ( chromeos-base/secanomalyd ) lacros_rootfs? ( chromeos-base/chromeos-lacros ) dns-proxy? ( chromeos-base/dns-proxy ) !cros_embedded? ( x86? ( dptf? ( virtual/dptf ) intel_lpe? ( virtual/lpe-support ) ) amd64? ( dptf? ( virtual/dptf ) intel_lpe? ( virtual/lpe-support ) ) app-arch/tar app-editors/vim app-shells/bash chromeos-base/common-assets chromeos-base/chromeos-imageburner chromeos-base/crosh chromeos-base/crosh-extension chromeos-base/inputcontrol chromeos-base/mtpd chromeos-base/permission_broker chromeos-base/userfeedback chromeos-base/vboot_reference chromeos-base/vpd net-wireless/crda sys-apps/dbus sys-apps/flashrom sys-apps/iproute2 sys-apps/rootdev !systemd? ( sys-apps/upstart ) sys-fs/e2fsprogs virtual/assets virtual/cheets virtual/udev )
+REQUIRED_USE=cellular? ( shill ) modemfwd? ( cellular )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=11a56230b14c2c7f5326f5fc6f569af5
diff --git a/metadata/md5-cache/virtual/target-chromium-os-9999 b/metadata/md5-cache/virtual/target-chromium-os-9999
index 6f339a1..f0587ab 100644
--- a/metadata/md5-cache/virtual/target-chromium-os-9999
+++ b/metadata/md5-cache/virtual/target-chromium-os-9999
@@ -3,12 +3,12 @@
 DESCRIPTION=List of packages that are needed inside the Chromium OS base (release)
 EAPI=7
 HOMEPAGE=https://dev.chromium.org/
-IUSE=arc-camera1 arc-camera3 biod bluetooth bootchart buffet cellular compupdates containers cr50_onboard +cras +crash_reporting +cros_disks cros_embedded cups +debugd diagnostics dlc dlc_test dptf eclog +fonts fpstudy fuzzer fwupd hammerd iioservice ime input_devices_evdev intel_lpe iwlwifi_rescan kerberos_daemon kernel-3_8 kvm_host manatee media_perception memd mist minios modemfwd ml_service mtd +network_time nfc pam pciguard perfetto postscript +power_management +profile racc +readahead scanner selinux +shill smbprovider +syslog +system_locales system_proxy systemd touchview +tpm -tpm2 +trim_supported typecd usb_bouncer usbguard +vpn watchdog cros_host cros_workon_tree_
+IUSE=arc-camera1 arc-camera3 biod bluetooth bootchart buffet cellular compupdates containers cr50_onboard +cras +crash_reporting +cros_disks cros_embedded cups +debugd diagnostics dlc dlc_test dlp dns-proxy dptf eclog +fonts fpstudy fuzzer fwupd hammerd iioservice ime input_devices_evdev intel_lpe iwlwifi_rescan kerberos_daemon kvm_host lacros_rootfs manatee media_perception memd missive mist minios secanomalyd modemfwd ml_service hps mtd +network_time nfc os_install_service pam pciguard perfetto postscript +power_management +profile racc +readahead resourced rmad scanner selinux +shill sirenia smbprovider +syslog +system_locales system_proxy systemd ti50_onboard touchview +tpm -tpm2 +trim_supported typecd usb_bouncer usbguard +vpn watchdog cros_host cros_workon_tree_
 KEYWORDS=~*
-LICENSE=BSD-Google
+LICENSE=metapackage
 PROPERTIES=live
-RDEPEND=input_devices_evdev? ( app-misc/evtest ) syslog? ( app-admin/rsyslog chromeos-base/croslog sys-apps/journald ) biod? ( chromeos-base/biod ) fpstudy? ( chromeos-base/fingerprint_study ) compupdates? ( chromeos-base/imageloader ) dlc? ( chromeos-base/dlcservice ) dlc_test? ( chromeos-base/sample-dlc chromeos-base/test-dlc ) bluetooth? ( chromeos-base/bluetooth ) bootchart? ( app-benchmarks/bootchart ) tpm? ( !tpm2? ( app-crypt/trousers ) chromeos-base/chaps ) tpm2? ( chromeos-base/trunks ) pam? ( virtual/chromeos-auth-config ) fonts? ( chromeos-base/chromeos-fonts ) chromeos-base/chromeos-installer chromeos-base/dev-install perfetto? ( chromeos-base/perfetto ) crash_reporting? ( chromeos-base/crash-reporter ) mist? ( chromeos-base/mist ) modemfwd? ( chromeos-base/modemfwd ) buffet? ( chromeos-base/buffet ) containers? ( chromeos-base/run_oci ) cros_disks? ( chromeos-base/cros-disks ) debugd? ( chromeos-base/debugd ) diagnostics? ( chromeos-base/diagnostics ) kerberos_daemon? ( chromeos-base/kerberos ) scanner? ( chromeos-base/lorgnette ) ml_service? ( chromeos-base/ml ) hammerd? ( chromeos-base/hammerd ) racc? ( chromeos-base/hardware_verifier chromeos-base/runtime_probe ) iioservice? ( chromeos-base/iioservice ) media_perception? ( chromeos-base/mri_package ) memd? ( chromeos-base/memd ) power_management? ( chromeos-base/power_manager ) !chromeos-base/platform2 profile? ( chromeos-base/quipper ) selinux? ( chromeos-base/selinux-policy ) shill? ( >=chromeos-base/shill-0.0.1-r2205 ) manatee? ( chromeos-base/sirenia ) usb_bouncer? ( chromeos-base/usb_bouncer ) chromeos-base/update_engine vpn? ( chromeos-base/vpn-manager ) cras? ( media-sound/adhd media-sound/cras_tests ) trim_supported? ( chromeos-base/chromeos-trim ) network_time? ( net-misc/tlsdate ) iwlwifi_rescan? ( net-wireless/iwlwifi_rescan ) nfc? ( net-wireless/neard chromeos-base/neard-configs ) readahead? ( sys-apps/ureadahead ) pam? ( sys-auth/pam_pwdfile ) watchdog? ( sys-apps/daisydog ) mtd? ( sys-fs/mtd-utils ) cups? ( virtual/chromium-os-printing ) touchview? ( chromeos-base/chromeos-accelerometer-init ) system_locales? ( chromeos-base/system-locales ) system_proxy? ( chromeos-base/system-proxy ) eclog? ( chromeos-base/timberslide ) chromeos-base/chromeos-machine-id-regen systemd? ( sys-apps/systemd ) usbguard? ( sys-apps/usbguard ) kvm_host? ( chromeos-base/crosdns chromeos-base/crostini_client chromeos-base/vm_host_tools dlc? ( chromeos-base/termina-dlc ) ) sys-kernel/linux-firmware virtual/chromeos-bsp virtual/chromeos-firewall virtual/chromeos-firmware virtual/chromeos-interface virtual/chromeos-regions virtual/implicit-system virtual/linux-sources virtual/modutils virtual/service-manager cr50_onboard? ( chromeos-base/chromeos-cr50 chromeos-base/u2fd ) ime? ( app-i18n/chinese-input app-i18n/keyboard-input app-i18n/japanese-input app-i18n/hangul-input ) fuzzer? ( virtual/target-fuzzers ) !dev-python/socksipy arc-camera1? ( chromeos-base/cros-camera ) arc-camera3? ( chromeos-base/cros-camera ) fwupd? ( sys-apps/fwupd ) smbprovider? ( chromeos-base/smbfs chromeos-base/smbprovider ) typecd? ( chromeos-base/typecd ) pciguard? ( chromeos-base/pciguard ) minios? ( chromeos-base/minios ) !cros_embedded? ( x86? ( dptf? ( virtual/dptf ) intel_lpe? ( virtual/lpe-support ) ) amd64? ( dptf? ( virtual/dptf ) intel_lpe? ( virtual/lpe-support ) ) app-arch/tar app-editors/vim app-shells/bash chromeos-base/common-assets chromeos-base/chromeos-imageburner chromeos-base/crosh chromeos-base/crosh-extension chromeos-base/inputcontrol chromeos-base/mtpd chromeos-base/permission_broker chromeos-base/userfeedback chromeos-base/vboot_reference chromeos-base/vpd bluetooth? ( kernel-3_8? ( net-wireless/ath3k ) ) net-wireless/crda sys-apps/dbus sys-apps/flashrom sys-apps/iproute2 sys-apps/pv sys-apps/rootdev !systemd? ( sys-apps/systemd-tmpfiles sys-apps/upstart ) sys-fs/e2fsprogs virtual/assets virtual/cheets virtual/udev )
+RDEPEND=input_devices_evdev? ( app-misc/evtest ) syslog? ( app-admin/rsyslog chromeos-base/croslog ) biod? ( chromeos-base/biod ) fpstudy? ( chromeos-base/fingerprint_study ) compupdates? ( chromeos-base/imageloader ) dlc? ( chromeos-base/dlcservice ) dlc_test? ( chromeos-base/sample-dlc chromeos-base/test-dlc ) bluetooth? ( net-wireless/bluez ) bootchart? ( app-benchmarks/bootchart ) tpm? ( !tpm2? ( app-crypt/trousers ) chromeos-base/chaps ) tpm2? ( chromeos-base/trunks ) pam? ( virtual/chromeos-auth-config ) fonts? ( chromeos-base/chromeos-fonts ) chromeos-base/chromeos-installer chromeos-base/dev-install os_install_service? ( chromeos-base/os_install_service ) perfetto? ( chromeos-base/perfetto ) crash_reporting? ( chromeos-base/crash-reporter ) missive? ( chromeos-base/missive ) mist? ( chromeos-base/mist ) modemfwd? ( chromeos-base/modemfwd ) buffet? ( chromeos-base/buffet ) containers? ( chromeos-base/run_oci ) cros_disks? ( chromeos-base/cros-disks ) debugd? ( chromeos-base/debugd ) diagnostics? ( chromeos-base/diagnostics ) dlp? ( chromeos-base/dlp ) kerberos_daemon? ( chromeos-base/kerberos ) scanner? ( chromeos-base/lorgnette ) ml_service? ( chromeos-base/ml ) hps? ( chromeos-base/hpsd ) hammerd? ( chromeos-base/hammerd ) racc? ( chromeos-base/hardware_verifier chromeos-base/runtime_probe ) rmad? ( chromeos-base/rmad ) iioservice? ( chromeos-base/iioservice ) media_perception? ( chromeos-base/mri_package ) memd? ( chromeos-base/memd ) power_management? ( chromeos-base/power_manager ) !chromeos-base/platform2 profile? ( chromeos-base/quipper ) resourced? ( chromeos-base/resourced ) selinux? ( chromeos-base/selinux-policy ) shill? ( >=chromeos-base/shill-0.0.1-r2205 ) manatee? ( chromeos-base/sirenia ) sirenia? ( chromeos-base/sirenia ) usb_bouncer? ( chromeos-base/usb_bouncer ) chromeos-base/update_engine vpn? ( chromeos-base/vpn-manager ) cras? ( media-sound/adhd media-sound/cras_tests ) trim_supported? ( chromeos-base/chromeos-trim ) network_time? ( net-misc/tlsdate ) iwlwifi_rescan? ( net-wireless/iwlwifi_rescan ) nfc? ( net-wireless/neard chromeos-base/neard-configs ) readahead? ( sys-apps/ureadahead ) pam? ( sys-auth/pam_pwdfile ) watchdog? ( sys-apps/daisydog ) mtd? ( sys-fs/mtd-utils ) cups? ( virtual/chromium-os-printing ) touchview? ( !iioservice? ( chromeos-base/chromeos-accelerometer-init ) ) system_locales? ( chromeos-base/system-locales ) system_proxy? ( chromeos-base/system-proxy ) eclog? ( chromeos-base/timberslide ) chromeos-base/chromeos-machine-id-regen systemd? ( sys-apps/systemd ) !systemd? ( sys-apps/systemd-tmpfiles ) usbguard? ( sys-apps/usbguard ) kvm_host? ( chromeos-base/crosdns chromeos-base/crostini_client chromeos-base/vm_host_tools chromeos-base/termina-dlc ) sys-kernel/linux-firmware virtual/chromeos-bsp virtual/chromeos-firewall virtual/chromeos-firmware virtual/chromeos-interface virtual/chromeos-regions virtual/implicit-system virtual/linux-sources virtual/modutils virtual/service-manager cr50_onboard? ( chromeos-base/chromeos-cr50 chromeos-base/u2fd ) ti50_onboard? ( chromeos-base/chromeos-ti50 chromeos-base/u2fd ) ime? ( app-i18n/chinese-input app-i18n/keyboard-input app-i18n/japanese-input app-i18n/hangul-input ) fuzzer? ( virtual/target-fuzzers ) !dev-python/socksipy arc-camera1? ( chromeos-base/cros-camera ) arc-camera3? ( chromeos-base/cros-camera ) fwupd? ( sys-apps/fwupd ) smbprovider? ( chromeos-base/smbfs chromeos-base/smbprovider ) typecd? ( chromeos-base/typecd ) pciguard? ( chromeos-base/pciguard ) minios? ( chromeos-base/minios ) secanomalyd? ( chromeos-base/secanomalyd ) lacros_rootfs? ( chromeos-base/chromeos-lacros ) dns-proxy? ( chromeos-base/dns-proxy ) !cros_embedded? ( x86? ( dptf? ( virtual/dptf ) intel_lpe? ( virtual/lpe-support ) ) amd64? ( dptf? ( virtual/dptf ) intel_lpe? ( virtual/lpe-support ) ) app-arch/tar app-editors/vim app-shells/bash chromeos-base/common-assets chromeos-base/chromeos-imageburner chromeos-base/crosh chromeos-base/crosh-extension chromeos-base/inputcontrol chromeos-base/mtpd chromeos-base/permission_broker chromeos-base/userfeedback chromeos-base/vboot_reference chromeos-base/vpd net-wireless/crda sys-apps/dbus sys-apps/flashrom sys-apps/iproute2 sys-apps/rootdev !systemd? ( sys-apps/upstart ) sys-fs/e2fsprogs virtual/assets virtual/cheets virtual/udev )
 REQUIRED_USE=cellular? ( shill ) modemfwd? ( cellular )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=65ff9a90e45139d50fa5c1bced2c67b5
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=ca4d8c1a46e8cbb434c3b0deac43eafb
diff --git a/metadata/md5-cache/virtual/target-chromium-os-dev-1-r64 b/metadata/md5-cache/virtual/target-chromium-os-dev-1-r64
deleted file mode 100644
index 1466b5a..0000000
--- a/metadata/md5-cache/virtual/target-chromium-os-dev-1-r64
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DESCRIPTION=List of packages that are needed inside the Chromium OS dev image
-EAPI=7
-HOMEPAGE=https://dev.chromium.org/
-IUSE=chromeless_tty cras nvme opengl pam +power_management +profile python_targets_python2_7 +shill tpm tpm2 usb vaapi video_cards_amdgpu video_cards_intel cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=x86? ( app-benchmarks/i7z power_management? ( dev-util/turbostat ) sys-apps/dmidecode sys-apps/pciutils sys-boot/syslinux vaapi? ( chromeos-base/libva-fake-driver media-gfx/vadumpcaps media-video/libva-utils ) video_cards_amdgpu? ( x11-apps/igt-gpu-tools ) video_cards_intel? ( x11-apps/igt-gpu-tools ) ) amd64? ( app-benchmarks/i7z power_management? ( dev-util/turbostat ) sys-apps/dmidecode sys-apps/pciutils sys-boot/syslinux vaapi? ( chromeos-base/libva-fake-driver media-gfx/vadumpcaps media-video/libva-utils ) video_cards_amdgpu? ( x11-apps/igt-gpu-tools ) video_cards_intel? ( x11-apps/igt-gpu-tools ) ) pam? ( app-admin/sudo ) app-admin/sysstat app-arch/bzip2 app-arch/gzip app-arch/tar app-arch/unzip app-arch/xz-utils app-arch/zip profile? ( chromeos-base/quipper app-benchmarks/libc-bench net-analyzer/netperf dev-util/perf ) app-benchmarks/stress-ng app-crypt/nss tpm? ( app-crypt/tpm-tools ) app-editors/nano app-editors/qemacs app-editors/vim app-misc/edid-decode app-misc/evtest app-misc/pax-utils app-misc/screen app-portage/portage-utils app-shells/bash app-text/tree cras? ( chromeos-base/audiotest media-sound/sox ) chromeos-base/avtest_label_detect chromeos-base/chromeos-dev-root chromeos-base/cros-config-test chromeos-base/cryptohome-dev-utils tpm2? ( chromeos-base/g2f_tools ) !chromeless_tty? ( chromeos-base/graphics-utils-go ) chromeos-base/update-utils chromeos-base/policy_utils chromeos-base/protofiles !chromeless_tty? ( chromeos-base/screen-capture-utils ) shill? ( chromeos-base/shill-test-scripts ) python_targets_python2_7? ( chromeos-base/touch_firmware_test ) chromeos-base/usi-test dev-vcs/git net-analyzer/tcpdump net-analyzer/traceroute net-dialup/minicom net-dns/bind-tools net-misc/dhcp net-misc/iperf:2 net-misc/iputils net-misc/openssh net-misc/rsync net-wireless/iw net-wireless/wireless-tools python_targets_python2_7? ( dev-lang/python:2.7 ) dev-lang/python:3.6 dev-libs/libgpiod dev-python/protobuf-python dev-python/cherrypy dev-python/dbus-python dev-python/hid-tools python_targets_python2_7? ( dev-util/hdctools ) dev-util/mem dev-util/strace media-libs/openh264 media-tv/v4l-utils media-video/yavta net-dialup/lrzsz net-fs/sshfs net-misc/curl net-misc/wget sys-apps/coreboot-utils sys-apps/coreutils sys-apps/diffutils sys-apps/file sys-apps/findutils sys-apps/flashrom-tester sys-apps/gawk sys-apps/i2c-tools sys-apps/iotools sys-apps/kbd sys-apps/less sys-apps/mmc-utils nvme? ( sys-apps/nvme-cli ) sys-apps/portage sys-apps/smartmontools usb? ( sys-apps/usbutils ) sys-apps/which sys-block/fio sys-devel/gdb sys-fs/fuse sys-fs/lvm2 sys-fs/mtd-utils power_management? ( sys-power/powertop ) sys-process/procps sys-process/psmisc sys-process/time virtual/autotest-capability virtual/chromeos-bsp-dev
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=11e6adbf9c9f893052d5d657af09e1b7
diff --git a/metadata/md5-cache/virtual/target-chromium-os-dev-1-r69 b/metadata/md5-cache/virtual/target-chromium-os-dev-1-r69
new file mode 100644
index 0000000..7fd6b23
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-chromium-os-dev-1-r69
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DESCRIPTION=List of packages that are needed inside the Chromium OS dev image
+EAPI=7
+HOMEPAGE=https://dev.chromium.org/
+IUSE=chromeless_tty cras diag nvme opengl pam +power_management +profile python_targets_python2_7 +shill tpm tpm2 usb vaapi video_cards_amdgpu video_cards_intel vulkan cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=metapackage
+PROPERTIES=live
+RDEPEND=x86? ( app-benchmarks/i7z power_management? ( dev-util/turbostat ) sys-apps/dmidecode sys-apps/pciutils sys-boot/syslinux vaapi? ( chromeos-base/libva-fake-driver media-gfx/vadumpcaps media-video/libva-utils ) video_cards_amdgpu? ( x11-apps/igt-gpu-tools ) video_cards_intel? ( x11-apps/igt-gpu-tools ) ) amd64? ( app-benchmarks/i7z power_management? ( dev-util/turbostat ) sys-apps/dmidecode sys-apps/pciutils sys-boot/syslinux vaapi? ( chromeos-base/libva-fake-driver media-gfx/vadumpcaps media-video/libva-utils ) video_cards_amdgpu? ( x11-apps/igt-gpu-tools ) video_cards_intel? ( x11-apps/igt-gpu-tools ) ) pam? ( app-admin/sudo ) app-admin/sysstat app-arch/bzip2 app-arch/gzip app-arch/tar app-arch/unzip app-arch/xz-utils app-arch/zip profile? ( chromeos-base/quipper app-benchmarks/libc-bench net-analyzer/netperf dev-util/perf ) app-benchmarks/stress-ng app-crypt/nss tpm? ( app-crypt/tpm-tools ) app-editors/nano app-editors/qemacs app-editors/vim app-misc/edid-decode app-misc/evtest app-misc/pax-utils app-misc/screen app-portage/portage-utils app-shells/bash app-text/tree cras? ( chromeos-base/audiotest media-sound/sox ) chromeos-base/avtest_label_detect chromeos-base/chromeos-dev-root chromeos-base/cros-config-test chromeos-base/cryptohome-dev-utils tpm2? ( chromeos-base/g2f_tools ) !chromeless_tty? ( chromeos-base/graphics-utils-go ) chromeos-base/policy_utils chromeos-base/protofiles !chromeless_tty? ( chromeos-base/screen-capture-utils ) shill? ( chromeos-base/shill-test-scripts ) python_targets_python2_7? ( chromeos-base/touch_firmware_test ) chromeos-base/usi-test dev-vcs/git net-analyzer/tcpdump net-analyzer/traceroute net-dialup/minicom net-dns/bind-tools net-misc/dhcp diag? ( net-misc/diag ) net-misc/iperf:2 net-misc/iputils net-misc/openssh net-misc/rsync net-wireless/iw net-wireless/wireless-tools python_targets_python2_7? ( dev-lang/python:2.7 ) dev-lang/python:3.6 dev-libs/libgpiod dev-python/protobuf-python dev-python/cherrypy dev-python/dbus-python dev-python/hid-tools python_targets_python2_7? ( dev-util/hdctools ) dev-util/mem dev-util/strace media-libs/libyuv-test media-libs/openh264 vulkan? ( media-libs/vulkan-layers ) media-tv/v4l-utils media-video/yavta net-dialup/lrzsz net-fs/sshfs net-misc/curl net-misc/wget sys-apps/coreboot-utils sys-apps/coreutils sys-apps/diffutils sys-apps/file sys-apps/findutils sys-apps/flashrom-tester sys-apps/gawk sys-apps/i2c-tools sys-apps/iotools sys-apps/kbd sys-apps/less sys-apps/mmc-utils nvme? ( sys-apps/nvme-cli ) sys-apps/portage sys-apps/smartmontools usb? ( sys-apps/usbutils ) sys-apps/which sys-block/fio sys-devel/gdb sys-fs/fuse sys-fs/lvm2 sys-fs/mtd-utils power_management? ( sys-power/powertop ) sys-process/procps sys-process/psmisc sys-process/time virtual/autotest-capability virtual/chromeos-bsp-dev
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=5381984c15e14b02a2d69e391db031cb
diff --git a/metadata/md5-cache/virtual/target-chromium-os-dev-9999 b/metadata/md5-cache/virtual/target-chromium-os-dev-9999
index b396e22..5eb00da 100644
--- a/metadata/md5-cache/virtual/target-chromium-os-dev-9999
+++ b/metadata/md5-cache/virtual/target-chromium-os-dev-9999
@@ -3,11 +3,11 @@
 DESCRIPTION=List of packages that are needed inside the Chromium OS dev image
 EAPI=7
 HOMEPAGE=https://dev.chromium.org/
-IUSE=chromeless_tty cras nvme opengl pam +power_management +profile python_targets_python2_7 +shill tpm tpm2 usb vaapi video_cards_amdgpu video_cards_intel cros_host cros_workon_tree_
+IUSE=chromeless_tty cras diag nvme opengl pam +power_management +profile python_targets_python2_7 +shill tpm tpm2 usb vaapi video_cards_amdgpu video_cards_intel vulkan cros_host cros_workon_tree_
 KEYWORDS=~*
-LICENSE=BSD-Google
+LICENSE=metapackage
 PROPERTIES=live
-RDEPEND=x86? ( app-benchmarks/i7z power_management? ( dev-util/turbostat ) sys-apps/dmidecode sys-apps/pciutils sys-boot/syslinux vaapi? ( chromeos-base/libva-fake-driver media-gfx/vadumpcaps media-video/libva-utils ) video_cards_amdgpu? ( x11-apps/igt-gpu-tools ) video_cards_intel? ( x11-apps/igt-gpu-tools ) ) amd64? ( app-benchmarks/i7z power_management? ( dev-util/turbostat ) sys-apps/dmidecode sys-apps/pciutils sys-boot/syslinux vaapi? ( chromeos-base/libva-fake-driver media-gfx/vadumpcaps media-video/libva-utils ) video_cards_amdgpu? ( x11-apps/igt-gpu-tools ) video_cards_intel? ( x11-apps/igt-gpu-tools ) ) pam? ( app-admin/sudo ) app-admin/sysstat app-arch/bzip2 app-arch/gzip app-arch/tar app-arch/unzip app-arch/xz-utils app-arch/zip profile? ( chromeos-base/quipper app-benchmarks/libc-bench net-analyzer/netperf dev-util/perf ) app-benchmarks/stress-ng app-crypt/nss tpm? ( app-crypt/tpm-tools ) app-editors/nano app-editors/qemacs app-editors/vim app-misc/edid-decode app-misc/evtest app-misc/pax-utils app-misc/screen app-portage/portage-utils app-shells/bash app-text/tree cras? ( chromeos-base/audiotest media-sound/sox ) chromeos-base/avtest_label_detect chromeos-base/chromeos-dev-root chromeos-base/cros-config-test chromeos-base/cryptohome-dev-utils tpm2? ( chromeos-base/g2f_tools ) !chromeless_tty? ( chromeos-base/graphics-utils-go ) chromeos-base/update-utils chromeos-base/policy_utils chromeos-base/protofiles !chromeless_tty? ( chromeos-base/screen-capture-utils ) shill? ( chromeos-base/shill-test-scripts ) python_targets_python2_7? ( chromeos-base/touch_firmware_test ) chromeos-base/usi-test dev-vcs/git net-analyzer/tcpdump net-analyzer/traceroute net-dialup/minicom net-dns/bind-tools net-misc/dhcp net-misc/iperf:2 net-misc/iputils net-misc/openssh net-misc/rsync net-wireless/iw net-wireless/wireless-tools python_targets_python2_7? ( dev-lang/python:2.7 ) dev-lang/python:3.6 dev-libs/libgpiod dev-python/protobuf-python dev-python/cherrypy dev-python/dbus-python dev-python/hid-tools python_targets_python2_7? ( dev-util/hdctools ) dev-util/mem dev-util/strace media-libs/openh264 media-tv/v4l-utils media-video/yavta net-dialup/lrzsz net-fs/sshfs net-misc/curl net-misc/wget sys-apps/coreboot-utils sys-apps/coreutils sys-apps/diffutils sys-apps/file sys-apps/findutils sys-apps/flashrom-tester sys-apps/gawk sys-apps/i2c-tools sys-apps/iotools sys-apps/kbd sys-apps/less sys-apps/mmc-utils nvme? ( sys-apps/nvme-cli ) sys-apps/portage sys-apps/smartmontools usb? ( sys-apps/usbutils ) sys-apps/which sys-block/fio sys-devel/gdb sys-fs/fuse sys-fs/lvm2 sys-fs/mtd-utils power_management? ( sys-power/powertop ) sys-process/procps sys-process/psmisc sys-process/time virtual/autotest-capability virtual/chromeos-bsp-dev
+RDEPEND=x86? ( app-benchmarks/i7z power_management? ( dev-util/turbostat ) sys-apps/dmidecode sys-apps/pciutils sys-boot/syslinux vaapi? ( chromeos-base/libva-fake-driver media-gfx/vadumpcaps media-video/libva-utils ) video_cards_amdgpu? ( x11-apps/igt-gpu-tools ) video_cards_intel? ( x11-apps/igt-gpu-tools ) ) amd64? ( app-benchmarks/i7z power_management? ( dev-util/turbostat ) sys-apps/dmidecode sys-apps/pciutils sys-boot/syslinux vaapi? ( chromeos-base/libva-fake-driver media-gfx/vadumpcaps media-video/libva-utils ) video_cards_amdgpu? ( x11-apps/igt-gpu-tools ) video_cards_intel? ( x11-apps/igt-gpu-tools ) ) pam? ( app-admin/sudo ) app-admin/sysstat app-arch/bzip2 app-arch/gzip app-arch/tar app-arch/unzip app-arch/xz-utils app-arch/zip profile? ( chromeos-base/quipper app-benchmarks/libc-bench net-analyzer/netperf dev-util/perf ) app-benchmarks/stress-ng app-crypt/nss tpm? ( app-crypt/tpm-tools ) app-editors/nano app-editors/qemacs app-editors/vim app-misc/edid-decode app-misc/evtest app-misc/pax-utils app-misc/screen app-portage/portage-utils app-shells/bash app-text/tree cras? ( chromeos-base/audiotest media-sound/sox ) chromeos-base/avtest_label_detect chromeos-base/chromeos-dev-root chromeos-base/cros-config-test chromeos-base/cryptohome-dev-utils tpm2? ( chromeos-base/g2f_tools ) !chromeless_tty? ( chromeos-base/graphics-utils-go ) chromeos-base/policy_utils chromeos-base/protofiles !chromeless_tty? ( chromeos-base/screen-capture-utils ) shill? ( chromeos-base/shill-test-scripts ) python_targets_python2_7? ( chromeos-base/touch_firmware_test ) chromeos-base/usi-test dev-vcs/git net-analyzer/tcpdump net-analyzer/traceroute net-dialup/minicom net-dns/bind-tools net-misc/dhcp diag? ( net-misc/diag ) net-misc/iperf:2 net-misc/iputils net-misc/openssh net-misc/rsync net-wireless/iw net-wireless/wireless-tools python_targets_python2_7? ( dev-lang/python:2.7 ) dev-lang/python:3.6 dev-libs/libgpiod dev-python/protobuf-python dev-python/cherrypy dev-python/dbus-python dev-python/hid-tools python_targets_python2_7? ( dev-util/hdctools ) dev-util/mem dev-util/strace media-libs/libyuv-test media-libs/openh264 vulkan? ( media-libs/vulkan-layers ) media-tv/v4l-utils media-video/yavta net-dialup/lrzsz net-fs/sshfs net-misc/curl net-misc/wget sys-apps/coreboot-utils sys-apps/coreutils sys-apps/diffutils sys-apps/file sys-apps/findutils sys-apps/flashrom-tester sys-apps/gawk sys-apps/i2c-tools sys-apps/iotools sys-apps/kbd sys-apps/less sys-apps/mmc-utils nvme? ( sys-apps/nvme-cli ) sys-apps/portage sys-apps/smartmontools usb? ( sys-apps/usbutils ) sys-apps/which sys-block/fio sys-devel/gdb sys-fs/fuse sys-fs/lvm2 sys-fs/mtd-utils power_management? ( sys-power/powertop ) sys-process/procps sys-process/psmisc sys-process/time virtual/autotest-capability virtual/chromeos-bsp-dev
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=8d34ec4e8c686244fba3d5e28637b0ab
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=024caa964f3b16ed1ec007d662e7940d
diff --git a/metadata/md5-cache/virtual/target-chromium-os-factory-1 b/metadata/md5-cache/virtual/target-chromium-os-factory-1
index ee2400b..13d2397 100644
--- a/metadata/md5-cache/virtual/target-chromium-os-factory-1
+++ b/metadata/md5-cache/virtual/target-chromium-os-factory-1
@@ -1,10 +1,10 @@
 DEFINED_PHASES=-
 DEPEND=!chromeos-base/chromeos-factory
 DESCRIPTION=List of packages that are needed inside the Chromium OS factory image.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=chromeos-base/factory !chromeos-base/chromeos-factory
 SLOT=0
-_md5_=a9971b13836e7bf03c0a430c2575ef9d
+_md5_=d5d4843d8ed5f1a2dfc7fdc084182a69
diff --git a/metadata/md5-cache/virtual/target-chromium-os-factory-1-r5 b/metadata/md5-cache/virtual/target-chromium-os-factory-1-r5
deleted file mode 100644
index ee2400b..0000000
--- a/metadata/md5-cache/virtual/target-chromium-os-factory-1-r5
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=!chromeos-base/chromeos-factory
-DESCRIPTION=List of packages that are needed inside the Chromium OS factory image.
-EAPI=4
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=chromeos-base/factory !chromeos-base/chromeos-factory
-SLOT=0
-_md5_=a9971b13836e7bf03c0a430c2575ef9d
diff --git a/metadata/md5-cache/virtual/target-chromium-os-factory-1-r7 b/metadata/md5-cache/virtual/target-chromium-os-factory-1-r7
new file mode 100644
index 0000000..13d2397
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-chromium-os-factory-1-r7
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=!chromeos-base/chromeos-factory
+DESCRIPTION=List of packages that are needed inside the Chromium OS factory image.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/factory !chromeos-base/chromeos-factory
+SLOT=0
+_md5_=d5d4843d8ed5f1a2dfc7fdc084182a69
diff --git a/metadata/md5-cache/virtual/target-chromium-os-factory-shim-1 b/metadata/md5-cache/virtual/target-chromium-os-factory-shim-1
index 6b70382..dcc864b 100644
--- a/metadata/md5-cache/virtual/target-chromium-os-factory-shim-1
+++ b/metadata/md5-cache/virtual/target-chromium-os-factory-shim-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=List of packages that are needed inside the Chromium OS factory shim image.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=chromeos-base/chromeos-installshim
 SLOT=0
-_md5_=8dfca686d01fe1baf30944a9d146b566
+_md5_=316565cc8dc0448ecd3c9beeb28154d4
diff --git a/metadata/md5-cache/virtual/target-chromium-os-factory-shim-1-r1 b/metadata/md5-cache/virtual/target-chromium-os-factory-shim-1-r1
deleted file mode 100644
index 6b70382..0000000
--- a/metadata/md5-cache/virtual/target-chromium-os-factory-shim-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=List of packages that are needed inside the Chromium OS factory shim image.
-EAPI=4
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=chromeos-base/chromeos-installshim
-SLOT=0
-_md5_=8dfca686d01fe1baf30944a9d146b566
diff --git a/metadata/md5-cache/virtual/target-chromium-os-factory-shim-1-r3 b/metadata/md5-cache/virtual/target-chromium-os-factory-shim-1-r3
new file mode 100644
index 0000000..dcc864b
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-chromium-os-factory-shim-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of packages that are needed inside the Chromium OS factory shim image.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-installshim
+SLOT=0
+_md5_=316565cc8dc0448ecd3c9beeb28154d4
diff --git a/metadata/md5-cache/virtual/target-chromium-os-initramfs-1-r1 b/metadata/md5-cache/virtual/target-chromium-os-initramfs-1-r1
new file mode 100644
index 0000000..48e457a
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-chromium-os-initramfs-1-r1
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DESCRIPTION=List of packages that are needed inside the Chromium OS initramfs
+EAPI=7
+HOMEPAGE=https://dev.chromium.org/
+IUSE=minios minios_ramfs cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=metapackage
+PROPERTIES=live
+RDEPEND=minios? ( chromeos-base/minios ) chromeos-base/chromeos-initramfs
+REQUIRED_USE=minios? ( minios_ramfs ) minios_ramfs? ( minios )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=860d4669952ae0fb5e6c29e7a8d877fe
diff --git a/metadata/md5-cache/virtual/target-chromium-os-initramfs-9999 b/metadata/md5-cache/virtual/target-chromium-os-initramfs-9999
new file mode 100644
index 0000000..0d68601
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-chromium-os-initramfs-9999
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DESCRIPTION=List of packages that are needed inside the Chromium OS initramfs
+EAPI=7
+HOMEPAGE=https://dev.chromium.org/
+IUSE=minios minios_ramfs cros_host cros_workon_tree_
+KEYWORDS=~*
+LICENSE=metapackage
+PROPERTIES=live
+RDEPEND=minios? ( chromeos-base/minios ) chromeos-base/chromeos-initramfs
+REQUIRED_USE=minios? ( minios_ramfs ) minios_ramfs? ( minios )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4d7bbb738956450ce927182b9fe295a6
diff --git a/metadata/md5-cache/virtual/target-chromium-os-sdk-1-r196 b/metadata/md5-cache/virtual/target-chromium-os-sdk-1-r196
deleted file mode 100644
index aa16e12..0000000
--- a/metadata/md5-cache/virtual/target-chromium-os-sdk-1-r196
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DESCRIPTION=List of packages that are needed inside the Chromium OS SDK
-EAPI=7
-HOMEPAGE=https://dev.chromium.org/
-IUSE=cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=!chromeos-base/hard-host-depends !virtual/hard-host-depends-bsp app-arch/bzip2 app-arch/cpio app-arch/gcab app-arch/gzip app-arch/p7zip app-arch/tar app-shells/bash net-misc/iputils net-misc/rsync sys-apps/baselayout sys-apps/coreutils sys-apps/diffutils sys-apps/dtc sys-apps/file sys-apps/findutils sys-apps/gawk sys-apps/grep sys-apps/sed sys-apps/shadow sys-apps/texinfo sys-apps/util-linux sys-apps/which sys-devel/autoconf sys-devel/automake:1.10 sys-devel/automake:1.11 sys-devel/automake:1.15 sys-devel/binutils sys-devel/bison sys-devel/flex sys-devel/gcc sys-devel/gnuconfig sys-devel/grit-i18n sys-devel/libtool sys-devel/m4 sys-devel/make sys-devel/patch sys-fs/e2fsprogs sys-fs/f2fs-tools sys-libs/ncurses sys-libs/readline sys-libs/zlib sys-process/procps sys-process/psmisc virtual/editor virtual/libc virtual/man virtual/os-headers virtual/package-manager virtual/pager app-arch/lbzip2 app-arch/lz4 app-arch/lzop app-arch/pigz app-arch/pixz app-admin/sudo app-crypt/efitools app-crypt/sbsigntools chromeos-base/zephyr-build-tools dev-embedded/binman dev-embedded/cbootimage dev-embedded/tegrarcm dev-embedded/u-boot-tools dev-util/ccache media-gfx/pngcrush >=sys-apps/dtc-1.3.0-r5 sys-boot/bootstub sys-boot/grub sys-boot/syslinux sys-devel/crossdev sys-fs/dosfstools sys-fs/squashfs-tools sys-fs/mtd-utils app-misc/jq sys-devel/aapt sys-devel/arc-toolchain-master sys-devel/arc-toolchain-p sys-devel/arc-toolchain-r sys-devel/dex2oatds app-crypt/gnupg app-admin/eselect-opengl app-admin/eselect-mesa app-arch/cabextract app-arch/makeself >=app-arch/pbzip2-1.1.1-r1 app-arch/rpm2targz app-arch/sharutils app-arch/unzip app-crypt/nss app-doc/xmltoman app-emulation/qemu app-emulation/qemu-binfmt-wrapper !app-emulation/qemu-kvm !app-emulation/qemu-user app-text/asciidoc app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.5 app-text/docbook-xsl-stylesheets app-text/texi2html app-text/xmlto chromeos-base/google-breakpad chromeos-base/chromeos-base chromeos-base/chromeos-common-script >=chromeos-base/chromeos-config-host-0.0.2-r491 chromeos-base/chromite-sdk chromeos-base/cros-devutils[cros_host] chromeos-base/cros-testutils chromeos-base/ec-devutils chromeos-base/minijail dev-db/m17n-contrib dev-db/m17n-db dev-go/protobuf dev-lang/closure-compiler-bin dev-lang/nasm dev-lang/python:2.7 dev-lang/python:3.6 dev-lang/swig dev-lang/tcl dev-lang/yasm dev-libs/dbus-glib dev-libs/flatbuffers >=dev-libs/glib-2.26.1 net-libs/grpc dev-libs/libgcrypt dev-libs/libxslt dev-libs/libyaml dev-libs/m17n-lib dev-libs/protobuf dev-libs/protobuf-c dev-libs/wayland dev-python/cffi dev-python/cherrypy dev-python/ctypesgen dev-python/dbus-python dev-python/dpkt dev-python/ecdsa dev-python/future dev-python/imaging dev-python/intelhex dev-python/kconfiglib dev-python/m2crypto dev-python/mako dev-python/netifaces dev-python/pexpect dev-python/pillow dev-python/psutil dev-python/py dev-python/pycairo dev-python/pycparser dev-python/pygobject dev-python/pyopenssl dev-python/pytest dev-python/python-evdev dev-python/pyudev dev-python/pyusb dev-python/setproctitle !dev-python/socksipy dev-python/tempita dev-python/ws4py dev-util/bazel dev-util/cmake dev-util/dwarves dev-util/gob dev-util/gdbus-codegen dev-util/gperf dev-util/gtk-doc dev-util/hdctools >=dev-util/gtk-doc-am-1.13 >=dev-util/intltool-0.30 dev-util/scons dev-util/vulkan-headers >=dev-vcs/git-1.7.2 >=media-libs/freetype-2.2.1 >=media-libs/lcms-2.6:2 net-fs/sshfs net-libs/rpcsvc-proto net-misc/gsutil sys-apps/usbutils !sys-apps/nih-dbus-tool sys-devel/autofdo sys-devel/bc >=sys-libs/glibc-2.27 sys-libs/libcxxabi sys-libs/libcxx sys-libs/llvm-libunwind virtual/udev sys-libs/libnih sys-power/iasl virtual/modutils x11-apps/mkfontscale x11-apps/xcursorgen x11-apps/xkbcomp >=x11-misc/util-macros-1.2 chromeos-base/chromeos-fonts gnome-base/librsvg dev-libs/atk dev-libs/glib media-libs/fontconfig media-libs/freetype x11-libs/cairo x11-libs/libX11 x11-libs/libXi x11-libs/libXrandr x11-libs/libXtst x11-libs/pango sys-apps/dbus sys-process/lsof app-arch/zip app-editors/nano app-editors/qemacs app-editors/vim app-portage/eclass-manpages app-portage/gentoolkit app-portage/portage-utils app-shells/bash-completion dev-go/go-tools dev-go/golint dev-lang/go dev-python/ipython dev-util/codespell dev-util/patchutils dev-util/perf dev-util/shfmt net-analyzer/netperf sys-apps/less sys-apps/man-pages sys-apps/pv sys-devel/smatch dev-python/google-cloud-logging dev-python/mysqlclient dev-python/sqlalchemy dev-python/pyparsing dev-python/virtualenv x11-misc/xkeyboard-config dev-util/google-web-toolkit dev-python/btsocket dev-python/selenium sys-apps/iproute2 sys-apps/net-tools media-video/ffmpeg >=chromeos-base/vboot_reference-1.0-r174 chromeos-base/verity !dev-python/ahocorasick dev-python/pyahocorasick sys-fs/libfat chromeos-base/update_engine sys-fs/e2tools dev-cpp/gflags dev-go/mock dev-python/mock dev-python/mox dev-python/unittest2 dev-python/httplib2 dev-python/pyshark dev-python/python-dateutil dev-python/six dev-python/pylint net-misc/openssh net-misc/socat net-misc/wget dev-python/pyyaml dev-util/lcov chromeos-base/chromeos-dbus-bindings dev-util/meson dev-util/ninja brillo-base/libsparse dev-python/ply dev-util/gn dev-util/tclint !net-misc/dhcpcd dev-libs/closure-library dev-libs/closure_linter dev-python/autopep8 dev-python/django dev-python/enum34 dev-python/jsonrpclib dev-python/jsonschema dev-python/python-gnupg dev-python/requests dev-python/sphinx dev-python/twisted !dev-python/twisted-core !dev-python/twisted-web www-servers/nginx chromeos-base/tast-cmd chromeos-base/tast-remote-tests-cros dev-util/ragel sys-apps/coreboot-utils chromeos-base/ec-utils dev-libs/libprotobuf-mutator dev-libs/openssl dev-util/unifdef sys-firmware/fw-engprod-tools media-sound/alsa-utils dev-util/boost-build chromeos-base/sepolicy-analyze sys-apps/checkpolicy sys-apps/restorecon sys-apps/secilc sys-apps/selinux-python chromeos-base/android-relocation-packer chromeos-base/update_payload net-libs/nodejs dev-python/clang-python dev-python/grpcio-tools net-libs/grpc-web dev-python/grpcio dev-util/strace app-misc/fdupes sys-power/cpupower sys-apps/baselayout-java chromeos-base/android-sdk sys-devel/zipalign dev-python/jinja sys-devel/gcc-bin
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=a78594ec61050ea0b214f69c064284b9
diff --git a/metadata/md5-cache/virtual/target-chromium-os-sdk-1-r205 b/metadata/md5-cache/virtual/target-chromium-os-sdk-1-r205
new file mode 100644
index 0000000..eb37e7c
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-chromium-os-sdk-1-r205
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DESCRIPTION=List of packages that are needed inside the Chromium OS SDK
+EAPI=7
+HOMEPAGE=https://dev.chromium.org/
+IUSE=cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=metapackage
+PROPERTIES=live
+RDEPEND=!chromeos-base/hard-host-depends !virtual/hard-host-depends-bsp app-arch/bzip2 app-arch/cpio app-arch/gcab app-arch/gzip app-arch/p7zip app-arch/tar app-shells/bash net-misc/iputils net-misc/rsync sys-apps/baselayout sys-apps/coreutils sys-apps/diffutils sys-apps/dtc sys-apps/file sys-apps/findutils sys-apps/gawk sys-apps/grep sys-apps/sed sys-apps/shadow sys-apps/texinfo sys-apps/util-linux sys-apps/which sys-devel/autoconf sys-devel/autoconf-archive sys-devel/automake:1.10 sys-devel/automake:1.11 sys-devel/automake:1.15 sys-devel/binutils sys-devel/bison sys-devel/flex sys-devel/gcc sys-devel/gnuconfig sys-devel/grit-i18n sys-devel/libtool sys-devel/m4 sys-devel/make sys-devel/patch sys-fs/e2fsprogs sys-fs/f2fs-tools sys-libs/ncurses sys-libs/readline sys-libs/zlib sys-process/procps sys-process/psmisc virtual/editor virtual/libc virtual/man virtual/os-headers virtual/package-manager virtual/pager app-arch/lbzip2 app-arch/lz4 app-arch/lzop app-arch/pigz app-arch/pixz app-admin/sudo app-crypt/efitools app-crypt/sbsigntools chromeos-base/zephyr-build-tools dev-embedded/binman dev-embedded/cbootimage dev-embedded/tegrarcm dev-embedded/u-boot-tools dev-util/ccache media-gfx/pngcrush >=sys-apps/dtc-1.3.0-r5 sys-boot/bootstub sys-boot/grub sys-boot/syslinux sys-devel/crossdev sys-fs/dosfstools sys-fs/squashfs-tools sys-fs/mtd-utils app-misc/jq sys-devel/aapt sys-devel/arc-toolchain-master sys-devel/arc-toolchain-p sys-devel/arc-toolchain-r sys-devel/dex2oatds app-crypt/gnupg app-admin/eselect-opengl app-admin/eselect-mesa app-arch/cabextract app-arch/makeself >=app-arch/pbzip2-1.1.1-r1 app-arch/rpm2targz app-arch/sharutils app-arch/unzip app-crypt/nss app-doc/xmltoman app-emulation/qemu app-emulation/qemu-binfmt-wrapper !app-emulation/qemu-kvm !app-emulation/qemu-user app-text/asciidoc app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.5 app-text/docbook-xsl-stylesheets app-text/texi2html app-text/xmlto chromeos-base/google-breakpad chromeos-base/chromeos-base chromeos-base/chromeos-common-script >=chromeos-base/chromeos-config-host-0.0.2-r491 chromeos-base/chromite-sdk chromeos-base/cros-devutils[cros_host] chromeos-base/cros-testutils chromeos-base/ec-devutils chromeos-base/minijail chromeos-base/test-server dev-db/m17n-contrib dev-db/m17n-db dev-go/protobuf dev-lang/closure-compiler-bin dev-lang/nasm dev-lang/python:2.7 dev-lang/python:3.6 dev-lang/swig dev-lang/tcl dev-lang/yasm dev-libs/dbus-glib dev-libs/flatbuffers >=dev-libs/glib-2.26.1 net-libs/grpc dev-libs/libgcrypt dev-libs/libxslt dev-libs/libyaml dev-libs/m17n-lib dev-libs/protobuf dev-libs/protobuf-c dev-libs/wayland dev-python/cffi dev-python/cherrypy dev-python/dbus-python dev-python/dpkt dev-python/ecdsa dev-python/future dev-python/intelhex dev-python/kconfiglib dev-python/m2crypto dev-python/mako dev-python/netifaces dev-python/pexpect dev-python/pillow dev-python/psutil dev-python/py dev-python/pycairo dev-python/pycparser dev-python/pygobject dev-python/pyopenssl dev-python/pytest dev-python/python-evdev dev-python/pyudev dev-python/pyusb dev-python/setproctitle !dev-python/socksipy dev-python/tempita dev-python/ws4py dev-util/bazel dev-util/cmake dev-util/dwarves dev-util/gob dev-util/gdbus-codegen dev-util/gperf dev-util/gtk-doc dev-util/hdctools >=dev-util/gtk-doc-am-1.13 >=dev-util/intltool-0.30 dev-util/scons dev-util/vulkan-headers >=dev-vcs/git-1.7.2 >=media-libs/freetype-2.2.1 >=media-libs/lcms-2.6:2 net-fs/sshfs net-libs/rpcsvc-proto net-misc/gsutil sys-apps/usbutils !sys-apps/nih-dbus-tool sys-devel/autofdo sys-devel/bc >=sys-libs/glibc-2.27 sys-libs/libcxxabi sys-libs/libcxx sys-libs/llvm-libunwind virtual/udev sys-libs/libnih sys-power/iasl virtual/modutils x11-apps/mkfontscale x11-apps/xcursorgen x11-apps/xkbcomp >=x11-misc/util-macros-1.2 chromeos-base/chromeos-fonts gnome-base/librsvg dev-libs/atk dev-libs/glib media-libs/fontconfig media-libs/freetype x11-libs/cairo x11-libs/libX11 x11-libs/libXi x11-libs/libXrandr x11-libs/libXtst x11-libs/pango sys-apps/dbus sys-process/lsof app-arch/zip app-editors/nano app-editors/qemacs app-editors/vim app-portage/eclass-manpages app-portage/gentoolkit app-portage/portage-utils app-shells/bash-completion dev-go/go-tools dev-go/golint dev-lang/go dev-python/ipython dev-util/codespell dev-util/patchutils dev-util/perf dev-util/shfmt net-analyzer/netperf sys-apps/less sys-apps/man-pages sys-apps/pv sys-devel/smatch dev-python/google-cloud-logging dev-python/mysqlclient dev-python/pyparsing dev-python/virtualenv x11-misc/xkeyboard-config dev-util/google-web-toolkit dev-python/btsocket dev-python/selenium sys-apps/iproute2 sys-apps/net-tools media-video/ffmpeg >=chromeos-base/vboot_reference-1.0-r174 chromeos-base/verity !dev-python/ahocorasick dev-python/pyahocorasick sys-fs/libfat chromeos-base/update_engine sys-fs/e2tools dev-cpp/gflags dev-go/mock dev-python/mock dev-python/mox dev-python/unittest2 dev-python/httplib2 dev-python/pyshark dev-python/python-dateutil dev-python/six dev-python/pylint net-misc/openssh net-misc/socat net-misc/wget dev-python/pyyaml dev-util/lcov chromeos-base/chromeos-dbus-bindings dev-util/meson dev-util/ninja brillo-base/libsparse dev-python/ply dev-util/gn dev-util/tclint !net-misc/dhcpcd dev-libs/closure-library dev-libs/closure_linter dev-python/autopep8 dev-python/django dev-python/enum34 dev-python/jsonrpclib dev-python/jsonschema dev-python/python-gnupg dev-python/requests dev-python/sphinx dev-python/twisted !dev-python/twisted-core !dev-python/twisted-web www-servers/nginx chromeos-base/tast-cmd chromeos-base/tast-remote-tests-cros dev-util/ragel sys-apps/coreboot-utils chromeos-base/ec-utils dev-libs/libprotobuf-mutator dev-libs/openssl dev-util/unifdef sys-firmware/fw-engprod-tools media-sound/alsa-utils dev-util/boost-build chromeos-base/sepolicy-analyze sys-apps/checkpolicy sys-apps/restorecon sys-apps/secilc sys-apps/selinux-python chromeos-base/android-relocation-packer chromeos-base/update_payload net-libs/nodejs dev-python/clang-python dev-python/grpcio-tools net-libs/grpc-web dev-python/grpcio dev-util/strace app-misc/fdupes sys-power/cpupower sys-apps/baselayout-java chromeos-base/android-sdk sys-devel/zipalign dev-python/jinja sys-devel/gcc-bin dev-libs/wayland-protocols
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=a9f1c67801b36fcaabe1b173c11c7ff9
diff --git a/metadata/md5-cache/virtual/target-chromium-os-sdk-9999 b/metadata/md5-cache/virtual/target-chromium-os-sdk-9999
index c9a3dec..126b41d 100644
--- a/metadata/md5-cache/virtual/target-chromium-os-sdk-9999
+++ b/metadata/md5-cache/virtual/target-chromium-os-sdk-9999
@@ -5,9 +5,9 @@
 HOMEPAGE=https://dev.chromium.org/
 IUSE=cros_host cros_workon_tree_
 KEYWORDS=~*
-LICENSE=BSD-Google
+LICENSE=metapackage
 PROPERTIES=live
-RDEPEND=!chromeos-base/hard-host-depends !virtual/hard-host-depends-bsp app-arch/bzip2 app-arch/cpio app-arch/gcab app-arch/gzip app-arch/p7zip app-arch/tar app-shells/bash net-misc/iputils net-misc/rsync sys-apps/baselayout sys-apps/coreutils sys-apps/diffutils sys-apps/dtc sys-apps/file sys-apps/findutils sys-apps/gawk sys-apps/grep sys-apps/sed sys-apps/shadow sys-apps/texinfo sys-apps/util-linux sys-apps/which sys-devel/autoconf sys-devel/automake:1.10 sys-devel/automake:1.11 sys-devel/automake:1.15 sys-devel/binutils sys-devel/bison sys-devel/flex sys-devel/gcc sys-devel/gnuconfig sys-devel/grit-i18n sys-devel/libtool sys-devel/m4 sys-devel/make sys-devel/patch sys-fs/e2fsprogs sys-fs/f2fs-tools sys-libs/ncurses sys-libs/readline sys-libs/zlib sys-process/procps sys-process/psmisc virtual/editor virtual/libc virtual/man virtual/os-headers virtual/package-manager virtual/pager app-arch/lbzip2 app-arch/lz4 app-arch/lzop app-arch/pigz app-arch/pixz app-admin/sudo app-crypt/efitools app-crypt/sbsigntools chromeos-base/zephyr-build-tools dev-embedded/binman dev-embedded/cbootimage dev-embedded/tegrarcm dev-embedded/u-boot-tools dev-util/ccache media-gfx/pngcrush >=sys-apps/dtc-1.3.0-r5 sys-boot/bootstub sys-boot/grub sys-boot/syslinux sys-devel/crossdev sys-fs/dosfstools sys-fs/squashfs-tools sys-fs/mtd-utils app-misc/jq sys-devel/aapt sys-devel/arc-toolchain-master sys-devel/arc-toolchain-p sys-devel/arc-toolchain-r sys-devel/dex2oatds app-crypt/gnupg app-admin/eselect-opengl app-admin/eselect-mesa app-arch/cabextract app-arch/makeself >=app-arch/pbzip2-1.1.1-r1 app-arch/rpm2targz app-arch/sharutils app-arch/unzip app-crypt/nss app-doc/xmltoman app-emulation/qemu app-emulation/qemu-binfmt-wrapper !app-emulation/qemu-kvm !app-emulation/qemu-user app-text/asciidoc app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.5 app-text/docbook-xsl-stylesheets app-text/texi2html app-text/xmlto chromeos-base/google-breakpad chromeos-base/chromeos-base chromeos-base/chromeos-common-script >=chromeos-base/chromeos-config-host-0.0.2-r491 chromeos-base/chromite-sdk chromeos-base/cros-devutils[cros_host] chromeos-base/cros-testutils chromeos-base/ec-devutils chromeos-base/minijail dev-db/m17n-contrib dev-db/m17n-db dev-go/protobuf dev-lang/closure-compiler-bin dev-lang/nasm dev-lang/python:2.7 dev-lang/python:3.6 dev-lang/swig dev-lang/tcl dev-lang/yasm dev-libs/dbus-glib dev-libs/flatbuffers >=dev-libs/glib-2.26.1 net-libs/grpc dev-libs/libgcrypt dev-libs/libxslt dev-libs/libyaml dev-libs/m17n-lib dev-libs/protobuf dev-libs/protobuf-c dev-libs/wayland dev-python/cffi dev-python/cherrypy dev-python/ctypesgen dev-python/dbus-python dev-python/dpkt dev-python/ecdsa dev-python/future dev-python/imaging dev-python/intelhex dev-python/kconfiglib dev-python/m2crypto dev-python/mako dev-python/netifaces dev-python/pexpect dev-python/pillow dev-python/psutil dev-python/py dev-python/pycairo dev-python/pycparser dev-python/pygobject dev-python/pyopenssl dev-python/pytest dev-python/python-evdev dev-python/pyudev dev-python/pyusb dev-python/setproctitle !dev-python/socksipy dev-python/tempita dev-python/ws4py dev-util/bazel dev-util/cmake dev-util/dwarves dev-util/gob dev-util/gdbus-codegen dev-util/gperf dev-util/gtk-doc dev-util/hdctools >=dev-util/gtk-doc-am-1.13 >=dev-util/intltool-0.30 dev-util/scons dev-util/vulkan-headers >=dev-vcs/git-1.7.2 >=media-libs/freetype-2.2.1 >=media-libs/lcms-2.6:2 net-fs/sshfs net-libs/rpcsvc-proto net-misc/gsutil sys-apps/usbutils !sys-apps/nih-dbus-tool sys-devel/autofdo sys-devel/bc >=sys-libs/glibc-2.27 sys-libs/libcxxabi sys-libs/libcxx sys-libs/llvm-libunwind virtual/udev sys-libs/libnih sys-power/iasl virtual/modutils x11-apps/mkfontscale x11-apps/xcursorgen x11-apps/xkbcomp >=x11-misc/util-macros-1.2 chromeos-base/chromeos-fonts gnome-base/librsvg dev-libs/atk dev-libs/glib media-libs/fontconfig media-libs/freetype x11-libs/cairo x11-libs/libX11 x11-libs/libXi x11-libs/libXrandr x11-libs/libXtst x11-libs/pango sys-apps/dbus sys-process/lsof app-arch/zip app-editors/nano app-editors/qemacs app-editors/vim app-portage/eclass-manpages app-portage/gentoolkit app-portage/portage-utils app-shells/bash-completion dev-go/go-tools dev-go/golint dev-lang/go dev-python/ipython dev-util/codespell dev-util/patchutils dev-util/perf dev-util/shfmt net-analyzer/netperf sys-apps/less sys-apps/man-pages sys-apps/pv sys-devel/smatch dev-python/google-cloud-logging dev-python/mysqlclient dev-python/sqlalchemy dev-python/pyparsing dev-python/virtualenv x11-misc/xkeyboard-config dev-util/google-web-toolkit dev-python/btsocket dev-python/selenium sys-apps/iproute2 sys-apps/net-tools media-video/ffmpeg >=chromeos-base/vboot_reference-1.0-r174 chromeos-base/verity !dev-python/ahocorasick dev-python/pyahocorasick sys-fs/libfat chromeos-base/update_engine sys-fs/e2tools dev-cpp/gflags dev-go/mock dev-python/mock dev-python/mox dev-python/unittest2 dev-python/httplib2 dev-python/pyshark dev-python/python-dateutil dev-python/six dev-python/pylint net-misc/openssh net-misc/socat net-misc/wget dev-python/pyyaml dev-util/lcov chromeos-base/chromeos-dbus-bindings dev-util/meson dev-util/ninja brillo-base/libsparse dev-python/ply dev-util/gn dev-util/tclint !net-misc/dhcpcd dev-libs/closure-library dev-libs/closure_linter dev-python/autopep8 dev-python/django dev-python/enum34 dev-python/jsonrpclib dev-python/jsonschema dev-python/python-gnupg dev-python/requests dev-python/sphinx dev-python/twisted !dev-python/twisted-core !dev-python/twisted-web www-servers/nginx chromeos-base/tast-cmd chromeos-base/tast-remote-tests-cros dev-util/ragel sys-apps/coreboot-utils chromeos-base/ec-utils dev-libs/libprotobuf-mutator dev-libs/openssl dev-util/unifdef sys-firmware/fw-engprod-tools media-sound/alsa-utils dev-util/boost-build chromeos-base/sepolicy-analyze sys-apps/checkpolicy sys-apps/restorecon sys-apps/secilc sys-apps/selinux-python chromeos-base/android-relocation-packer chromeos-base/update_payload net-libs/nodejs dev-python/clang-python dev-python/grpcio-tools net-libs/grpc-web dev-python/grpcio dev-util/strace app-misc/fdupes sys-power/cpupower sys-apps/baselayout-java chromeos-base/android-sdk sys-devel/zipalign dev-python/jinja sys-devel/gcc-bin
+RDEPEND=!chromeos-base/hard-host-depends !virtual/hard-host-depends-bsp app-arch/bzip2 app-arch/cpio app-arch/gcab app-arch/gzip app-arch/p7zip app-arch/tar app-shells/bash net-misc/iputils net-misc/rsync sys-apps/baselayout sys-apps/coreutils sys-apps/diffutils sys-apps/dtc sys-apps/file sys-apps/findutils sys-apps/gawk sys-apps/grep sys-apps/sed sys-apps/shadow sys-apps/texinfo sys-apps/util-linux sys-apps/which sys-devel/autoconf sys-devel/autoconf-archive sys-devel/automake:1.10 sys-devel/automake:1.11 sys-devel/automake:1.15 sys-devel/binutils sys-devel/bison sys-devel/flex sys-devel/gcc sys-devel/gnuconfig sys-devel/grit-i18n sys-devel/libtool sys-devel/m4 sys-devel/make sys-devel/patch sys-fs/e2fsprogs sys-fs/f2fs-tools sys-libs/ncurses sys-libs/readline sys-libs/zlib sys-process/procps sys-process/psmisc virtual/editor virtual/libc virtual/man virtual/os-headers virtual/package-manager virtual/pager app-arch/lbzip2 app-arch/lz4 app-arch/lzop app-arch/pigz app-arch/pixz app-admin/sudo app-crypt/efitools app-crypt/sbsigntools chromeos-base/zephyr-build-tools dev-embedded/binman dev-embedded/cbootimage dev-embedded/tegrarcm dev-embedded/u-boot-tools dev-util/ccache media-gfx/pngcrush >=sys-apps/dtc-1.3.0-r5 sys-boot/bootstub sys-boot/grub sys-boot/syslinux sys-devel/crossdev sys-fs/dosfstools sys-fs/squashfs-tools sys-fs/mtd-utils app-misc/jq sys-devel/aapt sys-devel/arc-toolchain-master sys-devel/arc-toolchain-p sys-devel/arc-toolchain-r sys-devel/dex2oatds app-crypt/gnupg app-admin/eselect-opengl app-admin/eselect-mesa app-arch/cabextract app-arch/makeself >=app-arch/pbzip2-1.1.1-r1 app-arch/rpm2targz app-arch/sharutils app-arch/unzip app-crypt/nss app-doc/xmltoman app-emulation/qemu app-emulation/qemu-binfmt-wrapper !app-emulation/qemu-kvm !app-emulation/qemu-user app-text/asciidoc app-text/docbook-xml-dtd:4.2 app-text/docbook-xml-dtd:4.5 app-text/docbook-xsl-stylesheets app-text/texi2html app-text/xmlto chromeos-base/google-breakpad chromeos-base/chromeos-base chromeos-base/chromeos-common-script >=chromeos-base/chromeos-config-host-0.0.2-r491 chromeos-base/chromite-sdk chromeos-base/cros-devutils[cros_host] chromeos-base/cros-testutils chromeos-base/ec-devutils chromeos-base/minijail chromeos-base/test-server dev-db/m17n-contrib dev-db/m17n-db dev-go/protobuf dev-lang/closure-compiler-bin dev-lang/nasm dev-lang/python:2.7 dev-lang/python:3.6 dev-lang/swig dev-lang/tcl dev-lang/yasm dev-libs/dbus-glib dev-libs/flatbuffers >=dev-libs/glib-2.26.1 net-libs/grpc dev-libs/libgcrypt dev-libs/libxslt dev-libs/libyaml dev-libs/m17n-lib dev-libs/protobuf dev-libs/protobuf-c dev-libs/wayland dev-python/cffi dev-python/cherrypy dev-python/dbus-python dev-python/dpkt dev-python/ecdsa dev-python/future dev-python/intelhex dev-python/kconfiglib dev-python/m2crypto dev-python/mako dev-python/netifaces dev-python/pexpect dev-python/pillow dev-python/psutil dev-python/py dev-python/pycairo dev-python/pycparser dev-python/pygobject dev-python/pyopenssl dev-python/pytest dev-python/python-evdev dev-python/pyudev dev-python/pyusb dev-python/setproctitle !dev-python/socksipy dev-python/tempita dev-python/ws4py dev-util/bazel dev-util/cmake dev-util/dwarves dev-util/gob dev-util/gdbus-codegen dev-util/gperf dev-util/gtk-doc dev-util/hdctools >=dev-util/gtk-doc-am-1.13 >=dev-util/intltool-0.30 dev-util/scons dev-util/vulkan-headers >=dev-vcs/git-1.7.2 >=media-libs/freetype-2.2.1 >=media-libs/lcms-2.6:2 net-fs/sshfs net-libs/rpcsvc-proto net-misc/gsutil sys-apps/usbutils !sys-apps/nih-dbus-tool sys-devel/autofdo sys-devel/bc >=sys-libs/glibc-2.27 sys-libs/libcxxabi sys-libs/libcxx sys-libs/llvm-libunwind virtual/udev sys-libs/libnih sys-power/iasl virtual/modutils x11-apps/mkfontscale x11-apps/xcursorgen x11-apps/xkbcomp >=x11-misc/util-macros-1.2 chromeos-base/chromeos-fonts gnome-base/librsvg dev-libs/atk dev-libs/glib media-libs/fontconfig media-libs/freetype x11-libs/cairo x11-libs/libX11 x11-libs/libXi x11-libs/libXrandr x11-libs/libXtst x11-libs/pango sys-apps/dbus sys-process/lsof app-arch/zip app-editors/nano app-editors/qemacs app-editors/vim app-portage/eclass-manpages app-portage/gentoolkit app-portage/portage-utils app-shells/bash-completion dev-go/go-tools dev-go/golint dev-lang/go dev-python/ipython dev-util/codespell dev-util/patchutils dev-util/perf dev-util/shfmt net-analyzer/netperf sys-apps/less sys-apps/man-pages sys-apps/pv sys-devel/smatch dev-python/google-cloud-logging dev-python/mysqlclient dev-python/pyparsing dev-python/virtualenv x11-misc/xkeyboard-config dev-util/google-web-toolkit dev-python/btsocket dev-python/selenium sys-apps/iproute2 sys-apps/net-tools media-video/ffmpeg >=chromeos-base/vboot_reference-1.0-r174 chromeos-base/verity !dev-python/ahocorasick dev-python/pyahocorasick sys-fs/libfat chromeos-base/update_engine sys-fs/e2tools dev-cpp/gflags dev-go/mock dev-python/mock dev-python/mox dev-python/unittest2 dev-python/httplib2 dev-python/pyshark dev-python/python-dateutil dev-python/six dev-python/pylint net-misc/openssh net-misc/socat net-misc/wget dev-python/pyyaml dev-util/lcov chromeos-base/chromeos-dbus-bindings dev-util/meson dev-util/ninja brillo-base/libsparse dev-python/ply dev-util/gn dev-util/tclint !net-misc/dhcpcd dev-libs/closure-library dev-libs/closure_linter dev-python/autopep8 dev-python/django dev-python/enum34 dev-python/jsonrpclib dev-python/jsonschema dev-python/python-gnupg dev-python/requests dev-python/sphinx dev-python/twisted !dev-python/twisted-core !dev-python/twisted-web www-servers/nginx chromeos-base/tast-cmd chromeos-base/tast-remote-tests-cros dev-util/ragel sys-apps/coreboot-utils chromeos-base/ec-utils dev-libs/libprotobuf-mutator dev-libs/openssl dev-util/unifdef sys-firmware/fw-engprod-tools media-sound/alsa-utils dev-util/boost-build chromeos-base/sepolicy-analyze sys-apps/checkpolicy sys-apps/restorecon sys-apps/secilc sys-apps/selinux-python chromeos-base/android-relocation-packer chromeos-base/update_payload net-libs/nodejs dev-python/clang-python dev-python/grpcio-tools net-libs/grpc-web dev-python/grpcio dev-util/strace app-misc/fdupes sys-power/cpupower sys-apps/baselayout-java chromeos-base/android-sdk sys-devel/zipalign dev-python/jinja sys-devel/gcc-bin dev-libs/wayland-protocols
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=94c904ecfbc066f67c69f8d2585c0fd9
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=fc877da03b2ca177339d48125ffec06e
diff --git a/metadata/md5-cache/virtual/target-chromium-os-sdk-nobdeps-1 b/metadata/md5-cache/virtual/target-chromium-os-sdk-nobdeps-1
index ef59dac..baa9d45 100644
--- a/metadata/md5-cache/virtual/target-chromium-os-sdk-nobdeps-1
+++ b/metadata/md5-cache/virtual/target-chromium-os-sdk-nobdeps-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=List of packages that are needed inside the SDK, but where we only want to install a binpkg. We never want to install build-time deps or recompile from source unless the user explicitly requests it.
-EAPI=6
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=dev-util/shellcheck dev-python/pypy3 dev-python/pypy3-exe
 SLOT=0
-_md5_=e29225df8f41fd51e6e279fbc03eda8c
+_md5_=1d52de0eec4002dad2e0e1487c95d01e
diff --git a/metadata/md5-cache/virtual/target-chromium-os-sdk-nobdeps-1-r4 b/metadata/md5-cache/virtual/target-chromium-os-sdk-nobdeps-1-r4
deleted file mode 100644
index ef59dac..0000000
--- a/metadata/md5-cache/virtual/target-chromium-os-sdk-nobdeps-1-r4
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=List of packages that are needed inside the SDK, but where we only want to install a binpkg. We never want to install build-time deps or recompile from source unless the user explicitly requests it.
-EAPI=6
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=dev-util/shellcheck dev-python/pypy3 dev-python/pypy3-exe
-SLOT=0
-_md5_=e29225df8f41fd51e6e279fbc03eda8c
diff --git a/metadata/md5-cache/virtual/target-chromium-os-sdk-nobdeps-1-r6 b/metadata/md5-cache/virtual/target-chromium-os-sdk-nobdeps-1-r6
new file mode 100644
index 0000000..baa9d45
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-chromium-os-sdk-nobdeps-1-r6
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of packages that are needed inside the SDK, but where we only want to install a binpkg. We never want to install build-time deps or recompile from source unless the user explicitly requests it.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=dev-util/shellcheck dev-python/pypy3 dev-python/pypy3-exe
+SLOT=0
+_md5_=1d52de0eec4002dad2e0e1487c95d01e
diff --git a/metadata/md5-cache/virtual/target-chromium-os-sdk-post-cross-1-r1 b/metadata/md5-cache/virtual/target-chromium-os-sdk-post-cross-1-r1
deleted file mode 100644
index 5c49320..0000000
--- a/metadata/md5-cache/virtual/target-chromium-os-sdk-post-cross-1-r1
+++ /dev/null
@@ -1,13 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DESCRIPTION=List of packages that are needed inside the SDK, but after we've built all the toolchain packages that we install separately via binpkgs. This avoids circular dependencies when bootstrapping.
-EAPI=7
-HOMEPAGE=http://dev.chromium.org/
-IUSE=cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=dev-lang/rust dev-rust/bindgen dev-rust/dbus-codegen dev-rust/protobuf-codegen sys-apps/mosys sys-apps/ripgrep dev-embedded/coreboot-sdk
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=41fdbf3b7b47960f979b6fab0372d4a2
diff --git a/metadata/md5-cache/virtual/target-chromium-os-sdk-post-cross-1-r5 b/metadata/md5-cache/virtual/target-chromium-os-sdk-post-cross-1-r5
new file mode 100644
index 0000000..0eefcc6
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-chromium-os-sdk-post-cross-1-r5
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DESCRIPTION=List of packages that are needed inside the SDK, but after we've built all the toolchain packages that we install separately via binpkgs. This avoids circular dependencies when bootstrapping.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+IUSE=cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=metapackage
+PROPERTIES=live
+RDEPEND=dev-lang/rust dev-rust/bindgen dev-rust/dbus-codegen dev-rust/protobuf-codegen dev-util/cxxbridge-cmd sys-apps/mosys sys-apps/ripgrep dev-embedded/coreboot-sdk
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=7fbf2162af806aed28b6a342017bd018
diff --git a/metadata/md5-cache/virtual/target-chromium-os-sdk-post-cross-9999 b/metadata/md5-cache/virtual/target-chromium-os-sdk-post-cross-9999
index 4694a46..c43509f2 100644
--- a/metadata/md5-cache/virtual/target-chromium-os-sdk-post-cross-9999
+++ b/metadata/md5-cache/virtual/target-chromium-os-sdk-post-cross-9999
@@ -5,9 +5,9 @@
 HOMEPAGE=http://dev.chromium.org/
 IUSE=cros_host cros_workon_tree_
 KEYWORDS=~*
-LICENSE=BSD-Google
+LICENSE=metapackage
 PROPERTIES=live
-RDEPEND=dev-lang/rust dev-rust/bindgen dev-rust/dbus-codegen dev-rust/protobuf-codegen sys-apps/mosys sys-apps/ripgrep dev-embedded/coreboot-sdk
+RDEPEND=dev-lang/rust dev-rust/bindgen dev-rust/dbus-codegen dev-rust/protobuf-codegen dev-util/cxxbridge-cmd sys-apps/mosys sys-apps/ripgrep dev-embedded/coreboot-sdk
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=90ca435451c4db160d1ca9b96b219ac1
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=cd856561e989cafb19499c874c361c06
diff --git a/metadata/md5-cache/virtual/target-chromium-os-test-1-r138 b/metadata/md5-cache/virtual/target-chromium-os-test-1-r138
deleted file mode 100644
index f16b767..0000000
--- a/metadata/md5-cache/virtual/target-chromium-os-test-1-r138
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info setup unpack
-DEPEND=chromeos-base/chromite
-DESCRIPTION=List of packages that are needed inside the Chromium OS test image; Note: test images are a superset of dev images.
-EAPI=7
-HOMEPAGE=https://dev.chromium.org/
-IUSE=arc-camera3 biod -chromeless_tests cheets chromeless_tty cr50_onboard +cras cros_ec cros_embedded dlc kvm_host hammerd iioservice ml_service nnapi opengl opengles p2p +perfetto python_targets_python2_7 scanner +shill +tpm tpm2 unibuild vaapi vulkan wifi_hostap_test wifi_testbed_ap +wired_8021x cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=tpm? ( app-crypt/tpm-tools chromeos-base/hwsec-test-utils chromeos-base/tpm_softclear_utils ) tpm2? ( chromeos-base/hwsec-test-utils chromeos-base/tpm_softclear_utils ) chromeos-base/chromeos-test-root chromeos-base/ec-utils chromeos-base/ec-utils-test chromeos-base/factory-deps biod? ( virtual/chromeos-fpmcu-test chromeos-base/chromeos-fpmcu-unittests ) hammerd? ( chromeos-base/hammerd-test-utils ) iioservice? ( chromeos-base/iioservice_simpleclient ) scanner? ( chromeos-base/lorgnette_cli chromeos-base/sane-backends-test ) ml_service? ( chromeos-base/ml-cmdline ) nnapi? ( chromeos-base/ml-test-assets ) chromeos-base/recover-duts chromeos-base/tast-local-test-runner chromeos-base/tast-local-tests chromeos-base/tast-use-flags chromeos-base/verity chromeos-base/vpd cros_ec? ( chromeos-base/ec-devutils ) !chromeless_tty? ( !chromeless_tests? ( >=dev-cpp/gflags-2.0 ) ) wifi_testbed_ap? ( dev-python/btsocket ) python_targets_python2_7? ( dev-lang/python:2.7 ) dev-lang/python:3.6 dev-libs/opensc p2p? ( dev-python/dpkt ) perfetto? ( chromeos-base/perfetto ) cr50_onboard? ( dev-util/u2f-ref-code ) net-misc/rsync sys-apps/memtester virtual/autotest-capability virtual/chromeos-bsp-test sys-apps/hdparm sys-apps/mmc-utils !cros_embedded? ( x86? ( app-benchmarks/sysbench sys-apps/pciutils sys-power/iasl vaapi? ( media-gfx/vadumpcaps media-video/libva-utils ) x11-misc/read-edid ) amd64? ( app-benchmarks/sysbench sys-apps/pciutils sys-power/iasl vaapi? ( media-gfx/vadumpcaps media-video/libva-utils ) x11-misc/read-edid ) app-admin/sudo app-arch/gzip app-arch/tar app-benchmarks/blktests app-benchmarks/blogbench app-benchmarks/lmbench app-benchmarks/microbenchmarks app-benchmarks/pjdfstest app-benchmarks/xfstests app-misc/ckermit opengles? ( app-misc/eglinfo ) app-misc/tmux app-misc/utouch-evemu app-mobilephone/dfu-util chromeos-base/autotest-client cras? ( chromeos-base/audiotest ) chromeos-base/avtest_label_detect chromeos-base/chrome-binary-tests chromeos-base/cros-camera-tool chromeos-base/cros-config-test !chromeless_tty? ( !chromeless_tests? ( chromeos-base/drm-tests ) ) chromeos-base/factory-mini chromeos-base/glbench chromeos-base/graphics-utils-python chromeos-base/libvda-gpu-tests chromeos-base/modem-diagnostics chromeos-base/policy_utils chromeos-base/protofiles chromeos-base/pywalt !chromeless_tty? ( chromeos-base/screen-capture-utils ) chromeos-base/secure-wipe shill? ( chromeos-base/shill-test-scripts wired_8021x? ( net-wireless/hostapd ) ) !chromeless_tests? ( chromeos-base/telemetry ) chromeos-base/toolchain-tests vulkan? ( chromeos-base/vkbench ) dev-embedded/dfu-programmer dev-go/syzkaller dev-libs/re2 dev-python/protobuf-python dev-python/btsocket dev-python/contextlib2 dev-python/dbus-python dev-python/dpkt dev-python/httplib2 dev-python/imaging dev-python/jsonrpclib dev-python/mkvparse dev-python/netifaces dev-python/pygobject dev-python/pyserial dev-python/pytest dev-python/python-evdev dev-python/python-uinput dev-python/pyudev dev-python/pyxattr dev-python/pyyaml dev-python/selenium dev-python/setproctitle dev-python/setuptools dev-python/ws4py dev-util/stressapptest dev-util/trace-cmd dlc? ( sys-fs/squashfs-tools ) games-util/joystick media-gfx/imagemagick[jpeg,png,svg,tiff] media-gfx/perceptualdiff media-gfx/zbar arc-camera3? ( media-libs/cros-camera-libcamera_connector_test ) arc-camera3? ( media-libs/cros-camera-libjea_test ) arc-camera3? ( media-libs/cros-camera-test ) media-libs/cros-camera-v4l2_test media-libs/libexif media-libs/libvpx media-libs/opencv media-libs/openh264 !chromeless_tty? ( !chromeless_tests? ( media-gfx/deqp media-gfx/deqp-runner ) ) media-libs/tiff opengles? ( media-libs/waffle ) opengl? ( media-libs/waffle ) media-sound/sox net-analyzer/netperf net-dialup/minicom net-dns/dnsmasq net-misc/dhcp net-misc/iperf:2 net-misc/iputils net-misc/openssh net-misc/radvd net-proxy/tinyproxy wifi_hostap_test? ( net-wireless/hostap-test ) sci-geosciences/gpsd sys-apps/coreutils sys-apps/dtc sys-apps/ethtool sys-apps/file sys-apps/findutils sys-apps/kbd sys-apps/shadow sys-devel/binutils sys-process/iotop sys-process/procps sys-process/psmisc sys-process/time x11-libs/libdrm )
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=da5cd62a7f630835ca82faf28ee3b669
diff --git a/metadata/md5-cache/virtual/target-chromium-os-test-1-r151 b/metadata/md5-cache/virtual/target-chromium-os-test-1-r151
new file mode 100644
index 0000000..d8511e6
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-chromium-os-test-1-r151
@@ -0,0 +1,13 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info setup unpack
+DESCRIPTION=List of packages that are needed inside the Chromium OS test image; Note: test images are a superset of dev images.
+EAPI=7
+HOMEPAGE=https://dev.chromium.org/
+IUSE=arc-camera3 biod -chromeless_tests cheets chromeless_tty cr50_onboard +cras cros_ec cros_embedded dlc hammerd iioservice ml_service hps nnapi opengl opengles p2p +perfetto python_targets_python2_7 scanner +shill +tpm tpm2 unibuild vaapi vulkan wifi_hostap_test wifi_testbed_ap +wired_8021x cros_host cros_workon_tree_8ce164efd78fcb4a68e898d8c92c7579657a49b1
+KEYWORDS=*
+LICENSE=metapackage
+PROPERTIES=live
+RDEPEND=tpm? ( app-crypt/tpm-tools chromeos-base/hwsec-test-utils chromeos-base/tpm_softclear_utils ) tpm2? ( chromeos-base/hwsec-test-utils chromeos-base/tpm_softclear_utils ) chromeos-base/chromeos-test-root chromeos-base/ec-utils chromeos-base/ec-utils-test chromeos-base/factory-deps biod? ( virtual/chromeos-fpmcu-test chromeos-base/chromeos-fpmcu-unittests ) hammerd? ( chromeos-base/hammerd-test-utils ) iioservice? ( chromeos-base/iioservice_simpleclient ) scanner? ( chromeos-base/lorgnette_cli chromeos-base/sane-backends-test ) ml_service? ( chromeos-base/ml-cmdline ) hps? ( chromeos-base/hps-tool ) nnapi? ( chromeos-base/aosp-frameworks-ml-nn-vts chromeos-base/ml-test-assets ) chromeos-base/recover-duts chromeos-base/tast-local-test-runner chromeos-base/tast-local-tests chromeos-base/tast-use-flags chromeos-base/verity chromeos-base/vpd cros_ec? ( chromeos-base/ec-devutils ) !chromeless_tty? ( !chromeless_tests? ( >=dev-cpp/gflags-2.0 ) ) wifi_testbed_ap? ( dev-python/btsocket ) python_targets_python2_7? ( dev-lang/python:2.7 ) dev-lang/python:3.6 dev-libs/opensc p2p? ( dev-python/dpkt ) perfetto? ( chromeos-base/perfetto chromeos-base/perfetto_simple_producer ) cr50_onboard? ( dev-util/u2f-ref-code ) net-misc/rsync sys-apps/memtester virtual/autotest-capability virtual/chromeos-bsp-test sys-apps/hdparm sys-apps/mmc-utils !cros_embedded? ( x86? ( app-benchmarks/sysbench sys-apps/pciutils sys-power/iasl vaapi? ( media-gfx/vadumpcaps media-video/libva-utils ) x11-misc/read-edid ) amd64? ( app-benchmarks/sysbench sys-apps/pciutils sys-power/iasl vaapi? ( media-gfx/vadumpcaps media-video/libva-utils ) x11-misc/read-edid ) app-admin/sudo app-arch/gzip app-arch/tar app-benchmarks/blktests app-benchmarks/blogbench app-benchmarks/lmbench app-benchmarks/microbenchmarks app-benchmarks/pjdfstest app-benchmarks/xfstests app-misc/ckermit opengles? ( app-misc/eglinfo ) app-misc/tmux app-misc/utouch-evemu app-mobilephone/dfu-util chromeos-base/autotest-client cras? ( chromeos-base/audiotest media-sound/cras_bench ) chromeos-base/avtest_label_detect chromeos-base/chrome-binary-tests chromeos-base/cros-camera-tool chromeos-base/cros-config-test !chromeless_tty? ( !chromeless_tests? ( chromeos-base/drm-tests ) ) chromeos-base/factory-mini chromeos-base/glbench chromeos-base/graphics-utils-python chromeos-base/libvda-gpu-tests chromeos-base/modem-diagnostics chromeos-base/policy_utils chromeos-base/protofiles chromeos-base/pywalt !chromeless_tty? ( chromeos-base/screen-capture-utils ) chromeos-base/secure-wipe shill? ( chromeos-base/shill-test-scripts wired_8021x? ( net-wireless/hostapd ) ) !chromeless_tests? ( chromeos-base/telemetry ) chromeos-base/toolchain-tests vulkan? ( chromeos-base/vkbench ) dev-embedded/dfu-programmer dev-go/syzkaller dev-libs/re2 dev-python/protobuf-python dev-python/btsocket dev-python/contextlib2 dev-python/dbus-python dev-python/dpkt dev-python/httplib2 dev-python/jsonrpclib dev-python/mkvparse dev-python/netifaces dev-python/pygobject dev-python/pyserial dev-python/pytest dev-python/python-evdev dev-python/python-uinput dev-python/pyudev dev-python/pyxattr dev-python/pyyaml dev-python/selenium dev-python/setproctitle dev-python/setuptools dev-python/ws4py !chromeless_tty? ( !chromeless_tests? ( dev-util/apitrace ) ) dev-util/stressapptest dev-util/trace-cmd dlc? ( sys-fs/squashfs-tools ) games-util/joystick media-gfx/imagemagick[jpeg,png,svg,tiff] media-gfx/perceptualdiff media-gfx/zbar arc-camera3? ( media-libs/cros-camera-libcamera_connector_test ) arc-camera3? ( media-libs/cros-camera-libjea_test ) arc-camera3? ( media-libs/cros-camera-test ) media-libs/cros-camera-v4l2_test media-libs/libexif media-libs/libvpx media-libs/opencv media-libs/openh264 !chromeless_tty? ( !chromeless_tests? ( media-gfx/deqp media-gfx/deqp-runner ) ) media-libs/tiff opengles? ( media-libs/waffle ) opengl? ( media-libs/waffle ) media-sound/sox net-analyzer/netperf net-dialup/minicom net-dns/dnsmasq net-misc/dhcp net-misc/iperf:2 net-misc/iputils net-misc/openssh net-misc/radvd net-proxy/tinyproxy wifi_hostap_test? ( net-wireless/hostap-test ) sci-geosciences/gpsd sys-apps/coreutils sys-apps/dtc sys-apps/ethtool sys-apps/file sys-apps/findutils sys-apps/kbd sys-apps/shadow sys-devel/binutils sys-process/iotop sys-process/procps sys-process/psmisc sys-process/time x11-libs/libdrm )
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4704391b23befee7168edd3f28f0b247
diff --git a/metadata/md5-cache/virtual/target-chromium-os-test-9999 b/metadata/md5-cache/virtual/target-chromium-os-test-9999
index b0a1021..c0f2830 100644
--- a/metadata/md5-cache/virtual/target-chromium-os-test-9999
+++ b/metadata/md5-cache/virtual/target-chromium-os-test-9999
@@ -1,14 +1,13 @@
 BDEPEND=dev-vcs/git
 DEFINED_PHASES=info setup unpack
-DEPEND=chromeos-base/chromite
 DESCRIPTION=List of packages that are needed inside the Chromium OS test image; Note: test images are a superset of dev images.
 EAPI=7
 HOMEPAGE=https://dev.chromium.org/
-IUSE=arc-camera3 biod -chromeless_tests cheets chromeless_tty cr50_onboard +cras cros_ec cros_embedded dlc kvm_host hammerd iioservice ml_service nnapi opengl opengles p2p +perfetto python_targets_python2_7 scanner +shill +tpm tpm2 unibuild vaapi vulkan wifi_hostap_test wifi_testbed_ap +wired_8021x cros_host cros_workon_tree_
+IUSE=arc-camera3 biod -chromeless_tests cheets chromeless_tty cr50_onboard +cras cros_ec cros_embedded dlc hammerd iioservice ml_service hps nnapi opengl opengles p2p +perfetto python_targets_python2_7 scanner +shill +tpm tpm2 unibuild vaapi vulkan wifi_hostap_test wifi_testbed_ap +wired_8021x cros_host cros_workon_tree_
 KEYWORDS=~*
-LICENSE=BSD-Google
+LICENSE=metapackage
 PROPERTIES=live
-RDEPEND=tpm? ( app-crypt/tpm-tools chromeos-base/hwsec-test-utils chromeos-base/tpm_softclear_utils ) tpm2? ( chromeos-base/hwsec-test-utils chromeos-base/tpm_softclear_utils ) chromeos-base/chromeos-test-root chromeos-base/ec-utils chromeos-base/ec-utils-test chromeos-base/factory-deps biod? ( virtual/chromeos-fpmcu-test chromeos-base/chromeos-fpmcu-unittests ) hammerd? ( chromeos-base/hammerd-test-utils ) iioservice? ( chromeos-base/iioservice_simpleclient ) scanner? ( chromeos-base/lorgnette_cli chromeos-base/sane-backends-test ) ml_service? ( chromeos-base/ml-cmdline ) nnapi? ( chromeos-base/ml-test-assets ) chromeos-base/recover-duts chromeos-base/tast-local-test-runner chromeos-base/tast-local-tests chromeos-base/tast-use-flags chromeos-base/verity chromeos-base/vpd cros_ec? ( chromeos-base/ec-devutils ) !chromeless_tty? ( !chromeless_tests? ( >=dev-cpp/gflags-2.0 ) ) wifi_testbed_ap? ( dev-python/btsocket ) python_targets_python2_7? ( dev-lang/python:2.7 ) dev-lang/python:3.6 dev-libs/opensc p2p? ( dev-python/dpkt ) perfetto? ( chromeos-base/perfetto ) cr50_onboard? ( dev-util/u2f-ref-code ) net-misc/rsync sys-apps/memtester virtual/autotest-capability virtual/chromeos-bsp-test sys-apps/hdparm sys-apps/mmc-utils !cros_embedded? ( x86? ( app-benchmarks/sysbench sys-apps/pciutils sys-power/iasl vaapi? ( media-gfx/vadumpcaps media-video/libva-utils ) x11-misc/read-edid ) amd64? ( app-benchmarks/sysbench sys-apps/pciutils sys-power/iasl vaapi? ( media-gfx/vadumpcaps media-video/libva-utils ) x11-misc/read-edid ) app-admin/sudo app-arch/gzip app-arch/tar app-benchmarks/blktests app-benchmarks/blogbench app-benchmarks/lmbench app-benchmarks/microbenchmarks app-benchmarks/pjdfstest app-benchmarks/xfstests app-misc/ckermit opengles? ( app-misc/eglinfo ) app-misc/tmux app-misc/utouch-evemu app-mobilephone/dfu-util chromeos-base/autotest-client cras? ( chromeos-base/audiotest ) chromeos-base/avtest_label_detect chromeos-base/chrome-binary-tests chromeos-base/cros-camera-tool chromeos-base/cros-config-test !chromeless_tty? ( !chromeless_tests? ( chromeos-base/drm-tests ) ) chromeos-base/factory-mini chromeos-base/glbench chromeos-base/graphics-utils-python chromeos-base/libvda-gpu-tests chromeos-base/modem-diagnostics chromeos-base/policy_utils chromeos-base/protofiles chromeos-base/pywalt !chromeless_tty? ( chromeos-base/screen-capture-utils ) chromeos-base/secure-wipe shill? ( chromeos-base/shill-test-scripts wired_8021x? ( net-wireless/hostapd ) ) !chromeless_tests? ( chromeos-base/telemetry ) chromeos-base/toolchain-tests vulkan? ( chromeos-base/vkbench ) dev-embedded/dfu-programmer dev-go/syzkaller dev-libs/re2 dev-python/protobuf-python dev-python/btsocket dev-python/contextlib2 dev-python/dbus-python dev-python/dpkt dev-python/httplib2 dev-python/imaging dev-python/jsonrpclib dev-python/mkvparse dev-python/netifaces dev-python/pygobject dev-python/pyserial dev-python/pytest dev-python/python-evdev dev-python/python-uinput dev-python/pyudev dev-python/pyxattr dev-python/pyyaml dev-python/selenium dev-python/setproctitle dev-python/setuptools dev-python/ws4py dev-util/stressapptest dev-util/trace-cmd dlc? ( sys-fs/squashfs-tools ) games-util/joystick media-gfx/imagemagick[jpeg,png,svg,tiff] media-gfx/perceptualdiff media-gfx/zbar arc-camera3? ( media-libs/cros-camera-libcamera_connector_test ) arc-camera3? ( media-libs/cros-camera-libjea_test ) arc-camera3? ( media-libs/cros-camera-test ) media-libs/cros-camera-v4l2_test media-libs/libexif media-libs/libvpx media-libs/opencv media-libs/openh264 !chromeless_tty? ( !chromeless_tests? ( media-gfx/deqp media-gfx/deqp-runner ) ) media-libs/tiff opengles? ( media-libs/waffle ) opengl? ( media-libs/waffle ) media-sound/sox net-analyzer/netperf net-dialup/minicom net-dns/dnsmasq net-misc/dhcp net-misc/iperf:2 net-misc/iputils net-misc/openssh net-misc/radvd net-proxy/tinyproxy wifi_hostap_test? ( net-wireless/hostap-test ) sci-geosciences/gpsd sys-apps/coreutils sys-apps/dtc sys-apps/ethtool sys-apps/file sys-apps/findutils sys-apps/kbd sys-apps/shadow sys-devel/binutils sys-process/iotop sys-process/procps sys-process/psmisc sys-process/time x11-libs/libdrm )
+RDEPEND=tpm? ( app-crypt/tpm-tools chromeos-base/hwsec-test-utils chromeos-base/tpm_softclear_utils ) tpm2? ( chromeos-base/hwsec-test-utils chromeos-base/tpm_softclear_utils ) chromeos-base/chromeos-test-root chromeos-base/ec-utils chromeos-base/ec-utils-test chromeos-base/factory-deps biod? ( virtual/chromeos-fpmcu-test chromeos-base/chromeos-fpmcu-unittests ) hammerd? ( chromeos-base/hammerd-test-utils ) iioservice? ( chromeos-base/iioservice_simpleclient ) scanner? ( chromeos-base/lorgnette_cli chromeos-base/sane-backends-test ) ml_service? ( chromeos-base/ml-cmdline ) hps? ( chromeos-base/hps-tool ) nnapi? ( chromeos-base/aosp-frameworks-ml-nn-vts chromeos-base/ml-test-assets ) chromeos-base/recover-duts chromeos-base/tast-local-test-runner chromeos-base/tast-local-tests chromeos-base/tast-use-flags chromeos-base/verity chromeos-base/vpd cros_ec? ( chromeos-base/ec-devutils ) !chromeless_tty? ( !chromeless_tests? ( >=dev-cpp/gflags-2.0 ) ) wifi_testbed_ap? ( dev-python/btsocket ) python_targets_python2_7? ( dev-lang/python:2.7 ) dev-lang/python:3.6 dev-libs/opensc p2p? ( dev-python/dpkt ) perfetto? ( chromeos-base/perfetto chromeos-base/perfetto_simple_producer ) cr50_onboard? ( dev-util/u2f-ref-code ) net-misc/rsync sys-apps/memtester virtual/autotest-capability virtual/chromeos-bsp-test sys-apps/hdparm sys-apps/mmc-utils !cros_embedded? ( x86? ( app-benchmarks/sysbench sys-apps/pciutils sys-power/iasl vaapi? ( media-gfx/vadumpcaps media-video/libva-utils ) x11-misc/read-edid ) amd64? ( app-benchmarks/sysbench sys-apps/pciutils sys-power/iasl vaapi? ( media-gfx/vadumpcaps media-video/libva-utils ) x11-misc/read-edid ) app-admin/sudo app-arch/gzip app-arch/tar app-benchmarks/blktests app-benchmarks/blogbench app-benchmarks/lmbench app-benchmarks/microbenchmarks app-benchmarks/pjdfstest app-benchmarks/xfstests app-misc/ckermit opengles? ( app-misc/eglinfo ) app-misc/tmux app-misc/utouch-evemu app-mobilephone/dfu-util chromeos-base/autotest-client cras? ( chromeos-base/audiotest media-sound/cras_bench ) chromeos-base/avtest_label_detect chromeos-base/chrome-binary-tests chromeos-base/cros-camera-tool chromeos-base/cros-config-test !chromeless_tty? ( !chromeless_tests? ( chromeos-base/drm-tests ) ) chromeos-base/factory-mini chromeos-base/glbench chromeos-base/graphics-utils-python chromeos-base/libvda-gpu-tests chromeos-base/modem-diagnostics chromeos-base/policy_utils chromeos-base/protofiles chromeos-base/pywalt !chromeless_tty? ( chromeos-base/screen-capture-utils ) chromeos-base/secure-wipe shill? ( chromeos-base/shill-test-scripts wired_8021x? ( net-wireless/hostapd ) ) !chromeless_tests? ( chromeos-base/telemetry ) chromeos-base/toolchain-tests vulkan? ( chromeos-base/vkbench ) dev-embedded/dfu-programmer dev-go/syzkaller dev-libs/re2 dev-python/protobuf-python dev-python/btsocket dev-python/contextlib2 dev-python/dbus-python dev-python/dpkt dev-python/httplib2 dev-python/jsonrpclib dev-python/mkvparse dev-python/netifaces dev-python/pygobject dev-python/pyserial dev-python/pytest dev-python/python-evdev dev-python/python-uinput dev-python/pyudev dev-python/pyxattr dev-python/pyyaml dev-python/selenium dev-python/setproctitle dev-python/setuptools dev-python/ws4py !chromeless_tty? ( !chromeless_tests? ( dev-util/apitrace ) ) dev-util/stressapptest dev-util/trace-cmd dlc? ( sys-fs/squashfs-tools ) games-util/joystick media-gfx/imagemagick[jpeg,png,svg,tiff] media-gfx/perceptualdiff media-gfx/zbar arc-camera3? ( media-libs/cros-camera-libcamera_connector_test ) arc-camera3? ( media-libs/cros-camera-libjea_test ) arc-camera3? ( media-libs/cros-camera-test ) media-libs/cros-camera-v4l2_test media-libs/libexif media-libs/libvpx media-libs/opencv media-libs/openh264 !chromeless_tty? ( !chromeless_tests? ( media-gfx/deqp media-gfx/deqp-runner ) ) media-libs/tiff opengles? ( media-libs/waffle ) opengl? ( media-libs/waffle ) media-sound/sox net-analyzer/netperf net-dialup/minicom net-dns/dnsmasq net-misc/dhcp net-misc/iperf:2 net-misc/iputils net-misc/openssh net-misc/radvd net-proxy/tinyproxy wifi_hostap_test? ( net-wireless/hostap-test ) sci-geosciences/gpsd sys-apps/coreutils sys-apps/dtc sys-apps/ethtool sys-apps/file sys-apps/findutils sys-apps/kbd sys-apps/shadow sys-devel/binutils sys-process/iotop sys-process/procps sys-process/psmisc sys-process/time x11-libs/libdrm )
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=4f0aa86ffbfc127b6ccd704eb140cbc0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=12677e723810cebd80b80e2e45bd7166
diff --git a/metadata/md5-cache/virtual/target-fuzzers-1 b/metadata/md5-cache/virtual/target-fuzzers-1
index b9ec9da..549b44a 100644
--- a/metadata/md5-cache/virtual/target-fuzzers-1
+++ b/metadata/md5-cache/virtual/target-fuzzers-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=List of packages that should be fuzzed
-EAPI=5
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=virtual/implicit-system virtual/chromium-os-fuzzers
 SLOT=0
-_md5_=f5fb50c5770b88b8b1c5947404f967be
+_md5_=bb31357da26e90225325845fca8d45c2
diff --git a/metadata/md5-cache/virtual/target-fuzzers-1-r2 b/metadata/md5-cache/virtual/target-fuzzers-1-r2
deleted file mode 100644
index b9ec9da..0000000
--- a/metadata/md5-cache/virtual/target-fuzzers-1-r2
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=List of packages that should be fuzzed
-EAPI=5
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=virtual/implicit-system virtual/chromium-os-fuzzers
-SLOT=0
-_md5_=f5fb50c5770b88b8b1c5947404f967be
diff --git a/metadata/md5-cache/virtual/target-fuzzers-1-r4 b/metadata/md5-cache/virtual/target-fuzzers-1-r4
new file mode 100644
index 0000000..549b44a
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-fuzzers-1-r4
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of packages that should be fuzzed
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/implicit-system virtual/chromium-os-fuzzers
+SLOT=0
+_md5_=bb31357da26e90225325845fca8d45c2
diff --git a/metadata/md5-cache/virtual/target-initramfs-1 b/metadata/md5-cache/virtual/target-initramfs-1
new file mode 100644
index 0000000..1511bfc
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-initramfs-1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of packages that make up the initramfs.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/target-chromium-os-initramfs
+SLOT=0
+_md5_=64e9543ec7df0c39bcb50f407ec2eb9e
diff --git a/metadata/md5-cache/virtual/target-initramfs-1-r1 b/metadata/md5-cache/virtual/target-initramfs-1-r1
new file mode 100644
index 0000000..1511bfc
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-initramfs-1-r1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of packages that make up the initramfs.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/target-chromium-os-initramfs
+SLOT=0
+_md5_=64e9543ec7df0c39bcb50f407ec2eb9e
diff --git a/metadata/md5-cache/virtual/target-os-1 b/metadata/md5-cache/virtual/target-os-1
index 76600c9..9514994 100644
--- a/metadata/md5-cache/virtual/target-os-1
+++ b/metadata/md5-cache/virtual/target-os-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=List of packages that make up the base OS image; by default, we build a Chromium OS image
-EAPI=4
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=virtual/target-chromium-os
 SLOT=0
-_md5_=612d2c8ebc3890bd0624fa839ff38578
+_md5_=535b34f4df4a88f07676f86cb004fe09
diff --git a/metadata/md5-cache/virtual/target-os-1-r3 b/metadata/md5-cache/virtual/target-os-1-r3
deleted file mode 100644
index 76600c9..0000000
--- a/metadata/md5-cache/virtual/target-os-1-r3
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=List of packages that make up the base OS image; by default, we build a Chromium OS image
-EAPI=4
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=virtual/target-chromium-os
-SLOT=0
-_md5_=612d2c8ebc3890bd0624fa839ff38578
diff --git a/metadata/md5-cache/virtual/target-os-1-r5 b/metadata/md5-cache/virtual/target-os-1-r5
new file mode 100644
index 0000000..9514994
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-os-1-r5
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of packages that make up the base OS image; by default, we build a Chromium OS image
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/target-chromium-os
+SLOT=0
+_md5_=535b34f4df4a88f07676f86cb004fe09
diff --git a/metadata/md5-cache/virtual/target-os-dev-1 b/metadata/md5-cache/virtual/target-os-dev-1
index 7259728..87b17db 100644
--- a/metadata/md5-cache/virtual/target-os-dev-1
+++ b/metadata/md5-cache/virtual/target-os-dev-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=List of additional packages for the developer OS image; by default, we build a Chromium OS dev image. Note: When building a dev image, the build system pulls in all packages from the base image as well.
-EAPI=6
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=virtual/target-chromium-os-dev
 SLOT=0
-_md5_=3f5039658f6b0a13e5f3899a4e9232d5
+_md5_=ae88c724c3d2f2b70268cf4e1679aebc
diff --git a/metadata/md5-cache/virtual/target-os-dev-1-r4 b/metadata/md5-cache/virtual/target-os-dev-1-r4
deleted file mode 100644
index 7259728..0000000
--- a/metadata/md5-cache/virtual/target-os-dev-1-r4
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=List of additional packages for the developer OS image; by default, we build a Chromium OS dev image. Note: When building a dev image, the build system pulls in all packages from the base image as well.
-EAPI=6
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=virtual/target-chromium-os-dev
-SLOT=0
-_md5_=3f5039658f6b0a13e5f3899a4e9232d5
diff --git a/metadata/md5-cache/virtual/target-os-dev-1-r6 b/metadata/md5-cache/virtual/target-os-dev-1-r6
new file mode 100644
index 0000000..87b17db
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-os-dev-1-r6
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of additional packages for the developer OS image; by default, we build a Chromium OS dev image. Note: When building a dev image, the build system pulls in all packages from the base image as well.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/target-chromium-os-dev
+SLOT=0
+_md5_=ae88c724c3d2f2b70268cf4e1679aebc
diff --git a/metadata/md5-cache/virtual/target-os-factory-1 b/metadata/md5-cache/virtual/target-os-factory-1
index 93e0a64..a42ce05 100644
--- a/metadata/md5-cache/virtual/target-os-factory-1
+++ b/metadata/md5-cache/virtual/target-os-factory-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=List of packages that make up the factory test OS image; by default, we build a Chromium OS factory test image
-EAPI=4
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=virtual/target-chromium-os-factory
 SLOT=0
-_md5_=391af5c7b7d87005e739bee5a529e985
+_md5_=df137fca85e3085d302db01ab8f29518
diff --git a/metadata/md5-cache/virtual/target-os-factory-1-r1 b/metadata/md5-cache/virtual/target-os-factory-1-r1
deleted file mode 100644
index 93e0a64..0000000
--- a/metadata/md5-cache/virtual/target-os-factory-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=List of packages that make up the factory test OS image; by default, we build a Chromium OS factory test image
-EAPI=4
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=virtual/target-chromium-os-factory
-SLOT=0
-_md5_=391af5c7b7d87005e739bee5a529e985
diff --git a/metadata/md5-cache/virtual/target-os-factory-1-r3 b/metadata/md5-cache/virtual/target-os-factory-1-r3
new file mode 100644
index 0000000..a42ce05
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-os-factory-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of packages that make up the factory test OS image; by default, we build a Chromium OS factory test image
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/target-chromium-os-factory
+SLOT=0
+_md5_=df137fca85e3085d302db01ab8f29518
diff --git a/metadata/md5-cache/virtual/target-os-factory-shim-1 b/metadata/md5-cache/virtual/target-os-factory-shim-1
index adb7cc05..b8b55ec 100644
--- a/metadata/md5-cache/virtual/target-os-factory-shim-1
+++ b/metadata/md5-cache/virtual/target-os-factory-shim-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=List of packages that make up the factory shim OS image; by default, we build a Chromium OS factory shim image
-EAPI=4
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=virtual/target-chromium-os-factory-shim
 SLOT=0
-_md5_=80db01a49269fdda42290f66db15a6d3
+_md5_=dbf85e251e1dc04a57b06962597ffa1b
diff --git a/metadata/md5-cache/virtual/target-os-factory-shim-1-r1 b/metadata/md5-cache/virtual/target-os-factory-shim-1-r1
deleted file mode 100644
index adb7cc05..0000000
--- a/metadata/md5-cache/virtual/target-os-factory-shim-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=List of packages that make up the factory shim OS image; by default, we build a Chromium OS factory shim image
-EAPI=4
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=virtual/target-chromium-os-factory-shim
-SLOT=0
-_md5_=80db01a49269fdda42290f66db15a6d3
diff --git a/metadata/md5-cache/virtual/target-os-factory-shim-1-r3 b/metadata/md5-cache/virtual/target-os-factory-shim-1-r3
new file mode 100644
index 0000000..b8b55ec
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-os-factory-shim-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of packages that make up the factory shim OS image; by default, we build a Chromium OS factory shim image
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/target-chromium-os-factory-shim
+SLOT=0
+_md5_=dbf85e251e1dc04a57b06962597ffa1b
diff --git a/metadata/md5-cache/virtual/target-os-test-1 b/metadata/md5-cache/virtual/target-os-test-1
index 31d4033..a75f38a 100644
--- a/metadata/md5-cache/virtual/target-os-test-1
+++ b/metadata/md5-cache/virtual/target-os-test-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=List of additional packages for the test OS image; by default, we build a Chromium OS test image. Note: When building a test image, the build system pulls in all packages from the dev image (and by extension the base image) as well.
-EAPI=6
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=virtual/target-chromium-os-test
 SLOT=0
-_md5_=57a94984bc00b63b52d7684146306d50
+_md5_=dc6c445e1354ac53ad6e434a7462dce2
diff --git a/metadata/md5-cache/virtual/target-os-test-1-r3 b/metadata/md5-cache/virtual/target-os-test-1-r3
deleted file mode 100644
index 31d4033..0000000
--- a/metadata/md5-cache/virtual/target-os-test-1-r3
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=List of additional packages for the test OS image; by default, we build a Chromium OS test image. Note: When building a test image, the build system pulls in all packages from the dev image (and by extension the base image) as well.
-EAPI=6
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=virtual/target-chromium-os-test
-SLOT=0
-_md5_=57a94984bc00b63b52d7684146306d50
diff --git a/metadata/md5-cache/virtual/target-os-test-1-r5 b/metadata/md5-cache/virtual/target-os-test-1-r5
new file mode 100644
index 0000000..a75f38a
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-os-test-1-r5
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=List of additional packages for the test OS image; by default, we build a Chromium OS test image. Note: When building a test image, the build system pulls in all packages from the dev image (and by extension the base image) as well.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/target-chromium-os-test
+SLOT=0
+_md5_=dc6c445e1354ac53ad6e434a7462dce2
diff --git a/metadata/md5-cache/virtual/target-sdk-1 b/metadata/md5-cache/virtual/target-sdk-1
index 344309d..fc026a0 100644
--- a/metadata/md5-cache/virtual/target-sdk-1
+++ b/metadata/md5-cache/virtual/target-sdk-1
@@ -1,10 +1,10 @@
 DEFINED_PHASES=-
 DEPEND=virtual/target-chromium-os-sdk
 DESCRIPTION=List of packages that are needed inside the sdk to build everything; by default, we build a Chromium OS SDK
-EAPI=4
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=virtual/target-chromium-os-sdk
 SLOT=0
-_md5_=f50e9cca669d3da577fbb829f8c84c33
+_md5_=ea9b74dcb15c9fc05a54d1889bd9a34b
diff --git a/metadata/md5-cache/virtual/target-sdk-1-r1 b/metadata/md5-cache/virtual/target-sdk-1-r1
deleted file mode 100644
index 344309d..0000000
--- a/metadata/md5-cache/virtual/target-sdk-1-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=virtual/target-chromium-os-sdk
-DESCRIPTION=List of packages that are needed inside the sdk to build everything; by default, we build a Chromium OS SDK
-EAPI=4
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=virtual/target-chromium-os-sdk
-SLOT=0
-_md5_=f50e9cca669d3da577fbb829f8c84c33
diff --git a/metadata/md5-cache/virtual/target-sdk-1-r3 b/metadata/md5-cache/virtual/target-sdk-1-r3
new file mode 100644
index 0000000..fc026a0
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-sdk-1-r3
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=virtual/target-chromium-os-sdk
+DESCRIPTION=List of packages that are needed inside the sdk to build everything; by default, we build a Chromium OS SDK
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/target-chromium-os-sdk
+SLOT=0
+_md5_=ea9b74dcb15c9fc05a54d1889bd9a34b
diff --git a/metadata/md5-cache/virtual/target-sdk-nobdeps-1 b/metadata/md5-cache/virtual/target-sdk-nobdeps-1
index 9282c8d..f6f90e9 100644
--- a/metadata/md5-cache/virtual/target-sdk-nobdeps-1
+++ b/metadata/md5-cache/virtual/target-sdk-nobdeps-1
@@ -1,10 +1,10 @@
 DEFINED_PHASES=-
 DEPEND=virtual/target-chromium-os-sdk-nobdeps
 DESCRIPTION=List of packages that are needed inside the SDK, but where we only want to install a binpkg. We never want to install build-time deps or recompile from source unless the user explicitly requests it.
-EAPI=6
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=virtual/target-chromium-os-sdk-nobdeps
 SLOT=0
-_md5_=1dbbf4876763c9cf4aa6dabaddf3eea6
+_md5_=29b559a91cf50464f310dc94fdf83d97
diff --git a/metadata/md5-cache/virtual/target-sdk-nobdeps-1-r1 b/metadata/md5-cache/virtual/target-sdk-nobdeps-1-r1
deleted file mode 100644
index 9282c8d..0000000
--- a/metadata/md5-cache/virtual/target-sdk-nobdeps-1-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=virtual/target-chromium-os-sdk-nobdeps
-DESCRIPTION=List of packages that are needed inside the SDK, but where we only want to install a binpkg. We never want to install build-time deps or recompile from source unless the user explicitly requests it.
-EAPI=6
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=virtual/target-chromium-os-sdk-nobdeps
-SLOT=0
-_md5_=1dbbf4876763c9cf4aa6dabaddf3eea6
diff --git a/metadata/md5-cache/virtual/target-sdk-nobdeps-1-r3 b/metadata/md5-cache/virtual/target-sdk-nobdeps-1-r3
new file mode 100644
index 0000000..f6f90e9
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-sdk-nobdeps-1-r3
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=virtual/target-chromium-os-sdk-nobdeps
+DESCRIPTION=List of packages that are needed inside the SDK, but where we only want to install a binpkg. We never want to install build-time deps or recompile from source unless the user explicitly requests it.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/target-chromium-os-sdk-nobdeps
+SLOT=0
+_md5_=29b559a91cf50464f310dc94fdf83d97
diff --git a/metadata/md5-cache/virtual/target-sdk-post-cross-1 b/metadata/md5-cache/virtual/target-sdk-post-cross-1
index 3a59bba..5fdde7e 100644
--- a/metadata/md5-cache/virtual/target-sdk-post-cross-1
+++ b/metadata/md5-cache/virtual/target-sdk-post-cross-1
@@ -1,10 +1,10 @@
 DEFINED_PHASES=-
 DEPEND=virtual/target-chromium-os-sdk-post-cross
 DESCRIPTION=List of packages that are needed inside the SDK, but after we've built all the toolchain packages that we install separately via binpkgs. This avoids circular dependencies when bootstrapping.
-EAPI=5
+EAPI=7
 HOMEPAGE=http://dev.chromium.org/
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=virtual/target-chromium-os-sdk-post-cross
 SLOT=0
-_md5_=c5f1858543ab7fae8074d1798ac92184
+_md5_=17f8c500efa4f81decbecea0f4f8fcf4
diff --git a/metadata/md5-cache/virtual/target-sdk-post-cross-1-r1 b/metadata/md5-cache/virtual/target-sdk-post-cross-1-r1
deleted file mode 100644
index 3a59bba..0000000
--- a/metadata/md5-cache/virtual/target-sdk-post-cross-1-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=virtual/target-chromium-os-sdk-post-cross
-DESCRIPTION=List of packages that are needed inside the SDK, but after we've built all the toolchain packages that we install separately via binpkgs. This avoids circular dependencies when bootstrapping.
-EAPI=5
-HOMEPAGE=http://dev.chromium.org/
-KEYWORDS=*
-LICENSE=BSD-Google
-RDEPEND=virtual/target-chromium-os-sdk-post-cross
-SLOT=0
-_md5_=c5f1858543ab7fae8074d1798ac92184
diff --git a/metadata/md5-cache/virtual/target-sdk-post-cross-1-r3 b/metadata/md5-cache/virtual/target-sdk-post-cross-1-r3
new file mode 100644
index 0000000..5fdde7e
--- /dev/null
+++ b/metadata/md5-cache/virtual/target-sdk-post-cross-1-r3
@@ -0,0 +1,10 @@
+DEFINED_PHASES=-
+DEPEND=virtual/target-chromium-os-sdk-post-cross
+DESCRIPTION=List of packages that are needed inside the SDK, but after we've built all the toolchain packages that we install separately via binpkgs. This avoids circular dependencies when bootstrapping.
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=virtual/target-chromium-os-sdk-post-cross
+SLOT=0
+_md5_=17f8c500efa4f81decbecea0f4f8fcf4
diff --git a/metadata/md5-cache/virtual/tast-local-tests-1 b/metadata/md5-cache/virtual/tast-local-tests-1
index 62a0700..77dff10 100644
--- a/metadata/md5-cache/virtual/tast-local-tests-1
+++ b/metadata/md5-cache/virtual/tast-local-tests-1
@@ -1,8 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Virtual package for private Tast local test bundles. This package can be overridden by overlays to bring in private tests.
-EAPI=6
+EAPI=7
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
 KEYWORDS=*
-LICENSE=Apache-2.0 BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=be590859b02b0100d7d80e66c6731901
+_md5_=3e7d1dc2b787c436feb4ab40ea32a74c
diff --git a/metadata/md5-cache/virtual/tast-local-tests-1-r2 b/metadata/md5-cache/virtual/tast-local-tests-1-r2
new file mode 100644
index 0000000..77dff10
--- /dev/null
+++ b/metadata/md5-cache/virtual/tast-local-tests-1-r2
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Virtual package for private Tast local test bundles. This package can be overridden by overlays to bring in private tests.
+EAPI=7
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/tast/
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=3e7d1dc2b787c436feb4ab40ea32a74c
diff --git a/metadata/md5-cache/virtual/tast-vars-1 b/metadata/md5-cache/virtual/tast-vars-1
index 95fd28e..52a7acb 100644
--- a/metadata/md5-cache/virtual/tast-vars-1
+++ b/metadata/md5-cache/virtual/tast-vars-1
@@ -1,7 +1,7 @@
 DEFINED_PHASES=-
 DESCRIPTION=Virtual package for private Tast variables. This package can be overridden by overlays to bring in private variables.
-EAPI=6
+EAPI=7
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 SLOT=0
-_md5_=cc4501241da8af335c660fb4a57a66fd
+_md5_=3b3193a7af8eaf1f2d1562858da4eb6c
diff --git a/metadata/md5-cache/virtual/tast-vars-1-r2 b/metadata/md5-cache/virtual/tast-vars-1-r2
new file mode 100644
index 0000000..52a7acb
--- /dev/null
+++ b/metadata/md5-cache/virtual/tast-vars-1-r2
@@ -0,0 +1,7 @@
+DEFINED_PHASES=-
+DESCRIPTION=Virtual package for private Tast variables. This package can be overridden by overlays to bring in private variables.
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=3b3193a7af8eaf1f2d1562858da4eb6c
diff --git a/metadata/md5-cache/virtual/toolchain-packages-1 b/metadata/md5-cache/virtual/toolchain-packages-1
new file mode 100644
index 0000000..8ebfd34
--- /dev/null
+++ b/metadata/md5-cache/virtual/toolchain-packages-1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=compile
+DEPEND=dev-lang/go dev-lang/rust dev-libs/elfutils sys-devel/binutils sys-devel/gcc sys-devel/llvm sys-kernel/linux-headers sys-libs/compiler-rt sys-libs/glibc sys-libs/libcxx sys-libs/libcxxabi sys-libs/llvm-libunwind
+DESCRIPTION=Virtual package for listing toolchain packages. All packages which should be considered part of the toolchain must be directly listed as dependencies of this package. The common features of packages that should be in this virtual are packages that consumed by many other packages (to the point of needing to rebuild a significant chunk of the world to properly test changes) and that don't fit nicely in to Portage's dependency model (for bootstrap problems/circular dependencies/other reasons).
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/chromium-os
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=be9a637c579212c19693e87b9d4ae006
diff --git a/metadata/md5-cache/virtual/toolchain-packages-1-r2 b/metadata/md5-cache/virtual/toolchain-packages-1-r2
deleted file mode 100644
index c9584cb..0000000
--- a/metadata/md5-cache/virtual/toolchain-packages-1-r2
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=compile
-DEPEND=dev-lang/go dev-lang/rust dev-libs/elfutils sys-devel/binutils sys-devel/gcc sys-devel/llvm sys-kernel/linux-headers sys-libs/compiler-rt sys-libs/glibc sys-libs/libcxx sys-libs/libcxxabi sys-libs/llvm-libunwind
-DESCRIPTION=Virtual package for listing toolchain packages. All packages which should be considered part of the toolchain must be directly listed as dependencies of this package. The common features of packages that should be in this virtual are packages that consumed by many other packages (to the point of needing to rebuild a significant chunk of the world to properly test changes) and that don't fit nicely in to Portage's dependency model (for bootstrap problems/circular dependencies/other reasons).
-EAPI=7
-HOMEPAGE=http://dev.chromium.org/chromium-os
-KEYWORDS=*
-LICENSE=BSD-Google
-SLOT=0
-_md5_=1d2a3e9a57787ef67ca986dc447ee305
diff --git a/metadata/md5-cache/virtual/toolchain-packages-1-r3 b/metadata/md5-cache/virtual/toolchain-packages-1-r3
new file mode 100644
index 0000000..8ebfd34
--- /dev/null
+++ b/metadata/md5-cache/virtual/toolchain-packages-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=compile
+DEPEND=dev-lang/go dev-lang/rust dev-libs/elfutils sys-devel/binutils sys-devel/gcc sys-devel/llvm sys-kernel/linux-headers sys-libs/compiler-rt sys-libs/glibc sys-libs/libcxx sys-libs/libcxxabi sys-libs/llvm-libunwind
+DESCRIPTION=Virtual package for listing toolchain packages. All packages which should be considered part of the toolchain must be directly listed as dependencies of this package. The common features of packages that should be in this virtual are packages that consumed by many other packages (to the point of needing to rebuild a significant chunk of the world to properly test changes) and that don't fit nicely in to Portage's dependency model (for bootstrap problems/circular dependencies/other reasons).
+EAPI=7
+HOMEPAGE=http://dev.chromium.org/chromium-os
+KEYWORDS=*
+LICENSE=metapackage
+SLOT=0
+_md5_=be9a637c579212c19693e87b9d4ae006
diff --git a/metadata/md5-cache/virtual/ttf-fonts-1 b/metadata/md5-cache/virtual/ttf-fonts-1
new file mode 100644
index 0000000..3520726
--- /dev/null
+++ b/metadata/md5-cache/virtual/ttf-fonts-1
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=True and opentype fonts for Chromium OS
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-fonts
+SLOT=0
+_md5_=086ab8742dc5b55c60a9bc7739ce89eb
diff --git a/metadata/md5-cache/virtual/ttf-fonts-1-r1 b/metadata/md5-cache/virtual/ttf-fonts-1-r1
deleted file mode 100644
index e783993..0000000
--- a/metadata/md5-cache/virtual/ttf-fonts-1-r1
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=True and opentype fonts for Chromium OS
-EAPI=5
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-RDEPEND=chromeos-base/chromeos-fonts
-SLOT=0
-_md5_=65519a62db38853cb1482a121e649300
diff --git a/metadata/md5-cache/virtual/ttf-fonts-1-r3 b/metadata/md5-cache/virtual/ttf-fonts-1-r3
new file mode 100644
index 0000000..3520726
--- /dev/null
+++ b/metadata/md5-cache/virtual/ttf-fonts-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=True and opentype fonts for Chromium OS
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=chromeos-base/chromeos-fonts
+SLOT=0
+_md5_=086ab8742dc5b55c60a9bc7739ce89eb
diff --git a/metadata/md5-cache/virtual/u-boot-1 b/metadata/md5-cache/virtual/u-boot-1
index f179c37..17e25b7 100644
--- a/metadata/md5-cache/virtual/u-boot-1
+++ b/metadata/md5-cache/virtual/u-boot-1
@@ -1,9 +1,9 @@
 DEFINED_PHASES=-
 DESCRIPTION=Chrome OS u-boot virtual package
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 KEYWORDS=*
-LICENSE=GPL-2
+LICENSE=metapackage
 RDEPEND=sys-boot/u-boot
 SLOT=0
-_md5_=8a5df498de77714e596ab6b16a5d8aaa
+_md5_=8af2148a631245a8505d3571d2817af6
diff --git a/metadata/md5-cache/virtual/u-boot-1-r1 b/metadata/md5-cache/virtual/u-boot-1-r1
deleted file mode 100644
index f179c37..0000000
--- a/metadata/md5-cache/virtual/u-boot-1-r1
+++ /dev/null
@@ -1,9 +0,0 @@
-DEFINED_PHASES=-
-DESCRIPTION=Chrome OS u-boot virtual package
-EAPI=4
-HOMEPAGE=http://src.chromium.org
-KEYWORDS=*
-LICENSE=GPL-2
-RDEPEND=sys-boot/u-boot
-SLOT=0
-_md5_=8a5df498de77714e596ab6b16a5d8aaa
diff --git a/metadata/md5-cache/virtual/u-boot-1-r3 b/metadata/md5-cache/virtual/u-boot-1-r3
new file mode 100644
index 0000000..17e25b7
--- /dev/null
+++ b/metadata/md5-cache/virtual/u-boot-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DESCRIPTION=Chrome OS u-boot virtual package
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=sys-boot/u-boot
+SLOT=0
+_md5_=8af2148a631245a8505d3571d2817af6
diff --git a/metadata/md5-cache/virtual/update-policy-1 b/metadata/md5-cache/virtual/update-policy-1
index 22e4a55..f7c3393 100644
--- a/metadata/md5-cache/virtual/update-policy-1
+++ b/metadata/md5-cache/virtual/update-policy-1
@@ -1,11 +1,11 @@
 DEFINED_PHASES=-
 DEPEND=|| ( !cros_embedded? ( chromeos-base/update-policy-chromeos ) chromeos-base/update-policy-embedded )
 DESCRIPTION=Virtual package installing the update engine's policy manager configuration. Boards can override it to install their own configuration.
-EAPI=4
+EAPI=7
 HOMEPAGE=http://src.chromium.org
 IUSE=cros_embedded
 KEYWORDS=*
-LICENSE=BSD-Google
+LICENSE=metapackage
 RDEPEND=|| ( !cros_embedded? ( chromeos-base/update-policy-chromeos ) chromeos-base/update-policy-embedded )
 SLOT=0
-_md5_=c2965495b0104871ea9fe6e36431dee3
+_md5_=07f625aa090370472744d8b62b879907
diff --git a/metadata/md5-cache/virtual/update-policy-1-r2 b/metadata/md5-cache/virtual/update-policy-1-r2
new file mode 100644
index 0000000..f7c3393
--- /dev/null
+++ b/metadata/md5-cache/virtual/update-policy-1-r2
@@ -0,0 +1,11 @@
+DEFINED_PHASES=-
+DEPEND=|| ( !cros_embedded? ( chromeos-base/update-policy-chromeos ) chromeos-base/update-policy-embedded )
+DESCRIPTION=Virtual package installing the update engine's policy manager configuration. Boards can override it to install their own configuration.
+EAPI=7
+HOMEPAGE=http://src.chromium.org
+IUSE=cros_embedded
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=|| ( !cros_embedded? ( chromeos-base/update-policy-chromeos ) chromeos-base/update-policy-embedded )
+SLOT=0
+_md5_=07f625aa090370472744d8b62b879907
diff --git a/metadata/md5-cache/virtual/vulkan-icd-1 b/metadata/md5-cache/virtual/vulkan-icd-1
index 5d48ef7..47a4587 100644
--- a/metadata/md5-cache/virtual/vulkan-icd-1
+++ b/metadata/md5-cache/virtual/vulkan-icd-1
@@ -1,7 +1,8 @@
 DEFINED_PHASES=-
 DESCRIPTION=Virtual for presence of a Vulkan ICD (Installable Client Driver)
-EAPI=5
+EAPI=7
 KEYWORDS=*
+LICENSE=metapackage
 RDEPEND=media-libs/vulkan-loader media-libs/mesa[vulkan]
 SLOT=0
-_md5_=a88705c5c48ad84eb563a58cf4a10dff
+_md5_=267c1b67ff22d04b8f7a31bc07233856
diff --git a/metadata/md5-cache/virtual/vulkan-icd-1-r2 b/metadata/md5-cache/virtual/vulkan-icd-1-r2
new file mode 100644
index 0000000..47a4587
--- /dev/null
+++ b/metadata/md5-cache/virtual/vulkan-icd-1-r2
@@ -0,0 +1,8 @@
+DEFINED_PHASES=-
+DESCRIPTION=Virtual for presence of a Vulkan ICD (Installable Client Driver)
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=media-libs/vulkan-loader media-libs/mesa[vulkan]
+SLOT=0
+_md5_=267c1b67ff22d04b8f7a31bc07233856
diff --git a/metadata/md5-cache/virtual/wpa_supplicant-1 b/metadata/md5-cache/virtual/wpa_supplicant-1
index 533dfef..14ab61e 100644
--- a/metadata/md5-cache/virtual/wpa_supplicant-1
+++ b/metadata/md5-cache/virtual/wpa_supplicant-1
@@ -3,6 +3,7 @@
 DESCRIPTION=Virtual to select between different wpa_supplicant revisions
 EAPI=7
 KEYWORDS=*
+LICENSE=metapackage
 RDEPEND=net-wireless/wpa_supplicant-2_9:=[dbus] !net-wireless/wpa_supplicant-2_8 !net-wireless/wpa_supplicant
 SLOT=0
-_md5_=03948e6dc8bddb324cd9cd23b0eac43e
+_md5_=6866e2abc525ee4f475ec7ea6e80ea5b
diff --git a/metadata/md5-cache/virtual/wpa_supplicant-1-r2 b/metadata/md5-cache/virtual/wpa_supplicant-1-r2
deleted file mode 100644
index 533dfef..0000000
--- a/metadata/md5-cache/virtual/wpa_supplicant-1-r2
+++ /dev/null
@@ -1,8 +0,0 @@
-DEFINED_PHASES=-
-DEPEND=net-wireless/wpa_supplicant-2_9:=[dbus] !net-wireless/wpa_supplicant-2_8 !net-wireless/wpa_supplicant
-DESCRIPTION=Virtual to select between different wpa_supplicant revisions
-EAPI=7
-KEYWORDS=*
-RDEPEND=net-wireless/wpa_supplicant-2_9:=[dbus] !net-wireless/wpa_supplicant-2_8 !net-wireless/wpa_supplicant
-SLOT=0
-_md5_=03948e6dc8bddb324cd9cd23b0eac43e
diff --git a/metadata/md5-cache/virtual/wpa_supplicant-1-r3 b/metadata/md5-cache/virtual/wpa_supplicant-1-r3
new file mode 100644
index 0000000..14ab61e
--- /dev/null
+++ b/metadata/md5-cache/virtual/wpa_supplicant-1-r3
@@ -0,0 +1,9 @@
+DEFINED_PHASES=-
+DEPEND=net-wireless/wpa_supplicant-2_9:=[dbus] !net-wireless/wpa_supplicant-2_8 !net-wireless/wpa_supplicant
+DESCRIPTION=Virtual to select between different wpa_supplicant revisions
+EAPI=7
+KEYWORDS=*
+LICENSE=metapackage
+RDEPEND=net-wireless/wpa_supplicant-2_9:=[dbus] !net-wireless/wpa_supplicant-2_8 !net-wireless/wpa_supplicant
+SLOT=0
+_md5_=6866e2abc525ee4f475ec7ea6e80ea5b
diff --git a/metadata/md5-cache/x11-apps/igt-gpu-tools-1.25-r2 b/metadata/md5-cache/x11-apps/igt-gpu-tools-1.25-r2
deleted file mode 100644
index 40a19e5..0000000
--- a/metadata/md5-cache/x11-apps/igt-gpu-tools-1.25-r2
+++ /dev/null
@@ -1,17 +0,0 @@
-BDEPEND=>=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git
-DEFINED_PHASES=compile configure info install prepare setup test unpack
-DEPEND=dev-libs/elfutils dev-libs/glib:2 sys-apps/kmod:= sys-libs/llvm-libunwind:= sys-libs/zlib:= sys-process/procps:= virtual/libudev:= >=x11-libs/cairo-1.12.0[X?] >=x11-libs/libdrm-2.4.82[video_cards_amdgpu?,video_cards_intel?,video_cards_nouveau?] >=x11-libs/libpciaccess-0.10 x11-libs/pixman chamelium? ( dev-libs/xmlrpc-c[curl] sci-libs/gsl media-libs/alsa-lib:= ) overlay? ( >=x11-libs/libXrandr-1.3 xv? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXv ) ) runner? ( dev-libs/json-c:= ) unwind? ( sys-libs/libunwind ) valgrind? ( dev-util/valgrind ) doc? ( >=dev-util/gtk-doc-1.25-r1 ) man? ( dev-python/docutils ) overlay? ( >=dev-util/peg-0.1.18 x11-base/xorg-proto ) video_cards_intel? ( sys-devel/bison sys-devel/flex )
-DESCRIPTION=Intel GPU userland tools
-EAPI=7
-HOMEPAGE=https://01.org/linuxgraphics https://gitlab.freedesktop.org/drm/igt-gpu-tools
-IUSE=chamelium doc man overlay runner tests unwind valgrind video_cards_amdgpu video_cards_intel video_cards_nouveau X xv cros_host cros_workon_tree_3aff21700e194b385c800f63c88e8a381763ecce
-KEYWORDS=*
-LICENSE=MIT
-PROPERTIES=live
-RDEPEND=dev-libs/elfutils dev-libs/glib:2 sys-apps/kmod:= sys-libs/llvm-libunwind:= sys-libs/zlib:= sys-process/procps:= virtual/libudev:= >=x11-libs/cairo-1.12.0[X?] >=x11-libs/libdrm-2.4.82[video_cards_amdgpu?,video_cards_intel?,video_cards_nouveau?] >=x11-libs/libpciaccess-0.10 x11-libs/pixman chamelium? ( dev-libs/xmlrpc-c[curl] sci-libs/gsl media-libs/alsa-lib:= ) overlay? ( >=x11-libs/libXrandr-1.3 xv? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXv ) ) runner? ( dev-libs/json-c:= ) unwind? ( sys-libs/libunwind ) valgrind? ( dev-util/valgrind )
-REQUIRED_USE=|| ( video_cards_amdgpu video_cards_intel video_cards_nouveau ) overlay? ( video_cards_intel || ( X xv ) ) doc? ( tests )
-RESTRICT=test
-SLOT=0
-SRC_URI=https://www.x.org/releases/individual/app/igt-gpu-tools-1.25.tar.xz
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=35762900a499f20a899fe026b8bdbec1
diff --git a/metadata/md5-cache/x11-apps/igt-gpu-tools-1.25-r7 b/metadata/md5-cache/x11-apps/igt-gpu-tools-1.25-r7
new file mode 100644
index 0000000..3cc0f41
--- /dev/null
+++ b/metadata/md5-cache/x11-apps/igt-gpu-tools-1.25-r7
@@ -0,0 +1,17 @@
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=dev-libs/elfutils dev-libs/glib:2 sys-apps/kmod:= sys-libs/llvm-libunwind:= sys-libs/zlib:= sys-process/procps:= virtual/libudev:= >=x11-libs/cairo-1.12.0[X?] >=x11-libs/libdrm-2.4.82[video_cards_amdgpu?,video_cards_intel?,video_cards_nouveau?] >=x11-libs/libpciaccess-0.10 x11-libs/pixman chamelium? ( dev-libs/xmlrpc-c[curl] sci-libs/gsl media-libs/alsa-lib:= ) overlay? ( >=x11-libs/libXrandr-1.3 xv? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXv ) ) runner? ( dev-libs/json-c:= ) unwind? ( sys-libs/libunwind ) valgrind? ( dev-util/valgrind ) doc? ( >=dev-util/gtk-doc-1.25-r1 ) man? ( dev-python/docutils ) overlay? ( >=dev-util/peg-0.1.18 x11-base/xorg-proto ) video_cards_intel? ( sys-devel/bison sys-devel/flex )
+DESCRIPTION=Intel GPU userland tools
+EAPI=7
+HOMEPAGE=https://01.org/linuxgraphics https://gitlab.freedesktop.org/drm/igt-gpu-tools
+IUSE=chamelium doc man overlay runner tests unwind valgrind video_cards_amdgpu video_cards_intel video_cards_nouveau video_cards_msm X xv cros_host cros_workon_tree_79e9b31715154f1cfb9bc5e1a2bbc8ec4d5af188
+KEYWORDS=*
+LICENSE=MIT
+PROPERTIES=live
+RDEPEND=dev-libs/elfutils dev-libs/glib:2 sys-apps/kmod:= sys-libs/llvm-libunwind:= sys-libs/zlib:= sys-process/procps:= virtual/libudev:= >=x11-libs/cairo-1.12.0[X?] >=x11-libs/libdrm-2.4.82[video_cards_amdgpu?,video_cards_intel?,video_cards_nouveau?] >=x11-libs/libpciaccess-0.10 x11-libs/pixman chamelium? ( dev-libs/xmlrpc-c[curl] sci-libs/gsl media-libs/alsa-lib:= ) overlay? ( >=x11-libs/libXrandr-1.3 xv? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXv ) ) runner? ( dev-libs/json-c:= ) unwind? ( sys-libs/libunwind ) valgrind? ( dev-util/valgrind )
+REQUIRED_USE=|| ( video_cards_amdgpu video_cards_intel video_cards_nouveau video_cards_msm ) overlay? ( video_cards_intel || ( X xv ) ) doc? ( tests )
+RESTRICT=test
+SLOT=0
+SRC_URI=https://www.x.org/releases/individual/app/igt-gpu-tools-1.25.tar.xz
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=cb63c4077da2be4ffb106910c74ae639
diff --git a/metadata/md5-cache/x11-apps/igt-gpu-tools-9999 b/metadata/md5-cache/x11-apps/igt-gpu-tools-9999
index ae93307..089a024 100644
--- a/metadata/md5-cache/x11-apps/igt-gpu-tools-9999
+++ b/metadata/md5-cache/x11-apps/igt-gpu-tools-9999
@@ -1,16 +1,16 @@
-BDEPEND=>=dev-vcs/git-1.8.2.1[curl] >=dev-util/meson-0.48.2 >=dev-util/ninja-1.7.2 dev-vcs/git
+BDEPEND=>=dev-vcs/git-1.8.2.1[curl] >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
 DEFINED_PHASES=compile configure info install prepare setup test unpack
 DEPEND=dev-libs/elfutils dev-libs/glib:2 sys-apps/kmod:= sys-libs/llvm-libunwind:= sys-libs/zlib:= sys-process/procps:= virtual/libudev:= >=x11-libs/cairo-1.12.0[X?] >=x11-libs/libdrm-2.4.82[video_cards_amdgpu?,video_cards_intel?,video_cards_nouveau?] >=x11-libs/libpciaccess-0.10 x11-libs/pixman chamelium? ( dev-libs/xmlrpc-c[curl] sci-libs/gsl media-libs/alsa-lib:= ) overlay? ( >=x11-libs/libXrandr-1.3 xv? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXv ) ) runner? ( dev-libs/json-c:= ) unwind? ( sys-libs/libunwind ) valgrind? ( dev-util/valgrind ) doc? ( >=dev-util/gtk-doc-1.25-r1 ) man? ( dev-python/docutils ) overlay? ( >=dev-util/peg-0.1.18 x11-base/xorg-proto ) video_cards_intel? ( sys-devel/bison sys-devel/flex )
 DESCRIPTION=Intel GPU userland tools
 EAPI=7
 HOMEPAGE=https://01.org/linuxgraphics https://gitlab.freedesktop.org/drm/igt-gpu-tools
-IUSE=chamelium doc man overlay runner tests unwind valgrind video_cards_amdgpu video_cards_intel video_cards_nouveau X xv cros_host cros_workon_tree_
+IUSE=chamelium doc man overlay runner tests unwind valgrind video_cards_amdgpu video_cards_intel video_cards_nouveau video_cards_msm X xv cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=MIT
 PROPERTIES=live live
 RDEPEND=dev-libs/elfutils dev-libs/glib:2 sys-apps/kmod:= sys-libs/llvm-libunwind:= sys-libs/zlib:= sys-process/procps:= virtual/libudev:= >=x11-libs/cairo-1.12.0[X?] >=x11-libs/libdrm-2.4.82[video_cards_amdgpu?,video_cards_intel?,video_cards_nouveau?] >=x11-libs/libpciaccess-0.10 x11-libs/pixman chamelium? ( dev-libs/xmlrpc-c[curl] sci-libs/gsl media-libs/alsa-lib:= ) overlay? ( >=x11-libs/libXrandr-1.3 xv? ( x11-libs/libX11 x11-libs/libXext x11-libs/libXv ) ) runner? ( dev-libs/json-c:= ) unwind? ( sys-libs/libunwind ) valgrind? ( dev-util/valgrind )
-REQUIRED_USE=|| ( video_cards_amdgpu video_cards_intel video_cards_nouveau ) overlay? ( video_cards_intel || ( X xv ) ) doc? ( tests )
+REQUIRED_USE=|| ( video_cards_amdgpu video_cards_intel video_cards_nouveau video_cards_msm ) overlay? ( video_cards_intel || ( X xv ) ) doc? ( tests )
 RESTRICT=test
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	meson	b5ee7a05833ab91225acf30ffdeed006	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=35762900a499f20a899fe026b8bdbec1
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=cb63c4077da2be4ffb106910c74ae639
diff --git a/metadata/md5-cache/x11-drivers/opengles-headers-0.0.1-r34 b/metadata/md5-cache/x11-drivers/opengles-headers-0.0.1-r34
deleted file mode 100644
index ad15a7e..0000000
--- a/metadata/md5-cache/x11-drivers/opengles-headers-0.0.1-r34
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-vcs/git
-DEFINED_PHASES=info install setup unpack
-DEPEND=x11-libs/libX11:=
-DESCRIPTION=OpenGL|ES headers.
-EAPI=7
-HOMEPAGE=http://www.khronos.org/opengles/2_X/
-IUSE=cros_host cros_workon_tree_e9f61c485eaea8f4658b885e17c2117cc56831e2
-KEYWORDS=*
-LICENSE=SGI-B-2.0
-PROPERTIES=live
-RDEPEND=x11-libs/libX11:=
-SLOT=0/0.0.1-r34
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=b6b4b4324809d332769b8c9569978aac
diff --git a/metadata/md5-cache/x11-drivers/opengles-headers-0.0.1-r36 b/metadata/md5-cache/x11-drivers/opengles-headers-0.0.1-r36
new file mode 100644
index 0000000..cce8f12
--- /dev/null
+++ b/metadata/md5-cache/x11-drivers/opengles-headers-0.0.1-r36
@@ -0,0 +1,14 @@
+BDEPEND=dev-vcs/git
+DEFINED_PHASES=info install setup unpack
+DEPEND=x11-libs/libX11:= >=dev-util/spirv-headers-1.5.4.1
+DESCRIPTION=OpenGL|ES headers.
+EAPI=7
+HOMEPAGE=http://www.khronos.org/opengles/2_X/
+IUSE=cros_host cros_workon_tree_1de25b0683139e5255fcf749bc31bcb20dbc6533
+KEYWORDS=*
+LICENSE=SGI-B-2.0
+PROPERTIES=live
+RDEPEND=x11-libs/libX11:=
+SLOT=0/0.0.1-r36
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=65072d2dcffaf87f0f9e47da5933c1fa
diff --git a/metadata/md5-cache/x11-drivers/opengles-headers-9999 b/metadata/md5-cache/x11-drivers/opengles-headers-9999
index 8a66387..9f996b6 100644
--- a/metadata/md5-cache/x11-drivers/opengles-headers-9999
+++ b/metadata/md5-cache/x11-drivers/opengles-headers-9999
@@ -1,6 +1,6 @@
 BDEPEND=dev-vcs/git
 DEFINED_PHASES=info install setup unpack
-DEPEND=x11-libs/libX11:=
+DEPEND=x11-libs/libX11:= >=dev-util/spirv-headers-1.5.4.1
 DESCRIPTION=OpenGL|ES headers.
 EAPI=7
 HOMEPAGE=http://www.khronos.org/opengles/2_X/
@@ -10,5 +10,5 @@
 PROPERTIES=live
 RDEPEND=x11-libs/libX11:=
 SLOT=0/9999
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=d9e9668ba4e52985c564555c32dbde54
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	multilib	2477ebe553d3e4d2c606191fe6c33602	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=4a8712b4b2742be2fc803085f0b4a0dd
diff --git a/metadata/md5-cache/x11-drivers/touchpad-tests-0.0.1-r190 b/metadata/md5-cache/x11-drivers/touchpad-tests-0.0.1-r190
deleted file mode 100644
index 04c6769..0000000
--- a/metadata/md5-cache/x11-drivers/touchpad-tests-0.0.1-r190
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=info install setup unpack
-DEPEND=chromeos-base/gestures chromeos-base/libevdev app-misc/utouch-evemu x11-base/xorg-proto
-DESCRIPTION=Chromium OS multitouch driver regression tests
-EAPI=6
-HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/touchpad-tests
-IUSE=cros_host cros_workon_tree_8352ad90ea57e4909e6e8aa48a42aefff863a50b
-KEYWORDS=*
-LICENSE=BSD-Google
-PROPERTIES=live
-RDEPEND=chromeos-base/gestures chromeos-base/libevdev app-misc/utouch-evemu x11-base/xorg-proto
-SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=0de0f18ea21c0f11be195696812cb09e
diff --git a/metadata/md5-cache/x11-drivers/touchpad-tests-0.0.1-r192 b/metadata/md5-cache/x11-drivers/touchpad-tests-0.0.1-r192
new file mode 100644
index 0000000..aaf9fd7
--- /dev/null
+++ b/metadata/md5-cache/x11-drivers/touchpad-tests-0.0.1-r192
@@ -0,0 +1,13 @@
+DEFINED_PHASES=info install setup unpack
+DEPEND=chromeos-base/gestures chromeos-base/libevdev:= app-misc/utouch-evemu x11-base/xorg-proto
+DESCRIPTION=Chromium OS multitouch driver regression tests
+EAPI=6
+HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/touchpad-tests
+IUSE=cros_host cros_workon_tree_abc8b7fceeeae9a07ef3825b2b026543956d2a47
+KEYWORDS=*
+LICENSE=BSD-Google
+PROPERTIES=live
+RDEPEND=chromeos-base/gestures chromeos-base/libevdev:= app-misc/utouch-evemu x11-base/xorg-proto
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=75f1f1df346d64bc45be629ca930e48f
diff --git a/metadata/md5-cache/x11-drivers/touchpad-tests-9999 b/metadata/md5-cache/x11-drivers/touchpad-tests-9999
index 73b40fe..c397ce6 100644
--- a/metadata/md5-cache/x11-drivers/touchpad-tests-9999
+++ b/metadata/md5-cache/x11-drivers/touchpad-tests-9999
@@ -1,5 +1,5 @@
 DEFINED_PHASES=info install setup unpack
-DEPEND=chromeos-base/gestures chromeos-base/libevdev app-misc/utouch-evemu x11-base/xorg-proto
+DEPEND=chromeos-base/gestures chromeos-base/libevdev:= app-misc/utouch-evemu x11-base/xorg-proto
 DESCRIPTION=Chromium OS multitouch driver regression tests
 EAPI=6
 HOMEPAGE=https://chromium.googlesource.com/chromiumos/platform/touchpad-tests
@@ -7,7 +7,7 @@
 KEYWORDS=~*
 LICENSE=BSD-Google
 PROPERTIES=live
-RDEPEND=chromeos-base/gestures chromeos-base/libevdev app-misc/utouch-evemu x11-base/xorg-proto
+RDEPEND=chromeos-base/gestures chromeos-base/libevdev:= app-misc/utouch-evemu x11-base/xorg-proto
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=1c5df92d8a0344a85a0b5517aa903934
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_md5_=6c5232e2d97df9f31991614c361a5c12
diff --git a/metadata/md5-cache/x11-libs/arc-libdrm-2.4.100-r1 b/metadata/md5-cache/x11-libs/arc-libdrm-2.4.100-r1
deleted file mode 100644
index a2bf179..0000000
--- a/metadata/md5-cache/x11-libs/arc-libdrm-2.4.100-r1
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst postrm prepare setup test unpack
-DEPEND=>=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 x86-interix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) ppc-aix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) x86-winnt? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) virtual/pkgconfig sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=X.Org libdrm library
-EAPI=5
-HOMEPAGE=http://dri.freedesktop.org/
-IUSE=video_cards_amdgpu video_cards_exynos video_cards_freedreno video_cards_nouveau video_cards_omap video_cards_radeon video_cards_vc4 video_cards_vmware libkms manpages +udev abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 static-libs cros_host cros_workon_tree_f691fb10ddd5ffefb25682ff89f6f978fe91ec02 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
-KEYWORDS=*
-LICENSE=|| ( MIT X )
-PROPERTIES=live
-RDEPEND=abi_x86_32? ( !app-emulation/emul-linux-x86-xlibs[-abi_x86_32(-)] )
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
-RESTRICT=test
-SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	autotools	d0e5375d47f4c809f406eb892e531513	autotools-multilib	037c4046d25f29e78dd44dccabd5d66b	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xorg-2	50dd640df6d0554c259daa81531ed3ee
-_md5_=45bc438612c587d19db1b0a0c1475b1a
diff --git a/metadata/md5-cache/x11-libs/arc-libdrm-2.4.105-r1 b/metadata/md5-cache/x11-libs/arc-libdrm-2.4.105-r1
new file mode 100644
index 0000000..cb1f263
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/arc-libdrm-2.4.105-r1
@@ -0,0 +1,15 @@
+BDEPEND=dev-vcs/git >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+DESCRIPTION=X.Org libdrm library
+EAPI=7
+HOMEPAGE=http://dri.freedesktop.org/
+IUSE=video_cards_amdgpu video_cards_exynos video_cards_freedreno video_cards_nouveau video_cards_omap video_cards_radeon video_cards_vc4 video_cards_vmware libkms manpages +udev cros_host cros_workon_tree_7d7f7823d7a6c217122b4402ed8c8b77bdec4952 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
+KEYWORDS=*
+LICENSE=|| ( MIT X )
+PROPERTIES=live
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
+RESTRICT=test
+SLOT=0
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=804b49a51cf35a0d6b7b3082263c6fe8
diff --git a/metadata/md5-cache/x11-libs/arc-libdrm-9999 b/metadata/md5-cache/x11-libs/arc-libdrm-9999
index 42a525e..3c2f08c 100644
--- a/metadata/md5-cache/x11-libs/arc-libdrm-9999
+++ b/metadata/md5-cache/x11-libs/arc-libdrm-9999
@@ -1,15 +1,15 @@
-DEFINED_PHASES=compile configure info install postinst postrm prepare setup test unpack
-DEPEND=>=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 x86-interix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) ppc-aix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) x86-winnt? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 virtual/pkgconfig sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+BDEPEND=dev-vcs/git >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure info install setup test unpack
+DEPEND=sys-devel/arc-build[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
 DESCRIPTION=X.Org libdrm library
-EAPI=5
+EAPI=7
 HOMEPAGE=http://dri.freedesktop.org/
-IUSE=video_cards_amdgpu video_cards_exynos video_cards_nouveau video_cards_omap video_cards_radeon video_cards_vc4 video_cards_vmware libkms manpages +udev abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 static-libs cros_host cros_workon_tree_ arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-master
+IUSE=video_cards_amdgpu video_cards_exynos video_cards_freedreno video_cards_nouveau video_cards_omap video_cards_radeon video_cards_vc4 video_cards_vmware libkms manpages +udev cros_host cros_workon_tree_ abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 arcpp arcvm cheets android-container-pi android-vm-rvc android-vm-sc android-vm-master
 KEYWORDS=~*
 LICENSE=|| ( MIT X )
-PROPERTIES=live live
-RDEPEND=abi_x86_32? ( !app-emulation/emul-linux-x86-xlibs[-abi_x86_32(-)] )
-REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-master )
+PROPERTIES=live
+REQUIRED_USE=cheets? ( || ( arcpp arcvm ) arcpp? ( ^^ ( android-container-pi ) ) arcvm? ( ^^ ( android-vm-rvc android-vm-sc android-vm-master ) ) ) !cheets? ( !arcpp !arcvm ) !arcpp? ( !android-container-pi ) !arcvm? ( !android-vm-rvc !android-vm-sc !android-vm-master )
 RESTRICT=test
 SLOT=0
-_eclasses_=arc-build	33b7353a3e50d1167f04d8c92f58ab0a	arc-build-constants	8e0737c700e22ae5b27a96091af3e368	autotools	d0e5375d47f4c809f406eb892e531513	autotools-multilib	037c4046d25f29e78dd44dccabd5d66b	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xorg-2	50dd640df6d0554c259daa81531ed3ee
-_md5_=656a0d5aa40f4628b970c9eee354f9e7
+_eclasses_=arc-build	3dd538cae2e82e9cdd7e41df567e1169	arc-build-constants	7fdd7eed9abc3f4a7cb7496a49dca63f	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=804b49a51cf35a0d6b7b3082263c6fe8
diff --git a/metadata/md5-cache/x11-libs/cairo-1.17.4 b/metadata/md5-cache/x11-libs/cairo-1.17.4
new file mode 100644
index 0000000..d716dad
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/cairo-1.17.4
@@ -0,0 +1,16 @@
+BDEPEND=virtual/pkgconfig >=sys-devel/libtool-2 >=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=>=dev-libs/lzo-2.06-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/fontconfig-2.10.92[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/freetype-2.5.0.1:2[png,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/libpng-1.6.10:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/binutils-libs:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/pixman-0.32.4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] gles2-only? ( >=media-libs/mesa-9.1.6[gles2,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) glib? ( >=dev-libs/glib-2.34.3:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) opengl? ( >=media-libs/mesa-9.1.6[egl,X(+),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( >=x11-libs/libXrender-0.9.8[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libXext-1.3.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libX11-1.6.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libxcb-1.9.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-base/xorg-proto ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=A vector graphics library with cross-device output support
+EAPI=7
+HOMEPAGE=https://www.cairographics.org/ https://gitlab.freedesktop.org/cairo/cairo
+IUSE=X aqua debug gles2-only +glib opengl static-libs +svg utils valgrind abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( LGPL-2.1 MPL-1.1 )
+RDEPEND=>=dev-libs/lzo-2.06-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/fontconfig-2.10.92[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/freetype-2.5.0.1:2[png,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/libpng-1.6.10:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/binutils-libs:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/pixman-0.32.4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] gles2-only? ( >=media-libs/mesa-9.1.6[gles2,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) glib? ( >=dev-libs/glib-2.34.3:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) opengl? ( >=media-libs/mesa-9.1.6[egl,X(+),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( >=x11-libs/libXrender-0.9.8[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libXext-1.3.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libX11-1.6.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libxcb-1.9.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+REQUIRED_USE=gles2-only? ( !opengl )
+RESTRICT=test
+SLOT=0
+SRC_URI=https://www.cairographics.org/releases/cairo-1.17.4.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d901d08dae83ad717b2bc7abb1490161
diff --git a/metadata/md5-cache/x11-libs/cairo-1.17.4-r2 b/metadata/md5-cache/x11-libs/cairo-1.17.4-r2
new file mode 100644
index 0000000..d716dad
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/cairo-1.17.4-r2
@@ -0,0 +1,16 @@
+BDEPEND=virtual/pkgconfig >=sys-devel/libtool-2 >=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=>=dev-libs/lzo-2.06-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/fontconfig-2.10.92[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/freetype-2.5.0.1:2[png,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/libpng-1.6.10:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/binutils-libs:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/pixman-0.32.4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] gles2-only? ( >=media-libs/mesa-9.1.6[gles2,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) glib? ( >=dev-libs/glib-2.34.3:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) opengl? ( >=media-libs/mesa-9.1.6[egl,X(+),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( >=x11-libs/libXrender-0.9.8[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libXext-1.3.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libX11-1.6.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libxcb-1.9.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-base/xorg-proto ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=A vector graphics library with cross-device output support
+EAPI=7
+HOMEPAGE=https://www.cairographics.org/ https://gitlab.freedesktop.org/cairo/cairo
+IUSE=X aqua debug gles2-only +glib opengl static-libs +svg utils valgrind abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=|| ( LGPL-2.1 MPL-1.1 )
+RDEPEND=>=dev-libs/lzo-2.06-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/fontconfig-2.10.92[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/freetype-2.5.0.1:2[png,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/libpng-1.6.10:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] sys-libs/binutils-libs:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=sys-libs/zlib-1.2.8-r1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/pixman-0.32.4[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] gles2-only? ( >=media-libs/mesa-9.1.6[gles2,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) glib? ( >=dev-libs/glib-2.34.3:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) opengl? ( >=media-libs/mesa-9.1.6[egl,X(+),abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( >=x11-libs/libXrender-0.9.8[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libXext-1.3.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libX11-1.6.2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libxcb-1.9.1[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+REQUIRED_USE=gles2-only? ( !opengl )
+RESTRICT=test
+SLOT=0
+SRC_URI=https://www.cairographics.org/releases/cairo-1.17.4.tar.xz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=d901d08dae83ad717b2bc7abb1490161
diff --git a/metadata/md5-cache/x11-libs/gdk-pixbuf-2.36.12 b/metadata/md5-cache/x11-libs/gdk-pixbuf-2.36.12
deleted file mode 100644
index 10d66a0..0000000
--- a/metadata/md5-cache/x11-libs/gdk-pixbuf-2.36.12
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst postrm preinst prepare test
-DEPEND=>=dev-libs/glib-2.48.0:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/libpng-1.4:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] introspection? ( >=dev-libs/gobject-introspection-0.9.3:= ) jpeg? ( virtual/jpeg:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) jpeg2k? ( media-libs/jasper:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tiff? ( >=media-libs/tiff-3.9.2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-util/glib-utils >=dev-util/gtk-doc-am-1.20 >=sys-devel/gettext-0.19 virtual/pkgconfig >=app-portage/elt-patches-20170815 app-arch/xz-utils dev-util/desktop-file-utils x11-misc/shared-mime-info !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Image loading library for GTK+
-EAPI=6
-HOMEPAGE=https://git.gnome.org/browse/gdk-pixbuf
-IUSE=X debug +introspection jpeg jpeg2k tiff test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=LGPL-2+
-RDEPEND=>=dev-libs/glib-2.48.0:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/libpng-1.4:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] introspection? ( >=dev-libs/gobject-introspection-0.9.3:= ) jpeg? ( virtual/jpeg:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) jpeg2k? ( media-libs/jasper:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tiff? ( >=media-libs/tiff-3.9.2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<gnome-base/gail-1000 !<gnome-base/librsvg-2.31.0 !<x11-libs/gtk+-2.21.3:2 !<x11-libs/gtk+-2.90.4:3
-SLOT=2
-SRC_URI=mirror://gnome/sources/gdk-pixbuf/2.36/gdk-pixbuf-2.36.12.tar.xz test? ( https://git.gnome.org/browse/gdk-pixbuf/plain/tests/bug753605-atsize.jpg?h=2.36.12 -> gdk-pixbuf-2.36.12-bug753605-atsize.jpg )
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnome.org	532d56d07b9eace4831aaa817d2b756a	gnome2	acac536f2c3bbcd312ac3faaa3e55e40	gnome2-utils	893e828f0f25f070f0b38d20c83c7670	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72	xdg	c7ba313ea1eaf266f95cc6235f7d6a07	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=ebd72d42ede3182ae457e123158a048c
diff --git a/metadata/md5-cache/x11-libs/gdk-pixbuf-2.36.12-r2 b/metadata/md5-cache/x11-libs/gdk-pixbuf-2.36.12-r2
deleted file mode 100644
index 10d66a0..0000000
--- a/metadata/md5-cache/x11-libs/gdk-pixbuf-2.36.12-r2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst postrm preinst prepare test
-DEPEND=>=dev-libs/glib-2.48.0:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/libpng-1.4:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] introspection? ( >=dev-libs/gobject-introspection-0.9.3:= ) jpeg? ( virtual/jpeg:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) jpeg2k? ( media-libs/jasper:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tiff? ( >=media-libs/tiff-3.9.2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) dev-util/glib-utils >=dev-util/gtk-doc-am-1.20 >=sys-devel/gettext-0.19 virtual/pkgconfig >=app-portage/elt-patches-20170815 app-arch/xz-utils dev-util/desktop-file-utils x11-misc/shared-mime-info !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=Image loading library for GTK+
-EAPI=6
-HOMEPAGE=https://git.gnome.org/browse/gdk-pixbuf
-IUSE=X debug +introspection jpeg jpeg2k tiff test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 asan coverage fuzzer msan tsan ubsan
-KEYWORDS=*
-LICENSE=LGPL-2+
-RDEPEND=>=dev-libs/glib-2.48.0:2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=media-libs/libpng-1.4:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] introspection? ( >=dev-libs/gobject-introspection-0.9.3:= ) jpeg? ( virtual/jpeg:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) jpeg2k? ( media-libs/jasper:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) tiff? ( >=media-libs/tiff-3.9.2:0=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) X? ( x11-libs/libX11[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<gnome-base/gail-1000 !<gnome-base/librsvg-2.31.0 !<x11-libs/gtk+-2.21.3:2 !<x11-libs/gtk+-2.90.4:3
-SLOT=2
-SRC_URI=mirror://gnome/sources/gdk-pixbuf/2.36/gdk-pixbuf-2.36.12.tar.xz test? ( https://git.gnome.org/browse/gdk-pixbuf/plain/tests/bug753605-atsize.jpg?h=2.36.12 -> gdk-pixbuf-2.36.12-bug753605-atsize.jpg )
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	cros-sanitizers	57b514c0d35fe88c97590a2a19e95e4d	desktop	b1d22ac8bdd4679ab79c71aca235009d	eapi7-ver	756b3f27d8e46131d5cf3c51bd876446	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	gnome.org	532d56d07b9eace4831aaa817d2b756a	gnome2	acac536f2c3bbcd312ac3faaa3e55e40	gnome2-utils	893e828f0f25f070f0b38d20c83c7670	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	versionator	26ca8a8bd95d6a74122c08ba98a4ee72	xdg	c7ba313ea1eaf266f95cc6235f7d6a07	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=ebd72d42ede3182ae457e123158a048c
diff --git a/metadata/md5-cache/x11-libs/libdrm-2.4.100-r4 b/metadata/md5-cache/x11-libs/libdrm-2.4.100-r4
deleted file mode 100644
index 00f6255..0000000
--- a/metadata/md5-cache/x11-libs/libdrm-2.4.100-r4
+++ /dev/null
@@ -1,15 +0,0 @@
-DEFINED_PHASES=compile configure info install postinst postrm prepare setup test unpack
-DEPEND=dev-libs/libpthread-stubs udev? ( virtual/udev ) video_cards_amdgpu? ( dev-util/cunit ) video_cards_intel? ( >=x11-libs/libpciaccess-0.10 ) !<x11-libs/libdrm-tests-2.4.58-r3 >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 x86-interix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) ppc-aix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) x86-winnt? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) virtual/pkgconfig
-DESCRIPTION=X.Org libdrm library
-EAPI=5
-HOMEPAGE=http://dri.freedesktop.org/
-IUSE=video_cards_amdgpu video_cards_exynos video_cards_freedreno video_cards_intel video_cards_nouveau video_cards_omap video_cards_radeon video_cards_vc4 video_cards_vmware libkms manpages +udev static-libs cros_host cros_workon_tree_f691fb10ddd5ffefb25682ff89f6f978fe91ec02
-KEYWORDS=*
-LICENSE=|| ( MIT X )
-PROPERTIES=live
-RDEPEND=dev-libs/libpthread-stubs udev? ( virtual/udev ) video_cards_amdgpu? ( dev-util/cunit ) video_cards_intel? ( >=x11-libs/libpciaccess-0.10 ) !<x11-libs/libdrm-tests-2.4.58-r3
-REQUIRED_USE=video_cards_exynos? ( libkms )
-RESTRICT=test
-SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xorg-2	50dd640df6d0554c259daa81531ed3ee
-_md5_=015155ff70a0a2a71277a69f98807734
diff --git a/metadata/md5-cache/x11-libs/libdrm-2.4.105-r2 b/metadata/md5-cache/x11-libs/libdrm-2.4.105-r2
new file mode 100644
index 0000000..645addc
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/libdrm-2.4.105-r2
@@ -0,0 +1,16 @@
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=dev-libs/libpthread-stubs udev? ( virtual/udev ) video_cards_amdgpu? ( dev-util/cunit ) video_cards_intel? ( >=x11-libs/libpciaccess-0.10 ) !<x11-libs/libdrm-tests-2.4.58-r3
+DESCRIPTION=X.Org libdrm library
+EAPI=7
+HOMEPAGE=http://dri.freedesktop.org/
+IUSE=video_cards_amdgpu video_cards_exynos video_cards_freedreno video_cards_intel video_cards_nouveau video_cards_omap video_cards_radeon video_cards_vc4 video_cards_vmware libkms manpages +udev cros_host cros_workon_tree_7d7f7823d7a6c217122b4402ed8c8b77bdec4952
+KEYWORDS=*
+LICENSE=|| ( MIT X )
+PROPERTIES=live
+RDEPEND=dev-libs/libpthread-stubs udev? ( virtual/udev ) video_cards_amdgpu? ( dev-util/cunit ) video_cards_intel? ( >=x11-libs/libpciaccess-0.10 ) !<x11-libs/libdrm-tests-2.4.58-r3
+REQUIRED_USE=video_cards_exynos? ( libkms )
+RESTRICT=test
+SLOT=0
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=485b35806765d5d460999f40aa4905f8
diff --git a/metadata/md5-cache/x11-libs/libdrm-9999 b/metadata/md5-cache/x11-libs/libdrm-9999
index e61c62d..7b3119b 100644
--- a/metadata/md5-cache/x11-libs/libdrm-9999
+++ b/metadata/md5-cache/x11-libs/libdrm-9999
@@ -1,15 +1,16 @@
-DEFINED_PHASES=compile configure info install postinst postrm prepare setup test unpack
-DEPEND=dev-libs/libpthread-stubs udev? ( virtual/udev ) video_cards_amdgpu? ( dev-util/cunit ) video_cards_intel? ( >=x11-libs/libpciaccess-0.10 ) !<x11-libs/libdrm-tests-2.4.58-r3 >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 x86-interix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) ppc-aix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) x86-winnt? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 virtual/pkgconfig
+BDEPEND=>=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array dev-vcs/git
+DEFINED_PHASES=compile configure info install prepare setup test unpack
+DEPEND=dev-libs/libpthread-stubs udev? ( virtual/udev ) video_cards_amdgpu? ( dev-util/cunit ) video_cards_intel? ( >=x11-libs/libpciaccess-0.10 ) !<x11-libs/libdrm-tests-2.4.58-r3
 DESCRIPTION=X.Org libdrm library
-EAPI=5
+EAPI=7
 HOMEPAGE=http://dri.freedesktop.org/
-IUSE=video_cards_amdgpu video_cards_exynos video_cards_freedreno video_cards_intel video_cards_nouveau video_cards_omap video_cards_radeon video_cards_vc4 video_cards_vmware libkms manpages +udev static-libs cros_host cros_workon_tree_
+IUSE=video_cards_amdgpu video_cards_exynos video_cards_freedreno video_cards_intel video_cards_nouveau video_cards_omap video_cards_radeon video_cards_vc4 video_cards_vmware libkms manpages +udev cros_host cros_workon_tree_
 KEYWORDS=~*
 LICENSE=|| ( MIT X )
-PROPERTIES=live live
+PROPERTIES=live
 RDEPEND=dev-libs/libpthread-stubs udev? ( virtual/udev ) video_cards_amdgpu? ( dev-util/cunit ) video_cards_intel? ( >=x11-libs/libpciaccess-0.10 ) !<x11-libs/libdrm-tests-2.4.58-r3
 REQUIRED_USE=video_cards_exynos? ( libkms )
 RESTRICT=test
 SLOT=0
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	git-r3	c8f4649ab5a3c07ee2b75b12bc446f6a	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xorg-2	50dd640df6d0554c259daa81531ed3ee
-_md5_=6598f8747ce284ffdc358f218f0b56a9
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	meson	5ec14fdbc5446b8767e87e186e3b1a52	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=485b35806765d5d460999f40aa4905f8
diff --git a/metadata/md5-cache/x11-libs/libpciaccess-0.12.902-r2 b/metadata/md5-cache/x11-libs/libpciaccess-0.12.902-r2
deleted file mode 100644
index 4d7fe33..0000000
--- a/metadata/md5-cache/x11-libs/libpciaccess-0.12.902-r2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst postrm prepare setup test unpack
-DEPEND=!<x11-base/xorg-server-1.5 zlib? ( sys-libs/zlib ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 x86-interix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) ppc-aix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) x86-winnt? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) virtual/pkgconfig
-DESCRIPTION=Library providing generic access to the PCI bus and devices
-EAPI=4
-HOMEPAGE=http://xorg.freedesktop.org/
-IUSE=minimal zlib static-libs
-KEYWORDS=*
-LICENSE=MIT
-RDEPEND=!<x11-base/xorg-server-1.5 zlib? ( sys-libs/zlib )
-SLOT=0
-SRC_URI=http://xorg.freedesktop.org/releases/individual/lib/libpciaccess-0.12.902.tar.bz2
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xorg-2	50dd640df6d0554c259daa81531ed3ee
-_md5_=918700521a873a5baf731d974e0b6c69
diff --git a/metadata/md5-cache/x11-libs/libpciaccess-0.12.902-r3 b/metadata/md5-cache/x11-libs/libpciaccess-0.12.902-r3
new file mode 100644
index 0000000..c88b655
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/libpciaccess-0.12.902-r3
@@ -0,0 +1,13 @@
+DEFINED_PHASES=compile configure install postinst postrm prepare setup test unpack
+DEPEND=!<x11-base/xorg-server-1.5 zlib? ( sys-libs/zlib ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 x86-interix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) ppc-aix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) x86-winnt? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) virtual/pkgconfig
+DESCRIPTION=Library providing generic access to the PCI bus and devices
+EAPI=4
+HOMEPAGE=http://xorg.freedesktop.org/
+IUSE=minimal zlib static-libs
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=!<x11-base/xorg-server-1.5 zlib? ( sys-libs/zlib )
+SLOT=0
+SRC_URI=http://xorg.freedesktop.org/releases/individual/lib/libpciaccess-0.12.902.tar.bz2
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xorg-2	50dd640df6d0554c259daa81531ed3ee
+_md5_=f07f9d31b2ec7c646052a741f5086398
diff --git a/metadata/md5-cache/x11-libs/libva-2.11.0 b/metadata/md5-cache/x11-libs/libva-2.11.0
new file mode 100644
index 0000000..f27dc1a
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/libva-2.11.0
@@ -0,0 +1,15 @@
+BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=>=x11-libs/libdrm-2.4.46[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Video Acceleration (VA) API for Linux
+EAPI=7
+HOMEPAGE=https://01.org/linuxmedia/vaapi
+IUSE=utils beanstalk internal intel_ihd_pavp video_cards_i965 video_cards_amdgpu video_cards_iHD abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=MIT
+PDEPEND=video_cards_i965? ( >=x11-libs/libva-intel-driver-2.0.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_iHD? ( beanstalk? ( internal? ( x11-libs/libva-intel-media-driver-pavp[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !internal? ( intel_ihd_pavp? ( x11-libs/libva-intel-media-driver-pavp[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !intel_ihd_pavp? ( ~x11-libs/libva-intel-media-driver-21.1.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) ) !beanstalk? ( ~x11-libs/libva-intel-media-driver-21.1.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) video_cards_amdgpu? ( virtual/opengles[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) utils? ( media-video/libva-utils )
+RDEPEND=>=x11-libs/libdrm-2.4.46[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+SLOT=0/2
+SRC_URI=https://github.com/intel/libva/releases/download/2.11.0/libva-2.11.0.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=bc11edfd96db86c0d7ff41aec6ba6513
diff --git a/metadata/md5-cache/x11-libs/libva-2.11.0-r1 b/metadata/md5-cache/x11-libs/libva-2.11.0-r1
new file mode 100644
index 0000000..f27dc1a
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/libva-2.11.0-r1
@@ -0,0 +1,15 @@
+BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=>=x11-libs/libdrm-2.4.46[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=Video Acceleration (VA) API for Linux
+EAPI=7
+HOMEPAGE=https://01.org/linuxmedia/vaapi
+IUSE=utils beanstalk internal intel_ihd_pavp video_cards_i965 video_cards_amdgpu video_cards_iHD abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=MIT
+PDEPEND=video_cards_i965? ( >=x11-libs/libva-intel-driver-2.0.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) video_cards_iHD? ( beanstalk? ( internal? ( x11-libs/libva-intel-media-driver-pavp[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !internal? ( intel_ihd_pavp? ( x11-libs/libva-intel-media-driver-pavp[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !intel_ihd_pavp? ( ~x11-libs/libva-intel-media-driver-21.1.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) ) !beanstalk? ( ~x11-libs/libva-intel-media-driver-21.1.3[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) video_cards_amdgpu? ( virtual/opengles[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) utils? ( media-video/libva-utils )
+RDEPEND=>=x11-libs/libdrm-2.4.46[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
+SLOT=0/2
+SRC_URI=https://github.com/intel/libva/releases/download/2.11.0/libva-2.11.0.tar.gz
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=bc11edfd96db86c0d7ff41aec6ba6513
diff --git a/metadata/md5-cache/x11-libs/libva-2.9.0 b/metadata/md5-cache/x11-libs/libva-2.9.0
deleted file mode 100644
index 5f6a7fd..0000000
--- a/metadata/md5-cache/x11-libs/libva-2.9.0
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=virtual/pkgconfig
-DEFINED_PHASES=compile configure install test
-DEPEND=>=x11-libs/libdrm-2.4.46[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=Video Acceleration (VA) API for Linux
-EAPI=7
-HOMEPAGE=https://01.org/linuxmedia/vaapi
-IUSE=utils beanstalk internal intel_ihd_pavp video_cards_intel video_cards_amdgpu video_cards_iHD abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=MIT
-PDEPEND=video_cards_intel? ( !video_cards_iHD? ( >=x11-libs/libva-intel-driver-2.0.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) video_cards_iHD? ( beanstalk? ( internal? ( x11-libs/libva-intel-media-driver-pavp[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !internal? ( intel_ihd_pavp? ( x11-libs/libva-intel-media-driver-pavp[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !intel_ihd_pavp? ( ~x11-libs/libva-intel-media-driver-20.3.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) ) !beanstalk? ( ~x11-libs/libva-intel-media-driver-20.3.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) video_cards_amdgpu? ( virtual/opengles[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) utils? ( media-video/libva-utils )
-RDEPEND=>=x11-libs/libdrm-2.4.46[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-SLOT=0/2
-SRC_URI=https://github.com/intel/libva/releases/download/2.9.0/libva-2.9.0.tar.bz2
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f30a986299e3a1b68ee8109fc6148d4b
diff --git a/metadata/md5-cache/x11-libs/libva-2.9.0-r3 b/metadata/md5-cache/x11-libs/libva-2.9.0-r3
deleted file mode 100644
index 5f6a7fd..0000000
--- a/metadata/md5-cache/x11-libs/libva-2.9.0-r3
+++ /dev/null
@@ -1,15 +0,0 @@
-BDEPEND=virtual/pkgconfig
-DEFINED_PHASES=compile configure install test
-DEPEND=>=x11-libs/libdrm-2.4.46[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-DESCRIPTION=Video Acceleration (VA) API for Linux
-EAPI=7
-HOMEPAGE=https://01.org/linuxmedia/vaapi
-IUSE=utils beanstalk internal intel_ihd_pavp video_cards_intel video_cards_amdgpu video_cards_iHD abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=MIT
-PDEPEND=video_cards_intel? ( !video_cards_iHD? ( >=x11-libs/libva-intel-driver-2.0.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) video_cards_iHD? ( beanstalk? ( internal? ( x11-libs/libva-intel-media-driver-pavp[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !internal? ( intel_ihd_pavp? ( x11-libs/libva-intel-media-driver-pavp[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !intel_ihd_pavp? ( ~x11-libs/libva-intel-media-driver-20.3.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) ) !beanstalk? ( ~x11-libs/libva-intel-media-driver-20.3.0[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) ) video_cards_amdgpu? ( virtual/opengles[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) utils? ( media-video/libva-utils )
-RDEPEND=>=x11-libs/libdrm-2.4.46[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?]
-SLOT=0/2
-SRC_URI=https://github.com/intel/libva/releases/download/2.9.0/libva-2.9.0.tar.bz2
-_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
-_md5_=f30a986299e3a1b68ee8109fc6148d4b
diff --git a/metadata/md5-cache/x11-libs/libva-intel-driver-2.4.1 b/metadata/md5-cache/x11-libs/libva-intel-driver-2.4.1
index 2a6c628..c63a246 100644
--- a/metadata/md5-cache/x11-libs/libva-intel-driver-2.4.1
+++ b/metadata/md5-cache/x11-libs/libva-intel-driver-2.4.1
@@ -1,13 +1,15 @@
+BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815
 DEFINED_PHASES=compile configure install prepare test
-DEPEND=>=x11-libs/libva-2.4.0 >=x11-libs/libdrm-2.4.52[video_cards_intel] hybrid_codec? ( media-libs/intel-hybrid-driver ) virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DEPEND=>=x11-libs/libdrm-2.4.52[video_cards_intel,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libva-2.4.0:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] hybrid_codec? ( media-libs/intel-hybrid-driver[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
 DESCRIPTION=HW video decode support for Intel integrated graphics
-EAPI=5
+EAPI=7
 HOMEPAGE=https://github.com/intel/intel-vaapi-driver
 IUSE=hybrid_codec abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
 KEYWORDS=*
 LICENSE=MIT
-RDEPEND=>=x11-libs/libva-2.4.0 >=x11-libs/libdrm-2.4.52[video_cards_intel] hybrid_codec? ( media-libs/intel-hybrid-driver )
+RDEPEND=>=x11-libs/libdrm-2.4.52[video_cards_intel,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libva-2.4.0:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] hybrid_codec? ( media-libs/intel-hybrid-driver[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+RESTRICT=test
 SLOT=0
 SRC_URI=https://github.com/intel/intel-vaapi-driver/releases/download/2.4.1/intel-vaapi-driver-2.4.1.tar.bz2
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	autotools-multilib	037c4046d25f29e78dd44dccabd5d66b	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9c1f1debdd3fe26cbfe1b818d7e3365b
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b6470a1e0b2a0bfaf3838c9d340cfdfc
diff --git a/metadata/md5-cache/x11-libs/libva-intel-driver-2.4.1-r7 b/metadata/md5-cache/x11-libs/libva-intel-driver-2.4.1-r7
deleted file mode 100644
index 2a6c628..0000000
--- a/metadata/md5-cache/x11-libs/libva-intel-driver-2.4.1-r7
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=>=x11-libs/libva-2.4.0 >=x11-libs/libdrm-2.4.52[video_cards_intel] hybrid_codec? ( media-libs/intel-hybrid-driver ) virtual/pkgconfig >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
-DESCRIPTION=HW video decode support for Intel integrated graphics
-EAPI=5
-HOMEPAGE=https://github.com/intel/intel-vaapi-driver
-IUSE=hybrid_codec abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
-KEYWORDS=*
-LICENSE=MIT
-RDEPEND=>=x11-libs/libva-2.4.0 >=x11-libs/libdrm-2.4.52[video_cards_intel] hybrid_codec? ( media-libs/intel-hybrid-driver )
-SLOT=0
-SRC_URI=https://github.com/intel/intel-vaapi-driver/releases/download/2.4.1/intel-vaapi-driver-2.4.1.tar.bz2
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	autotools-multilib	037c4046d25f29e78dd44dccabd5d66b	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
-_md5_=9c1f1debdd3fe26cbfe1b818d7e3365b
diff --git a/metadata/md5-cache/x11-libs/libva-intel-driver-2.4.1-r9 b/metadata/md5-cache/x11-libs/libva-intel-driver-2.4.1-r9
new file mode 100644
index 0000000..c63a246
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/libva-intel-driver-2.4.1-r9
@@ -0,0 +1,15 @@
+BDEPEND=virtual/pkgconfig >=app-portage/elt-patches-20170815
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=>=x11-libs/libdrm-2.4.52[video_cards_intel,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libva-2.4.0:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] hybrid_codec? ( media-libs/intel-hybrid-driver[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] ) !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4
+DESCRIPTION=HW video decode support for Intel integrated graphics
+EAPI=7
+HOMEPAGE=https://github.com/intel/intel-vaapi-driver
+IUSE=hybrid_codec abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=>=x11-libs/libdrm-2.4.52[video_cards_intel,abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] >=x11-libs/libva-2.4.0:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] hybrid_codec? ( media-libs/intel-hybrid-driver[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] )
+RESTRICT=test
+SLOT=0
+SRC_URI=https://github.com/intel/intel-vaapi-driver/releases/download/2.4.1/intel-vaapi-driver-2.4.1.tar.bz2
+_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=b6470a1e0b2a0bfaf3838c9d340cfdfc
diff --git a/metadata/md5-cache/x11-libs/libva-intel-media-driver-20.3.0 b/metadata/md5-cache/x11-libs/libva-intel-media-driver-20.3.0
deleted file mode 100644
index 4096c69..0000000
--- a/metadata/md5-cache/x11-libs/libva-intel-media-driver-20.3.0
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=>=media-libs/gmmlib-20.3.2 >=x11-libs/libva-2.9.0
-DESCRIPTION=Intel Media Driver for VAAPI (iHD)
-EAPI=7
-HOMEPAGE=https://github.com/intel/media-driver
-IUSE=ihd_cmrtlib
-KEYWORDS=*
-LICENSE=MIT BSD
-RDEPEND=>=media-libs/gmmlib-20.3.2 >=x11-libs/libva-2.9.0
-SLOT=0
-SRC_URI=https://github.com/intel/media-driver/archive/intel-media-20.3.0.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=4aa4d54c486bb2e3c1972e41f4225b0f
diff --git a/metadata/md5-cache/x11-libs/libva-intel-media-driver-20.3.0-r7 b/metadata/md5-cache/x11-libs/libva-intel-media-driver-20.3.0-r7
deleted file mode 100644
index 4096c69..0000000
--- a/metadata/md5-cache/x11-libs/libva-intel-media-driver-20.3.0-r7
+++ /dev/null
@@ -1,14 +0,0 @@
-BDEPEND=dev-util/ninja >=dev-util/cmake-3.9.6
-DEFINED_PHASES=compile configure install prepare test
-DEPEND=>=media-libs/gmmlib-20.3.2 >=x11-libs/libva-2.9.0
-DESCRIPTION=Intel Media Driver for VAAPI (iHD)
-EAPI=7
-HOMEPAGE=https://github.com/intel/media-driver
-IUSE=ihd_cmrtlib
-KEYWORDS=*
-LICENSE=MIT BSD
-RDEPEND=>=media-libs/gmmlib-20.3.2 >=x11-libs/libva-2.9.0
-SLOT=0
-SRC_URI=https://github.com/intel/media-driver/archive/intel-media-20.3.0.tar.gz
-_eclasses_=cmake-utils	91d6ef31dc426240577497cacbf2508c	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	e32940a7b2a9992ad217eccddb84d548	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
-_md5_=4aa4d54c486bb2e3c1972e41f4225b0f
diff --git a/metadata/md5-cache/x11-libs/libva-intel-media-driver-21.1.3 b/metadata/md5-cache/x11-libs/libva-intel-media-driver-21.1.3
new file mode 100644
index 0000000..8e2c49b
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/libva-intel-media-driver-21.1.3
@@ -0,0 +1,15 @@
+BDEPEND=dev-util/ninja dev-util/cmake
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=>=media-libs/gmmlib-21.1.1 >=x11-libs/libva-2.11.0
+DESCRIPTION=Intel Media Driver for VAAPI (iHD)
+EAPI=7
+HOMEPAGE=https://github.com/intel/media-driver
+IUSE=ihd_cmrtlib
+KEYWORDS=*
+LICENSE=MIT BSD
+RDEPEND=>=media-libs/gmmlib-21.1.1 >=x11-libs/libva-2.11.0
+RESTRICT=nomirror
+SLOT=0
+SRC_URI=https://github.com/intel/media-driver/archive/intel-media-21.1.3.tar.gz
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=89c99d9ddea5e4e8f523a63b4194e7b3
diff --git a/metadata/md5-cache/x11-libs/libva-intel-media-driver-21.1.3-r5 b/metadata/md5-cache/x11-libs/libva-intel-media-driver-21.1.3-r5
new file mode 100644
index 0000000..8e2c49b
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/libva-intel-media-driver-21.1.3-r5
@@ -0,0 +1,15 @@
+BDEPEND=dev-util/ninja dev-util/cmake
+DEFINED_PHASES=compile configure install prepare test
+DEPEND=>=media-libs/gmmlib-21.1.1 >=x11-libs/libva-2.11.0
+DESCRIPTION=Intel Media Driver for VAAPI (iHD)
+EAPI=7
+HOMEPAGE=https://github.com/intel/media-driver
+IUSE=ihd_cmrtlib
+KEYWORDS=*
+LICENSE=MIT BSD
+RDEPEND=>=media-libs/gmmlib-21.1.1 >=x11-libs/libva-2.11.0
+RESTRICT=nomirror
+SLOT=0
+SRC_URI=https://github.com/intel/media-driver/archive/intel-media-21.1.3.tar.gz
+_eclasses_=cmake	b22e256fd899c7e0c747e8834eff121a	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	multilib	2477ebe553d3e4d2c606191fe6c33602	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	xdg-utils	ff2ff954e6b17929574eee4efc5152ba
+_md5_=89c99d9ddea5e4e8f523a63b4194e7b3
diff --git a/metadata/md5-cache/x11-libs/libxkbcommon-0.8.2 b/metadata/md5-cache/x11-libs/libxkbcommon-0.8.2
deleted file mode 100644
index 2a3f925..0000000
--- a/metadata/md5-cache/x11-libs/libxkbcommon-0.8.2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst postrm prepare setup test unpack
-DEPEND=sys-devel/bison X? ( x11-base/xorg-proto >=x11-libs/libxcb-1.10[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,xkb] ) doc? ( app-doc/doxygen ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 x86-interix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) ppc-aix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) x86-winnt? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) virtual/pkgconfig
-DESCRIPTION=X.Org xkbcommon library
-EAPI=5
-HOMEPAGE=https://xkbcommon.org/
-IUSE=X doc test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 static-libs
-KEYWORDS=*
-LICENSE=MIT
-RDEPEND=X? ( >=x11-libs/libxcb-1.10[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,xkb] ) abi_x86_32? ( !app-emulation/emul-linux-x86-xlibs[-abi_x86_32(-)] )
-SLOT=0
-SRC_URI=https://xkbcommon.org/download/libxkbcommon-0.8.2.tar.xz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	autotools-multilib	037c4046d25f29e78dd44dccabd5d66b	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xorg-2	50dd640df6d0554c259daa81531ed3ee
-_md5_=488df193d22e3100a37d6208103424e1
diff --git a/metadata/md5-cache/x11-libs/libxkbcommon-0.8.2-r2 b/metadata/md5-cache/x11-libs/libxkbcommon-0.8.2-r2
deleted file mode 100644
index 2a3f925..0000000
--- a/metadata/md5-cache/x11-libs/libxkbcommon-0.8.2-r2
+++ /dev/null
@@ -1,13 +0,0 @@
-DEFINED_PHASES=compile configure install postinst postrm prepare setup test unpack
-DEPEND=sys-devel/bison X? ( x11-base/xorg-proto >=x11-libs/libxcb-1.10[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,xkb] ) doc? ( app-doc/doxygen ) >=app-portage/elt-patches-20170815 !<sys-devel/gettext-0.18.1.1-r3 || ( >=sys-devel/automake-1.16.1:1.16 >=sys-devel/automake-1.15.1:1.15 ) >=sys-devel/autoconf-2.69 >=sys-devel/libtool-2.4 x86-interix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) ppc-aix? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) x86-winnt? ( >=sys-devel/libtool-2.2.6a sys-devel/m4 >=x11-misc/util-macros-1.18 >=media-fonts/font-util-1.2.0 ) virtual/pkgconfig
-DESCRIPTION=X.Org xkbcommon library
-EAPI=5
-HOMEPAGE=https://xkbcommon.org/
-IUSE=X doc test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64 static-libs
-KEYWORDS=*
-LICENSE=MIT
-RDEPEND=X? ( >=x11-libs/libxcb-1.10[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,xkb] ) abi_x86_32? ( !app-emulation/emul-linux-x86-xlibs[-abi_x86_32(-)] )
-SLOT=0
-SRC_URI=https://xkbcommon.org/download/libxkbcommon-0.8.2.tar.xz
-_eclasses_=autotools	d0e5375d47f4c809f406eb892e531513	autotools-multilib	037c4046d25f29e78dd44dccabd5d66b	autotools-utils	95db0904ad0f62535e18e5ccb67cce5e	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	libtool	f143db5a74ccd9ca28c1234deffede96	ltprune	2729691420b6deeda2a90b1f1183fb55	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf	xorg-2	50dd640df6d0554c259daa81531ed3ee
-_md5_=488df193d22e3100a37d6208103424e1
diff --git a/metadata/md5-cache/x11-libs/libxkbcommon-1.0.3 b/metadata/md5-cache/x11-libs/libxkbcommon-1.0.3
new file mode 100644
index 0000000..2a28ab9
--- /dev/null
+++ b/metadata/md5-cache/x11-libs/libxkbcommon-1.0.3
@@ -0,0 +1,15 @@
+BDEPEND=sys-devel/bison doc? ( app-doc/doxygen ) test? ( || ( dev-lang/python:3.8 dev-lang/python:3.7 dev-lang/python:3.6 ) ) >=dev-util/meson-0.56.0 >=dev-util/ninja-1.8.2 dev-util/meson-format-array
+DEFINED_PHASES=compile configure install setup test
+DEPEND=X? ( >=x11-libs/libxcb-1.10:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,xkb] ) dev-libs/libxml2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] x11-misc/compose-tables X? ( x11-base/xorg-proto )
+DESCRIPTION=keymap handling library for toolkits and window systems
+EAPI=7
+HOMEPAGE=https://xkbcommon.org/ https://github.com/xkbcommon/libxkbcommon/
+IUSE=X doc static-libs test abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64 abi_arm_32 abi_arm_64
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=X? ( >=x11-libs/libxcb-1.10:=[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?,xkb] ) dev-libs/libxml2[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?,abi_arm_32(-)?,abi_arm_64(-)?] x11-misc/compose-tables
+RESTRICT=!test? ( test )
+SLOT=0
+SRC_URI=https://xkbcommon.org/download/libxkbcommon-1.0.3.tar.xz
+_eclasses_=eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	meson	5ec14fdbc5446b8767e87e186e3b1a52	multibuild	40fe59465edacd730c644ec2bc197809	multilib	2477ebe553d3e4d2c606191fe6c33602	multilib-build	1979aa0ff4d356d32507ca4650d9f37d	multilib-minimal	8bddda43703ba94d8341f4e247f97566	multiprocessing	c3cf317581e5bd068a4b851f03dd8cba	ninja-utils	132cbb376048d079b5a012f5467c4e7f	python-any-r1	54a3178500786b0a7ede4a23b7f2a6ad	python-utils-r1	157a6a7a3e99c7dbdf81acc9dd4f57cd	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a
+_md5_=1b031b43c45976f85c14ab9fb3459d1d
diff --git a/metadata/md5-cache/x11-misc/xkeyboard-config-2.27 b/metadata/md5-cache/x11-misc/xkeyboard-config-2.27
index 8a957c1..a7a058e 100644
--- a/metadata/md5-cache/x11-misc/xkeyboard-config-2.27
+++ b/metadata/md5-cache/x11-misc/xkeyboard-config-2.27
@@ -9,4 +9,4 @@
 RDEPEND=cros_host? ( !<x11-apps/xkbcomp-1.2.3 ) !<x11-libs/libX11-1.4.3
 SLOT=0
 SRC_URI=/data/xkeyboard-config/xkeyboard-config-2.27.tar.bz2
-_md5_=742c457218281f57668d021fa4f2a3f4
+_md5_=02cdbaf747f7c1d37c7af4a49489fba1
diff --git a/metadata/md5-cache/x11-misc/xkeyboard-config-2.27-r10 b/metadata/md5-cache/x11-misc/xkeyboard-config-2.27-r10
deleted file mode 100644
index 8a957c1..0000000
--- a/metadata/md5-cache/x11-misc/xkeyboard-config-2.27-r10
+++ /dev/null
@@ -1,12 +0,0 @@
-DEFINED_PHASES=configure prepare
-DEPEND=dev-util/intltool sys-devel/gettext virtual/pkgconfig
-DESCRIPTION=X keyboard configuration database
-EAPI=6
-HOMEPAGE=https://www.freedesktop.org/wiki/Software/XKeyboardConfig https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config
-IUSE=cros_host
-KEYWORDS=*
-LICENSE=MIT
-RDEPEND=cros_host? ( !<x11-apps/xkbcomp-1.2.3 ) !<x11-libs/libX11-1.4.3
-SLOT=0
-SRC_URI=/data/xkeyboard-config/xkeyboard-config-2.27.tar.bz2
-_md5_=742c457218281f57668d021fa4f2a3f4
diff --git a/metadata/md5-cache/x11-misc/xkeyboard-config-2.27-r11 b/metadata/md5-cache/x11-misc/xkeyboard-config-2.27-r11
new file mode 100644
index 0000000..a7a058e
--- /dev/null
+++ b/metadata/md5-cache/x11-misc/xkeyboard-config-2.27-r11
@@ -0,0 +1,12 @@
+DEFINED_PHASES=configure prepare
+DEPEND=dev-util/intltool sys-devel/gettext virtual/pkgconfig
+DESCRIPTION=X keyboard configuration database
+EAPI=6
+HOMEPAGE=https://www.freedesktop.org/wiki/Software/XKeyboardConfig https://gitlab.freedesktop.org/xkeyboard-config/xkeyboard-config
+IUSE=cros_host
+KEYWORDS=*
+LICENSE=MIT
+RDEPEND=cros_host? ( !<x11-apps/xkbcomp-1.2.3 ) !<x11-libs/libX11-1.4.3
+SLOT=0
+SRC_URI=/data/xkeyboard-config/xkeyboard-config-2.27.tar.bz2
+_md5_=02cdbaf747f7c1d37c7af4a49489fba1
diff --git a/metadata/md5-cache/x11-themes/cros-adapta-0.0.1-r32 b/metadata/md5-cache/x11-themes/cros-adapta-0.0.1-r32
index 8b6e170..bad7133 100644
--- a/metadata/md5-cache/x11-themes/cros-adapta-0.0.1-r32
+++ b/metadata/md5-cache/x11-themes/cros-adapta-0.0.1-r32
@@ -7,5 +7,5 @@
 LICENSE=GPL-2 CC-BY-4.0
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=69d1c1fbe765c4c62493884d50b8fabe
diff --git a/metadata/md5-cache/x11-themes/cros-adapta-9999 b/metadata/md5-cache/x11-themes/cros-adapta-9999
index 0873131..9a219b5 100644
--- a/metadata/md5-cache/x11-themes/cros-adapta-9999
+++ b/metadata/md5-cache/x11-themes/cros-adapta-9999
@@ -7,5 +7,5 @@
 LICENSE=GPL-2 CC-BY-4.0
 PROPERTIES=live
 SLOT=0
-_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	3c446e00b1c9dc41ef3953d89c0ba6d2	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
+_eclasses_=cros-constants	bf71cd1168b6441b64a8cdbc06c36eda	cros-credentials	4fd98ebbff6a1534ca9a89547e13dc92	cros-workon	ff100259492312ff6570e490bcb9a320	desktop	b1d22ac8bdd4679ab79c71aca235009d	epatch	ed88001f77c6dd0d5f09e45c1a5b480e	estack	686eaab303305a908fd57b2fd7617800	eutils	fcb2aa98e1948b835b5ae66ca52868c5	flag-o-matic	5d5921a298e95441da2f85be419894c0	git-2	d6a1d7d3b4c4fff2fba86e3f53beeb0f	ltprune	2729691420b6deeda2a90b1f1183fb55	multilib	2477ebe553d3e4d2c606191fe6c33602	preserve-libs	ef207dc62baddfddfd39a164d9797648	toolchain-funcs	2237e0dad80252483b9faa240a43ce2a	vcs-clean	2a0f74a496fa2b1552c4f3398258b7bf
 _md5_=08ccdaf7863bba37ec96d0d3d54c119a
diff --git a/net-dialup/ppp/Manifest b/net-dialup/ppp/Manifest
index 4ba1d0e..73a1151 100644
--- a/net-dialup/ppp/Manifest
+++ b/net-dialup/ppp/Manifest
@@ -1,5 +1,3 @@
-DIST ppp-2.4.7-patches-4.tar.xz 37308 BLAKE2B a53ab7c230fac7fea38910c5d9bb89b8ecb8728e899ed938292040e788b43ab8566797256329c9326ab1e6d7a02bf231df035a6e7b427f187eab554d600a7822 SHA512 f217f7272a791605101e0f1885350db8ff8b580a647e670461b81fe0026ee9050ce68b9b9635edee89ec1ada7adf000c7e6b3aa5a5dafec875ce715a9dfb84d2
-DIST ppp-2.4.7-patches-5.tar.xz 38680 BLAKE2B 56e4d3a5bc2486144791adf6ffb8a6cf0735f16fa8038a588f551d0fe7a71a15fe0d0630e4b5e3c4e0001ad161e22b660274885342807053277da14105958a69 SHA512 f8cdbb8fd4bf10eb5b4e911f1e8415f24d02297280aa6f5e63617c0533af41525bd54932eb050728320a2697efe5206d869f014bcfb8f8f3723ecefed1976adc
-DIST ppp-2.4.7-patches-6.tar.xz 39420 BLAKE2B 22754af6f266ff43f6b3cc2931ca33e9d0865ce08b8eed6961740a3a06ec69b6406c702a86e7f4a7b2f7dc9e2a751581ae58cd4398cff5e6646e53ee069e08d7 SHA512 16342010515e6d69d446656b52208e3f034c47aad8643a1e2f48fa410343f8a2e0bc8b5223b4bdc381050d9dc49a7b7ac6bc74b37380072eb91214b216d8afa2
-DIST ppp-2.4.7.tar.gz 688117 BLAKE2B e1c94ce31d98674536929d19e956e4013eb2b02c20c34e6184c0b99b50262ad1cd7fb6f4a1ed302872527a0c164af340e15ad1e2eaf191392c3f6ae2de21f5dd SHA512 e34ce24020af6a73e7a26c83c4f73a9c83fa455b7b363794dba27bf01f70368be06bff779777843949bd77f4bc9385d6ad455ea48bf8fff4e0d73cc8fef16ae2
+DIST ppp-2.4.9-patches-02.tar.xz 18056 BLAKE2B d2632811b7146214ad4cf59bee2834abda59b04c44990d5c135d85fad883371b4813e145e11a6bdff449670acda2e2ef3647c54387800f23111e975b54c5e08c SHA512 5978aa12cd669f858acf2ca9d604d9e830c4d2bd21ed1473823d4da02866d693724d0682c0d65fa4569b89d6b6e430505d307556a61f4ff927590d1357d52e93
+DIST ppp-2.4.9.tar.gz 719904 BLAKE2B 7ba3eb8c98fec5599635dbd302399617e1075f3a1df090f1a94ce2bb8a5c7631e6eea82246adc33711aba5fe95e7ba7c982e2cbf1fb0d71e45f877d9b092ffb7 SHA512 c309f8f69f534c05547cd2f66dade0e0f198ea4c2928a7e899e660280786b3e965437a67b8c5bb81c59d0fa1818b4eb7b701d2dce015a420d380422d2bca4e1a
 DIST ppp-dhcpc.tgz 33497 BLAKE2B ca59130012f007cf45af6bcfa468c112b0d521c8b11f42d42c566dd9de55bd6d6f1b1ceb83cbae18cfe79cb5cb36ba6c6858a4718915acc6987295008aca53da SHA512 aeaf791b14f5a09c0e2079072a157e65132cbff46e608bc0724e6a5827a01da934f5006e2774eb7105f83e607a52cb4987238f4385cf6f5cc86cbe305a556738
diff --git a/net-dialup/ppp/files/ppp-2.4.6-allow-non-root.patch b/net-dialup/ppp/files/ppp-2.4.6-allow-non-root.patch
deleted file mode 100644
index a68a99a..0000000
--- a/net-dialup/ppp/files/ppp-2.4.6-allow-non-root.patch
+++ /dev/null
@@ -1,57 +0,0 @@
-From 9023519ecbd6feabd02f79531e02db2949cbe41f Mon Sep 17 00:00:00 2001
-From: Micah Morton <mortonm@chromium.org>
-Date: Fri, 20 Apr 2018 11:54:26 -0700
-Subject: [PATCH] Allow pppd to start as non-root.
-
-This patch adds #ifndef macros in 2 spots in order to allow pppd to be
-spawned as a non-root user with only runtime capabilities (e.g.
-CAP_NET_{RAW/ADMIN}) instead of giving pppd full root privileges. This
-is helpful if pppd is itself spawned by a non-root user and the use of
-file permissions (e.g. setuid-root) on the pppd binary is not a
-desirable solution.
----
- pppd/main.c    | 2 ++
- pppd/options.c | 2 ++
- 2 files changed, 4 insertions(+)
-
-diff --git a/pppd/main.c b/pppd/main.c
-index 6d50d1b..e159876 100644
---- a/pppd/main.c
-+++ b/pppd/main.c
-@@ -379,6 +379,7 @@ main(argc, argv)
-     if (debug)
- 	setlogmask(LOG_UPTO(LOG_DEBUG));
- 
-+#ifndef ALLOW_START_AS_NON_ROOT
-     /*
-      * Check that we are running as root.
-      */
-@@ -387,6 +388,7 @@ main(argc, argv)
- 		     argv[0]);
- 	exit(EXIT_NOT_ROOT);
-     }
-+#endif
- 
-     if (!ppp_available()) {
- 	option_error("%s", no_ppp_msg);
-diff --git a/pppd/options.c b/pppd/options.c
-index 45fa742..0e1c714 100644
---- a/pppd/options.c
-+++ b/pppd/options.c
-@@ -684,11 +684,13 @@ process_option(opt, cmd, argv)
- 		     opt->name, optopt);
- 	return 0;
-     }
-+#ifndef ALLOW_START_AS_NON_ROOT
-     if ((opt->flags & OPT_PRIV) && !privileged_option) {
- 	option_error("using the %s%s requires root privilege",
- 		     opt->name, optopt);
- 	return 0;
-     }
-+#endif
-     if ((opt->flags & OPT_ENABLE) && *(bool *)(opt->addr2) == 0) {
- 	option_error("%s%s is disabled", opt->name, optopt);
- 	return 0;
--- 
-2.13.5
-
diff --git a/net-dialup/ppp/files/ppp-2.4.6-specify-runtime-data-dir.patch b/net-dialup/ppp/files/ppp-2.4.6-specify-runtime-data-dir.patch
deleted file mode 100644
index 403cbeb..0000000
--- a/net-dialup/ppp/files/ppp-2.4.6-specify-runtime-data-dir.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 245328c93635714bf6c539b97c2ece5e5df502ab Mon Sep 17 00:00:00 2001
-From: Micah Morton <mortonm@chromium.org>
-Date: Mon, 23 Apr 2018 06:37:24 -0700
-Subject: [PATCH] Allow setting runtime data dir through preprocessor macro.
-
-ppp is hardcoded to use /var/run for runtime data directory. Enable
-specification of this directory through a preprocessor macro that can be
-set by compiler args.
----
- pppd/main.c                   |  8 ++++++--
- pppd/pathnames.h              |  8 ++++++--
- pppd/plugins/radius/radattr.c | 14 +++++++++-----
- 3 files changed, 21 insertions(+), 9 deletions(-)
-
-diff --git a/pppd/main.c b/pppd/main.c
-index 6d50d1b..d91b3ea 100644
---- a/pppd/main.c
-+++ b/pppd/main.c
-@@ -121,6 +121,10 @@
- #include "atcp.h"
- #endif
- 
-+#ifndef RUNTIME_DATA_DIR
-+#define RUNTIME_DATA_DIR "/var/run/"
-+#endif
-+
- static const char rcsid[] = RCSID;
- 
- /* interface vars */
-@@ -811,7 +815,7 @@ create_pidfile(pid)
-     FILE *pidfile;
- 
-     slprintf(pidfilename, sizeof(pidfilename), "%s%s.pid",
--	     _PATH_VARRUN, ifname);
-+	     RUNTIME_DATA_DIR, ifname);
-     if ((pidfile = fopen(pidfilename, "w")) != NULL) {
- 	fprintf(pidfile, "%d\n", pid);
- 	(void) fclose(pidfile);
-@@ -831,7 +835,7 @@ create_linkpidfile(pid)
- 	return;
-     script_setenv("LINKNAME", linkname, 1);
-     slprintf(linkpidfile, sizeof(linkpidfile), "%sppp-%s.pid",
--	     _PATH_VARRUN, linkname);
-+	     RUNTIME_DATA_DIR, linkname);
-     if ((pidfile = fopen(linkpidfile, "w")) != NULL) {
- 	fprintf(pidfile, "%d\n", pid);
- 	if (ifname[0])
-diff --git a/pppd/pathnames.h b/pppd/pathnames.h
-index a33f046..69868bb 100644
---- a/pppd/pathnames.h
-+++ b/pppd/pathnames.h
-@@ -45,11 +45,15 @@
- #define _PATH_IPXDOWN	 _ROOT_PATH "/etc/ppp/ipx-down"
- #endif /* IPX_CHANGE */
- 
-+#ifndef RUNTIME_DATA_DIR
-+#define RUNTIME_DATA_DIR "/var/run/"
-+#endif
-+
- #ifdef __STDC__
--#define _PATH_PPPDB	_ROOT_PATH _PATH_VARRUN "pppd2.tdb"
-+#define _PATH_PPPDB	_ROOT_PATH RUNTIME_DATA_DIR "pppd2.tdb"
- #else /* __STDC__ */
- #ifdef HAVE_PATHS_H
--#define _PATH_PPPDB	"/var/run/pppd2.tdb"
-+#define _PATH_PPPDB	RUNTIME_DATA_DIR "pppd2.tdb"
- #else
- #define _PATH_PPPDB	"/etc/ppp/pppd2.tdb"
- #endif
-diff --git a/pppd/plugins/radius/radattr.c b/pppd/plugins/radius/radattr.c
-index 1fe7daa..ee2c738 100644
---- a/pppd/plugins/radius/radattr.c
-+++ b/pppd/plugins/radius/radattr.c
-@@ -4,7 +4,7 @@
- *
- * A plugin which is stacked on top of radius.so.  This plugin writes
- * all RADIUS attributes from the server's authentication confirmation
--* into /var/run/radattr.pppN.  These attributes are available for
-+* into /var/run/ipsec/radattr.pppN.  These attributes are available for
- * consumption by /etc/ppp/ip-{up,down} scripts.
- *
- * Copyright (C) 2002 Roaring Penguin Software Inc.
-@@ -21,6 +21,10 @@ static char const RCSID[] =
- #include "radiusclient.h"
- #include <stdio.h>
- 
-+#ifndef RUNTIME_DATA_DIR
-+#define RUNTIME_DATA_DIR "/var/run/"
-+#endif
-+
- extern void (*radius_attributes_hook)(VALUE_PAIR *);
- static void print_attributes(VALUE_PAIR *);
- static void cleanup(void *opaque, int arg);
-@@ -60,7 +64,7 @@ plugin_init(void)
- * %RETURNS:
- *  Nothing
- * %DESCRIPTION:
--*  Prints the attribute pairs to /var/run/radattr.pppN.  Each line of the
-+*  Prints the attribute pairs to /var/run/ipsec/radattr.pppN.  Each line of the
- *  file contains "name value" pairs.
- ***********************************************************************/
- static void
-@@ -72,7 +76,7 @@ print_attributes(VALUE_PAIR *vp)
-     char value[2048];
-     int cnt = 0;
- 
--    slprintf(fname, sizeof(fname), "/var/run/radattr.%s", ifname);
-+    slprintf(fname, sizeof(fname), RUNTIME_DATA_DIR "radattr.%s", ifname);
-     fp = fopen(fname, "w");
-     if (!fp) {
- 	warn("radattr plugin: Could not open %s for writing: %m", fname);
-@@ -98,14 +102,14 @@ print_attributes(VALUE_PAIR *vp)
- * %RETURNS:
- *  Nothing
- * %DESCRIPTION:
--*  Deletes /var/run/radattr.pppN
-+*  Deletes /var/run/ipsec/radattr.pppN
- ***********************************************************************/
- static void
- cleanup(void *opaque, int arg)
- {
-     char fname[512];
- 
--    slprintf(fname, sizeof(fname), "/var/run/radattr.%s", ifname);
-+    slprintf(fname, sizeof(fname), RUNTIME_DATA_DIR "radattr.%s", ifname);
-     (void) remove(fname);
-     dbglog("RADATTR plugin removed file %s.", fname);
- }
--- 
-2.13.5
-
diff --git a/net-dialup/ppp/files/ppp-2.4.6-systemconfig.patch b/net-dialup/ppp/files/ppp-2.4.6-systemconfig.patch
deleted file mode 100644
index b61cbaa..0000000
--- a/net-dialup/ppp/files/ppp-2.4.6-systemconfig.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-diff -rupN ppp-2.4.6/pppd/ipcp.c ppp-2.4.6.patched/pppd/ipcp.c
---- ppp-2.4.6/pppd/ipcp.c	2014-01-01 20:42:08.000000000 -0800
-+++ ppp-2.4.6.patched/pppd/ipcp.c	2014-08-09 18:02:07.955608522 -0700
-@@ -90,6 +90,7 @@ struct notifier *ip_down_notifier = NULL
- /* local vars */
- static int default_route_set[NUM_PPP];	/* Have set up a default route */
- static int proxy_arp_set[NUM_PPP];	/* Have created proxy arp entry */
-+static bool neg_systemconfig;		/* Skip system configuration */
- static bool usepeerdns;			/* Ask peer for DNS addrs */
- static int ipcp_is_up;			/* have called np_up() */
- static int ipcp_is_open;		/* haven't called np_finished() */
-@@ -210,6 +211,9 @@ static option_t ipcp_option_list[] = {
-     { "usepeerdns", o_bool, &usepeerdns,
-       "Ask peer for DNS address(es)", 1 },
- 
-+    { "nosystemconfig", o_bool, &neg_systemconfig,
-+      "Avoid IP and route configuration of ppp device", 1 },
-+
-     { "netmask", o_special, (void *)setnetmask,
-       "set netmask", OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, netmask_str },
- 
-@@ -1827,7 +1831,8 @@ ipcp_up(f)
- 	script_setenv("DNS2", ip_ntoa(go->dnsaddr[1]), 0);
-     if (usepeerdns && (go->dnsaddr[0] || go->dnsaddr[1])) {
- 	script_setenv("USEPEERDNS", "1", 0);
--	create_resolv(go->dnsaddr[0], go->dnsaddr[1]);
-+	if (!neg_systemconfig)
-+	    create_resolv(go->dnsaddr[0], go->dnsaddr[1]);
-     }
- 
-     /*
-@@ -1892,8 +1897,12 @@ ipcp_up(f)
- 	 */
- 	mask = GetMask(go->ouraddr);
- 
-+	if (neg_systemconfig && debug)
-+		warn("Avoiding system configuration by request");
-+
- #if !(defined(SVR4) && (defined(SNI) || defined(__USLC__)))
--	if (!sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
-+	if (!neg_systemconfig &&
-+	    !sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
- 	    if (debug)
- 		warn("Interface configuration failed");
- 	    ipcp_close(f->unit, "Interface configuration failed");
-@@ -1905,7 +1914,7 @@ ipcp_up(f)
- 	ipcp_script(_PATH_IPPREUP, 1);
- 
- 	/* bring the interface up for IP */
--	if (!sifup(f->unit)) {
-+	if (!neg_systemconfig && !sifup(f->unit)) {
- 	    if (debug)
- 		warn("Interface failed to come up");
- 	    ipcp_close(f->unit, "Interface configuration failed");
-@@ -1913,7 +1922,8 @@ ipcp_up(f)
- 	}
- 
- #if (defined(SVR4) && (defined(SNI) || defined(__USLC__)))
--	if (!sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
-+	if (!neg_systemconfig &&
-+	    !sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
- 	    if (debug)
- 		warn("Interface configuration failed");
- 	    ipcp_close(f->unit, "Interface configuration failed");
-@@ -1923,12 +1933,13 @@ ipcp_up(f)
- 	sifnpmode(f->unit, PPP_IP, NPMODE_PASS);
- 
- 	/* assign a default route through the interface if required */
--	if (ipcp_wantoptions[f->unit].default_route) 
-+	if (!neg_systemconfig && ipcp_wantoptions[f->unit].default_route)
- 	    if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr))
- 		default_route_set[f->unit] = 1;
- 
- 	/* Make a proxy ARP entry if requested. */
--	if (ho->hisaddr != 0 && ipcp_wantoptions[f->unit].proxy_arp)
-+	if (!neg_systemconfig &&
-+	    ho->hisaddr != 0 && ipcp_wantoptions[f->unit].proxy_arp)
- 	    if (sifproxyarp(f->unit, ho->hisaddr))
- 		proxy_arp_set[f->unit] = 1;
- 
-@@ -2000,7 +2011,8 @@ ipcp_down(f)
- 	sifnpmode(f->unit, PPP_IP, NPMODE_QUEUE);
-     } else {
- 	sifnpmode(f->unit, PPP_IP, NPMODE_DROP);
--	sifdown(f->unit);
-+	if (!neg_systemconfig)
-+	    sifdown(f->unit);
- 	ipcp_clear_addrs(f->unit, ipcp_gotoptions[f->unit].ouraddr,
- 			 ipcp_hisoptions[f->unit].hisaddr);
-     }
-@@ -2031,7 +2043,8 @@ ipcp_clear_addrs(unit, ouraddr, hisaddr)
- 	cifdefaultroute(unit, ouraddr, hisaddr);
- 	default_route_set[unit] = 0;
-     }
--    cifaddr(unit, ouraddr, hisaddr);
-+    if (!neg_systemconfig)
-+	cifaddr(unit, ouraddr, hisaddr);
- }
- 
- 
diff --git a/net-dialup/ppp/files/ppp-2.4.7-no-regain-root.patch b/net-dialup/ppp/files/ppp-2.4.7-no-regain-root.patch
deleted file mode 100644
index 4505290..0000000
--- a/net-dialup/ppp/files/ppp-2.4.7-no-regain-root.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-When ALLOW_START_AS_NON_ROOT is defined, this patch prevents pppd from:
-   a) calling seteuid(0) in connect_tty
-   b) calling setuid(0) in run_program (for running scripts in /etc/ppp)
-We don't want pppd trying to regain root privileges in either of these
-cases.
-
-diff --git a/pppd/main.c b/pppd/main.c
-index 212540a..8217d80 100644
---- a/pppd/main.c
-+++ b/pppd/main.c
-@@ -1830,7 +1830,9 @@ run_program(prog, args, must_exist, done, arg, wait)
-     (void) setsid();	/* No controlling tty. */
-     (void) umask (S_IRWXG|S_IRWXO);
-     (void) chdir ("/");	/* no current directory. */
-+#ifndef ALLOW_START_AS_NON_ROOT
-     setuid(0);		/* set real UID = root */
-+#endif
-     setgid(getegid());
- 
- #ifdef BSD
-diff --git a/pppd/tty.c b/pppd/tty.c
-index c9a0b33..d76b098 100644
---- a/pppd/tty.c
-+++ b/pppd/tty.c
-@@ -575,8 +575,10 @@ int connect_tty()
- 			}
- 			real_ttyfd = open(devnam, O_NONBLOCK | O_RDWR, 0);
- 			err = errno;
-+#ifndef ALLOW_START_AS_NON_ROOT
- 			if (prio < OPRIO_ROOT && seteuid(0) == -1)
- 				fatal("Unable to regain privileges");
-+#endif
- 			if (real_ttyfd >= 0)
- 				break;
- 			errno = err;
diff --git a/net-dialup/ppp/files/ppp-2.4.9-allow-non-root.patch b/net-dialup/ppp/files/ppp-2.4.9-allow-non-root.patch
new file mode 100644
index 0000000..6a8a6b4
--- /dev/null
+++ b/net-dialup/ppp/files/ppp-2.4.9-allow-non-root.patch
@@ -0,0 +1,57 @@
+From dc3867058d672f92598166eacab6ca1a560d50ec Mon Sep 17 00:00:00 2001
+From: Micah Morton <mortonm@chromium.org>
+Date: Fri, 20 Apr 2018 11:54:26 -0700
+Subject: [PATCH] Allow pppd to start as non-root.
+
+This patch adds #ifndef macros in 2 spots in order to allow pppd to be
+spawned as a non-root user with only runtime capabilities (e.g.
+CAP_NET_{RAW/ADMIN}) instead of giving pppd full root privileges. This
+is helpful if pppd is itself spawned by a non-root user and the use of
+file permissions (e.g. setuid-root) on the pppd binary is not a
+desirable solution.
+---
+ pppd/main.c    | 2 ++
+ pppd/options.c | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/pppd/main.c b/pppd/main.c
+index 87a5d29..fc9b322 100644
+--- a/pppd/main.c
++++ b/pppd/main.c
+@@ -359,6 +359,7 @@ main(int argc, char *argv[])
+     if (debug)
+ 	setlogmask(LOG_UPTO(LOG_DEBUG));
+ 
++#ifndef ALLOW_START_AS_NON_ROOT
+     /*
+      * Check that we are running as root.
+      */
+@@ -367,6 +368,7 @@ main(int argc, char *argv[])
+ 		     argv[0]);
+ 	exit(EXIT_NOT_ROOT);
+     }
++#endif
+ 
+     if (!ppp_available()) {
+ 	option_error("%s", no_ppp_msg);
+diff --git a/pppd/options.c b/pppd/options.c
+index f8d6c00..2272912 100644
+--- a/pppd/options.c
++++ b/pppd/options.c
+@@ -694,11 +694,13 @@ process_option(option_t *opt, char *cmd, char **argv)
+ 		     opt->name, optopt);
+ 	return 0;
+     }
++#ifndef ALLOW_START_AS_NON_ROOT
+     if ((opt->flags & OPT_PRIV) && !privileged_option) {
+ 	option_error("using the %s%s requires root privilege",
+ 		     opt->name, optopt);
+ 	return 0;
+     }
++#endif
+     if ((opt->flags & OPT_ENABLE) && *(bool *)(opt->addr2) == 0) {
+ 	option_error("%s%s is disabled", opt->name, optopt);
+ 	return 0;
+-- 
+2.30.1
+
diff --git a/net-dialup/ppp/files/ppp-2.4.9-fix-cros-sysroot-poison.patch b/net-dialup/ppp/files/ppp-2.4.9-fix-cros-sysroot-poison.patch
new file mode 100644
index 0000000..40a9b0f6
--- /dev/null
+++ b/net-dialup/ppp/files/ppp-2.4.9-fix-cros-sysroot-poison.patch
@@ -0,0 +1,49 @@
+From eed0ea024ed8ae0dc1f319d3c9f46ac53fcd26cd Mon Sep 17 00:00:00 2001
+From: Adrian Ratiu <adrian.ratiu@collabora.com>
+Date: Tue, 16 Feb 2021 00:21:51 +0200
+Subject: [PATCH] pppd: fix cross-compilation using Clang
+
+Clang does not have the --print-sysroot option so the shell
+snippet silently fails leading to "-I/usr/include/openssl".
+Thankfully systems like Gentoo/portage or Yocto/bitbake enable
+sysroot poisoning precisely to catch these kinds of bugs.
+
+There is only one user of this non-standard CFLAG include in
+pppcrypt.h, so make it consistent with the rest of the sources
+(eg. see eap-tls.[h|c] openssl/* includes) and drop the fragile
+sysroot hackery.
+
+Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
+---
+ pppd/Makefile.linux | 1 -
+ pppd/pppcrypt.h     | 2 +-
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux
+index 22837c5..3c07a04 100644
+--- a/pppd/Makefile.linux
++++ b/pppd/Makefile.linux
+@@ -155,7 +155,6 @@ endif
+ 
+ ifdef NEEDDES
+ ifndef USE_CRYPT
+-CFLAGS   += -I$(shell $(CC) --print-sysroot)/usr/include/openssl
+ NEEDCRYPTOLIB = y
+ else
+ CFLAGS   += -DUSE_CRYPT=1
+diff --git a/pppd/pppcrypt.h b/pppd/pppcrypt.h
+index 364940e..0f71bb3 100644
+--- a/pppd/pppcrypt.h
++++ b/pppd/pppcrypt.h
+@@ -38,7 +38,7 @@
+ #endif
+ 
+ #ifndef USE_CRYPT
+-#include <des.h>
++#include <openssl/des.h>
+ #endif
+ 
+ extern bool	DesSetkey(u_char *);
+-- 
+2.30.1
+
diff --git a/net-dialup/ppp/files/ppp-2.4.9-no-regain-root.patch b/net-dialup/ppp/files/ppp-2.4.9-no-regain-root.patch
new file mode 100644
index 0000000..fda625c
--- /dev/null
+++ b/net-dialup/ppp/files/ppp-2.4.9-no-regain-root.patch
@@ -0,0 +1,35 @@
+When ALLOW_START_AS_NON_ROOT is defined, this patch prevents pppd from:
+   a) calling seteuid(0) in connect_tty
+   b) calling setuid(0) in run_program (for running scripts in /etc/ppp)
+We don't want pppd trying to regain root privileges in either of these
+cases.
+
+diff --git a/pppd/main.c b/pppd/main.c
+index 87a5d29..ec1d0ce 100644
+--- a/pppd/main.c
++++ b/pppd/main.c
+@@ -1779,7 +1779,9 @@ run_program(char *prog, char **args, int must_exist, void (*done)(void *), void
+     (void) setsid();	/* No controlling tty. */
+     (void) umask (S_IRWXG|S_IRWXO);
+     (void) chdir ("/");	/* no current directory. */
++#ifndef ALLOW_START_AS_NON_ROOT
+     setuid(0);		/* set real UID = root */
++#endif
+     setgid(getegid());
+ 
+ #ifdef BSD
+diff --git a/pppd/tty.c b/pppd/tty.c
+index 852cee7..57ea76f 100644
+--- a/pppd/tty.c
++++ b/pppd/tty.c
+@@ -561,8 +561,10 @@ int connect_tty(void)
+ 			}
+ 			real_ttyfd = open(devnam, O_NONBLOCK | O_RDWR, 0);
+ 			err = errno;
++#ifndef ALLOW_START_AS_NON_ROOT
+ 			if (prio < OPRIO_ROOT && seteuid(0) == -1)
+ 				fatal("Unable to regain privileges");
++#endif
+ 			if (real_ttyfd >= 0)
+ 				break;
+ 			errno = err;
diff --git a/net-dialup/ppp/files/ppp-2.4.9-specify-runtime-data-dir.patch b/net-dialup/ppp/files/ppp-2.4.9-specify-runtime-data-dir.patch
new file mode 100644
index 0000000..8f761c3
--- /dev/null
+++ b/net-dialup/ppp/files/ppp-2.4.9-specify-runtime-data-dir.patch
@@ -0,0 +1,130 @@
+From d180765a74822f687b18546b1d8d9c30fe944cc7 Mon Sep 17 00:00:00 2001
+From: Micah Morton <mortonm@chromium.org>
+Date: Mon, 23 Apr 2018 06:37:24 -0700
+Subject: [PATCH] Allow setting runtime data dir through preprocessor macro.
+
+ppp is hardcoded to use /var/run for runtime data directory. Enable
+specification of this directory through a preprocessor macro that can be
+set by compiler args.
+---
+ pppd/main.c                   |  7 +++++--
+ pppd/pathnames.h              |  8 ++++++--
+ pppd/plugins/radius/radattr.c | 14 +++++++++-----
+ 3 files changed, 20 insertions(+), 9 deletions(-)
+
+diff --git a/pppd/main.c b/pppd/main.c
+index fc9b322..6352666 100644
+--- a/pppd/main.c
++++ b/pppd/main.c
+@@ -118,6 +118,9 @@
+ #include "atcp.h"
+ #endif
+ 
++#ifndef RUNTIME_DATA_DIR
++#define RUNTIME_DATA_DIR "/var/run/"
++#endif
+ 
+ /* interface vars */
+ char ifname[MAXIFNAMELEN];	/* Interface name */
+@@ -807,7 +810,7 @@ create_pidfile(int pid)
+     FILE *pidfile;
+ 
+     slprintf(pidfilename, sizeof(pidfilename), "%s%s.pid",
+-	     _PATH_VARRUN, ifname);
++	     RUNTIME_DATA_DIR, ifname);
+     if ((pidfile = fopen(pidfilename, "w")) != NULL) {
+ 	fprintf(pidfile, "%d\n", pid);
+ 	(void) fclose(pidfile);
+@@ -826,7 +829,7 @@ create_linkpidfile(int pid)
+ 	return;
+     script_setenv("LINKNAME", linkname, 1);
+     slprintf(linkpidfile, sizeof(linkpidfile), "%sppp-%s.pid",
+-	     _PATH_VARRUN, linkname);
++	     RUNTIME_DATA_DIR, linkname);
+     if ((pidfile = fopen(linkpidfile, "w")) != NULL) {
+ 	fprintf(pidfile, "%d\n", pid);
+ 	if (ifname[0])
+diff --git a/pppd/pathnames.h b/pppd/pathnames.h
+index 524d608..57de2ea 100644
+--- a/pppd/pathnames.h
++++ b/pppd/pathnames.h
+@@ -50,11 +50,15 @@
+ #define _PATH_IPXDOWN	 _ROOT_PATH "/etc/ppp/ipx-down"
+ #endif /* IPX_CHANGE */
+ 
++#ifndef RUNTIME_DATA_DIR
++#define RUNTIME_DATA_DIR "/var/run/"
++#endif
++
+ #ifdef __STDC__
+-#define _PATH_PPPDB	_ROOT_PATH _PATH_VARRUN "pppd2.tdb"
++#define _PATH_PPPDB	_ROOT_PATH RUNTIME_DATA_DIR "pppd2.tdb"
+ #else /* __STDC__ */
+ #ifdef HAVE_PATHS_H
+-#define _PATH_PPPDB	"/var/run/pppd2.tdb"
++#define _PATH_PPPDB	RUNTIME_DATA_DIR "pppd2.tdb"
+ #else
+ #define _PATH_PPPDB	"/etc/ppp/pppd2.tdb"
+ #endif
+diff --git a/pppd/plugins/radius/radattr.c b/pppd/plugins/radius/radattr.c
+index 1fe7daa..ee2c738 100644
+--- a/pppd/plugins/radius/radattr.c
++++ b/pppd/plugins/radius/radattr.c
+@@ -4,7 +4,7 @@
+ *
+ * A plugin which is stacked on top of radius.so.  This plugin writes
+ * all RADIUS attributes from the server's authentication confirmation
+-* into /var/run/radattr.pppN.  These attributes are available for
++* into /var/run/ipsec/radattr.pppN.  These attributes are available for
+ * consumption by /etc/ppp/ip-{up,down} scripts.
+ *
+ * Copyright (C) 2002 Roaring Penguin Software Inc.
+@@ -21,6 +21,10 @@ static char const RCSID[] =
+ #include "radiusclient.h"
+ #include <stdio.h>
+ 
++#ifndef RUNTIME_DATA_DIR
++#define RUNTIME_DATA_DIR "/var/run/"
++#endif
++
+ extern void (*radius_attributes_hook)(VALUE_PAIR *);
+ static void print_attributes(VALUE_PAIR *);
+ static void cleanup(void *opaque, int arg);
+@@ -60,7 +64,7 @@ plugin_init(void)
+ * %RETURNS:
+ *  Nothing
+ * %DESCRIPTION:
+-*  Prints the attribute pairs to /var/run/radattr.pppN.  Each line of the
++*  Prints the attribute pairs to /var/run/ipsec/radattr.pppN.  Each line of the
+ *  file contains "name value" pairs.
+ ***********************************************************************/
+ static void
+@@ -72,7 +76,7 @@ print_attributes(VALUE_PAIR *vp)
+     char value[2048];
+     int cnt = 0;
+ 
+-    slprintf(fname, sizeof(fname), "/var/run/radattr.%s", ifname);
++    slprintf(fname, sizeof(fname), RUNTIME_DATA_DIR "radattr.%s", ifname);
+     fp = fopen(fname, "w");
+     if (!fp) {
+ 	warn("radattr plugin: Could not open %s for writing: %m", fname);
+@@ -98,14 +102,14 @@ print_attributes(VALUE_PAIR *vp)
+ * %RETURNS:
+ *  Nothing
+ * %DESCRIPTION:
+-*  Deletes /var/run/radattr.pppN
++*  Deletes /var/run/ipsec/radattr.pppN
+ ***********************************************************************/
+ static void
+ cleanup(void *opaque, int arg)
+ {
+     char fname[512];
+ 
+-    slprintf(fname, sizeof(fname), "/var/run/radattr.%s", ifname);
++    slprintf(fname, sizeof(fname), RUNTIME_DATA_DIR "radattr.%s", ifname);
+     (void) remove(fname);
+     dbglog("RADATTR plugin removed file %s.", fname);
+ }
+-- 
+2.30.1
+
diff --git a/net-dialup/ppp/files/ppp-2.4.9-systemconfig.patch b/net-dialup/ppp/files/ppp-2.4.9-systemconfig.patch
new file mode 100644
index 0000000..551201b
--- /dev/null
+++ b/net-dialup/ppp/files/ppp-2.4.9-systemconfig.patch
@@ -0,0 +1,114 @@
+From bc52413756bd663607606291492403b51140a1d2 Mon Sep 17 00:00:00 2001
+From: Adrian Ratiu <adrian.ratiu@collabora.com>
+Date: Tue, 16 Feb 2021 20:06:02 +0200
+Subject: [PATCH] pppd: Add option to avoid IP/route configuration
+
+---
+ pppd/ipcp.c | 29 +++++++++++++++++++++--------
+ 1 file changed, 21 insertions(+), 8 deletions(-)
+
+diff --git a/pppd/ipcp.c b/pppd/ipcp.c
+index 302ca40..5198ad9 100644
+--- a/pppd/ipcp.c
++++ b/pppd/ipcp.c
+@@ -88,6 +88,7 @@ struct notifier *ip_down_notifier = NULL;
+ /* local vars */
+ static int default_route_set[NUM_PPP];	/* Have set up a default route */
+ static int proxy_arp_set[NUM_PPP];	/* Have created proxy arp entry */
++static bool neg_systemconfig;		/* Skip system configuration */
+ static bool usepeerdns;			/* Ask peer for DNS addrs */
+ static int ipcp_is_up;			/* have called np_up() */
+ static int ipcp_is_open;		/* haven't called np_finished() */
+@@ -217,6 +218,9 @@ static option_t ipcp_option_list[] = {
+     { "usepeerdns", o_bool, &usepeerdns,
+       "Ask peer for DNS address(es)", 1 },
+ 
++    { "nosystemconfig", o_bool, &neg_systemconfig,
++      "Avoid IP and route configuration of ppp device", 1 },
++
+     { "netmask", o_special, (void *)setnetmask,
+       "set netmask", OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, netmask_str },
+ 
+@@ -1792,7 +1796,8 @@ ipcp_up(fsm *f)
+ 	script_setenv("DNS2", ip_ntoa(go->dnsaddr[1]), 0);
+     if (usepeerdns && (go->dnsaddr[0] || go->dnsaddr[1])) {
+ 	script_setenv("USEPEERDNS", "1", 0);
+-	create_resolv(go->dnsaddr[0], go->dnsaddr[1]);
++	if (!neg_systemconfig)
++	    create_resolv(go->dnsaddr[0], go->dnsaddr[1]);
+     }
+ 
+     /*
+@@ -1859,8 +1864,12 @@ ipcp_up(fsm *f)
+ 	 */
+ 	mask = GetMask(go->ouraddr);
+ 
++	if (neg_systemconfig && debug)
++		warn("Avoiding system configuration by request");
++
+ #if !(defined(SVR4) && (defined(SNI) || defined(__USLC__)))
+-	if (!sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
++	if (!neg_systemconfig &&
++	    !sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
+ 	    if (debug)
+ 		warn("Interface configuration failed");
+ 	    ipcp_close(f->unit, "Interface configuration failed");
+@@ -1881,7 +1890,7 @@ ipcp_up(fsm *f)
+ 	}
+ 
+ 	/* bring the interface up for IP */
+-	if (!sifup(f->unit)) {
++	if (!neg_systemconfig && !sifup(f->unit)) {
+ 	    if (debug)
+ 		warn("Interface failed to come up");
+ 	    ipcp_close(f->unit, "Interface configuration failed");
+@@ -1889,7 +1898,8 @@ ipcp_up(fsm *f)
+ 	}
+ 
+ #if (defined(SVR4) && (defined(SNI) || defined(__USLC__)))
+-	if (!sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
++	if (!neg_systemconfig &&
++	    !sifaddr(f->unit, go->ouraddr, ho->hisaddr, mask)) {
+ 	    if (debug)
+ 		warn("Interface configuration failed");
+ 	    ipcp_close(f->unit, "Interface configuration failed");
+@@ -1899,13 +1909,14 @@ ipcp_up(fsm *f)
+ 	sifnpmode(f->unit, PPP_IP, NPMODE_PASS);
+ 
+ 	/* assign a default route through the interface if required */
+-	if (ipcp_wantoptions[f->unit].default_route) 
++	if (!neg_systemconfig && ipcp_wantoptions[f->unit].default_route)
+ 	    if (sifdefaultroute(f->unit, go->ouraddr, ho->hisaddr,
+ 					 wo->replace_default_route))
+ 		default_route_set[f->unit] = 1;
+ 
+ 	/* Make a proxy ARP entry if requested. */
+-	if (ho->hisaddr != 0 && ipcp_wantoptions[f->unit].proxy_arp)
++	if (!neg_systemconfig &&
++	    ho->hisaddr != 0 && ipcp_wantoptions[f->unit].proxy_arp)
+ 	    if (sifproxyarp(f->unit, ho->hisaddr))
+ 		proxy_arp_set[f->unit] = 1;
+ 
+@@ -1976,7 +1987,8 @@ ipcp_down(fsm *f)
+ 	sifnpmode(f->unit, PPP_IP, NPMODE_QUEUE);
+     } else {
+ 	sifnpmode(f->unit, PPP_IP, NPMODE_DROP);
+-	sifdown(f->unit);
++	if (!neg_systemconfig)
++	    sifdown(f->unit);
+ 	ipcp_clear_addrs(f->unit, ipcp_gotoptions[f->unit].ouraddr,
+ 			 ipcp_hisoptions[f->unit].hisaddr, 0);
+     }
+@@ -2012,7 +2024,8 @@ ipcp_clear_addrs(int unit, u_int32_t ouraddr, u_int32_t hisaddr, bool replacedef
+ 	cifdefaultroute(unit, ouraddr, hisaddr);
+ 	default_route_set[unit] = 0;
+     }
+-    cifaddr(unit, ouraddr, hisaddr);
++    if (!neg_systemconfig)
++	cifaddr(unit, ouraddr, hisaddr);
+ }
+ 
+ 
+-- 
+2.30.1
+
diff --git a/net-dialup/ppp/files/ppp-remove-ttyname.patch b/net-dialup/ppp/files/ppp-remove-ttyname.patch
deleted file mode 100644
index e56647b..0000000
--- a/net-dialup/ppp/files/ppp-remove-ttyname.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-This patch removes a redeclaration of ttyname. This is necessary in order to
-get clang FORTIFY to work. See https://crbug.com/640358.
-
-Upstream pull request is https://github.com/paulusmack/ppp/pull/67
---- a/pppd/main.c
-+++ b/pppd/main.c
-@@ -262,7 +262,6 @@ static void cleanup_db __P((void));
- static void handle_events __P((void));
- void print_link_stats __P((void));
- 
--extern	char	*ttyname __P((int));
- extern	char	*getlogin __P((void));
- int main __P((int, char *[]));
- 
diff --git a/net-dialup/ppp/ppp-2.4.7-r9.ebuild b/net-dialup/ppp/ppp-2.4.7-r9.ebuild
deleted file mode 100644
index 991437a..0000000
--- a/net-dialup/ppp/ppp-2.4.7-r9.ebuild
+++ /dev/null
@@ -1,253 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit linux-info multilib pam toolchain-funcs udev user
-
-PATCH_VER="6"
-DESCRIPTION="Point-to-Point Protocol (PPP)"
-HOMEPAGE="https://ppp.samba.org/"
-SRC_URI="https://download.samba.org/pub/ppp/${P}.tar.gz
-	https://dev.gentoo.org/~polynomial-c/${P}-patches-${PATCH_VER}.tar.xz
-	http://www.netservers.net.uk/gpl/ppp-dhcpc.tgz"
-
-LICENSE="BSD GPL-2"
-SLOT="0/${PV}"
-KEYWORDS="*"
-IUSE="activefilter atm dhcp eap-tls gtk ipv6 libressl pam radius"
-
-DEPEND="activefilter? ( net-libs/libpcap )
-	atm? ( net-dialup/linux-atm )
-	pam? ( virtual/pam )
-	gtk? ( x11-libs/gtk+:2 )
-	eap-tls? (
-		!libressl? ( dev-libs/openssl:0= )
-		libressl? ( dev-libs/libressl:= )
-	)"
-RDEPEND="${DEPEND}"
-PDEPEND="net-dialup/ppp-scripts"
-
-src_prepare() {
-	mv "${WORKDIR}/dhcp" "${S}/pppd/plugins" || die
-
-	if ! use eap-tls ; then
-		rm "${WORKDIR}"/patch/8?_all_eaptls-* || die
-	fi
-	eapply "${WORKDIR}"/patch
-	# Apply Chromium OS specific patch regarding the nosystemconfig option
-	# See https://chromium-review.googlesource.com/#/c/7751/ and
-	# http://crosbug.com/17185 for details.
-	eapply "${FILESDIR}/${PN}-2.4.6-systemconfig.patch"
-	# Fix for clang FORTIFY (crbug.com/640358).
-	eapply "${FILESDIR}/${PN}-remove-ttyname.patch"
-	eapply "${FILESDIR}/${PN}-2.4.6-allow-non-root.patch"
-	eapply "${FILESDIR}/${PN}-2.4.6-specify-runtime-data-dir.patch"
-	eapply "${FILESDIR}/${PN}-2.4.7-no-regain-root.patch"
-
-	if use atm ; then
-		einfo "Enabling PPPoATM support"
-		sed -i '/^#HAVE_LIBATM=yes/s:#::' \
-			pppd/plugins/pppoatm/Makefile.linux || die
-	fi
-
-	if ! use activefilter ; then
-		einfo "Disabling active filter"
-		sed -i '/^FILTER=y/s:^:#:' pppd/Makefile.linux || die
-	fi
-
-	if use pam ; then
-		einfo "Enabling PAM"
-		sed -i '/^#USE_PAM=y/s:^#::' pppd/Makefile.linux || die
-	fi
-
-	if use ipv6 ; then
-		einfo "Enabling IPv6"
-		sed -i '/#HAVE_INET6/s:#::' pppd/Makefile.linux || die
-		echo "+ipv6" >> etc.ppp/options || die
-	fi
-
-	einfo "Enabling CBCP"
-	sed -i '/^#CBCP=y/s:#::' pppd/Makefile.linux || die
-
-	if use dhcp ; then
-		einfo "Adding ppp-dhcp plugin files"
-		sed \
-			-e '/^SUBDIRS :=/s:$: dhcp:' \
-			-i pppd/plugins/Makefile.linux || die
-	fi
-
-	# Set correct libdir
-	sed -i -e "s:/lib/pppd:/$(get_libdir)/pppd:" \
-		pppd/{pathnames.h,pppd.8} || die
-
-	if use radius ; then
-		#set the right paths in radiusclient.conf
-		sed -e "s:/usr/local/etc:/etc:" \
-			-e "s:/usr/local/sbin:/usr/sbin:" \
-			-i pppd/plugins/radius/etc/radiusclient.conf || die
-		#set config dir to /etc/ppp/radius
-		sed -i -e "s:/etc/radiusclient:/etc/ppp/radius:g" \
-			pppd/plugins/radius/{*.8,*.c,*.h} \
-			pppd/plugins/radius/etc/* || die
-	else
-		einfo "Disabling radius"
-		sed -i -e '/+= radius/s:^:#:' pppd/plugins/Makefile.linux || die
-	fi
-
-	# Respect our pkg-config settings.
-	sed -i \
-		-e 's:pkg-config:$(PKG_CONFIG):' \
-		contrib/pppgetpass/Makefile.linux || die
-	sed -i \
-		-e '/^LIBS/{s:-L/usr/local/ssl/lib::;s:-lcrypto:`$(PKG_CONFIG) --libs libcrypto`:}' \
-		pppd/Makefile.linux || die
-
-	eapply_user #549588
-}
-
-src_compile() {
-	tc-export AR CC PKG_CONFIG
-
-	append-cppflags \
-		-D_GNU_SOURCE \
-		-DRUNTIME_DATA_DIR=\'\"/run/l2tpipsec_vpn/\"\' \
-		-DALLOW_START_AS_NON_ROOT
-	emake COPTS="${CFLAGS}"
-
-	# build pppgetpass
-	cd contrib/pppgetpass || die
-	if use gtk ; then
-		emake -f Makefile.linux
-	else
-		emake pppgetpass.vt
-	fi
-}
-
-src_install() {
-	local i
-	for i in chat pppd pppdump pppstats ; do
-		doman ${i}/${i}.8
-		dosbin ${i}/${i}
-	done
-	fperms -w /usr/sbin/pppd
-
-	# Install pppd header files
-	emake -C pppd INSTROOT="${D}" install-devel
-
-	dosbin pppd/plugins/rp-pppoe/pppoe-discovery
-
-	dodir /etc/ppp/peers
-	insinto /etc/ppp
-	insopts -o shill -g shill -m0600
-	newins etc.ppp/pap-secrets pap-secrets.example
-	newins etc.ppp/chap-secrets chap-secrets.example
-
-	insopts -o shill -g shill -m0644
-	doins etc.ppp/options
-
-	pamd_mimic_system ppp auth account session
-
-	local PLUGINS_DIR="/usr/$(get_libdir)/pppd/${PV}"
-	# closing " for syntax coloring
-	insinto "${PLUGINS_DIR}"
-	insopts -o shill -g shill -m0755
-	doins pppd/plugins/minconn.so
-	doins pppd/plugins/passprompt.so
-	doins pppd/plugins/passwordfd.so
-	doins pppd/plugins/winbind.so
-	doins pppd/plugins/rp-pppoe/rp-pppoe.so
-	doins pppd/plugins/pppol2tp/openl2tp.so
-	doins pppd/plugins/pppol2tp/pppol2tp.so
-	if use atm ; then
-		doins pppd/plugins/pppoatm/pppoatm.so
-	fi
-	if use dhcp ; then
-		doins pppd/plugins/dhcp/dhcpc.so
-	fi
-	if use radius ; then
-		doins pppd/plugins/radius/rad{ius,attr,realms}.so
-
-		#Copy radiusclient configuration files (#92878)
-		insinto /etc/ppp/radius
-		insopts -o shill -g shill -m0644
-		doins pppd/plugins/radius/etc/{dictionary*,issue,port-id-map,radiusclient.conf,realms,servers}
-
-		doman pppd/plugins/radius/pppd-rad{ius,attr}.8
-	fi
-
-	insinto /etc/modprobe.d
-	insopts -o shill -g shill -m0644
-	newins "${FILESDIR}/modules.ppp" ppp.conf
-
-	dodoc PLUGINS README* SETUP Changes-2.3 FAQ
-	dodoc "${FILESDIR}/README.mpls"
-
-	# This rules file is specific to CrOS and cannot be upstreamed, so must be
-	# carried forward.
-	udev_dorules "${FILESDIR}/99-pppd.rules"
-
-	dosbin scripts/p{on,off,log}
-	doman scripts/pon.1
-
-	# Adding misc. specialized scripts to doc dir
-	insinto /usr/share/doc/${PF}/scripts/chatchat
-	doins scripts/chatchat/*
-	insinto /usr/share/doc/${PF}/scripts
-	doins scripts/*
-
-	if use gtk ; then
-		dosbin contrib/pppgetpass/{pppgetpass.vt,pppgetpass.gtk}
-		newsbin contrib/pppgetpass/pppgetpass.sh pppgetpass
-	else
-		newsbin contrib/pppgetpass/pppgetpass.vt pppgetpass
-	fi
-	doman contrib/pppgetpass/pppgetpass.8
-}
-
-pkg_setup() {
-	enewuser shill
-	enewgroup shill
-}
-
-pkg_postinst() {
-	if linux-info_get_any_version && linux_config_src_exists ; then
-		echo
-		ewarn "If the following test report contains a missing kernel configuration option that you need,"
-		ewarn "you should reconfigure and rebuild your kernel before running pppd."
-		CONFIG_CHECK="~PPP ~PPP_ASYNC ~PPP_SYNC_TTY"
-		local ERROR_PPP="CONFIG_PPP:\t missing PPP support (REQUIRED)"
-		local ERROR_PPP_ASYNC="CONFIG_PPP_ASYNC:\t missing asynchronous serial line discipline (optional, but highly recommended)"
-		local WARNING_PPP_SYNC_TTY="CONFIG_PPP_SYNC_TTY:\t missing synchronous serial line discipline (optional; used by 'sync' pppd option)"
-		if use activefilter ; then
-			CONFIG_CHECK="${CONFIG_CHECK} ~PPP_FILTER"
-			local ERROR_PPP_FILTER="CONFIG_PPP_FILTER:\t missing PPP filtering support (REQUIRED)"
-		fi
-		CONFIG_CHECK="${CONFIG_CHECK} ~PPP_DEFLATE ~PPP_BSDCOMP ~PPP_MPPE"
-		local ERROR_PPP_DEFLATE="CONFIG_PPP_DEFLATE:\t missing Deflate compression (optional, but highly recommended)"
-		local ERROR_PPP_BSDCOMP="CONFIG_PPP_BSDCOMP:\t missing BSD-Compress compression (optional, but highly recommended)"
-		local WARNING_PPP_MPPE="CONFIG_PPP_MPPE:\t missing MPPE encryption (optional, mostly used by PPTP links)"
-		CONFIG_CHECK="${CONFIG_CHECK} ~PPPOE ~PACKET"
-		local WARNING_PPPOE="CONFIG_PPPOE:\t missing PPPoE support (optional, needed by rp-pppoe plugin)"
-		local WARNING_PACKET="CONFIG_PACKET:\t missing AF_PACKET support (optional, used by rp-pppoe and dhcpc plugins)"
-		if use atm ; then
-			CONFIG_CHECK="${CONFIG_CHECK} ~PPPOATM"
-			local WARNING_PPPOATM="CONFIG_PPPOATM:\t missing PPPoA support (optional, needed by pppoatm plugin)"
-		fi
-		check_extra_config
-	fi
-
-	# create *-secrets files if not exists
-	[ -f "${ROOT}/etc/ppp/pap-secrets" ] || \
-		cp -pP "${ROOT}/etc/ppp/pap-secrets.example" "${ROOT}/etc/ppp/pap-secrets"
-	[ -f "${ROOT}/etc/ppp/chap-secrets" ] || \
-		cp -pP "${ROOT}/etc/ppp/chap-secrets.example" "${ROOT}/etc/ppp/chap-secrets"
-
-	# lib name has changed
-	sed -i -e "s:^pppoe.so:rp-pppoe.so:" "${ROOT}/etc/ppp/options" || die
-
-	echo
-	elog "Pon, poff and plog scripts have been supplied for experienced users."
-	elog "Users needing particular scripts (ssh,rsh,etc.) should check out the"
-	elog "/usr/share/doc/${PF}/scripts directory."
-}
diff --git a/net-dialup/ppp/ppp-2.4.9-r3.ebuild b/net-dialup/ppp/ppp-2.4.9-r3.ebuild
new file mode 100644
index 0000000..cc64a00
--- /dev/null
+++ b/net-dialup/ppp/ppp-2.4.9-r3.ebuild
@@ -0,0 +1,265 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit linux-info multilib pam toolchain-funcs udev user
+
+PATCH_TARBALL_NAME="${PN}-2.4.9-patches-02"
+DESCRIPTION="Point-to-Point Protocol (PPP)"
+HOMEPAGE="https://ppp.samba.org/"
+SRC_URI="https://github.com/paulusmack/ppp/archive/${P}.tar.gz
+	https://dev.gentoo.org/~polynomial-c/${PATCH_TARBALL_NAME}.tar.xz
+	http://www.netservers.net.uk/gpl/ppp-dhcpc.tgz"
+
+LICENSE="BSD GPL-2"
+SLOT="0/${PV}"
+KEYWORDS="*"
+IUSE="activefilter atm dhcp eap-tls gtk ipv6 libressl pam radius"
+
+DEPEND="
+	activefilter? ( net-libs/libpcap )
+	atm? ( net-dialup/linux-atm )
+	pam? ( sys-libs/pam )
+	gtk? ( x11-libs/gtk+:2 )
+	!libressl? ( dev-libs/openssl:0= )
+	libressl? ( dev-libs/libressl:= )
+"
+RDEPEND="${DEPEND}
+	!<net-misc/netifrc-0.7.1-r2"
+PDEPEND="net-dialup/ppp-scripts"
+
+S="${WORKDIR}/${PN}-${P}"
+
+src_prepare() {
+	mv "${WORKDIR}/dhcp" "${S}/pppd/plugins" || die
+
+	eapply "${WORKDIR}"/patches
+	# Apply Chromium OS specific patch regarding the nosystemconfig option
+	# See https://chromium-review.googlesource.com/#/c/7751/ and
+	# http://crosbug.com/17185 for details.
+	eapply "${FILESDIR}/${PN}-2.4.9-systemconfig.patch"
+	eapply "${FILESDIR}/${PN}-2.4.9-allow-non-root.patch"
+	eapply "${FILESDIR}/${PN}-2.4.9-specify-runtime-data-dir.patch"
+	eapply "${FILESDIR}/${PN}-2.4.9-no-regain-root.patch"
+	eapply "${FILESDIR}/${PN}-2.4.9-fix-cros-sysroot-poison.patch"
+
+	if use atm ; then
+		einfo "Enabling PPPoATM support"
+		sed -i '/^#HAVE_LIBATM=yes/s:#::' \
+			pppd/plugins/pppoatm/Makefile.linux || die
+	fi
+
+	if ! use activefilter ; then
+		einfo "Disabling active filter"
+		sed -i '/^FILTER=y/s:^:#:' pppd/Makefile.linux || die
+	fi
+
+	if use pam ; then
+		einfo "Enabling PAM"
+		sed -i '/^#USE_PAM=y/s:^#::' pppd/Makefile.linux || die
+	fi
+
+	if ! use ipv6 ; then
+		einfo "Disabling IPv6"
+		sed -i '/^HAVE_INET6/s:^:#:' pppd/Makefile.linux || die
+	else
+		echo "+ipv6" >> etc.ppp/options || die
+	fi
+
+	einfo "Enabling CBCP"
+	sed -i '/^#CBCP=y/s:#::' pppd/Makefile.linux || die
+
+	if use dhcp ; then
+		einfo "Adding ppp-dhcp plugin files"
+		sed \
+			-e '/^SUBDIRS :=/s:$: dhcp:' \
+			-i pppd/plugins/Makefile.linux || die
+	fi
+
+	if ! use eap-tls ; then
+		einfo "Disabling EAP-TLS pppd auth support"
+		sed -i '/^USE_EAPTLS=y/s:^:#:' pppd/Makefile.linux || die
+		einfo "Disabling EAP-TLS plugin support"
+		sed -i '/^CFLAGS += -DUSE_EAPTLS=1/s:^:#:' \
+			pppd/plugins/Makefile.linux || die
+	fi
+
+	# Set correct libdir
+	sed -i -e "s:/lib/pppd:/$(get_libdir)/pppd:" \
+		pppd/{pathnames.h,pppd.8} || die
+
+	if use radius ; then
+		#set the right paths in radiusclient.conf
+		sed -e "s:/usr/local/etc:/etc:" \
+			-e "s:/usr/local/sbin:/usr/sbin:" \
+			-i pppd/plugins/radius/etc/radiusclient.conf || die
+		#set config dir to /etc/ppp/radius
+		sed -i -e "s:/etc/radiusclient:/etc/ppp/radius:g" \
+			pppd/plugins/radius/{*.8,*.c,*.h} \
+			pppd/plugins/radius/etc/* || die
+	else
+		einfo "Disabling radius"
+		sed -i -e '/+= radius/s:^:#:' pppd/plugins/Makefile.linux || die
+	fi
+
+	# Respect our pkg-config settings.
+	sed -i \
+		-e 's:pkg-config:$(PKG_CONFIG):' \
+		contrib/pppgetpass/Makefile.linux || die
+	sed -i \
+		-e '/^LIBS/{s:-L/usr/local/ssl/lib::;s:-lcrypto:`$(PKG_CONFIG) --libs libcrypto`:}' \
+		pppd/Makefile.linux || die
+
+	eapply_user #549588
+}
+
+src_compile() {
+	tc-export AR CC PKG_CONFIG
+
+	append-cppflags \
+		-D_GNU_SOURCE \
+		-DRUNTIME_DATA_DIR=\'\"/run/l2tpipsec_vpn/\"\' \
+		-DALLOW_START_AS_NON_ROOT
+	emake COPTS="${CFLAGS}"
+
+	# build pppgetpass
+	cd contrib/pppgetpass || die
+	if use gtk ; then
+		emake -f Makefile.linux
+	else
+		emake pppgetpass.vt
+	fi
+}
+
+src_install() {
+	local i
+	for i in chat pppd pppdump pppstats ; do
+		doman ${i}/${i}.8
+		dosbin ${i}/${i}
+	done
+	fperms -w /usr/sbin/pppd
+
+	# Install pppd header files
+	emake -C pppd INSTROOT="${D}" install-devel
+
+	dosbin pppd/plugins/pppoe/pppoe-discovery
+
+	dodir /etc/ppp/peers
+	insinto /etc/ppp
+	insopts -o shill -g shill -m0600
+	newins etc.ppp/pap-secrets pap-secrets.example
+	newins etc.ppp/chap-secrets chap-secrets.example
+
+	insopts -o shill -g shill -m0644
+	doins etc.ppp/options
+
+	if use pam; then
+		pamd_mimic_system ppp auth account session
+	fi
+
+	local PLUGINS_DIR="/usr/$(get_libdir)/pppd/${PV}"
+	insinto "${PLUGINS_DIR}"
+	insopts -o shill -g shill -m0755
+	doins pppd/plugins/minconn.so
+	doins pppd/plugins/passprompt.so
+	doins pppd/plugins/passwordfd.so
+	doins pppd/plugins/winbind.so
+	doins pppd/plugins/pppoe/pppoe.so
+	doins pppd/plugins/pppol2tp/openl2tp.so
+	doins pppd/plugins/pppol2tp/pppol2tp.so
+	if use atm ; then
+		doins pppd/plugins/pppoatm/pppoatm.so
+	fi
+	if use dhcp ; then
+		doins pppd/plugins/dhcp/dhcpc.so
+	fi
+	if use radius ; then
+		doins pppd/plugins/radius/rad{ius,attr,realms}.so
+
+		#Copy radiusclient configuration files (#92878)
+		insinto /etc/ppp/radius
+		insopts -o shill -g shill -m0644
+		doins pppd/plugins/radius/etc/{dictionary*,issue,port-id-map,radiusclient.conf,realms,servers}
+
+		doman pppd/plugins/radius/pppd-rad{ius,attr}.8
+	fi
+
+	insinto /etc/modprobe.d
+	insopts -o shill -g shill -m0644
+	newins "${FILESDIR}/modules.ppp" ppp.conf
+
+	dodoc PLUGINS README* SETUP Changes-2.3 FAQ
+	dodoc "${FILESDIR}/README.mpls"
+
+	# This rules file is specific to CrOS and cannot be upstreamed, so must be
+	# carried forward.
+	udev_dorules "${FILESDIR}/99-pppd.rules"
+
+	dosbin scripts/p{on,off,log}
+	doman scripts/pon.1
+
+	# Adding misc. specialized scripts to doc dir
+	dodoc -r scripts
+	docinto scripts
+	dodoc -r scripts/chatchat
+
+	if use gtk ; then
+		dosbin contrib/pppgetpass/{pppgetpass.vt,pppgetpass.gtk}
+		newsbin contrib/pppgetpass/pppgetpass.sh pppgetpass
+	else
+		newsbin contrib/pppgetpass/pppgetpass.vt pppgetpass
+	fi
+	doman contrib/pppgetpass/pppgetpass.8
+}
+
+pkg_setup() {
+	enewuser shill
+	enewgroup shill
+}
+
+pkg_postinst() {
+	if linux-info_get_any_version && linux_config_src_exists ; then
+		echo
+		ewarn "If the following test report contains a missing kernel configuration option that you need,"
+		ewarn "you should reconfigure and rebuild your kernel before running pppd."
+		CONFIG_CHECK="~PPP ~PPP_ASYNC ~PPP_SYNC_TTY"
+		local ERROR_PPP="CONFIG_PPP:\t missing PPP support (REQUIRED)"
+		local ERROR_PPP_ASYNC="CONFIG_PPP_ASYNC:\t missing asynchronous serial line discipline (optional, but highly recommended)"
+		local WARNING_PPP_SYNC_TTY="CONFIG_PPP_SYNC_TTY:\t missing synchronous serial line discipline (optional; used by 'sync' pppd option)"
+		if use activefilter ; then
+			CONFIG_CHECK="${CONFIG_CHECK} ~PPP_FILTER"
+			local ERROR_PPP_FILTER="CONFIG_PPP_FILTER:\t missing PPP filtering support (REQUIRED)"
+		fi
+		CONFIG_CHECK="${CONFIG_CHECK} ~PPP_DEFLATE ~PPP_BSDCOMP ~PPP_MPPE"
+		local ERROR_PPP_DEFLATE="CONFIG_PPP_DEFLATE:\t missing Deflate compression (optional, but highly recommended)"
+		local ERROR_PPP_BSDCOMP="CONFIG_PPP_BSDCOMP:\t missing BSD-Compress compression (optional, but highly recommended)"
+		local WARNING_PPP_MPPE="CONFIG_PPP_MPPE:\t missing MPPE encryption (optional, mostly used by PPTP links)"
+		CONFIG_CHECK="${CONFIG_CHECK} ~PPPOE ~PACKET"
+		local WARNING_PPPOE="CONFIG_PPPOE:\t missing PPPoE support (optional, needed by pppoe plugin)"
+		local WARNING_PACKET="CONFIG_PACKET:\t missing AF_PACKET support (optional, used by pppoe and dhcpc plugins)"
+		if use atm ; then
+			CONFIG_CHECK="${CONFIG_CHECK} ~PPPOATM"
+			local WARNING_PPPOATM="CONFIG_PPPOATM:\t missing PPPoA support (optional, needed by pppoatm plugin)"
+		fi
+		check_extra_config
+	fi
+
+	# create *-secrets files if not exists
+	[[ -f "${EROOT}/etc/ppp/pap-secrets" ]] || \
+		cp -pP "${EROOT}/etc/ppp/pap-secrets.example" "${EROOT}/etc/ppp/pap-secrets"
+	[[ -f "${EROOT}/etc/ppp/chap-secrets" ]] || \
+		cp -pP "${EROOT}/etc/ppp/chap-secrets.example" "${EROOT}/etc/ppp/chap-secrets"
+
+	# lib name has changed
+	sed -i -e "s:^rp-\(pppoe.so\):\1:" "${EROOT}/etc/ppp/options" || die
+
+	echo
+	elog "Pon, poff and plog scripts have been supplied for experienced users."
+	elog "Users needing particular scripts (ssh,rsh,etc.) should check out the"
+	elog "/usr/share/doc/${PF}/scripts directory."
+
+	if [[ -n ${REPLACING_VERSIONS} ]] ; then
+		ewarn '"rp-pppoe.so" plugin has been renamed to "pppoe.so"'
+	fi
+}
diff --git a/net-dialup/xl2tpd/xl2tpd-1.3.12-r1.ebuild b/net-dialup/xl2tpd/xl2tpd-1.3.12-r2.ebuild
similarity index 100%
rename from net-dialup/xl2tpd/xl2tpd-1.3.12-r1.ebuild
rename to net-dialup/xl2tpd/xl2tpd-1.3.12-r2.ebuild
diff --git a/net-dns/avahi/Manifest b/net-dns/avahi/Manifest
index 6bf6b28..8827967 100644
--- a/net-dns/avahi/Manifest
+++ b/net-dns/avahi/Manifest
@@ -1 +1 @@
-DIST avahi-0.7.tar.gz 940047 BLAKE2B 8299577bf27ee65fad5d743dbf94202b148a6fc86825cae303f94c44482eea07cf6570d970ca286e81a787d6a64598b7123f2ac17a259ddc50ef431b9c94b530 SHA512 61f656da7614d8cca1862180038f571db3474c84f05db4d3509f614cdbf8b1a1047661b7e24d63682d5b48ed1bfa1b08b3c9e6dbe9222bcd62d99bc168a11abe
+DIST avahi-0.8.tar.gz 953319 BLAKE2B ddede1b8790ff3057ea5f4bb710e95578229e078a7abac83121e043017dda1ab3d971c723f920fdd4f3d98b88bd2cf21f9645bec1b7bbd2ea194cb399a5f5b46 SHA512 27bba9a551152dfc7e721f326042e7bfce55d227044a6cbaee04d6fb0e3f59c36e159c2b7a4dd42d1c955cdf37cc1c303e91991c08928bbded91d796e9a22abe
diff --git a/net-dns/avahi/avahi-0.7-r5.ebuild b/net-dns/avahi/avahi-0.7-r5.ebuild
deleted file mode 100644
index bb198a5..0000000
--- a/net-dns/avahi/avahi-0.7-r5.ebuild
+++ /dev/null
@@ -1,225 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-PYTHON_COMPAT=( python2_7 )
-PYTHON_REQ_USE="gdbm"
-
-WANT_AUTOMAKE=1.11
-
-inherit autotools cros-fuzzer cros-sanitizers eutils flag-o-matic multilib multilib-minimal mono-env python-r1 systemd user
-
-DESCRIPTION="System which facilitates service discovery on a local network"
-HOMEPAGE="http://avahi.org/"
-SRC_URI="https://github.com/lathiat/avahi/archive/v${PV}.tar.gz -> ${P}.tar.gz"
-
-S="${WORKDIR}/${P}"
-
-LICENSE="LGPL-2.1"
-SLOT="0"
-KEYWORDS="*"
-IUSE="autoipd bookmarks dbus doc fuzzer gdbm gtk gtk3 howl-compat +introspection ipv6 kernel_linux mdnsresponder-compat mono nls python qt5 selinux test"
-
-REQUIRED_USE="
-	python? ( dbus gdbm ${PYTHON_REQUIRED_USE} )
-	mono? ( dbus )
-	howl-compat? ( dbus )
-	mdnsresponder-compat? ( dbus )
-"
-
-COMMON_DEPEND="
-	dev-libs/libdaemon
-	dev-libs/expat
-	dev-libs/glib:2[${MULTILIB_USEDEP}]
-	gdbm? ( sys-libs/gdbm:=[${MULTILIB_USEDEP}] )
-	qt5? ( dev-qt/qtcore:5 )
-	gtk? ( x11-libs/gtk+:2[${MULTILIB_USEDEP}] )
-	gtk3? ( x11-libs/gtk+:3[${MULTILIB_USEDEP}] )
-	dbus? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
-	kernel_linux? ( sys-libs/libcap )
-	introspection? ( dev-libs/gobject-introspection:= )
-	mono? (
-		dev-lang/mono
-		gtk? ( dev-dotnet/gtk-sharp )
-	)
-	python? (
-		${PYTHON_DEPS}
-		dbus? ( dev-python/dbus-python[${PYTHON_USEDEP}] )
-		introspection? ( dev-python/pygobject:3[${PYTHON_USEDEP}] )
-	)
-	bookmarks? (
-		${PYTHON_DEPS}
-		>=dev-python/twisted-16.0.0[${PYTHON_USEDEP}]
-	)
-"
-
-DEPEND="
-	${COMMON_DEPEND}
-	doc? ( app-doc/doxygen )
-	app-doc/xmltoman
-	dev-util/intltool
-	virtual/pkgconfig[${MULTILIB_USEDEP}]
-"
-
-RDEPEND="
-	${COMMON_DEPEND}
-	howl-compat? ( !net-misc/howl )
-	mdnsresponder-compat? ( !net-misc/mDNSResponder )
-	selinux? ( sec-policy/selinux-avahi )
-"
-
-MULTILIB_WRAPPED_HEADERS=( /usr/include/avahi-qt5/qt-watch.h )
-
-PATCHES=( "${FILESDIR}/${P}-qt5.patch" "${FILESDIR}/${P}-fuzzer.patch"  )
-
-pkg_preinst() {
-	enewgroup netdev
-	enewgroup avahi
-	enewuser avahi -1 -1 -1 avahi
-
-	if use autoipd; then
-		enewgroup avahi-autoipd
-		enewuser avahi-autoipd -1 -1 -1 avahi-autoipd
-	fi
-}
-
-pkg_setup() {
-	use mono && mono-env_pkg_setup
-}
-
-src_prepare() {
-	default
-
-	if ! use ipv6; then
-		sed -i \
-			-e s/use-ipv6=yes/use-ipv6=no/ \
-			avahi-daemon/avahi-daemon.conf || die
-	fi
-
-	sed -i\
-		-e "s:\\.\\./\\.\\./\\.\\./doc/avahi-docs/html/:../../../doc/${PF}/html/:" \
-		doxygen_to_devhelp.xsl || die
-
-	# Prevent .pyc files in DESTDIR
-	>py-compile
-
-	eautoreconf
-
-	# bundled manpages
-	multilib_copy_sources
-}
-
-src_configure() {
-	# those steps should be done once-per-ebuild rather than per-ABI
-	cros_optimize_package_for_speed
-	sanitizers-setup-env
-	use sh && replace-flags -O? -O0
-	use python && python_setup
-
-	multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-	local myconf=( --disable-static )
-
-	if use python; then
-		myconf+=(
-			$(multilib_native_use_enable dbus python-dbus)
-			$(multilib_native_use_enable introspection pygobject)
-		)
-	fi
-
-	if use mono; then
-		myconf+=( $(multilib_native_use_enable doc monodoc) )
-	fi
-
-	if ! multilib_is_native_abi; then
-		myconf+=(
-			# used by daemons only
-			--disable-libdaemon
-			--with-xml=none
-		)
-	fi
-
-	if use fuzzer ; then
-		myconf+=(--enable-fuzzer)
-	fi
-
-	myconf+=( $(multilib_native_use_enable qt5) )
-
-	econf \
-		--localstatedir="${EPREFIX}/var" \
-		--with-distro=gentoo \
-		--disable-python-dbus \
-		--enable-manpages \
-		--enable-xmltoman \
-		--disable-monodoc \
-		--enable-glib \
-		--enable-gobject \
-		$(multilib_native_use_enable test tests) \
-		$(multilib_native_use_enable autoipd) \
-		$(use_enable mdnsresponder-compat compat-libdns_sd) \
-		$(use_enable howl-compat compat-howl) \
-		$(multilib_native_use_enable doc doxygen-doc) \
-		$(multilib_native_use_enable mono) \
-		$(use_enable dbus) \
-		$(multilib_native_use_enable python) \
-		$(use_enable gtk) \
-		$(use_enable gtk3) \
-		$(use_enable nls) \
-		$(multilib_native_use_enable introspection) \
-		--disable-qt3 \
-		--disable-qt4 \
-		$(use_enable gdbm) \
-		--with-systemdsystemunitdir="$(systemd_get_systemunitdir)" \
-		"${myconf[@]}"
-}
-
-multilib_src_compile() {
-	emake
-
-	multilib_is_native_abi && use doc && emake avahi.devhelp
-}
-
-multilib_src_install() {
-	emake install DESTDIR="${D}"
-	use bookmarks && use python && use dbus && use gtk || \
-		rm -f "${ED}"/usr/bin/avahi-bookmarks
-
-	# https://github.com/lathiat/avahi/issues/28
-	use howl-compat && dosym avahi-compat-howl.pc /usr/$(get_libdir)/pkgconfig/howl.pc
-	use mdnsresponder-compat && dosym avahi-compat-libdns_sd/dns_sd.h /usr/include/dns_sd.h
-
-	if multilib_is_native_abi && use doc; then
-		docinto html
-		dodoc -r doxygen/html/.
-		insinto /usr/share/devhelp/books/avahi
-		doins avahi.devhelp || die
-	fi
-
-	fuzzer_install "${FILESDIR}/OWNERS" "examples/.libs/recv_fuzzer"
-}
-
-multilib_src_install_all() {
-	if use autoipd; then
-		insinto /$(get_libdir)/rcscripts/net
-		doins "${FILESDIR}"/autoipd.sh
-
-		insinto /$(get_libdir)/netifrc/net
-		newins "${FILESDIR}"/autoipd-openrc.sh autoipd.sh
-	fi
-
-	dodoc docs/{AUTHORS,NEWS,README,TODO}
-
-	prune_libtool_files --all
-}
-
-pkg_postinst() {
-	if use autoipd; then
-		elog
-		elog "To use avahi-autoipd to configure your interfaces with IPv4LL (RFC3927)"
-		elog "addresses, just set config_<interface>=( autoipd ) in /etc/conf.d/net!"
-		elog
-	fi
-}
diff --git a/net-dns/avahi/avahi-0.8-r2.ebuild b/net-dns/avahi/avahi-0.8-r2.ebuild
new file mode 120000
index 0000000..619280b
--- /dev/null
+++ b/net-dns/avahi/avahi-0.8-r2.ebuild
@@ -0,0 +1 @@
+avahi-0.8.ebuild
\ No newline at end of file
diff --git a/net-dns/avahi/avahi-0.8.ebuild b/net-dns/avahi/avahi-0.8.ebuild
new file mode 100644
index 0000000..c012f2e
--- /dev/null
+++ b/net-dns/avahi/avahi-0.8.ebuild
@@ -0,0 +1,226 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+PYTHON_COMPAT=( python3_{7,8} )
+PYTHON_REQ_USE="gdbm"
+inherit autotools cros-fuzzer cros-sanitizers eutils flag-o-matic multilib multilib-minimal mono-env python-r1 systemd user
+
+DESCRIPTION="System which facilitates service discovery on a local network"
+HOMEPAGE="http://avahi.org/"
+SRC_URI="https://github.com/lathiat/avahi/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="*"
+IUSE="autoipd bookmarks dbus doc fuzzer gdbm gtk gtk2 howl-compat +introspection ipv6 kernel_linux mdnsresponder-compat mono nls python qt5 selinux systemd test"
+
+REQUIRED_USE="
+	python? ( dbus gdbm ${PYTHON_REQUIRED_USE} )
+	mono? ( dbus )
+	howl-compat? ( dbus )
+	mdnsresponder-compat? ( dbus )
+	systemd? ( dbus )
+"
+
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	dev-libs/libdaemon
+	dev-libs/libevent:=[${MULTILIB_USEDEP}]
+	dev-libs/expat
+	dev-libs/glib:2[${MULTILIB_USEDEP}]
+	gdbm? ( sys-libs/gdbm:=[${MULTILIB_USEDEP}] )
+	qt5? ( dev-qt/qtcore:5 )
+	gtk2? ( x11-libs/gtk+:2[${MULTILIB_USEDEP}] )
+	gtk?  ( x11-libs/gtk+:3[${MULTILIB_USEDEP}] )
+	dbus? ( sys-apps/dbus[${MULTILIB_USEDEP}] )
+	kernel_linux? ( sys-libs/libcap )
+	introspection? ( dev-libs/gobject-introspection:= )
+	mono? (
+		dev-lang/mono
+		gtk2? ( dev-dotnet/gtk-sharp:2 )
+	)
+	python? (
+		${PYTHON_DEPS}
+		dbus? ( dev-python/dbus-python[${PYTHON_USEDEP}] )
+		introspection? ( dev-python/pygobject:3[${PYTHON_USEDEP}] )
+	)
+	bookmarks? (
+		${PYTHON_DEPS}
+		>=dev-python/twisted-16.0.0[${PYTHON_USEDEP}]
+	)
+"
+RDEPEND="
+	${DEPEND}
+	selinux? ( sec-policy/selinux-avahi )
+"
+BDEPEND="
+	dev-util/glib-utils
+	doc? ( app-doc/doxygen )
+	app-doc/xmltoman
+	dev-util/intltool
+	virtual/pkgconfig
+"
+
+MULTILIB_WRAPPED_HEADERS=( /usr/include/avahi-qt5/qt-watch.h )
+
+PATCHES=(
+	"${FILESDIR}/${PN}-0.7-fuzzer.patch"
+	"${FILESDIR}/${PN}-0.7-log-address-resolution.patch"
+	"${FILESDIR}/${PN}-0.7-cache-host-name-record-A.patch"
+)
+
+pkg_preinst() {
+	enewgroup netdev
+	enewgroup avahi
+	enewuser avahi -1 -1 -1 avahi
+	if use autoipd; then
+		enewgroup avahi-autoipd
+		enewuser avahi-autoipd -1 -1 -1 avahi-autoipd
+	fi
+}
+
+pkg_setup() {
+	use mono && mono-env_pkg_setup
+	use python || use bookmarks && python_setup
+}
+
+src_prepare() {
+	default
+
+	if ! use ipv6; then
+		sed -i \
+			-e "s/use-ipv6=yes/use-ipv6=no/" \
+			avahi-daemon/avahi-daemon.conf || die
+	fi
+
+	sed -i \
+		-e "s:\\.\\./\\.\\./\\.\\./doc/avahi-docs/html/:../../../doc/${PF}/html/:" \
+		doxygen_to_devhelp.xsl || die
+
+	eautoreconf
+
+	# bundled manpages
+	multilib_copy_sources
+}
+
+src_configure() {
+	# those steps should be done once-per-ebuild rather than per-ABI
+	cros_optimize_package_for_speed
+	sanitizers-setup-env
+	use sh && replace-flags -O? -O0
+	use python && python_setup
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	local myconf=(
+		--disable-monodoc
+		--disable-python-dbus
+		--disable-qt3
+		--disable-qt4
+		--disable-static
+		--enable-manpages
+		--enable-glib
+		--enable-gobject
+		--enable-xmltoman
+		--localstatedir="${EPREFIX}/var"
+		--with-distro=gentoo
+		--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+		$(use_enable dbus)
+		$(use_enable gdbm)
+		$(use_enable gtk2 gtk)
+		$(use_enable gtk  gtk3)
+		$(use_enable howl-compat compat-howl)
+		$(use_enable mdnsresponder-compat compat-libdns_sd)
+		$(use_enable nls)
+		$(multilib_native_use_enable autoipd)
+		$(multilib_native_use_enable doc doxygen-doc)
+		$(multilib_native_use_enable introspection)
+		$(multilib_native_use_enable mono)
+		$(multilib_native_use_enable python)
+		$(multilib_native_use_enable test tests)
+	)
+
+	if use python; then
+		myconf+=(
+			$(multilib_native_use_enable dbus python-dbus)
+			$(multilib_native_use_enable introspection pygobject)
+		)
+	fi
+
+	if use mono; then
+		myconf+=( $(multilib_native_use_enable doc monodoc) )
+	fi
+
+	if ! multilib_is_native_abi; then
+		myconf+=(
+			# used by daemons only
+			--disable-libdaemon
+			--with-xml=none
+		)
+	fi
+
+	if use fuzzer ; then
+		myconf+=(--enable-fuzzer)
+	fi
+
+	myconf+=( $(multilib_native_use_enable qt5) )
+
+	econf "${myconf[@]}"
+}
+
+multilib_src_compile() {
+	emake
+
+	multilib_is_native_abi && use doc && emake avahi.devhelp
+}
+
+multilib_src_install() {
+	emake install DESTDIR="${D}"
+	use bookmarks && use python && use dbus && use gtk2 || \
+		rm -f "${ED}"/usr/bin/avahi-bookmarks
+
+	# https://github.com/lathiat/avahi/issues/28
+	use howl-compat && dosym avahi-compat-howl.pc /usr/$(get_libdir)/pkgconfig/howl.pc
+	use mdnsresponder-compat && dosym avahi-compat-libdns_sd/dns_sd.h /usr/include/dns_sd.h
+
+	if multilib_is_native_abi && use doc; then
+		docinto html
+		dodoc -r doxygen/html/.
+		insinto /usr/share/devhelp/books/avahi
+		doins avahi.devhelp
+	fi
+
+	fuzzer_install "${FILESDIR}/OWNERS" "examples/.libs/recv_fuzzer"
+
+	# The build system creates an empty "/run" directory, so we clean it up here
+	rmdir "${ED}"/run || die
+}
+
+multilib_src_install_all() {
+	if use autoipd; then
+		insinto /$(get_libdir)/rcscripts/net
+		doins "${FILESDIR}"/autoipd.sh
+
+		insinto /$(get_libdir)/netifrc/net
+		newins "${FILESDIR}"/autoipd-openrc.sh autoipd.sh
+	fi
+
+	dodoc docs/{AUTHORS,NEWS,README,TODO}
+
+	find "${ED}" -name '*.la' -type f -delete || die
+}
+
+pkg_postinst() {
+	if use autoipd; then
+		elog
+		elog "To use avahi-autoipd to configure your interfaces with IPv4LL (RFC3927)"
+		elog "addresses, just set config_<interface>=( autoipd ) in /etc/conf.d/net!"
+		elog
+	fi
+
+	systemd_reenable avahi-daemon.service
+}
diff --git a/net-dns/avahi/avahi.bashrc b/net-dns/avahi/avahi.bashrc
index 0b5a5fb..27ffbce 100644
--- a/net-dns/avahi/avahi.bashrc
+++ b/net-dns/avahi/avahi.bashrc
@@ -1,12 +1,7 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Copyright 2021 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.
 
-cros_pre_src_prepare_avahi_patches() {
-	# TODO: remove on next uprev.
-	patch -p1 < "${BASHRC_FILESDIR}"/${P}-drop-unicast-non-local.patch || die
-}
-
 cros_post_src_install_avahi_nls() {
 	# Even if we build w/USE=-nls, avahi forces it back on when glib is
 	# enabled.  Forcibly punt the translations since we never use them.
diff --git a/net-dns/avahi/files/avahi-0.7-cache-host-name-record-A.patch b/net-dns/avahi/files/avahi-0.7-cache-host-name-record-A.patch
new file mode 100644
index 0000000..2802cee
--- /dev/null
+++ b/net-dns/avahi/files/avahi-0.7-cache-host-name-record-A.patch
@@ -0,0 +1,212 @@
+From: Pranav Batra <batrapranav@chromium.org>
+Subject: Cache mDNS host name records (IPv4, record A) for 12-24 hours after expiration.
+
+By default, the address record for a .local mDNS domain name is removed from the cache after 2 minutes.
+When resolving a host name, if the address record is not found in the cache, avahi attempts to query the
+network for the record. If a response is not received within 5 seconds (see TIMEOUT_MSEC in
+avahi-core/resolve_service.c), avahi will return an error.
+
+With this patch, instead of returning an error, avahi will attempt to query a backup resource record
+cache that holds IPv4 address records (A) for an additional 12-24 hours and if a record is found,
+return that record instead of an error.
+
+Note that as the code block that adds entries to the cache and the code block that queries the cache
+both run under the same process id and thread id, no mutex is necessary.
+
+Also note that avahi is configured with IPv6 support disabled, so there is no need
+to store AAAA records in the backup resource record cache.
+--- a/avahi-core/browse.h
++++ b/avahi-core/browse.h
+@@ -20,6 +20,8 @@
+   USA.
+ ***/
+ 
++#include <time.h>
++
+ #include <avahi-common/llist.h>
+ 
+ #include "core.h"
+@@ -28,6 +30,17 @@
+ #include "dns.h"
+ #include "lookup.h"
+ 
++extern AvahiHashmap *host_cache_archive;
++extern AvahiHashmap *host_cache_current;
++extern AvahiIfIndex host_interface;
++
++typedef struct HostCacheRecord HostCacheRecord;
++
++struct HostCacheRecord {
++    AvahiRecord *record;
++    time_t time;
++};
++
+ typedef struct AvahiSRBLookup AvahiSRBLookup;
+ 
+ struct AvahiSRecordBrowser {
+--- a/avahi-core/resolve-host-name.c
++++ b/avahi-core/resolve-host-name.c
+@@ -84,17 +84,59 @@ static void finish(AvahiSHostNameResolver *r, AvahiResolverEvent event) {
+             }
+             char addr[AVAHI_ADDRESS_STR_MAX];
+             avahi_address_snprint(addr, sizeof(addr), &a);
+-            avahi_log_info("Resolved hostname %s: %s", r->host_name, addr);
+-
++            avahi_log_info("Resolved hostname %s (%s): %s (interface %d, protocol %d, flags %d, IPv4 %s, IPv6 %s, ttl %d)",
++                r->host_name,
++                r->address_record->key->name,
++                addr,
++                r->interface,
++                r->protocol,
++                r->flags,
++                r->record_browser_a?"yes":"no",
++                r->record_browser_aaaa?"yes":"no",
++                r->address_record->ttl);
+             r->callback(r, r->interface, r->protocol, AVAHI_RESOLVER_FOUND, r->address_record->key->name, &a, r->flags, r->userdata);
+             break;
+ 
+         }
+ 
+-        case AVAHI_RESOLVER_FAILURE:
+-            avahi_log_warn("Failed to resolve hostname %s", r->host_name);
+-            r->callback(r, r->interface, r->protocol, event, r->host_name, NULL, r->flags, r->userdata);
++        case AVAHI_RESOLVER_FAILURE: {
++            HostCacheRecord *record = NULL;
++            if (host_cache_current)
++                record = avahi_hashmap_lookup(host_cache_current, r->host_name);
++            if (!record && host_cache_archive)
++                record = avahi_hashmap_lookup(host_cache_archive, r->host_name);
++            if (!record ||
++                !r->record_browser_a ||
++                (r->protocol != AVAHI_PROTO_INET && r->protocol != AVAHI_PROTO_UNSPEC) ||
++                r->address_record) {
++                // Although avahi is configured to only use the IPv4 mDNS broadcast address (224.0.0.251),
++                // it turns out IPv6 host address records (AAAA) can be sent via IPv4.
++                // r->protocol is based on the mDNS broadcast address used and will generally always be
++                // -1 (any protocol) or 0 (IPv4; AVAHI_PROTO_INET).
++                // If an IPv4 address is requested (avahi-resolve-host-name -4), r->record_browser_a will be initialized.
++                // If an IPv6 address is requested (avahi-resolve-host-name -6), r->record_browser_aaaa will be initialized.
++                // Both data structures will be initialized if the address type aprotocol is unspecified.
++                avahi_log_warn("Failed to resolve hostname %s (interface %d, protocol %d, flags %d, IPv4 %s, IPv6 %s)",
++                    r->host_name,
++                    r->interface,
++                    r->protocol,
++                    r->flags,
++                    r->record_browser_a?"yes":"no",
++                    r->record_browser_aaaa?"yes":"no");
++                if (r->address_record)
++                    avahi_log_error("Assertion failed: !r->address_record");
++                r->callback(r, r->interface, r->protocol, event, r->host_name, NULL, r->flags, r->userdata);
++                break;
++            }
++            avahi_log_warn("Using stale mDNS A record for %s (%d seconds old)", r->host_name, time(NULL) - record->time);
++            r->flags = AVAHI_LOOKUP_RESULT_CACHED | AVAHI_LOOKUP_RESULT_MULTICAST; // 5
++            r->protocol = AVAHI_PROTO_INET;
++            if (r->interface <= 0)
++                r->interface = host_interface;
++            r->address_record = avahi_record_ref(record->record);
++            finish(r, AVAHI_RESOLVER_FOUND);
+             break;
++        }
+     }
+ }
+ 
+--- a/avahi-core/server.c
++++ b/avahi-core/server.c
+@@ -26,12 +26,14 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+ #include <string.h>
++#include <strings.h>
+ #include <sys/utsname.h>
+ #include <unistd.h>
+ #include <errno.h>
+ #include <stdio.h>
+ #include <assert.h>
+ #include <stdlib.h>
++#include <ctype.h>
+ 
+ #include <avahi-common/domain.h>
+ #include <avahi-common/timeval.h>
+@@ -51,6 +53,11 @@
+ 
+ #define AVAHI_DEFAULT_CACHE_ENTRIES_MAX 4096
+ 
++AvahiHashmap *host_cache_archive = NULL;
++AvahiHashmap *host_cache_current = NULL;
++AvahiIfIndex host_interface = AVAHI_IF_UNSPEC;
++time_t host_time = 0;
++
+ static void enum_aux_records(AvahiServer *s, AvahiInterface *i, const char *name, uint16_t type, void (*callback)(AvahiServer *s, AvahiRecord *r, int flush_cache, void* userdata), void* userdata) {
+     assert(s);
+     assert(i);
+@@ -655,6 +662,45 @@ fail:
+     avahi_record_list_flush(s->record_list);
+ }
+ 
++static unsigned string_case_hash(const void *data) {
++    const char *p = data;
++    unsigned hash = 0;
++
++    assert(p);
++
++    for (; *p; p++)
++        hash = 31 * hash + tolower(*p);
++
++    return hash;
++}
++
++static int string_case_equal(const void *a, const void *b) {
++    const char *p = a, *q = b;
++
++    assert(p);
++    assert(q);
++
++    return strcasecmp(p, q) == 0;
++}
++
++static void free_host_record(void* p) {
++    HostCacheRecord *r = p;
++    assert(r);
++    avahi_record_unref(r->record);
++    avahi_free(r);
++}
++
++static AvahiHashmap *new_host_hashmap() {
++    return avahi_hashmap_new(string_case_hash, string_case_equal, avahi_free, free_host_record);
++}
++
++static HostCacheRecord *new_host_record(AvahiRecord *r, time_t t) {
++   HostCacheRecord *record = avahi_new(HostCacheRecord, 1);
++   record->record = avahi_record_ref(r);
++   record->time = t;
++   return record;
++}
++
+ static void handle_response_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInterface *i, const AvahiAddress *a, int from_local_iface) {
+     unsigned n;
+ 
+@@ -680,6 +726,23 @@ static void handle_response_packet(AvahiServer *s, AvahiDnsPacket *p, AvahiInter
+                     reflect_response(s, i, record, cache_flush);
+                 avahi_cache_update(i->cache, record, cache_flush, a);
+                 avahi_response_scheduler_incoming(i->response_scheduler, record, cache_flush);
++                if (record->key->type == AVAHI_DNS_TYPE_A) {
++                        host_interface = i->hardware->index;
++                        // This is always called before we resolve an address if we've seen valid records.
++                        if (!host_cache_archive)
++                            host_cache_archive = new_host_hashmap();
++                        if (!host_cache_current)
++                            host_cache_current = new_host_hashmap();
++                        time_t current_time = time(NULL);
++                        if (current_time > host_time + 12*3600) { // Rotate the cache every 12 hours.
++                            host_time = current_time;
++                            avahi_hashmap_free(host_cache_archive);
++                            host_cache_archive = host_cache_current;
++                            host_cache_current = new_host_hashmap();
++                        }
++                        avahi_hashmap_remove(host_cache_archive, record->key->name);
++                        avahi_hashmap_replace(host_cache_current, avahi_strdup(record->key->name), new_host_record(record, current_time));
++                }
+             }
+         }
+ 
diff --git a/net-dns/avahi/files/avahi-0.7-drop-unicast-non-local.patch b/net-dns/avahi/files/avahi-0.7-drop-unicast-non-local.patch
deleted file mode 100644
index b9562d7..0000000
--- a/net-dns/avahi/files/avahi-0.7-drop-unicast-non-local.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From e111def44a7df4624a4aa3f85fe98054bffb6b4f Mon Sep 17 00:00:00 2001
-From: Trent Lloyd <trent@lloyd.id.au>
-Date: Sat, 22 Dec 2018 09:06:07 +0800
-Subject: [PATCH] Drop legacy unicast queries from address not on local link
-
-When handling legacy unicast queries, ensure that the source IP is
-inside a subnet on the local link, otherwise drop the packet.
-
-Fixes #145
-Fixes #203
-CVE-2017-6519
-CVE-2018-100084
----
-From upstream:
-  https://github.com/lathiat/avahi/commit/e111def44a7df4624a4aa3f85fe98054bffb6b4f
-
- avahi-core/server.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/avahi-core/server.c b/avahi-core/server.c
-index a2cb19a83921..a2580e38a349 100644
---- a/avahi-core/server.c
-+++ b/avahi-core/server.c
-@@ -930,6 +930,7 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres
- 
-     if (avahi_dns_packet_is_query(p)) {
-         int legacy_unicast = 0;
-+        char t[AVAHI_ADDRESS_STR_MAX];
- 
-         /* For queries EDNS0 might allow ARCOUNT != 0. We ignore the
-          * AR section completely here, so far. Until the day we add
-@@ -947,6 +948,13 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres
-             legacy_unicast = 1;
-         }
- 
-+        if (!is_mdns_mcast_address(dst_address) &&
-+            !avahi_interface_address_on_link(i, src_address)) {
-+
-+            avahi_log_debug("Received non-local unicast query from host %s on interface '%s.%i'.", avahi_address_snprint(t, sizeof(t), src_address), i->hardware->name, i->protocol);
-+            return;
-+        }
-+
-         if (legacy_unicast)
-             reflect_legacy_unicast_query_packet(s, p, i, src_address, port);
- 
--- 
-2.20.1.97.g81188d93c3-goog
-
diff --git a/net-dns/avahi/files/avahi-0.7-log-address-resolution.patch b/net-dns/avahi/files/avahi-0.7-log-address-resolution.patch
new file mode 100644
index 0000000..4b3c0bd
--- /dev/null
+++ b/net-dns/avahi/files/avahi-0.7-log-address-resolution.patch
@@ -0,0 +1,93 @@
+From: Pranav Batra <batrapranav@chromium.org>
+
+Add address resolution logging messages to help debug b/172217141.
+
+Both dbus (avahi-client) and socket (avahi-daemon) requests are logged.
+Programs such as CUPS use gethostbyname() for host name resolution.
+The glibc gethostbyname() function calls the nss-mdns plugin which sends
+a RESOLVE-ADDRESS request to the avahi-daemon via socket to obtain the
+ip address.
+
+TL;DR
+CUPS -> gethostbyname() -> mdns_minimal -> avahi-daemon -> avahi-core
+avahi-resolve -> avahi-client -> avahi-core
+See https://www.avahi.org/doxygen/html/ for more information.
+
+--- a/avahi-core/resolve-address.c
++++ b/avahi-core/resolve-address.c
+@@ -29,6 +29,7 @@
+ #include <avahi-common/domain.h>
+ 
+ #include "browse.h"
++#include "log.h"
+ 
+ #define TIMEOUT_MSEC 5000
+ 
+@@ -63,12 +64,17 @@ static void finish(AvahiSAddressResolver *r, AvahiResolverEvent event) {
+     }
+ 
+     switch (event) {
++        char addr[AVAHI_ADDRESS_STR_MAX];
++        avahi_address_snprint(addr, sizeof(addr), &r->address);
+         case AVAHI_RESOLVER_FAILURE:
++            avahi_log_warn("Failed to resolve address %s", addr);
+             r->callback(r, r->interface, r->protocol, event, &r->address, NULL, r->flags, r->userdata);
+             break;
+ 
+         case AVAHI_RESOLVER_FOUND:
+             assert(r->ptr_record);
++            // There are several DNS resource record types.
++            avahi_log_info("Found record for %s", addr);
+             r->callback(r, r->interface, r->protocol, event, &r->address, r->ptr_record->data.ptr.name, r->flags, r->userdata);
+             break;
+     }
+--- a/avahi-core/resolve-host-name.c
++++ b/avahi-core/resolve-host-name.c
+@@ -63,6 +63,7 @@ static void finish(AvahiSHostNameResolver *r, AvahiResolverEvent event) {
+ 
+     switch (event) {
+         case AVAHI_RESOLVER_FOUND: {
++
+             AvahiAddress a;
+ 
+             assert(r->address_record);
+@@ -81,6 +82,9 @@ static void finish(AvahiSHostNameResolver *r, AvahiResolverEvent event) {
+                 default:
+                     abort();
+             }
++            char addr[AVAHI_ADDRESS_STR_MAX];
++            avahi_address_snprint(addr, sizeof(addr), &a);
++            avahi_log_info("Resolved hostname %s: %s", r->host_name, addr);
+ 
+             r->callback(r, r->interface, r->protocol, AVAHI_RESOLVER_FOUND, r->address_record->key->name, &a, r->flags, r->userdata);
+             break;
+@@ -88,7 +92,7 @@ static void finish(AvahiSHostNameResolver *r, AvahiResolverEvent event) {
+         }
+ 
+         case AVAHI_RESOLVER_FAILURE:
+-
++            avahi_log_warn("Failed to resolve hostname %s", r->host_name);
+             r->callback(r, r->interface, r->protocol, event, r->host_name, NULL, r->flags, r->userdata);
+             break;
+     }
+--- a/avahi-core/resolve-service.c
++++ b/avahi-core/resolve-service.c
+@@ -79,7 +79,7 @@ static void finish(AvahiSServiceResolver *r, AvahiResolverEvent event) {
+ 
+     switch (event) {
+         case AVAHI_RESOLVER_FAILURE:
+-
++            avahi_log_warn("Failed to resolve service %s (type: %s, domain: %s)", r->service_name, r->service_type, r->domain_name);
+             r->callback(
+                 r,
+                 r->interface,
+@@ -119,6 +119,9 @@ static void finish(AvahiSServiceResolver *r, AvahiResolverEvent event) {
+                     default:
+                         assert(0);
+                 }
++                char addr[AVAHI_ADDRESS_STR_MAX];
++                avahi_address_snprint(addr, sizeof(addr), &a);
++                avahi_log_info("Resolved service %s (type: %s, domain: %s): %s", r->service_name, r->service_type, r->domain_name, addr);
+             }
+ 
+             r->callback(
diff --git a/net-dns/avahi/files/avahi-0.7-qt5.patch b/net-dns/avahi/files/avahi-0.7-qt5.patch
deleted file mode 100644
index aa7e4a5..0000000
--- a/net-dns/avahi/files/avahi-0.7-qt5.patch
+++ /dev/null
@@ -1,187 +0,0 @@
-diff -rupN avahi-0.6.31/avahi-qt/Makefile.am avahi-qt5/avahi-qt/Makefile.am
---- avahi-0.6.31/avahi-qt/Makefile.am	2010-08-25 19:51:39.011153001 -0500
-+++ avahi-qt5/avahi-qt/Makefile.am	2014-10-19 13:55:14.825086832 -0500
-@@ -65,4 +65,26 @@ libavahi_qt4_la_LIBADD = $(AM_LDADD) ../
- libavahi_qt4_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBAVAHI_QT4_VERSION_INFO)
- endif
- 
-+if HAVE_QT5
-+
-+avahiqt5includedir=$(includedir)/avahi-qt5
-+avahiqt5include_HEADERS = \
-+	qt-watch.h
-+
-+lib_LTLIBRARIES += \
-+	libavahi-qt5.la
-+
-+BUILT_SOURCES += qt-watch.moc5
-+
-+libavahi_qt5_la_SOURCES = \
-+	qt-watch.cpp
-+
-+qt-watch.moc5: qt-watch.cpp
-+	$(AM_V_GEN)$(MOC_QT5) $^ > $@
-+
-+libavahi_qt5_la_CPPFLAGS = $(AM_CFLAGS) --std=gnu++11 $(QT5_CFLAGS) -DQT5 $(VISIBILITY_HIDDEN_CFLAGS)
-+libavahi_qt5_la_LIBADD = $(AM_LDADD) ../avahi-common/libavahi-common.la $(QT5_LIBS)
-+libavahi_qt5_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(LIBAVAHI_QT5_VERSION_INFO)
-+endif
-+
- CLEANFILES = $(BUILT_SOURCES)
-diff -rupN avahi-0.6.31/avahi-qt/qt-watch.cpp avahi-qt5/avahi-qt/qt-watch.cpp
---- avahi-0.6.31/avahi-qt/qt-watch.cpp	2010-08-25 19:51:39.011153001 -0500
-+++ avahi-qt5/avahi-qt/qt-watch.cpp	2014-10-19 13:56:14.076226518 -0500
-@@ -18,10 +18,10 @@
- ***/
- 
- #include <sys/time.h>
--#ifdef QT4
--#include <Qt/qsocketnotifier.h>
--#include <Qt/qobject.h>
--#include <Qt/qtimer.h>
-+#if defined(QT5) || defined(QT4)
-+#include <QSocketNotifier>
-+#include <QObject>
-+#include <QTimer>
- #else
- #include <qsocketnotifier.h>
- #include <qobject.h>
-@@ -114,7 +114,7 @@ AvahiTimeout::AvahiTimeout(const struct
-     m_callback(callback), m_userdata(userdata)
- {
-     connect(&m_timer, SIGNAL(timeout()), this, SLOT(timeout()));
--#ifdef QT4
-+#if defined(QT5) || defined(QT4)
-     m_timer.setSingleShot(true);
- #endif
-     update(tv);
-@@ -125,7 +125,7 @@ void AvahiTimeout::update(const struct t
-     m_timer.stop();
-     if (tv) {
-     AvahiUsec u = avahi_age(tv)/1000;
--#ifdef QT4
-+#if defined(QT5) || defined(QT4)
-     m_timer.start( (u>0) ? 0 : -u);
- #else
-     m_timer.start( (u>0) ? 0 : -u,true);
-@@ -191,8 +191,10 @@ const AvahiPoll* avahi_qt_poll_get(void)
-     return &qt_poll;
- }
- 
--#ifdef QT4
-+#if defined(QT5)
-+#include "qt-watch.moc5"
-+#elif defined(QT4)
- #include "qt-watch.moc4"
--#else
-+#elif defined(QT3)
- #include "qt-watch.moc3"
- #endif
-diff -rupN avahi-0.6.31/avahi-qt5.pc.in avahi-qt5/avahi-qt5.pc.in
---- avahi-0.6.31/avahi-qt5.pc.in	1969-12-31 18:00:00.000000000 -0600
-+++ avahi-qt5/avahi-qt5.pc.in	2014-10-19 13:55:14.825086832 -0500
-@@ -0,0 +1,11 @@
-+prefix=@prefix@
-+exec_prefix=${prefix}
-+libdir=@libdir@
-+includedir=${prefix}/include
-+
-+Name: avahi-qt5
-+Description: Avahi Multicast DNS Responder (QT5 Support)
-+Version: @PACKAGE_VERSION@
-+Requires: Qt5Core >= 5.0.0
-+Libs: -L${libdir} -lavahi-qt5
-+Cflags: -D_REENTRANT -I${includedir}
-diff -rupN avahi-0.6.31/configure.ac avahi-qt5/configure.ac
---- avahi-0.6.31/configure.ac	2012-02-14 15:44:25.484742099 -0600
-+++ avahi-qt5/configure.ac	2014-10-19 13:55:14.825086832 -0500
-@@ -34,6 +34,7 @@ AC_SUBST(LIBAVAHI_GLIB_VERSION_INFO, [1:
- AC_SUBST(LIBAVAHI_GOBJECT_VERSION_INFO, [0:4:0])
- AC_SUBST(LIBAVAHI_QT3_VERSION_INFO, [1:2:0])
- AC_SUBST(LIBAVAHI_QT4_VERSION_INFO, [1:2:0])
-+AC_SUBST(LIBAVAHI_QT5_VERSION_INFO, [1:2:0])
- AC_SUBST(LIBAVAHI_UI_VERSION_INFO, [1:4:1])
- 
- # Do not touch these, since they we took this version-info from upstream HOWL/Bonjour
-@@ -525,6 +526,31 @@ fi
- AM_CONDITIONAL(HAVE_QT4, test "x$HAVE_QT4" = "xyes")
- 
- #
-+# Check for Qt 5
-+#
-+AC_ARG_ENABLE(qt5,
-+        AS_HELP_STRING([--disable-qt5],[Disable building of Qt5Core mainloop integration]),
-+        [case "${enableval}" in
-+                yes) HAVE_QT5=yes ;;
-+                no)  HAVE_QT5=no ;;
-+                *) AC_MSG_ERROR(bad value ${enableval} for --enable-qt5) ;;
-+        esac],
-+        [HAVE_QT5=yes])
-+
-+if test "x$HAVE_QT5" = "xyes" ; then
-+        PKG_CHECK_MODULES( QT5, [ Qt5Core >= 5.0.0 ])
-+        AC_SUBST(QT5_CFLAGS)
-+        AC_SUBST(QT5_LIBS)
-+        QT5_PREFIX="`$PKG_CONFIG --variable=host_bins Qt5Core`"
-+        AC_PATH_PROGS(MOC_QT5, [moc-qt5 moc], no, [$QT5_PREFIX])
-+        if test "$MOC_QT5" = no; then
-+            AC_MSG_ERROR([Could not find QT5 moc])
-+        fi
-+        AC_SUBST(MOC_QT5)
-+fi
-+AM_CONDITIONAL(HAVE_QT5, test "x$HAVE_QT5" = "xyes")
-+
-+#
- # Check for GTK+ 2.0
- #
- AC_ARG_ENABLE(gtk,
-@@ -1157,6 +1183,7 @@ echo "
-     Enable python-dbus:                        ${HAVE_PYTHON_DBUS}
-     Enable QT3:                                ${HAVE_QT3}
-     Enable QT4:                                ${HAVE_QT4}
-+    Enable QT5:                                ${HAVE_QT5}
-     Enable Mono:                               ${HAVE_MONO}
-     Enable Monodoc:                            ${HAVE_MONODOC}
-     Distribution/OS:                           ${with_distro}
-@@ -1226,6 +1253,7 @@ echo "\
-     Building avahi-discover-standalone: ${HAVE_GTK2OR3}
-     Building libavahi-qt3:              ${HAVE_QT3}
-     Building libavahi-qt4:              ${HAVE_QT4}
-+    Building libavahi-qt5:              ${HAVE_QT5}
-     Building avahi-sharp:               ${HAVE_MONO}
-     Building avahi-compat-libdns_sd:    ${ENABLE_COMPAT_LIBDNS_SD}
-     Building avahi-compat-howl:         ${ENABLE_COMPAT_HOWL}
-diff -rupN avahi-0.6.31/Makefile.am avahi-qt5/Makefile.am
---- avahi-0.6.31/Makefile.am	2011-12-30 15:26:44.925511922 -0600
-+++ avahi-qt5/Makefile.am	2014-10-19 13:55:14.825086832 -0500
-@@ -43,6 +43,7 @@ EXTRA_DIST = \
- 	avahi-gobject.pc.in \
- 	avahi-qt3.pc.in \
- 	avahi-qt4.pc.in \
-+	avahi-qt5.pc.in \
- 	avahi-sharp.pc.in \
- 	avahi-ui-sharp.pc.in \
- 	avahi-compat-libdns_sd.pc.in \
-@@ -101,6 +102,10 @@ if HAVE_QT4
- DX_INPUT += \
- 	$(srcdir)/avahi-qt/qt-watch.h
- endif
-+if HAVE_QT5
-+DX_INPUT += \
-+	$(srcdir)/avahi-qt/qt-watch.h
-+endif
- endif
- 
- if HAVE_GLIB
-@@ -216,6 +221,11 @@ pkgconfig_DATA += avahi-qt4.pc
- CLEANFILES += avahi-qt4.pc
- endif
- 
-+if HAVE_QT5
-+pkgconfig_DATA += avahi-qt5.pc
-+CLEANFILES += avahi-qt5.pc
-+endif
-+
- CLEANFILES += avahi.devhelp
- 
- avahi.devhelp: doxygen-run
diff --git a/net-firewall/conntrack-tools/conntrack-tools-1.4.4-r13.ebuild b/net-firewall/conntrack-tools/conntrack-tools-1.4.4-r17.ebuild
similarity index 100%
rename from net-firewall/conntrack-tools/conntrack-tools-1.4.4-r13.ebuild
rename to net-firewall/conntrack-tools/conntrack-tools-1.4.4-r17.ebuild
diff --git a/net-firewall/conntrack-tools/files/conntrackd-seccomp-amd64.policy b/net-firewall/conntrack-tools/files/conntrackd-seccomp-amd64.policy
index ffafbfc..1477fd3 100644
--- a/net-firewall/conntrack-tools/files/conntrackd-seccomp-amd64.policy
+++ b/net-firewall/conntrack-tools/files/conntrackd-seccomp-amd64.policy
@@ -10,6 +10,7 @@
 sendto: 1
 # socket: arg0 == PF_FILE || arg0 == PF_INET || arg0 == PF_NETLINK
 socket: arg0 == 1 || arg0 == 2 || arg0 == 16
+clock_gettime: 1
 futex: 1
 brk: 1
 access: 1
@@ -44,8 +45,11 @@
 
 # architecture-dependent syscalls:
 mmap: 1
+newfstatat: 1
 fstat: 1
+fstatfs: 1
 stat: 1
 fcntl: 1
 select: 1
+pselect6: 1
 arch_prctl: 1
diff --git a/net-firewall/conntrack-tools/files/conntrackd-seccomp-arm.policy b/net-firewall/conntrack-tools/files/conntrackd-seccomp-arm.policy
index 197b528..be60c7e 100644
--- a/net-firewall/conntrack-tools/files/conntrackd-seccomp-arm.policy
+++ b/net-firewall/conntrack-tools/files/conntrackd-seccomp-arm.policy
@@ -10,7 +10,9 @@
 sendto: 1
 # socket: arg0 == PF_FILE || arg0 == PF_INET || arg0 == PF_NETLINK
 socket: arg0 == 1 || arg0 == 2 || arg0 == 16
+clock_gettime: 1
 futex: 1
+futex_time64: 1
 brk: 1
 access: 1
 rt_sigaction: 1
@@ -43,10 +45,13 @@
 
 # architecture-dependent syscalls:
 mmap2: 1
+clock_gettime64: 1
 fstat64: 1
+fstatfs64: 1
 stat64: 1
 fcntl64: 1
 _newselect: 1
+pselect6: 1
 prctl: 1
 gettimeofday: 1
 _llseek: 1
diff --git a/net-firewall/conntrack-tools/files/conntrackd-seccomp-arm64.policy b/net-firewall/conntrack-tools/files/conntrackd-seccomp-arm64.policy
index 3853d73..3013dcd 100644
--- a/net-firewall/conntrack-tools/files/conntrackd-seccomp-arm64.policy
+++ b/net-firewall/conntrack-tools/files/conntrackd-seccomp-arm64.policy
@@ -10,6 +10,7 @@
 sendto: 1
 # socket: arg0 == PF_FILE || arg0 == PF_INET || arg0 == PF_NETLINK
 socket: arg0 == 1 || arg0 == 2 || arg0 == 16
+clock_gettime: 1
 futex: 1
 brk: 1
 faccessat: 1
@@ -44,8 +45,8 @@
 mmap: 1
 newfstatat: 1
 fstat: 1
+fstatfs: 1
 fcntl: 1
 prctl: 1
 gettimeofday: 1
-sendto: 1
 pselect6: 1
diff --git a/net-firewall/conntrack-tools/files/conntrackd-seccomp-x86.policy b/net-firewall/conntrack-tools/files/conntrackd-seccomp-x86.policy
index f47aafc..0f54f5e 100644
--- a/net-firewall/conntrack-tools/files/conntrackd-seccomp-x86.policy
+++ b/net-firewall/conntrack-tools/files/conntrackd-seccomp-x86.policy
@@ -6,7 +6,9 @@
 mprotect: 1
 close: 1
 read: 1
+clock_gettime: 1
 futex: 1
+futex_time64: 1
 brk: 1
 access: 1
 rt_sigaction: 1
@@ -32,7 +34,9 @@
 
 # architecture-dependent syscalls:
 mmap2: 1
+clock_gettime64: 1
 fstat64: 1
+fstatfs64: 1
 stat64: 1
 fcntl64: 1
 _newselect: 1
diff --git a/net-fs/nfs-utils/Manifest b/net-fs/nfs-utils/Manifest
deleted file mode 100644
index 7b164c5..0000000
--- a/net-fs/nfs-utils/Manifest
+++ /dev/null
@@ -1,2 +0,0 @@
-DIST nfs-utils-1.2.3.tar.bz2 672759 SHA256 5575ece941097cbfa67fbe0d220dfa11b73f5e6d991e7939c9339bd72259ff19 SHA512 3571559681608bc02f6f45ce9e7a32f47148bad929af1c14e90db7e6522027b8347b8e1e065dc8282d5a36188d10e1914c99e370b48ec2690ad6752f8e9a836b WHIRLPOOL 48d386c4e3f7da7117333ea8bb37629dfbf18819c7e7f8a9cd448d1a2dddb2b6a76793e1dac7c4e9310e7b0ba730a7574fac9b143eecb5ee5df277fd188554ac
-DIST nfs-utils-1.3.4.tar.bz2 814545 SHA256 c529c82a82320daae811f3d3a143f83d2714d7e7a43beadd42fcd6022c17d590 SHA512 765c0bc55a9a0bdb2c25d8fb7189a9054fb9f2dd51726eda29f44e5d5c423e245b02307dfcfab9239276d8f44869a72732416f6e9ef5a1f80753d9243ba1b38c WHIRLPOOL 6dc556ef7d00a583c222eb62a600b0d83c6f91ad65d89ca14e1fb3c8aaacf4fbae492e6f0ca3fb0821e2b666f0806ad5fddec041a1124b86b9941540cdfb08b4
diff --git a/net-fs/nfs-utils/files/exports b/net-fs/nfs-utils/files/exports
deleted file mode 100644
index 5102ef2..0000000
--- a/net-fs/nfs-utils/files/exports
+++ /dev/null
@@ -1 +0,0 @@
-# /etc/exports: NFS file systems being exported.  See exports(5).
diff --git a/net-fs/nfs-utils/files/nfs-utils-1.1.4-mtab-sym.patch b/net-fs/nfs-utils/files/nfs-utils-1.1.4-mtab-sym.patch
deleted file mode 100644
index c9e60af..0000000
--- a/net-fs/nfs-utils/files/nfs-utils-1.1.4-mtab-sym.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-ripped from Debian
-
---- nfs-utils-1.1.4/utils/mount/fstab.c
-+++ nfs-utils-1.1.4/utils/mount/fstab.c
-@@ -57,7 +57,7 @@ mtab_does_not_exist(void) {
- 	return var_mtab_does_not_exist;
- }
- 
--static int
-+int
- mtab_is_a_symlink(void) {
-         get_mtab_info();
-         return var_mtab_is_a_symlink;
---- nfs-utils-1.1.4/utils/mount/fstab.h
-+++ nfs-utils-1.1.4/utils/mount/fstab.h
-@@ -7,6 +7,7 @@
- #define _PATH_FSTAB "/etc/fstab"
- #endif
- 
-+int mtab_is_a_symlink(void);
- int mtab_is_writable(void);
- int mtab_does_not_exist(void);
- void reset_mtab_info(void);
---- nfs-utils-1.1.4/utils/mount/mount.c
-+++ nfs-utils-1.1.4/utils/mount/mount.c
-@@ -230,6 +230,13 @@ create_mtab (void) {
- 	int flags;
- 	mntFILE *mfp;
- 
-+	/* Avoid writing if the mtab is a symlink to /proc/mounts, since
-+	   that would create a file /proc/mounts in case the proc filesystem
-+	   is not mounted, and the fchmod below would also fail. */
-+	if (mtab_is_a_symlink()) {
-+		return EX_SUCCESS;
-+	}
-+
- 	lock_mtab();
- 
- 	mfp = nfs_setmntent (MOUNTED, "a+");
diff --git a/net-fs/nfs-utils/files/nfs-utils-1.2.8-cross-build.patch b/net-fs/nfs-utils/files/nfs-utils-1.2.8-cross-build.patch
deleted file mode 100644
index 7317115..0000000
--- a/net-fs/nfs-utils/files/nfs-utils-1.2.8-cross-build.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-this is kind of hacky, but automake doesn't make this easy
-for us atm, so hack away :(
-
-(recent autotools will always add $(CFLAGS)/etc... to the compile)
-
---- a/tools/locktest/Makefile.am
-+++ b/tools/locktest/Makefile.am
-@@ -1,12 +1,11 @@
- ## Process this file with automake to produce Makefile.in
- 
- CC=$(CC_FOR_BUILD)
--LIBTOOL = @LIBTOOL@ --tag=CC
-+CFLAGS=$(CFLAGS_FOR_BUILD)
-+CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
-+LDFLAGS=$(LDFLAGS_FOR_BUILD)
- 
- noinst_PROGRAMS = testlk
- testlk_SOURCES = testlk.c
--testlk_CFLAGS=$(CFLAGS_FOR_BUILD)
--testlk_CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
--testlk_LDFLAGS=$(LDFLAGS_FOR_BUILD)
- 
- MAINTAINERCLEANFILES = Makefile.in
---- a/tools/rpcgen/Makefile.am
-+++ b/tools/rpcgen/Makefile.am
-@@ -1,7 +1,9 @@
- ## Process this file with automake to produce Makefile.in
- 
- CC=$(CC_FOR_BUILD)
--LIBTOOL = @LIBTOOL@ --tag=CC
-+CFLAGS=$(CFLAGS_FOR_BUILD)
-+CPPFLAGS=$(CPPFLAGS_FOR_BUILD)
-+LDFLAGS=$(LDFLAGS_FOR_BUILD)
- 
- noinst_PROGRAMS = rpcgen
- rpcgen_SOURCES = rpc_clntout.c rpc_cout.c rpc_hout.c rpc_main.c \
-@@ -9,10 +11,6 @@
- 		 rpc_util.c rpc_sample.c rpc_output.h rpc_parse.h \
- 		 rpc_scan.h rpc_util.h
- 
--rpcgen_CFLAGS=$(CFLAGS_FOR_BUILD)
--rpcgen_CPPLAGS=$(CPPFLAGS_FOR_BUILD)
--rpcgen_LDFLAGS=$(LDFLAGS_FOR_BUILD)
--rpcgen_LDADD=$(LIBTIRPC)
- 
- MAINTAINERCLEANFILES = Makefile.in
- 
- EXTRA_DIST = rpcgen.new.1
diff --git a/net-fs/nfs-utils/files/nfs-utils-1.3.4-libevent.patch b/net-fs/nfs-utils/files/nfs-utils-1.3.4-libevent.patch
deleted file mode 100644
index 1593eb8..0000000
--- a/net-fs/nfs-utils/files/nfs-utils-1.3.4-libevent.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From: Abbas Naderi <abiusx@chromium.org>
-CL-URL: https://chromium-review.googlesource.com/c/501988
-Project-Bug-URL: https://bugs.chromium.org/p/chromium/issues/detail?id=720151
-
-Fixes libevent lookup.
-
-nfs-utils build relies on libevent for NFSv4 support.
-However, libevent is hardcoded as -levent, whereas
-recent versions expose -levent_core.
-
-The patch uses pkg-config to lookup the library and
-replaces the previous LIBEVENT variable with it,
-because the lib is not always used.
-
-
---- aclocal/libevent.m4
-+++ aclocal/libevent.m4
-@@ -2,9 +2,13 @@ dnl Checks for libevent
- AC_DEFUN([AC_LIBEVENT], [
- 
-   dnl Check for libevent, but do not add -levent to LIBS
--  AC_CHECK_LIB([event], [event_dispatch], [LIBEVENT=-levent],
--               [AC_MSG_ERROR([libevent not found.])])
--  AC_SUBST(LIBEVENT)
-+  dnl LIBEVENT is the variable used, but PKG_CHECK_MODULES
-+  dnl 	exposes V_LIBS and V_CFLAGS, so set LIBEVENT var
-+  dnl 	to the result of pkg-config check. This approach
-+  dnl 	prevents libevent libs to be added to LIBS.
-+  PKG_CHECK_MODULES([LIBEVENT], [libevent])
-+  AC_SUBST(LIBEVENT, $LIBEVENT_LIBS)
-+  CPPFLAGS="$CPPFLAGS $LIBEVENT_CFLAGS"
- 
-   AC_CHECK_HEADERS([event.h], ,
-                    [AC_MSG_ERROR([libevent headers not found.])])
diff --git a/net-fs/nfs-utils/files/nfs-utils.conf b/net-fs/nfs-utils/files/nfs-utils.conf
deleted file mode 100644
index b9b586c..0000000
--- a/net-fs/nfs-utils/files/nfs-utils.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-d /var/lib/nfs/rpc_pipefs
-d /var/lib/nfs/v4recovery
-d /var/lib/nfs/v4root
diff --git a/net-fs/nfs-utils/files/nfs.confd b/net-fs/nfs-utils/files/nfs.confd
deleted file mode 100644
index 9dc1405..0000000
--- a/net-fs/nfs-utils/files/nfs.confd
+++ /dev/null
@@ -1,38 +0,0 @@
-# /etc/conf.d/nfs
-
-# If you wish to set the port numbers for lockd,
-# please see /etc/sysctl.conf
-
-# Optional services to include in default `/etc/init.d/nfs start`
-# For NFSv4 users, you'll want to add "rpc.idmapd" here.
-NFS_NEEDED_SERVICES=""
-
-# Options to pass to rpc.nfsd
-OPTS_RPC_NFSD="8"
-
-# Options to pass to rpc.mountd
-# ex. OPTS_RPC_MOUNTD="-p 32767"
-OPTS_RPC_MOUNTD=""
-
-# Options to pass to rpc.statd
-# ex. OPTS_RPC_STATD="-p 32765 -o 32766"
-OPTS_RPC_STATD=""
-
-# Options to pass to rpc.idmapd
-OPTS_RPC_IDMAPD=""
-
-# Options to pass to rpc.gssd
-OPTS_RPC_GSSD=""
-
-# Options to pass to rpc.svcgssd
-OPTS_RPC_SVCGSSD=""
-
-# Options to pass to rpc.rquotad (requires sys-fs/quota)
-OPTS_RPC_RQUOTAD=""
-
-# Timeout (in seconds) for exportfs
-EXPORTFS_TIMEOUT=30
-
-# Options to set in the nfsd filesystem (/proc/fs/nfsd/).
-# Format is <option>=<value>.  Multiple options are allowed.
-#OPTS_NFSD="nfsv4leasetime=30 max_block_size=4096"
diff --git a/net-fs/nfs-utils/files/nfs.initd b/net-fs/nfs-utils/files/nfs.initd
deleted file mode 100644
index 4b572fc..0000000
--- a/net-fs/nfs-utils/files/nfs.initd
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-extra_started_commands="reload"
-
-# This variable is used for controlling whether or not to run exportfs -ua;
-# see stop() for more information
-restarting=no
-
-# The binary locations
-exportfs=/usr/sbin/exportfs
-  mountd=/usr/sbin/rpc.mountd
-    nfsd=/usr/sbin/rpc.nfsd
-smnotify=/usr/sbin/sm-notify
-
-depend() {
-	local myneed=""
-	# XXX: no way to detect NFSv4 is desired and so need rpc.idmapd
-	myneed="${myneed} $(
-		awk '!/^[[:space:]]*#/ {
-			# clear the path to avoid spurious matches
-			$1 = "";
-			if ($0 ~ /[(][^)]*sec=(krb|spkm)[^)]*[)]/) {
-				print "rpc.svcgssd"
-				exit 0
-			}
-		}' /etc/exports /etc/exports.d/*.exports 2>/dev/null
-	)"
-	config /etc/exports /etc/exports.d/*.exports
-	need portmap rpc.statd ${myneed} ${NFS_NEEDED_SERVICES}
-	use ypbind net dns rpc.rquotad rpc.idmapd rpc.svcgssd
-	after quota
-}
-
-mkdir_nfsdirs() {
-	local d
-	for d in v4recovery v4root ; do
-		d="/var/lib/nfs/${d}"
-		[ ! -d "${d}" ] && mkdir -p "${d}"
-	done
-}
-
-waitfor_exportfs() {
-	local pid=$1
-	( sleep ${EXPORTFS_TIMEOUT:-30}; kill -9 ${pid} 2>/dev/null ) &
-	wait $1
-}
-
-mount_nfsd() {
-	if [ -e /proc/modules ] ; then
-		# Make sure nfs support is loaded in the kernel #64709
-		if ! grep -qs nfsd /proc/filesystems ; then
-			modprobe -q nfsd
-		fi
-		# Restart idmapd if needed #220747
-		if grep -qs nfsd /proc/modules ; then
-			killall -q -HUP rpc.idmapd
-		fi
-	fi
-
-	# This is the new "kernel 2.6 way" to handle the exports file
-	if grep -qs nfsd /proc/filesystems ; then
-		if ! mountinfo -q /proc/fs/nfsd ; then
-			ebegin "Mounting nfsd filesystem in /proc"
-			mount -t nfsd -o nodev,noexec,nosuid nfsd /proc/fs/nfsd
-			eend $?
-		fi
-
-		local o
-		for o in ${OPTS_NFSD} ; do
-			echo "${o#*=}" > "/proc/fs/nfsd/${o%%=*}"
-		done
-	fi
-}
-
-start_it() {
-	ebegin "Starting NFS $1"
-	shift
-	"$@"
-	eend $?
-	ret=$((ret + $?))
-}
-start() {
-	mount_nfsd
-	mkdir_nfsdirs
-
-	# Exportfs likes to hang if networking isn't working.
-	# If that's the case, then try to kill it so the
-	# bootup process can continue.
-	if grep -qs '^[[:space:]]*/' /etc/exports /etc/exports.d/*.exports ; then
-		ebegin "Exporting NFS directories"
-		${exportfs} -r &
-		waitfor_exportfs $!
-		eend $?
-	fi
-
-	local ret=0
-	start_it mountd ${mountd} ${OPTS_RPC_MOUNTD}
-	start_it daemon ${nfsd} ${OPTS_RPC_NFSD}
-	[ -x "${smnotify}" ] && start_it smnotify ${smnotify} ${OPTS_SMNOTIFY}
-	return ${ret}
-}
-
-stop() {
-	local ret=0
-
-	ebegin "Stopping NFS mountd"
-	start-stop-daemon --stop --exec ${mountd}
-	eend $?
-	ret=$((ret + $?))
-
-	# nfsd sets its process name to [nfsd] so don't look for $nfsd
-	ebegin "Stopping NFS daemon"
-	start-stop-daemon --stop --name nfsd --user root --signal 2
-	eend $?
-	ret=$((ret + $?))
-	# in case things don't work out ... #228127
-	rpc.nfsd 0
-
-	# When restarting the NFS server, running "exportfs -ua" probably
-	# isn't what the user wants.  Running it causes all entries listed
-	# in xtab to be removed from the kernel export tables, and the
-	# xtab file is cleared. This effectively shuts down all NFS
-	# activity, leaving all clients holding stale NFS filehandles,
-	# *even* when the NFS server has restarted.
-	#
-	# That's what you would want if you were shutting down the NFS
-	# server for good, or for a long period of time, but not when the
-	# NFS server will be running again in short order.  In this case,
-	# then "exportfs -r" will reread the xtab, and all the current
-	# clients will be able to resume NFS activity, *without* needing
-	# to umount/(re)mount the filesystem.
-	if [ "${restarting}" = no -o "${RC_CMD}" = "restart" ] ; then
-		ebegin "Unexporting NFS directories"
-		# Exportfs likes to hang if networking isn't working.
-		# If that's the case, then try to kill it so the
-		# shutdown process can continue.
-		${exportfs} -ua &
-		waitfor_exportfs $!
-		eend $?
-	fi
-
-	return ${ret}
-}
-
-reload() {
-	# Exportfs likes to hang if networking isn't working.
-	# If that's the case, then try to kill it so the
-	# bootup process can continue.
-	ebegin "Reloading /etc/exports"
-	${exportfs} -r 1>&2 &
-	waitfor_exportfs $!
-	eend $?
-}
-
-restart() {
-	# See long comment in stop() regarding "restarting" and exportfs -ua
-	restarting=yes
-	svc_stop
-	svc_start
-}
diff --git a/net-fs/nfs-utils/files/nfsclient.confd b/net-fs/nfs-utils/files/nfsclient.confd
deleted file mode 100644
index 8a99557..0000000
--- a/net-fs/nfs-utils/files/nfsclient.confd
+++ /dev/null
@@ -1,18 +0,0 @@
-# You need to decide which nfs protocol version you want to use.
-# If you are unsure, leave these alone.
-#
-# If you are using only nfsv4, uncomment this line:
-#
-#rc_need="!rpc.statd"
-#
-# If you are using only nfsv3, uncomment this line:
-#
-#rc_need="!rpc.idmapd"
-# 
-# You will need to set the dependencies in the nfsclient script to match
-# the network configuration tools you are using. This should be done in
-# this file by following the examples below, and not by changing the
-# service script itself.  See /etc/conf.d/netmount for more examples.
-#
-# This is a safe default.
-rc_after="net"
diff --git a/net-fs/nfs-utils/files/nfsclient.initd b/net-fs/nfs-utils/files/nfsclient.initd
deleted file mode 100644
index 6724e91..0000000
--- a/net-fs/nfs-utils/files/nfsclient.initd
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
-
-depend() {
-	local opts myneed=""
-	if [ -e /etc/fstab ] ; then
-		for opts in $(fstabinfo -o -t nfs,nfs4) ; do
-			case $opts in
-				*sec=krb*|*sec=spkm*) myneed="$myneed rpc.gssd" ;;
-			esac
-		done
-	fi
-	config /etc/fstab
-	need portmap rpc.statd rpc.idmapd ${myneed}
-	use ypbind dns
-}
-
-start() {
-	if [ -x /usr/sbin/sm-notify ] ; then
-		ebegin "Starting NFS sm-notify"
-		/usr/sbin/sm-notify ${OPTS_SMNOTIFY}
-		eend $?
-	fi
-
-	# Make sure nfs support is loaded in the kernel #64709
-	if [ -e /proc/modules ] && ! grep -qs 'nfs$' /proc/filesystems ; then
-		modprobe -q nfs
-	fi
-	return 0
-}
diff --git a/net-fs/nfs-utils/files/nfsd.service-r1 b/net-fs/nfs-utils/files/nfsd.service-r1
deleted file mode 100644
index e15cf98..0000000
--- a/net-fs/nfs-utils/files/nfsd.service-r1
+++ /dev/null
@@ -1,15 +0,0 @@
-[Unit]
-Description=NFS server
-After=rpcbind.service
-Requires=rpcbind.service
-
-[Service]
-Type=oneshot
-ExecStart=/usr/sbin/rpc.nfsd 8
-ExecStartPost=/usr/sbin/exportfs -a
-ExecStop=/usr/sbin/rpc.nfsd 0
-ExecStopPost=/usr/sbin/exportfs -a -u
-RemainAfterExit=yes
-
-[Install]
-WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/nfsmount.confd b/net-fs/nfs-utils/files/nfsmount.confd
deleted file mode 100644
index 4183536..0000000
--- a/net-fs/nfs-utils/files/nfsmount.confd
+++ /dev/null
@@ -1,7 +0,0 @@
-# You will need to set the dependencies in the nfsmount script to match
-# the network configuration tools you are using. This should be done in
-# this file by following the examples below, and not by changing the
-# service script itself.  See /etc/conf.d/netmount for more examples.
-#
-# This is a safe default.
-rc_after="net"
diff --git a/net-fs/nfs-utils/files/nfsmount.initd b/net-fs/nfs-utils/files/nfsmount.initd
deleted file mode 100644
index 12c7d78..0000000
--- a/net-fs/nfs-utils/files/nfsmount.initd
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
-
-depend() {
-	local myneed=""
-	if [ -e /etc/fstab ] ; then
-		myneed="${myneed} $(
-			awk '!/^[[:space:]]*#/ && ($3 == "nfs" || $3 == "nfs4") {
-					if ($3 == "nfs4")
-						idmapd = "rpc.idmapd"
-					if ($4 ~ /sec=(krb|spkm)/)
-						gssd = "rpc.gssd"
-				}
-				END { print idmapd " " gssd }
-				' /etc/fstab
-			)"
-	fi
-	config /etc/fstab
-	need portmap rpc.statd ${myneed}
-	use ypbind dns rpc.idmapd rpc.gssd
-}
-
-start() {
-	if [ -x /usr/sbin/sm-notify ] ; then
-		ebegin "Starting NFS sm-notify"
-		/usr/sbin/sm-notify ${OPTS_SMNOTIFY}
-		eend $?
-	fi
-
-	# Make sure nfs support is loaded in the kernel #64709
-	if [ -e /proc/modules ] && ! grep -qs 'nfs$' /proc/filesystems ; then
-		modprobe -q nfs
-	fi
-
-	ebegin "Mounting NFS filesystems"
-	mount -a -t nfs,nfs4
-	eend $?
-}
-
-stop() {
-	ebegin "Unmounting NFS filesystems"
-	umount -a -t nfs,nfs4
-	eend $?
-}
diff --git a/net-fs/nfs-utils/files/nfsmount.initd-1.3.1 b/net-fs/nfs-utils/files/nfsmount.initd-1.3.1
deleted file mode 100644
index 68007ca..0000000
--- a/net-fs/nfs-utils/files/nfsmount.initd-1.3.1
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-# This is mostly as a fix for bug #537996, to avoid breaking existing users
-# with nfsmount in their runlevels.
-# If neither nfsclient nor netmount are in your runlevels, and you manually
-# start netmount before nfsclient, then this will break. A real solution is
-# forthcoming, but requires feature development, see bug #406021 for soft
-# dependencies
-depend() {
-	need nfsclient netmount
-}
-
-msg() {
-	ewarn "nfsmount is deprecated, please migrate as described in the news item: 2015-02-02-nfs-service-changes"
-	ewarn "This migration script will be removed after 01 Aug 2015."
-}
-
-start() {
-	msg
-}
-
-stop() {
-	msg
-}
diff --git a/net-fs/nfs-utils/files/proc-fs-nfsd.mount b/net-fs/nfs-utils/files/proc-fs-nfsd.mount
deleted file mode 100644
index 26b58b9..0000000
--- a/net-fs/nfs-utils/files/proc-fs-nfsd.mount
+++ /dev/null
@@ -1,8 +0,0 @@
-[Unit]
-Description=NFS Configuration File System
-DefaultDependencies=no
-
-[Mount]
-What=sunrpc
-Where=/proc/fs/nfsd
-Type=nfsd
diff --git a/net-fs/nfs-utils/files/rpc-gssd.service b/net-fs/nfs-utils/files/rpc-gssd.service
deleted file mode 100644
index 4c96dee..0000000
--- a/net-fs/nfs-utils/files/rpc-gssd.service
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=RPC GSS-API Client Daemon
-Documentation=man:rpc.gssd(8)
-After=rpcbind.service var-lib-nfs-rpc_pipefs.mount
-Requires=rpcbind.service var-lib-nfs-rpc_pipefs.mount
-Before=remote-fs-pre.target
-
-[Service]
-ExecStart=/usr/sbin/rpc.gssd -f
-
-[Install]
-WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/rpc-idmapd.service b/net-fs/nfs-utils/files/rpc-idmapd.service
deleted file mode 100644
index 4a63b91..0000000
--- a/net-fs/nfs-utils/files/rpc-idmapd.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=NFS v4 ID-Name Mapping Daemon
-Documentation=man:rpc.idmapd(8) man:idmapd.conf(5)
-After=var-lib-nfs-rpc_pipefs.mount nfsd.service
-Requires=var-lib-nfs-rpc_pipefs.mount
-
-[Service]
-ExecStart=/usr/sbin/rpc.idmapd -f
-
-[Install]
-WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/rpc-mountd.service-r1 b/net-fs/nfs-utils/files/rpc-mountd.service-r1
deleted file mode 100644
index d5f5b24..0000000
--- a/net-fs/nfs-utils/files/rpc-mountd.service-r1
+++ /dev/null
@@ -1,10 +0,0 @@
-[Unit]
-Description=NFS Mount Daemon
-After=rpcbind.service nfsd.service
-Requires=rpcbind.service nfsd.service
-
-[Service]
-ExecStart=/usr/sbin/rpc.mountd -F
-
-[Install]
-WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/rpc-statd.service-r2 b/net-fs/nfs-utils/files/rpc-statd.service-r2
deleted file mode 100644
index 3633ebd..0000000
--- a/net-fs/nfs-utils/files/rpc-statd.service-r2
+++ /dev/null
@@ -1,12 +0,0 @@
-[Unit]
-Description=NFSv2/3 Network Status Monitor Daemon
-After=rpcbind.service
-Requires=rpcbind.service
-Before=remote-fs-pre.target
-Wants=remote-fs-pre.target
-
-[Service]
-ExecStart=/sbin/rpc.statd -F
-
-[Install]
-WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/rpc-svcgssd.service b/net-fs/nfs-utils/files/rpc-svcgssd.service
deleted file mode 100644
index 121c61a..0000000
--- a/net-fs/nfs-utils/files/rpc-svcgssd.service
+++ /dev/null
@@ -1,13 +0,0 @@
-[Unit]
-Description=RPC GSS-API Server Daemon
-Documentation=man:rpc.svcgssd(8)
-After=rpcbind.service
-Requires=rpcbind.service
-Before=nfs-server.target
-PartOf=nfs-server.target
-
-[Service]
-ExecStart=/usr/sbin/rpc.svcgssd -f
-
-[Install]
-WantedBy=multi-user.target
diff --git a/net-fs/nfs-utils/files/rpc.gssd.initd b/net-fs/nfs-utils/files/rpc.gssd.initd
deleted file mode 100644
index 445d44c..0000000
--- a/net-fs/nfs-utils/files/rpc.gssd.initd
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2008 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
-
-depend() {
-	use ypbind net
-	need portmap rpc.pipefs
-	after quota
-}
-
-start() {
-	ebegin "Starting gssd"
-	start-stop-daemon --start --exec /usr/sbin/rpc.gssd -- ${OPTS_RPC_GSSD}
-	eend $?
-}
-
-stop() {
-	ebegin "Stopping gssd"
-	start-stop-daemon --stop --exec /usr/sbin/rpc.gssd
-	eend $?
-}
diff --git a/net-fs/nfs-utils/files/rpc.idmapd.initd b/net-fs/nfs-utils/files/rpc.idmapd.initd
deleted file mode 100644
index 61cfd4d..0000000
--- a/net-fs/nfs-utils/files/rpc.idmapd.initd
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2008 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
-
-rpc_bin=/usr/sbin/rpc.idmapd
-
-depend() {
-	use ypbind net
-	need portmap rpc.pipefs
-	after quota
-}
-
-start() {
-	ebegin "Starting idmapd"
-	${rpc_bin} ${OPTS_RPC_IDMAPD}
-	eend $? "make sure DNOTIFY support is enabled ..."
-}
-
-stop() {
-	ebegin "Stopping idmapd"
-	start-stop-daemon --stop --exec ${rpc_bin}
-	eend $?
-}
diff --git a/net-fs/nfs-utils/files/rpc.pipefs.initd b/net-fs/nfs-utils/files/rpc.pipefs.initd
deleted file mode 100644
index f971a49..0000000
--- a/net-fs/nfs-utils/files/rpc.pipefs.initd
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-MNT="/var/lib/nfs/rpc_pipefs"
-
-mount_pipefs() {
-	local fstype=rpc_pipefs
-
-	# if things are already mounted, nothing to do
-	mountinfo -q ${MNT} && return 0
-
-	# if rpc_pipefs is not available, try to load sunrpc for it #219566
-	grep -qs ${fstype} /proc/filesystems || modprobe -q sunrpc
-	# if still not available, the `mount` will issue an error for the user
-
-	# now just do it for kicks
-	mkdir -p ${MNT}
-	mount -t ${fstype} ${fstype} ${MNT}
-}
-
-start() {
-	ebegin "Setting up RPC pipefs"
-	mount_pipefs
-	eend $? "make sure you have NFS/SUNRPC enabled in your kernel"
-}
-
-stop() {
-	ebegin "Unmounting RPC pipefs"
-	umount ${MNT}
-	eend $?
-}
diff --git a/net-fs/nfs-utils/files/rpc.statd.initd b/net-fs/nfs-utils/files/rpc.statd.initd
deleted file mode 100644
index ea78b9a..0000000
--- a/net-fs/nfs-utils/files/rpc.statd.initd
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
-
-rpc_bin=/sbin/rpc.statd
-rpc_pid=/var/run/rpc.statd.pid
-
-depend() {
-	use ypbind net
-	need portmap
-	after quota
-}
-
-start() {
-	# Don't start rpc.statd if already started by someone else ...
-	# Don't try and kill it if it's already dead ...
-	if killall -q -0 ${rpc_bin} ; then
-		return 0
-	fi
-
-	ebegin "Starting NFS statd"
-	start-stop-daemon --start --exec ${rpc_bin} -- --no-notify ${OPTS_RPC_STATD}
-	eend $?
-}
-
-stop() {
-	ebegin "Stopping NFS statd"
-	start-stop-daemon --stop --exec ${rpc_bin} --pidfile /var/run/rpc.statd.pid
-	eend $?
-}
diff --git a/net-fs/nfs-utils/files/rpc.svcgssd.initd b/net-fs/nfs-utils/files/rpc.svcgssd.initd
deleted file mode 100644
index c714e36..0000000
--- a/net-fs/nfs-utils/files/rpc.svcgssd.initd
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2008 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
-
-depend() {
-	use ypbind net
-	need portmap rpc.pipefs
-	after quota
-}
-
-start() {
-	ebegin "Starting svcgssd"
-	start-stop-daemon --start --exec /usr/sbin/rpc.svcgssd -- ${OPTS_RPC_SVCGSSD}
-	eend $?
-}
-
-stop() {
-	ebegin "Stopping svcgssd"
-	start-stop-daemon --stop --exec /usr/sbin/rpc.svcgssd
-	eend $?
-}
diff --git a/net-fs/nfs-utils/files/var-lib-nfs-rpc_pipefs.mount b/net-fs/nfs-utils/files/var-lib-nfs-rpc_pipefs.mount
deleted file mode 100644
index c416658..0000000
--- a/net-fs/nfs-utils/files/var-lib-nfs-rpc_pipefs.mount
+++ /dev/null
@@ -1,7 +0,0 @@
-[Unit]
-Description=RPC Pipe File System
-
-[Mount]
-What=rpc_pipefs
-Where=/var/lib/nfs/rpc_pipefs
-Type=rpc_pipefs
diff --git a/net-fs/nfs-utils/metadata.xml b/net-fs/nfs-utils/metadata.xml
deleted file mode 100644
index e1edd02..0000000
--- a/net-fs/nfs-utils/metadata.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>net-fs</herd>
-	<longdescription>NFS client and server daemons</longdescription>
-	<use>
-		<flag name='nfsdcld'>Enable nfsdcld NFSv4 clientid tracking daemon</flag>
-		<flag name='nfsidmap'>Enable support for newer nfsidmap helper</flag>
-		<flag name='nfsv3'>Enable support for NFSv3</flag>
-		<flag name='nfsv4'>Enable support for NFSv4</flag>
-		<flag name='nfsv41'>Enable support for NFSv4.1</flag>
-		<flag name='nonfsv4'>Disable support for NFSv4</flag>
-		<flag name='uuid'>Support UUID lookups in rpc.mountd</flag>
-	</use>
-</pkgmetadata>
diff --git a/net-fs/nfs-utils/nfs-utils-1.2.3.ebuild b/net-fs/nfs-utils/nfs-utils-1.2.3.ebuild
deleted file mode 100644
index b22dca2..0000000
--- a/net-fs/nfs-utils/nfs-utils-1.2.3.ebuild
+++ /dev/null
@@ -1,115 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-fs/nfs-utils/nfs-utils-1.2.3.ebuild,v 1.1 2010/10/08 19:48:08 vapier Exp $
-
-EAPI="2"
-
-inherit eutils flag-o-matic multilib
-
-DESCRIPTION="NFS client and server daemons"
-HOMEPAGE="http://linux-nfs.org/"
-SRC_URI="mirror://sourceforge/nfs/${P}.tar.bz2"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="caps ipv6 kerberos +nfsv3 +nfsv4 tcpd elibc_glibc"
-RESTRICT="test" #315573
-
-# kth-krb doesn't provide the right include
-# files, and nfs-utils doesn't build against heimdal either,
-# so don't depend on virtual/krb.
-# (04 Feb 2005 agriffis)
-DEPEND_COMMON="tcpd? ( sys-apps/tcp-wrappers )
-	caps? ( sys-libs/libcap )
-	sys-libs/e2fsprogs-libs
-	net-nds/rpcbind
-	net-libs/libtirpc
-	nfsv4? (
-		>=dev-libs/libevent-1.0b
-		>=net-libs/libnfsidmap-0.21-r1
-		kerberos? (
-			net-libs/librpcsecgss
-			net-libs/libgssglue
-			net-libs/libtirpc[kerberos]
-			app-crypt/mit-krb5
-		)
-	)"
-RDEPEND="${DEPEND_COMMON} !net-nds/portmap"
-# util-linux dep is to prevent man-page collision
-DEPEND="${DEPEND_COMMON}
-	>=sys-apps/util-linux-2.12r-r7"
-
-src_prepare() {
-        epatch "${FILESDIR}"/${PN}-1.2.3-cross-compile.patch
-}
-
-src_configure() {
-	econf \
-		--with-statedir=/var/lib/nfs \
-		--with-tirpcinclude=${ROOT}/usr/include/tirpc \
-		--enable-tirpc \
-		$(use_with tcpd tcp-wrappers) \
-		$(use_enable nfsv3) \
-		$(use_enable nfsv4) \
-		$(use_enable ipv6) \
-		$(use_enable caps) \
-		$(use nfsv4 && use_enable kerberos gss || echo "--disable-gss")
-}
-
-src_compile() {
-        if tc-is-cross-compiler; then
-                emake CC=$(tc-getCC) || die "Failed to compile"
-        else
-                emake || die "Failed to compile"
-        fi
-}
-
-src_install() {
-	emake DESTDIR="${D}" install || die
-
-	# Don't overwrite existing xtab/etab, install the original
-	# versions somewhere safe...  more info in pkg_postinst
-	keepdir /var/lib/nfs/{,sm,sm.bak}
-	mv "${D}"/var/lib "${D}"/usr/$(get_libdir) || die
-
-	# Install some client-side binaries in /sbin
-	dodir /sbin
-	mv "${D}"/usr/sbin/rpc.statd "${D}"/sbin/ || die
-
-	dodoc ChangeLog README
-	docinto linux-nfs ; dodoc linux-nfs/*
-
-	insinto /etc
-	doins "${FILESDIR}"/exports
-
-	local f list="" opt_need=""
-	if use nfsv4 ; then
-		opt_need="rpc.idmapd"
-		list="${list} rpc.idmapd rpc.pipefs"
-		use kerberos && list="${list} rpc.gssd rpc.svcgssd"
-	fi
-	for f in nfs nfsmount rpc.statd ${list} ; do
-		newinitd "${FILESDIR}"/${f}.initd ${f} || die "doinitd ${f}"
-	done
-	newconfd "${FILESDIR}"/nfs.confd nfs
-	dosed "/^NFS_NEEDED_SERVICES=/s:=.*:=\"${opt_need}\":" /etc/conf.d/nfs #234132
-
-	# uClibc doesn't provide rpcgen like glibc, so lets steal it from nfs-utils
-	if ! use elibc_glibc ; then
-		dobin tools/rpcgen/rpcgen || die "rpcgen"
-		newdoc tools/rpcgen/README README.rpcgen
-	fi
-}
-
-pkg_postinst() {
-	# Install default xtab and friends if there's none existing.  In
-	# src_install we put them in /usr/lib/nfs for safe-keeping, but
-	# the daemons actually use the files in /var/lib/nfs.  #30486
-	local f
-	for f in "${ROOT}"/usr/$(get_libdir)/nfs/*; do
-		[[ -e ${ROOT}/var/lib/nfs/${f##*/} ]] && continue
-		einfo "Copying default ${f##*/} from /usr/$(get_libdir)/nfs to /var/lib/nfs"
-		cp -pPR "${f}" "${ROOT}"/var/lib/nfs/
-	done
-}
diff --git a/net-fs/nfs-utils/nfs-utils-1.3.4.ebuild b/net-fs/nfs-utils/nfs-utils-1.3.4.ebuild
deleted file mode 100644
index a8f9fb1..0000000
--- a/net-fs/nfs-utils/nfs-utils-1.3.4.ebuild
+++ /dev/null
@@ -1,176 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-inherit eutils flag-o-matic multilib autotools systemd
-
-DESCRIPTION="NFS client and server daemons"
-HOMEPAGE="http://linux-nfs.org/"
-SRC_URI="mirror://sourceforge/nfs/${P}.tar.bz2"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="caps ipv6 kerberos +libmount nfsdcld +nfsidmap +nfsv4 nfsv41 selinux tcpd +uuid"
-REQUIRED_USE="kerberos? ( nfsv4 )"
-RESTRICT="test" #315573
-
-# kth-krb doesn't provide the right include
-# files, and nfs-utils doesn't build against heimdal either,
-# so don't depend on virtual/krb.
-# (04 Feb 2005 agriffis)
-DEPEND_COMMON="tcpd? ( sys-apps/tcp-wrappers )
-	caps? ( sys-libs/libcap )
-	sys-libs/e2fsprogs-libs
-	>=net-nds/rpcbind-0.2.4
-	net-libs/libtirpc:=
-	libmount? ( sys-apps/util-linux )
-	nfsdcld? ( >=dev-db/sqlite-3.3 )
-	nfsv4? (
-		dev-libs/libevent:=
-		>=net-libs/libnfsidmap-0.21-r1
-		kerberos? (
-			>=net-libs/libtirpc-0.2.4-r1[kerberos]
-			app-crypt/mit-krb5
-		)
-		nfsidmap? (
-			>=net-libs/libnfsidmap-0.24
-			>=sys-apps/keyutils-1.5.9
-		)
-	)
-	nfsv41? (
-		sys-fs/lvm2
-	)
-	uuid? ( sys-apps/util-linux )"
-RDEPEND="${DEPEND_COMMON}
-	!net-nds/portmap
-	!<sys-apps/openrc-0.13.9
-	selinux? (
-		sec-policy/selinux-rpc
-		sec-policy/selinux-rpcbind
-	)
-"
-DEPEND="${DEPEND_COMMON}
-	virtual/pkgconfig"
-
-src_prepare() {
-	epatch "${FILESDIR}"/${PN}-1.1.4-mtab-sym.patch
-	epatch "${FILESDIR}"/${PN}-1.2.8-cross-build.patch
-	epatch "${FILESDIR}"/${PN}-1.3.4-libevent.patch
-
-	sed \
-		-e "/^sbindir/s:= := \"${EPREFIX}\":g" \
-		-i utils/*/Makefile.am || die
-
-	epatch_user
-	eautoreconf
-}
-
-src_configure() {
-	export libsqlite3_cv_is_recent=yes # Our DEPEND forces this.
-	export ac_cv_header_keyutils_h=$(usex nfsidmap)
-	econf \
-		--with-statedir="${EPREFIX}"/var/lib/nfs \
-		--enable-tirpc \
-		--with-tirpcinclude="${EPREFIX}"/usr/include/tirpc/ \
-		$(use_enable libmount libmount-mount) \
-		$(use_with tcpd tcp-wrappers) \
-		$(use_enable nfsdcld nfsdcltrack) \
-		$(use_enable nfsv4) \
-		$(use_enable nfsv41) \
-		$(use_enable ipv6) \
-		$(use_enable caps) \
-		$(use_enable uuid) \
-		$(use_enable kerberos gss) \
-		--without-gssglue
-}
-
-src_compile(){
-	# remove compiled files bundled in the tarball
-	emake clean
-	default
-}
-
-src_install() {
-	default
-	rm linux-nfs/Makefile* || die
-	dodoc -r linux-nfs README
-
-	# Don't overwrite existing xtab/etab, install the original
-	# versions somewhere safe...  more info in pkg_postinst
-	keepdir /var/lib/nfs/{,sm,sm.bak}
-	mv "${ED}"/var/lib "${ED}"/usr/$(get_libdir) || die
-
-	# Install some client-side binaries in /sbin
-	dodir /sbin
-	mv "${ED}"/usr/sbin/rpc.statd "${ED}"/sbin/ || die
-
-	if use nfsv4 && use nfsidmap ; then
-		# Install a config file for idmappers in newer kernels. #415625
-		insinto /etc/request-key.d
-		echo 'create id_resolver * * /usr/sbin/nfsidmap -t 600 %k %d' > id_resolver.conf
-		doins id_resolver.conf
-	fi
-
-	insinto /etc
-	doins "${FILESDIR}"/exports
-	keepdir /etc/exports.d
-
-	local f list=() opt_need=""
-	if use nfsv4 ; then
-		opt_need="rpc.idmapd"
-		list+=( rpc.idmapd rpc.pipefs )
-		use kerberos && list+=( rpc.gssd rpc.svcgssd )
-	fi
-	for f in nfs nfsclient rpc.statd "${list[@]}" ; do
-		newinitd "${FILESDIR}"/${f}.initd ${f}
-	done
-	newinitd "${FILESDIR}"/nfsmount.initd-1.3.1 nfsmount # Nuke after 2015/08/01
-	for f in nfs nfsclient ; do
-		newconfd "${FILESDIR}"/${f}.confd ${f}
-	done
-	sed -i \
-		-e "/^NFS_NEEDED_SERVICES=/s:=.*:=\"${opt_need}\":" \
-		"${ED}"/etc/conf.d/nfs || die #234132
-
-	systemd_dounit systemd/*.{mount,service,target}
-	if ! use nfsv4 || ! use kerberos ; then
-		rm "${D}$(systemd_get_unitdir)"/rpc-{gssd,svcgssd}.service || die
-	fi
-	if ! use nfsv41 ; then
-		rm "${D}$(systemd_get_unitdir)"/nfs-blkmap.* || die
-	fi
-	rm "${D}$(systemd_get_unitdir)"/nfs-config.service || die
-	sed -i -r \
-		-e "/^EnvironmentFile=/s:=.*:=${EPREFIX}/etc/conf.d/nfs:" \
-		-e '/^(After|Wants)=nfs-config.service$/d' \
-		-e 's:/usr/sbin/rpc.statd:/sbin/rpc.statd:' \
-		"${D}$(systemd_get_unitdir)"/* || die
-}
-
-pkg_postinst() {
-	# Install default xtab and friends if there's none existing.  In
-	# src_install we put them in /usr/lib/nfs for safe-keeping, but
-	# the daemons actually use the files in /var/lib/nfs.  #30486
-	local f
-	mkdir -p "${EROOT}"/var/lib/nfs #368505
-	for f in "${EROOT}"/usr/$(get_libdir)/nfs/*; do
-		[[ -e ${EROOT}/var/lib/nfs/${f##*/} ]] && continue
-		einfo "Copying default ${f##*/} from ${EPREFIX}/usr/$(get_libdir)/nfs to ${EPREFIX}/var/lib/nfs"
-		cp -pPR "${f}" "${EROOT}"/var/lib/nfs/
-	done
-
-	if systemd_is_booted; then
-		if [[ ${REPLACING_VERSIONS} < 1.3.0 ]]; then
-			ewarn "We have switched to upstream systemd unit files. Since"
-			ewarn "they got renamed, you should probably enable the new ones."
-			ewarn "You can run 'equery files nfs-utils | grep systemd'"
-			ewarn "to know what services you need to enable now."
-		fi
-	else
-		ewarn "If you use OpenRC, the nfsmount service has been replaced with nfsclient."
-		ewarn "If you were using nfsmount, please add nfsclient and netmount to the"
-		ewarn "same runlevel as nfsmount."
-	fi
-}
diff --git a/net-fs/samba/files/samba-4.11.13-fix-newer-glibc-nss-breakage.patch b/net-fs/samba/files/samba-4.11.13-fix-newer-glibc-nss-breakage.patch
new file mode 100644
index 0000000..b62e4b5
--- /dev/null
+++ b/net-fs/samba/files/samba-4.11.13-fix-newer-glibc-nss-breakage.patch
@@ -0,0 +1,100 @@
+From 589b4f61d03697b70b684d70bde93f3b8833eb2a Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Wed, 22 Jul 2020 22:42:09 -0700
+Subject: [PATCH] nsswitch/nsstest.c: Avoid nss function conflicts with glibc
+ nss.h
+
+glibc 2.32 will define these varibles [1] which results in conflicts
+with these static function names, therefore prefix these function names
+with samba_ to avoid it
+
+[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=499a92df8b9fc64a054cf3b7f728f8967fc1da7d
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Reviewed-by: Volker Lendecke <vl@samba.org>
+Reviewed-by: Noel Power <npower@samba.org>
+
+Autobuild-User(master): Noel Power <npower@samba.org>
+Autobuild-Date(master): Tue Jul 28 10:52:00 UTC 2020 on sn-devel-184
+---
+ nsswitch/nsstest.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/nsswitch/nsstest.c b/nsswitch/nsstest.c
+index e8c4306441d..e2ee9fbf3af 100644
+--- a/nsswitch/nsstest.c
++++ b/nsswitch/nsstest.c
+@@ -137,7 +137,7 @@ static struct passwd *nss_getpwuid(uid_t uid)
+ 	return &pwd;
+ }
+ 
+-static void nss_setpwent(void)
++static void samba_nss_setpwent(void)
+ {
+ 	NSS_STATUS (*_nss_setpwent)(void) =
+ 		(NSS_STATUS(*)(void))find_fn("setpwent");
+@@ -152,7 +152,7 @@ static void nss_setpwent(void)
+ 	}
+ }
+ 
+-static void nss_endpwent(void)
++static void samba_nss_endpwent(void)
+ {
+ 	NSS_STATUS (*_nss_endpwent)(void) =
+ 		(NSS_STATUS (*)(void))find_fn("endpwent");
+@@ -290,7 +290,7 @@ again:
+ 	return &grp;
+ }
+ 
+-static void nss_setgrent(void)
++static void samba_nss_setgrent(void)
+ {
+ 	NSS_STATUS (*_nss_setgrent)(void) =
+ 		(NSS_STATUS (*)(void))find_fn("setgrent");
+@@ -305,7 +305,7 @@ static void nss_setgrent(void)
+ 	}
+ }
+ 
+-static void nss_endgrent(void)
++static void samba_nss_endgrent(void)
+ {
+ 	NSS_STATUS (*_nss_endgrent)(void) =
+ 		(NSS_STATUS (*)(void))find_fn("endgrent");
+@@ -402,7 +402,7 @@ static void nss_test_users(void)
+ {
+ 	struct passwd *pwd;
+ 
+-	nss_setpwent();
++	samba_nss_setpwent();
+ 	/* loop over all users */
+ 	while ((pwd = nss_getpwent())) {
+ 		printf("Testing user %s\n", pwd->pw_name);
+@@ -424,14 +424,14 @@ static void nss_test_users(void)
+ 		printf("initgroups: "); nss_test_initgroups(pwd->pw_name, pwd->pw_gid);
+ 		printf("\n");
+ 	}
+-	nss_endpwent();
++	samba_nss_endpwent();
+ }
+ 
+ static void nss_test_groups(void)
+ {
+ 	struct group *grp;
+ 
+-	nss_setgrent();
++	samba_nss_setgrent();
+ 	/* loop over all groups */
+ 	while ((grp = nss_getgrent())) {
+ 		printf("Testing group %s\n", grp->gr_name);
+@@ -452,7 +452,7 @@ static void nss_test_groups(void)
+ 		printf("getgrgid: "); print_group(grp);
+ 		printf("\n");
+ 	}
+-	nss_endgrent();
++	samba_nss_endgrent();
+ }
+ 
+ static void nss_test_errors(void)
+-- 
+2.30.1
+
diff --git a/net-fs/samba/samba-4.11.13-r5.ebuild b/net-fs/samba/samba-4.11.13-r7.ebuild
similarity index 100%
rename from net-fs/samba/samba-4.11.13-r5.ebuild
rename to net-fs/samba/samba-4.11.13-r7.ebuild
diff --git a/net-fs/samba/samba-4.11.13.ebuild b/net-fs/samba/samba-4.11.13.ebuild
index 96634e6..02333f4 100644
--- a/net-fs/samba/samba-4.11.13.ebuild
+++ b/net-fs/samba/samba-4.11.13.ebuild
@@ -152,6 +152,9 @@
 
 	# Apply latest security patches until 4.11.15 is available upstream.
 	"${FILESDIR}/${PN}-4.11.14-security-2020-10-29.patch"
+
+	# Backport glibc 2.32 nss.h naming conflict fix
+	"${FILESDIR}/${PN}-4.11.13-fix-newer-glibc-nss-breakage.patch"
 )
 
 #CONFDIR="${FILESDIR}/$(get_version_component_range 1-2)"
diff --git a/net-libs/grpc/files/grpc-1.16.1-backport-glibc-gettid-fix.patch b/net-libs/grpc/files/grpc-1.16.1-backport-glibc-gettid-fix.patch
new file mode 100644
index 0000000..2b3abc47
--- /dev/null
+++ b/net-libs/grpc/files/grpc-1.16.1-backport-glibc-gettid-fix.patch
@@ -0,0 +1,81 @@
+From ef0fee9031417189b0cd25b608eb3cade3d37090 Mon Sep 17 00:00:00 2001
+From: Benjamin Peterson <benjamin@dropbox.com>
+Date: Fri, 3 May 2019 08:11:00 -0700
+Subject: [PATCH] Rename gettid() functions.
+
+glibc 2.30 will declare its own gettid; see https://sourceware.org/git/?p=glibc.git;a=commit;h=1d0fc213824eaa2a8f8c4385daaa698ee8fb7c92. Rename the grpc versions to avoid naming conflicts.
+---
+ src/core/lib/gpr/log_linux.cc          | 4 ++--
+ src/core/lib/gpr/log_posix.cc          | 4 ++--
+ src/core/lib/iomgr/ev_epollex_linux.cc | 4 ++--
+ 3 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/core/lib/gpr/log_linux.cc b/src/core/lib/gpr/log_linux.cc
+index 561276f0c2..8b597b4cf2 100644
+--- a/src/core/lib/gpr/log_linux.cc
++++ b/src/core/lib/gpr/log_linux.cc
+@@ -40,7 +40,7 @@
+ #include <time.h>
+ #include <unistd.h>
+ 
+-static long gettid(void) { return syscall(__NR_gettid); }
++static long sys_gettid(void) { return syscall(__NR_gettid); }
+ 
+ void gpr_log(const char* file, int line, gpr_log_severity severity,
+              const char* format, ...) {
+@@ -70,7 +70,7 @@ void gpr_default_log(gpr_log_func_args* args) {
+   gpr_timespec now = gpr_now(GPR_CLOCK_REALTIME);
+   struct tm tm;
+   static __thread long tid = 0;
+-  if (tid == 0) tid = gettid();
++  if (tid == 0) tid = sys_gettid();
+ 
+   timer = static_cast<time_t>(now.tv_sec);
+   final_slash = strrchr(args->file, '/');
+diff --git a/src/core/lib/gpr/log_posix.cc b/src/core/lib/gpr/log_posix.cc
+index 0acb225572..cd0b702b94 100644
+--- a/src/core/lib/gpr/log_posix.cc
++++ b/src/core/lib/gpr/log_posix.cc
+@@ -30,7 +30,7 @@
+ #include <string.h>
+ #include <time.h>
+ 
+-static intptr_t gettid(void) { return (intptr_t)pthread_self(); }
++static intptr_t sys_gettid(void) { return (intptr_t)pthread_self(); }
+ 
+ void gpr_log(const char* file, int line, gpr_log_severity severity,
+              const char* format, ...) {
+@@ -85,7 +85,7 @@ void gpr_default_log(gpr_log_func_args* args) {
+   char* prefix;
+   gpr_asprintf(&prefix, "%s%s.%09d %7tu %s:%d]",
+                gpr_log_severity_string(args->severity), time_buffer,
+-               (int)(now.tv_nsec), gettid(), display_file, args->line);
++               (int)(now.tv_nsec), sys_gettid(), display_file, args->line);
+ 
+   fprintf(stderr, "%-70s %s\n", prefix, args->message);
+   gpr_free(prefix);
+diff --git a/src/core/lib/iomgr/ev_epollex_linux.cc b/src/core/lib/iomgr/ev_epollex_linux.cc
+index 06a382c556..371bd19aa8 100644
+--- a/src/core/lib/iomgr/ev_epollex_linux.cc
++++ b/src/core/lib/iomgr/ev_epollex_linux.cc
+@@ -1150,7 +1150,7 @@ static void end_worker(grpc_pollset* pollset, grpc_pollset_worker* worker,
+ }
+ 
+ #ifndef NDEBUG
+-static long gettid(void) { return syscall(__NR_gettid); }
++static long sys_gettid(void) { return syscall(__NR_gettid); }
+ #endif
+ 
+ /* pollset->mu lock must be held by the caller before calling this.
+@@ -1170,7 +1170,7 @@ static grpc_error* pollset_work(grpc_pollset* pollset,
+ #define WORKER_PTR (&worker)
+ #endif
+ #ifndef NDEBUG
+-  WORKER_PTR->originator = gettid();
++  WORKER_PTR->originator = sys_gettid();
+ #endif
+   if (grpc_polling_trace.enabled()) {
+     gpr_log(GPR_INFO,
+-- 
+2.30.1
+
diff --git a/net-libs/grpc/grpc-1.16.1-r5.ebuild b/net-libs/grpc/grpc-1.16.1-r6.ebuild
similarity index 100%
rename from net-libs/grpc/grpc-1.16.1-r5.ebuild
rename to net-libs/grpc/grpc-1.16.1-r6.ebuild
diff --git a/net-libs/grpc/grpc-1.16.1.ebuild b/net-libs/grpc/grpc-1.16.1.ebuild
index 9dc6d8e..c4f9a31 100644
--- a/net-libs/grpc/grpc-1.16.1.ebuild
+++ b/net-libs/grpc/grpc-1.16.1.ebuild
@@ -40,6 +40,7 @@
 	"${FILESDIR}/grpc-1.16.1-fix-cross-compilation.patch"
 	"${FILESDIR}/grpc-1.16.1-Support-vsock.patch"
 	"${FILESDIR}/grpc-1.16.1-string-contatenation.patch"
+	"${FILESDIR}/grpc-1.16.1-backport-glibc-gettid-fix.patch"
 )
 
 S="${WORKDIR}/${PN}-${MY_PV}"
diff --git a/net-libs/libmbim/libmbim-1.25.0-r70.ebuild b/net-libs/libmbim/libmbim-1.25.0-r70.ebuild
deleted file mode 100644
index 50e2c2f..0000000
--- a/net-libs/libmbim/libmbim-1.25.0-r70.ebuild
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-CROS_WORKON_COMMIT="da22bc16612f0dbc6f86ba2fe36777e4075110f8"
-CROS_WORKON_TREE="f12afb4a186825cd665f2e525c3898f8773445ac"
-CROS_WORKON_PROJECT="chromiumos/third_party/libmbim"
-
-inherit autotools cros-sanitizers cros-workon
-
-DESCRIPTION="MBIM modem protocol helper library"
-HOMEPAGE="http://cgit.freedesktop.org/libmbim/"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan doc static-libs"
-
-RDEPEND=">=dev-libs/glib-2.36
-	virtual/libgudev"
-
-DEPEND="${RDEPEND}
-	doc? ( dev-util/gtk-doc )
-	virtual/pkgconfig"
-
-src_prepare() {
-	default
-	gtkdocize
-	eautoreconf
-}
-
-src_configure() {
-	sanitizers-setup-env
-
-	econf \
-		--enable-mbim-username='modem' \
-		--enable-compile-warnings=yes \
-		$(use_enable static{-libs,}) \
-		$(use_enable {,gtk-}doc)
-}
-
-src_test() {
-	# TODO(benchan): Run unit tests for non-x86 platforms via qemu.
-	[[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] && emake check
-}
-
-src_install() {
-	default
-	use static-libs || rm -f "${ED}"/usr/$(get_libdir)/libmbim-glib.la
-}
diff --git a/net-libs/libmbim/libmbim-1.25.3-r75.ebuild b/net-libs/libmbim/libmbim-1.25.3-r75.ebuild
new file mode 100644
index 0000000..11de9eb
--- /dev/null
+++ b/net-libs/libmbim/libmbim-1.25.3-r75.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+CROS_WORKON_COMMIT="2e95568b4d3105e0223fce8c674ac9afced82fbb"
+CROS_WORKON_TREE="b9755a1074ada9c532a88c68dd45adee57247c46"
+CROS_WORKON_PROJECT="chromiumos/third_party/libmbim"
+
+inherit autotools cros-sanitizers cros-workon
+
+DESCRIPTION="MBIM modem protocol helper library"
+HOMEPAGE="http://cgit.freedesktop.org/libmbim/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="-asan doc static-libs"
+
+RDEPEND=">=dev-libs/glib-2.36
+	virtual/libgudev"
+
+DEPEND="${RDEPEND}
+	doc? ( dev-util/gtk-doc )
+	virtual/pkgconfig"
+
+src_prepare() {
+	default
+	gtkdocize
+	eautoreconf
+}
+
+src_configure() {
+	sanitizers-setup-env
+
+	econf \
+		--enable-mbim-username='modem' \
+		--enable-compile-warnings=yes \
+		$(use_enable static{-libs,}) \
+		$(use_enable {,gtk-}doc)
+}
+
+src_test() {
+	# TODO(benchan): Run unit tests for non-x86 platforms via qemu.
+	[[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] && emake check
+}
+
+src_install() {
+	default
+	use static-libs || rm -f "${ED}"/usr/$(get_libdir)/libmbim-glib.la
+}
diff --git a/net-libs/libqmi/libqmi-1.27.3-r96.ebuild b/net-libs/libqmi/libqmi-1.27.3-r96.ebuild
deleted file mode 100644
index e9d62b6..0000000
--- a/net-libs/libqmi/libqmi-1.27.3-r96.ebuild
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-CROS_WORKON_COMMIT="072abd58da99c00b79dbf7e4642fa19fb791aed9"
-CROS_WORKON_TREE="c56e5c4a204668f72aec5b5065d42229cb9e49c9"
-CROS_WORKON_PROJECT="chromiumos/third_party/libqmi"
-
-inherit autotools cros-sanitizers cros-workon
-
-DESCRIPTION="QMI modem protocol helper library"
-HOMEPAGE="http://cgit.freedesktop.org/libqmi/"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan doc mbim qrtr static-libs"
-
-RDEPEND=">=dev-libs/glib-2.36
-	mbim? ( >=net-libs/libmbim-1.18.0 )"
-DEPEND="${RDEPEND}
-	doc? ( dev-util/gtk-doc )
-	sys-devel/autoconf-archive
-	virtual/pkgconfig"
-
-src_prepare() {
-	default
-	gtkdocize
-	eautoreconf
-}
-
-src_configure() {
-	sanitizers-setup-env
-
-	econf \
-		--enable-qmi-username='modem' \
-		--enable-compile-warnings=yes \
-		$(use_enable qrtr) \
-		$(use_enable mbim mbim-qmux) \
-		$(use_enable static{-libs,}) \
-		$(use_enable {,gtk-}doc)
-}
-
-src_test() {
-	# TODO(benchan): Run unit tests for non-x86 platforms via qemu.
-	if [[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] ; then
-		# This is an ugly hack that happens to work, but should not be copied.
-		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir)" \
-		emake check
-	fi
-}
-
-src_install() {
-	default
-	use static-libs || rm -f "${ED}"/usr/$(get_libdir)/libqmi-glib.la
-}
diff --git a/net-libs/libqmi/libqmi-1.29.5-r103.ebuild b/net-libs/libqmi/libqmi-1.29.5-r103.ebuild
new file mode 100644
index 0000000..ca9864e
--- /dev/null
+++ b/net-libs/libqmi/libqmi-1.29.5-r103.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+CROS_WORKON_COMMIT="bc48601c7144792a724572a732bf15632ff6407c"
+CROS_WORKON_TREE="dce4e660d9cd78ea98e76aebf8eed517b076c3a9"
+CROS_WORKON_PROJECT="chromiumos/third_party/libqmi"
+
+inherit autotools cros-sanitizers cros-workon
+
+DESCRIPTION="QMI modem protocol helper library"
+HOMEPAGE="http://cgit.freedesktop.org/libqmi/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="-asan doc mbim qrtr static-libs"
+
+RDEPEND=">=dev-libs/glib-2.36
+	mbim? ( >=net-libs/libmbim-1.18.0 )
+	qrtr? ( net-libs/libqrtr-glib )"
+
+DEPEND="${RDEPEND}
+	doc? ( dev-util/gtk-doc )
+	sys-devel/autoconf-archive
+	virtual/pkgconfig"
+
+src_prepare() {
+	default
+	gtkdocize
+	eautoreconf
+}
+
+src_configure() {
+	sanitizers-setup-env
+
+	econf \
+		--enable-qmi-username='modem' \
+		--enable-compile-warnings=yes \
+		$(use_enable qrtr) \
+		$(use_enable mbim mbim-qmux) \
+		$(use_enable static{-libs,}) \
+		$(use_enable {,gtk-}doc)
+}
+
+src_test() {
+	# TODO(b/180536539): Run unit tests for non-x86 platforms via qemu.
+	if [[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] ; then
+		# This is an ugly hack that happens to work, but should not be copied.
+		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir)" \
+		emake check
+	fi
+}
+
+src_install() {
+	default
+	use static-libs || rm -f "${ED}"/usr/$(get_libdir)/libqmi-glib.la
+}
diff --git a/net-libs/libqmi/libqmi-9999.ebuild b/net-libs/libqmi/libqmi-9999.ebuild
index 5fd4b58..8ec4de9 100644
--- a/net-libs/libqmi/libqmi-9999.ebuild
+++ b/net-libs/libqmi/libqmi-9999.ebuild
@@ -15,7 +15,9 @@
 IUSE="-asan doc mbim qrtr static-libs"
 
 RDEPEND=">=dev-libs/glib-2.36
-	mbim? ( >=net-libs/libmbim-1.18.0 )"
+	mbim? ( >=net-libs/libmbim-1.18.0 )
+	qrtr? ( net-libs/libqrtr-glib )"
+
 DEPEND="${RDEPEND}
 	doc? ( dev-util/gtk-doc )
 	sys-devel/autoconf-archive
@@ -40,7 +42,7 @@
 }
 
 src_test() {
-	# TODO(benchan): Run unit tests for non-x86 platforms via qemu.
+	# TODO(b/180536539): Run unit tests for non-x86 platforms via qemu.
 	if [[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] ; then
 		# This is an ugly hack that happens to work, but should not be copied.
 		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir)" \
diff --git a/net-libs/libqrtr-glib/OWNERS b/net-libs/libqrtr-glib/OWNERS
new file mode 100644
index 0000000..b7e3dc7
--- /dev/null
+++ b/net-libs/libqrtr-glib/OWNERS
@@ -0,0 +1,5 @@
+ejcaruso@chromium.org
+pholla@chromium.org
+andrewlassalle@chromium.org
+madhavadas@google.com
+vpalatin@chromium.org
diff --git a/net-libs/libqrtr-glib/files/chromeos-version.sh b/net-libs/libqrtr-glib/files/chromeos-version.sh
new file mode 100755
index 0000000..0a8e69e
--- /dev/null
+++ b/net-libs/libqrtr-glib/files/chromeos-version.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+# Copyright 2021 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.
+
+exec gawk '
+match($0, /m4_define\(\[qrtr_(major|minor|micro)_version\], \[([0-9]+)\]\)/,
+      matches) { version[matches[1]] = matches[2] }
+END { print version["major"] "." version["minor"] "." version["micro"] }' \
+  "$1/configure.ac"
diff --git a/net-libs/libqrtr-glib/libqrtr-glib-1.1.0-r4.ebuild b/net-libs/libqrtr-glib/libqrtr-glib-1.1.0-r4.ebuild
new file mode 100644
index 0000000..5652f3f
--- /dev/null
+++ b/net-libs/libqrtr-glib/libqrtr-glib-1.1.0-r4.ebuild
@@ -0,0 +1,54 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="ee51e8f6e7d474bf990ba840972a80c6a7d55c6a"
+CROS_WORKON_TREE="4f570b6770ab57ec0d70319dafc98cef6a6c6062"
+CROS_WORKON_PROJECT="chromiumos/third_party/libqrtr-glib"
+CROS_WORKON_EGIT_BRANCH="master"
+
+inherit autotools cros-sanitizers cros-workon
+
+DESCRIPTION="QRTR modem protocol helper library"
+# TODO(andrewlassalle): replace the homepage once one is created.
+HOMEPAGE="https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="doc static-libs"
+
+RDEPEND=">=dev-libs/glib-2.36:2"
+BDEPEND="virtual/pkgconfig"
+DEPEND="${RDEPEND}
+	doc? ( dev-util/gtk-doc )
+	sys-devel/autoconf-archive"
+
+src_prepare() {
+	default
+	gtkdocize
+	eautoreconf
+}
+
+src_configure() {
+	sanitizers-setup-env
+
+	econf \
+		--enable-compile-warnings=yes \
+		"$(use_enable static{-libs,})" \
+		"$(use_enable {,gtk-}doc)"
+}
+
+src_test() {
+	# TODO(b/180536539): Run unit tests for non-x86 platforms via qemu.
+	if [[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] ; then
+		# This is an ugly hack that happens to work, but should not be copied.
+		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir)" \
+		emake check
+	fi
+}
+
+src_install() {
+	default
+	use static-libs || rm -f "${ED}/usr/$(get_libdir)/libqrtr-glib.la"
+}
diff --git a/net-libs/libqrtr-glib/libqrtr-glib-9999.ebuild b/net-libs/libqrtr-glib/libqrtr-glib-9999.ebuild
new file mode 100644
index 0000000..1850cf0
--- /dev/null
+++ b/net-libs/libqrtr-glib/libqrtr-glib-9999.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_PROJECT="chromiumos/third_party/libqrtr-glib"
+CROS_WORKON_EGIT_BRANCH="master"
+
+inherit autotools cros-sanitizers cros-workon
+
+DESCRIPTION="QRTR modem protocol helper library"
+# TODO(andrewlassalle): replace the homepage once one is created.
+HOMEPAGE="https://gitlab.freedesktop.org/mobile-broadband/libqrtr-glib"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~*"
+IUSE="doc static-libs"
+
+RDEPEND=">=dev-libs/glib-2.36:2"
+BDEPEND="virtual/pkgconfig"
+DEPEND="${RDEPEND}
+	doc? ( dev-util/gtk-doc )
+	sys-devel/autoconf-archive"
+
+src_prepare() {
+	default
+	gtkdocize
+	eautoreconf
+}
+
+src_configure() {
+	sanitizers-setup-env
+
+	econf \
+		--enable-compile-warnings=yes \
+		"$(use_enable static{-libs,})" \
+		"$(use_enable {,gtk-}doc)"
+}
+
+src_test() {
+	# TODO(b/180536539): Run unit tests for non-x86 platforms via qemu.
+	if [[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] ; then
+		# This is an ugly hack that happens to work, but should not be copied.
+		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir)" \
+		emake check
+	fi
+}
+
+src_install() {
+	default
+	use static-libs || rm -f "${ED}/usr/$(get_libdir)/libqrtr-glib.la"
+}
diff --git a/net-libs/libqrtr/files/qrtr-ns-seccomp-arm.policy b/net-libs/libqrtr/files/qrtr-ns-seccomp-arm.policy
index 408b971..3fbd4e7 100644
--- a/net-libs/libqrtr/files/qrtr-ns-seccomp-arm.policy
+++ b/net-libs/libqrtr/files/qrtr-ns-seccomp-arm.policy
@@ -33,3 +33,5 @@
 uname: 1
 wait4: 1
 write: 1
+clock_gettime64: 1
+clock_gettime: 1
diff --git a/net-libs/libqrtr/files/qrtr-ns-seccomp-arm64.policy b/net-libs/libqrtr/files/qrtr-ns-seccomp-arm64.policy
index 5a5a53d..e47d769 100644
--- a/net-libs/libqrtr/files/qrtr-ns-seccomp-arm64.policy
+++ b/net-libs/libqrtr/files/qrtr-ns-seccomp-arm64.policy
@@ -9,6 +9,7 @@
 connect: 1
 exit_group: 1
 fstat: 1
+newfstatat: 1
 getpid: 1
 getsockname: 1
 gettimeofday: 1
diff --git a/net-libs/libqrtr/libqrtr-0.0.1-r21.ebuild b/net-libs/libqrtr/libqrtr-0.0.1-r23.ebuild
similarity index 100%
rename from net-libs/libqrtr/libqrtr-0.0.1-r21.ebuild
rename to net-libs/libqrtr/libqrtr-0.0.1-r23.ebuild
diff --git a/net-misc/dhcpcd/dhcpcd-6.8.2-r21.ebuild b/net-misc/dhcpcd/dhcpcd-6.8.2-r24.ebuild
similarity index 100%
rename from net-misc/dhcpcd/dhcpcd-6.8.2-r21.ebuild
rename to net-misc/dhcpcd/dhcpcd-6.8.2-r24.ebuild
diff --git a/net-misc/dhcpcd/dhcpcd-6.8.2.ebuild b/net-misc/dhcpcd/dhcpcd-6.8.2.ebuild
index 1998cef..5ee7a51 100644
--- a/net-misc/dhcpcd/dhcpcd-6.8.2.ebuild
+++ b/net-misc/dhcpcd/dhcpcd-6.8.2.ebuild
@@ -11,7 +11,7 @@
 KEYWORDS="*"
 S="${WORKDIR}/${MY_P}"
 
-inherit eutils systemd toolchain-funcs user
+inherit cros-sanitizers eutils systemd toolchain-funcs user
 
 DESCRIPTION="A fully featured, yet light weight RFC2131 compliant DHCP client"
 HOMEPAGE="http://roy.marples.name/projects/dhcpcd/"
@@ -52,10 +52,13 @@
 	epatch "${FILESDIR}"/patches/${P}-Handle-DHCP-iSNS-option.patch
 	epatch "${FILESDIR}"/patches/${P}-Send-more-DHCPv6-options-over-DBus-RPC.patch
 	epatch "${FILESDIR}"/patches/${P}-Fix-dbus-flags.patch
+	epatch "${FILESDIR}"/patches/${P}-Check-read-callbacks-before-execution.patch
 }
 
 src_configure()
 {
+	sanitizers-setup-env
+
 	local dev hooks
 	use udev || dev="--without-dev --without-udev"
 	if ! use dbus ; then
diff --git a/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Add-DBus-RPC-support.patch b/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Add-DBus-RPC-support.patch
index 47ac3ff..092c22c 100644
--- a/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Add-DBus-RPC-support.patch
+++ b/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Add-DBus-RPC-support.patch
@@ -1362,8 +1362,8 @@
 +void
 +dhcpcd_stop_interfaces(struct dhcpcd_ctx *ctx)
 +{
-+	struct interface *ifp;
-+	TAILQ_FOREACH(ifp, ctx->ifaces, next) {
++	struct interface *ifp, *ifn;
++	TAILQ_FOREACH_SAFE(ifp, ctx->ifaces, next, ifn) {
 +		stop_interface(ifp);
 +	}
 +}
diff --git a/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Check-read-callbacks-before-execution.patch b/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Check-read-callbacks-before-execution.patch
new file mode 100644
index 0000000..1fc9040
--- /dev/null
+++ b/net-misc/dhcpcd/files/patches/dhcpcd-6.8.2-Check-read-callbacks-before-execution.patch
@@ -0,0 +1,55 @@
+From 14fd39c9753ce0ccc44d4e9cc2b091af06e16a6b Mon Sep 17 00:00:00 2001
+From: Andrzej Ostruszka <amo@semihalf.com>
+Date: Mon, 12 Apr 2021 16:18:55 +0000
+Subject: [PATCH] Check read callbacks before execution
+
+Since all file descriptors are marked POLLIN but read_cb argument of
+eloop_event_add() function can be NULL we need to check read_cb before
+we execute it.
+
+---
+ eloop.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/eloop.c b/eloop.c
+index e479ac1..9d63a46 100644
+--- a/eloop.c
++++ b/eloop.c
+@@ -611,10 +611,10 @@ eloop_start(struct eloop_ctx *ctx)
+ 				continue;
+ 			}
+ 			e = (struct eloop_event *)ke.udata;
+-			if (ke.filter == EVFILT_WRITE) {
++			if (ke.filter == EVFILT_WRITE && e->write_cb) {
+ 				e->write_cb(e->write_cb_arg);
+ 				continue;
+-			} else if (ke.filter == EVFILT_READ) {
++			} else if (ke.filter == EVFILT_READ && e->read_cb) {
+ 				e->read_cb(e->read_cb_arg);
+ 				continue;
+ 			}
+@@ -627,7 +627,8 @@ eloop_start(struct eloop_ctx *ctx)
+ 				continue;
+ 			}
+ 			if (epe.events &
+-			    (EPOLLIN | EPOLLERR | EPOLLHUP))
++				(EPOLLIN | EPOLLERR | EPOLLHUP) &&
++			    e->read_cb)
+ 			{
+ 				e->read_cb(e->read_cb_arg);
+ 				continue;
+@@ -642,7 +643,10 @@ eloop_start(struct eloop_ctx *ctx)
+ 					e->write_cb(e->write_cb_arg);
+ 					break;
+ 				}
+-				if (e->pollfd->revents) {
++				if (e->pollfd->revents &
++					(POLLIN | POLLERR | POLLHUP) &&
++				    e->read_cb)
++				{
+ 					e->read_cb(e->read_cb_arg);
+ 					break;
+ 				}
+-- 
+2.31.1.295.g9ea45b61b8-goog
+
diff --git a/net-misc/diag/Manifest b/net-misc/diag/Manifest
index 28eda84..d69f6d0 100644
--- a/net-misc/diag/Manifest
+++ b/net-misc/diag/Manifest
@@ -1 +1 @@
-DIST diag-0.1_p20190122.tar.gz 28581 BLAKE2B bdccf3f26abb7f82f929aa7bb49066b5a988ee32bf2589632b4dec7f0b5c3f19057bf684a971ceb23ce015ae8e58bf558c93d2f1ff7fd14a99f87a48345e3f0e SHA512 4728956e7cd5a2b2bd8e77b341766235428611aff9b6a1ae3ea0a2310e2d949e47be64f01e1144b65fde7ca806d46328c6eb965d3439b1ce11c235e3096ea847
+DIST diag-0.1_p20200329.tar.gz 29202 BLAKE2B cdd97dcb61659d45e82a919999e2f3e53c9fd931a3d42b53c59aa0047819e17fe9e6d6350e12be6a8f73463530865a0539d3c63e8409b5c41a732ffde432424a SHA512 140a8284406c155faf24d2a46fd185cfd7704915d04ce994cf9f641c26a8c1391160fc213c6d553a978d0d3df27288b03e0694917482e0244a50b4bc7ec6fb46
diff --git a/net-misc/diag/diag-0.1_p20190122-r1.ebuild b/net-misc/diag/diag-0.1_p20190122-r1.ebuild
deleted file mode 120000
index 689758e..0000000
--- a/net-misc/diag/diag-0.1_p20190122-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-diag-0.1_p20190122.ebuild
\ No newline at end of file
diff --git a/net-misc/diag/diag-0.1_p20190122.ebuild b/net-misc/diag/diag-0.1_p20190122.ebuild
deleted file mode 100644
index 42e6ec9..0000000
--- a/net-misc/diag/diag-0.1_p20190122.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2019 The Chromium OS Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-DESCRIPTION="DIAG channel diagnostics communication tool"
-HOMEPAGE="https://github.com/andersson/diag"
-GIT_SHA1="bf8035f68b0748d1380977aafc4349331b74cbda"
-SRC_URI="https://github.com/andersson/diag/archive/${GIT_SHA1}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="*"
-
-DEPEND="
-	net-libs/libqrtr:=
-	virtual/udev:=
-"
-
-RDEPEND="${DEPEND}"
-
-S="${WORKDIR}/${PN}-${GIT_SHA1}"
-
-src_compile() {
-	emake HAVE_LIBUDEV=1 HAVE_LIBQRTR=1
-}
-
-src_install() {
-	emake DESTDIR="${D}" prefix="${EPREFIX}/usr" install
-}
diff --git a/net-misc/diag/diag-0.1_p20200329-r1.ebuild b/net-misc/diag/diag-0.1_p20200329-r1.ebuild
new file mode 120000
index 0000000..e322cbe
--- /dev/null
+++ b/net-misc/diag/diag-0.1_p20200329-r1.ebuild
@@ -0,0 +1 @@
+diag-0.1_p20200329.ebuild
\ No newline at end of file
diff --git a/net-misc/diag/diag-0.1_p20200329.ebuild b/net-misc/diag/diag-0.1_p20200329.ebuild
new file mode 100644
index 0000000..c7bdc86
--- /dev/null
+++ b/net-misc/diag/diag-0.1_p20200329.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2019 The Chromium OS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+DESCRIPTION="DIAG channel diagnostics communication tool"
+HOMEPAGE="https://github.com/andersson/diag"
+GIT_SHA1="d06e599d197790c9e84ac41a51bf124a69768c4f"
+SRC_URI="https://github.com/andersson/diag/archive/${GIT_SHA1}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="*"
+
+DEPEND="
+	net-libs/libqrtr:=
+	virtual/udev:=
+"
+
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${PN}-${GIT_SHA1}"
+
+src_prepare() {
+	default
+	eapply "${FILESDIR}/0001-ODL-support-in-Makefile.patch"
+	eapply "${FILESDIR}/0001-ODL-support-on-Open-Source-Diag-Router.patch"
+	eapply "${FILESDIR}/0002-Increase-clinet-connection-count.patch"
+	eapply "${FILESDIR}/0003-ODL-packet-formatting-support-in-diag-router.patch"
+}
+
+src_compile() {
+	emake HAVE_LIBUDEV=1 HAVE_LIBQRTR=1
+}
+
+src_install() {
+	emake DESTDIR="${D}" prefix="${EPREFIX}/usr" install
+	insinto /usr/bin
+}
diff --git a/net-misc/diag/files/0001-ODL-support-in-Makefile.patch b/net-misc/diag/files/0001-ODL-support-in-Makefile.patch
new file mode 100644
index 0000000..83807be
--- /dev/null
+++ b/net-misc/diag/files/0001-ODL-support-in-Makefile.patch
@@ -0,0 +1,52 @@
+From ea36269f6a983a03620b5e874fa79d0cb8502666 Mon Sep 17 00:00:00 2001
+From: Dumpeti Sathish Kumar <sdumpeti@codeaurora.org>
+Date: Mon, 19 Apr 2021 15:37:05 +0530
+Subject: [PATCH 1/4] ODL support in Makefile
+
+---
+ Makefile | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 3565102..dc22396 100644
+--- a/Makefile
++++ b/Makefile
+@@ -5,13 +5,14 @@ HAVE_LIBQRTR=1
+ 
+ DIAG := diag-router
+ SEND_DATA := send_data
++LOG_ON_DEVICE:= diag-log_on_device
+ 
+-all: $(DIAG) $(SEND_DATA)
++all: $(DIAG) $(SEND_DATA) $(LOG_ON_DEVICE)
+ 
+ CFLAGS ?= -Wall -g -O2
+ ifeq ($(HAVE_LIBUDEV),1)
+ CFLAGS += -DHAS_LIBUDEV=1
+-LDFLAGS += -ludev
++LDFLAGS += -ludev -lpthread
+ endif
+ ifeq ($(HAVE_LIBQRTR),1)
+ CFLAGS += -DHAS_LIBQRTR=1
+@@ -55,9 +56,16 @@ SEND_DATA_OBJS := $(SEND_DATA_SRCS:.c=.o)
+ $(SEND_DATA): $(SEND_DATA_OBJS)
+ 	$(CC) -o $@ $^ $(LDFLAGS)
+ 
+-install: $(DIAG) $(SEND_DATA)
++LOG_ON_DEVICE_SRCS  := tools/diag-log_on_device.c
++LOG_ON_DEVICE_OBJS  := $(LOG_ON_DEVICE_SRCS:.c=.o)
++
++$(LOG_ON_DEVICE): $(LOG_ON_DEVICE_OBJS)
++	$(CC) -o $@ $^ $(LDFLAGS)
++
++install: $(DIAG) $(SEND_DATA) $(LOG_ON_DEVICE)
+ 	install -D -m 755 $(DIAG) $(DESTDIR)$(prefix)/bin/$(DIAG)
+ 	install -D -m 755 $(SEND_DATA) $(DESTDIR)$(prefix)/bin/$(SEND_DATA)
++	install -D -m 755 $(LOG_ON_DEVICE) $(DESTDIR)$(prefix)/bin/$(LOG_ON_DEVICE)
+ 
+ clean:
+-	rm -f $(DIAG) $(OBJS) $(SEND_DATA) $(SEND_DATA_OBJS)
++	rm -f $(DIAG) $(OBJS) $(SEND_DATA) $(SEND_DATA_OBJS) $(LOG_ON_DEVICE) $(LOG_ON_DEVICE_OBJS)
+-- 
+2.7.4
+
diff --git a/net-misc/diag/files/0001-ODL-support-on-Open-Source-Diag-Router.patch b/net-misc/diag/files/0001-ODL-support-on-Open-Source-Diag-Router.patch
new file mode 100644
index 0000000..abdcf3f
--- /dev/null
+++ b/net-misc/diag/files/0001-ODL-support-on-Open-Source-Diag-Router.patch
@@ -0,0 +1,662 @@
+From f850acdbe3bf2e5812f56d303add96ec3dc8f0a8 Mon Sep 17 00:00:00 2001
+From: Dumpeti Sathish Kumar <sdumpeti@codeaurora.org>
+Date: Tue, 20 Apr 2021 19:38:20 +0530
+Subject: [PATCH] ODL-support-on-Open-Source-Diag-Router
+
+---
+ tools/diag-log_on_device.c | 643 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 643 insertions(+)
+ create mode 100644 tools/diag-log_on_device.c
+
+diff --git a/tools/diag-log_on_device.c b/tools/diag-log_on_device.c
+new file mode 100644
+index 0000000..03a67f8
+--- /dev/null
++++ b/tools/diag-log_on_device.c
+@@ -0,0 +1,643 @@
++/*
++ * Copyright (c) 2021 The Linux Foundation. All rights reserved.
++
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions are met:
++    * Redistributions of source code must retain the above copyright
++      notice, this list of conditions and the following disclaimer.
++    * Redistributions in binary form must reproduce the above
++      copyright notice, this list of conditions and the following
++      disclaimer in the documentation and/or other materials provided
++      with the distribution.
++    * Neither the name of The Linux Foundation nor the names of its
++      contributors may be used to endorse or promote products derived
++      from this software without specific prior written permission.
++
++ * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
++ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
++ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
++ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
++ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
++ * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
++ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
++ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
++ * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ */
++
++#include <sys/socket.h>
++#include <sys/un.h>
++#include <netinet/in.h>
++#include <arpa/inet.h>
++#include <sys/time.h>
++#include <pthread.h>
++#include <err.h>
++#include <errno.h>
++#include <fcntl.h>
++#include <netdb.h>
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <time.h>
++#include <pthread.h>
++#include <stdint.h>
++#include <signal.h>
++#include <sys/time.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <dirent.h>
++#include <sys/types.h>
++#include <sys/syscall.h>
++#include <sys/select.h>
++#include <ctype.h>
++#include <limits.h>
++#include <stdlib.h>
++
++#define FILE_LIST_NAME_SIZE 100
++#define MAX_FILES_IN_FILE_LIST 100
++#define std_strlprintf snprintf
++#define LOG_FILENAME_PREFIX_LEN 9
++#define READ_BUF_SIZE 100000
++#define DISK_BUF_SIZE 8192
++#define CONTROL_CHAR 0x7E
++#define USER_SPACE_DATA_TYPE 0x00000020
++#define USER_SPACE_RAW_DATA_TYPE 0x00000080
++#define FILE_NAME_LEN 500
++#define MASK_FILE_BUF_SIZE 8192
++
++struct buffer_pool {
++	unsigned int bytes_in_buff;
++	unsigned char buffer_ptr[DISK_BUF_SIZE];
++};
++
++/*Static declaration of buffer. */
++struct buffer_pool pools[] = {
++	[0] = {
++		.bytes_in_buff = 0,
++	},
++	[1] = {
++		.bytes_in_buff = 0,
++	},
++
++};
++
++typedef uint32_t	uint32;
++typedef uint8_t		uint8;
++
++pthread_cond_t cond1 = PTHREAD_COND_INITIALIZER;
++pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
++
++/* Thread Handlers */
++pthread_t read_thread_hdl;	/* Diag Read thread handle */
++pthread_t write_thread_hdl;	/* Diag disk write thread handle */
++
++/* Global Declarations */
++int curr_read = 0;
++int curr_write = 0;
++unsigned char read_buffer[READ_BUF_SIZE];
++char output_dir[FILE_NAME_LEN] = {"/tmp"};
++char mask_clear_file[] = "/tmp/diag_mask.cfg";
++int fd_dev = -1; // Socket Descriptor
++int fd_device = -1; //FIle Descriptor
++char timestamp_buf[30];
++char file_name_curr[FILE_NAME_LEN];
++static char *open_mask_file= NULL;
++static int diag_mask_file = 0;
++static int diag_timeout;
++int num_bytes_read;
++unsigned int max_file_num = 10;
++static unsigned int file_count = 0;
++int file_list_size;
++unsigned long max_file_size = 100000000;
++unsigned long min_file_size = 80000000;
++unsigned static long count_written_bytes;
++char* file_list = NULL;
++int file_list_index = -1;
++char file_name_del[FILE_NAME_LEN];
++int overflow_flag = 0;
++int cleanup_mask;
++
++
++/* Function to get timestamp */
++void get_time_string(char *buffer, int len)
++{
++	struct timeval tv;
++	struct tm *tm;
++	unsigned long long milliseconds = 0;
++	char timestamp_buf[30];
++
++	if (!buffer || len <= 0)
++		return;
++
++	gettimeofday(&tv, NULL);
++	tm = localtime(&tv.tv_sec);
++	if (!tm)
++		return;
++
++	milliseconds = (tv.tv_sec * 1000LL) + (tv.tv_usec / 1000);
++	strftime(timestamp_buf, 30, "%Y%m%d_%H%M%S", tm);
++	(void)snprintf(buffer, len, "%s%lld",
++		timestamp_buf, milliseconds);
++}
++
++static void usage(void)
++{
++	fprintf(stderr,
++		"User space application for diag interface\n"
++		"\n"
++		"usage: diag [-of]\n"
++		"\n"
++		"options:\n"
++		"-o	<output directory>\n"
++		"-f	<Diag Configuration file>\n"
++		"-t	<Log Timeout>\n"
++		"-n	<number of log files>\n"
++		"-s	<Size in MB>\n"
++		"-c	<Cleanup Modem Mask>\n"
++	);
++	exit(1);
++}
++
++
++int send_empty_mask(int type)
++{
++	int fd_mask, ch, ret;
++	const uint8 size = 40;
++	unsigned char mask_buf[size];
++	int count_mask_bytes = 4;
++	*(int *)mask_buf = USER_SPACE_RAW_DATA_TYPE;
++	FILE *mask_fp = NULL;
++
++	if ((mask_fp = fopen(mask_clear_file, "rb")) == NULL) {
++		printf("can't open mask clear file: %s, errno: %d\n", mask_clear_file,errno);
++		return -1;
++	}
++	while(1)
++	{
++		ch = fgetc(mask_fp);
++		if(ch == EOF)
++			break;
++
++		mask_buf[count_mask_bytes] = ch;
++		if (mask_buf[count_mask_bytes] == CONTROL_CHAR) {
++			ret = write(fd_dev, mask_buf, count_mask_bytes-1);
++			if(ret < 0) {
++				printf("Write Error on the Socket: errno = %d\n", errno);
++				return -1;
++			}
++		*(int *)mask_buf = USER_SPACE_DATA_TYPE;
++		count_mask_bytes = 4;
++		} else {
++			count_mask_bytes++;
++		}
++	}
++	fclose(mask_fp);
++
++	return 0;	
++}
++
++
++static void log_timeout(int sig, siginfo_t *siginfo, void *context)
++{
++	int ret;
++	printf ("Sending PID: %ld, UID: %ld\n",
++			(long)siginfo->si_pid, (long)siginfo->si_uid);
++	ret = send_empty_mask(0);
++	if(ret < 0)
++		printf("Couldn't open Mask clear file.\n");
++
++	close(fd_device);
++	close(fd_dev);
++	pthread_cancel(read_thread_hdl);
++	pthread_cancel(write_thread_hdl);
++}
++int close_logging_file()
++{
++	int status;
++	char timestamp_buf[30];
++	char new_filename[FILE_NAME_LEN];
++
++	close(fd_device);
++	/* check whether number of files in /tmp. Delete if we exceed the limit */
++	if(file_count > max_file_num) {
++		printf("Delete Oldest File.\n");
++		if (!delete_log()) {
++			file_count--;
++		}
++	}
++	get_time_string(timestamp_buf, sizeof(timestamp_buf));
++	snprintf(new_filename,
++			FILE_NAME_LEN, "%s%s%s%s",
++			output_dir,"/diag_log_",
++			timestamp_buf, ".qmdl");
++
++	fd_device = open(new_filename,
++			O_CREAT | O_RDWR | O_SYNC | O_TRUNC,
++			0644);
++	if(fd_device < 0) {
++		printf(" File open error: %d\n", errno);
++		return -1;
++	}
++	else {
++		file_count++; 
++	}
++	strncpy(file_name_curr, new_filename, FILE_NAME_LEN);
++	return 0;
++}
++
++static void *WriteThread(void *data)
++{
++	unsigned int chunks, last_chunk;
++	struct stat finfo;
++	int ret;
++	while(1) {
++		pthread_mutex_lock(&lock);
++		pthread_cond_wait(&cond1, &lock);
++		ret = write(fd_device,pools[curr_write].buffer_ptr,DISK_BUF_SIZE);
++		if(ret > 0) {
++			pools[curr_write].bytes_in_buff = 0;
++		} else if (ret < 0) {
++			goto fail;
++		}
++		/* Check whether we reached to MAX size of the File */
++		if(fstat(fd_device, &finfo) == 0) {
++			if(finfo.st_size > min_file_size) {
++				ret = close_logging_file();
++				if(ret < 0)
++					goto fail;
++				count_written_bytes = 0;
++			}
++		} 
++		else {
++			goto fail;
++		}
++		pthread_mutex_unlock(&lock);
++		curr_write =! curr_write;
++	}
++fail:
++	pthread_cancel(read_thread_hdl);
++	close(fd_dev);
++	close(fd_device);
++}
++/* Read Thread */
++static void *CreateWaitThread(void* data) 
++{
++	int read_bytes = 0,type,num_data_fields;
++	uint32 count_received_bytes;
++	unsigned char* ptr;
++
++	while(1) {
++		num_bytes_read = 0;
++		memset(read_buffer, 0, READ_BUF_SIZE);
++		num_bytes_read = read(fd_dev, (void*)read_buffer,READ_BUF_SIZE);
++		if(!num_bytes_read || (num_bytes_read < 0))
++			goto read_failure;
++
++		type = *(int *)read_buffer;
++		ptr = read_buffer+4;
++		num_data_fields = *(int *)ptr;
++		ptr += 4;
++		count_received_bytes = *(uint32*)ptr;
++		ptr += sizeof(uint32);
++		count_written_bytes += num_bytes_read;
++		if(count_received_bytes >= (DISK_BUF_SIZE - pools[curr_read].bytes_in_buff)) {
++		/* Trigger Write Thread */
++			curr_read =! curr_read;
++			pthread_cond_signal(&cond1);
++		}
++
++		if(count_received_bytes > 0) {/* Buffer space is available */
++			memcpy(pools[curr_read].buffer_ptr + pools[curr_read].bytes_in_buff, ptr, count_received_bytes);
++			pools[curr_read].bytes_in_buff += count_received_bytes;
++		}
++	}
++
++read_failure:
++	close(fd_dev);
++	close(fd_device);
++	pthread_cancel(write_thread_hdl);	
++}
++
++static int create_oldest_file_list(char *oldest_dir)
++{
++
++	int status = 1;
++	struct dirent **dirent_list;
++	int i,n,type=0;
++	int num_entries = 0;
++	int num_entries_capped = 0;
++	char *name_ptr;
++	int num_bytes = 0;
++
++	num_entries = scandir(oldest_dir, &dirent_list, 0,(int(*)(const struct dirent **, const struct dirent **))alphasort);
++	if(!dirent_list) {
++		printf("In %s, couldn't get the dirent_list, errno: %d, directory: %s\n",
++		__func__, errno, oldest_dir);
++		return 0;
++	} else if (num_entries < 0) {
++		printf("In %s, error determining directory entries, errno: %d, directory: %s\n",
++			__func__, errno, oldest_dir);
++		return 0;
++	}
++
++	/* Limit the size of the list so we aren't working with too many files */
++	num_entries_capped = (num_entries > MAX_FILES_IN_FILE_LIST) ?
++				MAX_FILES_IN_FILE_LIST : num_entries;
++		
++	if (num_entries_capped - 2 > 0) {
++		file_list_size = num_entries_capped - 2;
++		num_bytes = FILE_LIST_NAME_SIZE * file_list_size;
++		file_list = malloc(num_bytes);
++	}
++
++	if (file_list) {
++		file_list_index = 0;
++		for (i = 0; i < num_entries_capped; i++)
++		{
++			if ((strncmp(dirent_list[i]->d_name, "diag_log_",LOG_FILENAME_PREFIX_LEN) != 0))
++				continue;
++			if (file_list_index < file_list_size)
++			{
++				name_ptr = file_list +
++						(file_list_index * FILE_LIST_NAME_SIZE);
++				strncpy(name_ptr, dirent_list[i]->d_name, FILE_LIST_NAME_SIZE);
++				*(name_ptr + (FILE_LIST_NAME_SIZE - 1)) = 0;
++					file_list_index++;
++			}
++			if (file_list_index > 0) {
++				if (file_list_index < file_list_size) {
++					int new_size = FILE_LIST_NAME_SIZE *file_list_index;
++					char *temp_ptr = realloc(file_list, new_size);
++					if (temp_ptr)
++						file_list = temp_ptr;
++				}
++			file_list_size = file_list_index;
++			}
++		}
++	}
++	else if (num_bytes > 0) {
++		printf("Memory Allocation error.\n");
++		status = 0;
++	}
++	
++	i = num_entries;
++	while (i--) {
++	free(dirent_list[i]);
++	}
++	
++	free(dirent_list); 
++	return status;
++}
++
++static int get_oldest_file(char* oldest_file, char *oldest_dir)
++{
++	int status = 0;
++		status = create_oldest_file_list(oldest_dir);
++
++	if (file_list) {
++		if (oldest_file) {
++			strncpy(oldest_file, file_list,
++				FILE_LIST_NAME_SIZE);
++			file_list_index++;
++			status = 1;
++		} else {
++			printf("In %s, oldest_file is NULL\n", __func__);
++		}
++		
++	}else {
++		status =0;
++		printf("No Log files in the dicrectory.\n");
++	}
++
++	return status;
++}
++/* Number of Log file in /tmp directory */
++static int get_file_count(char *oldest_dir)
++{
++	struct dirent **dirent_list;
++	int i,num_entries = 0;
++	int num_entries_capped = 0;
++
++	num_entries = scandir(oldest_dir, &dirent_list, 0,(int(*)(const struct dirent **, const struct dirent **))alphasort);
++	if(!dirent_list) {
++		printf("In %s, couldn't get the dirent_list, errno: %d, directory: %s\n",
++			__func__, errno, oldest_dir);
++		return 0;
++	} else if (num_entries < 0) {
++		printf("In %s, error determining directory entries, errno: %d, directory: %s\n",
++			 __func__, errno, oldest_dir);
++		return 0;
++	}
++	
++	for (i = 0; i < num_entries; i++) {
++		if ((strncmp(dirent_list[i]->d_name, "diag_log_",LOG_FILENAME_PREFIX_LEN) != 0))
++			continue;
++	file_count++;
++	}
++	return file_count;
++}
++
++int delete_log()
++{
++	int status;
++	char oldest_file[FILE_LIST_NAME_SIZE] = "";
++	struct stat file_stat;
++
++	status = get_oldest_file(oldest_file,
++					output_dir);
++	if (0 == status) {
++		printf("diag: In %s, Unable to determine oldest file for deletion\n",
++			 __func__);
++		return -1;
++	}
++	std_strlprintf(file_name_del,
++			FILE_NAME_LEN, "%s%s%s",
++			output_dir, "/", oldest_file);
++	if (!strncmp(file_name_curr, file_name_del, FILE_NAME_LEN)) {
++		printf("diag: In %s, Cannot delete file, file %s is in use \n",
++			 __func__, file_name_curr);
++		return -1;
++	}
++	stat(file_name_del, &file_stat);
++	/* Convert size to KB */
++	file_stat.st_size /= 1024;
++	if (unlink(file_name_del)) {
++		printf("In %s, Unable to delete file: %s, errno: %d\n",
++			__func__, file_name_del, errno);
++		return -1;
++	} else {
++		printf("In %s, Deleting logfile %s of size %lld KB\n",
++			__func__, file_name_del,
++			(long long int) file_stat.st_size);
++		free(file_list);
++	}
++	return 0;
++}
++
++
++int main(int argc, char **argv)
++{
++	int ret;
++	int c,ch,found_cmd;
++	struct sockaddr_un addr;
++	struct timeval tv = {20, 0};
++	struct sigaction act;
++	int count_mask_bytes = 0;
++	unsigned char mask_buf[MASK_FILE_BUF_SIZE];
++	FILE *read_mask_fp;
++	*(int *)mask_buf = USER_SPACE_DATA_TYPE;
++	
++	count_mask_bytes = 4;
++	memset (&act, '\0', sizeof(act));
++	act.sa_sigaction = &log_timeout;
++	act.sa_flags = SA_SIGINFO;
++	if (sigaction(SIGALRM, &act, NULL) < 0) {
++		perror ("sigaction");
++		return 1;
++	}
++
++	for (;;) {
++		c = getopt(argc, argv, "hf:o:t:s");
++		if (c < 0)
++			break;
++
++		switch (c) {
++		case 'c':
++			cleanup_mask = 1;
++			break;
++		
++		case 's':
++			max_file_size = atol(optarg);
++			if ((long)max_file_size <= 0)
++				max_file_size = 100000000;
++			else {
++				max_file_size *= 1024 * 1024;
++				if (max_file_size >= 0 && max_file_size < 1024 * 1024)
++					max_file_size = 100000000;
++			}
++			min_file_size = ((max_file_size / 100) * 80);
++			break;
++		
++		case 'o':
++			file_count = get_file_count(output_dir);
++			printf("QMDL File Count in /tmp Directory = %d\n", file_count);
++			
++			if(max_file_num > 1 && (file_count >= max_file_num)) { /* Check file_count before creating the Log File. */
++				printf("In %s, File count reached max file num %u so deleting oldest file\n",__func__, max_file_num);
++			
++			while(file_count > max_file_num)
++				if (!delete_log()) {
++				file_count--;
++				}
++			}
++
++			get_time_string(timestamp_buf, sizeof(timestamp_buf));
++			snprintf(file_name_curr,
++					FILE_NAME_LEN, "%s%s%s%s",
++					output_dir,"/diag_log_",
++					timestamp_buf, ".qmdl");
++			fd_device = open(file_name_curr,
++					O_CREAT | O_RDWR | O_SYNC | O_TRUNC,
++					0644);
++			if(fd_device < 0) {
++				printf(" File open error: %d\n", errno);
++				return -1;
++			}
++			else {
++				file_count++;
++			}
++			break;
++
++		case 'f':
++			open_mask_file = strdup(optarg);
++			diag_mask_file = 1;
++			break;
++		case 't':
++			printf("Timeout for QMDL Logging\n");
++			diag_timeout = atoi(optarg);
++			printf("Time out value = %d\n", diag_timeout);
++			alarm(diag_timeout);
++			break;
++		default:
++		case 'h':
++			usage();
++			break;
++		}
++	}
++
++	fd_dev = socket(AF_UNIX, SOCK_SEQPACKET, 0);
++	if (fd_dev < 0)
++		goto failure_case3;
++
++	memset(&addr, 0, sizeof(addr));
++	addr.sun_family = AF_UNIX;
++	strncpy(addr.sun_path, "\0diag", sizeof(addr.sun_path)-1);
++	
++	ret = connect(fd_dev, (struct sockaddr*)&addr, sizeof(addr));
++	if (ret < 0)
++		goto failure_case2;
++
++	pthread_create(&read_thread_hdl, NULL, CreateWaitThread, NULL);
++	if(read_thread_hdl == 0) {
++		printf("Failed to create Read Thread.\n");
++		goto failure_case2;
++	}
++	pthread_create(&write_thread_hdl, NULL, WriteThread, NULL);
++	if(write_thread_hdl == 0) {
++		printf("Failed to create Write Thread.\n");
++		if(read_thread_hdl == 0)
++			pthread_cancel(read_thread_hdl);
++		goto failure_case2;
++	}
++
++	if ((read_mask_fp = fopen(open_mask_file, "rb")) == NULL) {
++		printf("can't open mask file: %s, errno: %d\n", open_mask_file,errno);
++		goto failure_case1;
++	}
++
++	if(diag_mask_file){
++		while(1){
++			ch = fgetc(read_mask_fp);
++			if (ch == EOF)
++			break;  
++			mask_buf[count_mask_bytes] = ch;
++			if (mask_buf[count_mask_bytes] == CONTROL_CHAR) {
++
++			if (!found_cmd)
++				found_cmd = 1;
++			ret = write(fd_dev, mask_buf, count_mask_bytes+1);
++			if(ret < 0) {
++				printf("Write Error on the Socket: errno = %d\n", errno);
++				goto failure_case0;
++			}
++		
++			*(int *)mask_buf = USER_SPACE_DATA_TYPE;
++			count_mask_bytes = 4;
++			} else {
++			count_mask_bytes++;
++			}
++		}
++		if(!found_cmd){
++			printf("No command found:\n");
++		}
++	}
++	while(1)
++		sleep(3600);
++
++failure_case0:
++	fclose(read_mask_fp);
++
++failure_case1:
++	pthread_cancel(read_thread_hdl);
++	pthread_cancel(write_thread_hdl);
++
++failure_case2:
++	close(fd_dev);
++
++failure_case3:
++	close(fd_device);
++
++	return 0;
++}
+-- 
+2.7.4
+
diff --git a/net-misc/diag/files/0002-Increase-clinet-connection-count.patch b/net-misc/diag/files/0002-Increase-clinet-connection-count.patch
new file mode 100644
index 0000000..68ca389
--- /dev/null
+++ b/net-misc/diag/files/0002-Increase-clinet-connection-count.patch
@@ -0,0 +1,25 @@
+From 5d3cffa5e71a607c5c970491e57f7251240c9ac6 Mon Sep 17 00:00:00 2001
+From: Dumpeti Sathish Kumar <sdumpeti@codeaurora.org>
+Date: Mon, 19 Apr 2021 15:37:24 +0530
+Subject: [PATCH 2/4] Increase clinet connection count
+
+---
+ router/unix.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/router/unix.c b/router/unix.c
+index ead9fe0..5b3e41d 100644
+--- a/router/unix.c
++++ b/router/unix.c
+@@ -85,7 +85,7 @@ int diag_unix_open(void)
+ 		return -1;
+ 	}
+ 
+-	ret = listen(fd, 2);
++	ret = listen(fd, 50);
+ 	if (ret < 0) {
+ 		fprintf(stderr, "failed to listen on diag socket\n");
+ 		return -1;
+-- 
+2.7.4
+
diff --git a/net-misc/diag/files/0003-ODL-packet-formatting-support-in-diag-router.patch b/net-misc/diag/files/0003-ODL-packet-formatting-support-in-diag-router.patch
new file mode 100644
index 0000000..2890ae6
--- /dev/null
+++ b/net-misc/diag/files/0003-ODL-packet-formatting-support-in-diag-router.patch
@@ -0,0 +1,96 @@
+From 20aad66f2fbb535cb51536ca387149f53ffa99fd Mon Sep 17 00:00:00 2001
+From: Dumpeti Sathish Kumar <sdumpeti@codeaurora.org>
+Date: Mon, 19 Apr 2021 15:37:44 +0530
+Subject: [PATCH 3/4] ODL packet formatting support in diag-router
+
+---
+ router/dm.c | 44 +++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 39 insertions(+), 5 deletions(-)
+
+diff --git a/router/dm.c b/router/dm.c
+index b669bef..b9585ba 100644
+--- a/router/dm.c
++++ b/router/dm.c
+@@ -35,6 +35,7 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
++#include <error.h>
+ 
+ #include "diag.h"
+ #include "dm.h"
+@@ -128,6 +129,10 @@ static int dm_recv_raw(struct diag_client *dm)
+ 	int saved_errno;
+ 	unsigned char buf[4096];
+ 	ssize_t n;
++	struct hdlc_decoder recv_decoder;
++	struct circ_buf recv_buf;
++	size_t msglen;
++	void *msg;
+ 
+ 	for (;;) {
+ 		n = read(dm->in_fd, buf, sizeof(buf));
+@@ -141,10 +146,13 @@ static int dm_recv_raw(struct diag_client *dm)
+ 			warn("Failed to read from %s\n", dm->name);
+ 			return saved_errno;
+ 		}
+-
+-		diag_client_handle_command(dm, buf, n);
++		memset(&recv_decoder, 0, sizeof(recv_decoder));
++		memcpy(recv_buf.buf, buf+4, n-4);
++		recv_buf.tail = 0;
++		recv_buf.head = n-4;
++		msg = hdlc_decode_one(&recv_decoder, &recv_buf, &msglen);
++		diag_client_handle_command(dm, msg, msglen);
+ 	}
+-
+ 	return 0;
+ }
+ 
+@@ -194,15 +202,41 @@ ssize_t dm_send(struct diag_client *dm, const void *ptr, size_t len)
+  * @len:	length of message
+  * @flow:	flow control context for the peripheral
+  */
+-void dm_broadcast(const void *ptr, size_t len, struct watch_flow *flow)
++void dm_broadcast(const void *buf, size_t len, struct watch_flow *flow)
+ {
+ 	struct diag_client *dm;
+ 	struct list_head *item;
++	size_t outlen;
++	void *outbuf;
++	int user_space_data_type = 32;
++	int remote_proc, data_len;
++	unsigned char *ptr;
++	int num_data_fields = 1, offset = 0;
++	
++	outbuf = hdlc_encode(buf, len, &outlen);
++	if (!outbuf) {
++		printf("failed to allocate hdlc destination buffer\n");
++		return;
++	}
++	
++	data_len = (outlen + sizeof(int)*3);
++	ptr = alloca(data_len);
++	if (!ptr) {
++		printf("diag: In %s failed to allocate memory\n", __func__);
++		return;
++	}
++	memcpy(ptr,&user_space_data_type, sizeof(user_space_data_type));
++	offset = offset + sizeof(user_space_data_type);
++	memcpy(ptr + offset, &num_data_fields, sizeof(num_data_fields));
++	offset = offset + sizeof(num_data_fields);
++	memcpy(ptr + offset, &outlen, sizeof(int));
++	offset = offset + sizeof(int);
++	memcpy(ptr + offset, outbuf, outlen);
+ 
+ 	list_for_each(item, &diag_clients) {
+ 		dm = container_of(item, struct diag_client, node);
+ 
+-		dm_send_flow(dm, ptr, len, flow);
++		dm_send_flow(dm, ptr, data_len, flow);
+ 	}
+ }
+ 
+-- 
+2.7.4
+
diff --git a/net-misc/htpdate/files/htpdate.conf b/net-misc/htpdate/files/htpdate.conf
deleted file mode 100644
index 32d8809..0000000
--- a/net-misc/htpdate/files/htpdate.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-# config file for /etc/init.d/htpdate
-
-# Add at least one http server to use:
-SERVERS="www.google.com"
-
-# If you are using a proxy server to connect to the
-# internet comment out the following line and insert the
-# address and port of your proxy server.
-#PROXY="-P <proxy>:<port>"
-
-# Set additional options, see 'man htpdate' for refernce
-HTPDATE_OPTS="-D -u ntp:ntp -m 5 -s -t -r generate_204 -w"
diff --git a/net-misc/htpdate/files/htpdate.init b/net-misc/htpdate/files/htpdate.init
deleted file mode 100644
index 8d40d93..0000000
--- a/net-misc/htpdate/files/htpdate.init
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/sbin/runscript
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/htpdate/files/htpdate.init,v 1.3 2006/08/24 02:23:18 vapier Exp $
-
-depend() {
-	need net
-	use dns logger
-}
-
-checkconfig() {
-	if [[ -z ${SERVERS} ]] ; then
-		eerror "You need to set at least one http server to use in /etc/conf.d/htpdate"
-		return 1
-	fi
-}
-
-start() {
-	checkconfig || return 1
-	ebegin "Starting htpdate"
-	htpdate ${HTPDATE_OPTS} ${PROXY} ${SERVERS}
-	eend $?
-}
-
-stop() {
-	ebegin "Stopping htpdate"
-	start-stop-daemon --stop --quiet --pidfile /var/run/htpdate.pid
-	eend $?
-}
diff --git a/net-misc/htpdate/htpdate-1.0.4-r6.ebuild b/net-misc/htpdate/htpdate-1.0.4-r7.ebuild
similarity index 100%
rename from net-misc/htpdate/htpdate-1.0.4-r6.ebuild
rename to net-misc/htpdate/htpdate-1.0.4-r7.ebuild
diff --git a/net-misc/htpdate/htpdate-1.0.4.ebuild b/net-misc/htpdate/htpdate-1.0.4.ebuild
index be66c85..d0e0419 100644
--- a/net-misc/htpdate/htpdate-1.0.4.ebuild
+++ b/net-misc/htpdate/htpdate-1.0.4.ebuild
@@ -1,8 +1,9 @@
 # Copyright 1999-2009 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-misc/htpdate/htpdate-1.0.4.ebuild,v 1.7 2009/06/19 22:08:34 ranger Exp $
 
-inherit toolchain-funcs eutils
+EAPI="7"
+
+inherit toolchain-funcs
 
 DESCRIPTION="Synchronize local workstation with time offered by remote webservers"
 HOMEPAGE="http://www.clevervest.com/htp/"
@@ -13,43 +14,34 @@
 KEYWORDS="*"
 IUSE=""
 
-DEPEND=""
-RDEPEND=""
-
+PATCHES=(
+	"${FILESDIR}/${P}-waitforvalidhttpresp.patch"
+	"${FILESDIR}/${P}-errorcheckhttpresp.patch"
+	"${FILESDIR}/${P}-checkagainstbuildtime.patch"
+	"${FILESDIR}/${P}-oob_date_read.patch"
+	"${FILESDIR}/${P}-errorsarentsuccess.patch"
+	"${FILESDIR}/${P}-64bit_limits.patch"
+	"${FILESDIR}/${P}-relative_path.patch"
+	"${FILESDIR}/${P}-all_headers.patch"
+)
 
 src_unpack() {
 	unpack ${A}
-	cd "${S}"
-	epatch "${FILESDIR}/${P}-waitforvalidhttpresp.patch"
-	epatch "${FILESDIR}/${P}-errorcheckhttpresp.patch"
-	epatch "${FILESDIR}/${P}-checkagainstbuildtime.patch"
-	epatch "${FILESDIR}/${P}-oob_date_read.patch"
-	epatch "${FILESDIR}/${P}-errorsarentsuccess.patch"
-	epatch "${FILESDIR}/${P}-64bit_limits.patch"
-	epatch "${FILESDIR}/${P}-relative_path.patch"
-	epatch "${FILESDIR}/${P}-all_headers.patch"
-	gunzip htpdate.8.gz || die
+	cd "${S}" || die
+	unpack ./htpdate.8.gz || die
 }
 
 src_compile() {
 	# Provide timestamp of when this was built, in number of seconds since
 	# 01 Jan 1970 in UTC time.
-	DATE=`date -u +%s`
+	local stamp=$(date -u +%s)
 	# Set it back one day to avoid dealing with time zones.
-	DATE_OPT="-DBUILD_TIME_UTC=`expr $DATE - 86400`"
-	emake CFLAGS="-Wall $DATE_OPT ${CFLAGS} ${LDFLAGS}" CC="$(tc-getCC)" || die
+	local date_opt="-DBUILD_TIME_UTC=$(( stamp - 86400 ))"
+	emake CFLAGS="-Wall ${date_opt} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}" CC="$(tc-getCC)"
 }
 
 src_install() {
-	dosbin htpdate || die
+	dosbin htpdate
 	doman htpdate.8
 	dodoc README Changelog
-
-	newconfd "${FILESDIR}"/htpdate.conf htpdate
-	newinitd "${FILESDIR}"/htpdate.init htpdate
-}
-
-pkg_postinst() {
-	einfo "If you would like to run htpdate as a daemon set"
-	einfo "appropriate http servers in /etc/conf.d/htpdate!"
 }
diff --git a/net-misc/modemmanager-next/files/77-mm-fibocom-port-types.rules b/net-misc/modemmanager-next/files/77-mm-fibocom-port-types.rules
index deb67d3..ae73bb1 100644
--- a/net-misc/modemmanager-next/files/77-mm-fibocom-port-types.rules
+++ b/net-misc/modemmanager-next/files/77-mm-fibocom-port-types.rules
@@ -10,3 +10,9 @@
 # ModemManager to probe the ACM ports, which increases the overall modem
 # probing time. We thus tag the ACM ports to be ignored by ModemManager.
 ACTION=="add|change|move", SUBSYSTEMS=="tty", ENV{ID_VENDOR_ID}=="2cb7", ENV{ID_MODEL_ID}=="0007", ENV{ID_MM_PORT_IGNORE}="1"
+
+# Fibocom NL668-AM (2cb7:01a0) has 1 MBIM port and 3 AT channel serial ports.
+# The MBIM port alone is sufficient for 3GPP related functionalities.
+# The AT channels are used by modemfwd for firmware update related managed,
+# mark them as ignored by ModemManager to avoid perturbations.
+ACTION=="add|change|move", SUBSYSTEMS=="tty", ENV{ID_VENDOR_ID}=="2cb7", ENV{ID_MODEL_ID}=="01a0", ENV{ID_MM_PORT_IGNORE}="1"
diff --git a/net-misc/modemmanager-next/files/modemmanager-amd64.policy b/net-misc/modemmanager-next/files/modemmanager-amd64.policy
new file mode 100644
index 0000000..134b209
--- /dev/null
+++ b/net-misc/modemmanager-next/files/modemmanager-amd64.policy
@@ -0,0 +1,85 @@
+# Copyright 2021 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.
+
+getpid: 1
+writev: 1
+sendto: 1
+write: 1
+read: 1
+poll: 1
+lstat: 1
+futex: 1
+fstat: 1
+close: 1
+openat: 1
+getrandom: 1
+readlinkat: 1
+access: 1
+faccessat: 1
+faccessat2: 1
+mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+recvmsg: 1
+fcntl: 1
+getdents: 1
+readlink: 1
+mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+stat: 1
+statx: 1
+fstatfs: 1
+brk: 1
+prctl: arg0 == PR_SET_NO_NEW_PRIVS || arg0 == PR_SET_SECCOMP || \
+       arg0 == PR_CAPBSET_DROP || arg0 == PR_SET_NAME
+socket: arg0 == AF_NETLINK || arg0 == AF_UNIX || arg0 == AF_QIPCRTR || \
+        arg0 == AF_INET || arg0 == AF_INET6
+# 0x800248a0: IOCTL_WDM_MAX_COMMAND
+# 0x8BE1: QMI_GET_SERVICE_FILE_IOCTL
+# 0x8BE2 == QMI_GET_VIDPID_IOCTL
+# 0x8BE3 == QMI_GET_MEID_IOCTL
+# 0x8BE4 == SIOCIWFIRSTPRIV_CLEANUP
+ioctl: arg1 == TCGETS || arg1 == SIOCGIFINDEX || arg1 == TIOCEXCL || \
+       arg1 == TIOCNXCL || arg1 == TIOCGSERIAL || arg1 == 0x800248a0 || \
+       arg1 == 0x8BE1 || arg1 == 0x8BE2 || arg1 == 0x8BE3 || arg1 == 0x8BE4
+connect: 1
+clone: 1
+set_robust_list: 1
+rt_sigaction: 1
+gettid: 1
+sched_setattr: 1
+dup2: 1
+rt_sigprocmask: 1
+eventfd2: 1
+munmap: 1
+setsockopt: 1
+pipe2: 1
+getdents64: 1
+sched_getattr: 1
+bind: 1
+getsockname: 1
+wait4: 1
+lseek: 1
+geteuid: 1
+getegid: 1
+getuid: 1
+sendmsg: 1
+recvfrom: 1
+arch_prctl: 1
+madvise:1
+set_tid_address: 1
+prlimit64: 1
+getsockopt: 1
+listen: 1
+accept: 1
+getpeername: 1
+exit_group: 1
+setpgid: 1
+execve: 1
+restart_syscall: 1
+exit: 1
+rt_sigreturn: 1
+nanosleep: 1
+clock_nanosleep: 1
+clock_gettime: 1
+gettimeofday: 1
+newfstatat: 1
+tgkill: 1
diff --git a/net-misc/modemmanager-next/files/modemmanager-arm.policy b/net-misc/modemmanager-next/files/modemmanager-arm.policy
new file mode 100644
index 0000000..74323aa
--- /dev/null
+++ b/net-misc/modemmanager-next/files/modemmanager-arm.policy
@@ -0,0 +1,87 @@
+# Copyright 2021 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.
+
+send: 1
+getpid: 1
+writev: 1
+write: 1
+poll: 1
+read: 1
+recv: 1
+futex: 1
+lstat64: 1
+stat64: 1
+statx: 1
+fstat64: 1
+fstatfs64: 1
+getrandom: 1
+readlink: 1
+readlinkat: 1
+openat: 1
+close: 1
+getdents64: 1
+faccessat: 1
+faccessat2: 1
+access: 1
+brk: 1
+munmap: 1
+fcntl64: 1
+recvmsg: 1
+getsockname: 1
+getsockopt: 1
+rt_sigaction: 1
+gettid: 1
+connect: 1
+rt_sigprocmask: 1
+eventfd2: 1
+clone: 1
+set_robust_list: 1
+sched_setattr: 1
+setsockopt: 1
+sendto: 1
+sched_getattr: 1
+bind: 1
+getpeername: 1
+sendmsg: 1
+nanosleep: 1
+sigreturn: 1
+clock_nanosleep: 1
+clock_nanosleep_time64: 1
+clock_gettime: 1
+clock_gettime64: 1
+geteuid32: 1
+getegid32: 1
+gettimeofday: 1
+madvise: 1
+mmap2: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+prctl: arg0 == PR_SET_NO_NEW_PRIVS || arg0 == PR_SET_SECCOMP || \
+       arg0 == PR_CAPBSET_DROP || arg0 == PR_SET_NAME
+socket: arg0 == AF_NETLINK || arg0 == AF_UNIX || arg0 == AF_QIPCRTR || \
+        arg0 == AF_INET || arg0 == AF_INET6
+# 0x800248a0: IOCTL_WDM_MAX_COMMAND
+# 0x8BE1: QMI_GET_SERVICE_FILE_IOCTL
+# 0x8BE2 == QMI_GET_VIDPID_IOCTL
+# 0x8BE3 == QMI_GET_MEID_IOCTL
+# 0x8BE4 == SIOCIWFIRSTPRIV_CLEANUP
+ioctl: arg1 == TCGETS || arg1 == SIOCGIFINDEX || arg1 == TIOCEXCL || \
+       arg1 == TIOCNXCL || arg1 == TIOCGSERIAL || arg1 == 0x800248a0 || \
+       arg1 == 0x8BE1 || arg1 == 0x8BE2 || arg1 == 0x8BE3 || arg1 == 0x8BE4
+dup2: 1
+pipe2: 1
+wait4: 1
+setpgid: 1
+execve: 1
+tgkill: 1
+accept: 1
+ARM_set_tls: 1
+set_tid_address: 1
+ugetrlimit: 1
+getuid32: 1
+_llseek: 1
+listen: 1
+restart_syscall: 1
+exit: 1
+exit_group: 1
+rt_sigreturn: 1
diff --git a/net-misc/modemmanager-next/files/modemmanager-arm64.policy b/net-misc/modemmanager-next/files/modemmanager-arm64.policy
new file mode 100644
index 0000000..b61ec31
--- /dev/null
+++ b/net-misc/modemmanager-next/files/modemmanager-arm64.policy
@@ -0,0 +1,78 @@
+# Copyright 2021 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.
+
+getpid: 1
+writev: 1
+write: 1
+ppoll: 1
+read: 1
+recvfrom: 1
+futex: 1
+newfstatat: 1
+fstat: 1
+statx: 1
+fstatfs: 1
+getrandom: 1
+readlinkat: 1
+openat: 1
+close: 1
+getdents64: 1
+faccessat: 1
+faccessat2: 1
+brk: 1
+munmap: 1
+fcntl: 1
+prlimit64: 1
+recvmsg: 1
+getsockname: 1
+getsockopt: 1
+rt_sigaction: 1
+gettid: 1
+connect: 1
+rt_sigprocmask: 1
+eventfd2: 1
+clone: 1
+set_robust_list: 1
+sched_setattr: 1
+setsockopt: 1
+sendto: 1
+sched_getattr: 1
+bind: 1
+getpeername: 1
+sendmsg: 1
+nanosleep: 1
+clock_nanosleep: 1
+geteuid: 1
+getegid: 1
+gettimeofday: 1
+madvise: 1
+mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+# TODO(b/183235393): Restrict mprotect to ~PROT_EXEC || ~PROT_WRITE
+mprotect: 1
+prctl: arg0 == PR_SET_NO_NEW_PRIVS || arg0 == PR_SET_SECCOMP || \
+       arg0 == PR_CAPBSET_DROP || arg0 == PR_SET_NAME
+socket: arg0 == AF_NETLINK || arg0 == AF_UNIX || arg0 == AF_QIPCRTR || \
+        arg0 == AF_INET || arg0 == AF_INET6
+# 0x800248a0: IOCTL_WDM_MAX_COMMAND
+# 0x8BE1: QMI_GET_SERVICE_FILE_IOCTL
+# 0x8BE2 == QMI_GET_VIDPID_IOCTL
+# 0x8BE3 == QMI_GET_MEID_IOCTL
+# 0x8BE4 == SIOCIWFIRSTPRIV_CLEANUP
+ioctl: arg1 == TCGETS || arg1 == SIOCGIFINDEX || arg1 == TIOCEXCL || \
+       arg1 == TIOCNXCL || arg1 == TIOCGSERIAL || arg1 == 0x800248a0 || \
+       arg1 == 0x8BE1 || arg1 == 0x8BE2 || arg1 == 0x8BE3 || arg1 == 0x8BE4
+dup3: 1
+pipe2: 1
+wait4: 1
+setpgid: 1
+execve: 1
+tgkill: 1
+accept: 1
+set_tid_address: 1
+lseek: 1
+listen: 1
+restart_syscall: 1
+exit: 1
+exit_group: 1
+rt_sigreturn: 1
diff --git a/net-misc/modemmanager-next/files/modemmanager.conf b/net-misc/modemmanager-next/files/modemmanager.conf
index d39040f..42e10d8 100644
--- a/net-misc/modemmanager-next/files/modemmanager.conf
+++ b/net-misc/modemmanager-next/files/modemmanager.conf
@@ -31,11 +31,16 @@
   esac
 end script
 
-# Run ModemManager under the 'modem' user/group. Keep the CAP_SYS_ADMIN
-# capability to allow ModemManager to set 'closing_wait' to none on the modem
-# serial port via ioctl(TIOCGSERIAL). Set NoNewPrivs. CAP_NET_ADMIN is needed to
-# create net links for Qrtr devices.
-#
-# TODO(benchan): Refine the minijail sandbox to further constrain ModemManager.
-exec minijail0 -u modem -g modem -c cap_net_admin,cap_sys_admin=e -n -i -- \
-  /usr/sbin/ModemManager --log-level="${MM_LOGLEVEL}"
+script
+  # Override logging level if sticky flag exists.
+  if [ -f /var/cache/modem-utilities/log_mm_debug ]; then
+    MM_LOGLEVEL=DEBUG
+  fi
+  # Run ModemManager under the 'modem' user/group. Keep the CAP_SYS_ADMIN
+  # capability to allow ModemManager to set 'closing_wait' to none on the modem
+  # serial port via ioctl(TIOCGSERIAL). Set NoNewPrivs. CAP_NET_ADMIN is needed
+  # to create net links for Qrtr devices.
+  exec minijail0 -u modem -g modem -n -i -c cap_net_admin,cap_sys_admin=e \
+    -S /usr/share/policy/modemmanager.policy -- \
+    /usr/sbin/ModemManager --log-level="${MM_LOGLEVEL}"
+end script
\ No newline at end of file
diff --git a/net-misc/modemmanager-next/modemmanager-next-1.15.0-r373.ebuild b/net-misc/modemmanager-next/modemmanager-next-1.15.0-r373.ebuild
deleted file mode 100644
index c870318..0000000
--- a/net-misc/modemmanager-next/modemmanager-next-1.15.0-r373.ebuild
+++ /dev/null
@@ -1,162 +0,0 @@
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# Based on gentoo's modemmanager ebuild
-
-EAPI=6
-CROS_WORKON_COMMIT="3eba6678dfe0d7b35f128bb58b63e71d1a3a64d4"
-CROS_WORKON_TREE="201b5e6e70f0affac75f58b90bbfe3eec34cd901"
-CROS_WORKON_PROJECT="chromiumos/third_party/modemmanager-next"
-
-inherit eutils autotools cros-sanitizers cros-workon flag-o-matic systemd udev user
-
-# ModemManager likes itself with capital letters
-MY_P=${P/modemmanager/ModemManager}
-
-DESCRIPTION="Modem and mobile broadband management libraries"
-HOMEPAGE="http://mail.gnome.org/archives/networkmanager-list/2008-July/msg00274.html"
-#SRC_URI not defined because we get our source locally
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="doc mbim systemd qmi"
-
-RDEPEND=">=dev-libs/glib-2.36
-	>=sys-apps/dbus-1.2
-	dev-libs/dbus-glib
-	net-dialup/ppp
-	mbim? ( net-libs/libmbim )
-	qmi? ( net-libs/libqmi )
-	!net-misc/modemmanager"
-
-DEPEND="${RDEPEND}
-	virtual/libgudev
-	dev-util/pkgconfig
-	dev-util/intltool
-	>=dev-util/gtk-doc-1.13
-	!net-misc/modemmanager-next-interfaces
-	!net-misc/modemmanager"
-
-DOCS="AUTHORS NEWS README"
-
-src_prepare() {
-	default
-
-	# According to "Introspection Data Format" of the DBus specification,
-	# revision 0.30 [1], "Only the root <node> element can omit the node
-	# name, as it's known to be the object that was introspected. If the
-	# root <node> does have a name attribute, it must be an absolute object
-	# path. If child <node> have object paths, they must be relative."
-	#
-	# The introspection XMLs of ModemManager object interfaces specify
-	# name="/" at their root <node>, which should be omitted instead as the
-	# object paths aren't fixed.
-	#
-	# CL:294115 [2] removed the name="/" attribute from those root <node>s
-	# in several ModemManager introspection XMLs in order to allow
-	# chromeos-dbus-bindings to properly generate the DBus proxies for
-	# ModemManager interfaces. Instead of modifying those introspection
-	# XMLs directly in the modemmanager-next git repository, we patch them
-	# (all org.freedesktop.ModemManager1.*.xml, but not
-	# org.freedesktop.ModemManager1.xml) here instead, which helps minimize
-	# the difference between the local modemmanager-next repository and the
-	# upstream repository.
-	#
-	# TODO(benchan): Discuss with upstream ModemManager maintainers to see
-	# if it makes sense to apply the changes to the upstream code instead.
-	#
-	# References:
-	# [1] https://dbus.freedesktop.org/doc/dbus-specification.html#introspection-format
-	# [2] http://crosreview.com/294115
-	find introspection -type f -name 'org.freedesktop.ModemManager1.*.xml' \
-		-exec sed -i 's/^<node name="\/"/<node/' {} +
-
-	gtkdocize
-	eautopoint
-	eautoreconf
-	intltoolize --force
-}
-
-src_configure() {
-	sanitizers-setup-env
-	append-flags -Xclang-only=-Wno-unneeded-internal-declaration
-	append-flags -DWITH_NEWEST_QMI_COMMANDS
-	econf \
-		--with-html-dir="\${datadir}/doc/${PF}/html" \
-		--enable-compile-warnings=yes \
-		$(use_enable {,gtk-}doc) \
-		$(use_with mbim) \
-		$(use_with qmi)
-}
-
-src_test() {
-	# TODO(benchan): Run unit tests for non-x86 platforms via qemu.
-	if [[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] ; then
-		# This is an ugly hack that happens to work, but should not be copied.
-		PATH="${SYSROOT}/usr/bin:${PATH}" \
-		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir):${SYSROOT}/$(get_libdir)" \
-		emake check
-	fi
-}
-
-src_install() {
-	default
-	# Remove useless .la files
-	find "${D}" -name '*.la' -delete
-
-	# Remove the DBus service file generated by Makefile. This file directs DBus
-	# to launch the ModemManager process when a DBus call for the ModemManager
-	# service is received. We do not want this behaviour.
-	find "${D}" -name 'org.freedesktop.ModemManager1.service' -delete
-
-	# Only install the following plugins for supported modems to conserve
-	# space on the root filesystem.
-	local plugins=(
-		altair-lte
-		generic
-		huawei
-		longcheer
-		novatel-lte
-		samsung
-		telit
-		zte
-	)
-	local plugins_regex=".*/libmm-plugin-($(IFS='|'; echo "${plugins[*]}")).so"
-
-	find "${D}" -regextype posix-extended \
-		-name 'libmm-plugin-*.so' \
-		! -regex "${plugins_regex}" \
-		-delete
-
-	local found_plugins="$(find "${D}" -regextype posix-extended \
-		-regex "${plugins_regex}" | wc -l)"
-	[[ "${found_plugins}" == "${#plugins[@]}" ]] || \
-		die "Expects ${#plugins[@]} plugins, but ${found_plugins} found."
-
-	# Install init scripts.
-	if use systemd; then
-		systemd_dounit "${FILESDIR}/modemmanager.service"
-		systemd_enable_service system-services.target modemmanager.service
-	else
-		insinto /etc/init
-		doins "${FILESDIR}/modemmanager.conf"
-	fi
-
-	# Override the ModemManager DBus configuration file to constrain how
-	# ModemManager exposes its DBus service on Chrome OS.
-	insinto /etc/dbus-1/system.d
-	doins "${FILESDIR}/org.freedesktop.ModemManager1.conf"
-
-	# Install Chrome OS specific udev rules.
-	udev_dorules "${FILESDIR}/52-mm-modem-permissions.rules"
-	udev_dorules "${FILESDIR}/77-mm-fibocom-port-types.rules"
-	udev_dorules "${FILESDIR}/77-mm-huawei-configuration.rules"
-	exeinto "$(get_udevdir)"
-	doexe "${FILESDIR}/mm-huawei-configuration-switch.sh"
-}
-
-pkg_preinst() {
-	# ModemManager is run under the 'modem' user and group on Chrome OS.
-	enewuser "modem"
-	enewgroup "modem"
-}
diff --git a/net-misc/modemmanager-next/modemmanager-next-1.17.0-r417.ebuild b/net-misc/modemmanager-next/modemmanager-next-1.17.0-r417.ebuild
new file mode 100644
index 0000000..4720da8
--- /dev/null
+++ b/net-misc/modemmanager-next/modemmanager-next-1.17.0-r417.ebuild
@@ -0,0 +1,175 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# Based on gentoo's modemmanager ebuild
+
+EAPI=6
+CROS_WORKON_COMMIT="e7eac4f62ca0c8eebc9aaf7f909baf2dbf61e9f0"
+CROS_WORKON_TREE="cfa9bb35e4db8f971b84b1327cd2583d2ab1718e"
+CROS_WORKON_PROJECT="chromiumos/third_party/modemmanager-next"
+CROS_WORKON_EGIT_BRANCH="master"
+
+inherit eutils autotools cros-sanitizers cros-workon flag-o-matic systemd udev user
+
+# ModemManager likes itself with capital letters
+MY_P=${P/modemmanager/ModemManager}
+
+DESCRIPTION="Modem and mobile broadband management libraries"
+HOMEPAGE="http://mail.gnome.org/archives/networkmanager-list/2008-July/msg00274.html"
+#SRC_URI not defined because we get our source locally
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="doc mbim systemd qmi qrtr"
+
+RDEPEND=">=dev-libs/glib-2.36
+	>=sys-apps/dbus-1.2
+	dev-libs/dbus-glib
+	net-dialup/ppp
+	mbim? ( net-libs/libmbim )
+	qmi? ( net-libs/libqmi )
+	qrtr? ( net-libs/libqrtr-glib )
+	!net-misc/modemmanager"
+
+DEPEND="${RDEPEND}
+	virtual/libgudev
+	dev-util/pkgconfig
+	dev-util/intltool
+	>=dev-util/gtk-doc-1.13
+	!net-misc/modemmanager-next-interfaces
+	!net-misc/modemmanager"
+
+DOCS="AUTHORS NEWS README"
+
+src_prepare() {
+	default
+
+	# According to "Introspection Data Format" of the DBus specification,
+	# revision 0.30 [1], "Only the root <node> element can omit the node
+	# name, as it's known to be the object that was introspected. If the
+	# root <node> does have a name attribute, it must be an absolute object
+	# path. If child <node> have object paths, they must be relative."
+	#
+	# The introspection XMLs of ModemManager object interfaces specify
+	# name="/" at their root <node>, which should be omitted instead as the
+	# object paths aren't fixed.
+	#
+	# CL:294115 [2] removed the name="/" attribute from those root <node>s
+	# in several ModemManager introspection XMLs in order to allow
+	# chromeos-dbus-bindings to properly generate the DBus proxies for
+	# ModemManager interfaces. Instead of modifying those introspection
+	# XMLs directly in the modemmanager-next git repository, we patch them
+	# (all org.freedesktop.ModemManager1.*.xml, but not
+	# org.freedesktop.ModemManager1.xml) here instead, which helps minimize
+	# the difference between the local modemmanager-next repository and the
+	# upstream repository.
+	#
+	# TODO(benchan): Discuss with upstream ModemManager maintainers to see
+	# if it makes sense to apply the changes to the upstream code instead.
+	#
+	# References:
+	# [1] https://dbus.freedesktop.org/doc/dbus-specification.html#introspection-format
+	# [2] http://crosreview.com/294115
+	find introspection -type f -name 'org.freedesktop.ModemManager1.*.xml' \
+		-exec sed -i 's/^<node name="\/"/<node/' {} +
+
+	gtkdocize
+	eautopoint
+	eautoreconf
+	intltoolize --force
+}
+
+src_configure() {
+	sanitizers-setup-env
+	append-flags -Xclang-only=-Wno-unneeded-internal-declaration
+	append-flags -DWITH_NEWEST_QMI_COMMANDS
+	# TODO(b/183029202): Remove this once we have support for IPv6 only network
+	append-flags -DSUPPORT_MBIM_IPV6_WITH_IPV4_ROAMING
+	econf \
+		--with-html-dir="\${datadir}/doc/${PF}/html" \
+		--enable-compile-warnings=yes \
+		"$(use_enable {,gtk-}doc)" \
+		"$(use_with mbim)" \
+		"$(use_enable qrtr plugin-qcom-soc)" \
+		"$(use_with qmi)"
+}
+
+src_test() {
+	# TODO(b/180536539): Run unit tests for non-x86 platforms via qemu.
+	if [[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] ; then
+		# This is an ugly hack that happens to work, but should not be copied.
+		PATH="${SYSROOT}/usr/bin:${PATH}" \
+		LD_LIBRARY_PATH="${SYSROOT}/usr/$(get_libdir):${SYSROOT}/$(get_libdir)" \
+		emake check
+	fi
+}
+
+src_install() {
+	default
+	# Remove useless .la files
+	find "${D}" -name '*.la' -delete
+
+	# Remove the DBus service file generated by Makefile. This file directs DBus
+	# to launch the ModemManager process when a DBus call for the ModemManager
+	# service is received. We do not want this behaviour.
+	find "${D}" -name 'org.freedesktop.ModemManager1.service' -delete
+
+	# Only install the following plugins for supported modems to conserve
+	# space on the root filesystem.
+	local plugins=(
+		altair-lte
+		generic
+		huawei
+		longcheer
+		novatel-lte
+		samsung
+		telit
+		zte
+	)
+	if use qrtr; then
+		plugins+=(qcom-soc)
+	fi
+
+	local plugins_regex=".*/libmm-plugin-($(IFS='|'; echo "${plugins[*]}")).so"
+
+	find "${D}" -regextype posix-extended \
+		-name 'libmm-plugin-*.so' \
+		! -regex "${plugins_regex}" \
+		-delete
+
+	local found_plugins="$(find "${D}" -regextype posix-extended \
+		-regex "${plugins_regex}" | wc -l)"
+	[[ "${found_plugins}" == "${#plugins[@]}" ]] || \
+		die "Expects ${#plugins[@]} plugins, but ${found_plugins} found."
+
+	# Seccomp policy file.
+	insinto /usr/share/policy
+	newins "${FILESDIR}/modemmanager-${ARCH}.policy" modemmanager.policy
+
+	# Install init scripts.
+	if use systemd; then
+		systemd_dounit "${FILESDIR}/modemmanager.service"
+		systemd_enable_service system-services.target modemmanager.service
+	else
+		insinto /etc/init
+		doins "${FILESDIR}/modemmanager.conf"
+	fi
+
+	# Override the ModemManager DBus configuration file to constrain how
+	# ModemManager exposes its DBus service on Chrome OS.
+	insinto /etc/dbus-1/system.d
+	doins "${FILESDIR}/org.freedesktop.ModemManager1.conf"
+
+	# Install Chrome OS specific udev rules.
+	udev_dorules "${FILESDIR}/52-mm-modem-permissions.rules"
+	udev_dorules "${FILESDIR}/77-mm-fibocom-port-types.rules"
+	udev_dorules "${FILESDIR}/77-mm-huawei-configuration.rules"
+	exeinto "$(get_udevdir)"
+	doexe "${FILESDIR}/mm-huawei-configuration-switch.sh"
+}
+
+pkg_preinst() {
+	# ModemManager is run under the 'modem' user and group on Chrome OS.
+	enewuser "modem"
+	enewgroup "modem"
+}
diff --git a/net-misc/modemmanager-next/modemmanager-next-9999.ebuild b/net-misc/modemmanager-next/modemmanager-next-9999.ebuild
index 28053d3..5bd3a44 100644
--- a/net-misc/modemmanager-next/modemmanager-next-9999.ebuild
+++ b/net-misc/modemmanager-next/modemmanager-next-9999.ebuild
@@ -4,6 +4,7 @@
 
 EAPI=6
 CROS_WORKON_PROJECT="chromiumos/third_party/modemmanager-next"
+CROS_WORKON_EGIT_BRANCH="master"
 
 inherit eutils autotools cros-sanitizers cros-workon flag-o-matic systemd udev user
 
@@ -17,7 +18,7 @@
 LICENSE="GPL-2"
 SLOT="0"
 KEYWORDS="~*"
-IUSE="doc mbim systemd qmi"
+IUSE="doc mbim systemd qmi qrtr"
 
 RDEPEND=">=dev-libs/glib-2.36
 	>=sys-apps/dbus-1.2
@@ -25,6 +26,7 @@
 	net-dialup/ppp
 	mbim? ( net-libs/libmbim )
 	qmi? ( net-libs/libqmi )
+	qrtr? ( net-libs/libqrtr-glib )
 	!net-misc/modemmanager"
 
 DEPEND="${RDEPEND}
@@ -79,16 +81,19 @@
 	sanitizers-setup-env
 	append-flags -Xclang-only=-Wno-unneeded-internal-declaration
 	append-flags -DWITH_NEWEST_QMI_COMMANDS
+	# TODO(b/183029202): Remove this once we have support for IPv6 only network
+	append-flags -DSUPPORT_MBIM_IPV6_WITH_IPV4_ROAMING
 	econf \
 		--with-html-dir="\${datadir}/doc/${PF}/html" \
 		--enable-compile-warnings=yes \
-		$(use_enable {,gtk-}doc) \
-		$(use_with mbim) \
-		$(use_with qmi)
+		"$(use_enable {,gtk-}doc)" \
+		"$(use_with mbim)" \
+		"$(use_enable qrtr plugin-qcom-soc)" \
+		"$(use_with qmi)"
 }
 
 src_test() {
-	# TODO(benchan): Run unit tests for non-x86 platforms via qemu.
+	# TODO(b/180536539): Run unit tests for non-x86 platforms via qemu.
 	if [[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] ; then
 		# This is an ugly hack that happens to work, but should not be copied.
 		PATH="${SYSROOT}/usr/bin:${PATH}" \
@@ -119,6 +124,10 @@
 		telit
 		zte
 	)
+	if use qrtr; then
+		plugins+=(qcom-soc)
+	fi
+
 	local plugins_regex=".*/libmm-plugin-($(IFS='|'; echo "${plugins[*]}")).so"
 
 	find "${D}" -regextype posix-extended \
@@ -131,6 +140,10 @@
 	[[ "${found_plugins}" == "${#plugins[@]}" ]] || \
 		die "Expects ${#plugins[@]} plugins, but ${found_plugins} found."
 
+	# Seccomp policy file.
+	insinto /usr/share/policy
+	newins "${FILESDIR}/modemmanager-${ARCH}.policy" modemmanager.policy
+
 	# Install init scripts.
 	if use systemd; then
 		systemd_dounit "${FILESDIR}/modemmanager.service"
diff --git a/net-misc/rmtfs/Manifest b/net-misc/rmtfs/Manifest
index 57e252e..83463db 100644
--- a/net-misc/rmtfs/Manifest
+++ b/net-misc/rmtfs/Manifest
@@ -1 +1 @@
-DIST rmtfs-0.3_p20200203.tar.gz 11528 BLAKE2B c4701530ef20c3dd2d80d2850ff06e000931865fc9b329fe3229ad5be87ea5ed37691abbc32530590a921a04701fcde22c39e042e49f4eb7ff611ae7604424b5 SHA512 efbf8553ff7c011f622680545abc043da970c11a00389981b57e4a596f9a5cf422e27d455647cbd769b008c46022652d048bf1137802c70e06a2e066c4dd6dcd
+DIST rmtfs-0.3_p20210408.tar.gz 11917 BLAKE2B 4e2315a722e79d0df807fbbb5572f06b85f2c473bc64e80a959aedc06eca217565be47f4a2834803fc9778a52f2daf6d770cee8dd9d81a2553ef29841a654dc0 SHA512 eac13ff0733de1220af55faceae11b4ca63e4a996544c1423c2188dfda34ee2c9870e0611d24b5450f6f2cb3c3b3b23fc9121fdba2b6a3f80e3965204161b173
diff --git a/net-misc/rmtfs/files/rmtfs-seccomp-arm.policy b/net-misc/rmtfs/files/rmtfs-seccomp-arm.policy
index 1cac684..c7ddd20 100644
--- a/net-misc/rmtfs/files/rmtfs-seccomp-arm.policy
+++ b/net-misc/rmtfs/files/rmtfs-seccomp-arm.policy
@@ -12,6 +12,7 @@
 fcntl64: 1
 fstat64: 1
 getdents: 1
+getdents64: 1
 getpid: 1
 # Filter arg2 to disallow GRND_RANDOM (2).
 getrandom: arg2 in 0xfffffffd
@@ -36,6 +37,7 @@
 recvfrom: 1
 rt_sigaction: 1
 rt_sigprocmask: 1
+rt_sigreturn: 1
 sendto: 1
 set_robust_list: 1
 setsockopt: 1
diff --git a/net-misc/rmtfs/files/rmtfs-seccomp-arm64.policy b/net-misc/rmtfs/files/rmtfs-seccomp-arm64.policy
index 6f90f0d..828c622 100644
--- a/net-misc/rmtfs/files/rmtfs-seccomp-arm64.policy
+++ b/net-misc/rmtfs/files/rmtfs-seccomp-arm64.policy
@@ -36,6 +36,7 @@
 recvfrom: 1
 rt_sigaction: 1
 rt_sigprocmask: 1
+rt_sigreturn: 1
 sendto: 1
 set_robust_list: 1
 setsockopt: 1
diff --git a/net-misc/rmtfs/files/rmtfs.conf b/net-misc/rmtfs/files/rmtfs.conf
index e048a93e..e95aa97 100644
--- a/net-misc/rmtfs/files/rmtfs.conf
+++ b/net-misc/rmtfs/files/rmtfs.conf
@@ -15,7 +15,7 @@
 # syslog: minijail bind mounts /dev/log, which won't exist until syslog starts.
 # verify_fsg: is in charge of creating files in ${RMTFS_DIR}
 start on started syslog and stopped verify_fsg and ((qcom-rmtfs-added and qcom-modem-added) or rmtfs-early)
-stop on starting pre-shutdown
+stop on starting pre-shutdown and stopped shill
 
 # This service handles modem file system storage requests. Other than
 # the connection to the modem itself, it keeps no state. So it should
@@ -47,6 +47,7 @@
   done
   # Allow the rmtfs user to control the remoteproc sysfs state file.
   chown rmtfs:rmtfs /sys/bus/platform/drivers/qcom-q6v5-mss/[0-9]*/remoteproc/remoteproc*/state
+  chmod g+w /sys/bus/platform/drivers/qcom-q6v5-mss/[0-9]*/remoteproc/remoteproc*/state
 end script
 
 # rmtfs needs CAP_NET_ADMIN to open AF_QIPCRTR socket.
diff --git a/net-misc/rmtfs/rmtfs-0.3_p20200203-r8.ebuild b/net-misc/rmtfs/rmtfs-0.3_p20200203-r8.ebuild
deleted file mode 120000
index 870b931..0000000
--- a/net-misc/rmtfs/rmtfs-0.3_p20200203-r8.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-rmtfs-0.3_p20200203.ebuild
\ No newline at end of file
diff --git a/net-misc/rmtfs/rmtfs-0.3_p20200203.ebuild b/net-misc/rmtfs/rmtfs-0.3_p20200203.ebuild
deleted file mode 100644
index cf129d5..0000000
--- a/net-misc/rmtfs/rmtfs-0.3_p20200203.ebuild
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-inherit cros-sanitizers user
-
-DESCRIPTION="QMI Remote File System Server"
-HOMEPAGE="https://github.com/andersson/rmtfs"
-GIT_SHA1="9ef260ba6f550857dd87c3818ba3759343f45d2d"
-SRC_URI="https://github.com/andersson/rmtfs/archive/${GIT_SHA1}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="*"
-IUSE="asan +seccomp"
-
-DEPEND="
-	net-libs/libqrtr
-	virtual/udev
-"
-
-RDEPEND="${DEPEND}"
-
-S="${WORKDIR}/${PN}-${GIT_SHA1}"
-
-src_configure() {
-	sanitizers-setup-env
-}
-
-src_install() {
-	emake DESTDIR="${D}" prefix="${EPREFIX}/usr" install
-
-	insinto /etc/init
-	doins "${FILESDIR}/rmtfs.conf"
-	doins "${FILESDIR}/check-rmtfs-early.conf"
-	insinto /lib/udev/rules.d
-	doins "${FILESDIR}/77-rmtfs.rules"
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	use seccomp && newins "${FILESDIR}/rmtfs-seccomp-${ARCH}.policy" rmtfs-seccomp.policy
-}
-
-pkg_preinst() {
-	enewgroup "rmtfs"
-	enewuser "rmtfs"
-}
diff --git a/net-misc/rmtfs/rmtfs-0.3_p20210408-r2.ebuild b/net-misc/rmtfs/rmtfs-0.3_p20210408-r2.ebuild
new file mode 120000
index 0000000..1435970
--- /dev/null
+++ b/net-misc/rmtfs/rmtfs-0.3_p20210408-r2.ebuild
@@ -0,0 +1 @@
+rmtfs-0.3_p20210408.ebuild
\ No newline at end of file
diff --git a/net-misc/rmtfs/rmtfs-0.3_p20210408.ebuild b/net-misc/rmtfs/rmtfs-0.3_p20210408.ebuild
new file mode 100644
index 0000000..aec5a62
--- /dev/null
+++ b/net-misc/rmtfs/rmtfs-0.3_p20210408.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2021 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit cros-sanitizers user
+
+DESCRIPTION="QMI Remote File System Server"
+HOMEPAGE="https://github.com/andersson/rmtfs"
+GIT_SHA1="293ab8babb27ac0f24247bb101fed9420c629c29"
+SRC_URI="https://github.com/andersson/rmtfs/archive/${GIT_SHA1}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="*"
+IUSE="asan +seccomp"
+
+DEPEND="
+	net-libs/libqrtr:=
+	virtual/udev:=
+"
+
+RDEPEND="${DEPEND}"
+
+S="${WORKDIR}/${PN}-${GIT_SHA1}"
+
+src_configure() {
+	sanitizers-setup-env
+}
+
+src_install() {
+	emake DESTDIR="${D}" prefix="${EPREFIX}/usr" install
+
+	insinto /etc/init
+	doins "${FILESDIR}/rmtfs.conf"
+	doins "${FILESDIR}/check-rmtfs-early.conf"
+	insinto /lib/udev/rules.d
+	doins "${FILESDIR}/77-rmtfs.rules"
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	use seccomp && newins "${FILESDIR}/rmtfs-seccomp-${ARCH}.policy" rmtfs-seccomp.policy
+}
+
+pkg_preinst() {
+	enewgroup "rmtfs"
+	enewuser "rmtfs"
+}
diff --git a/net-misc/tlsdate/tlsdate-0.0.5-r84.ebuild b/net-misc/tlsdate/tlsdate-0.0.5-r84.ebuild
deleted file mode 100644
index 46ee0ca..0000000
--- a/net-misc/tlsdate/tlsdate-0.0.5-r84.ebuild
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright 2012 The Chromium OS Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-CROS_WORKON_COMMIT="1d52bb98be21fb4773d13be398469570e4b3ba70"
-CROS_WORKON_TREE="9b4af5e6c151008162265b39fd9494ef88c832da"
-CROS_WORKON_PROJECT="chromiumos/third_party/tlsdate"
-
-inherit autotools flag-o-matic toolchain-funcs cros-sanitizers cros-workon cros-debug systemd user
-
-DESCRIPTION="Update local time over HTTPS"
-HOMEPAGE="https://github.com/ioerror/tlsdate"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="*"
-IUSE="-asan +dbus +seccomp systemd"
-
-DEPEND="dev-libs/openssl:0=
-	dev-libs/libevent
-	dbus? ( sys-apps/dbus )"
-RDEPEND="${DEPEND}
-	chromeos-base/chromeos-ca-certificates
-"
-
-src_prepare() {
-	# Use the system cert store rather than a custom one specific
-	# to the tlsdate package. #534394
-	sed -i \
-		-e 's:/tlsdate/ca-roots/tlsdate-ca-roots.conf:/ssl/certs/ca-certificates.crt:' \
-		Makefile.am || die
-
-	default
-
-	eautoreconf
-}
-
-src_configure() {
-	sanitizers-setup-env
-	cros-debug-add-NDEBUG
-	econf \
-		$(use_enable dbus) \
-		$(use_enable seccomp seccomp-filter) \
-		$(use_enable cros-debug seccomp-debugging) \
-		--enable-cros \
-		--with-dbus-client-group=chronos \
-		--with-unpriv-user=tlsdate \
-		--with-unpriv-group=tlsdate
-}
-
-src_compile() {
-	tc-export CC
-	emake CFLAGS="-Wall -Werror ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}"
-}
-
-src_install() {
-	default
-
-	# Use the system cert store; see src_prepare. #446426 #534394
-	rm "${ED}"/etc/tlsdate/ca-roots/tlsdate-ca-roots.conf || die
-	rmdir "${ED}"/etc/tlsdate/ca-roots || die
-
-	insinto /etc/tlsdate
-	doins "${FILESDIR}/tlsdated.conf"
-	insinto /etc/dbus-1/system.d
-	doins "${S}/dbus/org.torproject.tlsdate.conf"
-	insinto /usr/share/dbus-1/interfaces
-	doins "${S}/dbus/org.torproject.tlsdate.xml"
-	insinto /usr/share/dbus-1/services
-	doins "${S}/dbus/org.torproject.tlsdate.service"
-
-	if use systemd; then
-		systemd_dounit init/tlsdated.service
-		systemd_enable_service system-services.target tlsdated.service
-		systemd_dotmpfilesd init/tlsdated-directories.conf
-	else
-		insinto /etc/init
-		doins init/tlsdated.conf
-	fi
-}
-
-pkg_preinst() {
-	enewuser "tlsdate"
-	enewgroup "tlsdate"
-	enewuser "tlsdate-dbus"   # For tlsdate-dbus-announce.
-	enewgroup "tlsdate-dbus"  # For tlsdate-dbus-announce.
-}
diff --git a/net-misc/tlsdate/tlsdate-0.0.5-r95.ebuild b/net-misc/tlsdate/tlsdate-0.0.5-r95.ebuild
new file mode 100644
index 0000000..16e2189
--- /dev/null
+++ b/net-misc/tlsdate/tlsdate-0.0.5-r95.ebuild
@@ -0,0 +1,87 @@
+# Copyright 2012 The Chromium OS Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+CROS_WORKON_COMMIT="8b0e7603cb5fd7924c9e99b7d26ad8b716fbada7"
+CROS_WORKON_TREE="ac75e4e94cf1c6c37833513159b83d64b3de9104"
+CROS_WORKON_PROJECT="chromiumos/third_party/tlsdate"
+
+inherit autotools flag-o-matic toolchain-funcs cros-sanitizers cros-workon cros-debug systemd user
+
+DESCRIPTION="Update local time over HTTPS"
+HOMEPAGE="https://github.com/ioerror/tlsdate"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="*"
+IUSE="-asan +dbus +seccomp systemd"
+
+DEPEND="dev-libs/openssl:0=
+	dev-libs/libevent
+	dbus? ( sys-apps/dbus )"
+RDEPEND="${DEPEND}
+	chromeos-base/chromeos-ca-certificates
+"
+
+src_prepare() {
+	# Use the system cert store rather than a custom one specific
+	# to the tlsdate package. #534394
+	sed -i \
+		-e 's:/tlsdate/ca-roots/tlsdate-ca-roots.conf:/ssl/certs/ca-certificates.crt:' \
+		Makefile.am || die
+
+	default
+
+	eautoreconf
+}
+
+src_configure() {
+	sanitizers-setup-env
+	cros-debug-add-NDEBUG
+	econf \
+		$(use_enable dbus) \
+		$(use_enable seccomp seccomp-filter) \
+		$(use_enable cros-debug seccomp-debugging) \
+		--enable-cros \
+		--with-dbus-client-group=chronos \
+		--with-unpriv-user=tlsdate \
+		--with-unpriv-group=tlsdate
+}
+
+src_compile() {
+	tc-export CC
+	emake CFLAGS="-Wall -Werror ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}"
+}
+
+src_install() {
+	default
+
+	# Use the system cert store; see src_prepare. #446426 #534394
+	rm "${ED}"/etc/tlsdate/ca-roots/tlsdate-ca-roots.conf || die
+	rmdir "${ED}"/etc/tlsdate/ca-roots || die
+
+	insinto /etc/tlsdate
+	doins "${FILESDIR}/tlsdated.conf"
+	insinto /etc/dbus-1/system.d
+	doins "${S}/dbus/org.torproject.tlsdate.conf"
+	insinto /usr/share/dbus-1/interfaces
+	doins "${S}/dbus/org.torproject.tlsdate.xml"
+	insinto /usr/share/dbus-1/services
+	doins "${S}/dbus/org.torproject.tlsdate.service"
+
+	if use systemd; then
+		systemd_dounit init/tlsdated.service
+		systemd_enable_service system-services.target tlsdated.service
+		systemd_dotmpfilesd init/tlsdated-directories.conf
+	else
+		insinto /etc/init
+		doins init/tlsdated.conf
+	fi
+}
+
+pkg_preinst() {
+	enewuser "tlsdate"
+	enewgroup "tlsdate"
+	enewuser "tlsdate-dbus"   # For tlsdate-dbus-announce.
+	enewgroup "tlsdate-dbus"  # For tlsdate-dbus-announce.
+}
diff --git a/net-misc/usbip/usbip-4.19-r6.ebuild b/net-misc/usbip/usbip-4.19-r6.ebuild
deleted file mode 100644
index 93e95e6..0000000
--- a/net-misc/usbip/usbip-4.19-r6.ebuild
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-CROS_WORKON_COMMIT="4ef961cb74d0aaf120116e71d73c8c73a683d676"
-CROS_WORKON_TREE="8744f13bfe3b621588fb29672e8b643b1d3c69cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v4.19"
-CROS_WORKON_EGIT_BRANCH="chromeos-4.19"
-CROS_WORKON_SUBTREE="tools/usb/usbip"
-
-inherit autotools cros-workon eutils
-
-DESCRIPTION="Userspace utilities for a general USB device sharing system over IP networks"
-HOMEPAGE="https://www.kernel.org/"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="static-libs tcpd"
-RESTRICT=""
-
-RDEPEND=">=dev-libs/glib-2.6
-	sys-apps/hwids
-	>=sys-kernel/linux-headers-3.17
-	virtual/libudev
-	tcpd? ( sys-apps/tcp-wrappers )"
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-DOCS="AUTHORS README"
-
-S=${WORKDIR}/linux-${PV}/tools/usb/${PN}
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/tools/usb/usbip"
-}
-
-src_prepare() {
-	# remove -Werror from build, bug #545398
-	sed -i 's/-Werror[^ ]* //g' configure.ac || die
-
-	default
-
-	eautoreconf
-}
-
-src_configure() {
-	econf \
-		$(use_enable static-libs static) \
-		$(use tcpd || echo --without-tcp-wrappers) \
-		--with-usbids-dir=/usr/share/misc
-}
-
-src_install() {
-	default
-	prune_libtool_files
-}
-
-pkg_postinst() {
-	elog "For using USB/IP you need to enable USBIP_VHCI_HCD in the client"
-	elog "machine's kernel config and USBIP_HOST on the server."
-}
diff --git a/net-misc/usbip/usbip-4.19-r7.ebuild b/net-misc/usbip/usbip-4.19-r7.ebuild
new file mode 100644
index 0000000..19be309
--- /dev/null
+++ b/net-misc/usbip/usbip-4.19-r7.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+CROS_WORKON_COMMIT="94bc330400210bc08b4159b6ced0b11d2b7e73a0"
+CROS_WORKON_TREE="f3a0a0009d4cfe0cd2783cefc1c92f3c79fef691"
+CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
+CROS_WORKON_LOCALNAME="kernel/v4.19"
+CROS_WORKON_EGIT_BRANCH="chromeos-4.19"
+CROS_WORKON_SUBTREE="tools/usb/usbip"
+
+inherit autotools cros-workon eutils
+
+DESCRIPTION="Userspace utilities for a general USB device sharing system over IP networks"
+HOMEPAGE="https://www.kernel.org/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="static-libs tcpd"
+RESTRICT=""
+
+RDEPEND=">=dev-libs/glib-2.6
+	sys-apps/hwids
+	>=sys-kernel/linux-headers-3.17
+	virtual/libudev
+	tcpd? ( sys-apps/tcp-wrappers )"
+DEPEND="${RDEPEND}
+	virtual/pkgconfig"
+
+DOCS="AUTHORS README"
+
+S=${WORKDIR}/linux-${PV}/tools/usb/${PN}
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/tools/usb/usbip"
+}
+
+src_prepare() {
+	# remove -Werror from build, bug #545398
+	sed -i 's/-Werror[^ ]* //g' configure.ac || die
+
+	default
+
+	eautoreconf
+}
+
+src_configure() {
+	econf \
+		$(use_enable static-libs static) \
+		$(use tcpd || echo --without-tcp-wrappers) \
+		--with-usbids-dir=/usr/share/misc
+}
+
+src_install() {
+	default
+	prune_libtool_files
+}
+
+pkg_postinst() {
+	elog "For using USB/IP you need to enable USBIP_VHCI_HCD in the client"
+	elog "machine's kernel config and USBIP_HOST on the server."
+}
diff --git a/net-nds/rpcbind/files/seccomp-amd64.policy b/net-nds/rpcbind/files/seccomp-amd64.policy
index 00600d7..cca64a0 100644
--- a/net-nds/rpcbind/files/seccomp-amd64.policy
+++ b/net-nds/rpcbind/files/seccomp-amd64.policy
@@ -14,6 +14,7 @@
 fcntl: 1
 flock: 1
 fstat: 1
+newfstatat: 1
 geteuid: 1
 getpeername: 1
 getpid: 1
diff --git a/net-print/cups-filters/Manifest b/net-print/cups-filters/Manifest
index f14ce3d..91bbb60 100644
--- a/net-print/cups-filters/Manifest
+++ b/net-print/cups-filters/Manifest
@@ -1 +1 @@
-DIST cups-filters-1.28.5.tar.xz 1502188 BLAKE2B 8c43018b625c929b9fe7da8c65f98d9f4ef271db11943b86ed0e647a9382991d4093306c041f0b4e68cf09c98b6726740dd0daeae4927f452d688e7718721f1b SHA512 e020d0e14ad70fbac4d367b4f1d653faf5030b961c6fc4b9f9587c068ccb63c286d07ee32e04e634a877fc8ca90c6dfa4b89aa288e896eea0026e1053cd8a4ef
+DIST cups-filters-1.28.7.tar.xz 1503052 BLAKE2B b9d3280871faa79a7c277731bf6eb1eef161537829d4bc07ec36075ebc12a3617dce66994ed708991757ce7d78fc5ab010925a1d3d9811fd11cf1172f4786442 SHA512 fa94f51ca1c208dcacb1814d8b812c9a72dd09475b7cf836b02c72cb5e3290318f37e475ee3ae8d45351715c3a2ccc0df5ac51ae6fc11462f5acdfa303a04727
diff --git a/net-print/cups-filters/cups-filters-1.28.5-r4.ebuild b/net-print/cups-filters/cups-filters-1.28.5-r4.ebuild
deleted file mode 120000
index fcb86bd..0000000
--- a/net-print/cups-filters/cups-filters-1.28.5-r4.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-cups-filters-1.28.5.ebuild
\ No newline at end of file
diff --git a/net-print/cups-filters/cups-filters-1.28.5.ebuild b/net-print/cups-filters/cups-filters-1.28.5.ebuild
deleted file mode 100644
index ff4a27f..0000000
--- a/net-print/cups-filters/cups-filters-1.28.5.ebuild
+++ /dev/null
@@ -1,157 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-GENTOO_DEPEND_ON_PERL=no
-
-inherit perl-module systemd flag-o-matic cros-sanitizers
-
-if [[ "${PV}" == "9999" ]] ; then
-	inherit git-r3
-	EGIT_REPO_URI="https://github.com/OpenPrinting/cups-filters.git"
-else
-	SRC_URI="http://www.openprinting.org/download/${PN}/${P}.tar.xz"
-	KEYWORDS="*"
-fi
-DESCRIPTION="Cups filters"
-HOMEPAGE="https://wiki.linuxfoundation.org/openprinting/cups-filters"
-
-LICENSE="MIT GPL-2"
-SLOT="0"
-IUSE="dbus +foomatic ipp_autosetup jpeg ldap pclm pdf perl png +postscript static-libs test tiff zeroconf"
-
-RESTRICT="!test? ( test )"
-
-RDEPEND="
-	!postscript? ( >=app-text/poppler-0.32:=[cxx,jpeg?,lcms,tiff?,utils] )
-	>=app-text/qpdf-10.0.1:=
-	chromeos-base/foomatic_shell
-	dev-libs/glib:2
-	media-libs/fontconfig
-	media-libs/freetype:2
-	media-libs/lcms:2
-	>=net-print/cups-1.7.3
-	!<=net-print/cups-1.5.9999
-	sys-devel/bc
-	sys-libs/zlib
-	dbus? ( sys-apps/dbus )
-	foomatic? ( !net-print/foomatic-filters )
-	jpeg? ( virtual/jpeg:0 )
-	ldap? ( net-nds/openldap )
-	pdf? ( app-text/mupdf )
-	perl? ( dev-lang/perl:= )
-	png? ( media-libs/libpng:0= )
-	postscript? ( >=app-text/ghostscript-gpl-9.09[cups] )
-	tiff? ( media-libs/tiff:0 )
-	zeroconf? ( net-dns/avahi[dbus] )
-"
-DEPEND="${RDEPEND}"
-
-BDEPEND="
-	dev-util/gdbus-codegen
-	>=sys-devel/gettext-0.18.3
-	virtual/pkgconfig
-	test? ( media-fonts/dejavu )
-"
-
-PATCHES=("${FILESDIR}")
-
-src_prepare() {
-	default
-
-	# Bug #626800
-	append-cxxflags -std=c++11
-}
-
-src_configure() {
-	sanitizers-setup-env
-
-	# These two variables are required to configure cups-filters.
-	# Without them, ./configure script tries to run $PKG_CONFIG to
-	# find qpdf, what fails on missing libjpeg dependency defined
-	# in the file /usr/lib/pkgconfig/libqpdf.pc (/build/${BOARD}).
-	# The library libjpeg is there, but there is no corresponding
-	# file libjpeg.pc.
-	export LIBQPDF_CFLAGS=" "
-	export LIBQPDF_LIBS="-lqpdf"
-	local myeconfargs=(
-		--docdir="${EPREFIX}/usr/share/doc/${PF}"
-		--disable-imagefilters
-		--disable-driverless
-		--localstatedir="${EPREFIX}"/var
-		--with-browseremoteprotocols=DNSSD,CUPS
-		--with-cups-rundir="${EPREFIX}"/run/cups
-		--with-fontdir="fonts/conf.avail"
-		--with-pdftops=$(use postscript && echo gs || echo pdftops)
-		--with-rcdir=no
-		--without-php
-		--disable-braille
-		$(use_enable !postscript poppler)
-		$(use_enable dbus)
-		$(use_enable foomatic)
-		$(use_enable ipp_autosetup auto-setup-driverless)
-		$(use_enable ldap)
-		$(use_enable pclm)
-		$(use_enable pdf mutool)
-		$(use_enable postscript ghostscript)
-		--disable-ijs
-		$(use_enable static-libs static)
-		$(use_enable zeroconf avahi)
-		$(use_with jpeg)
-		$(use_with png)
-		$(use_with tiff)
-	)
-	econf "${myeconfargs[@]}"
-}
-
-src_compile() {
-	default
-
-	if use perl; then
-		pushd "${S}/scripting/perl" > /dev/null
-		perl-module_src_configure
-		perl-module_src_compile
-		popd > /dev/null
-	fi
-}
-
-src_install() {
-	default
-
-	if use perl; then
-		pushd "${S}/scripting/perl" > /dev/null
-		perl-module_src_install
-		perl_delete_localpod
-		popd > /dev/null
-	fi
-
-	if use postscript; then
-		# workaround: some printer drivers still require pstoraster and pstopxl, bug #383831
-		dosym gstoraster /usr/libexec/cups/filter/pstoraster
-		dosym gstopxl /usr/libexec/cups/filter/pstopxl
-	fi
-
-	find "${ED}" \( -name "*.a" -o -name "*.la" \) -delete || die
-
-	cp "${FILESDIR}"/cups-browsed.init.d-r1 "${T}"/cups-browsed || die
-
-	if ! use zeroconf ; then
-		sed -i -e 's:need cupsd avahi-daemon:need cupsd:g' "${T}"/cups-browsed || die
-		sed -i -e 's:cups\.service avahi-daemon\.service:cups.service:g' "${S}"/utils/cups-browsed.service || die
-	fi
-
-	doinitd "${T}"/cups-browsed
-	systemd_dounit "${S}/utils/cups-browsed.service"
-}
-
-src_test() {
-	emake check
-}
-
-pkg_postinst() {
-	if ! use foomatic ; then
-		ewarn "You are disabling the foomatic code in cups-filters. Please do that ONLY if absolutely."
-		ewarn "necessary. net-print/foomatic-filters as replacement is deprecated and unmaintained."
-	fi
-}
diff --git a/net-print/cups-filters/cups-filters-1.28.7-r1.ebuild b/net-print/cups-filters/cups-filters-1.28.7-r1.ebuild
new file mode 120000
index 0000000..539c603
--- /dev/null
+++ b/net-print/cups-filters/cups-filters-1.28.7-r1.ebuild
@@ -0,0 +1 @@
+cups-filters-1.28.7.ebuild
\ No newline at end of file
diff --git a/net-print/cups-filters/cups-filters-1.28.7.ebuild b/net-print/cups-filters/cups-filters-1.28.7.ebuild
new file mode 100644
index 0000000..2dec68b
--- /dev/null
+++ b/net-print/cups-filters/cups-filters-1.28.7.ebuild
@@ -0,0 +1,157 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+GENTOO_DEPEND_ON_PERL=no
+
+inherit perl-module systemd flag-o-matic cros-sanitizers
+
+if [[ "${PV}" == "9999" ]] ; then
+	inherit git-r3
+	EGIT_REPO_URI="https://github.com/OpenPrinting/cups-filters.git"
+else
+	SRC_URI="http://www.openprinting.org/download/${PN}/${P}.tar.xz"
+	KEYWORDS="*"
+fi
+DESCRIPTION="Cups filters"
+HOMEPAGE="https://wiki.linuxfoundation.org/openprinting/cups-filters"
+
+LICENSE="MIT GPL-2"
+SLOT="0"
+IUSE="dbus +foomatic ipp_autosetup jpeg ldap pclm pdf perl png +postscript static-libs test tiff zeroconf"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+	!postscript? ( >=app-text/poppler-0.32:=[cxx,jpeg?,lcms,tiff?,utils] )
+	>=app-text/qpdf-10.0.1:=
+	chromeos-base/foomatic_shell
+	dev-libs/glib:2
+	media-libs/fontconfig
+	media-libs/freetype:2
+	media-libs/lcms:2
+	>=net-print/cups-1.7.3
+	!<=net-print/cups-1.5.9999
+	sys-devel/bc
+	sys-libs/zlib
+	dbus? ( sys-apps/dbus )
+	foomatic? ( !net-print/foomatic-filters )
+	jpeg? ( virtual/jpeg:0 )
+	ldap? ( net-nds/openldap )
+	pdf? ( app-text/mupdf )
+	perl? ( dev-lang/perl:= )
+	png? ( media-libs/libpng:0= )
+	postscript? ( >=app-text/ghostscript-gpl-9.09[cups] )
+	tiff? ( media-libs/tiff:0 )
+	zeroconf? ( net-dns/avahi[dbus] )
+"
+DEPEND="${RDEPEND}"
+
+BDEPEND="
+	dev-util/gdbus-codegen
+	>=sys-devel/gettext-0.18.3
+	virtual/pkgconfig
+	test? ( media-fonts/dejavu )
+"
+
+PATCHES=("${FILESDIR}")
+
+src_prepare() {
+	default
+
+	# Bug #626800
+	append-cxxflags -std=c++11
+}
+
+src_configure() {
+	sanitizers-setup-env
+
+	# These two variables are required to configure cups-filters.
+	# Without them, ./configure script tries to run $PKG_CONFIG to
+	# find qpdf, what fails on missing libjpeg dependency defined
+	# in the file /usr/lib/pkgconfig/libqpdf.pc (/build/${BOARD}).
+	# The library libjpeg is there, but there is no corresponding
+	# file libjpeg.pc.
+	export LIBQPDF_CFLAGS=" "
+	export LIBQPDF_LIBS="-lqpdf"
+	local myeconfargs=(
+		--docdir="${EPREFIX}/usr/share/doc/${PF}"
+		--disable-imagefilters
+		--disable-driverless
+		--localstatedir="${EPREFIX}"/var
+		--with-browseremoteprotocols="DNSSD,CUPS"
+		--with-cups-rundir="${EPREFIX}"/run/cups
+		--with-fontdir="fonts/conf.avail"
+		--with-pdftops="$(use postscript && echo gs || echo pdftops)"
+		--with-rcdir=no
+		--without-php
+		--disable-braille
+		$(use_enable !postscript poppler)
+		$(use_enable dbus)
+		$(use_enable foomatic)
+		$(use_enable ipp_autosetup auto-setup-driverless)
+		$(use_enable ldap)
+		$(use_enable pclm)
+		$(use_enable pdf mutool)
+		$(use_enable postscript ghostscript)
+		--disable-ijs
+		$(use_enable static-libs static)
+		$(use_enable zeroconf avahi)
+		$(use_with jpeg)
+		$(use_with png)
+		$(use_with tiff)
+	)
+	econf "${myeconfargs[@]}"
+}
+
+src_compile() {
+	default
+
+	if use perl; then
+		pushd "${S}/scripting/perl" > /dev/null || die
+		perl-module_src_configure
+		perl-module_src_compile
+		popd > /dev/null || die
+	fi
+}
+
+src_install() {
+	default
+
+	if use perl; then
+		pushd "${S}/scripting/perl" > /dev/null || die
+		perl-module_src_install
+		perl_delete_localpod
+		popd > /dev/null || die
+	fi
+
+	if use postscript; then
+		# workaround: some printer drivers still require pstoraster and pstopxl, bug #383831
+		dosym gstoraster /usr/libexec/cups/filter/pstoraster
+		dosym gstopxl /usr/libexec/cups/filter/pstopxl
+	fi
+
+	find "${ED}" \( -name "*.a" -o -name "*.la" \) -delete || die
+
+	cp "${FILESDIR}"/cups-browsed.init.d-r1 "${T}"/cups-browsed || die
+
+	if ! use zeroconf ; then
+		sed -i -e 's:need cupsd avahi-daemon:need cupsd:g' "${T}"/cups-browsed || die
+		sed -i -e 's:cups\.service avahi-daemon\.service:cups.service:g' "${S}"/utils/cups-browsed.service || die
+	fi
+
+	doinitd "${T}"/cups-browsed
+	systemd_dounit "${S}/utils/cups-browsed.service"
+}
+
+src_test() {
+	emake check
+}
+
+pkg_postinst() {
+	if ! use foomatic ; then
+		ewarn "You are disabling the foomatic code in cups-filters. Please do that ONLY if absolutely."
+		ewarn "necessary. net-print/foomatic-filters as replacement is deprecated and unmaintained."
+	fi
+}
diff --git a/net-print/cups-filters/files/cups-filters-1.28.5-foomatic-raw-printing.patch b/net-print/cups-filters/files/cups-filters-1.28.5-foomatic-raw-printing.patch
deleted file mode 100644
index cf48f34..0000000
--- a/net-print/cups-filters/files/cups-filters-1.28.5-foomatic-raw-printing.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From: Pranav Batra <batrapranav@chromium.org>
-Subject: [PATCH] Fix raw printing infinite loop and file input.
-
---- a/filter/foomatic-rip/foomaticrip.c
-+++ b/filter/foomatic-rip/foomaticrip.c
-@@ -1157,7 +1157,18 @@ int main(int argc, char** argv)
-                when there is no postpipe) */
-             _log("Raw printing, executing \"cat %%s\"\n\n");
-             snprintf(tmp, 1024, "cat %s", postpipe->data);
-+            if (strcasecmp(filename, "<STDIN>")) {
-+              FILE *fh = fopen(filename, "r");
-+              if (!fh) {
-+                _log("Failed to open \"%s\".\n", filename);
-+                fclose(stdin);
-+              } else {
-+                dup2(fileno(fh), 0);
-+                fclose(fh);
-+              }
-+            }
-             run_system_process("raw-printer", tmp);
-+            filename = strtok_r(NULL, " ", &p);
-             continue;
-         }
- 
diff --git a/net-print/cups-filters/files/cups-filters-1.28.5-pwg-raster-total-page-count.patch b/net-print/cups-filters/files/cups-filters-1.28.5-pwg-raster-total-page-count.patch
new file mode 100644
index 0000000..6feb57f
--- /dev/null
+++ b/net-print/cups-filters/files/cups-filters-1.28.5-pwg-raster-total-page-count.patch
@@ -0,0 +1,35 @@
+This patch modifies `gstoraster` to include the TotalPageCount field in
+generated PWG-Raster content:
+https://issuetracker.google.com/issues/172225466
+
+--- a/filter/gstoraster.c
++++ b/filter/gstoraster.c
+@@ -713,8 +713,13 @@ main (int argc, char **argv, char *envp[])
+     goto out;
+   }
+ 
++  /*
++   * Count pages.
++   * Later passed to GhostScript as cupsInteger[0].
++   */
++  int pages = 0;
+   if (doc_type == GS_DOC_TYPE_PDF) {  
+-    int pages = pdf_pages(filename);
++    pages = pdf_pages(filename);
+ 
+     if (pages == 0) {
+       fprintf(stderr, "DEBUG: No pages left, outputting empty file.\n");
+@@ -879,6 +884,13 @@ main (int argc, char **argv, char *envp[])
+ #endif /* HAVE_CUPS_1_7 */
+   }
+ 
++  /*
++   * cupsRasterParseIPPOptions() would populate the TotalPageCount field
++   * (h.cupsInteger[0]) if CUPS passed "job-impressions" to this filter.
++   * CUPS does not do so, so we set it manually here.
++   */
++  h.cupsInteger[0] = pages;
++
+   if ((h.HWResolution[0] == 100) && (h.HWResolution[1] == 100)) {
+     /* No "Resolution" option */
+     if (ppd && (attr = ppdFindAttr(ppd, "DefaultResolution", 0)) != NULL) {
diff --git a/net-print/cups-filters/files/cups-filters-1.29.0-count-with-qpdf.patch b/net-print/cups-filters/files/cups-filters-1.29.0-count-with-qpdf.patch
new file mode 100644
index 0000000..6fb09be
--- /dev/null
+++ b/net-print/cups-filters/files/cups-filters-1.29.0-count-with-qpdf.patch
@@ -0,0 +1,42 @@
+From 4895ed297886d62f93bee11667764ce2c45ad521 Mon Sep 17 00:00:00 2001
+From: Sean Kau <skau@chromium.org>
+Date: Fri, 29 Jan 2021 15:03:37 -0800
+Subject: [PATCH] Swap to qpdf to determine page count.
+
+---
+ filter/foomatic-rip/pdf.c | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/filter/foomatic-rip/pdf.c b/filter/foomatic-rip/pdf.c
+index 83baf4d0..e5afb4a0 100644
+--- a/filter/foomatic-rip/pdf.c
++++ b/filter/foomatic-rip/pdf.c
+@@ -47,14 +47,11 @@ int pdf_count_pages(const char *filename)
+     size_t bytes;
+     char *p;
+ 
+-    snprintf(gscommand, CMDLINE_MAX, "%s -dNODISPLAY -dNOSAFER -dNOPAUSE -q -c "
+-	     "'/pdffile (%s) (r) file runpdfbegin (PageCount: ) print "
+-	     "pdfpagecount = quit'",
+-	     gspath, filename);
++    snprintf(gscommand, CMDLINE_MAX, "qpdf --show-npages %s", filename);
+ 
+     FILE *pd = popen(gscommand, "r");
+     if (!pd)
+-      rip_die(EXIT_STARVED, "Failed to execute ghostscript to determine number of input pages!\n");
++      rip_die(EXIT_STARVED, "Failed to execute QPDF to determine number of input pages!\n");
+ 
+     bytes = fread_or_die(output, 1, sizeof(output), pd);
+     pclose(pd);
+@@ -62,7 +59,7 @@ int pdf_count_pages(const char *filename)
+     p = output;
+     pagecount = -1;
+     while (bytes > 0) {
+-      if (sscanf(p, "PageCount: %d", &pagecount) >= 1)
++      if (sscanf(p, "%d", &pagecount) >= 1)
+ 	break;
+       p = memchr(p, '\n', bytes);
+       if (p == NULL)
+-- 
+2.30.0.365.g02bc693789-goog
+
diff --git a/net-print/cups-filters/files/cups-filters-2.0.0-Corrected-color-space-mapping-in-cups.patch b/net-print/cups-filters/files/cups-filters-2.0.0-Corrected-color-space-mapping-in-cups.patch
deleted file mode 100644
index ffd57eb..0000000
--- a/net-print/cups-filters/files/cups-filters-2.0.0-Corrected-color-space-mapping-in-cups.patch
+++ /dev/null
@@ -1,151 +0,0 @@
-From f08c698a40f8fc6f91f09445038b1aaeba1f04b2 Mon Sep 17 00:00:00 2001
-From: Till Kamppeter <till.kamppeter@gmail.com>
-Date: Thu, 3 Dec 2020 23:46:25 +0100
-Subject: [PATCH] libcupsfilters: Corrected color space mapping in
- cupsRasterParseIPPOptions()
-
----
- NEWS                 |  6 +++++
- cupsfilters/raster.c | 64 +++++++++++++++++++++++++++++++++++---------
- 2 files changed, 57 insertions(+), 13 deletions(-)
-
-diff --git a/NEWS b/NEWS
-index 738f0eb8..a7a76e58 100644
---- a/NEWS
-+++ b/NEWS
-@@ -1,6 +1,12 @@
- NEWS - OpenPrinting CUPS Filters v1.28.5 - 2020-10-13
- -----------------------------------------------------
- 
-+CHANGES IN V2.0.0
-+
-+	- libcupsfilters: In the cupsRasterParseIPPOptions() map the
-+	  color spaces the same way as in the PPD generator (Issue
-+	  #326, Pull request #327).	
-+
- CHANGES IN V1.28.5
- 
- 	- cups-browsed: UUID from IPP response was used after its
-diff --git a/cupsfilters/raster.c b/cupsfilters/raster.c
-index c8e2b8f9..45ce8d6b 100644
---- a/cupsfilters/raster.c
-+++ b/cupsfilters/raster.c
-@@ -771,6 +771,25 @@ cupsRasterParseIPPOptions(cups_page_header2_t *h, /* I - Raster header */
-       colorspace = 20;
-       numcolors = 3;
-     }
-+    else if (!strncasecmp(val, "adobe-rgb", 9))
-+    {
-+      if (*(val + 9) == '_' || *(val + 9) == '-')
-+	ptr = val + 10;
-+      colorspace = 20;
-+      numcolors = 3;
-+    }
-+    else if (!strcasecmp(val, "auto-monochrome"))
-+    {
-+      colorspace = 18;
-+      numcolors = 1;
-+    }
-+    else if (!strcasecmp(val, "bi-level") ||
-+	     !strcasecmp(val, "process-bi-level"))
-+    {
-+      bitspercolor = 1;
-+      colorspace = 3;
-+      numcolors = 1;
-+    }
-     else if (!strncasecmp(val, "Black", 5))
-     {
-       if (*(val + 5) == '_' || *(val + 5) == '-')
-@@ -779,22 +798,30 @@ cupsRasterParseIPPOptions(cups_page_header2_t *h, /* I - Raster header */
-       colorspace = 3;
-       numcolors = 1;
-     }
-+    else if (!strcasecmp(val, "process-monochrome"))
-+    {
-+      colorspace = 18;
-+      numcolors = 1;
-+    }
-     else if (!strncasecmp(val, "Monochrome", 10))
-     {
-       if (*(val + 10) == '_' || *(val + 10) == '-')
- 	ptr = val + 11;
--      bitspercolor = 1;
--      colorspace = 3;
-+      colorspace = 18;
-       numcolors = 1;
-     }
-     else if (!strncasecmp(val, "Mono", 4))
-     {
-       if (*(val + 4) == '_' || *(val + 4) == '-')
- 	ptr = val + 5;
--      bitspercolor = 1;
--      colorspace = 3;
-+      colorspace = 18;
-       numcolors = 1;
-     }
-+    else if (!strcasecmp(val, "color"))
-+    {
-+      colorspace = 19;
-+      numcolors = 3;
-+    }
-     else if (!strncasecmp(val, "Cmyk", 4))
-     {
-       if (*(val + 4) == '_' || *(val + 4) == '-')
-@@ -835,7 +862,7 @@ cupsRasterParseIPPOptions(cups_page_header2_t *h, /* I - Raster header */
-     {
-       if (*(val + 4) == '_' || *(val + 4) == '-')
- 	ptr = val + 5;
--      colorspace = 3;
-+      colorspace = 18;
-       numcolors = 1;
-     }
-     else if (!strncasecmp(val, "Srgb", 4))
-@@ -859,6 +886,17 @@ cupsRasterParseIPPOptions(cups_page_header2_t *h, /* I - Raster header */
-       colorspace = 1;
-       numcolors = 3;
-     }
-+    else if (!strcasecmp(val, "auto"))
-+    {
-+      /* Let "auto" not look like an error */
-+      if (set_defaults)
-+      {
-+	fprintf(stderr,
-+		"DEBUG: \"Auto\" mode, using default RGB color space.\n");
-+	colorspace = 19;
-+	numcolors = 3;
-+      }
-+    }
-     if (numcolors > 0)
-     {
-       if (ptr)
-@@ -879,19 +917,19 @@ cupsRasterParseIPPOptions(cups_page_header2_t *h, /* I - Raster header */
-       fprintf(stderr, "DEBUG: Bad color space value \"%s\".\n", val);
-       if (set_defaults)
-       {
--	h->cupsBitsPerColor = 1;
--	h->cupsBitsPerPixel = 1;
--	h->cupsColorSpace = 3;
--	h->cupsNumColors = 1;
-+	h->cupsBitsPerColor = 8;
-+	h->cupsBitsPerPixel = 24;
-+	h->cupsColorSpace = 19;
-+	h->cupsNumColors = 3;
-       }
-     }
-   }
-   else if (set_defaults)
-   {
--    h->cupsBitsPerColor = 1;
--    h->cupsBitsPerPixel = 1;
--    h->cupsColorSpace = 3;
--    h->cupsNumColors = 1;
-+    h->cupsBitsPerColor = 8;
-+    h->cupsBitsPerPixel = 24;
-+    h->cupsColorSpace = 19;
-+    h->cupsNumColors = 3;
-   }
- 
-   h->cupsBytesPerLine = (h->cupsWidth * h->cupsBitsPerPixel + 7) / 8;
--- 
-2.29.2.576.ga3fc446d84-goog
-
diff --git a/net-print/cups/cups-2.3.3-r147.ebuild b/net-print/cups/cups-2.3.3-r147.ebuild
deleted file mode 100644
index fd10d61..0000000
--- a/net-print/cups/cups-2.3.3-r147.ebuild
+++ /dev/null
@@ -1,415 +0,0 @@
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=5
-
-CROS_WORKON_COMMIT="ca950da1a96a7365de719a3700cd12ff562c3617"
-CROS_WORKON_TREE="1464fc73c87a2476db431d87cb0afed982377920"
-CROS_WORKON_PROJECT="chromiumos/third_party/cups"
-CROS_WORKON_EGIT_BRANCH="v2.3"
-
-PYTHON_COMPAT=( python2_7 )
-
-inherit cros-debug cros-workon libchrome-version autotools fdo-mime gnome2-utils flag-o-matic linux-info multilib multilib-minimal pam python-single-r1 user versionator java-pkg-opt-2 systemd toolchain-funcs cros-fuzzer cros-sanitizers
-
-MY_P=${P/_rc/rc}
-MY_P=${MY_P/_beta/b}
-MY_PV=${PV/_rc/rc}
-MY_PV=${MY_PV/_beta/b}
-
-KEYWORDS="*"
-
-DESCRIPTION="The Common Unix Printing System"
-HOMEPAGE="http://www.cups.org/"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="acl dbus debug java kerberos pam
-	python +seccomp selinux +ssl static-libs systemd test +threads upstart usb X xinetd zeroconf
-	asan fuzzer"
-
-LANGS="ca cs de es fr it ja ru"
-for X in ${LANGS} ; do
-	IUSE="${IUSE} +linguas_${X}"
-done
-
-CDEPEND="
-	app-text/libpaper
-	acl? (
-		kernel_linux? (
-			sys-apps/acl
-			sys-apps/attr
-		)
-	)
-	dbus? ( >=sys-apps/dbus-1.6.18-r1[${MULTILIB_USEDEP}] )
-	java? ( >=virtual/jre-1.6:* )
-	kerberos? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] )
-	!net-print/lprng
-	pam? ( virtual/pam )
-	python? ( ${PYTHON_DEPS} )
-	ssl? (
-		>=dev-libs/libgcrypt-1.5.3:0[${MULTILIB_USEDEP}]
-		>=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}]
-	)
-	systemd? ( sys-apps/systemd )
-	usb? ( virtual/libusb:1 )
-	X? ( x11-misc/xdg-utils )
-	xinetd? ( sys-apps/xinetd )
-	zeroconf? ( >=net-dns/avahi-0.6.31-r2[${MULTILIB_USEDEP}] )
-	abi_x86_32? (
-		!<=app-emulation/emul-linux-x86-baselibs-20140508
-		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
-	)
-"
-
-DEPEND="${CDEPEND}
-	>=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
-	test? (
-		dev-cpp/gtest
-		>=chromeos-base/libchrome-0.0.1-r31:0=[cros-debug=]
-		>=chromeos-base/libbrillo-0.0.1-r1651:=
-	)
-"
-
-RDEPEND="${CDEPEND}
-	selinux? ( sec-policy/selinux-cups )
-"
-
-REQUIRED_USE="
-	python? ( ${PYTHON_REQUIRED_USE} )
-	usb? ( threads )
-	?? ( systemd upstart )
-"
-
-S="${WORKDIR}/${PN}-release-${MY_PV}"
-
-MULTILIB_CHOST_TOOLS=(
-	/usr/bin/cups-config
-)
-
-pkg_setup() {
-	enewgroup lp
-	enewuser lp -1 -1 -1 "lp,ippusb"
-	enewgroup lpadmin
-	enewuser lpadmin -1 -1 -1 "lpadmin,ippusb"
-	enewgroup cups
-	enewuser cups -1 -1 -1 cups
-
-	use python && python-single-r1_pkg_setup
-
-	if use kernel_linux; then
-		linux-info_pkg_setup
-		if  ! linux_config_exists; then
-			ewarn "Can't check the linux kernel configuration."
-			ewarn "You might have some incompatible options enabled."
-		else
-			# recheck that we don't have usblp to collide with libusb
-			if use usb; then
-				if linux_chkconfig_present USB_PRINTER; then
-					eerror "Your usb printers will be managed via libusb. In this case, "
-					eerror "${P} requires the USB_PRINTER support disabled."
-					eerror "Please disable it:"
-					eerror "    CONFIG_USB_PRINTER=n"
-					eerror "in /usr/src/linux/.config or"
-					eerror "    Device Drivers --->"
-					eerror "        USB support  --->"
-					eerror "            [ ] USB Printer support"
-					eerror "Alternatively, just disable the usb useflag for cups (your printer will still work)."
-				fi
-			else
-				#here we should warn user that he should enable it so he can print
-				if ! linux_chkconfig_present USB_PRINTER; then
-					ewarn "If you plan to use USB printers you should enable the USB_PRINTER"
-					ewarn "support in your kernel."
-					ewarn "Please enable it:"
-					ewarn "    CONFIG_USB_PRINTER=y"
-					ewarn "in /usr/src/linux/.config or"
-					ewarn "    Device Drivers --->"
-					ewarn "        USB support  --->"
-					ewarn "            [*] USB Printer support"
-					ewarn "Alternatively, enable the usb useflag for cups and use the libusb code."
-				fi
-			fi
-		fi
-	fi
-}
-
-src_prepare() {
-	epatch_user
-
-	# Remove ".SILENT" rule for verbose output (bug 524338).
-	sed 's#^.SILENT:##g' -i "${S}"/Makedefs.in || die "sed failed"
-
-	# Fix install-sh, posix sh does not have 'function'.
-	sed 's#function gzipcp#gzipcp()#g' -i "${S}/install-sh"
-
-	AT_M4DIR=config-scripts eaclocal
-	eautoconf
-
-	# custom Makefiles
-	multilib_copy_sources
-}
-
-multilib_src_configure() {
-	sanitizers-setup-env
-
-	export DSOFLAGS="${LDFLAGS}"
-
-	einfo LANGS=\"${LANGS}\"
-	einfo LINGUAS=\"${LINGUAS}\"
-
-	local myconf=()
-
-	if tc-is-static-only; then
-		myconf+=(
-			--disable-shared
-		)
-	fi
-
-	# engages the Chrome-OS-specific "minimal" build.
-	# We perform further cleanup in multilib_src_install_all().
-	myconf+=( "--with-components=cros-minimal" )
-
-	# The tests use googletest (C++), so make sure correct C++ version is
-	# enabled.
-	append-cxxflags -std=gnu++17
-
-	# explicitly specify compiler wrt bug 524340
-	#
-	# need to override KRB5CONFIG for proper flags
-	# https://www.cups.org/str.php?L4423
-	econf \
-		CC="$(tc-getCC)" \
-		CXX="$(tc-getCXX)" \
-		KRB5CONFIG="${EPREFIX}"/usr/bin/${CHOST}-krb5-config \
-		--libdir="${EPREFIX}"/usr/$(get_libdir) \
-		--localstatedir="${EPREFIX}"/var \
-		--with-rundir="${EPREFIX}"/run/cups \
-		--with-printerroot="${EPREFIX}"/var/cache/cups/printers \
-		--with-cups-user=nobody \
-		--with-cups-group=cups \
-		--with-docdir="${EPREFIX}"/usr/share/cups/html \
-		--with-languages="${LINGUAS}" \
-		--with-system-groups=lpadmin \
-		--with-xinetd=/etc/xinetd.d \
-		$(multilib_native_use_enable acl) \
-		$(use_enable dbus) \
-		$(use_enable debug) \
-		$(use_enable debug debug-guards) \
-		$(use_enable debug debug-printfs) \
-		$(multilib_native_use_with java) \
-		$(use_enable kerberos gssapi) \
-		$(multilib_native_use_enable pam) \
-		$(multilib_native_use_with python python "${PYTHON}") \
-		$(use_enable static-libs static) \
-		$(use_enable threads) \
-		$(use_enable ssl gnutls) \
-		$(use_enable systemd) \
-		$(use_enable upstart) \
-		$(multilib_native_use_enable usb libusb) \
-		$(use_enable zeroconf avahi) \
-		--disable-dnssd \
-		--disable-localization \
-		--without-perl \
-		--without-php \
-		$(multilib_is_native_abi && echo --enable-libpaper || echo --disable-libpaper) \
-		"${myconf[@]}"
-
-	# install in /usr/libexec always, instead of using /usr/lib/cups, as that
-	# makes more sense when facing multilib support.
-	sed -i -e "s:SERVERBIN.*:SERVERBIN = \"\$\(BUILDROOT\)${EPREFIX}/usr/libexec/cups\":" Makedefs || die
-	sed -i -e "s:#define CUPS_SERVERBIN.*:#define CUPS_SERVERBIN \"${EPREFIX}/usr/libexec/cups\":" config.h || die
-	sed -i -e "s:cups_serverbin=.*:cups_serverbin=\"${EPREFIX}/usr/libexec/cups\":" cups-config || die
-}
-
-multilib_src_compile() {
-	if multilib_is_native_abi; then
-		default
-		if use test; then
-			tc-export PKG_CONFIG
-			cros-debug-add-NDEBUG
-			export BASE_VER="$(libchrome_ver)"
-			emake compile-test
-		fi
-	else
-		emake libs
-	fi
-}
-
-multilib_src_test() {
-	multilib_is_native_abi || return 0
-	local tests=(
-		./cups/googletests
-		./scheduler/googletests
-	)
-	local t
-	for t in "${tests[@]}"; do
-		ASAN_OPTIONS=log_path=stderr \
-		UBSAN_OPTIONS=print_stacktrace=1:log_path=stderr \
-		/mnt/host/source/src/platform2/common-mk/platform2_test.py \
-		--sysroot="${SYSROOT}" -- "${t}" || die "${t} failed"
-	done
-}
-
-multilib_src_install() {
-	if multilib_is_native_abi; then
-		emake BUILDROOT="${D}" install
-	else
-		emake BUILDROOT="${D}" install-libs install-headers
-		dobin cups-config
-	fi
-}
-
-multilib_src_install_all() {
-	# move the default config file to docs
-	dodoc "${ED}"/etc/cups/cupsd.conf.default
-	rm -f "${ED}"/etc/cups/cupsd.conf.default
-
-	# clean out cups init scripts
-	rm -rf "${ED}"/etc/{init.d/cups,rc*,pam.d/cups}
-
-	# install our init script
-	local neededservices
-	use zeroconf && neededservices+=" avahi-daemon"
-	use dbus && neededservices+=" dbus"
-	[[ -n ${neededservices} ]] && neededservices="need${neededservices}"
-	cp "${FILESDIR}"/cupsd.init.d-r1 "${T}"/cupsd || die
-	sed -i \
-		-e "s/@neededservices@/$neededservices/" \
-		"${T}"/cupsd || die
-	doinitd "${T}"/cupsd
-
-	# install our pam script
-	pamd_mimic_system cups auth account
-
-	if use xinetd ; then
-		# correct path
-		sed -i \
-			-e "s:server = .*:server = /usr/libexec/cups/daemon/cups-lpd:" \
-			"${ED}"/etc/xinetd.d/cups-lpd || die
-		# it is safer to disable this by default, bug #137130
-		grep -w 'disable' "${ED}"/etc/xinetd.d/cups-lpd || \
-			{ sed -i -e "s:}:\tdisable = yes\n}:" "${ED}"/etc/xinetd.d/cups-lpd || die ; }
-		# write permission for file owner (root), bug #296221
-		fperms u+w /etc/xinetd.d/cups-lpd || die "fperms failed"
-	else
-		# always configure with --with-xinetd= and clean up later,
-		# bug #525604
-		rm -rf "${ED}"/etc/xinetd.d
-	fi
-
-	keepdir /usr/libexec/cups/driver /usr/share/cups/{model,profiles} \
-		/var/spool/cups/tmp
-
-	keepdir /etc/cups/{interfaces,ppd,ssl}
-
-	# create /etc/cups/client.conf, bug #196967 and #266678
-	echo "ServerName ${EPREFIX}/run/cups/cups.sock" >> "${ED}"/etc/cups/client.conf
-	# Cap TLS per https://crbug.com/1088032
-	echo "MaxTLS1.2" >> "${ED}/etc/cups/client.conf"
-
-	# the following file is now provided by cups-filters:
-	rm -r "${ED}"/usr/share/cups/banners || die
-
-	# the following are created by the init script
-	rm -r "${ED}"/var/cache/cups || die
-	rm -r "${ED}"/run || die
-
-	# we're sending logs to syslog, not /var/log/cups/*
-	rmdir "${ED}"/var/log/cups || die
-
-	# CUPS tries to install these as root-only executables, for
-	# IPP/Kerberos support, and for "privileged port" listening. We don't
-	# need the former, and the latter is handled by Linux capabilities.
-	# Discussion here:
-	# http://www.cups.org/pipermail/cups/2016-February/027499.html
-	chmod 0755 "${ED}"/usr/libexec/cups/backend/{dnssd,ipp,lpd}
-
-	# Create a symbolic link from "ippusb' to the ipp backend.
-	dosym ipp /usr/libexec/cups/backend/ippusb
-
-	# Install our own conf files
-	insinto /etc/cups
-	doins "${FILESDIR}"/{cupsd,cups-files}.conf
-	if use upstart; then
-		insinto /etc/init
-		doins "${FILESDIR}"/init/cups-pre-upstart-socket-bridge.conf
-		doins "${FILESDIR}"/init/cups-post-upstart-socket-bridge.conf
-		doins "${FILESDIR}"/init/cupsd.conf
-		doins "${FILESDIR}"/init/cups-clear-state.conf
-		exeinto /usr/share/cros/init
-		doexe "${FILESDIR}"/init/cups-clear-state.sh
-	fi
-
-	# CUPS wants the daemon user to own these
-	chown cups:cups "${ED}"/etc/cups/{cupsd.conf,cups-files.conf,ssl}
-	# CUPS also wants some specific permissions
-	chmod 640 "${ED}"/etc/cups/{cupsd,cups-files}.conf
-	chmod 700 "${ED}"/etc/cups/ssl
-
-	if use seccomp; then
-		# Install seccomp policy files.
-		insinto /usr/share/policy
-		newins "${FILESDIR}/cupsd-seccomp-${ARCH}.policy" cupsd-seccomp.policy
-		newins "${FILESDIR}/cupstestppd-seccomp-${ARCH}.policy" cupstestppd-seccomp.policy
-		newins "${FILESDIR}/lpadmin-seccomp-${ARCH}.policy" lpadmin-seccomp.policy
-	else
-		sed -i '/^env seccomp_flags=/s:=.*:="":' "${ED}"/etc/init/cupsd.conf
-	fi
-
-	# Removes files and directories not used by Chrome OS.
-	rm -rv \
-		"${ED}"usr/share/cups/ppdc/ \
-			|| die "failed to remove some directories"
-	rm -v \
-		"${ED}"etc/cups/*.default \
-		"${ED}"etc/cups/snmp.conf \
-		"${ED}"usr/bin/cancel \
-		"${ED}"usr/libexec/cups/backend/snmp \
-		"${ED}"usr/sbin/cupsctl \
-		"${ED}"usr/sbin/cupsreject \
-		"${ED}"usr/sbin/lpmove \
-			|| die "failed to remove some files"
-}
-
-pkg_preinst() {
-	gnome2_icon_savelist
-}
-
-pkg_postinst() {
-	# Update desktop file database and gtk icon cache (bug 370059)
-	gnome2_icon_cache_update
-	fdo-mime_desktop_database_update
-
-	# not slotted - at most one value
-	if ! [[ "${REPLACING_VERSIONS}" ]]; then
-		echo
-		elog "For information about installing a printer and general cups setup"
-		elog "take a look at: https://wiki.gentoo.org/wiki/Printing"
-		echo
-	fi
-
-	if [[ "${REPLACING_VERSIONS}" ]] && [[ "${REPLACING_VERSIONS}" < "1.6" ]]; then
-		echo
-		elog "CUPS-1.6 no longer supports automatic remote printers or implicit classes"
-		elog "via the CUPS, LDAP, or SLP protocols, i.e. \"network browsing\"."
-		elog "You will have to find printers using zeroconf/avahi instead, enter"
-		elog "the location manually, or run cups-browsed from net-print/cups-filters"
-		elog "which re-adds that functionality as a separate daemon."
-		echo
-	fi
-
-	if [[ "${REPLACING_VERSIONS}" == "1.6.2-r4" ]]; then
-		ewarn
-		ewarn "You are upgrading from the broken version net-print/cups-1.6.2-r4."
-		ewarn "Please rebuild net-print/cups-filters now to make sure everything is OK."
-		ewarn
-	fi
-}
-
-pkg_postrm() {
-	# Update desktop file database and gtk icon cache (bug 370059)
-	gnome2_icon_cache_update
-	fdo-mime_desktop_database_update
-}
diff --git a/net-print/cups/cups-2.3.3-r196.ebuild b/net-print/cups/cups-2.3.3-r196.ebuild
new file mode 100644
index 0000000..b35566d
--- /dev/null
+++ b/net-print/cups/cups-2.3.3-r196.ebuild
@@ -0,0 +1,391 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+CROS_WORKON_COMMIT="f734115e4d1aeb8093a33a34c875170a027330e8"
+CROS_WORKON_TREE="9fe07ac7bed15d529469e9ae9619cf4b25aa3772"
+CROS_WORKON_PROJECT="chromiumos/third_party/cups"
+CROS_WORKON_EGIT_BRANCH="chromeos"
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit cros-debug cros-workon libchrome-version autotools fdo-mime gnome2-utils flag-o-matic linux-info multilib multilib-minimal pam python-single-r1 user versionator java-pkg-opt-2 systemd toolchain-funcs cros-fuzzer cros-sanitizers
+
+MY_P=${P/_rc/rc}
+MY_P=${MY_P/_beta/b}
+MY_PV=${PV/_rc/rc}
+MY_PV=${MY_PV/_beta/b}
+
+KEYWORDS="*"
+
+DESCRIPTION="The Common Unix Printing System"
+HOMEPAGE="http://www.cups.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="acl dbus debug java kerberos pam
+	python +seccomp selinux +ssl static-libs systemd test +threads upstart usb X xinetd zeroconf
+	asan fuzzer"
+
+LANGS="ca cs de es fr it ja ru"
+for X in ${LANGS} ; do
+	IUSE="${IUSE} +linguas_${X}"
+done
+
+CDEPEND="
+	app-text/libpaper
+	acl? (
+		kernel_linux? (
+			sys-apps/acl
+			sys-apps/attr
+		)
+	)
+	dbus? ( >=sys-apps/dbus-1.6.18-r1[${MULTILIB_USEDEP}] )
+	java? ( >=virtual/jre-1.6:* )
+	kerberos? ( >=virtual/krb5-0-r1[${MULTILIB_USEDEP}] )
+	!net-print/lprng
+	pam? ( virtual/pam )
+	python? ( ${PYTHON_DEPS} )
+	ssl? (
+		>=dev-libs/libgcrypt-1.5.3:0[${MULTILIB_USEDEP}]
+		>=net-libs/gnutls-2.12.23-r6[${MULTILIB_USEDEP}]
+	)
+	systemd? ( sys-apps/systemd )
+	usb? ( virtual/libusb:1 )
+	X? ( x11-misc/xdg-utils )
+	xinetd? ( sys-apps/xinetd )
+	zeroconf? ( >=net-dns/avahi-0.6.31-r2[${MULTILIB_USEDEP}] )
+	abi_x86_32? (
+		!<=app-emulation/emul-linux-x86-baselibs-20140508
+		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
+	)
+"
+
+DEPEND="${CDEPEND}
+	>=virtual/pkgconfig-0-r1[${MULTILIB_USEDEP}]
+	test? (
+		dev-cpp/gtest
+		>=chromeos-base/libchrome-0.0.1-r31:0=[cros-debug=]
+		>=chromeos-base/libbrillo-0.0.1-r1651:=
+	)
+"
+
+RDEPEND="${CDEPEND}
+	selinux? ( sec-policy/selinux-cups )
+"
+
+REQUIRED_USE="
+	python? ( ${PYTHON_REQUIRED_USE} )
+	usb? ( threads )
+	?? ( systemd upstart )
+"
+
+S="${WORKDIR}/${PN}-release-${MY_PV}"
+
+MULTILIB_CHOST_TOOLS=(
+	/usr/bin/cups-config
+)
+
+pkg_setup() {
+	enewgroup lp
+	enewuser lp -1 -1 -1 "lp,ippusb"
+	enewgroup lpadmin
+	enewuser lpadmin -1 -1 -1 "lpadmin,ippusb"
+	enewgroup cups
+	enewuser cups -1 -1 -1 cups
+
+	use python && python-single-r1_pkg_setup
+
+	if use kernel_linux; then
+		linux-info_pkg_setup
+		if  ! linux_config_exists; then
+			ewarn "Can't check the linux kernel configuration."
+			ewarn "You might have some incompatible options enabled."
+		else
+			# recheck that we don't have usblp to collide with libusb
+			if use usb; then
+				if linux_chkconfig_present USB_PRINTER; then
+					eerror "Your usb printers will be managed via libusb. In this case, "
+					eerror "${P} requires the USB_PRINTER support disabled."
+					eerror "Please disable it:"
+					eerror "    CONFIG_USB_PRINTER=n"
+					eerror "in /usr/src/linux/.config or"
+					eerror "    Device Drivers --->"
+					eerror "        USB support  --->"
+					eerror "            [ ] USB Printer support"
+					eerror "Alternatively, just disable the usb useflag for cups (your printer will still work)."
+				fi
+			else
+				#here we should warn user that he should enable it so he can print
+				if ! linux_chkconfig_present USB_PRINTER; then
+					ewarn "If you plan to use USB printers you should enable the USB_PRINTER"
+					ewarn "support in your kernel."
+					ewarn "Please enable it:"
+					ewarn "    CONFIG_USB_PRINTER=y"
+					ewarn "in /usr/src/linux/.config or"
+					ewarn "    Device Drivers --->"
+					ewarn "        USB support  --->"
+					ewarn "            [*] USB Printer support"
+					ewarn "Alternatively, enable the usb useflag for cups and use the libusb code."
+				fi
+			fi
+		fi
+	fi
+}
+
+src_prepare() {
+	epatch_user
+
+	# Remove ".SILENT" rule for verbose output (bug 524338).
+	sed 's#^.SILENT:##g' -i "${S}"/Makedefs.in || die "sed failed"
+
+	# Fix install-sh, posix sh does not have 'function'.
+	sed 's#function gzipcp#gzipcp()#g' -i "${S}/install-sh"
+
+	AT_M4DIR=config-scripts eaclocal
+	eautoconf
+
+	# custom Makefiles
+	multilib_copy_sources
+}
+
+multilib_src_configure() {
+	sanitizers-setup-env
+
+	export DSOFLAGS="${LDFLAGS}"
+
+	einfo LANGS=\"${LANGS}\"
+	einfo LINGUAS=\"${LINGUAS}\"
+
+	local myconf=()
+
+	if tc-is-static-only; then
+		myconf+=(
+			--disable-shared
+		)
+	fi
+
+	# engages the Chrome-OS-specific "minimal" build.
+	# We perform further cleanup in multilib_src_install_all().
+	myconf+=( "--with-components=cros-minimal" )
+
+	# The tests use googletest (C++), so make sure correct C++ version is
+	# enabled.
+	append-cxxflags -std=gnu++17
+
+	# explicitly specify compiler wrt bug 524340
+	#
+	# need to override KRB5CONFIG for proper flags
+	# https://www.cups.org/str.php?L4423
+	econf \
+		CC="$(tc-getCC)" \
+		CXX="$(tc-getCXX)" \
+		KRB5CONFIG="${EPREFIX}"/usr/bin/${CHOST}-krb5-config \
+		--libdir="${EPREFIX}"/usr/$(get_libdir) \
+		--localstatedir="${EPREFIX}"/var \
+		--with-rundir="${EPREFIX}"/run/cups \
+		--with-printerroot="${EPREFIX}"/var/cache/cups/printers \
+		--with-cups-user=nobody \
+		--with-cups-group=cups \
+		--with-docdir="${EPREFIX}"/usr/share/cups/html \
+		--with-languages="${LINGUAS}" \
+		--with-system-groups=lpadmin \
+		--with-xinetd=/etc/xinetd.d \
+		$(multilib_native_use_enable acl) \
+		$(use_enable dbus) \
+		$(use_enable debug) \
+		$(use_enable debug debug-guards) \
+		$(use_enable debug debug-printfs) \
+		$(multilib_native_use_with java) \
+		$(use_enable kerberos gssapi) \
+		$(multilib_native_use_enable pam) \
+		$(multilib_native_use_with python python "${PYTHON}") \
+		$(use_enable static-libs static) \
+		$(use_enable threads) \
+		$(use_with ssl tls gnutls) \
+		$(use_with systemd ondemand systemd) \
+		$(use_with upstart ondemand upstart) \
+		$(multilib_native_use_enable usb libusb) \
+		$(use_enable zeroconf avahi) \
+		--without-dnssd \
+		--disable-localization \
+		--without-perl \
+		--without-php \
+		$(multilib_is_native_abi && echo --enable-libpaper || echo --disable-libpaper) \
+		"${myconf[@]}"
+
+	# install in /usr/libexec always, instead of using /usr/lib/cups, as that
+	# makes more sense when facing multilib support.
+	sed -i -e "s:SERVERBIN.*:SERVERBIN = \"\$\(BUILDROOT\)${EPREFIX}/usr/libexec/cups\":" Makedefs || die
+	sed -i -e "s:#define CUPS_SERVERBIN.*:#define CUPS_SERVERBIN \"${EPREFIX}/usr/libexec/cups\":" config.h || die
+	sed -i -e "s:cups_serverbin=.*:cups_serverbin=\"${EPREFIX}/usr/libexec/cups\":" cups-config || die
+}
+
+multilib_src_compile() {
+	if multilib_is_native_abi; then
+		default
+		if use test; then
+			tc-export PKG_CONFIG
+			cros-debug-add-NDEBUG
+			export BASE_VER="$(libchrome_ver)"
+			emake compile-test
+		fi
+	else
+		emake libs
+	fi
+}
+
+multilib_src_test() {
+	multilib_is_native_abi || return 0
+	local tests=(
+		./cups/googletests
+		./scheduler/googletests
+	)
+	local t
+	for t in "${tests[@]}"; do
+		ASAN_OPTIONS=log_path=stderr \
+		UBSAN_OPTIONS=print_stacktrace=1:log_path=stderr \
+		/mnt/host/source/src/platform2/common-mk/platform2_test.py \
+		--sysroot="${SYSROOT}" -- "${t}" || die "${t} failed"
+	done
+}
+
+multilib_src_install() {
+	if multilib_is_native_abi; then
+		emake BUILDROOT="${D}" install
+	else
+		emake BUILDROOT="${D}" install-libs install-headers
+		dobin cups-config
+	fi
+}
+
+multilib_src_install_all() {
+	# move the default config file to docs
+	dodoc "${ED}"/etc/cups/cupsd.conf.default
+	rm -f "${ED}"/etc/cups/cupsd.conf.default
+
+	# clean out cups init scripts
+	rm -rf "${ED}"/etc/{init.d/cups,rc*,pam.d/cups}
+
+	# install our init script
+	local neededservices
+	use zeroconf && neededservices+=" avahi-daemon"
+	use dbus && neededservices+=" dbus"
+	[[ -n ${neededservices} ]] && neededservices="need${neededservices}"
+	cp "${FILESDIR}"/cupsd.init.d-r1 "${T}"/cupsd || die
+	sed -i \
+		-e "s/@neededservices@/$neededservices/" \
+		"${T}"/cupsd || die
+	doinitd "${T}"/cupsd
+
+	# install our pam script
+	pamd_mimic_system cups auth account
+
+	if use xinetd ; then
+		# correct path
+		sed -i \
+			-e "s:server = .*:server = /usr/libexec/cups/daemon/cups-lpd:" \
+			"${ED}"/etc/xinetd.d/cups-lpd || die
+		# it is safer to disable this by default, bug #137130
+		grep -w 'disable' "${ED}"/etc/xinetd.d/cups-lpd || \
+			{ sed -i -e "s:}:\tdisable = yes\n}:" "${ED}"/etc/xinetd.d/cups-lpd || die ; }
+		# write permission for file owner (root), bug #296221
+		fperms u+w /etc/xinetd.d/cups-lpd || die "fperms failed"
+	else
+		# always configure with --with-xinetd= and clean up later,
+		# bug #525604
+		rm -rf "${ED}"/etc/xinetd.d
+	fi
+
+	keepdir /usr/libexec/cups/driver /usr/share/cups/{model,profiles} \
+		/var/spool/cups/tmp
+
+	keepdir /etc/cups/{interfaces,ppd,ssl}
+
+	# create /etc/cups/client.conf, bug #196967 and #266678
+	echo "ServerName ${EPREFIX}/run/cups/cups.sock" >> "${ED}"/etc/cups/client.conf
+	# Cap TLS per https://crbug.com/1088032
+	echo "MaxTLS1.2" >> "${ED}/etc/cups/client.conf"
+
+	# the following file is now provided by cups-filters:
+	rm -r "${ED}"/usr/share/cups/banners || die
+
+	# the following are created by the init script
+	rm -r "${ED}"/var/cache/cups || die
+	rm -r "${ED}"/run || die
+
+	# we're sending logs to syslog, not /var/log/cups/*
+	rmdir "${ED}"/var/log/cups || die
+
+	# CUPS tries to install these as root-only executables, for
+	# IPP/Kerberos support, and for "privileged port" listening. We don't
+	# need the former, and the latter is handled by Linux capabilities.
+	# Discussion here:
+	# http://www.cups.org/pipermail/cups/2016-February/027499.html
+	chmod 0755 "${ED}"/usr/libexec/cups/backend/{dnssd,ipp,lpd}
+
+	# Create a symbolic link from "ippusb' to the ipp backend.
+	dosym ipp /usr/libexec/cups/backend/ippusb
+
+	# Install our own conf files
+	insinto /etc/cups
+	doins "${FILESDIR}"/{cupsd,cups-files}.conf
+	if use upstart; then
+		insinto /etc/init
+		doins "${FILESDIR}"/init/cups-pre-upstart-socket-bridge.conf
+		doins "${FILESDIR}"/init/cups-post-upstart-socket-bridge.conf
+		doins "${FILESDIR}"/init/cupsd.conf
+		doins "${FILESDIR}"/init/cups-clear-state.conf
+		exeinto /usr/share/cros/init
+		doexe "${FILESDIR}"/init/cups-clear-state.sh
+	fi
+
+	# CUPS wants the daemon user to own these
+	chown cups:cups "${ED}"/etc/cups/{cupsd.conf,cups-files.conf,ssl}
+	# CUPS also wants some specific permissions
+	chmod 640 "${ED}"/etc/cups/{cupsd,cups-files}.conf
+	chmod 700 "${ED}"/etc/cups/ssl
+
+	if use seccomp; then
+		# Install seccomp policy files.
+		insinto /usr/share/policy
+		newins "${FILESDIR}/cupsd-seccomp-${ARCH}.policy" cupsd-seccomp.policy
+		newins "${FILESDIR}/cupstestppd-seccomp-${ARCH}.policy" cupstestppd-seccomp.policy
+		newins "${FILESDIR}/lpadmin-seccomp-${ARCH}.policy" lpadmin-seccomp.policy
+		newins "${FILESDIR}/lpstat-seccomp-${ARCH}.policy" lpstat-seccomp.policy
+	else
+		sed -i '/^env seccomp_flags=/s:=.*:="":' "${ED}"/etc/init/cupsd.conf
+	fi
+
+	# Removes files and directories not used by Chrome OS.
+	rm -rv \
+		"${ED}"usr/share/cups/ppdc/ \
+			|| die "failed to remove some directories"
+	rm -v \
+		"${ED}"etc/cups/*.default \
+		"${ED}"etc/cups/snmp.conf \
+		"${ED}"usr/bin/cancel \
+		"${ED}"usr/libexec/cups/backend/snmp \
+		"${ED}"usr/sbin/cupsctl \
+		"${ED}"usr/sbin/cupsreject \
+		"${ED}"usr/sbin/lpmove \
+			|| die "failed to remove some files"
+}
+
+pkg_preinst() {
+	gnome2_icon_savelist
+}
+
+pkg_postinst() {
+	# Update desktop file database and gtk icon cache (bug 370059)
+	gnome2_icon_cache_update
+	fdo-mime_desktop_database_update
+}
+
+pkg_postrm() {
+	# Update desktop file database and gtk icon cache (bug 370059)
+	gnome2_icon_cache_update
+	fdo-mime_desktop_database_update
+}
diff --git a/net-print/cups/cups-9999.ebuild b/net-print/cups/cups-9999.ebuild
index e174f57..1fb3ddd 100644
--- a/net-print/cups/cups-9999.ebuild
+++ b/net-print/cups/cups-9999.ebuild
@@ -5,7 +5,7 @@
 EAPI=5
 
 CROS_WORKON_PROJECT="chromiumos/third_party/cups"
-CROS_WORKON_EGIT_BRANCH="v2.3"
+CROS_WORKON_EGIT_BRANCH="chromeos"
 
 PYTHON_COMPAT=( python2_7 )
 
@@ -21,7 +21,7 @@
 DESCRIPTION="The Common Unix Printing System"
 HOMEPAGE="http://www.cups.org/"
 
-LICENSE="GPL-2"
+LICENSE="Apache-2.0"
 SLOT="0"
 IUSE="acl dbus debug java kerberos pam
 	python +seccomp selinux +ssl static-libs systemd test +threads upstart usb X xinetd zeroconf
@@ -202,12 +202,12 @@
 		$(multilib_native_use_with python python "${PYTHON}") \
 		$(use_enable static-libs static) \
 		$(use_enable threads) \
-		$(use_enable ssl gnutls) \
-		$(use_enable systemd) \
-		$(use_enable upstart) \
+		$(use_with ssl tls gnutls) \
+		$(use_with systemd ondemand systemd) \
+		$(use_with upstart ondemand upstart) \
 		$(multilib_native_use_enable usb libusb) \
 		$(use_enable zeroconf avahi) \
-		--disable-dnssd \
+		--without-dnssd \
 		--disable-localization \
 		--without-perl \
 		--without-php \
@@ -352,6 +352,7 @@
 		newins "${FILESDIR}/cupsd-seccomp-${ARCH}.policy" cupsd-seccomp.policy
 		newins "${FILESDIR}/cupstestppd-seccomp-${ARCH}.policy" cupstestppd-seccomp.policy
 		newins "${FILESDIR}/lpadmin-seccomp-${ARCH}.policy" lpadmin-seccomp.policy
+		newins "${FILESDIR}/lpstat-seccomp-${ARCH}.policy" lpstat-seccomp.policy
 	else
 		sed -i '/^env seccomp_flags=/s:=.*:="":' "${ED}"/etc/init/cupsd.conf
 	fi
@@ -379,31 +380,6 @@
 	# Update desktop file database and gtk icon cache (bug 370059)
 	gnome2_icon_cache_update
 	fdo-mime_desktop_database_update
-
-	# not slotted - at most one value
-	if ! [[ "${REPLACING_VERSIONS}" ]]; then
-		echo
-		elog "For information about installing a printer and general cups setup"
-		elog "take a look at: https://wiki.gentoo.org/wiki/Printing"
-		echo
-	fi
-
-	if [[ "${REPLACING_VERSIONS}" ]] && [[ "${REPLACING_VERSIONS}" < "1.6" ]]; then
-		echo
-		elog "CUPS-1.6 no longer supports automatic remote printers or implicit classes"
-		elog "via the CUPS, LDAP, or SLP protocols, i.e. \"network browsing\"."
-		elog "You will have to find printers using zeroconf/avahi instead, enter"
-		elog "the location manually, or run cups-browsed from net-print/cups-filters"
-		elog "which re-adds that functionality as a separate daemon."
-		echo
-	fi
-
-	if [[ "${REPLACING_VERSIONS}" == "1.6.2-r4" ]]; then
-		ewarn
-		ewarn "You are upgrading from the broken version net-print/cups-1.6.2-r4."
-		ewarn "Please rebuild net-print/cups-filters now to make sure everything is OK."
-		ewarn
-	fi
 }
 
 pkg_postrm() {
diff --git a/net-print/cups/files/chromeos-version.sh b/net-print/cups/files/chromeos-version.sh
index d545f06..7b9a582 100755
--- a/net-print/cups/files/chromeos-version.sh
+++ b/net-print/cups/files/chromeos-version.sh
@@ -1,6 +1,6 @@
 #!/bin/sh
 #
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Copyright 2021 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.
 #
@@ -8,4 +8,4 @@
 # the package, and it prints a string on stdout with the numerical version
 # number for said repo.
 
-"$1"/configure --version | head -1 | awk '{print $3}'
+echo 2.3.3
diff --git a/net-print/cups/files/cups-2.2.4-case-insensitive-pwg-raster-types.patch b/net-print/cups/files/cups-2.2.4-case-insensitive-pwg-raster-types.patch
deleted file mode 100644
index 30c526d..0000000
--- a/net-print/cups/files/cups-2.2.4-case-insensitive-pwg-raster-types.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 26a03a4c68d8e3f12ff3dcb0033afd2895fc91ee Mon Sep 17 00:00:00 2001
-From: David Valleau <valleau@chromium.org>
-Date: Thu, 9 Aug 2018 13:54:58 -0700
-Subject: [PATCH] Allow PWG Raster types to vary by case
-
-Link to the upstream patch:
-https://github.com/apple/cups/commit/d2817c9f02391c8cba8ae478b952d3405f45ff59
-
----
- cups/ppd-cache.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/cups/ppd-cache.c b/cups/ppd-cache.c
-index c5814c5..349cb6b 100644
---- a/cups/ppd-cache.c
-+++ b/cups/ppd-cache.c
-@@ -3331,7 +3331,7 @@ _ppdCreateFromIPP(char   *buffer,	/* I - Filename buffer */
-       const char *keyword = ippGetString(attr, i, NULL);
- 					/* Keyword for color/bit depth */
- 
--      if (!strcmp(keyword, "black_1") || !strcmp(keyword, "bi-level") || !strcmp(keyword, "process-bi-level"))
-+      if (!strcasecmp(keyword, "black_1") || !strcmp(keyword, "bi-level") || !strcmp(keyword, "process-bi-level"))
-       {
-         if (!default_color)
- 	  cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n"
-@@ -3342,7 +3342,7 @@ _ppdCreateFromIPP(char   *buffer,	/* I - Filename buffer */
-         if (!default_color)
- 	  default_color = "FastGray";
-       }
--      else if (!strcmp(keyword, "sgray_8") || !strcmp(keyword, "monochrome") || !strcmp(keyword, "process-monochrome"))
-+      else if (!strcasecmp(keyword, "sgray_8") || !strcmp(keyword, "monochrome") || !strcmp(keyword, "process-monochrome"))
-       {
-         if (!default_color)
- 	  cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n"
-@@ -3353,7 +3353,7 @@ _ppdCreateFromIPP(char   *buffer,	/* I - Filename buffer */
-         if (!default_color || !strcmp(default_color, "FastGray"))
- 	  default_color = "Gray";
-       }
--      else if (!strcmp(keyword, "srgb_8") || !strcmp(keyword, "color"))
-+      else if (!strcasecmp(keyword, "srgb_8") || !strcmp(keyword, "color"))
-       {
-         if (!default_color)
- 	  cupsFilePuts(fp, "*OpenUI *ColorModel/Color Mode: PickOne\n"
--- 
-2.18.0.597.ga71716f1ad-goog
-
diff --git a/net-print/cups/files/cupsd-seccomp-amd64.policy b/net-print/cups/files/cupsd-seccomp-amd64.policy
index fcdf77a..b9830b1 100644
--- a/net-print/cups/files/cupsd-seccomp-amd64.policy
+++ b/net-print/cups/files/cupsd-seccomp-amd64.policy
@@ -30,6 +30,7 @@
 futex: 1
 getcwd: 1
 getdents: 1
+getdents64: 1
 getegid: 1
 geteuid: 1
 getgid: 1
@@ -61,6 +62,7 @@
 mremap: 1
 munmap: 1
 nanosleep: 1
+clock_nanosleep: 1
 newfstatat: 1
 open: 1
 openat: 1
@@ -111,3 +113,4 @@
 unlink: 1
 wait4: 1
 write: 1
+writev: 1
diff --git a/net-print/cups/files/cupsd-seccomp-arm.policy b/net-print/cups/files/cupsd-seccomp-arm.policy
index 5aef057..07b8a3f 100644
--- a/net-print/cups/files/cupsd-seccomp-arm.policy
+++ b/net-print/cups/files/cupsd-seccomp-arm.policy
@@ -8,6 +8,7 @@
 chmod: 1
 chown32: 1
 clock_gettime: 1
+clock_gettime64: 1
 clone: 1
 close: 1
 connect: 1
@@ -29,6 +30,7 @@
 fstatfs64: 1
 ftruncate64: 1
 futex: 1
+futex_time64: 1
 getcwd: 1
 getdents: 1
 getdents64: 1
@@ -63,6 +65,8 @@
 mremap: 1
 munmap: 1
 nanosleep: 1
+clock_nanosleep: 1
+clock_nanosleep_time64: 1
 open: 1
 openat: 1
 pipe: 1
@@ -107,7 +111,9 @@
 sysinfo: 1
 timerfd_create: 1
 timerfd_settime: 1
+timerfd_settime64: 1
 timerfd_gettime: 1
+timerfd_gettime64: 1
 times: 1
 tgkill: 1
 umask: 1
diff --git a/net-print/cups/files/cupsd-seccomp-arm64.policy b/net-print/cups/files/cupsd-seccomp-arm64.policy
index 98f85f5..7c67920 100644
--- a/net-print/cups/files/cupsd-seccomp-arm64.policy
+++ b/net-print/cups/files/cupsd-seccomp-arm64.policy
@@ -61,6 +61,7 @@
 mremap: 1
 munmap: 1
 nanosleep: 1
+clock_nanosleep: 1
 newfstatat: 1
 openat: 1
 pipe2: 1
diff --git a/net-print/cups/files/cupsd-seccomp-x86.policy b/net-print/cups/files/cupsd-seccomp-x86.policy
index 584c2dd..a7309d7 100644
--- a/net-print/cups/files/cupsd-seccomp-x86.policy
+++ b/net-print/cups/files/cupsd-seccomp-x86.policy
@@ -10,6 +10,7 @@
 chown: 1
 chown32: 1
 clock_gettime: 1
+clock_gettime64: 1
 clone: 1
 close: 1
 connect: 1
@@ -36,6 +37,7 @@
 fstatat64: 1
 ftruncate64: 1
 futex: 1
+futex_time64: 1
 getcwd: 1
 getdents: 1
 getdents64: 1
@@ -76,6 +78,8 @@
 mremap: 1
 munmap: 1
 nanosleep: 1
+clock_nanosleep: 1
+clock_nanosleep_time64: 1
 newfstatat: 1
 open: 1
 openat: 1
@@ -91,6 +95,7 @@
 readlinkat: 1
 recv: 1
 recvmmsg: 1
+recvmmsg_time64: 1
 rename: 1
 restart_syscall: 1
 rmdir: 1
@@ -123,7 +128,9 @@
 time: 1
 timerfd_create: 1
 timerfd_settime: 1
+timerfd_settime64: 1
 timerfd_gettime: 1
+timerfd_gettime64: 1
 times: 1
 tgkill: 1
 ugetrlimit: 1
diff --git a/net-print/cups/files/cupstestppd-seccomp-amd64.policy b/net-print/cups/files/cupstestppd-seccomp-amd64.policy
index 3db720f..1a08f46 100644
--- a/net-print/cups/files/cupstestppd-seccomp-amd64.policy
+++ b/net-print/cups/files/cupstestppd-seccomp-amd64.policy
@@ -9,12 +9,14 @@
 fcntl: 1
 fstat: 1
 futex: 1
-getdents:1
+getdents: 1
+getdents64: 1
 getegid: 1
 geteuid: 1
 getgid: 1
 getpid: 1
 getuid: 1
+lseek: 1
 lstat: 1
 mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
 mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
@@ -28,3 +30,4 @@
 read: 1
 stat: 1
 write: 1
+fstatfs: 1
diff --git a/net-print/cups/files/cupstestppd-seccomp-arm.policy b/net-print/cups/files/cupstestppd-seccomp-arm.policy
index aad3883..fac4910 100644
--- a/net-print/cups/files/cupstestppd-seccomp-arm.policy
+++ b/net-print/cups/files/cupstestppd-seccomp-arm.policy
@@ -2,6 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+_llseek: 1
 access: 1
 brk: 1
 close: 1
@@ -11,12 +12,14 @@
 fstat64: 1
 fstatat64: 1
 futex: 1
+futex_time64: 1
 getdents64: 1
 getegid32: 1
 geteuid32: 1
 getgid32: 1
 getpid: 1
 getuid32: 1
+lseek: 1
 lstat: 1
 lstat64: 1
 mmap2: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
@@ -31,3 +34,4 @@
 read: 1
 stat64: 1
 write: 1
+fstatfs64: 1
diff --git a/net-print/cups/files/cupstestppd-seccomp-arm64.policy b/net-print/cups/files/cupstestppd-seccomp-arm64.policy
index 9b80c2e..151193ed 100644
--- a/net-print/cups/files/cupstestppd-seccomp-arm64.policy
+++ b/net-print/cups/files/cupstestppd-seccomp-arm64.policy
@@ -19,6 +19,7 @@
 getrandom: 1
 getrlimit: 1
 getuid: 1
+lseek: 1
 mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
 mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
 mremap: 1
@@ -35,3 +36,4 @@
 set_tid_address: 1
 set_robust_list: 1
 write: 1
+fstatfs: 1
diff --git a/net-print/cups/files/cupstestppd-seccomp-x86.policy b/net-print/cups/files/cupstestppd-seccomp-x86.policy
index e101712..4fce66b 100644
--- a/net-print/cups/files/cupstestppd-seccomp-x86.policy
+++ b/net-print/cups/files/cupstestppd-seccomp-x86.policy
@@ -2,6 +2,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+_llseek: 1
 access: 1
 brk: 1
 close: 1
@@ -10,12 +11,14 @@
 fcntl64: 1
 fstat64: 1
 futex: 1
+futex_time64: 1
 getdents64: 1
 getegid32: 1
 geteuid32: 1
 getgid32: 1
 getpid: 1
 getuid32: 1
+lseek: 1
 lstat: 1
 mmap2: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
 mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
@@ -33,3 +36,4 @@
 stat64: 1
 uname: 1
 write: 1
+fstatfs64: 1
diff --git a/net-print/cups/files/lpadmin-seccomp-amd64.policy b/net-print/cups/files/lpadmin-seccomp-amd64.policy
index cff183a..90dcf4a 100644
--- a/net-print/cups/files/lpadmin-seccomp-amd64.policy
+++ b/net-print/cups/files/lpadmin-seccomp-amd64.policy
@@ -31,6 +31,8 @@
 mremap: 1
 munmap: 1
 nanosleep: 1
+newfstatat: 1
+clock_nanosleep: 1
 open: 1
 openat: 1
 poll: 1
diff --git a/net-print/cups/files/lpadmin-seccomp-arm.policy b/net-print/cups/files/lpadmin-seccomp-arm.policy
index 8541b98..c73840d 100644
--- a/net-print/cups/files/lpadmin-seccomp-arm.policy
+++ b/net-print/cups/files/lpadmin-seccomp-arm.policy
@@ -7,6 +7,7 @@
 bind: 1
 brk: 1
 clock_gettime: 1
+clock_gettime64: 1
 close: 1
 connect: 1
 exit: 1
@@ -14,6 +15,7 @@
 fcntl64: 1
 fstat64: 1
 futex: 1
+futex_time64: 1
 getegid32: 1
 geteuid32: 1
 getgid32: 1
@@ -30,6 +32,8 @@
 mremap: 1
 munmap: 1
 nanosleep: 1
+clock_nanosleep: 1
+clock_nanosleep_time64: 1
 open: 1
 openat: 1
 poll: 1
diff --git a/net-print/cups/files/lpadmin-seccomp-arm64.policy b/net-print/cups/files/lpadmin-seccomp-arm64.policy
index 99e22ee..f2c118d 100644
--- a/net-print/cups/files/lpadmin-seccomp-arm64.policy
+++ b/net-print/cups/files/lpadmin-seccomp-arm64.policy
@@ -33,6 +33,7 @@
 mremap: 1
 munmap: 1
 nanosleep: 1
+clock_nanosleep: 1
 newfstatat: 1
 openat: 1
 ppoll: 1
diff --git a/net-print/cups/files/lpadmin-seccomp-x86.policy b/net-print/cups/files/lpadmin-seccomp-x86.policy
index af8de54..67416be 100644
--- a/net-print/cups/files/lpadmin-seccomp-x86.policy
+++ b/net-print/cups/files/lpadmin-seccomp-x86.policy
@@ -7,6 +7,7 @@
 bind: 1
 brk: 1
 clock_gettime: 1
+clock_gettime64: 1
 close: 1
 connect: 1
 exit: 1
@@ -14,6 +15,7 @@
 fcntl64: 1
 fstat64: 1
 futex: 1
+futex_time64: 1
 getegid32: 1
 geteuid32: 1
 getgid32: 1
@@ -30,6 +32,8 @@
 mremap: 1
 munmap: 1
 nanosleep: 1
+clock_nanosleep: 1
+clock_nanosleep_time64: 1
 open: 1
 openat: 1
 poll: 1
diff --git a/net-print/cups/files/lpstat-seccomp-amd64.policy b/net-print/cups/files/lpstat-seccomp-amd64.policy
new file mode 100644
index 0000000..74e2e32
--- /dev/null
+++ b/net-print/cups/files/lpstat-seccomp-amd64.policy
@@ -0,0 +1,42 @@
+# Copyright 2021 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.
+
+write: 1
+poll: 1
+recvmsg: 1
+sendmsg: 1
+read: 1
+sendto: 1
+fcntl: 1
+recvfrom: 1
+openat: 1
+close: 1
+fstat: 1
+mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+setsockopt: 1
+socket: arg0 == AF_UNIX
+connect: 1
+geteuid: 1
+pipe: 1
+getsockname: 1
+getuid: 1
+brk: 1
+access: 1
+getrandom: 1
+stat: 1
+futex: 1
+getegid: 1
+getgid: 1
+mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+munmap: 1
+rt_sigaction: 1
+lseek: 1
+uname: 1
+clock_getres: 1
+getresuid: 1
+getresgid: 1
+exit_group: 1
+restart_syscall: 1
+exit: 1
+rt_sigreturn: 1
diff --git a/net-print/cups/files/lpstat-seccomp-arm.policy b/net-print/cups/files/lpstat-seccomp-arm.policy
new file mode 100644
index 0000000..443738a
--- /dev/null
+++ b/net-print/cups/files/lpstat-seccomp-arm.policy
@@ -0,0 +1,37 @@
+# Copyright 2021 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.
+
+clock_gettime: 1
+recv: 1
+poll: 1
+openat: 1
+send: 1
+fcntl64: 1
+fstat64: 1
+close: 1
+read: 1
+setsockopt: 1
+mmap2: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+write: 1
+getuid32: 1
+mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+_llseek: 1
+socket: arg0 == AF_UNIX
+connect: 1
+access: 1
+getrandom: 1
+stat64: 1
+futex: 1
+geteuid32: 1
+getegid32: 1
+getgid32: 1
+munmap: 1
+rt_sigaction: 1
+clock_gettime64: 1
+uname: 1
+brk: 1
+exit_group: 1
+restart_syscall: 1
+exit: 1
+rt_sigreturn: 1
diff --git a/net-print/cups/files/lpstat-seccomp-arm64.policy b/net-print/cups/files/lpstat-seccomp-arm64.policy
new file mode 100644
index 0000000..4829a67
--- /dev/null
+++ b/net-print/cups/files/lpstat-seccomp-arm64.policy
@@ -0,0 +1,42 @@
+# Copyright 2021 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.
+
+write: 1
+poll: 1
+recvmsg: 1
+sendmsg: 1
+read: 1
+send: 1
+fcntl64: 1
+openat: 1
+recv: 1
+close: 1
+fstat64: 1
+setsockopt: 1
+socket: arg0 == AF_UNIX
+connect: 1
+mmap2: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+geteuid32: 1
+pipe: 1
+getsockname: 1
+getuid32: 1
+mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+access: 1
+getrandom: 1
+stat64: 1
+futex: 1
+getegid32: 1
+getgid32: 1
+munmap: 1
+rt_sigaction: 1
+_llseek: 1
+uname: 1
+brk: 1
+clock_getres: 1
+getresuid32: 1
+getresgid32: 1
+exit_group: 1
+restart_syscall: 1
+exit: 1
+rt_sigreturn: 1
diff --git a/net-print/cups_proxy/cups_proxy-0.0.1-r149.ebuild b/net-print/cups_proxy/cups_proxy-0.0.1-r149.ebuild
deleted file mode 100644
index 9b197e6..0000000
--- a/net-print/cups_proxy/cups_proxy-0.0.1-r149.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "6e5b8d8860aab37b0f9c1fa02030639cea55fb52" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk cups_proxy .gn"
-
-PLATFORM_SUBDIR="cups_proxy"
-
-inherit cros-workon platform user
-
-DESCRIPTION="CUPS Proxy Daemon for Chromium OS"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cups_proxy/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="
-	chromeos-base/libbrillo:=
-	net-libs/libmicrohttpd:=
-	"
-
-DEPEND="${RDEPEND}
-	"
-
-pkg_preinst() {
-	enewuser cups-proxy
-	enewgroup cups-proxy
-}
-
-src_install() {
-	dobin "${OUT}"/cups_proxy
-
-	# Install upstart configuration.
-	insinto /etc/init
-	doins init/*.conf
-
-	# Install seccomp policy file.
-	insinto /usr/share/policy
-	newins "seccomp/cups_proxy-seccomp-${ARCH}.policy" cups_proxy-seccomp.policy
-
-	# Install D-Bus configuration file.
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.CupsProxyDaemon.conf
-
-	# Install D-Bus service activation configuration.
-	insinto /usr/share/dbus-1/system-services
-	doins dbus/org.chromium.CupsProxyDaemon.service
-}
diff --git a/net-print/cups_proxy/cups_proxy-0.0.1-r186.ebuild b/net-print/cups_proxy/cups_proxy-0.0.1-r186.ebuild
new file mode 100644
index 0000000..4b9d60c
--- /dev/null
+++ b/net-print/cups_proxy/cups_proxy-0.0.1-r186.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="6f9011123f3656c45bb34148673aa110a22326b3"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "3d941a32a42e1b92a1e353ab03fde0c52d50b4ab" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk cups_proxy .gn"
+
+PLATFORM_SUBDIR="cups_proxy"
+
+inherit cros-workon platform user
+
+DESCRIPTION="CUPS Proxy Daemon for Chromium OS"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/cups_proxy/"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="
+	chromeos-base/libbrillo:=
+	net-libs/libmicrohttpd:=
+	"
+
+DEPEND="${RDEPEND}
+	"
+
+pkg_preinst() {
+	enewuser cups-proxy
+	enewgroup cups-proxy
+}
+
+src_install() {
+	dobin "${OUT}"/cups_proxy
+
+	# Install upstart configuration.
+	insinto /etc/init
+	doins init/*.conf
+
+	# Install seccomp policy file.
+	insinto /usr/share/policy
+	newins "seccomp/cups_proxy-seccomp-${ARCH}.policy" cups_proxy-seccomp.policy
+
+	# Install D-Bus configuration file.
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.CupsProxyDaemon.conf
+
+	# Install D-Bus service activation configuration.
+	insinto /usr/share/dbus-1/system-services
+	doins dbus/org.chromium.CupsProxyDaemon.service
+}
diff --git a/net-print/epson-inkjet-printer-escpr/epson-inkjet-printer-escpr-1.7.6-r5.ebuild b/net-print/epson-inkjet-printer-escpr/epson-inkjet-printer-escpr-1.7.6-r6.ebuild
similarity index 100%
rename from net-print/epson-inkjet-printer-escpr/epson-inkjet-printer-escpr-1.7.6-r5.ebuild
rename to net-print/epson-inkjet-printer-escpr/epson-inkjet-printer-escpr-1.7.6-r6.ebuild
diff --git a/net-print/epson-inkjet-printer-escpr/epson-inkjet-printer-escpr-1.7.6.ebuild b/net-print/epson-inkjet-printer-escpr/epson-inkjet-printer-escpr-1.7.6.ebuild
index 0f85e5c..6ea48de 100644
--- a/net-print/epson-inkjet-printer-escpr/epson-inkjet-printer-escpr-1.7.6.ebuild
+++ b/net-print/epson-inkjet-printer-escpr/epson-inkjet-printer-escpr-1.7.6.ebuild
@@ -21,6 +21,7 @@
 	"${FILESDIR}/1.6.5-warnings.patch"
 	"${FILESDIR}/${PN}-1.6.10-search-filter.patch"
 	"${FILESDIR}/${PN}-1.7.6-cupsRasterHeader.patch"
+	"${FILESDIR}/${PN}-1.7.6-writeToNullFix.patch"
 )
 
 src_prepare() {
diff --git a/net-print/epson-inkjet-printer-escpr/files/epson-inkjet-printer-escpr-1.7.6-writeToNullFix.patch b/net-print/epson-inkjet-printer-escpr/files/epson-inkjet-printer-escpr-1.7.6-writeToNullFix.patch
new file mode 100644
index 0000000..d1c566d
--- /dev/null
+++ b/net-print/epson-inkjet-printer-escpr/files/epson-inkjet-printer-escpr-1.7.6-writeToNullFix.patch
@@ -0,0 +1,16 @@
+This patch fixes a bug in the original driver: write to NULL descriptor.
+
+b/182179434
+
+--- a/src/wrapper.c
++++ b/src/wrapper.c
+@@ -244,6 +244,9 @@ main (int argc, char *argv[])
+ 				break;
+ 			}
+ 
++			if (pfp == NULL) // do not write anything if pipe is not open
++				break;
++
+ 			if(first_fwrite){//最初のfwriteだけ、ページ数を送信
+ 				fwrite (&pageNum, 1, 1, pfp);
+ 				first_fwrite = FALSE;
diff --git a/net-print/hplip/files/hplip-3.19.6-fix-uninitialized-variable.patch b/net-print/hplip/files/hplip-3.19.6-fix-uninitialized-variable.patch
new file mode 100644
index 0000000..29e6400
--- /dev/null
+++ b/net-print/hplip/files/hplip-3.19.6-fix-uninitialized-variable.patch
@@ -0,0 +1,20 @@
+From: Pranav Batra <batrapranav@chromium.org>
+
+The hpcups ljcolor filter periodically restarts the compression algorithm
+to prevent printers from running out of memory during decompression.
+m_iYPos is used to restart said algorithm every 1200 encapsulate calls.
+This variable should be initialized to zero so that the print output is stable.
+
+https://bugs.launchpad.net/hplip/+bug/1926369
+
+--- a/prnt/hpcups/LJColor.cpp
++++ b/prnt/hpcups/LJColor.cpp
+@@ -38,7 +38,7 @@
+ #include "ColorMaps.h"
+ #include "PrinterCommands.h"
+ 
+-LJColor::LJColor() : Encapsulator()
++LJColor::LJColor() : Encapsulator(), m_iYPos(0)
+ {
+     memset(&m_PM, 0, sizeof(m_PM));
+     strcpy(m_szLanguage, "PCL");
diff --git a/net-print/hplip/hplip-3.19.6-r4.ebuild b/net-print/hplip/hplip-3.19.6-r5.ebuild
similarity index 100%
rename from net-print/hplip/hplip-3.19.6-r4.ebuild
rename to net-print/hplip/hplip-3.19.6-r5.ebuild
diff --git a/net-print/hplip/hplip-3.19.6.ebuild b/net-print/hplip/hplip-3.19.6.ebuild
index cad7a13..bada67c 100644
--- a/net-print/hplip/hplip-3.19.6.ebuild
+++ b/net-print/hplip/hplip-3.19.6.ebuild
@@ -80,6 +80,7 @@
 	"${FILESDIR}/${PN}-3.18.6-disable-create-ppd.patch"
 	"${FILESDIR}/${PN}-3.19.6-fix-return.patch"
 	"${FILESDIR}/${PN}-3.19.6-ignore-prebuilt-shared-objects.patch"
+	"${FILESDIR}/${PN}-3.19.6-fix-uninitialized-variable.patch"
 	"${WORKDIR}/patches"
 )
 
@@ -98,18 +99,18 @@
 pkg_setup() {
 	use !minimal && python-single-r1_pkg_setup
 
-	use scanner && ! use X && ewarn "You need USE=X for the scanner GUI."
+	use scanner && ! use X && einfo "You need USE=X for the scanner GUI."
 
 	if ! use hpcups && ! use hpijs ; then
-		ewarn "Installing neither hpcups (USE=-hpcups) nor hpijs (USE=-hpijs) driver,"
-		ewarn "which is probably not what you want."
-		ewarn "You will almost certainly not be able to print."
+		einfo "Installing neither hpcups (USE=-hpcups) nor hpijs (USE=-hpijs) driver,"
+		einfo "which is probably not what you want."
+		einfo "You will almost certainly not be able to print."
 	fi
 
 	if use minimal ; then
-		ewarn "Installing driver portions only, make sure you know what you are doing."
-		ewarn "Depending on the USE flags set for hpcups or hpijs the appropiate driver"
-		ewarn "is installed. If both USE flags are set hpijs overrides hpcups."
+		einfo "Installing driver portions only, make sure you know what you are doing."
+		einfo "Depending on the USE flags set for hpcups or hpijs the appropiate driver"
+		einfo "is installed. If both USE flags are set hpijs overrides hpcups."
 	else
 		use parport && linux-info_pkg_setup
 	fi
diff --git a/net-print/ippsample/Manifest b/net-print/ippsample/Manifest
new file mode 100644
index 0000000..0a86ed6
--- /dev/null
+++ b/net-print/ippsample/Manifest
@@ -0,0 +1 @@
+DIST ippsample-1.0.0.zip 6899766 BLAKE2B 6f087b4f6f49704d60e2450d62cac6d7919da6e328629f00de2aec0162577fdc9a453d430bf8ef39d354bbd4120937f689d75ffdf65723d4b3d8e8a03647e1ba SHA512 203da9dc385cdc8a6234754c59f5858dc9f7a815668b7ca48a7c1d0bb321a880ca0b726ffbbb8108ceb213c9eaae6dc664db9a6099d5b879144090dadb08f979
diff --git a/net-print/ippsample/OWNERS b/net-print/ippsample/OWNERS
new file mode 100644
index 0000000..c5d38b1
--- /dev/null
+++ b/net-print/ippsample/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/cups_proxy/OWNERS
diff --git a/net-print/ippsample/files/ippsample-1.0.0-do-not-force-local-BinDir-directory.patch b/net-print/ippsample/files/ippsample-1.0.0-do-not-force-local-BinDir-directory.patch
new file mode 100644
index 0000000..9096160
--- /dev/null
+++ b/net-print/ippsample/files/ippsample-1.0.0-do-not-force-local-BinDir-directory.patch
@@ -0,0 +1,26 @@
+From 9575c64a751022d2e64b0e63d055b28ec8aa8bb7 Mon Sep 17 00:00:00 2001
+From: Marcin Wojtas <mw@semihalf.com>
+Date: Fri, 12 Mar 2021 08:17:35 +0000
+Subject: [PATCH] Do not force local BinDir directory
+
+By default the system.conf file forces a relative path
+to the ippsample tools directory. In case the ippsample
+is properly installed in the system this setting is not necessary
+and becomes problematic in standard usage. Update configuration file
+and rely on the paths set dynamically during server configuration.
+---
+ test/system.conf | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/test/system.conf b/test/system.conf
+index a30f7a8..1469399 100644
+--- a/test/system.conf
++++ b/test/system.conf
+@@ -1,4 +1,3 @@
+-BinDir tools
+ DefaultPrinter ipp-everywhere-pdf
+ KeepFiles Yes
+ LogFile stderr
+-- 
+2.31.0.rc2.261.g7f71774620-goog
+
diff --git a/net-print/ippsample/files/ippsample-1.0.0-use-PKG_CONFIG.patch b/net-print/ippsample/files/ippsample-1.0.0-use-PKG_CONFIG.patch
new file mode 100644
index 0000000..2d79cdb
--- /dev/null
+++ b/net-print/ippsample/files/ippsample-1.0.0-use-PKG_CONFIG.patch
@@ -0,0 +1,177 @@
+From 58e396709d1e1cd70138cd136e2ba12262352ebb Mon Sep 17 00:00:00 2001
+From: Marcin Wojtas <mw@semihalf.com>
+Date: Fri, 12 Mar 2021 00:42:34 +0000
+Subject: [PATCH] Use PKG_CONFIG
+
+---
+ configure | 62 +++++++++++++++++++++++++++----------------------------
+ 1 file changed, 31 insertions(+), 31 deletions(-)
+
+diff --git a/configure b/configure
+index aeb01db..5f7cdf3 100755
+--- a/configure
++++ b/configure
+@@ -664,7 +664,7 @@ LIBZ
+ INSTALL_GZIP
+ EGREP
+ GREP
+-PKGCONFIG
++PKG_CONFIG
+ INSTALL
+ SED
+ RMDIR
+@@ -3576,12 +3576,12 @@ if test -n "$ac_tool_prefix"; then
+ set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+-if ${ac_cv_path_PKGCONFIG+:} false; then :
++if ${ac_cv_path_PKG_CONFIG+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+-  case $PKGCONFIG in
++  case $PKG_CONFIG in
+   [\\/]* | ?:[\\/]*)
+-  ac_cv_path_PKGCONFIG="$PKGCONFIG" # Let the user override the test with a path.
++  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
+   ;;
+   *)
+   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+@@ -3591,7 +3591,7 @@ do
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_path_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
++    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+@@ -3602,10 +3602,10 @@ IFS=$as_save_IFS
+   ;;
+ esac
+ fi
+-PKGCONFIG=$ac_cv_path_PKGCONFIG
+-if test -n "$PKGCONFIG"; then
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKGCONFIG" >&5
+-$as_echo "$PKGCONFIG" >&6; }
++PKG_CONFIG=$ac_cv_path_PKG_CONFIG
++if test -n "$PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5
++$as_echo "$PKG_CONFIG" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+@@ -3613,18 +3613,18 @@ fi
+ 
+ 
+ fi
+-if test -z "$ac_cv_path_PKGCONFIG"; then
+-  ac_pt_PKGCONFIG=$PKGCONFIG
++if test -z "$ac_cv_path_PKG_CONFIG"; then
++  ac_pt_PKG_CONFIG=$PKG_CONFIG
+   # Extract the first word of "pkg-config", so it can be a program name with args.
+ set dummy pkg-config; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+-if ${ac_cv_path_ac_pt_PKGCONFIG+:} false; then :
++if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+-  case $ac_pt_PKGCONFIG in
++  case $ac_pt_PKG_CONFIG in
+   [\\/]* | ?:[\\/]*)
+-  ac_cv_path_ac_pt_PKGCONFIG="$ac_pt_PKGCONFIG" # Let the user override the test with a path.
++  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
+   ;;
+   *)
+   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+@@ -3634,7 +3634,7 @@ do
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+-    ac_cv_path_ac_pt_PKGCONFIG="$as_dir/$ac_word$ac_exec_ext"
++    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+@@ -3645,17 +3645,17 @@ IFS=$as_save_IFS
+   ;;
+ esac
+ fi
+-ac_pt_PKGCONFIG=$ac_cv_path_ac_pt_PKGCONFIG
+-if test -n "$ac_pt_PKGCONFIG"; then
+-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKGCONFIG" >&5
+-$as_echo "$ac_pt_PKGCONFIG" >&6; }
++ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
++if test -n "$ac_pt_PKG_CONFIG"; then
++  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5
++$as_echo "$ac_pt_PKG_CONFIG" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+-  if test "x$ac_pt_PKGCONFIG" = x; then
+-    PKGCONFIG=""
++  if test "x$ac_pt_PKG_CONFIG" = x; then
++    PKG_CONFIG=""
+   else
+     case $cross_compiling:$ac_tool_warned in
+ yes:)
+@@ -3663,10 +3663,10 @@ yes:)
+ $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ ac_tool_warned=yes ;;
+ esac
+-    PKGCONFIG=$ac_pt_PKGCONFIG
++    PKG_CONFIG=$ac_pt_PKG_CONFIG
+   fi
+ else
+-  PKGCONFIG="$ac_cv_path_PKGCONFIG"
++  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
+ fi
+ 
+ 
+@@ -6368,7 +6368,7 @@ fi
+ 	fi
+     fi
+ 
+-        if test $have_ssl = 0 -a "x$enable_gnutls" != "xno" -a "x$PKGCONFIG" != x; then
++        if test $have_ssl = 0 -a "x$enable_gnutls" != "xno" -a "x$PKG_CONFIG" != x; then
+     	if test -n "$ac_tool_prefix"; then
+   # Extract the first word of "${ac_tool_prefix}libgnutls-config", so it can be a program name with args.
+ set dummy ${ac_tool_prefix}libgnutls-config; ac_word=$2
+@@ -6467,10 +6467,10 @@ else
+   LIBGNUTLSCONFIG="$ac_cv_path_LIBGNUTLSCONFIG"
+ fi
+ 
+-	if $PKGCONFIG --exists gnutls; then
++	if $PKG_CONFIG --exists gnutls; then
+ 	    have_ssl=1
+-	    SSLLIBS=`$PKGCONFIG --libs gnutls`
+-	    SSLFLAGS=`$PKGCONFIG --cflags gnutls`
++	    SSLLIBS=`$PKG_CONFIG --libs gnutls`
++	    SSLFLAGS=`$PKG_CONFIG --cflags gnutls`
+ 	    $as_echo "#define HAVE_SSL 1" >>confdefs.h
+ 
+ 	    $as_echo "#define HAVE_GNUTLS 1" >>confdefs.h
+@@ -6821,14 +6821,14 @@ IPPFIND_BIN=""
+ IPPFIND_HTML=""
+ IPPFIND_MAN=""
+ 
+-if test "x$PKGCONFIG" != x -a x$enable_avahi != xno -a x$host_os_name != xdarwin; then
++if test "x$PKG_CONFIG" != x -a x$enable_avahi != xno -a x$host_os_name != xdarwin; then
+ 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Avahi" >&5
+ $as_echo_n "checking for Avahi... " >&6; }
+-	if $PKGCONFIG --exists avahi-client; then
++	if $PKG_CONFIG --exists avahi-client; then
+ 		{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+-		CFLAGS="$CFLAGS `$PKGCONFIG --cflags avahi-client`"
+-		DNSSDLIBS="`$PKGCONFIG --libs avahi-client`"
++		CFLAGS="$CFLAGS `$PKG_CONFIG --cflags avahi-client`"
++		DNSSDLIBS="`$PKG_CONFIG --libs avahi-client`"
+ 		IPPFIND_BIN="ippfind"
+ 		IPPFIND_HTML="ippfind.html"
+ 		IPPFIND_MAN="ippfind.1"
+-- 
+2.31.0.rc2.261.g7f71774620-goog
+
diff --git a/net-print/ippsample/ippsample-1.0.0-r1.ebuild b/net-print/ippsample/ippsample-1.0.0-r1.ebuild
new file mode 120000
index 0000000..ec3f550
--- /dev/null
+++ b/net-print/ippsample/ippsample-1.0.0-r1.ebuild
@@ -0,0 +1 @@
+ippsample-1.0.0.ebuild
\ No newline at end of file
diff --git a/net-print/ippsample/ippsample-1.0.0.ebuild b/net-print/ippsample/ippsample-1.0.0.ebuild
new file mode 100644
index 0000000..de3c40e
--- /dev/null
+++ b/net-print/ippsample/ippsample-1.0.0.ebuild
@@ -0,0 +1,58 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="ippsample print testing utility"
+HOMEPAGE="https://github.com/istopwg/ippsample/blob/master/README.md"
+
+LICENSE="Apache-2.0"
+
+GIT_SHA1="ecfd14a4b6198a360e2b2ff48acc95ddde501019"
+SRC_URI="https://github.com/istopwg/ippsample/archive/${GIT_SHA1}.zip -> ${P}.zip"
+
+SLOT="0"
+IUSE="+ssl"
+KEYWORDS="*"
+
+CDEPEND="
+	ssl? (
+		>=dev-libs/libgcrypt-1.5.3:=
+		>=net-libs/gnutls-3.6.14:=
+	)
+"
+
+DEPEND="${CDEPEND}"
+
+RDEPEND="${CDEPEND}"
+
+PATCHES=(
+	"${FILESDIR}/ippsample-1.0.0-do-not-force-local-BinDir-directory.patch"
+	"${FILESDIR}/ippsample-1.0.0-use-PKG_CONFIG.patch"
+)
+
+S="${WORKDIR}/${PN}-${GIT_SHA1}"
+
+src_configure() {
+	tc-export PKG_CONFIG
+
+	local myeconfargs=(
+		--enable-gnutls \
+		--includedir=/usr/local/include
+	)
+	econf "${myeconfargs[@]}"
+}
+
+src_install() {
+	default
+
+	# Install ippserver test prerequisites
+	insinto /usr/local/share/ippsample
+	doins -r "${S}"/test
+}
+
+src_test() {
+	emake check
+}
diff --git a/net-print/ippsample/metadata.xml b/net-print/ippsample/metadata.xml
new file mode 100644
index 0000000..c740bc2
--- /dev/null
+++ b/net-print/ippsample/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+  <maintainer type="project">
+  <email>cros-printing-dev@chromium.org</email>
+  <name>ChromeOS Platform Printing Team</name>
+  </maintainer>
+  <use>
+  <flag name="ssl">
+     Add support for encrypted client/server communication.
+  </flag>
+  </use>
+</pkgmetadata>
diff --git a/net-vpn/openvpn/OWNERS b/net-vpn/openvpn/OWNERS
index 1c6cf5c..b830d86 100644
--- a/net-vpn/openvpn/OWNERS
+++ b/net-vpn/openvpn/OWNERS
@@ -1 +1 @@
-taoyl@chromium.org
+include chromiumos/platform2:/patchpanel/OWNERS
diff --git a/net-vpn/strongswan/OWNERS b/net-vpn/strongswan/OWNERS
index 1c6cf5c..b830d86 100644
--- a/net-vpn/strongswan/OWNERS
+++ b/net-vpn/strongswan/OWNERS
@@ -1 +1 @@
-taoyl@chromium.org
+include chromiumos/platform2:/patchpanel/OWNERS
diff --git a/net-vpn/strongswan/strongswan-5.7.2-r2.ebuild b/net-vpn/strongswan/strongswan-5.7.2-r3.ebuild
similarity index 100%
rename from net-vpn/strongswan/strongswan-5.7.2-r2.ebuild
rename to net-vpn/strongswan/strongswan-5.7.2-r3.ebuild
diff --git a/net-vpn/strongswan/strongswan-5.7.2.ebuild b/net-vpn/strongswan/strongswan-5.7.2.ebuild
index f06ff8f..31422f9 100644
--- a/net-vpn/strongswan/strongswan-5.7.2.ebuild
+++ b/net-vpn/strongswan/strongswan-5.7.2.ebuild
@@ -45,7 +45,7 @@
 	!net-vpn/libreswan
 	selinux? ( sec-policy/selinux-ipsec )"
 
-UGID="ipsec"
+UGID="vpn"
 
 pkg_setup() {
 	linux-info_pkg_setup
diff --git a/net-wireless/ath3k/ath3k-1-r4.ebuild b/net-wireless/ath3k/ath3k-1-r4.ebuild
deleted file mode 100644
index 1676c04..0000000
--- a/net-wireless/ath3k/ath3k-1-r4.ebuild
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="4"
-CROS_WORKON_COMMIT="0c04859d8d41e007399cecd2cb33fe0ccd756ba8"
-CROS_WORKON_TREE="50e0e93725a1202cb402f054fa71d7267c3f1107"
-CROS_WORKON_PROJECT="chromiumos/third_party/atheros"
-CROS_WORKON_LOCALNAME="atheros"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-
-inherit cros-workon
-
-DESCRIPTION="Atheros AR3012 firmware"
-HOMEPAGE="http://www.atheros.com/"
-
-LICENSE="Atheros"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RESTRICT="binchecks"
-
-src_install() {
-	insinto /lib/firmware/ar3k
-	doins ath3k/files/firmware/ar3k/*.dfu
-}
diff --git a/net-wireless/ath3k/ath3k-9999.ebuild b/net-wireless/ath3k/ath3k-9999.ebuild
deleted file mode 100644
index d3aa672..0000000
--- a/net-wireless/ath3k/ath3k-9999.ebuild
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="4"
-CROS_WORKON_PROJECT="chromiumos/third_party/atheros"
-CROS_WORKON_LOCALNAME="atheros"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-
-inherit cros-workon
-
-DESCRIPTION="Atheros AR3012 firmware"
-HOMEPAGE="http://www.atheros.com/"
-
-LICENSE="Atheros"
-SLOT="0"
-KEYWORDS="~*"
-IUSE=""
-
-RESTRICT="binchecks"
-
-src_install() {
-	insinto /lib/firmware/ar3k
-	doins ath3k/files/firmware/ar3k/*.dfu
-}
diff --git a/net-wireless/bluez/bluez-5.54-r505.ebuild b/net-wireless/bluez/bluez-5.54-r505.ebuild
deleted file mode 100644
index fe84261..0000000
--- a/net-wireless/bluez/bluez-5.54-r505.ebuild
+++ /dev/null
@@ -1,174 +0,0 @@
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/net-wireless/bluez/bluez-4.99.ebuild,v 1.7 2012/04/15 16:53:41 maekke Exp $
-
-EAPI="7"
-# To support choosing between current and next versions, two cros-workon
-# projects are declared. During emerge, both project sources are copied to
-# their respective destination directories, and one is chosen as the
-# "working directory" in src_unpack() below based on bluez-next USE flag.
-CROS_WORKON_COMMIT=("f9cbfd84e5133860405df59ea73ac7df57ef0ef0" "f9cbfd84e5133860405df59ea73ac7df57ef0ef0" "39054d59c0ecdb102f8aa352cb7aa6fcbd7f2b6b")
-CROS_WORKON_TREE=("5453e3acdb5ecf1e4db9a9ae5ce6fd3d5fb7940a" "5453e3acdb5ecf1e4db9a9ae5ce6fd3d5fb7940a" "6fd5d8ac2220b7e8e188c956b786ba71d1658453")
-CROS_WORKON_LOCALNAME=("bluez/current" "bluez/next" "bluez/upstream")
-CROS_WORKON_PROJECT=("chromiumos/third_party/bluez" "chromiumos/third_party/bluez" "chromiumos/third_party/bluez")
-CROS_WORKON_OPTIONAL_CHECKOUT=(
-	"use !bluez-next && use !bluez-upstream"
-	"use bluez-next"
-	"use bluez-upstream"
-)
-CROS_WORKON_DESTDIR=("${S}/bluez/current" "${S}/bluez/next" "${S}/bluez/upstream")
-CROS_WORKON_EGIT_BRANCH=("chromeos-5.54" "chromeos-5.54" "upstream/master")
-
-inherit autotools multilib eutils systemd udev user libchrome cros-sanitizers cros-workon flag-o-matic
-
-DESCRIPTION="Bluetooth Tools and System Daemons for Linux"
-HOMEPAGE="http://www.bluez.org/"
-#SRC_URI not defined because we get our source locally
-
-LICENSE="GPL-2 LGPL-2.1"
-KEYWORDS="*"
-IUSE="asan bluez-next bluez-upstream cups debug systemd readline bt_deprecated_tools"
-REQUIRED_USE="?? ( bluez-next bluez-upstream )"
-
-CDEPEND="
-	>=dev-libs/glib-2.14:2=
-	app-arch/bzip2:=
-	sys-apps/dbus:=
-	virtual/libudev:=
-	cups? ( net-print/cups:= )
-	readline? ( sys-libs/readline:= )
-	>=chromeos-base/metrics-0.0.1-r3152:=
-"
-DEPEND="${CDEPEND}"
-
-RDEPEND="${CDEPEND}
-	!net-wireless/bluez-hcidump
-	!net-wireless/bluez-libs
-	!net-wireless/bluez-test
-	!net-wireless/bluez-utils
-"
-BDEPEND="${CDEPEND}
-	dev-util/pkgconfig:=
-	sys-devel/flex:=
-"
-
-DOCS=( AUTHORS ChangeLog README )
-
-src_unpack() {
-	cros-workon_src_unpack
-
-	# Setting S has the effect of changing the temporary build directory
-	# here onwards. Choose "bluez/next" or "bluez/current" subdir depending on
-	# the USE flag.
-	local checkout="bluez/$(usex bluez-next next $(usex bluez-upstream upstream current))"
-	S+="/${checkout}"
-	local version="$("${FILESDIR}"/chromeos-version.sh "${S}")"
-	einfo "Using checkout ${checkout} (version ${version})"
-}
-
-src_prepare() {
-	default
-
-	eautoreconf
-
-	if use cups; then
-		sed -i \
-			-e "s:cupsdir = \$(libdir)/cups:cupsdir = $(cups-config --serverbin):" \
-			Makefile.tools Makefile.in || die
-	fi
-}
-
-src_configure() {
-	sanitizers-setup-env
-	# Workaround a global-buffer-overflow warning in asan build.
-	# See crbug.com/748216 for details.
-	if use asan; then
-		append-flags '-mllvm -asan-globals=0'
-	fi
-
-	use readline || export ac_cv_header_readline_readline_h=no
-
-	export BASE_VER="$(libchrome_ver)"
-	econf \
-		--enable-tools \
-		--localstatedir=/var \
-		$(use_enable cups) \
-		--enable-datafiles \
-		$(use_enable debug) \
-		--disable-test \
-		--enable-library \
-		--disable-systemd \
-		--disable-obex \
-		--enable-sixaxis \
-		--disable-network \
-		--disable-datafiles \
-		$(use_enable bt_deprecated_tools deprecated)
-}
-
-src_test() {
-	# TODO(armansito): Run unit tests for non-x86 platforms.
-	[[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] && \
-		emake check VERBOSE=1
-}
-
-src_install() {
-	default
-
-	dobin tools/btmgmt tools/btgatt-client tools/btgatt-server
-
-	# Install scripts
-	dobin "${FILESDIR}/dbus_send_blutooth_class.awk"
-	dobin "${FILESDIR}/get_bluetooth_device_class.sh"
-	dobin "${FILESDIR}/start_bluetoothd.sh"
-	dobin "${FILESDIR}/start_bluetoothlog.sh"
-
-	# Install init scripts.
-	if use systemd; then
-		systemd_dounit "${FILESDIR}/bluetoothd.service"
-		systemd_enable_service system-services.target bluetoothd.service
-		systemd_dotmpfilesd "${FILESDIR}/bluetoothd-directories.conf"
-	else
-		insinto /etc/init
-		newins "${FILESDIR}/${PN}-upstart.conf" bluetoothd.conf
-		newins "${FILESDIR}/bluetoothlog-upstart.conf" bluetoothlog.conf
-	fi
-
-	# Install D-Bus config
-	insinto /etc/dbus-1/system.d
-	doins "${FILESDIR}/org.bluez.conf"
-
-	# Install udev files
-	udev_dorules "${FILESDIR}/99-uhid.rules"
-	udev_dorules "${FILESDIR}/99-ps3-gamepad.rules"
-	udev_dorules "${FILESDIR}/99-bluetooth-quirks.rules"
-
-	# Install the config files.
-	insinto "/etc/bluetooth"
-	doins "${FILESDIR}/main.conf"
-	doins "${FILESDIR}/input.conf"
-
-	# We don't preserve /var/lib in images, so nuke anything we preseed.
-	rm -rf "${D}"/var/lib/bluetooth
-
-	rm "${D}/lib/udev/rules.d/97-bluetooth.rules"
-
-	find "${D}" -name "*.la" -delete
-}
-
-pkg_postinst() {
-	enewuser "bluetooth" "218"
-	enewgroup "bluetooth" "218"
-
-	udev_reload
-
-	if ! has_version "net-dialup/ppp"; then
-		elog "To use dial up networking you must install net-dialup/ppp."
-	fi
-
-	if [ "$(rc-config list default | grep bluetooth)" = "" ] ; then
-		elog "You will need to add bluetooth service to default runlevel"
-		elog "for getting your devices detected from startup without needing"
-		elog "to reconnect them. For that please run:"
-		elog "'rc-update add bluetooth default'"
-	fi
-}
diff --git a/net-wireless/bluez/bluez-5.54-r597.ebuild b/net-wireless/bluez/bluez-5.54-r597.ebuild
new file mode 100644
index 0000000..ef087d6
--- /dev/null
+++ b/net-wireless/bluez/bluez-5.54-r597.ebuild
@@ -0,0 +1,176 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-wireless/bluez/bluez-4.99.ebuild,v 1.7 2012/04/15 16:53:41 maekke Exp $
+
+EAPI="7"
+# To support choosing between current and next versions, two cros-workon
+# projects are declared. During emerge, both project sources are copied to
+# their respective destination directories, and one is chosen as the
+# "working directory" in src_unpack() below based on bluez-next USE flag.
+CROS_WORKON_COMMIT=("b61c0155e4f07a20838566177dc863ec5aae91d0" "b61c0155e4f07a20838566177dc863ec5aae91d0" "352cee4717fb031edb55ecf98e03a599c4439ddd")
+CROS_WORKON_TREE=("f6a13bc35a4fee801b0556bde9b43556aa7b6fce" "f6a13bc35a4fee801b0556bde9b43556aa7b6fce" "222eadaf67220ca68aa38117b584ffa2075edf43")
+CROS_WORKON_LOCALNAME=("bluez/current" "bluez/next" "bluez/upstream")
+CROS_WORKON_PROJECT=("chromiumos/third_party/bluez" "chromiumos/third_party/bluez" "chromiumos/third_party/bluez")
+CROS_WORKON_OPTIONAL_CHECKOUT=(
+	"use !bluez-next && use !bluez-upstream"
+	"use bluez-next"
+	"use bluez-upstream"
+)
+CROS_WORKON_DESTDIR=("${S}/bluez/current" "${S}/bluez/next" "${S}/bluez/upstream")
+CROS_WORKON_EGIT_BRANCH=("chromeos-5.54" "chromeos-5.54" "upstream/master")
+
+inherit autotools multilib eutils systemd udev user libchrome cros-fuzzer cros-sanitizers cros-workon flag-o-matic tmpfiles
+
+DESCRIPTION="Bluetooth Tools and System Daemons for Linux"
+HOMEPAGE="http://www.bluez.org/"
+#SRC_URI not defined because we get our source locally
+
+LICENSE="GPL-2 LGPL-2.1"
+KEYWORDS="*"
+IUSE="asan bluez-next bluez-upstream cups debug fuzzer hid2hci systemd readline bt_deprecated_tools"
+REQUIRED_USE="?? ( bluez-next bluez-upstream )"
+
+CDEPEND="
+	>=dev-libs/glib-2.14:2=
+	app-arch/bzip2:=
+	sys-apps/dbus:=
+	virtual/libudev:=
+	cups? ( net-print/cups:= )
+	readline? ( sys-libs/readline:= )
+	>=chromeos-base/metrics-0.0.1-r3152:=
+"
+DEPEND="${CDEPEND}"
+
+RDEPEND="${CDEPEND}
+	!net-wireless/bluez-hcidump
+	!net-wireless/bluez-libs
+	!net-wireless/bluez-test
+	!net-wireless/bluez-utils
+"
+BDEPEND="${CDEPEND}
+	dev-util/pkgconfig:=
+	sys-devel/flex:=
+"
+
+PATCHES=(
+	"${FILESDIR}"/bluez-hid2hci.patch
+)
+
+DOCS=( AUTHORS ChangeLog README )
+
+src_unpack() {
+	cros-workon_src_unpack
+
+	# Setting S has the effect of changing the temporary build directory
+	# here onwards. Choose "bluez/next" or "bluez/current" subdir depending on
+	# the USE flag.
+	local checkout="bluez/$(usex bluez-next next $(usex bluez-upstream upstream current))"
+	S+="/${checkout}"
+	local version="$("${FILESDIR}"/chromeos-version.sh "${S}")"
+	einfo "Using checkout ${checkout} (version ${version})"
+}
+
+src_prepare() {
+	default
+
+	eautoreconf
+
+	if use cups; then
+		sed -i \
+			-e "s:cupsdir = \$(libdir)/cups:cupsdir = $(cups-config --serverbin):" \
+			Makefile.tools Makefile.in || die
+	fi
+}
+
+src_configure() {
+	sanitizers-setup-env
+	# Workaround a global-buffer-overflow warning in asan build.
+	# See crbug.com/748216 for details.
+	if use asan; then
+		append-flags '-mllvm -asan-globals=0'
+	fi
+
+	use readline || export ac_cv_header_readline_readline_h=no
+
+	export BASE_VER="$(libchrome_ver)"
+	econf \
+		--enable-tools \
+		--localstatedir=/var \
+		$(use_enable cups) \
+		--enable-datafiles \
+		$(use_enable debug) \
+		--disable-test \
+		--enable-library \
+		--disable-systemd \
+		--disable-obex \
+		--enable-sixaxis \
+		--disable-network \
+		--disable-datafiles \
+		$(use_enable fuzzer) \
+		$(use_enable hid2hci) \
+		$(use_enable bt_deprecated_tools deprecated)
+}
+
+src_test() {
+	# TODO(armansito): Run unit tests for non-x86 platforms.
+	[[ "${ARCH}" == "x86" || "${ARCH}" == "amd64" ]] && \
+		emake check VERBOSE=1
+}
+
+src_install() {
+	default
+
+	dobin tools/btmgmt tools/btgatt-client tools/btgatt-server
+
+	# Install scripts
+	dobin "${FILESDIR}/dbus_send_blutooth_class.awk"
+	dobin "${FILESDIR}/get_bluetooth_device_class.sh"
+	dobin "${FILESDIR}/start_bluetoothd.sh"
+	dobin "${FILESDIR}/start_bluetoothlog.sh"
+
+	# Install init scripts.
+	if use systemd; then
+		systemd_dounit "${FILESDIR}/bluetoothd.service"
+		systemd_enable_service system-services.target bluetoothd.service
+		systemd_dotmpfilesd "${FILESDIR}/bluetoothd-directories.conf"
+	else
+		insinto /etc/init
+		newins "${FILESDIR}/${PN}-upstart.conf" bluetoothd.conf
+		newins "${FILESDIR}/bluetoothlog-upstart.conf" bluetoothlog.conf
+	fi
+
+	# Install tmpfiles.d config
+	dotmpfiles "${FILESDIR}/bluetoothlog-directories.conf"
+
+	# Install D-Bus config
+	insinto /etc/dbus-1/system.d
+	doins "${FILESDIR}/org.bluez.conf"
+
+	# Install udev files
+	udev_dorules "${FILESDIR}/99-uhid.rules"
+	udev_dorules "${FILESDIR}/99-ps3-gamepad.rules"
+	udev_dorules "${FILESDIR}/99-bluetooth-quirks.rules"
+
+	# Install the config files.
+	insinto "/etc/bluetooth"
+	doins "${FILESDIR}/main.conf"
+	doins "${FILESDIR}/input.conf"
+
+	# Install the fuzzer binaries.
+	fuzzer_install "${S}/fuzzer/OWNERS" fuzzer/bluez_pattern_match_fuzzer
+	fuzzer_install "${S}/fuzzer/OWNERS" fuzzer/bluez_pattern_new_fuzzer
+
+	# We don't preserve /var/lib in images, so nuke anything we preseed.
+	rm -rf "${D}"/var/lib/bluetooth
+
+	rm "${D}/lib/udev/rules.d/97-bluetooth.rules"
+
+	find "${D}" -name "*.la" -delete
+}
+
+pkg_postinst() {
+	enewuser "bluetooth" "218"
+	enewgroup "bluetooth" "218"
+
+	udev_reload
+}
diff --git a/net-wireless/bluez/bluez-9999.ebuild b/net-wireless/bluez/bluez-9999.ebuild
index e909558..328fde2 100644
--- a/net-wireless/bluez/bluez-9999.ebuild
+++ b/net-wireless/bluez/bluez-9999.ebuild
@@ -17,7 +17,7 @@
 CROS_WORKON_DESTDIR=("${S}/bluez/current" "${S}/bluez/next" "${S}/bluez/upstream")
 CROS_WORKON_EGIT_BRANCH=("chromeos-5.54" "chromeos-5.54" "upstream/master")
 
-inherit autotools multilib eutils systemd udev user libchrome cros-sanitizers cros-workon flag-o-matic
+inherit autotools multilib eutils systemd udev user libchrome cros-fuzzer cros-sanitizers cros-workon flag-o-matic tmpfiles
 
 DESCRIPTION="Bluetooth Tools and System Daemons for Linux"
 HOMEPAGE="http://www.bluez.org/"
@@ -25,7 +25,7 @@
 
 LICENSE="GPL-2 LGPL-2.1"
 KEYWORDS="~*"
-IUSE="asan bluez-next bluez-upstream cups debug systemd readline bt_deprecated_tools"
+IUSE="asan bluez-next bluez-upstream cups debug fuzzer hid2hci systemd readline bt_deprecated_tools"
 REQUIRED_USE="?? ( bluez-next bluez-upstream )"
 
 CDEPEND="
@@ -50,6 +50,10 @@
 	sys-devel/flex:=
 "
 
+PATCHES=(
+	"${FILESDIR}"/bluez-hid2hci.patch
+)
+
 DOCS=( AUTHORS ChangeLog README )
 
 src_unpack() {
@@ -100,6 +104,8 @@
 		--enable-sixaxis \
 		--disable-network \
 		--disable-datafiles \
+		$(use_enable fuzzer) \
+		$(use_enable hid2hci) \
 		$(use_enable bt_deprecated_tools deprecated)
 }
 
@@ -131,6 +137,9 @@
 		newins "${FILESDIR}/bluetoothlog-upstart.conf" bluetoothlog.conf
 	fi
 
+	# Install tmpfiles.d config
+	dotmpfiles "${FILESDIR}/bluetoothlog-directories.conf"
+
 	# Install D-Bus config
 	insinto /etc/dbus-1/system.d
 	doins "${FILESDIR}/org.bluez.conf"
@@ -145,6 +154,10 @@
 	doins "${FILESDIR}/main.conf"
 	doins "${FILESDIR}/input.conf"
 
+	# Install the fuzzer binaries.
+	fuzzer_install "${S}/fuzzer/OWNERS" fuzzer/bluez_pattern_match_fuzzer
+	fuzzer_install "${S}/fuzzer/OWNERS" fuzzer/bluez_pattern_new_fuzzer
+
 	# We don't preserve /var/lib in images, so nuke anything we preseed.
 	rm -rf "${D}"/var/lib/bluetooth
 
@@ -158,15 +171,4 @@
 	enewgroup "bluetooth" "218"
 
 	udev_reload
-
-	if ! has_version "net-dialup/ppp"; then
-		elog "To use dial up networking you must install net-dialup/ppp."
-	fi
-
-	if [ "$(rc-config list default | grep bluetooth)" = "" ] ; then
-		elog "You will need to add bluetooth service to default runlevel"
-		elog "for getting your devices detected from startup without needing"
-		elog "to reconnect them. For that please run:"
-		elog "'rc-update add bluetooth default'"
-	fi
 }
diff --git a/net-wireless/bluez/files/bluetoothlog-directories.conf b/net-wireless/bluez/files/bluetoothlog-directories.conf
new file mode 100644
index 0000000..e4560a8
--- /dev/null
+++ b/net-wireless/bluez/files/bluetoothlog-directories.conf
@@ -0,0 +1,10 @@
+# Copyright 2021 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.
+
+# This is a tmpfiles.d conf to manipulate Bluetooth temporary files.
+
+# Type  Path  Mode  User  Group  Age  Arguments
+
+# Remove the following directory only at boot.
+R! /var/log/bluetooth
diff --git a/net-wireless/bluez/files/bluetoothlog-upstart.conf b/net-wireless/bluez/files/bluetoothlog-upstart.conf
index 720aea7..41c1d0c3 100644
--- a/net-wireless/bluez/files/bluetoothlog-upstart.conf
+++ b/net-wireless/bluez/files/bluetoothlog-upstart.conf
@@ -24,3 +24,7 @@
 end script
 
 exec /usr/bin/start_bluetoothlog.sh
+
+post-stop script
+  rm -rf "${BLUETOOTH_LOGDIR}"
+end script
diff --git a/net-wireless/bluez/files/bluez-hid2hci.patch b/net-wireless/bluez/files/bluez-hid2hci.patch
new file mode 100644
index 0000000..c9a2a9f
--- /dev/null
+++ b/net-wireless/bluez/files/bluez-hid2hci.patch
@@ -0,0 +1,14 @@
+--- a/tools/hid2hci.rules
++++ b/tools/hid2hci.rules
+@@ -16,12 +16,6 @@ KERNEL=="hiddev*", ATTRS{idVendor}=="046d", ATTRS{idProduct}=="c70[345abce]|c71[
+ 
+ ENV{DEVTYPE}!="usb_device", GOTO="hid2hci_end"
+ 
+-# When a Dell device recovers from S3, the mouse child needs to be repoked
+-# Unfortunately the only event seen is the BT device disappearing, so the mouse
+-# device needs to be chased down on the USB bus.
+-ATTR{bDeviceClass}=="e0", ATTR{bDeviceSubClass}=="01", ATTR{bDeviceProtocol}=="01", ATTR{idVendor}=="413c", \
+-  ENV{REMOVE_CMD}="/sbin/udevadm trigger --action=change --subsystem-match=usb --property-match=HID2HCI_SWITCH=1"
+-
+ # CSR devices
+ ATTR{idVendor}=="0a12|0458|05ac", ATTR{idProduct}=="1000", RUN+="hid2hci --method=csr --devpath=%p"
diff --git a/net-wireless/bluez/files/bluez-upstart.conf b/net-wireless/bluez/files/bluez-upstart.conf
index d609c0a..43a015f 100644
--- a/net-wireless/bluez/files/bluez-upstart.conf
+++ b/net-wireless/bluez/files/bluez-upstart.conf
@@ -12,10 +12,22 @@
 
 env BLUETOOTH_LIBDIR=/var/lib/bluetooth
 env BLUETOOTH_DAEMON_OPTION=""
+env BLUETOOTH_WANT_FILE=/var/lib/misc/bluetooth-daemon.current
 
 pre-start script
   mkdir -p -m 0750 ${BLUETOOTH_LIBDIR}
   chown -R bluetooth:bluetooth ${BLUETOOTH_LIBDIR}
+
+  # Make sure file exists before accessing it
+  mkdir -p "$(dirname $BLUETOOTH_WANT_FILE)"
+  touch "$BLUETOOTH_WANT_FILE"
+
+  # Check if we want to start bluez. If "floss" is wanted instead, exit early
+  # without starting bluez.
+  want_daemon="$(cat $BLUETOOTH_WANT_FILE)"
+  if [ "$want_daemon" = "floss" ]; then
+    exit 1
+  fi
 end script
 
 respawn
diff --git a/net-wireless/bluez/files/main.conf b/net-wireless/bluez/files/main.conf
index 70a2cc9..f80f7ee 100644
--- a/net-wireless/bluez/files/main.conf
+++ b/net-wireless/bluez/files/main.conf
@@ -97,7 +97,7 @@
 # profile is connected. Defaults to true.
 #RefreshDiscovery = true
 
-[BREDR]
+[BR]
 # The following values are used to load default adapter parameters for BR/EDR.
 # BlueZ loads the values into the kernel before the adapter is powered if the
 # kernel supports the MGMT_LOAD_DEFAULT_PARAMETERS command. If a value isn't
@@ -188,8 +188,8 @@
 # Enable/Disable Advertisement Monitor interleave scan for power saving.
 # 0: disable
 # 1: enable
-# Defaults to 1
-#EnableAdvMonInterleaveScan=
+# Defaults to 0
+EnableAdvMonInterleaveScan=1
 
 [GATT]
 # GATT attribute cache.
@@ -229,15 +229,21 @@
 
 # ReconnectAttempts define the number of attempts to reconnect after a link
 # lost. Setting the value to 0 disables reconnecting feature.
-#ReconnectAttempts=7
+ReconnectAttempts=3
 
 # ReconnectIntervals define the set of intervals in seconds to use in between
 # attempts.
 # If the number of attempts defined in ReconnectAttempts is bigger than the
 # set of intervals the last interval is repeated until the last attempt.
-#ReconnectIntervals=1,2,4,8,16,32,64
+ReconnectIntervals=5,10,20
 
 # AutoEnable defines option to enable all controllers when they are found.
 # This includes adapters present on start as well as adapters that are plugged
 # in later on. Defaults to 'false'.
 #AutoEnable=false
+
+[AdvMon]
+# Default RSSI Sampling Period. This is used when a client registers an
+# advertisement monitor and leaves the RSSISamplingPeriod unset.
+# Default: 0
+RSSISamplingPeriod=5
diff --git a/net-wireless/bluez/files/start_bluetoothlog.sh b/net-wireless/bluez/files/start_bluetoothlog.sh
index 16181fe..fb10283 100644
--- a/net-wireless/bluez/files/start_bluetoothlog.sh
+++ b/net-wireless/bluez/files/start_bluetoothlog.sh
@@ -9,4 +9,4 @@
 exec /sbin/minijail0 -u bluetooth -g bluetooth -Nniplrvdt --uts -c2000 \
   --profile=minimalistic-mountns \
   -k tmpfs,/var,tmpfs,0xe -b /var/log/bluetooth,,1 \
-  -- /usr/bin/btmon -Sc0f -w /var/log/bluetooth/log.bz2 -l "${log_size_limit}"
+  -- /usr/bin/btmon --compress -S0f -w /var/log/bluetooth/log.bz2 -l "${log_size_limit}"
diff --git a/net-wireless/crda/crda-3.18-r5.ebuild b/net-wireless/crda/crda-3.18-r6.ebuild
similarity index 100%
rename from net-wireless/crda/crda-3.18-r5.ebuild
rename to net-wireless/crda/crda-3.18-r6.ebuild
diff --git a/net-wireless/hostap-test/hostap-test-0.0.1-r25.ebuild b/net-wireless/hostap-test/hostap-test-0.0.1-r25.ebuild
deleted file mode 100644
index d0a9c26..0000000
--- a/net-wireless/hostap-test/hostap-test-0.0.1-r25.ebuild
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright 2019 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.
-
-EAPI="7"
-CROS_WORKON_COMMIT="b33e9035721e89c5c8dd153b7353202e4544ba62"
-CROS_WORKON_TREE="6d582cf0466d6c65df648fffaf3dc947511ac537"
-CROS_WORKON_PROJECT="chromiumos/third_party/hostap"
-CROS_WORKON_LOCALNAME="../third_party/wpa_supplicant-2.9"
-
-PYTHON_COMPAT=( python3_{6,7} )
-
-inherit cros-sanitizers cros-workon distutils-r1 toolchain-funcs
-
-DESCRIPTION="Test package for the hostap project, intended for a VM"
-HOMEPAGE="https://w1.fi"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="*"
-IUSE="dbus"
-
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-DEPEND="
-	dev-libs/libnl:3=
-	dev-libs/openssl:0=
-	net-libs/libpcap:=
-"
-
-# pygobject with python3 support requires recent versions (e.g., 3.28.3 --
-# http://crrev.com/c/1869550), but recent versions are more difficult to
-# cross-compile (gobject-introspection, in particular). Leave this behind an
-# optional 'dbus' USE flag for now. Hwsim tests will skip D-Bus tests if
-# libraries aren't available.
-RDEPEND="${DEPEND}
-	${PYTHON_DEPS}
-	dbus? (
-		dev-python/dbus-python[${PYTHON_USEDEP}]
-		dev-python/pygobject[${PYTHON_USEDEP}]
-		sys-apps/dbus
-	)
-	dev-python/pycryptodome[${PYTHON_USEDEP}]
-	dev-python/pyrad[${PYTHON_USEDEP}]
-	net-analyzer/wireshark
-
-	net-wireless/crda
-"
-
-src_unpack() {
-	cros-workon_src_unpack
-}
-
-src_configure() {
-	sanitizers-setup-env
-	# Toolchain setup
-	tc-export CC
-
-	cp tests/hwsim/example-wpa_supplicant.config wpa_supplicant/.config || die
-	cp tests/hwsim/example-hostapd.config hostapd/.config || die
-
-	# Disable WPA_TRACE_BFD, and kill any hard-coded /usr/include paths.
-	# TODO(https://crbug.com/1013471): re-enable BFD to run additional
-	# trace-based tests.
-	sed -i \
-		-e '/^CONFIG_WPA_TRACE_BFD=/d' \
-		-e '/^CFLAGS .*\/usr\/include/d' \
-		wpa_supplicant/.config \
-		hostapd/.config || die
-}
-
-# Clean in-between builds, because common code may be built with different
-# configs. See also tests/hwsim/build.sh.
-src_compile() {
-	einfo "Building wlantest"
-	emake -C wlantest V=1
-
-	einfo "Building hostapd"
-	emake -C hostapd clean
-	emake -C hostapd hostapd hostapd_cli hlr_auc_gw V=1
-
-	einfo "Building wpa_supplicant"
-	emake -C wpa_supplicant clean
-	emake -C wpa_supplicant V=1
-}
-
-src_install() {
-	local install_dir="/usr/libexec/hostap"
-	exeinto "${install_dir}"/wlantest
-	doexe wlantest/wlantest wlantest/wlantest_cli wlantest/test_vectors
-
-	dodir "${install_dir}"/tests
-	cp -pPR "${S}"/tests/hwsim "${D}/${install_dir}"/tests || die
-	cp -pPR "${S}"/wpaspy "${D}/${install_dir}" || die
-
-	exeinto "${install_dir}"/hostapd
-	local exe
-	for exe in hostapd hostapd_cli hlr_auc_gw; do
-		doexe "hostapd/${exe}"
-	done
-	exeinto "${install_dir}"/wpa_supplicant
-	for exe in wpa_supplicant wpa_cli; do
-		doexe "wpa_supplicant/${exe}"
-	done
-}
diff --git a/net-wireless/hostap-test/hostap-test-0.0.1-r37.ebuild b/net-wireless/hostap-test/hostap-test-0.0.1-r37.ebuild
new file mode 100644
index 0000000..637937a
--- /dev/null
+++ b/net-wireless/hostap-test/hostap-test-0.0.1-r37.ebuild
@@ -0,0 +1,106 @@
+# Copyright 2019 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.
+
+EAPI="7"
+CROS_WORKON_COMMIT="8ac12f2cec9b9c227e8719fca00d4d6c75cf7270"
+CROS_WORKON_TREE="76ef3707eefe49ae08b8c889ada1c4a987fbaa6e"
+CROS_WORKON_PROJECT="chromiumos/third_party/hostap"
+CROS_WORKON_LOCALNAME="../third_party/wpa_supplicant-2.9"
+
+PYTHON_COMPAT=( python3_{6,7} )
+
+inherit cros-sanitizers cros-workon distutils-r1 flag-o-matic toolchain-funcs
+
+DESCRIPTION="Test package for the hostap project, intended for a VM"
+HOMEPAGE="https://w1.fi"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="*"
+IUSE="dbus"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+DEPEND="
+	dev-libs/libnl:3=
+	dev-libs/openssl:0=
+	net-libs/libpcap:=
+"
+
+# pygobject with python3 support requires recent versions (e.g., 3.28.3 --
+# http://crrev.com/c/1869550), but recent versions are more difficult to
+# cross-compile (gobject-introspection, in particular). Leave this behind an
+# optional 'dbus' USE flag for now. Hwsim tests will skip D-Bus tests if
+# libraries aren't available.
+RDEPEND="${DEPEND}
+	${PYTHON_DEPS}
+	dbus? (
+		dev-python/dbus-python[${PYTHON_USEDEP}]
+		dev-python/pygobject[${PYTHON_USEDEP}]
+		sys-apps/dbus
+	)
+	dev-python/pycryptodome[${PYTHON_USEDEP}]
+	dev-python/pyrad[${PYTHON_USEDEP}]
+	net-analyzer/wireshark
+
+	net-wireless/crda
+"
+
+src_unpack() {
+	cros-workon_src_unpack
+}
+
+src_configure() {
+	sanitizers-setup-env
+	# Toolchain setup
+	append-flags -Werror
+	tc-export CC
+
+	cp tests/hwsim/example-wpa_supplicant.config wpa_supplicant/.config || die
+	cp tests/hwsim/example-hostapd.config hostapd/.config || die
+
+	# Disable WPA_TRACE_BFD, and kill any hard-coded /usr/include paths.
+	# TODO(https://crbug.com/1013471): re-enable BFD to run additional
+	# trace-based tests.
+	sed -i \
+		-e '/^CONFIG_WPA_TRACE_BFD=/d' \
+		-e '/^CFLAGS .*\/usr\/include/d' \
+		wpa_supplicant/.config \
+		hostapd/.config || die
+}
+
+# Clean in-between builds, because common code may be built with different
+# configs. See also tests/hwsim/build.sh.
+src_compile() {
+	einfo "Building wlantest"
+	emake -C wlantest V=1
+
+	einfo "Building hostapd"
+	emake -C hostapd clean
+	emake -C hostapd hostapd hostapd_cli hlr_auc_gw V=1
+
+	einfo "Building wpa_supplicant"
+	emake -C wpa_supplicant clean
+	emake -C wpa_supplicant V=1
+}
+
+src_install() {
+	local install_dir="/usr/libexec/hostap"
+	exeinto "${install_dir}"/wlantest
+	doexe wlantest/wlantest wlantest/wlantest_cli wlantest/test_vectors
+
+	dodir "${install_dir}"/tests
+	cp -pPR "${S}"/tests/hwsim "${D}/${install_dir}"/tests || die
+	cp -pPR "${S}"/wpaspy "${D}/${install_dir}" || die
+
+	exeinto "${install_dir}"/hostapd
+	local exe
+	for exe in hostapd hostapd_cli hlr_auc_gw; do
+		doexe "hostapd/${exe}"
+	done
+	exeinto "${install_dir}"/wpa_supplicant
+	for exe in wpa_supplicant wpa_cli; do
+		doexe "wpa_supplicant/${exe}"
+	done
+}
diff --git a/net-wireless/hostap-test/hostap-test-9999.ebuild b/net-wireless/hostap-test/hostap-test-9999.ebuild
index fb56bfb..f0bdfad 100644
--- a/net-wireless/hostap-test/hostap-test-9999.ebuild
+++ b/net-wireless/hostap-test/hostap-test-9999.ebuild
@@ -8,7 +8,7 @@
 
 PYTHON_COMPAT=( python3_{6,7} )
 
-inherit cros-sanitizers cros-workon distutils-r1 toolchain-funcs
+inherit cros-sanitizers cros-workon distutils-r1 flag-o-matic toolchain-funcs
 
 DESCRIPTION="Test package for the hostap project, intended for a VM"
 HOMEPAGE="https://w1.fi"
@@ -52,6 +52,7 @@
 src_configure() {
 	sanitizers-setup-env
 	# Toolchain setup
+	append-flags -Werror
 	tc-export CC
 
 	cp tests/hwsim/example-wpa_supplicant.config wpa_supplicant/.config || die
diff --git a/net-wireless/hostapd/hostapd-2.9-r147.ebuild b/net-wireless/hostapd/hostapd-2.9-r147.ebuild
deleted file mode 100644
index a01c645..0000000
--- a/net-wireless/hostapd/hostapd-2.9-r147.ebuild
+++ /dev/null
@@ -1,250 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-CROS_WORKON_COMMIT="b33e9035721e89c5c8dd153b7353202e4544ba62"
-CROS_WORKON_TREE="6d582cf0466d6c65df648fffaf3dc947511ac537"
-CROS_WORKON_PROJECT="chromiumos/third_party/hostap"
-CROS_WORKON_LOCALNAME="../third_party/wpa_supplicant-2.9"
-
-inherit cros-workon toolchain-funcs savedconfig
-
-DESCRIPTION="IEEE 802.11 wireless LAN Host AP daemon"
-HOMEPAGE="http://w1.fi"
-SRC_URI=""
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="*"
-IUSE="internal-tls ipv6 libressl logwatch netlink sqlite +suiteb +wps +crda"
-
-DEPEND="
-	libressl? ( dev-libs/libressl:0= )
-	!libressl? (
-		internal-tls? ( dev-libs/libtommath )
-		!internal-tls? ( dev-libs/openssl:0=[-bindist] )
-	)
-	kernel_linux? (
-		dev-libs/libnl:3
-		crda? ( net-wireless/crda )
-	)
-	netlink? ( net-libs/libnfnetlink )
-	sqlite? ( >=dev-db/sqlite-3 )"
-
-RDEPEND="${DEPEND}"
-
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/hostapd"
-}
-
-src_configure() {
-	if use internal-tls; then
-		if use libressl; then
-			elog "libressl flag takes precedence over internal-tls"
-		else
-			ewarn "internal-tls implementation is experimental and provides fewer features"
-		fi
-	fi
-
-	local CONFIG="${S}/.config"
-
-	restore_config "${CONFIG}"
-	if [[ -f "${CONFIG}" ]]; then
-		default_src_configure
-		return 0
-	fi
-
-	# toolchain setup
-	echo "CC = $(tc-getCC)" > ${CONFIG}
-
-	# EAP authentication methods
-	echo "CONFIG_EAP=y" >> ${CONFIG}
-	echo "CONFIG_ERP=y" >> ${CONFIG}
-	echo "CONFIG_EAP_MD5=y" >> ${CONFIG}
-	echo "CONFIG_SAE=y" >> ${CONFIG}
-	echo "CONFIG_OWE=y" >> ${CONFIG}
-	echo "CONFIG_DPP=y" >> ${CONFIG}
-
-	if use suiteb; then
-		echo "CONFIG_SUITEB=y" >> ${CONFIG}
-		echo "CONFIG_SUITEB192=y" >> ${CONFIG}
-	fi
-
-	if use internal-tls && ! use libressl; then
-		echo "CONFIG_TLS=internal" >> ${CONFIG}
-	else
-		# SSL authentication methods
-		echo "CONFIG_EAP_FAST=y" >> ${CONFIG}
-		echo "CONFIG_EAP_TLS=y" >> ${CONFIG}
-		echo "CONFIG_EAP_TTLS=y" >> ${CONFIG}
-		echo "CONFIG_EAP_MSCHAPV2=y" >> ${CONFIG}
-		echo "CONFIG_EAP_PEAP=y" >> ${CONFIG}
-		echo "CONFIG_TLSV11=y" >> ${CONFIG}
-		echo "CONFIG_TLSV12=y" >> ${CONFIG}
-		echo "CONFIG_EAP_PWD=y" >> ${CONFIG}
-	fi
-
-	if use wps; then
-		# Enable Wi-Fi Protected Setup
-		echo "CONFIG_WPS=y" >> ${CONFIG}
-		echo "CONFIG_WPS2=y" >> ${CONFIG}
-		echo "CONFIG_WPS_UPNP=y" >> ${CONFIG}
-		echo "CONFIG_WPS_NFC=y" >> ${CONFIG}
-		einfo "Enabling Wi-Fi Protected Setup support"
-	fi
-
-	echo "CONFIG_EAP_IKEV2=y" >> ${CONFIG}
-	echo "CONFIG_EAP_TNC=y" >> ${CONFIG}
-	echo "CONFIG_EAP_GTC=y" >> ${CONFIG}
-	echo "CONFIG_EAP_SIM=y" >> ${CONFIG}
-	echo "CONFIG_EAP_AKA=y" >> ${CONFIG}
-	echo "CONFIG_EAP_AKA_PRIME=y" >> ${CONFIG}
-	echo "CONFIG_EAP_EKE=y" >> ${CONFIG}
-	echo "CONFIG_EAP_FAST=y" >> ${CONFIG}
-	echo "CONFIG_EAP_PAX=y" >> ${CONFIG}
-	echo "CONFIG_EAP_PSK=y" >> ${CONFIG}
-	echo "CONFIG_EAP_SAKE=y" >> ${CONFIG}
-	echo "CONFIG_EAP_GPSK=y" >> ${CONFIG}
-	echo "CONFIG_EAP_GPSK_SHA256=y" >> ${CONFIG}
-	echo "CONFIG_EAP_UNAUTH_TLS=y" >> ${CONFIG}
-	echo "CONFIG_EAP_VENDOR_TEST=y" >> ${CONFIG}
-
-	einfo "Enabling drivers: "
-
-	# drivers
-	echo "CONFIG_DRIVER_HOSTAP=y" >> ${CONFIG}
-	einfo "  HostAP driver enabled"
-	echo "CONFIG_DRIVER_WIRED=y" >> ${CONFIG}
-	einfo "  Wired driver enabled"
-	echo "CONFIG_DRIVER_NONE=y" >> ${CONFIG}
-	einfo "  None driver enabled"
-
-	einfo "  nl80211 driver enabled"
-	echo "CONFIG_DRIVER_NL80211=y" >> ${CONFIG}
-
-	# epoll
-	echo "CONFIG_ELOOP_EPOLL=y" >> ${CONFIG}
-
-	# misc
-	echo "CONFIG_DEBUG_FILE=y" >> ${CONFIG}
-	echo "CONFIG_PKCS12=y" >> ${CONFIG}
-	echo "CONFIG_RADIUS_SERVER=y" >> ${CONFIG}
-	echo "CONFIG_IAPP=y" >> ${CONFIG}
-	echo "CONFIG_IEEE80211R=y" >> ${CONFIG}
-	echo "CONFIG_IEEE80211W=y" >> ${CONFIG}
-	echo "CONFIG_IEEE80211N=y" >> ${CONFIG}
-	echo "CONFIG_IEEE80211AC=y" >> ${CONFIG}
-	echo "CONFIG_PEERKEY=y" >> ${CONFIG}
-	echo "CONFIG_RSN_PREAUTH=y" >> ${CONFIG}
-	echo "CONFIG_INTERWORKING=y" >> ${CONFIG}
-	echo "CONFIG_FULL_DYNAMIC_VLAN=y" >> ${CONFIG}
-	echo "CONFIG_HS20=y" >> ${CONFIG}
-	echo "CONFIG_WNM=y" >> ${CONFIG}
-	echo "CONFIG_FST=y" >> ${CONFIG}
-	echo "CONFIG_FST_TEST=y" >> ${CONFIG}
-	echo "CONFIG_ACS=y" >> ${CONFIG}
-
-	# Disable random pool to work-around the slow random entropy
-	# generation on whirlwind. (See: crbug.com/1114912#c9)
-	# This is safe now because:
-	# 1. We now only use hostapd for tests. (on test APs or in
-	#    network.Ethernet8021X.* tests.)
-	# 2. The random pool (and entropy estimations) seem to mostly be
-	#    designed to guard against lack of initial entropy on a fresh
-	#    boot, but they run at every startup. In the presence of many
-	#    hostapd restarts, when "available entropy" gets drained by
-	#    hostapd, /dev/urandom should still be seeded with enough entropy.
-	# However, if we want to launch AP support in CrOS, it would be better
-	# to re-evaluate this with security experts.
-	echo "CONFIG_NO_RANDOM_POOL=y" >> ${CONFIG}
-
-	if use netlink; then
-		# Netlink support
-		echo "CONFIG_VLAN_NETLINK=y" >> ${CONFIG}
-	fi
-
-	if use ipv6; then
-		# IPv6 support
-		echo "CONFIG_IPV6=y" >> ${CONFIG}
-	fi
-
-	if use sqlite; then
-		# Sqlite support
-		echo "CONFIG_SQLITE=y" >> ${CONFIG}
-	fi
-
-	# If we are using libnl 2.0 and above, enable support for it
-	# Removed for now, since the 3.2 version is broken, and we don't
-	# support it.
-	if has_version ">=dev-libs/libnl-3.2"; then
-		echo "CONFIG_LIBNL32=y" >> .config
-	fi
-
-	# TODO: Add support for BSD drivers
-
-	default
-}
-
-src_compile() {
-	emake V=1
-
-	if use libressl || ! use internal-tls; then
-		emake V=1 nt_password_hash
-		emake V=1 hlr_auc_gw
-	fi
-}
-
-src_install() {
-	dosbin ${PN}
-	dobin ${PN}_cli
-
-	if use libressl || ! use internal-tls; then
-		dobin nt_password_hash hlr_auc_gw
-	fi
-
-	doman ${PN}{.8,_cli.1}
-
-	dodoc ChangeLog README
-	use wps && dodoc README-WPS
-
-	docinto examples
-	dodoc wired.conf
-
-	if use logwatch; then
-		insinto /etc/log.d/conf/services/
-		doins logwatch/${PN}.conf
-
-		exeinto /etc/log.d/scripts/services/
-		doexe logwatch/${PN}
-	fi
-
-	save_config .config
-}
-
-pkg_postinst() {
-	einfo
-	einfo "If you are running openRC you need to follow this instructions:"
-	einfo "In order to use ${PN} you need to set up your wireless card"
-	einfo "for master mode in /etc/conf.d/net and then start"
-	einfo "/etc/init.d/${PN}."
-	einfo
-	einfo "Example configuration:"
-	einfo
-	einfo "config_wlan0=( \"192.168.1.1/24\" )"
-	einfo "channel_wlan0=\"6\""
-	einfo "essid_wlan0=\"test\""
-	einfo "mode_wlan0=\"master\""
-	einfo
-	#if [ -e "${KV_DIR}"/net/mac80211 ]; then
-	#	einfo "This package now compiles against the headers installed by"
-	#	einfo "the kernel source for the mac80211 driver. You should "
-	#	einfo "re-emerge ${PN} after upgrading your kernel source."
-	#fi
-
-	if use wps; then
-		einfo "You have enabled Wi-Fi Protected Setup support, please"
-		einfo "read the README-WPS file in /usr/share/doc/${P}"
-		einfo "for info on how to use WPS"
-	fi
-}
diff --git a/net-wireless/hostapd/hostapd-2.9-r159.ebuild b/net-wireless/hostapd/hostapd-2.9-r159.ebuild
new file mode 100644
index 0000000..9a8671b
--- /dev/null
+++ b/net-wireless/hostapd/hostapd-2.9-r159.ebuild
@@ -0,0 +1,251 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+CROS_WORKON_COMMIT="8ac12f2cec9b9c227e8719fca00d4d6c75cf7270"
+CROS_WORKON_TREE="76ef3707eefe49ae08b8c889ada1c4a987fbaa6e"
+CROS_WORKON_PROJECT="chromiumos/third_party/hostap"
+CROS_WORKON_LOCALNAME="../third_party/wpa_supplicant-2.9"
+
+inherit cros-workon toolchain-funcs savedconfig
+
+DESCRIPTION="IEEE 802.11 wireless LAN Host AP daemon"
+HOMEPAGE="http://w1.fi"
+SRC_URI=""
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="*"
+IUSE="internal-tls ipv6 libressl logwatch netlink sqlite +suiteb +wps +crda"
+
+DEPEND="
+	libressl? ( dev-libs/libressl:0= )
+	!libressl? (
+		internal-tls? ( dev-libs/libtommath )
+		!internal-tls? ( dev-libs/openssl:0=[-bindist] )
+	)
+	kernel_linux? (
+		dev-libs/libnl:3
+		crda? ( net-wireless/crda )
+	)
+	netlink? ( net-libs/libnfnetlink )
+	sqlite? ( >=dev-db/sqlite-3 )"
+
+RDEPEND="${DEPEND}"
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/hostapd"
+}
+
+src_configure() {
+	if use internal-tls; then
+		if use libressl; then
+			elog "libressl flag takes precedence over internal-tls"
+		else
+			ewarn "internal-tls implementation is experimental and provides fewer features"
+		fi
+	fi
+
+	local CONFIG="${S}/.config"
+
+	restore_config "${CONFIG}"
+	if [[ -f "${CONFIG}" ]]; then
+		default_src_configure
+		return 0
+	fi
+
+	# toolchain setup
+	echo "CC = $(tc-getCC)" > ${CONFIG}
+
+	# EAP authentication methods
+	echo "CONFIG_EAP=y" >> ${CONFIG}
+	echo "CONFIG_ERP=y" >> ${CONFIG}
+	echo "CONFIG_EAP_MD5=y" >> ${CONFIG}
+	echo "CONFIG_SAE=y" >> ${CONFIG}
+	echo "CONFIG_OWE=y" >> ${CONFIG}
+	echo "CONFIG_DPP=y" >> ${CONFIG}
+
+	if use suiteb; then
+		echo "CONFIG_SUITEB=y" >> ${CONFIG}
+		echo "CONFIG_SUITEB192=y" >> ${CONFIG}
+	fi
+
+	if use internal-tls && ! use libressl; then
+		echo "CONFIG_TLS=internal" >> ${CONFIG}
+	else
+		# SSL authentication methods
+		echo "CONFIG_EAP_FAST=y" >> ${CONFIG}
+		echo "CONFIG_EAP_TLS=y" >> ${CONFIG}
+		echo "CONFIG_EAP_TTLS=y" >> ${CONFIG}
+		echo "CONFIG_EAP_MSCHAPV2=y" >> ${CONFIG}
+		echo "CONFIG_EAP_PEAP=y" >> ${CONFIG}
+		echo "CONFIG_TLSV11=y" >> ${CONFIG}
+		echo "CONFIG_TLSV12=y" >> ${CONFIG}
+		echo "CONFIG_EAP_PWD=y" >> ${CONFIG}
+	fi
+
+	if use wps; then
+		# Enable Wi-Fi Protected Setup
+		echo "CONFIG_WPS=y" >> ${CONFIG}
+		echo "CONFIG_WPS2=y" >> ${CONFIG}
+		echo "CONFIG_WPS_UPNP=y" >> ${CONFIG}
+		echo "CONFIG_WPS_NFC=y" >> ${CONFIG}
+		einfo "Enabling Wi-Fi Protected Setup support"
+	fi
+
+	echo "CONFIG_EAP_IKEV2=y" >> ${CONFIG}
+	echo "CONFIG_EAP_TNC=y" >> ${CONFIG}
+	echo "CONFIG_EAP_GTC=y" >> ${CONFIG}
+	echo "CONFIG_EAP_SIM=y" >> ${CONFIG}
+	echo "CONFIG_EAP_AKA=y" >> ${CONFIG}
+	echo "CONFIG_EAP_AKA_PRIME=y" >> ${CONFIG}
+	echo "CONFIG_EAP_EKE=y" >> ${CONFIG}
+	echo "CONFIG_EAP_FAST=y" >> ${CONFIG}
+	echo "CONFIG_EAP_PAX=y" >> ${CONFIG}
+	echo "CONFIG_EAP_PSK=y" >> ${CONFIG}
+	echo "CONFIG_EAP_SAKE=y" >> ${CONFIG}
+	echo "CONFIG_EAP_GPSK=y" >> ${CONFIG}
+	echo "CONFIG_EAP_GPSK_SHA256=y" >> ${CONFIG}
+	echo "CONFIG_EAP_UNAUTH_TLS=y" >> ${CONFIG}
+	echo "CONFIG_EAP_VENDOR_TEST=y" >> ${CONFIG}
+
+	einfo "Enabling drivers: "
+
+	# drivers
+	echo "CONFIG_DRIVER_HOSTAP=y" >> ${CONFIG}
+	einfo "  HostAP driver enabled"
+	echo "CONFIG_DRIVER_WIRED=y" >> ${CONFIG}
+	einfo "  Wired driver enabled"
+	echo "CONFIG_DRIVER_NONE=y" >> ${CONFIG}
+	einfo "  None driver enabled"
+
+	einfo "  nl80211 driver enabled"
+	echo "CONFIG_DRIVER_NL80211=y" >> ${CONFIG}
+
+	# epoll
+	echo "CONFIG_ELOOP_EPOLL=y" >> ${CONFIG}
+
+	# misc
+	echo "CONFIG_DEBUG_FILE=y" >> ${CONFIG}
+	echo "CONFIG_PKCS12=y" >> ${CONFIG}
+	echo "CONFIG_RADIUS_SERVER=y" >> ${CONFIG}
+	echo "CONFIG_IAPP=y" >> ${CONFIG}
+	echo "CONFIG_IEEE80211R=y" >> ${CONFIG}
+	echo "CONFIG_IEEE80211W=y" >> ${CONFIG}
+	echo "CONFIG_IEEE80211N=y" >> ${CONFIG}
+	echo "CONFIG_IEEE80211AC=y" >> ${CONFIG}
+	echo "CONFIG_PEERKEY=y" >> ${CONFIG}
+	echo "CONFIG_RSN_PREAUTH=y" >> ${CONFIG}
+	echo "CONFIG_INTERWORKING=y" >> ${CONFIG}
+	echo "CONFIG_FULL_DYNAMIC_VLAN=y" >> ${CONFIG}
+	echo "CONFIG_HS20=y" >> ${CONFIG}
+	echo "CONFIG_WNM=y" >> ${CONFIG}
+	echo "CONFIG_FST=y" >> ${CONFIG}
+	echo "CONFIG_FST_TEST=y" >> ${CONFIG}
+	echo "CONFIG_ACS=y" >> ${CONFIG}
+	echo "CONFIG_MBO=y" >> ${CONFIG}
+
+	# Disable random pool to work-around the slow random entropy
+	# generation on whirlwind. (See: crbug.com/1114912#c9)
+	# This is safe now because:
+	# 1. We now only use hostapd for tests. (on test APs or in
+	#    network.Ethernet8021X.* tests.)
+	# 2. The random pool (and entropy estimations) seem to mostly be
+	#    designed to guard against lack of initial entropy on a fresh
+	#    boot, but they run at every startup. In the presence of many
+	#    hostapd restarts, when "available entropy" gets drained by
+	#    hostapd, /dev/urandom should still be seeded with enough entropy.
+	# However, if we want to launch AP support in CrOS, it would be better
+	# to re-evaluate this with security experts.
+	echo "CONFIG_NO_RANDOM_POOL=y" >> ${CONFIG}
+
+	if use netlink; then
+		# Netlink support
+		echo "CONFIG_VLAN_NETLINK=y" >> ${CONFIG}
+	fi
+
+	if use ipv6; then
+		# IPv6 support
+		echo "CONFIG_IPV6=y" >> ${CONFIG}
+	fi
+
+	if use sqlite; then
+		# Sqlite support
+		echo "CONFIG_SQLITE=y" >> ${CONFIG}
+	fi
+
+	# If we are using libnl 2.0 and above, enable support for it
+	# Removed for now, since the 3.2 version is broken, and we don't
+	# support it.
+	if has_version ">=dev-libs/libnl-3.2"; then
+		echo "CONFIG_LIBNL32=y" >> .config
+	fi
+
+	# TODO: Add support for BSD drivers
+
+	default
+}
+
+src_compile() {
+	emake V=1
+
+	if use libressl || ! use internal-tls; then
+		emake V=1 nt_password_hash
+		emake V=1 hlr_auc_gw
+	fi
+}
+
+src_install() {
+	dosbin ${PN}
+	dobin ${PN}_cli
+
+	if use libressl || ! use internal-tls; then
+		dobin nt_password_hash hlr_auc_gw
+	fi
+
+	doman ${PN}{.8,_cli.1}
+
+	dodoc ChangeLog README
+	use wps && dodoc README-WPS
+
+	docinto examples
+	dodoc wired.conf
+
+	if use logwatch; then
+		insinto /etc/log.d/conf/services/
+		doins logwatch/${PN}.conf
+
+		exeinto /etc/log.d/scripts/services/
+		doexe logwatch/${PN}
+	fi
+
+	save_config .config
+}
+
+pkg_postinst() {
+	einfo
+	einfo "If you are running openRC you need to follow this instructions:"
+	einfo "In order to use ${PN} you need to set up your wireless card"
+	einfo "for master mode in /etc/conf.d/net and then start"
+	einfo "/etc/init.d/${PN}."
+	einfo
+	einfo "Example configuration:"
+	einfo
+	einfo "config_wlan0=( \"192.168.1.1/24\" )"
+	einfo "channel_wlan0=\"6\""
+	einfo "essid_wlan0=\"test\""
+	einfo "mode_wlan0=\"master\""
+	einfo
+	#if [ -e "${KV_DIR}"/net/mac80211 ]; then
+	#	einfo "This package now compiles against the headers installed by"
+	#	einfo "the kernel source for the mac80211 driver. You should "
+	#	einfo "re-emerge ${PN} after upgrading your kernel source."
+	#fi
+
+	if use wps; then
+		einfo "You have enabled Wi-Fi Protected Setup support, please"
+		einfo "read the README-WPS file in /usr/share/doc/${P}"
+		einfo "for info on how to use WPS"
+	fi
+}
diff --git a/net-wireless/hostapd/hostapd-9999.ebuild b/net-wireless/hostapd/hostapd-9999.ebuild
index 3e3a4f8..571f363 100644
--- a/net-wireless/hostapd/hostapd-9999.ebuild
+++ b/net-wireless/hostapd/hostapd-9999.ebuild
@@ -142,6 +142,7 @@
 	echo "CONFIG_FST=y" >> ${CONFIG}
 	echo "CONFIG_FST_TEST=y" >> ${CONFIG}
 	echo "CONFIG_ACS=y" >> ${CONFIG}
+	echo "CONFIG_MBO=y" >> ${CONFIG}
 
 	# Disable random pool to work-around the slow random entropy
 	# generation on whirlwind. (See: crbug.com/1114912#c9)
diff --git a/net-wireless/iw/Manifest b/net-wireless/iw/Manifest
index 5afc487..99f9ef4 100644
--- a/net-wireless/iw/Manifest
+++ b/net-wireless/iw/Manifest
@@ -1 +1 @@
-DIST iw-5.4.tar.xz 136252 BLAKE2B 0e69d1520a1a41f135207affd610e84f693e744d3c7891c7efd75451df0d7aac84be71d02a72b5c08d0b8d850b29b8ed7afb4c3481ef0bd1bef98f14c3f3aaeb SHA512 84408194e5b3a2f119ae9711d856ecb4343734ebb91150e0441b2410af8f75f460ce9ab1ce7151b0dda3926270bcb80fa684058945b7549c98964a0379e39ba2
+DIST iw-5.9.tar.xz 145296 BLAKE2B d7abe6c65d408a7570227dbe69fe11e1d72a1f502de21d1fcb7dcff6bfe229804020d5c1ebdda42a3694e31cf87c631faf089746f8df4733b0b1a459c185e2af SHA512 08b0c8d92c7e695bb2a107b89c3cc406e8386393b65ecbf96ded6fd757043ccd12bedaa90c14138e03e53f107365d04e229633c1cfa024ecab5fe993578491be
diff --git a/net-wireless/iw/files/0000-update-nl80211.patch b/net-wireless/iw/files/0000-update-nl80211.patch
deleted file mode 100644
index da0bf24..0000000
--- a/net-wireless/iw/files/0000-update-nl80211.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-From e9b59588f451c40ec766071e3388ea91d2e559fa Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg@intel.com>
-Date: Wed, 15 Jan 2020 11:05:10 +0100
-Subject: [PATCH] iw: update nl80211.h
-
-Change-Id: I3b5b124f7d2985b9dc6f9481408bd412e50c0b5b
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
-commit e9b59588f451c40ec766071e3388ea91d2e559fa upstream
-
- nl80211.h | 39 +++++++++++++++++++++++++++++++++++++++
- 1 file changed, 39 insertions(+)
-
-diff --git a/nl80211.h b/nl80211.h
-index beee59c831a7..5eab191607f8 100644
---- a/nl80211.h
-+++ b/nl80211.h
-@@ -248,6 +248,22 @@
-  * %NL80211_ATTR_SAE_PASSWORD.
-  */
- 
-+/**
-+ * DOC: VLAN offload support for setting group keys and binding STAs to VLANs
-+ *
-+ * By setting @NL80211_EXT_FEATURE_VLAN_OFFLOAD flag drivers can indicate they
-+ * support offloading VLAN functionality in a manner where the driver exposes a
-+ * single netdev that uses VLAN tagged frames and separate VLAN-specific netdevs
-+ * can then be added using RTM_NEWLINK/IFLA_VLAN_ID similarly to the Ethernet
-+ * case. Frames received from stations that are not assigned to any VLAN are
-+ * delivered on the main netdev and frames to such stations can be sent through
-+ * that main netdev.
-+ *
-+ * %NL80211_CMD_NEW_KEY (for group keys), %NL80211_CMD_NEW_STATION, and
-+ * %NL80211_CMD_SET_STATION will optionally specify vlan_id using
-+ * %NL80211_ATTR_VLAN_ID.
-+ */
-+
- /**
-  * enum nl80211_commands - supported nl80211 commands
-  *
-@@ -571,6 +587,14 @@
-  *	set of BSSID,frequency parameters is used (i.e., either the enforcing
-  *	%NL80211_ATTR_MAC,%NL80211_ATTR_WIPHY_FREQ or the less strict
-  *	%NL80211_ATTR_MAC_HINT and %NL80211_ATTR_WIPHY_FREQ_HINT).
-+ *	Driver shall not modify the IEs specified through %NL80211_ATTR_IE if
-+ *	%NL80211_ATTR_MAC is included. However, if %NL80211_ATTR_MAC_HINT is
-+ *	included, these IEs through %NL80211_ATTR_IE are specified by the user
-+ *	space based on the best possible BSS selected. Thus, if the driver ends
-+ *	up selecting a different BSS, it can modify these IEs accordingly (e.g.
-+ *	userspace asks the driver to perform PMKSA caching with BSS1 and the
-+ *	driver ends up selecting BSS2 with different PMKSA cache entry; RSNIE
-+ *	has to get updated with the apt PMKID).
-  *	%NL80211_ATTR_PREV_BSSID can be used to request a reassociation within
-  *	the ESS in case the device is already associated and an association with
-  *	a different BSS is desired.
-@@ -2373,6 +2397,9 @@ enum nl80211_commands {
-  *	the allowed channel bandwidth configurations. (u8 attribute)
-  *	Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13.
-  *
-+ * @NL80211_ATTR_VLAN_ID: VLAN ID (1..4094) for the station and VLAN group key
-+ *	(u16).
-+ *
-  * @NUM_NL80211_ATTR: total number of nl80211_attrs available
-  * @NL80211_ATTR_MAX: highest attribute number currently defined
-  * @__NL80211_ATTR_AFTER_LAST: internal use
-@@ -2835,6 +2862,8 @@ enum nl80211_attrs {
- 	NL80211_ATTR_WIPHY_EDMG_CHANNELS,
- 	NL80211_ATTR_WIPHY_EDMG_BW_CONFIG,
- 
-+	NL80211_ATTR_VLAN_ID,
-+
- 	/* add attributes here, update the policy in nl80211.c */
- 
- 	__NL80211_ATTR_AFTER_LAST,
-@@ -5484,6 +5513,14 @@ enum nl80211_feature_flags {
-  * @NL80211_EXT_FEATURE_SAE_OFFLOAD: Device wants to do SAE authentication in
-  *	station mode (SAE password is passed as part of the connect command).
-  *
-+ * @NL80211_EXT_FEATURE_VLAN_OFFLOAD: The driver supports a single netdev
-+ *	with VLAN tagged frames and separate VLAN-specific netdevs added using
-+ *	vconfig similarly to the Ethernet case.
-+ *
-+ * @NL80211_EXT_FEATURE_AQL: The driver supports the Airtime Queue Limit (AQL)
-+ *	feature, which prevents bufferbloat by using the expected transmission
-+ *	time to limit the amount of data buffered in the hardware.
-+ *
-  * @NUM_NL80211_EXT_FEATURES: number of extended features.
-  * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
-  */
-@@ -5529,6 +5566,8 @@ enum nl80211_ext_feature_index {
- 	NL80211_EXT_FEATURE_EXT_KEY_ID,
- 	NL80211_EXT_FEATURE_STA_TX_PWR,
- 	NL80211_EXT_FEATURE_SAE_OFFLOAD,
-+	NL80211_EXT_FEATURE_VLAN_OFFLOAD,
-+	NL80211_EXT_FEATURE_AQL,
- 
- 	/* add new features before the definition below */
- 	NUM_NL80211_EXT_FEATURES,
--- 
-2.26.0.292.g33ef6b2f38-goog
-
diff --git a/net-wireless/iw/files/0001-update-nl80211.patch b/net-wireless/iw/files/0001-update-nl80211.patch
deleted file mode 100644
index 7fc57c0..0000000
--- a/net-wireless/iw/files/0001-update-nl80211.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-From ba300c33cdf557fd7bb1c985afa615dfdc7cb1eb Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg@intel.com>
-Date: Thu, 13 Feb 2020 19:07:44 +0100
-Subject: [PATCH] update nl80211.h
-
-Change-Id: Ia0e95e0cc90a2dfc6caec71f1c1052588411b6bf
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
-commit ba300c33cdf557fd7bb1c985afa615dfdc7cb1eb upstream
-
- nl80211.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- 1 file changed, 79 insertions(+), 1 deletion(-)
-
-diff --git a/nl80211.h b/nl80211.h
-index 5eab191607f8..158bccb4a47b 100644
---- a/nl80211.h
-+++ b/nl80211.h
-@@ -1039,11 +1039,14 @@
-  *	a control port frame and as a notification that a control port frame
-  *	has been received. %NL80211_ATTR_FRAME is used to specify the
-  *	frame contents.  The frame is the raw EAPoL data, without ethernet or
-- *	802.11 headers.
-+ *	802.11 headers. An optional %NL80211_ATTR_SRC_MAC can be used to send
-+ *	pre-auth frames to STAs on behalf of other APs.
-  *	When used as an event indication %NL80211_ATTR_CONTROL_PORT_ETHERTYPE,
-  *	%NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT and %NL80211_ATTR_MAC are added
-  *	indicating the protocol type of the received frame; whether the frame
-  *	was received unencrypted and the MAC address of the peer respectively.
-+ *	%NL80211_ATTR_DST_MAC can be used to forward pre-auth frames in
-+ *	userspace while using AP mode.
-  *
-  * @NL80211_CMD_RELOAD_REGDB: Request that the regdb firmware file is reloaded.
-  *
-@@ -2400,6 +2403,18 @@ enum nl80211_commands {
-  * @NL80211_ATTR_VLAN_ID: VLAN ID (1..4094) for the station and VLAN group key
-  *	(u16).
-  *
-+ * @NL80211_ATTR_HE_BSS_COLOR: nested attribute for BSS Color Settings.
-+ *
-+ * @NL80211_ATTR_IFTYPE_AKM_SUITES: nested array attribute, with each entry
-+ *	using attributes from &enum nl80211_iftype_akm_attributes. This
-+ *	attribute is sent in a response to %NL80211_CMD_GET_WIPHY indicating
-+ *	supported AKM suites capability per interface. AKMs advertised in
-+ *	%NL80211_ATTR_AKM_SUITES are default capabilities if AKM suites not
-+ *	advertised for a specific interface type.
-+ *
-+ * @NL80211_ATTR_SRC_MAC: MAC address used in control port over nl80211 transmit
-+ * @NL80211_ATTR_DST_MAC: MAC address used in control port over nl80211 receive
-+ *
-  * @NUM_NL80211_ATTR: total number of nl80211_attrs available
-  * @NL80211_ATTR_MAX: highest attribute number currently defined
-  * @__NL80211_ATTR_AFTER_LAST: internal use
-@@ -2864,6 +2879,13 @@ enum nl80211_attrs {
- 
- 	NL80211_ATTR_VLAN_ID,
- 
-+	NL80211_ATTR_HE_BSS_COLOR,
-+
-+	NL80211_ATTR_IFTYPE_AKM_SUITES,
-+
-+	NL80211_ATTR_SRC_MAC,
-+	NL80211_ATTR_DST_MAC,
-+
- 	/* add attributes here, update the policy in nl80211.c */
- 
- 	__NL80211_ATTR_AFTER_LAST,
-@@ -3583,6 +3605,8 @@ enum nl80211_wmm_rule {
-  * @NL80211_FREQUENCY_ATTR_WMM: this channel has wmm limitations.
-  *	This is a nested attribute that contains the wmm limitation per AC.
-  *	(see &enum nl80211_wmm_rule)
-+ * @NL80211_FREQUENCY_ATTR_NO_HE: HE operation is not allowed on this channel
-+ *	in current regulatory domain.
-  * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
-  *	currently defined
-  * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
-@@ -3612,6 +3636,7 @@ enum nl80211_frequency_attr {
- 	NL80211_FREQUENCY_ATTR_NO_20MHZ,
- 	NL80211_FREQUENCY_ATTR_NO_10MHZ,
- 	NL80211_FREQUENCY_ATTR_WMM,
-+	NL80211_FREQUENCY_ATTR_NO_HE,
- 
- 	/* keep last */
- 	__NL80211_FREQUENCY_ATTR_AFTER_LAST,
-@@ -3809,6 +3834,7 @@ enum nl80211_sched_scan_match_attr {
-  * @NL80211_RRF_NO_HT40PLUS: channels can't be used in HT40+ operation
-  * @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed
-  * @NL80211_RRF_NO_160MHZ: 160MHz operation not allowed
-+ * @NL80211_RRF_NO_HE: HE operation not allowed
-  */
- enum nl80211_reg_rule_flags {
- 	NL80211_RRF_NO_OFDM		= 1<<0,
-@@ -3826,6 +3852,7 @@ enum nl80211_reg_rule_flags {
- 	NL80211_RRF_NO_HT40PLUS		= 1<<14,
- 	NL80211_RRF_NO_80MHZ		= 1<<15,
- 	NL80211_RRF_NO_160MHZ		= 1<<16,
-+	NL80211_RRF_NO_HE		= 1<<17,
- };
- 
- #define NL80211_RRF_PASSIVE_SCAN	NL80211_RRF_NO_IR
-@@ -5521,6 +5548,10 @@ enum nl80211_feature_flags {
-  *	feature, which prevents bufferbloat by using the expected transmission
-  *	time to limit the amount of data buffered in the hardware.
-  *
-+ * @NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_MAC_ADDRS: The driver
-+ *	can use src and dst MAC addresses with control port over nl80211 rx
-+ *	and tx operations.
-+ *
-  * @NUM_NL80211_EXT_FEATURES: number of extended features.
-  * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
-  */
-@@ -5568,6 +5599,7 @@ enum nl80211_ext_feature_index {
- 	NL80211_EXT_FEATURE_SAE_OFFLOAD,
- 	NL80211_EXT_FEATURE_VLAN_OFFLOAD,
- 	NL80211_EXT_FEATURE_AQL,
-+	NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_MAC_ADDRS,
- 
- 	/* add new features before the definition below */
- 	NUM_NL80211_EXT_FEATURES,
-@@ -6587,5 +6619,51 @@ enum nl80211_obss_pd_attributes {
- 	NL80211_HE_OBSS_PD_ATTR_MAX = __NL80211_HE_OBSS_PD_ATTR_LAST - 1,
- };
- 
-+/**
-+ * enum nl80211_bss_color_attributes - BSS Color attributes
-+ * @__NL80211_HE_BSS_COLOR_ATTR_INVALID: Invalid
-+ *
-+ * @NL80211_HE_BSS_COLOR_ATTR_COLOR: the current BSS Color.
-+ * @NL80211_HE_BSS_COLOR_ATTR_DISABLED: is BSS coloring disabled.
-+ * @NL80211_HE_BSS_COLOR_ATTR_PARTIAL: the AID equation to be used..
-+ *
-+ * @__NL80211_HE_BSS_COLOR_ATTR_LAST: Internal
-+ * @NL80211_HE_BSS_COLOR_ATTR_MAX: highest BSS Color attribute.
-+ */
-+enum nl80211_bss_color_attributes {
-+	__NL80211_HE_BSS_COLOR_ATTR_INVALID,
-+
-+	NL80211_HE_BSS_COLOR_ATTR_COLOR,
-+	NL80211_HE_BSS_COLOR_ATTR_DISABLED,
-+	NL80211_HE_BSS_COLOR_ATTR_PARTIAL,
-+
-+	/* keep last */
-+	__NL80211_HE_BSS_COLOR_ATTR_LAST,
-+	NL80211_HE_BSS_COLOR_ATTR_MAX = __NL80211_HE_BSS_COLOR_ATTR_LAST - 1,
-+};
-+
-+/**
-+ * enum nl80211_iftype_akm_attributes - interface type AKM attributes
-+ * @__NL80211_IFTYPE_AKM_ATTR_INVALID: Invalid
-+ *
-+ * @NL80211_IFTYPE_AKM_ATTR_IFTYPES: nested attribute containing a flag
-+ *	attribute for each interface type that supports AKM suites specified in
-+ *	%NL80211_IFTYPE_AKM_ATTR_SUITES
-+ * @NL80211_IFTYPE_AKM_ATTR_SUITES: an array of u32. Used to indicate supported
-+ *	AKM suites for the specified interface types.
-+ *
-+ * @__NL80211_IFTYPE_AKM_ATTR_LAST: Internal
-+ * @NL80211_IFTYPE_AKM_ATTR_MAX: highest interface type AKM attribute.
-+ */
-+enum nl80211_iftype_akm_attributes {
-+	__NL80211_IFTYPE_AKM_ATTR_INVALID,
-+
-+	NL80211_IFTYPE_AKM_ATTR_IFTYPES,
-+	NL80211_IFTYPE_AKM_ATTR_SUITES,
-+
-+	/* keep last */
-+	__NL80211_IFTYPE_AKM_ATTR_LAST,
-+	NL80211_IFTYPE_AKM_ATTR_MAX = __NL80211_IFTYPE_AKM_ATTR_LAST - 1,
-+};
- 
- #endif /* __LINUX_NL80211_H */
--- 
-2.26.0.292.g33ef6b2f38-goog
-
diff --git a/net-wireless/iw/files/0002-reg-parse-NO_HE.patch b/net-wireless/iw/files/0002-reg-parse-NO_HE.patch
deleted file mode 100644
index 8e88b3b..0000000
--- a/net-wireless/iw/files/0002-reg-parse-NO_HE.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From ad5bd08f482f23c040491c6f698babf31bc5af93 Mon Sep 17 00:00:00 2001
-From: Brian Norris <briannorris@chromium.org>
-Date: Wed, 5 Feb 2020 15:10:01 -0800
-Subject: [PATCH] iw: reg: parse the NO_HE regulatory flag
-
-This isn't supported in wireless-regdb yet, but self-managed drivers are
-preparing to report it:
-
-https://patchwork.kernel.org/patch/11343173/
-https://lkml.kernel.org/linux-wireless/20200121081213.733757-1-luca@coelho.fi
-
-Signed-off-by: Brian Norris <briannorris@chromium.org>
-Link: https://lore.kernel.org/r/20200205231001.132595-3-briannorris@chromium.org
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
-commit ad5bd08f482f23c040491c6f698babf31bc5af93 upstream
-
- reg.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/reg.c b/reg.c
-index a2368df39009..db1b12906519 100644
---- a/reg.c
-+++ b/reg.c
-@@ -209,6 +209,7 @@ static int print_reg_handler(struct nl_msg *msg, void *arg)
- 		PARSE_FLAG(NL80211_RRF_NO_HT40PLUS, "NO-HT40PLUS");
- 		PARSE_FLAG(NL80211_RRF_NO_80MHZ, "NO-80MHZ");
- 		PARSE_FLAG(NL80211_RRF_NO_160MHZ, "NO-160MHZ");
-+		PARSE_FLAG(NL80211_RRF_NO_HE, "NO-HE");
- 
- 		/* Kernels that support NO_IR always turn on both flags */
- 		if ((flags & NL80211_RRF_NO_IR) && (flags & __NL80211_RRF_NO_IBSS)) {
--- 
-2.26.0.292.g33ef6b2f38-goog
-
diff --git a/net-wireless/iw/files/0003-phy-index.patch b/net-wireless/iw/files/0003-phy-index.patch
deleted file mode 100644
index c813ed5..0000000
--- a/net-wireless/iw/files/0003-phy-index.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 11c35aef4afc6389613b5ed1c8d26002c1200e12 Mon Sep 17 00:00:00 2001
-From: Brian Norris <briannorris@chromium.org>
-Date: Wed, 11 Mar 2020 18:05:15 -0700
-Subject: [PATCH] iw: phy: dump wiphy index
-
-We support getting wiphy info by index (e.g., 'iw phy#0 info') but we
-don't actually dump that info anywhere. Let's fix that.
-
-Signed-off-by: Brian Norris <briannorris@chromium.org>
-Link: https://lore.kernel.org/r/20200312010515.21095-1-briannorris@chromium.org
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
-commit 11c35aef4afc6389613b5ed1c8d26002c1200e12 upstream
-
- info.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/info.c b/info.c
-index 04f4bd7414d6..97240f68371d 100644
---- a/info.c
-+++ b/info.c
-@@ -133,6 +133,9 @@ static int print_phy_handler(struct nl_msg *msg, void *arg)
- 	if (print_name && tb_msg[NL80211_ATTR_WIPHY_NAME])
- 		printf("Wiphy %s\n", nla_get_string(tb_msg[NL80211_ATTR_WIPHY_NAME]));
- 
-+	if (print_name && tb_msg[NL80211_ATTR_WIPHY])
-+		printf("\twiphy index: %u\n", nla_get_u32(tb_msg[NL80211_ATTR_WIPHY]));
-+
- 	/* needed for split dump */
- 	if (tb_msg[NL80211_ATTR_WIPHY_BANDS]) {
- 		nla_for_each_nested(nl_band, tb_msg[NL80211_ATTR_WIPHY_BANDS], rem_band) {
--- 
-2.26.0.292.g33ef6b2f38-goog
-
diff --git a/net-wireless/iw/files/0004-event-wiphy-reg-change.patch b/net-wireless/iw/files/0004-event-wiphy-reg-change.patch
deleted file mode 100644
index a428e8f..0000000
--- a/net-wireless/iw/files/0004-event-wiphy-reg-change.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 02503184597f0ddf64a7a0441b2e8d2ee82d5542 Mon Sep 17 00:00:00 2001
-From: Markus Theil <markus.theil@tu-ilmenau.de>
-Date: Tue, 24 Mar 2020 17:21:49 +0100
-Subject: [PATCH] iw: event: also handle reg change on wiphy
-
-Signed-off-by: Markus Theil <markus.theil@tu-ilmenau.de>
-Link: https://lore.kernel.org/r/20200324162149.3178-1-markus.theil@tu-ilmenau.de
-Signed-off-by: Johannes Berg <johannes.berg@intel.com>
----
-commit 02503184597f0ddf64a7a0441b2e8d2ee82d5542 upstream
-
- event.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/event.c b/event.c
-index 51aff97deb0d..b132b17f2efd 100644
---- a/event.c
-+++ b/event.c
-@@ -931,8 +931,12 @@ static int print_event(struct nl_msg *msg, void *arg)
- 	case NL80211_CMD_SCHED_SCAN_RESULTS:
- 		printf("got scheduled scan results\n");
- 		break;
-+	case NL80211_CMD_WIPHY_REG_CHANGE:
- 	case NL80211_CMD_REG_CHANGE:
--		printf("regulatory domain change: ");
-+		if(gnlh->cmd == NL80211_CMD_WIPHY_REG_CHANGE)
-+			printf("regulatory domain change (phy): ");
-+		else
-+			printf("regulatory domain change: ");
- 
- 		reg_type = nla_get_u8(tb[NL80211_ATTR_REG_TYPE]);
- 
--- 
-2.26.0.292.g33ef6b2f38-goog
-
diff --git a/net-wireless/iw/files/0005-phy-reg-get.patch b/net-wireless/iw/files/0005-phy-reg-get.patch
deleted file mode 100644
index d0ef7c2..0000000
--- a/net-wireless/iw/files/0005-phy-reg-get.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From: Brian Norris <briannorris@chromium.org>
-Date: Tue, 31 Mar 2020 16:05:06 -0700
-Subject: [PATCH] iw: 'phy <name> reg get' shouldn't dump all domains
-
-Right now, 'iw phy ... reg get' gets translated to NLM_F_DUMP, which
-dumps all domains. But this command really is looking for non-DUMP
-semantics -- it only wants the domain for the specified wiphy, or (per
-the kernel's choice) the global, if the wiphy doesn't have its own.
-
-We can achieve this by skipping the handle_reg_get() -> "reg dump"
-indirection.
-
-[ with a wiphy-specific domain ]
-Before:
-  # iw phy phy0 reg get
-  global
-  country XX: DFS-YYY
-  [...]
-  phy#0
-  country AA: DFS-BBB
-  [...]
-
-After:
-  # iw phy phy0 reg get
-  phy#0
-  country AA: DFS-BBB
-  [...]
-
-[ without a wiphy-specific domain ]
-Before and after (unchanged):
-  # iw phy phy0 reg get
-  global
-  country XX: DFS-YYY
-  [...]
-
-Signed-off-by: Brian Norris <briannorris@chromium.org>
----
-Submitted upstream here:
-https://patchwork.kernel.org/patch/11468473/
-https://lkml.kernel.org/linux-wireless/20200331232833.142026-1-briannorris@chromium.org/T/#u
-
- reg.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/reg.c b/reg.c
-index db1b12906519..3dc4b0eec679 100644
---- a/reg.c
-+++ b/reg.c
-@@ -256,7 +256,7 @@ static int handle_reg_get(struct nl80211_state *state,
- }
- COMMAND(reg, get, NULL, NL80211_CMD_GET_REG, 0, CIB_NONE, handle_reg_get,
- 	"Print out the kernel's current regulatory domain information.");
--COMMAND(reg, get, NULL, NL80211_CMD_GET_REG, 0, CIB_PHY, handle_reg_get,
-+COMMAND(reg, get, NULL, NL80211_CMD_GET_REG, 0, CIB_PHY, handle_reg_dump,
- 	"Print out the devices' current regulatory domain information.");
- HIDDEN(reg, dump, NULL, NL80211_CMD_GET_REG, NLM_F_DUMP, CIB_NONE,
-        handle_reg_dump);
--- 
-2.26.0.292.g33ef6b2f38-goog
-
diff --git a/net-wireless/iw/files/iw-5.9-iw-handle-positive-error-codes-gracefully.patch b/net-wireless/iw/files/iw-5.9-iw-handle-positive-error-codes-gracefully.patch
new file mode 100644
index 0000000..4fa0e61
--- /dev/null
+++ b/net-wireless/iw/files/iw-5.9-iw-handle-positive-error-codes-gracefully.patch
@@ -0,0 +1,52 @@
+From fa72728c052a5f97ed432f66007654926cef4cb1 Mon Sep 17 00:00:00 2001
+From: Brian Norris <briannorris@chromium.org>
+Date: Tue, 3 Nov 2020 15:56:31 -0800
+Subject: [PATCH] iw: handle positive error codes gracefully
+
+netlink(7) requires error codes to be negative, but since when does a
+man page stop anyone? At a minimum, we shouldn't allow a non-conforming
+vendor command to put us into an infinite loop in the below snippets
+from __handle_cmd():
+
+	err = 1;
+
+	nl_cb_err(cb, NL_CB_CUSTOM, error_handler, &err);
+...
+	while (err > 0)
+		nl_recvmsgs(state->nl_sock, cb);
+
+Signed-off-by: Brian Norris <briannorris@chromium.org>
+Link: https://lore.kernel.org/r/20201103235631.2936594-1-briannorris@chromium.org
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+---
+ iw.c | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/iw.c b/iw.c
+index da71617921d8..35308ba3244a 100644
+--- a/iw.c
++++ b/iw.c
+@@ -287,7 +287,19 @@ static int error_handler(struct sockaddr_nl *nla, struct nlmsgerr *err,
+ 	int *ret = arg;
+ 	int ack_len = sizeof(*nlh) + sizeof(int) + sizeof(*nlh);
+ 
+-	*ret = err->error;
++	if (err->error > 0) {
++		/*
++		 * This is illegal, per netlink(7), but not impossible (think
++		 * "vendor commands"). Callers really expect negative error
++		 * codes, so make that happen.
++		 */
++		fprintf(stderr,
++			"ERROR: received positive netlink error code %d\n",
++			err->error);
++		*ret = -EPROTO;
++	} else {
++		*ret = err->error;
++	}
+ 
+ 	if (!(nlh->nlmsg_flags & NLM_F_ACK_TLVS))
+ 		return NL_STOP;
+-- 
+2.30.0.365.g02bc693789-goog
+
diff --git a/net-wireless/iw/files/iw-5.9-iw-retain___stop___cmd.patch b/net-wireless/iw/files/iw-5.9-iw-retain___stop___cmd.patch
new file mode 100644
index 0000000..6f65f32
--- /dev/null
+++ b/net-wireless/iw/files/iw-5.9-iw-retain___stop___cmd.patch
@@ -0,0 +1,82 @@
+LLD 13 and GNU ld 2.37 support -z start-stop-gc which allows garbage
+collection of C identifier name sections despite the __start_/__stop_
+references.  Simply set the retain attribute so that GCC 11 (if
+configure-time binutils is 2.36 or newer)/Clang 13 will set the
+SHF_GNU_RETAIN section attribute to prevent garbage collection.
+
+Without the patch, there are linker errors like the following with -z
+start-stop-gc:
+ld.lld: error: undefined symbol: __stop___cmd
+>>> referenced by iw.c:418
+>>>               iw.o:(__handle_cmd)
+
+Suggested-by: Fangrui Song <maskray@google.com>
+
+Cc: stable@vger.kernel.org
+
+Signed-off-by: Manoj Gupta <manojgupta@google.com>
+
+crbug/1201805
+
+https://patchwork.kernel.org/project/linux-wireless/patch/20210426163021.3594482-1-manojgupta@google.com/
+
+---
+Changes v1 -> v2:
+Apply the retain attribute to all places with attribute used.
+
+ iw.h | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/iw.h b/iw.h
+index 7f7f4fc..8ca8e44 100644
+--- a/iw.h
++++ b/iw.h
+@@ -118,8 +118,9 @@ struct chandef {
+ 		.parent = _section,					\
+ 		.selector = (_sel),					\
+ 	};								\
++	_Pragma("GCC diagnostic ignored \"-Wattributes\"") 		\
+ 	static struct cmd *__cmd ## _ ## _symname ## _ ## _handler ## _ ## _nlcmd ## _ ## _idby ## _ ## _hidden ## _p \
+-	__attribute__((used,section("__cmd"))) =			\
++	__attribute__((used,retain,section("__cmd"))) =			\
+ 	&__cmd ## _ ## _symname ## _ ## _handler ## _ ## _nlcmd ## _ ## _idby ## _ ## _hidden
+ #define __ACMD(_section, _symname, _name, _args, _nlcmd, _flags, _hidden, _idby, _handler, _help, _sel, _alias)\
+ 	__COMMAND(_section, _symname, _name, _args, _nlcmd, _flags, _hidden, _idby, _handler, _help, _sel);\
+@@ -141,16 +142,18 @@ struct chandef {
+ 		.handler = (_handler),					\
+ 		.help = (_help),					\
+ 	 };								\
++	_Pragma("GCC diagnostic ignored \"-Wattributes\"") 		\
+ 	static struct cmd *__section ## _ ## _name ## _p		\
+-	__attribute__((used,section("__cmd"))) = &__section ## _ ## _name
++	__attribute__((used,retain,section("__cmd"))) = &__section ## _ ## _name
+ 
+ #define SECTION(_name)							\
+ 	struct cmd __section ## _ ## _name = {				\
+ 		.name = (#_name),					\
+ 		.hidden = 1,						\
+ 	};								\
++	_Pragma("GCC diagnostic ignored \"-Wattributes\"") 		\
+ 	static struct cmd *__section ## _ ## _name ## _p		\
+-	__attribute__((used,section("__cmd"))) = &__section ## _ ## _name
++	__attribute__((used,retain,section("__cmd"))) = &__section ## _ ## _name
+ 
+ #define DECLARE_SECTION(_name)						\
+ 	extern struct cmd __section ## _ ## _name;
+@@ -162,13 +165,14 @@ struct vendor_event {
+ };
+ 
+ #define VENDOR_EVENT(_id, _subcmd, _callback)				\
++	_Pragma("GCC diagnostic ignored \"-Wattributes\"") 		\
+ 	const struct vendor_event 					\
+ 	vendor_event_ ## _id ## _ ## _subcmd = {			\
+ 		.vendor_id = _id,					\
+ 		.subcmd = _subcmd,					\
+ 		.callback = _callback,					\
+ 	}, * const vendor_event_ ## _id ## _ ## _subcmd ## _p		\
+-	__attribute__((used,section("vendor_event"))) =			\
++	__attribute__((used,retain,section("vendor_event"))) =		\
+ 		&vendor_event_ ## _id ## _ ## _subcmd
+ 
+ extern const char iw_version[];
+
diff --git a/net-wireless/iw/files/iw-5.9-iw-scan-add-extension-tag-parsing.patch b/net-wireless/iw/files/iw-5.9-iw-scan-add-extension-tag-parsing.patch
new file mode 100644
index 0000000..cc1e981
--- /dev/null
+++ b/net-wireless/iw/files/iw-5.9-iw-scan-add-extension-tag-parsing.patch
@@ -0,0 +1,67 @@
+From 6d8d507daa752c4068194a7ce1607b745ea6d3c3 Mon Sep 17 00:00:00 2001
+From: Brian Norris <briannorris@chromium.org>
+Date: Tue, 17 Nov 2020 19:39:33 -0800
+Subject: [PATCH] iw: scan: add extension tag parsing
+
+HE IEs are part of the extension tag (ID 255).
+
+Signed-off-by: Brian Norris <briannorris@chromium.org>
+Link: https://lore.kernel.org/r/20201118033936.3667788-2-briannorris@chromium.org
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+---
+ scan.c | 32 ++++++++++++++++++++++++++++++++
+ 1 file changed, 32 insertions(+)
+
+diff --git a/scan.c b/scan.c
+index 8c23483ecede..58a09983c5c7 100644
+--- a/scan.c
++++ b/scan.c
+@@ -2272,6 +2272,36 @@ static void print_vendor(unsigned char len, unsigned char *data,
+ 	printf("\n");
+ }
+ 
++static const struct ie_print ext_printers[] = {
++};
++
++static void print_extension(unsigned char len, unsigned char *ie,
++			    bool unknown, enum print_ie_type ptype)
++{
++	unsigned char tag;
++
++	if (len < 1) {
++		printf("\tExtension IE: <empty>\n");
++		return;
++	}
++
++	tag = ie[0];
++	if (tag < ARRAY_SIZE(ext_printers) && ext_printers[tag].name &&
++	    ext_printers[tag].flags & BIT(ptype)) {
++		print_ie(&ext_printers[tag], tag, len - 1, ie + 1, NULL);
++		return;
++	}
++
++	if (unknown) {
++		int i;
++
++		printf("\tUnknown Extension ID (%d):", ie[0]);
++		for (i = 1; i < len; i++)
++			printf(" %.2x", ie[i]);
++		printf("\n");
++	}
++}
++
+ void print_ies(unsigned char *ie, int ielen, bool unknown,
+ 	       enum print_ie_type ptype)
+ {
+@@ -2290,6 +2320,8 @@ void print_ies(unsigned char *ie, int ielen, bool unknown,
+ 				 ie[0], ie[1], ie + 2, &ie_buffer);
+ 		} else if (ie[0] == 221 /* vendor */) {
+ 			print_vendor(ie[1], ie + 2, unknown, ptype);
++		} else if (ie[0] == 255 /* extension */) {
++			print_extension(ie[1], ie + 2, unknown, ptype);
+ 		} else if (unknown) {
+ 			int i;
+ 
+-- 
+2.30.0.365.g02bc693789-goog
+
diff --git a/net-wireless/iw/files/iw-5.9-iw-scan-fixup-HE-caps-whitespace.patch b/net-wireless/iw/files/iw-5.9-iw-scan-fixup-HE-caps-whitespace.patch
new file mode 100644
index 0000000..7ca8616
--- /dev/null
+++ b/net-wireless/iw/files/iw-5.9-iw-scan-fixup-HE-caps-whitespace.patch
@@ -0,0 +1,113 @@
+From 9e38deec35fc4af87adb8a96b4afd49340b1e826 Mon Sep 17 00:00:00 2001
+From: Brian Norris <briannorris@chromium.org>
+Date: Tue, 17 Nov 2020 19:39:36 -0800
+Subject: [PATCH] iw: scan: fixup HE caps whitespace
+
+For scans, it's nicer to drop an indentation level, because we don't
+have the "interface type" section that we do in the phy-info version.
+
+The NSS print also had an extra level of indentation, and a spare
+leading space, which made it a bit inconsistent with other sections.
+
+Signed-off-by: Brian Norris <briannorris@chromium.org>
+Link: https://lore.kernel.org/r/20201118033936.3667788-5-briannorris@chromium.org
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+---
+ util.c | 23 +++++++++++++----------
+ 1 file changed, 13 insertions(+), 10 deletions(-)
+
+diff --git a/util.c b/util.c
+index 7cbca3529be6..12ba2181c69b 100644
+--- a/util.c
++++ b/util.c
+@@ -992,21 +992,23 @@ void print_vht_info(__u32 capa, const __u8 *mcs)
+ static void __print_he_capa(const __u16 *mac_cap,
+ 			    const __u16 *phy_cap,
+ 			    const __u16 *mcs_set, size_t mcs_len,
+-			    const __u8 *ppet, int ppet_len)
++			    const __u8 *ppet, int ppet_len,
++			    bool indent)
+ {
+ 	size_t mcs_used;
+ 	int i;
++	const char *pre = indent ? "\t" : "";
+ 
+ 	#define PRINT_HE_CAP(_var, _idx, _bit, _str) \
+ 	do { \
+ 		if (_var[_idx] & BIT(_bit)) \
+-			printf("\t\t\t\t" _str "\n"); \
++			printf("%s\t\t\t" _str "\n", pre); \
+ 	} while (0)
+ 
+ 	#define PRINT_HE_CAP_MASK(_var, _idx, _shift, _mask, _str) \
+ 	do { \
+ 		if ((_var[_idx] >> _shift) & _mask) \
+-			printf("\t\t\t\t" _str ": %d\n", (_var[_idx] >> _shift) & _mask); \
++			printf("%s\t\t\t" _str ": %d\n", pre, (_var[_idx] >> _shift) & _mask); \
+ 	} while (0)
+ 
+ 	#define PRINT_HE_MAC_CAP(...) PRINT_HE_CAP(mac_cap, __VA_ARGS__)
+@@ -1015,7 +1017,7 @@ static void __print_he_capa(const __u16 *mac_cap,
+ 	#define PRINT_HE_PHY_CAP0(_idx, _bit, ...) PRINT_HE_CAP(phy_cap, _idx, _bit + 8, __VA_ARGS__)
+ 	#define PRINT_HE_PHY_CAP_MASK(...) PRINT_HE_CAP_MASK(phy_cap, __VA_ARGS__)
+ 
+-	printf("\t\t\tHE MAC Capabilities (0x");
++	printf("%s\t\tHE MAC Capabilities (0x", pre);
+ 	for (i = 0; i < 3; i++)
+ 		printf("%04x", mac_cap[i]);
+ 	printf("):\n");
+@@ -1055,7 +1057,7 @@ static void __print_he_capa(const __u16 *mac_cap,
+ 	PRINT_HE_MAC_CAP(2, 11, "UL 2x996-Tone RU");
+ 	PRINT_HE_MAC_CAP(2, 12, "OM Control UL MU Data Disable RX");
+ 
+-	printf("\t\t\tHE PHY Capabilities: (0x");
++	printf("%s\t\tHE PHY Capabilities: (0x", pre);
+ 	for (i = 0; i < 11; i++)
+ 		printf("%02x", ((__u8 *)phy_cap)[i + 1]);
+ 	printf("):\n");
+@@ -1140,12 +1142,12 @@ static void __print_he_capa(const __u16 *mac_cap,
+ 
+ 		for (j = 0; j < 2; j++) {
+ 			int k;
+-			printf("\t\t\tHE %s MCS and NSS set %s MHz\n", j ? "TX" : "RX", bw[i]);
++			printf("%s\t\tHE %s MCS and NSS set %s MHz\n", pre, j ? "TX" : "RX", bw[i]);
+ 			for (k = 0; k < 8; k++) {
+ 				__u16 mcs = mcs_set[(i * 2) + j];
+ 				mcs >>= k * 2;
+ 				mcs &= 0x3;
+-				printf("\t\t\t\t\t %d streams: ", k + 1);
++				printf("%s\t\t\t%d streams: ", pre, k + 1);
+ 				if (mcs == 3)
+ 					printf("not supported\n");
+ 				else
+@@ -1166,7 +1168,7 @@ static void __print_he_capa(const __u16 *mac_cap,
+ 	}
+ 
+ 	if (ppet_len && (phy_cap[3] & BIT(15))) {
+-		printf("\t\t\tPPE Threshold ");
++		printf("%s\t\tPPE Threshold ", pre);
+ 		for (i = 0; i < ppet_len; i++)
+ 			if (ppet[i])
+ 				printf("0x%02x ", ppet[i]);
+@@ -1245,7 +1247,8 @@ void print_he_info(struct nlattr *nl_iftype)
+ 		ppet_len = len;
+ 	}
+ 
+-	__print_he_capa(mac_cap, phy_cap, mcs_set, mcs_len, ppet, ppet_len);
++	__print_he_capa(mac_cap, phy_cap, mcs_set, mcs_len, ppet, ppet_len,
++			true);
+ }
+ 
+ void print_he_capability(const uint8_t *ie, int len)
+@@ -1263,7 +1266,7 @@ void print_he_capability(const uint8_t *ie, int len)
+ 	mcs_set = &ie[i];
+ 	mcs_len = len - i;
+ 
+-	__print_he_capa(mac_cap, phy_cap - 1, mcs_set, mcs_len, NULL, 0);
++	__print_he_capa(mac_cap, phy_cap - 1, mcs_set, mcs_len, NULL, 0, false);
+ }
+ 
+ void iw_hexdump(const char *prefix, const __u8 *buf, size_t size)
+-- 
+2.30.0.365.g02bc693789-goog
+
diff --git a/net-wireless/iw/files/iw-5.9-iw-scan-parse-HE-capabilities.patch b/net-wireless/iw/files/iw-5.9-iw-scan-parse-HE-capabilities.patch
new file mode 100644
index 0000000..91ac69e
--- /dev/null
+++ b/net-wireless/iw/files/iw-5.9-iw-scan-parse-HE-capabilities.patch
@@ -0,0 +1,111 @@
+From 17e8564af8bc86c1f5a234000052e5d406f2fdcf Mon Sep 17 00:00:00 2001
+From: Brian Norris <briannorris@chromium.org>
+Date: Tue, 17 Nov 2020 19:39:35 -0800
+Subject: [PATCH] iw: scan: parse HE capabilities
+
+Signed-off-by: Brian Norris <briannorris@chromium.org>
+Link: https://lore.kernel.org/r/20201118033936.3667788-4-briannorris@chromium.org
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+---
+ iw.h   |  1 +
+ scan.c |  8 ++++++++
+ util.c | 30 ++++++++++++++++++++++++++++++
+ 3 files changed, 39 insertions(+)
+
+diff --git a/iw.h b/iw.h
+index 77ed097f229b..807adecd3b06 100644
+--- a/iw.h
++++ b/iw.h
+@@ -213,6 +213,7 @@ void print_ampdu_length(__u8 exponent);
+ void print_ampdu_spacing(__u8 spacing);
+ void print_ht_capability(__u16 cap);
+ void print_vht_info(__u32 capa, const __u8 *mcs);
++void print_he_capability(const uint8_t *ie, int len);
+ void print_he_info(struct nlattr *nl_iftype);
+ 
+ char *channel_width_name(enum nl80211_chan_width width);
+diff --git a/scan.c b/scan.c
+index 58a09983c5c7..dfc136a3943e 100644
+--- a/scan.c
++++ b/scan.c
+@@ -2272,7 +2272,15 @@ static void print_vendor(unsigned char len, unsigned char *data,
+ 	printf("\n");
+ }
+ 
++static void print_he_capa(const uint8_t type, uint8_t len, const uint8_t *data,
++			  const struct print_ies_data *ie_buffer)
++{
++	printf("\n");
++	print_he_capability(data, len);
++}
++
+ static const struct ie_print ext_printers[] = {
++	[35] = { "HE capabilities", print_he_capa, 21, 54, BIT(PRINT_SCAN), },
+ };
+ 
+ static void print_extension(unsigned char len, unsigned char *ie,
+diff --git a/util.c b/util.c
+index cb694378d3e8..7cbca3529be6 100644
+--- a/util.c
++++ b/util.c
+@@ -994,6 +994,7 @@ static void __print_he_capa(const __u16 *mac_cap,
+ 			    const __u16 *mcs_set, size_t mcs_len,
+ 			    const __u8 *ppet, int ppet_len)
+ {
++	size_t mcs_used;
+ 	int i;
+ 
+ 	#define PRINT_HE_CAP(_var, _idx, _bit, _str) \
+@@ -1124,6 +1125,7 @@ static void __print_he_capa(const __u16 *mac_cap,
+ 	PRINT_HE_PHY_CAP(5, 4, "RX Full BW SU Using HE MU PPDU with Compression SIGB");
+ 	PRINT_HE_PHY_CAP(5, 5, "RX Full BW SU Using HE MU PPDU with Non-Compression SIGB");
+ 
++	mcs_used = 0;
+ 	for (i = 0; i < 3; i++) {
+ 		__u8 phy_cap_support[] = { BIT(1) | BIT(2), BIT(3), BIT(4) };
+ 		char *bw[] = { "<= 80", "160", "80+80" };
+@@ -1151,6 +1153,16 @@ static void __print_he_capa(const __u16 *mac_cap,
+ 			}
+ 
+ 		}
++		mcs_used += 2 * sizeof(mcs_set[0]);
++	}
++
++	/* Caller didn't provide ppet; infer it, if there's trailing space. */
++	if (!ppet) {
++		ppet = (const void *)(mcs_set + mcs_used);
++		if (mcs_used < mcs_len)
++			ppet_len = mcs_len - mcs_used;
++		else
++			ppet_len = 0;
+ 	}
+ 
+ 	if (ppet_len && (phy_cap[3] & BIT(15))) {
+@@ -1236,6 +1248,24 @@ void print_he_info(struct nlattr *nl_iftype)
+ 	__print_he_capa(mac_cap, phy_cap, mcs_set, mcs_len, ppet, ppet_len);
+ }
+ 
++void print_he_capability(const uint8_t *ie, int len)
++{
++	const void *mac_cap, *phy_cap, *mcs_set;
++	int mcs_len;
++	int i = 0;
++
++	mac_cap = &ie[i];
++	i += 6;
++
++	phy_cap = &ie[i];
++	i += 11;
++
++	mcs_set = &ie[i];
++	mcs_len = len - i;
++
++	__print_he_capa(mac_cap, phy_cap - 1, mcs_set, mcs_len, NULL, 0);
++}
++
+ void iw_hexdump(const char *prefix, const __u8 *buf, size_t size)
+ {
+ 	size_t i;
+-- 
+2.30.0.365.g02bc693789-goog
+
diff --git a/net-wireless/iw/files/iw-5.9-iw-util-factor-out-HE-capability-parser.patch b/net-wireless/iw/files/iw-5.9-iw-util-factor-out-HE-capability-parser.patch
new file mode 100644
index 0000000..515b246
--- /dev/null
+++ b/net-wireless/iw/files/iw-5.9-iw-util-factor-out-HE-capability-parser.patch
@@ -0,0 +1,217 @@
+From 5735e58434c8bce363d13f9826a84825d6abc261 Mon Sep 17 00:00:00 2001
+From: Brian Norris <briannorris@chromium.org>
+Date: Tue, 17 Nov 2020 19:39:34 -0800
+Subject: [PATCH] iw: util: factor out HE capability parser
+
+We're going to use this for scan parsing.
+
+Signed-off-by: Brian Norris <briannorris@chromium.org>
+Link: https://lore.kernel.org/r/20201118033936.3667788-3-briannorris@chromium.org
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+---
+ util.c | 144 ++++++++++++++++++++++++++++++++-------------------------
+ 1 file changed, 80 insertions(+), 64 deletions(-)
+
+diff --git a/util.c b/util.c
+index 3f1b787b8cbc..cb694378d3e8 100644
+--- a/util.c
++++ b/util.c
+@@ -989,19 +989,11 @@ void print_vht_info(__u32 capa, const __u8 *mcs)
+ 	printf("\t\tVHT TX highest supported: %d Mbps\n", tmp & 0x1fff);
+ }
+ 
+-void print_he_info(struct nlattr *nl_iftype)
++static void __print_he_capa(const __u16 *mac_cap,
++			    const __u16 *phy_cap,
++			    const __u16 *mcs_set, size_t mcs_len,
++			    const __u8 *ppet, int ppet_len)
+ {
+-	struct nlattr *tb[NL80211_BAND_IFTYPE_ATTR_MAX + 1];
+-	struct nlattr *tb_flags[NL80211_IFTYPE_MAX + 1];
+-	char *iftypes[NUM_NL80211_IFTYPES] = {
+-		"Unspec", "Adhoc", "Station", "AP", "AP/VLAN", "WDS", "Monitor",
+-		"Mesh", "P2P/Client", "P2P/Go", "P2P/Device", "OCB", "NAN",
+-	};
+-	__u16 mac_cap[3] = { 0 };
+-	__u16 phy_cap[6] = { 0 };
+-	__u16 mcs_set[6] = { 0 };
+-	__u8 ppet[25] = { 0 };
+-	size_t len;
+ 	int i;
+ 
+ 	#define PRINT_HE_CAP(_var, _idx, _bit, _str) \
+@@ -1022,30 +1014,6 @@ void print_he_info(struct nlattr *nl_iftype)
+ 	#define PRINT_HE_PHY_CAP0(_idx, _bit, ...) PRINT_HE_CAP(phy_cap, _idx, _bit + 8, __VA_ARGS__)
+ 	#define PRINT_HE_PHY_CAP_MASK(...) PRINT_HE_CAP_MASK(phy_cap, __VA_ARGS__)
+ 
+-	nla_parse(tb, NL80211_BAND_IFTYPE_ATTR_MAX,
+-		  nla_data(nl_iftype), nla_len(nl_iftype), NULL);
+-
+-	if (!tb[NL80211_BAND_IFTYPE_ATTR_IFTYPES])
+-		return;
+-
+-	if (nla_parse_nested(tb_flags, NL80211_IFTYPE_MAX,
+-			     tb[NL80211_BAND_IFTYPE_ATTR_IFTYPES], NULL))
+-		return;
+-
+-	printf("\t\tHE Iftypes:");
+-	for (i = 0; i < NUM_NL80211_IFTYPES; i++)
+-		if (nla_get_flag(tb_flags[i]) && iftypes[i])
+-			printf(" %s", iftypes[i]);
+-	printf("\n");
+-
+-	if (tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC]) {
+-		len = nla_len(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC]);
+-		if (len > sizeof(mac_cap))
+-			len = sizeof(mac_cap);
+-		memcpy(mac_cap,
+-		       nla_data(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC]),
+-		       len);
+-	}
+ 	printf("\t\t\tHE MAC Capabilities (0x");
+ 	for (i = 0; i < 3; i++)
+ 		printf("%04x", mac_cap[i]);
+@@ -1086,15 +1054,6 @@ void print_he_info(struct nlattr *nl_iftype)
+ 	PRINT_HE_MAC_CAP(2, 11, "UL 2x996-Tone RU");
+ 	PRINT_HE_MAC_CAP(2, 12, "OM Control UL MU Data Disable RX");
+ 
+-	if (tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY]) {
+-		len = nla_len(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY]);
+-
+-		if (len > sizeof(phy_cap) - 1)
+-			len = sizeof(phy_cap) - 1;
+-		memcpy(&((__u8 *)phy_cap)[1],
+-		       nla_data(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY]),
+-		       len);
+-	}
+ 	printf("\t\t\tHE PHY Capabilities: (0x");
+ 	for (i = 0; i < 11; i++)
+ 		printf("%02x", ((__u8 *)phy_cap)[i + 1]);
+@@ -1165,15 +1124,6 @@ void print_he_info(struct nlattr *nl_iftype)
+ 	PRINT_HE_PHY_CAP(5, 4, "RX Full BW SU Using HE MU PPDU with Compression SIGB");
+ 	PRINT_HE_PHY_CAP(5, 5, "RX Full BW SU Using HE MU PPDU with Non-Compression SIGB");
+ 
+-	if (tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET]) {
+-		len = nla_len(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET]);
+-		if (len > sizeof(mcs_set))
+-			len = sizeof(mcs_set);
+-		memcpy(mcs_set,
+-		       nla_data(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET]),
+-		       len);
+-	}
+-
+ 	for (i = 0; i < 3; i++) {
+ 		__u8 phy_cap_support[] = { BIT(1) | BIT(2), BIT(3), BIT(4) };
+ 		char *bw[] = { "<= 80", "160", "80+80" };
+@@ -1182,6 +1132,10 @@ void print_he_info(struct nlattr *nl_iftype)
+ 		if ((phy_cap[0] & (phy_cap_support[i] << 8)) == 0)
+ 			continue;
+ 
++		/* Supports more, but overflow? Abort. */
++		if ((i * 2 + 2) * sizeof(mcs_set[0]) >= mcs_len)
++			return;
++
+ 		for (j = 0; j < 2; j++) {
+ 			int k;
+ 			printf("\t\t\tHE %s MCS and NSS set %s MHz\n", j ? "TX" : "RX", bw[i]);
+@@ -1199,7 +1153,76 @@ void print_he_info(struct nlattr *nl_iftype)
+ 		}
+ 	}
+ 
+-	len = 0;
++	if (ppet_len && (phy_cap[3] & BIT(15))) {
++		printf("\t\t\tPPE Threshold ");
++		for (i = 0; i < ppet_len; i++)
++			if (ppet[i])
++				printf("0x%02x ", ppet[i]);
++		printf("\n");
++	}
++}
++
++void print_he_info(struct nlattr *nl_iftype)
++{
++	struct nlattr *tb[NL80211_BAND_IFTYPE_ATTR_MAX + 1];
++	struct nlattr *tb_flags[NL80211_IFTYPE_MAX + 1];
++	char *iftypes[NUM_NL80211_IFTYPES] = {
++		"Unspec", "Adhoc", "Station", "AP", "AP/VLAN", "WDS", "Monitor",
++		"Mesh", "P2P/Client", "P2P/Go", "P2P/Device", "OCB", "NAN",
++	};
++	__u16 mac_cap[3] = { 0 };
++	__u16 phy_cap[6] = { 0 };
++	__u16 mcs_set[6] = { 0 };
++	__u8 ppet[25] = { 0 };
++	size_t len;
++	int i;
++	int mcs_len = 0, ppet_len = 0;
++
++	nla_parse(tb, NL80211_BAND_IFTYPE_ATTR_MAX,
++		  nla_data(nl_iftype), nla_len(nl_iftype), NULL);
++
++	if (!tb[NL80211_BAND_IFTYPE_ATTR_IFTYPES])
++		return;
++
++	if (nla_parse_nested(tb_flags, NL80211_IFTYPE_MAX,
++			     tb[NL80211_BAND_IFTYPE_ATTR_IFTYPES], NULL))
++		return;
++
++	printf("\t\tHE Iftypes:");
++	for (i = 0; i < NUM_NL80211_IFTYPES; i++)
++		if (nla_get_flag(tb_flags[i]) && iftypes[i])
++			printf(" %s", iftypes[i]);
++	printf("\n");
++
++	if (tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC]) {
++		len = nla_len(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC]);
++		if (len > sizeof(mac_cap))
++			len = sizeof(mac_cap);
++		memcpy(mac_cap,
++		       nla_data(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC]),
++		       len);
++	}
++
++	if (tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY]) {
++		len = nla_len(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY]);
++
++		if (len > sizeof(phy_cap) - 1)
++			len = sizeof(phy_cap) - 1;
++		memcpy(&((__u8 *)phy_cap)[1],
++		       nla_data(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY]),
++		       len);
++	}
++
++	if (tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET]) {
++		len = nla_len(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET]);
++		if (len > sizeof(mcs_set))
++			len = sizeof(mcs_set);
++		memcpy(mcs_set,
++		       nla_data(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET]),
++		       len);
++		mcs_len = len;
++	}
++
+ 	if (tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE]) {
+ 		len = nla_len(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE]);
+ 		if (len > sizeof(ppet))
+@@ -1207,17 +1230,10 @@ void print_he_info(struct nlattr *nl_iftype)
+ 		memcpy(ppet,
+ 		       nla_data(tb[NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE]),
+ 		       len);
++		ppet_len = len;
+ 	}
+ 
+-	if (len && (phy_cap[3] & BIT(15))) {
+-		size_t i;
+-
+-		printf("\t\t\tPPE Threshold ");
+-		for (i = 0; i < len; i++)
+-			if (ppet[i])
+-				printf("0x%02x ", ppet[i]);
+-		printf("\n");
+-	}
++	__print_he_capa(mac_cap, phy_cap, mcs_set, mcs_len, ppet, ppet_len);
+ }
+ 
+ void iw_hexdump(const char *prefix, const __u8 *buf, size_t size)
+-- 
+2.30.0.365.g02bc693789-goog
+
diff --git a/net-wireless/iw/iw-5.4-r1.ebuild b/net-wireless/iw/iw-5.4-r1.ebuild
deleted file mode 120000
index dc39052..0000000
--- a/net-wireless/iw/iw-5.4-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-iw-5.4.ebuild
\ No newline at end of file
diff --git a/net-wireless/iw/iw-5.4.ebuild b/net-wireless/iw/iw-5.4.ebuild
deleted file mode 100644
index c470435..0000000
--- a/net-wireless/iw/iw-5.4.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit toolchain-funcs
-
-DESCRIPTION="nl80211-based configuration utility for wireless devices using the mac80211 kernel stack"
-HOMEPAGE="https://wireless.kernel.org/en/users/Documentation/iw"
-SRC_URI="https://www.kernel.org/pub/software/network/${PN}/${P}.tar.xz"
-
-LICENSE="ISC"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="dev-libs/libnl:="
-DEPEND="${RDEPEND}"
-BDEPEND="virtual/pkgconfig"
-
-PATCHES=(
-	"${FILESDIR}"/0000-update-nl80211.patch
-	"${FILESDIR}"/0001-update-nl80211.patch
-	"${FILESDIR}"/0002-reg-parse-NO_HE.patch
-	"${FILESDIR}"/0003-phy-index.patch
-	"${FILESDIR}"/0004-event-wiphy-reg-change.patch
-	"${FILESDIR}"/0005-phy-reg-get.patch
-)
-
-src_prepare() {
-	default
-	tc-export CC LD PKG_CONFIG
-
-	# do not compress man pages by default.
-	sed 's@\(iw\.8\)\.gz@\1@' -i Makefile || die
-}
-
-src_compile() {
-	CFLAGS="${CFLAGS} ${CPPFLAGS}" \
-	LDFLAGS="${CFLAGS} ${LDFLAGS}" \
-	emake V=1
-}
-
-src_install() {
-	emake V=1 DESTDIR="${D}" PREFIX="${EPREFIX}/usr" install
-}
diff --git a/net-wireless/iw/iw-5.9-r3.ebuild b/net-wireless/iw/iw-5.9-r3.ebuild
new file mode 120000
index 0000000..db8d676
--- /dev/null
+++ b/net-wireless/iw/iw-5.9-r3.ebuild
@@ -0,0 +1 @@
+iw-5.9.ebuild
\ No newline at end of file
diff --git a/net-wireless/iw/iw-5.9.ebuild b/net-wireless/iw/iw-5.9.ebuild
new file mode 100644
index 0000000..d7c6d5a
--- /dev/null
+++ b/net-wireless/iw/iw-5.9.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs
+
+DESCRIPTION="nl80211 configuration utility for wireless devices using the mac80211 stack"
+HOMEPAGE="https://wireless.wiki.kernel.org/en/users/Documentation/iw"
+SRC_URI="https://www.kernel.org/pub/software/network/${PN}/${P}.tar.xz"
+
+LICENSE="ISC"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="dev-libs/libnl:="
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-5.9-iw-handle-positive-error-codes-gracefully.patch"
+	"${FILESDIR}/${PN}-5.9-iw-scan-add-extension-tag-parsing.patch"
+	"${FILESDIR}/${PN}-5.9-iw-util-factor-out-HE-capability-parser.patch"
+	"${FILESDIR}/${PN}-5.9-iw-scan-parse-HE-capabilities.patch"
+	"${FILESDIR}/${PN}-5.9-iw-scan-fixup-HE-caps-whitespace.patch"
+	"${FILESDIR}/${PN}-5.9-iw-retain___stop___cmd.patch"
+)
+
+src_prepare() {
+	default
+	tc-export CC LD PKG_CONFIG
+
+	# do not compress man pages by default.
+	sed 's@\(iw\.8\)\.gz@\1@' -i Makefile || die
+}
+
+src_compile() {
+	CFLAGS="${CFLAGS} ${CPPFLAGS}" \
+	LDFLAGS="${CFLAGS} ${LDFLAGS}" \
+	emake V=1
+}
+
+src_install() {
+	emake V=1 DESTDIR="${D}" PREFIX="${EPREFIX}/usr" install
+}
diff --git a/net-wireless/marvell_sd8787/marvell_sd8787-14.64.2.47-r60.ebuild b/net-wireless/marvell_sd8787/marvell_sd8787-14.64.2.47-r60.ebuild
deleted file mode 100644
index 81f9190..0000000
--- a/net-wireless/marvell_sd8787/marvell_sd8787-14.64.2.47-r60.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="4"
-CROS_WORKON_COMMIT="854d5b47fe714bbf42dfb495b9af5f3893ca5530"
-CROS_WORKON_TREE="96903a8ed3af141cbbf01b6ec074e5a95fc3dc9d"
-CROS_WORKON_PROJECT="chromiumos/third_party/marvell"
-CROS_WORKON_LOCALNAME="marvell"
-
-inherit eutils cros-workon
-
-DESCRIPTION="Marvell SD8787 firmware image"
-HOMEPAGE="http://www.marvell.com/"
-LICENSE="Marvell-sd8787"
-
-SLOT="0"
-KEYWORDS="*"
-IUSE="pcie"
-
-RESTRICT="binchecks strip test"
-
-DEPEND=""
-RDEPEND=""
-
-src_install() {
-	insinto /lib/firmware/mrvl
-	if use pcie; then
-		doins pcie8*.bin
-	else
-		doins sd8*.bin
-	fi
-}
diff --git a/net-wireless/marvell_sd8787/marvell_sd8787-14.64.2.47-r62.ebuild b/net-wireless/marvell_sd8787/marvell_sd8787-14.64.2.47-r62.ebuild
new file mode 100644
index 0000000..6d8b984
--- /dev/null
+++ b/net-wireless/marvell_sd8787/marvell_sd8787-14.64.2.47-r62.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="4"
+CROS_WORKON_COMMIT="a1da785c038730d7d900415945688f6fb76175f4"
+CROS_WORKON_TREE="a0e0d6a8237cfff8d336dce79ae184b0dfd8204e"
+CROS_WORKON_PROJECT="chromiumos/third_party/marvell"
+CROS_WORKON_LOCALNAME="marvell"
+
+inherit eutils cros-workon
+
+DESCRIPTION="Marvell SD8787 firmware image"
+HOMEPAGE="http://www.marvell.com/"
+LICENSE="Marvell-sd8787"
+
+SLOT="0"
+KEYWORDS="*"
+IUSE="pcie"
+
+RESTRICT="binchecks strip test"
+
+DEPEND=""
+RDEPEND=""
+
+src_install() {
+	insinto /lib/firmware/mrvl
+	if use pcie; then
+		doins pcie8*.bin
+	else
+		doins sd8*.bin
+	fi
+}
diff --git a/net-wireless/systembt/OWNERS b/net-wireless/systembt/OWNERS
new file mode 100644
index 0000000..e99d98e
--- /dev/null
+++ b/net-wireless/systembt/OWNERS
@@ -0,0 +1,3 @@
+abhishekpandit@chromium.org
+sonnysasaka@chromium.org
+alainm@chromium.org
diff --git a/net-wireless/systembt/systembt-0.0.1-r46.ebuild b/net-wireless/systembt/systembt-0.0.1-r46.ebuild
new file mode 100644
index 0000000..119c4ef
--- /dev/null
+++ b/net-wireless/systembt/systembt-0.0.1-r46.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT=("75e289d3e6ade22048818d18980d229a30c32504" "92f4b2f8e2f621609f15d22b23ea0009c342fd4d" "48b28b8680caa31da7b5c4d3d44425a221b0c3ee")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb" "3cc6ea87ef525e84c9ed2cbf6809a6a4895b4ad4" "1e793181081ea50dec9407274b86bde3dfe50a71")
+CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/system/bt" "aosp/platform/system/bt")
+CROS_WORKON_LOCALNAME=("../platform2" "../aosp/system/bt/upstream" "../aosp/system/bt/bringup")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/bt" "${S}/platform2/bt")
+CROS_WORKON_SUBTREE=("common-mk .gn" "" "")
+CROS_WORKON_OPTIONAL_CHECKOUT=(
+	""
+	"use !bt-bringup"
+	"use bt-bringup"
+)
+
+PLATFORM_SUBDIR="bt"
+
+inherit cros-workon platform
+
+DESCRIPTION="Bluetooth Tools and System Daemons for Linux"
+HOMEPAGE="https://android.googlesource.com/platform/system/bt/"
+
+LICENSE="Apache-2.0"
+KEYWORDS="*"
+IUSE="bt-bringup"
+REQUIRED_USE="?? ( bt-bringup )"
+
+DEPEND="
+	dev-libs/modp_b64:=
+	dev-libs/tinyxml2:=
+"
+
+RDEPEND="${DEPEND}"
+
+DOCS=( README.md )
diff --git a/net-wireless/systembt/systembt-9999.ebuild b/net-wireless/systembt/systembt-9999.ebuild
new file mode 100644
index 0000000..64c402d
--- /dev/null
+++ b/net-wireless/systembt/systembt-9999.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_PROJECT=("chromiumos/platform2" "aosp/platform/system/bt" "aosp/platform/system/bt")
+CROS_WORKON_LOCALNAME=("../platform2" "../aosp/system/bt/upstream" "../aosp/system/bt/bringup")
+CROS_WORKON_DESTDIR=("${S}/platform2" "${S}/platform2/bt" "${S}/platform2/bt")
+CROS_WORKON_SUBTREE=("common-mk .gn" "" "")
+CROS_WORKON_OPTIONAL_CHECKOUT=(
+	""
+	"use !bt-bringup"
+	"use bt-bringup"
+)
+
+PLATFORM_SUBDIR="bt"
+
+inherit cros-workon platform
+
+DESCRIPTION="Bluetooth Tools and System Daemons for Linux"
+HOMEPAGE="https://android.googlesource.com/platform/system/bt/"
+
+LICENSE="Apache-2.0"
+KEYWORDS="~*"
+IUSE="bt-bringup"
+REQUIRED_USE="?? ( bt-bringup )"
+
+DEPEND="
+	dev-libs/modp_b64:=
+	dev-libs/tinyxml2:=
+"
+
+RDEPEND="${DEPEND}"
+
+DOCS=( README.md )
diff --git a/net-wireless/wpa_supplicant-2_9/files/init/wpasupplicant.conf b/net-wireless/wpa_supplicant-2_9/files/init/wpasupplicant.conf
index b2ef63d..6cd20b9 100644
--- a/net-wireless/wpa_supplicant-2_9/files/init/wpasupplicant.conf
+++ b/net-wireless/wpa_supplicant-2_9/files/init/wpasupplicant.conf
@@ -14,6 +14,12 @@
 env OPENSSL_CONF=/etc/ssl/openssl.cnf.compat
 env OPENSSL_CHROMIUM_SKIP_TRUSTED_PURPOSE_CHECK=1
 env OPENSSL_CHROMIUM_GENERATE_METRICS=1
+env seccomp_flags='--seccomp-bpf-binary /usr/share/policy/wpa_supplicant.bpf'
+# Use a canary flag, such that we only enable seccomp once per boot. If it
+# crashes for some reason (possibly incomplete seccomp filter?), next time
+# we'll start it without seccomp.
+# TODO(b/177454191): remove this once stabilized.
+env seccomp_disable='/run/wpa_supplicant/tried-seccomp'
 
 # https://crbug.com/783125: "started boot-services" is relatively early in the
 # boot process. This is necessary for getting online quickly, a metric which we
@@ -44,6 +50,11 @@
     warning)   ARGS='-q';;
     error)     ARGS='-qq';;
   esac
-  exec minijail0 -u wpa -g wpa -c 3000 -n -i -- \
+  if [ -e "${seccomp_disable}" ]; then
+    seccomp_flags=''
+  else
+    echo 1 > "${seccomp_disable}"
+  fi
+  exec minijail0 -u wpa -g wpa -c 3000 -n -i ${seccomp_flags} -- \
     /usr/sbin/wpa_supplicant -u -s ${ARGS} -O/run/wpa_supplicant
 end script
diff --git a/net-wireless/wpa_supplicant-2_9/files/seccomp/wpa_supplicant-amd64.policy b/net-wireless/wpa_supplicant-2_9/files/seccomp/wpa_supplicant-amd64.policy
new file mode 100644
index 0000000..5459d0d
--- /dev/null
+++ b/net-wireless/wpa_supplicant-2_9/files/seccomp/wpa_supplicant-amd64.policy
@@ -0,0 +1,76 @@
+# Copyright 2021 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.
+
+clock_gettime: 1
+sendmsg: 1
+select: 1
+ioctl: arg1 == TIOCOUTQ || arg1 == SIOCGIFNAME || arg1 == TCGETS || \
+       arg1 == SIOCSIFFLAGS || arg1 == SIOCGIFHWADDR || \
+       arg1 == SIOCGIFFLAGS || arg1 == SIOCGIFINDEX || arg1 == SIOCGIFADDR
+getsockopt: 1
+recvmsg: 1
+setsockopt: 1
+rt_sigprocmask: 1
+recvfrom: 1
+getpid: 1
+close: 1
+socket: arg0 == AF_INET || arg0 == AF_NETLINK || arg0 == AF_UNIX || arg0 == AF_PACKET
+gettid: 1
+tgkill: 1
+rt_sigreturn: 1
+mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+lstat: 1
+sendto: 1
+read: 1
+madvise: 1
+futex: 1
+openat: 1
+fstat: 1
+stat: 1
+mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+bind: 1
+fcntl: 1
+poll: 1
+write: 1
+brk: 1
+rt_sigaction: 1
+getsockname: 1
+readlink: 1
+access: 1
+munmap: 1
+mlock: 1
+munlock: 1
+connect: 1
+getrandom: 1
+arch_prctl: 1
+set_tid_address: 1
+set_robust_list: 1
+prlimit64: 1
+clock_getres: 1
+getresuid: 1
+getresgid: 1
+geteuid: 1
+lseek: 1
+sysinfo: 1
+clone: 1
+setpriority: 1
+prctl: arg0 == PR_SET_NAME
+mkdir: 1
+chmod: 1
+pipe2: 1
+epoll_ctl: 1
+epoll_wait: 1
+restart_syscall: 1
+exit: 1
+exit_group: 1
+alarm: 1
+creat: 1
+epoll_create1: 1
+unlink: 1
+rmdir: 1
+wait4: 1
+flock: 1
+getuid: 1
+getgid: 1
+getegid: 1
diff --git a/net-wireless/wpa_supplicant-2_9/files/seccomp/wpa_supplicant-arm.policy b/net-wireless/wpa_supplicant-2_9/files/seccomp/wpa_supplicant-arm.policy
new file mode 100644
index 0000000..501395a
--- /dev/null
+++ b/net-wireless/wpa_supplicant-2_9/files/seccomp/wpa_supplicant-arm.policy
@@ -0,0 +1,82 @@
+# Copyright 2021 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.
+
+clock_gettime: 1
+clock_gettime64: 1
+getpid: 1
+gettimeofday: 1
+send: 1
+sendmsg: 1
+ioctl: arg1 == TIOCOUTQ || arg1 == SIOCGIFNAME || arg1 == TCGETS || \
+       arg1 == SIOCSIFFLAGS || arg1 == SIOCGIFHWADDR || \
+       arg1 == SIOCGIFFLAGS || arg1 == SIOCGIFINDEX || arg1 == SIOCGIFADDR
+getsockopt: 1
+recvmsg: 1
+gettid: 1
+_newselect: 1
+madvise: 1
+futex: 1
+setsockopt: 1
+epoll_wait: 1
+mmap2: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+munmap: 1
+mlock: 1
+munlock: 1
+read: 1
+poll: 1
+write: 1
+rt_sigprocmask: 1
+recvfrom: 1
+tgkill: 1
+sigreturn: 1
+close: 1
+socket: arg0 == AF_INET || arg0 == AF_NETLINK || arg0 == AF_UNIX || arg0 == AF_PACKET
+openat: 1
+mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+sendto: 1
+fstat64: 1
+lstat64: 1
+stat64: 1
+brk: 1
+fcntl64: 1
+bind: 1
+getsockname: 1
+rt_sigaction: 1
+readlink: 1
+geteuid32: 1
+getuid32: 1
+getgid32: 1
+getegid32: 1
+access: 1
+connect: 1
+set_robust_list: 1
+getrandom: 1
+mkdir: 1
+chmod: 1
+pipe2: 1
+epoll_ctl: 1
+uname: 1
+ARM_set_tls: 1
+set_tid_address: 1
+ugetrlimit: 1
+clock_getres: 1
+clock_getres_time64: 1
+getresuid32: 1
+getresgid32: 1
+_llseek: 1
+sysinfo: 1
+clone: 1
+sched_getattr: 1
+sched_setattr: 1
+setpriority: 1
+prctl: arg0 == PR_SET_NAME
+epoll_create1: 1
+unlink: 1
+rmdir: 1
+restart_syscall: 1
+exit: 1
+exit_group: 1
+rt_sigreturn: 1
+setitimer: 1
+wait4: 1
diff --git a/net-wireless/wpa_supplicant-2_9/files/seccomp/wpa_supplicant-arm64.policy b/net-wireless/wpa_supplicant-2_9/files/seccomp/wpa_supplicant-arm64.policy
new file mode 100644
index 0000000..75e357c
--- /dev/null
+++ b/net-wireless/wpa_supplicant-2_9/files/seccomp/wpa_supplicant-arm64.policy
@@ -0,0 +1,72 @@
+# Copyright 2021 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.
+
+getpid: 1
+sendto: 1
+recvmsg: 1
+ioctl: arg1 == TIOCOUTQ || arg1 == SIOCGIFNAME || arg1 == TCGETS || \
+       arg1 == SIOCSIFFLAGS || arg1 == SIOCGIFHWADDR || \
+       arg1 == SIOCGIFFLAGS || arg1 == SIOCGIFINDEX || arg1 == SIOCGIFADDR
+getsockopt: 1
+sendmsg: 1
+gettid: 1
+setsockopt: 1
+madvise: 1
+pselect6: 1
+close: 1
+futex: 1
+epoll_pwait: 1
+recvfrom: 1
+rt_sigprocmask: 1
+mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+write: 1
+munmap: 1
+mlock: 1
+munlock: 1
+socket: arg0 == AF_PACKET || arg0 == AF_INET || arg0 == AF_NETLINK || arg0 == AF_UNIX
+read: 1
+openat: 1
+rt_sigreturn: 1
+tgkill: 1
+ppoll: 1
+fstat: 1
+newfstatat: 1
+mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
+bind: 1
+fcntl: 1
+readlinkat: 1
+brk: 1
+epoll_ctl: 1
+getsockname: 1
+rt_sigaction: 1
+unlinkat: 1
+mkdirat: 1
+fchmodat: 1
+faccessat: 1
+set_robust_list: 1
+geteuid: 1
+getrandom: 1
+getuid: 1
+getgid: 1
+getegid: 1
+set_tid_address: 1
+prlimit64: 1
+exit_group: 1
+setitimer: 1
+clone: 1
+connect: 1
+pipe2: 1
+wait4: 1
+flock: 1
+getresuid: 1
+getresgid: 1
+lseek: 1
+sysinfo: 1
+sched_getattr: 1
+sched_setattr: 1
+setpriority: 1
+prctl: arg0 == PR_SET_NAME
+epoll_create1: 1
+restart_syscall: 1
+exit: 1
diff --git a/net-wireless/wpa_supplicant-2_9/wpa_supplicant-2_9-2.9-r12.ebuild b/net-wireless/wpa_supplicant-2_9/wpa_supplicant-2_9-2.9-r12.ebuild
deleted file mode 100644
index 92ce3a7..0000000
--- a/net-wireless/wpa_supplicant-2_9/wpa_supplicant-2_9-2.9-r12.ebuild
+++ /dev/null
@@ -1,419 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="b33e9035721e89c5c8dd153b7353202e4544ba62"
-CROS_WORKON_TREE="6d582cf0466d6c65df648fffaf3dc947511ac537"
-CROS_WORKON_PROJECT="chromiumos/third_party/hostap"
-CROS_WORKON_LOCALNAME="../third_party/wpa_supplicant-2.9"
-CROS_WORKON_EGIT_BRANCH="wpa_supplicant-2.9"
-
-inherit cros-sanitizers cros-workon eutils qmake-utils systemd toolchain-funcs user
-
-DESCRIPTION="IEEE 802.1X/WPA supplicant for secure wireless transfers"
-HOMEPAGE="https://w1.fi/wpa_supplicant/"
-LICENSE="|| ( GPL-2 BSD )"
-
-SLOT="0"
-KEYWORDS="*"
-IUSE="ap bindist dbus debug eap-sim +hs2-0 libressl p2p ps3 qt5 readline selinux smartcard systemd +tdls uncommon-eap-types wifi_hostap_test wps kernel_linux kernel_FreeBSD wimax"
-
-CDEPEND="
-	chromeos-base/minijail
-	dbus? ( sys-apps/dbus )
-	kernel_linux? (
-		dev-libs/libnl:3
-		net-wireless/crda
-	)
-	!kernel_linux? ( net-libs/libpcap )
-	qt5? (
-		dev-qt/qtcore:5
-		dev-qt/qtgui:5
-		dev-qt/qtsvg:5
-		dev-qt/qtwidgets:5
-	)
-	readline? (
-		sys-libs/ncurses:0
-		sys-libs/readline:0
-	)
-	!libressl? ( dev-libs/openssl:0=[bindist=] )
-	libressl? ( dev-libs/libressl:0= )
-	smartcard? ( dev-libs/engine_pkcs11 )
-"
-DEPEND="${CDEPEND}
-	virtual/pkgconfig
-"
-RDEPEND="${CDEPEND}
-	!net-wireless/wpa_supplicant
-	!net-wireless/wpa_supplicant-2_8
-	selinux? ( sec-policy/selinux-networkmanager )
-"
-
-# S="${WORKDIR}/${P}/${PN}"
-src_unpack() {
-	cros-workon_src_unpack
-	S+="/wpa_supplicant"
-}
-
-Kconfig_style_config() {
-		#param 1 is CONFIG_* item
-		#param 2 is what to set it = to, defaulting in y
-		CONFIG_PARAM="${CONFIG_HEADER:-CONFIG_}$1"
-		setting="${2:-y}"
-
-		if [ ! $setting = n ]; then
-			#first remove any leading "# " if $2 is not n
-			sed -i "/^# *$CONFIG_PARAM=/s/^# *//" .config || echo "Kconfig_style_config error uncommenting $CONFIG_PARAM"
-			#set item = $setting (defaulting to y)
-			sed -i "/^$CONFIG_PARAM\>/s/=.*/=$setting/" .config || echo "Kconfig_style_config error setting $CONFIG_PARAM=$setting"
-			if [ -z "$( grep ^$CONFIG_PARAM= .config )" ] ; then
-				echo "$CONFIG_PARAM=$setting" >>.config
-			fi
-		else
-			#ensure item commented out
-			sed -i "/^$CONFIG_PARAM\>/s/$CONFIG_PARAM/# $CONFIG_PARAM/" .config || echo "Kconfig_style_config error commenting $CONFIG_PARAM"
-		fi
-}
-
-src_prepare() {
-	# net/bpf.h needed for net-libs/libpcap on Gentoo/FreeBSD
-	sed -i \
-		-e "s:\(#include <pcap\.h>\):#include <net/bpf.h>\n\1:" \
-		../src/l2_packet/l2_packet_freebsd.c || die
-
-	# People seem to take the example configuration file too literally (bug #102361)
-	sed -i \
-		-e "s:^\(opensc_engine_path\):#\1:" \
-		-e "s:^\(pkcs11_engine_path\):#\1:" \
-		-e "s:^\(pkcs11_module_path\):#\1:" \
-		wpa_supplicant.conf || die
-
-	# Change configuration to match Gentoo locations (bug #143750)
-	sed -i \
-		-e "s:/usr/lib/opensc:/usr/$(get_libdir):" \
-		-e "s:/usr/lib/pkcs11:/usr/$(get_libdir):" \
-		wpa_supplicant.conf || die
-
-	# systemd entries to D-Bus service files (bug #372877)
-	# echo 'SystemdService=wpa_supplicant.service' \
-	# 	| tee -a dbus/*.service >/dev/null || die
-
-	cd "${WORKDIR}/${P}" || die
-
-	if use wimax; then
-		# generate-libeap-peer.patch comes before
-		# fix-undefined-reference-to-random_get_bytes.patch
-		# epatch "${FILESDIR}/${P}-generate-libeap-peer.patch"
-
-		# multilib-strict fix (bug #373685)
-		sed -e "s/\/usr\/lib/\/usr\/$(get_libdir)/" -i src/eap_peer/Makefile || die
-	fi
-
-	# bug (320097)
-	# epatch "${FILESDIR}/${P}-do-not-call-dbus-functions-with-NULL-path.patch"
-
-	# TODO - NEED TESTING TO SEE IF STILL NEEDED, NOT COMPATIBLE WITH 1.0 OUT OF THE BOX,
-	# SO WOULD BE NICE TO JUST DROP IT, IF IT IS NOT NEEDED.
-	# bug (374089)
-	#epatch "${FILESDIR}/${P}-dbus-WPAIE-fix.patch"
-
-	# bug (565270)
-	# epatch "${FILESDIR}/${P}-libressl.patch"
-	default
-}
-
-src_configure() {
-	sanitizers-setup-env
-	# Toolchain setup
-	tc-export CC
-
-	cp defconfig .config || die
-
-	# Basic setup
-	Kconfig_style_config CTRL_IFACE
-	Kconfig_style_config MATCH_IFACE
-	Kconfig_style_config BACKEND file
-	Kconfig_style_config IBSS_RSN
-	Kconfig_style_config IEEE80211W
-	Kconfig_style_config IEEE80211R
-	Kconfig_style_config IEEE80211N
-	Kconfig_style_config IEEE80211AC
-	Kconfig_style_config WNM
-	Kconfig_style_config HT_OVERRIDES
-	Kconfig_style_config VHT_OVERRIDES
-	Kconfig_style_config OCV
-	Kconfig_style_config TLSV11
-	Kconfig_style_config TLSV12
-	Kconfig_style_config GETRANDOM
-
-	# Basic authentication methods
-	# NOTE: we don't set GPSK or SAKE as they conflict
-	# with the below options
-	Kconfig_style_config EAP_GTC
-	Kconfig_style_config EAP_MD5
-	Kconfig_style_config EAP_OTP
-	Kconfig_style_config EAP_PAX
-	Kconfig_style_config EAP_PSK
-	Kconfig_style_config EAP_TLV
-	Kconfig_style_config EAP_EXE
-	Kconfig_style_config IEEE8021X_EAPOL
-	Kconfig_style_config PKCS12
-	Kconfig_style_config PEERKEY
-	Kconfig_style_config EAP_LEAP
-	Kconfig_style_config EAP_MSCHAPV2
-	Kconfig_style_config EAP_PEAP
-	Kconfig_style_config EAP_TEAP
-	Kconfig_style_config EAP_TLS
-	Kconfig_style_config EAP_TTLS
-
-	# Enabling background scanning.
-	Kconfig_style_config BGSCAN_SIMPLE
-	Kconfig_style_config BGSCAN_LEARN
-
-	if use dbus ; then
-		Kconfig_style_config CTRL_IFACE_DBUS
-		Kconfig_style_config CTRL_IFACE_DBUS_NEW
-		Kconfig_style_config CTRL_IFACE_DBUS_INTRO
-	else
-		Kconfig_style_config CTRL_IFACE_DBUS n
-		Kconfig_style_config CTRL_IFACE_DBUS_NEW n
-		Kconfig_style_config CTRL_IFACE_DBUS_INTRO n
-	fi
-
-	# Enable support for writing debug info to a log file and syslog.
-	Kconfig_style_config DEBUG_FILE
-	Kconfig_style_config DEBUG_SYSLOG
-	Kconfig_style_config DEBUG_SYSLOG_FACILITY LOG_LOCAL6
-
-	if use hs2-0 ; then
-		Kconfig_style_config INTERWORKING
-		Kconfig_style_config HS20
-	fi
-
-	if use uncommon-eap-types; then
-		Kconfig_style_config EAP_GPSK
-		Kconfig_style_config EAP_SAKE
-		Kconfig_style_config EAP_GPSK_SHA256
-		Kconfig_style_config EAP_IKEV2
-		Kconfig_style_config EAP_EKE
-	fi
-
-	if use eap-sim ; then
-		# Smart card authentication
-		Kconfig_style_config EAP_SIM
-		Kconfig_style_config EAP_AKA
-		Kconfig_style_config EAP_AKA_PRIME
-		# CHROMIUM: We don't have smartcard support. Instead include the
-		# client library for external processing via the control interface.
-		# Kconfig_style_config PCSC
-		Kconfig_style_config BUILD_WPA_CLIENT_SO
-	fi
-
-	if use readline ; then
-		# readline/history support for wpa_cli
-		Kconfig_style_config READLINE
-	else
-		#internal line edit mode for wpa_cli
-		Kconfig_style_config WPA_CLI_EDIT
-	fi
-
-	Kconfig_style_config TLS openssl
-	Kconfig_style_config FST
-	if ! use bindist || use libressl; then
-		Kconfig_style_config EAP_PWD
-		#WPA3
-		Kconfig_style_config OWE
-		Kconfig_style_config SAE
-		Kconfig_style_config DPP
-		Kconfig_style_config SUITEB192
-	fi
-	if ! use bindist && ! use libressl; then
-		Kconfig_style_config SUITEB
-	fi
-
-	if use smartcard ; then
-		Kconfig_style_config SMARTCARD
-	else
-		Kconfig_style_config SMARTCARD n
-	fi
-
-	if use tdls ; then
-		Kconfig_style_config TDLS
-	fi
-
-	if use kernel_linux ; then
-		# Linux specific drivers
-		# Kconfig_style_config DRIVER_ATMEL
-		# Kconfig_style_config DRIVER_HOSTAP
-		# Kconfig_style_config DRIVER_IPW
-		Kconfig_style_config DRIVER_NL80211
-		# Kconfig_style_config DRIVER_RALINK
-		Kconfig_style_config DRIVER_WEXT
-		Kconfig_style_config DRIVER_WIRED
-
-		if use ps3 ; then
-			Kconfig_style_config DRIVER_PS3
-		fi
-
-	elif use kernel_FreeBSD ; then
-		# FreeBSD specific driver
-		Kconfig_style_config DRIVER_BSD
-	fi
-
-	# Wi-Fi Protected Setup (WPS)
-	if use wps ; then
-		Kconfig_style_config WPS
-		Kconfig_style_config WPS2
-		# USB Flash Drive
-		Kconfig_style_config WPS_UFD
-		# External Registrar
-		Kconfig_style_config WPS_ER
-		# Universal Plug'n'Play
-		Kconfig_style_config WPS_UPNP
-		# Near Field Communication
-		Kconfig_style_config WPS_NFC
-	else
-		Kconfig_style_config WPS n
-		Kconfig_style_config WPS2 n
-		Kconfig_style_config WPS_UFD n
-		Kconfig_style_config WPS_ER n
-		Kconfig_style_config WPS_UPNP n
-		Kconfig_style_config WPS_NFC n
-	fi
-
-	# Wi-Fi Direct (WiDi)
-	if use p2p ; then
-		Kconfig_style_config P2P
-		Kconfig_style_config WIFI_DISPLAY
-	else
-		Kconfig_style_config P2P n
-		Kconfig_style_config WIFI_DISPLAY n
-	fi
-
-	# Access Point Mode
-	if use ap ; then
-		Kconfig_style_config AP
-		# only AP currently support mesh networks.
-		Kconfig_style_config MESH
-	else
-		# (ChromeOS) Explicitly disable to override enabling from defconfig.
-		Kconfig_style_config AP        n
-		Kconfig_style_config MESH      n
-	fi
-
-	# Enable mitigation against certain attacks against TKIP
-	Kconfig_style_config DELAYED_MIC_ERROR_REPORT
-
-	if use qt5 ; then
-		pushd "${S}"/wpa_gui-qt4 > /dev/null || die
-		eqmake5 wpa_gui.pro
-		popd > /dev/null || die
-	fi
-}
-
-src_compile() {
-	einfo "Building wpa_supplicant"
-	emake V=1 BINDIR=/usr/sbin
-
-	if use wimax; then
-		emake -C ../src/eap_peer clean
-		emake -C ../src/eap_peer
-	fi
-
-	if use qt5; then
-		einfo "Building wpa_gui"
-		emake -C "${S}"/wpa_gui-qt4
-	fi
-}
-
-src_install() {
-	dosbin wpa_supplicant
-	dobin wpa_cli wpa_passphrase
-
-	# baselayout-1 compat
-	if has_version "<sys-apps/baselayout-2.0.0"; then
-		dodir /sbin
-		dosym /usr/sbin/wpa_supplicant /sbin/wpa_supplicant
-		dodir /bin
-		dosym /usr/bin/wpa_cli /bin/wpa_cli
-	fi
-
-	if has_version ">=sys-apps/openrc-0.5.0"; then
-		newinitd "${FILESDIR}/${PN}-init.d" wpa_supplicant
-		newconfd "${FILESDIR}/${PN}-conf.d" wpa_supplicant
-	fi
-
-	dodoc ChangeLog {eap_testing,todo}.txt README{,-WPS} \
-		wpa_supplicant.conf
-
-	newdoc .config build-config
-
-	if use qt5 ; then
-		into /usr
-		dobin wpa_gui-qt4/wpa_gui
-		doicon wpa_gui-qt4/icons/wpa_gui.svg
-		make_desktop_entry wpa_gui "WPA Supplicant Administration GUI" "wpa_gui" "Qt;Network;"
-	fi
-
-	use wimax && emake DESTDIR="${D}" -C ../src/eap_peer install
-
-	if use eap-sim ; then
-		# Install this library and header for the external processor.
-		dolib.so libwpa_client.so
-
-		insinto /usr/include/wpa_supplicant
-		doins ../src/common/wpa_ctrl.h
-	fi
-
-	if use dbus ; then
-		# DBus introspection XML file.
-		insinto /usr/share/dbus-1/interfaces
-		doins ${FILESDIR}/dbus_bindings/fi.w1.wpa_supplicant1.xml || die
-		insinto /etc/dbus-1/system.d
-		# Allow (but don't require) wpa_supplicant to run as root only
-		# when building hwsim targets.
-		if use wifi_hostap_test; then
-			newins "${FILESDIR}"/dbus_permissions/root_fi.w1.wpa_supplicant1.conf \
-				fi.w1.wpa_supplicant1.conf
-		else
-			doins "${FILESDIR}"/dbus_permissions/fi.w1.wpa_supplicant1.conf
-		fi
-
-		popd > /dev/null
-	fi
-	# Install the init scripts
-	if use systemd; then
-		insinto /usr/share
-		systemd_dounit ${FILESDIR}/init/wpasupplicant.service
-		systemd_enable_service boot-services.target wpasupplicant.service
-		systemd_dotmpfilesd ${FILESDIR}/init/wpasupplicant-directories.conf
-	else
-		insinto /etc/init
-		doins ${FILESDIR}/init/wpasupplicant.conf
-	fi
-}
-
-pkg_preinst() {
-	enewuser "wpa"
-	enewgroup "wpa"
-}
-
-pkg_postinst() {
-	if [[ -e ${ROOT}etc/wpa_supplicant.conf ]] ; then
-		echo
-		ewarn "WARNING: your old configuration file ${ROOT}etc/wpa_supplicant.conf"
-		ewarn "needs to be moved to ${ROOT}etc/wpa_supplicant/wpa_supplicant.conf"
-	fi
-
-	if use bindist; then
-		if ! use libressl; then
-			ewarn "Using bindist use flag presently breaks WPA3 (specifically SAE, OWE, DPP, and FILS)."
-			ewarn "This is incredibly undesirable"
-		fi
-	fi
-	if use libressl; then
-		ewarn "Libressl doesn't support SUITEB (part of WPA3)"
-		ewarn "but it does support SUITEB192 (the upgraded strength version of the same)"
-		ewarn "You probably don't care.  Patches welcome"
-	fi
-}
diff --git a/net-wireless/wpa_supplicant-2_9/wpa_supplicant-2_9-2.9-r27.ebuild b/net-wireless/wpa_supplicant-2_9/wpa_supplicant-2_9-2.9-r27.ebuild
new file mode 100644
index 0000000..4412904
--- /dev/null
+++ b/net-wireless/wpa_supplicant-2_9/wpa_supplicant-2_9-2.9-r27.ebuild
@@ -0,0 +1,444 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="8ac12f2cec9b9c227e8719fca00d4d6c75cf7270"
+CROS_WORKON_TREE="76ef3707eefe49ae08b8c889ada1c4a987fbaa6e"
+CROS_WORKON_PROJECT="chromiumos/third_party/hostap"
+CROS_WORKON_LOCALNAME="../third_party/wpa_supplicant-2.9"
+CROS_WORKON_EGIT_BRANCH="wpa_supplicant-2.9"
+
+inherit cros-sanitizers cros-workon eutils flag-o-matic qmake-utils systemd toolchain-funcs user
+
+DESCRIPTION="IEEE 802.1X/WPA supplicant for secure wireless transfers"
+HOMEPAGE="https://w1.fi/wpa_supplicant/"
+LICENSE="|| ( GPL-2 BSD )"
+
+SLOT="0"
+KEYWORDS="*"
+IUSE="ap bindist dbus debug eap-sim +hs2-0 libressl mbo p2p ps3 qt5 readline +seccomp selinux smartcard systemd +tdls uncommon-eap-types wifi_hostap_test +wnm wps kernel_linux kernel_FreeBSD wimax"
+
+CDEPEND="
+	chromeos-base/minijail
+	dbus? ( sys-apps/dbus )
+	kernel_linux? (
+		dev-libs/libnl:3
+		net-wireless/crda
+	)
+	!kernel_linux? ( net-libs/libpcap )
+	qt5? (
+		dev-qt/qtcore:5
+		dev-qt/qtgui:5
+		dev-qt/qtsvg:5
+		dev-qt/qtwidgets:5
+	)
+	readline? (
+		sys-libs/ncurses:0
+		sys-libs/readline:0
+	)
+	!libressl? ( dev-libs/openssl:0=[bindist=] )
+	libressl? ( dev-libs/libressl:0= )
+	smartcard? ( dev-libs/engine_pkcs11 )
+"
+DEPEND="${CDEPEND}
+	virtual/pkgconfig
+"
+RDEPEND="${CDEPEND}
+	!net-wireless/wpa_supplicant
+	!net-wireless/wpa_supplicant-2_8
+	selinux? ( sec-policy/selinux-networkmanager )
+"
+
+# S="${WORKDIR}/${P}/${PN}"
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/wpa_supplicant"
+}
+
+Kconfig_style_config() {
+		#param 1 is CONFIG_* item
+		#param 2 is what to set it = to, defaulting in y
+		CONFIG_PARAM="${CONFIG_HEADER:-CONFIG_}$1"
+		setting="${2:-y}"
+
+		if [ ! $setting = n ]; then
+			#first remove any leading "# " if $2 is not n
+			sed -i "/^# *$CONFIG_PARAM=/s/^# *//" .config || echo "Kconfig_style_config error uncommenting $CONFIG_PARAM"
+			#set item = $setting (defaulting to y)
+			sed -i "/^$CONFIG_PARAM\>/s/=.*/=$setting/" .config || echo "Kconfig_style_config error setting $CONFIG_PARAM=$setting"
+			if [ -z "$( grep ^$CONFIG_PARAM= .config )" ] ; then
+				echo "$CONFIG_PARAM=$setting" >>.config
+			fi
+		else
+			#ensure item commented out
+			sed -i "/^$CONFIG_PARAM\>/s/$CONFIG_PARAM/# $CONFIG_PARAM/" .config || echo "Kconfig_style_config error commenting $CONFIG_PARAM"
+		fi
+}
+
+src_prepare() {
+	# net/bpf.h needed for net-libs/libpcap on Gentoo/FreeBSD
+	sed -i \
+		-e "s:\(#include <pcap\.h>\):#include <net/bpf.h>\n\1:" \
+		../src/l2_packet/l2_packet_freebsd.c || die
+
+	# People seem to take the example configuration file too literally (bug #102361)
+	sed -i \
+		-e "s:^\(opensc_engine_path\):#\1:" \
+		-e "s:^\(pkcs11_engine_path\):#\1:" \
+		-e "s:^\(pkcs11_module_path\):#\1:" \
+		wpa_supplicant.conf || die
+
+	# Change configuration to match Gentoo locations (bug #143750)
+	sed -i \
+		-e "s:/usr/lib/opensc:/usr/$(get_libdir):" \
+		-e "s:/usr/lib/pkcs11:/usr/$(get_libdir):" \
+		wpa_supplicant.conf || die
+
+	# systemd entries to D-Bus service files (bug #372877)
+	# echo 'SystemdService=wpa_supplicant.service' \
+	# 	| tee -a dbus/*.service >/dev/null || die
+
+	cd "${WORKDIR}/${P}" || die
+
+	if use wimax; then
+		# generate-libeap-peer.patch comes before
+		# fix-undefined-reference-to-random_get_bytes.patch
+		# epatch "${FILESDIR}/${P}-generate-libeap-peer.patch"
+
+		# multilib-strict fix (bug #373685)
+		sed -e "s/\/usr\/lib/\/usr\/$(get_libdir)/" -i src/eap_peer/Makefile || die
+	fi
+
+	# bug (320097)
+	# epatch "${FILESDIR}/${P}-do-not-call-dbus-functions-with-NULL-path.patch"
+
+	# TODO - NEED TESTING TO SEE IF STILL NEEDED, NOT COMPATIBLE WITH 1.0 OUT OF THE BOX,
+	# SO WOULD BE NICE TO JUST DROP IT, IF IT IS NOT NEEDED.
+	# bug (374089)
+	#epatch "${FILESDIR}/${P}-dbus-WPAIE-fix.patch"
+
+	# bug (565270)
+	# epatch "${FILESDIR}/${P}-libressl.patch"
+	default
+}
+
+src_configure() {
+	sanitizers-setup-env
+	# Toolchain setup
+	append-flags -Werror
+	tc-export CC
+
+	cp defconfig .config || die
+
+	# Basic setup
+	Kconfig_style_config CTRL_IFACE
+	Kconfig_style_config MATCH_IFACE
+	Kconfig_style_config BACKEND file
+	Kconfig_style_config IBSS_RSN
+	Kconfig_style_config IEEE80211W
+	Kconfig_style_config IEEE80211R
+	Kconfig_style_config IEEE80211N
+	Kconfig_style_config IEEE80211AC
+	Kconfig_style_config HT_OVERRIDES
+	Kconfig_style_config VHT_OVERRIDES
+	Kconfig_style_config OCV
+	Kconfig_style_config TLSV11
+	Kconfig_style_config TLSV12
+	Kconfig_style_config GETRANDOM
+
+	# Basic authentication methods
+	# NOTE: we don't set GPSK or SAKE as they conflict
+	# with the below options
+	Kconfig_style_config EAP_GTC
+	Kconfig_style_config EAP_MD5
+	Kconfig_style_config EAP_OTP
+	Kconfig_style_config EAP_PAX
+	Kconfig_style_config EAP_PSK
+	Kconfig_style_config EAP_TLV
+	Kconfig_style_config EAP_EXE
+	Kconfig_style_config IEEE8021X_EAPOL
+	Kconfig_style_config PKCS12
+	Kconfig_style_config PEERKEY
+	Kconfig_style_config EAP_LEAP
+	Kconfig_style_config EAP_MSCHAPV2
+	Kconfig_style_config EAP_PEAP
+	Kconfig_style_config EAP_TEAP
+	Kconfig_style_config EAP_TLS
+	Kconfig_style_config EAP_TTLS
+
+	# Enabling background scanning.
+	Kconfig_style_config BGSCAN_SIMPLE
+	Kconfig_style_config BGSCAN_LEARN
+
+	if use dbus ; then
+		Kconfig_style_config CTRL_IFACE_DBUS
+		Kconfig_style_config CTRL_IFACE_DBUS_NEW
+		Kconfig_style_config CTRL_IFACE_DBUS_INTRO
+	else
+		Kconfig_style_config CTRL_IFACE_DBUS n
+		Kconfig_style_config CTRL_IFACE_DBUS_NEW n
+		Kconfig_style_config CTRL_IFACE_DBUS_INTRO n
+	fi
+
+	# Enable support for writing debug info to a log file and syslog.
+	Kconfig_style_config DEBUG_FILE
+	Kconfig_style_config DEBUG_SYSLOG
+	Kconfig_style_config DEBUG_SYSLOG_FACILITY LOG_LOCAL6
+
+	if use hs2-0 ; then
+		Kconfig_style_config INTERWORKING
+		Kconfig_style_config HS20
+	fi
+
+	# Enable support for MBO (Multi-Band Operation), see
+	# https://www.wi-fi.org/discover-wi-fi/wi-fi-agile-multiband
+	if use mbo ; then
+		Kconfig_style_config MBO
+	else
+		Kconfig_style_config MBO n
+	fi
+
+	if use uncommon-eap-types; then
+		Kconfig_style_config EAP_GPSK
+		Kconfig_style_config EAP_SAKE
+		Kconfig_style_config EAP_GPSK_SHA256
+		Kconfig_style_config EAP_IKEV2
+		Kconfig_style_config EAP_EKE
+	fi
+
+	if use eap-sim ; then
+		# Smart card authentication
+		Kconfig_style_config EAP_SIM
+		Kconfig_style_config EAP_AKA
+		Kconfig_style_config EAP_AKA_PRIME
+		# CHROMIUM: We don't have smartcard support. Instead include the
+		# client library for external processing via the control interface.
+		# Kconfig_style_config PCSC
+		Kconfig_style_config BUILD_WPA_CLIENT_SO
+	fi
+
+	if use readline ; then
+		# readline/history support for wpa_cli
+		Kconfig_style_config READLINE
+	else
+		#internal line edit mode for wpa_cli
+		Kconfig_style_config WPA_CLI_EDIT
+	fi
+
+	Kconfig_style_config TLS openssl
+	Kconfig_style_config FST
+	if ! use bindist || use libressl; then
+		Kconfig_style_config EAP_PWD
+		#WPA3
+		Kconfig_style_config OWE
+		Kconfig_style_config SAE
+		Kconfig_style_config DPP
+		Kconfig_style_config SUITEB192
+	fi
+	if ! use bindist && ! use libressl; then
+		Kconfig_style_config SUITEB
+	fi
+
+	if use smartcard ; then
+		Kconfig_style_config SMARTCARD
+	else
+		Kconfig_style_config SMARTCARD n
+	fi
+
+	if use tdls ; then
+		Kconfig_style_config TDLS
+	fi
+
+	if use kernel_linux ; then
+		# Linux specific drivers
+		# Kconfig_style_config DRIVER_ATMEL
+		# Kconfig_style_config DRIVER_HOSTAP
+		# Kconfig_style_config DRIVER_IPW
+		Kconfig_style_config DRIVER_NL80211
+		# Kconfig_style_config DRIVER_RALINK
+		Kconfig_style_config DRIVER_WEXT
+		Kconfig_style_config DRIVER_WIRED
+
+		if use ps3 ; then
+			Kconfig_style_config DRIVER_PS3
+		fi
+
+	elif use kernel_FreeBSD ; then
+		# FreeBSD specific driver
+		Kconfig_style_config DRIVER_BSD
+	fi
+
+	# Wi-Fi Protected Setup (WPS)
+	if use wps ; then
+		Kconfig_style_config WPS
+		Kconfig_style_config WPS2
+		# USB Flash Drive
+		Kconfig_style_config WPS_UFD
+		# External Registrar
+		Kconfig_style_config WPS_ER
+		# Universal Plug'n'Play
+		Kconfig_style_config WPS_UPNP
+		# Near Field Communication
+		Kconfig_style_config WPS_NFC
+	else
+		Kconfig_style_config WPS n
+		Kconfig_style_config WPS2 n
+		Kconfig_style_config WPS_UFD n
+		Kconfig_style_config WPS_ER n
+		Kconfig_style_config WPS_UPNP n
+		Kconfig_style_config WPS_NFC n
+	fi
+
+	# Wi-Fi Direct (WiDi)
+	if use p2p ; then
+		Kconfig_style_config P2P
+		Kconfig_style_config WIFI_DISPLAY
+	else
+		Kconfig_style_config P2P n
+		Kconfig_style_config WIFI_DISPLAY n
+	fi
+
+	# Access Point Mode
+	if use ap ; then
+		Kconfig_style_config AP
+		# only AP currently support mesh networks.
+		Kconfig_style_config MESH
+	else
+		# (ChromeOS) Explicitly disable to override enabling from defconfig.
+		Kconfig_style_config AP        n
+		Kconfig_style_config MESH      n
+	fi
+
+	# Enable mitigation against certain attacks against TKIP
+	Kconfig_style_config DELAYED_MIC_ERROR_REPORT
+
+	# Turn on 802.11v Wireless Network Management
+	if use wnm ; then
+		Kconfig_style_config WNM
+	else
+		Kconfig_style_config WNM       n
+	fi
+
+	if use qt5 ; then
+		pushd "${S}"/wpa_gui-qt4 > /dev/null || die
+		eqmake5 wpa_gui.pro
+		popd > /dev/null || die
+	fi
+}
+
+src_compile() {
+	einfo "Building wpa_supplicant"
+	emake V=1 BINDIR=/usr/sbin
+
+	if use wimax; then
+		emake -C ../src/eap_peer clean
+		emake -C ../src/eap_peer
+	fi
+
+	if use qt5; then
+		einfo "Building wpa_gui"
+		emake -C "${S}"/wpa_gui-qt4
+	fi
+}
+
+src_install() {
+	dosbin wpa_supplicant
+	dobin wpa_cli wpa_passphrase
+
+	# baselayout-1 compat
+	if has_version "<sys-apps/baselayout-2.0.0"; then
+		dodir /sbin
+		dosym /usr/sbin/wpa_supplicant /sbin/wpa_supplicant
+		dodir /bin
+		dosym /usr/bin/wpa_cli /bin/wpa_cli
+	fi
+
+	if has_version ">=sys-apps/openrc-0.5.0"; then
+		newinitd "${FILESDIR}/${PN}-init.d" wpa_supplicant
+		newconfd "${FILESDIR}/${PN}-conf.d" wpa_supplicant
+	fi
+
+	dodoc ChangeLog {eap_testing,todo}.txt README{,-WPS} \
+		wpa_supplicant.conf
+
+	newdoc .config build-config
+
+	if use qt5 ; then
+		into /usr
+		dobin wpa_gui-qt4/wpa_gui
+		doicon wpa_gui-qt4/icons/wpa_gui.svg
+		make_desktop_entry wpa_gui "WPA Supplicant Administration GUI" "wpa_gui" "Qt;Network;"
+	fi
+
+	use wimax && emake DESTDIR="${D}" -C ../src/eap_peer install
+
+	if use eap-sim ; then
+		# Install this library and header for the external processor.
+		dolib.so libwpa_client.so
+
+		insinto /usr/include/wpa_supplicant
+		doins ../src/common/wpa_ctrl.h
+	fi
+
+	if use dbus ; then
+		# DBus introspection XML file.
+		insinto /usr/share/dbus-1/interfaces
+		doins ${FILESDIR}/dbus_bindings/fi.w1.wpa_supplicant1.xml || die
+		insinto /etc/dbus-1/system.d
+		# Allow (but don't require) wpa_supplicant to run as root only
+		# when building hwsim targets.
+		if use wifi_hostap_test; then
+			newins "${FILESDIR}"/dbus_permissions/root_fi.w1.wpa_supplicant1.conf \
+				fi.w1.wpa_supplicant1.conf
+		else
+			doins "${FILESDIR}"/dbus_permissions/fi.w1.wpa_supplicant1.conf
+		fi
+	fi
+	# Install the init scripts
+	if use systemd; then
+		insinto /usr/share
+		systemd_dounit ${FILESDIR}/init/wpasupplicant.service
+		systemd_enable_service boot-services.target wpasupplicant.service
+		systemd_dotmpfilesd ${FILESDIR}/init/wpasupplicant-directories.conf
+	else
+		insinto /etc/init
+		doins ${FILESDIR}/init/wpasupplicant.conf
+		if use seccomp; then
+			local policy="${FILESDIR}/seccomp/wpa_supplicant-${ARCH}.policy"
+			local policy_out="${ED}/usr/share/policy/wpa_supplicant.bpf"
+			dodir /usr/share/policy
+			compile_seccomp_policy \
+				--arch-json "${SYSROOT}/build/share/constants.json" \
+				--default-action trap "${policy}" "${policy_out}" \
+				|| die "failed to compile seccomp policy ${policy}"
+		else
+			sed -i '/^env seccomp_flags=/s:=.*:="":' \
+				"${ED}"/etc/init/wpasupplicant.conf || die
+		fi
+	fi
+}
+
+pkg_preinst() {
+	enewuser "wpa"
+	enewgroup "wpa"
+}
+
+pkg_postinst() {
+	if [[ -e ${ROOT}etc/wpa_supplicant.conf ]] ; then
+		echo
+		ewarn "WARNING: your old configuration file ${ROOT}etc/wpa_supplicant.conf"
+		ewarn "needs to be moved to ${ROOT}etc/wpa_supplicant/wpa_supplicant.conf"
+	fi
+
+	if use bindist; then
+		if ! use libressl; then
+			ewarn "Using bindist use flag presently breaks WPA3 (specifically SAE, OWE, DPP, and FILS)."
+			ewarn "This is incredibly undesirable"
+		fi
+	fi
+	if use libressl; then
+		ewarn "Libressl doesn't support SUITEB (part of WPA3)"
+		ewarn "but it does support SUITEB192 (the upgraded strength version of the same)"
+		ewarn "You probably don't care.  Patches welcome"
+	fi
+}
diff --git a/net-wireless/wpa_supplicant-2_9/wpa_supplicant-2_9-9999.ebuild b/net-wireless/wpa_supplicant-2_9/wpa_supplicant-2_9-9999.ebuild
index f3814d0..73755c5 100644
--- a/net-wireless/wpa_supplicant-2_9/wpa_supplicant-2_9-9999.ebuild
+++ b/net-wireless/wpa_supplicant-2_9/wpa_supplicant-2_9-9999.ebuild
@@ -6,7 +6,7 @@
 CROS_WORKON_LOCALNAME="../third_party/wpa_supplicant-2.9"
 CROS_WORKON_EGIT_BRANCH="wpa_supplicant-2.9"
 
-inherit cros-sanitizers cros-workon eutils qmake-utils systemd toolchain-funcs user
+inherit cros-sanitizers cros-workon eutils flag-o-matic qmake-utils systemd toolchain-funcs user
 
 DESCRIPTION="IEEE 802.1X/WPA supplicant for secure wireless transfers"
 HOMEPAGE="https://w1.fi/wpa_supplicant/"
@@ -14,7 +14,7 @@
 
 SLOT="0"
 KEYWORDS="~*"
-IUSE="ap bindist dbus debug eap-sim +hs2-0 libressl p2p ps3 qt5 readline selinux smartcard systemd +tdls uncommon-eap-types wifi_hostap_test wps kernel_linux kernel_FreeBSD wimax"
+IUSE="ap bindist dbus debug eap-sim +hs2-0 libressl mbo p2p ps3 qt5 readline +seccomp selinux smartcard systemd +tdls uncommon-eap-types wifi_hostap_test +wnm wps kernel_linux kernel_FreeBSD wimax"
 
 CDEPEND="
 	chromeos-base/minijail
@@ -123,6 +123,7 @@
 src_configure() {
 	sanitizers-setup-env
 	# Toolchain setup
+	append-flags -Werror
 	tc-export CC
 
 	cp defconfig .config || die
@@ -136,7 +137,6 @@
 	Kconfig_style_config IEEE80211R
 	Kconfig_style_config IEEE80211N
 	Kconfig_style_config IEEE80211AC
-	Kconfig_style_config WNM
 	Kconfig_style_config HT_OVERRIDES
 	Kconfig_style_config VHT_OVERRIDES
 	Kconfig_style_config OCV
@@ -188,6 +188,14 @@
 		Kconfig_style_config HS20
 	fi
 
+	# Enable support for MBO (Multi-Band Operation), see
+	# https://www.wi-fi.org/discover-wi-fi/wi-fi-agile-multiband
+	if use mbo ; then
+		Kconfig_style_config MBO
+	else
+		Kconfig_style_config MBO n
+	fi
+
 	if use uncommon-eap-types; then
 		Kconfig_style_config EAP_GPSK
 		Kconfig_style_config EAP_SAKE
@@ -302,6 +310,13 @@
 	# Enable mitigation against certain attacks against TKIP
 	Kconfig_style_config DELAYED_MIC_ERROR_REPORT
 
+	# Turn on 802.11v Wireless Network Management
+	if use wnm ; then
+		Kconfig_style_config WNM
+	else
+		Kconfig_style_config WNM       n
+	fi
+
 	if use qt5 ; then
 		pushd "${S}"/wpa_gui-qt4 > /dev/null || die
 		eqmake5 wpa_gui.pro
@@ -376,8 +391,6 @@
 		else
 			doins "${FILESDIR}"/dbus_permissions/fi.w1.wpa_supplicant1.conf
 		fi
-
-		popd > /dev/null
 	fi
 	# Install the init scripts
 	if use systemd; then
@@ -388,6 +401,18 @@
 	else
 		insinto /etc/init
 		doins ${FILESDIR}/init/wpasupplicant.conf
+		if use seccomp; then
+			local policy="${FILESDIR}/seccomp/wpa_supplicant-${ARCH}.policy"
+			local policy_out="${ED}/usr/share/policy/wpa_supplicant.bpf"
+			dodir /usr/share/policy
+			compile_seccomp_policy \
+				--arch-json "${SYSROOT}/build/share/constants.json" \
+				--default-action trap "${policy}" "${policy_out}" \
+				|| die "failed to compile seccomp policy ${policy}"
+		else
+			sed -i '/^env seccomp_flags=/s:=.*:="":' \
+				"${ED}"/etc/init/wpasupplicant.conf || die
+		fi
 	fi
 }
 
diff --git a/profiles/arch/amd64/package.use.mask b/profiles/arch/amd64/package.use.mask
index 5e320ab..af011b4 100644
--- a/profiles/arch/amd64/package.use.mask
+++ b/profiles/arch/amd64/package.use.mask
@@ -156,3 +156,4 @@
 # Robert Buchholz <rbu@gentoo.org> (16 Aug 2008)
 # masked in base, unmask for x86/amd64
 dev-python/kaa-base -tls
+
diff --git a/profiles/arch/arm/package.use b/profiles/arch/arm/package.use
new file mode 100644
index 0000000..11e4599
--- /dev/null
+++ b/profiles/arch/arm/package.use
@@ -0,0 +1,8 @@
+# Copyright 2021 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.
+
+# Denis Nikitin <denik@chromium.org> (5 Feb 2021)
+# Enable debug fission on 32-bit targets.
+# Otherwise the unstripped Chrome binary will exceed 4G limit.
+chromeos-base/chromeos-chrome debug_fission
diff --git a/profiles/arch/arm/package.use.mask b/profiles/arch/arm/package.use.mask
index 7956666..f053fec 100644
--- a/profiles/arch/arm/package.use.mask
+++ b/profiles/arch/arm/package.use.mask
@@ -37,3 +37,6 @@
 # These are only used on 32-bit ARM targets.
 sys-devel/gcc -hardfp -thumb
 sys-libs/gcc-libs -hardfp -thumb
+
+# Masking as Lacros isn't supported on this arch.
+virtual/target-chromium-os lacros_rootfs
diff --git a/profiles/arch/arm64/package.use.mask b/profiles/arch/arm64/package.use.mask
index 41b87eb..7208b7d 100644
--- a/profiles/arch/arm64/package.use.mask
+++ b/profiles/arch/arm64/package.use.mask
@@ -7,6 +7,10 @@
 # doesn't compile for arm yet.
 chromeos-base/chromeos-chrome authpolicy
 
+# Denis Nikitin <denik@chromium.org> (1 Feb 2021)
+# Mask debug fission on 64-bit targets, b/178492639.
+chromeos-base/chromeos-chrome debug_fission
+
 # Markus Meier <maekke@gentoo.org> (27 Sep 2009)
 # mask media-gfx/imagemagick[autotrace] as autotrace is not keyworded
 media-gfx/imagemagick autotrace
@@ -33,3 +37,6 @@
 # David Hendricks <dhendrix@chromium.org> (10 Oct 2011)
 # libpci will cause program to exit(1) during init if PCI not present in system
 sys-apps/flashrom drkaiser gfxnvidia nicintel nicintel_spi nicrealtek ogp_spi satasii
+
+# Masking as Lacros isn't supported on this arch.
+virtual/target-chromium-os lacros_rootfs
diff --git a/profiles/base/make.defaults b/profiles/base/make.defaults
index b8d3794..1c4d8fd 100644
--- a/profiles/base/make.defaults
+++ b/profiles/base/make.defaults
@@ -1,16 +1,15 @@
 # Copyright 1999-2015 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
-# $Id$
 #
 # System-wide defaults for the Portage system
 # See portage(5) manpage
 
 # Profile IUSE injection (applies only to ebuilds which use EAPI 5 or later)
-IUSE_IMPLICIT="prefix prefix-guest"
+IUSE_IMPLICIT="prefix prefix-guest prefix-stack"
 USE_EXPAND_UNPREFIXED="ARCH"
 USE_EXPAND_IMPLICIT="ARCH ELIBC KERNEL USERLAND"
 USE_EXPAND_VALUES_ARCH="alpha amd64 amd64-fbsd amd64-linux arm arm-linux arm64 hppa hppa-hpux ia64 ia64-hpux ia64-linux m68k m68k-mint mips nios2 ppc ppc64 ppc64-linux ppc-aix ppc-macos ppc-openbsd riscv s390 sh sparc sparc64-freebsd sparc64-solaris sparc-fbsd sparc-solaris x64-cygwin x64-freebsd x64-macos x64-openbsd x64-solaris x86 x86-cygwin x86-fbsd x86-freebsd x86-interix x86-linux x86-macos x86-netbsd x86-openbsd x86-solaris x86-winnt"
-USE_EXPAND_VALUES_ELIBC="AIX Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mintlib musl NetBSD OpenBSD SunOS uclibc Winnt"
+USE_EXPAND_VALUES_ELIBC="AIX bionic Cygwin Darwin DragonFly FreeBSD glibc HPUX Interix mingw mintlib musl NetBSD OpenBSD SunOS uclibc Winnt"
 USE_EXPAND_VALUES_KERNEL="AIX Darwin FreeBSD freemint HPUX linux NetBSD OpenBSD SunOS Winnt"
 USE_EXPAND_VALUES_USERLAND="BSD GNU"
 
diff --git a/profiles/base/package.mask b/profiles/base/package.mask
index 66e54f0..8bba7ff 100644
--- a/profiles/base/package.mask
+++ b/profiles/base/package.mask
@@ -1,10 +1,12 @@
 # Mask the package by default to force each board to unmask the specific
 # version they require.
+~sys-apps/fwupd-9998
 sys-firmware/analogix-anx3429-firmware
 sys-firmware/parade-ps8751a3-firmware
 sys-firmware/parade-ps8751a3-firmware-canary
 sys-firmware/parade-ps8805a2-firmware
 sys-firmware/parade-ps8815a0-firmware
 sys-firmware/parade-ps8815a1-firmware
+sys-firmware/parade-ps8815a2-firmware
 sys-firmware/parade-ps8705a2-firmware
 sys-firmware/parade-ps8705a3-firmware
diff --git a/profiles/base/profile.bashrc b/profiles/base/profile.bashrc
index b8e232b..4045eef 100644
--- a/profiles/base/profile.bashrc
+++ b/profiles/base/profile.bashrc
@@ -2,10 +2,6 @@
 # Distributed under the terms of the GNU General Public License v2
 # $Header: /var/cvsroot/gentoo-x86/profiles/base/profile.bashrc,v 1.3 2009/07/21 00:08:05 zmedico Exp $
 
-# Set LANG=C globally because it speeds up build times, and we don't need
-# localized messages inside of our builds.
-export LANG=C
-
 # Since unittests on the buildbots don't automatically get access to an
 # X server, don't let local dev stations get access either.  If a test
 # really needs an X server, they should launch their own with Xvfb.
@@ -92,13 +88,20 @@
 	[[ ${cros_setup_hooks_run+set} == "set" ]] && return
 
 	local phase
-	for phase in {pre,post}_{src_{unpack,prepare,configure,compile,test,install},pkg_{{pre,post}{inst,rm},setup}} ; do
+	for phase in {pre,post}_{src_{unpack,prepare,configure,compile,test,install},pkg_{{pre,post}{inst,rm},setup,nofetch}} ; do
 		eval "${phase}() { cros_stack_hooks ${phase} ; }"
 	done
 	export cros_setup_hooks_run="booya"
 }
 cros_setup_hooks
 
+cros_post_pkg_nofetch_distdir() {
+	# Let the user know where to find DISTDIR when they need to manually
+	# download a package.
+	einfo "On Chromium OS, DISTDIR is /var/cache/distfiles/ inside the chroot"
+	einfo "and ~/chromiumos/.cache/distfiles/ outside the chroot."
+}
+
 cros_emit_build_metric() {
 	# We only enable build metrics on servers currently, but we need to make
 	# sure the binpkgs they produce are usable when deployed for developers
@@ -305,8 +308,22 @@
 		sys-devel/arc-llvm|\
 		sys-devel/gdb|\
 		sys-kernel/arcvm-kernel-*|\
-		sys-kernel/chromeos-kernel-*|\
+		sys-kernel/chromeos-kernel-3_18|\
+		sys-kernel/chromeos-kernel-4_14|\
+		sys-kernel/chromeos-kernel-4_19|\
+		sys-kernel/chromeos-kernel-4_19-ht|\
+		sys-kernel/chromeos-kernel-4_4|\
+		sys-kernel/chromeos-kernel-5_10|\
+		sys-kernel/chromeos-kernel-5_10-manatee|\
+		sys-kernel/chromeos-kernel-5_4|\
+		sys-kernel/chromeos-kernel-5_4-manatee|\
+		sys-kernel/chromeos-kernel-5_4-shadowkeep|\
+		sys-kernel/chromeos-kernel-experimental|\
+		sys-kernel/chromeos-kernel-falconlite-5_4|\
+		sys-kernel/chromeos-kernel-next|\
+		sys-kernel/chromeos-kernel-upstream|\
 		sys-kernel/dump-capture-kernel|\
+		sys-kernel/gasket|\
 		sys-kernel/gw-kernel-*|\
 		sys-kernel/kernel-beaglebone-*|\
 		sys-kernel/lakitu-kernel-*|\
@@ -375,7 +392,6 @@
 		sys-boot/depthcharge|\
 		sys-boot/grub-lakitu|\
 		sys-boot/libpayload|\
-		sys-boot/qca-framework|\
 		sys-boot/syslinux|\
 		sys-firmware/chromeos-fpmcu-release-bloonchipper|\
 		sys-firmware/chromeos-fpmcu-release-dartmonkey|\
diff --git a/profiles/default/linux/package.use b/profiles/default/linux/package.use
index e035c81..31b943c 100644
--- a/profiles/default/linux/package.use
+++ b/profiles/default/linux/package.use
@@ -75,8 +75,6 @@
 sys-kernel/chromeos-kernel-4_14 kernel_afdo
 sys-kernel/chromeos-kernel-4_4 kernel_afdo
 sys-kernel/chromeos-kernel-3_18 kernel_afdo
-sys-kernel/chromeos-kernel-3_14 kernel_afdo
-sys-kernel/chromeos-kernel-3_8 kernel_afdo
 
 # start using coreboot-sdk across firmware packages
 sys-boot/coreboot		coreboot-sdk
@@ -87,3 +85,7 @@
 
 # clang doesn't recognize gcc pragmas, so libgcrypt needs to turn off -O flags.
 dev-libs/libgcrypt	o-flag-munging
+
+# Use hostname from coreutils so we don't require net-tools anymore.
+sys-apps/coreutils hostname
+sys-apps/net-tools -hostname
diff --git a/profiles/features/embedded/make.defaults b/profiles/features/embedded/make.defaults
index f4584e4..f9b2164 100644
--- a/profiles/features/embedded/make.defaults
+++ b/profiles/features/embedded/make.defaults
@@ -41,9 +41,15 @@
 # embedded devices.
 USE="${USE} -diagnostics"
 
+# Disable the missive. Features not evaluated on embedded devices.
+USE="${USE} -missive"
+
 # Disable Perfetto daemons on embedded devices.
 USE="${USE} -perfetto"
 
+# Disable security-anomaly detection daemon on embedded devices.
+USE="${USE} -secanomalyd"
+
 # No support for zero-copy camera stack in Chrome.
 USE="${USE} -video_capture_use_gpu_memory_buffer"
 
@@ -53,5 +59,17 @@
 # Disable oobe config.
 USE="${USE} -oobe_config"
 
+# Disable Downloadable Content (DLC).
+USE="${USE} -dlc"
+
+# Disable rootfs Lacros.
+USE="${USE} -lacros_rootfs"
+
+# Disable dns-proxy.
+USE="${USE} -dns-proxy"
+
+# Disable Data Leak Prevention daemon (DLP).
+USE="${USE} -dlp"
+
 # Make each board select the firmware it needs.
 LINUX_FIRMWARE="-*"
diff --git a/profiles/features/kernel/buildtest/package.use b/profiles/features/kernel/buildtest/package.use
index 700150d..b71df69 100644
--- a/profiles/features/kernel/buildtest/package.use
+++ b/profiles/features/kernel/buildtest/package.use
@@ -1,15 +1,12 @@
 # This profile is used to build Linux kernels with GCC/GNU binutils based
 # toolchain instead of LLVM based toolchain.
-sys-kernel/chromeos-kernel-3_8 buildtest -clang -lld -llvm_ias
-sys-kernel/chromeos-kernel-3_10 buildtest -clang -lld -llvm_ias
-sys-kernel/chromeos-kernel-3_14 buildtest -clang -lld -llvm_ias
-sys-kernel/chromeos-kernel-3_18 buildtest -clang -lld -llvm_ias
-sys-kernel/chromeos-kernel-4_4 buildtest -clang -lld -llvm_ias
-# We can build chromeos-4.14 with clang, but not with lld
+sys-kernel/chromeos-kernel-3_18 buildtest frozen_gcc -clang -lld -llvm_ias
+sys-kernel/chromeos-kernel-4_4 buildtest frozen_gcc -clang -lld -llvm_ias
+# We can build chromeos-4.14 with clang, but not with lld.
 sys-kernel/chromeos-kernel-4_14 buildtest -lld -kernel_afdo -llvm_ias
 # For chromeos-4.19 and later we can build with clang and lld.
 sys-kernel/chromeos-kernel-4_19 buildtest -llvm_ias
-sys-kernel/chromeos-kernel-5_4 buildtest -llvm_ias
-sys-kernel/chromeos-kernel-5_10 buildtest -llvm_ias
+sys-kernel/chromeos-kernel-5_4 buildtest
+sys-kernel/chromeos-kernel-5_10 buildtest
 sys-kernel/chromeos-kernel-experimental buildtest
 sys-kernel/chromeos-kernel-next buildtest
diff --git a/profiles/features/kernel/debug/package.use b/profiles/features/kernel/debug/package.use
index 37b3be9..66d0491 100644
--- a/profiles/features/kernel/debug/package.use
+++ b/profiles/features/kernel/debug/package.use
@@ -1,6 +1,3 @@
-sys-kernel/chromeos-kernel-3_8 debug kcov
-sys-kernel/chromeos-kernel-3_10 debug kcov
-sys-kernel/chromeos-kernel-3_14 debug kcov
 sys-kernel/chromeos-kernel-3_18 debug kcov
 sys-kernel/chromeos-kernel-4_4 debug kcov
 sys-kernel/chromeos-kernel-4_14 debug kcov
diff --git a/profiles/features/kernel/deselect-all-kernels/make.defaults b/profiles/features/kernel/deselect-all-kernels/make.defaults
index 75bf4a0..e253e27 100644
--- a/profiles/features/kernel/deselect-all-kernels/make.defaults
+++ b/profiles/features/kernel/deselect-all-kernels/make.defaults
@@ -1,7 +1,7 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-USE="-kernel-3_8 -kernel-3_10 -kernel-3_14 -kernel-3_18 -kernel-4_4"
+USE="-kernel-3_18 -kernel-4_4"
 USE="${USE} -kernel-4_14 -kernel-4_19 -kernel-5_4 -kernel-5_10"
 USE="${USE} -kernel-experimental -kernel-next"
 USE="${USE} -kernel-upstream-mainline -kernel-upstream-next"
diff --git a/profiles/features/llvm/make.defaults b/profiles/features/llvm/make.defaults
index 5fdb778..abe5df5 100644
--- a/profiles/features/llvm/make.defaults
+++ b/profiles/features/llvm/make.defaults
@@ -9,6 +9,8 @@
 CXXLD_FOR_BUILD=x86_64-pc-linux-gnu-clang++
 NM=llvm-nm
 NM_FOR_BUILD=llvm-nm
+OBJCOPY=llvm-objcopy
+OBJCOPY_FOR_BUILD=llvm-objcopy
 OBJDUMP=llvm-objdump
 OBJDUMP_FOR_BUILD=llvm-objdump
 RANLIB=llvm-ranlib
@@ -17,3 +19,5 @@
 READELF_FOR_BUILD=llvm-readelf
 STRINGS=llvm-strings
 STRINGS_FOR_BUILD=llvm-strings
+STRIP=llvm-strip
+STRIP_FOR_BUILD=llvm-strip
diff --git a/profiles/features/minimal/make.defaults b/profiles/features/minimal/make.defaults
index f74e7a3..35eba9c 100644
--- a/profiles/features/minimal/make.defaults
+++ b/profiles/features/minimal/make.defaults
@@ -32,9 +32,9 @@
 # Make stuff small.
 USE="${USE} -attestation -buffet -cellular chromeless_tty -crash_reporting"
 USE="${USE} -cros_disks cros_embedded -diagnostics -debugd -encrypted_stateful"
-USE="${USE} -gdmwimax -lorgnette -memd -mist -ml_service -pam -passive_metrics"
-USE="${USE} -power_management -scanner -tpm -usb_bouncer -usbguard -vpn -wimax"
-USE="${USE} -perfetto"
+USE="${USE} -gdmwimax -lorgnette -memd -mist -missive -ml_service -pam"
+USE="${USE} -passive_metrics -perfetto -power_management -secanomalyd -scanner"
+USE="${USE} -tpm -usb_bouncer -usbguard -vpn -wimax"
 
 # Disable auth frameworks.
 USE="${USE} -kerberos -kerberos_daemon -system_proxy"
@@ -60,5 +60,17 @@
 # Disable oobe config.
 USE="${USE} -oobe_config"
 
+# Disable Downloadable Content (DLC).
+USE="${USE} -dlc"
+
+# Disable rootfs Lacros.
+USE="${USE} -lacros_rootfs"
+
+# Disable dns-proxy.
+USE="{$USE} -dns-proxy"
+
+# Disable Data Leak Prevention daemon (DLP).
+USE="${USE} -dlp"
+
 # Make each board select the firmware it needs.
 LINUX_FIRMWARE=""
diff --git a/profiles/features/sanitizers/fuzzer/ubsan/make.defaults b/profiles/features/sanitizers/fuzzer/ubsan/make.defaults
index 71d15a4..0fca296 100644
--- a/profiles/features/sanitizers/fuzzer/ubsan/make.defaults
+++ b/profiles/features/sanitizers/fuzzer/ubsan/make.defaults
@@ -7,5 +7,5 @@
 UBSAN_ENABLED_FLAGS="${UBSAN_ENABLED_FLAGS},signed-integer-overflow,shift,vla-bound,vptr,fuzzer-no-link"
 
 CFLAGS=" -fsanitize=${UBSAN_ENABLED_FLAGS} -fno-sanitize-recover=all"
-CXXFLAGS=" -fsanitize=${UBSAN_ENABLED_FLAGS} -fno-sanitize-recover=all"
+CXXFLAGS=" -fsanitize=${UBSAN_ENABLED_FLAGS} -fno-sanitize-recover=all -frtti"
 LDFLAGS=" -Xcompiler -fsanitize=${UBSAN_ENABLED_FLAGS} -Xcompiler -fno-sanitize-recover=all -Wl,--allow-shlib-undefined"
diff --git a/profiles/targets/chromeos/make.defaults b/profiles/targets/chromeos/make.defaults
index 14143f8..6571b01 100644
--- a/profiles/targets/chromeos/make.defaults
+++ b/profiles/targets/chromeos/make.defaults
@@ -11,6 +11,7 @@
 USE="${USE} -mime -peerd scanner"
 USE="${USE} -gtk2 -gtk3 -qt4"
 USE="${USE} cups crosfonts -postscript"
+USE="${USE} dlp"
 USE="${USE} tpm"
 USE="${USE} compupdates"
 USE="${USE} containers"
@@ -21,6 +22,7 @@
 USE="${USE} memd"
 USE="${USE} ml_service"
 USE="${USE} pinweaver"
+USE="${USE} resourced"
 USE="${USE} smartdim"
 USE="${USE} smbprovider"
 USE="${USE} system_proxy"
@@ -77,12 +79,27 @@
 # Enable Perfetto daemons.
 USE="${USE} perfetto"
 
+# Enable the missive (ERP) daemon.
+USE="${USE} missive"
+
 # Enable CPU zero-copy for Chrome camera stack.
 USE="${USE} video_capture_use_gpu_memory_buffer"
 
 # Run Camera v3 stack by default.
 USE="${USE} arc-camera3"
 
+# Enable Downloadable Content (DLC).
+USE="${USE} dlc"
+
+# Enable security-anomaly detection daemon.
+USE="${USE} secanomalyd"
+
+# Enable rootfs Lacros.
+USE="${USE} lacros_rootfs"
+
+# Enable dns-proxy daemon.
+USE="${USE} dns-proxy"
+
 # Disable tty2 console.
 TTY_CONSOLE="-tty2"
 
diff --git a/profiles/targets/chromeos/package.provided b/profiles/targets/chromeos/package.provided
index 006f97e..706b53f 100644
--- a/profiles/targets/chromeos/package.provided
+++ b/profiles/targets/chromeos/package.provided
@@ -134,8 +134,12 @@
 dev-util/boost-build-1.65.0
 
 # We don't need the toolchain itself in the target board.
-dev-lang/rust-1.46.0
 dev-lang/rust-1.47.0
+dev-lang/rust-1.51.0
+
+# We don't need code generators on the target board.
+dev-rust/bindgen-0.56.0-r2
+dev-rust/dbus-codegen-0.5.0-r1
 
 # We sometimes need ruby for building, but don't yet care about targets.
 dev-lang/ruby-1.9.4
diff --git a/profiles/targets/chromeos/package.use b/profiles/targets/chromeos/package.use
index 812a480..4b097b7 100644
--- a/profiles/targets/chromeos/package.use
+++ b/profiles/targets/chromeos/package.use
@@ -43,13 +43,12 @@
 dev-util/dialog		-unicode minimal
 dev-util/perf		-audit -doc -demangle -tui -ncurses -perl -python -slang -unwind
 chromeos-base/chromeos-chrome   build_tests
->=chromeos-base/chromeos-chrome-42.0.2297.0_rc-r1		v4l2_codec
 chromeos-base/nsswitch	zeroconf
 media-gfx/imagemagick	jpeg png svg tiff
 # Disable all SANE backends that don't support USB.
 media-gfx/sane-backends -sane_backends_abaton -sane_backends_agfafocus -sane_backends_apple -sane_backends_artec -sane_backends_bh -sane_backends_canon -sane_backends_coolscan -sane_backends_dc210 -sane_backends_dc240 -sane_backends_dc25 -sane_backends_dmc -sane_backends_hs2p -sane_backends_ibm -sane_backends_kodak -sane_backends_leo -sane_backends_matsushita -sane_backends_microtek -sane_backends_mustek -sane_backends_nec -sane_backends_net -sane_backends_p5 -sane_backends_pie -sane_backends_plustek_pp -sane_backends_qcam -sane_backends_ricoh -sane_backends_s9036 -sane_backends_sceptre -sane_backends_sharp -sane_backends_sp15c -sane_backends_st400 -sane_backends_tamarack -sane_backends_teco1 -sane_backends_teco2 -sane_backends_teco3 -sane_backends_umax_pp
 media-gfx/zbar		-gtk -imagemagick jpeg python -qt4 threads -v4l -X -xv
-media-libs/freeimage	png
+media-libs/freeimage	jpeg png
 # TODO(derat): Unset glib for harfbuzz if/when pango is no longer needed:
 # http://crbug.com/691477
 media-libs/harfbuzz	-cairo -introspection
@@ -78,7 +77,7 @@
 net-libs/libmicrohttpd	ssl messages
 net-libs/libsoup	-ssl
 # TODO(b/172893124): Enable http2
-net-misc/curl		ares -ftp -imap kerberos -http2 -pop3 -progress-meter -smtp -tftp
+net-misc/curl		adns -ftp -imap kerberos -http2 -pop3 -progress-meter -smtp -tftp
 net-misc/dhcpcd		crash
 net-misc/iperf		threads
 # arping is used by some wifi autotests.
@@ -88,6 +87,7 @@
 net-misc/openssh	-hpn -X
 net-vpn/openvpn		pkcs11
 net-vpn/strongswan	cisco nat-transport -strongswan_plugins_unity pkcs11
+net-vpn/wireguard-tools	-wg-quick
 net-nds/openldap	minimal -cxx
 net-print/cups		-dbus zeroconf upstart
 net-print/cups-filters	-dbus -pclm -pdf -zeroconf
@@ -119,21 +119,15 @@
 sys-devel/bc		forced-sandbox
 sys-devel/clang		-multitarget
 sys-devel/llvm		-multitarget -ncurses
-sys-fs/lvm2		-lvm1 -readline -static device-mapper-only -thin
+sys-fs/lvm2		-lvm1 -readline -static
 sys-fs/mtools		-X
 sys-fs/ntfs3g		-crypt external-fuse ntfsprogs -suid
 sys-fs/udev		-devfs-compat -rule_generator hwdb acl
-sys-kernel/chromeos-kernel-3_8 -clang -lld -llvm_ias
-sys-kernel/chromeos-kernel-3_10 -clang -lld -llvm_ias
-sys-kernel/chromeos-kernel-3_14 -clang -lld -llvm_ias
-sys-kernel/chromeos-kernel-3_18 -clang -lld -llvm_ias
+sys-kernel/chromeos-kernel-3_18 frozen_gcc -clang -lld -llvm_ias
 sys-kernel/chromeos-kernel-4_4 -llvm_ias
 sys-kernel/chromeos-kernel-4_14 -llvm_ias
-sys-kernel/chromeos-kernel-4_19 -llvm_ias
-sys-kernel/chromeos-kernel-5_10 -llvm_ias
 sys-kernel/chromeos-kernel-experimental -llvm_ias
 sys-kernel/chromeos-kernel-next -llvm_ias
-sys-kernel/chromeos-kernel-upstream -llvm_ias
 sys-kernel/linux-firmware	linux_firmware_keyspan_usb
 # We disable berkdb in general, but we need gdbm to provide the API.
 sys-libs/gdbm		berkdb
@@ -169,12 +163,7 @@
 # list down as packages don't need them.  New packages should *not* be added
 # here as new code should be using Python 3.
 # TODO(crbug.com/1007152): Trim this entirely!
-app-admin/webapp-config python_targets_python2_7
-chromeos-base/chromite python_targets_python2_7
-chromeos-base/ec-devutils python_targets_python2_7
 chromeos-base/telemetry python_targets_python2_7
-chromeos-base/touch_firmware_test python_targets_python2_7
-dev-python/bottle python_targets_python2_7
 dev-python/btsocket python_targets_python2_7
 dev-python/certifi python_targets_python2_7
 dev-python/cffi python_targets_python2_7
@@ -187,22 +176,15 @@
 dev-python/cython python_targets_python2_7
 dev-python/dbus-python python_targets_python2_7
 dev-python/django python_targets_python2_7
-dev-python/docutils python_targets_python2_7
 dev-python/dpkt python_targets_python2_7
-dev-python/future python_targets_python2_7
-dev-python/gevent python_targets_python2_7
-dev-python/greenlet python_targets_python2_7
 dev-python/grpcio python_targets_python2_7
-dev-python/httplib2 python_targets_python2_7
 dev-python/idna python_targets_python2_7
 dev-python/imaging python_targets_python2_7
 dev-python/jaraco-functools python_targets_python2_7
-dev-python/jsonrpclib python_targets_python2_7
 dev-python/kiwisolver python_targets_python2_7
 dev-python/linecache2 python_targets_python2_7
 dev-python/lockfile python_targets_python2_7
 dev-python/lxml python_targets_python2_7
-dev-python/m2crypto python_targets_python2_7
 dev-python/markupsafe python_targets_python2_7
 dev-python/matplotlib python_targets_python2_7
 dev-python/mkvparse python_targets_python2_7
@@ -212,8 +194,6 @@
 dev-python/namespace-google python_targets_python2_7
 dev-python/namespace-jaraco python_targets_python2_7
 dev-python/numpy python_targets_python2_7
-dev-python/oauth python_targets_python2_7
-dev-python/packaging python_targets_python2_7
 dev-python/pbr python_targets_python2_7
 dev-python/pexpect python_targets_python2_7
 dev-python/ply python_targets_python2_7
@@ -222,56 +202,34 @@
 dev-python/psutil python_targets_python2_7
 dev-python/ptyprocess python_targets_python2_7
 dev-python/py python_targets_python2_7
-dev-python/pyasn1 python_targets_python2_7
-dev-python/pyasn1-modules python_targets_python2_7
-dev-python/pyblake2 python_targets_python2_7
 dev-python/pycparser python_targets_python2_7
-dev-python/pygments python_targets_python2_7
 dev-python/pygobject python_targets_python2_7
 dev-python/pyopenssl python_targets_python2_7
 dev-python/pyparsing python_targets_python2_7
-dev-python/pyserial python_targets_python2_7
 dev-python/PySocks python_targets_python2_7
 dev-python/python-dateutil python_targets_python2_7
-dev-python/python-evdev python_targets_python2_7
-dev-python/python-gflags python_targets_python2_7
-dev-python/python-gnupg python_targets_python2_7
 dev-python/python-uinput python_targets_python2_7
 dev-python/pytz python_targets_python2_7
-dev-python/pyu2f python_targets_python2_7
 dev-python/pyudev python_targets_python2_7
 dev-python/pyusb python_targets_python2_7
 dev-python/pyxattr python_targets_python2_7
 dev-python/pyyaml python_targets_python2_7
 dev-python/requests python_targets_python2_7
 dev-python/scandir python_targets_python2_7
-dev-python/secretstorage python_targets_python2_7
 dev-python/selenium python_targets_python2_7
-dev-python/setproctitle python_targets_python2_7
 dev-python/setuptools python_targets_python2_7
 dev-python/setuptools_scm python_targets_python2_7
-dev-python/simplejson python_targets_python2_7
 dev-python/six python_targets_python2_7
 dev-python/tempora python_targets_python2_7
 dev-python/traceback2 python_targets_python2_7
 dev-python/trollius python_targets_python2_7
-dev-python/uritemplate python_targets_python2_7
 dev-python/urllib3 python_targets_python2_7
 dev-python/versioneer python_targets_python2_7
-dev-python/virtualenv python_targets_python2_7
-dev-python/wcwidth python_targets_python2_7
 dev-python/zc-lockfile python_targets_python2_7
-dev-util/hdctools python_targets_python2_7
-dev-util/scons python_targets_python2_7
-net-libs/nodejs python_targets_python2_7
-sys-apps/portage python_targets_python2_7
-virtual/python-cffi python_targets_python2_7
-virtual/python-greenlet python_targets_python2_7
 
 # These packages only support Python 2.7.  They aren't needed in Python 3.6+.
 # TODO(crbug.com/1007152): Trim this entirely!
 dev-python/backports-functools-lru-cache python_targets_python2_7 -python_targets_python3_6
-dev-python/ctypesgen python_targets_python2_7 -python_targets_python3_6
 dev-python/enum34 python_targets_python2_7 -python_targets_python3_6
 dev-python/funcsigs python_targets_python2_7
 dev-python/functools32 python_targets_python2_7 -python_targets_python3_6
@@ -280,13 +238,9 @@
 dev-python/mox python_targets_python2_7 -python_targets_python3_6
 dev-python/pathlib python_targets_python2_7 -python_targets_python3_6
 dev-python/subprocess32 python_targets_python2_7 -python_targets_python3_6
-dev-python/typing python_targets_python2_7 -python_targets_python3_6
 virtual/python-enum34 python_targets_python2_7
 virtual/python-funcsigs python_targets_python2_7
 virtual/python-futures python_targets_python2_7
-virtual/python-ipaddress python_targets_python2_7
-virtual/python-pathlib python_targets_python2_7
-virtual/python-typing python_targets_python2_7
 
 # To permit images without Python2.7, these packages must only depend
 # conditionally on Python2-only packages. These entries keep those
diff --git a/profiles/targets/sdk/package.use b/profiles/targets/sdk/package.use
index 76b6451..7c7e0de 100644
--- a/profiles/targets/sdk/package.use
+++ b/profiles/targets/sdk/package.use
@@ -2,9 +2,10 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-# Since we execute pbzip2 outside of the chroot, we need to statically
+# Since we execute bzip2 outside of the chroot, we need to statically
 # link this to avoid library mismatch errors.  http://crosbug.com/32519
 app-arch/bzip2 static-libs
+app-arch/lbzip2 static
 app-arch/pbzip2 static
 # Same for pigz.
 app-arch/pigz static
@@ -84,7 +85,7 @@
 # Build qemu's userland helpers statically so we can copy them into sysroots
 # and run unittests standalone.  Build qemu's softmmu helpers statically so
 # we can run vms outside of the chroot.
-app-emulation/qemu	-ncurses -pin-upstream-blobs -seccomp static-user static usb virtfs
+app-emulation/qemu	-ncurses -pin-upstream-blobs -seccomp static-user usb virtfs
 dev-libs/glib		static-libs
 dev-libs/libaio		static-libs
 dev-libs/libpcre	static-libs
@@ -94,6 +95,7 @@
 media-libs/jpeg		static-libs
 media-libs/libjpeg-turbo	static-libs
 media-libs/libpng	static-libs
+net-libs/libslirp	static-libs
 net-misc/curl		static-libs
 sys-apps/attr		static-libs
 sys-apps/dtc		static-libs
@@ -132,115 +134,78 @@
 # here as new code should be using Python 3.
 # TODO(crbug.com/1007152): Trim this entirely!
 chromeos-base/chromite-sdk python_targets_python2_7
-chromeos-base/ec-devutils python_targets_python2_7
-dev-python/atomicwrites python_targets_python2_7
-dev-python/attrs python_targets_python2_7
 dev-python/btsocket python_targets_python2_7
 dev-python/certifi python_targets_python2_7
 dev-python/cffi python_targets_python2_7
 dev-python/chardet python_targets_python2_7
 dev-python/cheroot python_targets_python2_7
 dev-python/cherrypy python_targets_python2_7
-dev-python/clang-python python_targets_python2_7
 dev-python/contextlib2 python_targets_python2_7
 dev-python/cryptography python_targets_python2_7
 dev-python/cycler python_targets_python2_7
 dev-python/cython python_targets_python2_7
 dev-python/dbus-python python_targets_python2_7
 dev-python/django python_targets_python2_7
-dev-python/docutils python_targets_python2_7
 dev-python/dpkt python_targets_python2_7
-dev-python/future python_targets_python2_7
 dev-python/grpcio python_targets_python2_7
 dev-python/grpcio-tools python_targets_python2_7
-dev-python/httplib2 python_targets_python2_7
 dev-python/idna python_targets_python2_7
 dev-python/imaging python_targets_python2_7
-dev-python/intelhex python_targets_python2_7
 dev-python/jaraco-functools python_targets_python2_7
 # TODO(b/146155010): Used by assistant.
 dev-python/jinja python_targets_python2_7
-dev-python/jsonrpclib python_targets_python2_7
 dev-python/kiwisolver python_targets_python2_7
 dev-python/linecache2 python_targets_python2_7
 dev-python/logbook python_targets_python2_7
 dev-python/lxml python_targets_python2_7
-dev-python/m2crypto python_targets_python2_7
 dev-python/markupsafe python_targets_python2_7
 dev-python/mock python_targets_python2_7
 dev-python/more-itertools python_targets_python2_7
 dev-python/mysqlclient python_targets_python2_7
 dev-python/namespace-google python_targets_python2_7
 dev-python/namespace-jaraco python_targets_python2_7
-dev-python/namespace-zope python_targets_python2_7
 dev-python/numpy python_targets_python2_7
-dev-python/pathlib2 python_targets_python2_7
 dev-python/pbr python_targets_python2_7
 dev-python/pexpect python_targets_python2_7
-dev-python/pluggy python_targets_python2_7
 dev-python/ply python_targets_python2_7
 dev-python/portend python_targets_python2_7
 dev-python/protobuf-python python_targets_python2_7
 dev-python/psutil python_targets_python2_7
 dev-python/ptyprocess python_targets_python2_7
-dev-python/pyasn1-modules python_targets_python2_7
-dev-python/pyasn1 python_targets_python2_7
-dev-python/pyblake2 python_targets_python2_7
-dev-python/pycairo python_targets_python2_7
-dev-python/pycodestyle python_targets_python2_7
+dev-python/py python_targets_python2_7
 dev-python/pycparser python_targets_python2_7
-dev-python/pyelftools python_targets_python2_7
-dev-python/pygments python_targets_python2_7
 dev-python/pygobject python_targets_python2_7
 dev-python/pyopenssl python_targets_python2_7
 dev-python/pyparsing python_targets_python2_7
-dev-python/py python_targets_python2_7
-dev-python/pyserial python_targets_python2_7
 dev-python/pyshark python_targets_python2_7
 dev-python/PySocks python_targets_python2_7
-dev-python/pytest python_targets_python2_7
 dev-python/python-dateutil python_targets_python2_7
-dev-python/python-evdev python_targets_python2_7
-dev-python/python-gnupg python_targets_python2_7
 dev-python/pytz python_targets_python2_7
-dev-python/pyu2f python_targets_python2_7
 dev-python/pyudev python_targets_python2_7
 dev-python/pyusb python_targets_python2_7
 dev-python/pyxattr python_targets_python2_7
 dev-python/pyyaml python_targets_python2_7
 dev-python/redis-py python_targets_python2_7
 dev-python/requests python_targets_python2_7
-dev-python/scandir python_targets_python2_7
-dev-python/secretstorage python_targets_python2_7
 dev-python/selenium python_targets_python2_7
-dev-python/setproctitle python_targets_python2_7
 dev-python/setuptools python_targets_python2_7
 dev-python/setuptools_scm python_targets_python2_7
-dev-python/simplejson python_targets_python2_7
 dev-python/six python_targets_python2_7
-dev-python/sqlalchemy python_targets_python2_7
-dev-python/tempita python_targets_python2_7
 dev-python/tempora python_targets_python2_7
 dev-python/traceback2 python_targets_python2_7
 dev-python/trollius python_targets_python2_7
-dev-python/twisted-core python_targets_python2_7
-dev-python/twisted-web python_targets_python2_7
 dev-python/unittest2 python_targets_python2_7
 dev-python/urllib3 python_targets_python2_7
 dev-python/versioneer python_targets_python2_7
-dev-python/virtualenv python_targets_python2_7
-dev-python/ws4py python_targets_python2_7
 dev-python/zc-lockfile python_targets_python2_7
+
+# Needed by attrs which is needed by pytest.
 dev-python/zope-interface python_targets_python2_7
-dev-util/hdctools python_targets_python2_7
-dev-util/scons python_targets_python2_7
-sys-apps/file python_targets_python2_7
-virtual/python-cffi python_targets_python2_7
+dev-python/namespace-zope python_targets_python2_7
 
 # These packages only support Python 2.7.  They aren't needed in Python 3.6+.
 # TODO(crbug.com/1007152): Trim this entirely!
 dev-python/backports-functools-lru-cache python_targets_python2_7 -python_targets_python3_6
-dev-python/ctypesgen python_targets_python2_7 -python_targets_python3_6
 dev-python/enum34 python_targets_python2_7 -python_targets_python3_6
 dev-python/funcsigs python_targets_python2_7
 dev-python/functools32 python_targets_python2_7 -python_targets_python3_6
@@ -249,10 +214,6 @@
 dev-python/mox python_targets_python2_7 -python_targets_python3_6
 dev-python/pathlib python_targets_python2_7 -python_targets_python3_6
 dev-python/subprocess32 python_targets_python2_7 -python_targets_python3_6
-dev-python/typing python_targets_python2_7 -python_targets_python3_6
 virtual/python-enum34 python_targets_python2_7
 virtual/python-funcsigs python_targets_python2_7
 virtual/python-futures python_targets_python2_7
-virtual/python-ipaddress python_targets_python2_7
-virtual/python-pathlib python_targets_python2_7
-virtual/python-typing python_targets_python2_7
diff --git a/profiles/updates/1Q-2012 b/profiles/updates/1Q-2012
deleted file mode 100644
index d2c877d..0000000
--- a/profiles/updates/1Q-2012
+++ /dev/null
@@ -1,3 +0,0 @@
-move virtual/kernel virtual/linux-sources
-slotmove =media-libs/jpeg-6b-r9 62 0
-slotmove <media-libs/libpng-1.2.45-r2 1.2 0
diff --git a/profiles/updates/2Q-2012 b/profiles/updates/2Q-2012
deleted file mode 100644
index 92d4ae3..0000000
--- a/profiles/updates/2Q-2012
+++ /dev/null
@@ -1 +0,0 @@
-move sys-apps/parted sys-block/parted
diff --git a/profiles/updates/4Q-2011 b/profiles/updates/4Q-2011
deleted file mode 100644
index ee091b7..0000000
--- a/profiles/updates/4Q-2011
+++ /dev/null
@@ -1,7 +0,0 @@
-move dev-python/pymox dev-python/mox
-move dev-util/cvs dev-vcs/cvs
-move dev-util/cvsps dev-vcs/cvsps
-move dev-util/subversion dev-vcs/subversion
-move dev-util/git dev-vcs/git
-move net-misc/neon net-libs/neon
-move app-editors/gentoo-editor app-misc/editor-wrapper
diff --git a/profiles/updates/4Q-2018 b/profiles/updates/4Q-2018
deleted file mode 100644
index 46a07048..0000000
--- a/profiles/updates/4Q-2018
+++ /dev/null
@@ -1,2 +0,0 @@
-slotmove =sys-devel/clang-8* 0 8
-slotmove =sys-devel/llvm-8* 0 8
diff --git a/sci-libs/tensorflow/Manifest b/sci-libs/tensorflow/Manifest
index f85f5f6..9bdb7b0 100644
--- a/sci-libs/tensorflow/Manifest
+++ b/sci-libs/tensorflow/Manifest
@@ -1,51 +1,40 @@
 DIST ARM_NEON_2_x86_SSE-1200fe90bb174a6224a525ee60148671a786a71f.tar.gz 100612 BLAKE2B 84f81072d3298dde613b4c1ebabf852c67e04b5882a4ca0ed6f218b42e8fa3ea9598140b0c0009e8d6b62d08902622a6d57ee005ec3ad8a808c9fb21aa53430c SHA512 03a289d8099a5c4a5298cba8f516d2edb41220935d8db750970113ca7513372c78241c2c948d0ffcd60e84686e50ba1d7fd0b46efea6881dd320435eca92a7b9
 DIST FP16-4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip 91462 BLAKE2B dc40d6129c009fc28b40d58b81b89e96a2deeeda3ea19c680b66073f02f955cc5dfc379d7843ec8aeed9fedeae6a70594b45752014526deee5c6226ec4b952e9 SHA512 15ae434977209a938739691eb91150556bac75a4a5449a9b4f135424f42beabd67ede4cf12c3a5594dea5028cc4aadaf989d0b42c2bb6f741db55ebd34717e24
-DIST FXdiv-b408327ac2a15ec3e43352421954f5b1967701d1.zip 16626 BLAKE2B 4259a745b96a92045d53b5bfdb7df21d69a23454617d11de40d18606039d56fb761fd96dc8d2f03c518421809e55a843adebb7a8defe876b4c4425315e395bf8 SHA512 8a2ef9b5c3353bbb53be3584bccf5bf0ebda99ff903b55d34a966768e3acfead08d1d981e7428697166e028067c90f31cbcf793a39d07d76c31b2fb51787f74e
+DIST FXdiv-63058eff77e11aa15bf531df5dd34395ec3017c8.zip 16646 BLAKE2B 8f6ca6feee16cb57d9b4504e7615703c2c7ea86fa8ea3f814668478cc13b8cb3cb1429200359be5521ca11f77e1c3d575b2222d123d3ac03586faab88a131ac2 SHA512 6b4830a56137e226d51ba8166fe1a31c51256f1666cc0a683abfb154fbe313d415ce15e362756865a1dd91510cf581c619604b29e8a5288c328c85da57d53308
 DIST OouraFFT-v1.0.tar.gz 110531 BLAKE2B de0e280407e21118e2bc6ca93a7caf3c4a49d0a13eda018b1497f98851af73dda4cef56460dba310336c7ed958e34feef4784ca2575a13287dec2c1ac9a5af6d SHA512 89c6e8fd57abf26351b3efb792008a1bbe62d404a4225dcae8aa666b3782a421be071bdc9760ebb0c95b5336ee5ea517d2fa43ab915045f7cf6fd76e73578079
-DIST XNNPACK-8b283aa30a3186c6e640aed520543e9c067132d2.zip 4899219 BLAKE2B e56849bbb3f2875b5ea05d1c4c5fb44f728a9c7e41b28ff9d981854f2d795b7c3a340e0c2409f102799f1236b08a826ce436f87a8c1d03859e27bc84e071fea8 SHA512 9936faa1db617a701cbea62ddb5ce409ac4bbd480c791237e7ae2c093717e2a45f6cc74e6a6fbd6211e756a8cae134adc44366f8008c3bfeb943ecabc7a06463
+DIST XNNPACK-79cd5f9e18ad0925ac9a050b00ea5a36230072db.zip 10378085 BLAKE2B b163263e7ff23848e442b3086677da46135ca1ee20ca792ee30c2127d4246e5d31ca0bceb7997e573f21803cc0620fc0c6e368305557c9520ef134597c70f958 SHA512 422ddfa0ed53806a652cf221d43674f0f6af25e8f209e29c0ef9fcaaa6c30eca65853af6d3d8bbf07f8a6213ea7aa55dbb003c11adacf96650e668cafee3b7f4
+DIST abseil-cpp-6f9d96a1f41439ac172ee2ef7ccd8edf0e5d068c.tar.gz 1785034 BLAKE2B 83cee194b416fff3d6ec3f4c02b4210a60ebfcf0316524fe9deb94372bfc34f33075fa59e2e71d8bb17c32f61a6e324072651c2bbf382d3d4a7540657b8a33a8 SHA512 f64fee62863f2103c1991136fd3bc2b71cd28c7ff62138ac991b5a7f81780a05e0e2bdd6a119d02e1d70dd54f989f584093957efaec94f26c9d6c3f4ee37f8ae
 DIST abseil-cpp-daf381e8535a1f1f1b8a75966a74e7cca63dee89.tar.gz 1275955 BLAKE2B eb6e0f9d55458a4ae6e8b86be89add9b0cc44d1ff5a11f6fa1ec93e2f46885c8ff87b8c1e674e1ba5ac13556ed303963864057f0e258fce41fa753d891846996 SHA512 56a827296e2948b90922766369f2040e04abd03320375240ad32fcc2925cdd1ffea312edcef1009a0c8abd79f521a61e433b7651dd4c2721d2b1ad13f48256de
-DIST abseil-cpp-df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz 1679879 BLAKE2B ce92197c564ff774db46027c32f97cfd55ff1d77b7cec5424e127d10a3b0a54d9e84537bd643c4eb330ca81959bcc0316b13c013b229df06b7f415864c451e46 SHA512 b429758c37749d3d5c5c220fe0dc00fa0e193b406545484095339b25674c4a3bb7850b76dd1a370ed2006729bcbbbb1b438995b614e149c2290bdb10038c49d1
 DIST backports.weakref-1.0rc1.tar.gz 7761 BLAKE2B 4cb2554a4b71bb1f8c41a790268511e4b382effc7e0328f74346d086de539a177111de9e2dabac19a44b2a1cdbf59a7425e30eee4caa4bfe66b0ca97f1f460a9 SHA512 f37e9eb0d9060d2e1588a941f623460bd4477d7e180b38b5cd46d9c1db1ee094ae63e4f5eeeb422823bf3d067f46c4124cb124a9e4ddb795bc0bfbc4802ab826
 DIST bazel-skylib-0.6.0.tar.gz 29330 BLAKE2B 53d23a81203c08cb5ab4adbd308bb6c9875df0f2d27c6f8832a27397578e9214ebcd95f63bd6c539d534ecb5f2316116063e3e5d1a36986cf94d167d7823234d SHA512 14ce6782509be7d3cb0fe438aaad579ad23bf328d566cab06a2008990041ee098b4602542cb67961d757573a8c272e5dddb143efd756cd6ec40486159329fa91
+DIST bazel-skylib-1.0.3.tar.gz 30711 BLAKE2B 86d6db9be4e627f6695329e16e8f9b6c2d0d683142a15f62c6924941405ab1d12292818ebf16642fc8d2664b0f113a35e002210034e80de14726387fcdafd765 SHA512 e28e62214b6c1e6724d26ebbee7c0b436b13e7b054d598788c15f03a56d248378068f5d29fae722a19d4519e2568983011ff50a13577dbc1bd174464ef4a49cc
 DIST bazel-toolchains-92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz 660374 BLAKE2B 549292aa3ad8a6e01c29391a123f3cbc84d1f714ff9c68bfc6c8df07fa0ba3b19c22e61627f227a8a484f6d7d6c59935fd7560c447559ff5e774ddf1437eefe1 SHA512 83531a2646a9f63557eff6fefaf551ee7e9f0ccdb31374d7a17c35b9f9d844b9b405597972fcd31b2b68e9da312511bbfd9c8fbb75222f5924e1d2500cd1c2a6
 DIST bazel-toolchains-94d31935a2c94fe7e7c7379a0f3393e181928ff7.tar.gz 505681 BLAKE2B f16225eb11859f487335bddca115c9c2a05731f4bfe4240609a47e17b706d9a25b6b363b61404b4d5df0471e4dd9b4b9befbf78dbcb1c7c11e3f590039ff92b2 SHA512 7723baf2c710adb063375a33fd64e3941fae7e98c824764c266d5554cc0b0cbb1c91a5c2a9058bb4c8766ec404ca556199ce22965a6de4baee09cb740b7671c9
-DIST bazel_skylib-0.9.0.tar.gz 84644 BLAKE2B 40b69a524e632ea00d34b9cf805b882ac4c549dd465ef37f28e54729ff1b614a7610a4895cede4e0c938edba5b19f781f3c0bfdb62bde628ee0af21d6b679546 SHA512 af4bcb641fed05d15f2d0ffe0e3abdfe9c7a5deb9c53064992d6605d224ded1648b1bdfa293e161028913f9f2c178c68cc38bc16028892ca5b0f52b4e645209d
 DIST bazelbuild-apple_support-501b4afb27745c4813a88ffa28acd901408014e4.tar.gz 19956 BLAKE2B 73f04a13f8ac3552e6f0770d1ac4edcc1b5ef46e4a3c4f3b83f11eeffa632f764d37aa7a98b35b5be6bd0caef19f84d0dc1b88bc55ff5397012863af4ee6d902 SHA512 732f482338996a62db24bfa6acd2fde6b629ac0a49317ed4e4778a55bbbbb22225f42a6cfa18cdcc51c200e29abe82a1f2a5548df09b7244074ae52e1f62ef66
 DIST bazelbuild-rules_android-v0.1.1.zip 14654 BLAKE2B 1cfd5af08c6eab9602883f62d85ef1b9eb02383f73dcc31ae84af880c9ba228ae349ac6b017c550286e248347193e2c56eba30c86174432429809447dd940ed2 SHA512 80628a5e2ca9806ab031cd0c2f2999bd67f5621a83e8300a51fe6233373bdaf7c90ff8fa9551c81e60fc904c4d7b24554327ac8ed2ee101e92c4ab9319c53f4a
 DIST bazelbuild-rules_apple-5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz 1951045 BLAKE2B d8c17f301de729bbf5254acacf89490ab1034b1180d5ea788251ae6ba3e2b704c82d7f66d33a086f52ce3909cd33df7739d7d536c6be070a2d3454e2f280517f SHA512 a23826d8e53d49de6347eca052e980878d50b431bf02c9b8333234c0659d5e290447121bf9519729639891e67d732474a3c3b7a7502752b32f830680bb334bad
 DIST bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip 171775 BLAKE2B ec0ece4555d779bc8380937baac517a8adf3b0176c4bfb1324943a91366ad9688f528a4bd69e4587bcc4ad427c71a53016a3e2d32a050d9d4ec99caac4967a8e SHA512 5c5e82f276c1c962fbd9c7ddf21df9aa4291f3285f3fa07cd2c2790475ccba670b0627fc3d6faedd1508eca4d80bdae64a31383f001f04f3031112be81c3e697
 DIST bazelbuild-rules_closure-308b05b2419edb5c8ee0471b67a40403df940149.tar.gz 464906 BLAKE2B 033d76b8081f4f987e64875ad5c8e7b8f894ec6be58c52ee02c4d31d4480fee02f3f432ea9c4630ad3f5d1163f820aff37f6493da797ec51b148b361ab3c8b25 SHA512 2cd841f4530503ed31fa6425cb749ef29f8a1071b5d55594644303233e58455783cb02402bc23d7104ef036745733087d43075a1fcdab2ac96cd1a9872a6ea4a
 DIST bazelbuild-rules_closure-cf1e44edb908e9616030cc83d085989b8e6cd6df.tar.gz 462798 BLAKE2B f461635702cd881828cf401c78fe0e64398c015d7f7824b369b0808d54224c633b6d8b699000e9e481ba094a93e01c33cc4360a541b2d520db10d3e9ef81007e SHA512 e85b13a50cbec60e4e574de9a3d3b646ca4bf045c55afcb41f2fd671202aac9e6d3e91c618f8923986ae142e615624718f3df0d1edb33a90e334f29667888d39
-DIST bazelbuild-rules_docker-v0.10.0.tar.gz 549649 BLAKE2B e7a537b21138a5c5d9ce360e46238f57c917d2dbf5dd17887607402227cbe7c5d68aead9db0ecdb74c09eed9dac26eb86e004a9020c251152d15beb48be0e0d7 SHA512 7802107f8520c88646728800637cce54dbcefc54aa4361288a5b46e403e41998bc23e16fbe94f23a2ca52e5c33fc255af65846963c2fd0139ca1195435ce1b03
 DIST bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip 9422 BLAKE2B bbc45c97551ee8126335b611ffca6574dac843d4db9b3221b10d26487f8eecfe38ba0cd67a4039a3ad921c25fea6294c43e4f4e7a57a060a30791acd6c4f9d39 SHA512 ba06242feb711e7fb6e821fd9ac029248b4f3e466fb1acf971d0db8196f3efe4d114ef137acbe4913073f8cbe8ccab4d47d8bafa21b867b2d6a6d57f5a647f0c
-DIST bazelbuild-rules_proto-97d8af4dc474595af3900dd85cb3a29ad28cc313.tar.gz 7612 BLAKE2B de9edd2e1f49edaec782cf58c4ebd3dc3c6d144499a18ac76a0685e28bb9fa6898980ea769c54186816dc696b2e9186d929e99602d8ea535409e1fd23b87da7b SHA512 dd2aef9011c6006e8adc777c211174c26ab74e3cf186541aba865012669ceebf7d96fa34a202654cdfb2beee4f67904f5b7736be466f2838cf31dfb3970f69cd
-DIST bazelbuild-rules_python-0.0.1.tar.gz 2302092 BLAKE2B 1db52eebf2461d779f764f2afdd070d1d0dd65eb2b83ccd98c2831da1784614ca281b114064729a9f257c64eceb62975aac8362d231c84f32abdf19aee7a1852 SHA512 40fa069a4482e2f83e29dc8e109652d14d187b2ec8efdcd36e98d117de93d66a938ed74999b42a2293fcb6eccc0a111cbbcf65c5c155579214bb1b96644280a5
 DIST bazelbuild-rules_swift-3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz 140484 BLAKE2B 2526d808a4763fffa16bb035de78993eefe6371a29139b152370081f548d8147868cc95194c06a54f1c5c0cd8b63ffbc59b00686bfaedede2463a448e38c2810 SHA512 e22a85a5dba52cc3474481798264571f6671aace19eecb058b24ac7d586ea7822ed3ae042b4a812671f81d4f9f8915aa2381fa6ac278da7969b976eaf28db636
 DIST bazelbuild-rules_swift.0.9.0.tar.gz 105918 BLAKE2B 8f1bd8f5a468e3b37c614cf498a6cd8ceca55b255d6f096ebf88cd77e95148eab3fb5a128ed93b40f6d1ee8988b8dfd300fdf7061fc4ed4f1fb4ab25446ebe58 SHA512 68e985fa30b865317ccf59473cb52873d65159b866a54e35b3fbf83c135f3c750752663e962decbc8ebcd17b5784867d4d4767dd0b706f1182d4715291d8268b
 DIST cub-1.8.0.zip 602396 BLAKE2B a5e302a52e04f85ae8e1836c59e799532a8b961a8d10c08fe1241c9045f88e31f1ebda6d26124b85c6df40968e1c7b3985a39961bf7614535aafcab2da1a576a SHA512 6167c5be94989f88e05a07508cf69cf2c6b22a5ac733804043daa46bd86a44a15a758b1ffb811bab28b82039d027516ed85b3d9f7677a740a7e00ec9c2f81aed
-DIST dlpack-3efc489b55385936531a06ff83425b719387ec63.tar.gz 39637 BLAKE2B 532a3ce3d0e354a73c19433f0210a64ecbf00d9134d06a0ee7462baaff3f2b981524aa630cf250595671d6673105724482c7d69e803179aac247f2020c883bd0 SHA512 3728db5213e887fd946f64ba5dc0c336be9a72a0966ee83f146148749ffc93ddb342e0735df6117d7943874c18f87de5791a28e4a57ea420bb8a4e2a5b7338bc
-DIST eigen-386d809bde475c65b7940f290efe80e6a05878c4.tar.gz 2628283 BLAKE2B feac186ce8d18026b10be4955267ed65b65b4432f02bcf817da08960c9164bcb22b352c413f59890aac2de87c5e3e9e05ea48dff28635bc8901628af518dc4d2 SHA512 f183bfe235a98dc308c69a1d9e168b538cc92cfbbe35d4e35596b0b2588ecad66212efb3d3ffbba7c8adbd67be24cc4dda5dba8dcdd67245eca2b1a0fb94d380
 DIST eigen-a0d250e79c79.tar.gz 2468318 BLAKE2B 8799adc1a13612820251cd22a7ddc347ee4711d583561a5df9735bd22ab727c0d8e7fdc894cd7e83b3b972d5adcb86f033bc089e1a4de5fe4e6257f78df88957 SHA512 864646a0b3fd8287fbf6943f4cc7f692a883e6164add21c97e98372641b32e5ceffadc825178b9d11e9504377b837d0e54a264b7a53b28e4f9fc2a23c616d2b3
+DIST eigen-f612df273689a19d25b45ca4f8269463207c4fee.tar.gz 2721573 BLAKE2B a6f3fdfd622b11d1dc634518e0c50bac5246c6eb91ad52ba08db6b846a22f74fd151ac0a27d7ea330137cb5a572c41ca6a916796a94919663c46136b634c7ebb SHA512 71ed7b5e1c70a3a3502c9c1901120eebba7a3668f1b13c1e8156ef49e25decc0c2897fd9d729c505530d85842afd3084c615f87e1a43bc7a5f1f12ba34eaed36
 DIST farmhash-816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz 467122 BLAKE2B 8b9dd426f4b9f732df6c8c09d868d1b1cc006c395b1525c46ea91c75318b723358c8e64bb0d86a73aace2032eded93f0d80cc7c2c77fddd6a39e3402ab4f2cb7 SHA512 7f5110514a8cdc7ce48d33fd94ad67d96a24e42e11b203e4d0986f4190545f051b2a63f8e09f2ac38c3aa4a5c62d9a0e02cd8ce02045037381fb62a99f0dcd00
 DIST gemmlowp-12fed0cd7cfcd9e169bf1925bc3a7a58725fdcc3.zip 935628 BLAKE2B 09bd1dd1e367b1e5c4fe9a9525449c09460f19168bc03c57ad563aa27ec74a18f08b620a3dab6da4fa1a1448cdc7ce8bc8a089becc033b53fff4cc07593315ce SHA512 bd42a364f718f3b077cd9c840d626bfc1fd92ace98ce43329d8fa54700c9d28cb47568b6567e9b081b340af7be621c44be1ce06d4b8dccc4fb5d82c35b12f951
 DIST gemmlowp-fda83bdc38b118cc6b56753bd540caa49e570745.zip 936866 BLAKE2B 0977df121a80de979a9996b58a0a8cad157db8d0862b96f95b3be1157cddbc6b40dff4fc7da4ee78f5986cbfff2a67c173155e849e772ae476398c51f3028311 SHA512 4bf036de43f5e0890f66e0b16cd9a0f52911b160f79c9c50cf403454fa9d6040df225d34e02f424da8bb8c5f7f5c002f88f4d232c61503aa825c907ad8742823
 DIST googleapis-541b1ded4abadcc38e8178680b0677f65594ea6f.zip 5498751 BLAKE2B deedce8127d8241116afcd831898bd23235e07dd6de1b693a0edaaf6805bd3c9ba92c25e08d452406fb617fd173c7ad55b44811065078e99734557c3ea3ed6dd SHA512 949de688244bd4e05dc3ac68d7a1d00e3def55a0465ef6c1aa3d4c83e55397db87313c96abad97a9e5dc68836640d261b91da22b4fe521c24cd97453a2c7f80a
 DIST highwayhash-fd3d9af80465e4383162e4a7c5e2f406e82dd968.tar.gz 138574 BLAKE2B cecd95039fc31545ced38a1949e7cb31d6f34deef7c8923b573aa7a632576d0a9b60fd24fbc8a40b8a840a7d2442ea28382fe842178a77467772ed4ba8a2cfb6 SHA512 d25162ed266a8c9c00e6978fcf642cf924f03c0d196f971d0d6f6a3454ca7dfc82f758eabd038ac08e0a5dacc51eccb9b674f588f64692f37cb7a17150aefe4f
-DIST kissfft-36dbc057604f00aacfc0288ddad57e3b21cfc1b8.tar.gz 44744 BLAKE2B aeea5d23c122417ddb70a44354890242c4fb61c456fba9af79054293a1355939af51a681760ac27be55423f888649fd2826e634422c7e9cb3749a9d7f50ef990 SHA512 30f4fcd351bbcb950a27e2a77ca100ccdfd37deb17a05e7e31c3e8f1c56d7c626ab81bbd7497484e6b512e41f7b1bed714722a194b2218c669b297911101df7b
-DIST llvm-7e825abd5704ce28b166f9463d4bd304348fd2a9.tar.gz 120301408 BLAKE2B 928117c2bae7bcdd2445e9f65297b45b009dfc62e9c16ed08a8f00aacee2497492b6fb4cbea0047a8aa1425b538e02af9b8e6dd21e52348cc45dfbb71ab3f47f SHA512 a9cfbd00a0530e4f5d001029c33be3723ed009799a42bd730a65319da671020a249ae5ba4496f1347a71a9ee69de4e9fe2b80c60ebd1bc4d6d4120bd3d6fecde
-DIST nvidia-nccl-5949d96f36d050e59d05872f8bbffd2549318e95.tar.gz 147548 BLAKE2B f3d3dd222ae90ac9ac1457a9695f112a21f5652a5b40e10ac049da910f07707b1c3910f59734fbe5e2c6523c1e83f3801f809efa77d122a57e859828c74ba8c2 SHA512 d9ea83caf7940fb47134293236fcb7478c0d4e40365d3b0a29427758e2e2dbb980c5e8c05fc9fc3956ed5e21a82ec0efaa31d973fe9c73fa3f50465f76756131
 DIST nvidia-nccl-f93fe9bfd94884cec2ba711897222e0df5569a53.tar.gz 95617 BLAKE2B 023788db444b1a50f01ab16f126c920f530a6ff5bf2a9327626db45f985b4093c1024d16d43cdee9f0b3ee5c8b7d104f2a6b1dab0460c6b1998b42a0354f6f27 SHA512 d6b4dd4d6c7c9ca2dcf0699055c9193d4b46c0c5155e0108db38094577c92f954f604b2e83ca320873288e0010eaa3c5812f05f7fafe5112bebbca78e56cb279
 DIST oourafft-20061228.tgz 72213 BLAKE2B 4a3ac2b4c0bc3275b5743df59241e1cdbd0200371c153ddf54ef6c7c4ec523ee6560547e2d5ef9f3200037c0635bf41c18991ac35f271b1e600d0dbd65d1a9a7 SHA512 f1ceac00cb7b9eb8f625eee7f1f5eea8af363343589a344226628d68baf668c176e6c23b7f904c4e682330352eaa0cd5d00731340d208e94c9657b8f85ae2240
-DIST psimd-072586a71b55b7f8c584153d223e95687148a900.zip 8327 BLAKE2B 56af2276033b512551862d405e2511b14a6838327f8950b979b3df3833cf80f034d0fc91a8798fe0f1dd3b35c7e55051c4ec19dc22c3f4c1364d67efcb95d7d6 SHA512 98c9e13f1e79db84289f48f1e1699852a54d3a7f1b07144008c67cf73c8b4487e9647755f6fe2a2d519419d669248b37a85d8aa3f6ad2f8fdf8e97d2de7ed7c4
-DIST pthreadpool-029c88620802e1361ccf41d1970bd5b07fd6b7bb.zip 58870 BLAKE2B 9b8a49affebc8f894d86617344c97c25cc0277fb48b4de3a8601e0fc6e1fcefef6732355d6e05c35aef2326ca57b9b604934081e43f24643e85f37b7977028d9 SHA512 51b171b9cdd26b440a38ef204cfd0ba91cb85c908dfa67d7b0171878b2f146805f0bcbe147f9e8c4a4c8f3aa0d6bc7cb9833bad60c3a1adbe3f66a29fa22e0c5
-DIST pytorch-cpuinfo-6cecd15784fcb6c5c0aa7311c6248879ce2cb8b2.zip 3787039 BLAKE2B 3a529648d548b7570fd38783e5a3915bf3ad82ab028ee11f70fddaf09b8d64dc58f4d32ed54557b9f3087a8bb13ff4fd78b3597df6b1b5d3c3ef65c03193251a SHA512 8b34e580f19494f92796176db3f14680fd1b7b64458c0ef8e71ff1b3f1cbe12204e901167a585c1e04e95fbeaad5de104abc5edf3ea81a0da1c480a99f6bb94b
+DIST pthreadpool-b8374f80e42010941bda6c85b0e3f1a1bd77a1e0.zip 61524 BLAKE2B 924419730bc6b94ec98a13db94f177b3b70d6c763158f43fb6f9e45605e73cfce238e6c996e2bf629dbb2a5af93ae99849ddc91174fc4664d702667f7423892d SHA512 d25262b47e39058d5aa8b8197c4984a5b941587a19079a2210f738c3af34ab8e8477731c88ca80c3f812a6a04635f80300124d93cc1e099352ef2aca04bdc3ae
+DIST pytorch-cpuinfo-5916273f79a21551890fd3d56fc5375a78d1598d.zip 3787933 BLAKE2B 169620d461103f271ae927d84af27282189509b2ba2fbed2c09f9ae387b5f392eea635dfdf2d3a23e1fc19b5d467bee3f13d3e473946e42bba4b6a9a2fd60e32 SHA512 6f1c8c931b62990ab0228679efb52207a6e21cb847139c11bf6117051b7315ff87c12ed1373670d006f0bc7e3d390d59f2d28a8250d0bd7df850583ae42afdf2
 DIST pytorch-cpuinfo-d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz 3489028 BLAKE2B aa6b7719eb9871b6cc71318cb4a9c2e2397e665662b7978daecd9e8380304691a78b95118eba5cbbb738c4b490352a847f6ce6b5c4ae29de0543b95ecc557cbb SHA512 ecd2115340fa82a67db7889ce286c3070d5ab9c30b02372b08aac893e90ccebc65c6b3e66aa02a9ae9c57892d2d8c3b77cb836e5fc3b88df2c75d33e574d90d2
-DIST re2-506cfa4bffd060c06ec338ce50ea3468daa6c814.tar.gz 316237 BLAKE2B 8a975bc3e78b690f70944651c7022c6d946f40b2eb5fe01b2e203141f94b890cf1ad5c72af8e7c6ff3c5242d42af5a8657ed69e3c74d9ac081beb15de6334c0c SHA512 e3e00e92700d08bc55ba0e96148ddf1e00de2d329c1fdac08691ff15976937829f66dbc84af886a4b749ad66ba4ab208d66811e97e33bb9c2d7359735406c450
 DIST rules_docker-b8ff6a85ec359db3fd5657accd3e524daf12016d.tar.gz 460121 BLAKE2B bca31bbdd9069647fa9560002e63a404e2bd4d4ebd19d90e28d08f797f8f63157cc127dab26b996bb976e50f099928a91c1d6343427cb85048c6ca2b47c0c7e2 SHA512 461a663189e5995e31ee8175ee260e1ad06b00ee8a7548b9d3a946a2de693311031ec6eba89e3bad527f5d8f76ed25626ef4ea05a8d6e7579932dc1be3b0a6ba
-DIST ruy-34ea9f4993955fa1ff4eb58e504421806b7f2e8f.zip 312628 BLAKE2B e42c484092f5e93dee11bc7c6a92ade3b63533d3507fa5a805b16e3508b8a20b7cff734197ab9d8e9b0e67e9648987ccedc19a23deea93bb00269d2fc65424a4 SHA512 d1b5a73feb4cced7ee49e9bacb80f437b0bcde204c3bc082a2729efb1989517ac97d764d6fe00bd66f0d5349d19d9e0593868c8d22369dc38732cd2204419b1d
-DIST sobol_data-835a7d7b1ee3bc83e575e302a985c66ec4b65249.tar.gz 2569603 BLAKE2B cd66dc8a0b4ad3ea586a79ef588c8d68e4f05b6ea89e6d8119b5ee338b9046c11a747ca57c2f80a3c90fab119c05e85f5965571c9e522ccb8a312b95804d1a36 SHA512 b819d050bb38246b503f1eb3d6e7d878d0f166f3602ae3c327749b1f6ddc2b1d6ac7f768b1f1d055b98b7b98812e4643a75bcebc9728c7f615d67ca739761b3e
+DIST ruy-54774a7a2cf85963777289193629d4bd42de4a59.zip 363561 BLAKE2B 81ff61f1a125c99f7bc8c2f4e03909036a759543cf56774dc872db5987ed4ef099b376597acc2f07758c4813933e7b27fe336281bc05da19f284fb085492ade2 SHA512 b15b6e0464f7612276bc8b198341653e3b72b5e166132a5107f825d4c4612e179018f92a16f7a41490d176bb138417b18a6f1b7fc165c4e829d889808cb89276
 DIST tensorflow-1.14.0-python-license.rst.txt 45132 BLAKE2B 8a8ace4b64fd9eda1932272704dd4fea002d2562cd9c2c94470d3ff5de58bb171ff849d3f998ea90cd779d1084d39af1267aca8400b74b701205d2e76e6a2628 SHA512 c79c42f4ceecf33c8f8778ca17b53595b75d5d0bdf30b11058cf01dd70a6351f530ca9dd846460aba14edc1d5876f7bf6fa0f9f49f7915590b0f54d267ce3856
 DIST tensorflow-1.14.0.tar.gz 41335204 BLAKE2B d91d84c5d86c838cc659c45e28cf3c8a9ec9a02f5854a1826680806dae41cdd00ea49a6d2c04f2019b3400c6e267c6ca6f3b28e43b244569dca174ff7f2c59d6 SHA512 ac9ea5a2d1c761aaafbdc335259e29c128127b8d069ec5b206067935180490aa95e93c7e13de57f7f54ce4ba4f34a822face22b4a028f60185edb380e5cd4787
-DIST tensorflow-1.15.0-python-license.rst.txt 45132 BLAKE2B 8a8ace4b64fd9eda1932272704dd4fea002d2562cd9c2c94470d3ff5de58bb171ff849d3f998ea90cd779d1084d39af1267aca8400b74b701205d2e76e6a2628 SHA512 c79c42f4ceecf33c8f8778ca17b53595b75d5d0bdf30b11058cf01dd70a6351f530ca9dd846460aba14edc1d5876f7bf6fa0f9f49f7915590b0f54d267ce3856
-DIST tensorflow-2.3.1.tar.gz 46544608 BLAKE2B c3cb0954fcd060b95d63895cbeeca20f6af29ade999dc43db5fe010d6b33b6f650047d529f174a1663c23440a56e057e2f97c503a4a40bcdac9374b549f3220e SHA512 e497ef4564f50abf9f918be4522cf702f4cf945cb1ebf83af1386ac4ddc7373b3ba70c7f803f8ca06faf2c6b5396e60b1e0e9b97bfbd667e733b08b6e6d70ef0
-DIST tensorflow-patches-2.3.1.tar.bz2 11361 BLAKE2B 22ddd827f616e33fd259ce2b7da5cda539d856701ad108d1d3b52d1dab660bcddc809fd9e9db5e6496552df080493b0205b83a58dc32808dc70c60a5878aa8af SHA512 cdfc3407c775f8529cb8eb939b1046a7094ff999b8225e419e2ab4be19ecba6d853ebd8cd2dda77a7f60425a440f4d60bf3afca4a80688f0cba9967e14f8b8fb
+DIST tensorflow-2.5.0.tar.gz 55999506 BLAKE2B 0f1f29ed9ff6e5fd3fc0c98419bca636f48085810f934290885b3469c45817b2ce17e9dbd3d93d70b09ec7975088edd0973f147449f527a8f2e23b388e2592ce SHA512 637c63b1bed1c0eb7bb018f1ff7f29f7f0d78e75dac384df4ecb5dfb92bbcb28209e3d3d2204145abddf88e3247d8c31bbb4cea032a73b7122b2ef3eb0d2b947
+DIST tensorflow_toolchains_v1.1.10.tar.gz 137512 BLAKE2B 774b22a599070564c0f77ed0da79f6a96359b196dd3007370be885b796c236b9a29c01597507a3049f82cf489824c8016740b778cacb2b8cd859500f9ecb1887 SHA512 1daf4684f5b364a89b3cc475cf2d13d0d0622fc14d2b32d7ad8518932538e716782d755cfcedc98d129a3986bc7c38bfc7854c8ad596891e397510b75ae2f93e
diff --git a/sci-libs/tensorflow/files/tensorflow-2.3.1-0001-workspace.patch b/sci-libs/tensorflow/files/tensorflow-2.3.1-0001-workspace.patch
deleted file mode 100644
index 68d2ad5..0000000
--- a/sci-libs/tensorflow/files/tensorflow-2.3.1-0001-workspace.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-Remove unneeded repositories that fail to get downloaded correctly. Some of
-this has been done upstream, but not yet released:
-https://github.com/tensorflow/tensorflow/commit/6a6071412a2fd19ec9b23f2cc3e2c9d5e20a9c45
-
-diff --git a/WORKSPACE b/WORKSPACE
-index ea741c31..454e201a 100644
---- a/WORKSPACE
-+++ b/WORKSPACE
-@@ -29,25 +29,6 @@ load("//third_party/toolchains/preconfig/generate:archives.bzl",
-
- bazel_toolchains_archive()
-
--load(
--    "@bazel_toolchains//repositories:repositories.bzl",
--    bazel_toolchains_repositories = "repositories",
--)
--
--bazel_toolchains_repositories()
--
--load(
--    "@io_bazel_rules_docker//repositories:repositories.bzl",
--    container_repositories = "repositories",
--)
--
--container_repositories()
--
--load("//third_party/toolchains/preconfig/generate:workspace.bzl",
--     "remote_config_workspace")
--
--remote_config_workspace()
--
- # Use `swift_rules_dependencies` to fetch the toolchains. With the
- # `git_repository` rules above, the following call will skip redefining them.
- load("@build_bazel_rules_swift//swift:repositories.bzl", "swift_rules_dependencies")
-@@ -142,10 +123,6 @@ load(
-
- apple_support_dependencies()
-
--load("@upb//bazel:repository_defs.bzl", "bazel_version_repository")
--
--bazel_version_repository(name = "bazel_version")
--
- load("//third_party/googleapis:repository_rules.bzl", "config_googleapis")
-
- config_googleapis()
-diff --git a/third_party/toolchains/preconfig/generate/workspace.bzl b/third_party/toolchains/preconfig/generate/workspace.bzl
-deleted file mode 100644
-index 81b57dfa..00000000
---- a/third_party/toolchains/preconfig/generate/workspace.bzl
-+++ /dev/null
-@@ -1,77 +0,0 @@
--load(
--    "@io_bazel_rules_docker//repositories:repositories.bzl",
--    container_repositories = "repositories",
--)
--load(
--    "@io_bazel_rules_docker//container:container.bzl",
--    "container_pull",
--)
--load(":containers.bzl", "container_digests")
--
--def _remote_config_workspace():
--    container_repositories()
--
--    container_pull(
--        name = "centos6",
--        registry = "gcr.io",
--        repository = "tensorflow-testing/nosla-centos6",
--        digest = container_digests["centos6"],
--    )
--
--    container_pull(
--        name = "ubuntu16.04",
--        registry = "gcr.io",
--        repository = "tensorflow-testing/nosla-ubuntu16.04",
--        digest = container_digests["ubuntu16.04"],
--    )
--
--    container_pull(
--        name = "cuda10.0-cudnn7-ubuntu14.04",
--        registry = "gcr.io",
--        repository = "tensorflow-testing/nosla-cuda10.0-cudnn7-ubuntu14.04",
--        digest = container_digests["cuda10.0-cudnn7-ubuntu14.04"],
--    )
--
--    container_pull(
--        name = "cuda10.0-cudnn7-centos6",
--        registry = "gcr.io",
--        repository = "tensorflow-testing/nosla-cuda10.0-cudnn7-centos6",
--        digest = container_digests["cuda10.0-cudnn7-centos6"],
--    )
--
--    container_pull(
--        name = "cuda10.1-cudnn7-centos6",
--        registry = "gcr.io",
--        repository = "tensorflow-testing/nosla-cuda10.1-cudnn7-centos6",
--        digest = container_digests["cuda10.1-cudnn7-centos6"],
--    )
--
--    container_pull(
--        name = "ubuntu16.04-manylinux2010",
--        registry = "gcr.io",
--        repository = "tensorflow-testing/nosla-ubuntu16.04-manylinux2010",
--        digest = container_digests["ubuntu16.04-manylinux2010"],
--    )
--
--    container_pull(
--        name = "cuda10.0-cudnn7-ubuntu16.04-manylinux2010",
--        registry = "gcr.io",
--        repository = "tensorflow-testing/nosla-cuda10.0-cudnn7-ubuntu16.04-manylinux2010",
--        digest = container_digests["cuda10.0-cudnn7-ubuntu16.04-manylinux2010"],
--    )
--
--    container_pull(
--        name = "cuda10.1-cudnn7-ubuntu16.04-manylinux2010",
--        registry = "gcr.io",
--        repository = "tensorflow-testing/nosla-cuda10.1-cudnn7-ubuntu16.04-manylinux2010",
--        digest = container_digests["cuda10.1-cudnn7-ubuntu16.04-manylinux2010"],
--    )
--
--    container_pull(
--        name = "rocm-ubuntu16.04",
--        registry = "gcr.io",
--        repository = "tensorflow-testing/nosla-rocm-ubuntu16.04",
--        digest = container_digests["rocm-ubuntu16.04"],
--    )
--
--remote_config_workspace = _remote_config_workspace
diff --git a/sci-libs/tensorflow/files/tensorflow-2.3.1-0002-nnapi-android-sdk-version.patch b/sci-libs/tensorflow/files/tensorflow-2.3.1-0002-nnapi-android-sdk-version.patch
deleted file mode 100644
index 1f8e171..0000000
--- a/sci-libs/tensorflow/files/tensorflow-2.3.1-0002-nnapi-android-sdk-version.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-A patch that fakes the android version so that NNAPI can be loaded and used
-by tensorflow on chrome OS.
-
-This patch can be removed when
-https://github.com/tensorflow/tensorflow/commit/2fd3f75f05b99cd2d3c36ac57384633e7707d307
-is released.
-
-diff --git a/tensorflow/lite/nnapi/nnapi_implementation.cc b/tensorflow/lite/nnapi/nnapi_implementation.cc
-index 862c4ba2..e275f266 100644
---- a/tensorflow/lite/nnapi/nnapi_implementation.cc
-+++ b/tensorflow/lite/nnapi/nnapi_implementation.cc
-@@ -92,7 +92,7 @@ int ASharedMemory_create(const char* name, size_t size) {
-
- const NnApi LoadNnApi() {
-   NnApi nnapi = {};
--  nnapi.android_sdk_version = 0;
-+  nnapi.android_sdk_version = 30;
-
- #ifdef __ANDROID__
-   nnapi.android_sdk_version = GetAndroidSdkVersion();
diff --git a/sci-libs/tensorflow/files/tensorflow-2.3.1-0003-ashmem-create.patch b/sci-libs/tensorflow/files/tensorflow-2.3.1-0003-ashmem-create.patch
deleted file mode 100644
index 8971bbd..0000000
--- a/sci-libs/tensorflow/files/tensorflow-2.3.1-0003-ashmem-create.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Tensorflow uses its on implementation of ashmem_create if it is
-not being built for Android.
-
-That implementation has a bug, where if the same 'name' is passed in
-for multiple invocations, it will resize the underlying shared memory
-file, effectively ignoring the 'anonymous' aspect expected of ashmem.
-
-Our implementation handles this better, and this ensures all of the ashmem
-functionlity is consistenly served from our implementation.
-
-diff --git a/tensorflow/lite/nnapi/nnapi_implementation.cc b/tensorflow/lite/nnapi/nnapi_implementation.cc
-index 862c4ba2..e275f266 100644
---- a/tensorflow/lite/nnapi/nnapi_implementation.cc
-+++ b/tensorflow/lite/nnapi/nnapi_implementation.cc
-@@ -170,7 +170,8 @@ const NnApi LoadNnApi() {
-   // implementation, but don't have libneuralnetworks.so library, and
-   // platforms which use nnapi_implementation_disabled.cc stub.
-   if (libneuralnetworks != nullptr) {
--    nnapi.ASharedMemory_create = ASharedMemory_create;
-+    LOAD_FUNCTION_RENAME(libneuralnetworks, ASharedMemory_create,
-+                         "ashmem_create_region");
-   }
- #endif  // __ANDROID__
diff --git a/sci-libs/tensorflow/files/tensorflow-2.3.1-0004-nnapi-delegates.patch b/sci-libs/tensorflow/files/tensorflow-2.3.1-0004-nnapi-delegates.patch
deleted file mode 100644
index fae4ffa..0000000
--- a/sci-libs/tensorflow/files/tensorflow-2.3.1-0004-nnapi-delegates.patch
+++ /dev/null
@@ -1,147 +0,0 @@
-Patch the code in the tools directory so that it loads the NNAPI delegate
-correctly without needing to define __ANDROID__
-
-diff --git a/tensorflow/lite/tools/delegates/nnapi_delegate_provider.cc b/tensorflow/lite/tools/delegates/nnapi_delegate_provider.cc
-index bde9c0e0..ddbbfe60 100644
---- a/tensorflow/lite/tools/delegates/nnapi_delegate_provider.cc
-+++ b/tensorflow/lite/tools/delegates/nnapi_delegate_provider.cc
-@@ -16,9 +16,7 @@ limitations under the License.
-
- #include "tensorflow/lite/tools/delegates/delegate_provider.h"
- #include "tensorflow/lite/tools/evaluation/utils.h"
--#if defined(__ANDROID__)
- #include "tensorflow/lite/nnapi/nnapi_util.h"
--#endif
-
- namespace tflite {
- namespace tools {
-@@ -26,7 +24,6 @@ namespace tools {
- class NnapiDelegateProvider : public DelegateProvider {
-  public:
-   NnapiDelegateProvider() {
--#if defined(__ANDROID__)
-     default_params_.AddParam("use_nnapi", ToolParam::Create<bool>(false));
-     default_params_.AddParam("nnapi_execution_preference",
-                              ToolParam::Create<std::string>(""));
-@@ -36,7 +33,6 @@ class NnapiDelegateProvider : public DelegateProvider {
-                              ToolParam::Create<bool>(false));
-     default_params_.AddParam("nnapi_allow_fp16",
-                              ToolParam::Create<bool>(false));
--#endif
-   }
-
-   std::vector<Flag> CreateFlags(ToolParams* params) const final;
-@@ -51,7 +47,6 @@ REGISTER_DELEGATE_PROVIDER(NnapiDelegateProvider);
-
- std::vector<Flag> NnapiDelegateProvider::CreateFlags(ToolParams* params) const {
-   std::vector<Flag> flags = {
--#if defined(__ANDROID__)
-     CreateFlag<bool>("use_nnapi", params, "use nnapi delegate api"),
-     CreateFlag<std::string>("nnapi_execution_preference", params,
-                             "execution preference for nnapi delegate. Should "
-@@ -64,14 +59,12 @@ std::vector<Flag> NnapiDelegateProvider::CreateFlags(ToolParams* params) const {
-                      "Disable the NNAPI CPU device"),
-     CreateFlag<bool>("nnapi_allow_fp16", params,
-                      "Allow fp32 computation to be run in fp16")
--#endif
-   };
-
-   return flags;
- }
-
- void NnapiDelegateProvider::LogParams(const ToolParams& params) const {
--#if defined(__ANDROID__)
-   TFLITE_LOG(INFO) << "Use nnapi : [" << params.Get<bool>("use_nnapi") << "]";
-   if (params.Get<bool>("use_nnapi")) {
-     if (!params.Get<std::string>("nnapi_execution_preference").empty()) {
-@@ -97,13 +90,11 @@ void NnapiDelegateProvider::LogParams(const ToolParams& params) const {
-                        << params.Get<bool>("nnapi_allow_fp16") << "]";
-     }
-   }
--#endif
- }
-
- TfLiteDelegatePtr NnapiDelegateProvider::CreateTfLiteDelegate(
-     const ToolParams& params) const {
-   TfLiteDelegatePtr delegate(nullptr, [](TfLiteDelegate*) {});
--#if defined(__ANDROID__)
-   if (params.Get<bool>("use_nnapi")) {
-     StatefulNnApiDelegate::Options options;
-     std::string accelerator_name =
-@@ -163,7 +154,6 @@ TfLiteDelegatePtr NnapiDelegateProvider::CreateTfLiteDelegate(
-                      << params.Get<std::string>("nnapi_execution_preference")
-                      << ") to be used.";
-   }
--#endif
-   return delegate;
- }
-
-diff --git a/tensorflow/lite/tools/evaluation/BUILD b/tensorflow/lite/tools/evaluation/BUILD
-index 85dfb183..92478a3d 100644
---- a/tensorflow/lite/tools/evaluation/BUILD
-+++ b/tensorflow/lite/tools/evaluation/BUILD
-@@ -46,7 +46,9 @@ cc_library(
-             "//tensorflow/lite/delegates/gpu:delegate",
-             "//tensorflow/lite/delegates/nnapi:nnapi_delegate",
-         ],
--        "//conditions:default": [],
-+        "//conditions:default": [
-+            "//tensorflow/lite/delegates/nnapi:nnapi_delegate",
-+        ],
-     }) + select({
-         "//tensorflow:android_arm": [
-             "//tensorflow/lite/delegates/hexagon:hexagon_delegate",
-diff --git a/tensorflow/lite/tools/evaluation/utils.cc b/tensorflow/lite/tools/evaluation/utils.cc
-index c766a932..d3880647 100644
---- a/tensorflow/lite/tools/evaluation/utils.cc
-+++ b/tensorflow/lite/tools/evaluation/utils.cc
-@@ -95,24 +95,18 @@ TfLiteStatus GetSortedFileNames(
-
- // TODO(b/138448769): Migrate delegate helper APIs to lite/testing.
- TfLiteDelegatePtr CreateNNAPIDelegate() {
--#if defined(__ANDROID__)
-   return TfLiteDelegatePtr(
-       NnApiDelegate(),
-       // NnApiDelegate() returns a singleton, so provide a no-op deleter.
-       [](TfLiteDelegate*) {});
--#else
--  return CreateNullDelegate();
--#endif  // defined(__ANDROID__)
- }
-
--#if defined(__ANDROID__)
- TfLiteDelegatePtr CreateNNAPIDelegate(StatefulNnApiDelegate::Options options) {
-   return TfLiteDelegatePtr(
-       new StatefulNnApiDelegate(options), [](TfLiteDelegate* delegate) {
-         delete reinterpret_cast<StatefulNnApiDelegate*>(delegate);
-       });
- }
--#endif  // defined(__ANDROID__)
-
- #if defined(__ANDROID__)
- TfLiteDelegatePtr CreateGPUDelegate(TfLiteGpuDelegateOptionsV2* options) {
-diff --git a/tensorflow/lite/tools/evaluation/utils.h b/tensorflow/lite/tools/evaluation/utils.h
-index 5d9920cf..5dbc035c 100644
---- a/tensorflow/lite/tools/evaluation/utils.h
-+++ b/tensorflow/lite/tools/evaluation/utils.h
-@@ -21,9 +21,9 @@ limitations under the License.
- #include <unordered_set>
- #include <vector>
-
-+#include "tensorflow/lite/delegates/nnapi/nnapi_delegate.h"
- #if defined(__ANDROID__)
- #include "tensorflow/lite/delegates/gpu/delegate.h"
--#include "tensorflow/lite/delegates/nnapi/nnapi_delegate.h"
- #if (defined(__arm__) || defined(__aarch64__))
- #include "tensorflow/lite/delegates/hexagon/hexagon_delegate.h"
- #endif
-@@ -62,9 +62,7 @@ inline TfLiteStatus GetSortedFileNames(const std::string& directory,
- }
-
- TfLiteDelegatePtr CreateNNAPIDelegate();
--#if defined(__ANDROID__)
- TfLiteDelegatePtr CreateNNAPIDelegate(StatefulNnApiDelegate::Options options);
--#endif
-
- TfLiteDelegatePtr CreateGPUDelegate();
- #if defined(__ANDROID__)
diff --git a/sci-libs/tensorflow/files/tensorflow-2.3.1-0005-cpuinfo-arm-fix.patch b/sci-libs/tensorflow/files/tensorflow-2.3.1-0005-cpuinfo-arm-fix.patch
deleted file mode 100644
index 63590f9..0000000
--- a/sci-libs/tensorflow/files/tensorflow-2.3.1-0005-cpuinfo-arm-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a//third_party/cpuinfo/cpuinfo.patch b//third_party/cpuinfo/cpuinfo.patch
-index d9a16c5..be77fb5 100644
---- a/third_party/cpuinfo/cpuinfo.patch
-+++ b/third_party/cpuinfo/cpuinfo.patch
-@@ -128,3 +128,17 @@ index 98ef919..8365846 100644
-  		printf("\tIDIV: %s\n", cpuinfo_has_arm_idiv() ? "yes" : "no");
-
-  	printf("Floating-Point support:\n");
-+diff --git a/src/arm/linux/cp.h b/src/arm/linux/cp.h
-+index 63940ec..9403a65 100755
-+--- a/src/arm/linux/cp.h
-++++ b/src/arm/linux/cp.h
-+@@ -37,8 +37,6 @@
-+ 	#endif
-+
-+ 	static inline uint32_t read_wcid(void) {
-+-		uint32_t wcid;
-+-		__asm__ __volatile__("MRC p1, 0, %[wcid], c0, c0" : [wcid] "=r" (wcid));
-+-		return wcid;
-++		return 0;
-+ 	}
-+ #endif
diff --git a/sci-libs/tensorflow/files/tensorflow-2.5.0-0001-workspace.patch b/sci-libs/tensorflow/files/tensorflow-2.5.0-0001-workspace.patch
new file mode 100644
index 0000000..0acfe03
--- /dev/null
+++ b/sci-libs/tensorflow/files/tensorflow-2.5.0-0001-workspace.patch
@@ -0,0 +1,15 @@
+Remove unneeded repositories that fail to get downloaded correctly.
+
+diff --git a/tensorflow/workspace0.bzl b/tensorflow/workspace0.bzl
+index 22374bc1..7b8e575f 100644
+--- a/tensorflow/workspace0.bzl
++++ b/tensorflow/workspace0.bzl
+@@ -102,8 +102,6 @@ def workspace():
+         ],
+     )
+ 
+-    bazel_toolchains_repositories()
+-
+     # Use `swift_rules_dependencies` to fetch the toolchains. With the
+     # `git_repository` rules above, the following call will skip redefining them.
+     swift_rules_dependencies()
diff --git a/sci-libs/tensorflow/files/tensorflow-2.5.0-0002-ashmem-create.patch b/sci-libs/tensorflow/files/tensorflow-2.5.0-0002-ashmem-create.patch
new file mode 100644
index 0000000..a9cc0c4
--- /dev/null
+++ b/sci-libs/tensorflow/files/tensorflow-2.5.0-0002-ashmem-create.patch
@@ -0,0 +1,23 @@
+Tensorflow uses its on implementation of ashmem_create if it is
+not being built for Android.
+
+That implementation has a bug, where if the same 'name' is passed in
+for multiple invocations, it will resize the underlying shared memory
+file, effectively ignoring the 'anonymous' aspect expected of ashmem.
+
+Our implementation handles this better, and this ensures all of the ashmem
+functionlity is consistenly served from our implementation.
+
+diff --git a/tensorflow/lite/nnapi/nnapi_implementation.cc b/tensorflow/lite/nnapi/nnapi_implementation.cc
+index 17635bcd..9e71c899 100644
+--- a/tensorflow/lite/nnapi/nnapi_implementation.cc
++++ b/tensorflow/lite/nnapi/nnapi_implementation.cc
+@@ -221,7 +221,8 @@ const NnApi LoadNnApi() {
+   // implementation, but don't have libneuralnetworks.so library, and
+   // platforms which use nnapi_implementation_disabled.cc stub.
+   if (libneuralnetworks != nullptr) {
+-    nnapi.ASharedMemory_create = ASharedMemory_create;
++    LOAD_FUNCTION_RENAME(libneuralnetworks, ASharedMemory_create,
++                         "ashmem_create_region");
+   }
+ #endif  // __ANDROID__
diff --git a/sci-libs/tensorflow/files/tensorflow-2.5.0-0003-nnapi-delegates.patch b/sci-libs/tensorflow/files/tensorflow-2.5.0-0003-nnapi-delegates.patch
new file mode 100644
index 0000000..6598afe
--- /dev/null
+++ b/sci-libs/tensorflow/files/tensorflow-2.5.0-0003-nnapi-delegates.patch
@@ -0,0 +1,47 @@
+Patch the code in the tools directory so that it loads the NNAPI delegate
+correctly without needing to define __ANDROID__
+
+diff --git a/tensorflow/lite/BUILD b/tensorflow/lite/BUILD
+index 8d16389b..30d18fb1 100644
+--- a/tensorflow/lite/BUILD
++++ b/tensorflow/lite/BUILD
+@@ -268,6 +268,8 @@ cc_library(
+         ":string",
+         ":type_to_tflitetype",
+         ":util",
++        "//tensorflow/lite/delegates/nnapi:nnapi_delegate",
++        "//tensorflow/lite/nnapi:nnapi_implementation",
+         "//tensorflow/lite/c:common",
+         "//tensorflow/lite/core/api",
+         "//tensorflow/lite/core/api:verifier",
+
+diff --git a/tensorflow/lite/tools/evaluation/utils.cc b/tensorflow/lite/tools/evaluation/utils.cc
+index 730a7d5f..e073a402 100644
+--- a/tensorflow/lite/tools/evaluation/utils.cc
++++ b/tensorflow/lite/tools/evaluation/utils.cc
+@@ -95,25 +95,17 @@ TfLiteStatus GetSortedFileNames(
+ 
+ // TODO(b/138448769): Migrate delegate helper APIs to lite/testing.
+ TfLiteDelegatePtr CreateNNAPIDelegate() {
+-#if defined(__ANDROID__)
+   return TfLiteDelegatePtr(
+       NnApiDelegate(),
+       // NnApiDelegate() returns a singleton, so provide a no-op deleter.
+       [](TfLiteDelegate*) {});
+-#else
+-  return CreateNullDelegate();
+-#endif  // defined(__ANDROID__)
+ }
+ 
+ TfLiteDelegatePtr CreateNNAPIDelegate(StatefulNnApiDelegate::Options options) {
+-#if defined(__ANDROID__)
+   return TfLiteDelegatePtr(
+       new StatefulNnApiDelegate(options), [](TfLiteDelegate* delegate) {
+         delete reinterpret_cast<StatefulNnApiDelegate*>(delegate);
+       });
+-#else
+-  return CreateNullDelegate();
+-#endif  // defined(__ANDROID__)
+ }
+ 
+ #if TFLITE_SUPPORTS_GPU_DELEGATE
diff --git a/sci-libs/tensorflow/files/tensorflow-2.5.0-0004-cpuinfo-arm-fix.patch b/sci-libs/tensorflow/files/tensorflow-2.5.0-0004-cpuinfo-arm-fix.patch
new file mode 100644
index 0000000..ea40243
--- /dev/null
+++ b/sci-libs/tensorflow/files/tensorflow-2.5.0-0004-cpuinfo-arm-fix.patch
@@ -0,0 +1,36 @@
+The read_wcid isn't used in our build of Tensorflow, and the default
+implementation from the `cpuinfo` dependency doesn't build on ARM devices.
+
+Since it is not used, we patch out the offending line and return 0 to get
+around the compilation error.
+
+diff --git a/third_party/cpuinfo/cpuinfo.patch b/third_party/cpuinfo/cpuinfo.patch
+new file mode 100644
+index 00000000..bbd619a4
+--- /dev/null
++++ b/third_party/cpuinfo/cpuinfo.patch
+@@ -0,0 +1,14 @@
++diff --git a/src/arm/linux/cp.h b/src/arm/linux/cp.h
++index 63940ec..9403a65 100644
++--- a/src/arm/linux/cp.h
+++++ b/src/arm/linux/cp.h
++@@ -37,8 +37,6 @@
++ 	#endif
++ 
++ 	static inline uint32_t read_wcid(void) {
++-		uint32_t wcid;
++-		__asm__ __volatile__("MRC p1, 0, %[wcid], c0, c0" : [wcid] "=r" (wcid));
++-		return wcid;
+++		return 0;
++ 	}
++ #endif
+diff --git a/third_party/cpuinfo/workspace.bzl b/third_party/cpuinfo/workspace.bzl
+index dfccc34f..4895fb07 100644
+--- a/third_party/cpuinfo/workspace.bzl
++++ b/third_party/cpuinfo/workspace.bzl
+@@ -12,4 +12,5 @@ def repo():
+             "https://github.com/pytorch/cpuinfo/archive/5916273f79a21551890fd3d56fc5375a78d1598d.zip",
+         ],
+         build_file = "//third_party/cpuinfo:BUILD.bazel",
++        patch_file = str(Label("//third_party/cpuinfo:cpuinfo.patch")),
+     )
diff --git a/sci-libs/tensorflow/files/tensorflow-2.5.0-0005-xnnpack-update.patch b/sci-libs/tensorflow/files/tensorflow-2.5.0-0005-xnnpack-update.patch
new file mode 100644
index 0000000..6a644f4
--- /dev/null
+++ b/sci-libs/tensorflow/files/tensorflow-2.5.0-0005-xnnpack-update.patch
@@ -0,0 +1,33 @@
+diff --git a/tensorflow/lite/delegates/xnnpack/BUILD b/tensorflow/lite/delegates/xnnpack/BUILD
+index 8eb31175..9eafefc6 100644
+--- a/tensorflow/lite/delegates/xnnpack/BUILD
++++ b/tensorflow/lite/delegates/xnnpack/BUILD
+@@ -32,7 +32,7 @@ cc_library(
+         "//tensorflow/lite/schema:schema_fbs",
+         "//tensorflow/lite/tools/optimize/sparsity:format_converter",
+         "@FP16",
+-        "@XNNPACK//:xnnpack_f32",
++        "@XNNPACK//:xnnpack_for_tflite",
+     ],
+ )
+ 
+diff --git a/tensorflow/workspace2.bzl b/tensorflow/workspace2.bzl
+index efc50709..28a0e935 100644
+--- a/tensorflow/workspace2.bzl
++++ b/tensorflow/workspace2.bzl
+@@ -126,11 +126,11 @@ def _tf_repositories():
+     # and update the sha256 with the result.
+     tf_http_archive(
+         name = "XNNPACK",
+-        sha256 = "95b778a920a1a79efdb11bf68dda9b4fd16779a1a0210438582e750f9bfb6351",
+-        strip_prefix = "XNNPACK-fb8d1f1b2bb2e32c141564528a39748c4631b453",
++        sha256 = "dbb28e7ed4c09b6d09d9fcc194081560039994e60bfa753ba7f408f57605672e",
++        strip_prefix = "XNNPACK-79cd5f9e18ad0925ac9a050b00ea5a36230072db",
+         urls = [
+-            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/XNNPACK/archive/fb8d1f1b2bb2e32c141564528a39748c4631b453.zip",
+-            "https://github.com/google/XNNPACK/archive/fb8d1f1b2bb2e32c141564528a39748c4631b453.zip",
++            "https://storage.googleapis.com/mirror.tensorflow.org/github.com/google/XNNPACK/archive/79cd5f9e18ad0925ac9a050b00ea5a36230072db.zip",
++            "https://github.com/google/XNNPACK/archive/79cd5f9e18ad0925ac9a050b00ea5a36230072db.zip",
+         ],
+     )
+ 
diff --git a/sci-libs/tensorflow/tensorflow-2.3.1.ebuild b/sci-libs/tensorflow/tensorflow-2.3.1.ebuild
deleted file mode 100644
index 9e7fb86..0000000
--- a/sci-libs/tensorflow/tensorflow-2.3.1.ebuild
+++ /dev/null
@@ -1,497 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-DISTUTILS_OPTIONAL=1
-PYTHON_COMPAT=( python3_{6,7,8} )
-DISTUTILS_USE_SETUPTOOLS=rdepend
-MY_PV=${PV/_rc/-rc}
-MY_P=${PN}-${MY_PV}
-
-# s/bazel/cros-bazel/ instead of bazel to fix downloading dependencies.
-# s/prefix// because ChromeOS doesn't need it.
-inherit cros-bazel check-reqs cuda distutils-r1 flag-o-matic toolchain-funcs
-
-DESCRIPTION="Computation framework using data flow graphs for scalable machine learning"
-HOMEPAGE="https://www.tensorflow.org/"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-# ChromeOS uses 'minimal' to compile only TensorFlow Lite, compilation without 'minimal' is not supported.
-IUSE="cuda mpi +python xla minimal label_image benchmark_model"
-
-# Required if either label_image or benchmark_model are enabled.
-benchmark_model_uris="
-	https://github.com/Maratyszcza/FP16/archive/4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip -> FP16-4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip
-	https://github.com/Maratyszcza/FXdiv/archive/b408327ac2a15ec3e43352421954f5b1967701d1.zip -> FXdiv-b408327ac2a15ec3e43352421954f5b1967701d1.zip
-	https://github.com/Maratyszcza/pthreadpool/archive/029c88620802e1361ccf41d1970bd5b07fd6b7bb.zip -> pthreadpool-029c88620802e1361ccf41d1970bd5b07fd6b7bb.zip
-	https://github.com/Maratyszcza/psimd/archive/072586a71b55b7f8c584153d223e95687148a900.zip -> psimd-072586a71b55b7f8c584153d223e95687148a900.zip
-	https://github.com/google/XNNPACK/archive/8b283aa30a3186c6e640aed520543e9c067132d2.zip -> XNNPACK-8b283aa30a3186c6e640aed520543e9c067132d2.zip
-	"
-
-# distfiles that bazel uses for the workspace, will be copied to basel-distdir
-bazel_external_uris="
-	minimal? (
-		${benchmark_model_uris}
-		https://github.com/googleapis/googleapis/archive/541b1ded4abadcc38e8178680b0677f65594ea6f.zip -> googleapis-541b1ded4abadcc38e8178680b0677f65594ea6f.zip
-	)
-	https://github.com/petewarden/OouraFFT/archive/v1.0.tar.gz -> OouraFFT-v1.0.tar.gz
-	https://gitlab.com/libeigen/eigen/-/archive/386d809bde475c65b7940f290efe80e6a05878c4/eigen-386d809bde475c65b7940f290efe80e6a05878c4.tar.gz
-	https://github.com/abseil/abseil-cpp/archive/df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz -> abseil-cpp-df3ea785d8c30a9503321a3d35ee7d35808f190d.tar.gz
-	https://github.com/bazelbuild/bazel-skylib/releases/download/0.9.0/bazel_skylib-0.9.0.tar.gz
-	https://github.com/bazelbuild/rules_apple/archive/5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz -> bazelbuild-rules_apple-5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz
-	https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip -> bazelbuild-rules_android-v0.1.1.zip
-	https://github.com/bazelbuild/apple_support/archive/501b4afb27745c4813a88ffa28acd901408014e4.tar.gz -> bazelbuild-apple_support-501b4afb27745c4813a88ffa28acd901408014e4.tar.gz
-	https://github.com/bazelbuild/bazel-toolchains/archive/92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz -> bazel-toolchains-92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz
-	https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip -> bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip
-	https://github.com/bazelbuild/rules_closure/archive/308b05b2419edb5c8ee0471b67a40403df940149.tar.gz -> bazelbuild-rules_closure-308b05b2419edb5c8ee0471b67a40403df940149.tar.gz
-	!minimal? (
-		https://github.com/bazelbuild/rules_docker/releases/download/v0.10.0/rules_docker-v0.10.0.tar.gz -> bazelbuild-rules_docker-v0.10.0.tar.gz
-	)
-	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip
-	!minimal? (
-		https://github.com/bazelbuild/rules_proto/archive/97d8af4dc474595af3900dd85cb3a29ad28cc313.tar.gz -> bazelbuild-rules_proto-97d8af4dc474595af3900dd85cb3a29ad28cc313.tar.gz
-	)
-	https://github.com/bazelbuild/rules_python/releases/download/0.0.1/rules_python-0.0.1.tar.gz -> bazelbuild-rules_python-0.0.1.tar.gz
-	https://github.com/bazelbuild/rules_swift/archive/3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz -> bazelbuild-rules_swift-3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz
-	https://github.com/dmlc/dlpack/archive/3efc489b55385936531a06ff83425b719387ec63.tar.gz -> dlpack-3efc489b55385936531a06ff83425b719387ec63.tar.gz
-	https://github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz -> farmhash-816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz
-	https://github.com/google/gemmlowp/archive/fda83bdc38b118cc6b56753bd540caa49e570745.zip -> gemmlowp-fda83bdc38b118cc6b56753bd540caa49e570745.zip
-	https://github.com/google/highwayhash/archive/fd3d9af80465e4383162e4a7c5e2f406e82dd968.tar.gz -> highwayhash-fd3d9af80465e4383162e4a7c5e2f406e82dd968.tar.gz
-	https://github.com/google/re2/archive/506cfa4bffd060c06ec338ce50ea3468daa6c814.tar.gz -> re2-506cfa4bffd060c06ec338ce50ea3468daa6c814.tar.gz
-	https://github.com/joe-kuo/sobol_data/archive/835a7d7b1ee3bc83e575e302a985c66ec4b65249.tar.gz -> sobol_data-835a7d7b1ee3bc83e575e302a985c66ec4b65249.tar.gz
-	https://github.com/llvm/llvm-project/archive/7e825abd5704ce28b166f9463d4bd304348fd2a9.tar.gz -> llvm-7e825abd5704ce28b166f9463d4bd304348fd2a9.tar.gz
-	https://github.com/mborgerding/kissfft/archive/36dbc057604f00aacfc0288ddad57e3b21cfc1b8.tar.gz -> kissfft-36dbc057604f00aacfc0288ddad57e3b21cfc1b8.tar.gz
-	https://github.com/google/ruy/archive/34ea9f4993955fa1ff4eb58e504421806b7f2e8f.zip -> ruy-34ea9f4993955fa1ff4eb58e504421806b7f2e8f.zip
-	https://github.com/pytorch/cpuinfo/archive/d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz -> pytorch-cpuinfo-d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz
-	https://github.com/pytorch/cpuinfo/archive/6cecd15784fcb6c5c0aa7311c6248879ce2cb8b2.zip -> pytorch-cpuinfo-6cecd15784fcb6c5c0aa7311c6248879ce2cb8b2.zip
-	cuda? (
-		https://github.com/nvidia/nccl/archive/5949d96f36d050e59d05872f8bbffd2549318e95.tar.gz -> nvidia-nccl-5949d96f36d050e59d05872f8bbffd2549318e95.tar.gz
-		https://github.com/NVlabs/cub/archive/1.8.0.zip -> cub-1.8.0.zip
-	)
-	https://github.com/intel/ARM_NEON_2_x86_SSE/archive/1200fe90bb174a6224a525ee60148671a786a71f.tar.gz -> ARM_NEON_2_x86_SSE-1200fe90bb174a6224a525ee60148671a786a71f.tar.gz
-	python? (
-		https://storage.googleapis.com/mirror.tensorflow.org/docs.python.org/2.7/_sources/license.rst.txt -> tensorflow-1.15.0-python-license.rst.txt
-		https://pypi.python.org/packages/bc/cc/3cdb0a02e7e96f6c70bd971bc8a90b8463fda83e264fa9c5c1c98ceabd81/backports.weakref-1.0rc1.tar.gz
-	)"
-
-SRC_URI="https://github.com/${PN}/${PN}/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz
-		https://dev.gentoo.org/~perfinion/patches/tensorflow-patches-${PVR}.tar.bz2
-		${bazel_external_uris}"
-
-RDEPEND="
-	!minimal? (
-		app-arch/snappy
-		dev-db/lmdb
-		dev-db/sqlite
-		dev-libs/double-conversion
-		dev-libs/icu
-		>=dev-libs/jsoncpp-1.9.2
-	)
-	dev-libs/libpcre
-	!minimal? (
-		dev-libs/nsync
-	)
-	dev-libs/openssl:0=
-	>=dev-libs/protobuf-3.8.0:=
-	>=dev-libs/re2-0.2019.06.01
-	!minimal? (
-		media-libs/giflib
-	)
-	media-libs/libjpeg-turbo
-	media-libs/libpng:0
-	!minimal? (
-		>=net-libs/grpc-1.28
-	)
-	net-misc/curl
-	sys-libs/zlib
-	!minimal? (
-		>=sys-apps/hwloc-2
-	)
-	cuda? (
-		|| (
-		        ( =dev-util/nvidia-cuda-toolkit-10.2*[profiler] =dev-libs/cudnn-7* )
-		        ( =dev-util/nvidia-cuda-toolkit-10.1*[profiler] =dev-libs/cudnn-7* )
-		        ( =dev-util/nvidia-cuda-toolkit-10.0*[profiler] =dev-libs/cudnn-7.4* )
-		        ( =dev-util/nvidia-cuda-toolkit-9.2*[profiler] =dev-libs/cudnn-7.1* )
-		        ( =dev-util/nvidia-cuda-toolkit-9.1*[profiler] =dev-libs/cudnn-7.0* )
-		)
-	)
-	mpi? ( virtual/mpi )
-	python? (
-		${PYTHON_DEPS}
-		>=dev-libs/flatbuffers-1.12.0:=
-		dev-python/absl-py[${PYTHON_USEDEP}]
-		>=dev-python/astor-0.7.1[${PYTHON_USEDEP}]
-		dev-python/astunparse[${PYTHON_USEDEP}]
-		>=dev-python/gast-0.3.3[${PYTHON_USEDEP}]
-		dev-python/h5py[${PYTHON_USEDEP}]
-		>=dev-python/numpy-1.19[${PYTHON_USEDEP}]
-		>=dev-python/google-pasta-0.1.8[${PYTHON_USEDEP}]
-		dev-python/opt-einsum[${PYTHON_USEDEP}]
-		>=dev-python/protobuf-python-3.8.0[${PYTHON_USEDEP}]
-		dev-python/pybind11[${PYTHON_USEDEP}]
-		dev-python/six[${PYTHON_USEDEP}]
-		dev-python/termcolor[${PYTHON_USEDEP}]
-		>=dev-python/grpcio-1.28[${PYTHON_USEDEP}]
-		>=dev-python/wrapt-1.11.1[${PYTHON_USEDEP}]
-		>=net-libs/google-cloud-cpp-0.10.0
-		>=sci-libs/keras-applications-1.0.8[${PYTHON_USEDEP}]
-		>=sci-libs/keras-preprocessing-1.1.0[${PYTHON_USEDEP}]
-		>=sci-visualization/tensorboard-2.3.0[${PYTHON_USEDEP}]
-		dev-python/dill[${PYTHON_USEDEP}]
-		dev-python/tblib[${PYTHON_USEDEP}]
-	)"
-DEPEND="${RDEPEND}
-	python? (
-		dev-python/mock
-		dev-python/setuptools
-	)"
-PDEPEND="python? (
-		>=sci-libs/tensorflow-estimator-2.3.0[${PYTHON_USEDEP}]
-	)"
-BDEPEND="
-	app-arch/unzip
-	>=dev-libs/protobuf-3.8.0
-	dev-java/java-config
-	dev-lang/swig
-	!minimal? (
-		=dev-util/bazel-3*
-	)
-	cuda? (
-		>=dev-util/nvidia-cuda-toolkit-9.1[profiler]
-	)
-	!python? ( dev-lang/python )
-	python? (
-		dev-python/cython
-		dev-python/mock
-		>=dev-python/grpcio-tools-1.28
-	)"
-REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
-
-PATCHES=(
-	"${FILESDIR}/tensorflow-2.3.1-0001-workspace.patch"
-	"${FILESDIR}/tensorflow-2.3.1-0002-nnapi-android-sdk-version.patch"
-	"${FILESDIR}/tensorflow-2.3.1-0003-ashmem-create.patch"
-	"${FILESDIR}/tensorflow-2.3.1-0004-nnapi-delegates.patch"
-	"${FILESDIR}/tensorflow-2.3.1-0005-cpuinfo-arm-fix.patch"
-)
-
-S="${WORKDIR}/${MY_P}"
-
-DOCS=( AUTHORS CONTRIBUTING.md ISSUE_TEMPLATE.md README.md RELEASE.md )
-CHECKREQS_MEMORY="5G"
-CHECKREQS_DISK_BUILD="10G"
-
-# Echos the CPU string that TensorFlow uses to refer to the given architecture.
-get-cpu-str() {
-	local arch
-	arch="$(tc-arch "${1}")"
-
-	case "${arch}" in
-	amd64) echo "k8";;
-	arm) echo "arm";;
-	arm64) echo "aarch64";;
-	*) die "Unsupported architecture '${arch}'."
-	esac
-}
-
-pkg_setup() {
-	ewarn "TensorFlow 2.0 is a major release that contains some incompatibilities"
-	ewarn "with TensorFlow 1.x. For more information about migrating to TF2.0 see:"
-	ewarn "https://www.tensorflow.org/guide/migrate"
-
-	local num_pythons_enabled
-	num_pythons_enabled=0
-	count_impls(){
-		num_pythons_enabled=$((${num_pythons_enabled} + 1))
-	}
-	use python && python_foreach_impl count_impls
-
-	# 10G to build C/C++ libs, 5G per python impl
-	CHECKREQS_DISK_BUILD="$((10 + 6 * ${num_pythons_enabled}))G"
-	check-reqs_pkg_setup
-}
-
-src_unpack() {
-	# Only unpack the main distfile
-	unpack "${P}.tar.gz"
-	bazel_load_distfiles "${bazel_external_uris}"
-}
-
-src_prepare() {
-	export JAVA_HOME=$(ROOT="${BROOT}" java-config --jdk-home)
-
-	# Relax version checks in setup.py
-	sed -i "/^    '/s/==/>=/g" tensorflow/tools/pip_package/setup.py || die
-
-	bazel_setup_bazelrc
-	bazel_setup_crosstool "$(get-cpu-str "${CBUILD}")" "$(get-cpu-str "${CHOST}")"
-
-	default
-	use python && python_copy_sources
-
-	use cuda && cuda_add_sandbox
-}
-
-src_configure() {
-	export JAVA_HOME=$(ROOT="${BROOT}" java-config --jdk-home)
-
-	do_configure() {
-		export CC_OPT_FLAGS=" "
-		export TF_ENABLE_XLA=$(usex xla 1 0)
-		export TF_NEED_OPENCL_SYCL=0
-		export TF_NEED_OPENCL=0
-		export TF_NEED_COMPUTECPP=0
-		export TF_NEED_ROCM=0
-		export TF_NEED_MPI=$(usex mpi 1 0)
-		export TF_SET_ANDROID_WORKSPACE=0
-
-		if use python; then
-			export PYTHON_BIN_PATH="${PYTHON}"
-			export PYTHON_LIB_PATH="$(python_get_sitedir)"
-		else
-			export PYTHON_BIN_PATH="$(which python)"
-			export PYTHON_LIB_PATH="$(python -c 'from distutils.sysconfig import *; print(get_python_lib())')"
-		fi
-
-		export TF_NEED_CUDA=$(usex cuda 1 0)
-		export TF_DOWNLOAD_CLANG=0
-		export TF_CUDA_CLANG=0
-		export TF_NEED_TENSORRT=0
-		if use cuda; then
-			export TF_CUDA_PATHS="${EPREFIX}/opt/cuda"
-			export GCC_HOST_COMPILER_PATH="$(cuda_gccdir)/$(tc-getCC)"
-			export TF_CUDA_VERSION="$(cuda_toolkit_version)"
-			export TF_CUDNN_VERSION="$(cuda_cudnn_version)"
-			einfo "Setting CUDA version: $TF_CUDA_VERSION"
-			einfo "Setting CUDNN version: $TF_CUDNN_VERSION"
-
-			if [[ *$(gcc-version)* != $(cuda-config -s) ]]; then
-				ewarn "TensorFlow is being built with Nvidia CUDA support. Your default compiler"
-				ewarn "version is not supported by the currently installed CUDA. TensorFlow will"
-				ewarn "instead be compiled using: ${GCC_HOST_COMPILER_PATH}."
-				ewarn "If the build fails with linker errors try rebuilding the relevant"
-				ewarn "dependencies using the same compiler version."
-			fi
-
-			if [[ -z "$TF_CUDA_COMPUTE_CAPABILITIES" ]]; then
-				ewarn "WARNING: Tensorflow is being built with its default CUDA compute capabilities: 3.5 and 7.0."
-				ewarn "These may not be optimal for your GPU."
-				ewarn ""
-				ewarn "To configure Tensorflow with the CUDA compute capability that is optimal for your GPU,"
-				ewarn "set TF_CUDA_COMPUTE_CAPABILITIES in your make.conf, and re-emerge tensorflow."
-				ewarn "For example, to use CUDA capability 7.5 & 3.5, add: TF_CUDA_COMPUTE_CAPABILITIES=7.5,3.5"
-				ewarn ""
-				ewarn "You can look up your GPU's CUDA compute capability at https://developer.nvidia.com/cuda-gpus"
-				ewarn "or by running /opt/cuda/extras/demo_suite/deviceQuery | grep 'CUDA Capability'"
-			fi
-		fi
-
-		# com_googlesource_code_re2 weird branch using absl, doesnt work with released re2
-		local SYSLIBS=(
-			absl_py
-			astor_archive
-			astunparse_archive
-			boringssl
-			com_github_googleapis_googleapis
-			com_github_googlecloudplatform_google_cloud_cpp
-			com_github_grpc_grpc
-			com_google_protobuf
-			curl
-			cython
-			dill_archive
-			double_conversion
-			enum34_archive
-			flatbuffers
-			functools32_archive
-			gast_archive
-			gif
-			hwloc
-			icu
-			jsoncpp_git
-			libjpeg_turbo
-			lmdb
-			nasm
-			nsync
-			opt_einsum_archive
-			org_sqlite
-			pasta
-			pcre
-			png
-			pybind11
-			six_archive
-			snappy
-			swig
-			tblib_archive
-			termcolor_archive
-			wrapt
-			zlib
-		)
-
-		export TF_SYSTEM_LIBS="${SYSLIBS[@]}"
-		export TF_IGNORE_MAX_BAZEL_VERSION=1
-
-		# This is not autoconf
-		./configure || die
-
-		echo 'build --config=noaws --config=nohdfs' >> .bazelrc || die
-		echo 'build --define tensorflow_mkldnn_contraction_kernel=0' >> .bazelrc || die
-	}
-	if use python; then
-		python_foreach_impl run_in_build_dir do_configure
-	else
-		do_configure
-	fi
-}
-
-src_compile() {
-	export JAVA_HOME=$(ROOT="${BROOT}" java-config --jdk-home)
-
-	if use python; then
-		python_setup
-		BUILD_DIR="${S}-${EPYTHON/./_}"
-		cd "${BUILD_DIR}"
-	fi
-
-	# fail early if any deps are missing
-	if ! use minimal; then
-		ebazel build -k --nobuild \
-			//tensorflow:libtensorflow_framework.so \
-			//tensorflow:libtensorflow.so \
-			//tensorflow:libtensorflow_cc.so \
-			$(usex python '//tensorflow/tools/pip_package:build_pip_package' '')
-	else
-		ebazel build -k --nobuild \
-			tensorflow/lite:libtensorflowlite.so \
-			//tensorflow/lite/kernels/internal:install_nnapi_extra_headers \
-			"$(usex label_image '
-				//tensorflow/lite/examples/label_image:label_image' '')" \
-			"$(usex benchmark_model '
-				//tensorflow/lite/tools/benchmark:benchmark_model' '')" \
-			"$(usex python '//tensorflow/tools/pip_package:build_pip_package' '')"
-	fi
-
-	if ! use minimal; then
-		ebazel build \
-			//tensorflow:libtensorflow_framework.so \
-			//tensorflow:libtensorflow.so
-		ebazel build //tensorflow:libtensorflow_cc.so
-	else
-		ebazel build \
-			//tensorflow/lite:libtensorflowlite.so \
-			//tensorflow/lite/kernels/internal:install_nnapi_extra_headers \
-			"$(usex label_image '
-				//tensorflow/lite/examples/label_image:label_image' '')" \
-			"$(usex benchmark_model '
-				//tensorflow/lite/tools/benchmark:benchmark_model' '')"
-	fi
-
-	do_compile() {
-		ebazel build //tensorflow/tools/pip_package:build_pip_package
-	}
-	BUILD_DIR="${S}"
-	cd "${BUILD_DIR}"
-	use python && python_foreach_impl run_in_build_dir do_compile
-	ebazel shutdown
-}
-
-src_install() {
-	local i j
-	export JAVA_HOME=$(ROOT="${BROOT}" java-config --jdk-home)
-
-	if ! use minimal; then
-		do_install() {
-			einfo "Installing ${EPYTHON} files"
-			local srcdir="${T}/src-${MULTIBUILD_VARIANT}"
-			mkdir -p "${srcdir}" || die
-			bazel-bin/tensorflow/tools/pip_package/build_pip_package --src "${srcdir}" || die
-			cd "${srcdir}" || die
-			esetup.py install
-
-			# libtensorflow_framework.so is in /usr/lib already
-			rm -f "${D}/$(python_get_sitedir)"/${PN}/lib${PN}_framework.so* || die
-			rm -f "${D}/$(python_get_sitedir)"/${PN}_core/lib${PN}_framework.so* || die
-			python_optimize
-		}
-
-		if use python; then
-			python_foreach_impl run_in_build_dir do_install
-
-			# Symlink to python-exec scripts
-			for i in "${ED}"/usr/lib/python-exec/*/*; do
-				n="${i##*/}"
-				[[ -e "${ED}/usr/bin/${n}" ]] || dosym ../lib/python-exec/python-exec2 "/usr/bin/${n}"
-			done
-
-			python_setup
-			local BUILD_DIR="${S}-${EPYTHON/./_}"
-			cd "${BUILD_DIR}" || die
-		fi
-
-		einfo "Installing headers"
-		ebazel build //tensorflow:install_headers
-		ebazel shutdown
-		insinto /usr/include/${PN}/
-		doins -r bazel-bin/tensorflow/include/*
-
-		einfo "Installing libs"
-		# Generate pkg-config file
-		${PN}/c/generate-pc.sh --prefix="${EPREFIX}"/usr --libdir=$(get_libdir) --version=${MY_PV} || die
-		insinto /usr/$(get_libdir)/pkgconfig
-		doins ${PN}.pc ${PN}_cc.pc
-
-		for l in libtensorflow{,_framework,_cc}.so; do
-			dolib.so bazel-bin/tensorflow/${l}
-			dolib.so bazel-bin/tensorflow/${l}.$(ver_cut 1)
-			dolib.so bazel-bin/tensorflow/${l}.$(ver_cut 1-3)
-		done
-	else
-		einfo "Installing TF lite headers"
-		# From tensorflow/lite/lib_package/create_ios_frameworks.sh
-		find ${PN}/lite -name "*.h" \
-			-not -path "${PN}/lite/tools/*" \
-			-not -path "${PN}/lite/examples/*" \
-			-not -path "${PN}/lite/gen/*" \
-			-not -path "${PN}/lite/toco/*" \
-			-not -path "${PN}/lite/java/*" |
-		while read -r i; do
-			insinto "/usr/include/${PN}/${i%/*}"
-			doins "${i}"
-		done
-		if use minimal; then
-			einfo "Installing selected TF core headers"
-			local selected=( lib/bfloat16/bfloat16.h platform/byte_order.h platform/macros.h )
-			for i in "${selected[@]}"; do
-				insinto "/usr/include/${PN}/${PN}/core/${i%/*}"
-				doins "${PN}/core/${i}"
-			done
-		fi
-
-		einfo "Installing NNAPI headers"
-		insinto /usr/include/${PN}/nnapi/
-		doins -r bazel-bin/tensorflow/lite/kernels/internal/include
-		doins -r bazel-bin/tensorflow/lite/kernels/internal/include
-
-		einfo "Installing ruy headers"
-		insinto /usr/include/${PN}/ruy/
-		doins -r "../tensorflow-${PV}-bazel-base/external/ruy/ruy"/*
-
-		einfo "Installing TF lite libraries"
-		dolib.so bazel-bin/tensorflow/lite/lib${PN}lite.so
-
-		if use label_image; then
-			einfo "Install label_image example"
-			dobin bazel-bin/tensorflow/lite/examples/label_image/label_image
-		fi
-
-		if use benchmark_model; then
-			einfo "Install benchmark_model tool"
-			dobin bazel-bin/tensorflow/lite/tools/benchmark/benchmark_model
-		fi
-	fi
-
-	einstalldocs
-}
diff --git a/sci-libs/tensorflow/tensorflow-2.5.0-r2.ebuild b/sci-libs/tensorflow/tensorflow-2.5.0-r2.ebuild
new file mode 120000
index 0000000..3aa6e3f
--- /dev/null
+++ b/sci-libs/tensorflow/tensorflow-2.5.0-r2.ebuild
@@ -0,0 +1 @@
+tensorflow-2.5.0.ebuild
\ No newline at end of file
diff --git a/sci-libs/tensorflow/tensorflow-2.5.0.ebuild b/sci-libs/tensorflow/tensorflow-2.5.0.ebuild
new file mode 100644
index 0000000..7bd2fb5
--- /dev/null
+++ b/sci-libs/tensorflow/tensorflow-2.5.0.ebuild
@@ -0,0 +1,493 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DISTUTILS_OPTIONAL=1
+PYTHON_COMPAT=( python3_{6,7,8} )
+DISTUTILS_USE_SETUPTOOLS=rdepend
+MY_PV=${PV/_rc/-rc}
+MY_P=${PN}-${MY_PV}
+
+# s/bazel/cros-bazel/ instead of bazel to fix downloading dependencies.
+# s/prefix// because ChromeOS doesn't need it.
+inherit cros-bazel check-reqs cuda distutils-r1 flag-o-matic toolchain-funcs
+
+DESCRIPTION="Computation framework using data flow graphs for scalable machine learning"
+HOMEPAGE="https://www.tensorflow.org/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+# ChromeOS uses 'minimal' to compile only TensorFlow Lite, compilation without 'minimal' is not supported.
+IUSE="cuda mpi +python xla minimal label_image benchmark_model xnnpack"
+
+# distfiles that bazel uses for the workspace, will be copied to basel-distdir
+bazel_external_uris="
+	https://github.com/abseil/abseil-cpp/archive/6f9d96a1f41439ac172ee2ef7ccd8edf0e5d068c.tar.gz -> abseil-cpp-6f9d96a1f41439ac172ee2ef7ccd8edf0e5d068c.tar.gz
+	https://github.com/bazelbuild/apple_support/archive/501b4afb27745c4813a88ffa28acd901408014e4.tar.gz -> bazelbuild-apple_support-501b4afb27745c4813a88ffa28acd901408014e4.tar.gz
+	https://github.com/bazelbuild/bazel-toolchains/archive/92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz -> bazel-toolchains-92dd8a7a518a2fb7ba992d47c8b38299fe0be825.tar.gz
+	https://github.com/bazelbuild/bazel-skylib/releases/download/1.0.3/bazel-skylib-1.0.3.tar.gz -> bazel-skylib-1.0.3.tar.gz
+	https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip -> bazelbuild-rules_android-v0.1.1.zip
+	https://github.com/bazelbuild/rules_apple/archive/5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz -> bazelbuild-rules_apple-5131f3d46794bf227d296c82f30c2499c9de3c5b.tar.gz
+	https://github.com/bazelbuild/rules_cc/archive/01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip -> bazelbuild-rules_cc-01d4a48911d5e7591ecb1c06d3b8af47fe872371.zip
+	https://github.com/bazelbuild/rules_closure/archive/308b05b2419edb5c8ee0471b67a40403df940149.tar.gz -> bazelbuild-rules_closure-308b05b2419edb5c8ee0471b67a40403df940149.tar.gz
+	https://github.com/bazelbuild/rules_java/archive/7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip -> bazelbuild-rules_java-7cf3cefd652008d0a64a419c34c13bdca6c8f178.zip
+	https://github.com/bazelbuild/rules_swift/archive/3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz -> bazelbuild-rules_swift-3eeeb53cebda55b349d64c9fc144e18c5f7c0eb8.tar.gz
+	https://github.com/google/farmhash/archive/816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz -> farmhash-816a4ae622e964763ca0862d9dbd19324a1eaf45.tar.gz
+	https://github.com/google/gemmlowp/archive/fda83bdc38b118cc6b56753bd540caa49e570745.zip -> gemmlowp-fda83bdc38b118cc6b56753bd540caa49e570745.zip
+	https://github.com/google/ruy/archive/54774a7a2cf85963777289193629d4bd42de4a59.zip -> ruy-54774a7a2cf85963777289193629d4bd42de4a59.zip
+	https://github.com/google/XNNPACK/archive/79cd5f9e18ad0925ac9a050b00ea5a36230072db.zip -> XNNPACK-79cd5f9e18ad0925ac9a050b00ea5a36230072db.zip
+	https://github.com/intel/ARM_NEON_2_x86_SSE/archive/1200fe90bb174a6224a525ee60148671a786a71f.tar.gz -> ARM_NEON_2_x86_SSE-1200fe90bb174a6224a525ee60148671a786a71f.tar.gz	https://github.com/googleapis/googleapis/archive/541b1ded4abadcc38e8178680b0677f65594ea6f.zip -> googleapis-541b1ded4abadcc38e8178680b0677f65594ea6f.zip
+	https://github.com/petewarden/OouraFFT/archive/v1.0.tar.gz -> OouraFFT-v1.0.tar.gz
+	https://github.com/pytorch/cpuinfo/archive/5916273f79a21551890fd3d56fc5375a78d1598d.zip -> pytorch-cpuinfo-5916273f79a21551890fd3d56fc5375a78d1598d.zip
+	https://github.com/pytorch/cpuinfo/archive/d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz -> pytorch-cpuinfo-d5e37adf1406cf899d7d9ec1d317c47506ccb970.tar.gz
+	https://github.com/Maratyszcza/FP16/archive/4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip -> FP16-4dfe081cf6bcd15db339cf2680b9281b8451eeb3.zip
+	https://github.com/Maratyszcza/FXdiv/archive/63058eff77e11aa15bf531df5dd34395ec3017c8.zip -> FXdiv-63058eff77e11aa15bf531df5dd34395ec3017c8.zip
+	https://github.com/Maratyszcza/pthreadpool/archive/b8374f80e42010941bda6c85b0e3f1a1bd77a1e0.zip -> pthreadpool-b8374f80e42010941bda6c85b0e3f1a1bd77a1e0.zip
+	https://github.com/tensorflow/toolchains/archive/v1.1.10.tar.gz -> tensorflow_toolchains_v1.1.10.tar.gz
+	https://gitlab.com/libeigen/eigen/-/archive/f612df273689a19d25b45ca4f8269463207c4fee/eigen-f612df273689a19d25b45ca4f8269463207c4fee.tar.gz -> eigen-f612df273689a19d25b45ca4f8269463207c4fee.tar.gz
+"
+
+SRC_URI="
+	https://github.com/${PN}/${PN}/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz
+	${bazel_external_uris}
+	"
+
+RDEPEND="
+	!minimal? (
+		app-arch/snappy
+		dev-db/lmdb
+		dev-db/sqlite
+		dev-libs/double-conversion
+		dev-libs/icu
+		>=dev-libs/jsoncpp-1.9.2
+	)
+	dev-libs/libpcre
+	!minimal? (
+		dev-libs/nsync
+	)
+	dev-libs/openssl:0=
+	>=dev-libs/protobuf-3.8.0:=
+	>=dev-libs/re2-0.2019.06.01
+	!minimal? (
+		media-libs/giflib
+	)
+	media-libs/libjpeg-turbo
+	media-libs/libpng:0
+	!minimal? (
+		>=net-libs/grpc-1.28
+	)
+	net-misc/curl
+	sys-libs/zlib
+	!minimal? (
+		>=sys-apps/hwloc-2
+	)
+	cuda? (
+		|| (
+			( =dev-util/nvidia-cuda-toolkit-10.2*[profiler] =dev-libs/cudnn-7* )
+			( =dev-util/nvidia-cuda-toolkit-10.1*[profiler] =dev-libs/cudnn-7* )
+			( =dev-util/nvidia-cuda-toolkit-10.0*[profiler] =dev-libs/cudnn-7.4* )
+			( =dev-util/nvidia-cuda-toolkit-9.2*[profiler] =dev-libs/cudnn-7.1* )
+			( =dev-util/nvidia-cuda-toolkit-9.1*[profiler] =dev-libs/cudnn-7.0* )
+		)
+	)
+	mpi? ( virtual/mpi )
+	python? (
+		${PYTHON_DEPS}
+		>=dev-libs/flatbuffers-1.12.0:=
+		dev-python/absl-py[${PYTHON_USEDEP}]
+		>=dev-python/astor-0.7.1[${PYTHON_USEDEP}]
+		dev-python/astunparse[${PYTHON_USEDEP}]
+		>=dev-python/gast-0.3.3[${PYTHON_USEDEP}]
+		dev-python/h5py[${PYTHON_USEDEP}]
+		>=dev-python/numpy-1.19[${PYTHON_USEDEP}]
+		>=dev-python/google-pasta-0.1.8[${PYTHON_USEDEP}]
+		dev-python/opt-einsum[${PYTHON_USEDEP}]
+		>=dev-python/protobuf-python-3.8.0[${PYTHON_USEDEP}]
+		dev-python/pybind11[${PYTHON_USEDEP}]
+		dev-python/six[${PYTHON_USEDEP}]
+		dev-python/termcolor[${PYTHON_USEDEP}]
+		>=dev-python/grpcio-1.28[${PYTHON_USEDEP}]
+		>=dev-python/wrapt-1.11.1[${PYTHON_USEDEP}]
+		>=net-libs/google-cloud-cpp-0.10.0
+		>=sci-libs/keras-applications-1.0.8[${PYTHON_USEDEP}]
+		>=sci-libs/keras-preprocessing-1.1.0[${PYTHON_USEDEP}]
+		>=sci-visualization/tensorboard-2.3.0[${PYTHON_USEDEP}]
+		dev-python/dill[${PYTHON_USEDEP}]
+		dev-python/tblib[${PYTHON_USEDEP}]
+	)"
+DEPEND="${RDEPEND}
+	python? (
+		dev-python/mock
+		dev-python/setuptools
+	)"
+PDEPEND="python? (
+		>=sci-libs/tensorflow-estimator-2.3.0[${PYTHON_USEDEP}]
+	)"
+BDEPEND="
+	app-arch/unzip
+	>=dev-libs/protobuf-3.8.0
+	dev-java/java-config
+	dev-lang/swig
+	!minimal? (
+		=dev-util/bazel-3*
+	)
+	cuda? (
+		>=dev-util/nvidia-cuda-toolkit-9.1[profiler]
+	)
+	!python? ( dev-lang/python )
+	python? (
+		dev-python/cython
+		dev-python/mock
+		>=dev-python/grpcio-tools-1.28
+	)"
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+PATCHES=(
+	"${FILESDIR}/tensorflow-2.5.0-0001-workspace.patch"
+	"${FILESDIR}/tensorflow-2.5.0-0002-ashmem-create.patch"
+	"${FILESDIR}/tensorflow-2.5.0-0003-nnapi-delegates.patch"
+	"${FILESDIR}/tensorflow-2.5.0-0004-cpuinfo-arm-fix.patch"
+	"${FILESDIR}/tensorflow-2.5.0-0005-xnnpack-update.patch"
+)
+
+S="${WORKDIR}/${MY_P}"
+
+DOCS=( AUTHORS CONTRIBUTING.md ISSUE_TEMPLATE.md README.md RELEASE.md )
+CHECKREQS_MEMORY="5G"
+CHECKREQS_DISK_BUILD="10G"
+
+# Echos the CPU string that TensorFlow uses to refer to the given architecture.
+get-cpu-str() {
+	local arch
+	arch="$(tc-arch "${1}")"
+
+	case "${arch}" in
+	amd64) echo "k8";;
+	arm) echo "arm";;
+	arm64) echo "aarch64";;
+	*) die "Unsupported architecture '${arch}'."
+	esac
+}
+
+pkg_setup() {
+	ewarn "TensorFlow 2.0 is a major release that contains some incompatibilities"
+	ewarn "with TensorFlow 1.x. For more information about migrating to TF2.0 see:"
+	ewarn "https://www.tensorflow.org/guide/migrate"
+
+	local num_pythons_enabled
+	num_pythons_enabled=0
+	count_impls(){
+		num_pythons_enabled=$((${num_pythons_enabled} + 1))
+	}
+	use python && python_foreach_impl count_impls
+
+	# 10G to build C/C++ libs, 5G per python impl
+	CHECKREQS_DISK_BUILD="$((10 + 6 * ${num_pythons_enabled}))G"
+	check-reqs_pkg_setup
+}
+
+src_unpack() {
+	# Only unpack the main distfile
+	unpack "${P}.tar.gz"
+	bazel_load_distfiles "${bazel_external_uris}"
+}
+
+src_prepare() {
+	export JAVA_HOME=$(ROOT="${BROOT}" java-config --jdk-home)
+
+	# Relax version checks in setup.py
+	sed -i "/^    '/s/==/>=/g" tensorflow/tools/pip_package/setup.py || die
+
+	bazel_setup_bazelrc
+	bazel_setup_crosstool "$(get-cpu-str "${CBUILD}")" "$(get-cpu-str "${CHOST}")"
+
+	default
+	use python && python_copy_sources
+
+	use cuda && cuda_add_sandbox
+}
+
+src_configure() {
+	export JAVA_HOME=$(ROOT="${BROOT}" java-config --jdk-home)
+
+	do_configure() {
+		export CC_OPT_FLAGS=" "
+		export TF_ENABLE_XLA=$(usex xla 1 0)
+		export TF_NEED_OPENCL_SYCL=0
+		export TF_NEED_OPENCL=0
+		export TF_NEED_COMPUTECPP=0
+		export TF_NEED_ROCM=0
+		export TF_NEED_MPI=$(usex mpi 1 0)
+		export TF_SET_ANDROID_WORKSPACE=0
+
+		if use python; then
+			export PYTHON_BIN_PATH="${PYTHON}"
+			export PYTHON_LIB_PATH="$(python_get_sitedir)"
+		else
+			export PYTHON_BIN_PATH="$(which python)"
+			export PYTHON_LIB_PATH="$(python -c 'from distutils.sysconfig import *; print(get_python_lib())')"
+		fi
+
+		export TF_NEED_CUDA=$(usex cuda 1 0)
+		export TF_DOWNLOAD_CLANG=0
+		export TF_CUDA_CLANG=0
+		export TF_NEED_TENSORRT=0
+		if use cuda; then
+			export TF_CUDA_PATHS="${EPREFIX}/opt/cuda"
+			export GCC_HOST_COMPILER_PATH="$(cuda_gccdir)/$(tc-getCC)"
+			export TF_CUDA_VERSION="$(cuda_toolkit_version)"
+			export TF_CUDNN_VERSION="$(cuda_cudnn_version)"
+			einfo "Setting CUDA version: $TF_CUDA_VERSION"
+			einfo "Setting CUDNN version: $TF_CUDNN_VERSION"
+
+			if [[ *$(gcc-version)* != $(cuda-config -s) ]]; then
+				ewarn "TensorFlow is being built with Nvidia CUDA support. Your default compiler"
+				ewarn "version is not supported by the currently installed CUDA. TensorFlow will"
+				ewarn "instead be compiled using: ${GCC_HOST_COMPILER_PATH}."
+				ewarn "If the build fails with linker errors try rebuilding the relevant"
+				ewarn "dependencies using the same compiler version."
+			fi
+
+			if [[ -z "$TF_CUDA_COMPUTE_CAPABILITIES" ]]; then
+				ewarn "WARNING: Tensorflow is being built with its default CUDA compute capabilities: 3.5 and 7.0."
+				ewarn "These may not be optimal for your GPU."
+				ewarn ""
+				ewarn "To configure Tensorflow with the CUDA compute capability that is optimal for your GPU,"
+				ewarn "set TF_CUDA_COMPUTE_CAPABILITIES in your make.conf, and re-emerge tensorflow."
+				ewarn "For example, to use CUDA capability 7.5 & 3.5, add: TF_CUDA_COMPUTE_CAPABILITIES=7.5,3.5"
+				ewarn ""
+				ewarn "You can look up your GPU's CUDA compute capability at https://developer.nvidia.com/cuda-gpus"
+				ewarn "or by running /opt/cuda/extras/demo_suite/deviceQuery | grep 'CUDA Capability'"
+			fi
+		fi
+
+		local SYSLIBS=(
+			absl_py
+			astor_archive
+			astunparse_archive
+			boringssl
+			com_github_googleapis_googleapis
+			com_github_googlecloudplatform_google_cloud_cpp
+			com_github_grpc_grpc
+			com_google_protobuf
+			curl
+			cython
+			dill_archive
+			double_conversion
+			enum34_archive
+			flatbuffers
+			functools32_archive
+			gast_archive
+			gif
+			hwloc
+			icu
+			jsoncpp_git
+			libjpeg_turbo
+			lmdb
+			nasm
+			nsync
+			opt_einsum_archive
+			org_sqlite
+			pasta
+			pcre
+			png
+			pybind11
+			six_archive
+			snappy
+			swig
+			tblib_archive
+			termcolor_archive
+			wrapt
+			zlib
+		)
+
+		export TF_SYSTEM_LIBS="${SYSLIBS[@]}"
+		export TF_IGNORE_MAX_BAZEL_VERSION=1
+
+		# This is not autoconf
+		./configure || die
+
+		echo 'build --config=noaws --config=nohdfs' >> .bazelrc || die
+		echo 'build --define tensorflow_mkldnn_contraction_kernel=0' >> .bazelrc || die
+
+		# The ruy library is faster than the default libeigen on arm, but
+		# MUCH slower on amd64. See b/178593695 for more discussion.
+		case "${ARCH}" in
+			arm | arm64) echo 'build --define=tflite_with_ruy=true' >> .bazelrc || die ;;
+		esac
+	}
+	if use python; then
+		python_foreach_impl run_in_build_dir do_configure
+	else
+		do_configure
+	fi
+}
+
+src_compile() {
+	export JAVA_HOME=$(ROOT="${BROOT}" java-config --jdk-home)
+
+	if use python; then
+		python_setup
+		BUILD_DIR="${S}-${EPYTHON/./_}"
+		cd "${BUILD_DIR}"
+	fi
+
+	# fail early if any deps are missing
+	if ! use minimal; then
+		ebazel build -k --nobuild \
+			//tensorflow:libtensorflow_framework.so \
+			//tensorflow:libtensorflow.so \
+			//tensorflow:libtensorflow_cc.so \
+			$(usex python '//tensorflow/tools/pip_package:build_pip_package' '')
+	else
+		ebazel build -k --nobuild \
+			tensorflow/lite:libtensorflowlite.so \
+			//tensorflow/lite/kernels/internal:install_nnapi_extra_headers \
+			"$(usex label_image '
+				//tensorflow/lite/examples/label_image:label_image' '')" \
+			"$(usex benchmark_model '
+				//tensorflow/lite/tools/benchmark:benchmark_model' '')" \
+			"$(usex python '//tensorflow/tools/pip_package:build_pip_package' '')"
+	fi
+
+	if ! use minimal; then
+		ebazel build \
+			//tensorflow:libtensorflow_framework.so \
+			//tensorflow:libtensorflow.so
+		ebazel build //tensorflow:libtensorflow_cc.so
+	else
+		ebazel build \
+			//tensorflow/lite:libtensorflowlite.so \
+			//tensorflow/lite/kernels/internal:install_nnapi_extra_headers \
+			"$(usex label_image '
+				//tensorflow/lite/examples/label_image:label_image' '')" \
+			"$(usex benchmark_model '
+				//tensorflow/lite/tools/benchmark:benchmark_model' '')"
+	fi
+
+	do_compile() {
+		ebazel build //tensorflow/tools/pip_package:build_pip_package
+	}
+	BUILD_DIR="${S}"
+	cd "${BUILD_DIR}"
+	use python && python_foreach_impl run_in_build_dir do_compile
+	ebazel shutdown
+}
+
+src_install() {
+	local i j
+	export JAVA_HOME=$(ROOT="${BROOT}" java-config --jdk-home)
+
+	if ! use minimal; then
+		do_install() {
+			einfo "Installing ${EPYTHON} files"
+			local srcdir="${T}/src-${MULTIBUILD_VARIANT}"
+			mkdir -p "${srcdir}" || die
+			bazel-bin/tensorflow/tools/pip_package/build_pip_package --src "${srcdir}" || die
+			cd "${srcdir}" || die
+			esetup.py install
+
+			# libtensorflow_framework.so is in /usr/lib already
+			rm -f "${D}/$(python_get_sitedir)"/${PN}/lib${PN}_framework.so* || die
+			rm -f "${D}/$(python_get_sitedir)"/${PN}_core/lib${PN}_framework.so* || die
+			python_optimize
+		}
+
+		if use python; then
+			python_foreach_impl run_in_build_dir do_install
+
+			# Symlink to python-exec scripts
+			for i in "${ED}"/usr/lib/python-exec/*/*; do
+				n="${i##*/}"
+				[[ -e "${ED}/usr/bin/${n}" ]] || dosym ../lib/python-exec/python-exec2 "/usr/bin/${n}"
+			done
+
+			python_setup
+			local BUILD_DIR="${S}-${EPYTHON/./_}"
+			cd "${BUILD_DIR}" || die
+		fi
+
+		einfo "Installing headers"
+		ebazel build //tensorflow:install_headers
+		ebazel shutdown
+		insinto /usr/include/${PN}/
+		doins -r bazel-bin/tensorflow/include/*
+
+		einfo "Installing libs"
+		# Generate pkg-config file
+		${PN}/c/generate-pc.sh --prefix="${EPREFIX}"/usr --libdir=$(get_libdir) --version=${MY_PV} || die
+		insinto /usr/$(get_libdir)/pkgconfig
+		doins ${PN}.pc ${PN}_cc.pc
+
+		for l in libtensorflow{,_framework,_cc}.so; do
+			dolib.so bazel-bin/tensorflow/${l}
+			dolib.so bazel-bin/tensorflow/${l}.$(ver_cut 1)
+			dolib.so bazel-bin/tensorflow/${l}.$(ver_cut 1-3)
+		done
+	else
+		einfo "Installing TF lite headers"
+		# From tensorflow/lite/lib_package/create_ios_frameworks.sh
+		find ${PN}/lite -name "*.h" \
+			-not -path "${PN}/lite/tools/*" \
+			-not -path "${PN}/lite/examples/*" \
+			-not -path "${PN}/lite/gen/*" \
+			-not -path "${PN}/lite/toco/*" \
+			-not -path "${PN}/lite/java/*" |
+		while read -r i; do
+			insinto "/usr/include/${PN}/${i%/*}"
+			doins "${i}"
+		done
+		if use minimal; then
+			einfo "Installing selected TF core headers"
+			local selected=( lib/bfloat16/bfloat16.h platform/byte_order.h platform/macros.h platform/bfloat16.h )
+			for i in "${selected[@]}"; do
+				insinto "/usr/include/${PN}/${PN}/core/${i%/*}"
+				doins "${PN}/core/${i}"
+			done
+		fi
+
+		einfo "Installing NNAPI headers"
+		insinto /usr/include/${PN}/nnapi/
+		doins -r bazel-bin/tensorflow/lite/kernels/internal/include
+
+		einfo "Installing ruy headers"
+		insinto /usr/include/${PN}/ruy/
+		doins -r "../tensorflow-${PV}-bazel-base/external/ruy/ruy"/*
+
+		einfo "Installing TF lite libraries"
+		dolib.so bazel-bin/tensorflow/lite/lib${PN}lite.so
+
+		if use label_image; then
+			einfo "Install label_image example"
+			dobin bazel-bin/tensorflow/lite/examples/label_image/label_image
+		fi
+
+		if use benchmark_model; then
+			einfo "Install benchmark_model tool"
+			dobin bazel-bin/tensorflow/lite/tools/benchmark/benchmark_model
+		fi
+
+		if use xnnpack; then
+			einfo "Installing XNNPACK headers and libs"
+			local bindir="../tensorflow-${PV}-bazel-base/execroot/org_tensorflow/bazel-out/$(get-cpu-str "${CHOST}")-opt/bin/external/"
+			insinto /usr/include/${PN}/xnnpack/
+			doins "../tensorflow-${PV}-bazel-base/external/XNNPACK/include/xnnpack.h"
+			doins "../tensorflow-${PV}-bazel-base/external/pthreadpool/include/pthreadpool.h"
+			dolib.a "${bindir}/clog/libclog.a"
+			dolib.a "${bindir}/cpuinfo/libcpuinfo_impl.pic.a"
+			dolib.a "${bindir}/pthreadpool/libpthreadpool.a"
+			# The lib names vary wildly between amd64 and arm, so
+			# easier just to scan for them rather than explicitly
+			# listing them and switching on ${ARCH}.
+			find "${bindir}/XNNPACK/" -name "*.a" |
+			while read -r i; do
+				dolib.a "${i}"
+			done
+		fi
+
+	fi
+
+	einstalldocs
+}
diff --git a/sys-apps/coreboot-utils/coreboot-utils-0.0.1-r4665.ebuild b/sys-apps/coreboot-utils/coreboot-utils-0.0.1-r4665.ebuild
deleted file mode 100644
index 8994dd8..0000000
--- a/sys-apps/coreboot-utils/coreboot-utils-0.0.1-r4665.ebuild
+++ /dev/null
@@ -1,101 +0,0 @@
-# Copyright 2012 The Chromium OS Authors
-# Distributed under the terms of the GNU General Public License v2
-# $Header:
-
-EAPI=7
-CROS_WORKON_COMMIT=("1cf1d1ceda64e0b81170f8454fd5ecca311667d5" "6f6efdc6fa38ed3bcacfa9e152f415d50ee8bad0")
-CROS_WORKON_TREE=("2e32d2a5a79f8e88be91b44b40a65211c6ea4dae" "06c3486af100c39ddc9cb59381d087b4f2ed1634")
-CROS_WORKON_PROJECT=(
-	"chromiumos/third_party/coreboot"
-	"chromiumos/platform/vboot_reference"
-)
-CROS_WORKON_LOCALNAME=(
-	"coreboot"
-	"../platform/vboot_reference"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}"
-	"${S}/3rdparty/vboot"
-)
-CROS_WORKON_EGIT_BRANCH=(
-	"chromeos-2016.05"
-	"master"
-)
-
-inherit cros-workon toolchain-funcs
-
-DESCRIPTION="Utilities for modifying coreboot firmware images"
-HOMEPAGE="http://coreboot.org"
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="cros_host mma +pci static"
-
-LIB_DEPEND="sys-apps/pciutils[static-libs(+)]"
-RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs(+)]} )"
-DEPEND="${RDEPEND}
-	static? ( ${LIB_DEPEND} )
-"
-
-_emake() {
-	emake \
-		TOOLLDFLAGS="${LDFLAGS}" \
-		CC="${CC}" \
-		STRIP="true" \
-		"$@"
-}
-
-src_configure() {
-	use static && append-ldflags -static
-	tc-export CC PKG_CONFIG
-}
-
-is_x86() {
-	use x86 || use amd64
-}
-
-src_compile() {
-	_emake -C util/cbfstool obj="${PWD}/util/cbfstool"
-	if use cros_host; then
-		_emake -C util/archive HOSTCC="${CC}"
-	else
-		_emake -C util/cbmem
-	fi
-	if is_x86; then
-		if use cros_host; then
-			_emake -C util/ifdtool
-		else
-			_emake -C util/superiotool \
-				CONFIG_PCI=$(usex pci)
-			_emake -C util/inteltool
-			_emake -C util/nvramtool
-		fi
-	fi
-}
-
-src_install() {
-	dobin util/cbfstool/cbfstool
-	if use cros_host; then
-		dobin util/cbfstool/fmaptool
-		dobin util/cbfstool/cbfs-compression-tool
-		dobin util/archive/archive
-	else
-		dobin util/cbmem/cbmem
-	fi
-	if is_x86; then
-		if use cros_host; then
-			dobin util/ifdtool/ifdtool
-		else
-			dobin util/superiotool/superiotool
-			dobin util/inteltool/inteltool
-			dobin util/nvramtool/nvramtool
-		fi
-		if use mma; then
-			dobin util/mma/mma_setup_test.sh
-			dobin util/mma/mma_get_result.sh
-			dobin util/mma/mma_automated_test.sh
-			insinto /etc/init
-			doins util/mma/mma.conf
-		fi
-	fi
-}
diff --git a/sys-apps/coreboot-utils/coreboot-utils-0.0.1-r4889.ebuild b/sys-apps/coreboot-utils/coreboot-utils-0.0.1-r4889.ebuild
new file mode 100644
index 0000000..d7d0842
--- /dev/null
+++ b/sys-apps/coreboot-utils/coreboot-utils-0.0.1-r4889.ebuild
@@ -0,0 +1,111 @@
+# Copyright 2012 The Chromium OS Authors
+# Distributed under the terms of the GNU General Public License v2
+# $Header:
+
+EAPI=7
+CROS_WORKON_COMMIT=("08aff2250e3b459da8094f03e5bea60ed78c413a" "600c679cd66265a54ee63b1747abfff6f94a25ad")
+CROS_WORKON_TREE=("799331977582570b4553d5b8ecf53f17828b8175" "0e26966d3f2069b8ac7134030bcdf1022620e54b" "68a5efcfa8adcf49f7e7b213e8693b754999b180" "7970bef34ce4d0b3023def52ff72e1c4cd2eca85" "1f141a99a47f4c9edd8fdf11508f24cee865b31e" "2928430a62aab173b801749223f89a315b2f5e1c" "c4524c42dcd8ee9f61dc34d99e71983e065c591c" "181b7ecc670fb8b8481356d96e48592587a73c68" "e03866d9ecdf3529248f3d4bd0b63499a092f2c3" "974edbc79de4f730edf8c9d01bc9186f97417f1d" "bfef75f3a17da232f402e1799b42c25c2b1c5176" "327b75387dd5fa21a18900c37c6017c6378024be" "f0e6fefacbfcbd78417e52a97ba25032cf8fa1ed" "357d07fc1526ad76c1a186e437b7736e3a254d65" "2d58e3830d3fc4159e3f127522d8f7b1bee5c8d7" "362eda536c1c8032f60673bd7943efd3bd9dfb7a")
+CROS_WORKON_PROJECT=(
+	"chromiumos/third_party/coreboot"
+	"chromiumos/platform/vboot_reference"
+)
+CROS_WORKON_LOCALNAME=(
+	"coreboot"
+	"../platform/vboot_reference"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}"
+	"${S}/3rdparty/vboot"
+)
+CROS_WORKON_EGIT_BRANCH=(
+	"chromeos-2016.05"
+	"main"
+)
+
+# coreboot:src/arch/x85/include/arch: used by inteltool, x86 only
+# coreboot:src/commonlib: used by cbfstool
+# coreboot:src/vendorcode/intel: used by cbfstool
+# coreboot:util/*: tools built by this ebuild
+# vboot: minimum set of files and directories to build vboot_lib for cbfstool
+CROS_WORKON_SUBTREE=(
+	"src/arch/x86/include/arch src/commonlib src/vendorcode/intel util/archive util/cbmem util/cbfstool util/ifdtool util/inteltool util/mma util/nvramtool util/superiotool"
+	"Makefile cgpt host firmware futility"
+)
+
+inherit cros-workon toolchain-funcs
+
+DESCRIPTION="Utilities for modifying coreboot firmware images"
+HOMEPAGE="http://coreboot.org"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="cros_host mma +pci static"
+
+LIB_DEPEND="sys-apps/pciutils[static-libs(+)]"
+RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs(+)]} )"
+DEPEND="${RDEPEND}
+	static? ( ${LIB_DEPEND} )
+"
+
+_emake() {
+	emake \
+		TOOLLDFLAGS="${LDFLAGS}" \
+		CC="${CC}" \
+		STRIP="true" \
+		"$@"
+}
+
+src_configure() {
+	use static && append-ldflags -static
+	tc-export CC PKG_CONFIG
+}
+
+is_x86() {
+	use x86 || use amd64
+}
+
+src_compile() {
+	_emake -C util/cbfstool obj="${PWD}/util/cbfstool"
+	if use cros_host; then
+		_emake -C util/archive HOSTCC="${CC}"
+	else
+		_emake -C util/cbmem
+	fi
+	if is_x86; then
+		if use cros_host; then
+			_emake -C util/ifdtool
+		else
+			_emake -C util/superiotool \
+				CONFIG_PCI=$(usex pci)
+			_emake -C util/inteltool
+			_emake -C util/nvramtool
+		fi
+	fi
+}
+
+src_install() {
+	dobin util/cbfstool/cbfstool
+	if use cros_host; then
+		dobin util/cbfstool/fmaptool
+		dobin util/cbfstool/cbfs-compression-tool
+		dobin util/archive/archive
+	else
+		dobin util/cbmem/cbmem
+	fi
+	if is_x86; then
+		if use cros_host; then
+			dobin util/ifdtool/ifdtool
+		else
+			dobin util/superiotool/superiotool
+			dobin util/inteltool/inteltool
+			dobin util/nvramtool/nvramtool
+		fi
+		if use mma; then
+			dobin util/mma/mma_setup_test.sh
+			dobin util/mma/mma_get_result.sh
+			dobin util/mma/mma_automated_test.sh
+			insinto /etc/init
+			doins util/mma/mma.conf
+		fi
+	fi
+}
diff --git a/sys-apps/coreboot-utils/coreboot-utils-9999.ebuild b/sys-apps/coreboot-utils/coreboot-utils-9999.ebuild
index 11f294d..8191550 100644
--- a/sys-apps/coreboot-utils/coreboot-utils-9999.ebuild
+++ b/sys-apps/coreboot-utils/coreboot-utils-9999.ebuild
@@ -17,7 +17,17 @@
 )
 CROS_WORKON_EGIT_BRANCH=(
 	"chromeos-2016.05"
-	"master"
+	"main"
+)
+
+# coreboot:src/arch/x85/include/arch: used by inteltool, x86 only
+# coreboot:src/commonlib: used by cbfstool
+# coreboot:src/vendorcode/intel: used by cbfstool
+# coreboot:util/*: tools built by this ebuild
+# vboot: minimum set of files and directories to build vboot_lib for cbfstool
+CROS_WORKON_SUBTREE=(
+	"src/arch/x86/include/arch src/commonlib src/vendorcode/intel util/archive util/cbmem util/cbfstool util/ifdtool util/inteltool util/mma util/nvramtool util/superiotool"
+	"Makefile cgpt host firmware futility"
 )
 
 inherit cros-workon toolchain-funcs
diff --git a/sys-apps/daisydog/daisydog-0.0.1-r29.ebuild b/sys-apps/daisydog/daisydog-0.0.1-r29.ebuild
deleted file mode 100644
index b1b38a4..0000000
--- a/sys-apps/daisydog/daisydog-0.0.1-r29.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="389594f6890d0403ff2e76e6dbc5cd75350a8697"
-CROS_WORKON_TREE="69123874bc250bb615c60d6daf7eb45dfe3d7e90"
-CROS_WORKON_PROJECT="chromiumos/third_party/daisydog"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-
-inherit cros-workon toolchain-funcs user
-
-DESCRIPTION="Simple HW watchdog daemon"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/daisydog"
-
-LICENSE="GPL-2"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-src_prepare() {
-	mkdir -p "$(cros-workon_get_build_dir)"
-	default
-}
-
-src_configure() {
-	tc-export CC
-	default
-}
-
-_emake() {
-	emake -C "$(cros-workon_get_build_dir)" \
-		top_srcdir="${S}" -f "${S}"/Makefile "$@"
-}
-
-src_compile() {
-	_emake
-}
-
-src_install() {
-	_emake DESTDIR="${D}" install
-}
-
-pkg_preinst() {
-	enewuser watchdog
-	enewgroup watchdog
-}
diff --git a/sys-apps/daisydog/daisydog-0.0.1-r31.ebuild b/sys-apps/daisydog/daisydog-0.0.1-r31.ebuild
new file mode 100644
index 0000000..a1b62a2
--- /dev/null
+++ b/sys-apps/daisydog/daisydog-0.0.1-r31.ebuild
@@ -0,0 +1,46 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="387aa374551913374e9fac1b7bd1ffec896d5f72"
+CROS_WORKON_TREE="7a2f69d271925735904e8f921ddbc5dbd17e77ac"
+CROS_WORKON_PROJECT="chromiumos/third_party/daisydog"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+
+inherit cros-workon toolchain-funcs user
+
+DESCRIPTION="Simple HW watchdog daemon"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/daisydog"
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+src_prepare() {
+	mkdir -p "$(cros-workon_get_build_dir)"
+	default
+}
+
+src_configure() {
+	tc-export CC
+	default
+}
+
+_emake() {
+	emake -C "$(cros-workon_get_build_dir)" \
+		top_srcdir="${S}" -f "${S}"/Makefile "$@"
+}
+
+src_compile() {
+	_emake
+}
+
+src_install() {
+	_emake DESTDIR="${D}" install
+}
+
+pkg_preinst() {
+	enewuser watchdog
+	enewgroup watchdog
+}
diff --git a/sys-apps/dbus/Manifest b/sys-apps/dbus/Manifest
index 8f2ee0b..0af7e50 100644
--- a/sys-apps/dbus/Manifest
+++ b/sys-apps/dbus/Manifest
@@ -1 +1 @@
-DIST dbus-1.10.12.tar.gz 1984805 SHA256 210a79430b276eafc6406c71705e9140d25b9956d18068df98a70156dc0e475d SHA512 6616c7b2926a6fb6158d0a0a24d1b887173ca215a2f3185b95cc5f08df64fed1977e16c86c6ae530960453b6c585ae24ea4c9976e7537a45f9c6366c43baa52d WHIRLPOOL 9bd9ed70c4d9890dad09b2bcd07ee40ef472f1436cefe3bc89aaddbb183532939d6ce19da721a673a39f2e6b07e634b179190cec00e1a48fa2d9be6c830cc696
+DIST dbus-1.12.20.tar.gz 2095511 BLAKE2B b467526e7e0281db7b8c7c178469fe006dab29ccb1ea197c02495bd297e8de766230b68ed86c4a7e05dbe09ca30ce941a15e0bf8030fe0df66c04febf0534b3b SHA512 0964683bc6859374cc94e42e1ec0cdb542cca67971c205fcba4352500b6c0891665b0718e7d85eb060c81cb82e3346c313892bc02384da300ddd306c7eef0056
diff --git a/sys-apps/dbus/dbus-1.10.12-r12.ebuild b/sys-apps/dbus/dbus-1.10.12-r12.ebuild
deleted file mode 120000
index ee0ce42..0000000
--- a/sys-apps/dbus/dbus-1.10.12-r12.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-dbus-1.10.12.ebuild
\ No newline at end of file
diff --git a/sys-apps/dbus/dbus-1.10.12.ebuild b/sys-apps/dbus/dbus-1.10.12.ebuild
deleted file mode 100644
index b7a8455..0000000
--- a/sys-apps/dbus/dbus-1.10.12.ebuild
+++ /dev/null
@@ -1,301 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-PYTHON_COMPAT=( python2_7 )
-
-inherit autotools cros-sanitizers eutils linux-info flag-o-matic python-any-r1 readme.gentoo-r1 systemd virtualx user multilib-minimal
-
-DESCRIPTION="A message bus system, a simple way for applications to talk to each other"
-HOMEPAGE="https://dbus.freedesktop.org/"
-SRC_URI="https://dbus.freedesktop.org/releases/dbus/${P}.tar.gz"
-
-LICENSE="|| ( AFL-2.1 GPL-2 )"
-SLOT="0"
-KEYWORDS="*"
-IUSE="debug doc selinux static-libs systemd test ubsan user-session X"
-
-CDEPEND="
-	>=dev-libs/expat-2
-	selinux? (
-		sys-libs/libselinux
-		)
-	systemd? ( sys-apps/systemd:0= )
-	X? (
-		x11-libs/libX11
-		x11-libs/libXt
-		)
-	abi_x86_32? (
-		!<=app-emulation/emul-linux-x86-baselibs-20131008-r4
-		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
-	)
-"
-DEPEND="${CDEPEND}
-	virtual/pkgconfig
-	doc? (
-		app-doc/doxygen
-		app-text/xmlto
-		app-text/docbook-xml-dtd:4.4
-	)
-	test? (
-		>=dev-libs/glib-2.36:2
-		${PYTHON_DEPS}
-		)
-"
-RDEPEND="${CDEPEND}
-	selinux? ( sec-policy/selinux-dbus )
-"
-
-DOC_CONTENTS="
-	Some applications require a session bus in addition to the system
-	bus. Please see \`man dbus-launch\` for more information.
-"
-
-# out of sources build dir for make check
-TBD=${WORKDIR}/${P}-tests-build
-
-pkg_setup() {
-	enewgroup messagebus
-	enewuser messagebus -1 -1 -1 messagebus
-
-	use test && python-any-r1_pkg_setup
-
-	if use kernel_linux; then
-		CONFIG_CHECK="~EPOLL"
-		linux-info_pkg_setup
-	fi
-}
-
-src_prepare() {
-	# Tests were restricted because of this
-	sed -i \
-		-e 's/.*bus_dispatch_test.*/printf ("Disabled due to excess noise\\n");/' \
-		-e '/"dispatch"/d' \
-		bus/test-main.c || die
-
-	epatch "${FILESDIR}"/${PN}-1.10.12-dbus-send-add-sender-option.patch
-	epatch "${FILESDIR}"/${PN}-1.10.12-send-print-fixed.patch
-	epatch "${FILESDIR}"/${PN}-1.4.12-send-unix-fd.patch
-	epatch "${FILESDIR}"/${PN}-1.4.12-send-variant-dict.patch
-
-	# chromium-os:36381
-	epatch "${FILESDIR}"/${PN}-1.4.12-match-rules.patch
-
-	# Add ability for dbus-send to escape commas in string elements in an
-	# array. (chromium:240540)
-	epatch "${FILESDIR}"/${PN}-1.6.8-send-allow-escaped-commas-in-argument-strings.patch
-
-	# In libdbus, raise SIGTERM when the connection is dropped.
-	epatch "${FILESDIR}"/${PN}-1.6.8-raise-SIGTERM-on-connection-lost.patch
-
-	# Fix for CVE-2020-12049.
-	# Upstream commit: https://gitlab.freedesktop.org/dbus/dbus/-/commit/3418f4e500e6589e21bfcc545b3d4d1d70b17390
-	epatch "${FILESDIR}/${PN}-1.10.12-sysdeps-unix-On-MSG_CTRUNC-close-the-fds-we-did-rece.patch"
-
-	# required for asneeded patch but also for bug 263909, cross-compile so
-	# don't remove eautoreconf
-	eautoreconf
-}
-
-multilib_src_configure() {
-	# Handle ubsan blocklist for https:://crbug.com/1016103
-	# TODO: replace with sanitizers-setup-env after verifying VM builds.
-	use ubsan && sanitizer-add-blocklist "ubsan"
-	local docconf myconf
-
-	# so we can get backtraces from apps
-	case ${CHOST} in
-		*-mingw*)
-			# error: unrecognized command line option '-rdynamic' wrt #488036
-			;;
-		*)
-			append-flags -rdynamic
-			;;
-	esac
-
-	cros_optimize_package_for_speed
-
-	# Use GNU objcopy and strip instead of llvm's objcopy/strip
-	# while we debug why it breaks some VM Tests (https://crbug.com/1150537)
-	export OBJCOPY="${CHOST}-objcopy"
-	export STRIP="${CHOST}-strip"
-
-	# libaudit is *only* used in DBus wrt SELinux support, so disable it, if
-	# not on an SELinux profile.
-	myconf=(
-		--localstatedir="${EPREFIX}/var"
-		--docdir="${EPREFIX}/usr/share/doc/${PF}"
-		--htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
-		$(use_enable static-libs static)
-		$(use_enable debug verbose-mode)
-		--disable-asserts
-		$(use_enable selinux)
-		$(use_enable selinux libaudit)
-		--disable-apparmor
-		$(use_enable kernel_linux inotify)
-		$(use_enable kernel_FreeBSD kqueue)
-		$(use_enable systemd)
-		$(use_enable user-session)
-		--disable-embedded-tests
-		--disable-modular-tests
-		$(use_enable debug stats)
-		--with-session-socket-dir="${EPREFIX}"/tmp
-		--with-system-pid-file="${EPREFIX}"/run/dbus.pid
-		--with-system-socket="${EPREFIX}"/run/dbus/system_bus_socket
-		"$(systemd_with_unitdir)"
-		--with-dbus-user=messagebus
-		$(use_with X x)
-		)
-
-	if [[ ${CHOST} == *-darwin* ]]; then
-		myconf+=(
-			--enable-launchd
-			--with-launchd-agent-dir="${EPREFIX}"/Library/LaunchAgents
-		)
-	fi
-
-	if multilib_is_native_abi; then
-		docconf=(
-			$(use_enable doc xml-docs)
-			$(use_enable doc doxygen-docs)
-		)
-	else
-		docconf=(
-			--disable-xml-docs
-			--disable-doxygen-docs
-		)
-		myconf+=(
-			--disable-selinux
-			--disable-libaudit
-			--disable-systemd
-			--without-x
-
-			# expat is used for the daemon only
-			# fake the check for multilib library build
-			ac_cv_lib_expat_XML_ParserCreate_MM=yes
-		)
-	fi
-
-	einfo "Running configure in ${BUILD_DIR}"
-	ECONF_SOURCE="${S}" econf "${myconf[@]}" "${docconf[@]}"
-
-	if multilib_is_native_abi && use test; then
-		mkdir "${TBD}" || die
-		cd "${TBD}" || die
-		einfo "Running configure in ${TBD}"
-		ECONF_SOURCE="${S}" econf "${myconf[@]}" \
-			$(use_enable test asserts) \
-			$(use_enable test checks) \
-			$(use_enable test embedded-tests) \
-			$(has_version dev-libs/dbus-glib && echo --enable-modular-tests)
-	fi
-}
-
-multilib_src_compile() {
-	if multilib_is_native_abi; then
-		# after the compile, it uses a selinuxfs interface to
-		# check if the SELinux policy has the right support
-		use selinux && addwrite /selinux/access
-
-		einfo "Running make in ${BUILD_DIR}"
-		emake
-
-		if use test; then
-			einfo "Running make in ${TBD}"
-			emake -C "${TBD}"
-		fi
-
-		# DEBUGGING!!!!!!
-		#die "Debugging~~~"
-	else
-		emake -C dbus libdbus-1.la
-	fi
-}
-
-src_test() {
-	DBUS_VERBOSE=1 Xemake -j1 -C "${TBD}" check
-}
-
-multilib_src_install() {
-	if multilib_is_native_abi; then
-		emake DESTDIR="${D}" install
-	else
-		emake DESTDIR="${D}" install-pkgconfigDATA
-		emake DESTDIR="${D}" -C dbus \
-			install-libLTLIBRARIES install-dbusincludeHEADERS \
-			install-nodist_dbusarchincludeHEADERS
-	fi
-}
-
-multilib_src_install_all() {
-	newinitd "${FILESDIR}"/dbus.initd-r1 dbus
-
-	if use X; then
-		# dbus X session script (#77504)
-		# turns out to only work for GDM (and startx). has been merged into
-		# other desktop (kdm and such scripts)
-		exeinto /etc/X11/xinit/xinitrc.d
-		doexe "${FILESDIR}"/80-dbus
-	fi
-
-	# needs to exist for dbus sessions to launch
-	keepdir /usr/share/dbus-1/services
-	keepdir /etc/dbus-1/{session,system}.d
-	# machine-id symlink from pkg_postinst()
-	keepdir /var/lib/dbus
-	# let the init script create the /var/run/dbus directory
-	rm -rf "${ED}"/var/run
-
-	# http://crosbug.com/23839
-	insinto /usr/share/dbus-1/interfaces
-	doins "${FILESDIR}"/org.freedesktop.DBus.Properties.xml
-
-	dodoc AUTHORS ChangeLog HACKING NEWS README doc/TODO
-	readme.gentoo_create_doc
-
-	prune_libtool_files --all
-}
-
-pkg_postinst() {
-	readme.gentoo_print_elog
-
-	# Ensure unique id is generated and put it in /etc wrt #370451 but symlink
-	# for DBUS_MACHINE_UUID_FILE (see tools/dbus-launch.c) and reverse
-	# dependencies with hardcoded paths (although the known ones got fixed already)
-	# This is handled at runtime on Chrome OS.
-	#dbus-uuidgen --ensure="${EROOT%/}"/etc/machine-id
-	#ln -sf "${EPREFIX}"/etc/machine-id "${EROOT%/}"/var/lib/dbus/machine-id
-
-	if [[ ${CHOST} == *-darwin* ]]; then
-		local plist="org.freedesktop.dbus-session.plist"
-		elog
-		elog
-		elog "For MacOS/Darwin we now ship launchd support for dbus."
-		elog "This enables autolaunch of dbus at session login and makes"
-		elog "dbus usable under MacOS/Darwin."
-		elog
-		elog "The launchd plist file ${plist} has been"
-		elog "installed in ${EPREFIX}/Library/LaunchAgents."
-		elog "For it to be used, you will have to do all of the following:"
-		elog " + cd ~/Library/LaunchAgents"
-		elog " + ln -s ${EPREFIX}/Library/LaunchAgents/${plist}"
-		elog " + logout and log back in"
-		elog
-		elog "If your application needs a proper DBUS_SESSION_BUS_ADDRESS"
-		elog "specified and refused to start otherwise, then export the"
-		elog "the following to your environment:"
-		elog " DBUS_SESSION_BUS_ADDRESS=\"launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET\""
-	fi
-
-	if use user-session; then
-		ewarn "You have enabled user-session. Please note this can cause"
-		ewarn "bogus behaviors in several dbus consumers that are not prepared"
-		ewarn "for this dbus activation method yet."
-		ewarn
-		ewarn "See the following link for background on this change:"
-		ewarn "https://lists.freedesktop.org/archives/systemd-devel/2015-January/027711.html"
-		ewarn
-		ewarn "Known issues are tracked here:"
-		ewarn "https://bugs.gentoo.org/show_bug.cgi?id=576028"
-	fi
-}
diff --git a/sys-apps/dbus/dbus-1.12.20-r3.ebuild b/sys-apps/dbus/dbus-1.12.20-r3.ebuild
new file mode 120000
index 0000000..df4f726
--- /dev/null
+++ b/sys-apps/dbus/dbus-1.12.20-r3.ebuild
@@ -0,0 +1 @@
+dbus-1.12.20.ebuild
\ No newline at end of file
diff --git a/sys-apps/dbus/dbus-1.12.20.ebuild b/sys-apps/dbus/dbus-1.12.20.ebuild
new file mode 100644
index 0000000..5d60996
--- /dev/null
+++ b/sys-apps/dbus/dbus-1.12.20.ebuild
@@ -0,0 +1,296 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7,8,9} )
+inherit autotools cros-sanitizers eutils flag-o-matic linux-info python-any-r1 readme.gentoo-r1 systemd virtualx user multilib-minimal
+
+DESCRIPTION="A message bus system, a simple way for applications to talk to each other"
+HOMEPAGE="https://dbus.freedesktop.org/"
+SRC_URI="https://dbus.freedesktop.org/releases/dbus/${P}.tar.gz"
+
+LICENSE="|| ( AFL-2.1 GPL-2 )"
+SLOT="0"
+KEYWORDS="*"
+IUSE="debug default-dbus-timeout-250 doc elogind kernel_linux selinux static-libs systemd test user-session X ubsan"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+	sys-devel/autoconf-archive
+	virtual/pkgconfig
+	doc? (
+		app-doc/doxygen
+		app-text/xmlto
+		app-text/docbook-xml-dtd:4.4
+	)
+"
+COMMON_DEPEND="
+	>=dev-libs/expat-2.1.0
+	elogind? ( sys-auth/elogind )
+	selinux? ( sys-libs/libselinux )
+	systemd? ( sys-apps/systemd:0= )
+	X? (
+		x11-libs/libX11
+		x11-libs/libXt
+	)
+"
+DEPEND="${COMMON_DEPEND}
+	dev-libs/expat
+	test? (
+		${PYTHON_DEPS}
+		>=dev-libs/glib-2.40:2
+	)
+"
+RDEPEND="${COMMON_DEPEND}
+	selinux? ( sec-policy/selinux-dbus )
+"
+
+DOC_CONTENTS="
+	Some applications require a session bus in addition to the system
+	bus. Please see \`man dbus-launch\` for more information.
+"
+
+# out of sources build dir for make check
+TBD="${WORKDIR}/${P}-tests-build"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-daemon-optional.patch" #Gentoo bug #653136
+	"${FILESDIR}/${PN}-enable-elogind.patch"
+	"${FILESDIR}/${PN}-1.12.20-dbus-send-add-sender-option.patch"
+	"${FILESDIR}/${PN}-1.12.20-send-print-fixed.patch"
+	"${FILESDIR}/${PN}-1.12.20-send-unix-fd.patch"
+	"${FILESDIR}/${PN}-1.12.20-send-variant-dict.patch"
+	"${FILESDIR}/${PN}-1.12.20-match-rules.patch" #chromium-os:36381
+	"${FILESDIR}/${PN}-1.12.20-send-allow-escaped-commas-in-argument-strings.patch" #chromium:240540
+	"${FILESDIR}/${PN}-1.12.20-raise-SIGTERM-on-connection-lost.patch"
+)
+
+pkg_setup() {
+	enewgroup messagebus
+	enewuser messagebus -1 -1 -1 messagebus
+
+	use test && python-any-r1_pkg_setup
+
+	if use kernel_linux; then
+		CONFIG_CHECK="~EPOLL"
+		linux-info_pkg_setup
+	fi
+}
+
+src_prepare() {
+	# Tests were restricted because of this
+	sed -i \
+		-e 's/.*bus_dispatch_test.*/printf ("Disabled due to excess noise\\n");/' \
+		-e '/"dispatch"/d' \
+		bus/test-main.c || die
+
+	# Increase timeouts for emulated systems that are really slow.
+	if use default-dbus-timeout-250; then
+		PATCHES+=("${FILESDIR}/${PN}-1.12.20-increase-timeout-by-10x.patch")
+	fi
+
+	default
+
+	if [[ ${CHOST} == *-solaris* ]]; then
+		# fix standards conflict, due to gcc being c99 by default nowadays
+		sed -i \
+			-e 's/_XOPEN_SOURCE=500/_XOPEN_SOURCE=600/' \
+			configure.ac || die
+	fi
+
+	# required for bug 263909, cross-compile so don't remove eautoreconf
+	eautoreconf
+}
+
+src_configure() {
+	local rundir=$(usex kernel_linux /run /var/run)
+	sed -e "s;@rundir@;${EPREFIX}${rundir};g" "${FILESDIR}"/dbus.initd.in \
+		> "${T}"/dbus.initd || die
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	# Handle ubsan blocklist for https:://crbug.com/1016103
+	# TODO: replace with sanitizers-setup-env after verifying VM builds.
+	use ubsan && sanitizer-add-blocklist "ubsan"
+	local docconf myconf testconf
+
+	# so we can get backtraces from apps
+	case ${CHOST} in
+		*-mingw*)
+			# error: unrecognized command line option '-rdynamic' wrt #488036
+			;;
+		*)
+			append-flags -rdynamic
+			;;
+	esac
+
+	cros_optimize_package_for_speed
+
+	# libaudit is *only* used in DBus wrt SELinux support, so disable it, if
+	# not on an SELinux profile.
+	myconf=(
+		--localstatedir="${EPREFIX}/var"
+		$(use_enable static-libs static)
+		$(use_enable debug verbose-mode)
+		--disable-asserts
+		$(use_enable selinux)
+		$(use_enable selinux libaudit)
+		--disable-apparmor
+		$(use_enable kernel_linux inotify)
+		$(use_enable kernel_FreeBSD kqueue)
+		$(use_enable elogind)
+		$(use_enable systemd)
+		$(use_enable user-session)
+		--disable-embedded-tests
+		--disable-modular-tests
+		$(use_enable debug stats)
+		--with-session-socket-dir="${EPREFIX}"/tmp
+		--with-system-pid-file="${EPREFIX}"/run/dbus.pid
+		--with-system-socket="${EPREFIX}"/run/dbus/system_bus_socket
+		--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+		--with-dbus-user=messagebus
+		$(use_with X x)
+	)
+
+	if [[ ${CHOST} == *-darwin* ]]; then
+		myconf+=(
+			--enable-launchd
+			--with-launchd-agent-dir="${EPREFIX}"/Library/LaunchAgents
+		)
+	fi
+
+	if multilib_is_native_abi; then
+		docconf=(
+			$(use_enable doc xml-docs)
+			$(use_enable doc doxygen-docs)
+		)
+	else
+		docconf=(
+			--disable-xml-docs
+			--disable-doxygen-docs
+		)
+		myconf+=(
+			--disable-selinux
+			--disable-libaudit
+			--disable-elogind
+			--disable-systemd
+			--without-x
+
+			# expat is used for the daemon only
+			# fake the check for multilib library build
+			ac_cv_lib_expat_XML_ParserCreate_MM=yes
+		)
+	fi
+
+	einfo "Running configure in ${BUILD_DIR}"
+	ECONF_SOURCE="${S}" econf "${myconf[@]}" "${docconf[@]}"
+
+	if multilib_is_native_abi && use test; then
+		mkdir "${TBD}" || die
+		cd "${TBD}" || die
+		testconf=(
+			$(use_enable test asserts)
+			$(use_enable test checks)
+			$(use_enable test embedded-tests)
+			$(use_enable test stats)
+			$(has_version dev-libs/dbus-glib && echo --enable-modular-tests)
+		)
+		einfo "Running configure in ${TBD}"
+		ECONF_SOURCE="${S}" econf "${myconf[@]}" "${testconf[@]}"
+	fi
+}
+
+multilib_src_compile() {
+	if multilib_is_native_abi; then
+		# after the compile, it uses a selinuxfs interface to
+		# check if the SELinux policy has the right support
+		use selinux && addwrite /selinux/access
+
+		einfo "Running make in ${BUILD_DIR}"
+		emake
+
+		if use test; then
+			einfo "Running make in ${TBD}"
+			emake -C "${TBD}"
+		fi
+	else
+		emake -C dbus libdbus-1.la
+	fi
+}
+
+src_test() {
+	DBUS_VERBOSE=1 virtx emake -j1 -C "${TBD}" check
+}
+
+multilib_src_install() {
+	if multilib_is_native_abi; then
+		emake DESTDIR="${D}" install
+	else
+		emake DESTDIR="${D}" install-pkgconfigDATA
+		emake DESTDIR="${D}" -C dbus \
+			install-libLTLIBRARIES install-dbusincludeHEADERS \
+			install-nodist_dbusarchincludeHEADERS
+	fi
+}
+
+multilib_src_install_all() {
+	newinitd "${T}"/dbus.initd dbus
+
+	if use X; then
+		# dbus X session script (#77504)
+		# turns out to only work for GDM (and startx). has been merged into
+		# other desktop (kdm and such scripts)
+		exeinto /etc/X11/xinit/xinitrc.d
+		doexe "${FILESDIR}"/80-dbus
+	fi
+
+	# needs to exist for dbus sessions to launch
+	keepdir /usr/share/dbus-1/services
+	keepdir /etc/dbus-1/{session,system}.d
+	# machine-id symlink from pkg_postinst()
+	keepdir /var/lib/dbus
+	# let the init script create the /var/run/dbus directory
+	rm -rf "${ED}"/var/run
+
+	# https://bugs.gentoo.org/761763
+	rm -rf "${ED}"/usr/lib/sysusers.d
+
+	dodoc AUTHORS ChangeLog NEWS README doc/TODO
+	readme.gentoo_create_doc
+
+	find "${ED}" -name '*.la' -delete || die
+}
+
+pkg_postinst() {
+	readme.gentoo_print_elog
+
+	# Ensure unique id is generated and put it in /etc wrt #370451 but symlink
+	# for DBUS_MACHINE_UUID_FILE (see tools/dbus-launch.c) and reverse
+	# dependencies with hardcoded paths (although the known ones got fixed already)
+	# This is handled at runtime on Chrome OS.
+	#dbus-uuidgen --ensure="${EROOT}"/etc/machine-id
+	#ln -sf "${EPREFIX}"/etc/machine-id "${EROOT}"/var/lib/dbus/machine-id
+
+	if [[ ${CHOST} == *-darwin* ]]; then
+		local plist="org.freedesktop.dbus-session.plist"
+		elog
+		elog
+		elog "For MacOS/Darwin we now ship launchd support for dbus."
+		elog "This enables autolaunch of dbus at session login and makes"
+		elog "dbus usable under MacOS/Darwin."
+		elog
+		elog "The launchd plist file ${plist} has been"
+		elog "installed in ${EPREFIX}/Library/LaunchAgents."
+		elog "For it to be used, you will have to do all of the following:"
+		elog " + cd ~/Library/LaunchAgents"
+		elog " + ln -s ${EPREFIX}/Library/LaunchAgents/${plist}"
+		elog " + logout and log back in"
+		elog
+		elog "If your application needs a proper DBUS_SESSION_BUS_ADDRESS"
+		elog "specified and refused to start otherwise, then export the"
+		elog "the following to your environment:"
+		elog " DBUS_SESSION_BUS_ADDRESS=\"launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET\""
+	fi
+}
diff --git a/sys-apps/dbus/files/dbus-1.10.12-dbus-send-add-sender-option.patch b/sys-apps/dbus/files/dbus-1.10.12-dbus-send-add-sender-option.patch
deleted file mode 100644
index ec1fa87..0000000
--- a/sys-apps/dbus/files/dbus-1.10.12-dbus-send-add-sender-option.patch
+++ /dev/null
@@ -1,98 +0,0 @@
-From 21aa7e46e66dee529053f0570511a13a0d4201ff Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Fri, 14 Jun 2019 13:16:10 -0700
-Subject: [PATCH] dbus-send: add --sender option
-
-Clients listening for a signal can match against the 'sender', expecting
-it to come from a connection with a specific name. With this change,
-dbus-send can send signals to them.
----
- doc/dbus-send.1.xml.in |  7 +++++++
- tools/dbus-send.c      | 32 ++++++++++++++++++++++++++++++++
- 2 files changed, 39 insertions(+)
-
-diff --git a/doc/dbus-send.1.xml.in b/doc/dbus-send.1.xml.in
-index 67b6dfd2..8c1bbeaa 100644
---- a/doc/dbus-send.1.xml.in
-+++ b/doc/dbus-send.1.xml.in
-@@ -22,6 +22,7 @@
- <cmdsynopsis>
-   <command>dbus-send</command>
-     <group choice='opt'><arg choice='plain'>--system </arg><arg choice='plain'>--session </arg><arg choice='plain'>--address=<replaceable>ADDRESS</replaceable></arg></group>
-+    <arg choice='opt'>--sender=<replaceable>NAME</replaceable></arg>
-     <arg choice='opt'>--dest=<replaceable>NAME</replaceable></arg>
-     <arg choice='opt'><arg choice='plain'>--print-reply </arg><arg choice='opt'><replaceable>=literal</replaceable></arg></arg>
-     <arg choice='opt'>--reply-timeout=<replaceable>MSEC</replaceable></arg>
-@@ -140,6 +141,12 @@ The default is implementation&hyphen;defined, typically 25 seconds.</para>
-   <term><option>--address=</option><replaceable>ADDRESS</replaceable></term>
-   <listitem>
- <para>Send to <replaceable>ADDRESS</replaceable>.</para>
-+  </listitem>
-+  </varlistentry>
-+  <varlistentry>
-+  <term><option>--sender=</option><replaceable>NAME</replaceable></term>
-+  <listitem>
-+<para>Request ownership of name <replaceable>NAME</replaceable> before sending message.</para>
-   </listitem>
-   </varlistentry>
-   <varlistentry>
-diff --git a/tools/dbus-send.c b/tools/dbus-send.c
-index fb6a9e6e..bf1e584c 100644
---- a/tools/dbus-send.c
-+++ b/tools/dbus-send.c
-@@ -337,6 +337,7 @@ main (int argc, char *argv[])
-   int message_type = DBUS_MESSAGE_TYPE_SIGNAL;
-   const char *type_str = NULL;
-   const char *address = NULL;
-+  const char *sender = NULL;
-   int is_bus = FALSE;
-   int session_or_system = FALSE;
-   int fixed = 0;
-@@ -387,6 +388,16 @@ main (int argc, char *argv[])
-               usage (1);
-             }
-         }
-+      else if (strstr (arg, "--sender=") == arg)
-+        {
-+          sender = strchr (arg, '=') + 1;
-+
-+          if (sender[0] == '\0')
-+            {
-+              fprintf (stderr, "\"--sender=\" requires a NAME\n");
-+              usage (1);
-+            }
-+        }
-       else if (strncmp (arg, "--print-reply", 13) == 0)
- 	{
- 	  print_reply = TRUE;
-@@ -497,6 +508,27 @@ main (int argc, char *argv[])
-         }
-     }
- 
-+  if (sender != NULL)
-+    {
-+      switch(dbus_bus_request_name (connection, sender, DBUS_NAME_FLAG_DO_NOT_QUEUE, &error))
-+        {
-+        case DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER:
-+          /* success */
-+          break;
-+        case DBUS_REQUEST_NAME_REPLY_EXISTS:
-+          fprintf (stderr, "Requested name \"%s\" already has owner\n", sender);
-+          exit (1);
-+        case -1:
-+          fprintf (stderr, "Failed to request sender name \"%s\": %s\n", sender, error.message);
-+          dbus_error_free(&error);
-+          exit (1);
-+        default:
-+          /* This should be unreachable if the bus is compliant */
-+          fprintf (stderr, "Request of sender name failed unexpectedly\n");
-+          exit (1);
-+        }
-+    }
-+
-   if (message_type == DBUS_MESSAGE_TYPE_METHOD_CALL)
-     {
-       char *last_dot;
--- 
-2.22.0.410.gd8fdbe21b5-goog
-
diff --git a/sys-apps/dbus/files/dbus-1.10.12-send-print-fixed.patch b/sys-apps/dbus/files/dbus-1.10.12-send-print-fixed.patch
deleted file mode 100644
index b104c8d..0000000
--- a/sys-apps/dbus/files/dbus-1.10.12-send-print-fixed.patch
+++ /dev/null
@@ -1,346 +0,0 @@
-diff --git a/tools/dbus-print-message.c b/tools/dbus-print-message.c
-index 80c9698..aaaca15 100644
---- a/tools/dbus-print-message.c
-+++ b/tools/dbus-print-message.c
-@@ -111,6 +111,284 @@ print_hex (const unsigned char *bytes,
- 
- #define DEFAULT_SIZE 100
- 
-+#include <inttypes.h>
-+#define DBUS_INT64_PRINTF_ARGUMENT PRIi64
-+#define DBUS_UINT64_PRINTF_ARGUMENT PRIu64
-+#define MAXPFX 4096
-+
-+static int
-+pf_can_simple(DBusMessageIter *iter)
-+{
-+  switch (dbus_message_iter_get_arg_type(iter))
-+    {
-+      case DBUS_TYPE_STRING:
-+      case DBUS_TYPE_INT16:
-+      case DBUS_TYPE_INT32:
-+      case DBUS_TYPE_UINT16:
-+      case DBUS_TYPE_UINT32:
-+      case DBUS_TYPE_INT64:
-+      case DBUS_TYPE_UINT64:
-+      case DBUS_TYPE_BYTE:
-+      case DBUS_TYPE_BOOLEAN:
-+      case DBUS_TYPE_DOUBLE:
-+        return 1;
-+      default:
-+        return 0;
-+    }
-+}
-+
-+static void pf_key(DBusMessageIter *iter, const char *pfx, char *buf, size_t sz)
-+{
-+  char *sv;
-+  dbus_bool_t bv;
-+  dbus_int16_t i16v;
-+  dbus_int32_t i32v;
-+  dbus_int64_t i64v;
-+  dbus_uint16_t u16v;
-+  dbus_uint32_t u32v;
-+  dbus_uint64_t u64v;
-+  unsigned char u8v;
-+  double dv;
-+
-+  switch (dbus_message_iter_get_arg_type(iter)) {
-+    case DBUS_TYPE_STRING:
-+      dbus_message_iter_get_basic(iter, &sv);
-+      snprintf(buf, sz, "%s/%s", pfx, sv);
-+      break;
-+    case DBUS_TYPE_BOOLEAN:
-+      dbus_message_iter_get_basic(iter, &bv);
-+      snprintf(buf, sz, "%s/%s", pfx, (bv ? "true" : "false"));
-+      break;
-+    case DBUS_TYPE_INT16:
-+      dbus_message_iter_get_basic(iter, &i16v);
-+      snprintf(buf, sz, "%s/%d", pfx, i16v);
-+      break;
-+    case DBUS_TYPE_INT32:
-+      dbus_message_iter_get_basic(iter, &i32v);
-+      snprintf(buf, sz, "%s/%d", pfx, i32v);
-+      break;
-+    case DBUS_TYPE_INT64:
-+      dbus_message_iter_get_basic(iter, &i64v);
-+#ifdef DBUS_INT64_PRINTF_ARGUMENT
-+      snprintf(buf, sz, "%s/%" DBUS_INT64_PRINTF_ARGUMENT, pfx, i64v);
-+#else
-+      snprintf(buf, sz, "%s/[int64]", pfx);
-+#endif
-+      break;
-+    case DBUS_TYPE_UINT16:
-+      dbus_message_iter_get_basic(iter, &u16v);
-+      snprintf(buf, sz, "%s/%u", pfx, u16v);
-+      break;
-+    case DBUS_TYPE_UINT32:
-+      dbus_message_iter_get_basic(iter, &u32v);
-+      snprintf(buf, sz, "%s/%u", pfx, u32v);
-+      break;
-+    case DBUS_TYPE_UINT64:
-+      dbus_message_iter_get_basic(iter, &u64v);
-+#ifdef DBUS_UINT64_PRINTF_ARGUMENT
-+      snprintf(buf, sz, "%s/%" DBUS_UINT64_PRINTF_ARGUMENT, pfx, u64v);
-+#else
-+      snprintf(buf, sz, "%s/[uint64]", pfx);
-+#endif
-+      break;
-+    case DBUS_TYPE_BYTE:
-+      dbus_message_iter_get_basic(iter, &u8v);
-+      snprintf(buf, sz, "%s/%02x", pfx, (unsigned int)u8v & 0xFF);
-+      break;
-+    case DBUS_TYPE_DOUBLE:
-+      dbus_message_iter_get_basic(iter, &dv);
-+      snprintf(buf, sz, "%s/%g", pfx, dv);
-+      break;
-+    default:
-+      snprintf(buf, sz, "%s/[pf-unknown]", pfx);
-+      break;
-+  }
-+}
-+
-+static void print_fixed_iter(DBusMessageIter *iter, const char *pfx, int all);
-+
-+static void pf_string(DBusMessageIter *iter, const char *pfx)
-+{
-+  char *val;
-+  dbus_message_iter_get_basic(iter, &val);
-+  printf("%s%s%s\n", pfx, pfx[0] ? " " : "", val);
-+}
-+
-+static void pf_boolean(DBusMessageIter *iter, const char *pfx)
-+{
-+  dbus_bool_t bv;
-+  dbus_message_iter_get_basic(iter, &bv);
-+  printf("%s%s%s\n", pfx, pfx[0] ? " " : "", (bv ? "true" : "false"));
-+}
-+
-+static void pf_uint16(DBusMessageIter *iter, const char *pfx)
-+{
-+  dbus_uint16_t uv;
-+  dbus_message_iter_get_basic(iter, &uv);
-+  printf("%s%s%u\n", pfx, pfx[0] ? " " : "", uv);
-+}
-+
-+static void pf_int16(DBusMessageIter *iter, const char *pfx)
-+{
-+  dbus_int16_t iv;
-+  dbus_message_iter_get_basic(iter, &iv);
-+  printf("%s%s%d\n", pfx, pfx[0] ? " " : "", iv);
-+}
-+
-+static void pf_uint32(DBusMessageIter *iter, const char *pfx)
-+{
-+  dbus_uint32_t uv;
-+  dbus_message_iter_get_basic(iter, &uv);
-+  printf("%s%s%u\n", pfx, pfx[0] ? " " : "", uv);
-+}
-+
-+static void pf_int32(DBusMessageIter *iter, const char *pfx)
-+{
-+  dbus_int32_t iv;
-+  dbus_message_iter_get_basic(iter, &iv);
-+  printf("%s%s%d\n", pfx, pfx[0] ? " " : "", iv);
-+}
-+
-+static void pf_uint64(DBusMessageIter *iter, const char *pfx)
-+{
-+  dbus_uint64_t uv;
-+  dbus_message_iter_get_basic(iter, &uv);
-+#ifdef DBUS_UINT64_PRINTF_ARGUMENT
-+  printf("%s%s%" DBUS_UINT64_PRINTF_ARGUMENT "\n", pfx, pfx[0] ? " " : "", uv);
-+#else
-+  printf("%s%s[uint64]\n", pfx, pfx[0] ? " " : "");
-+#endif
-+}
-+
-+static void pf_int64(DBusMessageIter *iter, const char *pfx)
-+{
-+  dbus_int64_t iv;
-+  dbus_message_iter_get_basic(iter, &iv);
-+#ifdef DBUS_INT64_PRINTF_ARGUMENT
-+  printf("%s%s%" DBUS_INT64_PRINTF_ARGUMENT "\n", pfx, pfx[0] ? " " : "", iv);
-+#else
-+  printf("%s%s[int64]\n", pfx, pfx[0] ? " " : "");
-+#endif
-+}
-+
-+static void pf_double(DBusMessageIter *iter, const char *pfx)
-+{
-+  double dv;
-+  dbus_message_iter_get_basic(iter, &dv);
-+  printf("%s%s%g\n", pfx, pfx[0] ? " " : "", dv);
-+}
-+
-+static void pf_byte(DBusMessageIter *iter, const char *pfx)
-+{
-+  unsigned char bv;
-+  dbus_message_iter_get_basic(iter, &bv);
-+  printf("%s%s%02x\n", pfx, pfx[0] ? " " : "", (unsigned int)bv & 0xFF);
-+}
-+
-+static void pf_array(DBusMessageIter *iter, const char *pfx)
-+{
-+  int type;
-+  DBusMessageIter subiter;
-+  char npfx[MAXPFX];
-+  int i = 0;
-+
-+  dbus_message_iter_recurse(iter, &subiter);
-+  type = dbus_message_iter_get_arg_type(&subiter);
-+
-+  while (type != DBUS_TYPE_INVALID)
-+    {
-+      snprintf(npfx, sizeof(npfx), "%s/%d", pfx, i);
-+      print_fixed_iter(&subiter, npfx, 0);
-+      dbus_message_iter_next(&subiter);
-+      type = dbus_message_iter_get_arg_type(&subiter);
-+      i++;
-+    }
-+}
-+
-+static void pf_variant(DBusMessageIter *iter, const char *pfx)
-+{
-+  DBusMessageIter subiter;
-+  dbus_message_iter_recurse(iter, &subiter);
-+  print_fixed_iter(&subiter, pfx, 0);
-+}
-+
-+static void pf_dict(DBusMessageIter *iter, const char *pfx)
-+{
-+  DBusMessageIter subiter;
-+  char npfx[MAXPFX];
-+
-+  dbus_message_iter_recurse(iter, &subiter);
-+  /* Nasty hack to make string -> thing dicts more parseable. */
-+  if (pf_can_simple(&subiter))
-+    {
-+      pf_key(&subiter, pfx, npfx, sizeof(npfx));
-+    }
-+  else
-+    {
-+      snprintf(npfx, MAXPFX, "%s/[complex-key]", pfx);
-+    }
-+  dbus_message_iter_next(&subiter);
-+  print_fixed_iter(&subiter, npfx, 0);
-+}
-+
-+static void print_fixed_iter(DBusMessageIter *iter, const char *pfx, int all)
-+{
-+  static struct {
-+    int type;
-+    void (*func)(DBusMessageIter *iter, const char *pfx);
-+  } printers[] = {
-+    { DBUS_TYPE_STRING, pf_string },
-+    { DBUS_TYPE_ARRAY, pf_array },
-+    { DBUS_TYPE_STRUCT, pf_array }, /* yes, really. They're identical. */
-+    { DBUS_TYPE_VARIANT, pf_variant },
-+    { DBUS_TYPE_DICT_ENTRY, pf_dict },
-+    { DBUS_TYPE_BOOLEAN, pf_boolean },
-+    { DBUS_TYPE_UINT32, pf_uint32 },
-+    { DBUS_TYPE_INT32, pf_int32 },
-+    { DBUS_TYPE_SIGNATURE, pf_string },
-+    { DBUS_TYPE_OBJECT_PATH, pf_string },
-+    { DBUS_TYPE_INT16, pf_int16 },
-+    { DBUS_TYPE_UINT16, pf_uint16 },
-+    { DBUS_TYPE_INT64, pf_int64 },
-+    { DBUS_TYPE_UINT64, pf_uint64 },
-+    { DBUS_TYPE_DOUBLE, pf_double },
-+    { DBUS_TYPE_BYTE, pf_byte },
-+    { 0, NULL }
-+  };
-+  int type;
-+  int i;
-+
-+  do
-+    {
-+      type = dbus_message_iter_get_arg_type(iter);
-+      if (type == DBUS_TYPE_INVALID)
-+        return;
-+      for (i = 0; printers[i].func; i++)
-+        {
-+          if (printers[i].type == type)
-+            {
-+              printers[i].func(iter, pfx);
-+              break;
-+            }
-+        }
-+      if (!printers[i].func)
-+        {
-+          printf("print-fixed-iter: no idea what %d is\n", type);
-+        }
-+    }
-+  while (all && dbus_message_iter_next(iter));
-+}
-+
-+void print_message_fixed(DBusMessage *msg)
-+{
-+  DBusMessageIter iter;
-+  int type;
-+
-+  type = dbus_message_get_type(msg);
-+  dbus_message_iter_init(msg, &iter);
-+  print_fixed_iter(&iter, "", 1);
-+}
-+
- static void
- print_ay (DBusMessageIter *iter, int depth)
- {
-diff --git a/tools/dbus-print-message.h b/tools/dbus-print-message.h
-index d45bc79..9f80116 100644
---- a/tools/dbus-print-message.h
-+++ b/tools/dbus-print-message.h
-@@ -26,6 +26,7 @@
- #include <string.h>
- #include <dbus/dbus.h>
- 
-+void print_message_fixed (DBusMessage *message);
- void print_message (DBusMessage *message, dbus_bool_t literal, long sec, long usec);
- 
- #endif /* DBUS_PRINT_MESSAGE_H */
-diff --git a/tools/dbus-send.c b/tools/dbus-send.c
-index 9d2be7e..fb6a9e6 100644
---- a/tools/dbus-send.c
-+++ b/tools/dbus-send.c
-@@ -52,7 +52,7 @@ static const char *appname;
- static void
- usage (int ecode)
- {
--  fprintf (stderr, "Usage: %s [--help] [--system | --session | --bus=ADDRESS | --peer=ADDRESS] [--dest=NAME] [--type=TYPE] [--print-reply[=literal]] [--reply-timeout=MSEC] <destination object path> <message name> [contents ...]\n", appname);
-+  fprintf (stderr, "Usage: %s [--help] [--system | --session | --bus=ADDRESS | --peer=ADDRESS] [--dest=NAME] [--type=TYPE] [--print-reply[=literal]] [--fixed] [--reply-timeout=MSEC] <destination object path> <message name> [contents ...]\n", appname);
-   exit (ecode);
- }
- 
-@@ -339,6 +339,7 @@ main (int argc, char *argv[])
-   const char *address = NULL;
-   int is_bus = FALSE;
-   int session_or_system = FALSE;
-+  int fixed = 0;
- 
-   appname = argv[0];
-   
-@@ -427,6 +428,8 @@ main (int argc, char *argv[])
- 	type_str = strchr (arg, '=') + 1;
-       else if (!strcmp(arg, "--help"))
- 	usage (0);
-+      else if (!strcmp(arg, "--fixed"))
-+        fixed = 1;
-       else if (arg[0] == '-')
- 	usage (1);
-       else if (path == NULL)
-@@ -676,7 +679,10 @@ main (int argc, char *argv[])
-           long sec, usec;
- 
-           _dbus_get_real_time (&sec, &usec);
--          print_message (reply, print_reply_literal, sec, usec);
-+          if (fixed)
-+            print_message_fixed (reply);
-+          else
-+            print_message (reply, print_reply_literal, sec, usec);
-           dbus_message_unref (reply);
-         }
-     }
--- 
-2.12.0.367.g23dc2f6d3c-goog
-
diff --git a/sys-apps/dbus/files/dbus-1.10.12-sysdeps-unix-On-MSG_CTRUNC-close-the-fds-we-did-rece.patch b/sys-apps/dbus/files/dbus-1.10.12-sysdeps-unix-On-MSG_CTRUNC-close-the-fds-we-did-rece.patch
deleted file mode 100644
index 3a0c18a..0000000
--- a/sys-apps/dbus/files/dbus-1.10.12-sysdeps-unix-On-MSG_CTRUNC-close-the-fds-we-did-rece.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-From d690b5e543920906d986cc49e9a0e450e3c5b7f8 Mon Sep 17 00:00:00 2001
-From: Vaibhav Rustagi <vaibhavrustagi@google.com>
-Date: Fri, 19 Jun 2020 10:42:00 -0700
-Subject: [PATCH] sysdeps-unix: On MSG_CTRUNC, close the fds we did receive
-
-MSG_CTRUNC indicates that we have received fewer fds that we should
-have done because the buffer was too small, but we were treating it
-as though it indicated that we received *no* fds. If we received any,
-we still have to make sure we close them, otherwise they will be leaked.
-
-On the system bus, if an attacker can induce us to leak fds in this
-way, that's a local denial of service via resource exhaustion.
-
-[Backport to dbus-1.10: Change signedness of iterator due to
-commit ab8cb96e "_dbus_read_socket_with_unix_fds: make n_fds unsigned"
-not having been applied to this branch.]
-
-Reported-by: Kevin Backhouse, GitHub Security Lab
-Fixes: #294
-Fixes: CVE-2020-12049
-Fixes: GHSL-2020-057
----
- dbus/dbus-sysdeps-unix.c | 32 ++++++++++++++++++++------------
- 1 file changed, 20 insertions(+), 12 deletions(-)
-
-diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c
-index ed776a70..6bba5577 100644
---- a/dbus/dbus-sysdeps-unix.c
-+++ b/dbus/dbus-sysdeps-unix.c
-@@ -432,18 +432,6 @@ _dbus_read_socket_with_unix_fds (DBusSocket        fd,
-       struct cmsghdr *cm;
-       dbus_bool_t found = FALSE;
- 
--      if (m.msg_flags & MSG_CTRUNC)
--        {
--          /* Hmm, apparently the control data was truncated. The bad
--             thing is that we might have completely lost a couple of fds
--             without chance to recover them. Hence let's treat this as a
--             serious error. */
--
--          errno = ENOSPC;
--          _dbus_string_set_length (buffer, start);
--          return -1;
--        }
--
-       for (cm = CMSG_FIRSTHDR(&m); cm; cm = CMSG_NXTHDR(&m, cm))
-         if (cm->cmsg_level == SOL_SOCKET && cm->cmsg_type == SCM_RIGHTS)
-           {
-@@ -498,6 +486,26 @@ _dbus_read_socket_with_unix_fds (DBusSocket        fd,
-       if (!found)
-         *n_fds = 0;
- 
-+      if (m.msg_flags & MSG_CTRUNC)
-+        {
-+          int i;
-+
-+          /* Hmm, apparently the control data was truncated. The bad
-+             thing is that we might have completely lost a couple of fds
-+             without chance to recover them. Hence let's treat this as a
-+             serious error. */
-+
-+          /* We still need to close whatever fds we *did* receive,
-+           * otherwise they'll never get closed. (CVE-2020-12049) */
-+          for (i = 0; i < *n_fds; i++)
-+            close (fds[i]);
-+
-+          *n_fds = 0;
-+          errno = ENOSPC;
-+          _dbus_string_set_length (buffer, start);
-+          return -1;
-+        }
-+
-       /* put length back (doesn't actually realloc) */
-       _dbus_string_set_length (buffer, start + bytes_read);
- 
--- 
-2.27.0.111.gc72c7da667-goog
-
diff --git a/sys-apps/dbus/files/dbus-1.12.20-dbus-send-add-sender-option.patch b/sys-apps/dbus/files/dbus-1.12.20-dbus-send-add-sender-option.patch
new file mode 100644
index 0000000..8bf777b
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-1.12.20-dbus-send-add-sender-option.patch
@@ -0,0 +1,101 @@
+From 4e9830147f9a265965e76f1375a10a8a427beca2 Mon Sep 17 00:00:00 2001
+From: Chris Morin <cmtm@google.com>
+Date: Fri, 14 Jun 2019 13:16:10 -0700
+Subject: [PATCH] dbus-send: add --sender option
+
+Clients listening for a signal can match against the 'sender', expecting
+it to come from a connection with a specific name. With this change,
+dbus-send can send signals to them.
+
+[Adrian Ratiu: rebased on dbus-1.12.20]
+Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
+---
+ doc/dbus-send.1.xml.in |  7 +++++++
+ tools/dbus-send.c      | 32 ++++++++++++++++++++++++++++++++
+ 2 files changed, 39 insertions(+)
+
+diff --git a/doc/dbus-send.1.xml.in b/doc/dbus-send.1.xml.in
+index 34c4b99e..c3ddda1c 100644
+--- a/doc/dbus-send.1.xml.in
++++ b/doc/dbus-send.1.xml.in
+@@ -22,6 +22,7 @@
+ <cmdsynopsis>
+   <command>dbus-send</command>
+   <group choice='opt'><arg choice='plain'>--system </arg><arg choice='plain'>--session </arg><arg choice='plain'>--bus=<replaceable>ADDRESS</replaceable></arg><arg choice='plain'>--peer=<replaceable>ADDRESS</replaceable></arg></group>
++    <arg choice='opt'>--sender=<replaceable>NAME</replaceable></arg>
+     <arg choice='opt'>--dest=<replaceable>NAME</replaceable></arg>
+     <arg choice='opt'><arg choice='plain'>--print-reply </arg><arg choice='opt'><replaceable>=literal</replaceable></arg></arg>
+     <arg choice='opt'>--reply-timeout=<replaceable>MSEC</replaceable></arg>
+@@ -146,6 +147,12 @@ The default is implementation&hyphen;defined, typically 25 seconds.</para>
+   <term><option>--peer=</option><replaceable>ADDRESS</replaceable></term>
+   <listitem>
+ <para>Send to a non-message-bus D-Bus server at <replaceable>ADDRESS</replaceable>. In this case <command>dbus-send</command> will not call the <literal>Hello</literal> method.</para>
++  </listitem>
++  </varlistentry>
++  <varlistentry>
++  <term><option>--sender=</option><replaceable>NAME</replaceable></term>
++  <listitem>
++<para>Request ownership of name <replaceable>NAME</replaceable> before sending message.</para>
+   </listitem>
+   </varlistentry>
+   <varlistentry>
+diff --git a/tools/dbus-send.c b/tools/dbus-send.c
+index efeb76e0..a1884837 100644
+--- a/tools/dbus-send.c
++++ b/tools/dbus-send.c
+@@ -261,6 +261,7 @@ main (int argc, char *argv[])
+   int message_type = DBUS_MESSAGE_TYPE_SIGNAL;
+   const char *type_str = NULL;
+   const char *address = NULL;
++  const char *sender = NULL;
+   int is_bus = FALSE;
+   int session_or_system = FALSE;
+ 
+@@ -313,6 +314,16 @@ main (int argc, char *argv[])
+               usage (1);
+             }
+         }
++      else if (strstr (arg, "--sender=") == arg)
++        {
++          sender = strchr (arg, '=') + 1;
++
++          if (sender[0] == '\0')
++            {
++              fprintf (stderr, "\"--sender=\" requires a NAME\n");
++              usage (1);
++            }
++        }
+       else if (strncmp (arg, "--print-reply", 13) == 0)
+ 	{
+ 	  print_reply = TRUE;
+@@ -421,6 +432,27 @@ main (int argc, char *argv[])
+         }
+     }
+ 
++  if (sender != NULL)
++    {
++      switch(dbus_bus_request_name (connection, sender, DBUS_NAME_FLAG_DO_NOT_QUEUE, &error))
++        {
++        case DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER:
++          /* success */
++          break;
++        case DBUS_REQUEST_NAME_REPLY_EXISTS:
++          fprintf (stderr, "Requested name \"%s\" already has owner\n", sender);
++          exit (1);
++        case -1:
++          fprintf (stderr, "Failed to request sender name \"%s\": %s\n", sender, error.message);
++          dbus_error_free(&error);
++          exit (1);
++        default:
++          /* This should be unreachable if the bus is compliant */
++          fprintf (stderr, "Request of sender name failed unexpectedly\n");
++          exit (1);
++        }
++    }
++
+   if (message_type == DBUS_MESSAGE_TYPE_METHOD_CALL)
+     {
+       char *last_dot;
+-- 
+2.30.1
+
diff --git a/sys-apps/dbus/files/dbus-1.12.20-increase-timeout-by-10x.patch b/sys-apps/dbus/files/dbus-1.12.20-increase-timeout-by-10x.patch
new file mode 100644
index 0000000..53adcf8
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-1.12.20-increase-timeout-by-10x.patch
@@ -0,0 +1,27 @@
+From 0b5407b88b75e6923e0fffc96063ead6a8abde33 Mon Sep 17 00:00:00 2001
+From: Derek Basehore <dbasehore@google.com>
+Date: Tue, 23 Mar 2021 19:48:23 -0700
+Subject: [PATCH] increase timeout by 10x
+
+---
+ dbus/dbus-connection-internal.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/dbus/dbus-connection-internal.h b/dbus/dbus-connection-internal.h
+index 48357321..b191b0da 100644
+--- a/dbus/dbus-connection-internal.h
++++ b/dbus/dbus-connection-internal.h
+@@ -41,8 +41,8 @@ typedef enum
+   DBUS_ITERATION_BLOCK      = 1 << 2  /**< Block if nothing to do. */
+ } DBusIterationFlags;
+ 
+-/** default timeout value when waiting for a message reply, 25 seconds */
+-#define _DBUS_DEFAULT_TIMEOUT_VALUE (25 * 1000)
++/** default timeout value when waiting for a message reply, 250 seconds */
++#define _DBUS_DEFAULT_TIMEOUT_VALUE (250 * 1000)
+ 
+ typedef void (* DBusPendingFdsChangeFunction) (void *data);
+ 
+-- 
+2.31.1
+
diff --git a/sys-apps/dbus/files/dbus-1.12.20-match-rules.patch b/sys-apps/dbus/files/dbus-1.12.20-match-rules.patch
new file mode 100644
index 0000000..7a306a7
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-1.12.20-match-rules.patch
@@ -0,0 +1,26 @@
+From 8ee3921668b6996fb5408c06a99df5defeafa5a6 Mon Sep 17 00:00:00 2001
+From: Scott James Remnant <keybuk@chromium.org>
+Date: Mon, 19 Nov 2012 15:40:24 -0800
+Subject: [PATCH] dbus: increase match rules limit
+
+BUG=chromium-os:36381
+TEST=grep 'Failed to add match' .../log/chrome
+
+Change-Id: Iaaa35bb934ea0bc773fc7e117ad7112c20eca995
+Reviewed-on: https://gerrit.chromium.org/gerrit/38337
+Reviewed-by: Gaurav Shah <gauravsh@chromium.org>
+Commit-Ready: Scott James Remnant <keybuk@chromium.org>
+Tested-by: Scott James Remnant <keybuk@chromium.org>
+---
+diff --git a/bus/system.conf.in b/bus/system.conf.in
+index f139b557..2066be58 100644
+--- a/bus/system.conf.in
++++ b/bus/system.conf.in
+@@ -137,4 +137,7 @@
+ 
+   <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include>
+ 
++  <!-- Chromium talks to most services on the bus so needs a relatively
++       large number of match rules. -->
++  <limit name="max_match_rules_per_connection">4096</limit>
+ </busconfig>
diff --git a/sys-apps/dbus/files/dbus-1.12.20-raise-SIGTERM-on-connection-lost.patch b/sys-apps/dbus/files/dbus-1.12.20-raise-SIGTERM-on-connection-lost.patch
new file mode 100644
index 0000000..646e4e0
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-1.12.20-raise-SIGTERM-on-connection-lost.patch
@@ -0,0 +1,48 @@
+From 609375563c02a5ba6d48e5b165224a3ad4b3ef4a Mon Sep 17 00:00:00 2001
+From: Bertrand SIMONNET <bsimonnet@google.com>
+Date: Fri, 18 Dec 2015 16:15:25 -0800
+Subject: [PATCH] dbus: Raise SIGTERM when the connection drops.
+
+Instead of exiting directly when a client notices that the connection
+got dropped, raise a SIGTERM signal to allow the client to clean up and
+exit cleanly.
+
+Bug: 26267381
+Test: stop dbus. Clients exit cleanly.
+
+Change-Id: I7e1faf1aa8b761b1b05dfde82a48882f61124acb
+---
+ dbus/dbus-connection.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c
+index c525b6dc..252629b3 100644
+--- a/dbus/dbus-connection.c
++++ b/dbus/dbus-connection.c
+@@ -22,6 +22,7 @@
+  */
+ 
+ #include <config.h>
++#include <signal.h>
+ #include "dbus-shared.h"
+ #include "dbus-connection.h"
+ #include "dbus-list.h"
+@@ -4331,8 +4332,13 @@ _dbus_connection_update_dispatch_status_and_unlock (DBusConnection    *connectio
+           CONNECTION_UNLOCK (connection);            
+           
+           _dbus_verbose ("Exiting on Disconnected signal\n");
+-          _dbus_exit (1);
+-          _dbus_assert_not_reached ("Call to exit() returned");
++          if (raise (SIGTERM) != 0)
++            {
++              _dbus_verbose ("Failed to raise a SIGTERM signal. Exiting\n");
++              _dbus_exit (1);
++              _dbus_assert_not_reached ("Call to exit() returned");
++            }
++          return;
+         }
+     }
+   
+-- 
+2.30.1
+
diff --git a/sys-apps/dbus/files/dbus-1.12.20-send-allow-escaped-commas-in-argument-strings.patch b/sys-apps/dbus/files/dbus-1.12.20-send-allow-escaped-commas-in-argument-strings.patch
new file mode 100644
index 0000000..9b3bf13
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-1.12.20-send-allow-escaped-commas-in-argument-strings.patch
@@ -0,0 +1,118 @@
+From 3a9bf982abae5aa8729b092e845f4283ec498dca Mon Sep 17 00:00:00 2001
+From: Tim Song <tengs@chromium.org>
+Date: Tue, 14 May 2013 14:32:38 -0700
+Subject: [PATCH] Patch dbus-send to support escaping commas in string elements
+ of arrays.
+
+BUG=chromium:240540
+TEST=Telemetry tests on cros pass with escaped commas in arguments.
+
+Change-Id: I1a284dfa443f2048dddaa85912b518224aaea5d5
+Reviewed-on: https://gerrit.chromium.org/gerrit/51185
+Reviewed-by: Elly Jones <ellyjones@chromium.org>
+Reviewed-by: Achuith Bhandarkar <achuith@chromium.org>
+Tested-by: Tim Song <tengs@chromium.org>
+Commit-Queue: Tim Song <tengs@chromium.org>
+---
+ tools/dbus-send.c | 78 ++++++++++++++++++++++++++++++++++++++++++-----
+ 1 file changed, 70 insertions(+), 8 deletions(-)
+
+diff --git a/tools/dbus-send.c b/tools/dbus-send.c
+index a1884837..52623a52 100644
+--- a/tools/dbus-send.c
++++ b/tools/dbus-send.c
+@@ -159,21 +159,83 @@ append_arg (DBusMessageIter *iter, int type, const char *value)
+   handle_oom (ret);
+ }
+ 
++// Note: buffer must be pre-allocated and at least as big as str.
++static int
++get_next_token (const char *str, int loc, char *buffer)
++{
++  int str_index, buffer_index = 0;
++
++  enum State {START, ESCAPE};
++  enum State state = START;
++
++  for (str_index = loc; str[str_index] != '\0'; str_index++)
++    {
++      if (state == START)
++        {
++          switch (str[str_index])
++            {
++              case '\\':
++                state = ESCAPE;
++                continue;
++
++              // If we hit a , in the start state, we should treat it as
++              // an argument separator since it's not escaped.
++              case ',':
++                buffer[buffer_index] = '\0';
++                return str_index + 1;
++            }
++        }
++      else if (state == ESCAPE)
++        {
++          // If the \ doesn't immediately precede a , or another \, then
++          // it's not being used as an escape character.
++          // Similarly, if we have a string of multiple \s as the last
++          // characters, then they're also not being used as escape characters.
++          if ((str[str_index] != ',' && str[str_index] != '\\') ||
++              (str[str_index] == '\\' && str[str_index + 1] == '\0'))
++            {
++              buffer[buffer_index] = '\\';
++              buffer_index++;
++            }
++
++          state = START;
++        }
++
++      buffer[buffer_index] = str[str_index];
++      buffer_index++;
++    }
++
++  // If we end on a single \, then it's not being used as an escape character.
++  // Note the earlier check will only catch if we end on a string of multiple
++  // \s.
++  if (state == ESCAPE)
++    {
++      buffer[buffer_index] = '\\';
++      buffer_index++;
++    }
++  buffer[buffer_index] = '\0';
++
++  return -1;
++}
++
+ static void
+ append_array (DBusMessageIter *iter, int type, const char *value)
+ {
+-  const char *val;
+-  char *dupval = strdup (value);
++  char *buffer = strdup (value);
+ 
+-  handle_oom (dupval != NULL);
++  handle_oom (buffer != NULL);
+ 
+-  val = strtok (dupval, ",");
+-  while (val != NULL)
++  int loc = 0;
++  while (loc >= 0)
+     {
+-      append_arg (iter, type, val);
+-      val = strtok (NULL, ",");
++      loc = get_next_token (value, loc, buffer);
++
++      // We don't want to include empty strings, even if there are
++      // several commas directly beside each other.
++      if (buffer[0] != '\0')
++        append_arg (iter, type, buffer);
+     }
+-  free (dupval);
++  free (buffer);
+ }
+ 
+ static void
+-- 
+2.30.1
+
diff --git a/sys-apps/dbus/files/dbus-1.12.20-send-print-fixed.patch b/sys-apps/dbus/files/dbus-1.12.20-send-print-fixed.patch
new file mode 100644
index 0000000..c8055f9
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-1.12.20-send-print-fixed.patch
@@ -0,0 +1,367 @@
+From 1cee1746fcebf7eab144b93467aa3b01f9c020c1 Mon Sep 17 00:00:00 2001
+From: Elly Jones <ellyjones@google.com>
+Date: Thu, 29 Jul 2010 16:28:13 -0400
+Subject: [PATCH] Add --fixed option to dbus-send.
+
+This makes the output much easier to parse programmatically, which means we can
+use it for mm-status.
+
+TEST=Adhoc
+Run dbus-send --system --dest=org.freedesktop.DBus --print-reply --fixed /org/freedesktop/DBus org.freedesktop.DBus.ListNames
+Try removing --fixed; note the increased ugliness of the output.
+
+BUG=None
+
+Review URL: http://codereview.chromium.org/2808080
+---
+ tools/dbus-print-message.c | 278 +++++++++++++++++++++++++++++++++++++
+ tools/dbus-print-message.h |   1 +
+ tools/dbus-send.c          |  10 +-
+ 3 files changed, 287 insertions(+), 2 deletions(-)
+
+diff --git a/tools/dbus-print-message.c b/tools/dbus-print-message.c
+index 547f72f8..19feb384 100644
+--- a/tools/dbus-print-message.c
++++ b/tools/dbus-print-message.c
+@@ -128,6 +128,284 @@ print_hex (const unsigned char *bytes,
+ 
+ #define DEFAULT_SIZE 100
+ 
++#include <inttypes.h>
++#define DBUS_INT64_PRINTF_ARGUMENT PRIi64
++#define DBUS_UINT64_PRINTF_ARGUMENT PRIu64
++#define MAXPFX 4096
++
++static int
++pf_can_simple(DBusMessageIter *iter)
++{
++  switch (dbus_message_iter_get_arg_type(iter))
++    {
++      case DBUS_TYPE_STRING:
++      case DBUS_TYPE_INT16:
++      case DBUS_TYPE_INT32:
++      case DBUS_TYPE_UINT16:
++      case DBUS_TYPE_UINT32:
++      case DBUS_TYPE_INT64:
++      case DBUS_TYPE_UINT64:
++      case DBUS_TYPE_BYTE:
++      case DBUS_TYPE_BOOLEAN:
++      case DBUS_TYPE_DOUBLE:
++        return 1;
++      default:
++        return 0;
++    }
++}
++
++static void pf_key(DBusMessageIter *iter, const char *pfx, char *buf, size_t sz)
++{
++  char *sv;
++  dbus_bool_t bv;
++  dbus_int16_t i16v;
++  dbus_int32_t i32v;
++  dbus_int64_t i64v;
++  dbus_uint16_t u16v;
++  dbus_uint32_t u32v;
++  dbus_uint64_t u64v;
++  unsigned char u8v;
++  double dv;
++
++  switch (dbus_message_iter_get_arg_type(iter)) {
++    case DBUS_TYPE_STRING:
++      dbus_message_iter_get_basic(iter, &sv);
++      snprintf(buf, sz, "%s/%s", pfx, sv);
++      break;
++    case DBUS_TYPE_BOOLEAN:
++      dbus_message_iter_get_basic(iter, &bv);
++      snprintf(buf, sz, "%s/%s", pfx, (bv ? "true" : "false"));
++      break;
++    case DBUS_TYPE_INT16:
++      dbus_message_iter_get_basic(iter, &i16v);
++      snprintf(buf, sz, "%s/%d", pfx, i16v);
++      break;
++    case DBUS_TYPE_INT32:
++      dbus_message_iter_get_basic(iter, &i32v);
++      snprintf(buf, sz, "%s/%d", pfx, i32v);
++      break;
++    case DBUS_TYPE_INT64:
++      dbus_message_iter_get_basic(iter, &i64v);
++#ifdef DBUS_INT64_PRINTF_ARGUMENT
++      snprintf(buf, sz, "%s/%" DBUS_INT64_PRINTF_ARGUMENT, pfx, i64v);
++#else
++      snprintf(buf, sz, "%s/[int64]", pfx);
++#endif
++      break;
++    case DBUS_TYPE_UINT16:
++      dbus_message_iter_get_basic(iter, &u16v);
++      snprintf(buf, sz, "%s/%u", pfx, u16v);
++      break;
++    case DBUS_TYPE_UINT32:
++      dbus_message_iter_get_basic(iter, &u32v);
++      snprintf(buf, sz, "%s/%u", pfx, u32v);
++      break;
++    case DBUS_TYPE_UINT64:
++      dbus_message_iter_get_basic(iter, &u64v);
++#ifdef DBUS_UINT64_PRINTF_ARGUMENT
++      snprintf(buf, sz, "%s/%" DBUS_UINT64_PRINTF_ARGUMENT, pfx, u64v);
++#else
++      snprintf(buf, sz, "%s/[uint64]", pfx);
++#endif
++      break;
++    case DBUS_TYPE_BYTE:
++      dbus_message_iter_get_basic(iter, &u8v);
++      snprintf(buf, sz, "%s/%02x", pfx, (unsigned int)u8v & 0xFF);
++      break;
++    case DBUS_TYPE_DOUBLE:
++      dbus_message_iter_get_basic(iter, &dv);
++      snprintf(buf, sz, "%s/%g", pfx, dv);
++      break;
++    default:
++      snprintf(buf, sz, "%s/[pf-unknown]", pfx);
++      break;
++  }
++}
++
++static void print_fixed_iter(DBusMessageIter *iter, const char *pfx, int all);
++
++static void pf_string(DBusMessageIter *iter, const char *pfx)
++{
++  char *val;
++  dbus_message_iter_get_basic(iter, &val);
++  printf("%s%s%s\n", pfx, pfx[0] ? " " : "", val);
++}
++
++static void pf_boolean(DBusMessageIter *iter, const char *pfx)
++{
++  dbus_bool_t bv;
++  dbus_message_iter_get_basic(iter, &bv);
++  printf("%s%s%s\n", pfx, pfx[0] ? " " : "", (bv ? "true" : "false"));
++}
++
++static void pf_uint16(DBusMessageIter *iter, const char *pfx)
++{
++  dbus_uint16_t uv;
++  dbus_message_iter_get_basic(iter, &uv);
++  printf("%s%s%u\n", pfx, pfx[0] ? " " : "", uv);
++}
++
++static void pf_int16(DBusMessageIter *iter, const char *pfx)
++{
++  dbus_int16_t iv;
++  dbus_message_iter_get_basic(iter, &iv);
++  printf("%s%s%d\n", pfx, pfx[0] ? " " : "", iv);
++}
++
++static void pf_uint32(DBusMessageIter *iter, const char *pfx)
++{
++  dbus_uint32_t uv;
++  dbus_message_iter_get_basic(iter, &uv);
++  printf("%s%s%u\n", pfx, pfx[0] ? " " : "", uv);
++}
++
++static void pf_int32(DBusMessageIter *iter, const char *pfx)
++{
++  dbus_int32_t iv;
++  dbus_message_iter_get_basic(iter, &iv);
++  printf("%s%s%d\n", pfx, pfx[0] ? " " : "", iv);
++}
++
++static void pf_uint64(DBusMessageIter *iter, const char *pfx)
++{
++  dbus_uint64_t uv;
++  dbus_message_iter_get_basic(iter, &uv);
++#ifdef DBUS_UINT64_PRINTF_ARGUMENT
++  printf("%s%s%" DBUS_UINT64_PRINTF_ARGUMENT "\n", pfx, pfx[0] ? " " : "", uv);
++#else
++  printf("%s%s[uint64]\n", pfx, pfx[0] ? " " : "");
++#endif
++}
++
++static void pf_int64(DBusMessageIter *iter, const char *pfx)
++{
++  dbus_int64_t iv;
++  dbus_message_iter_get_basic(iter, &iv);
++#ifdef DBUS_INT64_PRINTF_ARGUMENT
++  printf("%s%s%" DBUS_INT64_PRINTF_ARGUMENT "\n", pfx, pfx[0] ? " " : "", iv);
++#else
++  printf("%s%s[int64]\n", pfx, pfx[0] ? " " : "");
++#endif
++}
++
++static void pf_double(DBusMessageIter *iter, const char *pfx)
++{
++  double dv;
++  dbus_message_iter_get_basic(iter, &dv);
++  printf("%s%s%g\n", pfx, pfx[0] ? " " : "", dv);
++}
++
++static void pf_byte(DBusMessageIter *iter, const char *pfx)
++{
++  unsigned char bv;
++  dbus_message_iter_get_basic(iter, &bv);
++  printf("%s%s%02x\n", pfx, pfx[0] ? " " : "", (unsigned int)bv & 0xFF);
++}
++
++static void pf_array(DBusMessageIter *iter, const char *pfx)
++{
++  int type;
++  DBusMessageIter subiter;
++  char npfx[MAXPFX];
++  int i = 0;
++
++  dbus_message_iter_recurse(iter, &subiter);
++  type = dbus_message_iter_get_arg_type(&subiter);
++
++  while (type != DBUS_TYPE_INVALID)
++    {
++      snprintf(npfx, sizeof(npfx), "%s/%d", pfx, i);
++      print_fixed_iter(&subiter, npfx, 0);
++      dbus_message_iter_next(&subiter);
++      type = dbus_message_iter_get_arg_type(&subiter);
++      i++;
++    }
++}
++
++static void pf_variant(DBusMessageIter *iter, const char *pfx)
++{
++  DBusMessageIter subiter;
++  dbus_message_iter_recurse(iter, &subiter);
++  print_fixed_iter(&subiter, pfx, 0);
++}
++
++static void pf_dict(DBusMessageIter *iter, const char *pfx)
++{
++  DBusMessageIter subiter;
++  char npfx[MAXPFX];
++
++  dbus_message_iter_recurse(iter, &subiter);
++  /* Nasty hack to make string -> thing dicts more parseable. */
++  if (pf_can_simple(&subiter))
++    {
++      pf_key(&subiter, pfx, npfx, sizeof(npfx));
++    }
++  else
++    {
++      snprintf(npfx, MAXPFX, "%s/[complex-key]", pfx);
++    }
++  dbus_message_iter_next(&subiter);
++  print_fixed_iter(&subiter, npfx, 0);
++}
++
++static void print_fixed_iter(DBusMessageIter *iter, const char *pfx, int all)
++{
++  static struct {
++    int type;
++    void (*func)(DBusMessageIter *iter, const char *pfx);
++  } printers[] = {
++    { DBUS_TYPE_STRING, pf_string },
++    { DBUS_TYPE_ARRAY, pf_array },
++    { DBUS_TYPE_STRUCT, pf_array }, /* yes, really. They're identical. */
++    { DBUS_TYPE_VARIANT, pf_variant },
++    { DBUS_TYPE_DICT_ENTRY, pf_dict },
++    { DBUS_TYPE_BOOLEAN, pf_boolean },
++    { DBUS_TYPE_UINT32, pf_uint32 },
++    { DBUS_TYPE_INT32, pf_int32 },
++    { DBUS_TYPE_SIGNATURE, pf_string },
++    { DBUS_TYPE_OBJECT_PATH, pf_string },
++    { DBUS_TYPE_INT16, pf_int16 },
++    { DBUS_TYPE_UINT16, pf_uint16 },
++    { DBUS_TYPE_INT64, pf_int64 },
++    { DBUS_TYPE_UINT64, pf_uint64 },
++    { DBUS_TYPE_DOUBLE, pf_double },
++    { DBUS_TYPE_BYTE, pf_byte },
++    { 0, NULL }
++  };
++  int type;
++  int i;
++
++  do
++    {
++      type = dbus_message_iter_get_arg_type(iter);
++      if (type == DBUS_TYPE_INVALID)
++        return;
++      for (i = 0; printers[i].func; i++)
++        {
++          if (printers[i].type == type)
++            {
++              printers[i].func(iter, pfx);
++              break;
++            }
++        }
++      if (!printers[i].func)
++        {
++          printf("print-fixed-iter: no idea what %d is\n", type);
++        }
++    }
++  while (all && dbus_message_iter_next(iter));
++}
++
++void print_message_fixed(DBusMessage *msg)
++{
++  DBusMessageIter iter;
++  int type;
++
++  type = dbus_message_get_type(msg);
++  dbus_message_iter_init(msg, &iter);
++  print_fixed_iter(&iter, "", 1);
++}
++
+ static void
+ print_ay (DBusMessageIter *iter, int depth)
+ {
+diff --git a/tools/dbus-print-message.h b/tools/dbus-print-message.h
+index d45bc79d..9f80116f 100644
+--- a/tools/dbus-print-message.h
++++ b/tools/dbus-print-message.h
+@@ -26,6 +26,7 @@
+ #include <string.h>
+ #include <dbus/dbus.h>
+ 
++void print_message_fixed (DBusMessage *message);
+ void print_message (DBusMessage *message, dbus_bool_t literal, long sec, long usec);
+ 
+ #endif /* DBUS_PRINT_MESSAGE_H */
+diff --git a/tools/dbus-send.c b/tools/dbus-send.c
+index 52623a52..14cde130 100644
+--- a/tools/dbus-send.c
++++ b/tools/dbus-send.c
+@@ -54,7 +54,7 @@ static void usage (int ecode) _DBUS_GNUC_NORETURN;
+ static void
+ usage (int ecode)
+ {
+-  fprintf (stderr, "Usage: %s [--help] [--system | --session | --bus=ADDRESS | --peer=ADDRESS] [--dest=NAME] [--type=TYPE] [--print-reply[=literal]] [--reply-timeout=MSEC] <destination object path> <message name> [contents ...]\n", appname);
++  fprintf (stderr, "Usage: %s [--help] [--system | --session | --bus=ADDRESS | --peer=ADDRESS] [--dest=NAME] [--type=TYPE] [--print-reply[=literal]] [--fixed] [--reply-timeout=MSEC] <destination object path> <message name> [contents ...]\n", appname);
+   exit (ecode);
+ }
+ 
+@@ -326,6 +326,7 @@ main (int argc, char *argv[])
+   const char *sender = NULL;
+   int is_bus = FALSE;
+   int session_or_system = FALSE;
++  int fixed = 0;
+ 
+   appname = argv[0];
+   
+@@ -427,6 +428,8 @@ main (int argc, char *argv[])
+ 	type_str = strchr (arg, '=') + 1;
+       else if (!strcmp(arg, "--help"))
+ 	usage (0);
++      else if (!strcmp(arg, "--fixed"))
++        fixed = 1;
+       else if (arg[0] == '-')
+ 	usage (1);
+       else if (path == NULL)
+@@ -697,7 +700,10 @@ main (int argc, char *argv[])
+           long sec, usec;
+ 
+           _dbus_get_real_time (&sec, &usec);
+-          print_message (reply, print_reply_literal, sec, usec);
++          if (fixed)
++            print_message_fixed (reply);
++          else
++            print_message (reply, print_reply_literal, sec, usec);
+           dbus_message_unref (reply);
+         }
+     }
+-- 
+2.30.1
+
diff --git a/sys-apps/dbus/files/dbus-1.12.20-send-unix-fd.patch b/sys-apps/dbus/files/dbus-1.12.20-send-unix-fd.patch
new file mode 100644
index 0000000..c3e65b5
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-1.12.20-send-unix-fd.patch
@@ -0,0 +1,51 @@
+From c247a88879a1677a309c83e3f7ef5b66646c8d9e Mon Sep 17 00:00:00 2001
+From: Elly Jones <ellyjones@chromium.org>
+Date: Tue, 29 Nov 2011 19:28:53 -0500
+Subject: [PATCH] sys-apps/dbus: add unix fd support to dbus-send(1).
+
+Support 'fd:<int>' to pass file descriptors using dbus-send(1).
+
+BUG=chromium-os:22533
+TESTED_ON=x86-generic
+TEST=Adhoc,trybot
+Build, send an fd to debugd.
+
+Try: http://naya.i.corp.google.com/tries/7ba87f0b-5e05-4127-b827-1979b0846e50.txt
+Change-Id: I25eac2201246b18ce6f7e78ea92ea71d91fe3d41
+Signed-off-by: Elly Jones <ellyjones@chromium.org>
+Reviewed-on: https://gerrit.chromium.org/gerrit/12237
+Reviewed-by: Eric Shienbrood <ers@chromium.org>
+Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
+[Adrian Ratiu: rebased to dbus 1.12.20]
+---
+ tools/dbus-send.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/tools/dbus-send.c b/tools/dbus-send.c
+index 14cde130..0cda2c66 100644
+--- a/tools/dbus-send.c
++++ b/tools/dbus-send.c
+@@ -151,6 +151,11 @@ append_arg (DBusMessageIter *iter, int type, const char *value)
+ 	}
+       break;
+ 
++    case DBUS_TYPE_UNIX_FD:
++      uint32 = strtoul (value, NULL, 0);
++      ret = dbus_message_iter_append_basic (iter, DBUS_TYPE_UNIX_FD, &uint32);
++      break;
++
+     default:
+       fprintf (stderr, "%s: Unsupported data type %c\n", appname, (char) type);
+       exit (1);
+@@ -297,6 +302,8 @@ type_from_name (const char *arg)
+     type = DBUS_TYPE_BOOLEAN;
+   else if (!strcmp (arg, "objpath"))
+     type = DBUS_TYPE_OBJECT_PATH;
++  else if (!strcmp (arg, "fd"))
++    type = DBUS_TYPE_UNIX_FD;
+   else
+     {
+       fprintf (stderr, "%s: Unknown type \"%s\"\n", appname, arg);
+-- 
+2.31.1
+
diff --git a/sys-apps/dbus/files/dbus-1.12.20-send-variant-dict.patch b/sys-apps/dbus/files/dbus-1.12.20-send-variant-dict.patch
new file mode 100644
index 0000000..47e6489
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-1.12.20-send-variant-dict.patch
@@ -0,0 +1,82 @@
+From a4a02bb89f781bbc58dab22644a6b1427685111b Mon Sep 17 00:00:00 2001
+From: Elly Jones <ellyjones@chromium.org>
+Date: Thu, 1 Dec 2011 13:41:52 -0500
+Subject: [PATCH] dbus-send: support variant values in dictionaries.
+
+Since dbus-send does not support nested containers, add a special case to allow
+for variants as dictionary values.
+
+BUG=chromium-os:20843
+TEST=Adhoc
+dbus-send --system / foo.bar.baz dict:string:variant:abc,int32:3
+
+Change-Id: Ia50215c8ec31bed67a8b8f07422812ea04a2f469
+Signed-off-by: Elly Jones <ellyjones@chromium.org>
+Reviewed-on: https://gerrit.chromium.org/gerrit/12323
+Reviewed-by: Eric Shienbrood <ers@chromium.org>
+---
+ tools/dbus-send.c | 34 ++++++++++++++++++++++++++++++++--
+ 1 file changed, 32 insertions(+), 2 deletions(-)
+
+diff --git a/tools/dbus-send.c b/tools/dbus-send.c
+index 892e20bd..905d8e8e 100644
+--- a/tools/dbus-send.c
++++ b/tools/dbus-send.c
+@@ -244,6 +244,8 @@ append_array (DBusMessageIter *iter, int type, const char *value)
+   free (buffer);
+ }
+ 
++static int type_from_name(const char *name);
++
+ static void
+ append_dict (DBusMessageIter *iter, int keytype, int valtype, const char *value)
+ {
+@@ -269,7 +271,31 @@ append_dict (DBusMessageIter *iter, int keytype, int valtype, const char *value)
+ 	  fprintf (stderr, "%s: Malformed dictionary\n", appname);
+ 	  exit (1);
+ 	}
+-      append_arg (&subiter, valtype, val);
++      if (valtype == DBUS_TYPE_VARIANT)
++        {
++	  char sig[2];
++	  char *c = strchr(val, ':');
++	  if (!c)
++	    {
++	      fprintf (stderr, "Missing type in variant dict\n");
++	      exit (1);
++	    }
++	  *(c++) = '\0';
++	  sig[0] = type_from_name(val);
++	  sig[1] = '\0';
++	  DBusMessageIter subsubiter;
++	  handle_oom (dbus_message_iter_open_container (&subiter,
++							DBUS_TYPE_VARIANT,
++							sig,
++							&subsubiter));
++	  append_arg(&subsubiter, sig[0], c);
++	  handle_oom (dbus_message_iter_close_container (&subiter,
++							 &subsubiter));
++	}
++      else
++        {
++	  append_arg (&subiter, valtype, val);
++	}
+ 
+       handle_oom (dbus_message_iter_close_container (iter, &subiter));
+       val = strtok (NULL, ",");
+@@ -642,7 +668,11 @@ main (int argc, char *argv[])
+ 	      exit (1);
+ 	    }
+ 	  *(c++) = 0;
+-	  secondary_type = type_from_name (arg);
++	  if (!strcmp(arg, "variant"))
++	    /* Hack: support variant values for dictionaries. */
++	    secondary_type = DBUS_TYPE_VARIANT;
++	  else
++	    secondary_type = type_from_name (arg);
+ 	  sig[0] = DBUS_DICT_ENTRY_BEGIN_CHAR;
+ 	  sig[1] = type2;
+ 	  sig[2] = secondary_type;
+-- 
+2.30.1
+
diff --git a/sys-apps/dbus/files/dbus-1.4.12-match-rules.patch b/sys-apps/dbus/files/dbus-1.4.12-match-rules.patch
deleted file mode 100644
index 27fb087..0000000
--- a/sys-apps/dbus/files/dbus-1.4.12-match-rules.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/bus/system.conf.in	2012-08-15 07:01:02.000000000 -0700
-+++ b/bus/system.conf.in	2012-11-19 15:18:37.388906177 -0800
-@@ -80,4 +80,7 @@
- 
-   <include if_selinux_enabled="yes" selinux_root_relative="yes">contexts/dbus_contexts</include>
- 
-+  <!-- Chromium talks to most services on the bus so needs a relatively
-+       large number of match rules. -->
-+  <limit name="max_match_rules_per_connection">4096</limit>
- </busconfig>
diff --git a/sys-apps/dbus/files/dbus-1.4.12-send-unix-fd.patch b/sys-apps/dbus/files/dbus-1.4.12-send-unix-fd.patch
deleted file mode 100644
index 990a520..0000000
--- a/sys-apps/dbus/files/dbus-1.4.12-send-unix-fd.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff --git a/tools/dbus-send.c b/tools/dbus-send.c
-index cde0bb7..0a6f79a 100644
---- a/tools/dbus-send.c
-+++ b/tools/dbus-send.c
-@@ -67,6 +67,7 @@ append_arg (DBusMessageIter *iter, int type, const char *value)
-   double d;
-   unsigned char byte;
-   dbus_bool_t v_BOOLEAN;
-+  int _int;
-   
-   /* FIXME - we are ignoring OOM returns on all these functions */
-   switch (type)
-@@ -137,6 +138,11 @@ append_arg (DBusMessageIter *iter, int type, const char *value)
- 	}
-       break;
- 
-+    case DBUS_TYPE_UNIX_FD:
-+      _int = strtoul (value, NULL, 0);
-+      dbus_message_iter_append_basic (iter, DBUS_TYPE_UNIX_FD, &_int);
-+      break;
-+
-     default:
-       fprintf (stderr, "%s: Unsupported data type %c\n", appname, (char) type);
-       exit (1);
-@@ -215,6 +221,8 @@ type_from_name (const char *arg)
-     type = DBUS_TYPE_BOOLEAN;
-   else if (!strcmp (arg, "objpath"))
-     type = DBUS_TYPE_OBJECT_PATH;
-+  else if (!strcmp (arg, "fd"))
-+    type = DBUS_TYPE_UNIX_FD;
-   else
-     {
-       fprintf (stderr, "%s: Unknown type \"%s\"\n", appname, arg);
diff --git a/sys-apps/dbus/files/dbus-1.4.12-send-variant-dict.patch b/sys-apps/dbus/files/dbus-1.4.12-send-variant-dict.patch
deleted file mode 100644
index 68bec09..0000000
--- a/sys-apps/dbus/files/dbus-1.4.12-send-variant-dict.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff --git a/tools/dbus-send.c b/tools/dbus-send.c
-index 0a6f79a..6c56306 100644
---- a/tools/dbus-send.c
-+++ b/tools/dbus-send.c
-@@ -164,6 +164,8 @@ append_array (DBusMessageIter *iter, int type, const char *value)
-   free (dupval);
- }
- 
-+static int type_from_name(const char *name);
-+
- static void
- append_dict (DBusMessageIter *iter, int keytype, int valtype, const char *value)
- {
-@@ -187,7 +189,30 @@ append_dict (DBusMessageIter *iter, int keytype, int valtype, const char *value)
- 	  fprintf (stderr, "%s: Malformed dictionary\n", appname);
- 	  exit (1);
- 	}
--      append_arg (&subiter, valtype, val);
-+      if (valtype == DBUS_TYPE_VARIANT)
-+        {
-+	  char sig[2];
-+	  char *c = strchr(val, ':');
-+	  if (!c)
-+	    {
-+	      fprintf (stderr, "Missing type in variant dict\n");
-+	      exit (1);
-+	    }
-+	  *(c++) = '\0';
-+	  sig[0] = type_from_name(val);
-+	  sig[1] = '\0';
-+	  DBusMessageIter subsubiter;
-+	  dbus_message_iter_open_container (&subiter,
-+	                                    DBUS_TYPE_VARIANT,
-+					    sig,
-+					    &subsubiter);
-+	  append_arg(&subsubiter, sig[0], c);
-+	  dbus_message_iter_close_container (&subiter, &subsubiter);
-+	}
-+      else
-+        {
-+	  append_arg (&subiter, valtype, val);
-+	}
- 
-       dbus_message_iter_close_container (iter, &subiter);
-       val = strtok (NULL, ",");
-@@ -473,7 +498,11 @@ main (int argc, char *argv[])
- 	      exit (1);
- 	    }
- 	  *(c++) = 0;
--	  secondary_type = type_from_name (arg);
-+	  if (!strcmp(arg, "variant"))
-+	    /* Hack: support variant values for dictionaries. */
-+	    secondary_type = DBUS_TYPE_VARIANT;
-+	  else
-+	    secondary_type = type_from_name (arg);
- 	  sig[0] = DBUS_DICT_ENTRY_BEGIN_CHAR;
- 	  sig[1] = type;
- 	  sig[2] = secondary_type;
diff --git a/sys-apps/dbus/files/dbus-1.6.8-raise-SIGTERM-on-connection-lost.patch b/sys-apps/dbus/files/dbus-1.6.8-raise-SIGTERM-on-connection-lost.patch
deleted file mode 100644
index 01ab9e4..0000000
--- a/sys-apps/dbus/files/dbus-1.6.8-raise-SIGTERM-on-connection-lost.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From e8c9b8a8e340a612b4a0a24901526982aa17d61f Mon Sep 17 00:00:00 2001
-From: Bertrand SIMONNET <bsimonnet@google.com>
-Date: Fri, 18 Dec 2015 16:15:25 -0800
-Subject: [PATCH] dbus: Raise SIGTERM when the connection drops.
-
-Instead of exiting directly when a client notices that the connection
-got dropped, raise a SIGTERM signal to allow the client to clean up and
-exit cleanly.
-
-Bug: 26267381
-Test: stop dbus. Clients exit cleanly.
-
-Change-Id: I7e1faf1aa8b761b1b05dfde82a48882f61124acb
----
-
-diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c
-index fb52955..0362288 100644
---- a/dbus/dbus-connection.c
-+++ b/dbus/dbus-connection.c
-@@ -22,6 +22,7 @@
-  */
- 
- #include <config.h>
-+#include <signal.h>
- #include "dbus-shared.h"
- #include "dbus-connection.h"
- #include "dbus-list.h"
-@@ -4284,8 +4285,13 @@
-           CONNECTION_UNLOCK (connection);            
-           
-           _dbus_verbose ("Exiting on Disconnected signal\n");
--          _dbus_exit (1);
--          _dbus_assert_not_reached ("Call to exit() returned");
-+          if (raise (SIGTERM) != 0)
-+            {
-+              _dbus_verbose ("Failed to raise a SIGTERM signal. Exiting\n");
-+              _dbus_exit (1);
-+              _dbus_assert_not_reached ("Call to exit() returned");
-+            }
-+          return;
-         }
-     }
-   
diff --git a/sys-apps/dbus/files/dbus-1.6.8-send-allow-escaped-commas-in-argument-strings.patch b/sys-apps/dbus/files/dbus-1.6.8-send-allow-escaped-commas-in-argument-strings.patch
deleted file mode 100644
index df93763..0000000
--- a/sys-apps/dbus/files/dbus-1.6.8-send-allow-escaped-commas-in-argument-strings.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-diff --git a/tools/dbus-send.c b/tools/dbus-send.c
---- a/tools/dbus-send.c
-+++ b/tools/dbus-send.c
-@@ -149,17 +149,79 @@ append_arg (DBusMessageIter *iter, int type, const char *value)
-     }
- }
-
-+// Note: buffer must be pre-allocated and at least as big as str.
-+static int
-+get_next_token (const char *str, int loc, char *buffer)
-+{
-+  int str_index, buffer_index = 0;
-+
-+  enum State {START, ESCAPE};
-+  enum State state = START;
-+
-+  for (str_index = loc; str[str_index] != '\0'; str_index++)
-+    {
-+      if (state == START)
-+        {
-+          switch (str[str_index])
-+            {
-+              case '\\':
-+                state = ESCAPE;
-+                continue;
-+
-+              // If we hit a , in the start state, we should treat it as
-+              // an argument separator since it's not escaped.
-+              case ',':
-+                buffer[buffer_index] = '\0';
-+                return str_index + 1;
-+            }
-+        }
-+      else if (state == ESCAPE)
-+        {
-+          // If the \ doesn't immediately precede a , or another \, then
-+          // it's not being used as an escape character.
-+          // Similarly, if we have a string of multiple \s as the last
-+          // characters, then they're also not being used as escape characters.
-+          if ((str[str_index] != ',' && str[str_index] != '\\') ||
-+              (str[str_index] == '\\' && str[str_index + 1] == '\0'))
-+            {
-+              buffer[buffer_index] = '\\';
-+              buffer_index++;
-+            }
-+
-+          state = START;
-+        }
-+
-+      buffer[buffer_index] = str[str_index];
-+      buffer_index++;
-+    }
-+
-+  // If we end on a single \, then it's not being used as an escape character.
-+  // Note the earlier check will only catch if we end on a string of multiple
-+  // \s.
-+  if (state == ESCAPE)
-+    {
-+      buffer[buffer_index] = '\\';
-+      buffer_index++;
-+    }
-+  buffer[buffer_index] = '\0';
-+
-+  return -1;
-+}
-+
- static void
- append_array (DBusMessageIter *iter, int type, const char *value)
- {
--  const char *val;
--  char *dupval = strdup (value);
-+  char *buffer = strdup (value);
-
--  val = strtok (dupval, ",");
--  while (val != NULL)
-+  int loc = 0;
-+  while (loc >= 0)
-     {
--      append_arg (iter, type, val);
--      val = strtok (NULL, ",");
-+      loc = get_next_token (value, loc, buffer);
-+
-+      // We don't want to include empty strings, even if there are
-+      // several commas directly beside each other.
-+      if (buffer[0] != '\0')
-+        append_arg (iter, type, buffer);
-     }
--  free (dupval);
-+  free (buffer);
- }
diff --git a/sys-apps/dbus/files/dbus-daemon-optional.patch b/sys-apps/dbus/files/dbus-daemon-optional.patch
new file mode 100644
index 0000000..353dcb5
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-daemon-optional.patch
@@ -0,0 +1,75 @@
+From 3c08d28fbae8b0ef3839ef26f8d2a713a9a684f9 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <asturm@gentoo.org>
+Date: Thu, 21 Feb 2019 23:53:19 +0100
+Subject: [PATCH] Make dbus daemon build optional
+
+---
+ bus/Makefile.am |  2 ++
+ configure.ac    | 17 ++++++++++++++++-
+ 2 files changed, 18 insertions(+), 1 deletion(-)
+
+diff --git a/bus/Makefile.am b/bus/Makefile.am
+index 9ae3071..26a770c 100644
+--- a/bus/Makefile.am
++++ b/bus/Makefile.am
+@@ -70,6 +70,7 @@ agentdir=$(LAUNCHD_AGENT_DIR)
+ agent_DATA=org.freedesktop.dbus-session.plist
+ endif
+ 
++if DBUS_DAEMON
+ if DBUS_BUS_ENABLE_KQUEUE
+ DIR_WATCH_SOURCE=dir-watch-kqueue.c
+ else
+@@ -241,6 +242,7 @@ test_bus_LDADD = \
+ 	$(top_builddir)/dbus/libdbus-internal.la \
+ 	$(DBUS_BUS_LIBS) \
+ 	$(NULL)
++endif DBUS_DAEMON
+ 
+ install-data-hook:
+ 	$(mkinstalldirs) $(DESTDIR)$(dbusdatadir)/session.d
+diff --git a/configure.ac b/configure.ac
+index be6b065..854e846 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -202,6 +202,7 @@ AC_ARG_ENABLE([apparmor],
+   [enable_apparmor=$enableval],
+   [enable_apparmor=auto])
+ AC_ARG_ENABLE(libaudit,AS_HELP_STRING([--enable-libaudit],[build audit daemon support for SELinux]),enable_libaudit=$enableval,enable_libaudit=auto)
++AC_ARG_ENABLE(daemon, AS_HELP_STRING([--enable-daemon],[build with the dbus daemon]),enable_daemon=$enableval,enable_daemon=yes)
+ AC_ARG_ENABLE(inotify, AS_HELP_STRING([--enable-inotify],[build with inotify support (linux only)]),enable_inotify=$enableval,enable_inotify=auto)
+ AC_ARG_ENABLE(kqueue, AS_HELP_STRING([--enable-kqueue],[build with kqueue support]),enable_kqueue=$enableval,enable_kqueue=auto)
+ AC_ARG_ENABLE(console-owner-file, AS_HELP_STRING([--enable-console-owner-file],[enable console owner file]),enable_console_owner_file=$enableval,enable_console_owner_file=auto)
+@@ -830,7 +831,20 @@ AC_CHECK_FUNCS(getpeerucred getpeereid)
+ 
+ AC_CHECK_FUNCS(pipe2 accept4)
+ 
+-PKG_CHECK_MODULES([EXPAT], [expat])
++# dbusdaemon checks
++if test x$enable_daemon = xno ; then
++    have_daemon=no
++else
++    have_daemon=yes
++fi
++
++dnl check if daemon shall be built
++if test x$have_daemon = xyes; then
++   AC_DEFINE(DBUS_DAEMON,1,[Use daemon])
++   PKG_CHECK_MODULES([EXPAT], [expat])
++fi
++
++AM_CONDITIONAL(DBUS_DAEMON, test x$have_daemon = xyes)
+ 
+ save_cflags="$CFLAGS"
+ save_libs="$LIBS"
+@@ -1824,6 +1838,7 @@ echo "
+         Building bus stats API:   ${enable_stats}
+         Building SELinux support: ${have_selinux}
+         Building AppArmor support: ${have_apparmor}
++        Building daemon:          ${have_daemon}
+         Building inotify support: ${have_inotify}
+         Building kqueue support:  ${have_kqueue}
+         Building systemd support: ${have_systemd}
+-- 
+2.20.1
+
diff --git a/sys-apps/dbus/files/dbus-enable-elogind.patch b/sys-apps/dbus/files/dbus-enable-elogind.patch
new file mode 100644
index 0000000..5cb5d64
--- /dev/null
+++ b/sys-apps/dbus/files/dbus-enable-elogind.patch
@@ -0,0 +1,73 @@
+--- a/dbus/dbus-userdb-util.c	2015-09-30 16:48:40.000000000 +0200
++++ b/dbus/dbus-userdb-util.c	2016-11-03 11:09:42.550520587 +0100
+@@ -32,6 +32,9 @@
+ #if HAVE_SYSTEMD
+ #include <systemd/sd-login.h>
+ #endif
++#if HAVE_ELOGIND
++#include <elogind/sd-login.h>
++#endif
+ 
+ /**
+  * @addtogroup DBusInternalsUtils
+@@ -54,7 +57,7 @@
+   const DBusUserInfo *info;
+   dbus_bool_t result = FALSE;
+ 
+-#ifdef HAVE_SYSTEMD
++#if defined(HAVE_SYSTEMD) || defined(HAVE_ELOGIND)
+   /* check if we have logind */
+   if (access ("/run/systemd/seats/", F_OK) >= 0)
+     {
+--- a/configure.ac	2016-11-03 11:13:58.286528265 +0100
++++ b/configure.ac	2016-11-03 11:22:11.210543063 +0100
+@@ -185,6 +185,7 @@
+ AC_ARG_ENABLE(kqueue, AS_HELP_STRING([--enable-kqueue],[build with kqueue support]),enable_kqueue=$enableval,enable_kqueue=auto)
+ AC_ARG_ENABLE(console-owner-file, AS_HELP_STRING([--enable-console-owner-file],[enable console owner file]),enable_console_owner_file=$enableval,enable_console_owner_file=auto)
+ AC_ARG_ENABLE(launchd, AS_HELP_STRING([--enable-launchd],[build with launchd auto-launch support]),enable_launchd=$enableval,enable_launchd=auto)
++AC_ARG_ENABLE(elogind, AS_HELP_STRING([--enable-elogind],[build with elogind user seat support]),enable_elogind=$enableval,enable_elogind=auto)
+ AC_ARG_ENABLE(systemd, AS_HELP_STRING([--enable-systemd],[build with systemd at_console support]),enable_systemd=$enableval,enable_systemd=auto)
+ 
+ AC_ARG_WITH(init-scripts, AS_HELP_STRING([--with-init-scripts=[redhat]],[Style of init scripts to install]))
+@@ -1184,6 +1185,24 @@
+ 
+ AM_CONDITIONAL(HAVE_CONSOLE_OWNER_FILE, test x$have_console_owner_file = xyes)
+ 
++dnl elogind detection
++if test x$enable_elogind = xno ; then
++    have_elogind=no;
++else
++    PKG_CHECK_MODULES([ELOGIND],
++        [libelogind >= 209],
++        [have_elogind=yes],
++        [have_elogind=no])
++fi
++
++if test x$have_elogind = xyes; then
++    AC_DEFINE(HAVE_ELOGIND,1,[Have elogind])
++fi
++
++if test x$enable_elogind = xyes -a x$have_elogind != xyes ; then
++    AC_MSG_ERROR([Explicitly requested elogind support, but libelogind not found])
++fi
++
+ dnl systemd detection
+ if test x$enable_systemd = xno ; then
+     have_systemd=no;
+@@ -1290,7 +1309,7 @@
+ fi
+ 
+ #### Set up final flags
+-LIBDBUS_LIBS="$THREAD_LIBS $NETWORK_libs $SYSTEMD_LIBS"
++LIBDBUS_LIBS="$THREAD_LIBS $NETWORK_libs $SYSTEMD_LIBS $ELOGIND_LIBS"
+ AC_SUBST([LIBDBUS_LIBS])
+ 
+ ### X11 detection
+@@ -1949,6 +1968,7 @@
+         Building AppArmor support: ${have_apparmor}
+         Building inotify support: ${have_inotify}
+         Building kqueue support:  ${have_kqueue}
++        Building elogind support: ${have_elogind}
+         Building systemd support: ${have_systemd}
+         Building X11 code:        ${have_x11}
+         Building Doxygen docs:    ${enable_doxygen_docs}
diff --git a/sys-apps/dbus/files/dbus.initd-r1 b/sys-apps/dbus/files/dbus.initd-r1
deleted file mode 100644
index bd35423..0000000
--- a/sys-apps/dbus/files/dbus.initd-r1
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/sbin/openrc-run
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License, v2 or later
-
-extra_started_commands="reload"
-
-description="An IPC message bus daemon"
-pidfile="/var/run/dbus.pid"
-command="/usr/bin/dbus-daemon"
-command_args="--system"
-
-dbus_socket="/var/run/dbus/system_bus_socket"
-
-depend() {
-	need localmount
-	after bootmisc
-}
-
-start_pre() {
-	/usr/bin/dbus-uuidgen --ensure=/etc/machine-id
-
-	# We need to test if /var/run/dbus exists, since script will fail if it does not
-	checkpath -q -d /var/run/dbus 
-}
-
-stop_post() {
-	[ ! -S "${dbus_socket}" ] || rm -f "${dbus_socket}"
-}
-
-reload() {
-	ebegin "Reloading D-BUS messagebus config"
-	/usr/bin/dbus-send --print-reply --system --type=method_call \
-			--dest=org.freedesktop.DBus \
-			/ org.freedesktop.DBus.ReloadConfig > /dev/null
-	eend $?
-}
diff --git a/sys-apps/dbus/files/dbus.initd.in b/sys-apps/dbus/files/dbus.initd.in
new file mode 100644
index 0000000..10c7201
--- /dev/null
+++ b/sys-apps/dbus/files/dbus.initd.in
@@ -0,0 +1,36 @@
+#!/sbin/openrc-run
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+extra_started_commands="reload"
+
+description="An IPC message bus daemon"
+pidfile="@rundir@/dbus.pid"
+command="/usr/bin/dbus-daemon"
+command_args="--system"
+
+dbus_socket="@rundir@/dbus/system_bus_socket"
+
+depend() {
+	need localmount
+	after bootmisc
+}
+
+start_pre() {
+	/usr/bin/dbus-uuidgen --ensure=/etc/machine-id
+
+	# We need to test if /var/run/dbus exists, since script will fail if it does not
+	checkpath -q -d "@rundir@/dbus"
+}
+
+stop_post() {
+	[ ! -S "${dbus_socket}" ] || rm -f "${dbus_socket}"
+}
+
+reload() {
+	ebegin "Reloading D-BUS messagebus config"
+	dbus-send --print-reply --system --type=method_call \
+			--dest=org.freedesktop.DBus \
+			/ org.freedesktop.DBus.ReloadConfig > /dev/null
+	eend $?
+}
diff --git a/sys-apps/debianutils/Manifest b/sys-apps/debianutils/Manifest
deleted file mode 100644
index 9242269..0000000
--- a/sys-apps/debianutils/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST debianutils_3.1.3.tar.gz 132108 RMD160 b38fdc56519ce22627d0dd320455b89460eafea9 SHA1 6de01d71eec751db913b8ad66e90fb4e63b7b27b SHA256 83861a6c28166b0c84ab248d44fcd19d8c3940fa43f9450a7a8c9870af59ae8f
diff --git a/sys-apps/debianutils/debianutils-3.1.3-r1.ebuild b/sys-apps/debianutils/debianutils-3.1.3-r1.ebuild
deleted file mode 120000
index 2a68695..0000000
--- a/sys-apps/debianutils/debianutils-3.1.3-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-debianutils-3.1.3.ebuild
\ No newline at end of file
diff --git a/sys-apps/debianutils/debianutils-3.1.3.ebuild b/sys-apps/debianutils/debianutils-3.1.3.ebuild
deleted file mode 100644
index b1ca4b4..0000000
--- a/sys-apps/debianutils/debianutils-3.1.3.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 1999-2009 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/debianutils/debianutils-3.1.3.ebuild,v 1.7 2009/07/13 18:22:10 josejx Exp $
-
-inherit eutils flag-o-matic
-
-DESCRIPTION="A selection of tools from Debian"
-HOMEPAGE="http://packages.qa.debian.org/d/debianutils.html"
-SRC_URI="mirror://debian/pool/main/d/${PN}/${PN}_${PV}.tar.gz"
-
-LICENSE="BSD GPL-2 SMAIL"
-SLOT="0"
-KEYWORDS="*"
-IUSE="kernel_linux static"
-
-PDEPEND="|| ( >=sys-apps/coreutils-6.10-r1 sys-apps/mktemp sys-freebsd/freebsd-ubin )"
-
-src_unpack() {
-	unpack ${A}
-	cd "${S}"
-	epatch "${FILESDIR}"/${PN}-2.31-no-bs-namespace.patch
-	epatch "${FILESDIR}"/${P}-installkernel-symlinks.patch
-}
-
-src_compile() {
-	use static && append-ldflags -static
-	econf || die
-	emake || die
-}
-
-src_install() {
-	into /
-	dobin tempfile run-parts || die
-	if use kernel_linux ; then
-		dosbin installkernel || die "installkernel failed"
-	fi
-
-	into /usr
-	dosbin savelog || die "savelog failed"
-
-	doman tempfile.1 run-parts.8 savelog.8
-	use kernel_linux && doman installkernel.8
-	cd debian
-	dodoc changelog control
-}
diff --git a/sys-apps/debianutils/files/debianutils-2.31-no-bs-namespace.patch b/sys-apps/debianutils/files/debianutils-2.31-no-bs-namespace.patch
deleted file mode 100644
index 0e58219..0000000
--- a/sys-apps/debianutils/files/debianutils-2.31-no-bs-namespace.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Allow dots in the names, bug #95173.  Patch by Kerin Millar.
-Re-sourced for 2.28.2
-
---- debianutils-2.28.2/run-parts.8
-+++ debianutils-2.28.2/run-parts.8
-@@ -27,7 +27,8 @@
- 
- If neither the \-\-lsbsysinit option nor the \-\-regex option is given
- then the names must consist entirely of upper and lower case letters,
--digits, underscores, and hyphens.                           
-+digits, underscores, hyphens, and periods. However, the name must not begin
-+with a period.
-                                                                                 
- If the \-\-lsbsysinit option is given, then the names must not end
- in .dpkg\-old  or .dpkg\-dist or .dpkg\-new or .dpkg\-tmp, and must
---- debianutils-2.28.2/run-parts.c
-+++ debianutils-2.28.2/run-parts.c
-@@ -494,7 +494,7 @@ regex_compile_pattern (void)
-                     != 0)
-             pt_regex = &tradre;
- 
--    } else if ( (err = regcomp(&classicalre, "^[a-zA-Z0-9_-]+$",
-+    } else if ( (err = regcomp(&classicalre, "^[a-zA-Z0-9_-][a-zA-Z0-9._-]+$",
-                     REG_EXTENDED | REG_NOSUB)) != 0)
-         pt_regex = &classicalre;
- 
diff --git a/sys-apps/debianutils/files/debianutils-3.1.3-installkernel-symlinks.patch b/sys-apps/debianutils/files/debianutils-3.1.3-installkernel-symlinks.patch
deleted file mode 100644
index 4f1c31e..0000000
--- a/sys-apps/debianutils/files/debianutils-3.1.3-installkernel-symlinks.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/installkernel	2010-02-12 04:39:49.000000000 +0000
-+++ b/installkernel	2010-02-12 05:38:40.000000000 +0000
-@@ -41,11 +41,7 @@
- 
-   cat "$2" > "$dir/$1-$ver"
- 
--  # This section is for backwards compatibility only
-   if test -f "$dir/$1" ; then
--    # The presence of "$dir/$1" is unusual in modern intallations, and
--    # the results are mostly unused.  So only recreate them if they
--    # already existed.
-     if test -L "$dir/$1" ; then
-         # If we were using links, continue to use links, updating if
-         # we need to.
-@@ -55,12 +51,12 @@
-         else
-             mv "$dir/$1" "$dir/$1.old"
-         fi
--        ln -sf "$1-$ver" "$dir/$1"
-     else                        # No links
-         mv "$dir/$1" "$dir/$1.old"
--        cat "$2" > "$dir/$1"
-     fi
-   fi
-+
-+  ln -sf "$1-$ver" "$dir/$1"
- }
- 
- if [ "$(basename $img)" = "vmlinux" ] ; then
diff --git a/sys-apps/debianutils/metadata.xml b/sys-apps/debianutils/metadata.xml
deleted file mode 100644
index 96a2d58..0000000
--- a/sys-apps/debianutils/metadata.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>base-system</herd>
-</pkgmetadata>
diff --git a/sys-apps/em100/em100-0.0.1-r57.ebuild b/sys-apps/em100/em100-0.0.1-r57.ebuild
deleted file mode 100644
index 5b4ae7f..0000000
--- a/sys-apps/em100/em100-0.0.1-r57.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI="4"
-CROS_WORKON_COMMIT="8db88b96db1eec54ab8405e1a0362071bd406996"
-CROS_WORKON_TREE="45851aa24cb1b0ab35bc50902890c781602a2d54"
-CROS_WORKON_PROJECT="chromiumos/third_party/em100"
-
-inherit cros-workon toolchain-funcs
-
-DESCRIPTION="A simple utility to control a Dediprog EM100pro from Linux"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-
-DEPEND="virtual/libusb:1"
-RDEPEND="${DEPEND}"
-
-src_compile() {
-	tc-export CC PKG_CONFIG
-
-	emake
-}
-
-src_install() {
-	dosbin em100
-}
diff --git a/sys-apps/em100/em100-0.0.1-r59.ebuild b/sys-apps/em100/em100-0.0.1-r59.ebuild
new file mode 100644
index 0000000..291bc82
--- /dev/null
+++ b/sys-apps/em100/em100-0.0.1-r59.ebuild
@@ -0,0 +1,30 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="4"
+CROS_WORKON_COMMIT="ae88135ac22f2255299fbf15ff28186458afe4e1"
+CROS_WORKON_TREE="2f879048ca8d17db5d58aae8a69a130b17564b56"
+CROS_WORKON_PROJECT="chromiumos/third_party/em100"
+
+inherit cros-workon toolchain-funcs
+
+DESCRIPTION="A simple utility to control a Dediprog EM100pro from Linux"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+DEPEND="virtual/libusb:1"
+RDEPEND="${DEPEND}"
+
+src_compile() {
+	tc-export CC PKG_CONFIG
+
+	emake
+}
+
+src_install() {
+	dosbin em100
+}
diff --git a/sys-apps/fitpicker/fitpicker-0.0.1-r2083.ebuild b/sys-apps/fitpicker/fitpicker-0.0.1-r2083.ebuild
deleted file mode 100644
index 074d721..0000000
--- a/sys-apps/fitpicker/fitpicker-0.0.1-r2083.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="b05e4a6b92b2cfe608b6cd8d5d37168680fc080e"
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "4ece3f8f3d85b6237e276452a02c7c6044463211" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
-CROS_WORKON_PROJECT="chromiumos/platform2"
-CROS_WORKON_LOCALNAME="../platform2"
-CROS_WORKON_DESTDIR="${S}"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_SUBTREE="common-mk fitpicker .gn"
-
-PLATFORM_SUBDIR="fitpicker"
-
-inherit cros-workon platform
-
-DESCRIPTION="Utility for picking a kernel/device tree from a FIT image."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/fitpicker/"
-SRC_URI=""
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND=">=sys-apps/dtc-1.4.1"
-DEPEND="${RDEPEND}"
-
-src_install() {
-	dobin "${OUT}"/fitpicker
-}
diff --git a/sys-apps/fitpicker/fitpicker-0.0.1-r2108.ebuild b/sys-apps/fitpicker/fitpicker-0.0.1-r2108.ebuild
new file mode 100644
index 0000000..ca7bea8
--- /dev/null
+++ b/sys-apps/fitpicker/fitpicker-0.0.1-r2108.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="f34cf3a06f7b17b7829185630d886a5d9d3f0e75"
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "4ece3f8f3d85b6237e276452a02c7c6044463211" "e7dba8c91c1f3257c34d4a7ffff0ea2537aeb6bb")
+CROS_WORKON_PROJECT="chromiumos/platform2"
+CROS_WORKON_LOCALNAME="../platform2"
+CROS_WORKON_DESTDIR="${S}"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_SUBTREE="common-mk fitpicker .gn"
+
+PLATFORM_SUBDIR="fitpicker"
+
+inherit cros-workon platform
+
+DESCRIPTION="Utility for picking a kernel/device tree from a FIT image."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform2/+/master/fitpicker/"
+SRC_URI=""
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND=">=sys-apps/dtc-1.4.1"
+DEPEND="${RDEPEND}"
+
+src_install() {
+	dobin "${OUT}"/fitpicker
+}
diff --git a/sys-apps/flashrom-tester/flashrom-tester-1.6.0-r56.ebuild b/sys-apps/flashrom-tester/flashrom-tester-1.6.0-r56.ebuild
deleted file mode 100644
index f4e2590..0000000
--- a/sys-apps/flashrom-tester/flashrom-tester-1.6.0-r56.ebuild
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="0387c261f0fe0dbffa2d126ad09b5068b6a4ca4e"
-CROS_WORKON_TREE="7f2a6742d55adf60b4a1cb46f316e30050c1a59c"
-CROS_RUST_SUBDIR="util/flashrom_tester"
-
-CROS_WORKON_USE_VCSID="1"
-CROS_WORKON_PROJECT="chromiumos/third_party/flashrom"
-CROS_WORKON_LOCALNAME="flashrom"
-CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
-
-inherit cros-workon cros-rust
-
-DESCRIPTION="Utility for AVL qualification of SPI flash chips with flashrom"
-HOMEPAGE="https://www.flashrom.org/Flashrom"
-
-LICENSE="GPL-2"
-KEYWORDS="*"
-DEPEND=">=dev-rust/rand-0.6.4:=
-	=dev-rust/chrono-0.4*:=
-	=dev-rust/clap-2.33*:=
-	=dev-rust/libc-0.2*:=
-	=dev-rust/log-0.4*:=
-	=dev-rust/built-0.3*:=
-	=dev-rust/sys-info-0.5.7:=
-	=dev-rust/serde_json-1*:=
-"
-
-RDEPEND="!<=sys-apps/flashrom-tester-1.60-r41"
-
-src_compile() {
-	# Override HOST_CFLAGS so that build dependencies use the correct
-	# flags on cross-compiled targets using cc-rs.
-	tc-export_build_env
-	export HOST_CFLAGS="${BUILD_CFLAGS}"
-	ecargo_build
-	if use test; then
-		ecargo_test --no-run --workspace
-	fi
-}
-
-src_test() {
-	cros-rust_src_test --workspace
-}
-
-src_install() {
-	dobin "$(cros-rust_get_build_dir)/flashrom_tester"
-}
diff --git a/sys-apps/flashrom-tester/flashrom-tester-1.6.0-r59.ebuild b/sys-apps/flashrom-tester/flashrom-tester-1.6.0-r59.ebuild
new file mode 100644
index 0000000..1f402af
--- /dev/null
+++ b/sys-apps/flashrom-tester/flashrom-tester-1.6.0-r59.ebuild
@@ -0,0 +1,52 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="99b95501ed31eee1b73a45018bf70aa1b41ade9a"
+CROS_WORKON_TREE="0b4dc5d2acaf537f04737355784e7261d7031408"
+CROS_RUST_SUBDIR="util/flashrom_tester"
+
+CROS_WORKON_USE_VCSID="1"
+CROS_WORKON_PROJECT="chromiumos/third_party/flashrom"
+CROS_WORKON_EGIT_BRANCH="master"
+CROS_WORKON_LOCALNAME="flashrom"
+CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
+
+inherit cros-workon cros-rust
+
+DESCRIPTION="Utility for AVL qualification of SPI flash chips with flashrom"
+HOMEPAGE="https://www.flashrom.org/Flashrom"
+
+LICENSE="GPL-2"
+KEYWORDS="*"
+DEPEND=">=dev-rust/rand-0.6.4:=
+	=dev-rust/chrono-0.4*:=
+	=dev-rust/clap-2.33*:=
+	=dev-rust/libc-0.2*:=
+	=dev-rust/log-0.4*:=
+	=dev-rust/built-0.3*:=
+	=dev-rust/sys-info-0.5.7:=
+	=dev-rust/serde_json-1*:=
+"
+
+RDEPEND="!<=sys-apps/flashrom-tester-1.60-r41"
+
+src_compile() {
+	# Override HOST_CFLAGS so that build dependencies use the correct
+	# flags on cross-compiled targets using cc-rs.
+	tc-export_build_env
+	export HOST_CFLAGS="${BUILD_CFLAGS}"
+	ecargo_build
+	if use test; then
+		ecargo_test --no-run --workspace
+	fi
+}
+
+src_test() {
+	cros-rust_src_test --workspace
+}
+
+src_install() {
+	dobin "$(cros-rust_get_build_dir)/flashrom_tester"
+}
diff --git a/sys-apps/flashrom-tester/flashrom-tester-9999.ebuild b/sys-apps/flashrom-tester/flashrom-tester-9999.ebuild
index 2a19213..db7cbdd 100644
--- a/sys-apps/flashrom-tester/flashrom-tester-9999.ebuild
+++ b/sys-apps/flashrom-tester/flashrom-tester-9999.ebuild
@@ -7,6 +7,7 @@
 
 CROS_WORKON_USE_VCSID="1"
 CROS_WORKON_PROJECT="chromiumos/third_party/flashrom"
+CROS_WORKON_EGIT_BRANCH="master"
 CROS_WORKON_LOCALNAME="flashrom"
 CROS_WORKON_SUBTREE="${CROS_RUST_SUBDIR}"
 
diff --git a/sys-apps/flashrom/flashrom-0.9.9-r1129.ebuild b/sys-apps/flashrom/flashrom-0.9.9-r1129.ebuild
deleted file mode 100644
index 2e35563..0000000
--- a/sys-apps/flashrom/flashrom-0.9.9-r1129.ebuild
+++ /dev/null
@@ -1,131 +0,0 @@
-# Copyright 1999-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/flashrom/flashrom-0.9.4.ebuild,v 1.5 2011/09/20 16:03:21 nativemad Exp $
-
-EAPI=7
-CROS_WORKON_COMMIT="b15d7cf65854dd6e0846d04e5757ecf22802ee7b"
-CROS_WORKON_TREE="47097697c13a31a043e4b85fdfdb36e6c194bfca"
-CROS_WORKON_PROJECT="chromiumos/third_party/flashrom"
-
-inherit cros-workon toolchain-funcs
-
-DESCRIPTION="Utility for reading, writing, erasing and verifying flash ROM chips"
-HOMEPAGE="https://flashrom.org/"
-#SRC_URI="http://download.flashrom.org/releases/${P}.tar.bz2"
-SRC_URI=""
-
-LICENSE="GPL-2"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="
-	atahpt
-	+bitbang_spi
-	+buspirate_spi
-	dediprog
-	+drkaiser
-	+dummy
-	+fdtmap
-	+ft2232_spi
-	+gfxnvidia
-	+internal
-	+linux_mtd
-	+linux_spi
-	+lspcon_i2c_spi
-	+nic3com
-	+nicintel
-	+nicintel_spi
-	+nicnatsemi
-	+nicrealtek
-	+ogp_spi
-	+raiden_debug_spi
-	+rayer_spi
-	+realtek_mst_i2c_spi
-	+satasii
-	+satamv
-	+serprog static
-	+wiki
-"
-
-LIB_DEPEND="
-	atahpt? ( sys-apps/pciutils[static-libs(+)] )
-	dediprog? ( virtual/libusb:1[static-libs(+)] )
-	drkaiser? ( sys-apps/pciutils[static-libs(+)] )
-	fdtmap? ( sys-apps/dtc[static-libs(+)] )
-	ft2232_spi? ( dev-embedded/libftdi:=[static-libs(+)] )
-	gfxnvidia? ( sys-apps/pciutils[static-libs(+)] )
-	internal? ( sys-apps/pciutils[static-libs(+)] )
-	nic3com? ( sys-apps/pciutils[static-libs(+)] )
-	nicintel_spi? ( sys-apps/pciutils[static-libs(+)] )
-	nicintel? ( sys-apps/pciutils[static-libs(+)] )
-	nicnatsemi? ( sys-apps/pciutils[static-libs(+)] )
-	nicrealtek? ( sys-apps/pciutils[static-libs(+)] )
-	raiden_debug_spi? ( virtual/libusb:1[static-libs(+)] )
-	ogp_spi? ( sys-apps/pciutils[static-libs(+)] )
-	rayer_spi? ( sys-apps/pciutils[static-libs(+)] )
-	satamv? ( sys-apps/pciutils[static-libs(+)] )
-	satasii? ( sys-apps/pciutils[static-libs(+)] )
-"
-RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs(+)]} )"
-DEPEND="${RDEPEND}
-	static? ( ${LIB_DEPEND} )"
-RDEPEND+=" internal? ( sys-apps/dmidecode )"
-
-BDEPEND="sys-apps/diffutils"
-
-_flashrom_enable() {
-	local c="CONFIG_${2:-$(echo $1 | tr [:lower:] [:upper:])}"
-	args+=" $c=$(usex $1 yes no)"
-}
-flashrom_enable() {
-	local u
-	for u in "$@" ; do _flashrom_enable $u ; done
-}
-
-src_compile() {
-	local progs=0
-	local args=""
-
-	# Programmer
-	flashrom_enable \
-		atahpt bitbang_spi buspirate_spi dediprog drkaiser fdtmap \
-		ft2232_spi gfxnvidia linux_mtd linux_spi lspcon_i2c_spi \
-		nic3com nicintel nicintel_spi nicnatsemi nicrealtek ogp_spi \
-		raiden_debug_spi rayer_spi realtek_mst_i2c_spi satasii satamv \
-		serprog internal dummy
-	_flashrom_enable wiki PRINT_WIKI
-
-	# You have to specify at least one programmer, and if you specify more than
-	# one programmer you have to include either dummy or internal in the list.
-	for prog in ${IUSE//[+-]} ; do
-		case ${prog} in
-			internal|dummy|wiki) continue ;;
-		esac
-
-		use ${prog} && : $(( progs++ ))
-	done
-	if [[ ${progs} -ne 1 ]] ; then
-		if ! use internal && ! use dummy ; then
-			ewarn "You have to specify at least one programmer, and if you specify"
-			ewarn "more than one programmer, you have to enable either dummy or"
-			ewarn "internal as well.  'internal' will be the default now."
-			args+=" CONFIG_INTERNAL=yes"
-		fi
-	fi
-
-	args+=" CONFIG_DEFAULT_PROGRAMMER=PROGRAMMER_INTERNAL"
-
-	# WARNERROR=no, bug 347879
-	# FIXME(dhendrix): Actually, we want -Werror for CrOS.
-	tc-export AR CC PKG_CONFIG RANLIB
-	# emake WARNERROR=no ${args}	# upstream gentoo
-
-	_flashrom_enable static STATIC
-	emake ${args}
-}
-
-src_install() {
-	dosbin flashrom
-	doman flashrom.8
-	doheader libflashrom.h
-	dodoc README.chromiumos Documentation/*.txt
-}
diff --git a/sys-apps/flashrom/flashrom-0.9.9-r1244.ebuild b/sys-apps/flashrom/flashrom-0.9.9-r1244.ebuild
new file mode 100644
index 0000000..c1745e3
--- /dev/null
+++ b/sys-apps/flashrom/flashrom-0.9.9-r1244.ebuild
@@ -0,0 +1,164 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/flashrom/flashrom-0.9.4.ebuild,v 1.5 2011/09/20 16:03:21 nativemad Exp $
+
+EAPI=7
+CROS_WORKON_COMMIT="2a82136462df1924f52d6e2efea5cb8844edbb73"
+CROS_WORKON_TREE="6b9f4673e9d065a9f4cad040ace211b94d9e7bef"
+CROS_WORKON_PROJECT="chromiumos/third_party/flashrom"
+CROS_WORKON_EGIT_BRANCH="master"
+
+inherit cros-workon toolchain-funcs meson
+
+DESCRIPTION="Utility for reading, writing, erasing and verifying flash ROM chips"
+HOMEPAGE="https://flashrom.org/"
+#SRC_URI="http://download.flashrom.org/releases/${P}.tar.bz2"
+SRC_URI=""
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="
+	atahpt
+	atapromise
+	+atavia
+	+buspirate_spi
+	+ch341a_spi
+	dediprog
+	+developerbox_spi
+	+digilent_spi
+	+drkaiser
+	+dummy
+	ene_lpc
+	+ft2232_spi
+	+gfxnvidia
+	+internal
+	+it8212
+	jlink_spi
+	+linux_mtd
+	+linux_spi
+	+lspcon_i2c_spi
+	mec1308
+	mstarddc_spi
+	+nic3com
+	+nicintel
+	+nicintel_eeprom
+	+nicintel_spi
+	+nicnatsemi
+	+nicrealtek
+	+ogp_spi
+	+pickit2_spi
+	+pony_spi
+	+raiden_debug_spi
+	+rayer_spi
+	+realtek_mst_i2c_spi
+	+satasii
+	+satamv
+	+serprog static
+	+stlinkv3_spi
+	test
+	+usbblaster_spi
+	+wiki
+"
+
+LIB_DEPEND="
+	atahpt? ( sys-apps/pciutils[static-libs(+)] )
+	atapromise? ( sys-apps/pciutils[static-libs(+)] )
+	atavia? ( sys-apps/pciutils[static-libs(+)] )
+	ch341a_spi? ( virtual/libusb:1[static-libs(+)] )
+	dediprog? ( virtual/libusb:1[static-libs(+)] )
+	developerbox_spi? ( virtual/libusb:1[static-libs(+)] )
+	digilent_spi? ( virtual/libusb:1[static-libs(+)] )
+	drkaiser? ( sys-apps/pciutils[static-libs(+)] )
+	ft2232_spi? ( dev-embedded/libftdi:=[static-libs(+)] )
+	gfxnvidia? ( sys-apps/pciutils[static-libs(+)] )
+	internal? ( sys-apps/pciutils[static-libs(+)] )
+	it8212? ( sys-apps/pciutils[static-libs(+)] )
+	jlink_spi? ( dev-embedded/libjaylink[static-libs(+)] )
+	nic3com? ( sys-apps/pciutils[static-libs(+)] )
+	nicintel_eeprom? ( sys-apps/pciutils[static-libs(+)] )
+	nicintel_spi? ( sys-apps/pciutils[static-libs(+)] )
+	nicintel? ( sys-apps/pciutils[static-libs(+)] )
+	nicnatsemi? ( sys-apps/pciutils[static-libs(+)] )
+	nicrealtek? ( sys-apps/pciutils[static-libs(+)] )
+	raiden_debug_spi? ( virtual/libusb:1[static-libs(+)] )
+	ogp_spi? ( sys-apps/pciutils[static-libs(+)] )
+	pickit2_spi? ( virtual/libusb:0[static-libs(+)] )
+	rayer_spi? ( sys-apps/pciutils[static-libs(+)] )
+	satamv? ( sys-apps/pciutils[static-libs(+)] )
+	satasii? ( sys-apps/pciutils[static-libs(+)] )
+	stlinkv3_spi? ( virtual/libusb:1[static-libs(+)] )
+	usbblaster_spi? ( dev-embedded/libftdi:1=[static-libs(+)] )
+"
+RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs(+)]} )"
+DEPEND="${RDEPEND}
+	static? ( ${LIB_DEPEND} )
+	test? ( dev-util/cmocka )"
+RDEPEND+=" internal? ( sys-apps/dmidecode )"
+
+BDEPEND="sys-apps/diffutils"
+
+DOCS=( README.chromiumos Documentation/ )
+
+src_prepare() {
+	default
+	if use internal; then
+		# Set CONFIG_DEFAULT_PROGRAMMER to PROGRAMMER_INTERNAL
+		sed -e "s/PROGRAMMER_INVALID/PROGRAMMER_INTERNAL/" \
+			-i meson.build || die
+	fi
+}
+
+src_configure() {
+	local emesonargs=(
+		-Ddefault_library="$(usex static static shared)"
+		$(meson_use atahpt config_atahpt)
+		$(meson_use atapromise config_atapromise)
+		$(meson_use atavia config_atavia)
+		$(meson_use buspirate_spi config_buspirate_spi)
+		$(meson_use ch341a_spi config_ch341a_spi)
+		$(meson_use dediprog config_dediprog)
+		$(meson_use developerbox_spi config_developerbox_spi)
+		$(meson_use digilent_spi config_digilent_spi)
+		$(meson_use drkaiser config_drkaiser)
+		$(meson_use dummy config_dummy)
+		$(meson_use ene_lpc config_ene_lpc)
+		$(meson_use ft2232_spi config_ft2232_spi)
+		$(meson_use gfxnvidia config_gfxnvidia)
+		$(meson_use internal config_internal)
+		$(meson_use it8212 config_it8212)
+		$(meson_use jlink_spi config_jlink_spi)
+		$(meson_use linux_mtd config_linux_mtd)
+		$(meson_use linux_spi config_linux_spi)
+		$(meson_use lspcon_i2c_spi config_lspcon_i2c_spi)
+		$(meson_use mec1308 config_mec1308)
+		$(meson_use mstarddc_spi config_mstarddc_spi)
+		$(meson_use nic3com config_nic3com)
+		$(meson_use nicintel_eeprom config_nicintel_eeprom)
+		$(meson_use nicintel_spi config_nicintel_spi)
+		$(meson_use nicintel config_nicintel)
+		$(meson_use nicnatsemi config_nicnatsemi)
+		$(meson_use nicrealtek config_nicrealtek)
+		$(meson_use ogp_spi config_ogp_spi)
+		$(meson_use pickit2_spi config_pickit2_spi)
+		$(meson_use pony_spi config_pony_spi)
+		$(meson_use raiden_debug_spi config_raiden_debug_spi)
+		$(meson_use rayer_spi config_rayer_spi)
+		$(meson_use realtek_mst_i2c_spi config_realtek_mst_i2c_spi)
+		$(meson_use satamv config_satamv)
+		$(meson_use satasii config_satasii)
+		$(meson_use serprog config_serprog)
+		$(meson_use stlinkv3_spi config_stlinkv3_spi)
+		$(meson_use usbblaster_spi config_usbblaster_spi)
+		$(meson_use wiki print_wiki)
+	)
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+}
+
+src_test() {
+	meson_src_test
+}
diff --git a/sys-apps/flashrom/flashrom-9999.ebuild b/sys-apps/flashrom/flashrom-9999.ebuild
index 544a9b6..42f1823 100644
--- a/sys-apps/flashrom/flashrom-9999.ebuild
+++ b/sys-apps/flashrom/flashrom-9999.ebuild
@@ -4,8 +4,9 @@
 
 EAPI=7
 CROS_WORKON_PROJECT="chromiumos/third_party/flashrom"
+CROS_WORKON_EGIT_BRANCH="master"
 
-inherit cros-workon toolchain-funcs
+inherit cros-workon toolchain-funcs meson
 
 DESCRIPTION="Utility for reading, writing, erasing and verifying flash ROM chips"
 HOMEPAGE="https://flashrom.org/"
@@ -17,113 +18,145 @@
 KEYWORDS="~*"
 IUSE="
 	atahpt
-	+bitbang_spi
+	atapromise
+	+atavia
 	+buspirate_spi
+	+ch341a_spi
 	dediprog
+	+developerbox_spi
+	+digilent_spi
 	+drkaiser
 	+dummy
-	+fdtmap
+	ene_lpc
 	+ft2232_spi
 	+gfxnvidia
 	+internal
+	+it8212
+	jlink_spi
 	+linux_mtd
 	+linux_spi
 	+lspcon_i2c_spi
+	mec1308
+	mstarddc_spi
 	+nic3com
 	+nicintel
+	+nicintel_eeprom
 	+nicintel_spi
 	+nicnatsemi
 	+nicrealtek
 	+ogp_spi
+	+pickit2_spi
+	+pony_spi
 	+raiden_debug_spi
 	+rayer_spi
 	+realtek_mst_i2c_spi
 	+satasii
 	+satamv
 	+serprog static
+	+stlinkv3_spi
+	test
+	+usbblaster_spi
 	+wiki
 "
 
 LIB_DEPEND="
 	atahpt? ( sys-apps/pciutils[static-libs(+)] )
+	atapromise? ( sys-apps/pciutils[static-libs(+)] )
+	atavia? ( sys-apps/pciutils[static-libs(+)] )
+	ch341a_spi? ( virtual/libusb:1[static-libs(+)] )
 	dediprog? ( virtual/libusb:1[static-libs(+)] )
+	developerbox_spi? ( virtual/libusb:1[static-libs(+)] )
+	digilent_spi? ( virtual/libusb:1[static-libs(+)] )
 	drkaiser? ( sys-apps/pciutils[static-libs(+)] )
-	fdtmap? ( sys-apps/dtc[static-libs(+)] )
 	ft2232_spi? ( dev-embedded/libftdi:=[static-libs(+)] )
 	gfxnvidia? ( sys-apps/pciutils[static-libs(+)] )
 	internal? ( sys-apps/pciutils[static-libs(+)] )
+	it8212? ( sys-apps/pciutils[static-libs(+)] )
+	jlink_spi? ( dev-embedded/libjaylink[static-libs(+)] )
 	nic3com? ( sys-apps/pciutils[static-libs(+)] )
+	nicintel_eeprom? ( sys-apps/pciutils[static-libs(+)] )
 	nicintel_spi? ( sys-apps/pciutils[static-libs(+)] )
 	nicintel? ( sys-apps/pciutils[static-libs(+)] )
 	nicnatsemi? ( sys-apps/pciutils[static-libs(+)] )
 	nicrealtek? ( sys-apps/pciutils[static-libs(+)] )
 	raiden_debug_spi? ( virtual/libusb:1[static-libs(+)] )
 	ogp_spi? ( sys-apps/pciutils[static-libs(+)] )
+	pickit2_spi? ( virtual/libusb:0[static-libs(+)] )
 	rayer_spi? ( sys-apps/pciutils[static-libs(+)] )
 	satamv? ( sys-apps/pciutils[static-libs(+)] )
 	satasii? ( sys-apps/pciutils[static-libs(+)] )
+	stlinkv3_spi? ( virtual/libusb:1[static-libs(+)] )
+	usbblaster_spi? ( dev-embedded/libftdi:1=[static-libs(+)] )
 "
 RDEPEND="!static? ( ${LIB_DEPEND//\[static-libs(+)]} )"
 DEPEND="${RDEPEND}
-	static? ( ${LIB_DEPEND} )"
+	static? ( ${LIB_DEPEND} )
+	test? ( dev-util/cmocka )"
 RDEPEND+=" internal? ( sys-apps/dmidecode )"
 
 BDEPEND="sys-apps/diffutils"
 
-_flashrom_enable() {
-	local c="CONFIG_${2:-$(echo $1 | tr [:lower:] [:upper:])}"
-	args+=" $c=$(usex $1 yes no)"
-}
-flashrom_enable() {
-	local u
-	for u in "$@" ; do _flashrom_enable $u ; done
-}
+DOCS=( README.chromiumos Documentation/ )
 
-src_compile() {
-	local progs=0
-	local args=""
-
-	# Programmer
-	flashrom_enable \
-		atahpt bitbang_spi buspirate_spi dediprog drkaiser fdtmap \
-		ft2232_spi gfxnvidia linux_mtd linux_spi lspcon_i2c_spi \
-		nic3com nicintel nicintel_spi nicnatsemi nicrealtek ogp_spi \
-		raiden_debug_spi rayer_spi realtek_mst_i2c_spi satasii satamv \
-		serprog internal dummy
-	_flashrom_enable wiki PRINT_WIKI
-
-	# You have to specify at least one programmer, and if you specify more than
-	# one programmer you have to include either dummy or internal in the list.
-	for prog in ${IUSE//[+-]} ; do
-		case ${prog} in
-			internal|dummy|wiki) continue ;;
-		esac
-
-		use ${prog} && : $(( progs++ ))
-	done
-	if [[ ${progs} -ne 1 ]] ; then
-		if ! use internal && ! use dummy ; then
-			ewarn "You have to specify at least one programmer, and if you specify"
-			ewarn "more than one programmer, you have to enable either dummy or"
-			ewarn "internal as well.  'internal' will be the default now."
-			args+=" CONFIG_INTERNAL=yes"
-		fi
+src_prepare() {
+	default
+	if use internal; then
+		# Set CONFIG_DEFAULT_PROGRAMMER to PROGRAMMER_INTERNAL
+		sed -e "s/PROGRAMMER_INVALID/PROGRAMMER_INTERNAL/" \
+			-i meson.build || die
 	fi
+}
 
-	args+=" CONFIG_DEFAULT_PROGRAMMER=PROGRAMMER_INTERNAL"
-
-	# WARNERROR=no, bug 347879
-	# FIXME(dhendrix): Actually, we want -Werror for CrOS.
-	tc-export AR CC PKG_CONFIG RANLIB
-	# emake WARNERROR=no ${args}	# upstream gentoo
-
-	_flashrom_enable static STATIC
-	emake ${args}
+src_configure() {
+	local emesonargs=(
+		-Ddefault_library="$(usex static static shared)"
+		$(meson_use atahpt config_atahpt)
+		$(meson_use atapromise config_atapromise)
+		$(meson_use atavia config_atavia)
+		$(meson_use buspirate_spi config_buspirate_spi)
+		$(meson_use ch341a_spi config_ch341a_spi)
+		$(meson_use dediprog config_dediprog)
+		$(meson_use developerbox_spi config_developerbox_spi)
+		$(meson_use digilent_spi config_digilent_spi)
+		$(meson_use drkaiser config_drkaiser)
+		$(meson_use dummy config_dummy)
+		$(meson_use ene_lpc config_ene_lpc)
+		$(meson_use ft2232_spi config_ft2232_spi)
+		$(meson_use gfxnvidia config_gfxnvidia)
+		$(meson_use internal config_internal)
+		$(meson_use it8212 config_it8212)
+		$(meson_use jlink_spi config_jlink_spi)
+		$(meson_use linux_mtd config_linux_mtd)
+		$(meson_use linux_spi config_linux_spi)
+		$(meson_use lspcon_i2c_spi config_lspcon_i2c_spi)
+		$(meson_use mec1308 config_mec1308)
+		$(meson_use mstarddc_spi config_mstarddc_spi)
+		$(meson_use nic3com config_nic3com)
+		$(meson_use nicintel_eeprom config_nicintel_eeprom)
+		$(meson_use nicintel_spi config_nicintel_spi)
+		$(meson_use nicintel config_nicintel)
+		$(meson_use nicnatsemi config_nicnatsemi)
+		$(meson_use nicrealtek config_nicrealtek)
+		$(meson_use ogp_spi config_ogp_spi)
+		$(meson_use pickit2_spi config_pickit2_spi)
+		$(meson_use pony_spi config_pony_spi)
+		$(meson_use raiden_debug_spi config_raiden_debug_spi)
+		$(meson_use rayer_spi config_rayer_spi)
+		$(meson_use realtek_mst_i2c_spi config_realtek_mst_i2c_spi)
+		$(meson_use satamv config_satamv)
+		$(meson_use satasii config_satasii)
+		$(meson_use serprog config_serprog)
+		$(meson_use stlinkv3_spi config_stlinkv3_spi)
+		$(meson_use usbblaster_spi config_usbblaster_spi)
+		$(meson_use wiki print_wiki)
+	)
+	meson_src_configure
 }
 
 src_install() {
-	dosbin flashrom
-	doman flashrom.8
-	doheader libflashrom.h
-	dodoc README.chromiumos Documentation/*.txt
+	meson_src_install
+}
+
+src_test() {
+	meson_src_test
 }
diff --git a/sys-apps/frecon-lite/frecon-lite-0.0.1-r69.ebuild b/sys-apps/frecon-lite/frecon-lite-0.0.1-r69.ebuild
deleted file mode 100644
index 51997e4..0000000
--- a/sys-apps/frecon-lite/frecon-lite-0.0.1-r69.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="93af352f622ac3302a128a36576636d97e1ec217"
-CROS_WORKON_TREE="3d33111677bfa34cd2094b48c070ab5e0ddab1e7"
-CROS_WORKON_PROJECT="chromiumos/platform/frecon"
-CROS_WORKON_LOCALNAME="../platform/frecon"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-
-inherit cros-sanitizers cros-workon cros-common.mk
-
-DESCRIPTION="Chrome OS KMS console (without DBUS/UDEV support)"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/frecon"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="-asan"
-
-BDEPEND="virtual/pkgconfig"
-
-COMMON_DEPEND="media-libs/libpng:0=
-	sys-apps/libtsm:="
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	media-sound/adhd:=
-	x11-libs/libdrm:="
-
-src_configure() {
-	export FRECON_LITE=1
-	sanitizers-setup-env
-	cros-common.mk_src_configure
-}
diff --git a/sys-apps/frecon-lite/frecon-lite-0.0.1-r70.ebuild b/sys-apps/frecon-lite/frecon-lite-0.0.1-r70.ebuild
new file mode 100644
index 0000000..fd8066f
--- /dev/null
+++ b/sys-apps/frecon-lite/frecon-lite-0.0.1-r70.ebuild
@@ -0,0 +1,37 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="db3923aa9569c82277f8756af3ba1c2f2b049330"
+CROS_WORKON_TREE="a96a7377abfe6ed34ede08a29f37699b83e55684"
+CROS_WORKON_PROJECT="chromiumos/platform/frecon"
+CROS_WORKON_LOCALNAME="../platform/frecon"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+inherit cros-sanitizers cros-workon cros-common.mk
+
+DESCRIPTION="Chrome OS KMS console (without DBUS/UDEV support)"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/frecon"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="-asan"
+
+BDEPEND="virtual/pkgconfig"
+
+COMMON_DEPEND="media-libs/libpng:0=
+	sys-apps/libtsm:="
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	media-sound/adhd:=
+	x11-libs/libdrm:="
+
+src_configure() {
+	export FRECON_LITE=1
+	sanitizers-setup-env
+	cros-common.mk_src_configure
+}
diff --git a/sys-apps/frecon/frecon-0.0.1-r174.ebuild b/sys-apps/frecon/frecon-0.0.1-r174.ebuild
deleted file mode 100644
index 6537642..0000000
--- a/sys-apps/frecon/frecon-0.0.1-r174.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="93af352f622ac3302a128a36576636d97e1ec217"
-CROS_WORKON_TREE="3d33111677bfa34cd2094b48c070ab5e0ddab1e7"
-CROS_WORKON_PROJECT="chromiumos/platform/frecon"
-CROS_WORKON_LOCALNAME="../platform/frecon"
-CROS_WORKON_OUTOFTREE_BUILD=1
-CROS_WORKON_INCREMENTAL_BUILD=1
-
-inherit cros-sanitizers cros-workon cros-common.mk
-
-DESCRIPTION="Chrome OS KMS console"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/frecon"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="-asan"
-
-BDEPEND="virtual/pkgconfig"
-
-COMMON_DEPEND="virtual/udev
-	sys-apps/dbus:=
-	media-libs/libpng:0=
-	sys-apps/libtsm:=
-	x11-libs/libdrm:="
-
-RDEPEND="${COMMON_DEPEND}"
-
-DEPEND="${COMMON_DEPEND}
-	media-sound/adhd:=
-"
-
-src_configure() {
-	sanitizers-setup-env
-	cros-common.mk_src_configure
-}
-
-src_install() {
-	insinto /etc/dbus-1/system.d
-	doins dbus/org.chromium.frecon.conf
-	default
-}
diff --git a/sys-apps/frecon/frecon-0.0.1-r175.ebuild b/sys-apps/frecon/frecon-0.0.1-r175.ebuild
new file mode 100644
index 0000000..9cccc2f
--- /dev/null
+++ b/sys-apps/frecon/frecon-0.0.1-r175.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="db3923aa9569c82277f8756af3ba1c2f2b049330"
+CROS_WORKON_TREE="a96a7377abfe6ed34ede08a29f37699b83e55684"
+CROS_WORKON_PROJECT="chromiumos/platform/frecon"
+CROS_WORKON_LOCALNAME="../platform/frecon"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_INCREMENTAL_BUILD=1
+
+inherit cros-sanitizers cros-workon cros-common.mk
+
+DESCRIPTION="Chrome OS KMS console"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/frecon"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="-asan"
+
+BDEPEND="virtual/pkgconfig"
+
+COMMON_DEPEND="virtual/udev
+	sys-apps/dbus:=
+	media-libs/libpng:0=
+	sys-apps/libtsm:=
+	x11-libs/libdrm:="
+
+RDEPEND="${COMMON_DEPEND}"
+
+DEPEND="${COMMON_DEPEND}
+	media-sound/adhd:=
+"
+
+src_configure() {
+	sanitizers-setup-env
+	cros-common.mk_src_configure
+}
+
+src_install() {
+	insinto /etc/dbus-1/system.d
+	doins dbus/org.chromium.frecon.conf
+	default
+}
diff --git a/sys-apps/fwupd/OWNERS b/sys-apps/fwupd/OWNERS
new file mode 100644
index 0000000..47154ab
--- /dev/null
+++ b/sys-apps/fwupd/OWNERS
@@ -0,0 +1,5 @@
+# This does not point to fwupd repository's OWNERS file due to branch
+# missmatch. chromiumos-overlay is on "main" branch, find owners would
+# look at fwupd's main, but that doesn't exist.
+campello@chromium.org
+bleung@chromium.org
diff --git a/sys-apps/fwupd/README.md b/sys-apps/fwupd/README.md
new file mode 100644
index 0000000..448b2d4
--- /dev/null
+++ b/sys-apps/fwupd/README.md
@@ -0,0 +1,10 @@
+This package makes use of cros-workon eclass to maintain a -9999 and a release
+version of the ebuild file.
+
+In addition, there is a -9998.ebuild version that points directly to the
+upstream repository hosted in GitHub. This version is masked on the base
+profile (and hence on every other profile that inherits from base) so that it
+cannot be used to build any image. The -9998 version is then unmasked on a
+specific profile (e.g., fwupd-upstream) for the amd64-generic board and it is
+used for continuous integration testing that is executed periodically by an
+informational builder.
diff --git a/sys-apps/fwupd/files/99-fwupd.rules b/sys-apps/fwupd/files/90-fwupd.rules
similarity index 100%
rename from sys-apps/fwupd/files/99-fwupd.rules
rename to sys-apps/fwupd/files/90-fwupd.rules
diff --git a/sys-apps/fwupd/files/fwupd-at-boot.sh b/sys-apps/fwupd/files/fwupd-at-boot.sh
index 89b3572..07b5e89 100755
--- a/sys-apps/fwupd/files/fwupd-at-boot.sh
+++ b/sys-apps/fwupd/files/fwupd-at-boot.sh
@@ -17,29 +17,46 @@
   fi
 
   local pending
-  pending="$(find /var/lib/fwupd/pending -type f -size -100c 2>/dev/null)"
+  read -ra pending < \
+    <(find /var/lib/fwupd/pending -type f -size -100c 2>/dev/null | xargs)
   if [ -z "${pending[*]}" ]; then
 	return "${ret}"
   fi
 
-  # Background process that shows boot alert.
-  chromeos-boot-alert update_fwupd_firmware &
-  local bg_pid=$!
-
-  # Give it a second for USB enumeration to detect devices.
-  sleep 1
+  # Show boot alert.
+  chromeos-boot-alert update_fwupd_firmware
 
   local i
+  # Give it time for enumeration to detect devices.
+  for i in "${pending[@]}"; do
+    local seconds=0
+    local plugins
+    plugins="$(cat "${i}")"
+
+    local p
+    for p in ${plugins}; do
+      case "${p}" in
+      # USB Peripherals
+      "ccgx"|"synaptics_cxaudio"|"synaptics_mst"|"vli")
+        seconds=2
+        ;;
+      # USB4/TBT Retimer
+      "thunderbolt")
+        udevadm trigger --action=add --settle --subsystem-match=platform
+        sleep 20 # (crrev.com/c/2670719)
+        break 3 # Don't consider other cases as this is max wait time
+      esac
+    done
+    sleep "${seconds}"
+  done
+
   for i in "${pending[@]}"; do
     # Trigger fwupdtool-update job, which blocks until the job completes.
     /sbin/initctl emit fwupdtool-update GUID="${i##*/}" \
-      PLUGIN="$(cat "${i}")" AT_BOOT="true" || ret=1
+      PLUGIN="$(cat "${i}")" AT_BOOT="true" USE_TOOL="true" || ret=1
     rm "${i}"
   done
 
-  # Kill the chromeos-boot-alert in the background process.
-  kill -9 "${bg_pid}"
-
   return "${ret}"
 }
 
diff --git a/sys-apps/fwupd/files/fwupd.conf b/sys-apps/fwupd/files/fwupd.conf
new file mode 100644
index 0000000..b6123ff
--- /dev/null
+++ b/sys-apps/fwupd/files/fwupd.conf
@@ -0,0 +1,43 @@
+# Copyright 2021 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.
+
+description    "Fwupd daemon"
+author         "chromium-os-dev@chromium.org"
+
+# The service is started via DBus activation.
+stop on stopping system-services
+respawn
+
+env CACHE_DIRECTORY="/var/cache/fwupd"
+
+pre-start script
+  mkdir -p /var/cache/fwupd /var/lib/fwupd
+  chown -R fwupd:fwupd /var/cache/fwupd /var/lib/fwupd
+
+  # Check if system-services is still running before starting.
+  # This is to prevent new dbus-activated instances from getting started once
+  # the system is beginning to shut down.
+  if ! initctl status system-services | grep -q running; then
+    logger -t "${UPSTART_JOB}" "ERROR: system services not running, quit."
+    stop
+    exit 0
+  fi
+end script
+
+script
+  # Need access to original network namespace for udev (no -e), which passes
+  # uevents via netlink socket.
+  # Need access to /proc, /sys, /dev to perform USB enumeration.
+  # Need access to /run/dbus for DBus communications.
+  exec minijail0 \
+    --uts -e -l -p -N \
+    -v -P /mnt/empty -b / -b /proc -t -r -b /dev,,1 -b /sys,,1 \
+    -k /var,/var,tmpfs -b /var/cache/fwupd,,1 -b /var/lib/fwupd,,1 \
+    -k run,/run,tmpfs -b /run/dbus -b /run/shill -u fwupd -g fwupd -G \
+    -- /usr/libexec/fwupd/fwupd
+end script
+
+# Wait for daemon to claim its D-Bus name before transitioning to started.
+post-start exec minijail0 -u fwupd -g fwupd /usr/bin/gdbus \
+    wait --system --timeout 15 org.freedesktop.fwupd
diff --git a/sys-apps/fwupd/files/fwupdtool-activate.conf b/sys-apps/fwupd/files/fwupdtool-activate.conf
index 33f2eb8..0425146 100644
--- a/sys-apps/fwupd/files/fwupdtool-activate.conf
+++ b/sys-apps/fwupd/files/fwupdtool-activate.conf
@@ -12,18 +12,11 @@
 start on stopping ui
 task
 
-pre-start script
-  mkdir -p /var/cache/fwupd /var/lib/fwupd
-  chown -R fwupd:fwupd /var/cache/fwupd /var/lib/fwupd
-end script
-
 script
   if [ -f /var/lib/fwupd/pending.db ]; then
     exec minijail0 \
-      --uts -e -l -p -N \
-      -v -P /mnt/empty -b / -b /proc -r -t -b /dev,,1 -k run,/run,tmpfs \
-      -k /var,/var,tmpfs -b /var/cache/fwupd,,1 -b /var/lib/fwupd,,1 \
-      -b /sys,,1 -u fwupd -g fwupd --add-suppl-group usb \
-      -- /usr/bin/fwupdtool activate 2>&1 | logger -t "${UPSTART_JOB}"
+      --profile=minimalistic-mountns --uts -e -l -p -N \
+      -k /run,/run,tmpfs -b /run/dbus -u fwupd -g fwupd \
+      -- /usr/bin/fwupdmgr activate 2>&1 | logger -t "${UPSTART_JOB}"
   fi
 end script
diff --git a/sys-apps/fwupd/files/fwupdtool-getdevices.conf b/sys-apps/fwupd/files/fwupdtool-getdevices.conf
deleted file mode 100644
index fa5cf41..0000000
--- a/sys-apps/fwupd/files/fwupdtool-getdevices.conf
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright 2019 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.
-
-description    "Gets devices' metadata using fwupdtool"
-author         "chromium-os-dev@chromium.org"
-
-# This job is started by udev via custom events.
-# Job duration is expected to be O(ms).
-start on fwupdtool-getdevices
-task
-
-pre-start script
-  mkdir -p /var/cache/fwupd /var/lib/fwupd
-  chown -R fwupd:fwupd /var/cache/fwupd /var/lib/fwupd
-end script
-
-script
-  exec minijail0 \
-    --uts -e -l -p -N \
-    -v -P /mnt/empty -b / -b /proc -r -t -b /dev,,1 -k run,/run,tmpfs \
-    -k /var,/var,tmpfs -b /var/cache/fwupd,,1 -b /var/lib/fwupd,,1 \
-    -b /sys -u fwupd -g fwupd --add-suppl-group usb --add-suppl-group i2c \
-    -- /usr/bin/fwupdtool get-devices --enable-json-state 2>&1 |
-    logger -t "${UPSTART_JOB}"
-end script
diff --git a/sys-apps/fwupd/files/fwupdtool-update.conf b/sys-apps/fwupd/files/fwupdtool-update.conf
index 3bdf960..4ff1b3b 100644
--- a/sys-apps/fwupd/files/fwupdtool-update.conf
+++ b/sys-apps/fwupd/files/fwupdtool-update.conf
@@ -17,25 +17,42 @@
 import PLUGIN
 # Are we running at boot time.
 import AT_BOOT
+# Update .cab file. Used to allow downgrades.
+import FIRMWARE_FILE
+# Force fwupdtool over fwupdmgr usage.
+import USE_TOOL
 
 env AT_BOOT="false"
 env FILTER="usable-during-update"
 env REGEX="^[0-9a-f]\{8\}-[0-9a-f]\{4\}-[0-9a-f]\{4\}-[0-9a-f]\{4\}-[0-9a-f]\{12\}$"
-env MINIJAIL_ARGS="--uts -e -l -p -N \
+# Need access to /run/shill to download from LVFS mirror.
+env MINIJAIL_ARGS="--profile=minimalistic-mountns --uts -l -p -N \
+    -k /run,/run,tmpfs -b /run/dbus -b /run/shill -u fwupd -g fwupd"
+env MINIJAIL_ARGS_TOOL="--uts -e -l -p -N \
     -v -P /mnt/empty -b / -b /proc -r -t -b /dev,,1 -k run,/run,tmpfs \
     -k /var,/var,tmpfs -b /var/cache/fwupd,,1 -b /var/lib/fwupd,,1 \
-    -b /sys -u fwupd -g fwupd"
+    -b /run/lock,,1 -b /sys,,1 -u fwupd -g fwupd -G"
 env PLUGIN_ARGS=""
+env USE_TOOL="false"
 
 pre-start script
+  # Abort if the rootfs is on removable media.  e.g. It's on a USB stick.
+  . /usr/share/misc/chromeos-common.sh
+  . /usr/sbin/write_gpt.sh
+  load_base_vars
+  if rootdev_removable; then
+    logger -p warn -t "${UPSTART_JOB}" "Attempting update from removable media"
+    exit 0
+  fi
+
   if [ $(expr "${GUID}" : "${REGEX}") -eq 0 ]; then
     logger -p err -t "${UPSTART_JOB}" "Invalid GUID: ${GUID}"
     exit 1
   fi
-  mkdir -p /var/cache/fwupd /var/lib/fwupd /var/lib/fwupd/pending/
-  chown -R fwupd:fwupd /var/cache/fwupd /var/lib/fwupd /var/lib/fwupd/pending/
+  mkdir -p /var/lib/fwupd/pending/
+  chown -R fwupd:fwupd /var/lib/fwupd/pending/
   for plugin in ${PLUGIN}; do
-    if ! minijail0 ${MINIJAIL_ARGS} -- /usr/bin/fwupdtool get-plugins \
+    if ! minijail0 ${MINIJAIL_ARGS} -- /usr/bin/fwupdmgr get-plugins \
       | grep -x -F "${plugin}:"; then
       logger -p err -t "${UPSTART_JOB}" "Unsupported plugin: ${plugin}"
       exit 1
@@ -44,23 +61,16 @@
 end script
 
 script
+  INHIBIT_SUSPEND_FILE="/run/lock/power_override/${UPSTART_JOB}.lock"
+  trap 'rm -f -- "${INHIBIT_SUSPEND_FILE}"' EXIT
+  echo "$$" > "${INHIBIT_SUSPEND_FILE}"
+
   for plugin in ${PLUGIN}; do
     case "${plugin}" in
-    "ccgx"|"dell_dock"|"synaptics_cxaudio"|"vli")
-      MINIJAIL_ARGS="${MINIJAIL_ARGS} --add-suppl-group usb"
-      ;;
-    "flashrom_i2c")
-      MINIJAIL_ARGS="${MINIJAIL_ARGS} --add-suppl-group i2c"
-      ;;
     "nvme")
       # Grant cap_sys_admin for nvme plugin to issue admin ioctl commands.
-      MINIJAIL_ARGS="${MINIJAIL_ARGS} -c cap_dac_override,cap_sys_admin+e"
-      ;;
-    "synaptics_mst")
-      MINIJAIL_ARGS="${MINIJAIL_ARGS} --add-suppl-group drm_dp_aux"
-      ;;
-    "thunderbolt")
-      MINIJAIL_ARGS="${MINIJAIL_ARGS} -b /sys,,1"
+      MINIJAIL_ARGS_TOOL="${MINIJAIL_ARGS_TOOL} -c cap_dac_override,cap_sys_admin+e"
+      USE_TOOL="true"
       ;;
     esac
     PLUGIN_ARGS="${PLUGIN_ARGS} --plugins=${plugin}"
@@ -71,14 +81,33 @@
     FILTER=
   fi
 
-  minijail0 ${MINIJAIL_ARGS} -- /usr/bin/fwupdtool update "${GUID}" \
-    ${PLUGIN_ARGS} --filter="${FILTER}" 2>&1 | logger -t "${UPSTART_JOB}"
+  if [ "${USE_TOOL}" = "true" ]; then
+    if [ -n "${FIRMWARE_FILE}" ]; then
+      minijail0 ${MINIJAIL_ARGS_TOOL} -- /usr/bin/fwupdtool install \
+        "${FIRMWARE_FILE}" "${GUID}" --allow-older ${PLUGIN_ARGS} \
+        --filter="${FILTER}" 2>&1 | logger -t "${UPSTART_JOB}"
+    else
+      minijail0 ${MINIJAIL_ARGS_TOOL} -- /usr/bin/fwupdtool update "${GUID}" \
+        ${PLUGIN_ARGS} --filter="${FILTER}" 2>&1 | logger -t "${UPSTART_JOB}"
+    fi
+  else
+    minijail0 ${MINIJAIL_ARGS} -- /usr/bin/fwupdmgr update "${GUID}" \
+      --filter="${FILTER}" 2>&1 | logger -t "${UPSTART_JOB}"
+  fi
 
   # If there is a pending update we will delay until next boot.
   if [ "${AT_BOOT}" = "false" ]; then
-    if minijail0 ${MINIJAIL_ARGS} \
-         -- /usr/bin/fwupdtool get-updates "${GUID}" ${PLUGIN_ARGS}; then
-      echo "${PLUGIN}" > /var/lib/fwupd/pending/"${GUID}"
+    if [ "${USE_TOOL}" = "true" ]; then
+      if minijail0 ${MINIJAIL_ARGS_TOOL} \
+           -- /usr/bin/fwupdtool get-updates "${GUID}" ${PLUGIN_ARGS} \
+              --filter=~"${FILTER}"; then
+        echo "${PLUGIN}" > /var/lib/fwupd/pending/"${GUID}"
+      fi
+    else
+      if minijail0 ${MINIJAIL_ARGS} \
+           -- /usr/bin/fwupdmgr get-updates "${GUID}" --filter=~"${FILTER}"; then
+        touch /var/lib/fwupd/pending/"${GUID}"
+      fi
     fi
   fi
 end script
diff --git a/sys-apps/fwupd/files/org.freedesktop.fwupd.service b/sys-apps/fwupd/files/org.freedesktop.fwupd.service
new file mode 100644
index 0000000..3feb9cd
--- /dev/null
+++ b/sys-apps/fwupd/files/org.freedesktop.fwupd.service
@@ -0,0 +1,5 @@
+[D-BUS Service]
+Name=org.freedesktop.fwupd
+Documentation=https://fwupd.org/
+Exec=/sbin/start fwupd
+User=root
diff --git a/sys-apps/fwupd/fwupd-1.5.0-r82.ebuild b/sys-apps/fwupd/fwupd-1.5.0-r82.ebuild
deleted file mode 100644
index d1b3cec..0000000
--- a/sys-apps/fwupd/fwupd-1.5.0-r82.ebuild
+++ /dev/null
@@ -1,190 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-CROS_WORKON_COMMIT="37a9014743c9ca760b20c66b31ce3670a727694e"
-CROS_WORKON_TREE="c5e71820405d28bea34577cacbeeb1ddb3c974d5"
-CROS_WORKON_PROJECT="chromiumos/third_party/fwupd"
-CROS_WORKON_EGIT_BRANCH="fwupd-1.5.0"
-
-PYTHON_COMPAT=( python2_7 python3_{4,5,6,7} )
-
-inherit cros-workon linux-info meson python-single-r1 udev user vala xdg
-
-DESCRIPTION="Aims to make updating firmware on Linux automatic, safe and reliable"
-HOMEPAGE="https://fwupd.org"
-#SRC_URI="https://github.com/hughsie/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="LGPL-2.1+"
-SLOT="0"
-KEYWORDS="*"
-IUSE="agent amt consolekit dell gtk-doc elogind flashrom_i2c +minimal +gpg introspection +man nls nvme pkcs7 redfish synaptics systemd test thunderbolt uefi"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}
-	^^ ( consolekit elogind minimal systemd )
-	dell? ( uefi )
-	minimal? ( !introspection )
-"
-RESTRICT="!test? ( test )"
-
-BDEPEND="virtual/pkgconfig
-	gtk-doc? ( dev-util/gtk-doc )
-	introspection? ( dev-libs/gobject-introspection )
-	man? (
-		app-text/docbook-sgml-utils
-		sys-apps/help2man
-	)
-	test? (
-		thunderbolt? ( dev-util/umockdev )
-		net-libs/gnutls[tools]
-	)
-"
-RDEPEND=">=app-arch/gcab-1.0
-	app-arch/libarchive:=
-	dev-db/sqlite
-	>=dev-libs/glib-2.45.8:2
-	dev-libs/json-glib
-	dev-libs/libgpg-error
-	>=dev-libs/libgudev-232:=
-	>=dev-libs/libgusb-0.3.5:=[introspection?]
-	>=dev-libs/libjcat-0.1.0[gpg?,pkcs7?]
-	>=dev-libs/libxmlb-0.1.13
-	>=net-libs/libsoup-2.51.92:2.4[introspection?]
-	virtual/libelf:0=
-	virtual/udev
-	consolekit? ( >=sys-auth/consolekit-1.0.0 )
-	dell? (
-		sys-libs/efivar
-		>=sys-libs/libsmbios-2.4.0
-	)
-	elogind? ( sys-auth/elogind )
-	!minimal? (
-		>=sys-auth/polkit-0.103
-	)
-	nvme? ( sys-libs/efivar )
-	redfish? ( sys-libs/efivar )
-	systemd? ( >=sys-apps/systemd-211 )
-	uefi? (
-		app-crypt/tpm2-tss
-		media-libs/fontconfig
-		media-libs/freetype
-		sys-boot/gnu-efi
-		sys-boot/efibootmgr
-		>=sys-libs/efivar-33
-		x11-libs/cairo
-	)
-"
-DEPEND="$(vala_depend)
-	${PYTHON_DEPS}
-	$(python_gen_cond_dep '
-		dev-python/pillow[${PYTHON_USEDEP}]
-		dev-python/pycairo[${PYTHON_USEDEP}]
-		dev-python/pygobject:3[cairo,${PYTHON_USEDEP}]
-	' ${PYTHON_COMPAT} )
-	${RDEPEND}
-"
-# Block sci-chemistry/chemical-mime-data for bug #701900
-RDEPEND+="
-	!<sci-chemistry/chemical-mime-data-0.1.94-r4
-	sys-apps/dbus
-"
-
-pkg_setup() {
-	python-single-r1_pkg_setup
-	if use nvme; then
-		kernel_is -ge 4 4 || die "NVMe support requires kernel >= 4.4"
-	fi
-}
-
-src_prepare() {
-	default
-	# c.f. https://github.com/fwupd/fwupd/issues/1414
-	sed -e "/test('thunderbolt-self-test', e, env: test_env, timeout : 120)/d" \
-		-i plugins/thunderbolt/meson.build || die
-	sed -e "/^gcab/s/^/#/" -i meson.build || die
-	if ! use nls ; then
-		echo > po/LINGUAS || die
-	fi
-	vala_src_prepare
-}
-
-src_configure() {
-	local emesonargs=(
-		--localstatedir "${EPREFIX}"/var
-		-Dbuild="$(usex minimal standalone all)"
-		$(meson_use agent)
-		$(meson_use amt plugin_amt)
-		$(meson_use consolekit)
-		$(meson_use dell plugin_dell)
-		$(meson_use elogind)
-		$(meson_use gtk-doc gtkdoc)
-		$(meson_use introspection)
-		$(meson_use man)
-		$(meson_use nvme plugin_nvme)
-		$(meson_use redfish plugin_redfish)
-		$(meson_use synaptics plugin_synaptics)
-		$(meson_use systemd)
-		$(meson_use test tests)
-		$(meson_use thunderbolt plugin_thunderbolt)
-		$(meson_use uefi plugin_uefi)
-		$(meson_use flashrom_i2c plugin_flashrom_i2c)
-		# Requires libflashrom which our sys-apps/flashrom
-		# package does not provide
-		-Dplugin_flashrom="false"
-		# Dependencies are not available (yet?)
-		-Dplugin_modem_manager="false"
-		# Dependencies are not available (yet?)
-		-Dplugin_tpm="false"
-		-Dtpm="false"
-	)
-	(use x86 || use amd64 ) || emesonargs+=( -Dplugin_msr="false" )
-	export CACHE_DIRECTORY="${T}"
-	meson_src_configure
-}
-
-src_install() {
-	meson_src_install
-
-	# Enable vendor-directory remote with local firmware
-	sed 's/Enabled=false/Enabled=true/' -i "${ED}"/etc/${PN}/remotes.d/vendor-directory.conf || die
-
-	# Install udev rules to fix user permissions.
-	udev_dorules "${FILESDIR}"/99-fwupd.rules
-
-	insinto /etc/init
-	# Install upstart script for activating firmware update on logout/shutdown.
-	doins "${FILESDIR}"/fwupdtool-activate.conf
-	# Install upstart script for reloading firmware metadata shown on chrome://system.
-	doins "${FILESDIR}"/fwupdtool-getdevices.conf
-	# Install upstart script for automatic firmware update on device plug-in.
-	doins "${FILESDIR}"/fwupdtool-update.conf
-
-	exeinto /usr/share/cros/init
-	doexe "${FILESDIR}"/fwupd-at-boot.sh
-
-	if ! use minimal ; then
-		sed "s@%SEAT_MANAGER%@$(usex elogind elogind consolekit)@" \
-			"${FILESDIR}"/${PN}-r1 \
-			> "${T}"/${PN} || die
-		doinitd "${T}"/${PN}
-
-		if ! use systemd ; then
-			# Don't timeout when fwupd is running (#673140)
-			sed '/^IdleTimeout=/s@=[[:digit:]]\+@=0@' \
-				-i "${ED}"/etc/${PN}/daemon.conf || die
-		fi
-	fi
-}
-
-pkg_preinst() {
-	enewuser fwupd
-	enewgroup fwupd
-}
-
-pkg_postinst() {
-	xdg_pkg_postinst
-	elog "In case you are using openrc as init system"
-	elog "and you're upgrading from <fwupd-1.1.0, you"
-	elog "need to start the fwupd daemon via the openrc"
-	elog "init script that comes with this package."
-}
diff --git a/sys-apps/fwupd/fwupd-1.6.1-r127.ebuild b/sys-apps/fwupd/fwupd-1.6.1-r127.ebuild
new file mode 100644
index 0000000..3530fe8
--- /dev/null
+++ b/sys-apps/fwupd/fwupd-1.6.1-r127.ebuild
@@ -0,0 +1,207 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+CROS_WORKON_COMMIT="d58dc03c286db4c16f5d2f04ef258abf350f502a"
+CROS_WORKON_TREE="3445c6105d04d1a045d86e4d9d25bbadd2953cf9"
+CROS_WORKON_PROJECT="chromiumos/third_party/fwupd"
+CROS_WORKON_EGIT_BRANCH="fwupd-1.6.1"
+
+PYTHON_COMPAT=( python2_7 python3_{6..9} )
+
+inherit cros-workon linux-info meson python-single-r1 udev user vala xdg
+
+DESCRIPTION="Aims to make updating firmware on Linux automatic, safe and reliable"
+HOMEPAGE="https://fwupd.org"
+#SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+agent amt archive +bluetooth dell +dummy +gnutls gtk-doc +gusb elogind flashrom +gpg lzma minimal introspection +man nls nvme pkcs7 policykit spi synaptics systemd test thunderbolt uefi"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+	dell? ( uefi )
+	minimal? ( !introspection )
+	spi? ( lzma )
+	synaptics? ( gnutls )
+	uefi? ( gnutls )
+"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+	virtual/pkgconfig
+	gtk-doc? ( dev-util/gtk-doc )
+	introspection? ( dev-libs/gobject-introspection )
+	man? (
+		app-text/docbook-sgml-utils
+		sys-apps/help2man
+	)
+	test? (
+		thunderbolt? ( dev-util/umockdev )
+		net-libs/gnutls[tools]
+	)
+"
+COMMON_DEPEND="
+	>=app-arch/gcab-1.0
+	dev-db/sqlite
+	>=dev-libs/glib-2.45.8:2
+	dev-libs/json-glib
+	dev-libs/libgpg-error
+	dev-libs/libgudev:=
+	>=dev-libs/libjcat-0.1.0[gpg?,pkcs7?]
+	>=dev-libs/libxmlb-0.1.13:=
+	>=net-libs/libsoup-2.51.92:2.4[introspection?]
+	net-misc/curl
+	virtual/libelf:0=
+	virtual/udev
+	archive? ( app-arch/libarchive:= )
+	dell? ( >=sys-libs/libsmbios-2.4.0 )
+	elogind? ( >=sys-auth/elogind-211 )
+	flashrom? ( sys-apps/flashrom )
+	gnutls? ( net-libs/gnutls )
+	gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] )
+	lzma? ( app-arch/xz-utils )
+	policykit? ( >=sys-auth/polkit-0.103 )
+	systemd? ( >=sys-apps/systemd-211 )
+	uefi? (
+		sys-apps/fwupd-efi
+		sys-boot/efibootmgr
+		sys-fs/udisks
+		sys-libs/efivar
+	)
+"
+# Block sci-chemistry/chemical-mime-data for bug #701900
+RDEPEND="
+	!<sci-chemistry/chemical-mime-data-0.1.94-r4
+	${COMMON_DEPEND}
+	sys-apps/dbus
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	x11-libs/pango
+	$(vala_depend)
+	${PYTHON_DEPS}
+	$(python_gen_cond_dep '
+		dev-python/pillow[${PYTHON_USEDEP}]
+		dev-python/pycairo[${PYTHON_USEDEP}]
+		dev-python/pygobject:3[cairo,${PYTHON_USEDEP}]
+	' ${PYTHON_COMPAT} )
+	${RDEPEND}
+"
+
+pkg_setup() {
+	python-single-r1_pkg_setup
+	if use nvme ; then
+		kernel_is -ge 4 4 || die "NVMe support requires kernel >= 4.4"
+	fi
+}
+
+src_prepare() {
+	default
+	# c.f. https://github.com/fwupd/fwupd/issues/1414
+	sed -e "/test('thunderbolt-self-test', e, env: test_env, timeout : 120)/d" \
+		-i plugins/thunderbolt/meson.build || die
+	sed '/platform-integrity/d' \
+		-i plugins/meson.build || die #753521
+	sed -e "/^gcab/s/^/#/" -i meson.build || die
+	if ! use nls ; then
+		echo > po/LINGUAS || die
+	fi
+	vala_src_prepare
+}
+
+src_configure() {
+	local plugins=(
+		$(meson_use amt plugin_amt)
+		$(meson_use dell plugin_dell)
+		$(meson_use dummy plugin_dummy)
+		$(meson_use flashrom plugin_flashrom)
+		$(meson_use gusb plugin_altos)
+		$(meson_use nvme plugin_nvme)
+		$(meson_use spi plugin_intel_spi)
+		$(meson_use synaptics plugin_synaptics_mst)
+		$(meson_use synaptics plugin_synaptics_rmi)
+		$(meson_use thunderbolt plugin_thunderbolt)
+		$(meson_use uefi plugin_uefi_capsule)
+		$(meson_use uefi plugin_uefi_capsule_splash)
+		$(meson_use uefi plugin_uefi_pk)
+
+		# Dependencies are not available (yet?)
+		-Dplugin_modem_manager="false"
+		-Dplugin_tpm="false"
+	)
+	(use x86 || use amd64 ) || plugins+=( -Dplugin_msr="false" )
+
+	local emesonargs=(
+		--localstatedir "${EPREFIX}"/var
+		-Dbuild="$(usex minimal standalone all)"
+		-Dconsolekit="false"
+		-Dcurl="true"
+		-Ddocs="$(usex gtk-doc gtkdoc none)"
+		-Defi_binary="false"
+		-Dsupported_build="true"
+		$(meson_use agent)
+		$(meson_use archive libarchive)
+		$(meson_use bluetooth bluez)
+		$(meson_use elogind)
+		$(meson_use gnutls)
+		$(meson_use gusb)
+		$(meson_use lzma)
+		$(meson_use man)
+		$(meson_use introspection)
+		$(meson_use policykit polkit)
+		$(meson_use systemd)
+		$(meson_use test tests)
+
+		${plugins[@]}
+	)
+	use uefi && emesonargs+=( -Defi_os_dir="gentoo" )
+	export CACHE_DIRECTORY="${T}"
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	# Disable lvfs remote
+	sed 's/Enabled=true/Enabled=false/' -i "${ED}"/etc/${PN}/remotes.d/lvfs.conf || die
+
+	# Enable vendor-directory remote with local firmware
+	sed 's/Enabled=false/Enabled=true/' -i "${ED}"/etc/${PN}/remotes.d/vendor-directory.conf || die
+
+	# Install udev rules to fix user permissions.
+	udev_dorules "${FILESDIR}"/90-fwupd.rules
+
+	# Change D-BUS owner for org.freedesktop.fwupd
+	sed 's/root/fwupd/' -i "${ED}"/usr/share/dbus-1/system.d/org.freedesktop.fwupd.conf || die
+
+	# Install D-BUS service for org.freedesktop.fwupd to enable D-BUS activation
+	insinto /usr/share/dbus-1/system-services
+	doins "${FILESDIR}"/org.freedesktop.fwupd.service
+
+	insinto /etc/init
+	# Install upstart script for fwupd daemon.
+	doins "${FILESDIR}"/fwupd.conf
+	# Install upstart script for activating firmware update on logout/shutdown.
+	doins "${FILESDIR}"/fwupdtool-activate.conf
+	# Install upstart script for automatic firmware update on device plug-in.
+	doins "${FILESDIR}"/fwupdtool-update.conf
+
+	exeinto /usr/share/cros/init
+	doexe "${FILESDIR}"/fwupd-at-boot.sh
+
+	if ! use minimal ; then
+		if ! use systemd ; then
+			# Don't timeout when fwupd is running (#673140)
+			sed '/^IdleTimeout=/s@=[[:digit:]]\+@=0@' \
+				-i "${ED}"/etc/${PN}/daemon.conf || die
+		fi
+	fi
+}
+
+pkg_preinst() {
+	enewuser fwupd
+	enewgroup fwupd
+}
diff --git a/sys-apps/fwupd/fwupd-9998.ebuild b/sys-apps/fwupd/fwupd-9998.ebuild
new file mode 100644
index 0000000..d27a47d
--- /dev/null
+++ b/sys-apps/fwupd/fwupd-9998.ebuild
@@ -0,0 +1,205 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+EGIT_REPO_URI="https://github.com/fwupd/fwupd"
+EGIT_BRANCH="master"
+
+PYTHON_COMPAT=( python2_7 python3_{6..9} )
+
+inherit git-r3 linux-info meson python-single-r1 udev user vala xdg
+
+DESCRIPTION="Aims to make updating firmware on Linux automatic, safe and reliable"
+HOMEPAGE="https://fwupd.org"
+#SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="LGPL-2.1+"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+agent amt archive +bluetooth dell +dummy +gnutls gtk-doc +gusb elogind flashrom +gpg lzma minimal introspection +man nls nvme pkcs7 policykit spi synaptics systemd test thunderbolt uefi"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}
+	dell? ( uefi )
+	minimal? ( !introspection )
+	spi? ( lzma )
+	synaptics? ( gnutls )
+	uefi? ( gnutls )
+"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+	virtual/pkgconfig
+	gtk-doc? ( dev-util/gtk-doc )
+	introspection? ( dev-libs/gobject-introspection )
+	man? (
+		app-text/docbook-sgml-utils
+		sys-apps/help2man
+	)
+	test? (
+		thunderbolt? ( dev-util/umockdev )
+		net-libs/gnutls[tools]
+	)
+"
+COMMON_DEPEND="
+	>=app-arch/gcab-1.0
+	dev-db/sqlite
+	>=dev-libs/glib-2.45.8:2
+	dev-libs/json-glib
+	dev-libs/libgpg-error
+	dev-libs/libgudev:=
+	>=dev-libs/libjcat-0.1.0[gpg?,pkcs7?]
+	>=dev-libs/libxmlb-0.1.13:=
+	>=net-libs/libsoup-2.51.92:2.4[introspection?]
+	net-misc/curl
+	virtual/libelf:0=
+	virtual/udev
+	archive? ( app-arch/libarchive:= )
+	dell? ( >=sys-libs/libsmbios-2.4.0 )
+	elogind? ( >=sys-auth/elogind-211 )
+	flashrom? ( sys-apps/flashrom )
+	gnutls? ( net-libs/gnutls )
+	gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] )
+	lzma? ( app-arch/xz-utils )
+	policykit? ( >=sys-auth/polkit-0.103 )
+	systemd? ( >=sys-apps/systemd-211 )
+	uefi? (
+		sys-apps/fwupd-efi
+		sys-boot/efibootmgr
+		sys-fs/udisks
+		sys-libs/efivar
+	)
+"
+# Block sci-chemistry/chemical-mime-data for bug #701900
+RDEPEND="
+	!<sci-chemistry/chemical-mime-data-0.1.94-r4
+	${COMMON_DEPEND}
+	sys-apps/dbus
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	x11-libs/pango
+	$(vala_depend)
+	${PYTHON_DEPS}
+	$(python_gen_cond_dep '
+		dev-python/pillow[${PYTHON_USEDEP}]
+		dev-python/pycairo[${PYTHON_USEDEP}]
+		dev-python/pygobject:3[cairo,${PYTHON_USEDEP}]
+	' ${PYTHON_COMPAT} )
+	${RDEPEND}
+"
+
+pkg_setup() {
+	python-single-r1_pkg_setup
+	if use nvme ; then
+		kernel_is -ge 4 4 || die "NVMe support requires kernel >= 4.4"
+	fi
+}
+
+src_prepare() {
+	default
+	# c.f. https://github.com/fwupd/fwupd/issues/1414
+	sed -e "/test('thunderbolt-self-test', e, env: test_env, timeout : 120)/d" \
+		-i plugins/thunderbolt/meson.build || die
+	sed '/platform-integrity/d' \
+		-i plugins/meson.build || die #753521
+	sed -e "/^gcab/s/^/#/" -i meson.build || die
+	if ! use nls ; then
+		echo > po/LINGUAS || die
+	fi
+	vala_src_prepare
+}
+
+src_configure() {
+	local plugins=(
+		$(meson_use amt plugin_amt)
+		$(meson_use dell plugin_dell)
+		$(meson_use dummy plugin_dummy)
+		$(meson_use flashrom plugin_flashrom)
+		$(meson_use gusb plugin_altos)
+		$(meson_use nvme plugin_nvme)
+		$(meson_use spi plugin_intel_spi)
+		$(meson_use synaptics plugin_synaptics_mst)
+		$(meson_use synaptics plugin_synaptics_rmi)
+		$(meson_use thunderbolt plugin_thunderbolt)
+		$(meson_use uefi plugin_uefi_capsule)
+		$(meson_use uefi plugin_uefi_capsule_splash)
+		$(meson_use uefi plugin_uefi_pk)
+
+		# Dependencies are not available (yet?)
+		-Dplugin_modem_manager="false"
+		-Dplugin_tpm="false"
+	)
+	(use x86 || use amd64 ) || plugins+=( -Dplugin_msr="false" )
+
+	local emesonargs=(
+		--localstatedir "${EPREFIX}"/var
+		-Dbuild="$(usex minimal standalone all)"
+		-Dconsolekit="false"
+		-Dcurl="true"
+		-Ddocs="$(usex gtk-doc gtkdoc none)"
+		-Defi_binary="false"
+		-Dsupported_build="true"
+		$(meson_use agent)
+		$(meson_use archive libarchive)
+		$(meson_use bluetooth bluez)
+		$(meson_use elogind)
+		$(meson_use gnutls)
+		$(meson_use gusb)
+		$(meson_use lzma)
+		$(meson_use man)
+		$(meson_use introspection)
+		$(meson_use policykit polkit)
+		$(meson_use systemd)
+		$(meson_use test tests)
+
+		${plugins[@]}
+	)
+	use uefi && emesonargs+=( -Defi_os_dir="gentoo" )
+	export CACHE_DIRECTORY="${T}"
+	meson_src_configure
+}
+
+src_install() {
+	meson_src_install
+
+	# Disable lvfs remote
+	sed 's/Enabled=true/Enabled=false/' -i "${ED}"/etc/${PN}/remotes.d/lvfs.conf || die
+
+	# Enable vendor-directory remote with local firmware
+	sed 's/Enabled=false/Enabled=true/' -i "${ED}"/etc/${PN}/remotes.d/vendor-directory.conf || die
+
+	# Install udev rules to fix user permissions.
+	udev_dorules "${FILESDIR}"/90-fwupd.rules
+
+	# Change D-BUS owner for org.freedesktop.fwupd
+	sed 's/root/fwupd/' -i "${ED}"/usr/share/dbus-1/system.d/org.freedesktop.fwupd.conf || die
+
+	# Install D-BUS service for org.freedesktop.fwupd to enable D-BUS activation
+	insinto /usr/share/dbus-1/system-services
+	doins "${FILESDIR}"/org.freedesktop.fwupd.service
+
+	insinto /etc/init
+	# Install upstart script for fwupd daemon.
+	doins "${FILESDIR}"/fwupd.conf
+	# Install upstart script for activating firmware update on logout/shutdown.
+	doins "${FILESDIR}"/fwupdtool-activate.conf
+	# Install upstart script for automatic firmware update on device plug-in.
+	doins "${FILESDIR}"/fwupdtool-update.conf
+
+	exeinto /usr/share/cros/init
+	doexe "${FILESDIR}"/fwupd-at-boot.sh
+
+	if ! use minimal ; then
+		if ! use systemd ; then
+			# Don't timeout when fwupd is running (#673140)
+			sed '/^IdleTimeout=/s@=[[:digit:]]\+@=0@' \
+				-i "${ED}"/etc/${PN}/daemon.conf || die
+		fi
+	fi
+}
+
+pkg_preinst() {
+	enewuser fwupd
+	enewgroup fwupd
+}
diff --git a/sys-apps/fwupd/fwupd-9999.ebuild b/sys-apps/fwupd/fwupd-9999.ebuild
index da5fe00..12430b5 100644
--- a/sys-apps/fwupd/fwupd-9999.ebuild
+++ b/sys-apps/fwupd/fwupd-9999.ebuild
@@ -1,31 +1,34 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=6
 
 CROS_WORKON_PROJECT="chromiumos/third_party/fwupd"
-CROS_WORKON_EGIT_BRANCH="fwupd-1.5.0"
+CROS_WORKON_EGIT_BRANCH="fwupd-1.6.1"
 
-PYTHON_COMPAT=( python2_7 python3_{4,5,6,7} )
+PYTHON_COMPAT=( python2_7 python3_{6..9} )
 
 inherit cros-workon linux-info meson python-single-r1 udev user vala xdg
 
 DESCRIPTION="Aims to make updating firmware on Linux automatic, safe and reliable"
 HOMEPAGE="https://fwupd.org"
-#SRC_URI="https://github.com/hughsie/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+#SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
 
 LICENSE="LGPL-2.1+"
 SLOT="0"
 KEYWORDS="~*"
-IUSE="agent amt consolekit dell gtk-doc elogind flashrom_i2c +minimal +gpg introspection +man nls nvme pkcs7 redfish synaptics systemd test thunderbolt uefi"
+IUSE="+agent amt archive +bluetooth dell +dummy +gnutls gtk-doc +gusb elogind flashrom +gpg lzma minimal introspection +man nls nvme pkcs7 policykit spi synaptics systemd test thunderbolt uefi"
 REQUIRED_USE="${PYTHON_REQUIRED_USE}
-	^^ ( consolekit elogind minimal systemd )
 	dell? ( uefi )
 	minimal? ( !introspection )
+	spi? ( lzma )
+	synaptics? ( gnutls )
+	uefi? ( gnutls )
 "
 RESTRICT="!test? ( test )"
 
-BDEPEND="virtual/pkgconfig
+BDEPEND="
+	virtual/pkgconfig
 	gtk-doc? ( dev-util/gtk-doc )
 	introspection? ( dev-libs/gobject-introspection )
 	man? (
@@ -37,42 +40,46 @@
 		net-libs/gnutls[tools]
 	)
 "
-RDEPEND=">=app-arch/gcab-1.0
-	app-arch/libarchive:=
+COMMON_DEPEND="
+	>=app-arch/gcab-1.0
 	dev-db/sqlite
 	>=dev-libs/glib-2.45.8:2
 	dev-libs/json-glib
 	dev-libs/libgpg-error
-	>=dev-libs/libgudev-232:=
-	>=dev-libs/libgusb-0.3.5:=[introspection?]
+	dev-libs/libgudev:=
 	>=dev-libs/libjcat-0.1.0[gpg?,pkcs7?]
-	>=dev-libs/libxmlb-0.1.13
+	>=dev-libs/libxmlb-0.1.13:=
 	>=net-libs/libsoup-2.51.92:2.4[introspection?]
+	net-misc/curl
 	virtual/libelf:0=
 	virtual/udev
-	consolekit? ( >=sys-auth/consolekit-1.0.0 )
-	dell? (
-		sys-libs/efivar
-		>=sys-libs/libsmbios-2.4.0
-	)
-	elogind? ( sys-auth/elogind )
-	!minimal? (
-		>=sys-auth/polkit-0.103
-	)
-	nvme? ( sys-libs/efivar )
-	redfish? ( sys-libs/efivar )
+	archive? ( app-arch/libarchive:= )
+	dell? ( >=sys-libs/libsmbios-2.4.0 )
+	elogind? ( >=sys-auth/elogind-211 )
+	flashrom? ( sys-apps/flashrom )
+	gnutls? ( net-libs/gnutls )
+	gusb? ( >=dev-libs/libgusb-0.3.5[introspection?] )
+	lzma? ( app-arch/xz-utils )
+	policykit? ( >=sys-auth/polkit-0.103 )
 	systemd? ( >=sys-apps/systemd-211 )
 	uefi? (
-		app-crypt/tpm2-tss
-		media-libs/fontconfig
-		media-libs/freetype
-		sys-boot/gnu-efi
+		sys-apps/fwupd-efi
 		sys-boot/efibootmgr
-		>=sys-libs/efivar-33
-		x11-libs/cairo
+		sys-fs/udisks
+		sys-libs/efivar
 	)
 "
-DEPEND="$(vala_depend)
+# Block sci-chemistry/chemical-mime-data for bug #701900
+RDEPEND="
+	!<sci-chemistry/chemical-mime-data-0.1.94-r4
+	${COMMON_DEPEND}
+	sys-apps/dbus
+"
+
+DEPEND="
+	${COMMON_DEPEND}
+	x11-libs/pango
+	$(vala_depend)
 	${PYTHON_DEPS}
 	$(python_gen_cond_dep '
 		dev-python/pillow[${PYTHON_USEDEP}]
@@ -81,15 +88,10 @@
 	' ${PYTHON_COMPAT} )
 	${RDEPEND}
 "
-# Block sci-chemistry/chemical-mime-data for bug #701900
-RDEPEND+="
-	!<sci-chemistry/chemical-mime-data-0.1.94-r4
-	sys-apps/dbus
-"
 
 pkg_setup() {
 	python-single-r1_pkg_setup
-	if use nvme; then
+	if use nvme ; then
 		kernel_is -ge 4 4 || die "NVMe support requires kernel >= 4.4"
 	fi
 }
@@ -99,6 +101,8 @@
 	# c.f. https://github.com/fwupd/fwupd/issues/1414
 	sed -e "/test('thunderbolt-self-test', e, env: test_env, timeout : 120)/d" \
 		-i plugins/thunderbolt/meson.build || die
+	sed '/platform-integrity/d' \
+		-i plugins/meson.build || die #753521
 	sed -e "/^gcab/s/^/#/" -i meson.build || die
 	if ! use nls ; then
 		echo > po/LINGUAS || die
@@ -107,35 +111,51 @@
 }
 
 src_configure() {
+	local plugins=(
+		$(meson_use amt plugin_amt)
+		$(meson_use dell plugin_dell)
+		$(meson_use dummy plugin_dummy)
+		$(meson_use flashrom plugin_flashrom)
+		$(meson_use gusb plugin_altos)
+		$(meson_use nvme plugin_nvme)
+		$(meson_use spi plugin_intel_spi)
+		$(meson_use synaptics plugin_synaptics_mst)
+		$(meson_use synaptics plugin_synaptics_rmi)
+		$(meson_use thunderbolt plugin_thunderbolt)
+		$(meson_use uefi plugin_uefi_capsule)
+		$(meson_use uefi plugin_uefi_capsule_splash)
+		$(meson_use uefi plugin_uefi_pk)
+
+		# Dependencies are not available (yet?)
+		-Dplugin_modem_manager="false"
+		-Dplugin_tpm="false"
+	)
+	(use x86 || use amd64 ) || plugins+=( -Dplugin_msr="false" )
+
 	local emesonargs=(
 		--localstatedir "${EPREFIX}"/var
 		-Dbuild="$(usex minimal standalone all)"
+		-Dconsolekit="false"
+		-Dcurl="true"
+		-Ddocs="$(usex gtk-doc gtkdoc none)"
+		-Defi_binary="false"
+		-Dsupported_build="true"
 		$(meson_use agent)
-		$(meson_use amt plugin_amt)
-		$(meson_use consolekit)
-		$(meson_use dell plugin_dell)
+		$(meson_use archive libarchive)
+		$(meson_use bluetooth bluez)
 		$(meson_use elogind)
-		$(meson_use gtk-doc gtkdoc)
-		$(meson_use introspection)
+		$(meson_use gnutls)
+		$(meson_use gusb)
+		$(meson_use lzma)
 		$(meson_use man)
-		$(meson_use nvme plugin_nvme)
-		$(meson_use redfish plugin_redfish)
-		$(meson_use synaptics plugin_synaptics)
+		$(meson_use introspection)
+		$(meson_use policykit polkit)
 		$(meson_use systemd)
 		$(meson_use test tests)
-		$(meson_use thunderbolt plugin_thunderbolt)
-		$(meson_use uefi plugin_uefi)
-		$(meson_use flashrom_i2c plugin_flashrom_i2c)
-		# Requires libflashrom which our sys-apps/flashrom
-		# package does not provide
-		-Dplugin_flashrom="false"
-		# Dependencies are not available (yet?)
-		-Dplugin_modem_manager="false"
-		# Dependencies are not available (yet?)
-		-Dplugin_tpm="false"
-		-Dtpm="false"
+
+		${plugins[@]}
 	)
-	(use x86 || use amd64 ) || emesonargs+=( -Dplugin_msr="false" )
+	use uefi && emesonargs+=( -Defi_os_dir="gentoo" )
 	export CACHE_DIRECTORY="${T}"
 	meson_src_configure
 }
@@ -143,17 +163,27 @@
 src_install() {
 	meson_src_install
 
+	# Disable lvfs remote
+	sed 's/Enabled=true/Enabled=false/' -i "${ED}"/etc/${PN}/remotes.d/lvfs.conf || die
+
 	# Enable vendor-directory remote with local firmware
 	sed 's/Enabled=false/Enabled=true/' -i "${ED}"/etc/${PN}/remotes.d/vendor-directory.conf || die
 
 	# Install udev rules to fix user permissions.
-	udev_dorules "${FILESDIR}"/99-fwupd.rules
+	udev_dorules "${FILESDIR}"/90-fwupd.rules
+
+	# Change D-BUS owner for org.freedesktop.fwupd
+	sed 's/root/fwupd/' -i "${ED}"/usr/share/dbus-1/system.d/org.freedesktop.fwupd.conf || die
+
+	# Install D-BUS service for org.freedesktop.fwupd to enable D-BUS activation
+	insinto /usr/share/dbus-1/system-services
+	doins "${FILESDIR}"/org.freedesktop.fwupd.service
 
 	insinto /etc/init
+	# Install upstart script for fwupd daemon.
+	doins "${FILESDIR}"/fwupd.conf
 	# Install upstart script for activating firmware update on logout/shutdown.
 	doins "${FILESDIR}"/fwupdtool-activate.conf
-	# Install upstart script for reloading firmware metadata shown on chrome://system.
-	doins "${FILESDIR}"/fwupdtool-getdevices.conf
 	# Install upstart script for automatic firmware update on device plug-in.
 	doins "${FILESDIR}"/fwupdtool-update.conf
 
@@ -161,11 +191,6 @@
 	doexe "${FILESDIR}"/fwupd-at-boot.sh
 
 	if ! use minimal ; then
-		sed "s@%SEAT_MANAGER%@$(usex elogind elogind consolekit)@" \
-			"${FILESDIR}"/${PN}-r1 \
-			> "${T}"/${PN} || die
-		doinitd "${T}"/${PN}
-
 		if ! use systemd ; then
 			# Don't timeout when fwupd is running (#673140)
 			sed '/^IdleTimeout=/s@=[[:digit:]]\+@=0@' \
@@ -178,11 +203,3 @@
 	enewuser fwupd
 	enewgroup fwupd
 }
-
-pkg_postinst() {
-	xdg_pkg_postinst
-	elog "In case you are using openrc as init system"
-	elog "and you're upgrading from <fwupd-1.1.0, you"
-	elog "need to start the fwupd daemon via the openrc"
-	elog "init script that comes with this package."
-}
diff --git a/sys-apps/hwids/hwids-20150717-r8.ebuild b/sys-apps/hwids/hwids-20150717-r9.ebuild
similarity index 100%
rename from sys-apps/hwids/hwids-20150717-r8.ebuild
rename to sys-apps/hwids/hwids-20150717-r9.ebuild
diff --git a/sys-apps/hwids/hwids-20150717.ebuild b/sys-apps/hwids/hwids-20150717.ebuild
index a03dcc5..4a90558 100644
--- a/sys-apps/hwids/hwids-20150717.ebuild
+++ b/sys-apps/hwids/hwids-20150717.ebuild
@@ -74,14 +74,7 @@
 
 	if use hwids-lite; then
 		cd "${D}/$(get_udevdir)/hwdb.d" || die
-		rm 20-OUI.hwdb 20-pci-vendor-model.hwdb 20-usb-vendor-model.hwdb || die
-	fi
-}
-
-pkg_postinst() {
-	if use udev; then
-		udevadm hwdb --update --root="${ROOT%/}"
-		# http://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda
-		[ "${ROOT:-/}" = "/" ] && udevadm control --reload
+		rm 20-OUI.hwdb 20-pci-vendor-model.hwdb || die
+		use usb && ( rm "${D}/usr/share/misc/usb.ids" || die )
 	fi
 }
diff --git a/sys-apps/journald/Manifest b/sys-apps/journald/Manifest
deleted file mode 100644
index 88ceb15..0000000
--- a/sys-apps/journald/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST systemd-242.tar.gz 7831435 BLAKE2B 288e65d0a8e133ef5885689eb16118a83d93c730e342da63115cea0892fc999104c3a4856c83f3e7ef909ba2f3311146730b05ee02d84cc0400851ccbdcd54cd SHA512 578f68a3c8f2d454198fc04ff8d943abcfb390531d57f9603d185857f7afa7f4dc641dafecf49ce50fe22f5837b252b181400891e8efd4459fd4f69bb4283cb4
diff --git a/sys-apps/journald/files/242-don-t-log-certain-fields.patch b/sys-apps/journald/files/242-don-t-log-certain-fields.patch
deleted file mode 100644
index 29f5442..0000000
--- a/sys-apps/journald/files/242-don-t-log-certain-fields.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From f59c280ad5de852448df73bb8c22ec431562eeab Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Fri, 7 Dec 2018 18:08:05 -0800
-Subject: [PATCH] don't log certain fields
-
-The machine-id and hostname are the same on all Chrome OS devices, so
-there's no need to log them.
----
- src/journal/journald-server.c | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
-index a2a2e36f12..d22d690a81 100644
---- a/src/journal/journald-server.c
-+++ b/src/journal/journald-server.c
-@@ -994,11 +994,9 @@ static void dispatch_message_real(
-         if (!isempty(s->boot_id_field))
-                 iovec[n++] = IOVEC_MAKE_STRING(s->boot_id_field);
- 
--        if (!isempty(s->machine_id_field))
--                iovec[n++] = IOVEC_MAKE_STRING(s->machine_id_field);
-+        /* No need for machine-id on Chrome OS */
- 
--        if (!isempty(s->hostname_field))
--                iovec[n++] = IOVEC_MAKE_STRING(s->hostname_field);
-+        /* No need for hostname on Chrome OS */
- 
-         assert(n <= m);
- 
--- 
-2.21.0.1020.gf2820cf01a-goog
-
diff --git a/sys-apps/journald/files/242-don-t-rotate-logs-when-hash-table-fills.patch b/sys-apps/journald/files/242-don-t-rotate-logs-when-hash-table-fills.patch
deleted file mode 100644
index 53d3ef0..0000000
--- a/sys-apps/journald/files/242-don-t-rotate-logs-when-hash-table-fills.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 17c6b216af7a9ecd72b9ffcf25ad37d46af2c51f Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Fri, 7 Dec 2018 17:36:23 -0800
-Subject: [PATCH] don't rotate logs when hash table fills
-
----
- src/journal/journal-file.c | 28 +---------------------------
- 1 file changed, 1 insertion(+), 27 deletions(-)
-
-diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c
-index 91d1c2921a..6751666108 100644
---- a/src/journal/journal-file.c
-+++ b/src/journal/journal-file.c
-@@ -3866,33 +3866,7 @@ bool journal_file_rotate_suggested(JournalFile *f, usec_t max_file_usec) {
-                 return true;
-         }
- 
--        /* Let's check if the hash tables grew over a certain fill
--         * level (75%, borrowing this value from Java's hash table
--         * implementation), and if so suggest a rotation. To calculate
--         * the fill level we need the n_data field, which only exists
--         * in newer versions. */
--
--        if (JOURNAL_HEADER_CONTAINS(f->header, n_data))
--                if (le64toh(f->header->n_data) * 4ULL > (le64toh(f->header->data_hash_table_size) / sizeof(HashItem)) * 3ULL) {
--                        log_debug("Data hash table of %s has a fill level at %.1f (%"PRIu64" of %"PRIu64" items, %llu file size, %"PRIu64" bytes per hash table item), suggesting rotation.",
--                                  f->path,
--                                  100.0 * (double) le64toh(f->header->n_data) / ((double) (le64toh(f->header->data_hash_table_size) / sizeof(HashItem))),
--                                  le64toh(f->header->n_data),
--                                  le64toh(f->header->data_hash_table_size) / sizeof(HashItem),
--                                  (unsigned long long) f->last_stat.st_size,
--                                  f->last_stat.st_size / le64toh(f->header->n_data));
--                        return true;
--                }
--
--        if (JOURNAL_HEADER_CONTAINS(f->header, n_fields))
--                if (le64toh(f->header->n_fields) * 4ULL > (le64toh(f->header->field_hash_table_size) / sizeof(HashItem)) * 3ULL) {
--                        log_debug("Field hash table of %s has a fill level at %.1f (%"PRIu64" of %"PRIu64" items), suggesting rotation.",
--                                  f->path,
--                                  100.0 * (double) le64toh(f->header->n_fields) / ((double) (le64toh(f->header->field_hash_table_size) / sizeof(HashItem))),
--                                  le64toh(f->header->n_fields),
--                                  le64toh(f->header->field_hash_table_size) / sizeof(HashItem));
--                        return true;
--                }
-+        /* Don't rotate logs when hash table fills up */
- 
-         /* Are the data objects properly indexed by field objects? */
-         if (JOURNAL_HEADER_CONTAINS(f->header, n_data) &&
--- 
-2.21.0.1020.gf2820cf01a-goog
-
diff --git a/sys-apps/journald/files/242-hardcode-machine-id-to-0000000000000001.patch b/sys-apps/journald/files/242-hardcode-machine-id-to-0000000000000001.patch
deleted file mode 100644
index 1a4372e..0000000
--- a/sys-apps/journald/files/242-hardcode-machine-id-to-0000000000000001.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 0516b7a4c8d5686c946944c86f797707ab773a95 Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Mon, 3 Dec 2018 17:27:25 -0800
-Subject: [PATCH] hardcode machine-id to 0000000000000001
-
----
- src/libsystemd/sd-id128/sd-id128.c | 10 +++-------
- 1 file changed, 3 insertions(+), 7 deletions(-)
-
-diff --git a/src/libsystemd/sd-id128/sd-id128.c b/src/libsystemd/sd-id128/sd-id128.c
-index e5f82b8863..fa8f5d429c 100644
---- a/src/libsystemd/sd-id128/sd-id128.c
-+++ b/src/libsystemd/sd-id128/sd-id128.c
-@@ -83,17 +83,13 @@ _public_ int sd_id128_from_string(const char s[], sd_id128_t *ret) {
- 
- _public_ int sd_id128_get_machine(sd_id128_t *ret) {
-         static thread_local sd_id128_t saved_machine_id = {};
--        int r;
- 
-         assert_return(ret, -EINVAL);
- 
-         if (sd_id128_is_null(saved_machine_id)) {
--                r = id128_read("/etc/machine-id", ID128_PLAIN, &saved_machine_id);
--                if (r < 0)
--                        return r;
--
--                if (sd_id128_is_null(saved_machine_id))
--                        return -ENOMEDIUM;
-+                /* TODO(cmtm): remove this once b/120506573 is fixed.
-+                 * Hardcode machine-id to 0000000000000001 */
-+                saved_machine_id = SD_ID128_MAKE(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1);
-         }
- 
-         *ret = saved_machine_id;
--- 
-2.21.0.1020.gf2820cf01a-goog
-
diff --git a/sys-apps/journald/files/242-journal-allow-setting-maximum-log-level-by-PID-inste.patch b/sys-apps/journald/files/242-journal-allow-setting-maximum-log-level-by-PID-inste.patch
deleted file mode 100644
index b5e24b9..0000000
--- a/sys-apps/journald/files/242-journal-allow-setting-maximum-log-level-by-PID-inste.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From dbf41699c4e6135ce1764298793ab57573f21dbf Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Mon, 25 Feb 2019 11:28:29 -0800
-Subject: [PATCH] journal: allow setting maximum log level by PID instead of
- unit
-
----
- src/journal/journald-context.c | 9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/src/journal/journald-context.c b/src/journal/journald-context.c
-index 7c51f2f633..3d30b797ef 100644
---- a/src/journal/journald-context.c
-+++ b/src/journal/journald-context.c
-@@ -353,13 +353,12 @@ static int client_context_read_log_level_max(
-                 ClientContext *c) {
- 
-         _cleanup_free_ char *value = NULL;
--        const char *p;
-+        _cleanup_free_ char *p;
-         int r, ll;
- 
--        if (!c->unit)
--                return 0;
--
--        p = strjoina("/run/systemd/units/log-level-max:", c->unit);
-+        r = asprintf(&p, "/run/systemd/journal/pids/log-level-max:"PID_FMT, c->pid);
-+        if (r < 0)
-+                return -ENOMEM;
-         r = readlink_malloc(p, &value);
-         if (r < 0)
-                 return r;
--- 
-2.21.0.1020.gf2820cf01a-goog
-
diff --git a/sys-apps/journald/files/242-journal-support-forwarding-to-syslog-without-CAP_SET.patch b/sys-apps/journald/files/242-journal-support-forwarding-to-syslog-without-CAP_SET.patch
deleted file mode 100644
index 022f176..0000000
--- a/sys-apps/journald/files/242-journal-support-forwarding-to-syslog-without-CAP_SET.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 986d572418b1abec267571087f18b3433af47071 Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Wed, 12 Dec 2018 19:59:27 -0800
-Subject: [PATCH] journal: support forwarding to syslog without CAP_SETUID and
- CAP_SETGID
-
-Journald can forward messages to syslog when CAP_SYS_ADMIN is missing,
-but not when CAP_SETUID or CAP_SETGID are missing. Prevent journald from
-forging UNIX credentials at all when the first forwarding attempt fails.
-This allows forwarding to work when journald has none of [CAP_SYS_ADMIN,
-CAP_SETUID, CAP_SETGID].
----
- src/journal/journald-syslog.c | 12 +++++-------
- 1 file changed, 5 insertions(+), 7 deletions(-)
-
-diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c
-index a60a259bc4..e8b6915335 100644
---- a/src/journal/journald-syslog.c
-+++ b/src/journal/journald-syslog.c
-@@ -75,15 +75,13 @@ static void forward_syslog_iovec(Server *s, const struct iovec *iovec, unsigned
-         }
- 
-         if (ucred && IN_SET(errno, ESRCH, EPERM)) {
--                struct ucred u;
- 
--                /* Hmm, presumably the sender process vanished
--                 * by now, or we don't have CAP_SYS_AMDIN, so
--                 * let's fix it as good as we can, and retry */
-+                /* Hmm, presumably the sender process vanished by now, or we
-+                 * don't have one of [CAP_SYS_AMDIN, CAP_SETUID, CAP_SETGID],
-+                 * don't send any UNIX credentials */
- 
--                u = *ucred;
--                u.pid = getpid_cached();
--                memcpy(CMSG_DATA(cmsg), &u, sizeof(struct ucred));
-+                msghdr.msg_control = NULL;
-+                msghdr.msg_controllen = 0;
- 
-                 if (sendmsg(s->syslog_fd, &msghdr, MSG_NOSIGNAL) >= 0)
-                         return;
--- 
-2.21.0.1020.gf2820cf01a-goog
-
diff --git a/sys-apps/journald/files/242-journalctl-add-ability-to-filter-known-log-messages.patch b/sys-apps/journald/files/242-journalctl-add-ability-to-filter-known-log-messages.patch
deleted file mode 100644
index 3771d9b..0000000
--- a/sys-apps/journald/files/242-journalctl-add-ability-to-filter-known-log-messages.patch
+++ /dev/null
@@ -1,645 +0,0 @@
-From d9710b7a4e924d6c4397e85a9094eab2d09015ef Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Mon, 14 Jan 2019 20:12:00 -0800
-Subject: [PATCH] journalctl: add ability to filter known log messages
-
-Known log messages can be filtered out by passing journalctl the
-'--filter-known/-i' flag. journalctl will look for the database of known log
-message at the specified path (defaults to /var/log/known-messages.bin when
-none is provided). This is intended to make it easier for developers to find
-interesting log messages.
----
- shell-completion/bash/journalctl |   3 +-
- src/journal/filter-known.c       | 318 +++++++++++++++++++++++++++++++
- src/journal/filter-known.h       |  58 ++++++
- src/journal/journalctl.c         |  47 ++++-
- src/journal/meson.build          |   2 +
- src/test/meson.build             |   7 +
- src/test/test-filter-known.c     |  66 +++++++
- 7 files changed, 499 insertions(+), 2 deletions(-)
- create mode 100644 src/journal/filter-known.c
- create mode 100644 src/journal/filter-known.h
- create mode 100644 src/test/test-filter-known.c
-
-diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl
-index 3beb347e1b..8151c5adff 100644
---- a/shell-completion/bash/journalctl
-+++ b/shell-completion/bash/journalctl
-@@ -49,6 +49,7 @@ _journalctl() {
-                               --root --case-sensitive'
-                 [ARGUNKNOWN]='-c --cursor --interval -n --lines -S --since -U --until
-                               --after-cursor --cursor-file --verify-key -g --grep
-+                              -i --filter-known
-                               --vacuum-size --vacuum-time --vacuum-files --output-fields'
-         )
- 
-@@ -68,7 +69,7 @@ _journalctl() {
-                                 comps=$(compgen -d -- "$cur")
-                                 compopt -o filenames
-                         ;;
--                        --file)
-+                        --file|--filter-known)
-                                 comps=$(compgen -f -- "$cur")
-                                 compopt -o filenames
-                         ;;
-diff --git a/src/journal/filter-known.c b/src/journal/filter-known.c
-new file mode 100644
-index 0000000000..6a0161b89e
---- /dev/null
-+++ b/src/journal/filter-known.c
-@@ -0,0 +1,318 @@
-+#include <ctype.h>
-+#include <errno.h>
-+#include <string.h>
-+#include <sys/mman.h>
-+
-+#include "alloc-util.h"
-+#include "fd-util.h"
-+#include "fileio.h"
-+#include "filter-known.h"
-+#include "hashmap.h"
-+#include "set.h"
-+#include "siphash24.h"
-+#include "string-util.h"
-+#include "strv.h"
-+#include "utf8.h"
-+
-+/*
-+ * The known_messages table is implemented as a hashtable mapping
-+ * string-vectors (strv) to sets of string vectors. The map key is known as the
-+ * 'basal form', while the value is the set of templates associated with that
-+ * basal form. Grouping templates by basal form allows us to make the
-+ * |is_message_known| function fast. A message and a template that match both
-+ * map to the same basal form. By grouping templates by their basal form,
-+ * determining whether a message is known can be done quickly by determining
-+ * it's basal form and only comparing it to templates with that basal form.
-+ *
-+ * For example, given the template:
-+ * ["myprog", "error 1 from pid ", ", aborting"]
-+ * We'd store the template in the set with basal form:
-+ * ["myprog", "error ", " from pid ", ", aborting"]
-+ *
-+ * We call |is_message_known| on the log message with syslog_id "myprog":
-+ * "error 1 from pid 321, aborting"
-+ *
-+ * Computing the log message's basal form yeilds:
-+ * ["myprog", "error ", " from pid ", ", aborting"]
-+ * This is the same as the template's basal form (notice we prepended the
-+ * syslog identifier).
-+ *
-+ * Since most sets will be very small (in fact, almost all sets will be of size
-+ * 1 due to how we generate them), a |is_message_known| can be evaluated in
-+ * constant time.
-+ */
-+
-+static void strv_hash_func(const void *p, struct siphash *state) {
-+        char **s = NULL;
-+        STRV_FOREACH(s, (char**) p) {
-+                siphash24_compress(*s, strlen(*s) + 1, state);
-+        }
-+}
-+
-+/* The compare function is only used to check for equality, not for sorting. */
-+static int strv_compare_func(const void *a, const void *b) {
-+        return !strv_equal((char**) a, (char**) b);
-+}
-+
-+static const struct hash_ops strv_hash_ops = {
-+        .hash = strv_hash_func,
-+        .compare = strv_compare_func
-+};
-+
-+bool message_matches_template(const char *syslog_identifier, const char *message, char **template) {
-+        assert(syslog_identifier);
-+        assert(message);
-+        assert(template);
-+
-+        /* The first substring is always the syslog identifier */
-+        if (!streq(*template, syslog_identifier))
-+                return false;
-+
-+        /* Ensure there's a string after the syslog_identifier */
-+        if (!*(++template))
-+                return false;
-+
-+        /* Check every string except the last */
-+        for(; *(template + 1); template++) {
-+                message = startswith(message, *template);
-+                if (!message)
-+                        return false;
-+                size_t numberword_length = strspn(message, ALPHANUMERICAL);
-+                if (numberword_length == 0)
-+                        return false;
-+                message += numberword_length;
-+        }
-+        /* Check the last string */
-+        message = startswith(message, *template);
-+        return message && *message == '\0';
-+}
-+
-+/* Split a string on numberwords. Numberwords are defined as a substring
-+ * containing only alphanumeric characters.
-+ * For example, it would apply the following transformation:
-+ * "foo 45 foo bar4 6" → ["foo ", " foo ", " ", ""]
-+ */
-+char **basal_form(const char *s) {
-+        _cleanup_strv_free_ char **basal = NULL;
-+        const char *word_start = NULL;
-+        char *substring;
-+        const char *i = s;
-+        bool is_numberword = false;
-+
-+        assert(s);
-+
-+        do {
-+                if (isalnum(*i)) {
-+                        if (!word_start)
-+                                word_start = i;
-+                        if (isdigit(*i))
-+                                is_numberword = true;
-+                } else {
-+                        if (word_start && is_numberword) {
-+                                /* We've reached the end of a number word. We
-+                                 * need to exclude the numberwords from the
-+                                 * result, so |substring| is set to contain
-+                                 * what's before the numberword */
-+                                substring = newdup_suffix0(char, s, word_start - s);
-+                                if (!substring)
-+                                        return NULL;
-+                                if (strv_consume(&basal, substring) < 0)
-+                                        return NULL;
-+                                s = i;
-+                        }
-+                        word_start = NULL;
-+                        is_numberword = false;
-+                }
-+        } while (*(i++) != '\0');
-+
-+        /* Add the last substring. There will always be a last substring to add.
-+         * If |s| ends in a number word, the empty string is added. */
-+        substring = newdup(char, s, i - s);
-+        if (!substring)
-+                return NULL;
-+        if (strv_consume(&basal, substring) < 0)
-+                return NULL;
-+
-+        return TAKE_PTR(basal);
-+}
-+
-+char **template_basal_form(char **template) {
-+        _cleanup_strv_free_ char **basal = NULL;
-+
-+        /* The syslog identifier might have numberwords in it, but we don't want to
-+         * split on them */
-+        basal = strv_new(*(template++), NULL);
-+        if (!basal)
-+                return NULL;
-+
-+        for (; *template; template++) {
-+                _cleanup_strv_free_ char **basal_substring;
-+                basal_substring = basal_form(*template);
-+                if (!basal_substring)
-+                        return NULL;
-+                int r = strv_extend_strv(&basal, basal_substring, false);
-+                if (r < 0)
-+                        return NULL;
-+        }
-+        return TAKE_PTR(basal);
-+}
-+
-+/* Returns:
-+ *
-+ * 1       → message was found in known_messages
-+ * 0       → message wasn't found in known_messages
-+ * -ENOMEM → failed to allocate enough memory
-+ * -EINVAL → was passed null pointer
-+ */
-+int is_message_known(Hashmap *known_messages, const char *syslog_identifier, const char *message) {
-+        if (!known_messages || !syslog_identifier || !message)
-+            return -EINVAL;
-+
-+        _cleanup_strv_free_ char **basal = basal_form(message);
-+        if (!basal)
-+                return -ENOMEM;
-+
-+        int r = strv_extend_front(&basal, syslog_identifier);
-+        if (r < 0)
-+                return r;
-+
-+        Set *templates_group = hashmap_get(known_messages, basal);
-+        if (!templates_group)
-+                return 0;
-+
-+
-+        Iterator i;
-+        char **template;
-+        SET_FOREACH(template, templates_group, i) {
-+                if (message_matches_template(syslog_identifier, message, template))
-+                        return 1;
-+        }
-+
-+        return 0;
-+}
-+
-+/* Returns 1 on successful insertion, 0 on if the template already existed in
-+ * the map and so wasn't inserted, < 0 on error.
-+ */
-+static int known_messages_consume_template(Hashmap *known_messages, char **template) {
-+        _cleanup_strv_free_ char **template_basal;
-+        _cleanup_strv_free_ char **scoped_template = template;
-+
-+        template_basal = template_basal_form(template);
-+        if (!template_basal)
-+                return -ENOMEM;
-+        Set *templates_group = hashmap_get(known_messages, template_basal);
-+        if (!templates_group) {
-+                _cleanup_set_free_free_ Set *new_templates_group;
-+                int r;
-+                new_templates_group = set_new(&strv_hash_ops);
-+                if (!new_templates_group)
-+                        return -ENOMEM;
-+                r = set_consume(new_templates_group, TAKE_PTR(scoped_template));
-+                if (r < 0)
-+                        return r;
-+                r = hashmap_put(known_messages, template_basal, new_templates_group);
-+                if (r < 0)
-+                        return r;
-+                template_basal = NULL;
-+                new_templates_group = NULL;
-+                return 1;
-+        } else {
-+                return set_consume(templates_group, TAKE_PTR(scoped_template));
-+        }
-+}
-+
-+#define UNIT_SEPARATOR '\x1F'
-+/* Returns 1 on success, 0 on misformatted input file, < 0 on error. */
-+int known_messages_get_from_file(const char *path, Hashmap **ret) {
-+        _cleanup_fclose_ FILE *f = NULL;
-+        _cleanup_known_messages_free_ Hashmap *known_messages = NULL;
-+        _cleanup_strv_free_ char **template = NULL;
-+        int r, peek;
-+
-+        f = fopen(path, "re");
-+
-+        if (!f)
-+                return -errno;
-+
-+        known_messages = hashmap_new(&strv_hash_ops);
-+        if (!known_messages)
-+                return -ENOMEM;
-+
-+        while ((peek = fgetc(f)) != EOF) {
-+                if (peek == UNIT_SEPARATOR) {
-+                        if (!template) {
-+                                log_error("known-messages file (%s) has a unit separator before any strings", path);
-+                                return 0;
-+                        }
-+                        r = known_messages_consume_template(known_messages, TAKE_PTR(template));
-+                        if (r < 0)
-+                                return r;
-+                } else {
-+                        char *substring;
-+                        ungetc(peek, f);
-+                        r = read_nul_string(f, LONG_LINE_MAX, &substring);
-+                        if (r < 0)
-+                                return r;
-+                        r = strv_consume(&template, substring);
-+                        if (r < 0)
-+                                return r;
-+                }
-+        }
-+        if (template) {
-+                log_error("known-messages file (%s) isn't terminated by '\\0\\x1F'", path);
-+                return 0;
-+        }
-+        *ret = TAKE_PTR(known_messages);
-+        return 1;
-+}
-+
-+void known_messages_free(Hashmap *known_messages) {
-+        char **basal;
-+        Set *templates_for_basal;
-+
-+        Iterator i;
-+        HASHMAP_FOREACH_KEY(templates_for_basal, basal, known_messages, i) {
-+                strv_free(basal);
-+                set_free_with_destructor(templates_for_basal, strv_free);
-+        }
-+        hashmap_free(known_messages);
-+}
-+
-+char *get_value_for_field(sd_journal *j, const char *field) {
-+        int r;
-+        const char *data;
-+        size_t length;
-+
-+        r = sd_journal_get_data(j, field, (const void**) &data, &length);
-+
-+        if (r < 0) {
-+                if (r != -ENOENT) {
-+                        log_error_errno(r, "Failed to get value for %s field: %m", field);
-+                }
-+                return NULL;
-+        }
-+
-+        if (!utf8_is_printable(data, length)) {
-+                /* Don't try to match against unprintable strings. They'll be marked as
-+                 * [blob data] by most journal output modes. */
-+                return NULL;
-+        }
-+
-+        _cleanup_free_ char *prefix = NULL;
-+        prefix = strappend(field, "=");
-+        if (!prefix) {
-+                log_oom();
-+                return NULL;
-+        }
-+
-+        data += strlen(prefix);
-+        length -= strlen(prefix);
-+
-+        /* It being utf8 printable implies there are no null characters.
-+         * We can therefore convert it to a null terminated string. */
-+        char *value = newdup_suffix0(char, data, length);
-+        if (!value)
-+                log_oom();
-+        return value;
-+}
-diff --git a/src/journal/filter-known.h b/src/journal/filter-known.h
-new file mode 100644
-index 0000000000..9e0e785485
---- /dev/null
-+++ b/src/journal/filter-known.h
-@@ -0,0 +1,58 @@
-+#pragma once
-+
-+#include <stdbool.h>
-+
-+#include "hashmap.h"
-+#include "sd-journal.h"
-+
-+/*
-+ * Provide functionality to determine whether a message is known to occur
-+ * during normal operation. This is intended to aid in root causing aberrant
-+ * behavior.By filtering out all known log messages, any messages that are
-+ * produced during the aberrant behavior will be easier to find.
-+ *
-+ * This is to be used by first calling |known_messages_get_from_file| in order
-+ * to construct the table of known log entries, then calling |is_message_known|
-+ * to query whether a given log message is known. |get_value_for_field| can be
-+ * used to aid in retrieving the syslog_identifier and message fields.
-+ *
-+ * The known-messages file consists of a list of templates. A template is a
-+ * list of strings that can be matched against log messages. These strings
-+ * represent the parts of the messages that are constant. A message is known
-+ * if, by splitting it on a subset if it's words and prepending it with it's
-+ * syslog identifier, you can create a list of strings equal to one of the
-+ * templates.
-+ *
-+ * For example, the log message "error 1 from pid 231" with syslog id "myprog"
-+ * would match against the template: ["myprog", "error 1 from pid ", ""]
-+ * since we can split it on the word "231" to get the template.
-+ *
-+ * The known-messages file format is as follows:
-+ * <known-messages> ::= <template>*
-+ * <template>       ::= <syslog_id> <substring>+ '\x1F'
-+ * <syslog_id>      ::= <character>* '\0'
-+ * <substring>      ::= <character>* '\0'
-+ *
-+ * <character> is any printable character. Notice that the syslog_id and
-+ * substring are just c-strings.
-+ */
-+
-+/* Returns whether a log message is known. Return false on errors. */
-+int is_message_known(Hashmap *known_messages, const char *syslog_identifier, const char *message);
-+
-+/* Create known_messages table from file at |path|. */
-+int known_messages_get_from_file(const char *path, Hashmap **ret);
-+
-+/* Free known_messages table created with |known_messages_get_from_file| */
-+void known_messages_free(Hashmap *known_messages);
-+DEFINE_TRIVIAL_CLEANUP_FUNC(Hashmap*, known_messages_free);
-+#define _cleanup_known_messages_free_ _cleanup_(known_messages_freep)
-+
-+/* Get the value of of a given field for the current journal entry as a null terminated string */
-+char *get_value_for_field(sd_journal *j, const char *field);
-+
-+/* Below functions aren't given internal linkage so they can be tested */
-+
-+bool message_matches_template(const char *syslog_identifier, const char *message, char **template);
-+char **basal_form(const char *s);
-+char **template_basal_form(char **template);
-diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
-index 00489098ee..8df6b4c8cd 100644
---- a/src/journal/journalctl.c
-+++ b/src/journal/journalctl.c
-@@ -35,6 +35,7 @@
- #include "device-private.h"
- #include "fd-util.h"
- #include "fileio.h"
-+#include "filter-known.h"
- #include "fs-util.h"
- #include "fsprg.h"
- #include "glob-util.h"
-@@ -143,6 +144,7 @@ static bool arg_catalog = false;
- static bool arg_reverse = false;
- static int arg_journal_type = 0;
- static char *arg_root = NULL;
-+static Hashmap *arg_known_messages = NULL;
- static const char *arg_machine = NULL;
- static uint64_t arg_vacuum_size = 0;
- static uint64_t arg_vacuum_n_files = 0;
-@@ -332,6 +334,9 @@ static int help(void) {
-                "  -p --priority=RANGE        Show entries with the specified priority\n"
-                "  -g --grep=PATTERN          Show entries with MESSAGE matching PATTERN\n"
-                "     --case-sensitive[=BOOL] Force case sensitive or insenstive matching\n"
-+               "  -i --filter-known[=PATH]   Ignore known messages. /var/log/known-messages.bin\n"
-+               "                             or the specified path is used as the known messages\n"
-+               "                             database\n"
-                "  -e --pager-end             Immediately jump to the end in the pager\n"
-                "  -f --follow                Follow the journal\n"
-                "  -n --lines[=INTEGER]       Number of journal entries to show\n"
-@@ -450,6 +455,7 @@ static int parse_argv(int argc, char *argv[]) {
-                 { "root",           required_argument, NULL, ARG_ROOT           },
-                 { "header",         no_argument,       NULL, ARG_HEADER         },
-                 { "identifier",     required_argument, NULL, 't'                },
-+                { "filter-known",   optional_argument, NULL, 'i'                },
-                 { "priority",       required_argument, NULL, 'p'                },
-                 { "grep",           required_argument, NULL, 'g'                },
-                 { "case-sensitive", optional_argument, NULL, ARG_CASE_SENSITIVE },
-@@ -491,7 +497,7 @@ static int parse_argv(int argc, char *argv[]) {
-         assert(argc >= 0);
-         assert(argv);
- 
--        while ((c = getopt_long(argc, argv, "hefo:aln::qmb::kD:p:g:c:S:U:t:u:NF:xrM:", options, NULL)) >= 0)
-+        while ((c = getopt_long(argc, argv, "hefo:aln::qmb::kD:p:g:c:S:U:t:i::u:NF:xrM:", options, NULL)) >= 0)
- 
-                 switch (c) {
- 
-@@ -861,6 +867,24 @@ static int parse_argv(int argc, char *argv[]) {
-                                 return log_oom();
-                         break;
- 
-+                case 'i': {
-+                        _cleanup_free_ const char *known_messages_path = NULL;
-+                        if (optarg) {
-+                                r = parse_path_argument_and_warn(optarg, true, (char**) &known_messages_path);
-+                                if (r < 0) {
-+                                        log_error("Failed to parse path to templates file '%s'", optarg);
-+                                        return -EINVAL;
-+                                }
-+                        }
-+                        r = known_messages_get_from_file(known_messages_path ?: "/var/log/known-messages.bin",
-+                                                         &arg_known_messages);
-+                        if (r < 0) {
-+                                log_error("Failed to load known messages file: %s", known_messages_path);
-+                                return -EINVAL;
-+                        }
-+                        break;
-+                }
-+
-                 case 'u':
-                         r = strv_extend(&arg_system_units, optarg);
-                         if (r < 0)
-@@ -2664,6 +2688,25 @@ int main(int argc, char *argv[]) {
-                         }
- #endif
- 
-+                        if (arg_known_messages) {
-+                                _cleanup_free_ char* syslog_identifier;
-+                                _cleanup_free_ char* message;
-+
-+                                syslog_identifier = get_value_for_field(j, "SYSLOG_IDENTIFIER");
-+                                message = get_value_for_field(j, "MESSAGE");
-+
-+                                if (syslog_identifier && message) {
-+                                        r = is_message_known(arg_known_messages, syslog_identifier, message);
-+                                        if (r < 0) {
-+                                                log_error_errno(r, "Failed to lookup message in known messages: %m");
-+                                                goto finish;
-+                                        } else if (r > 0) {
-+                                                need_seek = true;
-+                                                continue;
-+                                        }
-+                                }
-+                        }
-+
-                         flags =
-                                 arg_all * OUTPUT_SHOW_ALL |
-                                 arg_full * OUTPUT_FULL_WIDTH |
-@@ -2753,6 +2796,8 @@ finish:
-         if (arg_compiled_pattern)
-                 pcre2_code_free(arg_compiled_pattern);
- #endif
-+        if (arg_known_messages)
-+                known_messages_free(arg_known_messages);
- 
-         return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS;
- }
-diff --git a/src/journal/meson.build b/src/journal/meson.build
-index e03d6dc232..e8c6f7ade2 100644
---- a/src/journal/meson.build
-+++ b/src/journal/meson.build
-@@ -103,6 +103,8 @@ systemd_cat_sources = files('cat.c')
- 
- journalctl_sources = files('journalctl.c')
- 
-+journalctl_sources += files('filter-known.c', 'filter-known.h')
-+
- if conf.get('HAVE_QRENCODE') == 1
-         journalctl_sources += files('journal-qrcode.c',
-                                     'journal-qrcode.h')
-diff --git a/src/test/meson.build b/src/test/meson.build
-index 5858145b1a..ab512b5f7f 100644
---- a/src/test/meson.build
-+++ b/src/test/meson.build
-@@ -712,6 +712,13 @@ tests += [
-           libxz,
-           liblz4]],
- 
-+        [['src/test/test-filter-known.c',
-+          'src/journal/filter-known.c',
-+          'src/journal/filter-known.h'],
-+         [],
-+         []],
-+
-+
-         [['src/journal/test-mmap-cache.c'],
-          [libjournal_core,
-           libshared],
-diff --git a/src/test/test-filter-known.c b/src/test/test-filter-known.c
-new file mode 100644
-index 0000000000..0d92d72611
---- /dev/null
-+++ b/src/test/test-filter-known.c
-@@ -0,0 +1,66 @@
-+#include "filter-known.h"
-+#include "macro.h"
-+#include "strv.h"
-+#include "util.h"
-+
-+static void test_entry_matches_template(void) {
-+        assert_se(message_matches_template("", "", STRV_MAKE("", "")));
-+        assert_se(!message_matches_template("", "", STRV_MAKE("")));
-+        assert_se(!message_matches_template("", "", STRV_MAKE("", "", "")));
-+
-+        assert_se(message_matches_template("", "message", STRV_MAKE("", "message")));
-+        assert_se(message_matches_template("id", "message", STRV_MAKE("id", "message")));
-+        assert_se(message_matches_template("id", "", STRV_MAKE("id", "")));
-+        assert_se(!message_matches_template("", "message", STRV_MAKE("", "other message")));
-+        assert_se(!message_matches_template("id", "message", STRV_MAKE("other_id", "message")));
-+        assert_se(!message_matches_template("id", "message", STRV_MAKE("id", "message", "more")));
-+        assert_se(!message_matches_template("id", "", STRV_MAKE("", "id")));
-+
-+        char** t0 =             STRV_MAKE("foo", "message with 1 numberword");
-+        assert_se(message_matches_template("foo", "message with 1 numberword", t0));
-+        assert_se(!message_matches_template("foo", "message with 2 numberword", t0));
-+
-+        char** t1 =             STRV_MAKE("foo bar", "part one ", " part two");
-+        assert_se(message_matches_template("foo bar", "part one 1 part two", t1));
-+        assert_se(message_matches_template("foo bar", "part one word part two", t1));
-+        assert_se(message_matches_template("foo bar", "part one 0x324234 part two", t1));
-+        assert_se(!message_matches_template("foo bar", "part one part two", t1));
-+
-+        char **t2 =             STRV_MAKE("id", "p1\t ", "\n\np2\n", " p3");
-+        assert_se(message_matches_template("id", "p1\t w0rd\n\np2\nnumb3r p3", t2));
-+        assert_se(!message_matches_template("id", "p1\t w0rd\n p2\nnumb3r p3", t2));
-+        assert_se(!message_matches_template("id", "p1\t w0rd w0rd\n\np2\nnumb3r p3", t2));
-+
-+        char **t3 =             STRV_MAKE("id", "", "|p1-", "?p2;", "[p3]", "");
-+        assert_se(message_matches_template("id", "1|p1-0x22?p2;55[p3]44", t3));
-+        assert_se(!message_matches_template("id", "|p1-0x22?p2;55[p3]44", t3));
-+        assert_se(!message_matches_template("id", "1|p1-0x22?p2;55[p3]", t3));
-+        assert_se(!message_matches_template("id", "1|p1-0x22?p2;55[p3]44+", t3));
-+}
-+
-+static void test_basal_form(void) {
-+        assert_se(strv_equal(basal_form(""), STRV_MAKE("")));
-+
-+        assert_se(strv_equal(basal_form("3"), STRV_MAKE("","")));
-+
-+        assert_se(strv_equal(basal_form("0x33"), STRV_MAKE("","")));
-+
-+        char** b0 = STRV_MAKE("string with no numberwords");
-+        assert_se(strv_equal(basal_form("string with no numberwords"), b0));
-+
-+        char** b1 = STRV_MAKE("string with ", " numberword");
-+        assert_se(strv_equal(basal_form("string with 1 numberword"), b1));
-+
-+        char** b2 = STRV_MAKE("", " more, stuff -- ");
-+        assert_se(strv_equal(basal_form("0x333 more, stuff -- "), b2));
-+
-+        char** b3 = STRV_MAKE("", " more, stuff -- ", "");
-+        assert_se(strv_equal(basal_form("0x333 more, stuff -- 86"), b3));
-+}
-+
-+int main(int argc, char *argv[]) {
-+        test_entry_matches_template();
-+        test_basal_form();
-+
-+        return 0;
-+}
--- 
-2.21.0.1020.gf2820cf01a-goog
-
diff --git a/sys-apps/journald/files/242-journald-put-pid-in-tag-for-messages-forwarded-to-sy.patch b/sys-apps/journald/files/242-journald-put-pid-in-tag-for-messages-forwarded-to-sy.patch
deleted file mode 100644
index 8dfb5e3..0000000
--- a/sys-apps/journald/files/242-journald-put-pid-in-tag-for-messages-forwarded-to-sy.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 60bae9664fac03b3cc32eb8775e7b9ff34079f38 Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Mon, 11 Feb 2019 14:49:33 -0800
-Subject: [PATCH] journald: put pid in tag for messages forwarded to syslog
-
-journald needs CAP_SYS_ADMIN to forge the original log source's PID when
-forwarding logs to syslog. journald hasn't been granted CAP_SYS_ADMIN due to
-security concerns. Have journald always write the logging source's PID in the
-log tag.
----
- src/journal/journald-syslog.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/src/journal/journald-syslog.c b/src/journal/journald-syslog.c
-index e8b6915335..45e64c4892 100644
---- a/src/journal/journald-syslog.c
-+++ b/src/journal/journald-syslog.c
-@@ -369,8 +369,12 @@ void server_process_syslog_message(
- 
-         syslog_parse_identifier(&msg, &identifier, &pid);
- 
-+        /* journald can't forge SCM_CREDENTIALS on Chrome OS, so add them to
-+         * the syslog tag for rsyslogd */
-+        (void)forward_syslog_raw;
-+
-         if (s->forward_to_syslog)
--                forward_syslog_raw(s, priority, buf, raw_len, ucred, tv);
-+                server_forward_syslog(s, priority, identifier, msg, ucred, tv);
- 
-         if (s->forward_to_kmsg)
-                 server_forward_kmsg(s, priority, identifier, msg, ucred);
--- 
-2.21.0.1020.gf2820cf01a-goog
-
diff --git a/sys-apps/journald/files/242-only-build-install-journald.patch b/sys-apps/journald/files/242-only-build-install-journald.patch
deleted file mode 100644
index 04db3a8..0000000
--- a/sys-apps/journald/files/242-only-build-install-journald.patch
+++ /dev/null
@@ -1,2134 +0,0 @@
-From 312c6967a660919a091cc2872ba2b1a173338180 Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Mon, 3 Dec 2018 17:10:42 -0800
-Subject: [PATCH] only build/install journald
-
----
- meson.build                       | 1621 +----------------------------
- shell-completion/bash/meson.build |    7 +-
- src/core/meson.build              |   45 -
- src/libudev/meson.build           |    9 -
- src/systemd/meson.build           |    9 -
- src/test/meson.build              |  219 ----
- 6 files changed, 5 insertions(+), 1905 deletions(-)
-
-diff --git a/meson.build b/meson.build
-index 79195c9748..7afd6afaf1 100644
---- a/meson.build
-+++ b/meson.build
-@@ -1476,14 +1476,10 @@ add_project_arguments('-include', 'config.h', language : 'c')
- 
- generate_gperfs = find_program('tools/generate-gperfs.py')
- 
--subdir('po')
--subdir('catalog')
- subdir('src/systemd')
- subdir('src/basic')
- subdir('src/libsystemd')
--subdir('src/libsystemd-network')
- subdir('src/journal')
--subdir('src/login')
- 
- libjournal_core = static_library(
-         'journal-core',
-@@ -1547,127 +1543,10 @@ public_programs = []
- subdir('src/libudev')
- subdir('src/shared')
- subdir('src/core')
--subdir('src/shutdown')
--subdir('src/udev')
--subdir('src/network')
--
--subdir('src/analyze')
--subdir('src/journal-remote')
--subdir('src/coredump')
--subdir('src/hostname')
--subdir('src/import')
--subdir('src/kernel-install')
--subdir('src/locale')
--subdir('src/machine')
--subdir('src/portable')
--subdir('src/nspawn')
--subdir('src/resolve')
--subdir('src/timedate')
--subdir('src/timesync')
--subdir('src/vconsole')
--subdir('src/boot/efi')
- 
- subdir('src/test')
--subdir('src/fuzz')
--subdir('rules')
--subdir('test')
--
- ############################################################
- 
--# only static linking apart from libdl, to make sure that the
--# module is linked to all libraries that it uses.
--test_dlopen = executable(
--        'test-dlopen',
--        test_dlopen_c,
--        disable_mempool_c,
--        include_directories : includes,
--        link_with : [libbasic],
--        dependencies : [libdl],
--        build_by_default : want_tests != 'false')
--
--foreach tuple : [['myhostname', 'ENABLE_NSS_MYHOSTNAME'],
--                 ['systemd',    'ENABLE_NSS_SYSTEMD'],
--                 ['mymachines', 'ENABLE_NSS_MYMACHINES'],
--                 ['resolve',    'ENABLE_NSS_RESOLVE']]
--
--        condition = tuple[1] == '' or conf.get(tuple[1]) == 1
--        if condition
--                module = tuple[0]
--
--                sym = 'src/nss-@0@/nss-@0@.sym'.format(module)
--                version_script_arg = join_paths(project_source_root, sym)
--
--                nss = shared_library(
--                        'nss_' + module,
--                        'src/nss-@0@/nss-@0@.c'.format(module),
--                        disable_mempool_c,
--                        version : '2',
--                        include_directories : includes,
--                        # Note that we link NSS modules with '-z nodelete' so that mempools never get orphaned
--                        link_args : ['-Wl,-z,nodelete',
--                                     '-shared',
--                                     '-Wl,--version-script=' + version_script_arg],
--                        link_with : [libsystemd_static,
--                                     libbasic],
--                        dependencies : [threads,
--                                        librt],
--                        link_depends : sym,
--                        install : true,
--                        install_dir : rootlibdir)
--
--                # We cannot use shared_module because it does not support version suffix.
--                # Unfortunately shared_library insists on creating the symlink…
--                meson.add_install_script('sh', '-c',
--                                         'rm $DESTDIR@0@/libnss_@1@.so'
--                                         .format(rootlibdir, module))
--
--                if want_tests != 'false'
--                        test('dlopen-nss_' + module,
--                             test_dlopen,
--                             # path to dlopen must include a slash
--                             args : nss.full_path())
--                endif
--        endif
--endforeach
--
--############################################################
--
--executable('systemd',
--           systemd_sources,
--           include_directories : includes,
--           link_with : [libcore,
--                        libshared],
--           dependencies : [versiondep,
--                           threads,
--                           librt,
--                           libseccomp,
--                           libselinux,
--                           libmount,
--                           libblkid],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--meson.add_install_script(meson_make_symlink,
--                         join_paths(rootlibexecdir, 'systemd'),
--                         join_paths(rootsbindir, 'init'))
--
--exe = executable('systemd-analyze',
--                 systemd_analyze_sources,
--                 include_directories : includes,
--                 link_with : [libcore,
--                              libshared],
--                 dependencies : [versiondep,
--                                 threads,
--                                 librt,
--                                 libseccomp,
--                                 libselinux,
--                                 libmount,
--                                 libblkid],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
- executable('systemd-journald',
-            systemd_journald_sources,
-            include_directories : includes,
-@@ -1705,1103 +1584,6 @@ exe = executable('journalctl',
-                  install_dir : rootbindir)
- public_programs += exe
- 
--executable('systemd-getty-generator',
--           'src/getty-generator/getty-generator.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : systemgeneratordir)
--
--executable('systemd-debug-generator',
--           'src/debug-generator/debug-generator.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : systemgeneratordir)
--
--executable('systemd-run-generator',
--           'src/run-generator/run-generator.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : systemgeneratordir)
--
--executable('systemd-fstab-generator',
--           'src/fstab-generator/fstab-generator.c',
--           include_directories : includes,
--           link_with : [libcore_shared,
--                        libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : systemgeneratordir)
--
--if conf.get('ENABLE_ENVIRONMENT_D') == 1
--        executable('30-systemd-environment-d-generator',
--                   'src/environment-d-generator/environment-d-generator.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : userenvgeneratordir)
--
--        meson.add_install_script(meson_make_symlink,
--                                 join_paths(sysconfdir, 'environment'),
--                                 join_paths(environmentdir, '99-environment.conf'))
--endif
--
--if conf.get('ENABLE_HIBERNATE') == 1
--        executable('systemd-hibernate-resume-generator',
--                   'src/hibernate-resume/hibernate-resume-generator.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : systemgeneratordir)
--
--        executable('systemd-hibernate-resume',
--                   'src/hibernate-resume/hibernate-resume.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--endif
--
--if conf.get('HAVE_BLKID') == 1
--        executable('systemd-gpt-auto-generator',
--                   'src/gpt-auto-generator/gpt-auto-generator.c',
--                   'src/shared/blkid-util.h',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : libblkid,
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : systemgeneratordir)
--
--        exe = executable('systemd-dissect',
--                         'src/dissect/dissect.c',
--                         include_directories : includes,
--                         link_with : [libshared],
--                         install_rpath : rootlibexecdir,
--                         install : true,
--                         install_dir : rootlibexecdir)
--        public_programs += exe
--endif
--
--if conf.get('ENABLE_RESOLVE') == 1
--        executable('systemd-resolved',
--                   systemd_resolved_sources,
--                   include_directories : includes,
--                   link_with : [libshared,
--                                libbasic_gcrypt,
--                                libsystemd_resolve_core],
--                   dependencies : systemd_resolved_dependencies,
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        exe = executable('resolvectl',
--                         resolvectl_sources,
--                         include_directories : includes,
--                         link_with : [libshared,
--                                      libbasic_gcrypt,
--                                      libsystemd_resolve_core],
--                         dependencies : [threads,
--                                         libgpg_error,
--                                         libm,
--                                         libidn],
--                         install_rpath : rootlibexecdir,
--                         install : true)
--        public_programs += exe
--
--        meson.add_install_script(meson_make_symlink,
--                         join_paths(bindir, 'resolvectl'),
--                         join_paths(rootsbindir, 'resolvconf'))
--
--        meson.add_install_script(meson_make_symlink,
--                         join_paths(bindir, 'resolvectl'),
--                         join_paths(bindir, 'systemd-resolve'))
--endif
--
--if conf.get('ENABLE_LOGIND') == 1
--        executable('systemd-logind',
--                   systemd_logind_sources,
--                   include_directories : includes,
--                   link_with : [liblogind_core,
--                                libshared],
--                   dependencies : [threads,
--                                   libacl],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        exe = executable('loginctl',
--                         loginctl_sources,
--                         include_directories : includes,
--                         link_with : [libshared],
--                         dependencies : [threads,
--                                         liblz4,
--                                         libxz],
--                         install_rpath : rootlibexecdir,
--                         install : true,
--                         install_dir : rootbindir)
--        public_programs += exe
--
--        exe = executable('systemd-inhibit',
--                         'src/login/inhibit.c',
--                         include_directories : includes,
--                         link_with : [libshared],
--                         install_rpath : rootlibexecdir,
--                         install : true,
--                         install_dir : rootbindir)
--        public_programs += exe
--
--        if conf.get('HAVE_PAM') == 1
--                version_script_arg = join_paths(project_source_root, pam_systemd_sym)
--                pam_systemd = shared_library(
--                        'pam_systemd',
--                        pam_systemd_c,
--                        name_prefix : '',
--                        include_directories : includes,
--                        link_args : ['-shared',
--                                     '-Wl,--version-script=' + version_script_arg],
--                        link_with : [libsystemd_static,
--                                     libshared_static],
--                        dependencies : [threads,
--                                        libpam,
--                                        libpam_misc],
--                        link_depends : pam_systemd_sym,
--                        install : true,
--                        install_dir : pamlibdir)
--
--                if want_tests != 'false'
--                        test('dlopen-pam_systemd',
--                             test_dlopen,
--                             # path to dlopen must include a slash
--                             args : pam_systemd.full_path())
--                endif
--        endif
--
--        executable('systemd-user-runtime-dir',
--                   user_runtime_dir_sources,
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--endif
--
--if conf.get('HAVE_PAM') == 1
--        executable('systemd-user-sessions',
--                   'src/user-sessions/user-sessions.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--endif
--
--if conf.get('ENABLE_EFI') == 1 and conf.get('HAVE_BLKID') == 1
--        exe = executable('bootctl',
--                         'src/boot/bootctl.c',
--                         include_directories : includes,
--                         link_with : [libshared],
--                         dependencies : [libblkid],
--                         install_rpath : rootlibexecdir,
--                         install : true)
--        public_programs += exe
--
--        executable('systemd-bless-boot',
--                   'src/boot/bless-boot.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [libblkid],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        executable('systemd-bless-boot-generator',
--                   'src/boot/bless-boot-generator.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : systemgeneratordir)
--endif
--
--executable('systemd-boot-check-no-failures',
--           'src/boot/boot-check-no-failures.c',
--           include_directories : includes,
--           link_with : [libshared],
--           dependencies : [libblkid],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--exe = executable('systemd-socket-activate', 'src/activate/activate.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 dependencies : [threads],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--
--if get_option('link-systemctl-shared')
--        systemctl_link_with = [libshared]
--else
--        systemctl_link_with = [libsystemd_static,
--                               libshared_static,
--                               libjournal_client,
--                               libbasic_gcrypt]
--endif
--
--exe = executable('systemctl',
--                 'src/systemctl/systemctl.c',
--                 'src/systemctl/sysv-compat.h',
--                 'src/systemctl/sysv-compat.c',
--                 include_directories : includes,
--                 link_with : systemctl_link_with,
--                 dependencies : [threads,
--                                 libcap,
--                                 libselinux,
--                                 libxz,
--                                 liblz4],
--                 install_rpath : rootlibexecdir,
--                 install : true,
--                 install_dir : rootbindir)
--public_programs += exe
--
--if conf.get('ENABLE_PORTABLED') == 1
--        executable('systemd-portabled',
--                   systemd_portabled_sources,
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [threads],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        exe = executable('portablectl', 'src/portable/portablectl.c',
--                         include_directories : includes,
--                         link_with : [libshared],
--                         dependencies : [threads],
--                         install_rpath : rootlibexecdir,
--                         install : true,
--                         install_dir : rootbindir)
--        public_programs += exe
--endif
--
--foreach alias : ['halt', 'poweroff', 'reboot', 'runlevel', 'shutdown', 'telinit']
--        meson.add_install_script(meson_make_symlink,
--                                 join_paths(rootbindir, 'systemctl'),
--                                 join_paths(rootsbindir, alias))
--endforeach
--
--if conf.get('ENABLE_BACKLIGHT') == 1
--        executable('systemd-backlight',
--                   'src/backlight/backlight.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--endif
--
--if conf.get('ENABLE_RFKILL') == 1
--        executable('systemd-rfkill',
--                   'src/rfkill/rfkill.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--endif
--
--executable('systemd-system-update-generator',
--           'src/system-update-generator/system-update-generator.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : systemgeneratordir)
--
--if conf.get('HAVE_LIBCRYPTSETUP') == 1
--        executable('systemd-cryptsetup',
--                   'src/cryptsetup/cryptsetup.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [libcryptsetup],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        executable('systemd-cryptsetup-generator',
--                   'src/cryptsetup/cryptsetup-generator.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [libcryptsetup],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : systemgeneratordir)
--
--        executable('systemd-veritysetup',
--                   'src/veritysetup/veritysetup.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [libcryptsetup],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        executable('systemd-veritysetup-generator',
--                   'src/veritysetup/veritysetup-generator.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [libcryptsetup],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : systemgeneratordir)
--endif
--
--if conf.get('HAVE_SYSV_COMPAT') == 1
--        executable('systemd-sysv-generator',
--                   'src/sysv-generator/sysv-generator.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : systemgeneratordir)
--
--        executable('systemd-rc-local-generator',
--                   'src/rc-local-generator/rc-local-generator.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : systemgeneratordir)
--endif
--
--if conf.get('ENABLE_HOSTNAMED') == 1
--        executable('systemd-hostnamed',
--                   'src/hostname/hostnamed.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        exe = executable('hostnamectl',
--                         'src/hostname/hostnamectl.c',
--                         include_directories : includes,
--                         link_with : [libshared],
--                         install_rpath : rootlibexecdir,
--                         install : true)
--        public_programs += exe
--endif
--
--if conf.get('ENABLE_LOCALED') == 1
--        if conf.get('HAVE_XKBCOMMON') == 1
--                # logind will load libxkbcommon.so dynamically on its own
--                deps = [libdl]
--        else
--                deps = []
--        endif
--
--        executable('systemd-localed',
--                   systemd_localed_sources,
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : deps,
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        exe = executable('localectl',
--                         localectl_sources,
--                         include_directories : includes,
--                         link_with : [libshared],
--                         install_rpath : rootlibexecdir,
--                         install : true)
--        public_programs += exe
--endif
--
--if conf.get('ENABLE_TIMEDATED') == 1
--        executable('systemd-timedated',
--                   'src/timedate/timedated.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--endif
--
--if conf.get('ENABLE_TIMEDATECTL') == 1
--        exe = executable('timedatectl',
--                         'src/timedate/timedatectl.c',
--                         include_directories : includes,
--                         install_rpath : rootlibexecdir,
--                         link_with : [libshared],
--                         dependencies : [libm],
--                         install : true)
--        public_programs += exe
--endif
--
--if conf.get('ENABLE_TIMESYNCD') == 1
--        executable('systemd-timesyncd',
--                   systemd_timesyncd_sources,
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [threads,
--                                   libm],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        executable('systemd-time-wait-sync',
--                   'src/time-wait-sync/time-wait-sync.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--endif
--
--if conf.get('ENABLE_MACHINED') == 1
--        executable('systemd-machined',
--                   systemd_machined_sources,
--                   include_directories : includes,
--                   link_with : [libmachine_core,
--                                libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        exe = executable('machinectl',
--                         'src/machine/machinectl.c',
--                         include_directories : includes,
--                         link_with : [libshared],
--                         dependencies : [threads,
--                                         libxz,
--                                         liblz4],
--                         install_rpath : rootlibexecdir,
--                         install : true,
--                         install_dir : rootbindir)
--        public_programs += exe
--endif
--
--if conf.get('ENABLE_IMPORTD') == 1
--        executable('systemd-importd',
--                   systemd_importd_sources,
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [threads],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        systemd_pull = executable('systemd-pull',
--                                  systemd_pull_sources,
--                                  include_directories : includes,
--                                  link_with : [libshared],
--                                  dependencies : [versiondep,
--                                                  libcurl,
--                                                  libz,
--                                                  libbzip2,
--                                                  libxz,
--                                                  libgcrypt],
--                                  install_rpath : rootlibexecdir,
--                                  install : true,
--                                  install_dir : rootlibexecdir)
--
--        systemd_import = executable('systemd-import',
--                                    systemd_import_sources,
--                                    include_directories : includes,
--                                    link_with : [libshared],
--                                    dependencies : [libcurl,
--                                                    libz,
--                                                    libbzip2,
--                                                    libxz],
--                                    install_rpath : rootlibexecdir,
--                                    install : true,
--                                    install_dir : rootlibexecdir)
--
--        systemd_import_fs = executable('systemd-import-fs',
--                                    systemd_import_fs_sources,
--                                    include_directories : includes,
--                                    link_with : [libshared],
--                                    install_rpath : rootlibexecdir,
--                                    install : true,
--                                    install_dir : rootlibexecdir)
--
--        systemd_export = executable('systemd-export',
--                                    systemd_export_sources,
--                                    include_directories : includes,
--                                    link_with : [libshared],
--                                    dependencies : [libcurl,
--                                                    libz,
--                                                    libbzip2,
--                                                    libxz],
--                                    install_rpath : rootlibexecdir,
--                                    install : true,
--                                    install_dir : rootlibexecdir)
--
--        public_programs += [systemd_pull, systemd_import, systemd_import_fs, systemd_export]
--endif
--
--if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_LIBCURL') == 1
--        exe = executable('systemd-journal-upload',
--                         systemd_journal_upload_sources,
--                         include_directories : includes,
--                         link_with : [libshared],
--                         dependencies : [versiondep,
--                                         threads,
--                                         libcurl,
--                                         libgnutls,
--                                         libxz,
--                                         liblz4],
--                         install_rpath : rootlibexecdir,
--                         install : true,
--                         install_dir : rootlibexecdir)
--        public_programs += exe
--endif
--
--if conf.get('ENABLE_REMOTE') == 1 and conf.get('HAVE_MICROHTTPD') == 1
--        s_j_remote = executable('systemd-journal-remote',
--                                systemd_journal_remote_sources,
--                                include_directories : includes,
--                                link_with : [libshared,
--                                             libsystemd_journal_remote],
--                                dependencies : [threads,
--                                                libmicrohttpd,
--                                                libgnutls,
--                                                libxz,
--                                                liblz4],
--                                install_rpath : rootlibexecdir,
--                                install : true,
--                                install_dir : rootlibexecdir)
--
--        s_j_gatewayd = executable('systemd-journal-gatewayd',
--                                  systemd_journal_gatewayd_sources,
--                                  include_directories : includes,
--                                  link_with : [libshared],
--                                  dependencies : [threads,
--                                                  libmicrohttpd,
--                                                  libgnutls,
--                                                  libxz,
--                                                  liblz4],
--                                  install_rpath : rootlibexecdir,
--                                  install : true,
--                                  install_dir : rootlibexecdir)
--        public_programs += [s_j_remote, s_j_gatewayd]
--endif
--
--if conf.get('ENABLE_COREDUMP') == 1
--        executable('systemd-coredump',
--                   systemd_coredump_sources,
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [threads,
--                                   libacl,
--                                   libdw,
--                                   libxz,
--                                   liblz4],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        exe = executable('coredumpctl',
--                         coredumpctl_sources,
--                         include_directories : includes,
--                         link_with : [libshared],
--                         dependencies : [threads,
--                                         libxz,
--                                         liblz4],
--                         install_rpath : rootlibexecdir,
--                         install : true)
--        public_programs += exe
--endif
--
--if conf.get('ENABLE_BINFMT') == 1
--        exe = executable('systemd-binfmt',
--                         'src/binfmt/binfmt.c',
--                         include_directories : includes,
--                         link_with : [libshared],
--                         install_rpath : rootlibexecdir,
--                         install : true,
--                         install_dir : rootlibexecdir)
--        public_programs += exe
--
--        meson.add_install_script('sh', '-c',
--                                 mkdir_p.format(binfmtdir))
--        meson.add_install_script('sh', '-c',
--                                 mkdir_p.format(join_paths(sysconfdir, 'binfmt.d')))
--endif
--
--if conf.get('ENABLE_VCONSOLE') == 1
--        executable('systemd-vconsole-setup',
--                   'src/vconsole/vconsole-setup.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--endif
--
--if conf.get('ENABLE_RANDOMSEED') == 1
--        executable('systemd-random-seed',
--                   'src/random-seed/random-seed.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--endif
--
--if conf.get('ENABLE_FIRSTBOOT') == 1
--        executable('systemd-firstboot',
--                   'src/firstboot/firstboot.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [libcrypt],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootbindir)
--endif
--
--executable('systemd-remount-fs',
--           'src/remount-fs/remount-fs.c',
--           include_directories : includes,
--           link_with : [libcore_shared,
--                        libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--executable('systemd-machine-id-setup',
--           'src/machine-id-setup/machine-id-setup-main.c',
--           include_directories : includes,
--           link_with : [libcore_shared,
--                        libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootbindir)
--
--executable('systemd-fsck',
--           'src/fsck/fsck.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--executable('systemd-growfs',
--           'src/partition/growfs.c',
--           include_directories : includes,
--           link_with : [libshared],
--           dependencies : [libcryptsetup],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--executable('systemd-makefs',
--           'src/partition/makefs.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--executable('systemd-sleep',
--           'src/sleep/sleep.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--install_data('src/sleep/sleep.conf',
--             install_dir : pkgsysconfdir)
--
--exe = executable('systemd-sysctl',
--                 'src/sysctl/sysctl.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true,
--                 install_dir : rootlibexecdir)
--public_programs += exe
--
--executable('systemd-ac-power',
--           'src/ac-power/ac-power.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--exe = executable('systemd-detect-virt',
--                 'src/detect-virt/detect-virt.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--exe = executable('systemd-delta',
--                 'src/delta/delta.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--exe = executable('systemd-escape',
--                 'src/escape/escape.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true,
--                 install_dir : rootbindir)
--public_programs += exe
--
--exe = executable('systemd-notify',
--                 'src/notify/notify.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true,
--                 install_dir : rootbindir)
--public_programs += exe
--
--executable('systemd-volatile-root',
--           'src/volatile-root/volatile-root.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--executable('systemd-cgroups-agent',
--           'src/cgroups-agent/cgroups-agent.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--exe = executable('systemd-id128',
--                 'src/id128/id128.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--exe = executable('systemd-path',
--                 'src/path/path.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--exe = executable('systemd-ask-password',
--                 'src/ask-password/ask-password.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true,
--                 install_dir : rootbindir)
--public_programs += exe
--
--executable('systemd-reply-password',
--           'src/reply-password/reply-password.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--exe = executable('systemd-tty-ask-password-agent',
--                 'src/tty-ask-password-agent/tty-ask-password-agent.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true,
--                 install_dir : rootbindir)
--public_programs += exe
--
--exe = executable('systemd-cgls',
--                 'src/cgls/cgls.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--exe = executable('systemd-cgtop',
--                 'src/cgtop/cgtop.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--executable('systemd-initctl',
--           'src/initctl/initctl.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--exe = executable('systemd-mount',
--                 'src/mount/mount-tool.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--meson.add_install_script(meson_make_symlink,
--                         'systemd-mount', join_paths(bindir, 'systemd-umount'))
--
--exe = executable('systemd-run',
--                 'src/run/run.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--exe = executable('systemd-stdio-bridge',
--                 'src/stdio-bridge/stdio-bridge.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 dependencies : [versiondep],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--exe = executable('busctl',
--                 'src/busctl/busctl.c',
--                 'src/busctl/busctl-introspect.c',
--                 'src/busctl/busctl-introspect.h',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--if conf.get('ENABLE_SYSUSERS') == 1
--        exe = executable('systemd-sysusers',
--                         'src/sysusers/sysusers.c',
--                         include_directories : includes,
--                         link_with : [libshared],
--                         install_rpath : rootlibexecdir,
--                         install : true,
--                         install_dir : rootbindir)
--        public_programs += exe
--endif
--
--if conf.get('ENABLE_TMPFILES') == 1
--        exe = executable('systemd-tmpfiles',
--                         'src/tmpfiles/tmpfiles.c',
--                         include_directories : includes,
--                         link_with : [libshared],
--                         dependencies : [libacl],
--                         install_rpath : rootlibexecdir,
--                         install : true,
--                         install_dir : rootbindir)
--        public_programs += exe
--
--        if want_tests != 'false'
--                test('test-systemd-tmpfiles',
--                     test_systemd_tmpfiles_py,
--                     # https://github.com/mesonbuild/meson/issues/2681
--                     args : exe.full_path())
--        endif
--endif
--
--if conf.get('ENABLE_HWDB') == 1
--        exe = executable('systemd-hwdb',
--                         'src/hwdb/hwdb.c',
--                         'src/libsystemd/sd-hwdb/hwdb-internal.h',
--                         include_directories : includes,
--                         link_with : [libudev_static],
--                         install_rpath : udev_rpath,
--                         install : true,
--                         install_dir : rootbindir)
--        public_programs += exe
--endif
--
--if conf.get('ENABLE_QUOTACHECK') == 1
--        executable('systemd-quotacheck',
--                   'src/quotacheck/quotacheck.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--endif
--
--exe = executable('systemd-socket-proxyd',
--                 'src/socket-proxy/socket-proxyd.c',
--                 include_directories : includes,
--                 link_with : [libshared],
--                 dependencies : [threads],
--                 install_rpath : rootlibexecdir,
--                 install : true,
--                 install_dir : rootlibexecdir)
--public_programs += exe
--
--exe = executable('systemd-udevd',
--                 systemd_udevd_sources,
--                 include_directories : includes,
--                 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
--                 link_with : [libudev_core,
--                              libsystemd_network,
--                              libudev_static],
--                 dependencies : [versiondep,
--                                 threads,
--                                 libkmod,
--                                 libidn,
--                                 libacl,
--                                 libblkid],
--                 install_rpath : udev_rpath,
--                 install : true,
--                 install_dir : rootlibexecdir)
--public_programs += exe
--
--exe = executable('udevadm',
--                 udevadm_sources,
--                 c_args : '-DLOG_REALM=LOG_REALM_UDEV',
--                 include_directories : includes,
--                 link_with : [libudev_core,
--                              libsystemd_network,
--                              libudev_static],
--                 dependencies : [versiondep,
--                                 threads,
--                                 libkmod,
--                                 libidn,
--                                 libacl,
--                                 libblkid],
--                 install_rpath : udev_rpath,
--                 install : true,
--                 install_dir : rootbindir)
--public_programs += exe
--
--executable('systemd-shutdown',
--           systemd_shutdown_sources,
--           include_directories : includes,
--           link_with : [libcore_shared,
--                        libshared],
--           dependencies : [libmount],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--executable('systemd-update-done',
--           'src/update-done/update-done.c',
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--executable('systemd-update-utmp',
--           'src/update-utmp/update-utmp.c',
--           include_directories : includes,
--           link_with : [libshared],
--           dependencies : [libaudit],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--if conf.get('HAVE_KMOD') == 1
--        executable('systemd-modules-load',
--                   'src/modules-load/modules-load.c',
--                   include_directories : includes,
--                   link_with : [libshared],
--                   dependencies : [libkmod],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        meson.add_install_script('sh', '-c',
--                                 mkdir_p.format(modulesloaddir))
--        meson.add_install_script('sh', '-c',
--                                 mkdir_p.format(join_paths(sysconfdir, 'modules-load.d')))
--endif
--
--exe = executable('systemd-nspawn',
--                 systemd_nspawn_sources,
--                 include_directories : includes,
--                 link_with : [libcore_shared,
--                              libnspawn_core,
--                              libshared],
--                 dependencies : [libblkid,
--                                 libseccomp],
--                 install_rpath : rootlibexecdir,
--                 install : true)
--public_programs += exe
--
--if conf.get('ENABLE_NETWORKD') == 1
--        executable('systemd-networkd',
--                   systemd_networkd_sources,
--                   include_directories : includes,
--                   link_with : [libnetworkd_core,
--                                libsystemd_network,
--                                libudev_static,
--                                libshared],
--                   dependencies : [threads],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        executable('systemd-networkd-wait-online',
--                   systemd_networkd_wait_online_sources,
--                   include_directories : includes,
--                   link_with : [libnetworkd_core,
--                                libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootlibexecdir)
--
--        exe = executable('networkctl',
--                   networkctl_sources,
--                   include_directories : includes,
--                   link_with : [libsystemd_network,
--                              libshared],
--                   install_rpath : rootlibexecdir,
--                   install : true,
--                   install_dir : rootbindir)
--        public_programs += exe
--endif
--
--executable('systemd-sulogin-shell',
--           ['src/sulogin-shell/sulogin-shell.c'],
--           include_directories : includes,
--           link_with : [libshared],
--           install_rpath : rootlibexecdir,
--           install : true,
--           install_dir : rootlibexecdir)
--
--############################################################
--
--custom_target(
--        'systemd-runtest.env',
--        output : 'systemd-runtest.env',
--        command : ['sh', '-c', '{ ' +
--                   'echo SYSTEMD_TEST_DATA=@0@; '.format(join_paths(project_source_root, 'test')) +
--                   'echo SYSTEMD_CATALOG_DIR=@0@; '.format(join_paths(meson.current_build_dir(), 'catalog')) +
--                   '} >@OUTPUT@'],
--        build_by_default : true)
--
- foreach tuple : tests
-         sources = tuple[0]
-         link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
-@@ -2817,8 +1599,9 @@ foreach tuple : tests
-                 timeout = type.split('=')[1].to_int()
-                 type = ''
-         endif
--
--        if condition == '' or conf.get(condition) == 1
-+        if want_tests == 'false'
-+                message('Not compiling @0@ because tests is set to false'.format(name))
-+        elif condition == '' or conf.get(condition) == 1
-                 exe = executable(
-                         name,
-                         sources,
-@@ -2827,7 +1610,6 @@ foreach tuple : tests
-                         dependencies : [versiondep,
-                                         dependencies],
-                         c_args : defs,
--                        build_by_default : want_tests != 'false',
-                         install_rpath : rootlibexecdir,
-                         install : install_tests,
-                         install_dir : join_paths(testsdir, type))
-@@ -2836,7 +1618,7 @@ foreach tuple : tests
-                         message('@0@ is a manual test'.format(name))
-                 elif type == 'unsafe' and want_tests != 'unsafe'
-                         message('@0@ is an unsafe test'.format(name))
--                elif want_tests != 'false'
-+                else
-                         test(name, exe,
-                              env : test_env,
-                              timeout : timeout)
-@@ -2846,193 +1628,7 @@ foreach tuple : tests
-         endif
- endforeach
- 
--exe = executable(
--        'test-libsystemd-sym',
--        test_libsystemd_sym_c,
--        include_directories : includes,
--        link_with : [libsystemd],
--        build_by_default : want_tests != 'false',
--        install : install_tests,
--        install_dir : testsdir)
--if want_tests != 'false'
--        test('test-libsystemd-sym', exe)
--endif
--
--exe = executable(
--        'test-libsystemd-static-sym',
--        test_libsystemd_sym_c,
--        include_directories : includes,
--        link_with : [install_libsystemd_static],
--        dependencies : [threads], # threads is already included in dependencies on the library,
--                                  # but does not seem to get propagated. Add here as a work-around.
--        build_by_default : want_tests != 'false' and static_libsystemd_pic,
--        install : install_tests and static_libsystemd_pic,
--        install_dir : testsdir)
--if want_tests != 'false' and static_libsystemd_pic
--        test('test-libsystemd-static-sym', exe)
--endif
--
--exe = executable(
--        'test-libudev-sym',
--        test_libudev_sym_c,
--        include_directories : includes,
--        c_args : '-Wno-deprecated-declarations',
--        link_with : [libudev],
--        build_by_default : want_tests != 'false',
--        install : install_tests,
--        install_dir : testsdir)
--if want_tests != 'false'
--        test('test-libudev-sym', exe)
--endif
--
--exe = executable(
--        'test-libudev-static-sym',
--        test_libudev_sym_c,
--        include_directories : includes,
--        c_args : '-Wno-deprecated-declarations',
--        link_with : [install_libudev_static],
--        build_by_default : want_tests != 'false' and static_libudev_pic,
--        install : install_tests and static_libudev_pic,
--        install_dir : testsdir)
--if want_tests != 'false' and static_libudev_pic
--        test('test-libudev-static-sym', exe)
--endif
--
--############################################################
--
--fuzzer_exes = []
--
--if get_option('tests') != 'false'
--foreach tuple : fuzzers
--        sources = tuple[0]
--        link_with = tuple[1].length() > 0 ? tuple[1] : [libshared]
--        dependencies = tuple[2]
--        defs = tuple.length() >= 4 ? tuple[3] : []
--        incs = tuple.length() >= 5 ? tuple[4] : includes
--
--        if fuzzer_build
--                dependencies += fuzzing_engine
--        else
--                sources += 'src/fuzz/fuzz-main.c'
--        endif
--
--        name = sources[0].split('/')[-1].split('.')[0]
--
--        fuzzer_exes += executable(
--                name,
--                sources,
--                include_directories : [incs, include_directories('src/fuzz')],
--                link_with : link_with,
--                dependencies : dependencies,
--                c_args : defs,
--                install : false)
--endforeach
--endif
--
--run_target('fuzzers',
--        depends : fuzzer_exes,
--        command : ['true'])
--
--############################################################
--
--make_directive_index_py = find_program('tools/make-directive-index.py')
--make_man_index_py = find_program('tools/make-man-index.py')
--xml_helper_py = find_program('tools/xml_helper.py')
--hwdb_update_sh = find_program('tools/meson-hwdb-update.sh')
--
--subdir('units')
--subdir('sysctl.d')
--subdir('sysusers.d')
--subdir('tmpfiles.d')
--subdir('presets')
--subdir('hwdb')
--subdir('network')
--subdir('man')
- subdir('shell-completion/bash')
--subdir('shell-completion/zsh')
--subdir('docs/sysvinit')
--subdir('docs/var-log')
--
--install_subdir('factory/etc',
--               install_dir : factorydir)
--
--install_data('xorg/50-systemd-user.sh',
--             install_dir : xinitrcdir)
--install_data('modprobe.d/systemd.conf',
--             install_dir : modprobedir)
--install_data('LICENSE.GPL2',
--             'LICENSE.LGPL2.1',
--             'NEWS',
--             'README',
--             'docs/CODING_STYLE.md',
--             'docs/DISTRO_PORTING.md',
--             'docs/ENVIRONMENT.md',
--             'docs/HACKING.md',
--             'docs/TRANSIENT-SETTINGS.md',
--             'docs/TRANSLATORS.md',
--             'docs/UIDS-GIDS.md',
--             'src/libsystemd/sd-bus/GVARIANT-SERIALIZATION',
--             install_dir : docdir)
--
--meson.add_install_script('sh', '-c', mkdir_p.format(systemdstatedir))
--meson.add_install_script('sh', '-c', 'touch $DESTDIR@0@'.format(prefixdir))
--
--############################################################
--
--meson_check_help = find_program('tools/meson-check-help.sh')
--
--foreach exec : public_programs
--        name = exec.full_path().split('/')[-1]
--        if want_tests != 'false'
--                test('check-help-' + name,
--                     meson_check_help,
--                     args : exec.full_path())
--        endif
--endforeach
--
--############################################################
--
--# Enable tests for all supported sanitizers
--foreach tuple : sanitizers
--        sanitizer = tuple[0]
--        build = tuple[1]
--
--        if cc.has_link_argument('-fsanitize=@0@'.format(sanitizer))
--                prev = ''
--                foreach p : fuzz_regression_tests
--                        b = p.split('/')[-2]
--                        c = p.split('/')[-1]
--
--                        name = '@0@:@1@'.format(b, sanitizer)
--
--                        if name != prev
--                                if want_tests == 'false'
--                                        message('Not compiling @0@ because tests is set to false'.format(name))
--                                elif slow_tests
--                                        exe = custom_target(
--                                                name,
--                                                output : name,
--                                                depends : build,
--                                                command : [env, 'ln', '-fs',
--                                                           join_paths(build.full_path(), b),
--                                                           '@OUTPUT@'],
--                                                build_by_default : true)
--                                else
--                                        message('Not compiling @0@ because slow-tests is set to false'.format(name))
--                                endif
--                        endif
--                        prev = name
--
--                        if want_tests != 'false' and slow_tests
--                                test('@0@:@1@:@2@'.format(b, c, sanitizer),
--                                     env,
--                                     args : [exe.full_path(),
--                                             join_paths(project_source_root, p)])
--                        endif
--                endforeach
--        endif
--endforeach
--
- 
- ############################################################
- 
-@@ -3078,212 +1674,3 @@ if git.found()
-                            '--prefix', 'systemd-@0@/'.format(git_head),
-                            'HEAD'])
- endif
--
--############################################################
--
--meson_check_api_docs_sh = find_program('tools/meson-check-api-docs.sh')
--run_target(
--        'check-api-docs',
--        depends : [man, libsystemd, libudev],
--        command : [meson_check_api_docs_sh, libsystemd.full_path(), libudev.full_path()])
--
--############################################################
--
--status = [
--        '@0@ @1@'.format(meson.project_name(), meson.project_version()),
--
--        'split /usr:                        @0@'.format(split_usr),
--        'split bin-sbin:                    @0@'.format(split_bin),
--        'prefix directory:                  @0@'.format(prefixdir),
--        'rootprefix directory:              @0@'.format(rootprefixdir),
--        'sysconf directory:                 @0@'.format(sysconfdir),
--        'include directory:                 @0@'.format(includedir),
--        'lib directory:                     @0@'.format(libdir),
--        'rootlib directory:                 @0@'.format(rootlibdir),
--        'SysV init scripts:                 @0@'.format(sysvinit_path),
--        'SysV rc?.d directories:            @0@'.format(sysvrcnd_path),
--        'PAM modules directory:             @0@'.format(pamlibdir),
--        'PAM configuration directory:       @0@'.format(pamconfdir),
--        'RPM macros directory:              @0@'.format(rpmmacrosdir),
--        'modprobe.d directory:              @0@'.format(modprobedir),
--        'D-Bus policy directory:            @0@'.format(dbuspolicydir),
--        'D-Bus session directory:           @0@'.format(dbussessionservicedir),
--        'D-Bus system directory:            @0@'.format(dbussystemservicedir),
--        'bash completions directory:        @0@'.format(bashcompletiondir),
--        'zsh completions directory:         @0@'.format(zshcompletiondir),
--        'extra start script:                @0@'.format(get_option('rc-local')),
--        'extra stop script:                 @0@'.format(get_option('halt-local')),
--        'debug shell:                       @0@ @ @1@'.format(get_option('debug-shell'),
--                                                              get_option('debug-tty')),
--        'TTY GID:                           @0@'.format(tty_gid),
--        'users GID:                         @0@'.format(substs.get('USERS_GID')),
--        'maximum system UID:                @0@'.format(system_uid_max),
--        'maximum system GID:                @0@'.format(system_gid_max),
--        'minimum dynamic UID:               @0@'.format(dynamic_uid_min),
--        'maximum dynamic UID:               @0@'.format(dynamic_uid_max),
--        'minimum container UID base:        @0@'.format(container_uid_base_min),
--        'maximum container UID base:        @0@'.format(container_uid_base_max),
--        '/dev/kvm access mode:              @0@'.format(get_option('dev-kvm-mode')),
--        'render group access mode:          @0@'.format(get_option('group-render-mode')),
--        'certificate root directory:        @0@'.format(get_option('certificate-root')),
--        'support URL:                       @0@'.format(support_url),
--        'nobody user name:                  @0@'.format(nobody_user),
--        'nobody group name:                 @0@'.format(nobody_group),
--        'fallback hostname:                 @0@'.format(get_option('fallback-hostname')),
--        'symbolic gateway hostnames:        @0@'.format(', '.join(gateway_hostnames)),
--
--        'default DNSSEC mode:               @0@'.format(default_dnssec),
--        'default DNS-over-TLS mode:         @0@'.format(default_dns_over_tls),
--        'default cgroup hierarchy:          @0@'.format(default_hierarchy),
--        'default net.naming-scheme setting: @0@'.format(default_net_naming_scheme),
--        'default KillUserProcesses setting: @0@'.format(kill_user_processes),
--        'default locale:                    @0@'.format(default_locale)]
--
--alt_dns_servers = '\n                                            '.join(dns_servers.split(' '))
--alt_ntp_servers = '\n                                            '.join(ntp_servers.split(' '))
--status += [
--        'default DNS servers:               @0@'.format(alt_dns_servers),
--        'default NTP servers:               @0@'.format(alt_ntp_servers)]
--
--alt_time_epoch = run_command('date', '-Is', '-u', '-d',
--                             '@@0@'.format(time_epoch)).stdout().strip()
--status += [
--        'time epoch:                        @0@ (@1@)'.format(time_epoch, alt_time_epoch)]
--
--status += [
--        'static libsystemd:                 @0@'.format(static_libsystemd),
--        'static libudev:                    @0@'.format(static_libudev)]
--
--# TODO:
--# CFLAGS:   ${OUR_CFLAGS} ${CFLAGS}
--# CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS}
--# LDFLAGS:  ${OUR_LDFLAGS} ${LDFLAGS}
--
--if conf.get('ENABLE_EFI') == 1
--        status += 'efi arch:                          @0@'.format(efi_arch)
--
--        if have_gnu_efi
--                status += [
--                        'EFI machine type:                  @0@'.format(EFI_MACHINE_TYPE_NAME),
--                        'EFI CC                             @0@'.format(' '.join(efi_cc)),
--                        'EFI lib directory:                 @0@'.format(efi_libdir),
--                        'EFI lds directory:                 @0@'.format(efi_ldsdir),
--                        'EFI include directory:             @0@'.format(efi_incdir)]
--        endif
--endif
--
--found = []
--missing = []
--
--foreach tuple : [
--        ['libcryptsetup'],
--        ['PAM'],
--        ['AUDIT'],
--        ['IMA'],
--        ['AppArmor'],
--        ['SELinux'],
--        ['SECCOMP'],
--        ['SMACK'],
--        ['zlib'],
--        ['xz'],
--        ['lz4'],
--        ['bzip2'],
--        ['ACL'],
--        ['gcrypt'],
--        ['qrencode'],
--        ['microhttpd'],
--        ['gnutls'],
--        ['openssl'],
--        ['libcurl'],
--        ['idn'],
--        ['libidn2'],
--        ['libidn'],
--        ['libiptc'],
--        ['elfutils'],
--        ['binfmt'],
--        ['vconsole'],
--        ['quotacheck'],
--        ['tmpfiles'],
--        ['environment.d'],
--        ['sysusers'],
--        ['firstboot'],
--        ['randomseed'],
--        ['backlight'],
--        ['rfkill'],
--        ['logind'],
--        ['machined'],
--        ['portabled'],
--        ['importd'],
--        ['hostnamed'],
--        ['timedated'],
--        ['timesyncd'],
--        ['localed'],
--        ['networkd'],
--        ['resolve'],
--        ['DNS-over-TLS(gnutls)',  conf.get('DNS_OVER_TLS_USE_GNUTLS') == 1],
--        ['DNS-over-TLS(openssl)', conf.get('DNS_OVER_TLS_USE_OPENSSL') == 1],
--        ['coredump'],
--        ['polkit'],
--        ['legacy pkla',      install_polkit_pkla],
--        ['efi'],
--        ['gnu-efi',          have_gnu_efi],
--        ['kmod'],
--        ['xkbcommon'],
--        ['pcre2'],
--        ['blkid'],
--        ['dbus'],
--        ['glib'],
--        ['nss-myhostname'],
--        ['nss-mymachines'],
--        ['nss-resolve'],
--        ['nss-systemd'],
--        ['hwdb'],
--        ['tpm'],
--        ['man pages',        want_man],
--        ['html pages',       want_html],
--        ['man page indices', want_man and have_lxml],
--        ['SysV compat'],
--        ['utmp'],
--        ['ldconfig'],
--        ['hibernate'],
--        ['adm group',        get_option('adm-group')],
--        ['wheel group',      get_option('wheel-group')],
--        ['gshadow'],
--        ['debug hashmap'],
--        ['debug mmap cache'],
--        ['debug siphash'],
--        ['debug udev'],
--        ['valgrind',         conf.get('VALGRIND') == 1],
--        ['trace logging',    conf.get('LOG_TRACE') == 1],
--        ['link-udev-shared',      get_option('link-udev-shared')],
--        ['link-systemctl-shared', get_option('link-systemctl-shared')],
--]
--
--        if tuple.length() >= 2
--                cond = tuple[1]
--        else
--                ident1 = 'HAVE_' + tuple[0].underscorify().to_upper()
--                ident2 = 'ENABLE_' + tuple[0].underscorify().to_upper()
--                cond = conf.get(ident1, 0) == 1 or conf.get(ident2, 0) == 1
--        endif
--        if cond
--                found += tuple[0]
--        else
--                missing += tuple[0]
--        endif
--endforeach
--
--status += [
--        '',
--        'enabled features: @0@'.format(', '.join(found)),
--        '',
--        'disabled features: @0@'.format(', '.join(missing)),
--        '']
--message('\n         '.join(status))
--
--if rootprefixdir != rootprefix_default
--        warning('\n' +
--                'Note that the installation prefix was changed to "@0@".\n'.format(rootprefixdir) +
--                'systemd used fixed names for unit file directories and other paths, so anything\n' +
--                'except the default ("@0@") is strongly discouraged.'.format(rootprefix_default))
--endif
-diff --git a/shell-completion/bash/meson.build b/shell-completion/bash/meson.build
-index 0d3022b1e9..31f903e1d1 100644
---- a/shell-completion/bash/meson.build
-+++ b/shell-completion/bash/meson.build
-@@ -43,10 +43,5 @@ if bashcompletiondir != 'no'
-                  ['timedatectl',         'ENABLE_TIMEDATED'],
-                 ]
- 
--        foreach item : items
--                if item[1] == '' or conf.get(item[1]) == 1
--                        install_data(item[0],
--                                     install_dir : bashcompletiondir)
--                endif
--        endforeach
-+        install_data('journalctl', install_dir : bashcompletiondir)
- endif
-diff --git a/src/core/meson.build b/src/core/meson.build
-index 86ab35d818..a1cb5f985d 100644
---- a/src/core/meson.build
-+++ b/src/core/meson.build
-@@ -175,48 +175,3 @@ libcore = static_library(
-                         libmount])
- 
- systemd_sources = files('main.c')
--
--in_files = [['macros.systemd',   rpmmacrosdir],
--            ['system.conf',      pkgsysconfdir],
--            ['systemd.pc',       pkgconfigdatadir],
--            ['triggers.systemd', '']]
--
--foreach item : in_files
--        file = item[0]
--        dir = item[1]
--
--        configure_file(
--                input : file + '.in',
--                output : file,
--                configuration : substs,
--                install_dir : dir == 'no' ? '' : dir)
--endforeach
--
--install_data('org.freedesktop.systemd1.conf',
--             install_dir : dbuspolicydir)
--install_data('org.freedesktop.systemd1.service',
--             install_dir : dbussystemservicedir)
--
--policy = configure_file(
--        input : 'org.freedesktop.systemd1.policy.in',
--        output : 'org.freedesktop.systemd1.policy',
--        configuration : substs)
--install_data(policy,
--             install_dir : polkitpolicydir)
--
--install_data('user.conf',
--             install_dir : pkgsysconfdir)
--
--meson.add_install_script('sh', '-c', mkdir_p.format(systemshutdowndir))
--meson.add_install_script('sh', '-c', mkdir_p.format(systemsleepdir))
--meson.add_install_script('sh', '-c', mkdir_p.format(systemgeneratordir))
--meson.add_install_script('sh', '-c', mkdir_p.format(usergeneratordir))
--
--meson.add_install_script('sh', '-c',
--                         mkdir_p.format(join_paths(pkgsysconfdir, 'system/multi-user.target.wants')))
--meson.add_install_script('sh', '-c',
--                         mkdir_p.format(join_paths(pkgsysconfdir, 'system/getty.target.wants')))
--meson.add_install_script('sh', '-c',
--                         mkdir_p.format(join_paths(pkgsysconfdir, 'user')))
--meson.add_install_script('sh', '-c',
--                         mkdir_p.format(join_paths(sysconfdir, 'xdg/systemd')))
-diff --git a/src/libudev/meson.build b/src/libudev/meson.build
-index 88189748d3..b6caf0da0b 100644
---- a/src/libudev/meson.build
-+++ b/src/libudev/meson.build
-@@ -18,12 +18,3 @@ libudev_sources = files('''
- 
- libudev_sym = files('libudev.sym')
- libudev_sym_path = meson.current_source_dir() + '/libudev.sym'
--
--install_headers('libudev.h')
--libudev_h_path = '@0@/libudev.h'.format(meson.current_source_dir())
--
--configure_file(
--        input : 'libudev.pc.in',
--        output : 'libudev.pc',
--        configuration : substs,
--        install_dir : pkgconfiglibdir == 'no' ? '' : pkgconfiglibdir)
-diff --git a/src/systemd/meson.build b/src/systemd/meson.build
-index 75c48b07a5..4c8269cfc7 100644
---- a/src/systemd/meson.build
-+++ b/src/systemd/meson.build
-@@ -1,17 +1,8 @@
- # SPDX-License-Identifier: LGPL-2.1+
- 
- _systemd_headers = '''
--        sd-bus.h
--        sd-bus-protocol.h
--        sd-bus-vtable.h
--        sd-daemon.h
--        sd-device.h
--        sd-event.h
--        sd-hwdb.h
-         sd-id128.h
-         sd-journal.h
--        sd-login.h
--        sd-messages.h
- '''.split()
- 
- # https://github.com/mesonbuild/meson/issues/1633
-diff --git a/src/test/meson.build b/src/test/meson.build
-index ae970cf8a0..5858145b1a 100644
---- a/src/test/meson.build
-+++ b/src/test/meson.build
-@@ -13,8 +13,6 @@ test_include_dir = include_directories('.')
- 
- path = run_command('sh', ['-c', 'echo "$PATH"']).stdout()
- test_env = environment()
--test_env.set('SYSTEMD_KBD_MODEL_MAP', kbd_model_map)
--test_env.set('SYSTEMD_LANGUAGE_FALLBACK_MAP', language_fallback_map)
- test_env.set('PATH', path)
- test_env.prepend('PATH', meson.build_root())
- 
-@@ -30,14 +28,6 @@ test_libsystemd_sym_c = custom_target(
-         capture : true,
-         build_by_default : want_tests != 'false')
- 
--test_libudev_sym_c = custom_target(
--        'test-libudev-sym.c',
--        input : [libudev_sym_path, libudev_h_path],
--        output : 'test-libudev-sym.c',
--        command : [generate_sym_test_py, '@INPUT0@', '@INPUT1@'],
--        capture : true,
--        build_by_default : want_tests != 'false')
--
- test_dlopen_c = files('test-dlopen.c')
- 
- ############################################################
-@@ -51,17 +41,6 @@ tests += [
-          [],
-          []],
- 
--        [['src/test/test-engine.c',
--          'src/test/test-helper.c'],
--         [libcore,
--          libudev,
--          libshared],
--         [threads,
--          librt,
--          libseccomp,
--          libselinux,
--          libmount,
--          libblkid]],
- 
-         [['src/test/test-emergency-action.c'],
-          [libcore,
-@@ -125,13 +104,6 @@ tests += [
-           libmount,
-           libblkid],
-          '', 'unsafe'],
--
--        [['src/test/test-dns-domain.c'],
--         [libcore,
--          libshared,
--          libsystemd_network],
--         []],
--
-         [['src/test/test-boot-timestamps.c'],
-          [],
-          [],
-@@ -265,10 +237,6 @@ tests += [
-          [],
-          []],
- 
--        [['src/test/test-fs-util.c'],
--         [],
--         []],
--
-         [['src/test/test-proc-cmdline.c'],
-          [],
-          []],
-@@ -473,24 +441,6 @@ tests += [
-          [],
-          []],
- 
--        [['src/test/test-tables.c',
--          'src/shared/test-tables.h',
--          'src/journal/journald-server.c',
--          'src/journal/journald-server.h'],
--         [libcore,
--          libjournal_core,
--          libudev_core,
--          libudev_static,
--          libsystemd_network,
--          libshared],
--         [threads,
--          libseccomp,
--          libmount,
--          libxz,
--          liblz4,
--          libblkid],
--         '', '', [], libudev_core_includes],
--
-         [['src/test/test-prioq.c'],
-          [],
-          []],
-@@ -574,17 +524,6 @@ tests += [
-           libshared],
-          []],
- 
--        [['src/test/test-cgroup-mask.c',
--          'src/test/test-helper.c'],
--         [libcore,
--          libshared],
--         [threads,
--          librt,
--          libseccomp,
--          libselinux,
--          libmount,
--          libblkid]],
--
-         [['src/test/test-cgroup-util.c'],
-          [],
-          []],
-@@ -605,17 +544,6 @@ tests += [
-          [],
-          []],
- 
--        [['src/test/test-path.c',
--          'src/test/test-helper.c'],
--         [libcore,
--          libshared],
--         [threads,
--          librt,
--          libseccomp,
--          libselinux,
--          libmount,
--          libblkid]],
--
-         [['src/test/test-execute.c',
-           'src/test/test-helper.c'],
-          [libcore,
-@@ -646,17 +574,6 @@ tests += [
-          [],
-          []],
- 
--        [['src/test/test-sched-prio.c',
--          'src/test/test-helper.c'],
--         [libcore,
--          libshared],
--         [threads,
--          librt,
--          libseccomp,
--          libselinux,
--          libmount,
--          libblkid]],
--
-         [['src/test/test-conf-files.c'],
-          [],
-          []],
-@@ -680,26 +597,10 @@ tests += [
-          [],
-          []],
- 
--        [['src/test/test-journal-importer.c'],
--         [],
--         []],
--
-         [['src/test/test-libudev.c'],
-          [libshared],
-          []],
- 
--        [['src/test/test-udev.c'],
--         [libudev_core,
--          libudev_static,
--          libsystemd_network,
--          libshared],
--         [threads,
--          librt,
--          libblkid,
--          libkmod,
--          libacl],
--         '', 'manual', '-DLOG_REALM=LOG_REALM_UDEV'],
--
-         [['src/test/test-id128.c'],
-          [],
-          []],
-@@ -718,13 +619,6 @@ tests += [
-          [libdl],
-          'ENABLE_NSS', 'manual'],
- 
--        [['src/test/test-umount.c',
--          'src/shutdown/umount.c',
--          'src/shutdown/umount.h'],
--         [libcore_shared,
--          libshared],
--         [libmount]],
--
-         [['src/test/test-bus-util.c'],
-          [],
-          []],
-@@ -825,13 +719,6 @@ tests += [
-           libxz,
-           liblz4]],
- 
--        [['src/journal/test-catalog.c'],
--         [libjournal_core,
--          libshared],
--         [threads,
--          libxz,
--          liblz4]],
--
-         [['src/journal/test-compress.c'],
-          [libjournal_core,
-           libshared],
-@@ -963,12 +850,6 @@ tests += [
-           libsystemd],
-          [threads]],
- 
--        [['src/libsystemd/sd-device/test-udev-device-thread.c'],
--         [libbasic,
--          libshared_static,
--          libudev],
--         [threads]],
--
-         [['src/libsystemd/sd-device/test-sd-device-monitor.c'],
-          [],
-          []],
-@@ -982,103 +863,3 @@ if cxx_cmd != ''
-                  []]
-         ]
- endif
--
--############################################################
--
--tests += [
--        [['src/libsystemd-network/test-dhcp-option.c',
--          'src/libsystemd-network/dhcp-protocol.h',
--          'src/libsystemd-network/dhcp-internal.h'],
--         [libshared,
--          libsystemd_network],
--         []],
--
--        [['src/libsystemd-network/test-sd-dhcp-lease.c',
--          'src/libsystemd-network/dhcp-lease-internal.h'],
--         [libshared,
--          libsystemd_network],
--         []],
--
--        [['src/libsystemd-network/test-dhcp-client.c',
--          'src/libsystemd-network/dhcp-protocol.h',
--          'src/libsystemd-network/dhcp-internal.h',
--          'src/systemd/sd-dhcp-client.h'],
--         [libshared,
--          libsystemd_network],
--         []],
--
--        [['src/libsystemd-network/test-dhcp-server.c'],
--         [libshared,
--          libsystemd_network],
--         []],
--
--        [['src/libsystemd-network/test-ipv4ll.c',
--          'src/libsystemd-network/arp-util.h',
--          'src/systemd/sd-ipv4ll.h'],
--         [libshared,
--          libsystemd_network],
--         []],
--
--        [['src/libsystemd-network/test-ipv4ll-manual.c',
--          'src/systemd/sd-ipv4ll.h'],
--         [libshared,
--          libsystemd_network],
--         [],
--         '', 'manual'],
--
--        [['src/libsystemd-network/test-acd.c',
--          'src/systemd/sd-ipv4acd.h'],
--         [libshared,
--          libsystemd_network],
--         [],
--         '', 'manual'],
--
--        [['src/libsystemd-network/test-ndisc-rs.c',
--          'src/libsystemd-network/dhcp-identifier.h',
--          'src/libsystemd-network/dhcp-identifier.c',
--          'src/libsystemd-network/icmp6-util.h',
--          'src/systemd/sd-dhcp6-client.h',
--          'src/systemd/sd-ndisc.h'],
--         [libshared,
--          libsystemd_network],
--         []],
--
--        [['src/libsystemd-network/test-ndisc-ra.c',
--          'src/libsystemd-network/icmp6-util.h',
--          'src/systemd/sd-ndisc.h'],
--         [libshared,
--          libsystemd_network],
--         []],
--
--        [['src/libsystemd-network/test-dhcp6-client.c',
--          'src/libsystemd-network/dhcp-identifier.h',
--          'src/libsystemd-network/dhcp-identifier.c',
--          'src/libsystemd-network/dhcp6-internal.h',
--          'src/systemd/sd-dhcp6-client.h'],
--         [libshared,
--          libsystemd_network],
--         []],
--
--        [['src/libsystemd-network/test-lldp.c'],
--         [libshared,
--          libsystemd_network],
--         []],
--]
--
--############################################################
--
--tests += [
--        [['src/login/test-login-shared.c'],
--         [],
--         []],
--
--        [['src/login/test-inhibit.c'],
--         [],
--         [],
--         '', 'manual'],
--
--        [['src/login/test-login-tables.c'],
--         [liblogind_core,
--          libshared],
--         [threads]],
--]
--- 
-2.21.0.1020.gf2820cf01a-goog
-
diff --git a/sys-apps/journald/files/242-set-values-in-journald.conf.patch b/sys-apps/journald/files/242-set-values-in-journald.conf.patch
deleted file mode 100644
index 9499a7bf..0000000
--- a/sys-apps/journald/files/242-set-values-in-journald.conf.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From e52b208c76625da434f7f123679dfdbc78d11110 Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Wed, 5 Dec 2018 16:59:57 -0800
-Subject: [PATCH] set values in journald.conf
-
----
- src/journal/journald.conf | 16 ++++++++--------
- 1 file changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/src/journal/journald.conf b/src/journal/journald.conf
-index 2f1c661153..ae09170302 100644
---- a/src/journal/journald.conf
-+++ b/src/journal/journald.conf
-@@ -12,24 +12,24 @@
- # See journald.conf(5) for details.
- 
- [Journal]
--#Storage=auto
--#Compress=yes
--#Seal=yes
--#SplitMode=uid
-+Storage=persistent
-+Compress=no
-+Seal=no
-+SplitMode=none
- #SyncIntervalSec=5m
- #RateLimitIntervalSec=30s
- #RateLimitBurst=10000
--#SystemMaxUse=
-+SystemMaxUse=200M
- #SystemKeepFree=
--#SystemMaxFileSize=
-+SystemMaxFileSize=40M
- #SystemMaxFiles=100
- #RuntimeMaxUse=
- #RuntimeKeepFree=
- #RuntimeMaxFileSize=
- #RuntimeMaxFiles=100
- #MaxRetentionSec=
--#MaxFileSec=1month
--#ForwardToSyslog=no
-+MaxFileSec=0
-+ForwardToSyslog=yes
- #ForwardToKMsg=no
- #ForwardToConsole=no
- #ForwardToWall=yes
--- 
-2.21.0.1020.gf2820cf01a-goog
-
diff --git a/sys-apps/journald/files/242-support-journald-running-without-systemd.patch b/sys-apps/journald/files/242-support-journald-running-without-systemd.patch
deleted file mode 100644
index 6d4ff98a1..0000000
--- a/sys-apps/journald/files/242-support-journald-running-without-systemd.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From ca2e7142b50e5ae4a7139e3cb2d81701bf437c11 Mon Sep 17 00:00:00 2001
-From: Chris Morin <cmtm@google.com>
-Date: Mon, 3 Dec 2018 17:49:00 -0800
-Subject: [PATCH] support journald running without systemd
-
----
- src/journal/journald-server.c | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
-index 2a960ebb3e..4850252897 100644
---- a/src/journal/journald-server.c
-+++ b/src/journal/journald-server.c
-@@ -1988,9 +1988,17 @@ int server_init(Server *s) {
-         if (!s->rate_limit)
-                 return -ENOMEM;
- 
-+
-         r = cg_get_root_path(&s->cgroup_root);
--        if (r < 0)
--                return r;
-+        if (r < 0) {
-+                log_notice("Running without systemd.");
-+                // Set cgroup_root to an empty string. We won't be able to use
-+                // it since we're running without systemd.
-+                s->cgroup_root = strdup("");
-+                if (!s->cgroup_root)
-+                        return -ENOMEM;
-+        }
-+
- 
-         server_cache_hostname(s);
-         server_cache_boot_id(s);
--- 
-2.21.0.1020.gf2820cf01a-goog
-
diff --git a/sys-apps/journald/journald-242-r7.ebuild b/sys-apps/journald/journald-242-r7.ebuild
deleted file mode 120000
index 65c50397..0000000
--- a/sys-apps/journald/journald-242-r7.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-journald-242.ebuild
\ No newline at end of file
diff --git a/sys-apps/journald/journald-242.ebuild b/sys-apps/journald/journald-242.ebuild
deleted file mode 100644
index f7c62e2..0000000
--- a/sys-apps/journald/journald-242.ebuild
+++ /dev/null
@@ -1,154 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-if [[ ${PV} == 9999 ]]; then
-	EGIT_REPO_URI="https://github.com/systemd/systemd.git"
-	inherit git-r3
-else
-	SRC_URI="https://github.com/systemd/systemd/archive/v${PV}/${P}.tar.gz -> systemd-${PV}.tar.gz"
-	KEYWORDS="*"
-fi
-
-inherit bash-completion-r1 meson multilib-minimal ninja-utils systemd toolchain-funcs udev user
-
-DESCRIPTION="System and service manager for Linux"
-HOMEPAGE="https://www.freedesktop.org/wiki/Software/systemd"
-
-LICENSE="GPL-2 LGPL-2.1 public-domain"
-SLOT="0/2"
-IUSE="-acl -gcrypt -http -lzma +pcre -qrcode -seccomp -selinux +split-usr"
-
-S="$WORKDIR/systemd-${PV}"
-
-MINKV="3.10"
-
-COMMON_DEPEND=">=sys-apps/util-linux-2.30:0=[${MULTILIB_USEDEP}]
-	sys-libs/libcap:0=[${MULTILIB_USEDEP}]
-	!<sys-libs/glibc-2.16
-	acl? ( sys-apps/acl:0= )
-	gcrypt? ( >=dev-libs/libgcrypt-1.4.5:0=[${MULTILIB_USEDEP}] )
-	http? (
-		>=net-libs/libmicrohttpd-0.9.33:0=
-	)
-	lzma? ( >=app-arch/xz-utils-5.0.5-r1:0=[${MULTILIB_USEDEP}] )
-	pcre? ( dev-libs/libpcre2 )
-	qrcode? ( media-gfx/qrencode:0= )
-	seccomp? ( sys-libs/libseccomp:0= )
-	selinux? ( sys-libs/libselinux:0= )"
-
-# baselayout-2.2 has /run
-RDEPEND="${COMMON_DEPEND}
-	>=sys-apps/baselayout-2.2
-	!sys-apps/systemd"
-
-DEPEND="
-	>=sys-kernel/linux-headers-${MINKV}
-"
-
-# Newer linux-headers needed by ia64, bug #480218
-BDEPEND="
-	${COMMON_DEPEND}
-	app-arch/xz-utils:0
-	>=dev-util/meson-0.46
-	dev-util/gperf
-	>=dev-util/intltool-0.50
-	>=sys-apps/coreutils-8.16
-	>=sys-kernel/linux-headers-${MINKV}
-	virtual/pkgconfig[${MULTILIB_USEDEP}]
-"
-
-pkg_setup() {
-	:
-}
-
-src_unpack() {
-	default
-	[[ ${PV} != 9999 ]] || git-r3_src_unpack
-}
-
-src_prepare() {
-	eapply "${FILESDIR}"
-	default
-}
-
-src_configure() {
-	# Prevent conflicts with i686 cross toolchain, bug 559726
-	tc-export AR CC NM OBJCOPY RANLIB
-
-	cros_optimize_package_for_speed
-
-	multilib-minimal_src_configure
-}
-
-meson_use() {
-	usex "$1" true false
-}
-
-meson_multilib() {
-	if multilib_is_native_abi; then
-		echo true
-	else
-		echo false
-	fi
-}
-
-meson_multilib_native_use() {
-	if multilib_is_native_abi && use "$1"; then
-		echo true
-	else
-		echo false
-	fi
-}
-
-multilib_src_configure() {
-	local myconf=(
-		--localstatedir="${EPREFIX}/var"
-		-Dbashcompletiondir="$(get_bashcompdir)"
-		# make sure we get /bin:/sbin in PATH
-		-Dsplit-usr=$(usex split-usr true false)
-		# The original gentoo systemd ebuild used the split-usr use flag
-		# to control both the rootprefix and the split-usr config
-		# options. Chrome OS is a split-usr system, but we want journald
-		# to be installed in /usr/.
-		-Drootprefix="${EPREFIX}/usr"
-		-Defi=false
-		-Dima=false
-		# Optional components/dependencies
-		-Dacl=$(meson_multilib_native_use acl)
-		-Dapparmor=false
-		-Daudit=false
-		-Dlibcryptsetup=false
-		-Dlibcurl=false
-		-Delfutils=false
-		-Dgcrypt=$(meson_use gcrypt)
-		-Dgnutls=false
-		-Dgnu-efi=false
-		-Dmicrohttpd=$(meson_multilib_native_use http)
-		-Dlz4=false
-		-Dxz=$(meson_use lzma)
-		-Dlibiptc=false
-		-Dpam=false
-		-Dpcre2=$(meson_multilib_native_use pcre)
-		-Dpolkit=false
-		-Dqrencode=$(meson_multilib_native_use qrcode)
-		-Dseccomp=$(meson_multilib_native_use seccomp)
-		-Dselinux=$(meson_multilib_native_use selinux)
-		-Dadm-group=false
-		-Dwheel-group=false
-		-Dlibidn2=false
-		-Dlibidn=false
-	)
-
-	meson_src_configure "${myconf[@]}"
-}
-
-multilib_src_compile() {
-	eninja
-}
-
-multilib_src_install() {
-	DESTDIR="${D}" eninja install
-	mv ${D}/usr/$(get_libdir)/pkgconfig/{libsystemd,journald}.pc
-}
diff --git a/sys-apps/libtsm/libtsm-3-r2.ebuild b/sys-apps/libtsm/libtsm-3-r2.ebuild
deleted file mode 100644
index e8d787c..0000000
--- a/sys-apps/libtsm/libtsm-3-r2.ebuild
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI=5
-
-inherit eutils
-
-DESCRIPTION="Terminal Emulator State Machine"
-HOMEPAGE="http://cgit.freedesktop.org/~dvdhrm/libtsm"
-SRC_URI="http://www.freedesktop.org/software/kmscon/releases/${P}.tar.xz"
-
-LICENSE="LGPL-2.1 MIT"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="!!=sys-apps/kmscon-7"
-RDEPEND="${DEPEND}"
-
-src_prepare() {
-        epatch "${FILESDIR}"/0001-libtsm-add-OSC-string-callback.patch
-        epatch "${FILESDIR}"/0002-libtsm-do-not-reset-scrollback-position-and-age-if-i.patch
-}
diff --git a/sys-apps/libtsm/libtsm-3-r3.ebuild b/sys-apps/libtsm/libtsm-3-r3.ebuild
new file mode 100644
index 0000000..7ac7b4e
--- /dev/null
+++ b/sys-apps/libtsm/libtsm-3-r3.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI=5
+
+inherit eutils
+
+DESCRIPTION="Terminal Emulator State Machine"
+HOMEPAGE="http://cgit.freedesktop.org/~dvdhrm/libtsm"
+SRC_URI="http://www.freedesktop.org/software/kmscon/releases/${P}.tar.xz"
+
+LICENSE="LGPL-2.1 MIT"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="!!=sys-apps/kmscon-7"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+        epatch "${FILESDIR}"/0001-libtsm-add-OSC-string-callback.patch
+        epatch "${FILESDIR}"/0002-libtsm-do-not-reset-scrollback-position-and-age-if-i.patch
+}
+
+src_configure() {
+	econf --enable-debug=no
+}
diff --git a/sys-apps/logitech-updater/logitech-updater-0.0.1-r36.ebuild b/sys-apps/logitech-updater/logitech-updater-0.0.1-r36.ebuild
deleted file mode 100644
index 1c75aed..0000000
--- a/sys-apps/logitech-updater/logitech-updater-0.0.1-r36.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="1d477d90d9b7b9308dbe57877b0f896a5034af1b"
-CROS_WORKON_TREE="04ae3a02c7715e36e51a752d882ffea18dc74c76"
-CROS_WORKON_PROJECT="chromiumos/third_party/logitech-updater"
-
-inherit cros-debug cros-workon libchrome udev user
-
-DESCRIPTION="Logitech firmware updater"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/logitech-updater"
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-COMMON_DEPEND="chromeos-base/libbrillo:=
-	virtual/libusb:1=
-	chromeos-base/cfm-dfu-notification:=
-"
-
-RDEPEND="${COMMON_DEPEND}"
-DEPEND="${COMMON_DEPEND}"
-
-src_configure() {
-	# See crbug/1078297
-	cros-debug-add-NDEBUG
-	default
-}
-
-src_install() {
-	dosbin logitech-updater
-	udev_dorules conf/99-logitech-updater.rules
-
-	# Install seccomp policy.
-	insinto "/usr/share/policy"
-	newins "seccomp/logitech-updater-seccomp-${ARCH}.policy" logitech-updater-seccomp.policy
-}
-
-pkg_preinst() {
-	enewuser cfm-firmware-updaters
-	enewgroup cfm-firmware-updaters
-}
diff --git a/sys-apps/logitech-updater/logitech-updater-0.0.1-r38.ebuild b/sys-apps/logitech-updater/logitech-updater-0.0.1-r38.ebuild
new file mode 100644
index 0000000..64372a4
--- /dev/null
+++ b/sys-apps/logitech-updater/logitech-updater-0.0.1-r38.ebuild
@@ -0,0 +1,43 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="5a1d66ae249a6c2db2d9dd5c72fcea8b12402912"
+CROS_WORKON_TREE="90de1569f3cb060aad3d52ca223c9db67efff1e3"
+CROS_WORKON_PROJECT="chromiumos/third_party/logitech-updater"
+
+inherit cros-debug cros-workon libchrome udev user
+
+DESCRIPTION="Logitech firmware updater"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/logitech-updater"
+
+LICENSE="BSD-Google"
+KEYWORDS="*"
+
+COMMON_DEPEND="chromeos-base/libbrillo:=
+	virtual/libusb:1=
+	chromeos-base/cfm-dfu-notification:=
+"
+
+RDEPEND="${COMMON_DEPEND}"
+DEPEND="${COMMON_DEPEND}"
+
+src_configure() {
+	# See crbug/1078297
+	cros-debug-add-NDEBUG
+	default
+}
+
+src_install() {
+	dosbin logitech-updater
+	udev_dorules conf/99-logitech-updater.rules
+
+	# Install seccomp policy.
+	insinto "/usr/share/policy"
+	newins "seccomp/logitech-updater-seccomp-${ARCH}.policy" logitech-updater-seccomp.policy
+}
+
+pkg_preinst() {
+	enewuser cfm-firmware-updaters
+	enewgroup cfm-firmware-updaters
+}
diff --git a/sys-apps/mmc-utils/mmc-utils-0.0.1-r22.ebuild b/sys-apps/mmc-utils/mmc-utils-0.0.1-r22.ebuild
deleted file mode 100644
index 445354d..0000000
--- a/sys-apps/mmc-utils/mmc-utils-0.0.1-r22.ebuild
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="7ddcb23be97fb20a31ffd7612355a3ba54e5eaf2"
-CROS_WORKON_TREE="c33e33f2cca1cfe902549b5e32748656c937e009"
-CROS_WORKON_PROJECT="chromiumos/third_party/mmc-utils"
-
-inherit cros-workon toolchain-funcs
-
-# original Announcement of project:
-#	http://permalink.gmane.org/gmane.linux.kernel.mmc/12766
-#
-# Upstream GIT:
-#   https://git.kernel.org/cgit/linux/kernel/git/cjb/mmc-utils.git/
-#
-# To grab a local copy of the mmc-utils source tree:
-#   git clone git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
-#
-# or to reference upstream in local mmc-utils tree:
-#   git remote add upstream git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
-#   git remote update
-
-DESCRIPTION="Userspace tools for MMC/SD devices"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/mmc-utils"
-
-LICENSE="GPL-2"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="static"
-
-src_configure() {
-	use static && append-ldflags -static
-	tc-export CC
-	export prefix=/usr
-	default
-}
diff --git a/sys-apps/mmc-utils/mmc-utils-0.0.1-r23.ebuild b/sys-apps/mmc-utils/mmc-utils-0.0.1-r23.ebuild
new file mode 100644
index 0000000..a07b319
--- /dev/null
+++ b/sys-apps/mmc-utils/mmc-utils-0.0.1-r23.ebuild
@@ -0,0 +1,37 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="7be960e2b84b5dfcbec44d3b722fb02d16b9eaf1"
+CROS_WORKON_TREE="ef12a78ebfea31de945ebbe2d56e405fea38258b"
+CROS_WORKON_PROJECT="chromiumos/third_party/mmc-utils"
+
+inherit cros-workon toolchain-funcs
+
+# original Announcement of project:
+#	http://permalink.gmane.org/gmane.linux.kernel.mmc/12766
+#
+# Upstream GIT:
+#   https://git.kernel.org/cgit/linux/kernel/git/cjb/mmc-utils.git/
+#
+# To grab a local copy of the mmc-utils source tree:
+#   git clone git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
+#
+# or to reference upstream in local mmc-utils tree:
+#   git remote add upstream git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc-utils.git
+#   git remote update
+
+DESCRIPTION="Userspace tools for MMC/SD devices"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/mmc-utils"
+
+LICENSE="GPL-2"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="static"
+
+src_configure() {
+	use static && append-ldflags -static
+	tc-export CC
+	export prefix=/usr
+	default
+}
diff --git a/sys-apps/mosys/mosys-1.2.3-r1232.ebuild b/sys-apps/mosys/mosys-1.2.3-r1232.ebuild
deleted file mode 100644
index fbf8653..0000000
--- a/sys-apps/mosys/mosys-1.2.3-r1232.ebuild
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("4a50fe1bb733e3fce1c1e66c4f6a8f01604a0880" "2fe53bef938339fb8bed32fabc5a22fcdf423abf")
-CROS_WORKON_TREE=("52a8a8b6d3bbca5e90d4761aa308a5541d52b1bb" "8de8a013f37ac253ba70dec07feafa54b0862c7c")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform2"
-	"chromiumos/platform/mosys"
-)
-CROS_WORKON_LOCALNAME=(
-	"../platform2"
-	"../platform/mosys"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}/platform2"
-	"${S}/platform/mosys"
-)
-CROS_WORKON_INCREMENTAL_BUILD=1
-CROS_WORKON_SUBTREE=(
-	"common-mk"
-	""
-)
-
-WANT_LIBCHROME="no"
-WANT_LIBBRILLO="no"
-
-inherit meson flag-o-matic toolchain-funcs cros-unibuild cros-workon platform
-
-DESCRIPTION="Utility for obtaining various bits of low-level system info"
-HOMEPAGE="http://mosys.googlecode.com/"
-
-LICENSE="BSD-Google BSD Apache-2.0 MIT ISC Unlicense"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE="generated_cros_config unibuild vpd_file_cache"
-
-RDEPEND="unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	vpd_file_cache? ( chromeos-base/vpd )
-	dev-util/cmocka
-	chromeos-base/minijail"
-DEPEND="${RDEPEND}"
-
-src_unpack() {
-	cros-workon_src_unpack
-	PLATFORM_TOOLDIR="${S}/platform2/common-mk"
-	S+="/platform/mosys"
-}
-
-src_configure() {
-	local platform_intf=""
-	local emesonargs=(
-		$(meson_use unibuild use_cros_config)
-		"$(meson_use vpd_file_cache use_vpd_file_cache)"
-		-Darch=$(tc-arch)
-	)
-
-	if use unibuild; then
-		emesonargs+=(
-			"-Dcros_config_data_src=${SYSROOT}${UNIBOARD_C_CONFIG}"
-		)
-		platform_intf="$(cros_config_host get-mosys-platform)"
-	else
-		# TODO(jrosenth): hard code some board to platform_intf
-		# mappings here for legacy non-unibuild boards.  For now, this
-		# feature is unibuild only.
-		true
-	fi
-
-	if [[ -n "${platform_intf}" ]]; then
-		emesonargs+=(
-			"-Dplatform_intf=${platform_intf}"
-		)
-	fi
-
-	# Necessary to enable LTO.  See crbug.com/1082378.
-	append-ldflags "-O2"
-
-	meson_src_configure
-}
-
-src_compile() {
-	meson_src_compile
-}
-
-platform_pkg_test() {
-	local tests=(
-		file_unittest
-		math_unittest
-		platform_unittest
-		vpd_unittest
-	)
-	local test_bin
-	for test_bin in "${tests[@]}"; do
-		platform_test "run" \
-			"${BUILD_DIR}/unittests/${test_bin}"
-	done
-}
-
-src_install() {
-	dosbin "${BUILD_DIR}/mains/mosys"
-
-	insinto /usr/share/policy
-	newins "seccomp/mosys-seccomp-${ARCH}.policy" mosys-seccomp.policy
-	dodoc README
-}
diff --git a/sys-apps/mosys/mosys-1.2.3-r1294.ebuild b/sys-apps/mosys/mosys-1.2.3-r1294.ebuild
new file mode 100644
index 0000000..522f456
--- /dev/null
+++ b/sys-apps/mosys/mosys-1.2.3-r1294.ebuild
@@ -0,0 +1,110 @@
+# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("f34cf3a06f7b17b7829185630d886a5d9d3f0e75" "8b2a2c062be89e22e2c413ce66fd4f2acdb33c88")
+CROS_WORKON_TREE=("791c6808b4f4f5f1c484108d66ff958d65f8f1e3" "bcf4019b8955138ea74f9724cd90d5490c3c8b70")
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform2"
+	"chromiumos/platform/mosys"
+)
+CROS_WORKON_LOCALNAME=(
+	"../platform2"
+	"../platform/mosys"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}/platform2"
+	"${S}/platform/mosys"
+)
+CROS_WORKON_INCREMENTAL_BUILD=1
+CROS_WORKON_SUBTREE=(
+	"common-mk"
+	""
+)
+
+WANT_LIBCHROME="no"
+WANT_LIBBRILLO="no"
+
+inherit meson flag-o-matic toolchain-funcs cros-unibuild cros-workon platform
+
+DESCRIPTION="Utility for obtaining various bits of low-level system info"
+HOMEPAGE="http://mosys.googlecode.com/"
+
+LICENSE="BSD-Google BSD Apache-2.0 MIT ISC Unlicense"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE="generated_cros_config unibuild vpd_file_cache"
+
+RDEPEND="unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	vpd_file_cache? ( chromeos-base/vpd )
+	dev-util/cmocka
+	chromeos-base/minijail"
+DEPEND="${RDEPEND}"
+
+src_unpack() {
+	cros-workon_src_unpack
+	PLATFORM_TOOLDIR="${S}/platform2/common-mk"
+	S+="/platform/mosys"
+}
+
+src_configure() {
+	local platform_intf=""
+	local emesonargs=(
+		$(meson_use unibuild use_cros_config)
+		"$(meson_use vpd_file_cache use_vpd_file_cache)"
+		-Darch=$(tc-arch)
+	)
+
+	if use unibuild; then
+		emesonargs+=(
+			"-Dcros_config_data_src=${SYSROOT}${UNIBOARD_C_CONFIG}"
+		)
+		platform_intf="$(cros_config_host get-mosys-platform)"
+	else
+		# TODO(jrosenth): hard code some board to platform_intf
+		# mappings here for legacy non-unibuild boards.  For now, this
+		# feature is unibuild only.
+		true
+	fi
+
+	if [[ -n "${platform_intf}" ]]; then
+		emesonargs+=(
+			"-Dplatform_intf=${platform_intf}"
+		)
+	fi
+
+	# Necessary to enable LTO.  See crbug.com/1082378.
+	append-ldflags "-O2"
+
+	meson_src_configure
+}
+
+src_compile() {
+	meson_src_compile
+}
+
+platform_pkg_test() {
+	local tests=(
+		file_unittest
+		math_unittest
+		platform_unittest
+		vpd_unittest
+	)
+	local test_bin
+	for test_bin in "${tests[@]}"; do
+		platform_test "run" \
+			"${BUILD_DIR}/unittests/${test_bin}"
+	done
+}
+
+src_install() {
+	dosbin "${BUILD_DIR}/mains/mosys"
+
+	insinto /usr/share/policy
+	newins "seccomp/mosys-seccomp-${ARCH}.policy" mosys-seccomp.policy
+	dodoc README
+}
diff --git a/sys-apps/portage/portage-2.3.75-r56.ebuild b/sys-apps/portage/portage-2.3.75-r56.ebuild
deleted file mode 100644
index ac593ff..0000000
--- a/sys-apps/portage/portage-2.3.75-r56.ebuild
+++ /dev/null
@@ -1,276 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-CROS_WORKON_COMMIT="608edc2b3da1b31929109f9f6f64cf0b6a112c0a"
-CROS_WORKON_TREE="d9b674fa27b8166f180fc6f40238a588593b97cb"
-PYTHON_COMPAT=(
-	pypy
-	python3_4 python3_5 python3_6 python3_7
-	python2_7
-)
-PYTHON_REQ_USE='bzip2(+),threads(+)'
-
-inherit distutils-r1 systemd
-
-CROS_WORKON_PROJECT="chromiumos/third_party/portage_tool"
-CROS_WORKON_LOCALNAME="portage_tool"
-CROS_WORKON_EGIT_BRANCH="chromeos-2.3.75"
-inherit cros-workon
-
-DESCRIPTION="Portage is the package management and distribution system for Gentoo"
-HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
-
-LICENSE="GPL-2"
-KEYWORDS="*"
-SLOT="0"
-IUSE="build doc epydoc gentoo-dev +ipc +native-extensions -rsync-verify selinux xattr"
-
-DEPEND="!build? ( $(python_gen_impl_dep 'ssl(+)') )
-	>=app-arch/tar-1.27
-	dev-lang/python-exec:2
-	>=sys-apps/sed-4.0.5 sys-devel/patch
-	doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 )
-	epydoc? ( $(python_gen_cond_dep '>=dev-python/epydoc-2.0[${PYTHON_USEDEP}]' \
-		'python2*') )"
-# Require sandbox-2.2 for bug #288863.
-# For xattr, we can spawn getfattr and setfattr from sys-apps/attr, but that's
-# quite slow, so it's not considered in the dependencies as an alternative to
-# to python-3.3 / pyxattr. Also, xattr support is only tested with Linux, so
-# for now, don't pull in xattr deps for other kernels.
-# For whirlpool hash, require python[ssl] (bug #425046).
-# For compgen, require bash[readline] (bug #445576).
-# app-portage/gemato goes without PYTHON_USEDEP since we're calling
-# the executable.
-RDEPEND="
-	>=app-arch/tar-1.27
-	dev-lang/python-exec:2
-	!build? (
-		>=sys-apps/sed-4.0.5
-		app-shells/bash:0[readline]
-		>=app-admin/eselect-1.2
-		$(python_gen_cond_dep 'dev-python/pyblake2[${PYTHON_USEDEP}]' \
-			python{2_7,3_4,3_5} pypy)
-		rsync-verify? (
-			>=app-portage/gemato-14[${PYTHON_USEDEP}]
-			>=app-crypt/openpgp-keys-gentoo-release-20180706
-			>=app-crypt/gnupg-2.2.4-r2[ssl(-)]
-		)
-	)
-	elibc_FreeBSD? ( sys-freebsd/freebsd-bin )
-	elibc_glibc? ( >=sys-apps/sandbox-2.2 )
-	elibc_musl? ( >=sys-apps/sandbox-2.2 )
-	elibc_uclibc? ( >=sys-apps/sandbox-2.2 )
-	>=app-misc/pax-utils-0.1.17
-	selinux? ( >=sys-libs/libselinux-2.0.94[python,${PYTHON_USEDEP}] )
-	xattr? ( kernel_linux? (
-		>=sys-apps/install-xattr-0.3
-		$(python_gen_cond_dep 'dev-python/pyxattr[${PYTHON_USEDEP}]' \
-			python2_7 pypy)
-	) )
-	!<app-portage/gentoolkit-0.3.0.8-r4
-	!<app-admin/logrotate-3.8.0
-	!<app-portage/repoman-2.3.10"
-PDEPEND="
-	!build? (
-		>=net-misc/rsync-2.6.4
-		userland_GNU? ( >=sys-apps/coreutils-6.4 )
-	)"
-# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
-# NOTE: FEATURES=installsources requires debugedit and rsync
-
-REQUIRED_USE="epydoc? ( $(python_gen_useflags 'python2*') )"
-
-SRC_ARCHIVES="https://dev.gentoo.org/~zmedico/portage/archives"
-
-prefix_src_archives() {
-	local x y
-	for x in ${@}; do
-		for y in ${SRC_ARCHIVES}; do
-			echo ${y}/${x}
-		done
-	done
-}
-
-TARBALL_PV=${PV}
-SRC_URI="mirror://gentoo/${PN}-${TARBALL_PV}.tar.bz2
-	$(prefix_src_archives ${PN}-${TARBALL_PV}.tar.bz2)"
-
-# Disable for CrOS.
-SRC_URI=""
-
-pkg_setup() {
-	use epydoc && DISTUTILS_ALL_SUBPHASE_IMPLS=( python2.7 )
-}
-
-python_prepare_all() {
-	distutils-r1_python_prepare_all
-
-	if use gentoo-dev; then
-		einfo "Disabling --dynamic-deps by default for gentoo-dev..."
-		sed -e 's:\("--dynamic-deps", \)\("y"\):\1"n":' \
-			-i lib/_emerge/create_depgraph_params.py || \
-			die "failed to patch create_depgraph_params.py"
-
-		einfo "Enabling additional FEATURES for gentoo-dev..."
-		echo 'FEATURES="${FEATURES} ipc-sandbox network-sandbox strict-keepdir"' \
-			>> cnf/make.globals || die
-	fi
-
-	if use native-extensions; then
-		printf "[build_ext]\nportage-ext-modules=true\n" >> \
-			setup.cfg || die
-	fi
-
-	if ! use ipc ; then
-		einfo "Disabling ipc..."
-		sed -e "s:_enable_ipc_daemon = True:_enable_ipc_daemon = False:" \
-			-i lib/_emerge/AbstractEbuildProcess.py || \
-			die "failed to patch AbstractEbuildProcess.py"
-	fi
-
-	if use xattr && use kernel_linux ; then
-		einfo "Adding FEATURES=xattr to make.globals ..."
-		echo -e '\nFEATURES="${FEATURES} xattr"' >> cnf/make.globals \
-			|| die "failed to append to make.globals"
-	fi
-
-	if use build || ! use rsync-verify; then
-		sed -e '/^sync-rsync-verify-metamanifest/s|yes|no|' \
-			-i cnf/repos.conf || die "sed failed"
-	fi
-
-	if [[ -n ${EPREFIX} ]] ; then
-		einfo "Setting portage.const.EPREFIX ..."
-		sed -e "s|^\(SANDBOX_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/sandbox\"\)|\\1${EPREFIX}\\2|" \
-			-e "s|^\(FAKEROOT_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/fakeroot\"\)|\\1${EPREFIX}\\2|" \
-			-e "s|^\(BASH_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/bash\"\)|\\1${EPREFIX}\\2|" \
-			-e "s|^\(MOVE_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/mv\"\)|\\1${EPREFIX}\\2|" \
-			-e "s|^\(PRELINK_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/sbin/prelink\"\)|\\1${EPREFIX}\\2|" \
-			-e "s|^\(EPREFIX[[:space:]]*=[[:space:]]*\"\).*|\\1${EPREFIX}\"|" \
-			-i lib/portage/const.py || \
-			die "Failed to patch portage.const.EPREFIX"
-
-		einfo "Prefixing shebangs ..."
-		while read -r -d $'\0' ; do
-			local shebang=$(head -n1 "$REPLY")
-			if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ; then
-				sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "$REPLY" || \
-					die "sed failed"
-			fi
-		done < <(find . -type f -print0)
-
-		einfo "Adjusting make.globals ..."
-		sed -e "s|\(/usr/portage\)|${EPREFIX}\\1|" \
-			-e "s|^\(PORTAGE_TMPDIR=\"\)\(/var/tmp\"\)|\\1${EPREFIX}\\2|" \
-			-i cnf/make.globals || die "sed failed"
-
-		einfo "Adjusting repos.conf ..."
-		sed -e "s|^\(location = \)\(/usr/portage\)|\\1${EPREFIX}\\2|" \
-			-e "s|^\(sync-openpgp-key-path = \)\(.*\)|\\1${EPREFIX}\\2|" \
-			-i cnf/repos.conf || die "sed failed"
-		if use prefix-guest ; then
-			sed -e "s|^\(main-repo = \).*|\\1gentoo_prefix|" \
-				-e "s|^\\[gentoo\\]|[gentoo_prefix]|" \
-				-e "s|^\(sync-uri = \).*|\\1rsync://rsync.prefix.bitzolder.nl/gentoo-portage-prefix|" \
-				-i cnf/repos.conf || die "sed failed"
-		fi
-
-		einfo "Adding FEATURES=force-prefix to make.globals ..."
-		echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \
-			|| die "failed to append to make.globals"
-	fi
-
-	cd "${S}/cnf" || die
-	if [ -f "make.conf.example.${ARCH}".diff ]; then
-		patch make.conf.example "make.conf.example.${ARCH}".diff || \
-			die "Failed to patch make.conf.example"
-	else
-		eerror ""
-		eerror "Portage does not have an arch-specific configuration for this arch."
-		eerror "Please notify the arch maintainer about this issue. Using generic."
-		eerror ""
-	fi
-}
-
-python_compile_all() {
-	local targets=()
-	use doc && targets+=( docbook )
-	use epydoc && targets+=( epydoc )
-
-	if [[ ${targets[@]} ]]; then
-		esetup.py "${targets[@]}"
-	fi
-}
-
-python_test() {
-	esetup.py test
-}
-
-python_install() {
-	# Install sbin scripts to bindir for python-exec linking
-	# they will be relocated in pkg_preinst()
-	distutils-r1_python_install \
-		--system-prefix="${EPREFIX}/usr" \
-		--bindir="$(python_get_scriptdir)" \
-		--docdir="${EPREFIX}/usr/share/doc/${PF}" \
-		--htmldir="${EPREFIX}/usr/share/doc/${PF}/html" \
-		--portage-bindir="${EPREFIX}/usr/lib/portage/${EPYTHON}" \
-		--sbindir="$(python_get_scriptdir)" \
-		--sysconfdir="${EPREFIX}/etc" \
-		"${@}"
-}
-
-python_install_all() {
-	distutils-r1_python_install_all
-
-	local targets=()
-	use doc && targets+=(
-		install_docbook
-		--htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
-	)
-	use epydoc && targets+=(
-		install_epydoc
-		--htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
-	)
-
-	# install docs
-	if [[ ${targets[@]} ]]; then
-		esetup.py "${targets[@]}"
-	fi
-
-	systemd_dotmpfilesd "${FILESDIR}"/portage-ccache.conf
-
-	# Due to distutils/python-exec limitations
-	# these must be installed to /usr/bin.
-	local sbin_relocations='archive-conf dispatch-conf emaint env-update etc-update fixpackages regenworld'
-	einfo "Moving admin scripts to the correct directory"
-	dodir /usr/sbin
-	for target in ${sbin_relocations}; do
-		einfo "Moving /usr/bin/${target} to /usr/sbin/${target}"
-		mv "${ED}usr/bin/${target}" "${ED}usr/sbin/${target}" || die "sbin scripts move failed!"
-	done
-}
-
-pkg_preinst() {
-	# comment out sanity test until it is fixed to work
-	# with the new PORTAGE_PYM_PATH
-	#if [[ $ROOT == / ]] ; then
-		## Run some minimal tests as a sanity check.
-		#local test_runner=$(find "${ED}" -name runTests)
-		#if [[ -n $test_runner && -x $test_runner ]] ; then
-			#einfo "Running preinst sanity tests..."
-			#"$test_runner" || die "preinst sanity tests failed"
-		#fi
-	#fi
-
-	# elog dir must exist to avoid logrotate error for bug #415911.
-	# This code runs in preinst in order to bypass the mapping of
-	# portage:portage to root:root which happens after src_install.
-	keepdir /var/log/portage/elog
-	# This is allowed to fail if the user/group are invalid for prefix users.
-	if chown portage:portage "${ED}"var/log/portage{,/elog} 2>/dev/null ; then
-		chmod g+s,ug+rwx "${ED}"var/log/portage{,/elog}
-	fi
-}
diff --git a/sys-apps/portage/portage-2.3.75-r59.ebuild b/sys-apps/portage/portage-2.3.75-r59.ebuild
new file mode 100644
index 0000000..99e1d47
--- /dev/null
+++ b/sys-apps/portage/portage-2.3.75-r59.ebuild
@@ -0,0 +1,276 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+CROS_WORKON_COMMIT="2dfb7012b08e9ab94722ac1be3b4c22ddcc6b9b7"
+CROS_WORKON_TREE="36a4c89a02e336f72bbad9139911e34c2f91aaae"
+PYTHON_COMPAT=(
+	pypy
+	python3_4 python3_5 python3_6 python3_7
+	python2_7
+)
+PYTHON_REQ_USE='bzip2(+),threads(+)'
+
+inherit distutils-r1 systemd
+
+CROS_WORKON_PROJECT="chromiumos/third_party/portage_tool"
+CROS_WORKON_LOCALNAME="portage_tool"
+CROS_WORKON_EGIT_BRANCH="chromeos-2.3.75"
+inherit cros-workon
+
+DESCRIPTION="Portage is the package management and distribution system for Gentoo"
+HOMEPAGE="https://wiki.gentoo.org/wiki/Project:Portage"
+
+LICENSE="GPL-2"
+KEYWORDS="*"
+SLOT="0"
+IUSE="build doc epydoc gentoo-dev +ipc +native-extensions -rsync-verify selinux xattr"
+
+DEPEND="!build? ( $(python_gen_impl_dep 'ssl(+)') )
+	>=app-arch/tar-1.27
+	dev-lang/python-exec:2
+	>=sys-apps/sed-4.0.5 sys-devel/patch
+	doc? ( app-text/xmlto ~app-text/docbook-xml-dtd-4.4 )
+	epydoc? ( $(python_gen_cond_dep '>=dev-python/epydoc-2.0[${PYTHON_USEDEP}]' \
+		'python2*') )"
+# Require sandbox-2.2 for bug #288863.
+# For xattr, we can spawn getfattr and setfattr from sys-apps/attr, but that's
+# quite slow, so it's not considered in the dependencies as an alternative to
+# to python-3.3 / pyxattr. Also, xattr support is only tested with Linux, so
+# for now, don't pull in xattr deps for other kernels.
+# For whirlpool hash, require python[ssl] (bug #425046).
+# For compgen, require bash[readline] (bug #445576).
+# app-portage/gemato goes without PYTHON_USEDEP since we're calling
+# the executable.
+RDEPEND="
+	>=app-arch/tar-1.27
+	dev-lang/python-exec:2
+	!build? (
+		>=sys-apps/sed-4.0.5
+		app-shells/bash:0[readline]
+		>=app-admin/eselect-1.2
+		$(python_gen_cond_dep 'dev-python/pyblake2[${PYTHON_USEDEP}]' \
+			python{2_7,3_4,3_5} pypy)
+		rsync-verify? (
+			>=app-portage/gemato-14[${PYTHON_USEDEP}]
+			>=app-crypt/openpgp-keys-gentoo-release-20180706
+			>=app-crypt/gnupg-2.2.4-r2[ssl(-)]
+		)
+	)
+	elibc_FreeBSD? ( sys-freebsd/freebsd-bin )
+	elibc_glibc? ( >=sys-apps/sandbox-2.2 )
+	elibc_musl? ( >=sys-apps/sandbox-2.2 )
+	elibc_uclibc? ( >=sys-apps/sandbox-2.2 )
+	>=app-misc/pax-utils-0.1.17
+	selinux? ( >=sys-libs/libselinux-2.0.94[python,${PYTHON_USEDEP}] )
+	xattr? ( kernel_linux? (
+		>=sys-apps/install-xattr-0.3
+		$(python_gen_cond_dep 'dev-python/pyxattr[${PYTHON_USEDEP}]' \
+			python2_7 pypy)
+	) )
+	!<app-portage/gentoolkit-0.3.0.8-r4
+	!<app-admin/logrotate-3.8.0
+	!<app-portage/repoman-2.3.10"
+PDEPEND="
+	!build? (
+		>=net-misc/rsync-2.6.4
+		userland_GNU? ( >=sys-apps/coreutils-6.4 )
+	)"
+# coreutils-6.4 rdep is for date format in emerge-webrsync #164532
+# NOTE: FEATURES=installsources requires debugedit and rsync
+
+REQUIRED_USE="epydoc? ( $(python_gen_useflags 'python2*') )"
+
+SRC_ARCHIVES="https://dev.gentoo.org/~zmedico/portage/archives"
+
+prefix_src_archives() {
+	local x y
+	for x in ${@}; do
+		for y in ${SRC_ARCHIVES}; do
+			echo ${y}/${x}
+		done
+	done
+}
+
+TARBALL_PV=${PV}
+SRC_URI="mirror://gentoo/${PN}-${TARBALL_PV}.tar.bz2
+	$(prefix_src_archives ${PN}-${TARBALL_PV}.tar.bz2)"
+
+# Disable for CrOS.
+SRC_URI=""
+
+pkg_setup() {
+	use epydoc && DISTUTILS_ALL_SUBPHASE_IMPLS=( python2.7 )
+}
+
+python_prepare_all() {
+	distutils-r1_python_prepare_all
+
+	if use gentoo-dev; then
+		einfo "Disabling --dynamic-deps by default for gentoo-dev..."
+		sed -e 's:\("--dynamic-deps", \)\("y"\):\1"n":' \
+			-i lib/_emerge/create_depgraph_params.py || \
+			die "failed to patch create_depgraph_params.py"
+
+		einfo "Enabling additional FEATURES for gentoo-dev..."
+		echo 'FEATURES="${FEATURES} ipc-sandbox network-sandbox strict-keepdir"' \
+			>> cnf/make.globals || die
+	fi
+
+	if use native-extensions; then
+		printf "[build_ext]\nportage-ext-modules=true\n" >> \
+			setup.cfg || die
+	fi
+
+	if ! use ipc ; then
+		einfo "Disabling ipc..."
+		sed -e "s:_enable_ipc_daemon = True:_enable_ipc_daemon = False:" \
+			-i lib/_emerge/AbstractEbuildProcess.py || \
+			die "failed to patch AbstractEbuildProcess.py"
+	fi
+
+	if use xattr && use kernel_linux ; then
+		einfo "Adding FEATURES=xattr to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} xattr"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	if use build || ! use rsync-verify; then
+		sed -e '/^sync-rsync-verify-metamanifest/s|yes|no|' \
+			-i cnf/repos.conf || die "sed failed"
+	fi
+
+	if [[ -n ${EPREFIX} ]] ; then
+		einfo "Setting portage.const.EPREFIX ..."
+		sed -e "s|^\(SANDBOX_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/sandbox\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(FAKEROOT_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/bin/fakeroot\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(BASH_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/bash\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(MOVE_BINARY[[:space:]]*=[[:space:]]*\"\)\(/bin/mv\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(PRELINK_BINARY[[:space:]]*=[[:space:]]*\"\)\(/usr/sbin/prelink\"\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(EPREFIX[[:space:]]*=[[:space:]]*\"\).*|\\1${EPREFIX}\"|" \
+			-i lib/portage/const.py || \
+			die "Failed to patch portage.const.EPREFIX"
+
+		einfo "Prefixing shebangs ..."
+		while read -r -d $'\0' ; do
+			local shebang=$(head -n1 "$REPLY")
+			if [[ ${shebang} == "#!"* && ! ${shebang} == "#!${EPREFIX}/"* ]] ; then
+				sed -i -e "1s:.*:#!${EPREFIX}${shebang:2}:" "$REPLY" || \
+					die "sed failed"
+			fi
+		done < <(find . -type f -print0)
+
+		einfo "Adjusting make.globals ..."
+		sed -e "s|\(/usr/portage\)|${EPREFIX}\\1|" \
+			-e "s|^\(PORTAGE_TMPDIR=\"\)\(/var/tmp\"\)|\\1${EPREFIX}\\2|" \
+			-i cnf/make.globals || die "sed failed"
+
+		einfo "Adjusting repos.conf ..."
+		sed -e "s|^\(location = \)\(/usr/portage\)|\\1${EPREFIX}\\2|" \
+			-e "s|^\(sync-openpgp-key-path = \)\(.*\)|\\1${EPREFIX}\\2|" \
+			-i cnf/repos.conf || die "sed failed"
+		if use prefix-guest ; then
+			sed -e "s|^\(main-repo = \).*|\\1gentoo_prefix|" \
+				-e "s|^\\[gentoo\\]|[gentoo_prefix]|" \
+				-e "s|^\(sync-uri = \).*|\\1rsync://rsync.prefix.bitzolder.nl/gentoo-portage-prefix|" \
+				-i cnf/repos.conf || die "sed failed"
+		fi
+
+		einfo "Adding FEATURES=force-prefix to make.globals ..."
+		echo -e '\nFEATURES="${FEATURES} force-prefix"' >> cnf/make.globals \
+			|| die "failed to append to make.globals"
+	fi
+
+	cd "${S}/cnf" || die
+	if [ -f "make.conf.example.${ARCH}".diff ]; then
+		patch make.conf.example "make.conf.example.${ARCH}".diff || \
+			die "Failed to patch make.conf.example"
+	else
+		eerror ""
+		eerror "Portage does not have an arch-specific configuration for this arch."
+		eerror "Please notify the arch maintainer about this issue. Using generic."
+		eerror ""
+	fi
+}
+
+python_compile_all() {
+	local targets=()
+	use doc && targets+=( docbook )
+	use epydoc && targets+=( epydoc )
+
+	if [[ ${targets[@]} ]]; then
+		esetup.py "${targets[@]}"
+	fi
+}
+
+python_test() {
+	esetup.py test
+}
+
+python_install() {
+	# Install sbin scripts to bindir for python-exec linking
+	# they will be relocated in pkg_preinst()
+	distutils-r1_python_install \
+		--system-prefix="${EPREFIX}/usr" \
+		--bindir="$(python_get_scriptdir)" \
+		--docdir="${EPREFIX}/usr/share/doc/${PF}" \
+		--htmldir="${EPREFIX}/usr/share/doc/${PF}/html" \
+		--portage-bindir="${EPREFIX}/usr/lib/portage/${EPYTHON}" \
+		--sbindir="$(python_get_scriptdir)" \
+		--sysconfdir="${EPREFIX}/etc" \
+		"${@}"
+}
+
+python_install_all() {
+	distutils-r1_python_install_all
+
+	local targets=()
+	use doc && targets+=(
+		install_docbook
+		--htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
+	)
+	use epydoc && targets+=(
+		install_epydoc
+		--htmldir="${EPREFIX}/usr/share/doc/${PF}/html"
+	)
+
+	# install docs
+	if [[ ${targets[@]} ]]; then
+		esetup.py "${targets[@]}"
+	fi
+
+	systemd_dotmpfilesd "${FILESDIR}"/portage-ccache.conf
+
+	# Due to distutils/python-exec limitations
+	# these must be installed to /usr/bin.
+	local sbin_relocations='archive-conf dispatch-conf emaint env-update etc-update fixpackages regenworld'
+	einfo "Moving admin scripts to the correct directory"
+	dodir /usr/sbin
+	for target in ${sbin_relocations}; do
+		einfo "Moving /usr/bin/${target} to /usr/sbin/${target}"
+		mv "${ED}usr/bin/${target}" "${ED}usr/sbin/${target}" || die "sbin scripts move failed!"
+	done
+}
+
+pkg_preinst() {
+	# comment out sanity test until it is fixed to work
+	# with the new PORTAGE_PYM_PATH
+	#if [[ $ROOT == / ]] ; then
+		## Run some minimal tests as a sanity check.
+		#local test_runner=$(find "${ED}" -name runTests)
+		#if [[ -n $test_runner && -x $test_runner ]] ; then
+			#einfo "Running preinst sanity tests..."
+			#"$test_runner" || die "preinst sanity tests failed"
+		#fi
+	#fi
+
+	# elog dir must exist to avoid logrotate error for bug #415911.
+	# This code runs in preinst in order to bypass the mapping of
+	# portage:portage to root:root which happens after src_install.
+	keepdir /var/log/portage/elog
+	# This is allowed to fail if the user/group are invalid for prefix users.
+	if chown portage:portage "${ED}"var/log/portage{,/elog} 2>/dev/null ; then
+		chmod g+s,ug+rwx "${ED}"var/log/portage{,/elog}
+	fi
+}
diff --git a/sys-apps/pv/Manifest b/sys-apps/pv/Manifest
deleted file mode 100644
index 0b3441a..0000000
--- a/sys-apps/pv/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST pv-1.1.4.tar.gz 92146 RMD160 ac0453e59f9f1d81cc40b55b8870871aa22f9f10 SHA1 2d84e212b543509b675351809d1e0257e679c5fa SHA256 fd43aea3ce9017499cc02c5b3237e0207140b17d6efaddc05fa8cc393c64a904
diff --git a/sys-apps/pv/metadata.xml b/sys-apps/pv/metadata.xml
deleted file mode 100644
index e021cd5..0000000
--- a/sys-apps/pv/metadata.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-  <maintainer>
-    <email>jer@gentoo.org</email>
-    <name>Jeroen Roovers</name>
-  </maintainer>
-  <upstream>
-    <remote-id type="google-code">pipeviewer</remote-id>
-  </upstream>
-</pkgmetadata>
diff --git a/sys-apps/pv/pv-1.1.4-r1.ebuild b/sys-apps/pv/pv-1.1.4-r1.ebuild
deleted file mode 100644
index 3457281..0000000
--- a/sys-apps/pv/pv-1.1.4-r1.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/pv/pv-1.1.4-r1.ebuild,v 1.1 2010/12/13 00:52:06 flameeyes Exp $
-
-EAPI="2"
-
-inherit toolchain-funcs
-
-DESCRIPTION="Pipe Viewer: a tool for monitoring the progress of data through a pipe"
-HOMEPAGE="http://www.ivarch.com/programs/pv.shtml"
-SRC_URI="mirror://sourceforge/pipeviewer/${P}.tar.gz"
-
-LICENSE="Artistic-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="nls"
-
-src_configure() {
-	econf $(use_enable nls)
-}
-
-src_compile() {
-	emake \
-		CC="$(tc-getCC)" \
-		LD="$(tc-getLD)" \
-		|| die
-}
-
-src_install() {
-	emake DESTDIR="${D}" install || die
-
-	dodoc README doc/NEWS doc/TODO || die
-}
diff --git a/sys-apps/sandbox/files/sandbox-2.11-allowlist-renameat-symlinkat-as-symlink-f.patch b/sys-apps/sandbox/files/sandbox-2.11-allowlist-renameat-symlinkat-as-symlink-f.patch
new file mode 100644
index 0000000..8cdfab8
--- /dev/null
+++ b/sys-apps/sandbox/files/sandbox-2.11-allowlist-renameat-symlinkat-as-symlink-f.patch
@@ -0,0 +1,124 @@
+From 4c47cfa22802fd8201586bef233d8161df4ff61b Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@gentoo.org>
+Date: Fri, 10 Mar 2017 10:15:50 -0800
+Subject: [PATCH] libsandbox: whitelist renameat/symlinkat as symlink funcs
+
+These funcs don't deref their path args, so flag them as such.
+
+URL: https://bugs.gentoo.org/612202
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ libsandbox/libsandbox.c |  4 +++-
+ tests/renameat-2.sh     | 12 ++++++++++++
+ tests/renameat-3.sh     | 11 +++++++++++
+ tests/renameat.at       |  2 ++
+ tests/symlinkat-2.sh    | 10 ++++++++++
+ tests/symlinkat-3.sh    |  9 +++++++++
+ tests/symlinkat.at      |  2 ++
+ 7 files changed, 49 insertions(+), 1 deletion(-)
+ create mode 100755 tests/renameat-2.sh
+ create mode 100755 tests/renameat-3.sh
+ create mode 100755 tests/symlinkat-2.sh
+ create mode 100755 tests/symlinkat-3.sh
+
+diff --git a/libsandbox/libsandbox.c b/libsandbox/libsandbox.c
+index e809308..de48bd7 100644
+--- a/libsandbox/libsandbox.c
++++ b/libsandbox/libsandbox.c
+@@ -650,8 +650,10 @@ static bool symlink_func(int sb_nr, int flags, const char *abs_path)
+ 	      sb_nr == SB_NR_LCHOWN   ||
+ 	      sb_nr == SB_NR_REMOVE   ||
+ 	      sb_nr == SB_NR_RENAME   ||
++	      sb_nr == SB_NR_RENAMEAT ||
+ 	      sb_nr == SB_NR_RMDIR    ||
+-	      sb_nr == SB_NR_SYMLINK))
++	      sb_nr == SB_NR_SYMLINK  ||
++	      sb_nr == SB_NR_SYMLINKAT))
+ 	{
+ 		/* These funcs sometimes operate on symlinks */
+ 		if (!((sb_nr == SB_NR_FCHOWNAT ||
+diff --git a/tests/renameat-2.sh b/tests/renameat-2.sh
+new file mode 100755
+index 0000000..d0fbe8a
+--- /dev/null
++++ b/tests/renameat-2.sh
+@@ -0,0 +1,12 @@
++#!/bin/sh
++# make sure we can clobber symlinks #612202
++
++addwrite $PWD
++
++ln -s /asdf sym || exit 1
++touch file
++renameat-0 0 AT_FDCWD file AT_FDCWD sym || exit 1
++[ ! -e file ]
++[ ! -L sym ]
++[ -e sym ]
++test ! -s "${SANDBOX_LOG}"
+diff --git a/tests/renameat-3.sh b/tests/renameat-3.sh
+new file mode 100755
+index 0000000..9ae5c9a
+--- /dev/null
++++ b/tests/renameat-3.sh
+@@ -0,0 +1,11 @@
++#!/bin/sh
++# make sure we reject bad renames #612202
++
++addwrite $PWD
++mkdir deny
++adddeny $PWD/deny
++
++touch file
++renameat-0 -1,EACCES AT_FDCWD file AT_FDCWD deny/file || exit 1
++[ -e file ]
++test -s "${SANDBOX_LOG}"
+diff --git a/tests/renameat.at b/tests/renameat.at
+index 081d7d2..eec4638 100644
+--- a/tests/renameat.at
++++ b/tests/renameat.at
+@@ -1 +1,3 @@
+ SB_CHECK(1)
++SB_CHECK(2)
++SB_CHECK(3)
+diff --git a/tests/symlinkat-2.sh b/tests/symlinkat-2.sh
+new file mode 100755
+index 0000000..168362e
+--- /dev/null
++++ b/tests/symlinkat-2.sh
+@@ -0,0 +1,10 @@
++#!/bin/sh
++# make sure we can clobber symlinks #612202
++
++addwrite $PWD
++
++symlinkat-0 0 /asdf AT_FDCWD ./sym || exit 1
++[ -L sym ]
++symlinkat-0 -1,EEXIST /asdf AT_FDCWD ./sym || exit 1
++[ -L sym ]
++test ! -s "${SANDBOX_LOG}"
+diff --git a/tests/symlinkat-3.sh b/tests/symlinkat-3.sh
+new file mode 100755
+index 0000000..a01c750
+--- /dev/null
++++ b/tests/symlinkat-3.sh
+@@ -0,0 +1,9 @@
++#!/bin/sh
++# make sure we reject bad symlinks #612202
++
++addwrite $PWD
++mkdir deny
++adddeny $PWD/deny
++
++symlinkat-0 -1,EACCES ./ AT_FDCWD deny/sym || exit 1
++test -s "${SANDBOX_LOG}"
+diff --git a/tests/symlinkat.at b/tests/symlinkat.at
+index 081d7d2..eec4638 100644
+--- a/tests/symlinkat.at
++++ b/tests/symlinkat.at
+@@ -1 +1,3 @@
+ SB_CHECK(1)
++SB_CHECK(2)
++SB_CHECK(3)
+-- 
+2.30.0
+
diff --git a/sys-apps/sandbox/files/sandbox-2.11-retry-PTRACE_GETREGS.patch b/sys-apps/sandbox/files/sandbox-2.11-retry-PTRACE_GETREGS.patch
new file mode 100644
index 0000000..fc27f2f
--- /dev/null
+++ b/sys-apps/sandbox/files/sandbox-2.11-retry-PTRACE_GETREGS.patch
@@ -0,0 +1,63 @@
+From 9b5da65034da5489edcd0c12330bbf3faf032d71 Mon Sep 17 00:00:00 2001
+From: Jian Cai <jiancai@google.com>
+Date: Thu, 1 Apr 2021 11:37:15 -0700
+Subject: [PATCH] libsandbox: retry ptrace when PTRACE_GETREGS is used.
+
+Call ptrace again if it fails when the request type is PTRACE_GETREGS.
+
+Signed-off-by: Jian Cai <jiancai@google.com>
+---
+ libsandbox/trace.c    | 12 +++++++++++-
+ libsandbox/wrappers.h |  2 ++
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/libsandbox/trace.c b/libsandbox/trace.c
+index 3efef23..c87c4eb 100644
+--- a/libsandbox/trace.c
++++ b/libsandbox/trace.c
+@@ -56,6 +56,7 @@ static void trace_exit(int status)
+ static long _do_ptrace(sb_ptrace_req_t request, const char *srequest, void *addr, void *data)
+ {
+ 	long ret;
++	bool retried = false;
+  try_again:
+ 	errno = 0;
+ 	ret = ptrace(request, trace_pid, addr, data);
+@@ -74,11 +75,20 @@ static long _do_ptrace(sb_ptrace_req_t request, const char *srequest, void *addr
+ 			 * That's not something the sandbox should abort on. #560396
+ 			 */
+ 			return ret;
+-		} else if (!errno)
++		} else if (!errno) {
+ 			if (request == PTRACE_PEEKDATA ||
+ 			    request == PTRACE_PEEKTEXT ||
+ 			    request == PTRACE_PEEKUSER)
+ 				return ret;
++			// Retry once when PTRACE_GETREGS is used. #1188969
++			if (request == PTRACE_GETREGS) {
++				if (!retried && (random() % 10) != 0) {
++					retried = true;
++					goto try_again;
++				}
++				sb_unwrapped_system("(set -x; uname -a; ps af -o pgid,ppid,pid,etime,cputime,%cpu,command; dmesg | tail -n100;) >/dev/tty 2>&1");
++			}
++		}
+ 
+ 		sb_ebort("ISE:_do_ptrace: ptrace(%s, ..., %p, %p): %s\n",
+ 			srequest, addr, data, strerror(errno));
+diff --git a/libsandbox/wrappers.h b/libsandbox/wrappers.h
+index bf5bf64..5f4ac2a 100644
+--- a/libsandbox/wrappers.h
++++ b/libsandbox/wrappers.h
+@@ -21,6 +21,8 @@ attribute_hidden char *sb_unwrapped_getcwd (char *, size_t);
+ attribute_hidden int   sb_unwrapped_open   (const char *, int, mode_t);
+ #define                sb_unwrapped_popen  sb_unwrapped_popen_DEFAULT
+ attribute_hidden FILE *sb_unwrapped_popen  (const char *, const char *);
++#define                sb_unwrapped_system sb_unwrapped_system_DEFAULT
++attribute_hidden int   sb_unwrapped_system  (const char *);
+ 
+ attribute_hidden bool sb_fopen_pre_check    (const char *func, const char *pathname, const char *mode);
+ attribute_hidden bool sb_fopen64_pre_check  (const char *func, const char *pathname, const char *mode);
+-- 
+2.31.1.498.g6c1eba8ee3d-goog
+
diff --git a/sys-apps/sandbox/sandbox-2.11-r6.ebuild b/sys-apps/sandbox/sandbox-2.11-r6.ebuild
deleted file mode 100644
index dbf1776..0000000
--- a/sys-apps/sandbox/sandbox-2.11-r6.ebuild
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-#
-# don't monkey with this ebuild unless contacting portage devs.
-# period.
-#
-
-EAPI="5"
-
-inherit autotools eutils flag-o-matic multilib-minimal multiprocessing pax-utils
-
-DESCRIPTION="sandbox'd LD_PRELOAD hack"
-HOMEPAGE="https://www.gentoo.org/proj/en/portage/sandbox/"
-SRC_URI="mirror://gentoo/${P}.tar.xz
-	https://dev.gentoo.org/~vapier/dist/${P}.tar.xz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="app-arch/xz-utils
-	>=app-misc/pax-utils-0.1.19" #265376
-RDEPEND=""
-
-has sandbox_death_notice ${EBUILD_DEATH_HOOKS} || EBUILD_DEATH_HOOKS="${EBUILD_DEATH_HOOKS} sandbox_death_notice"
-
-sandbox_death_notice() {
-	ewarn "If configure failed with a 'cannot run C compiled programs' error, try this:"
-	ewarn "FEATURES='-sandbox -usersandbox' emerge sandbox"
-}
-
-src_prepare() {
-	epatch "${FILESDIR}"/${P}-execvpe.patch #578516
-	epatch "${FILESDIR}"/${P}-exec-hash.patch #578524
-	epatch "${FILESDIR}"/${P}-symbol-table-size.patch # crosbug.com/884234
-	epatch "${FILESDIR}"/${P}-lld.patch # crbug.com/982877
-	epatch_user
-	eautoreconf
-}
-
-multilib_src_configure() {
-	filter-lfs-flags #90228
-
-	local myconf=()
-	host-is-pax && myconf+=( --disable-pch ) #301299 #425524 #572092
-
-	ECONF_SOURCE="${S}" \
-	econf "${myconf[@]}"
-}
-
-multilib_src_test() {
-	# Default sandbox build will run with --jobs set to # cpus.
-	emake check TESTSUITEFLAGS="--jobs=$(makeopts_jobs)"
-}
-
-multilib_src_install_all() {
-	doenvd "${FILESDIR}"/09sandbox
-
-	keepdir /var/log/sandbox
-	fowners root:portage /var/log/sandbox
-	fperms 0770 /var/log/sandbox
-
-	cd "${S}"
-	dodoc AUTHORS ChangeLog* NEWS README
-}
-
-pkg_preinst() {
-	chown root:portage "${ED}"/var/log/sandbox
-	chmod 0770 "${ED}"/var/log/sandbox
-
-	if [[ ${REPLACING_VERSIONS} == 1.* ]] ; then
-		local old=$(find "${EROOT}"/lib* -maxdepth 1 -name 'libsandbox*')
-		if [[ -n ${old} ]] ; then
-			elog "Removing old sandbox libraries for you:"
-			find "${EROOT}"/lib* -maxdepth 1 -name 'libsandbox*' -print -delete
-		fi
-	fi
-}
-
-pkg_postinst() {
-	if [[ ${REPLACING_VERSIONS} == 1.* ]] ; then
-		chmod 0755 "${EROOT}"/etc/sandbox.d #265376
-	fi
-}
diff --git a/sys-apps/sandbox/sandbox-2.11-r9.ebuild b/sys-apps/sandbox/sandbox-2.11-r9.ebuild
new file mode 100644
index 0000000..0b80beb
--- /dev/null
+++ b/sys-apps/sandbox/sandbox-2.11-r9.ebuild
@@ -0,0 +1,88 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+#
+# don't monkey with this ebuild unless contacting portage devs.
+# period.
+#
+
+EAPI="5"
+
+inherit autotools eutils flag-o-matic multilib-minimal multiprocessing pax-utils
+
+DESCRIPTION="sandbox'd LD_PRELOAD hack"
+HOMEPAGE="https://www.gentoo.org/proj/en/portage/sandbox/"
+SRC_URI="mirror://gentoo/${P}.tar.xz
+	https://dev.gentoo.org/~vapier/dist/${P}.tar.xz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="app-arch/xz-utils
+	>=app-misc/pax-utils-0.1.19" #265376
+RDEPEND=""
+
+has sandbox_death_notice ${EBUILD_DEATH_HOOKS} || EBUILD_DEATH_HOOKS="${EBUILD_DEATH_HOOKS} sandbox_death_notice"
+
+sandbox_death_notice() {
+	ewarn "If configure failed with a 'cannot run C compiled programs' error, try this:"
+	ewarn "FEATURES='-sandbox -usersandbox' emerge sandbox"
+}
+
+src_prepare() {
+	epatch "${FILESDIR}"/${P}-execvpe.patch #578516
+	epatch "${FILESDIR}"/${P}-exec-hash.patch #578524
+	epatch "${FILESDIR}"/${P}-symbol-table-size.patch # crosbug.com/884234
+	epatch "${FILESDIR}"/${P}-lld.patch # crbug.com/982877
+	epatch "${FILESDIR}"/${P}-allowlist-renameat-symlinkat-as-symlink-f.patch #bugs.gentoo.org/612202
+	epatch "${FILESDIR}"/${P}-retry-PTRACE_GETREGS.patch #1188969
+	epatch_user
+	eautoreconf
+}
+
+multilib_src_configure() {
+	filter-lfs-flags #90228
+
+	local myconf=()
+	host-is-pax && myconf+=( --disable-pch ) #301299 #425524 #572092
+
+	ECONF_SOURCE="${S}" \
+	econf "${myconf[@]}"
+}
+
+multilib_src_test() {
+	# Default sandbox build will run with --jobs set to # cpus.
+	emake check TESTSUITEFLAGS="--jobs=$(makeopts_jobs)"
+}
+
+multilib_src_install_all() {
+	doenvd "${FILESDIR}"/09sandbox
+
+	keepdir /var/log/sandbox
+	fowners root:portage /var/log/sandbox
+	fperms 0770 /var/log/sandbox
+
+	cd "${S}"
+	dodoc AUTHORS ChangeLog* NEWS README
+}
+
+pkg_preinst() {
+	chown root:portage "${ED}"/var/log/sandbox
+	chmod 0770 "${ED}"/var/log/sandbox
+
+	if [[ ${REPLACING_VERSIONS} == 1.* ]] ; then
+		local old=$(find "${EROOT}"/lib* -maxdepth 1 -name 'libsandbox*')
+		if [[ -n ${old} ]] ; then
+			elog "Removing old sandbox libraries for you:"
+			find "${EROOT}"/lib* -maxdepth 1 -name 'libsandbox*' -print -delete
+		fi
+	fi
+}
+
+pkg_postinst() {
+	if [[ ${REPLACING_VERSIONS} == 1.* ]] ; then
+		chmod 0755 "${EROOT}"/etc/sandbox.d #265376
+	fi
+}
diff --git a/sys-apps/sis-updater/sis-updater-0.0.1-r26.ebuild b/sys-apps/sis-updater/sis-updater-0.0.1-r26.ebuild
deleted file mode 100644
index a7c659b..0000000
--- a/sys-apps/sis-updater/sis-updater-0.0.1-r26.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="237ad18a293565c92acfbb1f9170bab7714eef35"
-CROS_WORKON_TREE="aa5c80eca011d83e5c8532f991e61d6211be68e6"
-CROS_WORKON_PROJECT="chromiumos/third_party/sis-updater"
-
-inherit cros-workon cros-common.mk libchrome udev user
-
-DESCRIPTION="A tool to update SiS firmware on Mimo from Chromium OS."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/sis-updater"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-DEPEND="chromeos-base/libbrillo:="
-
-RDEPEND="${DEPEND}"
-
-src_install() {
-	dosbin "${OUT}/sis-updater"
-	udev_dorules conf/99-sis-usb.rules
-}
-
-pkg_preinst() {
-	enewuser cfm-firmware-updaters
-	enewgroup cfm-firmware-updaters
-}
diff --git a/sys-apps/sis-updater/sis-updater-0.0.1-r27.ebuild b/sys-apps/sis-updater/sis-updater-0.0.1-r27.ebuild
new file mode 100644
index 0000000..a2e45c0
--- /dev/null
+++ b/sys-apps/sis-updater/sis-updater-0.0.1-r27.ebuild
@@ -0,0 +1,30 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="38bf335dc6376bab3d77bc1023c713e47de308db"
+CROS_WORKON_TREE="5da4d25450bac2866073b62de2673b44f4811c4f"
+CROS_WORKON_PROJECT="chromiumos/third_party/sis-updater"
+
+inherit cros-workon cros-common.mk libchrome udev user
+
+DESCRIPTION="A tool to update SiS firmware on Mimo from Chromium OS."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/third_party/sis-updater"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+
+DEPEND="chromeos-base/libbrillo:="
+
+RDEPEND="${DEPEND}"
+
+src_install() {
+	dosbin "${OUT}/sis-updater"
+	udev_dorules conf/99-sis-usb.rules
+}
+
+pkg_preinst() {
+	enewuser cfm-firmware-updaters
+	enewgroup cfm-firmware-updaters
+}
diff --git a/sys-apps/superiotool/metadata.xml b/sys-apps/superiotool/metadata.xml
deleted file mode 100644
index 8c509c1..0000000
--- a/sys-apps/superiotool/metadata.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-	<maintainer>
-		<email>idl0r@gentoo.org</email>
-		<name>Christian Ruppert</name>
-	</maintainer>
-	<maintainer>
-		<email>vapier@gentoo.org</email>
-	</maintainer>
-	<use>
-		<flag name="pci">Support for PCI-attached "Super I/Os" (e.g. in VIA VT82686A/B).</flag>
-	</use>
-</pkgmetadata>
diff --git a/sys-apps/superiotool/superiotool-0.0.1-r2938.ebuild b/sys-apps/superiotool/superiotool-0.0.1-r2938.ebuild
deleted file mode 100644
index 7490dc1..0000000
--- a/sys-apps/superiotool/superiotool-0.0.1-r2938.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2010 Chromium OS Authors
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI=4
-CROS_WORKON_COMMIT="1cf1d1ceda64e0b81170f8454fd5ecca311667d5"
-CROS_WORKON_TREE="2e32d2a5a79f8e88be91b44b40a65211c6ea4dae"
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-CROS_WORKON_LOCALNAME="coreboot"
-
-inherit cros-workon toolchain-funcs
-
-DESCRIPTION="Superiotool allows you to detect which Super I/O you have on your mainboard, and it can provide detailed information about the register contents of the Super I/O."
-HOMEPAGE="http://www.coreboot.org/Superiotool"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="amd64 x86"
-
-RDEPEND="sys-apps/pciutils"
-DEPEND="${RDEPEND}"
-
-src_compile() {
-	emake -C util/superiotool CC="$(tc-getCC)"
-}
-
-src_install() {
-	emake -C util/superiotool DESTDIR="${D}" install
-}
diff --git a/sys-apps/superiotool/superiotool-9999.ebuild b/sys-apps/superiotool/superiotool-9999.ebuild
deleted file mode 100644
index d9174b4..0000000
--- a/sys-apps/superiotool/superiotool-9999.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2010 Chromium OS Authors
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI=4
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-CROS_WORKON_LOCALNAME="coreboot"
-
-inherit cros-workon toolchain-funcs
-
-DESCRIPTION="Superiotool allows you to detect which Super I/O you have on your mainboard, and it can provide detailed information about the register contents of the Super I/O."
-HOMEPAGE="http://www.coreboot.org/Superiotool"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-
-RDEPEND="sys-apps/pciutils"
-DEPEND="${RDEPEND}"
-
-src_compile() {
-	emake -C util/superiotool CC="$(tc-getCC)"
-}
-
-src_install() {
-	emake -C util/superiotool DESTDIR="${D}" install
-}
diff --git a/sys-apps/systemd-tmpfiles/OWNERS b/sys-apps/systemd-tmpfiles/OWNERS
new file mode 100644
index 0000000..b5e1a87
--- /dev/null
+++ b/sys-apps/systemd-tmpfiles/OWNERS
@@ -0,0 +1,2 @@
+include chromiumos/platform2:/init/OWNERS
+allenwebb@google.com
diff --git a/sys-apps/systemd-tmpfiles/files/chromeos-version.sh b/sys-apps/systemd-tmpfiles/files/chromeos-version.sh
new file mode 100644
index 0000000..3d7d6bc
--- /dev/null
+++ b/sys-apps/systemd-tmpfiles/files/chromeos-version.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+#
+# Copyright 2021 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.
+awk '
+  match($0, "^ *version *: *.([0-9]+)", v) {
+    print v[1]
+    exit
+  }
+' "$1/meson.build"
diff --git a/sys-apps/systemd-tmpfiles/systemd-tmpfiles-247-r2.ebuild b/sys-apps/systemd-tmpfiles/systemd-tmpfiles-247-r2.ebuild
new file mode 100644
index 0000000..e4d573f
--- /dev/null
+++ b/sys-apps/systemd-tmpfiles/systemd-tmpfiles-247-r2.ebuild
@@ -0,0 +1,206 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="be2ed6c3b67e544ae17fd90776f5331abd02b1c9"
+CROS_WORKON_TREE="83bd8f9f33dcbdab56dd52d44086e72c63b85e7b"
+CROS_WORKON_PROJECT="chromiumos/third_party/systemd"
+CROS_WORKON_LOCALNAME="../third_party/systemd"
+
+MINKV="3.11"
+PYTHON_COMPAT=( python3_{6..9} )
+inherit meson python-any-r1 cros-workon
+
+DESCRIPTION="Creates, deletes and cleans up volatile and temporary files and directories"
+HOMEPAGE="https://www.freedesktop.org/wiki/Software/systemd"
+SRC_URI="elibc_musl? ( https://dev.gentoo.org/~gyakovlev/distfiles/${P}-musl.tar.xz )"
+
+LICENSE="BSD-2 GPL-2 LGPL-2.1 MIT public-domain"
+SLOT="0"
+KEYWORDS="*"
+IUSE="selinux test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	sys-apps/acl:0=
+	>=sys-apps/util-linux-2.30:0=
+	>=sys-kernel/linux-headers-${MINKV}
+	sys-libs/libcap:0=
+	selinux? ( sys-libs/libselinux:0= )
+"
+RDEPEND="${DEPEND}
+	!sys-apps/opentmpfiles
+	!sys-apps/systemd
+"
+
+BDEPEND="
+	app-text/docbook-xml-dtd:4.2
+	app-text/docbook-xml-dtd:4.5
+	app-text/docbook-xsl-stylesheets
+	dev-libs/libxslt:0
+	>=dev-util/meson-0.46
+	>=dev-util/intltool-0.50
+	>=sys-apps/coreutils-8.16
+	sys-devel/m4
+	virtual/pkgconfig
+	test? ( ${PYTHON_DEPS} )
+"
+
+pkg_setup() {
+	use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+	# musl patchset from:
+	# http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-core/systemd/systemd
+	use elibc_musl && eapply "${WORKDIR}/${P}-musl"
+	default
+}
+
+src_configure() {
+	# disable everything until configure says "enabled features: ACL, tmpfiles"
+	local systemd_disable_options=(
+		adm-group
+		analyze
+		apparmor
+		audit
+		backlight
+		binfmt
+		blkid
+		bzip2
+		coredump
+		dbus
+		efi
+		elfutils
+		environment-d
+		fdisk
+		gcrypt
+		glib
+		gshadow
+		gnutls
+		hibernate
+		hostnamed
+		hwdb
+		idn
+		ima
+		initrd
+		firstboot
+		kernel-install
+		kmod
+		ldconfig
+		libcryptsetup
+		libcurl
+		libfido2
+		libidn
+		libidn2
+		libiptc
+		link-networkd-shared
+		link-systemctl-shared
+		link-timesyncd-shared
+		link-udev-shared
+		localed
+		logind
+		lz4
+		machined
+		microhttpd
+		networkd
+		nss-myhostname
+		nss-resolve
+		nss-systemd
+		openssl
+		p11kit
+		pam
+		pcre2
+		polkit
+		portabled
+		pstore
+		pwquality
+		randomseed
+		resolve
+		rfkill
+		seccomp
+		$(usex selinux '' selinux)
+		smack
+		sysusers
+		timedated
+		timesyncd
+		tpm
+		qrencode
+		quotacheck
+		userdb
+		utmp
+		vconsole
+		wheel-group
+		xdg-autostart
+		xkbcommon
+		xz
+		zlib
+		zstd
+	)
+
+	# prepend -D and append =false, e.g. zstd becomes -Dzstd=false
+	systemd_disable_options=( ${systemd_disable_options[@]/#/-D} )
+	systemd_disable_options=( ${systemd_disable_options[@]/%/=false} )
+
+	local emesonargs=(
+		-Dacl=true
+		-Dtmpfiles=true
+		-Dstandalone-binaries=true # this and below option does the magic
+		-Dstatic-libsystemd=true
+		-Dsysvinit-path=''
+		${systemd_disable_options[@]}
+	)
+	meson_src_configure
+}
+
+src_compile() {
+	# tmpfiles and sysusers can be built as standalone, link systemd-shared in statically.
+	# https://github.com/systemd/systemd/pull/16061 original implementation
+	# we just need to pass -Dstandalone-binaries=true and
+	# use <name>.standalone target below.
+	# check meson.build for if have_standalone_binaries condition per target.
+	local mytargets=(
+		systemd-tmpfiles.standalone
+		man/tmpfiles.d.5
+		man/systemd-tmpfiles.8
+	)
+	meson_src_compile "${mytargets[@]}"
+}
+
+src_install() {
+	# lean and mean installation, single binary and man-pages
+	pushd "${BUILD_DIR}" > /dev/null || die
+	into /
+	newbin systemd-tmpfiles.standalone systemd-tmpfiles
+
+	doman man/{systemd-tmpfiles.8,tmpfiles.d.5}
+
+	popd > /dev/null || die
+
+	# The init file installation was intentally removed.
+}
+
+src_test() {
+	# 'meson test' will compile full systemd, but we can still outsmart it
+	python_fix_shebang src/test/test-systemd-tmpfiles.py
+	ASAN_OPTIONS=log_path=stderr \
+	UBSAN_OPTIONS=print_stacktrace=1:log_path=stderr \
+	/mnt/host/source/src/platform2/common-mk/platform2_test.py \
+	--sysroot="${SYSROOT}" -- "${EPYTHON}" src/test/test-systemd-tmpfiles.py \
+	"/${BUILD_DIR#${SYSROOT}/}"/systemd-tmpfiles.standalone || die "${FUNCNAME} failed"
+}
+
+# adapted from opentmpfiles ebuild
+add_service() {
+	local initd=$1
+	local runlevel=$2
+
+	elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
+	mkdir -p "${EROOT}/etc/runlevels/${runlevel}"
+	ln -snf "${EROOT}/etc/init.d/${initd}" "${EROOT}/etc/runlevels/${runlevel}/${initd}"
+}
+
+pkg_postinst() {
+	: # This is intentionally removed from the upstream ebuild.
+}
diff --git a/sys-apps/systemd-tmpfiles/systemd-tmpfiles-9999.ebuild b/sys-apps/systemd-tmpfiles/systemd-tmpfiles-9999.ebuild
new file mode 100644
index 0000000..5c31304
--- /dev/null
+++ b/sys-apps/systemd-tmpfiles/systemd-tmpfiles-9999.ebuild
@@ -0,0 +1,204 @@
+# Copyright 2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_PROJECT="chromiumos/third_party/systemd"
+CROS_WORKON_LOCALNAME="../third_party/systemd"
+
+MINKV="3.11"
+PYTHON_COMPAT=( python3_{6..9} )
+inherit meson python-any-r1 cros-workon
+
+DESCRIPTION="Creates, deletes and cleans up volatile and temporary files and directories"
+HOMEPAGE="https://www.freedesktop.org/wiki/Software/systemd"
+SRC_URI="elibc_musl? ( https://dev.gentoo.org/~gyakovlev/distfiles/${P}-musl.tar.xz )"
+
+LICENSE="BSD-2 GPL-2 LGPL-2.1 MIT public-domain"
+SLOT="0"
+KEYWORDS="~*"
+IUSE="selinux test"
+RESTRICT="!test? ( test )"
+
+DEPEND="
+	sys-apps/acl:0=
+	>=sys-apps/util-linux-2.30:0=
+	>=sys-kernel/linux-headers-${MINKV}
+	sys-libs/libcap:0=
+	selinux? ( sys-libs/libselinux:0= )
+"
+RDEPEND="${DEPEND}
+	!sys-apps/opentmpfiles
+	!sys-apps/systemd
+"
+
+BDEPEND="
+	app-text/docbook-xml-dtd:4.2
+	app-text/docbook-xml-dtd:4.5
+	app-text/docbook-xsl-stylesheets
+	dev-libs/libxslt:0
+	>=dev-util/meson-0.46
+	>=dev-util/intltool-0.50
+	>=sys-apps/coreutils-8.16
+	sys-devel/m4
+	virtual/pkgconfig
+	test? ( ${PYTHON_DEPS} )
+"
+
+pkg_setup() {
+	use test && python-any-r1_pkg_setup
+}
+
+src_prepare() {
+	# musl patchset from:
+	# http://cgit.openembedded.org/openembedded-core/tree/meta/recipes-core/systemd/systemd
+	use elibc_musl && eapply "${WORKDIR}/${P}-musl"
+	default
+}
+
+src_configure() {
+	# disable everything until configure says "enabled features: ACL, tmpfiles"
+	local systemd_disable_options=(
+		adm-group
+		analyze
+		apparmor
+		audit
+		backlight
+		binfmt
+		blkid
+		bzip2
+		coredump
+		dbus
+		efi
+		elfutils
+		environment-d
+		fdisk
+		gcrypt
+		glib
+		gshadow
+		gnutls
+		hibernate
+		hostnamed
+		hwdb
+		idn
+		ima
+		initrd
+		firstboot
+		kernel-install
+		kmod
+		ldconfig
+		libcryptsetup
+		libcurl
+		libfido2
+		libidn
+		libidn2
+		libiptc
+		link-networkd-shared
+		link-systemctl-shared
+		link-timesyncd-shared
+		link-udev-shared
+		localed
+		logind
+		lz4
+		machined
+		microhttpd
+		networkd
+		nss-myhostname
+		nss-resolve
+		nss-systemd
+		openssl
+		p11kit
+		pam
+		pcre2
+		polkit
+		portabled
+		pstore
+		pwquality
+		randomseed
+		resolve
+		rfkill
+		seccomp
+		$(usex selinux '' selinux)
+		smack
+		sysusers
+		timedated
+		timesyncd
+		tpm
+		qrencode
+		quotacheck
+		userdb
+		utmp
+		vconsole
+		wheel-group
+		xdg-autostart
+		xkbcommon
+		xz
+		zlib
+		zstd
+	)
+
+	# prepend -D and append =false, e.g. zstd becomes -Dzstd=false
+	systemd_disable_options=( ${systemd_disable_options[@]/#/-D} )
+	systemd_disable_options=( ${systemd_disable_options[@]/%/=false} )
+
+	local emesonargs=(
+		-Dacl=true
+		-Dtmpfiles=true
+		-Dstandalone-binaries=true # this and below option does the magic
+		-Dstatic-libsystemd=true
+		-Dsysvinit-path=''
+		${systemd_disable_options[@]}
+	)
+	meson_src_configure
+}
+
+src_compile() {
+	# tmpfiles and sysusers can be built as standalone, link systemd-shared in statically.
+	# https://github.com/systemd/systemd/pull/16061 original implementation
+	# we just need to pass -Dstandalone-binaries=true and
+	# use <name>.standalone target below.
+	# check meson.build for if have_standalone_binaries condition per target.
+	local mytargets=(
+		systemd-tmpfiles.standalone
+		man/tmpfiles.d.5
+		man/systemd-tmpfiles.8
+	)
+	meson_src_compile "${mytargets[@]}"
+}
+
+src_install() {
+	# lean and mean installation, single binary and man-pages
+	pushd "${BUILD_DIR}" > /dev/null || die
+	into /
+	newbin systemd-tmpfiles.standalone systemd-tmpfiles
+
+	doman man/{systemd-tmpfiles.8,tmpfiles.d.5}
+
+	popd > /dev/null || die
+
+	# The init file installation was intentally removed.
+}
+
+src_test() {
+	# 'meson test' will compile full systemd, but we can still outsmart it
+	python_fix_shebang src/test/test-systemd-tmpfiles.py
+	ASAN_OPTIONS=log_path=stderr \
+	UBSAN_OPTIONS=print_stacktrace=1:log_path=stderr \
+	/mnt/host/source/src/platform2/common-mk/platform2_test.py \
+	--sysroot="${SYSROOT}" -- "${EPYTHON}" src/test/test-systemd-tmpfiles.py \
+	"/${BUILD_DIR#${SYSROOT}/}"/systemd-tmpfiles.standalone || die "${FUNCNAME} failed"
+}
+
+# adapted from opentmpfiles ebuild
+add_service() {
+	local initd=$1
+	local runlevel=$2
+
+	elog "Auto-adding '${initd}' service to your ${runlevel} runlevel"
+	mkdir -p "${EROOT}/etc/runlevels/${runlevel}"
+	ln -snf "${EROOT}/etc/init.d/${initd}" "${EROOT}/etc/runlevels/${runlevel}/${initd}"
+}
+
+pkg_postinst() {
+	: # This is intentionally removed from the upstream ebuild.
+}
diff --git a/sys-apps/systemd-tmpfiles/systemd-tmpfiles.bashrc b/sys-apps/systemd-tmpfiles/systemd-tmpfiles.bashrc
index 9d0687f..f5df706 100644
--- a/sys-apps/systemd-tmpfiles/systemd-tmpfiles.bashrc
+++ b/sys-apps/systemd-tmpfiles/systemd-tmpfiles.bashrc
@@ -2,6 +2,14 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+cros_pre_src_prepare_patches() {
+	# Exclude /usr/local and /run from the config paths.
+	local def_h="src/basic/def.h"
+	sed -i '/"\/run\|"\/usr\/local/d' "${def_h}" &&
+		! grep -HnE '/run|/usr/local' "${def_h}" ||
+		die "unable to clean /run & /usr/local references"
+}
+
 cros_pre_pkg_postinst_disable() {
 	# pkg_postinst() in upstream package will install files to
 	# /etc/runlevels which is masked. Don't let it do that.
diff --git a/sys-apps/upstart/upstart-1.2-r42.ebuild b/sys-apps/upstart/upstart-1.2-r42.ebuild
deleted file mode 100644
index b649074..0000000
--- a/sys-apps/upstart/upstart-1.2-r42.ebuild
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-CROS_WORKON_COMMIT="0dda6d8f285760b12fb2696e9f7b8975702ec5cb"
-CROS_WORKON_TREE="d69eb10c4a65ca386a5bbb961dfe31b246b5fb91"
-CROS_WORKON_PROJECT="chromiumos/third_party/upstart"
-CROS_WORKON_LOCALNAME="../third_party/upstart"
-
-inherit cros-workon autotools flag-o-matic
-
-DESCRIPTION="An event-based replacement for the init daemon"
-HOMEPAGE="http://upstart.ubuntu.com/"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="debug direncryption examples nls selinux udev_bridge"
-
-RDEPEND=">=sys-apps/dbus-1.2.16
-	>=sys-libs/libnih-1.0.2
-	selinux? (
-		sys-libs/libselinux
-		sys-libs/libsepol
-	)
-	udev_bridge? (
-		>=virtual/libudev-146
-	)
-	direncryption? (
-		sys-apps/keyutils
-	)"
-DEPEND=">=dev-libs/expat-2.0.0
-	nls? ( sys-devel/gettext )
-	direncryption? (
-		sys-fs/e2fsprogs
-	)
-	${RDEPEND}"
-RDEPEND+="
-	selinux? ( chromeos-base/selinux-policy )"
-
-src_prepare() {
-	default
-
-	# Patch to use kmsg at higher verbosity for logging; this is
-	# our own patch because we can't just add --verbose to the
-	# kernel command-line when we need to.
-	use debug && eapply "${FILESDIR}"/upstart-1.2-log-verbosity.patch
-
-	# The selinux patch changes makefile.am and configure.ac
-	# so we need to run autoreconf, and if we don't the system
-	# will do it for us, and incorrectly too.
-	eautoreconf
-}
-
-src_configure() {
-	# Rearrange PATH so that /usr/local does not override /usr.
-	append-cppflags '-DPATH="\"/usr/bin:/usr/sbin:/sbin:/bin:/usr/local/sbin:/usr/local/bin\""'
-
-	append-lfs-flags
-
-	econf \
-		--prefix=/ \
-		--exec-prefix= \
-		--includedir='${prefix}/usr/include' \
-		--disable-rpath \
-		$(use_with direncryption dircrypto-keyring) \
-		$(use_enable selinux) \
-		$(use_enable nls)
-}
-
-src_compile() {
-	emake NIH_DBUS_TOOL=$(which nih-dbus-tool)
-}
-
-src_install() {
-	default
-	use examples || rm "${D}"/etc/init/*.conf
-	insinto /etc/init
-	# Always use our own upstart-socket-bridge.conf.
-	doins "${FILESDIR}"/init/upstart-socket-bridge.conf
-	# Restore udev bridge if requested.
-	use udev_bridge && doins extra/conf/upstart-udev-bridge.conf
-	# Install D-Bus XML files.
-	insinto /usr/share/dbus-1/interfaces/
-	doins "${S}"/dbus/*.xml
-}
diff --git a/sys-apps/upstart/upstart-1.2-r43.ebuild b/sys-apps/upstart/upstart-1.2-r43.ebuild
new file mode 100644
index 0000000..291abed
--- /dev/null
+++ b/sys-apps/upstart/upstart-1.2-r43.ebuild
@@ -0,0 +1,88 @@
+# Copyright 1999-2007 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+CROS_WORKON_COMMIT="0dda6d8f285760b12fb2696e9f7b8975702ec5cb"
+CROS_WORKON_TREE="d69eb10c4a65ca386a5bbb961dfe31b246b5fb91"
+CROS_WORKON_PROJECT="chromiumos/third_party/upstart"
+CROS_WORKON_LOCALNAME="../third_party/upstart"
+CROS_WORKON_EGIT_BRANCH="master"
+
+inherit cros-workon autotools flag-o-matic
+
+DESCRIPTION="An event-based replacement for the init daemon"
+HOMEPAGE="http://upstart.ubuntu.com/"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="debug direncryption examples nls selinux udev_bridge"
+
+RDEPEND=">=sys-apps/dbus-1.2.16
+	>=sys-libs/libnih-1.0.2
+	selinux? (
+		sys-libs/libselinux
+		sys-libs/libsepol
+	)
+	udev_bridge? (
+		>=virtual/libudev-146
+	)
+	direncryption? (
+		sys-apps/keyutils
+	)"
+DEPEND=">=dev-libs/expat-2.0.0
+	nls? ( sys-devel/gettext )
+	direncryption? (
+		sys-fs/e2fsprogs
+	)
+	${RDEPEND}"
+RDEPEND+="
+	selinux? ( chromeos-base/selinux-policy )"
+
+src_prepare() {
+	default
+
+	# Patch to use kmsg at higher verbosity for logging; this is
+	# our own patch because we can't just add --verbose to the
+	# kernel command-line when we need to.
+	use debug && eapply "${FILESDIR}"/upstart-1.2-log-verbosity.patch
+
+	# The selinux patch changes makefile.am and configure.ac
+	# so we need to run autoreconf, and if we don't the system
+	# will do it for us, and incorrectly too.
+	eautoreconf
+}
+
+src_configure() {
+	# Rearrange PATH so that /usr/local does not override /usr.
+	append-cppflags '-DPATH="\"/usr/bin:/usr/sbin:/sbin:/bin:/usr/local/sbin:/usr/local/bin\""'
+
+	append-lfs-flags
+
+	econf \
+		--prefix=/ \
+		--exec-prefix= \
+		--includedir='${prefix}/usr/include' \
+		--disable-rpath \
+		$(use_with direncryption dircrypto-keyring) \
+		$(use_enable selinux) \
+		$(use_enable nls)
+}
+
+src_compile() {
+	emake NIH_DBUS_TOOL=$(which nih-dbus-tool)
+}
+
+src_install() {
+	default
+	use examples || rm "${D}"/etc/init/*.conf
+	insinto /etc/init
+	# Always use our own upstart-socket-bridge.conf.
+	doins "${FILESDIR}"/init/upstart-socket-bridge.conf
+	# Restore udev bridge if requested.
+	use udev_bridge && doins extra/conf/upstart-udev-bridge.conf
+	# Install D-Bus XML files.
+	insinto /usr/share/dbus-1/interfaces/
+	doins "${S}"/dbus/*.xml
+}
diff --git a/sys-apps/upstart/upstart-9999.ebuild b/sys-apps/upstart/upstart-9999.ebuild
index 3f7da9e..c7354c6 100644
--- a/sys-apps/upstart/upstart-9999.ebuild
+++ b/sys-apps/upstart/upstart-9999.ebuild
@@ -5,6 +5,7 @@
 
 CROS_WORKON_PROJECT="chromiumos/third_party/upstart"
 CROS_WORKON_LOCALNAME="../third_party/upstart"
+CROS_WORKON_EGIT_BRANCH="master"
 
 inherit cros-workon autotools flag-o-matic
 
diff --git a/sys-apps/ureadahead/files/ureadahead-0.100.0-16.patch b/sys-apps/ureadahead/files/ureadahead-0.100.0-16.patch
new file mode 100644
index 0000000..1ab9bf20
--- /dev/null
+++ b/sys-apps/ureadahead/files/ureadahead-0.100.0-16.patch
@@ -0,0 +1,36 @@
+Author: Alan Ding <alanding@google.com>
+Date:   Fri Mar 19 12:30:34 2021 -0700
+
+    ureadahead: Integrate upstream 16 patch.
+    
+    https://launchpad.net/ubuntu/+source/ureadahead/0.100.0-16
+    ----------------
+    ureadahead (0.100.0-16) raring; urgency=low
+    
+      * src/trace.c: update to ignore symlinks when tracing + cleanup extra
+    stat()
+        (LP: #969926)
+      -- Bryan Fullerton <email address hidden> Mon, 25 Mar 2013 10:09:18
+      +0100
+    ----------------
+
+diff --git a/src/trace.c b/src/trace.c
+index 7b6a6dd..dd1c585 100644
+--- a/src/trace.c
++++ b/src/trace.c
+@@ -535,12 +535,11 @@ trace_add_path (const void *parent,
+ 		nih_hash_add (path_hash, &entry->entry);
+ 	}
+ 
+-	/* Make sure that we have an ordinary file, or a symlink to an
+-	 * ordinary file.  This avoids us opening a fifo or socket.
++	/* Make sure that we have an ordinary file
++	 * This avoids us opening a fifo or socket or symlink.
+ 	 */
+ 	if ((lstat (pathname, &statbuf) < 0)
+-	    || (S_ISLNK (statbuf.st_mode)
+-		&& (stat (pathname, &statbuf) < 0))
++	    || (S_ISLNK (statbuf.st_mode))
+ 	    || (! S_ISREG (statbuf.st_mode)))
+ 		return 0;
+ 
diff --git a/sys-apps/ureadahead/files/ureadahead-0.100.0-force-ssd-mode.patch b/sys-apps/ureadahead/files/ureadahead-0.100.0-force-ssd-mode.patch
new file mode 100644
index 0000000..6562fb7
--- /dev/null
+++ b/sys-apps/ureadahead/files/ureadahead-0.100.0-force-ssd-mode.patch
@@ -0,0 +1,208 @@
+Author: Alan Ding <alanding@google.com>
+Date:   Tue May 18 15:21:14 2021 -0700
+
+    ureadahead: Add --force-ssd-mode option for vms
+    
+    Adds command line option: --force-ssd-mode (off by default).
+    Querying sysfs to detect whether disk is rotational does not work for
+    virtual devices in vm, and if set will write pack header with rotational
+    field set to 0. This option will remove running unnecessary code
+    intended for hdd; any attempts to set highest priority (IOPRIO_CLASS_RT)
+    requiring CAP_SYS_ADMIN capability which ARCVM SELinux will deny.
+    
+    There is no functional effect if option is not used.
+
+diff --git a/src/trace.c b/src/trace.c
+index 854a570..f337f0a 100644
+--- a/src/trace.c
++++ b/src/trace.c
+@@ -92,13 +92,13 @@ static int       read_trace        (const void *parent,
+ 				    int dfd, const char *path,
+ 				    const char *path_prefix_filter,
+ 				    const PathPrefixOption *path_prefix,
+-				    PackFile **files, size_t *num_files);
++				    PackFile **files, size_t *num_files, int force_ssd_mode);
+ static void      fix_path          (char *pathname);
+ static int       trace_add_path    (const void *parent, const char *pathname,
+-				    PackFile **files, size_t *num_files);
++				    PackFile **files, size_t *num_files, int force_ssd_mode);
+ static int       ignore_path       (const char *pathname);
+ static PackFile *trace_file        (const void *parent, dev_t dev,
+-				    PackFile **files, size_t *num_files);
++				    PackFile **files, size_t *num_files, int force_ssd_mode);
+ static int       trace_add_chunks  (const void *parent,
+ 				    PackFile *file, PackPath *path,
+ 				    int fd, off_t size);
+@@ -123,7 +123,8 @@ trace (int daemonise,
+        const char *pack_file,
+        const char *path_prefix_filter,
+        const PathPrefixOption *path_prefix,
+-       int debug_tracing)
++       int debug_tracing,
++	   int force_ssd_mode)
+ {
+ 	int                 dfd;
+ 	FILE                *fp;
+@@ -262,7 +263,7 @@ trace (int daemonise,
+ 
+ 	/* Read trace log */
+ 	if (read_trace (NULL, dfd, "trace", path_prefix_filter, path_prefix,
+-			&files, &num_files) < 0)
++			&files, &num_files, force_ssd_mode) < 0)
+ 		goto error;
+ 
+ 	/*
+@@ -349,7 +350,8 @@ read_trace (const void *parent,
+ 	    const char *path_prefix_filter,  /* May be null */
+ 	    const PathPrefixOption *path_prefix,
+ 	    PackFile ** files,
+-	    size_t *    num_files)
++	    size_t *    num_files,
++		int         force_ssd_mode)
+ {
+ 	int   fd;
+ 	FILE *fp;
+@@ -423,7 +425,7 @@ read_trace (const void *parent,
+ 				ptr = rewritten;
+ 			}
+ 		}
+-		trace_add_path (parent, ptr, files, num_files);
++		trace_add_path (parent, ptr, files, num_files, force_ssd_mode);
+ 
+ 		nih_free (line);  /* also frees |rewritten| */
+ 	}
+@@ -486,7 +488,8 @@ static int
+ trace_add_path (const void *parent,
+ 		const char *pathname,
+ 		PackFile ** files,
+-		size_t *    num_files)
++		size_t *    num_files,
++		int         force_ssd_mode)
+ {
+ 	static NihHash *path_hash = NULL;
+ 	struct stat     statbuf;
+@@ -580,7 +583,7 @@ trace_add_path (const void *parent,
+ 	 * Lookup file based on the dev_t, potentially creating a new
+ 	 * pack file in the array.
+ 	 */
+-	file = trace_file (parent, statbuf.st_dev, files, num_files);
++	file = trace_file (parent, statbuf.st_dev, files, num_files, force_ssd_mode);
+ 
+ 	/* Grow the PackPath array and fill in the details for the new
+ 	 * path.
+@@ -670,7 +673,8 @@ static PackFile *
+ trace_file (const void *parent,
+ 	    dev_t       dev,
+ 	    PackFile ** files,
+-	    size_t *    num_files)
++	    size_t *    num_files,
++		int         force_ssd_mode)
+ {
+ 	nih_local char *filename = NULL;
+ 	int             rotational;
+@@ -684,30 +688,34 @@ trace_file (const void *parent,
+ 		if ((*files)[i].dev == dev)
+ 			return &(*files)[i];
+ 
+-	/* Query sysfs to see whether this disk is rotational; this
+-	 * obviously won't work for virtual devices and the like, so
+-	 * default to TRUE for now.
+-	 */
+-	filename = NIH_MUST (nih_sprintf (NULL, "/sys/dev/block/%d:%d/queue/rotational",
+-					  major (dev), minor (dev)));
+-	if (access (filename, R_OK) < 0) {
+-		/* For devices managed by the scsi stack, the minor device number has to be
+-		 * masked to find the queue/rotational file.
++	if (force_ssd_mode) {
++		rotational = FALSE;
++	} else {
++		/* Query sysfs to see whether this disk is rotational; this
++		 * obviously won't work for virtual devices and the like, so
++		 * default to TRUE for now.
+ 		 */
+-		nih_free (filename);
+ 		filename = NIH_MUST (nih_sprintf (NULL, "/sys/dev/block/%d:%d/queue/rotational",
+-						  major (dev), minor (dev) & 0xffff0));
+-	}
++						major (dev), minor (dev)));
++		if (access (filename, R_OK) < 0) {
++			/* For devices managed by the scsi stack, the minor device number has to be
++			 * masked to find the queue/rotational file.
++			 */
++			nih_free (filename);
++			filename = NIH_MUST (nih_sprintf (NULL, "/sys/dev/block/%d:%d/queue/rotational",
++							major (dev), minor (dev) & 0xffff0));
++		}
+ 
+-	if (get_value (AT_FDCWD, filename, &rotational) < 0) {
+-		NihError *err;
++		if (get_value (AT_FDCWD, filename, &rotational) < 0) {
++			NihError *err;
+ 
+-		err = nih_error_get ();
+-		nih_warn (_("Unable to obtain rotationalness for device %u:%u: %s"),
+-			  major (dev), minor (dev), err->message);
+-		nih_free (err);
++			err = nih_error_get ();
++			nih_warn (_("Unable to obtain rotationalness for device %u:%u: %s"),
++				major (dev), minor (dev), err->message);
++			nih_free (err);
+ 
+-		rotational = TRUE;
++			rotational = TRUE;
++		}
+ 	}
+ 
+ 	/* Grow the PackFile array and fill in the details for the new
+diff --git a/src/trace.h b/src/trace.h
+index f809cc6..8d60b0a 100644
+--- a/src/trace.h
++++ b/src/trace.h
+@@ -38,7 +38,8 @@ int trace (int daemonise, int timeout,
+            const char *pack_file,  /* May be null */
+            const char *path_prefix_filter,  /* May be null */
+            const PathPrefixOption *path_prefix,
+-           int debug_tracing);
++           int debug_tracing,
++           int force_ssd_mode);
+ 
+ NIH_END_EXTERN
+ 
+diff --git a/src/ureadahead.c b/src/ureadahead.c
+index d1bf5a1..61130d4 100644
+--- a/src/ureadahead.c
++++ b/src/ureadahead.c
+@@ -118,6 +118,14 @@ static char *path_prefix_filter = NULL;
+  */
+ static int no_debug_tracing = FALSE;
+ 
++/**
++ * force_ssd_mode:
++ *
++ * Querying sysfs to detect whether disk is rotational does not work for virtual
++ * devices in vm, this will write pack header with rotational field set to 0.
++ */
++static int force_ssd_mode = FALSE;
++
+ static int
+ path_prefix_option (NihOption  *option,
+                     const char *arg)
+@@ -221,6 +229,8 @@ static NihOption options[] = {
+ 	  NULL, "PACK_FILE", &pack_file, dup_string_handler },
+ 	{ 0, "no-debug-tracing", N_("do not enable debug tracing events"),
+ 	  NULL, NULL, &no_debug_tracing, NULL },
++	{ 0, "force-ssd-mode", N_("force ssd setting in pack file during tracing"),
++	  NULL, NULL, &force_ssd_mode, NULL },
+ 
+ 	NIH_OPTION_LAST
+ };
+@@ -311,7 +321,8 @@ main (int   argc,
+ 
+ 	/* Trace to generate new pack files */
+ 	if (trace (daemonise, timeout, filename, pack_file,
+-		   path_prefix_filter, &path_prefix, (no_debug_tracing == FALSE)) < 0) {
++		   path_prefix_filter, &path_prefix, (no_debug_tracing == FALSE),
++		   force_ssd_mode) < 0) {
+ 		NihError *err;
+ 
+ 		err = nih_error_get ();
diff --git a/sys-apps/ureadahead/files/ureadahead-0.100.0-no-debug-tracing.patch b/sys-apps/ureadahead/files/ureadahead-0.100.0-no-debug-tracing.patch
new file mode 100644
index 0000000..f11622c
--- /dev/null
+++ b/sys-apps/ureadahead/files/ureadahead-0.100.0-no-debug-tracing.patch
@@ -0,0 +1,142 @@
+Author: Alan Ding <alanding@google.com>
+Date:   Fri Mar 19 12:43:00 2021 -0700
+
+    ureadahead: Allow disable debug tracing
+    
+    Adds command line option: --no-debug-tracing (off by default).
+    Provide flag to disable tracing with tracing/events/fs/* and start them
+    in init instead since such events can be never allowed while enforcing
+    SELinux on debugfs_tracing_debug security context for non-init process.
+    
+    There is no functional effect if option is not used.
+
+diff --git a/src/trace.c b/src/trace.c
+index dd1c585..854a570 100644
+--- a/src/trace.c
++++ b/src/trace.c
+@@ -122,7 +122,8 @@ trace (int daemonise,
+        const char *filename_to_replace,
+        const char *pack_file,
+        const char *path_prefix_filter,
+-       const PathPrefixOption *path_prefix)
++       const PathPrefixOption *path_prefix,
++       int debug_tracing)
+ {
+ 	int                 dfd;
+ 	FILE                *fp;
+@@ -182,21 +183,23 @@ trace (int daemonise,
+ 		num_cpus = 1;
+ 
+ 	/* Enable tracing of open() syscalls */
+-	if (set_value (dfd, "events/fs/do_sys_open/enable",
+-		       TRUE, &old_sys_open_enabled) < 0)
+-		goto error;
+- 	if (set_value (dfd, "events/fs/open_exec/enable",
+-		       TRUE, &old_open_exec_enabled) < 0)
+-		goto error;
+- 	if (set_value (dfd, "events/fs/uselib/enable",
+-		       TRUE, &old_uselib_enabled) < 0) {
+-		NihError *err;
++	if (debug_tracing) {
++		if (set_value (dfd, "events/fs/do_sys_open/enable",
++			       TRUE, &old_sys_open_enabled) < 0)
++			goto error;
++ 		if (set_value (dfd, "events/fs/open_exec/enable",
++			       TRUE, &old_open_exec_enabled) < 0)
++			goto error;
++ 		if (set_value (dfd, "events/fs/uselib/enable",
++			       TRUE, &old_uselib_enabled) < 0) {
++			NihError *err;
+ 
+-		err = nih_error_get ();
+-		nih_debug ("Missing uselib tracing: %s", err->message);
+-		nih_free (err);
++			err = nih_error_get ();
++			nih_debug ("Missing uselib tracing: %s", err->message);
++			nih_free (err);
+ 
+-		old_uselib_enabled = -1;
++			old_uselib_enabled = -1;
++		}
+ 	}
+ 	if (set_value (dfd, "buffer_size_kb", 8192/num_cpus, &old_buffer_size_kb) < 0)
+ 		goto error;
+@@ -240,16 +243,18 @@ trace (int daemonise,
+ 	if (set_value (dfd, "tracing_on",
+ 		       old_tracing_enabled, NULL) < 0)
+ 		goto error;
+-	if (old_uselib_enabled >= 0)
+-		if (set_value (dfd, "events/fs/uselib/enable",
+-			       old_uselib_enabled, NULL) < 0)
++	if (debug_tracing) {
++		if (old_uselib_enabled >= 0)
++			if (set_value (dfd, "events/fs/uselib/enable",
++				       old_uselib_enabled, NULL) < 0)
++				goto error;
++		if (set_value (dfd, "events/fs/open_exec/enable",
++			       old_open_exec_enabled, NULL) < 0)
+ 			goto error;
+-	if (set_value (dfd, "events/fs/open_exec/enable",
+-		       old_open_exec_enabled, NULL) < 0)
+-		goto error;
+-	if (set_value (dfd, "events/fs/do_sys_open/enable",
+-		       old_sys_open_enabled, NULL) < 0)
+-		goto error;
++		if (set_value (dfd, "events/fs/do_sys_open/enable",
++			       old_sys_open_enabled, NULL) < 0)
++			goto error;
++	}
+ 
+ 	/* Be nicer */
+ 	if (nice (15))
+diff --git a/src/trace.h b/src/trace.h
+index 16af782..f809cc6 100644
+--- a/src/trace.h
++++ b/src/trace.h
+@@ -37,7 +37,8 @@ int trace (int daemonise, int timeout,
+            const char *filename_to_replace,
+            const char *pack_file,  /* May be null */
+            const char *path_prefix_filter,  /* May be null */
+-           const PathPrefixOption *path_prefix);
++           const PathPrefixOption *path_prefix,
++           int debug_tracing);
+ 
+ NIH_END_EXTERN
+ 
+diff --git a/src/ureadahead.c b/src/ureadahead.c
+index 066bfff..d1bf5a1 100644
+--- a/src/ureadahead.c
++++ b/src/ureadahead.c
+@@ -110,6 +110,14 @@ static char *pack_file = NULL;
+  */
+ static char *path_prefix_filter = NULL;
+ 
++/**
++ * no_debug_tracing:
++ *
++ * Provide flag to disable tracing with tracing/events/fs/* and start them in
++ * init instead since such events can be never allowed while enforcing SELinux.
++ */
++static int no_debug_tracing = FALSE;
++
+ static int
+ path_prefix_option (NihOption  *option,
+                     const char *arg)
+@@ -211,6 +219,8 @@ static NihOption options[] = {
+ 	  NULL, "PREFIX_FILTER", &path_prefix_filter, dup_string_handler },
+ 	{ 0, "pack-file", N_("Path of the pack file to use"),
+ 	  NULL, "PACK_FILE", &pack_file, dup_string_handler },
++	{ 0, "no-debug-tracing", N_("do not enable debug tracing events"),
++	  NULL, NULL, &no_debug_tracing, NULL },
+ 
+ 	NIH_OPTION_LAST
+ };
+@@ -301,7 +311,7 @@ main (int   argc,
+ 
+ 	/* Trace to generate new pack files */
+ 	if (trace (daemonise, timeout, filename, pack_file,
+-		   path_prefix_filter, &path_prefix) < 0) {
++		   path_prefix_filter, &path_prefix, (no_debug_tracing == FALSE)) < 0) {
+ 		NihError *err;
+ 
+ 		err = nih_error_get ();
diff --git a/sys-apps/ureadahead/ureadahead-0.100.0-r12.ebuild b/sys-apps/ureadahead/ureadahead-0.100.0-r17.ebuild
similarity index 100%
rename from sys-apps/ureadahead/ureadahead-0.100.0-r12.ebuild
rename to sys-apps/ureadahead/ureadahead-0.100.0-r17.ebuild
diff --git a/sys-apps/ureadahead/ureadahead-0.100.0.ebuild b/sys-apps/ureadahead/ureadahead-0.100.0.ebuild
index 0b7432b..aa5e7f9 100644
--- a/sys-apps/ureadahead/ureadahead-0.100.0.ebuild
+++ b/sys-apps/ureadahead/ureadahead-0.100.0.ebuild
@@ -4,6 +4,8 @@
 
 EAPI="6"
 
+inherit arc-build-constants
+
 DESCRIPTION="Ureadahead - Read files in advance during boot"
 HOMEPAGE="https://launchpad.net/ureadahead"
 SRC_URI="https://launchpad.net/ureadahead/trunk/${PV}/+download/${P}.tar.gz"
@@ -11,6 +13,7 @@
 LICENSE="GPL-2"
 SLOT="0"
 KEYWORDS="*"
+IUSE="arcvm"
 
 RDEPEND="
 	sys-apps/util-linux
@@ -30,6 +33,9 @@
 	"${FILESDIR}"/${P}-fileio-overflow.patch # crbug.com/216504
 	"${FILESDIR}"/${P}-large-readahead.patch
 	"${FILESDIR}"/${P}-pack-file-and-path-prefix-filter-options.patch
+	"${FILESDIR}"/${P}-16.patch   # Downloaded from upstream
+	"${FILESDIR}"/${P}-no-debug-tracing.patch
+	"${FILESDIR}"/${P}-force-ssd-mode.patch
 )
 
 src_configure() {
@@ -43,4 +49,11 @@
 	# install init script
 	insinto /etc/init
 	doins "${FILESDIR}"/init/*.conf
+
+	# install executable into guest vendor image for ARCVM
+	if use arcvm; then
+		arc-build-constants-configure
+		exeinto "${ARC_VM_VENDOR_DIR}/bin"
+		doexe "${WORKDIR}/${P}/src/ureadahead"
+	fi
 }
diff --git a/sys-apps/usbguard/files/usbguard-daemon-seccomp-amd64.policy b/sys-apps/usbguard/files/usbguard-daemon-seccomp-amd64.policy
index b278e06..902d8a6 100644
--- a/sys-apps/usbguard/files/usbguard-daemon-seccomp-amd64.policy
+++ b/sys-apps/usbguard/files/usbguard-daemon-seccomp-amd64.policy
@@ -11,6 +11,7 @@
 mmap: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
 mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
 fstat: 1
+newfstatat: 1
 futex: 1
 poll: 1
 readlink: 1
@@ -24,6 +25,7 @@
 eventfd2: 1
 clone: 1
 getdents: 1
+getdents64: 1
 epoll_ctl: 1
 lseek: 1
 rt_sigaction: 1
@@ -72,4 +74,6 @@
 gettimeofday: 1
 open: 1
 rt_sigreturn: 1
+sched_getattr: 1
+sched_setattr: 1
 unlink: 1
diff --git a/sys-apps/usbguard/files/usbguard-daemon-seccomp-arm.policy b/sys-apps/usbguard/files/usbguard-daemon-seccomp-arm.policy
index 14e0dde..c414f56 100644
--- a/sys-apps/usbguard/files/usbguard-daemon-seccomp-arm.policy
+++ b/sys-apps/usbguard/files/usbguard-daemon-seccomp-arm.policy
@@ -9,12 +9,14 @@
 close: 1
 write: 1
 clock_gettime: 1
+clock_gettime64: 1
 mmap2: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
 mprotect: arg2 in ~PROT_EXEC || arg2 in ~PROT_WRITE
 fstat64: 1
 gettimeofday: 1
 poll: 1
 futex: 1
+futex_time64: 1
 readlink: 1
 getpid: 1
 send: 1
@@ -26,6 +28,7 @@
 eventfd2: 1
 clone: 1
 getdents: 1
+getdents64: 1
 _llseek: 1
 epoll_ctl: 1
 rt_sigaction: 1
@@ -52,6 +55,7 @@
 stat64: 1
 umask: 1
 clock_getres: 1
+clock_getres_time64: 1
 epoll_create1: 1
 epoll_wait: 1
 getuid32: 1
@@ -59,6 +63,7 @@
 listen: 1
 pipe: 1
 rt_sigtimedwait: 1
+rt_sigtimedwait_time64: 1
 shutdown: 1
 
 # Additional syscalls not covered by security.USBGuard
@@ -73,6 +78,9 @@
 prlimit64: arg2 == 0 && arg3 != 0
 recvfrom: 1
 rt_sigreturn: 1
+tee: 1
+sched_getattr: 1
+sched_setattr: 1
 sendto: 1
 setpgid: 1
 unlink: 1
diff --git a/sys-apps/usbguard/files/usbguard-daemon-seccomp-arm64.policy b/sys-apps/usbguard/files/usbguard-daemon-seccomp-arm64.policy
index af2588c..86fbb64 100644
--- a/sys-apps/usbguard/files/usbguard-daemon-seccomp-arm64.policy
+++ b/sys-apps/usbguard/files/usbguard-daemon-seccomp-arm64.policy
@@ -71,5 +71,7 @@
 gettid: 1
 gettimeofday: 1
 rt_sigreturn: 1
+sched_getattr: 1
+sched_setattr: 1
 setpgid: 1
 unlinkat: 1
diff --git a/sys-apps/usbguard/usbguard-20190808-r8.ebuild b/sys-apps/usbguard/usbguard-20190808-r10.ebuild
similarity index 100%
rename from sys-apps/usbguard/usbguard-20190808-r8.ebuild
rename to sys-apps/usbguard/usbguard-20190808-r10.ebuild
diff --git a/sys-apps/usbutils/Manifest b/sys-apps/usbutils/Manifest
deleted file mode 100644
index 267178b..0000000
--- a/sys-apps/usbutils/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST usbutils-007.tar.xz 418264 SHA256 7593a01724bbc0fd9fe48e62bc721ceb61c76654f1d7b231b3c65f6dfbbaefa4 SHA512 ee5c9ae4b39747139dbf2c0295d0556c2087002a99c1a1c6de9b87714c0ed37c277471794f0c53b15f4f9e4323527eb5d15d7e1197f73e04f2de6978d3d85987 WHIRLPOOL 4374ba416f2bd8678ebfed25e7d5f2fccc5e49abf80716b3b96915601e801ab07686905d5c45e9ae7e7bb40c16084e97a24afc9c35d0ca743e877eea320ab9af
diff --git a/sys-apps/usbutils/files/usbutils-006-stdint.patch b/sys-apps/usbutils/files/usbutils-006-stdint.patch
deleted file mode 100644
index 3aecbdf..0000000
--- a/sys-apps/usbutils/files/usbutils-006-stdint.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-https://sourceforge.net/p/digimend/bugs/41/
-
---- a/usbhid-dump/lib/iface.c
-+++ b/usbhid-dump/lib/iface.c
-@@ -30,6 +30,7 @@
- #include <assert.h>
- #include <stdlib.h>
- #include <stdio.h>
-+#include <stdint.h>
- #include <string.h>
- 
- bool
---- a/usbhid-dump/lib/iface_list.c
-+++ b/usbhid-dump/lib/iface_list.c
-@@ -30,6 +30,7 @@
- #include <assert.h>
- #include <stdlib.h>
- #include <stdio.h>
-+#include <stdint.h>
- 
- bool
- uhd_iface_list_valid(const uhd_iface *list)
---- a/usbhid-dump/src/usbhid-dump.c
-+++ b/usbhid-dump/src/usbhid-dump.c
-@@ -40,6 +40,7 @@
- #include <unistd.h>
- #include <getopt.h>
- #include <stdio.h>
-+#include <stdint.h>
- 
- /* Define LIBUSB_CALL for libusb <= 1.0.8 */
- #ifndef LIBUSB_CALL
diff --git a/sys-apps/usbutils/files/usbutils-007-Added-support-for-Platform-Device-Capability-descrip.patch b/sys-apps/usbutils/files/usbutils-007-Added-support-for-Platform-Device-Capability-descrip.patch
deleted file mode 100644
index ac41ba2..0000000
--- a/sys-apps/usbutils/files/usbutils-007-Added-support-for-Platform-Device-Capability-descrip.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-From 35d0596f28a30f945dafa65ca2103154231a683e Mon Sep 17 00:00:00 2001
-From: Torleiv Sundre <torleiv@kubicam.com>
-Date: Fri, 29 Apr 2016 15:36:56 +0200
-Subject: [PATCH 3/7] Added support for Platform Device Capability descriptor
-
-Signed-off by: Torleiv Sundre <torleiv@kubicam.com>
-
-(cherry picked from commit 8623cb5741e149e0f4087ea01b520902190e8b90)
----
- lsusb.c | 27 ++++++++++++++++++++++++++-
- 1 file changed, 26 insertions(+), 1 deletion(-)
-
-diff --git a/lsusb.c b/lsusb.c
-index b7334d7..98808e6 100644
---- a/lsusb.c
-+++ b/lsusb.c
-@@ -69,6 +69,7 @@
- #define USB_DC_20_EXTENSION		0x02
- #define USB_DC_SUPERSPEED		0x03
- #define USB_DC_CONTAINER_ID		0x04
-+#define USB_DC_PLATFORM 		0x05
- #define USB_DC_SUPERSPEEDPLUS		0x0a
- #define USB_DC_BILLBOARD		0x0d
- 
-@@ -677,7 +678,7 @@ static void dump_pipe_desc(const unsigned char *buf)
- 		[0xE0 ... 0xEF] = "Vendor specific",
- 		[0xF0 ... 0xFF] = "Reserved",
- 	};
--	
-+
- 	if (buf[0] == 4 && buf[1] == 0x24) {
- 		printf("        %s (0x%02x)\n", pipe_name[buf[2]], buf[2]);
- 	} else {
-@@ -3775,6 +3776,27 @@ static void dump_container_id_device_capability_desc(unsigned char *buf)
- 			get_guid(&buf[4]));
- }
- 
-+static void dump_platform_device_capability_desc(unsigned char *buf)
-+{
-+	unsigned char desc_len = buf[0];
-+	unsigned char cap_data_len = desc_len - 20;
-+	if (desc_len < 20) {
-+		fprintf(stderr, "  Bad Platform Device Capability descriptor.\n");
-+		return;
-+	}
-+	printf("  Platform Device Capability:\n"
-+			"    bLength             %5u\n"
-+			"    bDescriptorType     %5u\n"
-+			"    bDevCapabilityType  %5u\n"
-+			"    bReserved           %5u\n",
-+			buf[0], buf[1], buf[2], buf[3]);
-+	printf("    PlatformCapabilityUUID    %s\n",
-+			get_guid(&buf[4]));
-+	for (unsigned char i = 0; i < cap_data_len; i++) {
-+		printf("    CapabilityData[%u]    0x%02x\n", i, buf[20 + i]);
-+	}
-+}
-+
- static void dump_billboard_device_capability_desc(libusb_device_handle *dev, unsigned char *buf)
- {
- 	char *url, *alt_mode_str;
-@@ -3930,6 +3952,9 @@ static void dump_bos_descriptor(libusb_device_handle *fd)
- 		case USB_DC_CONTAINER_ID:
- 			dump_container_id_device_capability_desc(buf);
- 			break;
-+		case USB_DC_PLATFORM:
-+			dump_platform_device_capability_desc(buf);
-+			break;
- 		case USB_DC_BILLBOARD:
- 			dump_billboard_device_capability_desc(fd, buf);
- 			break;
--- 
-2.12.2
-
diff --git a/sys-apps/usbutils/files/usbutils-007-Don-t-use-C99-ism.patch b/sys-apps/usbutils/files/usbutils-007-Don-t-use-C99-ism.patch
deleted file mode 100644
index fdaab4c..0000000
--- a/sys-apps/usbutils/files/usbutils-007-Don-t-use-C99-ism.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 020485dd172feb63b541907e69061c2a3aecf331 Mon Sep 17 00:00:00 2001
-From: Emmanuele Bassi <ebassi@gnome.org>
-Date: Fri, 29 Apr 2016 19:00:52 +0100
-Subject: [PATCH 4/7] Don't use C99-ism
-
-Declare the loop iterator before using it.
-
-Fixes #40
-
-Signed-off-by: Emmanuele Bassi <ebassi@gnome.org>
-(cherry picked from commit a0845301f7795162c849bd7d32a940e883aadbae)
----
- lsusb.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/lsusb.c b/lsusb.c
-index 98808e6..7055540 100644
---- a/lsusb.c
-+++ b/lsusb.c
-@@ -3780,6 +3780,7 @@ static void dump_platform_device_capability_desc(unsigned char *buf)
- {
- 	unsigned char desc_len = buf[0];
- 	unsigned char cap_data_len = desc_len - 20;
-+	unsigned char i;
- 	if (desc_len < 20) {
- 		fprintf(stderr, "  Bad Platform Device Capability descriptor.\n");
- 		return;
-@@ -3792,7 +3793,7 @@ static void dump_platform_device_capability_desc(unsigned char *buf)
- 			buf[0], buf[1], buf[2], buf[3]);
- 	printf("    PlatformCapabilityUUID    %s\n",
- 			get_guid(&buf[4]));
--	for (unsigned char i = 0; i < cap_data_len; i++) {
-+	for (i = 0; i < cap_data_len; i++) {
- 		printf("    CapabilityData[%u]    0x%02x\n", i, buf[20 + i]);
- 	}
- }
--- 
-2.12.2
-
diff --git a/sys-apps/usbutils/files/usbutils-007-decode-CDC-MBIM-extended-functional-descriptor.patch b/sys-apps/usbutils/files/usbutils-007-decode-CDC-MBIM-extended-functional-descriptor.patch
deleted file mode 100644
index 0bfa9c9..0000000
--- a/sys-apps/usbutils/files/usbutils-007-decode-CDC-MBIM-extended-functional-descriptor.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 12cbc3ea03992942ce6ea8f89c53b1a92504840d Mon Sep 17 00:00:00 2001
-From: Ben Chan <benchan@chromium.org>
-Date: Fri, 14 Feb 2014 23:47:03 -0800
-Subject: [PATCH] lsusb: decode CDC MBIM extended functional descriptor
-
-Signed-off-by: Ben Chan <benchan@chromium.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- lsusb.c | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/lsusb.c b/lsusb.c
-index fd49240..25d25dc 100644
---- a/lsusb.c
-+++ b/lsusb.c
-@@ -3219,6 +3219,19 @@ dump_comm_descriptor(libusb_device_handle *dev, const unsigned char *buf, char *
- 		if (buf[11] & 0x08)
- 			printf("%s    max datagram size\n", indent);
- 		break;
-+	case 0x1c:		/* MBIM extended functional desc */
-+		type = "MBIM Extended";
-+		if (buf[0] != 8)
-+			goto bad;
-+		printf("%sCDC MBIM Extended:\n"
-+		       "%s  bcdMBIMExtendedVersion          %2x.%02x\n"
-+		       "%s  bMaxOutstandingCommandMessages    %3d\n"
-+		       "%s  wMTU                            %5d\n",
-+		       indent,
-+		       indent, buf[4], buf[3],
-+		       indent, buf[5],
-+		       indent, buf[6] | (buf[7] << 8));
-+		break;
- 	default:
- 		/* FIXME there are about a dozen more descriptor types */
- 		printf("%sUNRECOGNIZED CDC: ", indent);
--- 
-2.11.0.390.gc69c2f50cf-goog
-
diff --git a/sys-apps/usbutils/files/usbutils-007-ignore-invalid-string-descriptors.patch b/sys-apps/usbutils/files/usbutils-007-ignore-invalid-string-descriptors.patch
deleted file mode 100644
index e510482..0000000
--- a/sys-apps/usbutils/files/usbutils-007-ignore-invalid-string-descriptors.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 8e4ade500d01f59c21baf8e07d50f1c465df4328 Mon Sep 17 00:00:00 2001
-From: Peter Wu <lekensteyn@gmail.com>
-Date: Mon, 4 Nov 2013 19:08:49 +0100
-Subject: [PATCH] Ignore invalid string descriptors
-
-This Ralink Wi-Fi adapter reports bogus values for some string
-descriptors (iSerial and iInterface). As the current
-libusb_get_string_descriptor function from 1.0.17 does not validate the
-length or type and returns 254 even if the descriptor says 0, explicitly
-check the fields before proceeding.
-
-Fixes the following crash:
-
-    lsusb: gconv.c:74: __gconv: Assertion `outbuf != ((void *)0) && *outbuf != ((void *)0)' failed.
-
-libusbx bug: https://github.com/libusbx/libusbx/pull/156
-
-Signed-off-by: Peter Wu <lekensteyn@gmail.com>
----
- usbmisc.c | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/usbmisc.c b/usbmisc.c
-index d5e7a31..f3577ea 100644
---- a/usbmisc.c
-+++ b/usbmisc.c
-@@ -229,6 +229,9 @@ char *get_dev_string(libusb_device_handle *dev, u_int8_t id)
- 	                                   sizeof unicode_buf);
- 	if (ret < 2) return strdup("(error)");
- 
-+	if (unicode_buf[0] < 2 || unicode_buf[1] != LIBUSB_DT_STRING)
-+		return strdup("(error)");
-+
- 	buf = usb_string_to_native(unicode_buf + 2,
- 	                           ((unsigned char) unicode_buf[0] - 2) / 2);
- 
--- 
-2.2.0.rc0.207.ga3a616c
-
diff --git a/sys-apps/usbutils/files/usbutils-007-lsusb-Add-support-for-the-USB-3.1-SuperSpeedPlus-dev.patch b/sys-apps/usbutils/files/usbutils-007-lsusb-Add-support-for-the-USB-3.1-SuperSpeedPlus-dev.patch
deleted file mode 100644
index f51887d..0000000
--- a/sys-apps/usbutils/files/usbutils-007-lsusb-Add-support-for-the-USB-3.1-SuperSpeedPlus-dev.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-From 99f5d4b260f4e58749780acea8c176717db3d87c Mon Sep 17 00:00:00 2001
-From: Mathias Nyman <mathias.nyman@linux.intel.com>
-Date: Mon, 14 Sep 2015 16:20:07 +0300
-Subject: [PATCH 1/7] lsusb: Add support for the USB 3.1 SuperSpeedPlus device
- capability desc
-
-USB 3.1 devices have a SuperSpeedPlus USB device capability descriptor
-as part of the BOS descritptor. It if exists then show this content
-togeter with the rest of the BOS descriptor.
-
-A sample output looks like:
-
-SuperSpeedPlus USB Device Capability:
-    bLength                20
-    bDescriptorType        16
-    bDevCapabilityType     10
-    bmAttributes         0x00000001
-      Sublink Speed Attribute count 1
-      Sublink Speed ID count 0
-    wFunctionalitySupport   0x1100
-    bmSublinkSpeedAttr[0]   0x000a4030
-      Speed attr ID: 0 10Gb/s Symmetric RX SuperSpeedPlus
-    bmSublinkSpeedAttr[1]   0x000a40b0
-      Speed attr ID: 0 10Gb/s Symmetric TX SuperSpeedPlus
-
-Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
-(cherry picked from commit 21d0d7a58947a5d9b48682711a45b87aa85c33a8)
----
- lsusb.c | 40 ++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 40 insertions(+)
-
-diff --git a/lsusb.c b/lsusb.c
-index 620eccc..1eadcf8 100644
---- a/lsusb.c
-+++ b/lsusb.c
-@@ -69,6 +69,7 @@
- #define USB_DC_20_EXTENSION		0x02
- #define USB_DC_SUPERSPEED		0x03
- #define USB_DC_CONTAINER_ID		0x04
-+#define USB_DC_SUPERSPEEDPLUS		0x0a
- 
- /* Conventional codes for class-specific descriptors.  The convention is
-  * defined in the USB "Common Class" Spec (3.11).  Individual class specs
-@@ -3695,6 +3696,42 @@ static void dump_ss_device_capability_desc(unsigned char *buf)
- 	printf("    bU2DevExitLat    %8u micro seconds\n", buf[8] + (buf[9] << 8));
- }
- 
-+static void dump_ssp_device_capability_desc(unsigned char *buf)
-+{
-+	int i;
-+	unsigned int bm_attr, ss_attr;
-+	char bitrate_prefix[] = " KMG";
-+
-+	if (buf[0] < 12) {
-+		printf("  Bad SuperSpeedPlus USB Device Capability descriptor.\n");
-+		return;
-+	}
-+
-+	bm_attr = convert_le_u32(buf + 4);
-+	printf("  SuperSpeedPlus USB Device Capability:\n"
-+			"    bLength             %5u\n"
-+			"    bDescriptorType     %5u\n"
-+			"    bDevCapabilityType  %5u\n"
-+			"    bmAttributes         0x%08x\n",
-+			buf[0], buf[1], buf[2], bm_attr);
-+
-+	printf("      Sublink Speed Attribute count %u\n", buf[4] & 0x1f);
-+	printf("      Sublink Speed ID count %u\n", (bm_attr >> 5) & 0xf);
-+	printf("    wFunctionalitySupport   0x%02x%02x\n", buf[9], buf[8]);
-+
-+	for (i = 0; i <= (buf[4] & 0x1f); i++) {
-+		ss_attr = convert_le_u32(buf + 12 + (i * 4));
-+		printf("    bmSublinkSpeedAttr[%u]   0x%08x\n", i, ss_attr);
-+		printf("      Speed Attribute ID: %u %u%cb/s %s %s SuperSpeed%s\n",
-+		       ss_attr & 0x0f,
-+		       ss_attr >> 16,
-+		       (bitrate_prefix[((ss_attr >> 4) & 0x3)]),
-+		       (ss_attr & 0x40)? "Asymmetric" : "Symmetric",
-+		       (ss_attr & 0x80)? "TX" : "RX",
-+		       (ss_attr & 0x4000)? "Plus": "" );
-+	}
-+}
-+
- static void dump_container_id_device_capability_desc(unsigned char *buf)
- {
- 	if (buf[0] < 20) {
-@@ -3782,6 +3819,9 @@ static void dump_bos_descriptor(libusb_device_handle *fd)
- 		case USB_DC_SUPERSPEED:
- 			dump_ss_device_capability_desc(buf);
- 			break;
-+		case USB_DC_SUPERSPEEDPLUS:
-+			dump_ssp_device_capability_desc(buf);
-+			break;
- 		case USB_DC_CONTAINER_ID:
- 			dump_container_id_device_capability_desc(buf);
- 			break;
--- 
-2.12.2
-
diff --git a/sys-apps/usbutils/files/usbutils-007-lsusb-Added-support-for-Billboard-Capability-descrip.patch b/sys-apps/usbutils/files/usbutils-007-lsusb-Added-support-for-Billboard-Capability-descrip.patch
deleted file mode 100644
index ec316f2..0000000
--- a/sys-apps/usbutils/files/usbutils-007-lsusb-Added-support-for-Billboard-Capability-descrip.patch
+++ /dev/null
@@ -1,207 +0,0 @@
-From f4424c228bbed295f805d1baa3b4a055a08af304 Mon Sep 17 00:00:00 2001
-From: Muthu M <muthu.lnx@gmail.com>
-Date: Wed, 14 Oct 2015 01:16:37 +0530
-Subject: [PATCH 2/7] lsusb: Added support for Billboard Capability descriptor
-
-Added support for Billboard Capability descriptor as per Universal
-Serial Bus Device Class Definition for Billboard Devices Revision 1.1
-
-Signed-off-by: Muthu M <muthu.lnx@gmail.com>
-Reviewed-by: Felipe Balbi <balbi@ti.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-(cherry picked from commit f69bf4f5d271e199dfcba7e5c765d810c536b117)
----
- lsusb.c | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
- 1 file changed, 111 insertions(+), 3 deletions(-)
-
-diff --git a/lsusb.c b/lsusb.c
-index 1eadcf8..b7334d7 100644
---- a/lsusb.c
-+++ b/lsusb.c
-@@ -70,6 +70,7 @@
- #define USB_DC_SUPERSPEED		0x03
- #define USB_DC_CONTAINER_ID		0x04
- #define USB_DC_SUPERSPEEDPLUS		0x0a
-+#define USB_DC_BILLBOARD		0x0d
- 
- /* Conventional codes for class-specific descriptors.  The convention is
-  * defined in the USB "Common Class" Spec (3.11).  Individual class specs
-@@ -108,6 +109,8 @@
- 
- #define	HUB_STATUS_BYTELEN	3	/* max 3 bytes status = hub + 23 ports */
- 
-+#define BILLBOARD_MAX_NUM_ALT_MODE	(0x34)
-+
- static const char procbususb[] = "/proc/bus/usb";
- static unsigned int verblevel = VERBLEVEL_DEFAULT;
- static int do_report_desc = 1;
-@@ -119,6 +122,24 @@ static const char * const encryption_type[] = {
- 	"RESERVED"
- };
- 
-+static const char * const vconn_power[] = {
-+	"1W",
-+	"1.5W",
-+	"2W",
-+	"3W",
-+	"4W",
-+	"5W",
-+	"6W",
-+	"reserved"
-+};
-+
-+static const char * const alt_mode_state[] = {
-+	"Unspecified Error",
-+	"Alternate Mode configuration not attempted",
-+	"Alternate Mode configuration attempted but unsuccessful",
-+	"Alternate Mode configuration successful"
-+};
-+
- static void dump_interface(libusb_device_handle *dev, const struct libusb_interface *interface);
- static void dump_endpoint(libusb_device_handle *dev, const struct libusb_interface_descriptor *interface, const struct libusb_endpoint_descriptor *endpoint);
- static void dump_audiocontrol_interface(libusb_device_handle *dev, const unsigned char *buf, int protocol);
-@@ -133,6 +154,7 @@ static void dump_audiostreaming_endpoint(const unsigned char *buf, int protocol)
- static void dump_midistreaming_endpoint(const unsigned char *buf);
- static void dump_hub(const char *prefix, const unsigned char *p, int tt_type);
- static void dump_ccid_device(const unsigned char *buf);
-+static void dump_billboard_device_capability_desc(libusb_device_handle *dev, unsigned char *buf);
- 
- /* ---------------------------------------------------------------------- */
- 
-@@ -141,6 +163,11 @@ static unsigned int convert_le_u32 (const unsigned char *buf)
- 	return buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24);
- }
- 
-+static unsigned int convert_le_u16 (const unsigned char *buf)
-+{
-+	return buf[0] | (buf[1] << 8);
-+}
-+
- /* ---------------------------------------------------------------------- */
- 
- /* workaround libusb API goofs:  "byte" should never be sign extended;
-@@ -3647,7 +3674,7 @@ static void dump_usb2_device_capability_desc(unsigned char *buf)
- static void dump_ss_device_capability_desc(unsigned char *buf)
- {
- 	if (buf[0] < 10) {
--		printf("  Bad SuperSpeed USB Device Capability descriptor.\n");
-+		fprintf(stderr, "  Bad SuperSpeed USB Device Capability descriptor.\n");
- 		return;
- 	}
- 	printf("  SuperSpeed USB Device Capability:\n"
-@@ -3703,7 +3730,7 @@ static void dump_ssp_device_capability_desc(unsigned char *buf)
- 	char bitrate_prefix[] = " KMG";
- 
- 	if (buf[0] < 12) {
--		printf("  Bad SuperSpeedPlus USB Device Capability descriptor.\n");
-+		fprintf(stderr, "  Bad SuperSpeedPlus USB Device Capability descriptor.\n");
- 		return;
- 	}
- 
-@@ -3735,7 +3762,7 @@ static void dump_ssp_device_capability_desc(unsigned char *buf)
- static void dump_container_id_device_capability_desc(unsigned char *buf)
- {
- 	if (buf[0] < 20) {
--		printf("  Bad Container ID Device Capability descriptor.\n");
-+		fprintf(stderr, "  Bad Container ID Device Capability descriptor.\n");
- 		return;
- 	}
- 	printf("  Container ID Device Capability:\n"
-@@ -3748,6 +3775,84 @@ static void dump_container_id_device_capability_desc(unsigned char *buf)
- 			get_guid(&buf[4]));
- }
- 
-+static void dump_billboard_device_capability_desc(libusb_device_handle *dev, unsigned char *buf)
-+{
-+	char *url, *alt_mode_str;
-+	int w_vconn_power, alt_mode, i, svid, state;
-+	const char *vconn;
-+	unsigned char *bmConfigured;
-+
-+	if (buf[0] < 48) {
-+		fprintf(stderr, "  Bad Billboard Capability descriptor.\n");
-+		return;
-+	}
-+
-+	if (buf[4] > BILLBOARD_MAX_NUM_ALT_MODE) {
-+		fprintf(stderr, "  Invalid value for bNumberOfAlternateModes.\n");
-+		return;
-+	}
-+
-+	if (buf[0] < (44 + buf[4] * 4)) {
-+		fprintf(stderr, "  bLength does not match with bNumberOfAlternateModes.\n");
-+		return;
-+	}
-+
-+	url = get_dev_string(dev, buf[3]);
-+	w_vconn_power = convert_le_u16(buf+6);
-+	if (w_vconn_power & (1 << 15)) {
-+		vconn = "VCONN power not required";
-+	} else if (w_vconn_power < 7) {
-+		vconn = vconn_power[w_vconn_power & 0x7];
-+	} else {
-+		vconn = "reserved";
-+	}
-+	printf("  Billboard Capability:\n"
-+			"    bLength                 %5u\n"
-+			"    bDescriptorType         %5u\n"
-+			"    bDevCapabilityType      %5u\n"
-+			"    iAddtionalInfoURL       %5u %s\n"
-+			"    bNumberOfAlternateModes %5u\n"
-+			"    bPreferredAlternateMode %5u\n"
-+			"    VCONN Power             %5u %s\n",
-+			buf[0], buf[1], buf[2],
-+			buf[3], url,
-+			buf[4], buf[5],
-+			w_vconn_power, vconn);
-+
-+	bmConfigured = &buf[8];
-+
-+	printf("    bmConfigured               ");
-+	dump_bytes(bmConfigured, 32);
-+
-+	printf(
-+			"    bcdVersion              %2x.%02x\n"
-+			"    bAdditionalFailureInfo  %5u\n"
-+			"    bReserved               %5u\n",
-+			(buf[41] == 0) ? 1 : buf[41], buf[40],
-+			buf[42], buf[43]);
-+
-+	printf("    Alternate Modes supported by Device Container:\n");
-+	i = 44; /* Alternate mode 0 starts at index 44 */
-+	for (alt_mode = 0; alt_mode < buf[4]; alt_mode++) {
-+		svid = convert_le_u16(buf+i);
-+		alt_mode_str = get_dev_string(dev, buf[i+3]);
-+		state = ((bmConfigured[alt_mode >> 2]) >> ((alt_mode & 0x3) << 1)) & 0x3;
-+		printf(
-+			"    Alternate Mode %d : %s\n"
-+			"      wSVID[%d]                    0x%04X\n"
-+			"      bAlternateMode[%d]       %5u\n"
-+			"      iAlternateModeString[%d] %5u %s\n",
-+			alt_mode, alt_mode_state[state],
-+			alt_mode, svid,
-+			alt_mode, buf[i+2],
-+			alt_mode, buf[i+3], alt_mode_str);
-+		free(alt_mode_str);
-+		i += 4;
-+	}
-+
-+	free (url);
-+}
-+
- static void dump_bos_descriptor(libusb_device_handle *fd)
- {
- 	/* Total for all known BOS descriptors is 43 bytes:
-@@ -3825,6 +3930,9 @@ static void dump_bos_descriptor(libusb_device_handle *fd)
- 		case USB_DC_CONTAINER_ID:
- 			dump_container_id_device_capability_desc(buf);
- 			break;
-+		case USB_DC_BILLBOARD:
-+			dump_billboard_device_capability_desc(fd, buf);
-+			break;
- 		default:
- 			printf("  ** UNRECOGNIZED: ");
- 			dump_bytes(buf, buf[0]);
--- 
-2.12.2
-
diff --git a/sys-apps/usbutils/files/usbutils-007-lsusb-Allocate-the-BOS-descriptor-buffer-dynamically.patch b/sys-apps/usbutils/files/usbutils-007-lsusb-Allocate-the-BOS-descriptor-buffer-dynamically.patch
deleted file mode 100644
index a9ef7f2..0000000
--- a/sys-apps/usbutils/files/usbutils-007-lsusb-Allocate-the-BOS-descriptor-buffer-dynamically.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From 6374f26c8953a55ef0012cf8b6ca7219d9eb4255 Mon Sep 17 00:00:00 2001
-From: Mathias Nyman <mathias.nyman@linux.intel.com>
-Date: Mon, 14 Sep 2015 16:11:49 +0300
-Subject: [PATCH] lsusb: Allocate the BOS descriptor buffer dynamically
-
-We can't use a static size for the BOS descritpor anymore as the
-SuperSpeedPlus USB device capability descriptor of USB 3.1 devices
-varies in size depending on how many Sublink Speed Attributes it supports.
-
-Total size is reported in the first 5 bytes of the standard BOS descriptor
-
-Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
----
- lsusb.c | 35 +++++++++++++++++++----------------
- 1 file changed, 19 insertions(+), 16 deletions(-)
-
-diff --git a/lsusb.c b/lsusb.c
-index a6ba96d..92415c7 100644
---- a/lsusb.c
-+++ b/lsusb.c
-@@ -3736,11 +3736,13 @@ static void dump_container_id_device_capability_desc(unsigned char *buf)
- 
- static void dump_bos_descriptor(libusb_device_handle *fd)
- {
--	/* Total for all known BOS descriptors is 43 bytes:
--	 * 6 bytes for Wireless USB, 7 bytes for USB 2.0 extension,
--	 * 10 bytes for SuperSpeed, 20 bytes for Container ID.
-+	/* Total length of BOS descriptors varies.
-+	 * Read first static 5 bytes which include the total length before
-+	 * allocating and readig the full BOS
- 	 */
--	unsigned char bos_desc[43];
-+
-+	unsigned char bos_desc_static[5];
-+	unsigned char *bos_desc;
- 	unsigned int bos_desc_size;
- 	int size, ret;
- 	unsigned char *buf;
-@@ -3750,32 +3752,31 @@ static void dump_bos_descriptor(libusb_device_handle *fd)
- 			LIBUSB_ENDPOINT_IN | LIBUSB_RECIPIENT_DEVICE,
- 			LIBUSB_REQUEST_GET_DESCRIPTOR,
- 			USB_DT_BOS << 8, 0,
--			bos_desc, 5, CTRL_TIMEOUT);
-+			bos_desc_static, 5, CTRL_TIMEOUT);
- 	if (ret <= 0)
- 		return;
--	else if (bos_desc[0] != 5 || bos_desc[1] != USB_DT_BOS)
-+	else if (bos_desc_static[0] != 5 || bos_desc_static[1] != USB_DT_BOS)
- 		return;
- 
--	bos_desc_size = bos_desc[2] + (bos_desc[3] << 8);
-+	bos_desc_size = bos_desc_static[2] + (bos_desc_static[3] << 8);
- 	printf("Binary Object Store Descriptor:\n"
- 	       "  bLength             %5u\n"
- 	       "  bDescriptorType     %5u\n"
- 	       "  wTotalLength        %5u\n"
- 	       "  bNumDeviceCaps      %5u\n",
--	       bos_desc[0], bos_desc[1],
--	       bos_desc_size, bos_desc[4]);
-+	       bos_desc_static[0], bos_desc_static[1],
-+	       bos_desc_size, bos_desc_static[4]);
- 
- 	if (bos_desc_size <= 5) {
--		if (bos_desc[4] > 0)
-+		if (bos_desc_static[4] > 0)
- 			fprintf(stderr, "Couldn't get "
- 					"device capability descriptors\n");
- 		return;
- 	}
--	if (bos_desc_size > sizeof bos_desc) {
--		fprintf(stderr, "FIXME: alloc bigger buffer for "
--				"device capability descriptors\n");
-+	bos_desc = malloc(bos_desc_size);
-+	if (!bos_desc)
- 		return;
--	}
-+	memset(bos_desc, 0, bos_desc_size);
- 
- 	ret = usb_control_msg(fd,
- 			LIBUSB_ENDPOINT_IN | LIBUSB_RECIPIENT_DEVICE,
-@@ -3784,7 +3785,7 @@ static void dump_bos_descriptor(libusb_device_handle *fd)
- 			bos_desc, bos_desc_size, CTRL_TIMEOUT);
- 	if (ret < 0) {
- 		fprintf(stderr, "Couldn't get device capability descriptors\n");
--		return;
-+		goto out;
- 	}
- 
- 	size = bos_desc_size - 5;
-@@ -3793,7 +3794,7 @@ static void dump_bos_descriptor(libusb_device_handle *fd)
- 	while (size >= 3) {
- 		if (buf[0] < 3) {
- 			printf("buf[0] = %u\n", buf[0]);
--			return;
-+			goto out;
- 		}
- 		switch (buf[2]) {
- 		case USB_DC_WIRELESS_USB:
-@@ -3816,6 +3817,8 @@ static void dump_bos_descriptor(libusb_device_handle *fd)
- 		size -= buf[0];
- 		buf += buf[0];
- 	}
-+out:
-+	free(bos_desc);
- }
- 
- static void dumpdev(libusb_device *dev)
--- 
-2.17.1
-
diff --git a/sys-apps/usbutils/files/usbutils-007-lsusb-change-endianness-of-first-three-fields-when-p.patch b/sys-apps/usbutils/files/usbutils-007-lsusb-change-endianness-of-first-three-fields-when-p.patch
deleted file mode 100644
index fe6e37f..0000000
--- a/sys-apps/usbutils/files/usbutils-007-lsusb-change-endianness-of-first-three-fields-when-p.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 2aa26a367dcc37bead28213011b9f97cd6851246 Mon Sep 17 00:00:00 2001
-From: Torleiv Sundre <torleiv@kubicam.com>
-Date: Sat, 14 May 2016 17:07:37 +0200
-Subject: [PATCH 5/7] lsusb: change endianness of first three fields when
- printing UUID/GUIDs.
-
-This makes the output consistent with the format printed in the USB
-documentation.
-
-Signed-off-by: Torleiv Sundre <torleiv@kubicam.com>
-(cherry picked from commit cbac1faa06559c9d8c7de13edd8c8303e4ab036b)
----
- lsusb.c | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/lsusb.c b/lsusb.c
-index 7055540..7a9758e 100644
---- a/lsusb.c
-+++ b/lsusb.c
-@@ -240,9 +240,9 @@ static const char *get_guid(const unsigned char *buf)
- 			"-%02x%02x"
- 			"-%02x%02x"
- 			"-%02x%02x%02x%02x%02x%02x}",
--	       buf[0], buf[1], buf[2], buf[3],
--	       buf[4], buf[5],
--	       buf[6], buf[7],
-+	       buf[3], buf[2], buf[1], buf[0],
-+	       buf[5], buf[4],
-+	       buf[7], buf[6],
- 	       buf[8], buf[9],
- 	       buf[10], buf[11], buf[12], buf[13], buf[14], buf[15]);
- 	return guid;
--- 
-2.12.2
-
diff --git a/sys-apps/usbutils/files/usbutils-007-lsusb-print-WebUSB-platform-descriptor.patch b/sys-apps/usbutils/files/usbutils-007-lsusb-print-WebUSB-platform-descriptor.patch
deleted file mode 100644
index 4a21195..0000000
--- a/sys-apps/usbutils/files/usbutils-007-lsusb-print-WebUSB-platform-descriptor.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-From f7bf30f3589b2c4e171f30199e84118cde2cba88 Mon Sep 17 00:00:00 2001
-From: Vincent Palatin <vpalatin@chromium.org>
-Date: Tue, 12 Sep 2017 14:31:18 +0200
-Subject: [PATCH 7/7] lsusb: print WebUSB platform descriptor
-
-The WebUSB specification defines a specific Platform Descriptor in the
-Binary Object Store:
-https://wicg.github.io/webusb/#webusb-platform-capability-descriptor
-Dump the descriptor content and the landing URL it is pointing to.
-
-Signed-off-by: Vincent Palatin <vpalatin@chromium.org>
-(cherry picked from commit bcbaa18644a3084e500ba3406818fbfc1b167d52)
----
- lsusb.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----
- 1 file changed, 68 insertions(+), 4 deletions(-)
-
-diff --git a/lsusb.c b/lsusb.c
-index 2b638b4..824d3eb 100644
---- a/lsusb.c
-+++ b/lsusb.c
-@@ -112,6 +112,11 @@
- 
- #define BILLBOARD_MAX_NUM_ALT_MODE	(0x34)
- 
-+/* from WebUSB specification : https://wicg.github.io/webusb/ */
-+#define WEBUSB_GUID		"{3408b638-09a9-47a0-8bfd-a0768815b665}"
-+#define WEBUSB_GET_URL		0x02
-+#define USB_DT_WEBUSB_URL	0x03
-+
- static unsigned int verblevel = VERBLEVEL_DEFAULT;
- static int do_report_desc = 1;
- static const char * const encryption_type[] = {
-@@ -3775,11 +3780,57 @@ static void dump_container_id_device_capability_desc(unsigned char *buf)
- 			get_guid(&buf[4]));
- }
- 
--static void dump_platform_device_capability_desc(unsigned char *buf)
-+static char *get_webusb_url(libusb_device_handle *fd, u_int8_t vendor_req, u_int8_t id)
-+{
-+	unsigned char url_buf[255];
-+	char *scheme;
-+	char *url, *chr;
-+	unsigned char i;
-+	int ret;
-+
-+	ret = usb_control_msg(fd,
-+			LIBUSB_ENDPOINT_IN | LIBUSB_RECIPIENT_DEVICE | LIBUSB_REQUEST_TYPE_VENDOR,
-+			vendor_req, id, WEBUSB_GET_URL,
-+			url_buf, sizeof(url_buf), CTRL_TIMEOUT);
-+	if (ret <= 0)
-+		return strdup("");
-+	else if (url_buf[0] <= 3 || url_buf[1] != USB_DT_WEBUSB_URL || ret != url_buf[0])
-+		return strdup("");
-+
-+	switch (url_buf[2]) {
-+	case 0:
-+		scheme = "http://";
-+		break;
-+	case 1:
-+		scheme = "https://";
-+		break;
-+	case 255:
-+		scheme = "";
-+		break;
-+	default:
-+		fprintf(stderr, "Bad URL scheme.\n");
-+		return strdup("");
-+	}
-+	url = malloc(strlen(scheme) + (url_buf[0] - 3)  + 1);
-+	if (!url)
-+		return strdup("");
-+	strcpy(url, scheme);
-+	chr = url + strlen(scheme);
-+	for (i = 3; i < url_buf[0]; i++)
-+		/* crude UTF-8 to ASCII conversion */
-+		if (url_buf[i] < 0x80)
-+			*chr++ = url_buf[i];
-+	*chr = '\0';
-+
-+	return url;
-+}
-+
-+static void dump_platform_device_capability_desc(libusb_device_handle *fd, unsigned char *buf)
- {
- 	unsigned char desc_len = buf[0];
- 	unsigned char cap_data_len = desc_len - 20;
- 	unsigned char i;
-+	const char *guid;
- 	if (desc_len < 20) {
- 		fprintf(stderr, "  Bad Platform Device Capability descriptor.\n");
- 		return;
-@@ -3790,8 +3841,21 @@ static void dump_platform_device_capability_desc(unsigned char *buf)
- 			"    bDevCapabilityType  %5u\n"
- 			"    bReserved           %5u\n",
- 			buf[0], buf[1], buf[2], buf[3]);
--	printf("    PlatformCapabilityUUID    %s\n",
--			get_guid(&buf[4]));
-+	guid = get_guid(&buf[4]);
-+	printf("    PlatformCapabilityUUID    %s\n", guid);
-+
-+	if (!strcmp(WEBUSB_GUID , guid) && desc_len == 24) {
-+		/* WebUSB platform descriptor */
-+		char *url = get_webusb_url(fd, buf[22], buf[23]);
-+		printf("      WebUSB:\n"
-+				"        bcdVersion   %2x.%02x\n"
-+				"        bVendorCode  %5u\n"
-+				"        iLandingPage %5u %s\n",
-+				buf[21], buf[20], buf[22], buf[23], url);
-+		free(url);
-+		return;
-+	}
-+
- 	for (i = 0; i < cap_data_len; i++) {
- 		printf("    CapabilityData[%u]    0x%02x\n", i, buf[20 + i]);
- 	}
-@@ -3953,7 +4017,7 @@ static void dump_bos_descriptor(libusb_device_handle *fd)
- 			dump_container_id_device_capability_desc(buf);
- 			break;
- 		case USB_DC_PLATFORM:
--			dump_platform_device_capability_desc(buf);
-+			dump_platform_device_capability_desc(fd, buf);
- 			break;
- 		case USB_DC_BILLBOARD:
- 			dump_billboard_device_capability_desc(fd, buf);
--- 
-2.12.2
-
diff --git a/sys-apps/usbutils/files/usbutils-007-lsusb-remove-unused-variable-procbususb.patch b/sys-apps/usbutils/files/usbutils-007-lsusb-remove-unused-variable-procbususb.patch
deleted file mode 100644
index 7d4fec1..0000000
--- a/sys-apps/usbutils/files/usbutils-007-lsusb-remove-unused-variable-procbususb.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From be91f947e23f436c498d0576d58bb161439ce096 Mon Sep 17 00:00:00 2001
-From: Stephan Linz <linz@li-pro.net>
-Date: Tue, 29 Nov 2016 18:12:21 +0100
-Subject: [PATCH 6/7] lsusb: remove unused variable procbususb
-
-The corresponding source code was removed in 2012 with
-commit aeefb00cecdd1d5892ba038933aa39ebfb8c8c83
-"remove devtree logic".
-
-Signed-off-by: Stephan Linz <linz@li-pro.net>
-(cherry picked from commit 3abb0380a355f207c058f1251254e1068b2167da)
----
- lsusb.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/lsusb.c b/lsusb.c
-index 7a9758e..2b638b4 100644
---- a/lsusb.c
-+++ b/lsusb.c
-@@ -112,7 +112,6 @@
- 
- #define BILLBOARD_MAX_NUM_ALT_MODE	(0x34)
- 
--static const char procbususb[] = "/proc/bus/usb";
- static unsigned int verblevel = VERBLEVEL_DEFAULT;
- static int do_report_desc = 1;
- static const char * const encryption_type[] = {
--- 
-2.12.2
-
diff --git a/sys-apps/usbutils/metadata.xml b/sys-apps/usbutils/metadata.xml
deleted file mode 100644
index 96a2d58..0000000
--- a/sys-apps/usbutils/metadata.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>base-system</herd>
-</pkgmetadata>
diff --git a/sys-apps/usbutils/usbutils-007-r4.ebuild b/sys-apps/usbutils/usbutils-007-r4.ebuild
deleted file mode 120000
index 689f4a7..0000000
--- a/sys-apps/usbutils/usbutils-007-r4.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-usbutils-007.ebuild
\ No newline at end of file
diff --git a/sys-apps/usbutils/usbutils-007.ebuild b/sys-apps/usbutils/usbutils-007.ebuild
deleted file mode 100644
index e2a26f2..0000000
--- a/sys-apps/usbutils/usbutils-007.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/usbutils/usbutils-007.ebuild,v 1.11 2014/04/07 16:50:55 ssuominen Exp $
-
-EAPI=5
-
-PYTHON_COMPAT=( python2_7 )
-
-inherit base python-single-r1
-
-DESCRIPTION="USB enumeration utilities"
-HOMEPAGE="http://linux-usb.sourceforge.net/"
-SRC_URI="mirror://kernel/linux/utils/usb/${PN}/${P}.tar.xz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="python zlib"
-
-RDEPEND="virtual/libusb:1=
-	zlib? ( sys-libs/zlib:= )"
-DEPEND="${RDEPEND}
-	app-arch/xz-utils
-	virtual/pkgconfig"
-RDEPEND="${RDEPEND}
-	sys-apps/hwids
-	python? ( ${PYTHON_DEPS} )"
-PATCHES=(
-	"${FILESDIR}"/${PN}-006-stdint.patch
-	"${FILESDIR}"/${PN}-007-ignore-invalid-string-descriptors.patch
-	"${FILESDIR}"/${P}-decode-CDC-MBIM-extended-functional-descriptor.patch
-	"${FILESDIR}"/${PN}-007-lsusb-Add-support-for-the-USB-3.1-SuperSpeedPlus-dev.patch
-	"${FILESDIR}"/${PN}-007-lsusb-Added-support-for-Billboard-Capability-descrip.patch
-	"${FILESDIR}"/${PN}-007-Added-support-for-Platform-Device-Capability-descrip.patch
-	"${FILESDIR}"/${PN}-007-Don-t-use-C99-ism.patch
-	"${FILESDIR}"/${PN}-007-lsusb-change-endianness-of-first-three-fields-when-p.patch
-	"${FILESDIR}"/${PN}-007-lsusb-remove-unused-variable-procbususb.patch
-	"${FILESDIR}"/${PN}-007-lsusb-print-WebUSB-platform-descriptor.patch
-	"${FILESDIR}"/${PN}-007-lsusb-Allocate-the-BOS-descriptor-buffer-dynamically.patch
-)
-
-REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
-
-pkg_setup() {
-	use python && python-single-r1_pkg_setup
-}
-
-src_prepare() {
-	base_src_prepare
-	sed -i -e '/^usbids/s:/usr/share:/usr/share/misc:' lsusb.py || die
-	use python && python_fix_shebang lsusb.py
-}
-
-src_configure() {
-	econf \
-		--datarootdir="${EPREFIX}/usr/share" \
-		--datadir="${EPREFIX}/usr/share/misc" \
-		--disable-usbids \
-		$(use_enable zlib)
-}
-
-src_install() {
-	default
-	newdoc usbhid-dump/NEWS NEWS.usbhid-dump
-
-	use python || rm -f "${ED}"/usr/bin/lsusb.py
-}
diff --git a/sys-apps/util-linux/Manifest b/sys-apps/util-linux/Manifest
index a35e69d..6a743de 100644
--- a/sys-apps/util-linux/Manifest
+++ b/sys-apps/util-linux/Manifest
@@ -1 +1 @@
-DIST util-linux-2.32.tar.xz 4550128 SHA256 6c7397abc764e32e8159c2e96042874a190303e77adceb4ac5bd502a272a4734 SHA512 320c8d364f014aba16483dd26564d7cb47804337567c3e9c2dc495f3865f524e7480d3fec7ef5a05b6e99763b0278da70fffe6d2b88f3f1a832ada5932556482 WHIRLPOOL 2b4b8211f15639c52eb47cc3877fac1fb21cc4fe78e0f42196adfef5e757eae947ce58f5bab40e76c1005ea2050c1b4a41d38d9f91bed00cc9d861bfb1e1214c
+DIST util-linux-2.36.2.tar.xz 5348032 BLAKE2B 17e49515f8d0430f3ed26b80bf1d6e811d847141020d0dae1340dc92887549b7b711f3db6e3913120871fc912435def73586a7aef09d8d9cc6ff7ca331b2770f SHA512 6ab141f44ca4cb6b600081f10eae17e15d23abd122a37eb3ac6c845513a6a4396dc9dcff30b3032de80116ddde50e27dfbc86f92708c1051f84f0c919194664b
diff --git a/sys-apps/util-linux/files/0001-lib-loopdev-fix-is_loopdev-to-be-usable-with-partiti.patch b/sys-apps/util-linux/files/0001-lib-loopdev-fix-is_loopdev-to-be-usable-with-partiti.patch
new file mode 100644
index 0000000..f3d848f
--- /dev/null
+++ b/sys-apps/util-linux/files/0001-lib-loopdev-fix-is_loopdev-to-be-usable-with-partiti.patch
@@ -0,0 +1,58 @@
+From d4423cce9b9001c9de7ebc6f64f6cc2bb854944c Mon Sep 17 00:00:00 2001
+From: Karel Zak <kzak@redhat.com>
+Date: Tue, 20 Apr 2021 13:20:12 +0200
+Subject: [PATCH] lib/loopdev: fix is_loopdev() to be usable with partitions
+
+The current implementation of the function does not care if the device
+is whole-disk device or partition, all is loopdev. This is regression
+as the original is_loopdev() version was based on whole-disk devices
+major numbers only.
+
+Fixes: https://github.com/karelzak/util-linux/issues/1202
+Signed-off-by: Karel Zak <kzak@redhat.com>
+---
+
+Only take the lib/ part, not the Makefile part
+
+ lib/loopdev.c     | 21 ++++++++++++++++++++-
+ 2 files changed, 28 insertions(+), 2 deletions(-)
+
+diff --git a/lib/loopdev.c b/lib/loopdev.c
+index b946acf31..1eef15d89 100644
+--- a/lib/loopdev.c
++++ b/lib/loopdev.c
+@@ -641,7 +641,7 @@ int is_loopdev(const char *device)
+ 		rc = 0;
+ 	else if (major(st.st_rdev) == LOOPDEV_MAJOR)
+ 		rc = 1;
+-	else {
++	else if (sysfs_devno_is_wholedisk(st.st_rdev)) {
+ 		/* It's possible that kernel creates a device with a different
+ 		 * major number ... check by /sys it's really loop device.
+ 		 */
+@@ -1881,3 +1881,22 @@ int loopdev_count_by_backing_file(const char *filename, char **loopdev)
+ 	return count;
+ }
+ 
++#ifdef TEST_PROGRAM_LOOPDEV
++int main(int argc, char *argv[])
++{
++	if (argc < 2)
++		goto usage;
++
++	if (strcmp(argv[1], "--is-loopdev") == 0 && argc == 3)
++		printf("%s: %s\n", argv[2], is_loopdev(argv[2]) ? "OK" : "FAIL");
++	else
++		goto usage;
++
++	return EXIT_SUCCESS;
++usage:
++	fprintf(stderr, "usage: %1$s --is-loopdev <dev>\n",
++			program_invocation_short_name);
++	return EXIT_FAILURE;
++}
++#endif
++
+-- 
+2.31.0
+
diff --git a/sys-apps/util-linux/files/util-linux-2.32-add-missing-lintl.patch b/sys-apps/util-linux/files/util-linux-2.32-add-missing-lintl.patch
deleted file mode 100644
index 8cca093..0000000
--- a/sys-apps/util-linux/files/util-linux-2.32-add-missing-lintl.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From 3188ea9a9292604e537f06f11adddf474fc9e52d Mon Sep 17 00:00:00 2001
-From: Karel Zak <kzak@redhat.com>
-Date: Mon, 9 Apr 2018 12:11:36 +0200
-Subject: [PATCH] build: Add missing -lintl linkage to lib{smartcols,uuid}
-
-Addresses: https://github.com/karelzak/util-linux/pull/615
-Signed-off-by: Karel Zak <kzak@redhat.com>
----
- libsmartcols/src/Makemodule.am | 2 +-
- libuuid/src/Makemodule.am      | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libsmartcols/src/Makemodule.am b/libsmartcols/src/Makemodule.am
-index 664aca30b..665b2aa7f 100644
---- a/libsmartcols/src/Makemodule.am
-+++ b/libsmartcols/src/Makemodule.am
-@@ -19,7 +19,7 @@ libsmartcols_la_SOURCES= \
- 	libsmartcols/src/version.c \
- 	libsmartcols/src/init.c
- 
--libsmartcols_la_LIBADD = libcommon.la
-+libsmartcols_la_LIBADD = $(LDADD) libcommon.la
- 
- libsmartcols_la_CFLAGS = \
- 	$(AM_CFLAGS) \
-diff --git a/libuuid/src/Makemodule.am b/libuuid/src/Makemodule.am
-index 5122622a5..e58fa261c 100644
---- a/libuuid/src/Makemodule.am
-+++ b/libuuid/src/Makemodule.am
-@@ -31,7 +31,7 @@ libuuid_la_SOURCES = \
- EXTRA_libuuid_la_DEPENDENCIES = \
- 	libuuid/src/libuuid.sym
- 
--libuuid_la_LIBADD       = $(SOCKET_LIBS)
-+libuuid_la_LIBADD       = $(LDADD) $(SOCKET_LIBS)
- 
- libuuid_la_CFLAGS = \
- 	$(AM_CFLAGS) \
diff --git a/sys-apps/util-linux/files/util-linux-2.32-nosymfollow.patch b/sys-apps/util-linux/files/util-linux-2.32-nosymfollow.patch
deleted file mode 100644
index 843994d..0000000
--- a/sys-apps/util-linux/files/util-linux-2.32-nosymfollow.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-Support the MS_NOSYMFOLLOW mount flag.  Added to Chrome OS in 5.4 and sent
-upstream as:
-
-https://lore.kernel.org/linux-fsdevel/20200304173446.122990-1-zwisler@google.com/
-
-See b/152074038 for background.
-
-diff --git a/libmount/src/context_mount.c b/libmount/src/context_mount.c
-index 088d1328e..5cce46556 100644
---- a/libmount/src/context_mount.c
-+++ b/libmount/src/context_mount.c
-@@ -422,6 +422,8 @@ static int generate_helper_optstr(struct libmnt_context *cxt, char **optstr)
- 			mnt_optstr_append_option(optstr, "suid", NULL);
- 		if (!(cxt->mountflags & MS_NODEV))
- 			mnt_optstr_append_option(optstr, "dev", NULL);
-+		if (!(cxt->mountflags & MS_NOSYMFOLLOW))
-+			mnt_optstr_append_option(optstr, "symfollow", NULL);
- 	}
- 
- 
-diff --git a/libmount/src/libmount.h.in b/libmount/src/libmount.h.in
-index 321c0540b..e6710ae01 100644
---- a/libmount/src/libmount.h.in
-+++ b/libmount/src/libmount.h.in
-@@ -941,6 +941,9 @@ extern int mnt_context_set_syscall_status(struct libmnt_context *cxt, int status
- #ifndef MS_DIRSYNC
- #define MS_DIRSYNC	128	/* Directory modifications are synchronous */
- #endif
-+#ifndef MS_NOSYMFOLLOW
-+#define MS_NOSYMFOLLOW	256	/* Don't follow symlinks */
-+#endif
- #ifndef MS_NOATIME
- #define MS_NOATIME	0x400	/* 1024: Do not update access times. */
- #endif
-diff --git a/libmount/src/optmap.c b/libmount/src/optmap.c
-index abd81bc8e..731771327 100644
---- a/libmount/src/optmap.c
-+++ b/libmount/src/optmap.c
-@@ -131,6 +131,10 @@ static const struct libmnt_optmap linux_flags_map[] =
-    { "rslave",      MS_SLAVE | MS_REC,      MNT_NOHLPS | MNT_NOMTAB },
-    { "shared",      MS_SHARED,              MNT_NOHLPS | MNT_NOMTAB }, /* Shared */
-    { "rshared",     MS_SHARED | MS_REC,     MNT_NOHLPS | MNT_NOMTAB },
-+#endif
-+#ifdef MS_NOSYMFOLLOW
-+   { "symfollow", MS_NOSYMFOLLOW, MNT_INVERT }, /* Don't follow symlinks */
-+   { "nosymfollow", MS_NOSYMFOLLOW },
- #endif
-    { NULL, 0, 0 }
- };
diff --git a/sys-apps/util-linux/files/util-linux-2.32_rc2-umount_completion.patch b/sys-apps/util-linux/files/util-linux-2.32_rc2-umount_completion.patch
deleted file mode 100644
index 1317c56..0000000
--- a/sys-apps/util-linux/files/util-linux-2.32_rc2-umount_completion.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 75f03badd7ed9f1dd951863d75e756883d3acc55 Mon Sep 17 00:00:00 2001
-From: Karel Zak <kzak@redhat.com>
-Date: Thu, 16 Nov 2017 16:27:32 +0100
-Subject: [PATCH] bash-completion: (umount) use findmnt, escape a space in
- paths
-
- # mount /dev/sdc1 /mnt/test/foo\ bar
- # umount <tab>
-
-has to return "/mnt/test/foo\ bar".
-
-Changes:
-
- * don't use mount | awk output, we have findmnt
- * force compgen use \n as entries separator
-
-Addresses: https://github.com/karelzak/util-linux/issues/539
-Signed-off-by: Karel Zak <kzak@redhat.com>
----
- bash-completion/umount | 9 +++++----
- 1 file changed, 5 insertions(+), 4 deletions(-)
-
-diff --git a/bash-completion/umount b/bash-completion/umount
-index d76cb9fff..98c90d61a 100644
---- a/bash-completion/umount
-+++ b/bash-completion/umount
-@@ -40,9 +40,10 @@ _umount_module()
- 			return 0
- 			;;
- 	esac
--	local DEVS_MPOINTS
--	DEVS_MPOINTS="$(mount | awk '{print $1, $3}')"
--	COMPREPLY=( $(compgen -W "$DEVS_MPOINTS" -- $cur) )
--	return 0
-+
-+	local oldifs=$IFS
-+	IFS=$'\n'
-+	COMPREPLY=( $( compgen -W '$(findmnt -lno TARGET | sed "s/\([[:blank:]]\)/\\\\\1/g")' -- "$cur" ) )
-+	IFS=$oldifs
- }
- complete -F _umount_module umount
diff --git a/sys-apps/util-linux/metadata.xml b/sys-apps/util-linux/metadata.xml
index d41121d..121dd51 100644
--- a/sys-apps/util-linux/metadata.xml
+++ b/sys-apps/util-linux/metadata.xml
@@ -6,11 +6,16 @@
 	<name>Gentoo Base System</name>
 </maintainer>
 <use>
+	<flag name="audit">Use <pkg>sys-process/audit</pkg> to emit audit messages about system changes</flag>
 	<flag name="caps">build setpriv helper (run programs with diff capabilities)</flag>
 	<flag name="cramfs">build mkfs/fsck helpers for cramfs filesystems</flag>
+	<flag name="cryptsetup">Use <pkg>sys-fs/cryptsetup</pkg> to have built-in dm-verity in libmount</flag>
 	<flag name="fdformat">build fdformat (floppy disk format)</flag>
+	<flag name="hardlink">build hardlink program</flag>
 	<flag name="kill">build the kill program</flag>
+	<flag name="logger">build the logger program</flag>
 	<flag name="pam">build runuser helper</flag>
+	<flag name="su">build the su program</flag>
 	<flag name="suid">
 		install mount/umount as setuid so non-root users may mount/umount devices,
 		and wall/write as setgid so non-root users can notify other users
diff --git a/sys-apps/util-linux/util-linux-2.32-r7.ebuild b/sys-apps/util-linux/util-linux-2.32-r7.ebuild
deleted file mode 100644
index 7d7d55f..0000000
--- a/sys-apps/util-linux/util-linux-2.32-r7.ebuild
+++ /dev/null
@@ -1,238 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-PYTHON_COMPAT=( python2_7 python3_{4,5,6} )
-
-inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 \
-	pam python-single-r1 multilib-minimal multiprocessing systemd
-
-MY_PV="${PV/_/-}"
-MY_P="${PN}-${MY_PV}"
-
-if [[ ${PV} == 9999 ]] ; then
-	inherit git-r3 autotools
-	EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
-else
-	[[ "${PV}" = *_rc* ]] || \
-	KEYWORDS="*"
-	SRC_URI="mirror://kernel/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz"
-fi
-
-DESCRIPTION="Various useful Linux utilities"
-HOMEPAGE="https://www.kernel.org/pub/linux/utils/util-linux/ https://github.com/karelzak/util-linux"
-
-LICENSE="GPL-2 LGPL-2.1 BSD-4 MIT public-domain"
-SLOT="0"
-IUSE="build caps +cramfs fdformat kill ncurses nls pam python +readline selinux slang static-libs +suid systemd test tty-helpers udev unicode userland_GNU
-	kernel-3_8 kernel-3_10 kernel-3_14 kernel-3_18 cros_host
-"
-
-# Most lib deps here are related to programs rather than our libs,
-# so we rarely need to specify ${MULTILIB_USEDEP}.
-RDEPEND="caps? ( sys-libs/libcap-ng )
-	cramfs? ( sys-libs/zlib:= )
-	ncurses? ( >=sys-libs/ncurses-5.2-r2:0=[unicode?] )
-	nls? ( virtual/libintl[${MULTILIB_USEDEP}] )
-	pam? ( sys-libs/pam )
-	python? ( ${PYTHON_DEPS} )
-	readline? ( sys-libs/readline:0= )
-	selinux? ( >=sys-libs/libselinux-2.2.2-r4[${MULTILIB_USEDEP}] )
-	slang? ( sys-libs/slang )
-	!build? ( systemd? ( sys-apps/systemd ) )
-	udev? ( virtual/libudev:= )"
-BDEPEND="
-	virtual/pkgconfig
-	nls? ( sys-devel/gettext )
-	test? ( sys-devel/bc )
-"
-DEPEND="${RDEPEND}
-	virtual/os-headers"
-RDEPEND+="
-	kill? (
-		!sys-apps/coreutils[kill]
-		!sys-process/procps[kill]
-	)
-	!net-wireless/rfkill
-	!sys-process/schedutils
-	!sys-apps/setarch
-	!<sys-apps/sysvinit-2.88-r7
-	!<sys-libs/e2fsprogs-libs-1.41.8
-	!<sys-fs/e2fsprogs-1.41.8
-	!<app-shells/bash-completion-2.7-r1"
-
-REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
-
-S="${WORKDIR}/${MY_P}"
-
-pkg_setup() {
-	use python && python-single-r1_pkg_setup
-}
-
-src_prepare() {
-	default
-
-	eapply "${FILESDIR}"/${P}-add-missing-lintl.patch
-	if ! use kernel-3_8 && ! use kernel-3_10 && ! use kernel-3_14 && \
-		! use kernel-3_18 && ! use cros_host; then
-		eapply "${FILESDIR}"/${P}-nosymfollow.patch
-	fi
-	touch -r "${S}"/configure "${S}"/libsmartcols/src/Makemodule.am || die
-	touch -r "${S}"/configure "${S}"/libuuid/src/Makemodule.am || die
-
-	# Prevent uuidd test failure due to socket path limit. #593304
-	sed -i \
-		-e "s|UUIDD_SOCKET=\"\$(mktemp -u \"\${TS_OUTDIR}/uuiddXXXXXXXXXXXXX\")\"|UUIDD_SOCKET=\"\$(mktemp -u \"${T}/uuiddXXXXXXXXXXXXX.sock\")\"|g" \
-		tests/ts/uuid/uuidd || die "Failed to fix uuidd test"
-
-	if ! use userland_GNU; then
-		# test runner is using GNU-specific xargs call
-		sed -i -e 's:xargs:gxargs:' tests/run.sh || die
-		# test requires util-linux uuidgen (which we don't build)
-		rm tests/ts/uuid/oids || die
-	fi
-
-	if [[ ${PV} == 9999 ]] ; then
-		po/update-potfiles
-		eautoreconf
-	fi
-
-	# Undo bad ncurses handling by upstream. #601530
-	sed -i -E \
-		-e '/NCURSES_/s:(ncursesw?)[56]-config:$PKG_CONFIG \1:' \
-		-e 's:(ncursesw?)[56]-config --version:$PKG_CONFIG --exists --print-errors \1:' \
-		configure || die
-
-	elibtoolize
-}
-
-lfs_fallocate_test() {
-	# Make sure we can use fallocate with LFS #300307
-	cat <<-EOF > "${T}"/fallocate.${ABI}.c
-		#define _GNU_SOURCE
-		#include <fcntl.h>
-		main() { return fallocate(0, 0, 0, 0); }
-	EOF
-	append-lfs-flags
-	$(tc-getCC) ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} "${T}"/fallocate.${ABI}.c -o /dev/null >/dev/null 2>&1 \
-		|| export ac_cv_func_fallocate=no
-	rm -f "${T}"/fallocate.${ABI}.c
-}
-
-multilib_src_configure() {
-	lfs_fallocate_test
-	# The scanf test in a run-time test which fails while cross-compiling.
-	# Blindly assume a POSIX setup since we require libmount, and libmount
-	# itself fails when the scanf test fails. #531856
-	tc-is-cross-compiler && export scanf_cv_alloc_modifier=ms
-	export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam) #485486
-	export ac_cv_header_security_pam_appl_h=$(multilib_native_usex pam) #545042
-
-	local myeconfargs=(
-		--enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin"
-		--with-bashcompletiondir="$(get_bashcompdir)"
-		$(multilib_native_use_enable suid makeinstall-chown)
-		$(multilib_native_use_enable suid makeinstall-setuid)
-		$(multilib_native_use_with python)
-		$(multilib_native_use_with readline)
-		$(multilib_native_use_with slang)
-		$(multilib_native_use_with systemd)
-		$(multilib_native_use_with udev)
-		$(multilib_native_usex ncurses "$(use_with unicode ncursesw)" '--without-ncursesw')
-		$(multilib_native_usex ncurses "$(use_with !unicode ncurses)" '--without-ncurses')
-		$(tc-has-tls || echo --disable-tls)
-		$(use_enable nls)
-		$(use_enable unicode widechar)
-		$(use_enable static-libs static)
-		$(use_with selinux)
-		$(usex ncurses '' '--without-tinfo')
-	)
-	# build programs only on GNU, on *BSD we want libraries only
-	if multilib_is_native_abi && use userland_GNU; then
-		myeconfargs+=(
-			--disable-chfn-chsh
-			--disable-login
-			--disable-nologin
-			--disable-su
-			--enable-agetty
-			--enable-bash-completion
-			--enable-line
-			--enable-partx
-			--enable-raw
-			--enable-rename
-			--enable-rfkill
-			--enable-schedutils
-			--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
-			$(use_enable caps setpriv)
-			$(use_enable cramfs)
-			$(use_enable fdformat)
-			$(use_enable tty-helpers mesg)
-			$(use_enable tty-helpers wall)
-			$(use_enable tty-helpers write)
-			$(use_enable kill)
-		)
-	else
-		myeconfargs+=(
-			--disable-all-programs
-			--disable-bash-completion
-			--without-systemdsystemunitdir
-			# build libraries
-			--enable-libuuid
-			--enable-libblkid
-			--enable-libsmartcols
-			--enable-libfdisk
-		)
-		if use userland_GNU; then
-			# those libraries don't work on *BSD
-			myeconfargs+=(
-				--enable-libmount
-			)
-		fi
-	fi
-	ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
-}
-
-multilib_src_test() {
-	emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
-}
-
-multilib_src_install() {
-	emake DESTDIR="${D}" install
-
-	if multilib_is_native_abi && use userland_GNU; then
-		# need the libs in /
-		gen_usr_ldscript -a blkid fdisk mount smartcols uuid
-
-		use python && python_optimize
-	fi
-}
-
-multilib_src_install_all() {
-	dodoc AUTHORS NEWS README* Documentation/{TODO,*.txt,releases/*}
-
-	# e2fsprogs-libs didnt install .la files, and .pc work fine
-	find "${ED}" -name "*.la" -delete || die
-
-	if ! use userland_GNU; then
-		# manpage collisions
-		# TODO: figure out a good way to keep them
-		rm "${ED%/}"/usr/share/man/man3/uuid* || die
-	fi
-
-	if use pam; then
-		newpamd "${FILESDIR}/runuser.pamd" runuser
-		newpamd "${FILESDIR}/runuser-l.pamd" runuser-l
-	fi
-}
-
-pkg_postinst() {
-	if ! use tty-helpers; then
-		elog "The mesg/wall/write tools have been disabled due to USE=-tty-helpers."
-	fi
-
-	if [[ -z ${REPLACING_VERSIONS} ]]; then
-		elog "The agetty util now clears the terminal by default. You"
-		elog "might want to add --noclear to your /etc/inittab lines."
-	fi
-}
diff --git a/sys-apps/util-linux/util-linux-2.36.2-r1.ebuild b/sys-apps/util-linux/util-linux-2.36.2-r1.ebuild
new file mode 100644
index 0000000..26e97af
--- /dev/null
+++ b/sys-apps/util-linux/util-linux-2.36.2-r1.ebuild
@@ -0,0 +1,319 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7,8,9} )
+
+inherit toolchain-funcs libtool flag-o-matic bash-completion-r1 usr-ldscript \
+	pam python-r1 multilib-minimal multiprocessing systemd
+
+MY_PV="${PV/_/-}"
+MY_P="${PN}-${MY_PV}"
+
+if [[ ${PV} == 9999 ]] ; then
+	inherit git-r3 autotools
+	EGIT_REPO_URI="https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git"
+else
+	[[ "${PV}" = *_rc* ]] || \
+	KEYWORDS="*"
+	SRC_URI="https://www.kernel.org/pub/linux/utils/util-linux/v${PV:0:4}/${MY_P}.tar.xz"
+fi
+
+DESCRIPTION="Various useful Linux utilities"
+HOMEPAGE="https://www.kernel.org/pub/linux/utils/util-linux/ https://github.com/karelzak/util-linux"
+
+LICENSE="GPL-2 GPL-3 LGPL-2.1 BSD-4 MIT public-domain"
+SLOT="0"
+IUSE="audit build caps +cramfs cryptsetup fdformat hardlink kill +logger magic ncurses nls pam python +readline selinux slang static-libs su +suid systemd test tty-helpers udev unicode userland_GNU"
+
+# Most lib deps here are related to programs rather than our libs,
+# so we rarely need to specify ${MULTILIB_USEDEP}.
+RDEPEND="
+	virtual/libcrypt:=
+	audit? ( >=sys-process/audit-2.6:= )
+	caps? ( sys-libs/libcap-ng )
+	cramfs? ( sys-libs/zlib:= )
+	cryptsetup? ( sys-fs/cryptsetup )
+	hardlink? ( dev-libs/libpcre2:= )
+	ncurses? (
+		>=sys-libs/ncurses-5.2-r2:0=[unicode?]
+		magic? ( sys-apps/file:0= )
+	)
+	nls? ( virtual/libintl[${MULTILIB_USEDEP}] )
+	pam? ( sys-libs/pam )
+	ppc? ( sys-libs/librtas )
+	ppc64? ( sys-libs/librtas )
+	python? ( ${PYTHON_DEPS} )
+	readline? ( sys-libs/readline:0= )
+	selinux? ( >=sys-libs/libselinux-2.2.2-r4[${MULTILIB_USEDEP}] )
+	slang? ( sys-libs/slang )
+	!build? ( systemd? ( sys-apps/systemd ) )
+	udev? ( virtual/libudev:= )"
+BDEPEND="
+	virtual/pkgconfig
+	nls? ( sys-devel/gettext )
+	test? ( sys-devel/bc )
+"
+DEPEND="
+	${RDEPEND}
+	virtual/os-headers
+"
+RDEPEND+="
+	hardlink? ( !app-arch/hardlink )
+	logger? ( !>=app-admin/sysklogd-2.0[logger] )
+	kill? (
+		!sys-apps/coreutils[kill]
+		!sys-process/procps[kill]
+	)
+	su? (
+		!<sys-apps/shadow-4.7-r2
+		!>=sys-apps/shadow-4.7-r2[su]
+	)
+	!net-wireless/rfkill
+	!<app-shells/bash-completion-2.7-r1"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+RESTRICT="!test? ( test )"
+
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+	"${FILESDIR}"/0001-lib-loopdev-fix-is_loopdev-to-be-usable-with-partiti.patch
+)
+
+src_prepare() {
+	default
+
+	# Prevent uuidd test failure due to socket path limit. #593304
+	sed -i \
+		-e "s|UUIDD_SOCKET=\"\$(mktemp -u \"\${TS_OUTDIR}/uuiddXXXXXXXXXXXXX\")\"|UUIDD_SOCKET=\"\$(mktemp -u \"${T}/uuiddXXXXXXXXXXXXX.sock\")\"|g" \
+		tests/ts/uuid/uuidd || die "Failed to fix uuidd test"
+
+	if ! use userland_GNU; then
+		# test runner is using GNU-specific xargs call
+		sed -i -e 's:xargs:gxargs:' tests/run.sh || die
+		# test requires util-linux uuidgen (which we don't build)
+		rm tests/ts/uuid/oids || die
+	fi
+
+	if [[ ${PV} == 9999 ]] ; then
+		po/update-potfiles
+		eautoreconf
+	fi
+
+	elibtoolize
+}
+
+lfs_fallocate_test() {
+	# Make sure we can use fallocate with LFS #300307
+	cat <<-EOF > "${T}"/fallocate.${ABI}.c
+		#define _GNU_SOURCE
+		#include <fcntl.h>
+		main() { return fallocate(0, 0, 0, 0); }
+	EOF
+	append-lfs-flags
+	$(tc-getCC) ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} "${T}"/fallocate.${ABI}.c -o /dev/null >/dev/null 2>&1 \
+		|| export ac_cv_func_fallocate=no
+	rm -f "${T}"/fallocate.${ABI}.c
+}
+
+python_configure() {
+	local myeconfargs=(
+		"${commonargs[@]}"
+		--disable-all-programs
+		--disable-bash-completion
+		--without-systemdsystemunitdir
+		--with-python
+	)
+	if use userland_GNU; then
+		myeconfargs+=(
+			--enable-libblkid
+			--enable-libmount
+			--enable-pylibmount
+		)
+	fi
+	mkdir "${BUILD_DIR}" || die
+	pushd "${BUILD_DIR}" >/dev/null || die
+	ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+	popd >/dev/null || die
+}
+
+multilib_src_configure() {
+	lfs_fallocate_test
+	# The scanf test in a run-time test which fails while cross-compiling.
+	# Blindly assume a POSIX setup since we require libmount, and libmount
+	# itself fails when the scanf test fails. #531856
+	tc-is-cross-compiler && export scanf_cv_alloc_modifier=ms
+	export ac_cv_header_security_pam_misc_h=$(multilib_native_usex pam) #485486
+	export ac_cv_header_security_pam_appl_h=$(multilib_native_usex pam) #545042
+
+	# Undo bad ncurses handling by upstream. Fall back to pkg-config. #601530
+	export NCURSES6_CONFIG=false NCURSES5_CONFIG=false
+	export NCURSESW6_CONFIG=false NCURSESW5_CONFIG=false
+
+	# configure args shared by python and non-python builds
+	local commonargs=(
+		--enable-fs-paths-extra="${EPREFIX}/usr/sbin:${EPREFIX}/bin:${EPREFIX}/usr/bin"
+	)
+
+	local myeconfargs=(
+		"${commonargs[@]}"
+		--with-bashcompletiondir="$(get_bashcompdir)"
+		--without-python
+		$(multilib_native_use_enable suid makeinstall-chown)
+		$(multilib_native_use_enable suid makeinstall-setuid)
+		$(multilib_native_use_with readline)
+		$(multilib_native_use_with slang)
+		$(multilib_native_use_with systemd)
+		$(multilib_native_use_with udev)
+		$(multilib_native_usex ncurses "$(use_with magic libmagic)" '--without-libmagic')
+		$(multilib_native_usex ncurses "$(use_with unicode ncursesw)" '--without-ncursesw')
+		$(multilib_native_usex ncurses "$(use_with !unicode ncurses)" '--without-ncurses')
+		$(multilib_native_use_with audit)
+		$(tc-has-tls || echo --disable-tls)
+		$(use_enable nls)
+		$(use_enable unicode widechar)
+		$(use_enable static-libs static)
+		$(use_with ncurses tinfo)
+		$(use_with selinux)
+	)
+	# build programs only on GNU, on *BSD we want libraries only
+	if multilib_is_native_abi && use userland_GNU; then
+		myeconfargs+=(
+			--disable-chfn-chsh
+			--disable-login
+			--disable-nologin
+			--disable-pylibmount
+			--enable-agetty
+			--enable-bash-completion
+			--enable-line
+			--enable-partx
+			--enable-raw
+			--enable-rename
+			--enable-rfkill
+			--enable-schedutils
+			--with-systemdsystemunitdir="$(systemd_get_systemunitdir)"
+			$(use_enable caps setpriv)
+			$(use_enable cramfs)
+			$(use_enable fdformat)
+			$(use_enable hardlink)
+			$(use_enable kill)
+			$(use_enable logger)
+			$(use_enable ncurses pg)
+			$(use_enable su)
+			$(use_enable tty-helpers mesg)
+			$(use_enable tty-helpers wall)
+			$(use_enable tty-helpers write)
+			$(use_with cryptsetup)
+		)
+	else
+		myeconfargs+=(
+			--disable-all-programs
+			--disable-bash-completion
+			--without-systemdsystemunitdir
+			# build libraries
+			--enable-libuuid
+			--enable-libblkid
+			--enable-libsmartcols
+			--enable-libfdisk
+		)
+		if use userland_GNU; then
+			# those libraries don't work on *BSD
+			myeconfargs+=(
+				--enable-libmount
+			)
+		fi
+	fi
+	ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+
+	if multilib_is_native_abi && use python; then
+		python_foreach_impl python_configure
+	fi
+}
+
+python_compile() {
+	pushd "${BUILD_DIR}" >/dev/null || die
+	emake all
+	popd >/dev/null || die
+}
+
+multilib_src_compile() {
+	emake all
+
+	if multilib_is_native_abi && use python; then
+		python_foreach_impl python_compile
+	fi
+}
+
+python_test() {
+	pushd "${BUILD_DIR}" >/dev/null || die
+	emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
+	popd >/dev/null || die
+}
+
+multilib_src_test() {
+	emake check TS_OPTS="--parallel=$(makeopts_jobs) --nonroot"
+	if multilib_is_native_abi && use python; then
+		python_foreach_impl python_test
+	fi
+}
+
+python_install() {
+	pushd "${BUILD_DIR}" >/dev/null || die
+	emake DESTDIR="${D}" install
+	python_optimize
+	popd >/dev/null || die
+}
+
+multilib_src_install() {
+	if multilib_is_native_abi && use python; then
+		python_foreach_impl python_install
+	fi
+
+	# This needs to be called AFTER python_install call (#689190)
+	emake DESTDIR="${D}" install
+
+	if multilib_is_native_abi && use userland_GNU; then
+		# need the libs in /
+		gen_usr_ldscript -a blkid fdisk mount smartcols uuid
+	fi
+}
+
+multilib_src_install_all() {
+	dodoc AUTHORS NEWS README* Documentation/{TODO,*.txt,releases/*}
+	chmod -x "${ED}"/usr/share/doc/util-linux-${PVR}/getopt/getopt-parse* || die
+
+	# e2fsprogs-libs didnt install .la files, and .pc work fine
+	find "${ED}" -name "*.la" -delete || die
+
+	if ! use userland_GNU; then
+		# manpage collisions
+		# TODO: figure out a good way to keep them
+		rm "${ED}"/usr/share/man/man3/uuid* || die
+	fi
+
+	if use pam; then
+		newpamd "${FILESDIR}/runuser.pamd" runuser
+		newpamd "${FILESDIR}/runuser-l.pamd" runuser-l
+	fi
+
+	# Note:
+	# Bash completion for "runuser" command is provided by same file which
+	# would also provide bash completion for "su" command. However, we don't
+	# use "su" command from this package.
+	# This triggers a known QA warning which we ignore for now to magically
+	# keep bash completion for "su" command which shadow package does not
+	# provide.
+}
+
+pkg_postinst() {
+	if ! use tty-helpers; then
+		elog "The mesg/wall/write tools have been disabled due to USE=-tty-helpers."
+	fi
+
+	if [[ -z ${REPLACING_VERSIONS} ]]; then
+		elog "The agetty util now clears the terminal by default. You"
+		elog "might want to add --noclear to your /etc/inittab lines."
+	fi
+}
diff --git a/sys-block/parted/OWNERS b/sys-block/parted/OWNERS
new file mode 100644
index 0000000..ca89f86
--- /dev/null
+++ b/sys-block/parted/OWNERS
@@ -0,0 +1,2 @@
+include /chromeos-base/factory/OWNERS
+include /chromeos-base/os_install_service/OWNERS
diff --git a/sys-block/parted/parted-3.1-r3.ebuild b/sys-block/parted/parted-3.1-r3.ebuild
deleted file mode 100644
index deda1e2..0000000
--- a/sys-block/parted/parted-3.1-r3.ebuild
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-block/parted/parted-3.1.ebuild,v 1.1 2012/03/04 18:23:21 jer Exp $
-
-EAPI="3"
-
-WANT_AUTOMAKE="1.11"
-
-inherit autotools eutils
-
-DESCRIPTION="Create, destroy, resize, check, copy partitions and file systems"
-HOMEPAGE="http://www.gnu.org/software/parted"
-SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
-
-LICENSE="GPL-3"
-SLOT="0"
-KEYWORDS="*"
-IUSE="+debug device-mapper nls readline selinux static-libs test"
-
-# specific version for gettext needed
-# to fix bug 85999
-RDEPEND="
-	>=sys-fs/e2fsprogs-1.27
-	>=sys-libs/ncurses-5.2
-	nls? ( >=sys-devel/gettext-0.12.1-r2 )
-	readline? ( >=sys-libs/readline-5.2 )
-	selinux? ( sys-libs/libselinux )
-	device-mapper? ( || ( >=sys-fs/lvm2-2.02.45 sys-fs/device-mapper ) )
-"
-DEPEND="
-	${RDEPEND}
-	dev-util/pkgconfig
-	test? ( >=dev-libs/check-0.9.3 )
-"
-
-src_prepare() {
-	# Remove tests known to FAIL instead of SKIP without OS/userland support
-	sed -i libparted/tests/Makefile.am \
-		-e 's|t3000-symlink.sh||g' || die "sed failed"
-	sed -i tests/Makefile.am \
-		-e '/t4100-msdos-partition-limits.sh/d' \
-		-e '/t4100-dvh-partition-limits.sh/d' \
-		-e '/t6000-dm.sh/d' || die "sed failed"
-	# there is no configure flag for controlling the dev-libs/check test
-	sed -i configure.ac \
-		-e "s:have_check=[a-z]*:have_check=$(usex test):g" || die
-
-	# Fix a file descriptor leak due to fsync errors.
-	# See crosbug.com/33674 for details.
-	epatch "${FILESDIR}/${P}-fix-file-descriptor-leak.patch" || die
-	epatch "${FILESDIR}/${P}-sysmacro.patch" || die
-
-	eautoreconf
-}
-
-src_configure() {
-	econf \
-		$(use_with readline) \
-		$(use_enable nls) \
-		$(use_enable debug) \
-		$(use_enable selinux) \
-		$(use_enable device-mapper) \
-		$(use_enable static-libs static) \
-		--disable-rpath
-}
-
-src_test() {
-	if use debug; then
-		# Do not die when tests fail - some requirements are not
-		# properly checked and should not lead to the ebuild failing.
-		emake check
-	else
-		ewarn "Skipping tests because USE=-debug is set."
-	fi
-}
-
-src_install() {
-	emake install DESTDIR="${D}" || die "Install failed"
-	dodoc AUTHORS BUGS ChangeLog NEWS README THANKS TODO
-	dodoc doc/{API,FAT,USER.jp}
-	find "${ED}" -name '*.la' -exec rm -f '{}' +
-}
diff --git a/sys-block/parted/parted-3.1-r4.ebuild b/sys-block/parted/parted-3.1-r4.ebuild
new file mode 100644
index 0000000..e3b00eb
--- /dev/null
+++ b/sys-block/parted/parted-3.1-r4.ebuild
@@ -0,0 +1,86 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-block/parted/parted-3.1.ebuild,v 1.1 2012/03/04 18:23:21 jer Exp $
+
+EAPI="7"
+
+WANT_AUTOMAKE="1.11"
+
+inherit autotools
+
+DESCRIPTION="Create, destroy, resize, check, copy partitions and file systems"
+HOMEPAGE="http://www.gnu.org/software/parted"
+SRC_URI="mirror://gnu/${PN}/${P}.tar.xz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+debug device-mapper nls readline selinux static-libs test"
+
+# specific version for gettext needed
+# to fix bug 85999
+RDEPEND="
+	>=sys-fs/e2fsprogs-1.27
+	>=sys-libs/ncurses-5.2
+	nls? ( >=sys-devel/gettext-0.12.1-r2 )
+	readline? ( >=sys-libs/readline-5.2 )
+	selinux? ( sys-libs/libselinux )
+	device-mapper? ( || ( >=sys-fs/lvm2-2.02.45 sys-fs/device-mapper ) )
+"
+DEPEND="
+	${RDEPEND}
+	dev-util/pkgconfig
+	test? ( >=dev-libs/check-0.9.3 )
+"
+
+PATCHES=(
+	# Fix a file descriptor leak due to fsync errors.
+	# See crbug.com/215843 for details.
+	"${FILESDIR}/${P}-fix-file-descriptor-leak.patch"
+	"${FILESDIR}/${P}-sysmacro.patch"
+)
+
+src_prepare() {
+	default
+
+	# Remove tests known to FAIL instead of SKIP without OS/userland support
+	sed -i libparted/tests/Makefile.am \
+		-e 's|t3000-symlink.sh||g' || die "sed failed"
+	sed -i tests/Makefile.am \
+		-e '/t4100-msdos-partition-limits.sh/d' \
+		-e '/t4100-dvh-partition-limits.sh/d' \
+		-e '/t6000-dm.sh/d' || die "sed failed"
+	# there is no configure flag for controlling the dev-libs/check test
+	sed -i configure.ac \
+		-e "s:have_check=[a-z]*:have_check=$(usex test):g" || die
+
+	eautoreconf
+}
+
+src_configure() {
+	econf \
+		$(use_with readline) \
+		$(use_enable nls) \
+		$(use_enable debug) \
+		$(use_enable selinux) \
+		$(use_enable device-mapper) \
+		$(use_enable static-libs static) \
+		--disable-rpath
+}
+
+src_test() {
+	if use debug; then
+		# Do not die when tests fail - some requirements are not
+		# properly checked and should not lead to the ebuild failing.
+		emake check
+	else
+		ewarn "Skipping tests because USE=-debug is set."
+	fi
+}
+
+src_install() {
+	emake install DESTDIR="${D}"
+	dodoc AUTHORS BUGS ChangeLog NEWS README THANKS TODO
+	dodoc doc/{API,FAT,USER.jp}
+	find "${ED}" -name '*.la' -exec rm -f '{}' +
+}
diff --git a/sys-boot/chromeos-bmpblk/chromeos-bmpblk-1.0.1-r264.ebuild b/sys-boot/chromeos-bmpblk/chromeos-bmpblk-1.0.1-r264.ebuild
deleted file mode 100644
index eae90b6..0000000
--- a/sys-boot/chromeos-bmpblk/chromeos-bmpblk-1.0.1-r264.ebuild
+++ /dev/null
@@ -1,211 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="9493b76a1c5a6b520c64811e110f319839b2a09f"
-CROS_WORKON_TREE="25682679eeff95571ad86628e48a10348e7ba650"
-CROS_WORKON_PROJECT="chromiumos/platform/bmpblk"
-CROS_WORKON_LOCALNAME="../platform/bmpblk"
-CROS_WORKON_OUTOFTREE_BUILD="1"
-CROS_WORKON_USE_VCSID="1"
-
-# TODO(hungte) When "tweaking ebuilds by source repository" is implemented, we
-# can generate this list by some script inside source repo.
-CROS_BOARDS=(
-	ambassador
-	asurada
-	atlas
-	auron_paine
-	auron_yuna
-	banjo
-	brya
-	buddy
-	butterfly
-	candy
-	chell
-	cid
-	clapper
-	cranky
-	daisy
-	daisy_snow
-	daisy_spring
-	daisy_skate
-	dedede
-	deltaur
-	dragonegg
-	drallion
-	endeavour
-	enguarde
-	expresso
-	eve
-	falco
-	fizz
-	flapjack
-	glados
-	glimmer
-	gnawty
-	grunt
-	guado
-	hatch
-	jacuzzi
-	kalista
-	kevin
-	kip
-	kukui
-	lars
-	leon
-	link
-	lulu
-	lumpy
-	mccloud
-	meowth
-	monroe
-	mushu
-	nami
-	nautilus
-	ninja
-	nocturne
-	nyan
-	nyan_big
-	octopus
-	orco
-	palkia
-	panther
-	parrot
-	peach_pi
-	peach_pit
-	peppy
-	poppy
-	puff
-	quawks
-	rammus
-	reks
-	rikku
-	sarien
-	scarlet
-	soraka
-	squawks
-	stout
-	strongbad
-	stumpy
-	sumo
-	swanky
-	tglrvp
-	tidus
-	tricky
-	trogdor
-	veyron_brain
-	veyron_danger
-	veyron_jerry
-	veyron_mickey
-	veyron_minnie
-	veyron_pinky
-	veyron_romy
-	volteer
-	winky
-	wolf
-	zako
-	zoombini
-	zork
-)
-
-PYTHON_COMPAT=( python3_{6..8} )
-inherit cros-workon cros-board python-any-r1
-
-DESCRIPTION="Chrome OS Firmware Bitmap Block"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/bmpblk/"
-SRC_URI=""
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="detachable diag_payload +minidiag physical_presence_power
-	physical_presence_recovery"
-
-BDEPEND="${PYTHON_DEPS}"
-DEPEND="virtual/chromeos-vendor-strings"
-
-src_prepare() {
-	export BOARD="$(get_current_board_with_variant "${ARCH}-generic")"
-	export VCSID
-
-	default
-
-	# if fontconfig's cache is empty, prepare single use cache.
-	# That's still faster than having each process (of which there
-	# are many) re-scan the fonts
-	if find /usr/share/cache/fontconfig -maxdepth 0 -type d -empty \
-		-exec false {} +; then
-
-		return
-	fi
-
-	TMPCACHE=$(mktemp -d)
-	cat > $TMPCACHE/local-conf.xml <<-EOF
-		<?xml version="1.0"?>
-		<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-		<fontconfig>
-		<cachedir>$TMPCACHE</cachedir>
-		<include>/etc/fonts/fonts.conf</include>
-		</fontconfig>
-	EOF
-	export FONTCONFIG_FILE=$TMPCACHE/local-conf.xml
-	fc-cache -v
-}
-
-src_compile() {
-	local vendor_strings_dir="${SYSROOT}/firmware/vendor-strings"
-	if use detachable ; then
-		export DETACHABLE=1
-	fi
-
-	# Both diag_payload and minidiag need additional UI images from
-	# chromeos-bmpblk.
-	if use diag_payload || use minidiag ; then
-		export DIAGNOSTIC_UI=1
-	fi
-	if [[ -f "${vendor_strings_dir}/vendor_format.yaml" ]] ; then
-		export VENDOR_STRINGS_DIR="${vendor_strings_dir}"
-	fi
-	if use physical_presence_power ; then
-		export PHYSICAL_PRESENCE="power"
-	elif use physical_presence_recovery ; then
-		export PHYSICAL_PRESENCE="recovery"
-	else
-		export PHYSICAL_PRESENCE="keyboard"
-	fi
-	emake OUTPUT="${WORKDIR}" BOARD="${BOARD}"
-	emake OUTPUT="${WORKDIR}/${BOARD}" ARCHIVER="/usr/bin/archive" archive
-	if [[ "${BOARD}" == "${ARCH}-generic" ]]; then
-		printf "1" > "${WORKDIR}/${BOARD}/vbgfx_not_scaled"
-	fi
-}
-
-doins_if_exist() {
-	local f
-	for f in "$@"; do
-		if [[ -r "${f}" ]]; then
-			doins "${f}"
-		fi
-	done
-}
-
-src_install() {
-	# Most bitmaps need to reside in the RO CBFS only. Many boards do
-	# not have enough space in the RW CBFS regions to contain all
-	# image files.
-	insinto /firmware/cbfs-ro-compress
-	# These files aren't necessary for debug builds. When these files
-	# are missing, Depthcharge will render text-only screens. They look
-	# obviously not ready for release.
-	doins_if_exist "${WORKDIR}/${BOARD}"/vbgfx.bin
-	doins_if_exist "${WORKDIR}/${BOARD}"/locales
-	doins_if_exist "${WORKDIR}/${BOARD}"/locale/ro/locale_*.bin
-	doins_if_exist "${WORKDIR}/${BOARD}"/font.bin
-	# This flag tells the firmware_Bmpblk test to flag this build as
-	# not ready for release.
-	doins_if_exist "${WORKDIR}/${BOARD}"/vbgfx_not_scaled
-
-	# However, if specific bitmaps need to be updated via RW update,
-	# we should also install here.
-	insinto /firmware/cbfs-rw-compress-override
-	doins_if_exist "${WORKDIR}/${BOARD}"/locale/rw/rw_locale_*.bin
-}
diff --git a/sys-boot/chromeos-bmpblk/chromeos-bmpblk-1.0.1-r301.ebuild b/sys-boot/chromeos-bmpblk/chromeos-bmpblk-1.0.1-r301.ebuild
new file mode 100644
index 0000000..c640e87
--- /dev/null
+++ b/sys-boot/chromeos-bmpblk/chromeos-bmpblk-1.0.1-r301.ebuild
@@ -0,0 +1,209 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="720e73efd70668f3d3e5d77d22e9678026076a2b"
+CROS_WORKON_TREE="adc125e63a2cf7b47603a336a8390afa9374aede"
+CROS_WORKON_PROJECT="chromiumos/platform/bmpblk"
+CROS_WORKON_LOCALNAME="../platform/bmpblk"
+CROS_WORKON_OUTOFTREE_BUILD="1"
+CROS_WORKON_USE_VCSID="1"
+
+# TODO(hungte) When "tweaking ebuilds by source repository" is implemented, we
+# can generate this list by some script inside source repo.
+CROS_BOARDS=(
+	ambassador
+	asurada
+	atlas
+	auron_paine
+	auron_yuna
+	banjo
+	brya
+	buddy
+	butterfly
+	candy
+	chell
+	cherry
+	cid
+	clapper
+	cranky
+	daisy
+	daisy_snow
+	daisy_spring
+	daisy_skate
+	dedede
+	deltaur
+	dragonegg
+	drallion
+	endeavour
+	enguarde
+	expresso
+	eve
+	falco
+	fizz
+	flapjack
+	glados
+	glimmer
+	gnawty
+	grunt
+	guado
+	hatch
+	jacuzzi
+	kalista
+	keeby
+	kevin
+	kip
+	kukui
+	lars
+	leon
+	link
+	lulu
+	lumpy
+	mccloud
+	meowth
+	monroe
+	mushu
+	nami
+	nautilus
+	ninja
+	nocturne
+	nyan
+	nyan_big
+	octopus
+	orco
+	palkia
+	panther
+	parrot
+	peach_pi
+	peach_pit
+	peppy
+	poppy
+	puff
+	quawks
+	rammus
+	reks
+	rikku
+	sarien
+	scarlet
+	soraka
+	squawks
+	stout
+	strongbad
+	stumpy
+	sumo
+	swanky
+	tglrvp
+	tidus
+	tricky
+	trogdor
+	veyron_brain
+	veyron_danger
+	veyron_jerry
+	veyron_mickey
+	veyron_minnie
+	veyron_pinky
+	veyron_romy
+	volteer
+	winky
+	wolf
+	zako
+	zoombini
+	zork
+)
+
+PYTHON_COMPAT=( python3_{6..8} )
+inherit cros-workon cros-board python-any-r1
+
+DESCRIPTION="Chrome OS Firmware Bitmap Block"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/bmpblk/"
+SRC_URI=""
+LICENSE="BSD-Google"
+KEYWORDS="*"
+IUSE="detachable diag_payload +minidiag physical_presence_power
+	physical_presence_recovery"
+
+BDEPEND="${PYTHON_DEPS}"
+DEPEND=""
+
+src_prepare() {
+	export BOARD="$(get_current_board_with_variant "${ARCH}-generic")"
+	export VCSID
+
+	default
+
+	# if fontconfig's cache is empty, prepare single use cache.
+	# That's still faster than having each process (of which there
+	# are many) re-scan the fonts
+	if find /usr/share/cache/fontconfig -maxdepth 0 -type d -empty \
+		-exec false {} +; then
+
+		return
+	fi
+
+	TMPCACHE=$(mktemp -d)
+	cat > $TMPCACHE/local-conf.xml <<-EOF
+		<?xml version="1.0"?>
+		<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+		<fontconfig>
+		<cachedir>$TMPCACHE</cachedir>
+		<include>/etc/fonts/fonts.conf</include>
+		</fontconfig>
+	EOF
+	export FONTCONFIG_FILE=$TMPCACHE/local-conf.xml
+	fc-cache -v
+}
+
+src_compile() {
+	if use detachable ; then
+		export DETACHABLE=1
+	fi
+
+	# Both diag_payload and minidiag need additional UI images from
+	# chromeos-bmpblk.
+	if use diag_payload || use minidiag ; then
+		export DIAGNOSTIC_UI=1
+	fi
+	if use physical_presence_power ; then
+		export PHYSICAL_PRESENCE="power"
+	elif use physical_presence_recovery ; then
+		export PHYSICAL_PRESENCE="recovery"
+	else
+		export PHYSICAL_PRESENCE="keyboard"
+	fi
+	emake OUTPUT="${WORKDIR}" BOARD="${BOARD}"
+	emake OUTPUT="${WORKDIR}/${BOARD}" ARCHIVER="/usr/bin/archive" archive
+	if [[ "${BOARD}" == "${ARCH}-generic" ]]; then
+		printf "1" > "${WORKDIR}/${BOARD}/vbgfx_not_scaled"
+	fi
+}
+
+doins_if_exist() {
+	local f
+	for f in "$@"; do
+		if [[ -r "${f}" ]]; then
+			doins "${f}"
+		fi
+	done
+}
+
+src_install() {
+	# Most bitmaps need to reside in the RO CBFS only. Many boards do
+	# not have enough space in the RW CBFS regions to contain all
+	# image files.
+	insinto /firmware/cbfs-ro-compress
+	# These files aren't necessary for debug builds. When these files
+	# are missing, Depthcharge will render text-only screens. They look
+	# obviously not ready for release.
+	doins_if_exist "${WORKDIR}/${BOARD}"/vbgfx.bin
+	doins_if_exist "${WORKDIR}/${BOARD}"/locales
+	doins_if_exist "${WORKDIR}/${BOARD}"/locale/ro/locale_*.bin
+	doins_if_exist "${WORKDIR}/${BOARD}"/font.bin
+	# This flag tells the firmware_Bmpblk test to flag this build as
+	# not ready for release.
+	doins_if_exist "${WORKDIR}/${BOARD}"/vbgfx_not_scaled
+
+	# However, if specific bitmaps need to be updated via RW update,
+	# we should also install here.
+	insinto /firmware/cbfs-rw-compress-override
+	doins_if_exist "${WORKDIR}/${BOARD}"/locale/rw/rw_locale_*.bin
+}
diff --git a/sys-boot/chromeos-bmpblk/chromeos-bmpblk-9999.ebuild b/sys-boot/chromeos-bmpblk/chromeos-bmpblk-9999.ebuild
index 7d68739..5f93551 100644
--- a/sys-boot/chromeos-bmpblk/chromeos-bmpblk-9999.ebuild
+++ b/sys-boot/chromeos-bmpblk/chromeos-bmpblk-9999.ebuild
@@ -21,6 +21,7 @@
 	butterfly
 	candy
 	chell
+	cherry
 	cid
 	clapper
 	cranky
@@ -47,6 +48,7 @@
 	hatch
 	jacuzzi
 	kalista
+	keeby
 	kevin
 	kip
 	kukui
@@ -119,7 +121,7 @@
 	physical_presence_recovery"
 
 BDEPEND="${PYTHON_DEPS}"
-DEPEND="virtual/chromeos-vendor-strings"
+DEPEND=""
 
 src_prepare() {
 	export BOARD="$(get_current_board_with_variant "${ARCH}-generic")"
@@ -150,7 +152,6 @@
 }
 
 src_compile() {
-	local vendor_strings_dir="${SYSROOT}/firmware/vendor-strings"
 	if use detachable ; then
 		export DETACHABLE=1
 	fi
@@ -160,9 +161,6 @@
 	if use diag_payload || use minidiag ; then
 		export DIAGNOSTIC_UI=1
 	fi
-	if [[ -f "${vendor_strings_dir}/vendor_format.yaml" ]] ; then
-		export VENDOR_STRINGS_DIR="${vendor_strings_dir}"
-	fi
 	if use physical_presence_power ; then
 		export PHYSICAL_PRESENCE="power"
 	elif use physical_presence_recovery ; then
diff --git a/sys-boot/chromeos-bootimage/OWNERS b/sys-boot/chromeos-bootimage/OWNERS
new file mode 100644
index 0000000..975e84c
--- /dev/null
+++ b/sys-boot/chromeos-bootimage/OWNERS
@@ -0,0 +1,5 @@
+dossym@google.com
+dlaurie@google.com
+furquan@chromium.org
+aaboagye@chromium.org
+rrangel@chromium.org
diff --git a/sys-boot/chromeos-bootimage/chromeos-bootimage-0.0.3-r85.ebuild b/sys-boot/chromeos-bootimage/chromeos-bootimage-0.0.3-r85.ebuild
deleted file mode 120000
index b7898de..0000000
--- a/sys-boot/chromeos-bootimage/chromeos-bootimage-0.0.3-r85.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-chromeos-bootimage-0.0.3.ebuild
\ No newline at end of file
diff --git a/sys-boot/chromeos-bootimage/chromeos-bootimage-0.0.3.ebuild b/sys-boot/chromeos-bootimage/chromeos-bootimage-0.0.3.ebuild
deleted file mode 100644
index ebce0a8..0000000
--- a/sys-boot/chromeos-bootimage/chromeos-bootimage-0.0.3.ebuild
+++ /dev/null
@@ -1,694 +0,0 @@
-# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit cros-debug cros-unibuild
-
-DESCRIPTION="ChromeOS firmware image builder"
-HOMEPAGE="http://www.chromium.org"
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-# TODO(sjg@chromium.org): Remove when x86 can build all boards
-BOARDS="alex aplrvp atlas auron bayleybay beltino bolt butterfly"
-BOARDS="${BOARDS} chell cnlrvp coral cyan dedede deltaur dragonegg drallion emeraldlake2 eve"
-BOARDS="${BOARDS} endeavour falco fizz fox glados glkrvp grunt hatch jecht kalista"
-BOARDS="${BOARDS} kblrvp kunimitsu link lumpy lumpy64 mario meowth mushu nasher nami"
-BOARDS="${BOARDS} nautilus nocturne octopus palkia panther parrot peppy poppy puff pyro"
-BOARDS="${BOARDS} rambi rammus reef samus sand sarien sklrvp slippy snappy"
-BOARDS="${BOARDS} soraka squawks stout strago stumpy sumo volteer zoombini zork tglrvp"
-IUSE="${BOARDS} diag_payload seabios wilco_ec"
-IUSE="${IUSE} fsp unibuild u-boot tianocore cros_ec pd_sync +bmpblk"
-IUSE="${IUSE} generated_cros_config"
-
-# 'ec_ro_sync' can be a solution for devices that will fail to complete recovery
-# due to TCPC reset (crbug.com/782427#c4), but may not work for every devices
-# (crbug.com/1024401, and MT8183 family). Please double check before turning on
-# this option.
-IUSE="${IUSE} ec_ro_sync"
-IUSE="${IUSE} +depthcharge"
-
-BDEPEND="chromeos-base/vboot_reference"
-
-# TODO(sjg@chromium.org): Drop this zork stuff when the code is upstream
-DEPEND="
-	sys-boot/coreboot
-	depthcharge? ( sys-boot/depthcharge:= )
-	bmpblk? ( sys-boot/chromeos-bmpblk:= )
-	tianocore? ( sys-boot/edk2:= )
-	seabios? ( sys-boot/chromeos-seabios:= )
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	u-boot? ( sys-boot/u-boot:= )
-	cros_ec? ( chromeos-base/chromeos-ec:= )
-	pd_sync? ( chromeos-base/chromeos-ec:= )
-	"
-
-# Directory where the generated files are looked for and placed.
-CROS_FIRMWARE_IMAGE_DIR="/firmware"
-CROS_FIRMWARE_ROOT="${SYSROOT}${CROS_FIRMWARE_IMAGE_DIR}"
-
-S=${WORKDIR}
-
-do_cbfstool() {
-	local output
-	output=$(cbfstool "$@" 2>&1)
-	if [ $? != 0 ]; then
-		die "Failed cbfstool invocation: cbfstool $@\n${output}"
-	fi
-	printf "${output}"
-}
-
-sign_region() {
-	local fw_image=$1
-	local keydir=$2
-	local slot=$3
-
-	local tmpfile=`mktemp`
-	local cbfs=FW_MAIN_${slot}
-	local vblock=VBLOCK_${slot}
-
-	do_cbfstool ${fw_image} read -r ${cbfs} -f ${tmpfile}
-	local size=$(do_cbfstool ${fw_image} print -k -r ${cbfs} | \
-		tail -1 | \
-		sed "/(empty).*null/ s,^(empty)[[:space:]]\(0x[0-9a-f]*\)\tnull\t.*$,\1,")
-	size=$(printf "%d" ${size})
-
-	# If the last entry is called "(empty)" and of type "null", remove it from
-	# the section so it isn't part of the signed data, to improve boot speed
-	# if (as often happens) there's a large unused suffix.
-	if [ -n "${size}" ] && [ ${size} -gt 0 ]; then
-		head -c ${size} ${tmpfile} > ${tmpfile}.2
-		mv ${tmpfile}.2 ${tmpfile}
-		# Use 255 (aka 0xff) as the filler, this greatly reduces
-		# memory areas which need to be programmed for spi flash
-		# chips, because the erase value is 0xff.
-		do_cbfstool ${fw_image} write --force -u -i 255 \
-			-r ${cbfs} -f ${tmpfile}
-	fi
-
-	futility vbutil_firmware \
-		--vblock ${tmpfile}.out \
-		--keyblock ${keydir}/firmware.keyblock \
-		--signprivate ${keydir}/firmware_data_key.vbprivk \
-		--version 1 \
-		--fv ${tmpfile} \
-		--kernelkey ${keydir}/kernel_subkey.vbpubk \
-		--flags 0
-
-	do_cbfstool ${fw_image} write -u -i 255 -r ${vblock} -f ${tmpfile}.out
-
-	rm -f ${tmpfile} ${tmpfile}.out
-}
-
-sign_image() {
-	local fw_image=$1
-	local keydir=$2
-
-	sign_region "${fw_image}" "${keydir}" A
-	sign_region "${fw_image}" "${keydir}" B
-}
-
-add_payloads() {
-	local fw_image=$1
-	local ro_payload=$2
-	local rw_payload=$3
-
-	if [ -n "${ro_payload}" ]; then
-		do_cbfstool "${fw_image}" add-payload \
-			-f "${ro_payload}" -n fallback/payload -c lzma
-	fi
-
-	if [ -n "${rw_payload}" ]; then
-		do_cbfstool "${fw_image}" add-payload -f "${rw_payload}" \
-			-n fallback/payload -c lzma -r FW_MAIN_A,FW_MAIN_B
-	fi
-}
-
-# Returns true if EC supports EFS.
-is_ec_efs_enabled() {
-	local depthcharge_config="$1"
-
-	grep -q "^CONFIG_EC_EFS=y$" "${depthcharge_config}"
-}
-
-# Returns true if coreboot is set up to perform EC software sync
-is_early_ec_sync_enabled() {
-	local coreboot_config="$1"
-
-	grep -q "^CONFIG_VBOOT_EARLY_EC_SYNC=y$" "${coreboot_config}"
-}
-
-# Adds EC{ro,rw} images to CBFS
-add_ec() {
-	local depthcharge_config="$1"
-	local coreboot_config="$2"
-	local rom="$3"
-	local name="$4"
-	local ecroot="$5"
-	local pad="0"
-	local comp_type="lzma"
-
-	# The initial implementation of EC software sync in coreboot does
-	# not support decompression of the EC firmware images.  There is
-	# not enough CAR/SRAM space available to store the entire image
-	# decompressed, so it would have to be decompressed in a "streaming"
-	# fashion.  See crbug.com/1023830.
-	if [[ "${name}" != "pd" ]] && is_early_ec_sync_enabled "${coreboot_config}"; then
-		einfo "Adding uncompressed EC image"
-		comp_type="none"
-	fi
-
-	# When EFS is enabled, the payloads here may be resigned and enlarged so
-	# extra padding is needed.
-	if use depthcharge; then
-		is_ec_efs_enabled "${depthcharge_config}" && pad="128"
-	fi
-	einfo "Padding ${name}{ro,rw} ${pad} byte."
-
-	do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c "${comp_type}" \
-		-f "${ecroot}/ec.RW.bin" -n "${name}rw" -p "${pad}"
-	do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c none \
-		-f "${ecroot}/ec.RW.hash" -n "${name}rw.hash"
-
-	if ! use ec_ro_sync; then
-		einfo "Skip packing EC RO."
-	elif [[ -f "${ecroot}/ec.RO.bin" ]]; then
-		do_cbfstool "${rom}" add -r COREBOOT -t raw -c "${comp_type}" \
-			-f "${ecroot}/ec.RO.bin" -n "${name}ro" -p "${pad}"
-		do_cbfstool "${rom}" add -r COREBOOT -t raw -c none \
-			-f "${ecroot}/ec.RO.hash" -n "${name}ro.hash"
-	else
-		ewarn "Missing ${ecroot}/ec.RO.bin, skip packing EC RO."
-	fi
-
-	# Add EC version file for Wilco EC
-	if use wilco_ec; then
-		do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c none \
-			-f "${ecroot}/ec.RW.version" -n "${name}rw.version"
-	fi
-}
-
-# Add payloads and sign the image.
-# This takes the base image and creates a new signed one with the given
-# payloads added to it.
-# The image is placed in directory ${outdir} ("" for current directory).
-# An image suffix is added is ${suffix} is non-empty (e.g. "dev", "net").
-# Args:
-#   $1: Image type (e,g. "" for standard image, "dev" for dev image)
-#   $2: Source image to start from.
-#   $3: Payload to add to read-only image portion
-#   $4: Payload to add to read-write image portion
-build_image() {
-	local image_type=$1
-	local src_image=$2
-	local ro_payload=$3
-	local rw_payload=$4
-	local devkeys_dir="${BROOT}/usr/share/vboot/devkeys"
-
-	[ -n "${image_type}" ] && image_type=".${image_type}"
-	local dst_image="${outdir}image${suffix}${image_type}.bin"
-
-	einfo "Building image ${dst_image}"
-	cp ${src_image} ${dst_image}
-	add_payloads ${dst_image} ${ro_payload} ${rw_payload}
-	sign_image ${dst_image} "${devkeys_dir}"
-}
-
-# Hash the payload of an altfw alternative bootloader
-# Loads the payload from $rom on RW_LEGACY under:
-#   altfw/<name>
-# Stores the hash into $rom on RW-A and RW-B as:
-#   altfw/<name>.sha256
-# Args:
-#   $1: rom file where the payload can be found
-#   $2: name of the alternative bootloader
-hash_altfw_payload() {
-	local rom="$1"
-	local name="$2"
-	local payload_file="altfw/${name}"
-	local hash_file="${payload_file}.sha256"
-	local tmpfile="$(mktemp)"
-	local tmphash="$(mktemp)"
-	local rom
-
-	einfo "  Hashing ${payload_file}"
-
-	# Grab the raw uncompressed payload (-U) and hash it into $tmphash.
-	do_cbfstool "${rom}" extract -r RW_LEGACY -n "${payload_file}" \
-		-f "${tmpfile}" -U >/dev/null
-	openssl dgst -sha256 -binary "${tmpfile}" > "${tmphash}"
-
-	# Copy $tmphash into RW-A and RW-B.
-	do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B \
-		-f "${tmphash}" -n "${hash_file}" -t raw
-}
-
-# Set up alternative bootloaders
-#
-# This creates a new CBFS in the RW_LEGACY area and puts bootloaders into it,
-# based on USE flags. A list is written to an "altfw/list" file so that there
-# is a record of what is available.
-# Args:
-#   $1: coreboot build target to use for prefix on target-specific payloads
-#   $2: coreboot file to add alternative bootloaders to
-setup_altfw() {
-	local target="$1"
-	local rom="$2"
-	local bl_list="${T}/altfw"
-	local have_default
-
-	einfo "Adding alternative firmware"
-
-	# Add master header to the RW_LEGACY section
-	printf "ptr_" > "${T}/ptr"
-	do_cbfstool "${rom}" add -r RW_LEGACY -f "${T}/ptr" -n "header pointer" \
-		-t "cbfs header" -b -4
-	do_cbfstool "${rom}" add-master-header -r RW_LEGACY
-	rm "${T}/ptr"
-	> "${bl_list}"
-
-	# Add U-Boot if enabled
-	if use u-boot; then
-		einfo "- Adding U-Boot"
-
-		do_cbfstool "${rom}" add-flat-binary -r RW_LEGACY -n altfw/u-boot \
-			-c lzma -l 0x1110000 -e 0x1110000 \
-			-f "${CROS_FIRMWARE_ROOT}/u-boot.bin"
-		hash_altfw_payload "${rom}" u-boot
-		echo "1;altfw/u-boot;U-Boot;U-Boot bootloader" >> "${bl_list}"
-	fi
-
-	# Add TianoCore if enabled
-	if use tianocore; then
-		einfo "- Adding TianoCore"
-
-		# Some boards only have 1MB of RW_LEGACY space but UEFI is over
-		# 800KB. Allow this to fail, in which case we just don't add it.
-		if cbfstool "${rom}" add-payload -r RW_LEGACY \
-				-n altfw/tianocore -c lzma -f \
-				"${CROS_FIRMWARE_ROOT}/tianocore/UEFIPAYLOAD.fd"; then
-			hash_altfw_payload "${rom}" tianocore
-			echo "2;altfw/tianocore;TianoCore;TianoCore bootloader" \
-				>> "${bl_list}"
-
-			# For now, use TianoCore as the default.
-			echo "0;altfw/tianocore;TianoCore;TianoCore bootloader" \
-				>> "${bl_list}"
-			have_default=y
-			einfo "  (sing TianoCore as default)"
-		else
-			ewarn "Not enough space for TianoCore: omitted"
-		fi
-	fi
-
-	# Add SeaBIOS if enabled
-	if use seabios; then
-		local root="${CROS_FIRMWARE_ROOT}/seabios/"
-		einfo "- Adding SeaBIOS"
-
-		do_cbfstool "${rom}" add-payload -r RW_LEGACY -n altfw/seabios -c lzma \
-			-f "${root}/seabios.elf"
-		hash_altfw_payload "${rom}" seabios
-		for f in "${root}oprom/"*; do
-			if [[ -f "${f}" ]]; then
-				do_cbfstool "${rom}" add -r RW_LEGACY -f "${f}" \
-					-n "${f#${root}oprom/}" -t optionrom
-			fi
-		done
-		for f in "${root}cbfs/"*; do
-			if [[ -f "${f}" ]]; then
-				do_cbfstool "${rom}" add -r RW_LEGACY -f "${f}" \
-					-n "${f#${root}cbfs/}" -t raw
-			fi
-		done
-		for f in "${root}"etc/*; do
-			do_cbfstool "${rom}" add -r RW_LEGACY -f "${f}" \
-				-n "${f#$root}" -t raw
-		done
-		echo "3;altfw/seabios;SeaBIOS;SeaBIOS bootloader" \
-			>> "${bl_list}"
-	fi
-
-	# Add Diagnostic Payload if enabled
-	if use diag_payload; then
-		einfo "- Adding Diagnostic Payload"
-
-		do_cbfstool "${rom}" add-payload -r RW_LEGACY -n altfw/diag -c lzma -f \
-			"${CROS_FIRMWARE_ROOT}/diag_payload/${target}-diag.bin"
-		hash_altfw_payload "${rom}" diag
-		echo "5;altfw/diag;Diagnostics;System Diagnostics" \
-			>> "${bl_list}"
-
-		# Use Diag as the default if tianocore is not enabled
-		if [[ -z "${have_default}" ]]; then
-			echo "0;altfw/diag;Diagnostics;System Diagnostics" \
-				>> "${bl_list}"
-			have_default=y
-			einfo "  (using Diagnostics as default)"
-		fi
-	fi
-
-	# Add the list
-	einfo "- adding firmware list"
-	do_cbfstool "${rom}" add -r RW_LEGACY -n altfw/list -t raw -f "${bl_list}"
-
-	# Add the tag for silent updating.
-	do_cbfstool "${rom}" add-int -r RW_LEGACY -i 1 -n "cros_allow_auto_update"
-
-	# TODO(kitching): Get hash and sign.
-}
-
-# Check whether assets will fit in the image.
-#
-# Estimate the total size of compressed assets, uncompressed assets, and the
-# compressed payload.  Warn when the size exceeds free space available in
-# RO or RW CBFS regions.  Note that this is purely informational and doesn't
-# actually trigger failure.
-#
-# Args:
-#   $1: Filename of image to add to (use serial image for best coverage)
-#   $2: Payload to add to both RO and RW regions
-check_assets() {
-	local rom="$1"
-	local payload="$2"
-
-	# The objcopy architecture doesn't really need to match, it just needs any ELF.
-	local payload_size=$(objcopy -I elf32-i386 -O binary "${payload}" /proc/self/fd/1 2>/dev/null | xz -9 -c | wc -c)
-
-	local rw_assets_size=$(find compressed-assets-rw "compressed-assets-rw/${build_name}" "raw-assets-rw/${build_name}" -maxdepth 1 -type f -print0 | du --files0-from=- -bc | tail -n1 | cut -f1)
-	local rw_override_assets_size=$(find compressed-assets-rw-override "compressed-assets-rw-override/${build_name}" -maxdepth 1 -type f -print0 | du --files0-from=- -bc | tail -n1 | cut -f1)
-	local rw_size=$((rw_assets_size + rw_override_assets_size + payload_size))
-	local rw_free=$(($(do_cbfstool "${rom}" print -r FW_MAIN_A | awk '$1 ~ /empty/ {s+=$4} END {print s}') - payload_size))
-
-	# Most RW assets are also added to RO region.
-	local ro_assets_size=$(find compressed-assets-ro "compressed-assets-ro/${build_name}" -maxdepth 1 -type f -print0 | du --files0-from=- -bc | tail -n1 | cut -f1)
-	local ro_size=$((ro_assets_size + rw_assets_size + payload_size))
-	local ro_free=$(($(do_cbfstool "${rom}" print -r COREBOOT | awk '$1 ~ /empty/ {s+=$4} END {print s}') - payload_size))
-
-	einfo "assets (RO): $((ro_size / 1024)) KiB ($((ro_free / 1024)) KiB free) ${build_name}"
-	[[ ${ro_size} -gt ${ro_free} ]] &&
-		ewarn "WARNING: RO estimated $(((ro_size - ro_free) / 1024)) KiB over limit ${build_name}"
-
-	einfo "assets (RW): $((rw_size / 1024)) KiB ($((rw_free / 1024)) KiB free) ${build_name}"
-	[[ ${rw_size} -gt ${rw_free} ]] &&
-		ewarn "WARNING: RW estimated $(((rw_size - rw_free) / 1024)) KiB over limit ${build_name}"
-}
-
-# Add compressed assets, both common and target, to CBFS using cbfstool
-# Args:
-#  $1: Path where the compressed assets are present.
-#  $2: CBFS Regions to add the compressed assets to.
-add_compressed_assets() {
-	local asset_path="$1"
-	local cbfs_regions="$2"
-	local build_name="$3"
-
-	while IFS= read -r -d '' file; do
-		do_cbfstool "${rom}" add -r "${cbfs_regions}" -f "${file}" \
-			-n "$(basename "${file}")" -t raw -c precompression
-	done < <(find "${asset_path}" -maxdepth 1 -type f -print0)
-
-	# Pre uni-builds have build_name not set. So check to avoid adding
-	# duplicate assets.
-	if [ -n "${build_name}" ]; then
-		while IFS= read -r -d '' file; do
-			do_cbfstool "${rom}" add -r "${cbfs_regions}" -f "${file}" \
-				-n "$(basename "${file}")" -t raw -c precompression
-		done < <(find "${asset_path}/${build_name}" -maxdepth 1 -type f -print0)
-	fi
-}
-
-# Add Chrome OS assets to the base and serial images:
-#       compressed-assets-ro/*
-#         - fonts, images and screens for recovery mode, originally from
-#           cbfs-ro-compress/*; pre-compressed in src_compile()
-#       compressed-assets-rw/*
-#         - files originally from cbfs-rw-compress/*; pre-compressed
-#           in src_compile(); used for vbt*.bin
-#       compressed-assets-rw-override/*
-#         - updated images for screens, originally from
-#           cbfs-rw-compress-override/*; pre-compressed in src_compile(); used
-#           for rw_locale*.bin
-#       raw-assets-rw/*
-#         - files originally from cbfs-rw-raw/*, used for extra wifi_sar files
-#
-# Args:
-#  $1: Filename of image to add to
-add_assets() {
-	local rom="$1"
-
-	add_compressed_assets "compressed-assets-ro" "COREBOOT" "${build_name}"
-	add_compressed_assets "compressed-assets-rw" \
-				"COREBOOT,FW_MAIN_A,FW_MAIN_B" "${build_name}"
-	add_compressed_assets "compressed-assets-rw-override" \
-				"FW_MAIN_A,FW_MAIN_B" "${build_name}"
-
-	while IFS= read -r -d '' file; do
-		do_cbfstool "${rom}" add -r COREBOOT,FW_MAIN_A,FW_MAIN_B \
-			-f "${file}" -n "$(basename "${file}")" -t raw
-	done < <(find "raw-assets-rw/${build_name}" -type f -print0)
-}
-
-# Compress static and firmware target specific assets:
-#       compressed-assets-ro/*
-#         - fonts, images and screens for recovery mode, originally from
-#           cbfs-ro-compress/*; pre-compressed in src_compile()
-#       compressed-assets-rw/*
-#         - files originally from cbfs-rw-compress/*; pre-compressed
-#           in src_compile(); used for vbt*.bin
-#       compressed-assets-rw-override/*
-#         - updated images for screens, originally from
-#           cbfs-rw-compress-override/*; pre-compressed in src_compile(); used
-#           for rw_locale*.bin
-# Args:
-#  $1: Root path for the firmware build
-#  $2: Firmware target where the uncompressed assets are present. When nothing
-#      is passed, then static assets are being compressed.
-compress_assets() {
-	local froot="$1"
-	local build_name="$2"
-
-	# files from cbfs-ro-compress/ are installed in
-	# all images' RO CBFS, compressed
-	mkdir -p compressed-assets-ro/"${build_name}"
-	find "${froot}"/cbfs-ro-compress/"${build_name}" -mindepth 1 -maxdepth 1 \
-		-type f -printf "%P\0" 2>/dev/null | \
-		xargs -0 -n 1 -P "$(nproc)" -I '{}' \
-		cbfs-compression-tool compress \
-			"${froot}"/cbfs-ro-compress/"${build_name}"/'{}' \
-			compressed-assets-ro/"${build_name}"/'{}' LZMA
-
-	# files from cbfs-rw-compress/ are installed in
-	# all images' RO/RW CBFS, compressed
-	mkdir -p compressed-assets-rw/"${build_name}"
-	find "${froot}"/cbfs-rw-compress/"${build_name}" -mindepth 1 -maxdepth 1 \
-		-type f -printf "%P\0" 2>/dev/null | \
-		xargs -0 -n 1 -P "$(nproc)" -I '{}' \
-		cbfs-compression-tool compress \
-			"${froot}"/cbfs-rw-compress/"${build_name}"/'{}' \
-			compressed-assets-rw/"${build_name}"/'{}' LZMA
-
-	# files from cbfs-rw-compress-override/ are installed in
-	# all images' RW CBFS, compressed
-	mkdir -p compressed-assets-rw-override/"${build_name}"
-	find "${froot}"/cbfs-rw-compress-override/"${build_name}" -mindepth 1 \
-		-maxdepth 1 -type f -printf "%P\0" 2>/dev/null | \
-		xargs -0 -n 1 -P "$(nproc)" -I '{}' \
-		cbfs-compression-tool compress \
-			"${froot}"/cbfs-rw-compress-override/"${build_name}"/'{}' \
-			compressed-assets-rw-override/"${build_name}"/'{}' LZMA
-}
-
-# Build firmware images for a given board
-# Creates image*.bin for the following images:
-#    image.bin          - production image (no serial console)
-#    image.serial.bin   - production image with serial console enabled
-#    image.dev.bin      - developer image with serial console enabled
-#    image.net.bin      - netboot image with serial console enabled
-#
-# If $2 is set, then it uses "image-$2" instead of "image" and puts images in
-# the $2 subdirectory.
-#
-# If outdir
-# Args:
-#   $1: Directory containing the input files:
-#       coreboot.rom             - coreboot ROM image containing various pieces
-#       coreboot.rom.serial      - same, but with serial console enabled
-#       depthcharge/depthcharge.elf - depthcharge ELF payload
-#       depthcharge/dev.elf      - developer version of depthcharge
-#       depthcharge/netboot.elf  - netboot version of depthcharge
-#       depthcharge/depthcharge.config - configuration used to build depthcharge image
-#       (plus files mentioned above in add_assets)
-#   $2: Name to use when naming output files (see note above, can be empty)
-#
-#   $3: Name of target to build for coreboot (can be empty)
-#
-#   $4: Name of target to build for depthcharge (can be empty)
-#
-#   $5: Name of target to build for ec (can be empty)
-build_images() {
-	local froot="$1"
-	local build_name="$2"
-	local coreboot_build_target="$3"
-	local depthcharge_build_target="$4"
-	local ec_build_target="$5"
-	local outdir
-	local suffix
-	local file
-	local rom
-
-	local coreboot_orig
-	local depthcharge_prefix
-	local coreboot_config
-
-	if [ -n "${build_name}" ]; then
-		einfo "Building firmware images for ${build_name}"
-		outdir="${build_name}/"
-		mkdir "${outdir}"
-		suffix="-${build_name}"
-		coreboot_orig="${froot}/${coreboot_build_target}/coreboot.rom"
-		coreboot_config="${froot}/${coreboot_build_target}/coreboot.config"
-		depthcharge_prefix="${froot}/${depthcharge_build_target}/depthcharge"
-	else
-		coreboot_orig="${froot}/coreboot.rom"
-		coreboot_config="${froot}/coreboot.config"
-		depthcharge_prefix="${froot}/depthcharge"
-	fi
-
-	local coreboot_file="coreboot.rom"
-	cp "${coreboot_orig}" "${coreboot_file}"
-	cp "${coreboot_orig}.serial" "${coreboot_file}.serial"
-
-	local depthcharge
-	local depthcharge_dev
-	local netboot
-	local depthcharge_config
-
-	if use depthcharge; then
-		depthcharge="${depthcharge_prefix}/depthcharge.elf"
-		depthcharge_dev="${depthcharge_prefix}/dev.elf"
-		netboot="${depthcharge_prefix}/netboot.elf"
-		depthcharge_config="${depthcharge_prefix}/depthcharge.config"
-	fi
-
-	if [[ -d ${froot}/cbfs ]]; then
-		die "something is still using ${froot}/cbfs, which is deprecated."
-	fi
-
-	if use cros_ec || use wilco_ec; then
-		if use unibuild; then
-			einfo "Adding EC for ${ec_build_target}"
-			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}" "ec" "${froot}/${ec_build_target}"
-			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}.serial" "ec" "${froot}/${ec_build_target}"
-		else
-			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}" "ec" "${froot}"
-			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}.serial" "ec" "${froot}"
-		fi
-	fi
-
-	local pd_folder="${froot}/"
-	if use unibuild; then
-		pd_folder+="${ec_build_target}_pd"
-	else
-		# For non-unibuild boards this must match PD_FIRMWARE in board
-		# overlay make.defaults.
-		pd_folder+="${PD_FIRMWARE:-$(basename "${ROOT}")_pd}"
-	fi
-
-	if use pd_sync; then
-		add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}" "pd" "${pd_folder}"
-		add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}.serial" "pd" "${pd_folder}"
-	fi
-
-	setup_altfw "${coreboot_build_target}" "${coreboot_file}"
-	setup_altfw "${coreboot_build_target}" "${coreboot_file}.serial"
-
-	check_assets "${coreboot_file}.serial" "${depthcharge_dev}"
-	add_assets "${coreboot_file}"
-	add_assets "${coreboot_file}.serial"
-
-	build_image "" "${coreboot_file}" "${depthcharge}" "${depthcharge}"
-
-	build_image serial "${coreboot_file}.serial" \
-		"${depthcharge}" "${depthcharge}"
-
-	build_image dev "${coreboot_file}.serial" \
-		"${depthcharge_dev}" "${depthcharge_dev}"
-
-	# Build a netboot image.
-	#
-	# The readonly payload is usually depthcharge and the read/write
-	# payload is usually netboot. This way the netboot image can be used
-	# to boot from USB through recovery mode if necessary.
-	build_image net "${coreboot_file}.serial" "${depthcharge}" "${netboot}"
-
-	# Set convenient netboot parameter defaults for developers.
-	local name="${build_name:-"${BOARD_USE}"}"
-	local bootfile="${PORTAGE_USERNAME}/${name}/vmlinuz"
-	local argsfile="${PORTAGE_USERNAME}/${name}/cmdline"
-	netboot_firmware_settings.py \
-		-i "${outdir}image${suffix}.net.bin" \
-		--bootfile="${bootfile}" --argsfile="${argsfile}" &&
-		netboot_firmware_settings.py \
-			-i "${outdir}image${suffix}.dev.bin" \
-			--bootfile="${bootfile}" --argsfile="${argsfile}" ||
-		die "failed to preset netboot parameter defaults."
-	einfo "Netboot configured to boot ${bootfile}, fetch kernel command" \
-		"line from ${argsfile}, and use the DHCP-provided TFTP server IP."
-}
-
-src_compile() {
-	local froot="${CROS_FIRMWARE_ROOT}"
-	einfo "Copying static rw assets"
-
-	if [[ -d "${froot}"/cbfs-rw-raw ]]; then
-		mkdir raw-assets-rw
-		cp -R "${froot}"/cbfs-rw-raw/* raw-assets-rw/ ||
-			die "unable to copy files cbfw-rw-raw files"
-	fi
-
-	einfo "Compressing static assets"
-
-	if [[ -d ${froot}/rocbfs ]]; then
-		die "something is still using ${froot}/rocbfs, which is deprecated."
-	fi
-
-	compress_assets "${froot}"
-
-	if use unibuild; then
-		local fields="coreboot,depthcharge,ec"
-		local cmd="get-firmware-build-combinations"
-		(cros_config_host "${cmd}" "${fields}" || die) |
-		while read -r name; do
-			read -r coreboot
-			read -r depthcharge
-			read -r ec
-			einfo "Compressing target assets for: ${name}"
-			compress_assets "${froot}" "${name}"
-			einfo "Building image for: ${name}"
-			build_images ${froot} ${name} ${coreboot} ${depthcharge} ${ec}
-		done
-	else
-		build_images "${froot}" "" "" "" ""
-	fi
-}
-
-src_install() {
-	insinto "${CROS_FIRMWARE_IMAGE_DIR}"
-	if use unibuild; then
-		local fields="coreboot,depthcharge"
-		local cmd="get-firmware-build-combinations"
-		(cros_config_host "${cmd}" "${fields}" || die) |
-		while read -r name; do
-			read -r coreboot
-			read -r depthcharge
-			doins "${name}"/image-${name}*.bin
-		done
-	else
-		doins image*.bin
-	fi
-}
diff --git a/sys-boot/chromeos-bootimage/chromeos-bootimage-0.0.4-r2.ebuild b/sys-boot/chromeos-bootimage/chromeos-bootimage-0.0.4-r2.ebuild
new file mode 100644
index 0000000..eec911e
--- /dev/null
+++ b/sys-boot/chromeos-bootimage/chromeos-bootimage-0.0.4-r2.ebuild
@@ -0,0 +1,701 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-debug cros-unibuild cros-workon
+
+DESCRIPTION="ChromeOS firmware image builder"
+HOMEPAGE="http://www.chromium.org"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="diag_payload seabios wilco_ec zephyr_ec"
+IUSE="${IUSE} fsp unibuild u-boot tianocore cros_ec pd_sync +bmpblk"
+
+# 'ec_ro_sync' can be a solution for devices that will fail to complete recovery
+# due to TCPC reset (crbug.com/782427#c4), but may not work for every devices
+# (crbug.com/1024401, and MT8183 family). Please double check before turning on
+# this option.
+IUSE="${IUSE} ec_ro_sync"
+IUSE="${IUSE} +depthcharge"
+
+BDEPEND="chromeos-base/vboot_reference"
+
+DEPEND="
+	sys-boot/coreboot:=
+	depthcharge? ( sys-boot/depthcharge:= )
+	bmpblk? ( sys-boot/chromeos-bmpblk:= )
+	tianocore? ( sys-boot/edk2:= )
+	seabios? ( sys-boot/chromeos-seabios:= )
+	unibuild? ( chromeos-base/chromeos-config:= )
+	u-boot? ( sys-boot/u-boot:= )
+	cros_ec? ( chromeos-base/chromeos-ec:= )
+	zephyr_ec? ( chromeos-base/chromeos-zephyr:= )
+	pd_sync? ( chromeos-base/chromeos-ec:= )
+	"
+
+# Directory where the generated files are looked for and placed.
+CROS_FIRMWARE_IMAGE_DIR="/firmware"
+CROS_FIRMWARE_ROOT="${SYSROOT}${CROS_FIRMWARE_IMAGE_DIR}"
+
+do_cbfstool() {
+	local output
+	einfo cbfstool "$@"
+	output=$(cbfstool "$@" 2>&1)
+	if [ $? != 0 ]; then
+		die "Failed cbfstool invocation: cbfstool $@\n${output}"
+	fi
+	printf "${output}"
+}
+
+sign_region() {
+	local fw_image=$1
+	local keydir=$2
+	local slot=$3
+
+	local tmpfile=`mktemp`
+	local cbfs=FW_MAIN_${slot}
+	local vblock=VBLOCK_${slot}
+
+	do_cbfstool ${fw_image} read -r ${cbfs} -f ${tmpfile}
+	local size=$(do_cbfstool ${fw_image} print -k -r ${cbfs} | \
+		tail -1 | \
+		sed "/(empty).*null/ s,^(empty)[[:space:]]\(0x[0-9a-f]*\)\tnull\t.*$,\1,")
+	size=$(printf "%d" ${size})
+
+	# If the last entry is called "(empty)" and of type "null", remove it from
+	# the section so it isn't part of the signed data, to improve boot speed
+	# if (as often happens) there's a large unused suffix.
+	if [ -n "${size}" ] && [ ${size} -gt 0 ]; then
+		head -c ${size} ${tmpfile} > ${tmpfile}.2
+		mv ${tmpfile}.2 ${tmpfile}
+		# Use 255 (aka 0xff) as the filler, this greatly reduces
+		# memory areas which need to be programmed for spi flash
+		# chips, because the erase value is 0xff.
+		do_cbfstool ${fw_image} write --force -u -i 255 \
+			-r ${cbfs} -f ${tmpfile}
+	fi
+
+	futility vbutil_firmware \
+		--vblock ${tmpfile}.out \
+		--keyblock ${keydir}/firmware.keyblock \
+		--signprivate ${keydir}/firmware_data_key.vbprivk \
+		--version 1 \
+		--fv ${tmpfile} \
+		--kernelkey ${keydir}/kernel_subkey.vbpubk \
+		--flags 0
+
+	do_cbfstool ${fw_image} write -u -i 255 -r ${vblock} -f ${tmpfile}.out
+
+	rm -f ${tmpfile} ${tmpfile}.out
+}
+
+sign_image() {
+	local fw_image=$1
+	local keydir=$2
+
+	sign_region "${fw_image}" "${keydir}" A
+	sign_region "${fw_image}" "${keydir}" B
+}
+
+add_payloads() {
+	local fw_image=$1
+	local ro_payload=$2
+	local rw_payload=$3
+
+	if [ -n "${ro_payload}" ]; then
+		do_cbfstool "${fw_image}" add-payload \
+			-f "${ro_payload}" -n fallback/payload -c lzma
+	fi
+
+	if [ -n "${rw_payload}" ]; then
+		do_cbfstool "${fw_image}" add-payload -f "${rw_payload}" \
+			-n fallback/payload -c lzma -r FW_MAIN_A,FW_MAIN_B
+	fi
+}
+
+# Returns true if EC supports EFS.
+is_ec_efs_enabled() {
+	local depthcharge_config="$1"
+
+	grep -q "^CONFIG_EC_EFS=y$" "${depthcharge_config}"
+}
+
+# Returns true if coreboot is set up to perform EC software sync
+is_early_ec_sync_enabled() {
+	local coreboot_config="$1"
+
+	grep -q "^CONFIG_VBOOT_EARLY_EC_SYNC=y$" "${coreboot_config}"
+}
+
+# Adds EC{ro,rw} images to CBFS
+add_ec() {
+	local depthcharge_config="$1"
+	local coreboot_config="$2"
+	local rom="$3"
+	local name="$4"
+	local ecroot="$5"
+	local pad="0"
+	local comp_type="lzma"
+
+	# The initial implementation of EC software sync in coreboot does
+	# not support decompression of the EC firmware images.  There is
+	# not enough CAR/SRAM space available to store the entire image
+	# decompressed, so it would have to be decompressed in a "streaming"
+	# fashion.  See crbug.com/1023830.
+	if [[ "${name}" != "pd" ]] && is_early_ec_sync_enabled "${coreboot_config}"; then
+		einfo "Adding uncompressed EC image"
+		comp_type="none"
+	fi
+
+	# When EFS is enabled, the payloads here may be resigned and enlarged so
+	# extra padding is needed.
+	if use depthcharge; then
+		is_ec_efs_enabled "${depthcharge_config}" && pad="128"
+	fi
+	einfo "Padding ${name}{ro,rw} ${pad} byte."
+
+	local rw_file="${ecroot}/ec.RW.bin"
+	# TODO(jrosenth): can we do this for all EC's (not just Zephyr)?
+	if use zephyr_ec; then
+		( cd "${T}" && dump_fmap -x "${ecroot}/zephyr.bin" RW_FW ) || \
+			die "Unable to extract RW region from FMAP"
+		rw_file="${T}/RW_FW"
+	fi
+	openssl dgst -sha256 -binary "${rw_file}" > "${T}/ecrw.hash" || \
+		die "Unable to compute RW hash"
+
+	do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c "${comp_type}" \
+		-f "${rw_file}" -n "${name}rw" -p "${pad}"
+	do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c none \
+		-f "${T}/ecrw.hash" -n "${name}rw.hash"
+
+	if ! use ec_ro_sync; then
+		einfo "Skip packing EC RO."
+	elif [[ -f "${ecroot}/ec.RO.bin" ]]; then
+		do_cbfstool "${rom}" add -r COREBOOT -t raw -c "${comp_type}" \
+			-f "${ecroot}/ec.RO.bin" -n "${name}ro" -p "${pad}"
+		do_cbfstool "${rom}" add -r COREBOOT -t raw -c none \
+			-f "${ecroot}/ec.RO.hash" -n "${name}ro.hash"
+	else
+		ewarn "Missing ${ecroot}/ec.RO.bin, skip packing EC RO."
+	fi
+
+	# Add EC version file for Wilco EC
+	if use wilco_ec; then
+		do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c none \
+			-f "${ecroot}/ec.RW.version" -n "${name}rw.version"
+	fi
+}
+
+# Add payloads and sign the image.
+# This takes the base image and creates a new signed one with the given
+# payloads added to it.
+# The image is placed in directory ${outdir} ("" for current directory).
+# An image suffix is added is ${suffix} is non-empty (e.g. "dev", "net").
+# Args:
+#   $1: Image type (e,g. "" for standard image, "dev" for dev image)
+#   $2: Source image to start from.
+#   $3: Payload to add to read-only image portion
+#   $4: Payload to add to read-write image portion
+build_image() {
+	local image_type=$1
+	local src_image=$2
+	local ro_payload=$3
+	local rw_payload=$4
+	local devkeys_dir="${BROOT}/usr/share/vboot/devkeys"
+
+	[ -n "${image_type}" ] && image_type=".${image_type}"
+	local dst_image="${outdir}image${suffix}${image_type}.bin"
+
+	einfo "Building image ${dst_image}"
+	cp ${src_image} ${dst_image}
+	add_payloads ${dst_image} ${ro_payload} ${rw_payload}
+	sign_image ${dst_image} "${devkeys_dir}"
+}
+
+# Hash the payload of an altfw alternative bootloader
+# Loads the payload from $rom on RW_LEGACY under:
+#   altfw/<name>
+# Stores the hash into $rom on RW-A and RW-B as:
+#   altfw/<name>.sha256
+# Args:
+#   $1: rom file where the payload can be found
+#   $2: name of the alternative bootloader
+hash_altfw_payload() {
+	local rom="$1"
+	local name="$2"
+	local payload_file="altfw/${name}"
+	local hash_file="${payload_file}.sha256"
+	local tmpfile="$(mktemp)"
+	local tmphash="$(mktemp)"
+	local rom
+
+	einfo "  Hashing ${payload_file}"
+
+	# Grab the raw uncompressed payload (-U) and hash it into $tmphash.
+	do_cbfstool "${rom}" extract -r RW_LEGACY -n "${payload_file}" \
+		-f "${tmpfile}" -U >/dev/null
+	openssl dgst -sha256 -binary "${tmpfile}" > "${tmphash}"
+
+	# Copy $tmphash into RW-A and RW-B.
+	do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B \
+		-f "${tmphash}" -n "${hash_file}" -t raw
+}
+
+# Set up alternative bootloaders
+#
+# This creates a new CBFS in the RW_LEGACY area and puts bootloaders into it,
+# based on USE flags. A list is written to an "altfw/list" file so that there
+# is a record of what is available.
+# Args:
+#   $1: coreboot build target to use for prefix on target-specific payloads
+#   $2: coreboot file to add alternative bootloaders to
+setup_altfw() {
+	local target="$1"
+	local rom="$2"
+	local bl_list="${T}/altfw"
+	local have_default
+
+	einfo "Adding alternative firmware"
+
+	# Add master header to the RW_LEGACY section
+	printf "ptr_" > "${T}/ptr"
+	do_cbfstool "${rom}" add -r RW_LEGACY -f "${T}/ptr" -n "header pointer" \
+		-t "cbfs header" -b -4
+	do_cbfstool "${rom}" add-master-header -r RW_LEGACY
+	rm "${T}/ptr"
+	> "${bl_list}"
+
+	# Add U-Boot if enabled
+	if use u-boot; then
+		einfo "- Adding U-Boot"
+
+		do_cbfstool "${rom}" add-flat-binary -r RW_LEGACY -n altfw/u-boot \
+			-c lzma -l 0x1110000 -e 0x1110000 \
+			-f "${CROS_FIRMWARE_ROOT}/u-boot.bin"
+		hash_altfw_payload "${rom}" u-boot
+		echo "1;altfw/u-boot;U-Boot;U-Boot bootloader" >> "${bl_list}"
+	fi
+
+	# Add TianoCore if enabled
+	if use tianocore; then
+		einfo "- Adding TianoCore"
+
+		# Some boards only have 1MB of RW_LEGACY space but UEFI is over
+		# 800KB. Allow this to fail, in which case we just don't add it.
+		if cbfstool "${rom}" add-payload -r RW_LEGACY \
+				-n altfw/tianocore -c lzma -f \
+				"${CROS_FIRMWARE_ROOT}/tianocore/UEFIPAYLOAD.fd"; then
+			hash_altfw_payload "${rom}" tianocore
+			echo "2;altfw/tianocore;TianoCore;TianoCore bootloader" \
+				>> "${bl_list}"
+
+			# For now, use TianoCore as the default.
+			echo "0;altfw/tianocore;TianoCore;TianoCore bootloader" \
+				>> "${bl_list}"
+			have_default=y
+			einfo "  (sing TianoCore as default)"
+		else
+			ewarn "Not enough space for TianoCore: omitted"
+		fi
+	fi
+
+	# Add SeaBIOS if enabled
+	if use seabios; then
+		local root="${CROS_FIRMWARE_ROOT}/seabios/"
+		einfo "- Adding SeaBIOS"
+
+		do_cbfstool "${rom}" add-payload -r RW_LEGACY -n altfw/seabios -c lzma \
+			-f "${root}/seabios.elf"
+		hash_altfw_payload "${rom}" seabios
+		for f in "${root}oprom/"*; do
+			if [[ -f "${f}" ]]; then
+				do_cbfstool "${rom}" add -r RW_LEGACY -f "${f}" \
+					-n "${f#${root}oprom/}" -t optionrom
+			fi
+		done
+		for f in "${root}cbfs/"*; do
+			if [[ -f "${f}" ]]; then
+				do_cbfstool "${rom}" add -r RW_LEGACY -f "${f}" \
+					-n "${f#${root}cbfs/}" -t raw
+			fi
+		done
+		for f in "${root}"etc/*; do
+			do_cbfstool "${rom}" add -r RW_LEGACY -f "${f}" \
+				-n "${f#$root}" -t raw
+		done
+		echo "3;altfw/seabios;SeaBIOS;SeaBIOS bootloader" \
+			>> "${bl_list}"
+	fi
+
+	# Add Diagnostic Payload if enabled
+	if use diag_payload; then
+		einfo "- Adding Diagnostic Payload"
+
+		do_cbfstool "${rom}" add-payload -r RW_LEGACY -n altfw/diag -c lzma -f \
+			"${CROS_FIRMWARE_ROOT}/diag_payload/${target}-diag.bin"
+		hash_altfw_payload "${rom}" diag
+		echo "5;altfw/diag;Diagnostics;System Diagnostics" \
+			>> "${bl_list}"
+
+		# Use Diag as the default if tianocore is not enabled
+		if [[ -z "${have_default}" ]]; then
+			echo "0;altfw/diag;Diagnostics;System Diagnostics" \
+				>> "${bl_list}"
+			have_default=y
+			einfo "  (using Diagnostics as default)"
+		fi
+	fi
+
+	# Add the list
+	einfo "- adding firmware list"
+	do_cbfstool "${rom}" add -r RW_LEGACY -n altfw/list -t raw -f "${bl_list}"
+
+	# Add the tag for silent updating.
+	do_cbfstool "${rom}" add-int -r RW_LEGACY -i 1 -n "cros_allow_auto_update"
+
+	# TODO(kitching): Get hash and sign.
+}
+
+# Check whether assets will fit in the image.
+#
+# Estimate the total size of compressed assets, uncompressed assets, and the
+# compressed payload.  Warn when the size exceeds free space available in
+# RO or RW CBFS regions.  Note that this is purely informational and doesn't
+# actually trigger failure.
+#
+# Args:
+#   $1: Filename of image to add to (use serial image for best coverage)
+#   $2: Payload to add to both RO and RW regions
+check_assets() {
+	local rom="$1"
+	local payload="$2"
+
+	# The objcopy architecture doesn't really need to match, it just needs any ELF.
+	local payload_size=$(objcopy -I elf32-i386 -O binary "${payload}" /proc/self/fd/1 2>/dev/null | xz -9 -c | wc -c)
+
+	local rw_assets_size=$(find compressed-assets-rw "compressed-assets-rw/${build_name}" "raw-assets-rw/${build_name}" -maxdepth 1 -type f -print0 | du --files0-from=- -bc | tail -n1 | cut -f1)
+	local rw_override_assets_size=$(find compressed-assets-rw-override "compressed-assets-rw-override/${build_name}" -maxdepth 1 -type f -print0 | du --files0-from=- -bc | tail -n1 | cut -f1)
+	local rw_size=$((rw_assets_size + rw_override_assets_size + payload_size))
+	local rw_free=$(($(do_cbfstool "${rom}" print -r FW_MAIN_A | awk '$1 ~ /empty/ {s+=$4} END {print s}') - payload_size))
+
+	# Most RW assets are also added to RO region.
+	local ro_assets_size=$(find compressed-assets-ro "compressed-assets-ro/${build_name}" -maxdepth 1 -type f -print0 | du --files0-from=- -bc | tail -n1 | cut -f1)
+	local ro_size=$((ro_assets_size + rw_assets_size + payload_size))
+	local ro_free=$(($(do_cbfstool "${rom}" print -r COREBOOT | awk '$1 ~ /empty/ {s+=$4} END {print s}') - payload_size))
+
+	einfo "assets (RO): $((ro_size / 1024)) KiB ($((ro_free / 1024)) KiB free) ${build_name}"
+	[[ ${ro_size} -gt ${ro_free} ]] &&
+		ewarn "WARNING: RO estimated $(((ro_size - ro_free) / 1024)) KiB over limit ${build_name}"
+
+	einfo "assets (RW): $((rw_size / 1024)) KiB ($((rw_free / 1024)) KiB free) ${build_name}"
+	[[ ${rw_size} -gt ${rw_free} ]] &&
+		ewarn "WARNING: RW estimated $(((rw_size - rw_free) / 1024)) KiB over limit ${build_name}"
+}
+
+# Add compressed assets, both common and target, to CBFS using cbfstool
+# Args:
+#  $1: Path where the compressed assets are present.
+#  $2: CBFS Regions to add the compressed assets to.
+add_compressed_assets() {
+	local asset_path="$1"
+	local cbfs_regions="$2"
+	local build_name="$3"
+
+	while IFS= read -r -d '' file; do
+		do_cbfstool "${rom}" add -r "${cbfs_regions}" -f "${file}" \
+			-n "$(basename "${file}")" -t raw -c precompression
+	done < <(find "${asset_path}" -maxdepth 1 -type f -print0)
+
+	# Pre uni-builds have build_name not set. So check to avoid adding
+	# duplicate assets.
+	if [ -n "${build_name}" ]; then
+		while IFS= read -r -d '' file; do
+			do_cbfstool "${rom}" add -r "${cbfs_regions}" -f "${file}" \
+				-n "$(basename "${file}")" -t raw -c precompression
+		done < <(find "${asset_path}/${build_name}" -maxdepth 1 -type f -print0)
+	fi
+}
+
+# Add Chrome OS assets to the base and serial images:
+#       compressed-assets-ro/*
+#         - fonts, images and screens for recovery mode, originally from
+#           cbfs-ro-compress/*; pre-compressed in src_compile()
+#       compressed-assets-rw/*
+#         - files originally from cbfs-rw-compress/*; pre-compressed
+#           in src_compile(); used for vbt*.bin
+#       compressed-assets-rw-override/*
+#         - updated images for screens, originally from
+#           cbfs-rw-compress-override/*; pre-compressed in src_compile(); used
+#           for rw_locale*.bin
+#       raw-assets-rw/*
+#         - files originally from cbfs-rw-raw/*, used for extra wifi_sar files
+#
+# Args:
+#  $1: Filename of image to add to
+add_assets() {
+	local rom="$1"
+
+	add_compressed_assets "compressed-assets-ro" "COREBOOT" "${build_name}"
+	add_compressed_assets "compressed-assets-rw" \
+				"COREBOOT,FW_MAIN_A,FW_MAIN_B" "${build_name}"
+	add_compressed_assets "compressed-assets-rw-override" \
+				"FW_MAIN_A,FW_MAIN_B" "${build_name}"
+
+	while IFS= read -r -d '' file; do
+		do_cbfstool "${rom}" add -r COREBOOT,FW_MAIN_A,FW_MAIN_B \
+			-f "${file}" -n "$(basename "${file}")" -t raw
+	done < <(find "raw-assets-rw/${build_name}" -type f -print0)
+}
+
+# Compress static and firmware target specific assets:
+#       compressed-assets-ro/*
+#         - fonts, images and screens for recovery mode, originally from
+#           cbfs-ro-compress/*; pre-compressed in src_compile()
+#       compressed-assets-rw/*
+#         - files originally from cbfs-rw-compress/*; pre-compressed
+#           in src_compile(); used for vbt*.bin
+#       compressed-assets-rw-override/*
+#         - updated images for screens, originally from
+#           cbfs-rw-compress-override/*; pre-compressed in src_compile(); used
+#           for rw_locale*.bin
+# Args:
+#  $1: Root path for the firmware build
+#  $2: Firmware target where the uncompressed assets are present. When nothing
+#      is passed, then static assets are being compressed.
+compress_assets() {
+	local froot="$1"
+	local build_name="$2"
+
+	# files from cbfs-ro-compress/ are installed in
+	# all images' RO CBFS, compressed
+	mkdir -p compressed-assets-ro/"${build_name}"
+	find "${froot}"/cbfs-ro-compress/"${build_name}" -mindepth 1 -maxdepth 1 \
+		-type f -printf "%P\0" 2>/dev/null | \
+		xargs -0 -n 1 -P "$(nproc)" -I '{}' \
+		cbfs-compression-tool compress \
+			"${froot}"/cbfs-ro-compress/"${build_name}"/'{}' \
+			compressed-assets-ro/"${build_name}"/'{}' LZMA
+
+	# files from cbfs-rw-compress/ are installed in
+	# all images' RO/RW CBFS, compressed
+	mkdir -p compressed-assets-rw/"${build_name}"
+	find "${froot}"/cbfs-rw-compress/"${build_name}" -mindepth 1 -maxdepth 1 \
+		-type f -printf "%P\0" 2>/dev/null | \
+		xargs -0 -n 1 -P "$(nproc)" -I '{}' \
+		cbfs-compression-tool compress \
+			"${froot}"/cbfs-rw-compress/"${build_name}"/'{}' \
+			compressed-assets-rw/"${build_name}"/'{}' LZMA
+
+	# files from cbfs-rw-compress-override/ are installed in
+	# all images' RW CBFS, compressed
+	mkdir -p compressed-assets-rw-override/"${build_name}"
+	find "${froot}"/cbfs-rw-compress-override/"${build_name}" -mindepth 1 \
+		-maxdepth 1 -type f -printf "%P\0" 2>/dev/null | \
+		xargs -0 -n 1 -P "$(nproc)" -I '{}' \
+		cbfs-compression-tool compress \
+			"${froot}"/cbfs-rw-compress-override/"${build_name}"/'{}' \
+			compressed-assets-rw-override/"${build_name}"/'{}' LZMA
+}
+
+# Build firmware images for a given board
+# Creates image*.bin for the following images:
+#    image.bin          - production image (no serial console)
+#    image.serial.bin   - production image with serial console enabled
+#    image.dev.bin      - developer image with serial console enabled
+#    image.net.bin      - netboot image with serial console enabled
+#
+# If $2 is set, then it uses "image-$2" instead of "image" and puts images in
+# the $2 subdirectory.
+#
+# If outdir
+# Args:
+#   $1: Directory containing the input files:
+#       coreboot.rom             - coreboot ROM image containing various pieces
+#       coreboot.rom.serial      - same, but with serial console enabled
+#       depthcharge/depthcharge.elf - depthcharge ELF payload
+#       depthcharge/dev.elf      - developer version of depthcharge
+#       depthcharge/netboot.elf  - netboot version of depthcharge
+#       depthcharge/depthcharge.config - configuration used to build depthcharge image
+#       (plus files mentioned above in add_assets)
+#   $2: Name to use when naming output files (see note above, can be empty)
+#
+#   $3: Name of target to build for coreboot (can be empty)
+#
+#   $4: Name of target to build for depthcharge (can be empty)
+#
+#   $5: Name of target to build for ec (can be empty)
+build_images() {
+	local froot="$1"
+	local build_name="$2"
+	local coreboot_build_target="$3"
+	local depthcharge_build_target="$4"
+	local ec_build_target="$5"
+	local outdir
+	local suffix
+	local file
+	local rom
+
+	local coreboot_orig
+	local depthcharge_prefix
+	local coreboot_config
+
+	if [ -n "${build_name}" ]; then
+		einfo "Building firmware images for ${build_name}"
+		outdir="${build_name}/"
+		mkdir "${outdir}"
+		suffix="-${build_name}"
+		coreboot_orig="${froot}/${coreboot_build_target}/coreboot.rom"
+		coreboot_config="${froot}/${coreboot_build_target}/coreboot.config"
+		depthcharge_prefix="${froot}/${depthcharge_build_target}/depthcharge"
+	else
+		coreboot_orig="${froot}/coreboot.rom"
+		coreboot_config="${froot}/coreboot.config"
+		depthcharge_prefix="${froot}/depthcharge"
+	fi
+
+	local coreboot_file="coreboot.rom"
+	cp "${coreboot_orig}" "${coreboot_file}"
+	cp "${coreboot_orig}.serial" "${coreboot_file}.serial"
+
+	local depthcharge
+	local depthcharge_dev
+	local netboot
+	local depthcharge_config
+
+	if use depthcharge; then
+		depthcharge="${depthcharge_prefix}/depthcharge.elf"
+		depthcharge_dev="${depthcharge_prefix}/dev.elf"
+		netboot="${depthcharge_prefix}/netboot.elf"
+		depthcharge_config="${depthcharge_prefix}/depthcharge.config"
+	fi
+
+	if [[ -d ${froot}/cbfs ]]; then
+		die "something is still using ${froot}/cbfs, which is deprecated."
+	fi
+
+	if use cros_ec || use wilco_ec || use zephyr_ec; then
+		if use unibuild; then
+			einfo "Adding EC for ${ec_build_target}"
+			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}" "ec" "${froot}/${ec_build_target}"
+			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}.serial" "ec" "${froot}/${ec_build_target}"
+		else
+			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}" "ec" "${froot}"
+			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}.serial" "ec" "${froot}"
+		fi
+	fi
+
+	local pd_folder="${froot}/"
+	if use unibuild; then
+		pd_folder+="${ec_build_target}_pd"
+	else
+		# For non-unibuild boards this must match PD_FIRMWARE in board
+		# overlay make.defaults.
+		pd_folder+="${PD_FIRMWARE:-$(basename "${ROOT}")_pd}"
+	fi
+
+	if use pd_sync; then
+		add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}" "pd" "${pd_folder}"
+		add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}.serial" "pd" "${pd_folder}"
+	fi
+
+	setup_altfw "${coreboot_build_target}" "${coreboot_file}"
+	setup_altfw "${coreboot_build_target}" "${coreboot_file}.serial"
+
+	check_assets "${coreboot_file}.serial" "${depthcharge_dev}"
+	add_assets "${coreboot_file}"
+	add_assets "${coreboot_file}.serial"
+
+	build_image "" "${coreboot_file}" "${depthcharge}" "${depthcharge}"
+
+	build_image serial "${coreboot_file}.serial" \
+		"${depthcharge}" "${depthcharge}"
+
+	build_image dev "${coreboot_file}.serial" \
+		"${depthcharge_dev}" "${depthcharge_dev}"
+
+	# Build a netboot image.
+	#
+	# The readonly payload is usually depthcharge and the read/write
+	# payload is usually netboot. This way the netboot image can be used
+	# to boot from USB through recovery mode if necessary.
+	build_image net "${coreboot_file}.serial" "${depthcharge}" "${netboot}"
+
+	# Set convenient netboot parameter defaults for developers.
+	local name="${build_name:-"${BOARD_USE}"}"
+	local bootfile="${PORTAGE_USERNAME}/${name}/vmlinuz"
+	local argsfile="${PORTAGE_USERNAME}/${name}/cmdline"
+	"${FILESDIR}/netboot_firmware_settings.py" \
+		-i "${outdir}image${suffix}.net.bin" \
+		--bootfile="${bootfile}" --argsfile="${argsfile}" &&
+		"${FILESDIR}/netboot_firmware_settings.py" \
+			-i "${outdir}image${suffix}.dev.bin" \
+			--bootfile="${bootfile}" --argsfile="${argsfile}" ||
+		die "failed to preset netboot parameter defaults."
+	einfo "Netboot configured to boot ${bootfile}, fetch kernel command" \
+		"line from ${argsfile}, and use the DHCP-provided TFTP server IP."
+}
+
+src_compile() {
+	local froot="${CROS_FIRMWARE_ROOT}"
+	einfo "Copying static rw assets"
+
+	if [[ -d "${froot}"/cbfs-rw-raw ]]; then
+		mkdir raw-assets-rw
+		cp -R "${froot}"/cbfs-rw-raw/* raw-assets-rw/ ||
+			die "unable to copy files cbfw-rw-raw files"
+	fi
+
+	einfo "Compressing static assets"
+
+	if [[ -d ${froot}/rocbfs ]]; then
+		die "something is still using ${froot}/rocbfs, which is deprecated."
+	fi
+
+	compress_assets "${froot}"
+
+	if use unibuild; then
+		local fields="coreboot,depthcharge,ec"
+		local cmd="get-firmware-build-combinations"
+		(cros_config_host "${cmd}" "${fields}" || die) |
+		while read -r name; do
+			read -r coreboot
+			read -r depthcharge
+			read -r ec
+			einfo "Compressing target assets for: ${name}"
+			compress_assets "${froot}" "${name}"
+			einfo "Building image for: ${name}"
+			if use zephyr_ec; then
+				# Zephyr installs under ${froot}/${name}/zephyr.bin,
+				# instead of using the EC build target name.
+				ec="${name}"
+			fi
+			build_images "${froot}" "${name}" "${coreboot}" "${depthcharge}" "${ec}"
+		done
+	else
+		build_images "${froot}" "" "" "" ""
+	fi
+}
+
+src_install() {
+	insinto "${CROS_FIRMWARE_IMAGE_DIR}"
+	if use unibuild; then
+		local fields="coreboot,depthcharge"
+		local cmd="get-firmware-build-combinations"
+		(cros_config_host "${cmd}" "${fields}" || die) |
+		while read -r name; do
+			read -r coreboot
+			read -r depthcharge
+			doins "${name}"/image-${name}*.bin
+		done
+	else
+		doins image*.bin
+	fi
+}
diff --git a/sys-boot/chromeos-bootimage/chromeos-bootimage-9999.ebuild b/sys-boot/chromeos-bootimage/chromeos-bootimage-9999.ebuild
new file mode 100644
index 0000000..7e13b0c
--- /dev/null
+++ b/sys-boot/chromeos-bootimage/chromeos-bootimage-9999.ebuild
@@ -0,0 +1,699 @@
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-debug cros-unibuild cros-workon
+
+DESCRIPTION="ChromeOS firmware image builder"
+HOMEPAGE="http://www.chromium.org"
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="~*"
+IUSE="diag_payload seabios wilco_ec zephyr_ec"
+IUSE="${IUSE} fsp unibuild u-boot tianocore cros_ec pd_sync +bmpblk"
+
+# 'ec_ro_sync' can be a solution for devices that will fail to complete recovery
+# due to TCPC reset (crbug.com/782427#c4), but may not work for every devices
+# (crbug.com/1024401, and MT8183 family). Please double check before turning on
+# this option.
+IUSE="${IUSE} ec_ro_sync"
+IUSE="${IUSE} +depthcharge"
+
+BDEPEND="chromeos-base/vboot_reference"
+
+DEPEND="
+	sys-boot/coreboot:=
+	depthcharge? ( sys-boot/depthcharge:= )
+	bmpblk? ( sys-boot/chromeos-bmpblk:= )
+	tianocore? ( sys-boot/edk2:= )
+	seabios? ( sys-boot/chromeos-seabios:= )
+	unibuild? ( chromeos-base/chromeos-config:= )
+	u-boot? ( sys-boot/u-boot:= )
+	cros_ec? ( chromeos-base/chromeos-ec:= )
+	zephyr_ec? ( chromeos-base/chromeos-zephyr:= )
+	pd_sync? ( chromeos-base/chromeos-ec:= )
+	"
+
+# Directory where the generated files are looked for and placed.
+CROS_FIRMWARE_IMAGE_DIR="/firmware"
+CROS_FIRMWARE_ROOT="${SYSROOT}${CROS_FIRMWARE_IMAGE_DIR}"
+
+do_cbfstool() {
+	local output
+	einfo cbfstool "$@"
+	output=$(cbfstool "$@" 2>&1)
+	if [ $? != 0 ]; then
+		die "Failed cbfstool invocation: cbfstool $@\n${output}"
+	fi
+	printf "${output}"
+}
+
+sign_region() {
+	local fw_image=$1
+	local keydir=$2
+	local slot=$3
+
+	local tmpfile=`mktemp`
+	local cbfs=FW_MAIN_${slot}
+	local vblock=VBLOCK_${slot}
+
+	do_cbfstool ${fw_image} read -r ${cbfs} -f ${tmpfile}
+	local size=$(do_cbfstool ${fw_image} print -k -r ${cbfs} | \
+		tail -1 | \
+		sed "/(empty).*null/ s,^(empty)[[:space:]]\(0x[0-9a-f]*\)\tnull\t.*$,\1,")
+	size=$(printf "%d" ${size})
+
+	# If the last entry is called "(empty)" and of type "null", remove it from
+	# the section so it isn't part of the signed data, to improve boot speed
+	# if (as often happens) there's a large unused suffix.
+	if [ -n "${size}" ] && [ ${size} -gt 0 ]; then
+		head -c ${size} ${tmpfile} > ${tmpfile}.2
+		mv ${tmpfile}.2 ${tmpfile}
+		# Use 255 (aka 0xff) as the filler, this greatly reduces
+		# memory areas which need to be programmed for spi flash
+		# chips, because the erase value is 0xff.
+		do_cbfstool ${fw_image} write --force -u -i 255 \
+			-r ${cbfs} -f ${tmpfile}
+	fi
+
+	futility vbutil_firmware \
+		--vblock ${tmpfile}.out \
+		--keyblock ${keydir}/firmware.keyblock \
+		--signprivate ${keydir}/firmware_data_key.vbprivk \
+		--version 1 \
+		--fv ${tmpfile} \
+		--kernelkey ${keydir}/kernel_subkey.vbpubk \
+		--flags 0
+
+	do_cbfstool ${fw_image} write -u -i 255 -r ${vblock} -f ${tmpfile}.out
+
+	rm -f ${tmpfile} ${tmpfile}.out
+}
+
+sign_image() {
+	local fw_image=$1
+	local keydir=$2
+
+	sign_region "${fw_image}" "${keydir}" A
+	sign_region "${fw_image}" "${keydir}" B
+}
+
+add_payloads() {
+	local fw_image=$1
+	local ro_payload=$2
+	local rw_payload=$3
+
+	if [ -n "${ro_payload}" ]; then
+		do_cbfstool "${fw_image}" add-payload \
+			-f "${ro_payload}" -n fallback/payload -c lzma
+	fi
+
+	if [ -n "${rw_payload}" ]; then
+		do_cbfstool "${fw_image}" add-payload -f "${rw_payload}" \
+			-n fallback/payload -c lzma -r FW_MAIN_A,FW_MAIN_B
+	fi
+}
+
+# Returns true if EC supports EFS.
+is_ec_efs_enabled() {
+	local depthcharge_config="$1"
+
+	grep -q "^CONFIG_EC_EFS=y$" "${depthcharge_config}"
+}
+
+# Returns true if coreboot is set up to perform EC software sync
+is_early_ec_sync_enabled() {
+	local coreboot_config="$1"
+
+	grep -q "^CONFIG_VBOOT_EARLY_EC_SYNC=y$" "${coreboot_config}"
+}
+
+# Adds EC{ro,rw} images to CBFS
+add_ec() {
+	local depthcharge_config="$1"
+	local coreboot_config="$2"
+	local rom="$3"
+	local name="$4"
+	local ecroot="$5"
+	local pad="0"
+	local comp_type="lzma"
+
+	# The initial implementation of EC software sync in coreboot does
+	# not support decompression of the EC firmware images.  There is
+	# not enough CAR/SRAM space available to store the entire image
+	# decompressed, so it would have to be decompressed in a "streaming"
+	# fashion.  See crbug.com/1023830.
+	if [[ "${name}" != "pd" ]] && is_early_ec_sync_enabled "${coreboot_config}"; then
+		einfo "Adding uncompressed EC image"
+		comp_type="none"
+	fi
+
+	# When EFS is enabled, the payloads here may be resigned and enlarged so
+	# extra padding is needed.
+	if use depthcharge; then
+		is_ec_efs_enabled "${depthcharge_config}" && pad="128"
+	fi
+	einfo "Padding ${name}{ro,rw} ${pad} byte."
+
+	local rw_file="${ecroot}/ec.RW.bin"
+	# TODO(jrosenth): can we do this for all EC's (not just Zephyr)?
+	if use zephyr_ec; then
+		( cd "${T}" && dump_fmap -x "${ecroot}/zephyr.bin" RW_FW ) || \
+			die "Unable to extract RW region from FMAP"
+		rw_file="${T}/RW_FW"
+	fi
+	openssl dgst -sha256 -binary "${rw_file}" > "${T}/ecrw.hash" || \
+		die "Unable to compute RW hash"
+
+	do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c "${comp_type}" \
+		-f "${rw_file}" -n "${name}rw" -p "${pad}"
+	do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c none \
+		-f "${T}/ecrw.hash" -n "${name}rw.hash"
+
+	if ! use ec_ro_sync; then
+		einfo "Skip packing EC RO."
+	elif [[ -f "${ecroot}/ec.RO.bin" ]]; then
+		do_cbfstool "${rom}" add -r COREBOOT -t raw -c "${comp_type}" \
+			-f "${ecroot}/ec.RO.bin" -n "${name}ro" -p "${pad}"
+		do_cbfstool "${rom}" add -r COREBOOT -t raw -c none \
+			-f "${ecroot}/ec.RO.hash" -n "${name}ro.hash"
+	else
+		ewarn "Missing ${ecroot}/ec.RO.bin, skip packing EC RO."
+	fi
+
+	# Add EC version file for Wilco EC
+	if use wilco_ec; then
+		do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c none \
+			-f "${ecroot}/ec.RW.version" -n "${name}rw.version"
+	fi
+}
+
+# Add payloads and sign the image.
+# This takes the base image and creates a new signed one with the given
+# payloads added to it.
+# The image is placed in directory ${outdir} ("" for current directory).
+# An image suffix is added is ${suffix} is non-empty (e.g. "dev", "net").
+# Args:
+#   $1: Image type (e,g. "" for standard image, "dev" for dev image)
+#   $2: Source image to start from.
+#   $3: Payload to add to read-only image portion
+#   $4: Payload to add to read-write image portion
+build_image() {
+	local image_type=$1
+	local src_image=$2
+	local ro_payload=$3
+	local rw_payload=$4
+	local devkeys_dir="${BROOT}/usr/share/vboot/devkeys"
+
+	[ -n "${image_type}" ] && image_type=".${image_type}"
+	local dst_image="${outdir}image${suffix}${image_type}.bin"
+
+	einfo "Building image ${dst_image}"
+	cp ${src_image} ${dst_image}
+	add_payloads ${dst_image} ${ro_payload} ${rw_payload}
+	sign_image ${dst_image} "${devkeys_dir}"
+}
+
+# Hash the payload of an altfw alternative bootloader
+# Loads the payload from $rom on RW_LEGACY under:
+#   altfw/<name>
+# Stores the hash into $rom on RW-A and RW-B as:
+#   altfw/<name>.sha256
+# Args:
+#   $1: rom file where the payload can be found
+#   $2: name of the alternative bootloader
+hash_altfw_payload() {
+	local rom="$1"
+	local name="$2"
+	local payload_file="altfw/${name}"
+	local hash_file="${payload_file}.sha256"
+	local tmpfile="$(mktemp)"
+	local tmphash="$(mktemp)"
+	local rom
+
+	einfo "  Hashing ${payload_file}"
+
+	# Grab the raw uncompressed payload (-U) and hash it into $tmphash.
+	do_cbfstool "${rom}" extract -r RW_LEGACY -n "${payload_file}" \
+		-f "${tmpfile}" -U >/dev/null
+	openssl dgst -sha256 -binary "${tmpfile}" > "${tmphash}"
+
+	# Copy $tmphash into RW-A and RW-B.
+	do_cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B \
+		-f "${tmphash}" -n "${hash_file}" -t raw
+}
+
+# Set up alternative bootloaders
+#
+# This creates a new CBFS in the RW_LEGACY area and puts bootloaders into it,
+# based on USE flags. A list is written to an "altfw/list" file so that there
+# is a record of what is available.
+# Args:
+#   $1: coreboot build target to use for prefix on target-specific payloads
+#   $2: coreboot file to add alternative bootloaders to
+setup_altfw() {
+	local target="$1"
+	local rom="$2"
+	local bl_list="${T}/altfw"
+	local have_default
+
+	einfo "Adding alternative firmware"
+
+	# Add master header to the RW_LEGACY section
+	printf "ptr_" > "${T}/ptr"
+	do_cbfstool "${rom}" add -r RW_LEGACY -f "${T}/ptr" -n "header pointer" \
+		-t "cbfs header" -b -4
+	do_cbfstool "${rom}" add-master-header -r RW_LEGACY
+	rm "${T}/ptr"
+	> "${bl_list}"
+
+	# Add U-Boot if enabled
+	if use u-boot; then
+		einfo "- Adding U-Boot"
+
+		do_cbfstool "${rom}" add-flat-binary -r RW_LEGACY -n altfw/u-boot \
+			-c lzma -l 0x1110000 -e 0x1110000 \
+			-f "${CROS_FIRMWARE_ROOT}/u-boot.bin"
+		hash_altfw_payload "${rom}" u-boot
+		echo "1;altfw/u-boot;U-Boot;U-Boot bootloader" >> "${bl_list}"
+	fi
+
+	# Add TianoCore if enabled
+	if use tianocore; then
+		einfo "- Adding TianoCore"
+
+		# Some boards only have 1MB of RW_LEGACY space but UEFI is over
+		# 800KB. Allow this to fail, in which case we just don't add it.
+		if cbfstool "${rom}" add-payload -r RW_LEGACY \
+				-n altfw/tianocore -c lzma -f \
+				"${CROS_FIRMWARE_ROOT}/tianocore/UEFIPAYLOAD.fd"; then
+			hash_altfw_payload "${rom}" tianocore
+			echo "2;altfw/tianocore;TianoCore;TianoCore bootloader" \
+				>> "${bl_list}"
+
+			# For now, use TianoCore as the default.
+			echo "0;altfw/tianocore;TianoCore;TianoCore bootloader" \
+				>> "${bl_list}"
+			have_default=y
+			einfo "  (sing TianoCore as default)"
+		else
+			ewarn "Not enough space for TianoCore: omitted"
+		fi
+	fi
+
+	# Add SeaBIOS if enabled
+	if use seabios; then
+		local root="${CROS_FIRMWARE_ROOT}/seabios/"
+		einfo "- Adding SeaBIOS"
+
+		do_cbfstool "${rom}" add-payload -r RW_LEGACY -n altfw/seabios -c lzma \
+			-f "${root}/seabios.elf"
+		hash_altfw_payload "${rom}" seabios
+		for f in "${root}oprom/"*; do
+			if [[ -f "${f}" ]]; then
+				do_cbfstool "${rom}" add -r RW_LEGACY -f "${f}" \
+					-n "${f#${root}oprom/}" -t optionrom
+			fi
+		done
+		for f in "${root}cbfs/"*; do
+			if [[ -f "${f}" ]]; then
+				do_cbfstool "${rom}" add -r RW_LEGACY -f "${f}" \
+					-n "${f#${root}cbfs/}" -t raw
+			fi
+		done
+		for f in "${root}"etc/*; do
+			do_cbfstool "${rom}" add -r RW_LEGACY -f "${f}" \
+				-n "${f#$root}" -t raw
+		done
+		echo "3;altfw/seabios;SeaBIOS;SeaBIOS bootloader" \
+			>> "${bl_list}"
+	fi
+
+	# Add Diagnostic Payload if enabled
+	if use diag_payload; then
+		einfo "- Adding Diagnostic Payload"
+
+		do_cbfstool "${rom}" add-payload -r RW_LEGACY -n altfw/diag -c lzma -f \
+			"${CROS_FIRMWARE_ROOT}/diag_payload/${target}-diag.bin"
+		hash_altfw_payload "${rom}" diag
+		echo "5;altfw/diag;Diagnostics;System Diagnostics" \
+			>> "${bl_list}"
+
+		# Use Diag as the default if tianocore is not enabled
+		if [[ -z "${have_default}" ]]; then
+			echo "0;altfw/diag;Diagnostics;System Diagnostics" \
+				>> "${bl_list}"
+			have_default=y
+			einfo "  (using Diagnostics as default)"
+		fi
+	fi
+
+	# Add the list
+	einfo "- adding firmware list"
+	do_cbfstool "${rom}" add -r RW_LEGACY -n altfw/list -t raw -f "${bl_list}"
+
+	# Add the tag for silent updating.
+	do_cbfstool "${rom}" add-int -r RW_LEGACY -i 1 -n "cros_allow_auto_update"
+
+	# TODO(kitching): Get hash and sign.
+}
+
+# Check whether assets will fit in the image.
+#
+# Estimate the total size of compressed assets, uncompressed assets, and the
+# compressed payload.  Warn when the size exceeds free space available in
+# RO or RW CBFS regions.  Note that this is purely informational and doesn't
+# actually trigger failure.
+#
+# Args:
+#   $1: Filename of image to add to (use serial image for best coverage)
+#   $2: Payload to add to both RO and RW regions
+check_assets() {
+	local rom="$1"
+	local payload="$2"
+
+	# The objcopy architecture doesn't really need to match, it just needs any ELF.
+	local payload_size=$(objcopy -I elf32-i386 -O binary "${payload}" /proc/self/fd/1 2>/dev/null | xz -9 -c | wc -c)
+
+	local rw_assets_size=$(find compressed-assets-rw "compressed-assets-rw/${build_name}" "raw-assets-rw/${build_name}" -maxdepth 1 -type f -print0 | du --files0-from=- -bc | tail -n1 | cut -f1)
+	local rw_override_assets_size=$(find compressed-assets-rw-override "compressed-assets-rw-override/${build_name}" -maxdepth 1 -type f -print0 | du --files0-from=- -bc | tail -n1 | cut -f1)
+	local rw_size=$((rw_assets_size + rw_override_assets_size + payload_size))
+	local rw_free=$(($(do_cbfstool "${rom}" print -r FW_MAIN_A | awk '$1 ~ /empty/ {s+=$4} END {print s}') - payload_size))
+
+	# Most RW assets are also added to RO region.
+	local ro_assets_size=$(find compressed-assets-ro "compressed-assets-ro/${build_name}" -maxdepth 1 -type f -print0 | du --files0-from=- -bc | tail -n1 | cut -f1)
+	local ro_size=$((ro_assets_size + rw_assets_size + payload_size))
+	local ro_free=$(($(do_cbfstool "${rom}" print -r COREBOOT | awk '$1 ~ /empty/ {s+=$4} END {print s}') - payload_size))
+
+	einfo "assets (RO): $((ro_size / 1024)) KiB ($((ro_free / 1024)) KiB free) ${build_name}"
+	[[ ${ro_size} -gt ${ro_free} ]] &&
+		ewarn "WARNING: RO estimated $(((ro_size - ro_free) / 1024)) KiB over limit ${build_name}"
+
+	einfo "assets (RW): $((rw_size / 1024)) KiB ($((rw_free / 1024)) KiB free) ${build_name}"
+	[[ ${rw_size} -gt ${rw_free} ]] &&
+		ewarn "WARNING: RW estimated $(((rw_size - rw_free) / 1024)) KiB over limit ${build_name}"
+}
+
+# Add compressed assets, both common and target, to CBFS using cbfstool
+# Args:
+#  $1: Path where the compressed assets are present.
+#  $2: CBFS Regions to add the compressed assets to.
+add_compressed_assets() {
+	local asset_path="$1"
+	local cbfs_regions="$2"
+	local build_name="$3"
+
+	while IFS= read -r -d '' file; do
+		do_cbfstool "${rom}" add -r "${cbfs_regions}" -f "${file}" \
+			-n "$(basename "${file}")" -t raw -c precompression
+	done < <(find "${asset_path}" -maxdepth 1 -type f -print0)
+
+	# Pre uni-builds have build_name not set. So check to avoid adding
+	# duplicate assets.
+	if [ -n "${build_name}" ]; then
+		while IFS= read -r -d '' file; do
+			do_cbfstool "${rom}" add -r "${cbfs_regions}" -f "${file}" \
+				-n "$(basename "${file}")" -t raw -c precompression
+		done < <(find "${asset_path}/${build_name}" -maxdepth 1 -type f -print0)
+	fi
+}
+
+# Add Chrome OS assets to the base and serial images:
+#       compressed-assets-ro/*
+#         - fonts, images and screens for recovery mode, originally from
+#           cbfs-ro-compress/*; pre-compressed in src_compile()
+#       compressed-assets-rw/*
+#         - files originally from cbfs-rw-compress/*; pre-compressed
+#           in src_compile(); used for vbt*.bin
+#       compressed-assets-rw-override/*
+#         - updated images for screens, originally from
+#           cbfs-rw-compress-override/*; pre-compressed in src_compile(); used
+#           for rw_locale*.bin
+#       raw-assets-rw/*
+#         - files originally from cbfs-rw-raw/*, used for extra wifi_sar files
+#
+# Args:
+#  $1: Filename of image to add to
+add_assets() {
+	local rom="$1"
+
+	add_compressed_assets "compressed-assets-ro" "COREBOOT" "${build_name}"
+	add_compressed_assets "compressed-assets-rw" \
+				"COREBOOT,FW_MAIN_A,FW_MAIN_B" "${build_name}"
+	add_compressed_assets "compressed-assets-rw-override" \
+				"FW_MAIN_A,FW_MAIN_B" "${build_name}"
+
+	while IFS= read -r -d '' file; do
+		do_cbfstool "${rom}" add -r COREBOOT,FW_MAIN_A,FW_MAIN_B \
+			-f "${file}" -n "$(basename "${file}")" -t raw
+	done < <(find "raw-assets-rw/${build_name}" -type f -print0)
+}
+
+# Compress static and firmware target specific assets:
+#       compressed-assets-ro/*
+#         - fonts, images and screens for recovery mode, originally from
+#           cbfs-ro-compress/*; pre-compressed in src_compile()
+#       compressed-assets-rw/*
+#         - files originally from cbfs-rw-compress/*; pre-compressed
+#           in src_compile(); used for vbt*.bin
+#       compressed-assets-rw-override/*
+#         - updated images for screens, originally from
+#           cbfs-rw-compress-override/*; pre-compressed in src_compile(); used
+#           for rw_locale*.bin
+# Args:
+#  $1: Root path for the firmware build
+#  $2: Firmware target where the uncompressed assets are present. When nothing
+#      is passed, then static assets are being compressed.
+compress_assets() {
+	local froot="$1"
+	local build_name="$2"
+
+	# files from cbfs-ro-compress/ are installed in
+	# all images' RO CBFS, compressed
+	mkdir -p compressed-assets-ro/"${build_name}"
+	find "${froot}"/cbfs-ro-compress/"${build_name}" -mindepth 1 -maxdepth 1 \
+		-type f -printf "%P\0" 2>/dev/null | \
+		xargs -0 -n 1 -P "$(nproc)" -I '{}' \
+		cbfs-compression-tool compress \
+			"${froot}"/cbfs-ro-compress/"${build_name}"/'{}' \
+			compressed-assets-ro/"${build_name}"/'{}' LZMA
+
+	# files from cbfs-rw-compress/ are installed in
+	# all images' RO/RW CBFS, compressed
+	mkdir -p compressed-assets-rw/"${build_name}"
+	find "${froot}"/cbfs-rw-compress/"${build_name}" -mindepth 1 -maxdepth 1 \
+		-type f -printf "%P\0" 2>/dev/null | \
+		xargs -0 -n 1 -P "$(nproc)" -I '{}' \
+		cbfs-compression-tool compress \
+			"${froot}"/cbfs-rw-compress/"${build_name}"/'{}' \
+			compressed-assets-rw/"${build_name}"/'{}' LZMA
+
+	# files from cbfs-rw-compress-override/ are installed in
+	# all images' RW CBFS, compressed
+	mkdir -p compressed-assets-rw-override/"${build_name}"
+	find "${froot}"/cbfs-rw-compress-override/"${build_name}" -mindepth 1 \
+		-maxdepth 1 -type f -printf "%P\0" 2>/dev/null | \
+		xargs -0 -n 1 -P "$(nproc)" -I '{}' \
+		cbfs-compression-tool compress \
+			"${froot}"/cbfs-rw-compress-override/"${build_name}"/'{}' \
+			compressed-assets-rw-override/"${build_name}"/'{}' LZMA
+}
+
+# Build firmware images for a given board
+# Creates image*.bin for the following images:
+#    image.bin          - production image (no serial console)
+#    image.serial.bin   - production image with serial console enabled
+#    image.dev.bin      - developer image with serial console enabled
+#    image.net.bin      - netboot image with serial console enabled
+#
+# If $2 is set, then it uses "image-$2" instead of "image" and puts images in
+# the $2 subdirectory.
+#
+# If outdir
+# Args:
+#   $1: Directory containing the input files:
+#       coreboot.rom             - coreboot ROM image containing various pieces
+#       coreboot.rom.serial      - same, but with serial console enabled
+#       depthcharge/depthcharge.elf - depthcharge ELF payload
+#       depthcharge/dev.elf      - developer version of depthcharge
+#       depthcharge/netboot.elf  - netboot version of depthcharge
+#       depthcharge/depthcharge.config - configuration used to build depthcharge image
+#       (plus files mentioned above in add_assets)
+#   $2: Name to use when naming output files (see note above, can be empty)
+#
+#   $3: Name of target to build for coreboot (can be empty)
+#
+#   $4: Name of target to build for depthcharge (can be empty)
+#
+#   $5: Name of target to build for ec (can be empty)
+build_images() {
+	local froot="$1"
+	local build_name="$2"
+	local coreboot_build_target="$3"
+	local depthcharge_build_target="$4"
+	local ec_build_target="$5"
+	local outdir
+	local suffix
+	local file
+	local rom
+
+	local coreboot_orig
+	local depthcharge_prefix
+	local coreboot_config
+
+	if [ -n "${build_name}" ]; then
+		einfo "Building firmware images for ${build_name}"
+		outdir="${build_name}/"
+		mkdir "${outdir}"
+		suffix="-${build_name}"
+		coreboot_orig="${froot}/${coreboot_build_target}/coreboot.rom"
+		coreboot_config="${froot}/${coreboot_build_target}/coreboot.config"
+		depthcharge_prefix="${froot}/${depthcharge_build_target}/depthcharge"
+	else
+		coreboot_orig="${froot}/coreboot.rom"
+		coreboot_config="${froot}/coreboot.config"
+		depthcharge_prefix="${froot}/depthcharge"
+	fi
+
+	local coreboot_file="coreboot.rom"
+	cp "${coreboot_orig}" "${coreboot_file}"
+	cp "${coreboot_orig}.serial" "${coreboot_file}.serial"
+
+	local depthcharge
+	local depthcharge_dev
+	local netboot
+	local depthcharge_config
+
+	if use depthcharge; then
+		depthcharge="${depthcharge_prefix}/depthcharge.elf"
+		depthcharge_dev="${depthcharge_prefix}/dev.elf"
+		netboot="${depthcharge_prefix}/netboot.elf"
+		depthcharge_config="${depthcharge_prefix}/depthcharge.config"
+	fi
+
+	if [[ -d ${froot}/cbfs ]]; then
+		die "something is still using ${froot}/cbfs, which is deprecated."
+	fi
+
+	if use cros_ec || use wilco_ec || use zephyr_ec; then
+		if use unibuild; then
+			einfo "Adding EC for ${ec_build_target}"
+			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}" "ec" "${froot}/${ec_build_target}"
+			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}.serial" "ec" "${froot}/${ec_build_target}"
+		else
+			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}" "ec" "${froot}"
+			add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}.serial" "ec" "${froot}"
+		fi
+	fi
+
+	local pd_folder="${froot}/"
+	if use unibuild; then
+		pd_folder+="${ec_build_target}_pd"
+	else
+		# For non-unibuild boards this must match PD_FIRMWARE in board
+		# overlay make.defaults.
+		pd_folder+="${PD_FIRMWARE:-$(basename "${ROOT}")_pd}"
+	fi
+
+	if use pd_sync; then
+		add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}" "pd" "${pd_folder}"
+		add_ec "${depthcharge_config}" "${coreboot_config}" "${coreboot_file}.serial" "pd" "${pd_folder}"
+	fi
+
+	setup_altfw "${coreboot_build_target}" "${coreboot_file}"
+	setup_altfw "${coreboot_build_target}" "${coreboot_file}.serial"
+
+	check_assets "${coreboot_file}.serial" "${depthcharge_dev}"
+	add_assets "${coreboot_file}"
+	add_assets "${coreboot_file}.serial"
+
+	build_image "" "${coreboot_file}" "${depthcharge}" "${depthcharge}"
+
+	build_image serial "${coreboot_file}.serial" \
+		"${depthcharge}" "${depthcharge}"
+
+	build_image dev "${coreboot_file}.serial" \
+		"${depthcharge_dev}" "${depthcharge_dev}"
+
+	# Build a netboot image.
+	#
+	# The readonly payload is usually depthcharge and the read/write
+	# payload is usually netboot. This way the netboot image can be used
+	# to boot from USB through recovery mode if necessary.
+	build_image net "${coreboot_file}.serial" "${depthcharge}" "${netboot}"
+
+	# Set convenient netboot parameter defaults for developers.
+	local name="${build_name:-"${BOARD_USE}"}"
+	local bootfile="${PORTAGE_USERNAME}/${name}/vmlinuz"
+	local argsfile="${PORTAGE_USERNAME}/${name}/cmdline"
+	"${FILESDIR}/netboot_firmware_settings.py" \
+		-i "${outdir}image${suffix}.net.bin" \
+		--bootfile="${bootfile}" --argsfile="${argsfile}" &&
+		"${FILESDIR}/netboot_firmware_settings.py" \
+			-i "${outdir}image${suffix}.dev.bin" \
+			--bootfile="${bootfile}" --argsfile="${argsfile}" ||
+		die "failed to preset netboot parameter defaults."
+	einfo "Netboot configured to boot ${bootfile}, fetch kernel command" \
+		"line from ${argsfile}, and use the DHCP-provided TFTP server IP."
+}
+
+src_compile() {
+	local froot="${CROS_FIRMWARE_ROOT}"
+	einfo "Copying static rw assets"
+
+	if [[ -d "${froot}"/cbfs-rw-raw ]]; then
+		mkdir raw-assets-rw
+		cp -R "${froot}"/cbfs-rw-raw/* raw-assets-rw/ ||
+			die "unable to copy files cbfw-rw-raw files"
+	fi
+
+	einfo "Compressing static assets"
+
+	if [[ -d ${froot}/rocbfs ]]; then
+		die "something is still using ${froot}/rocbfs, which is deprecated."
+	fi
+
+	compress_assets "${froot}"
+
+	if use unibuild; then
+		local fields="coreboot,depthcharge,ec"
+		local cmd="get-firmware-build-combinations"
+		(cros_config_host "${cmd}" "${fields}" || die) |
+		while read -r name; do
+			read -r coreboot
+			read -r depthcharge
+			read -r ec
+			einfo "Compressing target assets for: ${name}"
+			compress_assets "${froot}" "${name}"
+			einfo "Building image for: ${name}"
+			if use zephyr_ec; then
+				# Zephyr installs under ${froot}/${name}/zephyr.bin,
+				# instead of using the EC build target name.
+				ec="${name}"
+			fi
+			build_images "${froot}" "${name}" "${coreboot}" "${depthcharge}" "${ec}"
+		done
+	else
+		build_images "${froot}" "" "" "" ""
+	fi
+}
+
+src_install() {
+	insinto "${CROS_FIRMWARE_IMAGE_DIR}"
+	if use unibuild; then
+		local fields="coreboot,depthcharge"
+		local cmd="get-firmware-build-combinations"
+		(cros_config_host "${cmd}" "${fields}" || die) |
+		while read -r name; do
+			read -r coreboot
+			read -r depthcharge
+			doins "${name}"/image-${name}*.bin
+		done
+	else
+		doins image*.bin
+	fi
+}
diff --git a/sys-boot/chromeos-bootimage/files/chromeos-version.sh b/sys-boot/chromeos-bootimage/files/chromeos-version.sh
new file mode 100755
index 0000000..272add5
--- /dev/null
+++ b/sys-boot/chromeos-bootimage/files/chromeos-version.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+# Copyright 2021 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.
+echo 0.0.4
diff --git a/sys-boot/chromeos-bootimage/files/netboot_firmware_settings.py b/sys-boot/chromeos-bootimage/files/netboot_firmware_settings.py
new file mode 100755
index 0000000..e005a60
--- /dev/null
+++ b/sys-boot/chromeos-bootimage/files/netboot_firmware_settings.py
@@ -0,0 +1,267 @@
+#!/usr/bin/env python3
+# Copyright 2013 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.
+
+"""Utility to configure netboot settings."""
+
+import argparse
+import socket
+import struct
+import sys
+
+try:
+  import fmap
+except ImportError:
+  print('Could not find fmap module. If you are running outside the chroot, '
+        'ensure that third_party/flashmap is on your PYTHONPATH.',
+        file=sys.stderr)
+  raise
+
+
+def _ParseArgs(argv):
+  """Construct an ArgumentParser for this utility script."""
+  parser = argparse.ArgumentParser(description=__doc__)
+  parser.add_argument('--input', '-i', required=True,
+                      help='Path to the firmware to modify; required')
+  parser.add_argument('--output', '-o',
+                      help='Path to store output; if not specified we will '
+                           'directly modify the input file')
+
+  parser.add_argument('--tftpserverip',
+                      help='Set the TFTP server IP address (defaults to DHCP-'
+                           'provided address)')
+  parser.add_argument('--bootfile',
+                      help='Set the path of the TFTP boot file (defaults to '
+                           'DHCP-provided file name)')
+  parser.add_argument('--argsfile',
+                      help='Set the path of the TFTP file that provides the '
+                           'kernel command line (overrides default and --arg)')
+
+  parser.add_argument('--board',
+                      help='Set the cros_board to be passed into the kernel')
+  parser.add_argument('--omahaserver',
+                      help='Set the Omaha server IP address')
+  parser.add_argument('--arg', '--kernel_arg', default=[], dest='kernel_args',
+                      metavar='kernel_args', action='append',
+                      help='Set extra kernel command line parameters (appended '
+                           'to default string for factory)')
+  return parser.parse_args(argv)
+
+
+class Image(object):
+  """A class to represent a firmware image.
+
+  Areas in the image should be accessed using the [] operator which takes
+  the area name as its key.
+
+  Attributes:
+    data: The data in the entire image.
+  """
+
+  def __init__(self, data):
+    """Initialize an instance of Image
+
+    Args:
+      data: The data contianed within the image.
+    """
+    try:
+      # FMAP identifier used by the cros_bundle_firmware family of utilities.
+      obj = fmap.fmap_decode(data, fmap_name='FMAP')
+    except struct.error:
+      # FMAP identifier used by coreboot's FMAP creation tools.
+      # The name signals that the FMAP covers the entire flash unlike, for
+      # example, the EC RW firmware's FMAP, which might also come as part of
+      # the image but covers a smaller section.
+      obj = fmap.fmap_decode(data, fmap_name='FLASH')
+    self.areas = {}
+    for area in obj['areas']:
+      self.areas[area['name']] = area
+    self.data = data
+
+  def __setitem__(self, key, value):
+    """Write data into an area of the image.
+
+    If value is smaller than the area it's being written into, it will be
+    padded out with NUL bytes. If it's too big, a ValueError exception
+    will be raised.
+
+    Args:
+      key: The name of the area to overwrite.
+      value: The data to write into the area.
+
+    Raises:
+      ValueError: 'value' was too large to write into the selected area.
+    """
+    area = self.areas[key]
+    if len(value) > area['size']:
+      raise ValueError('Too much data for FMAP area %s' % key)
+    value = value.ljust(area['size'], b'\0')
+    self.data = (self.data[:area['offset']] + value +
+                 self.data[area['offset'] + area['size']:])
+
+  def __getitem__(self, key):
+    """Retrieve the data in an area of the image.
+
+    Args:
+      key: The area to retrieve.
+
+    Returns:
+      The data in that area of the image.
+    """
+    area = self.areas[key]
+    return self.data[area['offset']:area['offset'] + area['size']]
+
+
+class Settings(object):
+  """A class which represents a collection of settings.
+
+  The settings can be updated after a firmware image has been built.
+
+  Attributes of this class other than the signature constant are stored in
+  the 'value' field of each attribute in the attributes dict.
+
+  Attributes:
+    signature: A constant which has a signature value at the front of the
+        settings when written into the image.
+  """
+  signature = b'netboot\0'
+
+  class Attribute(object):
+    """A class which represents a particular setting.
+
+    Attributes:
+      code: An enum value which identifies which setting this is.
+      value: The value the setting has been set to.
+    """
+    def __init__(self, code, value):
+      """Initialize an Attribute instance.
+
+      Args:
+        code: The code for this attribute.
+        value: The initial value of this attribute.
+      """
+      self.code = code
+      self.value = value
+
+    def pack(self):
+      """Pack an attribute into a binary representation.
+
+      Returns:
+        The binary representation.
+      """
+      if self.value:
+        value = self.value.pack()
+      else:
+        value = b''
+      value_len = len(value)
+      pad_len = ((value_len + 3) // 4) * 4 - value_len
+      value += b'\0' * pad_len
+      format_str = '<II%ds' % (value_len + pad_len)
+      return struct.pack(format_str, self.code, value_len, value)
+
+  def __init__(self):
+    """Initialize an instance of Settings."""
+    attributes = {
+        'tftp_server_ip': self.Attribute(1, None),
+        'kernel_args': self.Attribute(2, None),
+        'bootfile': self.Attribute(3, None),
+        'argsfile': self.Attribute(4, None),
+    }
+    self.__dict__['attributes'] = attributes
+
+  def __setitem__(self, name, value):
+    self.attributes[name].value = value
+
+  def __getattr__(self, name):
+    return self.attributes[name].value
+
+  def pack(self):
+    """Pack a Settings object into a binary representation.
+
+    The packed binary representation can be put into an image.
+
+    Returns:
+      A binary representation of the settings.
+    """
+    value = self.signature
+    value += struct.pack('<I', len(self.attributes))
+    # This doesn't need to be sorted, but it provides for stable outputs
+    # rather than relying on Python dictionary ordering, and is what the
+    # code has historically done.
+    for _, attr in sorted(self.attributes.items()):
+      value += attr.pack()
+    return value
+
+
+class Setting(object):
+  """Class for settings that are stored simply as strings."""
+
+  def __init__(self, val):
+    """Initialize an instance of Setting.
+
+    Args:
+      val: The value of the setting.
+    """
+    self.val = val
+
+  def pack(self):
+    """Pack the setting by returning its value as a string.
+
+    Returns:
+      The val field as bytes.
+    """
+    return self.val.encode()
+
+
+class IpAddress(Setting):
+  """Class for IP address settings."""
+
+  def __init__(self, val):
+    """Initialize an IpAddress Setting instance.
+
+    Args:
+      val: A string representation of the IP address to be set to.
+    """
+    in_addr = socket.inet_pton(socket.AF_INET, val)
+    super(IpAddress, self).__init__(in_addr)
+
+  def pack(self):
+    """Pack the setting by returning its value as a string.
+
+    Returns:
+      The val field as bytes.
+    """
+    return self.val
+
+
+def main(argv):
+  options = _ParseArgs(argv)
+  with open(options.input, 'rb') as f:
+    image = Image(f.read())
+
+  settings = Settings()
+  if options.tftpserverip:
+    settings['tftp_server_ip'] = IpAddress(options.tftpserverip)
+  kernel_args = ''
+  if options.board:
+    kernel_args += 'cros_board=' + options.board + ' '
+  if options.omahaserver:
+    kernel_args += 'omahaserver=' + options.omahaserver + ' '
+  kernel_args += ' '.join(options.kernel_args)
+  kernel_args += '\0'
+  settings['kernel_args'] = Setting(kernel_args)
+  if options.bootfile:
+    settings['bootfile'] = Setting(options.bootfile + '\0')
+  if options.argsfile:
+    settings['argsfile'] = Setting(options.argsfile + '\0')
+
+  image['SHARED_DATA'] = settings.pack()
+
+  output_name = options.output or options.input
+  with open(output_name, 'wb') as f:
+    f.write(image.data)
+
+
+if __name__ == '__main__':
+  sys.exit(main(sys.argv[1:]))
diff --git a/sys-boot/chromeos-vendor-strings-null/chromeos-vendor-strings-null-0.0.1.ebuild b/sys-boot/chromeos-vendor-strings-null/chromeos-vendor-strings-null-0.0.1.ebuild
deleted file mode 100644
index f2cb091..0000000
--- a/sys-boot/chromeos-vendor-strings-null/chromeos-vendor-strings-null-0.0.1.ebuild
+++ /dev/null
@@ -1,10 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-DESCRIPTION="Vendor firmware strings placeholder"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
diff --git a/sys-boot/coreboot/coreboot-0.0.1-r4142.ebuild b/sys-boot/coreboot/coreboot-0.0.1-r4142.ebuild
deleted file mode 100644
index a33ff8a..0000000
--- a/sys-boot/coreboot/coreboot-0.0.1-r4142.ebuild
+++ /dev/null
@@ -1,453 +0,0 @@
-# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# Change this version number when any change is made to configs/files under
-# coreboot and an auto-revbump is required.
-# VERSION=REVBUMP-0.0.68
-
-EAPI=7
-CROS_WORKON_COMMIT=("1cf1d1ceda64e0b81170f8454fd5ecca311667d5" "943aff0c16434d558d3e1f5744d6119b49970504" "6f6efdc6fa38ed3bcacfa9e152f415d50ee8bad0" "539d31ab9ea89084fa5edf7cc9ac3122786d5454" "9082f7582d7d978ab29fc542f58de163ae065d07" "ee319ae7bc59e88b60142f40a9ec1b46656de4db" "b7d5b2d6a6dd05874d86ee900ff441d261f9034c")
-CROS_WORKON_TREE=("2e32d2a5a79f8e88be91b44b40a65211c6ea4dae" "e58b88828fa7d1946361c9ef45f9f1128cf92c89" "06c3486af100c39ddc9cb59381d087b4f2ed1634" "3155925d35f57041703913dde70f8eebf96d79df" "9a3dae98d5e43b8fd1a6eddb17ab66ab121aa131" "45d22a8711f85c4310c0c2121d3dc8a72793d375" "c0433b88f972fa26dded401be022c1c026cd644e")
-CROS_WORKON_PROJECT=(
-	"chromiumos/third_party/coreboot"
-	"chromiumos/third_party/arm-trusted-firmware"
-	"chromiumos/platform/vboot_reference"
-	"chromiumos/third_party/coreboot/amd_blobs"
-	"chromiumos/third_party/coreboot/blobs"
-	"chromiumos/third_party/coreboot/intel-microcode"
-	"chromiumos/third_party/cbootimage"
-)
-CROS_WORKON_LOCALNAME=(
-	"coreboot"
-	"arm-trusted-firmware"
-	"../platform/vboot_reference"
-	"coreboot/3rdparty/amd_blobs"
-	"coreboot/3rdparty/blobs"
-	"coreboot/3rdparty/intel-microcode"
-	"cbootimage"
-)
-CROS_WORKON_DESTDIR=(
-	"${S}"
-	"${S}/3rdparty/arm-trusted-firmware"
-	"${S}/3rdparty/vboot"
-	"${S}/3rdparty/amd_blobs"
-	"${S}/3rdparty/blobs"
-	"${S}/3rdparty/intel-microcode"
-	"${S}/util/nvidia/cbootimage"
-)
-
-CROS_WORKON_EGIT_BRANCH=(
-	"chromeos-2016.05"
-	"master"
-	"master"
-	"chromeos"
-	"master"
-	"master"
-	"master"
-)
-
-inherit cros-board cros-workon toolchain-funcs cros-unibuild coreboot-sdk
-
-DESCRIPTION="coreboot firmware"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="*"
-IUSE="em100-mode fsp memmaps mocktpm quiet-cb rmt vmx mtc mma"
-IUSE="${IUSE} +bmpblk +intel_mrc qca-framework quiet unibuild verbose"
-IUSE="${IUSE} amd_cpu coreboot-sdk chipset_stoneyridge chipset_picasso"
-IUSE="${IUSE} generated_cros_config"
-# coreboot's build system handles stripping the binaries and producing a
-# separate .debug file with the symbols. This flag prevents portage from
-# stripping the .debug symbols
-RESTRICT="strip"
-
-RDEPEND=""
-DEPEND="
-	mtc? ( sys-boot/mtc:= )
-	virtual/coreboot-private-files
-	bmpblk? ( sys-boot/chromeos-bmpblk:= )
-	intel_mrc? ( x86? ( sys-boot/chromeos-mrc:= )
-		amd64? ( sys-boot/chromeos-mrc:= ) )
-	chipset_stoneyridge? ( sys-boot/amd-firmware:= )
-	chipset_picasso? ( >=sys-boot/amd-picasso-fsp-0.0.2:= )
-	qca-framework? ( sys-boot/qca-framework:= )
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	"
-
-# Get the coreboot board config to build for.
-# Checks the current board with/without variant, and also whether an FSP
-# is in use. Echoes the board config file that should be used to build
-# coreboot.
-get_board() {
-	local board=$(get_current_board_with_variant)
-
-	if [[ ! -s "${FILESDIR}/configs/config.${board}" ]]; then
-		board=$(get_current_board_no_variant)
-	fi
-	echo "${board}"
-}
-
-set_build_env() {
-	local board="$1"
-
-	CONFIG="$(cros-workon_get_build_dir)/${board}.config"
-	CONFIG_SERIAL="$(cros-workon_get_build_dir)/${board}-serial.config"
-	# Strip the .config suffix
-	BUILD_DIR="${CONFIG%.config}"
-	BUILD_DIR_SERIAL="${CONFIG_SERIAL%.config}"
-}
-
-# Create the coreboot configuration files for a particular board. This
-# creates a standard config and a serial config.
-# Args:
-#   $1: board name
-#   $2: Base board name, if any (used for unified builds)
-create_config() {
-	local board="$1"
-	local base_board="$2"
-
-	if [[ -s "${FILESDIR}/configs/config.${board}" ]]; then
-
-		cp -v "${FILESDIR}/configs/config.${board}" "${CONFIG}"
-		# handle the case when "${CONFIG}" does not have a newline in the end.
-		echo >> "${CONFIG}"
-
-		# Override mainboard vendor if needed.
-		if [[ -n "${SYSTEM_OEM}" ]]; then
-			echo "CONFIG_MAINBOARD_VENDOR=\"${SYSTEM_OEM}\"" >> "${CONFIG}"
-		fi
-		if [[ -n "${SYSTEM_OEM_VENDOR_ID}" ]]; then
-			echo "CONFIG_SUBSYSTEM_VENDOR_ID=${SYSTEM_OEM_VENDOR_ID}" >> "${CONFIG}"
-		fi
-		if [[ -n "${SYSTEM_OEM_DEVICE_ID}" ]]; then
-			echo "CONFIG_SUBSYSTEM_DEVICE_ID=${SYSTEM_OEM_DEVICE_ID}" >> "${CONFIG}"
-		fi
-		if [[ -n "${SYSTEM_OEM_ACPI_ID}" ]]; then
-			echo "CONFIG_ACPI_SUBSYSTEM_ID=\"${SYSTEM_OEM_ACPI_ID}\"" >> "${CONFIG}"
-		fi
-
-		# In case config comes from a symlink we are likely building
-		# for an overlay not matching this config name. Enable adding
-		# a CBFS based board ID for coreboot.
-		if [[ -L "${FILESDIR}/configs/config.${board}" ]]; then
-			echo "CONFIG_BOARD_ID_MANUAL=y" >> "${CONFIG}"
-			echo "CONFIG_BOARD_ID_STRING=\"${BOARD_USE}\"" >> "${CONFIG}"
-		fi
-	else
-		ewarn "Could not find existing config for ${board}."
-	fi
-
-	if use rmt; then
-		echo "CONFIG_MRC_RMT=y" >> "${CONFIG}"
-	fi
-	if use vmx; then
-		elog "   - enabling VMX"
-		echo "CONFIG_ENABLE_VMX=y" >> "${CONFIG}"
-	fi
-	if use quiet-cb; then
-		# Suppress console spew if requested.
-		cat >> "${CONFIG}" <<EOF
-CONFIG_DEFAULT_CONSOLE_LOGLEVEL=3
-# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set
-CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3=y
-EOF
-	fi
-	if use mocktpm; then
-		echo "CONFIG_VBOOT_MOCK_SECDATA=y" >> "${CONFIG}"
-	fi
-	if use mma; then
-		echo "CONFIG_MMA=y" >> "${CONFIG}"
-	fi
-
-	# allow using non-coreboot toolchains unless we use it anyway
-	if ! use coreboot-sdk; then
-		echo "CONFIG_ANY_TOOLCHAIN=y" >> "${CONFIG}"
-	fi
-	# disable coreboot's own EC firmware building mechanism
-	echo "CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_NONE=y" >> "${CONFIG}"
-	echo "CONFIG_EC_GOOGLE_CHROMEEC_PD_FIRMWARE_NONE=y" >> "${CONFIG}"
-	# enable common GBB flags for development
-	echo "CONFIG_GBB_FLAG_DEV_SCREEN_SHORT_DELAY=y" >> "${CONFIG}"
-	echo "CONFIG_GBB_FLAG_DISABLE_FW_ROLLBACK_CHECK=y" >> "${CONFIG}"
-	echo "CONFIG_GBB_FLAG_FORCE_DEV_BOOT_USB=y" >> "${CONFIG}"
-	echo "CONFIG_GBB_FLAG_FORCE_DEV_SWITCH_ON=y" >> "${CONFIG}"
-	local version=$(${CHROOT_SOURCE_ROOT}/src/third_party/chromiumos-overlay/chromeos/config/chromeos_version.sh |grep "^[[:space:]]*CHROMEOS_VERSION_STRING=" |cut -d= -f2)
-	echo "CONFIG_VBOOT_FWID_VERSION=\".${version}\"" >> "${CONFIG}"
-	if use em100-mode; then
-		einfo "Enabling em100 mode via CONFIG_EM100 (slower SPI flash)"
-		echo "CONFIG_EM100=y" >> "${CONFIG}"
-	fi
-	# Use FSP's GOP in favor of coreboot's Ada based Intel graphics init
-	# which we don't include at this time. A no-op on non-FSP/GOP devices.
-	echo "CONFIG_RUN_FSP_GOP=y" >> "${CONFIG}"
-
-	cp "${CONFIG}" "${CONFIG_SERIAL}"
-	file="${FILESDIR}/configs/fwserial.${board}"
-	if [ ! -f "${file}" ] && [ -n "${base_board}" ]; then
-		file="${FILESDIR}/configs/fwserial.${base_board}"
-	fi
-	if [ ! -f "${file}" ]; then
-		file="${FILESDIR}/configs/fwserial.default"
-	fi
-	cat "${file}" >> "${CONFIG_SERIAL}" || die
-	# handle the case when "${CONFIG_SERIAL}" does not have a newline in the end.
-	echo >> "${CONFIG_SERIAL}"
-
-	einfo "Configured ${CONFIG} for board ${board} in ${BUILD_DIR}"
-}
-
-src_prepare() {
-	local froot="${SYSROOT}/firmware"
-	local privdir="${SYSROOT}/firmware/coreboot-private"
-	local file
-
-	default
-
-	mkdir "$(cros-workon_get_build_dir)"
-
-	if [[ -d "${privdir}" ]]; then
-		while read -d $'\0' -r file; do
-			rsync --recursive --links --executability \
-				"${file}" ./ || die
-		done < <(find "${privdir}" -maxdepth 1 -mindepth 1 -print0)
-	fi
-
-	for blob in mrc.bin mrc.elf efi.elf; do
-		if [[ -r "${SYSROOT}/firmware/${blob}" ]]; then
-			cp "${SYSROOT}/firmware/${blob}" 3rdparty/blobs/
-		fi
-	done
-
-	cp -a "${FILESDIR}/3rdparty/"* 3rdparty
-
-	if use unibuild; then
-		local build_target
-
-		while read -r name; do
-			read -r coreboot
-			set_build_env "${coreboot}"
-			create_config "${coreboot}" "$(get_board)"
-		done < <(cros_config_host "get-firmware-build-combinations" coreboot || die)
-	else
-		set_build_env "$(get_board)"
-		create_config "$(get_board)"
-	fi
-}
-
-add_fw_blob() {
-	local rom="$1"
-	local cbname="$2"
-	local blob="$3"
-	local cbhash="${cbname%.bin}.hash"
-	local hash="${blob%.bin}.hash"
-
-	cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c lzma \
-		-f "${blob}" -n "${cbname}" || die
-	cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c none \
-		-f "${hash}" -n "${cbhash}" || die
-}
-
-# Build coreboot with a supplied configuration and output directory.
-#   $1: Build directory to use (e.g. "build_serial")
-#   $2: Config file to use (e.g. ".config_serial")
-#   $3: Build target build (e.g. "pyro"), for USE=unibuild only.
-make_coreboot() {
-	local builddir="$1"
-	local config_fname="$2"
-
-	rm -rf "${builddir}" .xcompile
-
-	local CB_OPTS=( "DOTCONFIG=${config_fname}" )
-	use quiet && CB_OPTS+=( "V=0" )
-	use verbose && CB_OPTS+=( "V=1" )
-	use quiet && REDIR="/dev/null" || REDIR="/dev/stdout"
-
-	# Configure and build coreboot.
-	yes "" | emake oldconfig "${CB_OPTS[@]}" obj="${builddir}" >${REDIR}
-	if grep -q "CONFIG_VENDOR_EMULATION=y" "${config_fname}"; then
-		local config_file
-		config_file="${FILESDIR}/configs/config.$(get_board)"
-		die "Working with a default configuration. ${config_file} incorrect?"
-	fi
-	emake "${CB_OPTS[@]}" obj="${builddir}" HOSTCC="$(tc-getBUILD_CC)" \
-		HOSTPKGCONFIG="$(tc-getBUILD_PKG_CONFIG)"
-
-	# Expand FW_MAIN_* since we might add some files
-	cbfstool "${builddir}/coreboot.rom" expand -r FW_MAIN_A,FW_MAIN_B
-
-	# Modify firmware descriptor if building for the EM100 emulator on
-	# Intel platforms.
-	# TODO(crbug.com/863396): Should we have an 'intel' USE flag? Do we
-	# still have any Intel platforms that don't use ifdtool?
-	if ! use amd_cpu && use em100-mode; then
-		einfo "Enabling em100 mode via ifdttool (slower SPI flash)"
-		ifdtool --em100 "${builddir}/coreboot.rom" || die
-		mv "${builddir}/coreboot.rom"{.new,} || die
-	fi
-}
-
-# Add fw blobs to the coreboot.rom.
-#   $1: Build directory to use (e.g. "build_serial")
-#   $2: Build target build (e.g. "pyro"), for USE=unibuild only.
-add_fw_blobs() {
-	local builddir="$1"
-	local build_target="$2"
-	local froot="${SYSROOT}/firmware"
-	local fblobroot="${SYSROOT}/firmware"
-
-	if use unibuild; then
-		froot+="/${build_target}"
-	fi
-
-	local blob
-	local cbname
-	for blob in ${FW_BLOBS}; do
-		local blobfile="${fblobroot}/${blob}"
-
-		# Use per-board blob if available
-		if use unibuild && [[ -e "${froot}/${blob}" ]]; then
-			blobfile="${froot}/${blob}"
-		fi
-
-		cbname=$(basename "${blob}")
-		add_fw_blob "${builddir}/coreboot.rom" "${cbname}" \
-			"${blobfile}" || die
-	done
-
-	if [ -d ${froot}/cbfs ]; then
-		die "something is still using ${froot}/cbfs, which is deprecated."
-	fi
-}
-
-src_compile() {
-	# Set KERNELREVISION (really coreboot revision) to the ebuild revision
-	# number followed by a dot and the first seven characters of the git
-	# hash. The name is confusing but consistent with the coreboot
-	# Makefile.
-	local sha1v="${VCSID/*-/}"
-	export KERNELREVISION=".${PV}.${sha1v:0:7}"
-
-	if ! use coreboot-sdk; then
-		tc-export CC
-		# Export the known cross compilers so there isn't a reliance
-		# on what the default profile is for exporting a compiler. The
-		# reasoning is that the firmware may need more than one to build
-		# and boot.
-		export CROSS_COMPILE_x86="i686-pc-linux-gnu-"
-		export CROSS_COMPILE_mipsel="mipsel-cros-linux-gnu-"
-		export CROSS_COMPILE_arm64="aarch64-cros-linux-gnu-"
-		export CROSS_COMPILE_arm="armv7a-cros-linux-gnu- armv7a-cros-linux-gnueabihf-"
-	else
-		export CROSS_COMPILE_x86=${COREBOOT_SDK_PREFIX_x86_32}
-		export CROSS_COMPILE_mipsel=${COREBOOT_SDK_PREFIX_mips}
-		export CROSS_COMPILE_arm64=${COREBOOT_SDK_PREFIX_arm64}
-		export CROSS_COMPILE_arm=${COREBOOT_SDK_PREFIX_arm}
-
-		export PATH=/opt/coreboot-sdk/bin:$PATH
-	fi
-
-	use verbose && elog "Toolchain:\n$(sh util/xcompile/xcompile)\n"
-
-	if use unibuild; then
-		while read -r name; do
-			read -r coreboot
-
-			set_build_env "${coreboot}"
-			make_coreboot "${BUILD_DIR}" "${CONFIG}"
-			add_fw_blobs "${BUILD_DIR}" "${coreboot}"
-
-			# Build a second ROM with serial support for developers.
-			make_coreboot "${BUILD_DIR_SERIAL}" "${CONFIG_SERIAL}"
-			add_fw_blobs "${BUILD_DIR_SERIAL}" "${coreboot}"
-		done < <(cros_config_host "get-firmware-build-combinations" coreboot || die)
-	else
-		set_build_env "$(get_board)"
-		make_coreboot "${BUILD_DIR}" "${CONFIG}"
-		add_fw_blobs "${BUILD_DIR}"
-
-		# Build a second ROM with serial support for developers.
-		make_coreboot "${BUILD_DIR_SERIAL}" "${CONFIG_SERIAL}"
-		add_fw_blobs "${BUILD_DIR_SERIAL}"
-	fi
-}
-
-do_install() {
-	local build_target="$1"
-	local dest_dir="/firmware"
-	local mapfile
-
-	if [[ -n "${build_target}" ]]; then
-		dest_dir+="/${build_target}"
-		einfo "Installing coreboot ${build_target} into ${dest_dir}"
-	fi
-	insinto "${dest_dir}"
-
-	newins "${BUILD_DIR}/coreboot.rom" coreboot.rom
-	newins "${BUILD_DIR_SERIAL}/coreboot.rom" coreboot.rom.serial
-
-	OPROM=$( awk 'BEGIN{FS="\""} /CONFIG_VGA_BIOS_FILE=/ { print $2 }' \
-		"${CONFIG}" )
-	CBFSOPROM=pci$( awk 'BEGIN{FS="\""} /CONFIG_VGA_BIOS_ID=/ { print $2 }' \
-		"${CONFIG}" ).rom
-	FSP=$( awk 'BEGIN{FS="\""} /CONFIG_FSP_FILE=/ { print $2 }' \
-		"${CONFIG}" )
-	if [[ -n "${FSP}" ]]; then
-		newins ${FSP} fsp.bin
-	fi
-	# Save the psp_verstage binary for signing on AMD Fam17h platforms
-	if [[ -e "${BUILD_DIR}/psp_verstage.bin" ]]; then
-		newins "${BUILD_DIR}/psp_verstage.bin" psp_verstage.bin
-	fi
-	if [[ -n "${OPROM}" ]]; then
-		newins ${OPROM} ${CBFSOPROM}
-	fi
-	if use memmaps; then
-		for mapfile in "${BUILD_DIR}"/cbfs/fallback/*.map
-		do
-			doins $mapfile
-		done
-	fi
-	newins "${CONFIG}" coreboot.config
-	newins "${CONFIG_SERIAL}" coreboot_serial.config
-
-	# Keep binaries with debug symbols around for crash dump analysis
-	if [[ -s "${BUILD_DIR}/bl31.elf" ]]; then
-		newins "${BUILD_DIR}/bl31.elf" bl31.elf
-		newins "${BUILD_DIR_SERIAL}/bl31.elf" bl31.serial.elf
-	fi
-	insinto "${dest_dir}"/coreboot
-	doins "${BUILD_DIR}"/cbfs/fallback/*.debug
-	nonfatal doins "${BUILD_DIR}"/cbfs/fallback/bootblock.bin
-	insinto "${dest_dir}"/coreboot_serial
-	doins "${BUILD_DIR_SERIAL}"/cbfs/fallback/*.debug
-	nonfatal doins "${BUILD_DIR_SERIAL}"/cbfs/fallback/bootblock.bin
-
-	# coreboot's static_fw_config.h is copied into
-	# /firmware/libpayload/include in order for other firmware to consume
-	# the FW_CONFIG decoder macros. For unibuild, it is renamed to include
-	# the build target.
-	insinto "/firmware/libpayload/include"
-	if use unibuild; then
-		newins "${BUILD_DIR}"/static_fw_config.h "static_fw_config_${build_target}.h"
-	else
-		doins "${BUILD_DIR}"/static_fw_config.h
-	fi
-	einfo "Installed static_fw_config.h into /firmware/libpayload/include"
-}
-
-src_install() {
-	if use unibuild; then
-		while read -r name; do
-			read -r coreboot
-
-			set_build_env "${coreboot}"
-			do_install "${coreboot}"
-		done < <(cros_config_host "get-firmware-build-combinations" coreboot || die)
-	else
-		set_build_env "$(get_board)"
-		do_install
-	fi
-}
diff --git a/sys-boot/coreboot/coreboot-0.0.1-r4457.ebuild b/sys-boot/coreboot/coreboot-0.0.1-r4457.ebuild
new file mode 100644
index 0000000..d16d47cb
--- /dev/null
+++ b/sys-boot/coreboot/coreboot-0.0.1-r4457.ebuild
@@ -0,0 +1,456 @@
+# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# Change this version number when any change is made to configs/files under
+# coreboot and an auto-revbump is required.
+# VERSION=REVBUMP-0.0.71
+
+EAPI=7
+CROS_WORKON_COMMIT=("08aff2250e3b459da8094f03e5bea60ed78c413a" "967344b52082725523ed6146b54e8c8a077bfeb6" "5c0fcf0f8725b98043a4b18f36e21489375d133a" "7874c7d3cebc0ebca57875e24911ddd55aec9711" "df630442ada121d52205f009fdab685401f53694" "ee319ae7bc59e88b60142f40a9ec1b46656de4db" "b7d5b2d6a6dd05874d86ee900ff441d261f9034c")
+CROS_WORKON_TREE=("0039a6731a3018302bff712c112c2464f8192e79" "d6d71de60d72b25dfa814f04f38f6e1f874fe88e" "3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c" "27bb5107ef257116a45f756ad185272ae385faf9" "71e64b41a2f07ca30f4745b73c3964bc3c59dcf2" "45d22a8711f85c4310c0c2121d3dc8a72793d375" "c0433b88f972fa26dded401be022c1c026cd644e")
+CROS_WORKON_PROJECT=(
+	"chromiumos/third_party/coreboot"
+	"chromiumos/third_party/arm-trusted-firmware"
+	"chromiumos/platform/vboot_reference"
+	"chromiumos/third_party/coreboot/amd_blobs"
+	"chromiumos/third_party/coreboot/blobs"
+	"chromiumos/third_party/coreboot/intel-microcode"
+	"chromiumos/third_party/cbootimage"
+)
+CROS_WORKON_LOCALNAME=(
+	"coreboot"
+	"arm-trusted-firmware"
+	"../platform/vboot_reference"
+	"coreboot/3rdparty/amd_blobs"
+	"coreboot/3rdparty/blobs"
+	"coreboot/3rdparty/intel-microcode"
+	"cbootimage"
+)
+CROS_WORKON_DESTDIR=(
+	"${S}"
+	"${S}/3rdparty/arm-trusted-firmware"
+	"${S}/3rdparty/vboot"
+	"${S}/3rdparty/amd_blobs"
+	"${S}/3rdparty/blobs"
+	"${S}/3rdparty/intel-microcode"
+	"${S}/util/nvidia/cbootimage"
+)
+
+CROS_WORKON_EGIT_BRANCH=(
+	"chromeos-2016.05"
+	"master"
+	"master"
+	"chromeos"
+	"master"
+	"master"
+	"master"
+)
+
+inherit cros-board cros-workon toolchain-funcs cros-unibuild coreboot-sdk
+
+DESCRIPTION="coreboot firmware"
+HOMEPAGE="http://www.coreboot.org"
+LICENSE="GPL-2"
+KEYWORDS="*"
+IUSE="em100-mode fsp memmaps mocktpm quiet-cb rmt vmx mtc mma"
+IUSE="${IUSE} +bmpblk quiet unibuild verbose"
+IUSE="${IUSE} amd_cpu coreboot-sdk chipset_stoneyridge chipset_picasso"
+IUSE="${IUSE} chipset_cezanne"
+# virtual/coreboot-private-files is deprecated. When adding a new board you
+# should add the coreboot-private-files-{board/chipset} ebuilds into the private
+# overlays, and avoid creating virtual packages.
+# See b/178642474
+IUSE="${IUSE} coreboot-private-files-board coreboot-private-files-chipset"
+# coreboot's build system handles stripping the binaries and producing a
+# separate .debug file with the symbols. This flag prevents portage from
+# stripping the .debug symbols
+RESTRICT="strip"
+
+RDEPEND=""
+DEPEND="
+	mtc? ( sys-boot/mtc:= )
+	coreboot-private-files-board? ( sys-boot/coreboot-private-files-board:= )
+	coreboot-private-files-chipset? ( sys-boot/coreboot-private-files-chipset:= )
+	virtual/coreboot-private-files
+	bmpblk? ( sys-boot/chromeos-bmpblk:= )
+	chipset_stoneyridge? ( sys-boot/amd-firmware:= )
+	chipset_picasso? ( >=sys-boot/amd-picasso-fsp-0.0.2:= )
+	chipset_cezanne? ( sys-boot/amd-cezanne-fsp:= )
+	unibuild? ( chromeos-base/chromeos-config:= )
+	"
+
+# Get the coreboot board config to build for.
+# Checks the current board with/without variant, and also whether an FSP
+# is in use. Echoes the board config file that should be used to build
+# coreboot.
+get_board() {
+	local board=$(get_current_board_with_variant)
+
+	if [[ ! -s "${FILESDIR}/configs/config.${board}" ]]; then
+		board=$(get_current_board_no_variant)
+	fi
+	echo "${board}"
+}
+
+set_build_env() {
+	local board="$1"
+
+	CONFIG="$(cros-workon_get_build_dir)/${board}.config"
+	CONFIG_SERIAL="$(cros-workon_get_build_dir)/${board}-serial.config"
+	# Strip the .config suffix
+	BUILD_DIR="${CONFIG%.config}"
+	BUILD_DIR_SERIAL="${CONFIG_SERIAL%.config}"
+}
+
+# Create the coreboot configuration files for a particular board. This
+# creates a standard config and a serial config.
+# Args:
+#   $1: board name
+#   $2: Base board name, if any (used for unified builds)
+create_config() {
+	local board="$1"
+	local base_board="$2"
+
+	if [[ -s "${FILESDIR}/configs/config.${board}" ]]; then
+
+		cp -v "${FILESDIR}/configs/config.${board}" "${CONFIG}"
+		# handle the case when "${CONFIG}" does not have a newline in the end.
+		echo >> "${CONFIG}"
+
+		# Override mainboard vendor if needed.
+		if [[ -n "${SYSTEM_OEM}" ]]; then
+			echo "CONFIG_MAINBOARD_VENDOR=\"${SYSTEM_OEM}\"" >> "${CONFIG}"
+		fi
+		if [[ -n "${SYSTEM_OEM_VENDOR_ID}" ]]; then
+			echo "CONFIG_SUBSYSTEM_VENDOR_ID=${SYSTEM_OEM_VENDOR_ID}" >> "${CONFIG}"
+		fi
+		if [[ -n "${SYSTEM_OEM_DEVICE_ID}" ]]; then
+			echo "CONFIG_SUBSYSTEM_DEVICE_ID=${SYSTEM_OEM_DEVICE_ID}" >> "${CONFIG}"
+		fi
+		if [[ -n "${SYSTEM_OEM_ACPI_ID}" ]]; then
+			echo "CONFIG_ACPI_SUBSYSTEM_ID=\"${SYSTEM_OEM_ACPI_ID}\"" >> "${CONFIG}"
+		fi
+
+		# In case config comes from a symlink we are likely building
+		# for an overlay not matching this config name. Enable adding
+		# a CBFS based board ID for coreboot.
+		if [[ -L "${FILESDIR}/configs/config.${board}" ]]; then
+			echo "CONFIG_BOARD_ID_MANUAL=y" >> "${CONFIG}"
+			echo "CONFIG_BOARD_ID_STRING=\"${BOARD_USE}\"" >> "${CONFIG}"
+		fi
+	else
+		ewarn "Could not find existing config for ${board}."
+	fi
+
+	if use rmt; then
+		echo "CONFIG_MRC_RMT=y" >> "${CONFIG}"
+	fi
+	if use vmx; then
+		elog "   - enabling VMX"
+		echo "CONFIG_ENABLE_VMX=y" >> "${CONFIG}"
+	fi
+	if use quiet-cb; then
+		# Suppress console spew if requested.
+		cat >> "${CONFIG}" <<EOF
+CONFIG_DEFAULT_CONSOLE_LOGLEVEL=3
+# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set
+CONFIG_DEFAULT_CONSOLE_LOGLEVEL_3=y
+EOF
+	fi
+	if use mocktpm; then
+		echo "CONFIG_VBOOT_MOCK_SECDATA=y" >> "${CONFIG}"
+	fi
+	if use mma; then
+		echo "CONFIG_MMA=y" >> "${CONFIG}"
+	fi
+
+	# disable coreboot's own EC firmware building mechanism
+	echo "CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_NONE=y" >> "${CONFIG}"
+	echo "CONFIG_EC_GOOGLE_CHROMEEC_PD_FIRMWARE_NONE=y" >> "${CONFIG}"
+	# enable common GBB flags for development
+	echo "CONFIG_GBB_FLAG_DEV_SCREEN_SHORT_DELAY=y" >> "${CONFIG}"
+	echo "CONFIG_GBB_FLAG_DISABLE_FW_ROLLBACK_CHECK=y" >> "${CONFIG}"
+	echo "CONFIG_GBB_FLAG_FORCE_DEV_BOOT_USB=y" >> "${CONFIG}"
+	echo "CONFIG_GBB_FLAG_FORCE_DEV_SWITCH_ON=y" >> "${CONFIG}"
+	local version=$(${CHROOT_SOURCE_ROOT}/src/third_party/chromiumos-overlay/chromeos/config/chromeos_version.sh |grep "^[[:space:]]*CHROMEOS_VERSION_STRING=" |cut -d= -f2)
+	echo "CONFIG_VBOOT_FWID_VERSION=\".${version}\"" >> "${CONFIG}"
+	if use em100-mode; then
+		einfo "Enabling em100 mode via CONFIG_EM100 (slower SPI flash)"
+		echo "CONFIG_EM100=y" >> "${CONFIG}"
+	fi
+	# Use FSP's GOP in favor of coreboot's Ada based Intel graphics init
+	# which we don't include at this time. A no-op on non-FSP/GOP devices.
+	echo "CONFIG_RUN_FSP_GOP=y" >> "${CONFIG}"
+
+	cp "${CONFIG}" "${CONFIG_SERIAL}"
+	file="${FILESDIR}/configs/fwserial.${board}"
+	if [ ! -f "${file}" ] && [ -n "${base_board}" ]; then
+		file="${FILESDIR}/configs/fwserial.${base_board}"
+	fi
+	if [ ! -f "${file}" ]; then
+		file="${FILESDIR}/configs/fwserial.default"
+	fi
+	cat "${file}" >> "${CONFIG_SERIAL}" || die
+	# handle the case when "${CONFIG_SERIAL}" does not have a newline in the end.
+	echo >> "${CONFIG_SERIAL}"
+
+	# Check that we're using coreboot-sdk
+	if ! use coreboot-sdk; then
+		die "Enable coreboot-sdk to build coreboot."
+	fi
+	if grep -q "^CONFIG_ANY_TOOLCHAIN=y" "${CONFIG}"; then
+		die "Drop ANY_TOOLCHAIN from ${CONFIG}: we don't support it anymore."
+	fi
+
+	einfo "Configured ${CONFIG} for board ${board} in ${BUILD_DIR}"
+}
+
+src_prepare() {
+	local froot="${SYSROOT}/firmware"
+	local privdir="${SYSROOT}/firmware/coreboot-private"
+	local file
+
+	default
+
+	mkdir "$(cros-workon_get_build_dir)"
+
+	if [[ -d "${privdir}" ]]; then
+		while read -d $'\0' -r file; do
+			rsync --recursive --links --executability \
+				"${file}" ./ || die
+		done < <(find "${privdir}" -maxdepth 1 -mindepth 1 -print0)
+	fi
+
+	cp -a "${FILESDIR}/3rdparty/"* 3rdparty
+
+	if use unibuild; then
+		local build_target
+
+		while read -r name; do
+			read -r coreboot
+			set_build_env "${coreboot}"
+			create_config "${coreboot}" "$(get_board)"
+		done < <(cros_config_host "get-firmware-build-combinations" coreboot || die)
+	else
+		set_build_env "$(get_board)"
+		create_config "$(get_board)"
+	fi
+}
+
+add_fw_blob() {
+	local rom="$1"
+	local cbname="$2"
+	local blob="$3"
+	local cbhash="${cbname%.bin}.hash"
+	local hash="${blob%.bin}.hash"
+
+	cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c lzma \
+		-f "${blob}" -n "${cbname}" || die
+	cbfstool "${rom}" add -r FW_MAIN_A,FW_MAIN_B -t raw -c none \
+		-f "${hash}" -n "${cbhash}" || die
+}
+
+# Build coreboot with a supplied configuration and output directory.
+#   $1: Build directory to use (e.g. "build_serial")
+#   $2: Config file to use (e.g. ".config_serial")
+#   $3: Build target build (e.g. "pyro"), for USE=unibuild only.
+make_coreboot() {
+	local builddir="$1"
+	local config_fname="$2"
+
+	rm -rf "${builddir}" .xcompile
+
+	local CB_OPTS=( "DOTCONFIG=${config_fname}" )
+	use quiet && CB_OPTS+=( "V=0" )
+	use verbose && CB_OPTS+=( "V=1" )
+	use quiet && REDIR="/dev/null" || REDIR="/dev/stdout"
+
+	# Configure and build coreboot.
+	yes "" | emake oldconfig "${CB_OPTS[@]}" obj="${builddir}" >${REDIR}
+	if grep -q "CONFIG_VENDOR_EMULATION=y" "${config_fname}"; then
+		local config_file
+		config_file="${FILESDIR}/configs/config.$(get_board)"
+		die "Working with a default configuration. ${config_file} incorrect?"
+	fi
+	emake "${CB_OPTS[@]}" obj="${builddir}" HOSTCC="$(tc-getBUILD_CC)" \
+		HOSTPKGCONFIG="$(tc-getBUILD_PKG_CONFIG)"
+
+	# Expand FW_MAIN_* since we might add some files
+	cbfstool "${builddir}/coreboot.rom" expand -r FW_MAIN_A,FW_MAIN_B
+
+	# Modify firmware descriptor if building for the EM100 emulator on
+	# Intel platforms.
+	# TODO(crbug.com/863396): Should we have an 'intel' USE flag? Do we
+	# still have any Intel platforms that don't use ifdtool?
+	if ! use amd_cpu && use em100-mode; then
+		einfo "Enabling em100 mode via ifdttool (slower SPI flash)"
+		ifdtool --em100 "${builddir}/coreboot.rom" || die
+		mv "${builddir}/coreboot.rom"{.new,} || die
+	fi
+}
+
+# Add fw blobs to the coreboot.rom.
+#   $1: Build directory to use (e.g. "build_serial")
+#   $2: Build target build (e.g. "pyro"), for USE=unibuild only.
+add_fw_blobs() {
+	local builddir="$1"
+	local build_target="$2"
+	local froot="${SYSROOT}/firmware"
+	local fblobroot="${SYSROOT}/firmware"
+
+	if use unibuild; then
+		froot+="/${build_target}"
+	fi
+
+	local blob
+	local cbname
+	for blob in ${FW_BLOBS}; do
+		local blobfile="${fblobroot}/${blob}"
+
+		# Use per-board blob if available
+		if use unibuild && [[ -e "${froot}/${blob}" ]]; then
+			blobfile="${froot}/${blob}"
+		fi
+
+		cbname=$(basename "${blob}")
+		add_fw_blob "${builddir}/coreboot.rom" "${cbname}" \
+			"${blobfile}" || die
+	done
+
+	if [ -d ${froot}/cbfs ]; then
+		die "something is still using ${froot}/cbfs, which is deprecated."
+	fi
+}
+
+src_compile() {
+	# Set KERNELREVISION (really coreboot revision) to the ebuild revision
+	# number followed by a dot and the first seven characters of the git
+	# hash. The name is confusing but consistent with the coreboot
+	# Makefile.
+	local sha1v="${VCSID/*-/}"
+	export KERNELREVISION=".${PV}.${sha1v:0:7}"
+
+	if ! use coreboot-sdk; then
+		tc-export CC
+		# Export the known cross compilers so there isn't a reliance
+		# on what the default profile is for exporting a compiler. The
+		# reasoning is that the firmware may need more than one to build
+		# and boot.
+		export CROSS_COMPILE_x86="i686-pc-linux-gnu-"
+		export CROSS_COMPILE_mipsel="mipsel-cros-linux-gnu-"
+		export CROSS_COMPILE_arm64="aarch64-cros-linux-gnu-"
+		export CROSS_COMPILE_arm="armv7a-cros-linux-gnu- armv7a-cros-linux-gnueabihf-"
+	else
+		export CROSS_COMPILE_x86=${COREBOOT_SDK_PREFIX_x86_32}
+		export CROSS_COMPILE_mipsel=${COREBOOT_SDK_PREFIX_mips}
+		export CROSS_COMPILE_arm64=${COREBOOT_SDK_PREFIX_arm64}
+		export CROSS_COMPILE_arm=${COREBOOT_SDK_PREFIX_arm}
+
+		export PATH=/opt/coreboot-sdk/bin:$PATH
+	fi
+
+	use verbose && elog "Toolchain:\n$(sh util/xcompile/xcompile)\n"
+
+	if use unibuild; then
+		while read -r name; do
+			read -r coreboot
+
+			set_build_env "${coreboot}"
+			make_coreboot "${BUILD_DIR}" "${CONFIG}"
+			add_fw_blobs "${BUILD_DIR}" "${coreboot}"
+
+			# Build a second ROM with serial support for developers.
+			make_coreboot "${BUILD_DIR_SERIAL}" "${CONFIG_SERIAL}"
+			add_fw_blobs "${BUILD_DIR_SERIAL}" "${coreboot}"
+		done < <(cros_config_host "get-firmware-build-combinations" coreboot || die)
+	else
+		set_build_env "$(get_board)"
+		make_coreboot "${BUILD_DIR}" "${CONFIG}"
+		add_fw_blobs "${BUILD_DIR}"
+
+		# Build a second ROM with serial support for developers.
+		make_coreboot "${BUILD_DIR_SERIAL}" "${CONFIG_SERIAL}"
+		add_fw_blobs "${BUILD_DIR_SERIAL}"
+	fi
+}
+
+# Install files into /firmware
+# Args:
+#   $1: The build combination name
+#   $2: The coreboot build target
+do_install() {
+	local build_combination="$1"
+	local build_target="$2"
+	local dest_dir="/firmware"
+	local mapfile
+
+	if [[ -n "${build_target}" ]]; then
+		dest_dir+="/${build_target}"
+		einfo "Installing coreboot ${build_target} into ${dest_dir}"
+	fi
+	insinto "${dest_dir}"
+
+	newins "${BUILD_DIR}/coreboot.rom" coreboot.rom
+	newins "${BUILD_DIR_SERIAL}/coreboot.rom" coreboot.rom.serial
+
+	OPROM=$( awk 'BEGIN{FS="\""} /CONFIG_VGA_BIOS_FILE=/ { print $2 }' \
+		"${CONFIG}" )
+	CBFSOPROM=pci$( awk 'BEGIN{FS="\""} /CONFIG_VGA_BIOS_ID=/ { print $2 }' \
+		"${CONFIG}" ).rom
+	FSP=$( awk 'BEGIN{FS="\""} /CONFIG_FSP_FILE=/ { print $2 }' \
+		"${CONFIG}" )
+	if [[ -n "${FSP}" ]]; then
+		newins ${FSP} fsp.bin
+	fi
+	# Save the psp_verstage binary for signing on AMD Fam17h platforms
+	if [[ -e "${BUILD_DIR}/psp_verstage.bin" ]]; then
+		newins "${BUILD_DIR}/psp_verstage.bin" psp_verstage.bin
+	fi
+	if [[ -n "${OPROM}" ]]; then
+		newins ${OPROM} ${CBFSOPROM}
+	fi
+	if use memmaps; then
+		for mapfile in "${BUILD_DIR}"/cbfs/fallback/*.map
+		do
+			doins $mapfile
+		done
+	fi
+	newins "${CONFIG}" coreboot.config
+	newins "${CONFIG_SERIAL}" coreboot_serial.config
+
+	# Keep binaries with debug symbols around for crash dump analysis
+	if [[ -s "${BUILD_DIR}/bl31.elf" ]]; then
+		newins "${BUILD_DIR}/bl31.elf" bl31.elf
+		newins "${BUILD_DIR_SERIAL}/bl31.elf" bl31.serial.elf
+	fi
+	insinto "${dest_dir}"/coreboot
+	doins "${BUILD_DIR}"/cbfs/fallback/*.debug
+	nonfatal doins "${BUILD_DIR}"/cbfs/fallback/bootblock.bin
+	insinto "${dest_dir}"/coreboot_serial
+	doins "${BUILD_DIR_SERIAL}"/cbfs/fallback/*.debug
+	nonfatal doins "${BUILD_DIR_SERIAL}"/cbfs/fallback/bootblock.bin
+
+	# coreboot's static_fw_config.h is copied into libpayload include
+	# directory.
+	local libpayload_subdir=legacy
+	if use unibuild; then
+		libpayload_subdir="${build_combination}"
+	fi
+	insinto "/firmware/${libpayload_subdir}/libpayload/libpayload/include"
+	doins "${BUILD_DIR}/static_fw_config.h"
+	einfo "Installed static_fw_config.h into libpayload include directory"
+}
+
+src_install() {
+	if use unibuild; then
+		while read -r name; do
+			read -r coreboot
+
+			set_build_env "${coreboot}"
+			do_install "${name}" "${coreboot}"
+		done < <(cros_config_host "get-firmware-build-combinations" coreboot || die)
+	else
+		set_build_env "$(get_board)"
+		do_install
+	fi
+}
diff --git a/sys-boot/coreboot/coreboot-9999.ebuild b/sys-boot/coreboot/coreboot-9999.ebuild
index d644d28..45a31d8 100644
--- a/sys-boot/coreboot/coreboot-9999.ebuild
+++ b/sys-boot/coreboot/coreboot-9999.ebuild
@@ -3,7 +3,7 @@
 
 # Change this version number when any change is made to configs/files under
 # coreboot and an auto-revbump is required.
-# VERSION=REVBUMP-0.0.68
+# VERSION=REVBUMP-0.0.71
 
 EAPI=7
 CROS_WORKON_PROJECT=(
@@ -51,9 +51,14 @@
 LICENSE="GPL-2"
 KEYWORDS="~*"
 IUSE="em100-mode fsp memmaps mocktpm quiet-cb rmt vmx mtc mma"
-IUSE="${IUSE} +bmpblk +intel_mrc qca-framework quiet unibuild verbose"
+IUSE="${IUSE} +bmpblk quiet unibuild verbose"
 IUSE="${IUSE} amd_cpu coreboot-sdk chipset_stoneyridge chipset_picasso"
-IUSE="${IUSE} generated_cros_config"
+IUSE="${IUSE} chipset_cezanne"
+# virtual/coreboot-private-files is deprecated. When adding a new board you
+# should add the coreboot-private-files-{board/chipset} ebuilds into the private
+# overlays, and avoid creating virtual packages.
+# See b/178642474
+IUSE="${IUSE} coreboot-private-files-board coreboot-private-files-chipset"
 # coreboot's build system handles stripping the binaries and producing a
 # separate .debug file with the symbols. This flag prevents portage from
 # stripping the .debug symbols
@@ -62,17 +67,14 @@
 RDEPEND=""
 DEPEND="
 	mtc? ( sys-boot/mtc:= )
+	coreboot-private-files-board? ( sys-boot/coreboot-private-files-board:= )
+	coreboot-private-files-chipset? ( sys-boot/coreboot-private-files-chipset:= )
 	virtual/coreboot-private-files
 	bmpblk? ( sys-boot/chromeos-bmpblk:= )
-	intel_mrc? ( x86? ( sys-boot/chromeos-mrc:= )
-		amd64? ( sys-boot/chromeos-mrc:= ) )
 	chipset_stoneyridge? ( sys-boot/amd-firmware:= )
 	chipset_picasso? ( >=sys-boot/amd-picasso-fsp-0.0.2:= )
-	qca-framework? ( sys-boot/qca-framework:= )
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
+	chipset_cezanne? ( sys-boot/amd-cezanne-fsp:= )
+	unibuild? ( chromeos-base/chromeos-config:= )
 	"
 
 # Get the coreboot board config to build for.
@@ -160,10 +162,6 @@
 		echo "CONFIG_MMA=y" >> "${CONFIG}"
 	fi
 
-	# allow using non-coreboot toolchains unless we use it anyway
-	if ! use coreboot-sdk; then
-		echo "CONFIG_ANY_TOOLCHAIN=y" >> "${CONFIG}"
-	fi
 	# disable coreboot's own EC firmware building mechanism
 	echo "CONFIG_EC_GOOGLE_CHROMEEC_FIRMWARE_NONE=y" >> "${CONFIG}"
 	echo "CONFIG_EC_GOOGLE_CHROMEEC_PD_FIRMWARE_NONE=y" >> "${CONFIG}"
@@ -194,6 +192,14 @@
 	# handle the case when "${CONFIG_SERIAL}" does not have a newline in the end.
 	echo >> "${CONFIG_SERIAL}"
 
+	# Check that we're using coreboot-sdk
+	if ! use coreboot-sdk; then
+		die "Enable coreboot-sdk to build coreboot."
+	fi
+	if grep -q "^CONFIG_ANY_TOOLCHAIN=y" "${CONFIG}"; then
+		die "Drop ANY_TOOLCHAIN from ${CONFIG}: we don't support it anymore."
+	fi
+
 	einfo "Configured ${CONFIG} for board ${board} in ${BUILD_DIR}"
 }
 
@@ -213,12 +219,6 @@
 		done < <(find "${privdir}" -maxdepth 1 -mindepth 1 -print0)
 	fi
 
-	for blob in mrc.bin mrc.elf efi.elf; do
-		if [[ -r "${SYSROOT}/firmware/${blob}" ]]; then
-			cp "${SYSROOT}/firmware/${blob}" 3rdparty/blobs/
-		fi
-	done
-
 	cp -a "${FILESDIR}/3rdparty/"* 3rdparty
 
 	if use unibuild; then
@@ -372,8 +372,13 @@
 	fi
 }
 
+# Install files into /firmware
+# Args:
+#   $1: The build combination name
+#   $2: The coreboot build target
 do_install() {
-	local build_target="$1"
+	local build_combination="$1"
+	local build_target="$2"
 	local dest_dir="/firmware"
 	local mapfile
 
@@ -423,17 +428,15 @@
 	doins "${BUILD_DIR_SERIAL}"/cbfs/fallback/*.debug
 	nonfatal doins "${BUILD_DIR_SERIAL}"/cbfs/fallback/bootblock.bin
 
-	# coreboot's static_fw_config.h is copied into
-	# /firmware/libpayload/include in order for other firmware to consume
-	# the FW_CONFIG decoder macros. For unibuild, it is renamed to include
-	# the build target.
-	insinto "/firmware/libpayload/include"
+	# coreboot's static_fw_config.h is copied into libpayload include
+	# directory.
+	local libpayload_subdir=legacy
 	if use unibuild; then
-		newins "${BUILD_DIR}"/static_fw_config.h "static_fw_config_${build_target}.h"
-	else
-		doins "${BUILD_DIR}"/static_fw_config.h
+		libpayload_subdir="${build_combination}"
 	fi
-	einfo "Installed static_fw_config.h into /firmware/libpayload/include"
+	insinto "/firmware/${libpayload_subdir}/libpayload/libpayload/include"
+	doins "${BUILD_DIR}/static_fw_config.h"
+	einfo "Installed static_fw_config.h into libpayload include directory"
 }
 
 src_install() {
@@ -442,7 +445,7 @@
 			read -r coreboot
 
 			set_build_env "${coreboot}"
-			do_install "${coreboot}"
+			do_install "${name}" "${coreboot}"
 		done < <(cros_config_host "get-firmware-build-combinations" coreboot || die)
 	else
 		set_build_env "$(get_board)"
diff --git a/sys-boot/coreboot/files/configs/config.adlrvp_m_ext_ec b/sys-boot/coreboot/files/configs/config.adlrvp_m_ext_ec
new file mode 100644
index 0000000..722c8c3
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.adlrvp_m_ext_ec
@@ -0,0 +1,46 @@
+CONFIG_VENDOR_INTEL=y
+CONFIG_BOARD_INTEL_ADLRVP_M_EXT_EC=y
+CONFIG_MAINBOARD_SMBIOS_PRODUCT_NAME="adlrvp"
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/mainboard/google/brya/descriptor-adlrvp_m.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/adl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/adl/fsp/fsps.bin"
+CONFIG_RUN_FSP_GOP=y
+CONFIG_DISPLAY_FSP_CALLS_AND_STATUS=y
+CONFIG_DISPLAY_FSP_HEADER=y
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/mainboard/google/brya/csme-adlrvp_m.bin"
+
+# Microcode
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/mainboard/google/brya/ucode.bin"
+
+# Video Blob
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/mainboard/google/brya/vbt_adlrvp_m.bin"
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_HAVE_VBT=y
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.adlrvp_p b/sys-boot/coreboot/files/configs/config.adlrvp_p
new file mode 100644
index 0000000..f9da3b3
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.adlrvp_p
@@ -0,0 +1,50 @@
+CONFIG_VENDOR_INTEL=y
+CONFIG_BOARD_INTEL_ADLRVP_P=y
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/mainboard/google/brya/descriptor-adlrvp_p.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/adl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/adl/fsp/fsps.bin"
+CONFIG_RUN_FSP_GOP=y
+CONFIG_DISPLAY_FSP_CALLS_AND_STATUS=y
+CONFIG_DISPLAY_FSP_HEADER=y
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/mainboard/google/brya/csme-adlrvp_p.bin"
+
+# Microcode
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/mainboard/google/brya/ucode.bin"
+
+# Video Blob
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/mainboard/google/brya/vbt.bin"
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_HAVE_VBT=y
+
+# EC
+CONFIG_HAVE_EC_BIN=y
+CONFIG_EC_BIN_PATH="3rdparty/blobs/mainboard/google/brya/ec-adlrvp_p.bin"
+CONFIG_ADL_INTEL_EC=y
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.adlrvp_p_ext_ec b/sys-boot/coreboot/files/configs/config.adlrvp_p_ext_ec
new file mode 100644
index 0000000..7ab03e1
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.adlrvp_p_ext_ec
@@ -0,0 +1,50 @@
+CONFIG_VENDOR_INTEL=y
+CONFIG_BOARD_INTEL_ADLRVP_P=y
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/mainboard/google/brya/descriptor-adlrvp_p.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/adl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/adl/fsp/fsps.bin"
+CONFIG_RUN_FSP_GOP=y
+CONFIG_DISPLAY_FSP_CALLS_AND_STATUS=y
+CONFIG_DISPLAY_FSP_HEADER=y
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/mainboard/google/brya/csme-adlrvp_p.bin"
+
+# Microcode
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/mainboard/google/brya/ucode.bin"
+
+# Video Blob
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/mainboard/google/brya/vbt.bin"
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_HAVE_VBT=y
+
+# EC
+CONFIG_HAVE_EC_BIN=y
+CONFIG_EC_BIN_PATH="3rdparty/blobs/mainboard/google/brya/ec-adlrvp_p.bin"
+CONFIG_BOARD_INTEL_ADLRVP_P_EXT_EC=y
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.ampton b/sys-boot/coreboot/files/configs/config.ampton
index 03a9327..d7529b8 100644
--- a/sys-boot/coreboot/files/configs/config.ampton
+++ b/sys-boot/coreboot/files/configs/config.ampton
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
diff --git a/sys-boot/coreboot/files/configs/config.atlas b/sys-boot/coreboot/files/configs/config.atlas
index 0485c94..befeff8 100644
--- a/sys-boot/coreboot/files/configs/config.atlas
+++ b/sys-boot/coreboot/files/configs/config.atlas
@@ -26,6 +26,5 @@
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
 CONFIG_PAYLOAD_NONE=y
-CONFIG_WIFI_SAR_CBFS=y
 CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/mainboard/google/atlas/wifi_sar_defaults.hex"
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
diff --git a/sys-boot/coreboot/files/configs/config.berknip b/sys-boot/coreboot/files/configs/config.berknip
index 5156d99..ad1b45d 100644
--- a/sys-boot/coreboot/files/configs/config.berknip
+++ b/sys-boot/coreboot/files/configs/config.berknip
@@ -12,10 +12,6 @@
 # CONFIG_CONSOLE_SERIAL is not set
 # CONFIG_PSP_LOAD_MP2_FW is not set
 
-# Signed PSP verstage
-CONFIG_PSP_VERSTAGE_FILE="3rdparty/blobs/mainboard/google/zork/berknip_psp_verstage.bin.signed"
-CONFIG_PSP_VERSTAGE_SIGNING_TOKEN="3rdparty/blobs/mainboard/google/zork/PCO_psp_verstagebl_fw_signing.stkn"
-
 # Event Logging
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
diff --git a/sys-boot/coreboot/files/configs/config.blipper b/sys-boot/coreboot/files/configs/config.blipper
new file mode 100644
index 0000000..e9040e0
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.blipper
@@ -0,0 +1,50 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_BLIPPER=y
+CONFIG_USE_BLOBS=y
+CONFIG_PAYLOAD_NONE=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_SMM=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_COLLECT_TIMESTAMPS=y
+CONFIG_ELOG=y
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+# Firmware Support Package
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/jsl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/jsl/fsp/fsps.bin"
+
+# Enable VBT
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_RUN_FSP_GOP=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt_blipper.bin"
+
+# Microcode
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-dedede/ucode.bin"
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-dedede/descriptor-blipper.bin"
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-dedede/me-blipper.bin"
+# CONFIG_LOCK_MANAGEMENT_ENGINE is not set
+
+# CSE RW Update Feature
+CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-blipper.bin"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
+
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.bloog b/sys-boot/coreboot/files/configs/config.bloog
index 917f979..324ded9 100644
--- a/sys-boot/coreboot/files/configs/config.bloog
+++ b/sys-boot/coreboot/files/configs/config.bloog
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -54,6 +53,5 @@
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
 
 # WiFi SAR
-CONFIG_WIFI_SAR_CBFS=y
 # FILEPATH is set to blank to prevent any default SAR file from getting added.
 CONFIG_WIFI_SAR_CBFS_FILEPATH=""
diff --git a/sys-boot/coreboot/files/configs/config.bobba b/sys-boot/coreboot/files/configs/config.bobba
index 20e2954..0a3a9fd 100644
--- a/sys-boot/coreboot/files/configs/config.bobba
+++ b/sys-boot/coreboot/files/configs/config.bobba
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -52,6 +51,5 @@
 # CONFIG_CONSOLE_SERIAL is not set
 
 # WiFi SAR
-CONFIG_WIFI_SAR_CBFS=y
 CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/baseboard-octopus/wifi_sar/wifi_sar-bobba360.hex"
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
diff --git a/sys-boot/coreboot/files/configs/config.boldar b/sys-boot/coreboot/files/configs/config.boldar
deleted file mode 100644
index 0d018ce..0000000
--- a/sys-boot/coreboot/files/configs/config.boldar
+++ /dev/null
@@ -1,45 +0,0 @@
-CONFIG_VENDOR_GOOGLE=y
-CONFIG_BOARD_GOOGLE_BOLDAR=y
-
-CONFIG_PAYLOAD_NONE=y
-CONFIG_USE_BLOBS=y
-
-# Chrome OS
-CONFIG_CHROMEOS=y
-
-# SPI Descriptor
-CONFIG_HAVE_IFD_BIN=y
-CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-volteer/descriptor-boldar.bin"
-
-# FSP Blobs
-CONFIG_ADD_FSP_BINARIES=y
-CONFIG_HAVE_INTEL_FSP_REPO=y
-# CONFIG_FSP_USE_REPO is not set
-CONFIG_FSP_M_FILE="3rdparty/blobs/intel/tgl/fsp/fspm.bin"
-CONFIG_FSP_S_FILE="3rdparty/blobs/intel/tgl/fsp/fsps.bin"
-CONFIG_FSP_M_XIP=y
-CONFIG_RUN_FSP_GOP=y
-
-# Management Engine
-CONFIG_HAVE_ME_BIN=y
-CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-volteer/csme-boldar.bin"
-
-# Microcode
-CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
-CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
-
-# Video Blob
-CONFIG_INTEL_GMA_ADD_VBT=y
-CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-volteer/vbt.bin"
-
-# Serial console disabled by default (do not remove)
-# CONFIG_CONSOLE_SERIAL is not set
-
-# Event Logging
-CONFIG_CMOS_POST=y
-CONFIG_CMOS_POST_OFFSET=0x70
-CONFIG_ELOG_GSMI=y
-CONFIG_ELOG_BOOT_COUNT=y
-CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
-
-CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.boten b/sys-boot/coreboot/files/configs/config.boten
index 8628618..7eb2a95 100644
--- a/sys-boot/coreboot/files/configs/config.boten
+++ b/sys-boot/coreboot/files/configs/config.boten
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -45,6 +44,11 @@
 # CSE RW Update Feature
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-boten.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
+# WiFi SAR
+CONFIG_WIFI_SAR_CBFS=y
+CONFIG_CHROMEOS_WIFI_SAR=y
+# FILEPATH is set to blank to prevent any default SAR file from getting added.
+CONFIG_WIFI_SAR_CBFS_FILEPATH=""
 
 # CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.boten_legacy b/sys-boot/coreboot/files/configs/config.boten_legacy
index 4b8ac48..cd96d8f 100644
--- a/sys-boot/coreboot/files/configs/config.boten_legacy
+++ b/sys-boot/coreboot/files/configs/config.boten_legacy
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
diff --git a/sys-boot/coreboot/files/configs/config.brya0 b/sys-boot/coreboot/files/configs/config.brya0
new file mode 100644
index 0000000..db387e92
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.brya0
@@ -0,0 +1,54 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_BRYA0=y
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+# Waiting for FIT kit, b/173078987
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/mainboard/google/brya/descriptor-brya0.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/adl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/adl/fsp/fsps.bin"
+CONFIG_FSP_M_XIP=y
+CONFIG_RUN_FSP_GOP=y
+
+# TODO: b/178846328
+#CONFIG_FSP_HEADER_PATH="3rdparty/blobs/intel/adl/fsp/Include/"
+#CONFIG_FSP_USE_REPO is not set
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/mainboard/google/brya/csme-brya0.bin"
+
+# Management Engine FW update
+# Waiting for CSE Lite FIT kit, b/173078987
+### CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+### CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/mainboard/google/brya/me_rw-brya0.bin"
+### CONFIG_SOC_INTEL_CSE_RW_VERSION="a.b.c.d"
+
+# Microcode
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/mainboard/google/brya/ucode.bin"
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+
+# Video Blob
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/mainboard/google/brya/vbt.bin"
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.casta b/sys-boot/coreboot/files/configs/config.casta
index 9d3a15c..a3a86c61 100644
--- a/sys-boot/coreboot/files/configs/config.casta
+++ b/sys-boot/coreboot/files/configs/config.casta
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -52,5 +51,4 @@
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
 
 # WiFi SAR
-CONFIG_WIFI_SAR_CBFS=y
 CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/baseboard-octopus/wifi_sar/wifi_sar-casta.hex"
diff --git a/sys-boot/coreboot/files/configs/config.cherry b/sys-boot/coreboot/files/configs/config.cherry
new file mode 100644
index 0000000..3a9ce76
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.cherry
@@ -0,0 +1,4 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_CHERRY=y
+CONFIG_CHROMEOS=y
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.cheza b/sys-boot/coreboot/files/configs/config.cheza
deleted file mode 100644
index 2af2179..0000000
--- a/sys-boot/coreboot/files/configs/config.cheza
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_VENDOR_GOOGLE=y
-CONFIG_BOARD_GOOGLE_CHEZA=y
-CONFIG_CHROMEOS=y
-# CONFIG_CONSOLE_SERIAL is not set
-CONFIG_USE_BLOBS=y
diff --git a/sys-boot/coreboot/files/configs/config.chronicler b/sys-boot/coreboot/files/configs/config.chronicler
new file mode 100644
index 0000000..ce60729
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.chronicler
@@ -0,0 +1,45 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_CHRONICLER=y
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-volteer/descriptor-chronicler.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/tgl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/tgl/fsp/fsps.bin"
+CONFIG_FSP_M_XIP=y
+CONFIG_RUN_FSP_GOP=y
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-volteer/csme-chronicler.bin"
+
+# Microcode
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+
+# Video Blob
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-volteer/vbt.bin"
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.collis b/sys-boot/coreboot/files/configs/config.collis
new file mode 100644
index 0000000..55d802e
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.collis
@@ -0,0 +1,50 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_COLLIS=y
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-volteer/descriptor-collis.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/tgl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/tgl/fsp/fsps.bin"
+CONFIG_FSP_M_XIP=y
+CONFIG_RUN_FSP_GOP=y
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-volteer/csme-collis.bin"
+
+# Management Engine FW update
+CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-collis.bin"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
+
+# Microcode
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+
+# Video Blob
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-volteer/vbt.bin"
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.copano b/sys-boot/coreboot/files/configs/config.copano
new file mode 100644
index 0000000..762e8b4
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.copano
@@ -0,0 +1,54 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_COPANO=y
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-volteer/descriptor-copano.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/tgl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/tgl/fsp/fsps.bin"
+CONFIG_FSP_M_XIP=y
+CONFIG_RUN_FSP_GOP=y
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-volteer/csme-copano.bin"
+
+# Management Engine FW update
+CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-copano.bin"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
+
+# WiFi SAR
+CONFIG_CHROMEOS_WIFI_SAR=y
+CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/baseboard-volteer/wifi_sar/wifi_sar-copano.hex"
+
+# Microcode
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+
+# Video Blob
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-volteer/vbt.bin"
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.cozmo b/sys-boot/coreboot/files/configs/config.cozmo
new file mode 100644
index 0000000..79368d4
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.cozmo
@@ -0,0 +1,5 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_COZMO=y
+CONFIG_CHROMEOS=y
+# CONFIG_BOOTBLOCK_CONSOLE is not set
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.cret b/sys-boot/coreboot/files/configs/config.cret
new file mode 100644
index 0000000..c3d19fc
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.cret
@@ -0,0 +1,51 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_CRET=y
+CONFIG_USE_BLOBS=y
+CONFIG_PAYLOAD_NONE=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_SMM=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_COLLECT_TIMESTAMPS=y
+CONFIG_ELOG=y
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+# Firmware Support Package
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/jsl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/jsl/fsp/fsps.bin"
+# CONFIG_FSP_HEADER_PATH is not set
+
+# Enable VBT
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_RUN_FSP_GOP=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt_cret.bin"
+
+# Microcode
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-dedede/ucode.bin"
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-dedede/descriptor-cret.bin"
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-dedede/me-cret.bin"
+# CONFIG_LOCK_MANAGEMENT_ENGINE is not set
+
+# CSE RW Update Feature
+CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-cret.bin"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
+
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.dalboz b/sys-boot/coreboot/files/configs/config.dalboz
index bef8867..5551aed 100644
--- a/sys-boot/coreboot/files/configs/config.dalboz
+++ b/sys-boot/coreboot/files/configs/config.dalboz
@@ -15,10 +15,6 @@
 # CONFIG_CONSOLE_SERIAL is not set
 # CONFIG_PSP_LOAD_MP2_FW is not set
 
-# Signed PSP verstage
-CONFIG_PSP_VERSTAGE_FILE="3rdparty/blobs/mainboard/google/zork/dalboz_psp_verstage.bin.signed"
-CONFIG_PSP_VERSTAGE_SIGNING_TOKEN="3rdparty/blobs/mainboard/google/zork/PCO_psp_verstagebl_fw_signing.stkn"
-
 # Event Logging
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
diff --git a/sys-boot/coreboot/files/configs/config.delbin b/sys-boot/coreboot/files/configs/config.delbin
index 1641e5f..01bf794 100644
--- a/sys-boot/coreboot/files/configs/config.delbin
+++ b/sys-boot/coreboot/files/configs/config.delbin
@@ -27,7 +27,7 @@
 # Management Engine FW update
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-delbin.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.10.1531"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
 
 # WiFi SAR
 CONFIG_CHROMEOS_WIFI_SAR=y
diff --git a/sys-boot/coreboot/files/configs/config.dirinboz b/sys-boot/coreboot/files/configs/config.dirinboz
index a33973e..23f9af5 100644
--- a/sys-boot/coreboot/files/configs/config.dirinboz
+++ b/sys-boot/coreboot/files/configs/config.dirinboz
@@ -15,10 +15,6 @@
 # CONFIG_CONSOLE_SERIAL is not set
 # CONFIG_PSP_LOAD_MP2_FW is not set
 
-# Signed PSP verstage
-CONFIG_PSP_VERSTAGE_FILE="3rdparty/blobs/mainboard/google/zork/dirinboz_psp_verstage.bin.signed"
-CONFIG_PSP_VERSTAGE_SIGNING_TOKEN="3rdparty/blobs/mainboard/google/zork/PCO_psp_verstagebl_fw_signing.stkn"
-
 # Event Logging
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
diff --git a/sys-boot/coreboot/files/configs/config.dood b/sys-boot/coreboot/files/configs/config.dood
index 8f2cc6a..98859ba3 100644
--- a/sys-boot/coreboot/files/configs/config.dood
+++ b/sys-boot/coreboot/files/configs/config.dood
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
diff --git a/sys-boot/coreboot/files/configs/config.drawcia b/sys-boot/coreboot/files/configs/config.drawcia
index d3f6a12..47cbd64 100644
--- a/sys-boot/coreboot/files/configs/config.drawcia
+++ b/sys-boot/coreboot/files/configs/config.drawcia
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -46,7 +45,7 @@
 # CSE RW Update Feature
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-drawcia.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
 
 # WiFi SAR
 CONFIG_CHROMEOS_WIFI_SAR=y
diff --git a/sys-boot/coreboot/files/configs/config.drawcia_legacy b/sys-boot/coreboot/files/configs/config.drawcia_legacy
index b6b60a0..788a984 100644
--- a/sys-boot/coreboot/files/configs/config.drawcia_legacy
+++ b/sys-boot/coreboot/files/configs/config.drawcia_legacy
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 CONFIG_BOARD_ROMSIZE_KB_32768=y
 
 # Chrome OS
diff --git a/sys-boot/coreboot/files/configs/config.drobit b/sys-boot/coreboot/files/configs/config.drobit
index 7ef78ef..bbd42bb 100644
--- a/sys-boot/coreboot/files/configs/config.drobit
+++ b/sys-boot/coreboot/files/configs/config.drobit
@@ -27,7 +27,11 @@
 # Management Engine FW update
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-drobit.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.10.1531"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
+
+# WiFi SAR
+CONFIG_CHROMEOS_WIFI_SAR=y
+CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/baseboard-volteer/wifi_sar/wifi_sar-drobit.hex"
 
 # Microcode
 CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
diff --git a/sys-boot/coreboot/files/configs/config.eldrid b/sys-boot/coreboot/files/configs/config.eldrid
index 7d06fd8..30267a2 100644
--- a/sys-boot/coreboot/files/configs/config.eldrid
+++ b/sys-boot/coreboot/files/configs/config.eldrid
@@ -27,7 +27,7 @@
 # Management Engine FW update
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-eldrid.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.10.1531"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
 
 # Microcode
 CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
diff --git a/sys-boot/coreboot/files/configs/config.elemi b/sys-boot/coreboot/files/configs/config.elemi
index 114e188..f865c2e 100644
--- a/sys-boot/coreboot/files/configs/config.elemi
+++ b/sys-boot/coreboot/files/configs/config.elemi
@@ -27,7 +27,7 @@
 # Management Engine FW update
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-elemi.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.10.1531"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
 
 # Microcode
 CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
diff --git a/sys-boot/coreboot/files/configs/config.ezkinil b/sys-boot/coreboot/files/configs/config.ezkinil
index 6b6131ca..affa0f5 100644
--- a/sys-boot/coreboot/files/configs/config.ezkinil
+++ b/sys-boot/coreboot/files/configs/config.ezkinil
@@ -15,10 +15,6 @@
 # CONFIG_CONSOLE_SERIAL is not set
 # CONFIG_PSP_LOAD_MP2_FW is not set
 
-# Signed PSP verstage
-CONFIG_PSP_VERSTAGE_FILE="3rdparty/blobs/mainboard/google/zork/ezkinil_psp_verstage.bin.signed"
-CONFIG_PSP_VERSTAGE_SIGNING_TOKEN="3rdparty/blobs/mainboard/google/zork/PCO_psp_verstagebl_fw_signing.stkn"
-
 # Event Logging
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
@@ -34,5 +30,4 @@
 CONFIG_VBE_LINEAR_FRAMEBUFFER=y
 
 # WiFi SAR
-CONFIG_WIFI_SAR_CBFS=y
 CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/zork/wifi_sar/wifi_sar-ezkinil.hex"
diff --git a/sys-boot/coreboot/files/configs/config.fleex b/sys-boot/coreboot/files/configs/config.fleex
index 91b321a..1cb11be 100644
--- a/sys-boot/coreboot/files/configs/config.fleex
+++ b/sys-boot/coreboot/files/configs/config.fleex
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -52,6 +51,5 @@
 # CONFIG_CONSOLE_SERIAL is not set
 
 # WiFi SAR
-CONFIG_WIFI_SAR_CBFS=y
 CONFIG_WIFI_SAR_CBFS_FILEPATH=""
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
diff --git a/sys-boot/coreboot/files/configs/config.foob b/sys-boot/coreboot/files/configs/config.foob
index 25f21f7..c89532d 100644
--- a/sys-boot/coreboot/files/configs/config.foob
+++ b/sys-boot/coreboot/files/configs/config.foob
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -47,7 +46,6 @@
 CONFIG_IFWI_FILE_NAME="3rdparty/blobs/baseboard-octopus/fitimage-foob.bin"
 
 # WiFi SAR
-CONFIG_WIFI_SAR_CBFS=y
 # FILEPATH is set to blank to prevent any default SAR file from getting added.
 CONFIG_WIFI_SAR_CBFS_FILEPATH=""
 
diff --git a/sys-boot/coreboot/files/configs/config.galtic b/sys-boot/coreboot/files/configs/config.galtic
index c44e1229..43e0d7e 100644
--- a/sys-boot/coreboot/files/configs/config.galtic
+++ b/sys-boot/coreboot/files/configs/config.galtic
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -46,6 +45,11 @@
 # CSE RW Update Feature
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-galtic.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
+
+# WiFi SAR
+CONFIG_CHROMEOS_WIFI_SAR=y
+# FILEPATH is set to blank to prevent any default SAR file from getting added.
+CONFIG_WIFI_SAR_CBFS_FILEPATH=""
 
 # CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.garg b/sys-boot/coreboot/files/configs/config.garg
index bd21d16..89b2e09 100644
--- a/sys-boot/coreboot/files/configs/config.garg
+++ b/sys-boot/coreboot/files/configs/config.garg
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
diff --git a/sys-boot/coreboot/files/configs/config.genesis b/sys-boot/coreboot/files/configs/config.genesis
index f3054b2..32c0623 100644
--- a/sys-boot/coreboot/files/configs/config.genesis
+++ b/sys-boot/coreboot/files/configs/config.genesis
@@ -28,7 +28,7 @@
 # vbt
 CONFIG_INTEL_GMA_ADD_VBT=y
 CONFIG_RUN_FSP_GOP=y
-CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard/puff/vbt.bin"
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard/puff/vbt-genesis.bin"
 CONFIG_SPI_FLASH_SMM=y
 
 # Microcode
diff --git a/sys-boot/coreboot/files/configs/config.gimble b/sys-boot/coreboot/files/configs/config.gimble
new file mode 100644
index 0000000..0b1cb42
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.gimble
@@ -0,0 +1,51 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_GIMBLE=y
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/mainboard/google/brya/descriptor-gimble.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/adl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/adl/fsp/fsps.bin"
+CONFIG_FSP_M_XIP=y
+CONFIG_RUN_FSP_GOP=y
+
+#CONFIG_FSP_HEADER_PATH="3rdparty/blobs/intel/adl/fsp/Include/"
+#CONFIG_FSP_USE_REPO is not set
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/mainboard/google/brya/csme-gimble.bin"
+
+# Management Engine FW update
+### CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+### CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/mainboard/google/brya/me_rw-gimble.bin"
+### CONFIG_SOC_INTEL_CSE_RW_VERSION="a.b.c.d"
+
+# Microcode
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/mainboard/google/brya/ucode.bin"
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+
+# Video Blob
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/mainboard/google/brya/vbt.bin"
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.glkrvp b/sys-boot/coreboot/files/configs/config.glkrvp
index 36662f0..66bf442 100644
--- a/sys-boot/coreboot/files/configs/config.glkrvp
+++ b/sys-boot/coreboot/files/configs/config.glkrvp
@@ -8,7 +8,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
diff --git a/sys-boot/coreboot/files/configs/config.gumboz b/sys-boot/coreboot/files/configs/config.gumboz
index 581012b..59b9ef0 100644
--- a/sys-boot/coreboot/files/configs/config.gumboz
+++ b/sys-boot/coreboot/files/configs/config.gumboz
@@ -15,10 +15,6 @@
 # CONFIG_CONSOLE_SERIAL is not set
 # CONFIG_PSP_LOAD_MP2_FW is not set
 
-# Signed PSP verstage
-CONFIG_PSP_VERSTAGE_FILE="3rdparty/blobs/mainboard/google/zork/dalboz_psp_verstage.bin.signed"
-CONFIG_PSP_VERSTAGE_SIGNING_TOKEN="3rdparty/blobs/mainboard/google/zork/PCO_psp_verstagebl_fw_signing.stkn"
-
 # Event Logging
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
@@ -32,3 +28,6 @@
 CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
 CONFIG_FRAMEBUFFER_VESA_MODE=0x1D4
 CONFIG_VBE_LINEAR_FRAMEBUFFER=y
+
+# WiFi SAR
+CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/zork/wifi_sar/wifi_sar-gumboz.hex"
diff --git a/sys-boot/coreboot/files/configs/config.guybrush b/sys-boot/coreboot/files/configs/config.guybrush
index c2a84f9..9096c61 100644
--- a/sys-boot/coreboot/files/configs/config.guybrush
+++ b/sys-boot/coreboot/files/configs/config.guybrush
@@ -1,5 +1,23 @@
-CONFIG_USE_BLOBS=y
+CONFIG_ADD_FSP_BINARIES=y
 CONFIG_VENDOR_GOOGLE=y
 CONFIG_BOARD_GOOGLE_GUYBRUSH=y
+CONFIG_FSP_M_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_M.fd"
+CONFIG_FSP_S_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_S.fd"
 CONFIG_CHROMEOS=y
 CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+CONFIG_USE_AMD_BLOBS=y
+CONFIG_VGA_BIOS=y
+CONFIG_VGA_BIOS_ID="1002,1638"
+CONFIG_VGA_BIOS_FILE="3rdparty/amd_blobs/cezanne/CezanneGenericVbios.bin"
+CONFIG_RUN_FSP_GOP=y
+# CONFIG_CONSOLE_SERIAL is not set
+CONFIG_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC=y
+CONFIG_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC=y
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_COLLECT_TIMESTAMPS=y
+CONFIG_ELOG=y
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
diff --git a/sys-boot/coreboot/files/configs/config.herobrine b/sys-boot/coreboot/files/configs/config.herobrine
new file mode 100644
index 0000000..b0656da
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.herobrine
@@ -0,0 +1,6 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_HEROBRINE=y
+CONFIG_CHROMEOS=y
+# CONFIG_CONSOLE_SERIAL is not set
+CONFIG_USE_BLOBS=y
+CONFIG_USE_QC_BLOBS=y
diff --git a/sys-boot/coreboot/files/configs/config.homestar b/sys-boot/coreboot/files/configs/config.homestar
new file mode 100644
index 0000000..8957ef0
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.homestar
@@ -0,0 +1,6 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_HOMESTAR=y
+CONFIG_CHROMEOS=y
+# CONFIG_CONSOLE_SERIAL is not set
+CONFIG_USE_BLOBS=y
+CONFIG_USE_QC_BLOBS=y
diff --git a/sys-boot/coreboot/files/configs/config.jslrvp b/sys-boot/coreboot/files/configs/config.jslrvp
index 9eb8977..dde4ed0 100644
--- a/sys-boot/coreboot/files/configs/config.jslrvp
+++ b/sys-boot/coreboot/files/configs/config.jslrvp
@@ -1,4 +1,3 @@
-CONFIG_ANY_TOOLCHAIN=y
 CONFIG_USE_BLOBS=y
 CONFIG_VENDOR_INTEL=y
 CONFIG_CBFS_SIZE=0x300000
@@ -9,7 +8,7 @@
 CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-dedede/me-jslrvp.bin"
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-jslrvp.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
 CONFIG_HAVE_IFD_BIN=y
 CONFIG_ADD_FSP_BINARIES=y
 CONFIG_HAVE_INTEL_FSP_REPO=y
diff --git a/sys-boot/coreboot/files/configs/config.jslrvp_ext_ec b/sys-boot/coreboot/files/configs/config.jslrvp_ext_ec
index 872ad85..fadd622 100644
--- a/sys-boot/coreboot/files/configs/config.jslrvp_ext_ec
+++ b/sys-boot/coreboot/files/configs/config.jslrvp_ext_ec
@@ -1,4 +1,3 @@
-CONFIG_ANY_TOOLCHAIN=y
 CONFIG_USE_BLOBS=y
 CONFIG_VENDOR_INTEL=y
 CONFIG_CBFS_SIZE=0x300000
diff --git a/sys-boot/coreboot/files/configs/config.katsu b/sys-boot/coreboot/files/configs/config.katsu
new file mode 100644
index 0000000..770e202
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.katsu
@@ -0,0 +1,5 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_KATSU=y
+CONFIG_CHROMEOS=y
+# CONFIG_BOOTBLOCK_CONSOLE is not set
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.kracko b/sys-boot/coreboot/files/configs/config.kracko
new file mode 100644
index 0000000..64cc796
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.kracko
@@ -0,0 +1,50 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_KRACKO=y
+CONFIG_USE_BLOBS=y
+CONFIG_PAYLOAD_NONE=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_SMM=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_COLLECT_TIMESTAMPS=y
+CONFIG_ELOG=y
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+# Firmware Support Package
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/jsl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/jsl/fsp/fsps.bin"
+
+# Enable VBT
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_RUN_FSP_GOP=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt.bin"
+
+# Microcode
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-dedede/ucode.bin"
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-dedede/descriptor-kracko.bin"
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-dedede/me-kracko.bin"
+# CONFIG_LOCK_MANAGEMENT_ENGINE is not set
+
+# CSE RW Update Feature
+CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-kracko.bin"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
+
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.lalala b/sys-boot/coreboot/files/configs/config.lalala
new file mode 100644
index 0000000..eddc251
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.lalala
@@ -0,0 +1,55 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_LALALA=y
+CONFIG_USE_BLOBS=y
+CONFIG_PAYLOAD_NONE=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_SMM=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_COLLECT_TIMESTAMPS=y
+CONFIG_ELOG=y
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+# Firmware Support Package
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/jsl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/jsl/fsp/fsps.bin"
+
+# Enable VBT
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_RUN_FSP_GOP=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt_lalala.bin"
+
+# Microcode
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-dedede/ucode.bin"
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-dedede/descriptor-lalala.bin"
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-dedede/me-lalala.bin"
+# CONFIG_LOCK_MANAGEMENT_ENGINE is not set
+
+# CSE RW Update Feature
+CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-lalala.bin"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+
+# WiFi SAR
+CONFIG_CHROMEOS_WIFI_SAR=y
+# FILEPATH is set to blank to prevent any default SAR file from getting added.
+CONFIG_WIFI_SAR_CBFS_FILEPATH=""
+
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.lantis b/sys-boot/coreboot/files/configs/config.lantis
index 18ad439..d0a1853 100644
--- a/sys-boot/coreboot/files/configs/config.lantis
+++ b/sys-boot/coreboot/files/configs/config.lantis
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -28,7 +27,7 @@
 # Enable VBT
 CONFIG_INTEL_GMA_ADD_VBT=y
 CONFIG_RUN_FSP_GOP=y
-CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt.bin"
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt_lantis.bin"
 
 # Microcode
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
@@ -46,6 +45,6 @@
 # CSE RW Update Feature
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-lantis.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
 
 # CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.lick b/sys-boot/coreboot/files/configs/config.lick
index dc66c8a..0810861 100644
--- a/sys-boot/coreboot/files/configs/config.lick
+++ b/sys-boot/coreboot/files/configs/config.lick
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -47,7 +46,6 @@
 CONFIG_IFWI_FILE_NAME="3rdparty/blobs/baseboard-octopus/fitimage-lick.bin"
 
 # WiFi SAR
-CONFIG_WIFI_SAR_CBFS=y
 # FILEPATH is set to blank to prevent any default SAR file from getting added.
 CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/baseboard-octopus/wifi_sar/wifi_sar-lick.hex"
 
diff --git a/sys-boot/coreboot/files/configs/config.lindar b/sys-boot/coreboot/files/configs/config.lindar
index 3377f6d..af0415c 100644
--- a/sys-boot/coreboot/files/configs/config.lindar
+++ b/sys-boot/coreboot/files/configs/config.lindar
@@ -27,7 +27,12 @@
 # Management Engine FW update
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-lindar.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.10.1531"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
+
+# WiFi SAR
+CONFIG_CHROMEOS_WIFI_SAR=y
+# FILEPATH is set to blank to prevent any default SAR file from getting added.
+CONFIG_WIFI_SAR_CBFS_FILEPATH=""
 
 # Microcode
 CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
@@ -35,7 +40,7 @@
 
 # Video Blob
 CONFIG_INTEL_GMA_ADD_VBT=y
-CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-volteer/vbt.bin"
+CONFIG_INTEL_GMA_VBT_FILE=""
 
 # Serial console disabled by default (do not remove)
 # CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.madoo b/sys-boot/coreboot/files/configs/config.madoo
index 4aa86ee..c074f89 100644
--- a/sys-boot/coreboot/files/configs/config.madoo
+++ b/sys-boot/coreboot/files/configs/config.madoo
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -29,7 +28,7 @@
 # Enable VBT
 CONFIG_INTEL_GMA_ADD_VBT=y
 CONFIG_RUN_FSP_GOP=y
-CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt.bin"
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt_madoo.bin"
 
 # Microcode
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
@@ -47,7 +46,7 @@
 # CSE RW Update Feature
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-madoo.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
 
 # WiFi SAR
 CONFIG_CHROMEOS_WIFI_SAR=y
diff --git a/sys-boot/coreboot/files/configs/config.magolor b/sys-boot/coreboot/files/configs/config.magolor
index 435b183..ebec803 100644
--- a/sys-boot/coreboot/files/configs/config.magolor
+++ b/sys-boot/coreboot/files/configs/config.magolor
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -28,7 +27,7 @@
 # Enable VBT
 CONFIG_INTEL_GMA_ADD_VBT=y
 CONFIG_RUN_FSP_GOP=y
-CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt.bin"
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt_magolor.bin"
 
 # Microcode
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
@@ -46,7 +45,7 @@
 # CSE RW Update Feature
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-magolor.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
 
 # WiFi SAR
 CONFIG_CHROMEOS_WIFI_SAR=y
diff --git a/sys-boot/coreboot/files/configs/config.majolica b/sys-boot/coreboot/files/configs/config.majolica
new file mode 100644
index 0000000..dd3b945
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.majolica
@@ -0,0 +1,17 @@
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_VENDOR_AMD=y
+CONFIG_BOARD_AMD_MAJOLICA=y
+CONFIG_MAJOLICA_HAVE_MCHP_FW=y
+CONFIG_FSP_M_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_M.fd"
+CONFIG_FSP_S_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_S.fd"
+CONFIG_CHROMEOS=y
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+CONFIG_USE_AMD_BLOBS=y
+CONFIG_VBOOT_MOCK_SECDATA=y
+CONFIG_VGA_BIOS=y
+CONFIG_VGA_BIOS_ID="1002,1638"
+CONFIG_VGA_BIOS_FILE="3rdparty/amd_blobs/cezanne/CezanneGenericVbios.bin"
+CONFIG_RUN_FSP_GOP=y
+# CONFIG_CONSOLE_SERIAL is not set
+CONFIG_COLLECT_TIMESTAMPS=y
diff --git a/sys-boot/coreboot/files/configs/config.makomo b/sys-boot/coreboot/files/configs/config.makomo
new file mode 100644
index 0000000..c7867dc
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.makomo
@@ -0,0 +1,5 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_MAKOMO=y
+CONFIG_CHROMEOS=y
+# CONFIG_BOOTBLOCK_CONSOLE is not set
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.mancomb b/sys-boot/coreboot/files/configs/config.mancomb
new file mode 100644
index 0000000..c5b56c9
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.mancomb
@@ -0,0 +1,23 @@
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_MANCOMB=y
+CONFIG_FSP_M_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_M.fd"
+CONFIG_FSP_S_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_S.fd"
+CONFIG_CHROMEOS=y
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+CONFIG_USE_AMD_BLOBS=y
+CONFIG_VGA_BIOS=y
+CONFIG_VGA_BIOS_ID="1002,1638"
+CONFIG_VGA_BIOS_FILE="3rdparty/amd_blobs/cezanne/CezanneGenericVbios.bin"
+CONFIG_RUN_FSP_GOP=y
+# CONFIG_CONSOLE_SERIAL is not set
+CONFIG_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC=y
+CONFIG_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC=y
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_COLLECT_TIMESTAMPS=y
+CONFIG_ELOG=y
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
diff --git a/sys-boot/coreboot/files/configs/config.marzipan b/sys-boot/coreboot/files/configs/config.marzipan
new file mode 100644
index 0000000..01a9da5
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.marzipan
@@ -0,0 +1,6 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_MARZIPAN=y
+CONFIG_CHROMEOS=y
+CONFIG_CONSOLE_SERIAL=y
+CONFIG_USE_BLOBS=y
+CONFIG_USE_QC_BLOBS=y
diff --git a/sys-boot/coreboot/files/configs/config.meep b/sys-boot/coreboot/files/configs/config.meep
index 44f328b..fc2bc9c 100644
--- a/sys-boot/coreboot/files/configs/config.meep
+++ b/sys-boot/coreboot/files/configs/config.meep
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -52,7 +51,6 @@
 # CONFIG_CONSOLE_SERIAL is not set
 
 # WiFi SAR
-CONFIG_WIFI_SAR_CBFS=y
 # FILEPATH is set to blank to prevent any default SAR file from getting added.
 CONFIG_WIFI_SAR_CBFS_FILEPATH=""
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
diff --git a/sys-boot/coreboot/files/configs/config.metaknight b/sys-boot/coreboot/files/configs/config.metaknight
index 8a8e4fc..61e8322 100644
--- a/sys-boot/coreboot/files/configs/config.metaknight
+++ b/sys-boot/coreboot/files/configs/config.metaknight
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -46,6 +45,6 @@
 # CSE RW Update Feature
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-metaknight.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
 
 # CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.morphius b/sys-boot/coreboot/files/configs/config.morphius
index bac02c8..ac3fdc2 100644
--- a/sys-boot/coreboot/files/configs/config.morphius
+++ b/sys-boot/coreboot/files/configs/config.morphius
@@ -15,10 +15,6 @@
 # CONFIG_CONSOLE_SERIAL is not set
 # CONFIG_PSP_LOAD_MP2_FW is not set
 
-# Signed PSP verstage
-CONFIG_PSP_VERSTAGE_FILE="3rdparty/blobs/mainboard/google/zork/morphius_psp_verstage.bin.signed"
-CONFIG_PSP_VERSTAGE_SIGNING_TOKEN="3rdparty/blobs/mainboard/google/zork/PCO_psp_verstagebl_fw_signing.stkn"
-
 # Event Logging
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
@@ -34,5 +30,4 @@
 CONFIG_VBE_LINEAR_FRAMEBUFFER=y
 
 # WiFi SAR
-CONFIG_WIFI_SAR_CBFS=y
 CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/zork/wifi_sar/wifi_sar-morphius.hex"
diff --git a/sys-boot/coreboot/files/configs/config.nocturne b/sys-boot/coreboot/files/configs/config.nocturne
index 9ba3986..dea58fc 100644
--- a/sys-boot/coreboot/files/configs/config.nocturne
+++ b/sys-boot/coreboot/files/configs/config.nocturne
@@ -26,6 +26,5 @@
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
 CONFIG_PAYLOAD_NONE=y
-CONFIG_WIFI_SAR_CBFS=y
 CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/mainboard/google/nocturne/wifi_sar_defaults.hex"
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
diff --git a/sys-boot/coreboot/files/configs/config.octopus b/sys-boot/coreboot/files/configs/config.octopus
index 708d73e..7b6b287 100644
--- a/sys-boot/coreboot/files/configs/config.octopus
+++ b/sys-boot/coreboot/files/configs/config.octopus
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
diff --git a/sys-boot/coreboot/files/configs/config.panther b/sys-boot/coreboot/files/configs/config.panther
index d3bf30a..604ce1f 100644
--- a/sys-boot/coreboot/files/configs/config.panther
+++ b/sys-boot/coreboot/files/configs/config.panther
@@ -9,7 +9,7 @@
 CONFIG_CHROMEOS=y
 CONFIG_IFD_BIN_PATH="3rdparty/blobs/mainboard/google/panther/descriptor.bin"
 CONFIG_ME_BIN_PATH="3rdparty/blobs/mainboard/google/panther/me.bin"
-CONFIG_PRE_GRAPHICS_DELAY=300
+CONFIG_PRE_GRAPHICS_DELAY_MS=300
 CONFIG_HAVE_MRC=y
 CONFIG_MRC_FILE="3rdparty/blobs/mrc.bin"
 CONFIG_RESET_ON_INVALID_RAMSTAGE_CACHE=y
diff --git a/sys-boot/coreboot/files/configs/config.pazquel b/sys-boot/coreboot/files/configs/config.pazquel
new file mode 100644
index 0000000..67c9e7b
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.pazquel
@@ -0,0 +1,6 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_PAZQUEL=y
+CONFIG_CHROMEOS=y
+# CONFIG_CONSOLE_SERIAL is not set
+CONFIG_USE_BLOBS=y
+CONFIG_USE_QC_BLOBS=y
diff --git a/sys-boot/coreboot/files/configs/config.phaser b/sys-boot/coreboot/files/configs/config.phaser
index 08360cb..e098466 100644
--- a/sys-boot/coreboot/files/configs/config.phaser
+++ b/sys-boot/coreboot/files/configs/config.phaser
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -47,7 +46,6 @@
 CONFIG_IFWI_FILE_NAME="3rdparty/blobs/baseboard-octopus/fitimage-phaser.bin"
 
 # WiFi SAR
-CONFIG_WIFI_SAR_CBFS=y
 # FILEPATH is set to blank to prevent any default SAR file from getting added.
 CONFIG_WIFI_SAR_CBFS_FILEPATH=""
 
diff --git a/sys-boot/coreboot/files/configs/config.pirika b/sys-boot/coreboot/files/configs/config.pirika
new file mode 100644
index 0000000..edffc7c
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.pirika
@@ -0,0 +1,50 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_PIRIKA=y
+CONFIG_USE_BLOBS=y
+CONFIG_PAYLOAD_NONE=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_SMM=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_COLLECT_TIMESTAMPS=y
+CONFIG_ELOG=y
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+# Firmware Support Package
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/jsl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/jsl/fsp/fsps.bin"
+
+# Enable VBT
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_RUN_FSP_GOP=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt.bin"
+
+# Microcode
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-dedede/ucode.bin"
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-dedede/descriptor-pirika.bin"
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-dedede/me-pirika.bin"
+# CONFIG_LOCK_MANAGEMENT_ENGINE is not set
+
+# CSE RW Update Feature
+CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-pirika.bin"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
+
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.primus b/sys-boot/coreboot/files/configs/config.primus
new file mode 100644
index 0000000..394a80f
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.primus
@@ -0,0 +1,51 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_PRIMUS=y
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/mainboard/google/brya/descriptor-primus.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/adl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/adl/fsp/fsps.bin"
+CONFIG_FSP_M_XIP=y
+CONFIG_RUN_FSP_GOP=y
+
+#CONFIG_FSP_HEADER_PATH="3rdparty/blobs/intel/adl/fsp/Include/"
+#CONFIG_FSP_USE_REPO is not set
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/mainboard/google/brya/csme-primus.bin"
+
+# Management Engine FW update
+### CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+### CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/mainboard/google/brya/me_rw-primus.bin"
+### CONFIG_SOC_INTEL_CSE_RW_VERSION="a.b.c.d"
+
+# Microcode
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/mainboard/google/brya/ucode.bin"
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+
+# Video Blob
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/mainboard/google/brya/vbt.bin"
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.ripto b/sys-boot/coreboot/files/configs/config.ripto
deleted file mode 100644
index 70859e4..0000000
--- a/sys-boot/coreboot/files/configs/config.ripto
+++ /dev/null
@@ -1,45 +0,0 @@
-CONFIG_VENDOR_GOOGLE=y
-CONFIG_BOARD_GOOGLE_RIPTO=y
-
-CONFIG_PAYLOAD_NONE=y
-CONFIG_USE_BLOBS=y
-
-# Chrome OS
-CONFIG_CHROMEOS=y
-
-# SPI Descriptor
-CONFIG_HAVE_IFD_BIN=y
-CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-volteer/descriptor-ripto.bin"
-
-# FSP Blobs
-CONFIG_ADD_FSP_BINARIES=y
-CONFIG_HAVE_INTEL_FSP_REPO=y
-# CONFIG_FSP_USE_REPO is not set
-CONFIG_FSP_M_FILE="3rdparty/blobs/intel/tgl/fsp/fspm.bin"
-CONFIG_FSP_S_FILE="3rdparty/blobs/intel/tgl/fsp/fsps.bin"
-CONFIG_FSP_M_XIP=y
-CONFIG_RUN_FSP_GOP=y
-
-# Management Engine
-CONFIG_HAVE_ME_BIN=y
-CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-volteer/csme-ripto.bin"
-
-# Microcode
-CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
-CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
-
-# Video Blob
-CONFIG_INTEL_GMA_ADD_VBT=y
-CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-volteer/vbt.bin"
-
-# Serial console disabled by default (do not remove)
-# CONFIG_CONSOLE_SERIAL is not set
-
-# Event Logging
-CONFIG_CMOS_POST=y
-CONFIG_CMOS_POST_OFFSET=0x70
-CONFIG_ELOG_GSMI=y
-CONFIG_ELOG_BOOT_COUNT=y
-CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
-
-CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.samus b/sys-boot/coreboot/files/configs/config.samus
index 4949e87..7940cd4 100644
--- a/sys-boot/coreboot/files/configs/config.samus
+++ b/sys-boot/coreboot/files/configs/config.samus
@@ -8,7 +8,7 @@
 CONFIG_CHROMEOS=y
 CONFIG_IFD_BIN_PATH="3rdparty/blobs/mainboard/google/samus/descriptor.bin"
 CONFIG_ME_BIN_PATH="3rdparty/blobs/mainboard/google/samus/me.bin"
-CONFIG_PRE_GRAPHICS_DELAY=200
+CONFIG_PRE_GRAPHICS_DELAY_MS=200
 CONFIG_HAVE_MRC=y
 CONFIG_MRC_FILE="3rdparty/blobs/mrc.bin"
 CONFIG_RESET_ON_INVALID_RAMSTAGE_CACHE=y
diff --git a/sys-boot/coreboot/files/configs/config.sasuke b/sys-boot/coreboot/files/configs/config.sasuke
index 595898b..9fb5856 100644
--- a/sys-boot/coreboot/files/configs/config.sasuke
+++ b/sys-boot/coreboot/files/configs/config.sasuke
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -29,7 +28,7 @@
 # Enable VBT
 CONFIG_INTEL_GMA_ADD_VBT=y
 CONFIG_RUN_FSP_GOP=y
-CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt.bin"
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt_sasuke.bin"
 
 # Microcode
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
@@ -47,6 +46,10 @@
 # CSE RW Update Feature
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-sasuke.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
+
+# WiFi SAR
+CONFIG_CHROMEOS_WIFI_SAR=y
+CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/baseboard-dedede/wifi_sar/wifi_sar-sasuke.hex"
 
 # CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.sasukette b/sys-boot/coreboot/files/configs/config.sasukette
new file mode 100644
index 0000000..a89b22c
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.sasukette
@@ -0,0 +1,56 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_SASUKETTE=y
+CONFIG_USE_BLOBS=y
+CONFIG_PAYLOAD_NONE=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_SMM=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_COLLECT_TIMESTAMPS=y
+CONFIG_ELOG=y
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+# Firmware Support Package
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/jsl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/jsl/fsp/fsps.bin"
+
+# Enable VBT
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_RUN_FSP_GOP=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt.bin"
+
+# Microcode
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-dedede/ucode.bin"
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-dedede/descriptor-sasukette.bin"
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-dedede/me-sasukette.bin"
+# CONFIG_LOCK_MANAGEMENT_ENGINE is not set
+
+# CSE RW Update Feature
+CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-sasukette.bin"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
+
+# WiFi SAR
+CONFIG_WIFI_SAR_CBFS=y
+CONFIG_CHROMEOS_WIFI_SAR=y
+# FILEPATH is set to blank to prevent any default SAR file from getting added.
+CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/baseboard-dedede/wifi_sar/wifi_sar-sasukette.hex"
+
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.scout b/sys-boot/coreboot/files/configs/config.scout
new file mode 100644
index 0000000..0610f8a
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.scout
@@ -0,0 +1,46 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_SCOUT=y
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard/puff/descriptor-scout.bin"
+
+# FSP blobs
+CONFIG_FSP_HEADER_PATH="3rdparty/blobs/intel/cml/fsp/Include/"
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/cml/fsp/Fsp_M.fd"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/cml/fsp/Fsp_S.fd"
+CONFIG_ADD_FSP_BINARIES=y
+
+# vbt
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_RUN_FSP_GOP=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard/puff/vbt.bin"
+CONFIG_SPI_FLASH_SMM=y
+
+# Microcode
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard/puff/ucode.bin"
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard/puff/me-scout.bin"
+
+# Disable
+# CONFIG_UART_DEBUG is not set
+# CONFIG_CONSOLE_SERIAL is not set
+# CONFIG_CONSOLE_SERIAL_115200 is not set
+# CONFIG_DRIVERS_UART_8250IO is not set
diff --git a/sys-boot/coreboot/files/configs/config.spherion b/sys-boot/coreboot/files/configs/config.spherion
new file mode 100644
index 0000000..dd2e2df
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.spherion
@@ -0,0 +1,4 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_SPHERION=y
+CONFIG_CHROMEOS=y
+# CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.storo b/sys-boot/coreboot/files/configs/config.storo
index cfb08bc..4837647 100644
--- a/sys-boot/coreboot/files/configs/config.storo
+++ b/sys-boot/coreboot/files/configs/config.storo
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
@@ -28,7 +27,7 @@
 # Enable VBT
 CONFIG_INTEL_GMA_ADD_VBT=y
 CONFIG_RUN_FSP_GOP=y
-CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt.bin"
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-dedede/vbt_storo.bin"
 
 # Microcode
 CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
@@ -45,7 +44,13 @@
 
 # CSE RW Update Feature
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
-CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-waddledee.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.0.1269"
+CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-dedede/me_rw-storo.bin"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="13.50.11.1304"
+
+# WiFi SAR
+CONFIG_WIFI_SAR_CBFS=y
+CONFIG_CHROMEOS_WIFI_SAR=y
+# FILEPATH is set to blank to prevent any default SAR file from getting added.
+CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/baseboard-dedede/wifi_sar/wifi_sar-storo.hex"
 
 # CONFIG_CONSOLE_SERIAL is not set
diff --git a/sys-boot/coreboot/files/configs/config.terrador b/sys-boot/coreboot/files/configs/config.terrador
index b9b6232..705b58b 100644
--- a/sys-boot/coreboot/files/configs/config.terrador
+++ b/sys-boot/coreboot/files/configs/config.terrador
@@ -27,7 +27,7 @@
 # Management Engine FW update
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-terrador.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.10.1531"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
 
 # Microcode
 CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
diff --git a/sys-boot/coreboot/files/configs/config.tglrvp_up3 b/sys-boot/coreboot/files/configs/config.tglrvp_up3
index 7b02522..3387500 100644
--- a/sys-boot/coreboot/files/configs/config.tglrvp_up3
+++ b/sys-boot/coreboot/files/configs/config.tglrvp_up3
@@ -7,7 +7,6 @@
 CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Intel"
 CONFIG_CBFS_SIZE=0x300000
 
-CONFIG_ANY_TOOLCHAIN=y
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION=y
 
diff --git a/sys-boot/coreboot/files/configs/config.tglrvp_up3_b0 b/sys-boot/coreboot/files/configs/config.tglrvp_up3_b0
index 0dc562c..3beba82 100644
--- a/sys-boot/coreboot/files/configs/config.tglrvp_up3_b0
+++ b/sys-boot/coreboot/files/configs/config.tglrvp_up3_b0
@@ -7,7 +7,6 @@
 CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Intel"
 CONFIG_CBFS_SIZE=0x300000
 
-CONFIG_ANY_TOOLCHAIN=y
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION=y
 
diff --git a/sys-boot/coreboot/files/configs/config.tglrvp_up4 b/sys-boot/coreboot/files/configs/config.tglrvp_up4
index dbe7518..0cc0664 100644
--- a/sys-boot/coreboot/files/configs/config.tglrvp_up4
+++ b/sys-boot/coreboot/files/configs/config.tglrvp_up4
@@ -7,7 +7,6 @@
 CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Intel"
 CONFIG_CBFS_SIZE=0x300000
 
-CONFIG_ANY_TOOLCHAIN=y
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION=y
 
diff --git a/sys-boot/coreboot/files/configs/config.tglrvp_up4_b0 b/sys-boot/coreboot/files/configs/config.tglrvp_up4_b0
index 3a9064b..25b2344 100644
--- a/sys-boot/coreboot/files/configs/config.tglrvp_up4_b0
+++ b/sys-boot/coreboot/files/configs/config.tglrvp_up4_b0
@@ -7,7 +7,6 @@
 CONFIG_MAINBOARD_SMBIOS_MANUFACTURER="Intel"
 CONFIG_CBFS_SIZE=0x300000
 
-CONFIG_ANY_TOOLCHAIN=y
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_DO_NOT_TOUCH_DESCRIPTOR_REGION=y
 
diff --git a/sys-boot/coreboot/files/configs/config.trembyle b/sys-boot/coreboot/files/configs/config.trembyle
index 35ee06c..2085054 100644
--- a/sys-boot/coreboot/files/configs/config.trembyle
+++ b/sys-boot/coreboot/files/configs/config.trembyle
@@ -16,10 +16,6 @@
 # CONFIG_PSP_LOAD_MP2_FW is not set
 # CONFIG_VBOOT_STARTS_BEFORE_BOOTBLOCK=y
 
-# Signed PSP verstage
-CONFIG_PSP_VERSTAGE_FILE="3rdparty/blobs/mainboard/google/zork/trembyle_psp_verstage.bin.signed"
-CONFIG_PSP_VERSTAGE_SIGNING_TOKEN="3rdparty/blobs/mainboard/google/zork/PCO_psp_verstagebl_fw_signing.stkn"
-
 # Event Logging
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
diff --git a/sys-boot/coreboot/files/configs/config.vilboz b/sys-boot/coreboot/files/configs/config.vilboz
index 47f562c..3ab69b1 100644
--- a/sys-boot/coreboot/files/configs/config.vilboz
+++ b/sys-boot/coreboot/files/configs/config.vilboz
@@ -15,10 +15,6 @@
 # CONFIG_CONSOLE_SERIAL is not set
 # CONFIG_PSP_LOAD_MP2_FW is not set
 
-# Signed PSP verstage
-CONFIG_PSP_VERSTAGE_FILE="3rdparty/blobs/mainboard/google/zork/vilboz_psp_verstage.bin.signed"
-CONFIG_PSP_VERSTAGE_SIGNING_TOKEN="3rdparty/blobs/mainboard/google/zork/PCO_psp_verstagebl_fw_signing.stkn"
-
 # Event Logging
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
@@ -32,3 +28,6 @@
 CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
 CONFIG_FRAMEBUFFER_VESA_MODE=0x1D4
 CONFIG_VBE_LINEAR_FRAMEBUFFER=y
+
+# WiFi SAR
+CONFIG_WIFI_SAR_CBFS_FILEPATH=""
diff --git a/sys-boot/coreboot/files/configs/config.voema b/sys-boot/coreboot/files/configs/config.voema
index 46fc2c6..c7e5937 100644
--- a/sys-boot/coreboot/files/configs/config.voema
+++ b/sys-boot/coreboot/files/configs/config.voema
@@ -27,7 +27,7 @@
 # Management Engine FW update
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-voema.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.10.1531"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
 
 # Microcode
 CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
@@ -48,3 +48,7 @@
 CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
 
 CONFIG_SPI_FLASH_SMM=y
+
+# WiFi SAR
+CONFIG_CHROMEOS_WIFI_SAR=y
+CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/baseboard-volteer/wifi_sar/wifi_sar-voema.hex"
diff --git a/sys-boot/coreboot/files/configs/config.voema_npcx796fc b/sys-boot/coreboot/files/configs/config.voema_npcx796fc
new file mode 100644
index 0000000..46fc2c6
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.voema_npcx796fc
@@ -0,0 +1,50 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_VOEMA=y
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-volteer/descriptor-voema.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/tgl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/tgl/fsp/fsps.bin"
+CONFIG_FSP_M_XIP=y
+CONFIG_RUN_FSP_GOP=y
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-volteer/csme-voema.bin"
+
+# Management Engine FW update
+CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
+CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-voema.bin"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.10.1531"
+
+# Microcode
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+
+# Video Blob
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-volteer/vbt-voema.bin"
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.volet b/sys-boot/coreboot/files/configs/config.volet
new file mode 100644
index 0000000..57305ed
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/config.volet
@@ -0,0 +1,45 @@
+CONFIG_VENDOR_GOOGLE=y
+CONFIG_BOARD_GOOGLE_VOLET=y
+
+CONFIG_PAYLOAD_NONE=y
+CONFIG_USE_BLOBS=y
+
+# Chrome OS
+CONFIG_CHROMEOS=y
+
+# SPI Descriptor
+CONFIG_HAVE_IFD_BIN=y
+CONFIG_IFD_BIN_PATH="3rdparty/blobs/baseboard-volteer/descriptor-volet.bin"
+
+# FSP Blobs
+CONFIG_ADD_FSP_BINARIES=y
+CONFIG_HAVE_INTEL_FSP_REPO=y
+# CONFIG_FSP_USE_REPO is not set
+CONFIG_FSP_M_FILE="3rdparty/blobs/intel/tgl/fsp/fspm.bin"
+CONFIG_FSP_S_FILE="3rdparty/blobs/intel/tgl/fsp/fsps.bin"
+CONFIG_FSP_M_XIP=y
+CONFIG_RUN_FSP_GOP=y
+
+# Management Engine
+CONFIG_HAVE_ME_BIN=y
+CONFIG_ME_BIN_PATH="3rdparty/blobs/baseboard-volteer/csme-volet.bin"
+
+# Microcode
+CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
+CONFIG_CPU_MICROCODE_CBFS_EXTERNAL_BINS=y
+
+# Video Blob
+CONFIG_INTEL_GMA_ADD_VBT=y
+CONFIG_INTEL_GMA_VBT_FILE="3rdparty/blobs/baseboard-volteer/vbt-volet.bin"
+
+# Serial console disabled by default (do not remove)
+# CONFIG_CONSOLE_SERIAL is not set
+
+# Event Logging
+CONFIG_CMOS_POST=y
+CONFIG_CMOS_POST_OFFSET=0x70
+CONFIG_ELOG_GSMI=y
+CONFIG_ELOG_BOOT_COUNT=y
+CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
+
+CONFIG_SPI_FLASH_SMM=y
diff --git a/sys-boot/coreboot/files/configs/config.volteer2 b/sys-boot/coreboot/files/configs/config.volteer2
index a6aca38..8c5d899 100644
--- a/sys-boot/coreboot/files/configs/config.volteer2
+++ b/sys-boot/coreboot/files/configs/config.volteer2
@@ -27,7 +27,7 @@
 # Management Engine FW update
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-volteer2.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.10.1531"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
 
 # Microcode
 CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
diff --git a/sys-boot/coreboot/files/configs/config.voxel b/sys-boot/coreboot/files/configs/config.voxel
index 6798f73..2b73468 100644
--- a/sys-boot/coreboot/files/configs/config.voxel
+++ b/sys-boot/coreboot/files/configs/config.voxel
@@ -25,7 +25,7 @@
 # Management Engine FW update
 CONFIG_SOC_INTEL_CSE_RW_UPDATE=y
 CONFIG_SOC_INTEL_CSE_RW_FILE="3rdparty/blobs/baseboard-volteer/me_rw-voxel.bin"
-CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.10.1531"
+CONFIG_SOC_INTEL_CSE_RW_VERSION="15.0.23.1777"
 
 # Microcode
 CONFIG_CPU_UCODE_BINARIES="3rdparty/blobs/baseboard-volteer/ucode.bin"
@@ -46,3 +46,6 @@
 CONFIG_ELOG_BOOT_COUNT_CMOS_OFFSET=144
 
 CONFIG_SPI_FLASH_SMM=y
+
+CONFIG_CHROMEOS_WIFI_SAR=y
+CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/baseboard-volteer/wifi_sar/wifi_sar-voxel.hex"
diff --git a/sys-boot/coreboot/files/configs/config.waddledee b/sys-boot/coreboot/files/configs/config.waddledee
index 46afa4c..1f2b9fc 100644
--- a/sys-boot/coreboot/files/configs/config.waddledee
+++ b/sys-boot/coreboot/files/configs/config.waddledee
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
diff --git a/sys-boot/coreboot/files/configs/config.waddledoo b/sys-boot/coreboot/files/configs/config.waddledoo
index dd4d6f3..84eded1 100644
--- a/sys-boot/coreboot/files/configs/config.waddledoo
+++ b/sys-boot/coreboot/files/configs/config.waddledoo
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
diff --git a/sys-boot/coreboot/files/configs/config.wheelie b/sys-boot/coreboot/files/configs/config.wheelie
index d3f5f09..14a96af 100644
--- a/sys-boot/coreboot/files/configs/config.wheelie
+++ b/sys-boot/coreboot/files/configs/config.wheelie
@@ -4,7 +4,6 @@
 CONFIG_PAYLOAD_NONE=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SMM=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
diff --git a/sys-boot/coreboot/files/configs/config.woomax b/sys-boot/coreboot/files/configs/config.woomax
index 3f6000c..b5d6ad2 100644
--- a/sys-boot/coreboot/files/configs/config.woomax
+++ b/sys-boot/coreboot/files/configs/config.woomax
@@ -15,10 +15,6 @@
 # CONFIG_CONSOLE_SERIAL is not set
 # CONFIG_PSP_LOAD_MP2_FW is not set
 
-# Signed PSP verstage
-CONFIG_PSP_VERSTAGE_FILE="3rdparty/blobs/mainboard/google/zork/woomax_psp_verstage.bin.signed"
-CONFIG_PSP_VERSTAGE_SIGNING_TOKEN="3rdparty/blobs/mainboard/google/zork/PCO_psp_verstagebl_fw_signing.stkn"
-
 # Event Logging
 CONFIG_CMOS_POST=y
 CONFIG_CMOS_POST_OFFSET=0x70
@@ -32,3 +28,6 @@
 CONFIG_FRAMEBUFFER_VESA_MODE_USER=y
 CONFIG_FRAMEBUFFER_VESA_MODE=0x1D4
 CONFIG_VBE_LINEAR_FRAMEBUFFER=y
+
+# WiFi SAR
+CONFIG_WIFI_SAR_CBFS_FILEPATH="3rdparty/blobs/zork/wifi_sar/wifi_sar-woomax.hex"
diff --git a/sys-boot/coreboot/files/configs/config.yorp b/sys-boot/coreboot/files/configs/config.yorp
index 5c5035e..c11375d 100644
--- a/sys-boot/coreboot/files/configs/config.yorp
+++ b/sys-boot/coreboot/files/configs/config.yorp
@@ -7,7 +7,6 @@
 CONFIG_SPI_FLASH_SMM=y
 CONFIG_USE_BLOBS=y
 CONFIG_INCLUDE_NHLT_BLOBS=y
-CONFIG_ANY_TOOLCHAIN=y
 
 # Chrome OS
 CONFIG_CHROMEOS=y
diff --git a/sys-boot/coreboot/files/configs/fwserial.adlrvp_p_ext_ec b/sys-boot/coreboot/files/configs/fwserial.adlrvp_p_ext_ec
new file mode 100644
index 0000000..6c16564
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/fwserial.adlrvp_p_ext_ec
@@ -0,0 +1,4 @@
+CONFIG_FATAL_ASSERTS=y
+CONFIG_CONSOLE_SERIAL=y
+CONFIG_CONSOLE_SERIAL_115200=y
+CONFIG_INTEL_LPSS_UART_FOR_CONSOLE=y
diff --git a/sys-boot/coreboot/files/configs/fwserial.brya b/sys-boot/coreboot/files/configs/fwserial.brya
new file mode 100644
index 0000000..4ff8924
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/fwserial.brya
@@ -0,0 +1,5 @@
+CONFIG_FATAL_ASSERTS=y
+CONFIG_CONSOLE_SERIAL=y
+CONFIG_CONSOLE_SERIAL_115200=y
+CONFIG_UART_DEBUG=y
+CONFIG_UART_FOR_CONSOLE=0
diff --git a/sys-boot/coreboot/files/configs/fwserial.guybrush b/sys-boot/coreboot/files/configs/fwserial.guybrush
new file mode 100644
index 0000000..109ec16
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/fwserial.guybrush
@@ -0,0 +1,15 @@
+CONFIG_CONSOLE_SERIAL=y
+CONFIG_FATAL_ASSERTS=y
+CONFIG_CONSOLE_SERIAL_115200=y
+CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8=y
+CONFIG_CONSOLE_POST=y
+CONFIG_DEBUG_SMI=y
+CONFIG_TIMESTAMPS_ON_CONSOLE=y
+CONFIG_PSP_UNLOCK_SECURE_DEBUG=y
+CONFIG_FSP_M_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_SERIAL_M.fd"
+CONFIG_FSP_S_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_SERIAL_S.fd"
+CONFIG_DISPLAY_FSP_CALLS_AND_STATUS=y
+CONFIG_DISPLAY_FSP_HEADER=y
+CONFIG_DISPLAY_HOBS=y
+CONFIG_DISPLAY_UPD_DATA=y
+CONFIG_VERIFY_HOBS=y
diff --git a/sys-boot/coreboot/files/configs/fwserial.majolica b/sys-boot/coreboot/files/configs/fwserial.majolica
new file mode 100644
index 0000000..109ec16
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/fwserial.majolica
@@ -0,0 +1,15 @@
+CONFIG_CONSOLE_SERIAL=y
+CONFIG_FATAL_ASSERTS=y
+CONFIG_CONSOLE_SERIAL_115200=y
+CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8=y
+CONFIG_CONSOLE_POST=y
+CONFIG_DEBUG_SMI=y
+CONFIG_TIMESTAMPS_ON_CONSOLE=y
+CONFIG_PSP_UNLOCK_SECURE_DEBUG=y
+CONFIG_FSP_M_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_SERIAL_M.fd"
+CONFIG_FSP_S_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_SERIAL_S.fd"
+CONFIG_DISPLAY_FSP_CALLS_AND_STATUS=y
+CONFIG_DISPLAY_FSP_HEADER=y
+CONFIG_DISPLAY_HOBS=y
+CONFIG_DISPLAY_UPD_DATA=y
+CONFIG_VERIFY_HOBS=y
diff --git a/sys-boot/coreboot/files/configs/fwserial.mancomb b/sys-boot/coreboot/files/configs/fwserial.mancomb
new file mode 100644
index 0000000..109ec16
--- /dev/null
+++ b/sys-boot/coreboot/files/configs/fwserial.mancomb
@@ -0,0 +1,15 @@
+CONFIG_CONSOLE_SERIAL=y
+CONFIG_FATAL_ASSERTS=y
+CONFIG_CONSOLE_SERIAL_115200=y
+CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8=y
+CONFIG_CONSOLE_POST=y
+CONFIG_DEBUG_SMI=y
+CONFIG_TIMESTAMPS_ON_CONSOLE=y
+CONFIG_PSP_UNLOCK_SECURE_DEBUG=y
+CONFIG_FSP_M_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_SERIAL_M.fd"
+CONFIG_FSP_S_FILE="3rdparty/amd_blobs/cezanne/CEZANNE_SERIAL_S.fd"
+CONFIG_DISPLAY_FSP_CALLS_AND_STATUS=y
+CONFIG_DISPLAY_FSP_HEADER=y
+CONFIG_DISPLAY_HOBS=y
+CONFIG_DISPLAY_UPD_DATA=y
+CONFIG_VERIFY_HOBS=y
diff --git a/sys-boot/coreinfo/coreinfo-0.0.1-r3920.ebuild b/sys-boot/coreinfo/coreinfo-0.0.1-r3920.ebuild
deleted file mode 100644
index 9471fa4..0000000
--- a/sys-boot/coreinfo/coreinfo-0.0.1-r3920.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2012 The Chromium OS Authors.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="1cf1d1ceda64e0b81170f8454fd5ecca311667d5"
-CROS_WORKON_TREE="2e32d2a5a79f8e88be91b44b40a65211c6ea4dae"
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-
-DESCRIPTION="coreboot's coreinfo payload"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="-* amd64 x86"
-
-BDEPEND="dev-embedded/coreboot-sdk:="
-DEPEND="sys-boot/libpayload:="
-
-CROS_WORKON_LOCALNAME="coreboot"
-
-inherit cros-workon coreboot-sdk
-
-src_compile() {
-	export CROSS_COMPILE=${COREBOOT_SDK_PREFIX_x86_32}
-	export CC="${CROSS_COMPILE}gcc"
-	unset CFLAGS
-
-	local coreinfodir="payloads/coreinfo"
-	cp "${coreinfodir}"/config.default "${coreinfodir}"/.config
-	emake -C "${coreinfodir}" \
-		LIBPAYLOAD_DIR="${ROOT}/firmware/libpayload/" \
-		oldconfig \
-		|| die "libpayload make oldconfig failed"
-	emake -C "${coreinfodir}" \
-		LIBPAYLOAD_DIR="${ROOT}/firmware/libpayload/" \
-		|| die "libpayload build failed"
-}
-
-src_install() {
-	local src_root="payloads/coreinfo/"
-	local build_root="${src_root}/build"
-	local destdir="/firmware/coreinfo"
-
-	insinto "${destdir}"
-	doins "${build_root}"/coreinfo.elf
-}
diff --git a/sys-boot/coreinfo/coreinfo-9999.ebuild b/sys-boot/coreinfo/coreinfo-9999.ebuild
deleted file mode 100644
index 77a11c2..0000000
--- a/sys-boot/coreinfo/coreinfo-9999.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2012 The Chromium OS Authors.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-
-DESCRIPTION="coreboot's coreinfo payload"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="-* ~amd64 ~x86"
-
-BDEPEND="dev-embedded/coreboot-sdk:="
-DEPEND="sys-boot/libpayload:="
-
-CROS_WORKON_LOCALNAME="coreboot"
-
-inherit cros-workon coreboot-sdk
-
-src_compile() {
-	export CROSS_COMPILE=${COREBOOT_SDK_PREFIX_x86_32}
-	export CC="${CROSS_COMPILE}gcc"
-	unset CFLAGS
-
-	local coreinfodir="payloads/coreinfo"
-	cp "${coreinfodir}"/config.default "${coreinfodir}"/.config
-	emake -C "${coreinfodir}" \
-		LIBPAYLOAD_DIR="${ROOT}/firmware/libpayload/" \
-		oldconfig \
-		|| die "libpayload make oldconfig failed"
-	emake -C "${coreinfodir}" \
-		LIBPAYLOAD_DIR="${ROOT}/firmware/libpayload/" \
-		|| die "libpayload build failed"
-}
-
-src_install() {
-	local src_root="payloads/coreinfo/"
-	local build_root="${src_root}/build"
-	local destdir="/firmware/coreinfo"
-
-	insinto "${destdir}"
-	doins "${build_root}"/coreinfo.elf
-}
diff --git a/sys-boot/depthcharge/depthcharge-0.0.1-r3159.ebuild b/sys-boot/depthcharge/depthcharge-0.0.1-r3159.ebuild
deleted file mode 100644
index de609d2..0000000
--- a/sys-boot/depthcharge/depthcharge-0.0.1-r3159.ebuild
+++ /dev/null
@@ -1,214 +0,0 @@
-# Copyright 2012 The Chromium OS Authors.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT=("41c22dd42b17c6f6acf47e2a6aacf7a7ff24ff7c" "6f6efdc6fa38ed3bcacfa9e152f415d50ee8bad0")
-CROS_WORKON_TREE=("1a47ce4df0f45de4343b2c349f88570ab637cf74" "06c3486af100c39ddc9cb59381d087b4f2ed1634")
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/depthcharge"
-	"chromiumos/platform/vboot_reference"
-)
-
-DESCRIPTION="coreboot's depthcharge payload"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="*"
-IUSE="detachable diag_payload fwconsole mocktpm pd_sync
-	unibuild verbose debug generated_cros_config +minidiag
-	physical_presence_power physical_presence_recovery"
-
-DEPEND="
-	sys-boot/coreboot:=
-	chromeos-base/chromeos-ec-headers:=
-	sys-boot/libpayload:=
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-"
-
-BDEPEND="
-	dev-python/kconfiglib
-"
-
-CROS_WORKON_LOCALNAME=("../platform/depthcharge" "../platform/vboot_reference")
-VBOOT_REFERENCE_DESTDIR="${S}/vboot_reference"
-CROS_WORKON_DESTDIR=("${S}" "${VBOOT_REFERENCE_DESTDIR}")
-
-# Don't strip to ease remote GDB use (cbfstool strips final binaries anyway)
-STRIP_MASK="*"
-
-inherit cros-workon cros-board cros-unibuild
-
-# Get the depthcharge board config to build for.
-# Checks the current board with/without variant. Echoes the board config file
-# that should be used to build depthcharge.
-get_board() {
-	local board=$(get_current_board_with_variant)
-	if [[ ! -d "board/${board}" ]]; then
-		board=$(get_current_board_no_variant)
-	fi
-
-	echo "${board}"
-}
-
-# Build depthcharge with common options.
-# Usage example: dc_make dev LIBPAYLOAD_DIR="libpayload"
-# Args:
-#   $1: Target to build
-#   $2: Build directory to use.
-#   $3: Firmware file to use for LIBPAYLOAD_DIR
-#   $4+: Any other Makefile arguments.
-dc_make() {
-	local target="$1"
-	local builddir="$2"
-	local libpayload
-
-	[[ -n "$3" ]] && libpayload="LIBPAYLOAD_DIR=${SYSROOT}/firmware/$3/"
-
-	shift 3
-
-	local OPTS=(
-		"EC_HEADERS=${SYSROOT}/usr/include/chromeos/ec"
-		"VB_SOURCE=${VBOOT_REFERENCE_DESTDIR}"
-		"PD_SYNC=$(usev pd_sync)"
-		"obj=${builddir}"
-	)
-
-	use verbose && OPTS+=( "V=1" )
-	use debug && OPTS+=( "SOURCE_DEBUG=1" )
-
-	emake "${OPTS[@]}" \
-		${libpayload} \
-		"${target}" \
-		"$@"
-}
-
-# Build depthcharge for the current board.
-# Builds the various output files for depthcharge:
-#   depthcharge.elf   - normal image
-#   dev.elf           - developer image
-#   netboot.elf       - network image
-# In addition, .map files are produced for each, and a .config file which
-# holds the configuration that was used.
-# Args
-#   $1: board to build for.
-make_depthcharge() {
-	local board="$1"
-	local builddir="$2"
-	local defconfig="board/${board}/defconfig"
-
-	if use mocktpm ; then
-		echo "CONFIG_MOCK_TPM=y" >> "${defconfig}"
-	fi
-	if use fwconsole ; then
-		echo "CONFIG_CLI=y" >> "${defconfig}"
-		echo "CONFIG_SYS_PROMPT=\"${board}: \"" >> "${defconfig}"
-	fi
-	if use detachable ; then
-		echo "CONFIG_DETACHABLE=y" >> "${defconfig}"
-	fi
-
-	# Both diag_payload and minidiag need special UI.
-	if use diag_payload || use minidiag ; then
-		echo "CONFIG_DIAGNOSTIC_UI=y" >> "${defconfig}"
-	fi
-
-	if use physical_presence_power || use physical_presence_recovery ; then
-		echo "CONFIG_PHYSICAL_PRESENCE_KEYBOARD=n" >> "${defconfig}"
-	fi
-
-	[[ ${PV} == "9999" ]] && dc_make distclean "${builddir}" libpayload
-	dc_make defconfig "${builddir}" libpayload BOARD="${board}"
-	cp .config "${builddir}/depthcharge.config"
-
-	dc_make depthcharge "${builddir}" libpayload
-	dc_make dev "${builddir}" libpayload_gdb
-	dc_make netboot "${builddir}" libpayload_gdb
-}
-
-src_compile() {
-	local from_root="${SYSROOT}/firmware/libpayload/include/"
-	local to="src/base/static_fw_config.h"
-
-	# Firmware related binaries are compiled with a 32-bit toolchain
-	# on 64-bit platforms
-	if use amd64 ; then
-		export CROSS_COMPILE="i686-pc-linux-gnu-"
-		export CC="${CROSS_COMPILE}gcc"
-	else
-		export CROSS_COMPILE=${CHOST}-
-	fi
-
-	if use unibuild; then
-		local combinations="coreboot,depthcharge"
-		local cmd="get-firmware-build-combinations"
-		local build_combinations=$(cros_config_host "${cmd}" "${combinations}" || die)
-		local build_target
-
-		for build_target in $(cros_config_host \
-			get-firmware-build-targets depthcharge); do
-			# install the matching static_fw_config_${board}.h
-			echo "${build_combinations}" | while read -r name; do
-				read -r coreboot
-				read -r depthcharge
-				local from="${from_root}static_fw_config_${coreboot}.h"
-
-				if [[ "${build_target}" == "${depthcharge}" ]] &&
-						[[ -s "${from}" ]]; then
-					cp "${from}" "${to}"
-					einfo "Copying static_fw_config_${coreboot}.h into local tree"
-					break
-				fi
-			done
-
-			# build depthcharge
-			make_depthcharge "${build_target}" "${build_target}"
-		done
-	else
-		local from="${from_root}static_fw_config.h"
-		if [[ -s "${from}" ]]; then
-			cp "${from}" "${to}"
-			einfo "Copying static_fw_config.h into local tree"
-		fi
-		make_depthcharge "$(get_board)" build
-	fi
-}
-
-do_install() {
-	local board="$1"
-	local builddir="$2"
-	local dstdir="/firmware"
-
-	if [[ -n "${build_target}" ]]; then
-		dstdir+="/${build_target}"
-		einfo "Installing depthcharge ${build_target} into ${dest_dir}"
-	fi
-	insinto "${dstdir}"
-
-	pushd "${builddir}" >/dev/null || \
-		die "couldn't access ${builddir}/ directory"
-
-	local files_to_copy=(
-		depthcharge.config
-		{netboot,depthcharge,dev}.elf{,.map}
-	)
-
-	insinto "${dstdir}/depthcharge"
-	doins "${files_to_copy[@]}"
-
-	popd >/dev/null
-}
-
-src_install() {
-	local build_target
-
-	if use unibuild; then
-		for build_target in $(cros_config_host \
-			get-firmware-build-targets depthcharge); do
-			do_install "${build_target}" "${build_target}"
-		done
-	else
-		do_install "$(get_board)" build
-	fi
-}
diff --git a/sys-boot/depthcharge/depthcharge-0.0.1-r3288.ebuild b/sys-boot/depthcharge/depthcharge-0.0.1-r3288.ebuild
new file mode 100644
index 0000000..9632cd9
--- /dev/null
+++ b/sys-boot/depthcharge/depthcharge-0.0.1-r3288.ebuild
@@ -0,0 +1,237 @@
+# Copyright 2012 The Chromium OS Authors.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT=("3c668e1f6c4b41a0064612d8719a4d22dada8ac7" "5c0fcf0f8725b98043a4b18f36e21489375d133a")
+CROS_WORKON_TREE=("da095db43f621ecd0e59572cc290ac6f892753fc" "3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c")
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/depthcharge"
+	"chromiumos/platform/vboot_reference"
+)
+
+DESCRIPTION="coreboot's depthcharge payload"
+HOMEPAGE="http://www.coreboot.org"
+LICENSE="GPL-2"
+KEYWORDS="*"
+IUSE="detachable diag_payload fwconsole mocktpm pd_sync
+	unibuild verbose debug +minidiag
+	physical_presence_power physical_presence_recovery"
+
+DEPEND="
+	sys-boot/coreboot:=
+	chromeos-base/chromeos-ec-headers:=
+	sys-boot/libpayload:=
+	unibuild? ( chromeos-base/chromeos-config:= )
+"
+
+BDEPEND="
+	dev-python/kconfiglib
+"
+
+CROS_WORKON_LOCALNAME=("../platform/depthcharge" "../platform/vboot_reference")
+VBOOT_REFERENCE_DESTDIR="${S}/vboot_reference"
+CROS_WORKON_DESTDIR=("${S}/depthcharge" "${VBOOT_REFERENCE_DESTDIR}")
+
+# Don't strip to ease remote GDB use (cbfstool strips final binaries anyway)
+STRIP_MASK="*"
+
+inherit cros-workon cros-board cros-unibuild
+
+# Get the depthcharge board config to build for.
+# Checks the current board with/without variant. Echoes the board config file
+# that should be used to build depthcharge.
+get_board() {
+	local board=$(get_current_board_with_variant)
+	if [[ ! -d "board/${board}" ]]; then
+		board=$(get_current_board_no_variant)
+	fi
+
+	echo "${board}"
+}
+
+# Build depthcharge with common options.
+# Usage example: dc_make dev "${BUILD_DIR}" "${LIBPAYLOAD_DIR}"
+# Args:
+#   $1: Target to build
+#   $2: Build directory to use.
+#   $3: Directory where libpayload is located.
+#   $4+: Any other Makefile arguments.
+dc_make() {
+	local target="$1"
+	local builddir="$2"
+	local libpayload="$3"
+
+	shift 3
+
+	local OPTS=(
+		"EC_HEADERS=${SYSROOT}/usr/include/chromeos/ec"
+		"VB_SOURCE=${VBOOT_REFERENCE_DESTDIR}"
+		"PD_SYNC=$(usev pd_sync)"
+		"LIBPAYLOAD_DIR=${libpayload}/libpayload"
+		"obj=${builddir}"
+	)
+
+	use verbose && OPTS+=( "V=1" )
+	use debug && OPTS+=( "SOURCE_DEBUG=1" )
+
+	emake "${OPTS[@]}" \
+		"${target}" \
+		"$@"
+}
+
+# Build depthcharge for the current board.
+# Builds the various output files for depthcharge:
+#   depthcharge.elf   - normal image
+#   dev.elf           - developer image
+#   netboot.elf       - network image
+# In addition, .map files are produced for each, and a .config file which
+# holds the configuration that was used.
+# Args
+#   $1: board to build for.
+#   $2: build directory
+#   $3: libpayload dir
+make_depthcharge() {
+	local board="$1"
+	local builddir="$2"
+	local libpayload="$3"
+	local base_defconfig="board/${board}/defconfig"
+	local defconfig="${T}/${board}-defconfig"
+	local config="${builddir}/depthcharge.config"
+
+	if [[ -e "${base_defconfig}" ]]; then
+		cp "${base_defconfig}" "${defconfig}"
+	else
+		ewarn "${base_defconfig} does not exist!"
+		touch "${defconfig}"
+	fi
+
+	chmod +w "${defconfig}"
+
+	if use mocktpm ; then
+		echo "CONFIG_MOCK_TPM=y" >> "${defconfig}"
+	fi
+	if use fwconsole ; then
+		echo "CONFIG_CLI=y" >> "${defconfig}"
+		echo "CONFIG_SYS_PROMPT=\"${board}: \"" >> "${defconfig}"
+	fi
+	if use detachable ; then
+		echo "CONFIG_DETACHABLE=y" >> "${defconfig}"
+	fi
+
+	# Both diag_payload and minidiag need special UI.
+	if use diag_payload || use minidiag ; then
+		echo "CONFIG_DIAGNOSTIC_UI=y" >> "${defconfig}"
+	fi
+
+	if use physical_presence_power || use physical_presence_recovery ; then
+		echo "CONFIG_PHYSICAL_PRESENCE_KEYBOARD=n" >> "${defconfig}"
+	fi
+
+	dc_make defconfig "${builddir}" "${libpayload}" \
+		KBUILD_DEFCONFIG="${defconfig}" \
+		DOTCONFIG="${config}"
+
+	dc_make depthcharge "${builddir}" "${libpayload}" \
+		DOTCONFIG="${config}"
+	dc_make dev "${builddir}" "${libpayload}.gdb" \
+		DOTCONFIG="${config}"
+	dc_make netboot "${builddir}" "${libpayload}.gdb" \
+		DOTCONFIG="${config}"
+}
+
+# Copy the fwconfig from libpayload to a path
+# Args:
+#    $1: libpayload dir
+#    $2: depthcharge build directory
+_copy_fwconfig() {
+	local src="${1}/libpayload/include/static_fw_config.h"
+	local dest="${2}/static_fw_config.h"
+
+	if [[ -s "${src}" ]]; then
+		cp "${src}" "${dest}"
+		einfo "Copying ${src} into local tree"
+	else
+		ewarn "${src} does not exist"
+	fi
+}
+
+src_compile() {
+	local builddir
+	local libpayload
+
+	# Firmware related binaries are compiled with a 32-bit toolchain
+	# on 64-bit platforms
+	if use amd64 ; then
+		export CROSS_COMPILE="i686-pc-linux-gnu-"
+		export CC="${CROSS_COMPILE}gcc"
+	else
+		export CROSS_COMPILE=${CHOST}-
+	fi
+
+	pushd depthcharge >/dev/null || \
+		die "Failed to change into ${PWD}/depthcharge"
+
+	if use unibuild; then
+		local name
+		local depthcharge
+
+		while read -r name && read -r depthcharge; do
+			libpayload="${SYSROOT}/firmware/${name}/libpayload"
+			builddir="$(cros-workon_get_build_dir)/${depthcharge}"
+			mkdir -p "${builddir}"
+
+			_copy_fwconfig "${libpayload}" "${builddir}"
+			make_depthcharge "${depthcharge}" "${builddir}" "${libpayload}"
+		done < <(cros_config_host get-firmware-build-combinations depthcharge)
+	else
+		libpayload="${SYSROOT}/firmware/legacy/libpayload"
+		builddir="$(cros-workon_get_build_dir)"
+		mkdir -p "${builddir}"
+
+		_copy_fwconfig "${libpayload}" "${builddir}"
+		make_depthcharge "$(get_board)" "${builddir}" "${libpayload}"
+	fi
+
+	popd >/dev/null || die
+}
+
+do_install() {
+	local board="$1"
+	local builddir="$2"
+	local dstdir="/firmware"
+
+	if [[ -n "${build_target}" ]]; then
+		dstdir+="/${build_target}"
+		einfo "Installing depthcharge ${build_target} into ${dest_dir}"
+	fi
+	insinto "${dstdir}"
+
+	pushd "${builddir}" >/dev/null || \
+		die "couldn't access ${builddir}/ directory"
+
+	local files_to_copy=(
+		depthcharge.config
+		{netboot,depthcharge,dev}.elf{,.map}
+	)
+
+	insinto "${dstdir}/depthcharge"
+	doins "${files_to_copy[@]}"
+
+	popd >/dev/null || die
+}
+
+src_install() {
+	if use unibuild; then
+		local build_target
+		local builddir
+
+		for build_target in $(cros_config_host \
+				get-firmware-build-targets depthcharge); do
+			builddir="$(cros-workon_get_build_dir)/${build_target}"
+
+			do_install "${build_target}" "${builddir}"
+		done
+	else
+		do_install "$(get_board)" "$(cros-workon_get_build_dir)"
+	fi
+}
diff --git a/sys-boot/depthcharge/depthcharge-9999.ebuild b/sys-boot/depthcharge/depthcharge-9999.ebuild
index 060bb4f..13191c9 100644
--- a/sys-boot/depthcharge/depthcharge-9999.ebuild
+++ b/sys-boot/depthcharge/depthcharge-9999.ebuild
@@ -12,17 +12,14 @@
 LICENSE="GPL-2"
 KEYWORDS="~*"
 IUSE="detachable diag_payload fwconsole mocktpm pd_sync
-	unibuild verbose debug generated_cros_config +minidiag
+	unibuild verbose debug +minidiag
 	physical_presence_power physical_presence_recovery"
 
 DEPEND="
 	sys-boot/coreboot:=
 	chromeos-base/chromeos-ec-headers:=
 	sys-boot/libpayload:=
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
+	unibuild? ( chromeos-base/chromeos-config:= )
 "
 
 BDEPEND="
@@ -31,7 +28,7 @@
 
 CROS_WORKON_LOCALNAME=("../platform/depthcharge" "../platform/vboot_reference")
 VBOOT_REFERENCE_DESTDIR="${S}/vboot_reference"
-CROS_WORKON_DESTDIR=("${S}" "${VBOOT_REFERENCE_DESTDIR}")
+CROS_WORKON_DESTDIR=("${S}/depthcharge" "${VBOOT_REFERENCE_DESTDIR}")
 
 # Don't strip to ease remote GDB use (cbfstool strips final binaries anyway)
 STRIP_MASK="*"
@@ -51,18 +48,16 @@
 }
 
 # Build depthcharge with common options.
-# Usage example: dc_make dev LIBPAYLOAD_DIR="libpayload"
+# Usage example: dc_make dev "${BUILD_DIR}" "${LIBPAYLOAD_DIR}"
 # Args:
 #   $1: Target to build
 #   $2: Build directory to use.
-#   $3: Firmware file to use for LIBPAYLOAD_DIR
+#   $3: Directory where libpayload is located.
 #   $4+: Any other Makefile arguments.
 dc_make() {
 	local target="$1"
 	local builddir="$2"
-	local libpayload
-
-	[[ -n "$3" ]] && libpayload="LIBPAYLOAD_DIR=${SYSROOT}/firmware/$3/"
+	local libpayload="$3"
 
 	shift 3
 
@@ -70,6 +65,7 @@
 		"EC_HEADERS=${SYSROOT}/usr/include/chromeos/ec"
 		"VB_SOURCE=${VBOOT_REFERENCE_DESTDIR}"
 		"PD_SYNC=$(usev pd_sync)"
+		"LIBPAYLOAD_DIR=${libpayload}/libpayload"
 		"obj=${builddir}"
 	)
 
@@ -77,7 +73,6 @@
 	use debug && OPTS+=( "SOURCE_DEBUG=1" )
 
 	emake "${OPTS[@]}" \
-		${libpayload} \
 		"${target}" \
 		"$@"
 }
@@ -91,10 +86,24 @@
 # holds the configuration that was used.
 # Args
 #   $1: board to build for.
+#   $2: build directory
+#   $3: libpayload dir
 make_depthcharge() {
 	local board="$1"
 	local builddir="$2"
-	local defconfig="board/${board}/defconfig"
+	local libpayload="$3"
+	local base_defconfig="board/${board}/defconfig"
+	local defconfig="${T}/${board}-defconfig"
+	local config="${builddir}/depthcharge.config"
+
+	if [[ -e "${base_defconfig}" ]]; then
+		cp "${base_defconfig}" "${defconfig}"
+	else
+		ewarn "${base_defconfig} does not exist!"
+		touch "${defconfig}"
+	fi
+
+	chmod +w "${defconfig}"
 
 	if use mocktpm ; then
 		echo "CONFIG_MOCK_TPM=y" >> "${defconfig}"
@@ -116,18 +125,37 @@
 		echo "CONFIG_PHYSICAL_PRESENCE_KEYBOARD=n" >> "${defconfig}"
 	fi
 
-	[[ ${PV} == "9999" ]] && dc_make distclean "${builddir}" libpayload
-	dc_make defconfig "${builddir}" libpayload BOARD="${board}"
-	cp .config "${builddir}/depthcharge.config"
+	dc_make defconfig "${builddir}" "${libpayload}" \
+		KBUILD_DEFCONFIG="${defconfig}" \
+		DOTCONFIG="${config}"
 
-	dc_make depthcharge "${builddir}" libpayload
-	dc_make dev "${builddir}" libpayload_gdb
-	dc_make netboot "${builddir}" libpayload_gdb
+	dc_make depthcharge "${builddir}" "${libpayload}" \
+		DOTCONFIG="${config}"
+	dc_make dev "${builddir}" "${libpayload}.gdb" \
+		DOTCONFIG="${config}"
+	dc_make netboot "${builddir}" "${libpayload}.gdb" \
+		DOTCONFIG="${config}"
+}
+
+# Copy the fwconfig from libpayload to a path
+# Args:
+#    $1: libpayload dir
+#    $2: depthcharge build directory
+_copy_fwconfig() {
+	local src="${1}/libpayload/include/static_fw_config.h"
+	local dest="${2}/static_fw_config.h"
+
+	if [[ -s "${src}" ]]; then
+		cp "${src}" "${dest}"
+		einfo "Copying ${src} into local tree"
+	else
+		ewarn "${src} does not exist"
+	fi
 }
 
 src_compile() {
-	local from_root="${SYSROOT}/firmware/libpayload/include/"
-	local to="src/base/static_fw_config.h"
+	local builddir
+	local libpayload
 
 	# Firmware related binaries are compiled with a 32-bit toolchain
 	# on 64-bit platforms
@@ -138,39 +166,31 @@
 		export CROSS_COMPILE=${CHOST}-
 	fi
 
+	pushd depthcharge >/dev/null || \
+		die "Failed to change into ${PWD}/depthcharge"
+
 	if use unibuild; then
-		local combinations="coreboot,depthcharge"
-		local cmd="get-firmware-build-combinations"
-		local build_combinations=$(cros_config_host "${cmd}" "${combinations}" || die)
-		local build_target
+		local name
+		local depthcharge
 
-		for build_target in $(cros_config_host \
-			get-firmware-build-targets depthcharge); do
-			# install the matching static_fw_config_${board}.h
-			echo "${build_combinations}" | while read -r name; do
-				read -r coreboot
-				read -r depthcharge
-				local from="${from_root}static_fw_config_${coreboot}.h"
+		while read -r name && read -r depthcharge; do
+			libpayload="${SYSROOT}/firmware/${name}/libpayload"
+			builddir="$(cros-workon_get_build_dir)/${depthcharge}"
+			mkdir -p "${builddir}"
 
-				if [[ "${build_target}" == "${depthcharge}" ]] &&
-						[[ -s "${from}" ]]; then
-					cp "${from}" "${to}"
-					einfo "Copying static_fw_config_${coreboot}.h into local tree"
-					break
-				fi
-			done
-
-			# build depthcharge
-			make_depthcharge "${build_target}" "${build_target}"
-		done
+			_copy_fwconfig "${libpayload}" "${builddir}"
+			make_depthcharge "${depthcharge}" "${builddir}" "${libpayload}"
+		done < <(cros_config_host get-firmware-build-combinations depthcharge)
 	else
-		local from="${from_root}static_fw_config.h"
-		if [[ -s "${from}" ]]; then
-			cp "${from}" "${to}"
-			einfo "Copying static_fw_config.h into local tree"
-		fi
-		make_depthcharge "$(get_board)" build
+		libpayload="${SYSROOT}/firmware/legacy/libpayload"
+		builddir="$(cros-workon_get_build_dir)"
+		mkdir -p "${builddir}"
+
+		_copy_fwconfig "${libpayload}" "${builddir}"
+		make_depthcharge "$(get_board)" "${builddir}" "${libpayload}"
 	fi
+
+	popd >/dev/null || die
 }
 
 do_install() {
@@ -195,18 +215,21 @@
 	insinto "${dstdir}/depthcharge"
 	doins "${files_to_copy[@]}"
 
-	popd >/dev/null
+	popd >/dev/null || die
 }
 
 src_install() {
-	local build_target
-
 	if use unibuild; then
+		local build_target
+		local builddir
+
 		for build_target in $(cros_config_host \
-			get-firmware-build-targets depthcharge); do
-			do_install "${build_target}" "${build_target}"
+				get-firmware-build-targets depthcharge); do
+			builddir="$(cros-workon_get_build_dir)/${build_target}"
+
+			do_install "${build_target}" "${builddir}"
 		done
 	else
-		do_install "$(get_board)" build
+		do_install "$(get_board)" "$(cros-workon_get_build_dir)"
 	fi
 }
diff --git a/sys-boot/grub/files/0004-grub-0x4-relocation.patch b/sys-boot/grub/files/0004-grub-0x4-relocation.patch
new file mode 100644
index 0000000..02945e8
--- /dev/null
+++ b/sys-boot/grub/files/0004-grub-0x4-relocation.patch
@@ -0,0 +1,49 @@
+From 842c390469e2c2e10b5aa36700324cd3bde25875 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Sat, 17 Feb 2018 06:47:28 -0800
+Subject: x86-64: Treat R_X86_64_PLT32 as R_X86_64_PC32
+
+Starting from binutils commit bd7ab16b4537788ad53521c45469a1bdae84ad4a:
+
+https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=bd7ab16b4537788ad53521c45469a1bdae84ad4a
+
+x86-64 assembler generates R_X86_64_PLT32, instead of R_X86_64_PC32, for
+32-bit PC-relative branches.  Grub2 should treat R_X86_64_PLT32 as
+R_X86_64_PC32.
+
+Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
+Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
+---
+ util/grub-mkimagexx.c       | 1 +
+ util/grub-module-verifier.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+(limited to 'util')
+
+diff --git a/util/grub-mkimagexx.c b/util/grub-mkimagexx.c
+index a2bb05439..39d7efb91 100644
+--- a/util/grub-mkimagexx.c
++++ b/util/grub-mkimagexx.c
+@@ -841,6 +841,7 @@ SUFFIX (relocate_addresses) (Elf_Ehdr *e, Elf_Shdr *sections,
+ 		  break;
+ 
+ 		case R_X86_64_PC32:
++		case R_X86_64_PLT32:
+ 		  {
+ 		    grub_uint32_t *t32 = (grub_uint32_t *) target;
+ 		    *t32 = grub_host_to_target64 (grub_target_to_host32 (*t32)
+diff --git a/util/grub-module-verifier.c b/util/grub-module-verifier.c
+index 9179285a5..a79271f66 100644
+--- a/util/grub-module-verifier.c
++++ b/util/grub-module-verifier.c
+@@ -19,6 +19,7 @@ struct grub_module_verifier_arch archs[] = {
+       -1
+     }, (int[]){
+       R_X86_64_PC32,
++      R_X86_64_PLT32,
+       -1
+     }
+   },
+-- 
+cgit v1.2.1
+
diff --git a/sys-boot/grub/files/b189992601-no-soft-float.patch b/sys-boot/grub/files/b189992601-no-soft-float.patch
new file mode 100644
index 0000000..93560b3
--- /dev/null
+++ b/sys-boot/grub/files/b189992601-no-soft-float.patch
@@ -0,0 +1,27 @@
+Work around b/189992601: "SSE register cannot be used when SSE is disabled!"
+
+The combination of -Xclang -msoft-float and -Xclang -no-implicit-float
+causes Clang to assert. Since GRUB doesn't use floats, not passing
+ -Xclang -msoft-float is a safe way to avoid this assert.
+https://bugs.llvm.org/show_bug.cgi?id=48528 tracks fixing this on the
+LLVM side, after which we won't need this patch anymore.
+
+diff --git a/grub-2.02.old/configure.ac b/grub-2.02/configure.ac
+index edd1841..3ec8008 100644
+--- a/grub-2.02.old/configure.ac
++++ b/grub-2.02/configure.ac
+@@ -811,9 +811,11 @@ if test x"$platform" != xemu ; then
+        AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
+ 		         [grub_cv_target_cc_soft_float="-mno-inline-float-divide -mno-inline-sqrt"], [])
+     fi
+-    for cand in "-msoft-float -Xclang -msoft-float -Xclang -no-implicit-float" \
+-		"-Xclang -msoft-float -Xclang -no-implicit-float" \
+-		"-Xclang -msoft-float" "-msoft-float"; do
++    # b/189992601: "SSE register cannot be used when SSE is disabled!"
++    # if we use -Xclang -msoft-float and -Xclang -no-implicit-float.
++    # Since GRUB doesn't use any floating point, just -no-implicit-float
++    # should be enough.
++    for cand in "-Xclang -no-implicit-float"; do
+       if test x"$grub_cv_target_cc_soft_float" != xno ; then
+         break
+       fi
diff --git a/sys-boot/grub/grub-2.02-r3.ebuild b/sys-boot/grub/grub-2.02-r7.ebuild
similarity index 100%
rename from sys-boot/grub/grub-2.02-r3.ebuild
rename to sys-boot/grub/grub-2.02-r7.ebuild
diff --git a/sys-boot/grub/grub-2.02.ebuild b/sys-boot/grub/grub-2.02.ebuild
index 6964627..42302a8 100644
--- a/sys-boot/grub/grub-2.02.ebuild
+++ b/sys-boot/grub/grub-2.02.ebuild
@@ -3,7 +3,7 @@
 
 EAPI="5"
 
-inherit eutils toolchain-funcs multiprocessing
+inherit bash-completion-r1 eutils toolchain-funcs multiprocessing
 
 DESCRIPTION="GNU GRUB 2 boot loader"
 HOMEPAGE="http://www.gnu.org/software/grub/"
@@ -25,6 +25,8 @@
 	epatch "${FILESDIR}/0001-Forward-port-ChromeOS-specific-GRUB-environment-vari.patch"
 	epatch "${FILESDIR}/0002-Forward-port-gptpriority-command-to-GRUB-2.00.patch"
 	epatch "${FILESDIR}/0003-tsc-Change-default-tsc-calibration-method-to-pmtimer.patch"
+	epatch "${FILESDIR}/0004-grub-0x4-relocation.patch"
+	epatch "${FILESDIR}/b189992601-no-soft-float.patch"
 
 	bash autogen.sh || die
 }
@@ -42,6 +44,7 @@
 			# platform; explicitly set it to nothing to install unprefixed
 			# tools.  https://savannah.gnu.org/bugs/?39818
 			ECONF_SOURCE="${S}" multijob_child_init econf \
+				TARGET_CC="$(tc-getCC)" \
 				--disable-werror \
 				--disable-grub-mkfont \
 				--disable-grub-mount \
@@ -80,7 +83,7 @@
 	for platform in "${PLATFORMS[@]}" ; do
 		for target in "${TARGETS[@]}" ; do
 			emake -C ${target}-${platform}-build DESTDIR="${D}" \
-				install
+				install bashcompletiondir="$(get_bashcompdir)"
 		done
 	done
 }
diff --git a/sys-boot/libpayload/files/configs/config.cherry b/sys-boot/libpayload/files/configs/config.cherry
new file mode 100644
index 0000000..8dc8a80
--- /dev/null
+++ b/sys-boot/libpayload/files/configs/config.cherry
@@ -0,0 +1,7 @@
+CONFIG_LP_CHROMEOS=y
+CONFIG_LP_ARCH_ARM64=y
+CONFIG_LP_8250_SERIAL_CONSOLE=y
+CONFIG_LP_TIMER_MTK=y
+CONFIG_LP_USB_EHCI=y
+CONFIG_LP_USB_XHCI=y
+CONFIG_LP_USB_XHCI_MTK_QUIRK=y
diff --git a/sys-boot/libpayload/files/configs/config.herobrine b/sys-boot/libpayload/files/configs/config.herobrine
new file mode 100644
index 0000000..ba08c41
--- /dev/null
+++ b/sys-boot/libpayload/files/configs/config.herobrine
@@ -0,0 +1,5 @@
+CONFIG_LP_CHROMEOS=y
+CONFIG_LP_ARCH_ARM64=y
+CONFIG_LP_QUALCOMM_QUPV3_SERIAL_CONSOLE=y
+CONFIG_LP_TIMER_ARM64_ARCH=y
+CONFIG_LP_USB_XHCI=y
diff --git a/sys-boot/libpayload/files/configs/config.keeby b/sys-boot/libpayload/files/configs/config.keeby
new file mode 100644
index 0000000..44859b7
--- /dev/null
+++ b/sys-boot/libpayload/files/configs/config.keeby
@@ -0,0 +1,2 @@
+CONFIG_LP_CHROMEOS=y
+CONFIG_LP_USB_XHCI=y
diff --git a/sys-boot/libpayload/files/configs/config.majolica b/sys-boot/libpayload/files/configs/config.majolica
new file mode 100644
index 0000000..79c2bac
--- /dev/null
+++ b/sys-boot/libpayload/files/configs/config.majolica
@@ -0,0 +1,3 @@
+CONFIG_LP_CHROMEOS=y
+CONFIG_LP_USB_XHCI=y
+CONFIG_LP_ENABLE_APIC=y
diff --git a/sys-boot/libpayload/files/configs/config.mancomb b/sys-boot/libpayload/files/configs/config.mancomb
new file mode 100644
index 0000000..79c2bac
--- /dev/null
+++ b/sys-boot/libpayload/files/configs/config.mancomb
@@ -0,0 +1,3 @@
+CONFIG_LP_CHROMEOS=y
+CONFIG_LP_USB_XHCI=y
+CONFIG_LP_ENABLE_APIC=y
diff --git a/sys-boot/libpayload/libpayload-0.0.1-r3990.ebuild b/sys-boot/libpayload/libpayload-0.0.1-r3990.ebuild
deleted file mode 100644
index 6006157..0000000
--- a/sys-boot/libpayload/libpayload-0.0.1-r3990.ebuild
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright 2012 The Chromium OS Authors.
-# Distributed under the terms of the GNU General Public License v2
-
-# Change this version number when any change is made to configs/files under
-# libpayload and an auto-revbump is required.
-# VERSION=REVBUMP-0.0.17
-
-EAPI=7
-CROS_WORKON_COMMIT="1cf1d1ceda64e0b81170f8454fd5ecca311667d5"
-CROS_WORKON_TREE="2e32d2a5a79f8e88be91b44b40a65211c6ea4dae"
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-CROS_WORKON_EGIT_BRANCH="chromeos-2016.05"
-
-DESCRIPTION="coreboot's libpayload library"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="*"
-IUSE="coreboot-sdk verbose"
-
-CROS_WORKON_LOCALNAME="coreboot"
-
-# Don't strip to ease remote GDB use (cbfstool strips final binaries anyway)
-STRIP_MASK="*"
-
-inherit cros-workon cros-board toolchain-funcs coreboot-sdk
-
-src_compile() {
-	local src_root="payloads/libpayload"
-	local board=$(get_current_board_with_variant)
-
-	if ! use coreboot-sdk; then
-		tc-getCC
-		# Export the known cross compilers so there isn't a reliance
-		# on what the default profile is for exporting a compiler. The
-		# reasoning is that the firmware may need more than one to build
-		# and boot.
-		export CROSS_COMPILE_i386="i686-pc-linux-gnu-"
-		# For coreboot.org upstream architecture naming.
-		export CROSS_COMPILE_x86="i686-pc-linux-gnu-"
-		export CROSS_COMPILE_mipsel="mipsel-cros-linux-gnu-"
-		export CROSS_COMPILE_arm64="aarch64-cros-linux-gnu-"
-		export CROSS_COMPILE_arm="armv7a-cros-linux-gnu- armv7a-cros-linux-gnueabihf-"
-	else
-		export CROSS_COMPILE_x86=${COREBOOT_SDK_PREFIX_x86_32}
-		export CROSS_COMPILE_mipsel=${COREBOOT_SDK_PREFIX_mips}
-		export CROSS_COMPILE_arm64=${COREBOOT_SDK_PREFIX_arm64}
-		export CROSS_COMPILE_arm=${COREBOOT_SDK_PREFIX_arm}
-	fi
-
-	# we have all kinds of userland-cruft in CFLAGS that has no place in firmware.
-	# coreboot ignores CFLAGS, libpayload doesn't, so prune it.
-	unset CFLAGS
-
-	if [[ ! -s "${FILESDIR}/configs/config.${board}" ]]; then
-		board=$(get_current_board_no_variant)
-	fi
-
-	local board_config="$(realpath "${FILESDIR}/configs/config.${board}")"
-
-	[ -f "${board_config}" ] || die "${board_config} does not exist"
-
-	# get into the source directory
-	pushd "${src_root}"
-
-	# nuke build artifacts potentially present in the source directory
-	rm -rf build build_gdb .xcompile
-
-	local OPTS=( objutil="objutil" )
-
-	use verbose && OPTS+=( "V=1" )
-
-	# Configure and build
-	cp "${board_config}" .config
-	yes "" | \
-	emake "${OPTS[@]}" obj="build" oldconfig
-	emake "${OPTS[@]}" obj="build"
-
-	# Build a second set of libraries with GDB support for developers
-	( cat .config; echo "CONFIG_LP_REMOTEGDB=y" ) > .config.gdb
-	yes "" | \
-	emake "${OPTS[@]}" obj="build_gdb" DOTCONFIG=.config.gdb oldconfig
-	emake "${OPTS[@]}" obj="build_gdb" DOTCONFIG=.config.gdb
-
-	popd
-}
-
-src_install() {
-	local src_root="payloads/libpayload"
-
-	pushd "${src_root}"
-
-	emake obj="build_gdb" DESTDIR="${D}/firmware" DOTCONFIG=.config.gdb install
-	mv "${D}/firmware/libpayload" "${D}/firmware/libpayload_gdb"
-	emake obj="build" DESTDIR="${D}/firmware" install
-}
diff --git a/sys-boot/libpayload/libpayload-0.0.1-r4178.ebuild b/sys-boot/libpayload/libpayload-0.0.1-r4178.ebuild
new file mode 100644
index 0000000..dee7e78
--- /dev/null
+++ b/sys-boot/libpayload/libpayload-0.0.1-r4178.ebuild
@@ -0,0 +1,145 @@
+# Copyright 2012 The Chromium OS Authors.
+# Distributed under the terms of the GNU General Public License v2
+
+# Change this version number when any change is made to configs/files under
+# libpayload and an auto-revbump is required.
+# VERSION=REVBUMP-0.0.17
+
+EAPI=7
+CROS_WORKON_COMMIT="9ea324c52e5e086de80f16b6a6b812854aad03ff"
+CROS_WORKON_TREE=("b5a9076b809964e8c39cac28e54a2e8ad99169c8" "705ef94c6144066c732bc3b44a3fed2e79debfd5" "3866d5128a8888a5cbbf8e2ea4a546537e16d2ce")
+CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
+CROS_WORKON_EGIT_BRANCH="chromeos-2016.05"
+
+DESCRIPTION="coreboot's libpayload library"
+HOMEPAGE="http://www.coreboot.org"
+LICENSE="GPL-2"
+KEYWORDS="*"
+IUSE="coreboot-sdk unibuild verbose"
+
+DEPEND="unibuild? ( chromeos-base/chromeos-config:= )"
+
+CROS_WORKON_LOCALNAME="coreboot"
+
+# kconfig and xcompile are reused from coreboot.
+# Everything else is not supposed to matter for
+# libpayload.
+CROS_WORKON_SUBTREE="payloads/libpayload util/kconfig util/xcompile"
+
+# Don't strip to ease remote GDB use (cbfstool strips final binaries anyway)
+STRIP_MASK="*"
+
+inherit cros-workon cros-board toolchain-funcs coreboot-sdk
+
+LIBPAYLOAD_BUILD_NAMES=()
+LIBPAYLOAD_BUILD_TARGETS=()
+
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/payloads/libpayload"
+}
+
+src_configure() {
+	local name
+	local target
+
+	if use unibuild; then
+		while read -r name && read -r target; do
+			LIBPAYLOAD_BUILD_NAMES+=("${name}")
+			LIBPAYLOAD_BUILD_TARGETS+=("${target}")
+		done < <(cros_config_host get-firmware-build-combinations libpayload)
+	else
+		local board="$(get_current_board_with_variant)"
+		if [[ ! -s "${FILESDIR}/configs/config.${board}" ]]; then
+			board="$(get_current_board_no_variant)"
+		fi
+
+		LIBPAYLOAD_BUILD_NAMES=(legacy)
+		LIBPAYLOAD_BUILD_TARGETS=("${board}")
+	fi
+
+	for target in "${LIBPAYLOAD_BUILD_TARGETS[@]}"; do
+		if [[ ! -s "${FILESDIR}/configs/config.${target}" ]]; then
+			die "libpayload config does not exist for ${target}"
+		fi
+	done
+}
+
+# build libpayload for a certain config
+#   $1: path to the dotconfig
+#   $2: path to the build directory
+libpayload_compile() {
+	local dotconfig="$(realpath "$1")"
+	local objdir="$(realpath "$2")"
+	local OPTS=(
+		obj="${objdir}"
+		DOTCONFIG="${dotconfig}"
+	)
+	use verbose && OPTS+=( "V=1" )
+
+	yes "" | emake "${OPTS[@]}" oldconfig
+	emake "${OPTS[@]}"
+}
+
+src_compile() {
+	if ! use coreboot-sdk; then
+		tc-getCC
+		# Export the known cross compilers so there isn't a reliance
+		# on what the default profile is for exporting a compiler. The
+		# reasoning is that the firmware may need more than one to build
+		# and boot.
+		export CROSS_COMPILE_i386="i686-pc-linux-gnu-"
+		# For coreboot.org upstream architecture naming.
+		export CROSS_COMPILE_x86="i686-pc-linux-gnu-"
+		export CROSS_COMPILE_mipsel="mipsel-cros-linux-gnu-"
+		export CROSS_COMPILE_arm64="aarch64-cros-linux-gnu-"
+		export CROSS_COMPILE_arm="armv7a-cros-linux-gnu- armv7a-cros-linux-gnueabihf-"
+	else
+		export CROSS_COMPILE_x86=${COREBOOT_SDK_PREFIX_x86_32}
+		export CROSS_COMPILE_mipsel=${COREBOOT_SDK_PREFIX_mips}
+		export CROSS_COMPILE_arm64=${COREBOOT_SDK_PREFIX_arm64}
+		export CROSS_COMPILE_arm=${COREBOOT_SDK_PREFIX_arm}
+	fi
+
+	# we have all kinds of userland-cruft in CFLAGS that has no place in firmware.
+	# coreboot ignores CFLAGS, libpayload doesn't, so prune it.
+	unset CFLAGS
+
+	local unique_targets=()
+	readarray -t unique_targets \
+		< <(printf "%s\n" "${LIBPAYLOAD_BUILD_TARGETS[@]}" | sort -u)
+
+	local target
+	local dotconfig
+	local dotconfig_gdb
+	for target in "${unique_targets[@]}"; do
+		dotconfig="${FILESDIR}/configs/config.${target}"
+		cp "${dotconfig}" "${T}/config.${target}"
+		libpayload_compile "${T}/config.${target}" "${T}/${target}"
+
+		dotconfig_gdb="${T}/config_gdb.${target}"
+		# Build a second set of libraries with GDB support for developers
+		cp "${dotconfig}" "${dotconfig_gdb}"
+		(
+			echo
+			echo "CONFIG_LP_REMOTEGDB=y"
+		) >>"${dotconfig_gdb}"
+		libpayload_compile "${dotconfig_gdb}" "${T}/${target}.gdb"
+	done
+}
+
+src_install() {
+	local i
+	local name
+	local target
+
+	for i in "${!LIBPAYLOAD_BUILD_TARGETS[@]}"; do
+		name="${LIBPAYLOAD_BUILD_NAMES[${i}]}"
+		target="${LIBPAYLOAD_BUILD_TARGETS[${i}]}"
+
+		emake obj="${T}/${target}" DOTCONFIG="${T}/config.${target}" \
+			DESTDIR="${D}/firmware/${name}/libpayload" install
+		emake obj="${T}/${target}.gdb" DOTCONFIG="${T}/config_gdb.${target}" \
+			DESTDIR="${D}/firmware/${name}/libpayload.gdb" install
+	done
+}
diff --git a/sys-boot/libpayload/libpayload-9999.ebuild b/sys-boot/libpayload/libpayload-9999.ebuild
index 2485241..13a9635 100644
--- a/sys-boot/libpayload/libpayload-9999.ebuild
+++ b/sys-boot/libpayload/libpayload-9999.ebuild
@@ -13,19 +13,73 @@
 HOMEPAGE="http://www.coreboot.org"
 LICENSE="GPL-2"
 KEYWORDS="~*"
-IUSE="coreboot-sdk verbose"
+IUSE="coreboot-sdk unibuild verbose"
+
+DEPEND="unibuild? ( chromeos-base/chromeos-config:= )"
 
 CROS_WORKON_LOCALNAME="coreboot"
 
+# kconfig and xcompile are reused from coreboot.
+# Everything else is not supposed to matter for
+# libpayload.
+CROS_WORKON_SUBTREE="payloads/libpayload util/kconfig util/xcompile"
+
 # Don't strip to ease remote GDB use (cbfstool strips final binaries anyway)
 STRIP_MASK="*"
 
 inherit cros-workon cros-board toolchain-funcs coreboot-sdk
 
-src_compile() {
-	local src_root="payloads/libpayload"
-	local board=$(get_current_board_with_variant)
+LIBPAYLOAD_BUILD_NAMES=()
+LIBPAYLOAD_BUILD_TARGETS=()
 
+src_unpack() {
+	cros-workon_src_unpack
+	S+="/payloads/libpayload"
+}
+
+src_configure() {
+	local name
+	local target
+
+	if use unibuild; then
+		while read -r name && read -r target; do
+			LIBPAYLOAD_BUILD_NAMES+=("${name}")
+			LIBPAYLOAD_BUILD_TARGETS+=("${target}")
+		done < <(cros_config_host get-firmware-build-combinations libpayload)
+	else
+		local board="$(get_current_board_with_variant)"
+		if [[ ! -s "${FILESDIR}/configs/config.${board}" ]]; then
+			board="$(get_current_board_no_variant)"
+		fi
+
+		LIBPAYLOAD_BUILD_NAMES=(legacy)
+		LIBPAYLOAD_BUILD_TARGETS=("${board}")
+	fi
+
+	for target in "${LIBPAYLOAD_BUILD_TARGETS[@]}"; do
+		if [[ ! -s "${FILESDIR}/configs/config.${target}" ]]; then
+			die "libpayload config does not exist for ${target}"
+		fi
+	done
+}
+
+# build libpayload for a certain config
+#   $1: path to the dotconfig
+#   $2: path to the build directory
+libpayload_compile() {
+	local dotconfig="$(realpath "$1")"
+	local objdir="$(realpath "$2")"
+	local OPTS=(
+		obj="${objdir}"
+		DOTCONFIG="${dotconfig}"
+	)
+	use verbose && OPTS+=( "V=1" )
+
+	yes "" | emake "${OPTS[@]}" oldconfig
+	emake "${OPTS[@]}"
+}
+
+src_compile() {
 	if ! use coreboot-sdk; then
 		tc-getCC
 		# Export the known cross compilers so there isn't a reliance
@@ -49,45 +103,41 @@
 	# coreboot ignores CFLAGS, libpayload doesn't, so prune it.
 	unset CFLAGS
 
-	if [[ ! -s "${FILESDIR}/configs/config.${board}" ]]; then
-		board=$(get_current_board_no_variant)
-	fi
+	local unique_targets=()
+	readarray -t unique_targets \
+		< <(printf "%s\n" "${LIBPAYLOAD_BUILD_TARGETS[@]}" | sort -u)
 
-	local board_config="$(realpath "${FILESDIR}/configs/config.${board}")"
+	local target
+	local dotconfig
+	local dotconfig_gdb
+	for target in "${unique_targets[@]}"; do
+		dotconfig="${FILESDIR}/configs/config.${target}"
+		cp "${dotconfig}" "${T}/config.${target}"
+		libpayload_compile "${T}/config.${target}" "${T}/${target}"
 
-	[ -f "${board_config}" ] || die "${board_config} does not exist"
-
-	# get into the source directory
-	pushd "${src_root}"
-
-	# nuke build artifacts potentially present in the source directory
-	rm -rf build build_gdb .xcompile
-
-	local OPTS=( objutil="objutil" )
-
-	use verbose && OPTS+=( "V=1" )
-
-	# Configure and build
-	cp "${board_config}" .config
-	yes "" | \
-	emake "${OPTS[@]}" obj="build" oldconfig
-	emake "${OPTS[@]}" obj="build"
-
-	# Build a second set of libraries with GDB support for developers
-	( cat .config; echo "CONFIG_LP_REMOTEGDB=y" ) > .config.gdb
-	yes "" | \
-	emake "${OPTS[@]}" obj="build_gdb" DOTCONFIG=.config.gdb oldconfig
-	emake "${OPTS[@]}" obj="build_gdb" DOTCONFIG=.config.gdb
-
-	popd
+		dotconfig_gdb="${T}/config_gdb.${target}"
+		# Build a second set of libraries with GDB support for developers
+		cp "${dotconfig}" "${dotconfig_gdb}"
+		(
+			echo
+			echo "CONFIG_LP_REMOTEGDB=y"
+		) >>"${dotconfig_gdb}"
+		libpayload_compile "${dotconfig_gdb}" "${T}/${target}.gdb"
+	done
 }
 
 src_install() {
-	local src_root="payloads/libpayload"
+	local i
+	local name
+	local target
 
-	pushd "${src_root}"
+	for i in "${!LIBPAYLOAD_BUILD_TARGETS[@]}"; do
+		name="${LIBPAYLOAD_BUILD_NAMES[${i}]}"
+		target="${LIBPAYLOAD_BUILD_TARGETS[${i}]}"
 
-	emake obj="build_gdb" DESTDIR="${D}/firmware" DOTCONFIG=.config.gdb install
-	mv "${D}/firmware/libpayload" "${D}/firmware/libpayload_gdb"
-	emake obj="build" DESTDIR="${D}/firmware" install
+		emake obj="${T}/${target}" DOTCONFIG="${T}/config.${target}" \
+			DESTDIR="${D}/firmware/${name}/libpayload" install
+		emake obj="${T}/${target}.gdb" DOTCONFIG="${T}/config_gdb.${target}" \
+			DESTDIR="${D}/firmware/${name}/libpayload.gdb" install
+	done
 }
diff --git a/sys-boot/u-boot/OWNERS b/sys-boot/u-boot/OWNERS
index 46bd2de..97f1e75 100644
--- a/sys-boot/u-boot/OWNERS
+++ b/sys-boot/u-boot/OWNERS
@@ -1,2 +1 @@
-set noparent
 include chromiumos/third_party/u-boot:/OWNERS
diff --git a/sys-boot/u-boot/u-boot-2020.10-r2828.ebuild b/sys-boot/u-boot/u-boot-2020.10-r2828.ebuild
deleted file mode 100644
index e27d7b2..0000000
--- a/sys-boot/u-boot/u-boot-2020.10-r2828.ebuild
+++ /dev/null
@@ -1,179 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("bc1199918e73f3f810b2eeb5dc38e71a5914772a" "6f6efdc6fa38ed3bcacfa9e152f415d50ee8bad0")
-CROS_WORKON_TREE=("35ebd6a3b5d8c89eb1cdc4d68b8ad69c0c8dd8be" "06c3486af100c39ddc9cb59381d087b4f2ed1634")
-CROS_WORKON_PROJECT=("chromiumos/third_party/u-boot" "chromiumos/platform/vboot_reference")
-CROS_WORKON_LOCALNAME=("u-boot/files" "../platform/vboot_reference")
-CROS_WORKON_EGIT_BRANCH=("chromeos-v2020.01" "master")
-VBOOT_REFERENCE_DESTDIR="${S}/vboot_reference"
-CROS_WORKON_DESTDIR=("${S}" "${VBOOT_REFERENCE_DESTDIR}")
-
-inherit toolchain-funcs flag-o-matic cros-workon
-
-DESCRIPTION="Das U-Boot boot loader"
-HOMEPAGE="http://www.denx.de/wiki/U-Boot"
-
-LICENSE="GPL-2"
-KEYWORDS="*"
-IUSE="dev generated_cros_config sandbox unibuild vboot werror"
-
-DEPEND="sandbox? ( media-libs/libsdl:= )"
-
-RDEPEND="${DEPEND}
-	chromeos-base/u-boot-scripts
-	!!sys-boot/chromeos-u-boot
-	unibuild? (
-		!generated_cros_config? ( chromeos-base/chromeos-config )
-		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
-	)
-	"
-
-UB_BUILD_DIR="build"
-
-# To build for sandbox, check out the source:
-#
-#	cd src/third_party/u-boot/files
-#	git remote add dm git://git.denx.de/u-boot-dm.git
-#	git checkout dm/cros-working
-#
-# Then:
-#	cros_workon --host start u-boot
-#	USE="sandbox vboot" sudo -D emerge u-boot
-#	sudo chmod a+rw /firmware/image-u-boot.bin
-#	ln -s /firmware/image-u-boot.bin spi.bin
-#	/firmware/u-boot-tpl -d /firmware/u-boot.dtb.out \
-#		-L6 -c "host bind 0 $HOME/trunk/src/build/images/cheza/latest/chromiumos_image.bin; vboot go auto" -l
-#
-# See that it launches vboot (although without a functioning display) and
-# Ctrl-D attempts to boot the kernel.
-#
-# From outside the chroot:
-#
-#	ln -s  ${CROS}/chroot/firmware/image-u-boot.bin spi.bin
-#	${CROS}/chroot/firmware/u-boot-tpl -d \
-#		${CROS}/chroot/firmware/u-boot.dtb.out -L6 \
-#		-c "host bind 0 ${CROS}/src/build/images/cheza/latest/chromiumos_image.bin; vboot go auto" -l
-#
-# Outside the chroot the display and sound function correctly.
-
-# @FUNCTION: get_current_u_boot_config
-# @DESCRIPTION:
-# Finds the config for the current board by checking the master configuration.
-# The default is to use 'coreboot'.
-get_current_u_boot_config() {
-	local config
-
-	if use sandbox; then
-		config=chromeos_sandbox
-	else
-		config="$(cros_config_host get-firmware-build-targets u-boot)"
-	fi
-	echo "${config:-coreboot}"
-}
-
-umake() {
-	# Add `ARCH=` to reset ARCH env and let U-Boot choose it.
-	ARCH= emake "${COMMON_MAKE_FLAGS[@]}" "$@"
-}
-
-src_configure() {
-	local config
-
-	export LDFLAGS=$(raw-ldflags)
-	tc-export BUILD_CC
-
-	config="$(get_current_u_boot_config)"
-	[[ -n "${config}" ]] || die "No U-Boot config selected"
-	elog "Using U-Boot config: ${config}"
-
-	# Firmware related binaries are compiled with 32-bit toolchain
-	# on 64-bit platforms
-	if ! use cros_host && [[ ${CHOST} == x86_64-* ]]; then
-		CROSS_PREFIX="i686-pc-linux-gnu-"
-	else
-		CROSS_PREFIX="${CHOST}-"
-	fi
-
-	COMMON_MAKE_FLAGS=(
-		"CROSS_COMPILE=${CROSS_PREFIX}"
-		DEV_TREE_SEPARATE=1
-		"HOSTCC=${BUILD_CC}"
-		HOSTSTRIP=true
-		QEMU_ARCH=
-	)
-	if use vboot; then
-		COMMON_MAKE_FLAGS+=(
-			"VBOOT_SOURCE=${VBOOT_REFERENCE_DESTDIR}"
-			VBOOT_DEBUG=1
-		)
-	fi
-	if use dev; then
-		# Avoid hiding the errors and warnings
-		COMMON_MAKE_FLAGS+=(
-			-s
-			QUIET=1
-		)
-	else
-		COMMON_MAKE_FLAGS+=(
-			-k
-		)
-	fi
-	use werror && COMMON_MAKE_FLAGS+=( WERROR=y )
-
-	BUILD_FLAGS=(
-		"O=${UB_BUILD_DIR}"
-	)
-
-	umake "${BUILD_FLAGS[@]}" distclean
-	umake "${BUILD_FLAGS[@]}" "${config}_defconfig"
-}
-
-src_compile() {
-	umake "${BUILD_FLAGS[@]}" all
-}
-
-src_install() {
-	local inst_dir="/firmware"
-	local files_to_copy=(
-		System.map
-		u-boot.bin
-		u-boot.dtb
-		u-boot.dtb.out
-		u-boot.img
-	)
-	local exec_to_copy=(
-		u-boot
-		spl/u-boot-spl
-		tpl/u-boot-tpl
-	)
-	local f
-
-	if ! use sandbox; then
-		files_to_copy+=( "${exec_to_copy[@]}" )
-		exec_to_copy=()
-	fi
-
-	insinto "${inst_dir}"
-	exeinto "${inst_dir}"
-
-	for f in "${files_to_copy[@]}"; do
-		[[ -f "${UB_BUILD_DIR}/${f}" ]] &&
-			doins "${f/#/${UB_BUILD_DIR}/}"
-	done
-
-	for f in "${exec_to_copy[@]}"; do
-		[[ -f "${UB_BUILD_DIR}/${f}" ]] &&
-			doexe "${f/#/${UB_BUILD_DIR}/}"
-	done
-
-	# Install the full image needed by sandbox.
-	if use vboot; then
-		newins "${UB_BUILD_DIR}/image.bin" image-u-boot.bin
-	fi
-
-	insinto "${inst_dir}/dtb"
-	doins "${UB_BUILD_DIR}/dts/"*.dtb
-}
diff --git a/sys-boot/u-boot/u-boot-2021.07-r2879.ebuild b/sys-boot/u-boot/u-boot-2021.07-r2879.ebuild
new file mode 100644
index 0000000..037d15c
--- /dev/null
+++ b/sys-boot/u-boot/u-boot-2021.07-r2879.ebuild
@@ -0,0 +1,179 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("39ce6d27ad29fd324793a8d0c7db8ae712cc027c" "5c0fcf0f8725b98043a4b18f36e21489375d133a")
+CROS_WORKON_TREE=("de4f0c255aa3b757f43b4dd4f7a60f08ead04f30" "3bb07f6afc46a008c0dc9d3ae3f64b9b3273004c")
+CROS_WORKON_PROJECT=("chromiumos/third_party/u-boot" "chromiumos/platform/vboot_reference")
+CROS_WORKON_LOCALNAME=("u-boot/files" "../platform/vboot_reference")
+CROS_WORKON_EGIT_BRANCH=("chromeos-v2020.01" "master")
+VBOOT_REFERENCE_DESTDIR="${S}/vboot_reference"
+CROS_WORKON_DESTDIR=("${S}" "${VBOOT_REFERENCE_DESTDIR}")
+
+inherit toolchain-funcs flag-o-matic cros-workon
+
+DESCRIPTION="Das U-Boot boot loader"
+HOMEPAGE="http://www.denx.de/wiki/U-Boot"
+
+LICENSE="GPL-2"
+KEYWORDS="*"
+IUSE="dev generated_cros_config sandbox unibuild vboot werror"
+
+DEPEND="sandbox? ( media-libs/libsdl:= )"
+
+RDEPEND="${DEPEND}
+	chromeos-base/u-boot-scripts
+	!!sys-boot/chromeos-u-boot
+	unibuild? (
+		!generated_cros_config? ( chromeos-base/chromeos-config )
+		generated_cros_config? ( chromeos-base/chromeos-config-bsp:= )
+	)
+	"
+
+UB_BUILD_DIR="build"
+
+# To build for sandbox, check out the source:
+#
+#	cd src/third_party/u-boot/files
+#	git remote add dm git://git.denx.de/u-boot-dm.git
+#	git checkout dm/cros-working
+#
+# Then:
+#	cros_workon --host start u-boot
+#	USE="sandbox vboot" sudo -D emerge u-boot
+#	sudo chmod a+rw /firmware/image-u-boot.bin
+#	ln -s /firmware/image-u-boot.bin spi.bin
+#	/firmware/u-boot-tpl -d /firmware/u-boot.dtb.out \
+#		-L6 -c "host bind 0 $HOME/trunk/src/build/images/cheza/latest/chromiumos_image.bin; vboot go auto" -l
+#
+# See that it launches vboot (although without a functioning display) and
+# Ctrl-D attempts to boot the kernel.
+#
+# From outside the chroot:
+#
+#	ln -s  ${CROS}/chroot/firmware/image-u-boot.bin spi.bin
+#	${CROS}/chroot/firmware/u-boot-tpl -d \
+#		${CROS}/chroot/firmware/u-boot.dtb.out -L6 \
+#		-c "host bind 0 ${CROS}/src/build/images/cheza/latest/chromiumos_image.bin; vboot go auto" -l
+#
+# Outside the chroot the display and sound function correctly.
+
+# @FUNCTION: get_current_u_boot_config
+# @DESCRIPTION:
+# Finds the config for the current board by checking the master configuration.
+# The default is to use 'coreboot'.
+get_current_u_boot_config() {
+	local config
+
+	if use sandbox; then
+		config=chromeos_sandbox
+	else
+		config="$(cros_config_host get-firmware-build-targets u-boot)"
+	fi
+	echo "${config:-coreboot}"
+}
+
+umake() {
+	# Add `ARCH=` to reset ARCH env and let U-Boot choose it.
+	ARCH= emake "${COMMON_MAKE_FLAGS[@]}" "$@"
+}
+
+src_configure() {
+	local config
+
+	export LDFLAGS=$(raw-ldflags)
+	tc-export BUILD_CC
+
+	config="$(get_current_u_boot_config)"
+	[[ -n "${config}" ]] || die "No U-Boot config selected"
+	elog "Using U-Boot config: ${config}"
+
+	# Firmware related binaries are compiled with 32-bit toolchain
+	# on 64-bit platforms
+	if ! use cros_host && [[ ${CHOST} == x86_64-* ]]; then
+		CROSS_PREFIX="i686-pc-linux-gnu-"
+	else
+		CROSS_PREFIX="${CHOST}-"
+	fi
+
+	COMMON_MAKE_FLAGS=(
+		"CROSS_COMPILE=${CROSS_PREFIX}"
+		DEV_TREE_SEPARATE=1
+		"HOSTCC=${BUILD_CC}"
+		HOSTSTRIP=true
+		QEMU_ARCH=
+	)
+	if use vboot; then
+		COMMON_MAKE_FLAGS+=(
+			"VBOOT_SOURCE=${VBOOT_REFERENCE_DESTDIR}"
+			VBOOT_DEBUG=1
+		)
+	fi
+	if use dev; then
+		# Avoid hiding the errors and warnings
+		COMMON_MAKE_FLAGS+=(
+			-s
+			QUIET=1
+		)
+	else
+		COMMON_MAKE_FLAGS+=(
+			-k
+		)
+	fi
+	use werror && COMMON_MAKE_FLAGS+=( WERROR=y )
+
+	BUILD_FLAGS=(
+		"O=${UB_BUILD_DIR}"
+	)
+
+	umake "${BUILD_FLAGS[@]}" distclean
+	umake "${BUILD_FLAGS[@]}" "${config}_defconfig"
+}
+
+src_compile() {
+	umake "${BUILD_FLAGS[@]}" all
+}
+
+src_install() {
+	local inst_dir="/firmware"
+	local files_to_copy=(
+		System.map
+		u-boot.bin
+		u-boot.dtb
+		u-boot.dtb.out
+		u-boot.img
+	)
+	local exec_to_copy=(
+		u-boot
+		spl/u-boot-spl
+		tpl/u-boot-tpl
+	)
+	local f
+
+	if ! use sandbox; then
+		files_to_copy+=( "${exec_to_copy[@]}" )
+		exec_to_copy=()
+	fi
+
+	insinto "${inst_dir}"
+	exeinto "${inst_dir}"
+
+	for f in "${files_to_copy[@]}"; do
+		[[ -f "${UB_BUILD_DIR}/${f}" ]] &&
+			doins "${f/#/${UB_BUILD_DIR}/}"
+	done
+
+	for f in "${exec_to_copy[@]}"; do
+		[[ -f "${UB_BUILD_DIR}/${f}" ]] &&
+			doexe "${f/#/${UB_BUILD_DIR}/}"
+	done
+
+	# Install the full image needed by sandbox.
+	if use vboot; then
+		newins "${UB_BUILD_DIR}/image.bin" image-u-boot.bin
+	fi
+
+	insinto "${inst_dir}/dtb"
+	doins "${UB_BUILD_DIR}/dts/"*.dtb
+}
diff --git a/sys-devel/arc-build/arc-build-0.0.3-r17.ebuild b/sys-devel/arc-build/arc-build-0.0.3-r18.ebuild
similarity index 100%
rename from sys-devel/arc-build/arc-build-0.0.3-r17.ebuild
rename to sys-devel/arc-build/arc-build-0.0.3-r18.ebuild
diff --git a/sys-devel/arc-build/files/sc/backtrace.pc b/sys-devel/arc-build/files/sc/backtrace.pc
new file mode 100644
index 0000000..6c82b4c
--- /dev/null
+++ b/sys-devel/arc-build/files/sc/backtrace.pc
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=${prefix}/@lib@
+includedir=${prefix}/include
+
+Name: backtrace
+Description: Android backtrace library
+Version: 9.0
+Libs: -L${libdir} -lbacktrace
+Cflags: -I${includedir}
diff --git a/sys-devel/arc-build/files/sc/cutils.pc b/sys-devel/arc-build/files/sc/cutils.pc
new file mode 100644
index 0000000..21f91c9
--- /dev/null
+++ b/sys-devel/arc-build/files/sc/cutils.pc
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=${prefix}/@lib@
+includedir=${prefix}/include
+
+Name: cutils
+Description: Android utils library
+Version: 8.0
+Libs: -L${libdir} -lcutils -llog
+Cflags: -I${includedir}
diff --git a/sys-devel/arc-build/files/sc/expat.pc b/sys-devel/arc-build/files/sc/expat.pc
new file mode 100644
index 0000000..8bab105
--- /dev/null
+++ b/sys-devel/arc-build/files/sc/expat.pc
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=${prefix}/@lib@
+includedir=${prefix}/include
+
+Name: expat
+Version: 2.1.1
+Description: expat XML parser
+URL: http://www.libexpat.org
+Libs: -L${libdir} -lexpat
+Cflags: -I${includedir}
diff --git a/sys-devel/arc-build/files/sc/hardware.pc b/sys-devel/arc-build/files/sc/hardware.pc
new file mode 100644
index 0000000..539e362
--- /dev/null
+++ b/sys-devel/arc-build/files/sc/hardware.pc
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=${prefix}/@lib@
+includedir=${prefix}/include
+
+Name: hardware
+Description: Android hardware library
+Version: 8.0
+Libs: -L${libdir} -lhardware
+Cflags: -I${includedir}
diff --git a/sys-devel/arc-build/files/sc/mediandk.pc b/sys-devel/arc-build/files/sc/mediandk.pc
new file mode 100644
index 0000000..a47d494
--- /dev/null
+++ b/sys-devel/arc-build/files/sc/mediandk.pc
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=${prefix}/@lib@
+includedir=${prefix}/include
+
+Name: mediandk
+Description: Android media NDK library
+Version: 8.0
+Libs: -L${libdir} -lmediandk
+Cflags: -I${includedir}
diff --git a/sys-devel/arc-build/files/sc/nativewindow.pc b/sys-devel/arc-build/files/sc/nativewindow.pc
new file mode 100644
index 0000000..8570ee4
--- /dev/null
+++ b/sys-devel/arc-build/files/sc/nativewindow.pc
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=${prefix}/@lib@
+includedir=${prefix}/include
+
+Name: nativewindow
+Description: Android native window library
+Version: 8.0
+Libs: -L${libdir} -lnativewindow
+Cflags: -I${includedir}
diff --git a/sys-devel/arc-build/files/sc/pthread-stubs.pc b/sys-devel/arc-build/files/sc/pthread-stubs.pc
new file mode 100644
index 0000000..bf9bae1
--- /dev/null
+++ b/sys-devel/arc-build/files/sc/pthread-stubs.pc
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=${prefix}/@lib@
+includedir=${prefix}/include
+
+Name: pthread stubs
+Description: Stubs missing from libc for standard pthread functions
+Version: 1.0
+Libs: -L${libdir} -lc
+Cflags: -I${includedir}
diff --git a/sys-devel/arc-build/files/sc/sync.pc b/sys-devel/arc-build/files/sc/sync.pc
new file mode 100644
index 0000000..6c4b993
--- /dev/null
+++ b/sys-devel/arc-build/files/sc/sync.pc
@@ -0,0 +1,10 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=${prefix}/@lib@
+includedir=${prefix}/include
+
+Name: sync
+Description: Android sync library
+Version: 8.0
+Libs: -L${libdir} -lsync
+Cflags: -I${includedir}
diff --git a/sys-devel/arc-build/files/sc/zlib.pc b/sys-devel/arc-build/files/sc/zlib.pc
new file mode 100644
index 0000000..15cdb2d
--- /dev/null
+++ b/sys-devel/arc-build/files/sc/zlib.pc
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=${prefix}/@lib@
+includedir=${prefix}/include
+
+Name: zlib
+Version: 1.2.8
+Description: zlib compression library
+
+Libs: -L${libdir} -lz
+Cflags: -I${includedir}
diff --git a/sys-devel/arc-llvm/Manifest b/sys-devel/arc-llvm/Manifest
index 99100ce..ce59ca9 100644
--- a/sys-devel/arc-llvm/Manifest
+++ b/sys-devel/arc-llvm/Manifest
@@ -1,4 +1,2 @@
-DIST llvm-8.0.1-manpages.tar.bz2 140915 BLAKE2B 13ac9e172728d643dac1d12ac06909b6db3dd9a1a380a92a07867e3cb835f94b265da5d75c4712b5409405a65795d2cb6b32da4098e38cbb95d7023b56bcbbc1 SHA512 23994a2374659fbbf8d9b5160f4d77e9be7c4c9fc14963e8186bbede78b0ee9257f6b6a9c484bc75d72443d65bb24e598841e64af500336283de0f454d6a2073
-DIST llvm-8.0.1.src.tar.xz 30477608 BLAKE2B 4319c837b36111401e3b0f9659b8d875c89463bcc7816df1aefe1e3ff989860bbaa92504718f8e15416cfd9f3491c13777cd5cb661877b237b342b0e515b93f5 SHA512 82e120be5cabdfd5111aebbea68a663fe229c8861d73802d6ab09a3bf48f60de333e07e61f8fb61beaa14ac2bea24fcd74fa6f761acaf62469f536b79fcb1e16
 DIST llvm-9.0.0-manpages.tar.bz2 158546 BLAKE2B eed6235698a0b5993affe305f7fd22cd4cf444adf931275a1685f2049a5f17cf2933907577d9ce142348a3c579769b0436aa2b5a9a953958504125a8c3e83b7d SHA512 64c8d18061eb2870b379a1df485be0b61eac07cb10b3f97347b54b2ee326faa63437ca04466776be282e120dd3f6147e14fffdd38ca370db85748fe5eb54d764
 DIST llvm-9.0.0.src.tar.xz 32994768 BLAKE2B 7f09bff9bcada95ab9c920c78aef92b57e665d9188bab39c734084ceb03a801c942fed48ea77fabeeb6110c648cb69363c659a6ce93ebf67dbba5c187219b13b SHA512 1bb3341e1d231559b948f1505b33c2e2e03989f9b8bbfef0e0cdaff5ac43f85574c9ec5ac53399b914f497d6899425d861411024e8d7e1d1a338c1c6951ac658
diff --git a/sys-devel/arc-llvm/arc-llvm-8.0.1-r3.ebuild b/sys-devel/arc-llvm/arc-llvm-8.0.1-r3.ebuild
deleted file mode 120000
index d1914ee..0000000
--- a/sys-devel/arc-llvm/arc-llvm-8.0.1-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-arc-llvm-8.0.1.ebuild
\ No newline at end of file
diff --git a/sys-devel/arc-llvm/arc-llvm-8.0.1.ebuild b/sys-devel/arc-llvm/arc-llvm-8.0.1.ebuild
deleted file mode 100644
index af2decf..0000000
--- a/sys-devel/arc-llvm/arc-llvm-8.0.1.ebuild
+++ /dev/null
@@ -1,273 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-MY_PN=llvm
-MY_P=${MY_PN}-${PV}
-S="${WORKDIR}/${P}"
-
-: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
-# (needed due to CMAKE_BUILD_TYPE != Gentoo)
-CMAKE_MIN_VERSION=3.7.0-r1
-PYTHON_COMPAT=( python2_7 )
-
-inherit cmake-utils flag-o-matic multilib-minimal \
-	multiprocessing pax-utils python-any-r1 toolchain-funcs arc-build eapi7-ver
-
-DESCRIPTION="Low Level Virtual Machine"
-HOMEPAGE="https://llvm.org/"
-SRC_URI="https://github.com/llvm/llvm-project/releases/download/llvmorg-${PV}/${MY_P}.src.tar.xz
-	!doc? ( https://dev.gentoo.org/~mgorny/dist/llvm/${MY_P}-manpages.tar.bz2 )"
-
-# Keep in sync with CMakeLists.txt
-ALL_LLVM_TARGETS=( AArch64 AMDGPU ARM BPF Hexagon Lanai Mips MSP430
-	NVPTX PowerPC Sparc SystemZ WebAssembly X86 XCore )
-ALL_LLVM_TARGETS=( "${ALL_LLVM_TARGETS[@]/#/llvm_targets_}" )
-
-# Additional licenses:
-# 1. OpenBSD regex: Henry Spencer's license ('rc' in Gentoo) + BSD.
-# 2. ARM backend: LLVM Software Grant by ARM.
-# 3. MD5 code: public-domain.
-# 4. Tests (not installed):
-#  a. gtest: BSD.
-#  b. YAML tests: MIT.
-
-LICENSE="UoI-NCSA rc BSD public-domain
-	llvm_targets_ARM? ( LLVM-Grant )"
-SLOT="$(ver_cut 1)"
-KEYWORDS="*"
-IUSE="debug doc exegesis libedit libffi ncurses test xar xml
-	kernel_Darwin ${ALL_LLVM_TARGETS[*]}"
-RESTRICT="!test? ( test )"
-
-# There are no file collisions between these versions but having :0
-# installed means llvm-config there will take precedence.
-RDEPEND="!sys-devel/arc-llvm:0"
-# Remove previous version of llvm to avoid file collisions, since all slots end
-# up in the same install directory.
-RDEPEND="${RDEPEND}
-	!<sys-devel/arc-llvm-${SLOT}"
-
-REQUIRED_USE="|| ( ${ALL_LLVM_TARGETS[*]} )"
-
-S=${WORKDIR}/${MY_P}.src
-
-HOST_DIR="${WORKDIR}/${PF}-${CBUILD}"
-
-# least intrusive of all
-CMAKE_BUILD_TYPE=RelWithDebInfo
-
-src_prepare() {
-	# Fix llvm-config for shared linking and sane flags
-	# https://bugs.gentoo.org/show_bug.cgi?id=565358
-	eapply "${FILESDIR}"/9999/0007-llvm-config-Clean-up-exported-values-update-for-shar.patch
-
-	# Don't install static libraries when not requested
-	eapply "${FILESDIR}/arc-llvm-6.0.0-no-static-libraries.patch"
-
-	# disable use of SDK on OSX, bug #568758
-	sed -i -e 's/xcrun/false/' utils/lit/lit/util.py || die
-
-	# User patches + QA
-	eapply_user
-}
-
-build_host_tool() {
-	local tool="$1"
-	# Use host toolchain when building for the host.
-	local CC=clang
-	local CXX=clang++
-	local CFLAGS=''
-	local CXXFLAGS=''
-	local LDFLAGS=''
-	mkdir -p "${HOST_DIR}" || die
-	cd "${HOST_DIR}" || die
-	local libdir=$(get_libdir)
-	cmake -DLLVM_LIBDIR_SUFFIX=${libdir#lib} \
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}" \
-		-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-		-G "Unix Makefiles" ${S}
-	# Settings for the target and host may differ (e.g. system libs), but we
-	# need llvm-config's output to match the target behavior. Copy the
-	# config from the target into the host before embedding into the binary.
-	if [[ -f "${BUILD_DIR}/${tool}/BuildVariables.inc" ]]; then
-		cp "${BUILD_DIR}/${tool}/BuildVariables.inc" \
-			"${HOST_DIR}/${tool}"
-	fi
-	cd "${HOST_DIR}/${tool}" || die
-	emake
-}
-
-build_host_tblgen() {
-	build_host_tool "utils/TableGen"
-}
-
-build_host_config() {
-	build_host_tool "tools/llvm-config"
-	mv "${HOST_DIR}/bin/llvm-config" "${HOST_DIR}/bin/llvm-config-${ABI}"
-}
-
-src_configure() {
-	# Do not pass icf ldflag since it's not supported by this linker.
-	filter-ldflags -Wl,--icf=all
-	arc-build-select-clang
-	multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-	local ffi_cflags ffi_ldflags
-	if use libffi; then
-		ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
-		ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
-	fi
-
-	local libdir=$(get_libdir)
-	local mycmakeargs=(
-		# disable appending VCS revision to the version to improve
-		# direct cache hit ratio
-		-DLLVM_APPEND_VC_REV=OFF
-		-DCMAKE_INSTALL_PREFIX="${ARC_PREFIX}/build"
-		-DLLVM_LIBDIR_SUFFIX=${libdir#lib}
-		
-		-DLLVM_BUILD_LLVM_DYLIB=ON
-		-DLLVM_LINK_LLVM_DYLIB=ON
-
-		-DLLVM_TARGETS_TO_BUILD="${LLVM_TARGETS// /;}"
-		-DLLVM_BUILD_TESTS=$(usex test)
-		-DLLVM_BUILD_TOOLS=OFF
-		-DLLVM_BUILD_RUNTIMES=OFF
-		-DLLVM_TOOL_LTO_BUILD=OFF
-
-		-DLLVM_ENABLE_FFI=$(usex libffi)
-		-DLLVM_ENABLE_LIBEDIT=$(usex libedit)
-		-DLLVM_ENABLE_TERMINFO=$(usex ncurses)
-		-DLLVM_ENABLE_LIBXML2=$(usex xml)
-		-DLLVM_ENABLE_ASSERTIONS=$(usex debug)
-		-DLLVM_ENABLE_LIBPFM=$(usex exegesis)
-		-DLLVM_ENABLE_EH=OFF
-		-DLLVM_ENABLE_RTTI=OFF
-
-		-DWITH_POLLY=OFF # TODO
-
-		-DLLVM_HOST_TRIPLE="${CHOST}"
-
-		-DFFI_INCLUDE_DIR="${ffi_cflags#-I}"
-		-DFFI_LIBRARY_DIR="${ffi_ldflags#-L}"
-		# used only for llvm-objdump tool
-		-DHAVE_LIBXAR=$(multilib_native_usex xar 1 0)
-
-		# disable OCaml bindings (now in dev-ml/llvm-ocaml)
-		-DOCAMLFIND=NO
-	)
-
-#	Note: go bindings have no CMake rules at the moment
-#	but let's kill the check in case they are introduced
-#	if ! multilib_is_native_abi || ! use go; then
-		mycmakeargs+=(
-			-DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND
-		)
-#	fi
-
-	use test && mycmakeargs+=(
-		-DLLVM_LIT_ARGS="-vv;-j;${LIT_JOBS:-$(makeopts_jobs "${MAKEOPTS}" "$(get_nproc)")}"
-	)
-
-	if multilib_is_native_abi; then
-		mycmakeargs+=(
-			-DLLVM_BUILD_DOCS=$(usex doc)
-			-DLLVM_ENABLE_OCAMLDOC=OFF
-			-DLLVM_ENABLE_SPHINX=$(usex doc)
-			-DLLVM_ENABLE_DOXYGEN=OFF
-			-DLLVM_INSTALL_UTILS=ON
-		)
-	fi
-
-	if tc-is-cross-compiler; then
-		# Force LLVM_BUILD_TOOLS=ON to ensure build_host_tools builds
-		# llvm-config
-		build_host_tblgen
-		# die early if the build tools are not installed
-		[[ -x "${HOST_DIR}/bin/llvm-tblgen" ]] \
-			|| die "${HOST_DIR}/bin/llvm-tblgen not found or usable"
-		mycmakeargs+=(
-			-DCMAKE_CROSSCOMPILING=ON
-			-DLLVM_TABLEGEN="${HOST_DIR}/bin/llvm-tblgen"
-		)
-	fi
-
-	# workaround BMI bug in gcc-7 (fixed in 7.4)
-	# https://bugs.gentoo.org/649880
-	# apply only to x86, https://bugs.gentoo.org/650506
-	if tc-is-gcc && [[ ${MULTILIB_ABI_FLAG} == abi_x86* ]] &&
-			[[ $(gcc-major-version) -eq 7 && $(gcc-minor-version) -lt 4 ]]
-	then
-		local CFLAGS="${CFLAGS} -mno-bmi"
-		local CXXFLAGS="${CXXFLAGS} -mno-bmi"
-	fi
-
-	# LLVM_ENABLE_ASSERTIONS=NO does not guarantee this for us, #614844
-	use debug || local -x CPPFLAGS="${CPPFLAGS} -DNDEBUG"
-	cmake-utils_src_configure
-}
-
-multilib_src_compile() {
-	cmake-utils_src_compile
-
-	pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
-	pax-mark m "${BUILD_DIR}"/bin/lli
-	pax-mark m "${BUILD_DIR}"/bin/lli-child-target
-
-	if use test; then
-		pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
-		pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
-		pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
-	fi
-	
-	build_host_config
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	cmake-utils_src_make check
-}
-
-src_install() {
-	local LLVM_LDPATHS=()
-	multilib-minimal_src_install
-}
-
-multilib_src_install() {
-	cmake-utils_src_install
-
-	into ${ARC_PREFIX}/build
-	newbin "${HOST_DIR}/bin/llvm-config-${ABI}" "llvm-config-host-${ABI}"
-
-	# Manually copy libLLVM-8.0.1.so into the android container.
-	# TODO(b/112313068): Statically link with this instead of installing
-	# this shared library.
-	into "${ARC_PREFIX}/vendor"
-	dolib $(get_libdir)/libLLVM-${SLOT}.so
-
-	# Then replace the copy in the build directory with a symlink to the
-	# vendor image copy.
-	dosym ../../vendor/$(get_libdir)/libLLVM-${SLOT}.so "${ARC_PREFIX}/build/$(get_libdir)/libLLVM-${SLOT}.so"
-}
-
-multilib_src_install_all() {
-	local LLVM_CONFIG_HOST="${D}/${ARC_PREFIX}/build/bin/llvm-config-host"
-	cat > "${LLVM_CONFIG_HOST}" <<EOF
-#!/bin/bash
-
-ABI_BIN="\$(dirname ""\$0"")/llvm-config-host-\${ABI}"
-
-if [[ -e "\${ABI_BIN}" ]]; then
-	exec "\${ABI_BIN}" "\$@"
-else
-	echo "\$0: Unsupported ABI: \${ABI}"
-	exit 1
-fi
-EOF
-	chmod a+rx "${LLVM_CONFIG_HOST}" || die
-}
diff --git a/sys-devel/arc-llvm/arc-llvm-9.0.0-r1.ebuild b/sys-devel/arc-llvm/arc-llvm-9.0.0-r2.ebuild
similarity index 100%
rename from sys-devel/arc-llvm/arc-llvm-9.0.0-r1.ebuild
rename to sys-devel/arc-llvm/arc-llvm-9.0.0-r2.ebuild
diff --git a/sys-devel/arc-llvm/arc-llvm-9.0.0.ebuild b/sys-devel/arc-llvm/arc-llvm-9.0.0.ebuild
index d0a6cb7..733a278 100644
--- a/sys-devel/arc-llvm/arc-llvm-9.0.0.ebuild
+++ b/sys-devel/arc-llvm/arc-llvm-9.0.0.ebuild
@@ -10,7 +10,7 @@
 : ${CMAKE_MAKEFILE_GENERATOR:=ninja}
 # (needed due to CMAKE_BUILD_TYPE != Gentoo)
 CMAKE_MIN_VERSION=3.7.0-r1
-PYTHON_COMPAT=( python2_7 )
+PYTHON_COMPAT=( python3_{6..9} )
 
 inherit cmake-utils flag-o-matic multilib-minimal \
 	multiprocessing pax-utils python-any-r1 toolchain-funcs arc-build eapi7-ver
diff --git a/sys-devel/arc-llvm/files/arc-llvm-6.0.0-no-static-libraries.patch b/sys-devel/arc-llvm/files/arc-llvm-6.0.0-no-static-libraries.patch
deleted file mode 100644
index e1ba1d0..0000000
--- a/sys-devel/arc-llvm/files/arc-llvm-6.0.0-no-static-libraries.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-Don't install static libraries if they're not requested.
-
-https://crbug.com/906078
-
---- a/cmake/modules/AddLLVM.cmake
-+++ b/cmake/modules/AddLLVM.cmake
-@@ -639,10 +639,12 @@
-         set_property(GLOBAL PROPERTY LLVM_HAS_EXPORTS True)
-       endif()
- 
--      install(TARGETS ${name}
--              ${export_to_llvmexports}
--              ${install_type} DESTINATION ${install_dir}
--              COMPONENT ${name})
-+      if(ARG_SHARED OR NOT LLVM_BUILD_LLVM_DYLIB)
-+        install(TARGETS ${name}
-+                ${export_to_llvmexports}
-+                ${install_type} DESTINATION ${install_dir}
-+                COMPONENT ${name})
-+      endif()
- 
-       if (NOT CMAKE_CONFIGURATION_TYPES)
-         add_llvm_install_targets(install-${name}
diff --git a/sys-devel/arc-toolchain-s/files/gather.sh b/sys-devel/arc-toolchain-s/files/gather.sh
new file mode 100755
index 0000000..3bc9378
--- /dev/null
+++ b/sys-devel/arc-toolchain-s/files/gather.sh
@@ -0,0 +1,384 @@
+#!/bin/bash
+#
+# Copyright 2021 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.
+#
+# This script creates a tarball that contains toolchains for android
+# sc-arc-dev. Before running it, please modify the following 4 variables
+#   - ANDROID_TREE
+#   - ARTIFACTS_DIR_ARM
+#   - ARTIFACTS_DIR_X86_64
+#   - TO_DIR_BASE
+#   - DEAPEXER
+#   - DEBUGFS
+# Then just run it from anywhere with no arguments.
+# The constructed tarball will contain the sysroots under amd64 and arm.
+#
+# *** PREREQUISITES ***
+# Before running the script, follow these steps:
+#
+# 1. Download prebuilts for ARM and x86_64
+#
+# Go to go/ab, select branch git_sc-arc-dev. Pick a -userdebug build for all
+# architectures, then download bertha_${arch}-target_files-${build_id}.zip.
+# Extract those files and point ARTIFACTS_DIR_${ARCH} to the respective
+# directories.
+# The prebuilts will provide most of the binaries.
+#
+# 2. Make sure you have the right version of the prebuilts
+#
+# $ grep "ro.build.version.release" ${ARTIFACTS_DIR_${ARCH}}/SYSTEM/build.prop
+#
+# The build artifacts will be created in subdirectories of out/ where the script
+# will find them. Do not delete out/ or rebuild before running the script!
+#
+# 4. Download deapexer and debugfs binaries.
+#
+# Go to ab/ub-aapt2-release and choose the latest green static_apexer_tools
+# build. Download the deapexer and debugfs_static artifacts from that build.
+# Set DEAPEXER and DEBUGFS to the path to those artifacts.
+#
+# 5. Run the script!
+#
+# $ ./gather.sh
+#
+
+
+set -e
+
+# 1. Location of the android sc-arc-dev branch tree.
+: "${ANDROID_TREE:="${HOME}/android"}"
+
+# ARCH names used in sysroot.
+ARC_ARCH=('amd64' 'arm64' 'amd64' 'arm64')
+
+# LIBRARY paths for each ARCH
+ARC_ARCH_LIB_DIR=('lib' 'lib' 'lib64' 'lib64')
+
+# LIBRARY paths for each ARCH, where libcrt* can be found
+ARC_ARCH_LIB_CRT_DIR=('lib' 'lib' 'lib64' 'lib')
+
+# ARCH names used in android.
+ARC_ARCH_ANDROID=('x86' 'arm' 'x86_64' 'arm64')
+
+# ARCH names used in kernel uapi.
+ARC_ARCH_UAPI=('x86' 'arm' 'x86' 'arm64')
+
+# 2. The dir to which the artifacts tarball (downloaded from go/ab) was
+# extracted. Pick a -userdebug build.
+# Now we support two platforms: 32/64-bit arm and 32/64-bit x86.
+: "${ARTIFACTS_DIR_ARM64:="${ANDROID_TREE}/arm64_target_files/"}"
+: "${ARTIFACTS_DIR_X86_64:="${ANDROID_TREE}/x86_64_target_files/"}"
+
+ARTIFACTS_DIR_ARRAY=(
+	"${ARTIFACTS_DIR_X86_64}"
+	"${ARTIFACTS_DIR_ARM64}"
+	"${ARTIFACTS_DIR_X86_64}"
+	"${ARTIFACTS_DIR_ARM64}"
+)
+
+# 3. Destination directory.
+TO_DIR_BASE="${TO_DIR_BASE:-"${ANDROID_TREE}/arc-toolchain-sc-dir"}"
+
+# 4. Path to deapexer and debugfs binaries.
+: "${DEAPEXER:=""}"
+: "${DEBUGFS:=""}"
+
+if [[ ! -f "${DEAPEXER}" ]] || [[ ! -f "${DEBUGFS}" ]]; then
+	echo "Please set \$DEAPEXER and \$DEBUGFS before running."
+	exit 1
+fi
+
+### Do not change the following.
+
+if [[ ! -d "${ANDROID_TREE}" ]] || \
+	[[ ! -d "${ARTIFACTS_DIR_ARM64}" ]] || \
+	[[ ! -d "${ARTIFACTS_DIR_X86_64}" ]] ; then
+	echo "Please open and edit \"$0\" before running."
+	exit 1
+fi
+
+dryrun=
+if [[ "$1" == "--dryrun" ]]; then
+	dryrun=1
+fi
+
+
+### Run / dryrun a command.
+function runcmd {
+	cmdarray=("${@}")
+	if [[ -z "${dryrun}" ]]; then
+		echo "${cmdarray[@]}"
+		"${cmdarray[@]}"
+	else
+		echo "dryrun: ${cmdarray[@]}"
+	fi
+}
+
+
+# Clean any previous work.
+if [ -d "${TO_DIR_BASE}" ]; then
+	runcmd rm -rf "${TO_DIR_BASE}"
+fi
+
+# Number of supported sysroots
+len=$((${#ARC_ARCH[@]}))
+
+# Setup the sysroot for each architecture.
+for (( a = 0; a < ${len}; ++a )); do
+	arc_arch="${ARC_ARCH[${a}]}"
+	arch="${ARC_ARCH_ANDROID[${a}]}"
+
+	arch_to_dir="${TO_DIR_BASE}/${arc_arch}"
+	runcmd mkdir -p "${arch_to_dir}/usr/include"
+	runcmd mkdir -p "${arch_to_dir}/usr/include/asm"
+	runcmd mkdir -p "${arch_to_dir}/usr/include/c++/4.9"
+	runcmd mkdir -p "${arch_to_dir}/usr/include/linux/asm"
+
+	### 1. Binaries.
+	BINARY_FILES=(
+		libbacktrace.so
+		libbinder.so
+		libc.so
+		libc++.so
+		libcutils.so
+		libdl.so
+		libexpat.so
+		libhardware.so
+		liblog.so
+		libm.so
+		libmediandk.so
+		libnativewindow.so
+		libstdc++.so
+		libsync.so
+		libui.so
+		libutils.so
+		libz.so
+	)
+
+	lib="${ARC_ARCH_LIB_DIR[${a}]}"
+	artifacts_system_dir="${ARTIFACTS_DIR_ARRAY[${a}]}/SYSTEM"
+	if [[ ! -d "${artifacts_system_dir}/${lib}" ]]; then
+		echo "${artifacts_system_dir}/${lib} not found, continuing."
+		continue
+	fi
+	runcmd mkdir -p "${arch_to_dir}/usr/${lib}/"
+
+	# Special case: extract runtime apex if there is one (b/179070967).
+	apex_path="${artifacts_system_dir}/apex/com.android.runtime.apex"
+	apex_dir_path="${artifacts_system_dir}/apex/com.android.runtime"
+	if [[ -f "${apex_path}" ]] &&
+		[[ ! -d "${apex_dir_path}" ]]; then
+		"${DEAPEXER}" --debugfs_path="${DEBUGFS}" extract "${apex_path}" "${apex_dir_path}"
+	fi
+
+	for f in "${BINARY_FILES[@]}"; do
+		# For some core libraries, e.g. libc and libm, there are two versions.
+		# Filter out the "bootstrap" ones since those are supposed to be used by
+		# apexd. Likewise for arm/arm64 folders found on x86/x86_64
+                # prebuilds.
+		file=$(find "${artifacts_system_dir}/${lib}" -name "${f}" 2>/dev/null \
+			| grep -v /bootstrap/ | grep -v /arm/ | grep -v /arm64/)
+		case $(echo "${file}" | wc -l) in
+		0)
+			echo "${f} not found, aborted."
+			exit 1
+			;;
+                1) ;;
+		*)
+			echo "more than 1 ${f} found, aborted."
+			echo "${file}"
+			exit 1
+			;;
+		esac
+
+		# Resolve symlink if not exists
+		if [ -L "${file}" -a ! -f "${file}" ]; then
+			file="${artifacts_system_dir}$(readlink $file)"
+			# Special case: ART mainline module has different package name on
+			# debuggable build.
+			if [ ! -f "${file}" ]; then
+				file="${file/com.android.runtime/com.android.runtime.debug}"
+			fi
+		fi
+		runcmd cp -pv "${file}" "${arch_to_dir}/usr/${lib}/"
+	done
+
+	lib_crt="${ARC_ARCH_LIB_CRT_DIR[${a}]}"
+	for f in crtbegin_static.o crtbegin_dynamic.o crtend_android.o crtbegin_so.o crtend_so.o; do
+		absolute_f="${ANDROID_TREE}/prebuilts/ndk/current/platforms/android-24"
+		absolute_f+="/arch-${arch}/usr/${lib_crt}/${f}"
+		if [[ ! -e "${absolute_f}" ]]; then
+			echo "${absolute_f} not found, perhaps you forgot to check it out?"\
+				" Aborted."
+			exit 1
+		fi
+		runcmd cp -p "${absolute_f}" "${arch_to_dir}/usr/${lib}/"
+	done
+
+
+	### 2. Bionic headers.
+	for f in libc; do
+		runcmd \
+			cp -pPR \
+			"${ANDROID_TREE}/bionic/${f}/include"/* \
+			"${arch_to_dir}/usr/include/"
+	done
+	runcmd cp -pP \
+		"${ANDROID_TREE}/bionic/libc/upstream-netbsd/android/include/sys/sha1.h" \
+		"${arch_to_dir}/usr/include/"
+
+
+	### 3. Libcxx and Libcxxabi headers.
+	CXX_HEADERS_DIR="${arch_to_dir}/usr/include/c++/4.9"
+	runcmd cp -pLR \
+		"${ANDROID_TREE}/external/libcxx/include/"* \
+		"${CXX_HEADERS_DIR}/"
+
+	# This currently has a duplicate (__cxxabi_config.h) but the content is same.
+	runcmd cp -pLR \
+		"${ANDROID_TREE}/external/libcxxabi/include/"* \
+		"${CXX_HEADERS_DIR}/"
+
+	### 4.1 Linux headers.
+	for f in linux asm-generic drm misc mtd rdma scsi sound video xen; do
+		runcmd cp -pPR \
+			"${ANDROID_TREE}/bionic/libc/kernel/uapi/${f}" \
+			"${arch_to_dir}/usr/include/"
+	done
+	runcmd cp -pPR \
+		"${ANDROID_TREE}/bionic/libc/kernel/android/uapi/linux" \
+		"${arch_to_dir}/usr/include/"
+
+
+	### 4.2 Linux kernel assembly.
+	if [[ "${ARC_ARCH_UAPI[${a}]}" == "x86" ]]; then
+		# x86 is able to use common asm headers
+		asm_target="${arch_to_dir}/usr/include/asm/"
+	else
+		# arm and arm64 need different asm headers
+		asm_target="${arch_to_dir}/usr/include/arch-${ARC_ARCH_UAPI[${a}]}/include/asm/"
+	fi
+	runcmd mkdir -p "${asm_target}"
+	runcmd cp -pPR \
+		"${ANDROID_TREE}/bionic/libc/kernel/uapi/asm-${ARC_ARCH_UAPI[${a}]}/asm"/* \
+		"${asm_target}"
+
+
+	### 4.3a Other include directories
+	INCLUDE_DIRS=(
+		"frameworks/av/media/ndk/include/media"
+		"frameworks/native/include/android"
+		"frameworks/native/include/ui"
+		"frameworks/native/libs/arect/include/android"
+		"frameworks/native/libs/nativebase/include/nativebase"
+		"frameworks/native/libs/nativewindow/include/android"
+		"frameworks/native/libs/nativewindow/include/apex"
+		"frameworks/native/libs/nativewindow/include/system"
+		"frameworks/native/libs/nativewindow/include/vndk"
+		"frameworks/native/vulkan/include/hardware"
+		"frameworks/native/vulkan/include/vulkan"
+		"hardware/libhardware/include/hardware"
+		"system/core/base/include/android-base"
+		"system/core/include/backtrace"
+		"system/core/include/cutils"
+		"system/core/include/log"
+		"system/core/include/system"
+		"system/core/include/utils"
+		"system/core/liblog/include/android"
+		"system/core/libsync/include/android"
+		"system/core/libsync/include/ndk"
+		"system/core/libsync/include/sync"
+	)
+
+	for f in "${INCLUDE_DIRS[@]}"; do
+		basename="$(basename "${f}")"
+		todir="${arch_to_dir}/usr/include/${basename}"
+		runcmd mkdir -p "${todir}"
+		runcmd cp -pL "${ANDROID_TREE}/${f}"/*.h "${todir}/"
+	done
+
+	### 4.4 Expat includes
+
+	runcmd cp -pP \
+		"${ANDROID_TREE}/external/expat/lib"/expat*.h \
+		"${arch_to_dir}/usr/include/"
+
+	### 4.5 OpenGL includes
+
+	for f in EGL KHR; do
+		todir="${arch_to_dir}/usr/include/opengl/include/${f}/"
+		runcmd mkdir -p "${todir}"
+		runcmd cp -pP \
+			"${ANDROID_TREE}/frameworks/native/opengl/include/${f}"/*.h \
+			"${todir}"
+	done
+
+	### 4.6 zlib includes
+
+	# Do not use -P (those are symlinks)
+	runcmd cp -p \
+		"${ANDROID_TREE}/external/zlib"/*.h \
+		"${arch_to_dir}/usr/include/"
+
+done
+
+### 5. Copy compiler over.
+
+### 5.1 clang.
+runcmd mkdir -p "${TO_DIR_BASE}/arc-llvm/9.0.3"
+runcmd cp -pPr \
+	"${ANDROID_TREE}/prebuilts/clang/host/linux-x86/clang-r377782c"/* \
+	"${TO_DIR_BASE}/arc-llvm/9.0.3" || echo "Please update clang version manually"
+
+### 5.2 gcc.
+runcmd mkdir -p "${TO_DIR_BASE}/arc-gcc"
+for arch in "${ARC_ARCH_ANDROID[@]}"; do
+	arch_dir="${arch}"
+	sysroot_arch="${arch}"
+	abi="${arch}-linux-androideabi"
+	case "${arch}" in
+	x86|x86_64)
+		arch="x86"
+		arch_dir="x86_64"
+		sysroot_arch="amd64"
+		abi="x86_64-linux-android"
+		;;
+	arm64)
+		arch="aarch64"
+		arch_dir="aarch64"
+		abi="aarch64-linux-android"
+		;;
+        esac
+	gcc_dir="${TO_DIR_BASE}/arc-gcc/${arch_dir}"
+	runcmd mkdir -p "${gcc_dir}"
+	runcmd rsync -a --exclude=.git/ \
+		"${ANDROID_TREE}/prebuilts/gcc/linux-x86/${arch}/${abi}-4.9" \
+		"${gcc_dir}/"
+
+	runcmd mkdir -p "${gcc_dir}/${abi}-4.9/include/c++"
+	if [ ! -L "${gcc_dir}/${abi}-4.9/include/c++/4.9" ]; then
+		runcmd ln -s \
+			"../../../../../${sysroot_arch}/usr/include/c++/4.9/" \
+			"${gcc_dir}/${abi}-4.9/include/c++/4.9"
+	fi
+done
+
+### 6. Do the pack
+
+### 6.1. Ensure permissions are correct to avoid repeating crbug.com/811217
+runcmd find "${TO_DIR_BASE}" -type d -exec chmod 755 {} \;
+runcmd find "${TO_DIR_BASE}" -type f -executable -exec chmod 755 {} \;
+runcmd find "${TO_DIR_BASE}" -type f ! -executable -exec chmod 644 {} \;
+
+### 6.2. Create the tarball with files owned by root:root
+PACKET_VERSION=$(date --rfc-3339=date | sed 's/-/./g')
+TARBALL="${TO_DIR_BASE}/../arc-toolchain-sc-${PACKET_VERSION}.tar.gz"
+runcmd tar zcf "${TARBALL}" --owner=root --group=root -C "${TO_DIR_BASE}" .
+
+### 7. Manually upload
+echo "Done! Please upload ${TARBALL} manually to: " \
+	"https://pantheon.corp.google.com/storage/browser/chromeos-localmirror/distfiles/?debugUI=DEVELOPERS"
+echo "Or you try this command: gsutil cp -a public-read arc-toolchain-* gs://chromeos-localmirror/distfiles/"
+echo "If this is based on the same Bionic HEAD of a previous tarball bump up _p0 to the latest step number."
diff --git a/sys-devel/autofdo/Manifest b/sys-devel/autofdo/Manifest
index f978613..e76210c 100644
--- a/sys-devel/autofdo/Manifest
+++ b/sys-devel/autofdo/Manifest
@@ -1 +1 @@
-DIST autofdo-0.19.tar.gz 364598015 BLAKE2B 44647c8c172a0bb65cc8961171cb4acfe09cb6041230db8db3837337ff21bee5cebfb0124d1d6902bccc5c3820958a38774bd4428b12a4b56e384fb2572d99fa SHA512 774fec8ae240c44589519131efc24133eec96dc3387b5c6cd3c02182893e2896ae91241e93b70aa7d3baec803e9a3949a90ee215e1d58e254f0566d48e275e00
+DIST autofdo-0.21.tar.xz 60873108 BLAKE2B 722258fb87011fdb08f979532f5d18fe6ce9151cdbc23b5f16d8ac506ef348ff872d3cb24f671dbc0666cd12151c826c6b31a0bf1734ddc967cb7ed6dae548ca SHA512 a49dc32aec4ff29734bd3a6798ce0c7e9ae3dee4ef97a21c64e2ecc8a73dee1d7751cfe78e1725de3506d1a61a0318e8b31dbc8a07d6e6401c7db3d0ca1dd839
diff --git a/sys-devel/autofdo/autofdo-0.19-r2.ebuild b/sys-devel/autofdo/autofdo-0.19-r2.ebuild
deleted file mode 120000
index 3adb7ac..0000000
--- a/sys-devel/autofdo/autofdo-0.19-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-autofdo-0.19.ebuild
\ No newline at end of file
diff --git a/sys-devel/autofdo/autofdo-0.19.ebuild b/sys-devel/autofdo/autofdo-0.19.ebuild
deleted file mode 100644
index c22e0a6..0000000
--- a/sys-devel/autofdo/autofdo-0.19.ebuild
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-inherit autotools flag-o-matic
-
-DESCRIPTION="Utilies for generating, examining AFDO profiles"
-HOMEPAGE="http://gcc.gnu.org/wiki/AutoFDO"
-SRC_URI="https://github.com/google/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
-
-LICENSE="Apache-2.0"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="dev-libs/openssl:0=
-	dev-libs/protobuf:=
-	dev-libs/libffi
-	sys-devel/llvm
-	sys-libs/zlib"
-RDEPEND="${DEPEND}"
-
-src_prepare() {
-	# Link with libLLVM, since we are building LLVM dynamically and linking
-	# it statically, see http://crbug.com/936051.
-	epatch "${FILESDIR}/autofdo-0.19-link-with-libllvm.patch"
-
-	# Upstream AutoFDO needs to build protobuf with source, but the build
-	# script doesn't work on Chrome OS. Since Chrome OS has protobuf library,
-	# we can use the system library instead of building a new one.
-	epatch "${FILESDIR}/autofdo-0.19-use-system-protobuf.patch"
-
-	# Fix clang error reported in https://crbug.com/1057903
-	epatch "${FILESDIR}/autofdo-0.19-llvm-stringref-error.patch"
-
-	# The upstream tarball does not have aclocal.m4, and the upstream
-	# Makefile.in is generated from automake 1.15. We are still using
-	# automake 1.14. This mismatch makes the build fail.
-	# https://github.com/google/autofdo/issues/60
-	# We need to regenerate the Makefile.
-	eautoreconf
-}
-
-src_configure() {
-	append-ldflags $(no-as-needed)
-	econf
-}
-
-src_compile() {
-	MAKEOPTS="-j1" emake
-}
-
-src_install() {
-	dobin create_gcov create_llvm_prof dump_gcov profile_diff \
-		profile_merger profile_update sample_merger
-}
diff --git a/sys-devel/autofdo/autofdo-0.21-r1.ebuild b/sys-devel/autofdo/autofdo-0.21-r1.ebuild
new file mode 120000
index 0000000..6466e5d
--- /dev/null
+++ b/sys-devel/autofdo/autofdo-0.21-r1.ebuild
@@ -0,0 +1 @@
+autofdo-0.21.ebuild
\ No newline at end of file
diff --git a/sys-devel/autofdo/autofdo-0.21.ebuild b/sys-devel/autofdo/autofdo-0.21.ebuild
new file mode 100644
index 0000000..7af96f6
--- /dev/null
+++ b/sys-devel/autofdo/autofdo-0.21.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools flag-o-matic cmake
+
+DESCRIPTION="Utility for generating AFDO profiles"
+HOMEPAGE="http://gcc.gnu.org/wiki/AutoFDO"
+SRC_URI="https://github.com/google/${PN}/archive/${PV}.tar.xz -> ${P}.tar.xz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="dev-libs/openssl:0=
+	dev-libs/protobuf:=
+	dev-libs/libffi
+	sys-devel/llvm
+	sys-libs/zlib"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+	cmake_src_prepare
+}
+
+src_configure() {
+	append-ldflags "$(no-as-needed)"
+	local mycmakeargs=(
+		"-DBUILD_SHARED_LIBS=NO"
+		"-DBUILD_TESTING=OFF"
+		"-DINSTALL_GTEST=OFF"
+		"-DLLVM_PATH=$(llvm-config --cmakedir)"
+	)
+	cmake_src_configure
+}
+
+src_compile() {
+	cmake_src_compile create_llvm_prof
+}
+
+src_install() {
+	AFDO_BUILD_DIR="${WORKDIR}/${P}_build"
+	cmake_src_install
+	dobin "${AFDO_BUILD_DIR}"/create_llvm_prof
+}
diff --git a/sys-devel/autofdo/files/autofdo-0.19-link-with-libllvm.patch b/sys-devel/autofdo/files/autofdo-0.19-link-with-libllvm.patch
deleted file mode 100644
index 2e7a5f2..0000000
--- a/sys-devel/autofdo/files/autofdo-0.19-link-with-libllvm.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-Link autofdo with libLLVM
-
-Since we are building LLVM dynamically and linking it statically,
-autofdo was not able to recognize libLLVM.so correctly. This patch
-changed behaviour of autofdo configuration so that it can be linked
-with libLLVM.
-
-diff --git a/m4/ax_llvm.m4 b/m4/ax_llvm.m4
-index f93c873..fa0fcec 100644
---- a/m4/ax_llvm.m4
-+++ b/m4/ax_llvm.m4
-@@ -60,17 +60,10 @@ AC_DEFUN([AX_LLVM],
-     if test -f "$ac_llvm_config_path"; then
-       LLVM_CXXFLAGS=$($ac_llvm_config_path --cppflags)
-       shared_mode=$($ac_llvm_config_path --shared-mode)
--      rpath=""
--      if test "x$shared_mode" = "xstatic"; then
--        LLVM_LDFLAGS="$($ac_llvm_config_path --ldflags)"
--        LLVM_LIBS="$($ac_llvm_config_path --libs $1) \
--                      -ldl -lpthread -ltinfo"
--      elif test "x$shared_mode" = "xshared"; then
--        rpath="$($ac_llvm_config_path --libdir)"
--        LLVM_LDFLAGS="-Wl,-rpath $rpath \
--                      $($ac_llvm_config_path --ldflags)"
--        LLVM_LIBS="$($ac_llvm_config_path --libs $1)"
--      fi
-+      rpath="$($ac_llvm_config_path --libdir)"
-+      LLVM_LDFLAGS="-Wl,-rpath $rpath \
-+                   $($ac_llvm_config_path --ldflags)"
-+      LLVM_LIBS="-lLLVM"
- 
-       AC_REQUIRE([AC_PROG_CXX])
-       CXXFLAGS_SAVED="$CXXFLAGS"
diff --git a/sys-devel/autofdo/files/autofdo-0.19-llvm-stringref-error.patch b/sys-devel/autofdo/files/autofdo-0.19-llvm-stringref-error.patch
deleted file mode 100644
index 4c54d5c..0000000
--- a/sys-devel/autofdo/files/autofdo-0.19-llvm-stringref-error.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/llvm_profile_writer.cc b/llvm_profile_writer.cc
-index 1431e9f..00cba1f 100644
---- a/llvm_profile_writer.cc
-+++ b/llvm_profile_writer.cc
-@@ -97,7 +97,7 @@ void LLVMProfileBuilder::VisitCallsite(const Callsite &callsite) {
-   auto CalleeName = GetNameRef(Symbol::Name(callsite.second));
-   auto &callee_profile =
-       caller_profile.functionSamplesAt(llvm::sampleprof::LineLocation(
--          line, discriminator))[CalleeName];
-+          line, discriminator))[std::string(CalleeName)];
-   callee_profile.setName(CalleeName);
-   inline_stack_.push_back(&callee_profile);
- }
diff --git a/sys-devel/autofdo/files/autofdo-0.19-use-system-protobuf.patch b/sys-devel/autofdo/files/autofdo-0.19-use-system-protobuf.patch
deleted file mode 100644
index fa0ff64..0000000
--- a/sys-devel/autofdo/files/autofdo-0.19-use-system-protobuf.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-The upstream AutoFDO assumes to build on a system that doesn't have protobuf,
-and build it with local source. However, the script to build protobuf is not
-compatible with Chrome OS. Since Chrome OS has a system protobuf library,
-there's no need to build protobuf again. This patch skips building protobuf,
-and pointing the tool to link against the system library.
-
-(Will try to upstream this fix, but upstream requires more than this patch,
-we need to support both systems with and without protobuf installed.)
-
-diff --git a/Makefile.am b/Makefile.am
-index a6b8e0f..e24f89f 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,17 +1,7 @@
- ## Process this file with automake to produce Makefile.in
- 
--PROTOBUF = third_party/protobuf
--PROTOBUF_DEP = $(PROTOBUF)/src/.libs/libprotobuf.a
--PROTOC = ./$(PROTOBUF)/src/protoc
- 
--$(PROTOBUF)/configure:
--	echo "[AUTOGEN] Preparing protobuf"
--	(cd $(PROTOBUF) ; autoreconf -f -i -Wall,no-obsolete)
--
--$(PROTOC) $(PROTOBUF)/src/.libs/libprotobuf.a: $(PROTOBUF)/configure
--	echo "[MAKE] Building protobuf"
--	(cd third_party/protobuf/; CC="$(CC)" CXX="$(CXX)" LDFLAGS="$(LDFLAGS_$(CONFIG)) -g $(PROTOBUF_LDFLAGS_EXTRA)" CPPFLAGS="$(PIC_CPPFLAGS) $(CPPFLAGS_$(CONFIG)) -g $(PROTOBUF_CPPFLAGS_EXTRA)" ./configure --disable-shared --enable-static $(PROTOBUF_CONFIG_OPTS))
--	make -C $(PROTOBUF)
-+PROTOC = /usr/bin/protoc
- 
- protoc_inputs = \
- 	third_party/perf_data_converter/src/quipper/perf_data.proto \
-@@ -23,13 +13,13 @@ protoc_outputs = \
- 	third_party/perf_data_converter/src/quipper/perf_stat.pb.cc \
- 	third_party/perf_data_converter/src/quipper/perf_stat.pb.h
- 
--$(protoc_outputs): $(protoc_inputs) $(PROTOC)
-+$(protoc_outputs): $(protoc_inputs)
- 	$(PROTOC) --cpp_out=`dirname $<` -I`dirname $<` $(protoc_inputs)
- 
- ACLOCAL_AMFLAGS = -I m4
--AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/glog/src -I$(top_srcdir)/third_party/perf_data_converter/src/quipper -I./$(PROTOBUF)/src
--AM_CXXFLAGS = -std=gnu++11 -I./$(PROTOBUF)/src
--LIBS += -lpthread
-+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/glog/src -I$(top_srcdir)/third_party/perf_data_converter/src/quipper
-+AM_CXXFLAGS = -std=gnu++11
-+LIBS += -lpthread -lprotobuf
- LIBELF = -lelf
- 
- COMMON_PROFILE_CREATOR_FILES = addr2line.cc gcov.cc instruction_map.cc \
-@@ -40,7 +30,7 @@ COMMON_PROFILE_CREATOR_FILES = addr2line.cc gcov.cc instruction_map.cc \
- 
- bin_PROGRAMS = create_gcov
- create_gcov_SOURCES = $(COMMON_PROFILE_CREATOR_FILES) create_gcov.cc
--create_gcov_LDADD = libquipper.a libglog.a libsymbolize.a libgflags.a $(LIBELF) $(PROTOBUF_DEP)
-+create_gcov_LDADD = libquipper.a libglog.a libsymbolize.a libgflags.a $(LIBELF)
- nodist_create_gcov_SOURCES = $(protoc_outputs)
- $(am_create_gcov_OBJECTS): $(protoc_outputs)
- 
-@@ -51,28 +41,28 @@ dump_gcov_LDADD = libglog.a libgflags.a libsymbolize.a
- 
- bin_PROGRAMS += sample_merger
- sample_merger_SOURCES = $(COMMON_PROFILE_CREATOR_FILES) sample_merger.cc
--sample_merger_LDADD = libquipper.a libglog.a libsymbolize.a libgflags.a $(LIBELF) $(PROTOBUF_DEP)
-+sample_merger_LDADD = libquipper.a libglog.a libsymbolize.a libgflags.a $(LIBELF)
- nodist_sample_merger_SOURCES = $(protoc_outputs)
- $(am_sample_merger_OBJECTS): $(protoc_outputs)
- 
- bin_PROGRAMS += profile_merger
- profile_merger_SOURCES = $(COMMON_PROFILE_CREATOR_FILES) profile_reader.cc \
-                          profile_merger.cc
--profile_merger_LDADD = libquipper.a libglog.a libsymbolize.a libgflags.a $(LIBELF) $(PROTOBUF_DEP)
-+profile_merger_LDADD = libquipper.a libglog.a libsymbolize.a libgflags.a $(LIBELF)
- nodist_profile_merger_SOURCES = $(protoc_outputs)
- $(am_profile_merger_OBJECTS): $(protoc_outputs)
- 
- bin_PROGRAMS += profile_diff
- profile_diff_SOURCES = $(COMMON_PROFILE_CREATOR_FILES) profile_reader.cc \
-                        profile_diff.cc
--profile_diff_LDADD = libquipper.a libglog.a libsymbolize.a libgflags.a $(LIBELF) $(PROTOBUF_DEP)
-+profile_diff_LDADD = libquipper.a libglog.a libsymbolize.a libgflags.a $(LIBELF)
- nodist_profile_diff_SOURCES = $(protoc_outputs)
- $(am_profile_diff_OBJECTS): $(protoc_outputs)
- 
- bin_PROGRAMS += profile_update
- profile_update_SOURCES = $(COMMON_PROFILE_CREATOR_FILES) profile_reader.cc \
-                          profile_update.cc
--profile_update_LDADD = libquipper.a libglog.a libsymbolize.a libgflags.a $(LIBELF) $(PROTOBUF_DEP)
-+profile_update_LDADD = libquipper.a libglog.a libsymbolize.a libgflags.a $(LIBELF)
- nodist_profile_update_SOURCES = $(protoc_outputs)
- $(am_profile_update_OBJECTS): $(protoc_outputs)
- 
-@@ -80,7 +70,7 @@ bin_PROGRAMS += create_llvm_prof
- create_llvm_prof_SOURCES = $(COMMON_PROFILE_CREATOR_FILES) \
-                            llvm_profile_writer.cc create_llvm_prof.cc
- create_llvm_prof_LDADD = $(LLVM_LDFLAGS) $(LLVM_LIBS) libquipper.a libglog.a \
--                         libsymbolize.a libgflags.a $(LIBELF) $(PROTOBUF_DEP)
-+                         libsymbolize.a libgflags.a $(LIBELF)
- create_llvm_prof_CXXFLAGS = $(LLVM_CXXFLAGS) -DCREATE_LLVM_PROF
- nodist_create_llvm_prof_SOURCES = $(protoc_outputs)
- $(am_create_llvm_prof_OBJECTS): $(protoc_outputs)
diff --git a/sys-devel/binutils/Manifest b/sys-devel/binutils/Manifest
index aff60bd..065b3ab 100644
--- a/sys-devel/binutils/Manifest
+++ b/sys-devel/binutils/Manifest
@@ -1,4 +1,2 @@
-DIST binutils-2.23.1-patches-1.0.tar.xz 13396 SHA256 6d2ac4f83588e57968ce0e8e4450effb5aa79d46b9025ed2779cf91c8f99ec01 SHA512 f8a708798d32f81aceb3291411f7ef461a4f5b91ff204519799f3051789b1cbcac79bc282819227cf8dee875f47b727c51aba6f3a2ac73f53b132430c0fe9bdd WHIRLPOOL fbbcf9040047d5411ef002dd4e8079b6555b4ef2c079534f19ea8d105b2d62a8fce98eaf9b217d733414d0ddde1ab64b55d0c16bd142375a28187febde0c76eb
-DIST binutils-2.23.1.tar.bz2 21455321 SHA256 2ab2e5b03e086d12c6295f831adad46b3e1410a3a234933a2e8fac66cb2e7a19 SHA512 effecc9e6ef943055815a83dea546f2fe5b5d4483dadeda5753aae239bd7095d4696239240613a051d18011ed2521ae75c48292f970ba82b02e97bc72b0fa51f WHIRLPOOL 48f99ba30f0f7085cd7d889b727ba615be3aceb9da6a836d676eecee65c16e36257110d84bfe82a739064741b6b5279f97e43c93a08ca90896a10474b4ea65e8
-DIST binutils-2.24-patches-1.2.tar.xz 12712 SHA256 aca2b8770582637c7d220eb6a42b4d6ef00a7815fb3f9b6281abc21f417471e9 SHA512 421a362962cff5c1ce545cdf7390bffeb91400386301ea52709dfb016c1c52cb9c364a52688ac13b211f4b34d30db3c92c972f7118b137854e710154c84620fa WHIRLPOOL 90193d36e965bc1f682b4d436ee630420c2b78ca6e3675c480233986f58525ff76dc60bb18ecf3877c57a7cabc5cbc6985583e2ad3ae1faf74f9ced3a75d1a9f
-DIST binutils-2.24.tar.bz2 22716802 SHA256 e5e8c5be9664e7f7f96e0d09919110ab5ad597794f5b1809871177a0f0f14137 SHA512 5ec95ad47d49b12c4558a8db0ca2109d3ee1955e3776057f3330c4506f8f4d1cf5e505fbf8a16b98403a0fcdeaaf986fe0a22be6456247dbdace63ce1f776b12 WHIRLPOOL 619634dfdc73b8f6e9933b4642f5f9faf147c388a6d39283cd7639d83f3d7a601981cf49a787c43c17a942c563f24dc8dcc682138b5d3102a5650e1b9d15bd50
+DIST binutils-2.35.2.tar.xz 22056908 BLAKE2B 9c392e0db2b482442f9476f30bd80cf2796321cbf7be79cf21af7bef167b6074c4ae009dcf9b438d2f2f4a23381c935176b2cfa85de1a526ab46e0fd844a7ca5 SHA512 9974ede5978d32e0d68fef23da48fa00bd06b0bff7ec45b00ca075c126d6bbe0cf2defc03ecc3f17bc6cc85b64271a13009c4049d7ba17de26e84e3a6e2c0348
+DIST binutils-2.35.2-patches-1.tar.xz 11836 BLAKE2B 0141349c9618992d1ab1e0309f7ed8fbc43b60a58be1dfed05eae8a8fee857241d9e112ae673da6fc9778767675f536ece818cb85567367bb1c8f87a0693623f SHA512 35de5f227c745c5fb800784fe657b2a6216faf43e2498e8481e7b0dc79b0d2f86b3b6a10b896e060319a77a51c61d2e1b7a951ae962b3a6ef8c1a2a261d9bb6c
diff --git a/sys-devel/binutils/binutils-2.27.0-r26.ebuild b/sys-devel/binutils/binutils-2.27.0-r26.ebuild
deleted file mode 100644
index c6a5007..0000000
--- a/sys-devel/binutils/binutils-2.27.0-r26.ebuild
+++ /dev/null
@@ -1,468 +0,0 @@
-# Copyright (c) 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-# FIXME: We have fixed a bug where gold generates inefficient
-# code for 32-bit armv8 CPUs, on upstream AOSP.
-# See http://b/134709902
-#
-# We intentionally don't pick up this change because it
-# requires syncing many more commits, and we are in the process
-# of deprecating gold in Chrome OS.
-
-CROS_WORKON_COMMIT="cce69c1b1bfc46de5e1cdd4923f87215c0edb884"
-CROS_WORKON_TREE="ef450283e06228c68b26fbb47ba99b06cc0c3eea"
-CROS_WORKON_REPO="https://android.googlesource.com"
-CROS_WORKON_PROJECT="toolchain/binutils"
-CROS_WORKON_LOCALNAME="../aosp/toolchain/binutils"
-
-NEXT_BINUTILS=cros/binutils-2_25-google
-
-# By default, PREV_BINUTILS points to the parent of current tip of cros/master.
-# If that is a bad commit, override this to point to the last known good commit.
-PREV_BINUTILS="cros/master^"
-
-inherit eutils libtool flag-o-matic gnuconfig multilib cros-constants cros-workon
-
-KEYWORDS="*"
-
-BVER=${PV}
-
-export CTARGET=${CTARGET:-${CHOST}}
-if [[ ${CTARGET} == ${CHOST} ]] ; then
-	if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then
-		export CTARGET=${CATEGORY/cross-}
-	fi
-fi
-
-is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; }
-
-DESCRIPTION="Tools necessary to build programs"
-HOMEPAGE="http://sources.redhat.com/binutils/"
-LICENSE="|| ( GPL-3 LGPL-3 )"
-IUSE="cros_host hardened mounted_binutils multitarget nls test vanilla
-	next_binutils prev_binutils"
-REQUIRED_USE="next_binutils? ( !prev_binutils )"
-
-if is_cross ; then
-	SLOT="${CTARGET}"
-else
-	SLOT="0"
-fi
-
-RDEPEND=">=sys-devel/binutils-config-1.9"
-DEPEND="${RDEPEND}
-	test? ( dev-util/dejagnu )
-	nls? ( sys-devel/gettext )
-	sys-devel/flex"
-
-RESTRICT="fetch test"
-
-GITDIR=${WORKDIR}/gitdir
-
-MY_BUILDDIR=${WORKDIR}/build
-
-PATCHES=(
-	"${FILESDIR}/${P}-sht_relr.patch"
-	"${FILESDIR}/${P}-smallpie.patch"
-	"${FILESDIR}/${P}-apply_dynamic_relocs.patch"
-	"${FILESDIR}/${P}-gold-dwp-dwarfv5-1.patch"
-	"${FILESDIR}/${P}-gold-dwp-dwarfv5-2.patch"
-	"${FILESDIR}/${P}-gold-dwp-dwarfv5-3.patch"
-	"${FILESDIR}/${P}-gold-dwp-dwarfv5-4.patch"
-)
-
-# It is not convenient that cros_workon.eclass does not accept a branch name in
-# CROS_WORKON_COMMIT/TREE, because sometimes the git repository is cloned via
-# '--shared', which hides all remote refs. So we manually calculate the hashes
-# here.
-githash_for_branch() {
-	local pathbase
-	local branch=$1
-	pathbase="${CHROOT_SOURCE_ROOT}/src/third_party/binutils"
-	# Workaround uprev deleting these settings. http://crbug.com/375546
-	eval CROS_WORKON_COMMIT"='$(git --no-pager --git-dir="${pathbase}/.git" log -1 --pretty="format:%H" "${branch}")'"
-	eval CROS_WORKON_TREE"='$(git --no-pager --git-dir="${pathbase}/.git" log -1 --pretty="format:%T" "${branch}")'"
-}
-
-src_unpack() {
-	if use mounted_binutils ; then
-		local dir="/usr/local/toolchain_root/binutils"
-		if [[ ! -d ${dir} ]] ; then
-			die "binutils dirs not mounted at: ${dir}"
-		fi
-		export VCSID=$(get_rev "${dir}")
-		ln -s "${dir}" "${S}"
-	else
-		if use next_binutils ; then
-			githash_for_branch ${NEXT_BINUTILS}
-			einfo "Using next binutils: \"${NEXT_BINUTILS}\""
-			einfo "  GITHASH= \"${CROS_WORKON_COMMIT}\""
-			einfo "  TREEHASH= \"${CROS_WORKON_TREE}\""
-		fi
-		if use prev_binutils ; then
-			githash_for_branch ${PREV_BINUTILS}
-			einfo "Using prev binutils: \"${PREV_BINUTILS}\""
-			einfo "  GITHASH= \"${CROS_WORKON_COMMIT}\""
-			einfo "  TREEHASH= \"${CROS_WORKON_TREE}\""
-		fi
-		cros-workon_src_unpack
-		# cros_workon_src_unpack set vcsid (the version hash) to
-		# cros/master, this is not correct when we override
-		# GITHASH. Correct VCSID here.
-		if use next_binutils || use prev_binutils ; then
-			export VCSID=${CROS_WORKON_COMMIT}
-		fi
-		# The repo at https://android.git.corp.google.com/toolchain/binutils
-		# has sources inside a subdirectory named binutils-${PV}. The repo at
-		# https://chromium.googlesource.com/chromiumos/third_party/binutils
-		# has sources at top level. This ebuild needs to handle both cases.
-		local subdir
-		if [[ ${PV} == 9999 ]]; then
-			subdir="binutils-2.25"
-		else
-			subdir="${PN}-$(ver_cut 1-2)"
-		fi
-		if [[ -d "${S}/${subdir}" ]] ; then
-			S="${S}/${subdir}"
-		fi
-	fi
-
-	mkdir -p "${MY_BUILDDIR}"
-}
-
-toolchain-binutils_bugurl() {
-	printf "http://code.google.com/p/chromium-os/issues/entry"
-}
-toolchain-binutils_pkgversion() {
-	printf "binutils-${VCSID}_cos_gg"
-}
-
-toolchain_mips_use_sysv_gnuhash() {
-	if [[ ${CTARGET} == mips* ]] ; then
-		# For mips targets, GNU hash cannot work due to ABI constraints.
-		sed -i \
-			-e 's:--hash-style=gnu:--hash-style=sysv:' \
-			"${D}/${BINPATH}/$1" || die
-	fi
-}
-
-src_configure() {
-	export LIBPATH=/usr/$(get_libdir)/binutils/${CTARGET}/${BVER}
-	export INCPATH=${LIBPATH}/include
-	export DATAPATH=/usr/share/binutils-data/${CTARGET}/${BVER}
-
-	if is_cross ; then
-		export BINPATH=/usr/${CHOST}/${CTARGET}/binutils-bin/${BVER}
-	else
-		export BINPATH=/usr/${CTARGET}/binutils-bin/${BVER}
-	fi
-
-	cros_optimize_package_for_speed
-
-	# Use gcc to build binutils.
-	cros_use_gcc
-
-	# make sure we filter $LINGUAS so that only ones that
-	# actually work make it through #42033
-	strip-linguas -u */po
-
-	# keep things sane
-	strip-flags
-
-	local x
-	echo
-	for x in CATEGORY CBUILD CHOST CTARGET CFLAGS LDFLAGS ; do
-		einfo "$(printf '%10s' ${x}:) ${!x}"
-	done
-	echo
-
-	cd "${MY_BUILDDIR}"
-	local myconf=( --enable-plugins )
-
-	# enable gold if available (installed as ld.gold)
-	if [[ ${CTARGET} == mips* ]] ; then
-		myconf+=( --disable-gold )
-	else
-		myconf+=( --enable-gold )
-	fi
-
-	use nls \
-		&& myconf+=( --without-included-gettext ) \
-		|| myconf+=( --disable-nls )
-
-	myconf+=( --enable-64-bit-bfd )
-
-	[[ -n ${CBUILD} ]] && myconf+=( --build=${CBUILD} )
-	is_cross && myconf+=(
-		--with-sysroot="${EPREFIX}"/usr/${CTARGET}
-		--enable-poison-system-directories
-	)
-
-	# glibc-2.3.6 lacks support for this ... so rather than force glibc-2.5+
-	# on everyone in alpha (for now), we'll just enable it when possible
-	has_version ">=${CATEGORY}/glibc-2.5" && myconf+=( --enable-secureplt )
-	has_version ">=sys-libs/glibc-2.5" && myconf+=( --enable-secureplt )
-
-	myconf+=(
-		--prefix="${EPREFIX}"/usr
-		--host=${CHOST}
-		--target=${CTARGET}
-		--datadir="${EPREFIX}"${DATAPATH}
-		--infodir="${EPREFIX}"${DATAPATH}/info
-		--mandir="${EPREFIX}"${DATAPATH}/man
-		--bindir="${EPREFIX}"${BINPATH}
-		--libdir="${EPREFIX}"${LIBPATH}
-		--libexecdir="${EPREFIX}"${LIBPATH}
-		--includedir="${EPREFIX}"${INCPATH}
-		--enable-compressed-debug-sections=none
-		--enable-threads
-		--enable-shared
-		--enable-deterministic-archives
-		# Newer versions (>=2.24) make this an explicit option. #497268
-		--enable-install-libiberty
-		--disable-werror
-		--with-bugurl="$(toolchain-binutils_bugurl)"
-		--with-pkgversion="$(toolchain-binutils_pkgversion)"
-		${EXTRA_ECONF}
-		# Disable modules that are in a combined binutils/gdb tree. #490566
-		--disable-{gdb,libdecnumber,readline,sim}
-		# Strip out broken static link flags.
-		# https://gcc.gnu.org/PR56750
-		--without-stage1-ldflags
-	)
-
-	echo ./configure "${myconf[@]}"
-	"${S}"/configure "${myconf[@]}" || die
-}
-
-src_compile() {
-	cd "${MY_BUILDDIR}"
-	emake all
-
-	# only build info pages if we user wants them, and if
-	# we have makeinfo (may not exist when we bootstrap)
-	if type -p makeinfo > /dev/null ; then
-		emake info
-	fi
-	# we nuke the manpages when we're left with junk
-	# (like when we bootstrap, no perl -> no manpages)
-	find . -name '*.1' -a -size 0 -delete
-}
-
-src_test() {
-	cd "${MY_BUILDDIR}"
-	emake -k check
-}
-
-src_install() {
-	local x d
-
-	cd "${MY_BUILDDIR}"
-	emake DESTDIR="${D}" tooldir="${LIBPATH}" install
-	rm -rf "${D}"/${LIBPATH}/bin
-
-	# Newer versions of binutils get fancy with ${LIBPATH} #171905
-	cd "${D}"/${LIBPATH}
-	for d in ../* ; do
-		[[ ${d} == ../${BVER} ]] && continue
-		mv ${d}/* . || die
-		rmdir ${d} || die
-	done
-
-	# Now we collect everything intp the proper SLOT-ed dirs
-	# When something is built to cross-compile, it installs into
-	# /usr/$CHOST/ by default ... we have to 'fix' that :)
-	if is_cross ; then
-		cd "${D}"/${BINPATH}
-		for x in * ; do
-			mv ${x} ${x/${CTARGET}-}
-		done
-
-		if [[ -d ${D}/usr/${CHOST}/${CTARGET} ]] ; then
-			mv "${D}"/usr/${CHOST}/${CTARGET}/include "${D}"/${INCPATH}
-			mv "${D}"/usr/${CHOST}/${CTARGET}/lib/* "${D}"/${LIBPATH}/
-			rm -r "${D}"/usr/${CHOST}/{include,lib}
-		fi
-	fi
-	insinto ${INCPATH}
-	doins "${S}/include/libiberty.h"
-	if [[ -d ${D}/${LIBPATH}/lib ]] ; then
-		mv "${D}"/${LIBPATH}/lib/* "${D}"/${LIBPATH}/
-		rm -r "${D}"/${LIBPATH}/lib
-	fi
-
-	# Now, some binutils are tricky and actually provide
-	# for multiple TARGETS.  Really, we're talking just
-	# 32bit/64bit support (like mips/ppc/sparc).  Here
-	# we want to tell binutils-config that it's cool if
-	# it generates multiple sets of binutil symlinks.
-	# e.g. sparc gets {sparc,sparc64}-unknown-linux-gnu
-	local targ=${CTARGET/-*} src="" dst=""
-	local FAKE_TARGETS=${CTARGET}
-	case ${targ} in
-		mips*)    src="mips"    dst="mips64";;
-		powerpc*) src="powerpc" dst="powerpc64";;
-		s390*)    src="s390"    dst="s390x";;
-		sparc*)   src="sparc"   dst="sparc64";;
-	esac
-	case ${targ} in
-		mips64*|powerpc64*|s390x*|sparc64*) targ=${src} src=${dst} dst=${targ};;
-	esac
-	[[ -n ${src}${dst} ]] && FAKE_TARGETS="${FAKE_TARGETS} ${CTARGET/${src}/${dst}}"
-
-	# Generate an env.d entry for this binutils
-	insinto /etc/env.d/binutils
-	cat <<-EOF > "${T}"/env.d
-	TARGET="${CTARGET}"
-	VER="${BVER}"
-	LIBPATH="${LIBPATH}"
-	FAKE_TARGETS="${FAKE_TARGETS}"
-	EOF
-	newins "${T}"/env.d ${CTARGET}-${BVER}
-
-	# Handle documentation
-	if ! is_cross ; then
-		cd "${S}"
-		dodoc README
-		docinto bfd
-		dodoc bfd/ChangeLog* bfd/README bfd/PORTING bfd/TODO
-		docinto binutils
-		dodoc binutils/ChangeLog binutils/NEWS binutils/README
-		docinto gas
-		dodoc gas/ChangeLog* gas/CONTRIBUTORS gas/NEWS gas/README*
-		docinto gprof
-		dodoc gprof/ChangeLog* gprof/TEST gprof/TODO gprof/bbconv.pl
-		docinto ld
-		dodoc ld/ChangeLog* ld/README ld/NEWS ld/TODO
-		docinto libiberty
-		dodoc libiberty/ChangeLog* libiberty/README
-		docinto opcodes
-		dodoc opcodes/ChangeLog*
-	fi
-	# Remove shared info pages
-	rm -f "${D}"/${DATAPATH}/info/{dir,configure.info,standards.info}
-	# Trim all empty dirs
-	find "${D}" -type d | xargs rmdir >& /dev/null
-
-	if use hardened ; then
-		LDWRAPPER=ldwrapper.hardened
-		LDWRAPPER_LLD=ldwrapper_lld.hardened
-	else
-		LDWRAPPER=ldwrapper
-		LDWRAPPER_LLD=ldwrapper_lld
-	fi
-
-	mv "${D}/${BINPATH}/ld.bfd" "${D}/${BINPATH}/ld.bfd.real" || die
-	exeinto "${BINPATH}"
-	newexe "${FILESDIR}/${LDWRAPPER}" "ld.bfd" || die
-	toolchain_mips_use_sysv_gnuhash "ld.bfd"
-
-	# Set default to be ld.bfd in regular installation
-	dosym ld.bfd "${BINPATH}/ld"
-
-	# Install lld wrapper only for cross toolchains.
-	is_cross && newbin "${FILESDIR}/${LDWRAPPER_LLD}" "${CTARGET}-ld.lld"
-
-	# Require gold for targets we know support gold, but auto-detect others.
-	local gold=false
-	case ${CTARGET} in
-	aarch64-*|arm*|i?86-*|powerpc*|sparc*|x86_64-*)
-		gold=true
-		;;
-	*)
-		[[ -e ${D}/${BINPATH}/ld.gold ]] && gold=true
-		;;
-	esac
-
-	if ${gold} ; then
-		mv "${D}/${BINPATH}/ld.gold" "${D}/${BINPATH}/ld.gold.real" || die
-		exeinto "${BINPATH}"
-		newexe "${FILESDIR}/${LDWRAPPER}" "ld.gold" || die
-		toolchain_mips_use_sysv_gnuhash "ld.gold"
-
-		# Make a fake installation for gold with gold as the default linker
-		# so we can turn gold on/off with binutils-config
-		LASTDIR=${LIBPATH##/*/}
-		dosym "${LASTDIR}" "${LIBPATH}-gold"
-		LASTDIR=${DATAPATH##/*/}
-		dosym "${LASTDIR}" "${DATAPATH}-gold"
-
-		mkdir "${D}/${BINPATH}-gold"
-		cd "${D}"/${BINPATH}
-		LASTDIR=${BINPATH##/*/}
-		for x in * ; do
-			dosym "../${LASTDIR}/${x}" "${BINPATH}-gold/${x}"
-		done
-		dosym ld.gold "${BINPATH}-gold/ld"
-
-		# Install gold binutils-config configuration file
-		insinto /etc/env.d/binutils
-		cat <<-EOF > "${T}"/env.d
-		TARGET="${CTARGET}"
-		VER="${BVER}-gold"
-		LIBPATH="${LIBPATH}-gold"
-		FAKE_TARGETS="${FAKE_TARGETS}"
-		EOF
-		newins "${T}"/env.d ${CTARGET}-${BVER}-gold
-	fi
-
-	# Move the locale directory to where it is supposed to be
-	mv "${D}/usr/share/locale" "${D}/${DATAPATH}/"
-}
-
-pkg_postinst() {
-	# Do not run binutils-config for non-SDK builds.
-	use cros_host || return
-
-	# Manual binutils installation (usually via "cros_workon --host
-	# xxx/binutls && sudo emerge xxx/binutils"), unlike setup_board and
-	# build_packages which invoke cros_setup_toolchains to properly config
-	# bfd/gold selection, does not config gold/bfd. When a developer
-	# cherry-picks a binutils CL, rebuilds it via 'emerge', he/she sometimes
-	# ends up using gold (or bfd) while he/she actually assumes bfd (or
-	# gold). This behavior is extremely confusing. Fix this by always
-	# PROPERLY configuring gold/bfd selection in postinst.
-	local config_gold=false
-	if is_cross; then
-		case ${CTARGET} in
-			aarch64-*|armv7a-*|i?86-*|x86_64-*) config_gold=true;;
-			*) ;;
-		esac
-	fi
-	if ${config_gold} ; then
-		binutils-config ${CTARGET}-${BVER}-gold
-	else
-		binutils-config ${CTARGET}-${BVER}
-	fi
-}
-
-pkg_postrm() {
-	# Do not run binutils-config for non-SDK builds.
-	use cros_host || return
-
-	local current_profile=$(binutils-config -c ${CTARGET})
-
-	# If no other versions exist, then uninstall for this
-	# target ... otherwise, switch to the newest version
-	# Note: only do this if this version is unmerged.  We
-	#       rerun binutils-config if this is a remerge, as
-	#       we want the mtimes on the symlinks updated (if
-	#       it is the same as the current selected profile)
-	if [[ ! -e ${BINPATH}/ld ]] && [[ ${current_profile} == ${CTARGET}-${BVER} ]] ; then
-		local choice=$(binutils-config -l | grep ${CTARGET} | awk '{print $2}')
-		choice=${choice//$'\n'/ }
-		choice=${choice/* }
-		if [[ -z ${choice} ]] ; then
-			env -i binutils-config -u ${CTARGET}
-		else
-			binutils-config ${choice}
-		fi
-	elif [[ $(CHOST=${CTARGET} binutils-config -c) == ${CTARGET}-${BVER} ]] ; then
-		binutils-config ${CTARGET}-${BVER}
-	fi
-}
-
-# If you need to force a cros_workon uprev, change this number (you can use next
-# uprev): 21
diff --git a/sys-devel/binutils/binutils-2.35.2-r3.ebuild b/sys-devel/binutils/binutils-2.35.2-r3.ebuild
new file mode 120000
index 0000000..a0193ea
--- /dev/null
+++ b/sys-devel/binutils/binutils-2.35.2-r3.ebuild
@@ -0,0 +1 @@
+binutils-2.35.2.ebuild
\ No newline at end of file
diff --git a/sys-devel/binutils/binutils-2.35.2.ebuild b/sys-devel/binutils/binutils-2.35.2.ebuild
new file mode 100644
index 0000000..8a942f0
--- /dev/null
+++ b/sys-devel/binutils/binutils-2.35.2.ebuild
@@ -0,0 +1,328 @@
+# Copyright (c) 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+inherit eutils libtool flag-o-matic gnuconfig multilib cros-constants
+
+DESCRIPTION="Tools necessary to build programs"
+HOMEPAGE="http://sources.redhat.com/binutils/"
+LICENSE="|| ( GPL-3 LGPL-3 )"
+IUSE="cet cros_host hardened multitarget nls test vanilla"
+
+# Variables that can be set here  (ignored for live ebuilds)
+# PATCH_VER          - the patchset version
+#                      Default: empty, no patching
+# PATCH_BINUTILS_VER - the binutils version in the patchset name
+#                    - Default: PV
+# PATCH_DEV          - Use download URI https://dev.gentoo.org/~{PATCH_DEV}/distfiles/...
+#                      for the patchsets
+PATCH_VER=1
+PATCH_DEV=dilfridge
+PATCH_BINUTILS_VER=${PATCH_BINUTILS_VER:-${PV}}
+PATCH_DEV=${PATCH_DEV:-slyfox}
+
+KEYWORDS="*"
+
+export CTARGET=${CTARGET:-${CHOST}}
+if [[ ${CTARGET} == ${CHOST} ]] ; then
+	if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then
+		export CTARGET=${CATEGORY/cross-}
+	fi
+fi
+
+is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; }
+
+if is_cross ; then
+	SLOT="${CTARGET}"
+else
+	SLOT="0"
+fi
+
+SRC_URI="mirror://gnu/binutils/binutils-${PV}.tar.xz
+	https://dev.gentoo.org/~${PATCH_DEV}/distfiles/binutils-${PATCH_BINUTILS_VER}-patches-${PATCH_VER}.tar.xz"
+
+RDEPEND=">=sys-devel/binutils-config-3"
+DEPEND="${RDEPEND}
+	test? ( dev-util/dejagnu )
+	nls? ( sys-devel/gettext )
+	sys-devel/flex"
+
+RESTRICT="!test? ( test )"
+
+MY_BUILDDIR=${WORKDIR}/build
+
+toolchain-binutils_bugurl() {
+	printf "https://crbug.com"
+}
+
+toolchain_mips_use_sysv_gnuhash() {
+	if [[ ${CTARGET} == mips* ]] ; then
+		# For mips targets, GNU hash cannot work due to ABI constraints.
+		sed -i \
+			-e 's:--hash-style=gnu:--hash-style=sysv:' \
+			"${D}/${BINPATH}/$1" || die
+	fi
+}
+
+src_prepare() {
+	local patchsetname
+	patchsetname="${PATCH_BINUTILS_VER}-${PATCH_VER}"
+	if [[ ! -z ${PATCH_VER} ]] ; then
+		if ! use vanilla; then
+			einfo "Applying binutils patchset ${patchsetname}"
+			eapply "${WORKDIR}/patch"
+			einfo "Done."
+		fi
+	fi
+
+	einfo "Applying local CrOS patches"
+	eapply "${FILESDIR}"
+	einfo "Done."
+
+	# Apply things from PATCHES and user dirs
+	default
+}
+
+src_configure() {
+	export LIBPATH=/usr/$(get_libdir)/binutils/${CTARGET}/${PV}
+	export INCPATH=${LIBPATH}/include
+	export DATAPATH=/usr/share/binutils-data/${CTARGET}/${PV}
+
+	if is_cross ; then
+		export BINPATH=/usr/${CHOST}/${CTARGET}/binutils-bin/${PV}
+	else
+		export BINPATH=/usr/${CTARGET}/binutils-bin/${PV}
+	fi
+
+	cros_optimize_package_for_speed
+
+	# Use gcc to build binutils.
+	cros_use_gcc
+
+	# make sure we filter $LINGUAS so that only ones that
+	# actually work make it through #42033
+	strip-linguas -u */po
+
+	# keep things sane
+	strip-flags
+
+	local x
+	echo
+	for x in CATEGORY CBUILD CHOST CTARGET CFLAGS LDFLAGS ; do
+		einfo "$(printf '%10s' ${x}:) ${!x}"
+	done
+	echo
+
+	cd "${MY_BUILDDIR}"
+	local myconf=( --enable-plugins )
+
+	# enable only the DWP tool which is part of gold, but don't
+	# install the gold linker because it is deprecated
+	myconf+=( --enable-gold=dwp )
+
+	use nls \
+		&& myconf+=( --without-included-gettext ) \
+		|| myconf+=( --disable-nls )
+
+	myconf+=( --enable-64-bit-bfd )
+
+	[[ -n ${CBUILD} ]] && myconf+=( --build=${CBUILD} )
+	is_cross && myconf+=(
+		--with-sysroot="${EPREFIX}"/usr/${CTARGET}
+		--enable-poison-system-directories
+	)
+
+	myconf+=(
+		--prefix="${EPREFIX}"/usr
+		--host=${CHOST}
+		--target=${CTARGET}
+		--datadir="${EPREFIX}"${DATAPATH}
+		--infodir="${EPREFIX}"${DATAPATH}/info
+		--mandir="${EPREFIX}"${DATAPATH}/man
+		--bindir="${EPREFIX}"${BINPATH}
+		--libdir="${EPREFIX}"${LIBPATH}
+		--libexecdir="${EPREFIX}"${LIBPATH}
+		--includedir="${EPREFIX}"${INCPATH}
+		--enable-compressed-debug-sections=none
+		--enable-threads
+		--enable-shared
+		--enable-deterministic-archives
+		--enable-install-libiberty
+		--enable-secureplt
+		--disable-werror
+		--with-bugurl="$(toolchain-binutils_bugurl)"
+		${EXTRA_ECONF}
+		# Disable modules that are in a combined binutils/gdb tree. #490566
+		--disable-{gdb,libdecnumber,readline,sim}
+		# Strip out broken static link flags.
+		# https://gcc.gnu.org/PR56750
+		--without-stage1-ldflags
+		# Allow user to opt into CET for host libraries.
+		# Ideally we would like automagic-or-disabled here.
+		# But the check does not quite work on i686: bug #760926.
+		$(use_enable cet)
+	)
+
+	echo ./configure "${myconf[@]}"
+	"${S}"/configure "${myconf[@]}" || die
+}
+
+src_compile() {
+	cd "${MY_BUILDDIR}"
+	emake all
+
+	# only build info pages if we user wants them, and if
+	# we have makeinfo (may not exist when we bootstrap)
+	if type -p makeinfo > /dev/null ; then
+		emake info
+	fi
+	# we nuke the manpages when we're left with junk
+	# (like when we bootstrap, no perl -> no manpages)
+	find . -name '*.1' -a -size 0 -delete
+}
+
+src_test() {
+	cd "${MY_BUILDDIR}"
+	emake -k check
+}
+
+src_install() {
+	local x d
+
+	cd "${MY_BUILDDIR}"
+	emake DESTDIR="${D}" tooldir="${LIBPATH}" install
+	rm -rf "${D}"/${LIBPATH}/bin
+
+	# Newer versions of binutils get fancy with ${LIBPATH} #171905
+	cd "${D}"/${LIBPATH}
+	for d in ../* ; do
+		[[ ${d} == ../${PV} ]] && continue
+		mv ${d}/* . || die
+		rmdir ${d} || die
+	done
+
+	# Now we collect everything intp the proper SLOT-ed dirs
+	# When something is built to cross-compile, it installs into
+	# /usr/$CHOST/ by default ... we have to 'fix' that :)
+	if is_cross ; then
+		cd "${D}"/${BINPATH}
+		for x in * ; do
+			mv ${x} ${x/${CTARGET}-}
+		done
+
+		if [[ -d ${D}/usr/${CHOST}/${CTARGET} ]] ; then
+			mv "${D}"/usr/${CHOST}/${CTARGET}/include "${D}"/${INCPATH}
+			mv "${D}"/usr/${CHOST}/${CTARGET}/lib/* "${D}"/${LIBPATH}/
+			rm -r "${D}"/usr/${CHOST}/{include,lib}
+		fi
+	fi
+	insinto ${INCPATH}
+	doins "${S}/include/libiberty.h"
+	if [[ -d ${D}/${LIBPATH}/lib ]] ; then
+		mv "${D}"/${LIBPATH}/lib/* "${D}"/${LIBPATH}/
+		rm -r "${D}"/${LIBPATH}/lib
+	fi
+
+	# Now, some binutils are tricky and actually provide
+	# for multiple TARGETS.  Really, we're talking just
+	# 32bit/64bit support (like mips/ppc/sparc).  Here
+	# we want to tell binutils-config that it's cool if
+	# it generates multiple sets of binutil symlinks.
+	# e.g. sparc gets {sparc,sparc64}-unknown-linux-gnu
+	local targ=${CTARGET/-*} src="" dst=""
+	local FAKE_TARGETS=${CTARGET}
+	case ${targ} in
+		mips*)    src="mips"    dst="mips64";;
+		powerpc*) src="powerpc" dst="powerpc64";;
+		s390*)    src="s390"    dst="s390x";;
+		sparc*)   src="sparc"   dst="sparc64";;
+	esac
+	case ${targ} in
+		mips64*|powerpc64*|s390x*|sparc64*) targ=${src} src=${dst} dst=${targ};;
+	esac
+	[[ -n ${src}${dst} ]] && FAKE_TARGETS="${FAKE_TARGETS} ${CTARGET/${src}/${dst}}"
+
+	# Generate an env.d entry for this binutils
+	insinto /etc/env.d/binutils
+	cat <<-EOF > "${T}"/env.d
+	TARGET="${CTARGET}"
+	VER="${PV}"
+	LIBPATH="${LIBPATH}"
+	FAKE_TARGETS="${FAKE_TARGETS}"
+	EOF
+	newins "${T}"/env.d ${CTARGET}-${PV}
+
+	# Handle documentation
+	if ! is_cross ; then
+		cd "${S}"
+		dodoc README
+		docinto bfd
+		dodoc bfd/ChangeLog* bfd/README bfd/PORTING bfd/TODO
+		docinto binutils
+		dodoc binutils/ChangeLog binutils/NEWS binutils/README
+		docinto gas
+		dodoc gas/ChangeLog* gas/CONTRIBUTORS gas/NEWS gas/README*
+		docinto gprof
+		dodoc gprof/ChangeLog* gprof/TEST gprof/TODO gprof/bbconv.pl
+		docinto ld
+		dodoc ld/ChangeLog* ld/README ld/NEWS ld/TODO
+		docinto libiberty
+		dodoc libiberty/ChangeLog* libiberty/README
+		docinto opcodes
+		dodoc opcodes/ChangeLog*
+	fi
+	# Remove shared info pages
+	rm -f "${D}"/${DATAPATH}/info/{dir,configure.info,standards.info}
+	# Trim all empty dirs
+	find "${D}" -type d | xargs rmdir >& /dev/null
+
+	if use hardened ; then
+		LDWRAPPER=ldwrapper.hardened
+		LDWRAPPER_LLD=ldwrapper_lld.hardened
+	else
+		LDWRAPPER=ldwrapper
+		LDWRAPPER_LLD=ldwrapper_lld
+	fi
+
+	mv "${D}/${BINPATH}/ld.bfd" "${D}/${BINPATH}/ld.bfd.real" || die
+	exeinto "${BINPATH}"
+	newexe "${FILESDIR}/${LDWRAPPER}" "ld.bfd" || die
+	toolchain_mips_use_sysv_gnuhash "ld.bfd"
+
+	# Set default to be ld.bfd in regular installation
+	dosym ld.bfd "${BINPATH}/ld"
+
+	# Install lld wrapper only for cross toolchains.
+	is_cross && newbin "${FILESDIR}/${LDWRAPPER_LLD}" "${CTARGET}-ld.lld"
+
+	# Move the locale directory to where it is supposed to be
+	mv "${D}/usr/share/locale" "${D}/${DATAPATH}/"
+}
+
+pkg_postinst() {
+	binutils-config ${CTARGET}-${PV}
+}
+
+pkg_postrm() {
+	local current_profile=$(binutils-config -c ${CTARGET})
+
+	# If no other versions exist, then uninstall for this
+	# target ... otherwise, switch to the newest version
+	# Note: only do this if this version is unmerged.  We
+	#       rerun binutils-config if this is a remerge, as
+	#       we want the mtimes on the symlinks updated (if
+	#       it is the same as the current selected profile)
+	if [[ ! -e ${BINPATH}/ld ]] && [[ ${current_profile} == ${CTARGET}-${PV} ]] ; then
+		local choice=$(binutils-config -l | grep ${CTARGET} | awk '{print $2}')
+		choice=${choice//$'\n'/ }
+		choice=${choice/* }
+		if [[ -z ${choice} ]] ; then
+			binutils-config -u ${CTARGET}
+		else
+			binutils-config ${choice}
+		fi
+	elif [[ $(CHOST=${CTARGET} binutils-config -c) == ${CTARGET}-${PV} ]] ; then
+		binutils-config ${CTARGET}-${PV}
+	fi
+}
diff --git a/sys-devel/binutils/binutils-9999.ebuild b/sys-devel/binutils/binutils-9999.ebuild
deleted file mode 100644
index 105df27e..0000000
--- a/sys-devel/binutils/binutils-9999.ebuild
+++ /dev/null
@@ -1,466 +0,0 @@
-# Copyright (c) 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-# FIXME: We have fixed a bug where gold generates inefficient
-# code for 32-bit armv8 CPUs, on upstream AOSP.
-# See http://b/134709902
-#
-# We intentionally don't pick up this change because it
-# requires syncing many more commits, and we are in the process
-# of deprecating gold in Chrome OS.
-
-CROS_WORKON_REPO="https://android.googlesource.com"
-CROS_WORKON_PROJECT="toolchain/binutils"
-CROS_WORKON_LOCALNAME="../aosp/toolchain/binutils"
-
-NEXT_BINUTILS=cros/binutils-2_25-google
-
-# By default, PREV_BINUTILS points to the parent of current tip of cros/master.
-# If that is a bad commit, override this to point to the last known good commit.
-PREV_BINUTILS="cros/master^"
-
-inherit eutils libtool flag-o-matic gnuconfig multilib cros-constants cros-workon
-
-KEYWORDS="~*"
-
-BVER=${PV}
-
-export CTARGET=${CTARGET:-${CHOST}}
-if [[ ${CTARGET} == ${CHOST} ]] ; then
-	if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then
-		export CTARGET=${CATEGORY/cross-}
-	fi
-fi
-
-is_cross() { [[ ${CHOST} != ${CTARGET} ]] ; }
-
-DESCRIPTION="Tools necessary to build programs"
-HOMEPAGE="http://sources.redhat.com/binutils/"
-LICENSE="|| ( GPL-3 LGPL-3 )"
-IUSE="cros_host hardened mounted_binutils multitarget nls test vanilla
-	next_binutils prev_binutils"
-REQUIRED_USE="next_binutils? ( !prev_binutils )"
-
-if is_cross ; then
-	SLOT="${CTARGET}"
-else
-	SLOT="0"
-fi
-
-RDEPEND=">=sys-devel/binutils-config-1.9"
-DEPEND="${RDEPEND}
-	test? ( dev-util/dejagnu )
-	nls? ( sys-devel/gettext )
-	sys-devel/flex"
-
-RESTRICT="fetch test"
-
-GITDIR=${WORKDIR}/gitdir
-
-MY_BUILDDIR=${WORKDIR}/build
-
-PATCHES=(
-	"${FILESDIR}/${P}-sht_relr.patch"
-	"${FILESDIR}/${P}-smallpie.patch"
-	"${FILESDIR}/${P}-apply_dynamic_relocs.patch"
-	"${FILESDIR}/${P}-gold-dwp-dwarfv5-1.patch"
-	"${FILESDIR}/${P}-gold-dwp-dwarfv5-2.patch"
-	"${FILESDIR}/${P}-gold-dwp-dwarfv5-3.patch"
-	"${FILESDIR}/${P}-gold-dwp-dwarfv5-4.patch"
-)
-
-# It is not convenient that cros_workon.eclass does not accept a branch name in
-# CROS_WORKON_COMMIT/TREE, because sometimes the git repository is cloned via
-# '--shared', which hides all remote refs. So we manually calculate the hashes
-# here.
-githash_for_branch() {
-	local pathbase
-	local branch=$1
-	pathbase="${CHROOT_SOURCE_ROOT}/src/third_party/binutils"
-	# Workaround uprev deleting these settings. http://crbug.com/375546
-	eval CROS_WORKON_COMMIT"='$(git --no-pager --git-dir="${pathbase}/.git" log -1 --pretty="format:%H" "${branch}")'"
-	eval CROS_WORKON_TREE"='$(git --no-pager --git-dir="${pathbase}/.git" log -1 --pretty="format:%T" "${branch}")'"
-}
-
-src_unpack() {
-	if use mounted_binutils ; then
-		local dir="/usr/local/toolchain_root/binutils"
-		if [[ ! -d ${dir} ]] ; then
-			die "binutils dirs not mounted at: ${dir}"
-		fi
-		export VCSID=$(get_rev "${dir}")
-		ln -s "${dir}" "${S}"
-	else
-		if use next_binutils ; then
-			githash_for_branch ${NEXT_BINUTILS}
-			einfo "Using next binutils: \"${NEXT_BINUTILS}\""
-			einfo "  GITHASH= \"${CROS_WORKON_COMMIT}\""
-			einfo "  TREEHASH= \"${CROS_WORKON_TREE}\""
-		fi
-		if use prev_binutils ; then
-			githash_for_branch ${PREV_BINUTILS}
-			einfo "Using prev binutils: \"${PREV_BINUTILS}\""
-			einfo "  GITHASH= \"${CROS_WORKON_COMMIT}\""
-			einfo "  TREEHASH= \"${CROS_WORKON_TREE}\""
-		fi
-		cros-workon_src_unpack
-		# cros_workon_src_unpack set vcsid (the version hash) to
-		# cros/master, this is not correct when we override
-		# GITHASH. Correct VCSID here.
-		if use next_binutils || use prev_binutils ; then
-			export VCSID=${CROS_WORKON_COMMIT}
-		fi
-		# The repo at https://android.git.corp.google.com/toolchain/binutils
-		# has sources inside a subdirectory named binutils-${PV}. The repo at
-		# https://chromium.googlesource.com/chromiumos/third_party/binutils
-		# has sources at top level. This ebuild needs to handle both cases.
-		local subdir
-		if [[ ${PV} == 9999 ]]; then
-			subdir="binutils-2.25"
-		else
-			subdir="${PN}-$(ver_cut 1-2)"
-		fi
-		if [[ -d "${S}/${subdir}" ]] ; then
-			S="${S}/${subdir}"
-		fi
-	fi
-
-	mkdir -p "${MY_BUILDDIR}"
-}
-
-toolchain-binutils_bugurl() {
-	printf "http://code.google.com/p/chromium-os/issues/entry"
-}
-toolchain-binutils_pkgversion() {
-	printf "binutils-${VCSID}_cos_gg"
-}
-
-toolchain_mips_use_sysv_gnuhash() {
-	if [[ ${CTARGET} == mips* ]] ; then
-		# For mips targets, GNU hash cannot work due to ABI constraints.
-		sed -i \
-			-e 's:--hash-style=gnu:--hash-style=sysv:' \
-			"${D}/${BINPATH}/$1" || die
-	fi
-}
-
-src_configure() {
-	export LIBPATH=/usr/$(get_libdir)/binutils/${CTARGET}/${BVER}
-	export INCPATH=${LIBPATH}/include
-	export DATAPATH=/usr/share/binutils-data/${CTARGET}/${BVER}
-
-	if is_cross ; then
-		export BINPATH=/usr/${CHOST}/${CTARGET}/binutils-bin/${BVER}
-	else
-		export BINPATH=/usr/${CTARGET}/binutils-bin/${BVER}
-	fi
-
-	cros_optimize_package_for_speed
-
-	# Use gcc to build binutils.
-	cros_use_gcc
-
-	# make sure we filter $LINGUAS so that only ones that
-	# actually work make it through #42033
-	strip-linguas -u */po
-
-	# keep things sane
-	strip-flags
-
-	local x
-	echo
-	for x in CATEGORY CBUILD CHOST CTARGET CFLAGS LDFLAGS ; do
-		einfo "$(printf '%10s' ${x}:) ${!x}"
-	done
-	echo
-
-	cd "${MY_BUILDDIR}"
-	local myconf=( --enable-plugins )
-
-	# enable gold if available (installed as ld.gold)
-	if [[ ${CTARGET} == mips* ]] ; then
-		myconf+=( --disable-gold )
-	else
-		myconf+=( --enable-gold )
-	fi
-
-	use nls \
-		&& myconf+=( --without-included-gettext ) \
-		|| myconf+=( --disable-nls )
-
-	myconf+=( --enable-64-bit-bfd )
-
-	[[ -n ${CBUILD} ]] && myconf+=( --build=${CBUILD} )
-	is_cross && myconf+=(
-		--with-sysroot="${EPREFIX}"/usr/${CTARGET}
-		--enable-poison-system-directories
-	)
-
-	# glibc-2.3.6 lacks support for this ... so rather than force glibc-2.5+
-	# on everyone in alpha (for now), we'll just enable it when possible
-	has_version ">=${CATEGORY}/glibc-2.5" && myconf+=( --enable-secureplt )
-	has_version ">=sys-libs/glibc-2.5" && myconf+=( --enable-secureplt )
-
-	myconf+=(
-		--prefix="${EPREFIX}"/usr
-		--host=${CHOST}
-		--target=${CTARGET}
-		--datadir="${EPREFIX}"${DATAPATH}
-		--infodir="${EPREFIX}"${DATAPATH}/info
-		--mandir="${EPREFIX}"${DATAPATH}/man
-		--bindir="${EPREFIX}"${BINPATH}
-		--libdir="${EPREFIX}"${LIBPATH}
-		--libexecdir="${EPREFIX}"${LIBPATH}
-		--includedir="${EPREFIX}"${INCPATH}
-		--enable-compressed-debug-sections=none
-		--enable-threads
-		--enable-shared
-		--enable-deterministic-archives
-		# Newer versions (>=2.24) make this an explicit option. #497268
-		--enable-install-libiberty
-		--disable-werror
-		--with-bugurl="$(toolchain-binutils_bugurl)"
-		--with-pkgversion="$(toolchain-binutils_pkgversion)"
-		${EXTRA_ECONF}
-		# Disable modules that are in a combined binutils/gdb tree. #490566
-		--disable-{gdb,libdecnumber,readline,sim}
-		# Strip out broken static link flags.
-		# https://gcc.gnu.org/PR56750
-		--without-stage1-ldflags
-	)
-
-	echo ./configure "${myconf[@]}"
-	"${S}"/configure "${myconf[@]}" || die
-}
-
-src_compile() {
-	cd "${MY_BUILDDIR}"
-	emake all
-
-	# only build info pages if we user wants them, and if
-	# we have makeinfo (may not exist when we bootstrap)
-	if type -p makeinfo > /dev/null ; then
-		emake info
-	fi
-	# we nuke the manpages when we're left with junk
-	# (like when we bootstrap, no perl -> no manpages)
-	find . -name '*.1' -a -size 0 -delete
-}
-
-src_test() {
-	cd "${MY_BUILDDIR}"
-	emake -k check
-}
-
-src_install() {
-	local x d
-
-	cd "${MY_BUILDDIR}"
-	emake DESTDIR="${D}" tooldir="${LIBPATH}" install
-	rm -rf "${D}"/${LIBPATH}/bin
-
-	# Newer versions of binutils get fancy with ${LIBPATH} #171905
-	cd "${D}"/${LIBPATH}
-	for d in ../* ; do
-		[[ ${d} == ../${BVER} ]] && continue
-		mv ${d}/* . || die
-		rmdir ${d} || die
-	done
-
-	# Now we collect everything intp the proper SLOT-ed dirs
-	# When something is built to cross-compile, it installs into
-	# /usr/$CHOST/ by default ... we have to 'fix' that :)
-	if is_cross ; then
-		cd "${D}"/${BINPATH}
-		for x in * ; do
-			mv ${x} ${x/${CTARGET}-}
-		done
-
-		if [[ -d ${D}/usr/${CHOST}/${CTARGET} ]] ; then
-			mv "${D}"/usr/${CHOST}/${CTARGET}/include "${D}"/${INCPATH}
-			mv "${D}"/usr/${CHOST}/${CTARGET}/lib/* "${D}"/${LIBPATH}/
-			rm -r "${D}"/usr/${CHOST}/{include,lib}
-		fi
-	fi
-	insinto ${INCPATH}
-	doins "${S}/include/libiberty.h"
-	if [[ -d ${D}/${LIBPATH}/lib ]] ; then
-		mv "${D}"/${LIBPATH}/lib/* "${D}"/${LIBPATH}/
-		rm -r "${D}"/${LIBPATH}/lib
-	fi
-
-	# Now, some binutils are tricky and actually provide
-	# for multiple TARGETS.  Really, we're talking just
-	# 32bit/64bit support (like mips/ppc/sparc).  Here
-	# we want to tell binutils-config that it's cool if
-	# it generates multiple sets of binutil symlinks.
-	# e.g. sparc gets {sparc,sparc64}-unknown-linux-gnu
-	local targ=${CTARGET/-*} src="" dst=""
-	local FAKE_TARGETS=${CTARGET}
-	case ${targ} in
-		mips*)    src="mips"    dst="mips64";;
-		powerpc*) src="powerpc" dst="powerpc64";;
-		s390*)    src="s390"    dst="s390x";;
-		sparc*)   src="sparc"   dst="sparc64";;
-	esac
-	case ${targ} in
-		mips64*|powerpc64*|s390x*|sparc64*) targ=${src} src=${dst} dst=${targ};;
-	esac
-	[[ -n ${src}${dst} ]] && FAKE_TARGETS="${FAKE_TARGETS} ${CTARGET/${src}/${dst}}"
-
-	# Generate an env.d entry for this binutils
-	insinto /etc/env.d/binutils
-	cat <<-EOF > "${T}"/env.d
-	TARGET="${CTARGET}"
-	VER="${BVER}"
-	LIBPATH="${LIBPATH}"
-	FAKE_TARGETS="${FAKE_TARGETS}"
-	EOF
-	newins "${T}"/env.d ${CTARGET}-${BVER}
-
-	# Handle documentation
-	if ! is_cross ; then
-		cd "${S}"
-		dodoc README
-		docinto bfd
-		dodoc bfd/ChangeLog* bfd/README bfd/PORTING bfd/TODO
-		docinto binutils
-		dodoc binutils/ChangeLog binutils/NEWS binutils/README
-		docinto gas
-		dodoc gas/ChangeLog* gas/CONTRIBUTORS gas/NEWS gas/README*
-		docinto gprof
-		dodoc gprof/ChangeLog* gprof/TEST gprof/TODO gprof/bbconv.pl
-		docinto ld
-		dodoc ld/ChangeLog* ld/README ld/NEWS ld/TODO
-		docinto libiberty
-		dodoc libiberty/ChangeLog* libiberty/README
-		docinto opcodes
-		dodoc opcodes/ChangeLog*
-	fi
-	# Remove shared info pages
-	rm -f "${D}"/${DATAPATH}/info/{dir,configure.info,standards.info}
-	# Trim all empty dirs
-	find "${D}" -type d | xargs rmdir >& /dev/null
-
-	if use hardened ; then
-		LDWRAPPER=ldwrapper.hardened
-		LDWRAPPER_LLD=ldwrapper_lld.hardened
-	else
-		LDWRAPPER=ldwrapper
-		LDWRAPPER_LLD=ldwrapper_lld
-	fi
-
-	mv "${D}/${BINPATH}/ld.bfd" "${D}/${BINPATH}/ld.bfd.real" || die
-	exeinto "${BINPATH}"
-	newexe "${FILESDIR}/${LDWRAPPER}" "ld.bfd" || die
-	toolchain_mips_use_sysv_gnuhash "ld.bfd"
-
-	# Set default to be ld.bfd in regular installation
-	dosym ld.bfd "${BINPATH}/ld"
-
-	# Install lld wrapper only for cross toolchains.
-	is_cross && newbin "${FILESDIR}/${LDWRAPPER_LLD}" "${CTARGET}-ld.lld"
-
-	# Require gold for targets we know support gold, but auto-detect others.
-	local gold=false
-	case ${CTARGET} in
-	aarch64-*|arm*|i?86-*|powerpc*|sparc*|x86_64-*)
-		gold=true
-		;;
-	*)
-		[[ -e ${D}/${BINPATH}/ld.gold ]] && gold=true
-		;;
-	esac
-
-	if ${gold} ; then
-		mv "${D}/${BINPATH}/ld.gold" "${D}/${BINPATH}/ld.gold.real" || die
-		exeinto "${BINPATH}"
-		newexe "${FILESDIR}/${LDWRAPPER}" "ld.gold" || die
-		toolchain_mips_use_sysv_gnuhash "ld.gold"
-
-		# Make a fake installation for gold with gold as the default linker
-		# so we can turn gold on/off with binutils-config
-		LASTDIR=${LIBPATH##/*/}
-		dosym "${LASTDIR}" "${LIBPATH}-gold"
-		LASTDIR=${DATAPATH##/*/}
-		dosym "${LASTDIR}" "${DATAPATH}-gold"
-
-		mkdir "${D}/${BINPATH}-gold"
-		cd "${D}"/${BINPATH}
-		LASTDIR=${BINPATH##/*/}
-		for x in * ; do
-			dosym "../${LASTDIR}/${x}" "${BINPATH}-gold/${x}"
-		done
-		dosym ld.gold "${BINPATH}-gold/ld"
-
-		# Install gold binutils-config configuration file
-		insinto /etc/env.d/binutils
-		cat <<-EOF > "${T}"/env.d
-		TARGET="${CTARGET}"
-		VER="${BVER}-gold"
-		LIBPATH="${LIBPATH}-gold"
-		FAKE_TARGETS="${FAKE_TARGETS}"
-		EOF
-		newins "${T}"/env.d ${CTARGET}-${BVER}-gold
-	fi
-
-	# Move the locale directory to where it is supposed to be
-	mv "${D}/usr/share/locale" "${D}/${DATAPATH}/"
-}
-
-pkg_postinst() {
-	# Do not run binutils-config for non-SDK builds.
-	use cros_host || return
-
-	# Manual binutils installation (usually via "cros_workon --host
-	# xxx/binutls && sudo emerge xxx/binutils"), unlike setup_board and
-	# build_packages which invoke cros_setup_toolchains to properly config
-	# bfd/gold selection, does not config gold/bfd. When a developer
-	# cherry-picks a binutils CL, rebuilds it via 'emerge', he/she sometimes
-	# ends up using gold (or bfd) while he/she actually assumes bfd (or
-	# gold). This behavior is extremely confusing. Fix this by always
-	# PROPERLY configuring gold/bfd selection in postinst.
-	local config_gold=false
-	if is_cross; then
-		case ${CTARGET} in
-			aarch64-*|armv7a-*|i?86-*|x86_64-*) config_gold=true;;
-			*) ;;
-		esac
-	fi
-	if ${config_gold} ; then
-		binutils-config ${CTARGET}-${BVER}-gold
-	else
-		binutils-config ${CTARGET}-${BVER}
-	fi
-}
-
-pkg_postrm() {
-	# Do not run binutils-config for non-SDK builds.
-	use cros_host || return
-
-	local current_profile=$(binutils-config -c ${CTARGET})
-
-	# If no other versions exist, then uninstall for this
-	# target ... otherwise, switch to the newest version
-	# Note: only do this if this version is unmerged.  We
-	#       rerun binutils-config if this is a remerge, as
-	#       we want the mtimes on the symlinks updated (if
-	#       it is the same as the current selected profile)
-	if [[ ! -e ${BINPATH}/ld ]] && [[ ${current_profile} == ${CTARGET}-${BVER} ]] ; then
-		local choice=$(binutils-config -l | grep ${CTARGET} | awk '{print $2}')
-		choice=${choice//$'\n'/ }
-		choice=${choice/* }
-		if [[ -z ${choice} ]] ; then
-			env -i binutils-config -u ${CTARGET}
-		else
-			binutils-config ${choice}
-		fi
-	elif [[ $(CHOST=${CTARGET} binutils-config -c) == ${CTARGET}-${BVER} ]] ; then
-		binutils-config ${CTARGET}-${BVER}
-	fi
-}
-
-# If you need to force a cros_workon uprev, change this number (you can use next
-# uprev): 21
diff --git a/sys-devel/binutils/files/0001-gas-add-option-to-enable-disable-incbin-via-allow-in.patch b/sys-devel/binutils/files/0001-gas-add-option-to-enable-disable-incbin-via-allow-in.patch
new file mode 100644
index 0000000..e2748fa
--- /dev/null
+++ b/sys-devel/binutils/files/0001-gas-add-option-to-enable-disable-incbin-via-allow-in.patch
@@ -0,0 +1,137 @@
+From 6b1c73dfc14169c6e100e84c8b027d942fadb219 Mon Sep 17 00:00:00 2001
+From: Rahul Chaudhry <rahulchaudhry@google.com>
+Date: Thu, 16 Mar 2017 11:11:21 -0700
+Subject: [PATCH 01/14] gas: add option to enable/disable incbin via
+ --allow-incbin.
+
+This change is forward-port of google cl/80426738 and cl/80451836
+to binutils-2.35.1 branch with c/273909 squashed into it.
+
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+
+Change-Id: I5dcfc2f3141cbe3db5de31a819ed49ab8ad8968c
+---
+ gas/as.c                            | 17 ++++++++++++++++-
+ gas/as.h                            |  3 +++
+ gas/doc/as.texi                     |  2 ++
+ gas/read.c                          |  6 ++++++
+ gas/testsuite/gas/aarch64/mapmisc.d |  2 +-
+ gas/testsuite/gas/all/incbin.d      |  2 +-
+ 6 files changed, 29 insertions(+), 3 deletions(-)
+
+diff --git a/gas/as.c b/gas/as.c
+index 0801903126e..04224fe82f9 100644
+--- a/gas/as.c
++++ b/gas/as.c
+@@ -111,6 +111,9 @@ int flag_use_elf_stt_common = DEFAULT_GENERATE_ELF_STT_COMMON;
+ bfd_boolean flag_generate_build_notes = DEFAULT_GENERATE_BUILD_NOTES;
+ #endif
+ 
++/* Enable incbin directive. */
++int allow_incbin_directive = 1;
++
+ /* Keep the output file.  */
+ static int keep_it = 0;
+ 
+@@ -511,7 +514,9 @@ parse_args (int * pargc, char *** pargv)
+       OPTION_WARN_FATAL,
+       OPTION_COMPRESS_DEBUG,
+       OPTION_NOCOMPRESS_DEBUG,
+-      OPTION_NO_PAD_SECTIONS /* = STD_BASE + 40 */
++      OPTION_NO_PAD_SECTIONS, /* = STD_BASE + 40 */
++      OPTION_ALLOW_INCBIN,
++      OPTION_NOALLOW_INCBIN
+     /* When you add options here, check that they do
+        not collide with OPTION_MD_BASE.  See as.h.  */
+     };
+@@ -531,6 +536,8 @@ parse_args (int * pargc, char *** pargv)
+     ,{"al", optional_argument, NULL, OPTION_AL}
+     ,{"compress-debug-sections", optional_argument, NULL, OPTION_COMPRESS_DEBUG}
+     ,{"nocompress-debug-sections", no_argument, NULL, OPTION_NOCOMPRESS_DEBUG}
++    ,{"allow-incbin", optional_argument, NULL, OPTION_ALLOW_INCBIN}
++    ,{"noallow-incbin", optional_argument, NULL, OPTION_NOALLOW_INCBIN}
+     ,{"debug-prefix-map", required_argument, NULL, OPTION_DEBUG_PREFIX_MAP}
+     ,{"defsym", required_argument, NULL, OPTION_DEFSYM}
+     ,{"dump-config", no_argument, NULL, OPTION_DUMPCONFIG}
+@@ -758,6 +765,14 @@ This program has absolutely no warranty.\n"));
+ 	  flag_compress_debug = COMPRESS_DEBUG_NONE;
+ 	  break;
+ 
++	case OPTION_ALLOW_INCBIN:
++	  allow_incbin_directive = 1;
++	  break;
++
++	case OPTION_NOALLOW_INCBIN:
++	  allow_incbin_directive = 0;
++	  break;
++
+ 	case OPTION_DEBUG_PREFIX_MAP:
+ 	  add_debug_prefix_map (optarg);
+ 	  break;
+diff --git a/gas/as.h b/gas/as.h
+index 7a72239dc23..7f2ca9fef4e 100644
+--- a/gas/as.h
++++ b/gas/as.h
+@@ -421,6 +421,9 @@ extern int max_macro_nest;
+ /* Verbosity level.  */
+ extern int verbose;
+ 
++/* Enable incbin directive. */
++extern int allow_incbin_directive;
++
+ /* Obstack chunk size.  Keep large for efficient space use, make small to
+    increase malloc calls for monitoring memory allocation.  */
+ extern int chunksize;
+diff --git a/gas/doc/as.texi b/gas/doc/as.texi
+index 8ce9fb73e2e..192fdc3b7c4 100644
+--- a/gas/doc/as.texi
++++ b/gas/doc/as.texi
+@@ -5618,6 +5618,8 @@ following section of code if the two strings are not the same.
+ 
+ @cindex @code{incbin} directive
+ @cindex binary files, including
++The @code{incbin} directive can be used with @option{--allow-incbin}.
++
+ The @code{incbin} directive includes @var{file} verbatim at the current
+ location. You can control the search paths used with the @samp{-I} command-line
+ option (@pxref{Invoking,,Command-Line Options}).  Quotation marks are required
+diff --git a/gas/read.c b/gas/read.c
+index 69eb19c3784..8c823cef3cf 100644
+--- a/gas/read.c
++++ b/gas/read.c
+@@ -5752,6 +5752,12 @@ s_incbin (int x ATTRIBUTE_UNUSED)
+   long   bytes;
+   int    len;
+ 
++  if (! allow_incbin_directive)
++    {
++      as_fatal (_("\'.incbin\' directive not allowed, use --allow-incbin flag"
++                  " to enable."));
++    }
++
+ #ifdef md_flush_pending_output
+   md_flush_pending_output ();
+ #endif
+diff --git a/gas/testsuite/gas/aarch64/mapmisc.d b/gas/testsuite/gas/aarch64/mapmisc.d
+index 1f2df6ea0d7..e0744f97bf7 100644
+--- a/gas/testsuite/gas/aarch64/mapmisc.d
++++ b/gas/testsuite/gas/aarch64/mapmisc.d
+@@ -1,4 +1,4 @@
+-#as: -EL -I$srcdir/$subdir --generate-missing-build-notes=no
++#as: -EL -I$srcdir/$subdir --generate-missing-build-notes=no --allow-incbin
+ #objdump: --syms --special-syms -d
+ #name: AArch64 Mapping Symbols for miscellaneous directives
+ #source: mapmisc.s
+diff --git a/gas/testsuite/gas/all/incbin.d b/gas/testsuite/gas/all/incbin.d
+index 62f6ae78103..e3b61630ada 100644
+--- a/gas/testsuite/gas/all/incbin.d
++++ b/gas/testsuite/gas/all/incbin.d
+@@ -1,4 +1,4 @@
+-#as: -I$srcdir/$subdir
++#as: -I$srcdir/$subdir --allow-incbin
+ #objdump: -s -j .text
+ #name: incbin
+ 
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0002-dwarf-add-experimental-DWARF-5-values-for-two-level-.patch b/sys-devel/binutils/files/0002-dwarf-add-experimental-DWARF-5-values-for-two-level-.patch
new file mode 100644
index 0000000..23e5935
--- /dev/null
+++ b/sys-devel/binutils/files/0002-dwarf-add-experimental-DWARF-5-values-for-two-level-.patch
@@ -0,0 +1,62 @@
+From e5f06682e45bf2e088a6cd6096bce13d68f9122c Mon Sep 17 00:00:00 2001
+From: Cary Coutant <ccoutant@google.com>
+Date: Tue, 23 Dec 2014 14:44:58 -0800
+Subject: [PATCH 02/14] dwarf: add experimental DWARF-5 values for two-level
+ line number tables.
+
+This change is forward-port of commit 13a142ce0959837746e61063b6b18ac70344a474
+  - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=13a142ce0959837746e61063b6b18ac70344a474
+from upstream branch users/ccoutant/two-level-line-150331
+  - https://sourceware.org/git/?p=binutils-gdb.git;a=shortlog;h=refs/heads/users/ccoutant/two-level-line-150331
+to binutils-2_27-branch.
+
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+
+Change-Id: I9190449f8eee61fe824fe5bd031b5aa7e7629a11
+---
+ include/dwarf2.h | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/include/dwarf2.h b/include/dwarf2.h
+index 3f271fb0f7a..9c4203c22f7 100644
+--- a/include/dwarf2.h
++++ b/include/dwarf2.h
+@@ -244,7 +244,13 @@ enum dwarf_line_number_ops
+     /* DWARF 3.  */
+     DW_LNS_set_prologue_end = 10,
+     DW_LNS_set_epilogue_begin = 11,
+-    DW_LNS_set_isa = 12
++    DW_LNS_set_isa = 12,
++    /* Experimental DWARF 5 extensions.
++       See http://wiki.dwarfstd.org/index.php?title=TwoLevelLineTables.  */
++    DW_LNS_set_address_from_logical = 13, /* Actuals table only.  */
++    DW_LNS_set_subprogram = 13,           /* Logicals table only.  */
++    DW_LNS_inlined_call = 14,             /* Logicals table only.  */
++    DW_LNS_pop_context = 15               /* Logicals table only.  */
+   };
+ 
+ /* Line number extended opcodes.  */
+@@ -280,7 +286,7 @@ enum dwarf_line_number_hp_sfc_ops
+   };
+ 
+ /* Content type codes in line table directory_entry_format
+-   and file_name_entry_format sequences.  */
++   and file_name_entry_format sequences. (DWARF 5) */
+ enum dwarf_line_number_content_type
+   {
+     DW_LNCT_path = 0x1,
+@@ -288,6 +294,11 @@ enum dwarf_line_number_content_type
+     DW_LNCT_timestamp = 0x3,
+     DW_LNCT_size = 0x4,
+     DW_LNCT_MD5 = 0x5,
++    /* Experimental DWARF 5 extensions.
++       See http://wiki.dwarfstd.org/index.php?title=TwoLevelLineTables.  */
++    DW_LNCT_subprogram_name = 0x6,
++    DW_LNCT_decl_file = 0x7,
++    DW_LNCT_decl_line = 0x8,
+     DW_LNCT_lo_user = 0x2000,
+     DW_LNCT_hi_user = 0x3fff
+   };
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0003-gas-add-support-for-DWARF-5-and-experimental-two-lev.patch b/sys-devel/binutils/files/0003-gas-add-support-for-DWARF-5-and-experimental-two-lev.patch
new file mode 100644
index 0000000..59caee8
--- /dev/null
+++ b/sys-devel/binutils/files/0003-gas-add-support-for-DWARF-5-and-experimental-two-lev.patch
@@ -0,0 +1,1249 @@
+From f41bbb23ef6e6a96d59f1ee49a2ec504e3bd748e Mon Sep 17 00:00:00 2001
+From: Cary Coutant <ccoutant@google.com>
+Date: Tue, 23 Dec 2014 15:01:40 -0800
+Subject: [PATCH 03/14] gas: add support for DWARF-5 and experimental two-level
+ line number tables.
+
+This change is forward-port of commit a7c7bcafd2add7ecf8ea2ad7d3d77cf38d46c195
+  - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=a7c7bcafd2add7ecf8ea2ad7d3d77cf38d46c195
+from upstream branch users/ccoutant/two-level-line-150331
+  - https://sourceware.org/git/?p=binutils-gdb.git;a=shortlog;h=refs/heads/users/ccoutant/two-level-line-150331
+to binutils-2_27-branch.
+
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+
+Change-Id: I84e4565576b9b4fbe88c29312cd75e3687a309d8
+---
+ gas/config/obj-elf.c |   2 +
+ gas/dwarf2dbg.c      | 823 ++++++++++++++++++++++++++++++++++++++-----
+ gas/dwarf2dbg.h      |  19 +-
+ 3 files changed, 756 insertions(+), 88 deletions(-)
+
+diff --git a/gas/config/obj-elf.c b/gas/config/obj-elf.c
+index de22b5a1da8..f481b540c90 100644
+--- a/gas/config/obj-elf.c
++++ b/gas/config/obj-elf.c
+@@ -127,6 +127,8 @@ static const pseudo_typeS elf_pseudo_table[] =
+   { "file", dwarf2_directive_file, 0 },
+   { "loc",  dwarf2_directive_loc,  0 },
+   { "loc_mark_labels", dwarf2_directive_loc_mark_labels, 0 },
++  { "lloc",  dwarf2_directive_loc, 1 },
++  { "subprog",  dwarf2_directive_subprog, 0 },
+ 
+   /* We need to trap the section changing calls to handle .previous.  */
+   {"data", obj_elf_data, 0},
+diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c
+index 419582f9aa8..48617eaa665 100644
+--- a/gas/dwarf2dbg.c
++++ b/gas/dwarf2dbg.c
+@@ -45,6 +45,8 @@
+ #include "dwarf2dbg.h"
+ #include <filenames.h>
+ 
++#include "hash.h"
++
+ #ifdef HAVE_DOS_BASED_FILE_SYSTEM
+ /* We need to decide which character to use as a directory separator.
+    Just because HAVE_DOS_BASED_FILE_SYSTEM is defined, it does not
+@@ -106,6 +108,10 @@
+ #ifndef DWARF2_RNGLISTS_VERSION
+ #define DWARF2_RNGLISTS_VERSION 5
+ #endif
++/* If we see .lloc directives, generate an experimental version 6.  */
++#ifndef DWARF2_LINE_EXPERIMENTAL_VERSION
++#define DWARF2_LINE_EXPERIMENTAL_VERSION 0xf006
++#endif
+ 
+ #include "subsegs.h"
+ 
+@@ -131,6 +137,11 @@
+    "standard_opcode_lengths" table that is emitted below in
+    out_debug_line().  */
+ #define DWARF2_LINE_OPCODE_BASE		13
++#define DWARF5_EXPERIMENTAL_LINE_OPCODE_BASE  16
++
++static int opcode_base;
++static int line_base;
++static unsigned int line_range;
+ 
+ #ifndef DWARF2_LINE_BASE
+   /* Minimum line offset in a special line info. opcode.  This value
+@@ -143,12 +154,20 @@
+ # define DWARF2_LINE_RANGE		14
+ #endif
+ 
++/* For two-level line tables, these values work a bit better.  */
++#define DWARF5_EXPERIMENTAL_LINE_BASE		-3
++#define DWARF5_EXPERIMENTAL_LINE_RANGE		10
++
+ #ifndef DWARF2_LINE_MIN_INSN_LENGTH
+   /* Define the architecture-dependent minimum instruction length (in
+      bytes).  This value should be rather too small than too big.  */
+ # define DWARF2_LINE_MIN_INSN_LENGTH	1
+ #endif
+ 
++#ifndef DWARF2_LINE_MAX_OPS_PER_INSN
++# define DWARF2_LINE_MAX_OPS_PER_INSN	1
++#endif
++
+ /* Flag that indicates the initial value of the is_stmt_start flag.  */
+ #define	DWARF2_LINE_DEFAULT_IS_STMT	1
+ 
+@@ -158,11 +177,11 @@
+ 
+ /* Given a special op, return the line skip amount.  */
+ #define SPECIAL_LINE(op) \
+-	(((op) - DWARF2_LINE_OPCODE_BASE)%DWARF2_LINE_RANGE + DWARF2_LINE_BASE)
++	(((op) - opcode_base) % line_range + line_base)
+ 
+ /* Given a special op, return the address skip amount (in units of
+    DWARF2_LINE_MIN_INSN_LENGTH.  */
+-#define SPECIAL_ADDR(op) (((op) - DWARF2_LINE_OPCODE_BASE)/DWARF2_LINE_RANGE)
++#define SPECIAL_ADDR(op) (((op) - opcode_base) / line_range)
+ 
+ /* The maximum address skip amount that can be encoded with a special op.  */
+ #define MAX_SPECIAL_ADDR_DELTA		SPECIAL_ADDR(255)
+@@ -225,6 +244,44 @@ static char **       dirs = NULL;
+ static unsigned int  dirs_in_use = 0;
+ static unsigned int  dirs_allocated = 0;
+ 
++/* Experimental DWARF-5 Extension: Table of subprograms.  */
++struct subprog_entry {
++  const char *subpname;
++  unsigned int filenum;
++  unsigned int line;
++};
++
++static struct subprog_entry *subprogs;
++static unsigned int subprogs_in_use;
++static unsigned int subprogs_allocated;
++
++/* Experimental DWARF-5 Extension: Logicals table.  */
++struct logicals_entry {
++  segT seg;
++  symbolS *label;
++  /* A logical row doesn't use every field in this struct, but using it
++     here makes the code for writing the line number program simpler.  */
++  struct dwarf2_line_info loc;
++  unsigned int context;
++  unsigned int subprog;
++};
++
++static struct logicals_entry *logicals;
++static unsigned int logicals_in_use;
++static unsigned int logicals_allocated = 0;
++static unsigned int logicals_with_labels = 0;
++
++/* DWARF-5: .debug_line_str string table.  */
++struct string_table {
++  struct hash_control *hashtab;
++  const char **strings;
++  unsigned int strings_in_use;
++  unsigned int strings_allocated;
++  offsetT next_offset;
++};
++
++static struct string_table debug_line_str_table;
++
+ /* TRUE when we've seen a .loc directive recently.  Used to avoid
+    doing work when there's nothing to do.  Will be reset by
+    dwarf2_consume_line_info.  */
+@@ -242,9 +299,9 @@ bfd_boolean dwarf2_loc_mark_labels;
+ /* Current location as indicated by the most recent .loc directive.  */
+ static struct dwarf2_line_info current =
+ {
+-  1, 1, 0, 0,
+-  DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0,
+-  0, NULL
++  1, 1, 0, 0, /* filenum, line, column, isa */
++  DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0, /* flags */
++  0, NULL, 0 /* discriminator, view, logical */
+ };
+ 
+ /* This symbol is used to recognize view number forced resets in loc
+@@ -567,6 +624,15 @@ dwarf2_gen_line_info (addressT ofs, struct dwarf2_line_info *loc)
+   else
+     sym = symbol_temp_new (now_seg, ofs, frag_now);
+   dwarf2_gen_line_info_1 (sym, loc);
++
++  /* Record the current symbol with all logical rows created since
++     the last emitted instruction.  */
++  while (logicals_with_labels < logicals_in_use)
++    {
++      logicals[logicals_with_labels].label = sym;
++      logicals[logicals_with_labels].seg = now_seg;
++      logicals_with_labels++;
++    }
+ }
+ 
+ static const char *
+@@ -901,6 +967,7 @@ dwarf2_where (struct dwarf2_line_info *line)
+       line->isa = current.isa;
+       line->discriminator = current.discriminator;
+       line->view = NULL;
++      line->logical = 0;
+     }
+   else
+     *line = current;
+@@ -1007,6 +1074,68 @@ dwarf2_emit_label (symbolS *label)
+   dwarf2_consume_line_info ();
+ }
+ 
++/* Make a new entry in the subprograms table.  */
++
++static void
++make_subprog_entry (unsigned int num, char *subpname, int filenum, int line)
++{
++  if (subprogs_allocated == 0)
++    {
++      subprogs_allocated = 4;
++      subprogs = (struct subprog_entry *)
++	  xcalloc (subprogs_allocated, sizeof (struct subprog_entry));
++    }
++  if (num > subprogs_allocated)
++    {
++      unsigned int old = subprogs_allocated;
++
++      subprogs_allocated *= 2;
++      if (num > subprogs_allocated)
++        subprogs_allocated = num;
++      subprogs = (struct subprog_entry *)
++	  xrealloc (subprogs,
++		    subprogs_allocated * sizeof (struct subprog_entry));
++      memset (subprogs + old, 0,
++	      (subprogs_allocated - old) * sizeof (struct subprog_entry));
++    }
++  if (subprogs_in_use < num)
++    subprogs_in_use = num;
++  subprogs[num - 1].subpname = xstrdup (subpname);
++  subprogs[num - 1].filenum = filenum;
++  subprogs[num - 1].line = line;
++}
++
++/* Make a new entry in the logicals table.  */
++
++static void
++make_logical (unsigned int logical, int context, int subprog)
++{
++  if (logicals_allocated == 0)
++    {
++      logicals_allocated = 4;
++      logicals = (struct logicals_entry *)
++	  xcalloc (logicals_allocated, sizeof (struct logicals_entry));
++    }
++  if (logical > logicals_allocated)
++    {
++      unsigned int old = logicals_allocated;
++
++      logicals_allocated *= 2;
++      if (logical > logicals_allocated)
++        logicals_allocated = logical;
++      logicals = (struct logicals_entry *)
++	  xrealloc (logicals,
++		    logicals_allocated * sizeof (struct logicals_entry));
++      memset (logicals + old, 0,
++	      (logicals_allocated - old) * sizeof (struct logicals_entry));
++    }
++  logicals[logical - 1].loc = current;
++  logicals[logical - 1].context = context;
++  logicals[logical - 1].subprog = subprog;
++  if (logical > logicals_in_use)
++    logicals_in_use = logical;
++}
++
+ /* Handle two forms of .file directive:
+    - Pass .file "source.c" to s_app_file
+    - Handle .file 1 "source.c" by adding an entry to the DWARF-2 file table
+@@ -1121,40 +1250,130 @@ dwarf2_directive_file (int dummy ATTRIBUTE_UNUSED)
+   (void) dwarf2_directive_filename ();
+ }
+ 
++/* Experimental DWARF-5 extension:
++   Implements the .subprog SUBPNO ["SUBPROG" [FILENO LINENO]] directive.
++   FILENO is the file number, LINENO the line number and the
++   (optional) COLUMN the column of the source code that the following
++   instruction corresponds to.  FILENO can be 0 to indicate that the
++   filename specified by the textually most recent .file directive
++   should be used.  */
+ void
+-dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
++dwarf2_directive_subprog (int dummy ATTRIBUTE_UNUSED)
+ {
+-  offsetT filenum, line;
++  offsetT num, filenum, line;
++  char *subpname;
++  int subpname_len;
+ 
+-  /* If we see two .loc directives in a row, force the first one to be
+-     output now.  */
+-  if (dwarf2_loc_directive_seen)
+-    dwarf2_emit_insn (0);
++  num = get_absolute_expression ();
++  subpname = demand_copy_C_string (&subpname_len);
++  if (subpname == NULL)
++    return;
+ 
++  SKIP_WHITESPACE ();
+   filenum = get_absolute_expression ();
+   SKIP_WHITESPACE ();
+   line = get_absolute_expression ();
++  demand_empty_rest_of_line ();
+ 
+-  if (filenum < 1)
++  if (num < 1)
+     {
+-      if (filenum == 0 && dwarf_level < 5)
+-	dwarf_level = 5;
+-      if (filenum < 0 || DWARF2_LINE_VERSION < 5)
++      as_bad (_("subprogram number less than one"));
++      return;
++    }
++
++  /* A .subprog directive implies compiler generated debug information is
++     being supplied.  Turn off gas generated debug info.  */
++  debug_type = DEBUG_NONE;
++
++  if (num < (int) subprogs_in_use && subprogs[num].subpname != NULL)
++    {
++      as_bad (_("subprogram number %ld already allocated"), (long) num);
++      return;
++    }
++
++  make_subprog_entry (num, subpname, filenum, line);
++}
++
++void
++dwarf2_directive_loc (int is_lloc)
++{
++  offsetT filenum, line;
++  offsetT logical = 0;
++  offsetT context = 0;
++  offsetT subprog = 0;
++  bfd_boolean is_new_logical = FALSE;
++  bfd_boolean is_actual = FALSE;
++  static bfd_boolean saw_loc = FALSE;
++  static bfd_boolean saw_lloc = FALSE;
++  static bfd_boolean saw_both = FALSE;
++
++  if ((is_lloc && saw_loc) || (!is_lloc && saw_lloc))
++    {
++      if (!saw_both)
++        as_bad (_(".loc and .lloc cannot both be used"));
++      saw_both = TRUE;
++      return;
++    }
++
++  if (is_lloc)
++    {
++      saw_lloc = TRUE;
++      logical = get_absolute_expression ();
++      SKIP_WHITESPACE ();
++
++      if (ISDIGIT (*input_line_pointer))
++	is_new_logical = TRUE;
++      else
++	is_actual = TRUE;
++
++      if (logical < 1)
+ 	{
+-	  as_bad (_("file number less than one"));
++	  as_bad (_("logical row less than one"));
++	  return;
++	}
++      if (is_actual &&
++          ((unsigned int) logical > logicals_in_use
++           || logicals[logical - 1].loc.line == 0))
++	{
++	  as_bad (_("unassigned logical row %ld"), (long) logical);
+ 	  return;
+ 	}
+     }
++  else
++    saw_loc = TRUE;
++
++  /* If we see two .loc directives in a row, force the first one to be
++     output now.  */
++  if (dwarf2_loc_directive_seen)
++    dwarf2_emit_insn (0);
+ 
+-  if ((valueT) filenum >= files_in_use || files[filenum].filename == NULL)
++  if (is_lloc && !is_new_logical)
+     {
+-      as_bad (_("unassigned file number %ld"), (long) filenum);
+-      return;
++      filenum = logicals[logical - 1].loc.filenum;
++      line = logicals[logical - 1].loc.line;
++    }
++  else
++    {
++      filenum = get_absolute_expression ();
++      SKIP_WHITESPACE ();
++      line = get_absolute_expression ();
++
++      if (filenum < 1)
++	{
++	  as_bad (_("file number less than one"));
++	  return;
++	}
++      if (filenum >= (int) files_in_use || files[filenum].filename == 0)
++	{
++	  as_bad (_("unassigned file number %ld"), (long) filenum);
++	  return;
++	}
+     }
+ 
+   current.filenum = filenum;
+   current.line = line;
+   current.discriminator = 0;
++  current.logical = logical;
+ 
+ #ifndef NO_LISTING
+   if (listing)
+@@ -1197,17 +1416,17 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
+ 	  current.flags |= DWARF2_FLAG_BASIC_BLOCK;
+ 	  *input_line_pointer = c;
+ 	}
+-      else if (strcmp (p, "prologue_end") == 0)
++      else if (!is_actual && strcmp (p, "prologue_end") == 0)
+ 	{
+ 	  current.flags |= DWARF2_FLAG_PROLOGUE_END;
+ 	  *input_line_pointer = c;
+ 	}
+-      else if (strcmp (p, "epilogue_begin") == 0)
++      else if (!is_actual && strcmp (p, "epilogue_begin") == 0)
+ 	{
+ 	  current.flags |= DWARF2_FLAG_EPILOGUE_BEGIN;
+ 	  *input_line_pointer = c;
+ 	}
+-      else if (strcmp (p, "is_stmt") == 0)
++      else if (!is_actual && strcmp (p, "is_stmt") == 0)
+ 	{
+ 	  (void) restore_line_pointer (c);
+ 	  value = get_absolute_expression ();
+@@ -1233,7 +1452,7 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
+ 	      return;
+ 	    }
+ 	}
+-      else if (strcmp (p, "discriminator") == 0)
++      else if (!is_actual && strcmp (p, "discriminator") == 0)
+ 	{
+ 	  (void) restore_line_pointer (c);
+ 	  value = get_absolute_expression ();
+@@ -1245,7 +1464,7 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
+ 	      return;
+ 	    }
+ 	}
+-      else if (strcmp (p, "view") == 0)
++      else if (!is_actual && strcmp (p, "view") == 0)
+ 	{
+ 	  symbolS *sym;
+ 
+@@ -1296,6 +1515,30 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
+ 	    }
+ 	  current.view = sym;
+ 	}
++      else if (!is_actual && strcmp (p, "context") == 0)
++	{
++	  *input_line_pointer = c;
++	  value = get_absolute_expression ();
++	  if (value >= 0)
++	    context = value;
++	  else
++	    {
++	      as_bad (_("context less than zero"));
++	      return;
++	    }
++	}
++      else if (!is_actual && strcmp (p, "subprog") == 0)
++	{
++	  *input_line_pointer = c;
++	  value = get_absolute_expression ();
++	  if (value >= 0)
++	    subprog = value;
++	  else
++	    {
++	      as_bad (_("subprog number less than zero"));
++	      return;
++	    }
++	}
+       else
+ 	{
+ 	  as_bad (_("unknown .loc sub-directive `%s'"), p);
+@@ -1313,6 +1556,9 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
+   /* If we were given a view id, emit the row right away.  */
+   if (current.view)
+     dwarf2_emit_insn (0);
++
++  if (is_new_logical)
++    make_logical (logical, context, subprog);
+ }
+ 
+ void
+@@ -1444,6 +1690,15 @@ out_set_addr (symbolS *sym)
+   emit_expr (&exp, sizeof_address);
+ }
+ 
++/* Set the address from a logicals table entry.  */
++
++static void
++out_set_addr_from_logical (int logical_delta)
++{
++  out_opcode (DW_LNS_set_address_from_logical);
++  out_leb128 (logical_delta);
++}
++
+ static void scale_addr_delta (addressT *);
+ 
+ static void
+@@ -1482,7 +1737,7 @@ size_inc_line_addr (int line_delta, addressT addr_delta)
+      to emit the matrix entry.  */
+   if (line_delta == INT_MAX)
+     {
+-      if (addr_delta == MAX_SPECIAL_ADDR_DELTA)
++      if (addr_delta == (unsigned int) MAX_SPECIAL_ADDR_DELTA)
+ 	len = 1;
+       else if (addr_delta)
+ 	len = 1 + sizeof_leb128 (addr_delta, 0);
+@@ -1490,30 +1745,30 @@ size_inc_line_addr (int line_delta, addressT addr_delta)
+     }
+ 
+   /* Bias the line delta by the base.  */
+-  tmp = line_delta - DWARF2_LINE_BASE;
++  tmp = line_delta - line_base;
+ 
+   /* If the line increment is out of range of a special opcode, we
+      must encode it with DW_LNS_advance_line.  */
+-  if (tmp >= DWARF2_LINE_RANGE)
++  if (tmp >= line_range)
+     {
+       len = 1 + sizeof_leb128 (line_delta, 1);
+       line_delta = 0;
+-      tmp = 0 - DWARF2_LINE_BASE;
++      tmp = 0 - line_base;
+     }
+ 
+   /* Bias the opcode by the special opcode base.  */
+-  tmp += DWARF2_LINE_OPCODE_BASE;
++  tmp += opcode_base;
+ 
+   /* Avoid overflow when addr_delta is large.  */
+-  if (addr_delta < 256 + MAX_SPECIAL_ADDR_DELTA)
++  if (addr_delta < (unsigned int) (256 + MAX_SPECIAL_ADDR_DELTA))
+     {
+       /* Try using a special opcode.  */
+-      opcode = tmp + addr_delta * DWARF2_LINE_RANGE;
++      opcode = tmp + addr_delta * line_range;
+       if (opcode <= 255)
+ 	return len + 1;
+ 
+       /* Try using DW_LNS_const_add_pc followed by special op.  */
+-      opcode = tmp + (addr_delta - MAX_SPECIAL_ADDR_DELTA) * DWARF2_LINE_RANGE;
++      opcode = tmp + (addr_delta - MAX_SPECIAL_ADDR_DELTA) * line_range;
+       if (opcode <= 255)
+ 	return len + 2;
+     }
+@@ -1546,7 +1801,7 @@ emit_inc_line_addr (int line_delta, addressT addr_delta, char *p, int len)
+      to emit the matrix entry.  */
+   if (line_delta == INT_MAX)
+     {
+-      if (addr_delta == MAX_SPECIAL_ADDR_DELTA)
++      if (addr_delta == (unsigned int) MAX_SPECIAL_ADDR_DELTA)
+ 	*p++ = DW_LNS_const_add_pc;
+       else if (addr_delta)
+ 	{
+@@ -1561,17 +1816,17 @@ emit_inc_line_addr (int line_delta, addressT addr_delta, char *p, int len)
+     }
+ 
+   /* Bias the line delta by the base.  */
+-  tmp = line_delta - DWARF2_LINE_BASE;
++  tmp = line_delta - line_base;
+ 
+   /* If the line increment is out of range of a special opcode, we
+      must encode it with DW_LNS_advance_line.  */
+-  if (tmp >= DWARF2_LINE_RANGE)
++  if (tmp >= line_range)
+     {
+       *p++ = DW_LNS_advance_line;
+       p += output_leb128 (p, line_delta, 1);
+ 
+       line_delta = 0;
+-      tmp = 0 - DWARF2_LINE_BASE;
++      tmp = 0 - line_base;
+       need_copy = 1;
+     }
+ 
+@@ -1584,13 +1839,13 @@ emit_inc_line_addr (int line_delta, addressT addr_delta, char *p, int len)
+     }
+ 
+   /* Bias the opcode by the special opcode base.  */
+-  tmp += DWARF2_LINE_OPCODE_BASE;
++  tmp += opcode_base;
+ 
+   /* Avoid overflow when addr_delta is large.  */
+-  if (addr_delta < 256 + MAX_SPECIAL_ADDR_DELTA)
++  if (addr_delta < (unsigned int) (256 + MAX_SPECIAL_ADDR_DELTA))
+     {
+       /* Try using a special opcode.  */
+-      opcode = tmp + addr_delta * DWARF2_LINE_RANGE;
++      opcode = tmp + addr_delta * line_range;
+       if (opcode <= 255)
+ 	{
+ 	  *p++ = opcode;
+@@ -1598,7 +1853,7 @@ emit_inc_line_addr (int line_delta, addressT addr_delta, char *p, int len)
+ 	}
+ 
+       /* Try using DW_LNS_const_add_pc followed by special op.  */
+-      opcode = tmp + (addr_delta - MAX_SPECIAL_ADDR_DELTA) * DWARF2_LINE_RANGE;
++      opcode = tmp + (addr_delta - MAX_SPECIAL_ADDR_DELTA) * line_range;
+       if (opcode <= 255)
+ 	{
+ 	  *p++ = DW_LNS_const_add_pc;
+@@ -1841,6 +2096,140 @@ dwarf2dbg_convert_frag (fragS *frag)
+   frag->fr_offset = 0;
+ }
+ 
++/* Generate .debug_line content for the logicals table rows.  */
++
++static void
++emit_logicals (void)
++{
++  unsigned logical;
++  unsigned filenum = 1;
++  unsigned line = 1;
++  unsigned column = 0;
++  unsigned discriminator;
++  unsigned flags = DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0;
++  unsigned context = 0;
++  unsigned subprog = 0;
++  segT last_seg = NULL;
++  fragS *last_frag = NULL, *frag;
++  addressT last_frag_ofs = 0, frag_ofs;
++  symbolS *last_lab = NULL, *lab;
++
++  for (logical = 1; logical <= logicals_in_use; ++logical)
++    {
++      int line_delta;
++      int context_delta;
++      struct logicals_entry *e = &logicals[logical - 1];
++
++      discriminator = 0;
++
++      if (context != e->context || subprog != e->subprog)
++        {
++	  unsigned int caller = context;
++	  unsigned int npop = 0;
++
++	  // See if a sequence of DW_LNS_pop_context ops will get
++	  // to the state we want.
++	  while (caller > 0 && caller <= logicals_in_use)
++	    {
++	      ++npop;
++	      if (logicals[caller - 1].subprog == e->subprog)
++		break;
++	      caller = logicals[caller - 1].context;
++	    }
++	  if (caller > 0 && caller <= logicals_in_use && npop < 10)
++	    {
++	      while (npop-- > 0)
++		out_opcode (DW_LNS_pop_context);
++	      filenum = logicals[caller - 1].loc.filenum;
++	      line = logicals[caller - 1].loc.line;
++	      column = logicals[caller - 1].loc.column;
++	      discriminator = logicals[caller - 1].loc.discriminator;
++	      flags = logicals[caller - 1].loc.flags;
++	      context = logicals[caller - 1].context;
++	      subprog = logicals[caller - 1].subprog;
++	    }
++	  if (context != e->context && e->context == 0)
++	    {
++	      context = 0;
++	      subprog = e->subprog;
++	      out_opcode (DW_LNS_set_subprogram);
++	      out_uleb128 (subprog);
++	    }
++	  else if (context != e->context || subprog != e->subprog)
++	    {
++	      context_delta = e->context - (logical - 1);
++	      context = e->context;
++	      subprog = e->subprog;
++	      out_opcode (DW_LNS_inlined_call);
++	      out_leb128 (context_delta);
++	      out_uleb128 (subprog);
++	    }
++	}
++
++      if (filenum != e->loc.filenum)
++	{
++	  filenum = e->loc.filenum;
++	  out_opcode (DW_LNS_set_file);
++	  out_uleb128 (filenum);
++	}
++
++      if (column != e->loc.column)
++	{
++	  column = e->loc.column;
++	  out_opcode (DW_LNS_set_column);
++	  out_uleb128 (column);
++	}
++
++      if (e->loc.discriminator != discriminator)
++	{
++	  out_opcode (DW_LNS_extended_op);
++	  out_leb128 (1 + sizeof_leb128 (e->loc.discriminator, 0));
++	  out_opcode (DW_LNE_set_discriminator);
++	  out_uleb128 (e->loc.discriminator);
++	}
++
++      if ((e->loc.flags ^ flags) & DWARF2_FLAG_IS_STMT)
++	{
++	  flags = e->loc.flags;
++	  out_opcode (DW_LNS_negate_stmt);
++	}
++
++      if (e->loc.flags & DWARF2_FLAG_PROLOGUE_END)
++	out_opcode (DW_LNS_set_prologue_end);
++
++      if (e->loc.flags & DWARF2_FLAG_EPILOGUE_BEGIN)
++	out_opcode (DW_LNS_set_epilogue_begin);
++
++      line_delta = e->loc.line - line;
++      if (e->label == NULL)
++	{
++	  out_inc_line_addr (line_delta, 0);
++	}
++      else
++	{
++	  lab = e->label;
++	  frag = symbol_get_frag (lab);
++	  frag_ofs = S_GET_VALUE (lab);
++
++	  if (last_frag == NULL || e->seg != last_seg)
++	    {
++	      out_set_addr (lab);
++	      out_inc_line_addr (line_delta, 0);
++	    }
++	  else if (frag == last_frag && ! DWARF2_USE_FIXED_ADVANCE_PC)
++	    out_inc_line_addr (line_delta, frag_ofs - last_frag_ofs);
++	  else
++	    relax_inc_line_addr (line_delta, lab, last_lab);
++
++	  line = e->loc.line;
++	  last_seg = e->seg;
++	  last_lab = lab;
++	  last_frag = frag;
++	  last_frag_ofs = frag_ofs;
++	}
++    }
++}
++
+ /* Generate .debug_line content for the chain of line number entries
+    beginning at E, for segment SEG.  */
+ 
+@@ -1891,27 +2280,30 @@ process_entries (segT seg, struct line_entry *e)
+     {
+       int line_delta;
+ 
+-      if (filenum != e->loc.filenum)
+-	{
+-	  filenum = e->loc.filenum;
+-	  out_opcode (DW_LNS_set_file);
+-	  out_uleb128 (filenum);
+-	}
++      if (logicals_in_use == 0)
++        {
++	  if (filenum != e->loc.filenum)
++	    {
++	      filenum = e->loc.filenum;
++	      out_opcode (DW_LNS_set_file);
++	      out_uleb128 (filenum);
++	    }
+ 
+-      if (column != e->loc.column)
+-	{
+-	  column = e->loc.column;
+-	  out_opcode (DW_LNS_set_column);
+-	  out_uleb128 (column);
+-	}
++	  if (column != e->loc.column)
++	    {
++	      column = e->loc.column;
++	      out_opcode (DW_LNS_set_column);
++	      out_uleb128 (column);
++	    }
+ 
+-      if (e->loc.discriminator != 0)
+-	{
+-	  out_opcode (DW_LNS_extended_op);
+-	  out_leb128 (1 + sizeof_leb128 (e->loc.discriminator, 0));
+-	  out_opcode (DW_LNE_set_discriminator);
+-	  out_uleb128 (e->loc.discriminator);
+-	}
++	  if (e->loc.discriminator != 0)
++	    {
++	      out_opcode (DW_LNS_extended_op);
++	      out_leb128 (1 + sizeof_leb128 (e->loc.discriminator, 0));
++	      out_opcode (DW_LNE_set_discriminator);
++	      out_uleb128 (e->loc.discriminator);
++	    }
++        }
+ 
+       if (isa != e->loc.isa)
+ 	{
+@@ -1920,26 +2312,32 @@ process_entries (segT seg, struct line_entry *e)
+ 	  out_uleb128 (isa);
+ 	}
+ 
+-      if ((e->loc.flags ^ flags) & DWARF2_FLAG_IS_STMT)
+-	{
+-	  flags = e->loc.flags;
+-	  out_opcode (DW_LNS_negate_stmt);
+-	}
+-
+       if (e->loc.flags & DWARF2_FLAG_BASIC_BLOCK)
+ 	out_opcode (DW_LNS_set_basic_block);
+ 
+-      if (e->loc.flags & DWARF2_FLAG_PROLOGUE_END)
+-	out_opcode (DW_LNS_set_prologue_end);
++      if (logicals_in_use == 0)
++        {
++	  if ((e->loc.flags ^ flags) & DWARF2_FLAG_IS_STMT)
++	    {
++	      flags = e->loc.flags;
++	      out_opcode (DW_LNS_negate_stmt);
++	    }
+ 
+-      if (e->loc.flags & DWARF2_FLAG_EPILOGUE_BEGIN)
+-	out_opcode (DW_LNS_set_epilogue_begin);
++	  if (e->loc.flags & DWARF2_FLAG_PROLOGUE_END)
++	    out_opcode (DW_LNS_set_prologue_end);
++
++	  if (e->loc.flags & DWARF2_FLAG_EPILOGUE_BEGIN)
++	    out_opcode (DW_LNS_set_epilogue_begin);
++        }
+ 
+       /* Don't try to optimize away redundant entries; gdb wants two
+ 	 entries for a function where the code starts on the same line as
+ 	 the {, and there's no way to identify that case here.  Trust gcc
+ 	 to optimize appropriately.  */
+-      line_delta = e->loc.line - line;
++      if (logicals_in_use == 0)
++	line_delta = e->loc.line - line;
++      else
++	line_delta = e->loc.logical - line;
+       lab = e->label;
+       frag = symbol_get_frag (lab);
+       frag_ofs = S_GET_VALUE (lab);
+@@ -1958,15 +2356,26 @@ process_entries (segT seg, struct line_entry *e)
+ 		     && ((offsetT)last_frag_ofs
+ 			 >= get_frag_fix (last_frag, seg))))))
+ 	{
+-	  out_set_addr (lab);
+-	  out_inc_line_addr (line_delta, 0);
++	  if (logicals_in_use > 0 && logicals[e->loc.logical - 1].label == lab)
++	    {
++	      out_set_addr_from_logical (line_delta);
++	      out_opcode (DW_LNS_copy);
++	    }
++	  else
++	    {
++	      out_set_addr (lab);
++	      out_inc_line_addr (line_delta, 0);
++	    }
+ 	}
+       else if (frag == last_frag && ! DWARF2_USE_FIXED_ADVANCE_PC)
+ 	out_inc_line_addr (line_delta, frag_ofs - last_frag_ofs);
+       else
+ 	relax_inc_line_addr (line_delta, lab, last_lab);
+ 
+-      line = e->loc.line;
++      if (logicals_in_use == 0)
++	line = e->loc.line;
++      else
++	line = e->loc.logical;
+       last_lab = lab;
+       last_frag = frag;
+       last_frag_ofs = frag_ofs;
+@@ -2232,6 +2641,160 @@ out_dir_and_file_list (segT line_seg, int sizeof_offset)
+     out_byte (0);
+ }
+ 
++/* Add a string to the string table.  */
++
++static offsetT
++add_to_string_table (struct string_table *strtab, const char *str)
++{
++  const char *key;
++  offsetT val;
++
++  if (strtab->strings_allocated == 0)
++    {
++      strtab->strings_allocated = 4;
++      strtab->strings = (const char **)
++	  xcalloc (strtab->strings_allocated, sizeof(char *));
++      strtab->hashtab = hash_new ();
++    }
++
++  val = (offsetT) hash_find (strtab->hashtab, str);
++  if (val != 0)
++    return val;
++
++  if (strtab->strings_in_use >= strtab->strings_allocated)
++    {
++      unsigned int old = strtab->strings_allocated;
++
++      strtab->strings_allocated *= 2;
++      strtab->strings = (const char **)
++	  xrealloc (strtab->strings,
++		    strtab->strings_allocated * sizeof (char *));
++      memset (strtab->strings + old, 0,
++	      (strtab->strings_allocated - old) * sizeof (char *));
++    }
++
++  key = xstrdup (str);
++  val = strtab->next_offset;
++  hash_insert (strtab->hashtab, key, (void *) val);
++  strtab->strings[strtab->strings_in_use++] = key;
++  strtab->next_offset += strlen(key) + 1;
++  return val;
++}
++
++/* Output the string table STRTAB to the section STR_SEG.
++   In a debug string table, the first byte is always '\0',
++   and valid indexes begin at 1.  */
++
++static void
++out_string_table (segT str_seg, struct string_table *strtab)
++{
++  unsigned int i;
++  size_t size;
++  char *cp;
++
++  subseg_set (str_seg, 0);
++  out_byte (0);
++  for (i = 0; i < strtab->strings_in_use; i++)
++    {
++      size = strlen (strtab->strings[i]) + 1;
++      cp = frag_more (size);
++      memcpy (cp, strtab->strings[i], size);
++    }
++}
++
++static void
++out_dwarf5_file_list (segT str_seg, int sizeof_offset)
++{
++  const char *dir;
++  offsetT strp;
++  unsigned int i;
++  expressionS exp;
++  unsigned int dir_count = dirs_in_use > 0 ? dirs_in_use - 1 : 0;
++  unsigned int file_count = files_in_use > 0 ? files_in_use - 1 : 0;
++
++  exp.X_op = O_symbol;
++  exp.X_add_symbol = section_symbol (str_seg);
++
++  out_byte (1);                    /* directory_entry_format_count */
++  out_uleb128 (DW_LNCT_path);      /* directory_entry_format[0].content_type */
++  out_uleb128 (DW_FORM_line_strp); /* directory_entry_format[0].form */
++  out_uleb128 (dir_count);         /* directories_count */
++
++  /* Emit directories list.  */
++  for (i = 1; i < dirs_in_use; ++i)
++    {
++      dir = remap_debug_filename (dirs[i]);
++      strp = add_to_string_table (&debug_line_str_table, dir);
++      exp.X_add_number = strp;
++      emit_expr (&exp, sizeof_offset);
++    }
++
++  out_byte (2);                          /* file_name_entry_format_count */
++  out_uleb128 (DW_LNCT_path);            /* file_name_entry_format[0].type */
++  out_uleb128 (DW_FORM_line_strp);       /* file_name_entry_format[0].form */
++  out_uleb128 (DW_LNCT_directory_index); /* file_name_entry_format[0].type */
++  out_uleb128 (DW_FORM_udata);           /* file_name_entry_format[0].form */
++  out_uleb128 (file_count);              /* file_names_count */
++
++  /* Emit file_names list.  */
++  for (i = 1; i < files_in_use; ++i)
++    {
++      const char *fullfilename;
++
++      if (files[i].filename == NULL)
++	{
++	  as_bad (_("unassigned file number %ld"), (long) i);
++	  /* Prevent a crash later, particularly for file 1.  */
++	  files[i].filename = "";
++	}
++
++      fullfilename = DWARF2_FILE_NAME (files[i].filename,
++				       files[i].dir ? dirs [files [i].dir] : "");
++      strp = add_to_string_table (&debug_line_str_table, fullfilename);
++      exp.X_add_number = strp;
++      emit_expr (&exp, sizeof_offset);
++      out_uleb128 (files[i].dir);	/* directory number */
++    }
++}
++
++static void
++out_subprog_list (segT str_seg, int sizeof_offset)
++{
++  const char *name;
++  offsetT strp;
++  unsigned int i;
++  expressionS exp;
++
++  exp.X_op = O_symbol;
++  exp.X_add_symbol = section_symbol (str_seg);
++
++  out_byte (3);                          /* subprogram_entry_format_count */
++  out_uleb128 (DW_LNCT_subprogram_name); /* subprogram_entry_format[0].type */
++  out_uleb128 (DW_FORM_line_strp);       /* subprogram_entry_format[0].form */
++  out_uleb128 (DW_LNCT_decl_file);       /* subprogram_entry_format[1].type */
++  out_uleb128 (DW_FORM_udata);           /* subprogram_entry_format[1].form */
++  out_uleb128 (DW_LNCT_decl_line);       /* subprogram_entry_format[2].type */
++  out_uleb128 (DW_FORM_udata);           /* subprogram_entry_format[2].form */
++  out_uleb128 (subprogs_in_use);         /* subprograms_count */
++
++  /* Emit subprograms list.  */
++  for (i = 0; i < subprogs_in_use; ++i)
++    {
++      name = subprogs[i].subpname;
++      if (name == NULL)
++	{
++	  as_bad (_("unassigned subprogram number %ld"), (long) i);
++	  strp = 0;
++	}
++      else
++	strp = add_to_string_table (&debug_line_str_table, name);
++      exp.X_add_number = strp;
++      emit_expr (&exp, sizeof_offset);
++      out_uleb128 (subprogs[i].filenum);
++      out_uleb128 (subprogs[i].line);
++    }
++}
++
+ /* Switch to SEC and output a header length field.  Return the size of
+    offsets used in SEC.  The caller must set EXPR->X_add_symbol value
+    to the end of the section.  EXPR->X_add_number will be set to the
+@@ -2291,22 +2854,38 @@ out_header (asection *sec, expressionS *exp)
+ /* Emit the collected .debug_line data.  */
+ 
+ static void
+-out_debug_line (segT line_seg)
++out_debug_line (segT line_seg, segT str_seg)
+ {
+   expressionS exp;
+-  symbolS *prologue_start, *prologue_end;
++  symbolS *prologue_start, *prologue_end, *logicals_start, *actuals_start;
+   symbolS *line_end;
+   struct line_seg *s;
+   int sizeof_offset;
++  unsigned int version;
++
++  if (logicals_in_use == 0)
++    {
++      version = DWARF2_LINE_VERSION;
++      opcode_base = DWARF2_LINE_OPCODE_BASE;
++      line_base = DWARF2_LINE_BASE;
++      line_range = DWARF2_LINE_RANGE;
++    }
++  else
++    {
++      version = DWARF2_LINE_EXPERIMENTAL_VERSION;
++      opcode_base = DWARF5_EXPERIMENTAL_LINE_OPCODE_BASE;
++      line_base = DWARF5_EXPERIMENTAL_LINE_BASE;
++      line_range = DWARF5_EXPERIMENTAL_LINE_RANGE;
++    }
+ 
+   memset (&exp, 0, sizeof exp);
+   sizeof_offset = out_header (line_seg, &exp);
+   line_end = exp.X_add_symbol;
+ 
+   /* Version.  */
+-  out_two (DWARF2_LINE_VERSION);
++  out_two (version);
+ 
+-  if (DWARF2_LINE_VERSION >= 5)
++  if (version >= 5)
+     {
+       out_byte (sizeof_address);
+       out_byte (0); /* Segment Selector size.  */
+@@ -2323,12 +2902,12 @@ out_debug_line (segT line_seg)
+ 
+   /* Parameters of the state machine.  */
+   out_byte (DWARF2_LINE_MIN_INSN_LENGTH);
+-  if (DWARF2_LINE_VERSION >= 4)
++  if (version >= 4)
+     out_byte (DWARF2_LINE_MAX_OPS_PER_INSN);
+   out_byte (DWARF2_LINE_DEFAULT_IS_STMT);
+-  out_byte (DWARF2_LINE_BASE);
+-  out_byte (DWARF2_LINE_RANGE);
+-  out_byte (DWARF2_LINE_OPCODE_BASE);
++  out_byte (line_base);
++  out_byte (line_range);
++  out_byte (opcode_base);
+ 
+   /* Standard opcode lengths.  */
+   out_byte (0);			/* DW_LNS_copy */
+@@ -2345,11 +2924,64 @@ out_debug_line (segT line_seg)
+   out_byte (1);			/* DW_LNS_set_isa */
+   /* We have emitted 12 opcode lengths, so make that this
+      matches up to the opcode base value we have been using.  */
+-  gas_assert (DWARF2_LINE_OPCODE_BASE == 13);
++  gas_assert (opcode_base == 13);
++  if (opcode_base == DWARF5_EXPERIMENTAL_LINE_OPCODE_BASE)
++    {
++      out_byte (1);		/* DW_LNS_set_subprogram/DW_LNS_set_address_from_logical */
++      out_byte (2);		/* DW_LNS_inlined_call */
++      out_byte (0);		/* DW_LNS_pop_context */
++    }
++
++  if (version == DWARF2_LINE_EXPERIMENTAL_VERSION)
++    {
++      /* Fake empty version 4 directory and filename lists, to fool
++         old consumers who don't check the version number.  */
++      out_byte (0);
++      out_byte (0);
++
++      symbol_set_value_now (prologue_end);
++
++      /* Now wrap the remainder of the section inside a fake
++         extended opcode, so old consumers will see just the single
++         extended opcode, and will not try to read anything else.
++         For simplicity, we simply output a very large number for
++         the size of the extended op. */
++      out_opcode (DW_LNS_extended_op);
++      out_byte (255);  /* 3-byte LEB128 for 0x1fffff.  */
++      out_byte (255);
++      out_byte (127);
++      out_byte (127);  /* Fake extended opcode.  */
+ 
+-  out_dir_and_file_list (line_seg, sizeof_offset);
++      /* Logicals table offset.  */
++      logicals_start = symbol_temp_make ();
++      exp.X_add_symbol = logicals_start;
++      emit_expr (&exp, sizeof_offset);
+ 
+-  symbol_set_value_now (prologue_end);
++      /* Actuals table offset.  */
++      actuals_start = symbol_temp_make ();
++      exp.X_add_symbol = actuals_start;
++      emit_expr (&exp, sizeof_offset);
++
++      /* Directory and filename lists. */
++      out_dwarf5_file_list (str_seg, sizeof_offset);
++
++      /* Subprogram list. */
++      out_subprog_list (str_seg, sizeof_offset);
++
++      symbol_set_value_now (logicals_start);
++      emit_logicals ();
++      symbol_set_value_now (actuals_start);
++    }
++  else if (version >= 5)
++    {
++      out_dwarf5_file_list (str_seg, sizeof_offset);
++      symbol_set_value_now (prologue_end);
++    }
++  else
++    {
++      out_dir_and_file_list (line_seg, sizeof_offset);
++      symbol_set_value_now (prologue_end);
++    }
+ 
+   /* For each section, emit a statement program.  */
+   for (s = all_segs; s; s = s->next)
+@@ -2768,11 +3400,13 @@ dwarf2_finish (void)
+   segT line_seg;
+   struct line_seg *s;
+   segT info_seg;
++  segT str_seg = NULL;
+   int emit_other_sections = 0;
+   int empty_debug_line = 0;
+ 
+   info_seg = bfd_get_section_by_name (stdoutput, ".debug_info");
+-  emit_other_sections = info_seg == NULL || !seg_not_empty_p (info_seg);
++  emit_other_sections = ((info_seg == NULL || !seg_not_empty_p (info_seg))
++			 && logicals_in_use == 0);
+ 
+   line_seg = bfd_get_section_by_name (stdoutput, ".debug_line");
+   empty_debug_line = line_seg == NULL || !seg_not_empty_p (line_seg);
+@@ -2826,8 +3460,24 @@ dwarf2_finish (void)
+ 	}
+     }
+ 
++  if (logicals_in_use > 0)
++    {
++      str_seg = subseg_new (".debug_line_str", 0);
++      bfd_set_section_flags (str_seg,
++			     (SEC_READONLY | SEC_DEBUGGING
++			      | SEC_MERGE | SEC_STRINGS));
++      str_seg->entsize = 1;
++      debug_line_str_table.strings = NULL;
++      debug_line_str_table.strings_in_use = 0;
++      debug_line_str_table.strings_allocated = 0;
++      debug_line_str_table.next_offset = 1;
++    }
++
+   if (empty_debug_line)
+-    out_debug_line (line_seg);
++    out_debug_line (line_seg, str_seg);
++
++  if (str_seg != NULL)
++    out_string_table (str_seg, &debug_line_str_table);
+ 
+   /* If this is assembler generated line info, and there is no
+      debug_info already, we need .debug_info, .debug_abbrev and
+@@ -2836,7 +3486,6 @@ dwarf2_finish (void)
+     {
+       segT abbrev_seg;
+       segT aranges_seg;
+-      segT str_seg;
+       symbolS *name_sym, *comp_dir_sym, *producer_sym, *ranges_sym;
+ 
+       gas_assert (all_segs);
+diff --git a/gas/dwarf2dbg.h b/gas/dwarf2dbg.h
+index c5ff24a2622..bf022c1ff4d 100644
+--- a/gas/dwarf2dbg.h
++++ b/gas/dwarf2dbg.h
+@@ -37,6 +37,7 @@ struct dwarf2_line_info
+   unsigned int flags;
+   unsigned int discriminator;
+   symbolS *view;
++  unsigned int logical;
+ };
+ 
+ /* Implements the .file FILENO "FILENAME" directive.  FILENO can be 0
+@@ -46,13 +47,29 @@ struct dwarf2_line_info
+ extern void   dwarf2_directive_file (int);
+ extern char * dwarf2_directive_filename (void);
+ 
++/* Experimental DWARF-5 extension:
++   Implements the .subprog SUBPNO ["SUBPROG" [FILENO LINENO]] directive.
++   FILENO is the file number, LINENO the line number and the
++   (optional) COLUMN the column of the source code that the following
++   instruction corresponds to.  FILENO can be 0 to indicate that the
++   filename specified by the textually most recent .file directive
++   should be used.  */
++extern void dwarf2_directive_subprog (int dummy);
++
+ /* Implements the .loc FILENO LINENO [COLUMN] directive.  FILENO is
+    the file number, LINENO the line number and the (optional) COLUMN
+    the column of the source code that the following instruction
+    corresponds to.  FILENO can be 0 to indicate that the filename
+    specified by the textually most recent .file directive should be
+    used.  */
+-extern void dwarf2_directive_loc (int);
++/* Experimental DWARF-5 extension:
++   If IS_LLOC is true, implements the .lloc LOGICAL [FILENO LINENO [COLUMN]]
++   directive. FILENO is the file number, LINENO the line number and the
++   (optional) COLUMN the column of the source code that the following
++   instruction corresponds to.  FILENO can be 0 to indicate that the
++   filename specified by the textually most recent .file directive
++   should be used.  */
++extern void dwarf2_directive_loc (int is_lloc);
+ 
+ /* Implements the .loc_mark_labels {0,1} directive.  */
+ extern void dwarf2_directive_loc_mark_labels (int);
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0004-readelf-add-support-for-DWARF-5-and-experimental-two.patch b/sys-devel/binutils/files/0004-readelf-add-support-for-DWARF-5-and-experimental-two.patch
new file mode 100644
index 0000000..aff15a4
--- /dev/null
+++ b/sys-devel/binutils/files/0004-readelf-add-support-for-DWARF-5-and-experimental-two.patch
@@ -0,0 +1,1245 @@
+From 58c1565328927ed2b6966d695e8bc377b584cd5d Mon Sep 17 00:00:00 2001
+From: Cary Coutant <ccoutant@google.com>
+Date: Tue, 6 Jan 2015 16:56:43 -0800
+Subject: [PATCH 04/14] readelf: add support for DWARF-5 and experimental
+ two-level line number tables.
+
+This change is forward-port of commit d80608344a0908445af29b6db5266394c0376076
+  - https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=d80608344a0908445af29b6db5266394c0376076
+from upstream branch users/ccoutant/two-level-line-150331
+  - https://sourceware.org/git/?p=binutils-gdb.git;a=shortlog;h=refs/heads/users/ccoutant/two-level-line-150331
+to binutils-2_27-branch.
+
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+[TODO: make more use of the upstream implementation to slim our diff further]
+
+Change-Id: I26158b22c6a6652154b317db1ecf6d5c27d29337
+---
+ binutils/dwarf.c   | 992 +++++++++++++++++++++++++++------------------
+ binutils/readelf.c |   1 +
+ 2 files changed, 595 insertions(+), 398 deletions(-)
+
+diff --git a/binutils/dwarf.c b/binutils/dwarf.c
+index 91b61e3fdfe..eb59da29eaf 100644
+--- a/binutils/dwarf.c
++++ b/binutils/dwarf.c
+@@ -478,6 +478,9 @@ typedef struct State_Machine_Registers
+   unsigned int file;
+   unsigned int line;
+   unsigned int column;
++  unsigned int discriminator;
++  unsigned int context;
++  unsigned int subprogram;
+   int is_stmt;
+   int basic_block;
+   unsigned char op_index;
+@@ -498,19 +501,65 @@ reset_state_machine (int is_stmt)
+   state_machine_regs.file = 1;
+   state_machine_regs.line = 1;
+   state_machine_regs.column = 0;
++  state_machine_regs.discriminator = 0;
++  state_machine_regs.context = 0;
++  state_machine_regs.subprogram = 0;
+   state_machine_regs.is_stmt = is_stmt;
+   state_machine_regs.basic_block = 0;
+   state_machine_regs.end_sequence = 0;
+   state_machine_regs.last_file_entry = 0;
+ }
+ 
++/* Build a logicals table for reference when reading the actuals table.  */
++
++static SMR *logicals_table = NULL;
++static unsigned int logicals_allocated = 0;
++static unsigned int logicals_count = 0;
++
++static void
++free_logicals (void)
++{
++  free (logicals_table);
++  logicals_allocated = 0;
++  logicals_count = 0;
++  logicals_table = NULL;
++}
++
++static void
++append_logical (void)
++{
++  if (logicals_allocated == 0)
++    {
++      logicals_allocated = 4;
++      logicals_table = (SMR *) xmalloc (logicals_allocated * sizeof (SMR));
++    }
++  if (logicals_count >= logicals_allocated)
++    {
++      logicals_allocated *= 2;
++      logicals_table = (SMR *)
++	  xrealloc (logicals_table, logicals_allocated * sizeof (SMR));
++    }
++  logicals_table[logicals_count++] = state_machine_regs;
++  printf (_("\t\tLogical %u: 0x%s[%u] file %u line %u discrim %u context %u subprog %u is_stmt %d\n"),
++	  logicals_count,
++	  dwarf_vmatoa ("x", state_machine_regs.address),
++	  state_machine_regs.op_index,
++	  state_machine_regs.file,
++	  state_machine_regs.line,
++	  state_machine_regs.discriminator,
++	  state_machine_regs.context,
++	  state_machine_regs.subprogram,
++	  state_machine_regs.is_stmt);
++}
++
+ /* Handled an extend line op.
+    Returns the number of bytes read.  */
+ 
+ static size_t
+ process_extended_line_op (unsigned char * data,
+ 			  int is_stmt,
+-			  unsigned char * end)
++			  unsigned char * end,
++			  int is_logical)
+ {
+   unsigned char op_code;
+   size_t len, header_len;
+@@ -535,6 +584,8 @@ process_extended_line_op (unsigned char * data,
+     {
+     case DW_LNE_end_sequence:
+       printf (_("End of Sequence\n\n"));
++      if (is_logical)
++	append_logical ();
+       reset_state_machine (is_stmt);
+       break;
+ 
+@@ -579,8 +630,11 @@ process_extended_line_op (unsigned char * data,
+       break;
+ 
+     case DW_LNE_set_discriminator:
+-      READ_ULEB (val, data, end);
+-      printf (_("set Discriminator to %s\n"), dwarf_vmatoa ("u", val));
++      {
++	READ_ULEB (val, data, end);
++	printf (_("set Discriminator to %s\n"), dwarf_vmatoa ("u", val));
++	state_machine_regs.discriminator = val;
++      }
+       break;
+ 
+     /* HP extensions.  */
+@@ -798,8 +852,7 @@ fetch_indexed_string (dwarf_vma idx, struct cu_tu_set *this_set,
+       
+   if (this_set != NULL)
+     index_offset += this_set->section_offsets [DW_SECT_STR_OFFSETS];
+-
+-  if (index_offset >= length)
++  if (index_offset + offset_size >= length)
+     {
+       warn (_("DW_FORM_GNU_str_index offset too big: %s vs %s\n"),
+ 	    dwarf_vmatoa ("x", index_offset),
+@@ -4010,6 +4063,10 @@ load_debug_info (void * file)
+   return 0;
+ }
+ 
++/* Experimental DWARF 5 extensions.
++   See http://wiki.dwarfstd.org/index.php?title=TwoLevelLineTables.  */
++#define DWARF2_LINE_EXPERIMENTAL_VERSION 0xf006
++
+ /* Read a DWARF .debug_line section header starting at DATA.
+    Upon success returns an updated DATA pointer and the LINFO
+    structure and the END_OF_SEQUENCE pointer will be filled in.
+@@ -4020,7 +4077,9 @@ read_debug_line_header (struct dwarf_section * section,
+ 			unsigned char * data,
+ 			unsigned char * end,
+ 			DWARF2_Internal_LineInfo * linfo,
+-			unsigned char ** end_of_sequence)
++			unsigned char ** end_of_sequence,
++			unsigned int * pinitial_length_size,
++			unsigned int * poffset_size)
+ {
+   unsigned char *hdrptr;
+   unsigned int initial_length_size;
+@@ -4044,6 +4103,8 @@ read_debug_line_header (struct dwarf_section * section,
+       linfo->li_offset_size = 4;
+       initial_length_size = 4;
+     }
++  *pinitial_length_size = initial_length_size;
++  *poffset_size = linfo->li_offset_size;
+ 
+   if (linfo->li_length + initial_length_size > section->size)
+     {
+@@ -4068,17 +4129,25 @@ read_debug_line_header (struct dwarf_section * section,
+   /* Get and check the version number.  */
+   SAFE_BYTE_GET_AND_INC (linfo->li_version, hdrptr, 2, end);
+ 
++  /* Version 0xf006 is for experimental two-level line tables.  */
+   if (linfo->li_version != 2
+       && linfo->li_version != 3
+       && linfo->li_version != 4
+-      && linfo->li_version != 5)
++      && linfo->li_version != 5
++      && linfo->li_version != DWARF2_LINE_EXPERIMENTAL_VERSION)
+     {
+       warn (_("Only DWARF version 2, 3, 4 and 5 line info "
+ 	      "is currently supported.\n"));
+       return NULL;
+     }
+ 
+-  if (linfo->li_version >= 5)
++  if (linfo->li_version < 5)
++    {
++      linfo->li_address_size = 0;
++      linfo->li_segment_size = 0;
++    }
++  else if (linfo->li_version >= 5 &&
++	   linfo->li_version != DWARF2_LINE_EXPERIMENTAL_VERSION)
+     {
+       SAFE_BYTE_GET_AND_INC (linfo->li_address_size, hdrptr, 1, end);
+ 
+@@ -4127,131 +4196,448 @@ read_debug_line_header (struct dwarf_section * section,
+   return hdrptr;
+ }
+ 
+-static unsigned char *
+-display_formatted_table (unsigned char *                   data,
+-			 unsigned char *                   start,
+-			 unsigned char *                   end,
+-			 const DWARF2_Internal_LineInfo *  linfo,
+-			 struct dwarf_section *            section,
+-			 bfd_boolean                       is_dir)
+-{
+-  unsigned char *format_start, format_count, *format, formati;
+-  dwarf_vma data_count, datai;
+-  unsigned int namepass, last_entry = 0;
+-  const char * table_name = is_dir ? N_("Directory Table") : N_("File Name Table");
+-  
+-  SAFE_BYTE_GET_AND_INC (format_count, data, 1, end);
+-  if (do_checks && format_count > 5)
+-    warn (_("Unexpectedly large number of columns in the %s (%u)\n"),
+-	  table_name, format_count);
++static void
++display_directory_table_v4 (unsigned char *start, unsigned char *end,
++			    unsigned char **pdata)
++{
++  unsigned char *data = *pdata;
++  unsigned int last_dir_entry = 0;
+ 
+-  format_start = data;
+-  for (formati = 0; formati < format_count; formati++)
++  if (*data == 0)
++    printf (_("\n The Directory Table is empty.\n"));
++  else
+     {
+-      SKIP_ULEB (data, end);
+-      SKIP_ULEB (data, end);
+-      if (data == end)
++      printf (_("\n The Directory Table (offset 0x%lx):\n"),
++	      (long)(data - start));
++
++      while (data < end && *data != 0)
+ 	{
+-	  warn (_("%s: Corrupt format description entry\n"), table_name);
+-	  return data;
++	  printf ("  %d\t%.*s\n", ++last_dir_entry, (int) (end - data), data);
++
++	  data += strnlen ((char *) data, end - data) + 1;
+ 	}
+     }
+ 
+-  READ_ULEB (data_count, data, end);
+-  if (data_count == 0)
++  /* Skip the NUL at the end of the table.  */
++  *pdata = data + 1;
++}
++
++static void
++display_file_name_table_v4 (unsigned char *start, unsigned char *end,
++			    unsigned char **pdata)
++{
++  unsigned char *data = *pdata;
++
++  if (*data == 0)
++    printf (_("\n The File Name Table is empty.\n"));
++  else
+     {
+-      printf (_("\n The %s is empty.\n"), table_name);
+-      return data;
++      printf (_("\n The File Name Table (offset 0x%lx):\n"),
++	      (long)(data - start));
++      printf (_("  Entry\tDir\tTime\tSize\tName\n"));
++
++      while (data < end && *data != 0)
++	{
++	  unsigned char *name;
++	  dwarf_vma uladv;
++
++	  printf ("  %d\t", ++state_machine_regs.last_file_entry);
++	  name = data;
++	  data += strnlen ((char *) data, end - data) + 1;
++
++	  READ_ULEB (uladv, data, end);
++	  printf ("%s\t", dwarf_vmatoa ("u", uladv));
++	  READ_ULEB (uladv, data, end);
++	  printf ("%s\t", dwarf_vmatoa ("u", uladv));
++	  READ_ULEB (uladv, data, end);
++	  printf ("%s\t", dwarf_vmatoa ("u", uladv));
++	  printf ("%.*s\n", (int)(end - name), name);
++
++	  if (data == end)
++	    {
++	      warn (_("Corrupt file name table entry\n"));
++	      break;
++	    }
++	}
+     }
+-  else if (data == end)
++
++  /* Skip the NUL at the end of the table.  */
++  *pdata = data + 1;
++}
++
++static int
++display_dir_file_table_v5 (unsigned char *start, unsigned char *end,
++			   unsigned char **pdata, char *table_name,
++			   unsigned int offset_size)
++{
++  unsigned char *data = *pdata;
++  unsigned int format_count;
++  unsigned int *content_types;
++  unsigned int *content_forms;
++  unsigned int entry_count;
++  unsigned int i, j;
++  const unsigned char *name;
++  dwarf_vma offset;
++  unsigned int val;
++
++  READ_ULEB (format_count, data, end);
++  content_types = (unsigned int *) xmalloc (format_count *
++					    sizeof (unsigned int));
++  content_forms = (unsigned int *) xmalloc (format_count *
++					    sizeof (unsigned int));
++  for (j = 0; j < format_count; j++)
++    {
++      READ_ULEB (content_types[j], data, end);
++      READ_ULEB (content_forms[j], data, end);
++    }
++
++  READ_ULEB (entry_count, data, end);
++
++  if (entry_count == 0)
++    printf (_("\n The %s Table is empty.\n"), table_name);
++  else
+     {
+-      warn (_("%s: Corrupt entry count - expected %s but none found\n"),
+-	    table_name, dwarf_vmatoa ("x", data_count));
+-      return data;
++      printf (_("\n The %s Table (offset 0x%lx):\n"),
++	      table_name, (long)(data - start));
++
++      printf (_("  Entry"));
++      for (j = 0; j < format_count; j++)
++	{
++	  printf ("\t");
++	  switch (content_types[j])
++	    {
++	    case DW_LNCT_path:
++	      printf (_("Path"));
++	      break;
++	    case DW_LNCT_subprogram_name:
++	      printf (_("Name"));
++	      break;
++	    case DW_LNCT_directory_index:
++	      printf (_("Dir"));
++	      break;
++	    case DW_LNCT_decl_file:
++	      printf (_("File"));
++	      break;
++	    case DW_LNCT_decl_line:
++	      printf (_("Line"));
++	      break;
++	    }
++	}
++      printf ("\n");
+     }
+ 
+-  else if (format_count == 0)
++  for (i = 0; i < entry_count; i++)
+     {
+-      warn (_("%s: format count is zero, but the table is not empty\n"),
+-	    table_name);
+-      return end;
++      printf ("  %d", i + 1);
++      for (j = 0; j < format_count; j++)
++	{
++	  if (data >= end)
++	    break;
++	  switch (content_forms[j])
++	    {
++	    case DW_FORM_string:
++	      printf ("\t%.*s", (int) (end - data), data);
++	      data += strnlen ((char *) data, end - data) + 1;
++	      break;
++	    case DW_FORM_line_strp:
++	      SAFE_BYTE_GET_AND_INC (offset, data, offset_size, end);
++	      name = fetch_indirect_line_string (offset);
++	      printf ("\t%s", name);
++	      break;
++	    case DW_FORM_udata:
++	      READ_ULEB (val, data, end);
++	      printf ("\t%u", val);
++	      break;
++	    default:
++	      printf ("\t%s", _("(unrecognized FORM code)"));
++	      data = end;
++	      break;
++	    }
++	}
++      printf ("\n");
++
++      /* PR 17512: file: 002-132094-0.004.  */
++      if (data >= end - 1)
++	break;
+     }
+ 
+-  printf (_("\n The %s (offset 0x%lx, lines %s, columns %u):\n"),
+-	  table_name, (long) (data - start), dwarf_vmatoa ("u", data_count),
+-	  format_count);
++  free (content_types);
++  free (content_forms);
+ 
+-  printf (_("  Entry"));
+-  /* Delay displaying name as the last entry for better screen layout.  */ 
+-  for (namepass = 0; namepass < 2; namepass++)
+-    {
+-      format = format_start;
+-      for (formati = 0; formati < format_count; formati++)
+-	{
+-	  dwarf_vma content_type;
++  *pdata = data;
++  return entry_count;
++}
+ 
+-	  READ_ULEB (content_type, format, end);
+-	  if ((content_type == DW_LNCT_path) == (namepass == 1))
+-	    switch (content_type)
+-	      {
+-	      case DW_LNCT_path:
+-		printf (_("\tName"));
+-		break;
+-	      case DW_LNCT_directory_index:
+-		printf (_("\tDir"));
+-		break;
+-	      case DW_LNCT_timestamp:
+-		printf (_("\tTime"));
+-		break;
+-	      case DW_LNCT_size:
+-		printf (_("\tSize"));
+-		break;
+-	      case DW_LNCT_MD5:
+-		printf (_("\tMD5\t\t\t"));
+-		break;
+-	      default:
+-		printf (_("\t(Unknown format content type %s)"),
+-			dwarf_vmatoa ("u", content_type));
+-	      }
+-	  SKIP_ULEB (format, end);
+-	}
++static void
++display_line_program (unsigned char *start, unsigned char *end,
++		      unsigned char **pdata, char *table_name,
++		      DWARF2_Internal_LineInfo *linfo,
++		      unsigned char *standard_opcodes,
++		      int is_logical)
++{
++  unsigned char *data = *pdata;
++
++  if (data >= end)
++    {
++      printf (_(" No %s.\n"), table_name);
++      return;
+     }
+-  putchar ('\n');
+ 
+-  for (datai = 0; datai < data_count; datai++)
++  printf (" %s:\n", table_name);
++
++  while (data < end)
+     {
+-      unsigned char *datapass = data;
++      unsigned char op_code;
++      dwarf_signed_vma adv;
++      dwarf_vma uladv;
++      unsigned int logical;
++      int i;
+ 
+-      printf ("  %d", last_entry++);
+-      /* Delay displaying name as the last entry for better screen layout.  */ 
+-      for (namepass = 0; namepass < 2; namepass++)
++      printf ("  [0x%08lx]", (long)(data - start));
++
++      op_code = *data++;
++
++      if (op_code >= linfo->li_opcode_base)
+ 	{
+-	  format = format_start;
+-	  data = datapass;
+-	  for (formati = 0; formati < format_count; formati++)
++	  op_code -= linfo->li_opcode_base;
++	  uladv = (op_code / linfo->li_line_range);
++	  if (linfo->li_max_ops_per_insn == 1)
+ 	    {
+-	      dwarf_vma content_type, form;
+-
+-	      READ_ULEB (content_type, format, end);
+-	      READ_ULEB (form, format, end);
+-	      data = read_and_display_attr_value (0, form, 0, start, data, end,
+-						  0, 0, linfo->li_offset_size,
+-						  linfo->li_version, NULL,
+-			    ((content_type == DW_LNCT_path) != (namepass == 1)),
+-						  section, NULL, '\t', -1);
++	      uladv *= linfo->li_min_insn_length;
++	      state_machine_regs.address += uladv;
++	      printf (_("  Special opcode %d: "
++			"advance Address by %s to 0x%s"),
++		      op_code, dwarf_vmatoa ("u", uladv),
++		      dwarf_vmatoa ("x", state_machine_regs.address));
+ 	    }
++	  else
++	    {
++	      state_machine_regs.address
++		+= ((state_machine_regs.op_index + uladv)
++		    / linfo->li_max_ops_per_insn)
++		* linfo->li_min_insn_length;
++	      state_machine_regs.op_index
++		= (state_machine_regs.op_index + uladv)
++		% linfo->li_max_ops_per_insn;
++	      printf (_("  Special opcode %d: "
++			"advance Address by %s to 0x%s[%d]"),
++		      op_code, dwarf_vmatoa ("u", uladv),
++		      dwarf_vmatoa ("x", state_machine_regs.address),
++		      state_machine_regs.op_index);
++	    }
++	  adv = (op_code % linfo->li_line_range) + linfo->li_line_base;
++	  state_machine_regs.line += adv;
++	  printf (_(" and Line by %s to %d\n"),
++		  dwarf_vmatoa ("d", adv), state_machine_regs.line);
++	  if (is_logical)
++	    append_logical ();
++	  state_machine_regs.discriminator = 0;
+ 	}
+-
+-      if (data == end && (datai < data_count - 1))
++      else
+ 	{
+-	  warn (_("\n%s: Corrupt entries list\n"), table_name);
+-	  return data;
+-	}
+-      putchar ('\n');
++	  switch (op_code)
++	     {
++	     case DW_LNS_extended_op:
++	       data += process_extended_line_op (data, linfo->li_default_is_stmt,
++						 end, is_logical);
++	       break;
++
++	     case DW_LNS_copy:
++	       printf (_("  Copy\n"));
++	       if (is_logical)
++		 append_logical ();
++	       state_machine_regs.discriminator = 0;
++	       break;
++
++	     case DW_LNS_advance_pc:
++	       READ_ULEB (uladv, data, end);
++	       if (linfo->li_max_ops_per_insn == 1)
++		 {
++		   uladv *= linfo->li_min_insn_length;
++		   state_machine_regs.address += uladv;
++		   printf (_("  Advance PC by %s to 0x%s\n"),
++			   dwarf_vmatoa ("u", uladv),
++			   dwarf_vmatoa ("x", state_machine_regs.address));
++		 }
++	       else
++		 {
++		   state_machine_regs.address
++		     += ((state_machine_regs.op_index + uladv)
++			 / linfo->li_max_ops_per_insn)
++		     * linfo->li_min_insn_length;
++		   state_machine_regs.op_index
++		     = (state_machine_regs.op_index + uladv)
++		     % linfo->li_max_ops_per_insn;
++		   printf (_("  Advance PC by %s to 0x%s[%d]\n"),
++			   dwarf_vmatoa ("u", uladv),
++			   dwarf_vmatoa ("x", state_machine_regs.address),
++			   state_machine_regs.op_index);
++		 }
++	       break;
++
++	     case DW_LNS_advance_line:
++	       READ_SLEB (adv, data, end);
++	       state_machine_regs.line += adv;
++	       printf (_("  Advance Line by %s to %d\n"),
++		       dwarf_vmatoa ("d", adv),
++		       state_machine_regs.line);
++	       break;
++
++	     case DW_LNS_set_file:
++	       READ_ULEB (uladv, data, end);
++	       printf (_("  Set File Name to entry %s in the File Name Table\n"),
++		       dwarf_vmatoa ("d", uladv));
++	       state_machine_regs.file = uladv;
++	       break;
++
++	     case DW_LNS_set_column:
++	       READ_ULEB (uladv, data, end);
++	       printf (_("  Set column to %s\n"),
++		       dwarf_vmatoa ("u", uladv));
++	       state_machine_regs.column = uladv;
++	       break;
++
++	     case DW_LNS_negate_stmt:
++	       adv = state_machine_regs.is_stmt;
++	       adv = ! adv;
++	       printf (_("  Set is_stmt to %s\n"), dwarf_vmatoa ("d", adv));
++	       state_machine_regs.is_stmt = adv;
++	       break;
++
++	     case DW_LNS_set_basic_block:
++	       printf (_("  Set basic block\n"));
++	       state_machine_regs.basic_block = 1;
++	       break;
++
++	     case DW_LNS_const_add_pc:
++	       uladv = ((255 - linfo->li_opcode_base) / linfo->li_line_range);
++	       if (linfo->li_max_ops_per_insn)
++		 {
++		   uladv *= linfo->li_min_insn_length;
++		   state_machine_regs.address += uladv;
++		   printf (_("  Advance PC by constant %s to 0x%s\n"),
++			   dwarf_vmatoa ("u", uladv),
++			   dwarf_vmatoa ("x", state_machine_regs.address));
++		 }
++	       else
++		 {
++		   state_machine_regs.address
++		     += ((state_machine_regs.op_index + uladv)
++			 / linfo->li_max_ops_per_insn)
++		     * linfo->li_min_insn_length;
++		   state_machine_regs.op_index
++		     = (state_machine_regs.op_index + uladv)
++		     % linfo->li_max_ops_per_insn;
++		   printf (_("  Advance PC by constant %s to 0x%s[%d]\n"),
++			   dwarf_vmatoa ("u", uladv),
++			   dwarf_vmatoa ("x", state_machine_regs.address),
++			   state_machine_regs.op_index);
++		 }
++	       break;
++
++	     case DW_LNS_fixed_advance_pc:
++	       SAFE_BYTE_GET_AND_INC (uladv, data, 2, end);
++	       state_machine_regs.address += uladv;
++	       state_machine_regs.op_index = 0;
++	       printf (_("  Advance PC by fixed size amount %s to 0x%s\n"),
++		       dwarf_vmatoa ("u", uladv),
++		       dwarf_vmatoa ("x", state_machine_regs.address));
++	       break;
++
++	     case DW_LNS_set_prologue_end:
++	       printf (_("  Set prologue_end to true\n"));
++	       break;
++
++	     case DW_LNS_set_epilogue_begin:
++	       printf (_("  Set epilogue_begin to true\n"));
++	       break;
++
++	     case DW_LNS_set_isa:
++	       READ_ULEB (uladv, data, end);
++	       printf (_("  Set ISA to %s\n"), dwarf_vmatoa ("u", uladv));
++	       break;
++
++	     case DW_LNS_set_subprogram:
++	     /* This opcode is aliased with:  */
++	     /* case DW_LNS_set_address_from_logical:  */
++	       if (is_logical)
++		 {
++		   /* DW_LNS_set_subprogram */
++		   state_machine_regs.context = 0;
++		   READ_ULEB (state_machine_regs.subprogram, data, end);
++		   printf (_("  Set subprogram to %u and reset context to 0\n"),
++			   state_machine_regs.subprogram);
++		 }
++	       else
++		 {
++		   /* DW_LNS_set_address_from_logical */
++		   READ_SLEB (adv, data, end);
++		   state_machine_regs.line += adv;
++		   logical = state_machine_regs.line;
++		   if (logical - 1 < logicals_count)
++		     {
++		       state_machine_regs.address = logicals_table[logical - 1].address;
++		       state_machine_regs.op_index = logicals_table[logical - 1].op_index;
++		     }
++		   else
++		     warn (_("Logical row number outside range of logicals table\n"));
++		   printf (_("  Advance Line by %s to %u and set address from logical to 0x%s[%u]\n"),
++			   dwarf_vmatoa ("d", adv),
++			   logical,
++			   dwarf_vmatoa ("x", state_machine_regs.address),
++			   state_machine_regs.op_index);
++		 }
++	       break;
++
++	     case DW_LNS_inlined_call:
++	       READ_SLEB (adv, data, end);
++	       state_machine_regs.context = logicals_count + adv;
++	       READ_ULEB (state_machine_regs.subprogram, data, end);
++	       printf (_("  Set context to %u and subprogram to %u\n"),
++		       state_machine_regs.context,
++		       state_machine_regs.subprogram);
++	       break;
++
++	     case DW_LNS_pop_context:
++	       logical = state_machine_regs.context;
++	       printf (_("  Pop context to logical %u\n"), logical);
++	       if (logical - 1 < logicals_count)
++	         {
++		   state_machine_regs.file = logicals_table[logical - 1].file;
++		   state_machine_regs.line = logicals_table[logical - 1].line;
++		   state_machine_regs.column = logicals_table[logical - 1].column;
++		   state_machine_regs.discriminator = logicals_table[logical - 1].discriminator;
++		   state_machine_regs.is_stmt = logicals_table[logical - 1].is_stmt;
++		   state_machine_regs.context = logicals_table[logical - 1].context;
++		   state_machine_regs.subprogram = logicals_table[logical - 1].subprogram;
++	         }
++	       else
++	         warn (_("Context register outside range of logicals table\n"));
++	       break;
++
++	     default:
++	       printf (_("  Unknown opcode %d with operands: "), op_code);
++
++	       if (standard_opcodes != NULL)
++		 for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
++		   {
++			   dwarf_vma val;
++			   READ_ULEB (val, data, end);
++			   printf ("0x%s%s", dwarf_vmatoa ("x", val),
++			     i == 1 ? "" : ", ");
++		   }
++	       putchar ('\n');
++	       break;
++	     }
++	 }
+     }
+-  return data;
++
++  putchar ('\n');
++  *pdata = data;
+ }
+ 
++#define UNUSED(x) (void)(x)
++
+ static int
+ display_debug_lines_raw (struct dwarf_section *  section,
+ 			 unsigned char *         data,
+@@ -4259,7 +4645,9 @@ display_debug_lines_raw (struct dwarf_section *  section,
+ 			 void *                  file)
+ {
+   unsigned char *start = section->start;
+-  int verbose_view = 0;
++  unsigned int initial_length_size;
++  unsigned int offset_size;
++  UNUSED(file);
+ 
+   introduce (section, TRUE);
+ 
+@@ -4267,9 +4655,15 @@ display_debug_lines_raw (struct dwarf_section *  section,
+     {
+       static DWARF2_Internal_LineInfo saved_linfo;
+       DWARF2_Internal_LineInfo linfo;
++      unsigned int logicals_table_offset = 0;
++      unsigned int actuals_table_offset = 0;
++      unsigned char *end_of_header_length;
+       unsigned char *standard_opcodes;
++      unsigned char *start_of_line_program;
++      unsigned char *end_of_logicals;
+       unsigned char *end_of_sequence;
+       int i;
++      unsigned char *hdrptr = NULL;
+ 
+       if (const_strneq (section->name, ".debug_line.")
+ 	  /* Note: the following does not apply to .debug_line.dwo sections.
+@@ -4286,7 +4680,9 @@ display_debug_lines_raw (struct dwarf_section *  section,
+ 	     Since the section is a fragment it does not have the details
+ 	     needed to fill out a LineInfo structure, so instead we use the
+ 	     details from the last full debug_line section that we processed.  */
++	  start_of_line_program = data;
+ 	  end_of_sequence = end;
++	  end_of_logicals = end;
+ 	  standard_opcodes = NULL;
+ 	  linfo = saved_linfo;
+ 	  /* PR 17531: file: 0522b371.  */
+@@ -4299,16 +4695,17 @@ display_debug_lines_raw (struct dwarf_section *  section,
+ 	}
+       else
+ 	{
+-	  unsigned char * hdrptr;
+-
+ 	  if ((hdrptr = read_debug_line_header (section, data, end, & linfo,
+-						& end_of_sequence)) == NULL)
++						& end_of_sequence,
++						& initial_length_size,
++						& offset_size)) == NULL)
+ 	    return 0;
+ 
+ 	  printf (_("  Offset:                      0x%lx\n"), (long)(data - start));
+ 	  printf (_("  Length:                      %ld\n"), (long) linfo.li_length);
+ 	  printf (_("  DWARF Version:               %d\n"), linfo.li_version);
+-	  if (linfo.li_version >= 5)
++	  if (linfo.li_version >= 5
++	      && linfo.li_version != DWARF2_LINE_EXPERIMENTAL_VERSION)
+ 	    {
+ 	      printf (_("  Address size (bytes):        %d\n"), linfo.li_address_size);
+ 	      printf (_("  Segment selector (bytes):    %d\n"), linfo.li_segment_size);
+@@ -4322,6 +4719,13 @@ display_debug_lines_raw (struct dwarf_section *  section,
+ 	  printf (_("  Line Range:                  %d\n"), linfo.li_line_range);
+ 	  printf (_("  Opcode Base:                 %d\n"), linfo.li_opcode_base);
+ 
++	  end_of_header_length = data + initial_length_size + 2 + offset_size;
++	  if (linfo.li_version >= 5
++	      && linfo.li_version != DWARF2_LINE_EXPERIMENTAL_VERSION)
++	    end_of_header_length += 2;
++	  start_of_line_program = end_of_header_length + linfo.li_prologue_length;
++	  end_of_logicals = end;
++
+ 	  /* PR 17512: file: 1665-6428-0.004.  */
+ 	  if (linfo.li_line_range == 0)
+ 	    {
+@@ -4349,314 +4753,100 @@ display_debug_lines_raw (struct dwarf_section *  section,
+ 			      standard_opcodes[i - 1]),
+ 		    i, standard_opcodes[i - 1]);
+ 
+-	  /* Display the contents of the Directory table.  */
+ 	  data = standard_opcodes + linfo.li_opcode_base - 1;
+ 
+-	  if (linfo.li_version >= 5)
+-	    {
+-	      load_debug_section_with_follow (line_str, file);
+-
+-	      data = display_formatted_table (data, start, end, &linfo, section,
+-					      TRUE);
+-	      data = display_formatted_table (data, start, end, &linfo, section,
+-					      FALSE);
+-	    }
+-	  else
++	  if (linfo.li_version == DWARF2_LINE_EXPERIMENTAL_VERSION)
+ 	    {
+-	      if (*data == 0)
+-		printf (_("\n The Directory Table is empty.\n"));
+-	      else
+-		{
+-		  unsigned int last_dir_entry = 0;
+-
+-		  printf (_("\n The Directory Table (offset 0x%lx):\n"),
+-			  (long)(data - start));
++	      /* Skip the fake directory and filename table.  */
++	      data += 2;
+ 
+-		  while (data < end && *data != 0)
+-		    {
+-		      printf ("  %d\t%.*s\n", ++last_dir_entry, (int) (end - data), data);
++	      /* Skip the fake extended opcode that wraps the rest
++		 of the section.  */
++	      data += 5;
+ 
+-		      data += strnlen ((char *) data, end - data) + 1;
+-		    }
+-
+-		  /* PR 17512: file: 002-132094-0.004.  */
+-		  if (data >= end - 1)
+-		    break;
+-		}
++	      /* Read the logicals table offset and actuals table offset.  */
++	      SAFE_BYTE_GET_AND_INC (logicals_table_offset, data, offset_size, end);
++	      SAFE_BYTE_GET_AND_INC (actuals_table_offset, data, offset_size, end);
+ 
+-	      /* Skip the NUL at the end of the table.  */
+-	      data++;
++	      start_of_line_program = end_of_header_length + logicals_table_offset;
+ 
+-	      /* Display the contents of the File Name table.  */
+-	      if (*data == 0)
+-		printf (_("\n The File Name Table is empty.\n"));
+-	      else
+-		{
+-		  printf (_("\n The File Name Table (offset 0x%lx):\n"),
+-			  (long)(data - start));
+-		  printf (_("  Entry\tDir\tTime\tSize\tName\n"));
++	      if (actuals_table_offset > 0)
++		end_of_logicals = end_of_header_length + actuals_table_offset;
+ 
+-		  while (data < end && *data != 0)
+-		    {
+-		      unsigned char *name;
+-		      dwarf_vma val;
++	      putchar ('\n');
++	      printf (_("  Logicals Table Offset:       0x%x\n"), logicals_table_offset);
++	      printf (_("  Actuals Table Offset:        0x%x\n"), actuals_table_offset);
++	    }
+ 
+-		      printf ("  %d\t", ++state_machine_regs.last_file_entry);
+-		      name = data;
+-		      data += strnlen ((char *) data, end - data) + 1;
++	  /* Display the contents of the Directory table.  */
++	  if (linfo.li_version >= 5)
++	    display_dir_file_table_v5 (start, end, &data, _("Directory"),
++				       offset_size);
++	  else
++	    display_directory_table_v4 (start, end, &data);
+ 
+-		      READ_ULEB (val, data, end);
+-		      printf ("%s\t", dwarf_vmatoa ("u", val));
+-		      READ_ULEB (val, data, end);
+-		      printf ("%s\t", dwarf_vmatoa ("u", val));
+-		      READ_ULEB (val, data, end);
+-		      printf ("%s\t", dwarf_vmatoa ("u", val));
+-		      printf ("%.*s\n", (int)(end - name), name);
++	  /* PR 17512: file: 002-132094-0.004.  */
++	  if (data >= end - 1)
++	    break;
+ 
+-		      if (data == end)
+-			{
+-			  warn (_("Corrupt file name table entry\n"));
+-			  break;
+-			}
+-		    }
+-		}
++	  /* Display the contents of the File Name table.  */
++	  if (linfo.li_version >= 5)
++	    {
++	      unsigned int count;
+ 
+-	      /* Skip the NUL at the end of the table.  */
+-	      data++;
++	      count = display_dir_file_table_v5 (start, end, &data,
++						 _("File Name"), offset_size);
++	      state_machine_regs.last_file_entry = count - 1;
+ 	    }
++	  else
++	    display_file_name_table_v4 (start, end, &data);
++
++	  /* Display the contents of the Subprogram table.  */
++	  if (linfo.li_version == DWARF2_LINE_EXPERIMENTAL_VERSION)
++	    display_dir_file_table_v5 (start, end, &data, _("Subprogram"),
++				       offset_size);
+ 
+ 	  putchar ('\n');
+ 	  saved_linfo = linfo;
+ 	}
+ 
+-      /* Now display the statements.  */
+-      if (data >= end_of_sequence)
+-	printf (_(" No Line Number Statements.\n"));
+-      else
+-	{
+-	  printf (_(" Line Number Statements:\n"));
++      if (data > start_of_line_program)
++	warn (_("Line table header is longer than header_length indicates\n"));
++      else if (data < start_of_line_program)
++	warn (_("Line table header is shorter than header_length indicates\n"));
++      data = start_of_line_program;
+ 
+-	  while (data < end_of_sequence)
++      if (linfo.li_version == DWARF2_LINE_EXPERIMENTAL_VERSION
++          && hdrptr != NULL
++          && actuals_table_offset > 0)
++        {
++          if (end_of_logicals > end)
+ 	    {
+-	      unsigned char op_code;
+-	      dwarf_signed_vma adv;
+-	      dwarf_vma uladv;
+-
+-	      printf ("  [0x%08lx]", (long)(data - start));
+-
+-	      op_code = *data++;
+-
+-	      if (op_code >= linfo.li_opcode_base)
+-		{
+-		  op_code -= linfo.li_opcode_base;
+-		  uladv = (op_code / linfo.li_line_range);
+-		  if (linfo.li_max_ops_per_insn == 1)
+-		    {
+-		      uladv *= linfo.li_min_insn_length;
+-		      state_machine_regs.address += uladv;
+-		      if (uladv)
+-			state_machine_regs.view = 0;
+-		      printf (_("  Special opcode %d: "
+-				"advance Address by %s to 0x%s%s"),
+-			      op_code, dwarf_vmatoa ("u", uladv),
+-			      dwarf_vmatoa ("x", state_machine_regs.address),
+-			      verbose_view && uladv
+-			      ? _(" (reset view)") : "");
+-		    }
+-		  else
+-		    {
+-		      unsigned addrdelta
+-			= ((state_machine_regs.op_index + uladv)
+-			    / linfo.li_max_ops_per_insn)
+-			* linfo.li_min_insn_length;
+-
+-		      state_machine_regs.address += addrdelta;
+-		      state_machine_regs.op_index
+-			= (state_machine_regs.op_index + uladv)
+-			% linfo.li_max_ops_per_insn;
+-		      if (addrdelta)
+-			state_machine_regs.view = 0;
+-		      printf (_("  Special opcode %d: "
+-				"advance Address by %s to 0x%s[%d]%s"),
+-			      op_code, dwarf_vmatoa ("u", uladv),
+-			      dwarf_vmatoa ("x", state_machine_regs.address),
+-			      state_machine_regs.op_index,
+-			      verbose_view && addrdelta
+-			      ? _(" (reset view)") : "");
+-		    }
+-		  adv = (op_code % linfo.li_line_range) + linfo.li_line_base;
+-		  state_machine_regs.line += adv;
+-		  printf (_(" and Line by %s to %d"),
+-			  dwarf_vmatoa ("d", adv), state_machine_regs.line);
+-		  if (verbose_view || state_machine_regs.view)
+-		    printf (_(" (view %u)\n"), state_machine_regs.view);
+-		  else
+-		    putchar ('\n');
+-		  state_machine_regs.view++;
+-		}
+-	      else
+-		switch (op_code)
+-		  {
+-		  case DW_LNS_extended_op:
+-		    data += process_extended_line_op (data,
+-						      linfo.li_default_is_stmt,
+-						      end);
+-		    break;
+-
+-		  case DW_LNS_copy:
+-		    printf (_("  Copy"));
+-		    if (verbose_view || state_machine_regs.view)
+-		      printf (_(" (view %u)\n"), state_machine_regs.view);
+-		    else
+-		      putchar ('\n');
+-		    state_machine_regs.view++;
+-		    break;
+-
+-		  case DW_LNS_advance_pc:
+-		    READ_ULEB (uladv, data, end);
+-		    if (linfo.li_max_ops_per_insn == 1)
+-		      {
+-			uladv *= linfo.li_min_insn_length;
+-			state_machine_regs.address += uladv;
+-			if (uladv)
+-			  state_machine_regs.view = 0;
+-			printf (_("  Advance PC by %s to 0x%s%s\n"),
+-				dwarf_vmatoa ("u", uladv),
+-				dwarf_vmatoa ("x", state_machine_regs.address),
+-				verbose_view && uladv
+-				? _(" (reset view)") : "");
+-		      }
+-		    else
+-		      {
+-			unsigned addrdelta
+-			  = ((state_machine_regs.op_index + uladv)
+-			     / linfo.li_max_ops_per_insn)
+-			  * linfo.li_min_insn_length;
+-			state_machine_regs.address
+-			  += addrdelta;
+-			state_machine_regs.op_index
+-			  = (state_machine_regs.op_index + uladv)
+-			  % linfo.li_max_ops_per_insn;
+-			if (addrdelta)
+-			  state_machine_regs.view = 0;
+-			printf (_("  Advance PC by %s to 0x%s[%d]%s\n"),
+-				dwarf_vmatoa ("u", uladv),
+-				dwarf_vmatoa ("x", state_machine_regs.address),
+-				state_machine_regs.op_index,
+-				verbose_view && addrdelta
+-				? _(" (reset view)") : "");
+-		      }
+-		    break;
+-
+-		  case DW_LNS_advance_line:
+-		    READ_SLEB (adv, data, end);
+-		    state_machine_regs.line += adv;
+-		    printf (_("  Advance Line by %s to %d\n"),
+-			    dwarf_vmatoa ("d", adv),
+-			    state_machine_regs.line);
+-		    break;
+-
+-		  case DW_LNS_set_file:
+-		    READ_ULEB (uladv, data, end);
+-		    printf (_("  Set File Name to entry %s in the File Name Table\n"),
+-			    dwarf_vmatoa ("u", uladv));
+-		    state_machine_regs.file = uladv;
+-		    break;
+-
+-		  case DW_LNS_set_column:
+-		    READ_ULEB (uladv, data, end);
+-		    printf (_("  Set column to %s\n"),
+-			    dwarf_vmatoa ("u", uladv));
+-		    state_machine_regs.column = uladv;
+-		    break;
+-
+-		  case DW_LNS_negate_stmt:
+-		    adv = state_machine_regs.is_stmt;
+-		    adv = ! adv;
+-		    printf (_("  Set is_stmt to %s\n"), dwarf_vmatoa ("d", adv));
+-		    state_machine_regs.is_stmt = adv;
+-		    break;
+-
+-		  case DW_LNS_set_basic_block:
+-		    printf (_("  Set basic block\n"));
+-		    state_machine_regs.basic_block = 1;
+-		    break;
+-
+-		  case DW_LNS_const_add_pc:
+-		    uladv = ((255 - linfo.li_opcode_base) / linfo.li_line_range);
+-		    if (linfo.li_max_ops_per_insn)
+-		      {
+-			uladv *= linfo.li_min_insn_length;
+-			state_machine_regs.address += uladv;
+-			if (uladv)
+-			  state_machine_regs.view = 0;
+-			printf (_("  Advance PC by constant %s to 0x%s%s\n"),
+-				dwarf_vmatoa ("u", uladv),
+-				dwarf_vmatoa ("x", state_machine_regs.address),
+-				verbose_view && uladv
+-				? _(" (reset view)") : "");
+-		      }
+-		    else
+-		      {
+-			unsigned addrdelta
+-			  = ((state_machine_regs.op_index + uladv)
+-			     / linfo.li_max_ops_per_insn)
+-			  * linfo.li_min_insn_length;
+-			state_machine_regs.address
+-			  += addrdelta;
+-			state_machine_regs.op_index
+-			  = (state_machine_regs.op_index + uladv)
+-			  % linfo.li_max_ops_per_insn;
+-			if (addrdelta)
+-			  state_machine_regs.view = 0;
+-			printf (_("  Advance PC by constant %s to 0x%s[%d]%s\n"),
+-				dwarf_vmatoa ("u", uladv),
+-				dwarf_vmatoa ("x", state_machine_regs.address),
+-				state_machine_regs.op_index,
+-				verbose_view && addrdelta
+-				? _(" (reset view)") : "");
+-		      }
+-		    break;
+-
+-		  case DW_LNS_fixed_advance_pc:
+-		    SAFE_BYTE_GET_AND_INC (uladv, data, 2, end);
+-		    state_machine_regs.address += uladv;
+-		    state_machine_regs.op_index = 0;
+-		    printf (_("  Advance PC by fixed size amount %s to 0x%s\n"),
+-			    dwarf_vmatoa ("u", uladv),
+-			    dwarf_vmatoa ("x", state_machine_regs.address));
+-		    /* Do NOT reset view.  */
+-		    break;
+-
+-		  case DW_LNS_set_prologue_end:
+-		    printf (_("  Set prologue_end to true\n"));
+-		    break;
+-
+-		  case DW_LNS_set_epilogue_begin:
+-		    printf (_("  Set epilogue_begin to true\n"));
+-		    break;
+-
+-		  case DW_LNS_set_isa:
+-		    READ_ULEB (uladv, data, end);
+-		    printf (_("  Set ISA to %s\n"), dwarf_vmatoa ("u", uladv));
+-		    break;
+-
+-		  default:
+-		    printf (_("  Unknown opcode %d with operands: "), op_code);
+-
+-		    if (standard_opcodes != NULL)
+-		      for (i = standard_opcodes[op_code - 1]; i > 0 ; --i)
+-			{
+-			  READ_ULEB (uladv, data, end);
+-			  printf ("0x%s%s", dwarf_vmatoa ("x", uladv),
+-				  i == 1 ? "" : ", ");
+-			}
+-		    putchar ('\n');
+-		    break;
+-		  }
++	      warn (_("Actuals table offset %s extends beyond end of section\n"),
++		    dwarf_vmatoa ("u", actuals_table_offset));
++	      end_of_logicals = end;
+ 	    }
+-	  putchar ('\n');
+-	}
++          display_line_program (start, end_of_logicals, &data,
++				_("Logicals Statements"),
++				&linfo, standard_opcodes, 1);
++          if (data > end_of_logicals)
++	    warn (_("Logicals table is longer than actuals_table_offset indicates\n"));
++          else if (data < end_of_logicals)
++	    warn (_("Line table header is shorter than actuals_table_offset indicates\n"));
++          data = end_of_logicals;
++	  reset_state_machine (linfo.li_default_is_stmt);
++          display_line_program (start, end_of_sequence, &data,
++				_("Actuals Statements"),
++				&linfo, standard_opcodes, 0);
++          free_logicals ();
++        }
++      else
++        {
++          display_line_program (start, end_of_sequence, &data,
++				_("Line Number Statements"),
++				&linfo, standard_opcodes, 0);
++        }
++
+     }
+ 
+   return 1;
+@@ -4680,6 +4870,8 @@ display_debug_lines_decoded (struct dwarf_section *  section,
+ 			     void *                  fileptr)
+ {
+   static DWARF2_Internal_LineInfo saved_linfo;
++  unsigned int initial_length_size;
++  unsigned int offset_size;
+ 
+   introduce (section, FALSE);
+ 
+@@ -4717,7 +4909,9 @@ display_debug_lines_decoded (struct dwarf_section *  section,
+ 	  unsigned char *hdrptr;
+ 
+ 	  if ((hdrptr = read_debug_line_header (section, data, end, & linfo,
+-						& end_of_sequence)) == NULL)
++						& end_of_sequence,
++						& initial_length_size,
++						& offset_size)) == NULL)
+ 	      return 0;
+ 
+ 	  /* PR 17531: file: 0522b371.  */
+@@ -5413,6 +5607,8 @@ display_debug_lines (struct dwarf_section *section, void *file)
+   if (do_debug_lines == 0)
+     do_debug_lines |= FLAG_DEBUG_LINES_RAW;
+ 
++  load_debug_section (line_str, file);
++
+   if (do_debug_lines & FLAG_DEBUG_LINES_RAW)
+     retValRaw = display_debug_lines_raw (section, data, end, file);
+ 
+diff --git a/binutils/readelf.c b/binutils/readelf.c
+index 41547a2594b..4af4c0c6e1a 100644
+--- a/binutils/readelf.c
++++ b/binutils/readelf.c
+@@ -6443,6 +6443,7 @@ process_section_headers (Filedata * filedata)
+ 	      || (do_debug_macinfo  && const_strneq (name, "macro"))
+ 	      || (do_debug_str      && const_strneq (name, "str"))
+ 	      || (do_debug_str_offsets && const_strneq (name, "str_offsets"))
++	      || (do_debug_str      && const_strneq (name, "line_str"))
+ 	      || (do_debug_loc      && const_strneq (name, "loc"))
+ 	      || (do_debug_loc      && const_strneq (name, "loclists"))
+ 	      || (do_debug_addr     && const_strneq (name, "addr"))
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0005-gas-enable-mshared-by-default.patch b/sys-devel/binutils/files/0005-gas-enable-mshared-by-default.patch
new file mode 100644
index 0000000..71c6cbc
--- /dev/null
+++ b/sys-devel/binutils/files/0005-gas-enable-mshared-by-default.patch
@@ -0,0 +1,96 @@
+From 1885973cd4c8408d4c04a99a39ec145aecc3d6b2 Mon Sep 17 00:00:00 2001
+From: Rahul Chaudhry <rahulchaudhry@google.com>
+Date: Fri, 14 Jul 2017 13:16:08 -0700
+Subject: [PATCH 05/14] gas: enable -mshared by default.
+
+From gas help:
+  -mshared        disable branch optimization for shared code.
+
+The default behavior is to optimize out non-PLT relocations against
+defined non-weak global branch targets with default visibility. This
+optimization has been a source of many issues during testing of new
+binutils:
+  - https://bugs.chromium.org/p/chromium/issues/detail?id=738283
+  - https://bugs.chromium.org/p/chromium/issues/detail?id=723906
+
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+
+Change-Id: Iced04054a7dfd18eef6b42c21f92c34286c215b4
+---
+ gas/config/tc-i386.c                    | 10 +++++++++-
+ gas/testsuite/gas/i386/relax-4.d        |  1 +
+ gas/testsuite/gas/i386/x86-64-relax-3.d |  1 +
+ 3 files changed, 11 insertions(+), 1 deletion(-)
+
+diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
+index 623ac77307e..1499a848d0c 100644
+--- a/gas/config/tc-i386.c
++++ b/gas/config/tc-i386.c
+@@ -595,7 +595,7 @@ static int use_big_obj = 0;
+ 
+ #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
+ /* 1 if generating code for a shared library.  */
+-static int shared = 0;
++static int shared = 1;
+ #endif
+ 
+ /* 1 for intel syntax,
+@@ -12735,6 +12735,7 @@ const char *md_shortopts = "qnO::";
+ #define OPTION_MLFENCE_AFTER_LOAD (OPTION_MD_BASE + 31)
+ #define OPTION_MLFENCE_BEFORE_INDIRECT_BRANCH (OPTION_MD_BASE + 32)
+ #define OPTION_MLFENCE_BEFORE_RET (OPTION_MD_BASE + 33)
++#define OPTION_MNO_SHARED (OPTION_MD_BASE + 34)
+ 
+ struct option md_longopts[] =
+ {
+@@ -12746,6 +12747,7 @@ struct option md_longopts[] =
+ #if defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)
+   {"x32", no_argument, NULL, OPTION_X32},
+   {"mshared", no_argument, NULL, OPTION_MSHARED},
++  {"mno-shared", no_argument, NULL, OPTION_MNO_SHARED},
+   {"mx86-used-note", required_argument, NULL, OPTION_X86_USED_NOTE},
+ #endif
+   {"divide", no_argument, NULL, OPTION_DIVIDE},
+@@ -12826,6 +12828,10 @@ md_parse_option (int c, const char *arg)
+       shared = 1;
+       break;
+ 
++    case OPTION_MNO_SHARED:
++      shared = 0;
++      break;
++
+     case OPTION_X86_USED_NOTE:
+       if (strcasecmp (arg, "yes") == 0)
+         x86_used_note = 1;
+@@ -13513,6 +13519,8 @@ md_show_usage (FILE *stream)
+   fprintf (stream, _("\
+   -mshared                disable branch optimization for shared code\n"));
+   fprintf (stream, _("\
++  -mno-shared             enable branch optimization\n"));
++  fprintf (stream, _("\
+   -mx86-used-note=[no|yes] "));
+   if (DEFAULT_X86_USED_NOTE)
+     fprintf (stream, _("(default: yes)\n"));
+diff --git a/gas/testsuite/gas/i386/relax-4.d b/gas/testsuite/gas/i386/relax-4.d
+index 20392512252..2de4d92fc31 100644
+--- a/gas/testsuite/gas/i386/relax-4.d
++++ b/gas/testsuite/gas/i386/relax-4.d
+@@ -1,4 +1,5 @@
+ #source: relax-3.s
++#as: -mno-shared
+ #objdump: -dwr
+ 
+ .*: +file format .*
+diff --git a/gas/testsuite/gas/i386/x86-64-relax-3.d b/gas/testsuite/gas/i386/x86-64-relax-3.d
+index bb605081452..b5010b4141d 100644
+--- a/gas/testsuite/gas/i386/x86-64-relax-3.d
++++ b/gas/testsuite/gas/i386/x86-64-relax-3.d
+@@ -1,4 +1,5 @@
+ #source: relax-3.s
++#as: -mno-shared
+ #objdump: -dwr
+ #notarget: *-*-solaris*
+ 
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0006-gold-readelf-add-experimental-support-for-SHT_RELR-s.patch b/sys-devel/binutils/files/0006-gold-readelf-add-experimental-support-for-SHT_RELR-s.patch
new file mode 100644
index 0000000..216d691
--- /dev/null
+++ b/sys-devel/binutils/files/0006-gold-readelf-add-experimental-support-for-SHT_RELR-s.patch
@@ -0,0 +1,1940 @@
+From 5e133fc4d0f29591715a9b4558664e3631456be4 Mon Sep 17 00:00:00 2001
+From: Rahul Chaudhry <rahulchaudhry@google.com>
+Date: Tue, 19 Dec 2017 15:31:31 -0800
+Subject: [PATCH 06/14] gold, readelf: add experimental support for SHT_RELR
+ sections.
+
+This change adds experimental support for SHT_RELR sections, proposed
+here: https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
+
+SHT_RELR sections are supported for arm, aarch64, and x86_64 targets.
+To enable them, pass '--experimental-use-relr' flag to gold.
+
+Definitions for the new ELF section type and dynamic array tags, as well
+as the encoding used in the new section are all under discussion and are
+subject to change. Use with caution!
+
+This version uses the new encoding suggested by Andrew Grieve which is
+described in this post on generic-abi@googlegroups.com:
+    https://groups.google.com/d/msg/generic-abi/bX460iggiKg/Pi9aSwwABgAJ
+
+Bug: None
+Test: 'gold --experimental-use-relr' creates PIE binaries with
+      '.relr.dyn' sections to store relative relocations.
+
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+[Adrian Ratiu: squashed gold: simpler encoding for SHT_RELR sections.]
+---
+ bfd/elf-bfd.h            |   2 +-
+ bfd/elf.c                |  27 +++-
+ bfd/elf32-arm.c          |   1 +
+ bfd/elfcode.h            |   2 +
+ bfd/elfnn-aarch64.c      |   1 +
+ binutils/readelf.c       | 126 +++++++++++++--
+ elfcpp/elfcpp.h          |  55 +++++++
+ elfcpp/elfcpp_internal.h |   6 +
+ gold/aarch64.cc          | 170 +++++++++++++++-----
+ gold/arm.cc              | 156 ++++++++++++++----
+ gold/layout.cc           |  14 +-
+ gold/layout.h            |   3 +-
+ gold/options.h           |   4 +
+ gold/output.cc           |  51 ++++++
+ gold/output.h            | 338 ++++++++++++++++++++++++++++++++++++++-
+ gold/reloc-types.h       |  20 +++
+ gold/x86_64.cc           | 183 +++++++++++++++++----
+ include/elf/common.h     |  11 ++
+ include/elf/external.h   |   8 +
+ 19 files changed, 1057 insertions(+), 121 deletions(-)
+
+diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
+index c203e089525..5603caf9106 100644
+--- a/bfd/elf-bfd.h
++++ b/bfd/elf-bfd.h
+@@ -732,7 +732,7 @@ struct sym_cache
+ 
+ struct elf_size_info {
+   unsigned char sizeof_ehdr, sizeof_phdr, sizeof_shdr;
+-  unsigned char sizeof_rel, sizeof_rela, sizeof_sym, sizeof_dyn, sizeof_note;
++  unsigned char sizeof_rel, sizeof_rela, sizeof_relr, sizeof_sym, sizeof_dyn, sizeof_note;
+ 
+   /* The size of entries in the .hash section.  */
+   unsigned char sizeof_hash_entry;
+diff --git a/bfd/elf.c b/bfd/elf.c
+index 9f291663992..d0c9bfa5e8b 100644
+--- a/bfd/elf.c
++++ b/bfd/elf.c
+@@ -1748,6 +1748,9 @@ _bfd_elf_print_private_bfd_data (bfd *abfd, void *farg)
+ 	    case DT_RELA: name = "RELA"; break;
+ 	    case DT_RELASZ: name = "RELASZ"; break;
+ 	    case DT_RELAENT: name = "RELAENT"; break;
++	    case DT_RELR: name = "RELR"; break;
++	    case DT_RELRSZ: name = "RELRSZ"; break;
++	    case DT_RELRENT: name = "RELRENT"; break;
+ 	    case DT_STRSZ: name = "STRSZ"; break;
+ 	    case DT_SYMENT: name = "SYMENT"; break;
+ 	    case DT_INIT: name = "INIT"; break;
+@@ -1785,6 +1788,7 @@ _bfd_elf_print_private_bfd_data (bfd *abfd, void *farg)
+ 	    case DT_PLTPAD: name = "PLTPAD"; break;
+ 	    case DT_MOVETAB: name = "MOVETAB"; break;
+ 	    case DT_SYMINFO: name = "SYMINFO"; break;
++	    case DT_RELRCOUNT: name = "RELRCOUNT"; break;
+ 	    case DT_RELACOUNT: name = "RELACOUNT"; break;
+ 	    case DT_RELCOUNT: name = "RELCOUNT"; break;
+ 	    case DT_FLAGS_1: name = "FLAGS_1"; break;
+@@ -2367,16 +2371,30 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
+ 
+     case SHT_REL:
+     case SHT_RELA:
++    case SHT_RELR:
+       /* *These* do a lot of work -- but build no sections!  */
+       {
+ 	asection *target_sect;
+ 	Elf_Internal_Shdr *hdr2, **p_hdr;
+ 	unsigned int num_sec = elf_numsections (abfd);
+ 	struct bfd_elf_section_data *esdt;
++	bfd_size_type size;
+ 
+-	if (hdr->sh_entsize
+-	    != (bfd_size_type) (hdr->sh_type == SHT_REL
+-				? bed->s->sizeof_rel : bed->s->sizeof_rela))
++	switch (hdr->sh_type)
++	{
++        case SHT_REL:
++	  size = bed->s->sizeof_rel;
++	  break;
++        case SHT_RELA:
++	  size = bed->s->sizeof_rela;
++	  break;
++        case SHT_RELR:
++	  size = bed->s->sizeof_relr;
++	  break;
++        default:
++	  goto fail;
++        }
++	if (hdr->sh_entsize  != size)
+ 	  goto fail;
+ 
+ 	/* Check for a bogus link to avoid crashing.  */
+@@ -2446,7 +2464,8 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
+ 	    || hdr->sh_info == SHN_UNDEF
+ 	    || hdr->sh_info >= num_sec
+ 	    || elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_REL
+-	    || elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_RELA)
++	    || elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_RELA
++	    || elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_RELR)
+ 	  {
+ 	    ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name,
+ 						   shindex);
+diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
+index 508f4236932..c45860a62bb 100644
+--- a/bfd/elf32-arm.c
++++ b/bfd/elf32-arm.c
+@@ -19855,6 +19855,7 @@ const struct elf_size_info elf32_arm_size_info =
+   sizeof (Elf32_External_Shdr),
+   sizeof (Elf32_External_Rel),
+   sizeof (Elf32_External_Rela),
++  sizeof (Elf32_External_Relr),
+   sizeof (Elf32_External_Sym),
+   sizeof (Elf32_External_Dyn),
+   sizeof (Elf_External_Note),
+diff --git a/bfd/elfcode.h b/bfd/elfcode.h
+index 54ef8906379..ea9cf6b4108 100644
+--- a/bfd/elfcode.h
++++ b/bfd/elfcode.h
+@@ -80,6 +80,7 @@
+ #define Elf_External_Phdr	NAME(Elf,External_Phdr)
+ #define Elf_External_Rel	NAME(Elf,External_Rel)
+ #define Elf_External_Rela	NAME(Elf,External_Rela)
++#define Elf_External_Relr	NAME(Elf,External_Relr)
+ #define Elf_External_Dyn	NAME(Elf,External_Dyn)
+ 
+ #define elf_core_file_failing_command	NAME(bfd_elf,core_file_failing_command)
+@@ -1938,6 +1939,7 @@ const struct elf_size_info NAME(_bfd_elf,size_info) = {
+   sizeof (Elf_External_Shdr),
+   sizeof (Elf_External_Rel),
+   sizeof (Elf_External_Rela),
++  sizeof (Elf_External_Relr),
+   sizeof (Elf_External_Sym),
+   sizeof (Elf_External_Dyn),
+   sizeof (Elf_External_Note),
+diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
+index 312d11b4ff9..b568565ef95 100644
+--- a/bfd/elfnn-aarch64.c
++++ b/bfd/elfnn-aarch64.c
+@@ -9925,6 +9925,7 @@ const struct elf_size_info elfNN_aarch64_size_info =
+   sizeof (ElfNN_External_Shdr),
+   sizeof (ElfNN_External_Rel),
+   sizeof (ElfNN_External_Rela),
++  sizeof (ElfNN_External_Relr),
+   sizeof (ElfNN_External_Sym),
+   sizeof (ElfNN_External_Dyn),
+   sizeof (Elf_External_Note),
+diff --git a/binutils/readelf.c b/binutils/readelf.c
+index 4af4c0c6e1a..2b052c03f84 100644
+--- a/binutils/readelf.c
++++ b/binutils/readelf.c
+@@ -1138,6 +1138,80 @@ slurp_rel_relocs (Filedata *            filedata,
+   return TRUE;
+ }
+ 
++static bfd_boolean
++slurp_relr_relocs (Filedata * filedata,
++		   unsigned long relr_offset,
++		   unsigned long relr_size,
++		   Elf_Internal_Rela ** relrsp,
++		   unsigned long * nrelrsp)
++{
++  Elf_Internal_Rela * relrs;
++  size_t nrelrs;
++  unsigned int i;
++
++  if (is_32bit_elf)
++    {
++      Elf32_External_Relr * erelrs;
++
++      erelrs = (Elf32_External_Relr *) get_data (NULL, filedata, relr_offset, 1,
++                                                 relr_size, _("32-bit relocation data"));
++      if (!erelrs)
++	return FALSE;
++
++      nrelrs = relr_size / sizeof (Elf32_External_Relr);
++
++      relrs = (Elf_Internal_Rela *) cmalloc (nrelrs, sizeof (Elf_Internal_Rela));
++
++      if (relrs == NULL)
++	{
++	  free (erelrs);
++	  error (_("out of memory parsing relocs\n"));
++	  return FALSE;
++	}
++
++      for (i = 0; i < nrelrs; i++)
++	{
++	  relrs[i].r_offset = BYTE_GET (erelrs[i].r_data);
++	  relrs[i].r_info   = 0;
++	  relrs[i].r_addend = 0;
++	}
++
++      free (erelrs);
++    }
++  else
++    {
++      Elf64_External_Relr * erelrs;
++
++      erelrs = (Elf64_External_Relr *) get_data (NULL, filedata, relr_offset, 1,
++                                                 relr_size, _("64-bit relocation data"));
++      if (!erelrs)
++	return FALSE;
++
++      nrelrs = relr_size / sizeof (Elf64_External_Relr);
++
++      relrs = (Elf_Internal_Rela *) cmalloc (nrelrs, sizeof (Elf_Internal_Rela));
++
++      if (relrs == NULL)
++	{
++	  free (erelrs);
++	  error (_("out of memory parsing relocs\n"));
++	  return FALSE;
++	}
++
++      for (i = 0; i < nrelrs; i++)
++	{
++	  relrs[i].r_offset = BYTE_GET (erelrs[i].r_data);
++	  relrs[i].r_info   = 0;
++	  relrs[i].r_addend = 0;
++	}
++
++      free (erelrs);
++    }
++  *relrsp = relrs;
++  *nrelrsp = nrelrs;
++  return 1;
++}
++
+ /* Returns the reloc type extracted from the reloc info field.  */
+ 
+ static unsigned int
+@@ -1191,6 +1265,7 @@ dump_relocations (Filedata *          filedata,
+ 		  char *              strtab,
+ 		  unsigned long       strtablen,
+ 		  int                 is_rela,
++		  int                 is_relr,
+ 		  bfd_boolean         is_dynsym)
+ {
+   unsigned long i;
+@@ -1205,6 +1280,11 @@ dump_relocations (Filedata *          filedata,
+       if (!slurp_rela_relocs (filedata, rel_offset, rel_size, &rels, &rel_size))
+ 	return FALSE;
+     }
++  else if (is_relr)
++    {
++      if (!slurp_relr_relocs (filedata, rel_offset, rel_size, &rels, &rel_size))
++	return FALSE;
++    }
+   else
+     {
+       if (!slurp_rel_relocs (filedata, rel_offset, rel_size, &rels, &rel_size))
+@@ -1220,6 +1300,13 @@ dump_relocations (Filedata *          filedata,
+ 	  else
+ 	    printf (_(" Offset     Info    Type            Sym.Value  Sym. Name + Addend\n"));
+ 	}
++      else if (is_relr)
++	{
++	  if (do_wide)
++	    printf (_(" Data       Info    Type\n"));
++	  else
++	    printf (_(" Data       Info    Type\n"));
++	}
+       else
+ 	{
+ 	  if (do_wide)
+@@ -1237,6 +1324,13 @@ dump_relocations (Filedata *          filedata,
+ 	  else
+ 	    printf (_("  Offset          Info           Type           Sym. Value    Sym. Name + Addend\n"));
+ 	}
++      else if (is_relr)
++	{
++	  if (do_wide)
++	    printf (_("    Data               Info             Type\n"));
++	  else
++	    printf (_("  Data            Info           Type\n"));
++	}
+       else
+ 	{
+ 	  if (do_wide)
+@@ -1634,7 +1728,9 @@ dump_relocations (Filedata *          filedata,
+ 	  break;
+ 	}
+ 
+-      if (rtype == NULL)
++      if (is_relr)
++        printf (do_wide ? "RELATIVE COMPRESSED" : "RELR");
++      else if (rtype == NULL)
+ 	printf (_("unrecognized: %-7lx"), (unsigned long) type & 0xffffffff);
+       else
+ 	printf (do_wide ? "%-22s" : "%-17.17s", rtype);
+@@ -2174,6 +2270,9 @@ get_dynamic_type (Filedata * filedata, unsigned long type)
+     case DT_REL:	return "REL";
+     case DT_RELSZ:	return "RELSZ";
+     case DT_RELENT:	return "RELENT";
++    case DT_RELR:	return "RELR";
++    case DT_RELRSZ:	return "RELRSZ";
++    case DT_RELRENT:	return "RELRENT";
+     case DT_PLTREL:	return "PLTREL";
+     case DT_DEBUG:	return "DEBUG";
+     case DT_TEXTREL:	return "TEXTREL";
+@@ -2211,6 +2310,7 @@ get_dynamic_type (Filedata * filedata, unsigned long type)
+ 
+     case DT_TLSDESC_GOT: return "TLSDESC_GOT";
+     case DT_TLSDESC_PLT: return "TLSDESC_PLT";
++    case DT_RELRCOUNT:	return "RELRCOUNT";
+     case DT_RELACOUNT:	return "RELACOUNT";
+     case DT_RELCOUNT:	return "RELCOUNT";
+     case DT_FLAGS_1:	return "FLAGS_1";
+@@ -4332,6 +4432,7 @@ get_section_type_name (Filedata * filedata, unsigned int sh_type)
+     case SHT_SYMTAB:		return "SYMTAB";
+     case SHT_STRTAB:		return "STRTAB";
+     case SHT_RELA:		return "RELA";
++    case SHT_RELR:		return "RELR";
+     case SHT_HASH:		return "HASH";
+     case SHT_DYNAMIC:		return "DYNAMIC";
+     case SHT_NOTE:		return "NOTE";
+@@ -7400,12 +7501,14 @@ static struct
+   int reloc;
+   int size;
+   int rela;
++  int relr;
+ }
+   dynamic_relocations [] =
+ {
+-  { "REL", DT_REL, DT_RELSZ, FALSE },
+-  { "RELA", DT_RELA, DT_RELASZ, TRUE },
+-  { "PLT", DT_JMPREL, DT_PLTRELSZ, UNKNOWN }
++  { "REL", DT_REL, DT_RELSZ, FALSE, FALSE },
++  { "RELA", DT_RELA, DT_RELASZ, TRUE, FALSE },
++  { "RELR", DT_RELR, DT_RELRSZ, FALSE, TRUE },
++  { "PLT", DT_JMPREL, DT_PLTRELSZ, UNKNOWN, FALSE }
+ };
+ 
+ /* Process the reloc section.  */
+@@ -7421,7 +7524,7 @@ process_relocs (Filedata * filedata)
+ 
+   if (do_using_dynamic)
+     {
+-      int          is_rela;
++      int          is_rela, is_relr;
+       const char * name;
+       bfd_boolean  has_dynamic_reloc;
+       unsigned int i;
+@@ -7431,6 +7534,7 @@ process_relocs (Filedata * filedata)
+       for (i = 0; i < ARRAY_SIZE (dynamic_relocations); i++)
+ 	{
+ 	  is_rela = dynamic_relocations [i].rela;
++	  is_relr = dynamic_relocations [i].relr;
+ 	  name = dynamic_relocations [i].name;
+ 	  rel_size = filedata->dynamic_info[dynamic_relocations [i].size];
+ 	  rel_offset = filedata->dynamic_info[dynamic_relocations [i].reloc];
+@@ -7465,7 +7569,7 @@ process_relocs (Filedata * filedata)
+ 				filedata->num_dynamic_syms,
+ 				filedata->dynamic_strings,
+ 				filedata->dynamic_strings_length,
+-				is_rela, TRUE /* is_dynamic */);
++				is_rela, is_relr, TRUE /* is_dynamic */);
+ 	    }
+ 	}
+ 
+@@ -7487,7 +7591,8 @@ process_relocs (Filedata * filedata)
+ 	   i++, section++)
+ 	{
+ 	  if (   section->sh_type != SHT_RELA
+-	      && section->sh_type != SHT_REL)
++	      && section->sh_type != SHT_REL
++	      && section->sh_type != SHT_RELR)
+ 	    continue;
+ 
+ 	  rel_offset = section->sh_offset;
+@@ -7495,7 +7600,7 @@ process_relocs (Filedata * filedata)
+ 
+ 	  if (rel_size)
+ 	    {
+-	      int is_rela;
++	      int is_rela, is_relr;
+ 	      unsigned long num_rela;
+ 
+ 	      printf (_("\nRelocation section "));
+@@ -7512,6 +7617,7 @@ process_relocs (Filedata * filedata)
+ 		      rel_offset, num_rela);
+ 
+ 	      is_rela = section->sh_type == SHT_RELA;
++	      is_relr = section->sh_type == SHT_RELR;
+ 
+ 	      if (section->sh_link != 0
+ 		  && section->sh_link < filedata->file_header.e_shnum)
+@@ -7533,14 +7639,14 @@ process_relocs (Filedata * filedata)
+ 
+ 		  dump_relocations (filedata, rel_offset, rel_size,
+ 				    symtab, nsyms, strtab, strtablen,
+-				    is_rela,
++				    is_rela, is_relr,
+ 				    symsec->sh_type == SHT_DYNSYM);
+ 		  free (strtab);
+ 		  free (symtab);
+ 		}
+ 	      else
+ 		dump_relocations (filedata, rel_offset, rel_size,
+-				  NULL, 0, NULL, 0, is_rela,
++				  NULL, 0, NULL, 0, is_rela, is_relr,
+ 				  FALSE /* is_dynamic */);
+ 
+ 	      found = TRUE;
+diff --git a/elfcpp/elfcpp.h b/elfcpp/elfcpp.h
+index 9c7c6294e42..9bbe4bfef86 100644
+--- a/elfcpp/elfcpp.h
++++ b/elfcpp/elfcpp.h
+@@ -386,6 +386,10 @@ enum SHT
+   SHT_SUNW_versym = 0x6fffffff,
+   SHT_GNU_versym = 0x6fffffff,
+ 
++  // Experimental support for SHT_RELR sections. For details, see proposal
++  // at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
++  SHT_RELR = 0x6fffff00,
++
+   SHT_SPARC_GOTDATA = 0x70000000,
+ 
+   // ARM-specific section types.
+@@ -765,6 +769,13 @@ enum DT
+ 
+   DT_VERSYM = 0x6ffffff0,
+ 
++  // Experimental support for SHT_RELR sections. For details, see proposal
++  // at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
++  DT_RELR = 0x6fffe000,
++  DT_RELRSZ = 0x6fffe001,
++  DT_RELRENT = 0x6fffe003,
++  DT_RELRCOUNT = 0x6fffe005,
++
+   // Specify the value of _GLOBAL_OFFSET_TABLE_.
+   DT_PPC_GOT = 0x70000000,
+ 
+@@ -1047,6 +1058,7 @@ struct Elf_sizes
+   // Sizes of ELF reloc entries.
+   static const int rel_size = sizeof(internal::Rel_data<size>);
+   static const int rela_size = sizeof(internal::Rela_data<size>);
++  static const int relr_size = sizeof(internal::Relr_data<size>);
+   // Size of ELF dynamic entry.
+   static const int dyn_size = sizeof(internal::Dyn_data<size>);
+   // Size of ELF version structures.
+@@ -1709,6 +1721,49 @@ class Rela_write
+   internal::Rela_data<size>* p_;
+ };
+ 
++// Accessor class for an ELF Relr relocation.
++
++template<int size, bool big_endian>
++class Relr
++{
++ public:
++  Relr(const unsigned char* p)
++    : p_(reinterpret_cast<const internal::Relr_data<size>*>(p))
++  { }
++
++  template<typename File>
++  Relr(File* file, typename File::Location loc)
++    : p_(reinterpret_cast<const internal::Relr_data<size>*>(
++	   file->view(loc.file_offset, loc.data_size).data()))
++  { }
++
++  typename Elf_types<size>::Elf_Addr
++  get_r_data() const
++  { return Convert<size, big_endian>::convert_host(this->p_->r_data); }
++
++ private:
++  const internal::Relr_data<size>* p_;
++};
++
++// Writer class for an ELF Relr relocation.
++
++template<int size, bool big_endian>
++class Relr_write
++{
++ public:
++  Relr_write(unsigned char* p)
++    : p_(reinterpret_cast<internal::Relr_data<size>*>(p))
++  { }
++
++  void
++  put_r_data(typename Elf_types<size>::Elf_Addr v)
++  { this->p_->r_data = Convert<size, big_endian>::convert_host(v); }
++
++ private:
++  internal::Relr_data<size>* p_;
++};
++
++
+ // MIPS-64 has a non-standard relocation layout.
+ 
+ template<bool big_endian>
+diff --git a/elfcpp/elfcpp_internal.h b/elfcpp/elfcpp_internal.h
+index 36a6d6205f7..0c9accaa826 100644
+--- a/elfcpp/elfcpp_internal.h
++++ b/elfcpp/elfcpp_internal.h
+@@ -180,6 +180,12 @@ struct Rela_data
+   typename Elf_types<size>::Elf_Swxword r_addend;
+ };
+ 
++template<int size>
++struct Relr_data
++{
++  typename Elf_types<size>::Elf_WXword r_data;
++};
++
+ // MIPS-64 has a non-standard layout for relocations.
+ 
+ struct Mips64_rel_data
+diff --git a/gold/aarch64.cc b/gold/aarch64.cc
+index 07abe44931f..85854867cbd 100644
+--- a/gold/aarch64.cc
++++ b/gold/aarch64.cc
+@@ -2899,6 +2899,8 @@ class Target_aarch64 : public Sized_target<size, big_endian>
+   typedef Target_aarch64<size, big_endian> This;
+   typedef Output_data_reloc<elfcpp::SHT_RELA, true, size, big_endian>
+       Reloc_section;
++  typedef Output_data_reloc<elfcpp::SHT_RELR, true, size, big_endian>
++      Relr_section;
+   typedef Relocate_info<size, big_endian> The_relocate_info;
+   typedef typename elfcpp::Elf_types<size>::Elf_Addr Address;
+   typedef AArch64_relobj<size, big_endian> The_aarch64_relobj;
+@@ -2920,8 +2922,8 @@ class Target_aarch64 : public Sized_target<size, big_endian>
+     : Sized_target<size, big_endian>(info),
+       got_(NULL), plt_(NULL), got_plt_(NULL), got_irelative_(NULL),
+       got_tlsdesc_(NULL), global_offset_table_(NULL), rela_dyn_(NULL),
+-      rela_irelative_(NULL), copy_relocs_(elfcpp::R_AARCH64_COPY),
+-      got_mod_index_offset_(-1U),
++      rela_irelative_(NULL), relr_dyn_(NULL),
++      copy_relocs_(elfcpp::R_AARCH64_COPY), got_mod_index_offset_(-1U),
+       tlsdesc_reloc_info_(), tls_base_symbol_defined_(false),
+       stub_tables_(), stub_group_size_(0), aarch64_input_section_map_()
+   { }
+@@ -3182,11 +3184,17 @@ class Target_aarch64 : public Sized_target<size, big_endian>
+     return this->do_make_data_plt(layout, got, got_plt, got_irelative);
+   }
+ 
+-  // We only need to generate stubs, and hence perform relaxation if we are
+-  // not doing relocatable linking.
+   virtual bool
+   do_may_relax() const
+-  { return !parameters->options().relocatable(); }
++  {
++    // If generating '.relr.dyn' section, we need a relaxation pass
++    // to do the shrinking after all the offsets have been populated.
++    if (parameters->options().experimental_use_relr())
++        return true;
++    // We need to generate stubs, and hence perform relaxation if we are
++    // not doing relocatable linking.
++    return !parameters->options().relocatable();
++  }
+ 
+   // Relaxation hook.  This is where we do stub generation.
+   virtual bool
+@@ -3457,6 +3465,10 @@ class Target_aarch64 : public Sized_target<size, big_endian>
+   Reloc_section*
+   rela_irelative_section(Layout*);
+ 
++  // Get the RELR dynamic reloc section, creating it if necessary.
++  Relr_section*
++  relr_dyn_section(Layout*);
++
+   // Add a potential copy relocation.
+   void
+   copy_reloc(Symbol_table* symtab, Layout* layout,
+@@ -3521,6 +3533,8 @@ class Target_aarch64 : public Sized_target<size, big_endian>
+   Reloc_section* rela_dyn_;
+   // The section to use for IRELATIVE relocs.
+   Reloc_section* rela_irelative_;
++  // The RELR dynamic reloc section.
++  Relr_section* relr_dyn_;
+   // Relocs saved to avoid a COPY reloc.
+   Copy_relocs<elfcpp::SHT_RELA, size, big_endian> copy_relocs_;
+   // Offset of the GOT entry for the TLS module index.
+@@ -3792,6 +3806,23 @@ Target_aarch64<size, big_endian>::rela_irelative_section(Layout* layout)
+   return this->rela_irelative_;
+ }
+ 
++// Get the RELR dynamic reloc section, creating it if necessary.
++
++template<int size, bool big_endian>
++typename Target_aarch64<size, big_endian>::Relr_section*
++Target_aarch64<size, big_endian>::relr_dyn_section(Layout* layout)
++{
++  if (this->relr_dyn_ == NULL)
++    {
++      gold_assert(layout != NULL);
++      this->relr_dyn_ = new Relr_section();
++      layout->add_output_section_data(".relr.dyn", elfcpp::SHT_RELR,
++				      elfcpp::SHF_ALLOC, this->relr_dyn_,
++				      ORDER_DYNAMIC_RELOCS, false);
++    }
++  return this->relr_dyn_;
++}
++
+ 
+ // do_make_elf_object to override the same function in the base class.  We need
+ // to use a target-specific sub-class of Sized_relobj_file<size, big_endian> to
+@@ -5642,8 +5673,34 @@ Target_aarch64<size, big_endian>::do_relax(
+     Layout* layout ,
+     const Task* task)
+ {
+-  gold_assert(!parameters->options().relocatable());
+   if (pass == 1)
++    {
++      Layout::Section_list::const_iterator p = layout->section_list().begin();
++      for ( ; p != layout->section_list().end(); ++p)
++        {
++          if (is_prefix_of(".relr.dyn", (*p)->name()))
++            break;
++        }
++
++      if (p != layout->section_list().end())
++        {
++          Output_section * const os = *p;
++          for (Output_section::Input_section_list::iterator ip = os->input_sections().begin();
++               ip != os->input_sections().end();
++               ++ip)
++            {
++              Relr_section *od = static_cast<Relr_section *>(ip->output_section_data());
++              od->shrink_relocs();
++            }
++        }
++
++      return true;
++    }
++
++  if (parameters->options().relocatable())
++    return false;
++
++  if (pass == 2)
+     {
+       // We don't handle negative stub_group_size right now.
+       this->stub_group_size_ = abs(parameters->options().stub_group_size());
+@@ -5659,7 +5716,7 @@ Target_aarch64<size, big_endian>::do_relax(
+     }
+   else
+     {
+-      // If this is not the first pass, addresses and file offsets have
++      // If this is not the second pass, addresses and file offsets have
+       // been reset at this point, set them here.
+       for (Stub_table_iterator sp = this->stub_tables_.begin();
+ 	   sp != this->stub_tables_.end(); ++sp)
+@@ -6129,14 +6186,22 @@ Target_aarch64<size, big_endian>::Scan::local(
+       // reloction, so that the dynamic loader can relocate it.
+       if (parameters->options().output_is_position_independent())
+ 	{
+-	  Reloc_section* rela_dyn = target->rela_dyn_section(layout);
+-	  rela_dyn->add_local_relative(object, r_sym,
+-				       elfcpp::R_AARCH64_RELATIVE,
+-				       output_section,
+-				       data_shndx,
+-				       rela.get_r_offset(),
+-				       rela.get_r_addend(),
+-				       is_ifunc);
++	  if (parameters->options().experimental_use_relr())
++	    {
++	      Relr_section* relr_dyn = target->relr_dyn_section(layout);
++	      relr_dyn->add_local_relative(object, r_sym, output_section,
++					   data_shndx, rela.get_r_offset());
++	    }
++	  else
++	    {
++	      Reloc_section* rela_dyn = target->rela_dyn_section(layout);
++	      rela_dyn->add_local_relative(object, r_sym,
++					   elfcpp::R_AARCH64_RELATIVE,
++					   output_section, data_shndx,
++					   rela.get_r_offset(),
++					   rela.get_r_addend(),
++					   is_ifunc);
++	    }
+ 	}
+       break;
+ 
+@@ -6159,15 +6224,22 @@ Target_aarch64<size, big_endian>::Scan::local(
+ 	else
+ 	  is_new = got->add_local(object, r_sym, GOT_TYPE_STANDARD);
+ 	if (is_new && parameters->options().output_is_position_independent())
+-	  target->rela_dyn_section(layout)->
+-	    add_local_relative(object,
+-			       r_sym,
+-			       elfcpp::R_AARCH64_RELATIVE,
+-			       got,
+-			       object->local_got_offset(r_sym,
+-							GOT_TYPE_STANDARD),
+-			       0,
+-			       false);
++	  {
++	    unsigned int got_offset =
++	      object->local_got_offset(r_sym, GOT_TYPE_STANDARD);
++	    if (parameters->options().experimental_use_relr())
++	      {
++		Relr_section* relr_dyn = target->relr_dyn_section(layout);
++		relr_dyn->add_local_relative(object, r_sym, got, got_offset);
++	      }
++	    else
++	      {
++		Reloc_section* rela_dyn = target->rela_dyn_section(layout);
++		rela_dyn->add_local_relative(object, r_sym,
++					     elfcpp::R_AARCH64_RELATIVE,
++					     got, got_offset, 0, false);
++	      }
++	  }
+       }
+       break;
+ 
+@@ -6448,15 +6520,25 @@ Target_aarch64<size, big_endian>::Scan::global(
+ 	    else if (r_type == elfcpp::R_AARCH64_ABS64
+ 		     && gsym->can_use_relative_reloc(false))
+ 	      {
+-		Reloc_section* rela_dyn = target->rela_dyn_section(layout);
+-		rela_dyn->add_global_relative(gsym,
+-					      elfcpp::R_AARCH64_RELATIVE,
+-					      output_section,
+-					      object,
+-					      data_shndx,
+-					      rela.get_r_offset(),
+-					      rela.get_r_addend(),
+-					      false);
++		if (parameters->options().experimental_use_relr())
++		  {
++		    Relr_section* relr_dyn =
++		      target->relr_dyn_section(layout);
++		    relr_dyn->add_global_relative(gsym, output_section,
++						  object, data_shndx,
++						  rela.get_r_offset());
++		  }
++		else
++		  {
++		    Reloc_section* rela_dyn = target->rela_dyn_section(layout);
++		    rela_dyn->add_global_relative(gsym,
++						  elfcpp::R_AARCH64_RELATIVE,
++						  output_section, object,
++						  data_shndx,
++						  rela.get_r_offset(),
++						  rela.get_r_addend(),
++						  false);
++		  }
+ 	      }
+ 	    else
+ 	      {
+@@ -6595,12 +6677,19 @@ Target_aarch64<size, big_endian>::Scan::global(
+ 		  }
+ 		if (is_new)
+ 		  {
+-		    rela_dyn->add_global_relative(
+-			gsym, elfcpp::R_AARCH64_RELATIVE,
+-			got,
+-			gsym->got_offset(GOT_TYPE_STANDARD),
+-			0,
+-			false);
++		    unsigned int got_off = gsym->got_offset(GOT_TYPE_STANDARD);
++		    if (parameters->options().experimental_use_relr())
++		      {
++			Relr_section* relr_dyn =
++			  target->relr_dyn_section(layout);
++			relr_dyn->add_global_relative(gsym, got, got_off);
++		      }
++		    else
++		      {
++			rela_dyn->add_global_relative(gsym,
++						      elfcpp::R_AARCH64_RELATIVE,
++						      got, got_off, 0, false);
++		      }
+ 		  }
+ 	      }
+ 	  }
+@@ -6950,7 +7039,8 @@ Target_aarch64<size, big_endian>::do_finalize_sections(
+ 				  ? NULL
+ 				  : this->plt_->rela_plt());
+   layout->add_target_dynamic_tags(false, this->got_plt_, rel_plt,
+-				  this->rela_dyn_, true, false);
++				  this->rela_dyn_, true, false,
++				  this->relr_dyn_);
+ 
+   // Emit any relocs we saved in an attempt to avoid generating COPY
+   // relocs.
+diff --git a/gold/arm.cc b/gold/arm.cc
+index ad11c1bb007..e47b7b1278e 100644
+--- a/gold/arm.cc
++++ b/gold/arm.cc
+@@ -2116,6 +2116,8 @@ class Target_arm : public Sized_target<32, big_endian>
+  public:
+   typedef Output_data_reloc<elfcpp::SHT_REL, true, 32, big_endian>
+     Reloc_section;
++  typedef Output_data_reloc<elfcpp::SHT_RELR, true, 32, big_endian>
++    Relr_section;
+ 
+   // When were are relocating a stub, we pass this as the relocation number.
+   static const size_t fake_relnum_for_stubs = static_cast<size_t>(-1);
+@@ -2123,7 +2125,8 @@ class Target_arm : public Sized_target<32, big_endian>
+   Target_arm(const Target::Target_info* info = &arm_info)
+     : Sized_target<32, big_endian>(info),
+       got_(NULL), plt_(NULL), got_plt_(NULL), got_irelative_(NULL),
+-      rel_dyn_(NULL), rel_irelative_(NULL), copy_relocs_(elfcpp::R_ARM_COPY),
++      rel_dyn_(NULL), rel_irelative_(NULL), relr_dyn_(NULL),
++      copy_relocs_(elfcpp::R_ARM_COPY),
+       got_mod_index_offset_(-1U), tls_base_symbol_defined_(false),
+       stub_tables_(), stub_factory_(Stub_factory::get_instance()),
+       should_force_pic_veneer_(false),
+@@ -2519,11 +2522,17 @@ class Target_arm : public Sized_target<32, big_endian>
+   void
+   do_adjust_elf_header(unsigned char* view, int len);
+ 
+-  // We only need to generate stubs, and hence perform relaxation if we are
+-  // not doing relocatable linking.
+   bool
+   do_may_relax() const
+-  { return !parameters->options().relocatable(); }
++  {
++    // If generating '.relr.dyn' section, we need a relaxation pass
++    // to do the shrinking after all the offsets have been populated.
++    if (parameters->options().experimental_use_relr())
++        return true;
++    // We need to generate stubs, and hence perform relaxation if we are
++    // not doing relocatable linking.
++    return !parameters->options().relocatable();
++  }
+ 
+   bool
+   do_relax(int, const Input_objects*, Symbol_table*, Layout*, const Task*);
+@@ -2845,6 +2854,10 @@ class Target_arm : public Sized_target<32, big_endian>
+   Reloc_section*
+   rel_tls_desc_section(Layout*) const;
+ 
++  // Get the RELR dynamic reloc section, creating it if necessary.
++  Relr_section*
++  relr_dyn_section(Layout*);
++
+   // Return true if the symbol may need a COPY relocation.
+   // References from an executable object to non-function symbols
+   // defined in a dynamic object may need a COPY relocation.
+@@ -3009,6 +3022,8 @@ class Target_arm : public Sized_target<32, big_endian>
+   Reloc_section* rel_dyn_;
+   // The section to use for IRELATIVE relocs.
+   Reloc_section* rel_irelative_;
++  // The RELR dynamic reloc section.
++  Relr_section* relr_dyn_;
+   // Relocs saved to avoid a COPY reloc.
+   Copy_relocs<elfcpp::SHT_REL, 32, big_endian> copy_relocs_;
+   // Offset of the GOT entry for the TLS module index.
+@@ -4413,6 +4428,23 @@ Target_arm<big_endian>::rel_irelative_section(Layout* layout)
+   return this->rel_irelative_;
+ }
+ 
++// Get the RELR dynamic reloc section, creating it if necessary.
++
++template<bool big_endian>
++typename Target_arm<big_endian>::Relr_section*
++Target_arm<big_endian>::relr_dyn_section(Layout* layout)
++{
++  if (this->relr_dyn_ == NULL)
++    {
++      gold_assert(layout != NULL);
++      this->relr_dyn_ = new Relr_section();
++      layout->add_output_section_data(".relr.dyn", elfcpp::SHT_RELR,
++				      elfcpp::SHF_ALLOC, this->relr_dyn_,
++				      ORDER_DYNAMIC_RELOCS, false);
++    }
++  return this->relr_dyn_;
++}
++
+ 
+ // Insn_template methods.
+ 
+@@ -8600,13 +8632,22 @@ Target_arm<big_endian>::Scan::local(Symbol_table* symtab,
+       // relocate it easily.
+       if (parameters->options().output_is_position_independent())
+ 	{
+-	  Reloc_section* rel_dyn = target->rel_dyn_section(layout);
+ 	  unsigned int r_sym = elfcpp::elf_r_sym<32>(reloc.get_r_info());
+-	  // If we are to add more other reloc types than R_ARM_ABS32,
+-	  // we need to add check_non_pic(object, r_type) here.
+-	  rel_dyn->add_local_relative(object, r_sym, elfcpp::R_ARM_RELATIVE,
+-				      output_section, data_shndx,
+-				      reloc.get_r_offset(), is_ifunc);
++	  if (parameters->options().experimental_use_relr())
++	    {
++	      Relr_section* relr_dyn = target->relr_dyn_section(layout);
++	      relr_dyn->add_local_relative(object, r_sym, output_section,
++					    data_shndx, reloc.get_r_offset());
++	    }
++	  else
++	    {
++	      Reloc_section* rel_dyn = target->rel_dyn_section(layout);
++	      // If we are to add more other reloc types than R_ARM_ABS32,
++	      // we need to add check_non_pic(object, r_type) here.
++	      rel_dyn->add_local_relative(object, r_sym, elfcpp::R_ARM_RELATIVE,
++					  output_section, data_shndx,
++					  reloc.get_r_offset(), is_ifunc);
++	    }
+ 	}
+       break;
+ 
+@@ -8729,11 +8770,23 @@ Target_arm<big_endian>::Scan::local(Symbol_table* symtab,
+ 	    // dynamic RELATIVE relocation for this symbol's GOT entry.
+ 	    if (parameters->options().output_is_position_independent())
+ 	      {
+-		Reloc_section* rel_dyn = target->rel_dyn_section(layout);
++		unsigned int got_offset =
++		  object->local_got_offset(r_sym, GOT_TYPE_STANDARD);
+ 		unsigned int r_sym = elfcpp::elf_r_sym<32>(reloc.get_r_info());
+-		rel_dyn->add_local_relative(
+-		    object, r_sym, elfcpp::R_ARM_RELATIVE, got,
+-		    object->local_got_offset(r_sym, GOT_TYPE_STANDARD));
++		if (parameters->options().experimental_use_relr())
++		  {
++		    Relr_section* relr_dyn =
++		      target->relr_dyn_section(layout);
++		    relr_dyn->add_local_relative(object, r_sym,
++						 got, got_offset);
++		  }
++		else
++		  {
++		    Reloc_section* rel_dyn = target->rel_dyn_section(layout);
++		    rel_dyn->add_local_relative(object, r_sym,
++						elfcpp::R_ARM_RELATIVE,
++						got, got_offset);
++		  }
+ 	      }
+ 	  }
+       }
+@@ -9042,10 +9095,22 @@ Target_arm<big_endian>::Scan::global(Symbol_table* symtab,
+ 		      || r_type == elfcpp::R_ARM_ABS32_NOI)
+ 		     && gsym->can_use_relative_reloc(false))
+ 	      {
+-		Reloc_section* rel_dyn = target->rel_dyn_section(layout);
+-		rel_dyn->add_global_relative(gsym, elfcpp::R_ARM_RELATIVE,
+-					     output_section, object,
+-					     data_shndx, reloc.get_r_offset());
++		if (parameters->options().experimental_use_relr())
++		  {
++		    Relr_section* relr_dyn =
++		      target->relr_dyn_section(layout);
++		    relr_dyn->add_global_relative(gsym, output_section,
++						  object, data_shndx,
++						  reloc.get_r_offset());
++		  }
++		else
++		  {
++		    Reloc_section* rel_dyn = target->rel_dyn_section(layout);
++		    rel_dyn->add_global_relative(gsym, elfcpp::R_ARM_RELATIVE,
++						 output_section, object,
++						 data_shndx,
++						 reloc.get_r_offset());
++		  }
+ 	      }
+ 	    else
+ 	      {
+@@ -9212,9 +9277,21 @@ Target_arm<big_endian>::Scan::global(Symbol_table* symtab,
+ 		      gsym->set_needs_dynsym_value();
+ 		  }
+ 		if (is_new)
+-		  rel_dyn->add_global_relative(
+-		      gsym, elfcpp::R_ARM_RELATIVE, got,
+-		      gsym->got_offset(GOT_TYPE_STANDARD));
++		  {
++		    unsigned int got_off = gsym->got_offset(GOT_TYPE_STANDARD);
++		    if (parameters->options().experimental_use_relr())
++		      {
++			Relr_section* relr_dyn =
++			  target->relr_dyn_section(layout);
++			relr_dyn->add_global_relative(gsym, got, got_off);
++		      }
++		    else
++		      {
++			rel_dyn->add_global_relative(gsym,
++						     elfcpp::R_ARM_RELATIVE,
++						     got, got_off);
++		      }
++		  }
+ 	      }
+ 	  }
+       }
+@@ -9484,7 +9561,8 @@ Target_arm<big_endian>::do_finalize_sections(
+ 				  ? NULL
+ 				  : this->plt_->rel_plt());
+   layout->add_target_dynamic_tags(true, this->got_plt_, rel_plt,
+-				  this->rel_dyn_, true, false);
++				  this->rel_dyn_, true, false,
++				  this->relr_dyn_);
+ 
+   // Emit any relocs we saved in an attempt to avoid generating COPY
+   // relocs.
+@@ -12357,14 +12435,38 @@ Target_arm<big_endian>::do_relax(
+     Layout* layout,
+     const Task* task)
+ {
+-  // No need to generate stubs if this is a relocatable link.
+-  gold_assert(!parameters->options().relocatable());
++  if (pass == 1)
++    {
++      Layout::Section_list::const_iterator p = layout->section_list().begin();
++      for ( ; p != layout->section_list().end(); ++p)
++        {
++          if (is_prefix_of(".relr.dyn", (*p)->name()))
++            break;
++        }
++
++      if (p != layout->section_list().end())
++        {
++          Output_section * const os = *p;
++          for (Output_section::Input_section_list::iterator ip = os->input_sections().begin();
++               ip != os->input_sections().end();
++               ++ip)
++            {
++              Relr_section *od = static_cast<Relr_section *>(ip->output_section_data());
++              od->shrink_relocs();
++            }
++        }
+ 
+-  // If this is the first pass, we need to group input sections into
++      return true;
++    }
++
++  if (parameters->options().relocatable())
++    return false;
++
++  // If this is the second pass, we need to group input sections into
+   // stub groups.
+   bool done_exidx_fixup = false;
+   typedef typename Stub_table_list::iterator Stub_table_iterator;
+-  if (pass == 1)
++  if (pass == 2)
+     {
+       // Determine the stub group size.  The group size is the absolute
+       // value of the parameter --stub-group-size.  If --stub-group-size
+@@ -12434,7 +12536,7 @@ Target_arm<big_endian>::do_relax(
+     }
+   else
+     {
+-      // If this is not the first pass, addresses and file offsets have
++      // If this is not the second pass, addresses and file offsets have
+       // been reset at this point, set them here.
+       for (Stub_table_iterator sp = this->stub_tables_.begin();
+ 	   sp != this->stub_tables_.end();
+diff --git a/gold/layout.cc b/gold/layout.cc
+index 13e533aaf21..723a404d6ea 100644
+--- a/gold/layout.cc
++++ b/gold/layout.cc
+@@ -5055,7 +5055,8 @@ void
+ Layout::add_target_dynamic_tags(bool use_rel, const Output_data* plt_got,
+ 				const Output_data* plt_rel,
+ 				const Output_data_reloc_generic* dyn_rel,
+-				bool add_debug, bool dynrel_includes_plt)
++				bool add_debug, bool dynrel_includes_plt,
++				const Output_data_reloc_generic* dyn_relr)
+ {
+   Output_data_dynamic* odyn = this->dynamic_data_;
+   if (odyn == NULL)
+@@ -5128,6 +5129,17 @@ Layout::add_target_dynamic_tags(bool use_rel, const Output_data* plt_got,
+ 	}
+     }
+ 
++  if (dyn_relr != NULL && dyn_relr->output_section() != NULL)
++    {
++      const int size = parameters->target().get_size();
++      odyn->add_section_address(elfcpp::DT_RELR, dyn_relr->output_section());
++      odyn->add_section_size(elfcpp::DT_RELRSZ, dyn_relr->output_section());
++      odyn->add_constant(elfcpp::DT_RELRENT, size / 8);
++      if (parameters->options().combreloc())
++        odyn->add_constant(elfcpp::DT_RELRCOUNT,
++			   dyn_relr->relative_reloc_count());
++    }
++
+   if (add_debug && !parameters->options().shared())
+     {
+       // The value of the DT_DEBUG tag is filled in by the dynamic
+diff --git a/gold/layout.h b/gold/layout.h
+index fd5878da18b..8a9d1864a67 100644
+--- a/gold/layout.h
++++ b/gold/layout.h
+@@ -945,7 +945,8 @@ class Layout
+   add_target_dynamic_tags(bool use_rel, const Output_data* plt_got,
+ 			  const Output_data* plt_rel,
+ 			  const Output_data_reloc_generic* dyn_rel,
+-			  bool add_debug, bool dynrel_includes_plt);
++			  bool add_debug, bool dynrel_includes_plt,
++			  const Output_data_reloc_generic* dyn_relr = NULL);
+ 
+   // Add a target-specific dynamic tag with constant value.
+   void
+diff --git a/gold/options.h b/gold/options.h
+index ea379080a97..6e32d5dd6ae 100644
+--- a/gold/options.h
++++ b/gold/options.h
+@@ -846,6 +846,10 @@ class General_options
+ 		 N_("Exclude libraries from automatic export"),
+ 		 N_(("lib,lib ...")));
+ 
++  DEFINE_bool(experimental_use_relr, options::TWO_DASHES, '\0', false,
++	      N_("Generate RELR dynamic relocations"),
++	      N_("Do not generate RELR dynamic relocations"));
++
+   DEFINE_bool(export_dynamic, options::TWO_DASHES, 'E', false,
+ 	      N_("Export all dynamic symbols"),
+ 	      N_("Do not export all dynamic symbols"));
+diff --git a/gold/output.cc b/gold/output.cc
+index 75d2fc354a5..697f179097e 100644
+--- a/gold/output.cc
++++ b/gold/output.cc
+@@ -1236,6 +1236,26 @@ Output_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>::write(
+   orel.put_r_addend(addend);
+ }
+ 
++// Write out a Relr relocation.
++
++template<bool dynamic, int size, bool big_endian>
++void
++Output_reloc<elfcpp::SHT_RELR, dynamic, size, big_endian>::write(
++    unsigned char* pov) const
++{
++  elfcpp::Relr_write<size, big_endian> orel(pov);
++  if (this->bits_ == 0)
++    {
++      // This is not a continuation entry. Output full address.
++      orel.put_r_data(this->rel_.get_address());
++    }
++  else
++    {
++      // This is a continuation entry. Output the bitmap.
++      orel.put_r_data((this->bits_<<1)|1);
++    }
++}
++
+ // Output_data_reloc_base methods.
+ 
+ // Adjust the output section.
+@@ -1249,6 +1269,8 @@ Output_data_reloc_base<sh_type, dynamic, size, big_endian>
+     os->set_entsize(elfcpp::Elf_sizes<size>::rel_size);
+   else if (sh_type == elfcpp::SHT_RELA)
+     os->set_entsize(elfcpp::Elf_sizes<size>::rela_size);
++  else if (sh_type == elfcpp::SHT_RELR)
++    os->set_entsize(elfcpp::Elf_sizes<size>::relr_size);
+   else
+     gold_unreachable();
+ 
+@@ -1288,6 +1310,15 @@ Output_data_reloc_base<sh_type, dynamic, size, big_endian>::do_write(
+   this->do_write_generic<Writer>(of);
+ }
+ 
++template<bool dynamic, int size, bool big_endian>
++void
++Output_data_reloc<elfcpp::SHT_RELR, dynamic, size, big_endian>::do_write(
++    Output_file* of)
++{
++  typedef Output_reloc_writer<elfcpp::SHT_RELR, dynamic, size, big_endian> Writer;
++  this->template do_write_generic<Writer>(of);
++}
++
+ // Class Output_relocatable_relocs.
+ 
+ template<int sh_type, int size, bool big_endian>
+@@ -5544,6 +5575,26 @@ template
+ class Output_data_reloc<elfcpp::SHT_RELA, true, 64, true>;
+ #endif
+ 
++#ifdef HAVE_TARGET_32_LITTLE
++template
++class Output_data_reloc<elfcpp::SHT_RELR, true, 32, false>;
++#endif
++
++#ifdef HAVE_TARGET_32_BIG
++template
++class Output_data_reloc<elfcpp::SHT_RELR, true, 32, true>;
++#endif
++
++#ifdef HAVE_TARGET_64_LITTLE
++template
++class Output_data_reloc<elfcpp::SHT_RELR, true, 64, false>;
++#endif
++
++#ifdef HAVE_TARGET_64_BIG
++template
++class Output_data_reloc<elfcpp::SHT_RELR, true, 64, true>;
++#endif
++
+ #ifdef HAVE_TARGET_32_LITTLE
+ template
+ class Output_relocatable_relocs<elfcpp::SHT_REL, 32, false>;
+diff --git a/gold/output.h b/gold/output.h
+index 77b6697e067..aff10f4ab9a 100644
+--- a/gold/output.h
++++ b/gold/output.h
+@@ -558,7 +558,6 @@ class Output_data
+   void
+   set_current_data_size_for_child(off_t data_size)
+   {
+-    gold_assert(!this->is_data_size_valid_);
+     this->data_size_ = data_size;
+   }
+ 
+@@ -1500,6 +1499,116 @@ class Output_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
+   Addend addend_;
+ };
+ 
++// The SHT_RELR version of Output_reloc<>.  This is a relative reloc,
++// and holds nothing but an offset.  Rather than duplicate all the fields
++// of the SHT_REL version except for the symbol and relocation type, we
++// simply use an SHT_REL as a proxy.
++
++template<bool dynamic, int size, bool big_endian>
++class Output_reloc<elfcpp::SHT_RELR, dynamic, size, big_endian>
++{
++ public:
++  typedef typename elfcpp::Elf_types<size>::Elf_Addr Address;
++  typedef typename elfcpp::Elf_types<size>::Elf_WXword Relr_Data;
++
++  // An uninitialized entry.
++  Output_reloc()
++    : rel_()
++  { }
++
++  // A reloc against a global symbol.
++
++  Output_reloc(Symbol* gsym, Output_data* od, Address address)
++    : rel_(gsym, 0, od, address, true, true, false),
++      bits_(0)
++  { }
++
++  Output_reloc(Symbol* gsym, Sized_relobj<size, big_endian>* relobj,
++	       unsigned int shndx, Address address)
++    : rel_(gsym, 0, relobj, shndx, address, true, true, false),
++      bits_(0)
++  { }
++
++  // A reloc against a local symbol.
++
++  Output_reloc(Sized_relobj<size, big_endian>* relobj,
++	       unsigned int local_sym_index, Output_data* od, Address address,
++	       bool is_section_symbol)
++    : rel_(relobj, local_sym_index, 0, od, address, true,
++	   true, is_section_symbol, false),
++      bits_(0)
++  { }
++
++  Output_reloc(Sized_relobj<size, big_endian>* relobj,
++	       unsigned int local_sym_index, unsigned int shndx,
++	       Address address, bool is_section_symbol)
++    : rel_(relobj, local_sym_index, 0, shndx, address, true,
++	   true, is_section_symbol, false),
++      bits_(0)
++  { }
++
++  // A reloc against the STT_SECTION symbol of an output section.
++
++  Output_reloc(Output_section* os, Output_data* od, Address address)
++    : rel_(os, 0, od, address, true),
++      bits_(0)  { }
++
++  Output_reloc(Output_section* os, Sized_relobj<size, big_endian>* relobj,
++	       unsigned int shndx, Address address)
++    : rel_(os, 0, relobj, shndx, address, true),
++      bits_(0)  { }
++
++  // A relative relocation with no symbol.
++
++  Output_reloc(Output_data* od, Address address)
++    : rel_(0, od, address, true),
++      bits_(0)
++  { }
++
++  Output_reloc(Sized_relobj<size, big_endian>* relobj,
++	       unsigned int shndx, Address address)
++    : rel_(0, relobj, shndx, address, true),
++      bits_(0)
++  { }
++
++  // Return whether this is a RELATIVE relocation.
++  bool
++  is_relative() const
++  { return true; }
++
++  // Return whether this is a relocation which should not use
++  // a symbol, but which obtains its addend from a symbol.
++  bool
++  is_symbolless() const
++  { return true; }
++
++  // If this relocation is against an input section, return the
++  // relocatable object containing the input section.
++  Sized_relobj<size, big_endian>*
++  get_relobj() const
++  { return this->rel_.get_relobj(); }
++
++  // Write the reloc entry to an output view.
++  void
++  write(unsigned char* pov) const;
++
++  // Return whether this reloc should be sorted before the argument
++  // when sorting dynamic relocs.
++  bool
++  sort_before(const Output_reloc<elfcpp::SHT_RELR, dynamic, size, big_endian>&
++	      r2) const
++  { return this->rel_.compare(r2.rel_) < 0; }
++
++ public:
++  // The basic reloc.
++  Output_reloc<elfcpp::SHT_REL, dynamic, size, big_endian> rel_;
++
++  // Relocation bitmap for encoding offsets continuing from previous entry.
++  //   https://groups.google.com/d/msg/generic-abi/bX460iggiKg/Pi9aSwwABgAJ
++  // 31-bits/63-bits.
++  Relr_Data bits_;
++};
++
+ // Output_data_reloc_generic is a non-template base class for
+ // Output_data_reloc_base.  This gives the generic code a way to hold
+ // a pointer to a reloc section.
+@@ -1675,7 +1784,7 @@ class Output_data_reloc_base : public Output_data_reloc_generic
+       relobj->add_dyn_reloc(this->relocs_.size() - 1);
+   }
+ 
+- private:
++ protected:
+   typedef std::vector<Output_reloc_type> Relocs;
+ 
+   // The class used to sort the relocations.
+@@ -2344,6 +2453,231 @@ class Output_data_reloc<elfcpp::SHT_RELA, dynamic, size, big_endian>
+   }
+ };
+ 
++// The SHT_RELR version of Output_data_reloc.
++
++template<bool dynamic, int size, bool big_endian>
++class Output_data_reloc<elfcpp::SHT_RELR, dynamic, size, big_endian>
++  : public Output_data_reloc_base<elfcpp::SHT_RELR, dynamic, size, big_endian>
++{
++ private:
++  typedef Output_data_reloc_base<elfcpp::SHT_RELR, dynamic, size,
++				 big_endian> Base;
++  typedef typename elfcpp::Elf_types<size>::Elf_WXword Relr_Data;
++
++ public:
++  typedef typename Base::Output_reloc_type Output_reloc_type;
++  typedef typename Output_reloc_type::Address Address;
++  typedef typename Base::Sort_relocs_comparison Sort_relocs_comparison;
++  typedef typename Base::Relocs Relocs;
++
++  Output_data_reloc()
++    : Output_data_reloc_base<elfcpp::SHT_RELR, dynamic, size, big_endian>(false)
++  { }
++
++  void do_write(Output_file *);
++
++  template<class Output_reloc_writer>
++  void
++  do_write_generic(Output_file *of)
++  {
++    const off_t off = this->offset();
++    const off_t oview_size = this->data_size();
++    unsigned char* const oview = of->get_output_view(off, oview_size);
++
++    unsigned char* pov = oview;
++    for (typename Relocs::const_iterator p = this->relocs_.begin();
++	 p != this->relocs_.end();
++	 ++p)
++      {
++	Output_reloc_writer::write(p, pov);
++	pov += Base::reloc_size;
++      }
++
++    gold_assert(pov - oview == oview_size);
++
++    of->write_output_view(off, oview_size, oview);
++
++    // We no longer need the relocation entries.
++    this->relocs_.clear();
++  }
++
++  void shrink_relocs()
++  {
++    Relocs shrink_relocs;
++    gold_assert(dynamic);
++    shrink_relocs.clear();
++
++    // Always sort the relocs_ vector for RELR relocs.
++    std::sort(this->relocs_.begin(), this->relocs_.end(),
++              Sort_relocs_comparison());
++
++    // Word size in number of bytes, used for computing the offsets bitmap.
++    unsigned int word_size = size / 8;
++
++    // Number of bits to use for the relocation offsets bitmap.
++    // These many relative relocations can be encoded in a single entry.
++    unsigned int n_bits = size - 1;
++
++    Address base = 0;
++    typename Relocs::iterator curr = this->relocs_.begin();
++    while (curr != this->relocs_.end())
++      {
++        Address current = curr->rel_.get_address();
++        // Odd addresses are not supported in SHT_RELR.
++        gold_assert(current%2 == 0);
++
++        Relr_Data bits = 0;
++        typename Relocs::iterator next = curr;
++        if ((base > 0) && (base <= current))
++          {
++            while (next != this->relocs_.end())
++              {
++                Address delta = next->rel_.get_address() - base;
++                // If next is too far out, it cannot be folded into curr.
++                if (delta >= (n_bits * word_size))
++                  break;
++                // If next is not a multiple of word_size away, it cannot
++                // be folded into curr.
++                if ((delta % word_size) != 0)
++                  break;
++                // next can be folded into curr, add it to the bitmap.
++                bits |= 1ULL << (delta / word_size);
++                ++next;
++              }
++          }
++
++        curr->bits_ = bits;
++        shrink_relocs.push_back(*curr);
++        if (bits == 0)
++          {
++            // This is not a continuation entry, only one offset was
++            // consumed. Set base offset for subsequent bitmap entries.
++            base = current + word_size;
++            ++curr;
++          }
++        else
++          {
++            // This is a continuation entry encoding multiple offsets
++            // in a bitmap. Advance base offset by n_bits words.
++            base += n_bits * word_size;
++            curr = next;
++          }
++      }
++
++    // Copy shrink_relocs vector to relocs_
++    this->relocs_.clear();
++    for (typename Relocs::const_iterator p = shrink_relocs.begin();
++         p != shrink_relocs.end();
++         ++p)
++      {
++        this->relocs_.push_back(*p);
++      }
++    this->set_current_data_size(this->relocs_.size() * Base::reloc_size);
++  }
++
++  void
++  add_global_generic(Symbol*, unsigned int, Output_data*, uint64_t, uint64_t)
++  {
++    gold_unreachable();
++  }
++
++  void
++  add_global_generic(Symbol*, unsigned int, Output_data*, Relobj*,
++		     unsigned int, uint64_t, uint64_t)
++  {
++    gold_unreachable();
++  }
++
++  // Add a RELATIVE reloc against a global symbol.  The final relocation
++  // will not reference the symbol.
++
++  void
++  add_global_relative(Symbol* gsym, Output_data* od, Address address)
++  {
++    this->add(od, Output_reloc_type(gsym, od, address));
++  }
++
++  void
++  add_global_relative(Symbol* gsym, Output_data* od,
++		      Sized_relobj<size, big_endian>* relobj,
++		      unsigned int shndx, Address address)
++  {
++    this->add(od, Output_reloc_type(gsym, relobj, shndx, address));
++  }
++
++  void
++  add_local_generic(Relobj*, unsigned int, unsigned int, Output_data*, uint64_t,
++		    uint64_t)
++  {
++    gold_unreachable();
++  }
++
++  void
++  add_local_generic(Relobj*, unsigned int, unsigned int, Output_data*,
++		    unsigned int, uint64_t, uint64_t)
++  {
++    gold_unreachable();
++  }
++
++  // Add a RELATIVE reloc against a local symbol.
++
++  void
++  add_local_relative(Sized_relobj<size, big_endian>* relobj,
++		     unsigned int local_sym_index, Output_data* od,
++		     Address address)
++  {
++    this->add(od, Output_reloc_type(relobj, local_sym_index, od, address,
++				    false));
++  }
++
++  void
++  add_local_relative(Sized_relobj<size, big_endian>* relobj,
++		     unsigned int local_sym_index, Output_data* od,
++		     unsigned int shndx, Address address)
++  {
++    this->add(od, Output_reloc_type(relobj, local_sym_index, shndx, address,
++				    false));
++  }
++
++  void
++  add_output_section_generic(Output_section*, unsigned int, Output_data*,
++			     uint64_t, uint64_t)
++  {
++    gold_unreachable();
++  }
++
++  void
++  add_output_section_generic(Output_section*, unsigned int, Output_data*,
++			     Relobj*, unsigned int, uint64_t, uint64_t)
++  {
++    gold_unreachable();
++  }
++
++  // Add a RELATIVE reloc against an output section symbol.
++
++  void
++  add_output_section_relative(Output_section* os, Output_data* od,
++			      Address address)
++  { this->add(od, Output_reloc_type(os, od, address)); }
++
++  void
++  add_output_section_relative(Output_section* os, Output_data* od,
++			      Sized_relobj<size, big_endian>* relobj,
++			      unsigned int shndx, Address address)
++  { this->add(od, Output_reloc_type(os, relobj, shndx, address)); }
++
++  // Add a relative relocation
++
++  void
++  add_relative(Output_data* od, Address address)
++  { this->add(od, Output_reloc_type(od, address)); }
++
++  void
++  add_relative(Output_data* od, Sized_relobj<size, big_endian>* relobj,
++	       unsigned int shndx, Address address)
++  { this->add(od, Output_reloc_type(relobj, shndx, address)); }
++};
++
+ // Output_relocatable_relocs represents a relocation section in a
+ // relocatable link.  The actual data is written out in the target
+ // hook relocate_relocs.  This just saves space for it.
+diff --git a/gold/reloc-types.h b/gold/reloc-types.h
+index 3671063ef0f..ee5388df6d7 100644
+--- a/gold/reloc-types.h
++++ b/gold/reloc-types.h
+@@ -79,6 +79,26 @@ struct Reloc_types<elfcpp::SHT_RELA, size, big_endian>
+   { p->put_r_addend(val); }
+ };
+ 
++template<int size, bool big_endian>
++struct Reloc_types<elfcpp::SHT_RELR, size, big_endian>
++{
++  typedef typename elfcpp::Relr<size, big_endian> Reloc;
++  typedef typename elfcpp::Relr_write<size, big_endian> Reloc_write;
++  static const int reloc_size = elfcpp::Elf_sizes<size>::relr_size;
++
++  static inline typename elfcpp::Elf_types<size>::Elf_Swxword
++  get_reloc_addend(const Reloc*)
++  { gold_unreachable(); }
++
++  static inline typename elfcpp::Elf_types<size>::Elf_Swxword
++  get_reloc_addend_noerror(const Reloc*)
++  { return 0; }
++
++  static inline void
++  set_reloc_addend(Reloc_write*,
++		   typename elfcpp::Elf_types<size>::Elf_Swxword)
++  { gold_unreachable(); }
++};
+ }; // End namespace gold.
+ 
+ #endif // !defined(GOLD_RELOC_TYPE_SH)
+diff --git a/gold/x86_64.cc b/gold/x86_64.cc
+index 1d9d9209bf3..d4e57e84ed5 100644
+--- a/gold/x86_64.cc
++++ b/gold/x86_64.cc
+@@ -698,12 +698,13 @@ class Target_x86_64 : public Sized_target<size, false>
+   // In the x86_64 ABI (p 68), it says "The AMD64 ABI architectures
+   // uses only Elf64_Rela relocation entries with explicit addends."
+   typedef Output_data_reloc<elfcpp::SHT_RELA, true, size, false> Reloc_section;
++  typedef Output_data_reloc<elfcpp::SHT_RELR, true, size, false> Relr_section;
+ 
+   Target_x86_64(const Target::Target_info* info = &x86_64_info)
+     : Sized_target<size, false>(info),
+       got_(NULL), plt_(NULL), got_plt_(NULL), got_irelative_(NULL),
+       got_tlsdesc_(NULL), global_offset_table_(NULL), rela_dyn_(NULL),
+-      rela_irelative_(NULL), copy_relocs_(elfcpp::R_X86_64_COPY),
++      rela_irelative_(NULL), relr_dyn_(NULL), copy_relocs_(elfcpp::R_X86_64_COPY),
+       got_mod_index_offset_(-1U), tlsdesc_reloc_info_(),
+       tls_base_symbol_defined_(false), isa_1_used_(0), isa_1_needed_(0),
+       feature_1_(0), object_isa_1_used_(0), object_feature_1_(0),
+@@ -982,6 +983,43 @@ class Target_x86_64 : public Sized_target<size, false>
+ 		   Output_data_space* got_irelative,
+ 		   unsigned int plt_count);
+ 
++  bool
++  do_may_relax() const
++  {
++    // If generating '.relr.dyn' section, we need a relaxation pass
++    // to do the shrinking after all the offsets have been populated.
++    return parameters->options().experimental_use_relr();
++  }
++
++  bool
++  do_relax (int pass, const Input_objects*, Symbol_table*, Layout* layout, const Task*)
++  {
++    if (pass > 1)
++      return false;
++
++    Layout::Section_list::const_iterator p = layout->section_list().begin();
++    for ( ; p != layout->section_list().end(); ++p)
++      {
++	if (is_prefix_of(".relr.dyn", (*p)->name()))
++	  break;
++      }
++
++    if (p == layout->section_list().end())
++      return false;
++
++    Output_section * const os = *p;
++    for (Output_section::Input_section_list::iterator ip = os->input_sections().begin();
++         ip != os->input_sections().end();
++         ++ip)
++      {
++        Relr_section *od = static_cast<Relr_section *>(ip->output_section_data());
++        od->shrink_relocs();
++      }
++
++    return true;
++  }
++
++
+  private:
+   // The class which scans relocations.
+   class Scan
+@@ -1289,6 +1327,10 @@ class Target_x86_64 : public Sized_target<size, false>
+   Reloc_section*
+   rela_irelative_section(Layout*);
+ 
++  // Get the RELR dynamic reloc section, creating it if necessary.
++  Relr_section*
++  relr_dyn_section(Layout*);
++
+   // Add a potential copy relocation.
+   void
+   copy_reloc(Symbol_table* symtab, Layout* layout,
+@@ -1367,6 +1409,8 @@ class Target_x86_64 : public Sized_target<size, false>
+   Reloc_section* rela_dyn_;
+   // The section to use for IRELATIVE relocs.
+   Reloc_section* rela_irelative_;
++  // The RELR dynamic reloc section.
++  Relr_section* relr_dyn_;
+   // Relocs saved to avoid a COPY reloc.
+   Copy_relocs<elfcpp::SHT_RELA, size, false> copy_relocs_;
+   // Offset of the GOT entry for the TLS module index.
+@@ -1678,6 +1722,23 @@ Target_x86_64<size>::do_finalize_gnu_properties(Layout* layout) const
+ 		 this->feature_1_);
+ }
+ 
++// Get the RELR dynamic reloc section, creating it if necessary.
++
++template<int size>
++typename Target_x86_64<size>::Relr_section*
++Target_x86_64<size>::relr_dyn_section(Layout* layout)
++{
++  if (this->relr_dyn_ == NULL)
++    {
++      gold_assert(layout != NULL);
++      this->relr_dyn_ = new Relr_section();
++      layout->add_output_section_data(".relr.dyn", elfcpp::SHT_RELR,
++				      elfcpp::SHF_ALLOC, this->relr_dyn_,
++				      ORDER_DYNAMIC_RELOCS, false);
++    }
++  return this->relr_dyn_;
++}
++
+ // Write the first three reserved words of the .got.plt section.
+ // The remainder of the section is written while writing the PLT
+ // in Output_data_plt_i386::do_write.
+@@ -3596,14 +3657,25 @@ Target_x86_64<size>::Scan::local(Symbol_table* symtab,
+       if (parameters->options().output_is_position_independent())
+ 	{
+ 	  unsigned int r_sym = elfcpp::elf_r_sym<size>(reloc.get_r_info());
+-	  Reloc_section* rela_dyn = target->rela_dyn_section(layout);
+-	  rela_dyn->add_local_relative(object, r_sym,
+-				       (size == 32
+-					? elfcpp::R_X86_64_RELATIVE64
+-					: elfcpp::R_X86_64_RELATIVE),
+-				       output_section, data_shndx,
+-				       reloc.get_r_offset(),
+-				       reloc.get_r_addend(), is_ifunc);
++	  if (size == 64
++	      && !is_ifunc
++	      && parameters->options().experimental_use_relr())
++	    {
++	      Relr_section* relr_dyn = target->relr_dyn_section(layout);
++	      relr_dyn->add_local_relative(object, r_sym, output_section,
++					   data_shndx, reloc.get_r_offset());
++	    }
++	  else
++	    {
++	      Reloc_section* rela_dyn = target->rela_dyn_section(layout);
++	      rela_dyn->add_local_relative(object, r_sym,
++					   (size == 32
++					    ? elfcpp::R_X86_64_RELATIVE64
++					    : elfcpp::R_X86_64_RELATIVE),
++					   output_section, data_shndx,
++					   reloc.get_r_offset(),
++					   reloc.get_r_addend(), is_ifunc);
++	    }
+ 	}
+       break;
+ 
+@@ -3621,12 +3693,22 @@ Target_x86_64<size>::Scan::local(Symbol_table* symtab,
+ 	  if (size == 32 && r_type == elfcpp::R_X86_64_32)
+ 	    {
+ 	      unsigned int r_sym = elfcpp::elf_r_sym<size>(reloc.get_r_info());
+-	      Reloc_section* rela_dyn = target->rela_dyn_section(layout);
+-	      rela_dyn->add_local_relative(object, r_sym,
+-					   elfcpp::R_X86_64_RELATIVE,
+-					   output_section, data_shndx,
+-					   reloc.get_r_offset(),
+-					   reloc.get_r_addend(), is_ifunc);
++	      if (!is_ifunc && parameters->options().experimental_use_relr())
++		{
++		  Relr_section* relr_dyn = target->relr_dyn_section(layout);
++		  relr_dyn->add_local_relative(object, r_sym, output_section,
++					       data_shndx,
++					       reloc.get_r_offset());
++		}
++	      else
++		{
++		  Reloc_section* rela_dyn = target->rela_dyn_section(layout);
++		  rela_dyn->add_local_relative(object, r_sym,
++					       elfcpp::R_X86_64_RELATIVE,
++					       output_section, data_shndx,
++					       reloc.get_r_offset(),
++					       reloc.get_r_addend(), is_ifunc);
++		}
+ 	      break;
+ 	    }
+ 
+@@ -3727,24 +3809,33 @@ Target_x86_64<size>::Scan::local(Symbol_table* symtab,
+ 	    // dynamic relocation for this symbol's GOT entry.
+ 	    if (parameters->options().output_is_position_independent())
+ 	      {
++		unsigned int got_offset =
++		  object->local_got_offset(r_sym, GOT_TYPE_STANDARD);
+ 		Reloc_section* rela_dyn = target->rela_dyn_section(layout);
+ 		// R_X86_64_RELATIVE assumes a 64-bit relocation.
+-		if (r_type != elfcpp::R_X86_64_GOT32)
+-		  {
+-		    unsigned int got_offset =
+-		      object->local_got_offset(r_sym, GOT_TYPE_STANDARD);
+-		    rela_dyn->add_local_relative(object, r_sym,
+-						 elfcpp::R_X86_64_RELATIVE,
+-						 got, got_offset, 0, is_ifunc);
+-		  }
+-		else
++		if (r_type == elfcpp::R_X86_64_GOT32)
+ 		  {
+ 		    this->check_non_pic(object, r_type, NULL);
+ 
+ 		    gold_assert(lsym.get_st_type() != elfcpp::STT_SECTION);
+ 		    rela_dyn->add_local(
+ 			object, r_sym, r_type, got,
+-			object->local_got_offset(r_sym, GOT_TYPE_STANDARD), 0);
++			got_offset, 0);
++		  }
++		else if (size == 64
++			 && !is_ifunc
++			 && parameters->options().experimental_use_relr())
++		  {
++		    Relr_section* relr_dyn =
++		      target->relr_dyn_section(layout);
++		    relr_dyn->add_local_relative(object, r_sym,
++						 got, got_offset);
++		  }
++		else
++		  {
++		    rela_dyn->add_local_relative(object, r_sym,
++						 elfcpp::R_X86_64_RELATIVE,
++						 got, got_offset, 0, is_ifunc);
+ 		  }
+ 	      }
+ 	  }
+@@ -4108,12 +4199,24 @@ Target_x86_64<size>::Scan::global(Symbol_table* symtab,
+ 		      || (size == 32 && r_type == elfcpp::R_X86_64_32))
+ 		     && gsym->can_use_relative_reloc(false))
+ 	      {
+-		Reloc_section* rela_dyn = target->rela_dyn_section(layout);
+-		rela_dyn->add_global_relative(gsym, elfcpp::R_X86_64_RELATIVE,
+-					      output_section, object,
+-					      data_shndx,
+-					      reloc.get_r_offset(),
+-					      reloc.get_r_addend(), false);
++		if (parameters->options().experimental_use_relr())
++		  {
++		    Relr_section* relr_dyn =
++		      target->relr_dyn_section(layout);
++		    relr_dyn->add_global_relative(gsym, output_section,
++						  object, data_shndx,
++						  reloc.get_r_offset());
++		  }
++		else
++		  {
++		    Reloc_section* rela_dyn = target->rela_dyn_section(layout);
++		    rela_dyn->add_global_relative(gsym,
++						  elfcpp::R_X86_64_RELATIVE,
++						  output_section, object,
++						  data_shndx,
++						  reloc.get_r_offset(),
++						  reloc.get_r_addend(), false);
++		  }
+ 	      }
+ 	    else
+ 	      {
+@@ -4251,9 +4354,18 @@ Target_x86_64<size>::Scan::global(Symbol_table* symtab,
+ 		if (is_new)
+ 		  {
+ 		    unsigned int got_off = gsym->got_offset(GOT_TYPE_STANDARD);
+-		    rela_dyn->add_global_relative(gsym,
+-						  elfcpp::R_X86_64_RELATIVE,
+-						  got, got_off, 0, false);
++		    if (parameters->options().experimental_use_relr())
++		      {
++			Relr_section* relr_dyn =
++			  target->relr_dyn_section(layout);
++			relr_dyn->add_global_relative(gsym, got, got_off);
++		      }
++		    else
++		      {
++			rela_dyn->add_global_relative(gsym,
++						      elfcpp::R_X86_64_RELATIVE,
++						      got, got_off, 0, false);
++		      }
+ 		  }
+ 	      }
+ 	  }
+@@ -4522,7 +4634,8 @@ Target_x86_64<size>::do_finalize_sections(
+ 				  ? NULL
+ 				  : this->plt_->rela_plt());
+   layout->add_target_dynamic_tags(false, this->got_plt_, rel_plt,
+-				  this->rela_dyn_, true, false);
++				  this->rela_dyn_, true, false,
++				  this->relr_dyn_);
+ 
+   // Fill in some more dynamic tags.
+   Output_data_dynamic* const odyn = layout->dynamic_data();
+diff --git a/include/elf/common.h b/include/elf/common.h
+index 4d94c4fd5b3..83374777d20 100644
+--- a/include/elf/common.h
++++ b/include/elf/common.h
+@@ -526,6 +526,10 @@
+ #define SHT_GNU_verneed	SHT_SUNW_verneed
+ #define SHT_GNU_versym	SHT_SUNW_versym
+ 
++/* Experimental support for SHT_RELR sections. For details, see proposal
++   at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg */
++#define SHT_RELR	0x6fffff00	/* Relative relocations, only offsets */
++
+ #define SHT_LOPROC	0x70000000	/* Processor-specific semantics, lo */
+ #define SHT_HIPROC	0x7FFFFFFF	/* Processor-specific semantics, hi */
+ #define SHT_LOUSER	0x80000000	/* Application-specific semantics */
+@@ -1041,6 +1045,13 @@
+ /* This tag is a GNU extension to the Solaris version scheme.  */
+ #define DT_VERSYM	0x6ffffff0
+ 
++/* Experimental support for SHT_RELR sections. For details, see proposal
++   at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg */
++#define DT_RELR		0x6fffe000
++#define DT_RELRSZ	0x6fffe001
++#define DT_RELRENT	0x6fffe003
++#define DT_RELRCOUNT	0x6fffe005
++
+ #define DT_LOPROC	0x70000000
+ #define DT_HIPROC	0x7fffffff
+ 
+diff --git a/include/elf/external.h b/include/elf/external.h
+index 230fdabd87a..6a43ebe9daf 100644
+--- a/include/elf/external.h
++++ b/include/elf/external.h
+@@ -211,6 +211,10 @@ typedef struct {
+   unsigned char	r_addend[4];	/* Constant addend used to compute value */
+ } Elf32_External_Rela;
+ 
++typedef struct {
++  unsigned char r_data[4];	/* jump and bitmap for relative relocations */
++} Elf32_External_Relr;
++
+ typedef struct {
+   unsigned char r_offset[8];	/* Location at which to apply the action */
+   unsigned char	r_info[8];	/* index and type of relocation */
+@@ -222,6 +226,10 @@ typedef struct {
+   unsigned char	r_addend[8];	/* Constant addend used to compute value */
+ } Elf64_External_Rela;
+ 
++typedef struct {
++  unsigned char r_data[8];	/* jump and bitmap for relative relocations */
++} Elf64_External_Relr;
++
+ /* dynamic section structure */
+ 
+ typedef struct {
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0007-move-SHT_RELR-section-type-to-the-generic-range.patch b/sys-devel/binutils/files/0007-move-SHT_RELR-section-type-to-the-generic-range.patch
new file mode 100644
index 0000000..4845a9f
--- /dev/null
+++ b/sys-devel/binutils/files/0007-move-SHT_RELR-section-type-to-the-generic-range.patch
@@ -0,0 +1,149 @@
+From 8bcba7032e380b69ef8a684706473509c1bcb5f7 Mon Sep 17 00:00:00 2001
+From: Rahul Chaudhry <rahulchaudhry@google.com>
+Date: Sat, 17 Mar 2018 15:31:31 -0800
+Subject: [PATCH 07/14] move SHT_RELR section type to the generic range.
+
+Proposal for adding SHT_RELR sections in generic-abi is at
+https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
+
+Experimental support for SHT_RELR sections is available in the aosp
+binutils repository, with the section type and dynamic array tags
+defined in the OS specific range.
+
+This patch moves those definitions to the generic range so we can load
+binaries containing SHT_RELR sections using the experimental support in
+sys-libs/glibc.
+
+SHT_RELR sections are supported for arm, aarch64, and x86_64 targets.
+To enable them, pass '--experimental-use-relr' flag to gold.
+
+Definitions for the new ELF section type and dynamic array tags, as well
+as the encoding used in the new section are all under discussion and are
+subject to change. We plan to send the patch upstream after the gABI has
+been updated to include the new definitions.
+
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+[Adrian Ratiu: regenerated as proper git format-patch.]
+
+Change-Id: I933355aa2da06b7c58de2e6e7ff93798ad6eb156
+---
+ elfcpp/elfcpp.h      | 18 +++++++-----------
+ include/elf/common.h | 17 ++++++-----------
+ 2 files changed, 13 insertions(+), 22 deletions(-)
+
+diff --git a/elfcpp/elfcpp.h b/elfcpp/elfcpp.h
+index 9bbe4bfef86..a3a25de4c16 100644
+--- a/elfcpp/elfcpp.h
++++ b/elfcpp/elfcpp.h
+@@ -358,6 +358,7 @@ enum SHT
+   SHT_PREINIT_ARRAY = 16,
+   SHT_GROUP = 17,
+   SHT_SYMTAB_SHNDX = 18,
++  SHT_RELR = 19,
+   SHT_LOOS = 0x60000000,
+   SHT_HIOS = 0x6fffffff,
+   SHT_LOPROC = 0x70000000,
+@@ -386,10 +387,6 @@ enum SHT
+   SHT_SUNW_versym = 0x6fffffff,
+   SHT_GNU_versym = 0x6fffffff,
+ 
+-  // Experimental support for SHT_RELR sections. For details, see proposal
+-  // at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
+-  SHT_RELR = 0x6fffff00,
+-
+   SHT_SPARC_GOTDATA = 0x70000000,
+ 
+   // ARM-specific section types.
+@@ -725,6 +722,11 @@ enum DT
+ 
+   DT_PREINIT_ARRAY = 32,
+   DT_PREINIT_ARRAYSZ = 33,
++  DT_SYMTAB_SHNDX = 34,
++  DT_RELRSZ = 35,
++  DT_RELR = 36,
++  DT_RELRENT = 37,
++
+   DT_LOOS = 0x6000000d,
+   DT_HIOS = 0x6ffff000,
+   DT_LOPROC = 0x70000000,
+@@ -759,6 +761,7 @@ enum DT
+   DT_SYMINFO = 0x6ffffeff,
+   DT_ADDRRNGHI = 0x6ffffeff,
+ 
++  DT_RELRCOUNT = 0x6ffffff8,
+   DT_RELACOUNT = 0x6ffffff9,
+   DT_RELCOUNT = 0x6ffffffa,
+   DT_FLAGS_1 = 0x6ffffffb,
+@@ -769,13 +772,6 @@ enum DT
+ 
+   DT_VERSYM = 0x6ffffff0,
+ 
+-  // Experimental support for SHT_RELR sections. For details, see proposal
+-  // at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
+-  DT_RELR = 0x6fffe000,
+-  DT_RELRSZ = 0x6fffe001,
+-  DT_RELRENT = 0x6fffe003,
+-  DT_RELRCOUNT = 0x6fffe005,
+-
+   // Specify the value of _GLOBAL_OFFSET_TABLE_.
+   DT_PPC_GOT = 0x70000000,
+ 
+diff --git a/include/elf/common.h b/include/elf/common.h
+index 83374777d20..79c3a2fbbd5 100644
+--- a/include/elf/common.h
++++ b/include/elf/common.h
+@@ -506,6 +506,7 @@
+ #define SHT_PREINIT_ARRAY 16		/* Array of ptrs to pre-init funcs */
+ #define SHT_GROUP	  17		/* Section contains a section group */
+ #define SHT_SYMTAB_SHNDX  18		/* Indices for SHN_XINDEX entries */
++#define SHT_RELR	  19		/* Relative relocations, only offsets */
+ 
+ #define SHT_LOOS	0x60000000	/* First of OS specific semantics */
+ #define SHT_HIOS	0x6fffffff	/* Last of OS specific semantics */
+@@ -526,10 +527,6 @@
+ #define SHT_GNU_verneed	SHT_SUNW_verneed
+ #define SHT_GNU_versym	SHT_SUNW_versym
+ 
+-/* Experimental support for SHT_RELR sections. For details, see proposal
+-   at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg */
+-#define SHT_RELR	0x6fffff00	/* Relative relocations, only offsets */
+-
+ #define SHT_LOPROC	0x70000000	/* Processor-specific semantics, lo */
+ #define SHT_HIPROC	0x7FFFFFFF	/* Processor-specific semantics, hi */
+ #define SHT_LOUSER	0x80000000	/* Application-specific semantics */
+@@ -988,6 +985,10 @@
+ #define DT_PREINIT_ARRAY   32
+ #define DT_PREINIT_ARRAYSZ 33
+ #define DT_SYMTAB_SHNDX    34
++#define DT_RELRSZ          35
++#define DT_RELR            36
++#define DT_RELRENT         37
++
+ 
+ /* Note, the Oct 4, 1999 draft of the ELF ABI changed the values
+    for DT_LOOS and DT_HIOS.  Some implementations however, use
+@@ -1034,6 +1035,7 @@
+ #define DT_SYMINFO	0x6ffffeff
+ #define DT_ADDRRNGHI	0x6ffffeff
+ 
++#define DT_RELRCOUNT	0x6ffffff8
+ #define DT_RELACOUNT	0x6ffffff9
+ #define DT_RELCOUNT	0x6ffffffa
+ #define DT_FLAGS_1	0x6ffffffb
+@@ -1045,13 +1047,6 @@
+ /* This tag is a GNU extension to the Solaris version scheme.  */
+ #define DT_VERSYM	0x6ffffff0
+ 
+-/* Experimental support for SHT_RELR sections. For details, see proposal
+-   at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg */
+-#define DT_RELR		0x6fffe000
+-#define DT_RELRSZ	0x6fffe001
+-#define DT_RELRENT	0x6fffe003
+-#define DT_RELRCOUNT	0x6fffe005
+-
+ #define DT_LOPROC	0x70000000
+ #define DT_HIPROC	0x7fffffff
+ 
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0008-gold-turn-on-experimental-use-relr-by-default.patch b/sys-devel/binutils/files/0008-gold-turn-on-experimental-use-relr-by-default.patch
new file mode 100644
index 0000000..37b6f4f
--- /dev/null
+++ b/sys-devel/binutils/files/0008-gold-turn-on-experimental-use-relr-by-default.patch
@@ -0,0 +1,29 @@
+From d72141f5b99358984a0d6ffcd3c06534d7077942 Mon Sep 17 00:00:00 2001
+From: Rahul Chaudhry <rahulchaudhry@google.com>
+Date: Sat, 17 Mar 2018 15:31:31 -0800
+Subject: [PATCH 08/14] gold: turn on --experimental-use-relr by default.
+
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+[Adrian Ratiu: regenerated as proper git format-patch.]
+
+Change-Id: I20cb32ebec8283017b8399d29fe8841a5c78aa0e
+---
+ gold/options.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/gold/options.h b/gold/options.h
+index 6e32d5dd6ae..9e47e5de999 100644
+--- a/gold/options.h
++++ b/gold/options.h
+@@ -846,7 +846,7 @@ class General_options
+ 		 N_("Exclude libraries from automatic export"),
+ 		 N_(("lib,lib ...")));
+ 
+-  DEFINE_bool(experimental_use_relr, options::TWO_DASHES, '\0', false,
++  DEFINE_bool(experimental_use_relr, options::TWO_DASHES, '\0', true,
+ 	      N_("Generate RELR dynamic relocations"),
+ 	      N_("Do not generate RELR dynamic relocations"));
+ 
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0009-gold-dwp-add-DWARF-v5-support.patch b/sys-devel/binutils/files/0009-gold-dwp-add-DWARF-v5-support.patch
new file mode 100644
index 0000000..8d63e99
--- /dev/null
+++ b/sys-devel/binutils/files/0009-gold-dwp-add-DWARF-v5-support.patch
@@ -0,0 +1,1021 @@
+From c18475248187e73062b1dbed7550a46dfd623dcb Mon Sep 17 00:00:00 2001
+From: Caroline Tice <cmtice@google.com>
+Date: Fri, 20 Nov 2020 11:05:19 -0800
+Subject: [PATCH 09/14] gold: dwp: add DWARF v5 support
+
+Apply basic patch by David Blaikie to update gold dwp tool to handle
+DWARF v5. This is the first of three patches for DWARF v5.
+
+This does the main work of updating dwp to handle DWARF v5.
+
+This patch created for Chrome OS by Caroline Tice.
+Date: 19-Nov-2020
+[Adrian Ratiu: rebased from v2.27 to v2.35.2]
+[Adrian Ratiu: regenerated as proper git format-patch.]
+
+Change-Id: I6e12e87747d0a005d8897eefd9639b50265e12d2
+---
+ binutils/dwarf.c     |  14 +-
+ elfcpp/dwarf.h       |  13 +-
+ gold/dwarf_reader.cc |  52 ++++--
+ gold/dwarf_reader.h  |   7 +-
+ gold/dwp.cc          | 422 +++++++++++++++++++++++++++++++++----------
+ gold/gdb-index.cc    |   4 +-
+ include/dwarf2.h     |  13 +-
+ 7 files changed, 400 insertions(+), 125 deletions(-)
+
+diff --git a/binutils/dwarf.c b/binutils/dwarf.c
+index eb59da29eaf..0d429632bc8 100644
+--- a/binutils/dwarf.c
++++ b/binutils/dwarf.c
+@@ -1829,7 +1829,7 @@ find_cu_tu_set_v2 (dwarf_vma cu_offset, int do_types)
+     {
+       p = tu_sets;
+       nsets = tu_count;
+-      dw_sect = DW_SECT_TYPES;
++      dw_sect = LEGACY_DW_SECT_TYPES;
+     }
+   else
+     {
+@@ -2800,7 +2800,7 @@ read_and_display_attr_value (unsigned long           attribute,
+ 		  debug_info_p->max_loc_offsets = lmax;
+ 		}
+ 	      if (this_set != NULL)
+-		uvalue += this_set->section_offsets [DW_SECT_LOC];
++		uvalue += this_set->section_offsets [LEGACY_DW_SECT_LOC];
+ 	      debug_info_p->have_frame_base [num] = have_frame_base;
+ 	      if (attribute != DW_AT_GNU_locviews)
+ 		{
+@@ -3760,8 +3760,8 @@ process_debug_info (struct dwarf_section *           section,
+ 		      dwarf_vmatoa ("x", offsets [DW_SECT_LINE]),
+ 		      dwarf_vmatoa ("x", sizes [DW_SECT_LINE]));
+ 	      printf (_("    .debug_loc.dwo:          0x%s  0x%s\n"),
+-		      dwarf_vmatoa ("x", offsets [DW_SECT_LOC]),
+-		      dwarf_vmatoa ("x", sizes [DW_SECT_LOC]));
++		      dwarf_vmatoa ("x", offsets [LEGACY_DW_SECT_LOC]),
++		      dwarf_vmatoa ("x", sizes [LEGACY_DW_SECT_LOC]));
+ 	      printf (_("    .debug_str_offsets.dwo:  0x%s  0x%s\n"),
+ 		      dwarf_vmatoa ("x", offsets [DW_SECT_STR_OFFSETS]),
+ 		      dwarf_vmatoa ("x", sizes [DW_SECT_STR_OFFSETS]));
+@@ -10229,17 +10229,17 @@ get_DW_SECT_short_name (unsigned int dw_sect)
+     {
+       case DW_SECT_INFO:
+ 	return "info";
+-      case DW_SECT_TYPES:
++      case LEGACY_DW_SECT_TYPES:
+ 	return "types";
+       case DW_SECT_ABBREV:
+ 	return "abbrev";
+       case DW_SECT_LINE:
+ 	return "line";
+-      case DW_SECT_LOC:
++      case LEGACY_DW_SECT_LOC:
+ 	return "loc";
+       case DW_SECT_STR_OFFSETS:
+ 	return "str_off";
+-      case DW_SECT_MACINFO:
++      case LEGACY_DW_SECT_MACINFO:
+ 	return "macinfo";
+       case DW_SECT_MACRO:
+ 	return "macro";
+diff --git a/elfcpp/dwarf.h b/elfcpp/dwarf.h
+index d5e06d4d7d3..3392be6223b 100644
+--- a/elfcpp/dwarf.h
++++ b/elfcpp/dwarf.h
+@@ -253,14 +253,17 @@ enum DW_LANG
+ enum DW_SECT
+ {
+   DW_SECT_INFO = 1,
+-  DW_SECT_TYPES = 2,
++  DW_SECT_TYPES = 2, // removed in v5
+   DW_SECT_ABBREV = 3,
+   DW_SECT_LINE = 4,
+-  DW_SECT_LOC = 5,
++  DW_SECT_LOCLISTS = 5, // was LOC pre-v5
+   DW_SECT_STR_OFFSETS = 6,
+-  DW_SECT_MACINFO = 7,
+-  DW_SECT_MACRO = 8,
+-  DW_SECT_MAX = DW_SECT_MACRO,
++  DW_SECT_MACRO = 7, // was MACINFO pre-v5
++  DW_SECT_RNGLISTS = 8,  // was MACRO pre-v5
++  LEGACY_DW_SECT_TYPES = 20,
++  LEGACY_DW_SECT_LOC = 21,
++  LEGACY_DW_SECT_MACINFO = 22,
++  DW_SECT_MAX = LEGACY_DW_SECT_MACINFO
+ };
+ 
+ } // End namespace elfcpp.
+diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc
+index ba60654393c..d922300a6a1 100644
+--- a/gold/dwarf_reader.cc
++++ b/gold/dwarf_reader.cc
+@@ -1313,6 +1313,21 @@ Dwarf_info_reader::do_parse()
+ 	  elfcpp::Swap_unaligned<16, big_endian>::readval(pinfo);
+       pinfo += 2;
+ 
++      unsigned char unit_type;
++      if (this->cu_version_ >= 5)
++	{
++	  // Read unit type (1 byte).
++	  unit_type = elfcpp::Swap_unaligned<8, big_endian>::readval(pinfo);
++	  pinfo += 1;
++
++	  // unit_type should be either DW_UT_split_compile or DW_UT_split_type
++	  this->is_type_unit_ = unit_type == elfcpp::DW_UT_split_type;
++
++	  // Read address_size (1 byte).
++	  this->address_size_ = *pinfo++;
++	}
++
++      // For type units, read the two extra fields.
+       // Read debug_abbrev_offset (4 or 8 bytes).
+       if (this->offset_size_ == 4)
+ 	abbrev_offset = elfcpp::Swap_unaligned<32, big_endian>::readval(pinfo);
+@@ -1333,29 +1348,37 @@ Dwarf_info_reader::do_parse()
+ 	}
+       pinfo += this->offset_size_;
+ 
+-      // Read address_size (1 byte).
+-      this->address_size_ = *pinfo++;
++      if (this->cu_version_ < 5)
++	{
++	  // Read address_size (1 byte).
++	  this->address_size_ = *pinfo++;
++	}
+ 
+       // For type units, read the two extra fields.
+       uint64_t signature = 0;
+       off_t type_offset = 0;
+-      if (this->is_type_unit_)
++      if (this->is_type_unit_ || this->cu_version_ >= 5)
+         {
+-	  if (!this->check_buffer(pinfo + 8 + this->offset_size_))
++	  if (!this->check_buffer(pinfo + 8))
+ 	    break;
+ 
+ 	  // Read type_signature (8 bytes).
+ 	  signature = elfcpp::Swap_unaligned<64, big_endian>::readval(pinfo);
+ 	  pinfo += 8;
+ 
+-	  // Read type_offset (4 or 8 bytes).
+-	  if (this->offset_size_ == 4)
+-	    type_offset =
+-		elfcpp::Swap_unaligned<32, big_endian>::readval(pinfo);
+-	  else
+-	    type_offset =
+-		elfcpp::Swap_unaligned<64, big_endian>::readval(pinfo);
+-	  pinfo += this->offset_size_;
++	  if (this->is_type_unit_)
++	    {
++	      if (!this->check_buffer(pinfo + this->offset_size_))
++		break;
++	      // Read type_offset (4 or 8 bytes).
++	      if (this->offset_size_ == 4)
++		type_offset
++		  = elfcpp::Swap_unaligned<32, big_endian>::readval(pinfo);
++	      else
++		type_offset
++		  = elfcpp::Swap_unaligned<64, big_endian>::readval(pinfo);
++	      pinfo += this->offset_size_;
++	    }
+ 	}
+ 
+       // Read the .debug_abbrev table.
+@@ -1375,7 +1398,8 @@ Dwarf_info_reader::do_parse()
+ 				  &root_die);
+ 	  else
+ 	    this->visit_compilation_unit(section_offset + this->cu_offset_,
+-					 cu_end - cu_start, &root_die);
++					 cu_end - cu_start, signature,
++					 &root_die);
+ 	}
+ 
+       // Advance to the next CU.
+@@ -1508,7 +1532,7 @@ Dwarf_info_reader::get_string(off_t str_off, unsigned int string_shndx)
+ // Process a compilation unit and parse its child DIE.
+ 
+ void
+-Dwarf_info_reader::visit_compilation_unit(off_t, off_t, Dwarf_die*)
++Dwarf_info_reader::visit_compilation_unit(off_t, off_t, uint64_t, Dwarf_die*)
+ {
+ }
+ 
+diff --git a/gold/dwarf_reader.h b/gold/dwarf_reader.h
+index 9b140e7878e..3a28974b882 100644
+--- a/gold/dwarf_reader.h
++++ b/gold/dwarf_reader.h
+@@ -771,6 +771,10 @@ class Dwarf_info_reader
+   ref_addr_size() const
+   { return this->cu_version_ > 2 ? this->offset_size_ : this->address_size_; }
+ 
++  unsigned int
++  cu_version() const
++  { return this->cu_version_; }
++
+   // Set the section index of the .debug_abbrev section.
+   // We use this if there are no relocations for the .debug_info section.
+   // If not set, the code parse() routine will search for the section by name.
+@@ -807,7 +811,8 @@ class Dwarf_info_reader
+ 
+   // Visit a compilation unit.
+   virtual void
+-  visit_compilation_unit(off_t cu_offset, off_t cu_length, Dwarf_die* root_die);
++  visit_compilation_unit(off_t cu_offset, off_t cu_length, uint64_t signature,
++			 Dwarf_die* root_die);
+ 
+   // Visit a type unit.
+   virtual void
+diff --git a/gold/dwp.cc b/gold/dwp.cc
+index 7c4eef090d4..29aa57c4308 100644
+--- a/gold/dwp.cc
++++ b/gold/dwp.cc
+@@ -22,6 +22,7 @@
+ 
+ #include "dwp.h"
+ 
++#include <cassert>
+ #include <cstdarg>
+ #include <cstddef>
+ #include <cstdio>
+@@ -31,6 +32,7 @@
+ 
+ #include <vector>
+ #include <algorithm>
++#include <functional>
+ 
+ #include "getopt.h"
+ #include "libiberty.h"
+@@ -129,6 +131,11 @@ class Dwo_file
+   bool
+   verify(const File_list& files);
+ 
++  void
++  remap_str_offsets(
++    unsigned int cu_version, unsigned int offset_size,
++    const std::vector<std::pair<unsigned char*, section_size_type> >& str_offs);
++
+  private:
+   // Types for mapping input string offsets to output string offsets.
+   typedef std::pair<section_offset_type, section_offset_type>
+@@ -204,16 +211,23 @@ class Dwo_file
+ 
+   // Copy a section from the input file to the output file.
+   Section_bounds
+-  copy_section(Dwp_output_file* output_file, unsigned int shndx,
+-	       elfcpp::DW_SECT section_id);
++  copy_section(
++    Dwp_output_file* output_file, unsigned int shndx,
++    elfcpp::DW_SECT section_id,
++    std::vector<std::pair<unsigned char*, section_size_type> >& str_offs);
+ 
+   // Remap the string offsets in the .debug_str_offsets.dwo section.
+-  const unsigned char*
+-  remap_str_offsets(const unsigned char* contents, section_size_type len);
++  void
++  remap_str_offsets(unsigned char* contents, section_size_type len);
++
++  // void
++  //remap_str_offsets(
++  //  unsigned int cu_version, unsigned int offset_size,
++  //  const std::vector<std::pair<unsigned char*, section_size_type> >& str_offs);
+ 
+   template <bool big_endian>
+-  const unsigned char*
+-  sized_remap_str_offsets(const unsigned char* contents, section_size_type len);
++  void
++  sized_remap_str_offsets(unsigned char* contents, section_size_type len);
+ 
+   // Remap a single string offsets from an offset in the input string table
+   // to an offset in the output string table.
+@@ -452,7 +466,7 @@ class Dwp_output_file
+       abiversion_(0), fd_(NULL), next_file_offset_(0), shnum_(1), sections_(),
+       section_id_map_(), shoff_(0), shstrndx_(0), have_strings_(false),
+       stringpool_(), shstrtab_(), cu_index_(), tu_index_(), last_type_sig_(0),
+-      last_tu_slot_(0)
++      last_tu_slot_(0), index_version_(0)
+   {
+     this->section_id_map_.resize(elfcpp::DW_SECT_MAX + 1);
+     this->stringpool_.set_no_zero_null();
+@@ -484,6 +498,20 @@ class Dwp_output_file
+   void
+   add_tu_set(Unit_set* tu_set);
+ 
++  bool
++  update_index_version(unsigned int version)
++  {
++    // Translate the DWARF version to a Split DWARF index version.
++    if (version < 5)
++      version = 2;
++    if (version > 5)
++      gold_fatal(_("unsupported DWARF version"));
++    if (index_version_ != 0 && version != index_version_)
++      return false;
++    index_version_ = version;
++    return true;
++  }
++
+   // Finalize the file, write the string tables and index sections,
+   // and close the file.
+   void
+@@ -677,6 +705,7 @@ class Dwp_output_file
+   uint64_t last_type_sig_;
+   // Cache of the slot index for the last type signature.
+   unsigned int last_tu_slot_;
++  unsigned int index_version_;
+ };
+ 
+ // A specialization of Dwarf_info_reader, for reading dwo_names from
+@@ -704,22 +733,47 @@ class Dwo_name_info_reader : public Dwarf_info_reader
+  protected:
+   // Visit a compilation unit.
+   virtual void
+-  visit_compilation_unit(off_t cu_offset, off_t cu_length, Dwarf_die*);
++  visit_compilation_unit(off_t cu_offset, off_t cu_length, uint64_t signature,
++			 Dwarf_die*);
+ 
+  private:
+   // The list of files to populate.
+   File_list* files_;
+ };
+ 
++class remap_callback
++{
++  public:
++  
++  remap_callback(std::vector<std::pair<unsigned char*, section_size_type> > offsets, Dwo_file* dwo_file)
++    : str_offs_(offsets), dwo_file_(dwo_file)
++    { }
++  
++    void
++    run_remap(unsigned int cu_version, unsigned int offset_size)
++    {
++      dwo_file_->remap_str_offsets(cu_version, offset_size, str_offs_);
++    }
++  
++  virtual ~remap_callback()
++  { }
++
++  std::vector<std::pair<unsigned char*, section_size_type> > str_offs_;
++  Dwo_file *dwo_file_;
++};
++  
+ // A specialization of Dwarf_info_reader, for reading DWARF CUs and TUs
+ // and adding them to the output file.
+ 
+ class Unit_reader : public Dwarf_info_reader
+ {
+  public:
+-  Unit_reader(bool is_type_unit, Relobj* object, unsigned int shndx)
++  Unit_reader(bool is_type_unit, Relobj* object, unsigned int shndx,
++	      //    	      std::function<void(unsigned int, unsigned int)> remap_str_offsets)
++	          	      remap_callback* remap_str_offsets)
+     : Dwarf_info_reader(is_type_unit, object, NULL, 0, shndx, 0, 0),
+-      output_file_(NULL), sections_(NULL)
++      output_file_(NULL), sections_(NULL),
++      remap_str_offsets_(remap_str_offsets)
+   { }
+ 
+   ~Unit_reader()
+@@ -732,7 +786,8 @@ class Unit_reader : public Dwarf_info_reader
+  protected:
+   // Visit a compilation unit.
+   virtual void
+-  visit_compilation_unit(off_t cu_offset, off_t cu_length, Dwarf_die*);
++  visit_compilation_unit(off_t cu_offset, off_t cu_length, uint64_t signature,
++			 Dwarf_die*);
+ 
+   // Visit a type unit.
+   virtual void
+@@ -740,8 +795,13 @@ class Unit_reader : public Dwarf_info_reader
+ 		  uint64_t signature, Dwarf_die*);
+ 
+  private:
++  Unit_set*
++  make_unit(off_t cu_length, uint64_t signature);
++
+   Dwp_output_file* output_file_;
+   Section_bounds* sections_;
++  //std::function<void(unsigned int, unsigned int)> remap_str_offsets_;
++  remap_callback *remap_str_offsets_;
+ };
+ 
+ // Return the name of a DWARF .dwo section.
+@@ -750,15 +810,29 @@ static const char*
+ get_dwarf_section_name(elfcpp::DW_SECT section_id)
+ {
+   static const char* dwarf_section_names[] = {
+-    NULL, // unused
+-    ".debug_info.dwo",         // DW_SECT_INFO = 1
+-    ".debug_types.dwo",        // DW_SECT_TYPES = 2
+-    ".debug_abbrev.dwo",       // DW_SECT_ABBREV = 3
+-    ".debug_line.dwo",         // DW_SECT_LINE = 4
+-    ".debug_loc.dwo",          // DW_SECT_LOC = 5
+-    ".debug_str_offsets.dwo",  // DW_SECT_STR_OFFSETS = 6
+-    ".debug_macinfo.dwo",      // DW_SECT_MACINFO = 7
+-    ".debug_macro.dwo",        // DW_SECT_MACRO = 8
++    NULL,		      // unused
++    ".debug_info.dwo",	      // DW_SECT_INFO = 1
++    NULL,		      // unused
++    ".debug_abbrev.dwo",      // DW_SECT_ABBREV = 3
++    ".debug_line.dwo",	      // DW_SECT_LINE = 4
++    ".debug_loclists.dwo",    // DW_SECT_LOCLISTS = 5
++    ".debug_str_offsets.dwo", // DW_SECT_STR_OFFSETS = 6
++    ".debug_macro.dwo",	      // DW_SECT_MACRO = 7
++    ".debug_rnglists.dwo",    // DW_SECT_RNGLISTS = 8
++    NULL,		      // unused
++    NULL,		      // unused
++    NULL,		      // unused
++    NULL,		      // unused
++    NULL,		      // unused
++    NULL,		      // unused
++    NULL,		      // unused
++    NULL,		      // unused
++    NULL,		      // unused
++    NULL,		      // unused
++    NULL,		      // unused
++    ".debug_types.dwo",	      // LEGACY_DW_SECT_TYPES = 20
++    ".debug_loc.dwo",	      // LEGACY_DW_SECT_LOC = 21
++    ".debug_macinfo.dwo",     // LEGACY_DW_SECT_MACINFO = 22
+   };
+ 
+   gold_assert(section_id > 0 && section_id <= elfcpp::DW_SECT_MAX);
+@@ -925,16 +999,20 @@ Dwo_file::read(Dwp_output_file* output_file)
+ 	debug_shndx[elfcpp::DW_SECT_ABBREV] = i;
+       else if (strcmp(suffix, "line.dwo") == 0)
+ 	debug_shndx[elfcpp::DW_SECT_LINE] = i;
++      else if (strcmp(suffix, "loclists.dwo") == 0)
++	debug_shndx[elfcpp::DW_SECT_LOCLISTS] = i;
+       else if (strcmp(suffix, "loc.dwo") == 0)
+-	debug_shndx[elfcpp::DW_SECT_LOC] = i;
++	debug_shndx[elfcpp::LEGACY_DW_SECT_LOC] = i;
+       else if (strcmp(suffix, "str.dwo") == 0)
+ 	debug_str = i;
+       else if (strcmp(suffix, "str_offsets.dwo") == 0)
+ 	debug_shndx[elfcpp::DW_SECT_STR_OFFSETS] = i;
+-      else if (strcmp(suffix, "macinfo.dwo") == 0)
+-	debug_shndx[elfcpp::DW_SECT_MACINFO] = i;
+       else if (strcmp(suffix, "macro.dwo") == 0)
+ 	debug_shndx[elfcpp::DW_SECT_MACRO] = i;
++      else if (strcmp(suffix, "rnglists.dwo") == 0)
++	debug_shndx[elfcpp::DW_SECT_RNGLISTS] = i;
++      else if (strcmp(suffix, "macinfo.dwo") == 0)
++	debug_shndx[elfcpp::LEGACY_DW_SECT_MACINFO] = i;
+       else if (strcmp(suffix, "cu_index") == 0)
+ 	debug_cu_index = i;
+       else if (strcmp(suffix, "tu_index") == 0)
+@@ -956,9 +1034,9 @@ Dwo_file::read(Dwp_output_file* output_file)
+ 	    gold_fatal(_("%s: .dwp file must have no more than one "
+ 			 ".debug_types.dwo section"), this->name_);
+           if (debug_types.size() == 1)
+-            debug_shndx[elfcpp::DW_SECT_TYPES] = debug_types[0];
++            debug_shndx[elfcpp::LEGACY_DW_SECT_TYPES] = debug_types[0];
+           else
+-            debug_shndx[elfcpp::DW_SECT_TYPES] = 0;
++            debug_shndx[elfcpp::LEGACY_DW_SECT_TYPES] = 0;
+ 	  this->read_unit_index(debug_tu_index, debug_shndx, output_file, true);
+ 	}
+       return;
+@@ -973,7 +1051,7 @@ Dwo_file::read(Dwp_output_file* output_file)
+        tp != debug_types.end();
+        ++tp)
+     {
+-      debug_shndx[elfcpp::DW_SECT_TYPES] = *tp;
++      debug_shndx[elfcpp::LEGACY_DW_SECT_TYPES] = *tp;
+       this->add_unit_set(output_file, debug_shndx, true);
+     }
+ }
+@@ -1127,6 +1205,72 @@ Dwo_file::read_unit_index(unsigned int shndx, unsigned int *debug_shndx,
+ 				       is_tu_index);
+ }
+ 
++unsigned int
++get_unit_version(const unsigned char* unit_start, unsigned int unit_length,
++		 bool is_big_endian, unsigned int* offset_size)
++{
++  if (unit_length < 4)
++    return 0;
++
++  unsigned int length = elfcpp::Swap_unaligned<32, true>::readval(unit_start);
++  unsigned int version_offset = 4;
++  *offset_size = 4;
++  if (length == 0xffffffff)
++    {
++      version_offset += 8;
++      *offset_size = 8;
++    }
++  if (unit_length < version_offset + 2)
++    return 0;
++  unit_start += version_offset;
++  return is_big_endian ? elfcpp::Swap_unaligned<16, true>::readval(unit_start)
++		       : elfcpp::Swap_unaligned<16, false>::readval(unit_start);
++}
++
++unsigned int
++get_versioned_column_index(unsigned int index_version, unsigned int column)
++{
++  if (index_version == 5)
++    {
++      return column;
++    }
++  switch (column)
++    {
++      case elfcpp::LEGACY_DW_SECT_TYPES:
++	return 2;
++      case elfcpp::LEGACY_DW_SECT_LOC:
++	return 5;
++      case elfcpp::LEGACY_DW_SECT_MACINFO:
++	return 7;
++      case elfcpp::DW_SECT_MACRO:
++	return 8;
++      default:
++	return column;
++    }
++}
++
++unsigned int
++get_uniform_column_index(unsigned int index_version, unsigned int column)
++{
++  if (index_version == 5)
++    {
++      return column;
++    }
++  switch (column)
++    {
++      case 2:
++	return elfcpp::LEGACY_DW_SECT_TYPES;
++      case 5:
++	return elfcpp::LEGACY_DW_SECT_LOC;
++      case 7:
++	return elfcpp::LEGACY_DW_SECT_MACINFO;
++      case 8:
++	return elfcpp::DW_SECT_MACRO;
++      default:
++	return column;
++    }
++}
++
+ template <bool big_endian>
+ void
+ Dwo_file::sized_read_unit_index(unsigned int shndx,
+@@ -1134,11 +1278,6 @@ Dwo_file::sized_read_unit_index(unsigned int shndx,
+ 				Dwp_output_file* output_file,
+ 				bool is_tu_index)
+ {
+-  elfcpp::DW_SECT info_sect = (is_tu_index
+-			       ? elfcpp::DW_SECT_TYPES
+-			       : elfcpp::DW_SECT_INFO);
+-  unsigned int info_shndx = debug_shndx[info_sect];
+-
+   gold_assert(shndx > 0);
+ 
+   section_size_type index_len;
+@@ -1152,10 +1291,18 @@ Dwo_file::sized_read_unit_index(unsigned int shndx,
+   // We don't support version 1 anymore because it was experimental
+   // and because in normal use, dwp is not expected to read .dwp files
+   // produced by an earlier version of the tool.
+-  if (version != 2)
++  if (version != 2 && version != 5)
+     gold_fatal(_("%s: section %s has unsupported version number %d"),
+ 	       this->name_, this->section_name(shndx).c_str(), version);
+ 
++  elfcpp::DW_SECT info_sect
++    = (is_tu_index && version == 2 ? elfcpp::LEGACY_DW_SECT_TYPES
++				   : elfcpp::DW_SECT_INFO);
++  unsigned int info_shndx = debug_shndx[info_sect];
++
++  if (!output_file->update_index_version(version))
++    gold_fatal(_("mismatched unit version in index"));
++
+   unsigned int ncols =
+       elfcpp::Swap_unaligned<32, big_endian>::readval(contents
+ 						      + sizeof(uint32_t));
+@@ -1184,12 +1331,18 @@ Dwo_file::sized_read_unit_index(unsigned int shndx,
+ 
+   // Copy the related sections and track the section offsets and sizes.
+   Section_bounds sections[elfcpp::DW_SECT_MAX + 1];
+-  for (int i = elfcpp::DW_SECT_ABBREV; i <= elfcpp::DW_SECT_MAX; ++i)
++  std::vector<std::pair<unsigned char*, section_size_type> > str_offs;
++  for (int i = 1; i <= elfcpp::DW_SECT_MAX; ++i)
+     {
+-      if (debug_shndx[i] > 0)
+-	sections[i] = this->copy_section(output_file, debug_shndx[i],
+-					 static_cast<elfcpp::DW_SECT>(i));
++      if (i != elfcpp::DW_SECT_INFO && i != elfcpp::LEGACY_DW_SECT_TYPES
++	  && debug_shndx[i] > 0)
++	sections[i]
++	  = this->copy_section(output_file, debug_shndx[i],
++			       static_cast<elfcpp::DW_SECT>(i), str_offs);
+     }
++  if (str_offs.size() > 1)
++    gold_fatal(_("%s: contains more than one .debug_str_offsets.dwo section"),
++	       this->name_);
+ 
+   // Get the contents of the .debug_info.dwo or .debug_types.dwo section.
+   section_size_type info_len;
+@@ -1213,13 +1366,15 @@ Dwo_file::sized_read_unit_index(unsigned int shndx,
+ 	      poffsets + (index - 1) * ncols * sizeof(uint32_t);
+ 	  const unsigned char* psrow =
+ 	      psizes + (index - 1) * ncols * sizeof(uint32_t);
++	  std::vector<std::pair<unsigned char*, section_size_type> >
++	    str_off = str_offs;
+ 
+ 	  // Adjust the offset of each contribution within the input section
+ 	  // by the offset of the input section within the output section.
+-	  for (unsigned int j = 0; j <= ncols; j++)
++	  for (unsigned int j = 0; j < ncols; j++)
+ 	    {
+-	      unsigned int dw_sect =
+-		  elfcpp::Swap_unaligned<64, big_endian>::readval(pch);
++	      unsigned int dw_sect = get_uniform_column_index(
++		version, elfcpp::Swap_unaligned<64, big_endian>::readval(pch));
+ 	      unsigned int offset =
+ 		  elfcpp::Swap_unaligned<64, big_endian>::readval(porow);
+ 	      unsigned int size =
+@@ -1230,12 +1385,24 @@ Dwo_file::sized_read_unit_index(unsigned int shndx,
+ 	      pch += sizeof(uint32_t);
+ 	      porow += sizeof(uint32_t);
+ 	      psrow += sizeof(uint32_t);
++	      if (dw_sect == elfcpp::DW_SECT_STR_OFFSETS && !str_off.empty())
++		{
++		  str_off[0].first += offset;
++		  str_off[0].second = size;
++		}
+ 	    }
+ 
+ 	  const unsigned char* unit_start =
+ 	      info_contents + unit_set->sections[info_sect].offset;
+ 	  section_size_type unit_length = unit_set->sections[info_sect].size;
+ 
++	  unsigned int offset_size;
++	  if (!str_off.empty())
++	    if (unsigned int unit_version
++		= get_unit_version(unit_start, unit_length,
++				   this->obj_->is_big_endian(), &offset_size))
++	      remap_str_offsets(unit_version, offset_size, str_off);
++
+ 	  // Dwp_output_file::add_contribution writes the .debug_info.dwo
+ 	  // section directly to the output file, so we only need to
+ 	  // duplicate contributions for .debug_types.dwo section.
+@@ -1408,8 +1575,9 @@ Dwo_file::add_strings(Dwp_output_file* output_file, unsigned int debug_str)
+ // the string offsets for the output string table.
+ 
+ Section_bounds
+-Dwo_file::copy_section(Dwp_output_file* output_file, unsigned int shndx,
+-		       elfcpp::DW_SECT section_id)
++Dwo_file::copy_section(
++  Dwp_output_file* output_file, unsigned int shndx, elfcpp::DW_SECT section_id,
++  std::vector<std::pair<unsigned char*, section_size_type> >& str_offs)
+ {
+   // Some sections may be referenced from more than one set.
+   // Don't copy a section more than once.
+@@ -1424,20 +1592,19 @@ Dwo_file::copy_section(Dwp_output_file* output_file, unsigned int shndx,
+   bool is_new;
+   const unsigned char* contents = this->section_contents(shndx, &len, &is_new);
+ 
+-  if (section_id == elfcpp::DW_SECT_STR_OFFSETS)
+-    {
+-      const unsigned char* remapped = this->remap_str_offsets(contents, len);
+-      if (is_new)
+-	delete[] contents;
+-      contents = remapped;
+-    }
+-  else if (!is_new)
++  if (!is_new)
+     {
+       unsigned char* copy = new unsigned char[len];
+       memcpy(copy, contents, len);
+       contents = copy;
+     }
+ 
++  if (section_id == elfcpp::DW_SECT_STR_OFFSETS)
++    {
++      str_offs.push_back(
++	std::make_pair(const_cast<unsigned char*>(contents), len));
++    }
++
+   // Add the contents of the input section to the output section.
+   // The output file takes ownership of the memory pointed to by CONTENTS.
+   section_offset_type off = output_file->add_contribution(section_id, contents,
+@@ -1451,38 +1618,33 @@ Dwo_file::copy_section(Dwp_output_file* output_file, unsigned int shndx,
+ }
+ 
+ // Remap the 
+-const unsigned char*
+-Dwo_file::remap_str_offsets(const unsigned char* contents,
+-			    section_size_type len)
++void
++Dwo_file::remap_str_offsets(unsigned char* contents, section_size_type len)
+ {
+   if ((len & 3) != 0)
+     gold_fatal(_("%s: .debug_str_offsets.dwo section size not a multiple of 4"),
+ 	       this->name_);
+ 
+   if (this->obj_->is_big_endian())
+-    return this->sized_remap_str_offsets<true>(contents, len);
++    this->sized_remap_str_offsets<true>(contents, len);
+   else
+-    return this->sized_remap_str_offsets<false>(contents, len);
++    this->sized_remap_str_offsets<false>(contents, len);
+ }
+ 
+ template <bool big_endian>
+-const unsigned char*
+-Dwo_file::sized_remap_str_offsets(const unsigned char* contents,
++void
++Dwo_file::sized_remap_str_offsets(unsigned char* contents,
+ 				  section_size_type len)
+ {
+-  unsigned char* remapped = new unsigned char[len];
+-  const unsigned char* p = contents;
+-  unsigned char* q = remapped;
++  unsigned char* p = contents;
+   while (len > 0)
+     {
+       unsigned int val = elfcpp::Swap_unaligned<32, big_endian>::readval(p);
+       val = this->remap_str_offset(val);
+-      elfcpp::Swap_unaligned<32, big_endian>::writeval(q, val);
++      elfcpp::Swap_unaligned<32, big_endian>::writeval(p, val);
+       len -= 4;
+       p += 4;
+-      q += 4;
+     }
+-  return remapped;
+ }
+ 
+ unsigned int
+@@ -1491,10 +1653,10 @@ Dwo_file::remap_str_offset(section_offset_type val)
+   Str_offset_map_entry entry;
+   entry.first = val;
+ 
+-  Str_offset_map::const_iterator p =
+-      std::lower_bound(this->str_offset_map_.begin(),
+-		       this->str_offset_map_.end(),
+-		       entry, Offset_compare());
++  Str_offset_map::const_iterator p
++    = std::lower_bound(this->str_offset_map_.begin(),
++		       this->str_offset_map_.end(), entry,
++		       Offset_compare());
+ 
+   if (p == this->str_offset_map_.end() || p->first > val)
+     {
+@@ -1510,13 +1672,40 @@ Dwo_file::remap_str_offset(section_offset_type val)
+ // Add a set of .debug_info.dwo or .debug_types.dwo and related sections
+ // to OUTPUT_FILE.
+ 
++void
++Dwo_file::remap_str_offsets(
++  unsigned int cu_version, unsigned int offset_size,
++  const std::vector<std::pair<unsigned char*, section_size_type> >& str_offs)
++{
++  unsigned int header_size = 0;
++  if (cu_version >= 5)
++    {
++      // length field
++      if (offset_size == 4)
++	header_size = 4;
++      else
++	header_size = 12;
++      // version
++      header_size += 2;
++      // padding
++      header_size += 2;
++    }
++
++  std::pair<unsigned char*, section_size_type> p;
++  for (unsigned int i = 0; i < str_offs.size(); ++i)
++    {
++      p = str_offs[i];
++      this->remap_str_offsets(p.first + header_size, p.second - header_size);
++    }
++}
++
+ void
+ Dwo_file::add_unit_set(Dwp_output_file* output_file, unsigned int *debug_shndx,
+ 		       bool is_debug_types)
+ {
+-  unsigned int shndx = (is_debug_types
+-			? debug_shndx[elfcpp::DW_SECT_TYPES]
+-			: debug_shndx[elfcpp::DW_SECT_INFO]);
++  elfcpp::DW_SECT info_sect
++    = (is_debug_types ? elfcpp::LEGACY_DW_SECT_TYPES : elfcpp::DW_SECT_INFO);
++  unsigned int shndx = debug_shndx[info_sect];
+ 
+   gold_assert(shndx != 0);
+ 
+@@ -1525,17 +1714,24 @@ Dwo_file::add_unit_set(Dwp_output_file* output_file, unsigned int *debug_shndx,
+ 
+   // Copy the related sections and track the section offsets and sizes.
+   Section_bounds sections[elfcpp::DW_SECT_MAX + 1];
+-  for (int i = elfcpp::DW_SECT_ABBREV; i <= elfcpp::DW_SECT_MAX; ++i)
++  std::vector<std::pair<unsigned char*, section_size_type> > str_offs;
++  for (int i = 1; i <= elfcpp::DW_SECT_MAX; ++i)
+     {
+-      if (debug_shndx[i] > 0)
+-	sections[i] = this->copy_section(output_file, debug_shndx[i],
+-					 static_cast<elfcpp::DW_SECT>(i));
+-    }
++      if (debug_shndx[i] > 0 && i != info_sect)
++	sections[i]
++	  = this->copy_section(output_file, debug_shndx[i],
++			       static_cast<elfcpp::DW_SECT>(i), str_offs);
++     }
+ 
+   // Parse the .debug_info or .debug_types section and add each compilation
+   // or type unit to the output file, along with the contributions to the
+   // related sections.
+-  Unit_reader reader(is_debug_types, this->obj_, shndx);
++  remap_callback remap_str_offsets_callback(str_offs, this);
++  Unit_reader reader(is_debug_types, this->obj_, shndx,
++		     & remap_str_offsets_callback);
++		     // [&](unsigned int cu_version, unsigned int offset_size) {
++		     //  remap_str_offsets(cu_version, offset_size, str_offs);
++		     // });
+   reader.add_units(output_file, debug_shndx[elfcpp::DW_SECT_ABBREV], sections);
+ }
+ 
+@@ -1992,8 +2188,20 @@ Dwp_output_file::write_index(const char* sect_name, const Dwp_index& index)
+ 
+   // Write the section header: version number, padding,
+   // number of used slots and total number of slots.
+-  elfcpp::Swap_unaligned<32, big_endian>::writeval(p, 2);
+-  p += sizeof(uint32_t);
++  if (index_version_ == 2)
++    {
++      elfcpp::Swap_unaligned<32, big_endian>::writeval(p, index_version_);
++      p += sizeof(uint32_t);
++    }
++  else
++    {
++      assert(index_version_ == 5);
++      elfcpp::Swap_unaligned<16, big_endian>::writeval(p, index_version_);
++      p += sizeof(uint16_t);
++      // zero padding
++      *p++ = 0;
++      *p++ = 0;
++    }
+   elfcpp::Swap_unaligned<32, big_endian>::writeval(p, ncols);
+   p += sizeof(uint32_t);
+   elfcpp::Swap_unaligned<32, big_endian>::writeval(p, nused);
+@@ -2020,7 +2228,8 @@ Dwp_output_file::write_index(const char* sect_name, const Dwp_index& index)
+     {
+       if (column_mask & (1 << c))
+ 	{
+-	  elfcpp::Swap_unaligned<32, big_endian>::writeval(p, c);
++	  elfcpp::Swap_unaligned<32, big_endian>::writeval(
++	    p, get_versioned_column_index(index_version_, c));
+ 	  p += sizeof(uint32_t);
+ 	}
+     }
+@@ -2208,12 +2417,16 @@ Dwp_output_file::sized_write_shdr(const char* name, unsigned int type,
+ // Visit a compilation unit.
+ 
+ void
+-Dwo_name_info_reader::visit_compilation_unit(off_t, off_t, Dwarf_die* die)
++Dwo_name_info_reader::visit_compilation_unit(off_t, off_t, uint64_t signature,
++					     Dwarf_die* die)
+ {
+-  const char* dwo_name = die->string_attribute(elfcpp::DW_AT_GNU_dwo_name);
++  bool dwarf_5 = cu_version() >= 5;
++  const char* dwo_name = die->string_attribute(
++    dwarf_5 ? elfcpp::DW_AT_dwo_name : elfcpp::DW_AT_GNU_dwo_name);
+   if (dwo_name != NULL)
+     {
+-      uint64_t dwo_id = die->uint_attribute(elfcpp::DW_AT_GNU_dwo_id);
++      uint64_t dwo_id
++	= dwarf_5 ? signature : die->uint_attribute(elfcpp::DW_AT_GNU_dwo_id);
+       this->files_->push_back(Dwo_file_entry(dwo_id, dwo_name));
+     }
+ }
+@@ -2236,15 +2449,29 @@ Unit_reader::add_units(Dwp_output_file* output_file,
+ // Visit a compilation unit.
+ 
+ void
+-Unit_reader::visit_compilation_unit(off_t, off_t cu_length, Dwarf_die* die)
++Unit_reader::visit_compilation_unit(off_t, off_t cu_length, uint64_t signature,
++				    Dwarf_die* die)
+ {
+   if (cu_length == 0)
+     return;
+ 
++  this->remap_str_offsets_->run_remap(cu_version(), offset_size());
++
++  Unit_set* unit_set
++    = make_unit(cu_length, cu_version() >= 5
++			     ? signature
++			     : die->uint_attribute(elfcpp::DW_AT_GNU_dwo_id));
++  this->output_file_->add_cu_set(unit_set);
++}
++
++Unit_set*
++Unit_reader::make_unit(off_t cu_length, uint64_t signature)
++{
+   Unit_set* unit_set = new Unit_set();
+-  unit_set->signature = die->uint_attribute(elfcpp::DW_AT_GNU_dwo_id);
+-  for (unsigned int i = elfcpp::DW_SECT_ABBREV; i <= elfcpp::DW_SECT_MAX; ++i)
+-    unit_set->sections[i] = this->sections_[i];
++  unit_set->signature = signature;
++  for (unsigned int i = 1; i <= elfcpp::DW_SECT_MAX; ++i)
++    if (i != elfcpp::DW_SECT_INFO)
++      unit_set->sections[i] = this->sections_[i];
+ 
+   // Dwp_output_file::add_contribution writes the .debug_info.dwo section
+   // directly to the output file, so we do not need to duplicate the
+@@ -2255,7 +2482,9 @@ Unit_reader::visit_compilation_unit(off_t, off_t cu_length, Dwarf_die* die)
+ 					   cu_length, 1);
+   Section_bounds bounds(off, cu_length);
+   unit_set->sections[elfcpp::DW_SECT_INFO] = bounds;
+-  this->output_file_->add_cu_set(unit_set);
++  if (!this->output_file_->update_index_version(this->cu_version()))
++    gold_fatal(_("mismatched unit version in compilation unit"));
++  return unit_set;
+ }
+ 
+ // Visit a type unit.
+@@ -2268,20 +2497,29 @@ Unit_reader::visit_type_unit(off_t, off_t tu_length, off_t,
+     return;
+   if (this->output_file_->lookup_tu(signature))
+     return;
++  if (this->cu_version() >= 5)
++    {
++      Unit_set* unit_set = make_unit(tu_length, signature);
++      this->output_file_->add_tu_set(unit_set);
++      return;
++    }
+ 
+   Unit_set* unit_set = new Unit_set();
+   unit_set->signature = signature;
+-  for (unsigned int i = elfcpp::DW_SECT_ABBREV; i <= elfcpp::DW_SECT_MAX; ++i)
+-    unit_set->sections[i] = this->sections_[i];
++  for (unsigned int i = 1; i <= elfcpp::DW_SECT_MAX; ++i)
++    if (i != elfcpp::LEGACY_DW_SECT_TYPES)
++      unit_set->sections[i] = this->sections_[i];
+ 
+   unsigned char* contents = new unsigned char[tu_length];
+   memcpy(contents, this->buffer_at_offset(0), tu_length);
+-  section_offset_type off =
+-      this->output_file_->add_contribution(elfcpp::DW_SECT_TYPES, contents,
+-					   tu_length, 1);
++  elfcpp::DW_SECT section = elfcpp::LEGACY_DW_SECT_TYPES;
++  section_offset_type off
++    = this->output_file_->add_contribution(section, contents, tu_length, 1);
+   Section_bounds bounds(off, tu_length);
+-  unit_set->sections[elfcpp::DW_SECT_TYPES] = bounds;
++  unit_set->sections[section] = bounds;
+   this->output_file_->add_tu_set(unit_set);
++  if (!this->output_file_->update_index_version(this->cu_version()))
++    gold_fatal(_("mismatched unit version in type unit")); // FIXME: Untested
+ }
+ 
+ }; // End namespace gold
+diff --git a/gold/gdb-index.cc b/gold/gdb-index.cc
+index d19b0446bb9..cf2d25b3ff9 100644
+--- a/gold/gdb-index.cc
++++ b/gold/gdb-index.cc
+@@ -199,7 +199,8 @@ class Gdb_index_info_reader : public Dwarf_info_reader
+  protected:
+   // Visit a compilation unit.
+   virtual void
+-  visit_compilation_unit(off_t cu_offset, off_t cu_length, Dwarf_die*);
++  visit_compilation_unit(off_t cu_offset, off_t cu_length, uint64_t signature,
++			 Dwarf_die*);
+ 
+   // Visit a type unit.
+   virtual void
+@@ -319,6 +320,7 @@ unsigned int Gdb_index_info_reader::dwarf_tu_nopubnames_count = 0;
+ 
+ void
+ Gdb_index_info_reader::visit_compilation_unit(off_t cu_offset, off_t cu_length,
++					      uint64_t signature,
+ 					      Dwarf_die* root_die)
+ {
+   ++Gdb_index_info_reader::dwarf_cu_count;
+diff --git a/include/dwarf2.h b/include/dwarf2.h
+index 9c4203c22f7..b91977afe4d 100644
+--- a/include/dwarf2.h
++++ b/include/dwarf2.h
+@@ -497,14 +497,17 @@ enum dwarf_range_list_entry
+ enum dwarf_sect
+   {
+     DW_SECT_INFO = 1,
+-    DW_SECT_TYPES = 2,
++    DW_SECT_TYPES = 2, // removed in v5
+     DW_SECT_ABBREV = 3,
+     DW_SECT_LINE = 4,
+-    DW_SECT_LOC = 5,
++    DW_SECT_LOCLISTS = 5, // was LOC pre-v5
+     DW_SECT_STR_OFFSETS = 6,
+-    DW_SECT_MACINFO = 7,
+-    DW_SECT_MACRO = 8,
+-    DW_SECT_MAX = 8
++    DW_SECT_MACRO = 7, // was MACINFO pre-v5
++    DW_SECT_RNGLISTS = 8, // was MACRO pre-v5
++    LEGACY_DW_SECT_TYPES = 20,
++    LEGACY_DW_SECT_LOC = 21,
++    LEGACY_DW_SECT_MACINFO = 22,
++    DW_SECT_MAX = LEGACY_DW_SECT_MACINFO
+   };
+ 
+ #ifdef __cplusplus
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0010-gold-dwp-improve-DWARF-v5-memory-efficiency.patch b/sys-devel/binutils/files/0010-gold-dwp-improve-DWARF-v5-memory-efficiency.patch
new file mode 100644
index 0000000..8462986
--- /dev/null
+++ b/sys-devel/binutils/files/0010-gold-dwp-improve-DWARF-v5-memory-efficiency.patch
@@ -0,0 +1,204 @@
+From fe74a17d59227b435e92edb60a040357a59a8cf3 Mon Sep 17 00:00:00 2001
+From: Caroline Tice <cmtice@google.com>
+Date: Fri, 20 Nov 2020 11:05:19 -0800
+Subject: [PATCH 10/14] gold: dwp: improve DWARF v5 memory efficiency
+
+Apply basic patch by David Blaikie to update gold dwp tool to handle
+DWARF v5. This is the second of three patches for DWARF v5.
+
+This patch created for Chrome OS by Caroline Tice.
+Date: 20-Nov-2020
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+[Adrian Ratiu: regenerated as proper git format-patch.]
+
+Change-Id: I1f6fb66478d8e9eb9848e9628e2d2976b8d5be1d
+---
+ gold/dwp.cc        | 54 +++++++++++++++++++++++++++++++++-------------
+ gold/stringpool.cc | 32 +++++++++++++++++++++++++++
+ gold/stringpool.h  |  6 ++++++
+ 3 files changed, 77 insertions(+), 15 deletions(-)
+
+diff --git a/gold/dwp.cc b/gold/dwp.cc
+index 29aa57c4308..2beaa51879f 100644
+--- a/gold/dwp.cc
++++ b/gold/dwp.cc
+@@ -32,7 +32,7 @@
+ 
+ #include <vector>
+ #include <algorithm>
+-#include <functional>
++#include <memory>
+ 
+ #include "getopt.h"
+ #include "libiberty.h"
+@@ -633,6 +633,11 @@ class Dwp_output_file
+   unsigned int
+   add_output_section(const char* section_name, int align);
+ 
++  // Prepare to write a new section to the output file.
++  off_t
++  start_new_section(const char* section_name, section_size_type len,
++		    int align);
++
+   // Write a new section to the output file.
+   void
+   write_new_section(const char* section_name, const unsigned char* contents,
+@@ -1565,8 +1570,6 @@ Dwo_file::add_strings(Dwp_output_file* output_file, unsigned int debug_str)
+     }
+   new_offset = 0;
+   this->str_offset_map_.push_back(std::make_pair(i, new_offset));
+-  if (is_new)
+-    delete[] pdata;
+ }
+ 
+ // Copy a section from the input file to the output file.
+@@ -1781,7 +1784,7 @@ section_offset_type
+ Dwp_output_file::add_string(const char* str, size_t len)
+ {
+   Stringpool::Key key;
+-  this->stringpool_.add_with_length(str, len, true, &key);
++  this->stringpool_.add_with_length(str, len, false, &key);
+   this->have_strings_ = true;
+   // We aren't supposed to call get_offset() until after
+   // calling set_string_offsets(), but the offsets will
+@@ -2053,10 +2056,10 @@ Dwp_output_file::finalize()
+     {
+       this->stringpool_.set_string_offsets();
+       section_size_type len = this->stringpool_.get_strtab_size();
+-      buf = new unsigned char[len];
+-      this->stringpool_.write_to_buffer(buf, len);
+-      this->write_new_section(".debug_str.dwo", buf, len, 1);
+-      delete[] buf;
++      off_t file_offset = this->start_new_section(".debug_str.dwo", len, 1);
++      this->stringpool_.write_to_file(this->fd_, file_offset,
++				      this->name_, ".debug_str.dwo");
++      this->next_file_offset_ = file_offset + len;
+     }
+ 
+   // Write the CU and TU indexes.
+@@ -2138,11 +2141,10 @@ Dwp_output_file::write_contributions(const Section& sect)
+     }
+ }
+ 
+-// Write a new section to the output file.
++// Prepare to write a new section to the output file.
+ 
+-void
+-Dwp_output_file::write_new_section(const char* section_name,
+-				   const unsigned char* contents,
++off_t
++Dwp_output_file::start_new_section(const char* section_name,
+ 				   section_size_type len, int align)
+ {
+   section_name = this->shstrtab_.add_with_length(section_name,
+@@ -2155,7 +2157,18 @@ Dwp_output_file::write_new_section(const char* section_name,
+   section.offset = file_offset;
+   section.size = len;
+   ::fseek(this->fd_, file_offset, SEEK_SET);
+-  if (::fwrite(contents, 1, len, this->fd_) < len)
++  return file_offset;
++}
++
++// Write a new section to the output file.
++
++void
++Dwp_output_file::write_new_section(const char* section_name,
++				   const unsigned char* contents,
++				   section_size_type len, int align)
++{
++  off_t file_offset = this->start_new_section(section_name, len, align);
++   if (::fwrite(contents, 1, len, this->fd_) < len)
+     gold_fatal(_("%s: error writing section '%s'"), this->name_, section_name);
+   this->next_file_offset_ = file_offset + len;
+ }
+@@ -2676,14 +2689,25 @@ main(int argc, char** argv)
+ 
+   // Process each file, adding its contents to the output file.
+   Dwp_output_file output_file(output_filename.c_str());
++  std::vector<Dwo_file*> dwo_files;
+   for (File_list::const_iterator f = files.begin(); f != files.end(); ++f)
+     {
+       if (verbose)
+ 	fprintf(stderr, "%s\n", f->dwo_name.c_str());
+-      Dwo_file dwo_file(f->dwo_name.c_str());
+-      dwo_file.read(&output_file);
++      Dwo_file* dwo_file = new Dwo_file(f->dwo_name.c_str());
++      dwo_file->read(&output_file);
++      dwo_files.push_back(dwo_file);
+     }
+   output_file.finalize();
+ 
++  // Clean up dwo_files.
++  for (std::vector<Dwo_file*>::iterator i = dwo_files.begin(),
++	 e = dwo_files.end();
++       i != e;
++       ++i)
++    {
++      delete *i;
++    }
++
+   return EXIT_SUCCESS;
+ }
+diff --git a/gold/stringpool.cc b/gold/stringpool.cc
+index 8918f6f054f..406733cd99b 100644
+--- a/gold/stringpool.cc
++++ b/gold/stringpool.cc
+@@ -491,6 +491,38 @@ Stringpool_template<Stringpool_char>::write_to_buffer(
+     }
+ }
+ 
++// Write the ELF strtab into the file at the specified offset.
++
++template<typename Stringpool_char>
++void
++Stringpool_template<Stringpool_char>::write_to_file(
++    FILE* fd, off_t file_offset,
++    const char* name, const char* section_name)
++{
++  gold_assert(fd != NULL);
++  gold_assert(this->strtab_size_ != 0);
++  if (this->zero_null_)
++    {
++      char buf[] = {'\0'};
++      ::fseek(fd, file_offset, SEEK_SET);
++      if (::fwrite(buf, 1, 1, fd) < 1)
++        gold_fatal(_("%s: error writing section '%s'"), name, section_name);
++    }
++
++  for (typename String_set_type::const_iterator p = this->string_set_.begin();
++       p != this->string_set_.end();
++       ++p)
++    {
++      const unsigned int len = (p->first.length + 1) * sizeof(Stringpool_char);
++      const section_offset_type offset = this->key_to_offset_[p->second - 1];
++      gold_assert(static_cast<section_size_type>(offset) + len
++		  <= this->strtab_size_);
++      ::fseek(fd, file_offset + offset, SEEK_SET);
++      if (::fwrite(p->first.string, 1, len, fd) < len)
++        gold_fatal(_("%s: error writing section '%s'"), name, section_name);
++    }
++}
++
+ // Write the ELF strtab into the output file at the specified offset.
+ 
+ template<typename Stringpool_char>
+diff --git a/gold/stringpool.h b/gold/stringpool.h
+index 9217b17910f..f4d0030758e 100644
+--- a/gold/stringpool.h
++++ b/gold/stringpool.h
+@@ -285,6 +285,12 @@ class Stringpool_template
+   void
+   write_to_buffer(unsigned char* buffer, section_size_type buffer_size);
+ 
++  // Write the string table into the specified file at the specified
++  // offset.
++  void
++  write_to_file(FILE *fd, off_t file_offset, const char *name,
++		const char *section_name);
++
+   // Dump statistical information to stderr.
+   void
+   print_stats(const char*) const;
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0011-gold-dwp-further-improve-DWARF-v5-memory-efficiency.patch b/sys-devel/binutils/files/0011-gold-dwp-further-improve-DWARF-v5-memory-efficiency.patch
new file mode 100644
index 0000000..d37e189
--- /dev/null
+++ b/sys-devel/binutils/files/0011-gold-dwp-further-improve-DWARF-v5-memory-efficiency.patch
@@ -0,0 +1,98 @@
+From f8b42d640155ee466255ac6942056f858ea2c554 Mon Sep 17 00:00:00 2001
+From: Caroline Tice <cmtice@google.com>
+Date: Fri, 20 Nov 2020 11:05:19 -0800
+Subject: [PATCH 11/14] gold: dwp: further improve DWARF v5 memory efficiency
+
+Apply basic patch by David Blaikie to update gold dwp tool to handle
+DWARF v5. This is the third of three patches for DWARF v5.
+
+This patch contains a few more efficiency improvements.
+
+This patch created for Chrome OS by Caroline Tice.
+Date: 20-Nov-2020
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+[Adrian Ratiu: regenerated as proper git format-patch.]
+
+Change-Id: If45091e5590f7f71b45d58a861eb83bfeb9c5c26
+---
+ elfcpp/dwarf.h |  8 ++++----
+ gold/dwp.cc    | 25 ++++++++++---------------
+ 2 files changed, 14 insertions(+), 19 deletions(-)
+
+diff --git a/elfcpp/dwarf.h b/elfcpp/dwarf.h
+index 3392be6223b..04a6031bc29 100644
+--- a/elfcpp/dwarf.h
++++ b/elfcpp/dwarf.h
+@@ -253,16 +253,16 @@ enum DW_LANG
+ enum DW_SECT
+ {
+   DW_SECT_INFO = 1,
+-  DW_SECT_TYPES = 2, // removed in v5
++  // DW_SECT_TYPES = 2, // removed in v5
+   DW_SECT_ABBREV = 3,
+   DW_SECT_LINE = 4,
+   DW_SECT_LOCLISTS = 5, // was LOC pre-v5
+   DW_SECT_STR_OFFSETS = 6,
+   DW_SECT_MACRO = 7, // was MACINFO pre-v5
+   DW_SECT_RNGLISTS = 8,  // was MACRO pre-v5
+-  LEGACY_DW_SECT_TYPES = 20,
+-  LEGACY_DW_SECT_LOC = 21,
+-  LEGACY_DW_SECT_MACINFO = 22,
++  LEGACY_DW_SECT_TYPES = 2,
++  LEGACY_DW_SECT_LOC = 9,
++  LEGACY_DW_SECT_MACINFO = 10,
+   DW_SECT_MAX = LEGACY_DW_SECT_MACINFO
+ };
+ 
+diff --git a/gold/dwp.cc b/gold/dwp.cc
+index 2beaa51879f..7acb9b401bc 100644
+--- a/gold/dwp.cc
++++ b/gold/dwp.cc
+@@ -817,27 +817,15 @@ get_dwarf_section_name(elfcpp::DW_SECT section_id)
+   static const char* dwarf_section_names[] = {
+     NULL,		      // unused
+     ".debug_info.dwo",	      // DW_SECT_INFO = 1
+-    NULL,		      // unused
++    ".debug_types.dwo",	      // LEGACY_DW_SECT_TYPES = 2
+     ".debug_abbrev.dwo",      // DW_SECT_ABBREV = 3
+     ".debug_line.dwo",	      // DW_SECT_LINE = 4
+     ".debug_loclists.dwo",    // DW_SECT_LOCLISTS = 5
+     ".debug_str_offsets.dwo", // DW_SECT_STR_OFFSETS = 6
+     ".debug_macro.dwo",	      // DW_SECT_MACRO = 7
+     ".debug_rnglists.dwo",    // DW_SECT_RNGLISTS = 8
+-    NULL,		      // unused
+-    NULL,		      // unused
+-    NULL,		      // unused
+-    NULL,		      // unused
+-    NULL,		      // unused
+-    NULL,		      // unused
+-    NULL,		      // unused
+-    NULL,		      // unused
+-    NULL,		      // unused
+-    NULL,		      // unused
+-    NULL,		      // unused
+-    ".debug_types.dwo",	      // LEGACY_DW_SECT_TYPES = 20
+-    ".debug_loc.dwo",	      // LEGACY_DW_SECT_LOC = 21
+-    ".debug_macinfo.dwo",     // LEGACY_DW_SECT_MACINFO = 22
++    ".debug_loc.dwo",	      // LEGACY_DW_SECT_LOC = 9
++    ".debug_macinfo.dwo",     // LEGACY_DW_SECT_MACINFO = 10
+   };
+ 
+   gold_assert(section_id > 0 && section_id <= elfcpp::DW_SECT_MAX);
+@@ -2183,6 +2171,13 @@ Dwp_output_file::write_index(const char* sect_name, const Dwp_index& index)
+   const unsigned int nused = index.hash_table_used_slots();
+   const unsigned int nrows = index.section_table_rows();
+ 
++  // If there is no contribution, don't create .debug_cu_index or
++  // .debug_ty_index. We can't assign a meaningful index version.  Assigning an
++  // arbitrary version is not great because an upper-level dwp may have to deal
++  // with mixed index versions.
++  if (nused == 0)
++    return;
++
+   int column_mask = index.section_table_cols();
+   unsigned int ncols = 0;
+   for (unsigned int c = 1; c <= elfcpp::DW_SECT_MAX; ++c)
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0012-gold-dwp-implement-read-DW_FORM_strx-and-co.patch b/sys-devel/binutils/files/0012-gold-dwp-implement-read-DW_FORM_strx-and-co.patch
new file mode 100644
index 0000000..a1107f1
--- /dev/null
+++ b/sys-devel/binutils/files/0012-gold-dwp-implement-read-DW_FORM_strx-and-co.patch
@@ -0,0 +1,420 @@
+From 42ad09e2695365697e7d4432c9ac2d230381d3d2 Mon Sep 17 00:00:00 2001
+From: Caroline Tice <cmtice@google.com>
+Date: Fri, 18 Dec 2020 00:59:16 -0800
+Subject: [PATCH 12/14] gold: dwp: implement read DW_FORM_strx and co
+
+Apply additional patch by David Blaikie to update the gold dwp tool
+to handle DWARF v5.  This patch teaches dwp to read DW_FORM_strx (and
+its variations), so it can read and use the str_offsets_base value to
+read the .dwo file names out of the compilation unit DIEs.
+
+(see https://critique-ng.corp.google.com/cl/348045503 for original patch)
+(also see https://critique-ng.corp.google.com/cl/350363411)
+
+This patch created for Chrome OS by Caroline Tice.
+Date: 17-Dec-2020
+[Adrian Ratiu: rebased from v2.27 to v2.35.1]
+[Adrian Ratiu: regenerated as proper git format-patch.]
+
+Change-Id: I3bf5924bcd650123914297443323a9eb140f9272
+---
+ elfcpp/elfcpp_swap.h |  47 +++++++++++++++++++
+ gold/dwarf_reader.cc | 107 ++++++++++++++++++++++++++++++++++++++++++-
+ gold/dwarf_reader.h  |  53 +++++++++++++++++++--
+ 3 files changed, 203 insertions(+), 4 deletions(-)
+
+diff --git a/elfcpp/elfcpp_swap.h b/elfcpp/elfcpp_swap.h
+index 61b3ba57520..8f0ea518c44 100644
+--- a/elfcpp/elfcpp_swap.h
++++ b/elfcpp/elfcpp_swap.h
+@@ -131,6 +131,13 @@ struct Valtype_base<16>
+   typedef int16_t Signed_valtype;
+ };
+ 
++template<>
++struct Valtype_base<24>
++{
++  typedef uint32_t Valtype;
++  typedef int32_t Signed_valtype;
++};
++
+ template<>
+ struct Valtype_base<32>
+ {
+@@ -330,6 +337,46 @@ struct Swap_unaligned<16, true>
+   }
+ };
+ 
++template<>
++struct Swap_unaligned<24, false>
++{
++  typedef Valtype_base<24>::Valtype Valtype;
++
++  static inline Valtype
++  readval(const unsigned char* wv)
++  {
++    return (wv[2] << 16) | (wv[1] << 8) | wv[0];
++  }
++
++  static inline void
++  writeval(unsigned char* wv, Valtype v)
++  {
++    wv[0] = v >> 16;
++    wv[1] = v >> 8;
++    wv[2] = v;
++  }
++};
++
++template<>
++struct Swap_unaligned<24, true>
++{
++  typedef Valtype_base<24>::Valtype Valtype;
++
++  static inline Valtype
++  readval(const unsigned char* wv)
++  {
++    return (wv[0] << 16) | (wv[1] << 8) | wv[2];
++  }
++
++  static inline void
++  writeval(unsigned char* wv, Valtype v)
++  {
++    wv[0] = v >> 16;
++    wv[1] = v >> 8;
++    wv[2] = v;
++  }
++};
++
+ template<>
+ struct Swap_unaligned<32, false>
+ {
+diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc
+index d922300a6a1..9438665c35c 100644
+--- a/gold/dwarf_reader.cc
++++ b/gold/dwarf_reader.cc
+@@ -33,6 +33,7 @@
+ #include "dwarf_reader.h"
+ #include "int_encoding.h"
+ #include "compressed_output.h"
++#include "../elfcpp/dwarf.h"
+ 
+ namespace gold {
+ 
+@@ -651,7 +652,7 @@ Dwarf_die::Dwarf_die(
+     child_offset_(0), sibling_offset_(0), abbrev_code_(NULL), attributes_(),
+     attributes_read_(false), name_(NULL), name_off_(-1), linkage_name_(NULL),
+     linkage_name_off_(-1), string_shndx_(0), specification_(0),
+-    abstract_origin_(0)
++    abstract_origin_(0), string_offsets_base_(0)
+ {
+   size_t len;
+   const unsigned char* pdie = dwinfo->buffer_at_offset(die_offset);
+@@ -789,6 +790,8 @@ Dwarf_die::read_attributes()
+ 	    break;
+ 	  case elfcpp::DW_FORM_data1:
+ 	  case elfcpp::DW_FORM_flag:
++	  case elfcpp::DW_FORM_strx1:
++	  case elfcpp::DW_FORM_addrx1:
+ 	    attr_value.val.intval = *pattr++;
+ 	    break;
+ 	  case elfcpp::DW_FORM_ref1:
+@@ -796,6 +799,8 @@ Dwarf_die::read_attributes()
+ 	    ref_form = true;
+ 	    break;
+ 	  case elfcpp::DW_FORM_data2:
++	  case elfcpp::DW_FORM_strx2:
++	  case elfcpp::DW_FORM_addrx2:
+ 	    attr_value.val.intval =
+ 		this->dwinfo_->read_from_pointer<16>(&pattr);
+ 	    break;
+@@ -804,7 +809,14 @@ Dwarf_die::read_attributes()
+ 		this->dwinfo_->read_from_pointer<16>(&pattr);
+ 	    ref_form = true;
+ 	    break;
++	  case elfcpp::DW_FORM_strx3:
++	  case elfcpp::DW_FORM_addrx3:
++              attr_value.val.intval =
++                  this->dwinfo_->read_from_pointer<24>(&pattr);
++              break;
+ 	  case elfcpp::DW_FORM_data4:
++	  case elfcpp::DW_FORM_strx4:
++	  case elfcpp::DW_FORM_addrx4:
+ 	    {
+ 	      off_t sec_off;
+ 	      sec_off = this->dwinfo_->read_from_pointer<32>(&pattr);
+@@ -858,6 +870,9 @@ Dwarf_die::read_attributes()
+ 	  case elfcpp::DW_FORM_udata:
+ 	  case elfcpp::DW_FORM_GNU_addr_index:
+ 	  case elfcpp::DW_FORM_GNU_str_index:
++	  case elfcpp::DW_FORM_strx:
++	  case elfcpp::DW_FORM_addrx:
++	  case elfcpp::DW_FORM_rnglistx:
+ 	    attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len);
+ 	    pattr += len;
+ 	    break;
+@@ -908,6 +923,10 @@ Dwarf_die::read_attributes()
+ 	    if (ref_form)
+ 	      this->abstract_origin_ = attr_value.val.refval;
+ 	    break;
++	  case elfcpp::DW_AT_str_offsets_base:
++	    if (ref_form)
++	      this->string_offsets_base_ = attr_value.val.refval;
++	    break;
+ 	  case elfcpp::DW_AT_sibling:
+ 	    if (ref_form && attr_value.aux.shndx == 0)
+ 	      this->sibling_offset_ = attr_value.val.refval;
+@@ -992,15 +1011,25 @@ Dwarf_die::skip_attributes()
+ 	    }
+ 	  case elfcpp::DW_FORM_data1:
+ 	  case elfcpp::DW_FORM_ref1:
++	  case elfcpp::DW_FORM_strx1:
++	  case elfcpp::DW_FORM_addrx1:
+ 	  case elfcpp::DW_FORM_flag:
+ 	    pattr += 1;
+ 	    break;
+ 	  case elfcpp::DW_FORM_data2:
+ 	  case elfcpp::DW_FORM_ref2:
++	  case elfcpp::DW_FORM_strx2:
++	  case elfcpp::DW_FORM_addrx2:
+ 	    pattr += 2;
+ 	    break;
++	  case elfcpp::DW_FORM_strx3:
++	  case elfcpp::DW_FORM_addrx3:
++            pattr += 3;
++            break;
+ 	  case elfcpp::DW_FORM_data4:
+ 	  case elfcpp::DW_FORM_ref4:
++	  case elfcpp::DW_FORM_strx4:
++	  case elfcpp::DW_FORM_addrx4:
+ 	    pattr += 4;
+ 	    break;
+ 	  case elfcpp::DW_FORM_data8:
+@@ -1012,6 +1041,8 @@ Dwarf_die::skip_attributes()
+ 	  case elfcpp::DW_FORM_udata:
+ 	  case elfcpp::DW_FORM_GNU_addr_index:
+ 	  case elfcpp::DW_FORM_GNU_str_index:
++	  case elfcpp::DW_FORM_strx:
++	  case elfcpp::DW_FORM_addrx:
+ 	    read_unsigned_LEB_128(pattr, &len);
+ 	    pattr += len;
+ 	    break;
+@@ -1078,6 +1109,16 @@ Dwarf_die::string_attribute(unsigned int attr)
+     return NULL;
+   switch (attr_val->form)
+     {
++      case elfcpp::DW_FORM_strx:
++      case elfcpp::DW_FORM_strx1:
++      case elfcpp::DW_FORM_strx2:
++      case elfcpp::DW_FORM_strx3:
++      case elfcpp::DW_FORM_strx4:
++        {
++          unsigned int index = attr_val->val.uintval;
++          off_t offset = this->dwinfo_->get_string_offset(index, 0);
++          return this->dwinfo_->get_string(offset, 0);
++        }
+       case elfcpp::DW_FORM_string:
+         return attr_val->val.stringval;
+       case elfcpp::DW_FORM_strp:
+@@ -1391,6 +1432,7 @@ Dwarf_info_reader::do_parse()
+ 			 NULL);
+       if (root_die.tag() != 0)
+ 	{
++          this->string_offsets_base_ = root_die.string_offsets_base();
+ 	  // Visit the CU or TU.
+ 	  if (this->is_type_unit_)
+ 	    this->visit_type_unit(section_offset + this->cu_offset_,
+@@ -1457,6 +1499,48 @@ Dwarf_info_reader::do_read_string_table(unsigned int string_shndx)
+   return true;
+ }
+ 
++
++// Read the string offsets table
++bool
++Dwarf_info_reader::do_read_string_offsets_table(unsigned int string_offsets_shndx)
++{
++  Relobj* object = this->object_;
++
++  if (string_offsets_shndx == 0)
++    {
++      for (unsigned int i = 1; i < this->object_->shnum(); ++i)
++	{
++	  std::string name = object->section_name(i);
++	  if (name == ".debug_str_offsets" || name == ".zdebug_str_offsets")
++	    {
++	      string_offsets_shndx = i;
++	      this->string_offsets_output_section_offset_ =
++		  object->output_section_offset(i);
++	      break;
++	    }
++	}
++      if (string_offsets_shndx == 0)
++	return false;
++    }
++
++  if (this->owns_string_offsets_buffer_ && this->string_offsets_buffer_ != NULL)
++    {
++      delete[] this->string_offsets_buffer_;
++      this->owns_string_offsets_buffer_ = false;
++    }
++
++  // Get the secton contents and decompress if necessary.
++  section_size_type buffer_size;
++  const unsigned char* buffer =
++      object->decompressed_section_contents(string_offsets_shndx,
++					    &buffer_size,
++					    &this->owns_string_offsets_buffer_);
++  this->string_offsets_buffer_ = buffer;
++  this->string_offsets_buffer_end_ = this->string_offsets_buffer_ + buffer_size;
++  this->string_offsets_shndx_ = string_offsets_shndx;
++  return true;
++}
++
+ // Read a possibly unaligned integer of SIZE.
+ template <int valsize>
+ inline typename elfcpp::Valtype_base<valsize>::Valtype
+@@ -1523,6 +1607,27 @@ Dwarf_info_reader::get_string(off_t str_off, unsigned int string_shndx)
+   return p;
+ }
+ 
++
++off_t //
++Dwarf_info_reader::get_string_offset(unsigned int index,
++    unsigned int string_offsets_shndx)
++{
++  if (!this->read_string_offsets_table(string_offsets_shndx))
++    return -1;
++
++  unsigned int offset_size = this->offset_size();
++
++  const unsigned char* offsets_start = this->string_offsets_buffer_ + this->string_offsets_base_;
++
++  if ((index + 1) * offset_size > (string_offsets_buffer_end_ - offsets_start))
++    return -1;
++
++  const unsigned char* offset = offsets_start + index * offset_size;
++
++  return offset_size == 4 ? this->read_from_pointer<32>(offset)
++                          : this->read_from_pointer<64>(offset);
++}
++
+ // The following are default, do-nothing, implementations of the
+ // hook methods normally provided by a derived class.  We provide
+ // default implementations rather than no implementation so that
+diff --git a/gold/dwarf_reader.h b/gold/dwarf_reader.h
+index 3a28974b882..904f32b08c4 100644
+--- a/gold/dwarf_reader.h
++++ b/gold/dwarf_reader.h
+@@ -568,6 +568,15 @@ class Dwarf_die
+     return this->abstract_origin_;
+   }
+ 
++  // Return the value of the DW_AT_str_offsets_base attribute.
++  off_t
++  string_offsets_base()
++  {
++    if (!this->string_offsets_base_)
++      this->read_attributes();
++    return this->string_offsets_base_;
++  }
++
+   // Return the value of attribute ATTR as a string.
+   const char*
+   string_attribute(unsigned int attr);
+@@ -675,6 +684,8 @@ class Dwarf_die
+   off_t specification_;
+   // The value of a DW_AT_abstract_origin attribute.
+   off_t abstract_origin_;
++  // The value of DW_AT_str_offsets_base attribute.
++  off_t string_offsets_base_;
+ };
+ 
+ // This class is used to read the debug info from the .debug_info
+@@ -698,11 +709,13 @@ class Dwarf_info_reader
+     : is_type_unit_(is_type_unit), object_(object), symtab_(symtab),
+       symtab_size_(symtab_size), shndx_(shndx), reloc_shndx_(reloc_shndx),
+       reloc_type_(reloc_type), abbrev_shndx_(0), string_shndx_(0),
+-      buffer_(NULL), buffer_end_(NULL), cu_offset_(0), cu_length_(0),
+-      offset_size_(0), address_size_(0), cu_version_(0),
++      string_offsets_shndx_(0), buffer_(NULL), buffer_end_(NULL), cu_offset_(0),
++      cu_length_(0), offset_size_(0), address_size_(0), cu_version_(0),
+       abbrev_table_(), ranges_table_(this),
+       reloc_mapper_(NULL), string_buffer_(NULL), string_buffer_end_(NULL),
+-      owns_string_buffer_(false), string_output_section_offset_(0)
++      owns_string_buffer_(false), string_output_section_offset_(0),
++      string_offsets_buffer_(NULL), string_offsets_buffer_end_(NULL),
++      owns_string_offsets_buffer_(false), string_offsets_output_section_offset_(0)
+   { }
+ 
+   virtual
+@@ -712,6 +725,8 @@ class Dwarf_info_reader
+       delete this->reloc_mapper_;
+     if (this->owns_string_buffer_ && this->string_buffer_ != NULL)
+       delete[] this->string_buffer_;
++    if (this->owns_string_offsets_buffer_ && this->string_offsets_buffer_ != NULL)
++      delete[] this->string_offsets_buffer_;
+   }
+ 
+   // Begin parsing the debug info.  This calls visit_compilation_unit()
+@@ -754,6 +769,10 @@ class Dwarf_info_reader
+   const char*
+   get_string(off_t str_off, unsigned int string_shndx);
+ 
++  // Return a string index from the DWARF string offsets table..
++  off_t
++  get_string_offset(unsigned int index, unsigned int string_offsets_shndx);
++
+   // Return the size of a DWARF offset.
+   unsigned int
+   offset_size() const
+@@ -878,6 +897,22 @@ class Dwarf_info_reader
+   bool
+   do_read_string_table(unsigned int string_shndx);
+ 
++  // Read the DWARF string table.
++  bool
++  read_string_offsets_table(unsigned int string_offsets_shndx)
++  {
++    // If we've already read this string table, return immediately.
++    if (this->string_offsets_shndx_ > 0 &&
++	this->string_offsets_shndx_ == string_offsets_shndx)
++      return true;
++    if (string_offsets_shndx == 0 && this->string_offsets_shndx_ > 0)
++      return true;
++    return this->do_read_string_offsets_table(string_offsets_shndx);
++  }
++
++  bool
++  do_read_string_offsets_table(unsigned int string_shndx);
++  
+   // True if this is a type unit; false for a compilation unit.
+   bool is_type_unit_;
+   // The object containing the .debug_info or .debug_types input section.
+@@ -896,6 +931,8 @@ class Dwarf_info_reader
+   unsigned int abbrev_shndx_;
+   // Index of the .debug_str section.
+   unsigned int string_shndx_;
++ // Index of the .debug_str_offsets section.
++  unsigned int string_offsets_shndx_;
+   // The buffer for the debug info.
+   const unsigned char* buffer_;
+   const unsigned char* buffer_end_;
+@@ -925,6 +962,16 @@ class Dwarf_info_reader
+   // from relocated data will be relative to the output section, and need
+   // to be corrected before reading data from the input section.
+   uint64_t string_output_section_offset_;
++  const unsigned char* string_offsets_buffer_;
++  const unsigned char* string_offsets_buffer_end_;
++  unsigned int string_offsets_base_;
++  // True if this object owns the buffer and needs to delete it.
++  bool owns_string_offsets_buffer_;
++  // For incremental update links, this will hold the offset of the
++  // input .debug_str section within the output section.  Offsets read
++  // from relocated data will be relative to the output section, and need
++  // to be corrected before reading data from the input section.
++  uint64_t string_offsets_output_section_offset_;
+ };
+ 
+ // We can't do better than to keep the offsets in a sorted vector.
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0013-gold-dwp-fix-null-dereference-on-executable-with-no-.patch b/sys-devel/binutils/files/0013-gold-dwp-fix-null-dereference-on-executable-with-no-.patch
new file mode 100644
index 0000000..bced6cf
--- /dev/null
+++ b/sys-devel/binutils/files/0013-gold-dwp-fix-null-dereference-on-executable-with-no-.patch
@@ -0,0 +1,48 @@
+From 3d61761717d87314f3fbbf751ec81574443af7ec Mon Sep 17 00:00:00 2001
+From: Adrian Ratiu <adrian.ratiu@collabora.com>
+Date: Tue, 12 Jan 2021 00:46:33 +0200
+Subject: [PATCH 13/14] gold: dwp: fix null dereference on executable with no
+ refs
+
+A logic error on input validation causes an empty "files" list to
+be accepted when DWP is called with only an executable without dwo
+references, further causing the "dwo_files" vector creation loop
+to no-op then output_file.finalize() to segfault because this->fd_
+is NULL.
+
+Fix the input validation and also add an assertion in finalize().
+---
+ gold/dwp.cc | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/gold/dwp.cc b/gold/dwp.cc
+index 7acb9b401bc..cc3eb324f2b 100644
+--- a/gold/dwp.cc
++++ b/gold/dwp.cc
+@@ -2025,6 +2025,8 @@ Dwp_output_file::finalize()
+ {
+   unsigned char* buf;
+ 
++  gold_assert(this->fd_ != NULL);
++
+   // Write the accumulated output sections.
+   for (unsigned int i = 0; i < this->sections_.size(); i++)
+     {
+@@ -2670,8 +2672,12 @@ main(int argc, char** argv)
+   for (int i = optind; i < argc; ++i)
+     files.push_back(Dwo_file_entry(0, argv[i]));
+ 
+-  if (exe_filename == NULL && files.empty())
+-    gold_fatal(_("no input files and no executable specified"));
++  if (files.empty())
++    if (exe_filename == NULL)
++	    gold_fatal(_("no input files were specified"));
++    else
++	    gold_fatal(_("specified exe '%s' has no .dwo refs"),
++			 exe_filename);
+ 
+   if (verify_only)
+     {
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/0014-gold-add-option-to-install-only-the-dwp-tool.patch b/sys-devel/binutils/files/0014-gold-add-option-to-install-only-the-dwp-tool.patch
new file mode 100644
index 0000000..523a827
--- /dev/null
+++ b/sys-devel/binutils/files/0014-gold-add-option-to-install-only-the-dwp-tool.patch
@@ -0,0 +1,210 @@
+From 69d663d2e2f7f161d09860f622cfe96271eaec1d Mon Sep 17 00:00:00 2001
+From: Adrian Ratiu <adrian.ratiu@collabora.com>
+Date: Sat, 9 Jan 2021 04:06:08 +0200
+Subject: [PATCH 14/14] gold: add option to install only the dwp tool
+
+Distros/build-systems (ChromiumOS/portage, Yocto/bitbake...)
+can have buggy recipes which pick a wrong linker, upstream
+projects can hardcode or default to the wrong linker and other
+bugs like these make it prudent to have gold disabled if not
+necessary, hence the very useful existing --disable-gold flag.
+
+However there are cases where dwp is needed even though gold
+is not, so an option to enable only dwp in gold builds can be
+helpful as well to avoid project specific hacks like removing
+the gold linker in do_install() scripts just to have dwp.
+---
+ configure         |  4 +++-
+ configure.ac      |  4 +++-
+ gold/Makefile.am  |  2 ++
+ gold/Makefile.in  |  3 +++
+ gold/configure    |  4 ++++
+ gold/configure.ac | 10 ++++++++--
+ ld/configure      |  2 +-
+ ld/configure.ac   |  4 ++--
+ 8 files changed, 26 insertions(+), 7 deletions(-)
+
+diff --git a/configure b/configure
+index 54d0339ab9e..b381d8c875a 100755
+--- a/configure
++++ b/configure
+@@ -3036,6 +3036,8 @@ fi
+ #     Build both gold (installed as "ld.gold") and ld (installed as "ld"
+ #     and ld.bfd).
+ #     In other words, ld is default
++# --enable-gold=dwp
++#     Install only the DWP tool part of gold, not the linker itself
+ # --enable-gold=default --enable-ld=default
+ #     Error.
+ 
+@@ -3048,7 +3050,7 @@ else
+ fi
+ 
+ case "${ENABLE_GOLD}" in
+-  yes|default)
++  yes|default|dwp)
+     # Check for ELF target.
+     is_elf=no
+     case "${target}" in
+diff --git a/configure.ac b/configure.ac
+index a910c4fd6ba..28e64e8e856 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -319,6 +319,8 @@ AC_ARG_ENABLE(offload-targets,
+ #     Build both gold (installed as "ld.gold") and ld (installed as "ld"
+ #     and ld.bfd).
+ #     In other words, ld is default
++# --enable-gold=dwp
++#     Install only the DWP tool part of gold, not the linker itself
+ # --enable-gold=default --enable-ld=default
+ #     Error.
+ 
+@@ -329,7 +331,7 @@ AC_ARG_ENABLE(gold,
+ ENABLE_GOLD=$enableval,
+ ENABLE_GOLD=no)
+ case "${ENABLE_GOLD}" in
+-  yes|default)
++  yes|default|dwp)
+     # Check for ELF target.
+     is_elf=no
+     case "${target}" in
+diff --git a/gold/Makefile.am b/gold/Makefile.am
+index 3860e798106..a9758b46425 100644
+--- a/gold/Makefile.am
++++ b/gold/Makefile.am
+@@ -223,6 +223,7 @@ check: libgold.a
+ 
+ install-exec-local: ld-new$(EXEEXT)
+ 	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin
++	if test "x$(install_only_dwp)" != "xyes"; then \
+ 	n=`echo $(installed_linker) | sed '$(transform)'`; \
+ 	$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) \
+ 	  ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${n}$(EXEEXT); \
+@@ -241,6 +242,7 @@ install-exec-local: ld-new$(EXEEXT)
+ 	    ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \
+ 	    || $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
+ 	  fi; \
++	fi; \
+ 	fi
+ 
+ # We want install to imply install-info as per GNU standards, despite
+diff --git a/gold/Makefile.in b/gold/Makefile.in
+index f2906ede8b6..c35a5e94f26 100644
+--- a/gold/Makefile.in
++++ b/gold/Makefile.in
+@@ -628,6 +628,7 @@ htmldir = @htmldir@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_as_default = @install_as_default@
++install_only_dwp = @install_only_dwp@
+ install_sh = @install_sh@
+ installed_linker = @installed_linker@
+ libdir = @libdir@
+@@ -1583,6 +1584,7 @@ check: libgold.a
+ 
+ install-exec-local: ld-new$(EXEEXT)
+ 	$(mkinstalldirs) $(DESTDIR)$(bindir) $(DESTDIR)$(tooldir)/bin
++	if test "x$(install_only_dwp)" != "xyes"; then \
+ 	n=`echo $(installed_linker) | sed '$(transform)'`; \
+ 	$(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) \
+ 	  ld-new$(EXEEXT) $(DESTDIR)$(bindir)/$${n}$(EXEEXT); \
+@@ -1601,6 +1603,7 @@ install-exec-local: ld-new$(EXEEXT)
+ 	    ln $(DESTDIR)$(bindir)/$${n}$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT) >/dev/null 2>/dev/null \
+ 	    || $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) ld-new$(EXEEXT) $(DESTDIR)$(tooldir)/bin/ld$(EXEEXT); \
+ 	  fi; \
++	fi; \
+ 	fi
+ 
+ # We want install to imply install-info as per GNU standards, despite
+diff --git a/gold/configure b/gold/configure
+index 199a739e7d1..e30facb8f67 100755
+--- a/gold/configure
++++ b/gold/configure
+@@ -731,6 +731,7 @@ PLUGINS_FALSE
+ PLUGINS_TRUE
+ installed_linker
+ install_as_default
++install_only_dwp
+ EGREP
+ GREP
+ CPP
+@@ -4958,6 +4959,9 @@ if test "${enable_gold+set}" = set; then :
+      install_as_default=yes
+    fi
+    ;;
++ dwp)
++   install_only_dwp=yes
++   ;;
+  esac
+ else
+   install_as_default=no
+diff --git a/gold/configure.ac b/gold/configure.ac
+index eca4f01c111..7b3fa05b32c 100644
+--- a/gold/configure.ac
++++ b/gold/configure.ac
+@@ -67,10 +67,12 @@ AC_DEFINE_UNQUOTED(TARGET_SYSTEM_ROOT_RELOCATABLE, $sysroot_relocatable,
+ dnl "install_as_default" is true if the linker to be installed as the
+ dnl default linker, ld.
+ dnl "installed_linker" is the installed gold linker name.
++dnl "install_only_dwp" is true if only the DWP tool will be installed,
++dnl not the gold linker itself.
+ 
+ installed_linker=ld.gold
+ AC_ARG_ENABLE(gold,
+-[[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
++[[  --enable-gold[=ARG]     build gold [ARG={default,dwp,yes,no}]]],
+ [case "${enableval}" in
+  default)
+    install_as_default=yes
+@@ -80,10 +82,14 @@ AC_ARG_ENABLE(gold,
+      install_as_default=yes
+    fi
+    ;;
+- esac],
++ dwp)
++   install_only_dwp=yes
++   ;;
++esac],
+ [install_as_default=no])
+ AC_SUBST(install_as_default)
+ AC_SUBST(installed_linker)
++AC_SUBST(install_only_dwp)
+ 
+ AC_PLUGINS
+ if test "$plugins" = "yes"; then
+diff --git a/ld/configure b/ld/configure
+index e20f53c414d..bf6877ddd52 100755
+--- a/ld/configure
++++ b/ld/configure
+@@ -15803,7 +15803,7 @@ if test "${enable_gold+set}" = set; then :
+    install_as_default=no
+    installed_linker=ld.bfd
+    ;;
+- yes|no)
++ yes|no|dwp)
+    install_as_default=yes
+    installed_linker=ld.bfd
+    ;;
+diff --git a/ld/configure.ac b/ld/configure.ac
+index b77f8510ca6..a25b903fda5 100644
+--- a/ld/configure.ac
++++ b/ld/configure.ac
+@@ -108,13 +108,13 @@ dnl Use --enable-gold to decide if this linker should be the default.
+ dnl "install_as_default" is set to false if gold is the default linker.
+ dnl "installed_linker" is the installed BFD linker name.
+ AC_ARG_ENABLE(gold,
+-[[  --enable-gold[=ARG]     build gold [ARG={default,yes,no}]]],
++[[  --enable-gold[=ARG]     build gold [ARG={default,dwp,yes,no}]]],
+ [case "${enableval}" in
+  default)
+    install_as_default=no
+    installed_linker=ld.bfd
+    ;;
+- yes|no)
++ dwp|yes|no)
+    install_as_default=yes
+    installed_linker=ld.bfd
+    ;;
+-- 
+2.31.1
+
diff --git a/sys-devel/binutils/files/binutils-2.27.0-apply_dynamic_relocs.patch b/sys-devel/binutils/files/binutils-2.27.0-apply_dynamic_relocs.patch
deleted file mode 100644
index c8f3e4e..0000000
--- a/sys-devel/binutils/files/binutils-2.27.0-apply_dynamic_relocs.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-gold: turn on --apply-dynamic-relocs by default (http://crbug.com/828169).
-
---- binutils-2.27/gold/options.h
-+++ binutils-2.27/gold/options.h
-@@ -644,8 +644,8 @@ class General_options
- 	      N_("Allow unresolved references in shared libraries"),
- 	      N_("Do not allow unresolved references in shared libraries"));
- 
--  DEFINE_bool(apply_dynamic_relocs, options::TWO_DASHES, '\0', false,
--	      N_("Apply link-time values for dynamic relocations"),
-+  DEFINE_bool(apply_dynamic_relocs, options::TWO_DASHES, '\0', true,
-+	      N_("Apply link-time values for dynamic relocations (default)"),
- 	      N_("(aarch64 only) Do not apply link-time values "
- 		 "for dynamic relocations"));
- 
diff --git a/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-1.patch b/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-1.patch
deleted file mode 100644
index 39ec5b4..0000000
--- a/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-1.patch
+++ /dev/null
@@ -1,1035 +0,0 @@
-Apply basic patch by David Blaikie to update gold dwp tool to handle
-DWARF v5. This is the first of three patches for DWARF v5.
-
-This does the main work of updating dwp to handle DWARF v5.
-
-This patch created for Chrome OS by Caroline Tice.
-Date: 19-Nov-2020
-diff --git a/gold/dwp.cc b/gold/dwp.cc
-index df771e8b..5501985c 100644
---- a/gold/dwp.cc
-+++ b/gold/dwp.cc
-@@ -22,6 +22,7 @@
- 
- #include "dwp.h"
- 
-+#include <cassert>
- #include <cstdarg>
- #include <cstddef>
- #include <cstdio>
-@@ -31,6 +32,7 @@
- 
- #include <vector>
- #include <algorithm>
-+#include <functional>
- 
- #include "getopt.h"
- #include "libiberty.h"
-@@ -129,6 +131,11 @@ class Dwo_file
-   bool
-   verify(const File_list& files);
- 
-+  void
-+  remap_str_offsets(
-+    unsigned int cu_version, unsigned int offset_size,
-+    const std::vector<std::pair<unsigned char*, section_size_type> >& str_offs);
-+
-  private:
-   // Types for mapping input string offsets to output string offsets.
-   typedef std::pair<section_offset_type, section_offset_type>
-@@ -204,16 +211,23 @@ class Dwo_file
- 
-   // Copy a section from the input file to the output file.
-   Section_bounds
--  copy_section(Dwp_output_file* output_file, unsigned int shndx,
--	       elfcpp::DW_SECT section_id);
-+  copy_section(
-+    Dwp_output_file* output_file, unsigned int shndx,
-+    elfcpp::DW_SECT section_id,
-+    std::vector<std::pair<unsigned char*, section_size_type> >& str_offs);
- 
-   // Remap the string offsets in the .debug_str_offsets.dwo section.
--  const unsigned char*
--  remap_str_offsets(const unsigned char* contents, section_size_type len);
-+  void
-+  remap_str_offsets(unsigned char* contents, section_size_type len);
-+
-+  // void
-+  //remap_str_offsets(
-+  //  unsigned int cu_version, unsigned int offset_size,
-+  //  const std::vector<std::pair<unsigned char*, section_size_type> >& str_offs);
- 
-   template <bool big_endian>
--  const unsigned char*
--  sized_remap_str_offsets(const unsigned char* contents, section_size_type len);
-+  void
-+  sized_remap_str_offsets(unsigned char* contents, section_size_type len);
- 
-   // Remap a single string offsets from an offset in the input string table
-   // to an offset in the output string table.
-@@ -452,7 +466,7 @@ class Dwp_output_file
-       abiversion_(0), fd_(NULL), next_file_offset_(0), shnum_(1), sections_(),
-       section_id_map_(), shoff_(0), shstrndx_(0), have_strings_(false),
-       stringpool_(), shstrtab_(), cu_index_(), tu_index_(), last_type_sig_(0),
--      last_tu_slot_(0)
-+      last_tu_slot_(0), index_version_(0)
-   {
-     this->section_id_map_.resize(elfcpp::DW_SECT_MAX + 1);
-     this->stringpool_.set_no_zero_null();
-@@ -484,6 +498,20 @@ class Dwp_output_file
-   void
-   add_tu_set(Unit_set* tu_set);
- 
-+  bool
-+  update_index_version(unsigned int version)
-+  {
-+    // Translate the DWARF version to a Split DWARF index version.
-+    if (version < 5)
-+      version = 2;
-+    if (version > 5)
-+      gold_fatal(_("unsupported DWARF version"));
-+    if (index_version_ != 0 && version != index_version_)
-+      return false;
-+    index_version_ = version;
-+    return true;
-+  }
-+
-   // Finalize the file, write the string tables and index sections,
-   // and close the file.
-   void
-@@ -677,6 +705,7 @@ class Dwp_output_file
-   uint64_t last_type_sig_;
-   // Cache of the slot index for the last type signature.
-   unsigned int last_tu_slot_;
-+  unsigned int index_version_;
- };
- 
- // A specialization of Dwarf_info_reader, for reading dwo_names from
-@@ -704,22 +733,47 @@ class Dwo_name_info_reader : public Dwarf_info_reader
-  protected:
-   // Visit a compilation unit.
-   virtual void
--  visit_compilation_unit(off_t cu_offset, off_t cu_length, Dwarf_die*);
-+  visit_compilation_unit(off_t cu_offset, off_t cu_length, uint64_t signature,
-+			 Dwarf_die*);
- 
-  private:
-   // The list of files to populate.
-   File_list* files_;
- };
- 
-+class remap_callback
-+{
-+  public:
-+  
-+  remap_callback(std::vector<std::pair<unsigned char*, section_size_type> > offsets, Dwo_file* dwo_file)
-+    : str_offs_(offsets), dwo_file_(dwo_file)
-+    { }
-+  
-+    void
-+    run_remap(unsigned int cu_version, unsigned int offset_size)
-+    {
-+      dwo_file_->remap_str_offsets(cu_version, offset_size, str_offs_);
-+    }
-+  
-+  virtual ~remap_callback()
-+  { }
-+
-+  std::vector<std::pair<unsigned char*, section_size_type> > str_offs_;
-+  Dwo_file *dwo_file_;
-+};
-+  
- // A specialization of Dwarf_info_reader, for reading DWARF CUs and TUs
- // and adding them to the output file.
- 
- class Unit_reader : public Dwarf_info_reader
- {
-  public:
--  Unit_reader(bool is_type_unit, Relobj* object, unsigned int shndx)
-+  Unit_reader(bool is_type_unit, Relobj* object, unsigned int shndx,
-+	      //    	      std::function<void(unsigned int, unsigned int)> remap_str_offsets)
-+	          	      remap_callback* remap_str_offsets)
-     : Dwarf_info_reader(is_type_unit, object, NULL, 0, shndx, 0, 0),
--      output_file_(NULL), sections_(NULL)
-+      output_file_(NULL), sections_(NULL),
-+      remap_str_offsets_(remap_str_offsets)
-   { }
- 
-   ~Unit_reader()
-@@ -732,7 +786,8 @@ class Unit_reader : public Dwarf_info_reader
-  protected:
-   // Visit a compilation unit.
-   virtual void
--  visit_compilation_unit(off_t cu_offset, off_t cu_length, Dwarf_die*);
-+  visit_compilation_unit(off_t cu_offset, off_t cu_length, uint64_t signature,
-+			 Dwarf_die*);
- 
-   // Visit a type unit.
-   virtual void
-@@ -740,8 +795,13 @@ class Unit_reader : public Dwarf_info_reader
- 		  uint64_t signature, Dwarf_die*);
- 
-  private:
-+  Unit_set*
-+  make_unit(off_t cu_length, uint64_t signature);
-+
-   Dwp_output_file* output_file_;
-   Section_bounds* sections_;
-+  //std::function<void(unsigned int, unsigned int)> remap_str_offsets_;
-+  remap_callback *remap_str_offsets_;
- };
- 
- // Return the name of a DWARF .dwo section.
-@@ -750,15 +810,29 @@ static const char*
- get_dwarf_section_name(elfcpp::DW_SECT section_id)
- {
-   static const char* dwarf_section_names[] = {
--    NULL, // unused
--    ".debug_info.dwo",         // DW_SECT_INFO = 1
--    ".debug_types.dwo",        // DW_SECT_TYPES = 2
--    ".debug_abbrev.dwo",       // DW_SECT_ABBREV = 3
--    ".debug_line.dwo",         // DW_SECT_LINE = 4
--    ".debug_loc.dwo",          // DW_SECT_LOC = 5
--    ".debug_str_offsets.dwo",  // DW_SECT_STR_OFFSETS = 6
--    ".debug_macinfo.dwo",      // DW_SECT_MACINFO = 7
--    ".debug_macro.dwo",        // DW_SECT_MACRO = 8
-+    NULL,		      // unused
-+    ".debug_info.dwo",	      // DW_SECT_INFO = 1
-+    NULL,		      // unused
-+    ".debug_abbrev.dwo",      // DW_SECT_ABBREV = 3
-+    ".debug_line.dwo",	      // DW_SECT_LINE = 4
-+    ".debug_loclists.dwo",    // DW_SECT_LOCLISTS = 5
-+    ".debug_str_offsets.dwo", // DW_SECT_STR_OFFSETS = 6
-+    ".debug_macro.dwo",	      // DW_SECT_MACRO = 7
-+    ".debug_rnglists.dwo",    // DW_SECT_RNGLISTS = 8
-+    NULL,		      // unused
-+    NULL,		      // unused
-+    NULL,		      // unused
-+    NULL,		      // unused
-+    NULL,		      // unused
-+    NULL,		      // unused
-+    NULL,		      // unused
-+    NULL,		      // unused
-+    NULL,		      // unused
-+    NULL,		      // unused
-+    NULL,		      // unused
-+    ".debug_types.dwo",	      // LEGACY_DW_SECT_TYPES = 20
-+    ".debug_loc.dwo",	      // LEGACY_DW_SECT_LOC = 21
-+    ".debug_macinfo.dwo",     // LEGACY_DW_SECT_MACINFO = 22
-   };
- 
-   gold_assert(section_id > 0 && section_id <= elfcpp::DW_SECT_MAX);
-@@ -925,16 +999,20 @@ Dwo_file::read(Dwp_output_file* output_file)
- 	debug_shndx[elfcpp::DW_SECT_ABBREV] = i;
-       else if (strcmp(suffix, "line.dwo") == 0)
- 	debug_shndx[elfcpp::DW_SECT_LINE] = i;
-+      else if (strcmp(suffix, "loclists.dwo") == 0)
-+	debug_shndx[elfcpp::DW_SECT_LOCLISTS] = i;
-       else if (strcmp(suffix, "loc.dwo") == 0)
--	debug_shndx[elfcpp::DW_SECT_LOC] = i;
-+	debug_shndx[elfcpp::LEGACY_DW_SECT_LOC] = i;
-       else if (strcmp(suffix, "str.dwo") == 0)
- 	debug_str = i;
-       else if (strcmp(suffix, "str_offsets.dwo") == 0)
- 	debug_shndx[elfcpp::DW_SECT_STR_OFFSETS] = i;
--      else if (strcmp(suffix, "macinfo.dwo") == 0)
--	debug_shndx[elfcpp::DW_SECT_MACINFO] = i;
-       else if (strcmp(suffix, "macro.dwo") == 0)
- 	debug_shndx[elfcpp::DW_SECT_MACRO] = i;
-+      else if (strcmp(suffix, "rnglists.dwo") == 0)
-+	debug_shndx[elfcpp::DW_SECT_RNGLISTS] = i;
-+      else if (strcmp(suffix, "macinfo.dwo") == 0)
-+	debug_shndx[elfcpp::LEGACY_DW_SECT_MACINFO] = i;
-       else if (strcmp(suffix, "cu_index") == 0)
- 	debug_cu_index = i;
-       else if (strcmp(suffix, "tu_index") == 0)
-@@ -956,9 +1034,9 @@ Dwo_file::read(Dwp_output_file* output_file)
- 	    gold_fatal(_("%s: .dwp file must have no more than one "
- 			 ".debug_types.dwo section"), this->name_);
-           if (debug_types.size() == 1)
--            debug_shndx[elfcpp::DW_SECT_TYPES] = debug_types[0];
-+            debug_shndx[elfcpp::LEGACY_DW_SECT_TYPES] = debug_types[0];
-           else
--            debug_shndx[elfcpp::DW_SECT_TYPES] = 0;
-+            debug_shndx[elfcpp::LEGACY_DW_SECT_TYPES] = 0;
- 	  this->read_unit_index(debug_tu_index, debug_shndx, output_file, true);
- 	}
-       return;
-@@ -973,7 +1051,7 @@ Dwo_file::read(Dwp_output_file* output_file)
-        tp != debug_types.end();
-        ++tp)
-     {
--      debug_shndx[elfcpp::DW_SECT_TYPES] = *tp;
-+      debug_shndx[elfcpp::LEGACY_DW_SECT_TYPES] = *tp;
-       this->add_unit_set(output_file, debug_shndx, true);
-     }
- }
-@@ -1127,6 +1205,72 @@ Dwo_file::read_unit_index(unsigned int shndx, unsigned int *debug_shndx,
- 				       is_tu_index);
- }
- 
-+unsigned int
-+get_unit_version(const unsigned char* unit_start, unsigned int unit_length,
-+		 bool is_big_endian, unsigned int* offset_size)
-+{
-+  if (unit_length < 4)
-+    return 0;
-+
-+  unsigned int length = elfcpp::Swap_unaligned<32, true>::readval(unit_start);
-+  unsigned int version_offset = 4;
-+  *offset_size = 4;
-+  if (length == 0xffffffff)
-+    {
-+      version_offset += 8;
-+      *offset_size = 8;
-+    }
-+  if (unit_length < version_offset + 2)
-+    return 0;
-+  unit_start += version_offset;
-+  return is_big_endian ? elfcpp::Swap_unaligned<16, true>::readval(unit_start)
-+		       : elfcpp::Swap_unaligned<16, false>::readval(unit_start);
-+}
-+
-+unsigned int
-+get_versioned_column_index(unsigned int index_version, unsigned int column)
-+{
-+  if (index_version == 5)
-+    {
-+      return column;
-+    }
-+  switch (column)
-+    {
-+      case elfcpp::LEGACY_DW_SECT_TYPES:
-+	return 2;
-+      case elfcpp::LEGACY_DW_SECT_LOC:
-+	return 5;
-+      case elfcpp::LEGACY_DW_SECT_MACINFO:
-+	return 7;
-+      case elfcpp::DW_SECT_MACRO:
-+	return 8;
-+      default:
-+	return column;
-+    }
-+}
-+
-+unsigned int
-+get_uniform_column_index(unsigned int index_version, unsigned int column)
-+{
-+  if (index_version == 5)
-+    {
-+      return column;
-+    }
-+  switch (column)
-+    {
-+      case 2:
-+	return elfcpp::LEGACY_DW_SECT_TYPES;
-+      case 5:
-+	return elfcpp::LEGACY_DW_SECT_LOC;
-+      case 7:
-+	return elfcpp::LEGACY_DW_SECT_MACINFO;
-+      case 8:
-+	return elfcpp::DW_SECT_MACRO;
-+      default:
-+	return column;
-+    }
-+}
-+
- template <bool big_endian>
- void
- Dwo_file::sized_read_unit_index(unsigned int shndx,
-@@ -1134,11 +1278,6 @@ Dwo_file::sized_read_unit_index(unsigned int shndx,
- 				Dwp_output_file* output_file,
- 				bool is_tu_index)
- {
--  elfcpp::DW_SECT info_sect = (is_tu_index
--			       ? elfcpp::DW_SECT_TYPES
--			       : elfcpp::DW_SECT_INFO);
--  unsigned int info_shndx = debug_shndx[info_sect];
--
-   gold_assert(shndx > 0);
- 
-   section_size_type index_len;
-@@ -1152,10 +1291,18 @@ Dwo_file::sized_read_unit_index(unsigned int shndx,
-   // We don't support version 1 anymore because it was experimental
-   // and because in normal use, dwp is not expected to read .dwp files
-   // produced by an earlier version of the tool.
--  if (version != 2)
-+  if (version != 2 && version != 5)
-     gold_fatal(_("%s: section %s has unsupported version number %d"),
- 	       this->name_, this->section_name(shndx).c_str(), version);
- 
-+  elfcpp::DW_SECT info_sect
-+    = (is_tu_index && version == 2 ? elfcpp::LEGACY_DW_SECT_TYPES
-+				   : elfcpp::DW_SECT_INFO);
-+  unsigned int info_shndx = debug_shndx[info_sect];
-+
-+  if (!output_file->update_index_version(version))
-+    gold_fatal(_("mismatched unit version in index"));
-+
-   unsigned int ncols =
-       elfcpp::Swap_unaligned<32, big_endian>::readval(contents
- 						      + sizeof(uint32_t));
-@@ -1184,12 +1331,18 @@ Dwo_file::sized_read_unit_index(unsigned int shndx,
- 
-   // Copy the related sections and track the section offsets and sizes.
-   Section_bounds sections[elfcpp::DW_SECT_MAX + 1];
--  for (int i = elfcpp::DW_SECT_ABBREV; i <= elfcpp::DW_SECT_MAX; ++i)
-+  std::vector<std::pair<unsigned char*, section_size_type> > str_offs;
-+  for (int i = 1; i <= elfcpp::DW_SECT_MAX; ++i)
-     {
--      if (debug_shndx[i] > 0)
--	sections[i] = this->copy_section(output_file, debug_shndx[i],
--					 static_cast<elfcpp::DW_SECT>(i));
-+      if (i != elfcpp::DW_SECT_INFO && i != elfcpp::LEGACY_DW_SECT_TYPES
-+	  && debug_shndx[i] > 0)
-+	sections[i]
-+	  = this->copy_section(output_file, debug_shndx[i],
-+			       static_cast<elfcpp::DW_SECT>(i), str_offs);
-     }
-+  if (str_offs.size() > 1)
-+    gold_fatal(_("%s: contains more than one .debug_str_offsets.dwo section"),
-+	       this->name_);
- 
-   // Get the contents of the .debug_info.dwo or .debug_types.dwo section.
-   section_size_type info_len;
-@@ -1213,13 +1366,15 @@ Dwo_file::sized_read_unit_index(unsigned int shndx,
- 	      poffsets + (index - 1) * ncols * sizeof(uint32_t);
- 	  const unsigned char* psrow =
- 	      psizes + (index - 1) * ncols * sizeof(uint32_t);
-+	  std::vector<std::pair<unsigned char*, section_size_type> >
-+	    str_off = str_offs;
- 
- 	  // Adjust the offset of each contribution within the input section
- 	  // by the offset of the input section within the output section.
--	  for (unsigned int j = 0; j <= ncols; j++)
-+	  for (unsigned int j = 0; j < ncols; j++)
- 	    {
--	      unsigned int dw_sect =
--		  elfcpp::Swap_unaligned<64, big_endian>::readval(pch);
-+	      unsigned int dw_sect = get_uniform_column_index(
-+		version, elfcpp::Swap_unaligned<64, big_endian>::readval(pch));
- 	      unsigned int offset =
- 		  elfcpp::Swap_unaligned<64, big_endian>::readval(porow);
- 	      unsigned int size =
-@@ -1230,12 +1385,24 @@ Dwo_file::sized_read_unit_index(unsigned int shndx,
- 	      pch += sizeof(uint32_t);
- 	      porow += sizeof(uint32_t);
- 	      psrow += sizeof(uint32_t);
-+	      if (dw_sect == elfcpp::DW_SECT_STR_OFFSETS && !str_off.empty())
-+		{
-+		  str_off[0].first += offset;
-+		  str_off[0].second = size;
-+		}
- 	    }
- 
- 	  const unsigned char* unit_start =
- 	      info_contents + unit_set->sections[info_sect].offset;
- 	  section_size_type unit_length = unit_set->sections[info_sect].size;
- 
-+	  unsigned int offset_size;
-+	  if (!str_off.empty())
-+	    if (unsigned int unit_version
-+		= get_unit_version(unit_start, unit_length,
-+				   this->obj_->is_big_endian(), &offset_size))
-+	      remap_str_offsets(unit_version, offset_size, str_off);
-+
- 	  // Dwp_output_file::add_contribution writes the .debug_info.dwo
- 	  // section directly to the output file, so we only need to
- 	  // duplicate contributions for .debug_types.dwo section.
-@@ -1408,8 +1575,9 @@ Dwo_file::add_strings(Dwp_output_file* output_file, unsigned int debug_str)
- // the string offsets for the output string table.
- 
- Section_bounds
--Dwo_file::copy_section(Dwp_output_file* output_file, unsigned int shndx,
--		       elfcpp::DW_SECT section_id)
-+Dwo_file::copy_section(
-+  Dwp_output_file* output_file, unsigned int shndx, elfcpp::DW_SECT section_id,
-+  std::vector<std::pair<unsigned char*, section_size_type> >& str_offs)
- {
-   // Some sections may be referenced from more than one set.
-   // Don't copy a section more than once.
-@@ -1424,20 +1592,19 @@ Dwo_file::copy_section(Dwp_output_file* output_file, unsigned int shndx,
-   bool is_new;
-   const unsigned char* contents = this->section_contents(shndx, &len, &is_new);
- 
--  if (section_id == elfcpp::DW_SECT_STR_OFFSETS)
--    {
--      const unsigned char* remapped = this->remap_str_offsets(contents, len);
--      if (is_new)
--	delete[] contents;
--      contents = remapped;
--    }
--  else if (!is_new)
-+  if (!is_new)
-     {
-       unsigned char* copy = new unsigned char[len];
-       memcpy(copy, contents, len);
-       contents = copy;
-     }
- 
-+  if (section_id == elfcpp::DW_SECT_STR_OFFSETS)
-+    {
-+      str_offs.push_back(
-+	std::make_pair(const_cast<unsigned char*>(contents), len));
-+    }
-+
-   // Add the contents of the input section to the output section.
-   // The output file takes ownership of the memory pointed to by CONTENTS.
-   section_offset_type off = output_file->add_contribution(section_id, contents,
-@@ -1451,38 +1618,33 @@ Dwo_file::copy_section(Dwp_output_file* output_file, unsigned int shndx,
- }
- 
- // Remap the 
--const unsigned char*
--Dwo_file::remap_str_offsets(const unsigned char* contents,
--			    section_size_type len)
-+void
-+Dwo_file::remap_str_offsets(unsigned char* contents, section_size_type len)
- {
-   if ((len & 3) != 0)
-     gold_fatal(_("%s: .debug_str_offsets.dwo section size not a multiple of 4"),
- 	       this->name_);
- 
-   if (this->obj_->is_big_endian())
--    return this->sized_remap_str_offsets<true>(contents, len);
-+    this->sized_remap_str_offsets<true>(contents, len);
-   else
--    return this->sized_remap_str_offsets<false>(contents, len);
-+    this->sized_remap_str_offsets<false>(contents, len);
- }
- 
- template <bool big_endian>
--const unsigned char*
--Dwo_file::sized_remap_str_offsets(const unsigned char* contents,
-+void
-+Dwo_file::sized_remap_str_offsets(unsigned char* contents,
- 				  section_size_type len)
- {
--  unsigned char* remapped = new unsigned char[len];
--  const unsigned char* p = contents;
--  unsigned char* q = remapped;
-+  unsigned char* p = contents;
-   while (len > 0)
-     {
-       unsigned int val = elfcpp::Swap_unaligned<32, big_endian>::readval(p);
-       val = this->remap_str_offset(val);
--      elfcpp::Swap_unaligned<32, big_endian>::writeval(q, val);
-+      elfcpp::Swap_unaligned<32, big_endian>::writeval(p, val);
-       len -= 4;
-       p += 4;
--      q += 4;
-     }
--  return remapped;
- }
- 
- unsigned int
-@@ -1491,10 +1653,10 @@ Dwo_file::remap_str_offset(section_offset_type val)
-   Str_offset_map_entry entry;
-   entry.first = val;
- 
--  Str_offset_map::const_iterator p =
--      std::lower_bound(this->str_offset_map_.begin(),
--		       this->str_offset_map_.end(),
--		       entry, Offset_compare());
-+  Str_offset_map::const_iterator p
-+    = std::lower_bound(this->str_offset_map_.begin(),
-+		       this->str_offset_map_.end(), entry,
-+		       Offset_compare());
- 
-   if (p == this->str_offset_map_.end() || p->first > val)
-     {
-@@ -1510,13 +1672,40 @@ Dwo_file::remap_str_offset(section_offset_type val)
- // Add a set of .debug_info.dwo or .debug_types.dwo and related sections
- // to OUTPUT_FILE.
- 
-+void
-+Dwo_file::remap_str_offsets(
-+  unsigned int cu_version, unsigned int offset_size,
-+  const std::vector<std::pair<unsigned char*, section_size_type> >& str_offs)
-+{
-+  unsigned int header_size = 0;
-+  if (cu_version >= 5)
-+    {
-+      // length field
-+      if (offset_size == 4)
-+	header_size = 4;
-+      else
-+	header_size = 12;
-+      // version
-+      header_size += 2;
-+      // padding
-+      header_size += 2;
-+    }
-+
-+  std::pair<unsigned char*, section_size_type> p;
-+  for (unsigned int i = 0; i < str_offs.size(); ++i)
-+    {
-+      p = str_offs[i];
-+      this->remap_str_offsets(p.first + header_size, p.second - header_size);
-+    }
-+}
-+
- void
- Dwo_file::add_unit_set(Dwp_output_file* output_file, unsigned int *debug_shndx,
- 		       bool is_debug_types)
- {
--  unsigned int shndx = (is_debug_types
--			? debug_shndx[elfcpp::DW_SECT_TYPES]
--			: debug_shndx[elfcpp::DW_SECT_INFO]);
-+  elfcpp::DW_SECT info_sect
-+    = (is_debug_types ? elfcpp::LEGACY_DW_SECT_TYPES : elfcpp::DW_SECT_INFO);
-+  unsigned int shndx = debug_shndx[info_sect];
- 
-   gold_assert(shndx != 0);
- 
-@@ -1525,17 +1714,24 @@ Dwo_file::add_unit_set(Dwp_output_file* output_file, unsigned int *debug_shndx,
- 
-   // Copy the related sections and track the section offsets and sizes.
-   Section_bounds sections[elfcpp::DW_SECT_MAX + 1];
--  for (int i = elfcpp::DW_SECT_ABBREV; i <= elfcpp::DW_SECT_MAX; ++i)
-+  std::vector<std::pair<unsigned char*, section_size_type> > str_offs;
-+  for (int i = 1; i <= elfcpp::DW_SECT_MAX; ++i)
-     {
--      if (debug_shndx[i] > 0)
--	sections[i] = this->copy_section(output_file, debug_shndx[i],
--					 static_cast<elfcpp::DW_SECT>(i));
--    }
-+      if (debug_shndx[i] > 0 && i != info_sect)
-+	sections[i]
-+	  = this->copy_section(output_file, debug_shndx[i],
-+			       static_cast<elfcpp::DW_SECT>(i), str_offs);
-+     }
- 
-   // Parse the .debug_info or .debug_types section and add each compilation
-   // or type unit to the output file, along with the contributions to the
-   // related sections.
--  Unit_reader reader(is_debug_types, this->obj_, shndx);
-+  remap_callback remap_str_offsets_callback(str_offs, this);
-+  Unit_reader reader(is_debug_types, this->obj_, shndx,
-+		     & remap_str_offsets_callback);
-+		     // [&](unsigned int cu_version, unsigned int offset_size) {
-+		     //  remap_str_offsets(cu_version, offset_size, str_offs);
-+		     // });
-   reader.add_units(output_file, debug_shndx[elfcpp::DW_SECT_ABBREV], sections);
- }
- 
-@@ -1992,8 +2188,20 @@ Dwp_output_file::write_index(const char* sect_name, const Dwp_index& index)
- 
-   // Write the section header: version number, padding,
-   // number of used slots and total number of slots.
--  elfcpp::Swap_unaligned<32, big_endian>::writeval(p, 2);
--  p += sizeof(uint32_t);
-+  if (index_version_ == 2)
-+    {
-+      elfcpp::Swap_unaligned<32, big_endian>::writeval(p, index_version_);
-+      p += sizeof(uint32_t);
-+    }
-+  else
-+    {
-+      assert(index_version_ == 5);
-+      elfcpp::Swap_unaligned<16, big_endian>::writeval(p, index_version_);
-+      p += sizeof(uint16_t);
-+      // zero padding
-+      *p++ = 0;
-+      *p++ = 0;
-+    }
-   elfcpp::Swap_unaligned<32, big_endian>::writeval(p, ncols);
-   p += sizeof(uint32_t);
-   elfcpp::Swap_unaligned<32, big_endian>::writeval(p, nused);
-@@ -2020,7 +2228,8 @@ Dwp_output_file::write_index(const char* sect_name, const Dwp_index& index)
-     {
-       if (column_mask & (1 << c))
- 	{
--	  elfcpp::Swap_unaligned<32, big_endian>::writeval(p, c);
-+	  elfcpp::Swap_unaligned<32, big_endian>::writeval(
-+	    p, get_versioned_column_index(index_version_, c));
- 	  p += sizeof(uint32_t);
- 	}
-     }
-@@ -2208,12 +2417,16 @@ Dwp_output_file::sized_write_shdr(const char* name, unsigned int type,
- // Visit a compilation unit.
- 
- void
--Dwo_name_info_reader::visit_compilation_unit(off_t, off_t, Dwarf_die* die)
-+Dwo_name_info_reader::visit_compilation_unit(off_t, off_t, uint64_t signature,
-+					     Dwarf_die* die)
- {
--  const char* dwo_name = die->string_attribute(elfcpp::DW_AT_GNU_dwo_name);
-+  bool dwarf_5 = cu_version() >= 5;
-+  const char* dwo_name = die->string_attribute(
-+    dwarf_5 ? elfcpp::DW_AT_dwo_name : elfcpp::DW_AT_GNU_dwo_name);
-   if (dwo_name != NULL)
-     {
--      uint64_t dwo_id = die->uint_attribute(elfcpp::DW_AT_GNU_dwo_id);
-+      uint64_t dwo_id
-+	= dwarf_5 ? signature : die->uint_attribute(elfcpp::DW_AT_GNU_dwo_id);
-       this->files_->push_back(Dwo_file_entry(dwo_id, dwo_name));
-     }
- }
-@@ -2236,15 +2449,29 @@ Unit_reader::add_units(Dwp_output_file* output_file,
- // Visit a compilation unit.
- 
- void
--Unit_reader::visit_compilation_unit(off_t, off_t cu_length, Dwarf_die* die)
-+Unit_reader::visit_compilation_unit(off_t, off_t cu_length, uint64_t signature,
-+				    Dwarf_die* die)
- {
-   if (cu_length == 0)
-     return;
- 
-+  this->remap_str_offsets_->run_remap(cu_version(), offset_size());
-+
-+  Unit_set* unit_set
-+    = make_unit(cu_length, cu_version() >= 5
-+			     ? signature
-+			     : die->uint_attribute(elfcpp::DW_AT_GNU_dwo_id));
-+  this->output_file_->add_cu_set(unit_set);
-+}
-+
-+Unit_set*
-+Unit_reader::make_unit(off_t cu_length, uint64_t signature)
-+{
-   Unit_set* unit_set = new Unit_set();
--  unit_set->signature = die->uint_attribute(elfcpp::DW_AT_GNU_dwo_id);
--  for (unsigned int i = elfcpp::DW_SECT_ABBREV; i <= elfcpp::DW_SECT_MAX; ++i)
--    unit_set->sections[i] = this->sections_[i];
-+  unit_set->signature = signature;
-+  for (unsigned int i = 1; i <= elfcpp::DW_SECT_MAX; ++i)
-+    if (i != elfcpp::DW_SECT_INFO)
-+      unit_set->sections[i] = this->sections_[i];
- 
-   // Dwp_output_file::add_contribution writes the .debug_info.dwo section
-   // directly to the output file, so we do not need to duplicate the
-@@ -2255,7 +2482,9 @@ Unit_reader::visit_compilation_unit(off_t, off_t cu_length, Dwarf_die* die)
- 					   cu_length, 1);
-   Section_bounds bounds(off, cu_length);
-   unit_set->sections[elfcpp::DW_SECT_INFO] = bounds;
--  this->output_file_->add_cu_set(unit_set);
-+  if (!this->output_file_->update_index_version(this->cu_version()))
-+    gold_fatal(_("mismatched unit version in compilation unit"));
-+  return unit_set;
- }
- 
- // Visit a type unit.
-@@ -2268,20 +2497,29 @@ Unit_reader::visit_type_unit(off_t, off_t tu_length, off_t,
-     return;
-   if (this->output_file_->lookup_tu(signature))
-     return;
-+  if (this->cu_version() >= 5)
-+    {
-+      Unit_set* unit_set = make_unit(tu_length, signature);
-+      this->output_file_->add_tu_set(unit_set);
-+      return;
-+    }
- 
-   Unit_set* unit_set = new Unit_set();
-   unit_set->signature = signature;
--  for (unsigned int i = elfcpp::DW_SECT_ABBREV; i <= elfcpp::DW_SECT_MAX; ++i)
--    unit_set->sections[i] = this->sections_[i];
-+  for (unsigned int i = 1; i <= elfcpp::DW_SECT_MAX; ++i)
-+    if (i != elfcpp::LEGACY_DW_SECT_TYPES)
-+      unit_set->sections[i] = this->sections_[i];
- 
-   unsigned char* contents = new unsigned char[tu_length];
-   memcpy(contents, this->buffer_at_offset(0), tu_length);
--  section_offset_type off =
--      this->output_file_->add_contribution(elfcpp::DW_SECT_TYPES, contents,
--					   tu_length, 1);
-+  elfcpp::DW_SECT section = elfcpp::LEGACY_DW_SECT_TYPES;
-+  section_offset_type off
-+    = this->output_file_->add_contribution(section, contents, tu_length, 1);
-   Section_bounds bounds(off, tu_length);
--  unit_set->sections[elfcpp::DW_SECT_TYPES] = bounds;
-+  unit_set->sections[section] = bounds;
-   this->output_file_->add_tu_set(unit_set);
-+  if (!this->output_file_->update_index_version(this->cu_version()))
-+    gold_fatal(_("mismatched unit version in type unit")); // FIXME: Untested
- }
- 
- }; // End namespace gold
-diff --git a/binutils/dwarf.c b/binutils/dwarf.c
-index 8307e57e..0bf24e79 100644
---- a/binutils/dwarf.c
-+++ b/binutils/dwarf.c
-@@ -1525,7 +1525,7 @@ find_cu_tu_set_v2 (dwarf_vma cu_offset, int do_types)
-     {
-       p = tu_sets;
-       nsets = tu_count;
--      dw_sect = DW_SECT_TYPES;
-+      dw_sect = LEGACY_DW_SECT_TYPES;
-     }
-   else
-     {
-@@ -1931,7 +1931,7 @@ read_and_display_attr_value (unsigned long attribute,
- 		  debug_info_p->max_loc_offsets = lmax;
- 		}
- 	      if (this_set != NULL)
--		uvalue += this_set->section_offsets [DW_SECT_LOC];
-+		uvalue += this_set->section_offsets [LEGACY_DW_SECT_LOC];
- 	      debug_info_p->loc_offsets [num] = uvalue;
- 	      debug_info_p->have_frame_base [num] = have_frame_base;
- 	      debug_info_p->num_loc_offsets++;
-@@ -2538,8 +2538,8 @@ process_debug_info (struct dwarf_section *section,
- 		      dwarf_vmatoa ("x", offsets [DW_SECT_LINE]),
- 		      dwarf_vmatoa ("x", sizes [DW_SECT_LINE]));
- 	      printf (_("    .debug_loc.dwo:          0x%s  0x%s\n"),
--		      dwarf_vmatoa ("x", offsets [DW_SECT_LOC]),
--		      dwarf_vmatoa ("x", sizes [DW_SECT_LOC]));
-+		      dwarf_vmatoa ("x", offsets [LEGACY_DW_SECT_LOC]),
-+		      dwarf_vmatoa ("x", sizes [LEGACY_DW_SECT_LOC]));
- 	      printf (_("    .debug_str_offsets.dwo:  0x%s  0x%s\n"),
- 		      dwarf_vmatoa ("x", offsets [DW_SECT_STR_OFFSETS]),
- 		      dwarf_vmatoa ("x", sizes [DW_SECT_STR_OFFSETS]));
-@@ -7390,17 +7390,17 @@ get_DW_SECT_short_name (unsigned int dw_sect)
-     {
-       case DW_SECT_INFO:
- 	return "info";
--      case DW_SECT_TYPES:
-+      case LEGACY_DW_SECT_TYPES:
- 	return "types";
-       case DW_SECT_ABBREV:
- 	return "abbrev";
-       case DW_SECT_LINE:
- 	return "line";
--      case DW_SECT_LOC:
-+      case LEGACY_DW_SECT_LOC:
- 	return "loc";
-       case DW_SECT_STR_OFFSETS:
- 	return "str_off";
--      case DW_SECT_MACINFO:
-+      case LEGACY_DW_SECT_MACINFO:
- 	return "macinfo";
-       case DW_SECT_MACRO:
- 	return "macro";
-diff --git a/elfcpp/dwarf.h b/elfcpp/dwarf.h
-index f3873594..13e065e5 100644
---- a/elfcpp/dwarf.h
-+++ b/elfcpp/dwarf.h
-@@ -104,6 +104,19 @@ namespace elfcpp
- #undef DW_CFA
- #undef DW_END_CFA
- 
-+/* Unit types in unit_type unit header field.  */
-+enum dwarf_unit_type
-+  {
-+    DW_UT_compile = 0x01,
-+    DW_UT_type = 0x02,
-+    DW_UT_partial = 0x03,
-+    DW_UT_skeleton = 0x04,
-+    DW_UT_split_compile = 0x05,
-+    DW_UT_split_type = 0x06,
-+    DW_UT_lo_user = 0x80,
-+    DW_UT_hi_user = 0xff
-+  };
-+
- // Frame unwind information.
- 
- enum DW_EH_PE
-@@ -237,15 +250,18 @@ enum DW_LANG
- enum DW_SECT
- {
-   DW_SECT_INFO = 1,
--  DW_SECT_TYPES = 2,
-+  DW_SECT_TYPES = 2, // removed in v5
-   DW_SECT_ABBREV = 3,
-   DW_SECT_LINE = 4,
--  DW_SECT_LOC = 5,
-+  DW_SECT_LOCLISTS = 5, // was LOC pre-v5
-   DW_SECT_STR_OFFSETS = 6,
--  DW_SECT_MACINFO = 7,
--  DW_SECT_MACRO = 8,
--  DW_SECT_MAX = DW_SECT_MACRO,
--};
-+  DW_SECT_MACRO = 7, // was MACINFO pre-v5
-+  DW_SECT_RNGLISTS = 8,  // was MACRO pre-v5
-+  LEGACY_DW_SECT_TYPES = 20,
-+  LEGACY_DW_SECT_LOC = 21,
-+  LEGACY_DW_SECT_MACINFO = 22,
-+  DW_SECT_MAX = LEGACY_DW_SECT_MACINFO
-+};
- 
- enum DW_LNCT
- {
-diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc
-index 6c2b0082..f0f0d913 100644
---- a/gold/dwarf_reader.cc
-+++ b/gold/dwarf_reader.cc
-@@ -1299,6 +1299,21 @@ Dwarf_info_reader::do_parse()
- 	  elfcpp::Swap_unaligned<16, big_endian>::readval(pinfo);
-       pinfo += 2;
- 
-+      unsigned char unit_type;
-+      if (this->cu_version_ >= 5)
-+	{
-+	  // Read unit type (1 byte).
-+	  unit_type = elfcpp::Swap_unaligned<8, big_endian>::readval(pinfo);
-+	  pinfo += 1;
-+
-+	  // unit_type should be either DW_UT_split_compile or DW_UT_split_type
-+	  this->is_type_unit_ = unit_type == elfcpp::DW_UT_split_type;
-+
-+	  // Read address_size (1 byte).
-+	  this->address_size_ = *pinfo++;
-+	}
-+
-+      // For type units, read the two extra fields.
-       // Read debug_abbrev_offset (4 or 8 bytes).
-       if (this->offset_size_ == 4)
- 	abbrev_offset = elfcpp::Swap_unaligned<32, big_endian>::readval(pinfo);
-@@ -1319,29 +1334,37 @@ Dwarf_info_reader::do_parse()
- 	}
-       pinfo += this->offset_size_;
- 
--      // Read address_size (1 byte).
--      this->address_size_ = *pinfo++;
-+      if (this->cu_version_ < 5)
-+	{
-+	  // Read address_size (1 byte).
-+	  this->address_size_ = *pinfo++;
-+	}
- 
-       // For type units, read the two extra fields.
-       uint64_t signature = 0;
-       off_t type_offset = 0;
--      if (this->is_type_unit_)
-+      if (this->is_type_unit_ || this->cu_version_ >= 5)
-         {
--	  if (!this->check_buffer(pinfo + 8 + this->offset_size_))
-+	  if (!this->check_buffer(pinfo + 8))
- 	    break;
- 
- 	  // Read type_signature (8 bytes).
- 	  signature = elfcpp::Swap_unaligned<64, big_endian>::readval(pinfo);
- 	  pinfo += 8;
- 
--	  // Read type_offset (4 or 8 bytes).
--	  if (this->offset_size_ == 4)
--	    type_offset =
--		elfcpp::Swap_unaligned<32, big_endian>::readval(pinfo);
--	  else
--	    type_offset =
--		elfcpp::Swap_unaligned<64, big_endian>::readval(pinfo);
--	  pinfo += this->offset_size_;
-+	  if (this->is_type_unit_)
-+	    {
-+	      if (!this->check_buffer(pinfo + this->offset_size_))
-+		break;
-+	      // Read type_offset (4 or 8 bytes).
-+	      if (this->offset_size_ == 4)
-+		type_offset
-+		  = elfcpp::Swap_unaligned<32, big_endian>::readval(pinfo);
-+	      else
-+		type_offset
-+		  = elfcpp::Swap_unaligned<64, big_endian>::readval(pinfo);
-+	      pinfo += this->offset_size_;
-+	    }
- 	}
- 
-       // Read the .debug_abbrev table.
-@@ -1361,7 +1384,8 @@ Dwarf_info_reader::do_parse()
- 				  &root_die);
- 	  else
- 	    this->visit_compilation_unit(section_offset + this->cu_offset_,
--					 cu_end - cu_start, &root_die);
-+					 cu_end - cu_start, signature,
-+					 &root_die);
- 	}
- 
-       // Advance to the next CU.
-@@ -1494,7 +1518,7 @@ Dwarf_info_reader::get_string(off_t str_off, unsigned int string_shndx)
- // Process a compilation unit and parse its child DIE.
- 
- void
--Dwarf_info_reader::visit_compilation_unit(off_t, off_t, Dwarf_die*)
-+Dwarf_info_reader::visit_compilation_unit(off_t, off_t, uint64_t, Dwarf_die*)
- {
- }
- 
-diff --git a/gold/dwarf_reader.h b/gold/dwarf_reader.h
-index 90a799ed..087b88aa 100644
---- a/gold/dwarf_reader.h
-+++ b/gold/dwarf_reader.h
-@@ -764,7 +764,11 @@ class Dwarf_info_reader
-   address_size() const
-   { return this->address_size_; }
- 
--  // Set the section index of the .debug_abbrev section.
-+  unsigned int
-+  cu_version() const
-+  { return this->cu_version_; }
-+
-+   // Set the section index of the .debug_abbrev section.
-   // We use this if there are no relocations for the .debug_info section.
-   // If not set, the code parse() routine will search for the section by name.
-   void
-@@ -800,7 +804,8 @@ class Dwarf_info_reader
- 
-   // Visit a compilation unit.
-   virtual void
--  visit_compilation_unit(off_t cu_offset, off_t cu_length, Dwarf_die* root_die);
-+  visit_compilation_unit(off_t cu_offset, off_t cu_length, uint64_t signature,
-+			 Dwarf_die* root_die);
- 
-   // Visit a type unit.
-   virtual void
-diff --git a/gold/gdb-index.cc b/gold/gdb-index.cc
-index e1df0698..cdf80d1e 100644
---- a/gold/gdb-index.cc
-+++ b/gold/gdb-index.cc
-@@ -199,7 +199,8 @@ class Gdb_index_info_reader : public Dwarf_info_reader
-  protected:
-   // Visit a compilation unit.
-   virtual void
--  visit_compilation_unit(off_t cu_offset, off_t cu_length, Dwarf_die*);
-+  visit_compilation_unit(off_t cu_offset, off_t cu_length, uint64_t signature,
-+			 Dwarf_die*);
- 
-   // Visit a type unit.
-   virtual void
-@@ -319,6 +320,7 @@ unsigned int Gdb_index_info_reader::dwarf_tu_nopubnames_count = 0;
- 
- void
- Gdb_index_info_reader::visit_compilation_unit(off_t cu_offset, off_t cu_length,
-+					      uint64_t signature,
- 					      Dwarf_die* root_die)
- {
-   ++Gdb_index_info_reader::dwarf_cu_count;
-diff --git a/include/dwarf2.def b/include/dwarf2.def
-index 4d479f6e..69b3ba91 100644
---- a/include/dwarf2.def
-+++ b/include/dwarf2.def
-@@ -311,6 +311,7 @@ DW_AT (DW_AT_const_expr, 0x6c)
- DW_AT (DW_AT_enum_class, 0x6d)
- DW_AT (DW_AT_linkage_name, 0x6e)
- /* DWARF 5.  */
-+DW_AT (DW_AT_dwo_name, 0x76)
- DW_AT (DW_AT_noreturn, 0x87)
- 
- DW_AT_DUP (DW_AT_lo_user, 0x2000) /* Implementation-defined range start.  */
-diff --git a/include/dwarf2.h b/include/dwarf2.h
-index 9e69cd5a..7248db64 100644
---- a/include/dwarf2.h
-+++ b/include/dwarf2.h
-@@ -411,14 +411,17 @@ enum dwarf_macro_record_type
- enum dwarf_sect
-   {
-     DW_SECT_INFO = 1,
--    DW_SECT_TYPES = 2,
-+    DW_SECT_TYPES = 2, // removed in v5
-     DW_SECT_ABBREV = 3,
-     DW_SECT_LINE = 4,
--    DW_SECT_LOC = 5,
-+    DW_SECT_LOCLISTS = 5, // was LOC pre-v5
-     DW_SECT_STR_OFFSETS = 6,
--    DW_SECT_MACINFO = 7,
--    DW_SECT_MACRO = 8,
--    DW_SECT_MAX = 8
-+    DW_SECT_MACRO = 7, // was MACINFO pre-v5
-+    DW_SECT_RNGLISTS = 8, // was MACRO pre-v5
-+    LEGACY_DW_SECT_TYPES = 20,
-+    LEGACY_DW_SECT_LOC = 21,
-+    LEGACY_DW_SECT_MACINFO = 22,
-+    DW_SECT_MAX = LEGACY_DW_SECT_MACINFO
-   };
- 
- #ifdef __cplusplus
diff --git a/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-2.patch b/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-2.patch
deleted file mode 100644
index 7df1488..0000000
--- a/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-2.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-Apply basic patch by David Blaikie to update gold dwp tool to handle
-DWARF v5. This is the second of three patches for DWARF v5.
-
-This has some memory efficiency improvements.
-
-This patch created for Chrome OS by Caroline Tice.
-Date: 20-Nov-2020
-diff --git a/gold/dwp.cc b/gold/dwp.cc
-index 5501985c..60de58bc 100644
---- a/gold/dwp.cc
-+++ b/gold/dwp.cc
-@@ -32,7 +32,7 @@
- 
- #include <vector>
- #include <algorithm>
--#include <functional>
-+#include <memory>
- 
- #include "getopt.h"
- #include "libiberty.h"
-@@ -633,6 +633,11 @@ class Dwp_output_file
-   unsigned int
-   add_output_section(const char* section_name, int align);
- 
-+  // Prepare to write a new section to the output file.
-+  off_t
-+  start_new_section(const char* section_name, section_size_type len,
-+		    int align);
-+
-   // Write a new section to the output file.
-   void
-   write_new_section(const char* section_name, const unsigned char* contents,
-@@ -1565,8 +1570,6 @@ Dwo_file::add_strings(Dwp_output_file* output_file, unsigned int debug_str)
-     }
-   new_offset = 0;
-   this->str_offset_map_.push_back(std::make_pair(i, new_offset));
--  if (is_new)
--    delete[] pdata;
- }
- 
- // Copy a section from the input file to the output file.
-@@ -1781,7 +1784,7 @@ section_offset_type
- Dwp_output_file::add_string(const char* str, size_t len)
- {
-   Stringpool::Key key;
--  this->stringpool_.add_with_length(str, len, true, &key);
-+  this->stringpool_.add_with_length(str, len, false, &key);
-   this->have_strings_ = true;
-   // We aren't supposed to call get_offset() until after
-   // calling set_string_offsets(), but the offsets will
-@@ -2053,10 +2056,10 @@ Dwp_output_file::finalize()
-     {
-       this->stringpool_.set_string_offsets();
-       section_size_type len = this->stringpool_.get_strtab_size();
--      buf = new unsigned char[len];
--      this->stringpool_.write_to_buffer(buf, len);
--      this->write_new_section(".debug_str.dwo", buf, len, 1);
--      delete[] buf;
-+      off_t file_offset = this->start_new_section(".debug_str.dwo", len, 1);
-+      this->stringpool_.write_to_file(this->fd_, file_offset,
-+				      this->name_, ".debug_str.dwo");
-+      this->next_file_offset_ = file_offset + len;
-     }
- 
-   // Write the CU and TU indexes.
-@@ -2138,11 +2141,10 @@ Dwp_output_file::write_contributions(const Section& sect)
-     }
- }
- 
--// Write a new section to the output file.
-+// Prepare to write a new section to the output file.
- 
--void
--Dwp_output_file::write_new_section(const char* section_name,
--				   const unsigned char* contents,
-+off_t
-+Dwp_output_file::start_new_section(const char* section_name,
- 				   section_size_type len, int align)
- {
-   section_name = this->shstrtab_.add_with_length(section_name,
-@@ -2155,7 +2157,18 @@ Dwp_output_file::write_new_section(const char* section_name,
-   section.offset = file_offset;
-   section.size = len;
-   ::fseek(this->fd_, file_offset, SEEK_SET);
--  if (::fwrite(contents, 1, len, this->fd_) < len)
-+  return file_offset;
-+}
-+
-+// Write a new section to the output file.
-+
-+void
-+Dwp_output_file::write_new_section(const char* section_name,
-+				   const unsigned char* contents,
-+				   section_size_type len, int align)
-+{
-+  off_t file_offset = this->start_new_section(section_name, len, align);
-+   if (::fwrite(contents, 1, len, this->fd_) < len)
-     gold_fatal(_("%s: error writing section '%s'"), this->name_, section_name);
-   this->next_file_offset_ = file_offset + len;
- }
-@@ -2680,14 +2693,25 @@ main(int argc, char** argv)
- 
-   // Process each file, adding its contents to the output file.
-   Dwp_output_file output_file(output_filename.c_str());
-+  std::vector<Dwo_file*> dwo_files;
-   for (File_list::const_iterator f = files.begin(); f != files.end(); ++f)
-     {
-       if (verbose)
- 	fprintf(stderr, "%s\n", f->dwo_name.c_str());
--      Dwo_file dwo_file(f->dwo_name.c_str());
--      dwo_file.read(&output_file);
-+      Dwo_file* dwo_file = new Dwo_file(f->dwo_name.c_str());
-+      dwo_file->read(&output_file);
-+      dwo_files.push_back(dwo_file);
-     }
-   output_file.finalize();
- 
-+  // Clean up dwo_files.
-+  for (std::vector<Dwo_file*>::iterator i = dwo_files.begin(),
-+	 e = dwo_files.end();
-+       i != e;
-+       ++i)
-+    {
-+      delete *i;
-+    }
-+
-   return EXIT_SUCCESS;
- }
-diff --git a/gold/stringpool.h b/gold/stringpool.h
-index b7ac54f5..3288772a 100644
---- a/gold/stringpool.h
-+++ b/gold/stringpool.h
-@@ -285,6 +285,12 @@ class Stringpool_template
-   void
-   write_to_buffer(unsigned char* buffer, section_size_type buffer_size);
- 
-+  // Write the string table into the specified file at the specified
-+  // offset.
-+  void
-+  write_to_file(FILE *fd, off_t file_offset, const char *name,
-+		const char *section_name);
-+
-   // Dump statistical information to stderr.
-   void
-   print_stats(const char*) const;
-diff --git a/gold/stringpool.cc b/gold/stringpool.cc
-index 8d438a4e..b8565c0b 100644
---- a/gold/stringpool.cc
-+++ b/gold/stringpool.cc
-@@ -491,6 +491,38 @@ Stringpool_template<Stringpool_char>::write_to_buffer(
-     }
- }
- 
-+// Write the ELF strtab into the file at the specified offset.
-+
-+template<typename Stringpool_char>
-+void
-+Stringpool_template<Stringpool_char>::write_to_file(
-+    FILE* fd, off_t file_offset,
-+    const char* name, const char* section_name)
-+{
-+  gold_assert(fd != NULL);
-+  gold_assert(this->strtab_size_ != 0);
-+  if (this->zero_null_)
-+    {
-+      char buf[] = {'\0'};
-+      ::fseek(fd, file_offset, SEEK_SET);
-+      if (::fwrite(buf, 1, 1, fd) < 1)
-+        gold_fatal(_("%s: error writing section '%s'"), name, section_name);
-+    }
-+
-+  for (typename String_set_type::const_iterator p = this->string_set_.begin();
-+       p != this->string_set_.end();
-+       ++p)
-+    {
-+      const unsigned int len = (p->first.length + 1) * sizeof(Stringpool_char);
-+      const section_offset_type offset = this->key_to_offset_[p->second - 1];
-+      gold_assert(static_cast<section_size_type>(offset) + len
-+		  <= this->strtab_size_);
-+      ::fseek(fd, file_offset + offset, SEEK_SET);
-+      if (::fwrite(p->first.string, 1, len, fd) < len)
-+        gold_fatal(_("%s: error writing section '%s'"), name, section_name);
-+    }
-+}
-+
- // Write the ELF strtab into the output file at the specified offset.
- 
- template<typename Stringpool_char>
diff --git a/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-3.patch b/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-3.patch
deleted file mode 100644
index 64af064..0000000
--- a/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-3.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-Apply basic patch by David Blaikie to update gold dwp tool to handle
-DWARF v5. This is the third of three patches for DWARF v5.
-
-This patch contains a few more efficiency improvements.
-
-This patch created for Chrome OS by Caroline Tice.
-Date: 20-Nov-2020
-diff --git a/gold/dwp.cc b/gold/dwp.cc
-index 60de58bc..4d83948c 100644
---- a/gold/dwp.cc
-+++ b/gold/dwp.cc
-@@ -817,27 +817,15 @@ get_dwarf_section_name(elfcpp::DW_SECT section_id)
-   static const char* dwarf_section_names[] = {
-     NULL,		      // unused
-     ".debug_info.dwo",	      // DW_SECT_INFO = 1
--    NULL,		      // unused
-+    ".debug_types.dwo",	      // LEGACY_DW_SECT_TYPES = 2
-     ".debug_abbrev.dwo",      // DW_SECT_ABBREV = 3
-     ".debug_line.dwo",	      // DW_SECT_LINE = 4
-     ".debug_loclists.dwo",    // DW_SECT_LOCLISTS = 5
-     ".debug_str_offsets.dwo", // DW_SECT_STR_OFFSETS = 6
-     ".debug_macro.dwo",	      // DW_SECT_MACRO = 7
-     ".debug_rnglists.dwo",    // DW_SECT_RNGLISTS = 8
--    NULL,		      // unused
--    NULL,		      // unused
--    NULL,		      // unused
--    NULL,		      // unused
--    NULL,		      // unused
--    NULL,		      // unused
--    NULL,		      // unused
--    NULL,		      // unused
--    NULL,		      // unused
--    NULL,		      // unused
--    NULL,		      // unused
--    ".debug_types.dwo",	      // LEGACY_DW_SECT_TYPES = 20
--    ".debug_loc.dwo",	      // LEGACY_DW_SECT_LOC = 21
--    ".debug_macinfo.dwo",     // LEGACY_DW_SECT_MACINFO = 22
-+    ".debug_loc.dwo",	      // LEGACY_DW_SECT_LOC = 9
-+    ".debug_macinfo.dwo",     // LEGACY_DW_SECT_MACINFO = 10
-   };
- 
-   gold_assert(section_id > 0 && section_id <= elfcpp::DW_SECT_MAX);
-@@ -2183,6 +2171,13 @@ Dwp_output_file::write_index(const char* sect_name, const Dwp_index& index)
-   const unsigned int nused = index.hash_table_used_slots();
-   const unsigned int nrows = index.section_table_rows();
- 
-+  // If there is no contribution, don't create .debug_cu_index or
-+  // .debug_ty_index. We can't assign a meaningful index version.  Assigning an
-+  // arbitrary version is not great because an upper-level dwp may have to deal
-+  // with mixed index versions.
-+  if (nused == 0)
-+    return;
-+
-   int column_mask = index.section_table_cols();
-   unsigned int ncols = 0;
-   for (unsigned int c = 1; c <= elfcpp::DW_SECT_MAX; ++c)
-diff --git a/elfcpp/dwarf.h b/elfcpp/dwarf.h
-index 75769e5b..f23a9bf8 100644
---- a/elfcpp/dwarf.h
-+++ b/elfcpp/dwarf.h
-@@ -250,16 +250,16 @@ enum DW_LANG
- enum DW_SECT
- {
-   DW_SECT_INFO = 1,
--  DW_SECT_TYPES = 2, // removed in v5
-+  // DW_SECT_TYPES = 2, // removed in v5
-   DW_SECT_ABBREV = 3,
-   DW_SECT_LINE = 4,
-   DW_SECT_LOCLISTS = 5, // was LOC pre-v5
-   DW_SECT_STR_OFFSETS = 6,
-   DW_SECT_MACRO = 7, // was MACINFO pre-v5
-   DW_SECT_RNGLISTS = 8,  // was MACRO pre-v5
--  LEGACY_DW_SECT_TYPES = 20,
--  LEGACY_DW_SECT_LOC = 21,
--  LEGACY_DW_SECT_MACINFO = 22,
-+  LEGACY_DW_SECT_TYPES = 2,
-+  LEGACY_DW_SECT_LOC = 9,
-+  LEGACY_DW_SECT_MACINFO = 10,
-   DW_SECT_MAX = LEGACY_DW_SECT_MACINFO
- };
- 
diff --git a/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-4.patch b/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-4.patch
deleted file mode 100644
index 1129168..0000000
--- a/sys-devel/binutils/files/binutils-2.27.0-gold-dwp-dwarfv5-4.patch
+++ /dev/null
@@ -1,475 +0,0 @@
-Apply additional patch by David Blaikie to update the gold dwp tool
-to handle DWARF v5.  This patch teaches dwp to read DW_FORM_strx (and
-its variations), so it can read and use the str_offsets_base value to
-read the .dwo file names out of the compilation unit DIEs.
-
-(see https://critique-ng.corp.google.com/cl/348045503 for original patch)
-(also see https://critique-ng.corp.google.com/cl/350363411)
-
-This patch created for Chrome OS by Caroline Tice.
-Date: 17-Dec-2020
-diff --git a/elfcpp/elfcpp_swap.h b/elfcpp/elfcpp_swap.h
-index 8906029f..898e4852 100644
---- a/elfcpp/elfcpp_swap.h
-+++ b/elfcpp/elfcpp_swap.h
-@@ -125,6 +125,13 @@ struct Valtype_base<16>
-   typedef int16_t Signed_valtype;
- };
- 
-+template<>
-+struct Valtype_base<24>
-+{
-+  typedef uint16_t Valtype;
-+  typedef int16_t Signed_valtype;
-+};
-+
- template<>
- struct Valtype_base<32>
- {
-@@ -324,6 +331,46 @@ struct Swap_unaligned<16, true>
-   }
- };
- 
-+template<>
-+struct Swap_unaligned<24, false>
-+{
-+  typedef Valtype_base<24>::Valtype Valtype;
-+
-+  static inline Valtype
-+  readval(const unsigned char* wv)
-+  {
-+    return (wv[2] << 16) | (wv[1] << 8) | wv[0];
-+  }
-+
-+  static inline void
-+  writeval(unsigned char* wv, Valtype v)
-+  {
-+    wv[0] = v >> 16;
-+    wv[1] = v >> 8;
-+    wv[2] = v;
-+  }
-+};
-+
-+template<>
-+struct Swap_unaligned<24, true>
-+{
-+  typedef Valtype_base<24>::Valtype Valtype;
-+
-+  static inline Valtype
-+  readval(const unsigned char* wv)
-+  {
-+    return (wv[0] << 16) | (wv[1] << 8) | wv[2];
-+  }
-+
-+  static inline void
-+  writeval(unsigned char* wv, Valtype v)
-+  {
-+    wv[0] = v >> 16;
-+    wv[1] = v >> 8;
-+    wv[2] = v;
-+  }
-+};
-+
- template<>
- struct Swap_unaligned<32, false>
- {
-diff --git a/gold/dwarf_reader.h b/gold/dwarf_reader.h
-index 087b88aa..21c4a1dc 100644
---- a/gold/dwarf_reader.h
-+++ b/gold/dwarf_reader.h
-@@ -568,6 +568,15 @@ class Dwarf_die
-     return this->abstract_origin_;
-   }
- 
-+  // Return the value of the DW_AT_str_offsets_base attribute.
-+  off_t
-+  string_offsets_base()
-+  {
-+    if (!this->string_offsets_base_)
-+      this->read_attributes();
-+    return this->string_offsets_base_;
-+  }
-+
-   // Return the value of attribute ATTR as a string.
-   const char*
-   string_attribute(unsigned int attr);
-@@ -675,6 +684,8 @@ class Dwarf_die
-   off_t specification_;
-   // The value of a DW_AT_abstract_origin attribute.
-   off_t abstract_origin_;
-+  // The value of DW_AT_str_offsets_base attribute.
-+  off_t string_offsets_base_;
- };
- 
- // This class is used to read the debug info from the .debug_info
-@@ -698,11 +709,13 @@ class Dwarf_info_reader
-     : is_type_unit_(is_type_unit), object_(object), symtab_(symtab),
-       symtab_size_(symtab_size), shndx_(shndx), reloc_shndx_(reloc_shndx),
-       reloc_type_(reloc_type), abbrev_shndx_(0), string_shndx_(0),
--      buffer_(NULL), buffer_end_(NULL), cu_offset_(0), cu_length_(0),
--      offset_size_(0), address_size_(0), cu_version_(0),
-+      string_offsets_shndx_(0), buffer_(NULL), buffer_end_(NULL), cu_offset_(0),
-+      cu_length_(0), offset_size_(0), address_size_(0), cu_version_(0),
-       abbrev_table_(), ranges_table_(this),
-       reloc_mapper_(NULL), string_buffer_(NULL), string_buffer_end_(NULL),
--      owns_string_buffer_(false), string_output_section_offset_(0)
-+      owns_string_buffer_(false), string_output_section_offset_(0),
-+      string_offsets_buffer_(NULL), string_offsets_buffer_end_(NULL),
-+      owns_string_offsets_buffer_(false), string_offsets_output_section_offset_(0)
-   { }
- 
-   virtual
-@@ -712,6 +725,8 @@ class Dwarf_info_reader
-       delete this->reloc_mapper_;
-     if (this->owns_string_buffer_ && this->string_buffer_ != NULL)
-       delete[] this->string_buffer_;
-+    if (this->owns_string_offsets_buffer_ && this->string_offsets_buffer_ != NULL)
-+      delete[] this->string_offsets_buffer_;
-   }
- 
-   // Begin parsing the debug info.  This calls visit_compilation_unit()
-@@ -754,6 +769,10 @@ class Dwarf_info_reader
-   const char*
-   get_string(off_t str_off, unsigned int string_shndx);
- 
-+  // Return a string index from the DWARF string offsets table..
-+  off_t
-+  get_string_offset(unsigned int index, unsigned int string_offsets_shndx);
-+
-   // Return the size of a DWARF offset.
-   unsigned int
-   offset_size() const
-@@ -871,6 +890,22 @@ class Dwarf_info_reader
-   bool
-   do_read_string_table(unsigned int string_shndx);
- 
-+  // Read the DWARF string table.
-+  bool
-+  read_string_offsets_table(unsigned int string_offsets_shndx)
-+  {
-+    // If we've already read this string table, return immediately.
-+    if (this->string_offsets_shndx_ > 0 &&
-+	this->string_offsets_shndx_ == string_offsets_shndx)
-+      return true;
-+    if (string_offsets_shndx == 0 && this->string_offsets_shndx_ > 0)
-+      return true;
-+    return this->do_read_string_offsets_table(string_offsets_shndx);
-+  }
-+
-+  bool
-+  do_read_string_offsets_table(unsigned int string_shndx);
-+  
-   // True if this is a type unit; false for a compilation unit.
-   bool is_type_unit_;
-   // The object containing the .debug_info or .debug_types input section.
-@@ -889,6 +924,8 @@ class Dwarf_info_reader
-   unsigned int abbrev_shndx_;
-   // Index of the .debug_str section.
-   unsigned int string_shndx_;
-+ // Index of the .debug_str_offsets section.
-+  unsigned int string_offsets_shndx_;
-   // The buffer for the debug info.
-   const unsigned char* buffer_;
-   const unsigned char* buffer_end_;
-@@ -918,6 +955,16 @@ class Dwarf_info_reader
-   // from relocated data will be relative to the output section, and need
-   // to be corrected before reading data from the input section.
-   uint64_t string_output_section_offset_;
-+  const unsigned char* string_offsets_buffer_;
-+  const unsigned char* string_offsets_buffer_end_;
-+  unsigned int string_offsets_base_;
-+  // True if this object owns the buffer and needs to delete it.
-+  bool owns_string_offsets_buffer_;
-+  // For incremental update links, this will hold the offset of the
-+  // input .debug_str section within the output section.  Offsets read
-+  // from relocated data will be relative to the output section, and need
-+  // to be corrected before reading data from the input section.
-+  uint64_t string_offsets_output_section_offset_;
- };
- 
- // We can't do better than to keep the offsets in a sorted vector.
-diff --git a/gold/dwarf_reader.cc b/gold/dwarf_reader.cc
-index 74b886d0..c698e652 100644
---- a/gold/dwarf_reader.cc
-+++ b/gold/dwarf_reader.cc
-@@ -34,6 +34,7 @@
- #include "dwarf_reader.h"
- #include "int_encoding.h"
- #include "compressed_output.h"
-+#include "../elfcpp/dwarf.h"
- 
- namespace gold {
- 
-@@ -652,7 +653,7 @@ Dwarf_die::Dwarf_die(
-     child_offset_(0), sibling_offset_(0), abbrev_code_(NULL), attributes_(),
-     attributes_read_(false), name_(NULL), name_off_(-1), linkage_name_(NULL),
-     linkage_name_off_(-1), string_shndx_(0), specification_(0),
--    abstract_origin_(0)
-+    abstract_origin_(0), string_offsets_base_(0)
- {
-   size_t len;
-   const unsigned char* pdie = dwinfo->buffer_at_offset(die_offset);
-@@ -777,6 +778,8 @@ Dwarf_die::read_attributes()
- 	    break;
- 	  case elfcpp::DW_FORM_data1:
- 	  case elfcpp::DW_FORM_flag:
-+	  case elfcpp::DW_FORM_strx1:
-+	  case elfcpp::DW_FORM_addrx1:
- 	    attr_value.val.intval = *pattr++;
- 	    break;
- 	  case elfcpp::DW_FORM_ref1:
-@@ -784,6 +787,8 @@ Dwarf_die::read_attributes()
- 	    ref_form = true;
- 	    break;
- 	  case elfcpp::DW_FORM_data2:
-+	  case elfcpp::DW_FORM_strx2:
-+	  case elfcpp::DW_FORM_addrx2:
- 	    attr_value.val.intval =
- 		this->dwinfo_->read_from_pointer<16>(&pattr);
- 	    break;
-@@ -792,7 +797,22 @@ Dwarf_die::read_attributes()
- 		this->dwinfo_->read_from_pointer<16>(&pattr);
- 	    ref_form = true;
- 	    break;
-+	  case elfcpp::DW_FORM_strx3:
-+	  case elfcpp::DW_FORM_addrx3:
-+            {
-+              //FIXME: Deal with endianness here - probably have to add
-+              //functionality to Dwarf_info_reader to expose non-power-of-2
-+              //endian-adjusting reading
-+              //const unsigned char a = *pattr++, b = *pattr++, c = *pattr++;
-+              // attr_value.val.intval = ...;
-+              gold_assert(false);
-+              attr_value.val.intval =
-+                  this->dwinfo_->read_from_pointer<24>(&pattr);
-+              break;
-+            }
- 	  case elfcpp::DW_FORM_data4:
-+	  case elfcpp::DW_FORM_strx4:
-+	  case elfcpp::DW_FORM_addrx4:
- 	    {
- 	      off_t sec_off;
- 	      sec_off = this->dwinfo_->read_from_pointer<32>(&pattr);
-@@ -846,6 +866,9 @@ Dwarf_die::read_attributes()
- 	  case elfcpp::DW_FORM_udata:
- 	  case elfcpp::DW_FORM_GNU_addr_index:
- 	  case elfcpp::DW_FORM_GNU_str_index:
-+	  case elfcpp::DW_FORM_strx:
-+	  case elfcpp::DW_FORM_addrx:
-+	  case elfcpp::DW_FORM_rnglistx:
- 	    attr_value.val.uintval = read_unsigned_LEB_128(pattr, &len);
- 	    pattr += len;
- 	    break;
-@@ -903,6 +925,10 @@ Dwarf_die::read_attributes()
- 	    if (ref_form)
- 	      this->abstract_origin_ = attr_value.val.refval;
- 	    break;
-+	  case elfcpp::DW_AT_str_offsets_base:
-+	    if (ref_form)
-+	      this->string_offsets_base_ = attr_value.val.refval;
-+	    break;
- 	  case elfcpp::DW_AT_sibling:
- 	    if (ref_form && attr_value.aux.shndx == 0)
- 	      this->sibling_offset_ = attr_value.val.refval;
-@@ -985,15 +1011,25 @@ Dwarf_die::skip_attributes()
- 	    }
- 	  case elfcpp::DW_FORM_data1:
- 	  case elfcpp::DW_FORM_ref1:
-+	  case elfcpp::DW_FORM_strx1:
-+	  case elfcpp::DW_FORM_addrx1:
- 	  case elfcpp::DW_FORM_flag:
- 	    pattr += 1;
- 	    break;
- 	  case elfcpp::DW_FORM_data2:
- 	  case elfcpp::DW_FORM_ref2:
-+	  case elfcpp::DW_FORM_strx2:
-+	  case elfcpp::DW_FORM_addrx2:
- 	    pattr += 2;
- 	    break;
-+	  case elfcpp::DW_FORM_strx3:
-+	  case elfcpp::DW_FORM_addrx3:
-+            pattr += 3;
-+            break;
- 	  case elfcpp::DW_FORM_data4:
- 	  case elfcpp::DW_FORM_ref4:
-+	  case elfcpp::DW_FORM_strx4:
-+	  case elfcpp::DW_FORM_addrx4:
- 	    pattr += 4;
- 	    break;
- 	  case elfcpp::DW_FORM_data8:
-@@ -1005,6 +1041,8 @@ Dwarf_die::skip_attributes()
- 	  case elfcpp::DW_FORM_udata:
- 	  case elfcpp::DW_FORM_GNU_addr_index:
- 	  case elfcpp::DW_FORM_GNU_str_index:
-+	  case elfcpp::DW_FORM_strx:
-+	  case elfcpp::DW_FORM_addrx:
- 	    read_unsigned_LEB_128(pattr, &len);
- 	    pattr += len;
- 	    break;
-@@ -1071,6 +1109,16 @@ Dwarf_die::string_attribute(unsigned int attr)
-     return NULL;
-   switch (attr_val->form)
-     {
-+      case elfcpp::DW_FORM_strx:
-+      case elfcpp::DW_FORM_strx1:
-+      case elfcpp::DW_FORM_strx2:
-+      case elfcpp::DW_FORM_strx3:
-+      case elfcpp::DW_FORM_strx4:
-+        {
-+          unsigned int index = attr_val->val.uintval;
-+          off_t offset = this->dwinfo_->get_string_offset(index, 0);
-+          return this->dwinfo_->get_string(offset, 0);
-+        }
-       case elfcpp::DW_FORM_string:
-         return attr_val->val.stringval;
-       case elfcpp::DW_FORM_strp:
-@@ -1384,6 +1432,7 @@ Dwarf_info_reader::do_parse()
- 			 NULL);
-       if (root_die.tag() != 0)
- 	{
-+          this->string_offsets_base_ = root_die.string_offsets_base();
- 	  // Visit the CU or TU.
- 	  if (this->is_type_unit_)
- 	    this->visit_type_unit(section_offset + this->cu_offset_,
-@@ -1450,6 +1499,48 @@ Dwarf_info_reader::do_read_string_table(unsigned int string_shndx)
-   return true;
- }
- 
-+
-+// Read the string offsets table
-+bool
-+Dwarf_info_reader::do_read_string_offsets_table(unsigned int string_offsets_shndx)
-+{
-+  Relobj* object = this->object_;
-+
-+  if (string_offsets_shndx == 0)
-+    {
-+      for (unsigned int i = 1; i < this->object_->shnum(); ++i)
-+	{
-+	  std::string name = object->section_name(i);
-+	  if (name == ".debug_str_offsets" || name == ".zdebug_str_offsets")
-+	    {
-+	      string_offsets_shndx = i;
-+	      this->string_offsets_output_section_offset_ =
-+		  object->output_section_offset(i);
-+	      break;
-+	    }
-+	}
-+      if (string_offsets_shndx == 0)
-+	return false;
-+    }
-+
-+  if (this->owns_string_offsets_buffer_ && this->string_offsets_buffer_ != NULL)
-+    {
-+      delete[] this->string_offsets_buffer_;
-+      this->owns_string_offsets_buffer_ = false;
-+    }
-+
-+  // Get the secton contents and decompress if necessary.
-+  section_size_type buffer_size;
-+  const unsigned char* buffer =
-+      object->decompressed_section_contents(string_offsets_shndx,
-+					    &buffer_size,
-+					    &this->owns_string_offsets_buffer_);
-+  this->string_offsets_buffer_ = buffer;
-+  this->string_offsets_buffer_end_ = this->string_offsets_buffer_ + buffer_size;
-+  this->string_offsets_shndx_ = string_offsets_shndx;
-+  return true;
-+}
-+
- // Read a possibly unaligned integer of SIZE.
- template <int valsize>
- inline typename elfcpp::Valtype_base<valsize>::Valtype
-@@ -1516,6 +1607,27 @@ Dwarf_info_reader::get_string(off_t str_off, unsigned int string_shndx)
-   return p;
- }
- 
-+
-+off_t //
-+Dwarf_info_reader::get_string_offset(unsigned int index,
-+    unsigned int string_offsets_shndx)
-+{
-+  if (!this->read_string_offsets_table(string_offsets_shndx))
-+    return -1;
-+
-+  unsigned int offset_size = this->offset_size();
-+
-+  const unsigned char* offsets_start = this->string_offsets_buffer_ + this->string_offsets_base_;
-+
-+  if ((index + 1) * offset_size > (string_offsets_buffer_end_ - offsets_start))
-+    return -1;
-+
-+  const unsigned char* offset = offsets_start + index * offset_size;
-+
-+  return offset_size == 4 ? this->read_from_pointer<32>(offset)
-+                          : this->read_from_pointer<64>(offset);
-+}
-+
- // The following are default, do-nothing, implementations of the
- // hook methods normally provided by a derived class.  We provide
- // default implementations rather than no implementation so that
-diff --git a/include/dwarf2.def b/include/dwarf2.def
-index 69b3ba91..1e97e5b8 100644
---- a/include/dwarf2.def
-+++ b/include/dwarf2.def
-@@ -203,7 +203,24 @@ DW_FORM (DW_FORM_exprloc, 0x18)
- DW_FORM (DW_FORM_flag_present, 0x19)
- DW_FORM (DW_FORM_ref_sig8, 0x20)
- /* DWARF 5.  */
-+DW_FORM (DW_FORM_strx, 0x1a)
-+DW_FORM (DW_FORM_addrx, 0x1b)
-+DW_FORM (DW_FORM_ref_sup4, 0x1c)
-+DW_FORM (DW_FORM_strp_sup, 0x1d)
-+DW_FORM (DW_FORM_data16, 0x1e)
- DW_FORM (DW_FORM_line_strp, 0x1f)
-+DW_FORM (DW_FORM_implicit_const, 0x21)
-+DW_FORM (DW_FORM_loclistx, 0x22)
-+DW_FORM (DW_FORM_rnglistx, 0x23)
-+DW_FORM (DW_FORM_ref_sup8, 0x24)
-+DW_FORM (DW_FORM_strx1, 0x25)
-+DW_FORM (DW_FORM_strx2, 0x26)
-+DW_FORM (DW_FORM_strx3, 0x27)
-+DW_FORM (DW_FORM_strx4, 0x28)
-+DW_FORM (DW_FORM_addrx1, 0x29)
-+DW_FORM (DW_FORM_addrx2, 0x2a)
-+DW_FORM (DW_FORM_addrx3, 0x2b)
-+DW_FORM (DW_FORM_addrx4, 0x2c)
- /* Extensions for Fission.  See http://gcc.gnu.org/wiki/DebugFission.  */
- DW_FORM (DW_FORM_GNU_addr_index, 0x1f01)
- DW_FORM (DW_FORM_GNU_str_index, 0x1f02)
-@@ -311,8 +328,35 @@ DW_AT (DW_AT_const_expr, 0x6c)
- DW_AT (DW_AT_enum_class, 0x6d)
- DW_AT (DW_AT_linkage_name, 0x6e)
- /* DWARF 5.  */
-+DW_AT (DW_AT_string_length_bit_size, 0x6f)
-+DW_AT (DW_AT_string_length_byte_size, 0x70)
-+DW_AT (DW_AT_rank, 0x71)
-+DW_AT (DW_AT_str_offsets_base, 0x72)
-+DW_AT (DW_AT_addr_base, 0x73)
-+DW_AT (DW_AT_rnglists_base, 0x74)
- DW_AT (DW_AT_dwo_name, 0x76)
-+DW_AT (DW_AT_reference, 0x77)
-+DW_AT (DW_AT_rvalue_reference, 0x78)
-+DW_AT (DW_AT_macros, 0x79)
-+DW_AT (DW_AT_call_all_calls, 0x7a)
-+DW_AT (DW_AT_call_all_source_calls, 0x7b)
-+DW_AT (DW_AT_call_all_tail_calls, 0x7c)
-+DW_AT (DW_AT_call_return_pc, 0x7d)
-+DW_AT (DW_AT_call_value, 0x7e)
-+DW_AT (DW_AT_call_origin, 0x7f)
-+DW_AT (DW_AT_call_parameter, 0x80)
-+DW_AT (DW_AT_call_pc, 0x81)
-+DW_AT (DW_AT_call_tail_call, 0x82)
-+DW_AT (DW_AT_call_target, 0x83)
-+DW_AT (DW_AT_call_target_clobbered, 0x84)
-+DW_AT (DW_AT_call_data_location, 0x85)
-+DW_AT (DW_AT_call_data_value, 0x86)
- DW_AT (DW_AT_noreturn, 0x87)
-+DW_AT (DW_AT_alignment, 0x88)
-+DW_AT (DW_AT_export_symbols, 0x89)
-+DW_AT (DW_AT_deleted, 0x8a)
-+DW_AT (DW_AT_defaulted, 0x8b)
-+DW_AT (DW_AT_loclists_base, 0x8c)
- 
- DW_AT_DUP (DW_AT_lo_user, 0x2000) /* Implementation-defined range start.  */
- DW_AT_DUP (DW_AT_hi_user, 0x3fff) /* Implementation-defined range end.  */
diff --git a/sys-devel/binutils/files/binutils-2.27.0-sht_relr.patch b/sys-devel/binutils/files/binutils-2.27.0-sht_relr.patch
deleted file mode 100644
index 677d516..0000000
--- a/sys-devel/binutils/files/binutils-2.27.0-sht_relr.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-Proposal for adding SHT_RELR sections in generic-abi is at
-https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
-
-Experimental support for SHT_RELR sections is available in the aosp
-binutils repository, with the section type and dynamic array tags
-defined in the OS specific range.
-
-This patch moves those definitions to the generic range so we can load
-binaries containing SHT_RELR sections using the experimental support in
-sys-libs/glibc.
-
-SHT_RELR sections are supported for arm, aarch64, and x86_64 targets.
-To enable them, pass '--experimental-use-relr' flag to gold.
-
-Definitions for the new ELF section type and dynamic array tags, as well
-as the encoding used in the new section are all under discussion and are
-subject to change. We plan to send the patch upstream after the gABI has
-been updated to include the new definitions.
-
---- binutils-2.27/elfcpp/elfcpp.h
-+++ binutils-2.27/elfcpp/elfcpp.h
-@@ -357,6 +357,7 @@ enum SHT
-   SHT_PREINIT_ARRAY = 16,
-   SHT_GROUP = 17,
-   SHT_SYMTAB_SHNDX = 18,
-+  SHT_RELR = 19,
-   SHT_LOOS = 0x60000000,
-   SHT_HIOS = 0x6fffffff,
-   SHT_LOPROC = 0x70000000,
-@@ -385,10 +386,6 @@ enum SHT
-   SHT_SUNW_versym = 0x6fffffff,
-   SHT_GNU_versym = 0x6fffffff,
- 
--  // Experimental support for SHT_RELR sections. For details, see proposal
--  // at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
--  SHT_RELR = 0x6fffff00,
--
-   SHT_SPARC_GOTDATA = 0x70000000,
- 
-   // ARM-specific section types.
-@@ -722,6 +719,11 @@ enum DT
- 
-   DT_PREINIT_ARRAY = 32,
-   DT_PREINIT_ARRAYSZ = 33,
-+  DT_SYMTAB_SHNDX = 34,
-+  DT_RELRSZ = 35,
-+  DT_RELR = 36,
-+  DT_RELRENT = 37,
-+
-   DT_LOOS = 0x6000000d,
-   DT_HIOS = 0x6ffff000,
-   DT_LOPROC = 0x70000000,
-@@ -756,6 +758,7 @@ enum DT
-   DT_SYMINFO = 0x6ffffeff,
-   DT_ADDRRNGHI = 0x6ffffeff,
- 
-+  DT_RELRCOUNT = 0x6ffffff8,
-   DT_RELACOUNT = 0x6ffffff9,
-   DT_RELCOUNT = 0x6ffffffa,
-   DT_FLAGS_1 = 0x6ffffffb,
-@@ -766,13 +769,6 @@ enum DT
- 
-   DT_VERSYM = 0x6ffffff0,
- 
--  // Experimental support for SHT_RELR sections. For details, see proposal
--  // at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
--  DT_RELR = 0x6fffe000,
--  DT_RELRSZ = 0x6fffe001,
--  DT_RELRENT = 0x6fffe003,
--  DT_RELRCOUNT = 0x6fffe005,
--
-   // Specify the value of _GLOBAL_OFFSET_TABLE_.
-   DT_PPC_GOT = 0x70000000,
- 
---- binutils-2.27/include/elf/common.h
-+++ binutils-2.27/include/elf/common.h
-@@ -470,6 +470,7 @@
- #define SHT_PREINIT_ARRAY 16		/* Array of ptrs to pre-init funcs */
- #define SHT_GROUP	  17		/* Section contains a section group */
- #define SHT_SYMTAB_SHNDX  18		/* Indicies for SHN_XINDEX entries */
-+#define SHT_RELR	  19		/* Relative relocations, only offsets */
- 
- #define SHT_LOOS	0x60000000	/* First of OS specific semantics */
- #define SHT_HIOS	0x6fffffff	/* Last of OS specific semantics */
-@@ -490,10 +491,6 @@
- #define SHT_GNU_verneed	SHT_SUNW_verneed
- #define SHT_GNU_versym	SHT_SUNW_versym
- 
--/* Experimental support for SHT_RELR sections. For details, see proposal
--   at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg */
--#define SHT_RELR	0x6fffff00	/* Relative relocations, only offsets */
--
- #define SHT_LOPROC	0x70000000	/* Processor-specific semantics, lo */
- #define SHT_HIPROC	0x7FFFFFFF	/* Processor-specific semantics, hi */
- #define SHT_LOUSER	0x80000000	/* Application-specific semantics */
-@@ -778,6 +775,11 @@
- #define DT_ENCODING	32
- #define DT_PREINIT_ARRAY   32
- #define DT_PREINIT_ARRAYSZ 33
-+#define DT_SYMTAB_SHNDX    34
-+#define DT_RELRSZ          35
-+#define DT_RELR            36
-+#define DT_RELRENT         37
-+
- 
- /* Note, the Oct 4, 1999 draft of the ELF ABI changed the values
-    for DT_LOOS and DT_HIOS.  Some implementations however, use
-@@ -824,6 +826,7 @@
- #define DT_SYMINFO	0x6ffffeff
- #define DT_ADDRRNGHI	0x6ffffeff
- 
-+#define DT_RELRCOUNT	0x6ffffff8
- #define DT_RELACOUNT	0x6ffffff9
- #define DT_RELCOUNT	0x6ffffffa
- #define DT_FLAGS_1	0x6ffffffb
-@@ -835,13 +838,6 @@
- /* This tag is a GNU extension to the Solaris version scheme.  */
- #define DT_VERSYM	0x6ffffff0
- 
--/* Experimental support for SHT_RELR sections. For details, see proposal
--   at https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg */
--#define DT_RELR		0x6fffe000
--#define DT_RELRSZ	0x6fffe001
--#define DT_RELRENT	0x6fffe003
--#define DT_RELRCOUNT	0x6fffe005
--
- #define DT_LOPROC	0x70000000
- #define DT_HIPROC	0x7fffffff
- 
diff --git a/sys-devel/binutils/files/binutils-2.27.0-smallpie.patch b/sys-devel/binutils/files/binutils-2.27.0-smallpie.patch
deleted file mode 100644
index 6bb938a..0000000
--- a/sys-devel/binutils/files/binutils-2.27.0-smallpie.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-gold: turn on --experimental-use-relr by default.
-
---- binutils-2.27/gold/options.h
-+++ binutils-2.27/gold/options.h
-@@ -770,7 +770,7 @@ class General_options
- 		 N_("Exclude libraries from automatic export"),
- 		 N_(("lib,lib ...")));
- 
--  DEFINE_bool(experimental_use_relr, options::TWO_DASHES, '\0', false,
-+  DEFINE_bool(experimental_use_relr, options::TWO_DASHES, '\0', true,
- 	      N_("Generate RELR dynamic relocations"),
- 	      N_("Do not generate RELR dynamic relocations"));
- 
diff --git a/sys-devel/binutils/files/binutils-2.35.1-cet.patch b/sys-devel/binutils/files/binutils-2.35.1-cet.patch
new file mode 100644
index 0000000..7477ff9
--- /dev/null
+++ b/sys-devel/binutils/files/binutils-2.35.1-cet.patch
@@ -0,0 +1,103 @@
+https://bugs.gentoo.org/771765
+https://sourceware.org/PR27397
+
+On i586-like CPUs endbr32 added by -Wl,-z,ibt,-z,shstk
+generates crashing binaries and causes ./configure failure.
+
+From 847e4b3207f97762dc641db8d3b188081c3370c3 Mon Sep 17 00:00:00 2001
+From: "H.J. Lu" <hjl.tools@gmail.com>
+Date: Fri, 12 Feb 2021 16:30:23 -0800
+Subject: [PATCH] GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs
+
+---
+ config/cet.m4       | 19 ++++++++++++++++---
+ libiberty/configure | 29 +++++++++++++++++++++++++++++
+ 2 files changed, 45 insertions(+), 3 deletions(-)
+
+diff --git a/config/cet.m4 b/config/cet.m4
+index c67fb4f35b6..7718be1afe8 100644
+--- a/config/cet.m4
++++ b/config/cet.m4
+@@ -130,6 +130,18 @@ fi
+ if test x$may_have_cet = xyes; then
+   if test x$cross_compiling = xno; then
+     AC_TRY_RUN([
++int
++main ()
++{
++  asm ("endbr32");
++  return 0;
++}
++    ],
++    [have_multi_byte_nop=yes],
++    [have_multi_byte_nop=no])
++    have_cet=no
++    if test x$have_multi_byte_nop = xyes; then
++      AC_TRY_RUN([
+ static void
+ foo (void)
+ {
+@@ -155,9 +167,10 @@ main ()
+   bar ();
+   return 0;
+ }
+-    ],
+-    [have_cet=no],
+-    [have_cet=yes])
++      ],
++      [have_cet=no],
++      [have_cet=yes])
++    fi
+     if test x$enable_cet = xno -a x$have_cet = xyes; then
+       AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host])
+     fi
+diff --git a/libiberty/configure b/libiberty/configure
+index 160b8c9e8b1..29a690d44fc 100755
+--- a/libiberty/configure
++++ b/libiberty/configure
+@@ -5539,6 +5539,34 @@ else
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ 
++int
++main ()
++{
++  asm ("endbr32");
++  return 0;
++}
++
++_ACEOF
++if ac_fn_c_try_run "$LINENO"; then :
++  have_multi_byte_nop=yes
++else
++  have_multi_byte_nop=no
++fi
++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
++  conftest.$ac_objext conftest.beam conftest.$ac_ext
++fi
++
++    have_cet=no
++    if test x$have_multi_byte_nop = xyes; then
++      if test "$cross_compiling" = yes; then :
++  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
++as_fn_error $? "cannot run test program while cross compiling
++See \`config.log' for more details" "$LINENO" 5; }
++else
++  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
++/* end confdefs.h.  */
++
+ static void
+ foo (void)
+ {
+@@ -5575,6 +5603,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+   conftest.$ac_objext conftest.beam conftest.$ac_ext
+ fi
+ 
++    fi
+     if test x$enable_cet = xno -a x$have_cet = xyes; then
+       as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5
+     fi
+-- 
+2.29.2
+
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/README b/sys-devel/gcc-bin/files/compiler_wrapper/README
new file mode 100644
index 0000000..4ae15fd
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/README
@@ -0,0 +1,18 @@
+Copyright 2019 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.
+
+Toolchain utils compiler wrapper sources.
+
+Build the wrapper:
+./build --config=<config name> --use_ccache=<bool> \
+  --use_llvm_next=<bool> --output_file=<file>
+
+ATTENTION:
+The files in this folder are generated. Do not modify manually!
+
+To update:
+- modify third_party/toolchain_utils/compiler_wrapper
+- run third_party/toolchain_utils/compiler_wrapper/bundle.py --output_dir=...
+
+Source: https://chromium-review.googlesource.com/q/If9b6fdc523f60719608739da0eefa94c82164ae7
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/VERSION b/sys-devel/gcc-bin/files/compiler_wrapper/VERSION
new file mode 100644
index 0000000..7bdda2c
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/VERSION
@@ -0,0 +1 @@
+If9b6fdc523f60719608739da0eefa94c82164ae7
\ No newline at end of file
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/bisect_flag.go b/sys-devel/gcc-bin/files/compiler_wrapper/bisect_flag.go
new file mode 100644
index 0000000..adfa8b0
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/bisect_flag.go
@@ -0,0 +1,77 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"errors"
+	"os"
+	"os/exec"
+	"path/filepath"
+)
+
+// Note: We keep this code in python as golang has no builtin
+// shlex function.
+const bisectPythonCommand = `
+import bisect_driver
+import shlex
+import sys
+
+def ExpandArgs(args, target):
+	for arg in args:
+		if arg[0] == '@':
+			with open(arg[1:], 'r', encoding='utf-8') as f:
+				ExpandArgs(shlex.split(f.read()), target)
+		else:
+			target.append(arg)
+	return target
+
+stage = sys.argv[1]
+dir = sys.argv[2]
+execargs = ExpandArgs(sys.argv[3:], [])
+
+sys.exit(bisect_driver.bisect_driver(stage, dir, execargs))
+`
+
+func getBisectStage(env env) string {
+	value, _ := env.getenv("BISECT_STAGE")
+	return value
+}
+
+func calcBisectCommand(env env, cfg *config, bisectStage string, compilerCmd *command) (*command, error) {
+	bisectDir, _ := env.getenv("BISECT_DIR")
+	if bisectDir == "" {
+		if cfg.isAndroidWrapper {
+			homeDir, ok := env.getenv("HOME")
+			if !ok {
+				return nil, errors.New("$HOME is not set")
+			}
+			bisectDir = filepath.Join(homeDir, "ANDROID_BISECT")
+		} else {
+			bisectDir = "/tmp/sysroot_bisect"
+		}
+	}
+	absCompilerPath := getAbsCmdPath(env, compilerCmd)
+	pythonPath, err := exec.LookPath(os.Args[0])
+	if err != nil {
+		return nil, err
+	}
+	pythonPath, err = filepath.EvalSymlinks(pythonPath)
+	if err != nil {
+		return nil, err
+	}
+	pythonPath = filepath.Dir(pythonPath)
+	return &command{
+		Path: "/usr/bin/env",
+		Args: append([]string{
+			"python3",
+			"-c",
+			bisectPythonCommand,
+			bisectStage,
+			bisectDir,
+			absCompilerPath,
+		}, compilerCmd.Args...),
+		EnvUpdates: append(compilerCmd.EnvUpdates, "PYTHONPATH="+pythonPath),
+	}, nil
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/build.py b/sys-devel/gcc-bin/files/compiler_wrapper/build.py
new file mode 100755
index 0000000..f98b254
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/build.py
@@ -0,0 +1,102 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+# Copyright 2019 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.
+
+"""Build script that builds a binary from a bundle."""
+
+from __future__ import print_function
+
+import argparse
+import os.path
+import re
+import subprocess
+import sys
+
+
+def parse_args():
+  parser = argparse.ArgumentParser()
+  parser.add_argument(
+      '--config',
+      required=True,
+      choices=['cros.hardened', 'cros.nonhardened', 'cros.host', 'android'])
+  parser.add_argument('--use_ccache', required=True, choices=['true', 'false'])
+  parser.add_argument(
+      '--use_llvm_next', required=True, choices=['true', 'false'])
+  parser.add_argument('--output_file', required=True, type=str)
+  parser.add_argument(
+      '--static',
+      choices=['true', 'false'],
+      help='If true, produce a static wrapper. Autodetects a good value if '
+      'unspecified.')
+  args = parser.parse_args()
+
+  if args.static is None:
+    args.static = 'cros' not in args.config
+  else:
+    args.static = args.static == 'true'
+
+  return args
+
+
+def calc_go_args(args, version, build_dir):
+  ldFlags = [
+      '-X',
+      'main.ConfigName=' + args.config,
+      '-X',
+      'main.UseCCache=' + args.use_ccache,
+      '-X',
+      'main.UseLlvmNext=' + args.use_llvm_next,
+      '-X',
+      'main.Version=' + version,
+  ]
+
+  # If the wrapper is intended for Chrome OS, we need to use libc's exec.
+  extra_args = []
+  if not args.static:
+    extra_args += ['-tags', 'libc_exec']
+
+  if args.config == 'android':
+    # If android_llvm_next_flags.go DNE, we'll get an obscure "no
+    # llvmNextFlags" build error; complaining here is clearer.
+    if not os.path.exists(
+        os.path.join(build_dir, 'android_llvm_next_flags.go')):
+      sys.exit('In order to build the Android wrapper, you must have a local '
+               'android_llvm_next_flags.go file; please see '
+               'cros_llvm_next_flags.go.')
+    extra_args += ['-tags', 'android_llvm_next_flags']
+
+  return [
+      'go', 'build', '-o',
+      os.path.abspath(args.output_file), '-ldflags', ' '.join(ldFlags)
+  ] + extra_args
+
+
+def read_version(build_dir):
+  version_path = os.path.join(build_dir, 'VERSION')
+  if os.path.exists(version_path):
+    with open(version_path, 'r') as r:
+      return r.read()
+
+  last_commit_msg = subprocess.check_output(
+      ['git', '-C', build_dir, 'log', '-1', '--pretty=%B'], encoding='utf-8')
+  # Use last found change id to support reverts as well.
+  change_ids = re.findall(r'Change-Id: (\w+)', last_commit_msg)
+  if not change_ids:
+    sys.exit("Couldn't find Change-Id in last commit message.")
+  return change_ids[-1]
+
+
+def main():
+  args = parse_args()
+  build_dir = os.path.dirname(__file__)
+  version = read_version(build_dir)
+  # Note: Go does not support using absolute package names.
+  # So we run go inside the directory of the the build file.
+  sys.exit(
+      subprocess.call(calc_go_args(args, version, build_dir), cwd=build_dir))
+
+
+if __name__ == '__main__':
+  main()
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/ccache_flag.go b/sys-devel/gcc-bin/files/compiler_wrapper/ccache_flag.go
new file mode 100644
index 0000000..265b8fc
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/ccache_flag.go
@@ -0,0 +1,48 @@
+// Copyright 2019 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.
+
+package main
+
+func processCCacheFlag(builder *commandBuilder) {
+	// We should be able to share the objects across compilers as
+	// the pre-processed output will differ.  This allows boards
+	// that share compiler flags (like x86 boards) to share caches.
+	const ccacheDir = "/var/cache/distfiles/ccache"
+
+	useCCache := true
+	builder.transformArgs(func(arg builderArg) string {
+		if arg.value == "-noccache" {
+			useCCache = false
+			return ""
+		}
+		return arg.value
+	})
+
+	if builder.cfg.useCCache && useCCache {
+		// Note: we used to also set CCACHE_BASEDIR but don't do it
+		// anymore for reasons outlined in crrev.com/c/2103170.
+		if _, present := builder.env.getenv("CCACHE_DISABLE"); present {
+			// Portage likes to set this for us when it has FEATURES=-ccache.
+			// The other vars we need to setup manually because of tools like
+			// scons that scrubs the env before we get executed.
+			builder.updateEnv("CCACHE_DISABLE=")
+		}
+		// If RESTRICT=sandbox is enabled, then sandbox won't be setup,
+		// and the env vars won't be available for appending.
+		if sandboxRewrite, present := builder.env.getenv("SANDBOX_WRITE"); present {
+			builder.updateEnv("SANDBOX_WRITE=" + sandboxRewrite + ":" + ccacheDir)
+		}
+
+		// Make sure we keep the cached files group writable.
+		builder.updateEnv("CCACHE_DIR="+ccacheDir, "CCACHE_UMASK=002")
+
+		// ccache may generate false positive warnings.
+		// Workaround bug https://crbug.com/649740
+		if builder.target.compilerType == clangType {
+			builder.updateEnv("CCACHE_CPP2=yes")
+		}
+
+		builder.wrapPath("/usr/bin/ccache")
+	}
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/clang_flags.go b/sys-devel/gcc-bin/files/compiler_wrapper/clang_flags.go
new file mode 100644
index 0000000..53d70d5
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/clang_flags.go
@@ -0,0 +1,206 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"bytes"
+	"os"
+	"path/filepath"
+	"strings"
+)
+
+func processClangFlags(builder *commandBuilder) error {
+	env := builder.env
+	clangDir, _ := env.getenv("CLANG")
+
+	if clangDir == "" {
+		if builder.cfg.isHostWrapper {
+			clangDir = filepath.Dir(builder.absWrapperPath)
+		} else {
+			clangDir = filepath.Join(builder.rootPath, "usr/bin/")
+			if !filepath.IsAbs(builder.path) {
+				// If sysroot_wrapper is invoked by relative path, call actual compiler in
+				// relative form. This is neccesary to remove absolute path from compile
+				// outputs.
+				var err error
+				clangDir, err = filepath.Rel(env.getwd(), clangDir)
+				if err != nil {
+					return wrapErrorwithSourceLocf(err, "failed to make clangDir %s relative to %s.", clangDir, env.getwd())
+				}
+			}
+		}
+	} else {
+		clangDir = filepath.Dir(clangDir)
+	}
+
+	clangBasename := "clang"
+	if strings.HasSuffix(builder.target.compiler, "++") {
+		clangBasename = "clang++"
+	}
+
+	// GCC flags to remove from the clang command line.
+	// TODO: Once clang supports GCC compatibility mode, remove
+	// these checks.
+	//
+	// Use of -Qunused-arguments allows this set to be small, just those
+	// that clang still warns about.
+	unsupported := make(map[string]bool)
+
+	unsupportedPrefixes := []string{"-Wstrict-aliasing=", "-finline-limit="}
+
+	// clang with '-ftrapv' generates 'call __mulodi4', which is only implemented
+	// in compiler-rt library. However compiler-rt library only has i386/x86_64
+	// backends (see '/usr/lib/clang/3.7.0/lib/linux/libclang_rt.*'). GCC, on the
+	// other hand, generate 'call __mulvdi3', which is implemented in libgcc. See
+	// bug chromium:503229.
+	armUnsupported := map[string]bool{"-ftrapv": true}
+	if builder.cfg.isHostWrapper {
+		unsupported["-ftrapv"] = true
+	}
+
+	// Clang may use different options for the same or similar functionality.
+	gccToClang := map[string]string{
+		"-Wno-error=cpp":                     "-Wno-#warnings",
+		"-Wno-error=maybe-uninitialized":     "-Wno-error=uninitialized",
+		"-Wno-error=unused-but-set-variable": "-Wno-error=unused-variable",
+		"-Wno-unused-but-set-variable":       "-Wno-unused-variable",
+		"-Wunused-but-set-variable":          "-Wunused-variable",
+	}
+
+	// Note: not using builder.transformArgs as we need to add multiple arguments
+	// based on a single input argument, and also be able to return errors.
+	newArgs := []builderArg{}
+
+	for _, arg := range builder.args {
+		// Adds an argument with the given value, preserving the
+		// fromUser value of the original argument.
+		addNewArg := func(value string) {
+			newArgs = append(newArgs, builderArg{
+				fromUser: arg.fromUser,
+				value:    value,
+			})
+		}
+
+		if mapped, ok := gccToClang[arg.value]; ok {
+			addNewArg(mapped)
+			continue
+		}
+
+		if unsupported[arg.value] {
+			continue
+		}
+
+		if hasAtLeastOnePrefix(arg.value, unsupportedPrefixes) {
+			continue
+		}
+
+		if builder.target.arch == "armv7a" && builder.target.sys == "linux" {
+			if armUnsupported[arg.value] {
+				continue
+			}
+		}
+
+		if clangOnly := "-Xclang-only="; strings.HasPrefix(arg.value, clangOnly) {
+			addNewArg(arg.value[len(clangOnly):])
+			continue
+		}
+
+		if clangPath := "-Xclang-path="; strings.HasPrefix(arg.value, clangPath) {
+			clangPathValue := arg.value[len(clangPath):]
+			resourceDir, err := getClangResourceDir(env, filepath.Join(clangDir, clangBasename))
+			if err != nil {
+				return err
+			}
+			clangDir = clangPathValue
+
+			addNewArg("-resource-dir=" + resourceDir)
+			addNewArg("--gcc-toolchain=/usr")
+			continue
+		}
+
+		addNewArg(arg.value)
+	}
+	builder.args = newArgs
+
+	builder.path = filepath.Join(clangDir, clangBasename)
+
+	// Specify the target for clang.
+	if !builder.cfg.isHostWrapper {
+		linkerPath := getLinkerPath(env, builder.target.target+"-ld", builder.rootPath)
+		relLinkerPath, err := filepath.Rel(env.getwd(), linkerPath)
+		if err != nil {
+			return wrapErrorwithSourceLocf(err, "failed to make linker path %s relative to %s",
+				linkerPath, env.getwd())
+		}
+		builder.addPostUserArgs("-B" + relLinkerPath)
+		if startswithI86(builder.target.arch) {
+			// TODO: -target i686-pc-linux-gnu causes clang to search for
+			// libclang_rt.asan-i686.a which doesn't exist because it's packaged
+			// as libclang_rt.asan-i386.a. We can't use -target i386-pc-linux-gnu
+			// because then it would try to run i386-pc-linux-gnu-ld which doesn't
+			// exist. Consider renaming the runtime library to use i686 in its name.
+			builder.addPostUserArgs("-m32")
+			// clang does not support -mno-movbe. This is the alternate way to do it.
+			builder.addPostUserArgs("-Xclang", "-target-feature", "-Xclang", "-movbe")
+		} else {
+			builder.addPostUserArgs("-target", builder.target.target)
+		}
+	}
+	return nil
+}
+
+func getClangResourceDir(env env, clangPath string) (string, error) {
+	readResourceCmd := &command{
+		Path: clangPath,
+		Args: []string{"--print-resource-dir"},
+	}
+	stdoutBuffer := bytes.Buffer{}
+	if err := env.run(readResourceCmd, nil, &stdoutBuffer, env.stderr()); err != nil {
+		return "", wrapErrorwithSourceLocf(err,
+			"failed to call clang to read the resouce-dir: %#v",
+			readResourceCmd)
+	}
+	resourceDir := strings.TrimRight(stdoutBuffer.String(), "\n")
+	return resourceDir, nil
+}
+
+// Return the a directory which contains an 'ld' that gcc is using.
+func getLinkerPath(env env, linkerCmd string, rootPath string) string {
+	// We did not pass the tuple i686-pc-linux-gnu to x86-32 clang. Instead,
+	// we passed '-m32' to clang. As a result, clang does not want to use the
+	// i686-pc-linux-gnu-ld, so we need to add this to help clang find the right
+	// linker.
+	if linkerPath, err := resolveAgainstPathEnv(env, linkerCmd); err == nil {
+		// FIXME: We are not using filepath.EvalSymlinks to only unpack
+		// one layer of symlinks to match the old wrapper. Investigate
+		// why this is important or simplify to filepath.EvalSymlinks.
+		if fi, err := os.Lstat(linkerPath); err == nil {
+			if fi.Mode()&os.ModeSymlink != 0 {
+				if linkPath, err := os.Readlink(linkerPath); err == nil {
+					linkerPath = linkPath
+				}
+			}
+			return filepath.Dir(linkerPath)
+		}
+	}
+
+	// When using the sdk outside chroot, we need to provide the cross linker path
+	// to the compiler via -B ${linker_path}. This is because for gcc, it can
+	// find the right linker via searching its internal paths. Clang does not have
+	// such feature, and it falls back to $PATH search only. However, the path of
+	// ${SDK_LOCATION}/bin is not necessarily in the ${PATH}. To fix this, we
+	// provide the directory that contains the cross linker wrapper to clang.
+	// Outside chroot, it is the top bin directory form the sdk tarball.
+	return filepath.Join(rootPath, "bin")
+}
+
+func hasAtLeastOnePrefix(s string, prefixes []string) bool {
+	for _, prefix := range prefixes {
+		if strings.HasPrefix(s, prefix) {
+			return true
+		}
+	}
+	return false
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/clang_syntax_flag.go b/sys-devel/gcc-bin/files/compiler_wrapper/clang_syntax_flag.go
new file mode 100644
index 0000000..53240c7
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/clang_syntax_flag.go
@@ -0,0 +1,37 @@
+// Copyright 2019 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.
+
+package main
+
+func processClangSyntaxFlag(builder *commandBuilder) (clangSyntax bool) {
+	builder.transformArgs(func(arg builderArg) string {
+		if arg.value == "-clang-syntax" {
+			clangSyntax = true
+			return ""
+		}
+		return arg.value
+	})
+	return clangSyntax
+}
+
+func checkClangSyntax(env env, clangCmd *command, gccCmd *command) (exitCode int, err error) {
+	clangSyntaxCmd := &command{
+		Path:       clangCmd.Path,
+		Args:       append(clangCmd.Args, "-fsyntax-only", "-stdlib=libstdc++"),
+		EnvUpdates: clangCmd.EnvUpdates,
+	}
+
+	getStdin, err := prebufferStdinIfNeeded(env, clangCmd)
+	if err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err)
+	}
+
+	exitCode, err = wrapSubprocessErrorWithSourceLoc(clangSyntaxCmd,
+		env.run(clangSyntaxCmd, getStdin(), env.stdout(), env.stderr()))
+	if err != nil || exitCode != 0 {
+		return exitCode, err
+	}
+	return wrapSubprocessErrorWithSourceLoc(gccCmd,
+		env.run(gccCmd, getStdin(), env.stdout(), env.stderr()))
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/clang_tidy_flag.go b/sys-devel/gcc-bin/files/compiler_wrapper/clang_tidy_flag.go
new file mode 100644
index 0000000..01387fd
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/clang_tidy_flag.go
@@ -0,0 +1,243 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"encoding/json"
+	"fmt"
+	"io/ioutil"
+	"os"
+	"path"
+	"path/filepath"
+	"strings"
+)
+
+type useTidyMode int
+
+const clangTidyCrashSubstring = "PLEASE submit a bug report"
+
+const (
+	tidyModeNone useTidyMode = iota
+	tidyModeAll
+	tidyModeTricium
+)
+
+func processClangTidyFlags(builder *commandBuilder) (cSrcFile string, clangTidyFlags []string, mode useTidyMode) {
+	builder.transformArgs(func(arg builderArg) string {
+		const prefix = "-clang-tidy-flag="
+		if !strings.HasPrefix(arg.value, prefix) {
+			return arg.value
+		}
+
+		clangTidyFlags = append(clangTidyFlags, arg.value[len(prefix):])
+		return ""
+	})
+
+	withTidy, _ := builder.env.getenv("WITH_TIDY")
+	if withTidy == "" {
+		return "", clangTidyFlags, tidyModeNone
+	}
+	srcFileSuffixes := []string{
+		".c",
+		".cc",
+		".cpp",
+		".C",
+		".cxx",
+		".c++",
+	}
+	cSrcFile = ""
+	srcSuffix := ""
+	lastArg := ""
+	for _, arg := range builder.args {
+		if lastArg != "-o" {
+			for _, suffix := range srcFileSuffixes {
+				if strings.HasSuffix(arg.value, suffix) {
+					srcSuffix = suffix
+					cSrcFile = arg.value
+					break
+				}
+			}
+		}
+		lastArg = arg.value
+	}
+
+	if cSrcFile == "" {
+		return "", clangTidyFlags, tidyModeNone
+	}
+
+	if withTidy == "tricium" {
+		// Files generated from protobufs can result in _many_ clang-tidy complaints, and aren't
+		// worth linting in general. Don't.
+		if strings.HasSuffix(cSrcFile, ".pb"+srcSuffix) {
+			mode = tidyModeNone
+		} else {
+			mode = tidyModeTricium
+		}
+	} else {
+		mode = tidyModeAll
+	}
+	return cSrcFile, clangTidyFlags, mode
+}
+
+func calcClangTidyInvocation(env env, clangCmd *command, cSrcFile string, tidyFlags ...string) (*command, error) {
+	resourceDir, err := getClangResourceDir(env, clangCmd.Path)
+	if err != nil {
+		return nil, err
+	}
+
+	clangTidyPath := filepath.Join(filepath.Dir(clangCmd.Path), "clang-tidy")
+	args := append([]string{}, tidyFlags...)
+	args = append(args, cSrcFile, "--", "-resource-dir="+resourceDir)
+	args = append(args, clangCmd.Args...)
+	return &command{
+		Path:       clangTidyPath,
+		Args:       args,
+		EnvUpdates: clangCmd.EnvUpdates,
+	}, nil
+}
+
+func runClangTidyForTricium(env env, clangCmd *command, cSrcFile, fixesDir string, extraTidyFlags []string, crashArtifactsDir string) error {
+	if err := os.MkdirAll(fixesDir, 0777); err != nil {
+		return fmt.Errorf("creating fixes directory at %q: %v", fixesDir, err)
+	}
+
+	f, err := ioutil.TempFile(fixesDir, "lints-")
+	if err != nil {
+		return fmt.Errorf("making tempfile for tidy: %v", err)
+	}
+	f.Close()
+
+	// `f` is an 'anchor'; it ensures we won't create a similarly-named file in the future.
+	// Hence, we can't delete it.
+	fixesFilePath := f.Name() + ".yaml"
+	fixesMetadataPath := f.Name() + ".json"
+
+	// FIXME(gbiv): Remove `-checks=*` when testing is complete; we should defer to .clang-tidy
+	// files, which are both more expressive and more approachable than `-checks=*`.
+	extraTidyFlags = append(extraTidyFlags, "-checks=*", "--export-fixes="+fixesFilePath)
+	clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, extraTidyFlags...)
+	if err != nil {
+		return fmt.Errorf("calculating tidy invocation: %v", err)
+	}
+
+	stdstreams := &strings.Builder{}
+	// Note: We pass nil as stdin as we checked before that the compiler
+	// was invoked with a source file argument.
+	exitCode, err := wrapSubprocessErrorWithSourceLoc(clangTidyCmd,
+		env.run(clangTidyCmd, nil, stdstreams, stdstreams))
+	if err != nil {
+		return err
+	}
+
+	type crashOutput struct {
+		CrashReproducerPath string `json:"crash_reproducer_path"`
+		Stdstreams          string `json:"stdstreams"`
+	}
+
+	type metadata struct {
+		Args        []string     `json:"args"`
+		CrashOutput *crashOutput `json:"crash_output"`
+		Executable  string       `json:"executable"`
+		ExitCode    int          `json:"exit_code"`
+		LintTarget  string       `json:"lint_target"`
+		Stdstreams  string       `json:"stdstreams"`
+		Wd          string       `json:"wd"`
+	}
+
+	meta := &metadata{
+		Args:        clangTidyCmd.Args,
+		CrashOutput: nil,
+		Executable:  clangTidyCmd.Path,
+		ExitCode:    exitCode,
+		LintTarget:  cSrcFile,
+		Stdstreams:  stdstreams.String(),
+		Wd:          env.getwd(),
+	}
+
+	// Sometimes, clang-tidy crashes. Unfortunately, these don't get funnelled through the
+	// standard clang crash machinery. :(. Try to work with our own.
+	if crashArtifactsDir != "" && strings.Contains(meta.Stdstreams, clangTidyCrashSubstring) {
+		tidyCrashArtifacts := path.Join(crashArtifactsDir, "clang-tidy")
+		if err := os.MkdirAll(tidyCrashArtifacts, 0777); err != nil {
+			return fmt.Errorf("creating crash artifacts directory at %q: %v", tidyCrashArtifacts, err)
+		}
+
+		f, err := ioutil.TempFile(tidyCrashArtifacts, "crash-")
+		if err != nil {
+			return fmt.Errorf("making tempfile for crash output: %v", err)
+		}
+		f.Close()
+
+		reproCmd := &command{}
+		*reproCmd = *clangCmd
+		reproCmd.Args = append(reproCmd.Args, "-E", "-o", f.Name())
+
+		reproOut := &strings.Builder{}
+		_, err = wrapSubprocessErrorWithSourceLoc(reproCmd, env.run(reproCmd, nil, reproOut, reproOut))
+		if err != nil {
+			return fmt.Errorf("attempting to produce a clang-tidy crash reproducer: %v", err)
+		}
+		meta.CrashOutput = &crashOutput{
+			CrashReproducerPath: f.Name(),
+			Stdstreams:          reproOut.String(),
+		}
+	}
+
+	f, err = os.Create(fixesMetadataPath)
+	if err != nil {
+		return fmt.Errorf("creating fixes metadata: %v", err)
+	}
+
+	if err := json.NewEncoder(f).Encode(meta); err != nil {
+		return fmt.Errorf("writing fixes metadata: %v", err)
+	}
+
+	if err := f.Close(); err != nil {
+		return fmt.Errorf("finalizing fixes metadata: %v", err)
+	}
+	return nil
+}
+
+func runClangTidy(env env, clangCmd *command, cSrcFile string, extraTidyFlags []string) error {
+	extraTidyFlags = append(extraTidyFlags,
+		"-checks="+strings.Join([]string{
+			"*",
+			"-bugprone-narrowing-conversions",
+			"-cppcoreguidelines-*",
+			"-fuchsia-*",
+			"-google-readability*",
+			"-google-runtime-references",
+			"-hicpp-*",
+			"-llvm-*",
+			"-misc-non-private-member-variables-in-classes",
+			"-misc-unused-parameters",
+			"-modernize-*",
+			"-readability-*",
+		}, ","))
+	clangTidyCmd, err := calcClangTidyInvocation(env, clangCmd, cSrcFile, extraTidyFlags...)
+	if err != nil {
+		return fmt.Errorf("calculating clang-tidy invocation: %v", err)
+	}
+
+	// Note: We pass nil as stdin as we checked before that the compiler
+	// was invoked with a source file argument.
+	exitCode, err := wrapSubprocessErrorWithSourceLoc(clangTidyCmd,
+		env.run(clangTidyCmd, nil, env.stdout(), env.stderr()))
+	if err == nil && exitCode != 0 {
+		// Note: We continue on purpose when clang-tidy fails
+		// to maintain compatibility with the previous wrapper.
+		fmt.Fprint(env.stderr(), "clang-tidy failed")
+	}
+	return err
+}
+
+func hasAtLeastOneSuffix(s string, suffixes []string) bool {
+	for _, suffix := range suffixes {
+		if strings.HasSuffix(s, suffix) {
+			return true
+		}
+	}
+	return false
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/command.go b/sys-devel/gcc-bin/files/compiler_wrapper/command.go
new file mode 100644
index 0000000..6957859
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/command.go
@@ -0,0 +1,260 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"fmt"
+	"io"
+	"os"
+	"os/exec"
+	"path/filepath"
+	"strings"
+)
+
+type command struct {
+	Path string   `json:"path"`
+	Args []string `json:"args"`
+	// Updates and additions have the form:
+	// `NAME=VALUE`
+	// Removals have the form:
+	// `NAME=`.
+	EnvUpdates []string `json:"env_updates,omitempty"`
+}
+
+func newProcessCommand() *command {
+	// This is a workaround for the fact that ld.so does not support
+	// passing in the executable name when ld.so is invoked as
+	// an executable (crbug/1003841).
+	path := os.Getenv("LD_ARGV0")
+	if path == "" {
+		path = os.Args[0]
+	}
+	return &command{
+		Path: path,
+		Args: os.Args[1:],
+	}
+}
+
+func mergeEnvValues(values []string, updates []string) []string {
+	envMap := map[string]string{}
+	for _, entry := range values {
+		equalPos := strings.IndexRune(entry, '=')
+		envMap[entry[:equalPos]] = entry[equalPos+1:]
+	}
+	for _, update := range updates {
+		equalPos := strings.IndexRune(update, '=')
+		key := update[:equalPos]
+		value := update[equalPos+1:]
+		if value == "" {
+			delete(envMap, key)
+		} else {
+			envMap[key] = value
+		}
+	}
+	env := []string{}
+	for key, value := range envMap {
+		env = append(env, key+"="+value)
+	}
+	return env
+}
+
+func runCmd(env env, cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error {
+	execCmd := exec.Command(cmd.Path, cmd.Args...)
+	execCmd.Env = mergeEnvValues(env.environ(), cmd.EnvUpdates)
+	execCmd.Dir = env.getwd()
+	execCmd.Stdin = stdin
+	execCmd.Stdout = stdout
+	execCmd.Stderr = stderr
+	return execCmd.Run()
+}
+
+func resolveAgainstPathEnv(env env, cmd string) (string, error) {
+	path, _ := env.getenv("PATH")
+	for _, path := range strings.Split(path, ":") {
+		resolvedPath := filepath.Join(path, cmd)
+		if _, err := os.Lstat(resolvedPath); err == nil {
+			return resolvedPath, nil
+		}
+	}
+	return "", fmt.Errorf("Couldn't find cmd %q in path", cmd)
+}
+
+func getAbsCmdPath(env env, cmd *command) string {
+	path := cmd.Path
+	if !filepath.IsAbs(path) {
+		path = filepath.Join(env.getwd(), path)
+	}
+	return path
+}
+
+func newCommandBuilder(env env, cfg *config, cmd *command) (*commandBuilder, error) {
+	basename := filepath.Base(cmd.Path)
+	var nameParts []string
+	if basename == "clang-tidy" {
+		nameParts = []string{basename}
+	} else {
+		nameParts = strings.Split(basename, "-")
+	}
+	target := builderTarget{}
+	switch len(nameParts) {
+	case 1:
+		// E.g. gcc
+		target = builderTarget{
+			compiler: nameParts[0],
+		}
+	case 4:
+		// E.g. armv7m-cros-eabi-gcc
+		target = builderTarget{
+			arch:     nameParts[0],
+			vendor:   nameParts[1],
+			abi:      nameParts[2],
+			compiler: nameParts[3],
+			target:   basename[:strings.LastIndex(basename, "-")],
+		}
+	case 5:
+		// E.g. x86_64-cros-linux-gnu-gcc
+		target = builderTarget{
+			arch:     nameParts[0],
+			vendor:   nameParts[1],
+			sys:      nameParts[2],
+			abi:      nameParts[3],
+			compiler: nameParts[4],
+			target:   basename[:strings.LastIndex(basename, "-")],
+		}
+	default:
+		return nil, newErrorwithSourceLocf("unexpected compiler name pattern. Actual: %s", basename)
+	}
+
+	var compilerType compilerType
+	switch {
+	case strings.HasPrefix(target.compiler, "clang-tidy"):
+		compilerType = clangTidyType
+	case strings.HasPrefix(target.compiler, "clang"):
+		compilerType = clangType
+	default:
+		compilerType = gccType
+	}
+	target.compilerType = compilerType
+	absWrapperPath, err := getAbsWrapperPath(env, cmd)
+	if err != nil {
+		return nil, err
+	}
+	rootPath := filepath.Join(filepath.Dir(absWrapperPath), cfg.rootRelPath)
+	return &commandBuilder{
+		path:           cmd.Path,
+		args:           createBuilderArgs( /*fromUser=*/ true, cmd.Args),
+		env:            env,
+		cfg:            cfg,
+		rootPath:       rootPath,
+		absWrapperPath: absWrapperPath,
+		target:         target,
+	}, nil
+}
+
+type commandBuilder struct {
+	path           string
+	target         builderTarget
+	args           []builderArg
+	envUpdates     []string
+	env            env
+	cfg            *config
+	rootPath       string
+	absWrapperPath string
+}
+
+type builderArg struct {
+	value    string
+	fromUser bool
+}
+
+type compilerType int32
+
+const (
+	gccType compilerType = iota
+	clangType
+	clangTidyType
+)
+
+type builderTarget struct {
+	target       string
+	arch         string
+	vendor       string
+	sys          string
+	abi          string
+	compiler     string
+	compilerType compilerType
+}
+
+func createBuilderArgs(fromUser bool, args []string) []builderArg {
+	builderArgs := make([]builderArg, len(args))
+	for i, arg := range args {
+		builderArgs[i] = builderArg{value: arg, fromUser: fromUser}
+	}
+	return builderArgs
+}
+
+func (builder *commandBuilder) clone() *commandBuilder {
+	return &commandBuilder{
+		path:           builder.path,
+		args:           append([]builderArg{}, builder.args...),
+		env:            builder.env,
+		cfg:            builder.cfg,
+		rootPath:       builder.rootPath,
+		target:         builder.target,
+		absWrapperPath: builder.absWrapperPath,
+	}
+}
+
+func (builder *commandBuilder) wrapPath(path string) {
+	builder.args = append([]builderArg{{value: builder.path, fromUser: false}}, builder.args...)
+	builder.path = path
+}
+
+func (builder *commandBuilder) addPreUserArgs(args ...string) {
+	index := 0
+	for _, arg := range builder.args {
+		if arg.fromUser {
+			break
+		}
+		index++
+	}
+	builder.args = append(builder.args[:index], append(createBuilderArgs( /*fromUser=*/ false, args), builder.args[index:]...)...)
+}
+
+func (builder *commandBuilder) addPostUserArgs(args ...string) {
+	builder.args = append(builder.args, createBuilderArgs( /*fromUser=*/ false, args)...)
+}
+
+// Allows to map and filter arguments. Filters when the callback returns an empty string.
+func (builder *commandBuilder) transformArgs(transform func(arg builderArg) string) {
+	// See https://github.com/golang/go/wiki/SliceTricks
+	newArgs := builder.args[:0]
+	for _, arg := range builder.args {
+		newArg := transform(arg)
+		if newArg != "" {
+			newArgs = append(newArgs, builderArg{
+				value:    newArg,
+				fromUser: arg.fromUser,
+			})
+		}
+	}
+	builder.args = newArgs
+}
+
+func (builder *commandBuilder) updateEnv(updates ...string) {
+	builder.envUpdates = append(builder.envUpdates, updates...)
+}
+
+func (builder *commandBuilder) build() *command {
+	cmdArgs := make([]string, len(builder.args))
+	for i, builderArg := range builder.args {
+		cmdArgs[i] = builderArg.value
+	}
+	return &command{
+		Path:       builder.path,
+		Args:       cmdArgs,
+		EnvUpdates: builder.envUpdates,
+	}
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/compile_with_fallback.go b/sys-devel/gcc-bin/files/compiler_wrapper/compile_with_fallback.go
new file mode 100644
index 0000000..8b4b5b4
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/compile_with_fallback.go
@@ -0,0 +1,109 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"bufio"
+	"bytes"
+	"fmt"
+	"io"
+	"os"
+	"path/filepath"
+	"strings"
+	"syscall"
+	"time"
+)
+
+const prebuiltCompilerPathKey = "ANDROID_LLVM_PREBUILT_COMPILER_PATH"
+
+func shouldCompileWithFallback(env env) bool {
+	value, _ := env.getenv(prebuiltCompilerPathKey)
+	return value != ""
+}
+
+// FIXME: Deduplicate this logic with the logic for FORCE_DISABLE_WERROR
+// (the logic here is from Android, the logic for FORCE_DISABLE_WERROR is from ChromeOS)
+func compileWithFallback(env env, cfg *config, originalCmd *command, absWrapperPath string) (exitCode int, err error) {
+	firstCmd := &command{
+		Path:       originalCmd.Path,
+		Args:       originalCmd.Args,
+		EnvUpdates: originalCmd.EnvUpdates,
+	}
+	// We only want to pass extra flags to clang and clang++.
+	if base := filepath.Base(originalCmd.Path); base == "clang.real" || base == "clang++.real" {
+		// We may introduce some new warnings after rebasing and we need to
+		// disable them before we fix those warnings.
+		extraArgs, _ := env.getenv("ANDROID_LLVM_FALLBACK_DISABLED_WARNINGS")
+		firstCmd.Args = append(
+			append(firstCmd.Args, "-fno-color-diagnostics"),
+			strings.Split(extraArgs, " ")...,
+		)
+	}
+
+	getStdin, err := prebufferStdinIfNeeded(env, firstCmd)
+	if err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err)
+	}
+
+	firstCmdStderrBuffer := &bytes.Buffer{}
+	firstCmdExitCode, err := wrapSubprocessErrorWithSourceLoc(firstCmd,
+		env.run(firstCmd, getStdin(), env.stdout(), io.MultiWriter(env.stderr(), firstCmdStderrBuffer)))
+	if err != nil {
+		return 0, err
+	}
+
+	if firstCmdExitCode == 0 {
+		return 0, nil
+	}
+	stderrRedirectPath, _ := env.getenv("ANDROID_LLVM_STDERR_REDIRECT")
+	f, err := os.OpenFile(stderrRedirectPath, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0644)
+	if err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "error opening stderr file %s", stderrRedirectPath)
+	}
+	lockSuccess := false
+	for i := 0; i < 30; i++ {
+		err := syscall.Flock(int(f.Fd()), syscall.LOCK_EX|syscall.LOCK_NB)
+		if err == nil {
+			lockSuccess = true
+			break
+		}
+		if errno, ok := err.(syscall.Errno); ok {
+			if errno == syscall.EAGAIN || errno == syscall.EACCES {
+				time.Sleep(500 * time.Millisecond)
+				err = nil
+			}
+		}
+		if err != nil {
+			return 0, wrapErrorwithSourceLocf(err, "error waiting to lock file %s", stderrRedirectPath)
+		}
+	}
+	if !lockSuccess {
+		return 0, wrapErrorwithSourceLocf(err, "timeout waiting to lock file %s", stderrRedirectPath)
+	}
+	w := bufio.NewWriter(f)
+	w.WriteString("==================COMMAND:====================\n")
+	fmt.Fprintf(w, "%s %s\n\n", firstCmd.Path, strings.Join(firstCmd.Args, " "))
+	firstCmdStderrBuffer.WriteTo(w)
+	w.WriteString("==============================================\n\n")
+	if err := w.Flush(); err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "unable to write to file %s", stderrRedirectPath)
+	}
+	if err := f.Close(); err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "error closing file %s", stderrRedirectPath)
+	}
+
+	prebuiltCompilerPath, _ := env.getenv(prebuiltCompilerPathKey)
+	fallbackCmd := &command{
+		Path: filepath.Join(prebuiltCompilerPath, filepath.Base(absWrapperPath)),
+		// Don't use extra args added (from ANDROID_LLVM_FALLBACK_DISABLED_WARNINGS) for clang and
+		// clang++ above.  They may not be recognized by the fallback clang.
+		Args: originalCmd.Args,
+		// Delete prebuiltCompilerPathKey so the fallback doesn't keep
+		// calling itself in case of an error.
+		EnvUpdates: append(originalCmd.EnvUpdates, prebuiltCompilerPathKey+"="),
+	}
+	return wrapSubprocessErrorWithSourceLoc(fallbackCmd,
+		env.run(fallbackCmd, getStdin(), env.stdout(), env.stderr()))
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/compiler_wrapper.go b/sys-devel/gcc-bin/files/compiler_wrapper/compiler_wrapper.go
new file mode 100644
index 0000000..bc92f9f
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/compiler_wrapper.go
@@ -0,0 +1,368 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"bytes"
+	"errors"
+	"fmt"
+	"io"
+	"path/filepath"
+	"strings"
+)
+
+func callCompiler(env env, cfg *config, inputCmd *command) int {
+	var compilerErr error
+
+	if !filepath.IsAbs(inputCmd.Path) && !strings.HasPrefix(inputCmd.Path, ".") &&
+		!strings.ContainsRune(inputCmd.Path, filepath.Separator) {
+		if resolvedPath, err := resolveAgainstPathEnv(env, inputCmd.Path); err == nil {
+			inputCmd = &command{
+				Path:       resolvedPath,
+				Args:       inputCmd.Args,
+				EnvUpdates: inputCmd.EnvUpdates,
+			}
+		} else {
+			compilerErr = err
+		}
+	}
+	exitCode := 0
+	if compilerErr == nil {
+		exitCode, compilerErr = callCompilerInternal(env, cfg, inputCmd)
+	}
+	if compilerErr != nil {
+		printCompilerError(env.stderr(), compilerErr)
+		exitCode = 1
+	}
+	return exitCode
+}
+
+// Given the main builder path and the absolute path to our wrapper, returns the path to the
+// 'real' compiler we should invoke.
+func calculateAndroidWrapperPath(mainBuilderPath string, absWrapperPath string) string {
+	// FIXME: This combination of using the directory of the symlink but the basename of the
+	// link target is strange but is the logic that old android wrapper uses. Change this to use
+	// directory and basename either from the absWrapperPath or from the builder.path, but don't
+	// mix anymore.
+
+	// We need to be careful here: path.Join Clean()s its result, so `./foo` will get
+	// transformed to `foo`, which isn't good since we're passing this path to exec.
+	basePart := filepath.Base(absWrapperPath) + ".real"
+	if !strings.ContainsRune(mainBuilderPath, filepath.Separator) {
+		return basePart
+	}
+
+	dirPart := filepath.Dir(mainBuilderPath)
+	if cleanResult := filepath.Join(dirPart, basePart); strings.ContainsRune(cleanResult, filepath.Separator) {
+		return cleanResult
+	}
+
+	return "." + string(filepath.Separator) + basePart
+}
+
+func callCompilerInternal(env env, cfg *config, inputCmd *command) (exitCode int, err error) {
+	if err := checkUnsupportedFlags(inputCmd); err != nil {
+		return 0, err
+	}
+	mainBuilder, err := newCommandBuilder(env, cfg, inputCmd)
+	if err != nil {
+		return 0, err
+	}
+	processPrintConfigFlag(mainBuilder)
+	processPrintCmdlineFlag(mainBuilder)
+	env = mainBuilder.env
+	var compilerCmd *command
+	clangSyntax := processClangSyntaxFlag(mainBuilder)
+
+	workAroundKernelBugWithRetries := false
+	if cfg.isAndroidWrapper {
+		mainBuilder.path = calculateAndroidWrapperPath(mainBuilder.path, mainBuilder.absWrapperPath)
+		switch mainBuilder.target.compilerType {
+		case clangType:
+			mainBuilder.addPreUserArgs(mainBuilder.cfg.clangFlags...)
+			mainBuilder.addPreUserArgs(mainBuilder.cfg.commonFlags...)
+			mainBuilder.addPostUserArgs(mainBuilder.cfg.clangPostFlags...)
+			if _, err := processGomaCccFlags(mainBuilder); err != nil {
+				return 0, err
+			}
+			compilerCmd = mainBuilder.build()
+		case clangTidyType:
+			compilerCmd = mainBuilder.build()
+		default:
+			return 0, newErrorwithSourceLocf("unsupported compiler: %s", mainBuilder.target.compiler)
+		}
+	} else {
+		cSrcFile, tidyFlags, tidyMode := processClangTidyFlags(mainBuilder)
+		if mainBuilder.target.compilerType == clangType {
+			err := prepareClangCommand(mainBuilder)
+			if err != nil {
+				return 0, err
+			}
+			allowCCache := true
+			if tidyMode != tidyModeNone {
+				allowCCache = false
+				clangCmdWithoutGomaAndCCache := mainBuilder.build()
+				var err error
+				switch tidyMode {
+				case tidyModeTricium:
+					if cfg.triciumNitsDir == "" {
+						return 0, newErrorwithSourceLocf("tricium linting was requested, but no nits directory is configured")
+					}
+					err = runClangTidyForTricium(env, clangCmdWithoutGomaAndCCache, cSrcFile, cfg.triciumNitsDir, tidyFlags, cfg.crashArtifactsDir)
+				case tidyModeAll:
+					err = runClangTidy(env, clangCmdWithoutGomaAndCCache, cSrcFile, tidyFlags)
+				default:
+					panic(fmt.Sprintf("Unknown tidy mode: %v", tidyMode))
+				}
+
+				if err != nil {
+					return 0, err
+				}
+			}
+			if err := processGomaCCacheFlags(allowCCache, mainBuilder); err != nil {
+				return 0, err
+			}
+			compilerCmd = mainBuilder.build()
+		} else {
+			if clangSyntax {
+				allowCCache := false
+				clangCmd, err := calcClangCommand(allowCCache, mainBuilder.clone())
+				if err != nil {
+					return 0, err
+				}
+				gccCmd, err := calcGccCommand(mainBuilder)
+				if err != nil {
+					return 0, err
+				}
+				return checkClangSyntax(env, clangCmd, gccCmd)
+			}
+			compilerCmd, err = calcGccCommand(mainBuilder)
+			if err != nil {
+				return 0, err
+			}
+			workAroundKernelBugWithRetries = true
+		}
+	}
+
+	rusageLogfileName := getRusageLogFilename(env)
+	bisectStage := getBisectStage(env)
+
+	if rusageLogfileName != "" {
+		compilerCmd = removeRusageFromCommand(compilerCmd)
+	}
+
+	if shouldForceDisableWerror(env, cfg, mainBuilder.target.compilerType) {
+		if bisectStage != "" {
+			return 0, newUserErrorf("BISECT_STAGE is meaningless with FORCE_DISABLE_WERROR")
+		}
+		return doubleBuildWithWNoError(env, cfg, compilerCmd, rusageLogfileName)
+	}
+	if shouldCompileWithFallback(env) {
+		if rusageLogfileName != "" {
+			return 0, newUserErrorf("TOOLCHAIN_RUSAGE_OUTPUT is meaningless with ANDROID_LLVM_PREBUILT_COMPILER_PATH")
+		}
+		if bisectStage != "" {
+			return 0, newUserErrorf("BISECT_STAGE is meaningless with ANDROID_LLVM_PREBUILT_COMPILER_PATH")
+		}
+		return compileWithFallback(env, cfg, compilerCmd, mainBuilder.absWrapperPath)
+	}
+	if bisectStage != "" {
+		if rusageLogfileName != "" {
+			return 0, newUserErrorf("TOOLCHAIN_RUSAGE_OUTPUT is meaningless with BISECT_STAGE")
+		}
+		compilerCmd, err = calcBisectCommand(env, cfg, bisectStage, compilerCmd)
+		if err != nil {
+			return 0, err
+		}
+	}
+
+	errRetryCompilation := errors.New("compilation retry requested")
+	var runCompiler func(willLogRusage bool) (int, error)
+	if !workAroundKernelBugWithRetries {
+		runCompiler = func(willLogRusage bool) (int, error) {
+			var err error
+			if willLogRusage {
+				err = env.run(compilerCmd, env.stdin(), env.stdout(), env.stderr())
+			} else {
+				// Note: We return from this in non-fatal circumstances only if the
+				// underlying env is not really doing an exec, e.g. commandRecordingEnv.
+				err = env.exec(compilerCmd)
+			}
+			return wrapSubprocessErrorWithSourceLoc(compilerCmd, err)
+		}
+	} else {
+		getStdin, err := prebufferStdinIfNeeded(env, compilerCmd)
+		if err != nil {
+			return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err)
+		}
+
+		stdoutBuffer := &bytes.Buffer{}
+		stderrBuffer := &bytes.Buffer{}
+		retryAttempt := 0
+		runCompiler = func(willLogRusage bool) (int, error) {
+			retryAttempt++
+			stdoutBuffer.Reset()
+			stderrBuffer.Reset()
+
+			exitCode, compilerErr := wrapSubprocessErrorWithSourceLoc(compilerCmd,
+				env.run(compilerCmd, getStdin(), stdoutBuffer, stderrBuffer))
+
+			if compilerErr != nil || exitCode != 0 {
+				if retryAttempt < kernelBugRetryLimit && (errorContainsTracesOfKernelBug(compilerErr) || containsTracesOfKernelBug(stdoutBuffer.Bytes()) || containsTracesOfKernelBug(stderrBuffer.Bytes())) {
+					return exitCode, errRetryCompilation
+				}
+			}
+			_, stdoutErr := stdoutBuffer.WriteTo(env.stdout())
+			_, stderrErr := stderrBuffer.WriteTo(env.stderr())
+			if stdoutErr != nil {
+				return exitCode, wrapErrorwithSourceLocf(err, "writing stdout: %v", stdoutErr)
+			}
+			if stderrErr != nil {
+				return exitCode, wrapErrorwithSourceLocf(err, "writing stderr: %v", stderrErr)
+			}
+			return exitCode, compilerErr
+		}
+	}
+
+	for {
+		var exitCode int
+		commitRusage, err := maybeCaptureRusage(env, rusageLogfileName, compilerCmd, func(willLogRusage bool) error {
+			var err error
+			exitCode, err = runCompiler(willLogRusage)
+			return err
+		})
+
+		switch {
+		case err == errRetryCompilation:
+			// Loop around again.
+		case err != nil:
+			return exitCode, err
+		default:
+			if err := commitRusage(exitCode); err != nil {
+				return exitCode, fmt.Errorf("commiting rusage: %v", err)
+			}
+
+			return exitCode, err
+		}
+	}
+}
+
+func prepareClangCommand(builder *commandBuilder) (err error) {
+	if !builder.cfg.isHostWrapper {
+		processSysrootFlag(builder)
+	}
+	builder.addPreUserArgs(builder.cfg.clangFlags...)
+	if builder.cfg.crashArtifactsDir != "" {
+		builder.addPreUserArgs("-fcrash-diagnostics-dir=" + builder.cfg.crashArtifactsDir)
+	}
+	builder.addPostUserArgs(builder.cfg.clangPostFlags...)
+	calcCommonPreUserArgs(builder)
+	return processClangFlags(builder)
+}
+
+func calcClangCommand(allowCCache bool, builder *commandBuilder) (*command, error) {
+	err := prepareClangCommand(builder)
+	if err != nil {
+		return nil, err
+	}
+	if err := processGomaCCacheFlags(allowCCache, builder); err != nil {
+		return nil, err
+	}
+	return builder.build(), nil
+}
+
+func calcGccCommand(builder *commandBuilder) (*command, error) {
+	if !builder.cfg.isHostWrapper {
+		processSysrootFlag(builder)
+	}
+	builder.addPreUserArgs(builder.cfg.gccFlags...)
+	if !builder.cfg.isHostWrapper {
+		calcCommonPreUserArgs(builder)
+	}
+	processGccFlags(builder)
+	if !builder.cfg.isHostWrapper {
+		allowCCache := true
+		if err := processGomaCCacheFlags(allowCCache, builder); err != nil {
+			return nil, err
+		}
+	}
+	return builder.build(), nil
+}
+
+func calcCommonPreUserArgs(builder *commandBuilder) {
+	builder.addPreUserArgs(builder.cfg.commonFlags...)
+	if !builder.cfg.isHostWrapper {
+		processPieFlags(builder)
+		processThumbCodeFlags(builder)
+		processStackProtectorFlags(builder)
+		processX86Flags(builder)
+	}
+	processSanitizerFlags(builder)
+}
+
+func processGomaCCacheFlags(allowCCache bool, builder *commandBuilder) (err error) {
+	gomaccUsed := false
+	if !builder.cfg.isHostWrapper {
+		gomaccUsed, err = processGomaCccFlags(builder)
+		if err != nil {
+			return err
+		}
+	}
+	if !gomaccUsed && allowCCache {
+		processCCacheFlag(builder)
+	}
+	return nil
+}
+
+func getAbsWrapperPath(env env, wrapperCmd *command) (string, error) {
+	wrapperPath := getAbsCmdPath(env, wrapperCmd)
+	evaledCmdPath, err := filepath.EvalSymlinks(wrapperPath)
+	if err != nil {
+		return "", wrapErrorwithSourceLocf(err, "failed to evaluate symlinks for %s", wrapperPath)
+	}
+	return evaledCmdPath, nil
+}
+
+func printCompilerError(writer io.Writer, compilerErr error) {
+	if _, ok := compilerErr.(userError); ok {
+		fmt.Fprintf(writer, "%s\n", compilerErr)
+	} else {
+		emailAccount := "chromeos-toolchain"
+		if isAndroidConfig() {
+			emailAccount = "android-llvm"
+		}
+		fmt.Fprintf(writer,
+			"Internal error. Please report to %s@google.com.\n%s\n",
+			emailAccount, compilerErr)
+	}
+}
+
+func needStdinTee(inputCmd *command) bool {
+	lastArg := ""
+	for _, arg := range inputCmd.Args {
+		if arg == "-" && lastArg != "-o" {
+			return true
+		}
+		lastArg = arg
+	}
+	return false
+}
+
+func prebufferStdinIfNeeded(env env, inputCmd *command) (getStdin func() io.Reader, err error) {
+	// We pre-buffer the entirety of stdin, since the compiler may exit mid-invocation with an
+	// error, which may leave stdin partially read.
+	if !needStdinTee(inputCmd) {
+		// This won't produce deterministic input to the compiler, but stdin shouldn't
+		// matter in this case, so...
+		return env.stdin, nil
+	}
+
+	stdinBuffer := &bytes.Buffer{}
+	if _, err := stdinBuffer.ReadFrom(env.stdin()); err != nil {
+		return nil, wrapErrorwithSourceLocf(err, "prebuffering stdin")
+	}
+
+	return func() io.Reader { return bytes.NewReader(stdinBuffer.Bytes()) }, nil
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/config.go b/sys-devel/gcc-bin/files/compiler_wrapper/config.go
new file mode 100644
index 0000000..33963be
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/config.go
@@ -0,0 +1,242 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"strconv"
+)
+
+type config struct {
+	// TODO: Refactor this flag into more generic configuration properties.
+	isHostWrapper    bool
+	isAndroidWrapper bool
+	// Whether to use ccache.
+	useCCache bool
+	// Whether llvmNext wrapper.
+	useLlvmNext bool
+	// Flags to add to gcc and clang.
+	commonFlags []string
+	// Flags to add to gcc only.
+	gccFlags []string
+	// Flags to add to clang only.
+	clangFlags []string
+	// Flags to add to clang only, AFTER user flags (cannot be overridden
+	// by the user).
+	clangPostFlags []string
+	// Toolchain root path relative to the wrapper binary.
+	rootRelPath string
+	// Directory to store errors that were prevented with -Wno-error.
+	newWarningsDir string
+	// Directory to store nits in when using `WITH_TIDY=tricium`.
+	triciumNitsDir string
+	// Directory to store crash artifacts in.
+	crashArtifactsDir string
+	// Version. Only used for printing via -print-cmd.
+	version string
+}
+
+// Version can be set via a linker flag.
+// Values fills config.version.
+var Version = ""
+
+// UseCCache can be set via a linker flag.
+// Value will be passed to strconv.ParseBool.
+// E.g. go build -ldflags '-X config.UseCCache=true'.
+var UseCCache = "unknown"
+
+// UseLlvmNext can be set via a linker flag.
+// Value will be passed to strconv.ParseBool.
+// E.g. go build -ldflags '-X config.UseLlvmNext=true'.
+var UseLlvmNext = "unknown"
+
+// ConfigName can be set via a linker flag.
+// Value has to be one of:
+// - "cros.hardened"
+// - "cros.nonhardened"
+var ConfigName = "unknown"
+
+// Returns the configuration matching the UseCCache and ConfigName.
+func getRealConfig() (*config, error) {
+	useCCache, err := strconv.ParseBool(UseCCache)
+	if err != nil {
+		return nil, wrapErrorwithSourceLocf(err, "invalid format for UseCCache")
+	}
+	useLlvmNext, err := strconv.ParseBool(UseLlvmNext)
+	if err != nil {
+		return nil, wrapErrorwithSourceLocf(err, "invalid format for UseLLvmNext")
+	}
+	config, err := getConfig(ConfigName, useCCache, useLlvmNext, Version)
+	if err != nil {
+		return nil, err
+	}
+	return config, nil
+}
+
+func isAndroidConfig() bool {
+	return ConfigName == "android"
+}
+
+func getConfig(configName string, useCCache bool, useLlvmNext bool, version string) (*config, error) {
+	cfg := config{}
+	switch configName {
+	case "cros.hardened":
+		cfg = *crosHardenedConfig
+	case "cros.nonhardened":
+		cfg = *crosNonHardenedConfig
+	case "cros.host":
+		cfg = *crosHostConfig
+	case "android":
+		cfg = *androidConfig
+	default:
+		return nil, newErrorwithSourceLocf("unknown config name: %s", configName)
+	}
+	cfg.useCCache = useCCache
+	cfg.useLlvmNext = useLlvmNext
+	if useLlvmNext {
+		cfg.clangFlags = append(cfg.clangFlags, llvmNextFlags...)
+		cfg.clangPostFlags = append(cfg.clangPostFlags, llvmNextPostFlags...)
+	}
+	cfg.version = version
+	return &cfg, nil
+}
+
+// Full hardening.
+// Temporarily disable function splitting because of chromium:434751.
+var crosHardenedConfig = &config{
+	rootRelPath: "../../../../..",
+	// Pass "-fcommon" till the packages are fixed to work with new clang/gcc
+	// default of "-fno-common", crbug.com/1060413.
+	commonFlags: []string{
+		"-fcommon",
+		"-fstack-protector-strong",
+		"-fPIE",
+		"-pie",
+		"-D_FORTIFY_SOURCE=2",
+		"-fno-omit-frame-pointer",
+	},
+	gccFlags: []string{
+		"-fno-reorder-blocks-and-partition",
+		"-Wno-unused-local-typedefs",
+		"-Wno-maybe-uninitialized",
+	},
+	// Temporarily disable tautological-*-compare chromium:778316.
+	// Temporarily add no-unknown-warning-option to deal with old clang versions.
+	// Temporarily disable Wsection since kernel gets a bunch of these. chromium:778867
+	// Disable "-faddrsig" since it produces object files that strip doesn't understand, chromium:915742.
+	// crbug.com/1103065: -grecord-gcc-switches pollutes the Goma cache;
+	//   removed that flag for now.
+	clangFlags: []string{
+		"-Qunused-arguments",
+		"-fno-addrsig",
+		"-Wno-tautological-constant-compare",
+		"-Wno-tautological-unsigned-enum-zero-compare",
+		"-Wno-unknown-warning-option",
+		"-Wno-section",
+		"-static-libgcc",
+		"-fuse-ld=lld",
+		"-Wno-final-dtor-non-final-class",
+		"-Werror=poison-system-directories",
+		"-fexperimental-new-pass-manager",
+		"-Wno-compound-token-split-by-macro",
+	},
+	clangPostFlags: []string{
+		"-Wno-implicit-int-float-conversion",
+		"-Wno-compound-token-split-by-space",
+		"-Wno-string-concatenation",
+	},
+	newWarningsDir:    "/tmp/fatal_clang_warnings",
+	triciumNitsDir:    "/tmp/linting_output/clang-tidy",
+	crashArtifactsDir: "/tmp/clang_crash_diagnostics",
+}
+
+// Flags to be added to non-hardened toolchain.
+var crosNonHardenedConfig = &config{
+	rootRelPath: "../../../../..",
+	commonFlags: []string{},
+	gccFlags: []string{
+		"-Wno-maybe-uninitialized",
+		"-Wno-unused-local-typedefs",
+		"-Wno-deprecated-declarations",
+		"-Wtrampolines",
+	},
+	// Temporarily disable tautological-*-compare chromium:778316.
+	// Temporarily add no-unknown-warning-option to deal with old clang versions.
+	// Temporarily disable Wsection since kernel gets a bunch of these. chromium:778867
+	clangFlags: []string{
+		"-Qunused-arguments",
+		"-Wno-tautological-constant-compare",
+		"-Wno-tautological-unsigned-enum-zero-compare",
+		"-Wno-unknown-warning-option",
+		"-Wno-section",
+		"-static-libgcc",
+		"-Wno-final-dtor-non-final-class",
+		"-Werror=poison-system-directories",
+		"-fexperimental-new-pass-manager",
+		"-Wno-compound-token-split-by-macro",
+	},
+	clangPostFlags: []string{
+		"-Wno-implicit-int-float-conversion",
+		"-Wno-compound-token-split-by-space",
+		"-Wno-string-concatenation",
+	},
+	newWarningsDir:    "/tmp/fatal_clang_warnings",
+	triciumNitsDir:    "/tmp/linting_output/clang-tidy",
+	crashArtifactsDir: "/tmp/clang_crash_diagnostics",
+}
+
+// Flags to be added to host toolchain.
+var crosHostConfig = &config{
+	isHostWrapper: true,
+	rootRelPath:   "../..",
+	// Pass "-fcommon" till the packages are fixed to work with new clang/gcc
+	// default of "-fno-common", crbug.com/1060413.
+	commonFlags: []string{
+		"-fcommon",
+	},
+	gccFlags: []string{
+		"-Wno-maybe-uninitialized",
+		"-Wno-unused-local-typedefs",
+		"-Wno-deprecated-declarations",
+	},
+	// Temporarily disable tautological-*-compare chromium:778316.
+	// Temporarily add no-unknown-warning-option to deal with old clang versions.
+	// crbug.com/1103065: -grecord-gcc-switches pollutes the Goma cache;
+	//   removed that flag for now.
+	clangFlags: []string{
+		"-Qunused-arguments",
+		"-fno-addrsig",
+		"-fuse-ld=lld",
+		"-Wno-unused-local-typedefs",
+		"-Wno-deprecated-declarations",
+		"-Wno-tautological-constant-compare",
+		"-Wno-tautological-unsigned-enum-zero-compare",
+		"-Wno-final-dtor-non-final-class",
+		"-Werror=poison-system-directories",
+		"-Wno-unknown-warning-option",
+		"-fexperimental-new-pass-manager",
+		"-Wno-compound-token-split-by-macro",
+	},
+	clangPostFlags: []string{
+		"-Wno-implicit-int-float-conversion",
+		"-Wno-compound-token-split-by-space",
+		"-Wno-string-concatenation",
+	},
+	newWarningsDir:    "/tmp/fatal_clang_warnings",
+	triciumNitsDir:    "/tmp/linting_output/clang-tidy",
+	crashArtifactsDir: "/tmp/clang_crash_diagnostics",
+}
+
+var androidConfig = &config{
+	isHostWrapper:     false,
+	isAndroidWrapper:  true,
+	rootRelPath:       "./",
+	commonFlags:       []string{},
+	gccFlags:          []string{},
+	clangFlags:        []string{},
+	clangPostFlags:    []string{},
+	newWarningsDir:    "",
+	triciumNitsDir:    "",
+	crashArtifactsDir: "",
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/cros_llvm_next_flags.go b/sys-devel/gcc-bin/files/compiler_wrapper/cros_llvm_next_flags.go
new file mode 100644
index 0000000..6cd7cd2
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/cros_llvm_next_flags.go
@@ -0,0 +1,18 @@
+// Copyright 2020 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.
+
+// +build !android_llvm_next_flags
+
+package main
+
+// This file defines extra flags for llvm-next testing for Chrome OS. Importantly, these flags don't
+// apply to Android's llvm-next wrapper. Android's toolchain-utils copy has a
+// `android_llvm_next_flags.go` file downstream that defines its llvm-next arguments. As you can
+// probably infer, `android_llvm_next_flags.go` is only compiled if the `android_llvm_next_flags`
+// tag is set.
+
+// TODO: Enable test in config_test.go, once we have new llvm-next flags.
+var llvmNextFlags = []string{}
+
+var llvmNextPostFlags = []string{}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/disable_werror_flag.go b/sys-devel/gcc-bin/files/compiler_wrapper/disable_werror_flag.go
new file mode 100644
index 0000000..9bbf2e2
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/disable_werror_flag.go
@@ -0,0 +1,304 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"bytes"
+	"encoding/json"
+	"fmt"
+	"io"
+	"io/ioutil"
+	"os"
+	"path"
+	"strconv"
+	"strings"
+	"syscall"
+)
+
+const numWErrorEstimate = 30
+
+func shouldForceDisableWerror(env env, cfg *config, ty compilerType) bool {
+	if cfg.isAndroidWrapper {
+		return cfg.useLlvmNext
+	}
+
+	// We only want this functionality for clang.
+	if ty != clangType {
+		return false
+	}
+	value, _ := env.getenv("FORCE_DISABLE_WERROR")
+	return value != ""
+}
+
+func disableWerrorFlags(originalArgs []string) []string {
+	extraArgs := []string{"-Wno-error"}
+	newArgs := make([]string, 0, len(originalArgs)+numWErrorEstimate)
+	for _, flag := range originalArgs {
+		if strings.HasPrefix(flag, "-Werror=") {
+			extraArgs = append(extraArgs, strings.Replace(flag, "-Werror", "-Wno-error", 1))
+		}
+		if !strings.Contains(flag, "-warnings-as-errors") {
+			newArgs = append(newArgs, flag)
+		}
+	}
+	return append(newArgs, extraArgs...)
+}
+
+func isLikelyAConfTest(cfg *config, cmd *command) bool {
+	// Android doesn't do mid-build `configure`s, so we don't need to worry about this there.
+	if cfg.isAndroidWrapper {
+		return false
+	}
+
+	for _, a := range cmd.Args {
+		// The kernel, for example, will do configure tests with /dev/null as a source file.
+		if a == "/dev/null" || strings.HasPrefix(a, "conftest.c") {
+			return true
+		}
+	}
+	return false
+}
+
+func doubleBuildWithWNoError(env env, cfg *config, originalCmd *command, rusageLogfileName string) (exitCode int, err error) {
+	originalStdoutBuffer := &bytes.Buffer{}
+	originalStderrBuffer := &bytes.Buffer{}
+	// TODO: This is a bug in the old wrapper that it drops the ccache path
+	// during double build. Fix this once we don't compare to the old wrapper anymore.
+	if originalCmd.Path == "/usr/bin/ccache" {
+		originalCmd.Path = "ccache"
+	}
+
+	getStdin, err := prebufferStdinIfNeeded(env, originalCmd)
+	if err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err)
+	}
+
+	var originalExitCode int
+	commitOriginalRusage, err := maybeCaptureRusage(env, rusageLogfileName, originalCmd, func(willLogRusage bool) error {
+		originalExitCode, err = wrapSubprocessErrorWithSourceLoc(originalCmd,
+			env.run(originalCmd, getStdin(), originalStdoutBuffer, originalStderrBuffer))
+		return err
+	})
+	if err != nil {
+		return 0, err
+	}
+
+	// The only way we can do anything useful is if it looks like the failure
+	// was -Werror-related.
+	originalStdoutBufferBytes := originalStdoutBuffer.Bytes()
+	shouldRetry := originalExitCode != 0 &&
+		!isLikelyAConfTest(cfg, originalCmd) &&
+		(bytes.Contains(originalStderrBuffer.Bytes(), []byte("-Werror")) ||
+			bytes.Contains(originalStdoutBufferBytes, []byte("warnings-as-errors")) ||
+			bytes.Contains(originalStdoutBufferBytes, []byte("clang-diagnostic-")))
+	if !shouldRetry {
+		if err := commitOriginalRusage(originalExitCode); err != nil {
+			return 0, fmt.Errorf("commiting rusage: %v", err)
+		}
+		originalStdoutBuffer.WriteTo(env.stdout())
+		originalStderrBuffer.WriteTo(env.stderr())
+		return originalExitCode, nil
+	}
+
+	retryStdoutBuffer := &bytes.Buffer{}
+	retryStderrBuffer := &bytes.Buffer{}
+	retryCommand := &command{
+		Path:       originalCmd.Path,
+		Args:       disableWerrorFlags(originalCmd.Args),
+		EnvUpdates: originalCmd.EnvUpdates,
+	}
+
+	var retryExitCode int
+	commitRetryRusage, err := maybeCaptureRusage(env, rusageLogfileName, retryCommand, func(willLogRusage bool) error {
+		retryExitCode, err = wrapSubprocessErrorWithSourceLoc(retryCommand,
+			env.run(retryCommand, getStdin(), retryStdoutBuffer, retryStderrBuffer))
+		return err
+	})
+	if err != nil {
+		return 0, err
+	}
+
+	// If -Wno-error fixed us, pretend that we never ran without -Wno-error. Otherwise, pretend
+	// that we never ran the second invocation.
+	if retryExitCode != 0 {
+		originalStdoutBuffer.WriteTo(env.stdout())
+		originalStderrBuffer.WriteTo(env.stderr())
+		if err := commitOriginalRusage(originalExitCode); err != nil {
+			return 0, fmt.Errorf("commiting rusage: %v", err)
+		}
+		return originalExitCode, nil
+	}
+
+	if err := commitRetryRusage(retryExitCode); err != nil {
+		return 0, fmt.Errorf("commiting rusage: %v", err)
+	}
+
+	retryStdoutBuffer.WriteTo(env.stdout())
+	retryStderrBuffer.WriteTo(env.stderr())
+
+	lines := []string{}
+	if originalStderrBuffer.Len() > 0 {
+		lines = append(lines, originalStderrBuffer.String())
+	}
+	if originalStdoutBuffer.Len() > 0 {
+		lines = append(lines, originalStdoutBuffer.String())
+	}
+	outputToLog := strings.Join(lines, "\n")
+
+	// Ignore the error here; we can't do anything about it. The result is always valid (though
+	// perhaps incomplete) even if this returns an error.
+	parentProcesses, _ := collectAllParentProcesses()
+	jsonData := warningsJSONData{
+		Cwd:             env.getwd(),
+		Command:         append([]string{originalCmd.Path}, originalCmd.Args...),
+		Stdout:          outputToLog,
+		ParentProcesses: parentProcesses,
+	}
+
+	// Write warning report to stdout for Android.  On Android,
+	// double-build can be requested on remote builds as well, where there
+	// is no canonical place to write the warnings report.
+	if cfg.isAndroidWrapper {
+		stdout := env.stdout()
+		io.WriteString(stdout, "<LLVM_NEXT_ERROR_REPORT>")
+		if err := json.NewEncoder(stdout).Encode(jsonData); err != nil {
+			return 0, wrapErrorwithSourceLocf(err, "error in json.Marshal")
+		}
+		io.WriteString(stdout, "</LLVM_NEXT_ERROR_REPORT>")
+		return retryExitCode, nil
+	}
+
+	// All of the below is basically logging. If we fail at any point, it's
+	// reasonable for that to fail the build. This is all meant for FYI-like
+	// builders in the first place.
+
+	// Buildbots use a nonzero umask, which isn't quite what we want: these directories should
+	// be world-readable and world-writable.
+	oldMask := syscall.Umask(0)
+	defer syscall.Umask(oldMask)
+
+	// Allow root and regular users to write to this without issue.
+	if err := os.MkdirAll(cfg.newWarningsDir, 0777); err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "error creating warnings directory %s", cfg.newWarningsDir)
+	}
+
+	// Have some tag to show that files aren't fully written. It would be sad if
+	// an interrupted build (or out of disk space, or similar) caused tools to
+	// have to be overly-defensive.
+	incompleteSuffix := ".incomplete"
+
+	// Coming up with a consistent name for this is difficult (compiler command's
+	// SHA can clash in the case of identically named files in different
+	// directories, or similar); let's use a random one.
+	tmpFile, err := ioutil.TempFile(cfg.newWarningsDir, "warnings_report*.json"+incompleteSuffix)
+	if err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "error creating warnings file")
+	}
+
+	if err := tmpFile.Chmod(0666); err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "error chmoding the file to be world-readable/writeable")
+	}
+
+	enc := json.NewEncoder(tmpFile)
+	if err := enc.Encode(jsonData); err != nil {
+		_ = tmpFile.Close()
+		return 0, wrapErrorwithSourceLocf(err, "error writing warnings data")
+	}
+
+	if err := tmpFile.Close(); err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "error closing warnings file")
+	}
+
+	if err := os.Rename(tmpFile.Name(), tmpFile.Name()[:len(tmpFile.Name())-len(incompleteSuffix)]); err != nil {
+		return 0, wrapErrorwithSourceLocf(err, "error removing incomplete suffix from warnings file")
+	}
+
+	return retryExitCode, nil
+}
+
+func parseParentPidFromPidStat(pidStatContents string) (parentPid int, ok bool) {
+	// The parent's pid is the fourth field of /proc/[pid]/stat. Sadly, the second field can
+	// have spaces in it. It ends at the last ')' in the contents of /proc/[pid]/stat.
+	lastParen := strings.LastIndex(pidStatContents, ")")
+	if lastParen == -1 {
+		return 0, false
+	}
+
+	thirdFieldAndBeyond := strings.TrimSpace(pidStatContents[lastParen+1:])
+	fields := strings.Fields(thirdFieldAndBeyond)
+	if len(fields) < 2 {
+		return 0, false
+	}
+
+	fourthField := fields[1]
+	parentPid, err := strconv.Atoi(fourthField)
+	if err != nil {
+		return 0, false
+	}
+	return parentPid, true
+}
+
+func collectProcessData(pid int) (args, env []string, parentPid int, err error) {
+	procDir := fmt.Sprintf("/proc/%d", pid)
+
+	readFile := func(fileName string) (string, error) {
+		s, err := ioutil.ReadFile(path.Join(procDir, fileName))
+		if err != nil {
+			return "", fmt.Errorf("reading %s: %v", fileName, err)
+		}
+		return string(s), nil
+	}
+
+	statStr, err := readFile("stat")
+	if err != nil {
+		return nil, nil, 0, err
+	}
+
+	parentPid, ok := parseParentPidFromPidStat(statStr)
+	if !ok {
+		return nil, nil, 0, fmt.Errorf("no parseable parent PID found in %q", statStr)
+	}
+
+	argsStr, err := readFile("cmdline")
+	if err != nil {
+		return nil, nil, 0, err
+	}
+	args = strings.Split(argsStr, "\x00")
+
+	envStr, err := readFile("environ")
+	if err != nil {
+		return nil, nil, 0, err
+	}
+	env = strings.Split(envStr, "\x00")
+	return args, env, parentPid, nil
+}
+
+// The returned []processData is valid even if this returns an error. The error is just the first we
+// encountered when trying to collect parent process data.
+func collectAllParentProcesses() ([]processData, error) {
+	results := []processData{}
+	for parent := os.Getppid(); parent != 1; {
+		args, env, p, err := collectProcessData(parent)
+		if err != nil {
+			return results, fmt.Errorf("inspecting parent %d: %v", parent, err)
+		}
+		results = append(results, processData{Args: args, Env: env})
+		parent = p
+	}
+	return results, nil
+}
+
+type processData struct {
+	Args []string `json:"invocation"`
+	Env  []string `json:"env"`
+}
+
+// Struct used to write JSON. Fields have to be uppercase for the json encoder to read them.
+type warningsJSONData struct {
+	Cwd             string        `json:"cwd"`
+	Command         []string      `json:"command"`
+	Stdout          string        `json:"stdout"`
+	ParentProcesses []processData `json:"parent_process_data"`
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/env.go b/sys-devel/gcc-bin/files/compiler_wrapper/env.go
new file mode 100644
index 0000000..2c48ad3
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/env.go
@@ -0,0 +1,152 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"bytes"
+	"fmt"
+	"io"
+	"os"
+	"strings"
+)
+
+type env interface {
+	getenv(key string) (string, bool)
+	environ() []string
+	getwd() string
+	stdin() io.Reader
+	stdout() io.Writer
+	stderr() io.Writer
+	run(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error
+	exec(cmd *command) error
+}
+
+type processEnv struct {
+	wd string
+}
+
+func newProcessEnv() (env, error) {
+	wd, err := os.Getwd()
+	if err != nil {
+		return nil, wrapErrorwithSourceLocf(err, "failed to read working directory")
+	}
+
+	// Note: On Linux, Getwd may resolve to /proc/self/cwd, since it checks the PWD environment
+	// variable. We need to read the link to get the actual working directory. We can't always
+	// do this as we are calculating the path to clang, since following a symlinked cwd first
+	// would make this calculation invalid.
+	//
+	// FIXME(gbiv): It's not clear why always Readlink()ing here an issue. crrev.com/c/1764624
+	// might provide helpful context?
+	if wd == "/proc/self/cwd" {
+		wd, err = os.Readlink(wd)
+		if err != nil {
+			return nil, wrapErrorwithSourceLocf(err, "resolving /proc/self/cwd")
+		}
+	}
+
+	return &processEnv{wd: wd}, nil
+}
+
+var _ env = (*processEnv)(nil)
+
+func (env *processEnv) getenv(key string) (string, bool) {
+	return os.LookupEnv(key)
+}
+
+func (env *processEnv) environ() []string {
+	return os.Environ()
+}
+
+func (env *processEnv) getwd() string {
+	return env.wd
+}
+
+func (env *processEnv) stdin() io.Reader {
+	return os.Stdin
+}
+
+func (env *processEnv) stdout() io.Writer {
+	return os.Stdout
+}
+
+func (env *processEnv) stderr() io.Writer {
+	return os.Stderr
+}
+
+func (env *processEnv) exec(cmd *command) error {
+	return execCmd(env, cmd)
+}
+
+func (env *processEnv) run(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error {
+	return runCmd(env, cmd, stdin, stdout, stderr)
+}
+
+type commandRecordingEnv struct {
+	env
+	stdinReader io.Reader
+	cmdResults  []*commandResult
+}
+type commandResult struct {
+	Cmd      *command `json:"cmd"`
+	Stdout   string   `json:"stdout,omitempty"`
+	Stderr   string   `json:"stderr,omitempty"`
+	ExitCode int      `json:"exitcode,omitempty"`
+}
+
+var _ env = (*commandRecordingEnv)(nil)
+
+func (env *commandRecordingEnv) stdin() io.Reader {
+	return env.stdinReader
+}
+
+func (env *commandRecordingEnv) exec(cmd *command) error {
+	// Note: We treat exec the same as run so that we can do work
+	// after the call.
+	return env.run(cmd, env.stdin(), env.stdout(), env.stderr())
+}
+
+func (env *commandRecordingEnv) run(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error {
+	stdoutBuffer := &bytes.Buffer{}
+	stderrBuffer := &bytes.Buffer{}
+	err := env.env.run(cmd, stdin, io.MultiWriter(stdout, stdoutBuffer), io.MultiWriter(stderr, stderrBuffer))
+	if exitCode, ok := getExitCode(err); ok {
+		env.cmdResults = append(env.cmdResults, &commandResult{
+			Cmd:      cmd,
+			Stdout:   stdoutBuffer.String(),
+			Stderr:   stderrBuffer.String(),
+			ExitCode: exitCode,
+		})
+	}
+	return err
+}
+
+type printingEnv struct {
+	env
+}
+
+var _env = (*printingEnv)(nil)
+
+func (env *printingEnv) exec(cmd *command) error {
+	printCmd(env, cmd)
+	return env.env.exec(cmd)
+}
+
+func (env *printingEnv) run(cmd *command, stdin io.Reader, stdout io.Writer, stderr io.Writer) error {
+	printCmd(env, cmd)
+	return env.env.run(cmd, stdin, stdout, stderr)
+}
+
+func printCmd(env env, cmd *command) {
+	fmt.Fprintf(env.stderr(), "cd '%s' &&", env.getwd())
+	if len(cmd.EnvUpdates) > 0 {
+		fmt.Fprintf(env.stderr(), " env '%s'", strings.Join(cmd.EnvUpdates, "' '"))
+	}
+	fmt.Fprintf(env.stderr(), " '%s'", getAbsCmdPath(env, cmd))
+	if len(cmd.Args) > 0 {
+		fmt.Fprintf(env.stderr(), " '%s'", strings.Join(cmd.Args, "' '"))
+	}
+	io.WriteString(env.stderr(), "\n")
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/errors.go b/sys-devel/gcc-bin/files/compiler_wrapper/errors.go
new file mode 100644
index 0000000..18e0fac
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/errors.go
@@ -0,0 +1,86 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"fmt"
+	"os/exec"
+	"runtime"
+	"strings"
+	"syscall"
+)
+
+type userError struct {
+	err string
+}
+
+var _ error = userError{}
+
+func (err userError) Error() string {
+	return err.err
+}
+
+func newUserErrorf(format string, v ...interface{}) userError {
+	return userError{err: fmt.Sprintf(format, v...)}
+}
+
+func newErrorwithSourceLocf(format string, v ...interface{}) error {
+	return newErrorwithSourceLocfInternal(2, format, v...)
+}
+
+func wrapErrorwithSourceLocf(err error, format string, v ...interface{}) error {
+	return newErrorwithSourceLocfInternal(2, "%s: %s", fmt.Sprintf(format, v...), err.Error())
+}
+
+func wrapSubprocessErrorWithSourceLoc(cmd *command, subprocessErr error) (exitCode int, err error) {
+	if subprocessErr == nil {
+		return 0, nil
+	}
+	if userErr, ok := getCCacheError(cmd, subprocessErr); ok {
+		return 0, userErr
+	}
+	if exitCode, ok := getExitCode(subprocessErr); ok {
+		return exitCode, nil
+	}
+	err = newErrorwithSourceLocfInternal(2, "failed to execute %#v: %s", cmd, subprocessErr)
+	return 0, err
+}
+
+// Based on the implementation of log.Output
+func newErrorwithSourceLocfInternal(skip int, format string, v ...interface{}) error {
+	_, file, line, ok := runtime.Caller(skip)
+	if !ok {
+		file = "???"
+		line = 0
+	}
+	if lastSlash := strings.LastIndex(file, "/"); lastSlash >= 0 {
+		file = file[lastSlash+1:]
+	}
+
+	return fmt.Errorf("%s:%d: %s", file, line, fmt.Sprintf(format, v...))
+}
+
+func getExitCode(err error) (exitCode int, ok bool) {
+	if err == nil {
+		return 0, true
+	}
+	if exiterr, ok := err.(*exec.ExitError); ok {
+		if status, ok := exiterr.Sys().(syscall.WaitStatus); ok {
+			return status.ExitStatus(), true
+		}
+	}
+	return 0, false
+}
+
+func getCCacheError(compilerCmd *command, compilerCmdErr error) (ccacheErr userError, ok bool) {
+	if en, ok := compilerCmdErr.(syscall.Errno); ok && en == syscall.ENOENT &&
+		strings.Contains(compilerCmd.Path, "ccache") {
+		ccacheErr =
+			newUserErrorf("ccache not found under %s. Please install it",
+				compilerCmd.Path)
+		return ccacheErr, true
+	}
+	return ccacheErr, false
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/gcc_flags.go b/sys-devel/gcc-bin/files/compiler_wrapper/gcc_flags.go
new file mode 100644
index 0000000..7141d14
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/gcc_flags.go
@@ -0,0 +1,33 @@
+// Copyright 2019 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.
+
+package main
+
+func processGccFlags(builder *commandBuilder) {
+	if !builder.cfg.isHostWrapper {
+		// Flags not supported by GCC.
+		unsupported := map[string]bool{"-Xcompiler": true}
+
+		// Conversion for flags supported by clang but not gcc.
+		clangToGcc := map[string]string{
+			"-march=goldmont":      "-march=silvermont",
+			"-march=goldmont-plus": "-march=silvermont",
+			"-march=skylake":       "-march=corei7",
+			"-march=tigerlake":     "-march=corei7",
+			"-march=tremont":       "-march=silvermont",
+		}
+
+		builder.transformArgs(func(arg builderArg) string {
+			if unsupported[arg.value] {
+				return ""
+			}
+			if mapped, ok := clangToGcc[arg.value]; ok {
+				return mapped
+			}
+			return arg.value
+		})
+	}
+
+	builder.path += ".real"
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/go_exec.go b/sys-devel/gcc-bin/files/compiler_wrapper/go_exec.go
new file mode 100644
index 0000000..2f2e5ad
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/go_exec.go
@@ -0,0 +1,23 @@
+// Copyright 2020 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.
+
+// +build !libc_exec
+
+package main
+
+import (
+	"os/exec"
+	"syscall"
+)
+
+// Implement exec for users that don't need to dynamically link with glibc
+// See b/144783188 and libc_exec.go.
+
+func execCmd(env env, cmd *command) error {
+	execCmd := exec.Command(cmd.Path, cmd.Args...)
+	mergedEnv := mergeEnvValues(env.environ(), cmd.EnvUpdates)
+
+	ret := syscall.Exec(execCmd.Path, execCmd.Args, mergedEnv)
+	return newErrorwithSourceLocf("exec error: %v", ret)
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/gomacc_flag.go b/sys-devel/gcc-bin/files/compiler_wrapper/gomacc_flag.go
new file mode 100644
index 0000000..ac298b1
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/gomacc_flag.go
@@ -0,0 +1,41 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"os"
+)
+
+func processGomaCccFlags(builder *commandBuilder) (gomaUsed bool, err error) {
+	gomaPath := ""
+	nextArgIsGomaPath := false
+	builder.transformArgs(func(arg builderArg) string {
+		if arg.fromUser {
+			if arg.value == "--gomacc-path" {
+				nextArgIsGomaPath = true
+				return ""
+			}
+			if nextArgIsGomaPath {
+				gomaPath = arg.value
+				nextArgIsGomaPath = false
+				return ""
+			}
+		}
+		return arg.value
+	})
+	if nextArgIsGomaPath {
+		return false, newUserErrorf("--gomacc-path given without value")
+	}
+	if gomaPath == "" {
+		gomaPath, _ = builder.env.getenv("GOMACC_PATH")
+	}
+	if gomaPath != "" {
+		if _, err := os.Lstat(gomaPath); err == nil {
+			builder.wrapPath(gomaPath)
+			return true, nil
+		}
+	}
+	return false, nil
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/kernel_bug.go b/sys-devel/gcc-bin/files/compiler_wrapper/kernel_bug.go
new file mode 100644
index 0000000..b4067b7
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/kernel_bug.go
@@ -0,0 +1,26 @@
+// Copyright 2021 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.
+
+package main
+
+import (
+	"bytes"
+	"strings"
+)
+
+// crbug.com/1166017
+
+const kernelBugRetryLimit = 25
+
+// GCC will sometimes fail to wait on subprocesses due to this kernel bug. It always fails the
+// compilation and prints "Unknown error 512" in that case.
+func containsTracesOfKernelBug(buf []byte) bool {
+	return bytes.Contains(buf, []byte("Unknown error 512"))
+}
+
+func errorContainsTracesOfKernelBug(err error) bool {
+	// We'll get errors that look like "waitid: errno 512." Presumably, this isn't specific to
+	// waitid, so just try to match the "errno 512" ending.
+	return err != nil && strings.HasSuffix(err.Error(), "errno 512")
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/libc_exec.go b/sys-devel/gcc-bin/files/compiler_wrapper/libc_exec.go
new file mode 100644
index 0000000..09f8be8
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/libc_exec.go
@@ -0,0 +1,100 @@
+// Copyright 2019 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.
+
+// +build libc_exec
+
+package main
+
+// #include <errno.h>
+// #include <stdio.h>
+// #include <stdlib.h>
+// #include <string.h>
+// #include <unistd.h>
+// #include <sys/types.h>
+// #include <sys/wait.h>
+//
+// int libc_exec(const char *pathname, char *const argv[], char *const envp[]) {
+//	// Since fork() brings us to one thread, we can only use async-signal-safe funcs below.
+//	pid_t pid = fork();
+//	if (pid == 0) {
+//		// crbug.com/1166017: we're (very rarely) getting ERESTARTSYS on some builders.
+//		// Documentation indicates that this is a bug in the kernel. Work around it by
+//		// retrying. 25 is an arbitrary retry number that Should Be Enough For Anyone(TM).
+//		for (int i = 0; i < 25; i++) {
+//			execve(pathname, argv, envp);
+//			if (errno != 512) {
+//				break;
+//			}
+//			// Sleep a bit. Not sure if this helps, but if the condition we're seeing is
+//			// transient, it *hopefully* should. nanosleep isn't async-signal safe, so
+//			// we have to live with sleep()
+//			sleep(1);
+//		}
+//		fprintf(stderr, "exec failed (errno: %d)\n", errno);
+//		_exit(1);
+//	}
+//	if (pid < 0) {
+//		return errno;
+//	}
+//
+//	int wstatus;
+//	pid_t waited = waitpid(pid, &wstatus, 0);
+//	if (waited == -1) {
+//		return errno;
+//	}
+//	exit(WEXITSTATUS(wstatus));
+//}
+import "C"
+import (
+	"os/exec"
+	"unsafe"
+)
+
+// Replacement for syscall.Execve that uses the libc.
+// This allows tools that rely on intercepting syscalls via
+// LD_PRELOAD to work properly (e.g. gentoo sandbox).
+// Note that this changes the go binary to be a dynamically linked one.
+// See crbug.com/1000863 for details.
+// To use this version of exec, please add '-tags libc_exec' when building Go binary.
+// Without the tags, libc_exec.go will not be used.
+
+func execCmd(env env, cmd *command) error {
+	freeList := []unsafe.Pointer{}
+	defer func() {
+		for _, ptr := range freeList {
+			C.free(ptr)
+		}
+	}()
+
+	goStrToC := func(goStr string) *C.char {
+		cstr := C.CString(goStr)
+		freeList = append(freeList, unsafe.Pointer(cstr))
+		return cstr
+	}
+
+	goSliceToC := func(goSlice []string) **C.char {
+		// len(goSlice)+1 as the c array needs to be null terminated.
+		cArray := C.malloc(C.size_t(len(goSlice)+1) * C.size_t(unsafe.Sizeof(uintptr(0))))
+		freeList = append(freeList, cArray)
+
+		// Convert the C array to a Go Array so we can index it.
+		// Note: Storing pointers to the c heap in go pointer types is ok
+		// (see https://golang.org/cmd/cgo/).
+		cArrayForIndex := (*[1<<30 - 1]*C.char)(cArray)
+		for i, str := range goSlice {
+			cArrayForIndex[i] = goStrToC(str)
+		}
+		cArrayForIndex[len(goSlice)] = nil
+
+		return (**C.char)(cArray)
+	}
+
+	execCmd := exec.Command(cmd.Path, cmd.Args...)
+	mergedEnv := mergeEnvValues(env.environ(), cmd.EnvUpdates)
+	if errno := C.libc_exec(goStrToC(execCmd.Path), goSliceToC(execCmd.Args), goSliceToC(mergedEnv)); errno != 0 {
+		return newErrorwithSourceLocf("exec error: %d", errno)
+	}
+
+	return nil
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/main.go b/sys-devel/gcc-bin/files/compiler_wrapper/main.go
new file mode 100644
index 0000000..046cf5a
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/main.go
@@ -0,0 +1,42 @@
+// Copyright 2019 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.
+
+// This binary requires the following linker variables:
+// - main.UseCCache: Whether to use ccache.
+// - main.ConfigName: Name of the configuration to use.
+//   See config.go for the supported values.
+//
+// The script ./build simplifies the call to `go build`.
+// E.g. ./build --use_ccache=true --config=cros.hardened will build a
+// binary that uses the ccache for ChromeOS with hardened flags.
+//
+// Test arguments:
+// - updategolden: To update the golden results for the wrapper. Without it,
+//   the tests will verify that the wrapper output matches the goldens.
+// - rungolden: To filter the golden tests by a regex for the wrapper env, path and args.
+//
+// Examples:
+// - run all tests in isolation:
+// 		go test third_party/toolchain-utils/compiler_wrapper/ -v
+package main
+
+import (
+	"log"
+	"os"
+)
+
+func main() {
+	env, err := newProcessEnv()
+	if err != nil {
+		log.Fatal(err)
+	}
+	cfg, err := getRealConfig()
+	if err != nil {
+		log.Fatal(err)
+	}
+	// Note: callCompiler will exec the command. Only in case of
+	// an error or when we run other commands like bisect
+	// will this os.Exit be called.
+	os.Exit(callCompiler(env, cfg, newProcessCommand()))
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/pie_flags.go b/sys-devel/gcc-bin/files/compiler_wrapper/pie_flags.go
new file mode 100644
index 0000000..9675f6e
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/pie_flags.go
@@ -0,0 +1,43 @@
+// Copyright 2019 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.
+
+package main
+
+func processPieFlags(builder *commandBuilder) {
+	fpieMap := map[string]bool{"-D__KERNEL__": true, "-fPIC": true, "-fPIE": true, "-fno-PIC": true, "-fno-PIE": true,
+		"-fno-pic": true, "-fno-pie": true, "-fpic": true, "-fpie": true, "-nopie": true,
+		"-nostartfiles": true, "-nostdlib": true, "-pie": true, "-static": true}
+
+	pieMap := map[string]bool{"-D__KERNEL__": true, "-A": true, "-fno-PIC": true, "-fno-PIE": true, "-fno-pic": true, "-fno-pie": true,
+		"-nopie": true, "-nostartfiles": true, "-nostdlib": true, "-pie": true, "-r": true, "--shared": true,
+		"-shared": true, "-static": true}
+
+	pie := false
+	fpie := false
+	if builder.target.abi != "eabi" {
+		for _, arg := range builder.args {
+			if arg.fromUser {
+				if fpieMap[arg.value] {
+					fpie = true
+				}
+				if pieMap[arg.value] {
+					pie = true
+				}
+			}
+		}
+	}
+	builder.transformArgs(func(arg builderArg) string {
+		// Remove -nopie as it is a non-standard flag.
+		if arg.value == "-nopie" {
+			return ""
+		}
+		if fpie && !arg.fromUser && arg.value == "-fPIE" {
+			return ""
+		}
+		if pie && !arg.fromUser && arg.value == "-pie" {
+			return ""
+		}
+		return arg.value
+	})
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/print_cmdline_flag.go b/sys-devel/gcc-bin/files/compiler_wrapper/print_cmdline_flag.go
new file mode 100644
index 0000000..e2092ed
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/print_cmdline_flag.go
@@ -0,0 +1,19 @@
+// Copyright 2019 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.
+
+package main
+
+func processPrintCmdlineFlag(builder *commandBuilder) {
+	printCmd := false
+	builder.transformArgs(func(arg builderArg) string {
+		if arg.value == "-print-cmdline" {
+			printCmd = true
+			return ""
+		}
+		return arg.value
+	})
+	if printCmd {
+		builder.env = &printingEnv{builder.env}
+	}
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/print_config_flag.go b/sys-devel/gcc-bin/files/compiler_wrapper/print_config_flag.go
new file mode 100644
index 0000000..9ab9f6b
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/print_config_flag.go
@@ -0,0 +1,21 @@
+// Copyright 2019 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.
+
+package main
+
+import "fmt"
+
+func processPrintConfigFlag(builder *commandBuilder) {
+	printConfig := false
+	builder.transformArgs(func(arg builderArg) string {
+		if arg.value == "-print-config" {
+			printConfig = true
+			return ""
+		}
+		return arg.value
+	})
+	if printConfig {
+		fmt.Fprintf(builder.env.stderr(), "wrapper config: %#v\n", *builder.cfg)
+	}
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/rusage_flag.go b/sys-devel/gcc-bin/files/compiler_wrapper/rusage_flag.go
new file mode 100644
index 0000000..87a994b
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/rusage_flag.go
@@ -0,0 +1,155 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"encoding/json"
+	"fmt"
+	"os"
+	"path/filepath"
+	"syscall"
+	"time"
+)
+
+func getRusageLogFilename(env env) string {
+	value, _ := env.getenv("TOOLCHAIN_RUSAGE_OUTPUT")
+	return value
+}
+
+func lockFileExclusive(fd uintptr) error {
+	maxTries := 100
+	for i := 0; i < maxTries; i++ {
+		const seekSet = 0
+		err := syscall.FcntlFlock(fd, syscall.F_SETLKW, &syscall.Flock_t{
+			Type:   syscall.F_WRLCK,
+			Whence: seekSet,
+			Start:  0,
+			Len:    0,
+		})
+		if err == nil {
+			return nil
+		}
+		if err != syscall.EINTR {
+			return fmt.Errorf("locking file: %v", err)
+		}
+	}
+	return fmt.Errorf("locking file failed after %d tries", maxTries)
+}
+
+type rusageLog struct {
+	ExitCode         int      `json:"exit_code"`
+	ElapsedRealTime  float64  `json:"elapsed_real_time"`
+	ElapsedUserTime  float64  `json:"elapsed_user_time"`
+	ElapsedSysTime   float64  `json:"elapsed_sys_time"`
+	MaxMemUsed       int64    `json:"max_mem_used"`
+	Compiler         string   `json:"compiler"`
+	CompilerArgs     []string `json:"compiler_args"`
+	WorkingDirectory string   `json:"working_directory"`
+}
+
+func removeRusageFromCommand(compilerCmd *command) *command {
+	return &command{
+		Path:       compilerCmd.Path,
+		Args:       compilerCmd.Args,
+		EnvUpdates: append(compilerCmd.EnvUpdates, "TOOLCHAIN_RUSAGE_OUTPUT="),
+	}
+}
+
+// maybeCaptureRusage captures rusage for execution of action()
+// 	unless action returns an error or logFileName is ""
+// a function is returned which saves the rusage log data at logFileName unless logFileName is ""
+// an error is returned if action returns an error, or rusage commands in syscall fails
+func maybeCaptureRusage(env env, logFileName string, compilerCmd *command, action func(willLogRusage bool) error) (maybeCommitToFile func(exitCode int) error, err error) {
+	willLogRusage := logFileName != ""
+	if !willLogRusage {
+		if err := action(willLogRusage); err != nil {
+			return nil, err
+		}
+		return func(int) error { return nil }, nil
+	}
+
+	rusageBefore := syscall.Rusage{}
+	if err := syscall.Getrusage(syscall.RUSAGE_CHILDREN, &rusageBefore); err != nil {
+		return nil, fmt.Errorf("getting initial rusage: %v", err)
+	}
+	startTime := time.Now()
+
+	if err := action(willLogRusage); err != nil {
+		return nil, err
+	}
+
+	elapsedRealTime := time.Since(startTime)
+	rusageAfter := syscall.Rusage{}
+	if err := syscall.Getrusage(syscall.RUSAGE_CHILDREN, &rusageAfter); err != nil {
+		return nil, fmt.Errorf("getting final rusage: %v", err)
+	}
+
+	return func(exitCode int) error {
+		elapsedSysTime := time.Duration(rusageAfter.Stime.Nano()-rusageBefore.Stime.Nano()) * time.Nanosecond
+		elapsedUserTime := time.Duration(rusageAfter.Utime.Nano()-rusageBefore.Utime.Nano()) * time.Nanosecond
+		// Note: We assume that the compiler takes more heap than any other
+		// subcommands that we might have executed before.
+		maxMemUsed := rusageAfter.Maxrss
+		absCompilerPath := getAbsCmdPath(env, compilerCmd)
+
+		// We need to temporarily set umask to 0 to ensure 777 permissions are actually 777
+		// This effects builderbots in particular
+		oldMask := syscall.Umask(0)
+		defer syscall.Umask(oldMask)
+
+		// We want to know what package is being compiled. The working directory gives us a good clue.
+		cwd, err := os.Getwd()
+		if err != nil {
+			return wrapErrorwithSourceLocf(err, "error getting working directory for rusage log")
+		}
+
+		if err := os.MkdirAll(filepath.Dir(logFileName), 0777); err != nil {
+			return wrapErrorwithSourceLocf(err, "error creating rusage log directory %s", logFileName)
+		}
+
+		timeUnit := float64(time.Second)
+
+		logEntry := rusageLog{
+			ExitCode:         exitCode,
+			ElapsedRealTime:  float64(elapsedRealTime) / timeUnit,
+			ElapsedUserTime:  float64(elapsedUserTime) / timeUnit,
+			ElapsedSysTime:   float64(elapsedSysTime) / timeUnit,
+			MaxMemUsed:       maxMemUsed,
+			Compiler:         absCompilerPath,
+			CompilerArgs:     compilerCmd.Args,
+			WorkingDirectory: cwd,
+		}
+
+		// Note: using file mode 0666 so that a root-created log is writable by others.
+		logFile, err := os.OpenFile(logFileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666)
+		if err != nil {
+			return wrapErrorwithSourceLocf(err, "creating rusage logfile %s", logFileName)
+		}
+
+		// O_APPEND's atomicity guarantees are only for writes up to a certain size. If we don't
+		// lock the file, we might end up with corrupted records.
+		//
+		// Note that Close()'ing the file releases all associated locks.
+		if err := lockFileExclusive(logFile.Fd()); err != nil {
+			_ = logFile.Close()
+			return wrapErrorwithSourceLocf(err, "locking rusage logfile %s: %v", logFileName, err)
+		}
+
+		if err := json.NewEncoder(logFile).Encode(logEntry); err != nil {
+			_ = logFile.Close()
+			return wrapErrorwithSourceLocf(err, "converting rusage logfile entry to JSON %v", logEntry)
+		}
+
+		closeErr := logFile.Close()
+		if err != nil {
+			return wrapErrorwithSourceLocf(err, "writing to rusage logfile %s: %v", logFileName, err)
+		}
+		if closeErr != nil {
+			return wrapErrorwithSourceLocf(err, "closing rusage logfile %s: %v", logFileName, closeErr)
+		}
+
+		return nil
+	}, nil
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/sanitizer_flags.go b/sys-devel/gcc-bin/files/compiler_wrapper/sanitizer_flags.go
new file mode 100644
index 0000000..fe8d150
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/sanitizer_flags.go
@@ -0,0 +1,58 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"strings"
+)
+
+func processSanitizerFlags(builder *commandBuilder) {
+	hasCoverageFlags := false
+	hasSanitizeFlags := false
+	hasSanitizeFuzzerFlags := false
+	for _, arg := range builder.args {
+		// TODO: This should probably be -fsanitize= to not match on
+		// e.g. -fsanitize-blacklist
+		if arg.fromUser {
+			if strings.HasPrefix(arg.value, "-fsanitize") {
+				hasSanitizeFlags = true
+				if strings.Contains(arg.value, "fuzzer") {
+					hasSanitizeFuzzerFlags = true
+				}
+			} else if arg.value == "-fprofile-instr-generate" {
+				hasCoverageFlags = true
+			}
+		}
+	}
+	if hasSanitizeFlags {
+		// Flags not supported by sanitizers (ASan etc.)
+		unsupportedSanitizerFlags := map[string]bool{
+			"-D_FORTIFY_SOURCE=1": true,
+			"-D_FORTIFY_SOURCE=2": true,
+			"-Wl,--no-undefined":  true,
+			"-Wl,-z,defs":         true,
+		}
+
+		builder.transformArgs(func(arg builderArg) string {
+			// TODO: This is a bug in the old wrapper to not filter
+			// non user args for gcc. Fix this once we don't compare to the old wrapper anymore.
+			if (builder.target.compilerType != gccType || arg.fromUser) &&
+				unsupportedSanitizerFlags[arg.value] {
+				return ""
+			}
+			return arg.value
+		})
+		if builder.target.compilerType == clangType {
+			// hasSanitizeFlags && hasCoverageFlags is to work around crbug.com/1013622
+			if hasSanitizeFuzzerFlags || (hasSanitizeFlags && hasCoverageFlags) {
+				fuzzerFlagsToAdd := []string{
+					// TODO: This flag should be removed once fuzzer works with new pass manager
+					"-fno-experimental-new-pass-manager",
+				}
+				builder.addPreUserArgs(fuzzerFlagsToAdd...)
+			}
+		}
+	}
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/stackprotector_flags.go b/sys-devel/gcc-bin/files/compiler_wrapper/stackprotector_flags.go
new file mode 100644
index 0000000..2460572
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/stackprotector_flags.go
@@ -0,0 +1,29 @@
+// Copyright 2019 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.
+
+package main
+
+func processStackProtectorFlags(builder *commandBuilder) {
+	fstackMap := map[string]bool{"-D__KERNEL__": true, "-fno-stack-protector": true, "-nodefaultlibs": true,
+		"-nostdlib": true}
+
+	fstack := false
+	if builder.target.abi != "eabi" {
+		for _, arg := range builder.args {
+			if arg.fromUser && fstackMap[arg.value] {
+				fstack = true
+				break
+			}
+		}
+	}
+	if fstack {
+		builder.addPreUserArgs("-fno-stack-protector")
+		builder.transformArgs(func(arg builderArg) string {
+			if !arg.fromUser && arg.value == "-fstack-protector-strong" {
+				return ""
+			}
+			return arg.value
+		})
+	}
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/sysroot_flag.go b/sys-devel/gcc-bin/files/compiler_wrapper/sysroot_flag.go
new file mode 100644
index 0000000..501fb20
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/sysroot_flag.go
@@ -0,0 +1,31 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"path/filepath"
+	"strings"
+)
+
+func processSysrootFlag(builder *commandBuilder) {
+	fromUser := false
+	for _, arg := range builder.args {
+		if arg.fromUser && strings.HasPrefix(arg.value, "--sysroot=") {
+			fromUser = true
+			break
+		}
+	}
+	sysroot, syrootPresent := builder.env.getenv("SYSROOT")
+	if syrootPresent {
+		builder.updateEnv("SYSROOT=")
+	}
+	if sysroot == "" {
+		// Use the bundled sysroot by default.
+		sysroot = filepath.Join(builder.rootPath, "usr", builder.target.target)
+	}
+	if !fromUser {
+		builder.addPreUserArgs("--sysroot=" + sysroot)
+	}
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/thumb_flags.go b/sys-devel/gcc-bin/files/compiler_wrapper/thumb_flags.go
new file mode 100644
index 0000000..0edaf4f
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/thumb_flags.go
@@ -0,0 +1,27 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"strings"
+)
+
+func processThumbCodeFlags(builder *commandBuilder) {
+	arch := builder.target.arch
+	if builder.target.abi != "eabi" && (strings.HasPrefix(arch, "armv7") || strings.HasPrefix(arch, "armv8")) {
+		// ARM32 specfic:
+		// 1. Generate thumb codes by default.  GCC is configured with
+		//    --with-mode=thumb and defaults to thumb mode already.  This
+		//    changes the default behavior of clang and doesn't affect GCC.
+		// 2. Do not force frame pointers on ARM32 (https://crbug.com/693137).
+		builder.addPreUserArgs("-mthumb")
+		builder.transformArgs(func(arg builderArg) string {
+			if !arg.fromUser && arg.value == "-fno-omit-frame-pointer" {
+				return ""
+			}
+			return arg.value
+		})
+	}
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/unsupported_flags.go b/sys-devel/gcc-bin/files/compiler_wrapper/unsupported_flags.go
new file mode 100644
index 0000000..48fee2f
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/unsupported_flags.go
@@ -0,0 +1,14 @@
+// Copyright 2019 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.
+
+package main
+
+func checkUnsupportedFlags(cmd *command) error {
+	for _, arg := range cmd.Args {
+		if arg == "-fstack-check" {
+			return newUserErrorf(`option %q is not supported; crbug/485492`, arg)
+		}
+	}
+	return nil
+}
diff --git a/sys-devel/gcc-bin/files/compiler_wrapper/x64_flags.go b/sys-devel/gcc-bin/files/compiler_wrapper/x64_flags.go
new file mode 100644
index 0000000..40505cf
--- /dev/null
+++ b/sys-devel/gcc-bin/files/compiler_wrapper/x64_flags.go
@@ -0,0 +1,21 @@
+// Copyright 2019 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.
+
+package main
+
+import (
+	"strings"
+)
+
+func processX86Flags(builder *commandBuilder) {
+	arch := builder.target.arch
+	if strings.HasPrefix(arch, "x86_64") || startswithI86(arch) {
+		builder.addPostUserArgs("-mno-movbe")
+	}
+}
+
+// Returns true if s starts with i.86.
+func startswithI86(s string) bool {
+	return len(s) >= 4 && s[0] == 'i' && s[2:4] == "86"
+}
diff --git a/sys-devel/gcc-bin/gcc-bin-4.9.2-r1.ebuild b/sys-devel/gcc-bin/gcc-bin-4.9.2-r2.ebuild
similarity index 100%
rename from sys-devel/gcc-bin/gcc-bin-4.9.2-r1.ebuild
rename to sys-devel/gcc-bin/gcc-bin-4.9.2-r2.ebuild
diff --git a/sys-devel/gcc-bin/gcc-bin-4.9.2.ebuild b/sys-devel/gcc-bin/gcc-bin-4.9.2.ebuild
index 0427dcb..425d6a6 100644
--- a/sys-devel/gcc-bin/gcc-bin-4.9.2.ebuild
+++ b/sys-devel/gcc-bin/gcc-bin-4.9.2.ebuild
@@ -75,6 +75,14 @@
 				fi
 			fi
 		done
+		# Rebuild the compiler wrapper with a workaround to avoid 512 errors.
+		cd "${WORKDIR}/${abi}/usr/x86_64-pc-linux-gnu/${abi}/gcc-bin/4.9.x" || die
+		rm -f sysroot_wrapper.hardened* || die
+		"${FILESDIR}/compiler_wrapper/build.py" --config=cros.hardened \
+			--use_ccache=false \
+			--use_llvm_next=false \
+			--output_file=sysroot_wrapper.hardened.ccache || die
+
 	done
 }
 
diff --git a/sys-devel/gcc/Manifest b/sys-devel/gcc/Manifest
new file mode 100644
index 0000000..2837d68
--- /dev/null
+++ b/sys-devel/gcc/Manifest
@@ -0,0 +1,2 @@
+DIST gcc-10.2.0.tar.xz 75004144 BLAKE2B 1d79397330354e61439283cac96a109bf78ffc726265442e6d3ec131f107589ab7349d6612836edd8c8512f7bcc1d901a65a0d5d925d28a5bf3ef5cc3f9787ee SHA512 42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e
+DIST gcc-10.2.0-patches-6.tar.bz2 24103 BLAKE2B f719012f86136ad9c4ea1397548caca6e69687534599a88cc25fe0e4f83dd7fd34c07375fa6e612e2b430e078c1a59913160cce07312e94fa1ce575a33e5457b SHA512 61d97dba29024c7a22806689ebf33f5cb9ce099230bcc344f2865b976c3fdfd8ebec5962eaffd0156de75eca58499ba785867bd4a4ac92c6f799ab1bee8844a1
diff --git a/sys-devel/gcc/files/0001-Fix-emutls.c-to-not-leak-pthread-keys.patch b/sys-devel/gcc/files/0001-Fix-emutls.c-to-not-leak-pthread-keys.patch
new file mode 100644
index 0000000..d4ae492
--- /dev/null
+++ b/sys-devel/gcc/files/0001-Fix-emutls.c-to-not-leak-pthread-keys.patch
@@ -0,0 +1,45 @@
+From 31540ba1e058a8bb43080c8174cff12906d0a1d1 Mon Sep 17 00:00:00 2001
+From: Caroline Tice <cmtice@google.com>
+Date: Fri, 19 Jan 2018 11:35:09 -0800
+Subject: [PATCH] Fix emutls.c to not leak pthread keys.
+
+[Adrian Ratiu: forward port to GCC 10.2.0]
+
+Bug:b/71814577
+Test:Built toolchain w/change and successfully tested building both platform and kernel images with new toolchain for marlin (pixel) device.
+Change-Id: Ia0c6944ce1d78b5bd57d65f705a3f7a59c944202
+---
+ libgcc/emutls.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/libgcc/emutls.c b/libgcc/emutls.c
+index f8012f6d8d5..9d23fb7c1f5 100644
+--- a/libgcc/emutls.c
++++ b/libgcc/emutls.c
+@@ -60,6 +60,7 @@ static __gthread_mutex_t emutls_mutex = __GTHREAD_MUTEX_INIT;
+ static __gthread_mutex_t emutls_mutex;
+ #endif
+ static __gthread_key_t emutls_key;
++static int emutls_key_created = 0;
+ static pointer emutls_size;
+ 
+ static void
+@@ -86,6 +87,15 @@ emutls_init (void)
+ #endif
+   if (__gthread_key_create (&emutls_key, emutls_destroy) != 0)
+     abort ();
++  emutls_key_created = 1;
++}
++
++__attribute__((destructor))
++static void
++unregister_emutls_key (void)
++{
++  if (emutls_key_created)
++    __gthread_key_delete (emutls_key);
+ }
+ #endif
+ 
+-- 
+2.30.0
+
diff --git a/sys-devel/gcc/files/90_all_gcc-4.7-x32.patch b/sys-devel/gcc/files/90_all_gcc-4.7-x32.patch
deleted file mode 100644
index 1ad008a..0000000
--- a/sys-devel/gcc/files/90_all_gcc-4.7-x32.patch
+++ /dev/null
@@ -1,2892 +0,0 @@
-git diff 6bd686c1cc586e318a520b1b3b09732bf7c915f0^...74e1f4df1f44b2249061b7770e4020b2abdb3877
-         (remotes/origin/gcc-4_7-branch)             (remotes/origin/hjl/x32/gcc-4_7-branch)
-
-then filtered out useless configure & ChangeLog files
-
---- a/boehm-gc/configure
-+++ b/boehm-gc/configure
-@@ -6786,7 +6786,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/boehm-gc/include/private/gcconfig.h
-+++ b/boehm-gc/include/private/gcconfig.h
-@@ -1974,8 +1974,13 @@
- 
- # ifdef X86_64
- #   define MACH_TYPE "X86_64"
--#   define ALIGNMENT 8
--#   define CPP_WORDSZ 64
-+#   ifdef __ILP32__
-+#     define ALIGNMENT 4
-+#     define CPP_WORDSZ 32
-+#   else
-+#     define ALIGNMENT 8
-+#     define CPP_WORDSZ 64
-+#   endif
- #   ifndef HBLKSIZE
- #     define HBLKSIZE 4096
- #   endif
---- a/gcc/ada/gcc-interface/Makefile.in
-+++ b/gcc/ada/gcc-interface/Makefile.in
-@@ -350,6 +350,10 @@ GNATMAKE_OBJS = a-except.o ali.o ali-util.o aspects.o s-casuti.o alloc.o \
- ifeq ($(strip $(filter-out %x86_64, $(arch))),)
-   ifeq ($(strip $(MULTISUBDIR)),/32)
-     arch:=i686
-+  else
-+    ifeq ($(strip $(MULTISUBDIR)),/x32)
-+      arch:=x32
-+    endif
-   endif
- endif
- 
-@@ -2132,6 +2136,43 @@ ifeq ($(strip $(filter-out %x86_64 linux%,$(arch) $(osys))),)
-   LIBRARY_VERSION := $(LIB_VERSION)
- endif
- 
-+ifeq ($(strip $(filter-out %x32 linux%,$(arch) $(osys))),)
-+  LIBGNAT_TARGET_PAIRS = \
-+  a-exetim.adb<a-exetim-posix.adb \
-+  a-exetim.ads<a-exetim-default.ads \
-+  a-intnam.ads<a-intnam-linux.ads \
-+  a-synbar.adb<a-synbar-posix.adb \
-+  a-synbar.ads<a-synbar-posix.ads \
-+  s-inmaop.adb<s-inmaop-posix.adb \
-+  s-intman.adb<s-intman-posix.adb \
-+  s-linux.ads<s-linux.ads \
-+  s-mudido.adb<s-mudido-affinity.adb \
-+  s-osinte.ads<s-osinte-linux.ads \
-+  s-osinte.adb<s-osinte-posix.adb \
-+  s-osprim.adb<s-osprim-posix.adb \
-+  s-taprop.adb<s-taprop-linux.adb \
-+  s-tasinf.ads<s-tasinf-linux.ads \
-+  s-tasinf.adb<s-tasinf-linux.adb \
-+  s-tpopsp.adb<s-tpopsp-tls.adb \
-+  s-taspri.ads<s-taspri-posix.ads \
-+  g-sercom.adb<g-sercom-linux.adb \
-+  $(ATOMICS_TARGET_PAIRS) \
-+  $(X86_64_TARGET_PAIRS) \
-+  system.ads<system-linux-x86.ads
-+
-+  TOOLS_TARGET_PAIRS =  \
-+    mlib-tgt-specific.adb<mlib-tgt-specific-linux.adb \
-+    indepsw.adb<indepsw-gnu.adb
-+
-+  EXTRA_GNATRTL_NONTASKING_OBJS=g-sse.o g-ssvety.o
-+  EXTRA_GNATRTL_TASKING_OBJS=s-linux.o a-exetim.o
-+  EH_MECHANISM=-gcc
-+  THREADSLIB=-lpthread -lrt
-+  GNATLIB_SHARED=gnatlib-shared-dual
-+  GMEM_LIB = gmemlib
-+  LIBRARY_VERSION := $(LIB_VERSION)
-+endif
-+
- ifeq ($(strip $(filter-out darwin%,$(osys))),)
-   SO_OPTS = -shared-libgcc
-   LIBGNAT_TARGET_PAIRS = \
---- a/gcc/ada/init.c
-+++ b/gcc/ada/init.c
-@@ -615,9 +615,13 @@ __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED, void *ucontext)
-   if (signo == SIGSEGV && pc && *pc == 0x00240c83)
-     mcontext->gregs[REG_ESP] += 4096 + 4 * sizeof (unsigned long);
- #elif defined (__x86_64__)
--  unsigned long *pc = (unsigned long *)mcontext->gregs[REG_RIP];
--  /* The pattern is "orq $0x0,(%rsp)" for a probe in 64-bit mode.  */
--  if (signo == SIGSEGV && pc && (*pc & 0xffffffffff) == 0x00240c8348)
-+  unsigned long long *pc = (unsigned long long *)mcontext->gregs[REG_RIP];
-+  if (signo == SIGSEGV && pc
-+      /* The pattern is "orq $0x0,(%rsp)" for a probe in 64-bit mode.  */
-+      && ((*pc & 0xffffffffffLL) == 0x00240c8348LL
-+	  /* The pattern may also be "orl $0x0,(%esp)" for a probe in
-+	     x32 mode.  */
-+	  || (*pc & 0xffffffffLL) == 0x00240c83LL))
-     mcontext->gregs[REG_RSP] += 4096 + 4 * sizeof (unsigned long);
- #elif defined (__ia64__)
-   /* ??? The IA-64 unwinder doesn't compensate for signals.  */
---- a/gcc/ada/link.c
-+++ b/gcc/ada/link.c
-@@ -165,7 +165,11 @@ unsigned char __gnat_objlist_file_supported = 1;
- const char *__gnat_object_library_extension = ".a";
- unsigned char __gnat_separate_run_path_options = 0;
- #if defined (__x86_64)
-+# if defined (__LP64__)
- const char *__gnat_default_libgcc_subdir = "lib64";
-+# else
-+const char *__gnat_default_libgcc_subdir = "libx32";
-+# endif
- #else
- const char *__gnat_default_libgcc_subdir = "lib";
- #endif
---- a/gcc/config.gcc
-+++ b/gcc/config.gcc
-@@ -494,6 +494,10 @@ fi
- 
- case ${target} in
- i[34567]86-*-*)
-+	if test "x$with_abi" != x; then
-+		echo "This target does not support --with-abi."
-+		exit 1
-+	fi
- 	if test "x$enable_cld" = xyes; then
- 		tm_defines="${tm_defines} USE_IX86_CLD=1"
- 	fi
-@@ -503,7 +507,24 @@ i[34567]86-*-*)
- 	tm_file="vxworks-dummy.h ${tm_file}"
- 	;;
- x86_64-*-*)
--	tm_file="i386/biarch64.h ${tm_file}"
-+	case ${with_abi} in
-+	"")
-+		if test "x$with_multilib_list" = xmx32; then
-+			tm_file="i386/biarchx32.h ${tm_file}"
-+		else
-+			tm_file="i386/biarch64.h ${tm_file}"
-+		fi
-+		;;
-+	64 | m64)
-+		tm_file="i386/biarch64.h ${tm_file}"
-+		;;
-+	x32 | mx32)
-+		tm_file="i386/biarchx32.h ${tm_file}"
-+		;;
-+	*)
-+		echo "Unknown ABI used in --with-abi=$with_abi"
-+		exit 1
-+	esac
- 	if test "x$enable_cld" = xyes; then
- 		tm_defines="${tm_defines} USE_IX86_CLD=1"
- 	fi
-@@ -1318,7 +1339,14 @@ x86_64-*-linux* | x86_64-*-kfreebsd*-gnu | x86_64-*-knetbsd*-gnu)
- 	tmake_file="${tmake_file} i386/t-linux64"
- 	x86_multilibs="${with_multilib_list}"
- 	if test "$x86_multilibs" = "default"; then
--		x86_multilibs="m64,m32"
-+		case ${with_abi} in
-+		x32 | mx32)
-+			x86_multilibs="mx32"
-+			;;
-+		*)
-+			x86_multilibs="m64,m32"
-+			;;
-+		esac
- 	fi
- 	x86_multilibs=`echo $x86_multilibs | sed -e 's/,/ /g'`
- 	for x86_multilib in ${x86_multilibs}; do
-@@ -3227,7 +3255,7 @@ case "${target}" in
- 		;;
- 
- 	i[34567]86-*-* | x86_64-*-*)
--		supported_defaults="arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
-+		supported_defaults="abi arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64"
- 		for which in arch arch_32 arch_64 cpu cpu_32 cpu_64 tune tune_32 tune_64; do
- 			eval "val=\$with_$which"
- 			case ${val} in
---- a/gcc/config/arm/arm.opt
-+++ b/gcc/config/arm/arm.opt
-@@ -59,7 +59,7 @@ Target Report Mask(ABORT_NORETURN)
- Generate a call to abort if a noreturn function returns
- 
- mapcs
--Target RejectNegative Mask(APCS_FRAME) MaskExists Undocumented
-+Target RejectNegative Mask(APCS_FRAME) Undocumented
- 
- mapcs-float
- Target Report Mask(APCS_FLOAT)
---- a/gcc/config/cris/linux.opt
-+++ b/gcc/config/cris/linux.opt
-@@ -23,7 +23,7 @@ mlinux
- Target Report RejectNegative Undocumented
- 
- mno-gotplt
--Target Report RejectNegative Mask(AVOID_GOTPLT) MaskExists
-+Target Report RejectNegative Mask(AVOID_GOTPLT)
- Together with -fpic and -fPIC, do not use GOTPLT references
- 
- ; There's a small added setup cost with using GOTPLT references
---- a/gcc/config/host-linux.c
-+++ b/gcc/config/host-linux.c
-@@ -68,8 +68,10 @@
- # define TRY_EMPTY_VM_SPACE	0x10000000000
- #elif defined(__ia64)
- # define TRY_EMPTY_VM_SPACE	0x2000000100000000
--#elif defined(__x86_64)
-+#elif defined(__x86_64) && defined(__LP64__)
- # define TRY_EMPTY_VM_SPACE	0x1000000000
-+#elif defined(__x86_64)
-+# define TRY_EMPTY_VM_SPACE	0x60000000
- #elif defined(__i386)
- # define TRY_EMPTY_VM_SPACE	0x60000000
- #elif defined(__powerpc__)
---- a/gcc/config/i386/biarch64.h
-+++ b/gcc/config/i386/biarch64.h
-@@ -25,5 +25,5 @@ a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
- <http://www.gnu.org/licenses/>.  */
- 
--#define TARGET_64BIT_DEFAULT OPTION_MASK_ISA_64BIT
-+#define TARGET_64BIT_DEFAULT (OPTION_MASK_ISA_64BIT | OPTION_MASK_ABI_64)
- #define TARGET_BI_ARCH 1
---- /dev/null
-+++ b/gcc/config/i386/biarchx32.h
-@@ -0,0 +1,28 @@
-+/* Make configure files to produce biarch compiler defaulting to x32 mode.
-+   This file must be included very first, while the OS specific file later
-+   to overwrite otherwise wrong defaults.
-+   Copyright (C) 2012 Free Software Foundation, Inc.
-+
-+This file is part of GCC.
-+
-+GCC is free software; you can redistribute it and/or modify
-+it under the terms of the GNU General Public License as published by
-+the Free Software Foundation; either version 3, or (at your option)
-+any later version.
-+
-+GCC is distributed in the hope that it will be useful,
-+but WITHOUT ANY WARRANTY; without even the implied warranty of
-+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+GNU General Public License for more details.
-+
-+Under Section 7 of GPL version 3, you are granted additional
-+permissions described in the GCC Runtime Library Exception, version
-+3.1, as published by the Free Software Foundation.
-+
-+You should have received a copy of the GNU General Public License and
-+a copy of the GCC Runtime Library Exception along with this program;
-+see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-+<http://www.gnu.org/licenses/>.  */
-+
-+#define TARGET_64BIT_DEFAULT (OPTION_MASK_ISA_64BIT | OPTION_MASK_ABI_X32)
-+#define TARGET_BI_ARCH 2
---- a/gcc/config/i386/constraints.md
-+++ b/gcc/config/i386/constraints.md
-@@ -18,7 +18,7 @@
- ;; <http://www.gnu.org/licenses/>.
- 
- ;;; Unused letters:
--;;;     B     H           T  W
-+;;;     B     H           T
- ;;;           h jk          v
- 
- ;; Integer register constraints.
-@@ -188,6 +188,16 @@
-    instructions)."
-   (match_operand 0 "x86_64_immediate_operand"))
- 
-+;; We use W prefix to denote any number of
-+;; constant-or-symbol-reference constraints
-+
-+(define_constraint "Wz"
-+  "32-bit unsigned integer constant, or a symbolic reference known
-+   to fit that range (for zero-extending conversion operations that
-+   require non-VOIDmode immediate operands)."
-+  (and (match_operand 0 "x86_64_zext_immediate_operand")
-+       (match_test "GET_MODE (op) != VOIDmode")))
-+
- (define_constraint "Z"
-   "32-bit unsigned integer constant, or a symbolic reference known
-    to fit that range (for immediate operands in zero-extending x86-64
---- a/gcc/config/i386/gnu-user64.h
-+++ b/gcc/config/i386/gnu-user64.h
-@@ -58,8 +58,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
- 
- #if TARGET_64BIT_DEFAULT
- #define SPEC_32 "m32"
-+#if TARGET_BI_ARCH == 2
-+#define SPEC_64 "m64"
-+#define SPEC_X32 "m32|m64:;"
-+#else
- #define SPEC_64 "m32|mx32:;"
- #define SPEC_X32 "mx32"
-+#endif
- #else
- #define SPEC_32 "m64|mx32:;"
- #define SPEC_64 "m64"
-@@ -95,7 +100,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
-    %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
- 
- #if TARGET_64BIT_DEFAULT
-+#if TARGET_BI_ARCH == 2
-+#define MULTILIB_DEFAULTS { "mx32" }
-+#else
- #define MULTILIB_DEFAULTS { "m64" }
-+#endif
- #else
- #define MULTILIB_DEFAULTS { "m32" }
- #endif
-@@ -126,3 +135,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
- #define TARGET_THREAD_SPLIT_STACK_OFFSET \
-   (TARGET_64BIT ? (TARGET_X32 ? 0x40 : 0x70) : 0x30)
- #endif
-+
-+#undef WCHAR_TYPE
-+#define WCHAR_TYPE (TARGET_LP64 ? "int" : "long int")
---- a/gcc/config/i386/i386-opts.h
-+++ b/gcc/config/i386/i386-opts.h
-@@ -71,6 +71,11 @@ enum cmodel {
-   CM_LARGE_PIC	/* No assumptions.  */
- };
- 
-+enum pmode {
-+  PMODE_SI,	/* Pmode == SImode. */
-+  PMODE_DI 	/* Pmode == DImode. */
-+};
-+
- enum asm_dialect {
-   ASM_ATT,
-   ASM_INTEL
---- a/gcc/config/i386/i386.c
-+++ b/gcc/config/i386/i386.c
-@@ -2448,6 +2448,8 @@ static rtx (*ix86_gen_andsp) (rtx, rtx, rtx);
- static rtx (*ix86_gen_allocate_stack_worker) (rtx, rtx);
- static rtx (*ix86_gen_adjust_stack_and_probe) (rtx, rtx, rtx);
- static rtx (*ix86_gen_probe_stack_range) (rtx, rtx, rtx);
-+static rtx (*ix86_gen_tls_global_dynamic_64) (rtx, rtx, rtx);
-+static rtx (*ix86_gen_tls_local_dynamic_base_64) (rtx, rtx);
- 
- /* Preferred alignment for stack boundary in bits.  */
- unsigned int ix86_preferred_stack_boundary;
-@@ -2658,7 +2660,6 @@ ix86_target_string (HOST_WIDE_INT isa, int flags, const char *arch,
-      preceding options while match those first.  */
-   static struct ix86_target_opts isa_opts[] =
-   {
--    { "-m64",		OPTION_MASK_ISA_64BIT },
-     { "-mfma4",		OPTION_MASK_ISA_FMA4 },
-     { "-mfma",		OPTION_MASK_ISA_FMA },
-     { "-mxop",		OPTION_MASK_ISA_XOP },
-@@ -2730,6 +2731,7 @@ ix86_target_string (HOST_WIDE_INT isa, int flags, const char *arch,
-   size_t len;
-   size_t line_len;
-   size_t sep_len;
-+  const char *abi;
- 
-   memset (opts, '\0', sizeof (opts));
- 
-@@ -2747,6 +2749,21 @@ ix86_target_string (HOST_WIDE_INT isa, int flags, const char *arch,
-       opts[num++][1] = tune;
-     }
- 
-+  /* Add -m32/-m64/-mx32.  */
-+  if ((isa & OPTION_MASK_ISA_64BIT) != 0)
-+    {
-+      if ((isa & OPTION_MASK_ABI_64) != 0)
-+	abi = "-m64";
-+      else
-+	abi = "-mx32";
-+      isa &= ~ (OPTION_MASK_ISA_64BIT
-+		| OPTION_MASK_ABI_64
-+		| OPTION_MASK_ABI_X32);
-+    }
-+  else
-+    abi = "-m32";
-+  opts[num++][0] = abi;
-+
-   /* Pick out the options in isa options.  */
-   for (i = 0; i < ARRAY_SIZE (isa_opts); i++)
-     {
-@@ -3095,6 +3112,46 @@ ix86_option_override_internal (bool main_args_p)
-       sw = "attribute";
-     }
- 
-+  /* Turn off both OPTION_MASK_ABI_64 and OPTION_MASK_ABI_X32 if
-+     TARGET_64BIT_DEFAULT is true and TARGET_64BIT is false.  */
-+  if (TARGET_64BIT_DEFAULT && !TARGET_64BIT)
-+    ix86_isa_flags &= ~(OPTION_MASK_ABI_64 | OPTION_MASK_ABI_X32);
-+#ifdef TARGET_BI_ARCH
-+  else
-+    {
-+#if TARGET_BI_ARCH == 1
-+      /* When TARGET_BI_ARCH == 1, by default, OPTION_MASK_ABI_64
-+	 is on and OPTION_MASK_ABI_X32 is off.  We turn off
-+	 OPTION_MASK_ABI_64 if OPTION_MASK_ABI_X32 is turned on by
-+	 -mx32.  */
-+      if (TARGET_X32)
-+	ix86_isa_flags &= ~OPTION_MASK_ABI_64;
-+#else
-+      /* When TARGET_BI_ARCH == 2, by default, OPTION_MASK_ABI_X32 is
-+	 on and OPTION_MASK_ABI_64 is off.  We turn off
-+	 OPTION_MASK_ABI_X32 if OPTION_MASK_ABI_64 is turned on by
-+	 -m64.  */
-+      if (TARGET_LP64)
-+	ix86_isa_flags &= ~OPTION_MASK_ABI_X32;
-+#endif
-+    }
-+#endif
-+
-+  if (TARGET_X32)
-+    {
-+      /* Always turn on OPTION_MASK_ISA_64BIT and turn off
-+	 OPTION_MASK_ABI_64 for TARGET_X32.  */
-+      ix86_isa_flags |= OPTION_MASK_ISA_64BIT;
-+      ix86_isa_flags &= ~OPTION_MASK_ABI_64;
-+    }
-+  else if (TARGET_LP64)
-+    {
-+      /* Always turn on OPTION_MASK_ISA_64BIT and turn off
-+	 OPTION_MASK_ABI_X32 for TARGET_LP64.  */
-+      ix86_isa_flags |= OPTION_MASK_ISA_64BIT;
-+      ix86_isa_flags &= ~OPTION_MASK_ABI_X32;
-+    }
-+
- #ifdef SUBTARGET_OVERRIDE_OPTIONS
-   SUBTARGET_OVERRIDE_OPTIONS;
- #endif
-@@ -3103,9 +3160,6 @@ ix86_option_override_internal (bool main_args_p)
-   SUBSUBTARGET_OVERRIDE_OPTIONS;
- #endif
- 
--  if (TARGET_X32)
--    ix86_isa_flags |= OPTION_MASK_ISA_64BIT;
--
-   /* -fPIC is the default for x86_64.  */
-   if (TARGET_MACHO && TARGET_64BIT)
-     flag_pic = 2;
-@@ -3174,6 +3228,17 @@ ix86_option_override_internal (bool main_args_p)
-   else
-     ix86_arch_specified = 1;
- 
-+  if (global_options_set.x_ix86_pmode)
-+    {
-+      if ((TARGET_LP64 && ix86_pmode == PMODE_SI)
-+	   || (!TARGET_64BIT && ix86_pmode == PMODE_DI))
-+	error ("address mode %qs not supported in the %s bit mode",
-+	       TARGET_64BIT ? "short" : "long",
-+	       TARGET_64BIT ? "64" : "32");
-+    }
-+  else
-+    ix86_pmode = TARGET_LP64 ? PMODE_DI : PMODE_SI;
-+
-   if (!global_options_set.x_ix86_abi)
-     ix86_abi = DEFAULT_ABI;
- 
-@@ -3587,7 +3652,7 @@ ix86_option_override_internal (bool main_args_p)
-   ix86_preferred_stack_boundary = PREFERRED_STACK_BOUNDARY_DEFAULT;
-   if (global_options_set.x_ix86_preferred_stack_boundary_arg)
-     {
--      int min = (TARGET_64BIT ? 4 : 2);
-+      int min = (TARGET_64BIT ? (TARGET_SSE ? 4 : 3) : 2);
-       int max = (TARGET_SEH ? 4 : 12);
- 
-       if (ix86_preferred_stack_boundary_arg < min
-@@ -3750,11 +3815,33 @@ ix86_option_override_internal (bool main_args_p)
-   if (TARGET_64BIT)
-     {
-       ix86_gen_leave = gen_leave_rex64;
-+      if (Pmode == DImode)
-+	{
-+	  ix86_gen_monitor = gen_sse3_monitor64_di;
-+	  ix86_gen_tls_global_dynamic_64 = gen_tls_global_dynamic_64_di;
-+	  ix86_gen_tls_local_dynamic_base_64
-+	    = gen_tls_local_dynamic_base_64_di;
-+	}
-+      else
-+	{
-+	  ix86_gen_monitor = gen_sse3_monitor64_si;
-+	  ix86_gen_tls_global_dynamic_64 = gen_tls_global_dynamic_64_si;
-+	  ix86_gen_tls_local_dynamic_base_64
-+	    = gen_tls_local_dynamic_base_64_si;
-+	}
-+    }
-+  else
-+    {
-+      ix86_gen_leave = gen_leave;
-+      ix86_gen_monitor = gen_sse3_monitor;
-+    }
-+
-+  if (Pmode == DImode)
-+    {
-       ix86_gen_add3 = gen_adddi3;
-       ix86_gen_sub3 = gen_subdi3;
-       ix86_gen_sub3_carry = gen_subdi3_carry;
-       ix86_gen_one_cmpl2 = gen_one_cmpldi2;
--      ix86_gen_monitor = gen_sse3_monitor64;
-       ix86_gen_andsp = gen_anddi3;
-       ix86_gen_allocate_stack_worker = gen_allocate_stack_worker_probe_di;
-       ix86_gen_adjust_stack_and_probe = gen_adjust_stack_and_probedi;
-@@ -3762,12 +3849,10 @@ ix86_option_override_internal (bool main_args_p)
-     }
-   else
-     {
--      ix86_gen_leave = gen_leave;
-       ix86_gen_add3 = gen_addsi3;
-       ix86_gen_sub3 = gen_subsi3;
-       ix86_gen_sub3_carry = gen_subsi3_carry;
-       ix86_gen_one_cmpl2 = gen_one_cmplsi2;
--      ix86_gen_monitor = gen_sse3_monitor;
-       ix86_gen_andsp = gen_andsi3;
-       ix86_gen_allocate_stack_worker = gen_allocate_stack_worker_probe_si;
-       ix86_gen_adjust_stack_and_probe = gen_adjust_stack_and_probesi;
-@@ -7227,8 +7312,8 @@ function_value_64 (enum machine_mode orig_mode, enum machine_mode mode,
-     }
-   else if (POINTER_TYPE_P (valtype))
-     {
--      /* Pointers are always returned in Pmode. */
--      mode = Pmode;
-+      /* Pointers are always returned in word_mode.  */
-+      mode = word_mode;
-     }
- 
-   ret = construct_container (mode, orig_mode, valtype, 1,
-@@ -7299,7 +7384,8 @@ ix86_function_value (const_tree valtype, const_tree fntype_or_decl,
-   return ix86_function_value_1 (valtype, fntype_or_decl, orig_mode, mode);
- }
- 
--/* Pointer function arguments and return values are promoted to Pmode.  */
-+/* Pointer function arguments and return values are promoted to
-+   word_mode.  */
- 
- static enum machine_mode
- ix86_promote_function_mode (const_tree type, enum machine_mode mode,
-@@ -7309,7 +7395,7 @@ ix86_promote_function_mode (const_tree type, enum machine_mode mode,
-   if (type != NULL_TREE && POINTER_TYPE_P (type))
-     {
-       *punsignedp = POINTERS_EXTEND_UNSIGNED;
--      return Pmode;
-+      return word_mode;
-     }
-   return default_promote_function_mode (type, mode, punsignedp, fntype,
- 					for_return);
-@@ -7587,12 +7673,13 @@ setup_incoming_varargs_64 (CUMULATIVE_ARGS *cum)
- 
-   for (i = cum->regno; i < max; i++)
-     {
--      mem = gen_rtx_MEM (Pmode,
-+      mem = gen_rtx_MEM (word_mode,
- 			 plus_constant (save_area, i * UNITS_PER_WORD));
-       MEM_NOTRAP_P (mem) = 1;
-       set_mem_alias_set (mem, set);
--      emit_move_insn (mem, gen_rtx_REG (Pmode,
--					x86_64_int_parameter_registers[i]));
-+      emit_move_insn (mem,
-+		      gen_rtx_REG (word_mode,
-+				   x86_64_int_parameter_registers[i]));
-     }
- 
-   if (ix86_varargs_fpr_size)
-@@ -8652,8 +8739,11 @@ gen_push (rtx arg)
-     m->fs.cfa_offset += UNITS_PER_WORD;
-   m->fs.sp_offset += UNITS_PER_WORD;
- 
-+  if (REG_P (arg) && GET_MODE (arg) != word_mode)
-+    arg = gen_rtx_REG (word_mode, REGNO (arg));
-+
-   return gen_rtx_SET (VOIDmode,
--		      gen_rtx_MEM (Pmode,
-+		      gen_rtx_MEM (word_mode,
- 				   gen_rtx_PRE_DEC (Pmode,
- 						    stack_pointer_rtx)),
- 		      arg);
-@@ -8664,9 +8754,12 @@ gen_push (rtx arg)
- static rtx
- gen_pop (rtx arg)
- {
-+  if (REG_P (arg) && GET_MODE (arg) != word_mode)
-+    arg = gen_rtx_REG (word_mode, REGNO (arg));
-+
-   return gen_rtx_SET (VOIDmode,
- 		      arg,
--		      gen_rtx_MEM (Pmode,
-+		      gen_rtx_MEM (word_mode,
- 				   gen_rtx_POST_INC (Pmode,
- 						     stack_pointer_rtx)));
- }
-@@ -9141,7 +9234,7 @@ ix86_emit_save_regs (void)
-   for (regno = FIRST_PSEUDO_REGISTER - 1; regno-- > 0; )
-     if (!SSE_REGNO_P (regno) && ix86_save_reg (regno, true))
-       {
--	insn = emit_insn (gen_push (gen_rtx_REG (Pmode, regno)));
-+	insn = emit_insn (gen_push (gen_rtx_REG (word_mode, regno)));
- 	RTX_FRAME_RELATED_P (insn) = 1;
-       }
- }
-@@ -9221,7 +9314,7 @@ ix86_emit_save_regs_using_mov (HOST_WIDE_INT cfa_offset)
-   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-     if (!SSE_REGNO_P (regno) && ix86_save_reg (regno, true))
-       {
--        ix86_emit_save_reg_using_mov (Pmode, regno, cfa_offset);
-+        ix86_emit_save_reg_using_mov (word_mode, regno, cfa_offset);
- 	cfa_offset -= UNITS_PER_WORD;
-       }
- }
-@@ -9296,7 +9389,7 @@ pro_epilogue_adjust_stack (rtx dest, rtx src, rtx offset,
-   rtx insn;
-   bool add_frame_related_expr = false;
- 
--  if (! TARGET_64BIT)
-+  if (Pmode == SImode)
-     insn = gen_pro_epilogue_adjust_stack_si_add (dest, src, offset);
-   else if (x86_64_immediate_operand (offset, DImode))
-     insn = gen_pro_epilogue_adjust_stack_di_add (dest, src, offset);
-@@ -10159,7 +10252,7 @@ ix86_expand_prologue (void)
- 	 to implement macro RETURN_ADDR_RTX and intrinsic function
- 	 expand_builtin_return_addr etc.  */
-       t = plus_constant (crtl->drap_reg, -UNITS_PER_WORD);
--      t = gen_frame_mem (Pmode, t);
-+      t = gen_frame_mem (word_mode, t);
-       insn = emit_insn (gen_push (t));
-       RTX_FRAME_RELATED_P (insn) = 1;
- 
-@@ -10364,7 +10457,7 @@ ix86_expand_prologue (void)
-       emit_insn (ix86_gen_allocate_stack_worker (eax, eax));
- 
-       /* Use the fact that AX still contains ALLOCATE.  */
--      adjust_stack_insn = (TARGET_64BIT
-+      adjust_stack_insn = (Pmode == DImode
- 			   ? gen_pro_epilogue_adjust_stack_di_sub
- 			   : gen_pro_epilogue_adjust_stack_si_sub);
- 
-@@ -10389,14 +10482,18 @@ ix86_expand_prologue (void)
-       if (r10_live && eax_live)
-         {
- 	  t = choose_baseaddr (m->fs.sp_offset - allocate);
--	  emit_move_insn (r10, gen_frame_mem (Pmode, t));
-+	  emit_move_insn (gen_rtx_REG (word_mode, R10_REG),
-+			  gen_frame_mem (word_mode, t));
- 	  t = choose_baseaddr (m->fs.sp_offset - allocate - UNITS_PER_WORD);
--	  emit_move_insn (eax, gen_frame_mem (Pmode, t));
-+	  emit_move_insn (gen_rtx_REG (word_mode, AX_REG),
-+			  gen_frame_mem (word_mode, t));
- 	}
-       else if (eax_live || r10_live)
- 	{
- 	  t = choose_baseaddr (m->fs.sp_offset - allocate);
--	  emit_move_insn ((eax_live ? eax : r10), gen_frame_mem (Pmode, t));
-+	  emit_move_insn (gen_rtx_REG (word_mode,
-+				       (eax_live ? AX_REG : R10_REG)),
-+			  gen_frame_mem (word_mode, t));
- 	}
-     }
-   gcc_assert (m->fs.sp_offset == frame.stack_pointer_offset);
-@@ -10566,7 +10663,7 @@ ix86_emit_restore_regs_using_pop (void)
- 
-   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-     if (!SSE_REGNO_P (regno) && ix86_save_reg (regno, false))
--      ix86_emit_restore_reg_using_pop (gen_rtx_REG (Pmode, regno));
-+      ix86_emit_restore_reg_using_pop (gen_rtx_REG (word_mode, regno));
- }
- 
- /* Emit code and notes for the LEAVE instruction.  */
-@@ -10609,11 +10706,11 @@ ix86_emit_restore_regs_using_mov (HOST_WIDE_INT cfa_offset,
-   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-     if (!SSE_REGNO_P (regno) && ix86_save_reg (regno, maybe_eh_return))
-       {
--	rtx reg = gen_rtx_REG (Pmode, regno);
-+	rtx reg = gen_rtx_REG (word_mode, regno);
- 	rtx insn, mem;
- 
- 	mem = choose_baseaddr (cfa_offset);
--	mem = gen_frame_mem (Pmode, mem);
-+	mem = gen_frame_mem (word_mode, mem);
- 	insn = emit_move_insn (reg, mem);
- 
-         if (m->fs.cfa_reg == crtl->drap_reg && regno == REGNO (crtl->drap_reg))
-@@ -11223,8 +11320,8 @@ ix86_expand_split_stack_prologue (void)
- 	{
- 	  rtx rax;
- 
--	  rax = gen_rtx_REG (Pmode, AX_REG);
--	  emit_move_insn (rax, reg10);
-+	  rax = gen_rtx_REG (word_mode, AX_REG);
-+	  emit_move_insn (rax, gen_rtx_REG (word_mode, R10_REG));
- 	  use_reg (&call_fusage, rax);
- 	}
- 
-@@ -11303,8 +11400,8 @@ ix86_expand_split_stack_prologue (void)
-   /* If we are in 64-bit mode and this function uses a static chain,
-      we saved %r10 in %rax before calling _morestack.  */
-   if (TARGET_64BIT && DECL_STATIC_CHAIN (cfun->decl))
--    emit_move_insn (gen_rtx_REG (Pmode, R10_REG),
--		    gen_rtx_REG (Pmode, AX_REG));
-+    emit_move_insn (gen_rtx_REG (word_mode, R10_REG),
-+		    gen_rtx_REG (word_mode, AX_REG));
- 
-   /* If this function calls va_start, we need to store a pointer to
-      the arguments on the old stack, because they may not have been
-@@ -11522,6 +11619,12 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
- 	      scale = 1 << scale;
- 	      break;
- 
-+	    case ZERO_EXTEND:
-+	      op = XEXP (op, 0);
-+	      if (GET_CODE (op) != UNSPEC)
-+		return 0;
-+	      /* FALLTHRU */
-+
- 	    case UNSPEC:
- 	      if (XINT (op, 1) == UNSPEC_TP
- 	          && TARGET_TLS_DIRECT_SEG_REFS
-@@ -11604,6 +11707,12 @@ ix86_decompose_address (rtx addr, struct ix86_address *out)
- 	return 0;
-     }
- 
-+/* Address override works only on the (%reg) part of %fs:(%reg).  */
-+  if (seg != SEG_DEFAULT
-+      && ((base && GET_MODE (base) != word_mode)
-+	  || (index && GET_MODE (index) != word_mode)))
-+    return 0;
-+
-   /* Extract the integral value of scale.  */
-   if (scale_rtx)
-     {
-@@ -12549,15 +12658,20 @@ legitimize_pic_address (rtx orig, rtx reg)
- /* Load the thread pointer.  If TO_REG is true, force it into a register.  */
- 
- static rtx
--get_thread_pointer (bool to_reg)
-+get_thread_pointer (enum machine_mode tp_mode, bool to_reg)
- {
-   rtx tp = gen_rtx_UNSPEC (ptr_mode, gen_rtvec (1, const0_rtx), UNSPEC_TP);
- 
--  if (GET_MODE (tp) != Pmode)
--    tp = convert_to_mode (Pmode, tp, 1);
-+  if (GET_MODE (tp) != tp_mode)
-+    {
-+      gcc_assert (GET_MODE (tp) == SImode);
-+      gcc_assert (tp_mode == DImode);
-+
-+      tp = gen_rtx_ZERO_EXTEND (tp_mode, tp);
-+    }
- 
-   if (to_reg)
--    tp = copy_addr_to_reg (tp);
-+    tp = copy_to_mode_reg (tp_mode, tp);
- 
-   return tp;
- }
-@@ -12609,6 +12723,7 @@ legitimize_tls_address (rtx x, enum tls_model model, bool for_mov)
- {
-   rtx dest, base, off;
-   rtx pic = NULL_RTX, tp = NULL_RTX;
-+  enum machine_mode tp_mode = Pmode;
-   int type;
- 
-   switch (model)
-@@ -12634,7 +12749,7 @@ legitimize_tls_address (rtx x, enum tls_model model, bool for_mov)
- 	  else
- 	    emit_insn (gen_tls_dynamic_gnu2_32 (dest, x, pic));
- 
--	  tp = get_thread_pointer (true);
-+	  tp = get_thread_pointer (Pmode, true);
- 	  dest = force_reg (Pmode, gen_rtx_PLUS (Pmode, tp, dest));
- 
- 	  set_unique_reg_note (get_last_insn (), REG_EQUAL, x);
-@@ -12648,7 +12763,8 @@ legitimize_tls_address (rtx x, enum tls_model model, bool for_mov)
- 	      rtx rax = gen_rtx_REG (Pmode, AX_REG), insns;
- 
- 	      start_sequence ();
--	      emit_call_insn (gen_tls_global_dynamic_64 (rax, x, caddr));
-+	      emit_call_insn (ix86_gen_tls_global_dynamic_64 (rax, x,
-+							      caddr));
- 	      insns = get_insns ();
- 	      end_sequence ();
- 
-@@ -12683,7 +12799,7 @@ legitimize_tls_address (rtx x, enum tls_model model, bool for_mov)
- 	  else
- 	    emit_insn (gen_tls_dynamic_gnu2_32 (base, tmp, pic));
- 
--	  tp = get_thread_pointer (true);
-+	  tp = get_thread_pointer (Pmode, true);
- 	  set_unique_reg_note (get_last_insn (), REG_EQUAL,
- 			       gen_rtx_MINUS (Pmode, tmp, tp));
- 	}
-@@ -12696,7 +12812,8 @@ legitimize_tls_address (rtx x, enum tls_model model, bool for_mov)
- 	      rtx rax = gen_rtx_REG (Pmode, AX_REG), insns, eqv;
- 
- 	      start_sequence ();
--	      emit_call_insn (gen_tls_local_dynamic_base_64 (rax, caddr));
-+	      emit_call_insn (ix86_gen_tls_local_dynamic_base_64 (rax,
-+								  caddr));
- 	      insns = get_insns ();
- 	      end_sequence ();
- 
-@@ -12739,6 +12856,9 @@ legitimize_tls_address (rtx x, enum tls_model model, bool for_mov)
- 	      return dest;
- 	    }
- 
-+	  /* Generate DImode references to avoid %fs:(%reg32)
-+	     problems and linker IE->LE relaxation bug.  */
-+	  tp_mode = DImode;
- 	  pic = NULL;
- 	  type = UNSPEC_GOTNTPOFF;
- 	}
-@@ -12761,22 +12881,23 @@ legitimize_tls_address (rtx x, enum tls_model model, bool for_mov)
- 	  type = UNSPEC_INDNTPOFF;
- 	}
- 
--      off = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, x), type);
--      off = gen_rtx_CONST (Pmode, off);
-+      off = gen_rtx_UNSPEC (tp_mode, gen_rtvec (1, x), type);
-+      off = gen_rtx_CONST (tp_mode, off);
-       if (pic)
--	off = gen_rtx_PLUS (Pmode, pic, off);
--      off = gen_const_mem (Pmode, off);
-+	off = gen_rtx_PLUS (tp_mode, pic, off);
-+      off = gen_const_mem (tp_mode, off);
-       set_mem_alias_set (off, ix86_GOT_alias_set ());
- 
-       if (TARGET_64BIT || TARGET_ANY_GNU_TLS)
- 	{
--          base = get_thread_pointer (for_mov || !TARGET_TLS_DIRECT_SEG_REFS);
--	  off = force_reg (Pmode, off);
--	  return gen_rtx_PLUS (Pmode, base, off);
-+	  base = get_thread_pointer (tp_mode,
-+				     for_mov || !TARGET_TLS_DIRECT_SEG_REFS);
-+	  off = force_reg (tp_mode, off);
-+	  return gen_rtx_PLUS (tp_mode, base, off);
- 	}
-       else
- 	{
--	  base = get_thread_pointer (true);
-+	  base = get_thread_pointer (Pmode, true);
- 	  dest = gen_reg_rtx (Pmode);
- 	  emit_insn (gen_subsi3 (dest, base, off));
- 	}
-@@ -12790,12 +12911,13 @@ legitimize_tls_address (rtx x, enum tls_model model, bool for_mov)
- 
-       if (TARGET_64BIT || TARGET_ANY_GNU_TLS)
- 	{
--	  base = get_thread_pointer (for_mov || !TARGET_TLS_DIRECT_SEG_REFS);
-+	  base = get_thread_pointer (Pmode,
-+				     for_mov || !TARGET_TLS_DIRECT_SEG_REFS);
- 	  return gen_rtx_PLUS (Pmode, base, off);
- 	}
-       else
- 	{
--	  base = get_thread_pointer (true);
-+	  base = get_thread_pointer (Pmode, true);
- 	  dest = gen_reg_rtx (Pmode);
- 	  emit_insn (gen_subsi3 (dest, base, off));
- 	}
-@@ -13875,6 +13997,7 @@ get_some_local_dynamic_name (void)
-    ; -- print a semicolon (after prefixes due to bug in older gas).
-    ~ -- print "i" if TARGET_AVX2, "f" otherwise.
-    @ -- print a segment register of thread base pointer load
-+   ^ -- print addr32 prefix if TARGET_64BIT and Pmode != word_mode
-  */
- 
- void
-@@ -14385,6 +14508,11 @@ ix86_print_operand (FILE *file, rtx x, int code)
- 	  putc (TARGET_AVX2 ? 'i' : 'f', file);
- 	  return;
- 
-+	case '^':
-+	  if (TARGET_64BIT && Pmode != word_mode)
-+	    fputs ("addr32 ", file);
-+	  return;
-+
- 	default:
- 	    output_operand_lossage ("invalid operand code '%c'", code);
- 	}
-@@ -14524,8 +14652,8 @@ ix86_print_operand (FILE *file, rtx x, int code)
- static bool
- ix86_print_operand_punct_valid_p (unsigned char code)
- {
--  return (code == '@' || code == '*' || code == '+'
--	  || code == '&' || code == ';' || code == '~');
-+  return (code == '@' || code == '*' || code == '+' || code == '&'
-+	  || code == ';' || code == '~' || code == '^');
- }
- 
- /* Print a memory operand whose address is ADDR.  */
-@@ -20428,7 +20556,7 @@ ix86_split_to_parts (rtx operand, rtx *parts, enum machine_mode mode)
-       gcc_assert (ok);
- 
-       operand = copy_rtx (operand);
--      PUT_MODE (operand, Pmode);
-+      PUT_MODE (operand, word_mode);
-       parts[0] = parts[1] = parts[2] = parts[3] = operand;
-       return size;
-     }
-@@ -20581,7 +20709,7 @@ ix86_split_long_move (rtx operands[])
-       if (push_operand (operands[0], VOIDmode))
- 	{
- 	  operands[0] = copy_rtx (operands[0]);
--	  PUT_MODE (operands[0], Pmode);
-+	  PUT_MODE (operands[0], word_mode);
- 	}
-       else
-         operands[0] = gen_lowpart (DImode, operands[0]);
-@@ -21136,14 +21264,9 @@ ix86_adjust_counter (rtx countreg, HOST_WIDE_INT value)
- rtx
- ix86_zero_extend_to_Pmode (rtx exp)
- {
--  rtx r;
--  if (GET_MODE (exp) == VOIDmode)
--    return force_reg (Pmode, exp);
--  if (GET_MODE (exp) == Pmode)
--    return copy_to_mode_reg (Pmode, exp);
--  r = gen_reg_rtx (Pmode);
--  emit_insn (gen_zero_extendsidi2 (r, exp));
--  return r;
-+  if (GET_MODE (exp) != Pmode)
-+    exp = convert_to_mode (Pmode, exp, 1);
-+  return force_reg (Pmode, exp);
- }
- 
- /* Divide COUNTREG by SCALE.  */
-@@ -22171,11 +22294,11 @@ ix86_expand_movmem (rtx dst, rtx src, rtx count_exp, rtx align_exp,
-       gcc_unreachable ();
-     case loop:
-       need_zero_guard = true;
--      size_needed = GET_MODE_SIZE (Pmode);
-+      size_needed = GET_MODE_SIZE (word_mode);
-       break;
-     case unrolled_loop:
-       need_zero_guard = true;
--      size_needed = GET_MODE_SIZE (Pmode) * (TARGET_64BIT ? 4 : 2);
-+      size_needed = GET_MODE_SIZE (word_mode) * (TARGET_64BIT ? 4 : 2);
-       break;
-     case rep_prefix_8_byte:
-       size_needed = 8;
-@@ -22341,13 +22464,13 @@ ix86_expand_movmem (rtx dst, rtx src, rtx count_exp, rtx align_exp,
-       break;
-     case loop:
-       expand_set_or_movmem_via_loop (dst, src, destreg, srcreg, NULL,
--				     count_exp, Pmode, 1, expected_size);
-+				     count_exp, word_mode, 1, expected_size);
-       break;
-     case unrolled_loop:
-       /* Unroll only by factor of 2 in 32bit mode, since we don't have enough
- 	 registers for 4 temporaries anyway.  */
-       expand_set_or_movmem_via_loop (dst, src, destreg, srcreg, NULL,
--				     count_exp, Pmode, TARGET_64BIT ? 4 : 2,
-+				     count_exp, word_mode, TARGET_64BIT ? 4 : 2,
- 				     expected_size);
-       break;
-     case rep_prefix_8_byte:
-@@ -22559,11 +22682,11 @@ ix86_expand_setmem (rtx dst, rtx count_exp, rtx val_exp, rtx align_exp,
-       gcc_unreachable ();
-     case loop:
-       need_zero_guard = true;
--      size_needed = GET_MODE_SIZE (Pmode);
-+      size_needed = GET_MODE_SIZE (word_mode);
-       break;
-     case unrolled_loop:
-       need_zero_guard = true;
--      size_needed = GET_MODE_SIZE (Pmode) * 4;
-+      size_needed = GET_MODE_SIZE (word_mode) * 4;
-       break;
-     case rep_prefix_8_byte:
-       size_needed = 8;
-@@ -22734,11 +22857,11 @@ ix86_expand_setmem (rtx dst, rtx count_exp, rtx val_exp, rtx align_exp,
-       break;
-     case loop:
-       expand_set_or_movmem_via_loop (dst, NULL, destreg, NULL, promoted_val,
--				     count_exp, Pmode, 1, expected_size);
-+				     count_exp, word_mode, 1, expected_size);
-       break;
-     case unrolled_loop:
-       expand_set_or_movmem_via_loop (dst, NULL, destreg, NULL, promoted_val,
--				     count_exp, Pmode, 4, expected_size);
-+				     count_exp, word_mode, 4, expected_size);
-       break;
-     case rep_prefix_8_byte:
-       expand_setmem_via_rep_stos (dst, destreg, promoted_val, count_exp,
-@@ -23101,13 +23224,13 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx callarg1,
-       && !local_symbolic_operand (XEXP (fnaddr, 0), VOIDmode))
-     fnaddr = gen_rtx_MEM (QImode, construct_plt_address (XEXP (fnaddr, 0)));
-   else if (sibcall
--	   ? !sibcall_insn_operand (XEXP (fnaddr, 0), Pmode)
--	   : !call_insn_operand (XEXP (fnaddr, 0), Pmode))
-+	   ? !sibcall_insn_operand (XEXP (fnaddr, 0), word_mode)
-+	   : !call_insn_operand (XEXP (fnaddr, 0), word_mode))
-     {
-       fnaddr = XEXP (fnaddr, 0);
--      if (GET_MODE (fnaddr) != Pmode)
--	fnaddr = convert_to_mode (Pmode, fnaddr, 1);
--      fnaddr = gen_rtx_MEM (QImode, copy_to_mode_reg (Pmode, fnaddr));
-+      if (GET_MODE (fnaddr) != word_mode)
-+	fnaddr = convert_to_mode (word_mode, fnaddr, 1);
-+      fnaddr = gen_rtx_MEM (QImode, copy_to_mode_reg (word_mode, fnaddr));
-     }
- 
-   vec_len = 0;
-@@ -24421,10 +24544,13 @@ ix86_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
-       /* Load the function address to r11.  Try to load address using
- 	 the shorter movl instead of movabs.  We may want to support
- 	 movq for kernel mode, but kernel does not use trampolines at
--	 the moment.  */
--      if (x86_64_zext_immediate_operand (fnaddr, VOIDmode))
-+	 the moment.  FNADDR is a 32bit address and may not be in
-+	 DImode when ptr_mode == SImode.  Always use movl in this
-+	 case.  */
-+      if (ptr_mode == SImode
-+	  || x86_64_zext_immediate_operand (fnaddr, VOIDmode))
- 	{
--	  fnaddr = copy_to_mode_reg (DImode, fnaddr);
-+	  fnaddr = copy_to_mode_reg (Pmode, fnaddr);
- 
- 	  mem = adjust_address (m_tramp, HImode, offset);
- 	  emit_move_insn (mem, gen_int_mode (0xbb41, HImode));
-@@ -24443,9 +24569,9 @@ ix86_trampoline_init (rtx m_tramp, tree fndecl, rtx chain_value)
- 	  offset += 10;
- 	}
- 
--      /* Load static chain using movabs to r10.  Use the
--	 shorter movl instead of movabs for x32.  */
--      if (TARGET_X32)
-+      /* Load static chain using movabs to r10.  Use the shorter movl
-+         instead of movabs when ptr_mode == SImode.  */
-+      if (ptr_mode == SImode)
- 	{
- 	  opcode = 0xba41;
- 	  size = 6;
-@@ -32082,7 +32208,7 @@ x86_this_parameter (tree function)
-         parm_regs = x86_64_ms_abi_int_parameter_registers;
-       else
-         parm_regs = x86_64_int_parameter_registers;
--      return gen_rtx_REG (DImode, parm_regs[aggr]);
-+      return gen_rtx_REG (Pmode, parm_regs[aggr]);
-     }
- 
-   nregs = ix86_function_regparm (type, function);
---- a/gcc/config/i386/i386.h
-+++ b/gcc/config/i386/i386.h
-@@ -42,7 +42,6 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
- /* Redefines for option macros.  */
- 
- #define TARGET_64BIT	OPTION_ISA_64BIT
--#define TARGET_X32	OPTION_ISA_X32
- #define TARGET_MMX	OPTION_ISA_MMX
- #define TARGET_3DNOW	OPTION_ISA_3DNOW
- #define TARGET_3DNOW_A	OPTION_ISA_3DNOW_A
-@@ -76,7 +75,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
- #define TARGET_RDRND	OPTION_ISA_RDRND
- #define TARGET_F16C	OPTION_ISA_F16C
- 
--#define TARGET_LP64	(TARGET_64BIT && !TARGET_X32)
-+#define TARGET_LP64	OPTION_ABI_64
-+#define TARGET_X32	OPTION_ABI_X32
- 
- /* SSE4.1 defines round instructions */
- #define	OPTION_MASK_ISA_ROUND	OPTION_MASK_ISA_SSE4_1
-@@ -705,7 +705,7 @@ enum target_cpu_default
- #define MAIN_STACK_BOUNDARY (TARGET_64BIT ? 128 : 32)
- 
- /* Minimum stack boundary.  */
--#define MIN_STACK_BOUNDARY (TARGET_64BIT ? 128 : 32)
-+#define MIN_STACK_BOUNDARY (TARGET_64BIT ? (TARGET_SSE ? 128 : 64) : 32)
- 
- /* Boundary (in *bits*) on which the stack pointer prefers to be
-    aligned; the compiler cannot rely on having this alignment.  */
-@@ -1774,7 +1774,7 @@ do {							\
- /* Specify the machine mode that pointers have.
-    After generation of rtl, the compiler makes no further distinction
-    between pointers and any other objects of this machine mode.  */
--#define Pmode (TARGET_64BIT ? DImode : SImode)
-+#define Pmode (ix86_pmode == PMODE_DI ? DImode : SImode)
- 
- /* A C expression whose value is zero if pointers that need to be extended
-    from being `POINTER_SIZE' bits wide to `Pmode' are sign-extended and
---- a/gcc/config/i386/i386.md
-+++ b/gcc/config/i386/i386.md
-@@ -61,7 +61,9 @@
- ;; Y -- print condition for XOP pcom* instruction.
- ;; + -- print a branch hint as 'cs' or 'ds' prefix
- ;; ; -- print a semicolon (after prefixes due to bug in older gas).
-+;; ~ -- print "i" if TARGET_AVX2, "f" otherwise.
- ;; @ -- print a segment register of thread base pointer load
-+;; ^ -- print addr32 prefix if TARGET_64BIT and Pmode != word_mode
- 
- (define_c_enum "unspec" [
-   ;; Relocation specifiers
-@@ -901,6 +903,11 @@
- ;; pointer-sized quantities.  Exactly one of the two alternatives will match.
- (define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
- 
-+;; This mode iterator allows :W to be used for patterns that operate on
-+;; word_mode sized quantities.
-+(define_mode_iterator W
-+  [(SI "word_mode == SImode") (DI "word_mode == DImode")])
-+
- ;; This mode iterator allows :PTR to be used for patterns that operate on
- ;; ptr_mode sized quantities.
- (define_mode_iterator PTR
-@@ -1709,8 +1716,8 @@
-    (set_attr "mode" "SI")])
- 
- (define_insn "*push<mode>2_prologue"
--  [(set (match_operand:P 0 "push_operand" "=<")
--	(match_operand:P 1 "general_no_elim_operand" "r<i>*m"))
-+  [(set (match_operand:W 0 "push_operand" "=<")
-+	(match_operand:W 1 "general_no_elim_operand" "r<i>*m"))
-    (clobber (mem:BLK (scratch)))]
-   ""
-   "push{<imodesuffix>}\t%1"
-@@ -1718,16 +1725,16 @@
-    (set_attr "mode" "<MODE>")])
- 
- (define_insn "*pop<mode>1"
--  [(set (match_operand:P 0 "nonimmediate_operand" "=r*m")
--	(match_operand:P 1 "pop_operand" ">"))]
-+  [(set (match_operand:W 0 "nonimmediate_operand" "=r*m")
-+	(match_operand:W 1 "pop_operand" ">"))]
-   ""
-   "pop{<imodesuffix>}\t%0"
-   [(set_attr "type" "pop")
-    (set_attr "mode" "<MODE>")])
- 
- (define_insn "*pop<mode>1_epilogue"
--  [(set (match_operand:P 0 "nonimmediate_operand" "=r*m")
--	(match_operand:P 1 "pop_operand" ">"))
-+  [(set (match_operand:W 0 "nonimmediate_operand" "=r*m")
-+	(match_operand:W 1 "pop_operand" ">"))
-    (clobber (mem:BLK (scratch)))]
-   ""
-   "pop{<imodesuffix>}\t%0"
-@@ -3399,9 +3406,9 @@
- })
- 
- (define_insn "*zero_extendsidi2_rex64"
--  [(set (match_operand:DI 0 "nonimmediate_operand"  "=r,o,?*Ym,?*y,?*Yi,*x")
-+  [(set (match_operand:DI 0 "nonimmediate_operand"	   "=r  ,o,?*Ym,?*y,?*Yi,*x")
- 	(zero_extend:DI
--	 (match_operand:SI 1 "nonimmediate_operand" "rm,0,r   ,m  ,r   ,m")))]
-+	 (match_operand:SI 1 "x86_64_zext_general_operand" "rmWz,0,r   ,m  ,r   ,m")))]
-   "TARGET_64BIT"
-   "@
-    mov{l}\t{%1, %k0|%k0, %1}
-@@ -11126,10 +11133,15 @@
-    (set_attr "modrm" "0")])
- 
- (define_expand "indirect_jump"
--  [(set (pc) (match_operand 0 "indirect_branch_operand" ""))])
-+  [(set (pc) (match_operand 0 "indirect_branch_operand" ""))]
-+  ""
-+{
-+  if (TARGET_X32)
-+    operands[0] = convert_memory_address (word_mode, operands[0]);
-+})
- 
- (define_insn "*indirect_jump"
--  [(set (pc) (match_operand:P 0 "indirect_branch_operand" "rw"))]
-+  [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rw"))]
-   ""
-   "jmp\t%A0"
-   [(set_attr "type" "ibr")
-@@ -11171,12 +11183,13 @@
-       operands[0] = expand_simple_binop (Pmode, code, op0, op1, NULL_RTX, 0,
- 					 OPTAB_DIRECT);
-     }
--  else if (TARGET_X32)
--    operands[0] = convert_memory_address (Pmode, operands[0]);
-+
-+  if (TARGET_X32)
-+    operands[0] = convert_memory_address (word_mode, operands[0]);
- })
- 
- (define_insn "*tablejump_1"
--  [(set (pc) (match_operand:P 0 "indirect_branch_operand" "rw"))
-+  [(set (pc) (match_operand:W 0 "indirect_branch_operand" "rw"))
-    (use (label_ref (match_operand 1 "" "")))]
-   ""
-   "jmp\t%A0"
-@@ -11264,7 +11277,7 @@
- })
- 
- (define_insn_and_split "*call_vzeroupper"
--  [(call (mem:QI (match_operand:P 0 "call_insn_operand" "<c>zw"))
-+  [(call (mem:QI (match_operand:W 0 "call_insn_operand" "<c>zw"))
- 	 (match_operand 1 "" ""))
-    (unspec [(match_operand 2 "const_int_operand" "")]
-    	   UNSPEC_CALL_NEEDS_VZEROUPPER)]
-@@ -11276,7 +11289,7 @@
-   [(set_attr "type" "call")])
- 
- (define_insn "*call"
--  [(call (mem:QI (match_operand:P 0 "call_insn_operand" "<c>zw"))
-+  [(call (mem:QI (match_operand:W 0 "call_insn_operand" "<c>zw"))
- 	 (match_operand 1 "" ""))]
-   "!SIBLING_CALL_P (insn)"
-   "* return ix86_output_call_insn (insn, operands[0]);"
-@@ -11328,7 +11341,7 @@
-   [(set_attr "type" "call")])
- 
- (define_insn_and_split "*sibcall_vzeroupper"
--  [(call (mem:QI (match_operand:P 0 "sibcall_insn_operand" "Uz"))
-+  [(call (mem:QI (match_operand:W 0 "sibcall_insn_operand" "Uz"))
- 	 (match_operand 1 "" ""))
-    (unspec [(match_operand 2 "const_int_operand" "")]
-    	   UNSPEC_CALL_NEEDS_VZEROUPPER)]
-@@ -11340,7 +11353,7 @@
-   [(set_attr "type" "call")])
- 
- (define_insn "*sibcall"
--  [(call (mem:QI (match_operand:P 0 "sibcall_insn_operand" "Uz"))
-+  [(call (mem:QI (match_operand:W 0 "sibcall_insn_operand" "Uz"))
- 	 (match_operand 1 "" ""))]
-   "SIBLING_CALL_P (insn)"
-   "* return ix86_output_call_insn (insn, operands[0]);"
-@@ -11437,7 +11450,7 @@
- 
- (define_insn_and_split "*call_value_vzeroupper"
-   [(set (match_operand 0 "" "")
--	(call (mem:QI (match_operand:P 1 "call_insn_operand" "<c>zw"))
-+	(call (mem:QI (match_operand:W 1 "call_insn_operand" "<c>zw"))
- 	      (match_operand 2 "" "")))
-    (unspec [(match_operand 3 "const_int_operand" "")]
-    	   UNSPEC_CALL_NEEDS_VZEROUPPER)]
-@@ -11450,7 +11463,7 @@
- 
- (define_insn "*call_value"
-   [(set (match_operand 0 "" "")
--	(call (mem:QI (match_operand:P 1 "call_insn_operand" "<c>zw"))
-+	(call (mem:QI (match_operand:W 1 "call_insn_operand" "<c>zw"))
- 	      (match_operand 2 "" "")))]
-   "!SIBLING_CALL_P (insn)"
-   "* return ix86_output_call_insn (insn, operands[1]);"
-@@ -11458,7 +11471,7 @@
- 
- (define_insn_and_split "*sibcall_value_vzeroupper"
-   [(set (match_operand 0 "" "")
--	(call (mem:QI (match_operand:P 1 "sibcall_insn_operand" "Uz"))
-+	(call (mem:QI (match_operand:W 1 "sibcall_insn_operand" "Uz"))
- 	      (match_operand 2 "" "")))
-    (unspec [(match_operand 3 "const_int_operand" "")]
-    	   UNSPEC_CALL_NEEDS_VZEROUPPER)]
-@@ -11471,7 +11484,7 @@
- 
- (define_insn "*sibcall_value"
-   [(set (match_operand 0 "" "")
--	(call (mem:QI (match_operand:P 1 "sibcall_insn_operand" "Uz"))
-+	(call (mem:QI (match_operand:W 1 "sibcall_insn_operand" "Uz"))
- 	      (match_operand 2 "" "")))]
-   "SIBLING_CALL_P (insn)"
-   "* return ix86_output_call_insn (insn, operands[1]);"
-@@ -12576,7 +12589,7 @@
-   [(set (match_operand:SI 0 "register_operand" "=a")
- 	(unspec:SI
- 	 [(match_operand:SI 1 "register_operand" "b")
--	  (match_operand:SI 2 "tls_symbolic_operand" "")
-+	  (match_operand 2 "tls_symbolic_operand" "")
- 	  (match_operand:SI 3 "constant_call_address_operand" "z")]
- 	 UNSPEC_TLS_GD))
-    (clobber (match_scratch:SI 4 "=d"))
-@@ -12601,20 +12614,20 @@
-   [(parallel
-     [(set (match_operand:SI 0 "register_operand" "")
- 	  (unspec:SI [(match_operand:SI 2 "register_operand" "")
--		      (match_operand:SI 1 "tls_symbolic_operand" "")
-+		      (match_operand 1 "tls_symbolic_operand" "")
- 		      (match_operand:SI 3 "constant_call_address_operand" "")]
- 		     UNSPEC_TLS_GD))
-      (clobber (match_scratch:SI 4 ""))
-      (clobber (match_scratch:SI 5 ""))
-      (clobber (reg:CC FLAGS_REG))])])
- 
--(define_insn "*tls_global_dynamic_64"
--  [(set (match_operand:DI 0 "register_operand" "=a")
--	(call:DI
--	 (mem:QI (match_operand:DI 2 "constant_call_address_operand" "z"))
--	 (match_operand:DI 3 "" "")))
--   (unspec:DI [(match_operand 1 "tls_symbolic_operand" "")]
--	      UNSPEC_TLS_GD)]
-+(define_insn "*tls_global_dynamic_64_<mode>"
-+  [(set (match_operand:P 0 "register_operand" "=a")
-+	(call:P
-+	 (mem:QI (match_operand:P 2 "constant_call_address_operand" "z"))
-+	 (match_operand:P 3 "" "")))
-+   (unspec:P [(match_operand 1 "tls_symbolic_operand" "")]
-+	     UNSPEC_TLS_GD)]
-   "TARGET_64BIT"
- {
-   if (!TARGET_X32)
-@@ -12631,14 +12644,15 @@
-    (set (attr "length")
- 	(symbol_ref "TARGET_X32 ? 15 : 16"))])
- 
--(define_expand "tls_global_dynamic_64"
-+(define_expand "tls_global_dynamic_64_<mode>"
-   [(parallel
--    [(set (match_operand:DI 0 "register_operand" "")
--	  (call:DI
--	   (mem:QI (match_operand:DI 2 "constant_call_address_operand" ""))
-+    [(set (match_operand:P 0 "register_operand" "")
-+	  (call:P
-+	   (mem:QI (match_operand:P 2 "constant_call_address_operand" ""))
- 	   (const_int 0)))
--     (unspec:DI [(match_operand 1 "tls_symbolic_operand" "")]
--		UNSPEC_TLS_GD)])])
-+     (unspec:P [(match_operand 1 "tls_symbolic_operand" "")]
-+	       UNSPEC_TLS_GD)])]
-+  "TARGET_64BIT")
- 
- (define_insn "*tls_local_dynamic_base_32_gnu"
-   [(set (match_operand:SI 0 "register_operand" "=a")
-@@ -12675,12 +12689,12 @@
-       (clobber (match_scratch:SI 4 ""))
-       (clobber (reg:CC FLAGS_REG))])])
- 
--(define_insn "*tls_local_dynamic_base_64"
--  [(set (match_operand:DI 0 "register_operand" "=a")
--	(call:DI
--	 (mem:QI (match_operand:DI 1 "constant_call_address_operand" "z"))
--	 (match_operand:DI 2 "" "")))
--   (unspec:DI [(const_int 0)] UNSPEC_TLS_LD_BASE)]
-+(define_insn "*tls_local_dynamic_base_64_<mode>"
-+  [(set (match_operand:P 0 "register_operand" "=a")
-+	(call:P
-+	 (mem:QI (match_operand:P 1 "constant_call_address_operand" "z"))
-+	 (match_operand:P 2 "" "")))
-+   (unspec:P [(const_int 0)] UNSPEC_TLS_LD_BASE)]
-   "TARGET_64BIT"
- {
-   output_asm_insn
-@@ -12692,13 +12706,14 @@
-   [(set_attr "type" "multi")
-    (set_attr "length" "12")])
- 
--(define_expand "tls_local_dynamic_base_64"
-+(define_expand "tls_local_dynamic_base_64_<mode>"
-   [(parallel
--     [(set (match_operand:DI 0 "register_operand" "")
--	   (call:DI
--	    (mem:QI (match_operand:DI 1 "constant_call_address_operand" ""))
-+     [(set (match_operand:P 0 "register_operand" "")
-+	   (call:P
-+	    (mem:QI (match_operand:P 1 "constant_call_address_operand" ""))
- 	    (const_int 0)))
--      (unspec:DI [(const_int 0)] UNSPEC_TLS_LD_BASE)])])
-+      (unspec:P [(const_int 0)] UNSPEC_TLS_LD_BASE)])]
-+  "TARGET_64BIT")
- 
- ;; Local dynamic of a single variable is a lose.  Show combine how
- ;; to convert that back to global dynamic.
-@@ -12710,7 +12725,7 @@
- 		     (match_operand:SI 2 "constant_call_address_operand" "z")]
- 		    UNSPEC_TLS_LD_BASE)
- 	 (const:SI (unspec:SI
--		    [(match_operand:SI 3 "tls_symbolic_operand" "")]
-+		    [(match_operand 3 "tls_symbolic_operand" "")]
- 		    UNSPEC_DTPOFF))))
-    (clobber (match_scratch:SI 4 "=d"))
-    (clobber (match_scratch:SI 5 "=c"))
-@@ -12808,7 +12823,7 @@
- (define_insn "tls_initial_exec_64_sun"
-   [(set (match_operand:DI 0 "register_operand" "=a")
- 	(unspec:DI
--	 [(match_operand:DI 1 "tls_symbolic_operand" "")]
-+	 [(match_operand 1 "tls_symbolic_operand" "")]
- 	 UNSPEC_TLS_IE_SUN))
-    (clobber (reg:CC FLAGS_REG))]
-   "TARGET_64BIT && TARGET_SUN_TLS"
-@@ -12825,7 +12840,7 @@
-   [(set (match_dup 3)
- 	(plus:SI (match_operand:SI 2 "register_operand" "")
- 		 (const:SI
--		  (unspec:SI [(match_operand:SI 1 "tls_symbolic_operand" "")]
-+		  (unspec:SI [(match_operand 1 "tls_symbolic_operand" "")]
- 			     UNSPEC_TLSDESC))))
-    (parallel
-     [(set (match_operand:SI 0 "register_operand" "")
-@@ -12843,7 +12858,7 @@
-   [(set (match_operand:SI 0 "register_operand" "=r")
- 	(plus:SI (match_operand:SI 1 "register_operand" "b")
- 		 (const:SI
--		  (unspec:SI [(match_operand:SI 2 "tls_symbolic_operand" "")]
-+		  (unspec:SI [(match_operand 2 "tls_symbolic_operand" "")]
- 			      UNSPEC_TLSDESC))))]
-   "!TARGET_64BIT && TARGET_GNU2_TLS"
-   "lea{l}\t{%E2@TLSDESC(%1), %0|%0, %E2@TLSDESC[%1]}"
-@@ -12854,7 +12869,7 @@
- 
- (define_insn "*tls_dynamic_gnu2_call_32"
-   [(set (match_operand:SI 0 "register_operand" "=a")
--	(unspec:SI [(match_operand:SI 1 "tls_symbolic_operand" "")
-+	(unspec:SI [(match_operand 1 "tls_symbolic_operand" "")
- 		    (match_operand:SI 2 "register_operand" "0")
- 		    ;; we have to make sure %ebx still points to the GOT
- 		    (match_operand:SI 3 "register_operand" "b")
-@@ -12870,13 +12885,13 @@
- (define_insn_and_split "*tls_dynamic_gnu2_combine_32"
-   [(set (match_operand:SI 0 "register_operand" "=&a")
- 	(plus:SI
--	 (unspec:SI [(match_operand:SI 3 "tls_modbase_operand" "")
-+	 (unspec:SI [(match_operand 3 "tls_modbase_operand" "")
- 		     (match_operand:SI 4 "" "")
- 		     (match_operand:SI 2 "register_operand" "b")
- 		     (reg:SI SP_REG)]
- 		    UNSPEC_TLSDESC)
- 	 (const:SI (unspec:SI
--		    [(match_operand:SI 1 "tls_symbolic_operand" "")]
-+		    [(match_operand 1 "tls_symbolic_operand" "")]
- 		    UNSPEC_DTPOFF))))
-    (clobber (reg:CC FLAGS_REG))]
-   "!TARGET_64BIT && TARGET_GNU2_TLS"
-@@ -12930,7 +12945,7 @@
- (define_insn_and_split "*tls_dynamic_gnu2_combine_64"
-   [(set (match_operand:DI 0 "register_operand" "=&a")
- 	(plus:DI
--	 (unspec:DI [(match_operand:DI 2 "tls_modbase_operand" "")
-+	 (unspec:DI [(match_operand 2 "tls_modbase_operand" "")
- 		     (match_operand:DI 3 "" "")
- 		     (reg:DI SP_REG)]
- 		    UNSPEC_TLSDESC)
-@@ -15729,17 +15744,17 @@
-   "ix86_current_function_needs_cld = 1;")
- 
- (define_insn "*strmovdi_rex_1"
--  [(set (mem:DI (match_operand:DI 2 "register_operand" "0"))
--	(mem:DI (match_operand:DI 3 "register_operand" "1")))
--   (set (match_operand:DI 0 "register_operand" "=D")
--	(plus:DI (match_dup 2)
--		 (const_int 8)))
--   (set (match_operand:DI 1 "register_operand" "=S")
--	(plus:DI (match_dup 3)
--		 (const_int 8)))]
-+  [(set (mem:DI (match_operand:P 2 "register_operand" "0"))
-+	(mem:DI (match_operand:P 3 "register_operand" "1")))
-+   (set (match_operand:P 0 "register_operand" "=D")
-+	(plus:P (match_dup 2)
-+		(const_int 8)))
-+   (set (match_operand:P 1 "register_operand" "=S")
-+	(plus:P (match_dup 3)
-+		(const_int 8)))]
-   "TARGET_64BIT
-    && !(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
--  "movsq"
-+  "%^movsq"
-   [(set_attr "type" "str")
-    (set_attr "memory" "both")
-    (set_attr "mode" "DI")])
-@@ -15754,7 +15769,7 @@
- 	(plus:P (match_dup 3)
- 		(const_int 4)))]
-   "!(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
--  "movs{l|d}"
-+  "%^movs{l|d}"
-   [(set_attr "type" "str")
-    (set_attr "memory" "both")
-    (set_attr "mode" "SI")])
-@@ -15769,7 +15784,7 @@
- 	(plus:P (match_dup 3)
- 		(const_int 2)))]
-   "!(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
--  "movsw"
-+  "%^movsw"
-   [(set_attr "type" "str")
-    (set_attr "memory" "both")
-    (set_attr "mode" "HI")])
-@@ -15784,7 +15799,7 @@
- 	(plus:P (match_dup 3)
- 		(const_int 1)))]
-   "!(fixed_regs[SI_REG] || fixed_regs[DI_REG])"
--  "movsb"
-+  "%^movsb"
-   [(set_attr "type" "str")
-    (set_attr "memory" "both")
-    (set (attr "prefix_rex")
-@@ -15807,20 +15822,20 @@
-   "ix86_current_function_needs_cld = 1;")
- 
- (define_insn "*rep_movdi_rex64"
--  [(set (match_operand:DI 2 "register_operand" "=c") (const_int 0))
--   (set (match_operand:DI 0 "register_operand" "=D")
--        (plus:DI (ashift:DI (match_operand:DI 5 "register_operand" "2")
--			    (const_int 3))
--		 (match_operand:DI 3 "register_operand" "0")))
--   (set (match_operand:DI 1 "register_operand" "=S")
--        (plus:DI (ashift:DI (match_dup 5) (const_int 3))
--		 (match_operand:DI 4 "register_operand" "1")))
-+  [(set (match_operand:P 2 "register_operand" "=c") (const_int 0))
-+   (set (match_operand:P 0 "register_operand" "=D")
-+        (plus:P (ashift:P (match_operand:P 5 "register_operand" "2")
-+			  (const_int 3))
-+		(match_operand:P 3 "register_operand" "0")))
-+   (set (match_operand:P 1 "register_operand" "=S")
-+        (plus:P (ashift:P (match_dup 5) (const_int 3))
-+		(match_operand:P 4 "register_operand" "1")))
-    (set (mem:BLK (match_dup 3))
- 	(mem:BLK (match_dup 4)))
-    (use (match_dup 5))]
-   "TARGET_64BIT
-    && !(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
--  "rep{%;} movsq"
-+  "%^rep{%;} movsq"
-   [(set_attr "type" "str")
-    (set_attr "prefix_rep" "1")
-    (set_attr "memory" "both")
-@@ -15839,7 +15854,7 @@
- 	(mem:BLK (match_dup 4)))
-    (use (match_dup 5))]
-   "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
--  "rep{%;} movs{l|d}"
-+  "%^rep{%;} movs{l|d}"
-   [(set_attr "type" "str")
-    (set_attr "prefix_rep" "1")
-    (set_attr "memory" "both")
-@@ -15856,7 +15871,7 @@
- 	(mem:BLK (match_dup 4)))
-    (use (match_dup 5))]
-   "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
--  "rep{%;} movsb"
-+  "%^rep{%;} movsb"
-   [(set_attr "type" "str")
-    (set_attr "prefix_rep" "1")
-    (set_attr "memory" "both")
-@@ -15917,14 +15932,14 @@
-   "ix86_current_function_needs_cld = 1;")
- 
- (define_insn "*strsetdi_rex_1"
--  [(set (mem:DI (match_operand:DI 1 "register_operand" "0"))
-+  [(set (mem:DI (match_operand:P 1 "register_operand" "0"))
- 	(match_operand:DI 2 "register_operand" "a"))
--   (set (match_operand:DI 0 "register_operand" "=D")
--	(plus:DI (match_dup 1)
--		 (const_int 8)))]
-+   (set (match_operand:P 0 "register_operand" "=D")
-+	(plus:P (match_dup 1)
-+		(const_int 8)))]
-   "TARGET_64BIT
-    && !(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
--  "stosq"
-+  "%^stosq"
-   [(set_attr "type" "str")
-    (set_attr "memory" "store")
-    (set_attr "mode" "DI")])
-@@ -15936,7 +15951,7 @@
- 	(plus:P (match_dup 1)
- 		(const_int 4)))]
-   "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
--  "stos{l|d}"
-+  "%^stos{l|d}"
-   [(set_attr "type" "str")
-    (set_attr "memory" "store")
-    (set_attr "mode" "SI")])
-@@ -15948,7 +15963,7 @@
- 	(plus:P (match_dup 1)
- 		(const_int 2)))]
-   "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
--  "stosw"
-+  "%^stosw"
-   [(set_attr "type" "str")
-    (set_attr "memory" "store")
-    (set_attr "mode" "HI")])
-@@ -15960,7 +15975,7 @@
- 	(plus:P (match_dup 1)
- 		(const_int 1)))]
-   "!(fixed_regs[AX_REG] || fixed_regs[DI_REG])"
--  "stosb"
-+  "%^stosb"
-   [(set_attr "type" "str")
-    (set_attr "memory" "store")
-    (set (attr "prefix_rex")
-@@ -15981,18 +15996,18 @@
-   "ix86_current_function_needs_cld = 1;")
- 
- (define_insn "*rep_stosdi_rex64"
--  [(set (match_operand:DI 1 "register_operand" "=c") (const_int 0))
--   (set (match_operand:DI 0 "register_operand" "=D")
--        (plus:DI (ashift:DI (match_operand:DI 4 "register_operand" "1")
--			    (const_int 3))
--		 (match_operand:DI 3 "register_operand" "0")))
-+  [(set (match_operand:P 1 "register_operand" "=c") (const_int 0))
-+   (set (match_operand:P 0 "register_operand" "=D")
-+        (plus:P (ashift:P (match_operand:P 4 "register_operand" "1")
-+			  (const_int 3))
-+		 (match_operand:P 3 "register_operand" "0")))
-    (set (mem:BLK (match_dup 3))
- 	(const_int 0))
-    (use (match_operand:DI 2 "register_operand" "a"))
-    (use (match_dup 4))]
-   "TARGET_64BIT
-    && !(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
--  "rep{%;} stosq"
-+  "%^rep{%;} stosq"
-   [(set_attr "type" "str")
-    (set_attr "prefix_rep" "1")
-    (set_attr "memory" "store")
-@@ -16009,7 +16024,7 @@
-    (use (match_operand:SI 2 "register_operand" "a"))
-    (use (match_dup 4))]
-   "!(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
--  "rep{%;} stos{l|d}"
-+  "%^rep{%;} stos{l|d}"
-   [(set_attr "type" "str")
-    (set_attr "prefix_rep" "1")
-    (set_attr "memory" "store")
-@@ -16025,7 +16040,7 @@
-    (use (match_operand:QI 2 "register_operand" "a"))
-    (use (match_dup 4))]
-   "!(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
--  "rep{%;} stosb"
-+  "%^rep{%;} stosb"
-   [(set_attr "type" "str")
-    (set_attr "prefix_rep" "1")
-    (set_attr "memory" "store")
-@@ -16146,7 +16161,7 @@
-    (clobber (match_operand:P 1 "register_operand" "=D"))
-    (clobber (match_operand:P 2 "register_operand" "=c"))]
-   "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
--  "repz{%;} cmpsb"
-+  "%^repz{%;} cmpsb"
-   [(set_attr "type" "str")
-    (set_attr "mode" "QI")
-    (set (attr "prefix_rex")
-@@ -16186,7 +16201,7 @@
-    (clobber (match_operand:P 1 "register_operand" "=D"))
-    (clobber (match_operand:P 2 "register_operand" "=c"))]
-   "!(fixed_regs[CX_REG] || fixed_regs[SI_REG] || fixed_regs[DI_REG])"
--  "repz{%;} cmpsb"
-+  "%^repz{%;} cmpsb"
-   [(set_attr "type" "str")
-    (set_attr "mode" "QI")
-    (set (attr "prefix_rex")
-@@ -16227,7 +16242,7 @@
-    (clobber (match_operand:P 1 "register_operand" "=D"))
-    (clobber (reg:CC FLAGS_REG))]
-   "!(fixed_regs[AX_REG] || fixed_regs[CX_REG] || fixed_regs[DI_REG])"
--  "repnz{%;} scasb"
-+  "%^repnz{%;} scasb"
-   [(set_attr "type" "str")
-    (set_attr "mode" "QI")
-    (set (attr "prefix_rex")
-@@ -17372,131 +17387,131 @@
- ;; alternative when no register is available later.
- 
- (define_peephole2
--  [(match_scratch:P 1 "r")
-+  [(match_scratch:W 1 "r")
-    (parallel [(set (reg:P SP_REG)
- 		   (plus:P (reg:P SP_REG)
- 			   (match_operand:P 0 "const_int_operand" "")))
- 	      (clobber (reg:CC FLAGS_REG))
- 	      (clobber (mem:BLK (scratch)))])]
-   "(TARGET_SINGLE_PUSH || optimize_insn_for_size_p ())
--   && INTVAL (operands[0]) == -GET_MODE_SIZE (Pmode)"
-+   && INTVAL (operands[0]) == -GET_MODE_SIZE (word_mode)"
-   [(clobber (match_dup 1))
--   (parallel [(set (mem:P (pre_dec:P (reg:P SP_REG))) (match_dup 1))
-+   (parallel [(set (mem:W (pre_dec:P (reg:P SP_REG))) (match_dup 1))
- 	      (clobber (mem:BLK (scratch)))])])
- 
- (define_peephole2
--  [(match_scratch:P 1 "r")
-+  [(match_scratch:W 1 "r")
-    (parallel [(set (reg:P SP_REG)
- 		   (plus:P (reg:P SP_REG)
- 			   (match_operand:P 0 "const_int_operand" "")))
- 	      (clobber (reg:CC FLAGS_REG))
- 	      (clobber (mem:BLK (scratch)))])]
-   "(TARGET_DOUBLE_PUSH || optimize_insn_for_size_p ())
--   && INTVAL (operands[0]) == -2*GET_MODE_SIZE (Pmode)"
-+   && INTVAL (operands[0]) == -2*GET_MODE_SIZE (word_mode)"
-   [(clobber (match_dup 1))
--   (set (mem:P (pre_dec:P (reg:P SP_REG))) (match_dup 1))
--   (parallel [(set (mem:P (pre_dec:P (reg:P SP_REG))) (match_dup 1))
-+   (set (mem:W (pre_dec:P (reg:P SP_REG))) (match_dup 1))
-+   (parallel [(set (mem:W (pre_dec:P (reg:P SP_REG))) (match_dup 1))
- 	      (clobber (mem:BLK (scratch)))])])
- 
- ;; Convert esp subtractions to push.
- (define_peephole2
--  [(match_scratch:P 1 "r")
-+  [(match_scratch:W 1 "r")
-    (parallel [(set (reg:P SP_REG)
- 		   (plus:P (reg:P SP_REG)
- 			   (match_operand:P 0 "const_int_operand" "")))
- 	      (clobber (reg:CC FLAGS_REG))])]
-   "(TARGET_SINGLE_PUSH || optimize_insn_for_size_p ())
--   && INTVAL (operands[0]) == -GET_MODE_SIZE (Pmode)"
-+   && INTVAL (operands[0]) == -GET_MODE_SIZE (word_mode)"
-   [(clobber (match_dup 1))
--   (set (mem:P (pre_dec:P (reg:P SP_REG))) (match_dup 1))])
-+   (set (mem:W (pre_dec:P (reg:P SP_REG))) (match_dup 1))])
- 
- (define_peephole2
--  [(match_scratch:P 1 "r")
-+  [(match_scratch:W 1 "r")
-    (parallel [(set (reg:P SP_REG)
- 		   (plus:P (reg:P SP_REG)
- 			   (match_operand:P 0 "const_int_operand" "")))
- 	      (clobber (reg:CC FLAGS_REG))])]
-   "(TARGET_DOUBLE_PUSH || optimize_insn_for_size_p ())
--   && INTVAL (operands[0]) == -2*GET_MODE_SIZE (Pmode)"
-+   && INTVAL (operands[0]) == -2*GET_MODE_SIZE (word_mode)"
-   [(clobber (match_dup 1))
--   (set (mem:P (pre_dec:P (reg:P SP_REG))) (match_dup 1))
--   (set (mem:P (pre_dec:P (reg:P SP_REG))) (match_dup 1))])
-+   (set (mem:W (pre_dec:P (reg:P SP_REG))) (match_dup 1))
-+   (set (mem:W (pre_dec:P (reg:P SP_REG))) (match_dup 1))])
- 
- ;; Convert epilogue deallocator to pop.
- (define_peephole2
--  [(match_scratch:P 1 "r")
-+  [(match_scratch:W 1 "r")
-    (parallel [(set (reg:P SP_REG)
- 		   (plus:P (reg:P SP_REG)
- 			   (match_operand:P 0 "const_int_operand" "")))
- 	      (clobber (reg:CC FLAGS_REG))
- 	      (clobber (mem:BLK (scratch)))])]
-   "(TARGET_SINGLE_POP || optimize_insn_for_size_p ())
--   && INTVAL (operands[0]) == GET_MODE_SIZE (Pmode)"
--  [(parallel [(set (match_dup 1) (mem:P (post_inc:P (reg:P SP_REG))))
-+   && INTVAL (operands[0]) == GET_MODE_SIZE (word_mode)"
-+  [(parallel [(set (match_dup 1) (mem:W (post_inc:P (reg:P SP_REG))))
- 	      (clobber (mem:BLK (scratch)))])])
- 
- ;; Two pops case is tricky, since pop causes dependency
- ;; on destination register.  We use two registers if available.
- (define_peephole2
--  [(match_scratch:P 1 "r")
--   (match_scratch:P 2 "r")
-+  [(match_scratch:W 1 "r")
-+   (match_scratch:W 2 "r")
-    (parallel [(set (reg:P SP_REG)
- 		   (plus:P (reg:P SP_REG)
- 			   (match_operand:P 0 "const_int_operand" "")))
- 	      (clobber (reg:CC FLAGS_REG))
- 	      (clobber (mem:BLK (scratch)))])]
-   "(TARGET_DOUBLE_POP || optimize_insn_for_size_p ())
--   && INTVAL (operands[0]) == 2*GET_MODE_SIZE (Pmode)"
--  [(parallel [(set (match_dup 1) (mem:P (post_inc:P (reg:P SP_REG))))
-+   && INTVAL (operands[0]) == 2*GET_MODE_SIZE (word_mode)"
-+  [(parallel [(set (match_dup 1) (mem:W (post_inc:P (reg:P SP_REG))))
- 	      (clobber (mem:BLK (scratch)))])
--   (set (match_dup 2) (mem:P (post_inc:P (reg:P SP_REG))))])
-+   (set (match_dup 2) (mem:W (post_inc:P (reg:P SP_REG))))])
- 
- (define_peephole2
--  [(match_scratch:P 1 "r")
-+  [(match_scratch:W 1 "r")
-    (parallel [(set (reg:P SP_REG)
- 		   (plus:P (reg:P SP_REG)
- 			   (match_operand:P 0 "const_int_operand" "")))
- 	      (clobber (reg:CC FLAGS_REG))
- 	      (clobber (mem:BLK (scratch)))])]
-   "optimize_insn_for_size_p ()
--   && INTVAL (operands[0]) == 2*GET_MODE_SIZE (Pmode)"
--  [(parallel [(set (match_dup 1) (mem:P (post_inc:P (reg:P SP_REG))))
-+   && INTVAL (operands[0]) == 2*GET_MODE_SIZE (word_mode)"
-+  [(parallel [(set (match_dup 1) (mem:W (post_inc:P (reg:P SP_REG))))
- 	      (clobber (mem:BLK (scratch)))])
--   (set (match_dup 1) (mem:P (post_inc:P (reg:P SP_REG))))])
-+   (set (match_dup 1) (mem:W (post_inc:P (reg:P SP_REG))))])
- 
- ;; Convert esp additions to pop.
- (define_peephole2
--  [(match_scratch:P 1 "r")
-+  [(match_scratch:W 1 "r")
-    (parallel [(set (reg:P SP_REG)
- 		   (plus:P (reg:P SP_REG)
- 			   (match_operand:P 0 "const_int_operand" "")))
- 	      (clobber (reg:CC FLAGS_REG))])]
--  "INTVAL (operands[0]) == GET_MODE_SIZE (Pmode)"
--  [(set (match_dup 1) (mem:P (post_inc:P (reg:P SP_REG))))])
-+  "INTVAL (operands[0]) == GET_MODE_SIZE (word_mode)"
-+  [(set (match_dup 1) (mem:W (post_inc:P (reg:P SP_REG))))])
- 
- ;; Two pops case is tricky, since pop causes dependency
- ;; on destination register.  We use two registers if available.
- (define_peephole2
--  [(match_scratch:P 1 "r")
--   (match_scratch:P 2 "r")
-+  [(match_scratch:W 1 "r")
-+   (match_scratch:W 2 "r")
-    (parallel [(set (reg:P SP_REG)
- 		   (plus:P (reg:P SP_REG)
- 			   (match_operand:P 0 "const_int_operand" "")))
- 	      (clobber (reg:CC FLAGS_REG))])]
--  "INTVAL (operands[0]) == 2*GET_MODE_SIZE (Pmode)"
--  [(set (match_dup 1) (mem:P (post_inc:P (reg:P SP_REG))))
--   (set (match_dup 2) (mem:P (post_inc:P (reg:P SP_REG))))])
-+  "INTVAL (operands[0]) == 2*GET_MODE_SIZE (word_mode)"
-+  [(set (match_dup 1) (mem:W (post_inc:P (reg:P SP_REG))))
-+   (set (match_dup 2) (mem:W (post_inc:P (reg:P SP_REG))))])
- 
- (define_peephole2
--  [(match_scratch:P 1 "r")
-+  [(match_scratch:W 1 "r")
-    (parallel [(set (reg:P SP_REG)
- 		   (plus:P (reg:P SP_REG)
- 			   (match_operand:P 0 "const_int_operand" "")))
- 	      (clobber (reg:CC FLAGS_REG))])]
-   "optimize_insn_for_size_p ()
--   && INTVAL (operands[0]) == 2*GET_MODE_SIZE (Pmode)"
--  [(set (match_dup 1) (mem:P (post_inc:P (reg:P SP_REG))))
--   (set (match_dup 1) (mem:P (post_inc:P (reg:P SP_REG))))])
-+   && INTVAL (operands[0]) == 2*GET_MODE_SIZE (word_mode)"
-+  [(set (match_dup 1) (mem:W (post_inc:P (reg:P SP_REG))))
-+   (set (match_dup 1) (mem:W (post_inc:P (reg:P SP_REG))))])
- 
- ;; Convert compares with 1 to shorter inc/dec operations when CF is not
- ;; required and register dies.  Similarly for 128 to -128.
-@@ -17607,7 +17622,7 @@
- ;;  leal    (%edx,%eax,4), %eax
- 
- (define_peephole2
--  [(match_scratch:P 5 "r")
-+  [(match_scratch:W 5 "r")
-    (parallel [(set (match_operand 0 "register_operand" "")
- 		   (ashift (match_operand 1 "register_operand" "")
- 			   (match_operand 2 "const_int_operand" "")))
-@@ -17633,16 +17648,16 @@
-   enum machine_mode op1mode = GET_MODE (operands[1]);
-   enum machine_mode mode = op1mode == DImode ? DImode : SImode;
-   int scale = 1 << INTVAL (operands[2]);
--  rtx index = gen_lowpart (Pmode, operands[1]);
--  rtx base = gen_lowpart (Pmode, operands[5]);
-+  rtx index = gen_lowpart (word_mode, operands[1]);
-+  rtx base = gen_lowpart (word_mode, operands[5]);
-   rtx dest = gen_lowpart (mode, operands[3]);
- 
--  operands[1] = gen_rtx_PLUS (Pmode, base,
--  			      gen_rtx_MULT (Pmode, index, GEN_INT (scale)));
-+  operands[1] = gen_rtx_PLUS (word_mode, base,
-+			      gen_rtx_MULT (word_mode, index, GEN_INT (scale)));
-   operands[5] = base;
--  if (mode != Pmode)
-+  if (mode != word_mode)
-     operands[1] = gen_rtx_SUBREG (mode, operands[1], 0);
--  if (op1mode != Pmode)
-+  if (op1mode != word_mode)
-     operands[5] = gen_rtx_SUBREG (op1mode, operands[5], 0);
-   operands[0] = dest;
- })
-@@ -18033,7 +18048,7 @@
- {
-   rtx (*insn)(rtx);
- 
--  insn = (TARGET_64BIT
-+  insn = (Pmode == DImode
- 	  ? gen_lwp_slwpcbdi
- 	  : gen_lwp_slwpcbsi);
- 
---- a/gcc/config/i386/i386.opt
-+++ b/gcc/config/i386/i386.opt
-@@ -159,6 +159,20 @@ Enum(cmodel) String(32) Value(CM_32)
- EnumValue
- Enum(cmodel) String(kernel) Value(CM_KERNEL)
- 
-+maddress-mode=
-+Target RejectNegative Joined Enum(pmode) Var(ix86_pmode) Init(PMODE_SI)
-+Use given address mode
-+
-+Enum
-+Name(pmode) Type(enum pmode)
-+Known address mode (for use with the -maddress-mode= option):
-+
-+EnumValue
-+Enum(pmode) String(short) Value(PMODE_SI)
-+
-+EnumValue
-+Enum(pmode) String(long) Value(PMODE_DI)
-+
- mcpu=
- Target RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead)
- 
-@@ -204,7 +218,7 @@ EnumValue
- Enum(fpmath_unit) String(both) Value({(enum fpmath_unit) (FPMATH_SSE | FPMATH_387)})
- 
- mhard-float
--Target RejectNegative Mask(80387) MaskExists Save
-+Target RejectNegative Mask(80387) Save
- Use hardware fp
- 
- mieee-fp
-@@ -411,11 +425,11 @@ Target RejectNegative Negative(m64) Report InverseMask(ISA_64BIT) Var(ix86_isa_f
- Generate 32bit i386 code
- 
- m64
--Target RejectNegative Negative(mx32) Report Mask(ISA_64BIT) Var(ix86_isa_flags) Save
-+Target RejectNegative Negative(mx32) Report Mask(ABI_64) Var(ix86_isa_flags) Save
- Generate 64bit x86-64 code
- 
- mx32
--Target RejectNegative Negative(m32) Report Mask(ISA_X32) Var(ix86_isa_flags) Save
-+Target RejectNegative Negative(m32) Report Mask(ABI_X32) Var(ix86_isa_flags) Save
- Generate 32bit x86-64 code
- 
- mmmx
-@@ -455,11 +469,11 @@ Target Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
- Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
- 
- msse4
--Target RejectNegative Report Mask(ISA_SSE4_2) MaskExists Var(ix86_isa_flags) Save
-+Target RejectNegative Report Mask(ISA_SSE4_2) Var(ix86_isa_flags) Save
- Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 and SSE4.2 built-in functions and code generation
- 
- mno-sse4
--Target RejectNegative Report InverseMask(ISA_SSE4_1) MaskExists Var(ix86_isa_flags) Save
-+Target RejectNegative Report InverseMask(ISA_SSE4_1) Var(ix86_isa_flags) Save
- Do not support SSE4.1 and SSE4.2 built-in functions and code generation
- 
- msse5
---- a/gcc/config/i386/predicates.md
-+++ b/gcc/config/i386/predicates.md
-@@ -341,6 +341,16 @@
-     (match_operand 0 "general_operand")))
- 
- ;; Return true if OP is general operand representable on x86_64
-+;; as zero extended constant.  This predicate is used in zero-extending
-+;; conversion operations that require non-VOIDmode immediate operands.
-+(define_predicate "x86_64_zext_general_operand"
-+  (if_then_else (match_test "TARGET_64BIT")
-+    (ior (match_operand 0 "nonimmediate_operand")
-+	 (and (match_operand 0 "x86_64_zext_immediate_operand")
-+	      (match_test "GET_MODE (op) != VOIDmode")))
-+    (match_operand 0 "general_operand")))
-+
-+;; Return true if OP is general operand representable on x86_64
- ;; as either sign extended or zero extended constant.
- (define_predicate "x86_64_szext_general_operand"
-   (if_then_else (match_test "TARGET_64BIT")
-@@ -483,11 +493,11 @@
-        (match_operand 0 "local_symbolic_operand")))
- 
- ;; Test for various thread-local symbols.
--(define_predicate "tls_symbolic_operand"
-+(define_special_predicate "tls_symbolic_operand"
-   (and (match_code "symbol_ref")
-        (match_test "SYMBOL_REF_TLS_MODEL (op)")))
- 
--(define_predicate "tls_modbase_operand"
-+(define_special_predicate "tls_modbase_operand"
-   (and (match_code "symbol_ref")
-        (match_test "op == ix86_tls_module_base ()")))
- 
-@@ -558,20 +568,23 @@
- 
- ;; Test for a valid operand for indirect branch.
- (define_predicate "indirect_branch_operand"
--  (if_then_else (match_test "TARGET_X32")
--    (match_operand 0 "register_operand")
--    (match_operand 0 "nonimmediate_operand")))
-+  (ior (match_operand 0 "register_operand")
-+       (and (not (match_test "TARGET_X32"))
-+	    (match_operand 0 "memory_operand"))))
- 
- ;; Test for a valid operand for a call instruction.
--(define_predicate "call_insn_operand"
--  (ior (match_operand 0 "constant_call_address_operand")
-+;; Allow constant call address operands in Pmode only.
-+(define_special_predicate "call_insn_operand"
-+  (ior (match_test "constant_call_address_operand
-+		     (op, mode == VOIDmode ? mode : Pmode)")
-        (match_operand 0 "call_register_no_elim_operand")
-        (and (not (match_test "TARGET_X32"))
- 	    (match_operand 0 "memory_operand"))))
- 
- ;; Similarly, but for tail calls, in which we cannot allow memory references.
--(define_predicate "sibcall_insn_operand"
--  (ior (match_operand 0 "constant_call_address_operand")
-+(define_special_predicate "sibcall_insn_operand"
-+  (ior (match_test "constant_call_address_operand
-+		     (op, mode == VOIDmode ? mode : Pmode)")
-        (match_operand 0 "register_no_elim_operand")))
- 
- ;; Match exactly zero.
---- a/gcc/config/i386/sse.md
-+++ b/gcc/config/i386/sse.md
-@@ -8054,8 +8054,8 @@
-   "monitor\t%0, %1, %2"
-   [(set_attr "length" "3")])
- 
--(define_insn "sse3_monitor64"
--  [(unspec_volatile [(match_operand:DI 0 "register_operand" "a")
-+(define_insn "sse3_monitor64_<mode>"
-+  [(unspec_volatile [(match_operand:P 0 "register_operand" "a")
- 		     (match_operand:SI 1 "register_operand" "c")
- 		     (match_operand:SI 2 "register_operand" "d")]
- 		    UNSPECV_MONITOR)]
---- a/gcc/config/m68k/m68k.opt
-+++ b/gcc/config/m68k/m68k.opt
-@@ -136,7 +136,7 @@ Target RejectNegative
- Generate code for a Fido A
- 
- mhard-float
--Target RejectNegative Mask(HARD_FLOAT) MaskExists
-+Target RejectNegative Mask(HARD_FLOAT)
- Generate code which uses hardware floating point instructions
- 
- mid-shared-library
---- a/gcc/config/mep/mep.opt
-+++ b/gcc/config/mep/mep.opt
-@@ -55,7 +55,7 @@ Target Mask(COP)
- Enable MeP Coprocessor
- 
- mcop32
--Target Mask(COP) MaskExists RejectNegative
-+Target Mask(COP) RejectNegative
- Enable MeP Coprocessor with 32-bit registers
- 
- mcop64
---- a/gcc/config/pa/pa-hpux.opt
-+++ b/gcc/config/pa/pa-hpux.opt
-@@ -23,7 +23,7 @@ Variable
- int flag_pa_unix = TARGET_HPUX_11_31 ? 2003 : TARGET_HPUX_11_11 ? 1998 : TARGET_HPUX_10_10 ? 1995 : 1993
- 
- msio
--Target RejectNegative Mask(SIO) MaskExists
-+Target RejectNegative Mask(SIO)
- Generate cpp defines for server IO
- 
- munix=93
---- a/gcc/config/pa/pa64-hpux.opt
-+++ b/gcc/config/pa/pa64-hpux.opt
-@@ -19,7 +19,7 @@
- ; <http://www.gnu.org/licenses/>.
- 
- mgnu-ld
--Target RejectNegative Mask(GNU_LD) MaskExists
-+Target RejectNegative Mask(GNU_LD)
- Assume code will be linked by GNU ld
- 
- mhp-ld
---- a/gcc/config/picochip/picochip.opt
-+++ b/gcc/config/picochip/picochip.opt
-@@ -43,4 +43,4 @@ Target Mask(INEFFICIENT_WARNINGS)
- Generate warnings when inefficient code is known to be generated.
- 
- minefficient
--Target Mask(INEFFICIENT_WARNINGS) MaskExists Undocumented
-+Target Mask(INEFFICIENT_WARNINGS) Undocumented
---- a/gcc/config/rs6000/sysv4.opt
-+++ b/gcc/config/rs6000/sysv4.opt
-@@ -66,7 +66,7 @@ Target Report RejectNegative Mask(LITTLE_ENDIAN)
- Produce little endian code
- 
- mlittle
--Target Report RejectNegative Mask(LITTLE_ENDIAN) MaskExists
-+Target Report RejectNegative Mask(LITTLE_ENDIAN)
- Produce little endian code
- 
- mbig-endian
---- a/gcc/config/sh/sh.opt
-+++ b/gcc/config/sh/sh.opt
-@@ -316,7 +316,7 @@ Target Report RejectNegative Mask(RELAX)
- Shorten address references during linking
- 
- mrenesas
--Target Mask(HITACHI) MaskExists
-+Target Mask(HITACHI)
- Follow Renesas (formerly Hitachi) / SuperH calling conventions
- 
- msoft-atomic
---- a/gcc/config/sparc/long-double-switch.opt
-+++ b/gcc/config/sparc/long-double-switch.opt
-@@ -19,7 +19,7 @@
- ; <http://www.gnu.org/licenses/>.
- 
- mlong-double-128
--Target Report RejectNegative Mask(LONG_DOUBLE_128) MaskExists
-+Target Report RejectNegative Mask(LONG_DOUBLE_128)
- Use 128-bit long double
- 
- mlong-double-64
---- a/gcc/config/sparc/sparc.opt
-+++ b/gcc/config/sparc/sparc.opt
-@@ -30,7 +30,7 @@ Target Report Mask(FPU)
- Use hardware FP
- 
- mhard-float
--Target RejectNegative Mask(FPU) MaskExists
-+Target RejectNegative Mask(FPU)
- Use hardware FP
- 
- msoft-float
---- a/gcc/config/v850/v850.opt
-+++ b/gcc/config/v850/v850.opt
-@@ -102,7 +102,7 @@ Target RejectNegative Mask(V850E1)
- Compile for the v850e1 processor
- 
- mv850es
--Target RejectNegative Mask(V850E1) MaskExists
-+Target RejectNegative Mask(V850E1)
- Compile for the v850es variant of the v850e1
- 
- mv850e2
---- a/gcc/config/vax/vax.opt
-+++ b/gcc/config/vax/vax.opt
-@@ -31,7 +31,7 @@ Target RejectNegative Mask(G_FLOAT)
- Generate GFLOAT double precision code
- 
- mg-float
--Target RejectNegative Mask(G_FLOAT) MaskExists
-+Target RejectNegative Mask(G_FLOAT)
- Generate GFLOAT double precision code
- 
- mgnu
---- a/gcc/configure
-+++ b/gcc/configure
-@@ -13796,7 +13796,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/gcc/doc/invoke.texi
-+++ b/gcc/doc/invoke.texi
-@@ -637,7 +637,7 @@ Objective-C and Objective-C++ Dialects}.
- -mveclibabi=@var{type} -mvect8-ret-in-mem @gol
- -mpc32 -mpc64 -mpc80 -mstackrealign @gol
- -momit-leaf-frame-pointer  -mno-red-zone -mno-tls-direct-seg-refs @gol
---mcmodel=@var{code-model} -mabi=@var{name} @gol
-+-mcmodel=@var{code-model} -mabi=@var{name} -maddress-mode=@var{mode} @gol
- -m32 -m64 -mx32 -mlarge-data-threshold=@var{num} @gol
- -msse2avx -mfentry -m8bit-idiv @gol
- -mavx256-split-unaligned-load -mavx256-split-unaligned-store}
-@@ -13548,6 +13548,12 @@ Attempt to keep the stack boundary aligned to a 2 raised to @var{num}
- byte boundary.  If @option{-mpreferred-stack-boundary} is not specified,
- the default is 4 (16 bytes or 128 bits).
- 
-+@strong{Warning:} When generating code for the x86-64 architecture with
-+SSE extensions disabled, @option{-mpreferred-stack-boundary=3} can be
-+used to keep the stack boundary aligned to 8 byte boundary.  You must
-+build all modules with @option{-mpreferred-stack-boundary=3}, including
-+any libraries.  This includes the system libraries and startup modules.
-+
- @item -mincoming-stack-boundary=@var{num}
- @opindex mincoming-stack-boundary
- Assume the incoming stack is aligned to a 2 raised to @var{num} byte
-@@ -13941,6 +13947,18 @@ be statically or dynamically linked.
- @opindex mcmodel=large
- Generate code for the large model: This model makes no assumptions
- about addresses and sizes of sections.
-+
-+@item -maddress-mode=long
-+@opindex maddress-mode=long
-+Generate code for long address mode.  This is only supported for 64-bit
-+and x32 environments.  It is the default address mode for 64-bit
-+environments.
-+
-+@item -maddress-mode=short
-+@opindex maddress-mode=short
-+Generate code for short address mode.  This is only supported for 32-bit
-+and x32 environments.  It is the default address mode for 32-bit and
-+x32 environments.
- @end table
- 
- @node i386 and x86-64 Windows Options
---- a/gcc/doc/options.texi
-+++ b/gcc/doc/options.texi
-@@ -346,8 +346,6 @@ the value 1 when the option is active and 0 otherwise.  If you use @code{Var}
- to attach the option to a different variable, the associated macros are
- called @code{OPTION_MASK_@var{name}} and @code{OPTION_@var{name}} respectively.
- 
--You can disable automatic bit allocation using @code{MaskExists}.
--
- @item InverseMask(@var{othername})
- @itemx InverseMask(@var{othername}, @var{thisname})
- The option is the inverse of another option that has the
-@@ -355,15 +353,6 @@ The option is the inverse of another option that has the
- the options-processing script will declare a @code{TARGET_@var{thisname}}
- macro that is 1 when the option is active and 0 otherwise.
- 
--@item MaskExists
--The mask specified by the @code{Mask} property already exists.
--No @code{MASK} or @code{TARGET} definitions should be added to
--@file{options.h} in response to this option record.
--
--The main purpose of this property is to support synonymous options.
--The first option should use @samp{Mask(@var{name})} and the others
--should use @samp{Mask(@var{name}) MaskExists}.
--
- @item Enum(@var{name})
- The option's argument is a string from the set of strings associated
- with the corresponding @samp{Enum} record.  The string is checked and
---- a/gcc/dwarf2out.c
-+++ b/gcc/dwarf2out.c
-@@ -10181,7 +10181,9 @@ dbx_reg_number (const_rtx rtl)
-     }
- #endif
- 
--  return DBX_REGISTER_NUMBER (regno);
-+  regno = DBX_REGISTER_NUMBER (regno);
-+  gcc_assert (regno != INVALID_REGNUM);
-+  return regno;
- }
- 
- /* Optionally add a DW_OP_piece term to a location description expression.
-@@ -11669,6 +11671,8 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
-     case REG:
-       if (GET_MODE_CLASS (mode) != MODE_INT
- 	  || (GET_MODE_SIZE (mode) > DWARF2_ADDR_SIZE
-+	      && rtl != arg_pointer_rtx
-+	      && rtl != frame_pointer_rtx
- #ifdef POINTERS_EXTEND_UNSIGNED
- 	      && (mode != Pmode || mem_mode == VOIDmode)
- #endif
-@@ -11941,7 +11945,9 @@ mem_loc_descriptor (rtx rtl, enum machine_mode mode,
-     case PLUS:
-     plus:
-       if (is_based_loc (rtl)
--	  && GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE
-+	  && (GET_MODE_SIZE (mode) <= DWARF2_ADDR_SIZE
-+	      || XEXP (rtl, 0) == arg_pointer_rtx
-+	      || XEXP (rtl, 0) == frame_pointer_rtx)
- 	  && GET_MODE_CLASS (mode) == MODE_INT)
- 	mem_loc_result = based_loc_descr (XEXP (rtl, 0),
- 					  INTVAL (XEXP (rtl, 1)),
---- a/gcc/emit-rtl.c
-+++ b/gcc/emit-rtl.c
-@@ -964,6 +964,22 @@ void
- set_reg_attrs_from_value (rtx reg, rtx x)
- {
-   int offset;
-+  bool can_be_reg_pointer = true;
-+
-+  /* Don't call mark_reg_pointer for incompatible pointer sign
-+     extension.  */
-+  while (GET_CODE (x) == SIGN_EXTEND
-+	 || GET_CODE (x) == ZERO_EXTEND
-+	 || GET_CODE (x) == TRUNCATE
-+	 || (GET_CODE (x) == SUBREG && subreg_lowpart_p (x)))
-+    {
-+#if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend)
-+      if ((GET_CODE (x) == SIGN_EXTEND && POINTERS_EXTEND_UNSIGNED)
-+	  || (GET_CODE (x) != SIGN_EXTEND && ! POINTERS_EXTEND_UNSIGNED))
-+	can_be_reg_pointer = false;
-+#endif
-+      x = XEXP (x, 0);
-+    }
- 
-   /* Hard registers can be reused for multiple purposes within the same
-      function, so setting REG_ATTRS, REG_POINTER and REG_POINTER_ALIGN
-@@ -977,14 +993,14 @@ set_reg_attrs_from_value (rtx reg, rtx x)
-       if (MEM_OFFSET_KNOWN_P (x))
- 	REG_ATTRS (reg) = get_reg_attrs (MEM_EXPR (x),
- 					 MEM_OFFSET (x) + offset);
--      if (MEM_POINTER (x))
-+      if (can_be_reg_pointer && MEM_POINTER (x))
- 	mark_reg_pointer (reg, 0);
-     }
-   else if (REG_P (x))
-     {
-       if (REG_ATTRS (x))
- 	update_reg_offset (reg, x, offset);
--      if (REG_POINTER (x))
-+      if (can_be_reg_pointer && REG_POINTER (x))
- 	mark_reg_pointer (reg, REGNO_POINTER_ALIGN (REGNO (x)));
-     }
- }
---- a/gcc/opth-gen.awk
-+++ b/gcc/opth-gen.awk
-@@ -298,16 +298,25 @@ print "";
- 
- for (i = 0; i < n_opts; i++) {
- 	name = opt_args("Mask", flags[i])
--	vname = var_name(flags[i])
--	mask = "MASK_"
--	mask_1 = "1"
--	if (vname != "") {
--		mask = "OPTION_MASK_"
--		if (host_wide_int[vname] == "yes")
--			mask_1 = "HOST_WIDE_INT_1"
-+	if (name == "") {
-+		opt = opt_args("InverseMask", flags[i])
-+		if (opt ~ ",")
-+			name = nth_arg(0, opt)
-+		else
-+			name = opt
- 	}
--	if (name != "" && !flag_set_p("MaskExists", flags[i]))
-+	if (name != "" && mask_bits[name] == 0) {
-+		mask_bits[name] = 1
-+		vname = var_name(flags[i])
-+		mask = "MASK_"
-+		mask_1 = "1"
-+		if (vname != "") {
-+			mask = "OPTION_MASK_"
-+			if (host_wide_int[vname] == "yes")
-+				mask_1 = "HOST_WIDE_INT_1"
-+		}
- 		print "#define " mask name " (" mask_1 " << " masknum[vname]++ ")"
-+	}
- }
- for (i = 0; i < n_extra_masks; i++) {
- 	print "#define MASK_" extra_masks[i] " (1 << " masknum[""]++ ")"
-@@ -330,17 +339,26 @@ print ""
- 
- for (i = 0; i < n_opts; i++) {
- 	name = opt_args("Mask", flags[i])
--	vname = var_name(flags[i])
--	macro = "OPTION_"
--	mask = "OPTION_MASK_"
--	if (vname == "") {
--		vname = "target_flags"
--		macro = "TARGET_"
--		mask = "MASK_"
-+	if (name == "") {
-+		opt = opt_args("InverseMask", flags[i])
-+		if (opt ~ ",")
-+			name = nth_arg(0, opt)
-+		else
-+			name = opt
- 	}
--	if (name != "" && !flag_set_p("MaskExists", flags[i]))
-+	if (name != "" && mask_macros[name] == 0) {
-+		mask_macros[name] = 1
-+		vname = var_name(flags[i])
-+		macro = "OPTION_"
-+		mask = "OPTION_MASK_"
-+		if (vname == "") {
-+			vname = "target_flags"
-+			macro = "TARGET_"
-+			mask = "MASK_"
-+		}
- 		print "#define " macro name \
- 		      " ((" vname " & " mask name ") != 0)"
-+	}
- }
- for (i = 0; i < n_extra_masks; i++) {
- 	print "#define TARGET_" extra_masks[i] \
---- a/gcc/reginfo.c
-+++ b/gcc/reginfo.c
-@@ -1222,17 +1222,7 @@ reg_scan_mark_refs (rtx x, rtx insn)
-       /* If this is setting a register from a register or from a simple
- 	 conversion of a register, propagate REG_EXPR.  */
-       if (REG_P (dest) && !REG_ATTRS (dest))
--	{
--	  rtx src = SET_SRC (x);
--
--	  while (GET_CODE (src) == SIGN_EXTEND
--		 || GET_CODE (src) == ZERO_EXTEND
--		 || GET_CODE (src) == TRUNCATE
--		 || (GET_CODE (src) == SUBREG && subreg_lowpart_p (src)))
--	    src = XEXP (src, 0);
--
--	  set_reg_attrs_from_value (dest, src);
--	}
-+	set_reg_attrs_from_value (dest, SET_SRC (x));
- 
-       /* ... fall through ...  */
- 
---- /dev/null
-+++ b/gcc/testsuite/gcc.dg/torture/pr52530.c
-@@ -0,0 +1,30 @@
-+/* { dg-do run } */
-+
-+extern void abort (void);
-+
-+struct foo
-+{
-+ int *f;
-+ int i;
-+};
-+
-+int baz;
-+
-+void __attribute__ ((noinline))
-+bar (struct foo x)
-+{
-+ *(x.f) = x.i;
-+}
-+
-+int
-+main ()
-+{
-+  struct foo x = { &baz, 0xdeadbeef };
-+
-+  bar (x);
-+
-+  if (baz != 0xdeadbeef)
-+    abort ();
-+
-+  return 0;
-+}
---- a/gcc/testsuite/gcc.target/i386/pr52146.c
-+++ b/gcc/testsuite/gcc.target/i386/pr52146.c
-@@ -15,4 +15,4 @@ test2 (void)
-   *apic_tpr_addr = 0;
- }
- 
--/* { dg-final { scan-assembler-not "-18874240" } } */
-+/* { dg-final { scan-assembler-not "\[,\\t \]+-18874240" } } */
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/i386/pr52857-1.c
-@@ -0,0 +1,10 @@
-+/* { dg-do compile { target { ! { ia32 } } } } */
-+/* { dg-options "-g -O -mx32 -maddress-mode=long" } */
-+
-+extern void get_BID128 (int *);
-+void 
-+__bid128_div (void)
-+{
-+  int res;
-+  get_BID128 (&res);
-+}
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/i386/pr52857-2.c
-@@ -0,0 +1,8 @@
-+/* { dg-do compile { target { ! { ia32 } } } } */
-+/* { dg-options "-g -O -mx32 -maddress-mode=long" } */
-+
-+void uw_init_context_1 (void *);
-+void _Unwind_ForcedUnwind (void)
-+{
-+  uw_init_context_1 (__builtin_dwarf_cfa ());
-+}
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/i386/pr52876.c
-@@ -0,0 +1,25 @@
-+/* { dg-do run { target { x32 } } } */
-+/* { dg-options "-O2 -mx32 -maddress-mode=long" } */
-+
-+extern void abort (void);
-+
-+long long li;
-+
-+long long 
-+__attribute__ ((noinline))
-+testfunc (void* addr)
-+{
-+  li = (long long)(int)addr;
-+  li &= 0xffffffff;
-+  return li;
-+}
-+
-+int main (void)
-+{
-+  volatile long long rv_test;
-+  rv_test = testfunc((void*)0x87651234);
-+  if (rv_test != 0x87651234ULL)
-+    abort ();
-+
-+  return 0;
-+}
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/i386/pr52882.c
-@@ -0,0 +1,19 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O" } */
-+
-+struct S1 {
-+  int f0;
-+  int f1;
-+};
-+
-+int fn1 ();
-+void fn2 (struct S1);
-+
-+void
-+fn3 () {
-+  struct S1 a = { 1, 0 };
-+  if (fn1 ())
-+    fn2 (a);
-+  for (; a.f1;) {
-+  }
-+}
---- /dev/null
-+++ b/gcc/testsuite/gcc.target/i386/pr52883.c
-@@ -0,0 +1,25 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O" } */
-+
-+int a, b, d, e, f, i, j, k, l, m;
-+unsigned c;
-+int g[] = { }, h[0];
-+
-+int
-+fn1 () {
-+  return 0;
-+}
-+
-+void
-+fn2 () {
-+  c = 0;
-+  e = 0;
-+  for (;; e = 0)
-+    if (f > j) {
-+      k = fn1 ();
-+      l = (d || k) * b;
-+      m = l * a;
-+      h[0] = m <= i;
-+    } else
-+      i = g[c];
-+}
---- a/gcc/testsuite/gcc.target/i386/pr54157.c
-+++ b/gcc/testsuite/gcc.target/i386/pr54157.c
-@@ -1,5 +1,5 @@
- /* { dg-do compile { target { ! { ia32 } } } } */
--/* { dg-options "-O2 -mx32 -ftree-vectorize" } */
-+/* { dg-options "-O2 -mx32 -maddress-mode=long -ftree-vectorize" } */
- 
- struct s2{
-   int n[24 -1][24 -1][24 -1];
---- a/libffi/configure
-+++ b/libffi/configure
-@@ -6282,7 +6282,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libffi/src/x86/ffi64.c
-+++ b/libffi/src/x86/ffi64.c
-@@ -426,7 +426,7 @@ ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
-   /* If the return value is passed in memory, add the pointer as the
-      first integer argument.  */
-   if (ret_in_memory)
--    reg_args->gpr[gprcount++] = (long) rvalue;
-+    reg_args->gpr[gprcount++] = (unsigned long) rvalue;
- 
-   avn = cif->nargs;
-   arg_types = cif->arg_types;
-@@ -501,9 +501,11 @@ ffi_prep_closure_loc (ffi_closure* closure,
-   tramp = (volatile unsigned short *) &closure->tramp[0];
- 
-   tramp[0] = 0xbb49;		/* mov <code>, %r11	*/
--  *(void * volatile *) &tramp[1] = ffi_closure_unix64;
-+  *((unsigned long long * volatile) &tramp[1])
-+    = (unsigned long) ffi_closure_unix64;
-   tramp[5] = 0xba49;		/* mov <data>, %r10	*/
--  *(void * volatile *) &tramp[6] = codeloc;
-+  *((unsigned long long * volatile) &tramp[6])
-+    = (unsigned long) codeloc;
- 
-   /* Set the carry bit iff the function uses any sse registers.
-      This is clc or stc, together with the first byte of the jmp.  */
-@@ -542,7 +544,7 @@ ffi_closure_unix64_inner(ffi_closure *closure, void *rvalue,
- 	{
- 	  /* The return value goes in memory.  Arrange for the closure
- 	     return value to go directly back to the original caller.  */
--	  rvalue = (void *) reg_args->gpr[gprcount++];
-+	  rvalue = (void *) (unsigned long) reg_args->gpr[gprcount++];
- 	  /* We don't have to do anything in asm for the return.  */
- 	  ret = FFI_TYPE_VOID;
- 	}
---- a/libffi/src/x86/ffitarget.h
-+++ b/libffi/src/x86/ffitarget.h
-@@ -53,9 +53,16 @@ typedef unsigned long long     ffi_arg;
- typedef long long              ffi_sarg;
- #endif
- #else
-+#if defined __x86_64__ && defined __ILP32__
-+#define FFI_SIZEOF_ARG 8
-+#define FFI_SIZEOF_JAVA_RAW  4
-+typedef unsigned long long     ffi_arg;
-+typedef long long              ffi_sarg;
-+#else
- typedef unsigned long          ffi_arg;
- typedef signed long            ffi_sarg;
- #endif
-+#endif
- 
- typedef enum ffi_abi {
-   FFI_FIRST_ABI = 0,
---- a/libgcc/unwind-dw2.c
-+++ b/libgcc/unwind-dw2.c
-@@ -294,7 +294,8 @@ _Unwind_SetGRValue (struct _Unwind_Context *context, int index,
- {
-   index = DWARF_REG_TO_UNWIND_COLUMN (index);
-   gcc_assert (index < (int) sizeof(dwarf_reg_size_table));
--  gcc_assert (dwarf_reg_size_table[index] == sizeof (_Unwind_Context_Reg_Val));
-+  /* Return column size may be smaller than _Unwind_Context_Reg_Val.  */
-+  gcc_assert (dwarf_reg_size_table[index] <= sizeof (_Unwind_Context_Reg_Val));
- 
-   context->by_value[index] = 1;
-   context->reg[index] = _Unwind_Get_Unwind_Context_Reg_Val (val);
---- a/libgfortran/configure
-+++ b/libgfortran/configure
-@@ -8071,7 +8071,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libgomp/configure
-+++ b/libgomp/configure
-@@ -6596,7 +6596,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libgomp/configure.tgt
-+++ b/libgomp/configure.tgt
-@@ -59,7 +59,7 @@ if test $enable_linux_futex = yes; then
-     i[456]86-*-linux*)
- 	config_path="linux/x86 linux posix"
- 	case " ${CC} ${CFLAGS} " in
--	  *" -m64 "*)
-+	  *" -m64 "*|*" -mx32 "*)
- 	    ;;
- 	  *)
- 	    if test -z "$with_arch"; then
---- a/libitm/configure
-+++ b/libitm/configure
-@@ -7285,7 +7285,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libitm/configure.tgt
-+++ b/libitm/configure.tgt
-@@ -53,7 +53,7 @@ case "${target_cpu}" in
- 
-   i[3456]86)
- 	case " ${CC} ${CFLAGS} " in
--	  *" -m64 "*)
-+	  *" -m64 "*|*" -mx32 "*)
- 	    ;;
- 	  *)
- 	    if test -z "$with_arch"; then
---- a/libjava/classpath/configure
-+++ b/libjava/classpath/configure
-@@ -7592,7 +7592,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libjava/configure
-+++ b/libjava/configure
-@@ -8843,7 +8843,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libjava/include/x86_64-signal.h
-+++ b/libjava/include/x86_64-signal.h
-@@ -47,6 +47,10 @@ do									\
- 									\
-   bool _is_64_bit = false;						\
- 									\
-+  /* Skip 67h address size prefix.  */					\
-+  if (_rip[0] == 0x67)							\
-+    _rip++;								\
-+									\
-   if ((_rip[0] & 0xf0) == 0x40)  /* REX byte present.  */		\
-     {									\
-       unsigned char _rex = _rip[0] & 0x0f;				\
-@@ -64,10 +68,10 @@ do									\
- 	{								\
- 	  if (_is_64_bit)						\
- 	    _min_value_dividend =					\
--	      _gregs[REG_RAX] == (greg_t)0x8000000000000000UL;		\
-+	      _gregs[REG_RAX] == (greg_t)0x8000000000000000ULL;		\
- 	  else								\
- 	    _min_value_dividend =					\
--	      (_gregs[REG_RAX] & 0xffffffff) == (greg_t)0x80000000UL;	\
-+	      (_gregs[REG_RAX] & 0xffffffff) == (greg_t)0x80000000ULL;	\
- 	}								\
- 									\
-       if (_min_value_dividend)						\
---- a/libmudflap/configure
-+++ b/libmudflap/configure
-@@ -6393,7 +6393,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libobjc/configure
-+++ b/libobjc/configure
-@@ -6079,7 +6079,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libquadmath/configure
-+++ b/libquadmath/configure
-@@ -6264,7 +6264,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libssp/configure
-+++ b/libssp/configure
-@@ -6401,7 +6401,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libstdc++-v3/configure
-+++ b/libstdc++-v3/configure
-@@ -7120,7 +7119,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/libtool.m4
-+++ b/libtool.m4
-@@ -1232,7 +1232,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/lto-plugin/configure
-+++ b/lto-plugin/configure
-@@ -6060,7 +6060,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
---- a/zlib/configure
-+++ b/zlib/configure
-@@ -5869,7 +5869,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
- 	    LD="${LD-ld} -m elf_i386_fbsd"
- 	    ;;
- 	  x86_64-*linux*)
--	    LD="${LD-ld} -m elf_i386"
-+	    case `/usr/bin/file conftest.o` in
-+	      *x86-64*)
-+		LD="${LD-ld} -m elf32_x86_64"
-+		;;
-+	      *)
-+		LD="${LD-ld} -m elf_i386"
-+		;;
-+	    esac
- 	    ;;
- 	  ppc64-*linux*|powerpc64-*linux*)
- 	    LD="${LD-ld} -m elf32ppclinux"
diff --git a/sys-devel/gcc/files/chromeos-version.sh b/sys-devel/gcc/files/chromeos-version.sh
deleted file mode 100755
index 71d9980..0000000
--- a/sys-devel/gcc/files/chromeos-version.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012 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.
-#
-# This script is given one argument: the base of the source directory of
-# the package, and it prints a string on stdout with the numerical version
-# number for said repo.
-#
-# The reason we extract the version from the ChangeLog instead of BASE-VER is
-# because BASE-VER contains a custom google string that lacks the x.y.z info.
-
-#
-# If we are using the AOSP repository, we will need to go down one level.
-# There are multiple gcc-* subdirectories, so we pick the highest version
-# gcc here (similar to the logic used in the gcc ebuild file).
-gccsub=$(find "$1" -maxdepth 1 -type d -name "gcc-*" | sort -r | head -1)
-if [[ -d "${gccsub}" ]] ; then
-  gccdir=${gccsub}
-else
-  gccdir=$1
-fi
-
-exec awk '$1 == "*" && $2 == "GCC" && $4 == "released." { print $3; exit }' \
-  "${gccdir}"/ChangeLog
diff --git a/sys-devel/gcc/gcc-10.2.0-r15.ebuild b/sys-devel/gcc/gcc-10.2.0-r15.ebuild
new file mode 120000
index 0000000..b022f43
--- /dev/null
+++ b/sys-devel/gcc/gcc-10.2.0-r15.ebuild
@@ -0,0 +1 @@
+gcc-10.2.0.ebuild
\ No newline at end of file
diff --git a/sys-devel/gcc/gcc-10.2.0.ebuild b/sys-devel/gcc/gcc-10.2.0.ebuild
new file mode 100644
index 0000000..7f4107f
--- /dev/null
+++ b/sys-devel/gcc/gcc-10.2.0.ebuild
@@ -0,0 +1,571 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-4.4.3-r3.ebuild,v 1.1 2010/06/19 01:53:09 zorry Exp $
+
+EAPI="7"
+
+PATCH_VER="6"
+PATCH_DEV=${PATCH_DEV:-slyfox}
+
+inherit eutils binutils-funcs
+
+DESCRIPTION="The GNU Compiler Collection.  Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking. This Compiler is based off of Crosstoolv14."
+
+LICENSE="GPL-3 LGPL-3 libgcc FDL-1.2"
+KEYWORDS="*"
+
+RDEPEND=">=sys-libs/zlib-1.1.4
+	>=sys-devel/gcc-config-1.6
+	virtual/libiconv
+	>=dev-libs/gmp-4.3.2
+	>=dev-libs/mpc-0.8.1
+	>=dev-libs/mpfr-2.4.2
+	graphite? (
+		>=dev-libs/cloog-0.18.0
+		>=dev-libs/isl-0.11.1
+	)"
+DEPEND="${RDEPEND}
+	test? (
+		>=dev-util/dejagnu-1.4.4
+		>=sys-devel/autogen-5.5.4
+	)
+	>=sys-apps/texinfo-4.8
+	>=sys-devel/bison-1.875"
+PDEPEND=">=sys-devel/gcc-config-2.3"
+BDEPEND="${CATEGORY}/binutils"
+
+RESTRICT="strip"
+
+IUSE="cet gcc_repo gcj git_gcc go graphite gtk hardened hardfp llvm-next llvm-tot mounted_gcc multilib
+	nls cxx openmp test tests +thumb upstream_gcc vanilla vtable_verify +wrapper_ccache"
+
+is_crosscompile() { [[ ${CHOST} != "${CTARGET}" ]] ; }
+
+export CTARGET=${CTARGET:-${CHOST}}
+if [[ ${CTARGET} = "${CHOST}" ]] ; then
+	if [[ ${CATEGORY/cross-} != "${CATEGORY}" ]] ; then
+		export CTARGET=${CATEGORY/cross-}
+	fi
+fi
+
+GCC_PV=${TOOLCHAIN_GCC_PV:-${PV}}
+GCC_PVR=${GCC_PV}
+[[ ${PR} != "r0" ]] && GCC_PVR=${GCC_PVR}-${PR}
+
+# GCC_RELEASE_VER must always match 'gcc/BASE-VER' value.
+# It's an internal representation of gcc version used for:
+# - versioned paths on disk
+# - 'gcc -dumpversion' output. Must always match <digit>.<digit>.<digit>.
+GCC_RELEASE_VER=$(ver_cut 1-3 "${GCC_PV}")
+
+GCC_BRANCH_VER=$(ver_cut 1-2 "${GCC_PV}")
+
+# Ideally this variable should allow for custom gentoo versioning
+# of binary and gcc-config names not directly tied to upstream
+# versioning. In practive it's hard to untangle from gcc/BASE-VER
+# (GCC_RELEASE_VER) value.
+GCC_CONFIG_VER=${GCC_RELEASE_VER}
+
+PREFIX=${TOOLCHAIN_PREFIX:-${EPREFIX}/usr}
+
+LIBPATH=${TOOLCHAIN_LIBPATH:-${PREFIX}/lib/gcc/${CTARGET}/${GCC_CONFIG_VER}}
+INCLUDEPATH=${TOOLCHAIN_INCLUDEPATH:-${LIBPATH}/include}
+
+if is_crosscompile ; then
+	BINPATH=${TOOLCHAIN_BINPATH:-${PREFIX}/${CHOST}/${CTARGET}/gcc-bin/${GCC_CONFIG_VER}}
+else
+	BINPATH=${TOOLCHAIN_BINPATH:-${PREFIX}/${CTARGET}/gcc-bin/${GCC_CONFIG_VER}}
+fi
+
+DATAPATH=${TOOLCHAIN_DATAPATH:-${PREFIX}/share/gcc-data/${CTARGET}/${GCC_CONFIG_VER}}
+
+# Dont install in /usr/include/g++-v3/, but in gcc internal directory.
+# We will handle /usr/include/g++-v3/ with gcc-config ...
+STDCXX_INCDIR=${TOOLCHAIN_STDCXX_INCDIR:-${LIBPATH}/include/g++-v${GCC_BRANCH_VER/\.*/}}
+
+SLOT="${CTARGET}"
+
+PREFIX="/usr"
+
+SRC_URI="mirror://gnu/gcc/gcc-${PV}/gcc-${PV}.tar.xz
+	https://dev.gentoo.org/~${PATCH_DEV}/distfiles/gcc-${GCC_RELEASE_VER}-patches-${PATCH_VER}.tar.bz2"
+
+PATCHES=(
+	"${FILESDIR}/0001-Fix-emutls.c-to-not-leak-pthread-keys.patch"
+)
+
+S="${WORKDIR}/gcc-${PV}"
+MY_BUILDDIR="${WORKDIR}/build-${CTARGET}"
+
+src_prepare() {
+	einfo "Applying Gentoo GCC patches"
+	eapply "${WORKDIR}/patch"
+
+	# Apply things from PATCHES and user dirs
+	default
+}
+
+src_configure() {
+	if [[ -f ${MY_BUILDDIR}/Makefile ]]; then
+		ewarn "Skipping configure due to existing build output"
+		return
+	fi
+	cros_use_gcc
+
+	# GCC builds do not like LD being set, it will find correct LD to use.
+	unset LD BUILD_LD
+
+	local gcc_langs="c"
+	use cxx && gcc_langs+=",c++"
+	use go && gcc_langs+=",go"
+
+	# Set configuration based on path variables
+	local confgcc=(
+		--prefix="${PREFIX}"
+		--bindir="${BINPATH}"
+		--datadir="${DATAPATH}"
+		--includedir="${INCLUDEPATH}"
+		--with-gxx-include-dir="${STDCXX_INCDIR}"
+		--mandir="${DATAPATH}/man"
+		--infodir="${DATAPATH}/info"
+		--with-python-dir="${DATAPATH#${PREFIX}}/python"
+
+		--build="${CBUILD}"
+		--host="${CHOST}"
+		--target="${CTARGET}"
+		--enable-languages="${gcc_langs}"
+		--enable-__cxa_atexit
+		--disable-canonical-system-headers
+		--enable-checking=release
+		--enable-linker-build-id
+
+		--with-bugurl='https://bugs.chromium.org'
+
+		$(use_enable go libatomic)
+		$(use_enable multilib)
+		$(use_enable openmp libgomp)
+
+		# Disable libs we don't care about.
+		--disable-libcilkrts
+		--disable-libitm
+		--disable-libcc1
+		--disable-libmudflap
+		--disable-libquadmath
+		--disable-libssp
+		--disable-libsanitizer
+
+		# Enable frame pointer by default for all the boards.
+		# originally only enabled for i686 for chromium-os:23321.
+		--enable-frame-pointer
+
+		# Allow user to opt into CET. Ideally this should be auto-enabled
+		# based on binutils config via the default --enable-cet=auto but it
+		# does not alawys work and binutils has its own problems for which it
+		# added its own cet use flag, so also add it here to be safe and explicit.
+		$(use_enable cet)
+	)
+
+	if use vtable_verify; then
+		confgcc+=(
+			--enable-cxx-flags="-Wl,-L../libsupc++/.libs"
+			--enable-vtable-verify
+		)
+	fi
+
+	# Handle target-specific options.
+	case ${CTARGET} in
+	arm*)	#264534
+		local arm_arch="${CTARGET%%-*}"
+		# Only do this if arm_arch is armv*
+		if [[ ${arm_arch} == armv* ]]; then
+			# Convert armv7{a,r,m} to armv7-{a,r,m}
+			[[ ${arm_arch} == armv7? ]] && arm_arch=${arm_arch/7/7-}
+			# Remove endian ('l' / 'eb')
+			[[ ${arm_arch} == *l ]] && arm_arch=${arm_arch%l}
+			[[ ${arm_arch} == *eb ]] && arm_arch=${arm_arch%eb}
+
+			confgcc+=(
+				--with-arch="${arm_arch}"
+				--disable-esp
+			)
+		fi
+		if use hardfp; then
+			confgcc+=( --with-float=hard )
+			case ${CTARGET} in
+				armv6*) confgcc+=( --with-fpu=vfp ) ;;
+				armv7a*) confgcc+=( --with-fpu=vfpv3 ) ;;
+				armv7m*) confgcc+=( --with-fpu=vfpv2 ) ;;
+			esac
+		fi
+		use thumb && confgcc+=( --with-mode=thumb )
+		;;
+	i?86*)
+		# Hardened is enabled for x86, but disabled for ARM.
+		confgcc+=(
+			--enable-esp
+			--with-arch=atom
+			--with-tune=atom
+		)
+		;;
+	x86_64*-gnux32)
+		confgcc+=( --with-abi=x32 --with-multilib-list=mx32 )
+		;;
+	esac
+
+	if is_crosscompile; then
+		confgcc+=( --enable-poison-system-directories )
+
+		local needed_libc="glibc"
+		if [[ -n ${needed_libc} ]]; then
+			if ! has_version "${CATEGORY}/${needed_libc}"; then
+				confgcc+=( --disable-shared --disable-threads --without-headers )
+			elif has_version "${CATEGORY}/${needed_libc}[crosscompile_opts_headers-only]"; then
+				confgcc+=( --disable-shared --with-sysroot=/usr/"${CTARGET}" )
+			else
+				confgcc+=( --with-sysroot=/usr/"${CTARGET}" )
+			fi
+		fi
+	else
+		confgcc+=( --enable-shared --enable-threads=posix )
+	fi
+
+	# Finally add the user options (if any).
+	confgcc+=( "${EXTRA_ECONF}" )
+
+	# Build in a separate build tree
+	mkdir -p "${MY_BUILDDIR}" || die
+	cd "${MY_BUILDDIR}" || die
+
+	# and now to do the actual configuration
+	addwrite /dev/zero
+	echo "Running this:"
+	echo "${S}"/configure "${confgcc[@]}"
+	"${S}"/configure "${confgcc[@]}" || die
+}
+
+src_compile() {
+	cd "${MY_BUILDDIR}" || die
+	GCC_CFLAGS="$(portageq envvar CFLAGS)"
+	TARGET_FLAGS=""
+	TARGET_GO_FLAGS=""
+
+	if use hardened ; then
+		TARGET_FLAGS="${TARGET_FLAGS} -fstack-protector-strong -D_FORTIFY_SOURCE=2"
+	fi
+
+	EXTRA_CFLAGS_FOR_TARGET="${TARGET_FLAGS}"
+	EXTRA_CXXFLAGS_FOR_TARGET="${TARGET_FLAGS}"
+
+	if use vtable_verify ; then
+		EXTRA_CXXFLAGS_FOR_TARGET+=" -fvtable-verify=std"
+	fi
+
+	# libgo on arm must be compiled with -marm. Go's panic/recover functionality
+	# is broken in thumb mode.
+	if [[ ${CTARGET} == arm* ]]; then
+		TARGET_GO_FLAGS="${TARGET_GO_FLAGS} -marm"
+	fi
+	EXTRA_GOCFLAGS_FOR_TARGET="${TARGET_GO_FLAGS}"
+
+	# Do not link libgcc with gold. That is known to fail on internal linker
+	# errors. See crosbug.com/16719
+	local LD_NON_GOLD=$(get_binutils_path_ld "${CTARGET}")/ld
+
+	emake CFLAGS="${GCC_CFLAGS}" \
+		LDFLAGS="-Wl,-O1" \
+		STAGE1_CFLAGS="-O2 -pipe" \
+		BOOT_CFLAGS="-O2" \
+		CFLAGS_FOR_TARGET="$(get_make_var CFLAGS_FOR_TARGET) ${EXTRA_CFLAGS_FOR_TARGET}" \
+		CXXFLAGS_FOR_TARGET="$(get_make_var CXXFLAGS_FOR_TARGET) ${EXTRA_CXXFLAGS_FOR_TARGET}" \
+		GOCFLAGS_FOR_TARGET="$(get_make_var GOCFLAGS_FOR_TARGET) ${EXTRA_GOCFLAGS_FOR_TARGET}" \
+		LD_FOR_TARGET="${LD_NON_GOLD}" \
+		all
+}
+
+# Logic copied from Gentoo's toolchain.eclass.
+toolchain_src_install() {
+	# These should be symlinks
+	dodir /usr/bin
+	cd "${D}${BINPATH}" || die
+	for x in cpp gcc g++ c++ gcov g77 gcj gcjh gfortran gccgo ; do
+		# For some reason, g77 gets made instead of ${CTARGET}-g77...
+		# this should take care of that
+		[[ -f ${x} ]] && mv ${x} "${CTARGET}-${x}"
+
+		if [[ -f ${CTARGET}-${x} ]] ; then
+			if ! is_crosscompile ; then
+				ln -sf "${CTARGET}-${x}" ${x}
+				dosym "${BINPATH}/${CTARGET}-${x}" \
+					/usr/bin/"${x}-${GCC_CONFIG_VER}"
+			fi
+
+			# Create version-ed symlinks
+			dosym "${BINPATH}/${CTARGET}-${x}" \
+				"/usr/bin/${CTARGET}-${x}-${GCC_CONFIG_VER}"
+		fi
+
+		if [[ -f "${CTARGET}-${x}-${GCC_CONFIG_VER}" ]] ; then
+			rm -f "${CTARGET}-${x}-${GCC_CONFIG_VER}"
+			ln -sf "${CTARGET}-${x}" "${CTARGET}-${x}-${GCC_CONFIG_VER}"
+		fi
+	done
+}
+
+src_install() {
+	cd "${MY_BUILDDIR}" || die
+
+	# Don't allow symlinks in private gcc include dir as this can break the build
+	find gcc/include*/ -type l -delete
+
+	S="${MY_BUILDDIR}" emake DESTDIR="${D}" install || die
+
+	find "${D}" -name libiberty.a -exec rm -f "{}" \;
+
+	# Punt some tools which are really only useful while building gcc
+	find "${ED}" -name install-tools -prune -type d -exec rm -rf "{}" \;
+	# Move the libraries to the proper location
+	gcc_movelibs
+
+	# Move pretty-printers to gdb datadir to shut ldconfig up
+	gcc_move_pretty_printers
+
+	dodir /etc/env.d/gcc
+	insinto /etc/env.d/gcc
+
+	local LDPATH=${LIBPATH}
+	for SUBDIR in 32 64 ; do
+		if [[ -d ${D}/${LDPATH}/${SUBDIR} ]]
+		then
+			LDPATH="${LDPATH}:${LDPATH}/${SUBDIR}"
+		fi
+	done
+
+	cat <<-EOF > env.d
+LDPATH="${LDPATH}"
+MANPATH="${DATAPATH}/man"
+INFOPATH="${DATAPATH}/info"
+STDCXX_INCDIR="${STDCXX_INCDIR##*/}"
+CTARGET=${CTARGET}
+GCC_PATH="${BINPATH}"
+GCC_VER="${GCC_RELEASE_VER}"
+EOF
+	newins env.d "$(get_gcc_config_file)"
+	cd - || die
+
+	toolchain_src_install
+
+	cd "${D}${BINPATH}" || die
+
+	local use_llvm_next=false
+	if use llvm-next || use llvm-tot
+	then
+		use_llvm_next=true
+	fi
+
+	if is_crosscompile ; then
+		local sysroot_wrapper_file_prefix
+		local sysroot_wrapper_config
+		if use hardened
+		then
+			sysroot_wrapper_file_prefix=sysroot_wrapper.hardened
+			sysroot_wrapper_config=cros.hardened
+		else
+			sysroot_wrapper_file_prefix=sysroot_wrapper
+			sysroot_wrapper_config=cros.nonhardened
+		fi
+
+		exeinto "${BINPATH}"
+		cat "${FILESDIR}/bisect_driver.py" > \
+			"${D}${BINPATH}/bisect_driver.py" || die
+
+		# Note: We are always producing both versions, with and without ccache,
+		# so we can replace the behavior of the wrapper without rebuilding it.
+		# Used e.g. in chromite/scripts/cros_setup_toolchains.py to disable the
+		# ccache for simplechrome toolchains.
+		local ccache_suffixes=(noccache ccache)
+		local ccache_option_values=(false true)
+		for ccache_index in {0,1}; do
+			local ccache_suffix="${ccache_suffixes[${ccache_index}]}"
+			local ccache_option="${ccache_option_values[${ccache_index}]}"
+			# Build new golang wrapper
+			"${FILESDIR}/compiler_wrapper/build.py" --config="${sysroot_wrapper_config}" \
+				--use_ccache="${ccache_option}" \
+				--use_llvm_next="${use_llvm_next}" \
+				--output_file="${D}${BINPATH}/${sysroot_wrapper_file_prefix}.${ccache_suffix}" || die
+		done
+
+		local use_ccache_index
+		use_ccache_index="$(usex wrapper_ccache 1 0)"
+		local sysroot_wrapper_file="${sysroot_wrapper_file_prefix}.${ccache_suffixes[${use_ccache_index}]}"
+
+		for x in c++ g++ gcc; do
+			if [[ -f "${CTARGET}-${x}" ]]; then
+				mv "${CTARGET}-${x}" "${CTARGET}-${x}.real"
+				dosym "${sysroot_wrapper_file}" "${BINPATH}/${CTARGET}-${x}" || die
+			fi
+		done
+		for x in clang clang++; do
+			dosym "${sysroot_wrapper_file}" "${BINPATH}/${CTARGET}-${x}" || die
+		done
+		if use go; then
+			local wrapper="sysroot_wrapper.gccgo"
+			doexe "${FILESDIR}/${wrapper}" || die
+			mv "${CTARGET}-gccgo" "${CTARGET}-gccgo.real" || die
+			dosym "${wrapper}" "${BINPATH}/${CTARGET}-gccgo" || die
+		fi
+	else
+		local sysroot_wrapper_file=host_wrapper
+
+		exeinto "${BINPATH}"
+
+		"${FILESDIR}/compiler_wrapper/build.py" --config=cros.host --use_ccache=false \
+			--use_llvm_next="${use_llvm_next}" \
+			--output_file="${D}${BINPATH}/${sysroot_wrapper_file}" || die
+
+		for x in c++ g++ gcc; do
+			if [[ -f "${CTARGET}-${x}" ]]; then
+				mv "${CTARGET}-${x}" "${CTARGET}-${x}.real"
+				dosym "${sysroot_wrapper_file}" "${BINPATH}/${CTARGET}-${x}" || die
+			fi
+			if [[ -f "${x}" ]]; then
+				ln "${CTARGET}-${x}.real" "${x}.real" || die
+				rm "${x}" || die
+				dosym "${sysroot_wrapper_file}" "${BINPATH}/${x}" || die
+				# Add a cc.real symlink that points to gcc.real, https://crbug.com/1090449
+				if [[ "${x}" == "gcc" ]]; then
+					dosym "${x}.real" "${BINPATH}/cc.real"
+				fi
+			fi
+		done
+	fi
+
+	if use tests
+	then
+		TEST_INSTALL_DIR="usr/local/dejagnu/gcc"
+		dodir ${TEST_INSTALL_DIR}
+		cd "${D}/${TEST_INSTALL_DIR}" || die
+		tar -czf "tests.tar.gz" "${WORKDIR}"
+	fi
+}
+
+pkg_postinst() {
+	gcc-config "$(get_gcc_config_file)"
+}
+
+pkg_postrm() {
+	if is_crosscompile ; then
+		if [[ -z $(ls "${ROOT}/etc/env.d/gcc/${CTARGET}*" 2>/dev/null) ]] ; then
+			rm -f "${ROOT}/etc/env.d/gcc/config-${CTARGET}"
+			rm -f "${ROOT}/etc/env.d/??gcc-${CTARGET}"
+			rm -f "${ROOT}/usr/bin/${CTARGET}-{gcc,{g,c}++}{,32,64}"
+		fi
+	fi
+}
+
+get_gcc_config_file() {
+	echo "${CTARGET}-${PV}"
+}
+
+# Grab a variable from the build system (taken from linux-info.eclass)
+get_make_var() {
+	local var=$1 makefile=${2:-${MY_BUILDDIR}/Makefile}
+	echo -e "e:\\n\\t@echo \$(${var})\\ninclude ${makefile}" | \
+		r=${makefile%/*} emake --no-print-directory -s -f - 2>/dev/null
+}
+XGCC() { get_make_var GCC_FOR_TARGET ; }
+
+gcc_move_pretty_printers() {
+	local py gdbdir=/usr/share/gdb/auto-load${LIBPATH}
+	pushd "${D}${LIBPATH}" >/dev/null || die
+	while IFS= read -r -d '' py; do
+		local multidir=${py%/*}
+		insinto "${gdbdir}/${multidir}"
+		sed -i "/^libdir =/s:=.*:= '${LIBPATH}/${multidir}':" "${py}" || die #348128
+		doins "${py}" || die
+		rm "${py}" || die
+	done <   <(find . -name '*-gdb.py' -print0)
+	popd >/dev/null || die
+}
+
+# Move around the libs to the right location.  For some reason,
+# when installing gcc, it dumps internal libraries into /usr/lib
+# instead of the private gcc lib path
+gcc_movelibs() {
+	# For all the libs that are built for CTARGET, move them into the
+	# compiler-specific CTARGET internal dir.
+	local x multiarg removedirs=""
+	for multiarg in $($(XGCC) -print-multi-lib) ; do
+		multiarg=${multiarg#*;}
+		multiarg=${multiarg//@/ -}
+
+		# disable overzealous shellcheck because multiarg can be empty and passing
+		# "" as an argument modifies the behaviour of xgcc breaking install paths.
+		# shellcheck disable=SC2086
+		local OS_MULTIDIR=$($(XGCC) ${multiarg} --print-multi-os-directory)
+		# shellcheck disable=SC2086
+		local MULTIDIR=$($(XGCC) ${multiarg} --print-multi-directory)
+		local TODIR="${D}${LIBPATH}"/${MULTIDIR}
+		local FROMDIR=
+
+		[[ -d ${TODIR} ]] || mkdir -p "${TODIR}"
+
+		for FROMDIR in \
+			"${LIBPATH}"/${OS_MULTIDIR} \
+			"${LIBPATH}"/../${MULTIDIR} \
+			"${PREFIX}"/lib/${OS_MULTIDIR} \
+			"${PREFIX}"/${CTARGET}/lib/${OS_MULTIDIR}
+		do
+			removedirs="${removedirs} ${FROMDIR}"
+			FROMDIR=${D}${FROMDIR}
+			if [[ ${FROMDIR} != "${TODIR}" && -d ${FROMDIR} ]] ; then
+				find "${FROMDIR}" -maxdepth 1 ! -type d -exec \
+					mv -ft "${TODIR}" {} +
+			fi
+		done
+		fix_libtool_libdir_paths "${LIBPATH}/${MULTIDIR}"
+
+		# SLOT up libgcj.pc if it's available (and let gcc-config worry about links)
+		FROMDIR="${PREFIX}/lib/${OS_MULTIDIR}"
+		for x in "${D}${FROMDIR}"/pkgconfig/libgcj*.pc ; do
+			[[ -f ${x} ]] || continue
+			sed -i "/^libdir=/s:=.*:=${LIBPATH}/${MULTIDIR}:" "${x}" || die
+			mv "${x}" "${D}${FROMDIR}/pkgconfig/libgcj-${GCC_PV}.pc" || die
+		done
+	done
+
+	# We remove directories separately to avoid this case:
+	#	mv SRC/lib/../lib/*.o DEST
+	#	rmdir SRC/lib/../lib/
+	#	mv SRC/lib/../lib32/*.o DEST  # Bork
+	for FROMDIR in ${removedirs} ; do
+		rmdir "${D}${FROMDIR}" >& /dev/null
+	done
+	find -depth "${ED}" -type d -exec rmdir {} + >& /dev/null
+}
+
+# make sure the libtool archives have libdir set to where they actually
+# -are-, and not where they -used- to be.  also, any dependencies we have
+# on our own .la files need to be updated.
+fix_libtool_libdir_paths() {
+	local libpath="$1"
+
+	pushd "${D}" >/dev/null || die
+
+	pushd "./${libpath}" >/dev/null || die
+	local dir="${PWD#${D%/}}"
+	local allarchives=$(echo *.la)
+	allarchives="\(${allarchives// /\\|}\)"
+	popd >/dev/null || die
+
+	# The libdir might not have any .la files. #548782
+	find "./${dir}" -maxdepth 1 -name '*.la' \
+		-exec sed -i -e "/^libdir=/s:=.*:='${dir}':" {} + || die
+	# Would be nice to combine these, but -maxdepth can not be specified
+	# on sub-expressions.
+	find "./${PREFIX}"/lib* -maxdepth 3 -name '*.la' \
+		-exec sed -i -e "/^dependency_libs=/s:/[^ ]*/${allarchives}:${libpath}/\1:g" {} + || die
+	find "./${dir}/" -maxdepth 1 -name '*.la' \
+		-exec sed -i -e "/^dependency_libs=/s:/[^ ]*/${allarchives}:${libpath}/\1:g" {} + || die
+
+	popd >/dev/null || die
+}
diff --git a/sys-devel/gcc/gcc-4.9.2-r278.ebuild b/sys-devel/gcc/gcc-4.9.2-r278.ebuild
deleted file mode 100644
index aab92fa..0000000
--- a/sys-devel/gcc/gcc-4.9.2-r278.ebuild
+++ /dev/null
@@ -1,608 +0,0 @@
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-4.4.3-r3.ebuild,v 1.1 2010/06/19 01:53:09 zorry Exp $
-
-EAPI="7"
-CROS_WORKON_COMMIT="ac6128e0a17a52f011797f33ac3e7d6273a9368d"
-CROS_WORKON_TREE="aff2e49c815be09f20e4346cc98144b604388cb7"
-CROS_WORKON_REPO="https://android.googlesource.com"
-CROS_WORKON_PROJECT="toolchain/gcc"
-CROS_WORKON_LOCALNAME=../aosp/toolchain/gcc
-NEXT_GCC="origin/svn-mirror/google/gcc-4_9"
-NEXT_GCC_REPO="https://chromium.googlesource.com/chromiumos/third_party/gcc.git"
-
-# By default, PREV_GCC points to the parent of current tip of origin/master.
-# If that is a bad commit, override this to point to the last known good commit.
-PREV_GCC="origin/master^"
-
-inherit eutils cros-workon binutils-funcs
-
-GCC_FILESDIR="${PORTDIR}/sys-devel/gcc/files"
-
-DESCRIPTION="The GNU Compiler Collection.  Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking. This Compiler is based off of Crosstoolv14."
-
-LICENSE="GPL-3 LGPL-3 libgcc FDL-1.2"
-KEYWORDS="*"
-
-RDEPEND=">=sys-libs/zlib-1.1.4
-	>=sys-devel/gcc-config-1.6
-	virtual/libiconv
-	>=dev-libs/gmp-4.3.2
-	>=dev-libs/mpc-0.8.1
-	>=dev-libs/mpfr-2.4.2
-	graphite? (
-		>=dev-libs/cloog-0.18.0
-		>=dev-libs/isl-0.11.1
-	)"
-DEPEND="${RDEPEND}
-	test? (
-		>=dev-util/dejagnu-1.4.4
-		>=sys-devel/autogen-5.5.4
-	)
-	>=sys-apps/texinfo-4.8
-	>=sys-devel/bison-1.875"
-PDEPEND=">=sys-devel/gcc-config-1.7"
-BDEPEND="${CATEGORY}/binutils"
-
-RESTRICT="mirror strip"
-
-IUSE="gcc_repo gcj git_gcc go graphite gtk hardened hardfp llvm-next llvm-tot mounted_gcc multilib
-	nls cxx openmp test tests +thumb upstream_gcc vanilla vtable_verify +wrapper_ccache
-	next_gcc prev_gcc"
-REQUIRED_USE="next_gcc? ( !prev_gcc )"
-
-is_crosscompile() { [[ ${CHOST} != ${CTARGET} ]] ; }
-
-export CTARGET=${CTARGET:-${CHOST}}
-if [[ ${CTARGET} = ${CHOST} ]] ; then
-	if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then
-		export CTARGET=${CATEGORY/cross-}
-	fi
-fi
-
-SLOT="${CTARGET}"
-
-PREFIX=/usr
-
-update_location_for_aosp() {
-	# For aosp gcc repository, the actual gcc directory is 1 more
-	# level down, eg. gcc/gcc-4.9, pick up the newest one in this
-	# case.
-	local gccsub=$(find "${S}" -maxdepth 1 -type d -name "gcc-*" | sort -r | head -1)
-	if [[ -d "${gccsub}" ]] && [[ -d "${gccsub}/gcc/config/arm/" ]]; then
-		S="${gccsub}"
-	fi
-	cd "${S}"
-}
-
-cros_pre_src_prepare_use_gcc() {
-	cros_use_gcc
-}
-
-src_unpack() {
-	if use mounted_gcc ; then
-		if [[ ! -d "$(get_gcc_dir)" ]] ; then
-			die "gcc dir not mounted/present at: $(get_gcc_dir)"
-		fi
-		S=$(get_gcc_dir)
-	elif use upstream_gcc ; then
-		GCC_MIRROR=ftp://mirrors.kernel.org/gnu/gcc
-		GCC_TARBALL=${GCC_MIRROR}/${P}/${P}.tar.bz2
-		wget $GCC_TARBALL
-		tar xf ${GCC_TARBALL##*/}
-	elif use git_gcc || use next_gcc || use prev_gcc ; then
-		aosp_git="${CROS_WORKON_REPO}/${CROS_WORKON_PROJECT}.git"
-		if use gcc_repo ; then
-			gcc_repository="${GCC_REPO}"
-		elif use next_gcc ; then
-			gcc_repository="${NEXT_GCC_REPO}"
-		else
-			gcc_repository="${aosp_git}"
-		fi
-		git clone --depth 1 --no-single-branch "${gcc_repository}" "${S}"
-		if use next_gcc ; then
-			GCC_GITHASH="${NEXT_GCC}"
-		fi
-		if use prev_gcc ; then
-			GCC_GITHASH="${PREV_GCC}"
-		fi
-		if [[ -n ${GCC_GITHASH} ]] ; then
-			einfo "Checking out: ${GCC_GITHASH}"
-			pushd "$(get_gcc_dir)" >/dev/null
-			git checkout ${GCC_GITHASH} || \
-				die "Couldn't checkout ${GCC_GITHASH}"
-			popd >/dev/null
-		fi
-		if [[ ${gcc_repository} == "${aosp_git}" ]] ; then
-			update_location_for_aosp
-		fi
-	else
-		cros-workon_src_unpack
-		update_location_for_aosp
-		[[ ${ABI} == "x32" ]] && eapply "${FILESDIR}"/90_all_gcc-4.7-x32.patch
-	fi
-
-	COST_PKG_VERSION="$("${FILESDIR}"/chromeos-version.sh "${S}")_cos_gg"
-	if [[ -d ${S}/.git ]]; then
-		COST_PKG_VERSION+="_$(cd ${S}; git describe --always)"
-	elif [[ -n ${VCSID} ]]; then
-		COST_PKG_VERSION+="_${VCSID}"
-	fi
-	COST_PKG_VERSION+="_${PVR}"
-}
-
-src_configure() {
-	if use mounted_gcc && [[ -f $(get_gcc_build_dir)/Makefile ]]; then
-		ewarn "Skipping configure due to existing build output"
-		return
-	fi
-
-	# GCC builds do not like LD being set, it will find correct LD to use.
-	unset LD BUILD_LD
-
-	local gcc_langs="c"
-	use cxx && gcc_langs+=",c++"
-	use go && gcc_langs+=",go"
-
-	# Set configuration based on path variables
-	local DATAPATH=$(get_data_dir)
-	local confgcc=(
-		--prefix=${PREFIX}
-		--bindir=$(get_bin_dir)
-		--datadir=${DATAPATH}
-		--includedir=$(get_lib_dir)/include
-		--with-gxx-include-dir=$(get_stdcxx_incdir)
-		--mandir=${DATAPATH}/man
-		--infodir=${DATAPATH}/info
-		--with-python-dir=${DATAPATH#${PREFIX}}/python
-
-		--build=${CBUILD}
-		--host=${CHOST}
-		--target=${CTARGET}
-		--enable-languages=${gcc_langs}
-		--enable-__cxa_atexit
-		--disable-canonical-system-headers
-		--enable-checking=release
-		--enable-linker-build-id
-
-		--with-bugurl='http://code.google.com/p/chromium-os/issues/entry'
-		--with-pkgversion="${COST_PKG_VERSION}"
-
-		$(use_enable go libatomic)
-		$(use_enable multilib)
-		$(use_enable openmp libgomp)
-
-		# Disable libs we don't care about.
-		--disable-libcilkrts
-		--disable-libitm
-		--disable-libmudflap
-		--disable-libquadmath
-		--disable-libssp
-		--disable-libsanitizer
-
-		# Enable frame pointer by default for all the boards.
-		# originally only enabled for i686 for chromium-os:23321.
-		--enable-frame-pointer
-	)
-
-	if use vtable_verify; then
-		confgcc+=(
-			--enable-cxx-flags=-Wl,-L../libsupc++/.libs
-			--enable-vtable-verify
-		)
-	fi
-
-	# Handle target-specific options.
-	case ${CTARGET} in
-	arm*)	#264534
-		local arm_arch="${CTARGET%%-*}"
-		# Only do this if arm_arch is armv*
-		if [[ ${arm_arch} == armv* ]]; then
-			# Convert armv7{a,r,m} to armv7-{a,r,m}
-			[[ ${arm_arch} == armv7? ]] && arm_arch=${arm_arch/7/7-}
-			# Remove endian ('l' / 'eb')
-			[[ ${arm_arch} == *l ]] && arm_arch=${arm_arch%l}
-			[[ ${arm_arch} == *eb ]] && arm_arch=${arm_arch%eb}
-			confgcc+=(
-				--with-arch=${arm_arch}
-				--disable-esp
-			)
-		fi
-		use hardfp && confgcc+=( --with-float=hard )
-		use thumb && confgcc+=( --with-mode=thumb )
-		;;
-	i?86*)
-		# Hardened is enabled for x86, but disabled for ARM.
-		confgcc+=(
-			--enable-esp
-			--with-arch=atom
-			--with-tune=atom
-		)
-		;;
-	x86_64*-gnux32)
-		confgcc+=( --with-abi=x32 --with-multilib-list=mx32 )
-		;;
-	esac
-
-	if is_crosscompile; then
-		confgcc+=( --enable-poison-system-directories )
-
-		local needed_libc="glibc"
-		if [[ -n ${needed_libc} ]]; then
-			if ! has_version ${CATEGORY}/${needed_libc}; then
-				confgcc+=( --disable-shared --disable-threads --without-headers )
-			elif has_version "${CATEGORY}/${needed_libc}[crosscompile_opts_headers-only]"; then
-				confgcc+=( --disable-shared --with-sysroot=/usr/${CTARGET} )
-			else
-				confgcc+=( --with-sysroot=/usr/${CTARGET} )
-			fi
-		fi
-	else
-		confgcc+=( --enable-shared --enable-threads=posix )
-	fi
-
-	# Finally add the user options (if any).
-	confgcc+=( ${EXTRA_ECONF} )
-
-	# Build in a separate build tree
-	mkdir -p $(get_gcc_build_dir) || die
-	cd $(get_gcc_build_dir) || die
-
-	# and now to do the actual configuration
-	addwrite /dev/zero
-	echo "Running this:"
-	echo "$(get_gcc_dir)"/configure "${confgcc[@]}"
-	"$(get_gcc_dir)"/configure "${confgcc[@]}" || die
-}
-
-src_compile() {
-	cd "$(get_gcc_build_dir)"
-	GCC_CFLAGS="$(portageq envvar CFLAGS)"
-	TARGET_FLAGS=""
-	TARGET_GO_FLAGS=""
-
-	if use hardened ; then
-		TARGET_FLAGS="${TARGET_FLAGS} -fstack-protector-strong -D_FORTIFY_SOURCE=2"
-	fi
-
-	EXTRA_CFLAGS_FOR_TARGET="${TARGET_FLAGS} ${CFLAGS_FOR_TARGET}"
-	EXTRA_CXXFLAGS_FOR_TARGET="${TARGET_FLAGS} ${CXXFLAGS_FOR_TARGET}"
-
-	if use vtable_verify ; then
-		EXTRA_CXXFLAGS_FOR_TARGET+=" -fvtable-verify=std"
-	fi
-
-	# libgo on arm must be compiled with -marm. Go's panic/recover functionality
-	# is broken in thumb mode.
-	if [[ ${CTARGET} == arm* ]]; then
-		TARGET_GO_FLAGS="${TARGET_GO_FLAGS} -marm"
-	fi
-	EXTRA_GOCFLAGS_FOR_TARGET="${TARGET_GO_FLAGS} ${GOCFLAGS_FOR_TARGET}"
-
-	# Do not link libgcc with gold. That is known to fail on internal linker
-	# errors. See crosbug.com/16719
-	local LD_NON_GOLD="$(get_binutils_path_ld ${CTARGET})/ld"
-
-	emake CFLAGS="${GCC_CFLAGS}" \
-		LDFLAGS="-Wl,-O1" \
-		STAGE1_CFLAGS="-O2 -pipe" \
-		BOOT_CFLAGS="-O2" \
-		CFLAGS_FOR_TARGET="$(get_make_var CFLAGS_FOR_TARGET) ${EXTRA_CFLAGS_FOR_TARGET}" \
-		CXXFLAGS_FOR_TARGET="$(get_make_var CXXFLAGS_FOR_TARGET) ${EXTRA_CXXFLAGS_FOR_TARGET}" \
-		GOCFLAGS_FOR_TARGET="$(get_make_var GOCFLAGS_FOR_TARGET) ${EXTRA_GOCFLAGS_FOR_TARGET}" \
-		LD_FOR_TARGET="${LD_NON_GOLD}" \
-		all
-}
-
-# Logic copied from Gentoo's toolchain.eclass.
-toolchain_src_install() {
-	BINPATH=$(get_bin_dir) # cros to Gentoo glue
-
-	# These should be symlinks
-	dodir /usr/bin
-	cd "${D}"${BINPATH}
-	for x in cpp gcc g++ c++ gcov g77 gcj gcjh gfortran gccgo ; do
-		# For some reason, g77 gets made instead of ${CTARGET}-g77...
-		# this should take care of that
-		[[ -f ${x} ]] && mv ${x} ${CTARGET}-${x}
-
-		if [[ -f ${CTARGET}-${x} ]] ; then
-			if ! is_crosscompile ; then
-				ln -sf ${CTARGET}-${x} ${x}
-				dosym ${BINPATH}/${CTARGET}-${x} \
-					/usr/bin/${x}-${GCC_CONFIG_VER}
-			fi
-
-			# Create version-ed symlinks
-			dosym ${BINPATH}/${CTARGET}-${x} \
-				/usr/bin/${CTARGET}-${x}-${GCC_CONFIG_VER}
-		fi
-
-		if [[ -f ${CTARGET}-${x}-${GCC_CONFIG_VER} ]] ; then
-			rm -f ${CTARGET}-${x}-${GCC_CONFIG_VER}
-			ln -sf ${CTARGET}-${x} ${CTARGET}-${x}-${GCC_CONFIG_VER}
-		fi
-	done
-}
-
-src_install() {
-	cd "$(get_gcc_build_dir)"
-	emake DESTDIR="${D}" install
-
-	find "${D}" -name libiberty.a -exec rm -f "{}" \;
-
-	# Move the libraries to the proper location
-	gcc_movelibs
-
-	# Move pretty-printers to gdb datadir to shut ldconfig up
-	gcc_move_pretty_printers
-
-	GCC_CONFIG_VER=$(get_gcc_base_ver)
-	dodir /etc/env.d/gcc
-	insinto /etc/env.d/gcc
-
-	local LDPATH=$(get_lib_dir)
-	for SUBDIR in 32 64 ; do
-		if [[ -d ${D}/${LDPATH}/${SUBDIR} ]]
-		then
-			LDPATH="${LDPATH}:${LDPATH}/${SUBDIR}"
-		fi
-	done
-
-	cat <<-EOF > env.d
-LDPATH="${LDPATH}"
-MANPATH="$(get_data_dir)/man"
-INFOPATH="$(get_data_dir)/info"
-STDCXX_INCDIR="$(get_stdcxx_incdir)"
-CTARGET=${CTARGET}
-GCC_PATH="$(get_bin_dir)"
-GCC_VER="$(get_gcc_base_ver)"
-EOF
-	newins env.d $(get_gcc_config_file)
-	cd -
-
-	toolchain_src_install
-
-	cd "${D}$(get_bin_dir)"
-
-	local use_llvm_next=false
-	if use llvm-next || use llvm-tot
-	then
-		use_llvm_next=true
-	fi
-
-	if is_crosscompile ; then
-		local sysroot_wrapper_file_prefix
-		local sysroot_wrapper_config
-		if use hardened
-		then
-			sysroot_wrapper_file_prefix=sysroot_wrapper.hardened
-			sysroot_wrapper_config=cros.hardened
-		else
-			sysroot_wrapper_file_prefix=sysroot_wrapper
-			sysroot_wrapper_config=cros.nonhardened
-		fi
-
-		exeinto "$(get_bin_dir)"
-		cat "${FILESDIR}/bisect_driver.py" > \
-			"${D}$(get_bin_dir)/bisect_driver.py" || die
-
-		# Note: We are always producing both versions, with and without ccache,
-		# so we can replace the behavior of the wrapper without rebuilding it.
-		# Used e.g. in chromite/scripts/cros_setup_toolchains.py to disable the
-		# ccache for simplechrome toolchains.
-		local ccache_suffixes=(noccache ccache)
-		local ccache_option_values=(false true)
-		for ccache_index in {0,1}; do
-			local ccache_suffix="${ccache_suffixes[${ccache_index}]}"
-			local ccache_option="${ccache_option_values[${ccache_index}]}"
-			# Build new golang wrapper
-			"${FILESDIR}/compiler_wrapper/build.py" --config="${sysroot_wrapper_config}" \
-				--use_ccache="${ccache_option}" \
-				--use_llvm_next="${use_llvm_next}" \
-				--output_file="${D}$(get_bin_dir)/${sysroot_wrapper_file_prefix}.${ccache_suffix}" || die
-		done
-
-		local use_ccache_index
-		use_ccache_index="$(usex wrapper_ccache 1 0)"
-		local sysroot_wrapper_file="${sysroot_wrapper_file_prefix}.${ccache_suffixes[${use_ccache_index}]}"
-
-		for x in c++ g++ gcc; do
-			if [[ -f "${CTARGET}-${x}" ]]; then
-				mv "${CTARGET}-${x}" "${CTARGET}-${x}.real"
-				dosym "${sysroot_wrapper_file}" "$(get_bin_dir)/${CTARGET}-${x}" || die
-			fi
-		done
-		for x in clang clang++; do
-			dosym "${sysroot_wrapper_file}" "$(get_bin_dir)/${CTARGET}-${x}" || die
-		done
-		if use go; then
-			local wrapper="sysroot_wrapper.gccgo"
-			doexe "${FILESDIR}/${wrapper}" || die
-			mv "${CTARGET}-gccgo" "${CTARGET}-gccgo.real" || die
-			dosym "${wrapper}" "$(get_bin_dir)/${CTARGET}-gccgo" || die
-		fi
-	else
-		local sysroot_wrapper_file=host_wrapper
-
-		exeinto "$(get_bin_dir)"
-
-		"${FILESDIR}/compiler_wrapper/build.py" --config=cros.host --use_ccache=false \
-			--use_llvm_next="${use_llvm_next}" \
-			--output_file="${D}$(get_bin_dir)/${sysroot_wrapper_file}" || die
-
-		for x in c++ g++ gcc; do
-			if [[ -f "${CTARGET}-${x}" ]]; then
-				mv "${CTARGET}-${x}" "${CTARGET}-${x}.real"
-				dosym "${sysroot_wrapper_file}" "$(get_bin_dir)/${CTARGET}-${x}" || die
-			fi
-			if [[ -f "${x}" ]]; then
-				ln "${CTARGET}-${x}.real" "${x}.real" || die
-				rm "${x}" || die
-				dosym "${sysroot_wrapper_file}" "$(get_bin_dir)/${x}" || die
-				# Add a cc.real symlink that points to gcc.real, https://crbug.com/1090449
-				if [[ "${x}" == "gcc" ]]; then
-					dosym "${x}.real" "$(get_bin_dir)/cc.real"
-				fi
-			fi
-		done
-	fi
-
-	if use tests
-	then
-		TEST_INSTALL_DIR="usr/local/dejagnu/gcc"
-		dodir ${TEST_INSTALL_DIR}
-		cd ${D}/${TEST_INSTALL_DIR}
-		tar -czf "tests.tar.gz" ${WORKDIR}
-	fi
-}
-
-pkg_postinst() {
-	gcc-config $(get_gcc_config_file)
-}
-
-pkg_postrm() {
-	if is_crosscompile ; then
-		if [[ -z $(ls "${ROOT}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
-			rm -f "${ROOT}"/etc/env.d/gcc/config-${CTARGET}
-			rm -f "${ROOT}"/etc/env.d/??gcc-${CTARGET}
-			rm -f "${ROOT}"/usr/bin/${CTARGET}-{gcc,{g,c}++}{,32,64}
-		fi
-	fi
-}
-
-get_gcc_dir() {
-	local GCCDIR
-	if use mounted_gcc ; then
-		GCCDIR=${GCC_SOURCE_PATH:=/usr/local/toolchain_root/gcc}
-	elif use upstream_gcc ; then
-		GCCDIR=${P}
-	else
-		GCCDIR=${S}
-	fi
-	echo "${GCCDIR}"
-}
-
-get_gcc_build_dir() {
-	echo "$(get_gcc_dir)-build-${CTARGET}"
-}
-
-get_gcc_base_ver() {
-	cat "$(get_gcc_dir)/gcc/BASE-VER"
-}
-
-get_stdcxx_incdir() {
-	echo "$(get_lib_dir)/include/g++-v4"
-}
-
-get_lib_dir() {
-	echo "${PREFIX}/lib/gcc/${CTARGET}/$(get_gcc_base_ver)"
-}
-
-get_bin_dir() {
-	if is_crosscompile ; then
-		echo ${PREFIX}/${CHOST}/${CTARGET}/gcc-bin/$(get_gcc_base_ver)
-	else
-		echo ${PREFIX}/${CTARGET}/gcc-bin/$(get_gcc_base_ver)
-	fi
-}
-
-get_data_dir() {
-	echo "${PREFIX}/share/gcc-data/${CTARGET}/$(get_gcc_base_ver)"
-}
-
-get_gcc_config_file() {
-	echo ${CTARGET}-${PV}
-}
-
-# Grab a variable from the build system (taken from linux-info.eclass)
-get_make_var() {
-	local var=$1 makefile=${2:-$(get_gcc_build_dir)/Makefile}
-	echo -e "e:\\n\\t@echo \$(${var})\\ninclude ${makefile}" | \
-		r=${makefile%/*} emake --no-print-directory -s -f - 2>/dev/null
-}
-XGCC() { get_make_var GCC_FOR_TARGET ; }
-
-gcc_move_pretty_printers() {
-	LIBPATH=$(get_lib_dir)  # cros to Gentoo glue
-
-	local py gdbdir=/usr/share/gdb/auto-load${LIBPATH}
-	pushd "${D}"${LIBPATH} >/dev/null
-	for py in $(find . -name '*-gdb.py') ; do
-		local multidir=${py%/*}
-		insinto "${gdbdir}/${multidir}"
-		sed -i "/^libdir =/s:=.*:= '${LIBPATH}/${multidir}':" "${py}" || die #348128
-		doins "${py}" || die
-		rm "${py}" || die
-	done
-	popd >/dev/null
-}
-
-# make sure the libtool archives have libdir set to where they actually
-# -are-, and not where they -used- to be.  also, any dependencies we have
-# on our own .la files need to be updated.
-fix_libtool_libdir_paths() {
-	pushd "${D}" >/dev/null
-
-	pushd "./${1}" >/dev/null
-	local dir="${PWD#${D%/}}"
-	local allarchives=$(echo *.la)
-	allarchives="\(${allarchives// /\\|}\)"
-	popd >/dev/null
-
-	sed -i \
-		-e "/^libdir=/s:=.*:='${dir}':" \
-		./${dir}/*.la
-	sed -i \
-		-e "/^dependency_libs=/s:/[^ ]*/${allarchives}:${LIBPATH}/\1:g" \
-		$(find ./${PREFIX}/lib* -maxdepth 3 -name '*.la') \
-		./${dir}/*.la
-
-	popd >/dev/null
-}
-
-gcc_movelibs() {
-	LIBPATH=$(get_lib_dir)	# cros to Gentoo glue
-
-	local multiarg removedirs=""
-	for multiarg in $($(XGCC) -print-multi-lib) ; do
-		multiarg=${multiarg#*;}
-		multiarg=${multiarg//@/ -}
-
-		local OS_MULTIDIR=$($(XGCC) ${multiarg} --print-multi-os-directory)
-		local MULTIDIR=$($(XGCC) ${multiarg} --print-multi-directory)
-		local TODIR=${D}${LIBPATH}/${MULTIDIR}
-		local FROMDIR=
-
-		[[ -d ${TODIR} ]] || mkdir -p ${TODIR}
-
-		for FROMDIR in \
-			${LIBPATH}/${OS_MULTIDIR} \
-			${LIBPATH}/../${MULTIDIR} \
-			${PREFIX}/lib/${OS_MULTIDIR} \
-			${PREFIX}/${CTARGET}/lib/${OS_MULTIDIR}
-		do
-			removedirs="${removedirs} ${FROMDIR}"
-			FROMDIR=${D}${FROMDIR}
-			if [[ ${FROMDIR} != "${TODIR}" && -d ${FROMDIR} ]] ; then
-				local files=$(find "${FROMDIR}" -maxdepth 1 ! -type d 2>/dev/null)
-				if [[ -n ${files} ]] ; then
-					mv ${files} "${TODIR}"
-				fi
-			fi
-		done
-		fix_libtool_libdir_paths "${LIBPATH}/${MULTIDIR}"
-	done
-
-	# We remove directories separately to avoid this case:
-	#	mv SRC/lib/../lib/*.o DEST
-	#	rmdir SRC/lib/../lib/
-	#	mv SRC/lib/../lib32/*.o DEST  # Bork
-	for FROMDIR in ${removedirs} ; do
-		rmdir "${D}"${FROMDIR} >& /dev/null
-	done
-	find "${D}" -type d | xargs rmdir >& /dev/null
-}
-
-# If you need to force a cros_workon uprev, change this number (you can use next
-# uprev): 272
diff --git a/sys-devel/gcc/gcc-9999.ebuild b/sys-devel/gcc/gcc-9999.ebuild
deleted file mode 100644
index 5442f3ba..0000000
--- a/sys-devel/gcc/gcc-9999.ebuild
+++ /dev/null
@@ -1,606 +0,0 @@
-# Copyright 1999-2014 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-4.4.3-r3.ebuild,v 1.1 2010/06/19 01:53:09 zorry Exp $
-
-EAPI="7"
-CROS_WORKON_REPO="https://android.googlesource.com"
-CROS_WORKON_PROJECT="toolchain/gcc"
-CROS_WORKON_LOCALNAME=../aosp/toolchain/gcc
-NEXT_GCC="origin/svn-mirror/google/gcc-4_9"
-NEXT_GCC_REPO="https://chromium.googlesource.com/chromiumos/third_party/gcc.git"
-
-# By default, PREV_GCC points to the parent of current tip of origin/master.
-# If that is a bad commit, override this to point to the last known good commit.
-PREV_GCC="origin/master^"
-
-inherit eutils cros-workon binutils-funcs
-
-GCC_FILESDIR="${PORTDIR}/sys-devel/gcc/files"
-
-DESCRIPTION="The GNU Compiler Collection.  Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking. This Compiler is based off of Crosstoolv14."
-
-LICENSE="GPL-3 LGPL-3 libgcc FDL-1.2"
-KEYWORDS="~*"
-
-RDEPEND=">=sys-libs/zlib-1.1.4
-	>=sys-devel/gcc-config-1.6
-	virtual/libiconv
-	>=dev-libs/gmp-4.3.2
-	>=dev-libs/mpc-0.8.1
-	>=dev-libs/mpfr-2.4.2
-	graphite? (
-		>=dev-libs/cloog-0.18.0
-		>=dev-libs/isl-0.11.1
-	)"
-DEPEND="${RDEPEND}
-	test? (
-		>=dev-util/dejagnu-1.4.4
-		>=sys-devel/autogen-5.5.4
-	)
-	>=sys-apps/texinfo-4.8
-	>=sys-devel/bison-1.875"
-PDEPEND=">=sys-devel/gcc-config-1.7"
-BDEPEND="${CATEGORY}/binutils"
-
-RESTRICT="mirror strip"
-
-IUSE="gcc_repo gcj git_gcc go graphite gtk hardened hardfp llvm-next llvm-tot mounted_gcc multilib
-	nls cxx openmp test tests +thumb upstream_gcc vanilla vtable_verify +wrapper_ccache
-	next_gcc prev_gcc"
-REQUIRED_USE="next_gcc? ( !prev_gcc )"
-
-is_crosscompile() { [[ ${CHOST} != ${CTARGET} ]] ; }
-
-export CTARGET=${CTARGET:-${CHOST}}
-if [[ ${CTARGET} = ${CHOST} ]] ; then
-	if [[ ${CATEGORY/cross-} != ${CATEGORY} ]] ; then
-		export CTARGET=${CATEGORY/cross-}
-	fi
-fi
-
-SLOT="${CTARGET}"
-
-PREFIX=/usr
-
-update_location_for_aosp() {
-	# For aosp gcc repository, the actual gcc directory is 1 more
-	# level down, eg. gcc/gcc-4.9, pick up the newest one in this
-	# case.
-	local gccsub=$(find "${S}" -maxdepth 1 -type d -name "gcc-*" | sort -r | head -1)
-	if [[ -d "${gccsub}" ]] && [[ -d "${gccsub}/gcc/config/arm/" ]]; then
-		S="${gccsub}"
-	fi
-	cd "${S}"
-}
-
-cros_pre_src_prepare_use_gcc() {
-	cros_use_gcc
-}
-
-src_unpack() {
-	if use mounted_gcc ; then
-		if [[ ! -d "$(get_gcc_dir)" ]] ; then
-			die "gcc dir not mounted/present at: $(get_gcc_dir)"
-		fi
-		S=$(get_gcc_dir)
-	elif use upstream_gcc ; then
-		GCC_MIRROR=ftp://mirrors.kernel.org/gnu/gcc
-		GCC_TARBALL=${GCC_MIRROR}/${P}/${P}.tar.bz2
-		wget $GCC_TARBALL
-		tar xf ${GCC_TARBALL##*/}
-	elif use git_gcc || use next_gcc || use prev_gcc ; then
-		aosp_git="${CROS_WORKON_REPO}/${CROS_WORKON_PROJECT}.git"
-		if use gcc_repo ; then
-			gcc_repository="${GCC_REPO}"
-		elif use next_gcc ; then
-			gcc_repository="${NEXT_GCC_REPO}"
-		else
-			gcc_repository="${aosp_git}"
-		fi
-		git clone --depth 1 --no-single-branch "${gcc_repository}" "${S}"
-		if use next_gcc ; then
-			GCC_GITHASH="${NEXT_GCC}"
-		fi
-		if use prev_gcc ; then
-			GCC_GITHASH="${PREV_GCC}"
-		fi
-		if [[ -n ${GCC_GITHASH} ]] ; then
-			einfo "Checking out: ${GCC_GITHASH}"
-			pushd "$(get_gcc_dir)" >/dev/null
-			git checkout ${GCC_GITHASH} || \
-				die "Couldn't checkout ${GCC_GITHASH}"
-			popd >/dev/null
-		fi
-		if [[ ${gcc_repository} == "${aosp_git}" ]] ; then
-			update_location_for_aosp
-		fi
-	else
-		cros-workon_src_unpack
-		update_location_for_aosp
-		[[ ${ABI} == "x32" ]] && eapply "${FILESDIR}"/90_all_gcc-4.7-x32.patch
-	fi
-
-	COST_PKG_VERSION="$("${FILESDIR}"/chromeos-version.sh "${S}")_cos_gg"
-	if [[ -d ${S}/.git ]]; then
-		COST_PKG_VERSION+="_$(cd ${S}; git describe --always)"
-	elif [[ -n ${VCSID} ]]; then
-		COST_PKG_VERSION+="_${VCSID}"
-	fi
-	COST_PKG_VERSION+="_${PVR}"
-}
-
-src_configure() {
-	if use mounted_gcc && [[ -f $(get_gcc_build_dir)/Makefile ]]; then
-		ewarn "Skipping configure due to existing build output"
-		return
-	fi
-
-	# GCC builds do not like LD being set, it will find correct LD to use.
-	unset LD BUILD_LD
-
-	local gcc_langs="c"
-	use cxx && gcc_langs+=",c++"
-	use go && gcc_langs+=",go"
-
-	# Set configuration based on path variables
-	local DATAPATH=$(get_data_dir)
-	local confgcc=(
-		--prefix=${PREFIX}
-		--bindir=$(get_bin_dir)
-		--datadir=${DATAPATH}
-		--includedir=$(get_lib_dir)/include
-		--with-gxx-include-dir=$(get_stdcxx_incdir)
-		--mandir=${DATAPATH}/man
-		--infodir=${DATAPATH}/info
-		--with-python-dir=${DATAPATH#${PREFIX}}/python
-
-		--build=${CBUILD}
-		--host=${CHOST}
-		--target=${CTARGET}
-		--enable-languages=${gcc_langs}
-		--enable-__cxa_atexit
-		--disable-canonical-system-headers
-		--enable-checking=release
-		--enable-linker-build-id
-
-		--with-bugurl='http://code.google.com/p/chromium-os/issues/entry'
-		--with-pkgversion="${COST_PKG_VERSION}"
-
-		$(use_enable go libatomic)
-		$(use_enable multilib)
-		$(use_enable openmp libgomp)
-
-		# Disable libs we don't care about.
-		--disable-libcilkrts
-		--disable-libitm
-		--disable-libmudflap
-		--disable-libquadmath
-		--disable-libssp
-		--disable-libsanitizer
-
-		# Enable frame pointer by default for all the boards.
-		# originally only enabled for i686 for chromium-os:23321.
-		--enable-frame-pointer
-	)
-
-	if use vtable_verify; then
-		confgcc+=(
-			--enable-cxx-flags=-Wl,-L../libsupc++/.libs
-			--enable-vtable-verify
-		)
-	fi
-
-	# Handle target-specific options.
-	case ${CTARGET} in
-	arm*)	#264534
-		local arm_arch="${CTARGET%%-*}"
-		# Only do this if arm_arch is armv*
-		if [[ ${arm_arch} == armv* ]]; then
-			# Convert armv7{a,r,m} to armv7-{a,r,m}
-			[[ ${arm_arch} == armv7? ]] && arm_arch=${arm_arch/7/7-}
-			# Remove endian ('l' / 'eb')
-			[[ ${arm_arch} == *l ]] && arm_arch=${arm_arch%l}
-			[[ ${arm_arch} == *eb ]] && arm_arch=${arm_arch%eb}
-			confgcc+=(
-				--with-arch=${arm_arch}
-				--disable-esp
-			)
-		fi
-		use hardfp && confgcc+=( --with-float=hard )
-		use thumb && confgcc+=( --with-mode=thumb )
-		;;
-	i?86*)
-		# Hardened is enabled for x86, but disabled for ARM.
-		confgcc+=(
-			--enable-esp
-			--with-arch=atom
-			--with-tune=atom
-		)
-		;;
-	x86_64*-gnux32)
-		confgcc+=( --with-abi=x32 --with-multilib-list=mx32 )
-		;;
-	esac
-
-	if is_crosscompile; then
-		confgcc+=( --enable-poison-system-directories )
-
-		local needed_libc="glibc"
-		if [[ -n ${needed_libc} ]]; then
-			if ! has_version ${CATEGORY}/${needed_libc}; then
-				confgcc+=( --disable-shared --disable-threads --without-headers )
-			elif has_version "${CATEGORY}/${needed_libc}[crosscompile_opts_headers-only]"; then
-				confgcc+=( --disable-shared --with-sysroot=/usr/${CTARGET} )
-			else
-				confgcc+=( --with-sysroot=/usr/${CTARGET} )
-			fi
-		fi
-	else
-		confgcc+=( --enable-shared --enable-threads=posix )
-	fi
-
-	# Finally add the user options (if any).
-	confgcc+=( ${EXTRA_ECONF} )
-
-	# Build in a separate build tree
-	mkdir -p $(get_gcc_build_dir) || die
-	cd $(get_gcc_build_dir) || die
-
-	# and now to do the actual configuration
-	addwrite /dev/zero
-	echo "Running this:"
-	echo "$(get_gcc_dir)"/configure "${confgcc[@]}"
-	"$(get_gcc_dir)"/configure "${confgcc[@]}" || die
-}
-
-src_compile() {
-	cd "$(get_gcc_build_dir)"
-	GCC_CFLAGS="$(portageq envvar CFLAGS)"
-	TARGET_FLAGS=""
-	TARGET_GO_FLAGS=""
-
-	if use hardened ; then
-		TARGET_FLAGS="${TARGET_FLAGS} -fstack-protector-strong -D_FORTIFY_SOURCE=2"
-	fi
-
-	EXTRA_CFLAGS_FOR_TARGET="${TARGET_FLAGS} ${CFLAGS_FOR_TARGET}"
-	EXTRA_CXXFLAGS_FOR_TARGET="${TARGET_FLAGS} ${CXXFLAGS_FOR_TARGET}"
-
-	if use vtable_verify ; then
-		EXTRA_CXXFLAGS_FOR_TARGET+=" -fvtable-verify=std"
-	fi
-
-	# libgo on arm must be compiled with -marm. Go's panic/recover functionality
-	# is broken in thumb mode.
-	if [[ ${CTARGET} == arm* ]]; then
-		TARGET_GO_FLAGS="${TARGET_GO_FLAGS} -marm"
-	fi
-	EXTRA_GOCFLAGS_FOR_TARGET="${TARGET_GO_FLAGS} ${GOCFLAGS_FOR_TARGET}"
-
-	# Do not link libgcc with gold. That is known to fail on internal linker
-	# errors. See crosbug.com/16719
-	local LD_NON_GOLD="$(get_binutils_path_ld ${CTARGET})/ld"
-
-	emake CFLAGS="${GCC_CFLAGS}" \
-		LDFLAGS="-Wl,-O1" \
-		STAGE1_CFLAGS="-O2 -pipe" \
-		BOOT_CFLAGS="-O2" \
-		CFLAGS_FOR_TARGET="$(get_make_var CFLAGS_FOR_TARGET) ${EXTRA_CFLAGS_FOR_TARGET}" \
-		CXXFLAGS_FOR_TARGET="$(get_make_var CXXFLAGS_FOR_TARGET) ${EXTRA_CXXFLAGS_FOR_TARGET}" \
-		GOCFLAGS_FOR_TARGET="$(get_make_var GOCFLAGS_FOR_TARGET) ${EXTRA_GOCFLAGS_FOR_TARGET}" \
-		LD_FOR_TARGET="${LD_NON_GOLD}" \
-		all
-}
-
-# Logic copied from Gentoo's toolchain.eclass.
-toolchain_src_install() {
-	BINPATH=$(get_bin_dir) # cros to Gentoo glue
-
-	# These should be symlinks
-	dodir /usr/bin
-	cd "${D}"${BINPATH}
-	for x in cpp gcc g++ c++ gcov g77 gcj gcjh gfortran gccgo ; do
-		# For some reason, g77 gets made instead of ${CTARGET}-g77...
-		# this should take care of that
-		[[ -f ${x} ]] && mv ${x} ${CTARGET}-${x}
-
-		if [[ -f ${CTARGET}-${x} ]] ; then
-			if ! is_crosscompile ; then
-				ln -sf ${CTARGET}-${x} ${x}
-				dosym ${BINPATH}/${CTARGET}-${x} \
-					/usr/bin/${x}-${GCC_CONFIG_VER}
-			fi
-
-			# Create version-ed symlinks
-			dosym ${BINPATH}/${CTARGET}-${x} \
-				/usr/bin/${CTARGET}-${x}-${GCC_CONFIG_VER}
-		fi
-
-		if [[ -f ${CTARGET}-${x}-${GCC_CONFIG_VER} ]] ; then
-			rm -f ${CTARGET}-${x}-${GCC_CONFIG_VER}
-			ln -sf ${CTARGET}-${x} ${CTARGET}-${x}-${GCC_CONFIG_VER}
-		fi
-	done
-}
-
-src_install() {
-	cd "$(get_gcc_build_dir)"
-	emake DESTDIR="${D}" install
-
-	find "${D}" -name libiberty.a -exec rm -f "{}" \;
-
-	# Move the libraries to the proper location
-	gcc_movelibs
-
-	# Move pretty-printers to gdb datadir to shut ldconfig up
-	gcc_move_pretty_printers
-
-	GCC_CONFIG_VER=$(get_gcc_base_ver)
-	dodir /etc/env.d/gcc
-	insinto /etc/env.d/gcc
-
-	local LDPATH=$(get_lib_dir)
-	for SUBDIR in 32 64 ; do
-		if [[ -d ${D}/${LDPATH}/${SUBDIR} ]]
-		then
-			LDPATH="${LDPATH}:${LDPATH}/${SUBDIR}"
-		fi
-	done
-
-	cat <<-EOF > env.d
-LDPATH="${LDPATH}"
-MANPATH="$(get_data_dir)/man"
-INFOPATH="$(get_data_dir)/info"
-STDCXX_INCDIR="$(get_stdcxx_incdir)"
-CTARGET=${CTARGET}
-GCC_PATH="$(get_bin_dir)"
-GCC_VER="$(get_gcc_base_ver)"
-EOF
-	newins env.d $(get_gcc_config_file)
-	cd -
-
-	toolchain_src_install
-
-	cd "${D}$(get_bin_dir)"
-
-	local use_llvm_next=false
-	if use llvm-next || use llvm-tot
-	then
-		use_llvm_next=true
-	fi
-
-	if is_crosscompile ; then
-		local sysroot_wrapper_file_prefix
-		local sysroot_wrapper_config
-		if use hardened
-		then
-			sysroot_wrapper_file_prefix=sysroot_wrapper.hardened
-			sysroot_wrapper_config=cros.hardened
-		else
-			sysroot_wrapper_file_prefix=sysroot_wrapper
-			sysroot_wrapper_config=cros.nonhardened
-		fi
-
-		exeinto "$(get_bin_dir)"
-		cat "${FILESDIR}/bisect_driver.py" > \
-			"${D}$(get_bin_dir)/bisect_driver.py" || die
-
-		# Note: We are always producing both versions, with and without ccache,
-		# so we can replace the behavior of the wrapper without rebuilding it.
-		# Used e.g. in chromite/scripts/cros_setup_toolchains.py to disable the
-		# ccache for simplechrome toolchains.
-		local ccache_suffixes=(noccache ccache)
-		local ccache_option_values=(false true)
-		for ccache_index in {0,1}; do
-			local ccache_suffix="${ccache_suffixes[${ccache_index}]}"
-			local ccache_option="${ccache_option_values[${ccache_index}]}"
-			# Build new golang wrapper
-			"${FILESDIR}/compiler_wrapper/build.py" --config="${sysroot_wrapper_config}" \
-				--use_ccache="${ccache_option}" \
-				--use_llvm_next="${use_llvm_next}" \
-				--output_file="${D}$(get_bin_dir)/${sysroot_wrapper_file_prefix}.${ccache_suffix}" || die
-		done
-
-		local use_ccache_index
-		use_ccache_index="$(usex wrapper_ccache 1 0)"
-		local sysroot_wrapper_file="${sysroot_wrapper_file_prefix}.${ccache_suffixes[${use_ccache_index}]}"
-
-		for x in c++ g++ gcc; do
-			if [[ -f "${CTARGET}-${x}" ]]; then
-				mv "${CTARGET}-${x}" "${CTARGET}-${x}.real"
-				dosym "${sysroot_wrapper_file}" "$(get_bin_dir)/${CTARGET}-${x}" || die
-			fi
-		done
-		for x in clang clang++; do
-			dosym "${sysroot_wrapper_file}" "$(get_bin_dir)/${CTARGET}-${x}" || die
-		done
-		if use go; then
-			local wrapper="sysroot_wrapper.gccgo"
-			doexe "${FILESDIR}/${wrapper}" || die
-			mv "${CTARGET}-gccgo" "${CTARGET}-gccgo.real" || die
-			dosym "${wrapper}" "$(get_bin_dir)/${CTARGET}-gccgo" || die
-		fi
-	else
-		local sysroot_wrapper_file=host_wrapper
-
-		exeinto "$(get_bin_dir)"
-
-		"${FILESDIR}/compiler_wrapper/build.py" --config=cros.host --use_ccache=false \
-			--use_llvm_next="${use_llvm_next}" \
-			--output_file="${D}$(get_bin_dir)/${sysroot_wrapper_file}" || die
-
-		for x in c++ g++ gcc; do
-			if [[ -f "${CTARGET}-${x}" ]]; then
-				mv "${CTARGET}-${x}" "${CTARGET}-${x}.real"
-				dosym "${sysroot_wrapper_file}" "$(get_bin_dir)/${CTARGET}-${x}" || die
-			fi
-			if [[ -f "${x}" ]]; then
-				ln "${CTARGET}-${x}.real" "${x}.real" || die
-				rm "${x}" || die
-				dosym "${sysroot_wrapper_file}" "$(get_bin_dir)/${x}" || die
-				# Add a cc.real symlink that points to gcc.real, https://crbug.com/1090449
-				if [[ "${x}" == "gcc" ]]; then
-					dosym "${x}.real" "$(get_bin_dir)/cc.real"
-				fi
-			fi
-		done
-	fi
-
-	if use tests
-	then
-		TEST_INSTALL_DIR="usr/local/dejagnu/gcc"
-		dodir ${TEST_INSTALL_DIR}
-		cd ${D}/${TEST_INSTALL_DIR}
-		tar -czf "tests.tar.gz" ${WORKDIR}
-	fi
-}
-
-pkg_postinst() {
-	gcc-config $(get_gcc_config_file)
-}
-
-pkg_postrm() {
-	if is_crosscompile ; then
-		if [[ -z $(ls "${ROOT}"/etc/env.d/gcc/${CTARGET}* 2>/dev/null) ]] ; then
-			rm -f "${ROOT}"/etc/env.d/gcc/config-${CTARGET}
-			rm -f "${ROOT}"/etc/env.d/??gcc-${CTARGET}
-			rm -f "${ROOT}"/usr/bin/${CTARGET}-{gcc,{g,c}++}{,32,64}
-		fi
-	fi
-}
-
-get_gcc_dir() {
-	local GCCDIR
-	if use mounted_gcc ; then
-		GCCDIR=${GCC_SOURCE_PATH:=/usr/local/toolchain_root/gcc}
-	elif use upstream_gcc ; then
-		GCCDIR=${P}
-	else
-		GCCDIR=${S}
-	fi
-	echo "${GCCDIR}"
-}
-
-get_gcc_build_dir() {
-	echo "$(get_gcc_dir)-build-${CTARGET}"
-}
-
-get_gcc_base_ver() {
-	cat "$(get_gcc_dir)/gcc/BASE-VER"
-}
-
-get_stdcxx_incdir() {
-	echo "$(get_lib_dir)/include/g++-v4"
-}
-
-get_lib_dir() {
-	echo "${PREFIX}/lib/gcc/${CTARGET}/$(get_gcc_base_ver)"
-}
-
-get_bin_dir() {
-	if is_crosscompile ; then
-		echo ${PREFIX}/${CHOST}/${CTARGET}/gcc-bin/$(get_gcc_base_ver)
-	else
-		echo ${PREFIX}/${CTARGET}/gcc-bin/$(get_gcc_base_ver)
-	fi
-}
-
-get_data_dir() {
-	echo "${PREFIX}/share/gcc-data/${CTARGET}/$(get_gcc_base_ver)"
-}
-
-get_gcc_config_file() {
-	echo ${CTARGET}-${PV}
-}
-
-# Grab a variable from the build system (taken from linux-info.eclass)
-get_make_var() {
-	local var=$1 makefile=${2:-$(get_gcc_build_dir)/Makefile}
-	echo -e "e:\\n\\t@echo \$(${var})\\ninclude ${makefile}" | \
-		r=${makefile%/*} emake --no-print-directory -s -f - 2>/dev/null
-}
-XGCC() { get_make_var GCC_FOR_TARGET ; }
-
-gcc_move_pretty_printers() {
-	LIBPATH=$(get_lib_dir)  # cros to Gentoo glue
-
-	local py gdbdir=/usr/share/gdb/auto-load${LIBPATH}
-	pushd "${D}"${LIBPATH} >/dev/null
-	for py in $(find . -name '*-gdb.py') ; do
-		local multidir=${py%/*}
-		insinto "${gdbdir}/${multidir}"
-		sed -i "/^libdir =/s:=.*:= '${LIBPATH}/${multidir}':" "${py}" || die #348128
-		doins "${py}" || die
-		rm "${py}" || die
-	done
-	popd >/dev/null
-}
-
-# make sure the libtool archives have libdir set to where they actually
-# -are-, and not where they -used- to be.  also, any dependencies we have
-# on our own .la files need to be updated.
-fix_libtool_libdir_paths() {
-	pushd "${D}" >/dev/null
-
-	pushd "./${1}" >/dev/null
-	local dir="${PWD#${D%/}}"
-	local allarchives=$(echo *.la)
-	allarchives="\(${allarchives// /\\|}\)"
-	popd >/dev/null
-
-	sed -i \
-		-e "/^libdir=/s:=.*:='${dir}':" \
-		./${dir}/*.la
-	sed -i \
-		-e "/^dependency_libs=/s:/[^ ]*/${allarchives}:${LIBPATH}/\1:g" \
-		$(find ./${PREFIX}/lib* -maxdepth 3 -name '*.la') \
-		./${dir}/*.la
-
-	popd >/dev/null
-}
-
-gcc_movelibs() {
-	LIBPATH=$(get_lib_dir)	# cros to Gentoo glue
-
-	local multiarg removedirs=""
-	for multiarg in $($(XGCC) -print-multi-lib) ; do
-		multiarg=${multiarg#*;}
-		multiarg=${multiarg//@/ -}
-
-		local OS_MULTIDIR=$($(XGCC) ${multiarg} --print-multi-os-directory)
-		local MULTIDIR=$($(XGCC) ${multiarg} --print-multi-directory)
-		local TODIR=${D}${LIBPATH}/${MULTIDIR}
-		local FROMDIR=
-
-		[[ -d ${TODIR} ]] || mkdir -p ${TODIR}
-
-		for FROMDIR in \
-			${LIBPATH}/${OS_MULTIDIR} \
-			${LIBPATH}/../${MULTIDIR} \
-			${PREFIX}/lib/${OS_MULTIDIR} \
-			${PREFIX}/${CTARGET}/lib/${OS_MULTIDIR}
-		do
-			removedirs="${removedirs} ${FROMDIR}"
-			FROMDIR=${D}${FROMDIR}
-			if [[ ${FROMDIR} != "${TODIR}" && -d ${FROMDIR} ]] ; then
-				local files=$(find "${FROMDIR}" -maxdepth 1 ! -type d 2>/dev/null)
-				if [[ -n ${files} ]] ; then
-					mv ${files} "${TODIR}"
-				fi
-			fi
-		done
-		fix_libtool_libdir_paths "${LIBPATH}/${MULTIDIR}"
-	done
-
-	# We remove directories separately to avoid this case:
-	#	mv SRC/lib/../lib/*.o DEST
-	#	rmdir SRC/lib/../lib/
-	#	mv SRC/lib/../lib32/*.o DEST  # Bork
-	for FROMDIR in ${removedirs} ; do
-		rmdir "${D}"${FROMDIR} >& /dev/null
-	done
-	find "${D}" -type d | xargs rmdir >& /dev/null
-}
-
-# If you need to force a cros_workon uprev, change this number (you can use next
-# uprev): 272
diff --git a/sys-devel/gdb/files/gdb-9.2-inlined-unwind.patch b/sys-devel/gdb/files/gdb-9.2-inlined-unwind.patch
new file mode 100644
index 0000000..6d82d999
--- /dev/null
+++ b/sys-devel/gdb/files/gdb-9.2-inlined-unwind.patch
@@ -0,0 +1,75 @@
+The inlined frame unwinder has a built-in assumption that it can
+always unwind to a good non-inlined frame. If this assumption is
+violated GDB dies with an internal error. Sometimes, when there are
+issues unwinding the stack, this assumption is not true: the non-lined
+frame is considered 'bad' and gets thrown out.  This patch updates GDB
+so that, in that case, GDB will stop the backtrace giving the user an
+error message, rather than crash with an internal error.
+
+Author: cmtice@google.com
+Date: 27-May-2021
+diff --git a/gdb/frame.c b/gdb/frame.c
+index c746a6a..9cbf88d 100644
+--- a/gdb/frame.c
++++ b/gdb/frame.c
+@@ -262,7 +262,7 @@ frame_stash_add (struct frame_info *frame)
+      either have a stack cycle (corrupted stack?), or some bug
+      elsewhere in GDB.  In any case, ignore the duplicate and return
+      an indication to the caller.  */
+-  if (*slot != NULL)
++  if ((*slot != NULL) || (frame->stop_reason == UNWIND_SAME_ID))
+     return 0;
+
+   *slot = frame;
+@@ -584,7 +584,6 @@ get_frame_id (struct frame_info *fi)
+       /* Since this is the first frame in the chain, this should
+ 	 always succeed.  */
+       stashed = frame_stash_add (fi);
+-      gdb_assert (stashed);
+     }
+
+   return fi->this_id.value;
+@@ -1935,7 +1935,16 @@ get_prev_frame_if_no_cycle (struct frame_info *this_frame)
+ 	      fprint_frame (gdb_stdlog, NULL);
+ 	      fprintf_unfiltered (gdb_stdlog, " // this frame has same ID }\n");
+ 	    }
+-	  this_frame->stop_reason = UNWIND_SAME_ID;
++	  if ((get_frame_type (prev_frame) == INLINE_FRAME)
++	      && (prev_frame->stop_reason == UNWIND_SAME_ID))
++	    {
++	      if (get_frame_type (this_frame) == INLINE_FRAME)
++		this_frame->stop_reason = UNWIND_SAME_ID;
++	      return prev_frame;
++	    }
++	  else
++	    this_frame->stop_reason = UNWIND_SAME_ID;
++
+ 	  /* Unlink.  */
+ 	  prev_frame->next = NULL;
+ 	  this_frame->prev = NULL;
+diff --git a/gdb/inline-frame.c b/gdb/inline-frame.c
+index 9982046..814c4e4 100644
+--- a/gdb/inline-frame.c
++++ b/gdb/inline-frame.c
+@@ -138,6 +138,7 @@ inline_frame_this_id (struct frame_info *this_frame,
+ 		      struct frame_id *this_id)
+ {
+   struct symbol *func;
++  struct frame_info *prev_frame;
+
+   /* In order to have a stable frame ID for a given inline function,
+      we must get the stack / special addresses from the underlying
+@@ -145,7 +146,12 @@ inline_frame_this_id (struct frame_info *this_frame,
+      get_prev_frame_always.  Because we are inlined into some
+      function, there must be previous frames, so this is safe - as
+      long as we're careful not to create any cycles.  */
+-  *this_id = get_frame_id (get_prev_frame_always (this_frame));
++  prev_frame = get_prev_frame_always (this_frame);
++  if ((prev_frame != NULL)
++      && (get_frame_unwind_stop_reason (prev_frame) != UNWIND_SAME_ID))
++    *this_id = get_frame_id (prev_frame);
++  else
++    return;
+
+   /* We need a valid frame ID, so we need to be based on a valid
+      frame.  FSF submission NOTE: this would be a good assertion to
diff --git a/sys-devel/gdb/files/gdb-9.2-sht_relr-part2.patch b/sys-devel/gdb/files/gdb-9.2-sht_relr-part2.patch
new file mode 100644
index 0000000..8244de6
--- /dev/null
+++ b/sys-devel/gdb/files/gdb-9.2-sht_relr-part2.patch
@@ -0,0 +1,158 @@
+This patch applies the changes from
+https://android-review.googlesource.com/c/toolchain/gdb/+/676496, to add
+support for SHT_RELR sections. It does not contain the common.h changes
+from that patch, as they are added in the gdb-9.2-sht_relr.patch (in this
+directory).
+
+This patch was copied/created by Caroline Tice (cmtice@chromium.org)
+Date: 26-Jan-2021
+diff --git a/bfd/elf.c b/bfd/elf.c
+index 1aa2603..e5e5fbf 100644
+--- a/bfd/elf.c
++++ b/bfd/elf.c
+@@ -1761,6 +1761,9 @@ _bfd_elf_print_private_bfd_data (bfd *abfd, void *farg)
+ 	    case DT_RELA: name = "RELA"; break;
+ 	    case DT_RELASZ: name = "RELASZ"; break;
+ 	    case DT_RELAENT: name = "RELAENT"; break;
++	    case DT_RELR: name = "RELR"; break;
++	    case DT_RELRSZ: name = "RELRSZ"; break;
++	    case DT_RELRENT: name = "RELRENT"; break;
+ 	    case DT_STRSZ: name = "STRSZ"; break;
+ 	    case DT_SYMENT: name = "SYMENT"; break;
+ 	    case DT_INIT: name = "INIT"; break;
+@@ -1798,6 +1801,7 @@ _bfd_elf_print_private_bfd_data (bfd *abfd, void *farg)
+ 	    case DT_PLTPAD: name = "PLTPAD"; break;
+ 	    case DT_MOVETAB: name = "MOVETAB"; break;
+ 	    case DT_SYMINFO: name = "SYMINFO"; break;
++	    case DT_RELRCOUNT: name = "RELRCOUNT"; break;
+ 	    case DT_RELACOUNT: name = "RELACOUNT"; break;
+ 	    case DT_RELCOUNT: name = "RELCOUNT"; break;
+ 	    case DT_FLAGS_1: name = "FLAGS_1"; break;
+@@ -2364,16 +2368,30 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
+ 
+     case SHT_REL:
+     case SHT_RELA:
++    case SHT_RELR:
+       /* *These* do a lot of work -- but build no sections!  */
+       {
+ 	asection *target_sect;
+ 	Elf_Internal_Shdr *hdr2, **p_hdr;
+ 	unsigned int num_sec = elf_numsections (abfd);
+ 	struct bfd_elf_section_data *esdt;
++	bfd_size_type size;
+ 
+-	if (hdr->sh_entsize
+-	    != (bfd_size_type) (hdr->sh_type == SHT_REL
+-				? bed->s->sizeof_rel : bed->s->sizeof_rela))
++	switch (hdr->sh_type)
++	{
++        case SHT_REL:
++	  size = bed->s->sizeof_rel;
++	  break;
++        case SHT_RELA:
++	  size = bed->s->sizeof_rela;
++	  break;
++        case SHT_RELR:
++	  size = bed->s->sizeof_relr;
++	  break;
++        default:
++	  goto fail;
++        }
++	if (hdr->sh_entsize  != size)
+ 	  goto fail;
+ 
+ 	/* Check for a bogus link to avoid crashing.  */
+@@ -2443,7 +2461,8 @@ bfd_section_from_shdr (bfd *abfd, unsigned int shindex)
+ 	    || hdr->sh_info == SHN_UNDEF
+ 	    || hdr->sh_info >= num_sec
+ 	    || elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_REL
+-	    || elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_RELA)
++	    || elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_RELA
++	    || elf_elfsections (abfd)[hdr->sh_info]->sh_type == SHT_RELR)
+ 	  {
+ 	    ret = _bfd_elf_make_section_from_shdr (abfd, hdr, name,
+ 						   shindex);
+diff --git a/bfd/elf-bfd.h b/bfd/elf-bfd.h
+index 6cfd1ac..78d2d74 100644
+--- a/bfd/elf-bfd.h
++++ b/bfd/elf-bfd.h
+@@ -696,7 +696,8 @@ struct sym_cache
+ 
+ struct elf_size_info {
+   unsigned char sizeof_ehdr, sizeof_phdr, sizeof_shdr;
+-  unsigned char sizeof_rel, sizeof_rela, sizeof_sym, sizeof_dyn, sizeof_note;
++  unsigned char sizeof_rel, sizeof_rela, sizeof_relr, sizeof_sym, sizeof_dyn,
++    sizeof_note;
+ 
+   /* The size of entries in the .hash section.  */
+   unsigned char sizeof_hash_entry;
+diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
+index ebe199c..1e0d2d7 100644
+--- a/bfd/elf32-arm.c
++++ b/bfd/elf32-arm.c
+@@ -20008,6 +20008,7 @@ const struct elf_size_info elf32_arm_size_info =
+   sizeof (Elf32_External_Shdr),
+   sizeof (Elf32_External_Rel),
+   sizeof (Elf32_External_Rela),
++  sizeof (Elf32_External_Relr),
+   sizeof (Elf32_External_Sym),
+   sizeof (Elf32_External_Dyn),
+   sizeof (Elf_External_Note),
+diff --git a/bfd/elfcode.h b/bfd/elfcode.h
+index 625ae99..8cef7d1 100644
+--- a/bfd/elfcode.h
++++ b/bfd/elfcode.h
+@@ -80,6 +80,7 @@
+ #define Elf_External_Phdr	NAME(Elf,External_Phdr)
+ #define Elf_External_Rel	NAME(Elf,External_Rel)
+ #define Elf_External_Rela	NAME(Elf,External_Rela)
++#define Elf_External_Relr	NAME(Elf,External_Relr)
+ #define Elf_External_Dyn	NAME(Elf,External_Dyn)
+ 
+ #define elf_core_file_failing_command	NAME(bfd_elf,core_file_failing_command)
+@@ -1917,6 +1918,7 @@ const struct elf_size_info NAME(_bfd_elf,size_info) = {
+   sizeof (Elf_External_Shdr),
+   sizeof (Elf_External_Rel),
+   sizeof (Elf_External_Rela),
++  sizeof (Elf_External_Relr),
+   sizeof (Elf_External_Sym),
+   sizeof (Elf_External_Dyn),
+   sizeof (Elf_External_Note),
+diff --git a/bfd/elfnn-aarch64.c b/bfd/elfnn-aarch64.c
+index 51d7526..251362c 100644
+--- a/bfd/elfnn-aarch64.c
++++ b/bfd/elfnn-aarch64.c
+@@ -9984,6 +9984,7 @@ const struct elf_size_info elfNN_aarch64_size_info =
+   sizeof (ElfNN_External_Shdr),
+   sizeof (ElfNN_External_Rel),
+   sizeof (ElfNN_External_Rela),
++  sizeof (ElfNN_External_Relr),
+   sizeof (ElfNN_External_Sym),
+   sizeof (ElfNN_External_Dyn),
+   sizeof (Elf_External_Note),
+diff --git a/include/elf/external.h b/include/elf/external.h
+index 73e3cbf..9d67981 100644
+--- a/include/elf/external.h
++++ b/include/elf/external.h
+@@ -211,6 +211,10 @@ typedef struct {
+   unsigned char	r_addend[4];	/* Constant addend used to compute value */
+ } Elf32_External_Rela;
+ 
++typedef struct {
++  unsigned char r_data[4];	/* jump and bitmap for relative relocations */
++} Elf32_External_Relr;
++
+ typedef struct {
+   unsigned char r_offset[8];	/* Location at which to apply the action */
+   unsigned char	r_info[8];	/* index and type of relocation */
+@@ -222,6 +226,10 @@ typedef struct {
+   unsigned char	r_addend[8];	/* Constant addend used to compute value */
+ } Elf64_External_Rela;
+ 
++typedef struct {
++  unsigned char r_data[8];	/* jump and bitmap for relative relocations */
++} Elf64_External_Relr;
++
+ /* dynamic section structure */
+ 
+ typedef struct {
diff --git a/sys-devel/gdb/files/gdb-9.2-sigsys.patch b/sys-devel/gdb/files/gdb-9.2-sigsys.patch
new file mode 100644
index 0000000..bceadbd
--- /dev/null
+++ b/sys-devel/gdb/files/gdb-9.2-sigsys.patch
@@ -0,0 +1,29 @@
+This patch adds information about _sigsys structure from newer kernels, so that
+$_siginfo decoding can show information about _sigsys, making it easier for
+developers to debug seccomp failures.
+
+Code is copied from suggested patch for this issue in
+https://sourceware.org/bugzilla/show_bug.cgi?id=24283.
+
+This fixes crosbug/937009.
+
+Author: cmtice@google.com
+Date: 09-Mar-2021
+diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
+index 59d04c4..c52d425 100644
+--- a/gdb/linux-tdep.c
++++ b/gdb/linux-tdep.c
+@@ -350,6 +350,13 @@ linux_get_siginfo_type_with_fields (struct gdbarch *gdbarch,
+   append_composite_type_field (type, "si_fd", int_type);
+   append_composite_type_field (sifields_type, "_sigpoll", type);
+ 
++  /* _sigsys */
++  type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
++  append_composite_type_field (type, "_call_addr", void_ptr_type);
++  append_composite_type_field (type, "_syscall", int_type);
++  append_composite_type_field (type, "_arch", uint_type);
++  append_composite_type_field (sifields_type, "_sigsys", type);
++
+   /* struct siginfo */
+   siginfo_type = arch_composite_type (gdbarch, NULL, TYPE_CODE_STRUCT);
+   TYPE_NAME (siginfo_type) = xstrdup ("siginfo");
diff --git a/sys-devel/gdb/files/gdb-9.2-update-loclists.patch b/sys-devel/gdb/files/gdb-9.2-update-loclists.patch
new file mode 100644
index 0000000..a61f2cf
--- /dev/null
+++ b/sys-devel/gdb/files/gdb-9.2-update-loclists.patch
@@ -0,0 +1,88 @@
+GDB currently does not handle all DW5 loclist options.
+
+This patch adds code to handle DW_LLE_base_addressx,
+DW_LLE_startx_length, and DW_LLE_start_length.  This code was
+backported (and updated sligntly) from upstream GDB.
+
+Author: cmtice
+Date: 05-Apr-2021
+diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
+index 99cac03..7100241 100644
+--- a/gdb/dwarf2loc.c
++++ b/gdb/dwarf2loc.c
+@@ -173,9 +173,55 @@ decode_debug_loclists_addresses (struct dwarf2_per_cu_data *per_cu,
+ 
+   switch (*loc_ptr++)
+     {
++    case DW_LLE_base_addressx:
++      *low = 0;
++      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
++      if (loc_ptr == NULL)
++         return DEBUG_LOC_BUFFER_OVERFLOW;
++
++      *high = dwarf2_read_addr_index (per_cu, u64);
++      *new_ptr = loc_ptr;
++      return DEBUG_LOC_BASE_ADDRESS;
++
++    case DW_LLE_startx_length:
++      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
++      if (loc_ptr == NULL)
++         return DEBUG_LOC_BUFFER_OVERFLOW;
++
++      *low = dwarf2_read_addr_index (per_cu, u64);
++      *high = *low;
++      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
++      if (loc_ptr == NULL)
++         return DEBUG_LOC_BUFFER_OVERFLOW;
++
++      *high += u64;
++      *new_ptr = loc_ptr;
++      return DEBUG_LOC_START_LENGTH;
++
++    case DW_LLE_start_length:
++      if (buf_end - loc_ptr < addr_size)
++         return DEBUG_LOC_BUFFER_OVERFLOW;
++
++      if (signed_addr_p)
++         *low = extract_signed_integer (loc_ptr, addr_size, byte_order);
++      else
++         *low = extract_unsigned_integer (loc_ptr, addr_size, byte_order);
++
++      loc_ptr += addr_size;
++      *high = *low;
++
++      loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
++      if (loc_ptr == NULL)
++         return DEBUG_LOC_BUFFER_OVERFLOW;
++
++      *high += u64;
++      *new_ptr = loc_ptr;
++      return DEBUG_LOC_START_LENGTH;
++
+     case DW_LLE_end_of_list:
+       *new_ptr = loc_ptr;
+       return DEBUG_LOC_END_OF_LIST;
++
+     case DW_LLE_base_address:
+       if (loc_ptr + addr_size > buf_end)
+ 	return DEBUG_LOC_BUFFER_OVERFLOW;
+@@ -186,6 +232,7 @@ decode_debug_loclists_addresses (struct dwarf2_per_cu_data *per_cu,
+       loc_ptr += addr_size;
+       *new_ptr = loc_ptr;
+       return DEBUG_LOC_BASE_ADDRESS;
++
+     case DW_LLE_offset_pair:
+       loc_ptr = gdb_read_uleb128 (loc_ptr, buf_end, &u64);
+       if (loc_ptr == NULL)
+@@ -197,6 +244,11 @@ decode_debug_loclists_addresses (struct dwarf2_per_cu_data *per_cu,
+       *high = u64;
+       *new_ptr = loc_ptr;
+       return DEBUG_LOC_START_END;
++
++    /* Following cases are not supported yet.  */
++    case DW_LLE_startx_endx:
++    case DW_LLE_start_end:
++    case DW_LLE_default_location:
+     default:
+       return DEBUG_LOC_INVALID_ENTRY;
+     }
diff --git a/sys-devel/gdb/gdb-9.2.20200923-r1.ebuild b/sys-devel/gdb/gdb-9.2.20200923-r5.ebuild
similarity index 100%
rename from sys-devel/gdb/gdb-9.2.20200923-r1.ebuild
rename to sys-devel/gdb/gdb-9.2.20200923-r5.ebuild
diff --git a/sys-devel/gdb/gdb-9.2.20200923.ebuild b/sys-devel/gdb/gdb-9.2.20200923.ebuild
index a40547b..86177fc 100644
--- a/sys-devel/gdb/gdb-9.2.20200923.ebuild
+++ b/sys-devel/gdb/gdb-9.2.20200923.ebuild
@@ -56,6 +56,10 @@
 	"${FILESDIR}"/gdb-9.2-sht_relr.patch
 	"${FILESDIR}"/gdb-9.2-python.patch
 	"${FILESDIR}"/gdb-9.2-aarch64-tdesc.patch
+	"${FILESDIR}"/gdb-9.2-sht_relr-part2.patch
+	"${FILESDIR}"/gdb-9.2-sigsys.patch
+	"${FILESDIR}"/gdb-9.2-update-loclists.patch
+	"${FILESDIR}"/gdb-9.2-inlined-unwind.patch
 )
 
 pkg_setup() {
diff --git a/sys-devel/llvm/Manifest b/sys-devel/llvm/Manifest
index 6052615..5f023b6 100644
--- a/sys-devel/llvm/Manifest
+++ b/sys-devel/llvm/Manifest
@@ -1,4 +1,4 @@
 DIST llvm-9.0.0-manpages.tar.bz2 158546 BLAKE2B eed6235698a0b5993affe305f7fd22cd4cf444adf931275a1685f2049a5f17cf2933907577d9ce142348a3c579769b0436aa2b5a9a953958504125a8c3e83b7d SHA512 64c8d18061eb2870b379a1df485be0b61eac07cb10b3f97347b54b2ee326faa63437ca04466776be282e120dd3f6147e14fffdd38ca370db85748fe5eb54d764
 DIST llvm-9.0.0.src.tar.xz 32994768 BLAKE2B 7f09bff9bcada95ab9c920c78aef92b57e665d9188bab39c734084ceb03a801c942fed48ea77fabeeb6110c648cb69363c659a6ce93ebf67dbba5c187219b13b SHA512 1bb3341e1d231559b948f1505b33c2e2e03989f9b8bbfef0e0cdaff5ac43f85574c9ec5ac53399b914f497d6899425d861411024e8d7e1d1a338c1c6951ac658
-DIST llvm-profdata-83080a294ad7d145d758821bcf4354ad0cb7d299.tar.xz 5299328 BLAKE2B 5cee4d97a883f7170a7e9b4a0000b552da0a83826af9ecaab79060d56f942aaf276fa56cc3cefd9804e55b655276e1db801311e0bce110902d8d128c0af3d7b9 SHA512 b7cdc999a3606b4b12a0aa9e76d23b9a2c1c810b82516ceb5685f86f7f3c0522142825a65314f240bce49c4820a4bf05f78eace8ea7535268553afdfe9bcdc43
-DIST llvm-profdata-f402e682d0ef5598eeffc9a21a691b03e602ff58.tar.xz 6125316 BLAKE2B b55669cc56e185c80c5111a9d30cdaab4b4f5b6645aebb100f2c11e8c03344ed40bf8741b2ccf01cdaf6d9e971a1c1d40754154c03e11493121e38fb37af9e0e SHA512 0eddc0dbc8461d67fe556b45df41bcac17f02660b752ccba5586d1b40d6a6932634b53dabe31e82be24c41957040591f512d05952e6d18f6ae749ad222524221
+DIST llvm-profdata-cd442157cff4aad209ae532cbf031abbe10bc1df.tar.xz 5842760 BLAKE2B dd1a8a6c07aa4102eb4e7f1cbfb9a8567684b0ae63c2e25d02d702459f6910f85f2c39a42a437c80622ad9be90512d52a8949bdadffb20ca9e2bddd3fc6192ae SHA512 09b69eb0bff6a8cfdcbed8857fdc1f8d76193fc93e67e724ffc74f1c2167877fd4f0dd29d9c3041686048979aab4b0de709f03b9000b05ef7dd2f0b39d4249dc
+DIST llvm-profdata-7f6f9f4cf966c78a315d15d6e913c43cfa45c47c.tar.xz 5643044 BLAKE2B f08fb0851b545dc38b32fc48fa00f743651bab0968290ef76ca1e5ed942faab27f72a53247822dcf4da7e12cf07b61897f96aeb518c5969f417a4290467fd350 SHA512 edb3b2628a016ee0fc3abf13d57b6663ce7b9a341c759b70f38c17ac1cd0d72dae8009f9b268c9992bf62ea0450f1681964b85540f2eac5c42fff4d6145eff24
diff --git a/sys-devel/llvm/files/PATCHES.json b/sys-devel/llvm/files/PATCHES.json
index 5d657e7..c0096d5 100644
--- a/sys-devel/llvm/files/PATCHES.json
+++ b/sys-devel/llvm/files/PATCHES.json
@@ -2,7 +2,13 @@
     {
         "comment": "Adds a allowlist of packages that have known memory leaks",
         "rel_patch_path": "llvm-next-leak-allowlist.v2.patch",
-        "start_version": 370808
+        "start_version": 370808,
+        "end_version": 414798
+    },
+    {
+        "comment": "Adds a allowlist of packages that have known memory leaks",
+        "rel_patch_path": "llvm-leak-allowlist.v3.patch",
+        "start_version": 414798
     },
     {
         "comment": "Sets the ASAN message to go to /va/log/asan${pid} by\ndefault",
@@ -34,7 +40,8 @@
     },
     {
         "comment": "Fixes clang.elf calling clang.elf because direct\ncalls to clang.elf misses all environment setup in clang\nwrapper. Calls to clang wrapper instead of clang.elf binary",
-        "rel_patch_path": "llvm-3.8-invocation.patch"
+        "rel_patch_path": "llvm-3.8-invocation.patch",
+        "end_version": 420001
     },
     {
         "comment": "Uses argv[0] to get host system information. Created\na wrapper of LLD and real lld becomes lld.elf so the LLD\ncannot get the host system information and dies",
@@ -479,11 +486,6 @@
         "start_version": 399095
     },
     {
-        "comment": "Revert \"[Driver] -B: don't search for target triple prefixes\"",
-        "rel_patch_path": "revert-3452a0d8c17f7166f479706b293caf6ac76ffd90.patch",
-        "start_version": 399715
-    },
-    {
         "comment": "Revert \"[ARM][LowOverheadLoops] Adjust Start insertion.\"",
         "rel_patch_path": "cherry/6dcbc323fd8778ba6db1c4e76c809f93fc82efc5.patch",
         "start_version": 406792,
@@ -530,5 +532,280 @@
         "rel_patch_path": "cherry/808fcfe5944755f08ae88722070302fcf9135e58.patch",
         "start_version": 407380,
         "end_version": 412204
+    },
+    {
+        "comment": "Revert \"[AMDGPU][HIP] Switch default DWARF version to 5\"",
+        "rel_patch_path": "cherry/ffba47df76460905965df4b54cf6ba945d2eb1ce.patch",
+        "start_version": 408148,
+        "end_version": 414416
+    },
+    {
+        "comment": "[ARM] Implement harden-sls-retbr for ARM mode",
+        "rel_patch_path": "cherry/195f44278c4361a4a32377a98a1e3a15203d3647.patch",
+        "start_version": 412851,
+        "end_version": 414302
+    },
+    {
+        "comment": "[ARM] Implement harden-sls-retbr for Thumb mode",
+        "rel_patch_path": "cherry/320fd3314e378ae6242a2dde97250a8a94d68e27.patch",
+        "start_version": 412851,
+        "end_version": 414304
+    },
+    {
+        "comment": "[ARM] Harden indirect calls against SLS",
+        "rel_patch_path": "cherry/a4c1f5160e6d1de9a9959ecbf329c2acf4f3ed31.patch",
+        "start_version": 412851,
+        "end_version": 414305
+    },
+    {
+        "comment": "[ARM] harden-sls-blr: avoid r12 and lr in indirect calls.",
+        "rel_patch_path": "cherry/df8ed3928377edc6e9241a56680b694ffa9f4d6d.patch",
+        "start_version": 412851,
+        "end_version": 414306
+    },
+    {
+        "comment": "[ARM] Add clang command line support for -mharden-sls=",
+        "rel_patch_path": "cherry/9c895aea118a2f50ca8413372363c3ff6ecc21bf.patch",
+        "start_version": 412851,
+        "end_version": 414307
+    },
+    {
+        "comment": "[Driver] -gsplit-dwarf: Produce .dwo regardless of -gN for -fthinlto-index=",
+        "rel_patch_path": "cherry/53b34601abf1d48e8df210ab8127b16fd35e275a.patch",
+        "start_version": 413220,
+        "end_version": 415982
+    },
+    {
+        "comment": "Revert \"[clang] Change builtin object size when subobject is invalid\"",
+        "rel_patch_path": "cherry/b270fd59f0a86fe737853abc43e76b9d29a67eea.patch",
+        "start_version": 415398,
+        "end_version": 416525
+    },
+    {
+        "comment": "[ARM] Adjust isSaturatingConditional to return a new SDValue. NFC",
+        "rel_patch_path": "cherry/9ae73cdbc1e59fd3149e60efd2b96e68e8d1669b.patch",
+        "start_version": 405885,
+        "end_version": 416715
+    },
+    {
+        "comment": "[ARM] Disable sign extended SSAT pattern recognition.",
+        "rel_patch_path": "cherry/af0332498405b3a4074cef09845bbacfd4fd594f.patch",
+        "start_version": 405885,
+        "end_version": 416728
+    },
+    {
+        "comment": "[ARM][RegisterScavenging] Don't consider LR liveout if it is not reloaded",
+        "rel_patch_path": "cherry/b9ed8ebe0e2ffa803b0bda60f9bbc9bb26f95000.patch",
+        "start_version": 412851,
+        "end_version": 417334
+    },
+    {
+        "comment": "Revert \"[ConstantFold] Fold more operations to poison\"",
+        "rel_patch_path": "cherry/06829034ca64b8c83a5b20d8abe5ddbfe7af0004.patch",
+        "start_version": 412851,
+        "end_version": 417900
+    },
+    {
+        "comment": "[ELF] Allow R_386_GOTOFF from .debug_info",
+        "rel_patch_path": "cherry/b3165a70ae83b46dc145f335dfa9690ece361e92.patch",
+        "start_version": 412851,
+        "end_version": 418036
+    },
+    {
+        "comment": "[Clang] Make nomerge attribute a function attribute as well as a statement attribute.",
+        "rel_patch_path": "cherry/fb0f7288051eb2745bb9211306f53ff9aa6f73e2.patch",
+        "start_version": 412851,
+        "end_version": 414124
+    },
+    {
+        "comment": "test file update for e53bbd9951",
+        "rel_patch_path": "test-nomerge-fd739804e0591468762eb87488a497a3f7d4afb0.patch",
+        "start_version": 412851,
+        "end_version": 414886
+    },
+    {
+        "comment": "[IR] move nomerge attribute from function declaration/definition to callsites",
+        "rel_patch_path": "cherry/e53bbd99516fc7b612df1ae08d48288d0b8784ea.patch",
+        "start_version": 412851,
+        "end_version": 415826
+    },
+    {
+        "comment": "[llvm-objcopy] preserve file ownership when overwritten by root",
+        "rel_patch_path": "cherry/c2a84771bb63947695ea50b89160c02b36fb634d.patch",
+        "start_version": 412851,
+        "end_version": 418870
+    },
+    {
+        "comment": "[clang][Arm] Fix handling of -Wa,-implicit-it=",
+        "rel_patch_path": "cherry/a680bc3a31d36d321ccf3801bdcff74d58842bfa.patch",
+        "start_version": 412851,
+        "end_version": 418680
+    },
+    {
+        "comment": "[Thumb2] support `movs pc, lr` alias for `subs pc, lr, #0`/`eret`",
+        "rel_patch_path": "cherry/68945a8686708c6e4c74b9aeb231b8c4e1731181.patch",
+        "start_version": 412851,
+        "end_version": 418542
+    },
+    {
+        "comment": "[clang][Arm] Fix handling of -Wa,-march=",
+        "rel_patch_path": "cherry/1d51c699b9e2ebc5bcfdbe85c74cc871426333d4.patch",
+        "start_version": 412851,
+        "end_version": 418022
+    },
+    {
+        "comment": "[X86] Add reduced test case for PR49162",
+        "rel_patch_path": "cherry/5ca3ef98a71598d368f6f4aaf0b385b50b67ce4a.patch",
+        "start_version": 416609,
+        "end_version": 418887
+    },
+    {
+        "comment": "[DAG] Fix shift amount limit in SimplifyDemandedBits trunc(shift(x,c)) to truncated bitwidth",
+        "rel_patch_path": "cherry/7ad0c573bd4a68dc81886037457d47daa3d6aa24.patch",
+        "start_version": 416609,
+        "end_version": 418889
+    },
+    {
+        "comment": "Revert \"[Sema] Fix -Warray-bounds false negative when casting an out-of-bounds array item\"",
+        "rel_patch_path": "cherry/9083d0a40d980928f2f45236a4616528a7ab19ce.patch",
+        "start_version": 417894,
+        "end_version": 418289
+    },
+    {
+        "comment": "[CUDA] Normalize handling of defauled dtor.",
+        "rel_patch_path": "cherry/127091bfd5edf10495fee4724fd21c666e5d79c1.patch",
+        "start_version": 416183,
+        "end_version": 416636
+    },
+    {
+        "comment": "[Utils] collectBitParts - bail for integers > 128-bits",
+        "rel_patch_path": "cherry/455d43b951ae31dac133a8650532797f01343a36.patch",
+        "start_version": 419881,
+        "end_version": 420106
+    },
+    {
+        "comment": "[libc++] [P0879] constexpr std::sort",
+        "rel_patch_path": "cherry/493f1407927cdf6db2e08f150ed9f9b8abe4ac45.patch",
+        "start_version": 417943,
+        "end_version": 417956
+    },
+    {
+        "comment": "Disable CFI in __get_elem to allow casting a pointer to uninitialized memory",
+        "rel_patch_path": "cherry/bab74864168bb5e28ecbc0294fe1095d8da7f569.patch",
+        "start_version": 415517,
+        "end_version": 417837
+    },
+    {
+        "comment": "[libc++] Further improve the contiguous-iterator story, and fix some bugs.",
+        "rel_patch_path": "cherry/85167fb7c2920ca8874b197ef397e8e6b9d87c73.patch",
+        "start_version": 417943,
+        "end_version": 418174
+    },
+    {
+        "comment": "Restore GNU , ## __VA_ARGS__ behavior in MSVC mode",
+        "rel_patch_path": "cherry/b43c26d036dcbf7a6881f39e4434cf059364022a.patch",
+        "start_version": 416931,
+        "end_version": 417053
+    },
+    {
+        "comment": "Revert \"Suppress non-conforming GNU paste extension in all standard-conforming modes\"",
+        "rel_patch_path": "cherry/61a66e4b5ec18e9e73c2f6334f6b7f7dd4bca77e.patch",
+        "start_version": 416931,
+        "end_version": 417272
+    },
+    {
+        "comment": "[llvm-objcopy] If input=output, preserve umask bits, otherwise drop S_ISUID/S_ISGID bits",
+        "rel_patch_path": "cherry/17b4e695ce0ef89eac4a37df2df49d4c0e700766.patch",
+        "start_version": 412851,
+        "end_version": 419929
+    },
+    {
+        "comment": "[libunwind] [risc-v] This patch is for fixing immediate build failure when Cross Unwinding enabled. Follow up patch will cleanup some Macros handling.",
+        "rel_patch_path": "cherry/5c3fc5093aaf7d9422459d295eb4eb769abcbaa4.patch",
+        "start_version": 420365,
+        "end_version": 420477
+    },
+    {
+        "comment": "[GVN] do not repeat PRE on failure to split critical edge",
+        "rel_patch_path": "cherry/d36812892c16b551f058774babbc8727737f80cd.patch",
+        "start_version": 416183,
+        "end_version": 417022
+    },
+    {
+        "comment": "[clang] removes check against integral-to-pointer conversion...",
+        "rel_patch_path": "cherry/9830901b341cfb884cdef00e0335c6e3e62d107a.patch",
+        "start_version": 420025,
+        "end_version": 420692
+    },
+    {
+        "comment": "[NFCI][SimplifyCFG] Prefer to add Insert edges before Delete edges into DomTreeUpdater, if reasonable",
+        "rel_patch_path": "cherry/8e8d214c4a6c417e42996faeb9211a5c2e32111f.patch",
+        "start_version": 415439,
+        "end_version": 415620
+    },
+    {
+        "comment": "[Transforms/Utils] Use range-based for loops (NFC)",
+        "rel_patch_path": "cherry/be23012d5a84fefdb6d0a267f9ffb4bafb4804d7.patch",
+        "start_version": 415439,
+        "end_version": 418243
+    },
+    {
+        "comment": "ValueMapper: Rename RF_MoveDistinctMDs => RF_ReuseAndMutateDistinctMDs, NFC",
+        "rel_patch_path": "cherry/fa35c1f80f0ea080a7cbc581416929b0a654f25c.patch",
+        "start_version": 415439,
+        "end_version": 418586
+    },
+    {
+        "comment": "TransformUtils: Fix metadata handling in CloneModule (and improve CloneFunctionInto)",
+        "rel_patch_path": "cherry/22a52dfddcefad4f275eb8ad1cc0e200074c2d8a.patch",
+        "start_version": 415439,
+        "end_version": 419003
+    },
+    {
+        "comment": "Transforms: Clone distinct nodes in metadata mapper unless RF_ReuseAndMutateDistinctMDs",
+        "rel_patch_path": "cherry/01701646d5555409a6fad920f0e4801d79c154ea.patch",
+        "start_version": 415439,
+        "end_version": 419941
+    },
+    {
+        "comment": "Revert \"[SLP]Merge reorder and reuse shuffles.\"",
+        "rel_patch_path": "cherry/e463bd53c03ff9183bd30030477dfe6f3b2fdd0c.patch",
+        "start_version": 413046,
+        "end_version": 416430
+    },
+    {
+        "comment": "Fix chrome os failure after 021de7cf80268091cf13485a538b611b37d0b33e.",
+        "rel_patch_path": "cherry/ee8a5e4bc2c986b8e6c07e81fb58dc1e5a5c2d17.patch",
+        "start_version": 421934,
+        "end_version": 424173
+    },
+    {
+        "comment": "Fixes clang.elf calling clang.elf because direct\ncalls to clang.elf misses all environment setup in clang\nwrapper. Calls to clang wrapper instead of clang.elf binary",
+        "rel_patch_path": "llvm-11.0-invocation.patch",
+        "start_version": 420001
+    },
+    {
+        "comment": "Revert \"Reduce the number of attributes attached to each function\"",
+        "rel_patch_path": "cherry/2cb8c10342ee5d040725abb1166feb92a64c7df6.patch",
+        "start_version": 419850,
+        "end_version": 423928
+    },
+    {
+        "comment": "Revert \"[ArgPromotion] Copy additional metadata for loads.\"",
+        "rel_patch_path": "cherry/4622648a069a988d3b7b3ecd3f1b6993518d85b5.patch",
+        "start_version": 421649,
+        "end_version": 422916
+    },
+    {
+        "comment": "[clang] accept -fsanitize-ignorelist= in addition to -fsanitize-blacklist=",
+        "rel_patch_path": "cherry/d7ec48d71bd67118e7996c45e9c7fb1b09d4f59a.patch",
+        "start_version": 422132,
+        "end_version": 426368
+    },
+    {
+        "comment": "[ARM][AArch64] SLSHardening: make non-comdat thunks possible",
+        "rel_patch_path": "cherry/801ab71032e157eb7bcd38efeb6486742a7c53bb.patch",
+        "start_version": 422132,
+        "end_version": 427980
     }
 ]
diff --git a/sys-devel/llvm/files/cherry/01701646d5555409a6fad920f0e4801d79c154ea.patch b/sys-devel/llvm/files/cherry/01701646d5555409a6fad920f0e4801d79c154ea.patch
new file mode 100644
index 0000000..6e5e09b
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/01701646d5555409a6fad920f0e4801d79c154ea.patch
@@ -0,0 +1,183 @@
+commit 01701646d5555409a6fad920f0e4801d79c154ea
+Author: Duncan P. N. Exon Smith <dexonsmith@apple.com>
+Date:   Mon Feb 15 12:08:06 2021 -0800
+
+    Transforms: Clone distinct nodes in metadata mapper unless RF_ReuseAndMutateDistinctMDs
+    
+    This is a follow up to 22a52dfddcefad4f275eb8ad1cc0e200074c2d8a and a
+    revert of df763188c9a1ecb1e7e5c4d4ea53a99fbb755903.
+    
+    With this change, we only skip cloning distinct nodes in
+    MDNodeMapper::mapDistinct if RF_ReuseAndMutateDistinctMDs, dropping the
+    no-longer-needed local helper `cloneOrBuildODR()`.  Skipping cloning in
+    other cases is unsound and breaks CloneModule, which is why the textual
+    IR for PR48841 didn't pass previously. This commit adds the test as:
+    Transforms/ThinLTOBitcodeWriter/cfi-debug-info-cloned-type-references-global-value.ll
+    
+    Cloning less often exposed a hole in subprogram cloning in
+    CloneFunctionInto thanks to df763188c9a1ecb1e7e5c4d4ea53a99fbb755903's
+    test ThinLTO/X86/Inputs/dicompositetype-unique-alias.ll. If a function
+    has a subprogram attachment whose scope is a DICompositeType that
+    shouldn't be cloned, but it has no internal debug info pointing at that
+    type, that composite type was being cloned. This commit plugs that hole,
+    calling DebugInfoFinder::processSubprogram from CloneFunctionInto.
+    
+    As hinted at in 22a52dfddcefad4f275eb8ad1cc0e200074c2d8a's commit
+    message, I think we need to formalize ownership of metadata a bit more
+    so that ValueMapper/CloneFunctionInto (and similar functions) can deal
+    with cloning (or not) metadata in a more generic, less fragile way.
+    
+    This fixes PR48841.
+    
+    Differential Revision: https://reviews.llvm.org/D96734
+
+diff --git a/llvm/include/llvm/IR/DebugInfo.h b/llvm/include/llvm/IR/DebugInfo.h
+index e7c1d9a90677..b33e0a90ea41 100644
+--- a/llvm/include/llvm/IR/DebugInfo.h
++++ b/llvm/include/llvm/IR/DebugInfo.h
+@@ -81,6 +81,9 @@ public:
+   /// Process debug info location.
+   void processLocation(const Module &M, const DILocation *Loc);
+ 
++  /// Process subprogram.
++  void processSubprogram(DISubprogram *SP);
++
+   /// Clear all lists.
+   void reset();
+ 
+@@ -89,7 +92,6 @@ private:
+ 
+   void processCompileUnit(DICompileUnit *CU);
+   void processScope(DIScope *Scope);
+-  void processSubprogram(DISubprogram *SP);
+   void processType(DIType *DT);
+   bool addCompileUnit(DICompileUnit *CU);
+   bool addGlobalVariable(DIGlobalVariableExpression *DIG);
+diff --git a/llvm/lib/Transforms/Utils/CloneFunction.cpp b/llvm/lib/Transforms/Utils/CloneFunction.cpp
+index 021c0bb9a1df..0ff28e9b3c29 100644
+--- a/llvm/lib/Transforms/Utils/CloneFunction.cpp
++++ b/llvm/lib/Transforms/Utils/CloneFunction.cpp
+@@ -144,6 +144,8 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+     DIFinder.emplace();
+ 
+     SPClonedWithinModule = OldFunc->getSubprogram();
++    if (SPClonedWithinModule)
++      DIFinder->processSubprogram(SPClonedWithinModule);
+   } else {
+     assert((NewFunc->getParent() == nullptr ||
+             NewFunc->getParent() != OldFunc->getParent()) &&
+@@ -195,7 +197,7 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+   }
+ 
+   if (Changes < CloneFunctionChangeType::DifferentModule &&
+-      (SPClonedWithinModule || DIFinder->subprogram_count() > 0)) {
++      DIFinder->subprogram_count() > 0) {
+     // Turn on module-level changes, since we need to clone (some of) the
+     // debug info metadata.
+     //
+@@ -208,14 +210,7 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+       (void)VMap.MD().try_emplace(N, N);
+     };
+ 
+-    // Avoid cloning what the subprogram references.
+-    if (SPClonedWithinModule) {
+-      mapToSelfIfNew(SPClonedWithinModule->getUnit());
+-      mapToSelfIfNew(SPClonedWithinModule->getType());
+-      mapToSelfIfNew(SPClonedWithinModule->getFile());
+-    }
+-
+-    // Avoid cloning other subprograms, compile units, and types.
++    // Avoid cloning types, compile units, and (other) subprograms.
+     for (DISubprogram *ISP : DIFinder->subprograms())
+       if (ISP != SPClonedWithinModule)
+         mapToSelfIfNew(ISP);
+@@ -225,6 +220,9 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+ 
+     for (DIType *Type : DIFinder->types())
+       mapToSelfIfNew(Type);
++  } else {
++    assert(!SPClonedWithinModule &&
++           "Subprogram should be in DIFinder->subprogram_count()...");
+   }
+ 
+   // Duplicate the metadata that is attached to the cloned function.
+diff --git a/llvm/lib/Transforms/Utils/ValueMapper.cpp b/llvm/lib/Transforms/Utils/ValueMapper.cpp
+index 9557fa9becf0..0b1d8c024d84 100644
+--- a/llvm/lib/Transforms/Utils/ValueMapper.cpp
++++ b/llvm/lib/Transforms/Utils/ValueMapper.cpp
+@@ -533,23 +533,13 @@ Optional<Metadata *> MDNodeMapper::tryToMapOperand(const Metadata *Op) {
+   return None;
+ }
+ 
+-static Metadata *cloneOrBuildODR(const MDNode &N) {
+-  auto *CT = dyn_cast<DICompositeType>(&N);
+-  // If ODR type uniquing is enabled, we would have uniqued composite types
+-  // with identifiers during bitcode reading, so we can just use CT.
+-  if (CT && CT->getContext().isODRUniquingDebugTypes() &&
+-      CT->getIdentifier() != "")
+-    return const_cast<DICompositeType *>(CT);
+-  return MDNode::replaceWithDistinct(N.clone());
+-}
+-
+ MDNode *MDNodeMapper::mapDistinctNode(const MDNode &N) {
+   assert(N.isDistinct() && "Expected a distinct node");
+   assert(!M.getVM().getMappedMD(&N) && "Expected an unmapped node");
+-  DistinctWorklist.push_back(
+-      cast<MDNode>((M.Flags & RF_ReuseAndMutateDistinctMDs)
+-                       ? M.mapToSelf(&N)
+-                       : M.mapToMetadata(&N, cloneOrBuildODR(N))));
++  DistinctWorklist.push_back(cast<MDNode>(
++      (M.Flags & RF_ReuseAndMutateDistinctMDs)
++          ? M.mapToSelf(&N)
++          : M.mapToMetadata(&N, MDNode::replaceWithDistinct(N.clone()))));
+   return DistinctWorklist.back();
+ }
+ 
+diff --git a/llvm/test/Transforms/ThinLTOBitcodeWriter/cfi-debug-info-cloned-type-references-global-value.ll b/llvm/test/Transforms/ThinLTOBitcodeWriter/cfi-debug-info-cloned-type-references-global-value.ll
+new file mode 100644
+index 000000000000..6d77b19e13c8
+--- /dev/null
++++ b/llvm/test/Transforms/ThinLTOBitcodeWriter/cfi-debug-info-cloned-type-references-global-value.ll
+@@ -0,0 +1,42 @@
++; RUN: opt -thinlto-bc -thinlto-split-lto-unit -o %t %s
++; RUN: llvm-modextract -b -n 0 -o - %t | llvm-dis | FileCheck %s
++
++; Crash test for CloneModule when there's a retained DICompositeType that
++; transitively references a global value.
++
++; CHECK: declare !type !{{[0-9]+}} !type !{{[0-9]+}} void @_Z1gIM1iKFivEEvT_(i64, i64)
++; CHECK: !llvm.dbg.cu
++; CHECK-DAG: distinct !DICompositeType({{.*}}, identifier: "_ZTS1oI1iiXadL_ZNKS0_5m_fn1EvEEE"
++; CHECK-DAG: distinct !DICompositeType({{.*}}, identifier: "_ZTS1i"
++; CHECK-DAG: !{i32 4, !"CFI Canonical Jump Tables", i32 0}
++
++target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
++target triple = "x86_64-unknown-linux-gnu"
++
++@_ZN1i1pE = dso_local constant [1 x i8] zeroinitializer, align 1
++@_ZNK1i5m_fn1Ev = external global i32
++
++declare !type !17 !type !18 void @_Z1gIM1iKFivEEvT_(i64, i64)
++
++!llvm.dbg.cu = !{!0}
++!llvm.module.flags = !{!14, !15}
++
++!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang version 12.0.0 (git@github.com:llvm/llvm-project.git 51bf4c0e6d4cbc6dfa57857fc78003413cbeb17f)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, retainedTypes: !3, globals: !2, nameTableKind: None)
++!1 = !DIFile(filename: "<stdin>", directory: "/tmp")
++!2 = !{}
++!3 = !{!4}
++!4 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "o<i, int, &i::m_fn1>", file: !5, line: 22, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !2, templateParams: !6, identifier: "_ZTS1oI1iiXadL_ZNKS0_5m_fn1EvEEE")
++!5 = !DIFile(filename: "t.ii", directory: "/tmp")
++!6 = !{!7}
++!7 = !DITemplateValueParameter(type: !8, value: i64 ptrtoint (i32* @_ZNK1i5m_fn1Ev to i64))
++!8 = !DIDerivedType(tag: DW_TAG_ptr_to_member_type, baseType: !9, size: 128, extraData: !13)
++!9 = !DISubroutineType(types: !10)
++!10 = !{!11, !12}
++!11 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
++!12 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64, flags: DIFlagArtificial)
++!13 = distinct !DICompositeType(tag: DW_TAG_class_type, name: "i", file: !5, line: 13, size: 8, flags: DIFlagTypePassByValue | DIFlagNonTrivial, elements: !2, identifier: "_ZTS1i")
++!14 = !{i32 2, !"Debug Info Version", i32 3}
++!15 = !{i32 4, !"CFI Canonical Jump Tables", i32 0}
++!16 = !{i64 ptrtoint (i32* @_ZNK1i5m_fn1Ev to i64)}
++!17 = !{i64 0, !"_ZTSFvM1iKFivEE"}
++!18 = !{i64 0, !"_ZTSFvM1iKFivEE.generalized"}
diff --git a/sys-devel/llvm/files/cherry/06829034ca64b8c83a5b20d8abe5ddbfe7af0004.patch b/sys-devel/llvm/files/cherry/06829034ca64b8c83a5b20d8abe5ddbfe7af0004.patch
new file mode 100644
index 0000000..6797962
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/06829034ca64b8c83a5b20d8abe5ddbfe7af0004.patch
@@ -0,0 +1,983 @@
+commit 06829034ca64b8c83a5b20d8abe5ddbfe7af0004
+Author: Juneyoung Lee <aqjune@gmail.com>
+Date:   Thu Feb 4 00:07:04 2021 +0900
+
+    Revert "[ConstantFold] Fold more operations to poison"
+    
+    This reverts commit 53040a968dc2ff20931661e55f05da2ef8b964a0 due to its
+    bad interaction with select i1 -> and/or i1 transformation.
+    
+    This fixes:
+    https://bugs.llvm.org/show_bug.cgi?id=49005
+    https://bugs.llvm.org/show_bug.cgi?id=48435
+
+diff --git a/clang/test/Frontend/fixed_point_unary.c b/clang/test/Frontend/fixed_point_unary.c
+index 6ce760daba11..849e38a94bc4 100644
+--- a/clang/test/Frontend/fixed_point_unary.c
++++ b/clang/test/Frontend/fixed_point_unary.c
+@@ -90,7 +90,7 @@ void inc_usa() {
+ // SIGNED-LABEL: @inc_uf(
+ // SIGNED-NEXT:  entry:
+ // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, i16* @uf, align 2
+-// SIGNED-NEXT:    [[TMP1:%.*]] = add i16 [[TMP0]], poison
++// SIGNED-NEXT:    [[TMP1:%.*]] = add i16 [[TMP0]], undef
+ // SIGNED-NEXT:    store i16 [[TMP1]], i16* @uf, align 2
+ // SIGNED-NEXT:    ret void
+ //
+@@ -271,7 +271,7 @@ void dec_usa() {
+ // SIGNED-LABEL: @dec_uf(
+ // SIGNED-NEXT:  entry:
+ // SIGNED-NEXT:    [[TMP0:%.*]] = load i16, i16* @uf, align 2
+-// SIGNED-NEXT:    [[TMP1:%.*]] = sub i16 [[TMP0]], poison
++// SIGNED-NEXT:    [[TMP1:%.*]] = sub i16 [[TMP0]], undef
+ // SIGNED-NEXT:    store i16 [[TMP1]], i16* @uf, align 2
+ // SIGNED-NEXT:    ret void
+ //
+diff --git a/llvm/lib/IR/ConstantFold.cpp b/llvm/lib/IR/ConstantFold.cpp
+index 03cb108cc485..95dd55237e5f 100644
+--- a/llvm/lib/IR/ConstantFold.cpp
++++ b/llvm/lib/IR/ConstantFold.cpp
+@@ -630,7 +630,7 @@ Constant *llvm::ConstantFoldCastInstruction(unsigned opc, Constant *V,
+           V.convertToInteger(IntVal, APFloat::rmTowardZero, &ignored)) {
+         // Undefined behavior invoked - the destination type can't represent
+         // the input constant.
+-        return PoisonValue::get(DestTy);
++        return UndefValue::get(DestTy);
+       }
+       return ConstantInt::get(FPC->getContext(), IntVal);
+     }
+@@ -916,7 +916,7 @@ Constant *llvm::ConstantFoldInsertElementInstruction(Constant *Val,
+ 
+   unsigned NumElts = ValTy->getNumElements();
+   if (CIdx->uge(NumElts))
+-    return PoisonValue::get(Val->getType());
++    return UndefValue::get(Val->getType());
+ 
+   SmallVector<Constant*, 16> Result;
+   Result.reserve(NumElts);
+@@ -1151,21 +1151,23 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, Constant *C1,
+     }
+     case Instruction::SDiv:
+     case Instruction::UDiv:
+-      // X / undef -> poison
+-      // X / 0 -> poison
+-      if (match(C2, m_CombineOr(m_Undef(), m_Zero())))
+-        return PoisonValue::get(C2->getType());
++      // X / undef -> undef
++      if (isa<UndefValue>(C2))
++        return C2;
++      // undef / 0 -> undef
+       // undef / 1 -> undef
+-      if (match(C2, m_One()))
++      if (match(C2, m_Zero()) || match(C2, m_One()))
+         return C1;
+       // undef / X -> 0       otherwise
+       return Constant::getNullValue(C1->getType());
+     case Instruction::URem:
+     case Instruction::SRem:
+-      // X % undef -> poison
+-      // X % 0 -> poison
+-      if (match(C2, m_CombineOr(m_Undef(), m_Zero())))
+-        return PoisonValue::get(C2->getType());
++      // X % undef -> undef
++      if (match(C2, m_Undef()))
++        return C2;
++      // undef % 0 -> undef
++      if (match(C2, m_Zero()))
++        return C1;
+       // undef % X -> 0       otherwise
+       return Constant::getNullValue(C1->getType());
+     case Instruction::Or:                          // X | undef -> -1
+@@ -1173,28 +1175,28 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, Constant *C1,
+         return C1;
+       return Constant::getAllOnesValue(C1->getType()); // undef | X -> ~0
+     case Instruction::LShr:
+-      // X >>l undef -> poison
++      // X >>l undef -> undef
+       if (isa<UndefValue>(C2))
+-        return PoisonValue::get(C2->getType());
++        return C2;
+       // undef >>l 0 -> undef
+       if (match(C2, m_Zero()))
+         return C1;
+       // undef >>l X -> 0
+       return Constant::getNullValue(C1->getType());
+     case Instruction::AShr:
+-      // X >>a undef -> poison
++      // X >>a undef -> undef
+       if (isa<UndefValue>(C2))
+-        return PoisonValue::get(C2->getType());
++        return C2;
+       // undef >>a 0 -> undef
+       if (match(C2, m_Zero()))
+         return C1;
+-      // TODO: undef >>a X -> poison if the shift is exact
++      // TODO: undef >>a X -> undef if the shift is exact
+       // undef >>a X -> 0
+       return Constant::getNullValue(C1->getType());
+     case Instruction::Shl:
+       // X << undef -> undef
+       if (isa<UndefValue>(C2))
+-        return PoisonValue::get(C2->getType());
++        return C2;
+       // undef << 0 -> undef
+       if (match(C2, m_Zero()))
+         return C1;
+@@ -1247,14 +1249,14 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, Constant *C1,
+       if (CI2->isOne())
+         return C1;                                            // X / 1 == X
+       if (CI2->isZero())
+-        return PoisonValue::get(CI2->getType());              // X / 0 == poison
++        return UndefValue::get(CI2->getType());               // X / 0 == undef
+       break;
+     case Instruction::URem:
+     case Instruction::SRem:
+       if (CI2->isOne())
+         return Constant::getNullValue(CI2->getType());        // X % 1 == 0
+       if (CI2->isZero())
+-        return PoisonValue::get(CI2->getType());              // X % 0 == poison
++        return UndefValue::get(CI2->getType());               // X % 0 == undef
+       break;
+     case Instruction::And:
+       if (CI2->isZero()) return C2;                           // X & 0 == 0
+@@ -1368,7 +1370,7 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, Constant *C1,
+       case Instruction::SDiv:
+         assert(!CI2->isZero() && "Div by zero handled above");
+         if (C2V.isAllOnesValue() && C1V.isMinSignedValue())
+-          return PoisonValue::get(CI1->getType());   // MIN_INT / -1 -> poison
++          return UndefValue::get(CI1->getType());   // MIN_INT / -1 -> undef
+         return ConstantInt::get(CI1->getContext(), C1V.sdiv(C2V));
+       case Instruction::URem:
+         assert(!CI2->isZero() && "Div by zero handled above");
+@@ -1376,7 +1378,7 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, Constant *C1,
+       case Instruction::SRem:
+         assert(!CI2->isZero() && "Div by zero handled above");
+         if (C2V.isAllOnesValue() && C1V.isMinSignedValue())
+-          return PoisonValue::get(CI1->getType());   // MIN_INT % -1 -> poison
++          return UndefValue::get(CI1->getType());   // MIN_INT % -1 -> undef
+         return ConstantInt::get(CI1->getContext(), C1V.srem(C2V));
+       case Instruction::And:
+         return ConstantInt::get(CI1->getContext(), C1V & C2V);
+@@ -1387,15 +1389,15 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, Constant *C1,
+       case Instruction::Shl:
+         if (C2V.ult(C1V.getBitWidth()))
+           return ConstantInt::get(CI1->getContext(), C1V.shl(C2V));
+-        return PoisonValue::get(C1->getType()); // too big shift is poison
++        return UndefValue::get(C1->getType()); // too big shift is undef
+       case Instruction::LShr:
+         if (C2V.ult(C1V.getBitWidth()))
+           return ConstantInt::get(CI1->getContext(), C1V.lshr(C2V));
+-        return PoisonValue::get(C1->getType()); // too big shift is poison
++        return UndefValue::get(C1->getType()); // too big shift is undef
+       case Instruction::AShr:
+         if (C2V.ult(C1V.getBitWidth()))
+           return ConstantInt::get(CI1->getContext(), C1V.ashr(C2V));
+-        return PoisonValue::get(C1->getType()); // too big shift is poison
++        return UndefValue::get(C1->getType()); // too big shift is undef
+       }
+     }
+ 
+@@ -1441,7 +1443,7 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, Constant *C1,
+     // Fast path for splatted constants.
+     if (Constant *C2Splat = C2->getSplatValue()) {
+       if (Instruction::isIntDivRem(Opcode) && C2Splat->isNullValue())
+-        return PoisonValue::get(VTy);
++        return UndefValue::get(VTy);
+       if (Constant *C1Splat = C1->getSplatValue()) {
+         return ConstantVector::getSplat(
+             VTy->getElementCount(),
+@@ -1458,9 +1460,9 @@ Constant *llvm::ConstantFoldBinaryInstruction(unsigned Opcode, Constant *C1,
+         Constant *LHS = ConstantExpr::getExtractElement(C1, ExtractIdx);
+         Constant *RHS = ConstantExpr::getExtractElement(C2, ExtractIdx);
+ 
+-        // If any element of a divisor vector is zero, the whole op is poison.
++        // If any element of a divisor vector is zero, the whole op is undef.
+         if (Instruction::isIntDivRem(Opcode) && RHS->isNullValue())
+-          return PoisonValue::get(VTy);
++          return UndefValue::get(VTy);
+ 
+         Result.push_back(ConstantExpr::get(Opcode, LHS, RHS));
+       }
+@@ -2343,8 +2345,7 @@ Constant *llvm::ConstantFoldGetElementPtr(Type *PointeeTy, Constant *C,
+     return PoisonValue::get(GEPTy);
+ 
+   if (isa<UndefValue>(C))
+-    // If inbounds, we can choose an out-of-bounds pointer as a base pointer.
+-    return InBounds ? PoisonValue::get(GEPTy) : UndefValue::get(GEPTy);
++    return UndefValue::get(GEPTy);
+ 
+   Constant *Idx0 = cast<Constant>(Idxs[0]);
+   if (Idxs.size() == 1 && (Idx0->isNullValue() || isa<UndefValue>(Idx0)))
+diff --git a/llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-fold-binop-select.ll b/llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-fold-binop-select.ll
+index e0037f0d8e45..bfe83c7a1285 100644
+--- a/llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-fold-binop-select.ll
++++ b/llvm/test/CodeGen/AMDGPU/amdgpu-codegenprepare-fold-binop-select.ll
+@@ -42,7 +42,7 @@ define i32 @select_sdiv_rhs_const_i32(i1 %cond) {
+ 
+ define <2 x i32> @select_sdiv_lhs_const_v2i32(i1 %cond) {
+ ; IR-LABEL: @select_sdiv_lhs_const_v2i32(
+-; IR-NEXT:    [[OP:%.*]] = select i1 [[COND:%.*]], <2 x i32> <i32 666, i32 poison>, <2 x i32> <i32 555, i32 1428>
++; IR-NEXT:    [[OP:%.*]] = select i1 [[COND:%.*]], <2 x i32> <i32 666, i32 undef>, <2 x i32> <i32 555, i32 1428>
+ ; IR-NEXT:    ret <2 x i32> [[OP]]
+ ;
+ ; GCN-LABEL: select_sdiv_lhs_const_v2i32:
+diff --git a/llvm/test/Transforms/InstCombine/apint-shift.ll b/llvm/test/Transforms/InstCombine/apint-shift.ll
+index 908aeac0cea2..5a351efccfcc 100644
+--- a/llvm/test/Transforms/InstCombine/apint-shift.ll
++++ b/llvm/test/Transforms/InstCombine/apint-shift.ll
+@@ -337,7 +337,7 @@ define <2 x i1> @test16vec_nonuniform(<2 x i84> %X) {
+ 
+ define <2 x i1> @test16vec_undef(<2 x i84> %X) {
+ ; CHECK-LABEL: @test16vec_undef(
+-; CHECK-NEXT:    [[TMP1:%.*]] = and <2 x i84> [[X:%.*]], <i84 16, i84 poison>
++; CHECK-NEXT:    [[TMP1:%.*]] = and <2 x i84> [[X:%.*]], <i84 16, i84 undef>
+ ; CHECK-NEXT:    [[CMP:%.*]] = icmp ne <2 x i84> [[TMP1]], zeroinitializer
+ ; CHECK-NEXT:    ret <2 x i1> [[CMP]]
+ ;
+diff --git a/llvm/test/Transforms/InstCombine/canonicalize-ashr-shl-to-masking.ll b/llvm/test/Transforms/InstCombine/canonicalize-ashr-shl-to-masking.ll
+index 8d29372c3a72..ba0d32ee3768 100644
+--- a/llvm/test/Transforms/InstCombine/canonicalize-ashr-shl-to-masking.ll
++++ b/llvm/test/Transforms/InstCombine/canonicalize-ashr-shl-to-masking.ll
+@@ -418,7 +418,7 @@ define <3 x i8> @positive_sameconst_vec_undef1(<3 x i8> %x) {
+ 
+ define <3 x i8> @positive_sameconst_vec_undef2(<3 x i8> %x) {
+ ; CHECK-LABEL: @positive_sameconst_vec_undef2(
+-; CHECK-NEXT:    [[RET:%.*]] = and <3 x i8> [[X:%.*]], <i8 -8, i8 poison, i8 -8>
++; CHECK-NEXT:    [[RET:%.*]] = and <3 x i8> [[X:%.*]], <i8 -8, i8 undef, i8 -8>
+ ; CHECK-NEXT:    ret <3 x i8> [[RET]]
+ ;
+   %tmp0 = ashr <3 x i8> %x, <i8 3, i8 undef, i8 3>
+diff --git a/llvm/test/Transforms/InstCombine/canonicalize-lshr-shl-to-masking.ll b/llvm/test/Transforms/InstCombine/canonicalize-lshr-shl-to-masking.ll
+index 40bc4aaab21c..445f6406b3d2 100644
+--- a/llvm/test/Transforms/InstCombine/canonicalize-lshr-shl-to-masking.ll
++++ b/llvm/test/Transforms/InstCombine/canonicalize-lshr-shl-to-masking.ll
+@@ -418,7 +418,7 @@ define <3 x i8> @positive_sameconst_vec_undef1(<3 x i8> %x) {
+ 
+ define <3 x i8> @positive_sameconst_vec_undef2(<3 x i8> %x) {
+ ; CHECK-LABEL: @positive_sameconst_vec_undef2(
+-; CHECK-NEXT:    [[RET:%.*]] = and <3 x i8> [[X:%.*]], <i8 -8, i8 poison, i8 -8>
++; CHECK-NEXT:    [[RET:%.*]] = and <3 x i8> [[X:%.*]], <i8 -8, i8 undef, i8 -8>
+ ; CHECK-NEXT:    ret <3 x i8> [[RET]]
+ ;
+   %tmp0 = lshr <3 x i8> %x, <i8 3, i8 undef, i8 3>
+diff --git a/llvm/test/Transforms/InstCombine/canonicalize-shl-lshr-to-masking.ll b/llvm/test/Transforms/InstCombine/canonicalize-shl-lshr-to-masking.ll
+index 45aa22aa808f..9de0b337de28 100644
+--- a/llvm/test/Transforms/InstCombine/canonicalize-shl-lshr-to-masking.ll
++++ b/llvm/test/Transforms/InstCombine/canonicalize-shl-lshr-to-masking.ll
+@@ -171,7 +171,7 @@ define <3 x i32> @positive_sameconst_vec_undef1(<3 x i32> %x) {
+ 
+ define <3 x i32> @positive_sameconst_vec_undef2(<3 x i32> %x) {
+ ; CHECK-LABEL: @positive_sameconst_vec_undef2(
+-; CHECK-NEXT:    [[RET:%.*]] = and <3 x i32> [[X:%.*]], <i32 134217727, i32 poison, i32 134217727>
++; CHECK-NEXT:    [[RET:%.*]] = and <3 x i32> [[X:%.*]], <i32 134217727, i32 undef, i32 134217727>
+ ; CHECK-NEXT:    ret <3 x i32> [[RET]]
+ ;
+   %tmp0 = shl <3 x i32> %x, <i32 5, i32 undef, i32 5>
+diff --git a/llvm/test/Transforms/InstCombine/icmp.ll b/llvm/test/Transforms/InstCombine/icmp.ll
+index b48466e678d8..5e6bed4e280f 100644
+--- a/llvm/test/Transforms/InstCombine/icmp.ll
++++ b/llvm/test/Transforms/InstCombine/icmp.ll
+@@ -2876,7 +2876,7 @@ define <2 x i1> @icmp_and_or_lshr_cst_vec_nonuniform(<2 x i32> %x) {
+ 
+ define <2 x i1> @icmp_and_or_lshr_cst_vec_undef(<2 x i32> %x) {
+ ; CHECK-LABEL: @icmp_and_or_lshr_cst_vec_undef(
+-; CHECK-NEXT:    [[TMP1:%.*]] = and <2 x i32> [[X:%.*]], <i32 3, i32 poison>
++; CHECK-NEXT:    [[TMP1:%.*]] = and <2 x i32> [[X:%.*]], <i32 3, i32 -1>
+ ; CHECK-NEXT:    [[RET:%.*]] = icmp ne <2 x i32> [[TMP1]], zeroinitializer
+ ; CHECK-NEXT:    ret <2 x i1> [[RET]]
+ ;
+@@ -2920,7 +2920,7 @@ define <2 x i1> @icmp_and_or_lshr_cst_vec_nonuniform_commute(<2 x i32> %xp) {
+ define <2 x i1> @icmp_and_or_lshr_cst_vec_undef_commute(<2 x i32> %xp) {
+ ; CHECK-LABEL: @icmp_and_or_lshr_cst_vec_undef_commute(
+ ; CHECK-NEXT:    [[X:%.*]] = srem <2 x i32> [[XP:%.*]], <i32 42, i32 42>
+-; CHECK-NEXT:    [[TMP1:%.*]] = and <2 x i32> [[X]], <i32 3, i32 poison>
++; CHECK-NEXT:    [[TMP1:%.*]] = and <2 x i32> [[X]], <i32 3, i32 -1>
+ ; CHECK-NEXT:    [[RET:%.*]] = icmp ne <2 x i32> [[TMP1]], zeroinitializer
+ ; CHECK-NEXT:    ret <2 x i1> [[RET]]
+ ;
+diff --git a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-a.ll b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-a.ll
+index e49c381fcd16..89c16a0949e8 100644
+--- a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-a.ll
++++ b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-a.ll
+@@ -103,7 +103,7 @@ define <8 x i32> @t2_vec_splat_undef(<8 x i64> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T4]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = trunc <8 x i64> [[X:%.*]] to <8 x i32>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = shl <8 x i32> [[TMP1]], [[T4]]
+-; CHECK-NEXT:    [[T7:%.*]] = and <8 x i32> [[TMP2]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 poison, i32 2147483647>
++; CHECK-NEXT:    [[T7:%.*]] = and <8 x i32> [[TMP2]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 undef, i32 2147483647>
+ ; CHECK-NEXT:    ret <8 x i32> [[T7]]
+ ;
+   %t0 = add <8 x i32> %nbits, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 undef, i32 -1>
+@@ -138,7 +138,7 @@ define <8 x i32> @t3_vec_nonsplat(<8 x i64> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T4]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = trunc <8 x i64> [[X:%.*]] to <8 x i32>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = shl <8 x i32> [[TMP1]], [[T4]]
+-; CHECK-NEXT:    [[T7:%.*]] = and <8 x i32> [[TMP2]], <i32 poison, i32 0, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 -1>
++; CHECK-NEXT:    [[T7:%.*]] = and <8 x i32> [[TMP2]], <i32 undef, i32 0, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 -1>
+ ; CHECK-NEXT:    ret <8 x i32> [[T7]]
+ ;
+   %t0 = add <8 x i32> %nbits, <i32 -33, i32 -32, i32 -31, i32 -1, i32 0, i32 1, i32 31, i32 32>
+diff --git a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-b.ll b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-b.ll
+index 20f38deeb0d5..8aef637c6a74 100644
+--- a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-b.ll
++++ b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-b.ll
+@@ -103,7 +103,7 @@ define <8 x i32> @t2_vec_splat_undef(<8 x i64> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T4]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = trunc <8 x i64> [[X:%.*]] to <8 x i32>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = shl <8 x i32> [[TMP1]], [[T4]]
+-; CHECK-NEXT:    [[T7:%.*]] = and <8 x i32> [[TMP2]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 poison, i32 2147483647>
++; CHECK-NEXT:    [[T7:%.*]] = and <8 x i32> [[TMP2]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 undef, i32 2147483647>
+ ; CHECK-NEXT:    ret <8 x i32> [[T7]]
+ ;
+   %t0 = add <8 x i32> %nbits, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 undef, i32 -1>
+@@ -138,7 +138,7 @@ define <8 x i32> @t3_vec_nonsplat(<8 x i64> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T4]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = trunc <8 x i64> [[X:%.*]] to <8 x i32>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = shl <8 x i32> [[TMP1]], [[T4]]
+-; CHECK-NEXT:    [[T7:%.*]] = and <8 x i32> [[TMP2]], <i32 poison, i32 0, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 -1>
++; CHECK-NEXT:    [[T7:%.*]] = and <8 x i32> [[TMP2]], <i32 undef, i32 0, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 -1>
+ ; CHECK-NEXT:    ret <8 x i32> [[T7]]
+ ;
+   %t0 = add <8 x i32> %nbits, <i32 -33, i32 -32, i32 -31, i32 -1, i32 0, i32 1, i32 31, i32 32>
+diff --git a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-c.ll b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-c.ll
+index 562280391c5e..61f25e6ca0b1 100644
+--- a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-c.ll
++++ b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-c.ll
+@@ -83,7 +83,7 @@ define <8 x i32> @t2_vec_splat_undef(<8 x i64> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = trunc <8 x i64> [[X:%.*]] to <8 x i32>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = shl <8 x i32> [[TMP1]], [[T2]]
+-; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP2]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 poison, i32 2147483647>
++; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP2]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 undef, i32 2147483647>
+ ; CHECK-NEXT:    ret <8 x i32> [[T5]]
+ ;
+   %t0 = zext <8 x i32> %nbits to <8 x i64>
+@@ -110,7 +110,7 @@ define <8 x i32> @t3_vec_nonsplat(<8 x i64> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = trunc <8 x i64> [[X:%.*]] to <8 x i32>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = shl <8 x i32> [[TMP1]], [[T2]]
+-; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP2]], <i32 poison, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 poison, i32 poison>
++; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP2]], <i32 undef, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 undef, i32 undef>
+ ; CHECK-NEXT:    ret <8 x i32> [[T5]]
+ ;
+   %t0 = zext <8 x i32> %nbits to <8 x i64>
+diff --git a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-d.ll b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-d.ll
+index aa644e6264e4..077bb8296f3e 100644
+--- a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-d.ll
++++ b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-d.ll
+@@ -93,7 +93,7 @@ define <8 x i32> @t2_vec_splat_undef(<8 x i64> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T3]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = trunc <8 x i64> [[X:%.*]] to <8 x i32>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = shl <8 x i32> [[TMP1]], [[T3]]
+-; CHECK-NEXT:    [[T6:%.*]] = and <8 x i32> [[TMP2]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 poison, i32 2147483647>
++; CHECK-NEXT:    [[T6:%.*]] = and <8 x i32> [[TMP2]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 undef, i32 2147483647>
+ ; CHECK-NEXT:    ret <8 x i32> [[T6]]
+ ;
+   %t0 = zext <8 x i32> %nbits to <8 x i64>
+@@ -124,7 +124,7 @@ define <8 x i32> @t3_vec_nonsplat(<8 x i64> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T3]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = trunc <8 x i64> [[X:%.*]] to <8 x i32>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = shl <8 x i32> [[TMP1]], [[T3]]
+-; CHECK-NEXT:    [[T6:%.*]] = and <8 x i32> [[TMP2]], <i32 poison, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 poison, i32 poison>
++; CHECK-NEXT:    [[T6:%.*]] = and <8 x i32> [[TMP2]], <i32 undef, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 undef, i32 undef>
+ ; CHECK-NEXT:    ret <8 x i32> [[T6]]
+ ;
+   %t0 = zext <8 x i32> %nbits to <8 x i64>
+diff --git a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-e.ll b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-e.ll
+index f2aa2894e27a..961ea5e48416 100644
+--- a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-e.ll
++++ b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-after-truncation-variant-e.ll
+@@ -83,7 +83,7 @@ define <8 x i32> @t2_vec_splat_undef(<8 x i64> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = trunc <8 x i64> [[X]] to <8 x i32>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = shl <8 x i32> [[TMP1]], [[T2]]
+-; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP2]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 poison, i32 2147483647>
++; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP2]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 undef, i32 2147483647>
+ ; CHECK-NEXT:    ret <8 x i32> [[T5]]
+ ;
+   %t0 = zext <8 x i32> %nbits to <8 x i64>
+@@ -110,7 +110,7 @@ define <8 x i32> @t3_vec_nonsplat(<8 x i64> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = trunc <8 x i64> [[X]] to <8 x i32>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = shl <8 x i32> [[TMP1]], [[T2]]
+-; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP2]], <i32 poison, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 poison, i32 poison>
++; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP2]], <i32 undef, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 undef, i32 undef>
+ ; CHECK-NEXT:    ret <8 x i32> [[T5]]
+ ;
+   %t0 = zext <8 x i32> %nbits to <8 x i64>
+diff --git a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-a.ll b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-a.ll
+index 882117fe3480..41a71aa98f40 100644
+--- a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-a.ll
++++ b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-a.ll
+@@ -82,7 +82,7 @@ define <8 x i32> @t1_vec_splat_undef(<8 x i32> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T4]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = shl <8 x i32> [[X:%.*]], [[T4]]
+-; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP1]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 poison, i32 2147483647>
++; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP1]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 undef, i32 2147483647>
+ ; CHECK-NEXT:    ret <8 x i32> [[T5]]
+ ;
+   %t0 = add <8 x i32> %nbits, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 undef, i32 -1>
+@@ -109,7 +109,7 @@ define <8 x i32> @t2_vec_nonsplat(<8 x i32> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T4]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = shl <8 x i32> [[X:%.*]], [[T4]]
+-; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP1]], <i32 poison, i32 0, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 poison>
++; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP1]], <i32 undef, i32 0, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 undef>
+ ; CHECK-NEXT:    ret <8 x i32> [[T5]]
+ ;
+   %t0 = add <8 x i32> %nbits, <i32 -33, i32 -32, i32 -31, i32 -1, i32 0, i32 1, i32 31, i32 32>
+diff --git a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-b.ll b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-b.ll
+index e92875d79207..787135229148 100644
+--- a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-b.ll
++++ b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-b.ll
+@@ -82,7 +82,7 @@ define <8 x i32> @t1_vec_splat_undef(<8 x i32> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T4]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = shl <8 x i32> [[X:%.*]], [[T4]]
+-; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP1]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 poison, i32 2147483647>
++; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP1]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 undef, i32 2147483647>
+ ; CHECK-NEXT:    ret <8 x i32> [[T5]]
+ ;
+   %t0 = add <8 x i32> %nbits, <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 undef, i32 -1>
+@@ -109,7 +109,7 @@ define <8 x i32> @t2_vec_nonsplat(<8 x i32> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T4]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = shl <8 x i32> [[X:%.*]], [[T4]]
+-; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP1]], <i32 poison, i32 0, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 poison>
++; CHECK-NEXT:    [[T5:%.*]] = and <8 x i32> [[TMP1]], <i32 undef, i32 0, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 undef>
+ ; CHECK-NEXT:    ret <8 x i32> [[T5]]
+ ;
+   %t0 = add <8 x i32> %nbits, <i32 -33, i32 -32, i32 -31, i32 -1, i32 0, i32 1, i32 31, i32 32>
+diff --git a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-c.ll b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-c.ll
+index b8066cef2b40..c0959d9e1ac6 100644
+--- a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-c.ll
++++ b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-c.ll
+@@ -62,7 +62,7 @@ define <8 x i32> @t1_vec_splat_undef(<8 x i32> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T0]])
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = shl <8 x i32> [[X:%.*]], [[T2]]
+-; CHECK-NEXT:    [[T3:%.*]] = and <8 x i32> [[TMP1]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 poison, i32 2147483647>
++; CHECK-NEXT:    [[T3:%.*]] = and <8 x i32> [[TMP1]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 undef, i32 2147483647>
+ ; CHECK-NEXT:    ret <8 x i32> [[T3]]
+ ;
+   %t0 = lshr <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 undef, i32 -1>, %nbits
+@@ -81,7 +81,7 @@ define <8 x i32> @t1_vec_nonsplat(<8 x i32> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T0]])
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = shl <8 x i32> [[X:%.*]], [[T2]]
+-; CHECK-NEXT:    [[T3:%.*]] = and <8 x i32> [[TMP1]], <i32 poison, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 -1, i32 poison>
++; CHECK-NEXT:    [[T3:%.*]] = and <8 x i32> [[TMP1]], <i32 undef, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 -1, i32 undef>
+ ; CHECK-NEXT:    ret <8 x i32> [[T3]]
+ ;
+   %t0 = lshr <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, %nbits
+diff --git a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-d.ll b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-d.ll
+index 20b322c0b647..5e0f0be2b1ad 100644
+--- a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-d.ll
++++ b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-d.ll
+@@ -72,7 +72,7 @@ define <8 x i32> @t2_vec_splat_undef(<8 x i32> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T1]])
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T3]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = shl <8 x i32> [[X:%.*]], [[T3]]
+-; CHECK-NEXT:    [[T4:%.*]] = and <8 x i32> [[TMP1]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 poison, i32 2147483647>
++; CHECK-NEXT:    [[T4:%.*]] = and <8 x i32> [[TMP1]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 undef, i32 2147483647>
+ ; CHECK-NEXT:    ret <8 x i32> [[T4]]
+ ;
+   %t0 = shl <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 undef, i32 -1>, %nbits
+@@ -95,7 +95,7 @@ define <8 x i32> @t2_vec_nonsplat(<8 x i32> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T1]])
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T3]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = shl <8 x i32> [[X:%.*]], [[T3]]
+-; CHECK-NEXT:    [[T4:%.*]] = and <8 x i32> [[TMP1]], <i32 poison, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 -1, i32 poison>
++; CHECK-NEXT:    [[T4:%.*]] = and <8 x i32> [[TMP1]], <i32 undef, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 -1, i32 undef>
+ ; CHECK-NEXT:    ret <8 x i32> [[T4]]
+ ;
+   %t0 = shl <8 x i32> <i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1, i32 -1>, %nbits
+diff --git a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-e.ll b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-e.ll
+index 46f5b0c2f213..2e335f0083c1 100644
+--- a/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-e.ll
++++ b/llvm/test/Transforms/InstCombine/partally-redundant-left-shift-input-masking-variant-e.ll
+@@ -62,7 +62,7 @@ define <8 x i32> @t1_vec_splat_undef(<8 x i32> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T0]])
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = shl <8 x i32> [[X]], [[T2]]
+-; CHECK-NEXT:    [[T3:%.*]] = and <8 x i32> [[TMP1]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 poison, i32 2147483647>
++; CHECK-NEXT:    [[T3:%.*]] = and <8 x i32> [[TMP1]], <i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 2147483647, i32 undef, i32 2147483647>
+ ; CHECK-NEXT:    ret <8 x i32> [[T3]]
+ ;
+   %t0 = shl <8 x i32> %x, %nbits
+@@ -81,7 +81,7 @@ define <8 x i32> @t1_vec_nonsplat(<8 x i32> %x, <8 x i32> %nbits) {
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T0]])
+ ; CHECK-NEXT:    call void @use8xi32(<8 x i32> [[T2]])
+ ; CHECK-NEXT:    [[TMP1:%.*]] = shl <8 x i32> [[X]], [[T2]]
+-; CHECK-NEXT:    [[T3:%.*]] = and <8 x i32> [[TMP1]], <i32 poison, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 -1, i32 poison>
++; CHECK-NEXT:    [[T3:%.*]] = and <8 x i32> [[TMP1]], <i32 undef, i32 1, i32 2147483647, i32 -1, i32 -1, i32 -1, i32 -1, i32 undef>
+ ; CHECK-NEXT:    ret <8 x i32> [[T3]]
+ ;
+   %t0 = shl <8 x i32> %x, %nbits
+diff --git a/llvm/test/Transforms/InstCombine/select-of-bittest.ll b/llvm/test/Transforms/InstCombine/select-of-bittest.ll
+index c85bcba82e97..d9bef00b2f78 100644
+--- a/llvm/test/Transforms/InstCombine/select-of-bittest.ll
++++ b/llvm/test/Transforms/InstCombine/select-of-bittest.ll
+@@ -82,7 +82,7 @@ define <2 x i32> @and_lshr_and_vec_v2(<2 x i32> %arg) {
+ 
+ define <3 x i32> @and_lshr_and_vec_undef(<3 x i32> %arg) {
+ ; CHECK-LABEL: @and_lshr_and_vec_undef(
+-; CHECK-NEXT:    [[TMP1:%.*]] = and <3 x i32> [[ARG:%.*]], <i32 3, i32 poison, i32 3>
++; CHECK-NEXT:    [[TMP1:%.*]] = and <3 x i32> [[ARG:%.*]], <i32 3, i32 undef, i32 3>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = icmp ne <3 x i32> [[TMP1]], zeroinitializer
+ ; CHECK-NEXT:    [[TMP4:%.*]] = zext <3 x i1> [[TMP2]] to <3 x i32>
+ ; CHECK-NEXT:    ret <3 x i32> [[TMP4]]
+@@ -91,7 +91,6 @@ define <3 x i32> @and_lshr_and_vec_undef(<3 x i32> %arg) {
+   %tmp1 = icmp eq <3 x i32> %tmp, <i32 0, i32 undef, i32 0>
+   %tmp2 = lshr <3 x i32> %arg, <i32 1, i32 undef, i32 1>
+   %tmp3 = and <3 x i32> %tmp2, <i32 1, i32 undef, i32 1>
+-  ; The second element of %tmp4 is poison because it is (undef ? poison : undef).
+   %tmp4 = select <3 x i1> %tmp1, <3 x i32> %tmp3, <3 x i32> <i32 1, i32 undef, i32 1>
+   ret <3 x i32> %tmp4
+ }
+@@ -223,7 +222,7 @@ define <2 x i32> @f_var0_vec(<2 x i32> %arg, <2 x i32> %arg1) {
+ 
+ define <3 x i32> @f_var0_vec_undef(<3 x i32> %arg, <3 x i32> %arg1) {
+ ; CHECK-LABEL: @f_var0_vec_undef(
+-; CHECK-NEXT:    [[TMP1:%.*]] = or <3 x i32> [[ARG1:%.*]], <i32 2, i32 poison, i32 2>
++; CHECK-NEXT:    [[TMP1:%.*]] = or <3 x i32> [[ARG1:%.*]], <i32 2, i32 undef, i32 2>
+ ; CHECK-NEXT:    [[TMP2:%.*]] = and <3 x i32> [[TMP1]], [[ARG:%.*]]
+ ; CHECK-NEXT:    [[TMP3:%.*]] = icmp ne <3 x i32> [[TMP2]], zeroinitializer
+ ; CHECK-NEXT:    [[TMP5:%.*]] = zext <3 x i1> [[TMP3]] to <3 x i32>
+@@ -233,7 +232,6 @@ define <3 x i32> @f_var0_vec_undef(<3 x i32> %arg, <3 x i32> %arg1) {
+   %tmp2 = icmp eq <3 x i32> %tmp, <i32 0, i32 undef, i32 0>
+   %tmp3 = lshr <3 x i32> %arg, <i32 1, i32 undef, i32 1>
+   %tmp4 = and <3 x i32> %tmp3, <i32 1, i32 undef, i32 1>
+-  ; The second element of %tmp5 is poison because it is (undef ? poison : undef).
+   %tmp5 = select <3 x i1> %tmp2, <3 x i32> %tmp4, <3 x i32> <i32 1, i32 undef, i32 1>
+   ret <3 x i32> %tmp5
+ }
+diff --git a/llvm/test/Transforms/InstCombine/shift-add.ll b/llvm/test/Transforms/InstCombine/shift-add.ll
+index eea8b7a074d7..e227274f4930 100644
+--- a/llvm/test/Transforms/InstCombine/shift-add.ll
++++ b/llvm/test/Transforms/InstCombine/shift-add.ll
+@@ -40,7 +40,7 @@ define i32 @lshr_C1_add_A_C2_i32(i32 %A) {
+ define <4 x i32> @shl_C1_add_A_C2_v4i32(<4 x i16> %A) {
+ ; CHECK-LABEL: @shl_C1_add_A_C2_v4i32(
+ ; CHECK-NEXT:    [[B:%.*]] = zext <4 x i16> [[A:%.*]] to <4 x i32>
+-; CHECK-NEXT:    [[D:%.*]] = shl <4 x i32> <i32 6, i32 4, i32 poison, i32 -458752>, [[B]]
++; CHECK-NEXT:    [[D:%.*]] = shl <4 x i32> <i32 6, i32 4, i32 undef, i32 -458752>, [[B]]
+ ; CHECK-NEXT:    ret <4 x i32> [[D]]
+ ;
+   %B = zext <4 x i16> %A to <4 x i32>
+@@ -52,7 +52,7 @@ define <4 x i32> @shl_C1_add_A_C2_v4i32(<4 x i16> %A) {
+ define <4 x i32> @ashr_C1_add_A_C2_v4i32(<4 x i32> %A) {
+ ; CHECK-LABEL: @ashr_C1_add_A_C2_v4i32(
+ ; CHECK-NEXT:    [[B:%.*]] = and <4 x i32> [[A:%.*]], <i32 0, i32 15, i32 255, i32 65535>
+-; CHECK-NEXT:    [[D:%.*]] = ashr <4 x i32> <i32 6, i32 1, i32 poison, i32 -1>, [[B]]
++; CHECK-NEXT:    [[D:%.*]] = ashr <4 x i32> <i32 6, i32 1, i32 undef, i32 -1>, [[B]]
+ ; CHECK-NEXT:    ret <4 x i32> [[D]]
+ ;
+   %B = and <4 x i32> %A, <i32 0, i32 15, i32 255, i32 65535>
+@@ -64,7 +64,7 @@ define <4 x i32> @ashr_C1_add_A_C2_v4i32(<4 x i32> %A) {
+ define <4 x i32> @lshr_C1_add_A_C2_v4i32(<4 x i32> %A) {
+ ; CHECK-LABEL: @lshr_C1_add_A_C2_v4i32(
+ ; CHECK-NEXT:    [[B:%.*]] = and <4 x i32> [[A:%.*]], <i32 0, i32 15, i32 255, i32 65535>
+-; CHECK-NEXT:    [[D:%.*]] = lshr <4 x i32> <i32 6, i32 1, i32 poison, i32 65535>, [[B]]
++; CHECK-NEXT:    [[D:%.*]] = lshr <4 x i32> <i32 6, i32 1, i32 undef, i32 65535>, [[B]]
+ ; CHECK-NEXT:    ret <4 x i32> [[D]]
+ ;
+   %B = and <4 x i32> %A, <i32 0, i32 15, i32 255, i32 65535>
+@@ -78,7 +78,7 @@ define <4 x i32> @shl_C1_add_A_C2_v4i32_splat(i16 %I) {
+ ; CHECK-NEXT:    [[A:%.*]] = zext i16 [[I:%.*]] to i32
+ ; CHECK-NEXT:    [[B:%.*]] = insertelement <4 x i32> undef, i32 [[A]], i32 0
+ ; CHECK-NEXT:    [[C:%.*]] = shufflevector <4 x i32> [[B]], <4 x i32> undef, <4 x i32> zeroinitializer
+-; CHECK-NEXT:    [[E:%.*]] = shl <4 x i32> <i32 6, i32 4, i32 poison, i32 -458752>, [[C]]
++; CHECK-NEXT:    [[E:%.*]] = shl <4 x i32> <i32 6, i32 4, i32 undef, i32 -458752>, [[C]]
+ ; CHECK-NEXT:    ret <4 x i32> [[E]]
+ ;
+   %A = zext i16 %I to i32
+@@ -94,7 +94,7 @@ define <4 x i32> @ashr_C1_add_A_C2_v4i32_splat(i16 %I) {
+ ; CHECK-NEXT:    [[A:%.*]] = zext i16 [[I:%.*]] to i32
+ ; CHECK-NEXT:    [[B:%.*]] = insertelement <4 x i32> undef, i32 [[A]], i32 0
+ ; CHECK-NEXT:    [[C:%.*]] = shufflevector <4 x i32> [[B]], <4 x i32> undef, <4 x i32> zeroinitializer
+-; CHECK-NEXT:    [[E:%.*]] = ashr <4 x i32> <i32 6, i32 1, i32 poison, i32 -1>, [[C]]
++; CHECK-NEXT:    [[E:%.*]] = ashr <4 x i32> <i32 6, i32 1, i32 undef, i32 -1>, [[C]]
+ ; CHECK-NEXT:    ret <4 x i32> [[E]]
+ ;
+   %A = zext i16 %I to i32
+@@ -110,7 +110,7 @@ define <4 x i32> @lshr_C1_add_A_C2_v4i32_splat(i16 %I) {
+ ; CHECK-NEXT:    [[A:%.*]] = zext i16 [[I:%.*]] to i32
+ ; CHECK-NEXT:    [[B:%.*]] = insertelement <4 x i32> undef, i32 [[A]], i32 0
+ ; CHECK-NEXT:    [[C:%.*]] = shufflevector <4 x i32> [[B]], <4 x i32> undef, <4 x i32> zeroinitializer
+-; CHECK-NEXT:    [[E:%.*]] = lshr <4 x i32> <i32 6, i32 1, i32 poison, i32 65535>, [[C]]
++; CHECK-NEXT:    [[E:%.*]] = lshr <4 x i32> <i32 6, i32 1, i32 undef, i32 65535>, [[C]]
+ ; CHECK-NEXT:    ret <4 x i32> [[E]]
+ ;
+   %A = zext i16 %I to i32
+diff --git a/llvm/test/Transforms/InstSimplify/ConstProp/InsertElement.ll b/llvm/test/Transforms/InstSimplify/ConstProp/InsertElement.ll
+index 127c1692b5b8..a9a27a5df01f 100644
+--- a/llvm/test/Transforms/InstSimplify/ConstProp/InsertElement.ll
++++ b/llvm/test/Transforms/InstSimplify/ConstProp/InsertElement.ll
+@@ -25,7 +25,7 @@ define <4 x i64> @insertelement() {
+ 
+ define <4 x i64> @insertelement_undef() {
+ ; CHECK-LABEL: @insertelement_undef(
+-; CHECK-NEXT:    ret <4 x i64> poison
++; CHECK-NEXT:    ret <4 x i64> undef
+ ;
+   %vec1 = insertelement <4 x i64> undef, i64 -1, i32 0
+   %vec2 = insertelement <4 x i64> %vec1, i64 -2, i32 1
+diff --git a/llvm/test/Transforms/InstSimplify/ConstProp/cast.ll b/llvm/test/Transforms/InstSimplify/ConstProp/cast.ll
+index 1136151f7157..adf5e4b68a1b 100644
+--- a/llvm/test/Transforms/InstSimplify/ConstProp/cast.ll
++++ b/llvm/test/Transforms/InstSimplify/ConstProp/cast.ll
+@@ -5,7 +5,7 @@
+ 
+ define i8 @overflow_fptosi() {
+ ; CHECK-LABEL: @overflow_fptosi(
+-; CHECK-NEXT:    ret i8 poison
++; CHECK-NEXT:    ret i8 undef
+ ;
+   %i = fptosi double 1.56e+02 to i8
+   ret i8 %i
+@@ -13,7 +13,7 @@ define i8 @overflow_fptosi() {
+ 
+ define i8 @overflow_fptoui() {
+ ; CHECK-LABEL: @overflow_fptoui(
+-; CHECK-NEXT:    ret i8 poison
++; CHECK-NEXT:    ret i8 undef
+ ;
+   %i = fptoui double 2.56e+02 to i8
+   ret i8 %i
+diff --git a/llvm/test/Transforms/InstSimplify/ConstProp/poison.ll b/llvm/test/Transforms/InstSimplify/ConstProp/poison.ll
+index f3fe29ff57ba..ea34bb4699e6 100644
+--- a/llvm/test/Transforms/InstSimplify/ConstProp/poison.ll
++++ b/llvm/test/Transforms/InstSimplify/ConstProp/poison.ll
+@@ -104,14 +104,14 @@ define void @vec_aggr_ops() {
+ 
+ define void @other_ops(i8 %x) {
+ ; CHECK-LABEL: @other_ops(
+-; CHECK-NEXT:    call void (...) @use(i1 poison, i1 poison, i8 poison, i8 poison, i8* poison, i8* poison)
++; CHECK-NEXT:    call void (...) @use(i1 poison, i1 poison, i8 poison, i8 poison, i8* poison)
+ ; CHECK-NEXT:    ret void
+ ;
+   %i1 = icmp eq i8 poison, 1
+   %i2 = fcmp oeq float poison, 1.0
+   %i3 = select i1 poison, i8 1, i8 2
+   %i4 = select i1 true, i8 poison, i8 %x
+-  call void (...) @use(i1 %i1, i1 %i2, i8 %i3, i8 %i4, i8* getelementptr (i8, i8* poison, i64 1), i8* getelementptr inbounds (i8, i8* undef, i64 1))
++  call void (...) @use(i1 %i1, i1 %i2, i8 %i3, i8 %i4, i8* getelementptr (i8, i8* poison, i64 1))
+   ret void
+ }
+ 
+diff --git a/llvm/test/Transforms/InstSimplify/ConstProp/shift.ll b/llvm/test/Transforms/InstSimplify/ConstProp/shift.ll
+index a7a60e562117..3e64513533ff 100644
+--- a/llvm/test/Transforms/InstSimplify/ConstProp/shift.ll
++++ b/llvm/test/Transforms/InstSimplify/ConstProp/shift.ll
+@@ -3,15 +3,15 @@
+ ; CHECK-LABEL: shift_undef_64
+ define void @shift_undef_64(i64* %p) {
+   %r1 = lshr i64 -1, 4294967296 ; 2^32
+-  ; CHECK: store i64 poison
++  ; CHECK: store i64 undef
+   store i64 %r1, i64* %p
+ 
+   %r2 = ashr i64 -1, 4294967297 ; 2^32 + 1
+-  ; CHECK: store i64 poison
++  ; CHECK: store i64 undef
+   store i64 %r2, i64* %p
+ 
+   %r3 = shl i64 -1, 4294967298 ; 2^32 + 2
+-  ; CHECK: store i64 poison
++  ; CHECK: store i64 undef
+   store i64 %r3, i64* %p
+ 
+   ret void
+@@ -20,15 +20,15 @@ define void @shift_undef_64(i64* %p) {
+ ; CHECK-LABEL: shift_undef_65
+ define void @shift_undef_65(i65* %p) {
+   %r1 = lshr i65 2, 18446744073709551617
+-  ; CHECK: store i65 poison
++  ; CHECK: store i65 undef
+   store i65 %r1, i65* %p
+ 
+   %r2 = ashr i65 4, 18446744073709551617
+-  ; CHECK: store i65 poison
++  ; CHECK: store i65 undef
+   store i65 %r2, i65* %p
+ 
+   %r3 = shl i65 1, 18446744073709551617
+-  ; CHECK: store i65 poison
++  ; CHECK: store i65 undef
+   store i65 %r3, i65* %p
+ 
+   ret void
+@@ -37,15 +37,15 @@ define void @shift_undef_65(i65* %p) {
+ ; CHECK-LABEL: shift_undef_256
+ define void @shift_undef_256(i256* %p) {
+   %r1 = lshr i256 2, 18446744073709551617
+-  ; CHECK: store i256 poison
++  ; CHECK: store i256 undef
+   store i256 %r1, i256* %p
+ 
+   %r2 = ashr i256 4, 18446744073709551618
+-  ; CHECK: store i256 poison
++  ; CHECK: store i256 undef
+   store i256 %r2, i256* %p
+ 
+   %r3 = shl i256 1, 18446744073709551619
+-  ; CHECK: store i256 poison
++  ; CHECK: store i256 undef
+   store i256 %r3, i256* %p
+ 
+   ret void
+@@ -54,15 +54,15 @@ define void @shift_undef_256(i256* %p) {
+ ; CHECK-LABEL: shift_undef_511
+ define void @shift_undef_511(i511* %p) {
+   %r1 = lshr i511 -1, 1208925819614629174706276 ; 2^80 + 100
+-  ; CHECK: store i511 poison
++  ; CHECK: store i511 undef
+   store i511 %r1, i511* %p
+ 
+   %r2 = ashr i511 -2, 1208925819614629174706200
+-  ; CHECK: store i511 poison
++  ; CHECK: store i511 undef
+   store i511 %r2, i511* %p
+ 
+   %r3 = shl i511 -3, 1208925819614629174706180
+-  ; CHECK: store i511 poison
++  ; CHECK: store i511 undef
+   store i511 %r3, i511* %p
+ 
+   ret void
+diff --git a/llvm/test/Transforms/InstSimplify/ConstProp/vector-undef-elts.ll b/llvm/test/Transforms/InstSimplify/ConstProp/vector-undef-elts.ll
+index 99cc2527d12e..5d0f484bc3fd 100644
+--- a/llvm/test/Transforms/InstSimplify/ConstProp/vector-undef-elts.ll
++++ b/llvm/test/Transforms/InstSimplify/ConstProp/vector-undef-elts.ll
+@@ -5,7 +5,7 @@
+ 
+ define <3 x i8> @shl() {
+ ; CHECK-LABEL: @shl(
+-; CHECK-NEXT:    ret <3 x i8> <i8 poison, i8 0, i8 0>
++; CHECK-NEXT:    ret <3 x i8> <i8 undef, i8 0, i8 0>
+ ;
+   %c = shl <3 x i8> undef, <i8 undef, i8 4, i8 1>
+   ret <3 x i8> %c
+diff --git a/llvm/test/Transforms/InstSimplify/ConstProp/vscale.ll b/llvm/test/Transforms/InstSimplify/ConstProp/vscale.ll
+index 048e8840ffd8..66e4c93e1968 100644
+--- a/llvm/test/Transforms/InstSimplify/ConstProp/vscale.ll
++++ b/llvm/test/Transforms/InstSimplify/ConstProp/vscale.ll
+@@ -75,7 +75,7 @@ define <vscale x 4 x float> @fmul() {
+ 
+ define <vscale x 4 x i32> @udiv() {
+ ; CHECK-LABEL: @udiv(
+-; CHECK-NEXT:    ret <vscale x 4 x i32> poison
++; CHECK-NEXT:    ret <vscale x 4 x i32> undef
+ ;
+   %r = udiv <vscale x 4 x i32> undef, undef
+   ret <vscale x 4 x i32> %r
+@@ -83,7 +83,7 @@ define <vscale x 4 x i32> @udiv() {
+ 
+ define <vscale x 4 x i32> @udiv_splat_zero() {
+ ; CHECK-LABEL: @udiv_splat_zero(
+-; CHECK-NEXT:    ret <vscale x 4 x i32> poison
++; CHECK-NEXT:    ret <vscale x 4 x i32> undef
+ ;
+   %r = udiv <vscale x 4 x i32> zeroinitializer, zeroinitializer
+   ret <vscale x 4 x i32> %r
+@@ -91,7 +91,7 @@ define <vscale x 4 x i32> @udiv_splat_zero() {
+ 
+ define <vscale x 4 x i32> @sdiv() {
+ ; CHECK-LABEL: @sdiv(
+-; CHECK-NEXT:    ret <vscale x 4 x i32> poison
++; CHECK-NEXT:    ret <vscale x 4 x i32> undef
+ ;
+   %r = sdiv <vscale x 4 x i32> undef, undef
+   ret <vscale x 4 x i32> %r
+@@ -107,7 +107,7 @@ define <vscale x 4 x float> @fdiv() {
+ 
+ define <vscale x 4 x i32> @urem() {
+ ; CHECK-LABEL: @urem(
+-; CHECK-NEXT:    ret <vscale x 4 x i32> poison
++; CHECK-NEXT:    ret <vscale x 4 x i32> undef
+ ;
+   %r = urem <vscale x 4 x i32> undef, undef
+   ret <vscale x 4 x i32> %r
+@@ -115,7 +115,7 @@ define <vscale x 4 x i32> @urem() {
+ 
+ define <vscale x 4 x i32> @srem() {
+ ; CHECK-LABEL: @srem(
+-; CHECK-NEXT:    ret <vscale x 4 x i32> poison
++; CHECK-NEXT:    ret <vscale x 4 x i32> undef
+ ;
+   %r = srem <vscale x 4 x i32> undef, undef
+   ret <vscale x 4 x i32> %r
+@@ -135,7 +135,7 @@ define <vscale x 4 x float> @frem() {
+ 
+ define <vscale x 4 x i32> @shl() {
+ ; CHECK-LABEL: @shl(
+-; CHECK-NEXT:    ret <vscale x 4 x i32> poison
++; CHECK-NEXT:    ret <vscale x 4 x i32> undef
+ ;
+   %r = shl <vscale x 4 x i32> undef, undef
+   ret <vscale x 4 x i32> %r
+@@ -143,7 +143,7 @@ define <vscale x 4 x i32> @shl() {
+ 
+ define <vscale x 4 x i32> @lshr() {
+ ; CHECK-LABEL: @lshr(
+-; CHECK-NEXT:    ret <vscale x 4 x i32> poison
++; CHECK-NEXT:    ret <vscale x 4 x i32> undef
+ ;
+   %r = lshr <vscale x 4 x i32> undef, undef
+   ret <vscale x 4 x i32> %r
+@@ -151,7 +151,7 @@ define <vscale x 4 x i32> @lshr() {
+ 
+ define <vscale x 4 x i32> @ashr() {
+ ; CHECK-LABEL: @ashr(
+-; CHECK-NEXT:    ret <vscale x 4 x i32> poison
++; CHECK-NEXT:    ret <vscale x 4 x i32> undef
+ ;
+   %r = ashr <vscale x 4 x i32> undef, undef
+   ret <vscale x 4 x i32> %r
+diff --git a/llvm/test/Transforms/InstSimplify/rem.ll b/llvm/test/Transforms/InstSimplify/rem.ll
+index 6aaeb5c70d00..6ccb6474ce44 100644
+--- a/llvm/test/Transforms/InstSimplify/rem.ll
++++ b/llvm/test/Transforms/InstSimplify/rem.ll
+@@ -25,11 +25,11 @@ define <2 x i32> @zero_dividend_vector_undef_elt(<2 x i32> %A) {
+   ret <2 x i32> %B
+ }
+ 
+-; Division-by-zero is poison. UB in any vector lane means the whole op is poison.
++; Division-by-zero is undef. UB in any vector lane means the whole op is undef.
+ 
+ define <2 x i8> @srem_zero_elt_vec_constfold(<2 x i8> %x) {
+ ; CHECK-LABEL: @srem_zero_elt_vec_constfold(
+-; CHECK-NEXT:    ret <2 x i8> poison
++; CHECK-NEXT:    ret <2 x i8> undef
+ ;
+   %rem = srem <2 x i8> <i8 1, i8 2>, <i8 0, i8 -42>
+   ret <2 x i8> %rem
+@@ -37,7 +37,7 @@ define <2 x i8> @srem_zero_elt_vec_constfold(<2 x i8> %x) {
+ 
+ define <2 x i8> @urem_zero_elt_vec_constfold(<2 x i8> %x) {
+ ; CHECK-LABEL: @urem_zero_elt_vec_constfold(
+-; CHECK-NEXT:    ret <2 x i8> poison
++; CHECK-NEXT:    ret <2 x i8> undef
+ ;
+   %rem = urem <2 x i8> <i8 1, i8 2>, <i8 42, i8 0>
+   ret <2 x i8> %rem
+@@ -325,28 +325,3 @@ define <2 x i32> @srem_with_sext_bool_divisor_vec(<2 x i1> %x, <2 x i32> %y) {
+   ret <2 x i32> %r
+ }
+ 
+-define i8 @srem_minusone_divisor() {
+-; CHECK-LABEL: @srem_minusone_divisor(
+-; CHECK-NEXT:    ret i8 poison
+-;
+-  %v = srem i8 -128, -1
+-  ret i8 %v
+-}
+-
+-define i32 @poison(i32 %x) {
+-; CHECK-LABEL: @poison(
+-; CHECK-NEXT:    ret i32 poison
+-;
+-  %v = urem i32 %x, poison
+-  ret i32 %v
+-}
+-
+-; TODO: this should be poison
+-
+-define i32 @poison2(i32 %x) {
+-; CHECK-LABEL: @poison2(
+-; CHECK-NEXT:    ret i32 0
+-;
+-  %v = urem i32 poison, %x
+-  ret i32 %v
+-}
+diff --git a/llvm/test/Transforms/SROA/phi-gep.ll b/llvm/test/Transforms/SROA/phi-gep.ll
+index 915ae546beda..6bf2a7718658 100644
+--- a/llvm/test/Transforms/SROA/phi-gep.ll
++++ b/llvm/test/Transforms/SROA/phi-gep.ll
+@@ -348,7 +348,7 @@ define void @test_sroa_gep_phi_select_same_block() {
+ ; CHECK-NEXT:    [[PHI:%.*]] = phi %pair* [ [[ALLOCA]], [[ENTRY:%.*]] ], [ [[SELECT:%.*]], [[WHILE_BODY]] ]
+ ; CHECK-NEXT:    [[SELECT]] = select i1 undef, %pair* [[PHI]], %pair* undef
+ ; CHECK-NEXT:    [[PHI_SROA_GEP:%.*]] = getelementptr inbounds [[PAIR]], %pair* [[PHI]], i64 1
+-; CHECK-NEXT:    [[SELECT_SROA_SEL:%.*]] = select i1 undef, %pair* [[PHI_SROA_GEP]], %pair* poison
++; CHECK-NEXT:    [[SELECT_SROA_SEL:%.*]] = select i1 undef, %pair* [[PHI_SROA_GEP]], %pair* undef
+ ; CHECK-NEXT:    br i1 undef, label [[EXIT:%.*]], label [[WHILE_BODY]]
+ ; CHECK:       exit:
+ ; CHECK-NEXT:    unreachable
+diff --git a/llvm/test/Transforms/SROA/select-gep.ll b/llvm/test/Transforms/SROA/select-gep.ll
+index f69cfeb410bd..93cb3420d0af 100644
+--- a/llvm/test/Transforms/SROA/select-gep.ll
++++ b/llvm/test/Transforms/SROA/select-gep.ll
+@@ -83,7 +83,7 @@ define i32 @test_sroa_select_gep_undef(i1 %cond) {
+ ; CHECK-LABEL: @test_sroa_select_gep_undef(
+ ; CHECK-NEXT:  bb:
+ ; CHECK-NEXT:    [[A_SROA_0:%.*]] = alloca i32, align 4
+-; CHECK-NEXT:    [[SELECT_SROA_SEL:%.*]] = select i1 [[COND:%.*]], i32* [[A_SROA_0]], i32* poison
++; CHECK-NEXT:    [[SELECT_SROA_SEL:%.*]] = select i1 [[COND:%.*]], i32* [[A_SROA_0]], i32* undef
+ ; CHECK-NEXT:    [[LOAD:%.*]] = load i32, i32* [[SELECT_SROA_SEL]], align 4
+ ; CHECK-NEXT:    ret i32 [[LOAD]]
+ ;
+diff --git a/llvm/unittests/IR/ConstantsTest.cpp b/llvm/unittests/IR/ConstantsTest.cpp
+index 9eabc7c55638..96d3672647e8 100644
+--- a/llvm/unittests/IR/ConstantsTest.cpp
++++ b/llvm/unittests/IR/ConstantsTest.cpp
+@@ -27,7 +27,7 @@ TEST(ConstantsTest, Integer_i1) {
+   Constant* Zero = ConstantInt::get(Int1, 0);
+   Constant* NegOne = ConstantInt::get(Int1, static_cast<uint64_t>(-1), true);
+   EXPECT_EQ(NegOne, ConstantInt::getSigned(Int1, -1));
+-  Constant* Poison = PoisonValue::get(Int1);
++  Constant* Undef = UndefValue::get(Int1);
+ 
+   // Input:  @b = constant i1 add(i1 1 , i1 1)
+   // Output: @b = constant i1 false
+@@ -53,21 +53,21 @@ TEST(ConstantsTest, Integer_i1) {
+   // @g = constant i1 false
+   EXPECT_EQ(Zero, ConstantExpr::getSub(One, One));
+ 
+-  // @h = constant i1 shl(i1 1 , i1 1)  ; poison
+-  // @h = constant i1 poison
+-  EXPECT_EQ(Poison, ConstantExpr::getShl(One, One));
++  // @h = constant i1 shl(i1 1 , i1 1)  ; undefined
++  // @h = constant i1 undef
++  EXPECT_EQ(Undef, ConstantExpr::getShl(One, One));
+ 
+   // @i = constant i1 shl(i1 1 , i1 0)
+   // @i = constant i1 true
+   EXPECT_EQ(One, ConstantExpr::getShl(One, Zero));
+ 
+-  // @j = constant i1 lshr(i1 1, i1 1)  ; poison
+-  // @j = constant i1 poison
+-  EXPECT_EQ(Poison, ConstantExpr::getLShr(One, One));
++  // @j = constant i1 lshr(i1 1, i1 1)  ; undefined
++  // @j = constant i1 undef
++  EXPECT_EQ(Undef, ConstantExpr::getLShr(One, One));
+ 
+-  // @m = constant i1 ashr(i1 1, i1 1)  ; poison
+-  // @m = constant i1 poison
+-  EXPECT_EQ(Poison, ConstantExpr::getAShr(One, One));
++  // @m = constant i1 ashr(i1 1, i1 1)  ; undefined
++  // @m = constant i1 undef
++  EXPECT_EQ(Undef, ConstantExpr::getAShr(One, One));
+ 
+   // @n = constant i1 mul(i1 -1, i1 1)
+   // @n = constant i1 true
+@@ -218,6 +218,7 @@ TEST(ConstantsTest, AsInstructionsTest) {
+   Constant *Elt = ConstantInt::get(Int16Ty, 2015);
+   Constant *Poison16 = PoisonValue::get(Int16Ty);
+   Constant *Undef64  = UndefValue::get(Int64Ty);
++  Constant *UndefV16 = UndefValue::get(P6->getType());
+   Constant *PoisonV16 = PoisonValue::get(P6->getType());
+ 
+   #define P0STR "ptrtoint (i32** @dummy to i32)"
+@@ -294,8 +295,8 @@ TEST(ConstantsTest, AsInstructionsTest) {
+ 
+   EXPECT_EQ(Elt, ConstantExpr::getExtractElement(
+                  ConstantExpr::getInsertElement(P6, Elt, One), One));
+-  EXPECT_EQ(PoisonV16, ConstantExpr::getInsertElement(P6, Elt, Two));
+-  EXPECT_EQ(PoisonV16, ConstantExpr::getInsertElement(P6, Elt, Big));
++  EXPECT_EQ(UndefV16, ConstantExpr::getInsertElement(P6, Elt, Two));
++  EXPECT_EQ(UndefV16, ConstantExpr::getInsertElement(P6, Elt, Big));
+   EXPECT_EQ(PoisonV16, ConstantExpr::getInsertElement(P6, Elt, Undef64));
+ }
+ 
diff --git a/sys-devel/llvm/files/cherry/127091bfd5edf10495fee4724fd21c666e5d79c1.patch b/sys-devel/llvm/files/cherry/127091bfd5edf10495fee4724fd21c666e5d79c1.patch
new file mode 100644
index 0000000..eff1e22
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/127091bfd5edf10495fee4724fd21c666e5d79c1.patch
@@ -0,0 +1,125 @@
+commit 127091bfd5edf10495fee4724fd21c666e5d79c1
+Author: Artem Belevich <tra@google.com>
+Date:   Thu Jan 14 16:05:33 2021 -0800
+
+    [CUDA] Normalize handling of defauled dtor.
+    
+    Defaulted destructor was treated inconsistently, compared to other
+    compiler-generated functions.
+    
+    When Sema::IdentifyCUDATarget() got called on just-created dtor which didn't
+    have implicit __host__ __device__ attributes applied yet, it would treat it as a
+    host function.  That happened to (sometimes) hide the error when dtor referred
+    to a host-only functions.
+    
+    Even when we had identified defaulted dtor as a HD function, we still treated it
+    inconsistently during selection of usual deallocators, where we did not allow
+    referring to wrong-side functions, while it is allowed for other HD functions.
+    
+    This change brings handling of defaulted dtors in line with other HD functions.
+    
+    Differential Revision: https://reviews.llvm.org/D94732
+
+diff --git a/clang/lib/Sema/SemaCUDA.cpp b/clang/lib/Sema/SemaCUDA.cpp
+index 0f06adf38f7a..ee91eb4c5deb 100644
+--- a/clang/lib/Sema/SemaCUDA.cpp
++++ b/clang/lib/Sema/SemaCUDA.cpp
+@@ -123,7 +123,8 @@ Sema::CUDAFunctionTarget Sema::IdentifyCUDATarget(const FunctionDecl *D,
+     return CFT_Device;
+   } else if (hasAttr<CUDAHostAttr>(D, IgnoreImplicitHDAttr)) {
+     return CFT_Host;
+-  } else if (D->isImplicit() && !IgnoreImplicitHDAttr) {
++  } else if ((D->isImplicit() || !D->isUserProvided()) &&
++             !IgnoreImplicitHDAttr) {
+     // Some implicit declarations (like intrinsic functions) are not marked.
+     // Set the most lenient target on them for maximal flexibility.
+     return CFT_HostDevice;
+diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
+index 1ee52107c3da..d91db60f17a0 100644
+--- a/clang/lib/Sema/SemaExprCXX.cpp
++++ b/clang/lib/Sema/SemaExprCXX.cpp
+@@ -1527,9 +1527,24 @@ Sema::BuildCXXTypeConstructExpr(TypeSourceInfo *TInfo,
+ bool Sema::isUsualDeallocationFunction(const CXXMethodDecl *Method) {
+   // [CUDA] Ignore this function, if we can't call it.
+   const FunctionDecl *Caller = dyn_cast<FunctionDecl>(CurContext);
+-  if (getLangOpts().CUDA &&
+-      IdentifyCUDAPreference(Caller, Method) <= CFP_WrongSide)
+-    return false;
++  if (getLangOpts().CUDA) {
++    auto CallPreference = IdentifyCUDAPreference(Caller, Method);
++    // If it's not callable at all, it's not the right function.
++    if (CallPreference < CFP_WrongSide)
++      return false;
++    if (CallPreference == CFP_WrongSide) {
++      // Maybe. We have to check if there are better alternatives.
++      DeclContext::lookup_result R =
++          Method->getDeclContext()->lookup(Method->getDeclName());
++      for (const auto *D : R) {
++        if (const auto *FD = dyn_cast<FunctionDecl>(D)) {
++          if (IdentifyCUDAPreference(Caller, FD) > CFP_WrongSide)
++            return false;
++        }
++      }
++      // We've found no better variants.
++    }
++  }
+ 
+   SmallVector<const FunctionDecl*, 4> PreventedBy;
+   bool Result = Method->isUsualDeallocationFunction(PreventedBy);
+diff --git a/clang/test/CodeGenCUDA/usual-deallocators.cu b/clang/test/CodeGenCUDA/usual-deallocators.cu
+index 7e7752497f34..6f4cc267a23f 100644
+--- a/clang/test/CodeGenCUDA/usual-deallocators.cu
++++ b/clang/test/CodeGenCUDA/usual-deallocators.cu
+@@ -12,6 +12,19 @@ extern "C" __host__ void host_fn();
+ extern "C" __device__ void dev_fn();
+ extern "C" __host__ __device__ void hd_fn();
+ 
++// Destructors are handled a bit differently, compared to regular functions.
++// Make sure we do trigger kernel generation on the GPU side even if it's only
++// referenced by the destructor.
++template<typename T> __global__ void f(T) {}
++template<typename T> struct A {
++  ~A() { f<<<1, 1>>>(T()); }
++};
++
++// HOST-LABEL: @a
++A<int> a;
++// HOST-LABEL: define linkonce_odr void @_ZN1AIiED1Ev
++// search further down for the deice-side checks for @_Z1fIiEvT_
++
+ struct H1D1 {
+   __host__ void operator delete(void *) { host_fn(); };
+   __device__ void operator delete(void *) { dev_fn(); };
+@@ -95,6 +108,9 @@ __host__ __device__ void tests_hd(void *t) {
+   test_hd<H1H2D1D2>(t);
+ }
+ 
++// Make sure that we've generated the kernel used by A::~A.
++// DEVICE-LABEL: define dso_local void @_Z1fIiEvT_
++
+ // Make sure we've picked deallocator for the correct side of compilation.
+ 
+ // COMMON-LABEL: define  linkonce_odr void @_ZN4H1D1dlEPv(i8* %0)
+@@ -131,3 +147,5 @@ __host__ __device__ void tests_hd(void *t) {
+ // COMMON-LABEL: define  linkonce_odr void @_ZN8H1H2D1D2dlEPv(i8* %0)
+ // DEVICE: call void @dev_fn()
+ // HOST: call void @host_fn()
++
++// DEVICE: !0 = !{void (i32)* @_Z1fIiEvT_, !"kernel", i32 1}
+diff --git a/clang/test/SemaCUDA/usual-deallocators.cu b/clang/test/SemaCUDA/usual-deallocators.cu
+index a0238649c6dc..3670a3bf32c3 100644
+--- a/clang/test/SemaCUDA/usual-deallocators.cu
++++ b/clang/test/SemaCUDA/usual-deallocators.cu
+@@ -93,3 +93,12 @@ __host__ __device__ void tests_hd(void *t) {
+   test_hd<H1H2D2>(t);
+   test_hd<H1H2D1D2>(t);
+ }
++
++// This should produce no errors.  Defaulted destructor should be treated as HD,
++// which allows referencing host-only `operator delete` with a deferred
++// diagnostics that would fire if we ever attempt to codegen it on device..
++struct H {
++  virtual ~H() = default;
++  static void operator delete(void *) {}
++};
++H h;
diff --git a/sys-devel/llvm/files/cherry/17b4e695ce0ef89eac4a37df2df49d4c0e700766.patch b/sys-devel/llvm/files/cherry/17b4e695ce0ef89eac4a37df2df49d4c0e700766.patch
new file mode 100644
index 0000000..2282d83
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/17b4e695ce0ef89eac4a37df2df49d4c0e700766.patch
@@ -0,0 +1,119 @@
+commit 17b4e695ce0ef89eac4a37df2df49d4c0e700766
+Author: Fangrui Song <i@maskray.me>
+Date:   Wed Feb 24 11:10:09 2021 -0800
+
+    [llvm-objcopy] If input=output, preserve umask bits, otherwise drop S_ISUID/S_ISGID bits
+    
+    This makes the behavior similar to cp
+    
+    ```
+    chmod u+s,g+s,o+x a
+    sudo llvm-strip a -o b
+    // With this patch, b drops set-user-ID and set-group-ID bits.
+    // sudo cp a b => b does not have set-user-ID or set-group-ID bits.
+    ```
+    
+    This also changes the behavior for the following case:
+    
+    ```
+    chmod u+s,g+s,o+x a
+    llvm-strip a
+    // a preserves set-user-ID and set-group-ID bits.
+    // This matches binutils<2.36 and probably >=2.37.  2.36 and 2.36.1 have some compatibility issues.
+    ```
+    
+    Differential Revision: https://reviews.llvm.org/D97253
+
+diff --git a/llvm/test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test b/llvm/test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test
+index 39957716a1de..8f4993f4f3d2 100644
+--- a/llvm/test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test
++++ b/llvm/test/tools/llvm-objcopy/ELF/mirror-permissions-unix.test
+@@ -37,12 +37,24 @@
+ # RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms
+ # RUN: cmp %t1.perms %t.0640
+ 
++## Drop S_ISUID/S_ISGID bits.
++# RUN: chmod 6640 %t
++# RUN: llvm-objcopy %t %t1
++# RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms
++# RUN: cmp %t1.perms %t.0640
++
+ ## Don't set the permission of a character special file, otherwise there will
+ ## be an EPERM error (or worse: root may change the permission).
+ # RUN: ls -l /dev/null | cut -f 1 -d ' ' > %tnull.perms
+ # RUN: llvm-objcopy %t /dev/null
+ # RUN: ls -l /dev/null | cut -f 1 -d ' ' | diff - %tnull.perms
+ 
++## Ignore umask if the output filename is the same as the input filename.
++# RUN: umask 022
++# RUN: cp %t %t1 && chmod 0777 %t1 && llvm-objcopy %t1
++# RUN: ls -l %t1 | cut -f 1 -d ' ' > %t1.perms
++# RUN: cmp %t1.perms %t.0777
++
+ --- !ELF
+ FileHeader:
+   Class:   ELFCLASS64
+diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
+index 42d97b2ada5a..43e3334e3317 100644
+--- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
++++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
+@@ -230,7 +230,7 @@ static Error executeObjcopyOnArchive(CopyConfig &Config,
+ 
+ static Error restoreStatOnFile(StringRef Filename,
+                                const sys::fs::file_status &Stat,
+-                               bool PreserveDates) {
++                               const CopyConfig &Config) {
+   int FD;
+ 
+   // Writing to stdout should not be treated as an error here, just
+@@ -242,7 +242,7 @@ static Error restoreStatOnFile(StringRef Filename,
+           sys::fs::openFileForWrite(Filename, FD, sys::fs::CD_OpenExisting))
+     return createFileError(Filename, EC);
+ 
+-  if (PreserveDates)
++  if (Config.PreserveDates)
+     if (auto EC = sys::fs::setLastAccessAndModificationTime(
+             FD, Stat.getLastAccessedTime(), Stat.getLastModificationTime()))
+       return createFileError(Filename, EC);
+@@ -250,17 +250,17 @@ static Error restoreStatOnFile(StringRef Filename,
+   sys::fs::file_status OStat;
+   if (std::error_code EC = sys::fs::status(FD, OStat))
+     return createFileError(Filename, EC);
+-  if (OStat.type() == sys::fs::file_type::regular_file)
++  if (OStat.type() == sys::fs::file_type::regular_file) {
++    sys::fs::perms Perm = Stat.permissions();
++    if (Config.InputFilename != Config.OutputFilename)
++      Perm = static_cast<sys::fs::perms>(Perm & ~sys::fs::getUmask() & ~06000);
+ #ifdef _WIN32
+-    if (auto EC = sys::fs::setPermissions(
+-            Filename, static_cast<sys::fs::perms>(Stat.permissions() &
+-                                                  ~sys::fs::getUmask())))
++    if (auto EC = sys::fs::setPermissions(Filename, Perm))
+ #else
+-    if (auto EC = sys::fs::setPermissions(
+-            FD, static_cast<sys::fs::perms>(Stat.permissions() &
+-                                            ~sys::fs::getUmask())))
++    if (auto EC = sys::fs::setPermissions(FD, Perm))
+ #endif
+       return createFileError(Filename, EC);
++  }
+ 
+   if (auto EC = sys::Process::SafelyCloseFileDescriptor(FD))
+     return createFileError(Filename, EC);
+@@ -320,14 +320,12 @@ static Error executeObjcopy(CopyConfig &Config) {
+     }
+   }
+ 
+-  if (Error E =
+-          restoreStatOnFile(Config.OutputFilename, Stat, Config.PreserveDates))
++  if (Error E = restoreStatOnFile(Config.OutputFilename, Stat, Config))
+     return E;
+ 
+   if (!Config.SplitDWO.empty()) {
+     Stat.permissions(static_cast<sys::fs::perms>(0666));
+-    if (Error E =
+-            restoreStatOnFile(Config.SplitDWO, Stat, Config.PreserveDates))
++    if (Error E = restoreStatOnFile(Config.SplitDWO, Stat, Config))
+       return E;
+   }
+ 
diff --git a/sys-devel/llvm/files/cherry/195f44278c4361a4a32377a98a1e3a15203d3647.patch b/sys-devel/llvm/files/cherry/195f44278c4361a4a32377a98a1e3a15203d3647.patch
new file mode 100644
index 0000000..8f76a93
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/195f44278c4361a4a32377a98a1e3a15203d3647.patch
@@ -0,0 +1,592 @@
+commit 195f44278c4361a4a32377a98a1e3a15203d3647
+Author: Kristof Beyls <kristof.beyls@arm.com>
+Date:   Wed Oct 28 21:04:11 2020 +0000
+
+    [ARM] Implement harden-sls-retbr for ARM mode
+    
+    Some processors may speculatively execute the instructions immediately
+    following indirect control flow, such as returns, indirect jumps and
+    indirect function calls.
+    
+    To avoid a potential miss-speculatively executed gadget after these
+    instructions leaking secrets through side channels, this pass places a
+    speculation barrier immediately after every indirect control flow where
+    control flow doesn't return to the next instruction, such as returns and
+    indirect jumps, but not indirect function calls.
+    
+    Hardening of indirect function calls will be done in a later,
+    independent patch.
+    
+    This patch is implementing the same functionality as the AArch64 counter
+    part implemented in https://reviews.llvm.org/D81400.
+    For AArch64, returns and indirect jumps only occur on RET and BR
+    instructions and hence the function attribute to control the hardening
+    is called "harden-sls-retbr" there. On AArch32, there is a much wider
+    variety of instructions that can trigger an indirect unconditional
+    control flow change.  I've decided to stick with the name
+    "harden-sls-retbr" as introduced for the corresponding AArch64
+    mitigation.
+    
+    This patch implements this for ARM mode. A future patch will extend this
+    to also support Thumb mode.
+    
+    The inserted barriers are never on the correct, architectural execution
+    path, and therefore performance overhead of this is expected to be low.
+    To ensure these barriers are never on an architecturally executed path,
+    when the harden-sls-retbr function attribute is present, indirect
+    control flow is never conditionalized/predicated.
+    
+    On targets that implement that Armv8.0-SB Speculation Barrier extension,
+    a single SB instruction is emitted that acts as a speculation barrier.
+    On other targets, a DSB SYS followed by a ISB is emitted to act as a
+    speculation barrier.
+    
+    These speculation barriers are implemented as pseudo instructions to
+    avoid later passes to analyze them and potentially remove them.
+    
+    The mitigation is off by default and can be enabled by the
+    harden-sls-retbr subtarget feature.
+    
+    Differential Revision: https://reviews.llvm.org/D92395
+
+diff --git a/llvm/lib/Target/ARM/ARM.h b/llvm/lib/Target/ARM/ARM.h
+index 7398968bb24a..51dfaaa96892 100644
+--- a/llvm/lib/Target/ARM/ARM.h
++++ b/llvm/lib/Target/ARM/ARM.h
+@@ -55,6 +55,7 @@ InstructionSelector *
+ createARMInstructionSelector(const ARMBaseTargetMachine &TM, const ARMSubtarget &STI,
+                              const ARMRegisterBankInfo &RBI);
+ Pass *createMVEGatherScatterLoweringPass();
++FunctionPass *createARMSLSHardeningPass();
+ 
+ void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
+                                   ARMAsmPrinter &AP);
+@@ -71,6 +72,7 @@ void initializeMVEVPTOptimisationsPass(PassRegistry &);
+ void initializeARMLowOverheadLoopsPass(PassRegistry &);
+ void initializeMVETailPredicationPass(PassRegistry &);
+ void initializeMVEGatherScatterLoweringPass(PassRegistry &);
++void initializeARMSLSHardeningPass(PassRegistry &);
+ 
+ } // end namespace llvm
+ 
+diff --git a/llvm/lib/Target/ARM/ARM.td b/llvm/lib/Target/ARM/ARM.td
+index 3fa65289744e..4d4ace51e13f 100644
+--- a/llvm/lib/Target/ARM/ARM.td
++++ b/llvm/lib/Target/ARM/ARM.td
+@@ -562,6 +562,16 @@ foreach i = {0-7} in
+                                               "Coprocessor "#i#" ISA is CDEv1",
+                                               [HasCDEOps]>;
+ 
++//===----------------------------------------------------------------------===//
++// Control codegen mitigation against Straight Line Speculation vulnerability.
++//===----------------------------------------------------------------------===//
++
++def FeatureHardenSlsRetBr : SubtargetFeature<"harden-sls-retbr",
++  "HardenSlsRetBr", "true",
++  "Harden against straight line speculation across RETurn and BranchRegister "
++  "instructions">;
++
++
+ //===----------------------------------------------------------------------===//
+ // ARM Processor subtarget features.
+ //
+diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+index f2ee03981f24..4cc85ad82d51 100644
+--- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
++++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+@@ -2180,6 +2180,25 @@ void ARMAsmPrinter::emitInstruction(const MachineInstr *MI) {
+   case ARM::PATCHABLE_TAIL_CALL:
+     LowerPATCHABLE_TAIL_CALL(*MI);
+     return;
++  case ARM::SpeculationBarrierISBDSBEndBB: {
++    // Print DSB SYS + ISB
++    MCInst TmpInstDSB;
++    TmpInstDSB.setOpcode(ARM::DSB);
++    TmpInstDSB.addOperand(MCOperand::createImm(0xf));
++    EmitToStreamer(*OutStreamer, TmpInstDSB);
++    MCInst TmpInstISB;
++    TmpInstISB.setOpcode(ARM::ISB);
++    TmpInstISB.addOperand(MCOperand::createImm(0xf));
++    EmitToStreamer(*OutStreamer, TmpInstISB);
++    return;
++  }
++  case ARM::SpeculationBarrierSBEndBB: {
++    // Print SB
++    MCInst TmpInstSB;
++    TmpInstSB.setOpcode(ARM::SB);
++    EmitToStreamer(*OutStreamer, TmpInstSB);
++    return;
++  }
+   }
+ 
+   MCInst TmpInst;
+diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+index 2d937930d89f..7068da5eb004 100644
+--- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
++++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+@@ -339,8 +339,10 @@ bool ARMBaseInstrInfo::analyzeBranch(MachineBasicBlock &MBB,
+     // out.
+     bool CantAnalyze = false;
+ 
+-    // Skip over DEBUG values and predicated nonterminators.
+-    while (I->isDebugInstr() || !I->isTerminator()) {
++    // Skip over DEBUG values, predicated nonterminators and speculation
++    // barrier terminators.
++    while (I->isDebugInstr() || !I->isTerminator() ||
++           isSpeculationBarrierEndBBOpcode(I->getOpcode()) ){
+       if (I == MBB.instr_begin())
+         return false;
+       --I;
+@@ -389,6 +391,9 @@ bool ARMBaseInstrInfo::analyzeBranch(MachineBasicBlock &MBB,
+         while (DI != MBB.instr_end()) {
+           MachineInstr &InstToDelete = *DI;
+           ++DI;
++          // Speculation barriers must not be deleted.
++          if (isSpeculationBarrierEndBBOpcode(InstToDelete.getOpcode()))
++            continue;
+           InstToDelete.eraseFromParent();
+         }
+       }
+@@ -672,14 +677,21 @@ bool ARMBaseInstrInfo::isPredicable(const MachineInstr &MI) const {
+   if (!isEligibleForITBlock(&MI))
+     return false;
+ 
++  const MachineFunction *MF = MI.getParent()->getParent();
+   const ARMFunctionInfo *AFI =
+-      MI.getParent()->getParent()->getInfo<ARMFunctionInfo>();
++      MF->getInfo<ARMFunctionInfo>();
+ 
+   // Neon instructions in Thumb2 IT blocks are deprecated, see ARMARM.
+   // In their ARM encoding, they can't be encoded in a conditional form.
+   if ((MI.getDesc().TSFlags & ARMII::DomainMask) == ARMII::DomainNEON)
+     return false;
+ 
++  // Make indirect control flow changes unpredicable when SLS mitigation is
++  // enabled.
++  const ARMSubtarget &ST = MF->getSubtarget<ARMSubtarget>();
++  if (ST.hardenSlsRetBr() && isIndirectControlFlowNotComingBack(MI))
++    return false;
++
+   if (AFI->isThumb2Function()) {
+     if (getSubtarget().restrictIT())
+       return isV8EligibleForIT(&MI);
+@@ -762,6 +774,12 @@ unsigned ARMBaseInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
+       Size = alignTo(Size, 4);
+     return Size;
+   }
++  case ARM::SpeculationBarrierISBDSBEndBB:
++    // This gets lowered to 2 4-byte instructions.
++    return 8;
++  case ARM::SpeculationBarrierSBEndBB:
++    // This gets lowered to 1 4-byte instructions.
++    return 4;
+   }
+ }
+ 
+diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.h b/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
+index df237dffe4fb..51a4b44eae1d 100644
+--- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
++++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
+@@ -635,6 +635,17 @@ bool isIndirectBranchOpcode(int Opc) {
+   return Opc == ARM::BX || Opc == ARM::MOVPCRX || Opc == ARM::tBRIND;
+ }
+ 
++static inline bool isIndirectControlFlowNotComingBack(const MachineInstr &MI) {
++  int opc = MI.getOpcode();
++  return MI.isReturn() || isIndirectBranchOpcode(MI.getOpcode()) ||
++         isJumpTableBranchOpcode(opc);
++}
++
++static inline bool isSpeculationBarrierEndBBOpcode(int Opc) {
++  return Opc == ARM::SpeculationBarrierISBDSBEndBB ||
++         Opc == ARM::SpeculationBarrierSBEndBB;
++}
++
+ static inline bool isPopOpcode(int Opc) {
+   return Opc == ARM::tPOP_RET || Opc == ARM::LDMIA_RET ||
+          Opc == ARM::t2LDMIA_RET || Opc == ARM::tPOP || Opc == ARM::LDMIA_UPD ||
+diff --git a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
+index 86da5a24d340..77839710e03e 100644
+--- a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
++++ b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
+@@ -553,6 +553,12 @@ void ARMConstantIslands::doInitialJumpTablePlacement(
+   MachineBasicBlock *LastCorrectlyNumberedBB = nullptr;
+   for (MachineBasicBlock &MBB : *MF) {
+     auto MI = MBB.getLastNonDebugInstr();
++    // Look past potential SpeculationBarriers at end of BB.
++    while (MI != MBB.end() &&
++           (isSpeculationBarrierEndBBOpcode(MI->getOpcode()) ||
++            MI->isDebugInstr()))
++      --MI;
++
+     if (MI == MBB.end())
+       continue;
+ 
+@@ -784,6 +790,7 @@ initializeFunctionInfo(const std::vector<MachineInstr*> &CPEMIs) {
+               NegOk = true;
+               IsSoImm = true;
+               unsigned CPI = I.getOperand(op).getIndex();
++              assert(CPI < CPEMIs.size());
+               MachineInstr *CPEMI = CPEMIs[CPI];
+               const Align CPEAlign = getCPEAlign(CPEMI);
+               const unsigned LogCPEAlign = Log2(CPEAlign);
+diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td
+index c37734b716cc..840af9052376 100644
+--- a/llvm/lib/Target/ARM/ARMInstrInfo.td
++++ b/llvm/lib/Target/ARM/ARMInstrInfo.td
+@@ -6365,6 +6365,15 @@ def SPACE : PseudoInst<(outs GPR:$Rd), (ins i32imm:$size, GPR:$Rn),
+                        NoItinerary,
+                        [(set GPR:$Rd, (int_arm_space timm:$size, GPR:$Rn))]>;
+ 
++// SpeculationBarrierEndBB must only be used after an unconditional control
++// flow, i.e. after a terminator for which isBarrier is True.
++let hasSideEffects = 1, isCodeGenOnly = 1, isTerminator = 1, isBarrier = 1 in {
++  def SpeculationBarrierISBDSBEndBB
++      : PseudoInst<(outs), (ins), NoItinerary, []>, Sched<[]>;
++  def SpeculationBarrierSBEndBB
++      : PseudoInst<(outs), (ins), NoItinerary, []>, Sched<[]>;
++}
++
+ //===----------------------------------
+ // Atomic cmpxchg for -O0
+ //===----------------------------------
+diff --git a/llvm/lib/Target/ARM/ARMSLSHardening.cpp b/llvm/lib/Target/ARM/ARMSLSHardening.cpp
+new file mode 100644
+index 000000000000..b3c697893ed9
+--- /dev/null
++++ b/llvm/lib/Target/ARM/ARMSLSHardening.cpp
+@@ -0,0 +1,117 @@
++//===- ARMSLSHardening.cpp - Harden Straight Line Missspeculation ---------===//
++//
++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
++// See https://llvm.org/LICENSE.txt for license information.
++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
++//
++//===----------------------------------------------------------------------===//
++//
++// This file contains a pass to insert code to mitigate against side channel
++// vulnerabilities that may happen under straight line miss-speculation.
++//
++//===----------------------------------------------------------------------===//
++
++#include "ARM.h"
++#include "ARMInstrInfo.h"
++#include "ARMSubtarget.h"
++#include "llvm/CodeGen/MachineBasicBlock.h"
++#include "llvm/CodeGen/MachineFunction.h"
++#include "llvm/CodeGen/MachineFunctionPass.h"
++#include "llvm/CodeGen/MachineInstr.h"
++#include "llvm/CodeGen/MachineInstrBuilder.h"
++#include "llvm/CodeGen/MachineOperand.h"
++#include "llvm/IR/DebugLoc.h"
++#include <cassert>
++
++using namespace llvm;
++
++#define DEBUG_TYPE "arm-sls-hardening"
++
++#define ARM_SLS_HARDENING_NAME "ARM sls hardening pass"
++
++namespace {
++
++class ARMSLSHardening : public MachineFunctionPass {
++public:
++  const TargetInstrInfo *TII;
++  const ARMSubtarget *ST;
++
++  static char ID;
++
++  ARMSLSHardening() : MachineFunctionPass(ID) {
++    initializeARMSLSHardeningPass(*PassRegistry::getPassRegistry());
++  }
++
++  bool runOnMachineFunction(MachineFunction &Fn) override;
++
++  StringRef getPassName() const override { return ARM_SLS_HARDENING_NAME; }
++
++  void getAnalysisUsage(AnalysisUsage &AU) const override {
++    AU.setPreservesCFG();
++    MachineFunctionPass::getAnalysisUsage(AU);
++  }
++
++private:
++  bool hardenReturnsAndBRs(MachineBasicBlock &MBB) const;
++};
++
++} // end anonymous namespace
++
++char ARMSLSHardening::ID = 0;
++
++INITIALIZE_PASS(ARMSLSHardening, "arm-sls-hardening",
++                ARM_SLS_HARDENING_NAME, false, false)
++
++static void insertSpeculationBarrier(const ARMSubtarget *ST,
++                                     MachineBasicBlock &MBB,
++                                     MachineBasicBlock::iterator MBBI,
++                                     DebugLoc DL,
++                                     bool AlwaysUseISBDSB = false) {
++  assert(MBBI != MBB.begin() &&
++         "Must not insert SpeculationBarrierEndBB as only instruction in MBB.");
++  assert(std::prev(MBBI)->isBarrier() &&
++         "SpeculationBarrierEndBB must only follow unconditional control flow "
++         "instructions.");
++  assert(std::prev(MBBI)->isTerminator() &&
++         "SpeculationBarrierEndBB must only follow terminators.");
++  const TargetInstrInfo *TII = ST->getInstrInfo();
++  unsigned BarrierOpc = ST->hasSB() && !AlwaysUseISBDSB
++                            ? ARM::SpeculationBarrierSBEndBB
++                            : ARM::SpeculationBarrierISBDSBEndBB;
++  if (MBBI == MBB.end() || !isSpeculationBarrierEndBBOpcode(MBBI->getOpcode()))
++    BuildMI(MBB, MBBI, DL, TII->get(BarrierOpc));
++}
++
++bool ARMSLSHardening::runOnMachineFunction(MachineFunction &MF) {
++  ST = &MF.getSubtarget<ARMSubtarget>();
++  TII = MF.getSubtarget().getInstrInfo();
++
++  bool Modified = false;
++  for (auto &MBB : MF)
++    Modified |= hardenReturnsAndBRs(MBB);
++
++  return Modified;
++}
++
++bool ARMSLSHardening::hardenReturnsAndBRs(MachineBasicBlock &MBB) const {
++  if (!ST->hardenSlsRetBr())
++    return false;
++  bool Modified = false;
++  MachineBasicBlock::iterator MBBI = MBB.getFirstTerminator(), E = MBB.end();
++  MachineBasicBlock::iterator NextMBBI;
++  for (; MBBI != E; MBBI = NextMBBI) {
++    MachineInstr &MI = *MBBI;
++    NextMBBI = std::next(MBBI);
++    if (isIndirectControlFlowNotComingBack(MI)) {
++      assert(MI.isTerminator());
++      assert(!TII->isPredicated(MI));
++      insertSpeculationBarrier(ST, MBB, std::next(MBBI), MI.getDebugLoc());
++      Modified = true;
++    }
++  }
++  return Modified;
++}
++
++FunctionPass *llvm::createARMSLSHardeningPass() {
++  return new ARMSLSHardening();
++}
+diff --git a/llvm/lib/Target/ARM/ARMSubtarget.h b/llvm/lib/Target/ARM/ARMSubtarget.h
+index 695a53eec93e..bfde47290dcd 100644
+--- a/llvm/lib/Target/ARM/ARMSubtarget.h
++++ b/llvm/lib/Target/ARM/ARMSubtarget.h
+@@ -464,6 +464,10 @@ protected:
+   /// cannot be encoded. For example, ADD r0, r1, #FFFFFFFF -> SUB r0, r1, #1.
+   bool NegativeImmediates = true;
+ 
++  /// Harden against Straight Line Speculation for Returns and Indirect
++  /// Branches.
++  bool HardenSlsRetBr = false;
++
+   /// stackAlignment - The minimum alignment known to hold of the stack frame on
+   /// entry to the function and which must be maintained by every function.
+   Align stackAlignment = Align(4);
+@@ -905,6 +909,8 @@ public:
+   bool ignoreCSRForAllocationOrder(const MachineFunction &MF,
+                                    unsigned PhysReg) const override;
+   unsigned getGPRAllocationOrder(const MachineFunction &MF) const;
++
++  bool hardenSlsRetBr() const { return HardenSlsRetBr; }
+ };
+ 
+ } // end namespace llvm
+diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
+index cf4115f77fec..2e20070833e6 100644
+--- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp
++++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
+@@ -100,6 +100,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeARMTarget() {
+   initializeMVETailPredicationPass(Registry);
+   initializeARMLowOverheadLoopsPass(Registry);
+   initializeMVEGatherScatterLoweringPass(Registry);
++  initializeARMSLSHardeningPass(Registry);
+ }
+ 
+ static std::unique_ptr<TargetLoweringObjectFile> createTLOF(const Triple &TT) {
+@@ -538,6 +539,8 @@ void ARMPassConfig::addPreSched2() {
+     addPass(&PostMachineSchedulerID);
+     addPass(&PostRASchedulerID);
+   }
++
++  addPass(createARMSLSHardeningPass());
+ }
+ 
+ void ARMPassConfig::addPreEmitPass() {
+diff --git a/llvm/lib/Target/ARM/CMakeLists.txt b/llvm/lib/Target/ARM/CMakeLists.txt
+index 6a2ffdaef126..3894c0cfed68 100644
+--- a/llvm/lib/Target/ARM/CMakeLists.txt
++++ b/llvm/lib/Target/ARM/CMakeLists.txt
+@@ -48,6 +48,7 @@ add_llvm_target(ARMCodeGen
+   ARMOptimizeBarriersPass.cpp
+   ARMRegisterBankInfo.cpp
+   ARMSelectionDAGInfo.cpp
++  ARMSLSHardening.cpp
+   ARMSubtarget.cpp
+   ARMTargetMachine.cpp
+   ARMTargetObjectFile.cpp
+diff --git a/llvm/test/CodeGen/ARM/O3-pipeline.ll b/llvm/test/CodeGen/ARM/O3-pipeline.ll
+index bba384715bc6..6390e42570d7 100644
+--- a/llvm/test/CodeGen/ARM/O3-pipeline.ll
++++ b/llvm/test/CodeGen/ARM/O3-pipeline.ll
+@@ -159,6 +159,7 @@
+ ; CHECK-NEXT:      Machine Natural Loop Construction
+ ; CHECK-NEXT:      PostRA Machine Instruction Scheduler
+ ; CHECK-NEXT:      Post RA top-down list latency scheduler
++; CHECK-NEXT:      ARM sls hardening pass
+ ; CHECK-NEXT:      Analyze Machine Code For Garbage Collection
+ ; CHECK-NEXT:      Machine Block Frequency Analysis
+ ; CHECK-NEXT:      MachinePostDominator Tree Construction
+diff --git a/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll b/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
+new file mode 100644
+index 000000000000..9a2335988790
+--- /dev/null
++++ b/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
+@@ -0,0 +1,142 @@
++; RUN: llc -mattr=harden-sls-retbr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB,ISBDSBDAGISEL -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB,SBDAGISEL -dump-input-context=100
++; RUN: llc -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,NOHARDEN,NOHARDENARM -dump-input-context=100
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB
++
++; Function Attrs: norecurse nounwind readnone
++define dso_local i32 @double_return(i32 %a, i32 %b) local_unnamed_addr {
++entry:
++  %cmp = icmp sgt i32 %a, 0
++  br i1 %cmp, label %if.then, label %if.else
++
++if.then:                                          ; preds = %entry
++  ; Make a very easy, very likely to predicate return (BX LR), to test that
++  ; it will not get predicated when sls-hardening is enabled.
++  %mul = mul i32 %b, %a
++  ret i32 %mul
++; CHECK-LABEL: double_return:
++; HARDEN:          {{bx lr$}}
++; NOHARDENARM:     {{bxge lr$}}
++; ISBDSB-NEXT: dsb sy
++; ISBDSB-NEXT: isb
++; SB-NEXT:     {{ sb$}}
++
++if.else:                                          ; preds = %entry
++  %div3 = sdiv i32 %a, %b
++  %div2 = sdiv i32 %a, %div3
++  %div1 = sdiv i32 %a, %div2
++  ret i32 %div1
++
++; CHECK:       {{bx lr$}}
++; ISBDSB-NEXT: dsb sy
++; ISBDSB-NEXT: isb
++; SB-NEXT:     {{ sb$}}
++; CHECK-NEXT: .Lfunc_end
++}
++
++@__const.indirect_branch.ptr = private unnamed_addr constant [2 x i8*] [i8* blockaddress(@indirect_branch, %return), i8* blockaddress(@indirect_branch, %l2)], align 8
++
++; Function Attrs: norecurse nounwind readnone
++define dso_local i32 @indirect_branch(i32 %a, i32 %b, i32 %i) {
++; CHECK-LABEL: indirect_branch:
++entry:
++  %idxprom = sext i32 %i to i64
++  %arrayidx = getelementptr inbounds [2 x i8*], [2 x i8*]* @__const.indirect_branch.ptr, i64 0, i64 %idxprom
++  %0 = load i8*, i8** %arrayidx, align 8
++  indirectbr i8* %0, [label %return, label %l2]
++; ARM:       bx r0
++; ISBDSB-NEXT: dsb sy
++; ISBDSB-NEXT: isb
++; SB-NEXT:     {{ sb$}}
++
++l2:                                               ; preds = %entry
++  br label %return
++; CHECK:       {{bx lr$}}
++; ISBDSB-NEXT: dsb sy
++; ISBDSB-NEXT: isb
++; SB-NEXT:     {{ sb$}}
++
++return:                                           ; preds = %entry, %l2
++  %retval.0 = phi i32 [ 1, %l2 ], [ 0, %entry ]
++  ret i32 %retval.0
++; CHECK:       {{bx lr$}}
++; ISBDSB-NEXT: dsb sy
++; ISBDSB-NEXT: isb
++; SB-NEXT:     {{ sb$}}
++; CHECK-NEXT: .Lfunc_end
++}
++
++define i32 @asmgoto() {
++entry:
++; CHECK-LABEL: asmgoto:
++  callbr void asm sideeffect "B $0", "X"(i8* blockaddress(@asmgoto, %d))
++            to label %asm.fallthrough [label %d]
++     ; The asm goto above produces a direct branch:
++; CHECK:           @APP
++; CHECK-NEXT:      {{^[ \t]+b }}
++; CHECK-NEXT:      @NO_APP
++     ; For direct branches, no mitigation is needed.
++; ISDDSB-NOT: dsb sy
++; SB-NOT:     {{ sb$}}
++
++asm.fallthrough:               ; preds = %entry
++  ret i32 0
++; CHECK:       {{bx lr$}}
++; ISBDSB-NEXT: dsb sy
++; ISBDSB-NEXT: isb
++; SB-NEXT:     {{ sb$}}
++
++d:                             ; preds = %asm.fallthrough, %entry
++  ret i32 1
++; CHECK:       {{bx lr$}}
++; ISBDSB-NEXT: dsb sy
++; ISBDSB-NEXT: isb
++; SB-NEXT:     {{ sb$}}
++; CHECK-NEXT: .Lfunc_end
++}
++
++; Check that indirect branches produced through switch jump tables are also
++; hardened:
++define dso_local i32 @jumptable(i32 %a, i32 %b) {
++; CHECK-LABEL: jumptable:
++entry:
++  switch i32 %b, label %sw.epilog [
++    i32 0, label %sw.bb
++    i32 1, label %sw.bb1
++    i32 3, label %sw.bb3
++    i32 4, label %sw.bb5
++  ]
++; ARM:             ldr pc, [{{r[0-9]}}, {{r[0-9]}}, lsl #2]
++; ISBDSB-NEXT:     dsb sy
++; ISBDSB-NEXT:     isb
++; SB-NEXT:         {{ sb$}}
++
++
++sw.bb:                                            ; preds = %entry
++  %add = shl nsw i32 %a, 1
++  br label %sw.bb1
++
++sw.bb1:                                           ; preds = %entry, %sw.bb
++  %a.addr.0 = phi i32 [ %a, %entry ], [ %add, %sw.bb ]
++  %add2 = shl nsw i32 %a.addr.0, 1
++  br label %sw.bb3
++
++sw.bb3:                                           ; preds = %entry, %sw.bb1
++  %a.addr.1 = phi i32 [ %a, %entry ], [ %add2, %sw.bb1 ]
++  %add4 = shl nsw i32 %a.addr.1, 1
++  br label %sw.bb5
++
++sw.bb5:                                           ; preds = %entry, %sw.bb3
++  %a.addr.2 = phi i32 [ %a, %entry ], [ %add4, %sw.bb3 ]
++  %add6 = shl nsw i32 %a.addr.2, 1
++  br label %sw.epilog
++
++sw.epilog:                                        ; preds = %sw.bb5, %entry
++  %a.addr.3 = phi i32 [ %a, %entry ], [ %add6, %sw.bb5 ]
++  ret i32 %a.addr.3
++; CHECK:       {{bx lr$}}
++; ISBDSB-NEXT: dsb sy
++; ISBDSB-NEXT: isb
++; SB-NEXT:     {{ sb$}}
++}
diff --git a/sys-devel/llvm/files/cherry/1d51c699b9e2ebc5bcfdbe85c74cc871426333d4.patch b/sys-devel/llvm/files/cherry/1d51c699b9e2ebc5bcfdbe85c74cc871426333d4.patch
new file mode 100644
index 0000000..0bbffd7
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/1d51c699b9e2ebc5bcfdbe85c74cc871426333d4.patch
@@ -0,0 +1,322 @@
+commit 1d51c699b9e2ebc5bcfdbe85c74cc871426333d4
+Author: David Spickett <david.spickett@linaro.org>
+Date:   Mon Feb 1 11:29:14 2021 +0000
+
+    [clang][Arm] Fix handling of -Wa,-march=
+    
+    This fixes Bugzilla #48894 for Arm, where it
+    was reported that -Wa,-march was not being handled
+    by the integrated assembler.
+    
+    This was previously fixed for -Wa,-mthumb by
+    parsing the argument in ToolChain::ComputeLLVMTriple
+    instead of CollectArgsForIntegratedAssembler.
+    It has to be done in the former because the Triple
+    is read only by the time we get to the latter.
+    
+    Previously only mcpu would work via -Wa but only because
+    "-target-cpu" is it's own option to cc1, which we were
+    able to modify. Target architecture is part of "-target-triple".
+    
+    This change applies the same workaround to -march and cleans up
+    handling of -Wa,-mcpu at the same time. There were some
+    places where we were not using the last instance of an argument.
+    
+    The existing -Wa,-mthumb code was doing this correctly,
+    so I've just added tests to confirm that.
+    
+    Now the same rules will apply to -Wa,-march/-mcpu as would
+    if you just passed them to the compiler:
+    * -Wa/-Xassembler options only apply to assembly files.
+    * Architecture derived from mcpu beats any march options.
+    * When there are multiple mcpu or multiple march, the last
+      one wins.
+    * If there is a compiler option and an assembler option of
+      the same type, we prefer the one that fits the input type.
+    * If there is an applicable mcpu option but it is overruled
+      by an march, the cpu value is still used for the "-target-cpu"
+      cc1 option.
+    
+    Reviewed By: nickdesaulniers
+    
+    Differential Revision: https://reviews.llvm.org/D95872
+
+diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
+index b2ddef141a75..c83638086048 100644
+--- a/clang/lib/Driver/ToolChain.cpp
++++ b/clang/lib/Driver/ToolChain.cpp
+@@ -786,15 +786,26 @@ std::string ToolChain::ComputeLLVMTriple(const ArgList &Args,
+     else {
+       // Ideally we would check for these flags in
+       // CollectArgsForIntegratedAssembler but we can't change the ArchName at
+-      // that point. There is no assembler equivalent of -mno-thumb, -marm, or
+-      // -mno-arm.
++      // that point.
++      llvm::StringRef WaMArch, WaMCPU;
+       for (const auto *A :
+            Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) {
+         for (StringRef Value : A->getValues()) {
++          // There is no assembler equivalent of -mno-thumb, -marm, or -mno-arm.
+           if (Value == "-mthumb")
+             IsThumb = true;
++          else if (Value.startswith("-march="))
++            WaMArch = Value.substr(7);
++          else if (Value.startswith("-mcpu="))
++            WaMCPU = Value.substr(6);
+         }
+       }
++
++      if (WaMCPU.size() || WaMArch.size()) {
++        // The way this works means that we prefer -Wa,-mcpu's architecture
++        // over -Wa,-march. Which matches the compiler behaviour.
++        Suffix = tools::arm::getLLVMArchSuffixForARM(WaMCPU, WaMArch, Triple);
++      }
+     }
+     // Assembly files should start in ARM mode, unless arch is M-profile, or
+     // -mthumb has been passed explicitly to the assembler. Windows is always
+diff --git a/clang/lib/Driver/ToolChains/Arch/ARM.cpp b/clang/lib/Driver/ToolChains/Arch/ARM.cpp
+index ef590db1eecd..d0606eb882f1 100644
+--- a/clang/lib/Driver/ToolChains/Arch/ARM.cpp
++++ b/clang/lib/Driver/ToolChains/Arch/ARM.cpp
+@@ -50,11 +50,14 @@ void arm::getARMArchCPUFromArgs(const ArgList &Args, llvm::StringRef &Arch,
+ 
+   for (const Arg *A :
+        Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) {
+-    StringRef Value = A->getValue();
+-    if (Value.startswith("-mcpu="))
+-      CPU = Value.substr(6);
+-    if (Value.startswith("-march="))
+-      Arch = Value.substr(7);
++    // Use getValues because -Wa can have multiple arguments
++    // e.g. -Wa,-mcpu=foo,-mcpu=bar
++    for (StringRef Value : A->getValues()) {
++      if (Value.startswith("-mcpu="))
++        CPU = Value.substr(6);
++      if (Value.startswith("-march="))
++        Arch = Value.substr(7);
++    }
+   }
+ }
+ 
+@@ -290,8 +293,8 @@ void arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple,
+       Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext);
+   arm::FloatABI ABI = arm::getARMFloatABI(D, Triple, Args);
+   arm::ReadTPMode ThreadPointer = arm::getReadTPMode(D, Args);
+-  const Arg *WaCPU = nullptr, *WaFPU = nullptr;
+-  const Arg *WaHDiv = nullptr, *WaArch = nullptr;
++  llvm::Optional<std::pair<const Arg *, StringRef>> WaCPU, WaFPU, WaHDiv,
++      WaArch;
+ 
+   // This vector will accumulate features from the architecture
+   // extension suffixes on -mcpu and -march (e.g. the 'bar' in
+@@ -325,15 +328,18 @@ void arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple,
+     // to the assembler correctly.
+     for (const Arg *A :
+          Args.filtered(options::OPT_Wa_COMMA, options::OPT_Xassembler)) {
+-      StringRef Value = A->getValue();
+-      if (Value.startswith("-mfpu=")) {
+-        WaFPU = A;
+-      } else if (Value.startswith("-mcpu=")) {
+-        WaCPU = A;
+-      } else if (Value.startswith("-mhwdiv=")) {
+-        WaHDiv = A;
+-      } else if (Value.startswith("-march=")) {
+-        WaArch = A;
++      // We use getValues here because you can have many options per -Wa
++      // We will keep the last one we find for each of these
++      for (StringRef Value : A->getValues()) {
++        if (Value.startswith("-mfpu=")) {
++          WaFPU = std::make_pair(A, Value.substr(6));
++        } else if (Value.startswith("-mcpu=")) {
++          WaCPU = std::make_pair(A, Value.substr(6));
++        } else if (Value.startswith("-mhwdiv=")) {
++          WaHDiv = std::make_pair(A, Value.substr(8));
++        } else if (Value.startswith("-march=")) {
++          WaArch = std::make_pair(A, Value.substr(7));
++        }
+       }
+     }
+   }
+@@ -353,8 +359,8 @@ void arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple,
+     if (CPUArg)
+       D.Diag(clang::diag::warn_drv_unused_argument)
+           << CPUArg->getAsString(Args);
+-    CPUName = StringRef(WaCPU->getValue()).substr(6);
+-    CPUArg = WaCPU;
++    CPUName = WaCPU->second;
++    CPUArg = WaCPU->first;
+   } else if (CPUArg)
+     CPUName = CPUArg->getValue();
+ 
+@@ -363,11 +369,12 @@ void arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple,
+     if (ArchArg)
+       D.Diag(clang::diag::warn_drv_unused_argument)
+           << ArchArg->getAsString(Args);
+-    ArchName = StringRef(WaArch->getValue()).substr(7);
+-    checkARMArchName(D, WaArch, Args, ArchName, CPUName, ExtensionFeatures,
+-                     Triple, ArchArgFPUID);
+-    // FIXME: Set Arch.
+-    D.Diag(clang::diag::warn_drv_unused_argument) << WaArch->getAsString(Args);
++    ArchName = WaArch->second;
++    // This will set any features after the base architecture.
++    checkARMArchName(D, WaArch->first, Args, ArchName, CPUName,
++                     ExtensionFeatures, Triple, ArchArgFPUID);
++    // The base architecture was handled in ToolChain::ComputeLLVMTriple because
++    // triple is read only by this point.
+   } else if (ArchArg) {
+     ArchName = ArchArg->getValue();
+     checkARMArchName(D, ArchArg, Args, ArchName, CPUName, ExtensionFeatures,
+@@ -399,8 +406,7 @@ void arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple,
+     if (FPUArg)
+       D.Diag(clang::diag::warn_drv_unused_argument)
+           << FPUArg->getAsString(Args);
+-    (void)getARMFPUFeatures(D, WaFPU, Args, StringRef(WaFPU->getValue()).substr(6),
+-                            Features);
++    (void)getARMFPUFeatures(D, WaFPU->first, Args, WaFPU->second, Features);
+   } else if (FPUArg) {
+     FPUID = getARMFPUFeatures(D, FPUArg, Args, FPUArg->getValue(), Features);
+   } else if (Triple.isAndroid() && getARMSubArchVersionNumber(Triple) >= 7) {
+@@ -423,8 +429,7 @@ void arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple,
+     if (HDivArg)
+       D.Diag(clang::diag::warn_drv_unused_argument)
+           << HDivArg->getAsString(Args);
+-    getARMHWDivFeatures(D, WaHDiv, Args,
+-                        StringRef(WaHDiv->getValue()).substr(8), Features);
++    getARMHWDivFeatures(D, WaHDiv->first, Args, WaHDiv->second, Features);
+   } else if (HDivArg)
+     getARMHWDivFeatures(D, HDivArg, Args, HDivArg->getValue(), Features);
+ 
+diff --git a/clang/test/Driver/arm-target-as-march-mcpu.s b/clang/test/Driver/arm-target-as-march-mcpu.s
+new file mode 100644
+index 000000000000..31c027bd0fa6
+--- /dev/null
++++ b/clang/test/Driver/arm-target-as-march-mcpu.s
+@@ -0,0 +1,104 @@
++/// These tests make sure that options passed to the assembler
++/// via -Wa or -Xassembler are applied correctly to assembler inputs.
++/// Also we check that the same priority rules apply to compiler and
++/// assembler options.
++///
++/// Note that the cortex-a8 is armv7-a, the cortex-a32 is armv8-a
++/// and clang's default Arm architecture is armv4t.
++
++/// Sanity check how the options behave when passed to the compiler
++// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a %s 2>&1 | \
++// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a+crc %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s
++
++/// -Wa/-Xassembler doesn't apply to non assembly files
++// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a \
++// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV4 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a \
++// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV4 %s
++
++/// -Wa/-Xassembler does apply to assembler input
++// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a %s 2>&1 | \
++// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7-a+crc %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a %s 2>&1 | \
++// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7-a+crc %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,EXT-CRC %s
++
++/// Check that arch name is still canonicalised
++// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv7a %s 2>&1 | \
++// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv7 %s 2>&1 | \
++// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
++
++/// march to compiler and assembler, we choose the one suited to the input file type
++// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8-a -Wa,-march=armv7a %s 2>&1 | \
++// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv7-a -Wa,-march=armv8-a \
++// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV7 %s
++
++/// mcpu to compiler and march to assembler, we use the assembler's architecture for assembly files.
++/// We use the target CPU for both.
++// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8a %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV8,CPU-A8 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -Wa,-march=armv8-a \
++// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++
++/// march to compiler and mcpu to assembler, we use the one that matches the file type
++/// (again both get the target-cpu option either way)
++// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8a -Wa,-mcpu=cortex-a8 %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8a -Wa,-mcpu=cortex-a8 \
++// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV8 %s
++
++/// march and mcpu to the compiler, mcpu wins
++// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a8 -march=armv8-a %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++/// not dependent on order
++// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8-a -mcpu=cortex-a8 %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++/// or file type
++// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8a -mcpu=cortex-a8 \
++// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++
++/// If we pass mcpu and march to the assembler then mcpu's arch wins
++/// (matches the compiler behaviour)
++// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8 -Wa,-march=armv8-a %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-march=armv8-a %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv8-a -Xassembler -mcpu=cortex-a8 \
++// RUN: %s 2>&1 | FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++
++/// Last mcpu to assembler wins
++// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-mcpu=cortex-a32,-mcpu=cortex-a8 %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-mcpu=cortex-a32 -Wa,-mcpu=cortex-a8 %s 2>&1 | \
++// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 --check-prefix=CPU-A8 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -mcpu=cortex-a32 -Xassembler -mcpu=cortex-a8 \
++// RUN: %s 2>&1 | FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++
++/// Last mcpu to compiler wins
++// RUN: %clang -target arm-linux-gnueabi -### -c -mcpu=cortex-a32 -mcpu=cortex-a8 %s 2>&1 | \
++// RUN: FileCheck --check-prefixes=TRIPLE-ARMV7,CPU-A8 %s
++
++/// Last march to assembler wins
++// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv8-a,-march=armv7-a %s 2>&1 | \
++// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Wa,-march=armv8-a -Wa,-march=armv7-a %s 2>&1 | \
++// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
++// RUN: %clang -target arm-linux-gnueabi -### -c -Xassembler -march=armv8-a -Xassembler -march=armv7-a \
++// RUN: %s 2>&1 | FileCheck --check-prefix=TRIPLE-ARMV7 %s
++
++/// Last march to compiler wins
++// RUN: %clang -target arm-linux-gnueabi -### -c -march=armv8-a -march=armv7-a %s 2>&1 | \
++// RUN: FileCheck --check-prefix=TRIPLE-ARMV7 %s
++
++// TRIPLE-ARMV4: "-triple" "armv4t-unknown-linux-gnueabi"
++// TRIPLE-ARMV7: "-triple" "armv7-unknown-linux-gnueabi"
++// TRIPLE-ARMV8: "-triple" "armv8-unknown-linux-gnueabi"
++// CPU-A8: "-target-cpu" "cortex-a8"
++// EXT-CRC: "-target-feature" "+crc"
+diff --git a/clang/test/Driver/arm-target-as-mthumb.s b/clang/test/Driver/arm-target-as-mthumb.s
+index 7e014bb9d43f..4bfef8dbf235 100644
+--- a/clang/test/Driver/arm-target-as-mthumb.s
++++ b/clang/test/Driver/arm-target-as-mthumb.s
+@@ -5,12 +5,18 @@
+ // RUN: %clang -target armv7a-linux-gnueabi -### -c -mthumb %s 2>&1 | \
+ // RUN: FileCheck -check-prefix=TRIPLE-ARM %s
+ // RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mthumb \
+-// RUN: %S/Inputs/wildcard1.c  2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s
++// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s
++// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-mthumb \
++// RUN: %S/Inputs/wildcard1.c 2>&1 | FileCheck -check-prefix=TRIPLE-ARM %s
+ 
+ // TRIPLE-ARM: "-triple" "armv7-unknown-linux-gnueabi"
+ 
+ // RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mthumb %s 2>&1 | \
+ // RUN: FileCheck -check-prefix=TRIPLE-THUMB %s
++// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8,-mthumb %s 2>&1 | \
++// RUN: FileCheck -check-prefix=TRIPLE-THUMB %s
++// RUN: %clang -target armv7a-linux-gnueabi -### -c -Wa,-mcpu=cortex-a8 -Wa,-mthumb %s 2>&1 | \
++// RUN: FileCheck -check-prefix=TRIPLE-THUMB %s
+ // RUN: %clang -target armv7a-linux-gnueabi -### -c -Xassembler -mthumb %s \
+ // RUN: 2>&1 | FileCheck -check-prefix=TRIPLE-THUMB %s
+ 
diff --git a/sys-devel/llvm/files/cherry/22a52dfddcefad4f275eb8ad1cc0e200074c2d8a.patch b/sys-devel/llvm/files/cherry/22a52dfddcefad4f275eb8ad1cc0e200074c2d8a.patch
new file mode 100644
index 0000000..6eff4ff
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/22a52dfddcefad4f275eb8ad1cc0e200074c2d8a.patch
@@ -0,0 +1,625 @@
+commit 22a52dfddcefad4f275eb8ad1cc0e200074c2d8a
+Author: Duncan P. N. Exon Smith <dexonsmith@apple.com>
+Date:   Thu Feb 11 08:23:39 2021 -0800
+
+    TransformUtils: Fix metadata handling in CloneModule (and improve CloneFunctionInto)
+    
+    This commit fixes how metadata is handled in CloneModule to be sound,
+    and improves how it's handled in CloneFunctionInto (although the latter
+    is still awkward when called within a module).
+    
+    Ruiling Song pointed out in PR48841 that CloneModule was changed to
+    unsoundly use the RF_ReuseAndMutateDistinctMDs flag (renamed in
+    fa35c1f80f0ea080a7cbc581416929b0a654f25c for clarity). This flag papered
+    over a crash caused by other various changes made to CloneFunctionInto
+    over the past few years that made it unsound to use cloning between
+    different modules.
+    
+    (This commit partially addresses PR48841, fixing the repro from
+    preprocessed source but not textual IR. MDNodeMapper::mapDistinctNode
+    became unsound in df763188c9a1ecb1e7e5c4d4ea53a99fbb755903 and this
+    commit does not address that regression.)
+    
+    RF_ReuseAndMutateDistinctMDs is designed for the IRMover to use,
+    avoiding unnecessary clones of all referenced metadata when linking
+    between modules (with IRMover, the source module is discarded after
+    linking). It never makes sense to use when you're not discarding the
+    source. This commit drops its incorrect use in CloneModule.
+    
+    Sadly, the right thing to do with metadata when cloning a function is
+    complicated, and this patch doesn't totally fix it.
+    
+    The first problem is that there are two different types of referenceable
+    metadata and it's not obvious what to with one of them when remapping.
+    
+    - `!0 = !{!1}` is metadata's version of a constant. Programatically it's
+      called "uniqued" (probably a better term would be "constant") because,
+      like `ConstantArray`, it's stored in uniquing tables. Once it's
+      constructed, it's illegal to change its arguments.
+    - `!0 = distinct !{!1}` is a bit closer to a global variable. It's legal
+      to change the operands after construction.
+    
+    What should be done with distinct metadata when cloning functions within
+    the same module?
+    
+    - Should new, cloned nodes be created?
+    - Should all references point to the same, old nodes?
+    
+    The answer depends on whether that metadata is effectively owned by a
+    function.
+    
+    And that's the second problem. Referenceable metadata's ownership model
+    is not clear or explicit. Technically, it's all stored on an
+    LLVMContext. However, any metadata that is `distinct`, that transitively
+    references a `distinct` node, or that transitively references a
+    GlobalValue is specific to a Module and is effectively owned by it. More
+    specifically, some metadata is effectively owned by a specific Function
+    within a module.
+    
+    Effectively function-local metadata was introduced somewhere around
+    c10d0e5ccd12f049bddb24dcf8bbb7fbbc6c68f2, which made it illegal for two
+    functions to share a DISubprogram attachment.
+    
+    When cloning a function within a module, you need to clone the
+    function-local debug info and suppress cloning of global debug info (the
+    status quo suppresses cloning some global debug info but not all). When
+    cloning a function to a new/different module, you need to clone all of
+    the debug info.
+    
+    Here's what I think we should do (eventually? soon? not this patch
+    though):
+    - Distinguish explicitly (somehow) between pure constant metadata owned
+      by the LLVMContext, global metadata owned by the Module, and local
+      metadata owned by a GlobalValue (such as a function).
+    - Update CloneFunctionInto to trigger cloning of all "local" metadata
+      (only), perhaps by adding a bit to RemapFlag. Alternatively, split
+      out a separate function CloneFunctionMetadataInto to prime the
+      metadata map that callers are updated to call ahead of time as
+      appropriate.
+    
+    Here's the somewhat more isolated fix in this patch:
+    - Converted the `ModuleLevelChanges` parameter to `CloneFunctionInto` to
+      an enum called `CloneFunctionChangeType` that is one of
+      LocalChangesOnly, GlobalChanges, DifferentModule, and ClonedModule.
+    - The code maintaining the "functions uniquely own subprograms"
+      invariant is now only active in the first two cases, where a function
+      is being cloned within a single module. That's necessary because this
+      code inhibits cloning of (some) "global" metadata that's effectively
+      owned by the module.
+    - The code maintaining the "all compile units must be explicitly
+      referenced by !llvm.dbg.cu" invariant is now only active in the
+      DifferentModule case, where a function is being cloned into a new
+      module in isolation.
+    - CoroSplit.cpp's call to CloneFunctionInto in CoroCloner::create
+      uses LocalChangeOnly, since fa635d730f74f3285b77cc1537f1692184b8bf5b
+      only set `ModuleLevelChanges` to trigger cloning of local metadata.
+    - CloneModule drops its unsound use of RF_ReuseAndMutateDistinctMDs
+      and special handling of !llvm.dbg.cu.
+    - Fixed some outdated header docs and left a couple of FIXMEs.
+    
+    Differential Revision: https://reviews.llvm.org/D96531
+
+diff --git a/llvm/include/llvm/Transforms/Utils/Cloning.h b/llvm/include/llvm/Transforms/Utils/Cloning.h
+index 56aaa5d48e2a..401b235e3490 100644
+--- a/llvm/include/llvm/Transforms/Utils/Cloning.h
++++ b/llvm/include/llvm/Transforms/Utils/Cloning.h
+@@ -119,24 +119,45 @@ BasicBlock *CloneBasicBlock(const BasicBlock *BB, ValueToValueMapTy &VMap,
+ /// values.  The final argument captures information about the cloned code if
+ /// non-null.
+ ///
+-/// VMap contains no non-identity GlobalValue mappings and debug info metadata
+-/// will not be cloned.
++/// \pre VMap contains no non-identity GlobalValue mappings.
+ ///
+ Function *CloneFunction(Function *F, ValueToValueMapTy &VMap,
+                         ClonedCodeInfo *CodeInfo = nullptr);
+ 
++enum class CloneFunctionChangeType {
++  LocalChangesOnly,
++  GlobalChanges,
++  DifferentModule,
++  ClonedModule,
++};
++
+ /// Clone OldFunc into NewFunc, transforming the old arguments into references
+ /// to VMap values.  Note that if NewFunc already has basic blocks, the ones
+ /// cloned into it will be added to the end of the function.  This function
+ /// fills in a list of return instructions, and can optionally remap types
+ /// and/or append the specified suffix to all values cloned.
+ ///
+-/// If ModuleLevelChanges is false, VMap contains no non-identity GlobalValue
+-/// mappings.
++/// If \p Changes is \a CloneFunctionChangeType::LocalChangesOnly, VMap is
++/// required to contain no non-identity GlobalValue mappings. Otherwise,
++/// referenced metadata will be cloned.
++///
++/// If \p Changes is less than \a CloneFunctionChangeType::DifferentModule
++/// indicating cloning into the same module (even if it's LocalChangesOnly), if
++/// debug info metadata transitively references a \a DISubprogram, it will be
++/// cloned, effectively upgrading \p Changes to GlobalChanges while suppressing
++/// cloning of types and compile units.
++///
++/// If \p Changes is \a CloneFunctionChangeType::DifferentModule, the new
++/// module's \c !llvm.dbg.cu will get updated with any newly created compile
++/// units. (\a CloneFunctionChangeType::ClonedModule leaves that work for the
++/// caller.)
+ ///
++/// FIXME: Consider simplifying this function by splitting out \a
++/// CloneFunctionMetadataInto() and expecting / updating callers to call it
++/// first when / how it's needed.
+ void CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+-                       ValueToValueMapTy &VMap, bool ModuleLevelChanges,
+-                       SmallVectorImpl<ReturnInst*> &Returns,
++                       ValueToValueMapTy &VMap, CloneFunctionChangeType Changes,
++                       SmallVectorImpl<ReturnInst *> &Returns,
+                        const char *NameSuffix = "",
+                        ClonedCodeInfo *CodeInfo = nullptr,
+                        ValueMapTypeRemapper *TypeMapper = nullptr,
+diff --git a/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp b/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp
+index 1cfcf8ae943d..e8dd1bb90c9a 100644
+--- a/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp
++++ b/llvm/lib/ExecutionEngine/Orc/IndirectionUtils.cpp
+@@ -316,8 +316,9 @@ void moveFunctionBody(Function &OrigF, ValueToValueMapTy &VMap,
+          "modules.");
+ 
+   SmallVector<ReturnInst *, 8> Returns; // Ignore returns cloned.
+-  CloneFunctionInto(NewF, &OrigF, VMap, /*ModuleLevelChanges=*/true, Returns,
+-                    "", nullptr, nullptr, Materializer);
++  CloneFunctionInto(NewF, &OrigF, VMap,
++                    CloneFunctionChangeType::DifferentModule, Returns, "",
++                    nullptr, nullptr, Materializer);
+   OrigF.deleteBody();
+ }
+ 
+diff --git a/llvm/lib/Target/AMDGPU/R600OpenCLImageTypeLoweringPass.cpp b/llvm/lib/Target/AMDGPU/R600OpenCLImageTypeLoweringPass.cpp
+index 5fd912e0fb39..8f1a069c232d 100644
+--- a/llvm/lib/Target/AMDGPU/R600OpenCLImageTypeLoweringPass.cpp
++++ b/llvm/lib/Target/AMDGPU/R600OpenCLImageTypeLoweringPass.cpp
+@@ -301,7 +301,8 @@ class R600OpenCLImageTypeLoweringPass : public ModulePass {
+       }
+     }
+     SmallVector<ReturnInst*, 8> Returns;
+-    CloneFunctionInto(NewF, F, VMap, /*ModuleLevelChanges=*/false, Returns);
++    CloneFunctionInto(NewF, F, VMap, CloneFunctionChangeType::LocalChangesOnly,
++                      Returns);
+ 
+     // Build new MDNode.
+     SmallVector<Metadata *, 6> KernelMDArgs;
+diff --git a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
+index 5cafe8c5021c..04f426db8421 100644
+--- a/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
++++ b/llvm/lib/Transforms/Coroutines/CoroSplit.cpp
+@@ -840,7 +840,8 @@ void CoroCloner::create() {
+   auto savedLinkage = NewF->getLinkage();
+   NewF->setLinkage(llvm::GlobalValue::ExternalLinkage);
+ 
+-  CloneFunctionInto(NewF, &OrigF, VMap, /*ModuleLevelChanges=*/true, Returns);
++  CloneFunctionInto(NewF, &OrigF, VMap,
++                    CloneFunctionChangeType::LocalChangesOnly, Returns);
+ 
+   NewF->setLinkage(savedLinkage);
+   NewF->setVisibility(savedVisibility);
+diff --git a/llvm/lib/Transforms/IPO/Attributor.cpp b/llvm/lib/Transforms/IPO/Attributor.cpp
+index ba2423ab6b5e..ecbe59a7f360 100644
+--- a/llvm/lib/Transforms/IPO/Attributor.cpp
++++ b/llvm/lib/Transforms/IPO/Attributor.cpp
+@@ -1527,7 +1527,8 @@ static Function *internalizeFunction(Function &F) {
+   SmallVector<ReturnInst *, 8> Returns;
+ 
+   // Copy the body of the original function to the new one
+-  CloneFunctionInto(Copied, &F, VMap, /* ModuleLevelChanges */ false, Returns);
++  CloneFunctionInto(Copied, &F, VMap, CloneFunctionChangeType::LocalChangesOnly,
++                    Returns);
+ 
+   // Set the linakage and visibility late as CloneFunctionInto has some implicit
+   // requirements.
+diff --git a/llvm/lib/Transforms/Utils/CloneFunction.cpp b/llvm/lib/Transforms/Utils/CloneFunction.cpp
+index a953ba5c6b14..dd3d535850bc 100644
+--- a/llvm/lib/Transforms/Utils/CloneFunction.cpp
++++ b/llvm/lib/Transforms/Utils/CloneFunction.cpp
+@@ -83,8 +83,8 @@ BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB, ValueToValueMapTy &VMap,
+ //
+ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+                              ValueToValueMapTy &VMap,
+-                             bool ModuleLevelChanges,
+-                             SmallVectorImpl<ReturnInst*> &Returns,
++                             CloneFunctionChangeType Changes,
++                             SmallVectorImpl<ReturnInst *> &Returns,
+                              const char *NameSuffix, ClonedCodeInfo *CodeInfo,
+                              ValueMapTypeRemapper *TypeMapper,
+                              ValueMaterializer *Materializer) {
+@@ -95,6 +95,8 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+     assert(VMap.count(&I) && "No mapping from source argument specified!");
+ #endif
+ 
++  bool ModuleLevelChanges = Changes > CloneFunctionChangeType::LocalChangesOnly;
++
+   // Copy all attributes other than those stored in the AttributeList.  We need
+   // to remap the parameter indices of the AttributeList.
+   AttributeList NewAttrs = NewFunc->getAttributes();
+@@ -123,21 +125,37 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+       AttributeList::get(NewFunc->getContext(), OldAttrs.getFnAttributes(),
+                          OldAttrs.getRetAttributes(), NewArgAttrs));
+ 
+-  bool MustCloneSP =
+-      OldFunc->getParent() && OldFunc->getParent() == NewFunc->getParent();
+-  DISubprogram *SP = OldFunc->getSubprogram();
+-  if (SP) {
+-    assert(!MustCloneSP || ModuleLevelChanges);
+-    // Add mappings for some DebugInfo nodes that we don't want duplicated
+-    // even if they're distinct.
+-    auto &MD = VMap.MD();
+-    MD[SP->getUnit()].reset(SP->getUnit());
+-    MD[SP->getType()].reset(SP->getType());
+-    MD[SP->getFile()].reset(SP->getFile());
+-    // If we're not cloning into the same module, no need to clone the
+-    // subprogram
+-    if (!MustCloneSP)
+-      MD[SP].reset(SP);
++  // When we remap instructions within the same module, we want to avoid
++  // duplicating inlined DISubprograms, so record all subprograms we find as we
++  // duplicate instructions and then freeze them in the MD map. We also record
++  // information about dbg.value and dbg.declare to avoid duplicating the
++  // types.
++  Optional<DebugInfoFinder> DIFinder;
++
++  // Track the subprogram attachment that needs to be cloned to fine-tune the
++  // mapping within the same module.
++  DISubprogram *SPClonedWithinModule = nullptr;
++  if (Changes < CloneFunctionChangeType::DifferentModule) {
++    assert((NewFunc->getParent() == nullptr ||
++            NewFunc->getParent() == OldFunc->getParent()) &&
++           "Expected NewFunc to have the same parent, or no parent");
++
++    // Need to find subprograms, types, and compile units.
++    DIFinder.emplace();
++
++    SPClonedWithinModule = OldFunc->getSubprogram();
++  } else {
++    assert((NewFunc->getParent() == nullptr ||
++            NewFunc->getParent() != OldFunc->getParent()) &&
++           "Set SameModule to true if the new function is in the same module");
++
++    if (Changes == CloneFunctionChangeType::DifferentModule) {
++      assert(NewFunc->getParent() &&
++             "Need parent of new function to maintain debug info invariants");
++
++      // Need to find all the compile units.
++      DIFinder.emplace();
++    }
+   }
+ 
+   // Everything else beyond this point deals with function instructions,
+@@ -145,13 +163,6 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+   if (OldFunc->isDeclaration())
+     return;
+ 
+-  // When we remap instructions, we want to avoid duplicating inlined
+-  // DISubprograms, so record all subprograms we find as we duplicate
+-  // instructions and then freeze them in the MD map.
+-  // We also record information about dbg.value and dbg.declare to avoid
+-  // duplicating the types.
+-  DebugInfoFinder DIFinder;
+-
+   // Loop over all of the basic blocks in the function, cloning them as
+   // appropriate.  Note that we save BE this way in order to handle cloning of
+   // recursive functions into themselves.
+@@ -161,7 +172,7 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+ 
+     // Create a new basic block and copy instructions into it!
+     BasicBlock *CBB = CloneBasicBlock(&BB, VMap, NameSuffix, NewFunc, CodeInfo,
+-                                      ModuleLevelChanges ? &DIFinder : nullptr);
++                                      DIFinder ? &*DIFinder : nullptr);
+ 
+     // Add basic block mapping.
+     VMap[&BB] = CBB;
+@@ -183,15 +194,38 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+       Returns.push_back(RI);
+   }
+ 
+-  for (DISubprogram *ISP : DIFinder.subprograms())
+-    if (ISP != SP)
+-      VMap.MD()[ISP].reset(ISP);
++  if (Changes < CloneFunctionChangeType::DifferentModule &&
++      (SPClonedWithinModule || DIFinder->subprogram_count() > 0)) {
++    // Turn on module-level changes, since we need to clone (some of) the
++    // debug info metadata.
++    //
++    // FIXME: Metadata effectively owned by a function should be made
++    // local, and only that local metadata should be cloned.
++    ModuleLevelChanges = true;
++
++    auto mapToSelfIfNew = [&VMap](MDNode *N) {
++      // Avoid clobbering an existing mapping.
++      (void)VMap.MD().try_emplace(N, N);
++    };
++
++    // Avoid cloning what the subprogram references.
++    if (SPClonedWithinModule) {
++      mapToSelfIfNew(SPClonedWithinModule->getUnit());
++      mapToSelfIfNew(SPClonedWithinModule->getType());
++      mapToSelfIfNew(SPClonedWithinModule->getFile());
++    }
++
++    // Avoid cloning other subprograms, compile units, and types.
++    for (DISubprogram *ISP : DIFinder->subprograms())
++      if (ISP != SPClonedWithinModule)
++        mapToSelfIfNew(ISP);
+ 
+-  for (DICompileUnit *CU : DIFinder.compile_units())
+-    VMap.MD()[CU].reset(CU);
++    for (DICompileUnit *CU : DIFinder->compile_units())
++      mapToSelfIfNew(CU);
+ 
+-  for (DIType *Type : DIFinder.types())
+-    VMap.MD()[Type].reset(Type);
++    for (DIType *Type : DIFinder->types())
++      mapToSelfIfNew(Type);
++  }
+ 
+   // Duplicate the metadata that is attached to the cloned function.
+   // Subprograms/CUs/types that were already mapped to themselves won't be
+@@ -218,19 +252,33 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,
+                        ModuleLevelChanges ? RF_None : RF_NoModuleLevelChanges,
+                        TypeMapper, Materializer);
+ 
+-  // Register all DICompileUnits of the old parent module in the new parent module
+-  auto* OldModule = OldFunc->getParent();
++  // Only update !llvm.dbg.cu for DifferentModule (not CloneModule). In the
++  // same module, the compile unit will already be listed (or not). When
++  // cloning a module, CloneModule() will handle creating the named metadata.
++  if (Changes != CloneFunctionChangeType::DifferentModule)
++    return;
++
++  // Update !llvm.dbg.cu with compile units added to the new module if this
++  // function is being cloned in isolation.
++  //
++  // FIXME: This is making global / module-level changes, which doesn't seem
++  // like the right encapsulation  Consider dropping the requirement to update
++  // !llvm.dbg.cu (either obsoleting the node, or restricting it to
++  // non-discardable compile units) instead of discovering compile units by
++  // visiting the metadata attached to global values, which would allow this
++  // code to be deleted. Alternatively, perhaps give responsibility for this
++  // update to CloneFunctionInto's callers.
+   auto* NewModule = NewFunc->getParent();
+-  if (OldModule && NewModule && OldModule != NewModule && DIFinder.compile_unit_count()) {
+-    auto* NMD = NewModule->getOrInsertNamedMetadata("llvm.dbg.cu");
+-    // Avoid multiple insertions of the same DICompileUnit to NMD.
+-    SmallPtrSet<const void*, 8> Visited;
+-    for (auto* Operand : NMD->operands())
+-      Visited.insert(Operand);
+-    for (auto* Unit : DIFinder.compile_units())
+-      // VMap.MD()[Unit] == Unit
+-      if (Visited.insert(Unit).second)
+-        NMD->addOperand(Unit);
++  auto *NMD = NewModule->getOrInsertNamedMetadata("llvm.dbg.cu");
++  // Avoid multiple insertions of the same DICompileUnit to NMD.
++  SmallPtrSet<const void *, 8> Visited;
++  for (auto *Operand : NMD->operands())
++    Visited.insert(Operand);
++  for (auto *Unit : DIFinder->compile_units()) {
++    MDNode *MappedUnit =
++        MapMetadata(Unit, VMap, RF_None, TypeMapper, Materializer);
++    if (Visited.insert(MappedUnit).second)
++      NMD->addOperand(MappedUnit);
+   }
+ }
+ 
+@@ -269,8 +317,8 @@ Function *llvm::CloneFunction(Function *F, ValueToValueMapTy &VMap,
+     }
+ 
+   SmallVector<ReturnInst*, 8> Returns;  // Ignore returns cloned.
+-  CloneFunctionInto(NewF, F, VMap, F->getSubprogram() != nullptr, Returns, "",
+-                    CodeInfo);
++  CloneFunctionInto(NewF, F, VMap, CloneFunctionChangeType::LocalChangesOnly,
++                    Returns, "", CodeInfo);
+ 
+   return NewF;
+ }
+diff --git a/llvm/lib/Transforms/Utils/CloneModule.cpp b/llvm/lib/Transforms/Utils/CloneModule.cpp
+index 487cd4eae957..eb226b9b246d 100644
+--- a/llvm/lib/Transforms/Utils/CloneModule.cpp
++++ b/llvm/lib/Transforms/Utils/CloneModule.cpp
+@@ -120,13 +120,8 @@ std::unique_ptr<Module> llvm::CloneModule(
+ 
+     SmallVector<std::pair<unsigned, MDNode *>, 1> MDs;
+     G.getAllMetadata(MDs);
+-
+-    // FIXME: Stop using RF_ReuseAndMutateDistinctMDs here, since it's unsound
+-    // to mutate metadata that is still referenced by the source module unless
+-    // the source is about to be discarded (see IRMover for a valid use).
+     for (auto MD : MDs)
+-      GV->addMetadata(MD.first, *MapMetadata(MD.second, VMap,
+-                                             RF_ReuseAndMutateDistinctMDs));
++      GV->addMetadata(MD.first, *MapMetadata(MD.second, VMap));
+ 
+     if (G.isDeclaration())
+       continue;
+@@ -165,7 +160,8 @@ std::unique_ptr<Module> llvm::CloneModule(
+     }
+ 
+     SmallVector<ReturnInst *, 8> Returns; // Ignore returns cloned.
+-    CloneFunctionInto(F, &I, VMap, /*ModuleLevelChanges=*/true, Returns);
++    CloneFunctionInto(F, &I, VMap, CloneFunctionChangeType::ClonedModule,
++                      Returns);
+ 
+     if (I.hasPersonalityFn())
+       F->setPersonalityFn(MapValue(I.getPersonalityFn(), VMap));
+@@ -185,25 +181,13 @@ std::unique_ptr<Module> llvm::CloneModule(
+   }
+ 
+   // And named metadata....
+-  const auto* LLVM_DBG_CU = M.getNamedMetadata("llvm.dbg.cu");
+   for (Module::const_named_metadata_iterator I = M.named_metadata_begin(),
+                                              E = M.named_metadata_end();
+        I != E; ++I) {
+     const NamedMDNode &NMD = *I;
+     NamedMDNode *NewNMD = New->getOrInsertNamedMetadata(NMD.getName());
+-    if (&NMD == LLVM_DBG_CU) {
+-      // Do not insert duplicate operands.
+-      SmallPtrSet<const void*, 8> Visited;
+-      for (const auto* Operand : NewNMD->operands())
+-        Visited.insert(Operand);
+-      for (const auto* Operand : NMD.operands()) {
+-        auto* MappedOperand = MapMetadata(Operand, VMap);
+-        if (Visited.insert(MappedOperand).second)
+-          NewNMD->addOperand(MappedOperand);
+-      }
+-    } else
+-      for (unsigned i = 0, e = NMD.getNumOperands(); i != e; ++i)
+-        NewNMD->addOperand(MapMetadata(NMD.getOperand(i), VMap));
++    for (unsigned i = 0, e = NMD.getNumOperands(); i != e; ++i)
++      NewNMD->addOperand(MapMetadata(NMD.getOperand(i), VMap));
+   }
+ 
+   return New;
+diff --git a/llvm/unittests/Transforms/Utils/CloningTest.cpp b/llvm/unittests/Transforms/Utils/CloningTest.cpp
+index 016e772c2257..6bab80215c0b 100644
+--- a/llvm/unittests/Transforms/Utils/CloningTest.cpp
++++ b/llvm/unittests/Transforms/Utils/CloningTest.cpp
+@@ -177,7 +177,8 @@ TEST_F(CloneInstruction, Attributes) {
+   ValueToValueMapTy VMap;
+   VMap[A] = UndefValue::get(A->getType());
+ 
+-  CloneFunctionInto(F2, F1, VMap, false, Returns);
++  CloneFunctionInto(F2, F1, VMap, CloneFunctionChangeType::LocalChangesOnly,
++                    Returns);
+   EXPECT_FALSE(F2->arg_begin()->hasNoCaptureAttr());
+ 
+   delete F1;
+@@ -200,7 +201,8 @@ TEST_F(CloneInstruction, CallingConvention) {
+   ValueToValueMapTy VMap;
+   VMap[&*F1->arg_begin()] = &*F2->arg_begin();
+ 
+-  CloneFunctionInto(F2, F1, VMap, false, Returns);
++  CloneFunctionInto(F2, F1, VMap, CloneFunctionChangeType::LocalChangesOnly,
++                    Returns);
+   EXPECT_EQ(CallingConv::Cold, F2->getCallingConv());
+ 
+   delete F1;
+@@ -663,6 +665,28 @@ static int GetDICompileUnitCount(const Module& M) {
+   return 0;
+ }
+ 
++static bool haveCompileUnitsInCommon(const Module &LHS, const Module &RHS) {
++  const NamedMDNode *LHSCUs = LHS.getNamedMetadata("llvm.dbg.cu");
++  if (!LHSCUs)
++    return false;
++
++  const NamedMDNode *RHSCUs = RHS.getNamedMetadata("llvm.dbg.cu");
++  if (!RHSCUs)
++    return false;
++
++  SmallPtrSet<const MDNode *, 8> Found;
++  for (int I = 0, E = LHSCUs->getNumOperands(); I != E; ++I)
++    if (const MDNode *N = LHSCUs->getOperand(I))
++      Found.insert(N);
++
++  for (int I = 0, E = RHSCUs->getNumOperands(); I != E; ++I)
++    if (const MDNode *N = RHSCUs->getOperand(I))
++      if (Found.count(N))
++        return true;
++
++  return false;
++}
++
+ TEST(CloneFunction, CloneEmptyFunction) {
+   StringRef ImplAssembly = R"(
+     define void @foo() {
+@@ -684,7 +708,8 @@ TEST(CloneFunction, CloneEmptyFunction) {
+   ValueToValueMapTy VMap;
+   SmallVector<ReturnInst *, 8> Returns;
+   ClonedCodeInfo CCI;
+-  CloneFunctionInto(ImplFunction, DeclFunction, VMap, true, Returns, "", &CCI);
++  CloneFunctionInto(ImplFunction, DeclFunction, VMap,
++                    CloneFunctionChangeType::GlobalChanges, Returns, "", &CCI);
+ 
+   EXPECT_FALSE(verifyModule(*ImplModule, &errs()));
+   EXPECT_FALSE(CCI.ContainsCalls);
+@@ -715,7 +740,8 @@ TEST(CloneFunction, CloneFunctionWithInalloca) {
+   ValueToValueMapTy VMap;
+   SmallVector<ReturnInst *, 8> Returns;
+   ClonedCodeInfo CCI;
+-  CloneFunctionInto(DeclFunction, ImplFunction, VMap, true, Returns, "", &CCI);
++  CloneFunctionInto(DeclFunction, ImplFunction, VMap,
++                    CloneFunctionChangeType::GlobalChanges, Returns, "", &CCI);
+ 
+   EXPECT_FALSE(verifyModule(*ImplModule, &errs()));
+   EXPECT_TRUE(CCI.ContainsCalls);
+@@ -764,7 +790,8 @@ TEST(CloneFunction, CloneFunctionWithSubprograms) {
+   ValueToValueMapTy VMap;
+   SmallVector<ReturnInst *, 8> Returns;
+   ClonedCodeInfo CCI;
+-  CloneFunctionInto(NewFunc, OldFunc, VMap, true, Returns, "", &CCI);
++  CloneFunctionInto(NewFunc, OldFunc, VMap,
++                    CloneFunctionChangeType::GlobalChanges, Returns, "", &CCI);
+ 
+   // This fails if the scopes in the llvm.dbg.declare variable and location
+   // aren't the same.
+@@ -812,12 +839,14 @@ TEST(CloneFunction, CloneFunctionToDifferentModule) {
+   VMap[ImplFunction] = DeclFunction;
+   // No args to map
+   SmallVector<ReturnInst*, 8> Returns;
+-  CloneFunctionInto(DeclFunction, ImplFunction, VMap, true, Returns);
++  CloneFunctionInto(DeclFunction, ImplFunction, VMap,
++                    CloneFunctionChangeType::DifferentModule, Returns);
+ 
+   EXPECT_FALSE(verifyModule(*ImplModule, &errs()));
+   EXPECT_FALSE(verifyModule(*DeclModule, &errs()));
+-  // DICompileUnit !2 shall be inserted into DeclModule.
++  // DICompileUnit !2 shall be cloned into DeclModule.
+   EXPECT_TRUE(GetDICompileUnitCount(*DeclModule) == 1);
++  EXPECT_FALSE(haveCompileUnitsInCommon(*ImplModule, *DeclModule));
+ }
+ 
+ class CloneModule : public ::testing::Test {
+@@ -840,6 +869,16 @@ protected:
+     GV->addMetadata(LLVMContext::MD_type, *MDNode::get(C, {}));
+     GV->setComdat(CD);
+ 
++    {
++      // Add an empty compile unit first that isn't otherwise referenced, to
++      // confirm that compile units get cloned in the correct order.
++      DIBuilder EmptyBuilder(*OldM);
++      auto *File = EmptyBuilder.createFile("empty.c", "/file/dir/");
++      (void)EmptyBuilder.createCompileUnit(dwarf::DW_LANG_C99, File,
++                                           "EmptyUnit", false, "", 0);
++      EmptyBuilder.finalize();
++    }
++
+     DIBuilder DBuilder(*OldM);
+     IRBuilder<> IBuilder(C);
+ 
+@@ -894,6 +933,10 @@ protected:
+ };
+ 
+ TEST_F(CloneModule, Verify) {
++  // Confirm the old module is (still) valid.
++  EXPECT_FALSE(verifyModule(*OldM));
++
++  // Check the new module.
+   EXPECT_FALSE(verifyModule(*NewM));
+ }
+ 
+@@ -944,10 +987,19 @@ TEST_F(CloneModule, CompileUnit) {
+   // Find DICompileUnit listed in llvm.dbg.cu
+   auto *NMD = NewM->getNamedMetadata("llvm.dbg.cu");
+   EXPECT_TRUE(NMD != nullptr);
+-  EXPECT_EQ(NMD->getNumOperands(), 1U);
++  EXPECT_EQ(NMD->getNumOperands(), 2U);
++  EXPECT_FALSE(haveCompileUnitsInCommon(*OldM, *NewM));
++
++  // Check that the empty CU is first, even though it's not referenced except
++  // from named metadata.
++  DICompileUnit *EmptyCU = dyn_cast<llvm::DICompileUnit>(NMD->getOperand(0));
++  EXPECT_TRUE(EmptyCU != nullptr);
++  EXPECT_EQ("EmptyUnit", EmptyCU->getProducer());
+ 
+-  DICompileUnit *CU = dyn_cast<llvm::DICompileUnit>(NMD->getOperand(0));
++  // Get the interesting CU.
++  DICompileUnit *CU = dyn_cast<llvm::DICompileUnit>(NMD->getOperand(1));
+   EXPECT_TRUE(CU != nullptr);
++  EXPECT_EQ("CloneModule", CU->getProducer());
+ 
+   // Assert this CU is consistent with the cloned function debug info
+   DISubprogram *SP = NewM->getFunction("f")->getSubprogram();
diff --git a/sys-devel/llvm/files/cherry/2cb8c10342ee5d040725abb1166feb92a64c7df6.patch b/sys-devel/llvm/files/cherry/2cb8c10342ee5d040725abb1166feb92a64c7df6.patch
new file mode 100644
index 0000000..f10b093
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/2cb8c10342ee5d040725abb1166feb92a64c7df6.patch
@@ -0,0 +1,14369 @@
+commit 2cb8c10342ee5d040725abb1166feb92a64c7df6
+Author: Dávid Bolvanský <david.bolvansky@gmail.com>
+Date:   Thu Apr 8 17:28:57 2021 +0200
+
+    Revert "Reduce the number of attributes attached to each function"
+    
+    This reverts commit 053dc95839b3b8a36db46f8c419e36e632e989cd. It causes perf regressions - see discussion in D97116.
+
+diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp
+index 600312e15ef4..5ff969dbf285 100644
+--- a/clang/lib/CodeGen/CodeGenFunction.cpp
++++ b/clang/lib/CodeGen/CodeGenFunction.cpp
+@@ -493,8 +493,7 @@ void CodeGenFunction::FinishFunction(SourceLocation EndLoc) {
+   // 4. Width of vector arguments and return types for this function.
+   // 5. Width of vector aguments and return types for functions called by this
+   //    function.
+-  if (LargestVectorWidth)
+-    CurFn->addFnAttr("min-legal-vector-width", llvm::utostr(LargestVectorWidth));
++  CurFn->addFnAttr("min-legal-vector-width", llvm::utostr(LargestVectorWidth));
+ 
+   // Add vscale attribute if appropriate.
+   if (getLangOpts().ArmSveVectorBits) {
+diff --git a/clang/test/CodeGen/aarch64-neon-ldst-one.c b/clang/test/CodeGen/aarch64-neon-ldst-one.c
+index e4fce996a1f3..db352fecf221 100644
+--- a/clang/test/CodeGen/aarch64-neon-ldst-one.c
++++ b/clang/test/CodeGen/aarch64-neon-ldst-one.c
+@@ -1,7341 +1,6803 @@
+-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+ // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
+ // RUN:  -disable-O0-optnone -fallow-half-arguments-and-returns -emit-llvm -o - %s \
+ // RUN: | opt -S -mem2reg | FileCheck %s
+ 
+ #include <arm_neon.h>
+ 
+-// CHECK-LABEL: @test_vld1q_dup_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <16 x i8> undef, i8 [[TMP0]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <16 x i8> [[TMP1]], <16 x i8> [[TMP1]], <16 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <16 x i8> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <16 x i8> @test_vld1q_dup_u8(i8* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[TMP1:%.*]] = insertelement <16 x i8> undef, i8 [[TMP0]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <16 x i8> [[TMP1]], <16 x i8> [[TMP1]], <16 x i32> zeroinitializer
++// CHECK:   ret <16 x i8> [[LANE]]
+ uint8x16_t test_vld1q_dup_u8(uint8_t  *a) {
+   return vld1q_dup_u8(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i16, i16* [[TMP1]], align 2
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <8 x i16> undef, i16 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <8 x i16> [[TMP3]], <8 x i16> [[TMP3]], <8 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <8 x i16> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i16> @test_vld1q_dup_u16(i16* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP2:%.*]] = load i16, i16* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <8 x i16> undef, i16 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <8 x i16> [[TMP3]], <8 x i16> [[TMP3]], <8 x i32> zeroinitializer
++// CHECK:   ret <8 x i16> [[LANE]]
+ uint16x8_t test_vld1q_dup_u16(uint16_t  *a) {
+   return vld1q_dup_u16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i32, i32* [[TMP1]], align 4
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <4 x i32> undef, i32 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <4 x i32> [[TMP3]], <4 x i32> [[TMP3]], <4 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <4 x i32> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i32> @test_vld1q_dup_u32(i32* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   [[TMP2:%.*]] = load i32, i32* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i32> undef, i32 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <4 x i32> [[TMP3]], <4 x i32> [[TMP3]], <4 x i32> zeroinitializer
++// CHECK:   ret <4 x i32> [[LANE]]
+ uint32x4_t test_vld1q_dup_u32(uint32_t  *a) {
+   return vld1q_dup_u32(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i64, i64* [[TMP1]], align 8
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <2 x i64> undef, i64 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <2 x i64> [[TMP3]], <2 x i64> [[TMP3]], <2 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <2 x i64> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i64> @test_vld1q_dup_u64(i64* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP2:%.*]] = load i64, i64* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <2 x i64> undef, i64 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <2 x i64> [[TMP3]], <2 x i64> [[TMP3]], <2 x i32> zeroinitializer
++// CHECK:   ret <2 x i64> [[LANE]]
+ uint64x2_t test_vld1q_dup_u64(uint64_t  *a) {
+   return vld1q_dup_u64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <16 x i8> undef, i8 [[TMP0]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <16 x i8> [[TMP1]], <16 x i8> [[TMP1]], <16 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <16 x i8> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <16 x i8> @test_vld1q_dup_s8(i8* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[TMP1:%.*]] = insertelement <16 x i8> undef, i8 [[TMP0]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <16 x i8> [[TMP1]], <16 x i8> [[TMP1]], <16 x i32> zeroinitializer
++// CHECK:   ret <16 x i8> [[LANE]]
+ int8x16_t test_vld1q_dup_s8(int8_t  *a) {
+   return vld1q_dup_s8(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i16, i16* [[TMP1]], align 2
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <8 x i16> undef, i16 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <8 x i16> [[TMP3]], <8 x i16> [[TMP3]], <8 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <8 x i16> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i16> @test_vld1q_dup_s16(i16* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP2:%.*]] = load i16, i16* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <8 x i16> undef, i16 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <8 x i16> [[TMP3]], <8 x i16> [[TMP3]], <8 x i32> zeroinitializer
++// CHECK:   ret <8 x i16> [[LANE]]
+ int16x8_t test_vld1q_dup_s16(int16_t  *a) {
+   return vld1q_dup_s16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i32, i32* [[TMP1]], align 4
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <4 x i32> undef, i32 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <4 x i32> [[TMP3]], <4 x i32> [[TMP3]], <4 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <4 x i32> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i32> @test_vld1q_dup_s32(i32* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   [[TMP2:%.*]] = load i32, i32* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i32> undef, i32 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <4 x i32> [[TMP3]], <4 x i32> [[TMP3]], <4 x i32> zeroinitializer
++// CHECK:   ret <4 x i32> [[LANE]]
+ int32x4_t test_vld1q_dup_s32(int32_t  *a) {
+   return vld1q_dup_s32(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i64, i64* [[TMP1]], align 8
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <2 x i64> undef, i64 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <2 x i64> [[TMP3]], <2 x i64> [[TMP3]], <2 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <2 x i64> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i64> @test_vld1q_dup_s64(i64* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP2:%.*]] = load i64, i64* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <2 x i64> undef, i64 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <2 x i64> [[TMP3]], <2 x i64> [[TMP3]], <2 x i32> zeroinitializer
++// CHECK:   ret <2 x i64> [[LANE]]
+ int64x2_t test_vld1q_dup_s64(int64_t  *a) {
+   return vld1q_dup_s64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to half*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load half, half* [[TMP1]], align 2
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <8 x half> undef, half [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <8 x half> [[TMP3]], <8 x half> [[TMP3]], <8 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <8 x half> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x half> @test_vld1q_dup_f16(half* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to half*
++// CHECK:   [[TMP2:%.*]] = load half, half* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <8 x half> undef, half [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <8 x half> [[TMP3]], <8 x half> [[TMP3]], <8 x i32> zeroinitializer
++// CHECK:   ret <8 x half> [[LANE]]
+ float16x8_t test_vld1q_dup_f16(float16_t  *a) {
+   return vld1q_dup_f16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to float*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load float, float* [[TMP1]], align 4
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <4 x float> undef, float [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <4 x float> [[TMP3]], <4 x float> [[TMP3]], <4 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <4 x float> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x float> @test_vld1q_dup_f32(float* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to float*
++// CHECK:   [[TMP2:%.*]] = load float, float* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x float> undef, float [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <4 x float> [[TMP3]], <4 x float> [[TMP3]], <4 x i32> zeroinitializer
++// CHECK:   ret <4 x float> [[LANE]]
+ float32x4_t test_vld1q_dup_f32(float32_t  *a) {
+   return vld1q_dup_f32(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to double*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load double, double* [[TMP1]], align 8
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <2 x double> undef, double [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <2 x double> [[TMP3]], <2 x double> [[TMP3]], <2 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <2 x double> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x double> @test_vld1q_dup_f64(double* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to double*
++// CHECK:   [[TMP2:%.*]] = load double, double* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <2 x double> undef, double [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <2 x double> [[TMP3]], <2 x double> [[TMP3]], <2 x i32> zeroinitializer
++// CHECK:   ret <2 x double> [[LANE]]
+ float64x2_t test_vld1q_dup_f64(float64_t  *a) {
+   return vld1q_dup_f64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <16 x i8> undef, i8 [[TMP0]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <16 x i8> [[TMP1]], <16 x i8> [[TMP1]], <16 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <16 x i8> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <16 x i8> @test_vld1q_dup_p8(i8* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[TMP1:%.*]] = insertelement <16 x i8> undef, i8 [[TMP0]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <16 x i8> [[TMP1]], <16 x i8> [[TMP1]], <16 x i32> zeroinitializer
++// CHECK:   ret <16 x i8> [[LANE]]
+ poly8x16_t test_vld1q_dup_p8(poly8_t  *a) {
+   return vld1q_dup_p8(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i16, i16* [[TMP1]], align 2
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <8 x i16> undef, i16 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <8 x i16> [[TMP3]], <8 x i16> [[TMP3]], <8 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <8 x i16> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i16> @test_vld1q_dup_p16(i16* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP2:%.*]] = load i16, i16* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <8 x i16> undef, i16 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <8 x i16> [[TMP3]], <8 x i16> [[TMP3]], <8 x i32> zeroinitializer
++// CHECK:   ret <8 x i16> [[LANE]]
+ poly16x8_t test_vld1q_dup_p16(poly16_t  *a) {
+   return vld1q_dup_p16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_dup_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i64, i64* [[TMP1]], align 8
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <2 x i64> undef, i64 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <2 x i64> [[TMP3]], <2 x i64> [[TMP3]], <2 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <2 x i64> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i64> @test_vld1q_dup_p64(i64* %a) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP2:%.*]] = load i64, i64* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <2 x i64> undef, i64 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <2 x i64> [[TMP3]], <2 x i64> [[TMP3]], <2 x i32> zeroinitializer
++// CHECK:   ret <2 x i64> [[LANE]]
+ poly64x2_t test_vld1q_dup_p64(poly64_t  *a) {
+   return vld1q_dup_p64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 [[TMP0]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <8 x i8> [[TMP1]], <8 x i8> [[TMP1]], <8 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <8 x i8> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i8> @test_vld1_dup_u8(i8* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 [[TMP0]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <8 x i8> [[TMP1]], <8 x i8> [[TMP1]], <8 x i32> zeroinitializer
++// CHECK:   ret <8 x i8> [[LANE]]
+ uint8x8_t test_vld1_dup_u8(uint8_t  *a) {
+   return vld1_dup_u8(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i16, i16* [[TMP1]], align 2
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <4 x i16> [[TMP3]], <4 x i16> [[TMP3]], <4 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <4 x i16> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i16> @test_vld1_dup_u16(i16* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP2:%.*]] = load i16, i16* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <4 x i16> [[TMP3]], <4 x i16> [[TMP3]], <4 x i32> zeroinitializer
++// CHECK:   ret <4 x i16> [[LANE]]
+ uint16x4_t test_vld1_dup_u16(uint16_t  *a) {
+   return vld1_dup_u16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i32, i32* [[TMP1]], align 4
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <2 x i32> undef, i32 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <2 x i32> [[TMP3]], <2 x i32> [[TMP3]], <2 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <2 x i32> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i32> @test_vld1_dup_u32(i32* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   [[TMP2:%.*]] = load i32, i32* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <2 x i32> undef, i32 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <2 x i32> [[TMP3]], <2 x i32> [[TMP3]], <2 x i32> zeroinitializer
++// CHECK:   ret <2 x i32> [[LANE]]
+ uint32x2_t test_vld1_dup_u32(uint32_t  *a) {
+   return vld1_dup_u32(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i64, i64* [[TMP1]], align 8
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <1 x i64> undef, i64 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <1 x i64> [[TMP3]], <1 x i64> [[TMP3]], <1 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <1 x i64> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x i64> @test_vld1_dup_u64(i64* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP2:%.*]] = load i64, i64* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <1 x i64> undef, i64 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <1 x i64> [[TMP3]], <1 x i64> [[TMP3]], <1 x i32> zeroinitializer
++// CHECK:   ret <1 x i64> [[LANE]]
+ uint64x1_t test_vld1_dup_u64(uint64_t  *a) {
+   return vld1_dup_u64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 [[TMP0]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <8 x i8> [[TMP1]], <8 x i8> [[TMP1]], <8 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <8 x i8> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i8> @test_vld1_dup_s8(i8* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 [[TMP0]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <8 x i8> [[TMP1]], <8 x i8> [[TMP1]], <8 x i32> zeroinitializer
++// CHECK:   ret <8 x i8> [[LANE]]
+ int8x8_t test_vld1_dup_s8(int8_t  *a) {
+   return vld1_dup_s8(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i16, i16* [[TMP1]], align 2
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <4 x i16> [[TMP3]], <4 x i16> [[TMP3]], <4 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <4 x i16> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i16> @test_vld1_dup_s16(i16* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP2:%.*]] = load i16, i16* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <4 x i16> [[TMP3]], <4 x i16> [[TMP3]], <4 x i32> zeroinitializer
++// CHECK:   ret <4 x i16> [[LANE]]
+ int16x4_t test_vld1_dup_s16(int16_t  *a) {
+   return vld1_dup_s16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i32, i32* [[TMP1]], align 4
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <2 x i32> undef, i32 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <2 x i32> [[TMP3]], <2 x i32> [[TMP3]], <2 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <2 x i32> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i32> @test_vld1_dup_s32(i32* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   [[TMP2:%.*]] = load i32, i32* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <2 x i32> undef, i32 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <2 x i32> [[TMP3]], <2 x i32> [[TMP3]], <2 x i32> zeroinitializer
++// CHECK:   ret <2 x i32> [[LANE]]
+ int32x2_t test_vld1_dup_s32(int32_t  *a) {
+   return vld1_dup_s32(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i64, i64* [[TMP1]], align 8
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <1 x i64> undef, i64 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <1 x i64> [[TMP3]], <1 x i64> [[TMP3]], <1 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <1 x i64> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x i64> @test_vld1_dup_s64(i64* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP2:%.*]] = load i64, i64* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <1 x i64> undef, i64 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <1 x i64> [[TMP3]], <1 x i64> [[TMP3]], <1 x i32> zeroinitializer
++// CHECK:   ret <1 x i64> [[LANE]]
+ int64x1_t test_vld1_dup_s64(int64_t  *a) {
+   return vld1_dup_s64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to half*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load half, half* [[TMP1]], align 2
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <4 x half> undef, half [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <4 x half> [[TMP3]], <4 x half> [[TMP3]], <4 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <4 x half> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x half> @test_vld1_dup_f16(half* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to half*
++// CHECK:   [[TMP2:%.*]] = load half, half* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x half> undef, half [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <4 x half> [[TMP3]], <4 x half> [[TMP3]], <4 x i32> zeroinitializer
++// CHECK:   ret <4 x half> [[LANE]]
+ float16x4_t test_vld1_dup_f16(float16_t  *a) {
+   return vld1_dup_f16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to float*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load float, float* [[TMP1]], align 4
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <2 x float> undef, float [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <2 x float> [[TMP3]], <2 x float> [[TMP3]], <2 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <2 x float> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x float> @test_vld1_dup_f32(float* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to float*
++// CHECK:   [[TMP2:%.*]] = load float, float* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <2 x float> undef, float [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <2 x float> [[TMP3]], <2 x float> [[TMP3]], <2 x i32> zeroinitializer
++// CHECK:   ret <2 x float> [[LANE]]
+ float32x2_t test_vld1_dup_f32(float32_t  *a) {
+   return vld1_dup_f32(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to double*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load double, double* [[TMP1]], align 8
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <1 x double> undef, double [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <1 x double> [[TMP3]], <1 x double> [[TMP3]], <1 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <1 x double> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vld1_dup_f64(double* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to double*
++// CHECK:   [[TMP2:%.*]] = load double, double* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <1 x double> undef, double [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <1 x double> [[TMP3]], <1 x double> [[TMP3]], <1 x i32> zeroinitializer
++// CHECK:   ret <1 x double> [[LANE]]
+ float64x1_t test_vld1_dup_f64(float64_t  *a) {
+   return vld1_dup_f64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 [[TMP0]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <8 x i8> [[TMP1]], <8 x i8> [[TMP1]], <8 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <8 x i8> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i8> @test_vld1_dup_p8(i8* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[TMP1:%.*]] = insertelement <8 x i8> undef, i8 [[TMP0]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <8 x i8> [[TMP1]], <8 x i8> [[TMP1]], <8 x i32> zeroinitializer
++// CHECK:   ret <8 x i8> [[LANE]]
+ poly8x8_t test_vld1_dup_p8(poly8_t  *a) {
+   return vld1_dup_p8(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i16, i16* [[TMP1]], align 2
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <4 x i16> [[TMP3]], <4 x i16> [[TMP3]], <4 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <4 x i16> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i16> @test_vld1_dup_p16(i16* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP2:%.*]] = load i16, i16* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <4 x i16> [[TMP3]], <4 x i16> [[TMP3]], <4 x i32> zeroinitializer
++// CHECK:   ret <4 x i16> [[LANE]]
+ poly16x4_t test_vld1_dup_p16(poly16_t  *a) {
+   return vld1_dup_p16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_dup_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i64, i64* [[TMP1]], align 8
+-// CHECK-NEXT:    [[TMP3:%.*]] = insertelement <1 x i64> undef, i64 [[TMP2]], i32 0
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <1 x i64> [[TMP3]], <1 x i64> [[TMP3]], <1 x i32> zeroinitializer
+-// CHECK-NEXT:    ret <1 x i64> [[LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x i64> @test_vld1_dup_p64(i64* %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP2:%.*]] = load i64, i64* [[TMP1]]
++// CHECK:   [[TMP3:%.*]] = insertelement <1 x i64> undef, i64 [[TMP2]], i32 0
++// CHECK:   [[LANE:%.*]] = shufflevector <1 x i64> [[TMP3]], <1 x i64> [[TMP3]], <1 x i32> zeroinitializer
++// CHECK:   ret <1 x i64> [[LANE]]
+ poly64x1_t test_vld1_dup_p64(poly64_t  *a) {
+   return vld1_dup_p64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_dup_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD2:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64> } [[VLD2]], { <2 x i64>, <2 x i64> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.uint64x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_UINT64X2X2_T]], %struct.uint64x2x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT64X2X2_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint64x2x2_t @test_vld2q_dup_u64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x2_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD2:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD2]], { <2 x i64>, <2 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 32, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint64x2x2_t [[TMP6]]
+ uint64x2x2_t test_vld2q_dup_u64(uint64_t  *a) {
+   return vld2q_dup_u64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_dup_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD2:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64> } [[VLD2]], { <2 x i64>, <2 x i64> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.int64x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_INT64X2X2_T]], %struct.int64x2x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT64X2X2_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int64x2x2_t @test_vld2q_dup_s64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x2_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD2:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD2]], { <2 x i64>, <2 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 32, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.int64x2x2_t, %struct.int64x2x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int64x2x2_t [[TMP6]]
+ int64x2x2_t test_vld2q_dup_s64(int64_t  *a) {
+   return vld2q_dup_s64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_dup_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
+-// CHECK-NEXT:    [[VLD2:%.*]] = call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2r.v2f64.p0f64(double* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double> }*
+-// CHECK-NEXT:    store { <2 x double>, <2 x double> } [[VLD2]], { <2 x double>, <2 x double> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.float64x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_FLOAT64X2X2_T]], %struct.float64x2x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X2X2_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x2x2_t @test_vld2q_dup_f64(double* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x2_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
++// CHECK:   [[VLD2:%.*]] = call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2r.v2f64.p0f64(double* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double> }*
++// CHECK:   store { <2 x double>, <2 x double> } [[VLD2]], { <2 x double>, <2 x double> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 32, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.float64x2x2_t, %struct.float64x2x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float64x2x2_t [[TMP6]]
+ float64x2x2_t test_vld2q_dup_f64(float64_t  *a) {
+   return vld2q_dup_f64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_dup_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X2X2_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD2:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64> } [[VLD2]], { <2 x i64>, <2 x i64> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.poly64x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.poly64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_POLY64X2X2_T]], %struct.poly64x2x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X2X2_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x2x2_t @test_vld2q_dup_p64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x2x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x2x2_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD2:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2r.v2i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD2]], { <2 x i64>, <2 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 32, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly64x2x2_t [[TMP6]]
+ poly64x2x2_t test_vld2q_dup_p64(poly64_t  *a) {
+   return vld2q_dup_p64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_dup_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X1X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
+-// CHECK-NEXT:    [[VLD2:%.*]] = call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2r.v1f64.p0f64(double* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double> }*
+-// CHECK-NEXT:    store { <1 x double>, <1 x double> } [[VLD2]], { <1 x double>, <1 x double> }* [[TMP3]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.float64x1x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_FLOAT64X1X2_T]], %struct.float64x1x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X1X2_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x1x2_t @test_vld2_dup_f64(double* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x2_t, align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
++// CHECK:   [[VLD2:%.*]] = call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2r.v1f64.p0f64(double* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double> }*
++// CHECK:   store { <1 x double>, <1 x double> } [[VLD2]], { <1 x double>, <1 x double> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x1x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 16, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.float64x1x2_t, %struct.float64x1x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float64x1x2_t [[TMP6]]
+ float64x1x2_t test_vld2_dup_f64(float64_t  *a) {
+   return vld2_dup_f64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_dup_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X1X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X1X2_T]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD2:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2r.v1i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64> } [[VLD2]], { <1 x i64>, <1 x i64> }* [[TMP3]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.poly64x1x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.poly64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_POLY64X1X2_T]], %struct.poly64x1x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X1X2_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x1x2_t @test_vld2_dup_p64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x1x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x1x2_t, align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD2:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2r.v1i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64> } [[VLD2]], { <1 x i64>, <1 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x1x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x1x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 16, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly64x1x2_t [[TMP6]]
+ poly64x1x2_t test_vld2_dup_p64(poly64_t  *a) {
+   return vld2_dup_p64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_dup_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD3:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.uint64x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_UINT64X2X3_T]], %struct.uint64x2x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT64X2X3_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint64x2x3_t @test_vld3q_dup_u64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x3_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD3:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 48, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint64x2x3_t [[TMP6]]
+ uint64x2x3_t test_vld3q_dup_u64(uint64_t  *a) {
+   return vld3q_dup_u64(a);
+   // [{{x[0-9]+|sp}}]
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_dup_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD3:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.int64x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_INT64X2X3_T]], %struct.int64x2x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT64X2X3_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int64x2x3_t @test_vld3q_dup_s64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x3_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD3:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 48, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.int64x2x3_t, %struct.int64x2x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int64x2x3_t [[TMP6]]
+ int64x2x3_t test_vld3q_dup_s64(int64_t  *a) {
+   return vld3q_dup_s64(a);
+   // [{{x[0-9]+|sp}}]
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_dup_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
+-// CHECK-NEXT:    [[VLD3:%.*]] = call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3r.v2f64.p0f64(double* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double>, <2 x double> }*
+-// CHECK-NEXT:    store { <2 x double>, <2 x double>, <2 x double> } [[VLD3]], { <2 x double>, <2 x double>, <2 x double> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.float64x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_FLOAT64X2X3_T]], %struct.float64x2x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X2X3_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x2x3_t @test_vld3q_dup_f64(double* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x3_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
++// CHECK:   [[VLD3:%.*]] = call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3r.v2f64.p0f64(double* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double>, <2 x double> }*
++// CHECK:   store { <2 x double>, <2 x double>, <2 x double> } [[VLD3]], { <2 x double>, <2 x double>, <2 x double> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 48, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.float64x2x3_t, %struct.float64x2x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float64x2x3_t [[TMP6]]
+ float64x2x3_t test_vld3q_dup_f64(float64_t  *a) {
+   return vld3q_dup_f64(a);
+   // [{{x[0-9]+|sp}}]
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_dup_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X2X3_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD3:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.poly64x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.poly64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_POLY64X2X3_T]], %struct.poly64x2x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X2X3_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x2x3_t @test_vld3q_dup_p64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x2x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x2x3_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD3:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3r.v2i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 48, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly64x2x3_t [[TMP6]]
+ poly64x2x3_t test_vld3q_dup_p64(poly64_t  *a) {
+   return vld3q_dup_p64(a);
+   // [{{x[0-9]+|sp}}]
+ }
+ 
+-// CHECK-LABEL: @test_vld3_dup_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X1X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
+-// CHECK-NEXT:    [[VLD3:%.*]] = call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3r.v1f64.p0f64(double* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double>, <1 x double> }*
+-// CHECK-NEXT:    store { <1 x double>, <1 x double>, <1 x double> } [[VLD3]], { <1 x double>, <1 x double>, <1 x double> }* [[TMP3]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.float64x1x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_FLOAT64X1X3_T]], %struct.float64x1x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X1X3_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x1x3_t @test_vld3_dup_f64(double* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x3_t, align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
++// CHECK:   [[VLD3:%.*]] = call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3r.v1f64.p0f64(double* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double>, <1 x double> }*
++// CHECK:   store { <1 x double>, <1 x double>, <1 x double> } [[VLD3]], { <1 x double>, <1 x double>, <1 x double> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x1x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 24, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.float64x1x3_t, %struct.float64x1x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float64x1x3_t [[TMP6]]
+ float64x1x3_t test_vld3_dup_f64(float64_t  *a) {
+   return vld3_dup_f64(a);
+   // [{{x[0-9]+|sp}}]
+ }
+ 
+-// CHECK-LABEL: @test_vld3_dup_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X1X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X1X3_T]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD3:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3r.v1i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD3]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.poly64x1x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.poly64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_POLY64X1X3_T]], %struct.poly64x1x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X1X3_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x1x3_t @test_vld3_dup_p64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x1x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x1x3_t, align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD3:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3r.v1i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD3]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x1x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x1x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 24, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly64x1x3_t [[TMP6]]
+ poly64x1x3_t test_vld3_dup_p64(poly64_t  *a) {
+   return vld3_dup_p64(a);
+   // [{{x[0-9]+|sp}}]
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_dup_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD4:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.uint64x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT64X2X4_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint64x2x4_t @test_vld4q_dup_u64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x4_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD4:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.uint64x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 64, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint64x2x4_t [[TMP6]]
+ uint64x2x4_t test_vld4q_dup_u64(uint64_t  *a) {
+   return vld4q_dup_u64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_dup_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD4:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.int64x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT64X2X4_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int64x2x4_t @test_vld4q_dup_s64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x4_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD4:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.int64x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 64, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.int64x2x4_t, %struct.int64x2x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int64x2x4_t [[TMP6]]
+ int64x2x4_t test_vld4q_dup_s64(int64_t  *a) {
+   return vld4q_dup_s64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_dup_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
+-// CHECK-NEXT:    [[VLD4:%.*]] = call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4r.v2f64.p0f64(double* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double>, <2 x double>, <2 x double> }*
+-// CHECK-NEXT:    store { <2 x double>, <2 x double>, <2 x double>, <2 x double> } [[VLD4]], { <2 x double>, <2 x double>, <2 x double>, <2 x double> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.float64x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X2X4_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x2x4_t @test_vld4q_dup_f64(double* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x4_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
++// CHECK:   [[VLD4:%.*]] = call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4r.v2f64.p0f64(double* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x double>, <2 x double>, <2 x double>, <2 x double> }*
++// CHECK:   store { <2 x double>, <2 x double>, <2 x double>, <2 x double> } [[VLD4]], { <2 x double>, <2 x double>, <2 x double>, <2 x double> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 64, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.float64x2x4_t, %struct.float64x2x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float64x2x4_t [[TMP6]]
+ float64x2x4_t test_vld4q_dup_f64(float64_t  *a) {
+   return vld4q_dup_f64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_dup_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X2X4_T]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD4:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.poly64x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.poly64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X2X4_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x2x4_t @test_vld4q_dup_p64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x2x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x2x4_t, align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD4:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4r.v2i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP4]], i8* align 16 [[TMP5]], i64 64, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly64x2x4_t [[TMP6]]
+ poly64x2x4_t test_vld4q_dup_p64(poly64_t  *a) {
+   return vld4q_dup_p64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_dup_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X1X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
+-// CHECK-NEXT:    [[VLD4:%.*]] = call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4r.v1f64.p0f64(double* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double>, <1 x double>, <1 x double> }*
+-// CHECK-NEXT:    store { <1 x double>, <1 x double>, <1 x double>, <1 x double> } [[VLD4]], { <1 x double>, <1 x double>, <1 x double>, <1 x double> }* [[TMP3]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.float64x1x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X1X4_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x1x4_t @test_vld4_dup_f64(double* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x4_t, align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to double*
++// CHECK:   [[VLD4:%.*]] = call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4r.v1f64.p0f64(double* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x double>, <1 x double>, <1 x double>, <1 x double> }*
++// CHECK:   store { <1 x double>, <1 x double>, <1 x double>, <1 x double> } [[VLD4]], { <1 x double>, <1 x double>, <1 x double>, <1 x double> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.float64x1x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 32, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.float64x1x4_t, %struct.float64x1x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float64x1x4_t [[TMP6]]
+ float64x1x4_t test_vld4_dup_f64(float64_t  *a) {
+   return vld4_dup_f64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_dup_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X1X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X1X4_T]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
+-// CHECK-NEXT:    [[VLD4:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4r.v1i64.p0i64(i64* [[TMP2]])
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD4]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast %struct.poly64x1x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast %struct.poly64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP6:%.*]] = load [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X1X4_T]] [[TMP6]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x1x4_t @test_vld4_dup_p64(i64* %a) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x1x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x1x4_t, align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP2:%.*]] = bitcast i8* [[TMP1]] to i64*
++// CHECK:   [[VLD4:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4r.v1i64.p0i64(i64* [[TMP2]])
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD4]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP3]]
++// CHECK:   [[TMP4:%.*]] = bitcast %struct.poly64x1x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP5:%.*]] = bitcast %struct.poly64x1x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP4]], i8* align 8 [[TMP5]], i64 32, i1 false)
++// CHECK:   [[TMP6:%.*]] = load %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly64x1x4_t [[TMP6]]
+ poly64x1x4_t test_vld4_dup_p64(poly64_t  *a) {
+   return vld4_dup_p64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <16 x i8> [[B:%.*]], i8 [[TMP0]], i32 15
+-// CHECK-NEXT:    ret <16 x i8> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <16 x i8> @test_vld1q_lane_u8(i8* %a, <16 x i8> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <16 x i8> %b, i8 [[TMP0]], i32 15
++// CHECK:   ret <16 x i8> [[VLD1_LANE]]
+ uint8x16_t test_vld1q_lane_u8(uint8_t  *a, uint8x16_t b) {
+   return vld1q_lane_u8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <8 x i16> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i16, i16* [[TMP3]], align 2
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <8 x i16> [[TMP2]], i16 [[TMP4]], i32 7
+-// CHECK-NEXT:    ret <8 x i16> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i16> @test_vld1q_lane_u16(i16* %a, <8 x i16> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP4:%.*]] = load i16, i16* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <8 x i16> [[TMP2]], i16 [[TMP4]], i32 7
++// CHECK:   ret <8 x i16> [[VLD1_LANE]]
+ uint16x8_t test_vld1q_lane_u16(uint16_t  *a, uint16x8_t b) {
+   return vld1q_lane_u16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i32> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i32, i32* [[TMP3]], align 4
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <4 x i32> [[TMP2]], i32 [[TMP4]], i32 3
+-// CHECK-NEXT:    ret <4 x i32> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i32> @test_vld1q_lane_u32(i32* %a, <4 x i32> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   [[TMP4:%.*]] = load i32, i32* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <4 x i32> [[TMP2]], i32 [[TMP4]], i32 3
++// CHECK:   ret <4 x i32> [[VLD1_LANE]]
+ uint32x4_t test_vld1q_lane_u32(uint32_t  *a, uint32x4_t b) {
+   return vld1q_lane_u32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i64> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i64, i64* [[TMP3]], align 8
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <2 x i64> [[TMP2]], i64 [[TMP4]], i32 1
+-// CHECK-NEXT:    ret <2 x i64> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i64> @test_vld1q_lane_u64(i64* %a, <2 x i64> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP4:%.*]] = load i64, i64* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <2 x i64> [[TMP2]], i64 [[TMP4]], i32 1
++// CHECK:   ret <2 x i64> [[VLD1_LANE]]
+ uint64x2_t test_vld1q_lane_u64(uint64_t  *a, uint64x2_t b) {
+   return vld1q_lane_u64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <16 x i8> [[B:%.*]], i8 [[TMP0]], i32 15
+-// CHECK-NEXT:    ret <16 x i8> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <16 x i8> @test_vld1q_lane_s8(i8* %a, <16 x i8> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <16 x i8> %b, i8 [[TMP0]], i32 15
++// CHECK:   ret <16 x i8> [[VLD1_LANE]]
+ int8x16_t test_vld1q_lane_s8(int8_t  *a, int8x16_t b) {
+   return vld1q_lane_s8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <8 x i16> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i16, i16* [[TMP3]], align 2
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <8 x i16> [[TMP2]], i16 [[TMP4]], i32 7
+-// CHECK-NEXT:    ret <8 x i16> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i16> @test_vld1q_lane_s16(i16* %a, <8 x i16> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP4:%.*]] = load i16, i16* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <8 x i16> [[TMP2]], i16 [[TMP4]], i32 7
++// CHECK:   ret <8 x i16> [[VLD1_LANE]]
+ int16x8_t test_vld1q_lane_s16(int16_t  *a, int16x8_t b) {
+   return vld1q_lane_s16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i32> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i32, i32* [[TMP3]], align 4
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <4 x i32> [[TMP2]], i32 [[TMP4]], i32 3
+-// CHECK-NEXT:    ret <4 x i32> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i32> @test_vld1q_lane_s32(i32* %a, <4 x i32> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   [[TMP4:%.*]] = load i32, i32* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <4 x i32> [[TMP2]], i32 [[TMP4]], i32 3
++// CHECK:   ret <4 x i32> [[VLD1_LANE]]
+ int32x4_t test_vld1q_lane_s32(int32_t  *a, int32x4_t b) {
+   return vld1q_lane_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i64> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i64, i64* [[TMP3]], align 8
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <2 x i64> [[TMP2]], i64 [[TMP4]], i32 1
+-// CHECK-NEXT:    ret <2 x i64> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i64> @test_vld1q_lane_s64(i64* %a, <2 x i64> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP4:%.*]] = load i64, i64* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <2 x i64> [[TMP2]], i64 [[TMP4]], i32 1
++// CHECK:   ret <2 x i64> [[VLD1_LANE]]
+ int64x2_t test_vld1q_lane_s64(int64_t  *a, int64x2_t b) {
+   return vld1q_lane_s64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <8 x half> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x half>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to half*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load half, half* [[TMP3]], align 2
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <8 x half> [[TMP2]], half [[TMP4]], i32 7
+-// CHECK-NEXT:    ret <8 x half> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x half> @test_vld1q_lane_f16(half* %a, <8 x half> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <8 x half> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x half>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to half*
++// CHECK:   [[TMP4:%.*]] = load half, half* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <8 x half> [[TMP2]], half [[TMP4]], i32 7
++// CHECK:   ret <8 x half> [[VLD1_LANE]]
+ float16x8_t test_vld1q_lane_f16(float16_t  *a, float16x8_t b) {
+   return vld1q_lane_f16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x float> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to float*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load float, float* [[TMP3]], align 4
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <4 x float> [[TMP2]], float [[TMP4]], i32 3
+-// CHECK-NEXT:    ret <4 x float> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x float> @test_vld1q_lane_f32(float* %a, <4 x float> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to float*
++// CHECK:   [[TMP4:%.*]] = load float, float* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <4 x float> [[TMP2]], float [[TMP4]], i32 3
++// CHECK:   ret <4 x float> [[VLD1_LANE]]
+ float32x4_t test_vld1q_lane_f32(float32_t  *a, float32x4_t b) {
+   return vld1q_lane_f32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x double> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to double*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load double, double* [[TMP3]], align 8
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <2 x double> [[TMP2]], double [[TMP4]], i32 1
+-// CHECK-NEXT:    ret <2 x double> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x double> @test_vld1q_lane_f64(double* %a, <2 x double> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to double*
++// CHECK:   [[TMP4:%.*]] = load double, double* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <2 x double> [[TMP2]], double [[TMP4]], i32 1
++// CHECK:   ret <2 x double> [[VLD1_LANE]]
+ float64x2_t test_vld1q_lane_f64(float64_t  *a, float64x2_t b) {
+   return vld1q_lane_f64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <16 x i8> [[B:%.*]], i8 [[TMP0]], i32 15
+-// CHECK-NEXT:    ret <16 x i8> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <16 x i8> @test_vld1q_lane_p8(i8* %a, <16 x i8> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <16 x i8> %b, i8 [[TMP0]], i32 15
++// CHECK:   ret <16 x i8> [[VLD1_LANE]]
+ poly8x16_t test_vld1q_lane_p8(poly8_t  *a, poly8x16_t b) {
+   return vld1q_lane_p8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <8 x i16> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i16, i16* [[TMP3]], align 2
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <8 x i16> [[TMP2]], i16 [[TMP4]], i32 7
+-// CHECK-NEXT:    ret <8 x i16> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i16> @test_vld1q_lane_p16(i16* %a, <8 x i16> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP4:%.*]] = load i16, i16* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <8 x i16> [[TMP2]], i16 [[TMP4]], i32 7
++// CHECK:   ret <8 x i16> [[VLD1_LANE]]
+ poly16x8_t test_vld1q_lane_p16(poly16_t  *a, poly16x8_t b) {
+   return vld1q_lane_p16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld1q_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i64> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i64, i64* [[TMP3]], align 8
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <2 x i64> [[TMP2]], i64 [[TMP4]], i32 1
+-// CHECK-NEXT:    ret <2 x i64> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i64> @test_vld1q_lane_p64(i64* %a, <2 x i64> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP4:%.*]] = load i64, i64* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <2 x i64> [[TMP2]], i64 [[TMP4]], i32 1
++// CHECK:   ret <2 x i64> [[VLD1_LANE]]
+ poly64x2_t test_vld1q_lane_p64(poly64_t  *a, poly64x2_t b) {
+   return vld1q_lane_p64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <8 x i8> [[B:%.*]], i8 [[TMP0]], i32 7
+-// CHECK-NEXT:    ret <8 x i8> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i8> @test_vld1_lane_u8(i8* %a, <8 x i8> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <8 x i8> %b, i8 [[TMP0]], i32 7
++// CHECK:   ret <8 x i8> [[VLD1_LANE]]
+ uint8x8_t test_vld1_lane_u8(uint8_t  *a, uint8x8_t b) {
+   return vld1_lane_u8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i16> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i16, i16* [[TMP3]], align 2
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <4 x i16> [[TMP2]], i16 [[TMP4]], i32 3
+-// CHECK-NEXT:    ret <4 x i16> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i16> @test_vld1_lane_u16(i16* %a, <4 x i16> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP4:%.*]] = load i16, i16* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <4 x i16> [[TMP2]], i16 [[TMP4]], i32 3
++// CHECK:   ret <4 x i16> [[VLD1_LANE]]
+ uint16x4_t test_vld1_lane_u16(uint16_t  *a, uint16x4_t b) {
+   return vld1_lane_u16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i32> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i32, i32* [[TMP3]], align 4
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <2 x i32> [[TMP2]], i32 [[TMP4]], i32 1
+-// CHECK-NEXT:    ret <2 x i32> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i32> @test_vld1_lane_u32(i32* %a, <2 x i32> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   [[TMP4:%.*]] = load i32, i32* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <2 x i32> [[TMP2]], i32 [[TMP4]], i32 1
++// CHECK:   ret <2 x i32> [[VLD1_LANE]]
+ uint32x2_t test_vld1_lane_u32(uint32_t  *a, uint32x2_t b) {
+   return vld1_lane_u32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i64, i64* [[TMP3]], align 8
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <1 x i64> [[TMP2]], i64 [[TMP4]], i32 0
+-// CHECK-NEXT:    ret <1 x i64> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x i64> @test_vld1_lane_u64(i64* %a, <1 x i64> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP4:%.*]] = load i64, i64* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <1 x i64> [[TMP2]], i64 [[TMP4]], i32 0
++// CHECK:   ret <1 x i64> [[VLD1_LANE]]
+ uint64x1_t test_vld1_lane_u64(uint64_t  *a, uint64x1_t b) {
+   return vld1_lane_u64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <8 x i8> [[B:%.*]], i8 [[TMP0]], i32 7
+-// CHECK-NEXT:    ret <8 x i8> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i8> @test_vld1_lane_s8(i8* %a, <8 x i8> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <8 x i8> %b, i8 [[TMP0]], i32 7
++// CHECK:   ret <8 x i8> [[VLD1_LANE]]
+ int8x8_t test_vld1_lane_s8(int8_t  *a, int8x8_t b) {
+   return vld1_lane_s8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i16> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i16, i16* [[TMP3]], align 2
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <4 x i16> [[TMP2]], i16 [[TMP4]], i32 3
+-// CHECK-NEXT:    ret <4 x i16> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i16> @test_vld1_lane_s16(i16* %a, <4 x i16> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP4:%.*]] = load i16, i16* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <4 x i16> [[TMP2]], i16 [[TMP4]], i32 3
++// CHECK:   ret <4 x i16> [[VLD1_LANE]]
+ int16x4_t test_vld1_lane_s16(int16_t  *a, int16x4_t b) {
+   return vld1_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i32> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i32, i32* [[TMP3]], align 4
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <2 x i32> [[TMP2]], i32 [[TMP4]], i32 1
+-// CHECK-NEXT:    ret <2 x i32> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i32> @test_vld1_lane_s32(i32* %a, <2 x i32> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   [[TMP4:%.*]] = load i32, i32* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <2 x i32> [[TMP2]], i32 [[TMP4]], i32 1
++// CHECK:   ret <2 x i32> [[VLD1_LANE]]
+ int32x2_t test_vld1_lane_s32(int32_t  *a, int32x2_t b) {
+   return vld1_lane_s32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i64, i64* [[TMP3]], align 8
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <1 x i64> [[TMP2]], i64 [[TMP4]], i32 0
+-// CHECK-NEXT:    ret <1 x i64> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x i64> @test_vld1_lane_s64(i64* %a, <1 x i64> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP4:%.*]] = load i64, i64* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <1 x i64> [[TMP2]], i64 [[TMP4]], i32 0
++// CHECK:   ret <1 x i64> [[VLD1_LANE]]
+ int64x1_t test_vld1_lane_s64(int64_t  *a, int64x1_t b) {
+   return vld1_lane_s64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x half> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x half>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to half*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load half, half* [[TMP3]], align 2
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <4 x half> [[TMP2]], half [[TMP4]], i32 3
+-// CHECK-NEXT:    ret <4 x half> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x half> @test_vld1_lane_f16(half* %a, <4 x half> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x half> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x half>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to half*
++// CHECK:   [[TMP4:%.*]] = load half, half* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <4 x half> [[TMP2]], half [[TMP4]], i32 3
++// CHECK:   ret <4 x half> [[VLD1_LANE]]
+ float16x4_t test_vld1_lane_f16(float16_t  *a, float16x4_t b) {
+   return vld1_lane_f16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x float> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to float*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load float, float* [[TMP3]], align 4
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <2 x float> [[TMP2]], float [[TMP4]], i32 1
+-// CHECK-NEXT:    ret <2 x float> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x float> @test_vld1_lane_f32(float* %a, <2 x float> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to float*
++// CHECK:   [[TMP4:%.*]] = load float, float* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <2 x float> [[TMP2]], float [[TMP4]], i32 1
++// CHECK:   ret <2 x float> [[VLD1_LANE]]
+ float32x2_t test_vld1_lane_f32(float32_t  *a, float32x2_t b) {
+   return vld1_lane_f32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x double> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to double*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load double, double* [[TMP3]], align 8
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <1 x double> [[TMP2]], double [[TMP4]], i32 0
+-// CHECK-NEXT:    ret <1 x double> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vld1_lane_f64(double* %a, <1 x double> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to double*
++// CHECK:   [[TMP4:%.*]] = load double, double* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <1 x double> [[TMP2]], double [[TMP4]], i32 0
++// CHECK:   ret <1 x double> [[VLD1_LANE]]
+ float64x1_t test_vld1_lane_f64(float64_t  *a, float64x1_t b) {
+   return vld1_lane_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = load i8, i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <8 x i8> [[B:%.*]], i8 [[TMP0]], i32 7
+-// CHECK-NEXT:    ret <8 x i8> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i8> @test_vld1_lane_p8(i8* %a, <8 x i8> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = load i8, i8* %a
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <8 x i8> %b, i8 [[TMP0]], i32 7
++// CHECK:   ret <8 x i8> [[VLD1_LANE]]
+ poly8x8_t test_vld1_lane_p8(poly8_t  *a, poly8x8_t b) {
+   return vld1_lane_p8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i16> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i16, i16* [[TMP3]], align 2
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <4 x i16> [[TMP2]], i16 [[TMP4]], i32 3
+-// CHECK-NEXT:    ret <4 x i16> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i16> @test_vld1_lane_p16(i16* %a, <4 x i16> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   [[TMP4:%.*]] = load i16, i16* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <4 x i16> [[TMP2]], i16 [[TMP4]], i32 3
++// CHECK:   ret <4 x i16> [[VLD1_LANE]]
+ poly16x4_t test_vld1_lane_p16(poly16_t  *a, poly16x4_t b) {
+   return vld1_lane_p16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld1_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    [[TMP4:%.*]] = load i64, i64* [[TMP3]], align 8
+-// CHECK-NEXT:    [[VLD1_LANE:%.*]] = insertelement <1 x i64> [[TMP2]], i64 [[TMP4]], i32 0
+-// CHECK-NEXT:    ret <1 x i64> [[VLD1_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x i64> @test_vld1_lane_p64(i64* %a, <1 x i64> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
++// CHECK:   [[TMP3:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   [[TMP4:%.*]] = load i64, i64* [[TMP3]]
++// CHECK:   [[VLD1_LANE:%.*]] = insertelement <1 x i64> [[TMP2]], i64 [[TMP4]], i32 0
++// CHECK:   ret <1 x i64> [[VLD1_LANE]]
+ poly64x1_t test_vld1_lane_p64(poly64_t  *a, poly64x1_t b) {
+   return vld1_lane_p64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT8X16X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[SRC:%.*]] = alloca [[STRUCT_INT8X16X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X16X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT8X16X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X2_T]], %struct.int8x16x2_t* [[SRC]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <16 x i8>] [[SRC_COERCE:%.*]], [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x16x2_t* [[SRC]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int8x16x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X2_T]], %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X2_T]], %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* [[PTR:%.*]])
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8> }*
+-// CHECK-NEXT:    store { <16 x i8>, <16 x i8> } [[VLD2_LANE]], { <16 x i8>, <16 x i8> }* [[TMP5]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast %struct.int8x16x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.int8x16x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP6]], i8* align 16 [[TMP7]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP8:%.*]] = load [[STRUCT_INT8X16X2_T]], %struct.int8x16x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT8X16X2_T]] [[TMP8]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int8x16x2_t @test_vld2q_lane_s8(i8* %ptr, [2 x <16 x i8>] %src.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x2_t, align 16
++// CHECK:   [[SRC:%.*]] = alloca %struct.int8x16x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int8x16x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[SRC]], i32 0, i32 0
++// CHECK:   store [2 x <16 x i8>] [[SRC]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x2_t* [[SRC]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x16x2_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VLD2_LANE:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* %ptr)
++// CHECK:   [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8> }*
++// CHECK:   store { <16 x i8>, <16 x i8> } [[VLD2_LANE]], { <16 x i8>, <16 x i8> }* [[TMP5]]
++// CHECK:   [[TMP6:%.*]] = bitcast %struct.int8x16x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.int8x16x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP6]], i8* align 16 [[TMP7]], i64 32, i1 false)
++// CHECK:   [[TMP8:%.*]] = load %struct.int8x16x2_t, %struct.int8x16x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int8x16x2_t [[TMP8]]
+ int8x16x2_t test_vld2q_lane_s8(int8_t const * ptr, int8x16x2_t src) {
+   return vld2q_lane_s8(ptr, src, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT8X16X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[SRC:%.*]] = alloca [[STRUCT_UINT8X16X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X16X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT8X16X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X2_T]], %struct.uint8x16x2_t* [[SRC]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <16 x i8>] [[SRC_COERCE:%.*]], [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x16x2_t* [[SRC]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X2_T]], %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X2_T]], %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* [[PTR:%.*]])
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8> }*
+-// CHECK-NEXT:    store { <16 x i8>, <16 x i8> } [[VLD2_LANE]], { <16 x i8>, <16 x i8> }* [[TMP5]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast %struct.uint8x16x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP6]], i8* align 16 [[TMP7]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP8:%.*]] = load [[STRUCT_UINT8X16X2_T]], %struct.uint8x16x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT8X16X2_T]] [[TMP8]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint8x16x2_t @test_vld2q_lane_u8(i8* %ptr, [2 x <16 x i8>] %src.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x2_t, align 16
++// CHECK:   [[SRC:%.*]] = alloca %struct.uint8x16x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x16x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[SRC]], i32 0, i32 0
++// CHECK:   store [2 x <16 x i8>] [[SRC]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x2_t* [[SRC]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VLD2_LANE:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* %ptr)
++// CHECK:   [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8> }*
++// CHECK:   store { <16 x i8>, <16 x i8> } [[VLD2_LANE]], { <16 x i8>, <16 x i8> }* [[TMP5]]
++// CHECK:   [[TMP6:%.*]] = bitcast %struct.uint8x16x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint8x16x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP6]], i8* align 16 [[TMP7]], i64 32, i1 false)
++// CHECK:   [[TMP8:%.*]] = load %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint8x16x2_t [[TMP8]]
+ uint8x16x2_t test_vld2q_lane_u8(uint8_t const * ptr, uint8x16x2_t src) {
+   return vld2q_lane_u8(ptr, src, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY8X16X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[SRC:%.*]] = alloca [[STRUCT_POLY8X16X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X16X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY8X16X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X2_T]], %struct.poly8x16x2_t* [[SRC]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <16 x i8>] [[SRC_COERCE:%.*]], [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x16x2_t* [[SRC]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X2_T]], %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X2_T]], %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* [[PTR:%.*]])
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8> }*
+-// CHECK-NEXT:    store { <16 x i8>, <16 x i8> } [[VLD2_LANE]], { <16 x i8>, <16 x i8> }* [[TMP5]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast %struct.poly8x16x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP6]], i8* align 16 [[TMP7]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP8:%.*]] = load [[STRUCT_POLY8X16X2_T]], %struct.poly8x16x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY8X16X2_T]] [[TMP8]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly8x16x2_t @test_vld2q_lane_p8(i8* %ptr, [2 x <16 x i8>] %src.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x2_t, align 16
++// CHECK:   [[SRC:%.*]] = alloca %struct.poly8x16x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x16x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[SRC]], i32 0, i32 0
++// CHECK:   store [2 x <16 x i8>] [[SRC]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x2_t* [[SRC]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VLD2_LANE:%.*]] = call { <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld2lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* %ptr)
++// CHECK:   [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8> }*
++// CHECK:   store { <16 x i8>, <16 x i8> } [[VLD2_LANE]], { <16 x i8>, <16 x i8> }* [[TMP5]]
++// CHECK:   [[TMP6:%.*]] = bitcast %struct.poly8x16x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.poly8x16x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP6]], i8* align 16 [[TMP7]], i64 32, i1 false)
++// CHECK:   [[TMP8:%.*]] = load %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly8x16x2_t [[TMP8]]
+ poly8x16x2_t test_vld2q_lane_p8(poly8_t const * ptr, poly8x16x2_t src) {
+   return vld2q_lane_p8(ptr, src, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT8X16X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[SRC:%.*]] = alloca [[STRUCT_INT8X16X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X16X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT8X16X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X3_T]], %struct.int8x16x3_t* [[SRC]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <16 x i8>] [[SRC_COERCE:%.*]], [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x16x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x16x3_t* [[SRC]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int8x16x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X3_T]], %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X3_T]], %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X3_T]], %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* [[PTR:%.*]])
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
+-// CHECK-NEXT:    store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD3_LANE]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP6]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.int8x16x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.int8x16x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP7]], i8* align 16 [[TMP8]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP9:%.*]] = load [[STRUCT_INT8X16X3_T]], %struct.int8x16x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT8X16X3_T]] [[TMP9]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int8x16x3_t @test_vld3q_lane_s8(i8* %ptr, [3 x <16 x i8>] %src.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x3_t, align 16
++// CHECK:   [[SRC:%.*]] = alloca %struct.int8x16x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int8x16x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[SRC]], i32 0, i32 0
++// CHECK:   store [3 x <16 x i8>] [[SRC]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x3_t* [[SRC]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x16x3_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   [[VLD3_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* %ptr)
++// CHECK:   [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
++// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD3_LANE]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP6]]
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.int8x16x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.int8x16x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP7]], i8* align 16 [[TMP8]], i64 48, i1 false)
++// CHECK:   [[TMP9:%.*]] = load %struct.int8x16x3_t, %struct.int8x16x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int8x16x3_t [[TMP9]]
+ int8x16x3_t test_vld3q_lane_s8(int8_t const * ptr, int8x16x3_t src) {
+   return vld3q_lane_s8(ptr, src, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT8X16X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[SRC:%.*]] = alloca [[STRUCT_UINT8X16X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X16X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT8X16X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X3_T]], %struct.uint8x16x3_t* [[SRC]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <16 x i8>] [[SRC_COERCE:%.*]], [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x16x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x16x3_t* [[SRC]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint8x16x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X3_T]], %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X3_T]], %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X3_T]], %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* [[PTR:%.*]])
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
+-// CHECK-NEXT:    store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD3_LANE]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP6]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.uint8x16x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.uint8x16x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP7]], i8* align 16 [[TMP8]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP9:%.*]] = load [[STRUCT_UINT8X16X3_T]], %struct.uint8x16x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT8X16X3_T]] [[TMP9]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint8x16x3_t @test_vld3q_lane_u8(i8* %ptr, [3 x <16 x i8>] %src.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x3_t, align 16
++// CHECK:   [[SRC:%.*]] = alloca %struct.uint8x16x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x16x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[SRC]], i32 0, i32 0
++// CHECK:   store [3 x <16 x i8>] [[SRC]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x3_t* [[SRC]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x16x3_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   [[VLD3_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* %ptr)
++// CHECK:   [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
++// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD3_LANE]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP6]]
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint8x16x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint8x16x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP7]], i8* align 16 [[TMP8]], i64 48, i1 false)
++// CHECK:   [[TMP9:%.*]] = load %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint8x16x3_t [[TMP9]]
+ uint8x16x3_t test_vld3q_lane_u8(uint8_t const * ptr, uint8x16x3_t src) {
+   return vld3q_lane_u8(ptr, src, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT16X8X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X2_T]], %struct.uint16x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i16>] [[B_COERCE:%.*]], [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X2_T]], %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X2_T]], %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2lane.v8i16.p0i8(<8 x i16> [[TMP8]], <8 x i16> [[TMP9]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16> }*
+-// CHECK-NEXT:    store { <8 x i16>, <8 x i16> } [[VLD2_LANE]], { <8 x i16>, <8 x i16> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.uint16x8x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_UINT16X8X2_T]], %struct.uint16x8x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT16X8X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint16x8x2_t @test_vld2q_lane_u16(i16* %a, [2 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x8x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2lane.v8i16.p0i8(<8 x i16> [[TMP8]], <8 x i16> [[TMP9]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16> }*
++// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD2_LANE]], { <8 x i16>, <8 x i16> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.uint16x8x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.uint16x8x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint16x8x2_t [[TMP13]]
+ uint16x8x2_t test_vld2q_lane_u16(uint16_t  *a, uint16x8x2_t b) {
+   return vld2q_lane_u16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT32X4X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X2_T]], %struct.uint32x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x i32>] [[B_COERCE:%.*]], [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X2_T]], %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X2_T]], %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2lane.v4i32.p0i8(<4 x i32> [[TMP8]], <4 x i32> [[TMP9]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32> }*
+-// CHECK-NEXT:    store { <4 x i32>, <4 x i32> } [[VLD2_LANE]], { <4 x i32>, <4 x i32> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.uint32x4x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_UINT32X4X2_T]], %struct.uint32x4x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT32X4X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint32x4x2_t @test_vld2q_lane_u32(i32* %a, [2 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x4x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x i32>] [[B]].coerce, [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2lane.v4i32.p0i8(<4 x i32> [[TMP8]], <4 x i32> [[TMP9]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32> }*
++// CHECK:   store { <4 x i32>, <4 x i32> } [[VLD2_LANE]], { <4 x i32>, <4 x i32> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.uint32x4x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.uint32x4x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint32x4x2_t [[TMP13]]
+ uint32x4x2_t test_vld2q_lane_u32(uint32_t  *a, uint32x4x2_t b) {
+   return vld2q_lane_u32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X2_T]], %struct.uint64x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x i64>] [[B_COERCE:%.*]], [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X2_T]], %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X2_T]], %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2lane.v2i64.p0i8(<2 x i64> [[TMP8]], <2 x i64> [[TMP9]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64> } [[VLD2_LANE]], { <2 x i64>, <2 x i64> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.uint64x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_UINT64X2X2_T]], %struct.uint64x2x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT64X2X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint64x2x2_t @test_vld2q_lane_u64(i64* %a, [2 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2lane.v2i64.p0i8(<2 x i64> [[TMP8]], <2 x i64> [[TMP9]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD2_LANE]], { <2 x i64>, <2 x i64> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.uint64x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.uint64x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint64x2x2_t [[TMP13]]
+ uint64x2x2_t test_vld2q_lane_u64(uint64_t  *a, uint64x2x2_t b) {
+   return vld2q_lane_u64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT16X8X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X2_T]], %struct.int16x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i16>] [[B_COERCE:%.*]], [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int16x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X2_T]], %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X2_T]], %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2lane.v8i16.p0i8(<8 x i16> [[TMP8]], <8 x i16> [[TMP9]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16> }*
+-// CHECK-NEXT:    store { <8 x i16>, <8 x i16> } [[VLD2_LANE]], { <8 x i16>, <8 x i16> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.int16x8x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.int16x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_INT16X8X2_T]], %struct.int16x8x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT16X8X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int16x8x2_t @test_vld2q_lane_s16(i16* %a, [2 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.int16x8x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int16x8x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int16x8x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2lane.v8i16.p0i8(<8 x i16> [[TMP8]], <8 x i16> [[TMP9]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16> }*
++// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD2_LANE]], { <8 x i16>, <8 x i16> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.int16x8x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.int16x8x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.int16x8x2_t, %struct.int16x8x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int16x8x2_t [[TMP13]]
+ int16x8x2_t test_vld2q_lane_s16(int16_t  *a, int16x8x2_t b) {
+   return vld2q_lane_s16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT32X4X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X2_T]], %struct.int32x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x i32>] [[B_COERCE:%.*]], [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int32x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X2_T]], %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X2_T]], %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2lane.v4i32.p0i8(<4 x i32> [[TMP8]], <4 x i32> [[TMP9]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32> }*
+-// CHECK-NEXT:    store { <4 x i32>, <4 x i32> } [[VLD2_LANE]], { <4 x i32>, <4 x i32> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.int32x4x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.int32x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_INT32X4X2_T]], %struct.int32x4x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT32X4X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int32x4x2_t @test_vld2q_lane_s32(i32* %a, [2 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.int32x4x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int32x4x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x i32>] [[B]].coerce, [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int32x4x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld2lane.v4i32.p0i8(<4 x i32> [[TMP8]], <4 x i32> [[TMP9]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32> }*
++// CHECK:   store { <4 x i32>, <4 x i32> } [[VLD2_LANE]], { <4 x i32>, <4 x i32> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.int32x4x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.int32x4x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.int32x4x2_t, %struct.int32x4x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int32x4x2_t [[TMP13]]
+ int32x4x2_t test_vld2q_lane_s32(int32_t  *a, int32x4x2_t b) {
+   return vld2q_lane_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X2_T]], %struct.int64x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x i64>] [[B_COERCE:%.*]], [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X2_T]], %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X2_T]], %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2lane.v2i64.p0i8(<2 x i64> [[TMP8]], <2 x i64> [[TMP9]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64> } [[VLD2_LANE]], { <2 x i64>, <2 x i64> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.int64x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_INT64X2X2_T]], %struct.int64x2x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT64X2X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int64x2x2_t @test_vld2q_lane_s64(i64* %a, [2 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.int64x2x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2lane.v2i64.p0i8(<2 x i64> [[TMP8]], <2 x i64> [[TMP9]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD2_LANE]], { <2 x i64>, <2 x i64> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.int64x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.int64x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.int64x2x2_t, %struct.int64x2x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int64x2x2_t [[TMP13]]
+ int64x2x2_t test_vld2q_lane_s64(int64_t  *a, int64x2x2_t b) {
+   return vld2q_lane_s64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT16X8X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X2_T]], %struct.float16x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x half>] [[B_COERCE:%.*]], [2 x <8 x half>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float16x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X2_T]], %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x half> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X2_T]], %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x half> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x half>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x half>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <8 x half>, <8 x half> } @llvm.aarch64.neon.ld2lane.v8f16.p0i8(<8 x half> [[TMP8]], <8 x half> [[TMP9]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <8 x half>, <8 x half> }*
+-// CHECK-NEXT:    store { <8 x half>, <8 x half> } [[VLD2_LANE]], { <8 x half>, <8 x half> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.float16x8x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.float16x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_FLOAT16X8X2_T]], %struct.float16x8x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT16X8X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float16x8x2_t @test_vld2q_lane_f16(half* %a, [2 x <8 x half>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x8x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.float16x8x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float16x8x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x half>] [[B]].coerce, [2 x <8 x half>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float16x8x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x half> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x half> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x half>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x half>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <8 x half>, <8 x half> } @llvm.aarch64.neon.ld2lane.v8f16.p0i8(<8 x half> [[TMP8]], <8 x half> [[TMP9]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <8 x half>, <8 x half> }*
++// CHECK:   store { <8 x half>, <8 x half> } [[VLD2_LANE]], { <8 x half>, <8 x half> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.float16x8x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.float16x8x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.float16x8x2_t, %struct.float16x8x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float16x8x2_t [[TMP13]]
+ float16x8x2_t test_vld2q_lane_f16(float16_t  *a, float16x8x2_t b) {
+   return vld2q_lane_f16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT32X4X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X2_T]], %struct.float32x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x float>] [[B_COERCE:%.*]], [2 x <4 x float>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float32x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X2_T]], %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x float> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X2_T]], %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x float> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x float>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x float>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2lane.v4f32.p0i8(<4 x float> [[TMP8]], <4 x float> [[TMP9]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x float>, <4 x float> }*
+-// CHECK-NEXT:    store { <4 x float>, <4 x float> } [[VLD2_LANE]], { <4 x float>, <4 x float> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.float32x4x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.float32x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_FLOAT32X4X2_T]], %struct.float32x4x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT32X4X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float32x4x2_t @test_vld2q_lane_f32(float* %a, [2 x <4 x float>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.float32x4x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float32x4x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x float>] [[B]].coerce, [2 x <4 x float>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float32x4x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x float> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x float> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x float>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x float>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <4 x float>, <4 x float> } @llvm.aarch64.neon.ld2lane.v4f32.p0i8(<4 x float> [[TMP8]], <4 x float> [[TMP9]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x float>, <4 x float> }*
++// CHECK:   store { <4 x float>, <4 x float> } [[VLD2_LANE]], { <4 x float>, <4 x float> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.float32x4x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.float32x4x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.float32x4x2_t, %struct.float32x4x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float32x4x2_t [[TMP13]]
+ float32x4x2_t test_vld2q_lane_f32(float32_t  *a, float32x4x2_t b) {
+   return vld2q_lane_f32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X2_T]], %struct.float64x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x double>] [[B_COERCE:%.*]], [2 x <2 x double>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X2_T]], %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x double> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X2_T]], %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x double> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x double>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x double>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2lane.v2f64.p0i8(<2 x double> [[TMP8]], <2 x double> [[TMP9]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x double>, <2 x double> }*
+-// CHECK-NEXT:    store { <2 x double>, <2 x double> } [[VLD2_LANE]], { <2 x double>, <2 x double> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.float64x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_FLOAT64X2X2_T]], %struct.float64x2x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X2X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x2x2_t @test_vld2q_lane_f64(double* %a, [2 x <2 x double>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.float64x2x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x double>] [[B]].coerce, [2 x <2 x double>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x double> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x double> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x double>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x double>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <2 x double>, <2 x double> } @llvm.aarch64.neon.ld2lane.v2f64.p0i8(<2 x double> [[TMP8]], <2 x double> [[TMP9]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x double>, <2 x double> }*
++// CHECK:   store { <2 x double>, <2 x double> } [[VLD2_LANE]], { <2 x double>, <2 x double> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.float64x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.float64x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.float64x2x2_t, %struct.float64x2x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float64x2x2_t [[TMP13]]
+ float64x2x2_t test_vld2q_lane_f64(float64_t  *a, float64x2x2_t b) {
+   return vld2q_lane_f64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY16X8X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X8X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X8X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY16X8X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X2_T]], %struct.poly16x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i16>] [[B_COERCE:%.*]], [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X2_T]], %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X2_T]], %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2lane.v8i16.p0i8(<8 x i16> [[TMP8]], <8 x i16> [[TMP9]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16> }*
+-// CHECK-NEXT:    store { <8 x i16>, <8 x i16> } [[VLD2_LANE]], { <8 x i16>, <8 x i16> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.poly16x8x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_POLY16X8X2_T]], %struct.poly16x8x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY16X8X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly16x8x2_t @test_vld2q_lane_p16(i16* %a, [2 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x8x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld2lane.v8i16.p0i8(<8 x i16> [[TMP8]], <8 x i16> [[TMP9]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16> }*
++// CHECK:   store { <8 x i16>, <8 x i16> } [[VLD2_LANE]], { <8 x i16>, <8 x i16> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.poly16x8x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.poly16x8x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly16x8x2_t [[TMP13]]
+ poly16x8x2_t test_vld2q_lane_p16(poly16_t  *a, poly16x8x2_t b) {
+   return vld2q_lane_p16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld2q_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X2X2_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X2X2_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X2X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X2_T]], %struct.poly64x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x i64>] [[B_COERCE:%.*]], [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X2_T]], %struct.poly64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X2_T]], %struct.poly64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2lane.v2i64.p0i8(<2 x i64> [[TMP8]], <2 x i64> [[TMP9]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64> } [[VLD2_LANE]], { <2 x i64>, <2 x i64> }* [[TMP10]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.poly64x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.poly64x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_POLY64X2X2_T]], %struct.poly64x2x2_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X2X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x2x2_t @test_vld2q_lane_p64(i64* %a, [2 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x2x2_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x2x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x2x2_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x2x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly64x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld2lane.v2i64.p0i8(<2 x i64> [[TMP8]], <2 x i64> [[TMP9]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64> } [[VLD2_LANE]], { <2 x i64>, <2 x i64> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.poly64x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.poly64x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP11]], i8* align 16 [[TMP12]], i64 32, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly64x2x2_t [[TMP13]]
+ poly64x2x2_t test_vld2q_lane_p64(poly64_t  *a, poly64x2x2_t b) {
+   return vld2q_lane_p64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT8X8X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT8X8X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X8X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT8X8X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X2_T]], %struct.uint8x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i8>] [[B_COERCE:%.*]], [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X2_T]], %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X2_T]], %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8> }*
+-// CHECK-NEXT:    store { <8 x i8>, <8 x i8> } [[VLD2_LANE]], { <8 x i8>, <8 x i8> }* [[TMP5]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast %struct.uint8x8x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP6]], i8* align 8 [[TMP7]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP8:%.*]] = load [[STRUCT_UINT8X8X2_T]], %struct.uint8x8x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT8X8X2_T]] [[TMP8]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint8x8x2_t @test_vld2_lane_u8(i8* %a, [2 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x8x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VLD2_LANE:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* %a)
++// CHECK:   [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8> }*
++// CHECK:   store { <8 x i8>, <8 x i8> } [[VLD2_LANE]], { <8 x i8>, <8 x i8> }* [[TMP5]]
++// CHECK:   [[TMP6:%.*]] = bitcast %struct.uint8x8x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint8x8x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP6]], i8* align 8 [[TMP7]], i64 16, i1 false)
++// CHECK:   [[TMP8:%.*]] = load %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint8x8x2_t [[TMP8]]
+ uint8x8x2_t test_vld2_lane_u8(uint8_t  *a, uint8x8x2_t b) {
+   return vld2_lane_u8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT16X4X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X2_T]], %struct.uint16x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x i16>] [[B_COERCE:%.*]], [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X2_T]], %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X2_T]], %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2lane.v4i16.p0i8(<4 x i16> [[TMP8]], <4 x i16> [[TMP9]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16> }*
+-// CHECK-NEXT:    store { <4 x i16>, <4 x i16> } [[VLD2_LANE]], { <4 x i16>, <4 x i16> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.uint16x4x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_UINT16X4X2_T]], %struct.uint16x4x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT16X4X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint16x4x2_t @test_vld2_lane_u16(i16* %a, [2 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x4x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2lane.v4i16.p0i8(<4 x i16> [[TMP8]], <4 x i16> [[TMP9]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16> }*
++// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD2_LANE]], { <4 x i16>, <4 x i16> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.uint16x4x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.uint16x4x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint16x4x2_t [[TMP13]]
+ uint16x4x2_t test_vld2_lane_u16(uint16_t  *a, uint16x4x2_t b) {
+   return vld2_lane_u16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT32X2X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X2_T]], %struct.uint32x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x i32>] [[B_COERCE:%.*]], [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X2_T]], %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X2_T]], %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2lane.v2i32.p0i8(<2 x i32> [[TMP8]], <2 x i32> [[TMP9]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32> }*
+-// CHECK-NEXT:    store { <2 x i32>, <2 x i32> } [[VLD2_LANE]], { <2 x i32>, <2 x i32> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.uint32x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_UINT32X2X2_T]], %struct.uint32x2x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT32X2X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint32x2x2_t @test_vld2_lane_u32(i32* %a, [2 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x2x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x i32>] [[B]].coerce, [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2lane.v2i32.p0i8(<2 x i32> [[TMP8]], <2 x i32> [[TMP9]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32> }*
++// CHECK:   store { <2 x i32>, <2 x i32> } [[VLD2_LANE]], { <2 x i32>, <2 x i32> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.uint32x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.uint32x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint32x2x2_t [[TMP13]]
+ uint32x2x2_t test_vld2_lane_u32(uint32_t  *a, uint32x2x2_t b) {
+   return vld2_lane_u32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT64X1X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X2_T]], %struct.uint64x1x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <1 x i64>] [[B_COERCE:%.*]], [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x1x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x1x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X2_T]], %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X2_T]], %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2lane.v1i64.p0i8(<1 x i64> [[TMP8]], <1 x i64> [[TMP9]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64> } [[VLD2_LANE]], { <1 x i64>, <1 x i64> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.uint64x1x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.uint64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_UINT64X1X2_T]], %struct.uint64x1x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT64X1X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint64x1x2_t @test_vld2_lane_u64(i64* %a, [2 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x1x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x1x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint64x1x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2lane.v1i64.p0i8(<1 x i64> [[TMP8]], <1 x i64> [[TMP9]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64> } [[VLD2_LANE]], { <1 x i64>, <1 x i64> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.uint64x1x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.uint64x1x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint64x1x2_t [[TMP13]]
+ uint64x1x2_t test_vld2_lane_u64(uint64_t  *a, uint64x1x2_t b) {
+   return vld2_lane_u64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT8X8X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT8X8X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X8X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT8X8X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X2_T]], %struct.int8x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i8>] [[B_COERCE:%.*]], [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int8x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X2_T]], %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X2_T]], %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8> }*
+-// CHECK-NEXT:    store { <8 x i8>, <8 x i8> } [[VLD2_LANE]], { <8 x i8>, <8 x i8> }* [[TMP5]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast %struct.int8x8x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.int8x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP6]], i8* align 8 [[TMP7]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP8:%.*]] = load [[STRUCT_INT8X8X2_T]], %struct.int8x8x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT8X8X2_T]] [[TMP8]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int8x8x2_t @test_vld2_lane_s8(i8* %a, [2 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int8x8x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int8x8x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x8x2_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VLD2_LANE:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* %a)
++// CHECK:   [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8> }*
++// CHECK:   store { <8 x i8>, <8 x i8> } [[VLD2_LANE]], { <8 x i8>, <8 x i8> }* [[TMP5]]
++// CHECK:   [[TMP6:%.*]] = bitcast %struct.int8x8x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.int8x8x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP6]], i8* align 8 [[TMP7]], i64 16, i1 false)
++// CHECK:   [[TMP8:%.*]] = load %struct.int8x8x2_t, %struct.int8x8x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int8x8x2_t [[TMP8]]
+ int8x8x2_t test_vld2_lane_s8(int8_t  *a, int8x8x2_t b) {
+   return vld2_lane_s8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT16X4X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X2_T]], %struct.int16x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x i16>] [[B_COERCE:%.*]], [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int16x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X2_T]], %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X2_T]], %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2lane.v4i16.p0i8(<4 x i16> [[TMP8]], <4 x i16> [[TMP9]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16> }*
+-// CHECK-NEXT:    store { <4 x i16>, <4 x i16> } [[VLD2_LANE]], { <4 x i16>, <4 x i16> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.int16x4x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.int16x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_INT16X4X2_T]], %struct.int16x4x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT16X4X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int16x4x2_t @test_vld2_lane_s16(i16* %a, [2 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int16x4x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int16x4x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int16x4x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2lane.v4i16.p0i8(<4 x i16> [[TMP8]], <4 x i16> [[TMP9]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16> }*
++// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD2_LANE]], { <4 x i16>, <4 x i16> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.int16x4x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.int16x4x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.int16x4x2_t, %struct.int16x4x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int16x4x2_t [[TMP13]]
+ int16x4x2_t test_vld2_lane_s16(int16_t  *a, int16x4x2_t b) {
+   return vld2_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT32X2X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X2_T]], %struct.int32x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x i32>] [[B_COERCE:%.*]], [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int32x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X2_T]], %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X2_T]], %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2lane.v2i32.p0i8(<2 x i32> [[TMP8]], <2 x i32> [[TMP9]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32> }*
+-// CHECK-NEXT:    store { <2 x i32>, <2 x i32> } [[VLD2_LANE]], { <2 x i32>, <2 x i32> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.int32x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.int32x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_INT32X2X2_T]], %struct.int32x2x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT32X2X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int32x2x2_t @test_vld2_lane_s32(i32* %a, [2 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int32x2x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int32x2x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x i32>] [[B]].coerce, [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int32x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld2lane.v2i32.p0i8(<2 x i32> [[TMP8]], <2 x i32> [[TMP9]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32> }*
++// CHECK:   store { <2 x i32>, <2 x i32> } [[VLD2_LANE]], { <2 x i32>, <2 x i32> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.int32x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.int32x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.int32x2x2_t, %struct.int32x2x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int32x2x2_t [[TMP13]]
+ int32x2x2_t test_vld2_lane_s32(int32_t  *a, int32x2x2_t b) {
+   return vld2_lane_s32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT64X1X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X2_T]], %struct.int64x1x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <1 x i64>] [[B_COERCE:%.*]], [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x1x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x1x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X2_T]], %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X2_T]], %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2lane.v1i64.p0i8(<1 x i64> [[TMP8]], <1 x i64> [[TMP9]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64> } [[VLD2_LANE]], { <1 x i64>, <1 x i64> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.int64x1x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.int64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_INT64X1X2_T]], %struct.int64x1x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT64X1X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int64x1x2_t @test_vld2_lane_s64(i64* %a, [2 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x1x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int64x1x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int64x1x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int64x1x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2lane.v1i64.p0i8(<1 x i64> [[TMP8]], <1 x i64> [[TMP9]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64> } [[VLD2_LANE]], { <1 x i64>, <1 x i64> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.int64x1x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.int64x1x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.int64x1x2_t, %struct.int64x1x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int64x1x2_t [[TMP13]]
+ int64x1x2_t test_vld2_lane_s64(int64_t  *a, int64x1x2_t b) {
+   return vld2_lane_s64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT16X4X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X2_T]], %struct.float16x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x half>] [[B_COERCE:%.*]], [2 x <4 x half>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float16x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X2_T]], %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x half> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X2_T]], %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x half> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x half>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x half>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <4 x half>, <4 x half> } @llvm.aarch64.neon.ld2lane.v4f16.p0i8(<4 x half> [[TMP8]], <4 x half> [[TMP9]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x half>, <4 x half> }*
+-// CHECK-NEXT:    store { <4 x half>, <4 x half> } [[VLD2_LANE]], { <4 x half>, <4 x half> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.float16x4x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.float16x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_FLOAT16X4X2_T]], %struct.float16x4x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT16X4X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float16x4x2_t @test_vld2_lane_f16(half* %a, [2 x <4 x half>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x4x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.float16x4x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float16x4x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x half>] [[B]].coerce, [2 x <4 x half>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float16x4x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x half> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x half> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x half>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x half>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <4 x half>, <4 x half> } @llvm.aarch64.neon.ld2lane.v4f16.p0i8(<4 x half> [[TMP8]], <4 x half> [[TMP9]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x half>, <4 x half> }*
++// CHECK:   store { <4 x half>, <4 x half> } [[VLD2_LANE]], { <4 x half>, <4 x half> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.float16x4x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.float16x4x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.float16x4x2_t, %struct.float16x4x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float16x4x2_t [[TMP13]]
+ float16x4x2_t test_vld2_lane_f16(float16_t  *a, float16x4x2_t b) {
+   return vld2_lane_f16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT32X2X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X2_T]], %struct.float32x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x float>] [[B_COERCE:%.*]], [2 x <2 x float>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float32x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X2_T]], %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x float> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X2_T]], %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x float> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x float>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x float>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2lane.v2f32.p0i8(<2 x float> [[TMP8]], <2 x float> [[TMP9]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x float>, <2 x float> }*
+-// CHECK-NEXT:    store { <2 x float>, <2 x float> } [[VLD2_LANE]], { <2 x float>, <2 x float> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.float32x2x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.float32x2x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_FLOAT32X2X2_T]], %struct.float32x2x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT32X2X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float32x2x2_t @test_vld2_lane_f32(float* %a, [2 x <2 x float>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.float32x2x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float32x2x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x float>] [[B]].coerce, [2 x <2 x float>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float32x2x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x float> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x float> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x float>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x float>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <2 x float>, <2 x float> } @llvm.aarch64.neon.ld2lane.v2f32.p0i8(<2 x float> [[TMP8]], <2 x float> [[TMP9]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <2 x float>, <2 x float> }*
++// CHECK:   store { <2 x float>, <2 x float> } [[VLD2_LANE]], { <2 x float>, <2 x float> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.float32x2x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.float32x2x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.float32x2x2_t, %struct.float32x2x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float32x2x2_t [[TMP13]]
+ float32x2x2_t test_vld2_lane_f32(float32_t  *a, float32x2x2_t b) {
+   return vld2_lane_f32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X1X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X2_T]], %struct.float64x1x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <1 x double>] [[B_COERCE:%.*]], [2 x <1 x double>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x1x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x1x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X2_T]], %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x double> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X2_T]], %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x double> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x double>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x double>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2lane.v1f64.p0i8(<1 x double> [[TMP8]], <1 x double> [[TMP9]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <1 x double>, <1 x double> }*
+-// CHECK-NEXT:    store { <1 x double>, <1 x double> } [[VLD2_LANE]], { <1 x double>, <1 x double> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.float64x1x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_FLOAT64X1X2_T]], %struct.float64x1x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X1X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x1x2_t @test_vld2_lane_f64(double* %a, [2 x <1 x double>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.float64x1x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <1 x double>] [[B]].coerce, [2 x <1 x double>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x double> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x double> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x double>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x double>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <1 x double>, <1 x double> } @llvm.aarch64.neon.ld2lane.v1f64.p0i8(<1 x double> [[TMP8]], <1 x double> [[TMP9]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <1 x double>, <1 x double> }*
++// CHECK:   store { <1 x double>, <1 x double> } [[VLD2_LANE]], { <1 x double>, <1 x double> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.float64x1x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.float64x1x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.float64x1x2_t, %struct.float64x1x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float64x1x2_t [[TMP13]]
+ float64x1x2_t test_vld2_lane_f64(float64_t  *a, float64x1x2_t b) {
+   return vld2_lane_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY8X8X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X8X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X8X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY8X8X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X2_T]], %struct.poly8x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i8>] [[B_COERCE:%.*]], [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X2_T]], %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X2_T]], %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8> }*
+-// CHECK-NEXT:    store { <8 x i8>, <8 x i8> } [[VLD2_LANE]], { <8 x i8>, <8 x i8> }* [[TMP5]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast %struct.poly8x8x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP6]], i8* align 8 [[TMP7]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP8:%.*]] = load [[STRUCT_POLY8X8X2_T]], %struct.poly8x8x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY8X8X2_T]] [[TMP8]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly8x8x2_t @test_vld2_lane_p8(i8* %a, [2 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x8x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VLD2_LANE:%.*]] = call { <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld2lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* %a)
++// CHECK:   [[TMP5:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8> }*
++// CHECK:   store { <8 x i8>, <8 x i8> } [[VLD2_LANE]], { <8 x i8>, <8 x i8> }* [[TMP5]]
++// CHECK:   [[TMP6:%.*]] = bitcast %struct.poly8x8x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.poly8x8x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP6]], i8* align 8 [[TMP7]], i64 16, i1 false)
++// CHECK:   [[TMP8:%.*]] = load %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly8x8x2_t [[TMP8]]
+ poly8x8x2_t test_vld2_lane_p8(poly8_t  *a, poly8x8x2_t b) {
+   return vld2_lane_p8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY16X4X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X4X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X4X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY16X4X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X2_T]], %struct.poly16x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x i16>] [[B_COERCE:%.*]], [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X2_T]], %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X2_T]], %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2lane.v4i16.p0i8(<4 x i16> [[TMP8]], <4 x i16> [[TMP9]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16> }*
+-// CHECK-NEXT:    store { <4 x i16>, <4 x i16> } [[VLD2_LANE]], { <4 x i16>, <4 x i16> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.poly16x4x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_POLY16X4X2_T]], %struct.poly16x4x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY16X4X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly16x4x2_t @test_vld2_lane_p16(i16* %a, [2 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x4x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld2lane.v4i16.p0i8(<4 x i16> [[TMP8]], <4 x i16> [[TMP9]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16> }*
++// CHECK:   store { <4 x i16>, <4 x i16> } [[VLD2_LANE]], { <4 x i16>, <4 x i16> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.poly16x4x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.poly16x4x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly16x4x2_t [[TMP13]]
+ poly16x4x2_t test_vld2_lane_p16(poly16_t  *a, poly16x4x2_t b) {
+   return vld2_lane_p16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld2_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X1X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X1X2_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X1X2_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X1X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X2_T]], %struct.poly64x1x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <1 x i64>] [[B_COERCE:%.*]], [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x1x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x1x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X2_T]], %struct.poly64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X2_T]], %struct.poly64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
+-// CHECK-NEXT:    [[VLD2_LANE:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2lane.v1i64.p0i8(<1 x i64> [[TMP8]], <1 x i64> [[TMP9]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64> } [[VLD2_LANE]], { <1 x i64>, <1 x i64> }* [[TMP10]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast %struct.poly64x1x2_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast %struct.poly64x1x2_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP13:%.*]] = load [[STRUCT_POLY64X1X2_T]], %struct.poly64x1x2_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X1X2_T]] [[TMP13]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x1x2_t @test_vld2_lane_p64(i64* %a, [2 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x1x2_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x1x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x1x2_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x1x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x1x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly64x1x2_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
++// CHECK:   [[VLD2_LANE:%.*]] = call { <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld2lane.v1i64.p0i8(<1 x i64> [[TMP8]], <1 x i64> [[TMP9]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP10:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64> } [[VLD2_LANE]], { <1 x i64>, <1 x i64> }* [[TMP10]]
++// CHECK:   [[TMP11:%.*]] = bitcast %struct.poly64x1x2_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP12:%.*]] = bitcast %struct.poly64x1x2_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP11]], i8* align 8 [[TMP12]], i64 16, i1 false)
++// CHECK:   [[TMP13:%.*]] = load %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly64x1x2_t [[TMP13]]
+ poly64x1x2_t test_vld2_lane_p64(poly64_t  *a, poly64x1x2_t b) {
+   return vld2_lane_p64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT16X8X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X3_T]], %struct.uint16x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i16>] [[B_COERCE:%.*]], [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint16x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X3_T]], %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X3_T]], %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X3_T]], %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3lane.v8i16.p0i8(<8 x i16> [[TMP10]], <8 x i16> [[TMP11]], <8 x i16> [[TMP12]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
+-// CHECK-NEXT:    store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD3_LANE]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.uint16x8x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.uint16x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_UINT16X8X3_T]], %struct.uint16x8x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT16X8X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint16x8x3_t @test_vld3q_lane_u16(i16* %a, [3 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x8x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint16x8x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3lane.v8i16.p0i8(<8 x i16> [[TMP10]], <8 x i16> [[TMP11]], <8 x i16> [[TMP12]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
++// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD3_LANE]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.uint16x8x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.uint16x8x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint16x8x3_t [[TMP16]]
+ uint16x8x3_t test_vld3q_lane_u16(uint16_t  *a, uint16x8x3_t b) {
+   return vld3q_lane_u16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT32X4X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X3_T]], %struct.uint32x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x i32>] [[B_COERCE:%.*]], [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint32x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X3_T]], %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X3_T]], %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X3_T]], %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x i32> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x i32>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3lane.v4i32.p0i8(<4 x i32> [[TMP10]], <4 x i32> [[TMP11]], <4 x i32> [[TMP12]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32>, <4 x i32> }*
+-// CHECK-NEXT:    store { <4 x i32>, <4 x i32>, <4 x i32> } [[VLD3_LANE]], { <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.uint32x4x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.uint32x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_UINT32X4X3_T]], %struct.uint32x4x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT32X4X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint32x4x3_t @test_vld3q_lane_u32(i32* %a, [3 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x4x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x i32>] [[B]].coerce, [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint32x4x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x i32> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x i32>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3lane.v4i32.p0i8(<4 x i32> [[TMP10]], <4 x i32> [[TMP11]], <4 x i32> [[TMP12]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32>, <4 x i32> }*
++// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32> } [[VLD3_LANE]], { <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.uint32x4x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.uint32x4x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint32x4x3_t [[TMP16]]
+ uint32x4x3_t test_vld3q_lane_u32(uint32_t  *a, uint32x4x3_t b) {
+   return vld3q_lane_u32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X3_T]], %struct.uint64x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x i64>] [[B_COERCE:%.*]], [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X3_T]], %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X3_T]], %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X3_T]], %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3lane.v2i64.p0i8(<2 x i64> [[TMP10]], <2 x i64> [[TMP11]], <2 x i64> [[TMP12]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3_LANE]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.uint64x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_UINT64X2X3_T]], %struct.uint64x2x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT64X2X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint64x2x3_t @test_vld3q_lane_u64(i64* %a, [3 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3lane.v2i64.p0i8(<2 x i64> [[TMP10]], <2 x i64> [[TMP11]], <2 x i64> [[TMP12]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3_LANE]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.uint64x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.uint64x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint64x2x3_t [[TMP16]]
+ uint64x2x3_t test_vld3q_lane_u64(uint64_t  *a, uint64x2x3_t b) {
+   return vld3q_lane_u64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT16X8X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X3_T]], %struct.int16x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i16>] [[B_COERCE:%.*]], [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int16x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X3_T]], %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X3_T]], %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X3_T]], %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3lane.v8i16.p0i8(<8 x i16> [[TMP10]], <8 x i16> [[TMP11]], <8 x i16> [[TMP12]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
+-// CHECK-NEXT:    store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD3_LANE]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.int16x8x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.int16x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_INT16X8X3_T]], %struct.int16x8x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT16X8X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int16x8x3_t @test_vld3q_lane_s16(i16* %a, [3 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.int16x8x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int16x8x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int16x8x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3lane.v8i16.p0i8(<8 x i16> [[TMP10]], <8 x i16> [[TMP11]], <8 x i16> [[TMP12]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
++// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD3_LANE]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.int16x8x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.int16x8x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.int16x8x3_t, %struct.int16x8x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int16x8x3_t [[TMP16]]
+ int16x8x3_t test_vld3q_lane_s16(int16_t  *a, int16x8x3_t b) {
+   return vld3q_lane_s16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT32X4X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X3_T]], %struct.int32x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x i32>] [[B_COERCE:%.*]], [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int32x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X3_T]], %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X3_T]], %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X3_T]], %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x i32> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x i32>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3lane.v4i32.p0i8(<4 x i32> [[TMP10]], <4 x i32> [[TMP11]], <4 x i32> [[TMP12]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32>, <4 x i32> }*
+-// CHECK-NEXT:    store { <4 x i32>, <4 x i32>, <4 x i32> } [[VLD3_LANE]], { <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.int32x4x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.int32x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_INT32X4X3_T]], %struct.int32x4x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT32X4X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int32x4x3_t @test_vld3q_lane_s32(i32* %a, [3 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.int32x4x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int32x4x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x i32>] [[B]].coerce, [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int32x4x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x i32> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x i32>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld3lane.v4i32.p0i8(<4 x i32> [[TMP10]], <4 x i32> [[TMP11]], <4 x i32> [[TMP12]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32>, <4 x i32> }*
++// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32> } [[VLD3_LANE]], { <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.int32x4x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.int32x4x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.int32x4x3_t, %struct.int32x4x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int32x4x3_t [[TMP16]]
+ int32x4x3_t test_vld3q_lane_s32(int32_t  *a, int32x4x3_t b) {
+   return vld3q_lane_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X3_T]], %struct.int64x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x i64>] [[B_COERCE:%.*]], [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X3_T]], %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X3_T]], %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X3_T]], %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3lane.v2i64.p0i8(<2 x i64> [[TMP10]], <2 x i64> [[TMP11]], <2 x i64> [[TMP12]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3_LANE]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.int64x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_INT64X2X3_T]], %struct.int64x2x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT64X2X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int64x2x3_t @test_vld3q_lane_s64(i64* %a, [3 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.int64x2x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3lane.v2i64.p0i8(<2 x i64> [[TMP10]], <2 x i64> [[TMP11]], <2 x i64> [[TMP12]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3_LANE]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.int64x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.int64x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.int64x2x3_t, %struct.int64x2x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int64x2x3_t [[TMP16]]
+ int64x2x3_t test_vld3q_lane_s64(int64_t  *a, int64x2x3_t b) {
+   return vld3q_lane_s64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT16X8X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X3_T]], %struct.float16x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x half>] [[B_COERCE:%.*]], [3 x <8 x half>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float16x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X3_T]], %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x half> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X3_T]], %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x half> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X3_T]], %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x half> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x half>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x half>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x half>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <8 x half>, <8 x half>, <8 x half> } @llvm.aarch64.neon.ld3lane.v8f16.p0i8(<8 x half> [[TMP10]], <8 x half> [[TMP11]], <8 x half> [[TMP12]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <8 x half>, <8 x half>, <8 x half> }*
+-// CHECK-NEXT:    store { <8 x half>, <8 x half>, <8 x half> } [[VLD3_LANE]], { <8 x half>, <8 x half>, <8 x half> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.float16x8x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.float16x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_FLOAT16X8X3_T]], %struct.float16x8x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT16X8X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float16x8x3_t @test_vld3q_lane_f16(half* %a, [3 x <8 x half>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x8x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.float16x8x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float16x8x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x half>] [[B]].coerce, [3 x <8 x half>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float16x8x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x half> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x half> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x half> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x half>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x half>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x half>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <8 x half>, <8 x half>, <8 x half> } @llvm.aarch64.neon.ld3lane.v8f16.p0i8(<8 x half> [[TMP10]], <8 x half> [[TMP11]], <8 x half> [[TMP12]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <8 x half>, <8 x half>, <8 x half> }*
++// CHECK:   store { <8 x half>, <8 x half>, <8 x half> } [[VLD3_LANE]], { <8 x half>, <8 x half>, <8 x half> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.float16x8x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.float16x8x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.float16x8x3_t, %struct.float16x8x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float16x8x3_t [[TMP16]]
+ float16x8x3_t test_vld3q_lane_f16(float16_t  *a, float16x8x3_t b) {
+   return vld3q_lane_f16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT32X4X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X3_T]], %struct.float32x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x float>] [[B_COERCE:%.*]], [3 x <4 x float>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float32x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X3_T]], %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x float> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X3_T]], %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x float> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X3_T]], %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x float> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x float>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x float>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x float>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3lane.v4f32.p0i8(<4 x float> [[TMP10]], <4 x float> [[TMP11]], <4 x float> [[TMP12]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x float>, <4 x float>, <4 x float> }*
+-// CHECK-NEXT:    store { <4 x float>, <4 x float>, <4 x float> } [[VLD3_LANE]], { <4 x float>, <4 x float>, <4 x float> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.float32x4x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.float32x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_FLOAT32X4X3_T]], %struct.float32x4x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT32X4X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float32x4x3_t @test_vld3q_lane_f32(float* %a, [3 x <4 x float>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.float32x4x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float32x4x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x float>] [[B]].coerce, [3 x <4 x float>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float32x4x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x float> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x float> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x float> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x float>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x float>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x float>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld3lane.v4f32.p0i8(<4 x float> [[TMP10]], <4 x float> [[TMP11]], <4 x float> [[TMP12]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x float>, <4 x float>, <4 x float> }*
++// CHECK:   store { <4 x float>, <4 x float>, <4 x float> } [[VLD3_LANE]], { <4 x float>, <4 x float>, <4 x float> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.float32x4x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.float32x4x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.float32x4x3_t, %struct.float32x4x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float32x4x3_t [[TMP16]]
+ float32x4x3_t test_vld3q_lane_f32(float32_t  *a, float32x4x3_t b) {
+   return vld3q_lane_f32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X3_T]], %struct.float64x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x double>] [[B_COERCE:%.*]], [3 x <2 x double>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X3_T]], %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x double> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X3_T]], %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x double> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X3_T]], %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x double> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x double>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x double>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x double>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3lane.v2f64.p0i8(<2 x double> [[TMP10]], <2 x double> [[TMP11]], <2 x double> [[TMP12]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x double>, <2 x double>, <2 x double> }*
+-// CHECK-NEXT:    store { <2 x double>, <2 x double>, <2 x double> } [[VLD3_LANE]], { <2 x double>, <2 x double>, <2 x double> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.float64x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_FLOAT64X2X3_T]], %struct.float64x2x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X2X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x2x3_t @test_vld3q_lane_f64(double* %a, [3 x <2 x double>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.float64x2x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x double>] [[B]].coerce, [3 x <2 x double>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x double> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x double> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x double> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x double>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x double>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x double>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld3lane.v2f64.p0i8(<2 x double> [[TMP10]], <2 x double> [[TMP11]], <2 x double> [[TMP12]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x double>, <2 x double>, <2 x double> }*
++// CHECK:   store { <2 x double>, <2 x double>, <2 x double> } [[VLD3_LANE]], { <2 x double>, <2 x double>, <2 x double> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.float64x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.float64x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.float64x2x3_t, %struct.float64x2x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float64x2x3_t [[TMP16]]
+ float64x2x3_t test_vld3q_lane_f64(float64_t  *a, float64x2x3_t b) {
+   return vld3q_lane_f64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY8X16X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X16X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X16X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY8X16X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X3_T]], %struct.poly8x16x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <16 x i8>] [[B_COERCE:%.*]], [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x16x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x16x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly8x16x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X3_T]], %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X3_T]], %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X3_T]], %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
+-// CHECK-NEXT:    store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD3_LANE]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP6]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.poly8x16x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.poly8x16x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP7]], i8* align 16 [[TMP8]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP9:%.*]] = load [[STRUCT_POLY8X16X3_T]], %struct.poly8x16x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY8X16X3_T]] [[TMP9]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly8x16x3_t @test_vld3q_lane_p8(i8* %a, [3 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x16x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <16 x i8>] [[B]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x16x3_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   [[VLD3_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld3lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* %a)
++// CHECK:   [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8> }*
++// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8> } [[VLD3_LANE]], { <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP6]]
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.poly8x16x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.poly8x16x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP7]], i8* align 16 [[TMP8]], i64 48, i1 false)
++// CHECK:   [[TMP9:%.*]] = load %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly8x16x3_t [[TMP9]]
+ poly8x16x3_t test_vld3q_lane_p8(poly8_t  *a, poly8x16x3_t b) {
+   return vld3q_lane_p8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY16X8X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X8X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X8X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY16X8X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X3_T]], %struct.poly16x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i16>] [[B_COERCE:%.*]], [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly16x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X3_T]], %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X3_T]], %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X3_T]], %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3lane.v8i16.p0i8(<8 x i16> [[TMP10]], <8 x i16> [[TMP11]], <8 x i16> [[TMP12]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
+-// CHECK-NEXT:    store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD3_LANE]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.poly16x8x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.poly16x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_POLY16X8X3_T]], %struct.poly16x8x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY16X8X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly16x8x3_t @test_vld3q_lane_p16(i16* %a, [3 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x8x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly16x8x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld3lane.v8i16.p0i8(<8 x i16> [[TMP10]], <8 x i16> [[TMP11]], <8 x i16> [[TMP12]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16> }*
++// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16> } [[VLD3_LANE]], { <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.poly16x8x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.poly16x8x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly16x8x3_t [[TMP16]]
+ poly16x8x3_t test_vld3q_lane_p16(poly16_t  *a, poly16x8x3_t b) {
+   return vld3q_lane_p16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld3q_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X2X3_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X2X3_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X2X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X3_T]], %struct.poly64x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x i64>] [[B_COERCE:%.*]], [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X3_T]], %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X3_T]], %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X3_T]], %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3lane.v2i64.p0i8(<2 x i64> [[TMP10]], <2 x i64> [[TMP11]], <2 x i64> [[TMP12]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3_LANE]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP13]], align 16
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.poly64x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.poly64x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_POLY64X2X3_T]], %struct.poly64x2x3_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X2X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x2x3_t @test_vld3q_lane_p64(i64* %a, [3 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x2x3_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x2x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x2x3_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x2x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly64x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld3lane.v2i64.p0i8(<2 x i64> [[TMP10]], <2 x i64> [[TMP11]], <2 x i64> [[TMP12]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64> } [[VLD3_LANE]], { <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.poly64x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.poly64x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP14]], i8* align 16 [[TMP15]], i64 48, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly64x2x3_t [[TMP16]]
+ poly64x2x3_t test_vld3q_lane_p64(poly64_t  *a, poly64x2x3_t b) {
+   return vld3q_lane_p64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT8X8X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT8X8X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X8X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT8X8X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X3_T]], %struct.uint8x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i8>] [[B_COERCE:%.*]], [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint8x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X3_T]], %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X3_T]], %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X3_T]], %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
+-// CHECK-NEXT:    store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD3_LANE]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP6]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.uint8x8x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.uint8x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP7]], i8* align 8 [[TMP8]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP9:%.*]] = load [[STRUCT_UINT8X8X3_T]], %struct.uint8x8x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT8X8X3_T]] [[TMP9]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint8x8x3_t @test_vld3_lane_u8(i8* %a, [3 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x8x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x8x3_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   [[VLD3_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* %a)
++// CHECK:   [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
++// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD3_LANE]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP6]]
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.uint8x8x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint8x8x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP7]], i8* align 8 [[TMP8]], i64 24, i1 false)
++// CHECK:   [[TMP9:%.*]] = load %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint8x8x3_t [[TMP9]]
+ uint8x8x3_t test_vld3_lane_u8(uint8_t  *a, uint8x8x3_t b) {
+   return vld3_lane_u8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT16X4X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X3_T]], %struct.uint16x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x i16>] [[B_COERCE:%.*]], [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint16x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X3_T]], %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X3_T]], %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X3_T]], %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3lane.v4i16.p0i8(<4 x i16> [[TMP10]], <4 x i16> [[TMP11]], <4 x i16> [[TMP12]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
+-// CHECK-NEXT:    store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD3_LANE]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.uint16x4x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.uint16x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_UINT16X4X3_T]], %struct.uint16x4x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT16X4X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint16x4x3_t @test_vld3_lane_u16(i16* %a, [3 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x4x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint16x4x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3lane.v4i16.p0i8(<4 x i16> [[TMP10]], <4 x i16> [[TMP11]], <4 x i16> [[TMP12]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
++// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD3_LANE]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.uint16x4x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.uint16x4x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint16x4x3_t [[TMP16]]
+ uint16x4x3_t test_vld3_lane_u16(uint16_t  *a, uint16x4x3_t b) {
+   return vld3_lane_u16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT32X2X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X3_T]], %struct.uint32x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x i32>] [[B_COERCE:%.*]], [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint32x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X3_T]], %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X3_T]], %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X3_T]], %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x i32> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x i32>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3lane.v2i32.p0i8(<2 x i32> [[TMP10]], <2 x i32> [[TMP11]], <2 x i32> [[TMP12]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32>, <2 x i32> }*
+-// CHECK-NEXT:    store { <2 x i32>, <2 x i32>, <2 x i32> } [[VLD3_LANE]], { <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.uint32x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.uint32x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_UINT32X2X3_T]], %struct.uint32x2x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT32X2X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint32x2x3_t @test_vld3_lane_u32(i32* %a, [3 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x2x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x i32>] [[B]].coerce, [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint32x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x i32> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x i32>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3lane.v2i32.p0i8(<2 x i32> [[TMP10]], <2 x i32> [[TMP11]], <2 x i32> [[TMP12]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32>, <2 x i32> }*
++// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32> } [[VLD3_LANE]], { <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.uint32x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.uint32x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint32x2x3_t [[TMP16]]
+ uint32x2x3_t test_vld3_lane_u32(uint32_t  *a, uint32x2x3_t b) {
+   return vld3_lane_u32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT64X1X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X3_T]], %struct.uint64x1x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <1 x i64>] [[B_COERCE:%.*]], [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x1x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x1x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X3_T]], %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X3_T]], %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X3_T]], %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3lane.v1i64.p0i8(<1 x i64> [[TMP10]], <1 x i64> [[TMP11]], <1 x i64> [[TMP12]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD3_LANE]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.uint64x1x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.uint64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_UINT64X1X3_T]], %struct.uint64x1x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT64X1X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint64x1x3_t @test_vld3_lane_u64(i64* %a, [3 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x1x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x1x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint64x1x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3lane.v1i64.p0i8(<1 x i64> [[TMP10]], <1 x i64> [[TMP11]], <1 x i64> [[TMP12]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD3_LANE]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.uint64x1x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.uint64x1x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint64x1x3_t [[TMP16]]
+ uint64x1x3_t test_vld3_lane_u64(uint64_t  *a, uint64x1x3_t b) {
+   return vld3_lane_u64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT8X8X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT8X8X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X8X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT8X8X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X3_T]], %struct.int8x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i8>] [[B_COERCE:%.*]], [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int8x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X3_T]], %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X3_T]], %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X3_T]], %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
+-// CHECK-NEXT:    store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD3_LANE]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP6]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.int8x8x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.int8x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP7]], i8* align 8 [[TMP8]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP9:%.*]] = load [[STRUCT_INT8X8X3_T]], %struct.int8x8x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT8X8X3_T]] [[TMP9]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int8x8x3_t @test_vld3_lane_s8(i8* %a, [3 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int8x8x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int8x8x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x8x3_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   [[VLD3_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* %a)
++// CHECK:   [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
++// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD3_LANE]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP6]]
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.int8x8x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.int8x8x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP7]], i8* align 8 [[TMP8]], i64 24, i1 false)
++// CHECK:   [[TMP9:%.*]] = load %struct.int8x8x3_t, %struct.int8x8x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int8x8x3_t [[TMP9]]
+ int8x8x3_t test_vld3_lane_s8(int8_t  *a, int8x8x3_t b) {
+   return vld3_lane_s8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT16X4X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X3_T]], %struct.int16x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x i16>] [[B_COERCE:%.*]], [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int16x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X3_T]], %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X3_T]], %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X3_T]], %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3lane.v4i16.p0i8(<4 x i16> [[TMP10]], <4 x i16> [[TMP11]], <4 x i16> [[TMP12]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
+-// CHECK-NEXT:    store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD3_LANE]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.int16x4x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.int16x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_INT16X4X3_T]], %struct.int16x4x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT16X4X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int16x4x3_t @test_vld3_lane_s16(i16* %a, [3 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int16x4x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int16x4x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int16x4x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3lane.v4i16.p0i8(<4 x i16> [[TMP10]], <4 x i16> [[TMP11]], <4 x i16> [[TMP12]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
++// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD3_LANE]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.int16x4x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.int16x4x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.int16x4x3_t, %struct.int16x4x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int16x4x3_t [[TMP16]]
+ int16x4x3_t test_vld3_lane_s16(int16_t  *a, int16x4x3_t b) {
+   return vld3_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT32X2X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X3_T]], %struct.int32x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x i32>] [[B_COERCE:%.*]], [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int32x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X3_T]], %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X3_T]], %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X3_T]], %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x i32> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x i32>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3lane.v2i32.p0i8(<2 x i32> [[TMP10]], <2 x i32> [[TMP11]], <2 x i32> [[TMP12]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32>, <2 x i32> }*
+-// CHECK-NEXT:    store { <2 x i32>, <2 x i32>, <2 x i32> } [[VLD3_LANE]], { <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.int32x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.int32x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_INT32X2X3_T]], %struct.int32x2x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT32X2X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int32x2x3_t @test_vld3_lane_s32(i32* %a, [3 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int32x2x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int32x2x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x i32>] [[B]].coerce, [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int32x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x i32> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x i32>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld3lane.v2i32.p0i8(<2 x i32> [[TMP10]], <2 x i32> [[TMP11]], <2 x i32> [[TMP12]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32>, <2 x i32> }*
++// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32> } [[VLD3_LANE]], { <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.int32x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.int32x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.int32x2x3_t, %struct.int32x2x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int32x2x3_t [[TMP16]]
+ int32x2x3_t test_vld3_lane_s32(int32_t  *a, int32x2x3_t b) {
+   return vld3_lane_s32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT64X1X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X3_T]], %struct.int64x1x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <1 x i64>] [[B_COERCE:%.*]], [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x1x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x1x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X3_T]], %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X3_T]], %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X3_T]], %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3lane.v1i64.p0i8(<1 x i64> [[TMP10]], <1 x i64> [[TMP11]], <1 x i64> [[TMP12]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD3_LANE]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.int64x1x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.int64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_INT64X1X3_T]], %struct.int64x1x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT64X1X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int64x1x3_t @test_vld3_lane_s64(i64* %a, [3 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x1x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int64x1x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int64x1x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int64x1x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3lane.v1i64.p0i8(<1 x i64> [[TMP10]], <1 x i64> [[TMP11]], <1 x i64> [[TMP12]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD3_LANE]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.int64x1x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.int64x1x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.int64x1x3_t, %struct.int64x1x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int64x1x3_t [[TMP16]]
+ int64x1x3_t test_vld3_lane_s64(int64_t  *a, int64x1x3_t b) {
+   return vld3_lane_s64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT16X4X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X3_T]], %struct.float16x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x half>] [[B_COERCE:%.*]], [3 x <4 x half>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float16x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X3_T]], %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x half> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X3_T]], %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x half> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X3_T]], %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x half> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x half>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x half>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x half>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <4 x half>, <4 x half>, <4 x half> } @llvm.aarch64.neon.ld3lane.v4f16.p0i8(<4 x half> [[TMP10]], <4 x half> [[TMP11]], <4 x half> [[TMP12]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x half>, <4 x half>, <4 x half> }*
+-// CHECK-NEXT:    store { <4 x half>, <4 x half>, <4 x half> } [[VLD3_LANE]], { <4 x half>, <4 x half>, <4 x half> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.float16x4x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.float16x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_FLOAT16X4X3_T]], %struct.float16x4x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT16X4X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float16x4x3_t @test_vld3_lane_f16(half* %a, [3 x <4 x half>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x4x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.float16x4x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float16x4x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x half>] [[B]].coerce, [3 x <4 x half>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float16x4x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x half> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x half> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x half> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x half>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x half>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x half>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <4 x half>, <4 x half>, <4 x half> } @llvm.aarch64.neon.ld3lane.v4f16.p0i8(<4 x half> [[TMP10]], <4 x half> [[TMP11]], <4 x half> [[TMP12]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x half>, <4 x half>, <4 x half> }*
++// CHECK:   store { <4 x half>, <4 x half>, <4 x half> } [[VLD3_LANE]], { <4 x half>, <4 x half>, <4 x half> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.float16x4x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.float16x4x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.float16x4x3_t, %struct.float16x4x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float16x4x3_t [[TMP16]]
+ float16x4x3_t test_vld3_lane_f16(float16_t  *a, float16x4x3_t b) {
+   return vld3_lane_f16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT32X2X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X3_T]], %struct.float32x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x float>] [[B_COERCE:%.*]], [3 x <2 x float>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float32x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X3_T]], %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x float> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X3_T]], %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x float> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X3_T]], %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x float> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x float>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x float>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x float>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3lane.v2f32.p0i8(<2 x float> [[TMP10]], <2 x float> [[TMP11]], <2 x float> [[TMP12]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x float>, <2 x float>, <2 x float> }*
+-// CHECK-NEXT:    store { <2 x float>, <2 x float>, <2 x float> } [[VLD3_LANE]], { <2 x float>, <2 x float>, <2 x float> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.float32x2x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.float32x2x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_FLOAT32X2X3_T]], %struct.float32x2x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT32X2X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float32x2x3_t @test_vld3_lane_f32(float* %a, [3 x <2 x float>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.float32x2x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float32x2x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x float>] [[B]].coerce, [3 x <2 x float>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float32x2x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x float> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x float> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x float> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x float>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x float>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x float>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld3lane.v2f32.p0i8(<2 x float> [[TMP10]], <2 x float> [[TMP11]], <2 x float> [[TMP12]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <2 x float>, <2 x float>, <2 x float> }*
++// CHECK:   store { <2 x float>, <2 x float>, <2 x float> } [[VLD3_LANE]], { <2 x float>, <2 x float>, <2 x float> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.float32x2x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.float32x2x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.float32x2x3_t, %struct.float32x2x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float32x2x3_t [[TMP16]]
+ float32x2x3_t test_vld3_lane_f32(float32_t  *a, float32x2x3_t b) {
+   return vld3_lane_f32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X1X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X3_T]], %struct.float64x1x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <1 x double>] [[B_COERCE:%.*]], [3 x <1 x double>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x1x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x1x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X3_T]], %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x double> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X3_T]], %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x double> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X3_T]], %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <1 x double> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x double>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x double>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x double>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3lane.v1f64.p0i8(<1 x double> [[TMP10]], <1 x double> [[TMP11]], <1 x double> [[TMP12]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <1 x double>, <1 x double>, <1 x double> }*
+-// CHECK-NEXT:    store { <1 x double>, <1 x double>, <1 x double> } [[VLD3_LANE]], { <1 x double>, <1 x double>, <1 x double> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.float64x1x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_FLOAT64X1X3_T]], %struct.float64x1x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X1X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x1x3_t @test_vld3_lane_f64(double* %a, [3 x <1 x double>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.float64x1x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <1 x double>] [[B]].coerce, [3 x <1 x double>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x double> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x double> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <1 x double> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x double>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x double>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x double>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld3lane.v1f64.p0i8(<1 x double> [[TMP10]], <1 x double> [[TMP11]], <1 x double> [[TMP12]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <1 x double>, <1 x double>, <1 x double> }*
++// CHECK:   store { <1 x double>, <1 x double>, <1 x double> } [[VLD3_LANE]], { <1 x double>, <1 x double>, <1 x double> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.float64x1x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.float64x1x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.float64x1x3_t, %struct.float64x1x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float64x1x3_t [[TMP16]]
+ float64x1x3_t test_vld3_lane_f64(float64_t  *a, float64x1x3_t b) {
+   return vld3_lane_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY8X8X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X8X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X8X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY8X8X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X3_T]], %struct.poly8x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i8>] [[B_COERCE:%.*]], [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly8x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X3_T]], %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X3_T]], %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X3_T]], %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
+-// CHECK-NEXT:    store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD3_LANE]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP6]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast %struct.poly8x8x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.poly8x8x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP7]], i8* align 8 [[TMP8]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP9:%.*]] = load [[STRUCT_POLY8X8X3_T]], %struct.poly8x8x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY8X8X3_T]] [[TMP9]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly8x8x3_t @test_vld3_lane_p8(i8* %a, [3 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x8x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x8x3_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   [[VLD3_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld3lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* %a)
++// CHECK:   [[TMP6:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8> }*
++// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8> } [[VLD3_LANE]], { <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP6]]
++// CHECK:   [[TMP7:%.*]] = bitcast %struct.poly8x8x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.poly8x8x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP7]], i8* align 8 [[TMP8]], i64 24, i1 false)
++// CHECK:   [[TMP9:%.*]] = load %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly8x8x3_t [[TMP9]]
+ poly8x8x3_t test_vld3_lane_p8(poly8_t  *a, poly8x8x3_t b) {
+   return vld3_lane_p8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY16X4X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X4X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X4X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY16X4X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X3_T]], %struct.poly16x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x i16>] [[B_COERCE:%.*]], [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly16x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X3_T]], %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X3_T]], %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X3_T]], %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3lane.v4i16.p0i8(<4 x i16> [[TMP10]], <4 x i16> [[TMP11]], <4 x i16> [[TMP12]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
+-// CHECK-NEXT:    store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD3_LANE]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.poly16x4x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.poly16x4x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_POLY16X4X3_T]], %struct.poly16x4x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY16X4X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly16x4x3_t @test_vld3_lane_p16(i16* %a, [3 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x4x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly16x4x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld3lane.v4i16.p0i8(<4 x i16> [[TMP10]], <4 x i16> [[TMP11]], <4 x i16> [[TMP12]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16> }*
++// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16> } [[VLD3_LANE]], { <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.poly16x4x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.poly16x4x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly16x4x3_t [[TMP16]]
+ poly16x4x3_t test_vld3_lane_p16(poly16_t  *a, poly16x4x3_t b) {
+   return vld3_lane_p16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld3_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X1X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X1X3_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X1X3_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X1X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X3_T]], %struct.poly64x1x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <1 x i64>] [[B_COERCE:%.*]], [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x1x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x1x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X3_T]], %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X3_T]], %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X3_T]], %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
+-// CHECK-NEXT:    [[VLD3_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3lane.v1i64.p0i8(<1 x i64> [[TMP10]], <1 x i64> [[TMP11]], <1 x i64> [[TMP12]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD3_LANE]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP13]], align 8
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast %struct.poly64x1x3_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast %struct.poly64x1x3_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP16:%.*]] = load [[STRUCT_POLY64X1X3_T]], %struct.poly64x1x3_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X1X3_T]] [[TMP16]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x1x3_t @test_vld3_lane_p64(i64* %a, [3 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x1x3_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x1x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x1x3_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x1x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x1x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly64x1x3_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
++// CHECK:   [[VLD3_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld3lane.v1i64.p0i8(<1 x i64> [[TMP10]], <1 x i64> [[TMP11]], <1 x i64> [[TMP12]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP13:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64> } [[VLD3_LANE]], { <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP13]]
++// CHECK:   [[TMP14:%.*]] = bitcast %struct.poly64x1x3_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP15:%.*]] = bitcast %struct.poly64x1x3_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP14]], i8* align 8 [[TMP15]], i64 24, i1 false)
++// CHECK:   [[TMP16:%.*]] = load %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly64x1x3_t [[TMP16]]
+ poly64x1x3_t test_vld3_lane_p64(poly64_t  *a, poly64x1x3_t b) {
+   return vld3_lane_p64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT8X16X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT8X16X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X16X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT8X16X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <16 x i8>] [[B_COERCE:%.*]], [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x16x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x16x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint8x16x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], <16 x i8> [[TMP6]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
+-// CHECK-NEXT:    store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD4_LANE]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP7]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.uint8x16x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast %struct.uint8x16x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP8]], i8* align 16 [[TMP9]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP10:%.*]] = load [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT8X16X4_T]] [[TMP10]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint8x16x4_t @test_vld4q_lane_u8(i8* %a, [4 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x16x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.uint8x16x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x16x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x16x4_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP6:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
++// CHECK:   [[VLD4_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], <16 x i8> [[TMP6]], i64 15, i8* %a)
++// CHECK:   [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
++// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD4_LANE]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP7]]
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint8x16x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP9:%.*]] = bitcast %struct.uint8x16x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP8]], i8* align 16 [[TMP9]], i64 64, i1 false)
++// CHECK:   [[TMP10:%.*]] = load %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint8x16x4_t [[TMP10]]
+ uint8x16x4_t test_vld4q_lane_u8(uint8_t  *a, uint8x16x4_t b) {
+   return vld4q_lane_u8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT16X8X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i16>] [[B_COERCE:%.*]], [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint16x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i16> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <8 x i16>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4lane.v8i16.p0i8(<8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], <8 x i16> [[TMP15]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
+-// CHECK-NEXT:    store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD4_LANE]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.uint16x8x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.uint16x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT16X8X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint16x8x4_t @test_vld4q_lane_u16(i16* %a, [4 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x8x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x8x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint16x8x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i16> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <8 x i16>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4lane.v8i16.p0i8(<8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], <8 x i16> [[TMP15]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
++// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD4_LANE]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.uint16x8x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.uint16x8x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint16x8x4_t [[TMP19]]
+ uint16x8x4_t test_vld4q_lane_u16(uint16_t  *a, uint16x8x4_t b) {
+   return vld4q_lane_u16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT32X4X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x i32>] [[B_COERCE:%.*]], [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint32x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x i32> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <4 x i32> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <4 x i32>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4lane.v4i32.p0i8(<4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], <4 x i32> [[TMP15]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }*
+-// CHECK-NEXT:    store { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } [[VLD4_LANE]], { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.uint32x4x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.uint32x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT32X4X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint32x4x4_t @test_vld4q_lane_u32(i32* %a, [4 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x4x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x4x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x i32>] [[B]].coerce, [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint32x4x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x i32> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <4 x i32> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x i32>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <4 x i32>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4lane.v4i32.p0i8(<4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], <4 x i32> [[TMP15]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }*
++// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } [[VLD4_LANE]], { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.uint32x4x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.uint32x4x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint32x4x4_t [[TMP19]]
+ uint32x4x4_t test_vld4q_lane_u32(uint32_t  *a, uint32x4x4_t b) {
+   return vld4q_lane_u32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x i64>] [[B_COERCE:%.*]], [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <2 x i64> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <2 x i64>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4lane.v2i64.p0i8(<2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], <2 x i64> [[TMP15]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4_LANE]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.uint64x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_UINT64X2X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint64x2x4_t @test_vld4q_lane_u64(i64* %a, [4 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x2x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x2x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <2 x i64> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <2 x i64>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4lane.v2i64.p0i8(<2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], <2 x i64> [[TMP15]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4_LANE]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.uint64x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.uint64x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.uint64x2x4_t [[TMP19]]
+ uint64x2x4_t test_vld4q_lane_u64(uint64_t  *a, uint64x2x4_t b) {
+   return vld4q_lane_u64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT8X16X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT8X16X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X16X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT8X16X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <16 x i8>] [[B_COERCE:%.*]], [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x16x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x16x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int8x16x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], <16 x i8> [[TMP6]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
+-// CHECK-NEXT:    store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD4_LANE]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP7]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.int8x16x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast %struct.int8x16x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP8]], i8* align 16 [[TMP9]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP10:%.*]] = load [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT8X16X4_T]] [[TMP10]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int8x16x4_t @test_vld4q_lane_s8(i8* %a, [4 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x16x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.int8x16x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int8x16x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x16x4_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP6:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
++// CHECK:   [[VLD4_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], <16 x i8> [[TMP6]], i64 15, i8* %a)
++// CHECK:   [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
++// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD4_LANE]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP7]]
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.int8x16x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP9:%.*]] = bitcast %struct.int8x16x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP8]], i8* align 16 [[TMP9]], i64 64, i1 false)
++// CHECK:   [[TMP10:%.*]] = load %struct.int8x16x4_t, %struct.int8x16x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int8x16x4_t [[TMP10]]
+ int8x16x4_t test_vld4q_lane_s8(int8_t  *a, int8x16x4_t b) {
+   return vld4q_lane_s8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT16X8X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i16>] [[B_COERCE:%.*]], [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int16x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i16> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <8 x i16>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4lane.v8i16.p0i8(<8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], <8 x i16> [[TMP15]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
+-// CHECK-NEXT:    store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD4_LANE]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.int16x8x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.int16x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT16X8X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int16x8x4_t @test_vld4q_lane_s16(i16* %a, [4 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x8x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.int16x8x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int16x8x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int16x8x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i16> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <8 x i16>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4lane.v8i16.p0i8(<8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], <8 x i16> [[TMP15]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
++// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD4_LANE]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.int16x8x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.int16x8x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.int16x8x4_t, %struct.int16x8x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int16x8x4_t [[TMP19]]
+ int16x8x4_t test_vld4q_lane_s16(int16_t  *a, int16x8x4_t b) {
+   return vld4q_lane_s16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT32X4X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x i32>] [[B_COERCE:%.*]], [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int32x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x i32> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <4 x i32> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <4 x i32>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4lane.v4i32.p0i8(<4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], <4 x i32> [[TMP15]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }*
+-// CHECK-NEXT:    store { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } [[VLD4_LANE]], { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.int32x4x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.int32x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT32X4X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int32x4x4_t @test_vld4q_lane_s32(i32* %a, [4 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x4x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.int32x4x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int32x4x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x i32>] [[B]].coerce, [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int32x4x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i32> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i32> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x i32> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <4 x i32> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x i32>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x i32>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x i32>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <4 x i32>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } @llvm.aarch64.neon.ld4lane.v4i32.p0i8(<4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], <4 x i32> [[TMP15]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }*
++// CHECK:   store { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> } [[VLD4_LANE]], { <4 x i32>, <4 x i32>, <4 x i32>, <4 x i32> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.int32x4x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.int32x4x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.int32x4x4_t, %struct.int32x4x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int32x4x4_t [[TMP19]]
+ int32x4x4_t test_vld4q_lane_s32(int32_t  *a, int32x4x4_t b) {
+   return vld4q_lane_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x i64>] [[B_COERCE:%.*]], [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <2 x i64> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <2 x i64>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4lane.v2i64.p0i8(<2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], <2 x i64> [[TMP15]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4_LANE]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.int64x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_INT64X2X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int64x2x4_t @test_vld4q_lane_s64(i64* %a, [4 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x2x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.int64x2x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.int64x2x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <2 x i64> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <2 x i64>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4lane.v2i64.p0i8(<2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], <2 x i64> [[TMP15]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4_LANE]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.int64x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.int64x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.int64x2x4_t, %struct.int64x2x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.int64x2x4_t [[TMP19]]
+ int64x2x4_t test_vld4q_lane_s64(int64_t  *a, int64x2x4_t b) {
+   return vld4q_lane_s64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT16X8X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x half>] [[B_COERCE:%.*]], [4 x <8 x half>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float16x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x half> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x half> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x half> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x half> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x half>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x half>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x half>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <8 x half>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <8 x half>, <8 x half>, <8 x half>, <8 x half> } @llvm.aarch64.neon.ld4lane.v8f16.p0i8(<8 x half> [[TMP12]], <8 x half> [[TMP13]], <8 x half> [[TMP14]], <8 x half> [[TMP15]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <8 x half>, <8 x half>, <8 x half>, <8 x half> }*
+-// CHECK-NEXT:    store { <8 x half>, <8 x half>, <8 x half>, <8 x half> } [[VLD4_LANE]], { <8 x half>, <8 x half>, <8 x half>, <8 x half> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.float16x8x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.float16x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT16X8X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float16x8x4_t @test_vld4q_lane_f16(half* %a, [4 x <8 x half>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x8x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.float16x8x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float16x8x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x half>] [[B]].coerce, [4 x <8 x half>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float16x8x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x half> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x half> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x half> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x half> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x half>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x half>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x half>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <8 x half>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <8 x half>, <8 x half>, <8 x half>, <8 x half> } @llvm.aarch64.neon.ld4lane.v8f16.p0i8(<8 x half> [[TMP12]], <8 x half> [[TMP13]], <8 x half> [[TMP14]], <8 x half> [[TMP15]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <8 x half>, <8 x half>, <8 x half>, <8 x half> }*
++// CHECK:   store { <8 x half>, <8 x half>, <8 x half>, <8 x half> } [[VLD4_LANE]], { <8 x half>, <8 x half>, <8 x half>, <8 x half> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.float16x8x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.float16x8x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.float16x8x4_t, %struct.float16x8x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float16x8x4_t [[TMP19]]
+ float16x8x4_t test_vld4q_lane_f16(float16_t  *a, float16x8x4_t b) {
+   return vld4q_lane_f16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT32X4X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x float>] [[B_COERCE:%.*]], [4 x <4 x float>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float32x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x float> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x float> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x float> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <4 x float> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x float>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x float>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x float>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <4 x float>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4lane.v4f32.p0i8(<4 x float> [[TMP12]], <4 x float> [[TMP13]], <4 x float> [[TMP14]], <4 x float> [[TMP15]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x float>, <4 x float>, <4 x float>, <4 x float> }*
+-// CHECK-NEXT:    store { <4 x float>, <4 x float>, <4 x float>, <4 x float> } [[VLD4_LANE]], { <4 x float>, <4 x float>, <4 x float>, <4 x float> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.float32x4x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.float32x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT32X4X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float32x4x4_t @test_vld4q_lane_f32(float* %a, [4 x <4 x float>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x4x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.float32x4x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float32x4x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x float>] [[B]].coerce, [4 x <4 x float>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float32x4x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x float> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x float> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x float> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <4 x float> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <4 x float>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <4 x float>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <4 x float>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <4 x float>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <4 x float>, <4 x float>, <4 x float>, <4 x float> } @llvm.aarch64.neon.ld4lane.v4f32.p0i8(<4 x float> [[TMP12]], <4 x float> [[TMP13]], <4 x float> [[TMP14]], <4 x float> [[TMP15]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x float>, <4 x float>, <4 x float>, <4 x float> }*
++// CHECK:   store { <4 x float>, <4 x float>, <4 x float>, <4 x float> } [[VLD4_LANE]], { <4 x float>, <4 x float>, <4 x float>, <4 x float> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.float32x4x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.float32x4x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.float32x4x4_t, %struct.float32x4x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float32x4x4_t [[TMP19]]
+ float32x4x4_t test_vld4q_lane_f32(float32_t  *a, float32x4x4_t b) {
+   return vld4q_lane_f32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x double>] [[B_COERCE:%.*]], [4 x <2 x double>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x double> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x double> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x double> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <2 x double> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x double>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x double>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x double>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <2 x double>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4lane.v2f64.p0i8(<2 x double> [[TMP12]], <2 x double> [[TMP13]], <2 x double> [[TMP14]], <2 x double> [[TMP15]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x double>, <2 x double>, <2 x double>, <2 x double> }*
+-// CHECK-NEXT:    store { <2 x double>, <2 x double>, <2 x double>, <2 x double> } [[VLD4_LANE]], { <2 x double>, <2 x double>, <2 x double>, <2 x double> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.float64x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X2X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x2x4_t @test_vld4q_lane_f64(double* %a, [4 x <2 x double>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x2x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.float64x2x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x2x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x double>] [[B]].coerce, [4 x <2 x double>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x double> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x double> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x double> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <2 x double> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x double>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x double>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x double>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <2 x double>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <2 x double>, <2 x double>, <2 x double>, <2 x double> } @llvm.aarch64.neon.ld4lane.v2f64.p0i8(<2 x double> [[TMP12]], <2 x double> [[TMP13]], <2 x double> [[TMP14]], <2 x double> [[TMP15]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x double>, <2 x double>, <2 x double>, <2 x double> }*
++// CHECK:   store { <2 x double>, <2 x double>, <2 x double>, <2 x double> } [[VLD4_LANE]], { <2 x double>, <2 x double>, <2 x double>, <2 x double> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.float64x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.float64x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.float64x2x4_t, %struct.float64x2x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.float64x2x4_t [[TMP19]]
+ float64x2x4_t test_vld4q_lane_f64(float64_t  *a, float64x2x4_t b) {
+   return vld4q_lane_f64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY8X16X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X16X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X16X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY8X16X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <16 x i8>] [[B_COERCE:%.*]], [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x16x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x16x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly8x16x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], <16 x i8> [[TMP6]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
+-// CHECK-NEXT:    store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD4_LANE]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP7]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.poly8x16x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast %struct.poly8x16x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP8]], i8* align 16 [[TMP9]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP10:%.*]] = load [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY8X16X4_T]] [[TMP10]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly8x16x4_t @test_vld4q_lane_p8(i8* %a, [4 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x16x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x16x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x16x4_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP6:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
++// CHECK:   [[VLD4_LANE:%.*]] = call { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } @llvm.aarch64.neon.ld4lane.v16i8.p0i8(<16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], <16 x i8> [[TMP6]], i64 15, i8* %a)
++// CHECK:   [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }*
++// CHECK:   store { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> } [[VLD4_LANE]], { <16 x i8>, <16 x i8>, <16 x i8>, <16 x i8> }* [[TMP7]]
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.poly8x16x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP9:%.*]] = bitcast %struct.poly8x16x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP8]], i8* align 16 [[TMP9]], i64 64, i1 false)
++// CHECK:   [[TMP10:%.*]] = load %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly8x16x4_t [[TMP10]]
+ poly8x16x4_t test_vld4q_lane_p8(poly8_t  *a, poly8x16x4_t b) {
+   return vld4q_lane_p8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY16X8X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X8X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X8X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY16X8X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i16>] [[B_COERCE:%.*]], [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly16x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i16> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <8 x i16>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4lane.v8i16.p0i8(<8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], <8 x i16> [[TMP15]], i64 7, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
+-// CHECK-NEXT:    store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD4_LANE]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.poly16x8x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.poly16x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY16X8X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly16x8x4_t @test_vld4q_lane_p16(i16* %a, [4 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x8x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x8x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly16x8x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <8 x i16> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i16> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i16> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i16> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <8 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <8 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <8 x i16>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <8 x i16>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } @llvm.aarch64.neon.ld4lane.v8i16.p0i8(<8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], <8 x i16> [[TMP15]], i64 7, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }*
++// CHECK:   store { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> } [[VLD4_LANE]], { <8 x i16>, <8 x i16>, <8 x i16>, <8 x i16> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.poly16x8x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.poly16x8x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly16x8x4_t [[TMP19]]
+ poly16x8x4_t test_vld4q_lane_p16(poly16_t  *a, poly16x8x4_t b) {
+   return vld4q_lane_p16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld4q_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X2X4_T]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X2X4_T]], align 16
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X2X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x i64>] [[B_COERCE:%.*]], [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <2 x i64> [[TMP10]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <2 x i64>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4lane.v2i64.p0i8(<2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], <2 x i64> [[TMP15]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
+-// CHECK-NEXT:    store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4_LANE]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP16]], align 16
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.poly64x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.poly64x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[RETVAL]], align 16
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X2X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x2x4_t @test_vld4q_lane_p64(i64* %a, [4 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x2x4_t, align 16
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x2x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x2x4_t, align 16
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x2x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly64x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i64> [[TMP4]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i64> [[TMP6]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x i64> [[TMP8]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP11:%.*]] = bitcast <2 x i64> [[TMP10]] to <16 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP5]] to <2 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP7]] to <2 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP9]] to <2 x i64>
++// CHECK:   [[TMP15:%.*]] = bitcast <16 x i8> [[TMP11]] to <2 x i64>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } @llvm.aarch64.neon.ld4lane.v2i64.p0i8(<2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], <2 x i64> [[TMP15]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }*
++// CHECK:   store { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> } [[VLD4_LANE]], { <2 x i64>, <2 x i64>, <2 x i64>, <2 x i64> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.poly64x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.poly64x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP17]], i8* align 16 [[TMP18]], i64 64, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[RETVAL]], align 16
++// CHECK:   ret %struct.poly64x2x4_t [[TMP19]]
+ poly64x2x4_t test_vld4q_lane_p64(poly64_t  *a, poly64x2x4_t b) {
+   return vld4q_lane_p64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT8X8X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT8X8X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X8X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT8X8X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i8>] [[B_COERCE:%.*]], [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint8x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], <8 x i8> [[TMP6]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
+-// CHECK-NEXT:    store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD4_LANE]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP7]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.uint8x8x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast %struct.uint8x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP8]], i8* align 8 [[TMP9]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP10:%.*]] = load [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT8X8X4_T]] [[TMP10]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint8x8x4_t @test_vld4_lane_u8(i8* %a, [4 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint8x8x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint8x8x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint8x8x4_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP6:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
++// CHECK:   [[VLD4_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], <8 x i8> [[TMP6]], i64 7, i8* %a)
++// CHECK:   [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
++// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD4_LANE]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP7]]
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.uint8x8x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP9:%.*]] = bitcast %struct.uint8x8x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP8]], i8* align 8 [[TMP9]], i64 32, i1 false)
++// CHECK:   [[TMP10:%.*]] = load %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint8x8x4_t [[TMP10]]
+ uint8x8x4_t test_vld4_lane_u8(uint8_t  *a, uint8x8x4_t b) {
+   return vld4_lane_u8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT16X4X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x i16>] [[B_COERCE:%.*]], [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint16x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <4 x i16> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <4 x i16>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4lane.v4i16.p0i8(<4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], <4 x i16> [[TMP15]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
+-// CHECK-NEXT:    store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD4_LANE]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.uint16x4x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.uint16x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT16X4X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint16x4x4_t @test_vld4_lane_u16(i16* %a, [4 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint16x4x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint16x4x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint16x4x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <4 x i16> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <4 x i16>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4lane.v4i16.p0i8(<4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], <4 x i16> [[TMP15]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
++// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD4_LANE]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.uint16x4x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.uint16x4x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint16x4x4_t [[TMP19]]
+ uint16x4x4_t test_vld4_lane_u16(uint16_t  *a, uint16x4x4_t b) {
+   return vld4_lane_u16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT32X2X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x i32>] [[B_COERCE:%.*]], [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint32x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x i32> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <2 x i32> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <2 x i32>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4lane.v2i32.p0i8(<2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], <2 x i32> [[TMP15]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }*
+-// CHECK-NEXT:    store { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[VLD4_LANE]], { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.uint32x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.uint32x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT32X2X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint32x2x4_t @test_vld4_lane_u32(i32* %a, [4 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint32x2x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint32x2x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x i32>] [[B]].coerce, [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint32x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x i32> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <2 x i32> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x i32>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <2 x i32>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4lane.v2i32.p0i8(<2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], <2 x i32> [[TMP15]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }*
++// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[VLD4_LANE]], { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.uint32x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.uint32x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint32x2x4_t [[TMP19]]
+ uint32x2x4_t test_vld4_lane_u32(uint32_t  *a, uint32x2x4_t b) {
+   return vld4_lane_u32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_UINT64X1X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_UINT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <1 x i64>] [[B_COERCE:%.*]], [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x1x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x1x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.uint64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <1 x i64> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <1 x i64>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4lane.v1i64.p0i8(<1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], <1 x i64> [[TMP15]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD4_LANE]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.uint64x1x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.uint64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_UINT64X1X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.uint64x1x4_t @test_vld4_lane_u64(i64* %a, [4 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.uint64x1x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.uint64x1x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.uint64x1x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <1 x i64> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <1 x i64>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4lane.v1i64.p0i8(<1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], <1 x i64> [[TMP15]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD4_LANE]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.uint64x1x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.uint64x1x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.uint64x1x4_t [[TMP19]]
+ uint64x1x4_t test_vld4_lane_u64(uint64_t  *a, uint64x1x4_t b) {
+   return vld4_lane_u64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT8X8X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT8X8X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X8X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT8X8X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i8>] [[B_COERCE:%.*]], [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int8x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], <8 x i8> [[TMP6]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
+-// CHECK-NEXT:    store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD4_LANE]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP7]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.int8x8x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast %struct.int8x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP8]], i8* align 8 [[TMP9]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP10:%.*]] = load [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT8X8X4_T]] [[TMP10]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int8x8x4_t @test_vld4_lane_s8(i8* %a, [4 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int8x8x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int8x8x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int8x8x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int8x8x4_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP6:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
++// CHECK:   [[VLD4_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], <8 x i8> [[TMP6]], i64 7, i8* %a)
++// CHECK:   [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
++// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD4_LANE]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP7]]
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.int8x8x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP9:%.*]] = bitcast %struct.int8x8x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP8]], i8* align 8 [[TMP9]], i64 32, i1 false)
++// CHECK:   [[TMP10:%.*]] = load %struct.int8x8x4_t, %struct.int8x8x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int8x8x4_t [[TMP10]]
+ int8x8x4_t test_vld4_lane_s8(int8_t  *a, int8x8x4_t b) {
+   return vld4_lane_s8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT16X4X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x i16>] [[B_COERCE:%.*]], [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int16x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <4 x i16> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <4 x i16>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4lane.v4i16.p0i8(<4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], <4 x i16> [[TMP15]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
+-// CHECK-NEXT:    store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD4_LANE]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.int16x4x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.int16x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT16X4X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int16x4x4_t @test_vld4_lane_s16(i16* %a, [4 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int16x4x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int16x4x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int16x4x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int16x4x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <4 x i16> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <4 x i16>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4lane.v4i16.p0i8(<4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], <4 x i16> [[TMP15]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
++// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD4_LANE]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.int16x4x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.int16x4x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.int16x4x4_t, %struct.int16x4x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int16x4x4_t [[TMP19]]
+ int16x4x4_t test_vld4_lane_s16(int16_t  *a, int16x4x4_t b) {
+   return vld4_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT32X2X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x i32>] [[B_COERCE:%.*]], [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int32x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x i32> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <2 x i32> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <2 x i32>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4lane.v2i32.p0i8(<2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], <2 x i32> [[TMP15]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }*
+-// CHECK-NEXT:    store { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[VLD4_LANE]], { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.int32x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.int32x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT32X2X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int32x2x4_t @test_vld4_lane_s32(i32* %a, [4 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int32x2x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int32x2x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int32x2x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x i32>] [[B]].coerce, [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int32x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x i32> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x i32> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x i32> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <2 x i32> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x i32>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x i32>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x i32>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <2 x i32>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } @llvm.aarch64.neon.ld4lane.v2i32.p0i8(<2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], <2 x i32> [[TMP15]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }*
++// CHECK:   store { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> } [[VLD4_LANE]], { <2 x i32>, <2 x i32>, <2 x i32>, <2 x i32> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.int32x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.int32x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.int32x2x4_t, %struct.int32x2x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int32x2x4_t [[TMP19]]
+ int32x2x4_t test_vld4_lane_s32(int32_t  *a, int32x2x4_t b) {
+   return vld4_lane_s32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_INT64X1X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_INT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <1 x i64>] [[B_COERCE:%.*]], [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x1x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x1x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.int64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <1 x i64> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <1 x i64>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4lane.v1i64.p0i8(<1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], <1 x i64> [[TMP15]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD4_LANE]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.int64x1x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.int64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_INT64X1X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.int64x1x4_t @test_vld4_lane_s64(i64* %a, [4 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.int64x1x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.int64x1x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.int64x1x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.int64x1x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <1 x i64> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <1 x i64>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4lane.v1i64.p0i8(<1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], <1 x i64> [[TMP15]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD4_LANE]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.int64x1x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.int64x1x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.int64x1x4_t, %struct.int64x1x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.int64x1x4_t [[TMP19]]
+ int64x1x4_t test_vld4_lane_s64(int64_t  *a, int64x1x4_t b) {
+   return vld4_lane_s64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT16X4X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x half>] [[B_COERCE:%.*]], [4 x <4 x half>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float16x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x half> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x half> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x half> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <4 x half> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x half>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x half>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x half>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <4 x half>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <4 x half>, <4 x half>, <4 x half>, <4 x half> } @llvm.aarch64.neon.ld4lane.v4f16.p0i8(<4 x half> [[TMP12]], <4 x half> [[TMP13]], <4 x half> [[TMP14]], <4 x half> [[TMP15]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x half>, <4 x half>, <4 x half>, <4 x half> }*
+-// CHECK-NEXT:    store { <4 x half>, <4 x half>, <4 x half>, <4 x half> } [[VLD4_LANE]], { <4 x half>, <4 x half>, <4 x half>, <4 x half> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.float16x4x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.float16x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT16X4X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float16x4x4_t @test_vld4_lane_f16(half* %a, [4 x <4 x half>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float16x4x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.float16x4x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float16x4x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x half>] [[B]].coerce, [4 x <4 x half>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float16x4x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x half> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x half> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x half> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <4 x half> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x half>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x half>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x half>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <4 x half>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <4 x half>, <4 x half>, <4 x half>, <4 x half> } @llvm.aarch64.neon.ld4lane.v4f16.p0i8(<4 x half> [[TMP12]], <4 x half> [[TMP13]], <4 x half> [[TMP14]], <4 x half> [[TMP15]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x half>, <4 x half>, <4 x half>, <4 x half> }*
++// CHECK:   store { <4 x half>, <4 x half>, <4 x half>, <4 x half> } [[VLD4_LANE]], { <4 x half>, <4 x half>, <4 x half>, <4 x half> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.float16x4x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.float16x4x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.float16x4x4_t, %struct.float16x4x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float16x4x4_t [[TMP19]]
+ float16x4x4_t test_vld4_lane_f16(float16_t  *a, float16x4x4_t b) {
+   return vld4_lane_f16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT32X2X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x float>] [[B_COERCE:%.*]], [4 x <2 x float>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float32x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <2 x float> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <2 x float> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <2 x float> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <2 x float> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x float>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x float>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x float>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <2 x float>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4lane.v2f32.p0i8(<2 x float> [[TMP12]], <2 x float> [[TMP13]], <2 x float> [[TMP14]], <2 x float> [[TMP15]], i64 1, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x float>, <2 x float>, <2 x float>, <2 x float> }*
+-// CHECK-NEXT:    store { <2 x float>, <2 x float>, <2 x float>, <2 x float> } [[VLD4_LANE]], { <2 x float>, <2 x float>, <2 x float>, <2 x float> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.float32x2x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.float32x2x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT32X2X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float32x2x4_t @test_vld4_lane_f32(float* %a, [4 x <2 x float>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float32x2x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.float32x2x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float32x2x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x float>] [[B]].coerce, [4 x <2 x float>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float32x2x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <2 x float> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <2 x float> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <2 x float> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <2 x float> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <2 x float>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <2 x float>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <2 x float>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <2 x float>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <2 x float>, <2 x float>, <2 x float>, <2 x float> } @llvm.aarch64.neon.ld4lane.v2f32.p0i8(<2 x float> [[TMP12]], <2 x float> [[TMP13]], <2 x float> [[TMP14]], <2 x float> [[TMP15]], i64 1, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <2 x float>, <2 x float>, <2 x float>, <2 x float> }*
++// CHECK:   store { <2 x float>, <2 x float>, <2 x float>, <2 x float> } [[VLD4_LANE]], { <2 x float>, <2 x float>, <2 x float>, <2 x float> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.float32x2x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.float32x2x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.float32x2x4_t, %struct.float32x2x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float32x2x4_t [[TMP19]]
+ float32x2x4_t test_vld4_lane_f32(float32_t  *a, float32x2x4_t b) {
+   return vld4_lane_f32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_FLOAT64X1X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_FLOAT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <1 x double>] [[B_COERCE:%.*]], [4 x <1 x double>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x1x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x1x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x double> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x double> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <1 x double> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <1 x double> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x double>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x double>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x double>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <1 x double>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4lane.v1f64.p0i8(<1 x double> [[TMP12]], <1 x double> [[TMP13]], <1 x double> [[TMP14]], <1 x double> [[TMP15]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <1 x double>, <1 x double>, <1 x double>, <1 x double> }*
+-// CHECK-NEXT:    store { <1 x double>, <1 x double>, <1 x double>, <1 x double> } [[VLD4_LANE]], { <1 x double>, <1 x double>, <1 x double>, <1 x double> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.float64x1x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_FLOAT64X1X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.float64x1x4_t @test_vld4_lane_f64(double* %a, [4 x <1 x double>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.float64x1x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.float64x1x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.float64x1x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <1 x double>] [[B]].coerce, [4 x <1 x double>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x double> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x double> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <1 x double> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <1 x double> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x double>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x double>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x double>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <1 x double>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <1 x double>, <1 x double>, <1 x double>, <1 x double> } @llvm.aarch64.neon.ld4lane.v1f64.p0i8(<1 x double> [[TMP12]], <1 x double> [[TMP13]], <1 x double> [[TMP14]], <1 x double> [[TMP15]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <1 x double>, <1 x double>, <1 x double>, <1 x double> }*
++// CHECK:   store { <1 x double>, <1 x double>, <1 x double>, <1 x double> } [[VLD4_LANE]], { <1 x double>, <1 x double>, <1 x double>, <1 x double> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.float64x1x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.float64x1x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.float64x1x4_t, %struct.float64x1x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.float64x1x4_t [[TMP19]]
+ float64x1x4_t test_vld4_lane_f64(float64_t  *a, float64x1x4_t b) {
+   return vld4_lane_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY8X8X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X8X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X8X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY8X8X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i8>] [[B_COERCE:%.*]], [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly8x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], <8 x i8> [[TMP6]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
+-// CHECK-NEXT:    store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD4_LANE]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP7]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast %struct.poly8x8x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast %struct.poly8x8x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP8]], i8* align 8 [[TMP9]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP10:%.*]] = load [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY8X8X4_T]] [[TMP10]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly8x8x4_t @test_vld4_lane_p8(i8* %a, [4 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly8x8x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly8x8x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly8x8x4_t* [[__RET]] to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP6:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
++// CHECK:   [[VLD4_LANE:%.*]] = call { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } @llvm.aarch64.neon.ld4lane.v8i8.p0i8(<8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], <8 x i8> [[TMP6]], i64 7, i8* %a)
++// CHECK:   [[TMP7:%.*]] = bitcast i8* [[TMP2]] to { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }*
++// CHECK:   store { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> } [[VLD4_LANE]], { <8 x i8>, <8 x i8>, <8 x i8>, <8 x i8> }* [[TMP7]]
++// CHECK:   [[TMP8:%.*]] = bitcast %struct.poly8x8x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP9:%.*]] = bitcast %struct.poly8x8x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP8]], i8* align 8 [[TMP9]], i64 32, i1 false)
++// CHECK:   [[TMP10:%.*]] = load %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly8x8x4_t [[TMP10]]
+ poly8x8x4_t test_vld4_lane_p8(poly8_t  *a, poly8x8x4_t b) {
+   return vld4_lane_p8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY16X4X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X4X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X4X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY16X4X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x i16>] [[B_COERCE:%.*]], [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly16x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <4 x i16> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <4 x i16>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4lane.v4i16.p0i8(<4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], <4 x i16> [[TMP15]], i64 3, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
+-// CHECK-NEXT:    store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD4_LANE]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.poly16x4x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.poly16x4x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY16X4X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly16x4x4_t @test_vld4_lane_p16(i16* %a, [4 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly16x4x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly16x4x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly16x4x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <4 x i16> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <4 x i16> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <4 x i16> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <4 x i16> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <4 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <4 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <4 x i16>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <4 x i16>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } @llvm.aarch64.neon.ld4lane.v4i16.p0i8(<4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], <4 x i16> [[TMP15]], i64 3, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }*
++// CHECK:   store { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> } [[VLD4_LANE]], { <4 x i16>, <4 x i16>, <4 x i16>, <4 x i16> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.poly16x4x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.poly16x4x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly16x4x4_t [[TMP19]]
+ poly16x4x4_t test_vld4_lane_p16(poly16_t  *a, poly16x4x4_t b) {
+   return vld4_lane_p16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vld4_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[RETVAL:%.*]] = alloca [[STRUCT_POLY64X1X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X1X4_T]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X1X4_T]], align 8
+-// CHECK-NEXT:    [[__RET:%.*]] = alloca [[STRUCT_POLY64X1X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <1 x i64>] [[B_COERCE:%.*]], [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x1x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x1x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast %struct.poly64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP10:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <1 x i64> [[TMP10]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <1 x i64>
+-// CHECK-NEXT:    [[VLD4_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4lane.v1i64.p0i8(<1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], <1 x i64> [[TMP15]], i64 0, i8* [[TMP3]])
+-// CHECK-NEXT:    [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
+-// CHECK-NEXT:    store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD4_LANE]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP16]], align 8
+-// CHECK-NEXT:    [[TMP17:%.*]] = bitcast %struct.poly64x1x4_t* [[RETVAL]] to i8*
+-// CHECK-NEXT:    [[TMP18:%.*]] = bitcast %struct.poly64x1x4_t* [[__RET]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP19:%.*]] = load [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[RETVAL]], align 8
+-// CHECK-NEXT:    ret [[STRUCT_POLY64X1X4_T]] [[TMP19]]
+-//
++// CHECK-LABEL: define{{.*}} %struct.poly64x1x4_t @test_vld4_lane_p64(i64* %a, [4 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[RETVAL:%.*]] = alloca %struct.poly64x1x4_t, align 8
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x1x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x1x4_t, align 8
++// CHECK:   [[__RET:%.*]] = alloca %struct.poly64x1x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x1x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast %struct.poly64x1x4_t* [[__RET]] to i8*
++// CHECK:   [[TMP3:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP4:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP5:%.*]] = bitcast <1 x i64> [[TMP4]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP6:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP7:%.*]] = bitcast <1 x i64> [[TMP6]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP8:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP9:%.*]] = bitcast <1 x i64> [[TMP8]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP10:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP11:%.*]] = bitcast <1 x i64> [[TMP10]] to <8 x i8>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP5]] to <1 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP7]] to <1 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP9]] to <1 x i64>
++// CHECK:   [[TMP15:%.*]] = bitcast <8 x i8> [[TMP11]] to <1 x i64>
++// CHECK:   [[VLD4_LANE:%.*]] = call { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } @llvm.aarch64.neon.ld4lane.v1i64.p0i8(<1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], <1 x i64> [[TMP15]], i64 0, i8* [[TMP3]])
++// CHECK:   [[TMP16:%.*]] = bitcast i8* [[TMP2]] to { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }*
++// CHECK:   store { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> } [[VLD4_LANE]], { <1 x i64>, <1 x i64>, <1 x i64>, <1 x i64> }* [[TMP16]]
++// CHECK:   [[TMP17:%.*]] = bitcast %struct.poly64x1x4_t* [[RETVAL]] to i8*
++// CHECK:   [[TMP18:%.*]] = bitcast %struct.poly64x1x4_t* [[__RET]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP17]], i8* align 8 [[TMP18]], i64 32, i1 false)
++// CHECK:   [[TMP19:%.*]] = load %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[RETVAL]], align 8
++// CHECK:   ret %struct.poly64x1x4_t [[TMP19]]
+ poly64x1x4_t test_vld4_lane_p64(poly64_t  *a, poly64x1x4_t b) {
+   return vld4_lane_p64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = extractelement <16 x i8> [[B:%.*]], i32 15
+-// CHECK-NEXT:    store i8 [[TMP0]], i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_u8(i8* %a, <16 x i8> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = extractelement <16 x i8> %b, i32 15
++// CHECK:   store i8 [[TMP0]], i8* %a
++// CHECK:   ret void
+ void test_vst1q_lane_u8(uint8_t  *a, uint8x16_t b) {
+   vst1q_lane_u8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <8 x i16> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <8 x i16> [[TMP2]], i32 7
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    store i16 [[TMP3]], i16* [[TMP4]], align 2
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_u16(i16* %a, <8 x i16> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
++// CHECK:   [[TMP3:%.*]] = extractelement <8 x i16> [[TMP2]], i32 7
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   store i16 [[TMP3]], i16* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_u16(uint16_t  *a, uint16x8_t b) {
+   vst1q_lane_u16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i32> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <4 x i32> [[TMP2]], i32 3
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    store i32 [[TMP3]], i32* [[TMP4]], align 4
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_u32(i32* %a, <4 x i32> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
++// CHECK:   [[TMP3:%.*]] = extractelement <4 x i32> [[TMP2]], i32 3
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   store i32 [[TMP3]], i32* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_u32(uint32_t  *a, uint32x4_t b) {
+   vst1q_lane_u32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i64> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <2 x i64> [[TMP2]], i32 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    store i64 [[TMP3]], i64* [[TMP4]], align 8
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_u64(i64* %a, <2 x i64> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
++// CHECK:   [[TMP3:%.*]] = extractelement <2 x i64> [[TMP2]], i32 1
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   store i64 [[TMP3]], i64* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_u64(uint64_t  *a, uint64x2_t b) {
+   vst1q_lane_u64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = extractelement <16 x i8> [[B:%.*]], i32 15
+-// CHECK-NEXT:    store i8 [[TMP0]], i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_s8(i8* %a, <16 x i8> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = extractelement <16 x i8> %b, i32 15
++// CHECK:   store i8 [[TMP0]], i8* %a
++// CHECK:   ret void
+ void test_vst1q_lane_s8(int8_t  *a, int8x16_t b) {
+   vst1q_lane_s8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <8 x i16> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <8 x i16> [[TMP2]], i32 7
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    store i16 [[TMP3]], i16* [[TMP4]], align 2
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_s16(i16* %a, <8 x i16> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
++// CHECK:   [[TMP3:%.*]] = extractelement <8 x i16> [[TMP2]], i32 7
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   store i16 [[TMP3]], i16* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_s16(int16_t  *a, int16x8_t b) {
+   vst1q_lane_s16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i32> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <4 x i32> [[TMP2]], i32 3
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    store i32 [[TMP3]], i32* [[TMP4]], align 4
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_s32(i32* %a, <4 x i32> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x i32> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x i32>
++// CHECK:   [[TMP3:%.*]] = extractelement <4 x i32> [[TMP2]], i32 3
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   store i32 [[TMP3]], i32* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_s32(int32_t  *a, int32x4_t b) {
+   vst1q_lane_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i64> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <2 x i64> [[TMP2]], i32 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    store i64 [[TMP3]], i64* [[TMP4]], align 8
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_s64(i64* %a, <2 x i64> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
++// CHECK:   [[TMP3:%.*]] = extractelement <2 x i64> [[TMP2]], i32 1
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   store i64 [[TMP3]], i64* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_s64(int64_t  *a, int64x2_t b) {
+   vst1q_lane_s64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <8 x half> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x half>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <8 x half> [[TMP2]], i32 7
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to half*
+-// CHECK-NEXT:    store half [[TMP3]], half* [[TMP4]], align 2
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_f16(half* %a, <8 x half> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <8 x half> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x half>
++// CHECK:   [[TMP3:%.*]] = extractelement <8 x half> [[TMP2]], i32 7
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to half*
++// CHECK:   store half [[TMP3]], half* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_f16(float16_t  *a, float16x8_t b) {
+   vst1q_lane_f16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x float> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <4 x float> [[TMP2]], i32 3
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to float*
+-// CHECK-NEXT:    store float [[TMP3]], float* [[TMP4]], align 4
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_f32(float* %a, <4 x float> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x float> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <4 x float>
++// CHECK:   [[TMP3:%.*]] = extractelement <4 x float> [[TMP2]], i32 3
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to float*
++// CHECK:   store float [[TMP3]], float* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_f32(float32_t  *a, float32x4_t b) {
+   vst1q_lane_f32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x double> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <2 x double> [[TMP2]], i32 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to double*
+-// CHECK-NEXT:    store double [[TMP3]], double* [[TMP4]], align 8
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_f64(double* %a, <2 x double> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x double> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x double>
++// CHECK:   [[TMP3:%.*]] = extractelement <2 x double> [[TMP2]], i32 1
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to double*
++// CHECK:   store double [[TMP3]], double* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_f64(float64_t  *a, float64x2_t b) {
+   vst1q_lane_f64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = extractelement <16 x i8> [[B:%.*]], i32 15
+-// CHECK-NEXT:    store i8 [[TMP0]], i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_p8(i8* %a, <16 x i8> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = extractelement <16 x i8> %b, i32 15
++// CHECK:   store i8 [[TMP0]], i8* %a
++// CHECK:   ret void
+ void test_vst1q_lane_p8(poly8_t  *a, poly8x16_t b) {
+   vst1q_lane_p8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <8 x i16> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <8 x i16> [[TMP2]], i32 7
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    store i16 [[TMP3]], i16* [[TMP4]], align 2
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_p16(i16* %a, <8 x i16> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <8 x i16> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <8 x i16>
++// CHECK:   [[TMP3:%.*]] = extractelement <8 x i16> [[TMP2]], i32 7
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   store i16 [[TMP3]], i16* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_p16(poly16_t  *a, poly16x8_t b) {
+   vst1q_lane_p16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst1q_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i64> [[B:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <2 x i64> [[TMP2]], i32 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    store i64 [[TMP3]], i64* [[TMP4]], align 8
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1q_lane_p64(i64* %a, <2 x i64> %b) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x i64> %b to <16 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <16 x i8> [[TMP1]] to <2 x i64>
++// CHECK:   [[TMP3:%.*]] = extractelement <2 x i64> [[TMP2]], i32 1
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   store i64 [[TMP3]], i64* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1q_lane_p64(poly64_t  *a, poly64x2_t b) {
+   vst1q_lane_p64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = extractelement <8 x i8> [[B:%.*]], i32 7
+-// CHECK-NEXT:    store i8 [[TMP0]], i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_u8(i8* %a, <8 x i8> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = extractelement <8 x i8> %b, i32 7
++// CHECK:   store i8 [[TMP0]], i8* %a
++// CHECK:   ret void
+ void test_vst1_lane_u8(uint8_t  *a, uint8x8_t b) {
+   vst1_lane_u8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i16> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <4 x i16> [[TMP2]], i32 3
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    store i16 [[TMP3]], i16* [[TMP4]], align 2
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_u16(i16* %a, <4 x i16> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
++// CHECK:   [[TMP3:%.*]] = extractelement <4 x i16> [[TMP2]], i32 3
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   store i16 [[TMP3]], i16* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_u16(uint16_t  *a, uint16x4_t b) {
+   vst1_lane_u16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i32> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <2 x i32> [[TMP2]], i32 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    store i32 [[TMP3]], i32* [[TMP4]], align 4
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_u32(i32* %a, <2 x i32> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
++// CHECK:   [[TMP3:%.*]] = extractelement <2 x i32> [[TMP2]], i32 1
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   store i32 [[TMP3]], i32* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_u32(uint32_t  *a, uint32x2_t b) {
+   vst1_lane_u32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <1 x i64> [[TMP2]], i32 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    store i64 [[TMP3]], i64* [[TMP4]], align 8
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_u64(i64* %a, <1 x i64> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
++// CHECK:   [[TMP3:%.*]] = extractelement <1 x i64> [[TMP2]], i32 0
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   store i64 [[TMP3]], i64* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_u64(uint64_t  *a, uint64x1_t b) {
+   vst1_lane_u64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = extractelement <8 x i8> [[B:%.*]], i32 7
+-// CHECK-NEXT:    store i8 [[TMP0]], i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_s8(i8* %a, <8 x i8> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = extractelement <8 x i8> %b, i32 7
++// CHECK:   store i8 [[TMP0]], i8* %a
++// CHECK:   ret void
+ void test_vst1_lane_s8(int8_t  *a, int8x8_t b) {
+   vst1_lane_s8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i16> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <4 x i16> [[TMP2]], i32 3
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    store i16 [[TMP3]], i16* [[TMP4]], align 2
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_s16(i16* %a, <4 x i16> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
++// CHECK:   [[TMP3:%.*]] = extractelement <4 x i16> [[TMP2]], i32 3
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   store i16 [[TMP3]], i16* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_s16(int16_t  *a, int16x4_t b) {
+   vst1_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x i32> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <2 x i32> [[TMP2]], i32 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i32*
+-// CHECK-NEXT:    store i32 [[TMP3]], i32* [[TMP4]], align 4
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_s32(i32* %a, <2 x i32> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x i32> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x i32>
++// CHECK:   [[TMP3:%.*]] = extractelement <2 x i32> [[TMP2]], i32 1
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i32*
++// CHECK:   store i32 [[TMP3]], i32* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_s32(int32_t  *a, int32x2_t b) {
+   vst1_lane_s32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <1 x i64> [[TMP2]], i32 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    store i64 [[TMP3]], i64* [[TMP4]], align 8
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_s64(i64* %a, <1 x i64> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
++// CHECK:   [[TMP3:%.*]] = extractelement <1 x i64> [[TMP2]], i32 0
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   store i64 [[TMP3]], i64* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_s64(int64_t  *a, int64x1_t b) {
+   vst1_lane_s64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x half> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x half>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <4 x half> [[TMP2]], i32 3
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to half*
+-// CHECK-NEXT:    store half [[TMP3]], half* [[TMP4]], align 2
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_f16(half* %a, <4 x half> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x half> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x half>
++// CHECK:   [[TMP3:%.*]] = extractelement <4 x half> [[TMP2]], i32 3
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to half*
++// CHECK:   store half [[TMP3]], half* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_f16(float16_t  *a, float16x4_t b) {
+   vst1_lane_f16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <2 x float> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <2 x float> [[TMP2]], i32 1
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to float*
+-// CHECK-NEXT:    store float [[TMP3]], float* [[TMP4]], align 4
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_f32(float* %a, <2 x float> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <2 x float> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <2 x float>
++// CHECK:   [[TMP3:%.*]] = extractelement <2 x float> [[TMP2]], i32 1
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to float*
++// CHECK:   store float [[TMP3]], float* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_f32(float32_t  *a, float32x2_t b) {
+   vst1_lane_f32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x double> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <1 x double> [[TMP2]], i32 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to double*
+-// CHECK-NEXT:    store double [[TMP3]], double* [[TMP4]], align 8
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_f64(double* %a, <1 x double> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
++// CHECK:   [[TMP3:%.*]] = extractelement <1 x double> [[TMP2]], i32 0
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to double*
++// CHECK:   store double [[TMP3]], double* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_f64(float64_t  *a, float64x1_t b) {
+   vst1_lane_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = extractelement <8 x i8> [[B:%.*]], i32 7
+-// CHECK-NEXT:    store i8 [[TMP0]], i8* [[A:%.*]], align 1
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_p8(i8* %a, <8 x i8> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = extractelement <8 x i8> %b, i32 7
++// CHECK:   store i8 [[TMP0]], i8* %a
++// CHECK:   ret void
+ void test_vst1_lane_p8(poly8_t  *a, poly8x8_t b) {
+   vst1_lane_p8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <4 x i16> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <4 x i16> [[TMP2]], i32 3
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
+-// CHECK-NEXT:    store i16 [[TMP3]], i16* [[TMP4]], align 2
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_p16(i16* %a, <4 x i16> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <4 x i16> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <4 x i16>
++// CHECK:   [[TMP3:%.*]] = extractelement <4 x i16> [[TMP2]], i32 3
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i16*
++// CHECK:   store i16 [[TMP3]], i16* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_p16(poly16_t  *a, poly16x4_t b) {
+   vst1_lane_p16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst1_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP3:%.*]] = extractelement <1 x i64> [[TMP2]], i32 0
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
+-// CHECK-NEXT:    store i64 [[TMP3]], i64* [[TMP4]], align 8
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst1_lane_p64(i64* %a, <1 x i64> %b) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x i64>
++// CHECK:   [[TMP3:%.*]] = extractelement <1 x i64> [[TMP2]], i32 0
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP0]] to i64*
++// CHECK:   store i64 [[TMP3]], i64* [[TMP4]]
++// CHECK:   ret void
+ void test_vst1_lane_p64(poly64_t  *a, poly64x1_t b) {
+   vst1_lane_p64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT8X16X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X16X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X2_T]], %struct.uint8x16x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <16 x i8>] [[B_COERCE:%.*]], [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x16x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X2_T]], %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X2_T]], %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_u8(i8* %a, [2 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint8x16x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <16 x i8>] [[B]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x2_t, %struct.uint8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i64 15, i8* %a)
++// CHECK:   ret void
+ void test_vst2q_lane_u8(uint8_t  *a, uint8x16x2_t b) {
+   vst2q_lane_u8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X8X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X2_T]], %struct.uint16x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i16>] [[B_COERCE:%.*]], [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X2_T]], %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X2_T]], %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v8i16.p0i8(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_u16(i16* %a, [2 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x2_t, %struct.uint16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v8i16.p0i8(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_u16(uint16_t  *a, uint16x8x2_t b) {
+   vst2q_lane_u16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X4X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X2_T]], %struct.uint32x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x i32>] [[B_COERCE:%.*]], [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X2_T]], %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X2_T]], %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v4i32.p0i8(<4 x i32> [[TMP7]], <4 x i32> [[TMP8]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_u32(i32* %a, [2 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x i32>] [[B]].coerce, [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x2_t, %struct.uint32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v4i32.p0i8(<4 x i32> [[TMP7]], <4 x i32> [[TMP8]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_u32(uint32_t  *a, uint32x4x2_t b) {
+   vst2q_lane_u32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X2_T]], %struct.uint64x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x i64>] [[B_COERCE:%.*]], [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X2_T]], %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X2_T]], %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v2i64.p0i8(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_u64(i64* %a, [2 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x2_t, %struct.uint64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v2i64.p0i8(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_u64(uint64_t  *a, uint64x2x2_t b) {
+   vst2q_lane_u64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT8X16X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X16X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X2_T]], %struct.int8x16x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <16 x i8>] [[B_COERCE:%.*]], [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x16x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X2_T]], %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X2_T]], %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_s8(i8* %a, [2 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int8x16x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <16 x i8>] [[B]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x2_t, %struct.int8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i64 15, i8* %a)
++// CHECK:   ret void
+ void test_vst2q_lane_s8(int8_t  *a, int8x16x2_t b) {
+   vst2q_lane_s8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X8X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X2_T]], %struct.int16x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i16>] [[B_COERCE:%.*]], [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X2_T]], %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X2_T]], %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v8i16.p0i8(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_s16(i16* %a, [2 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int16x8x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x2_t, %struct.int16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v8i16.p0i8(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_s16(int16_t  *a, int16x8x2_t b) {
+   vst2q_lane_s16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X4X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X2_T]], %struct.int32x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x i32>] [[B_COERCE:%.*]], [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X2_T]], %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X2_T]], %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v4i32.p0i8(<4 x i32> [[TMP7]], <4 x i32> [[TMP8]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_s32(i32* %a, [2 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int32x4x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x i32>] [[B]].coerce, [2 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x2_t, %struct.int32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i32>], [2 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v4i32.p0i8(<4 x i32> [[TMP7]], <4 x i32> [[TMP8]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_s32(int32_t  *a, int32x4x2_t b) {
+   vst2q_lane_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X2_T]], %struct.int64x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x i64>] [[B_COERCE:%.*]], [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X2_T]], %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X2_T]], %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v2i64.p0i8(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_s64(i64* %a, [2 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int64x2x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x2_t, %struct.int64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v2i64.p0i8(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_s64(int64_t  *a, int64x2x2_t b) {
+   vst2q_lane_s64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X8X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X8X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X2_T]], %struct.float16x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x half>] [[B_COERCE:%.*]], [2 x <8 x half>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X2_T]], %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X2_T]], %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x half>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x half>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v8f16.p0i8(<8 x half> [[TMP7]], <8 x half> [[TMP8]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_f16(half* %a, [2 x <8 x half>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float16x8x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x half>] [[B]].coerce, [2 x <8 x half>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x2_t, %struct.float16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x half>], [2 x <8 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x half>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x half>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v8f16.p0i8(<8 x half> [[TMP7]], <8 x half> [[TMP8]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_f16(float16_t  *a, float16x8x2_t b) {
+   vst2q_lane_f16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X4X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X4X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X2_T]], %struct.float32x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x float>] [[B_COERCE:%.*]], [2 x <4 x float>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X2_T]], %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X2_T]], %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v4f32.p0i8(<4 x float> [[TMP7]], <4 x float> [[TMP8]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_f32(float* %a, [2 x <4 x float>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float32x4x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x float>] [[B]].coerce, [2 x <4 x float>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x2_t, %struct.float32x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x float>], [2 x <4 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v4f32.p0i8(<4 x float> [[TMP7]], <4 x float> [[TMP8]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_f32(float32_t  *a, float32x4x2_t b) {
+   vst2q_lane_f32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X2X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X2_T]], %struct.float64x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x double>] [[B_COERCE:%.*]], [2 x <2 x double>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X2_T]], %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X2_T]], %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v2f64.p0i8(<2 x double> [[TMP7]], <2 x double> [[TMP8]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_f64(double* %a, [2 x <2 x double>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float64x2x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x double>] [[B]].coerce, [2 x <2 x double>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x2_t, %struct.float64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x double>], [2 x <2 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v2f64.p0i8(<2 x double> [[TMP7]], <2 x double> [[TMP8]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_f64(float64_t  *a, float64x2x2_t b) {
+   vst2q_lane_f64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X16X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X16X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X2_T]], %struct.poly8x16x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <16 x i8>] [[B_COERCE:%.*]], [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x16x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X2_T]], %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X2_T]], %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_p8(i8* %a, [2 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <16 x i8>] [[B]].coerce, [2 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x2_t, %struct.poly8x16x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <16 x i8>], [2 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], i64 15, i8* %a)
++// CHECK:   ret void
+ void test_vst2q_lane_p8(poly8_t  *a, poly8x16x2_t b) {
+   vst2q_lane_p8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X8X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X8X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X2_T]], %struct.poly16x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i16>] [[B_COERCE:%.*]], [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X2_T]], %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X2_T]], %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v8i16.p0i8(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_p16(i16* %a, [2 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i16>] [[B]].coerce, [2 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x2_t, %struct.poly16x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i16>], [2 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v8i16.p0i8(<8 x i16> [[TMP7]], <8 x i16> [[TMP8]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_p16(poly16_t  *a, poly16x8x2_t b) {
+   vst2q_lane_p16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst2q_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X2X2_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X2X2_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X2_T]], %struct.poly64x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x i64>] [[B_COERCE:%.*]], [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X2_T]], %struct.poly64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X2_T]], %struct.poly64x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v2i64.p0i8(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2q_lane_p64(i64* %a, [2 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x2x2_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x2x2_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x i64>] [[B]].coerce, [2 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x2x2_t, %struct.poly64x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i64>], [2 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
++// CHECK:   [[TMP8:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v2i64.p0i8(<2 x i64> [[TMP7]], <2 x i64> [[TMP8]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2q_lane_p64(poly64_t  *a, poly64x2x2_t b) {
+   vst2q_lane_p64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT8X8X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X8X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X2_T]], %struct.uint8x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i8>] [[B_COERCE:%.*]], [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X2_T]], %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X2_T]], %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_u8(i8* %a, [2 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x2_t, %struct.uint8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i64 7, i8* %a)
++// CHECK:   ret void
+ void test_vst2_lane_u8(uint8_t  *a, uint8x8x2_t b) {
+   vst2_lane_u8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X4X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X2_T]], %struct.uint16x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x i16>] [[B_COERCE:%.*]], [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X2_T]], %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X2_T]], %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v4i16.p0i8(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_u16(i16* %a, [2 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x2_t, %struct.uint16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v4i16.p0i8(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_u16(uint16_t  *a, uint16x4x2_t b) {
+   vst2_lane_u16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X2X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X2_T]], %struct.uint32x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x i32>] [[B_COERCE:%.*]], [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X2_T]], %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X2_T]], %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v2i32.p0i8(<2 x i32> [[TMP7]], <2 x i32> [[TMP8]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_u32(i32* %a, [2 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x i32>] [[B]].coerce, [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x2_t, %struct.uint32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v2i32.p0i8(<2 x i32> [[TMP7]], <2 x i32> [[TMP8]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_u32(uint32_t  *a, uint32x2x2_t b) {
+   vst2_lane_u32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X1X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X2_T]], %struct.uint64x1x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <1 x i64>] [[B_COERCE:%.*]], [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x1x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x1x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X2_T]], %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X2_T]], %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v1i64.p0i8(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_u64(i64* %a, [2 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x2_t, %struct.uint64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v1i64.p0i8(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_u64(uint64_t  *a, uint64x1x2_t b) {
+   vst2_lane_u64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT8X8X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X8X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X2_T]], %struct.int8x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i8>] [[B_COERCE:%.*]], [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X2_T]], %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X2_T]], %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_s8(i8* %a, [2 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int8x8x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x2_t, %struct.int8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i64 7, i8* %a)
++// CHECK:   ret void
+ void test_vst2_lane_s8(int8_t  *a, int8x8x2_t b) {
+   vst2_lane_s8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X4X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X2_T]], %struct.int16x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x i16>] [[B_COERCE:%.*]], [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X2_T]], %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X2_T]], %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v4i16.p0i8(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_s16(i16* %a, [2 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int16x4x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x2_t, %struct.int16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v4i16.p0i8(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_s16(int16_t  *a, int16x4x2_t b) {
+   vst2_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X2X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X2_T]], %struct.int32x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x i32>] [[B_COERCE:%.*]], [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X2_T]], %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X2_T]], %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v2i32.p0i8(<2 x i32> [[TMP7]], <2 x i32> [[TMP8]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_s32(i32* %a, [2 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int32x2x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x i32>] [[B]].coerce, [2 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x2_t, %struct.int32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x i32>], [2 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v2i32.p0i8(<2 x i32> [[TMP7]], <2 x i32> [[TMP8]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_s32(int32_t  *a, int32x2x2_t b) {
+   vst2_lane_s32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X1X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X2_T]], %struct.int64x1x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <1 x i64>] [[B_COERCE:%.*]], [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x1x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x1x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X2_T]], %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X2_T]], %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v1i64.p0i8(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_s64(i64* %a, [2 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int64x1x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x2_t, %struct.int64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v1i64.p0i8(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_s64(int64_t  *a, int64x1x2_t b) {
+   vst2_lane_s64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X4X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X4X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X2_T]], %struct.float16x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x half>] [[B_COERCE:%.*]], [2 x <4 x half>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X2_T]], %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X2_T]], %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x half>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x half>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v4f16.p0i8(<4 x half> [[TMP7]], <4 x half> [[TMP8]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_f16(half* %a, [2 x <4 x half>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float16x4x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x half>] [[B]].coerce, [2 x <4 x half>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x2_t, %struct.float16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x half>], [2 x <4 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x half>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x half>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v4f16.p0i8(<4 x half> [[TMP7]], <4 x half> [[TMP8]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_f16(float16_t  *a, float16x4x2_t b) {
+   vst2_lane_f16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X2X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X2X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X2_T]], %struct.float32x2x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <2 x float>] [[B_COERCE:%.*]], [2 x <2 x float>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x2x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X2_T]], %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X2_T]], %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v2f32.p0i8(<2 x float> [[TMP7]], <2 x float> [[TMP8]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_f32(float* %a, [2 x <2 x float>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float32x2x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <2 x float>] [[B]].coerce, [2 x <2 x float>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x2_t, %struct.float32x2x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <2 x float>], [2 x <2 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v2f32.p0i8(<2 x float> [[TMP7]], <2 x float> [[TMP8]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_f32(float32_t  *a, float32x2x2_t b) {
+   vst2_lane_f32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X1X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X1X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X2_T]], %struct.float64x1x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <1 x double>] [[B_COERCE:%.*]], [2 x <1 x double>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x1x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x1x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X2_T]], %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X2_T]], %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v1f64.p0i8(<1 x double> [[TMP7]], <1 x double> [[TMP8]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_f64(double* %a, [2 x <1 x double>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float64x1x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <1 x double>] [[B]].coerce, [2 x <1 x double>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x2_t, %struct.float64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x double>], [2 x <1 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v1f64.p0i8(<1 x double> [[TMP7]], <1 x double> [[TMP8]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_f64(float64_t  *a, float64x1x2_t b) {
+   vst2_lane_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X8X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X8X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X2_T]], %struct.poly8x8x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <8 x i8>] [[B_COERCE:%.*]], [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x8x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X2_T]], %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X2_T]], %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_p8(i8* %a, [2 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <8 x i8>] [[B]].coerce, [2 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x2_t, %struct.poly8x8x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <8 x i8>], [2 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], i64 7, i8* %a)
++// CHECK:   ret void
+ void test_vst2_lane_p8(poly8_t  *a, poly8x8x2_t b) {
+   vst2_lane_p8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X4X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X4X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X2_T]], %struct.poly16x4x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <4 x i16>] [[B_COERCE:%.*]], [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x4x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X2_T]], %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X2_T]], %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v4i16.p0i8(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_p16(i16* %a, [2 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <4 x i16>] [[B]].coerce, [2 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x2_t, %struct.poly16x4x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <4 x i16>], [2 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v4i16.p0i8(<4 x i16> [[TMP7]], <4 x i16> [[TMP8]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_p16(poly16_t  *a, poly16x4x2_t b) {
+   vst2_lane_p16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst2_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X1X2_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X1X2_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X2_T]], %struct.poly64x1x2_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [2 x <1 x i64>] [[B_COERCE:%.*]], [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x1x2_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x1x2_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X2_T]], %struct.poly64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X2_T]], %struct.poly64x1x2_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st2lane.v1i64.p0i8(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst2_lane_p64(i64* %a, [2 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x1x2_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x1x2_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[B]], i32 0, i32 0
++// CHECK:   store [2 x <1 x i64>] [[B]].coerce, [2 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x2_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x1x2_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 16, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x1x2_t, %struct.poly64x1x2_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [2 x <1 x i64>], [2 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
++// CHECK:   [[TMP7:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st2lane.v1i64.p0i8(<1 x i64> [[TMP7]], <1 x i64> [[TMP8]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst2_lane_p64(poly64_t  *a, poly64x1x2_t b) {
+   vst2_lane_p64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT8X16X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X16X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X3_T]], %struct.uint8x16x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <16 x i8>] [[B_COERCE:%.*]], [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x16x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x16x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X3_T]], %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X3_T]], %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X3_T]], %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_u8(i8* %a, [3 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint8x16x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <16 x i8>] [[B]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x16x3_t, %struct.uint8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* %a)
++// CHECK:   ret void
+ void test_vst3q_lane_u8(uint8_t  *a, uint8x16x3_t b) {
+   vst3q_lane_u8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X8X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X3_T]], %struct.uint16x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i16>] [[B_COERCE:%.*]], [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X3_T]], %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X3_T]], %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X3_T]], %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v8i16.p0i8(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_u16(i16* %a, [3 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x8x3_t, %struct.uint16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v8i16.p0i8(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_u16(uint16_t  *a, uint16x8x3_t b) {
+   vst3q_lane_u16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X4X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X3_T]], %struct.uint32x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x i32>] [[B_COERCE:%.*]], [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X3_T]], %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X3_T]], %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X3_T]], %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v4i32.p0i8(<4 x i32> [[TMP9]], <4 x i32> [[TMP10]], <4 x i32> [[TMP11]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_u32(i32* %a, [3 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x i32>] [[B]].coerce, [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x4x3_t, %struct.uint32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v4i32.p0i8(<4 x i32> [[TMP9]], <4 x i32> [[TMP10]], <4 x i32> [[TMP11]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_u32(uint32_t  *a, uint32x4x3_t b) {
+   vst3q_lane_u32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X3_T]], %struct.uint64x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x i64>] [[B_COERCE:%.*]], [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X3_T]], %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X3_T]], %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X3_T]], %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v2i64.p0i8(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_u64(i64* %a, [3 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x2x3_t, %struct.uint64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v2i64.p0i8(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_u64(uint64_t  *a, uint64x2x3_t b) {
+   vst3q_lane_u64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT8X16X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X16X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X3_T]], %struct.int8x16x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <16 x i8>] [[B_COERCE:%.*]], [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x16x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x16x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X3_T]], %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X3_T]], %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X3_T]], %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_s8(i8* %a, [3 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int8x16x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <16 x i8>] [[B]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x16x3_t, %struct.int8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* %a)
++// CHECK:   ret void
+ void test_vst3q_lane_s8(int8_t  *a, int8x16x3_t b) {
+   vst3q_lane_s8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X8X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X3_T]], %struct.int16x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i16>] [[B_COERCE:%.*]], [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X3_T]], %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X3_T]], %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X3_T]], %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v8i16.p0i8(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_s16(i16* %a, [3 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int16x8x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x8x3_t, %struct.int16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v8i16.p0i8(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_s16(int16_t  *a, int16x8x3_t b) {
+   vst3q_lane_s16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X4X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X3_T]], %struct.int32x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x i32>] [[B_COERCE:%.*]], [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X3_T]], %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X3_T]], %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X3_T]], %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v4i32.p0i8(<4 x i32> [[TMP9]], <4 x i32> [[TMP10]], <4 x i32> [[TMP11]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_s32(i32* %a, [3 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int32x4x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x i32>] [[B]].coerce, [3 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x4x3_t, %struct.int32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i32>], [3 x <4 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v4i32.p0i8(<4 x i32> [[TMP9]], <4 x i32> [[TMP10]], <4 x i32> [[TMP11]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_s32(int32_t  *a, int32x4x3_t b) {
+   vst3q_lane_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X3_T]], %struct.int64x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x i64>] [[B_COERCE:%.*]], [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X3_T]], %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X3_T]], %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X3_T]], %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v2i64.p0i8(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_s64(i64* %a, [3 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int64x2x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x2x3_t, %struct.int64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v2i64.p0i8(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_s64(int64_t  *a, int64x2x3_t b) {
+   vst3q_lane_s64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X8X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X8X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X3_T]], %struct.float16x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x half>] [[B_COERCE:%.*]], [3 x <8 x half>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X3_T]], %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X3_T]], %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X3_T]], %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x half> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x half>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x half>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x half>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v8f16.p0i8(<8 x half> [[TMP9]], <8 x half> [[TMP10]], <8 x half> [[TMP11]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_f16(half* %a, [3 x <8 x half>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float16x8x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x half>] [[B]].coerce, [3 x <8 x half>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x8x3_t, %struct.float16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x half>], [3 x <8 x half>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x half> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x half>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x half>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x half>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v8f16.p0i8(<8 x half> [[TMP9]], <8 x half> [[TMP10]], <8 x half> [[TMP11]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_f16(float16_t  *a, float16x8x3_t b) {
+   vst3q_lane_f16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X4X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X4X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X3_T]], %struct.float32x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x float>] [[B_COERCE:%.*]], [3 x <4 x float>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X3_T]], %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X3_T]], %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X3_T]], %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x float> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x float>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v4f32.p0i8(<4 x float> [[TMP9]], <4 x float> [[TMP10]], <4 x float> [[TMP11]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_f32(float* %a, [3 x <4 x float>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float32x4x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x float>] [[B]].coerce, [3 x <4 x float>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x4x3_t, %struct.float32x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x float>], [3 x <4 x float>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x float> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x float>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v4f32.p0i8(<4 x float> [[TMP9]], <4 x float> [[TMP10]], <4 x float> [[TMP11]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_f32(float32_t  *a, float32x4x3_t b) {
+   vst3q_lane_f32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X2X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X3_T]], %struct.float64x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x double>] [[B_COERCE:%.*]], [3 x <2 x double>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X3_T]], %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X3_T]], %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X3_T]], %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x double> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x double>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v2f64.p0i8(<2 x double> [[TMP9]], <2 x double> [[TMP10]], <2 x double> [[TMP11]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_f64(double* %a, [3 x <2 x double>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float64x2x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x double>] [[B]].coerce, [3 x <2 x double>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x2x3_t, %struct.float64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x double>], [3 x <2 x double>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x double> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x double>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v2f64.p0i8(<2 x double> [[TMP9]], <2 x double> [[TMP10]], <2 x double> [[TMP11]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_f64(float64_t  *a, float64x2x3_t b) {
+   vst3q_lane_f64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X16X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X16X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X3_T]], %struct.poly8x16x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <16 x i8>] [[B_COERCE:%.*]], [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x16x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x16x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X3_T]], %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X3_T]], %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X3_T]], %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_p8(i8* %a, [3 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <16 x i8>] [[B]].coerce, [3 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x16x3_t, %struct.poly8x16x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <16 x i8>], [3 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], i64 15, i8* %a)
++// CHECK:   ret void
+ void test_vst3q_lane_p8(poly8_t  *a, poly8x16x3_t b) {
+   vst3q_lane_p8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X8X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X8X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X3_T]], %struct.poly16x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i16>] [[B_COERCE:%.*]], [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X3_T]], %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X3_T]], %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X3_T]], %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v8i16.p0i8(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_p16(i16* %a, [3 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i16>] [[B]].coerce, [3 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x8x3_t, %struct.poly16x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i16>], [3 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v8i16.p0i8(<8 x i16> [[TMP9]], <8 x i16> [[TMP10]], <8 x i16> [[TMP11]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_p16(poly16_t  *a, poly16x8x3_t b) {
+   vst3q_lane_p16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst3q_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X2X3_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X2X3_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X3_T]], %struct.poly64x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x i64>] [[B_COERCE:%.*]], [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X3_T]], %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X3_T]], %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X3_T]], %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v2i64.p0i8(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3q_lane_p64(i64* %a, [3 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x2x3_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x2x3_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x i64>] [[B]].coerce, [3 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 48, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x2x3_t, %struct.poly64x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i64>], [3 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
++// CHECK:   [[TMP10:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v2i64.p0i8(<2 x i64> [[TMP9]], <2 x i64> [[TMP10]], <2 x i64> [[TMP11]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3q_lane_p64(poly64_t  *a, poly64x2x3_t b) {
+   vst3q_lane_p64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT8X8X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X8X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X3_T]], %struct.uint8x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i8>] [[B_COERCE:%.*]], [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X3_T]], %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X3_T]], %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X3_T]], %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_u8(i8* %a, [3 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x8x3_t, %struct.uint8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* %a)
++// CHECK:   ret void
+ void test_vst3_lane_u8(uint8_t  *a, uint8x8x3_t b) {
+   vst3_lane_u8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X4X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X3_T]], %struct.uint16x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x i16>] [[B_COERCE:%.*]], [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X3_T]], %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X3_T]], %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X3_T]], %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v4i16.p0i8(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_u16(i16* %a, [3 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x4x3_t, %struct.uint16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v4i16.p0i8(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_u16(uint16_t  *a, uint16x4x3_t b) {
+   vst3_lane_u16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X2X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X3_T]], %struct.uint32x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x i32>] [[B_COERCE:%.*]], [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X3_T]], %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X3_T]], %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X3_T]], %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v2i32.p0i8(<2 x i32> [[TMP9]], <2 x i32> [[TMP10]], <2 x i32> [[TMP11]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_u32(i32* %a, [3 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x i32>] [[B]].coerce, [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x2x3_t, %struct.uint32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v2i32.p0i8(<2 x i32> [[TMP9]], <2 x i32> [[TMP10]], <2 x i32> [[TMP11]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_u32(uint32_t  *a, uint32x2x3_t b) {
+   vst3_lane_u32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X1X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X3_T]], %struct.uint64x1x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <1 x i64>] [[B_COERCE:%.*]], [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x1x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x1x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X3_T]], %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X3_T]], %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X3_T]], %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v1i64.p0i8(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_u64(i64* %a, [3 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x1x3_t, %struct.uint64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v1i64.p0i8(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_u64(uint64_t  *a, uint64x1x3_t b) {
+   vst3_lane_u64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT8X8X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X8X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X3_T]], %struct.int8x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i8>] [[B_COERCE:%.*]], [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X3_T]], %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X3_T]], %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X3_T]], %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_s8(i8* %a, [3 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int8x8x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x8x3_t, %struct.int8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* %a)
++// CHECK:   ret void
+ void test_vst3_lane_s8(int8_t  *a, int8x8x3_t b) {
+   vst3_lane_s8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X4X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X3_T]], %struct.int16x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x i16>] [[B_COERCE:%.*]], [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X3_T]], %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X3_T]], %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X3_T]], %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v4i16.p0i8(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_s16(i16* %a, [3 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int16x4x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x4x3_t, %struct.int16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v4i16.p0i8(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_s16(int16_t  *a, int16x4x3_t b) {
+   vst3_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X2X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X3_T]], %struct.int32x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x i32>] [[B_COERCE:%.*]], [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X3_T]], %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X3_T]], %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X3_T]], %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v2i32.p0i8(<2 x i32> [[TMP9]], <2 x i32> [[TMP10]], <2 x i32> [[TMP11]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_s32(i32* %a, [3 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int32x2x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x i32>] [[B]].coerce, [3 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x2x3_t, %struct.int32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x i32>], [3 x <2 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v2i32.p0i8(<2 x i32> [[TMP9]], <2 x i32> [[TMP10]], <2 x i32> [[TMP11]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_s32(int32_t  *a, int32x2x3_t b) {
+   vst3_lane_s32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X1X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X3_T]], %struct.int64x1x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <1 x i64>] [[B_COERCE:%.*]], [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x1x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x1x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X3_T]], %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X3_T]], %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X3_T]], %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v1i64.p0i8(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_s64(i64* %a, [3 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int64x1x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x1x3_t, %struct.int64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v1i64.p0i8(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_s64(int64_t  *a, int64x1x3_t b) {
+   vst3_lane_s64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X4X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X4X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X3_T]], %struct.float16x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x half>] [[B_COERCE:%.*]], [3 x <4 x half>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X3_T]], %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X3_T]], %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X3_T]], %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x half> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x half>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x half>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x half>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v4f16.p0i8(<4 x half> [[TMP9]], <4 x half> [[TMP10]], <4 x half> [[TMP11]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_f16(half* %a, [3 x <4 x half>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float16x4x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x half>] [[B]].coerce, [3 x <4 x half>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x4x3_t, %struct.float16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x half>], [3 x <4 x half>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x half> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x half>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x half>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x half>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v4f16.p0i8(<4 x half> [[TMP9]], <4 x half> [[TMP10]], <4 x half> [[TMP11]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_f16(float16_t  *a, float16x4x3_t b) {
+   vst3_lane_f16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X2X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X2X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X3_T]], %struct.float32x2x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <2 x float>] [[B_COERCE:%.*]], [3 x <2 x float>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x2x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x2x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X3_T]], %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X3_T]], %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X3_T]], %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x float> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x float>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v2f32.p0i8(<2 x float> [[TMP9]], <2 x float> [[TMP10]], <2 x float> [[TMP11]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_f32(float* %a, [3 x <2 x float>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float32x2x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <2 x float>] [[B]].coerce, [3 x <2 x float>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x2x3_t, %struct.float32x2x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <2 x float>], [3 x <2 x float>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x float> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x float>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v2f32.p0i8(<2 x float> [[TMP9]], <2 x float> [[TMP10]], <2 x float> [[TMP11]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_f32(float32_t  *a, float32x2x3_t b) {
+   vst3_lane_f32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X1X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X1X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X3_T]], %struct.float64x1x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <1 x double>] [[B_COERCE:%.*]], [3 x <1 x double>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x1x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x1x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X3_T]], %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X3_T]], %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X3_T]], %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <1 x double> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x double>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v1f64.p0i8(<1 x double> [[TMP9]], <1 x double> [[TMP10]], <1 x double> [[TMP11]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_f64(double* %a, [3 x <1 x double>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float64x1x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <1 x double>] [[B]].coerce, [3 x <1 x double>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x1x3_t, %struct.float64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x double>], [3 x <1 x double>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <1 x double> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x double>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v1f64.p0i8(<1 x double> [[TMP9]], <1 x double> [[TMP10]], <1 x double> [[TMP11]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_f64(float64_t  *a, float64x1x3_t b) {
+   vst3_lane_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X8X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X8X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X3_T]], %struct.poly8x8x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <8 x i8>] [[B_COERCE:%.*]], [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x8x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x8x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X3_T]], %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X3_T]], %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X3_T]], %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_p8(i8* %a, [3 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <8 x i8>] [[B]].coerce, [3 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x8x3_t, %struct.poly8x8x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <8 x i8>], [3 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], i64 7, i8* %a)
++// CHECK:   ret void
+ void test_vst3_lane_p8(poly8_t  *a, poly8x8x3_t b) {
+   vst3_lane_p8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X4X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X4X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X3_T]], %struct.poly16x4x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <4 x i16>] [[B_COERCE:%.*]], [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x4x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x4x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X3_T]], %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X3_T]], %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X3_T]], %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v4i16.p0i8(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_p16(i16* %a, [3 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <4 x i16>] [[B]].coerce, [3 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x4x3_t, %struct.poly16x4x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <4 x i16>], [3 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v4i16.p0i8(<4 x i16> [[TMP9]], <4 x i16> [[TMP10]], <4 x i16> [[TMP11]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_p16(poly16_t  *a, poly16x4x3_t b) {
+   vst3_lane_p16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst3_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X1X3_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X1X3_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X3_T]], %struct.poly64x1x3_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [3 x <1 x i64>] [[B_COERCE:%.*]], [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x1x3_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x1x3_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X3_T]], %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X3_T]], %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X3_T]], %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st3lane.v1i64.p0i8(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst3_lane_p64(i64* %a, [3 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x1x3_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x1x3_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[B]], i32 0, i32 0
++// CHECK:   store [3 x <1 x i64>] [[B]].coerce, [3 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x3_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x1x3_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 24, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x1x3_t, %struct.poly64x1x3_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [3 x <1 x i64>], [3 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
++// CHECK:   [[TMP9:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st3lane.v1i64.p0i8(<1 x i64> [[TMP9]], <1 x i64> [[TMP10]], <1 x i64> [[TMP11]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst3_lane_p64(poly64_t  *a, poly64x1x3_t b) {
+   vst3_lane_p64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT8X16X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X16X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <16 x i8>] [[B_COERCE:%.*]], [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x16x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x16x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT8X16X4_T]], %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_u8(i8* %a, [4 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint8x16x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x16x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x16x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x16x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint8x16x4_t, %struct.uint8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* %a)
++// CHECK:   ret void
+ void test_vst4q_lane_u8(uint8_t  *a, uint8x16x4_t b) {
+   vst4q_lane_u8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X8X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i16>] [[B_COERCE:%.*]], [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT16X8X4_T]], %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v8i16.p0i8(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_u16(i16* %a, [4 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x8x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x8x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint16x8x4_t, %struct.uint16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v8i16.p0i8(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_u16(uint16_t  *a, uint16x8x4_t b) {
+   vst4q_lane_u16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X4X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x i32>] [[B_COERCE:%.*]], [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT32X4X4_T]], %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <4 x i32> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v4i32.p0i8(<4 x i32> [[TMP11]], <4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_u32(i32* %a, [4 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x4x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x4x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x i32>] [[B]].coerce, [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint32x4x4_t, %struct.uint32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <4 x i32> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v4i32.p0i8(<4 x i32> [[TMP11]], <4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_u32(uint32_t  *a, uint32x4x4_t b) {
+   vst4q_lane_u32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x i64>] [[B_COERCE:%.*]], [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT64X2X4_T]], %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v2i64.p0i8(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_u64(i64* %a, [4 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x2x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x2x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint64x2x4_t, %struct.uint64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v2i64.p0i8(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_u64(uint64_t  *a, uint64x2x4_t b) {
+   vst4q_lane_u64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT8X16X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X16X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <16 x i8>] [[B_COERCE:%.*]], [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x16x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x16x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT8X16X4_T]], %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_s8(i8* %a, [4 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int8x16x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x16x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x16x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x16x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int8x16x4_t, %struct.int8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* %a)
++// CHECK:   ret void
+ void test_vst4q_lane_s8(int8_t  *a, int8x16x4_t b) {
+   vst4q_lane_s8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X8X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i16>] [[B_COERCE:%.*]], [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT16X8X4_T]], %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v8i16.p0i8(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_s16(i16* %a, [4 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int16x8x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x8x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int16x8x4_t, %struct.int16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v8i16.p0i8(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_s16(int16_t  *a, int16x8x4_t b) {
+   vst4q_lane_s16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X4X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x i32>] [[B_COERCE:%.*]], [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT32X4X4_T]], %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <4 x i32> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v4i32.p0i8(<4 x i32> [[TMP11]], <4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_s32(i32* %a, [4 x <4 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int32x4x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x4x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x i32>] [[B]].coerce, [4 x <4 x i32>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i32> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i32> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x i32> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int32x4x4_t, %struct.int32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i32>], [4 x <4 x i32>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <4 x i32>, <4 x i32>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <4 x i32> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x i32>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x i32>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x i32>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v4i32.p0i8(<4 x i32> [[TMP11]], <4 x i32> [[TMP12]], <4 x i32> [[TMP13]], <4 x i32> [[TMP14]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_s32(int32_t  *a, int32x4x4_t b) {
+   vst4q_lane_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x i64>] [[B_COERCE:%.*]], [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT64X2X4_T]], %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v2i64.p0i8(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_s64(i64* %a, [4 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int64x2x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x2x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int64x2x4_t, %struct.int64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v2i64.p0i8(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_s64(int64_t  *a, int64x2x4_t b) {
+   vst4q_lane_s64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X8X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X8X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x half>] [[B_COERCE:%.*]], [4 x <8 x half>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x half> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X8X4_T]], %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x half> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x half>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x half>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x half>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x half>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v8f16.p0i8(<8 x half> [[TMP11]], <8 x half> [[TMP12]], <8 x half> [[TMP13]], <8 x half> [[TMP14]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_f16(half* %a, [4 x <8 x half>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float16x8x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x8x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x half>] [[B]].coerce, [4 x <8 x half>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x half> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x half> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x half> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float16x8x4_t, %struct.float16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x half>], [4 x <8 x half>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <8 x half>, <8 x half>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x half> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x half>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x half>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x half>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x half>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v8f16.p0i8(<8 x half> [[TMP11]], <8 x half> [[TMP12]], <8 x half> [[TMP13]], <8 x half> [[TMP14]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_f16(float16_t  *a, float16x8x4_t b) {
+   vst4q_lane_f16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X4X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X4X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x float>] [[B_COERCE:%.*]], [4 x <4 x float>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x float> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X4X4_T]], %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <4 x float> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x float>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x float>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v4f32.p0i8(<4 x float> [[TMP11]], <4 x float> [[TMP12]], <4 x float> [[TMP13]], <4 x float> [[TMP14]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_f32(float* %a, [4 x <4 x float>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float32x4x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x4x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x float>] [[B]].coerce, [4 x <4 x float>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x float> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x float> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x float> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float32x4x4_t, %struct.float32x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x float>], [4 x <4 x float>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <4 x float>, <4 x float>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <4 x float> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <4 x float>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <4 x float>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <4 x float>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <4 x float>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v4f32.p0i8(<4 x float> [[TMP11]], <4 x float> [[TMP12]], <4 x float> [[TMP13]], <4 x float> [[TMP14]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_f32(float32_t  *a, float32x4x4_t b) {
+   vst4q_lane_f32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X2X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x double>] [[B_COERCE:%.*]], [4 x <2 x double>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x double> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X2X4_T]], %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <2 x double> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x double>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x double>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v2f64.p0i8(<2 x double> [[TMP11]], <2 x double> [[TMP12]], <2 x double> [[TMP13]], <2 x double> [[TMP14]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_f64(double* %a, [4 x <2 x double>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float64x2x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x2x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x double>] [[B]].coerce, [4 x <2 x double>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x double> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x double> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x double> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float64x2x4_t, %struct.float64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x double>], [4 x <2 x double>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <2 x double>, <2 x double>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <2 x double> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x double>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x double>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x double>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x double>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v2f64.p0i8(<2 x double> [[TMP11]], <2 x double> [[TMP12]], <2 x double> [[TMP13]], <2 x double> [[TMP14]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_f64(float64_t  *a, float64x2x4_t b) {
+   vst4q_lane_f64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X16X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X16X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <16 x i8>] [[B_COERCE:%.*]], [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x16x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x16x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY8X16X4_T]], %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_p8(i8* %a, [4 x <16 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x16x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x16x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <16 x i8>] [[B]].coerce, [4 x <16 x i8>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x16x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x16x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX]], align 16
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX2]], align 16
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX4]], align 16
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly8x16x4_t, %struct.poly8x16x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <16 x i8>], [4 x <16 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP5:%.*]] = load <16 x i8>, <16 x i8>* [[ARRAYIDX6]], align 16
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v16i8.p0i8(<16 x i8> [[TMP2]], <16 x i8> [[TMP3]], <16 x i8> [[TMP4]], <16 x i8> [[TMP5]], i64 15, i8* %a)
++// CHECK:   ret void
+ void test_vst4q_lane_p8(poly8_t  *a, poly8x16x4_t b) {
+   vst4q_lane_p8(a, b, 15);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X8X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X8X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i16>] [[B_COERCE:%.*]], [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY16X8X4_T]], %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v8i16.p0i8(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i64 7, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_p16(i16* %a, [4 x <8 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x8x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x8x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i16>] [[B]].coerce, [4 x <8 x i16>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i16> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <8 x i16> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <8 x i16> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly16x8x4_t, %struct.poly16x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i16>], [4 x <8 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <8 x i16>, <8 x i16>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <8 x i16> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <8 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <8 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <8 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <8 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v8i16.p0i8(<8 x i16> [[TMP11]], <8 x i16> [[TMP12]], <8 x i16> [[TMP13]], <8 x i16> [[TMP14]], i64 7, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_p16(poly16_t  *a, poly16x8x4_t b) {
+   vst4q_lane_p16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst4q_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X2X4_T:%.*]], align 16
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X2X4_T]], align 16
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x i64>] [[B_COERCE:%.*]], [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY64X2X4_T]], %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v2i64.p0i8(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4q_lane_p64(i64* %a, [4 x <2 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x2x4_t, align 16
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x2x4_t, align 16
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x i64>] [[B]].coerce, [4 x <2 x i64>]* [[COERCE_DIVE]], align 16
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 16 [[TMP0]], i8* align 16 [[TMP1]], i64 64, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX]], align 16
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i64> [[TMP3]] to <16 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX2]], align 16
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i64> [[TMP5]] to <16 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX4]], align 16
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x i64> [[TMP7]] to <16 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly64x2x4_t, %struct.poly64x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i64>], [4 x <2 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <2 x i64>, <2 x i64>* [[ARRAYIDX6]], align 16
++// CHECK:   [[TMP10:%.*]] = bitcast <2 x i64> [[TMP9]] to <16 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <16 x i8> [[TMP4]] to <2 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <16 x i8> [[TMP6]] to <2 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <16 x i8> [[TMP8]] to <2 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <16 x i8> [[TMP10]] to <2 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v2i64.p0i8(<2 x i64> [[TMP11]], <2 x i64> [[TMP12]], <2 x i64> [[TMP13]], <2 x i64> [[TMP14]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4q_lane_p64(poly64_t  *a, poly64x2x4_t b) {
+   vst4q_lane_p64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT8X8X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT8X8X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i8>] [[B_COERCE:%.*]], [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint8x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint8x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT8X8X4_T]], %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_u8(i8* %a, [4 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint8x8x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint8x8x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint8x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint8x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint8x8x4_t, %struct.uint8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* %a)
++// CHECK:   ret void
+ void test_vst4_lane_u8(uint8_t  *a, uint8x8x4_t b) {
+   vst4_lane_u8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT16X4X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x i16>] [[B_COERCE:%.*]], [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint16x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint16x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT16X4X4_T]], %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v4i16.p0i8(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_u16(i16* %a, [4 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint16x4x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint16x4x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint16x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint16x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint16x4x4_t, %struct.uint16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v4i16.p0i8(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_u16(uint16_t  *a, uint16x4x4_t b) {
+   vst4_lane_u16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT32X2X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x i32>] [[B_COERCE:%.*]], [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint32x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint32x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT32X2X4_T]], %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <2 x i32> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v2i32.p0i8(<2 x i32> [[TMP11]], <2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_u32(i32* %a, [4 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint32x2x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint32x2x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x i32>] [[B]].coerce, [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint32x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint32x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint32x2x4_t, %struct.uint32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <2 x i32> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v2i32.p0i8(<2 x i32> [[TMP11]], <2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_u32(uint32_t  *a, uint32x2x4_t b) {
+   vst4_lane_u32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_UINT64X1X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_UINT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <1 x i64>] [[B_COERCE:%.*]], [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.uint64x1x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.uint64x1x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_UINT64X1X4_T]], %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v1i64.p0i8(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_u64(i64* %a, [4 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.uint64x1x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.uint64x1x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.uint64x1x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.uint64x1x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.uint64x1x4_t, %struct.uint64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v1i64.p0i8(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_u64(uint64_t  *a, uint64x1x4_t b) {
+   vst4_lane_u64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT8X8X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT8X8X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i8>] [[B_COERCE:%.*]], [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int8x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int8x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT8X8X4_T]], %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_s8(i8* %a, [4 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int8x8x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int8x8x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int8x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int8x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int8x8x4_t, %struct.int8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* %a)
++// CHECK:   ret void
+ void test_vst4_lane_s8(int8_t  *a, int8x8x4_t b) {
+   vst4_lane_s8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT16X4X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x i16>] [[B_COERCE:%.*]], [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int16x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int16x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT16X4X4_T]], %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v4i16.p0i8(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_s16(i16* %a, [4 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int16x4x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int16x4x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int16x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int16x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int16x4x4_t, %struct.int16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v4i16.p0i8(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_s16(int16_t  *a, int16x4x4_t b) {
+   vst4_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT32X2X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x i32>] [[B_COERCE:%.*]], [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int32x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int32x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i32* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT32X2X4_T]], %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <2 x i32> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x i32>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v2i32.p0i8(<2 x i32> [[TMP11]], <2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_s32(i32* %a, [4 x <2 x i32>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int32x2x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int32x2x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x i32>] [[B]].coerce, [4 x <2 x i32>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int32x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int32x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i32* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x i32> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x i32> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x i32> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int32x2x4_t, %struct.int32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x i32>], [4 x <2 x i32>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <2 x i32>, <2 x i32>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <2 x i32> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x i32>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x i32>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x i32>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x i32>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v2i32.p0i8(<2 x i32> [[TMP11]], <2 x i32> [[TMP12]], <2 x i32> [[TMP13]], <2 x i32> [[TMP14]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_s32(int32_t  *a, int32x2x4_t b) {
+   vst4_lane_s32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_INT64X1X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_INT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <1 x i64>] [[B_COERCE:%.*]], [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.int64x1x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.int64x1x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_INT64X1X4_T]], %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v1i64.p0i8(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_s64(i64* %a, [4 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.int64x1x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.int64x1x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.int64x1x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.int64x1x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.int64x1x4_t, %struct.int64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v1i64.p0i8(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_s64(int64_t  *a, int64x1x4_t b) {
+   vst4_lane_s64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_f16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT16X4X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT16X4X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x half>] [[B_COERCE:%.*]], [4 x <4 x half>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float16x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float16x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast half* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x half> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT16X4X4_T]], %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <4 x half> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x half>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x half>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x half>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x half>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v4f16.p0i8(<4 x half> [[TMP11]], <4 x half> [[TMP12]], <4 x half> [[TMP13]], <4 x half> [[TMP14]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_f16(half* %a, [4 x <4 x half>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float16x4x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float16x4x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x half>] [[B]].coerce, [4 x <4 x half>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float16x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float16x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast half* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x half> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x half> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x half> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float16x4x4_t, %struct.float16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x half>], [4 x <4 x half>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <4 x half>, <4 x half>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <4 x half> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x half>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x half>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x half>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x half>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v4f16.p0i8(<4 x half> [[TMP11]], <4 x half> [[TMP12]], <4 x half> [[TMP13]], <4 x half> [[TMP14]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_f16(float16_t  *a, float16x4x4_t b) {
+   vst4_lane_f16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT32X2X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT32X2X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <2 x float>] [[B_COERCE:%.*]], [4 x <2 x float>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float32x2x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float32x2x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast float* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <2 x float> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT32X2X4_T]], %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <2 x float> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x float>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x float>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v2f32.p0i8(<2 x float> [[TMP11]], <2 x float> [[TMP12]], <2 x float> [[TMP13]], <2 x float> [[TMP14]], i64 1, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_f32(float* %a, [4 x <2 x float>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float32x2x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float32x2x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <2 x float>] [[B]].coerce, [4 x <2 x float>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float32x2x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float32x2x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast float* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <2 x float> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <2 x float> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <2 x float> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float32x2x4_t, %struct.float32x2x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <2 x float>], [4 x <2 x float>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <2 x float>, <2 x float>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <2 x float> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <2 x float>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <2 x float>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <2 x float>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <2 x float>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v2f32.p0i8(<2 x float> [[TMP11]], <2 x float> [[TMP12]], <2 x float> [[TMP13]], <2 x float> [[TMP14]], i64 1, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_f32(float32_t  *a, float32x2x4_t b) {
+   vst4_lane_f32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_FLOAT64X1X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_FLOAT64X1X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <1 x double>] [[B_COERCE:%.*]], [4 x <1 x double>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.float64x1x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.float64x1x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast double* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <1 x double> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_FLOAT64X1X4_T]], %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <1 x double> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x double>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x double>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v1f64.p0i8(<1 x double> [[TMP11]], <1 x double> [[TMP12]], <1 x double> [[TMP13]], <1 x double> [[TMP14]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_f64(double* %a, [4 x <1 x double>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.float64x1x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.float64x1x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <1 x double>] [[B]].coerce, [4 x <1 x double>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.float64x1x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.float64x1x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast double* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x double> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x double> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <1 x double> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.float64x1x4_t, %struct.float64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x double>], [4 x <1 x double>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <1 x double>, <1 x double>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <1 x double> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x double>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x double>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x double>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x double>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v1f64.p0i8(<1 x double> [[TMP11]], <1 x double> [[TMP12]], <1 x double> [[TMP13]], <1 x double> [[TMP14]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_f64(float64_t  *a, float64x1x4_t b) {
+   vst4_lane_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY8X8X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY8X8X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <8 x i8>] [[B_COERCE:%.*]], [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly8x8x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly8x8x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY8X8X4_T]], %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* [[A:%.*]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_p8(i8* %a, [4 x <8 x i8>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly8x8x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly8x8x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <8 x i8>] [[B]].coerce, [4 x <8 x i8>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly8x8x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly8x8x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP2:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX]], align 8
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP3:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX2]], align 8
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP4:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX4]], align 8
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly8x8x4_t, %struct.poly8x8x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <8 x i8>], [4 x <8 x i8>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP5:%.*]] = load <8 x i8>, <8 x i8>* [[ARRAYIDX6]], align 8
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v8i8.p0i8(<8 x i8> [[TMP2]], <8 x i8> [[TMP3]], <8 x i8> [[TMP4]], <8 x i8> [[TMP5]], i64 7, i8* %a)
++// CHECK:   ret void
+ void test_vst4_lane_p8(poly8_t  *a, poly8x8x4_t b) {
+   vst4_lane_p8(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY16X4X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY16X4X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <4 x i16>] [[B_COERCE:%.*]], [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly16x4x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly16x4x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i16* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY16X4X4_T]], %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v4i16.p0i8(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i64 3, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_p16(i16* %a, [4 x <4 x i16>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly16x4x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly16x4x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <4 x i16>] [[B]].coerce, [4 x <4 x i16>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly16x4x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly16x4x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i16* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <4 x i16> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <4 x i16> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <4 x i16> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly16x4x4_t, %struct.poly16x4x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <4 x i16>], [4 x <4 x i16>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <4 x i16>, <4 x i16>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <4 x i16> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <4 x i16>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <4 x i16>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <4 x i16>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <4 x i16>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v4i16.p0i8(<4 x i16> [[TMP11]], <4 x i16> [[TMP12]], <4 x i16> [[TMP13]], <4 x i16> [[TMP14]], i64 3, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_p16(poly16_t  *a, poly16x4x4_t b) {
+   vst4_lane_p16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vst4_lane_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[B:%.*]] = alloca [[STRUCT_POLY64X1X4_T:%.*]], align 8
+-// CHECK-NEXT:    [[__S1:%.*]] = alloca [[STRUCT_POLY64X1X4_T]], align 8
+-// CHECK-NEXT:    [[COERCE_DIVE:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[B]], i32 0, i32 0
+-// CHECK-NEXT:    store [4 x <1 x i64>] [[B_COERCE:%.*]], [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast %struct.poly64x1x4_t* [[__S1]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast %struct.poly64x1x4_t* [[B]] to i8*
+-// CHECK-NEXT:    call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast i64* [[A:%.*]] to i8*
+-// CHECK-NEXT:    [[VAL:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
+-// CHECK-NEXT:    [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL1:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
+-// CHECK-NEXT:    [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
+-// CHECK-NEXT:    [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL3:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
+-// CHECK-NEXT:    [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
+-// CHECK-NEXT:    [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
+-// CHECK-NEXT:    [[VAL5:%.*]] = getelementptr inbounds [[STRUCT_POLY64X1X4_T]], %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
+-// CHECK-NEXT:    [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
+-// CHECK-NEXT:    [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
+-// CHECK-NEXT:    [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
+-// CHECK-NEXT:    [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
+-// CHECK-NEXT:    call void @llvm.aarch64.neon.st4lane.v1i64.p0i8(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i64 0, i8* [[TMP2]])
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vst4_lane_p64(i64* %a, [4 x <1 x i64>] %b.coerce) #2 {
++// CHECK:   [[B:%.*]] = alloca %struct.poly64x1x4_t, align 8
++// CHECK:   [[__S1:%.*]] = alloca %struct.poly64x1x4_t, align 8
++// CHECK:   [[COERCE_DIVE:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[B]], i32 0, i32 0
++// CHECK:   store [4 x <1 x i64>] [[B]].coerce, [4 x <1 x i64>]* [[COERCE_DIVE]], align 8
++// CHECK:   [[TMP0:%.*]] = bitcast %struct.poly64x1x4_t* [[__S1]] to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast %struct.poly64x1x4_t* [[B]] to i8*
++// CHECK:   call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 8 [[TMP0]], i8* align 8 [[TMP1]], i64 32, i1 false)
++// CHECK:   [[TMP2:%.*]] = bitcast i64* %a to i8*
++// CHECK:   [[VAL:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL]], i64 0, i64 0
++// CHECK:   [[TMP3:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX]], align 8
++// CHECK:   [[TMP4:%.*]] = bitcast <1 x i64> [[TMP3]] to <8 x i8>
++// CHECK:   [[VAL1:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX2:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL1]], i64 0, i64 1
++// CHECK:   [[TMP5:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX2]], align 8
++// CHECK:   [[TMP6:%.*]] = bitcast <1 x i64> [[TMP5]] to <8 x i8>
++// CHECK:   [[VAL3:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX4:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL3]], i64 0, i64 2
++// CHECK:   [[TMP7:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX4]], align 8
++// CHECK:   [[TMP8:%.*]] = bitcast <1 x i64> [[TMP7]] to <8 x i8>
++// CHECK:   [[VAL5:%.*]] = getelementptr inbounds %struct.poly64x1x4_t, %struct.poly64x1x4_t* [[__S1]], i32 0, i32 0
++// CHECK:   [[ARRAYIDX6:%.*]] = getelementptr inbounds [4 x <1 x i64>], [4 x <1 x i64>]* [[VAL5]], i64 0, i64 3
++// CHECK:   [[TMP9:%.*]] = load <1 x i64>, <1 x i64>* [[ARRAYIDX6]], align 8
++// CHECK:   [[TMP10:%.*]] = bitcast <1 x i64> [[TMP9]] to <8 x i8>
++// CHECK:   [[TMP11:%.*]] = bitcast <8 x i8> [[TMP4]] to <1 x i64>
++// CHECK:   [[TMP12:%.*]] = bitcast <8 x i8> [[TMP6]] to <1 x i64>
++// CHECK:   [[TMP13:%.*]] = bitcast <8 x i8> [[TMP8]] to <1 x i64>
++// CHECK:   [[TMP14:%.*]] = bitcast <8 x i8> [[TMP10]] to <1 x i64>
++// CHECK:   call void @llvm.aarch64.neon.st4lane.v1i64.p0i8(<1 x i64> [[TMP11]], <1 x i64> [[TMP12]], <1 x i64> [[TMP13]], <1 x i64> [[TMP14]], i64 0, i8* [[TMP2]])
++// CHECK:   ret void
+ void test_vst4_lane_p64(poly64_t  *a, poly64x1x4_t b) {
+   vst4_lane_p64(a, b, 0);
+ }
+ 
++// CHECK: attributes #0 ={{.*}}"min-legal-vector-width"="128"
++// CHECK: attributes #1 ={{.*}}"min-legal-vector-width"="64"
++// CHECK: attributes #2 ={{.*}}"min-legal-vector-width"="0"
+diff --git a/clang/test/CodeGen/aarch64-neon-scalar-x-indexed-elem.c b/clang/test/CodeGen/aarch64-neon-scalar-x-indexed-elem.c
+index 5c9a5c13dc2b..367978d84af4 100644
+--- a/clang/test/CodeGen/aarch64-neon-scalar-x-indexed-elem.c
++++ b/clang/test/CodeGen/aarch64-neon-scalar-x-indexed-elem.c
+@@ -1,4 +1,3 @@
+-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+ // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon -target-cpu cyclone \
+ // RUN: -disable-O0-optnone -emit-llvm -o - %s | opt -S -mem2reg | FileCheck %s
+ 
+@@ -7,496 +6,414 @@
+ #include <arm_neon.h>
+ 
+ 
+-// CHECK-LABEL: @test_vmuls_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <2 x float> [[B:%.*]], i32 1
+-// CHECK-NEXT:    [[MUL:%.*]] = fmul float [[A:%.*]], [[VGET_LANE]]
+-// CHECK-NEXT:    ret float [[MUL]]
+-//
++// CHECK-LABEL: define{{.*}} float @test_vmuls_lane_f32(float %a, <2 x float> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <2 x float> %b, i32 1
++// CHECK:   [[MUL:%.*]] = fmul float %a, [[VGET_LANE]]
++// CHECK:   ret float [[MUL]]
+ float32_t test_vmuls_lane_f32(float32_t a, float32x2_t b) {
+   return vmuls_lane_f32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vmuld_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <1 x double> [[B:%.*]], i32 0
+-// CHECK-NEXT:    [[MUL:%.*]] = fmul double [[A:%.*]], [[VGET_LANE]]
+-// CHECK-NEXT:    ret double [[MUL]]
+-//
++// CHECK-LABEL: define{{.*}} double @test_vmuld_lane_f64(double %a, <1 x double> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <1 x double> %b, i32 0
++// CHECK:   [[MUL:%.*]] = fmul double %a, [[VGET_LANE]]
++// CHECK:   ret double [[MUL]]
+ float64_t test_vmuld_lane_f64(float64_t a, float64x1_t b) {
+   return vmuld_lane_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vmuls_laneq_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <4 x float> [[B:%.*]], i32 3
+-// CHECK-NEXT:    [[MUL:%.*]] = fmul float [[A:%.*]], [[VGETQ_LANE]]
+-// CHECK-NEXT:    ret float [[MUL]]
+-//
++// CHECK-LABEL: define{{.*}} float @test_vmuls_laneq_f32(float %a, <4 x float> %b) #1 {
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <4 x float> %b, i32 3
++// CHECK:   [[MUL:%.*]] = fmul float %a, [[VGETQ_LANE]]
++// CHECK:   ret float [[MUL]]
+ float32_t test_vmuls_laneq_f32(float32_t a, float32x4_t b) {
+   return vmuls_laneq_f32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vmuld_laneq_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <2 x double> [[B:%.*]], i32 1
+-// CHECK-NEXT:    [[MUL:%.*]] = fmul double [[A:%.*]], [[VGETQ_LANE]]
+-// CHECK-NEXT:    ret double [[MUL]]
+-//
++// CHECK-LABEL: define{{.*}} double @test_vmuld_laneq_f64(double %a, <2 x double> %b) #1 {
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <2 x double> %b, i32 1
++// CHECK:   [[MUL:%.*]] = fmul double %a, [[VGETQ_LANE]]
++// CHECK:   ret double [[MUL]]
+ float64_t test_vmuld_laneq_f64(float64_t a, float64x2_t b) {
+   return vmuld_laneq_f64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vmul_n_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <1 x double> [[A:%.*]] to double
+-// CHECK-NEXT:    [[TMP1:%.*]] = fmul double [[TMP0]], [[B:%.*]]
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast double [[TMP1]] to <1 x double>
+-// CHECK-NEXT:    ret <1 x double> [[TMP2]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vmul_n_f64(<1 x double> %a, double %b) #0 {
++// CHECK:   [[TMP2:%.*]] = bitcast <1 x double> %a to double
++// CHECK:   [[TMP3:%.*]] = fmul double [[TMP2]], %b
++// CHECK:   [[TMP4:%.*]] = bitcast double [[TMP3]] to <1 x double>
++// CHECK:   ret <1 x double> [[TMP4]]
+ float64x1_t test_vmul_n_f64(float64x1_t a, float64_t b) {
+   return vmul_n_f64(a, b);
+ }
+ 
+-// CHECK-LABEL: @test_vmulxs_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <2 x float> [[B:%.*]], i32 1
+-// CHECK-NEXT:    [[VMULXS_F32_I:%.*]] = call float @llvm.aarch64.neon.fmulx.f32(float [[A:%.*]], float [[VGET_LANE]]) [[ATTR5:#.*]]
+-// CHECK-NEXT:    ret float [[VMULXS_F32_I]]
+-//
++// CHECK-LABEL: define{{.*}} float @test_vmulxs_lane_f32(float %a, <2 x float> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <2 x float> %b, i32 1
++// CHECK:   [[VMULXS_F32_I:%.*]] = call float @llvm.aarch64.neon.fmulx.f32(float %a, float [[VGET_LANE]])
++// CHECK:   ret float [[VMULXS_F32_I]]
+ float32_t test_vmulxs_lane_f32(float32_t a, float32x2_t b) {
+   return vmulxs_lane_f32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vmulxs_laneq_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <4 x float> [[B:%.*]], i32 3
+-// CHECK-NEXT:    [[VMULXS_F32_I:%.*]] = call float @llvm.aarch64.neon.fmulx.f32(float [[A:%.*]], float [[VGETQ_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    ret float [[VMULXS_F32_I]]
+-//
++// CHECK-LABEL: define{{.*}} float @test_vmulxs_laneq_f32(float %a, <4 x float> %b) #1 {
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <4 x float> %b, i32 3
++// CHECK:   [[VMULXS_F32_I:%.*]] = call float @llvm.aarch64.neon.fmulx.f32(float %a, float [[VGETQ_LANE]])
++// CHECK:   ret float [[VMULXS_F32_I]]
+ float32_t test_vmulxs_laneq_f32(float32_t a, float32x4_t b) {
+   return vmulxs_laneq_f32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vmulxd_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <1 x double> [[B:%.*]], i32 0
+-// CHECK-NEXT:    [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[A:%.*]], double [[VGET_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    ret double [[VMULXD_F64_I]]
+-//
++// CHECK-LABEL: define{{.*}} double @test_vmulxd_lane_f64(double %a, <1 x double> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <1 x double> %b, i32 0
++// CHECK:   [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double %a, double [[VGET_LANE]])
++// CHECK:   ret double [[VMULXD_F64_I]]
+ float64_t test_vmulxd_lane_f64(float64_t a, float64x1_t b) {
+   return vmulxd_lane_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vmulxd_laneq_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <2 x double> [[B:%.*]], i32 1
+-// CHECK-NEXT:    [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[A:%.*]], double [[VGETQ_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    ret double [[VMULXD_F64_I]]
+-//
++// CHECK-LABEL: define{{.*}} double @test_vmulxd_laneq_f64(double %a, <2 x double> %b) #1 {
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <2 x double> %b, i32 1
++// CHECK:   [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double %a, double [[VGETQ_LANE]])
++// CHECK:   ret double [[VMULXD_F64_I]]
+ float64_t test_vmulxd_laneq_f64(float64_t a, float64x2_t b) {
+   return vmulxd_laneq_f64(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vmulx_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <1 x double> [[A:%.*]], i32 0
+-// CHECK-NEXT:    [[VGET_LANE3:%.*]] = extractelement <1 x double> [[B:%.*]], i32 0
+-// CHECK-NEXT:    [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[VGET_LANE]], double [[VGET_LANE3]]) [[ATTR5]]
+-// CHECK-NEXT:    [[VSET_LANE:%.*]] = insertelement <1 x double> [[A]], double [[VMULXD_F64_I]], i32 0
+-// CHECK-NEXT:    ret <1 x double> [[VSET_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vmulx_lane_f64(<1 x double> %a, <1 x double> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <1 x double> %a, i32 0
++// CHECK:   [[VGET_LANE6:%.*]] = extractelement <1 x double> %b, i32 0
++// CHECK:   [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[VGET_LANE]], double [[VGET_LANE6]])
++// CHECK:   [[VSET_LANE:%.*]] = insertelement <1 x double> %a, double [[VMULXD_F64_I]], i32 0
++// CHECK:   ret <1 x double> [[VSET_LANE]]
+ float64x1_t test_vmulx_lane_f64(float64x1_t a, float64x1_t b) {
+   return vmulx_lane_f64(a, b, 0);
+ }
+ 
+ 
+-// CHECK-LABEL: @test_vmulx_laneq_f64_0(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <1 x double> [[A:%.*]], i32 0
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <2 x double> [[B:%.*]], i32 0
+-// CHECK-NEXT:    [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[VGET_LANE]], double [[VGETQ_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    [[VSET_LANE:%.*]] = insertelement <1 x double> [[A]], double [[VMULXD_F64_I]], i32 0
+-// CHECK-NEXT:    ret <1 x double> [[VSET_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vmulx_laneq_f64_0(<1 x double> %a, <2 x double> %b) #1 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <1 x double> %a, i32 0
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <2 x double> %b, i32 0
++// CHECK:   [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[VGET_LANE]], double [[VGETQ_LANE]])
++// CHECK:   [[VSET_LANE:%.*]] = insertelement <1 x double> %a, double [[VMULXD_F64_I]], i32 0
++// CHECK:   ret <1 x double> [[VSET_LANE]]
+ float64x1_t test_vmulx_laneq_f64_0(float64x1_t a, float64x2_t b) {
+   return vmulx_laneq_f64(a, b, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vmulx_laneq_f64_1(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <1 x double> [[A:%.*]], i32 0
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <2 x double> [[B:%.*]], i32 1
+-// CHECK-NEXT:    [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[VGET_LANE]], double [[VGETQ_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    [[VSET_LANE:%.*]] = insertelement <1 x double> [[A]], double [[VMULXD_F64_I]], i32 0
+-// CHECK-NEXT:    ret <1 x double> [[VSET_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vmulx_laneq_f64_1(<1 x double> %a, <2 x double> %b) #1 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <1 x double> %a, i32 0
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <2 x double> %b, i32 1
++// CHECK:   [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[VGET_LANE]], double [[VGETQ_LANE]])
++// CHECK:   [[VSET_LANE:%.*]] = insertelement <1 x double> %a, double [[VMULXD_F64_I]], i32 0
++// CHECK:   ret <1 x double> [[VSET_LANE]]
+ float64x1_t test_vmulx_laneq_f64_1(float64x1_t a, float64x2_t b) {
+   return vmulx_laneq_f64(a, b, 1);
+ }
+ 
+ 
+-// CHECK-LABEL: @test_vfmas_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[EXTRACT:%.*]] = extractelement <2 x float> [[C:%.*]], i32 1
+-// CHECK-NEXT:    [[TMP0:%.*]] = call float @llvm.fma.f32(float [[B:%.*]], float [[EXTRACT]], float [[A:%.*]])
+-// CHECK-NEXT:    ret float [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} float @test_vfmas_lane_f32(float %a, float %b, <2 x float> %c) #0 {
++// CHECK:   [[EXTRACT:%.*]] = extractelement <2 x float> %c, i32 1
++// CHECK:   [[TMP2:%.*]] = call float @llvm.fma.f32(float %b, float [[EXTRACT]], float %a)
++// CHECK:   ret float [[TMP2]]
+ float32_t test_vfmas_lane_f32(float32_t a, float32_t b, float32x2_t c) {
+   return vfmas_lane_f32(a, b, c, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vfmad_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[EXTRACT:%.*]] = extractelement <1 x double> [[C:%.*]], i32 0
+-// CHECK-NEXT:    [[TMP0:%.*]] = call double @llvm.fma.f64(double [[B:%.*]], double [[EXTRACT]], double [[A:%.*]])
+-// CHECK-NEXT:    ret double [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} double @test_vfmad_lane_f64(double %a, double %b, <1 x double> %c) #0 {
++// CHECK:   [[EXTRACT:%.*]] = extractelement <1 x double> %c, i32 0
++// CHECK:   [[TMP2:%.*]] = call double @llvm.fma.f64(double %b, double [[EXTRACT]], double %a)
++// CHECK:   ret double [[TMP2]]
+ float64_t test_vfmad_lane_f64(float64_t a, float64_t b, float64x1_t c) {
+   return vfmad_lane_f64(a, b, c, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vfmad_laneq_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[EXTRACT:%.*]] = extractelement <2 x double> [[C:%.*]], i32 1
+-// CHECK-NEXT:    [[TMP0:%.*]] = call double @llvm.fma.f64(double [[B:%.*]], double [[EXTRACT]], double [[A:%.*]])
+-// CHECK-NEXT:    ret double [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} double @test_vfmad_laneq_f64(double %a, double %b, <2 x double> %c) #1 {
++// CHECK:   [[EXTRACT:%.*]] = extractelement <2 x double> %c, i32 1
++// CHECK:   [[TMP2:%.*]] = call double @llvm.fma.f64(double %b, double [[EXTRACT]], double %a)
++// CHECK:   ret double [[TMP2]]
+ float64_t test_vfmad_laneq_f64(float64_t a, float64_t b, float64x2_t c) {
+   return vfmad_laneq_f64(a, b, c, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vfmss_lane_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[FNEG:%.*]] = fneg float [[B:%.*]]
+-// CHECK-NEXT:    [[EXTRACT:%.*]] = extractelement <2 x float> [[C:%.*]], i32 1
+-// CHECK-NEXT:    [[TMP0:%.*]] = call float @llvm.fma.f32(float [[FNEG]], float [[EXTRACT]], float [[A:%.*]])
+-// CHECK-NEXT:    ret float [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} float @test_vfmss_lane_f32(float %a, float %b, <2 x float> %c) #0 {
++// CHECK:   [[SUB:%.*]] = fneg float %b
++// CHECK:   [[EXTRACT:%.*]] = extractelement <2 x float> %c, i32 1
++// CHECK:   [[TMP2:%.*]] = call float @llvm.fma.f32(float [[SUB]], float [[EXTRACT]], float %a)
++// CHECK:   ret float [[TMP2]]
+ float32_t test_vfmss_lane_f32(float32_t a, float32_t b, float32x2_t c) {
+   return vfmss_lane_f32(a, b, c, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vfma_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <1 x double> [[A:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x double> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <1 x double> [[V:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <1 x double>
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <1 x double> [[TMP3]], <1 x double> [[TMP3]], <1 x i32> zeroinitializer
+-// CHECK-NEXT:    [[FMLA:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
+-// CHECK-NEXT:    [[FMLA1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
+-// CHECK-NEXT:    [[FMLA2:%.*]] = call <1 x double> @llvm.fma.v1f64(<1 x double> [[FMLA]], <1 x double> [[LANE]], <1 x double> [[FMLA1]])
+-// CHECK-NEXT:    ret <1 x double> [[FMLA2]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vfma_lane_f64(<1 x double> %a, <1 x double> %b, <1 x double> %v) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <1 x double> %v to <8 x i8>
++// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <1 x double>
++// CHECK:   [[LANE:%.*]] = shufflevector <1 x double> [[TMP3]], <1 x double> [[TMP3]], <1 x i32> zeroinitializer
++// CHECK:   [[FMLA:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
++// CHECK:   [[FMLA1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
++// CHECK:   [[FMLA2:%.*]] = call <1 x double> @llvm.fma.v1f64(<1 x double> [[FMLA]], <1 x double> [[LANE]], <1 x double> [[FMLA1]])
++// CHECK:   ret <1 x double> [[FMLA2]]
+ float64x1_t test_vfma_lane_f64(float64x1_t a, float64x1_t b, float64x1_t v) {
+   return vfma_lane_f64(a, b, v, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vfms_lane_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[FNEG:%.*]] = fneg <1 x double> [[B:%.*]]
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <1 x double> [[A:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x double> [[FNEG]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <1 x double> [[V:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <1 x double>
+-// CHECK-NEXT:    [[LANE:%.*]] = shufflevector <1 x double> [[TMP3]], <1 x double> [[TMP3]], <1 x i32> zeroinitializer
+-// CHECK-NEXT:    [[FMLA:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
+-// CHECK-NEXT:    [[FMLA1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
+-// CHECK-NEXT:    [[FMLA2:%.*]] = call <1 x double> @llvm.fma.v1f64(<1 x double> [[FMLA]], <1 x double> [[LANE]], <1 x double> [[FMLA1]])
+-// CHECK-NEXT:    ret <1 x double> [[FMLA2]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vfms_lane_f64(<1 x double> %a, <1 x double> %b, <1 x double> %v) #0 {
++// CHECK:   [[SUB:%.*]] = fneg <1 x double> %b
++// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> [[SUB]] to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <1 x double> %v to <8 x i8>
++// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP2]] to <1 x double>
++// CHECK:   [[LANE:%.*]] = shufflevector <1 x double> [[TMP3]], <1 x double> [[TMP3]], <1 x i32> zeroinitializer
++// CHECK:   [[FMLA:%.*]] = bitcast <8 x i8> [[TMP1]] to <1 x double>
++// CHECK:   [[FMLA1:%.*]] = bitcast <8 x i8> [[TMP0]] to <1 x double>
++// CHECK:   [[FMLA2:%.*]] = call <1 x double> @llvm.fma.v1f64(<1 x double> [[FMLA]], <1 x double> [[LANE]], <1 x double> [[FMLA1]])
++// CHECK:   ret <1 x double> [[FMLA2]]
+ float64x1_t test_vfms_lane_f64(float64x1_t a, float64x1_t b, float64x1_t v) {
+   return vfms_lane_f64(a, b, v, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vfma_laneq_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <1 x double> [[A:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x double> [[B:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <2 x double> [[V:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast <8 x i8> [[TMP0]] to double
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to double
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <2 x double>
+-// CHECK-NEXT:    [[EXTRACT:%.*]] = extractelement <2 x double> [[TMP5]], i32 0
+-// CHECK-NEXT:    [[TMP6:%.*]] = call double @llvm.fma.f64(double [[TMP4]], double [[EXTRACT]], double [[TMP3]])
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast double [[TMP6]] to <1 x double>
+-// CHECK-NEXT:    ret <1 x double> [[TMP7]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vfma_laneq_f64(<1 x double> %a, <1 x double> %b, <2 x double> %v) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> %b to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <2 x double> %v to <16 x i8>
++// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP0]] to double
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to double
++// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <2 x double>
++// CHECK:   [[EXTRACT:%.*]] = extractelement <2 x double> [[TMP5]], i32 0
++// CHECK:   [[TMP6:%.*]] = call double @llvm.fma.f64(double [[TMP4]], double [[EXTRACT]], double [[TMP3]])
++// CHECK:   [[TMP7:%.*]] = bitcast double [[TMP6]] to <1 x double>
++// CHECK:   ret <1 x double> [[TMP7]]
+ float64x1_t test_vfma_laneq_f64(float64x1_t a, float64x1_t b, float64x2_t v) {
+   return vfma_laneq_f64(a, b, v, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vfms_laneq_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[FNEG:%.*]] = fneg <1 x double> [[B:%.*]]
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <1 x double> [[A:%.*]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x double> [[FNEG]] to <8 x i8>
+-// CHECK-NEXT:    [[TMP2:%.*]] = bitcast <2 x double> [[V:%.*]] to <16 x i8>
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast <8 x i8> [[TMP0]] to double
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to double
+-// CHECK-NEXT:    [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <2 x double>
+-// CHECK-NEXT:    [[EXTRACT:%.*]] = extractelement <2 x double> [[TMP5]], i32 0
+-// CHECK-NEXT:    [[TMP6:%.*]] = call double @llvm.fma.f64(double [[TMP4]], double [[EXTRACT]], double [[TMP3]])
+-// CHECK-NEXT:    [[TMP7:%.*]] = bitcast double [[TMP6]] to <1 x double>
+-// CHECK-NEXT:    ret <1 x double> [[TMP7]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vfms_laneq_f64(<1 x double> %a, <1 x double> %b, <2 x double> %v) #1 {
++// CHECK:   [[SUB:%.*]] = fneg <1 x double> %b
++// CHECK:   [[TMP0:%.*]] = bitcast <1 x double> %a to <8 x i8>
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x double> [[SUB]] to <8 x i8>
++// CHECK:   [[TMP2:%.*]] = bitcast <2 x double> %v to <16 x i8>
++// CHECK:   [[TMP3:%.*]] = bitcast <8 x i8> [[TMP0]] to double
++// CHECK:   [[TMP4:%.*]] = bitcast <8 x i8> [[TMP1]] to double
++// CHECK:   [[TMP5:%.*]] = bitcast <16 x i8> [[TMP2]] to <2 x double>
++// CHECK:   [[EXTRACT:%.*]] = extractelement <2 x double> [[TMP5]], i32 0
++// CHECK:   [[TMP6:%.*]] = call double @llvm.fma.f64(double [[TMP4]], double [[EXTRACT]], double [[TMP3]])
++// CHECK:   [[TMP7:%.*]] = bitcast double [[TMP6]] to <1 x double>
++// CHECK:   ret <1 x double> [[TMP7]]
+ float64x1_t test_vfms_laneq_f64(float64x1_t a, float64x1_t b, float64x2_t v) {
+   return vfms_laneq_f64(a, b, v, 0);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmullh_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <4 x i16> [[B:%.*]], i32 3
+-// CHECK-NEXT:    [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 [[A:%.*]], i64 0
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 [[VGET_LANE]], i64 0
+-// CHECK-NEXT:    [[VQDMULLH_S16_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) [[ATTR5]]
+-// CHECK-NEXT:    [[TMP2:%.*]] = extractelement <4 x i32> [[VQDMULLH_S16_I]], i64 0
+-// CHECK-NEXT:    ret i32 [[TMP2]]
+-//
++// CHECK-LABEL: define{{.*}} i32 @test_vqdmullh_lane_s16(i16 %a, <4 x i16> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <4 x i16> %b, i32 3
++// CHECK:   [[TMP2:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[VGET_LANE]], i64 0
++// CHECK:   [[VQDMULLH_S16_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP2]], <4 x i16> [[TMP3]])
++// CHECK:   [[TMP4:%.*]] = extractelement <4 x i32> [[VQDMULLH_S16_I]], i64 0
++// CHECK:   ret i32 [[TMP4]]
+ int32_t test_vqdmullh_lane_s16(int16_t a, int16x4_t b) {
+   return vqdmullh_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmulls_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <2 x i32> [[B:%.*]], i32 1
+-// CHECK-NEXT:    [[VQDMULLS_S32_I:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 [[A:%.*]], i32 [[VGET_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    ret i64 [[VQDMULLS_S32_I]]
+-//
++// CHECK-LABEL: define{{.*}} i64 @test_vqdmulls_lane_s32(i32 %a, <2 x i32> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <2 x i32> %b, i32 1
++// CHECK:   [[VQDMULLS_S32_I:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 %a, i32 [[VGET_LANE]])
++// CHECK:   ret i64 [[VQDMULLS_S32_I]]
+ int64_t test_vqdmulls_lane_s32(int32_t a, int32x2_t b) {
+   return vqdmulls_lane_s32(a, b, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmullh_laneq_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <8 x i16> [[B:%.*]], i32 7
+-// CHECK-NEXT:    [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 [[A:%.*]], i64 0
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 [[VGETQ_LANE]], i64 0
+-// CHECK-NEXT:    [[VQDMULLH_S16_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) [[ATTR5]]
+-// CHECK-NEXT:    [[TMP2:%.*]] = extractelement <4 x i32> [[VQDMULLH_S16_I]], i64 0
+-// CHECK-NEXT:    ret i32 [[TMP2]]
+-//
++// CHECK-LABEL: define{{.*}} i32 @test_vqdmullh_laneq_s16(i16 %a, <8 x i16> %b) #1 {
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <8 x i16> %b, i32 7
++// CHECK:   [[TMP2:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[VGETQ_LANE]], i64 0
++// CHECK:   [[VQDMULLH_S16_I:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP2]], <4 x i16> [[TMP3]])
++// CHECK:   [[TMP4:%.*]] = extractelement <4 x i32> [[VQDMULLH_S16_I]], i64 0
++// CHECK:   ret i32 [[TMP4]]
+ int32_t test_vqdmullh_laneq_s16(int16_t a, int16x8_t b) {
+   return vqdmullh_laneq_s16(a, b, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmulls_laneq_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <4 x i32> [[B:%.*]], i32 3
+-// CHECK-NEXT:    [[VQDMULLS_S32_I:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 [[A:%.*]], i32 [[VGETQ_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    ret i64 [[VQDMULLS_S32_I]]
+-//
++// CHECK-LABEL: define{{.*}} i64 @test_vqdmulls_laneq_s32(i32 %a, <4 x i32> %b) #1 {
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <4 x i32> %b, i32 3
++// CHECK:   [[VQDMULLS_S32_I:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 %a, i32 [[VGETQ_LANE]])
++// CHECK:   ret i64 [[VQDMULLS_S32_I]]
+ int64_t test_vqdmulls_laneq_s32(int32_t a, int32x4_t b) {
+   return vqdmulls_laneq_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmulhh_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <4 x i16> [[B:%.*]], i32 3
+-// CHECK-NEXT:    [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 [[A:%.*]], i64 0
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 [[VGET_LANE]], i64 0
+-// CHECK-NEXT:    [[VQDMULHH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqdmulh.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) [[ATTR5]]
+-// CHECK-NEXT:    [[TMP2:%.*]] = extractelement <4 x i16> [[VQDMULHH_S16_I]], i64 0
+-// CHECK-NEXT:    ret i16 [[TMP2]]
+-//
++// CHECK-LABEL: define{{.*}} i16 @test_vqdmulhh_lane_s16(i16 %a, <4 x i16> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <4 x i16> %b, i32 3
++// CHECK:   [[TMP2:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[VGET_LANE]], i64 0
++// CHECK:   [[VQDMULHH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqdmulh.v4i16(<4 x i16> [[TMP2]], <4 x i16> [[TMP3]])
++// CHECK:   [[TMP4:%.*]] = extractelement <4 x i16> [[VQDMULHH_S16_I]], i64 0
++// CHECK:   ret i16 [[TMP4]]
+ int16_t test_vqdmulhh_lane_s16(int16_t a, int16x4_t b) {
+   return vqdmulhh_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmulhs_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <2 x i32> [[B:%.*]], i32 1
+-// CHECK-NEXT:    [[VQDMULHS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqdmulh.i32(i32 [[A:%.*]], i32 [[VGET_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    ret i32 [[VQDMULHS_S32_I]]
+-//
++// CHECK-LABEL: define{{.*}} i32 @test_vqdmulhs_lane_s32(i32 %a, <2 x i32> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <2 x i32> %b, i32 1
++// CHECK:   [[VQDMULHS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqdmulh.i32(i32 %a, i32 [[VGET_LANE]])
++// CHECK:   ret i32 [[VQDMULHS_S32_I]]
+ int32_t test_vqdmulhs_lane_s32(int32_t a, int32x2_t b) {
+   return vqdmulhs_lane_s32(a, b, 1);
+ }
+ 
+ 
+-// CHECK-LABEL: @test_vqdmulhh_laneq_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <8 x i16> [[B:%.*]], i32 7
+-// CHECK-NEXT:    [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 [[A:%.*]], i64 0
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 [[VGETQ_LANE]], i64 0
+-// CHECK-NEXT:    [[VQDMULHH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqdmulh.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) [[ATTR5]]
+-// CHECK-NEXT:    [[TMP2:%.*]] = extractelement <4 x i16> [[VQDMULHH_S16_I]], i64 0
+-// CHECK-NEXT:    ret i16 [[TMP2]]
+-//
++// CHECK-LABEL: define{{.*}} i16 @test_vqdmulhh_laneq_s16(i16 %a, <8 x i16> %b) #1 {
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <8 x i16> %b, i32 7
++// CHECK:   [[TMP2:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[VGETQ_LANE]], i64 0
++// CHECK:   [[VQDMULHH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqdmulh.v4i16(<4 x i16> [[TMP2]], <4 x i16> [[TMP3]])
++// CHECK:   [[TMP4:%.*]] = extractelement <4 x i16> [[VQDMULHH_S16_I]], i64 0
++// CHECK:   ret i16 [[TMP4]]
+ int16_t test_vqdmulhh_laneq_s16(int16_t a, int16x8_t b) {
+   return vqdmulhh_laneq_s16(a, b, 7);
+ }
+ 
+ 
+-// CHECK-LABEL: @test_vqdmulhs_laneq_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <4 x i32> [[B:%.*]], i32 3
+-// CHECK-NEXT:    [[VQDMULHS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqdmulh.i32(i32 [[A:%.*]], i32 [[VGETQ_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    ret i32 [[VQDMULHS_S32_I]]
+-//
++// CHECK-LABEL: define{{.*}} i32 @test_vqdmulhs_laneq_s32(i32 %a, <4 x i32> %b) #1 {
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <4 x i32> %b, i32 3
++// CHECK:   [[VQDMULHS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqdmulh.i32(i32 %a, i32 [[VGETQ_LANE]])
++// CHECK:   ret i32 [[VQDMULHS_S32_I]]
+ int32_t test_vqdmulhs_laneq_s32(int32_t a, int32x4_t b) {
+   return vqdmulhs_laneq_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vqrdmulhh_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <4 x i16> [[B:%.*]], i32 3
+-// CHECK-NEXT:    [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 [[A:%.*]], i64 0
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 [[VGET_LANE]], i64 0
+-// CHECK-NEXT:    [[VQRDMULHH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrdmulh.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) [[ATTR5]]
+-// CHECK-NEXT:    [[TMP2:%.*]] = extractelement <4 x i16> [[VQRDMULHH_S16_I]], i64 0
+-// CHECK-NEXT:    ret i16 [[TMP2]]
+-//
++// CHECK-LABEL: define{{.*}} i16 @test_vqrdmulhh_lane_s16(i16 %a, <4 x i16> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <4 x i16> %b, i32 3
++// CHECK:   [[TMP2:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[VGET_LANE]], i64 0
++// CHECK:   [[VQRDMULHH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrdmulh.v4i16(<4 x i16> [[TMP2]], <4 x i16> [[TMP3]])
++// CHECK:   [[TMP4:%.*]] = extractelement <4 x i16> [[VQRDMULHH_S16_I]], i64 0
++// CHECK:   ret i16 [[TMP4]]
+ int16_t test_vqrdmulhh_lane_s16(int16_t a, int16x4_t b) {
+   return vqrdmulhh_lane_s16(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vqrdmulhs_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <2 x i32> [[B:%.*]], i32 1
+-// CHECK-NEXT:    [[VQRDMULHS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqrdmulh.i32(i32 [[A:%.*]], i32 [[VGET_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    ret i32 [[VQRDMULHS_S32_I]]
+-//
++// CHECK-LABEL: define{{.*}} i32 @test_vqrdmulhs_lane_s32(i32 %a, <2 x i32> %b) #0 {
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <2 x i32> %b, i32 1
++// CHECK:   [[VQRDMULHS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqrdmulh.i32(i32 %a, i32 [[VGET_LANE]])
++// CHECK:   ret i32 [[VQRDMULHS_S32_I]]
+ int32_t test_vqrdmulhs_lane_s32(int32_t a, int32x2_t b) {
+   return vqrdmulhs_lane_s32(a, b, 1);
+ }
+ 
+ 
+-// CHECK-LABEL: @test_vqrdmulhh_laneq_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <8 x i16> [[B:%.*]], i32 7
+-// CHECK-NEXT:    [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 [[A:%.*]], i64 0
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 [[VGETQ_LANE]], i64 0
+-// CHECK-NEXT:    [[VQRDMULHH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrdmulh.v4i16(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]]) [[ATTR5]]
+-// CHECK-NEXT:    [[TMP2:%.*]] = extractelement <4 x i16> [[VQRDMULHH_S16_I]], i64 0
+-// CHECK-NEXT:    ret i16 [[TMP2]]
+-//
++// CHECK-LABEL: define{{.*}} i16 @test_vqrdmulhh_laneq_s16(i16 %a, <8 x i16> %b) #1 {
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <8 x i16> %b, i32 7
++// CHECK:   [[TMP2:%.*]] = insertelement <4 x i16> undef, i16 %a, i64 0
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[VGETQ_LANE]], i64 0
++// CHECK:   [[VQRDMULHH_S16_I:%.*]] = call <4 x i16> @llvm.aarch64.neon.sqrdmulh.v4i16(<4 x i16> [[TMP2]], <4 x i16> [[TMP3]])
++// CHECK:   [[TMP4:%.*]] = extractelement <4 x i16> [[VQRDMULHH_S16_I]], i64 0
++// CHECK:   ret i16 [[TMP4]]
+ int16_t test_vqrdmulhh_laneq_s16(int16_t a, int16x8_t b) {
+   return vqrdmulhh_laneq_s16(a, b, 7);
+ }
+ 
+ 
+-// CHECK-LABEL: @test_vqrdmulhs_laneq_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <4 x i32> [[B:%.*]], i32 3
+-// CHECK-NEXT:    [[VQRDMULHS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqrdmulh.i32(i32 [[A:%.*]], i32 [[VGETQ_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    ret i32 [[VQRDMULHS_S32_I]]
+-//
++// CHECK-LABEL: define{{.*}} i32 @test_vqrdmulhs_laneq_s32(i32 %a, <4 x i32> %b) #1 {
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <4 x i32> %b, i32 3
++// CHECK:   [[VQRDMULHS_S32_I:%.*]] = call i32 @llvm.aarch64.neon.sqrdmulh.i32(i32 %a, i32 [[VGETQ_LANE]])
++// CHECK:   ret i32 [[VQRDMULHS_S32_I]]
+ int32_t test_vqrdmulhs_laneq_s32(int32_t a, int32x4_t b) {
+   return vqrdmulhs_laneq_s32(a, b, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmlalh_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[LANE:%.*]] = extractelement <4 x i16> [[C:%.*]], i32 3
+-// CHECK-NEXT:    [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 [[B:%.*]], i64 0
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 [[LANE]], i64 0
+-// CHECK-NEXT:    [[VQDMLXL:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]])
+-// CHECK-NEXT:    [[LANE0:%.*]] = extractelement <4 x i32> [[VQDMLXL]], i64 0
+-// CHECK-NEXT:    [[VQDMLXL1:%.*]] = call i32 @llvm.aarch64.neon.sqadd.i32(i32 [[A:%.*]], i32 [[LANE0]])
+-// CHECK-NEXT:    ret i32 [[VQDMLXL1]]
+-//
++// CHECK-LABEL: define{{.*}} i32 @test_vqdmlalh_lane_s16(i32 %a, i16 %b, <4 x i16> %c) #0 {
++// CHECK:   [[LANE:%.*]] = extractelement <4 x i16> %c, i32 3
++// CHECK:   [[TMP2:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[LANE]], i64 0
++// CHECK:   [[VQDMLXL:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP2]], <4 x i16> [[TMP3]])
++// CHECK:   [[LANE0:%.*]] = extractelement <4 x i32> [[VQDMLXL]], i64 0
++// CHECK:   [[VQDMLXL1:%.*]] = call i32 @llvm.aarch64.neon.sqadd.i32(i32 %a, i32 [[LANE0]])
++// CHECK:   ret i32 [[VQDMLXL1]]
+ int32_t test_vqdmlalh_lane_s16(int32_t a, int16_t b, int16x4_t c) {
+   return vqdmlalh_lane_s16(a, b, c, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmlals_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[LANE:%.*]] = extractelement <2 x i32> [[C:%.*]], i32 1
+-// CHECK-NEXT:    [[VQDMLXL:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 [[B:%.*]], i32 [[LANE]])
+-// CHECK-NEXT:    [[VQDMLXL1:%.*]] = call i64 @llvm.aarch64.neon.sqadd.i64(i64 [[A:%.*]], i64 [[VQDMLXL]])
+-// CHECK-NEXT:    ret i64 [[VQDMLXL1]]
+-//
++// CHECK-LABEL: define{{.*}} i64 @test_vqdmlals_lane_s32(i64 %a, i32 %b, <2 x i32> %c) #0 {
++// CHECK:   [[LANE:%.*]] = extractelement <2 x i32> %c, i32 1
++// CHECK:   [[VQDMLXL:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 %b, i32 [[LANE]])
++// CHECK:   [[VQDMLXL1:%.*]] = call i64 @llvm.aarch64.neon.sqadd.i64(i64 %a, i64 [[VQDMLXL]])
++// CHECK:   ret i64 [[VQDMLXL1]]
+ int64_t test_vqdmlals_lane_s32(int64_t a, int32_t b, int32x2_t c) {
+   return vqdmlals_lane_s32(a, b, c, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmlalh_laneq_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[LANE:%.*]] = extractelement <8 x i16> [[C:%.*]], i32 7
+-// CHECK-NEXT:    [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 [[B:%.*]], i64 0
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 [[LANE]], i64 0
+-// CHECK-NEXT:    [[VQDMLXL:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]])
+-// CHECK-NEXT:    [[LANE0:%.*]] = extractelement <4 x i32> [[VQDMLXL]], i64 0
+-// CHECK-NEXT:    [[VQDMLXL1:%.*]] = call i32 @llvm.aarch64.neon.sqadd.i32(i32 [[A:%.*]], i32 [[LANE0]])
+-// CHECK-NEXT:    ret i32 [[VQDMLXL1]]
+-//
++// CHECK-LABEL: define{{.*}} i32 @test_vqdmlalh_laneq_s16(i32 %a, i16 %b, <8 x i16> %c) #1 {
++// CHECK:   [[LANE:%.*]] = extractelement <8 x i16> %c, i32 7
++// CHECK:   [[TMP2:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[LANE]], i64 0
++// CHECK:   [[VQDMLXL:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP2]], <4 x i16> [[TMP3]])
++// CHECK:   [[LANE0:%.*]] = extractelement <4 x i32> [[VQDMLXL]], i64 0
++// CHECK:   [[VQDMLXL1:%.*]] = call i32 @llvm.aarch64.neon.sqadd.i32(i32 %a, i32 [[LANE0]])
++// CHECK:   ret i32 [[VQDMLXL1]]
+ int32_t test_vqdmlalh_laneq_s16(int32_t a, int16_t b, int16x8_t c) {
+   return vqdmlalh_laneq_s16(a, b, c, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmlals_laneq_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[LANE:%.*]] = extractelement <4 x i32> [[C:%.*]], i32 3
+-// CHECK-NEXT:    [[VQDMLXL:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 [[B:%.*]], i32 [[LANE]])
+-// CHECK-NEXT:    [[VQDMLXL1:%.*]] = call i64 @llvm.aarch64.neon.sqadd.i64(i64 [[A:%.*]], i64 [[VQDMLXL]])
+-// CHECK-NEXT:    ret i64 [[VQDMLXL1]]
+-//
++// CHECK-LABEL: define{{.*}} i64 @test_vqdmlals_laneq_s32(i64 %a, i32 %b, <4 x i32> %c) #1 {
++// CHECK:   [[LANE:%.*]] = extractelement <4 x i32> %c, i32 3
++// CHECK:   [[VQDMLXL:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 %b, i32 [[LANE]])
++// CHECK:   [[VQDMLXL1:%.*]] = call i64 @llvm.aarch64.neon.sqadd.i64(i64 %a, i64 [[VQDMLXL]])
++// CHECK:   ret i64 [[VQDMLXL1]]
+ int64_t test_vqdmlals_laneq_s32(int64_t a, int32_t b, int32x4_t c) {
+   return vqdmlals_laneq_s32(a, b, c, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmlslh_lane_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[LANE:%.*]] = extractelement <4 x i16> [[C:%.*]], i32 3
+-// CHECK-NEXT:    [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 [[B:%.*]], i64 0
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 [[LANE]], i64 0
+-// CHECK-NEXT:    [[VQDMLXL:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]])
+-// CHECK-NEXT:    [[LANE0:%.*]] = extractelement <4 x i32> [[VQDMLXL]], i64 0
+-// CHECK-NEXT:    [[VQDMLXL1:%.*]] = call i32 @llvm.aarch64.neon.sqsub.i32(i32 [[A:%.*]], i32 [[LANE0]])
+-// CHECK-NEXT:    ret i32 [[VQDMLXL1]]
+-//
++// CHECK-LABEL: define{{.*}} i32 @test_vqdmlslh_lane_s16(i32 %a, i16 %b, <4 x i16> %c) #0 {
++// CHECK:   [[LANE:%.*]] = extractelement <4 x i16> %c, i32 3
++// CHECK:   [[TMP2:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[LANE]], i64 0
++// CHECK:   [[VQDMLXL:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP2]], <4 x i16> [[TMP3]])
++// CHECK:   [[LANE0:%.*]] = extractelement <4 x i32> [[VQDMLXL]], i64 0
++// CHECK:   [[VQDMLXL1:%.*]] = call i32 @llvm.aarch64.neon.sqsub.i32(i32 %a, i32 [[LANE0]])
++// CHECK:   ret i32 [[VQDMLXL1]]
+ int32_t test_vqdmlslh_lane_s16(int32_t a, int16_t b, int16x4_t c) {
+   return vqdmlslh_lane_s16(a, b, c, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmlsls_lane_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[LANE:%.*]] = extractelement <2 x i32> [[C:%.*]], i32 1
+-// CHECK-NEXT:    [[VQDMLXL:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 [[B:%.*]], i32 [[LANE]])
+-// CHECK-NEXT:    [[VQDMLXL1:%.*]] = call i64 @llvm.aarch64.neon.sqsub.i64(i64 [[A:%.*]], i64 [[VQDMLXL]])
+-// CHECK-NEXT:    ret i64 [[VQDMLXL1]]
+-//
++// CHECK-LABEL: define{{.*}} i64 @test_vqdmlsls_lane_s32(i64 %a, i32 %b, <2 x i32> %c) #0 {
++// CHECK:   [[LANE:%.*]] = extractelement <2 x i32> %c, i32 1
++// CHECK:   [[VQDMLXL:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 %b, i32 [[LANE]])
++// CHECK:   [[VQDMLXL1:%.*]] = call i64 @llvm.aarch64.neon.sqsub.i64(i64 %a, i64 [[VQDMLXL]])
++// CHECK:   ret i64 [[VQDMLXL1]]
+ int64_t test_vqdmlsls_lane_s32(int64_t a, int32_t b, int32x2_t c) {
+   return vqdmlsls_lane_s32(a, b, c, 1);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmlslh_laneq_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[LANE:%.*]] = extractelement <8 x i16> [[C:%.*]], i32 7
+-// CHECK-NEXT:    [[TMP0:%.*]] = insertelement <4 x i16> undef, i16 [[B:%.*]], i64 0
+-// CHECK-NEXT:    [[TMP1:%.*]] = insertelement <4 x i16> undef, i16 [[LANE]], i64 0
+-// CHECK-NEXT:    [[VQDMLXL:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP0]], <4 x i16> [[TMP1]])
+-// CHECK-NEXT:    [[LANE0:%.*]] = extractelement <4 x i32> [[VQDMLXL]], i64 0
+-// CHECK-NEXT:    [[VQDMLXL1:%.*]] = call i32 @llvm.aarch64.neon.sqsub.i32(i32 [[A:%.*]], i32 [[LANE0]])
+-// CHECK-NEXT:    ret i32 [[VQDMLXL1]]
+-//
++// CHECK-LABEL: define{{.*}} i32 @test_vqdmlslh_laneq_s16(i32 %a, i16 %b, <8 x i16> %c) #1 {
++// CHECK:   [[LANE:%.*]] = extractelement <8 x i16> %c, i32 7
++// CHECK:   [[TMP2:%.*]] = insertelement <4 x i16> undef, i16 %b, i64 0
++// CHECK:   [[TMP3:%.*]] = insertelement <4 x i16> undef, i16 [[LANE]], i64 0
++// CHECK:   [[VQDMLXL:%.*]] = call <4 x i32> @llvm.aarch64.neon.sqdmull.v4i32(<4 x i16> [[TMP2]], <4 x i16> [[TMP3]])
++// CHECK:   [[LANE0:%.*]] = extractelement <4 x i32> [[VQDMLXL]], i64 0
++// CHECK:   [[VQDMLXL1:%.*]] = call i32 @llvm.aarch64.neon.sqsub.i32(i32 %a, i32 [[LANE0]])
++// CHECK:   ret i32 [[VQDMLXL1]]
+ int32_t test_vqdmlslh_laneq_s16(int32_t a, int16_t b, int16x8_t c) {
+   return vqdmlslh_laneq_s16(a, b, c, 7);
+ }
+ 
+-// CHECK-LABEL: @test_vqdmlsls_laneq_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[LANE:%.*]] = extractelement <4 x i32> [[C:%.*]], i32 3
+-// CHECK-NEXT:    [[VQDMLXL:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 [[B:%.*]], i32 [[LANE]])
+-// CHECK-NEXT:    [[VQDMLXL1:%.*]] = call i64 @llvm.aarch64.neon.sqsub.i64(i64 [[A:%.*]], i64 [[VQDMLXL]])
+-// CHECK-NEXT:    ret i64 [[VQDMLXL1]]
+-//
++// CHECK-LABEL: define{{.*}} i64 @test_vqdmlsls_laneq_s32(i64 %a, i32 %b, <4 x i32> %c) #1 {
++// CHECK:   [[LANE:%.*]] = extractelement <4 x i32> %c, i32 3
++// CHECK:   [[VQDMLXL:%.*]] = call i64 @llvm.aarch64.neon.sqdmulls.scalar(i32 %b, i32 [[LANE]])
++// CHECK:   [[VQDMLXL1:%.*]] = call i64 @llvm.aarch64.neon.sqsub.i64(i64 %a, i64 [[VQDMLXL]])
++// CHECK:   ret i64 [[VQDMLXL1]]
+ int64_t test_vqdmlsls_laneq_s32(int64_t a, int32_t b, int32x4_t c) {
+   return vqdmlsls_laneq_s32(a, b, c, 3);
+ }
+ 
+-// CHECK-LABEL: @test_vmulx_lane_f64_0(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64 4599917171378402754 to <1 x double>
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64 4606655882138939123 to <1 x double>
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <1 x double> [[TMP0]], i32 0
+-// CHECK-NEXT:    [[VGET_LANE8:%.*]] = extractelement <1 x double> [[TMP1]], i32 0
+-// CHECK-NEXT:    [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[VGET_LANE]], double [[VGET_LANE8]]) [[ATTR5]]
+-// CHECK-NEXT:    [[VSET_LANE:%.*]] = insertelement <1 x double> [[TMP0]], double [[VMULXD_F64_I]], i32 0
+-// CHECK-NEXT:    ret <1 x double> [[VSET_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vmulx_lane_f64_0() #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64 4599917171378402754 to <1 x double>
++// CHECK:   [[TMP1:%.*]] = bitcast i64 4606655882138939123 to <1 x double>
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <1 x double> [[TMP0]], i32 0
++// CHECK:   [[VGET_LANE7:%.*]] = extractelement <1 x double> [[TMP1]], i32 0
++// CHECK:   [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[VGET_LANE]], double [[VGET_LANE7]])
++// CHECK:   [[VSET_LANE:%.*]] = insertelement <1 x double> [[TMP0]], double [[VMULXD_F64_I]], i32 0
++// CHECK:   ret <1 x double> [[VSET_LANE]]
+ float64x1_t test_vmulx_lane_f64_0() {
+       float64x1_t arg1;
+       float64x1_t arg2;
+@@ -508,17 +425,15 @@ float64x1_t test_vmulx_lane_f64_0() {
+       return result;
+ }
+ 
+-// CHECK-LABEL: @test_vmulx_laneq_f64_2(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i64 4599917171378402754 to <1 x double>
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64 4606655882138939123 to <1 x double>
+-// CHECK-NEXT:    [[SHUFFLE_I:%.*]] = shufflevector <1 x double> [[TMP0]], <1 x double> [[TMP1]], <2 x i32> <i32 0, i32 1>
+-// CHECK-NEXT:    [[VGET_LANE:%.*]] = extractelement <1 x double> [[TMP0]], i32 0
+-// CHECK-NEXT:    [[VGETQ_LANE:%.*]] = extractelement <2 x double> [[SHUFFLE_I]], i32 1
+-// CHECK-NEXT:    [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[VGET_LANE]], double [[VGETQ_LANE]]) [[ATTR5]]
+-// CHECK-NEXT:    [[VSET_LANE:%.*]] = insertelement <1 x double> [[TMP0]], double [[VMULXD_F64_I]], i32 0
+-// CHECK-NEXT:    ret <1 x double> [[VSET_LANE]]
+-//
++// CHECK-LABEL: define{{.*}} <1 x double> @test_vmulx_laneq_f64_2() #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i64 4599917171378402754 to <1 x double>
++// CHECK:   [[TMP1:%.*]] = bitcast i64 4606655882138939123 to <1 x double>
++// CHECK:   [[SHUFFLE_I:%.*]] = shufflevector <1 x double> [[TMP0]], <1 x double> [[TMP1]], <2 x i32> <i32 0, i32 1>
++// CHECK:   [[VGET_LANE:%.*]] = extractelement <1 x double> [[TMP0]], i32 0
++// CHECK:   [[VGETQ_LANE:%.*]] = extractelement <2 x double> [[SHUFFLE_I]], i32 1
++// CHECK:   [[VMULXD_F64_I:%.*]] = call double @llvm.aarch64.neon.fmulx.f64(double [[VGET_LANE]], double [[VGETQ_LANE]])
++// CHECK:   [[VSET_LANE:%.*]] = insertelement <1 x double> [[TMP0]], double [[VMULXD_F64_I]], i32 0
++// CHECK:   ret <1 x double> [[VSET_LANE]]
+ float64x1_t test_vmulx_laneq_f64_2() {
+       float64x1_t arg1;
+       float64x1_t arg2;
+diff --git a/clang/test/CodeGen/aarch64-poly128.c b/clang/test/CodeGen/aarch64-poly128.c
+index f55e36cf2f2f..113160f9d64b 100644
+--- a/clang/test/CodeGen/aarch64-poly128.c
++++ b/clang/test/CodeGen/aarch64-poly128.c
+@@ -1,4 +1,3 @@
+-// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
+ // REQUIRES: aarch64-registered-target
+ // RUN: %clang_cc1 -triple arm64-none-linux-gnu -target-feature +neon \
+ // RUN: -disable-O0-optnone -ffp-contract=fast -emit-llvm -o - %s | opt -S -mem2reg \
+@@ -13,300 +12,238 @@
+ 
+ #include <arm_neon.h>
+ 
+-// CHECK-LABEL: @test_vstrq_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128* [[PTR:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i128*
+-// CHECK-NEXT:    store i128 [[VAL:%.*]], i128* [[TMP1]], align 16
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_vstrq_p128(i128* %ptr, i128 %val) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128* %ptr to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i128*
++// CHECK:   store i128 %val, i128* [[TMP1]]
++// CHECK:   ret void
+ void test_vstrq_p128(poly128_t * ptr, poly128_t val) {
+   vstrq_p128(ptr, val);
+ 
+ }
+ 
+-// CHECK-LABEL: @test_vldrq_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128* [[PTR:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i128*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i128, i128* [[TMP1]], align 16
+-// CHECK-NEXT:    ret i128 [[TMP2]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vldrq_p128(i128* %ptr) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128* %ptr to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i128*
++// CHECK:   [[TMP2:%.*]] = load i128, i128* [[TMP1]]
++// CHECK:   ret i128 [[TMP2]]
+ poly128_t test_vldrq_p128(poly128_t * ptr) {
+   return vldrq_p128(ptr);
+ 
+ }
+ 
+-// CHECK-LABEL: @test_ld_st_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128* [[PTR:%.*]] to i8*
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i128*
+-// CHECK-NEXT:    [[TMP2:%.*]] = load i128, i128* [[TMP1]], align 16
+-// CHECK-NEXT:    [[ADD_PTR:%.*]] = getelementptr inbounds i128, i128* [[PTR]], i64 1
+-// CHECK-NEXT:    [[TMP3:%.*]] = bitcast i128* [[ADD_PTR]] to i8*
+-// CHECK-NEXT:    [[TMP4:%.*]] = bitcast i8* [[TMP3]] to i128*
+-// CHECK-NEXT:    store i128 [[TMP2]], i128* [[TMP4]], align 16
+-// CHECK-NEXT:    ret void
+-//
++// CHECK-LABEL: define{{.*}} void @test_ld_st_p128(i128* %ptr) #0 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128* %ptr to i8*
++// CHECK:   [[TMP1:%.*]] = bitcast i8* [[TMP0]] to i128*
++// CHECK:   [[TMP2:%.*]] = load i128, i128* [[TMP1]]
++// CHECK:   [[ADD_PTR:%.*]] = getelementptr inbounds i128, i128* %ptr, i64 1
++// CHECK:   [[TMP3:%.*]] = bitcast i128* [[ADD_PTR]] to i8*
++// CHECK:   [[TMP4:%.*]] = bitcast i8* [[TMP3]] to i128*
++// CHECK:   store i128 [[TMP2]], i128* [[TMP4]]
++// CHECK:   ret void
+ void test_ld_st_p128(poly128_t * ptr) {
+    vstrq_p128(ptr+1, vldrq_p128(ptr));
+ 
+ }
+ 
+-// CHECK-LABEL: @test_vmull_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[VMULL_P64_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.pmull64(i64 [[A:%.*]], i64 [[B:%.*]]) [[ATTR3:#.*]]
+-// CHECK-NEXT:    [[VMULL_P641_I:%.*]] = bitcast <16 x i8> [[VMULL_P64_I]] to i128
+-// CHECK-NEXT:    ret i128 [[VMULL_P641_I]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vmull_p64(i64 %a, i64 %b) #0 {
++// CHECK:   [[VMULL_P64_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.pmull64(i64 %a, i64 %b) #3
++// CHECK:   [[VMULL_P641_I:%.*]] = bitcast <16 x i8> [[VMULL_P64_I]] to i128
++// CHECK:   ret i128 [[VMULL_P641_I]]
+ poly128_t test_vmull_p64(poly64_t a, poly64_t b) {
+   return vmull_p64(a, b);
+ }
+ 
+-// CHECK-LABEL: @test_vmull_high_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i64> [[A:%.*]], <2 x i64> [[A]], <1 x i32> <i32 1>
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <1 x i64> [[SHUFFLE_I_I]] to i64
+-// CHECK-NEXT:    [[SHUFFLE_I7_I:%.*]] = shufflevector <2 x i64> [[B:%.*]], <2 x i64> [[B]], <1 x i32> <i32 1>
+-// CHECK-NEXT:    [[TMP1:%.*]] = bitcast <1 x i64> [[SHUFFLE_I7_I]] to i64
+-// CHECK-NEXT:    [[VMULL_P64_I_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.pmull64(i64 [[TMP0]], i64 [[TMP1]]) [[ATTR3]]
+-// CHECK-NEXT:    [[VMULL_P641_I_I:%.*]] = bitcast <16 x i8> [[VMULL_P64_I_I]] to i128
+-// CHECK-NEXT:    ret i128 [[VMULL_P641_I_I]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vmull_high_p64(<2 x i64> %a, <2 x i64> %b) #1 {
++// CHECK:   [[SHUFFLE_I_I:%.*]] = shufflevector <2 x i64> %a, <2 x i64> %a, <1 x i32> <i32 1>
++// CHECK:   [[TMP0:%.*]] = bitcast <1 x i64> [[SHUFFLE_I_I]] to i64
++// CHECK:   [[SHUFFLE_I7_I:%.*]] = shufflevector <2 x i64> %b, <2 x i64> %b, <1 x i32> <i32 1>
++// CHECK:   [[TMP1:%.*]] = bitcast <1 x i64> [[SHUFFLE_I7_I]] to i64
++// CHECK:   [[VMULL_P64_I_I:%.*]] = call <16 x i8> @llvm.aarch64.neon.pmull64(i64 [[TMP0]], i64 [[TMP1]]) #3
++// CHECK:   [[VMULL_P641_I_I:%.*]] = bitcast <16 x i8> [[VMULL_P64_I_I]] to i128
++// CHECK:   ret i128 [[VMULL_P641_I_I]]
+ poly128_t test_vmull_high_p64(poly64x2_t a, poly64x2_t b) {
+   return vmull_high_p64(a, b);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_s8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_s8(<16 x i8> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_s8(int8x16_t a) {
+   return vreinterpretq_p128_s8(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_s16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_s16(<8 x i16> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_s16(int16x8_t a) {
+   return vreinterpretq_p128_s16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_s32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_s32(<4 x i32> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_s32(int32x4_t a) {
+   return vreinterpretq_p128_s32(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_s64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_s64(<2 x i64> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_s64(int64x2_t a) {
+   return vreinterpretq_p128_s64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_u8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_u8(<16 x i8> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_u8(uint8x16_t a) {
+   return vreinterpretq_p128_u8(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_u16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_u16(<8 x i16> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_u16(uint16x8_t a) {
+   return vreinterpretq_p128_u16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_u32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <4 x i32> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_u32(<4 x i32> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <4 x i32> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_u32(uint32x4_t a) {
+   return vreinterpretq_p128_u32(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_u64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_u64(<2 x i64> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_u64(uint64x2_t a) {
+   return vreinterpretq_p128_u64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_f32(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <4 x float> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_f32(<4 x float> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <4 x float> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_f32(float32x4_t a) {
+   return vreinterpretq_p128_f32(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_f64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x double> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_f64(<2 x double> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <2 x double> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_f64(float64x2_t a) {
+   return vreinterpretq_p128_f64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_p8(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <16 x i8> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_p8(<16 x i8> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <16 x i8> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_p8(poly8x16_t a) {
+   return vreinterpretq_p128_p8(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_p16(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <8 x i16> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_p16(<8 x i16> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <8 x i16> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_p16(poly16x8_t a) {
+   return vreinterpretq_p128_p16(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p128_p64(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast <2 x i64> [[A:%.*]] to i128
+-// CHECK-NEXT:    ret i128 [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} i128 @test_vreinterpretq_p128_p64(<2 x i64> %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast <2 x i64> %a to i128
++// CHECK:   ret i128 [[TMP0]]
+ poly128_t test_vreinterpretq_p128_p64(poly64x2_t a) {
+   return vreinterpretq_p128_p64(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_s8_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <16 x i8>
+-// CHECK-NEXT:    ret <16 x i8> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <16 x i8> @test_vreinterpretq_s8_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <16 x i8>
++// CHECK:   ret <16 x i8> [[TMP0]]
+ int8x16_t test_vreinterpretq_s8_p128(poly128_t a) {
+   return vreinterpretq_s8_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_s16_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <8 x i16>
+-// CHECK-NEXT:    ret <8 x i16> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i16> @test_vreinterpretq_s16_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <8 x i16>
++// CHECK:   ret <8 x i16> [[TMP0]]
+ int16x8_t test_vreinterpretq_s16_p128(poly128_t  a) {
+   return vreinterpretq_s16_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_s32_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <4 x i32>
+-// CHECK-NEXT:    ret <4 x i32> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i32> @test_vreinterpretq_s32_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <4 x i32>
++// CHECK:   ret <4 x i32> [[TMP0]]
+ int32x4_t test_vreinterpretq_s32_p128(poly128_t a) {
+   return vreinterpretq_s32_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_s64_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <2 x i64>
+-// CHECK-NEXT:    ret <2 x i64> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i64> @test_vreinterpretq_s64_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <2 x i64>
++// CHECK:   ret <2 x i64> [[TMP0]]
+ int64x2_t test_vreinterpretq_s64_p128(poly128_t  a) {
+   return vreinterpretq_s64_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_u8_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <16 x i8>
+-// CHECK-NEXT:    ret <16 x i8> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <16 x i8> @test_vreinterpretq_u8_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <16 x i8>
++// CHECK:   ret <16 x i8> [[TMP0]]
+ uint8x16_t test_vreinterpretq_u8_p128(poly128_t  a) {
+   return vreinterpretq_u8_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_u16_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <8 x i16>
+-// CHECK-NEXT:    ret <8 x i16> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i16> @test_vreinterpretq_u16_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <8 x i16>
++// CHECK:   ret <8 x i16> [[TMP0]]
+ uint16x8_t test_vreinterpretq_u16_p128(poly128_t  a) {
+   return vreinterpretq_u16_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_u32_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <4 x i32>
+-// CHECK-NEXT:    ret <4 x i32> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x i32> @test_vreinterpretq_u32_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <4 x i32>
++// CHECK:   ret <4 x i32> [[TMP0]]
+ uint32x4_t test_vreinterpretq_u32_p128(poly128_t  a) {
+   return vreinterpretq_u32_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_u64_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <2 x i64>
+-// CHECK-NEXT:    ret <2 x i64> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i64> @test_vreinterpretq_u64_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <2 x i64>
++// CHECK:   ret <2 x i64> [[TMP0]]
+ uint64x2_t test_vreinterpretq_u64_p128(poly128_t  a) {
+   return vreinterpretq_u64_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_f32_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <4 x float>
+-// CHECK-NEXT:    ret <4 x float> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <4 x float> @test_vreinterpretq_f32_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <4 x float>
++// CHECK:   ret <4 x float> [[TMP0]]
+ float32x4_t test_vreinterpretq_f32_p128(poly128_t  a) {
+   return vreinterpretq_f32_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_f64_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <2 x double>
+-// CHECK-NEXT:    ret <2 x double> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x double> @test_vreinterpretq_f64_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <2 x double>
++// CHECK:   ret <2 x double> [[TMP0]]
+ float64x2_t test_vreinterpretq_f64_p128(poly128_t  a) {
+   return vreinterpretq_f64_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p8_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <16 x i8>
+-// CHECK-NEXT:    ret <16 x i8> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <16 x i8> @test_vreinterpretq_p8_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <16 x i8>
++// CHECK:   ret <16 x i8> [[TMP0]]
+ poly8x16_t test_vreinterpretq_p8_p128(poly128_t  a) {
+   return vreinterpretq_p8_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p16_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <8 x i16>
+-// CHECK-NEXT:    ret <8 x i16> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <8 x i16> @test_vreinterpretq_p16_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <8 x i16>
++// CHECK:   ret <8 x i16> [[TMP0]]
+ poly16x8_t test_vreinterpretq_p16_p128(poly128_t  a) {
+   return vreinterpretq_p16_p128(a);
+ }
+ 
+-// CHECK-LABEL: @test_vreinterpretq_p64_p128(
+-// CHECK-NEXT:  entry:
+-// CHECK-NEXT:    [[TMP0:%.*]] = bitcast i128 [[A:%.*]] to <2 x i64>
+-// CHECK-NEXT:    ret <2 x i64> [[TMP0]]
+-//
++// CHECK-LABEL: define{{.*}} <2 x i64> @test_vreinterpretq_p64_p128(i128 %a) #1 {
++// CHECK:   [[TMP0:%.*]] = bitcast i128 %a to <2 x i64>
++// CHECK:   ret <2 x i64> [[TMP0]]
+ poly64x2_t test_vreinterpretq_p64_p128(poly128_t  a) {
+   return vreinterpretq_p64_p128(a);
+ }
+diff --git a/clang/test/CodeGen/aarch64-poly64.c b/clang/test/CodeGen/aarch64-poly64.c
+index 1452e8aff6c2..ebc58b5840fa 100644
+--- a/clang/test/CodeGen/aarch64-poly64.c
++++ b/clang/test/CodeGen/aarch64-poly64.c
+@@ -600,4 +600,4 @@ poly64x2_t test_vsriq_n_p64(poly64x2_t a, poly64x2_t b) {
+ 
+ // CHECK: attributes #0 ={{.*}}"min-legal-vector-width"="64"
+ // CHECK: attributes #1 ={{.*}}"min-legal-vector-width"="128"
+-// CHECK-NOT: attributes #2 ={{.*}}"min-legal-vector-width"="0"
++// CHECK: attributes #2 ={{.*}}"min-legal-vector-width"="0"
+diff --git a/clang/test/CodeGenCXX/dllexport-ctor-closure.cpp b/clang/test/CodeGenCXX/dllexport-ctor-closure.cpp
+index 882cc71e57f7..42401e5ecd5d 100644
+--- a/clang/test/CodeGenCXX/dllexport-ctor-closure.cpp
++++ b/clang/test/CodeGenCXX/dllexport-ctor-closure.cpp
+@@ -5,7 +5,7 @@
+ 
+ struct CtorWithClosure {
+   __declspec(dllexport) CtorWithClosure(...) {}
+-// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FCtorWithClosure@@QAEXXZ"({{.*}}) comdat
++// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FCtorWithClosure@@QAEXXZ"({{.*}}) {{#[0-9]+}} comdat
+ // CHECK:   %[[this_addr:.*]] = alloca %struct.CtorWithClosure*, align 4
+ // CHECK:   store %struct.CtorWithClosure* %this, %struct.CtorWithClosure** %[[this_addr]], align 4
+ // CHECK:   %[[this:.*]] = load %struct.CtorWithClosure*, %struct.CtorWithClosure** %[[this_addr]]
+@@ -17,7 +17,7 @@ struct CtorWithClosureOutOfLine {
+   __declspec(dllexport) CtorWithClosureOutOfLine(...);
+ };
+ CtorWithClosureOutOfLine::CtorWithClosureOutOfLine(...) {}
+-// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FCtorWithClosureOutOfLine@@QAEXXZ"({{.*}}) comdat
++// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FCtorWithClosureOutOfLine@@QAEXXZ"({{.*}}) {{#[0-9]+}} comdat
+ 
+ #define DELETE_IMPLICIT_MEMBERS(ClassName) \
+     ClassName(ClassName &&) = delete; \
+@@ -28,7 +28,7 @@ CtorWithClosureOutOfLine::CtorWithClosureOutOfLine(...) {}
+ struct __declspec(dllexport) ClassWithClosure {
+   DELETE_IMPLICIT_MEMBERS(ClassWithClosure);
+   ClassWithClosure(...) {}
+-// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FClassWithClosure@@QAEXXZ"({{.*}}) comdat
++// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FClassWithClosure@@QAEXXZ"({{.*}}) {{#[0-9]+}} comdat
+ // CHECK:   %[[this_addr:.*]] = alloca %struct.ClassWithClosure*, align 4
+ // CHECK:   store %struct.ClassWithClosure* %this, %struct.ClassWithClosure** %[[this_addr]], align 4
+ // CHECK:   %[[this:.*]] = load %struct.ClassWithClosure*, %struct.ClassWithClosure** %[[this_addr]]
+@@ -44,10 +44,10 @@ template struct __declspec(dllexport) TemplateWithClosure<char>;
+ extern template struct TemplateWithClosure<int>;
+ template struct __declspec(dllexport) TemplateWithClosure<int>;
+ 
+-// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_F?$TemplateWithClosure@D@@QAEXXZ"({{.*}}) comdat
++// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_F?$TemplateWithClosure@D@@QAEXXZ"({{.*}}) {{#[0-9]+}} comdat
+ // CHECK:   call {{.*}} @"??0?$TemplateWithClosure@D@@QAE@H@Z"({{.*}}, i32 1)
+ 
+-// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_F?$TemplateWithClosure@H@@QAEXXZ"({{.*}}) comdat
++// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_F?$TemplateWithClosure@H@@QAEXXZ"({{.*}}) {{#[0-9]+}} comdat
+ // CHECK:   call {{.*}} @"??0?$TemplateWithClosure@H@@QAE@H@Z"({{.*}}, i32 4)
+ 
+ template <typename T> struct __declspec(dllexport) ExportedTemplateWithClosure {
+@@ -55,7 +55,7 @@ template <typename T> struct __declspec(dllexport) ExportedTemplateWithClosure {
+ };
+ template <> ExportedTemplateWithClosure<int>::ExportedTemplateWithClosure(int); // Don't try to emit the closure for a declaration.
+ template <> ExportedTemplateWithClosure<int>::ExportedTemplateWithClosure(int) {};
+-// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_F?$ExportedTemplateWithClosure@H@@QAEXXZ"({{.*}}) comdat
++// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_F?$ExportedTemplateWithClosure@H@@QAEXXZ"({{.*}}) {{#[0-9]+}} comdat
+ // CHECK:   call {{.*}} @"??0?$ExportedTemplateWithClosure@H@@QAE@H@Z"({{.*}}, i32 4)
+ 
+ struct __declspec(dllexport) NestedOuter {
+@@ -67,8 +67,8 @@ struct __declspec(dllexport) NestedOuter {
+   };
+ };
+ 
+-// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FNestedOuter@@QAEXXZ"({{.*}}) comdat
+-// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FNestedInner@NestedOuter@@QAEXXZ"({{.*}}) comdat
++// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FNestedOuter@@QAEXXZ"({{.*}}) {{#[0-9]+}} comdat
++// CHECK-LABEL: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FNestedInner@NestedOuter@@QAEXXZ"({{.*}}) {{#[0-9]+}} comdat
+ 
+ struct HasDtor {
+   ~HasDtor();
+diff --git a/clang/test/CodeGenCXX/dllexport.cpp b/clang/test/CodeGenCXX/dllexport.cpp
+index 6c84c21c5f35..a0f53c8e2e9f 100644
+--- a/clang/test/CodeGenCXX/dllexport.cpp
++++ b/clang/test/CodeGenCXX/dllexport.cpp
+@@ -535,7 +535,7 @@ struct SomeTemplate {
+ // MSVC2013-DAG: define weak_odr dso_local dllexport {{.+}} @"??4?$SomeTemplate@H@@Q{{.+}}0@A{{.+}}0@@Z"
+ struct __declspec(dllexport) InheritFromTemplate : SomeTemplate<int> {};
+ 
+-// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"??_F?$SomeTemplate@H@@QAEXXZ"({{.*}}) comdat
++// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"??_F?$SomeTemplate@H@@QAEXXZ"({{.*}}) {{#[0-9]+}} comdat
+ 
+ namespace PR23801 {
+ template <typename>
+@@ -552,7 +552,7 @@ struct __declspec(dllexport) B {
+ 
+ }
+ //
+-// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FB@PR23801@@QAEXXZ"({{.*}}) comdat
++// M32-DAG: define weak_odr dso_local dllexport x86_thiscallcc void @"??_FB@PR23801@@QAEXXZ"({{.*}}) {{#[0-9]+}} comdat
+ 
+ struct __declspec(dllexport) T {
+   // Copy assignment operator:
diff --git a/sys-devel/llvm/files/cherry/320fd3314e378ae6242a2dde97250a8a94d68e27.patch b/sys-devel/llvm/files/cherry/320fd3314e378ae6242a2dde97250a8a94d68e27.patch
new file mode 100644
index 0000000..15f2ad5
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/320fd3314e378ae6242a2dde97250a8a94d68e27.patch
@@ -0,0 +1,194 @@
+commit 320fd3314e378ae6242a2dde97250a8a94d68e27
+Author: Kristof Beyls <kristof.beyls@arm.com>
+Date:   Thu Nov 19 13:58:26 2020 +0000
+
+    [ARM] Implement harden-sls-retbr for Thumb mode
+    
+    The only non-trivial consideration in this patch is that the formation
+    of TBB/TBH instructions, which is done in the constant island pass, does
+    not understand the speculation barriers inserted by the SLSHardening
+    pass. As such, when harden-sls-retbr is enabled for a function, the
+    formation of TBB/TBH instructions in the constant island pass is
+    disabled.
+    
+    Differential Revision: https://reviews.llvm.org/D92396
+
+diff --git a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+index 4cc85ad82d51..dd22e5dfe6e1 100644
+--- a/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
++++ b/llvm/lib/Target/ARM/ARMAsmPrinter.cpp
+@@ -2192,6 +2192,22 @@ void ARMAsmPrinter::emitInstruction(const MachineInstr *MI) {
+     EmitToStreamer(*OutStreamer, TmpInstISB);
+     return;
+   }
++  case ARM::t2SpeculationBarrierISBDSBEndBB: {
++    // Print DSB SYS + ISB
++    MCInst TmpInstDSB;
++    TmpInstDSB.setOpcode(ARM::t2DSB);
++    TmpInstDSB.addOperand(MCOperand::createImm(0xf));
++    TmpInstDSB.addOperand(MCOperand::createImm(ARMCC::AL));
++    TmpInstDSB.addOperand(MCOperand::createReg(0));
++    EmitToStreamer(*OutStreamer, TmpInstDSB);
++    MCInst TmpInstISB;
++    TmpInstISB.setOpcode(ARM::t2ISB);
++    TmpInstISB.addOperand(MCOperand::createImm(0xf));
++    TmpInstISB.addOperand(MCOperand::createImm(ARMCC::AL));
++    TmpInstISB.addOperand(MCOperand::createReg(0));
++    EmitToStreamer(*OutStreamer, TmpInstISB);
++    return;
++  }
+   case ARM::SpeculationBarrierSBEndBB: {
+     // Print SB
+     MCInst TmpInstSB;
+@@ -2199,6 +2215,13 @@ void ARMAsmPrinter::emitInstruction(const MachineInstr *MI) {
+     EmitToStreamer(*OutStreamer, TmpInstSB);
+     return;
+   }
++  case ARM::t2SpeculationBarrierSBEndBB: {
++    // Print SB
++    MCInst TmpInstSB;
++    TmpInstSB.setOpcode(ARM::t2SB);
++    EmitToStreamer(*OutStreamer, TmpInstSB);
++    return;
++  }
+   }
+ 
+   MCInst TmpInst;
+diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+index 7068da5eb004..1435bba776a3 100644
+--- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
++++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+@@ -775,9 +775,11 @@ unsigned ARMBaseInstrInfo::getInstSizeInBytes(const MachineInstr &MI) const {
+     return Size;
+   }
+   case ARM::SpeculationBarrierISBDSBEndBB:
++  case ARM::t2SpeculationBarrierISBDSBEndBB:
+     // This gets lowered to 2 4-byte instructions.
+     return 8;
+   case ARM::SpeculationBarrierSBEndBB:
++  case ARM::t2SpeculationBarrierSBEndBB:
+     // This gets lowered to 1 4-byte instructions.
+     return 4;
+   }
+diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.h b/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
+index 51a4b44eae1d..e4e71e4925b9 100644
+--- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
++++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
+@@ -643,7 +643,9 @@ static inline bool isIndirectControlFlowNotComingBack(const MachineInstr &MI) {
+ 
+ static inline bool isSpeculationBarrierEndBBOpcode(int Opc) {
+   return Opc == ARM::SpeculationBarrierISBDSBEndBB ||
+-         Opc == ARM::SpeculationBarrierSBEndBB;
++         Opc == ARM::SpeculationBarrierSBEndBB ||
++         Opc == ARM::t2SpeculationBarrierISBDSBEndBB ||
++         Opc == ARM::t2SpeculationBarrierSBEndBB;
+ }
+ 
+ static inline bool isPopOpcode(int Opc) {
+diff --git a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
+index 77839710e03e..da7bf6170255 100644
+--- a/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
++++ b/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp
+@@ -359,6 +359,10 @@ bool ARMConstantIslands::runOnMachineFunction(MachineFunction &mf) {
+   isThumb2 = AFI->isThumb2Function();
+ 
+   bool GenerateTBB = isThumb2 || (isThumb1 && SynthesizeThumb1TBB);
++  // TBB generation code in this constant island pass has not been adapted to
++  // deal with speculation barriers.
++  if (STI->hardenSlsRetBr())
++    GenerateTBB = false;
+ 
+   // Renumber all of the machine basic blocks in the function, guaranteeing that
+   // the numbers agree with the position of the block in the function.
+diff --git a/llvm/lib/Target/ARM/ARMInstrThumb2.td b/llvm/lib/Target/ARM/ARMInstrThumb2.td
+index 52da88dab632..f83807d27f88 100644
+--- a/llvm/lib/Target/ARM/ARMInstrThumb2.td
++++ b/llvm/lib/Target/ARM/ARMInstrThumb2.td
+@@ -4935,6 +4935,15 @@ def : InstAlias<"pssbb", (t2DSB 0x4, 14, 0), 1>, Requires<[HasDB, IsThumb2]>;
+ // Armv8-R 'Data Full Barrier'
+ def : InstAlias<"dfb${p}", (t2DSB 0xc, pred:$p), 1>, Requires<[HasDFB]>;
+ 
++// SpeculationBarrierEndBB must only be used after an unconditional control
++// flow, i.e. after a terminator for which isBarrier is True.
++let hasSideEffects = 1, isCodeGenOnly = 1, isTerminator = 1, isBarrier = 1 in {
++  def t2SpeculationBarrierISBDSBEndBB
++      : PseudoInst<(outs), (ins), NoItinerary, []>, Sched<[]>;
++  def t2SpeculationBarrierSBEndBB
++      : PseudoInst<(outs), (ins), NoItinerary, []>, Sched<[]>;
++}
++
+ // Alias for LDR, LDRB, LDRH, LDRSB, and LDRSH without the ".w" optional
+ // width specifier.
+ def : t2InstAlias<"ldr${p} $Rt, $addr",
+diff --git a/llvm/lib/Target/ARM/ARMSLSHardening.cpp b/llvm/lib/Target/ARM/ARMSLSHardening.cpp
+index b3c697893ed9..3f6fa8a47d6a 100644
+--- a/llvm/lib/Target/ARM/ARMSLSHardening.cpp
++++ b/llvm/lib/Target/ARM/ARMSLSHardening.cpp
+@@ -75,9 +75,13 @@ static void insertSpeculationBarrier(const ARMSubtarget *ST,
+   assert(std::prev(MBBI)->isTerminator() &&
+          "SpeculationBarrierEndBB must only follow terminators.");
+   const TargetInstrInfo *TII = ST->getInstrInfo();
+-  unsigned BarrierOpc = ST->hasSB() && !AlwaysUseISBDSB
+-                            ? ARM::SpeculationBarrierSBEndBB
+-                            : ARM::SpeculationBarrierISBDSBEndBB;
++  assert(ST->hasDataBarrier() || ST->hasSB());
++  bool ProduceSB = ST->hasSB() && !AlwaysUseISBDSB;
++  unsigned BarrierOpc =
++      ProduceSB ? (ST->isThumb() ? ARM::t2SpeculationBarrierSBEndBB
++                                 : ARM::SpeculationBarrierSBEndBB)
++                : (ST->isThumb() ? ARM::t2SpeculationBarrierISBDSBEndBB
++                                 : ARM::SpeculationBarrierISBDSBEndBB);
+   if (MBBI == MBB.end() || !isSpeculationBarrierEndBBOpcode(MBBI->getOpcode()))
+     BuildMI(MBB, MBBI, DL, TII->get(BarrierOpc));
+ }
+@@ -96,6 +100,7 @@ bool ARMSLSHardening::runOnMachineFunction(MachineFunction &MF) {
+ bool ARMSLSHardening::hardenReturnsAndBRs(MachineBasicBlock &MBB) const {
+   if (!ST->hardenSlsRetBr())
+     return false;
++  assert(!ST->isThumb1Only());
+   bool Modified = false;
+   MachineBasicBlock::iterator MBBI = MBB.getFirstTerminator(), E = MBB.end();
+   MachineBasicBlock::iterator NextMBBI;
+diff --git a/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll b/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
+index 9a2335988790..14b17e62c930 100644
+--- a/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
++++ b/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
+@@ -1,8 +1,13 @@
+ ; RUN: llc -mattr=harden-sls-retbr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB,ISBDSBDAGISEL -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,ISBDSB,ISBDSBDAGISEL -dump-input-context=100
+ ; RUN: llc -mattr=harden-sls-retbr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB,SBDAGISEL -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,SB,SBDAGISEL -dump-input-context=100
+ ; RUN: llc -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,NOHARDEN,NOHARDENARM -dump-input-context=100
++; RUN: llc -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,NOHARDEN,NOHARDENTHUMB
+ ; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,ISBDSB
+ ; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,SB
+ 
+ ; Function Attrs: norecurse nounwind readnone
+ define dso_local i32 @double_return(i32 %a, i32 %b) local_unnamed_addr {
+@@ -18,6 +23,7 @@ if.then:                                          ; preds = %entry
+ ; CHECK-LABEL: double_return:
+ ; HARDEN:          {{bx lr$}}
+ ; NOHARDENARM:     {{bxge lr$}}
++; NOHARDENTHUMB:   {{bx lr$}}
+ ; ISBDSB-NEXT: dsb sy
+ ; ISBDSB-NEXT: isb
+ ; SB-NEXT:     {{ sb$}}
+@@ -46,6 +52,7 @@ entry:
+   %0 = load i8*, i8** %arrayidx, align 8
+   indirectbr i8* %0, [label %return, label %l2]
+ ; ARM:       bx r0
++; THUMB:     mov pc, r0
+ ; ISBDSB-NEXT: dsb sy
+ ; ISBDSB-NEXT: isb
+ ; SB-NEXT:     {{ sb$}}
+@@ -108,6 +115,8 @@ entry:
+     i32 4, label %sw.bb5
+   ]
+ ; ARM:             ldr pc, [{{r[0-9]}}, {{r[0-9]}}, lsl #2]
++; NOHARDENTHUMB:   tbb [pc, {{r[0-9]}}]
++; HARDENTHUMB:     mov pc, {{r[0-9]}}
+ ; ISBDSB-NEXT:     dsb sy
+ ; ISBDSB-NEXT:     isb
+ ; SB-NEXT:         {{ sb$}}
diff --git a/sys-devel/llvm/files/cherry/455d43b951ae31dac133a8650532797f01343a36.patch b/sys-devel/llvm/files/cherry/455d43b951ae31dac133a8650532797f01343a36.patch
new file mode 100644
index 0000000..fc92272
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/455d43b951ae31dac133a8650532797f01343a36.patch
@@ -0,0 +1,63 @@
+commit 455d43b951ae31dac133a8650532797f01343a36
+Author: Simon Pilgrim <llvm-dev@redking.me.uk>
+Date:   Fri Feb 26 14:55:02 2021 +0000
+
+    [Utils] collectBitParts - bail for integers > 128-bits
+    
+    collectBitParts uses int8_t for the bit indices, leaving a 128-bit limit.
+    
+    We already test for this before calling collectBitParts, but rGb94c215592bd added truncate handling which meant we could end up processing wider integers.
+    
+    Thanks to @manojgupta for the repro.
+
+diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
+index 23cd5e47e6f8..915e5d7eba69 100644
+--- a/llvm/lib/Transforms/Utils/Local.cpp
++++ b/llvm/lib/Transforms/Utils/Local.cpp
+@@ -2851,6 +2851,10 @@ collectBitParts(Value *V, bool MatchBSwaps, bool MatchBitReversals,
+   auto &Result = BPS[V] = None;
+   auto BitWidth = V->getType()->getScalarSizeInBits();
+ 
++  // Can't do integer/elements > 128 bits.
++  if (BitWidth > 128)
++    return Result;
++
+   // Prevent stack overflow by limiting the recursion depth
+   if (Depth == BitPartRecursionMaxDepth) {
+     LLVM_DEBUG(dbgs() << "collectBitParts max recursion depth reached.\n");
+diff --git a/llvm/test/Transforms/InstCombine/bswap.ll b/llvm/test/Transforms/InstCombine/bswap.ll
+index 8d0adcf15eec..32caf4a89d60 100644
+--- a/llvm/test/Transforms/InstCombine/bswap.ll
++++ b/llvm/test/Transforms/InstCombine/bswap.ll
+@@ -736,6 +736,31 @@ define i32 @funnel_and(i32 %abcd) {
+   ret i32 %dcba
+ }
+ 
++; Don't attempt to collectBitParts from >128 bit integers
++define i16 @trunc_bswap_i160(i160* %a0) {
++; CHECK-LABEL: @trunc_bswap_i160(
++; CHECK-NEXT:    [[LOAD:%.*]] = load i160, i160* [[A0:%.*]], align 4
++; CHECK-NEXT:    [[LSHR1:%.*]] = lshr i160 [[LOAD]], 136
++; CHECK-NEXT:    [[CAST1:%.*]] = trunc i160 [[LSHR1]] to i16
++; CHECK-NEXT:    [[AND1:%.*]] = and i16 [[CAST1]], 255
++; CHECK-NEXT:    [[TMP1:%.*]] = lshr i160 [[LOAD]], 120
++; CHECK-NEXT:    [[TMP2:%.*]] = trunc i160 [[TMP1]] to i16
++; CHECK-NEXT:    [[SHL:%.*]] = and i16 [[TMP2]], -256
++; CHECK-NEXT:    [[OR:%.*]] = or i16 [[AND1]], [[SHL]]
++; CHECK-NEXT:    ret i16 [[OR]]
++;
++  %load = load i160, i160* %a0, align 4
++  %lshr0 = lshr i160 %load, 128
++  %lshr1 = lshr i160 %load, 136
++  %cast0 = trunc i160 %lshr0 to i16
++  %cast1 = trunc i160 %lshr1 to i16
++  %and0 = and i16 %cast0, 255
++  %and1 = and i16 %cast1, 255
++  %shl = shl i16 %and0, 8
++  %or = or i16 %and1, %shl
++  ret i16 %or
++}
++
+ ; PR47191 - deep IR trees prevent ADD/XOR instructions being simplified to OR.
+ 
+ define i64 @PR47191_problem1(i64 %0) {
diff --git a/sys-devel/llvm/files/cherry/4622648a069a988d3b7b3ecd3f1b6993518d85b5.patch b/sys-devel/llvm/files/cherry/4622648a069a988d3b7b3ecd3f1b6993518d85b5.patch
new file mode 100644
index 0000000..824e758
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/4622648a069a988d3b7b3ecd3f1b6993518d85b5.patch
@@ -0,0 +1,104 @@
+commit 4622648a069a988d3b7b3ecd3f1b6993518d85b5
+Author: Nikita Popov <nikita.ppv@gmail.com>
+Date:   Fri Mar 26 21:32:32 2021 +0100
+
+    Revert "[ArgPromotion] Copy additional metadata for loads."
+    
+    This reverts commit 166620a4f01f10e688428caf132a147c0acc9183.
+    
+    A miscompile has been reported in https://reviews.llvm.org/D93927#2653480
+    and following.
+
+diff --git a/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp b/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp
+index 5f24d53da0b3..dd72ac413613 100644
+--- a/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp
++++ b/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp
+@@ -312,12 +312,6 @@ doPromotion(Function *F, SmallPtrSetImpl<Argument *> &ArgsToPromote,
+           AAMDNodes AAInfo;
+           OrigLoad->getAAMetadata(AAInfo);
+           newLoad->setAAMetadata(AAInfo);
+-          // And other metadata.
+-          newLoad->copyMetadata(
+-              *OrigLoad,
+-              {LLVMContext::MD_nontemporal, LLVMContext::MD_nonnull,
+-               LLVMContext::MD_dereferenceable, LLVMContext::MD_align,
+-               LLVMContext::MD_noundef, LLVMContext::MD_range});
+ 
+           Args.push_back(newLoad);
+           ArgAttrVec.push_back(AttributeSet());
+diff --git a/llvm/test/Transforms/ArgumentPromotion/metadata.ll b/llvm/test/Transforms/ArgumentPromotion/metadata.ll
+deleted file mode 100644
+index c00bda735116..000000000000
+--- a/llvm/test/Transforms/ArgumentPromotion/metadata.ll
++++ /dev/null
+@@ -1,70 +0,0 @@
+-; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --function-signature --scrub-attributes
+-; RUN: opt < %s -argpromotion -S | FileCheck %s
+-
+-define i32 @should_copy_range(i32* %x) {
+-; CHECK-LABEL: define {{[^@]+}}@should_copy_range
+-; CHECK-SAME: (i32* [[X:%.*]]) {
+-; CHECK-NEXT:    [[X_VAL:%.*]] = load i32, i32* [[X]], align 4, !range !0
+-; CHECK-NEXT:    [[TMP1:%.*]] = call i32 @f_load_range(i32 [[X_VAL]])
+-; CHECK-NEXT:    ret i32 [[TMP1]]
+-;
+-  %1 = call i32 @f_load_range(i32* %x)
+-  ret i32 %1
+-}
+-
+-define internal i32 @f_load_range(i32* %v) {
+-; CHECK-LABEL: define {{[^@]+}}@f_load_range
+-; CHECK-SAME: (i32 [[V_VAL:%.*]]) {
+-; CHECK-NEXT:    ret i32 [[V_VAL]]
+-;
+-  %1 = load i32, i32* %v, align 4, !range !0
+-  ret i32 %1
+-}
+-
+-define i32* @should_copy_nonnull(i32** %x) {
+-; CHECK-LABEL: define {{[^@]+}}@should_copy_nonnull
+-; CHECK-SAME: (i32** [[X:%.*]]) {
+-; CHECK-NEXT:    [[X_VAL:%.*]] = load i32*, i32** [[X]], align 4, !nonnull !1
+-; CHECK-NEXT:    [[TMP1:%.*]] = call i32* @f_load_nonnull(i32* [[X_VAL]])
+-; CHECK-NEXT:    ret i32* [[TMP1]]
+-;
+-  %1 = call i32* @f_load_nonnull(i32** %x)
+-  ret i32* %1
+-}
+-
+-define internal i32* @f_load_nonnull(i32** %v) {
+-; CHECK-LABEL: define {{[^@]+}}@f_load_nonnull
+-; CHECK-SAME: (i32* [[V_VAL:%.*]]) {
+-; CHECK-NEXT:    ret i32* [[V_VAL]]
+-;
+-  %1 = load i32*, i32** %v, align 4, !nonnull !1
+-  ret i32* %1
+-}
+-
+-define i32* @should_copy_dereferenceable(i32** %x) {
+-; CHECK-LABEL: define {{[^@]+}}@should_copy_dereferenceable
+-; CHECK-SAME: (i32** [[X:%.*]]) {
+-; CHECK-NEXT:    [[X_VAL:%.*]] = load i32*, i32** [[X]], align 4, !dereferenceable !2
+-; CHECK-NEXT:    [[TMP1:%.*]] = call i32* @f_load_dereferenceable(i32* [[X_VAL]])
+-; CHECK-NEXT:    ret i32* [[TMP1]]
+-;
+-  %1 = call i32* @f_load_dereferenceable(i32** %x)
+-  ret i32* %1
+-}
+-
+-define internal i32* @f_load_dereferenceable(i32** %v) {
+-; CHECK-LABEL: define {{[^@]+}}@f_load_dereferenceable
+-; CHECK-SAME: (i32* [[V_VAL:%.*]]) {
+-; CHECK-NEXT:    ret i32* [[V_VAL]]
+-;
+-  %1 = load i32*, i32** %v, align 4, !dereferenceable !2
+-  ret i32* %1
+-}
+-
+-; CHECK:      !0 = !{i32 0, i32 4}
+-; CHECK-NEXT: !1 = !{}
+-; CHECK-NEXT: !2 = !{i64 42}
+-;
+-!0 = !{i32 0, i32 4}
+-!1 = !{}
+-!2 = !{i64 42}
diff --git a/sys-devel/llvm/files/cherry/493f1407927cdf6db2e08f150ed9f9b8abe4ac45.patch b/sys-devel/llvm/files/cherry/493f1407927cdf6db2e08f150ed9f9b8abe4ac45.patch
new file mode 100644
index 0000000..04c6d48
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/493f1407927cdf6db2e08f150ed9f9b8abe4ac45.patch
@@ -0,0 +1,502 @@
+commit 493f1407927cdf6db2e08f150ed9f9b8abe4ac45
+Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
+Date:   Sun Dec 20 15:21:42 2020 -0500
+
+    [libc++] [P0879] constexpr std::sort
+    
+    This completes libc++'s implementation of
+    P0879 "Constexpr for swap and swap related functions."
+    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0879r0.html
+    
+    For the feature-macro adjustment, see
+    https://cplusplus.github.io/LWG/issue3256
+    
+    Differential Revision: https://reviews.llvm.org/D93661
+
+diff --git a/libcxx/docs/Cxx2aStatusIssuesStatus.csv b/libcxx/docs/Cxx2aStatusIssuesStatus.csv
+index 859c52ae2b21..d2adde69d9d2 100644
+--- a/libcxx/docs/Cxx2aStatusIssuesStatus.csv
++++ b/libcxx/docs/Cxx2aStatusIssuesStatus.csv
+@@ -176,7 +176,7 @@
+ "`3244 <https://wg21.link/LWG3244>`__","Constraints for ``Source``\  in |sect|\ [fs.path.req] insufficiently constrainty","Belfast","",""
+ "`3241 <https://wg21.link/LWG3241>`__","``chrono-spec``\  grammar ambiguity in |sect|\ [time.format]","Belfast","",""
+ "`3257 <https://wg21.link/LWG3257>`__","Missing feature testing macro update from P0858","Belfast","",""
+-"`3256 <https://wg21.link/LWG3256>`__","Feature testing macro for ``constexpr``\  algorithms","Belfast","",""
++"`3256 <https://wg21.link/LWG3256>`__","Feature testing macro for ``constexpr``\  algorithms","Belfast","|Complete|","13.0"
+ "`3273 <https://wg21.link/LWG3273>`__","Specify ``weekday_indexed``\  to range of ``[0, 7]``\ ","Belfast","",""
+ "`3070 <https://wg21.link/LWG3070>`__","``path::lexically_relative``\  causes surprising results if a filename can also be a  *root-name*","Belfast","",""
+ "`3266 <https://wg21.link/LWG3266>`__","``to_chars(bool)``\  should be deleted","Belfast","",""
+diff --git a/libcxx/docs/Cxx2aStatusPaperStatus.csv b/libcxx/docs/Cxx2aStatusPaperStatus.csv
+index b3b60d2ca730..d3819a83fa43 100644
+--- a/libcxx/docs/Cxx2aStatusPaperStatus.csv
++++ b/libcxx/docs/Cxx2aStatusPaperStatus.csv
+@@ -40,7 +40,7 @@
+ "`P0759R1 <https://wg21.link/P0759R1>`__","LWG","fpos Requirements","Rapperswil","|Complete|","11.0"
+ "`P0769R2 <https://wg21.link/P0769R2>`__","LWG","Add shift to <algorithm>","Rapperswil","|Complete|","12.0"
+ "`P0788R3 <https://wg21.link/P0788R3>`__","LWG","Standard Library Specification in a Concepts and Contracts World","Rapperswil","*Removed in Cologne*","n/a"
+-"`P0879R0 <https://wg21.link/P0879R0>`__","LWG","Constexpr for swap and swap related functions Also resolves LWG issue 2800.","Rapperswil","",""
++"`P0879R0 <https://wg21.link/P0879R0>`__","LWG","Constexpr for swap and swap related functions Also resolves LWG issue 2800.","Rapperswil","|Complete|","13.0"
+ "`P0887R1 <https://wg21.link/P0887R1>`__","LWG","The identity metafunction","Rapperswil","|Complete|","8.0"
+ "`P0892R2 <https://wg21.link/P0892R2>`__","CWG","explicit(bool)","Rapperswil","",""
+ "`P0898R3 <https://wg21.link/P0898R3>`__","LWG","Standard Library Concepts","Rapperswil","|In Progress|",""
+diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
+index 5fe7005c19c2..7028ff0d83f1 100644
+--- a/libcxx/docs/FeatureTestMacroTable.rst
++++ b/libcxx/docs/FeatureTestMacroTable.rst
+@@ -200,7 +200,7 @@ Status
+     ------------------------------------------------- -----------------
+     ``__cpp_lib_concepts``                            *unimplemented*
+     ------------------------------------------------- -----------------
+-    ``__cpp_lib_constexpr_algorithms``                *unimplemented*
++    ``__cpp_lib_constexpr_algorithms``                ``201806L``
+     ------------------------------------------------- -----------------
+     ``__cpp_lib_constexpr_complex``                   *unimplemented*
+     ------------------------------------------------- -----------------
+diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm
+index d8fbac731b19..7220585d15a3 100644
+--- a/libcxx/include/algorithm
++++ b/libcxx/include/algorithm
+@@ -351,11 +351,11 @@ template <class ForwardIterator, class Compare>
+     is_sorted_until(ForwardIterator first, ForwardIterator last, Compare comp);
+ 
+ template <class RandomAccessIterator>
+-    void
++    constexpr void               // constexpr in C++20
+     sort(RandomAccessIterator first, RandomAccessIterator last);
+ 
+ template <class RandomAccessIterator, class Compare>
+-    void
++    constexpr void               // constexpr in C++20
+     sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);
+ 
+ template <class RandomAccessIterator>
+@@ -4047,7 +4047,6 @@ template <class _Compare, class _RandomAccessIterator>
+ void
+ __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
+ {
+-    // _Compare is known to be a reference type
+     typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
+     typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
+     const difference_type __limit = is_trivially_copy_constructible<value_type>::value &&
+@@ -4236,47 +4235,13 @@ __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __c
+     }
+ }
+ 
+-// This forwarder keeps the top call and the recursive calls using the same instantiation, forcing a reference _Compare
+-template <class _RandomAccessIterator, class _Compare>
+-inline _LIBCPP_INLINE_VISIBILITY
+-void
+-sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
+-{
+-    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
+-    _VSTD::__sort<_Comp_ref>(__first, __last, _Comp_ref(__comp));
+-}
+-
+-template <class _RandomAccessIterator>
+-inline _LIBCPP_INLINE_VISIBILITY
+-void
+-sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
+-{
+-    _VSTD::sort(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
+-}
+-
+-template <class _Tp>
+-inline _LIBCPP_INLINE_VISIBILITY
+-void
+-sort(_Tp** __first, _Tp** __last)
+-{
+-    _VSTD::sort((uintptr_t*)__first, (uintptr_t*)__last, __less<uintptr_t>());
+-}
+-
+-template <class _Tp>
+-inline _LIBCPP_INLINE_VISIBILITY
+-void
+-sort(__wrap_iter<_Tp*> __first, __wrap_iter<_Tp*> __last)
+-{
+-    _VSTD::sort(__first.base(), __last.base());
+-}
+-
+-template <class _Tp, class _Compare>
++template <class _Compare, class _Tp>
+ inline _LIBCPP_INLINE_VISIBILITY
+ void
+-sort(__wrap_iter<_Tp*> __first, __wrap_iter<_Tp*> __last, _Compare __comp)
++__sort(_Tp** __first, _Tp** __last, __less<_Tp*>&)
+ {
+-    typedef typename add_lvalue_reference<_Compare>::type _Comp_ref;
+-    _VSTD::sort<_Tp*, _Comp_ref>(__first.base(), __last.base(), __comp);
++    __less<uintptr_t> __comp;
++    _VSTD::__sort<__less<uintptr_t>&, uintptr_t*>((uintptr_t*)__first, (uintptr_t*)__last, __comp);
+ }
+ 
+ _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<char>&, char*>(char*, char*, __less<char>&))
+@@ -5478,6 +5443,29 @@ nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomA
+     _VSTD::nth_element(__first, __nth, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
+ }
+ 
++// sort
++
++template <class _RandomAccessIterator, class _Compare>
++inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
++void
++sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
++{
++    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
++    if (__libcpp_is_constant_evaluated()) {
++        _VSTD::__partial_sort<_Comp_ref>(__first, __last, __last, _Comp_ref(__comp));
++    } else {
++        _VSTD::__sort<_Comp_ref>(_VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _Comp_ref(__comp));
++    }
++}
++
++template <class _RandomAccessIterator>
++inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
++void
++sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
++{
++    _VSTD::sort(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
++}
++
+ // includes
+ 
+ template <class _Compare, class _InputIterator1, class _InputIterator2>
+diff --git a/libcxx/include/version b/libcxx/include/version
+index 77183e54fcfd..9b37c30d2acd 100644
+--- a/libcxx/include/version
++++ b/libcxx/include/version
+@@ -294,7 +294,7 @@ __cpp_lib_void_t                                        201411L <type_traits>
+ #   define __cpp_lib_char8_t                            201811L
+ # endif
+ // # define __cpp_lib_concepts                             202002L
+-// # define __cpp_lib_constexpr_algorithms                 201806L
++# define __cpp_lib_constexpr_algorithms                 201806L
+ // # define __cpp_lib_constexpr_complex                    201711L
+ # define __cpp_lib_constexpr_dynamic_alloc              201907L
+ # define __cpp_lib_constexpr_functional                 201907L
+diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp
+new file mode 100644
+index 000000000000..41ea82cc4845
+--- /dev/null
++++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp
+@@ -0,0 +1,101 @@
++//===----------------------------------------------------------------------===//
++//
++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
++// See https://llvm.org/LICENSE.txt for license information.
++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
++//
++//===----------------------------------------------------------------------===//
++
++// <algorithm>
++
++// template<RandomAccessIterator Iter>
++//   requires ShuffleIterator<Iter>
++//         && LessThanComparable<Iter::value_type>
++//   void
++//   sort(Iter first, Iter last);
++
++#include <algorithm>
++#include <cassert>
++
++#include "test_macros.h"
++#include "test_iterators.h"
++#include "MoveOnly.h"
++
++template<int N, class T, class Iter>
++TEST_CONSTEXPR_CXX20 bool test()
++{
++    int orig[N] = {};
++    unsigned x = 1;
++    for (int i=0; i < N; ++i) {
++        x = (x * 1664525) + 1013904223;
++        orig[i] = x % 1000;
++    }
++    T work[N] = {};
++    std::copy(orig, orig+N, work);
++    std::sort(Iter(work), Iter(work+N));
++    assert(std::is_sorted(work, work+N));
++    assert(std::is_permutation(work, work+N, orig));
++
++    return true;
++}
++
++template<int N, class T, class Iter>
++TEST_CONSTEXPR_CXX20 bool test_pointers()
++{
++    T data[N] = {};
++    T *orig[N] = {};
++    unsigned x = 1;
++    for (int i=0; i < N; ++i) {
++        orig[i] = &data[x % 258];
++    }
++    T *work[N] = {};
++    std::copy(orig, orig+N, work);
++    std::sort(Iter(work), Iter(work+N));
++    assert(std::is_sorted(work, work+N));
++    assert(std::is_permutation(work, work+N, orig));
++
++    return true;
++}
++
++int main(int, char**)
++{
++    test<7, int, int*>();
++    test<7, int, random_access_iterator<int*> >();
++    test<257, int, int*>();
++    test<257, int, random_access_iterator<int*> >();
++
++#if TEST_STD_VER >= 11
++    test<7, MoveOnly, MoveOnly*>();
++    test<7, MoveOnly, random_access_iterator<MoveOnly*> >();
++    test<257, MoveOnly, MoveOnly*>();
++    test<257, MoveOnly, random_access_iterator<MoveOnly*> >();
++#endif
++
++    test_pointers<17, char, char**>();
++    test_pointers<17, char, random_access_iterator<char**> >();
++    test_pointers<17, const char, const char**>();
++    test_pointers<17, const char, random_access_iterator<const char**> >();
++    test_pointers<17, int, int**>();
++    test_pointers<17, int, random_access_iterator<int**> >();
++
++#if TEST_STD_VER >= 20
++    static_assert(test<7, int, int*>());
++    static_assert(test<7, int, random_access_iterator<int*>>());
++    static_assert(test<257, int, int*>());
++    static_assert(test<257, int, random_access_iterator<int*>>());
++
++    static_assert(test<7, MoveOnly, MoveOnly*>());
++    static_assert(test<7, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<257, MoveOnly, MoveOnly*>());
++    static_assert(test<257, MoveOnly, random_access_iterator<MoveOnly*>>());
++
++    static_assert(test_pointers<17, char, char**>());
++    static_assert(test_pointers<17, char, random_access_iterator<char**>>());
++    static_assert(test_pointers<17, const char, const char**>());
++    static_assert(test_pointers<17, const char, random_access_iterator<const char**>>());
++    static_assert(test_pointers<17, int, int**>());
++    static_assert(test_pointers<17, int, random_access_iterator<int**>>());
++#endif
++
++    return 0;
++}
+diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp
+new file mode 100644
+index 000000000000..48f057ab8a7f
+--- /dev/null
++++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp
+@@ -0,0 +1,102 @@
++//===----------------------------------------------------------------------===//
++//
++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
++// See https://llvm.org/LICENSE.txt for license information.
++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
++//
++//===----------------------------------------------------------------------===//
++
++// <algorithm>
++
++// template<RandomAccessIterator Iter, StrictWeakOrder<auto, Iter::value_type> Compare>
++//   requires ShuffleIterator<Iter>
++//         && CopyConstructible<Compare>
++//   void
++//   sort(Iter first, Iter last, Compare comp);
++
++#include <algorithm>
++#include <cassert>
++#include <functional>
++
++#include "test_macros.h"
++#include "test_iterators.h"
++#include "MoveOnly.h"
++
++template<int N, class T, class Iter>
++TEST_CONSTEXPR_CXX20 bool test()
++{
++    int orig[N] = {};
++    unsigned x = 1;
++    for (int i=0; i < N; ++i) {
++        x = (x * 1664525) + 1013904223;
++        orig[i] = x % 1000;
++    }
++    T work[N] = {};
++    std::copy(orig, orig+N, work);
++    std::sort(Iter(work), Iter(work+N), std::greater<T>());
++    assert(std::is_sorted(work, work+N, std::greater<T>()));
++    assert(std::is_permutation(work, work+N, orig));
++
++    return true;
++}
++
++template<int N, class T, class Iter>
++TEST_CONSTEXPR_CXX20 bool test_pointers()
++{
++    T data[N] = {};
++    T *orig[N] = {};
++    unsigned x = 1;
++    for (int i=0; i < N; ++i) {
++        orig[i] = &data[x % 258];
++    }
++    T *work[N] = {};
++    std::copy(orig, orig+N, work);
++    std::sort(Iter(work), Iter(work+N), std::greater<T*>());
++    assert(std::is_sorted(work, work+N, std::greater<T*>()));
++    assert(std::is_permutation(work, work+N, orig));
++
++    return true;
++}
++
++int main(int, char**)
++{
++    test<7, int, int*>();
++    test<7, int, random_access_iterator<int*> >();
++    test<257, int, int*>();
++    test<257, int, random_access_iterator<int*> >();
++
++#if TEST_STD_VER >= 11
++    test<7, MoveOnly, MoveOnly*>();
++    test<7, MoveOnly, random_access_iterator<MoveOnly*> >();
++    test<257, MoveOnly, MoveOnly*>();
++    test<257, MoveOnly, random_access_iterator<MoveOnly*> >();
++#endif
++
++    test_pointers<17, char, char**>();
++    test_pointers<17, char, random_access_iterator<char**> >();
++    test_pointers<17, const char, const char**>();
++    test_pointers<17, const char, random_access_iterator<const char**> >();
++    test_pointers<17, int, int**>();
++    test_pointers<17, int, random_access_iterator<int**> >();
++
++#if TEST_STD_VER >= 20
++    static_assert(test<7, int, int*>());
++    static_assert(test<7, int, random_access_iterator<int*>>());
++    static_assert(test<257, int, int*>());
++    static_assert(test<257, int, random_access_iterator<int*>>());
++
++    static_assert(test<7, MoveOnly, MoveOnly*>());
++    static_assert(test<7, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<257, MoveOnly, MoveOnly*>());
++    static_assert(test<257, MoveOnly, random_access_iterator<MoveOnly*>>());
++
++    static_assert(test_pointers<17, char, char**>());
++    static_assert(test_pointers<17, char, random_access_iterator<char**>>());
++    static_assert(test_pointers<17, const char, const char**>());
++    static_assert(test_pointers<17, const char, random_access_iterator<const char**>>());
++    static_assert(test_pointers<17, int, int**>());
++    static_assert(test_pointers<17, int, random_access_iterator<int**>>());
++#endif
++
++    return 0;
++}
+diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp
+index e081ca79f6f0..eb7591540eac 100644
+--- a/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp
++++ b/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp
+@@ -148,17 +148,11 @@
+ #   error "__cpp_lib_clamp should have the value 201603L in c++20"
+ # endif
+ 
+-# if !defined(_LIBCPP_VERSION)
+-#   ifndef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should be defined in c++20"
+-#   endif
+-#   if __cpp_lib_constexpr_algorithms != 201806L
+-#     error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
+-#   endif
+-# else // _LIBCPP_VERSION
+-#   ifdef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should not be defined because it is unimplemented in libc++!"
+-#   endif
++# ifndef __cpp_lib_constexpr_algorithms
++#   error "__cpp_lib_constexpr_algorithms should be defined in c++20"
++# endif
++# if __cpp_lib_constexpr_algorithms != 201806L
++#   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
+ # endif
+ 
+ # if !defined(_LIBCPP_VERSION)
+@@ -217,17 +211,11 @@
+ #   error "__cpp_lib_clamp should have the value 201603L in c++2b"
+ # endif
+ 
+-# if !defined(_LIBCPP_VERSION)
+-#   ifndef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should be defined in c++2b"
+-#   endif
+-#   if __cpp_lib_constexpr_algorithms != 201806L
+-#     error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++2b"
+-#   endif
+-# else // _LIBCPP_VERSION
+-#   ifdef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should not be defined because it is unimplemented in libc++!"
+-#   endif
++# ifndef __cpp_lib_constexpr_algorithms
++#   error "__cpp_lib_constexpr_algorithms should be defined in c++2b"
++# endif
++# if __cpp_lib_constexpr_algorithms != 201806L
++#   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++2b"
+ # endif
+ 
+ # if !defined(_LIBCPP_VERSION)
+diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
+index 2fe0dfc264f7..1bb4928bd552 100644
+--- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
++++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
+@@ -2389,17 +2389,11 @@
+ #   endif
+ # endif
+ 
+-# if !defined(_LIBCPP_VERSION)
+-#   ifndef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should be defined in c++20"
+-#   endif
+-#   if __cpp_lib_constexpr_algorithms != 201806L
+-#     error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
+-#   endif
+-# else // _LIBCPP_VERSION
+-#   ifdef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should not be defined because it is unimplemented in libc++!"
+-#   endif
++# ifndef __cpp_lib_constexpr_algorithms
++#   error "__cpp_lib_constexpr_algorithms should be defined in c++20"
++# endif
++# if __cpp_lib_constexpr_algorithms != 201806L
++#   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
+ # endif
+ 
+ # if !defined(_LIBCPP_VERSION)
+@@ -3608,17 +3602,11 @@
+ #   endif
+ # endif
+ 
+-# if !defined(_LIBCPP_VERSION)
+-#   ifndef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should be defined in c++2b"
+-#   endif
+-#   if __cpp_lib_constexpr_algorithms != 201806L
+-#     error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++2b"
+-#   endif
+-# else // _LIBCPP_VERSION
+-#   ifdef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should not be defined because it is unimplemented in libc++!"
+-#   endif
++# ifndef __cpp_lib_constexpr_algorithms
++#   error "__cpp_lib_constexpr_algorithms should be defined in c++2b"
++# endif
++# if __cpp_lib_constexpr_algorithms != 201806L
++#   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++2b"
+ # endif
+ 
+ # if !defined(_LIBCPP_VERSION)
+diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
+index 6abc13208538..5537d9b9f1cc 100755
+--- a/libcxx/utils/generate_feature_test_macro_components.py
++++ b/libcxx/utils/generate_feature_test_macro_components.py
+@@ -182,7 +182,6 @@ feature_test_macros = [ add_version_header(x) for x in [
+     "name": "__cpp_lib_constexpr_algorithms",
+     "values": { "c++20": 201806 },
+     "headers": ["algorithm"],
+-    "unimplemented": True,
+   }, {
+     "name": "__cpp_lib_constexpr_complex",
+     "values": { "c++20": 201711 },
diff --git a/sys-devel/llvm/files/cherry/53b34601abf1d48e8df210ab8127b16fd35e275a.patch b/sys-devel/llvm/files/cherry/53b34601abf1d48e8df210ab8127b16fd35e275a.patch
new file mode 100644
index 0000000..3325e35
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/53b34601abf1d48e8df210ab8127b16fd35e275a.patch
@@ -0,0 +1,81 @@
+commit 53b34601abf1d48e8df210ab8127b16fd35e275a
+Author: Fangrui Song <i@maskray.me>
+Date:   Wed Jan 13 21:01:53 2021 -0800
+
+    [Driver] -gsplit-dwarf: Produce .dwo regardless of -gN for -fthinlto-index=
+    
+    -g is an IR generation option while -gsplit-dwarf is an object file generation option.
+    For -gsplit-dwarf in the backend phase of a distributed ThinLTO (-fthinlto-index=) which does object file generation and no IR generation, -g should not be needed.
+    
+    This patch makes `-fthinlto-index= -gsplit-dwarf` emit .dwo even in the absence of -g.
+    This should fix https://crbug.com/1158215 after D80391.
+    
+    ```
+    // Distributed ThinLTO usage
+    clang -g -O2 -c -flto=thin -fthin-link-bitcode=a.indexing.o a.c
+    clang -g -O2 -c -flto=thin -fthin-link-bitcode=b.indexing.o b.c
+    clang -fuse-ld=lld -Wl,--thinlto-index-only=a.rsp -Wl,--thinlto-prefix-replace=';lto/' -Wl,--thinlto-object-suffix-replace='.indexing.o;.o' a.indexing.o b.indexing.o
+    clang -gsplit-dwarf -O2 -c -fthinlto-index=lto/a.o.thinlto.bc a.o -o lto/a.o
+    clang -gsplit-dwarf -O2 -c -fthinlto-index=lto/b.o.thinlto.bc b.o -o lto/b.o
+    clang -fuse-ld=lld @a.rsp -o exe
+    ```
+    
+    Note: for implicit regular/Thin LTO, .dwo emission works without this patch:
+    `clang -flto=thin -gsplit-dwarf a.o b.o` passes `-plugin-opt=dwo_dir=` to the linker.
+    The linker forwards the option to LTO. LTOBackend.cpp emits `$dwo_dir/[01234].dwo`.
+    
+    Reviewed By: dblaikie
+    
+    Differential Revision: https://reviews.llvm.org/D94647
+---
+ clang/lib/Driver/ToolChains/Clang.cpp | 10 ++++++++--
+ clang/test/Driver/split-debug.c       |  8 ++++++++
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
+index d83835a0f7b8..0c821b85c229 100644
+--- a/clang/lib/Driver/ToolChains/Clang.cpp
++++ b/clang/lib/Driver/ToolChains/Clang.cpp
+@@ -3754,7 +3754,12 @@ static void RenderDebugOptions(const ToolChain &TC, const Driver &D,
+       Args.hasFlag(options::OPT_fsplit_dwarf_inlining,
+                    options::OPT_fno_split_dwarf_inlining, false);
+ 
+-  if (const Arg *A = Args.getLastArg(options::OPT_g_Group)) {
++  // Normally -gsplit-dwarf is only useful with -gN. For -gsplit-dwarf in the
++  // backend phase of a distributed ThinLTO which does object file generation
++  // and no IR generation, -gN should not be needed. So allow -gsplit-dwarf with
++  // either -gN or -fthinlto-index=.
++  if (Args.hasArg(options::OPT_g_Group) ||
++      Args.hasArg(options::OPT_fthinlto_index_EQ)) {
+     Arg *SplitDWARFArg;
+     DwarfFission = getDebugFissionKind(D, Args, SplitDWARFArg);
+     if (DwarfFission != DwarfFissionKind::None &&
+@@ -3762,7 +3767,8 @@ static void RenderDebugOptions(const ToolChain &TC, const Driver &D,
+       DwarfFission = DwarfFissionKind::None;
+       SplitDWARFInlining = false;
+     }
+-
++  }
++  if (const Arg *A = Args.getLastArg(options::OPT_g_Group)) {
+     DebugInfoKind = codegenoptions::LimitedDebugInfo;
+ 
+     // If the last option explicitly specified a debug-info level, use it.
+diff --git a/clang/test/Driver/split-debug.c b/clang/test/Driver/split-debug.c
+index de1258dcb13c..2ce4ca980c3f 100644
+--- a/clang/test/Driver/split-debug.c
++++ b/clang/test/Driver/split-debug.c
+@@ -24,6 +24,14 @@
+ /// -gsplit-dwarf is a no-op if no -g is specified.
+ // RUN: %clang -### -c -target x86_64 -gsplit-dwarf %s 2>&1 | FileCheck %s --check-prefix=G0
+ 
++/// ... unless -fthinlto-index= is specified.
++// RUN: echo > %t.bc
++// RUN: %clang -### -c -target x86_64 -fthinlto-index=dummy -gsplit-dwarf %t.bc 2>&1 | FileCheck %s --check-prefix=THINLTO
++
++// THINLTO-NOT:  "-debug-info-kind=
++// THINLTO:      "-ggnu-pubnames"
++// THINLTO-SAME: "-split-dwarf-file" "{{.*}}.dwo" "-split-dwarf-output" "{{.*}}.dwo"
++
+ /// -gno-split-dwarf disables debug fission.
+ // RUN: %clang -### -c -target x86_64 -gsplit-dwarf -g -gno-split-dwarf %s 2>&1 | FileCheck %s --check-prefix=NOSPLIT
+ // RUN: %clang -### -c -target x86_64 -gsplit-dwarf=single -g -gno-split-dwarf %s 2>&1 | FileCheck %s --check-prefix=NOSPLIT
diff --git a/sys-devel/llvm/files/cherry/5c3fc5093aaf7d9422459d295eb4eb769abcbaa4.patch b/sys-devel/llvm/files/cherry/5c3fc5093aaf7d9422459d295eb4eb769abcbaa4.patch
new file mode 100644
index 0000000..90bc8cf
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/5c3fc5093aaf7d9422459d295eb4eb769abcbaa4.patch
@@ -0,0 +1,61 @@
+commit 5c3fc5093aaf7d9422459d295eb4eb769abcbaa4
+Author: Kamlesh Kumar <kamleshbhalui@gmail.com>
+Date:   Wed Mar 3 04:32:47 2021 +0530
+
+    [libunwind] [risc-v] This patch is for fixing
+    immediate build failure when Cross Unwinding enabled.
+    Follow up patch will cleanup some Macros handling.
+    
+    Differential Revision: https://reviews.llvm.org/D97762
+
+diff --git a/libunwind/src/Registers.hpp b/libunwind/src/Registers.hpp
+index 1d23f97aedfb..aea84cc22721 100644
+--- a/libunwind/src/Registers.hpp
++++ b/libunwind/src/Registers.hpp
+@@ -3731,26 +3731,35 @@ inline const char *Registers_hexagon::getRegisterName(int regNum) {
+ /// Registers_riscv holds the register state of a thread in a RISC-V
+ /// process.
+ 
+-# if __riscv_xlen == 32
++// This check makes it safe when LIBUNWIND_ENABLE_CROSS_UNWINDING enabled.
++# ifdef __riscv
++#  if __riscv_xlen == 32
+ typedef uint32_t reg_t;
+-# elif __riscv_xlen == 64
++#  elif __riscv_xlen == 64
+ typedef uint64_t reg_t;
+-# else
+-#  error "Unsupported __riscv_xlen"
+-# endif
++#  else
++#   error "Unsupported __riscv_xlen"
++#  endif
+ 
+-# if defined(__riscv_flen)
+-#  if __riscv_flen == 64
++#  if defined(__riscv_flen)
++#   if __riscv_flen == 64
+ typedef double fp_t;
+-#  elif __riscv_flen == 32
++#   elif __riscv_flen == 32
+ typedef float fp_t;
++#   else
++#    error "Unsupported __riscv_flen"
++#   endif
+ #  else
+-#   error "Unsupported __riscv_flen"
++// This is just for supressing undeclared error of fp_t.
++typedef double fp_t;
+ #  endif
+ # else
+-// This is just for supressing undeclared error of fp_t.
++// Use Max possible width when cross unwinding
++typedef uint64_t reg_t;
+ typedef double fp_t;
+-# endif
++# define __riscv_xlen 64
++# define __riscv_flen 64
++#endif
+ 
+ /// Registers_riscv holds the register state of a thread.
+ class _LIBUNWIND_HIDDEN Registers_riscv {
diff --git a/sys-devel/llvm/files/cherry/5ca3ef98a71598d368f6f4aaf0b385b50b67ce4a.patch b/sys-devel/llvm/files/cherry/5ca3ef98a71598d368f6f4aaf0b385b50b67ce4a.patch
new file mode 100644
index 0000000..547cfbf
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/5ca3ef98a71598d368f6f4aaf0b385b50b67ce4a.patch
@@ -0,0 +1,41 @@
+commit 5ca3ef98a71598d368f6f4aaf0b385b50b67ce4a
+Author: Simon Pilgrim <llvm-dev@redking.me.uk>
+Date:   Sat Feb 13 11:33:14 2021 +0000
+
+    [X86] Add reduced test case for PR49162
+
+diff --git a/llvm/test/CodeGen/X86/pr49162.ll b/llvm/test/CodeGen/X86/pr49162.ll
+new file mode 100644
+index 000000000000..f186dc7dbe0b
+--- /dev/null
++++ b/llvm/test/CodeGen/X86/pr49162.ll
+@@ -0,0 +1,29 @@
++; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
++; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s --check-prefix=X86
++; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=X64
++
++define i32* @PR49162(i32* %base, i160* %ptr160) {
++; X86-LABEL: PR49162:
++; X86:       # %bb.0:
++; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
++; X86-NEXT:    movl 8(%eax), %ecx
++; X86-NEXT:    shll $16, %ecx
++; X86-NEXT:    movl %ecx, %eax
++; X86-NEXT:    sarl $31, %eax
++; X86-NEXT:    shldl $16, %ecx, %eax
++; X86-NEXT:    shll $2, %eax
++; X86-NEXT:    addl {{[0-9]+}}(%esp), %eax
++; X86-NEXT:    retl
++;
++; X64-LABEL: PR49162:
++; X64:       # %bb.0:
++; X64-NEXT:    leaq -4(%rdi), %rax
++; X64-NEXT:    retq
++  %load160 = load i160, i160* %ptr160, align 4
++  %shl = shl i160 %load160, 80
++  %ashr160 = ashr i160 %shl, 112
++  %trunc = trunc i160 %ashr160 to i64
++  %ashr64 = ashr i64 %trunc, 32
++  %gep = getelementptr inbounds i32, i32* %base, i64 %ashr64
++  ret i32* %gep
++}
diff --git a/sys-devel/llvm/files/cherry/61a66e4b5ec18e9e73c2f6334f6b7f7dd4bca77e.patch b/sys-devel/llvm/files/cherry/61a66e4b5ec18e9e73c2f6334f6b7f7dd4bca77e.patch
new file mode 100644
index 0000000..4399917
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/61a66e4b5ec18e9e73c2f6334f6b7f7dd4bca77e.patch
@@ -0,0 +1,61 @@
+commit 61a66e4b5ec18e9e73c2f6334f6b7f7dd4bca77e
+Author: Reid Kleckner <rnk@google.com>
+Date:   Wed Jan 27 10:59:28 2021 -0800
+
+    Revert "Suppress non-conforming GNU paste extension in all standard-conforming modes"
+    
+    This reverts commit f4537935dcdbf390c863591cf556e76c3abab9c1.
+    This reverts commit b43c26d036dcbf7a6881f39e4434cf059364022a.
+    
+    This GNU and MSVC extension turns out to be very popular. Most projects
+    are not using C++20, so cannot use the new __VA_OPT__ feature to be
+    standards conformant. The other workaround, using -std=gnu*, enables too
+    many language extensions and isn't viable.
+    
+    Until there is a way for users to get the behavior provided by the
+    `, ## __VA_ARGS__` extension in the -std=c++17 and earlier language
+    modes, we need to revert this.
+
+diff --git a/clang/lib/Lex/TokenLexer.cpp b/clang/lib/Lex/TokenLexer.cpp
+index 97cb2cf0bb8c..da5681aaf478 100644
+--- a/clang/lib/Lex/TokenLexer.cpp
++++ b/clang/lib/Lex/TokenLexer.cpp
+@@ -148,12 +148,12 @@ bool TokenLexer::MaybeRemoveCommaBeforeVaArgs(
+     return false;
+ 
+   // GCC removes the comma in the expansion of " ... , ## __VA_ARGS__ " if
+-  // __VA_ARGS__ is empty, but not in strict mode where there are no
+-  // named arguments, where it remains.  With GNU extensions, it is removed
+-  // regardless of named arguments.
++  // __VA_ARGS__ is empty, but not in strict C99 mode where there are no
++  // named arguments, where it remains.  In all other modes, including C99
++  // with GNU extensions, it is removed regardless of named arguments.
+   // Microsoft also appears to support this extension, unofficially.
+-  if (!PP.getLangOpts().GNUMode && !PP.getLangOpts().MSVCCompat &&
+-      Macro->getNumParams() < 2)
++  if (PP.getLangOpts().C99 && !PP.getLangOpts().GNUMode
++        && Macro->getNumParams() < 2)
+     return false;
+ 
+   // Is a comma available to be removed?
+diff --git a/clang/test/Preprocessor/macro_fn_comma_swallow2.c b/clang/test/Preprocessor/macro_fn_comma_swallow2.c
+index 4e4960ca7f18..93ab2b83664a 100644
+--- a/clang/test/Preprocessor/macro_fn_comma_swallow2.c
++++ b/clang/test/Preprocessor/macro_fn_comma_swallow2.c
+@@ -1,16 +1,11 @@
+ // Test the __VA_ARGS__ comma swallowing extensions of various compiler dialects.
+ 
+ // RUN: %clang_cc1 -E %s | FileCheck -check-prefix=GCC -strict-whitespace %s
+-// RUN: %clang_cc1 -E -std=c90 %s | FileCheck -check-prefix=C99 -strict-whitespace %s
+ // RUN: %clang_cc1 -E -std=c99 %s | FileCheck -check-prefix=C99 -strict-whitespace %s
+ // RUN: %clang_cc1 -E -std=c11 %s | FileCheck -check-prefix=C99 -strict-whitespace %s
+ // RUN: %clang_cc1 -E -x c++ %s | FileCheck -check-prefix=GCC -strict-whitespace %s
+-// RUN: %clang_cc1 -E -x c++ -std=c++03 %s | FileCheck -check-prefix=C99 -strict-whitespace %s
+-// RUN: %clang_cc1 -E -x c++ -std=c++11 %s | FileCheck -check-prefix=C99 -strict-whitespace %s
+ // RUN: %clang_cc1 -E -std=gnu99 %s | FileCheck -check-prefix=GCC -strict-whitespace %s
+ // RUN: %clang_cc1 -E -fms-compatibility %s | FileCheck -check-prefix=MS -strict-whitespace %s
+-// RUN: %clang_cc1 -E -x c++ -fms-compatibility %s | FileCheck -check-prefix=MS -strict-whitespace %s
+-// RUN: %clang_cc1 -E -x c++ -std=c++11 -fms-compatibility %s | FileCheck -check-prefix=MS -strict-whitespace %s
+ // RUN: %clang_cc1 -E -DNAMED %s | FileCheck -check-prefix=GCC -strict-whitespace %s
+ // RUN: %clang_cc1 -E -std=c99 -DNAMED %s | FileCheck -check-prefix=C99 -strict-whitespace %s
+ 
diff --git a/sys-devel/llvm/files/cherry/68945a8686708c6e4c74b9aeb231b8c4e1731181.patch b/sys-devel/llvm/files/cherry/68945a8686708c6e4c74b9aeb231b8c4e1731181.patch
new file mode 100644
index 0000000..71b204e
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/68945a8686708c6e4c74b9aeb231b8c4e1731181.patch
@@ -0,0 +1,140 @@
+commit 68945a8686708c6e4c74b9aeb231b8c4e1731181
+Author: Nick Desaulniers <ndesaulniers@google.com>
+Date:   Wed Feb 10 10:45:12 2021 -0800
+
+    [Thumb2] support `movs pc, lr` alias for `subs pc, lr, #0`/`eret`
+    
+    This is used by the Linux kernel built with CONFIG_THUMB2_KERNEL.
+    
+    Because different operands are not permitted to `movs`, the diagnostics now provide multiple suggestions along the lines of using a non-pc destination operand or lr source operand.
+    
+    Forked from D95586.
+    
+    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
+    
+    Reviewed By: DavidSpickett
+    
+    Differential Revision: https://reviews.llvm.org/D96304
+
+diff --git a/llvm/lib/Target/ARM/ARMInstrThumb2.td b/llvm/lib/Target/ARM/ARMInstrThumb2.td
+index 5642cab32e7c..b70d66869b06 100644
+--- a/llvm/lib/Target/ARM/ARMInstrThumb2.td
++++ b/llvm/lib/Target/ARM/ARMInstrThumb2.td
+@@ -4145,6 +4145,18 @@ def t2SUBS_PC_LR : T2I <(outs), (ins imm0_255:$imm), NoItinerary,
+   let Inst{7-0} = imm;
+ }
+ 
++// B9.3.19 SUBS PC, LR (Thumb)
++// In the Thumb instruction set, MOVS{<c>}{<q>} PC, LR is a pseudo-instruction
++// for SUBS{<c>}{<q>} PC, LR, #0.
++def : t2InstAlias<"movs${p}\tpc, lr", (t2SUBS_PC_LR 0, pred:$p)>;
++def : t2InstAlias<"movs${p}.w\tpc, lr", (t2SUBS_PC_LR 0, pred:$p)>;
++
++// ERET - Return from exception in Hypervisor mode.
++// B9.3.3, B9.3.20: ERET is an alias for "SUBS PC, LR, #0" in an implementation that
++// includes virtualization extensions.
++def t2ERET : InstAlias<"eret${p}", (t2SUBS_PC_LR 0, pred:$p), 1>,
++             Requires<[IsThumb2, HasVirtualization]>;
++
+ // Hypervisor Call is a system instruction.
+ let isCall = 1 in {
+ def t2HVC : T2XI <(outs), (ins imm0_65535:$imm16), IIC_Br, "hvc.w\t$imm16", []>,
+@@ -4160,12 +4172,6 @@ def t2HVC : T2XI <(outs), (ins imm0_65535:$imm16), IIC_Br, "hvc.w\t$imm16", []>,
+ // Alias for HVC without the ".w" optional width specifier
+ def : t2InstAlias<"hvc\t$imm16", (t2HVC imm0_65535:$imm16)>;
+ 
+-// ERET - Return from exception in Hypervisor mode.
+-// B9.3.3, B9.3.20: ERET is an alias for "SUBS PC, LR, #0" in an implementation that
+-// includes virtualization extensions.
+-def t2ERET : InstAlias<"eret${p}", (t2SUBS_PC_LR 0, pred:$p), 1>,
+-             Requires<[IsThumb2, HasVirtualization]>;
+-
+ //===----------------------------------------------------------------------===//
+ // Non-Instruction Patterns
+ //
+diff --git a/llvm/test/MC/ARM/lsl-zero-errors.s b/llvm/test/MC/ARM/lsl-zero-errors.s
+index ad39470a4a50..e021aa9eb986 100644
+--- a/llvm/test/MC/ARM/lsl-zero-errors.s
++++ b/llvm/test/MC/ARM/lsl-zero-errors.s
+@@ -72,9 +72,11 @@
+ // CHECK-THUMBV7: note: operand must be a register in range [r0, r12] or r14
+ // CHECK-THUMBV8: note: operand must be a register in range [r0, r14]
+ 
+-// CHECK-THUMBV7: error: operand must be a register in range [r0, r12] or r14
+-// CHECK-THUMBV8: error: operand must be a register in range [r0, r14]
++// CHECK-NONARM: error: invalid instruction, any one of the following would fix this:
+ // CHECK-NONARM-NEXT: movs pc, r0, lsl #0
++// CHECK-THUMBV7: note: operand must be a register in range [r0, r12] or r14
++// CHECK-THUMBV8: note: operand must be a register in range [r0, r14]
++// CHECK-NONARM: note: invalid operand for instruction
+ 
+ // CHECK-NONARM: error: invalid instruction, any one of the following would fix this:
+ // CHECK-NONARM-NEXT: movs r0, pc, lsl #0
+@@ -82,9 +84,11 @@
+ // CHECK-NONARM: note: invalid operand for instruction
+ // CHECK-NONARM: note: invalid operand for instruction
+ 
+-// CHECK-THUMBV7: error: operand must be a register in range [r0, r12] or r14
+-// CHECK-THUMBV8: error: operand must be a register in range [r0, r14]
++// CHECK-NONARM: error: invalid instruction, any one of the following would fix this:
+ // CHECK-NONARM-NEXT: movs pc, pc, lsl #0
++// CHECK-THUMBV7: note: operand must be a register in range [r0, r12] or r14
++// CHECK-THUMBV8: note: operand must be a register in range [r0, r14]
++// CHECK-NONARM: note: invalid operand for instruction
+ 
+ // CHECK-ARM: mov pc, r0                @ encoding: [0x00,0xf0,0xa0,0xe1]
+ // CHECK-ARM: mov r0, pc                @ encoding: [0x0f,0x00,0xa0,0xe1]
+diff --git a/llvm/test/MC/ARM/thumb-mov.s b/llvm/test/MC/ARM/thumb-mov.s
+index 5ceb0082dddc..6f662f3ee2c7 100644
+--- a/llvm/test/MC/ARM/thumb-mov.s
++++ b/llvm/test/MC/ARM/thumb-mov.s
+@@ -13,13 +13,15 @@
+         movs pc, r0
+         movs r0, pc
+         movs pc, pc
+-// CHECK: error: operand must be a register in range [r0, r14]
++// CHECK: error: invalid instruction, any one of the following would fix this:
+ // CHECK-NEXT: movs pc, r0
+ // CHECK: note: operand must be a register in range [r0, r14]
+-// CHECK-NEXT: movs r0, pc
+ // CHECK: note: invalid operand for instruction
++// CHECK: error: invalid instruction, any one of the following would fix this:
+ // CHECK-NEXT: movs r0, pc
+-// CHECK: error: invalid instruction
++// CHECK: note: operand must be a register in range [r0, r14]
++// CHECK: note: invalid operand for instruction
++// CHECK: error: invalid operand for instruction
+ // CHECK-NEXT: movs pc, pc
+ 
+         // mov.w selects t2MOVr
+@@ -39,13 +41,15 @@
+         movs.w pc, r0
+         movs.w r0, pc
+         movs.w pc, pc
+-// CHECK: error: operand must be a register in range [r0, r14]
++// CHECK: error: invalid instruction, any one of the following would fix this:
+ // CHECK-NEXT: movs.w pc, r0
+ // CHECK: note: operand must be a register in range [r0, r14]
+-// CHECK-NEXT: movs.w r0, pc
+ // CHECK: note: invalid operand for instruction
++// CHECK: error: invalid instruction, any one of the following would fix this:
+ // CHECK-NEXT: movs.w r0, pc
+-// CHECK: error: invalid instruction
++// CHECK: note: operand must be a register in range [r0, r14]
++// CHECK: note: invalid operand for instruction
++// CHECK: error: invalid operand for instruction
+ // CHECK-NEXT: movs.w pc, pc
+ 
+ 
+@@ -104,3 +108,11 @@
+         mov.w r0, sp
+ // CHECK: mov.w sp, r0                @ encoding: [0x4f,0xea,0x00,0x0d]
+ // CHECK: mov.w r0, sp                @ encoding: [0x4f,0xea,0x0d,0x00]
++
++        // `movs pc, lr` is an alias for `subs pc, lr, #0`/`eret`.
++        movs   pc, lr
++        movs.w pc, lr
++// CHECK-V7: subs pc, lr, #0             @ encoding: [0xde,0xf3,0x00,0x8f]
++// CHECK-V7: subs pc, lr, #0             @ encoding: [0xde,0xf3,0x00,0x8f]
++// CHECK-V8: eret                        @ encoding: [0xde,0xf3,0x00,0x8f]
++// CHECK-V8: eret                        @ encoding: [0xde,0xf3,0x00,0x8f]
diff --git a/sys-devel/llvm/files/cherry/7ad0c573bd4a68dc81886037457d47daa3d6aa24.patch b/sys-devel/llvm/files/cherry/7ad0c573bd4a68dc81886037457d47daa3d6aa24.patch
new file mode 100644
index 0000000..d3a913b
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/7ad0c573bd4a68dc81886037457d47daa3d6aa24.patch
@@ -0,0 +1,40 @@
+commit 7ad0c573bd4a68dc81886037457d47daa3d6aa24
+Author: Simon Pilgrim <llvm-dev@redking.me.uk>
+Date:   Sat Feb 13 11:59:52 2021 +0000
+
+    [DAG] Fix shift amount limit in SimplifyDemandedBits trunc(shift(x,c)) to truncated bitwidth
+    
+    We lost this in D56387/rG69bc0990a9181e6eb86228276d2f59435a7fae67 - where I got the src/dst bitwidths mixed up and assumed getValidShiftAmountConstant would catch it.
+    
+    Patch by @craig.topper - confirmed by @Carrot that it fixes PR49162
+
+diff --git a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+index 00c672154348..dda6187d41c4 100644
+--- a/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
++++ b/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp
+@@ -2011,7 +2011,7 @@ bool TargetLowering::SimplifyDemandedBits(
+ 
+         const APInt *ShAmtC =
+             TLO.DAG.getValidShiftAmountConstant(Src, DemandedElts);
+-        if (!ShAmtC)
++        if (!ShAmtC || ShAmtC->uge(BitWidth))
+           break;
+         uint64_t ShVal = ShAmtC->getZExtValue();
+ 
+diff --git a/llvm/test/CodeGen/X86/pr49162.ll b/llvm/test/CodeGen/X86/pr49162.ll
+index f186dc7dbe0b..d3c187883b12 100644
+--- a/llvm/test/CodeGen/X86/pr49162.ll
++++ b/llvm/test/CodeGen/X86/pr49162.ll
+@@ -17,7 +17,11 @@ define i32* @PR49162(i32* %base, i160* %ptr160) {
+ ;
+ ; X64-LABEL: PR49162:
+ ; X64:       # %bb.0:
+-; X64-NEXT:    leaq -4(%rdi), %rax
++; X64-NEXT:    movl 8(%rsi), %eax
++; X64-NEXT:    shll $16, %eax
++; X64-NEXT:    cltq
++; X64-NEXT:    sarq $16, %rax
++; X64-NEXT:    leaq (%rdi,%rax,4), %rax
+ ; X64-NEXT:    retq
+   %load160 = load i160, i160* %ptr160, align 4
+   %shl = shl i160 %load160, 80
diff --git a/sys-devel/llvm/files/cherry/801ab71032e157eb7bcd38efeb6486742a7c53bb.patch b/sys-devel/llvm/files/cherry/801ab71032e157eb7bcd38efeb6486742a7c53bb.patch
new file mode 100644
index 0000000..3cba367
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/801ab71032e157eb7bcd38efeb6486742a7c53bb.patch
@@ -0,0 +1,499 @@
+commit 801ab71032e157eb7bcd38efeb6486742a7c53bb
+Author: Daniel Kiss <daniel.kiss@arm.com>
+Date:   Thu May 20 17:06:43 2021 +0200
+
+    [ARM][AArch64] SLSHardening: make non-comdat thunks possible
+    
+    Linker scripts might not handle COMDAT sections. SLSHardeing adds
+    new section for each __llvm_slsblr_thunk_xN. This new option allows
+    the generation of the thunks into the normal text section to handle these
+    exceptional cases.
+    ,comdat or ,noncomdat can be added to harden-sls to control the codegen.
+    -mharden-sls=[all|retbr|blr],nocomdat.
+    
+    Reviewed By: kristof.beyls
+    
+    Differential Revision: https://reviews.llvm.org/D100546
+
+diff --git a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
+index 4ce797f9bc73..503685ab533a 100644
+--- a/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
++++ b/clang/lib/Driver/ToolChains/Arch/AArch64.cpp
+@@ -235,11 +235,17 @@ void aarch64::getAArch64TargetFeatures(const Driver &D,
+     StringRef Scope = A->getValue();
+     bool EnableRetBr = false;
+     bool EnableBlr = false;
+-    if (Scope != "none" && Scope != "all") {
++    bool DisableComdat = false;
++    if (Scope != "none") {
+       SmallVector<StringRef, 4> Opts;
+       Scope.split(Opts, ",");
+       for (auto Opt : Opts) {
+         Opt = Opt.trim();
++        if (Opt == "all") {
++          EnableBlr = true;
++          EnableRetBr = true;
++          continue;
++        }
+         if (Opt == "retbr") {
+           EnableRetBr = true;
+           continue;
+@@ -248,19 +254,27 @@ void aarch64::getAArch64TargetFeatures(const Driver &D,
+           EnableBlr = true;
+           continue;
+         }
++        if (Opt == "comdat") {
++          DisableComdat = false;
++          continue;
++        }
++        if (Opt == "nocomdat") {
++          DisableComdat = true;
++          continue;
++        }
+         D.Diag(diag::err_invalid_sls_hardening)
+             << Scope << A->getAsString(Args);
+         break;
+       }
+-    } else if (Scope == "all") {
+-      EnableRetBr = true;
+-      EnableBlr = true;
+     }
+ 
+     if (EnableRetBr)
+       Features.push_back("+harden-sls-retbr");
+     if (EnableBlr)
+       Features.push_back("+harden-sls-blr");
++    if (DisableComdat) {
++      Features.push_back("+harden-sls-nocomdat");
++    }
+   }
+ 
+   // En/disable crc
+diff --git a/clang/lib/Driver/ToolChains/Arch/ARM.cpp b/clang/lib/Driver/ToolChains/Arch/ARM.cpp
+index 16d72e5367f5..4ab547fabe43 100644
+--- a/clang/lib/Driver/ToolChains/Arch/ARM.cpp
++++ b/clang/lib/Driver/ToolChains/Arch/ARM.cpp
+@@ -796,11 +796,17 @@ fp16_fml_fallthrough:
+     StringRef Scope = A->getValue();
+     bool EnableRetBr = false;
+     bool EnableBlr = false;
+-    if (Scope != "none" && Scope != "all") {
++    bool DisableComdat = false;
++    if (Scope != "none") {
+       SmallVector<StringRef, 4> Opts;
+       Scope.split(Opts, ",");
+       for (auto Opt : Opts) {
+         Opt = Opt.trim();
++        if (Opt == "all") {
++          EnableBlr = true;
++          EnableRetBr = true;
++          continue;
++        }
+         if (Opt == "retbr") {
+           EnableRetBr = true;
+           continue;
+@@ -809,13 +815,18 @@ fp16_fml_fallthrough:
+           EnableBlr = true;
+           continue;
+         }
++        if (Opt == "comdat") {
++          DisableComdat = false;
++          continue;
++        }
++        if (Opt == "nocomdat") {
++          DisableComdat = true;
++          continue;
++        }
+         D.Diag(diag::err_invalid_sls_hardening)
+             << Scope << A->getAsString(Args);
+         break;
+       }
+-    } else if (Scope == "all") {
+-      EnableRetBr = true;
+-      EnableBlr = true;
+     }
+ 
+     if (EnableRetBr || EnableBlr)
+@@ -827,6 +838,9 @@ fp16_fml_fallthrough:
+       Features.push_back("+harden-sls-retbr");
+     if (EnableBlr)
+       Features.push_back("+harden-sls-blr");
++    if (DisableComdat) {
++      Features.push_back("+harden-sls-nocomdat");
++    }
+   }
+ 
+ }
+diff --git a/clang/test/Driver/sls-hardening-options.c b/clang/test/Driver/sls-hardening-options.c
+index c48b694bc8b7..cb35d8b5f99d 100644
+--- a/clang/test/Driver/sls-hardening-options.c
++++ b/clang/test/Driver/sls-hardening-options.c
+@@ -1,49 +1,49 @@
+ // Check the -mharden-sls= option, which has a required argument to select
+ // scope.
+ // RUN: %clang -target aarch64--none-eabi -c %s -### 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF
+ // RUN: %clang -target armv7a--none-eabi -c %s -### 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF
+ 
+ // RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=none 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF
+ // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=none 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF
+ 
+ // RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF
+ // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF
+ 
+ // RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=blr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-ON
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF
+ // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=blr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-ON
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF
+ 
+ // RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=none 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF
+ // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=none 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF
+ 
+ // RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=retbr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF
+ // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=retbr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF
+ 
+ // RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF
+ // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF
+ 
+ // RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=all 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF
+ // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=all 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF
+ 
+ // RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr,retbr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF
+ // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr,retbr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF
+ 
+ // RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr,r 2>&1 | \
+ // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
+@@ -60,12 +60,45 @@
+ // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=all,-blr 2>&1 | \
+ // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
+ 
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr,nocomdat 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr,nocomdat 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=all,nocomdat 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=all,nocomdat 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr,retbr,nocomdat 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr,retbr,nocomdat 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,comdat,r 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,comdat,r 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=none,comdat 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=none,comdat 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=all,-comdat 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=all,-comdat 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++
+ // RETBR-OFF-NOT: "harden-sls-retbr"
+ // RETBR-ON:  "+harden-sls-retbr"
+ 
+ // BLR-OFF-NOT: "harden-sls-blr"
+ // BLR-ON:  "+harden-sls-blr"
+ 
++// NOCOMDAT-OFF-NOT: "harden-sls-nocomdat"
++// NOCOMDAT: "+harden-sls-nocomdat"
++
+ // BAD-SLS-SPEC: invalid sls hardening option '{{[^']+}}' in '-mharden-sls=
+ 
+ // RUN: %clang -target armv6a--none-eabi -c %s -### -mharden-sls=all 2>&1 | \
+diff --git a/llvm/include/llvm/CodeGen/IndirectThunks.h b/llvm/include/llvm/CodeGen/IndirectThunks.h
+index 3b40055da7a4..74973f38bc79 100644
+--- a/llvm/include/llvm/CodeGen/IndirectThunks.h
++++ b/llvm/include/llvm/CodeGen/IndirectThunks.h
+@@ -27,7 +27,8 @@ template <typename Derived> class ThunkInserter {
+ protected:
+   bool InsertedThunks;
+   void doInitialization(Module &M) {}
+-  void createThunkFunction(MachineModuleInfo &MMI, StringRef Name);
++  void createThunkFunction(MachineModuleInfo &MMI, StringRef Name,
++                           bool Comdat = true);
+ 
+ public:
+   void init(Module &M) {
+@@ -40,17 +41,21 @@ public:
+ 
+ template <typename Derived>
+ void ThunkInserter<Derived>::createThunkFunction(MachineModuleInfo &MMI,
+-                                                 StringRef Name) {
++                                                 StringRef Name, bool Comdat) {
+   assert(Name.startswith(getDerived().getThunkPrefix()) &&
+          "Created a thunk with an unexpected prefix!");
+ 
+   Module &M = const_cast<Module &>(*MMI.getModule());
+   LLVMContext &Ctx = M.getContext();
+   auto Type = FunctionType::get(Type::getVoidTy(Ctx), false);
+-  Function *F =
+-      Function::Create(Type, GlobalValue::LinkOnceODRLinkage, Name, &M);
+-  F->setVisibility(GlobalValue::HiddenVisibility);
+-  F->setComdat(M.getOrInsertComdat(Name));
++  Function *F = Function::Create(Type,
++                                 Comdat ? GlobalValue::LinkOnceODRLinkage
++                                        : GlobalValue::InternalLinkage,
++                                 Name, &M);
++  if (Comdat) {
++    F->setVisibility(GlobalValue::HiddenVisibility);
++    F->setComdat(M.getOrInsertComdat(Name));
++  }
+ 
+   // Add Attributes so that we don't create a frame, unwind information, or
+   // inline.
+diff --git a/llvm/lib/Target/AArch64/AArch64.td b/llvm/lib/Target/AArch64/AArch64.td
+index a2eeaa4ee2d0..dab6dbe2352c 100644
+--- a/llvm/lib/Target/AArch64/AArch64.td
++++ b/llvm/lib/Target/AArch64/AArch64.td
+@@ -523,6 +523,9 @@ def FeatureHardenSlsRetBr : SubtargetFeature<"harden-sls-retbr",
+ def FeatureHardenSlsBlr : SubtargetFeature<"harden-sls-blr",
+   "HardenSlsBlr", "true",
+   "Harden against straight line speculation across BLR instructions">;
++def FeatureHardenSlsNoComdat : SubtargetFeature<"harden-sls-nocomdat",
++  "HardenSlsNoComdat", "true",
++  "Generate thunk code for SLS mitigation in the normal text section">;
+ 
+ //===----------------------------------------------------------------------===//
+ // AArch64 Processors supported.
+diff --git a/llvm/lib/Target/AArch64/AArch64SLSHardening.cpp b/llvm/lib/Target/AArch64/AArch64SLSHardening.cpp
+index cb4dc8462f68..c4965e7146ff 100644
+--- a/llvm/lib/Target/AArch64/AArch64SLSHardening.cpp
++++ b/llvm/lib/Target/AArch64/AArch64SLSHardening.cpp
+@@ -186,12 +186,16 @@ namespace {
+ struct SLSBLRThunkInserter : ThunkInserter<SLSBLRThunkInserter> {
+   const char *getThunkPrefix() { return SLSBLRNamePrefix; }
+   bool mayUseThunk(const MachineFunction &MF) {
++    ComdatThunks &= !MF.getSubtarget<AArch64Subtarget>().hardenSlsNoComdat();
+     // FIXME: This could also check if there are any BLRs in the function
+     // to more accurately reflect if a thunk will be needed.
+     return MF.getSubtarget<AArch64Subtarget>().hardenSlsBlr();
+   }
+   void insertThunks(MachineModuleInfo &MMI);
+   void populateThunk(MachineFunction &MF);
++
++private:
++  bool ComdatThunks = true;
+ };
+ } // namespace
+ 
+@@ -200,7 +204,7 @@ void SLSBLRThunkInserter::insertThunks(MachineModuleInfo &MMI) {
+   // based on which registers are actually used in BLR instructions in this
+   // function. But would that be a worthwhile optimization?
+   for (auto T : SLSBLRThunks)
+-    createThunkFunction(MMI, T.Name);
++    createThunkFunction(MMI, T.Name, ComdatThunks);
+ }
+ 
+ void SLSBLRThunkInserter::populateThunk(MachineFunction &MF) {
+diff --git a/llvm/lib/Target/AArch64/AArch64Subtarget.h b/llvm/lib/Target/AArch64/AArch64Subtarget.h
+index 086934c0148a..8345e9c5861d 100644
+--- a/llvm/lib/Target/AArch64/AArch64Subtarget.h
++++ b/llvm/lib/Target/AArch64/AArch64Subtarget.h
+@@ -241,6 +241,7 @@ protected:
+   bool AllowTaggedGlobals = false;
+   bool HardenSlsRetBr = false;
+   bool HardenSlsBlr = false;
++  bool HardenSlsNoComdat = false;
+   uint8_t MaxInterleaveFactor = 2;
+   uint8_t VectorInsertExtractBaseCost = 3;
+   uint16_t CacheLineSize = 0;
+@@ -399,6 +400,7 @@ public:
+ 
+   bool hardenSlsRetBr() const { return HardenSlsRetBr; }
+   bool hardenSlsBlr() const { return HardenSlsBlr; }
++  bool hardenSlsNoComdat() const { return HardenSlsNoComdat; }
+ 
+   bool useEL1ForTP() const { return UseEL1ForTP; }
+   bool useEL2ForTP() const { return UseEL2ForTP; }
+diff --git a/llvm/lib/Target/ARM/ARM.td b/llvm/lib/Target/ARM/ARM.td
+index 9da2bdbbb103..0afcae293938 100644
+--- a/llvm/lib/Target/ARM/ARM.td
++++ b/llvm/lib/Target/ARM/ARM.td
+@@ -573,8 +573,9 @@ def FeatureHardenSlsRetBr : SubtargetFeature<"harden-sls-retbr",
+ def FeatureHardenSlsBlr : SubtargetFeature<"harden-sls-blr",
+   "HardenSlsBlr", "true",
+   "Harden against straight line speculation across indirect calls">;
+-
+-
++def FeatureHardenSlsNoComdat : SubtargetFeature<"harden-sls-nocomdat",
++  "HardenSlsNoComdat", "true",
++  "Generate thunk code for SLS mitigation in the normal text section">;
+ 
+ //===----------------------------------------------------------------------===//
+ // ARM Processor subtarget features.
+diff --git a/llvm/lib/Target/ARM/ARMSLSHardening.cpp b/llvm/lib/Target/ARM/ARMSLSHardening.cpp
+index cfcc7d5a0408..332acb453124 100644
+--- a/llvm/lib/Target/ARM/ARMSLSHardening.cpp
++++ b/llvm/lib/Target/ARM/ARMSLSHardening.cpp
+@@ -165,12 +165,16 @@ namespace {
+ struct SLSBLRThunkInserter : ThunkInserter<SLSBLRThunkInserter> {
+   const char *getThunkPrefix() { return SLSBLRNamePrefix; }
+   bool mayUseThunk(const MachineFunction &MF) {
++    ComdatThunks &= !MF.getSubtarget<ARMSubtarget>().hardenSlsNoComdat();
+     // FIXME: This could also check if there are any indirect calls in the
+     // function to more accurately reflect if a thunk will be needed.
+     return MF.getSubtarget<ARMSubtarget>().hardenSlsBlr();
+   }
+   void insertThunks(MachineModuleInfo &MMI);
+   void populateThunk(MachineFunction &MF);
++
++private:
++  bool ComdatThunks = true;
+ };
+ } // namespace
+ 
+@@ -179,7 +183,7 @@ void SLSBLRThunkInserter::insertThunks(MachineModuleInfo &MMI) {
+   // based on which registers are actually used in indirect calls in this
+   // function. But would that be a worthwhile optimization?
+   for (auto T : SLSBLRThunks)
+-    createThunkFunction(MMI, T.Name);
++    createThunkFunction(MMI, T.Name, ComdatThunks);
+ }
+ 
+ void SLSBLRThunkInserter::populateThunk(MachineFunction &MF) {
+diff --git a/llvm/lib/Target/ARM/ARMSubtarget.h b/llvm/lib/Target/ARM/ARMSubtarget.h
+index 5d5fe7199db3..4740af87d497 100644
+--- a/llvm/lib/Target/ARM/ARMSubtarget.h
++++ b/llvm/lib/Target/ARM/ARMSubtarget.h
+@@ -475,6 +475,9 @@ protected:
+   /// Harden against Straight Line Speculation for indirect calls.
+   bool HardenSlsBlr = false;
+ 
++  /// Generate thunk code for SLS mitigation in the normal text section.
++  bool HardenSlsNoComdat = false;
++
+   /// stackAlignment - The minimum alignment known to hold of the stack frame on
+   /// entry to the function and which must be maintained by every function.
+   Align stackAlignment = Align(4);
+@@ -931,6 +934,7 @@ public:
+ 
+   bool hardenSlsRetBr() const { return HardenSlsRetBr; }
+   bool hardenSlsBlr() const { return HardenSlsBlr; }
++  bool hardenSlsNoComdat() const { return HardenSlsNoComdat; }
+ };
+ 
+ } // end namespace llvm
+diff --git a/llvm/test/CodeGen/AArch64/speculation-hardening-sls.ll b/llvm/test/CodeGen/AArch64/speculation-hardening-sls.ll
+index 90d27830134a..89f2fba022b7 100644
+--- a/llvm/test/CodeGen/AArch64/speculation-hardening-sls.ll
++++ b/llvm/test/CodeGen/AArch64/speculation-hardening-sls.ll
+@@ -1,7 +1,9 @@
+-; RUN: llc -mattr=harden-sls-retbr,harden-sls-blr -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,HARDEN,ISBDSB,ISBDSBDAGISEL
++; RUN: llc -mattr=harden-sls-retbr,harden-sls-blr -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,HARDEN,HARDEN-COMDAT,ISBDSB,ISBDSBDAGISEL
++; RUN: llc -mattr=harden-sls-retbr,harden-sls-blr,harden-sls-nocomdat -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,HARDEN,HARDEN-COMDAT-OFF,ISBDSB,ISBDSBDAGISEL
+ ; RUN: llc -mattr=harden-sls-retbr,harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,HARDEN,SB,SBDAGISEL
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr,harden-sls-blr -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,HARDEN,HARDEN-COMDAT,ISBDSB
+ ; RUN: llc -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,NOHARDEN
+-; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr,harden-sls-blr -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,HARDEN,ISBDSB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr,harden-sls-blr,harden-sls-nocomdat -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,HARDEN,HARDEN-COMDAT-OFF,ISBDSB
+ ; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr,harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=aarch64-none-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,HARDEN,SB
+ 
+ ; Function Attrs: norecurse nounwind readnone
+@@ -210,6 +212,14 @@ entry:
+ ; SB-NEXT:     dsb sy
+ ; SB-NEXT:     isb
+ ; HARDEN-NEXT: .Lfunc_end
++; HARDEN-COMDAT:  .section .text.__llvm_slsblr_thunk_x19
++; HARDEN-COMDAT:  .hidden __llvm_slsblr_thunk_x19
++; HARDEN-COMDAT:  .weak __llvm_slsblr_thunk_x19
++; HARDEN-COMDAT: .type  __llvm_slsblr_thunk_x19,@function
++; HARDEN-COMDAT-OFF-NOT:  .section .text.__llvm_slsblr_thunk_x19
++; HARDEN-COMDAT-OFF-NOT:  .hidden __llvm_slsblr_thunk_x19
++; HARDEN-COMDAT-OFF-NOT:  .weak __llvm_slsblr_thunk_x19
++; HARDEN-COMDAT-OFF:      .type __llvm_slsblr_thunk_x19,@function
+ ; HARDEN-label: __llvm_slsblr_thunk_x19:
+ ; HARDEN:    mov x16, x19
+ ; HARDEN:    br x16
+diff --git a/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll b/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
+index 7fe5a9ba2eb0..2731cef93003 100644
+--- a/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
++++ b/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
+@@ -1,15 +1,23 @@
+-; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB -dump-input-context=100
+-; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,ISBDSB -dump-input-context=100
+-; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB -dump-input-context=100
+-; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,SB -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,HARDEN-COMDAT,ISBDSB -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,HARDEN-COMDAT,ISBDSB -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,HARDEN-COMDAT,SB -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,HARDEN-COMDAT,SB -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=harden-sls-nocomdat -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,HARDEN-COMDAT-OFF,ISBDSB -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=harden-sls-nocomdat -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,HARDEN-COMDAT-OFF,ISBDSB -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=harden-sls-nocomdat -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,HARDEN-COMDAT-OFF,SB -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=harden-sls-nocomdat -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,HARDEN-COMDAT-OFF,SB -dump-input-context=100
+ ; RUN: llc -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,NOHARDENARM -dump-input-context=100
+ ; RUN: llc -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,NOHARDENTHUMB
+-; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB
+-; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,ISBDSB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,HARDEN-COMDAT,ISBDSB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,HARDEN-COMDAT,ISBDSB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-nocomdat -mattr=harden-sls-blr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,HARDEN-COMDAT-OFF,ISBDSB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-nocomdat -mattr=harden-sls-blr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,HARDEN-COMDAT-OFF,ISBDSB
+ ; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB
+ ; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,SB
+-; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB
+-; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,ISBDSB
++; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,HARDEN-COMDAT,ISBDSB
++; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,HARDEN-COMDAT,ISBDSB
++; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=harden-sls-nocomdat -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,HARDEN-COMDAT-OFF,ISBDSB
++; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=harden-sls-nocomdat -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,HARDEN-COMDAT-OFF,ISBDSB
+ ; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB
+ ; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,SB
+ 
+@@ -235,6 +243,14 @@ entry:
+ ; CHECK: .Lfunc_end
+ }
+ 
++; HARDEN-COMDAT:  .section {{.text.__llvm_slsblr_thunk_(arm|thumb)_r5}}
++; HARDEN-COMDAT:  .hidden {{__llvm_slsblr_thunk_(arm|thumb)_r5}}
++; HARDEN-COMDAT:  .weak {{__llvm_slsblr_thunk_(arm|thumb)_r5}}
++; HARDEN-COMDAT:  .type {{__llvm_slsblr_thunk_(arm|thumb)_r5}},%function
++; HARDEN-COMDAT-OFF-NOT:  .section {{.text.__llvm_slsblr_thunk_(arm|thumb)_r5}}
++; HARDEN-COMDAT-OFF-NOT:  .hidden {{__llvm_slsblr_thunk_(arm|thumb)_r5}}
++; HARDEN-COMDAT-OFF-NOT:  .weak {{__llvm_slsblr_thunk_(arm|thumb)_r5}}
++; HARDEN-COMDAT-OFF:      .type {{__llvm_slsblr_thunk_(arm|thumb)_r5}},%function
+ ; HARDEN-label: {{__llvm_slsblr_thunk_(arm|thumb)_r5}}:
+ ; HARDEN:    bx r5
+ ; ISBDSB-NEXT: dsb sy
diff --git a/sys-devel/llvm/files/cherry/85167fb7c2920ca8874b197ef397e8e6b9d87c73.patch b/sys-devel/llvm/files/cherry/85167fb7c2920ca8874b197ef397e8e6b9d87c73.patch
new file mode 100644
index 0000000..4dac019
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/85167fb7c2920ca8874b197ef397e8e6b9d87c73.patch
@@ -0,0 +1,562 @@
+commit 85167fb7c2920ca8874b197ef397e8e6b9d87c73
+Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
+Date:   Wed Feb 3 17:54:13 2021 -0500
+
+    [libc++] Further improve the contiguous-iterator story, and fix some bugs.
+    
+    - Quality-of-implementation: Avoid calling __unwrap_iter in constexpr contexts.
+        The user might conceivably write a contiguous iterator where normal iterator
+        arithmetic is constexpr-friendly but `std::to_address(it)` isn't.
+    
+    - Bugfix: When you pass contiguous iterators to `std::copy`, you should get
+        back your contiguous iterator type, not a raw pointer. That means that
+        libc++ can't `__unwrap_iter` unless it also does `__rewrap_iter`.
+        Fortunately, this is implementable.
+    
+    - Improve test coverage of the new `contiguous_iterator` test iterator.
+        This catches the bug described above.
+    
+    - Tests: Stop testing that we can `std::copy` //into// an `input_iterator`.
+        Our test iterators may currently support that, but it seems nonsensical to me.
+    
+    Differential Revision: https://reviews.llvm.org/D95983
+
+diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm
+index 04126a1f4836..4c139296a816 100644
+--- a/libcxx/include/algorithm
++++ b/libcxx/include/algorithm
+@@ -1639,12 +1639,22 @@ search_n(_ForwardIterator __first, _ForwardIterator __last, _Size __count, const
+                            __value_, __equal_to<__v, _Tp>());
+ }
+ 
+-// __unwrap_iter
++// __unwrap_iter, __rewrap_iter
+ 
+-// The job of __unwrap_iter is to lower iterators-that-are-tantamount-to-pointers
+-// (such as vector<T>::iterator) into pointers, to reduce the number of template
++// The job of __unwrap_iter is to lower contiguous iterators (such as
++// vector<T>::iterator) into pointers, to reduce the number of template
+ // instantiations and to enable pointer-based optimizations e.g. in std::copy.
++// For iterators that are not contiguous, it must be a no-op.
+ // In debug mode, we don't do this.
++//
++// __unwrap_iter is non-constexpr for user-defined iterators whose
++// `to_address` and/or `operator->` is non-constexpr. This is okay; but we
++// try to avoid doing __unwrap_iter in constant-evaluated contexts anyway.
++//
++// Some algorithms (e.g. std::copy, but not std::sort) need to convert an
++// "unwrapped" result back into a contiguous iterator. Since contiguous iterators
++// are random-access, we can do this portably using iterator arithmetic; this
++// is the job of __rewrap_iter.
+ 
+ template <class _Iter, bool = __is_cpp17_contiguous_iterator<_Iter>::value>
+ struct __unwrap_iter_impl {
+@@ -1674,6 +1684,20 @@ __unwrap_iter(_Iter __i) _NOEXCEPT
+     return _Impl::__apply(__i);
+ }
+ 
++template<class _OrigIter>
++_OrigIter __rewrap_iter(_OrigIter, _OrigIter __result)
++{
++    return __result;
++}
++
++template<class _OrigIter, class _UnwrappedIter>
++_OrigIter __rewrap_iter(_OrigIter __first, _UnwrappedIter __result)
++{
++    // Precondition: __result is reachable from __first
++    // Precondition: _OrigIter is a contiguous iterator
++    return __first + (__result - _VSTD::__unwrap_iter(__first));
++}
++
+ // copy
+ 
+ template <class _InputIterator, class _OutputIterator>
+@@ -1716,11 +1740,12 @@ _OutputIterator
+ copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
+ {
+     if (__libcpp_is_constant_evaluated()) {
+-        return _VSTD::__copy_constexpr(
+-            _VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _VSTD::__unwrap_iter(__result));
++        return _VSTD::__copy_constexpr(__first, __last, __result);
+     } else {
+-        return _VSTD::__copy(
+-            _VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _VSTD::__unwrap_iter(__result));
++        return _VSTD::__rewrap_iter(__result,
++            _VSTD::__copy(_VSTD::__unwrap_iter(__first),
++                          _VSTD::__unwrap_iter(__last),
++                          _VSTD::__unwrap_iter(__result)));
+     }
+ }
+ 
+@@ -1770,13 +1795,12 @@ copy_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last,
+               _BidirectionalIterator2 __result)
+ {
+     if (__libcpp_is_constant_evaluated()) {
+-        return _VSTD::__copy_backward_constexpr(_VSTD::__unwrap_iter(__first),
+-                                                _VSTD::__unwrap_iter(__last),
+-                                                _VSTD::__unwrap_iter(__result));
++        return _VSTD::__copy_backward_constexpr(__first, __last, __result);
+     } else {
+-        return _VSTD::__copy_backward(_VSTD::__unwrap_iter(__first),
+-                                      _VSTD::__unwrap_iter(__last),
+-                                      _VSTD::__unwrap_iter(__result));
++        return _VSTD::__rewrap_iter(__result,
++            _VSTD::__copy_backward(_VSTD::__unwrap_iter(__first),
++                                   _VSTD::__unwrap_iter(__last),
++                                   _VSTD::__unwrap_iter(__result)));
+     }
+ }
+ 
+@@ -1843,8 +1867,6 @@ copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result)
+ 
+ // move
+ 
+-// __move_constexpr exists so that __move doesn't call itself when delegating to the constexpr
+-// version of __move.
+ template <class _InputIterator, class _OutputIterator>
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
+ _OutputIterator
+@@ -1873,8 +1895,6 @@ typename enable_if
+ >::type
+ __move(_Tp* __first, _Tp* __last, _Up* __result)
+ {
+-    if (__libcpp_is_constant_evaluated())
+-        return _VSTD::__move_constexpr(__first, __last, __result);
+     const size_t __n = static_cast<size_t>(__last - __first);
+     if (__n > 0)
+         _VSTD::memmove(__result, __first, __n * sizeof(_Up));
+@@ -1886,13 +1906,18 @@ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
+ _OutputIterator
+ move(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
+ {
+-    return _VSTD::__move(_VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _VSTD::__unwrap_iter(__result));
++    if (__libcpp_is_constant_evaluated()) {
++        return _VSTD::__move_constexpr(__first, __last, __result);
++    } else {
++        return _VSTD::__rewrap_iter(__result,
++            _VSTD::__move(_VSTD::__unwrap_iter(__first),
++                          _VSTD::__unwrap_iter(__last),
++                          _VSTD::__unwrap_iter(__result)));
++    }
+ }
+ 
+ // move_backward
+ 
+-// __move_backward_constexpr exists so that __move_backward doesn't call itself when delegating to
+-// the constexpr version of __move_backward.
+ template <class _InputIterator, class _OutputIterator>
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
+ _OutputIterator
+@@ -1921,8 +1946,6 @@ typename enable_if
+ >::type
+ __move_backward(_Tp* __first, _Tp* __last, _Up* __result)
+ {
+-    if (__libcpp_is_constant_evaluated())
+-        return _VSTD::__move_backward_constexpr(__first, __last, __result);
+     const size_t __n = static_cast<size_t>(__last - __first);
+     if (__n > 0)
+     {
+@@ -1938,7 +1961,14 @@ _BidirectionalIterator2
+ move_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last,
+               _BidirectionalIterator2 __result)
+ {
+-    return _VSTD::__move_backward(_VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _VSTD::__unwrap_iter(__result));
++    if (__libcpp_is_constant_evaluated()) {
++        return _VSTD::__move_backward_constexpr(__first, __last, __result);
++    } else {
++        return _VSTD::__rewrap_iter(__result,
++            _VSTD::__move_backward(_VSTD::__unwrap_iter(__first),
++                                   _VSTD::__unwrap_iter(__last),
++                                   _VSTD::__unwrap_iter(__result)));
++    }
+ }
+ 
+ // iter_swap
+diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
+index 32c42b6caf3a..b8d880d09526 100644
+--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
+@@ -40,40 +40,49 @@ TEST_CONSTEXPR_CXX20 bool
+ test()
+ {
+     test_copy<input_iterator<const int*>, output_iterator<int*> >();
+-    test_copy<input_iterator<const int*>, input_iterator<int*> >();
+     test_copy<input_iterator<const int*>, forward_iterator<int*> >();
+     test_copy<input_iterator<const int*>, bidirectional_iterator<int*> >();
+     test_copy<input_iterator<const int*>, random_access_iterator<int*> >();
+     test_copy<input_iterator<const int*>, int*>();
+ 
+     test_copy<forward_iterator<const int*>, output_iterator<int*> >();
+-    test_copy<forward_iterator<const int*>, input_iterator<int*> >();
+     test_copy<forward_iterator<const int*>, forward_iterator<int*> >();
+     test_copy<forward_iterator<const int*>, bidirectional_iterator<int*> >();
+     test_copy<forward_iterator<const int*>, random_access_iterator<int*> >();
+     test_copy<forward_iterator<const int*>, int*>();
+ 
+     test_copy<bidirectional_iterator<const int*>, output_iterator<int*> >();
+-    test_copy<bidirectional_iterator<const int*>, input_iterator<int*> >();
+     test_copy<bidirectional_iterator<const int*>, forward_iterator<int*> >();
+     test_copy<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
+     test_copy<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
+     test_copy<bidirectional_iterator<const int*>, int*>();
+ 
+     test_copy<random_access_iterator<const int*>, output_iterator<int*> >();
+-    test_copy<random_access_iterator<const int*>, input_iterator<int*> >();
+     test_copy<random_access_iterator<const int*>, forward_iterator<int*> >();
+     test_copy<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
+     test_copy<random_access_iterator<const int*>, random_access_iterator<int*> >();
+     test_copy<random_access_iterator<const int*>, int*>();
+ 
+     test_copy<const int*, output_iterator<int*> >();
+-    test_copy<const int*, input_iterator<int*> >();
+     test_copy<const int*, forward_iterator<int*> >();
+     test_copy<const int*, bidirectional_iterator<int*> >();
+     test_copy<const int*, random_access_iterator<int*> >();
+     test_copy<const int*, int*>();
+ 
++#if TEST_STD_VER > 17
++    test_copy<input_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy<forward_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy<bidirectional_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy<random_access_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy<const int*, contiguous_iterator<int*>>();
++
++    test_copy<contiguous_iterator<const int*>, output_iterator<int*>>();
++    test_copy<contiguous_iterator<const int*>, forward_iterator<int*>>();
++    test_copy<contiguous_iterator<const int*>, bidirectional_iterator<int*>>();
++    test_copy<contiguous_iterator<const int*>, random_access_iterator<int*>>();
++    test_copy<contiguous_iterator<const int*>, int*>();
++#endif
++
+   return true;
+ }
+ 
+diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
+index 6f1743cb221a..78dda56b8b94 100644
+--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
+@@ -53,6 +53,17 @@ test()
+     test_copy_backward<const int*, random_access_iterator<int*> >();
+     test_copy_backward<const int*, int*>();
+ 
++#if TEST_STD_VER > 17
++    test_copy_backward<contiguous_iterator<const int*>, bidirectional_iterator<int*>>();
++    test_copy_backward<contiguous_iterator<const int*>, random_access_iterator<int*>>();
++    test_copy_backward<contiguous_iterator<const int*>, int*>();
++
++    test_copy_backward<bidirectional_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy_backward<random_access_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy_backward<contiguous_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy_backward<const int*, contiguous_iterator<int*>>();
++#endif
++
+     return true;
+ }
+ 
+diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
+index 44a075f5306c..ca65631956b3 100644
+--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
+@@ -64,35 +64,30 @@ test1()
+ int main(int, char**)
+ {
+     test<input_iterator<const int*>, output_iterator<int*> >();
+-    test<input_iterator<const int*>, input_iterator<int*> >();
+     test<input_iterator<const int*>, forward_iterator<int*> >();
+     test<input_iterator<const int*>, bidirectional_iterator<int*> >();
+     test<input_iterator<const int*>, random_access_iterator<int*> >();
+     test<input_iterator<const int*>, int*>();
+ 
+     test<forward_iterator<const int*>, output_iterator<int*> >();
+-    test<forward_iterator<const int*>, input_iterator<int*> >();
+     test<forward_iterator<const int*>, forward_iterator<int*> >();
+     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
+     test<forward_iterator<const int*>, random_access_iterator<int*> >();
+     test<forward_iterator<const int*>, int*>();
+ 
+     test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+-    test<bidirectional_iterator<const int*>, input_iterator<int*> >();
+     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
+     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
+     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
+     test<bidirectional_iterator<const int*>, int*>();
+ 
+     test<random_access_iterator<const int*>, output_iterator<int*> >();
+-    test<random_access_iterator<const int*>, input_iterator<int*> >();
+     test<random_access_iterator<const int*>, forward_iterator<int*> >();
+     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
+     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
+     test<random_access_iterator<const int*>, int*>();
+ 
+     test<const int*, output_iterator<int*> >();
+-    test<const int*, input_iterator<int*> >();
+     test<const int*, forward_iterator<int*> >();
+     test<const int*, bidirectional_iterator<int*> >();
+     test<const int*, random_access_iterator<int*> >();
+@@ -100,35 +95,30 @@ int main(int, char**)
+ 
+ #if TEST_STD_VER >= 11
+     test1<input_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+-    test1<input_iterator<std::unique_ptr<int>*>, input_iterator<std::unique_ptr<int>*> >();
+     test1<input_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
+     test1<input_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
+     test1<input_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
+     test1<input_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
+ 
+     test1<forward_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+-    test1<forward_iterator<std::unique_ptr<int>*>, input_iterator<std::unique_ptr<int>*> >();
+     test1<forward_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
+     test1<forward_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
+     test1<forward_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
+     test1<forward_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
+ 
+     test1<bidirectional_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+-    test1<bidirectional_iterator<std::unique_ptr<int>*>, input_iterator<std::unique_ptr<int>*> >();
+     test1<bidirectional_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
+     test1<bidirectional_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
+     test1<bidirectional_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
+     test1<bidirectional_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
+ 
+     test1<random_access_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+-    test1<random_access_iterator<std::unique_ptr<int>*>, input_iterator<std::unique_ptr<int>*> >();
+     test1<random_access_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
+     test1<random_access_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
+     test1<random_access_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
+     test1<random_access_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
+ 
+     test1<std::unique_ptr<int>*, output_iterator<std::unique_ptr<int>*> >();
+-    test1<std::unique_ptr<int>*, input_iterator<std::unique_ptr<int>*> >();
+     test1<std::unique_ptr<int>*, forward_iterator<std::unique_ptr<int>*> >();
+     test1<std::unique_ptr<int>*, bidirectional_iterator<std::unique_ptr<int>*> >();
+     test1<std::unique_ptr<int>*, random_access_iterator<std::unique_ptr<int>*> >();
+@@ -136,34 +126,70 @@ int main(int, char**)
+ #endif // TEST_STD_VER >= 11
+ 
+ #if TEST_STD_VER > 17
++    test<input_iterator<const int*>, contiguous_iterator<int*>>();
++    test<forward_iterator<const int*>, contiguous_iterator<int*>>();
++    test<bidirectional_iterator<const int*>, contiguous_iterator<int*>>();
++    test<random_access_iterator<const int*>, contiguous_iterator<int*>>();
++    test<const int*, contiguous_iterator<int*>>();
++    test<contiguous_iterator<const int*>, output_iterator<int*>>();
++    test<contiguous_iterator<const int*>, forward_iterator<int*>>();
++    test<contiguous_iterator<const int*>, bidirectional_iterator<int*>>();
++    test<contiguous_iterator<const int*>, random_access_iterator<int*>>();
++    test<contiguous_iterator<const int*>, int*>();
++    test<contiguous_iterator<const int*>, contiguous_iterator<int*>>();
++
++    test1<input_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<forward_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<bidirectional_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<random_access_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<std::unique_ptr<int>*, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++
+     static_assert(test<input_iterator<const int*>, input_iterator<int*> >());
+     static_assert(test<input_iterator<const int*>, forward_iterator<int*> >());
+     static_assert(test<input_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<input_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<input_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<input_iterator<const int*>, int*>());
+ 
+     static_assert(test<forward_iterator<const int*>, input_iterator<int*> >());
+     static_assert(test<forward_iterator<const int*>, forward_iterator<int*> >());
+     static_assert(test<forward_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<forward_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<forward_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<forward_iterator<const int*>, int*>());
+ 
+     static_assert(test<bidirectional_iterator<const int*>, input_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, forward_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<bidirectional_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, int*>());
+ 
+     static_assert(test<random_access_iterator<const int*>, input_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, forward_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<random_access_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, int*>());
+ 
++    static_assert(test<contiguous_iterator<const int*>, input_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, forward_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, bidirectional_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, contiguous_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, int*>());
++
+     static_assert(test<const int*, input_iterator<int*> >());
+     static_assert(test<const int*, forward_iterator<int*> >());
+     static_assert(test<const int*, bidirectional_iterator<int*> >());
+     static_assert(test<const int*, random_access_iterator<int*> >());
++    static_assert(test<const int*, contiguous_iterator<int*> >());
+     static_assert(test<const int*, int*>());
+ #endif  // TEST_STD_VER > 17
+ 
+diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
+index ec7371c6d24c..2e43cd20b148 100644
+--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
+@@ -89,16 +89,40 @@ int main(int, char**)
+ #endif // TEST_STD_VER >= 11
+ 
+ #if TEST_STD_VER > 17
++    test<bidirectional_iterator<const int*>, contiguous_iterator<int*>>();
++    test<random_access_iterator<const int*>, contiguous_iterator<int*>>();
++    test<const int*, contiguous_iterator<int*>>();
++    test<contiguous_iterator<const int*>, bidirectional_iterator<int*>>();
++    test<contiguous_iterator<const int*>, random_access_iterator<int*>>();
++    test<contiguous_iterator<const int*>, int*>();
++    test<contiguous_iterator<const int*>, contiguous_iterator<int*>>();
++
++    test1<bidirectional_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<random_access_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<std::unique_ptr<int>*, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++
+     static_assert(test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<bidirectional_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, int*>());
+ 
+     static_assert(test<random_access_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<random_access_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, int*>());
+ 
++    static_assert(test<contiguous_iterator<const int*>, bidirectional_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, contiguous_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, int*>());
++
+     static_assert(test<const int*, bidirectional_iterator<int*> >());
+     static_assert(test<const int*, random_access_iterator<int*> >());
++    static_assert(test<const int*, contiguous_iterator<int*> >());
+     static_assert(test<const int*, int*>());
+ #endif  // TEST_STD_VER > 17
+ 
+diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp
+index 41ea82cc4845..d719f002351d 100644
+--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp
+@@ -79,22 +79,37 @@ int main(int, char**)
+     test_pointers<17, int, random_access_iterator<int**> >();
+ 
+ #if TEST_STD_VER >= 20
++    test<7, int, contiguous_iterator<int*>>();
++    test<257, int, contiguous_iterator<int*>>();
++    test<7, MoveOnly, contiguous_iterator<MoveOnly*>>();
++    test<257, MoveOnly, contiguous_iterator<MoveOnly*>>();
++    test_pointers<17, char, contiguous_iterator<char**>>();
++    test_pointers<17, const char, contiguous_iterator<const char**>>();
++    test_pointers<17, int, contiguous_iterator<int**>>();
++
+     static_assert(test<7, int, int*>());
+     static_assert(test<7, int, random_access_iterator<int*>>());
++    static_assert(test<7, int, contiguous_iterator<int*>>());
+     static_assert(test<257, int, int*>());
+     static_assert(test<257, int, random_access_iterator<int*>>());
++    static_assert(test<257, int, contiguous_iterator<int*>>());
+ 
+     static_assert(test<7, MoveOnly, MoveOnly*>());
+     static_assert(test<7, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<7, MoveOnly, contiguous_iterator<MoveOnly*>>());
+     static_assert(test<257, MoveOnly, MoveOnly*>());
+     static_assert(test<257, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<257, MoveOnly, contiguous_iterator<MoveOnly*>>());
+ 
+     static_assert(test_pointers<17, char, char**>());
+     static_assert(test_pointers<17, char, random_access_iterator<char**>>());
++    static_assert(test_pointers<17, char, contiguous_iterator<char**>>());
+     static_assert(test_pointers<17, const char, const char**>());
+     static_assert(test_pointers<17, const char, random_access_iterator<const char**>>());
++    static_assert(test_pointers<17, const char, contiguous_iterator<const char**>>());
+     static_assert(test_pointers<17, int, int**>());
+     static_assert(test_pointers<17, int, random_access_iterator<int**>>());
++    static_assert(test_pointers<17, int, contiguous_iterator<int**>>());
+ #endif
+ 
+     return 0;
+diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp
+index 48f057ab8a7f..bfdefedb7f34 100644
+--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp
+@@ -80,22 +80,37 @@ int main(int, char**)
+     test_pointers<17, int, random_access_iterator<int**> >();
+ 
+ #if TEST_STD_VER >= 20
++    test<7, int, contiguous_iterator<int*>>();
++    test<257, int, contiguous_iterator<int*>>();
++    test<7, MoveOnly, contiguous_iterator<MoveOnly*>>();
++    test<257, MoveOnly, contiguous_iterator<MoveOnly*>>();
++    test_pointers<17, char, contiguous_iterator<char**>>();
++    test_pointers<17, const char, contiguous_iterator<const char**>>();
++    test_pointers<17, int, contiguous_iterator<int**>>();
++
+     static_assert(test<7, int, int*>());
+     static_assert(test<7, int, random_access_iterator<int*>>());
++    static_assert(test<7, int, contiguous_iterator<int*>>());
+     static_assert(test<257, int, int*>());
+     static_assert(test<257, int, random_access_iterator<int*>>());
++    static_assert(test<257, int, contiguous_iterator<int*>>());
+ 
+     static_assert(test<7, MoveOnly, MoveOnly*>());
+     static_assert(test<7, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<7, MoveOnly, contiguous_iterator<MoveOnly*>>());
+     static_assert(test<257, MoveOnly, MoveOnly*>());
+     static_assert(test<257, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<257, MoveOnly, contiguous_iterator<MoveOnly*>>());
+ 
+     static_assert(test_pointers<17, char, char**>());
+     static_assert(test_pointers<17, char, random_access_iterator<char**>>());
++    static_assert(test_pointers<17, char, contiguous_iterator<char**>>());
+     static_assert(test_pointers<17, const char, const char**>());
+     static_assert(test_pointers<17, const char, random_access_iterator<const char**>>());
++    static_assert(test_pointers<17, const char, contiguous_iterator<const char**>>());
+     static_assert(test_pointers<17, int, int**>());
+     static_assert(test_pointers<17, int, random_access_iterator<int**>>());
++    static_assert(test_pointers<17, int, contiguous_iterator<int**>>());
+ #endif
+ 
+     return 0;
+diff --git a/libcxx/test/support/test_iterators.h b/libcxx/test/support/test_iterators.h
+index 71ef2d58628b..7ada4bb36553 100644
+--- a/libcxx/test/support/test_iterators.h
++++ b/libcxx/test/support/test_iterators.h
+@@ -315,6 +315,8 @@ operator-(const random_access_iterator<T>& x, const random_access_iterator<U>& y
+ template <class It>
+ class contiguous_iterator
+ {
++    static_assert(std::is_pointer_v<It>, "Things probably break in this case");
++
+     It it_;
+ 
+     template <class U> friend class contiguous_iterator;
+@@ -324,14 +326,14 @@ public:
+     typedef typename std::iterator_traits<It>::difference_type difference_type;
+     typedef It                                                 pointer;
+     typedef typename std::iterator_traits<It>::reference       reference;
+-    typedef typename std::iterator_traits<It>::value_type      element_type;
++    typedef typename std::remove_pointer<It>::type             element_type;
+ 
+     TEST_CONSTEXPR_CXX14 It base() const {return it_;}
+ 
+     TEST_CONSTEXPR_CXX14 contiguous_iterator() : it_() {}
+     explicit TEST_CONSTEXPR_CXX14 contiguous_iterator(It it) : it_(it) {}
+     template <class U>
+-        TEST_CONSTEXPR_CXX14 contiguous_iterator(const contiguous_iterator<U>& u) :it_(u.it_) {}
++        TEST_CONSTEXPR_CXX14 contiguous_iterator(const contiguous_iterator<U>& u) : it_(u.it_) {}
+ 
+     TEST_CONSTEXPR_CXX14 reference operator*() const {return *it_;}
+     TEST_CONSTEXPR_CXX14 pointer operator->() const {return it_;}
diff --git a/sys-devel/llvm/files/cherry/8e8d214c4a6c417e42996faeb9211a5c2e32111f.patch b/sys-devel/llvm/files/cherry/8e8d214c4a6c417e42996faeb9211a5c2e32111f.patch
new file mode 100644
index 0000000..e8da8c7
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/8e8d214c4a6c417e42996faeb9211a5c2e32111f.patch
@@ -0,0 +1,213 @@
+commit 8e8d214c4a6c417e42996faeb9211a5c2e32111f
+Author: Roman Lebedev <lebedev.ri@gmail.com>
+Date:   Sun Jan 10 16:25:15 2021 +0300
+
+    [NFCI][SimplifyCFG] Prefer to add Insert edges before Delete edges into DomTreeUpdater, if reasonable
+    
+    This has a measurable impact on the number of DomTree recalculations.
+    While this doesn't handle all the cases,
+    it deals with the most obvious ones.
+
+diff --git a/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp b/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp
+index c0edde8648f5..44b9ddd3e1ee 100644
+--- a/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp
++++ b/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp
+@@ -141,11 +141,11 @@ static bool mergeEmptyReturnBlocks(Function &F, DomTreeUpdater *DTU) {
+       // All predecessors of BB should now branch to RetBlock instead.
+       if (DTU) {
+         for (auto *Predecessor : predecessors(&BB)) {
+-          Updates.push_back({DominatorTree::Delete, Predecessor, &BB});
+           // But, iff Predecessor already branches to RetBlock,
+           // don't (re-)add DomTree edge, because it already exists.
+           if (!is_contained(successors(Predecessor), RetBlock))
+             Updates.push_back({DominatorTree::Insert, Predecessor, RetBlock});
++          Updates.push_back({DominatorTree::Delete, Predecessor, &BB});
+         }
+       }
+       BB.replaceAllUsesWith(RetBlock);
+diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
+index 0b3a25902c69..bfad88f64c7d 100644
+--- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
++++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
+@@ -1395,11 +1395,11 @@ BasicBlock *llvm::CreateControlFlowHub(
+   SmallVector<DominatorTree::UpdateType, 16> Updates;
+   if (DTU) {
+     for (auto In : Incoming) {
++      Updates.push_back({DominatorTree::Insert, In, FirstGuardBlock});
+       for (auto Succ : successors(In)) {
+         if (Outgoing.count(Succ))
+           Updates.push_back({DominatorTree::Delete, In, Succ});
+       }
+-      Updates.push_back({DominatorTree::Insert, In, FirstGuardBlock});
+     }
+   }
+ 
+diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
+index 76bc8369fe5b..52e71ad164a5 100644
+--- a/llvm/lib/Transforms/Utils/Local.cpp
++++ b/llvm/lib/Transforms/Utils/Local.cpp
+@@ -735,13 +735,13 @@ void llvm::MergeBasicBlockIntoOnlyPred(BasicBlock *DestBB,
+   SmallVector<DominatorTree::UpdateType, 32> Updates;
+ 
+   if (DTU) {
+-    Updates.push_back({DominatorTree::Delete, PredBB, DestBB});
+     for (auto I = pred_begin(PredBB), E = pred_end(PredBB); I != E; ++I) {
+-      Updates.push_back({DominatorTree::Delete, *I, PredBB});
+       // This predecessor of PredBB may already have DestBB as a successor.
+       if (!llvm::is_contained(successors(*I), DestBB))
+         Updates.push_back({DominatorTree::Insert, *I, DestBB});
++      Updates.push_back({DominatorTree::Delete, *I, PredBB});
+     }
++    Updates.push_back({DominatorTree::Delete, PredBB, DestBB});
+   }
+ 
+   // Zap anything that took the address of DestBB.  Not doing this will give the
+@@ -1046,16 +1046,16 @@ bool llvm::TryToSimplifyUncondBranchFromEmptyBlock(BasicBlock *BB,
+ 
+   SmallVector<DominatorTree::UpdateType, 32> Updates;
+   if (DTU) {
+-    Updates.push_back({DominatorTree::Delete, BB, Succ});
+     // All predecessors of BB will be moved to Succ.
+     SmallSetVector<BasicBlock *, 8> Predecessors(pred_begin(BB), pred_end(BB));
+     Updates.reserve(Updates.size() + 2 * Predecessors.size());
+     for (auto *Predecessor : Predecessors) {
+-      Updates.push_back({DominatorTree::Delete, Predecessor, BB});
+       // This predecessor of BB may already have Succ as a successor.
+       if (!llvm::is_contained(successors(Predecessor), Succ))
+         Updates.push_back({DominatorTree::Insert, Predecessor, Succ});
++      Updates.push_back({DominatorTree::Delete, Predecessor, BB});
+     }
++    Updates.push_back({DominatorTree::Delete, BB, Succ});
+   }
+ 
+   if (isa<PHINode>(Succ->begin())) {
+diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+index 4bcbffda6a61..62cab573a819 100644
+--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
++++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+@@ -2495,8 +2495,8 @@ static bool FoldCondBranchOnPHI(BranchInst *BI, DomTreeUpdater *DTU,
+         PredBBTI->setSuccessor(i, EdgeBB);
+       }
+ 
+-    Updates.push_back({DominatorTree::Delete, PredBB, BB});
+     Updates.push_back({DominatorTree::Insert, PredBB, EdgeBB});
++    Updates.push_back({DominatorTree::Delete, PredBB, BB});
+ 
+     if (DTU)
+       DTU->applyUpdates(Updates);
+@@ -2664,9 +2664,9 @@ static bool FoldTwoEntryPHINode(PHINode *PN, const TargetTransformInfo &TTI,
+ 
+   SmallVector<DominatorTree::UpdateType, 3> Updates;
+   if (DTU) {
++    Updates.push_back({DominatorTree::Insert, DomBlock, BB});
+     for (auto *Successor : successors(DomBlock))
+       Updates.push_back({DominatorTree::Delete, DomBlock, Successor});
+-    Updates.push_back({DominatorTree::Insert, DomBlock, BB});
+   }
+ 
+   OldTI->eraseFromParent();
+@@ -3149,8 +3149,8 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, DomTreeUpdater *DTU,
+       } else
+         PBI->setMetadata(LLVMContext::MD_prof, nullptr);
+ 
+-      Updates.push_back({DominatorTree::Delete, PredBlock, BB});
+       Updates.push_back({DominatorTree::Insert, PredBlock, UniqueSucc});
++      Updates.push_back({DominatorTree::Delete, PredBlock, BB});
+     } else {
+       // Update PHI nodes in the common successors.
+       for (unsigned i = 0, e = PHIs.size(); i != e; ++i) {
+@@ -3581,8 +3581,9 @@ static bool tryWidenCondBranchToCondBranch(BranchInst *PBI, BranchInst *BI,
+     OldSuccessor->removePredecessor(BI->getParent());
+     BI->setSuccessor(1, IfFalseBB);
+     if (DTU)
+-      DTU->applyUpdates({{DominatorTree::Delete, BI->getParent(), OldSuccessor},
+-                         {DominatorTree::Insert, BI->getParent(), IfFalseBB}});
++      DTU->applyUpdates(
++          {{DominatorTree::Insert, BI->getParent(), IfFalseBB},
++           {DominatorTree::Delete, BI->getParent(), OldSuccessor}});
+     return true;
+   }
+   if (BI->getSuccessor(0) != IfFalseBB && // no inf looping
+@@ -3592,8 +3593,9 @@ static bool tryWidenCondBranchToCondBranch(BranchInst *PBI, BranchInst *BI,
+     OldSuccessor->removePredecessor(BI->getParent());
+     BI->setSuccessor(0, IfFalseBB);
+     if (DTU)
+-      DTU->applyUpdates({{DominatorTree::Delete, BI->getParent(), OldSuccessor},
+-                         {DominatorTree::Insert, BI->getParent(), IfFalseBB}});
++      DTU->applyUpdates(
++          {{DominatorTree::Insert, BI->getParent(), IfFalseBB},
++           {DominatorTree::Delete, BI->getParent(), OldSuccessor}});
+     return true;
+   }
+   return false;
+@@ -3711,6 +3713,7 @@ static bool SimplifyCondBranchToCondBranch(BranchInst *PBI, BranchInst *BI,
+   // case, it would be unsafe to hoist the operation into a select instruction.
+ 
+   BasicBlock *CommonDest = PBI->getSuccessor(PBIOp);
++  BasicBlock *RemovedDest = PBI->getSuccessor(PBIOp ^ 1);
+   unsigned NumPhis = 0;
+   for (BasicBlock::iterator II = CommonDest->begin(); isa<PHINode>(II);
+        ++II, ++NumPhis) {
+@@ -3773,16 +3776,13 @@ static bool SimplifyCondBranchToCondBranch(BranchInst *PBI, BranchInst *BI,
+   // Merge the conditions.
+   Value *Cond = Builder.CreateOr(PBICond, BICond, "brmerge");
+ 
+-  for (auto *Successor : successors(PBI->getParent()))
+-    Updates.push_back({DominatorTree::Delete, PBI->getParent(), Successor});
+-
+   // Modify PBI to branch on the new condition to the new dests.
+   PBI->setCondition(Cond);
+   PBI->setSuccessor(0, CommonDest);
+   PBI->setSuccessor(1, OtherDest);
+ 
+-  for (auto *Successor : successors(PBI->getParent()))
+-    Updates.push_back({DominatorTree::Insert, PBI->getParent(), Successor});
++  Updates.push_back({DominatorTree::Insert, PBI->getParent(), OtherDest});
++  Updates.push_back({DominatorTree::Delete, PBI->getParent(), RemovedDest});
+ 
+   if (DTU)
+     DTU->applyUpdates(Updates);
+@@ -4503,8 +4503,8 @@ static bool removeEmptyCleanup(CleanupReturnInst *RI, DomTreeUpdater *DTU) {
+     } else {
+       Instruction *TI = PredBB->getTerminator();
+       TI->replaceUsesOfWith(BB, UnwindDest);
+-      Updates.push_back({DominatorTree::Delete, PredBB, BB});
+       Updates.push_back({DominatorTree::Insert, PredBB, UnwindDest});
++      Updates.push_back({DominatorTree::Delete, PredBB, BB});
+     }
+   }
+ 
+@@ -4764,10 +4764,10 @@ bool SimplifyCFGOpt::simplifyUnreachable(UnreachableInst *UI) {
+           // Redirect all predecessors of the block containing CatchSwitchInst
+           // to instead branch to the CatchSwitchInst's unwind destination.
+           for (auto *PredecessorOfPredecessor : predecessors(Predecessor)) {
+-            Updates.push_back(
+-                {DominatorTree::Delete, PredecessorOfPredecessor, Predecessor});
+             Updates.push_back({DominatorTree::Insert, PredecessorOfPredecessor,
+                                CSI->getUnwindDest()});
++            Updates.push_back(
++                {DominatorTree::Delete, PredecessorOfPredecessor, Predecessor});
+           }
+           Predecessor->replaceAllUsesWith(CSI->getUnwindDest());
+         } else {
+@@ -4834,8 +4834,8 @@ static void createUnreachableSwitchDefault(SwitchInst *Switch,
+   auto *OrigDefaultBlock = Switch->getDefaultDest();
+   Switch->setDefaultDest(&*NewDefaultBlock);
+   if (DTU)
+-    DTU->applyUpdates({{DominatorTree::Delete, BB, OrigDefaultBlock},
+-                       {DominatorTree::Insert, BB, &*NewDefaultBlock}});
++    DTU->applyUpdates({{DominatorTree::Insert, BB, &*NewDefaultBlock},
++                       {DominatorTree::Delete, BB, OrigDefaultBlock}});
+   SplitBlock(&*NewDefaultBlock, &NewDefaultBlock->front(),
+              DTU ? &DTU->getDomTree() : nullptr);
+   SmallVector<DominatorTree::UpdateType, 2> Updates;
+@@ -6344,8 +6344,8 @@ static bool TryToMergeLandingPad(LandingPadInst *LPad, BranchInst *BI,
+       assert(II->getNormalDest() != BB && II->getUnwindDest() == BB &&
+              "unexpected successor");
+       II->setUnwindDest(OtherPred);
+-      Updates.push_back({DominatorTree::Delete, Pred, BB});
+       Updates.push_back({DominatorTree::Insert, Pred, OtherPred});
++      Updates.push_back({DominatorTree::Delete, Pred, BB});
+     }
+ 
+     // The debug info in OtherPred doesn't cover the merged control flow that
diff --git a/sys-devel/llvm/files/cherry/9083d0a40d980928f2f45236a4616528a7ab19ce.patch b/sys-devel/llvm/files/cherry/9083d0a40d980928f2f45236a4616528a7ab19ce.patch
new file mode 100644
index 0000000..28c492f
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/9083d0a40d980928f2f45236a4616528a7ab19ce.patch
@@ -0,0 +1,227 @@
+commit 9083d0a40d980928f2f45236a4616528a7ab19ce
+Author: einvbri <vince.a.bridgers@ericsson.com>
+Date:   Mon Feb 8 06:38:31 2021 -0600
+
+    Revert "[Sema] Fix -Warray-bounds false negative when casting an out-of-bounds array item"
+    
+    This reverts commit e48f444751cf781c42934b242b81f549da77bad0.
+    
+    thakis noticed false reports, so reverting this change for now until
+    those can be sorted out.
+    
+    See https://reviews.llvm.org/D71714
+
+diff --git a/clang/include/clang/Sema/Sema.h b/clang/include/clang/Sema/Sema.h
+index 68420fcbb85f..8b5619945865 100644
+--- a/clang/include/clang/Sema/Sema.h
++++ b/clang/include/clang/Sema/Sema.h
+@@ -12313,7 +12313,7 @@ private:
+   void CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr,
+                         const ArraySubscriptExpr *ASE=nullptr,
+                         bool AllowOnePastEnd=true, bool IndexNegated=false);
+-  void CheckArrayAccess(const Expr *E, int AllowOnePastEnd = 0);
++  void CheckArrayAccess(const Expr *E);
+   // Used to grab the relevant information from a FormatAttr and a
+   // FunctionDeclaration.
+   struct FormatStringInfo {
+diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
+index 17dd5c9e8d99..2d3d36f4adad 100644
+--- a/clang/lib/Sema/SemaChecking.cpp
++++ b/clang/lib/Sema/SemaChecking.cpp
+@@ -14387,63 +14387,62 @@ void Sema::CheckArrayAccess(const Expr *BaseExpr, const Expr *IndexExpr,
+                         PDiag(diag::note_array_declared_here) << ND);
+ }
+ 
+-void Sema::CheckArrayAccess(const Expr *expr, int AllowOnePastEnd) {
+-  if (!expr)
+-    return;
+-
+-  expr = expr->IgnoreParenCasts();
+-  switch (expr->getStmtClass()) {
+-  case Stmt::ArraySubscriptExprClass: {
+-    const ArraySubscriptExpr *ASE = cast<ArraySubscriptExpr>(expr);
+-    CheckArrayAccess(ASE->getBase(), ASE->getIdx(), ASE, AllowOnePastEnd > 0);
+-    CheckArrayAccess(ASE->getBase(), AllowOnePastEnd);
+-    return;
+-  }
+-  case Stmt::MemberExprClass: {
+-    expr = cast<MemberExpr>(expr)->getBase();
+-    CheckArrayAccess(expr, /*AllowOnePastEnd=*/0);
+-    return;
+-  }
+-  case Stmt::OMPArraySectionExprClass: {
+-    const OMPArraySectionExpr *ASE = cast<OMPArraySectionExpr>(expr);
+-    if (ASE->getLowerBound())
+-      CheckArrayAccess(ASE->getBase(), ASE->getLowerBound(),
+-                       /*ASE=*/nullptr, AllowOnePastEnd > 0);
+-    return;
+-  }
+-  case Stmt::UnaryOperatorClass: {
+-    // Only unwrap the * and & unary operators
+-    const UnaryOperator *UO = cast<UnaryOperator>(expr);
+-    expr = UO->getSubExpr();
+-    switch (UO->getOpcode()) {
+-    case UO_AddrOf:
+-      AllowOnePastEnd++;
+-      break;
+-    case UO_Deref:
+-      AllowOnePastEnd--;
+-      break;
+-    default:
+-      return;
++void Sema::CheckArrayAccess(const Expr *expr) {
++  int AllowOnePastEnd = 0;
++  while (expr) {
++    expr = expr->IgnoreParenImpCasts();
++    switch (expr->getStmtClass()) {
++      case Stmt::ArraySubscriptExprClass: {
++        const ArraySubscriptExpr *ASE = cast<ArraySubscriptExpr>(expr);
++        CheckArrayAccess(ASE->getBase(), ASE->getIdx(), ASE,
++                         AllowOnePastEnd > 0);
++        expr = ASE->getBase();
++        break;
++      }
++      case Stmt::MemberExprClass: {
++        expr = cast<MemberExpr>(expr)->getBase();
++        break;
++      }
++      case Stmt::OMPArraySectionExprClass: {
++        const OMPArraySectionExpr *ASE = cast<OMPArraySectionExpr>(expr);
++        if (ASE->getLowerBound())
++          CheckArrayAccess(ASE->getBase(), ASE->getLowerBound(),
++                           /*ASE=*/nullptr, AllowOnePastEnd > 0);
++        return;
++      }
++      case Stmt::UnaryOperatorClass: {
++        // Only unwrap the * and & unary operators
++        const UnaryOperator *UO = cast<UnaryOperator>(expr);
++        expr = UO->getSubExpr();
++        switch (UO->getOpcode()) {
++          case UO_AddrOf:
++            AllowOnePastEnd++;
++            break;
++          case UO_Deref:
++            AllowOnePastEnd--;
++            break;
++          default:
++            return;
++        }
++        break;
++      }
++      case Stmt::ConditionalOperatorClass: {
++        const ConditionalOperator *cond = cast<ConditionalOperator>(expr);
++        if (const Expr *lhs = cond->getLHS())
++          CheckArrayAccess(lhs);
++        if (const Expr *rhs = cond->getRHS())
++          CheckArrayAccess(rhs);
++        return;
++      }
++      case Stmt::CXXOperatorCallExprClass: {
++        const auto *OCE = cast<CXXOperatorCallExpr>(expr);
++        for (const auto *Arg : OCE->arguments())
++          CheckArrayAccess(Arg);
++        return;
++      }
++      default:
++        return;
+     }
+-    CheckArrayAccess(expr, AllowOnePastEnd);
+-    return;
+-  }
+-  case Stmt::ConditionalOperatorClass: {
+-    const ConditionalOperator *cond = cast<ConditionalOperator>(expr);
+-    if (const Expr *lhs = cond->getLHS())
+-      CheckArrayAccess(lhs, AllowOnePastEnd);
+-    if (const Expr *rhs = cond->getRHS())
+-      CheckArrayAccess(rhs, AllowOnePastEnd);
+-    return;
+-  }
+-  case Stmt::CXXOperatorCallExprClass: {
+-    const auto *OCE = cast<CXXOperatorCallExpr>(expr);
+-    for (const auto *Arg : OCE->arguments())
+-      CheckArrayAccess(Arg);
+-    return;
+-  }
+-  default:
+-    return;
+   }
+ }
+ 
+diff --git a/clang/test/Parser/cxx-ambig-decl-expr.cpp b/clang/test/Parser/cxx-ambig-decl-expr.cpp
+index 373fe250c6b5..6203db2fbd22 100644
+--- a/clang/test/Parser/cxx-ambig-decl-expr.cpp
++++ b/clang/test/Parser/cxx-ambig-decl-expr.cpp
+@@ -24,7 +24,7 @@ void arr() {
+ 
+   // This is array indexing not an array declarator because a comma expression
+   // is not syntactically a constant-expression.
+-  int(x[1,0]); // expected-warning 2{{unused}}
++  int(x[1,1]); // expected-warning 2{{unused}}
+ 
+   // This is array indexing not an array declaration because a braced-init-list
+   // is not syntactically a constant-expression.
+diff --git a/clang/test/SemaCXX/array-bounds.cpp b/clang/test/SemaCXX/array-bounds.cpp
+index 837175014fe5..47be6c2423dc 100644
+--- a/clang/test/SemaCXX/array-bounds.cpp
++++ b/clang/test/SemaCXX/array-bounds.cpp
+@@ -27,7 +27,7 @@ template <char *sz> class Qux {
+ };
+ 
+ void f1(int a[1]) {
+-  int val = a[3]; // no warning for function argument
++  int val = a[3]; // no warning for function argumnet
+ }
+ 
+ void f2(const int (&a)[2]) { // expected-note {{declared here}}
+@@ -133,7 +133,7 @@ int test_pr9296() {
+ 
+ int test_sizeof_as_condition(int flag) {
+   int arr[2] = { 0, 0 }; // expected-note {{array 'arr' declared here}}
+-  if (flag)
++  if (flag) 
+     return sizeof(char) != sizeof(char) ? arr[2] : arr[1];
+   return sizeof(char) == sizeof(char) ? arr[2] : arr[1]; // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
+ }
+@@ -241,7 +241,7 @@ void test_pr10771() {
+ }
+ 
+ int test_pr11007_aux(const char * restrict, ...);
+-
++  
+ // Test checking with varargs.
+ void test_pr11007() {
+   double a[5]; // expected-note {{array 'a' declared here}}
+@@ -320,33 +320,3 @@ void test() {
+   arr<float>[1] = 0; // expected-warning {{array index 1 is past the end of the array (which contains 1 element)}}
+ }
+ } // namespace var_template_array
+-
+-namespace PR44343 {
+-  const unsigned int array[2] = {0, 1}; // expected-note 5{{array 'array' declared here}}
+-
+-  const int i1 = (const int)array[2]; // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
+-  const int i2 = static_cast<const int>(array[2]); // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
+-  const int &i3 = reinterpret_cast<const int&>(array[2]); // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
+-  unsigned int &i4 = const_cast<unsigned int&>(array[2]); // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
+-  int i5 = int(array[2]); // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
+-  const unsigned int *i6 = &(1 > 0 ? array[2] : array[1]); // no warning for one-past-end element's address retrieval
+-
+-  // Test dynamic cast
+-  struct Base {
+-    virtual ~Base();
+-  };
+-  struct Derived : Base {
+-  };
+-  Base baseArr[2]; // expected-note {{array 'baseArr' declared here}}
+-  Derived *d1 = dynamic_cast<Derived *>(&baseArr[2]); // FIXME: Should actually warn because dynamic_cast accesses the vptr
+-  Derived &d2 = dynamic_cast<Derived &>(baseArr[2]); // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
+-
+-  // Test operator `&` in combination with operators `.` and `->`
+-  struct A {
+-    int n;
+-  };
+-  A a[2]; // expected-note {{array 'a' declared here}}
+-  int *n = &a[2].n; // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
+-  A *aPtr[2]; // expected-note {{array 'aPtr' declared here}}
+-  int *n2 = &aPtr[2]->n; // expected-warning {{array index 2 is past the end of the array (which contains 2 elements)}}
+-}
diff --git a/sys-devel/llvm/files/cherry/9830901b341cfb884cdef00e0335c6e3e62d107a.patch b/sys-devel/llvm/files/cherry/9830901b341cfb884cdef00e0335c6e3e62d107a.patch
new file mode 100644
index 0000000..bd13295
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/9830901b341cfb884cdef00e0335c6e3e62d107a.patch
@@ -0,0 +1,115 @@
+commit 9830901b341cfb884cdef00e0335c6e3e62d107a
+Author: Christopher Di Bella <cjdb@google.com>
+Date:   Fri Feb 26 00:11:25 2021 +0000
+
+    [clang] removes check against integral-to-pointer conversion...
+    
+    ... unless it's a literal
+    
+    D94640 was a bit too aggressive in its analysis, considering integers
+    representing valid addresses as invalid. This change rolls back some of
+    the check, so that only the most obvious case is still flagged.
+    
+    Before:
+    
+    ```cpp
+    free((void*)1000);   // literal converted to `void*`: warning good
+    free((void*)an_int); // `int` object converted to `void*`: warning might
+                         //  be a false positive
+    ```
+    
+    After
+    
+    ```cpp
+    free((void*)1000);   // literal converted to `void*`: warning good
+    free((void*)an_int); // doesn't warn
+    ```
+    
+    Differential Revision: https://reviews.llvm.org/D97512
+
+diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp
+index 7e6dd354caac..22dd634c5031 100644
+--- a/clang/lib/Sema/SemaChecking.cpp
++++ b/clang/lib/Sema/SemaChecking.cpp
+@@ -10316,11 +10316,18 @@ void CheckFreeArgumentsCast(Sema &S, const std::string &CalleeName,
+                             const CastExpr *Cast) {
+   SmallString<128> SizeString;
+   llvm::raw_svector_ostream OS(SizeString);
++
++  clang::CastKind Kind = Cast->getCastKind();
++  if (Kind == clang::CK_BitCast &&
++      !Cast->getSubExpr()->getType()->isFunctionPointerType())
++    return;
++  if (Kind == clang::CK_IntegralToPointer &&
++      !isa<IntegerLiteral>(
++          Cast->getSubExpr()->IgnoreParenImpCasts()->IgnoreParens()))
++    return;
++
+   switch (Cast->getCastKind()) {
+   case clang::CK_BitCast:
+-    if (!Cast->getSubExpr()->getType()->isFunctionPointerType())
+-      return;
+-    LLVM_FALLTHROUGH;
+   case clang::CK_IntegralToPointer:
+   case clang::CK_FunctionToPointerDecay:
+     OS << '\'';
+diff --git a/clang/test/Analysis/free.c b/clang/test/Analysis/free.c
+index 84d53472158c..59767b5917d7 100644
+--- a/clang/test/Analysis/free.c
++++ b/clang/test/Analysis/free.c
+@@ -108,3 +108,11 @@ void t17(void) {
+   // expected-warning@-1{{Argument to free() is the address of the function 'iptr', which is not memory allocated by malloc()}}
+   // expected-warning@-2{{attempt to call free on non-heap object 'iptr'}}
+ }
++
++struct S {
++  const char* p;
++};
++
++void t18 (struct S s) {
++  free((void*)(unsigned long long)s.p); // no warning
++}
+diff --git a/clang/test/Analysis/free.cpp b/clang/test/Analysis/free.cpp
+index 2559770d6ddb..85b0935a5199 100644
+--- a/clang/test/Analysis/free.cpp
++++ b/clang/test/Analysis/free.cpp
+@@ -208,3 +208,39 @@ void t17b (char **x, int offset) {
+   // Unknown value
+   std::free(x[offset]); // no-warning
+ }
++
++struct S {
++  const char* p;
++};
++
++void t18_C_style_C_style_free (S s) {
++  free((void*)(unsigned long long)s.p); // no warning
++}
++
++void t18_C_style_C_style_std_free (S s) {
++  std::free((void*)(unsigned long long)s.p); // no warning
++}
++
++void t18_C_style_reinterpret_free (S s) {
++  free((void*)reinterpret_cast<unsigned long long>(s.p)); // no warning
++}
++
++void t18_C_style_reinterpret_std_free (S s) {
++  std::free((void*)reinterpret_cast<unsigned long long>(s.p)); // no warning
++}
++
++void t18_reinterpret_C_style_free (S s) {
++  free(reinterpret_cast<void*>((unsigned long long)(s.p))); // no warning
++}
++
++void t18_reinterpret_C_style_std_free (S s) {
++  std::free(reinterpret_cast<void*>((unsigned long long)(s.p))); // no warning
++}
++
++void t18_reinterpret_reinterpret_free (S s) {
++  free(reinterpret_cast<void*>(reinterpret_cast<unsigned long long>(s.p))); // no warning
++}
++
++void t18_reinterpret_reinterpret_std_free (S s) {
++  std::free(reinterpret_cast<void*>(reinterpret_cast<unsigned long long>(s.p))); // no warning
++}
diff --git a/sys-devel/llvm/files/cherry/9ae73cdbc1e59fd3149e60efd2b96e68e8d1669b.patch b/sys-devel/llvm/files/cherry/9ae73cdbc1e59fd3149e60efd2b96e68e8d1669b.patch
new file mode 100644
index 0000000..bde5e03
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/9ae73cdbc1e59fd3149e60efd2b96e68e8d1669b.patch
@@ -0,0 +1,147 @@
+commit 9ae73cdbc1e59fd3149e60efd2b96e68e8d1669b
+Author: David Green <david.green@arm.com>
+Date:   Fri Jan 22 11:11:36 2021 +0000
+
+    [ARM] Adjust isSaturatingConditional to return a new SDValue. NFC
+    
+    This replaces the isSaturatingConditional function with
+    LowerSaturatingConditional that directly returns a new SSAT or
+    USAT SDValue, instead of returning true and the components of it.
+
+diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
+index aabfad045d9f..949d2ffc1714 100644
+--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
++++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
+@@ -5036,17 +5036,13 @@ static bool isLowerSaturate(const SDValue LHS, const SDValue RHS,
+ //     etc.
+ //
+ // LLVM canonicalizes these to either a min(max()) or a max(min())
+-// pattern. This function tries to match one of these and will return true
+-// if successful.
++// pattern. This function tries to match one of these and will return a SSAT
++// node if successful.
+ //
+-// USAT works similarily to SSAT but bounds on the interval [0, k] where k + 1 is
+-// a power of 2.
+-//
+-// It returns true if the conversion can be done, false otherwise.
+-// Additionally, the variable is returned in parameter V, the constant in K and
+-// usat is set to true if the conditional represents an unsigned saturation
+-static bool isSaturatingConditional(const SDValue &Op, SDValue &V,
+-                                    uint64_t &K, bool &Usat) {
++// USAT works similarily to SSAT but bounds on the interval [0, k] where k + 1
++// is a power of 2.
++static SDValue LowerSaturatingConditional(SDValue Op, SelectionDAG &DAG) {
++  EVT VT = Op.getValueType();
+   SDValue V1 = Op.getOperand(0);
+   SDValue K1 = Op.getOperand(1);
+   SDValue TrueVal1 = Op.getOperand(2);
+@@ -5055,7 +5051,7 @@ static bool isSaturatingConditional(const SDValue &Op, SDValue &V,
+ 
+   const SDValue Op2 = isa<ConstantSDNode>(TrueVal1) ? FalseVal1 : TrueVal1;
+   if (Op2.getOpcode() != ISD::SELECT_CC)
+-    return false;
++    return SDValue();
+ 
+   SDValue V2 = Op2.getOperand(0);
+   SDValue K2 = Op2.getOperand(1);
+@@ -5074,41 +5070,39 @@ static bool isSaturatingConditional(const SDValue &Op, SDValue &V,
+ 
+   // Check that the registers and the constants match a max(min()) or min(max())
+   // pattern
+-  if (V1Tmp == TrueVal1 && V2Tmp == TrueVal2 && K1 == FalseVal1 &&
+-      K2 == FalseVal2 &&
+-      ((isGTorGE(CC1) && isLTorLE(CC2)) || (isLTorLE(CC1) && isGTorGE(CC2)))) {
+-
+-    // Check that the constant in the lower-bound check is
+-    // the opposite of the constant in the upper-bound check
+-    // in 1's complement.
+-    if (!isa<ConstantSDNode>(K1) || !isa<ConstantSDNode>(K2))
+-      return false;
++  if (V1Tmp != TrueVal1 || V2Tmp != TrueVal2 || K1 != FalseVal1 ||
++      K2 != FalseVal2 ||
++      !((isGTorGE(CC1) && isLTorLE(CC2)) || (isLTorLE(CC1) && isGTorGE(CC2))))
++    return SDValue();
+ 
+-    int64_t Val1 = cast<ConstantSDNode>(K1)->getSExtValue();
+-    int64_t Val2 = cast<ConstantSDNode>(K2)->getSExtValue();
+-    int64_t PosVal = std::max(Val1, Val2);
+-    int64_t NegVal = std::min(Val1, Val2);
++  // Check that the constant in the lower-bound check is
++  // the opposite of the constant in the upper-bound check
++  // in 1's complement.
++  if (!isa<ConstantSDNode>(K1) || !isa<ConstantSDNode>(K2))
++    return SDValue();
+ 
+-    if (!((Val1 > Val2 && isLTorLE(CC1)) || (Val1 < Val2 && isLTorLE(CC2))) ||
+-        !isPowerOf2_64(PosVal + 1)) 
+-      return false;
++  int64_t Val1 = cast<ConstantSDNode>(K1)->getSExtValue();
++  int64_t Val2 = cast<ConstantSDNode>(K2)->getSExtValue();
++  int64_t PosVal = std::max(Val1, Val2);
++  int64_t NegVal = std::min(Val1, Val2);
+ 
+-    // Handle the difference between USAT (unsigned) and SSAT (signed)
+-    // saturation
+-    if (Val1 == ~Val2)
+-      Usat = false;
+-    else if (NegVal == 0)
+-      Usat = true;
+-    else
+-      return false;
++  if (!((Val1 > Val2 && isLTorLE(CC1)) || (Val1 < Val2 && isLTorLE(CC2))) ||
++      !isPowerOf2_64(PosVal + 1))
++    return SDValue();
+ 
+-    V = V2Tmp;
+-    // At this point, PosVal is guaranteed to be positive
+-    K = (uint64_t) PosVal; 
++  // Handle the difference between USAT (unsigned) and SSAT (signed)
++  // saturation
++  // At this point, PosVal is guaranteed to be positive
++  uint64_t K = PosVal;
++  SDLoc dl(Op);
++  if (Val1 == ~Val2)
++    return DAG.getNode(ARMISD::SSAT, dl, VT, V2Tmp,
++                       DAG.getConstant(countTrailingOnes(K), dl, VT));
++  if (NegVal == 0)
++    return DAG.getNode(ARMISD::USAT, dl, VT, V2Tmp,
++                       DAG.getConstant(countTrailingOnes(K), dl, VT));
+ 
+-    return true;
+-  }
+-  return false;
++  return SDValue();
+ }
+ 
+ // Check if a condition of the type x < k ? k : x can be converted into a
+@@ -5168,18 +5162,9 @@ SDValue ARMTargetLowering::LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const {
+   SDLoc dl(Op);
+ 
+   // Try to convert two saturating conditional selects into a single SSAT
+-  SDValue SatValue;
+-  uint64_t SatConstant;
+-  bool SatUSat;
+-  if (((!Subtarget->isThumb() && Subtarget->hasV6Ops()) || Subtarget->isThumb2()) &&
+-      isSaturatingConditional(Op, SatValue, SatConstant, SatUSat)) {
+-    if (SatUSat)
+-      return DAG.getNode(ARMISD::USAT, dl, VT, SatValue,
+-                         DAG.getConstant(countTrailingOnes(SatConstant), dl, VT));
+-    else
+-      return DAG.getNode(ARMISD::SSAT, dl, VT, SatValue,
+-                         DAG.getConstant(countTrailingOnes(SatConstant), dl, VT));
+-  }
++  if ((!Subtarget->isThumb() && Subtarget->hasV6Ops()) || Subtarget->isThumb2())
++    if (SDValue SatValue = LowerSaturatingConditional(Op, DAG))
++      return SatValue;
+ 
+   // Try to convert expressions of the form x < k ? k : x (and similar forms)
+   // into more efficient bit operations, which is possible when k is 0 or -1
+@@ -5188,6 +5173,7 @@ SDValue ARMTargetLowering::LowerSELECT_CC(SDValue Op, SelectionDAG &DAG) const {
+   // instructions.
+   // Only allow this transformation on full-width (32-bit) operations
+   SDValue LowerSatConstant;
++  SDValue SatValue;
+   if (VT == MVT::i32 &&
+       isLowerSaturatingConditional(Op, SatValue, LowerSatConstant)) {
+     SDValue ShiftV = DAG.getNode(ISD::SRA, dl, VT, SatValue,
diff --git a/sys-devel/llvm/files/cherry/9c895aea118a2f50ca8413372363c3ff6ecc21bf.patch b/sys-devel/llvm/files/cherry/9c895aea118a2f50ca8413372363c3ff6ecc21bf.patch
new file mode 100644
index 0000000..cd1801e
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/9c895aea118a2f50ca8413372363c3ff6ecc21bf.patch
@@ -0,0 +1,253 @@
+commit 9c895aea118a2f50ca8413372363c3ff6ecc21bf
+Author: Kristof Beyls <kristof.beyls@arm.com>
+Date:   Sun Dec 13 18:56:48 2020 +0000
+
+    [ARM] Add clang command line support for -mharden-sls=
+    
+    The command line syntax is identical to the -mharden-sls= command line
+    syntax for AArch64 targets.
+    
+    Differential Revision: https://reviews.llvm.org/D93221
+
+diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td
+index c67cce099a28..e92a4bf1dac5 100644
+--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
++++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
+@@ -348,6 +348,8 @@ def err_invalid_branch_protection: Error <
+   "invalid branch protection option '%0' in '%1'">;
+ def err_invalid_sls_hardening : Error<
+   "invalid sls hardening option '%0' in '%1'">;
++def err_sls_hardening_arm_not_supported : Error<
++  "-mharden-sls is only supported on armv7-a or later">;
+ 
+ def note_drv_command_failed_diag_msg : Note<
+   "diagnostic msg: %0">;
+diff --git a/clang/lib/Driver/ToolChains/Arch/ARM.cpp b/clang/lib/Driver/ToolChains/Arch/ARM.cpp
+index 309a7298300f..ef590db1eecd 100644
+--- a/clang/lib/Driver/ToolChains/Arch/ARM.cpp
++++ b/clang/lib/Driver/ToolChains/Arch/ARM.cpp
+@@ -32,6 +32,12 @@ bool arm::isARMMProfile(const llvm::Triple &Triple) {
+   return llvm::ARM::parseArchProfile(Arch) == llvm::ARM::ProfileKind::M;
+ }
+ 
++// True if A-profile.
++bool arm::isARMAProfile(const llvm::Triple &Triple) {
++  llvm::StringRef Arch = Triple.getArchName();
++  return llvm::ARM::parseArchProfile(Arch) == llvm::ARM::ProfileKind::A;
++}
++
+ // Get Arch/CPU from args.
+ void arm::getARMArchCPUFromArgs(const ArgList &Args, llvm::StringRef &Arch,
+                                 llvm::StringRef &CPU, bool FromAs) {
+@@ -606,6 +612,45 @@ fp16_fml_fallthrough:
+ 
+   if (Args.hasArg(options::OPT_mno_neg_immediates))
+     Features.push_back("+no-neg-immediates");
++
++  // Enable/disable straight line speculation hardening.
++  if (Arg *A = Args.getLastArg(options::OPT_mharden_sls_EQ)) {
++    StringRef Scope = A->getValue();
++    bool EnableRetBr = false;
++    bool EnableBlr = false;
++    if (Scope != "none" && Scope != "all") {
++      SmallVector<StringRef, 4> Opts;
++      Scope.split(Opts, ",");
++      for (auto Opt : Opts) {
++        Opt = Opt.trim();
++        if (Opt == "retbr") {
++          EnableRetBr = true;
++          continue;
++        }
++        if (Opt == "blr") {
++          EnableBlr = true;
++          continue;
++        }
++        D.Diag(diag::err_invalid_sls_hardening)
++            << Scope << A->getAsString(Args);
++        break;
++      }
++    } else if (Scope == "all") {
++      EnableRetBr = true;
++      EnableBlr = true;
++    }
++
++    if (EnableRetBr || EnableBlr)
++      if (!(isARMAProfile(Triple) && getARMSubArchVersionNumber(Triple) >= 7))
++        D.Diag(diag::err_sls_hardening_arm_not_supported)
++            << Scope << A->getAsString(Args);
++
++    if (EnableRetBr)
++      Features.push_back("+harden-sls-retbr");
++    if (EnableBlr)
++      Features.push_back("+harden-sls-blr");
++  }
++
+ }
+ 
+ const std::string arm::getARMArch(StringRef Arch, const llvm::Triple &Triple) {
+diff --git a/clang/lib/Driver/ToolChains/Arch/ARM.h b/clang/lib/Driver/ToolChains/Arch/ARM.h
+index 091c09b160ae..02d91cdaee13 100644
+--- a/clang/lib/Driver/ToolChains/Arch/ARM.h
++++ b/clang/lib/Driver/ToolChains/Arch/ARM.h
+@@ -63,6 +63,7 @@ void getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple,
+                           std::vector<llvm::StringRef> &Features, bool ForAS);
+ int getARMSubArchVersionNumber(const llvm::Triple &Triple);
+ bool isARMMProfile(const llvm::Triple &Triple);
++bool isARMAProfile(const llvm::Triple &Triple);
+ 
+ } // end namespace arm
+ } // end namespace tools
+diff --git a/clang/test/Driver/aarch64-sls-hardening-options.c b/clang/test/Driver/aarch64-sls-hardening-options.c
+deleted file mode 100644
+index 250007aa1254..000000000000
+--- a/clang/test/Driver/aarch64-sls-hardening-options.c
++++ /dev/null
+@@ -1,45 +0,0 @@
+-// Check the -mharden-sls= option, which has a required argument to select
+-// scope.
+-// RUN: %clang -target aarch64--none-eabi -c %s -### 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=none 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=blr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-ON
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=none 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=retbr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=all 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr,retbr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr,r 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=none,blr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
+-
+-// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=all,-blr 2>&1 | \
+-// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
+-
+-// RETBR-OFF-NOT: "harden-sls-retbr"
+-// RETBR-ON:  "+harden-sls-retbr"
+-
+-// BLR-OFF-NOT: "harden-sls-blr"
+-// BLR-ON:  "+harden-sls-blr"
+-
+-// BAD-SLS-SPEC: invalid sls hardening option '{{[^']+}}' in '-mharden-sls=
+diff --git a/clang/test/Driver/sls-hardening-options.c b/clang/test/Driver/sls-hardening-options.c
+new file mode 100644
+index 000000000000..c48b694bc8b7
+--- /dev/null
++++ b/clang/test/Driver/sls-hardening-options.c
+@@ -0,0 +1,97 @@
++// Check the -mharden-sls= option, which has a required argument to select
++// scope.
++// RUN: %clang -target aarch64--none-eabi -c %s -### 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++// RUN: %clang -target armv7a--none-eabi -c %s -### 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=none 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=none 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=blr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-ON
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=blr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-ON
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=none 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=none 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=retbr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=retbr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=all 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=all 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr,retbr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr,retbr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=retbr,blr,r 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr,r 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=none,blr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=none,blr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++
++// RUN: %clang -target aarch64--none-eabi -c %s -### -mharden-sls=all,-blr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++// RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=all,-blr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC
++
++// RETBR-OFF-NOT: "harden-sls-retbr"
++// RETBR-ON:  "+harden-sls-retbr"
++
++// BLR-OFF-NOT: "harden-sls-blr"
++// BLR-ON:  "+harden-sls-blr"
++
++// BAD-SLS-SPEC: invalid sls hardening option '{{[^']+}}' in '-mharden-sls=
++
++// RUN: %clang -target armv6a--none-eabi -c %s -### -mharden-sls=all 2>&1 | \
++// RUN: FileCheck %s --check-prefix=SLS-NOT-SUPPORTED
++
++// RUN: %clang -target armv6a--none-eabi -c %s -### -mharden-sls=retbr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=SLS-NOT-SUPPORTED
++
++// RUN: %clang -target armv6a--none-eabi -c %s -### -mharden-sls=blr 2>&1 | \
++// RUN: FileCheck %s --check-prefix=SLS-NOT-SUPPORTED
++
++// RUN: %clang -target armv7r--none-eabi -c %s -### -mharden-sls=all 2>&1 | \
++// RUN: FileCheck %s --check-prefix=SLS-NOT-SUPPORTED
++
++// RUN: %clang -target armv7m--none-eabi -c %s -### -mharden-sls=all 2>&1 | \
++// RUN: FileCheck %s --check-prefix=SLS-NOT-SUPPORTED
++
++// RUN: %clang -target armv6a--none-eabi -c %s -### -mharden-sls=none 2>&1 | \
++// RUN: FileCheck %s --check-prefix=SLS-SUPPORTED
++
++// RUN: %clang -target armv7a-linux-gnueabihf -c %s -### -mharden-sls=all 2>&1 | \
++// RUN: FileCheck %s --check-prefix=SLS-SUPPORTED
++
++// RUN: %clang -target armv8a-linux-gnueabihf -c %s -### -mharden-sls=all 2>&1 | \
++// RUN: FileCheck %s --check-prefix=SLS-SUPPORTED
++
++// SLS-NOT-SUPPORTED: -mharden-sls is only supported on armv7-a or later
++// SLS-SUPPORTED-NOT: mharden-sls
++
diff --git a/sys-devel/llvm/files/cherry/a4c1f5160e6d1de9a9959ecbf329c2acf4f3ed31.patch b/sys-devel/llvm/files/cherry/a4c1f5160e6d1de9a9959ecbf329c2acf4f3ed31.patch
new file mode 100644
index 0000000..f6c5c2e
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/a4c1f5160e6d1de9a9959ecbf329c2acf4f3ed31.patch
@@ -0,0 +1,587 @@
+commit a4c1f5160e6d1de9a9959ecbf329c2acf4f3ed31
+Author: Kristof Beyls <kristof.beyls@arm.com>
+Date:   Fri Nov 20 16:11:17 2020 +0000
+
+    [ARM] Harden indirect calls against SLS
+    
+    To make sure that no barrier gets placed on the architectural execution
+    path, each indirect call calling the function in register rN, it gets
+    transformed to a direct call to __llvm_slsblr_thunk_mode_rN.  mode is
+    either arm or thumb, depending on the mode of where the indirect call
+    happens.
+    
+    The llvm_slsblr_thunk_mode_rN thunk contains:
+    
+    bx rN
+    <speculation barrier>
+    
+    Therefore, the indirect call gets split into 2; one direct call and one
+    indirect jump.
+    This transformation results in not inserting a speculation barrier on
+    the architectural execution path.
+    
+    The mitigation is off by default and can be enabled by the
+    harden-sls-blr subtarget feature.
+    
+    As a linker is allowed to clobber r12 on function calls, the
+    above code transformation is not correct in case a linker does so.
+    Similarly, the transformation is not correct when register lr is used.
+    Avoiding r12/lr being used is done in a follow-on patch to make
+    reviewing this code easier.
+    
+    Differential Revision: https://reviews.llvm.org/D92468
+
+diff --git a/llvm/lib/Target/ARM/ARM.h b/llvm/lib/Target/ARM/ARM.h
+index 51dfaaa96892..d8a4e4c31012 100644
+--- a/llvm/lib/Target/ARM/ARM.h
++++ b/llvm/lib/Target/ARM/ARM.h
+@@ -56,6 +56,7 @@ createARMInstructionSelector(const ARMBaseTargetMachine &TM, const ARMSubtarget
+                              const ARMRegisterBankInfo &RBI);
+ Pass *createMVEGatherScatterLoweringPass();
+ FunctionPass *createARMSLSHardeningPass();
++FunctionPass *createARMIndirectThunks();
+ 
+ void LowerARMMachineInstrToMCInst(const MachineInstr *MI, MCInst &OutMI,
+                                   ARMAsmPrinter &AP);
+diff --git a/llvm/lib/Target/ARM/ARM.td b/llvm/lib/Target/ARM/ARM.td
+index 4d4ace51e13f..8111346c74f6 100644
+--- a/llvm/lib/Target/ARM/ARM.td
++++ b/llvm/lib/Target/ARM/ARM.td
+@@ -570,6 +570,10 @@ def FeatureHardenSlsRetBr : SubtargetFeature<"harden-sls-retbr",
+   "HardenSlsRetBr", "true",
+   "Harden against straight line speculation across RETurn and BranchRegister "
+   "instructions">;
++def FeatureHardenSlsBlr : SubtargetFeature<"harden-sls-blr",
++  "HardenSlsBlr", "true",
++  "Harden against straight line speculation across indirect calls">;
++
+ 
+ 
+ //===----------------------------------------------------------------------===//
+diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+index 1435bba776a3..9a71b9264fcd 100644
+--- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
++++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+@@ -691,6 +691,8 @@ bool ARMBaseInstrInfo::isPredicable(const MachineInstr &MI) const {
+   const ARMSubtarget &ST = MF->getSubtarget<ARMSubtarget>();
+   if (ST.hardenSlsRetBr() && isIndirectControlFlowNotComingBack(MI))
+     return false;
++  if (ST.hardenSlsBlr() && isIndirectCall(MI))
++    return false;
+ 
+   if (AFI->isThumb2Function()) {
+     if (getSubtarget().restrictIT())
+diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.h b/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
+index e4e71e4925b9..47a2cf44f3a9 100644
+--- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
++++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
+@@ -635,6 +635,51 @@ bool isIndirectBranchOpcode(int Opc) {
+   return Opc == ARM::BX || Opc == ARM::MOVPCRX || Opc == ARM::tBRIND;
+ }
+ 
++static inline bool isIndirectCall(const MachineInstr &MI) {
++  int Opc = MI.getOpcode();
++  switch (Opc) {
++    // indirect calls:
++  case ARM::BLX:
++  case ARM::BLX_pred:
++  case ARM::BX_CALL:
++  case ARM::BMOVPCRX_CALL:
++  case ARM::TCRETURNri:
++  case ARM::TAILJMPr:
++  case ARM::TAILJMPr4:
++  case ARM::tBLXr:
++  case ARM::tBLXNSr:
++  case ARM::tBLXNS_CALL:
++  case ARM::tBX_CALL:
++  case ARM::tTAILJMPr:
++    assert(MI.isCall(MachineInstr::IgnoreBundle));
++    return true;
++    // direct calls:
++  case ARM::BL:
++  case ARM::BL_pred:
++  case ARM::BMOVPCB_CALL:
++  case ARM::BL_PUSHLR:
++  case ARM::BLXi:
++  case ARM::TCRETURNdi:
++  case ARM::TAILJMPd:
++  case ARM::SVC:
++  case ARM::HVC:
++  case ARM::TPsoft:
++  case ARM::tTAILJMPd:
++  case ARM::t2SMC:
++  case ARM::t2HVC:
++  case ARM::tBL:
++  case ARM::tBLXi:
++  case ARM::tBL_PUSHLR:
++  case ARM::tTAILJMPdND:
++  case ARM::tSVC:
++  case ARM::tTPsoft:
++    assert(MI.isCall(MachineInstr::IgnoreBundle));
++    return false;
++  }
++  assert(!MI.isCall(MachineInstr::IgnoreBundle));
++  return false;
++}
++
+ static inline bool isIndirectControlFlowNotComingBack(const MachineInstr &MI) {
+   int opc = MI.getOpcode();
+   return MI.isReturn() || isIndirectBranchOpcode(MI.getOpcode()) ||
+diff --git a/llvm/lib/Target/ARM/ARMSLSHardening.cpp b/llvm/lib/Target/ARM/ARMSLSHardening.cpp
+index 3f6fa8a47d6a..e6d40d41653a 100644
+--- a/llvm/lib/Target/ARM/ARMSLSHardening.cpp
++++ b/llvm/lib/Target/ARM/ARMSLSHardening.cpp
+@@ -14,6 +14,7 @@
+ #include "ARM.h"
+ #include "ARMInstrInfo.h"
+ #include "ARMSubtarget.h"
++#include "llvm/CodeGen/IndirectThunks.h"
+ #include "llvm/CodeGen/MachineBasicBlock.h"
+ #include "llvm/CodeGen/MachineFunction.h"
+ #include "llvm/CodeGen/MachineFunctionPass.h"
+@@ -53,6 +54,10 @@ public:
+ 
+ private:
+   bool hardenReturnsAndBRs(MachineBasicBlock &MBB) const;
++  bool hardenIndirectCalls(MachineBasicBlock &MBB) const;
++  MachineBasicBlock &
++  ConvertIndirectCallToIndirectJump(MachineBasicBlock &MBB,
++                                    MachineBasicBlock::iterator) const;
+ };
+ 
+ } // end anonymous namespace
+@@ -91,8 +96,10 @@ bool ARMSLSHardening::runOnMachineFunction(MachineFunction &MF) {
+   TII = MF.getSubtarget().getInstrInfo();
+ 
+   bool Modified = false;
+-  for (auto &MBB : MF)
++  for (auto &MBB : MF) {
+     Modified |= hardenReturnsAndBRs(MBB);
++    Modified |= hardenIndirectCalls(MBB);
++  }
+ 
+   return Modified;
+ }
+@@ -117,6 +124,298 @@ bool ARMSLSHardening::hardenReturnsAndBRs(MachineBasicBlock &MBB) const {
+   return Modified;
+ }
+ 
++static const char SLSBLRNamePrefix[] = "__llvm_slsblr_thunk_";
++
++static const struct ThunkNameRegMode {
++  const char* Name;
++  Register Reg;
++  bool isThumb;
++} SLSBLRThunks[] = {
++    {"__llvm_slsblr_thunk_arm_r0", ARM::R0, false},
++    {"__llvm_slsblr_thunk_arm_r1", ARM::R1, false},
++    {"__llvm_slsblr_thunk_arm_r2", ARM::R2, false},
++    {"__llvm_slsblr_thunk_arm_r3", ARM::R3, false},
++    {"__llvm_slsblr_thunk_arm_r4", ARM::R4, false},
++    {"__llvm_slsblr_thunk_arm_r5", ARM::R5, false},
++    {"__llvm_slsblr_thunk_arm_r6", ARM::R6, false},
++    {"__llvm_slsblr_thunk_arm_r7", ARM::R7, false},
++    {"__llvm_slsblr_thunk_arm_r8", ARM::R8, false},
++    {"__llvm_slsblr_thunk_arm_r9", ARM::R9, false},
++    {"__llvm_slsblr_thunk_arm_r10", ARM::R10, false},
++    {"__llvm_slsblr_thunk_arm_r11", ARM::R11, false},
++    {"__llvm_slsblr_thunk_arm_r12", ARM::R12, false},
++    {"__llvm_slsblr_thunk_arm_sp", ARM::SP, false},
++    {"__llvm_slsblr_thunk_arm_lr", ARM::LR, false},
++    {"__llvm_slsblr_thunk_arm_pc", ARM::PC, false},
++    {"__llvm_slsblr_thunk_thumb_r0", ARM::R0, true},
++    {"__llvm_slsblr_thunk_thumb_r1", ARM::R1, true},
++    {"__llvm_slsblr_thunk_thumb_r2", ARM::R2, true},
++    {"__llvm_slsblr_thunk_thumb_r3", ARM::R3, true},
++    {"__llvm_slsblr_thunk_thumb_r4", ARM::R4, true},
++    {"__llvm_slsblr_thunk_thumb_r5", ARM::R5, true},
++    {"__llvm_slsblr_thunk_thumb_r6", ARM::R6, true},
++    {"__llvm_slsblr_thunk_thumb_r7", ARM::R7, true},
++    {"__llvm_slsblr_thunk_thumb_r8", ARM::R8, true},
++    {"__llvm_slsblr_thunk_thumb_r9", ARM::R9, true},
++    {"__llvm_slsblr_thunk_thumb_r10", ARM::R10, true},
++    {"__llvm_slsblr_thunk_thumb_r11", ARM::R11, true},
++    {"__llvm_slsblr_thunk_thumb_r12", ARM::R12, true},
++    {"__llvm_slsblr_thunk_thumb_sp", ARM::SP, true},
++    {"__llvm_slsblr_thunk_thumb_lr", ARM::LR, true},
++    {"__llvm_slsblr_thunk_thumb_pc", ARM::PC, true},
++};
++
++namespace {
++struct SLSBLRThunkInserter : ThunkInserter<SLSBLRThunkInserter> {
++  const char *getThunkPrefix() { return SLSBLRNamePrefix; }
++  bool mayUseThunk(const MachineFunction &MF) {
++    // FIXME: This could also check if there are any indirect calls in the
++    // function to more accurately reflect if a thunk will be needed.
++    return MF.getSubtarget<ARMSubtarget>().hardenSlsBlr();
++  }
++  void insertThunks(MachineModuleInfo &MMI);
++  void populateThunk(MachineFunction &MF);
++};
++} // namespace
++
++void SLSBLRThunkInserter::insertThunks(MachineModuleInfo &MMI) {
++  // FIXME: It probably would be possible to filter which thunks to produce
++  // based on which registers are actually used in indirect calls in this
++  // function. But would that be a worthwhile optimization?
++  for (auto T : SLSBLRThunks)
++    createThunkFunction(MMI, T.Name);
++}
++
++void SLSBLRThunkInserter::populateThunk(MachineFunction &MF) {
++  // FIXME: How to better communicate Register number, rather than through
++  // name and lookup table?
++  assert(MF.getName().startswith(getThunkPrefix()));
++  auto ThunkIt = llvm::find_if(
++      SLSBLRThunks, [&MF](auto T) { return T.Name == MF.getName(); });
++  assert(ThunkIt != std::end(SLSBLRThunks));
++  Register ThunkReg = ThunkIt->Reg;
++  bool isThumb = ThunkIt->isThumb;
++
++  const TargetInstrInfo *TII = MF.getSubtarget<ARMSubtarget>().getInstrInfo();
++  MachineBasicBlock *Entry = &MF.front();
++  Entry->clear();
++
++  //  These thunks need to consist of the following instructions:
++  //  __llvm_slsblr_thunk_(arm/thumb)_rN:
++  //      bx  rN
++  //      barrierInsts
++  Entry->addLiveIn(ThunkReg);
++  if (isThumb)
++    BuildMI(Entry, DebugLoc(), TII->get(ARM::tBX))
++        .addReg(ThunkReg)
++        .add(predOps(ARMCC::AL));
++  else
++    BuildMI(Entry, DebugLoc(), TII->get(ARM::BX))
++        .addReg(ThunkReg);
++
++  // Make sure the thunks do not make use of the SB extension in case there is
++  // a function somewhere that will call to it that for some reason disabled
++  // the SB extension locally on that function, even though it's enabled for
++  // the module otherwise. Therefore set AlwaysUseISBSDB to true.
++  insertSpeculationBarrier(&MF.getSubtarget<ARMSubtarget>(), *Entry,
++                           Entry->end(), DebugLoc(), true /*AlwaysUseISBDSB*/);
++}
++
++MachineBasicBlock &ARMSLSHardening::ConvertIndirectCallToIndirectJump(
++    MachineBasicBlock &MBB, MachineBasicBlock::iterator MBBI) const {
++  // Transform an indirect call to an indirect jump as follows:
++  // Before:
++  //   |-----------------------------|
++  //   |      ...                    |
++  //   |  instI                      |
++  //   |  BLX rN                     |
++  //   |  instJ                      |
++  //   |      ...                    |
++  //   |-----------------------------|
++  //
++  // After:
++  //   |----------   -------------------------|
++  //   |      ...                             |
++  //   |  instI                               |
++  //   |  *call* __llvm_slsblr_thunk_mode_xN  |
++  //   |  instJ                               |
++  //   |      ...                             |
++  //   |--------------------------------------|
++  //
++  //   __llvm_slsblr_thunk_mode_xN:
++  //   |-----------------------------|
++  //   |  BX rN                      |
++  //   |  barrierInsts               |
++  //   |-----------------------------|
++  //
++  // The __llvm_slsblr_thunk_mode_xN thunks are created by the
++  // SLSBLRThunkInserter.
++  // This function merely needs to transform an indirect call to a direct call
++  // to __llvm_slsblr_thunk_xN.
++  //
++  // Since linkers are allowed to clobber R12 on function calls, the above
++  // mitigation only works if the original indirect call instruction was not
++  // using R12. Code generation before must make sure that no indirect call
++  // using R12 was produced if the mitigation is enabled.
++  // Also, the transformation is incorrect if the indirect call uses LR, so
++  // also have to avoid that.
++  // FIXME: that will be done in a follow-on patch.
++
++  MachineInstr &IndirectCall = *MBBI;
++  assert(isIndirectCall(IndirectCall) && !IndirectCall.isReturn());
++  int RegOpIdxOnIndirectCall = -1;
++  bool isThumb;
++  switch (IndirectCall.getOpcode()) {
++  case ARM::BLX:      // !isThumb2
++    isThumb = false;
++    RegOpIdxOnIndirectCall = 0;
++    break;
++  case ARM::tBLXr:      // isThumb2
++    isThumb = true;
++    RegOpIdxOnIndirectCall = 2;
++    break;
++  default:
++    llvm_unreachable("unhandled Indirect Call");
++  }
++
++  Register Reg = IndirectCall.getOperand(RegOpIdxOnIndirectCall).getReg();
++  assert(Reg != ARM::R12 && Reg != ARM::LR);
++  bool RegIsKilled = IndirectCall.getOperand(RegOpIdxOnIndirectCall).isKill();
++
++  DebugLoc DL = IndirectCall.getDebugLoc();
++
++  MachineFunction &MF = *MBBI->getMF();
++  auto ThunkIt = llvm::find_if(SLSBLRThunks, [Reg, isThumb](auto T) {
++    return T.Reg == Reg && T.isThumb == isThumb;
++  });
++  assert(ThunkIt != std::end(SLSBLRThunks));
++  Module *M = MF.getFunction().getParent();
++  const GlobalValue *GV = cast<GlobalValue>(M->getNamedValue(ThunkIt->Name));
++
++  MachineInstr *BL =
++      isThumb ? BuildMI(MBB, MBBI, DL, TII->get(ARM::tBL))
++                    .addImm(IndirectCall.getOperand(0).getImm())
++                    .addReg(IndirectCall.getOperand(1).getReg())
++                    .addGlobalAddress(GV)
++              : BuildMI(MBB, MBBI, DL, TII->get(ARM::BL)).addGlobalAddress(GV);
++
++  // Now copy the implicit operands from IndirectCall to BL and copy other
++  // necessary info.
++  // However, both IndirectCall and BL instructions implictly use SP and
++  // implicitly define LR. Blindly copying implicit operands would result in SP
++  // and LR operands to be present multiple times. While this may not be too
++  // much of an issue, let's avoid that for cleanliness, by removing those
++  // implicit operands from the BL created above before we copy over all
++  // implicit operands from the IndirectCall.
++  int ImpLROpIdx = -1;
++  int ImpSPOpIdx = -1;
++  for (unsigned OpIdx = BL->getNumExplicitOperands();
++       OpIdx < BL->getNumOperands(); OpIdx++) {
++    MachineOperand Op = BL->getOperand(OpIdx);
++    if (!Op.isReg())
++      continue;
++    if (Op.getReg() == ARM::LR && Op.isDef())
++      ImpLROpIdx = OpIdx;
++    if (Op.getReg() == ARM::SP && !Op.isDef())
++      ImpSPOpIdx = OpIdx;
++  }
++  assert(ImpLROpIdx != -1);
++  assert(ImpSPOpIdx != -1);
++  int FirstOpIdxToRemove = std::max(ImpLROpIdx, ImpSPOpIdx);
++  int SecondOpIdxToRemove = std::min(ImpLROpIdx, ImpSPOpIdx);
++  BL->RemoveOperand(FirstOpIdxToRemove);
++  BL->RemoveOperand(SecondOpIdxToRemove);
++  // Now copy over the implicit operands from the original IndirectCall
++  BL->copyImplicitOps(MF, IndirectCall);
++  MF.moveCallSiteInfo(&IndirectCall, BL);
++  // Also add the register called in the IndirectCall as being used in the
++  // called thunk.
++  BL->addOperand(MachineOperand::CreateReg(Reg, false /*isDef*/, true /*isImp*/,
++                                           RegIsKilled /*isKill*/));
++  // Remove IndirectCallinstruction
++  MBB.erase(MBBI);
++  return MBB;
++}
++
++bool ARMSLSHardening::hardenIndirectCalls(MachineBasicBlock &MBB) const {
++  if (!ST->hardenSlsBlr())
++    return false;
++  bool Modified = false;
++  MachineBasicBlock::iterator MBBI = MBB.begin(), E = MBB.end();
++  MachineBasicBlock::iterator NextMBBI;
++  for (; MBBI != E; MBBI = NextMBBI) {
++    MachineInstr &MI = *MBBI;
++    NextMBBI = std::next(MBBI);
++    // Tail calls are both indirect calls and "returns".
++    // They are also indirect jumps, so should be handled by sls-harden-retbr,
++    // rather than sls-harden-blr.
++    if (isIndirectCall(MI) && !MI.isReturn()) {
++      ConvertIndirectCallToIndirectJump(MBB, MBBI);
++      Modified = true;
++    }
++  }
++  return Modified;
++}
++
++
++
+ FunctionPass *llvm::createARMSLSHardeningPass() {
+   return new ARMSLSHardening();
+ }
++
++namespace {
++class ARMIndirectThunks : public MachineFunctionPass {
++public:
++  static char ID;
++
++  ARMIndirectThunks() : MachineFunctionPass(ID) {}
++
++  StringRef getPassName() const override { return "ARM Indirect Thunks"; }
++
++  bool doInitialization(Module &M) override;
++  bool runOnMachineFunction(MachineFunction &MF) override;
++
++  void getAnalysisUsage(AnalysisUsage &AU) const override {
++    MachineFunctionPass::getAnalysisUsage(AU);
++    AU.addRequired<MachineModuleInfoWrapperPass>();
++    AU.addPreserved<MachineModuleInfoWrapperPass>();
++  }
++
++private:
++  std::tuple<SLSBLRThunkInserter> TIs;
++
++  // FIXME: When LLVM moves to C++17, these can become folds
++  template <typename... ThunkInserterT>
++  static void initTIs(Module &M,
++                      std::tuple<ThunkInserterT...> &ThunkInserters) {
++    (void)std::initializer_list<int>{
++        (std::get<ThunkInserterT>(ThunkInserters).init(M), 0)...};
++  }
++  template <typename... ThunkInserterT>
++  static bool runTIs(MachineModuleInfo &MMI, MachineFunction &MF,
++                     std::tuple<ThunkInserterT...> &ThunkInserters) {
++    bool Modified = false;
++    (void)std::initializer_list<int>{
++        Modified |= std::get<ThunkInserterT>(ThunkInserters).run(MMI, MF)...};
++    return Modified;
++  }
++};
++
++} // end anonymous namespace
++
++char ARMIndirectThunks::ID = 0;
++
++FunctionPass *llvm::createARMIndirectThunks() {
++  return new ARMIndirectThunks();
++}
++
++bool ARMIndirectThunks::doInitialization(Module &M) {
++  initTIs(M, TIs);
++  return false;
++}
++
++bool ARMIndirectThunks::runOnMachineFunction(MachineFunction &MF) {
++  LLVM_DEBUG(dbgs() << getPassName() << '\n');
++  auto &MMI = getAnalysis<MachineModuleInfoWrapperPass>().getMMI();
++  return runTIs(MMI, MF, TIs);
++}
+diff --git a/llvm/lib/Target/ARM/ARMSubtarget.h b/llvm/lib/Target/ARM/ARMSubtarget.h
+index bfde47290dcd..778d3ba22a2f 100644
+--- a/llvm/lib/Target/ARM/ARMSubtarget.h
++++ b/llvm/lib/Target/ARM/ARMSubtarget.h
+@@ -468,6 +468,9 @@ protected:
+   /// Branches.
+   bool HardenSlsRetBr = false;
+ 
++  /// Harden against Straight Line Speculation for indirect calls.
++  bool HardenSlsBlr = false;
++
+   /// stackAlignment - The minimum alignment known to hold of the stack frame on
+   /// entry to the function and which must be maintained by every function.
+   Align stackAlignment = Align(4);
+@@ -911,6 +914,7 @@ public:
+   unsigned getGPRAllocationOrder(const MachineFunction &MF) const;
+ 
+   bool hardenSlsRetBr() const { return HardenSlsRetBr; }
++  bool hardenSlsBlr() const { return HardenSlsBlr; }
+ };
+ 
+ } // end namespace llvm
+diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
+index 2e20070833e6..269dc08af13c 100644
+--- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp
++++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp
+@@ -540,6 +540,7 @@ void ARMPassConfig::addPreSched2() {
+     addPass(&PostRASchedulerID);
+   }
+ 
++  addPass(createARMIndirectThunks());
+   addPass(createARMSLSHardeningPass());
+ }
+ 
+diff --git a/llvm/test/CodeGen/ARM/O3-pipeline.ll b/llvm/test/CodeGen/ARM/O3-pipeline.ll
+index 6390e42570d7..6efb9209fd4f 100644
+--- a/llvm/test/CodeGen/ARM/O3-pipeline.ll
++++ b/llvm/test/CodeGen/ARM/O3-pipeline.ll
+@@ -159,8 +159,11 @@
+ ; CHECK-NEXT:      Machine Natural Loop Construction
+ ; CHECK-NEXT:      PostRA Machine Instruction Scheduler
+ ; CHECK-NEXT:      Post RA top-down list latency scheduler
++; CHECK-NEXT:      ARM Indirect Thunks
+ ; CHECK-NEXT:      ARM sls hardening pass
+ ; CHECK-NEXT:      Analyze Machine Code For Garbage Collection
++; CHECK-NEXT:      MachineDominator Tree Construction
++; CHECK-NEXT:      Machine Natural Loop Construction
+ ; CHECK-NEXT:      Machine Block Frequency Analysis
+ ; CHECK-NEXT:      MachinePostDominator Tree Construction
+ ; CHECK-NEXT:      Branch Probability Basic Block Placement
+diff --git a/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll b/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
+index 14b17e62c930..a2166e4520cb 100644
+--- a/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
++++ b/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
+@@ -1,13 +1,17 @@
+-; RUN: llc -mattr=harden-sls-retbr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB,ISBDSBDAGISEL -dump-input-context=100
+-; RUN: llc -mattr=harden-sls-retbr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,ISBDSB,ISBDSBDAGISEL -dump-input-context=100
+-; RUN: llc -mattr=harden-sls-retbr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB,SBDAGISEL -dump-input-context=100
+-; RUN: llc -mattr=harden-sls-retbr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,SB,SBDAGISEL -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB,ISBDSBDAGISEL -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,ISBDSB,ISBDSBDAGISEL -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB,SBDAGISEL -dump-input-context=100
++; RUN: llc -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,SB,SBDAGISEL -dump-input-context=100
+ ; RUN: llc -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,NOHARDEN,NOHARDENARM -dump-input-context=100
+ ; RUN: llc -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,NOHARDEN,NOHARDENTHUMB
+-; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB
+-; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,ISBDSB
+-; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB
+-; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,SB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,ISBDSB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB
++; RUN: llc -global-isel -global-isel-abort=0 -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,SB
++; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,ISBDSB
++; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,ISBDSB
++; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=armv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,ARM,HARDEN,SB
++; RUN: llc -fast-isel -mattr=harden-sls-retbr -mattr=harden-sls-blr -mattr=+sb -verify-machineinstrs -mtriple=thumbv8-linux-gnueabi < %s | FileCheck %s --check-prefixes=CHECK,THUMB,HARDENTHUMB,HARDEN,SB
+ 
+ ; Function Attrs: norecurse nounwind readnone
+ define dso_local i32 @double_return(i32 %a, i32 %b) local_unnamed_addr {
+@@ -149,3 +153,43 @@ sw.epilog:                                        ; preds = %sw.bb5, %entry
+ ; ISBDSB-NEXT: isb
+ ; SB-NEXT:     {{ sb$}}
+ }
++
++define dso_local i32 @indirect_call(
++i32 (...)* nocapture %f1, i32 (...)* nocapture %f2) {
++entry:
++; CHECK-LABEL: indirect_call:
++  %callee.knr.cast = bitcast i32 (...)* %f1 to i32 ()*
++  %call = tail call i32 %callee.knr.cast()
++; HARDENARM: bl {{__llvm_slsblr_thunk_arm_r[0-9]+$}}
++; HARDENTHUMB: bl {{__llvm_slsblr_thunk_thumb_r[0-9]+$}}
++  %callee.knr.cast1 = bitcast i32 (...)* %f2 to i32 ()*
++  %call2 = tail call i32 %callee.knr.cast1()
++; HARDENARM: bl {{__llvm_slsblr_thunk_arm_r[0-9]+$}}
++; HARDENTHUMB: bl {{__llvm_slsblr_thunk_thumb_r[0-9]+$}}
++  %add = add nsw i32 %call2, %call
++  ret i32 %add
++; CHECK: .Lfunc_end
++}
++
++; verify calling through a function pointer.
++@a = dso_local local_unnamed_addr global i32 (...)* null, align 8
++@b = dso_local local_unnamed_addr global i32 0, align 4
++define dso_local void @indirect_call_global() local_unnamed_addr {
++; CHECK-LABEL: indirect_call_global:
++entry:
++  %0 = load i32 ()*, i32 ()** bitcast (i32 (...)** @a to i32 ()**), align 8
++  %call = tail call i32 %0()  nounwind
++; HARDENARM: bl {{__llvm_slsblr_thunk_arm_r[0-9]+$}}
++; HARDENTHUMB: bl {{__llvm_slsblr_thunk_thumb_r[0-9]+$}}
++  store i32 %call, i32* @b, align 4
++  ret void
++; CHECK: .Lfunc_end
++}
++
++; HARDEN-label: __llvm_slsblr_thunk_(arm|thumb)_r5:
++; HARDEN:    bx r5
++; ISBDSB-NEXT: dsb sy
++; ISBDSB-NEXT: isb
++; SB-NEXT:     dsb sy
++; SB-NEXT:     isb
++; HARDEN-NEXT: .Lfunc_end
diff --git a/sys-devel/llvm/files/cherry/a680bc3a31d36d321ccf3801bdcff74d58842bfa.patch b/sys-devel/llvm/files/cherry/a680bc3a31d36d321ccf3801bdcff74d58842bfa.patch
new file mode 100644
index 0000000..9ab2dbe
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/a680bc3a31d36d321ccf3801bdcff74d58842bfa.patch
@@ -0,0 +1,116 @@
+commit a680bc3a31d36d321ccf3801bdcff74d58842bfa
+Author: Nick Desaulniers <ndesaulniers@google.com>
+Date:   Thu Feb 11 09:00:11 2021 -0800
+
+    [clang][Arm] Fix handling of -Wa,-implicit-it=
+    
+    Similiar to D95872, this flag can be set for the assembler directly.
+    Move validation code into a reusable helper function.
+    
+    Link: https://bugs.llvm.org/show_bug.cgi?id=49023
+    Link: https://github.com/ClangBuiltLinux/linux/issues/1270
+    Reported-by: Arnd Bergmann <arnd@kernel.org>
+    Signed-off-by: Nick Desaulniers <ndesaulniers@google.com>
+    
+    Reviewed By: DavidSpickett
+    
+    Differential Revision: https://reviews.llvm.org/D96285
+
+diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
+index d2a9ea3c9ef8..c2b195a8088f 100644
+--- a/clang/lib/Driver/ToolChains/Clang.cpp
++++ b/clang/lib/Driver/ToolChains/Clang.cpp
+@@ -2304,6 +2304,17 @@ void Clang::DumpCompilationDatabaseFragmentToDir(
+   DumpCompilationDatabase(C, "", Target, Output, Input, Args);
+ }
+ 
++static bool AddARMImplicitITArgs(const ArgList &Args, ArgStringList &CmdArgs,
++                                 StringRef Value) {
++  if (Value == "always" || Value == "never" || Value == "arm" ||
++      Value == "thumb") {
++    CmdArgs.push_back("-mllvm");
++    CmdArgs.push_back(Args.MakeArgString("-arm-implicit-it=" + Value));
++    return true;
++  }
++  return false;
++}
++
+ static void CollectArgsForIntegratedAssembler(Compilation &C,
+                                               const ArgList &Args,
+                                               ArgStringList &CmdArgs,
+@@ -2327,14 +2338,9 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
+   case llvm::Triple::thumbeb:
+     if (Arg *A = Args.getLastArg(options::OPT_mimplicit_it_EQ)) {
+       StringRef Value = A->getValue();
+-      if (Value == "always" || Value == "never" || Value == "arm" ||
+-          Value == "thumb") {
+-        CmdArgs.push_back("-mllvm");
+-        CmdArgs.push_back(Args.MakeArgString("-arm-implicit-it=" + Value));
+-      } else {
++      if (!AddARMImplicitITArgs(Args, CmdArgs, Value))
+         D.Diag(diag::err_drv_unsupported_option_argument)
+             << A->getOption().getName() << Value;
+-      }
+     }
+     break;
+   default:
+@@ -2376,6 +2382,9 @@ static void CollectArgsForIntegratedAssembler(Compilation &C,
+       case llvm::Triple::thumbeb:
+       case llvm::Triple::arm:
+       case llvm::Triple::armeb:
++        if (Value.startswith("-mimplicit-it=") &&
++            AddARMImplicitITArgs(Args, CmdArgs, Value.split("=").second))
++          continue;
+         if (Value == "-mthumb")
+           // -mthumb has already been processed in ComputeLLVMTriple()
+           // recognize but skip over here.
+diff --git a/clang/test/Driver/arm-target-as-mimplicit-it.s b/clang/test/Driver/arm-target-as-mimplicit-it.s
+new file mode 100644
+index 000000000000..b13b4918780c
+--- /dev/null
++++ b/clang/test/Driver/arm-target-as-mimplicit-it.s
+@@ -0,0 +1,44 @@
++/// Simple tests for valid input.
++/// -Wa,-implicit-it=
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always %s 2>&1 | FileCheck %s --check-prefix=ALWAYS
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=never %s 2>&1 | FileCheck %s --check-prefix=NEVER
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=arm %s 2>&1 | FileCheck %s --check-prefix=ARM
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=thumb %s 2>&1 | FileCheck %s --check-prefix=THUMB
++/// -Xassembler -mimplicit-it=
++// RUN: %clang -target arm-linux-gnueabi -### -Xassembler -mimplicit-it=always %s 2>&1 | FileCheck %s --check-prefix=ALWAYS
++// RUN: %clang -target arm-linux-gnueabi -### -Xassembler -mimplicit-it=never %s 2>&1 | FileCheck %s --check-prefix=NEVER
++// RUN: %clang -target arm-linux-gnueabi -### -Xassembler -mimplicit-it=arm %s 2>&1 | FileCheck %s --check-prefix=ARM
++// RUN: %clang -target arm-linux-gnueabi -### -Xassembler -mimplicit-it=thumb %s 2>&1 | FileCheck %s --check-prefix=THUMB
++/// Test space separated -Wa,- arguments (latter wins).
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=never -Wa,-mimplicit-it=always %s 2>&1 | FileCheck %s --check-prefix=ALWAYS
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always -Wa,-mimplicit-it=never %s 2>&1 | FileCheck %s --check-prefix=NEVER
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always -Wa,-mimplicit-it=arm %s 2>&1 | FileCheck %s --check-prefix=ARM
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always -Wa,-mimplicit-it=thumb %s 2>&1 | FileCheck %s --check-prefix=THUMB
++/// Test comma separated -Wa,- arguments (latter wins).
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=never,-mimplicit-it=always %s 2>&1 | FileCheck %s --check-prefix=ALWAYS
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always,-mimplicit-it=never %s 2>&1 | FileCheck %s --check-prefix=NEVER
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always,-mimplicit-it=arm %s 2>&1 | FileCheck %s --check-prefix=ARM
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always,-mimplicit-it=thumb %s 2>&1 | FileCheck %s --check-prefix=THUMB
++
++/// Mix -implicit-it= (compiler) with -Wa,-mimplicit-it= (assembler), assembler
++/// takes priority. -mllvm -arm-implicit-it= will be repeated, with the
++/// assembler flag appearing last (latter wins).
++// RUN: %clang -target arm-linux-gnueabi -### -mimplicit-it=never -Wa,-mimplicit-it=always %S/Inputs/wildcard1.c 2>&1 | FileCheck %s --check-prefix=NEVER_ALWAYS
++// RUN: %clang -target arm-linux-gnueabi -### -mimplicit-it=always -Wa,-mimplicit-it=never %S/Inputs/wildcard1.c 2>&1 | FileCheck %s --check-prefix=ALWAYS_NEVER
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=never -mimplicit-it=always %S/Inputs/wildcard1.c 2>&1 | FileCheck %s --check-prefix=ALWAYS_NEVER
++
++/// Test invalid input.
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=foo %s 2>&1 | FileCheck %s --check-prefix=INVALID
++// RUN: %clang -target arm-linux-gnueabi -### -Xassembler -mimplicit-it=foo %s 2>&1 | FileCheck %s --check-prefix=XINVALID
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always -Wa,-mimplicit-it=foo %s 2>&1 | FileCheck %s --check-prefix=INVALID
++// RUN: %clang -target arm-linux-gnueabi -### -Wa,-mimplicit-it=always,-mimplicit-it=foo %s 2>&1 | FileCheck %s --check-prefix=INVALID
++
++
++// ALWAYS: "-mllvm" "-arm-implicit-it=always"
++// NEVER: "-mllvm" "-arm-implicit-it=never"
++// ARM: "-mllvm" "-arm-implicit-it=arm"
++// THUMB: "-mllvm" "-arm-implicit-it=thumb"
++// NEVER_ALWAYS: "-mllvm" "-arm-implicit-it=never" "-mllvm" "-arm-implicit-it=always"
++// ALWAYS_NEVER: "-mllvm" "-arm-implicit-it=always" "-mllvm" "-arm-implicit-it=never"
++// INVALID: error: unsupported argument '-mimplicit-it=foo' to option 'Wa,'
++// XINVALID: error: unsupported argument '-mimplicit-it=foo' to option 'Xassembler'
diff --git a/sys-devel/llvm/files/cherry/af0332498405b3a4074cef09845bbacfd4fd594f.patch b/sys-devel/llvm/files/cherry/af0332498405b3a4074cef09845bbacfd4fd594f.patch
new file mode 100644
index 0000000..0e0104e
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/af0332498405b3a4074cef09845bbacfd4fd594f.patch
@@ -0,0 +1,29 @@
+commit af0332498405b3a4074cef09845bbacfd4fd594f
+Author: David Green <david.green@arm.com>
+Date:   Fri Jan 22 14:07:48 2021 +0000
+
+    [ARM] Disable sign extended SSAT pattern recognition.
+    
+    I may have given bad advice, and skipping sext_inreg when matching SSAT
+    patterns is not valid on it's own. It at least needs to sext_inreg the
+    input again, but as far as I can tell is still only valid based on
+    demanded bits. For the moment disable that part of the combine,
+    hopefully reimplementing it in the future more correctly.
+
+diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
+index 949d2ffc1714..f6f8597f3a69 100644
+--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
++++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
+@@ -5062,12 +5062,6 @@ static SDValue LowerSaturatingConditional(SDValue Op, SelectionDAG &DAG) {
+   SDValue V1Tmp = V1;
+   SDValue V2Tmp = V2;
+ 
+-  if (V1.getOpcode() == ISD::SIGN_EXTEND_INREG &&
+-      V2.getOpcode() == ISD::SIGN_EXTEND_INREG) {
+-    V1Tmp = V1.getOperand(0);
+-    V2Tmp = V2.getOperand(0);
+-  }
+-
+   // Check that the registers and the constants match a max(min()) or min(max())
+   // pattern
+   if (V1Tmp != TrueVal1 || V2Tmp != TrueVal2 || K1 != FalseVal1 ||
diff --git a/sys-devel/llvm/files/cherry/b270fd59f0a86fe737853abc43e76b9d29a67eea.patch b/sys-devel/llvm/files/cherry/b270fd59f0a86fe737853abc43e76b9d29a67eea.patch
new file mode 100644
index 0000000..222281d
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/b270fd59f0a86fe737853abc43e76b9d29a67eea.patch
@@ -0,0 +1,78 @@
+commit b270fd59f0a86fe737853abc43e76b9d29a67eea
+Author: George Burgess IV <george.burgess.iv@gmail.com>
+Date:   Wed Jan 20 10:56:21 2021 -0800
+
+    Revert "[clang] Change builtin object size when subobject is invalid"
+    
+    This reverts commit 275f30df8ad6de75e1f29e4b33eaeb67686caf0d.
+    
+    As noted on the code review (https://reviews.llvm.org/D92892), this
+    change causes us to reject valid code in a few cases. Reverting so we
+    have more time to figure out what the right fix{es are, is} here.
+
+diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp
+index b153e22259f7..56181bbe1166 100644
+--- a/clang/lib/AST/ExprConstant.cpp
++++ b/clang/lib/AST/ExprConstant.cpp
+@@ -11408,9 +11408,9 @@ static bool tryEvaluateBuiltinObjectSize(const Expr *E, unsigned Type,
+       return false;
+   }
+ 
+-  // If we point outside of the object, there are no accessible bytes.
+-  if (LVal.getLValueOffset().isNegative() ||
+-      ((Type & 1) && !LVal.Designator.isValidSubobject())) {
++  // If we point to before the start of the object, there are no accessible
++  // bytes.
++  if (LVal.getLValueOffset().isNegative()) {
+     Size = 0;
+     return true;
+   }
+diff --git a/clang/test/CodeGen/object-size.c b/clang/test/CodeGen/object-size.c
+index dbf286138454..ff54b11a0f04 100644
+--- a/clang/test/CodeGen/object-size.c
++++ b/clang/test/CodeGen/object-size.c
+@@ -310,7 +310,7 @@ void test24() {
+ void test25() {
+   // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* {{.*}}, i1 false, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN((void*)0x1000, 0);
+-  // CHECK: store i32 0
++  // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* {{.*}}, i1 false, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN((void*)0x1000, 1);
+   // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* {{.*}}, i1 true, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN((void*)0x1000, 2);
+@@ -321,7 +321,7 @@ void test25() {
+ 
+   // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* {{.*}}, i1 false, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN((void*)0 + 0x1000, 0);
+-  // CHECK: store i32 0
++  // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* {{.*}}, i1 false, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN((void*)0 + 0x1000, 1);
+   // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* {{.*}}, i1 true, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN((void*)0 + 0x1000, 2);
+@@ -337,7 +337,7 @@ void test26() {
+ 
+   // CHECK: store i32 316
+   gi = OBJECT_SIZE_BUILTIN(&t[1].v[11], 0);
+-  // CHECK: store i32 0
++  // CHECK: store i32 312
+   gi = OBJECT_SIZE_BUILTIN(&t[1].v[12], 1);
+   // CHECK: store i32 308
+   gi = OBJECT_SIZE_BUILTIN(&t[1].v[13], 2);
+@@ -433,7 +433,7 @@ void test29(struct DynStructVar *dv, struct DynStruct0 *d0,
+ 
+   // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* %{{.*}}, i1 false, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN(d0->snd, 0);
+-  // CHECK: store i32 0
++  // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* %{{.*}}, i1 false, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN(d0->snd, 1);
+   // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* %{{.*}}, i1 true, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN(d0->snd, 2);
+@@ -518,7 +518,7 @@ void test31() {
+   // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* %{{.*}}, i1 false, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN(&ds1[9].snd[0], 1);
+ 
+-  // CHECK: store i32 0
++  // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* %{{.*}}, i1 false, i1 true, i1
+   gi = OBJECT_SIZE_BUILTIN(&ds0[9].snd[0], 1);
+ 
+   // CHECK: call i64 @llvm.objectsize.i64.p0i8(i8* %{{.*}}, i1 false, i1 true, i1
diff --git a/sys-devel/llvm/files/cherry/b3165a70ae83b46dc145f335dfa9690ece361e92.patch b/sys-devel/llvm/files/cherry/b3165a70ae83b46dc145f335dfa9690ece361e92.patch
new file mode 100644
index 0000000..994a64f
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/b3165a70ae83b46dc145f335dfa9690ece361e92.patch
@@ -0,0 +1,78 @@
+commit b3165a70ae83b46dc145f335dfa9690ece361e92
+Author: Fangrui Song <i@maskray.me>
+Date:   Thu Feb 4 09:17:47 2021 -0800
+
+    [ELF] Allow R_386_GOTOFF from .debug_info
+    
+    In GCC emitted .debug_info sections, R_386_GOTOFF may be used to
+    relocate DW_AT_GNU_call_site_value values
+    (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98946).
+    
+    R_386_GOTOFF (`S + A - GOT`) is one of the `isStaticLinkTimeConstant` relocation
+    type which is not PC-relative, so it can be used from non-SHF_ALLOC sections. We
+    current allow new relocation types as needs come. The diagnostic has caught some
+    bugs in the past.
+    
+    Differential Revision: https://reviews.llvm.org/D95994
+
+diff --git a/lld/ELF/InputSection.cpp b/lld/ELF/InputSection.cpp
+index f40bb258b9af..6f16fc7abc48 100644
+--- a/lld/ELF/InputSection.cpp
++++ b/lld/ELF/InputSection.cpp
+@@ -901,7 +901,10 @@ void InputSection::relocateNonAlloc(uint8_t *buf, ArrayRef<RelTy> rels) {
+       continue;
+     }
+ 
+-    if (expr != R_ABS && expr != R_DTPREL && expr != R_RISCV_ADD) {
++    // R_ABS/R_DTPREL and some other relocations can be used from non-SHF_ALLOC
++    // sections.
++    if (expr != R_ABS && expr != R_DTPREL && expr != R_GOTPLTREL &&
++        expr != R_RISCV_ADD) {
+       std::string msg = getLocation<ELFT>(offset) +
+                         ": has non-ABS relocation " + toString(type) +
+                         " against symbol '" + toString(sym) + "'";
+diff --git a/lld/test/ELF/non-abs-reloc.s b/lld/test/ELF/non-abs-reloc.s
+index 72a65424ed1f..82f913efe4d8 100644
+--- a/lld/test/ELF/non-abs-reloc.s
++++ b/lld/test/ELF/non-abs-reloc.s
+@@ -1,17 +1,17 @@
+ // REQUIRES: x86
+ // RUN: split-file %s %t
+-// RUN: llvm-mc -filetype=obj -triple=x86_64 %t/asm -o %t.o
+-// RUN: ld.lld -T %t/lds %t.o -o %t.exe 2>&1 | FileCheck %s
+-// CHECK:      warning: {{.*}}.o:(.nonalloc1+0x1): has non-ABS relocation R_X86_64_PC32 against symbol '_start'
+-// CHECK-NEXT: warning: {{.*}}.o:(.nonalloc1+0x6): has non-ABS relocation R_X86_64_PC32 against symbol '_start'
++// RUN: llvm-mc -filetype=obj -triple=i386 %t/asm -o %t.o
++// RUN: ld.lld -T %t/lds %t.o -o %t.exe 2>&1 | FileCheck %s --implicit-check-not=warning: --implicit-check-not=error:
++// CHECK:      warning: {{.*}}.o:(.nonalloc1+0x1): has non-ABS relocation R_386_PC32 against symbol '_start'
++// CHECK-NEXT: warning: {{.*}}.o:(.nonalloc1+0x6): has non-ABS relocation R_386_PC32 against symbol '_start'
+ 
+ // RUN: llvm-objdump -D --no-show-raw-insn %t.exe | FileCheck --check-prefix=DISASM %s
+ // DISASM:      Disassembly of section .nonalloc:
+ // DISASM-EMPTY:
+ // DISASM-NEXT: <.nonalloc>:
+ // DISASM-NEXT:   0: nop
+-// DISASM-NEXT:   1: callq 0x0
+-// DISASM-NEXT:   6: callq 0x0
++// DISASM-NEXT:   1: calll 0x0
++// DISASM-NEXT:   6: calll 0x0
+ 
+ //--- lds
+ SECTIONS {
+@@ -20,6 +20,7 @@ SECTIONS {
+ //--- asm
+ .globl _start
+ _start:
++.L0:
+   nop
+ 
+ .section .nonalloc0
+@@ -30,3 +31,8 @@ _start:
+   .long _start - . - 4
+   .byte 0xe8
+   .long _start - . - 4
++
++// GCC may relocate DW_AT_GNU_call_site_value with R_386_GOTOFF.
++// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98946
++.section .debug_info
++  .long .L0@gotoff
diff --git a/sys-devel/llvm/files/cherry/b43c26d036dcbf7a6881f39e4434cf059364022a.patch b/sys-devel/llvm/files/cherry/b43c26d036dcbf7a6881f39e4434cf059364022a.patch
new file mode 100644
index 0000000..c32ef66
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/b43c26d036dcbf7a6881f39e4434cf059364022a.patch
@@ -0,0 +1,40 @@
+commit b43c26d036dcbf7a6881f39e4434cf059364022a
+Author: Harald van Dijk <harald@gigawatt.nl>
+Date:   Mon Jan 25 22:34:49 2021 +0000
+
+    Restore GNU , ## __VA_ARGS__ behavior in MSVC mode
+    
+    As noted in D91913, MSVC implements the GNU behavior for
+    , ## __VA_ARGS__ as well. Do the same when `-fms-compatibility` is used.
+    
+    Reviewed By: rsmith
+    
+    Differential Revision: https://reviews.llvm.org/D95392
+
+diff --git a/clang/lib/Lex/TokenLexer.cpp b/clang/lib/Lex/TokenLexer.cpp
+index 6e962dfa2c34..97cb2cf0bb8c 100644
+--- a/clang/lib/Lex/TokenLexer.cpp
++++ b/clang/lib/Lex/TokenLexer.cpp
+@@ -152,7 +152,8 @@ bool TokenLexer::MaybeRemoveCommaBeforeVaArgs(
+   // named arguments, where it remains.  With GNU extensions, it is removed
+   // regardless of named arguments.
+   // Microsoft also appears to support this extension, unofficially.
+-  if (!PP.getLangOpts().GNUMode && Macro->getNumParams() < 2)
++  if (!PP.getLangOpts().GNUMode && !PP.getLangOpts().MSVCCompat &&
++      Macro->getNumParams() < 2)
+     return false;
+ 
+   // Is a comma available to be removed?
+diff --git a/clang/test/Preprocessor/macro_fn_comma_swallow2.c b/clang/test/Preprocessor/macro_fn_comma_swallow2.c
+index 89ef8c0579c4..4e4960ca7f18 100644
+--- a/clang/test/Preprocessor/macro_fn_comma_swallow2.c
++++ b/clang/test/Preprocessor/macro_fn_comma_swallow2.c
+@@ -9,6 +9,8 @@
+ // RUN: %clang_cc1 -E -x c++ -std=c++11 %s | FileCheck -check-prefix=C99 -strict-whitespace %s
+ // RUN: %clang_cc1 -E -std=gnu99 %s | FileCheck -check-prefix=GCC -strict-whitespace %s
+ // RUN: %clang_cc1 -E -fms-compatibility %s | FileCheck -check-prefix=MS -strict-whitespace %s
++// RUN: %clang_cc1 -E -x c++ -fms-compatibility %s | FileCheck -check-prefix=MS -strict-whitespace %s
++// RUN: %clang_cc1 -E -x c++ -std=c++11 -fms-compatibility %s | FileCheck -check-prefix=MS -strict-whitespace %s
+ // RUN: %clang_cc1 -E -DNAMED %s | FileCheck -check-prefix=GCC -strict-whitespace %s
+ // RUN: %clang_cc1 -E -std=c99 -DNAMED %s | FileCheck -check-prefix=C99 -strict-whitespace %s
+ 
diff --git a/sys-devel/llvm/files/cherry/b9ed8ebe0e2ffa803b0bda60f9bbc9bb26f95000.patch b/sys-devel/llvm/files/cherry/b9ed8ebe0e2ffa803b0bda60f9bbc9bb26f95000.patch
new file mode 100644
index 0000000..ffda7c6
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/b9ed8ebe0e2ffa803b0bda60f9bbc9bb26f95000.patch
@@ -0,0 +1,296 @@
+commit b9ed8ebe0e2ffa803b0bda60f9bbc9bb26f95000
+Author: Tomas Matheson <tomas.matheson@arm.com>
+Date:   Wed Jan 20 15:55:26 2021 +0000
+
+    [ARM][RegisterScavenging] Don't consider LR liveout if it is not reloaded
+    
+    https://bugs.llvm.org/show_bug.cgi?id=48232
+    
+    When PrologEpilogInserter writes callee-saved registers to the stack, LR is not reloaded but is instead loaded directly into PC.
+    This was not taken into account when determining if each callee-saved register was liveout for the block.
+    When frame elimination inserts virtual registers, and the register scavenger tries to scavenge LR, it considers it liveout and tries to spill again.
+    However there is no emergency spill slot to use, and it fails with an error:
+    
+        fatal error: error in backend: Error while trying to spill LR from class GPR: Cannot scavenge register without an emergency spill slot!
+    
+    This patch pervents any callee-saved registers which are not reloaded (including LR) from being marked liveout.
+    They are therefore available to scavenge without requiring an extra spill.
+
+diff --git a/llvm/lib/CodeGen/LiveRegUnits.cpp b/llvm/lib/CodeGen/LiveRegUnits.cpp
+index ea2075bc139d..d8d8bd5d61a2 100644
+--- a/llvm/lib/CodeGen/LiveRegUnits.cpp
++++ b/llvm/lib/CodeGen/LiveRegUnits.cpp
+@@ -81,8 +81,17 @@ static void addBlockLiveIns(LiveRegUnits &LiveUnits,
+ static void addCalleeSavedRegs(LiveRegUnits &LiveUnits,
+                                const MachineFunction &MF) {
+   const MachineRegisterInfo &MRI = MF.getRegInfo();
+-  for (const MCPhysReg *CSR = MRI.getCalleeSavedRegs(); CSR && *CSR; ++CSR)
+-    LiveUnits.addReg(*CSR);
++  const MachineFrameInfo &MFI = MF.getFrameInfo();
++  for (const MCPhysReg *CSR = MRI.getCalleeSavedRegs(); CSR && *CSR; ++CSR) {
++    const unsigned N = *CSR;
++
++    const auto &CSI = MFI.getCalleeSavedInfo();
++    auto Info =
++        llvm::find_if(CSI, [N](auto Info) { return Info.getReg() == N; });
++    // If we have no info for this callee-saved register, assume it is liveout
++    if (Info == CSI.end() || Info->isRestored())
++      LiveUnits.addReg(N);
++  }
+ }
+ 
+ void LiveRegUnits::addPristines(const MachineFunction &MF) {
+diff --git a/llvm/test/CodeGen/AArch64/scavenge-lr.mir b/llvm/test/CodeGen/AArch64/scavenge-lr.mir
+new file mode 100644
+index 000000000000..a2296c12eb60
+--- /dev/null
++++ b/llvm/test/CodeGen/AArch64/scavenge-lr.mir
+@@ -0,0 +1,221 @@
++# RUN: llc -mtriple=thumbv7-unknown-linux-android30 -run-pass=prologepilog -verify-machineinstrs %s -o - | FileCheck %s
++
++# When saving and restoring callee-saved registers, LR is saved but not restored,
++# because it is reloaded directly into PC. Therefore it should be available to scavenge
++# without requiring an emergency spill slot.
++
++# Used to result in
++#   LLVM ERROR: Error while trying to spill LR from class GPR: Cannot scavenge register without an emergency spill slot!
++
++# Check that LR is considered live in
++# CHECK: liveins: {{.*}}$lr
++
++# Check that LR is saved to the stack
++# CHECK: frame-setup t2STMDB_UPD {{.*}} killed $lr
++# CHECK: frame-setup CFI_INSTRUCTION offset $lr,
++
++# Check that LR was successfully scavenged somewhere in the function
++# CHECK:  $lr = t2ADDri
++# CHECK: VSTMQIA $q11, killed $lr
++
++# Check that LR is not restored at the end of the function
++# CHECK-NOT: $lr = frame-destroy
++# CHECK-NOT: frame-destroy VLDMDIA_UPD {{.*}} def $lr
++# CHECK-NOT: frame-destroy t2LDMIA_RET {{.*}} def $lr
++# CHECK: frame-destroy t2LDMIA_RET {{.*}} def $pc
++
++--- |
++  target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
++
++  %S = type { [32 x i8] }
++
++  define void @f(%S* %arg) {
++  entry:
++    %ppp..sroa_idx = getelementptr inbounds %S, %S* %arg, i32 -8
++    %ppp..sroa_cast248 = bitcast %S* %ppp..sroa_idx to <8 x float>*
++    %ppp.copyload = load <8 x float>, <8 x float>* %ppp..sroa_cast248, align 32
++
++    %xxx..sroa_idx = getelementptr inbounds %S, %S* %arg, i32 -5
++    %xxx..sroa_cast248 = bitcast %S* %xxx..sroa_idx to <8 x float>*
++    %xxx.copyload = load <8 x float>, <8 x float>* %xxx..sroa_cast248, align 32
++
++    %yyy..sroa_idx = getelementptr inbounds %S, %S* %arg, i32 -2
++    %yyy..sroa_cast244 = bitcast %S* %yyy..sroa_idx to <8 x float>*
++    %yyy.copyload = load <8 x float>, <8 x float>* %yyy..sroa_cast244, align 32
++
++    %zzz..sroa_idx = getelementptr inbounds %S, %S* %arg, i32 -7
++    %zzz..sroa_cast241 = bitcast %S* %zzz..sroa_idx to <8 x float>*
++    %zzz.copyload = load <8 x float>, <8 x float>* %zzz..sroa_cast241, align 32
++
++    %www..sroa_idx = getelementptr inbounds %S, %S* %arg, i32 -4
++    %www..sroa_cast238 = bitcast %S* %www..sroa_idx to <8 x float>*
++    %www.copyload = load <8 x float>, <8 x float>* %www..sroa_cast238, align 32
++
++    %uuu..sroa_idx = getelementptr inbounds %S, %S* %arg, i32 1
++    %uuu..sroa_cast235 = bitcast %S* %uuu..sroa_idx to <8 x float>*
++    %uuu.copyload = load <8 x float>, <8 x float>* %uuu..sroa_cast235, align 32
++
++    %vvv..sroa_idx = getelementptr inbounds %S, %S* %arg, i32 -6
++    %vvv..sroa_cast230 = bitcast %S* %vvv..sroa_idx to <8 x float>*
++    %vvv.copyload = load <8 x float>, <8 x float>* %vvv..sroa_cast230, align 32
++
++    %ttt..sroa_idx = getelementptr inbounds %S, %S* %arg, i32 -3
++    %ttt..sroa_cast226 = bitcast %S* %ttt..sroa_idx to <8 x float>*
++    %ttt.copyload = load <8 x float>, <8 x float>* %ttt..sroa_cast226, align 32
++
++    %sss..sroa_cast223 = bitcast %S* %arg to <8 x float>*
++    %sss.copyload = load <8 x float>, <8 x float>* %sss..sroa_cast223, align 32
++
++    %mul.i = fmul <8 x float> %ppp.copyload, %www.copyload
++    %mul.i185 = fmul <8 x float> %xxx.copyload, %uuu.copyload
++    %mul.i179 = fmul <8 x float> %mul.i185, %vvv.copyload
++    %mul.i173 = fmul <8 x float> %mul.i179, %ttt.copyload
++    %mul.i167 = fmul <8 x float> %zzz.copyload, %mul.i173
++    %add.i = fadd <8 x float> %mul.i, %mul.i167
++    %div.i = fdiv <8 x float> zeroinitializer, %add.i
++    %mul.i153 = fmul <8 x float> %uuu.copyload, %div.i
++
++    store <8 x float> %mul.i153, <8 x float>* %ppp..sroa_cast248, align 32
++
++    %mul.i147 = fmul <8 x float> %uuu.copyload, %vvv.copyload
++    %mul.i141 = fmul <8 x float> %zzz.copyload, %sss.copyload
++    %mul.i135 = fmul <8 x float> %mul.i141, %div.i
++    %sub.i129 = fsub <8 x float> %mul.i147, %mul.i135
++
++    store <8 x float> %sub.i129, <8 x float>* %zzz..sroa_cast241, align 32
++    store <8 x float> %div.i, <8 x float>* %vvv..sroa_cast230, align 32
++    store <8 x float> %div.i, <8 x float>* %xxx..sroa_cast248, align 32
++
++    %mul.i123 = fmul <8 x float> %yyy.copyload, %vvv.copyload
++    %mul.i117 = fmul <8 x float> %mul.i123, %div.i
++    %sub.i111 = fsub <8 x float> %sss.copyload, %mul.i117
++    store <8 x float> %sub.i111, <8 x float>* %www..sroa_cast238, align 32
++
++    %mul.i105 = fmul <8 x float> %ppp.copyload, %ttt.copyload
++    %mul.i99 = fmul <8 x float> %mul.i105, %div.i
++    %sub.i93 = fsub <8 x float> %xxx.copyload, %mul.i99
++    store <8 x float> %sub.i93, <8 x float>* %ttt..sroa_cast226, align 32
++
++    %mul.i81 = fmul <8 x float> %yyy.copyload, %www.copyload
++    %mul.i75 = fmul <8 x float> %mul.i81, %div.i
++    %sub.i = fsub <8 x float> %mul.i185, %mul.i75
++    store <8 x float> %sub.i, <8 x float>* %yyy..sroa_cast244, align 32
++
++    ret void
++  }
++...
++---
++name:            f
++alignment:       2
++tracksRegLiveness: true
++liveins:
++  - { reg: '$r0' }
++frameInfo:
++  maxAlignment:    16
++  maxCallFrameSize: 0
++stack:
++  - { id: 0, type: spill-slot, size: 16, alignment: 16 }
++  - { id: 1, type: spill-slot, size: 16, alignment: 16 }
++  - { id: 2, type: spill-slot, size: 16, alignment: 16 }
++  - { id: 3, type: spill-slot, size: 16, alignment: 16 }
++constants:
++  - id:              0
++    value:           'float 0.000000e+00'
++    alignment:       4
++machineFunctionInfo: {}
++body:             |
++  bb.0.entry:
++    liveins: $r0
++    $r2 = t2SUBri $r0, 128, 14 /* CC::al */, $noreg, $noreg
++    $q8 = VLD1q64 $r2, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.www..sroa_cast238, align 32)
++    VSTMQIA $q8, %stack.0, 14 /* CC::al */, $noreg :: (store 16 into %stack.0)
++    $r12 = t2SUBri $r0, 256, 14 /* CC::al */, $noreg, $noreg
++    $q12 = VLD1q64 $r12, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.ppp..sroa_cast248, align 32)
++    $q1 = VMULfq $q12, killed $q8, 14 /* CC::al */, $noreg
++    $r3 = nuw t2ADDri $r0, 32, 14 /* CC::al */, $noreg, $noreg
++    $q10 = VLD1q64 killed $r3, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.uuu..sroa_cast235, align 32)
++    $r5 = t2SUBri $r0, 160, 14 /* CC::al */, $noreg, $noreg
++    $q15 = VLD1q64 $r5, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.xxx..sroa_cast248, align 32)
++    $q14 = VMULfq $q15, $q10, 14 /* CC::al */, $noreg
++    $r6 = t2SUBri $r0, 192, 14 /* CC::al */, $noreg, $noreg
++    $q13 = VLD1q64 $r6, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.vvv..sroa_cast230, align 32)
++    $q8 = VMULfq $q14, $q13, 14 /* CC::al */, $noreg
++    $r4 = t2SUBri $r0, 96, 14 /* CC::al */, $noreg, $noreg
++    $q6 = VLD1q64 $r4, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.ttt..sroa_cast226, align 32)
++    $q8 = VMULfq killed $q8, $q6, 14 /* CC::al */, $noreg
++    $r3 = t2SUBri $r0, 224, 14 /* CC::al */, $noreg, $noreg
++    $q5 = VLD1q64 $r3, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.zzz..sroa_cast241, align 32)
++    $q1 = VMLAfq killed $q1, $q5, killed $q8, 14 /* CC::al */, $noreg
++    $s8 = VLDRS %const.0, 0, 14 /* CC::al */, $noreg :: (load 4 from constant-pool)
++    $s3 = VDIVS $s8, $s7, 14 /* CC::al */, $noreg, implicit-def $q0
++    $s2 = VDIVS $s8, $s6, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0
++    $s1 = VDIVS $s8, $s5, 14 /* CC::al */, $noreg, implicit killed $q0, implicit-def $q0
++    $s0 = VDIVS $s8, $s4, 14 /* CC::al */, $noreg, implicit killed $q1, implicit killed $q0, implicit-def $q0
++    $r7 = t2SUBri $r0, 64, 14 /* CC::al */, $noreg, $noreg
++    $q8 = VLD1q64 $r7, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.yyy..sroa_cast244, align 32)
++    VSTMQIA $q8, %stack.1, 14 /* CC::al */, $noreg :: (store 16 into %stack.1)
++    $q8 = VMULfq killed $q8, $q13, 14 /* CC::al */, $noreg
++    $r1 = t2ADDri $r0, 48, 14 /* CC::al */, $noreg, $noreg
++    $q9, $r0 = VLD1q32wb_fixed killed $r0, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.sss..sroa_cast223, align 32)
++    $q11 = COPY $q9
++    $q11 = VMLSfq killed $q11, killed $q8, $q0, 14 /* CC::al */, $noreg
++    $r2 = VST1q32wb_fixed killed $r2, 16, killed $q11, 14 /* CC::al */, $noreg :: (store 16 into %ir.www..sroa_cast238, align 32)
++    $q8 = VLD1q64 $r2, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.www..sroa_cast238 + 16, basealign 32)
++    VSTMQIA $q8, %stack.3, 14 /* CC::al */, $noreg :: (store 16 into %stack.3)
++    $q11 = VMULfq $q10, $q0, 14 /* CC::al */, $noreg
++    $r12 = VST1q32wb_fixed killed $r12, 16, killed $q11, 14 /* CC::al */, $noreg :: (store 16 into %ir.ppp..sroa_cast248, align 32)
++    $q11 = VLD1q64 $r12, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.ppp..sroa_cast248 + 16, basealign 32)
++    VSTMQIA $q11, %stack.2, 14 /* CC::al */, $noreg :: (store 16 into %stack.2)
++    $q1 = VMULfq killed $q11, killed $q8, 14 /* CC::al */, $noreg
++    $r5 = VST1q32wb_fixed killed $r5, 16, $q0, 14 /* CC::al */, $noreg :: (store 16 into %ir.xxx..sroa_cast248, align 32)
++    $q4 = VLD1q64 $r5, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.xxx..sroa_cast248 + 16, basealign 32)
++    $q11 = VLD1q64 killed $r1, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.uuu..sroa_cast235 + 16, basealign 32)
++    $q7 = VMULfq $q4, $q11, 14 /* CC::al */, $noreg
++    $r6 = VST1q32wb_fixed killed $r6, 16, $q0, 14 /* CC::al */, $noreg :: (store 16 into %ir.vvv..sroa_cast230, align 32)
++    $q3 = VLD1q64 $r6, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.vvv..sroa_cast230 + 16, basealign 32)
++    $q8 = VMULfq $q7, $q3, 14 /* CC::al */, $noreg
++    $q12 = VMULfq killed $q12, killed $q6, 14 /* CC::al */, $noreg
++    $q15 = VMLSfq killed $q15, killed $q12, $q0, 14 /* CC::al */, $noreg
++    $r4 = VST1q32wb_fixed killed $r4, 16, killed $q15, 14 /* CC::al */, $noreg :: (store 16 into %ir.ttt..sroa_cast226, align 32)
++    $q12 = VLD1q64 $r4, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.ttt..sroa_cast226 + 16, basealign 32)
++    $q8 = VMULfq killed $q8, $q12, 14 /* CC::al */, $noreg
++    $q9 = VMULfq killed $q5, killed $q9, 14 /* CC::al */, $noreg
++    $q10 = VMULfq killed $q10, killed $q13, 14 /* CC::al */, $noreg
++    $q10 = VMLSfq killed $q10, killed $q9, $q0, 14 /* CC::al */, $noreg
++    $r3 = VST1q32wb_fixed killed $r3, 16, killed $q10, 14 /* CC::al */, $noreg :: (store 16 into %ir.zzz..sroa_cast241, align 32)
++    $q10 = VLD1q64 $r3, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.zzz..sroa_cast241 + 16, basealign 32)
++    $q1 = VMLAfq killed $q1, $q10, killed $q8, 14 /* CC::al */, $noreg
++    $s23 = VDIVS $s8, $s7, 14 /* CC::al */, $noreg, implicit-def $q5
++    $s22 = VDIVS $s8, $s6, 14 /* CC::al */, $noreg, implicit killed $q5, implicit-def $q5
++    $s21 = VDIVS $s8, $s5, 14 /* CC::al */, $noreg, implicit killed $q5, implicit-def $q5
++    $s20 = VDIVS killed $s8, $s4, 14 /* CC::al */, $noreg, implicit killed $q1, implicit killed $q5, implicit-def $q5
++    VST1q64 killed $r5, 16, $q5, 14 /* CC::al */, $noreg :: (store 16 into %ir.xxx..sroa_cast248 + 16, basealign 32)
++    VST1q64 killed $r6, 16, $q5, 14 /* CC::al */, $noreg :: (store 16 into %ir.vvv..sroa_cast230 + 16, basealign 32)
++    $q8 = VLDMQIA %stack.0, 14 /* CC::al */, $noreg :: (load 16 from %stack.0)
++    $q9 = VLDMQIA %stack.1, 14 /* CC::al */, $noreg :: (load 16 from %stack.1)
++    $q8 = VMULfq killed $q9, killed $q8, 14 /* CC::al */, $noreg
++    $q14 = VMLSfq killed $q14, killed $q8, killed $q0, 14 /* CC::al */, $noreg
++    $r7 = VST1q32wb_fixed killed $r7, 16, killed $q14, 14 /* CC::al */, $noreg :: (store 16 into %ir.yyy..sroa_cast244, align 32)
++    $q8 = VLD1q64 $r7, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.yyy..sroa_cast244 + 16, basealign 32)
++    $q9 = VLDMQIA %stack.3, 14 /* CC::al */, $noreg :: (load 16 from %stack.3)
++    $q9 = VMULfq $q8, killed $q9, 14 /* CC::al */, $noreg
++    $q7 = VMLSfq killed $q7, killed $q9, $q5, 14 /* CC::al */, $noreg
++    VST1q64 killed $r7, 16, killed $q7, 14 /* CC::al */, $noreg :: (store 16 into %ir.yyy..sroa_cast244 + 16, basealign 32)
++    $q9 = VLDMQIA %stack.2, 14 /* CC::al */, $noreg :: (load 16 from %stack.2)
++    $q9 = VMULfq killed $q9, killed $q12, 14 /* CC::al */, $noreg
++    $q4 = VMLSfq killed $q4, killed $q9, $q5, 14 /* CC::al */, $noreg
++    VST1q64 killed $r4, 16, killed $q4, 14 /* CC::al */, $noreg :: (store 16 into %ir.ttt..sroa_cast226 + 16, basealign 32)
++    $q8 = VMULfq killed $q8, $q3, 14 /* CC::al */, $noreg
++    $q9 = VLD1q64 killed $r0, 16, 14 /* CC::al */, $noreg :: (load 16 from %ir.sss..sroa_cast223 + 16, basealign 32)
++    $q12 = COPY $q9
++    $q12 = VMLSfq killed $q12, killed $q8, $q5, 14 /* CC::al */, $noreg
++    VST1q64 killed $r2, 16, killed $q12, 14 /* CC::al */, $noreg :: (store 16 into %ir.www..sroa_cast238 + 16, basealign 32)
++    $q8 = VMULfq $q11, killed $q3, 14 /* CC::al */, $noreg
++    $q9 = VMULfq killed $q10, killed $q9, 14 /* CC::al */, $noreg
++    $q8 = VMLSfq killed $q8, killed $q9, $q5, 14 /* CC::al */, $noreg
++    VST1q64 killed $r3, 16, killed $q8, 14 /* CC::al */, $noreg :: (store 16 into %ir.zzz..sroa_cast241 + 16, basealign 32)
++    $q8 = VMULfq killed $q11, killed $q5, 14 /* CC::al */, $noreg
++    VST1q64 killed $r12, 16, killed $q8, 14 /* CC::al */, $noreg :: (store 16 into %ir.ppp..sroa_cast248 + 16, basealign 32)
++    tBX_RET 14 /* CC::al */, $noreg
++
++...
+diff --git a/llvm/test/CodeGen/Thumb2/mve-multivec-spill.ll b/llvm/test/CodeGen/Thumb2/mve-multivec-spill.ll
+index a24637870b31..8449b4a9989b 100644
+--- a/llvm/test/CodeGen/Thumb2/mve-multivec-spill.ll
++++ b/llvm/test/CodeGen/Thumb2/mve-multivec-spill.ll
+@@ -35,18 +35,18 @@ define arm_aapcs_vfpcc void @spill_multivector(<4 x i32>* %p) {
+ ; CHECK-NEXT:    vld21.32 {q4, q5}, [r0]
+ ; CHECK-NEXT:    bl external_function
+ ; CHECK-NEXT:    vldmia sp, {d2, d3, d4, d5} @ 32-byte Reload
+-; CHECK-NEXT:    add r0, sp, #32
++; CHECK-NEXT:    add.w lr, sp, #32
+ ; CHECK-NEXT:    vstrw.32 q2, [r4, #80]
+ ; CHECK-NEXT:    vstrw.32 q5, [r4, #144]
+ ; CHECK-NEXT:    vstrw.32 q4, [r4, #128]
+ ; CHECK-NEXT:    vstrw.32 q7, [r4, #112]
+ ; CHECK-NEXT:    vstrw.32 q1, [r4, #64]
+-; CHECK-NEXT:    vldmia r0, {d2, d3, d4, d5} @ 32-byte Reload
+-; CHECK-NEXT:    add r0, sp, #64
++; CHECK-NEXT:    vldmia lr, {d2, d3, d4, d5} @ 32-byte Reload
++; CHECK-NEXT:    add.w lr, sp, #64
+ ; CHECK-NEXT:    vstrw.32 q2, [r4, #48]
+ ; CHECK-NEXT:    vstrw.32 q6, [r4, #96]
+ ; CHECK-NEXT:    vstrw.32 q1, [r5]
+-; CHECK-NEXT:    vldmia r0, {d2, d3, d4, d5} @ 32-byte Reload
++; CHECK-NEXT:    vldmia lr, {d2, d3, d4, d5} @ 32-byte Reload
+ ; CHECK-NEXT:    vstrw.32 q2, [r4, #16]
+ ; CHECK-NEXT:    vstrw.32 q1, [r4]
+ ; CHECK-NEXT:    add sp, #112
diff --git a/sys-devel/llvm/files/cherry/bab74864168bb5e28ecbc0294fe1095d8da7f569.patch b/sys-devel/llvm/files/cherry/bab74864168bb5e28ecbc0294fe1095d8da7f569.patch
new file mode 100644
index 0000000..c72a74c
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/bab74864168bb5e28ecbc0294fe1095d8da7f569.patch
@@ -0,0 +1,23 @@
+commit bab74864168bb5e28ecbc0294fe1095d8da7f569
+Author: Reid Kleckner <rnk@google.com>
+Date:   Mon Feb 1 15:18:42 2021 -0800
+
+    Disable CFI in __get_elem to allow casting a pointer to uninitialized memory
+    
+    Fixes usage of shared_ptr with CFI enabled, which is llvm.org/pr48993.
+    
+    Differential Revision: https://reviews.llvm.org/D95827
+
+diff --git a/libcxx/include/memory b/libcxx/include/memory
+index a00916c8c03f..39d0f5bee6a5 100644
+--- a/libcxx/include/memory
++++ b/libcxx/include/memory
+@@ -2647,7 +2647,7 @@ private:
+             _Alloc *__alloc = reinterpret_cast<_Alloc*>(__first);
+             return __alloc;
+         }
+-        _Tp* __get_elem() _NOEXCEPT {
++        _LIBCPP_NO_CFI _Tp* __get_elem() _NOEXCEPT {
+             _CompressedPair *__as_pair = reinterpret_cast<_CompressedPair*>(__blob_);
+             typename _CompressedPair::_Base2* __second = _CompressedPair::__get_second_base(__as_pair);
+             _Tp *__elem = reinterpret_cast<_Tp*>(__second);
diff --git a/sys-devel/llvm/files/cherry/be23012d5a84fefdb6d0a267f9ffb4bafb4804d7.patch b/sys-devel/llvm/files/cherry/be23012d5a84fefdb6d0a267f9ffb4bafb4804d7.patch
new file mode 100644
index 0000000..1073dcd
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/be23012d5a84fefdb6d0a267f9ffb4bafb4804d7.patch
@@ -0,0 +1,300 @@
+commit be23012d5a84fefdb6d0a267f9ffb4bafb4804d7
+Author: Kazu Hirata <kazu@google.com>
+Date:   Sun Feb 7 09:49:36 2021 -0800
+
+    [Transforms/Utils] Use range-based for loops (NFC)
+
+diff --git a/llvm/lib/Transforms/Utils/CloneFunction.cpp b/llvm/lib/Transforms/Utils/CloneFunction.cpp
+index 51a49574e55d..a953ba5c6b14 100644
+--- a/llvm/lib/Transforms/Utils/CloneFunction.cpp
++++ b/llvm/lib/Transforms/Utils/CloneFunction.cpp
+@@ -563,9 +563,8 @@ void llvm::CloneAndPruneIntoFromInst(Function *NewFunc, const Function *OldFunc,
+       assert(NumPreds < PN->getNumIncomingValues());
+       // Count how many times each predecessor comes to this block.
+       std::map<BasicBlock*, unsigned> PredCount;
+-      for (pred_iterator PI = pred_begin(NewBB), E = pred_end(NewBB);
+-           PI != E; ++PI)
+-        --PredCount[*PI];
++      for (BasicBlock *Pred : predecessors(NewBB))
++        --PredCount[Pred];
+ 
+       // Figure out how many entries to remove from each PHI.
+       for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i)
+diff --git a/llvm/lib/Transforms/Utils/CloneModule.cpp b/llvm/lib/Transforms/Utils/CloneModule.cpp
+index a6327bbf21bc..6de679bc9640 100644
+--- a/llvm/lib/Transforms/Utils/CloneModule.cpp
++++ b/llvm/lib/Transforms/Utils/CloneModule.cpp
+@@ -115,28 +115,27 @@ std::unique_ptr<Module> llvm::CloneModule(
+   // have been created, loop through and copy the global variable referrers
+   // over...  We also set the attributes on the global now.
+   //
+-  for (Module::const_global_iterator I = M.global_begin(), E = M.global_end();
+-       I != E; ++I) {
+-    GlobalVariable *GV = cast<GlobalVariable>(VMap[&*I]);
++  for (const GlobalVariable &G : M.globals()) {
++    GlobalVariable *GV = cast<GlobalVariable>(VMap[&G]);
+ 
+     SmallVector<std::pair<unsigned, MDNode *>, 1> MDs;
+-    I->getAllMetadata(MDs);
++    G.getAllMetadata(MDs);
+     for (auto MD : MDs)
+       GV->addMetadata(MD.first,
+                       *MapMetadata(MD.second, VMap, RF_MoveDistinctMDs));
+ 
+-    if (I->isDeclaration())
++    if (G.isDeclaration())
+       continue;
+ 
+-    if (!ShouldCloneDefinition(&*I)) {
++    if (!ShouldCloneDefinition(&G)) {
+       // Skip after setting the correct linkage for an external reference.
+       GV->setLinkage(GlobalValue::ExternalLinkage);
+       continue;
+     }
+-    if (I->hasInitializer())
+-      GV->setInitializer(MapValue(I->getInitializer(), VMap));
++    if (G.hasInitializer())
++      GV->setInitializer(MapValue(G.getInitializer(), VMap));
+ 
+-    copyComdat(GV, &*I);
++    copyComdat(GV, &G);
+   }
+ 
+   // Similarly, copy over function bodies now...
+diff --git a/llvm/lib/Transforms/Utils/CodeExtractor.cpp b/llvm/lib/Transforms/Utils/CodeExtractor.cpp
+index 461be91f2623..ec316dec9361 100644
+--- a/llvm/lib/Transforms/Utils/CodeExtractor.cpp
++++ b/llvm/lib/Transforms/Utils/CodeExtractor.cpp
+@@ -1611,15 +1611,14 @@ CodeExtractor::extractCodeRegion(const CodeExtractorAnalysisCache &CEAC) {
+   DenseMap<BasicBlock *, BlockFrequency> ExitWeights;
+   SmallPtrSet<BasicBlock *, 1> ExitBlocks;
+   for (BasicBlock *Block : Blocks) {
+-    for (succ_iterator SI = succ_begin(Block), SE = succ_end(Block); SI != SE;
+-         ++SI) {
+-      if (!Blocks.count(*SI)) {
++    for (BasicBlock *Succ : successors(Block)) {
++      if (!Blocks.count(Succ)) {
+         // Update the branch weight for this successor.
+         if (BFI) {
+-          BlockFrequency &BF = ExitWeights[*SI];
+-          BF += BFI->getBlockFreq(Block) * BPI->getEdgeProbability(Block, *SI);
++          BlockFrequency &BF = ExitWeights[Succ];
++          BF += BFI->getBlockFreq(Block) * BPI->getEdgeProbability(Block, Succ);
+         }
+-        ExitBlocks.insert(*SI);
++        ExitBlocks.insert(Succ);
+       }
+     }
+   }
+diff --git a/llvm/lib/Transforms/Utils/FixIrreducible.cpp b/llvm/lib/Transforms/Utils/FixIrreducible.cpp
+index 44af95eef67d..10f48fe827f4 100644
+--- a/llvm/lib/Transforms/Utils/FixIrreducible.cpp
++++ b/llvm/lib/Transforms/Utils/FixIrreducible.cpp
+@@ -129,8 +129,7 @@ static void reconnectChildLoops(LoopInfo &LI, Loop *ParentLoop, Loop *NewLoop,
+   SmallVector<Loop *, 8> ChildLoops(FirstChild, CandidateLoops.end());
+   CandidateLoops.erase(FirstChild, CandidateLoops.end());
+ 
+-  for (auto II = ChildLoops.begin(), IE = ChildLoops.end(); II != IE; ++II) {
+-    auto Child = *II;
++  for (Loop *Child : ChildLoops) {
+     LLVM_DEBUG(dbgs() << "child loop: " << Child->getHeader()->getName()
+                       << "\n");
+     // TODO: A child loop whose header is also a header in the current
+diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
+index 948bf08e7cfe..f8c792a34f0e 100644
+--- a/llvm/lib/Transforms/Utils/Local.cpp
++++ b/llvm/lib/Transforms/Utils/Local.cpp
+@@ -743,11 +743,11 @@ void llvm::MergeBasicBlockIntoOnlyPred(BasicBlock *DestBB,
+   SmallVector<DominatorTree::UpdateType, 32> Updates;
+ 
+   if (DTU) {
+-    for (auto I = pred_begin(PredBB), E = pred_end(PredBB); I != E; ++I) {
++    for (BasicBlock *PredPredBB : predecessors(PredBB)) {
+       // This predecessor of PredBB may already have DestBB as a successor.
+-      if (!llvm::is_contained(successors(*I), DestBB))
+-        Updates.push_back({DominatorTree::Insert, *I, DestBB});
+-      Updates.push_back({DominatorTree::Delete, *I, PredBB});
++      if (!llvm::is_contained(successors(PredPredBB), DestBB))
++        Updates.push_back({DominatorTree::Insert, PredPredBB, DestBB});
++      Updates.push_back({DominatorTree::Delete, PredPredBB, PredBB});
+     }
+     Updates.push_back({DominatorTree::Delete, PredBB, DestBB});
+   }
+@@ -1040,8 +1040,8 @@ bool llvm::TryToSimplifyUncondBranchFromEmptyBlock(BasicBlock *BB,
+ 
+   // We cannot fold the block if it's a branch to an already present callbr
+   // successor because that creates duplicate successors.
+-  for (auto I = pred_begin(BB), E = pred_end(BB); I != E; ++I) {
+-    if (auto *CBI = dyn_cast<CallBrInst>((*I)->getTerminator())) {
++  for (BasicBlock *PredBB : predecessors(BB)) {
++    if (auto *CBI = dyn_cast<CallBrInst>(PredBB->getTerminator())) {
+       if (Succ == CBI->getDefaultDest())
+         return false;
+       for (unsigned i = 0, e = CBI->getNumIndirectDests(); i != e; ++i)
+@@ -1102,10 +1102,8 @@ bool llvm::TryToSimplifyUncondBranchFromEmptyBlock(BasicBlock *BB,
+   Instruction *TI = BB->getTerminator();
+   if (TI)
+     if (MDNode *LoopMD = TI->getMetadata(LoopMDKind))
+-      for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI) {
+-        BasicBlock *Pred = *PI;
++      for (BasicBlock *Pred : predecessors(BB))
+         Pred->getTerminator()->setMetadata(LoopMDKind, LoopMD);
+-      }
+ 
+   // Everything that jumped to BB now goes to Succ.
+   BB->replaceAllUsesWith(Succ);
+diff --git a/llvm/lib/Transforms/Utils/LoopSimplify.cpp b/llvm/lib/Transforms/Utils/LoopSimplify.cpp
+index 2e104334ad96..6adfeaf4fd5f 100644
+--- a/llvm/lib/Transforms/Utils/LoopSimplify.cpp
++++ b/llvm/lib/Transforms/Utils/LoopSimplify.cpp
+@@ -127,9 +127,7 @@ BasicBlock *llvm::InsertPreheaderForLoop(Loop *L, DominatorTree *DT,
+ 
+   // Compute the set of predecessors of the loop that are not in the loop.
+   SmallVector<BasicBlock*, 8> OutsideBlocks;
+-  for (pred_iterator PI = pred_begin(Header), PE = pred_end(Header);
+-       PI != PE; ++PI) {
+-    BasicBlock *P = *PI;
++  for (BasicBlock *P : predecessors(Header)) {
+     if (!L->contains(P)) {         // Coming in from outside the loop?
+       // If the loop is branched to from an indirect terminator, we won't
+       // be able to fully transform the loop, because it prohibits
+@@ -381,9 +379,7 @@ static BasicBlock *insertUniqueBackedgeBlock(Loop *L, BasicBlock *Preheader,
+ 
+   // Figure out which basic blocks contain back-edges to the loop header.
+   std::vector<BasicBlock*> BackedgeBlocks;
+-  for (pred_iterator I = pred_begin(Header), E = pred_end(Header); I != E; ++I){
+-    BasicBlock *P = *I;
+-
++  for (BasicBlock *P : predecessors(Header)) {
+     // Indirect edges cannot be split, so we must fail if we find one.
+     if (P->getTerminator()->isIndirectTerminator())
+       return nullptr;
+@@ -505,12 +501,9 @@ ReprocessLoop:
+     if (*BB == L->getHeader()) continue;
+ 
+     SmallPtrSet<BasicBlock*, 4> BadPreds;
+-    for (pred_iterator PI = pred_begin(*BB),
+-         PE = pred_end(*BB); PI != PE; ++PI) {
+-      BasicBlock *P = *PI;
++    for (BasicBlock *P : predecessors(*BB))
+       if (!L->contains(P))
+         BadPreds.insert(P);
+-    }
+ 
+     // Delete each unique out-of-loop (and thus dead) predecessor.
+     for (BasicBlock *P : BadPreds) {
+@@ -904,9 +897,8 @@ static void verifyLoop(Loop *L) {
+   // Indirectbr can interfere with preheader and unique backedge insertion.
+   if (!L->getLoopPreheader() || !L->getLoopLatch()) {
+     bool HasIndBrPred = false;
+-    for (pred_iterator PI = pred_begin(L->getHeader()),
+-         PE = pred_end(L->getHeader()); PI != PE; ++PI)
+-      if (isa<IndirectBrInst>((*PI)->getTerminator())) {
++    for (BasicBlock *Pred : predecessors(L->getHeader()))
++      if (isa<IndirectBrInst>(Pred->getTerminator())) {
+         HasIndBrPred = true;
+         break;
+       }
+diff --git a/llvm/lib/Transforms/Utils/MetaRenamer.cpp b/llvm/lib/Transforms/Utils/MetaRenamer.cpp
+index e350320e7569..b1965cf2becb 100644
+--- a/llvm/lib/Transforms/Utils/MetaRenamer.cpp
++++ b/llvm/lib/Transforms/Utils/MetaRenamer.cpp
+@@ -67,9 +67,9 @@ struct Renamer {
+ };
+ 
+ void MetaRename(Function &F) {
+-  for (auto AI = F.arg_begin(), AE = F.arg_end(); AI != AE; ++AI)
+-    if (!AI->getType()->isVoidTy())
+-      AI->setName("arg");
++  for (Argument &Arg : F.args())
++    if (!Arg.getType()->isVoidTy())
++      Arg.setName("arg");
+ 
+   for (auto &BB : F) {
+     BB.setName("bb");
+@@ -101,12 +101,12 @@ void MetaRename(Module &M,
+   }
+ 
+   // Rename all global variables
+-  for (auto GI = M.global_begin(), GE = M.global_end(); GI != GE; ++GI) {
+-    StringRef Name = GI->getName();
++  for (GlobalVariable &GV : M.globals()) {
++    StringRef Name = GV.getName();
+     if (Name.startswith("llvm.") || (!Name.empty() && Name[0] == 1))
+       continue;
+ 
+-    GI->setName("global");
++    GV.setName("global");
+   }
+ 
+   // Rename all struct types
+diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+index b7184f25c183..df851c1b4a4c 100644
+--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
++++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+@@ -2279,8 +2279,8 @@ bool SimplifyCFGOpt::SpeculativelyExecuteBB(BranchInst *BI, BasicBlock *ThenBB,
+     // Do not hoist the instruction if any of its operands are defined but not
+     // used in BB. The transformation will prevent the operand from
+     // being sunk into the use block.
+-    for (User::op_iterator i = I->op_begin(), e = I->op_end(); i != e; ++i) {
+-      Instruction *OpI = dyn_cast<Instruction>(*i);
++    for (Use &Op : I->operands()) {
++      Instruction *OpI = dyn_cast<Instruction>(Op);
+       if (!OpI || OpI->getParent() != BB || OpI->mayHaveSideEffects())
+         continue; // Not a candidate for sinking.
+ 
+@@ -2479,10 +2479,10 @@ static bool FoldCondBranchOnPHI(BranchInst *BI, DomTreeUpdater *DTU,
+         N->setName(BBI->getName() + ".c");
+ 
+       // Update operands due to translation.
+-      for (User::op_iterator i = N->op_begin(), e = N->op_end(); i != e; ++i) {
+-        DenseMap<Value *, Value *>::iterator PI = TranslateMap.find(*i);
++      for (Use &Op : N->operands()) {
++        DenseMap<Value *, Value *>::iterator PI = TranslateMap.find(Op);
+         if (PI != TranslateMap.end())
+-          *i = PI->second;
++          Op = PI->second;
+       }
+ 
+       // Check for trivial simplification.
+@@ -3032,8 +3032,7 @@ bool llvm::FoldBranchToCommonDest(BranchInst *BI, DomTreeUpdater *DTU,
+   if (is_contained(successors(BB), BB))
+     return Changed;
+ 
+-  for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI) {
+-    BasicBlock *PredBlock = *PI;
++  for (BasicBlock *PredBlock : predecessors(BB)) {
+     BranchInst *PBI = dyn_cast<BranchInst>(PredBlock->getTerminator());
+ 
+     // Check that we have two conditional branches.  If there is a PHI node in
+@@ -4410,8 +4409,7 @@ bool SimplifyCFGOpt::simplifyReturn(ReturnInst *RI, IRBuilder<> &Builder) {
+   // Find predecessors that end with branches.
+   SmallVector<BasicBlock *, 8> UncondBranchPreds;
+   SmallVector<BranchInst *, 8> CondBranchPreds;
+-  for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI) {
+-    BasicBlock *P = *PI;
++  for (BasicBlock *P : predecessors(BB)) {
+     Instruction *PTI = P->getTerminator();
+     if (BranchInst *BI = dyn_cast<BranchInst>(PTI)) {
+       if (BI->isUnconditional())
+@@ -5641,8 +5639,7 @@ static void reuseTableCompare(
+   // Although this check is invariant in the calling loops, it's better to do it
+   // at this late stage. Practically we do it at most once for a switch.
+   BasicBlock *BranchBlock = RangeCheckBranch->getParent();
+-  for (auto PI = pred_begin(PhiBlock), E = pred_end(PhiBlock); PI != E; ++PI) {
+-    BasicBlock *Pred = *PI;
++  for (BasicBlock *Pred : predecessors(PhiBlock)) {
+     if (Pred != BranchBlock && Pred->getUniquePredecessor() != BranchBlock)
+       return;
+   }
+@@ -6361,8 +6358,8 @@ bool SimplifyCFGOpt::simplifyCondBranch(BranchInst *BI, IRBuilder<> &Builder) {
+         return requestResimplify();
+ 
+   // Scan predecessor blocks for conditional branches.
+-  for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI)
+-    if (BranchInst *PBI = dyn_cast<BranchInst>((*PI)->getTerminator()))
++  for (BasicBlock *Pred : predecessors(BB))
++    if (BranchInst *PBI = dyn_cast<BranchInst>(Pred->getTerminator()))
+       if (PBI != BI && PBI->isConditional())
+         if (SimplifyCondBranchToCondBranch(PBI, BI, DTU, DL, TTI))
+           return requestResimplify();
diff --git a/sys-devel/llvm/files/cherry/c2a84771bb63947695ea50b89160c02b36fb634d.patch b/sys-devel/llvm/files/cherry/c2a84771bb63947695ea50b89160c02b36fb634d.patch
new file mode 100644
index 0000000..3cd97b42
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/c2a84771bb63947695ea50b89160c02b36fb634d.patch
@@ -0,0 +1,202 @@
+commit c2a84771bb63947695ea50b89160c02b36fb634d
+Author: Jian Cai <jiancai@google.com>
+Date:   Tue Feb 2 18:47:03 2021 -0800
+
+    [llvm-objcopy] preserve file ownership when overwritten by root
+    
+    As of binutils 2.36, GNU strip calls chown(2) for "sudo strip foo" and
+    "sudo strip foo -o foo", but no "sudo strip foo -o bar" or "sudo strip
+    foo -o ./foo". In other words, while "sudo strip foo -o bar" creates a
+    new file bar with root access, "sudo strip foo" will keep the owner and
+    group of foo unchanged. Currently llvm-objcopy and llvm-strip behave
+    differently, always changing the owner and gropu to root. The
+    discrepancy prevents Chrome OS from migrating to llvm-objcopy and
+    llvm-strip as they change file ownership and cause intended users/groups
+    to lose access when invoked by sudo with the following sequence
+    (recommended in man page of GNU strip).
+    
+    1.<Link the executable as normal.>
+    1.<Copy "foo" to "foo.full">
+    1.<Run "strip --strip-debug foo">
+    1.<Run "objcopy --add-gnu-debuglink=foo.full foo">
+    
+    This patch makes llvm-objcopy and llvm-strip follow GNU's behavior.
+    
+    Link: crbug.com/1108880
+
+diff --git a/llvm/include/llvm/Support/FileOutputBuffer.h b/llvm/include/llvm/Support/FileOutputBuffer.h
+index 8eb36d0034ad..d65997201ef3 100644
+--- a/llvm/include/llvm/Support/FileOutputBuffer.h
++++ b/llvm/include/llvm/Support/FileOutputBuffer.h
+@@ -28,12 +28,15 @@ namespace llvm {
+ class FileOutputBuffer {
+ public:
+   enum {
+-    /// set the 'x' bit on the resulting file
++    /// Set the 'x' bit on the resulting file.
+     F_executable = 1,
+ 
+     /// Don't use mmap and instead write an in-memory buffer to a file when this
+     /// buffer is closed.
+     F_no_mmap = 2,
++
++    /// Preserve ownership if the file already exists.
++    F_keep_ownership = 4,
+   };
+ 
+   /// Factory method to create an OutputBuffer object which manages a read/write
+@@ -46,7 +49,8 @@ public:
+   /// \p Size.  It is an error to specify F_modify and Size=-1 if \p FilePath
+   /// does not exist.
+   static Expected<std::unique_ptr<FileOutputBuffer>>
+-  create(StringRef FilePath, size_t Size, unsigned Flags = 0);
++  create(StringRef FilePath, size_t Size, unsigned Flags = 0,
++         unsigned UserID = 0, unsigned GroupID = 0);
+ 
+   /// Returns a pointer to the start of the buffer.
+   virtual uint8_t *getBufferStart() const = 0;
+diff --git a/llvm/include/llvm/Support/FileSystem.h b/llvm/include/llvm/Support/FileSystem.h
+index 2483aae046f5..d82e966215dc 100644
+--- a/llvm/include/llvm/Support/FileSystem.h
++++ b/llvm/include/llvm/Support/FileSystem.h
+@@ -1159,6 +1159,16 @@ std::error_code unlockFile(int FD);
+ /// means that the filesystem may have failed to perform some buffered writes.
+ std::error_code closeFile(file_t &F);
+ 
++#ifdef LLVM_ON_UNIX
++/// @brief Change ownership of a file.
++///
++/// @param Owner The owner of the file to change to.
++/// @param Group The group of the file to change to.
++/// @returns errc::success if successfully updated file ownership, otherwise an
++///          error code is returned.
++std::error_code changeFileOwnership(int FD, uint32_t Owner, uint32_t Group);
++#endif
++
+ /// RAII class that facilitates file locking.
+ class FileLocker {
+   int FD; ///< Locked file handle.
+diff --git a/llvm/lib/Support/FileOutputBuffer.cpp b/llvm/lib/Support/FileOutputBuffer.cpp
+index 3342682270dc..7b2a512bd475 100644
+--- a/llvm/lib/Support/FileOutputBuffer.cpp
++++ b/llvm/lib/Support/FileOutputBuffer.cpp
+@@ -125,7 +125,8 @@ createInMemoryBuffer(StringRef Path, size_t Size, unsigned Mode) {
+ }
+ 
+ static Expected<std::unique_ptr<FileOutputBuffer>>
+-createOnDiskBuffer(StringRef Path, size_t Size, unsigned Mode) {
++createOnDiskBuffer(StringRef Path, size_t Size, unsigned Mode,
++                   bool KeepOwnership, unsigned UserID, unsigned GroupID) {
+   Expected<fs::TempFile> FileOrErr =
+       fs::TempFile::create(Path + ".tmp%%%%%%%", Mode);
+   if (!FileOrErr)
+@@ -133,6 +134,13 @@ createOnDiskBuffer(StringRef Path, size_t Size, unsigned Mode) {
+   fs::TempFile File = std::move(*FileOrErr);
+ 
+ #ifndef _WIN32
++  // Try to preserve file ownership if requested.
++  if (KeepOwnership) {
++    fs::file_status Stat;
++    if (!fs::status(File.FD, Stat) && Stat.getUser() == 0)
++      fs::changeFileOwnership(File.FD, UserID, GroupID);
++  }
++
+   // On Windows, CreateFileMapping (the mmap function on Windows)
+   // automatically extends the underlying file. We don't need to
+   // extend the file beforehand. _chsize (ftruncate on Windows) is
+@@ -163,7 +171,8 @@ createOnDiskBuffer(StringRef Path, size_t Size, unsigned Mode) {
+ 
+ // Create an instance of FileOutputBuffer.
+ Expected<std::unique_ptr<FileOutputBuffer>>
+-FileOutputBuffer::create(StringRef Path, size_t Size, unsigned Flags) {
++FileOutputBuffer::create(StringRef Path, size_t Size, unsigned Flags,
++                         unsigned UserID, unsigned GroupID) {
+   // Handle "-" as stdout just like llvm::raw_ostream does.
+   if (Path == "-")
+     return createInMemoryBuffer("-", Size, /*Mode=*/0);
+@@ -196,7 +205,8 @@ FileOutputBuffer::create(StringRef Path, size_t Size, unsigned Flags) {
+     if (Flags & F_no_mmap)
+       return createInMemoryBuffer(Path, Size, Mode);
+     else
+-      return createOnDiskBuffer(Path, Size, Mode);
++      return createOnDiskBuffer(Path, Size, Mode, Flags & F_keep_ownership,
++                                UserID, GroupID);
+   default:
+     return createInMemoryBuffer(Path, Size, Mode);
+   }
+diff --git a/llvm/lib/Support/Unix/Path.inc b/llvm/lib/Support/Unix/Path.inc
+index 77f3f54bd881..bbac8a5b3733 100644
+--- a/llvm/lib/Support/Unix/Path.inc
++++ b/llvm/lib/Support/Unix/Path.inc
+@@ -1211,6 +1211,14 @@ std::error_code real_path(const Twine &path, SmallVectorImpl<char> &dest,
+   return std::error_code();
+ }
+ 
++std::error_code changeFileOwnership(int FD, uint32_t Owner, uint32_t Group) {
++  auto FChown = [&]() { return ::fchown(FD, Owner, Group); };
++  // Retry if fchown call fails due to interruption.
++  if ((sys::RetryAfterSignal(-1, FChown)) < 0)
++    return std::error_code(errno, std::generic_category());
++  return std::error_code();
++}
++
+ } // end namespace fs
+ 
+ namespace path {
+diff --git a/llvm/tools/llvm-objcopy/Buffer.cpp b/llvm/tools/llvm-objcopy/Buffer.cpp
+index 06b2a20a762f..304979431210 100644
+--- a/llvm/tools/llvm-objcopy/Buffer.cpp
++++ b/llvm/tools/llvm-objcopy/Buffer.cpp
+@@ -36,7 +36,12 @@ Error FileBuffer::allocate(size_t Size) {
+   }
+ 
+   Expected<std::unique_ptr<FileOutputBuffer>> BufferOrErr =
+-      FileOutputBuffer::create(getName(), Size, FileOutputBuffer::F_executable);
++      FileOutputBuffer::create(getName(), Size,
++                               KeepOwnership
++                                   ? FileOutputBuffer::F_executable |
++                                         FileOutputBuffer::F_keep_ownership
++                                   : FileOutputBuffer::F_executable,
++                               UserID, GroupID);
+   // FileOutputBuffer::create() returns an Error that is just a wrapper around
+   // std::error_code. Wrap it in FileError to include the actual filename.
+   if (!BufferOrErr)
+diff --git a/llvm/tools/llvm-objcopy/Buffer.h b/llvm/tools/llvm-objcopy/Buffer.h
+index 487d5585c364..e439e984b4f9 100644
+--- a/llvm/tools/llvm-objcopy/Buffer.h
++++ b/llvm/tools/llvm-objcopy/Buffer.h
+@@ -40,6 +40,9 @@ class FileBuffer : public Buffer {
+   // Indicates that allocate(0) was called, and commit() should create or
+   // truncate a file instead of using a FileOutputBuffer.
+   bool EmptyFile = false;
++  bool KeepOwnership = false;
++  unsigned UserID = 0;
++  unsigned GroupID = 0;
+ 
+ public:
+   Error allocate(size_t Size) override;
+@@ -47,6 +50,8 @@ public:
+   Error commit() override;
+ 
+   explicit FileBuffer(StringRef FileName) : Buffer(FileName) {}
++  explicit FileBuffer(StringRef FileName, bool Keep, unsigned UID, unsigned GID)
++      : Buffer(FileName), KeepOwnership(Keep), UserID(UID), GroupID(GID) {}
+ };
+ 
+ class MemBuffer : public Buffer {
+diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
+index 7fd2acd11e99..42d97b2ada5a 100644
+--- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
++++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
+@@ -310,7 +310,10 @@ static Error executeObjcopy(CopyConfig &Config) {
+       if (Error E = executeObjcopyOnArchive(Config, *Ar))
+         return E;
+     } else {
+-      FileBuffer FB(Config.OutputFilename);
++      FileBuffer FB(Config.OutputFilename,
++                    Config.InputFilename != "-" &&
++                        Config.InputFilename == Config.OutputFilename,
++                    Stat.getUser(), Stat.getGroup());
+       if (Error E = executeObjcopyOnBinary(Config,
+                                            *BinaryOrErr.get().getBinary(), FB))
+         return E;
diff --git a/sys-devel/llvm/files/cherry/d36812892c16b551f058774babbc8727737f80cd.patch b/sys-devel/llvm/files/cherry/d36812892c16b551f058774babbc8727737f80cd.patch
new file mode 100644
index 0000000..98b5723
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/d36812892c16b551f058774babbc8727737f80cd.patch
@@ -0,0 +1,124 @@
+commit d36812892c16b551f058774babbc8727737f80cd
+Author: Nick Desaulniers <ndesaulniers@google.com>
+Date:   Mon Jan 25 11:12:17 2021 -0800
+
+    [GVN] do not repeat PRE on failure to split critical edge
+    
+    Fixes an infinite loop encountered in GVN.
+    
+    GVN will delay PRE if it encounters critical edges, attempt to split
+    them later via calls to SplitCriticalEdge(), then restart.
+    
+    The caller of GVN::splitCriticalEdges() assumed a return value of true
+    meant that critical edges were split, that the IR had changed, and that
+    PRE should be re-attempted, upon which we loop infinitely.
+    
+    This was exposed after D88438, by compiling the Linux kernel for s390,
+    but the test case is reproducible on x86.
+    
+    Fixes: https://github.com/ClangBuiltLinux/linux/issues/1261
+    
+    Reviewed By: void
+    
+    Differential Revision: https://reviews.llvm.org/D94996
+
+diff --git a/llvm/lib/Transforms/Scalar/GVN.cpp b/llvm/lib/Transforms/Scalar/GVN.cpp
+index 72248babba7e..c6b6d75aefe8 100644
+--- a/llvm/lib/Transforms/Scalar/GVN.cpp
++++ b/llvm/lib/Transforms/Scalar/GVN.cpp
+@@ -2673,9 +2673,11 @@ BasicBlock *GVN::splitCriticalEdges(BasicBlock *Pred, BasicBlock *Succ) {
+   BasicBlock *BB = SplitCriticalEdge(
+       Pred, Succ,
+       CriticalEdgeSplittingOptions(DT, LI, MSSAU).unsetPreserveLoopSimplify());
+-  if (MD)
+-    MD->invalidateCachedPredecessors();
+-  InvalidBlockRPONumbers = true;
++  if (BB) {
++    if (MD)
++      MD->invalidateCachedPredecessors();
++    InvalidBlockRPONumbers = true;
++  }
+   return BB;
+ }
+ 
+@@ -2684,14 +2686,20 @@ BasicBlock *GVN::splitCriticalEdges(BasicBlock *Pred, BasicBlock *Succ) {
+ bool GVN::splitCriticalEdges() {
+   if (toSplit.empty())
+     return false;
++
++  bool Changed = false;
+   do {
+     std::pair<Instruction *, unsigned> Edge = toSplit.pop_back_val();
+-    SplitCriticalEdge(Edge.first, Edge.second,
+-                      CriticalEdgeSplittingOptions(DT, LI, MSSAU));
++    Changed |= SplitCriticalEdge(Edge.first, Edge.second,
++                                 CriticalEdgeSplittingOptions(DT, LI, MSSAU)) !=
++               nullptr;
+   } while (!toSplit.empty());
+-  if (MD) MD->invalidateCachedPredecessors();
+-  InvalidBlockRPONumbers = true;
+-  return true;
++  if (Changed) {
++    if (MD)
++      MD->invalidateCachedPredecessors();
++    InvalidBlockRPONumbers = true;
++  }
++  return Changed;
+ }
+ 
+ /// Executes one iteration of GVN
+diff --git a/llvm/test/Transforms/GVN/critical-edge-split-failure.ll b/llvm/test/Transforms/GVN/critical-edge-split-failure.ll
+new file mode 100644
+index 000000000000..662efd45bf25
+--- /dev/null
++++ b/llvm/test/Transforms/GVN/critical-edge-split-failure.ll
+@@ -0,0 +1,49 @@
++; RUN: opt -gvn -S -o - %s | FileCheck %s
++; RUN: opt -passes=gvn -S -o - %s | FileCheck %s
++
++%struct.sk_buff = type opaque
++
++@l2tp_recv_dequeue_session = external dso_local local_unnamed_addr global i32, align 4
++@l2tp_recv_dequeue_skb = external dso_local local_unnamed_addr global %struct.sk_buff*, align 8
++@l2tp_recv_dequeue_session_2 = external dso_local local_unnamed_addr global i32, align 4
++@l2tp_recv_dequeue_session_0 = external dso_local local_unnamed_addr global i32, align 4
++
++declare void @llvm.assume(i1 noundef)
++
++define dso_local void @l2tp_recv_dequeue() local_unnamed_addr {
++entry:
++  %0 = load i32, i32* @l2tp_recv_dequeue_session, align 4
++  %conv = sext i32 %0 to i64
++  %1 = inttoptr i64 %conv to %struct.sk_buff*
++  %2 = load i32, i32* @l2tp_recv_dequeue_session_2, align 4
++  %tobool.not = icmp eq i32 %2, 0
++  br label %for.cond
++
++for.cond:                                         ; preds = %if.end, %entry
++  %storemerge = phi %struct.sk_buff* [ %1, %entry ], [ null, %if.end ]
++  store %struct.sk_buff* %storemerge, %struct.sk_buff** @l2tp_recv_dequeue_skb, align 8
++  br i1 %tobool.not, label %if.end, label %if.then
++
++if.then:                                          ; preds = %for.cond
++  %ns = bitcast %struct.sk_buff* %storemerge to i32*
++  %3 = load i32, i32* %ns, align 4
++  store i32 %3, i32* @l2tp_recv_dequeue_session_0, align 4
++; Splitting the critical edge from if.then to if.end will fail, but should not
++; cause an infinite loop in GVN. If we can one day split edges of callbr
++; indirect targets, great!
++; CHECK: callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@l2tp_recv_dequeue, %if.end))
++; CHECK-NEXT: to label %asm.fallthrough.i [label %if.end]
++  callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@l2tp_recv_dequeue, %if.end))
++          to label %asm.fallthrough.i [label %if.end]
++
++asm.fallthrough.i:                                ; preds = %if.then
++  br label %if.end
++
++if.end:                                           ; preds = %asm.fallthrough.i, %if.then, %for.cond
++  %ns1 = bitcast %struct.sk_buff* %storemerge to i32*
++  %4 = load i32, i32* %ns1, align 4
++  %tobool2.not = icmp eq i32 %4, 0
++  tail call void @llvm.assume(i1 %tobool2.not)
++  br label %for.cond
++}
++
diff --git a/sys-devel/llvm/files/cherry/d7ec48d71bd67118e7996c45e9c7fb1b09d4f59a.patch b/sys-devel/llvm/files/cherry/d7ec48d71bd67118e7996c45e9c7fb1b09d4f59a.patch
new file mode 100644
index 0000000..89591af
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/d7ec48d71bd67118e7996c45e9c7fb1b09d4f59a.patch
@@ -0,0 +1,2164 @@
+commit d7ec48d71bd67118e7996c45e9c7fb1b09d4f59a
+Author: Nico Weber <thakis@chromium.org>
+Date:   Tue May 4 09:50:43 2021 -0400
+
+    [clang] accept -fsanitize-ignorelist= in addition to -fsanitize-blacklist=
+    
+    Use that for internal names (including the default ignorelists of the
+    sanitizers).
+    
+    Differential Revision: https://reviews.llvm.org/D101832
+
+diff --git a/clang/docs/AddressSanitizer.rst b/clang/docs/AddressSanitizer.rst
+index 05888dce6a2d..865468342404 100644
+--- a/clang/docs/AddressSanitizer.rst
++++ b/clang/docs/AddressSanitizer.rst
+@@ -208,8 +208,8 @@ compilers, so we suggest to use it together with
+ The same attribute used on a global variable prevents AddressSanitizer
+ from adding redzones around it and detecting out of bounds accesses.
+ 
+-Suppressing Errors in Recompiled Code (Blacklist)
+--------------------------------------------------
++Suppressing Errors in Recompiled Code (Ignorelist)
++--------------------------------------------------
+ 
+ AddressSanitizer supports ``src`` and ``fun`` entity types in
+ :doc:`SanitizerSpecialCaseList`, that can be used to suppress error reports
+diff --git a/clang/docs/ClangCommandLineReference.rst b/clang/docs/ClangCommandLineReference.rst
+index 6b67dc07982b..356da15e67e2 100644
+--- a/clang/docs/ClangCommandLineReference.rst
++++ b/clang/docs/ClangCommandLineReference.rst
+@@ -246,9 +246,9 @@ Specify comma-separated list of triples OpenMP offloading targets to be supporte
+ 
+ Add -rpath with architecture-specific resource directory to the linker flags
+ 
+-.. option:: -fsanitize-system-blacklist=<arg>
++.. option:: -fsanitize-system-ignorelist=<arg>
+ 
+-Path to system blacklist file for sanitizers
++Path to system ignorelist file for sanitizers
+ 
+ .. option:: -fsystem-module
+ 
+@@ -842,9 +842,9 @@ Inline functions which are (explicitly or implicitly) marked inline
+ 
+ Disable auto-generation of preprocessed source files and a script for reproduction during a clang crash
+ 
+-.. option:: -fno-sanitize-blacklist
++.. option:: -fno-sanitize-ignorelist
+ 
+-Don't use blacklist file for sanitizers
++Don't use ignorelist file for sanitizers
+ 
+ .. option:: -fparse-all-comments
+ 
+@@ -881,9 +881,9 @@ Valid options are:
+ * ``global`` - Emit module destructors that are called via a platform specific array (see `llvm.global_dtors`).
+ * ``none`` - Do not emit module destructors.
+ 
+-.. option:: -fsanitize-blacklist=<arg>
++.. option:: -fsanitize-ignorelist=<arg>
+ 
+-Path to blacklist file for sanitizers
++Path to ignorelist file for sanitizers
+ 
+ .. option:: -fsanitize-cfi-canonical-jump-tables, -fno-sanitize-cfi-canonical-jump-tables
+ 
+@@ -897,11 +897,12 @@ Enable control flow integrity (CFI) checks for cross-DSO calls.
+ 
+ Generalize pointers in CFI indirect call type signature checks
+ 
+-.. option:: -fsanitize-coverage-allowlist=<arg>, -fsanitize-coverage-whitelist=<arg>
++.. option:: -fsanitize-coverage-allowlist=<arg>
+ 
+-Restrict sanitizer coverage instrumentation exclusively to modules and functions that match the provided special case list, except the blocked ones
++Restrict sanitizer coverage instrumentation exclusively to modules and
++functions that match the provided special case list, except the blocked ones
+ 
+-.. option:: -fsanitize-coverage-blocklist=<arg>, -fsanitize-coverage-blacklist=<arg>
++.. option:: -fsanitize-coverage-ignorelist=<arg>
+ 
+ Disable sanitizer coverage instrumentation for modules and functions that match the provided special case list, even the allowed ones
+ 
+diff --git a/clang/docs/ControlFlowIntegrity.rst b/clang/docs/ControlFlowIntegrity.rst
+index 97074210aa45..d8537cda1f34 100644
+--- a/clang/docs/ControlFlowIntegrity.rst
++++ b/clang/docs/ControlFlowIntegrity.rst
+@@ -108,7 +108,7 @@ This CFI scheme can be enabled on its own using ``-fsanitize=cfi-vcall``.
+ 
+ For this scheme to work, all translation units containing the definition
+ of a virtual member function (whether inline or not), other than members
+-of :ref:`blacklisted <cfi-blacklist>` types or types with public :doc:`LTO
++of :ref:`ignored <cfi-ignorelist>` types or types with public :doc:`LTO
+ visibility <LTOVisibility>`, must be compiled with ``-flto`` or ``-flto=thin``
+ enabled and be statically linked into the program.
+ 
+@@ -151,11 +151,11 @@ If a program as a matter of policy forbids the second type of cast, that
+ restriction can normally be enforced. However it may in some cases be necessary
+ for a function to perform a forbidden cast to conform with an external API
+ (e.g. the ``allocate`` member function of a standard library allocator). Such
+-functions may be :ref:`blacklisted <cfi-blacklist>`.
++functions may be :ref:`ignored <cfi-ignorelist>`.
+ 
+ For this scheme to work, all translation units containing the definition
+ of a virtual member function (whether inline or not), other than members
+-of :ref:`blacklisted <cfi-blacklist>` types or types with public :doc:`LTO
++of :ref:`ignored <cfi-ignorelist>` types or types with public :doc:`LTO
+ visibility <LTOVisibility>`, must be compiled with ``-flto`` or ``-flto=thin``
+ enabled and be statically linked into the program.
+ 
+@@ -171,7 +171,7 @@ polymorphic class type.  This CFI scheme can be enabled on its own using
+ 
+ For this scheme to work, all translation units containing the definition
+ of a virtual member function (whether inline or not), other than members
+-of :ref:`blacklisted <cfi-blacklist>` types or types with public :doc:`LTO
++of :ref:`ignored <cfi-ignorelist>` types or types with public :doc:`LTO
+ visibility <LTOVisibility>`, must be compiled with ``-flto`` or ``-flto=thin``
+ enabled and be statically linked into the program.
+ 
+@@ -201,7 +201,7 @@ the static type used at the call. This CFI scheme can be enabled on its own
+ using ``-fsanitize=cfi-icall``.
+ 
+ For this scheme to work, each indirect function call in the program, other
+-than calls in :ref:`blacklisted <cfi-blacklist>` functions, must call a
++than calls in :ref:`ignored <cfi-ignorelist>` functions, must call a
+ function which was either compiled with ``-fsanitize=cfi-icall`` enabled,
+ or whose address was taken by a function in a translation unit compiled with
+ ``-fsanitize=cfi-icall``.
+@@ -327,17 +327,17 @@ base types to be complete if they may be used for a call.
+ 
+ For this scheme to work, all translation units containing the definition
+ of a virtual member function (whether inline or not), other than members
+-of :ref:`blacklisted <cfi-blacklist>` types or types with public :doc:`LTO
++of :ref:`ignored <cfi-ignorelist>` types or types with public :doc:`LTO
+ visibility <LTOVisibility>`, must be compiled with ``-flto`` or ``-flto=thin``
+ enabled and be statically linked into the program.
+ 
+ This scheme is currently not compatible with cross-DSO CFI or the
+ Microsoft ABI.
+ 
+-.. _cfi-blacklist:
++.. _cfi-ignorelist:
+ 
+-Blacklist
+-=========
++Ignorelist
++==========
+ 
+ A :doc:`SanitizerSpecialCaseList` can be used to relax CFI checks for certain
+ source files, functions and types using the ``src``, ``fun`` and ``type``
+@@ -373,7 +373,7 @@ built with ``-flto`` or ``-flto=thin``.
+ 
+ Normally, CFI checks will only be performed for classes that have hidden LTO
+ visibility. With this flag enabled, the compiler will emit cross-DSO CFI
+-checks for all classes, except for those which appear in the CFI blacklist
++checks for all classes, except for those which appear in the CFI ignorelist
+ or which use a ``no_sanitize`` attribute.
+ 
+ Design
+diff --git a/clang/docs/MemorySanitizer.rst b/clang/docs/MemorySanitizer.rst
+index 8a88198d3e92..3ba5ce5bed3e 100644
+--- a/clang/docs/MemorySanitizer.rst
++++ b/clang/docs/MemorySanitizer.rst
+@@ -85,8 +85,8 @@ particular function.  MemorySanitizer may still instrument such functions to
+ avoid false positives.  This attribute may not be supported by other compilers,
+ so we suggest to use it together with ``__has_feature(memory_sanitizer)``.
+ 
+-Blacklist
+----------
++Ignorelist
++----------
+ 
+ MemorySanitizer supports ``src`` and ``fun`` entity types in
+ :doc:`SanitizerSpecialCaseList`, that can be used to relax MemorySanitizer
+diff --git a/clang/docs/SanitizerSpecialCaseList.rst b/clang/docs/SanitizerSpecialCaseList.rst
+index a636a02b01a5..cbb00fde9bb7 100644
+--- a/clang/docs/SanitizerSpecialCaseList.rst
++++ b/clang/docs/SanitizerSpecialCaseList.rst
+@@ -26,7 +26,7 @@ certain source-level entities to:
+ 
+ To achieve this, user may create a file listing the entities they want to
+ ignore, and pass it to clang at compile-time using
+-``-fsanitize-blacklist`` flag. See :doc:`UsersManual` for details.
++``-fsanitize-ignorelist`` flag. See :doc:`UsersManual` for details.
+ 
+ Example
+ =======
+@@ -40,19 +40,19 @@ Example
+     a[10] = 1;
+   }
+   int main() { bad_foo(); }
+-  $ cat blacklist.txt
++  $ cat ignorelist.txt
+   # Ignore reports from bad_foo function.
+   fun:bad_foo
+   $ clang -fsanitize=address foo.c ; ./a.out
+   # AddressSanitizer prints an error report.
+-  $ clang -fsanitize=address -fsanitize-blacklist=blacklist.txt foo.c ; ./a.out
++  $ clang -fsanitize=address -fsanitize-ignorelist=ignorelist.txt foo.c ; ./a.out
+   # No error report here.
+ 
+ Format
+ ======
+ 
+-Blacklists consist of entries, optionally grouped into sections. Empty lines and
+-lines starting with "#" are ignored.
++Ignorelists consist of entries, optionally grouped into sections. Empty lines
++and lines starting with "#" are ignored.
+ 
+ Section names are regular expressions written in square brackets that denote
+ which sanitizer the following entries apply to. For example, ``[address]``
+@@ -86,7 +86,7 @@ tool-specific docs.
+     fun:*BadFunction*
+     # Specific sanitizer tools may introduce categories.
+     src:/special/path/*=special_sources
+-    # Sections can be used to limit blacklist entries to specific sanitizers
++    # Sections can be used to limit ignorelist entries to specific sanitizers
+     [address]
+     fun:*BadASanFunc*
+     # Section names are regular expressions
+diff --git a/clang/docs/ThreadSanitizer.rst b/clang/docs/ThreadSanitizer.rst
+index ca5dfaafb45e..92cc9392955c 100644
+--- a/clang/docs/ThreadSanitizer.rst
++++ b/clang/docs/ThreadSanitizer.rst
+@@ -100,13 +100,13 @@ instruments such functions to avoid false positives and provide meaningful stack
+ traces.  This attribute may not be supported by other compilers, so we suggest
+ to use it together with ``__has_feature(thread_sanitizer)``.
+ 
+-Blacklist
+----------
++Ignorelist
++----------
+ 
+ ThreadSanitizer supports ``src`` and ``fun`` entity types in
+ :doc:`SanitizerSpecialCaseList`, that can be used to suppress data race reports
+ in the specified source files or functions. Unlike functions marked with
+-``no_sanitize("thread")`` attribute, blacklisted functions are not instrumented
++``no_sanitize("thread")`` attribute, ignored functions are not instrumented
+ at all. This can lead to false positives due to missed synchronization via
+ atomic operations and missed stack frames in reports.
+ 
+diff --git a/clang/docs/UndefinedBehaviorSanitizer.rst b/clang/docs/UndefinedBehaviorSanitizer.rst
+index 3345536bf821..3d48c38bf221 100644
+--- a/clang/docs/UndefinedBehaviorSanitizer.rst
++++ b/clang/docs/UndefinedBehaviorSanitizer.rst
+@@ -270,8 +270,8 @@ This attribute may not be
+ supported by other compilers, so consider using it together with
+ ``#if defined(__clang__)``.
+ 
+-Suppressing Errors in Recompiled Code (Blacklist)
+--------------------------------------------------
++Suppressing Errors in Recompiled Code (Ignorelist)
++--------------------------------------------------
+ 
+ UndefinedBehaviorSanitizer supports ``src`` and ``fun`` entity types in
+ :doc:`SanitizerSpecialCaseList`, that can be used to suppress error reports
+diff --git a/clang/docs/UsersManual.rst b/clang/docs/UsersManual.rst
+index f84c4eceebb9..244212a1336d 100644
+--- a/clang/docs/UsersManual.rst
++++ b/clang/docs/UsersManual.rst
+@@ -1614,15 +1614,15 @@ are listed below.
+ 
+    This flag is enabled by default for sanitizers in the ``cfi`` group.
+ 
+-.. option:: -fsanitize-blacklist=/path/to/blacklist/file
++.. option:: -fsanitize-ignorelist=/path/to/ignorelist/file
+ 
+    Disable or modify sanitizer checks for objects (source files, functions,
+    variables, types) listed in the file. See
+    :doc:`SanitizerSpecialCaseList` for file format description.
+ 
+-.. option:: -fno-sanitize-blacklist
++.. option:: -fno-sanitize-ignorelist
+ 
+-   Don't use blacklist file, if it was specified earlier in the command line.
++   Don't use ignorelist file, if it was specified earlier in the command line.
+ 
+ **-f[no-]sanitize-coverage=[type,features,...]**
+ 
+@@ -3679,8 +3679,8 @@ Execute ``clang-cl /?`` to see a list of supported options:
+       -fno-sanitize-address-use-after-scope
+                               Disable use-after-scope detection in AddressSanitizer
+       -fno-sanitize-address-use-odr-indicator
+-                              Disable ODR indicator globals
+-      -fno-sanitize-blacklist Don't use blacklist file for sanitizers
++                               Disable ODR indicator globals
++      -fno-sanitize-ignorelist Don't use ignorelist file for sanitizers
+       -fno-sanitize-cfi-cross-dso
+                               Disable control flow integrity (CFI) checks for cross-DSO calls.
+       -fno-sanitize-coverage=<value>
+@@ -3728,8 +3728,8 @@ Execute ``clang-cl /?`` to see a list of supported options:
+                               Enable use-after-scope detection in AddressSanitizer
+       -fsanitize-address-use-odr-indicator
+                               Enable ODR indicator globals to avoid false ODR violation reports in partially sanitized programs at the cost of an increase in binary size
+-      -fsanitize-blacklist=<value>
+-                              Path to blacklist file for sanitizers
++      -fsanitize-ignorelist=<value>
++                              Path to ignorelist file for sanitizers
+       -fsanitize-cfi-cross-dso
+                               Enable control flow integrity (CFI) checks for cross-DSO calls.
+       -fsanitize-cfi-icall-generalize-pointers
+diff --git a/clang/include/clang/Basic/CodeGenOptions.h b/clang/include/clang/Basic/CodeGenOptions.h
+index 778340b34272..8f75886d84d5 100644
+--- a/clang/include/clang/Basic/CodeGenOptions.h
++++ b/clang/include/clang/Basic/CodeGenOptions.h
+@@ -384,10 +384,10 @@ public:
+   /// On x86 this can be "fs" or "gs".
+   std::string StackProtectorGuardReg;
+ 
+-  /// Path to blocklist file specifying which objects
++  /// Path to ignorelist file specifying which objects
+   /// (files, functions) listed for instrumentation by sanitizer
+   /// coverage pass should actually not be instrumented.
+-  std::vector<std::string> SanitizeCoverageBlocklistFiles;
++  std::vector<std::string> SanitizeCoverageIgnorelistFiles;
+ 
+   /// Executable and command-line used to create a given CompilerInvocation.
+   /// Most of the time this will be the full -cc1 command.
+diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td
+index 1ae0df3633b3..92ce91c11b71 100644
+--- a/clang/include/clang/Basic/DiagnosticDriverKinds.td
++++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td
+@@ -167,12 +167,12 @@ def err_drv_invalid_libcxx_deployment : Error<
+   "invalid deployment target for -stdlib=libc++ (requires %0 or later)">;
+ def err_drv_invalid_argument_to_option : Error<
+   "invalid argument '%0' to -%1">;
+-def err_drv_malformed_sanitizer_blacklist : Error<
+-  "malformed sanitizer blacklist: '%0'">;
++def err_drv_malformed_sanitizer_ignorelist : Error<
++  "malformed sanitizer ignorelist: '%0'">;
+ def err_drv_malformed_sanitizer_coverage_whitelist : Error<
+   "malformed sanitizer coverage whitelist: '%0'">;
+-def err_drv_malformed_sanitizer_coverage_blacklist : Error<
+-  "malformed sanitizer coverage blacklist: '%0'">;
++def err_drv_malformed_sanitizer_coverage_ignorelist : Error<
++  "malformed sanitizer coverage ignorelist: '%0'">;
+ def err_drv_duplicate_config : Error<
+   "no more than one option '--config' is allowed">;
+ def err_drv_config_file_not_exist : Error<
+diff --git a/clang/include/clang/Basic/SanitizerSpecialCaseList.h b/clang/include/clang/Basic/SanitizerSpecialCaseList.h
+index c84894dae298..d024b7dfc2e8 100644
+--- a/clang/include/clang/Basic/SanitizerSpecialCaseList.h
++++ b/clang/include/clang/Basic/SanitizerSpecialCaseList.h
+@@ -39,7 +39,7 @@ public:
+   createOrDie(const std::vector<std::string> &Paths,
+               llvm::vfs::FileSystem &VFS);
+ 
+-  // Query blacklisted entries if any bit in Mask matches the entry's section.
++  // Query ignorelisted entries if any bit in Mask matches the entry's section.
+   bool inSection(SanitizerMask Mask, StringRef Prefix, StringRef Query,
+                  StringRef Category = StringRef()) const;
+ 
+diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
+index e76cfc3ea21f..016e3eb3776e 100644
+--- a/clang/include/clang/Driver/Options.td
++++ b/clang/include/clang/Driver/Options.td
+@@ -1481,24 +1481,33 @@ def fsanitize_EQ : CommaJoined<["-"], "fsanitize=">, Group<f_clang_Group>,
+                             "or suspicious behavior. See user manual for available checks">;
+ def fno_sanitize_EQ : CommaJoined<["-"], "fno-sanitize=">, Group<f_clang_Group>,
+                       Flags<[CoreOption, NoXarchOption]>;
+-def fsanitize_blacklist : Joined<["-"], "fsanitize-blacklist=">,
+-                          Group<f_clang_Group>,
+-                          HelpText<"Path to blacklist file for sanitizers">;
+-def fsanitize_system_blacklist : Joined<["-"], "fsanitize-system-blacklist=">,
+-  HelpText<"Path to system blacklist file for sanitizers">,
+-  Flags<[CC1Option]>;
+-def fno_sanitize_blacklist : Flag<["-"], "fno-sanitize-blacklist">,
+-                             Group<f_clang_Group>,
+-                             HelpText<"Don't use blacklist file for sanitizers">;
+-def fsanitize_coverage
+-    : CommaJoined<["-"], "fsanitize-coverage=">,
+-      Group<f_clang_Group>,
+-      HelpText<"Specify the type of coverage instrumentation for Sanitizers">;
+-def fno_sanitize_coverage
+-    : CommaJoined<["-"], "fno-sanitize-coverage=">,
+-      Group<f_clang_Group>, Flags<[CoreOption, NoXarchOption]>,
+-      HelpText<"Disable specified features of coverage instrumentation for "
+-               "Sanitizers">, Values<"func,bb,edge,indirect-calls,trace-bb,trace-cmp,trace-div,trace-gep,8bit-counters,trace-pc,trace-pc-guard,no-prune,inline-8bit-counters,inline-bool-flag">;
++
++def fsanitize_ignorelist_EQ : Joined<["-"], "fsanitize-ignorelist=">,
++  Group<f_clang_Group>, HelpText<"Path to ignorelist file for sanitizers">;
++def : Joined<["-"], "fsanitize-blacklist=">,
++  Group<f_clang_Group>, Flags<[HelpHidden]>, Alias<fsanitize_ignorelist_EQ>,
++  HelpText<"Alias for -fsanitize-ignorelist=">;
++
++def fsanitize_system_ignorelist_EQ : Joined<["-"], "fsanitize-system-ignorelist=">,
++  HelpText<"Path to system ignorelist file for sanitizers">, Flags<[CC1Option]>;
++def : Joined<["-"], "fsanitize-system-blacklist=">,
++  HelpText<"Alias for -fsanitize-system-ignorelist=">,
++  Flags<[CC1Option, HelpHidden]>, Alias<fsanitize_system_ignorelist_EQ>;
++
++def fno_sanitize_ignorelist : Flag<["-"], "fno-sanitize-ignorelist">,
++  Group<f_clang_Group>, HelpText<"Don't use ignorelist file for sanitizers">;
++def : Flag<["-"], "fno-sanitize-blacklist">,
++  Group<f_clang_Group>, Flags<[HelpHidden]>, Alias<fno_sanitize_ignorelist>;
++
++def fsanitize_coverage : CommaJoined<["-"], "fsanitize-coverage=">,
++  Group<f_clang_Group>,
++  HelpText<"Specify the type of coverage instrumentation for Sanitizers">;
++def fno_sanitize_coverage : CommaJoined<["-"], "fno-sanitize-coverage=">,
++  Group<f_clang_Group>, Flags<[CoreOption, NoXarchOption]>,
++  HelpText<"Disable features of coverage instrumentation for Sanitizers">,
++  Values<"func,bb,edge,indirect-calls,trace-bb,trace-cmp,trace-div,trace-gep,"
++         "8bit-counters,trace-pc,trace-pc-guard,no-prune,inline-8bit-counters,"
++         "inline-bool-flag">;
+ def fsanitize_coverage_allowlist : Joined<["-"], "fsanitize-coverage-allowlist=">,
+     Group<f_clang_Group>, Flags<[CoreOption, NoXarchOption]>,
+     HelpText<"Restrict sanitizer coverage instrumentation exclusively to modules and functions that match the provided special case list, except the blocked ones">,
+@@ -1506,13 +1515,19 @@ def fsanitize_coverage_allowlist : Joined<["-"], "fsanitize-coverage-allowlist="
+ def : Joined<["-"], "fsanitize-coverage-whitelist=">,
+   Group<f_clang_Group>, Flags<[CoreOption, HelpHidden]>, Alias<fsanitize_coverage_allowlist>,
+   HelpText<"Deprecated, use -fsanitize-coverage-allowlist= instead">;
+-def fsanitize_coverage_blocklist : Joined<["-"], "fsanitize-coverage-blocklist=">,
++def fsanitize_coverage_ignorelist : Joined<["-"], "fsanitize-coverage-ignorelist=">,
+     Group<f_clang_Group>, Flags<[CoreOption, NoXarchOption]>,
+-    HelpText<"Disable sanitizer coverage instrumentation for modules and functions that match the provided special case list, even the allowed ones">,
+-    MarshallingInfoStringVector<CodeGenOpts<"SanitizeCoverageBlocklistFiles">>;
++    HelpText<"Disable sanitizer coverage instrumentation for modules and functions "
++             "that match the provided special case list, even the allowed ones">,
++    MarshallingInfoStringVector<CodeGenOpts<"SanitizeCoverageIgnorelistFiles">>;
++def : Joined<["-"], "fsanitize-coverage-blocklist=">,
++  Group<f_clang_Group>, Flags<[CoreOption, HelpHidden]>,
++  Alias<fsanitize_coverage_ignorelist>,
++  HelpText<"Deprecated, use -fsanitize-coverage-ignorelist= instead">;
+ def : Joined<["-"], "fsanitize-coverage-blacklist=">,
+-  Group<f_clang_Group>, Flags<[CoreOption, HelpHidden]>, Alias<fsanitize_coverage_blocklist>,
+-  HelpText<"Deprecated, use -fsanitize-coverage-blocklist= instead">;
++  Group<f_clang_Group>, Flags<[CoreOption, HelpHidden]>,
++  Alias<fsanitize_coverage_ignorelist>,
++  HelpText<"Deprecated, use -fsanitize-coverage-ignorelist= instead">;
+ def fsanitize_memory_track_origins_EQ : Joined<["-"], "fsanitize-memory-track-origins=">,
+                                         Group<f_clang_Group>,
+                                         HelpText<"Enable origins tracking in MemorySanitizer">,
+diff --git a/clang/include/clang/Driver/SanitizerArgs.h b/clang/include/clang/Driver/SanitizerArgs.h
+index 6ba5aac0b702..e9609268ecd7 100644
+--- a/clang/include/clang/Driver/SanitizerArgs.h
++++ b/clang/include/clang/Driver/SanitizerArgs.h
+@@ -25,10 +25,10 @@ class SanitizerArgs {
+   SanitizerSet RecoverableSanitizers;
+   SanitizerSet TrapSanitizers;
+ 
+-  std::vector<std::string> UserBlacklistFiles;
+-  std::vector<std::string> SystemBlacklistFiles;
++  std::vector<std::string> UserIgnorelistFiles;
++  std::vector<std::string> SystemIgnorelistFiles;
+   std::vector<std::string> CoverageAllowlistFiles;
+-  std::vector<std::string> CoverageBlocklistFiles;
++  std::vector<std::string> CoverageIgnorelistFiles;
+   int CoverageFeatures = 0;
+   int MsanTrackOrigins = 0;
+   bool MsanUseAfterDtor = true;
+diff --git a/clang/include/clang/Frontend/DependencyOutputOptions.h b/clang/include/clang/Frontend/DependencyOutputOptions.h
+index 0c151935e842..78a2841d1e10 100644
+--- a/clang/include/clang/Frontend/DependencyOutputOptions.h
++++ b/clang/include/clang/Frontend/DependencyOutputOptions.h
+@@ -22,7 +22,7 @@ enum class DependencyOutputFormat { Make, NMake };
+ 
+ /// ExtraDepKind - The kind of extra dependency file.
+ enum ExtraDepKind {
+-  EDK_SanitizeBlacklist,
++  EDK_SanitizeIgnorelist,
+   EDK_ProfileList,
+   EDK_ModuleFile,
+   EDK_DepFileEntry,
+diff --git a/clang/lib/CodeGen/BackendUtil.cpp b/clang/lib/CodeGen/BackendUtil.cpp
+index 8dd510e745ed..fd3ce27bf20d 100644
+--- a/clang/lib/CodeGen/BackendUtil.cpp
++++ b/clang/lib/CodeGen/BackendUtil.cpp
+@@ -244,7 +244,7 @@ static void addSanitizerCoveragePass(const PassManagerBuilder &Builder,
+   auto Opts = getSancovOptsFromCGOpts(CGOpts);
+   PM.add(createModuleSanitizerCoverageLegacyPassPass(
+       Opts, CGOpts.SanitizeCoverageAllowlistFiles,
+-      CGOpts.SanitizeCoverageBlocklistFiles));
++      CGOpts.SanitizeCoverageIgnorelistFiles));
+ }
+ 
+ // Check if ASan should use GC-friendly instrumentation for globals.
+@@ -1111,7 +1111,7 @@ static void addSanitizers(const Triple &TargetTriple,
+       auto SancovOpts = getSancovOptsFromCGOpts(CodeGenOpts);
+       MPM.addPass(ModuleSanitizerCoveragePass(
+           SancovOpts, CodeGenOpts.SanitizeCoverageAllowlistFiles,
+-          CodeGenOpts.SanitizeCoverageBlocklistFiles));
++          CodeGenOpts.SanitizeCoverageIgnorelistFiles));
+     }
+ 
+     auto MSanPass = [&](SanitizerMask Mask, bool CompileKernel) {
+diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp
+index 8cb4f50eaac4..7bd99e13010a 100644
+--- a/clang/lib/Driver/SanitizerArgs.cpp
++++ b/clang/lib/Driver/SanitizerArgs.cpp
+@@ -133,41 +133,41 @@ static void validateSpecialCaseListFormat(const Driver &D,
+     D.Diag(MalformedSCLErrorDiagID) << BLError;
+ }
+ 
+-static void addDefaultBlacklists(const Driver &D, SanitizerMask Kinds,
+-                                 std::vector<std::string> &BlacklistFiles) {
+-  struct Blacklist {
++static void addDefaultIgnorelists(const Driver &D, SanitizerMask Kinds,
++                                 std::vector<std::string> &IgnorelistFiles) {
++  struct Ignorelist {
+     const char *File;
+     SanitizerMask Mask;
+-  } Blacklists[] = {{"asan_blacklist.txt", SanitizerKind::Address},
+-                    {"hwasan_blacklist.txt", SanitizerKind::HWAddress},
+-                    {"memtag_blacklist.txt", SanitizerKind::MemTag},
+-                    {"msan_blacklist.txt", SanitizerKind::Memory},
+-                    {"tsan_blacklist.txt", SanitizerKind::Thread},
+-                    {"dfsan_abilist.txt", SanitizerKind::DataFlow},
+-                    {"cfi_blacklist.txt", SanitizerKind::CFI},
+-                    {"ubsan_blacklist.txt",
+-                     SanitizerKind::Undefined | SanitizerKind::Integer |
+-                         SanitizerKind::Nullability |
+-                         SanitizerKind::FloatDivideByZero}};
+-
+-  for (auto BL : Blacklists) {
++  } Ignorelists[] = {{"asan_ignorelist.txt", SanitizerKind::Address},
++                     {"hwasan_ignorelist.txt", SanitizerKind::HWAddress},
++                     {"memtag_ignorelist.txt", SanitizerKind::MemTag},
++                     {"msan_ignorelist.txt", SanitizerKind::Memory},
++                     {"tsan_ignorelist.txt", SanitizerKind::Thread},
++                     {"dfsan_abilist.txt", SanitizerKind::DataFlow},
++                     {"cfi_ignorelist.txt", SanitizerKind::CFI},
++                     {"ubsan_ignorelist.txt",
++                      SanitizerKind::Undefined | SanitizerKind::Integer |
++                          SanitizerKind::Nullability |
++                          SanitizerKind::FloatDivideByZero}};
++
++  for (auto BL : Ignorelists) {
+     if (!(Kinds & BL.Mask))
+       continue;
+ 
+     clang::SmallString<64> Path(D.ResourceDir);
+     llvm::sys::path::append(Path, "share", BL.File);
+     if (D.getVFS().exists(Path))
+-      BlacklistFiles.push_back(std::string(Path.str()));
++      IgnorelistFiles.push_back(std::string(Path.str()));
+     else if (BL.Mask == SanitizerKind::CFI)
+-      // If cfi_blacklist.txt cannot be found in the resource dir, driver
++      // If cfi_ignorelist.txt cannot be found in the resource dir, driver
+       // should fail.
+       D.Diag(clang::diag::err_drv_no_such_file) << Path;
+   }
+   validateSpecialCaseListFormat(
+-      D, BlacklistFiles, clang::diag::err_drv_malformed_sanitizer_blacklist);
++      D, IgnorelistFiles, clang::diag::err_drv_malformed_sanitizer_ignorelist);
+ }
+ 
+-/// Parse -f(no-)?sanitize-(coverage-)?(white|black)list argument's values,
++/// Parse -f(no-)?sanitize-(coverage-)?(white|ignore)list argument's values,
+ /// diagnosing any invalid file paths and validating special case list format.
+ static void parseSpecialCaseListArg(const Driver &D,
+                                     const llvm::opt::ArgList &Args,
+@@ -176,7 +176,7 @@ static void parseSpecialCaseListArg(const Driver &D,
+                                     llvm::opt::OptSpecifier NoSCLOptionID,
+                                     unsigned MalformedSCLErrorDiagID) {
+   for (const auto *Arg : Args) {
+-    // Match -fsanitize-(coverage-)?(white|black)list.
++    // Match -fsanitize-(coverage-)?(white|ignore)list.
+     if (Arg->getOption().matches(SCLOptionID)) {
+       Arg->claim();
+       std::string SCLPath = Arg->getValue();
+@@ -185,7 +185,7 @@ static void parseSpecialCaseListArg(const Driver &D,
+       } else {
+         D.Diag(clang::diag::err_drv_no_such_file) << SCLPath;
+       }
+-      // Match -fno-sanitize-blacklist.
++      // Match -fno-sanitize-ignorelist.
+     } else if (Arg->getOption().matches(NoSCLOptionID)) {
+       Arg->claim();
+       SCLFiles.clear();
+@@ -581,18 +581,18 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC,
+   TrappingKinds &= Kinds;
+   RecoverableKinds &= ~TrappingKinds;
+ 
+-  // Setup blacklist files.
+-  // Add default blacklist from resource directory for activated sanitizers, and
+-  // validate special case lists format.
+-  if (!Args.hasArgNoClaim(options::OPT_fno_sanitize_blacklist))
+-    addDefaultBlacklists(D, Kinds, SystemBlacklistFiles);
++  // Setup ignorelist files.
++  // Add default ignorelist from resource directory for activated sanitizers,
++  // and validate special case lists format.
++  if (!Args.hasArgNoClaim(options::OPT_fno_sanitize_ignorelist))
++    addDefaultIgnorelists(D, Kinds, SystemIgnorelistFiles);
+ 
+-  // Parse -f(no-)?sanitize-blacklist options.
++  // Parse -f(no-)?sanitize-ignorelist options.
+   // This also validates special case lists format.
+-  parseSpecialCaseListArg(D, Args, UserBlacklistFiles,
+-                          options::OPT_fsanitize_blacklist,
+-                          options::OPT_fno_sanitize_blacklist,
+-                          clang::diag::err_drv_malformed_sanitizer_blacklist);
++  parseSpecialCaseListArg(D, Args, UserIgnorelistFiles,
++                          options::OPT_fsanitize_ignorelist_EQ,
++                          options::OPT_fno_sanitize_ignorelist,
++                          clang::diag::err_drv_malformed_sanitizer_ignorelist);
+ 
+   // Parse -f[no-]sanitize-memory-track-origins[=level] options.
+   if (AllAddedKinds & SanitizerKind::Memory) {
+@@ -746,7 +746,7 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC,
+       CoverageFeatures |= CoverageFunc;
+   }
+ 
+-  // Parse -fsanitize-coverage-(black|white)list options if coverage enabled.
++  // Parse -fsanitize-coverage-(ignore|white)list options if coverage enabled.
+   // This also validates special case lists format.
+   // Here, OptSpecifier() acts as a never-matching command-line argument.
+   // So, there is no way to clear coverage lists but you can append to them.
+@@ -756,9 +756,9 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC,
+         options::OPT_fsanitize_coverage_allowlist, OptSpecifier(),
+         clang::diag::err_drv_malformed_sanitizer_coverage_whitelist);
+     parseSpecialCaseListArg(
+-        D, Args, CoverageBlocklistFiles,
+-        options::OPT_fsanitize_coverage_blocklist, OptSpecifier(),
+-        clang::diag::err_drv_malformed_sanitizer_coverage_blacklist);
++        D, Args, CoverageIgnorelistFiles,
++        options::OPT_fsanitize_coverage_ignorelist, OptSpecifier(),
++        clang::diag::err_drv_malformed_sanitizer_coverage_ignorelist);
+   }
+ 
+   SharedRuntime =
+@@ -987,8 +987,8 @@ void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
+   }
+   addSpecialCaseListOpt(
+       Args, CmdArgs, "-fsanitize-coverage-allowlist=", CoverageAllowlistFiles);
+-  addSpecialCaseListOpt(
+-      Args, CmdArgs, "-fsanitize-coverage-blocklist=", CoverageBlocklistFiles);
++  addSpecialCaseListOpt(Args, CmdArgs, "-fsanitize-coverage-ignorelist=",
++                        CoverageIgnorelistFiles);
+ 
+   if (TC.getTriple().isOSWindows() && needsUbsanRt()) {
+     // Instruct the code generator to embed linker directives in the object file
+@@ -1027,9 +1027,9 @@ void SanitizerArgs::addArgs(const ToolChain &TC, const llvm::opt::ArgList &Args,
+         Args.MakeArgString("-fsanitize-trap=" + toString(TrapSanitizers)));
+ 
+   addSpecialCaseListOpt(Args, CmdArgs,
+-                        "-fsanitize-blacklist=", UserBlacklistFiles);
++                        "-fsanitize-ignorelist=", UserIgnorelistFiles);
+   addSpecialCaseListOpt(Args, CmdArgs,
+-                        "-fsanitize-system-blacklist=", SystemBlacklistFiles);
++                        "-fsanitize-system-ignorelist=", SystemIgnorelistFiles);
+ 
+   if (MsanTrackOrigins)
+     CmdArgs.push_back(Args.MakeArgString("-fsanitize-memory-track-origins=" +
+diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
+index b3e1e06bf8a2..b2fa21e50674 100644
+--- a/clang/lib/Frontend/CompilerInvocation.cpp
++++ b/clang/lib/Frontend/CompilerInvocation.cpp
+@@ -1973,8 +1973,8 @@ GenerateDependencyOutputArgs(const DependencyOutputOptions &Opts,
+ 
+   for (const auto &Dep : Opts.ExtraDeps) {
+     switch (Dep.second) {
+-    case EDK_SanitizeBlacklist:
+-      // Sanitizer blacklist arguments are generated from LanguageOptions.
++    case EDK_SanitizeIgnorelist:
++      // Sanitizer ignorelist arguments are generated from LanguageOptions.
+       continue;
+     case EDK_ModuleFile:
+       // Module file arguments are generated from FrontendOptions and
+@@ -2021,20 +2021,20 @@ static bool ParseDependencyOutputArgs(DependencyOutputOptions &Opts,
+     Opts.ShowIncludesDest = ShowIncludesDestination::None;
+   }
+ 
+-  // Add sanitizer blacklists as extra dependencies.
++  // Add sanitizer ignorelists as extra dependencies.
+   // They won't be discovered by the regular preprocessor, so
+   // we let make / ninja to know about this implicit dependency.
+-  if (!Args.hasArg(OPT_fno_sanitize_blacklist)) {
+-    for (const auto *A : Args.filtered(OPT_fsanitize_blacklist)) {
++  if (!Args.hasArg(OPT_fno_sanitize_ignorelist)) {
++    for (const auto *A : Args.filtered(OPT_fsanitize_ignorelist_EQ)) {
+       StringRef Val = A->getValue();
+       if (Val.find('=') == StringRef::npos)
+-        Opts.ExtraDeps.emplace_back(std::string(Val), EDK_SanitizeBlacklist);
++        Opts.ExtraDeps.emplace_back(std::string(Val), EDK_SanitizeIgnorelist);
+     }
+     if (Opts.IncludeSystemHeaders) {
+-      for (const auto *A : Args.filtered(OPT_fsanitize_system_blacklist)) {
++      for (const auto *A : Args.filtered(OPT_fsanitize_system_ignorelist_EQ)) {
+         StringRef Val = A->getValue();
+         if (Val.find('=') == StringRef::npos)
+-          Opts.ExtraDeps.emplace_back(std::string(Val), EDK_SanitizeBlacklist);
++          Opts.ExtraDeps.emplace_back(std::string(Val), EDK_SanitizeIgnorelist);
+       }
+     }
+   }
+@@ -3485,9 +3485,9 @@ void CompilerInvocation::GenerateLangArgs(const LangOptions &Opts,
+   for (StringRef Sanitizer : serializeSanitizerKinds(Opts.Sanitize))
+     GenerateArg(Args, OPT_fsanitize_EQ, Sanitizer, SA);
+ 
+-  // Conflating '-fsanitize-system-blacklist' and '-fsanitize-blacklist'.
++  // Conflating '-fsanitize-system-ignorelist' and '-fsanitize-ignorelist'.
+   for (const std::string &F : Opts.NoSanitizeFiles)
+-    GenerateArg(Args, OPT_fsanitize_blacklist, F, SA);
++    GenerateArg(Args, OPT_fsanitize_ignorelist_EQ, F, SA);
+ 
+   if (Opts.getClangABICompat() == LangOptions::ClangABI::Ver3_8)
+     GenerateArg(Args, OPT_fclang_abi_compat_EQ, "3.8", SA);
+@@ -3922,11 +3922,12 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
+   // Parse -fsanitize= arguments.
+   parseSanitizerKinds("-fsanitize=", Args.getAllArgValues(OPT_fsanitize_EQ),
+                       Diags, Opts.Sanitize);
+-  Opts.NoSanitizeFiles = Args.getAllArgValues(OPT_fsanitize_blacklist);
+-  std::vector<std::string> systemBlacklists =
+-      Args.getAllArgValues(OPT_fsanitize_system_blacklist);
++  Opts.NoSanitizeFiles = Args.getAllArgValues(OPT_fsanitize_ignorelist_EQ);
++  std::vector<std::string> systemIgnorelists =
++      Args.getAllArgValues(OPT_fsanitize_system_ignorelist_EQ);
+   Opts.NoSanitizeFiles.insert(Opts.NoSanitizeFiles.end(),
+-                              systemBlacklists.begin(), systemBlacklists.end());
++                              systemIgnorelists.begin(),
++                              systemIgnorelists.end());
+ 
+   if (Arg *A = Args.getLastArg(OPT_fclang_abi_compat_EQ)) {
+     Opts.setClangABICompat(LangOptions::ClangABI::Latest);
+diff --git a/clang/test/CodeGen/sanitize-init-order.cpp b/clang/test/CodeGen/sanitize-init-order.cpp
+index f6a414084791..3d83c29bafee 100644
+--- a/clang/test/CodeGen/sanitize-init-order.cpp
++++ b/clang/test/CodeGen/sanitize-init-order.cpp
+@@ -1,11 +1,11 @@
+ // RUN: %clang_cc1 -fsanitize=address -emit-llvm -o - %s | FileCheck %s
+ 
+-// Test blacklist functionality.
+-// RUN: echo "src:%s=init" | sed -e 's/\\/\\\\/g' > %t-file.blacklist
+-// RUN: echo "type:PODWithCtorAndDtor=init" > %t-type.blacklist
+-// RUN: echo "type:NS::PODWithCtor=init" >> %t-type.blacklist
+-// RUN: %clang_cc1 -fsanitize=address -fsanitize-blacklist=%t-file.blacklist -emit-llvm -o - %s | FileCheck %s --check-prefix=BLACKLIST
+-// RUN: %clang_cc1 -fsanitize=address -fsanitize-blacklist=%t-type.blacklist -emit-llvm -o - %s | FileCheck %s --check-prefix=BLACKLIST
++// Test ignorelist functionality.
++// RUN: echo "src:%s=init" | sed -e 's/\\/\\\\/g' > %t-file.ignorelist
++// RUN: echo "type:PODWithCtorAndDtor=init" > %t-type.ignorelist
++// RUN: echo "type:NS::PODWithCtor=init" >> %t-type.ignorelist
++// RUN: %clang_cc1 -fsanitize=address -fsanitize-ignorelist=%t-file.ignorelist -emit-llvm -o - %s | FileCheck %s --check-prefix=IGNORELIST
++// RUN: %clang_cc1 -fsanitize=address -fsanitize-ignorelist=%t-type.ignorelist -emit-llvm -o - %s | FileCheck %s --check-prefix=IGNORELIST
+ 
+ struct PODStruct {
+   int x;
+@@ -42,8 +42,8 @@ const volatile PODWithCtor array[5][5];
+ // CHECK: ![[GLOB_3]] = !{%struct.PODWithCtorAndDtor* {{.*}}, i1 true, i1 false}
+ // CHECK: ![[GLOB_4]] = !{{{.*}}class.NS::PODWithCtor{{.*}}, i1 true, i1 false}
+ 
+-// BLACKLIST: !llvm.asan.globals = !{![[GLOB_1:[0-9]+]], ![[GLOB_2:[0-9]+]], ![[GLOB_3:[0-9]+]], ![[GLOB_4:[0-9]+]]}
+-// BLACKLIST: ![[GLOB_1]] = !{%struct.PODStruct* {{.*}}, i1 false, i1 false}
+-// BLACKLIST: ![[GLOB_2]] = !{%struct.PODWithDtor* {{.*}}, i1 false, i1 false}
+-// BLACKLIST: ![[GLOB_3]] = !{%struct.PODWithCtorAndDtor* {{.*}}, i1 false, i1 false}
+-// BLACKLIST: ![[GLOB_4]] = !{{{.*}}class.NS::PODWithCtor{{.*}}, i1 false, i1 false}
++// IGNORELIST: !llvm.asan.globals = !{![[GLOB_1:[0-9]+]], ![[GLOB_2:[0-9]+]], ![[GLOB_3:[0-9]+]], ![[GLOB_4:[0-9]+]]}
++// IGNORELIST: ![[GLOB_1]] = !{%struct.PODStruct* {{.*}}, i1 false, i1 false}
++// IGNORELIST: ![[GLOB_2]] = !{%struct.PODWithDtor* {{.*}}, i1 false, i1 false}
++// IGNORELIST: ![[GLOB_3]] = !{%struct.PODWithCtorAndDtor* {{.*}}, i1 false, i1 false}
++// IGNORELIST: ![[GLOB_4]] = !{{{.*}}class.NS::PODWithCtor{{.*}}, i1 false, i1 false}
+diff --git a/clang/test/CodeGen/sanitizer-special-case-list.c b/clang/test/CodeGen/sanitizer-special-case-list.c
+index 45cfecd7efb0..493a8e9931da 100644
+--- a/clang/test/CodeGen/sanitizer-special-case-list.c
++++ b/clang/test/CodeGen/sanitizer-special-case-list.c
+@@ -1,11 +1,11 @@
+-// Verify that blacklist sections correctly select sanitizers to apply blacklist entries to.
++// Verify that ignorelist sections correctly select sanitizers to apply ignorelist entries to.
+ //
+-// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-blacklist=%S/Inputs/sanitizer-special-case-list.unsanitized1.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
+-// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-blacklist=%S/Inputs/sanitizer-special-case-list.unsanitized2.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
+-// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-blacklist=%S/Inputs/sanitizer-special-case-list.unsanitized3.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
+-// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-blacklist=%S/Inputs/sanitizer-special-case-list.unsanitized4.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
++// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-ignorelist=%S/Inputs/sanitizer-special-case-list.unsanitized1.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
++// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-ignorelist=%S/Inputs/sanitizer-special-case-list.unsanitized2.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
++// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-ignorelist=%S/Inputs/sanitizer-special-case-list.unsanitized3.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
++// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-ignorelist=%S/Inputs/sanitizer-special-case-list.unsanitized4.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=UNSANITIZED
+ //
+-// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-blacklist=%S/Inputs/sanitizer-special-case-list.sanitized.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=SANITIZED
++// RUN: %clang_cc1 -fsanitize=unsigned-integer-overflow,cfi-icall -fsanitize-ignorelist=%S/Inputs/sanitizer-special-case-list.sanitized.txt -emit-llvm %s -o - | FileCheck %s --check-prefix=SANITIZED
+ 
+ unsigned i;
+ 
+diff --git a/clang/test/CodeGen/shadowcallstack-attr.c b/clang/test/CodeGen/shadowcallstack-attr.c
+index da68251bf26a..e35e8c901ed8 100644
+--- a/clang/test/CodeGen/shadowcallstack-attr.c
++++ b/clang/test/CodeGen/shadowcallstack-attr.c
+@@ -1,23 +1,23 @@
+-// RUN: %clang_cc1 -triple x86_64-linux-unknown -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=UNBLOCKLISTED %s
++// RUN: %clang_cc1 -triple x86_64-linux-unknown -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=NOTIGNORELISTED %s
+ 
+-// RUN: %clang_cc1 -D ATTR -triple x86_64-linux-unknown -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=BLOCKLISTED %s
++// RUN: %clang_cc1 -D ATTR -triple x86_64-linux-unknown -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s
+ 
+ // RUN: echo -e "[shadow-call-stack]\nfun:foo" > %t
+-// RUN: %clang_cc1 -fsanitize-blacklist=%t -triple x86_64-linux-unknown -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=BLOCKLISTED %s
++// RUN: %clang_cc1 -fsanitize-ignorelist=%t -triple x86_64-linux-unknown -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s
+ 
+-// RUN: %clang_cc1 -triple riscv32-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=UNBLOCKLISTED %s
++// RUN: %clang_cc1 -triple riscv32-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=NOTIGNORELISTED %s
+ 
+-// RUN: %clang_cc1 -D ATTR -triple riscv32-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=BLOCKLISTED %s
++// RUN: %clang_cc1 -D ATTR -triple riscv32-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s
+ 
+ // RUN: echo -e "[shadow-call-stack]\nfun:foo" > %t
+-// RUN: %clang_cc1 -fsanitize-blacklist=%t -triple riscv32-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=BLOCKLISTED %s
++// RUN: %clang_cc1 -fsanitize-ignorelist=%t -triple riscv32-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s
+ 
+-// RUN: %clang_cc1 -triple riscv64-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=UNBLOCKLISTED %s
++// RUN: %clang_cc1 -triple riscv64-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=NOTIGNORELISTED %s
+ 
+-// RUN: %clang_cc1 -D ATTR -triple riscv64-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=BLOCKLISTED %s
++// RUN: %clang_cc1 -D ATTR -triple riscv64-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s
+ 
+ // RUN: echo -e "[shadow-call-stack]\nfun:foo" > %t
+-// RUN: %clang_cc1 -fsanitize-blacklist=%t -triple riscv64-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=BLOCKLISTED %s
++// RUN: %clang_cc1 -fsanitize-ignorelist=%t -triple riscv64-linux-gnu -emit-llvm -o - %s -fsanitize=shadow-call-stack | FileCheck -check-prefix=IGNORELISTED %s
+ 
+ #ifdef ATTR
+ __attribute__((no_sanitize("shadow-call-stack")))
+@@ -26,5 +26,5 @@ int foo(int *a) { return *a; }
+ 
+ // CHECK: define i32 @foo(i32* %a)
+ 
+-// BLOCKLISTED-NOT: attributes {{.*}}shadowcallstack{{.*}}
+-// UNBLOCKLISTED: attributes {{.*}}shadowcallstack{{.*}}
++// IGNORELISTED-NOT: attributes {{.*}}shadowcallstack{{.*}}
++// NOTIGNORELISTED: attributes {{.*}}shadowcallstack{{.*}}
+diff --git a/clang/test/CodeGen/ubsan-blacklist-vfs.c b/clang/test/CodeGen/ubsan-ignorelist-vfs.c
+similarity index 100%
+rename from clang/test/CodeGen/ubsan-blacklist-vfs.c
+rename to clang/test/CodeGen/ubsan-ignorelist-vfs.c
+diff --git a/clang/test/CodeGen/ubsan-type-blacklist.cpp b/clang/test/CodeGen/ubsan-type-ignorelist.cpp
+similarity index 71%
+rename from clang/test/CodeGen/ubsan-type-blacklist.cpp
+rename to clang/test/CodeGen/ubsan-type-ignorelist.cpp
+index 26b7aa877d15..e64b93be6a3b 100644
+--- a/clang/test/CodeGen/ubsan-type-blacklist.cpp
++++ b/clang/test/CodeGen/ubsan-type-ignorelist.cpp
+@@ -1,7 +1,7 @@
+-// Verify ubsan vptr does not check down-casts on blacklisted types.
+-// RUN: echo "type:_ZTI3Foo" > %t-type.blacklist
++// Verify ubsan vptr does not check down-casts on ignorelisted types.
++// RUN: echo "type:_ZTI3Foo" > %t-type.ignorelist
+ // RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=vptr -fsanitize-recover=vptr -emit-llvm %s -o - | FileCheck %s --check-prefix=DEFAULT
+-// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=vptr -fsanitize-recover=vptr -fsanitize-blacklist=%t-type.blacklist -emit-llvm %s -o - | FileCheck %s --check-prefix=TYPE
++// RUN: %clang_cc1 -triple x86_64-linux-gnu -fsanitize=vptr -fsanitize-recover=vptr -fsanitize-ignorelist=%t-type.ignorelist -emit-llvm %s -o - | FileCheck %s --check-prefix=TYPE
+ 
+ class Bar {
+ public:
+diff --git a/clang/test/Driver/fsanitize-blacklist.c b/clang/test/Driver/fsanitize-blacklist.c
+deleted file mode 100644
+index f3321611da42..000000000000
+--- a/clang/test/Driver/fsanitize-blacklist.c
++++ /dev/null
+@@ -1,74 +0,0 @@
+-// General blacklist usage.
+-
+-// PR12920
+-// REQUIRES: clang-driver
+-
+-// Make sure we don't match the -NOT lines with the linker invocation.
+-// Delimiters match the start of the cc1 and the start of the linker lines
+-// for fragile tests.
+-// DELIMITERS: {{^ (\(in-process\)|")}}
+-
+-// RUN: echo "fun:foo" > %t.good
+-// RUN: echo "fun:bar" > %t.second
+-// RUN: echo "badline" > %t.bad
+-
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-blacklist=%t.good -fsanitize-blacklist=%t.second %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-BLACKLIST
+-// RUN: %clang -target aarch64-linux-gnu -fsanitize=hwaddress -fsanitize-blacklist=%t.good -fsanitize-blacklist=%t.second %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-BLACKLIST
+-// CHECK-BLACKLIST: -fsanitize-blacklist={{.*}}.good" "-fsanitize-blacklist={{.*}}.second
+-
+-// Check that the default blacklist is not added as an extra dependency.
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-BLACKLIST-ASAN --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-blacklist=
+-// CHECK-DEFAULT-BLACKLIST-ASAN: -fsanitize-system-blacklist={{.*[^w]}}asan_blacklist.txt
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=hwaddress -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-BLACKLIST-HWASAN --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-blacklist=
+-// CHECK-DEFAULT-BLACKLIST-HWASAN: -fsanitize-system-blacklist={{.*}}hwasan_blacklist.txt
+-
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=integer -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-BLACKLIST --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-blacklist=
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=nullability -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-BLACKLIST --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-blacklist=
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=undefined -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-BLACKLIST --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-blacklist=
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=alignment -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-BLACKLIST --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-blacklist=
+-// RUN: %clang -target %itanium_abi_triple -fsanitize=float-divide-by-zero -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-BLACKLIST --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-blacklist=
+-// CHECK-DEFAULT-UBSAN-BLACKLIST: -fsanitize-system-blacklist={{.*}}ubsan_blacklist.txt
+-
+-// Check that combining ubsan and another sanitizer results in both blacklists being used.
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=undefined,address -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-BLACKLIST --check-prefix=CHECK-DEFAULT-BLACKLIST-ASAN --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-blacklist=
+-
+-// Ignore -fsanitize-blacklist flag if there is no -fsanitize flag.
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize-blacklist=%t.good %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SANITIZE --check-prefix=DELIMITERS
+-// CHECK-NO-SANITIZE-NOT: -fsanitize-blacklist
+-
+-// Ignore -fsanitize-blacklist flag if there is no -fsanitize flag.
+-// Now, check for the absence of -fdepfile-entry flags.
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize-blacklist=%t.good %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SANITIZE2 --check-prefix=DELIMITERS
+-// CHECK-NO-SANITIZE2-NOT: -fdepfile-entry
+-
+-// Flag -fno-sanitize-blacklist wins if it is specified later.
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-blacklist=%t.good -fno-sanitize-blacklist %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-BLACKLIST --check-prefix=DELIMITERS
+-// CHECK-NO-BLACKLIST-NOT: -fsanitize-blacklist
+-
+-// Driver barks on unexisting blacklist files.
+-// RUN: %clang -target x86_64-linux-gnu -fno-sanitize-blacklist -fsanitize-blacklist=unexisting.txt %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SUCH-FILE
+-// CHECK-NO-SUCH-FILE: error: no such file or directory: 'unexisting.txt'
+-
+-// Driver properly reports malformed blacklist files.
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-blacklist=%t.second -fsanitize-blacklist=%t.bad -fsanitize-blacklist=%t.good %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-BAD-BLACKLIST
+-// CHECK-BAD-BLACKLIST: error: malformed sanitizer blacklist: 'error parsing file '{{.*}}.bad': malformed line 1: 'badline''
+-
+-// -fno-sanitize-blacklist disables all blacklists specified earlier.
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-blacklist=%t.good -fno-sanitize-blacklist -fsanitize-blacklist=%t.second %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ONLY-FIRST-DISABLED --implicit-check-not=-fsanitize-blacklist=
+-// CHECK-ONLY_FIRST-DISABLED-NOT: good
+-// CHECK-ONLY-FIRST-DISABLED: -fsanitize-blacklist={{.*}}.second
+-// CHECK-ONLY_FIRST-DISABLED-NOT: good
+-
+-// -fno-sanitize-blacklist disables the system blacklists.
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fno-sanitize-blacklist %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DISABLED-SYSTEM --check-prefix=DELIMITERS
+-// CHECK-DISABLED-SYSTEM-NOT: -fsanitize-system-blacklist
+-
+-// If cfi_blacklist.txt cannot be found in the resource dir, driver should fail.
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=cfi -flto -fvisibility=default -resource-dir=/dev/null %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-MISSING-CFI-BLACKLIST
+-// CHECK-MISSING-CFI-BLACKLIST: error: no such file or directory: '{{.*}}cfi_blacklist.txt'
+-
+-// -fno-sanitize-blacklist disables checking for cfi_blacklist.txt in the resource dir.
+-// RUN: %clang -target x86_64-linux-gnu -fsanitize=cfi -flto -fvisibility=default -fno-sanitize-blacklist -resource-dir=/dev/null %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-MISSING-CFI-NO-BLACKLIST
+-// CHECK-MISSING-CFI-NO-BLACKLIST-NOT: error: no such file or directory: '{{.*}}cfi_blacklist.txt'
+-
+-// DELIMITERS: {{^ *"}}
+diff --git a/clang/test/Driver/fsanitize-ignorelist.c b/clang/test/Driver/fsanitize-ignorelist.c
+new file mode 100644
+index 000000000000..9c9d143bf536
+--- /dev/null
++++ b/clang/test/Driver/fsanitize-ignorelist.c
+@@ -0,0 +1,74 @@
++// General ignorelist usage.
++
++// PR12920
++// REQUIRES: clang-driver
++
++// Make sure we don't match the -NOT lines with the linker invocation.
++// Delimiters match the start of the cc1 and the start of the linker lines
++// for fragile tests.
++// DELIMITERS: {{^ (\(in-process\)|")}}
++
++// RUN: echo "fun:foo" > %t.good
++// RUN: echo "fun:bar" > %t.second
++// RUN: echo "badline" > %t.bad
++
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-ignorelist=%t.good -fsanitize-ignorelist=%t.second %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-IGNORELIST
++// RUN: %clang -target aarch64-linux-gnu -fsanitize=hwaddress -fsanitize-ignorelist=%t.good -fsanitize-ignorelist=%t.second %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-IGNORELIST
++// CHECK-IGNORELIST: -fsanitize-ignorelist={{.*}}.good" "-fsanitize-ignorelist={{.*}}.second
++
++// Check that the default ignorelist is not added as an extra dependency.
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-IGNORELIST-ASAN --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-ignorelist=
++// CHECK-DEFAULT-IGNORELIST-ASAN: -fsanitize-system-ignorelist={{.*[^w]}}asan_ignorelist.txt
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=hwaddress -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-IGNORELIST-HWASAN --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-ignorelist=
++// CHECK-DEFAULT-IGNORELIST-HWASAN: -fsanitize-system-ignorelist={{.*}}hwasan_ignorelist.txt
++
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=integer -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-IGNORELIST --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-ignorelist=
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=nullability -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-IGNORELIST --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-ignorelist=
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=undefined -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-IGNORELIST --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-ignorelist=
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=alignment -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-IGNORELIST --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-ignorelist=
++// RUN: %clang -target %itanium_abi_triple -fsanitize=float-divide-by-zero -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-IGNORELIST --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-ignorelist=
++// CHECK-DEFAULT-UBSAN-IGNORELIST: -fsanitize-system-ignorelist={{.*}}ubsan_ignorelist.txt
++
++// Check that combining ubsan and another sanitizer results in both ignorelists being used.
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=undefined,address -resource-dir=%S/Inputs/resource_dir %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT-UBSAN-IGNORELIST --check-prefix=CHECK-DEFAULT-IGNORELIST-ASAN --implicit-check-not=fdepfile-entry --implicit-check-not=-fsanitize-ignorelist=
++
++// Ignore -fsanitize-ignorelist flag if there is no -fsanitize flag.
++// RUN: %clang -target x86_64-linux-gnu -fsanitize-ignorelist=%t.good %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SANITIZE --check-prefix=DELIMITERS
++// CHECK-NO-SANITIZE-NOT: -fsanitize-ignorelist
++
++// Ignore -fsanitize-ignorelist flag if there is no -fsanitize flag.
++// Now, check for the absence of -fdepfile-entry flags.
++// RUN: %clang -target x86_64-linux-gnu -fsanitize-ignorelist=%t.good %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SANITIZE2 --check-prefix=DELIMITERS
++// CHECK-NO-SANITIZE2-NOT: -fdepfile-entry
++
++// Flag -fno-sanitize-ignorelist wins if it is specified later.
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-ignorelist=%t.good -fno-sanitize-ignorelist %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-IGNORELIST --check-prefix=DELIMITERS
++// CHECK-NO-IGNORELIST-NOT: -fsanitize-ignorelist
++
++// Driver barks on unexisting ignorelist files.
++// RUN: %clang -target x86_64-linux-gnu -fno-sanitize-ignorelist -fsanitize-ignorelist=unexisting.txt %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-NO-SUCH-FILE
++// CHECK-NO-SUCH-FILE: error: no such file or directory: 'unexisting.txt'
++
++// Driver properly reports malformed ignorelist files.
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-ignorelist=%t.second -fsanitize-ignorelist=%t.bad -fsanitize-ignorelist=%t.good %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-BAD-IGNORELIST
++// CHECK-BAD-IGNORELIST: error: malformed sanitizer ignorelist: 'error parsing file '{{.*}}.bad': malformed line 1: 'badline''
++
++// -fno-sanitize-ignorelist disables all ignorelists specified earlier.
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-ignorelist=%t.good -fno-sanitize-ignorelist -fsanitize-ignorelist=%t.second %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ONLY-FIRST-DISABLED --implicit-check-not=-fsanitize-ignorelist=
++// CHECK-ONLY_FIRST-DISABLED-NOT: good
++// CHECK-ONLY-FIRST-DISABLED: -fsanitize-ignorelist={{.*}}.second
++// CHECK-ONLY_FIRST-DISABLED-NOT: good
++
++// -fno-sanitize-ignorelist disables the system ignorelists.
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fno-sanitize-ignorelist %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-DISABLED-SYSTEM --check-prefix=DELIMITERS
++// CHECK-DISABLED-SYSTEM-NOT: -fsanitize-system-ignorelist
++
++// If cfi_ignorelist.txt cannot be found in the resource dir, driver should fail.
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=cfi -flto -fvisibility=default -resource-dir=/dev/null %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-MISSING-CFI-IGNORELIST
++// CHECK-MISSING-CFI-IGNORELIST: error: no such file or directory: '{{.*}}cfi_ignorelist.txt'
++
++// -fno-sanitize-ignorelist disables checking for cfi_ignorelist.txt in the resource dir.
++// RUN: %clang -target x86_64-linux-gnu -fsanitize=cfi -flto -fvisibility=default -fno-sanitize-ignorelist -resource-dir=/dev/null %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-MISSING-CFI-NO-IGNORELIST
++// CHECK-MISSING-CFI-NO-IGNORELIST-NOT: error: no such file or directory: '{{.*}}cfi_ignorelist.txt'
++
++// DELIMITERS: {{^ *"}}
+diff --git a/clang/test/Frontend/dependency-gen.c b/clang/test/Frontend/dependency-gen.c
+index a42804d9f214..3746b440ec6e 100644
+--- a/clang/test/Frontend/dependency-gen.c
++++ b/clang/test/Frontend/dependency-gen.c
+@@ -20,27 +20,27 @@
+ // RUN: cd a/b
+ // RUN: %clang -MD -MF - %s -fsyntax-only -I ./ | FileCheck -check-prefix=CHECK-SIX %s
+ // CHECK-SIX: {{ }}x.h
+-// RUN: echo "fun:foo" > %t.blacklist
+-// RUN: %clang -MD -MF - %s -fsyntax-only -resource-dir=%S/Inputs/resource_dir_with_sanitizer_blacklist -fsanitize=undefined -flto -fvisibility=hidden -fsanitize-blacklist=%t.blacklist -I ./ | FileCheck -check-prefix=CHECK-SEVEN %s
+-// CHECK-SEVEN: .blacklist
++// RUN: echo "fun:foo" > %t.ignorelist
++// RUN: %clang -MD -MF - %s -fsyntax-only -resource-dir=%S/Inputs/resource_dir_with_sanitizer_ignorelist -fsanitize=undefined -flto -fvisibility=hidden -fsanitize-ignorelist=%t.ignorelist -I ./ | FileCheck -check-prefix=CHECK-SEVEN %s
++// CHECK-SEVEN: .ignorelist
+ // CHECK-SEVEN: {{ }}x.h
+ #ifndef INCLUDE_FLAG_TEST
+ #include <x.h>
+ #endif
+ 
+-// RUN: echo "fun:foo" > %t.blacklist1
+-// RUN: echo "fun:foo" > %t.blacklist2
+-// RUN: %clang -MD -MF - %s -fsyntax-only -resource-dir=%S/Inputs/resource_dir_with_sanitizer_blacklist -fsanitize=undefined -flto -fvisibility=hidden -fsanitize-blacklist=%t.blacklist1 -fsanitize-blacklist=%t.blacklist2 -I ./ | FileCheck -check-prefix=TWO-BLACK-LISTS %s
+-// TWO-BLACK-LISTS: dependency-gen.o:
+-// TWO-BLACK-LISTS-DAG: blacklist1
+-// TWO-BLACK-LISTS-DAG: blacklist2
+-// TWO-BLACK-LISTS-DAG: x.h
+-// TWO-BLACK-LISTS-DAG: dependency-gen.c
++// RUN: echo "fun:foo" > %t.ignorelist1
++// RUN: echo "fun:foo" > %t.ignorelist2
++// RUN: %clang -MD -MF - %s -fsyntax-only -resource-dir=%S/Inputs/resource_dir_with_sanitizer_ignorelist -fsanitize=undefined -flto -fvisibility=hidden -fsanitize-ignorelist=%t.ignorelist1 -fsanitize-ignorelist=%t.ignorelist2 -I ./ | FileCheck -check-prefix=TWO-IGNORE-LISTS %s
++// TWO-IGNORE-LISTS: dependency-gen.o:
++// TWO-IGNORE-LISTS-DAG: ignorelist1
++// TWO-IGNORE-LISTS-DAG: ignorelist2
++// TWO-IGNORE-LISTS-DAG: x.h
++// TWO-IGNORE-LISTS-DAG: dependency-gen.c
+ 
+-// RUN: %clang -MD -MF - %s -fsyntax-only -resource-dir=%S/Inputs/resource_dir_with_sanitizer_blacklist -fsanitize=undefined -flto -fvisibility=hidden -I ./ | FileCheck -check-prefix=USER-AND-SYS-DEPS %s
++// RUN: %clang -MD -MF - %s -fsyntax-only -resource-dir=%S/Inputs/resource_dir_with_sanitizer_ignorelist -fsanitize=undefined -flto -fvisibility=hidden -I ./ | FileCheck -check-prefix=USER-AND-SYS-DEPS %s
+ // USER-AND-SYS-DEPS: dependency-gen.o:
+-// USER-AND-SYS-DEPS-DAG: ubsan_blacklist.txt
++// USER-AND-SYS-DEPS-DAG: ubsan_ignorelist.txt
+ 
+-// RUN: %clang -MMD -MF - %s -fsyntax-only -resource-dir=%S/Inputs/resource_dir_with_sanitizer_blacklist -fsanitize=undefined -flto -fvisibility=hidden -I ./ | FileCheck -check-prefix=ONLY-USER-DEPS %s
++// RUN: %clang -MMD -MF - %s -fsyntax-only -resource-dir=%S/Inputs/resource_dir_with_sanitizer_ignorelist -fsanitize=undefined -flto -fvisibility=hidden -I ./ | FileCheck -check-prefix=ONLY-USER-DEPS %s
+ // ONLY-USER-DEPS: dependency-gen.o:
+-// NOT-ONLY-USER-DEPS: ubsan_blacklist.txt
++// NOT-ONLY-USER-DEPS: ubsan_ignorelist.txt
+diff --git a/clang/test/Frontend/print-header-includes.c b/clang/test/Frontend/print-header-includes.c
+index 292941d4353e..c210e53ee96c 100644
+--- a/clang/test/Frontend/print-header-includes.c
++++ b/clang/test/Frontend/print-header-includes.c
+@@ -46,16 +46,16 @@
+ // MS-STDERR: Note: including file:  {{[^ ]*test2.h}}
+ // MS-STDERR-NOT: Note
+ 
+-// RUN: echo "fun:foo" > %t.blacklist
++// RUN: echo "fun:foo" > %t.ignorelist
+ // RUN: %clang_cc1 -I%S -isystem %S/Inputs/SystemHeaderPrefix \
+-// RUN:     -fsanitize=address -fdepfile-entry=%t.blacklist \
++// RUN:     -fsanitize=address -fdepfile-entry=%t.ignorelist \
+ // RUN:     --show-includes -o /dev/null %s | \
+-// RUN:     FileCheck --strict-whitespace --check-prefix=MS-BLACKLIST %s
+-// MS-BLACKLIST: Note: including file: {{[^ ]*\.blacklist}}
+-// MS-BLACKLIST-NOT: Note: including file: {{[^ ]*noline.h}}
+-// MS-BLACKLIST: Note: including file: {{[^ ]*test.h}}
+-// MS-BLACKLIST: Note: including file:  {{[^ ]*test2.h}}
+-// MS-BLACKLIST-NOT: Note
++// RUN:     FileCheck --strict-whitespace --check-prefix=MS-IGNORELIST %s
++// MS-IGNORELIST: Note: including file: {{[^ ]*\.ignorelist}}
++// MS-IGNORELIST-NOT: Note: including file: {{[^ ]*noline.h}}
++// MS-IGNORELIST: Note: including file: {{[^ ]*test.h}}
++// MS-IGNORELIST: Note: including file:  {{[^ ]*test2.h}}
++// MS-IGNORELIST-NOT: Note
+ 
+ #include <noline.h>
+ #include "Inputs/test.h"
+diff --git a/clang/unittests/Driver/SanitizerArgsTest.cpp b/clang/unittests/Driver/SanitizerArgsTest.cpp
+index 84bd56852345..2539330126f0 100644
+--- a/clang/unittests/Driver/SanitizerArgsTest.cpp
++++ b/clang/unittests/Driver/SanitizerArgsTest.cpp
+@@ -92,30 +92,30 @@ private:
+   std::unique_ptr<driver::Compilation> CompilationJob;
+ };
+ 
+-TEST_F(SanitizerArgsTest, Blacklists) {
++TEST_F(SanitizerArgsTest, Ignorelists) {
+   const std::string ResourceDir = "/opt/llvm/lib/resources";
+-  const std::string UserBlacklist = "/source/my_blacklist.txt";
+-  const std::string ASanBlacklist =
+-      concatPaths({ResourceDir, "share", "asan_blacklist.txt"});
++  const std::string UserIgnorelist = "/source/my_ignorelist.txt";
++  const std::string ASanIgnorelist =
++      concatPaths({ResourceDir, "share", "asan_ignorelist.txt"});
+ 
+   auto &Command = emulateSingleCompilation(
+       /*ExtraArgs=*/{"-fsanitize=address", "-resource-dir", ResourceDir,
+-                     std::string("-fsanitize-blacklist=") + UserBlacklist},
+-      /*ExtraFiles=*/{ASanBlacklist, UserBlacklist});
++                     std::string("-fsanitize-ignorelist=") + UserIgnorelist},
++      /*ExtraFiles=*/{ASanIgnorelist, UserIgnorelist});
+ 
+-  // System blacklists are added based on resource-dir.
++  // System ignorelists are added based on resource-dir.
+   EXPECT_THAT(Command.getArguments(),
+-              Contains(StrEq(std::string("-fsanitize-system-blacklist=") +
+-                             ASanBlacklist)));
+-  // User blacklists should also be added.
++              Contains(StrEq(std::string("-fsanitize-system-ignorelist=") +
++                             ASanIgnorelist)));
++  // User ignorelists should also be added.
+   EXPECT_THAT(
+       Command.getArguments(),
+-      Contains(StrEq(std::string("-fsanitize-blacklist=") + UserBlacklist)));
++      Contains(StrEq(std::string("-fsanitize-ignorelist=") + UserIgnorelist)));
+ }
+ 
+ TEST_F(SanitizerArgsTest, XRayLists) {
+   const std::string XRayWhitelist = "/source/xray_whitelist.txt";
+-  const std::string XRayBlacklist = "/source/xray_blacklist.txt";
++  const std::string XRayIgnorelist = "/source/xray_ignorelist.txt";
+   const std::string XRayAttrList = "/source/xray_attr_list.txt";
+ 
+   auto &Command = emulateSingleCompilation(
+@@ -123,17 +123,17 @@ TEST_F(SanitizerArgsTest, XRayLists) {
+       {
+           "-fxray-instrument",
+           "-fxray-always-instrument=" + XRayWhitelist,
+-          "-fxray-never-instrument=" + XRayBlacklist,
++          "-fxray-never-instrument=" + XRayIgnorelist,
+           "-fxray-attr-list=" + XRayAttrList,
+       },
+-      /*ExtraFiles=*/{XRayWhitelist, XRayBlacklist, XRayAttrList});
++      /*ExtraFiles=*/{XRayWhitelist, XRayIgnorelist, XRayAttrList});
+ 
+-  // Blacklists exist in the filesystem, so they should be added to the
++  // Ignorelists exist in the filesystem, so they should be added to the
+   // compilation command, produced by the driver.
+   EXPECT_THAT(Command.getArguments(),
+               Contains(StrEq("-fxray-always-instrument=" + XRayWhitelist)));
+   EXPECT_THAT(Command.getArguments(),
+-              Contains(StrEq("-fxray-never-instrument=" + XRayBlacklist)));
++              Contains(StrEq("-fxray-never-instrument=" + XRayIgnorelist)));
+   EXPECT_THAT(Command.getArguments(),
+               Contains(StrEq("-fxray-attr-list=" + XRayAttrList)));
+ }
+diff --git a/compiler-rt/lib/asan/CMakeLists.txt b/compiler-rt/lib/asan/CMakeLists.txt
+index 17214e3f95cb..5500747a5739 100644
+--- a/compiler-rt/lib/asan/CMakeLists.txt
++++ b/compiler-rt/lib/asan/CMakeLists.txt
+@@ -327,7 +327,7 @@ else()
+   endforeach()
+ endif()
+ 
+-add_compiler_rt_resource_file(asan_blacklist asan_blacklist.txt asan)
++add_compiler_rt_resource_file(asan_ignorelist asan_ignorelist.txt asan)
+ 
+ add_subdirectory(scripts)
+ 
+diff --git a/compiler-rt/lib/asan/asan_blacklist.txt b/compiler-rt/lib/asan/asan_ignorelist.txt
+similarity index 59%
+rename from compiler-rt/lib/asan/asan_blacklist.txt
+rename to compiler-rt/lib/asan/asan_ignorelist.txt
+index c25921fd5fe7..5ce59926ce2f 100644
+--- a/compiler-rt/lib/asan/asan_blacklist.txt
++++ b/compiler-rt/lib/asan/asan_ignorelist.txt
+@@ -1,6 +1,6 @@
+-# Blacklist for AddressSanitizer. Turns off instrumentation of particular
+-# functions or sources. Use with care. You may set location of blacklist
+-# at compile-time using -fsanitize-blacklist=<path> flag.
++# Ignorelist for AddressSanitizer. Turns off instrumentation of particular
++# functions or sources. Use with care. You may set location of ignorelist
++# at compile-time using -fsanitize-ignorelist=<path> flag.
+ 
+ # Example usage:
+ # fun:*bad_function_name*
+diff --git a/compiler-rt/lib/asan/tests/CMakeLists.txt b/compiler-rt/lib/asan/tests/CMakeLists.txt
+index e56ae16288ca..d7caf4c861bb 100644
+--- a/compiler-rt/lib/asan/tests/CMakeLists.txt
++++ b/compiler-rt/lib/asan/tests/CMakeLists.txt
+@@ -53,7 +53,7 @@ list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS -g)
+ # Use -D instead of definitions to please custom compile command.
+ list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
+   ${COMPILER_RT_ASAN_SHADOW_SCALE_FLAG}
+-  -DASAN_HAS_BLACKLIST=1
++  -DASAN_HAS_IGNORELIST=1
+   -DASAN_HAS_EXCEPTIONS=1
+   -DASAN_UAR=0
+   )
+@@ -68,11 +68,11 @@ if(APPLE)
+   list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS})
+ endif()
+ 
+-set(ASAN_BLACKLIST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/asan_test.ignore")
++set(ASAN_IGNORELIST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/asan_test.ignore")
+ set(ASAN_UNITTEST_INSTRUMENTED_CFLAGS
+   ${ASAN_UNITTEST_COMMON_CFLAGS}
+   -fsanitize=address
+-  "-fsanitize-blacklist=${ASAN_BLACKLIST_FILE}"
++  "-fsanitize-ignorelist=${ASAN_IGNORELIST_FILE}"
+ )
+ if(NOT MSVC)
+   list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS --driver-mode=g++)
+@@ -166,7 +166,7 @@ function(add_asan_tests arch test_runtime)
+   # Closure to keep the values.
+   function(generate_asan_tests test_objects test_suite testname)
+     generate_compiler_rt_tests(${test_objects} ${test_suite} ${testname} ${arch}
+-      COMPILE_DEPS ${ASAN_UNITTEST_HEADERS} ${ASAN_BLACKLIST_FILE}
++      COMPILE_DEPS ${ASAN_UNITTEST_HEADERS} ${ASAN_IGNORELIST_FILE}
+       DEPS gtest asan
+       KIND ${TEST_KIND}
+       ${ARGN}
+diff --git a/compiler-rt/lib/asan/tests/asan_test.cpp b/compiler-rt/lib/asan/tests/asan_test.cpp
+index c0b79bba48ff..eb61410d768f 100644
+--- a/compiler-rt/lib/asan/tests/asan_test.cpp
++++ b/compiler-rt/lib/asan/tests/asan_test.cpp
+@@ -230,13 +230,13 @@ TEST(AddressSanitizer, UAF_Packed5) {
+   delete [] Ident(p);
+ }
+ 
+-#if ASAN_HAS_BLACKLIST
++#if ASAN_HAS_IGNORELIST
+ TEST(AddressSanitizer, IgnoreTest) {
+   int *x = Ident(new int);
+   delete Ident(x);
+   *x = 0;
+ }
+-#endif  // ASAN_HAS_BLACKLIST
++#endif  // ASAN_HAS_IGNORELIST
+ 
+ struct StructWithBitField {
+   int bf1:1;
+diff --git a/compiler-rt/lib/asan/tests/asan_test.ignore b/compiler-rt/lib/asan/tests/asan_test.ignore
+index ea5c26099e75..ed65adf1c487 100644
+--- a/compiler-rt/lib/asan/tests/asan_test.ignore
++++ b/compiler-rt/lib/asan/tests/asan_test.ignore
+@@ -1,3 +1,3 @@
+-# blacklisted functions for instrumented ASan unit test
++# ignorelisted functions for instrumented ASan unit test
+ fun:*IgnoreTest*
+ fun:*SomeOtherFunc*
+diff --git a/compiler-rt/lib/asan/tests/asan_test_config.h b/compiler-rt/lib/asan/tests/asan_test_config.h
+index a0fadf8af9cb..9aac0875987a 100644
+--- a/compiler-rt/lib/asan/tests/asan_test_config.h
++++ b/compiler-rt/lib/asan/tests/asan_test_config.h
+@@ -28,8 +28,8 @@ using std::string;
+ # error "please define ASAN_HAS_EXCEPTIONS"
+ #endif
+ 
+-#ifndef ASAN_HAS_BLACKLIST
+-# error "please define ASAN_HAS_BLACKLIST"
++#ifndef ASAN_HAS_IGNORELIST
++# error "please define ASAN_HAS_IGNORELIST"
+ #endif
+ 
+ #ifndef ASAN_NEEDS_SEGV
+diff --git a/compiler-rt/lib/cfi/CMakeLists.txt b/compiler-rt/lib/cfi/CMakeLists.txt
+index 9a641d33ac48..cfd523778144 100644
+--- a/compiler-rt/lib/cfi/CMakeLists.txt
++++ b/compiler-rt/lib/cfi/CMakeLists.txt
+@@ -40,4 +40,4 @@ if(OS_NAME MATCHES "Linux" OR OS_NAME MATCHES "FreeBSD" OR OS_NAME MATCHES "NetB
+   endforeach()
+ endif()
+ 
+-add_compiler_rt_resource_file(cfi_blacklist cfi_blacklist.txt cfi)
++add_compiler_rt_resource_file(cfi_ignorelist cfi_ignorelist.txt cfi)
+diff --git a/compiler-rt/lib/cfi/cfi_blacklist.txt b/compiler-rt/lib/cfi/cfi_ignorelist.txt
+similarity index 100%
+rename from compiler-rt/lib/cfi/cfi_blacklist.txt
+rename to compiler-rt/lib/cfi/cfi_ignorelist.txt
+diff --git a/compiler-rt/lib/hwasan/CMakeLists.txt b/compiler-rt/lib/hwasan/CMakeLists.txt
+index b20bb441c820..707cbb44233f 100644
+--- a/compiler-rt/lib/hwasan/CMakeLists.txt
++++ b/compiler-rt/lib/hwasan/CMakeLists.txt
+@@ -173,7 +173,7 @@ foreach(arch ${HWASAN_SUPPORTED_ARCH})
+   endif()
+ endforeach()
+ 
+-add_compiler_rt_resource_file(hwasan_blacklist hwasan_blacklist.txt hwasan)
++add_compiler_rt_resource_file(hwasan_ignorelist hwasan_ignorelist.txt hwasan)
+ 
+ add_subdirectory("scripts")
+ 
+diff --git a/compiler-rt/lib/hwasan/hwasan_blacklist.txt b/compiler-rt/lib/hwasan/hwasan_blacklist.txt
+deleted file mode 100644
+index 395ba28f0212..000000000000
+--- a/compiler-rt/lib/hwasan/hwasan_blacklist.txt
++++ /dev/null
+@@ -1,7 +0,0 @@
+-# Blacklist for HWAddressSanitizer. Turns off instrumentation of particular
+-# functions or sources. Use with care. You may set location of blacklist
+-# at compile-time using -fsanitize-blacklist=<path> flag.
+-
+-# Example usage:
+-# fun:*bad_function_name*
+-# src:file_with_tricky_code.cc
+diff --git a/compiler-rt/lib/hwasan/hwasan_ignorelist.txt b/compiler-rt/lib/hwasan/hwasan_ignorelist.txt
+new file mode 100644
+index 000000000000..70590c970f55
+--- /dev/null
++++ b/compiler-rt/lib/hwasan/hwasan_ignorelist.txt
+@@ -0,0 +1,7 @@
++# Ignorelist for HWAddressSanitizer. Turns off instrumentation of particular
++# functions or sources. Use with care. You may set location of ignorelist
++# at compile-time using -fsanitize-ignorelist=<path> flag.
++
++# Example usage:
++# fun:*bad_function_name*
++# src:file_with_tricky_code.cc
+diff --git a/compiler-rt/lib/msan/CMakeLists.txt b/compiler-rt/lib/msan/CMakeLists.txt
+index 86e96a01a118..cb1a784eee8b 100644
+--- a/compiler-rt/lib/msan/CMakeLists.txt
++++ b/compiler-rt/lib/msan/CMakeLists.txt
+@@ -80,8 +80,8 @@ foreach(arch ${MSAN_SUPPORTED_ARCH})
+   endif()
+ endforeach()
+ 
+-add_compiler_rt_resource_file(msan_blacklist msan_blacklist.txt msan)
+-list(APPEND MSAN_RUNTIME_LIBRARIES msan_blacklist)
++add_compiler_rt_resource_file(msan_ignorelist msan_ignorelist.txt msan)
++list(APPEND MSAN_RUNTIME_LIBRARIES msan_ignorelist)
+ 
+ if(COMPILER_RT_INCLUDE_TESTS)
+   add_subdirectory(tests)
+diff --git a/compiler-rt/lib/msan/msan_blacklist.txt b/compiler-rt/lib/msan/msan_blacklist.txt
+deleted file mode 100644
+index 3efef5712185..000000000000
+--- a/compiler-rt/lib/msan/msan_blacklist.txt
++++ /dev/null
+@@ -1,10 +0,0 @@
+-# Blacklist for MemorySanitizer. Turns off instrumentation of particular
+-# functions or sources. Use with care. You may set location of blacklist
+-# at compile-time using -fsanitize-blacklist=<path> flag.
+-
+-# Example usage:
+-# fun:*bad_function_name*
+-# src:file_with_tricky_code.cc
+-
+-# https://bugs.llvm.org/show_bug.cgi?id=31877
+-fun:__gxx_personality_*
+diff --git a/compiler-rt/lib/msan/msan_ignorelist.txt b/compiler-rt/lib/msan/msan_ignorelist.txt
+new file mode 100644
+index 000000000000..1fae64d880bc
+--- /dev/null
++++ b/compiler-rt/lib/msan/msan_ignorelist.txt
+@@ -0,0 +1,10 @@
++# Ignorelist for MemorySanitizer. Turns off instrumentation of particular
++# functions or sources. Use with care. You may set location of ignorelist
++# at compile-time using -fsanitize-ignorelist=<path> flag.
++
++# Example usage:
++# fun:*bad_function_name*
++# src:file_with_tricky_code.cc
++
++# https://bugs.llvm.org/show_bug.cgi?id=31877
++fun:__gxx_personality_*
+diff --git a/compiler-rt/lib/msan/tests/CMakeLists.txt b/compiler-rt/lib/msan/tests/CMakeLists.txt
+index de3d95094848..de2b582281ba 100644
+--- a/compiler-rt/lib/msan/tests/CMakeLists.txt
++++ b/compiler-rt/lib/msan/tests/CMakeLists.txt
+@@ -9,7 +9,7 @@ set(MSAN_LIBCXX_CFLAGS
+   -fsanitize=memory
+   -fsanitize-memory-track-origins
+   -Wno-pedantic
+-  -Xclang -fdepfile-entry=${COMPILER_RT_OUTPUT_DIR}/share/msan_blacklist.txt
++  -Xclang -fdepfile-entry=${COMPILER_RT_OUTPUT_DIR}/share/msan_ignorelist.txt
+   )
+ 
+ # Unittest sources and build flags.
+diff --git a/compiler-rt/lib/msan/tests/msan_test.cpp b/compiler-rt/lib/msan/tests/msan_test.cpp
+index daf80bb23efe..552f7b9eb9d0 100644
+--- a/compiler-rt/lib/msan/tests/msan_test.cpp
++++ b/compiler-rt/lib/msan/tests/msan_test.cpp
+@@ -4832,7 +4832,7 @@ TEST(MemorySanitizer, throw_catch) {
+     // __gxx_personality_v0 is instrumented, libgcc_s is not; as a result,
+     // __msan_param_tls is not updated and __gxx_personality_v0 can find
+     // leftover poison from the previous call.
+-    // A suppression in msan_blacklist.txt makes it work.
++    // A suppression in msan_ignorelist.txt makes it work.
+     throw_stuff();
+   } catch (const int &e) {
+     // pass
+diff --git a/compiler-rt/test/asan/TestCases/Helpers/blacklist-extra.cpp b/compiler-rt/test/asan/TestCases/Helpers/ignorelist-extra.cpp
+similarity index 61%
+rename from compiler-rt/test/asan/TestCases/Helpers/blacklist-extra.cpp
+rename to compiler-rt/test/asan/TestCases/Helpers/ignorelist-extra.cpp
+index 627115cdda2b..1d99df5ae33e 100644
+--- a/compiler-rt/test/asan/TestCases/Helpers/blacklist-extra.cpp
++++ b/compiler-rt/test/asan/TestCases/Helpers/ignorelist-extra.cpp
+@@ -1,4 +1,4 @@
+-// This function is broken, but this file is blacklisted
++// This function is broken, but this file is ignorelisted
+ int externalBrokenFunction(int argc) {
+   char x[10] = {0};
+   return x[argc * 10];  // BOOM
+diff --git a/compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist-extra.cpp b/compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist-extra.cpp
+similarity index 100%
+rename from compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist-extra.cpp
+rename to compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist-extra.cpp
+diff --git a/compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist-extra2.cpp b/compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist-extra2.cpp
+similarity index 100%
+rename from compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist-extra2.cpp
+rename to compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist-extra2.cpp
+diff --git a/compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist.txt b/compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist.txt
+similarity index 55%
+rename from compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist.txt
+rename to compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist.txt
+index 27e49e25f67a..f9201b21f2cb 100644
+--- a/compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist.txt
++++ b/compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist.txt
+@@ -1,3 +1,3 @@
+ global:*badGlobal*=init
+ type:*badNamespace::BadClass*=init
+-src:*initialization-blacklist-extra2.cpp=init
++src:*initialization-ignorelist-extra2.cpp=init
+diff --git a/compiler-rt/test/asan/TestCases/Windows/iostream_sbo.cpp b/compiler-rt/test/asan/TestCases/Windows/iostream_sbo.cpp
+index 46f452a32522..8c7570f3c7d8 100644
+--- a/compiler-rt/test/asan/TestCases/Windows/iostream_sbo.cpp
++++ b/compiler-rt/test/asan/TestCases/Windows/iostream_sbo.cpp
+@@ -1,9 +1,9 @@
+-// First, check this works with the default blacklist:
++// First, check this works with the default ignorelist:
+ // RUN: %clang_cl_asan -Od %s -Fe%t
+ // RUN: echo "42" | %run %t 2>&1 | FileCheck %s
+ //
+-// Then, make sure it still works when a user uses his own blacklist file:
+-// RUN: %clang_cl_asan -Od %s -fsanitize-blacklist=%p/../Helpers/initialization-blacklist.txt -Fe%t2
++// Then, make sure it still works when a user uses their own ignorelist file:
++// RUN: %clang_cl_asan -Od %s -fsanitize-ignorelist=%p/../Helpers/initialization-ignorelist.txt -Fe%t2
+ // RUN: echo "42" | %run %t2 2>&1 | FileCheck %s
+ 
+ #include <iostream>
+diff --git a/compiler-rt/test/asan/TestCases/blacklist.cpp b/compiler-rt/test/asan/TestCases/blacklist.cpp
+deleted file mode 100644
+index 9508f6f4d971..000000000000
+--- a/compiler-rt/test/asan/TestCases/blacklist.cpp
++++ /dev/null
+@@ -1,38 +0,0 @@
+-// Test the blacklist functionality of ASan
+-
+-// RUN: echo "fun:*brokenFunction*" > %tmp
+-// RUN: echo "global:*badGlobal*" >> %tmp
+-// RUN: echo "src:*blacklist-extra.cpp" >> %tmp
+-// RUN: %clangxx_asan -fsanitize-blacklist=%tmp -O0 %s -o %t \
+-// RUN: %p/Helpers/blacklist-extra.cpp && %run %t 2>&1
+-// RUN: %clangxx_asan -fsanitize-blacklist=%tmp -O1 %s -o %t \
+-// RUN: %p/Helpers/blacklist-extra.cpp && %run %t 2>&1
+-// RUN: %clangxx_asan -fsanitize-blacklist=%tmp -O2 %s -o %t \
+-// RUN: %p/Helpers/blacklist-extra.cpp && %run %t 2>&1
+-// RUN: %clangxx_asan -fsanitize-blacklist=%tmp -O3 %s -o %t \
+-// RUN: %p/Helpers/blacklist-extra.cpp && %run %t 2>&1
+-
+-// badGlobal is accessed improperly, but we blacklisted it. Align
+-// it to make sure memory past the end of badGlobal will be in
+-// the same page.
+-__attribute__((aligned(16))) int badGlobal;
+-int readBadGlobal() {
+-  return (&badGlobal)[1];
+-}
+-
+-// A function which is broken, but excluded in the blacklist.
+-int brokenFunction(int argc) {
+-  char x[10] = {0};
+-  return x[argc * 10];  // BOOM
+-}
+-
+-// This function is defined in Helpers/blacklist-extra.cpp, a source file which
+-// is blacklisted by name
+-int externalBrokenFunction(int x);
+-
+-int main(int argc, char **argv) {
+-  brokenFunction(argc);
+-  int x = readBadGlobal();
+-  externalBrokenFunction(argc);
+-  return 0;
+-}
+diff --git a/compiler-rt/test/asan/TestCases/default_blacklist.cpp b/compiler-rt/test/asan/TestCases/default_ignorelist.cpp
+similarity index 55%
+rename from compiler-rt/test/asan/TestCases/default_blacklist.cpp
+rename to compiler-rt/test/asan/TestCases/default_ignorelist.cpp
+index 4de851ae73fe..8297b51e7680 100644
+--- a/compiler-rt/test/asan/TestCases/default_blacklist.cpp
++++ b/compiler-rt/test/asan/TestCases/default_ignorelist.cpp
+@@ -2,6 +2,6 @@
+ // XFAIL: android
+ // UNSUPPORTED: ios
+ //
+-// Test that ASan uses the default blacklist from resource directory.
++// Test that ASan uses the default ignorelist from resource directory.
+ // RUN: %clangxx_asan -### %s 2>&1 | FileCheck %s
+-// CHECK: fsanitize-system-blacklist={{.*}}asan_blacklist.txt
++// CHECK: fsanitize-system-ignorelist={{.*}}asan_ignorelist.txt
+diff --git a/compiler-rt/test/asan/TestCases/ignorelist.cpp b/compiler-rt/test/asan/TestCases/ignorelist.cpp
+new file mode 100644
+index 000000000000..348ea5d350bf
+--- /dev/null
++++ b/compiler-rt/test/asan/TestCases/ignorelist.cpp
+@@ -0,0 +1,38 @@
++// Test the ignorelist functionality of ASan
++
++// RUN: echo "fun:*brokenFunction*" > %tmp
++// RUN: echo "global:*badGlobal*" >> %tmp
++// RUN: echo "src:*ignorelist-extra.cpp" >> %tmp
++// RUN: %clangxx_asan -fsanitize-ignorelist=%tmp -O0 %s -o %t \
++// RUN: %p/Helpers/ignorelist-extra.cpp && %run %t 2>&1
++// RUN: %clangxx_asan -fsanitize-ignorelist=%tmp -O1 %s -o %t \
++// RUN: %p/Helpers/ignorelist-extra.cpp && %run %t 2>&1
++// RUN: %clangxx_asan -fsanitize-ignorelist=%tmp -O2 %s -o %t \
++// RUN: %p/Helpers/ignorelist-extra.cpp && %run %t 2>&1
++// RUN: %clangxx_asan -fsanitize-ignorelist=%tmp -O3 %s -o %t \
++// RUN: %p/Helpers/ignorelist-extra.cpp && %run %t 2>&1
++
++// badGlobal is accessed improperly, but we ignorelisted it. Align
++// it to make sure memory past the end of badGlobal will be in
++// the same page.
++__attribute__((aligned(16))) int badGlobal;
++int readBadGlobal() {
++  return (&badGlobal)[1];
++}
++
++// A function which is broken, but excluded in the ignorelist.
++int brokenFunction(int argc) {
++  char x[10] = {0};
++  return x[argc * 10];  // BOOM
++}
++
++// This function is defined in Helpers/ignorelist-extra.cpp, a source file which
++// is ignorelisted by name
++int externalBrokenFunction(int x);
++
++int main(int argc, char **argv) {
++  brokenFunction(argc);
++  int x = readBadGlobal();
++  externalBrokenFunction(argc);
++  return 0;
++}
+diff --git a/compiler-rt/test/asan/TestCases/initialization-blacklist.cpp b/compiler-rt/test/asan/TestCases/initialization-blacklist.cpp
+deleted file mode 100644
+index f0b86e57a8c3..000000000000
+--- a/compiler-rt/test/asan/TestCases/initialization-blacklist.cpp
++++ /dev/null
+@@ -1,29 +0,0 @@
+-// Test for blacklist functionality of initialization-order checker.
+-
+-// RUN: %clangxx_asan -O0 %s %p/Helpers/initialization-blacklist-extra.cpp\
+-// RUN:   %p/Helpers/initialization-blacklist-extra2.cpp \
+-// RUN:   -fsanitize-blacklist=%p/Helpers/initialization-blacklist.txt -o %t
+-// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
+-// RUN: %clangxx_asan -O1 %s %p/Helpers/initialization-blacklist-extra.cpp\
+-// RUN:   %p/Helpers/initialization-blacklist-extra2.cpp \
+-// RUN:   -fsanitize-blacklist=%p/Helpers/initialization-blacklist.txt -o %t
+-// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
+-// RUN: %clangxx_asan -O2 %s %p/Helpers/initialization-blacklist-extra.cpp\
+-// RUN:   %p/Helpers/initialization-blacklist-extra2.cpp \
+-// RUN:   -fsanitize-blacklist=%p/Helpers/initialization-blacklist.txt -o %t
+-// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
+-
+-// Function is defined in another TU.
+-int readBadGlobal();
+-int x = readBadGlobal();  // init-order bug.
+-
+-// Function is defined in another TU.
+-int accessBadObject();
+-int y = accessBadObject();  // init-order bug.
+-
+-int readBadSrcGlobal();
+-int z = readBadSrcGlobal();  // init-order bug.
+-
+-int main(int argc, char **argv) {
+-  return argc + x + y + z - 1;
+-}
+diff --git a/compiler-rt/test/asan/TestCases/initialization-ignorelist.cpp b/compiler-rt/test/asan/TestCases/initialization-ignorelist.cpp
+new file mode 100644
+index 000000000000..4ca126dc98e7
+--- /dev/null
++++ b/compiler-rt/test/asan/TestCases/initialization-ignorelist.cpp
+@@ -0,0 +1,29 @@
++// Test for ignorelist functionality of initialization-order checker.
++
++// RUN: %clangxx_asan -O0 %s %p/Helpers/initialization-ignorelist-extra.cpp\
++// RUN:   %p/Helpers/initialization-ignorelist-extra2.cpp \
++// RUN:   -fsanitize-ignorelist=%p/Helpers/initialization-ignorelist.txt -o %t
++// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
++// RUN: %clangxx_asan -O1 %s %p/Helpers/initialization-ignorelist-extra.cpp\
++// RUN:   %p/Helpers/initialization-ignorelist-extra2.cpp \
++// RUN:   -fsanitize-ignorelist=%p/Helpers/initialization-ignorelist.txt -o %t
++// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
++// RUN: %clangxx_asan -O2 %s %p/Helpers/initialization-ignorelist-extra.cpp\
++// RUN:   %p/Helpers/initialization-ignorelist-extra2.cpp \
++// RUN:   -fsanitize-ignorelist=%p/Helpers/initialization-ignorelist.txt -o %t
++// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
++
++// Function is defined in another TU.
++int readBadGlobal();
++int x = readBadGlobal();  // init-order bug.
++
++// Function is defined in another TU.
++int accessBadObject();
++int y = accessBadObject();  // init-order bug.
++
++int readBadSrcGlobal();
++int z = readBadSrcGlobal();  // init-order bug.
++
++int main(int argc, char **argv) {
++  return argc + x + y + z - 1;
++}
+diff --git a/compiler-rt/test/dfsan/flags.c b/compiler-rt/test/dfsan/flags.c
+index 914f54f42b6c..9ac61a2b6d8c 100644
+--- a/compiler-rt/test/dfsan/flags.c
++++ b/compiler-rt/test/dfsan/flags.c
+@@ -1,6 +1,6 @@
+-// RUN: %clang_dfsan %s -fsanitize-blacklist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang_dfsan %s -fsanitize-blacklist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && DFSAN_OPTIONS=warn_unimplemented=0 %run %t 2>&1 | count 0
+-// RUN: %clang_dfsan %s -fsanitize-blacklist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && DFSAN_OPTIONS=warn_nonzero_labels=1 %run %t 2>&1 | FileCheck --check-prefix=CHECK-NONZERO %s
++// RUN: %clang_dfsan %s -fsanitize-ignorelist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang_dfsan %s -fsanitize-ignorelist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && DFSAN_OPTIONS=warn_unimplemented=0 %run %t 2>&1 | count 0
++// RUN: %clang_dfsan %s -fsanitize-ignorelist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && DFSAN_OPTIONS=warn_nonzero_labels=1 %run %t 2>&1 | FileCheck --check-prefix=CHECK-NONZERO %s
+ 
+ // Tests that flags work correctly.
+ 
+diff --git a/compiler-rt/test/msan/default_blacklist.cpp b/compiler-rt/test/msan/default_blacklist.cpp
+deleted file mode 100644
+index ea67f942a2d0..000000000000
+--- a/compiler-rt/test/msan/default_blacklist.cpp
++++ /dev/null
+@@ -1,3 +0,0 @@
+-// Test that MSan uses the default blacklist from resource directory.
+-// RUN: %clangxx_msan -### %s 2>&1 | FileCheck %s
+-// CHECK: fsanitize-system-blacklist={{.*}}msan_blacklist.txt
+diff --git a/compiler-rt/test/msan/default_ignorelist.cpp b/compiler-rt/test/msan/default_ignorelist.cpp
+new file mode 100644
+index 000000000000..6def0cb20ab5
+--- /dev/null
++++ b/compiler-rt/test/msan/default_ignorelist.cpp
+@@ -0,0 +1,3 @@
++// Test that MSan uses the default ignorelist from resource directory.
++// RUN: %clangxx_msan -### %s 2>&1 | FileCheck %s
++// CHECK: fsanitize-system-ignorelist={{.*}}msan_ignorelist.txt
+diff --git a/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_blocklist.cpp b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_ignorelist.cpp
+similarity index 71%
+rename from compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_blocklist.cpp
+rename to compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_ignorelist.cpp
+index 728c0e8e6fbb..02d6f05816c2 100644
+--- a/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_blocklist.cpp
++++ b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_ignorelist.cpp
+@@ -1,5 +1,5 @@
+ // Tests -fsanitize-coverage-allowlist=allowlist.txt and
+-// -fsanitize-coverage-blocklist=blocklist.txt with libFuzzer-like coverage
++// -fsanitize-coverage-ignorelist=ignorelist.txt with libFuzzer-like coverage
+ // options
+ 
+ // REQUIRES: has_sancovcc,stable-runtime
+@@ -44,50 +44,50 @@
+ // RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt                                             2>&1 |     grep -f patterns.txt | count 9
+ // RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt                                             2>&1 |     grep -f patterns.txt | count 5
+ 
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager                                           -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-blocklist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_none.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 9
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 5
+-
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
+-
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager                                           -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 9
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 5
++
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
++
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 | not grep -f patterns.txt
+ 
+ /// The options below are deprecated and will be removed.
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-whitelist=al_bar.txt  -fsanitize-coverage-blacklist=bl_bar.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-whitelist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 | not grep -f patterns.txt
+ 
+ // RUN: cd -
+ // RUN: rm -rf $DIR
+diff --git a/compiler-rt/test/tsan/blacklist.cpp b/compiler-rt/test/tsan/ignorelist.cpp
+similarity index 54%
+rename from compiler-rt/test/tsan/blacklist.cpp
+rename to compiler-rt/test/tsan/ignorelist.cpp
+index c1bcca60d505..dc7ed6d9f34c 100644
+--- a/compiler-rt/test/tsan/blacklist.cpp
++++ b/compiler-rt/test/tsan/ignorelist.cpp
+@@ -1,7 +1,7 @@
+-// Test blacklist functionality for TSan.
++// Test ignorelist functionality for TSan.
+ 
+-// RUN: echo "fun:*Blacklisted_Thread2*" > %t.blacklist
+-// RUN: %clangxx_tsan -O1 %s -fsanitize-blacklist=%t.blacklist -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: echo "fun:*Ignorelisted_Thread2*" > %t.ignorelist
++// RUN: %clangxx_tsan -O1 %s -fsanitize-ignorelist=%t.ignorelist -o %t && %run %t 2>&1 | FileCheck %s
+ #include <pthread.h>
+ #include <stdio.h>
+ 
+@@ -12,7 +12,7 @@ void *Thread1(void *x) {
+   return NULL;
+ }
+ 
+-void *Blacklisted_Thread2(void *x) {
++void *Ignorelisted_Thread2(void *x) {
+   Global--;
+   return NULL;
+ }
+@@ -20,7 +20,7 @@ void *Blacklisted_Thread2(void *x) {
+ int main() {
+   pthread_t t[2];
+   pthread_create(&t[0], NULL, Thread1, NULL);
+-  pthread_create(&t[1], NULL, Blacklisted_Thread2, NULL);
++  pthread_create(&t[1], NULL, Ignorelisted_Thread2, NULL);
+   pthread_join(t[0], NULL);
+   pthread_join(t[1], NULL);
+   fprintf(stderr, "PASS\n");
+diff --git a/compiler-rt/test/tsan/blacklist2.cpp b/compiler-rt/test/tsan/ignorelist2.cpp
+similarity index 52%
+rename from compiler-rt/test/tsan/blacklist2.cpp
+rename to compiler-rt/test/tsan/ignorelist2.cpp
+index 6442eb0e789d..e2e835819b99 100644
+--- a/compiler-rt/test/tsan/blacklist2.cpp
++++ b/compiler-rt/test/tsan/ignorelist2.cpp
+@@ -1,9 +1,9 @@
+-// Test that blacklisted functions are still contained in the stack trace.
++// Test that ignorelisted functions are still contained in the stack trace.
+ 
+-// RUN: echo "fun:*Blacklisted_Thread2*" > %t.blacklist
+-// RUN: echo "fun:*CallTouchGlobal*" >> %t.blacklist
++// RUN: echo "fun:*Ignorelisted_Thread2*" > %t.ignorelist
++// RUN: echo "fun:*CallTouchGlobal*" >> %t.ignorelist
+ 
+-// RUN: %clangxx_tsan -O1 %s -fsanitize-blacklist=%t.blacklist -o %t
++// RUN: %clangxx_tsan -O1 %s -fsanitize-ignorelist=%t.ignorelist -o %t
+ // RUN: %deflake %run %t 2>&1 | FileCheck %s
+ #include "test.h"
+ 
+@@ -13,25 +13,25 @@ void *Thread1(void *x) {
+   barrier_wait(&barrier);
+   // CHECK: ThreadSanitizer: data race
+   // CHECK: Write of size 4
+-  // CHECK: #0 Thread1{{.*}}blacklist2.cpp:[[@LINE+1]]
++  // CHECK: #0 Thread1{{.*}}ignorelist2.cpp:[[@LINE+1]]
+   Global++;
+   return NULL;
+ }
+ 
+ void TouchGlobal() __attribute__((noinline)) {
+   // CHECK: Previous write of size 4
+-  // CHECK: #0 TouchGlobal{{.*}}blacklist2.cpp:[[@LINE+1]]
++  // CHECK: #0 TouchGlobal{{.*}}ignorelist2.cpp:[[@LINE+1]]
+   Global--;
+ }
+ 
+ void CallTouchGlobal() __attribute__((noinline)) {
+-  // CHECK: #1 CallTouchGlobal{{.*}}blacklist2.cpp:[[@LINE+1]]
++  // CHECK: #1 CallTouchGlobal{{.*}}ignorelist2.cpp:[[@LINE+1]]
+   TouchGlobal();
+ }
+ 
+-void *Blacklisted_Thread2(void *x) {
++void *Ignorelisted_Thread2(void *x) {
+   Global--;
+-  // CHECK: #2 Blacklisted_Thread2{{.*}}blacklist2.cpp:[[@LINE+1]]
++  // CHECK: #2 Ignorelisted_Thread2{{.*}}ignorelist2.cpp:[[@LINE+1]]
+   CallTouchGlobal();
+   barrier_wait(&barrier);
+   return NULL;
+@@ -41,7 +41,7 @@ int main() {
+   barrier_init(&barrier, 2);
+   pthread_t t[2];
+   pthread_create(&t[0], NULL, Thread1, NULL);
+-  pthread_create(&t[1], NULL, Blacklisted_Thread2, NULL);
++  pthread_create(&t[1], NULL, Ignorelisted_Thread2, NULL);
+   pthread_join(t[0], NULL);
+   pthread_join(t[1], NULL);
+   fprintf(stderr, "PASS\n");
+diff --git a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-blacklist.c b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-ignorelist.c
+similarity index 67%
+rename from compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-blacklist.c
+rename to compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-ignorelist.c
+index e77b94e5e692..23e73a36cd30 100644
+--- a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-blacklist.c
++++ b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-ignorelist.c
+@@ -6,10 +6,10 @@
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-integer-sign-change]" >> %tmp
+ // RUN: echo "fun:implicitSignChange" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ #include <stdint.h>
+ #include <stdio.h>
+@@ -19,7 +19,7 @@ int32_t implicitSignChange(uint32_t argc) {
+   // CHECK-NOT: runtime error
+   // CHECK-LABEL: TEST
+   return argc; // BOOM
+-  // ERROR: {{.*}}integer-sign-change-blacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'int') changed the value to -1 (32-bit, signed)
++  // ERROR: {{.*}}integer-sign-change-ignorelacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'int') changed the value to -1 (32-bit, signed)
+   // CHECK-NOT: runtime error
+ }
+ 
+diff --git a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-blacklist.c b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-ignorelist.c
+similarity index 53%
+rename from compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-blacklist.c
+rename to compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-ignorelist.c
+index 144c3b9376d7..5e914b4c6316 100644
+--- a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-blacklist.c
++++ b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-ignorelist.c
+@@ -6,42 +6,42 @@
+ // RUN: rm -f %tmp
+ // RUN: echo "[integer]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-conversion]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-signed-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-unsigned-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+ 
+ #include <stdint.h>
+ #include <stdio.h>
+@@ -51,7 +51,7 @@ uint8_t implicitUnsignedTruncation(int32_t argc) {
+   // CHECK-NOT: runtime error
+   // CHECK-LABEL: TEST
+   return argc; // BOOM
+-  // ERROR: {{.*}}signed-integer-truncation-blacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}} (aka 'int') of value -1 (32-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)
++  // ERROR: {{.*}}signed-integer-truncation-ignorelacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}} (aka 'int') of value -1 (32-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)
+   // CHECK-NOT: runtime error
+ }
+ 
+diff --git a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-ignorelist.c
+similarity index 62%
+rename from compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c
+rename to compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-ignorelist.c
+index 34a75707a314..8937676669b0 100644
+--- a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c
++++ b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-ignorelist.c
+@@ -8,37 +8,37 @@
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-signed-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitConversion" >> %tmp
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-signed-integer-truncation,implicit-integer-sign-change]" >> %tmp
+ // RUN: echo "fun:implicitConversion" >> %tmp
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+ 
+ // The only two way it works:
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-integer-sign-change]" >> %tmp
+ // RUN: echo "fun:implicitConversion" >> %tmp
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-signed-integer-truncation]" >> %tmp
+ // RUN: echo "[implicit-integer-sign-change]" >> %tmp
+ // RUN: echo "fun:implicitConversion" >> %tmp
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ #include <stdint.h>
+ #include <stdio.h>
+@@ -48,7 +48,7 @@ int8_t implicitConversion(uint32_t argc) {
+   // CHECK-NOT: runtime error
+   // CHECK-LABEL: TEST
+   return argc; // BOOM
+-  // ERROR: {{.*}}signed-integer-truncation-or-sign-change-blacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)
++  // ERROR: {{.*}}signed-integer-truncation-or-sign-change-ignorelist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)
+   // CHECK-NOT: runtime error
+ }
+ 
+diff --git a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-blacklist.c b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-ignorelist.c
+similarity index 53%
+rename from compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-blacklist.c
+rename to compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-ignorelist.c
+index 374c4c2c91cb..a2b1cc1cc177 100644
+--- a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-blacklist.c
++++ b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-ignorelist.c
+@@ -6,42 +6,42 @@
+ // RUN: rm -f %tmp
+ // RUN: echo "[integer]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-conversion]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-unsigned-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-signed-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+ 
+ #include <stdint.h>
+ #include <stdio.h>
+@@ -51,7 +51,7 @@ uint8_t implicitUnsignedTruncation(uint32_t argc) {
+   // CHECK-NOT: runtime error
+   // CHECK-LABEL: TEST
+   return argc; // BOOM
+-  // ERROR: {{.*}}unsigned-integer-truncation-blacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)
++  // ERROR: {{.*}}unsigned-integer-truncation-ignorelist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)
+   // CHECK-NOT: runtime error
+ }
+ 
+diff --git a/compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-blacklist.cpp b/compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-ignorelist.cppp
+similarity index 73%
+rename from compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-blacklist.cpp
+rename to compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-ignorelist.cppp
+index c0c7b373f623..e5c166497dcf 100644
+--- a/compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-blacklist.cpp
++++ b/compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-ignorelist.cppp
+@@ -3,7 +3,7 @@
+ // RUN: rm -f %tmp
+ // RUN: echo "[alignment]" >> %tmp
+ // RUN: echo "fun:main" >> %tmp
+-// RUN: %clang -fsanitize=alignment -fno-sanitize-recover=alignment -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1
++// RUN: %clang -fsanitize=alignment -fno-sanitize-recover=alignment -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1
+ 
+ #include <stdlib.h>
+ 
+@@ -11,7 +11,7 @@ int main(int argc, char* argv[]) {
+   char *ptr = (char *)malloc(2);
+ 
+   __builtin_assume_aligned(ptr + 1, 0x8000);
+-  // CHECK: {{.*}}alignment-assumption-blacklist.cpp:[[@LINE-1]]:32: runtime error: assumption of 32768 byte alignment for pointer of type 'char *' failed
++  // CHECK: {{.*}}alignment-assumption-ignorelist.cpp:[[@LINE-1]]:32: runtime error: assumption of 32768 byte alignment for pointer of type 'char *' failed
+   // CHECK: 0x{{.*}}: note: address is {{.*}} aligned, misalignment offset is {{.*}} byte
+ 
+   free(ptr);
+diff --git a/llvm/utils/gn/secondary/compiler-rt/lib/asan/BUILD.gn b/llvm/utils/gn/secondary/compiler-rt/lib/asan/BUILD.gn
+index 3593d1fcba53..c1f134fadcd3 100644
+--- a/llvm/utils/gn/secondary/compiler-rt/lib/asan/BUILD.gn
++++ b/llvm/utils/gn/secondary/compiler-rt/lib/asan/BUILD.gn
+@@ -120,7 +120,7 @@ target(asan_target_type, "asan") {
+   # FIXME: add_sanitizer_rt_version_list (cf hwasan)
+   # FIXME: need libclang_rt.asan*.a.syms?
+   # FIXME: windows flags (-Zl -nodefaultlibs)
+-  # FIXME: asan_blacklist.txt
++  # FIXME: asan_ignorelist.txt
+ 
+   if (target_os == "android") {
+     ldflags = [ "-Wl,-z,global" ]
+diff --git a/llvm/utils/gn/secondary/compiler-rt/lib/cfi/BUILD.gn b/llvm/utils/gn/secondary/compiler-rt/lib/cfi/BUILD.gn
+index 3ff5f3f9a5f9..b9ff5c530105 100644
+--- a/llvm/utils/gn/secondary/compiler-rt/lib/cfi/BUILD.gn
++++ b/llvm/utils/gn/secondary/compiler-rt/lib/cfi/BUILD.gn
+@@ -6,7 +6,7 @@ source_set("sources") {
+   sources = [ "cfi.cpp" ]
+ }
+ 
+-copy("blacklist") {
+-  sources = [ "cfi_blacklist.txt" ]
++copy("ignorelist") {
++  sources = [ "cfi_ignorelist.txt" ]
+   outputs = [ "$clang_resource_dir/share/{{source_target_relative}}" ]
+ }
+diff --git a/llvm/utils/gn/secondary/compiler-rt/test/hwasan/BUILD.gn b/llvm/utils/gn/secondary/compiler-rt/test/hwasan/BUILD.gn
+index de601b8d6122..7ee67a270090 100644
+--- a/llvm/utils/gn/secondary/compiler-rt/test/hwasan/BUILD.gn
++++ b/llvm/utils/gn/secondary/compiler-rt/test/hwasan/BUILD.gn
+@@ -33,7 +33,7 @@ if (current_toolchain != host_toolchain) {
+     deps = [
+       ":lit_site_cfg",
+       "//compiler-rt/include($host_toolchain)",
+-      "//compiler-rt/lib/cfi:blacklist($host_toolchain)",
++      "//compiler-rt/lib/cfi:ignorelist($host_toolchain)",
+       "//compiler-rt/lib/hwasan:hwasan_shared",
+       "//compiler-rt/test:lit_common_configured",
+       "//llvm/utils/FileCheck($host_toolchain)",
diff --git a/sys-devel/llvm/files/cherry/df8ed3928377edc6e9241a56680b694ffa9f4d6d.patch b/sys-devel/llvm/files/cherry/df8ed3928377edc6e9241a56680b694ffa9f4d6d.patch
new file mode 100644
index 0000000..537ad82
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/df8ed3928377edc6e9241a56680b694ffa9f4d6d.patch
@@ -0,0 +1,517 @@
+commit df8ed3928377edc6e9241a56680b694ffa9f4d6d
+Author: Kristof Beyls <kristof.beyls@arm.com>
+Date:   Thu Nov 26 13:45:37 2020 +0000
+
+    [ARM] harden-sls-blr: avoid r12 and lr in indirect calls.
+    
+    As a linker is allowed to clobber r12 on function calls, the code
+    transformation that hardens indirect calls is not correct in case a
+    linker does so.  Similarly, the transformation is not correct when
+    register lr is used.
+    
+    This patch makes sure that r12 or lr are not used for indirect calls
+    when harden-sls-blr is enabled.
+    
+    Differential Revision: https://reviews.llvm.org/D92469
+
+diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+index 9a71b9264fcd..e77ed2c34bd3 100644
+--- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
++++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp
+@@ -5803,7 +5803,9 @@ outliner::OutlinedFunction ARMBaseInstrInfo::getOutliningCandidateInfo(
+     NumBytesToCreateFrame = Costs.FrameTailCall;
+     SetCandidateCallInfo(MachineOutlinerTailCall, Costs.CallTailCall);
+   } else if (LastInstrOpcode == ARM::BL || LastInstrOpcode == ARM::BLX ||
+-             LastInstrOpcode == ARM::tBL || LastInstrOpcode == ARM::tBLXr ||
++             LastInstrOpcode == ARM::BLX_noip || LastInstrOpcode == ARM::tBL ||
++             LastInstrOpcode == ARM::tBLXr ||
++             LastInstrOpcode == ARM::tBLXr_noip ||
+              LastInstrOpcode == ARM::tBLXi) {
+     FrameID = MachineOutlinerThunk;
+     NumBytesToCreateFrame = Costs.FrameThunk;
+@@ -6051,7 +6053,8 @@ ARMBaseInstrInfo::getOutliningType(MachineBasicBlock::iterator &MIT,
+     // we don't get unexpected results with call pseudo-instructions.
+     auto UnknownCallOutlineType = outliner::InstrType::Illegal;
+     if (Opc == ARM::BL || Opc == ARM::tBL || Opc == ARM::BLX ||
+-        Opc == ARM::tBLXr || Opc == ARM::tBLXi)
++        Opc == ARM::BLX_noip || Opc == ARM::tBLXr || Opc == ARM::tBLXr_noip ||
++        Opc == ARM::tBLXi)
+       UnknownCallOutlineType = outliner::InstrType::LegalTerminator;
+ 
+     if (!Callee)
+@@ -6343,3 +6346,19 @@ bool ARMBaseInstrInfo::isReallyTriviallyReMaterializable(const MachineInstr &MI,
+   // spill/restore and VPT predication.
+   return isVCTP(&MI) && !isPredicated(MI);
+ }
++
++unsigned llvm::getBLXOpcode(const MachineFunction &MF) {
++  return (MF.getSubtarget<ARMSubtarget>().hardenSlsBlr()) ? ARM::BLX_noip
++                                                          : ARM::BLX;
++}
++
++unsigned llvm::gettBLXrOpcode(const MachineFunction &MF) {
++  return (MF.getSubtarget<ARMSubtarget>().hardenSlsBlr()) ? ARM::tBLXr_noip
++                                                          : ARM::tBLXr;
++}
++
++unsigned llvm::getBLXpredOpcode(const MachineFunction &MF) {
++  return (MF.getSubtarget<ARMSubtarget>().hardenSlsBlr()) ? ARM::BLX_pred_noip
++                                                          : ARM::BLX_pred;
++}
++
+diff --git a/llvm/lib/Target/ARM/ARMBaseInstrInfo.h b/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
+index 47a2cf44f3a9..9b6572848ebe 100644
+--- a/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
++++ b/llvm/lib/Target/ARM/ARMBaseInstrInfo.h
+@@ -640,13 +640,16 @@ static inline bool isIndirectCall(const MachineInstr &MI) {
+   switch (Opc) {
+     // indirect calls:
+   case ARM::BLX:
++  case ARM::BLX_noip:
+   case ARM::BLX_pred:
++  case ARM::BLX_pred_noip:
+   case ARM::BX_CALL:
+   case ARM::BMOVPCRX_CALL:
+   case ARM::TCRETURNri:
+   case ARM::TAILJMPr:
+   case ARM::TAILJMPr4:
+   case ARM::tBLXr:
++  case ARM::tBLXr_noip:
+   case ARM::tBLXNSr:
+   case ARM::tBLXNS_CALL:
+   case ARM::tBX_CALL:
+@@ -908,6 +911,10 @@ inline bool isGatherScatter(IntrinsicInst *IntInst) {
+   return isGather(IntInst) || isScatter(IntInst);
+ }
+ 
++unsigned getBLXOpcode(const MachineFunction &MF);
++unsigned gettBLXrOpcode(const MachineFunction &MF);
++unsigned getBLXpredOpcode(const MachineFunction &MF);
++
+ } // end namespace llvm
+ 
+ #endif // LLVM_LIB_TARGET_ARM_ARMBASEINSTRINFO_H
+diff --git a/llvm/lib/Target/ARM/ARMCallLowering.cpp b/llvm/lib/Target/ARM/ARMCallLowering.cpp
+index 2efc26203f58..0a38f737cb4b 100644
+--- a/llvm/lib/Target/ARM/ARMCallLowering.cpp
++++ b/llvm/lib/Target/ARM/ARMCallLowering.cpp
+@@ -480,15 +480,16 @@ struct CallReturnHandler : public ARMIncomingValueHandler {
+ };
+ 
+ // FIXME: This should move to the ARMSubtarget when it supports all the opcodes.
+-unsigned getCallOpcode(const ARMSubtarget &STI, bool isDirect) {
++unsigned getCallOpcode(const MachineFunction &MF, const ARMSubtarget &STI,
++                       bool isDirect) {
+   if (isDirect)
+     return STI.isThumb() ? ARM::tBL : ARM::BL;
+ 
+   if (STI.isThumb())
+-    return ARM::tBLXr;
++    return gettBLXrOpcode(MF);
+ 
+   if (STI.hasV5TOps())
+-    return ARM::BLX;
++    return getBLXOpcode(MF);
+ 
+   if (STI.hasV4TOps())
+     return ARM::BX_CALL;
+@@ -516,7 +517,7 @@ bool ARMCallLowering::lowerCall(MachineIRBuilder &MIRBuilder, CallLoweringInfo &
+   // Create the call instruction so we can add the implicit uses of arg
+   // registers, but don't insert it yet.
+   bool IsDirect = !Info.Callee.isReg();
+-  auto CallOpcode = getCallOpcode(STI, IsDirect);
++  auto CallOpcode = getCallOpcode(MF, STI, IsDirect);
+   auto MIB = MIRBuilder.buildInstrNoInsert(CallOpcode);
+ 
+   bool IsThumb = STI.isThumb();
+diff --git a/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp b/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
+index 9be0b6fa33e9..a7f1765a9311 100644
+--- a/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
++++ b/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp
+@@ -2304,8 +2304,9 @@ bool ARMExpandPseudo::ExpandMI(MachineBasicBlock &MBB,
+           MIB.addImm(0);
+         MIB.add(predOps(ARMCC::AL));
+ 
+-        MIB = BuildMI(MBB, MBBI, MI.getDebugLoc(),
+-                      TII->get(Thumb ? ARM::tBLXr : ARM::BLX));
++        MIB =
++            BuildMI(MBB, MBBI, MI.getDebugLoc(),
++                    TII->get(Thumb ? gettBLXrOpcode(*MF) : getBLXOpcode(*MF)));
+         if (Thumb)
+           MIB.add(predOps(ARMCC::AL));
+         MIB.addReg(Reg, RegState::Kill);
+diff --git a/llvm/lib/Target/ARM/ARMFastISel.cpp b/llvm/lib/Target/ARM/ARMFastISel.cpp
+index 4bfca8a803ca..3a7c2eed2249 100644
+--- a/llvm/lib/Target/ARM/ARMFastISel.cpp
++++ b/llvm/lib/Target/ARM/ARMFastISel.cpp
+@@ -2173,7 +2173,7 @@ bool ARMFastISel::SelectRet(const Instruction *I) {
+ 
+ unsigned ARMFastISel::ARMSelectCallOp(bool UseReg) {
+   if (UseReg)
+-    return isThumb2 ? ARM::tBLXr : ARM::BLX;
++    return isThumb2 ? gettBLXrOpcode(*MF) : getBLXOpcode(*MF);
+   else
+     return isThumb2 ? ARM::tBL : ARM::BL;
+ }
+@@ -2264,9 +2264,11 @@ bool ARMFastISel::ARMEmitLibcall(const Instruction *I, RTLIB::Libcall Call) {
+   // BL / BLX don't take a predicate, but tBL / tBLX do.
+   if (isThumb2)
+     MIB.add(predOps(ARMCC::AL));
+-  if (Subtarget->genLongCalls())
++  if (Subtarget->genLongCalls()) {
++    CalleeReg =
++        constrainOperandRegClass(TII.get(CallOpc), CalleeReg, isThumb2 ? 2 : 0);
+     MIB.addReg(CalleeReg);
+-  else
++  } else
+     MIB.addExternalSymbol(TLI.getLibcallName(Call));
+ 
+   // Add implicit physical register uses to the call.
+@@ -2404,9 +2406,11 @@ bool ARMFastISel::SelectCall(const Instruction *I,
+   // ARM calls don't take a predicate, but tBL / tBLX do.
+   if(isThumb2)
+     MIB.add(predOps(ARMCC::AL));
+-  if (UseReg)
++  if (UseReg) {
++    CalleeReg =
++        constrainOperandRegClass(TII.get(CallOpc), CalleeReg, isThumb2 ? 2 : 0);
+     MIB.addReg(CalleeReg);
+-  else if (!IntrMemName)
++  } else if (!IntrMemName)
+     MIB.addGlobalAddress(GV, 0, 0);
+   else
+     MIB.addExternalSymbol(IntrMemName, 0);
+diff --git a/llvm/lib/Target/ARM/ARMFeatures.h b/llvm/lib/Target/ARM/ARMFeatures.h
+index 5cd7006c22fc..99e0ef05b5e2 100644
+--- a/llvm/lib/Target/ARM/ARMFeatures.h
++++ b/llvm/lib/Target/ARM/ARMFeatures.h
+@@ -75,6 +75,7 @@ inline bool isV8EligibleForIT(const InstrType *Instr) {
+ // there are some "conditionally deprecated" opcodes
+   case ARM::tADDspr:
+   case ARM::tBLXr:
++  case ARM::tBLXr_noip:
+     return Instr->getOperand(2).getReg() != ARM::PC;
+   // ADD PC, SP and BLX PC were always unpredictable,
+   // now on top of it they're deprecated
+diff --git a/llvm/lib/Target/ARM/ARMISelLowering.cpp b/llvm/lib/Target/ARM/ARMISelLowering.cpp
+index 1c6acbcf1a88..a50bb623092a 100644
+--- a/llvm/lib/Target/ARM/ARMISelLowering.cpp
++++ b/llvm/lib/Target/ARM/ARMISelLowering.cpp
+@@ -10886,7 +10886,7 @@ ARMTargetLowering::EmitLowered__chkstk(MachineInstr &MI,
+ 
+     BuildMI(*MBB, MI, DL, TII.get(ARM::t2MOVi32imm), Reg)
+       .addExternalSymbol("__chkstk");
+-    BuildMI(*MBB, MI, DL, TII.get(ARM::tBLXr))
++    BuildMI(*MBB, MI, DL, TII.get(gettBLXrOpcode(*MBB->getParent())))
+         .add(predOps(ARMCC::AL))
+         .addReg(Reg, RegState::Kill)
+         .addReg(ARM::R4, RegState::Implicit | RegState::Kill)
+diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td
+index 840af9052376..8dcb319923ae 100644
+--- a/llvm/lib/Target/ARM/ARMInstrInfo.td
++++ b/llvm/lib/Target/ARM/ARMInstrInfo.td
+@@ -2492,23 +2492,29 @@ let isCall = 1,
+   }
+ 
+   // ARMv5T and above
+-  def BLX : AXI<(outs), (ins GPR:$func), BrMiscFrm,
+-                IIC_Br, "blx\t$func",
+-                [(ARMcall GPR:$func)]>,
++  def BLX : AXI<(outs), (ins GPR:$func), BrMiscFrm, IIC_Br, "blx\t$func", []>,
+             Requires<[IsARM, HasV5T]>, Sched<[WriteBrL]> {
+     bits<4> func;
+     let Inst{31-4} = 0b1110000100101111111111110011;
+     let Inst{3-0}  = func;
+   }
++  def BLX_noip :  ARMPseudoExpand<(outs), (ins GPRnoip:$func),
++                   4, IIC_Br, [], (BLX GPR:$func)>,
++                  Requires<[IsARM, HasV5T]>, Sched<[WriteBrL]>;
++
+ 
+   def BLX_pred : AI<(outs), (ins GPR:$func), BrMiscFrm,
+-                    IIC_Br, "blx", "\t$func",
+-                    [(ARMcall_pred GPR:$func)]>,
++                    IIC_Br, "blx", "\t$func", []>,
+                  Requires<[IsARM, HasV5T]>, Sched<[WriteBrL]> {
+     bits<4> func;
+     let Inst{27-4} = 0b000100101111111111110011;
+     let Inst{3-0}  = func;
+   }
++  def BLX_pred_noip :  ARMPseudoExpand<(outs), (ins GPRnoip:$func),
++                   4, IIC_Br, [],
++                   (BLX_pred GPR:$func, (ops 14, zero_reg))>,
++                   Requires<[IsARM, HasV5T]>, Sched<[WriteBrL]>;
++
+ 
+   // ARMv4T
+   // Note: Restrict $func to the tGPR regclass to prevent it being in LR.
+@@ -2534,6 +2540,16 @@ let isCall = 1,
+              Requires<[IsARM]>, Sched<[WriteBr]>;
+ }
+ 
++def : ARMPat<(ARMcall GPR:$func), (BLX $func)>,
++      Requires<[IsARM, HasV5T, NoSLSBLRMitigation]>;
++def : ARMPat<(ARMcall GPRnoip:$func), (BLX_noip $func)>,
++      Requires<[IsARM, HasV5T, SLSBLRMitigation]>;
++def : ARMPat<(ARMcall_pred GPR:$func), (BLX_pred $func)>,
++      Requires<[IsARM, HasV5T, NoSLSBLRMitigation]>;
++def : ARMPat<(ARMcall_pred GPRnoip:$func), (BLX_pred_noip $func)>,
++      Requires<[IsARM, HasV5T, SLSBLRMitigation]>;
++
++
+ let isBranch = 1, isTerminator = 1 in {
+   // FIXME: should be able to write a pattern for ARMBrcond, but can't use
+   // a two-value operand where a dag node expects two operands. :(
+diff --git a/llvm/lib/Target/ARM/ARMInstrThumb.td b/llvm/lib/Target/ARM/ARMInstrThumb.td
+index 7fae32117243..3a33dfeecdc9 100644
+--- a/llvm/lib/Target/ARM/ARMInstrThumb.td
++++ b/llvm/lib/Target/ARM/ARMInstrThumb.td
+@@ -548,14 +548,18 @@ let isCall = 1,
+ 
+   // Also used for Thumb2
+   def tBLXr : TI<(outs), (ins pred:$p, GPR:$func), IIC_Br,
+-                  "blx${p}\t$func",
+-                  [(ARMcall GPR:$func)]>,
++                  "blx${p}\t$func", []>,
+               Requires<[IsThumb, HasV5T]>,
+               T1Special<{1,1,1,?}>, Sched<[WriteBrL]> { // A6.2.3 & A8.6.24;
+     bits<4> func;
+     let Inst{6-3} = func;
+     let Inst{2-0} = 0b000;
+   }
++  def tBLXr_noip :  ARMPseudoExpand<(outs), (ins pred:$p, GPRnoip:$func),
++                   2, IIC_Br, [], (tBLXr pred:$p, GPR:$func)>,
++                   Requires<[IsThumb, HasV5T]>,
++                   Sched<[WriteBrL]>;
++
+ 
+   // ARMv8-M Security Extensions
+   def tBLXNSr : TI<(outs), (ins pred:$p, GPRnopc:$func), IIC_Br,
+@@ -586,6 +590,11 @@ let isCall = 1,
+              Requires<[IsThumb]>, Sched<[WriteBr]>;
+ }
+ 
++def : ARMPat<(ARMcall GPR:$func), (tBLXr $func)>,
++      Requires<[IsThumb, HasV5T, NoSLSBLRMitigation]>;
++def : ARMPat<(ARMcall GPRnoip:$func), (tBLXr_noip $func)>,
++      Requires<[IsThumb, HasV5T, SLSBLRMitigation]>;
++
+ let isBranch = 1, isTerminator = 1, isBarrier = 1 in {
+   let isPredicable = 1 in
+   def tB   : T1pI<(outs), (ins t_brtarget:$target), IIC_Br,
+diff --git a/llvm/lib/Target/ARM/ARMPredicates.td b/llvm/lib/Target/ARM/ARMPredicates.td
+index 240cdb08acd8..2dc097566d14 100644
+--- a/llvm/lib/Target/ARM/ARMPredicates.td
++++ b/llvm/lib/Target/ARM/ARMPredicates.td
+@@ -189,6 +189,9 @@ let RecomputePerFunction = 1 in {
+   def UseFPVMLx: Predicate<"((Subtarget->useFPVMLx() &&"
+                            "  TM.Options.AllowFPOpFusion != FPOpFusion::Fast) ||"
+                            "Subtarget->hasMinSize())">;
++  def SLSBLRMitigation : Predicate<[{ MF->getSubtarget<ARMSubtarget>().hardenSlsBlr() }]>;
++  def NoSLSBLRMitigation : Predicate<[{ !MF->getSubtarget<ARMSubtarget>().hardenSlsBlr() }]>;
++
+ }
+ def UseMulOps        : Predicate<"Subtarget->useMulOps()">;
+ 
+diff --git a/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp b/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
+index f9dbfef4c113..1a7f10a13ed3 100644
+--- a/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
++++ b/llvm/lib/Target/ARM/ARMRegisterBankInfo.cpp
+@@ -156,10 +156,10 @@ ARMRegisterBankInfo::ARMRegisterBankInfo(const TargetRegisterInfo &TRI)
+            "Subclass not added?");
+     assert(RBGPR.covers(*TRI.getRegClass(ARM::tcGPRRegClassID)) &&
+            "Subclass not added?");
+-    assert(RBGPR.covers(*TRI.getRegClass(ARM::tGPR_and_tcGPRRegClassID)) &&
++    assert(RBGPR.covers(*TRI.getRegClass(ARM::GPRnoip_and_tcGPRRegClassID)) &&
+            "Subclass not added?");
+-    assert(RBGPR.covers(
+-               *TRI.getRegClass(ARM::tGPREven_and_tGPR_and_tcGPRRegClassID)) &&
++    assert(RBGPR.covers(*TRI.getRegClass(
++               ARM::tGPREven_and_GPRnoip_and_tcGPRRegClassID)) &&
+            "Subclass not added?");
+     assert(RBGPR.covers(*TRI.getRegClass(ARM::tGPROdd_and_tcGPRRegClassID)) &&
+            "Subclass not added?");
+@@ -182,10 +182,12 @@ ARMRegisterBankInfo::getRegBankFromRegClass(const TargetRegisterClass &RC,
+   switch (RC.getID()) {
+   case GPRRegClassID:
+   case GPRwithAPSRRegClassID:
++  case GPRnoipRegClassID:
+   case GPRnopcRegClassID:
++  case GPRnoip_and_GPRnopcRegClassID:
+   case rGPRRegClassID:
+   case GPRspRegClassID:
+-  case tGPR_and_tcGPRRegClassID:
++  case GPRnoip_and_tcGPRRegClassID:
+   case tcGPRRegClassID:
+   case tGPRRegClassID:
+   case tGPREvenRegClassID:
+@@ -193,7 +195,7 @@ ARMRegisterBankInfo::getRegBankFromRegClass(const TargetRegisterClass &RC,
+   case tGPR_and_tGPREvenRegClassID:
+   case tGPR_and_tGPROddRegClassID:
+   case tGPREven_and_tcGPRRegClassID:
+-  case tGPREven_and_tGPR_and_tcGPRRegClassID:
++  case tGPREven_and_GPRnoip_and_tcGPRRegClassID:
+   case tGPROdd_and_tcGPRRegClassID:
+     return getRegBank(ARM::GPRRegBankID);
+   case HPRRegClassID:
+diff --git a/llvm/lib/Target/ARM/ARMRegisterInfo.td b/llvm/lib/Target/ARM/ARMRegisterInfo.td
+index a384b0dc757c..fe3243315d68 100644
+--- a/llvm/lib/Target/ARM/ARMRegisterInfo.td
++++ b/llvm/lib/Target/ARM/ARMRegisterInfo.td
+@@ -235,6 +235,23 @@ def GPR : RegisterClass<"ARM", [i32], 32, (add (sequence "R%u", 0, 12),
+   let DiagnosticString = "operand must be a register in range [r0, r15]";
+ }
+ 
++// Register set that excludes registers that are reserved for procedure calls.
++// This is used for pseudo-instructions that are actually implemented using a
++// procedure call.
++def GPRnoip : RegisterClass<"ARM", [i32], 32, (sub GPR, R12, LR)> {
++  // Allocate LR as the first CSR since it is always saved anyway.
++  // For Thumb1 mode, we don't want to allocate hi regs at all, as we don't
++  // know how to spill them. If we make our prologue/epilogue code smarter at
++  // some point, we can go back to using the above allocation orders for the
++  // Thumb1 instructions that know how to use hi regs.
++  let AltOrders = [(add GPRnoip, GPRnoip), (trunc GPRnoip, 8),
++                   (add (trunc GPRnoip, 8), (shl GPRnoip, 8))];
++  let AltOrderSelect = [{
++      return MF.getSubtarget<ARMSubtarget>().getGPRAllocationOrder(MF);
++  }];
++  let DiagnosticString = "operand must be a register in range [r0, r14]";
++}
++
+ // GPRs without the PC.  Some ARM instructions do not allow the PC in
+ // certain operand slots, particularly as the destination.  Primarily
+ // useful for disassembly.
+diff --git a/llvm/lib/Target/ARM/ARMSLSHardening.cpp b/llvm/lib/Target/ARM/ARMSLSHardening.cpp
+index e6d40d41653a..cfcc7d5a0408 100644
+--- a/llvm/lib/Target/ARM/ARMSLSHardening.cpp
++++ b/llvm/lib/Target/ARM/ARMSLSHardening.cpp
+@@ -143,9 +143,7 @@ static const struct ThunkNameRegMode {
+     {"__llvm_slsblr_thunk_arm_r9", ARM::R9, false},
+     {"__llvm_slsblr_thunk_arm_r10", ARM::R10, false},
+     {"__llvm_slsblr_thunk_arm_r11", ARM::R11, false},
+-    {"__llvm_slsblr_thunk_arm_r12", ARM::R12, false},
+     {"__llvm_slsblr_thunk_arm_sp", ARM::SP, false},
+-    {"__llvm_slsblr_thunk_arm_lr", ARM::LR, false},
+     {"__llvm_slsblr_thunk_arm_pc", ARM::PC, false},
+     {"__llvm_slsblr_thunk_thumb_r0", ARM::R0, true},
+     {"__llvm_slsblr_thunk_thumb_r1", ARM::R1, true},
+@@ -159,9 +157,7 @@ static const struct ThunkNameRegMode {
+     {"__llvm_slsblr_thunk_thumb_r9", ARM::R9, true},
+     {"__llvm_slsblr_thunk_thumb_r10", ARM::R10, true},
+     {"__llvm_slsblr_thunk_thumb_r11", ARM::R11, true},
+-    {"__llvm_slsblr_thunk_thumb_r12", ARM::R12, true},
+     {"__llvm_slsblr_thunk_thumb_sp", ARM::SP, true},
+-    {"__llvm_slsblr_thunk_thumb_lr", ARM::LR, true},
+     {"__llvm_slsblr_thunk_thumb_pc", ARM::PC, true},
+ };
+ 
+@@ -252,25 +248,18 @@ MachineBasicBlock &ARMSLSHardening::ConvertIndirectCallToIndirectJump(
+   // SLSBLRThunkInserter.
+   // This function merely needs to transform an indirect call to a direct call
+   // to __llvm_slsblr_thunk_xN.
+-  //
+-  // Since linkers are allowed to clobber R12 on function calls, the above
+-  // mitigation only works if the original indirect call instruction was not
+-  // using R12. Code generation before must make sure that no indirect call
+-  // using R12 was produced if the mitigation is enabled.
+-  // Also, the transformation is incorrect if the indirect call uses LR, so
+-  // also have to avoid that.
+-  // FIXME: that will be done in a follow-on patch.
+-
+   MachineInstr &IndirectCall = *MBBI;
+   assert(isIndirectCall(IndirectCall) && !IndirectCall.isReturn());
+   int RegOpIdxOnIndirectCall = -1;
+   bool isThumb;
+   switch (IndirectCall.getOpcode()) {
+-  case ARM::BLX:      // !isThumb2
++  case ARM::BLX:   // !isThumb2
++  case ARM::BLX_noip:   // !isThumb2
+     isThumb = false;
+     RegOpIdxOnIndirectCall = 0;
+     break;
+   case ARM::tBLXr:      // isThumb2
++  case ARM::tBLXr_noip: // isThumb2
+     isThumb = true;
+     RegOpIdxOnIndirectCall = 2;
+     break;
+@@ -279,6 +268,12 @@ MachineBasicBlock &ARMSLSHardening::ConvertIndirectCallToIndirectJump(
+   }
+ 
+   Register Reg = IndirectCall.getOperand(RegOpIdxOnIndirectCall).getReg();
++  // Since linkers are allowed to clobber R12 on function calls, the above
++  // mitigation only works if the original indirect call instruction was not
++  // using R12. Code generation before must make sure that no indirect call
++  // using R12 was produced if the mitigation is enabled.
++  // Also, the transformation is incorrect if the indirect call uses LR, so
++  // also have to avoid that.
+   assert(Reg != ARM::R12 && Reg != ARM::LR);
+   bool RegIsKilled = IndirectCall.getOperand(RegOpIdxOnIndirectCall).isKill();
+ 
+diff --git a/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll b/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
+index a2166e4520cb..e62012faed88 100644
+--- a/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
++++ b/llvm/test/CodeGen/ARM/speculation-hardening-sls.ll
+@@ -186,10 +186,61 @@ entry:
+ ; CHECK: .Lfunc_end
+ }
+ 
+-; HARDEN-label: __llvm_slsblr_thunk_(arm|thumb)_r5:
++; Verify that neither r12 nor lr are used as registers in indirect call
++; instructions when the sls-hardening-blr mitigation is enabled, as
++; (a) a linker is allowed to clobber r12 on calls, and
++; (b) the hardening transformation isn't correct if lr is the register holding
++;     the address of the function called.
++define i32 @check_r12(i32 ()** %fp) {
++entry:
++; CHECK-LABEL: check_r12:
++  %f = load i32 ()*, i32 ()** %fp, align 4
++  ; Force f to be moved into r12
++  %r12_f = tail call i32 ()* asm "add $0, $1, #0", "={r12},{r12}"(i32 ()* %f) nounwind
++  %call = call i32 %r12_f()
++; NOHARDENARM:     blx r12
++; NOHARDENTHUMB:   blx r12
++; HARDEN-NOT: bl {{__llvm_slsblr_thunk_(arm|thumb)_r12}}
++  ret i32 %call
++; CHECK: .Lfunc_end
++}
++
++define i32 @check_lr(i32 ()** %fp) {
++entry:
++; CHECK-LABEL: check_lr:
++  %f = load i32 ()*, i32 ()** %fp, align 4
++  ; Force f to be moved into lr
++  %lr_f = tail call i32 ()* asm "add $0, $1, #0", "={lr},{lr}"(i32 ()* %f) nounwind
++  %call = call i32 %lr_f()
++; NOHARDENARM:     blx lr
++; NOHARDENTHUMB:   blx lr
++; HARDEN-NOT: bl {{__llvm_slsblr_thunk_(arm|thumb)_lr}}
++  ret i32 %call
++; CHECK: .Lfunc_end
++}
++
++; Verify that even when sls-harden-blr is enabled, "blx r12" is still an
++; instruction that is accepted by the inline assembler
++define void @verify_inline_asm_blx_r12(void ()* %g) {
++entry:
++; CHECK-LABEL: verify_inline_asm_blx_r12:
++  %0 = bitcast void ()* %g to i8*
++  tail call void asm sideeffect "blx $0", "{r12}"(i8* %0) nounwind
++; CHECK: blx r12
++  ret void
++; CHECK:       {{bx lr$}}
++; ISBDSB-NEXT: dsb sy
++; ISBDSB-NEXT: isb
++; SB-NEXT:     {{ sb$}}
++; CHECK: .Lfunc_end
++}
++
++; HARDEN-label: {{__llvm_slsblr_thunk_(arm|thumb)_r5}}:
+ ; HARDEN:    bx r5
+ ; ISBDSB-NEXT: dsb sy
+ ; ISBDSB-NEXT: isb
+ ; SB-NEXT:     dsb sy
+ ; SB-NEXT:     isb
+ ; HARDEN-NEXT: .Lfunc_end
++
++
diff --git a/sys-devel/llvm/files/cherry/e463bd53c03ff9183bd30030477dfe6f3b2fdd0c.patch b/sys-devel/llvm/files/cherry/e463bd53c03ff9183bd30030477dfe6f3b2fdd0c.patch
new file mode 100644
index 0000000..d37bb46
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/e463bd53c03ff9183bd30030477dfe6f3b2fdd0c.patch
@@ -0,0 +1,373 @@
+commit e463bd53c03ff9183bd30030477dfe6f3b2fdd0c
+Author: Alexey Bataev <alexey.bataev@intel.com>
+Date:   Tue Jan 19 11:19:09 2021 -0800
+
+    Revert "[SLP]Merge reorder and reuse shuffles."
+    
+    This reverts commit 438682de6a38ac97f89fa38faf5c8dc9b09cd9ad to fix the
+    bug with the reducing size of the resulting vector for the entry node
+    with multiple users.
+
+diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+index 0fee52dcdd93..24885e4d8257 100644
+--- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
++++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp
+@@ -3500,7 +3500,6 @@ InstructionCost BoUpSLP::getEntryCost(TreeEntry *E) {
+ 
+     case Instruction::ExtractValue:
+     case Instruction::ExtractElement: {
+-      InstructionCost DeadCost = 0;
+       if (NeedToShuffleReuses) {
+         unsigned Idx = 0;
+         for (unsigned I : E->ReuseShuffleIndices) {
+@@ -3528,10 +3527,12 @@ InstructionCost BoUpSLP::getEntryCost(TreeEntry *E) {
+           ReuseShuffleCost +=
+               TTI->getVectorInstrCost(Instruction::ExtractElement, VecTy, Idx);
+         }
+-        DeadCost = ReuseShuffleCost;
+-      } else if (!E->ReorderIndices.empty()) {
+-        DeadCost = TTI->getShuffleCost(TargetTransformInfo::SK_PermuteSingleSrc,
+-                                       VecTy);
++      }
++      InstructionCost DeadCost = ReuseShuffleCost;
++      if (!E->ReorderIndices.empty()) {
++        // TODO: Merge this shuffle with the ReuseShuffleCost.
++        DeadCost += TTI->getShuffleCost(
++            TargetTransformInfo::SK_PermuteSingleSrc, VecTy);
+       }
+       for (unsigned I = 0, E = VL.size(); I < E; ++I) {
+         Instruction *EI = cast<Instruction>(VL[I]);
+@@ -3755,9 +3756,11 @@ InstructionCost BoUpSLP::getEntryCost(TreeEntry *E) {
+             Instruction::Load, VecTy, cast<LoadInst>(VL0)->getPointerOperand(),
+             /*VariableMask=*/false, alignment, CostKind, VL0);
+       }
+-      if (!NeedToShuffleReuses && !E->ReorderIndices.empty())
++      if (!E->ReorderIndices.empty()) {
++        // TODO: Merge this shuffle with the ReuseShuffleCost.
+         VecLdCost += TTI->getShuffleCost(
+             TargetTransformInfo::SK_PermuteSingleSrc, VecTy);
++      }
+       LLVM_DEBUG(dumpTreeCosts(E, ReuseShuffleCost, VecLdCost, ScalarLdCost));
+       return ReuseShuffleCost + VecLdCost - ScalarLdCost;
+     }
+@@ -3769,14 +3772,18 @@ InstructionCost BoUpSLP::getEntryCost(TreeEntry *E) {
+       Align Alignment = SI->getAlign();
+       InstructionCost ScalarEltCost = TTI->getMemoryOpCost(
+           Instruction::Store, ScalarTy, Alignment, 0, CostKind, VL0);
++      if (NeedToShuffleReuses)
++        ReuseShuffleCost = -(ReuseShuffleNumbers - VL.size()) * ScalarEltCost;
+       InstructionCost ScalarStCost = VecTy->getNumElements() * ScalarEltCost;
+       InstructionCost VecStCost = TTI->getMemoryOpCost(
+           Instruction::Store, VecTy, Alignment, 0, CostKind, VL0);
+-      if (IsReorder)
++      if (IsReorder) {
++        // TODO: Merge this shuffle with the ReuseShuffleCost.
+         VecStCost += TTI->getShuffleCost(
+             TargetTransformInfo::SK_PermuteSingleSrc, VecTy);
++      }
+       LLVM_DEBUG(dumpTreeCosts(E, ReuseShuffleCost, VecStCost, ScalarStCost));
+-      return VecStCost - ScalarStCost;
++      return ReuseShuffleCost + VecStCost - ScalarStCost;
+     }
+     case Instruction::Call: {
+       CallInst *CI = cast<CallInst>(VL0);
+@@ -4323,64 +4330,6 @@ Value *BoUpSLP::vectorizeTree(ArrayRef<Value *> VL) {
+   return Vec;
+ }
+ 
+-namespace {
+-/// Merges shuffle masks and emits final shuffle instruction, if required.
+-class ShuffleInstructionBuilder {
+-  IRBuilderBase &Builder;
+-  bool IsFinalized = false;
+-  SmallVector<int, 4> Mask;
+-
+-public:
+-  ShuffleInstructionBuilder(IRBuilderBase &Builder) : Builder(Builder) {}
+-
+-  /// Adds a mask, inverting it before applying.
+-  void addInversedMask(ArrayRef<unsigned> SubMask) {
+-    if (SubMask.empty())
+-      return;
+-    SmallVector<int, 4> NewMask;
+-    inversePermutation(SubMask, NewMask);
+-    addMask(NewMask);
+-  }
+-
+-  /// Functions adds masks, merging them into  single one.
+-  void addMask(ArrayRef<unsigned> SubMask) {
+-    SmallVector<int, 4> NewMask(SubMask.begin(), SubMask.end());
+-    addMask(NewMask);
+-  }
+-
+-  void addMask(ArrayRef<int> SubMask) {
+-    if (SubMask.empty())
+-      return;
+-    if (Mask.empty()) {
+-      Mask.append(SubMask.begin(), SubMask.end());
+-      return;
+-    }
+-    SmallVector<int, 4> NewMask(SubMask.size(), SubMask.size());
+-    int TermValue = std::min(Mask.size(), SubMask.size());
+-    for (int I = 0, E = SubMask.size(); I < E; ++I) {
+-      if (SubMask[I] >= TermValue || Mask[SubMask[I]] >= TermValue) {
+-        NewMask[I] = E;
+-        continue;
+-      }
+-      NewMask[I] = Mask[SubMask[I]];
+-    }
+-    Mask.swap(NewMask);
+-  }
+-
+-  Value *finalize(Value *V) {
+-    IsFinalized = true;
+-    if (Mask.empty())
+-      return V;
+-    return Builder.CreateShuffleVector(V, Mask, "shuffle");
+-  }
+-
+-  ~ShuffleInstructionBuilder() {
+-    assert((IsFinalized || Mask.empty()) &&
+-           "Must be finalized construction of the shuffles.");
+-  }
+-};
+-} // namespace
+-
+ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+   IRBuilder<>::InsertPointGuard Guard(Builder);
+ 
+@@ -4389,14 +4338,12 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+     return E->VectorizedValue;
+   }
+ 
+-  ShuffleInstructionBuilder ShuffleBuilder(Builder);
+   bool NeedToShuffleReuses = !E->ReuseShuffleIndices.empty();
+   if (E->State == TreeEntry::NeedToGather) {
+     setInsertPointAfterBundle(E);
+     Value *Vec = gather(E->Scalars);
+     if (NeedToShuffleReuses) {
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      Vec = ShuffleBuilder.finalize(Vec);
++      Vec = Builder.CreateShuffleVector(Vec, E->ReuseShuffleIndices, "shuffle");
+       if (auto *I = dyn_cast<Instruction>(Vec)) {
+         GatherSeq.insert(I);
+         CSEBlocks.insert(I->getParent());
+@@ -4454,10 +4401,18 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+ 
+     case Instruction::ExtractElement: {
+       Value *V = E->getSingleOperand(0);
+-      Builder.SetInsertPoint(VL0);
+-      ShuffleBuilder.addInversedMask(E->ReorderIndices);
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      V = ShuffleBuilder.finalize(V);
++      if (!E->ReorderIndices.empty()) {
++        SmallVector<int, 4> Mask;
++        inversePermutation(E->ReorderIndices, Mask);
++        Builder.SetInsertPoint(VL0);
++        V = Builder.CreateShuffleVector(V, Mask, "reorder_shuffle");
++      }
++      if (NeedToShuffleReuses) {
++        // TODO: Merge this shuffle with the ReorderShuffleMask.
++        if (E->ReorderIndices.empty())
++          Builder.SetInsertPoint(VL0);
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
++      }
+       E->VectorizedValue = V;
+       return V;
+     }
+@@ -4468,9 +4423,16 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+       Value *Ptr = Builder.CreateBitCast(LI->getOperand(0), PtrTy);
+       LoadInst *V = Builder.CreateAlignedLoad(VecTy, Ptr, LI->getAlign());
+       Value *NewV = propagateMetadata(V, E->Scalars);
+-      ShuffleBuilder.addInversedMask(E->ReorderIndices);
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      NewV = ShuffleBuilder.finalize(NewV);
++      if (!E->ReorderIndices.empty()) {
++        SmallVector<int, 4> Mask;
++        inversePermutation(E->ReorderIndices, Mask);
++        NewV = Builder.CreateShuffleVector(NewV, Mask, "reorder_shuffle");
++      }
++      if (NeedToShuffleReuses) {
++        // TODO: Merge this shuffle with the ReorderShuffleMask.
++        NewV = Builder.CreateShuffleVector(NewV, E->ReuseShuffleIndices,
++                                           "shuffle");
++      }
+       E->VectorizedValue = NewV;
+       return NewV;
+     }
+@@ -4497,8 +4459,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+ 
+       auto *CI = cast<CastInst>(VL0);
+       Value *V = Builder.CreateCast(CI->getOpcode(), InVec, VecTy);
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      V = ShuffleBuilder.finalize(V);
++      if (NeedToShuffleReuses)
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
+ 
+       E->VectorizedValue = V;
+       ++NumVectorInstructions;
+@@ -4519,8 +4481,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+       CmpInst::Predicate P0 = cast<CmpInst>(VL0)->getPredicate();
+       Value *V = Builder.CreateCmp(P0, L, R);
+       propagateIRFlags(V, E->Scalars, VL0);
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      V = ShuffleBuilder.finalize(V);
++      if (NeedToShuffleReuses)
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
+ 
+       E->VectorizedValue = V;
+       ++NumVectorInstructions;
+@@ -4539,8 +4501,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+       }
+ 
+       Value *V = Builder.CreateSelect(Cond, True, False);
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      V = ShuffleBuilder.finalize(V);
++      if (NeedToShuffleReuses)
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
+ 
+       E->VectorizedValue = V;
+       ++NumVectorInstructions;
+@@ -4562,8 +4524,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+       if (auto *I = dyn_cast<Instruction>(V))
+         V = propagateMetadata(I, E->Scalars);
+ 
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      V = ShuffleBuilder.finalize(V);
++      if (NeedToShuffleReuses)
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
+ 
+       E->VectorizedValue = V;
+       ++NumVectorInstructions;
+@@ -4605,8 +4567,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+       if (auto *I = dyn_cast<Instruction>(V))
+         V = propagateMetadata(I, E->Scalars);
+ 
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      V = ShuffleBuilder.finalize(V);
++      if (NeedToShuffleReuses)
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
+ 
+       E->VectorizedValue = V;
+       ++NumVectorInstructions;
+@@ -4648,9 +4610,15 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+       }
+       Value *V = propagateMetadata(NewLI, E->Scalars);
+ 
+-      ShuffleBuilder.addInversedMask(E->ReorderIndices);
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      V = ShuffleBuilder.finalize(V);
++      if (IsReorder) {
++        SmallVector<int, 4> Mask;
++        inversePermutation(E->ReorderIndices, Mask);
++        V = Builder.CreateShuffleVector(V, Mask, "reorder_shuffle");
++      }
++      if (NeedToShuffleReuses) {
++        // TODO: Merge this shuffle with the ReorderShuffleMask.
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
++      }
+       E->VectorizedValue = V;
+       ++NumVectorInstructions;
+       return V;
+@@ -4664,9 +4632,11 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+       setInsertPointAfterBundle(E);
+ 
+       Value *VecValue = vectorizeTree(E->getOperand(0));
+-      ShuffleBuilder.addMask(E->ReorderIndices);
+-      VecValue = ShuffleBuilder.finalize(VecValue);
+-
++      if (IsReorder) {
++        SmallVector<int, 4> Mask(E->ReorderIndices.begin(),
++                                 E->ReorderIndices.end());
++        VecValue = Builder.CreateShuffleVector(VecValue, Mask, "reorder_shuf");
++      }
+       Value *ScalarPtr = SI->getPointerOperand();
+       Value *VecPtr = Builder.CreateBitCast(
+           ScalarPtr, VecValue->getType()->getPointerTo(AS));
+@@ -4680,6 +4650,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+         ExternalUses.push_back(ExternalUser(ScalarPtr, cast<User>(VecPtr), 0));
+ 
+       Value *V = propagateMetadata(ST, E->Scalars);
++      if (NeedToShuffleReuses)
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
+ 
+       E->VectorizedValue = V;
+       ++NumVectorInstructions;
+@@ -4717,8 +4689,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+       if (Instruction *I = dyn_cast<Instruction>(V))
+         V = propagateMetadata(I, E->Scalars);
+ 
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      V = ShuffleBuilder.finalize(V);
++      if (NeedToShuffleReuses)
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
+ 
+       E->VectorizedValue = V;
+       ++NumVectorInstructions;
+@@ -4780,8 +4752,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+         ExternalUses.push_back(ExternalUser(ScalarArg, cast<User>(V), 0));
+ 
+       propagateIRFlags(V, E->Scalars, VL0);
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      V = ShuffleBuilder.finalize(V);
++      if (NeedToShuffleReuses)
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
+ 
+       E->VectorizedValue = V;
+       ++NumVectorInstructions;
+@@ -4847,8 +4819,8 @@ Value *BoUpSLP::vectorizeTree(TreeEntry *E) {
+       Value *V = Builder.CreateShuffleVector(V0, V1, Mask);
+       if (Instruction *I = dyn_cast<Instruction>(V))
+         V = propagateMetadata(I, E->Scalars);
+-      ShuffleBuilder.addMask(E->ReuseShuffleIndices);
+-      V = ShuffleBuilder.finalize(V);
++      if (NeedToShuffleReuses)
++        V = Builder.CreateShuffleVector(V, E->ReuseShuffleIndices, "shuffle");
+ 
+       E->VectorizedValue = V;
+       ++NumVectorInstructions;
+diff --git a/llvm/test/Transforms/SLPVectorizer/AArch64/PR38339.ll b/llvm/test/Transforms/SLPVectorizer/AArch64/PR38339.ll
+index d1754c0bbc54..1c8ddba98882 100644
+--- a/llvm/test/Transforms/SLPVectorizer/AArch64/PR38339.ll
++++ b/llvm/test/Transforms/SLPVectorizer/AArch64/PR38339.ll
+@@ -82,7 +82,8 @@ define void @f3(<2 x i16> %x, i16* %a) {
+ ; CHECK:       cont:
+ ; CHECK-NEXT:    [[XX:%.*]] = phi <2 x i16> [ [[X:%.*]], [[ENTRY:%.*]] ], [ undef, [[CONT]] ]
+ ; CHECK-NEXT:    [[AA:%.*]] = phi i16* [ [[A:%.*]], [[ENTRY]] ], [ undef, [[CONT]] ]
+-; CHECK-NEXT:    [[SHUFFLE:%.*]] = shufflevector <2 x i16> [[XX]], <2 x i16> poison, <4 x i32> <i32 1, i32 0, i32 0, i32 1>
++; CHECK-NEXT:    [[REORDER_SHUFFLE:%.*]] = shufflevector <2 x i16> [[XX]], <2 x i16> poison, <2 x i32> <i32 1, i32 0>
++; CHECK-NEXT:    [[SHUFFLE:%.*]] = shufflevector <2 x i16> [[REORDER_SHUFFLE]], <2 x i16> poison, <4 x i32> <i32 0, i32 1, i32 1, i32 0>
+ ; CHECK-NEXT:    [[PTR0:%.*]] = getelementptr inbounds [4 x i16], [4 x i16]* undef, i16 0, i16 0
+ ; CHECK-NEXT:    [[PTR1:%.*]] = getelementptr inbounds [4 x i16], [4 x i16]* undef, i16 0, i16 1
+ ; CHECK-NEXT:    [[PTR2:%.*]] = getelementptr inbounds [4 x i16], [4 x i16]* undef, i16 0, i16 2
+diff --git a/llvm/test/Transforms/SLPVectorizer/X86/PR32086.ll b/llvm/test/Transforms/SLPVectorizer/X86/PR32086.ll
+index 741dbcec392e..f9e38eaebc3f 100644
+--- a/llvm/test/Transforms/SLPVectorizer/X86/PR32086.ll
++++ b/llvm/test/Transforms/SLPVectorizer/X86/PR32086.ll
+@@ -35,7 +35,8 @@ define void @i64_simplifiedi_reversed(i64* noalias %st, i64* noalias %ld) {
+ ; CHECK-NEXT:    [[ARRAYIDX1:%.*]] = getelementptr inbounds i64, i64* [[LD:%.*]], i64 1
+ ; CHECK-NEXT:    [[TMP1:%.*]] = bitcast i64* [[LD]] to <2 x i64>*
+ ; CHECK-NEXT:    [[TMP2:%.*]] = load <2 x i64>, <2 x i64>* [[TMP1]], align 8
+-; CHECK-NEXT:    [[SHUFFLE:%.*]] = shufflevector <2 x i64> [[TMP2]], <2 x i64> poison, <4 x i32> <i32 1, i32 0, i32 1, i32 0>
++; CHECK-NEXT:    [[REORDER_SHUFFLE:%.*]] = shufflevector <2 x i64> [[TMP2]], <2 x i64> poison, <2 x i32> <i32 1, i32 0>
++; CHECK-NEXT:    [[SHUFFLE:%.*]] = shufflevector <2 x i64> [[REORDER_SHUFFLE]], <2 x i64> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
+ ; CHECK-NEXT:    [[ARRAYIDX3:%.*]] = getelementptr inbounds i64, i64* [[ST:%.*]], i64 1
+ ; CHECK-NEXT:    [[ARRAYIDX4:%.*]] = getelementptr inbounds i64, i64* [[ST]], i64 2
+ ; CHECK-NEXT:    [[ARRAYIDX5:%.*]] = getelementptr inbounds i64, i64* [[ST]], i64 3
+diff --git a/llvm/test/Transforms/SLPVectorizer/X86/shrink_after_reorder.ll b/llvm/test/Transforms/SLPVectorizer/X86/shrink_after_reorder.ll
+index 1b89c9a437a2..e7b2ce8ecbb2 100644
+--- a/llvm/test/Transforms/SLPVectorizer/X86/shrink_after_reorder.ll
++++ b/llvm/test/Transforms/SLPVectorizer/X86/shrink_after_reorder.ll
+@@ -8,9 +8,10 @@ define void @wombat(i32* %ptr, i32* %ptr1) {
+ ; CHECK-NEXT:    [[TMP8:%.*]] = getelementptr inbounds i32, i32* [[PTR]], i64 0
+ ; CHECK-NEXT:    [[TMP0:%.*]] = bitcast i32* [[TMP8]] to <2 x i32>*
+ ; CHECK-NEXT:    [[TMP1:%.*]] = load <2 x i32>, <2 x i32>* [[TMP0]], align 8
+-; CHECK-NEXT:    [[SHUFFLE:%.*]] = shufflevector <2 x i32> [[TMP1]], <2 x i32> poison, <4 x i32> <i32 1, i32 0, i32 1, i32 0>
++; CHECK-NEXT:    [[REORDER_SHUFFLE:%.*]] = shufflevector <2 x i32> [[TMP1]], <2 x i32> poison, <2 x i32> <i32 1, i32 0>
++; CHECK-NEXT:    [[SHUFFLE:%.*]] = shufflevector <2 x i32> [[REORDER_SHUFFLE]], <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
+ ; CHECK-NEXT:    [[TMP27:%.*]] = getelementptr inbounds i32, i32* [[PTR1:%.*]], i32 3
+-; CHECK-NEXT:    [[TMP2:%.*]] = add nsw <2 x i32> [[TMP1]], <i32 -1, i32 -1>
++; CHECK-NEXT:    [[TMP2:%.*]] = add nsw <2 x i32> [[REORDER_SHUFFLE]], <i32 -1, i32 -1>
+ ; CHECK-NEXT:    [[SHUFFLE1:%.*]] = shufflevector <2 x i32> [[TMP2]], <2 x i32> poison, <4 x i32> <i32 0, i32 1, i32 0, i32 1>
+ ; CHECK-NEXT:    [[TMP34:%.*]] = getelementptr inbounds i32, i32* [[PTR1]], i32 4
+ ; CHECK-NEXT:    [[TMP40:%.*]] = getelementptr inbounds i32, i32* [[PTR1]], i32 5
diff --git a/sys-devel/llvm/files/cherry/e53bbd99516fc7b612df1ae08d48288d0b8784ea.patch b/sys-devel/llvm/files/cherry/e53bbd99516fc7b612df1ae08d48288d0b8784ea.patch
new file mode 100644
index 0000000..84c41eb
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/e53bbd99516fc7b612df1ae08d48288d0b8784ea.patch
@@ -0,0 +1,158 @@
+commit e53bbd99516fc7b612df1ae08d48288d0b8784ea
+Author: Zequan Wu <zequanwu@google.com>
+Date:   Tue Jan 12 11:22:31 2021 -0800
+
+    [IR] move nomerge attribute from function declaration/definition to callsites
+    
+    Move nomerge attribute from function declaration/definition to callsites to
+    allow virtual function calls attach the attribute.
+    
+    Differential Revision: https://reviews.llvm.org/D94537
+
+diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp
+index 2cc7203d1194..42801372189b 100644
+--- a/clang/lib/CodeGen/CGCall.cpp
++++ b/clang/lib/CodeGen/CGCall.cpp
+@@ -1985,7 +1985,9 @@ void CodeGenModule::ConstructAttributeList(
+           FuncAttrs.addAttribute(llvm::Attribute::NoReturn);
+         NBA = Fn->getAttr<NoBuiltinAttr>();
+       }
+-      if (!AttrOnCallSite && TargetDecl->hasAttr<NoMergeAttr>())
++      // Only place nomerge attribute on call sites, never functions. This
++      // allows it to work on indirect virtual function calls.
++      if (AttrOnCallSite && TargetDecl->hasAttr<NoMergeAttr>())
+         FuncAttrs.addAttribute(llvm::Attribute::NoMerge);
+     }
+ 
+@@ -5018,13 +5020,11 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo,
+         Attrs.addAttribute(getLLVMContext(), llvm::AttributeList::FunctionIndex,
+                            llvm::Attribute::StrictFP);
+ 
+-  // Add nomerge attribute to the call-site if the callee function doesn't have
+-  // the attribute.
+-  if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(TargetDecl))
+-    if (!FD->hasAttr<NoMergeAttr>() && InNoMergeAttributedStmt)
+-      Attrs = Attrs.addAttribute(getLLVMContext(),
+-                                 llvm::AttributeList::FunctionIndex,
+-                                 llvm::Attribute::NoMerge);
++  // Add call-site nomerge attribute if exists.
++  if (InNoMergeAttributedStmt)
++    Attrs =
++        Attrs.addAttribute(getLLVMContext(), llvm::AttributeList::FunctionIndex,
++                           llvm::Attribute::NoMerge);
+ 
+   // Apply some call-site-specific attributes.
+   // TODO: work this into building the attribute set.
+diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
+index da5b03b138bf..bee51715bdc6 100644
+--- a/clang/lib/CodeGen/CodeGenModule.cpp
++++ b/clang/lib/CodeGen/CodeGenModule.cpp
+@@ -1772,9 +1772,6 @@ void CodeGenModule::SetLLVMFunctionAttributesForDefinition(const Decl *D,
+       B.addAttribute(llvm::Attribute::MinSize);
+   }
+ 
+-  if (D->hasAttr<NoMergeAttr>())
+-    B.addAttribute(llvm::Attribute::NoMerge);
+-
+   F->addAttributes(llvm::AttributeList::FunctionIndex, B);
+ 
+   unsigned alignment = D->getMaxAlignment() / Context.getCharWidth();
+diff --git a/clang/test/CodeGen/attr-nomerge.cpp b/clang/test/CodeGen/attr-nomerge.cpp
+index d93f4a7c96d6..fc26af379fdb 100644
+--- a/clang/test/CodeGen/attr-nomerge.cpp
++++ b/clang/test/CodeGen/attr-nomerge.cpp
+@@ -3,7 +3,7 @@
+ class A {
+ public:
+   [[clang::nomerge]] A();
+-  [[clang::nomerge]] ~A();
++  [[clang::nomerge]] virtual ~A();
+   [[clang::nomerge]] void f();
+   [[clang::nomerge]] virtual void g();
+   [[clang::nomerge]] static void f1();
+@@ -14,14 +14,14 @@ public:
+   void g() override;
+ };
+ 
+-[[clang::nomerge]] bool bar();
++bool bar();
+ [[clang::nomerge]] void f(bool, bool);
+ 
+ void foo(int i, A *ap, B *bp) {
+   [[clang::nomerge]] bar();
+   [[clang::nomerge]] (i = 4, bar());
+   [[clang::nomerge]] (void)(bar());
+-  [[clang::nomerge]] f(bar(), bar());
++  f(bar(), bar());
+   [[clang::nomerge]] [] { bar(); bar(); }(); // nomerge only applies to the anonymous function call
+   [[clang::nomerge]] for (bar(); bar(); bar()) {}
+   [[clang::nomerge]] { asm("nop"); }
+@@ -37,6 +37,9 @@ void foo(int i, A *ap, B *bp) {
+ 
+   B b;
+   b.g();
++
++  A *newA = new B();
++  delete newA;
+ }
+ 
+ int g(int i);
+@@ -57,37 +60,34 @@ void something_else_again() {
+   g(1);
+ }
+ 
++// CHECK: call zeroext i1 @_Z3barv() #[[ATTR0:[0-9]+]]
++// CHECK: call zeroext i1 @_Z3barv() #[[ATTR0]]
++// CHECK: call zeroext i1 @_Z3barv() #[[ATTR0]]
+ // CHECK: call zeroext i1 @_Z3barv(){{$}}
+ // CHECK: call zeroext i1 @_Z3barv(){{$}}
+-// CHECK: call zeroext i1 @_Z3barv(){{$}}
+-// CHECK: call zeroext i1 @_Z3barv(){{$}}
+-// CHECK: call zeroext i1 @_Z3barv(){{$}}
+-// CHECK: call void @_Z1fbb({{.*}}){{$}}
+-// CHECK: call void @"_ZZ3fooiP1AP1BENK3$_0clEv"{{.*}} #[[ATTR0:[0-9]+]]
+-// CHECK: call zeroext i1 @_Z3barv(){{$}}
+-// CHECK: call zeroext i1 @_Z3barv(){{$}}
+-// CHECK: call zeroext i1 @_Z3barv(){{$}}
++// CHECK: call void @_Z1fbb({{.*}}) #[[ATTR0]]
++// CHECK: call void @"_ZZ3fooiP1AP1BENK3$_0clEv"{{.*}} #[[ATTR0]]
++// CHECK: call zeroext i1 @_Z3barv() #[[ATTR0]]
++// CHECK-LABEL: for.cond:
++// CHECK: call zeroext i1 @_Z3barv() #[[ATTR0]]
++// CHECK-LABEL: for.inc:
++// CHECK: call zeroext i1 @_Z3barv() #[[ATTR0]]
+ // CHECK: call void asm sideeffect "nop"{{.*}} #[[ATTR1:[0-9]+]]
+ // CHECK: call zeroext i1 @_Z3barv(){{$}}
+ // CHECK: %[[AG:.*]] = load void (%class.A*)*, void (%class.A*)**
+-// CHECK-NEXT: call void %[[AG]](%class.A* nonnull dereferenceable
++// CHECK-NEXT: call void %[[AG]](%class.A* {{.*}}) #[[ATTR0]]
+ // CHECK: %[[BG:.*]] = load void (%class.B*)*, void (%class.B*)**
+ // CHECK-NEXT: call void %[[BG]](%class.B* nonnull dereferenceable
+-
+-
+-// CHECK-DAG: declare zeroext i1 @_Z3barv() #[[ATTR2:[0-9]+]]
+-// CHECK-DAG: declare void @_Z1fbb(i1 zeroext, i1 zeroext) #[[ATTR2]]
+-// CHECK-DAG: declare void @_ZN1AC1Ev{{.*}} #[[ATTR2]]
+-// CHECK-DAG: declare void @_ZN1A1fEv{{.*}} #[[ATTR2]]
+-// CHECK-DAG: declare void @_ZN1A1gEv{{.*}} #[[ATTR2]]
+-// CHECK-DAG: declare void @_ZN1A2f1Ev{{.*}} #[[ATTR2]]
+-// CHECK-DAG: declare void @_ZN1AC2Ev{{.*}} #[[ATTR2]]
+-// CHECK-DAG: declare void @_ZN1AD1Ev{{.*}} #[[ATTR3:[0-9]+]]
+-// CHECK-DAG: declare void @_ZN1AD2Ev{{.*}} #[[ATTR3]]
+-// CHECK-DAG: define{{.*}} i32 @_Z1gi(i32 %i) #[[ATTR4:[0-9]+]] {
++// CHECK: call void @_ZN1AC1Ev({{.*}}) #[[ATTR0]]
++// CHECK: call void @_ZN1A1fEv({{.*}}) #[[ATTR0]]
++// CHECK: call void @_ZN1A1gEv({{.*}}) #[[ATTR0]]
++// CHECK: call void @_ZN1A2f1Ev() #[[ATTR0]]
++// CHECK: call void @_ZN1BC1Ev({{.*}}){{$}}
++// CHECK: call void @_ZN1B1gEv({{.*}}){{$}}
++// CHECK: call void @_ZN1BC1Ev({{.*}}){{$}}
++// CHECK: %[[AG:.*]] = load void (%class.A*)*, void (%class.A*)**
++// CHECK-NEXT: call void %[[AG]](%class.A* {{.*}}) #[[ATTR1]]
++// CHECK: call void  @_ZN1AD1Ev(%class.A* {{.*}}) #[[ATTR1]]
+ 
+ // CHECK-DAG: attributes #[[ATTR0]] = {{{.*}}nomerge{{.*}}}
+ // CHECK-DAG: attributes #[[ATTR1]] = {{{.*}}nomerge{{.*}}}
+-// CHECK-DAG: attributes #[[ATTR2]] = {{{.*}}nomerge{{.*}}}
+-// CHECK-DAG: attributes #[[ATTR3]] = {{{.*}}nomerge{{.*}}}
+-// CHECK-DAG: attributes #[[ATTR4]] = {{{.*}}nomerge{{.*}}}
diff --git a/sys-devel/llvm/files/cherry/ee8a5e4bc2c986b8e6c07e81fb58dc1e5a5c2d17.patch b/sys-devel/llvm/files/cherry/ee8a5e4bc2c986b8e6c07e81fb58dc1e5a5c2d17.patch
new file mode 100644
index 0000000..44c3644
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/ee8a5e4bc2c986b8e6c07e81fb58dc1e5a5c2d17.patch
@@ -0,0 +1,41 @@
+commit ee8a5e4bc2c986b8e6c07e81fb58dc1e5a5c2d17
+Author: Alexey Lapshin <a.v.lapshin@mail.ru>
+Date:   Mon Apr 12 14:27:14 2021 +0300
+
+    Fix chrome os failure after 021de7cf80268091cf13485a538b611b37d0b33e.
+    
+    chrome os build failed after D98511:
+    https://bugs.chromium.org/p/chromium/issues/detail?id=1197970
+    
+    This patch fixes permission issue appeared after D98511.
+
+diff --git a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
+index 6c6b26b3c32f..d3cc94782bed 100644
+--- a/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
++++ b/llvm/tools/llvm-objcopy/llvm-objcopy.cpp
+@@ -259,6 +259,12 @@ static Error restoreStatOnFile(StringRef Filename,
+   if (std::error_code EC = sys::fs::status(FD, OStat))
+     return createFileError(Filename, EC);
+   if (OStat.type() == sys::fs::file_type::regular_file) {
++#ifndef _WIN32
++    // Keep ownership if llvm-objcopy is called under root.
++    if (Config.InputFilename == Config.OutputFilename && OStat.getUser() == 0)
++      sys::fs::changeFileOwnership(FD, Stat.getUser(), Stat.getGroup());
++#endif
++
+     sys::fs::perms Perm = Stat.permissions();
+     if (Config.InputFilename != Config.OutputFilename)
+       Perm = static_cast<sys::fs::perms>(Perm & ~sys::fs::getUmask() & ~06000);
+@@ -268,12 +274,6 @@ static Error restoreStatOnFile(StringRef Filename,
+     if (auto EC = sys::fs::setPermissions(FD, Perm))
+ #endif
+       return createFileError(Filename, EC);
+-
+-#ifndef _WIN32
+-    // Keep ownership if llvm-objcopy is called under root.
+-    if (Config.InputFilename == Config.OutputFilename && OStat.getUser() == 0)
+-      sys::fs::changeFileOwnership(FD, Stat.getUser(), Stat.getGroup());
+-#endif
+   }
+ 
+   if (auto EC = sys::Process::SafelyCloseFileDescriptor(FD))
diff --git a/sys-devel/llvm/files/cherry/fa35c1f80f0ea080a7cbc581416929b0a654f25c.patch b/sys-devel/llvm/files/cherry/fa35c1f80f0ea080a7cbc581416929b0a654f25c.patch
new file mode 100644
index 0000000..40310b4
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/fa35c1f80f0ea080a7cbc581416929b0a654f25c.patch
@@ -0,0 +1,123 @@
+commit fa35c1f80f0ea080a7cbc581416929b0a654f25c
+Author: Duncan P. N. Exon Smith <dexonsmith@apple.com>
+Date:   Wed Feb 10 15:23:53 2021 -0800
+
+    ValueMapper: Rename RF_MoveDistinctMDs => RF_ReuseAndMutateDistinctMDs, NFC
+    
+    Rename the `RF_MoveDistinctMDs` flag passed into `MapValue` and
+    `MapMetadata` to `RF_ReuseAndMutateDistinctMDs` in order to more
+    precisely describe its effect and clarify the header documentation.
+    
+    Found this while helping to investigate PR48841, which pointed out an
+    unsound use of the flag in `CloneModule()`. For now I've just added a
+    FIXME there, but I'm hopeful that the new (more precise) name will
+    prevent other similar errors.
+
+diff --git a/llvm/include/llvm/Transforms/Utils/ValueMapper.h b/llvm/include/llvm/Transforms/Utils/ValueMapper.h
+index ff5bfc609586..4245f51cc1e2 100644
+--- a/llvm/include/llvm/Transforms/Utils/ValueMapper.h
++++ b/llvm/include/llvm/Transforms/Utils/ValueMapper.h
+@@ -89,9 +89,11 @@ enum RemapFlags {
+   /// \a MapMetadata() always ignores this flag.
+   RF_IgnoreMissingLocals = 2,
+ 
+-  /// Instruct the remapper to move distinct metadata instead of duplicating it
+-  /// when there are module-level changes.
+-  RF_MoveDistinctMDs = 4,
++  /// Instruct the remapper to reuse and mutate distinct metadata (remapping
++  /// them in place) instead of cloning remapped copies. This flag has no
++  /// effect when when RF_NoModuleLevelChanges, since that implies an identity
++  /// mapping.
++  RF_ReuseAndMutateDistinctMDs = 4,
+ 
+   /// Any global values not in value map are mapped to null instead of mapping
+   /// to self.  Illegal if RF_IgnoreMissingLocals is also set.
+diff --git a/llvm/lib/IR/LLVMContextImpl.h b/llvm/lib/IR/LLVMContextImpl.h
+index 05fd1814e2dc..6d5588352dfb 100644
+--- a/llvm/lib/IR/LLVMContextImpl.h
++++ b/llvm/lib/IR/LLVMContextImpl.h
+@@ -784,10 +784,10 @@ template <> struct MDNodeSubsetEqualImpl<DISubprogram> {
+ 
+     // Compare to the RHS.
+     // FIXME: We need to compare template parameters here to avoid incorrect
+-    // collisions in mapMetadata when RF_MoveDistinctMDs and a ODR-DISubprogram
+-    // has a non-ODR template parameter (i.e., a DICompositeType that does not
+-    // have an identifier). Eventually we should decouple ODR logic from
+-    // uniquing logic.
++    // collisions in mapMetadata when RF_ReuseAndMutateDistinctMDs and a
++    // ODR-DISubprogram has a non-ODR template parameter (i.e., a
++    // DICompositeType that does not have an identifier). Eventually we should
++    // decouple ODR logic from uniquing logic.
+     return IsDefinition == RHS->isDefinition() && Scope == RHS->getRawScope() &&
+            LinkageName == RHS->getRawLinkageName() &&
+            TemplateParams == RHS->getRawTemplateParams();
+diff --git a/llvm/lib/Linker/IRMover.cpp b/llvm/lib/Linker/IRMover.cpp
+index 6a2f84bb48a0..4d7c5ef67217 100644
+--- a/llvm/lib/Linker/IRMover.cpp
++++ b/llvm/lib/Linker/IRMover.cpp
+@@ -520,8 +520,8 @@ public:
+       : DstM(DstM), SrcM(std::move(SrcM)), AddLazyFor(std::move(AddLazyFor)),
+         TypeMap(Set), GValMaterializer(*this), LValMaterializer(*this),
+         SharedMDs(SharedMDs), IsPerformingImport(IsPerformingImport),
+-        Mapper(ValueMap, RF_MoveDistinctMDs | RF_IgnoreMissingLocals, &TypeMap,
+-               &GValMaterializer),
++        Mapper(ValueMap, RF_ReuseAndMutateDistinctMDs | RF_IgnoreMissingLocals,
++               &TypeMap, &GValMaterializer),
+         IndirectSymbolMCID(Mapper.registerAlternateMappingContext(
+             IndirectSymbolValueMap, &LValMaterializer)) {
+     ValueMap.getMDMap() = std::move(SharedMDs);
+diff --git a/llvm/lib/Transforms/Utils/CloneModule.cpp b/llvm/lib/Transforms/Utils/CloneModule.cpp
+index 6de679bc9640..487cd4eae957 100644
+--- a/llvm/lib/Transforms/Utils/CloneModule.cpp
++++ b/llvm/lib/Transforms/Utils/CloneModule.cpp
+@@ -120,9 +120,13 @@ std::unique_ptr<Module> llvm::CloneModule(
+ 
+     SmallVector<std::pair<unsigned, MDNode *>, 1> MDs;
+     G.getAllMetadata(MDs);
++
++    // FIXME: Stop using RF_ReuseAndMutateDistinctMDs here, since it's unsound
++    // to mutate metadata that is still referenced by the source module unless
++    // the source is about to be discarded (see IRMover for a valid use).
+     for (auto MD : MDs)
+-      GV->addMetadata(MD.first,
+-                      *MapMetadata(MD.second, VMap, RF_MoveDistinctMDs));
++      GV->addMetadata(MD.first, *MapMetadata(MD.second, VMap,
++                                             RF_ReuseAndMutateDistinctMDs));
+ 
+     if (G.isDeclaration())
+       continue;
+diff --git a/llvm/lib/Transforms/Utils/ValueMapper.cpp b/llvm/lib/Transforms/Utils/ValueMapper.cpp
+index 930e0b7ee01a..9557fa9becf0 100644
+--- a/llvm/lib/Transforms/Utils/ValueMapper.cpp
++++ b/llvm/lib/Transforms/Utils/ValueMapper.cpp
+@@ -547,7 +547,7 @@ MDNode *MDNodeMapper::mapDistinctNode(const MDNode &N) {
+   assert(N.isDistinct() && "Expected a distinct node");
+   assert(!M.getVM().getMappedMD(&N) && "Expected an unmapped node");
+   DistinctWorklist.push_back(
+-      cast<MDNode>((M.Flags & RF_MoveDistinctMDs)
++      cast<MDNode>((M.Flags & RF_ReuseAndMutateDistinctMDs)
+                        ? M.mapToSelf(&N)
+                        : M.mapToMetadata(&N, cloneOrBuildODR(N))));
+   return DistinctWorklist.back();
+diff --git a/llvm/unittests/Transforms/Utils/ValueMapperTest.cpp b/llvm/unittests/Transforms/Utils/ValueMapperTest.cpp
+index a586ac7bb20a..abfa67143463 100644
+--- a/llvm/unittests/Transforms/Utils/ValueMapperTest.cpp
++++ b/llvm/unittests/Transforms/Utils/ValueMapperTest.cpp
+@@ -124,7 +124,7 @@ TEST(ValueMapperTest, mapMDNodeDistinct) {
+   {
+     // The node should be moved.
+     ValueToValueMapTy VM;
+-    EXPECT_EQ(D, ValueMapper(VM, RF_MoveDistinctMDs).mapMDNode(*D));
++    EXPECT_EQ(D, ValueMapper(VM, RF_ReuseAndMutateDistinctMDs).mapMDNode(*D));
+   }
+ }
+ 
+@@ -139,7 +139,7 @@ TEST(ValueMapperTest, mapMDNodeDistinctOperands) {
+   VM.MD()[Old].reset(New);
+ 
+   // Make sure operands are updated.
+-  EXPECT_EQ(D, ValueMapper(VM, RF_MoveDistinctMDs).mapMDNode(*D));
++  EXPECT_EQ(D, ValueMapper(VM, RF_ReuseAndMutateDistinctMDs).mapMDNode(*D));
+   EXPECT_EQ(New, D->getOperand(0));
+ }
+ 
diff --git a/sys-devel/llvm/files/cherry/fb0f7288051eb2745bb9211306f53ff9aa6f73e2.patch b/sys-devel/llvm/files/cherry/fb0f7288051eb2745bb9211306f53ff9aa6f73e2.patch
new file mode 100644
index 0000000..b164640
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/fb0f7288051eb2745bb9211306f53ff9aa6f73e2.patch
@@ -0,0 +1,318 @@
+commit fb0f7288051eb2745bb9211306f53ff9aa6f73e2
+Author: Zequan Wu <zequanwu@google.com>
+Date:   Mon Dec 7 16:37:14 2020 -0800
+
+    [Clang] Make nomerge attribute a function attribute as well as a statement attribute.
+    
+    Differential Revision: https://reviews.llvm.org/D92800
+
+diff --git a/clang/include/clang/AST/Attr.h b/clang/include/clang/AST/Attr.h
+index 8d9fb8f2bf27..e453733ab92c 100644
+--- a/clang/include/clang/AST/Attr.h
++++ b/clang/include/clang/AST/Attr.h
+@@ -162,6 +162,21 @@ public:
+   }
+ };
+ 
++class DeclOrStmtAttr : public InheritableAttr {
++protected:
++  DeclOrStmtAttr(ASTContext &Context, const AttributeCommonInfo &CommonInfo,
++                 attr::Kind AK, bool IsLateParsed,
++                 bool InheritEvenIfAlreadyPresent)
++      : InheritableAttr(Context, CommonInfo, AK, IsLateParsed,
++                        InheritEvenIfAlreadyPresent) {}
++
++public:
++  static bool classof(const Attr *A) {
++    return A->getKind() >= attr::FirstDeclOrStmtAttr &&
++           A->getKind() <= attr::LastDeclOrStmtAttr;
++  }
++};
++
+ class InheritableParamAttr : public InheritableAttr {
+ protected:
+   InheritableParamAttr(ASTContext &Context,
+diff --git a/clang/include/clang/Basic/Attr.td b/clang/include/clang/Basic/Attr.td
+index 7d566e64c99b..ce2ee40dc036 100644
+--- a/clang/include/clang/Basic/Attr.td
++++ b/clang/include/clang/Basic/Attr.td
+@@ -570,6 +570,9 @@ class InheritableAttr : Attr {
+ /// attributes, but have historically been written on declarations.
+ class DeclOrTypeAttr : InheritableAttr;
+ 
++/// A attribute is either a declaration attribute or a statement attribute.
++class DeclOrStmtAttr : InheritableAttr;
++
+ /// A target-specific attribute.  This class is meant to be used as a mixin
+ /// with InheritableAttr or Attr depending on the attribute's needs.
+ class TargetSpecificAttr<TargetSpec target> {
+@@ -1317,9 +1320,12 @@ def Unlikely : StmtAttr {
+   let Documentation = [LikelihoodDocs];
+ }
+ 
+-def NoMerge : StmtAttr {
++def NoMerge : DeclOrStmtAttr {
+   let Spellings = [Clang<"nomerge">];
+   let Documentation = [NoMergeDocs];
++  let InheritEvenIfAlreadyPresent = 1;
++  let Subjects = SubjectList<[Function], ErrorDiag, "functions and statements">;
++  let SimpleHandler = 1;
+ }
+ 
+ def FastCall : DeclOrTypeAttr {
+diff --git a/clang/include/clang/Basic/AttrDocs.td b/clang/include/clang/Basic/AttrDocs.td
+index 4f8cd8ecd86f..c3a412158aba 100644
+--- a/clang/include/clang/Basic/AttrDocs.td
++++ b/clang/include/clang/Basic/AttrDocs.td
+@@ -386,7 +386,11 @@ location of certain calls. For example, it will prevent tail merging otherwise
+ identical code sequences that raise an exception or terminate the program. Tail
+ merging normally reduces the precision of source location information, making
+ stack traces less useful for debugging. This attribute gives the user control
+-over the tradeoff between code size and debug information precision.
++over the tradeoff between code size and debug information precision. 
++
++``nomerge`` attribute can also be used as function attribute to prevent all 
++calls to the specified function from merging. It has no effect on indirect 
++calls.
+   }];
+ }
+ 
+diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp
+index 28a7d128505a..bfc7b8e74d8f 100644
+--- a/clang/lib/CodeGen/CGCall.cpp
++++ b/clang/lib/CodeGen/CGCall.cpp
+@@ -1968,6 +1968,8 @@ void CodeGenModule::ConstructAttributeList(
+           FuncAttrs.addAttribute(llvm::Attribute::NoReturn);
+         NBA = Fn->getAttr<NoBuiltinAttr>();
+       }
++      if (!AttrOnCallSite && TargetDecl->hasAttr<NoMergeAttr>())
++        FuncAttrs.addAttribute(llvm::Attribute::NoMerge);
+     }
+ 
+     // 'const', 'pure' and 'noalias' attributed functions are also nounwind.
+@@ -4978,11 +4980,13 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo,
+         Attrs.addAttribute(getLLVMContext(), llvm::AttributeList::FunctionIndex,
+                            llvm::Attribute::StrictFP);
+ 
+-  // Add call-site nomerge attribute if exists.
+-  if (InNoMergeAttributedStmt)
+-    Attrs =
+-      Attrs.addAttribute(getLLVMContext(), llvm::AttributeList::FunctionIndex,
+-                         llvm::Attribute::NoMerge);
++  // Add nomerge attribute to the call-site if the callee function doesn't have
++  // the attribute.
++  if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(TargetDecl))
++    if (!FD->hasAttr<NoMergeAttr>() && InNoMergeAttributedStmt)
++      Attrs = Attrs.addAttribute(getLLVMContext(),
++                                 llvm::AttributeList::FunctionIndex,
++                                 llvm::Attribute::NoMerge);
+ 
+   // Apply some call-site-specific attributes.
+   // TODO: work this into building the attribute set.
+diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
+index 0bb9c91f2434..7dd343dbcc16 100644
+--- a/clang/lib/CodeGen/CodeGenModule.cpp
++++ b/clang/lib/CodeGen/CodeGenModule.cpp
+@@ -1749,6 +1749,9 @@ void CodeGenModule::SetLLVMFunctionAttributesForDefinition(const Decl *D,
+       B.addAttribute(llvm::Attribute::MinSize);
+   }
+ 
++  if (D->hasAttr<NoMergeAttr>())
++    B.addAttribute(llvm::Attribute::NoMerge);
++
+   F->addAttributes(llvm::AttributeList::FunctionIndex, B);
+ 
+   unsigned alignment = D->getMaxAlignment() / Context.getCharWidth();
+diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp
+index 6b2145029e92..954388dda82e 100644
+--- a/clang/lib/Sema/SemaDeclAttr.cpp
++++ b/clang/lib/Sema/SemaDeclAttr.cpp
+@@ -7910,6 +7910,9 @@ static void ProcessDeclAttribute(Sema &S, Scope *scope, Decl *D,
+     handleSimpleAttributeWithExclusions<DisableTailCallsAttr, NakedAttr>(S, D,
+                                                                          AL);
+     break;
++  case ParsedAttr::AT_NoMerge:
++    handleSimpleAttribute<NoMergeAttr>(S, D, AL);
++    break;
+   case ParsedAttr::AT_Visibility:
+     handleVisibilityAttr(S, D, AL, false);
+     break;
+diff --git a/clang/test/CodeGen/attr-nomerge.cpp b/clang/test/CodeGen/attr-nomerge.cpp
+index cc594db14968..bbf0547a050a 100644
+--- a/clang/test/CodeGen/attr-nomerge.cpp
++++ b/clang/test/CodeGen/attr-nomerge.cpp
+@@ -1,9 +1,23 @@
+ // RUN: %clang_cc1 -S -emit-llvm %s -triple x86_64-unknown-linux-gnu -o - | FileCheck %s
+ 
+-bool bar();
+-void f(bool, bool);
++class A {
++public:
++  [[clang::nomerge]] A();
++  [[clang::nomerge]] ~A();
++  [[clang::nomerge]] void f();
++  [[clang::nomerge]] virtual void g();
++  [[clang::nomerge]] static void f1();
++};
+ 
+-void foo(int i) {
++class B : public A {
++public:
++  void g() override;
++};
++
++[[clang::nomerge]] bool bar();
++[[clang::nomerge]] void f(bool, bool);
++
++void foo(int i, A *ap, B *bp) {
+   [[clang::nomerge]] bar();
+   [[clang::nomerge]] (i = 4, bar());
+   [[clang::nomerge]] (void)(bar());
+@@ -12,18 +26,68 @@ void foo(int i) {
+   [[clang::nomerge]] for (bar(); bar(); bar()) {}
+   [[clang::nomerge]] { asm("nop"); }
+   bar();
++
++  ap->g();
++  bp->g();
++
++  A a;
++  a.f();
++  a.g();
++  A::f1();
++
++  B b;
++  b.g();
++}
++
++int g(int i);
++
++void something() {
++  g(1);
++}
++
++[[clang::nomerge]] int g(int i);
++
++void something_else() {
++  g(1);
++}
++
++int g(int i) { return i; }
++
++void something_else_again() {
++  g(1);
+ }
+-// CHECK: call zeroext i1 @_Z3barv() #[[NOMERGEATTR:[0-9]+]]
+-// CHECK: call zeroext i1 @_Z3barv() #[[NOMERGEATTR]]
+-// CHECK: call zeroext i1 @_Z3barv() #[[NOMERGEATTR]]
+-// CHECK: call zeroext i1 @_Z3barv() #[[NOMERGEATTR]]
+-// CHECK: call zeroext i1 @_Z3barv() #[[NOMERGEATTR]]
+-// CHECK: call void @_Z1fbb({{.*}}) #[[NOMERGEATTR]]
+-// CHECK: call void @"_ZZ3fooiENK3$_0clEv"(%class.anon* {{[^,]*}} %ref.tmp) #[[NOMERGEATTR]]
+-// CHECK: call zeroext i1 @_Z3barv() #[[NOMERGEATTR]]
+-// CHECK: call zeroext i1 @_Z3barv() #[[NOMERGEATTR]]
+-// CHECK: call zeroext i1 @_Z3barv() #[[NOMERGEATTR]]
+-// CHECK: call void asm {{.*}} #[[NOMERGEATTR2:[0-9]+]]
+-// CHECK: call zeroext i1 @_Z3barv()
+-// CHECK: attributes #[[NOMERGEATTR]] = { nomerge }
+-// CHECK: attributes #[[NOMERGEATTR2]] = { nomerge nounwind }
++
++// CHECK: call zeroext i1 @_Z3barv(){{$}}
++// CHECK: call zeroext i1 @_Z3barv(){{$}}
++// CHECK: call zeroext i1 @_Z3barv(){{$}}
++// CHECK: call zeroext i1 @_Z3barv(){{$}}
++// CHECK: call zeroext i1 @_Z3barv(){{$}}
++// CHECK: call void @_Z1fbb({{.*}}){{$}}
++// CHECK: call void @"_ZZ3fooiP1AP1BENK3$_0clEv"{{.*}} #[[ATTR0:[0-9]+]]
++// CHECK: call zeroext i1 @_Z3barv(){{$}}
++// CHECK: call zeroext i1 @_Z3barv(){{$}}
++// CHECK: call zeroext i1 @_Z3barv(){{$}}
++// CHECK: call void asm sideeffect "nop"{{.*}} #[[ATTR1:[0-9]+]]
++// CHECK: call zeroext i1 @_Z3barv(){{$}}
++// CHECK: %[[AG:.*]] = load void (%class.A*)*, void (%class.A*)**
++// CHECK-NEXT: call void %[[AG]](%class.A* nonnull dereferenceable
++// CHECK: %[[BG:.*]] = load void (%class.B*)*, void (%class.B*)**
++// CHECK-NEXT: call void %[[BG]](%class.B* nonnull dereferenceable
++
++
++// CHECK-DAG: declare zeroext i1 @_Z3barv() #[[ATTR2:[0-9]+]]
++// CHECK-DAG: declare void @_Z1fbb(i1 zeroext, i1 zeroext) #[[ATTR2]]
++// CHECK-DAG: declare void @_ZN1AC1Ev{{.*}} #[[ATTR2]]
++// CHECK-DAG: declare void @_ZN1A1fEv{{.*}} #[[ATTR2]]
++// CHECK-DAG: declare void @_ZN1A1gEv{{.*}} #[[ATTR2]]
++// CHECK-DAG: declare void @_ZN1A2f1Ev{{.*}} #[[ATTR2]]
++// CHECK-DAG: declare void @_ZN1AC2Ev{{.*}} #[[ATTR2]]
++// CHECK-DAG: declare void @_ZN1AD1Ev{{.*}} #[[ATTR3:[0-9]+]]
++// CHECK-DAG: declare void @_ZN1AD2Ev{{.*}} #[[ATTR3]]
++// CHECK-DAG: define i32 @_Z1gi(i32 %i) #[[ATTR4:[0-9]+]] {
++
++// CHECK-DAG: attributes #[[ATTR0]] = {{{.*}}nomerge{{.*}}}
++// CHECK-DAG: attributes #[[ATTR1]] = {{{.*}}nomerge{{.*}}}
++// CHECK-DAG: attributes #[[ATTR2]] = {{{.*}}nomerge{{.*}}}
++// CHECK-DAG: attributes #[[ATTR3]] = {{{.*}}nomerge{{.*}}}
++// CHECK-DAG: attributes #[[ATTR4]] = {{{.*}}nomerge{{.*}}}
+diff --git a/clang/test/Misc/pragma-attribute-supported-attributes-list.test b/clang/test/Misc/pragma-attribute-supported-attributes-list.test
+index e2802197a548..729546891e8a 100644
+--- a/clang/test/Misc/pragma-attribute-supported-attributes-list.test
++++ b/clang/test/Misc/pragma-attribute-supported-attributes-list.test
+@@ -92,6 +92,7 @@
+ // CHECK-NEXT: NoEscape (SubjectMatchRule_variable_is_parameter)
+ // CHECK-NEXT: NoInline (SubjectMatchRule_function)
+ // CHECK-NEXT: NoInstrumentFunction (SubjectMatchRule_function)
++// CHECK-NEXT: NoMerge (SubjectMatchRule_function)
+ // CHECK-NEXT: NoMicroMips (SubjectMatchRule_function)
+ // CHECK-NEXT: NoMips16 (SubjectMatchRule_function)
+ // CHECK-NEXT: NoSanitize (SubjectMatchRule_function, SubjectMatchRule_objc_method, SubjectMatchRule_variable_is_global)
+diff --git a/clang/test/Sema/attr-nomerge.cpp b/clang/test/Sema/attr-nomerge.cpp
+index 175153c7753e..eafea2dfe810 100644
+--- a/clang/test/Sema/attr-nomerge.cpp
++++ b/clang/test/Sema/attr-nomerge.cpp
+@@ -8,10 +8,10 @@ void foo() {
+   int x;
+   [[clang::nomerge]] x = 10; // expected-warning {{nomerge attribute is ignored because there exists no call expression inside the statement}}
+ 
+-  [[clang::nomerge]] label: bar(); // expected-error {{'nomerge' attribute cannot be applied to a declaration}}
++  [[clang::nomerge]] label: bar(); // expected-error {{'nomerge' attribute only applies to functions and statements}}
+ 
+ }
+ 
+-int f();
++[[clang::nomerge]] int f();
+ 
+-[[clang::nomerge]] static int i = f(); // expected-error {{'nomerge' attribute cannot be applied to a declaration}}
++[[clang::nomerge]] static int i = f(); // expected-error {{'nomerge' attribute only applies to functions and statements}}
+diff --git a/clang/utils/TableGen/ClangAttrEmitter.cpp b/clang/utils/TableGen/ClangAttrEmitter.cpp
+index ec436df15e65..d435c5780531 100644
+--- a/clang/utils/TableGen/ClangAttrEmitter.cpp
++++ b/clang/utils/TableGen/ClangAttrEmitter.cpp
+@@ -2693,6 +2693,7 @@ static const AttrClassDescriptor AttrClassDescriptors[] = {
+   { "ATTR", "Attr" },
+   { "TYPE_ATTR", "TypeAttr" },
+   { "STMT_ATTR", "StmtAttr" },
++  { "DECL_OR_STMT_ATTR", "DeclOrStmtAttr" },
+   { "INHERITABLE_ATTR", "InheritableAttr" },
+   { "DECL_OR_TYPE_ATTR", "DeclOrTypeAttr" },
+   { "INHERITABLE_PARAM_ATTR", "InheritableParamAttr" },
+@@ -3779,7 +3780,8 @@ void EmitClangAttrParsedAttrImpl(RecordKeeper &Records, raw_ostream &OS) {
+     OS << (Attr.isSubClassOf("TypeAttr") ||
+            Attr.isSubClassOf("DeclOrTypeAttr")) << ";\n";
+     OS << "    IsStmt = ";
+-    OS << Attr.isSubClassOf("StmtAttr") << ";\n";
++    OS << (Attr.isSubClassOf("StmtAttr") || Attr.isSubClassOf("DeclOrStmtAttr"))
++       << ";\n";
+     OS << "    IsKnownToGCC = ";
+     OS << IsKnownToGCC(Attr) << ";\n";
+     OS << "    IsSupportedByPragmaAttribute = ";
+diff --git a/llvm/include/llvm/IR/Attributes.td b/llvm/include/llvm/IR/Attributes.td
+index 30d297563cb1..798e4544aef4 100644
+--- a/llvm/include/llvm/IR/Attributes.td
++++ b/llvm/include/llvm/IR/Attributes.td
+@@ -124,7 +124,7 @@ def NoInline : EnumAttr<"noinline">;
+ /// Function is called early and/or often, so lazy binding isn't worthwhile.
+ def NonLazyBind : EnumAttr<"nonlazybind">;
+ 
+-/// Disable merging for call sites
++/// Disable merging for specified functions or call sites.
+ def NoMerge : EnumAttr<"nomerge">;
+ 
+ /// Pointer is known to be not null.
diff --git a/sys-devel/llvm/files/cherry/ffba47df76460905965df4b54cf6ba945d2eb1ce.patch b/sys-devel/llvm/files/cherry/ffba47df76460905965df4b54cf6ba945d2eb1ce.patch
new file mode 100644
index 0000000..65ff054
--- /dev/null
+++ b/sys-devel/llvm/files/cherry/ffba47df76460905965df4b54cf6ba945d2eb1ce.patch
@@ -0,0 +1,65 @@
+commit ffba47df76460905965df4b54cf6ba945d2eb1ce
+Author: Scott Linder <Scott.Linder@amd.com>
+Date:   Mon Dec 21 17:38:56 2020 +0000
+
+    Revert "[AMDGPU][HIP] Switch default DWARF version to 5"
+    
+    This reverts commit c4d10e7e9bb47b77fad43d8ddcfa328298f36c88.
+    
+    Differential Revision: https://reviews.llvm.org/D93648
+---
+ clang/lib/Driver/ToolChains/AMDGPU.h      | 2 +-
+ clang/lib/Driver/ToolChains/HIP.h         | 2 +-
+ clang/test/Driver/amdgpu-toolchain.c      | 2 +-
+ clang/test/Driver/hip-toolchain-dwarf.hip | 2 +-
+ 4 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/clang/lib/Driver/ToolChains/AMDGPU.h b/clang/lib/Driver/ToolChains/AMDGPU.h
+index f5448b76aee5..55ef6e01967e 100644
+--- a/clang/lib/Driver/ToolChains/AMDGPU.h
++++ b/clang/lib/Driver/ToolChains/AMDGPU.h
+@@ -60,7 +60,7 @@ protected:
+ public:
+   AMDGPUToolChain(const Driver &D, const llvm::Triple &Triple,
+                   const llvm::opt::ArgList &Args);
+-  unsigned GetDefaultDwarfVersion() const override { return 5; }
++  unsigned GetDefaultDwarfVersion() const override { return 4; }
+   bool IsIntegratedAssemblerDefault() const override { return true; }
+   bool IsMathErrnoDefault() const override { return false; }
+ 
+diff --git a/clang/lib/Driver/ToolChains/HIP.h b/clang/lib/Driver/ToolChains/HIP.h
+index ff58c5451b0b..5e2be7138579 100644
+--- a/clang/lib/Driver/ToolChains/HIP.h
++++ b/clang/lib/Driver/ToolChains/HIP.h
+@@ -99,7 +99,7 @@ public:
+   computeMSVCVersion(const Driver *D,
+                      const llvm::opt::ArgList &Args) const override;
+ 
+-  unsigned GetDefaultDwarfVersion() const override { return 5; }
++  unsigned GetDefaultDwarfVersion() const override { return 4; }
+ 
+   const ToolChain &HostTC;
+ 
+diff --git a/clang/test/Driver/amdgpu-toolchain.c b/clang/test/Driver/amdgpu-toolchain.c
+index cb92744eee6a..ac558e0e26eb 100644
+--- a/clang/test/Driver/amdgpu-toolchain.c
++++ b/clang/test/Driver/amdgpu-toolchain.c
+@@ -8,7 +8,7 @@
+ // AS_LINK: clang{{.*}} "-cc1as"
+ // AS_LINK: ld.lld{{.*}} "-shared"
+ 
+-// DWARF_VER: "-dwarf-version=5"
++// DWARF_VER: "-dwarf-version=4"
+ 
+ // RUN: %clang -### -target amdgcn-amd-amdhsa -mcpu=gfx906 -nogpulib \
+ // RUN:   -flto %s 2>&1 | FileCheck -check-prefix=LTO %s
+diff --git a/clang/test/Driver/hip-toolchain-dwarf.hip b/clang/test/Driver/hip-toolchain-dwarf.hip
+index c853d5cf07cf..44d66fe52e04 100644
+--- a/clang/test/Driver/hip-toolchain-dwarf.hip
++++ b/clang/test/Driver/hip-toolchain-dwarf.hip
+@@ -6,4 +6,4 @@
+ // RUN:   -x hip --cuda-gpu-arch=gfx803 %s \
+ // RUN:   -Xarch_gfx803 -g 2>&1 | FileCheck %s -check-prefix=DWARF_VER
+ 
+-// DWARF_VER: "-dwarf-version=5"
++// DWARF_VER: "-dwarf-version=4"
diff --git a/sys-devel/llvm/files/compiler_wrapper/README b/sys-devel/llvm/files/compiler_wrapper/README
index ca508a3..ee48df6 100644
--- a/sys-devel/llvm/files/compiler_wrapper/README
+++ b/sys-devel/llvm/files/compiler_wrapper/README
@@ -15,4 +15,4 @@
 - modify third_party/toolchain_utils/compiler_wrapper
 - run third_party/toolchain_utils/compiler_wrapper/bundle.py --output_dir=...
 
-Source: https://chromium-review.googlesource.com/q/I667d922762c2cb090adbb3abac2d4782bc48b87d
+Source: https://chromium-review.googlesource.com/q/I29ec205822a75088d2c4c5897508b8dc05419a2e
diff --git a/sys-devel/llvm/files/compiler_wrapper/VERSION b/sys-devel/llvm/files/compiler_wrapper/VERSION
index f13c135..c7eba15 100644
--- a/sys-devel/llvm/files/compiler_wrapper/VERSION
+++ b/sys-devel/llvm/files/compiler_wrapper/VERSION
@@ -1 +1 @@
-I667d922762c2cb090adbb3abac2d4782bc48b87d
\ No newline at end of file
+I29ec205822a75088d2c4c5897508b8dc05419a2e
\ No newline at end of file
diff --git a/sys-devel/llvm/files/compiler_wrapper/clang_flags.go b/sys-devel/llvm/files/compiler_wrapper/clang_flags.go
index 5bb7114..c69d1b3 100644
--- a/sys-devel/llvm/files/compiler_wrapper/clang_flags.go
+++ b/sys-devel/llvm/files/compiler_wrapper/clang_flags.go
@@ -7,6 +7,7 @@
 import (
 	"bytes"
 	"os"
+	"path"
 	"path/filepath"
 	"strings"
 )
@@ -47,6 +48,7 @@
 	// Use of -Qunused-arguments allows this set to be small, just those
 	// that clang still warns about.
 	unsupported := make(map[string]bool)
+
 	unsupportedPrefixes := []string{"-Wstrict-aliasing=", "-finline-limit="}
 
 	// clang with '-ftrapv' generates 'call __mulodi4', which is only implemented
@@ -133,19 +135,10 @@
 			return wrapErrorwithSourceLocf(err, "failed to make linker path %s relative to %s",
 				linkerPath, env.getwd())
 		}
+		prefixPath := path.Join(relLinkerPath, builder.target.target+"-")
+		builder.addPreUserArgs("--prefix=" + prefixPath)
 		builder.addPostUserArgs("-B" + relLinkerPath)
-		if startswithI86(builder.target.arch) {
-			// TODO: -target i686-pc-linux-gnu causes clang to search for
-			// libclang_rt.asan-i686.a which doesn't exist because it's packaged
-			// as libclang_rt.asan-i386.a. We can't use -target i386-pc-linux-gnu
-			// because then it would try to run i386-pc-linux-gnu-ld which doesn't
-			// exist. Consider renaming the runtime library to use i686 in its name.
-			builder.addPostUserArgs("-m32")
-			// clang does not support -mno-movbe. This is the alternate way to do it.
-			builder.addPostUserArgs("-Xclang", "-target-feature", "-Xclang", "-movbe")
-		} else {
-			builder.addPostUserArgs("-target", builder.target.target)
-		}
+		builder.addPostUserArgs("-target", builder.target.target)
 	}
 	return nil
 }
diff --git a/sys-devel/llvm/files/compiler_wrapper/command.go b/sys-devel/llvm/files/compiler_wrapper/command.go
index 6957859..e6ea669 100644
--- a/sys-devel/llvm/files/compiler_wrapper/command.go
+++ b/sys-devel/llvm/files/compiler_wrapper/command.go
@@ -24,15 +24,8 @@
 }
 
 func newProcessCommand() *command {
-	// This is a workaround for the fact that ld.so does not support
-	// passing in the executable name when ld.so is invoked as
-	// an executable (crbug/1003841).
-	path := os.Getenv("LD_ARGV0")
-	if path == "" {
-		path = os.Args[0]
-	}
 	return &command{
-		Path: path,
+		Path: os.Args[0],
 		Args: os.Args[1:],
 	}
 }
diff --git a/sys-devel/llvm/files/compiler_wrapper/compiler_wrapper.go b/sys-devel/llvm/files/compiler_wrapper/compiler_wrapper.go
index aca5aa7..9d7b76e 100644
--- a/sys-devel/llvm/files/compiler_wrapper/compiler_wrapper.go
+++ b/sys-devel/llvm/files/compiler_wrapper/compiler_wrapper.go
@@ -6,6 +6,7 @@
 
 import (
 	"bytes"
+	"errors"
 	"fmt"
 	"io"
 	"path/filepath"
@@ -74,6 +75,15 @@
 	env = mainBuilder.env
 	var compilerCmd *command
 	clangSyntax := processClangSyntaxFlag(mainBuilder)
+
+	rusageEnabled := isRusageEnabled(env)
+
+	// Disable CCache for rusage logs
+	// Note: Disabling Goma causes timeout related INFRA_FAILUREs in builders
+	allowCCache := !rusageEnabled
+	gomaUsed := false
+
+	workAroundKernelBugWithRetries := false
 	if cfg.isAndroidWrapper {
 		mainBuilder.path = calculateAndroidWrapperPath(mainBuilder.path, mainBuilder.absWrapperPath)
 		switch mainBuilder.target.compilerType {
@@ -81,7 +91,7 @@
 			mainBuilder.addPreUserArgs(mainBuilder.cfg.clangFlags...)
 			mainBuilder.addPreUserArgs(mainBuilder.cfg.commonFlags...)
 			mainBuilder.addPostUserArgs(mainBuilder.cfg.clangPostFlags...)
-			if _, err := processGomaCccFlags(mainBuilder); err != nil {
+			if gomaUsed, err = processGomaCccFlags(mainBuilder); err != nil {
 				return 0, err
 			}
 			compilerCmd = mainBuilder.build()
@@ -97,7 +107,6 @@
 			if err != nil {
 				return 0, err
 			}
-			allowCCache := true
 			if tidyMode != tidyModeNone {
 				allowCCache = false
 				clangCmdWithoutGomaAndCCache := mainBuilder.build()
@@ -118,64 +127,132 @@
 					return 0, err
 				}
 			}
-			if err := processGomaCCacheFlags(allowCCache, mainBuilder); err != nil {
+			if gomaUsed, err = processGomaCCacheFlags(allowCCache, mainBuilder); err != nil {
 				return 0, err
 			}
 			compilerCmd = mainBuilder.build()
 		} else {
 			if clangSyntax {
-				allowCCache := false
-				clangCmd, err := calcClangCommand(allowCCache, mainBuilder.clone())
+				allowCCache = false
+				_, clangCmd, err := calcClangCommand(allowCCache, mainBuilder.clone())
 				if err != nil {
 					return 0, err
 				}
-				gccCmd, err := calcGccCommand(mainBuilder)
+				_, gccCmd, err := calcGccCommand(rusageEnabled, mainBuilder)
 				if err != nil {
 					return 0, err
 				}
 				return checkClangSyntax(env, clangCmd, gccCmd)
 			}
-			compilerCmd, err = calcGccCommand(mainBuilder)
+			gomaUsed, compilerCmd, err = calcGccCommand(rusageEnabled, mainBuilder)
 			if err != nil {
 				return 0, err
 			}
+			workAroundKernelBugWithRetries = true
 		}
 	}
-	rusageLogfileName := getRusageLogFilename(env)
+
 	bisectStage := getBisectStage(env)
-	if shouldForceDisableWerror(env, cfg) {
-		if rusageLogfileName != "" {
-			return 0, newUserErrorf("TOOLCHAIN_RUSAGE_OUTPUT is meaningless with FORCE_DISABLE_WERROR")
-		}
+
+	if rusageEnabled {
+		compilerCmd = removeRusageFromCommand(compilerCmd)
+	}
+
+	if shouldForceDisableWerror(env, cfg, mainBuilder.target.compilerType) {
 		if bisectStage != "" {
 			return 0, newUserErrorf("BISECT_STAGE is meaningless with FORCE_DISABLE_WERROR")
 		}
 		return doubleBuildWithWNoError(env, cfg, compilerCmd)
 	}
 	if shouldCompileWithFallback(env) {
-		if rusageLogfileName != "" {
-			return 0, newUserErrorf("TOOLCHAIN_RUSAGE_OUTPUT is meaningless with FORCE_DISABLE_WERROR")
+		if rusageEnabled {
+			return 0, newUserErrorf("TOOLCHAIN_RUSAGE_OUTPUT is meaningless with ANDROID_LLVM_PREBUILT_COMPILER_PATH")
 		}
 		if bisectStage != "" {
-			return 0, newUserErrorf("BISECT_STAGE is meaningless with FORCE_DISABLE_WERROR")
+			return 0, newUserErrorf("BISECT_STAGE is meaningless with ANDROID_LLVM_PREBUILT_COMPILER_PATH")
 		}
 		return compileWithFallback(env, cfg, compilerCmd, mainBuilder.absWrapperPath)
 	}
-	if rusageLogfileName != "" {
-		if bisectStage != "" {
-			return 0, newUserErrorf("BISECT_STAGE is meaningless with TOOLCHAIN_RUSAGE_OUTPUT")
-		}
-		return logRusage(env, rusageLogfileName, compilerCmd)
-	}
 	if bisectStage != "" {
+		if rusageEnabled {
+			return 0, newUserErrorf("TOOLCHAIN_RUSAGE_OUTPUT is meaningless with BISECT_STAGE")
+		}
 		compilerCmd, err = calcBisectCommand(env, cfg, bisectStage, compilerCmd)
 		if err != nil {
 			return 0, err
 		}
 	}
-	// Note: We return an exit code only if the underlying env is not
-	// really doing an exec, e.g. commandRecordingEnv.
-	return wrapSubprocessErrorWithSourceLoc(compilerCmd, env.exec(compilerCmd))
+
+	errRetryCompilation := errors.New("compilation retry requested")
+	var runCompiler func(willLogRusage bool) (int, error)
+	if !workAroundKernelBugWithRetries {
+		runCompiler = func(willLogRusage bool) (int, error) {
+			var err error
+			if willLogRusage {
+				err = env.run(compilerCmd, env.stdin(), env.stdout(), env.stderr())
+			} else {
+				// Note: We return from this in non-fatal circumstances only if the
+				// underlying env is not really doing an exec, e.g. commandRecordingEnv.
+				err = env.exec(compilerCmd)
+			}
+			return wrapSubprocessErrorWithSourceLoc(compilerCmd, err)
+		}
+	} else {
+		getStdin, err := prebufferStdinIfNeeded(env, compilerCmd)
+		if err != nil {
+			return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err)
+		}
+
+		stdoutBuffer := &bytes.Buffer{}
+		stderrBuffer := &bytes.Buffer{}
+		retryAttempt := 0
+		runCompiler = func(willLogRusage bool) (int, error) {
+			retryAttempt++
+			stdoutBuffer.Reset()
+			stderrBuffer.Reset()
+
+			exitCode, compilerErr := wrapSubprocessErrorWithSourceLoc(compilerCmd,
+				env.run(compilerCmd, getStdin(), stdoutBuffer, stderrBuffer))
+
+			if compilerErr != nil || exitCode != 0 {
+				if retryAttempt < kernelBugRetryLimit && (errorContainsTracesOfKernelBug(compilerErr) || containsTracesOfKernelBug(stdoutBuffer.Bytes()) || containsTracesOfKernelBug(stderrBuffer.Bytes())) {
+					return exitCode, errRetryCompilation
+				}
+			}
+			_, stdoutErr := stdoutBuffer.WriteTo(env.stdout())
+			_, stderrErr := stderrBuffer.WriteTo(env.stderr())
+			if stdoutErr != nil {
+				return exitCode, wrapErrorwithSourceLocf(err, "writing stdout: %v", stdoutErr)
+			}
+			if stderrErr != nil {
+				return exitCode, wrapErrorwithSourceLocf(err, "writing stderr: %v", stderrErr)
+			}
+			return exitCode, compilerErr
+		}
+	}
+
+	for {
+		var exitCode int
+		commitRusage, err := maybeCaptureRusage(env, compilerCmd, func(willLogRusage bool) error {
+			var err error
+			exitCode, err = runCompiler(willLogRusage)
+			return err
+		})
+
+		switch {
+		case err == errRetryCompilation:
+			// Loop around again.
+		case err != nil:
+			return exitCode, err
+		default:
+			if !gomaUsed {
+				if err := commitRusage(exitCode); err != nil {
+					return exitCode, fmt.Errorf("commiting rusage: %v", err)
+				}
+			}
+			return exitCode, err
+		}
+	}
 }
 
 func prepareClangCommand(builder *commandBuilder) (err error) {
@@ -191,33 +268,34 @@
 	return processClangFlags(builder)
 }
 
-func calcClangCommand(allowCCache bool, builder *commandBuilder) (*command, error) {
+func calcClangCommand(allowCCache bool, builder *commandBuilder) (bool, *command, error) {
 	err := prepareClangCommand(builder)
 	if err != nil {
-		return nil, err
+		return false, nil, err
 	}
-	if err := processGomaCCacheFlags(allowCCache, builder); err != nil {
-		return nil, err
+	gomaUsed, err := processGomaCCacheFlags(allowCCache, builder)
+	if err != nil {
+		return gomaUsed, nil, err
 	}
-	return builder.build(), nil
+	return gomaUsed, builder.build(), nil
 }
 
-func calcGccCommand(builder *commandBuilder) (*command, error) {
+func calcGccCommand(enableRusage bool, builder *commandBuilder) (bool, *command, error) {
 	if !builder.cfg.isHostWrapper {
 		processSysrootFlag(builder)
 	}
 	builder.addPreUserArgs(builder.cfg.gccFlags...)
-	if !builder.cfg.isHostWrapper {
-		calcCommonPreUserArgs(builder)
-	}
+	calcCommonPreUserArgs(builder)
 	processGccFlags(builder)
+
+	gomaUsed := false
 	if !builder.cfg.isHostWrapper {
-		allowCCache := true
-		if err := processGomaCCacheFlags(allowCCache, builder); err != nil {
-			return nil, err
+		var err error
+		if gomaUsed, err = processGomaCCacheFlags(!enableRusage, builder); err != nil {
+			return gomaUsed, nil, err
 		}
 	}
-	return builder.build(), nil
+	return gomaUsed, builder.build(), nil
 }
 
 func calcCommonPreUserArgs(builder *commandBuilder) {
@@ -231,18 +309,19 @@
 	processSanitizerFlags(builder)
 }
 
-func processGomaCCacheFlags(allowCCache bool, builder *commandBuilder) (err error) {
-	gomaccUsed := false
+func processGomaCCacheFlags(allowCCache bool, builder *commandBuilder) (gomaccUsed bool, err error) {
+
+	gomaccUsed = false
 	if !builder.cfg.isHostWrapper {
 		gomaccUsed, err = processGomaCccFlags(builder)
 		if err != nil {
-			return err
+			return gomaccUsed, err
 		}
 	}
 	if !gomaccUsed && allowCCache {
 		processCCacheFlag(builder)
 	}
-	return nil
+	return gomaccUsed, nil
 }
 
 func getAbsWrapperPath(env env, wrapperCmd *command) (string, error) {
diff --git a/sys-devel/llvm/files/compiler_wrapper/config.go b/sys-devel/llvm/files/compiler_wrapper/config.go
index 8b5432b..cd2eb1d 100644
--- a/sys-devel/llvm/files/compiler_wrapper/config.go
+++ b/sys-devel/llvm/files/compiler_wrapper/config.go
@@ -106,7 +106,10 @@
 // Temporarily disable function splitting because of chromium:434751.
 var crosHardenedConfig = &config{
 	rootRelPath: "../../../../..",
+	// Pass "-fcommon" till the packages are fixed to work with new clang/gcc
+	// default of "-fno-common", crbug.com/1060413.
 	commonFlags: []string{
+		"-fcommon",
 		"-fstack-protector-strong",
 		"-fPIE",
 		"-pie",
@@ -122,20 +125,19 @@
 	// Temporarily add no-unknown-warning-option to deal with old clang versions.
 	// Temporarily disable Wsection since kernel gets a bunch of these. chromium:778867
 	// Disable "-faddrsig" since it produces object files that strip doesn't understand, chromium:915742.
-	// Pass "-fcommon" till the packages are fixed to work with new clang default
-	// "-fno-common", crbug.com/1060413.
 	// crbug.com/1103065: -grecord-gcc-switches pollutes the Goma cache;
 	//   removed that flag for now.
 	clangFlags: []string{
 		"-Qunused-arguments",
 		"-fno-addrsig",
-		"-fcommon",
+		"-fdebug-default-version=5",
 		"-Wno-tautological-constant-compare",
 		"-Wno-tautological-unsigned-enum-zero-compare",
 		"-Wno-unknown-warning-option",
 		"-Wno-section",
 		"-static-libgcc",
 		"-fuse-ld=lld",
+		"--unwindlib=libgcc",
 		"-Wno-final-dtor-non-final-class",
 		"-Werror=poison-system-directories",
 		"-fexperimental-new-pass-manager",
@@ -166,6 +168,7 @@
 	// Temporarily disable Wsection since kernel gets a bunch of these. chromium:778867
 	clangFlags: []string{
 		"-Qunused-arguments",
+		"-fdebug-default-version=5",
 		"-Wno-tautological-constant-compare",
 		"-Wno-tautological-unsigned-enum-zero-compare",
 		"-Wno-unknown-warning-option",
@@ -190,7 +193,11 @@
 var crosHostConfig = &config{
 	isHostWrapper: true,
 	rootRelPath:   "../..",
-	commonFlags:   []string{},
+	// Pass "-fcommon" till the packages are fixed to work with new clang/gcc
+	// default of "-fno-common", crbug.com/1060413.
+	commonFlags: []string{
+		"-fcommon",
+	},
 	gccFlags: []string{
 		"-Wno-maybe-uninitialized",
 		"-Wno-unused-local-typedefs",
@@ -198,15 +205,13 @@
 	},
 	// Temporarily disable tautological-*-compare chromium:778316.
 	// Temporarily add no-unknown-warning-option to deal with old clang versions.
-	// Pass "-fcommon" till the packages are fixed to work with new clang default
-	// "-fno-common", crbug.com/1060413.
 	// crbug.com/1103065: -grecord-gcc-switches pollutes the Goma cache;
 	//   removed that flag for now.
 	clangFlags: []string{
 		"-Qunused-arguments",
 		"-fno-addrsig",
-		"-fcommon",
 		"-fuse-ld=lld",
+		"-fdebug-default-version=5",
 		"-Wno-unused-local-typedefs",
 		"-Wno-deprecated-declarations",
 		"-Wno-tautological-constant-compare",
diff --git a/sys-devel/llvm/files/compiler_wrapper/cros_llvm_next_flags.go b/sys-devel/llvm/files/compiler_wrapper/cros_llvm_next_flags.go
index 6cd7cd2..0c8dc67 100644
--- a/sys-devel/llvm/files/compiler_wrapper/cros_llvm_next_flags.go
+++ b/sys-devel/llvm/files/compiler_wrapper/cros_llvm_next_flags.go
@@ -13,6 +13,8 @@
 // tag is set.
 
 // TODO: Enable test in config_test.go, once we have new llvm-next flags.
-var llvmNextFlags = []string{}
+var llvmNextFlags = []string{
+	"-Wl,-z,nostart-stop-gc",
+}
 
 var llvmNextPostFlags = []string{}
diff --git a/sys-devel/llvm/files/compiler_wrapper/disable_werror_flag.go b/sys-devel/llvm/files/compiler_wrapper/disable_werror_flag.go
index 8f20b6f..5c21b1a 100644
--- a/sys-devel/llvm/files/compiler_wrapper/disable_werror_flag.go
+++ b/sys-devel/llvm/files/compiler_wrapper/disable_werror_flag.go
@@ -19,10 +19,15 @@
 
 const numWErrorEstimate = 30
 
-func shouldForceDisableWerror(env env, cfg *config) bool {
+func shouldForceDisableWerror(env env, cfg *config, ty compilerType) bool {
 	if cfg.isAndroidWrapper {
 		return cfg.useLlvmNext
 	}
+
+	// We only want this functionality for clang.
+	if ty != clangType {
+		return false
+	}
 	value, _ := env.getenv("FORCE_DISABLE_WERROR")
 	return value != ""
 }
@@ -70,8 +75,12 @@
 		return 0, wrapErrorwithSourceLocf(err, "prebuffering stdin: %v", err)
 	}
 
-	originalExitCode, err := wrapSubprocessErrorWithSourceLoc(originalCmd,
-		env.run(originalCmd, getStdin(), originalStdoutBuffer, originalStderrBuffer))
+	var originalExitCode int
+	commitOriginalRusage, err := maybeCaptureRusage(env, originalCmd, func(willLogRusage bool) error {
+		originalExitCode, err = wrapSubprocessErrorWithSourceLoc(originalCmd,
+			env.run(originalCmd, getStdin(), originalStdoutBuffer, originalStderrBuffer))
+		return err
+	})
 	if err != nil {
 		return 0, err
 	}
@@ -85,6 +94,9 @@
 			bytes.Contains(originalStdoutBufferBytes, []byte("warnings-as-errors")) ||
 			bytes.Contains(originalStdoutBufferBytes, []byte("clang-diagnostic-")))
 	if !shouldRetry {
+		if err := commitOriginalRusage(originalExitCode); err != nil {
+			return 0, fmt.Errorf("commiting rusage: %v", err)
+		}
 		originalStdoutBuffer.WriteTo(env.stdout())
 		originalStderrBuffer.WriteTo(env.stderr())
 		return originalExitCode, nil
@@ -97,19 +109,32 @@
 		Args:       disableWerrorFlags(originalCmd.Args),
 		EnvUpdates: originalCmd.EnvUpdates,
 	}
-	retryExitCode, err := wrapSubprocessErrorWithSourceLoc(retryCommand,
-		env.run(retryCommand, getStdin(), retryStdoutBuffer, retryStderrBuffer))
+
+	var retryExitCode int
+	commitRetryRusage, err := maybeCaptureRusage(env, retryCommand, func(willLogRusage bool) error {
+		retryExitCode, err = wrapSubprocessErrorWithSourceLoc(retryCommand,
+			env.run(retryCommand, getStdin(), retryStdoutBuffer, retryStderrBuffer))
+		return err
+	})
 	if err != nil {
 		return 0, err
 	}
+
 	// If -Wno-error fixed us, pretend that we never ran without -Wno-error. Otherwise, pretend
 	// that we never ran the second invocation.
 	if retryExitCode != 0 {
 		originalStdoutBuffer.WriteTo(env.stdout())
 		originalStderrBuffer.WriteTo(env.stderr())
+		if err := commitOriginalRusage(originalExitCode); err != nil {
+			return 0, fmt.Errorf("commiting rusage: %v", err)
+		}
 		return originalExitCode, nil
 	}
 
+	if err := commitRetryRusage(retryExitCode); err != nil {
+		return 0, fmt.Errorf("commiting rusage: %v", err)
+	}
+
 	retryStdoutBuffer.WriteTo(env.stdout())
 	retryStderrBuffer.WriteTo(env.stderr())
 
diff --git a/sys-devel/llvm/files/compiler_wrapper/gcc_flags.go b/sys-devel/llvm/files/compiler_wrapper/gcc_flags.go
index 7141d14..2c553e6 100644
--- a/sys-devel/llvm/files/compiler_wrapper/gcc_flags.go
+++ b/sys-devel/llvm/files/compiler_wrapper/gcc_flags.go
@@ -11,11 +11,7 @@
 
 		// Conversion for flags supported by clang but not gcc.
 		clangToGcc := map[string]string{
-			"-march=goldmont":      "-march=silvermont",
-			"-march=goldmont-plus": "-march=silvermont",
-			"-march=skylake":       "-march=corei7",
-			"-march=tigerlake":     "-march=corei7",
-			"-march=tremont":       "-march=silvermont",
+			"-march=alderlake": "-march=skylake",
 		}
 
 		builder.transformArgs(func(arg builderArg) string {
diff --git a/sys-devel/llvm/files/compiler_wrapper/go.mod b/sys-devel/llvm/files/compiler_wrapper/go.mod
new file mode 100644
index 0000000..ce6df01
--- /dev/null
+++ b/sys-devel/llvm/files/compiler_wrapper/go.mod
@@ -0,0 +1,3 @@
+module chromium.org/toolchain-utils/compiler_wrapper
+
+go 1.13
diff --git a/sys-devel/llvm/files/compiler_wrapper/kernel_bug.go b/sys-devel/llvm/files/compiler_wrapper/kernel_bug.go
new file mode 100644
index 0000000..55817cb
--- /dev/null
+++ b/sys-devel/llvm/files/compiler_wrapper/kernel_bug.go
@@ -0,0 +1,25 @@
+// Copyright 2021 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.
+package main
+
+import (
+	"bytes"
+	"strings"
+)
+
+// crbug.com/1166017
+
+const kernelBugRetryLimit = 25
+
+// GCC will sometimes fail to wait on subprocesses due to this kernel bug. It always fails the
+// compilation and prints "Unknown error 512" in that case.
+func containsTracesOfKernelBug(buf []byte) bool {
+	return bytes.Contains(buf, []byte("Unknown error 512"))
+}
+
+func errorContainsTracesOfKernelBug(err error) bool {
+	// We'll get errors that look like "waitid: errno 512." Presumably, this isn't specific to
+	// waitid, so just try to match the "errno 512" ending.
+	return err != nil && strings.HasSuffix(err.Error(), "errno 512")
+}
diff --git a/sys-devel/llvm/files/compiler_wrapper/libc_exec.go b/sys-devel/llvm/files/compiler_wrapper/libc_exec.go
index d986773..a7a561b 100644
--- a/sys-devel/llvm/files/compiler_wrapper/libc_exec.go
+++ b/sys-devel/llvm/files/compiler_wrapper/libc_exec.go
@@ -18,7 +18,20 @@
 //	// Since fork() brings us to one thread, we can only use async-signal-safe funcs below.
 //	pid_t pid = fork();
 //	if (pid == 0) {
-//		execve(pathname, argv, envp);
+//		// crbug.com/1166017: we're (very rarely) getting ERESTARTSYS on some builders.
+//		// Documentation indicates that this is a bug in the kernel. Work around it by
+//		// retrying. 25 is an arbitrary retry number that Should Be Enough For Anyone(TM).
+//		int i = 0;
+//		for (; i < 25; i++) {
+//			execve(pathname, argv, envp);
+//			if (errno != 512) {
+//				break;
+//			}
+//			// Sleep a bit. Not sure if this helps, but if the condition we're seeing is
+//			// transient, it *hopefully* should. nanosleep isn't async-signal safe, so
+//			// we have to live with sleep()
+//			sleep(1);
+//		}
 //		fprintf(stderr, "exec failed (errno: %d)\n", errno);
 //		_exit(1);
 //	}
diff --git a/sys-devel/llvm/files/compiler_wrapper/rusage_flag.go b/sys-devel/llvm/files/compiler_wrapper/rusage_flag.go
index 31ff0d1..4aa40b4 100644
--- a/sys-devel/llvm/files/compiler_wrapper/rusage_flag.go
+++ b/sys-devel/llvm/files/compiler_wrapper/rusage_flag.go
@@ -18,6 +18,10 @@
 	return value
 }
 
+func isRusageEnabled(env env) bool {
+	return getRusageLogFilename(env) != ""
+}
+
 func lockFileExclusive(fd uintptr) error {
 	maxTries := 100
 	for i := 0; i < maxTries; i++ {
@@ -39,91 +43,118 @@
 }
 
 type rusageLog struct {
-	ExitCode        int      `json:"exit_code"`
-	ElapsedRealTime float64  `json:"elapsed_real_time"`
-	ElapsedUserTime float64  `json:"elapsed_user_time"`
-	ElapsedSysTime  float64  `json:"elapsed_sys_time"`
-	MaxMemUsed      int64    `json:"max_mem_used"`
-	Compiler        string   `json:"compiler"`
-	CompilerArgs    []string `json:"compiler_args"`
+	ExitCode         int      `json:"exit_code"`
+	ElapsedRealTime  float64  `json:"elapsed_real_time"`
+	ElapsedUserTime  float64  `json:"elapsed_user_time"`
+	ElapsedSysTime   float64  `json:"elapsed_sys_time"`
+	MaxMemUsed       int64    `json:"max_mem_used"`
+	Compiler         string   `json:"compiler"`
+	CompilerArgs     []string `json:"compiler_args"`
+	WorkingDirectory string   `json:"working_directory"`
 }
 
-func logRusage(env env, logFileName string, compilerCmd *command) (exitCode int, err error) {
-	rusageBefore := syscall.Rusage{}
-	if err := syscall.Getrusage(syscall.RUSAGE_CHILDREN, &rusageBefore); err != nil {
-		return 0, err
-	}
-	compilerCmdWithoutRusage := &command{
+func removeRusageFromCommand(compilerCmd *command) *command {
+	return &command{
 		Path:       compilerCmd.Path,
 		Args:       compilerCmd.Args,
 		EnvUpdates: append(compilerCmd.EnvUpdates, "TOOLCHAIN_RUSAGE_OUTPUT="),
 	}
-	startTime := time.Now()
-	exitCode, err = wrapSubprocessErrorWithSourceLoc(compilerCmdWithoutRusage,
-		env.run(compilerCmdWithoutRusage, env.stdin(), env.stdout(), env.stderr()))
-	if err != nil {
-		return 0, err
+}
+
+// maybeCaptureRusage captures rusage for execution of action()
+// 	unless action returns an error or logFileName is ""
+// a function is returned which saves the rusage log data at logFileName unless logFileName is ""
+// an error is returned if action returns an error, or rusage commands in syscall fails
+func maybeCaptureRusage(env env, compilerCmd *command, action func(willLogRusage bool) error) (maybeCommitToFile func(exitCode int) error, err error) {
+	logFileName := getRusageLogFilename(env)
+	willLogRusage := isRusageEnabled(env)
+	if !willLogRusage {
+		if err := action(willLogRusage); err != nil {
+			return nil, err
+		}
+		return func(int) error { return nil }, nil
 	}
+
+	rusageBefore := syscall.Rusage{}
+	if err := syscall.Getrusage(syscall.RUSAGE_CHILDREN, &rusageBefore); err != nil {
+		return nil, fmt.Errorf("getting initial rusage: %v", err)
+	}
+	startTime := time.Now()
+
+	if err := action(willLogRusage); err != nil {
+		return nil, err
+	}
+
 	elapsedRealTime := time.Since(startTime)
 	rusageAfter := syscall.Rusage{}
 	if err := syscall.Getrusage(syscall.RUSAGE_CHILDREN, &rusageAfter); err != nil {
-		return 0, err
-	}
-	elapsedSysTime := time.Duration(rusageAfter.Stime.Nano()-rusageBefore.Stime.Nano()) * time.Nanosecond
-	elapsedUserTime := time.Duration(rusageAfter.Utime.Nano()-rusageBefore.Utime.Nano()) * time.Nanosecond
-	// Note: We assume that the compiler takes more heap than any other
-	// subcommands that we might have executed before.
-	maxMemUsed := rusageAfter.Maxrss
-	absCompilerPath := getAbsCmdPath(env, compilerCmd)
-
-	// We need to temporarily set umask to 0 to ensure 777 permissions are actually 777
-	// This effects builderbots in particular
-	oldMask := syscall.Umask(0)
-	defer syscall.Umask(oldMask)
-
-	if err := os.MkdirAll(filepath.Dir(logFileName), 0777); err != nil {
-		return 0, wrapErrorwithSourceLocf(err, "error creating rusage log directory %s", logFileName)
+		return nil, fmt.Errorf("getting final rusage: %v", err)
 	}
 
-	timeUnit := float64(time.Second)
+	return func(exitCode int) error {
+		elapsedSysTime := time.Duration(rusageAfter.Stime.Nano()-rusageBefore.Stime.Nano()) * time.Nanosecond
+		elapsedUserTime := time.Duration(rusageAfter.Utime.Nano()-rusageBefore.Utime.Nano()) * time.Nanosecond
+		// Note: We assume that the compiler takes more heap than any other
+		// subcommands that we might have executed before.
+		maxMemUsed := rusageAfter.Maxrss
+		absCompilerPath := getAbsCmdPath(env, compilerCmd)
 
-	logEntry := rusageLog{
-		ExitCode:        exitCode,
-		ElapsedRealTime: float64(elapsedRealTime) / timeUnit,
-		ElapsedUserTime: float64(elapsedUserTime) / timeUnit,
-		ElapsedSysTime:  float64(elapsedSysTime) / timeUnit,
-		MaxMemUsed:      maxMemUsed,
-		Compiler:        absCompilerPath,
-		CompilerArgs:    compilerCmd.Args,
-	}
+		// We need to temporarily set umask to 0 to ensure 777 permissions are actually 777
+		// This effects builderbots in particular
+		oldMask := syscall.Umask(0)
+		defer syscall.Umask(oldMask)
 
-	// Note: using file mode 0666 so that a root-created log is writable by others.
-	logFile, err := os.OpenFile(logFileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666)
-	if err != nil {
-		return 0, wrapErrorwithSourceLocf(err, "creating rusage logfile %s", logFileName)
-	}
+		// We want to know what package is being compiled. The working directory gives us a good clue.
+		cwd, err := os.Getwd()
+		if err != nil {
+			return wrapErrorwithSourceLocf(err, "error getting working directory for rusage log")
+		}
 
-	// O_APPEND's atomicity guarantees are only for writes up to a certain size. If we don't
-	// lock the file, we might end up with corrupted records.
-	//
-	// Note that Close()'ing the file releases all associated locks.
-	if err := lockFileExclusive(logFile.Fd()); err != nil {
-		_ = logFile.Close()
-		return 0, wrapErrorwithSourceLocf(err, "locking rusage logfile %s: %v", logFileName, err)
-	}
+		if err := os.MkdirAll(filepath.Dir(logFileName), 0777); err != nil {
+			return wrapErrorwithSourceLocf(err, "error creating rusage log directory %s", logFileName)
+		}
 
-	if err := json.NewEncoder(logFile).Encode(logEntry); err != nil {
-		_ = logFile.Close()
-		return 0, wrapErrorwithSourceLocf(err, "converting rusage logfile entry to JSON %v", logEntry)
-	}
+		timeUnit := float64(time.Second)
 
-	closeErr := logFile.Close()
-	if err != nil {
-		return 0, wrapErrorwithSourceLocf(err, "writing to rusage logfile %s: %v", logFileName, err)
-	}
-	if closeErr != nil {
-		return 0, wrapErrorwithSourceLocf(err, "closing rusage logfile %s: %v", logFileName, closeErr)
-	}
+		logEntry := rusageLog{
+			ExitCode:         exitCode,
+			ElapsedRealTime:  float64(elapsedRealTime) / timeUnit,
+			ElapsedUserTime:  float64(elapsedUserTime) / timeUnit,
+			ElapsedSysTime:   float64(elapsedSysTime) / timeUnit,
+			MaxMemUsed:       maxMemUsed,
+			Compiler:         absCompilerPath,
+			CompilerArgs:     compilerCmd.Args,
+			WorkingDirectory: cwd,
+		}
 
-	return exitCode, nil
+		// Note: using file mode 0666 so that a root-created log is writable by others.
+		logFile, err := os.OpenFile(logFileName, os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666)
+		if err != nil {
+			return wrapErrorwithSourceLocf(err, "creating rusage logfile %s", logFileName)
+		}
+
+		// O_APPEND's atomicity guarantees are only for writes up to a certain size. If we don't
+		// lock the file, we might end up with corrupted records.
+		//
+		// Note that Close()'ing the file releases all associated locks.
+		if err := lockFileExclusive(logFile.Fd()); err != nil {
+			_ = logFile.Close()
+			return wrapErrorwithSourceLocf(err, "locking rusage logfile %s: %v", logFileName, err)
+		}
+
+		if err := json.NewEncoder(logFile).Encode(logEntry); err != nil {
+			_ = logFile.Close()
+			return wrapErrorwithSourceLocf(err, "converting rusage logfile entry to JSON %v", logEntry)
+		}
+
+		closeErr := logFile.Close()
+		if err != nil {
+			return wrapErrorwithSourceLocf(err, "writing to rusage logfile %s: %v", logFileName, err)
+		}
+		if closeErr != nil {
+			return wrapErrorwithSourceLocf(err, "closing rusage logfile %s: %v", logFileName, closeErr)
+		}
+
+		return nil
+	}, nil
 }
diff --git a/sys-devel/llvm/files/llvm-11.0-invocation.patch b/sys-devel/llvm/files/llvm-11.0-invocation.patch
new file mode 100644
index 0000000..98ccfa3
--- /dev/null
+++ b/sys-devel/llvm/files/llvm-11.0-invocation.patch
@@ -0,0 +1,20 @@
+In simple-chrome, clang is a shell wrapper, it calls clang.elf, which is the
+real binary, then, clang.elf calls clang.elf itself. It is the last invocation
+"clang.elf -> clang.elf" that breaks, because direct calls to clang.elf misses
+all environment setup in clang wrapper. Fix this by calling to clang wrapper
+instead of clang.elf binary.
+
+diff --git a/clang/tools/driver/driver.cpp b/clang/tools/driver/driver.cpp
+index c3a3aab066ac..d1a4194a52f5 100644
+--- a/clang/tools/driver/driver.cpp
++++ b/clang/tools/driver/driver.cpp
+@@ -457,6 +457,9 @@ int main(int Argc, const char **Argv) {
+   }
+ 
+   std::string Path = GetExecutablePath(Args[0], CanonicalPrefixes);
++  size_t PathLen = Path.length();
++  if (PathLen > 4 && Path.substr(PathLen - 4) == ".elf")
++    Path = Path.substr(0, PathLen - 4);
+ 
+   // Whether the cc1 tool should be called inside the current process, or if we
+   // should spawn a new clang subprocess (old behavior).
diff --git a/sys-devel/llvm/files/llvm-leak-allowlist.v3.patch b/sys-devel/llvm/files/llvm-leak-allowlist.v3.patch
new file mode 100644
index 0000000..fb03196
--- /dev/null
+++ b/sys-devel/llvm/files/llvm-leak-allowlist.v3.patch
@@ -0,0 +1,77 @@
+This adds an allowlist of packages that have known memory leaks.
+So that the leak detector will not report memory leaks from these packages.
+diff --git a/lib/sanitizer_common/sanitizer_flags.inc b/lib/sanitizer_common/sanitizer_flags.inc
+index 58f7f37..bf97783 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc
+@@ -152,7 +152,7 @@ COMMON_FLAG(const char *, coverage_dir, ".",
+ COMMON_FLAG(bool, full_address_space, false,
+             "Sanitize complete address space; "
+             "by default kernel area on 32-bit platforms will not be sanitized")
+-COMMON_FLAG(bool, print_suppressions, true,
++COMMON_FLAG(bool, print_suppressions, false,
+             "Print matched suppressions at exit.")
+ COMMON_FLAG(
+     bool, disable_coredump, (SANITIZER_WORDSIZE == 64),
+
+diff --git a/lib/lsan/lsan_default_suppression.h b/lib/lsan/lsan_default_suppression.h
+new file mode 100644
+index 0000000..91aa484
+--- /dev/null
++++ b/compiler-rt/lib/lsan/lsan_default_suppression.h
+@@ -0,0 +1,34 @@
++namespace __lsan {
++
++char kLSanDefaultSuppressions[] =
++// ================ Leaks in third-party code ================
++
++// False positives in libfontconfig. http://crbug.com/39050
++"leak:libfontconfig\n"
++
++// Leaks in Nvidia's libGL.
++"leak:libGL.so\n"
++
++"leak:libnssutil3\n"
++"leak:libnspr4\n"
++"leak:libnss3\n"
++"leak:libplds4\n"
++"leak:libnssckbi\n"
++
++// XRandR has several one time leaks.
++"leak:libxrandr\n"
++
++// xrandr leak. http://crbug.com/119677
++"leak:XRRFindDisplay\n"
++
++// leak on session_manager. http://crbug.com/378805
++"leak:/sbin/session_manager\n"
++
++// leak on cryptohome. http://crbug.com/508281
++"leak:/usr/sbin/cryptohome\n"
++
++// leak on buffet. http://crbug.com/473700
++//"leak:/usr/bin/buffet\n"
++// End of suppressions.
++;  // Please keep this semicolon.
++}
+
+diff --git a/compiler-rt/lib/lsan/lsan_common.cpp b/compiler-rt/lib/lsan/lsan_common.cpp
+index ac7536757743..bb4b5c5a6169 100644
+--- a/compiler-rt/lib/lsan/lsan_common.cpp
++++ b/compiler-rt/lib/lsan/lsan_common.cpp
+@@ -12,6 +12,7 @@
+ //===----------------------------------------------------------------------===//
+ 
+ #include "lsan_common.h"
++#include "lsan_default_suppression.h"
+ 
+ #include "sanitizer_common/sanitizer_common.h"
+ #include "sanitizer_common/sanitizer_flag_parser.h"
+@@ -112,6 +113,7 @@ void LeakSuppressionContext::LazyParse() {
+     if (&__lsan_default_suppressions)
+       context.Parse(__lsan_default_suppressions());
+     context.Parse(kStdSuppressions);
++    context.Parse(kLSanDefaultSuppressions);
+   }
+ }
+ 
diff --git a/sys-devel/llvm/files/revert-3452a0d8c17f7166f479706b293caf6ac76ffd90.patch b/sys-devel/llvm/files/revert-3452a0d8c17f7166f479706b293caf6ac76ffd90.patch
deleted file mode 100644
index 9fe1612..0000000
--- a/sys-devel/llvm/files/revert-3452a0d8c17f7166f479706b293caf6ac76ffd90.patch
+++ /dev/null
@@ -1,181 +0,0 @@
-commit 509a8904e3efa1db01b76f01ee57ace55968bc29
-Author: Tiancong Wang <tcwang@google.com>
-Date:   Tue Nov 24 09:51:53 2020 -0800
-
-    Revert "[Driver] -B: don't search for target triple prefixes"
-    
-    This reverts commit 3452a0d8c17f7166f479706b293caf6ac76ffd90.
-
-diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp
-index 4ac813718ea..9db285adb64 100644
---- a/clang/lib/Driver/Driver.cpp
-+++ b/clang/lib/Driver/Driver.cpp
-@@ -4865,7 +4865,8 @@ void Driver::generatePrefixedToolNames(
-     Names.emplace_back((DefaultTargetTriple + "-" + Tool).str());
- }
- 
--static bool ScanDirForExecutable(SmallString<128> &Dir, StringRef Name) {
-+static bool ScanDirForExecutable(SmallString<128> &Dir,
-+                                 const std::string &Name) {
-   llvm::sys::path::append(Dir, Name);
-   if (llvm::sys::fs::can_execute(Twine(Dir)))
-     return true;
-@@ -4882,8 +4883,9 @@ std::string Driver::GetProgramPath(StringRef Name, const ToolChain &TC) const {
-   for (const auto &PrefixDir : PrefixDirs) {
-     if (llvm::sys::fs::is_directory(PrefixDir)) {
-       SmallString<128> P(PrefixDir);
--      if (ScanDirForExecutable(P, Name))
--        return std::string(P.str());
-+      for (const auto &TargetSpecificExecutable : TargetSpecificExecutables)
-+        if (ScanDirForExecutable(P, TargetSpecificExecutable))
-+          return std::string(P.str());
-     } else {
-       SmallString<128> P((PrefixDir + Name).str());
-       if (llvm::sys::fs::can_execute(Twine(P)))
-diff --git a/clang/test/Driver/B-opt.c b/clang/test/Driver/B-opt.c
-index df85dee4b70..5e5ff42fd09 100644
---- a/clang/test/Driver/B-opt.c
-+++ b/clang/test/Driver/B-opt.c
-@@ -1,10 +1,9 @@
- // Check -B driver option.
--
--/// Target triple prefix is not detected for -B.
-+//
- // RUN: %clang %s -### -o %t.o -target i386-unknown-linux \
- // RUN:     -B %S/Inputs/B_opt_tree/dir1 -fuse-ld=ld 2>&1 \
- // RUN:   | FileCheck --check-prefix=CHECK-B-OPT-TRIPLE %s
--// CHECK-B-OPT-TRIPLE-NOT: "{{.*}}/Inputs/B_opt_tree/dir1{{/|\\\\}}i386-unknown-linux-ld"
-+// CHECK-B-OPT-TRIPLE: "{{.*}}/Inputs/B_opt_tree/dir1{{/|\\\\}}i386-unknown-linux-ld"
- //
- // RUN: %clang %s -### -o %t.o -target i386-unknown-linux \
- // RUN:     -B %S/Inputs/B_opt_tree/dir2 -fuse-ld=ld 2>&1 \
-diff --git a/clang/test/Driver/fuse-ld.c b/clang/test/Driver/fuse-ld.c
-index 678913dd84c..9b90307ecec 100644
---- a/clang/test/Driver/fuse-ld.c
-+++ b/clang/test/Driver/fuse-ld.c
-@@ -32,21 +32,23 @@
- // RUN:   | FileCheck %s -check-prefix=CHECK-FREEBSD-PLIB
- // CHECK-FREEBSD-PLIB: error: invalid linker name
- 
-+
-+
- // RUN: %clang %s -### -fuse-ld=ld \
- // RUN:     -target arm-linux-androideabi \
--// RUN:     -B%S/Inputs/basic_android_tree/bin/arm-linux-androideabi- 2>&1 \
-+// RUN:     -B%S/Inputs/basic_android_tree/bin 2>&1 \
- // RUN:   | FileCheck %s --check-prefix=CHECK-ANDROID-ARM-LD
- // CHECK-ANDROID-ARM-LD: Inputs/basic_android_tree/bin{{/|\\+}}arm-linux-androideabi-ld
- 
- // RUN: %clang %s -### -fuse-ld=bfd \
- // RUN:     -target arm-linux-androideabi \
--// RUN:     -B%S/Inputs/basic_android_tree/bin/arm-linux-androideabi- 2>&1 \
-+// RUN:     -B%S/Inputs/basic_android_tree/bin 2>&1 \
- // RUN:   | FileCheck %s -check-prefix=CHECK-ANDROID-ARM-BFD
- // CHECK-ANDROID-ARM-BFD: Inputs/basic_android_tree/bin{{/|\\+}}arm-linux-androideabi-ld.bfd
- 
- // RUN: %clang %s -### -fuse-ld=gold \
- // RUN:     -target arm-linux-androideabi \
--// RUN:     -B%S/Inputs/basic_android_tree/bin/arm-linux-androideabi- 2>&1 \
-+// RUN:     -B%S/Inputs/basic_android_tree/bin 2>&1 \
- // RUN:   | FileCheck %s -check-prefix=CHECK-ANDROID-ARM-GOLD
- // CHECK-ANDROID-ARM-GOLD: Inputs/basic_android_tree/bin{{/|\\+}}arm-linux-androideabi-ld.gold
- 
-diff --git a/clang/test/Driver/prefixed-tools.c b/clang/test/Driver/prefixed-tools.c
-index 0252a2f7014..63f7f29ae96 100644
---- a/clang/test/Driver/prefixed-tools.c
-+++ b/clang/test/Driver/prefixed-tools.c
-@@ -1,8 +1,8 @@
--// RUN: %clang -### -B%S/Inputs/prefixed_tools_tree/x86_64--linux- -o %t.o -no-integrated-as -fuse-ld=ld \
-+// RUN: %clang -### -B%S/Inputs/prefixed_tools_tree -o %t.o -no-integrated-as -fuse-ld=ld \
- // RUN:        -target x86_64--linux %s 2>&1 | \
- // RUN: FileCheck --check-prefix=CHECK-M64 %s
- 
--// RUN: %clang -### -B%S/Inputs/prefixed_tools_tree/x86_64--linux- -o %t.o -no-integrated-as -fuse-ld=ld \
-+// RUN: %clang -### -B%S/Inputs/prefixed_tools_tree -o %t.o -no-integrated-as -fuse-ld=ld \
- // RUN:        -m32 -target x86_64--linux %s 2>&1 | \
- // RUN: FileCheck --check-prefix=CHECK-M32 %s
- 
-diff --git a/clang/test/Driver/program-path-priority.c b/clang/test/Driver/program-path-priority.c
-index cba5f9f4d74..9f1109f530c 100644
---- a/clang/test/Driver/program-path-priority.c
-+++ b/clang/test/Driver/program-path-priority.c
-@@ -119,15 +119,15 @@
- // RUN: test -f %t/%target_triple-gcc && \
- // RUN:   mv %t/%target_triple-gcc %t/prefix || true
- // RUN: touch %t/notreal-none-elf-gcc && chmod +x %t/notreal-none-elf-gcc
--// RUN: touch %t/prefix/gcc && chmod +x %t/prefix/gcc
- // RUN: env "PATH=" %t/clang -### -target notreal-none-elf %s -B %t/prefix 2>&1 | \
- // RUN:   FileCheck --check-prefix=DEFAULT_TRIPLE_IN_PREFIX %s
--// DEFAULT_TRIPLE_IN_PREFIX: prefix/gcc"
-+// DEFAULT_TRIPLE_IN_PREFIX: prefix/{{.*}}-gcc"
- // DEFAULT_TRIPLE_IN_PREFIX-NOT: notreal-none-elf-gcc"
- 
- /// Only if there is nothing in the prefix will we search other paths
- /// -f in case $DEFAULT_TRIPLE == %target_triple
--// RUN: rm -f %t/prefix/$DEFAULT_TRIPLE-gcc %t/prefix/%target_triple-gcc %t/prefix/gcc
-+// RUN: rm -f %t/prefix/$DEFAULT_TRIPLE-gcc
-+// RUN: rm -f %t/prefix/%target_triple-gcc
- // RUN: env "PATH=" %t/clang -### -target notreal-none-elf %s -B %t/prefix 2>&1 | \
- // RUN:   FileCheck --check-prefix=EMPTY_PREFIX_DIR %s
- // EMPTY_PREFIX_DIR: notreal-none-elf-gcc"
-diff --git a/clang/test/Driver/windows-cross.c b/clang/test/Driver/windows-cross.c
-index 96497da61c0..d96b0283a90 100644
---- a/clang/test/Driver/windows-cross.c
-+++ b/clang/test/Driver/windows-cross.c
-@@ -1,47 +1,47 @@
- // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -stdlib=libstdc++ -rtlib=compiler-rt -o /dev/null %s 2>&1 \
- // RUN:   | FileCheck %s --check-prefix CHECK-BASIC-LIBCXX
- 
--// CHECK-BASIC-LIBCXX: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{[^"]*}}.o" "-lmsvcrt"
-+// CHECK-BASIC-LIBCXX: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{[^"]*}}.o" "-lmsvcrt"
- 
- // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -stdlib=libstdc++ -rtlib=compiler-rt -static -o /dev/null %s 2>&1 \
- // RUN:   | FileCheck %s --check-prefix CHECK-STATIC
- 
--// CHECK-STATIC: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bstatic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{[^"]*}}.o" "-lmsvcrt"
-+// CHECK-STATIC: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bstatic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{[^"]*}}.o" "-lmsvcrt"
- 
- // RUN: %clang -### -target armv7-windows-itanium --sysroot %s/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -rtlib=compiler-rt -stdlib=libstdc++ -o /dev/null %s 2>&1 \
- // RUN:   | FileCheck %s --check-prefix CHECK-RTLIB
- 
--// CHECK-RTLIB: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
-+// CHECK-RTLIB: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
- 
- // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -rtlib=compiler-rt -stdlib=libc++ -o /dev/null %s 2>&1 \
- // RUN:   | FileCheck %s --check-prefix CHECK-C-LIBCXX
- 
--// CHECK-C-LIBCXX: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
-+// CHECK-C-LIBCXX: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
- 
- // RUN: %clangxx -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -rtlib=compiler-rt -stdlib=libc++ -o /dev/null %s 2>&1 \
- // RUN:   | FileCheck %s --check-prefix CHECK-LIBCXX
- 
--// CHECK-LIBCXX: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lc++" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
-+// CHECK-LIBCXX: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-Bdynamic" "--entry" "mainCRTStartup" "--allow-multiple-definition" "-o" "{{[^"]*}}" "{{.*}}.o" "-lc++" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
- 
- // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -shared -rtlib=compiler-rt -stdlib=libc++ -o shared.dll %s 2>&1 \
- // RUN:   | FileCheck %s --check-prefix CHECK-SHARED
- 
--// CHECK-SHARED: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
-+// CHECK-SHARED: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
- 
- // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -shared -rtlib=compiler-rt -stdlib=libc++ -static -o shared.dll %s 2>&1 \
- // RUN:   | FileCheck %s --check-prefix CHECK-SHARED-STATIC
- 
--// CHECK-SHARED-STATIC: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bstatic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
-+// CHECK-SHARED-STATIC: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bstatic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
- 
- // RUN: %clang -### -target armv7-windows-itanium --sysroot %s/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -shared -rtlib=compiler-rt -stdlib=libc++ -nostartfiles -o shared.dll %s 2>&1 \
- // RUN:   | FileCheck %s --check-prefix CHECK-NOSTARTFILES
- 
--// CHECK-NOSTARTFILES: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
-+// CHECK-NOSTARTFILES: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o" "-lmsvcrt" "{{.*[\\/]}}clang_rt.builtins-arm.lib"
- 
- // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=ld -shared -rtlib=compiler-rt -stdlib=libc++ -nostartfiles -nodefaultlibs -o shared.dll %s 2>&1 \
- // RUN:   | FileCheck %s --check-prefix CHECK-STANDALONE
- 
--// CHECK-STANDALONE: {{[/\\]}}ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o"
-+// CHECK-STANDALONE: armv7-windows-itanium-ld" "--sysroot={{.*}}/Inputs/Windows/ARM/8.1" "-m" "thumb2pe" "-shared" "-Bdynamic" "--enable-auto-image-base" "--entry" "_DllMainCRTStartup" "--allow-multiple-definition" "-o" "shared.dll" "--out-implib" "shared.lib" "{{.*}}.o"
- 
- // RUN: %clang -### -target armv7-windows-itanium --sysroot %S/Inputs/Windows/ARM/8.1 -B %S/Inputs/Windows/ARM/8.1/usr/bin -fuse-ld=lld-link2 -shared -o shared.dll -x c++ %s 2>&1 \
- // RUN:    | FileCheck %s --check-prefix CHECK-FUSE-LD
diff --git a/sys-devel/llvm/files/test-nomerge-fd739804e0591468762eb87488a497a3f7d4afb0.patch b/sys-devel/llvm/files/test-nomerge-fd739804e0591468762eb87488a497a3f7d4afb0.patch
new file mode 100644
index 0000000..7b54c78
--- /dev/null
+++ b/sys-devel/llvm/files/test-nomerge-fd739804e0591468762eb87488a497a3f7d4afb0.patch
@@ -0,0 +1,19 @@
+commit ede0db75b2d1bbcd55e71f424e543a1418fce817
+Author: Manoj Gupta <manojgupta@google.com>
+Date:   Fri Feb 12 12:29:47 2021 -0800
+
+    cherry pick test changes
+
+diff --git a/clang/test/CodeGen/attr-nomerge.cpp b/clang/test/CodeGen/attr-nomerge.cpp
+index bbf0547a050a..d93f4a7c96d6 100644
+--- a/clang/test/CodeGen/attr-nomerge.cpp
++++ b/clang/test/CodeGen/attr-nomerge.cpp
+@@ -84,7 +84,7 @@ void something_else_again() {
+ // CHECK-DAG: declare void @_ZN1AC2Ev{{.*}} #[[ATTR2]]
+ // CHECK-DAG: declare void @_ZN1AD1Ev{{.*}} #[[ATTR3:[0-9]+]]
+ // CHECK-DAG: declare void @_ZN1AD2Ev{{.*}} #[[ATTR3]]
+-// CHECK-DAG: define i32 @_Z1gi(i32 %i) #[[ATTR4:[0-9]+]] {
++// CHECK-DAG: define{{.*}} i32 @_Z1gi(i32 %i) #[[ATTR4:[0-9]+]] {
+ 
+ // CHECK-DAG: attributes #[[ATTR0]] = {{{.*}}nomerge{{.*}}}
+ // CHECK-DAG: attributes #[[ATTR1]] = {{{.*}}nomerge{{.*}}}
diff --git a/sys-devel/llvm/llvm-12.0_pre408248_p20201125-r7.ebuild b/sys-devel/llvm/llvm-12.0_pre408248_p20201125-r7.ebuild
deleted file mode 120000
index 7902be2..0000000
--- a/sys-devel/llvm/llvm-12.0_pre408248_p20201125-r7.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-llvm-12.0_pre408248_p20201125.ebuild
\ No newline at end of file
diff --git a/sys-devel/llvm/llvm-12.0_pre408248_p20201125.ebuild b/sys-devel/llvm/llvm-12.0_pre408248_p20201125.ebuild
deleted file mode 100644
index 31220a5..0000000
--- a/sys-devel/llvm/llvm-12.0_pre408248_p20201125.ebuild
+++ /dev/null
@@ -1,369 +0,0 @@
-# Copyright 1999-2015 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=7
-
-PYTHON_COMPAT=( python3_{6..9} )
-
-inherit cros-constants cmake flag-o-matic git-r3 multilib-minimal  \
-	python-any-r1 pax-utils toolchain-funcs
-
-LLVM_HASH="f402e682d0ef5598eeffc9a21a691b03e602ff58" # r408248
-LLVM_NEXT_HASH="7f6f9f4cf966c78a315d15d6e913c43cfa45c47c" # r412851
-
-DESCRIPTION="Low Level Virtual Machine"
-HOMEPAGE="http://llvm.org/"
-SRC_URI="
-	!llvm-tot? (
-		!llvm-next? ( llvm_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-${LLVM_HASH}.tar.xz ) )
-		llvm-next? ( llvm-next_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-${LLVM_NEXT_HASH}.tar.xz ) )
-	)
-"
-EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project
-	${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project"
-
-LICENSE="UoI-NCSA"
-SLOT="8"
-KEYWORDS="-* amd64"
-# FIXME: llvm-tot is somewhat misleading: at the moment, it's essentially
-# llvm-next with a few extra checks enabled
-IUSE="debug +default-compiler-rt +default-libcxx doc libedit +libffi +llvm-crt
-	llvm-next llvm_pgo_generate +llvm_pgo_use llvm-next_pgo_use llvm-tot
-	multitarget ncurses ocaml test +thinlto xml video_cards_radeon"
-
-COMMON_DEPEND="
-	sys-libs/zlib:0=[${MULTILIB_USEDEP}]
-	libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
-	libffi? ( >=virtual/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
-	ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
-	ocaml? (
-		>=dev-lang/ocaml-4.00.0:0=
-		dev-ml/findlib
-		dev-ml/ocaml-ctypes )"
-# configparser-3.2 breaks the build (3.3 or none at all are fine)
-DEPEND="${COMMON_DEPEND}
-	sys-devel/binutils
-	ocaml? ( test? ( dev-ml/ounit ) )"
-RDEPEND="${COMMON_DEPEND}
-	abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r2
-		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] )
-	!<=sys-devel/llvm-8.0_pre
-	!sys-devel/lld
-	!sys-devel/clang"
-BDEPEND="
-	dev-lang/perl
-	libffi? ( virtual/pkgconfig )
-	sys-devel/gnuconfig
-	$(python_gen_any_dep '
-		dev-python/sphinx[${PYTHON_USEDEP}]
-		doc? ( dev-python/recommonmark[${PYTHON_USEDEP}] )
-	')
-"
-
-# pypy gives me around 1700 unresolved tests due to open file limit
-# being exceeded. probably GC does not close them fast enough.
-REQUIRED_USE="
-	llvm_pgo_generate? ( !llvm_pgo_use )"
-
-check_lld_works() {
-	echo 'int main() {return 0;}' > "${T}"/lld.cxx || die
-	echo "Trying to link program with lld"
-	$(tc-getCXX) -fuse-ld=lld -std=c++11 -o /dev/null "${T}"/lld.cxx
-}
-
-apply_pgo_profile() {
-	! use llvm-tot && ( \
-		( use llvm-next && use llvm-next_pgo_use ) ||
-		( ! use llvm-next && use llvm_pgo_use ) )
-}
-
-src_unpack() {
-	export CMAKE_USE_DIR="${S}/llvm"
-
-	if use llvm-next || use llvm-tot; then
-		EGIT_COMMIT="${LLVM_NEXT_HASH}"
-	else
-		EGIT_COMMIT="${LLVM_HASH}"
-	fi
-
-	git-r3_src_unpack
-
-	if apply_pgo_profile; then
-		cd "${WORKDIR}"
-		local profile_hash
-		if use llvm-next; then
-			profile_hash="${LLVM_NEXT_HASH}"
-		else
-			profile_hash="${LLVM_HASH}"
-		fi
-		unpack "llvm-profdata-${profile_hash}.tar.xz"
-	fi
-}
-
-get_most_recent_revision() {
-	local subdir="${S}/llvm"
-
-	# Tries to get the revision ID of the most recent commit
-	"${FILESDIR}"/patch_manager/git_llvm_rev.py --llvm_dir "${subdir}" --sha "$(git -C "${subdir}" rev-parse HEAD)" | cut -d 'r' -f 2
-}
-
-src_prepare() {
-	# Make ocaml warnings non-fatal, bug #537308
-	sed -e "/RUN/s/-warn-error A//" -i llvm/test/Bindings/OCaml/*ml  || die
-
-	python_setup
-
-	"${FILESDIR}"/patch_manager/patch_manager.py \
-		--svn_version "$(get_most_recent_revision)" \
-		--patch_metadata_file "${FILESDIR}"/PATCHES.json \
-		--filesdir_path "${FILESDIR}" \
-		--src_path "${S}" || die
-
-	cmake_src_prepare
-
-	# Native libdir is used to hold LLVMgold.so
-	NATIVE_LIBDIR=$(get_libdir)
-}
-
-enable_asserts() {
-	# keep asserts enabled for llvm-tot
-	if use llvm-tot; then
-		echo yes
-	else
-		usex debug
-	fi
-}
-
-multilib_src_configure() {
-	export CMAKE_BUILD_TYPE="RelWithDebInfo"
-
-	append-flags -Wno-poison-system-directories
-
-	local targets
-	if use multitarget; then
-		targets='host;X86;ARM;AArch64;NVPTX'
-	else
-		targets='host;CppBackend'
-		use video_cards_radeon && targets+=';AMDGPU'
-	fi
-
-	local ffi_cflags ffi_ldflags
-	if use libffi; then
-		ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
-		ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
-	fi
-
-	local libdir=$(get_libdir)
-	local mycmakeargs=(
-		"${mycmakeargs[@]}"
-		"-DLLVM_ENABLE_PROJECTS=llvm;clang;lld;compiler-rt;clang-tools-extra"
-		"-DLLVM_LIBDIR_SUFFIX=${libdir#lib}"
-
-		"-DLLVM_BUILD_LLVM_DYLIB=ON"
-		# Link LLVM statically
-		"-DLLVM_LINK_LLVM_DYLIB=OFF"
-		"-DBUILD_SHARED_LIBS=OFF"
-
-		"-DLLVM_ENABLE_TIMESTAMPS=OFF"
-		"-DLLVM_TARGETS_TO_BUILD=${targets}"
-		"-DLLVM_BUILD_TESTS=$(usex test)"
-
-		"-DLLVM_ENABLE_FFI=$(usex libffi)"
-		"-DLLVM_ENABLE_TERMINFO=$(usex ncurses)"
-		"-DLLVM_ENABLE_ASSERTIONS=$(enable_asserts)"
-		"-DLLVM_ENABLE_EH=ON"
-		"-DLLVM_ENABLE_RTTI=ON"
-
-		"-DWITH_POLLY=OFF" # TODO
-
-		"-DLLVM_HOST_TRIPLE=${CHOST}"
-
-		"-DFFI_INCLUDE_DIR=${ffi_cflags#-I}"
-		"-DFFI_LIBRARY_DIR=${ffi_ldflags#-L}"
-		"-DLLVM_BINUTILS_INCDIR=${SYSROOT}/usr/include"
-
-		"-DHAVE_HISTEDIT_H=$(usex libedit)"
-		"-DENABLE_LINKER_BUILD_ID=ON"
-		"-DCLANG_VENDOR=Chromium OS ${PVR}"
-		# override default stdlib and rtlib
-		"-DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")"
-		"-DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")"
-
-		# Turn on new pass manager for LLVM
-		"-DENABLE_EXPERIMENTAL_NEW_PASS_MANAGER=ON"
-
-		# crbug/855759
-		"-DCOMPILER_RT_BUILD_CRT=$(usex llvm-crt)"
-
-		"-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
-		"-DCLANG_DEFAULT_UNWINDLIB=libgcc"
-
-		# By default do not enable PGO for compiler-rt
-		"-DCOMPILER_RT_ENABLE_PGO=OFF"
-
-		# compiler-rt needs libc++ sources to be specified to build
-		# an internal copy for libfuzzer, can be removed if libc++
-		# is built inside llvm ebuild.
-		"-DCOMPILER_RT_LIBCXXABI_PATH=${S}/libcxxabi"
-		"-DCOMPILER_RT_LIBCXX_PATH=${S}/libcxx"
-
-		# crbug/1146898: setting this to ON causes boot failures
-		"-DENABLE_X86_RELAX_RELOCATIONS=OFF"
-	)
-
-	# Update LLVM to 9.0 will cause LLVM to complain GCC
-	# version is < 5.1. Add this flag to suppress the error.
-	mycmakeargs+=(
-		"-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=1"
-	)
-
-	if check_lld_works; then
-		mycmakeargs+=(
-			# We use lld to link llvm, because:
-			# 1) Gold has issue with no index for archive,
-			# 2) Gold doesn't support instrumented compiler-rt well.
-			"-DLLVM_USE_LINKER=lld"
-		)
-		# The standalone toolchain may be run at places not supporting
-		# smallPIE, disabling it for lld.
-		# Pass -fuse-ld=lld to make cmake happy.
-		append-ldflags "-fuse-ld=lld -Wl,--pack-dyn-relocs=none"
-		# Disable warning about profile not matching.
-		append-flags "-Wno-backend-plugin"
-
-		if use thinlto; then
-			mycmakeargs+=(
-				"-DLLVM_ENABLE_LTO=thin"
-			)
-		fi
-
-		if apply_pgo_profile; then
-			mycmakeargs+=(
-				"-DLLVM_PROFDATA_FILE=${WORKDIR}/llvm.profdata"
-			)
-		fi
-
-		if use llvm_pgo_generate; then
-			mycmakeargs+=(
-				"-DLLVM_BUILD_INSTRUMENTED=IR"
-			)
-		fi
-	fi
-
-	if ! multilib_is_native_abi || ! use ocaml; then
-		mycmakeargs+=(
-			"-DOCAMLFIND=NO"
-		)
-	fi
-#	Note: go bindings have no CMake rules at the moment
-#	but let's kill the check in case they are introduced
-#	if ! multilib_is_native_abi || ! use go; then
-		mycmakeargs+=(
-			"-DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND"
-		)
-#	fi
-
-	if multilib_is_native_abi; then
-		mycmakeargs+=(
-			"-DLLVM_BUILD_DOCS=$(usex doc)"
-			"-DLLVM_ENABLE_SPHINX=$(usex doc)"
-			"-DLLVM_ENABLE_DOXYGEN=OFF"
-			"-DLLVM_INSTALL_HTML=${EPREFIX}/usr/share/doc/${PF}/html"
-			"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
-			"-DLLVM_INSTALL_UTILS=ON"
-		)
-	fi
-
-	if ! use debug; then
-		append-cppflags -DNDEBUG
-	fi
-
-	cmake_src_configure
-}
-
-multilib_src_compile() {
-	cmake_src_compile
-
-	pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
-	pax-mark m "${BUILD_DIR}"/bin/lli
-	pax-mark m "${BUILD_DIR}"/bin/lli-child-target
-
-	if use test; then
-		pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
-		pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
-		pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
-	fi
-}
-
-multilib_src_test() {
-	# respect TMPDIR!
-	local -x LIT_PRESERVES_TMP=1
-	cmake_src_test
-}
-
-src_install() {
-	local MULTILIB_CHOST_TOOLS=(
-		/usr/bin/llvm-config
-	)
-
-	local MULTILIB_WRAPPED_HEADERS=(
-		/usr/include/llvm/Config/config.h
-		/usr/include/llvm/Config/llvm-config.h
-	)
-
-	multilib-minimal_src_install
-}
-
-multilib_src_install() {
-	cmake_src_install
-
-	local use_llvm_next=false
-	if use llvm-next || use llvm-tot
-	then
-		use_llvm_next=true
-	fi
-	local wrapper_script=clang_host_wrapper
-
-	"${FILESDIR}/compiler_wrapper/build.py" --config=cros.host --use_ccache=false \
-		--use_llvm_next="${use_llvm_next}" \
-		--output_file="${D}/usr/bin/${wrapper_script}" || die
-
-	newbin "${D}/usr/bin/clang-tidy" "clang-tidy"
-	dobin "${FILESDIR}/bisect_driver.py"
-	exeinto "/usr/bin"
-	dosym "${wrapper_script}" "/usr/bin/${CHOST}-clang"
-	dosym "${wrapper_script}" "/usr/bin/${CHOST}-clang++"
-	newexe "${FILESDIR}/ldwrapper_lld.host" "${CHOST}-ld.lld"
-
-	# llvm-strip is a symlink to llvm-objcopy and distinguished by a argv[0] check.
-	# When creating standalone toolchain, argv[0] information is lost and causes
-	# llvm-strip invocations to be treated as llvm-objcopy breaking builds
-	# (crbug.com/1151787). Handle this by making llvm-strip a full binary.
-	if [[ -L "${D}/usr/bin/llvm-strip" ]]; then
-		rm "${D}/usr/bin/llvm-strip" || die
-		newbin "${D}/usr/bin/llvm-objcopy" "llvm-strip"
-	fi
-}
-
-multilib_src_install_all() {
-	insinto /usr/share/vim/vimfiles
-	doins -r llvm/utils/vim/*/.
-	# some users may find it useful
-	dodoc llvm/utils/vim/vimrc
-	dobin "${S}/compiler-rt/lib/asan/scripts/asan_symbolize.py"
-}
-
-pkg_postinst() {
-	if has_version ">=dev-util/ccache-3.1.9-r2" ; then
-		#add ccache links as clang might get installed after ccache
-		"${EROOT}"/usr/bin/ccache-config --install-links
-	fi
-}
-
-pkg_postrm() {
-	if has_version ">=dev-util/ccache-3.1.9-r2" && [[ -z ${REPLACED_BY_VERSION} ]]; then
-		# --remove-links would remove all links, --install-links updates them
-		"${EROOT}"/usr/bin/ccache-config --install-links
-	fi
-}
diff --git a/sys-devel/llvm/llvm-12.0_pre422132_p20210405-r9.ebuild b/sys-devel/llvm/llvm-12.0_pre422132_p20210405-r9.ebuild
new file mode 120000
index 0000000..a4c5f7c
--- /dev/null
+++ b/sys-devel/llvm/llvm-12.0_pre422132_p20210405-r9.ebuild
@@ -0,0 +1 @@
+llvm-12.0_pre422132_p20210405.ebuild
\ No newline at end of file
diff --git a/sys-devel/llvm/llvm-12.0_pre422132_p20210405.ebuild b/sys-devel/llvm/llvm-12.0_pre422132_p20210405.ebuild
new file mode 100644
index 0000000..0cd5010
--- /dev/null
+++ b/sys-devel/llvm/llvm-12.0_pre422132_p20210405.ebuild
@@ -0,0 +1,380 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6..9} )
+
+inherit cros-constants cmake flag-o-matic git-r3 multilib-minimal  \
+	python-any-r1 pax-utils toolchain-funcs
+
+LLVM_HASH="cd442157cff4aad209ae532cbf031abbe10bc1df" # r422132
+LLVM_NEXT_HASH="cd442157cff4aad209ae532cbf031abbe10bc1df" # r422132
+
+DESCRIPTION="Low Level Virtual Machine"
+HOMEPAGE="http://llvm.org/"
+SRC_URI="
+	!llvm-tot? (
+		!llvm-next? ( llvm_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-${LLVM_HASH}.tar.xz ) )
+		llvm-next? ( llvm-next_pgo_use? ( gs://chromeos-localmirror/distfiles/llvm-profdata-${LLVM_NEXT_HASH}.tar.xz ) )
+	)
+"
+EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project
+	${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project"
+EGIT_BRANCH=main
+
+LICENSE="UoI-NCSA"
+SLOT="8"
+KEYWORDS="-* amd64"
+# FIXME: llvm-tot is somewhat misleading: at the moment, it's essentially
+# llvm-next with a few extra checks enabled
+IUSE="debug +default-compiler-rt +default-libcxx doc libedit +libffi +llvm-crt
+	llvm-next llvm_pgo_generate +llvm_pgo_use llvm-next_pgo_use llvm-tot
+	multitarget ncurses ocaml test +thinlto xml video_cards_radeon"
+
+COMMON_DEPEND="
+	sys-libs/zlib:0=[${MULTILIB_USEDEP}]
+	libedit? ( dev-libs/libedit:0=[${MULTILIB_USEDEP}] )
+	libffi? ( >=virtual/libffi-3.0.13-r1:0=[${MULTILIB_USEDEP}] )
+	ncurses? ( >=sys-libs/ncurses-5.9-r3:0=[${MULTILIB_USEDEP}] )
+	ocaml? (
+		>=dev-lang/ocaml-4.00.0:0=
+		dev-ml/findlib
+		dev-ml/ocaml-ctypes )"
+# configparser-3.2 breaks the build (3.3 or none at all are fine)
+DEPEND="${COMMON_DEPEND}
+	sys-devel/binutils
+	ocaml? ( test? ( dev-ml/ounit ) )"
+RDEPEND="${COMMON_DEPEND}
+	abi_x86_32? ( !<=app-emulation/emul-linux-x86-baselibs-20130224-r2
+		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] )
+	!<=sys-devel/llvm-8.0_pre
+	!sys-devel/lld
+	!sys-devel/clang"
+BDEPEND="
+	dev-lang/perl
+	libffi? ( virtual/pkgconfig )
+	sys-devel/gnuconfig
+	$(python_gen_any_dep '
+		dev-python/sphinx[${PYTHON_USEDEP}]
+		doc? ( dev-python/recommonmark[${PYTHON_USEDEP}] )
+	')
+"
+
+# pypy gives me around 1700 unresolved tests due to open file limit
+# being exceeded. probably GC does not close them fast enough.
+REQUIRED_USE="
+	llvm_pgo_generate? ( !llvm_pgo_use )"
+
+check_lld_works() {
+	echo 'int main() {return 0;}' > "${T}"/lld.cxx || die
+	echo "Trying to link program with lld"
+	$(tc-getCXX) -fuse-ld=lld -std=c++11 -o /dev/null "${T}"/lld.cxx
+}
+
+apply_pgo_profile() {
+	! use llvm-tot && ( \
+		( use llvm-next && use llvm-next_pgo_use ) ||
+		( ! use llvm-next && use llvm_pgo_use ) )
+}
+
+src_unpack() {
+	export CMAKE_USE_DIR="${S}/llvm"
+
+	if use llvm-next || use llvm-tot; then
+		EGIT_COMMIT="${LLVM_NEXT_HASH}"
+	else
+		EGIT_COMMIT="${LLVM_HASH}"
+	fi
+
+	git-r3_src_unpack
+
+	if apply_pgo_profile; then
+		cd "${WORKDIR}"
+		local profile_hash
+		if use llvm-next; then
+			profile_hash="${LLVM_NEXT_HASH}"
+		else
+			profile_hash="${LLVM_HASH}"
+		fi
+		unpack "llvm-profdata-${profile_hash}.tar.xz"
+	fi
+}
+
+get_most_recent_revision() {
+	local subdir="${S}/llvm"
+
+	# Tries to get the revision ID of the most recent commit
+	"${FILESDIR}"/patch_manager/git_llvm_rev.py --llvm_dir "${subdir}" --sha "$(git -C "${subdir}" rev-parse HEAD)" | cut -d 'r' -f 2
+}
+
+src_prepare() {
+	# Make ocaml warnings non-fatal, bug #537308
+	sed -e "/RUN/s/-warn-error A//" -i llvm/test/Bindings/OCaml/*ml  || die
+
+	python_setup
+
+	"${FILESDIR}"/patch_manager/patch_manager.py \
+		--svn_version "$(get_most_recent_revision)" \
+		--patch_metadata_file "${FILESDIR}"/PATCHES.json \
+		--filesdir_path "${FILESDIR}" \
+		--src_path "${S}" || die
+
+	cmake_src_prepare
+
+	# Native libdir is used to hold LLVMgold.so
+	NATIVE_LIBDIR=$(get_libdir)
+}
+
+enable_asserts() {
+	# keep asserts enabled for llvm-tot
+	if use llvm-tot; then
+		echo yes
+	else
+		usex debug
+	fi
+}
+
+multilib_src_configure() {
+	export CMAKE_BUILD_TYPE="RelWithDebInfo"
+
+	append-flags -Wno-poison-system-directories
+
+	local targets
+	if use multitarget; then
+		targets='host;X86;ARM;AArch64;NVPTX'
+	else
+		targets='host;CppBackend'
+		use video_cards_radeon && targets+=';AMDGPU'
+	fi
+
+	local ffi_cflags ffi_ldflags
+	if use libffi; then
+		ffi_cflags=$($(tc-getPKG_CONFIG) --cflags-only-I libffi)
+		ffi_ldflags=$($(tc-getPKG_CONFIG) --libs-only-L libffi)
+	fi
+
+	local libdir=$(get_libdir)
+	local mycmakeargs=(
+		"${mycmakeargs[@]}"
+		"-DLLVM_ENABLE_PROJECTS=llvm;clang;lld;lldb;compiler-rt;clang-tools-extra"
+		"-DLLVM_LIBDIR_SUFFIX=${libdir#lib}"
+
+		"-DLLVM_BUILD_LLVM_DYLIB=ON"
+		# Link LLVM statically
+		"-DLLVM_LINK_LLVM_DYLIB=OFF"
+		"-DBUILD_SHARED_LIBS=OFF"
+
+		"-DLLVM_ENABLE_TIMESTAMPS=OFF"
+		"-DLLVM_TARGETS_TO_BUILD=${targets}"
+		"-DLLVM_BUILD_TESTS=$(usex test)"
+
+		"-DLLVM_ENABLE_FFI=$(usex libffi)"
+		"-DLLVM_ENABLE_TERMINFO=$(usex ncurses)"
+		"-DLLVM_ENABLE_ASSERTIONS=$(enable_asserts)"
+		"-DLLVM_ENABLE_EH=ON"
+		"-DLLVM_ENABLE_RTTI=ON"
+
+		"-DWITH_POLLY=OFF" # TODO
+
+		"-DLLVM_HOST_TRIPLE=${CHOST}"
+
+		"-DFFI_INCLUDE_DIR=${ffi_cflags#-I}"
+		"-DFFI_LIBRARY_DIR=${ffi_ldflags#-L}"
+		"-DLLVM_BINUTILS_INCDIR=${SYSROOT}/usr/include"
+
+		"-DHAVE_HISTEDIT_H=$(usex libedit)"
+		"-DENABLE_LINKER_BUILD_ID=ON"
+		"-DCLANG_VENDOR=Chromium OS ${PVR}"
+		# override default stdlib and rtlib
+		"-DCLANG_DEFAULT_CXX_STDLIB=$(usex default-libcxx libc++ "")"
+		"-DCLANG_DEFAULT_RTLIB=$(usex default-compiler-rt compiler-rt "")"
+
+		# Turn on new pass manager for LLVM
+		"-DENABLE_EXPERIMENTAL_NEW_PASS_MANAGER=ON"
+
+		# crbug/855759
+		"-DCOMPILER_RT_BUILD_CRT=$(usex llvm-crt)"
+
+		"-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
+		"-DCLANG_DEFAULT_UNWINDLIB=libgcc"
+
+		# workaround for crbug/1198796
+		"-DCLANG_TOOLING_BUILD_AST_INTROSPECTION=OFF"
+
+		# By default do not enable PGO for compiler-rt
+		"-DCOMPILER_RT_ENABLE_PGO=OFF"
+
+		# compiler-rt needs libc++ sources to be specified to build
+		# an internal copy for libfuzzer, can be removed if libc++
+		# is built inside llvm ebuild.
+		"-DCOMPILER_RT_LIBCXXABI_PATH=${S}/libcxxabi"
+		"-DCOMPILER_RT_LIBCXX_PATH=${S}/libcxx"
+		"-DCOMPILER_RT_BUILTINS_HIDE_SYMBOLS=OFF"
+
+		# crbug/1146898: setting this to ON causes boot failures
+		"-DENABLE_X86_RELAX_RELOCATIONS=OFF"
+	)
+
+	# Update LLVM to 9.0 will cause LLVM to complain GCC
+	# version is < 5.1. Add this flag to suppress the error.
+	mycmakeargs+=(
+		"-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=1"
+	)
+
+	if check_lld_works; then
+		mycmakeargs+=(
+			# We use lld to link llvm, because:
+			# 1) Gold has issue with no index for archive,
+			# 2) Gold doesn't support instrumented compiler-rt well.
+			"-DLLVM_USE_LINKER=lld"
+		)
+		# The standalone toolchain may be run at places not supporting
+		# smallPIE, disabling it for lld.
+		# Pass -fuse-ld=lld to make cmake happy.
+		append-ldflags "-fuse-ld=lld -Wl,--pack-dyn-relocs=none"
+		# Disable warning about profile not matching.
+		append-flags "-Wno-backend-plugin"
+
+		if use thinlto; then
+			mycmakeargs+=(
+				"-DLLVM_ENABLE_LTO=thin"
+			)
+		fi
+
+		if apply_pgo_profile; then
+			mycmakeargs+=(
+				"-DLLVM_PROFDATA_FILE=${WORKDIR}/llvm.profdata"
+			)
+		fi
+
+		if use llvm_pgo_generate; then
+			mycmakeargs+=(
+				"-DLLVM_BUILD_INSTRUMENTED=IR"
+			)
+		fi
+	fi
+
+	if ! multilib_is_native_abi || ! use ocaml; then
+		mycmakeargs+=(
+			"-DOCAMLFIND=NO"
+		)
+	fi
+#	Note: go bindings have no CMake rules at the moment
+#	but let's kill the check in case they are introduced
+#	if ! multilib_is_native_abi || ! use go; then
+		mycmakeargs+=(
+			"-DGO_EXECUTABLE=GO_EXECUTABLE-NOTFOUND"
+		)
+#	fi
+
+	if multilib_is_native_abi; then
+		mycmakeargs+=(
+			"-DLLVM_BUILD_DOCS=$(usex doc)"
+			"-DLLVM_ENABLE_SPHINX=$(usex doc)"
+			"-DLLVM_ENABLE_DOXYGEN=OFF"
+			"-DLLVM_INSTALL_HTML=${EPREFIX}/usr/share/doc/${PF}/html"
+			"-DSPHINX_WARNINGS_AS_ERRORS=OFF"
+			"-DLLVM_INSTALL_UTILS=ON"
+		)
+	fi
+
+	if ! use debug; then
+		append-cppflags -DNDEBUG
+	fi
+
+	cmake_src_configure
+}
+
+multilib_src_compile() {
+	cmake_src_compile
+
+	pax-mark m "${BUILD_DIR}"/bin/llvm-rtdyld
+	pax-mark m "${BUILD_DIR}"/bin/lli
+	pax-mark m "${BUILD_DIR}"/bin/lli-child-target
+
+	if use test; then
+		pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/Orc/OrcJITTests
+		pax-mark m "${BUILD_DIR}"/unittests/ExecutionEngine/MCJIT/MCJITTests
+		pax-mark m "${BUILD_DIR}"/unittests/Support/SupportTests
+	fi
+}
+
+multilib_src_test() {
+	# respect TMPDIR!
+	local -x LIT_PRESERVES_TMP=1
+	cmake_src_test
+}
+
+src_install() {
+	local MULTILIB_CHOST_TOOLS=(
+		/usr/bin/llvm-config
+	)
+
+	local MULTILIB_WRAPPED_HEADERS=(
+		/usr/include/llvm/Config/config.h
+		/usr/include/llvm/Config/llvm-config.h
+	)
+
+	multilib-minimal_src_install
+}
+
+multilib_src_install() {
+	cmake_src_install
+
+	local use_llvm_next=false
+	if use llvm-next || use llvm-tot
+	then
+		use_llvm_next=true
+	fi
+	local wrapper_script=clang_host_wrapper
+
+	"${FILESDIR}/compiler_wrapper/build.py" --config=cros.host --use_ccache=false \
+		--use_llvm_next="${use_llvm_next}" \
+		--output_file="${D}/usr/bin/${wrapper_script}" || die
+
+	newbin "${D}/usr/bin/clang-tidy" "clang-tidy"
+	dobin "${FILESDIR}/bisect_driver.py"
+	exeinto "/usr/bin"
+	dosym "${wrapper_script}" "/usr/bin/${CHOST}-clang"
+	dosym "${wrapper_script}" "/usr/bin/${CHOST}-clang++"
+	newexe "${FILESDIR}/ldwrapper_lld.host" "${CHOST}-ld.lld"
+
+	# llvm-strip is a symlink to llvm-objcopy and distinguished by a argv[0] check.
+	# When creating standalone toolchain, argv[0] information is lost and causes
+	# llvm-strip invocations to be treated as llvm-objcopy breaking builds
+	# (crbug.com/1151787). Handle this by making llvm-strip a full binary.
+	if [[ -L "${D}/usr/bin/llvm-strip" ]]; then
+		rm "${D}/usr/bin/llvm-strip" || die
+		newbin "${D}/usr/bin/llvm-objcopy" "llvm-strip"
+	fi
+
+	# Remove this file, if it exists, to avoid installation file collision,
+	# as this file is also generated/installed by the dev-python/six package.
+	if [[ -f "${D}/usr/lib/python3.6/site-packages/six.py" ]]; then
+		rm "${D}/usr/lib/python3.6/site-packages/six.py" || die
+	fi
+}
+
+multilib_src_install_all() {
+	insinto /usr/share/vim/vimfiles
+	doins -r llvm/utils/vim/*/.
+	# some users may find it useful
+	dodoc llvm/utils/vim/vimrc
+	dobin "${S}/compiler-rt/lib/asan/scripts/asan_symbolize.py"
+}
+
+pkg_postinst() {
+	if has_version ">=dev-util/ccache-3.1.9-r2" ; then
+		#add ccache links as clang might get installed after ccache
+		"${EROOT}"/usr/bin/ccache-config --install-links
+	fi
+}
+
+pkg_postrm() {
+	if has_version ">=dev-util/ccache-3.1.9-r2" && [[ -z ${REPLACED_BY_VERSION} ]]; then
+		# --remove-links would remove all links, --install-links updates them
+		"${EROOT}"/usr/bin/ccache-config --install-links
+	fi
+}
diff --git a/sys-devel/llvm/llvm-9.0.0-r3.ebuild b/sys-devel/llvm/llvm-9.0.0-r4.ebuild
similarity index 100%
rename from sys-devel/llvm/llvm-9.0.0-r3.ebuild
rename to sys-devel/llvm/llvm-9.0.0-r4.ebuild
diff --git a/sys-firmware/chromeos-fpmcu-release-bloonchipper/chromeos-fpmcu-release-bloonchipper-0.0.1-r39.ebuild b/sys-firmware/chromeos-fpmcu-release-bloonchipper/chromeos-fpmcu-release-bloonchipper-0.0.1-r39.ebuild
deleted file mode 100644
index 12d171b..0000000
--- a/sys-firmware/chromeos-fpmcu-release-bloonchipper/chromeos-fpmcu-release-bloonchipper-0.0.1-r39.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# Increment the "eclass bug workaround count" below when you change
-# "cros-ec-release.eclass" to work around http://crbug.com/220902.
-#
-# eclass bug workaround count: 3
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("197506c10838f9fad2cf9f74dd11e5ddac4cb2cc" "069cb5acb1d4a8a001404dfecdfab465de639ad1" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
-CROS_WORKON_TREE=("6af4af6a53e1bd149f0e4dc8a390a736006af5f1" "80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
-FIRMWARE_EC_BOARD="bloonchipper"
-FIRMWARE_EC_RELEASE_REPLACE_RO="yes"
-
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/ec"
-	"chromiumos/third_party/tpm2"
-	"chromiumos/third_party/cryptoc"
-)
-
-CROS_WORKON_LOCALNAME=(
-	"../platform/release-firmware/fpmcu-bloonchipper"
-	"tpm2"
-	"cryptoc"
-)
-
-CROS_WORKON_DESTDIR=(
-	"${S}/platform/ec"
-	"${S}/third_party/tpm2"
-	"${S}/third_party/cryptoc"
-)
-
-CROS_WORKON_EGIT_BRANCH=(
-	"firmware-fpmcu-bloonchipper-release"
-	"master"
-	"master"
-)
-
-inherit cros-workon cros-ec-release
-
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md"
-LICENSE="BSD-Google"
-KEYWORDS="*"
diff --git a/sys-firmware/chromeos-fpmcu-release-bloonchipper/chromeos-fpmcu-release-bloonchipper-0.0.1-r48.ebuild b/sys-firmware/chromeos-fpmcu-release-bloonchipper/chromeos-fpmcu-release-bloonchipper-0.0.1-r48.ebuild
new file mode 100644
index 0000000..2b0c034
--- /dev/null
+++ b/sys-firmware/chromeos-fpmcu-release-bloonchipper/chromeos-fpmcu-release-bloonchipper-0.0.1-r48.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# Increment the "eclass bug workaround count" below when you change
+# "cros-ec-release.eclass" to work around http://crbug.com/220902.
+#
+# eclass bug workaround count: 3
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("d46e286155693f9cb6bd66f8c2c0bc101f2006ee" "37335af9c5488ed349271a8ba9ff209c940a5e2c" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
+CROS_WORKON_TREE=("57ec13f9095b7a6d49a429f8d6b1c14c6837344d" "679fa8b14bd105ad9959a0f82eaa928d5b18890d" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
+FIRMWARE_EC_BOARD="bloonchipper"
+FIRMWARE_EC_RELEASE_REPLACE_RO="yes"
+
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/ec"
+	"chromiumos/third_party/tpm2"
+	"chromiumos/third_party/cryptoc"
+)
+
+CROS_WORKON_LOCALNAME=(
+	"../platform/release-firmware/fpmcu-bloonchipper"
+	"tpm2"
+	"cryptoc"
+)
+
+CROS_WORKON_DESTDIR=(
+	"${S}/platform/ec"
+	"${S}/third_party/tpm2"
+	"${S}/third_party/cryptoc"
+)
+
+CROS_WORKON_EGIT_BRANCH=(
+	"firmware-fpmcu-bloonchipper-release"
+	"master"
+	"master"
+)
+
+inherit cros-workon cros-ec-release
+
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md"
+LICENSE="BSD-Google"
+KEYWORDS="*"
diff --git a/sys-firmware/chromeos-fpmcu-release-dartmonkey/chromeos-fpmcu-release-dartmonkey-0.0.1-r27.ebuild b/sys-firmware/chromeos-fpmcu-release-dartmonkey/chromeos-fpmcu-release-dartmonkey-0.0.1-r27.ebuild
deleted file mode 100644
index cd0a66d..0000000
--- a/sys-firmware/chromeos-fpmcu-release-dartmonkey/chromeos-fpmcu-release-dartmonkey-0.0.1-r27.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# Increment the "eclass bug workaround count" below when you change
-# "cros-ec-release.eclass" to work around http://crbug.com/220902.
-#
-# eclass bug workaround count: 3
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("abdb493fdaf8e9a0fb9b3117bc6d085faec961b2" "069cb5acb1d4a8a001404dfecdfab465de639ad1" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
-CROS_WORKON_TREE=("8153273126093f8370ddcbdc06a2a63e7832469b" "80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
-FIRMWARE_EC_BOARD="dartmonkey"
-FIRMWARE_EC_RELEASE_REPLACE_RO="yes"
-
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/ec"
-	"chromiumos/third_party/tpm2"
-	"chromiumos/third_party/cryptoc"
-)
-
-CROS_WORKON_LOCALNAME=(
-	"../platform/release-firmware/fpmcu-dartmonkey"
-	"tpm2"
-	"cryptoc"
-)
-
-CROS_WORKON_DESTDIR=(
-	"${S}/platform/ec"
-	"${S}/third_party/tpm2"
-	"${S}/third_party/cryptoc"
-)
-
-CROS_WORKON_EGIT_BRANCH=(
-	"firmware-fpmcu-dartmonkey-release"
-	"master"
-	"master"
-)
-
-inherit cros-workon cros-ec-release
-
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md"
-LICENSE="BSD-Google"
-KEYWORDS="*"
diff --git a/sys-firmware/chromeos-fpmcu-release-dartmonkey/chromeos-fpmcu-release-dartmonkey-0.0.1-r37.ebuild b/sys-firmware/chromeos-fpmcu-release-dartmonkey/chromeos-fpmcu-release-dartmonkey-0.0.1-r37.ebuild
new file mode 100644
index 0000000..1d8b4e7
--- /dev/null
+++ b/sys-firmware/chromeos-fpmcu-release-dartmonkey/chromeos-fpmcu-release-dartmonkey-0.0.1-r37.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# Increment the "eclass bug workaround count" below when you change
+# "cros-ec-release.eclass" to work around http://crbug.com/220902.
+#
+# eclass bug workaround count: 3
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("8b63078abb67d76366cd3e01b077188bbcdb20a9" "37335af9c5488ed349271a8ba9ff209c940a5e2c" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
+CROS_WORKON_TREE=("c58fb6b1d5dcbcdf2a513e88558e47031f0ae606" "679fa8b14bd105ad9959a0f82eaa928d5b18890d" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
+FIRMWARE_EC_BOARD="dartmonkey"
+FIRMWARE_EC_RELEASE_REPLACE_RO="yes"
+
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/ec"
+	"chromiumos/third_party/tpm2"
+	"chromiumos/third_party/cryptoc"
+)
+
+CROS_WORKON_LOCALNAME=(
+	"../platform/release-firmware/fpmcu-dartmonkey"
+	"tpm2"
+	"cryptoc"
+)
+
+CROS_WORKON_DESTDIR=(
+	"${S}/platform/ec"
+	"${S}/third_party/tpm2"
+	"${S}/third_party/cryptoc"
+)
+
+CROS_WORKON_EGIT_BRANCH=(
+	"firmware-fpmcu-dartmonkey-release"
+	"master"
+	"master"
+)
+
+inherit cros-workon cros-ec-release
+
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md"
+LICENSE="BSD-Google"
+KEYWORDS="*"
diff --git a/sys-firmware/chromeos-fpmcu-release-nami/chromeos-fpmcu-release-nami-0.0.1-r26.ebuild b/sys-firmware/chromeos-fpmcu-release-nami/chromeos-fpmcu-release-nami-0.0.1-r26.ebuild
deleted file mode 100644
index 942c47c..0000000
--- a/sys-firmware/chromeos-fpmcu-release-nami/chromeos-fpmcu-release-nami-0.0.1-r26.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# Increment the "eclass bug workaround count" below when you change
-# "cros-ec-release.eclass" to work around http://crbug.com/220902.
-#
-# eclass bug workaround count: 3
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("abdb493fdaf8e9a0fb9b3117bc6d085faec961b2" "069cb5acb1d4a8a001404dfecdfab465de639ad1" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
-CROS_WORKON_TREE=("8153273126093f8370ddcbdc06a2a63e7832469b" "80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
-FIRMWARE_EC_BOARD="nami_fp"
-FIRMWARE_EC_RELEASE_REPLACE_RO="yes"
-
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/ec"
-	"chromiumos/third_party/tpm2"
-	"chromiumos/third_party/cryptoc"
-)
-
-CROS_WORKON_LOCALNAME=(
-	"../platform/release-firmware/fpmcu-nami"
-	"tpm2"
-	"cryptoc"
-)
-
-CROS_WORKON_DESTDIR=(
-	"${S}/platform/ec"
-	"${S}/third_party/tpm2"
-	"${S}/third_party/cryptoc"
-)
-
-CROS_WORKON_EGIT_BRANCH=(
-	"firmware-fpmcu-dartmonkey-release"
-	"master"
-	"master"
-)
-
-inherit cros-workon cros-ec-release
-
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md"
-LICENSE="BSD-Google"
-KEYWORDS="*"
diff --git a/sys-firmware/chromeos-fpmcu-release-nami/chromeos-fpmcu-release-nami-0.0.1-r36.ebuild b/sys-firmware/chromeos-fpmcu-release-nami/chromeos-fpmcu-release-nami-0.0.1-r36.ebuild
new file mode 100644
index 0000000..3f89046
--- /dev/null
+++ b/sys-firmware/chromeos-fpmcu-release-nami/chromeos-fpmcu-release-nami-0.0.1-r36.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# Increment the "eclass bug workaround count" below when you change
+# "cros-ec-release.eclass" to work around http://crbug.com/220902.
+#
+# eclass bug workaround count: 3
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("8b63078abb67d76366cd3e01b077188bbcdb20a9" "37335af9c5488ed349271a8ba9ff209c940a5e2c" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
+CROS_WORKON_TREE=("c58fb6b1d5dcbcdf2a513e88558e47031f0ae606" "679fa8b14bd105ad9959a0f82eaa928d5b18890d" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
+FIRMWARE_EC_BOARD="nami_fp"
+FIRMWARE_EC_RELEASE_REPLACE_RO="yes"
+
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/ec"
+	"chromiumos/third_party/tpm2"
+	"chromiumos/third_party/cryptoc"
+)
+
+CROS_WORKON_LOCALNAME=(
+	"../platform/release-firmware/fpmcu-nami"
+	"tpm2"
+	"cryptoc"
+)
+
+CROS_WORKON_DESTDIR=(
+	"${S}/platform/ec"
+	"${S}/third_party/tpm2"
+	"${S}/third_party/cryptoc"
+)
+
+CROS_WORKON_EGIT_BRANCH=(
+	"firmware-fpmcu-dartmonkey-release"
+	"master"
+	"master"
+)
+
+inherit cros-workon cros-ec-release
+
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md"
+LICENSE="BSD-Google"
+KEYWORDS="*"
diff --git a/sys-firmware/chromeos-fpmcu-release-nocturne/chromeos-fpmcu-release-nocturne-0.0.1-r26.ebuild b/sys-firmware/chromeos-fpmcu-release-nocturne/chromeos-fpmcu-release-nocturne-0.0.1-r26.ebuild
deleted file mode 100644
index b466550..0000000
--- a/sys-firmware/chromeos-fpmcu-release-nocturne/chromeos-fpmcu-release-nocturne-0.0.1-r26.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# Increment the "eclass bug workaround count" below when you change
-# "cros-ec-release.eclass" to work around http://crbug.com/220902.
-#
-# eclass bug workaround count: 3
-
-EAPI=7
-
-CROS_WORKON_COMMIT=("abdb493fdaf8e9a0fb9b3117bc6d085faec961b2" "069cb5acb1d4a8a001404dfecdfab465de639ad1" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
-CROS_WORKON_TREE=("8153273126093f8370ddcbdc06a2a63e7832469b" "80bbeabd626668bcbd7f5dcb0b1f4dc1f13f8754" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
-FIRMWARE_EC_BOARD="nocturne_fp"
-FIRMWARE_EC_RELEASE_REPLACE_RO="yes"
-
-CROS_WORKON_PROJECT=(
-	"chromiumos/platform/ec"
-	"chromiumos/third_party/tpm2"
-	"chromiumos/third_party/cryptoc"
-)
-
-CROS_WORKON_LOCALNAME=(
-	"../platform/release-firmware/fpmcu-nocturne"
-	"tpm2"
-	"cryptoc"
-)
-
-CROS_WORKON_DESTDIR=(
-	"${S}/platform/ec"
-	"${S}/third_party/tpm2"
-	"${S}/third_party/cryptoc"
-)
-
-CROS_WORKON_EGIT_BRANCH=(
-	"firmware-fpmcu-dartmonkey-release"
-	"master"
-	"master"
-)
-
-inherit cros-workon cros-ec-release
-
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md"
-LICENSE="BSD-Google"
-KEYWORDS="*"
diff --git a/sys-firmware/chromeos-fpmcu-release-nocturne/chromeos-fpmcu-release-nocturne-0.0.1-r36.ebuild b/sys-firmware/chromeos-fpmcu-release-nocturne/chromeos-fpmcu-release-nocturne-0.0.1-r36.ebuild
new file mode 100644
index 0000000..cce54e6
--- /dev/null
+++ b/sys-firmware/chromeos-fpmcu-release-nocturne/chromeos-fpmcu-release-nocturne-0.0.1-r36.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+# Increment the "eclass bug workaround count" below when you change
+# "cros-ec-release.eclass" to work around http://crbug.com/220902.
+#
+# eclass bug workaround count: 3
+
+EAPI=7
+
+CROS_WORKON_COMMIT=("8b63078abb67d76366cd3e01b077188bbcdb20a9" "37335af9c5488ed349271a8ba9ff209c940a5e2c" "3830fffbc5c5205bb8fb1b9f366fe44559923592")
+CROS_WORKON_TREE=("c58fb6b1d5dcbcdf2a513e88558e47031f0ae606" "679fa8b14bd105ad9959a0f82eaa928d5b18890d" "f3d026c790bd3d7121bb96ed2a4932360d698a73")
+FIRMWARE_EC_BOARD="nocturne_fp"
+FIRMWARE_EC_RELEASE_REPLACE_RO="yes"
+
+CROS_WORKON_PROJECT=(
+	"chromiumos/platform/ec"
+	"chromiumos/third_party/tpm2"
+	"chromiumos/third_party/cryptoc"
+)
+
+CROS_WORKON_LOCALNAME=(
+	"../platform/release-firmware/fpmcu-nocturne"
+	"tpm2"
+	"cryptoc"
+)
+
+CROS_WORKON_DESTDIR=(
+	"${S}/platform/ec"
+	"${S}/third_party/tpm2"
+	"${S}/third_party/cryptoc"
+)
+
+CROS_WORKON_EGIT_BRANCH=(
+	"firmware-fpmcu-dartmonkey-release"
+	"master"
+	"master"
+)
+
+inherit cros-workon cros-ec-release
+
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/+/master/README.md"
+LICENSE="BSD-Google"
+KEYWORDS="*"
diff --git a/sys-firmware/fw-engprod-tools/fw-engprod-tools-0.0.1-r36.ebuild b/sys-firmware/fw-engprod-tools/fw-engprod-tools-0.0.1-r36.ebuild
deleted file mode 100644
index c9d9b1e..0000000
--- a/sys-firmware/fw-engprod-tools/fw-engprod-tools-0.0.1-r36.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-CROS_WORKON_COMMIT="7666ad6d68f381a9de17d682c01803ca2f1c985d"
-CROS_WORKON_TREE="4f7ec40608856b0e545c41a19603298affba3429"
-CROS_WORKON_PROJECT="chromiumos/platform/crostestutils"
-CROS_WORKON_LOCALNAME="../platform/crostestutils"
-
-CROS_GO_WORKSPACE="${S}/go"
-CROS_GO_BINARIES=(
-	"firmware/cmd/dut_info:/usr/bin/fw_dut_info"
-	"firmware/cmd/e2e_coverage_summarizer:/usr/bin/fw_e2e_coverage_summarizer"
-	"firmware/cmd/lab_triage_helper:/usr/bin/fw_lab_triage_helper"
-)
-
-inherit cros-go cros-workon
-
-DESCRIPTION="Tooling related to firmware release testing."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crostestutils/+/HEAD/go/src/firmware/"
-
-LICENSE="BSD-Google"
-SLOT="0/0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="
-	dev-go/crypto:=
-	dev-go/gapi-discovery:=
-	dev-go/gapi-option:="
-RDEPEND=""
diff --git a/sys-firmware/fw-engprod-tools/fw-engprod-tools-0.0.1-r58.ebuild b/sys-firmware/fw-engprod-tools/fw-engprod-tools-0.0.1-r58.ebuild
new file mode 100644
index 0000000..4f90924
--- /dev/null
+++ b/sys-firmware/fw-engprod-tools/fw-engprod-tools-0.0.1-r58.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+CROS_WORKON_COMMIT="fd9120658cb5253b7feffa8903742a367ed7571c"
+CROS_WORKON_TREE="b2f14f8919270f945f2fe0a397e2de5b19eecac8"
+CROS_WORKON_PROJECT="chromiumos/platform/crostestutils"
+CROS_WORKON_LOCALNAME="../platform/crostestutils"
+
+CROS_GO_WORKSPACE="${S}/go"
+CROS_GO_BINARIES=(
+	"firmware/cmd/dut_info:/usr/bin/fw_dut_info"
+	"firmware/cmd/e2e_coverage_summarizer:/usr/bin/fw_e2e_coverage_summarizer"
+	"firmware/cmd/lab_triage_helper:/usr/bin/fw_lab_triage_helper"
+)
+
+inherit cros-go cros-workon
+
+DESCRIPTION="Tooling related to firmware release testing."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/crostestutils/+/HEAD/go/src/firmware/"
+
+LICENSE="BSD-Google"
+SLOT="0/0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	dev-go/crypto:=
+	dev-go/gapi-discovery:=
+	dev-go/gapi-option:="
+RDEPEND=""
diff --git a/sys-firmware/parade-ps8705a3-firmware/Manifest b/sys-firmware/parade-ps8705a3-firmware/Manifest
index b0738e9..6b749b2 100644
--- a/sys-firmware/parade-ps8705a3-firmware/Manifest
+++ b/sys-firmware/parade-ps8705a3-firmware/Manifest
@@ -1,3 +1,5 @@
 DIST parade-ps8705a3-firmware-4.tar.xz 3236 BLAKE2B 84a19448a058266e96c19f753dbce1c75467f3eea0bdaf2a7994630f4babcf23eb6e7fa10270e70cd3a5406e4681028ce1b7a112b7d1feeee692c556cf4594fe SHA512 c0bc0c4dd506f95e4bf1d854fd41af98cb7eca74f362df9d05ecb0622501465a0a7d9967d4e71e00f34cf9b4e3eb5e6ba59c83e2984dd85d02fcc0947ef807e2
 DIST parade-ps8705a3-firmware-5.tar.xz 3256 BLAKE2B 04501a088587301bc3572a8778771c85c35955f405c93d0a5574907460ea49533e4fd98f508b17e1577eaad0cf84c6d288c708d126963e22e1baec7ca75b1c8c SHA512 ad125539cdcf44b2ee68c8a8288e85ee2a2f5c038abc173756f1b1fd04c6257b25e66f9b1e23a357911dcee28a5a255b6d990fb10160a1fba23b29c96c86df87
 DIST parade-ps8705a3-firmware-6.tar.xz 3256 BLAKE2B f593b72178ab2487b9188486cefcaa5e447f169067baae39f3824c9c145aa980854288093f617d934b1e1ff962d20fe2d6ab93370c4b8973c112540768a9fc19 SHA512 652e7a28be8ab79adab1b7e4cfe920cf705c0f5c6014b6422a212dbdd30e1021f69be97f4838155c18e19438a96c7ffcf01130efd15890167a352ecbfe583d03
+DIST parade-ps8705a3-firmware-8.tar.xz 3272 BLAKE2B 88e0a4d1b20c0602184ba5ca9bb6ef6813dd3267389400a3ec1dac4330cf0783a1a082c3bf60e5b819da754d5ebd557860d1aadb5c7b2a3f61b62a79fafe2ddf SHA512 eb6a27f887338857e765a3233af965cd70b650378db95ef2f5cedbff37a81734025216f5e32f2738dc8d14576258d6feb477a3b86de447550c49a29c4aabe42a
+DIST parade-ps8705a3-firmware-9.tar.xz 3272 BLAKE2B 5e16305183cc9d240548a2e16b383538eb66596f6384c3c05c33a4adac89fad5bee327cda752983bc55d29f9c0503d6d97a9d253bfb17b52425ca7a5faec3503 SHA512 5909d3207e7292320a74fc54b983c14d748a66c66f7d4245a06072a8ed45ba3ab769a84033037bdd337e0f6e8ff3c53fd4472468988d3f0616748c9cf467fca4
diff --git a/sys-firmware/parade-ps8705a3-firmware/parade-ps8705a3-firmware-4.ebuild b/sys-firmware/parade-ps8705a3-firmware/parade-ps8705a3-firmware-4.ebuild
index 717f16e..bf0e1d3 100644
--- a/sys-firmware/parade-ps8705a3-firmware/parade-ps8705a3-firmware-4.ebuild
+++ b/sys-firmware/parade-ps8705a3-firmware/parade-ps8705a3-firmware-4.ebuild
@@ -34,8 +34,8 @@
 	local bf=ps8705_a3.bin
 	local hf=ps8705_a3.hash
 
-	printf '0xa3 0x%02x' "${fw_rev_hex}" | xxd -r > "${hf}"
+	printf "\\xa3%b" "\\x${fw_rev_hex}" > "${hf}"
 	insinto /firmware/ps8705
-	newins "${hf}" "${hf}"
+	doins "${hf}"
 	newins "${P}/ps8705_a3_0x${fw_rev_hex}.bin" "${bf}"
 }
diff --git a/sys-firmware/parade-ps8705a3-firmware/parade-ps8705a3-firmware-8-r1.ebuild b/sys-firmware/parade-ps8705a3-firmware/parade-ps8705a3-firmware-8-r1.ebuild
new file mode 120000
index 0000000..74f6ef9
--- /dev/null
+++ b/sys-firmware/parade-ps8705a3-firmware/parade-ps8705a3-firmware-8-r1.ebuild
@@ -0,0 +1 @@
+parade-ps8705a3-firmware-4.ebuild
\ No newline at end of file
diff --git a/sys-firmware/parade-ps8705a3-firmware/parade-ps8705a3-firmware-9-r1.ebuild b/sys-firmware/parade-ps8705a3-firmware/parade-ps8705a3-firmware-9-r1.ebuild
new file mode 120000
index 0000000..74f6ef9
--- /dev/null
+++ b/sys-firmware/parade-ps8705a3-firmware/parade-ps8705a3-firmware-9-r1.ebuild
@@ -0,0 +1 @@
+parade-ps8705a3-firmware-4.ebuild
\ No newline at end of file
diff --git a/sys-firmware/parade-ps8805a2-firmware/Manifest b/sys-firmware/parade-ps8805a2-firmware/Manifest
index 1621285..c77b16b 100644
--- a/sys-firmware/parade-ps8805a2-firmware/Manifest
+++ b/sys-firmware/parade-ps8805a2-firmware/Manifest
@@ -4,5 +4,6 @@
 DIST parade-ps8805a2-firmware-15.tar.xz 2856 BLAKE2B 002c8e1e12a4d17aa1d4099cd3913187e4b738147cb6ddc0665c08df55bd76ed3868120abb21d2088a04fc6269111e8a1a796b07f14b20a63de2a65345101e0a SHA512 70469fe98ba3f777ec64c9b272e372aa1d7b267095a1554d3666d813151b56ebe656970000a4dff85079f9eb4840e02a00da555c6ddb6e21d98426e012279059
 DIST parade-ps8805a2-firmware-18.tar.xz 3140 BLAKE2B 36085bfa1f92369d59569afe8a5bd619e177b2a3c220a816d43a3073d2bea15165f0e850e1b9802d6322e396e45d3890ca68d388222df6d9e2496cf9eb28d889 SHA512 01f08ff4d9b7ecaafd741168e33e220cbbd432b9abd7aebca16b07100c86c7f8daa6cb8b42baaedc9af4f5a88aa882c71e0c61b22d15e429ffdf69034e931ed7
 DIST parade-ps8805a2-firmware-19.tar.xz 3248 BLAKE2B c4f102c8a84ccf42abce579f7197475138ccc73eaf50242e0a839a4990dc6c50686b62a82da63d66d4b25e82246f8324725133424ab13503650d07a626e2a83e SHA512 364356a2c310055f92a0879f07fc15c262c2f19899310756b284fc9cf171e99ee7ea24f63a3a3edb143c295a9617e1e35533bfe983d9a0b63d91bab7928c8a88
+DIST parade-ps8805a2-firmware-21.tar.xz 3396 BLAKE2B 4221587662d429d6241c8185ef2d20fae5c31d2e087191c46b2111bce3c57c65bcda9a0199ddcd6cd3b18abdc238747578267c4c41f29a6bc86ceec46871f975 SHA512 bf192c99e84aae5692d2058d182c9adfb390fb5596646ef7a7fbebf24ef157b316064b1879ee29734fb09f7333ef7bb8a485ebda1c25c5963bdb9a0b8d71a2b5
 DIST parade-ps8805a2-firmware-8.tar.xz 2728 BLAKE2B 0dd1e9f6b72946b8edc5494700e17e3e4feb12e040475d58a637356b95d1056bf04b8444fe56c42ea98294fd85603cc0fcfa17bad86daadd431ca5bbda5e7609 SHA512 bfd2a4a207df0b6cb9d5a1be3bccc40dd9ef79be029c8749d3131bbf2ae11c19c5eae1138a28f51076af87fc1be8e9a95fb779e98d072b81fa8d02e5bad4d112
 DIST parade-ps8805a2-firmware-9.tar.xz 2784 BLAKE2B 56354ccfab52ba5b940e700cd6c02573cd8af2f2eea8a39f4ea07605b6c18524205864b7249815fad59f96f5f7ddb2e7d7d8df57ef786900935331ec2628e3e9 SHA512 0a9135ba88f195426c16cc9cdfac0b15a716d387f83046d5e190110ac80d1a504b70cb5460626e6ed19e8242079e728e58409bad8108f231ece38bb3cd1da03c
diff --git a/sys-firmware/parade-ps8805a2-firmware/parade-ps8805a2-firmware-21-r1.ebuild b/sys-firmware/parade-ps8805a2-firmware/parade-ps8805a2-firmware-21-r1.ebuild
new file mode 120000
index 0000000..2071019
--- /dev/null
+++ b/sys-firmware/parade-ps8805a2-firmware/parade-ps8805a2-firmware-21-r1.ebuild
@@ -0,0 +1 @@
+parade-ps8805a2-firmware-8.ebuild
\ No newline at end of file
diff --git a/sys-firmware/parade-ps8815a1-firmware/Manifest b/sys-firmware/parade-ps8815a1-firmware/Manifest
index f508f20..7e66c01 100644
--- a/sys-firmware/parade-ps8815a1-firmware/Manifest
+++ b/sys-firmware/parade-ps8815a1-firmware/Manifest
@@ -3,5 +3,6 @@
 DIST parade-ps8815a1-firmware-13.tar.xz 3876 BLAKE2B 2e33e3ba87629b0a97bad318127e4ce2747530ead5d074def8a8310f1c94bd2e2d50ace33bd670d13ba721080b1fc2120d31f9d460528e4b8d3e2363c500e7e7 SHA512 2308ad411ab08aa68236e5c577222efd416dceda8cef6501d943515f4e1bef67c374943cd6062dfa89d4a4fb50e5d4cf7f50daaf5e3f21cccb99f7e59fae6242
 DIST parade-ps8815a1-firmware-14.tar.xz 3884 BLAKE2B 2106ca11fc2f9981be54ff50918227de936e4e60cb38ac76740902a946d1e43c5a55a1a626ccf737931d3e2c6a5fc8d1fb30da856589316035289c9197a91084 SHA512 1652e3911e11b77602546f28e66f3a003df70f802fa2d0a7cd4ea2802c0029c57622b01788f95fca3935ab0cc6b706aa4cb4d81e7b5d9303f16d4866c769118e
 DIST parade-ps8815a1-firmware-16.tar.xz 3872 BLAKE2B fee0e440c787f51927f111e8e502b0fe04ec097cd70f59af65ab5459cdfc325cf4c595760f2234f86e99bdc1dc6a87761d748e3bcc96b7de65b54c3bc9a86c4b SHA512 b68e81b3b9ace68b29a5ccf15b1a6350cd8f0fd8a4b2f82ed639b4cb34224816cdfa27d9cfbdbfe858b1003592f6b284cbcbf26e5d838e170ab73400d6ffd0dc
+DIST parade-ps8815a1-firmware-18.tar.xz 3888 BLAKE2B b8f3d6a9bf47932fdf50bc5fbe684d93de49c49763c71644193824f1f479d2b5242829556c4418670704af02a6fbba935beda5e5d44e19d6dca59d47b93d85d3 SHA512 bb7b309d48f7d705793eb0a99c591850d66e28841e11ff23e35cba39353e5bf5ae4c74267420cb15a9d42b6c392bbe2af2e93d7bd985226c2a27511d67f8f4d0
 DIST parade-ps8815a1-firmware-6.tar.xz 3800 BLAKE2B 64462069fd3462570490ed63ed064e33dc4029f0de2f2a1b6b8895b6d2dc3ca66f7bd6faa532861c6472549729364951694ee98ca57952eb2c8def5e42cf27e6 SHA512 e95d608ccf1185d66dd8b4638de837e6b89c00120a5100e32b79187d8972a96a34a74e1e4ba44b104215a5b66d5e7d5e17ceab12a81657bcf2bda5f520bfc72b
 DIST parade-ps8815a1-firmware-7.tar.xz 3816 BLAKE2B c9f805da0d1d38d2507ec63c50661203c1a1184819beffb11aae476f8d320d171af0a190c85a5a0e714576fddf2a33c0d2e42520ef8705d79f12c2b2e7be7fc2 SHA512 504c210892f91c0ab62eae13cde432eb28deef0c871bb816f0872388e5a54d72f862b70151ed49dbfa957cb5a9dee984a05f29a7224dbbeebc1686b9a7cceea0
diff --git a/sys-firmware/parade-ps8815a1-firmware/parade-ps8815a1-firmware-18-r1.ebuild b/sys-firmware/parade-ps8815a1-firmware/parade-ps8815a1-firmware-18-r1.ebuild
new file mode 120000
index 0000000..8bac4d7
--- /dev/null
+++ b/sys-firmware/parade-ps8815a1-firmware/parade-ps8815a1-firmware-18-r1.ebuild
@@ -0,0 +1 @@
+parade-ps8815a1-firmware-6.ebuild
\ No newline at end of file
diff --git a/sys-firmware/parade-ps8815a2-firmware/Manifest b/sys-firmware/parade-ps8815a2-firmware/Manifest
new file mode 100644
index 0000000..f7b4f74
--- /dev/null
+++ b/sys-firmware/parade-ps8815a2-firmware/Manifest
@@ -0,0 +1 @@
+DIST parade-ps8815a2-firmware-19.tar.xz 3976 BLAKE2B 30736559d6bd3790d5c8d6f62d1fa8cf3d6377c751959b3de2fabde202179e0e76f14c9e368659f96f6e319c758d2efd306b304cdbe5696bf09d0d66caba687f SHA512 303aa167fd160428f37c4219ad5f8434353a76af962ffec3673a61d367b4dc92e28983dd0bac4d3cd52dfb0d323fae992141673be7caba869c7058258cc9ec8a
diff --git a/sys-firmware/parade-ps8815a2-firmware/OWNERS b/sys-firmware/parade-ps8815a2-firmware/OWNERS
new file mode 100644
index 0000000..c2045c4
--- /dev/null
+++ b/sys-firmware/parade-ps8815a2-firmware/OWNERS
@@ -0,0 +1 @@
+include ../OWNERS
diff --git a/sys-firmware/parade-ps8815a2-firmware/parade-ps8815a2-firmware-19.ebuild b/sys-firmware/parade-ps8815a2-firmware/parade-ps8815a2-firmware-19.ebuild
new file mode 100644
index 0000000..b56b2fe
--- /dev/null
+++ b/sys-firmware/parade-ps8815a2-firmware/parade-ps8815a2-firmware-19.ebuild
@@ -0,0 +1,56 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="PS8815-A2 Firmware Binary"
+SRC_URI="gs://chromeos-localmirror/distfiles/${P}.tar.xz"
+
+LICENSE="Google-Partners-Website"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+S="${WORKDIR}"
+
+# We must ensure that the older private package is not installed
+DEPEND="
+	!sys-boot/chromeos-firmware-ps8815
+"
+
+RDEPEND="${DEPEND}"
+
+# Here are the steps to uprev the PS8815 firmware.
+#
+# Parade provides two firmware file types:
+#     Combined bootloader+application that is programmed into bank 3
+#     Application only that is programmed into bank 2
+#
+# Depthcharge only supports programming the combined image at this time.
+# See b/176602433 for details.
+#
+# 1) Unzip the .zip file emailed from the vendor.
+# 2) Convert from hex to bin.
+#    ex: objcopy -I ihex --output-target=binary PS8815_FW_0x13_20210208_A2_combine.hex \
+#          parade-ps8815a2-firmware-19/ps8815_a2_0x13.bin
+# 3) Tarball it up using XZ, including the right directory.
+#    ex: tar -cJf parade-ps8815a2-firmware-19.tar.xz \
+#          parade-ps8815a2-firmware-19/ps8815_a2_0x13.bin
+# 4) Then upload it at https://pantheon.corp.google.com/storage/browser/chromeos-localmirror/distfiles
+# 5) On the uploaded file, click the three-dot-menu, "Edit
+#    Permissions", click on ADD ENTRY, then set:
+#      Entity: "Public"
+#      Name:   "allUsers"
+#      Access: "Reader"
+# 6) Finally run 'ebuild parade-ps8815a2-firmware-19.ebuild manifest'
+
+src_install() {
+	local fw_rev_hex=$(printf '%02x' "${PV}")
+	local bf=ps8815_a2.bin
+	local hf=ps8815_a2.hash
+
+	printf "\\xa2\\x${fw_rev_hex}" > "${hf}"
+	insinto /firmware/ps8815
+	newins "${hf}" "${hf}"
+	newins "${P}/ps8815_a2_0x${fw_rev_hex}.bin" "${bf}"
+}
diff --git a/sys-firmware/servo-firmware/Manifest b/sys-firmware/servo-firmware/Manifest
index a73c35d..dea9ab7 100644
--- a/sys-firmware/servo-firmware/Manifest
+++ b/sys-firmware/servo-firmware/Manifest
@@ -1,5 +1,8 @@
 DIST c2d2_v2.4.35-f1113c92b.tar.gz 66757 BLAKE2B bc382554ae413f62f6e2217f154adf3b7a8e881e5292d9d3d4f7e4de1f4e2744460cbaeadfb5d4b6a386b8935146560b51aea73f1a810728a81bfde2db26fe33 SHA512 4990d737299ad95d7232f320d5dc8e59f50d963a3f4c5fb3cbdfd8a4a6e62543d02ab9de00b65a0ab75c633e3bf2ad15711796269868f92407de3bb818b04829
 DIST servo_micro_v2.4.35-f1113c92b.tar.gz 58360 BLAKE2B 331bb81fd79cf5cf3be6b0b7aa417b23d977bc6e5c64a3b7fb72cf8b77d8e1f4ccb3909e9b980c615f26af5733cc9d82b47b57eb42de5a9de663b4a3ca89a895 SHA512 38cf32c70eff3d1ae34e1a8f3af8df64fc7501653985e58bb25f95a1cc265a3c652fb9accebaa763f62870e3852b29c864e10b0175405453e505124e20c58763
-DIST servo_v4_v2.4.35-f1113c92b.tar.gz 87098 BLAKE2B eb026de305cc894ae3555edbd3936bca1e27b4e52a3600047dde9f9733942a7f880c64e4fd94352a8987dde19c197dca6d35fa76e0b2b7d82c0577f992b8d058 SHA512 62a7bf03258b0cafde0d551410c4ebb73a9da520984f9f43683833eb4c99539824b78b5517dd860f95aa2b25839c19bed9661634a9666e1ebf062942c305202b
-DIST servo_v4p1_v2.0.5159-529612865.tar.xz 50568 BLAKE2B 025fd9ea1ae4742799745fae060937ecd5c059fdff5d9340e434c18f2e5b9ca95ee5a69e0384dcf6ada4445756e25a27906707658414be2f2178d82dd9b1a7fb SHA512 13950b4a10bde242107a933c36facd88be1dd7238692811e74634820ac574942a7c56c4b8bbc53505328cddd2b4bb8bec244b2ef76e35da43908e07823abb757
+DIST servo_micro_v2.4.57-ce329f64f.tar.xz 27308 BLAKE2B 4a9e3b153d9b64dc2fc6a700596db236589e31f1d36fe15ff2e72947a6b61c739ebb45de077d013969f3291e1949333a543685a74632a6824a902e1cce902031 SHA512 26aea64eddad26a40d7ad56326bfeeef16734bf9b22836076ee95f9307d734ec3a7206ebb30b1fb21fb00bf8f32d203aeae1d059f4253ed0e8c36c30662f4645
+DIST servo_v4_v2.4.57-ce329f64f.tar.xz 40552 BLAKE2B fa054db061da73b22701ddced263b1c0ff8f427d89792ebb747ed59505fc7c049921737e8e8c20c02af5bfafbfde8f12129fb0bfe9d5c267a6fefaf53c791dca SHA512 e324e3e5f2d15e769cb6a04ea7d9ccb1bbd647c0049085a55c2a728311519ac20c7d13f70d32dc53749598ab423072e6804998bdc97e541d25aba74d56361792
+DIST servo_v4_v2.4.58-c37246f9c.tar.xz 40536 BLAKE2B 168126e7aa71c3731b35c0293dc0365e92ef234e6e78727b8d0996228ce3921bf76d602acd194dc35bfa61ccef6d103865e14a4b80855e51f6ceeedc6cefc009 SHA512 2b3abe74f3d32fc95a12ccbbe1b4c1286e304744c75b3cbd89b8b2f99431a9006cfb5889c5baa8467a39100cb1d53cff148961cb13e1b1fc17ef84abc19a5b73
+DIST servo_v4p1_v2.0.7721-8af602eee.tar.xz 55100 BLAKE2B 9480b2ef63ee810e7f3df13add046ce887dfeb137293dd64ad4a841433e6543ba33ded1fad946eadee9bafdb32ba4b46eb8d1ffc9daf18e64f6aba84585e82c5 SHA512 d951913e8a4eb5fbb5d3d5fe477050c6cc9daa2ff1a5028c88ef025dfa260f9f34a0947d793b1e71ec59685e5a612b6f31b646bbeca1152fa213af2080efa0e3
+DIST servo_v4p1_v2.0.8584+1a7e7e64c.tar.xz 55344 BLAKE2B 49b2e10377cc4ad0865290249975d830bd72603cc9e354c099fe36efab2408ad29fa579cc7c0b34eab1278bfb245ad66a9337b43b8123765bf5ec954e18abb26 SHA512 93ba435b9adb9c556576870dbfeb7dc184e35155df04707030bc8edcaa93b6a5ed002fff5504b99a9a688f694456ad22a68c9c7be567d8b14c9fec5d899347fd
 DIST sweetberry_v2.3.7-096c7ee84.tar.gz 66715 BLAKE2B f2cc6a8d616c2d81920c18b44afc077e9f5bdce5fab9eae8564f34c14beeed56e71aaa745353b33161a13776291072d5426c8636ab9105863b60b574849aa9c2 SHA512 7c74e3f385536369f82eec37cc81941269e76c014e662b77d18fbc45107c348b4b6ebe15311517cfaf5824f88d4228448c832695e5692b49a64c87174284e8f0
diff --git a/sys-firmware/servo-firmware/servo-firmware-0.0.1-r26.ebuild b/sys-firmware/servo-firmware/servo-firmware-0.0.1-r33.ebuild
similarity index 100%
rename from sys-firmware/servo-firmware/servo-firmware-0.0.1-r26.ebuild
rename to sys-firmware/servo-firmware/servo-firmware-0.0.1-r33.ebuild
diff --git a/sys-firmware/servo-firmware/servo-firmware-0.0.1.ebuild b/sys-firmware/servo-firmware/servo-firmware-0.0.1.ebuild
index 0f4424c..54c3b35 100644
--- a/sys-firmware/servo-firmware/servo-firmware-0.0.1.ebuild
+++ b/sys-firmware/servo-firmware/servo-firmware-0.0.1.ebuild
@@ -6,20 +6,30 @@
 DESCRIPTION="Firmware for tools based on Chromium OS EC"
 HOMEPAGE="https://www.chromium.org/chromium-os/ec-development"
 
+# stable channel firmware
 C2D2_NAME="c2d2_v2.4.35-f1113c92b"                # servo-firmware-R81-12768.40.0
-SERVO_MICRO_NAME="servo_micro_v2.4.35-f1113c92b"  # servo-firmware-R81-12768.40.0
-SERVO_V4_NAME="servo_v4_v2.4.35-f1113c92b"        # servo-firmware-R81-12768.40.0
-SERVO_V4P1_NAME="servo_v4p1_v2.0.5159-529612865"  # Local builds are temporary b/153464312
+SERVO_MICRO_NAME="servo_micro_v2.4.57-ce329f64f"  # servo-firmware-R81-12768.71.0
+SERVO_V4_NAME="servo_v4_v2.4.58-c37246f9c"       # servo-firmware-R81-12768.74.0
+SERVO_V4P1_NAME="servo_v4p1_v2.0.8584+1a7e7e64c"  # Local builds are temporary b/153464312
 SWEETBERRY_NAME="sweetberry_v2.3.7-096c7ee84"     # servo-firmware-R70-11011.14.0
+
+# Prev channel firmware
+SERVO_MICRO_NAME_PREV="servo_micro_v2.4.35-f1113c92b"  # servo-firmware-R81-12768.40.0
+SERVO_V4_NAME_PREV="servo_v4_v2.4.57-ce329f64f"        # servo-firmware-R81-12768.71.0
+SERVO_V4P1_NAME_PREV="servo_v4p1_v2.0.7721-8af602eee"  # Local builds are temporary b/153464312
+
 UPDATER_PATH="/usr/share/servo_updater/firmware"
 
 MIRROR_PATH="gs://chromeos-localmirror/distfiles/"
 
 SRC_URI="
 	${MIRROR_PATH}/${C2D2_NAME}.tar.gz
-	${MIRROR_PATH}/${SERVO_MICRO_NAME}.tar.gz
-	${MIRROR_PATH}/${SERVO_V4_NAME}.tar.gz
+	${MIRROR_PATH}/${SERVO_MICRO_NAME}.tar.xz
+	${MIRROR_PATH}/${SERVO_MICRO_NAME_PREV}.tar.gz
+	${MIRROR_PATH}/${SERVO_V4_NAME}.tar.xz
+	${MIRROR_PATH}/${SERVO_V4_NAME_PREV}.tar.xz
 	${MIRROR_PATH}/${SERVO_V4P1_NAME}.tar.xz
+	${MIRROR_PATH}/${SERVO_V4P1_NAME_PREV}.tar.xz
 	${MIRROR_PATH}/${SWEETBERRY_NAME}.tar.gz
 	"
 
@@ -37,17 +47,34 @@
 	insinto "${UPDATER_PATH}"
 
 	doins "${C2D2_NAME}.bin"
-	dosym "${C2D2_NAME}.bin" "${UPDATER_PATH}/c2d2.bin"
+	dosym "${C2D2_NAME}.bin" "${UPDATER_PATH}/c2d2.alpha.bin"
+	dosym "${C2D2_NAME}.bin" "${UPDATER_PATH}/c2d2.stable.bin"
+	dosym "${C2D2_NAME}.bin" "${UPDATER_PATH}/c2d2.dev.bin"
+	dosym "${C2D2_NAME}.bin" "${UPDATER_PATH}/c2d2.prev.bin"
 
 	doins "${SERVO_MICRO_NAME}.bin"
-	dosym "${SERVO_MICRO_NAME}.bin" "${UPDATER_PATH}/servo_micro.bin"
+	doins "${SERVO_MICRO_NAME_PREV}.bin"
+	dosym "${SERVO_MICRO_NAME}.bin" "${UPDATER_PATH}/servo_micro.alpha.bin"
+	dosym "${SERVO_MICRO_NAME}.bin" "${UPDATER_PATH}/servo_micro.stable.bin"
+	dosym "${SERVO_MICRO_NAME}.bin" "${UPDATER_PATH}/servo_micro.dev.bin"
+	dosym "${SERVO_MICRO_NAME_PREV}.bin" "${UPDATER_PATH}/servo_micro.prev.bin"
 
 	doins "${SERVO_V4_NAME}.bin"
-	dosym "${SERVO_V4_NAME}.bin" "${UPDATER_PATH}/servo_v4.bin"
+	doins "${SERVO_V4_NAME_PREV}.bin"
+	dosym "${SERVO_V4_NAME}.bin" "${UPDATER_PATH}/servo_v4.alpha.bin"
+	dosym "${SERVO_V4_NAME}.bin" "${UPDATER_PATH}/servo_v4.stable.bin"
+	dosym "${SERVO_V4_NAME}.bin" "${UPDATER_PATH}/servo_v4.dev.bin"
+	dosym "${SERVO_V4_NAME_PREV}.bin" "${UPDATER_PATH}/servo_v4.prev.bin"
 
 	doins "${SERVO_V4P1_NAME}.bin"
-	dosym "${SERVO_V4P1_NAME}.bin" "${UPDATER_PATH}/servo_v4p1.bin"
+	doins "${SERVO_V4P1_NAME_PREV}.bin"
+	dosym "${SERVO_V4P1_NAME}.bin" "${UPDATER_PATH}/servo_v4p1.alpha.bin"
+	dosym "${SERVO_V4P1_NAME}.bin" "${UPDATER_PATH}/servo_v4p1.stable.bin"
+	dosym "${SERVO_V4P1_NAME}.bin" "${UPDATER_PATH}/servo_v4p1.dev.bin"
+	dosym "${SERVO_V4P1_NAME_PREV}.bin" "${UPDATER_PATH}/servo_v4p1.prev.bin"
 
 	doins "${SWEETBERRY_NAME}.bin"
-	dosym "${SWEETBERRY_NAME}.bin" "${UPDATER_PATH}/sweetberry.bin"
+	dosym "${SWEETBERRY_NAME}.bin" "${UPDATER_PATH}/sweetberry.alpha.bin"
+	dosym "${SWEETBERRY_NAME}.bin" "${UPDATER_PATH}/sweetberry.stable.bin"
+	dosym "${SWEETBERRY_NAME}.bin" "${UPDATER_PATH}/sweetberry.dev.bin"
 }
diff --git a/sys-firmware/thinkpad-usbc-gen2-dock/Manifest b/sys-firmware/thinkpad-usbc-gen2-dock/Manifest
index c587c6d..91bcc71 100644
--- a/sys-firmware/thinkpad-usbc-gen2-dock/Manifest
+++ b/sys-firmware/thinkpad-usbc-gen2-dock/Manifest
@@ -1,5 +1,5 @@
-DIST 06998fa5a9590b7ed0f90ad679ba48a27feba097095ae084e830e5106767d29a-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab 131417 BLAKE2B 5380e7d700c8e7b7c66470169495ae4bf871a43cacee635f1539a5383a96b0be8a3efdc32c57767650751122e415c6fdef851d90ad1e0c9e204d2ad6c1eba3aa SHA512 1eef86863c4cabcff733492d1cbbbdc346cc4a8a2f1342773a0e791a007558385a7acbfe4824c884171aa7fd10506c9993ac4114a61ea732fd2f242fdfaa070d
-DIST a5c8f0883f6089b780a25490b53eb8d5d6ba8a1d109ce44f18bd2b2ef3ffe315-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab 13345 BLAKE2B 930b12bf3f6f37261bfd99d1cc45e973aa0aa5ca7217d271b368db40a03c3b50c071d39e9c29cbcdd7a4bf29a944b5978c4b9f6ef0d04750d0717740bfd1fe42 SHA512 cf0629a10d1d326f725450ada67a853167c57e57507a825496f0df68e1c4eaf3b644ff42ff878305553acd6d09c849b328e037efd39fa158f3db288f9e35c427
-DIST d619a3c051e33df53094e274fbb672bdfa50d19d950ec337de36a68fe682fe18-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab 530496 BLAKE2B 3b3b608af855a9d117ec66b2e5cb42069d14e70ca3ab204afb60ca6a494d65c7909859a34f7d1fbd97bc65bb22f206774efaf42952ad556cc2cbf52c186448bf SHA512 fdcc1fbb7f5bf11d795cc4b9dd1361b2ee52d1e5c9d8e44d87123520e0a52ee7f9b5b88bfa67226345c2bad0fb2c529f894ffe3fb8f424866e5a79740372bd29
-DIST d72204e110613bfacd65ca8e8783bf7f07272f4dfdb785cf1bd1c94b83ac5d33-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab 67810 BLAKE2B c3d51b51b837e5a6a3e81f73b6f935221e1066401facebcac1c0ab09aa8c6034bbed0ef468ebd1a258daf51517a852f30ea6b35af1d294ef11f9adb268befe0b SHA512 c86a06bb137992feb115bcc7c861eced84b42c0910e6106ba3760474466f98947d474a4c8fb171f6160e9a43880765f03e228e90120aa7be9bac1d9de342d188
-DIST fbed8f8eee1e125a47a627724065e36ef8d7d0342c8d03fdba60616c4de3554e-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab 67801 BLAKE2B 33b7f0fb85b2be99a355604a036164159e66de0bc84342a2efbad5a4e15f18eeeaecf1ec2426f0c9f86f057fc1d905539ee66a2c646710494c2e59061f0b348e SHA512 bb1bfb7a71d798216a176efe3bc96d6b3541f1b2bf2d0619cf127e9afb69a764e5b82d67c11cffbf1c2dc4086a2230f639a9465336589625f233e2e467073cdd
+DIST 29835d73b07590db964d796e508058e512c55ff0ca2a75b9c8ac2ed1fe305de5-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab 132780 BLAKE2B 0f183851efd32709f229ba400ddf669e3d838f73269c2e79cb59243e18d01d144ec1222f8657fb0907f0364959f24b12ba1165c55b3460a402d0648374eedca9 SHA512 1a4d3980255b69bffcc4d41b40bd8a3cc0e42d60515a11258dd8a64248ceda6ee6d41437c251f08c733fb43d9d6b89ee0fd94a97d575ea03023b8402c2a42a20
+DIST 2e0bf8aaf9c63ca11cfe3444d032277c21ec0d678e5963123a8b33e5dcd37d99-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab 14657 BLAKE2B cb2ded83d9f7e949c674646d0719d2c6973b48198df920e56c32dbb272973cb49e6a085933d7bed141e81abb1a3e9e013f6d62275d2ad76781f43431c33ce4fb SHA512 4d32fd55c735772107297d6bba7375beae24be9f482741ad08ae12a025b195745a7d81aed0a00c320578559dfb4b05d6f71227ae7c408d53f5dbc8619ef7b83b
+DIST 9a13f9fefa59ae42c06e9861dc20a0e53e35d471c6a1c05d6426a011b0fada30-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab 69145 BLAKE2B 3c85efc25f164ae25b720e8b67d576ea72c817aea972309051758b5a8656726c307699f78c4aaeb46cef3eb0fccd4f29262a69498664f8a6cedc255552627a5a SHA512 1296fead4198b5dd61e711d9d30ab64d9154e6696e58233e36907c0b36d3010155a59be0b83164cf6292608883acc40c9fc65cfb0a5d06027ae1505a866389fe
+DIST ac37f23af002e91df11094b08fd2e076cf9c8cb4f08930be8eefe35850097a60-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab 531793 BLAKE2B 3b06635367ae8140f19430c5692a1568274e1e2f523767904b8a2cf84bdfacf67bbde819b33c825990c6c93179ca4981e14b959d783b4d8454f2b65fd2424df7 SHA512 d7bfd424cd3723ddeeba72360142801157c00c3026a1cbafaab8db316f158d35883faeb097ea5b63e0616731f1cea434f44221c541277a7cb0c02207f49da06f
+DIST f241ce8c26d83546d5bfd1d67b70b9324f32ea4790acebb2a5e7d5a071eaaa85-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab 69123 BLAKE2B 9eee568b42d3e9d530525e538e1fd38741c7f36a08e0b30861ef08937dd2f5ab8ea17fa132eabe9f2f26b759c8c699ccb666b8d0565c28127ed2abb35aa0335f SHA512 b3aafb5da66fa166d5e636baecc89d91753d7ef2af40403aee841d1ef64d14a4c475f63c641c57a607385b9ec25065563ebaebe67a778a19f2d9c0c4a3f747e0
diff --git a/sys-firmware/thinkpad-usbc-gen2-dock/files/91-fwupd.rules b/sys-firmware/thinkpad-usbc-gen2-dock/files/91-fwupdtool-thinkpad-usbc-gen2-dock.rules
similarity index 100%
rename from sys-firmware/thinkpad-usbc-gen2-dock/files/91-fwupd.rules
rename to sys-firmware/thinkpad-usbc-gen2-dock/files/91-fwupdtool-thinkpad-usbc-gen2-dock.rules
diff --git a/sys-firmware/thinkpad-usbc-gen2-dock/thinkpad-usbc-gen2-dock-0.0.1-r1.ebuild b/sys-firmware/thinkpad-usbc-gen2-dock/thinkpad-usbc-gen2-dock-0.0.1-r1.ebuild
deleted file mode 100644
index 2f26ce8..0000000
--- a/sys-firmware/thinkpad-usbc-gen2-dock/thinkpad-usbc-gen2-dock-0.0.1-r1.ebuild
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
-# the canonical empty project.
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="../platform/empty-project"
-
-inherit udev cros-workon
-
-DESCRIPTION="Installs firmware update files used by fwupd."
-HOMEPAGE="https://fwupd.org/downloads"
-
-KEYWORDS="*"
-
-FILENAMES=(
-	"06998fa5a9590b7ed0f90ad679ba48a27feba097095ae084e830e5106767d29a-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab"
-	"d619a3c051e33df53094e274fbb672bdfa50d19d950ec337de36a68fe682fe18-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab"
-	"a5c8f0883f6089b780a25490b53eb8d5d6ba8a1d109ce44f18bd2b2ef3ffe315-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab"
-	"fbed8f8eee1e125a47a627724065e36ef8d7d0342c8d03fdba60616c4de3554e-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab"
-	"d72204e110613bfacd65ca8e8783bf7f07272f4dfdb785cf1bd1c94b83ac5d33-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab"
-)
-SRC_URI="${FILENAMES[*]/#/${HOMEPAGE}/}"
-LICENSE="MIT"
-
-DEPEND=""
-RDEPEND="sys-apps/fwupd"
-
-S="${WORKDIR}"
-
-FIRMWARE_INSTALL_ROOT="/usr/share/fwupd/remotes.d/vendor/firmware"
-
-dounpack_license() {
-	local file
-	for file in "$@"; do
-		(
-		cabextract -F LICENSE.txt "${DISTDIR}"/"${file}" ||
-			mv LICENSE.txt license."${file}".txt
-		)
-	done
-}
-
-
-doins_firmware() {
-	local file
-	for file in "$@"; do
-		(
-		insinto "${FIRMWARE_INSTALL_ROOT}"
-		doins "${DISTDIR}"/"${file}"
-		)
-	done
-}
-
-src_unpack() {
-	dounpack_license "${FILENAMES[@]}"
-}
-
-src_install() {
-	doins_firmware "${FILENAMES[@]}"
-
-	# Install udev rules to trigger updates on hotplug.
-	udev_dorules "${FILESDIR}"/91-fwupd.rules
-}
diff --git a/sys-firmware/thinkpad-usbc-gen2-dock/thinkpad-usbc-gen2-dock-0.0.1-r4.ebuild b/sys-firmware/thinkpad-usbc-gen2-dock/thinkpad-usbc-gen2-dock-0.0.1-r4.ebuild
new file mode 100644
index 0000000..deaaffd
--- /dev/null
+++ b/sys-firmware/thinkpad-usbc-gen2-dock/thinkpad-usbc-gen2-dock-0.0.1-r4.ebuild
@@ -0,0 +1,31 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-workon cros-fwupd
+
+DESCRIPTION="Installs firmware update files used by fwupd."
+HOMEPAGE="https://fwupd.org/downloads"
+
+KEYWORDS="*"
+
+FILENAMES=(
+	"29835d73b07590db964d796e508058e512c55ff0ca2a75b9c8ac2ed1fe305de5-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab"
+	"ac37f23af002e91df11094b08fd2e076cf9c8cb4f08930be8eefe35850097a60-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab"
+	"2e0bf8aaf9c63ca11cfe3444d032277c21ec0d678e5963123a8b33e5dcd37d99-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab"
+	"9a13f9fefa59ae42c06e9861dc20a0e53e35d471c6a1c05d6426a011b0fada30-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab"
+	"f241ce8c26d83546d5bfd1d67b70b9324f32ea4790acebb2a5e7d5a071eaaa85-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab"
+)
+SRC_URI="${FILENAMES[*]/#/${CROS_FWUPD_URL}/}"
+LICENSE="LVFS-Vendor-Agreement-v1"
+
+DEPEND=""
+RDEPEND="sys-apps/fwupd"
diff --git a/sys-firmware/thinkpad-usbc-gen2-dock/thinkpad-usbc-gen2-dock-9999.ebuild b/sys-firmware/thinkpad-usbc-gen2-dock/thinkpad-usbc-gen2-dock-9999.ebuild
index 40a7360..e7a286d1 100644
--- a/sys-firmware/thinkpad-usbc-gen2-dock/thinkpad-usbc-gen2-dock-9999.ebuild
+++ b/sys-firmware/thinkpad-usbc-gen2-dock/thinkpad-usbc-gen2-dock-9999.ebuild
@@ -8,7 +8,7 @@
 CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
 CROS_WORKON_LOCALNAME="../platform/empty-project"
 
-inherit udev cros-workon
+inherit cros-workon cros-fwupd
 
 DESCRIPTION="Installs firmware update files used by fwupd."
 HOMEPAGE="https://fwupd.org/downloads"
@@ -16,50 +16,14 @@
 KEYWORDS="~*"
 
 FILENAMES=(
-	"06998fa5a9590b7ed0f90ad679ba48a27feba097095ae084e830e5106767d29a-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab"
-	"d619a3c051e33df53094e274fbb672bdfa50d19d950ec337de36a68fe682fe18-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab"
-	"a5c8f0883f6089b780a25490b53eb8d5d6ba8a1d109ce44f18bd2b2ef3ffe315-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab"
-	"fbed8f8eee1e125a47a627724065e36ef8d7d0342c8d03fdba60616c4de3554e-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab"
-	"d72204e110613bfacd65ca8e8783bf7f07272f4dfdb785cf1bd1c94b83ac5d33-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab"
+	"29835d73b07590db964d796e508058e512c55ff0ca2a75b9c8ac2ed1fe305de5-Lenovo-ThinkPad-USBCGen2Dock-PDFirmware-0.0.34.cab"
+	"ac37f23af002e91df11094b08fd2e076cf9c8cb4f08930be8eefe35850097a60-Lenovo-ThinkPad-USBCGen2Dock-DP-Firmware-5.05.00.cab"
+	"2e0bf8aaf9c63ca11cfe3444d032277c21ec0d678e5963123a8b33e5dcd37d99-Lenovo-ThinkPad-USBCGen2Dock-Firmware-49-0E-14.cab"
+	"9a13f9fefa59ae42c06e9861dc20a0e53e35d471c6a1c05d6426a011b0fada30-Lenovo-ThinkPad-USBCGen2Dock-USBHUB-Firmware-0D23_7a216856-8a97-550c-882e-8233751c7cf2.cab"
+	"f241ce8c26d83546d5bfd1d67b70b9324f32ea4790acebb2a5e7d5a071eaaa85-Lenovo-ThinkPad-USBCGen2Dock-USBHUBQ7-Firmware-0D24_4ec36768-1858-5e9b-9d35-40e6143c3cd4.cab"
 )
-SRC_URI="${FILENAMES[*]/#/${HOMEPAGE}/}"
-LICENSE="MIT"
+SRC_URI="${FILENAMES[*]/#/${CROS_FWUPD_URL}/}"
+LICENSE="LVFS-Vendor-Agreement-v1"
 
 DEPEND=""
 RDEPEND="sys-apps/fwupd"
-
-S="${WORKDIR}"
-
-FIRMWARE_INSTALL_ROOT="/usr/share/fwupd/remotes.d/vendor/firmware"
-
-dounpack_license() {
-	local file
-	for file in "$@"; do
-		(
-		cabextract -F LICENSE.txt "${DISTDIR}"/"${file}" ||
-			mv LICENSE.txt license."${file}".txt
-		)
-	done
-}
-
-
-doins_firmware() {
-	local file
-	for file in "$@"; do
-		(
-		insinto "${FIRMWARE_INSTALL_ROOT}"
-		doins "${DISTDIR}"/"${file}"
-		)
-	done
-}
-
-src_unpack() {
-	dounpack_license "${FILENAMES[@]}"
-}
-
-src_install() {
-	doins_firmware "${FILENAMES[@]}"
-
-	# Install udev rules to trigger updates on hotplug.
-	udev_dorules "${FILESDIR}"/91-fwupd.rules
-}
diff --git a/sys-fs/archivemount/Manifest b/sys-fs/archivemount/Manifest
new file mode 100644
index 0000000..e8a4519
--- /dev/null
+++ b/sys-fs/archivemount/Manifest
@@ -0,0 +1 @@
+DIST archivemount-0.8.12.tar.gz 131934 BLAKE2B f4fda78f3f91fa2586795807ef616fd8eb67e224d99bcdfbd80ec59b851770a5c914c25786a183ce0dc9e8cf35b628ecd56bd35b181f2b51b4eb7f0bb727839c SHA512 4ce9e7ec8585b07d5bf48df41cc4a1b4ba7fe2268864ec70c445a6b9c21237f267a19814f00c5ef5a940a90ebaa47c9626aff1dbbff6fbb22e2c260da666ccd9
diff --git a/sys-fs/archivemount/OWNERS b/sys-fs/archivemount/OWNERS
new file mode 100644
index 0000000..cd9ddc6
--- /dev/null
+++ b/sys-fs/archivemount/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/cros-disks/OWNERS
diff --git a/sys-fs/archivemount/archivemount-0.8.12-r2.ebuild b/sys-fs/archivemount/archivemount-0.8.12-r2.ebuild
new file mode 120000
index 0000000..be04fbf
--- /dev/null
+++ b/sys-fs/archivemount/archivemount-0.8.12-r2.ebuild
@@ -0,0 +1 @@
+archivemount-0.8.12.ebuild
\ No newline at end of file
diff --git a/sys-fs/archivemount/archivemount-0.8.12.ebuild b/sys-fs/archivemount/archivemount-0.8.12.ebuild
new file mode 100644
index 0000000..000a8ec
--- /dev/null
+++ b/sys-fs/archivemount/archivemount-0.8.12.ebuild
@@ -0,0 +1,33 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools
+
+DESCRIPTION="Mount archives using libarchive and FUSE"
+HOMEPAGE="https://www.cybernoia.de/software/archivemount.html https://github.com/cybernoid/archivemount"
+SRC_URI="https://www.cybernoia.de/software/archivemount/${P}.tar.gz"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="
+	app-arch/libarchive:=
+	sys-fs/fuse:0"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+	"${FILESDIR}/archivemount-0.8.12-dev-fd.patch"
+	"${FILESDIR}/archivemount-0.8.12-raw-pathname.patch"
+)
+
+src_prepare() {
+	default
+
+	# https://bugs.gentoo.org/725998
+	sed -i -e 's/CFLAGS=//g' configure.ac || die
+	eautoreconf
+}
diff --git a/sys-fs/archivemount/files/archivemount-0.8.12-dev-fd.patch b/sys-fs/archivemount/files/archivemount-0.8.12-dev-fd.patch
new file mode 100644
index 0000000..ed9d467
--- /dev/null
+++ b/sys-fs/archivemount/files/archivemount-0.8.12-dev-fd.patch
@@ -0,0 +1,98 @@
+commit 96249ce2fc4111e413c80c7462dac2477cd092bf
+Author: Nigel Tao <nigeltao@golang.org>
+Date:   Thu May 20 15:06:02 2021 +1000
+
+    Add support for /dev/fd/%u mountpoints
+    
+    The motivation follows libfuse's "Allow passing /dev/fuse file
+    descriptor from parent process" 2018 commit:
+    https://github.com/libfuse/libfuse/commit/64e11073b9347fcf9c6d1eea143763ba9e946f70
+    
+    Also remove a superfluous archive_entry_set_mode call that was (1)
+    mistakenly passing st_mtime instead of st_mode and (2) immediately
+    overwritten by a subsequent archive_entry_set_mode call. That
+    superfluous call / typo was introduced in 2006 by commit
+    5bd0d35ef8035edd0faefc018108c79c4950c025. It presumably never did
+    anything noticable, so we remove it instead of trying to fix it.
+
+diff --git a/archivemount.c b/archivemount.c
+index d6e200d..6342d7e 100755
+--- a/archivemount.c
++++ b/archivemount.c
+@@ -185,6 +185,21 @@ usage(const char *progname)
+ 		"\n",progname);
+ }
+ 
++// fuse_mnt_parse_fuse_fd was copied from libfuse's lib/mount_util.c.
++static int //
++fuse_mnt_parse_fuse_fd(const char *mountpoint)
++{
++	int fd = -1;
++	int len = 0;
++
++	if (sscanf(mountpoint, "/dev/fd/%u%n", &fd, &len) == 1 &&
++			len == strlen(mountpoint)) {
++		return fd;
++	}
++
++	return -1;
++}
++
+ static struct fuse_operations ar_oper;
+ 
+ static int
+@@ -398,7 +413,7 @@ insert_by_path(NODE *root, NODE *node)
+ }
+ 
+ static int
+-build_tree(const char *mtpt)
++build_tree(mode_t mtpt_mode)
+ {
+ 	struct archive *archive;
+ 	struct stat st;
+@@ -480,11 +495,9 @@ build_tree(const char *mtpt)
+ 	}
+ 	archive_entry_set_gid(root->entry, getgid());
+ 	archive_entry_set_uid(root->entry, getuid());
+-	archive_entry_set_mode(root->entry, st.st_mtime);
+ 	archive_entry_set_pathname(root->entry, "/");
+ 	archive_entry_set_size(root->entry, st.st_size);
+-	stat(mtpt, &st);
+-	archive_entry_set_mode(root->entry, st.st_mode);
++	archive_entry_set_mode(root->entry, mtpt_mode);
+ 
+ 	if ((cur = init_node()) == NULL) {
+ 		return -ENOMEM;
+@@ -2742,6 +2755,7 @@ int
+ main(int argc, char **argv)
+ {
+ 	struct stat st;
++	mode_t mtpt_mode;
+ 	int oldpwd;
+ 	struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
+ 
+@@ -2765,7 +2779,14 @@ main(int argc, char **argv)
+ 		perror("Error stat'ing mountpoint");
+ 		exit(EXIT_FAILURE);
+ 	}
+-	if (! S_ISDIR(st.st_mode)) {
++	/* Check that the mountpoint is either a /dev/fd/%u pre-mounted file
++	 * descriptor or a directory on the file system. For a file descriptor,
++	 * the build_tree function still expects mode bits whose file type
++	 * satisfies S_ISDIR. */
++	mtpt_mode = st.st_mode;
++	if (fuse_mnt_parse_fuse_fd(mtpt) >= 0) {
++		mtpt_mode = (mtpt_mode & ~S_IFMT) | S_IFDIR;
++	} else if (! S_ISDIR(st.st_mode)) {
+ 		fprintf(stderr, "Problem with mountpoint: %s\n",
+ 			strerror(ENOTDIR));
+ 		exit(EXIT_FAILURE);
+@@ -2789,7 +2810,7 @@ main(int argc, char **argv)
+ 		perror("opening archive failed");
+ 		return EXIT_FAILURE;
+ 	}
+-	if (build_tree(mtpt) != 0) {
++	if (build_tree(mtpt_mode) != 0) {
+ 		exit(EXIT_FAILURE);
+ 	}
+ 
diff --git a/sys-fs/archivemount/files/archivemount-0.8.12-raw-pathname.patch b/sys-fs/archivemount/files/archivemount-0.8.12-raw-pathname.patch
new file mode 100644
index 0000000..e0c0f68
--- /dev/null
+++ b/sys-fs/archivemount/files/archivemount-0.8.12-raw-pathname.patch
@@ -0,0 +1,67 @@
+commit d17ad6011d4235e7d8e20ea40699f6463fe828e7
+Author: Nigel Tao <nigeltao@golang.org>
+Date:   Sun Jun 20 22:20:23 2021 +1000
+
+    Honor raw archives' pathname
+    
+    Libarchive's default is "/data", per archive_read_format_raw_read_header
+    in libarchive/archive_read_support_format_raw.c, but some raw archives
+    provide their own pathname and libarchive passes that on since 2019:
+    https://github.com/libarchive/libarchive/commit/a4744f65
+
+diff --git a/archivemount.c b/archivemount.c
+index 6342d7e..64a3fc2 100755
+--- a/archivemount.c
++++ b/archivemount.c
+@@ -142,6 +142,9 @@ char *mtpt = NULL;
+ char *archiveFile = NULL;
+ pthread_mutex_t lock; /* global node tree lock */
+ 
++const char formatraw_default_path[] = "/data";
++const char* formatraw_path = formatraw_default_path;
++
+ /* Taken from the GNU under the GPL */
+ char *
+ strchrnul (const char *s, int c_in)
+@@ -511,6 +514,9 @@ build_tree(mode_t mtpt_mode)
+ 		if (memcmp(name, "./\0", 3) == 0) {
+ 			/* special case: the directory "./" must be skipped! */
+ 			continue;
++		} else if (options.formatraw && (formatraw_path == formatraw_default_path)) {
++			/* save the first entry's name */
++			formatraw_path = strdup(name);
+ 		}
+ 		if (options.subtree_filter) {
+ 			regex_error = regexec(&subtree, name, 1, &regmatch, REG_NOTEOL);
+@@ -1132,12 +1138,10 @@ _ar_open_raw(void)
+ {
+ 	// open archive and search first entry
+ 
+-	const char path[] = "/data";
+-
+ 	int ret = -1;
+ 	const char *realpath;
+ 	NODE *node;
+-	log("_ar_open_raw called, path: '%s'", path);
++	log("_ar_open_raw called, path: '%s'", formatraw_path);
+ 
+ 
+ 	if (rawcache->opened!=0) {
+@@ -1149,7 +1153,7 @@ _ar_open_raw(void)
+ 
+ 	/* find node */
+ 
+-	node = get_node_for_path(root, path);
++	node = get_node_for_path(root, formatraw_path);
+ 	if (! node) {
+ 		log("get_node_for_path error");
+ 		return -ENOENT;
+@@ -2819,7 +2823,7 @@ main(int argc, char **argv)
+ 		if ((rawcache=init_rawcache()) == NULL)
+ 			return -ENOMEM;
+ 		fprintf(stderr,"Calculating uncompressed file size. Please wait.\n");
+-		rawcache->st.st_size=_ar_getsizeraw("/data");
++		rawcache->st.st_size=_ar_getsizeraw(formatraw_path);
+ 		//log("cache st_size = %ld",rawcache->st.st_size);
+ 	}
+ 
diff --git a/sys-fs/archivemount/metadata.xml b/sys-fs/archivemount/metadata.xml
new file mode 100644
index 0000000..6f49eba
--- /dev/null
+++ b/sys-fs/archivemount/metadata.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<!-- maintainer-needed -->
+</pkgmetadata>
diff --git a/sys-fs/fuse-exfat/Manifest b/sys-fs/fuse-exfat/Manifest
new file mode 100644
index 0000000..e5b775c
--- /dev/null
+++ b/sys-fs/fuse-exfat/Manifest
@@ -0,0 +1 @@
+DIST fuse-exfat-1.3.0.tar.gz 161278 BLAKE2B 864eed57d5ae70eac03464899ac7c63f5d55254b61b69064592bb7ae04f6c164b8113c568946103c407867c1b53511bf2b88bd6b25cf75aa3a1a9a2a7d4f12ae SHA512 90d2b89322590199012b035b88ae01559f1824172793d9e7845603940e2807e788c687e4958f1ef76678bd214bb03671b91fd2537901b6d6acf2e8c525a3f1f3
diff --git a/sys-fs/fuse-exfat/OWNERS b/sys-fs/fuse-exfat/OWNERS
new file mode 100644
index 0000000..cd9ddc6
--- /dev/null
+++ b/sys-fs/fuse-exfat/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/cros-disks/OWNERS
diff --git a/sys-fs/fuse-exfat/files/fuse-exfat-1.3.0-timezone-offsets.patch b/sys-fs/fuse-exfat/files/fuse-exfat-1.3.0-timezone-offsets.patch
new file mode 100644
index 0000000..50cb27f
--- /dev/null
+++ b/sys-fs/fuse-exfat/files/fuse-exfat-1.3.0-timezone-offsets.patch
@@ -0,0 +1,118 @@
+diff --git a/libexfat/exfat.h b/libexfat/exfat.h
+index 2342be4..8e9765f 100644
+--- a/libexfat/exfat.h
++++ b/libexfat/exfat.h
+@@ -228,9 +228,10 @@ int exfat_set_label(struct exfat* ef, const char* label);
+ int exfat_mount(struct exfat* ef, const char* spec, const char* options);
+ void exfat_unmount(struct exfat* ef);
+ 
+-time_t exfat_exfat2unix(le16_t date, le16_t time, uint8_t centisec);
++time_t exfat_exfat2unix(le16_t date, le16_t time, uint8_t centisec,
++		uint8_t tzoffset);
+ void exfat_unix2exfat(time_t unix_time, le16_t* date, le16_t* time,
+-		uint8_t* centisec);
++		uint8_t* centisec, uint8_t* tzoffset);
+ void exfat_tzset(void);
+ 
+ bool exfat_ask_to_fix(const struct exfat* ef);
+diff --git a/libexfat/exfatfs.h b/libexfat/exfatfs.h
+index b7b6cac..b9ea268 100644
+--- a/libexfat/exfatfs.h
++++ b/libexfat/exfatfs.h
+@@ -144,7 +144,8 @@ struct exfat_entry_meta1			/* file or directory info (part 1) */
+ 	le16_t atime, adate;			/* latest access date and time */
+ 	uint8_t crtime_cs;				/* creation time in cs (centiseconds) */
+ 	uint8_t mtime_cs;				/* latest modification time in cs */
+-	uint8_t __unknown2[10];
++	uint8_t crtime_tzo, mtime_tzo, atime_tzo;	/* timezone offset encoded */
++	uint8_t __unknown2[7];
+ }
+ PACKED;
+ STATIC_ASSERT(sizeof(struct exfat_entry_meta1) == 32);
+diff --git a/libexfat/node.c b/libexfat/node.c
+index ab1d7d6..3b78c63 100644
+--- a/libexfat/node.c
++++ b/libexfat/node.c
+@@ -135,9 +135,10 @@ static void init_node_meta1(struct exfat_node* node,
+ 	node->attrib = le16_to_cpu(meta1->attrib);
+ 	node->continuations = meta1->continuations;
+ 	node->mtime = exfat_exfat2unix(meta1->mdate, meta1->mtime,
+-			meta1->mtime_cs);
++			meta1->mtime_cs, meta1->mtime_tzo);
+ 	/* there is no centiseconds field for atime */
+-	node->atime = exfat_exfat2unix(meta1->adate, meta1->atime, 0);
++	node->atime = exfat_exfat2unix(meta1->adate, meta1->atime,
++			0, meta1->atime_tzo);
+ }
+ 
+ static void init_node_meta2(struct exfat_node* node,
+@@ -646,8 +647,9 @@ int exfat_flush_node(struct exfat* ef, struct exfat_node* node)
+ 
+ 	meta1->attrib = cpu_to_le16(node->attrib);
+ 	exfat_unix2exfat(node->mtime, &meta1->mdate, &meta1->mtime,
+-			&meta1->mtime_cs);
+-	exfat_unix2exfat(node->atime, &meta1->adate, &meta1->atime, NULL);
++			&meta1->mtime_cs, &meta1->mtime_tzo);
++	exfat_unix2exfat(node->atime, &meta1->adate, &meta1->atime,
++			NULL, &meta1->atime_tzo);
+ 	meta2->size = meta2->valid_size = cpu_to_le64(node->size);
+ 	meta2->start_cluster = cpu_to_le32(node->start_cluster);
+ 	meta2->flags = EXFAT_FLAG_ALWAYS1;
+@@ -895,10 +897,11 @@ static int commit_entry(struct exfat* ef, struct exfat_node* dir,
+ 	meta1->continuations = 1 + name_entries;
+ 	meta1->attrib = cpu_to_le16(attrib);
+ 	exfat_unix2exfat(time(NULL), &meta1->crdate, &meta1->crtime,
+-			&meta1->crtime_cs);
++			&meta1->crtime_cs, &meta1->crtime_tzo);
+ 	meta1->adate = meta1->mdate = meta1->crdate;
+ 	meta1->atime = meta1->mtime = meta1->crtime;
+ 	meta1->mtime_cs = meta1->crtime_cs; /* there is no atime_cs */
++	meta1->atime_tzo = meta1->mtime_tzo = meta1->crtime_tzo;
+ 
+ 	meta2->type = EXFAT_ENTRY_FILE_INFO;
+ 	meta2->flags = EXFAT_FLAG_ALWAYS1;
+diff --git a/libexfat/time.c b/libexfat/time.c
+index 31ae5a2..e2a3b23 100644
+--- a/libexfat/time.c
++++ b/libexfat/time.c
+@@ -53,7 +53,8 @@ static const time_t days_in_year[] =
+ 	0,   0,  31,  59,  90, 120, 151, 181, 212, 243, 273, 304, 334
+ };
+ 
+-time_t exfat_exfat2unix(le16_t date, le16_t time, uint8_t centisec)
++time_t exfat_exfat2unix(le16_t date, le16_t time, uint8_t centisec,
++		uint8_t tzoffset)
+ {
+ 	time_t unix_time = EPOCH_DIFF_SEC;
+ 	uint16_t ndate = le16_to_cpu(date);
+@@ -100,13 +101,18 @@ time_t exfat_exfat2unix(le16_t date, le16_t time, uint8_t centisec)
+ 	unix_time += centisec / 100;
+ 
+ 	/* exFAT stores timestamps in local time, so we correct it to UTC */
+-	unix_time += exfat_timezone;
++	if (tzoffset & 0x80)
++		/* lower 7 bits are signed timezone offset in 15 minute increments */
++		unix_time -= (int8_t)(tzoffset << 1) * 15 * 60 / 2;
++	else
++		/* timezone offset not present, assume our local timezone */
++		unix_time += exfat_timezone;
+ 
+ 	return unix_time;
+ }
+ 
+ void exfat_unix2exfat(time_t unix_time, le16_t* date, le16_t* time,
+-		uint8_t* centisec)
++		uint8_t* centisec, uint8_t* tzoffset)
+ {
+ 	time_t shift = EPOCH_DIFF_SEC + exfat_timezone;
+ 	uint16_t day, month, year;
+@@ -146,6 +152,9 @@ void exfat_unix2exfat(time_t unix_time, le16_t* date, le16_t* time,
+ 	*time = cpu_to_le16(twosec | (min << 5) | (hour << 11));
+ 	if (centisec)
+ 		*centisec = (unix_time % 2) * 100;
++
++	/* record our local timezone offset in exFAT (15 minute increment) format */
++	*tzoffset = (uint8_t)(-exfat_timezone / 60 / 15) | 0x80;
+ }
+ 
+ void exfat_tzset(void)
diff --git a/sys-fs/fuse-exfat/fuse-exfat-1.3.0-r1.ebuild b/sys-fs/fuse-exfat/fuse-exfat-1.3.0-r1.ebuild
new file mode 100644
index 0000000..24bf4b4
--- /dev/null
+++ b/sys-fs/fuse-exfat/fuse-exfat-1.3.0-r1.ebuild
@@ -0,0 +1,26 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+DESCRIPTION="exFAT filesystem FUSE module"
+HOMEPAGE="https://github.com/relan/exfat"
+SRC_URI="https://github.com/relan/exfat/releases/download/v${PV}/${P}.tar.gz"
+
+# COPYING is GPL-2 but ChangeLog says "Relicensed the project from GPLv3+ to GPLv2+"
+LICENSE="GPL-2+"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="sys-fs/fuse:0"
+DEPEND="${RDEPEND}
+	virtual/pkgconfig"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-1.3.0-timezone-offsets.patch"
+)
+
+src_install() {
+	default
+	dosym mount.exfat-fuse.8 /usr/share/man/man8/mount.exfat.8
+}
diff --git a/sys-fs/fuse-exfat/metadata.xml b/sys-fs/fuse-exfat/metadata.xml
new file mode 100644
index 0000000..2b2d336
--- /dev/null
+++ b/sys-fs/fuse-exfat/metadata.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+<maintainer type="person">
+	<email>floppym@gentoo.org</email>
+</maintainer>
+<maintainer type="project">
+	<email>base-system@gentoo.org</email>
+	<name>Gentoo Base System</name>
+</maintainer>
+<upstream>
+	<remote-id type="google-code">exfat</remote-id>
+	<remote-id type="github">relan/exfat</remote-id>
+</upstream>
+</pkgmetadata>
diff --git a/sys-fs/fuse-zip/files/fuse-zip-0.7.0-chrome-icu.patch b/sys-fs/fuse-zip/files/fuse-zip-0.7.0-chrome-icu.patch
new file mode 100644
index 0000000..15432ec
--- /dev/null
+++ b/sys-fs/fuse-zip/files/fuse-zip-0.7.0-chrome-icu.patch
@@ -0,0 +1,186 @@
+From a6d463794be51d5f48af655da22c3acb8f24fd02 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fran=C3=A7ois=20Degros?= <fdegros@chromium.org>
+Date: Tue, 17 Nov 2020 14:26:09 +1100
+Subject: [PATCH] Link and initialize chrome-icu
+
+Make fuse-zip work with the ChromeOS-specific version of
+ICU (chrome-icu) on ChromeOS.
+---
+ Makefile            |   4 +-
+ lib/Makefile        |   4 +-
+ lib/fuseZipData.cpp | 110 ++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 115 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index e72ce52..1406e73 100644
+--- a/Makefile
++++ b/Makefile
+@@ -8,9 +8,9 @@ mandir=$(datarootdir)/man
+ man1dir=$(mandir)/man1
+ manext=.1
+ PKG_CONFIG ?= pkg-config
+-PC_DEPS = fuse libzip icu-uc icu-i18n
++PC_DEPS = fuse libzip
+ PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
+-LIBS := -Llib -lfusezip $(shell $(PKG_CONFIG) --libs $(PC_DEPS))
++LIBS := -Llib -lfusezip -licui18n-chrome -licuuc-chrome $(shell $(PKG_CONFIG) --libs $(PC_DEPS))
+ COMMON_CXXFLAGS = -Wall -Wextra -Wconversion -Wno-sign-compare -Wlogical-op -Wshadow -pedantic -std=c++17
+ CXXFLAGS = -g -O0 $(COMMON_CXXFLAGS)
+ RELEASE_CXXFLAGS = -O2 $(COMMON_CXXFLAGS)
+diff --git a/lib/Makefile b/lib/Makefile
+index 4e4b23a..8c2d098 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -1,7 +1,9 @@
+ DEST=libfusezip.a
+ PKG_CONFIG ?= pkg-config
+-PC_DEPS = fuse libzip icu-uc icu-i18n
++PC_DEPS = fuse libzip
+ PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
++PC_CFLAGS += -I"$(SYSROOT)/usr/include/icu-chrome/common"
++PC_CFLAGS += -I"$(SYSROOT)/usr/include/icu-chrome/i18n"
+ COMMON_CXXFLAGS = -Wall -Wextra -Wconversion -Wno-sign-compare -Wlogical-op -Wshadow -pedantic -std=c++17
+ CXXFLAGS = -g -O0 $(COMMON_CXXFLAGS)
+ RELEASE_CXXFLAGS = -O2 $(COMMON_CXXFLAGS)
+diff --git a/lib/fuseZipData.cpp b/lib/fuseZipData.cpp
+index 9639a8e..6666d6e 100644
+--- a/lib/fuseZipData.cpp
++++ b/lib/fuseZipData.cpp
+@@ -25,10 +25,18 @@
+ #include <stdexcept>
+ #include <functional>
+ #include <memory>
++#include <system_error>
+ 
++#include <fcntl.h>
+ #include <syslog.h>
++#include <sys/mman.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++#include <unicode/putil.h>
++#include <unicode/uclean.h>
+ #include <unicode/ucnv.h>
+ #include <unicode/ucsdet.h>
++#include <unicode/udata.h>
+ 
+ #include "fuseZipData.h"
+ #include "extraField.h"
+@@ -60,6 +68,105 @@ static void SetPassword(zip_t *const archive) {
+ 
+ namespace {
+ 
++[[noreturn]] void ThrowSystemError(const char *const reason) {
++    throw std::system_error(errno, std::system_category(), reason);
++}
++
++// A scoped file handle.
++class ScopedFile {
++  public:
++    // Closes the file.
++    ~ScopedFile() {
++        if (close(fd_) < 0)
++            perror("Cannot close file");
++    }
++
++    explicit ScopedFile(int fd) : fd_(fd) {}
++
++    // No copy.
++    ScopedFile(const ScopedFile &) = delete;
++    ScopedFile &operator=(const ScopedFile &) = delete;
++
++  private:
++    const int fd_;
++};
++
++// A file mapping to memory.
++class FileMapping {
++  public:
++    // Removes the memory mapping.
++    ~FileMapping() {
++        if (munmap(data_, size_) < 0)
++            perror("Cannot unmap file");
++    }
++
++    // Maps a file to memory in read-only mode.
++    // Throws a runtime_error in case of error.
++    explicit FileMapping(const char *const path) {
++        // Open file in read-only mode.
++        const int fd = open(path, O_RDONLY);
++        if (fd < 0)
++            ThrowSystemError("Cannot open file");
++
++        // Ensure file will be closed.
++        const ScopedFile guard(fd);
++
++        // Get file size.
++        struct stat st;
++        if (fstat(fd, &st) < 0)
++            ThrowSystemError("Cannot fstat file");
++
++        size_ = static_cast<size_t>(st.st_size);
++        if (size_ != st.st_size)
++            throw std::runtime_error("File too big to be memory-mapped");
++
++        // Map file to memory.
++        data_ = mmap(nullptr, size_, PROT_READ, MAP_PRIVATE, fd, 0);
++        if (data_ == MAP_FAILED)
++            ThrowSystemError("Cannot mmap file");
++    }
++
++    // No copy.
++    FileMapping(const FileMapping &) = delete;
++    FileMapping &operator=(const FileMapping &) = delete;
++
++    // Start of the memory mapping.
++    const void *data() const { return data_; }
++
++  private:
++    void *data_;
++    size_t size_;
++};
++
++// Initializes and cleans up the ICU library.
++class IcuGuard {
++  public:
++    // Initializes the ICU library.
++    // Throws an runtime_error in case of error.
++    IcuGuard() {
++        UErrorCode error = U_ZERO_ERROR;
++        udata_setCommonData(mappedDataFile.data(), &error);
++        // Never try to load ICU data from files.
++        udata_setFileAccess(UDATA_ONLY_PACKAGES, &error);
++        u_init(&error);
++        if (U_FAILURE(error)) {
++            std::string msg = "Cannot initialize ICU: ";
++            msg += u_errorName(error);
++            throw std::runtime_error(std::move(msg));
++        }
++    }
++
++    // Cleans up the ICU library.
++    ~IcuGuard() { u_cleanup(); }
++
++    // No copy.
++    IcuGuard(const IcuGuard &) = delete;
++    IcuGuard &operator=(const IcuGuard &) = delete;
++
++  private:
++    const FileMapping mappedDataFile{"/opt/google/chrome/icudtl.dat"};
++};
++
+ struct Closer {
+     void operator()(UConverter *const conv) const { ucnv_close(conv); }
+     void operator()(UCharsetDetector *const csd) const { ucsdet_close(csd); }
+@@ -236,6 +343,9 @@ void FuseZipData::build_tree(bool readonly) {
+         }
+     }
+ 
++    // Initialize ICU library and ensure it will be cleaned up.
++    const IcuGuard guard;
++
+     // Detect filename encoding.
+     const std::string encoding = DetectEncoding(allNames);
+     allNames.clear();
+-- 
+2.29.2.576.ga3fc446d84-goog
+
diff --git a/sys-fs/fuse-zip/files/fuse-zip-0.7.0-guess-encoding.patch b/sys-fs/fuse-zip/files/fuse-zip-0.7.0-guess-encoding.patch
new file mode 100644
index 0000000..d363108d
--- /dev/null
+++ b/sys-fs/fuse-zip/files/fuse-zip-0.7.0-guess-encoding.patch
@@ -0,0 +1,325 @@
+From 37e24eb0fe1fed110bf7f5309ed131f8ca25f11d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fran=C3=A7ois=20Degros?= <fdegros@chromium.org>
+Date: Mon, 15 Jun 2020 10:56:27 +1000
+Subject: [PATCH] Detect filename encoding and convert filenames to UTF-8 using
+ ICU
+
+---
+ Makefile            |  15 ++--
+ lib/Makefile        |  14 ++--
+ lib/fuseZipData.cpp | 193 ++++++++++++++++++++++++++++++++++++++++----
+ 3 files changed, 194 insertions(+), 28 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 1b40859..e72ce52 100644
+--- a/Makefile
++++ b/Makefile
+@@ -7,13 +7,14 @@ docdir=$(datarootdir)/doc/$(DEST)
+ mandir=$(datarootdir)/man
+ man1dir=$(mandir)/man1
+ manext=.1
+-LIBS=-Llib -lfusezip $(shell $(PKG_CONFIG) fuse --libs) $(shell $(PKG_CONFIG) libzip --libs)
++PKG_CONFIG ?= pkg-config
++PC_DEPS = fuse libzip icu-uc icu-i18n
++PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
++LIBS := -Llib -lfusezip $(shell $(PKG_CONFIG) --libs $(PC_DEPS))
++COMMON_CXXFLAGS = -Wall -Wextra -Wconversion -Wno-sign-compare -Wlogical-op -Wshadow -pedantic -std=c++17
++CXXFLAGS = -g -O0 $(COMMON_CXXFLAGS)
++RELEASE_CXXFLAGS = -O2 $(COMMON_CXXFLAGS)
+ LIB=lib/libfusezip.a
+-CXXFLAGS=-g -O0 -Wall -Wextra -Wconversion -Wsign-conversion -Wlogical-op -Wshadow -pedantic -Werror -std=c++11
+-RELEASE_CXXFLAGS=-O2 -Wall -Wextra -Wconversion -Wsign-conversion -Wlogical-op -Wshadow -pedantic -Werror -std=c++11
+-PKG_CONFIG?=pkg-config
+-FUSEFLAGS=$(shell $(PKG_CONFIG) fuse --cflags)
+-ZIPFLAGS=$(shell $(PKG_CONFIG) libzip --cflags)
+ SOURCES=main.cpp
+ OBJECTS=$(SOURCES:.cpp=.o)
+ MANSRC=fuse-zip.1
+@@ -35,7 +36,7 @@ $(DEST): $(OBJECTS) $(LIB)
+ 	    -o $@
+ 
+ main.o: main.cpp
+-	$(CXX) -c $(CXXFLAGS) $(FUSEFLAGS) $(ZIPFLAGS) $< \
++	$(CXX) -c $(CXXFLAGS) $(PC_CFLAGS) $< \
+ 	    -Ilib \
+ 	    -o $@
+ 
+diff --git a/lib/Makefile b/lib/Makefile
+index af2df55..4e4b23a 100644
+--- a/lib/Makefile
++++ b/lib/Makefile
+@@ -1,10 +1,10 @@
+ DEST=libfusezip.a
+-PKG_CONFIG?=pkg-config
+-LIBS=$(shell $(PKG_CONFIG) fuse --libs) $(shell $(PKG_CONFIG) libzip --libs)
+-CXXFLAGS=-g -O0 -Wall -Wextra -Wconversion -Wno-sign-compare -Wlogical-op -Wshadow -pedantic -Werror -std=c++11
+-RELEASE_CXXFLAGS=-O2 -Wall -Wextra -Wconversion -Wno-sign-compare -Wlogical-op -Wshadow -pedantic -Werror -std=c++11
+-FUSEFLAGS=$(shell $(PKG_CONFIG) fuse --cflags)
+-ZIPFLAGS=$(shell $(PKG_CONFIG) libzip --cflags)
++PKG_CONFIG ?= pkg-config
++PC_DEPS = fuse libzip icu-uc icu-i18n
++PC_CFLAGS := $(shell $(PKG_CONFIG) --cflags $(PC_DEPS))
++COMMON_CXXFLAGS = -Wall -Wextra -Wconversion -Wno-sign-compare -Wlogical-op -Wshadow -pedantic -std=c++17
++CXXFLAGS = -g -O0 $(COMMON_CXXFLAGS)
++RELEASE_CXXFLAGS = -O2 $(COMMON_CXXFLAGS)
+ SOURCES=$(sort $(wildcard *.cpp))
+ OBJECTS=$(SOURCES:.cpp=.o)
+ CLEANFILES=$(OBJECTS) $(DEST)
+@@ -18,7 +18,7 @@ $(DEST): $(OBJECTS)
+ 	$(AR) -cr $@ $(OBJECTS)
+ 
+ .cpp.o:
+-	$(CXX) -c $(CXXFLAGS) $(FUSEFLAGS) $(ZIPFLAGS) $< -o $@
++	$(CXX) -c $(CXXFLAGS) $(PC_CFLAGS) $< -o $@
+ 
+ clean:
+ 	rm -f $(DEST) $(OBJECTS)
+diff --git a/lib/fuseZipData.cpp b/lib/fuseZipData.cpp
+index c511e1d..9639a8e 100644
+--- a/lib/fuseZipData.cpp
++++ b/lib/fuseZipData.cpp
+@@ -23,6 +23,12 @@
+ #include <cstring>
+ #include <iostream>
+ #include <stdexcept>
++#include <functional>
++#include <memory>
++
++#include <syslog.h>
++#include <unicode/ucnv.h>
++#include <unicode/ucsdet.h>
+ 
+ #include "fuseZipData.h"
+ #include "extraField.h"
+@@ -52,6 +58,118 @@ static void SetPassword(zip_t *const archive) {
+         throw ZipError("Cannot set default password", archive);
+ }
+ 
++namespace {
++
++struct Closer {
++    void operator()(UConverter *const conv) const { ucnv_close(conv); }
++    void operator()(UCharsetDetector *const csd) const { ucsdet_close(csd); }
++};
++
++using ConverterPtr = std::unique_ptr<UConverter, Closer>;
++using CharsetDetectorPtr = std::unique_ptr<UCharsetDetector, Closer>;
++
++class ConverterToUtf8 {
++  public:
++    // Creates a converter that will convert strings from the given encoding to
++    // UTF-8. Allocates internal buffers to handle strings up to
++    // `maxInputLength`. Throws an exception in case of error.
++    ConverterToUtf8(const char *const fromEncoding, const size_t maxInputLength)
++        : from(Open(fromEncoding)), to(Open("UTF-8")) {
++        utf16.resize(maxInputLength + 1);
++        utf8.resize(3 * maxInputLength + 1);
++    }
++
++    // Converts the given string to UTF-8. Returns a pointer to the internal
++    // buffer holding the null-terminated result. Returns a null pointer in case
++    // of error.
++    const char *operator()(const char *const in) {
++        if (!in)
++            return nullptr;
++
++        const int32_t inlen = static_cast<int32_t>(strlen(in));
++
++        UErrorCode error = U_ZERO_ERROR;
++        const int32_t len16 = ucnv_toUChars(from.get(), utf16.data(),
++                                            static_cast<int32_t>(utf16.size()),
++                                            in, inlen, &error);
++
++        if (U_FAILURE(error)) {
++            fprintf(stderr, "Cannot convert to UTF-16: %s\n", u_errorName(error));
++            return nullptr;
++        }
++
++        const int32_t len8 = ucnv_fromUChars(to.get(), utf8.data(),
++                                             static_cast<int32_t>(utf8.size()),
++                                             utf16.data(), len16, &error);
++
++        if (U_FAILURE(error)) {
++            fprintf(stderr, "Cannot convert to UTF-8: %s\n", u_errorName(error));
++            return nullptr;
++        }
++
++        assert(!utf8[len8]);
++        return utf8.data();
++    }
++
++  private:
++    // Opens an ICU converter for the given encoding.
++    // Throws a runtime_error in case of error.
++    static ConverterPtr Open(const char *const encoding) {
++        UErrorCode error = U_ZERO_ERROR;
++        ConverterPtr conv(ucnv_open(encoding, &error));
++
++        if (U_FAILURE(error)) {
++            std::string msg = "Cannot open converter for ";
++            msg += encoding;
++            msg += ": ";
++            msg += u_errorName(error);
++            throw std::runtime_error(std::move(msg));
++        }
++
++        assert(conv);
++        return conv;
++    }
++
++    const ConverterPtr from, to;
++    std::vector<UChar> utf16;
++    std::vector<char> utf8;
++};
++
++// Detects the encoding of the given string.
++// Returns the encoding name, or an empty string in case of error.
++std::string DetectEncoding(const std::string_view bytes) {
++    UErrorCode error = U_ZERO_ERROR;
++    const CharsetDetectorPtr csd(ucsdet_open(&error));
++    ucsdet_setText(csd.get(), bytes.data(), static_cast<int32_t>(bytes.size()),
++                   &error);
++
++    // Get most plausible encoding.
++    const UCharsetMatch *const ucm = ucsdet_detect(csd.get(), &error);
++    const char *const encoding = ucsdet_getName(ucm, &error);
++    if (U_FAILURE(error)) {
++        fprintf(stderr, "Cannot detect encoding: %s\n", u_errorName(error));
++        return std::string();
++    }
++
++    printf("Detected encoding %s with %d%% confidence\n", encoding,
++           ucsdet_getConfidence(ucm, &error));
++
++    // Check if we want to convert the detected encoding via ICU.
++    const std::string_view candidates[] = {
++        "Shift_JIS",   "Big5",        "EUC-JP",      "EUC-KR", "GB18030",
++        "ISO-2022-CN", "ISO-2022-JP", "ISO-2022-KR", "KOI8-R"};
++
++    for (const std::string_view candidate : candidates) {
++        if (candidate == encoding)
++            return encoding;
++    }
++
++    // Not handled by ICU.
++    return std::string();
++}
++
++} // namespace
++
+ FuseZipData::FuseZipData(const char *archiveName, struct zip *z, const char *cwd,
+         bool force_precise_time):
+     m_zip(z), m_archiveName(archiveName), m_cwd(cwd), m_force_precise_time(force_precise_time) {
+@@ -91,18 +209,58 @@ void FuseZipData::build_tree(bool readonly) {
+     m_root->parent = NULL;
+     files[m_root->full_name.c_str()] = m_root;
+     zip_int64_t n = zip_get_num_entries(m_zip, 0);
++
++    // Concatenate all the names in a buffer in order to guess the encoding.
++    std::string allNames;
++    allNames.reserve(10000);
++
++    size_t maxNameLength = 0;
++
+     // search for absolute or parent-relative paths
+     bool needPrefix = false;
+-    if (readonly) {
+-        for (zip_int64_t i = 0; i < n; ++i) {
+-            const char *name = zip_get_name(m_zip, static_cast<zip_uint64_t>(i), ZIP_FL_ENC_GUESS);
+-            if (!name)
+-                throw ZipError("Cannot get file name", m_zip);
+-
+-            if ((name[0] == '/') || (strncmp(name, "../", 3) == 0)) {
+-                needPrefix = true;
+-                break;
+-            }
++    for (zip_int64_t i = 0; i < n; ++i) {
++        const char *name =
++            zip_get_name(m_zip, static_cast<zip_uint64_t>(i), ZIP_FL_ENC_RAW);
++        if (!name)
++            continue;
++
++        const size_t nameLength = strlen(name);
++        if (maxNameLength < nameLength)
++            maxNameLength = nameLength;
++
++        if (allNames.size() + nameLength <= allNames.capacity())
++            allNames.append(name, nameLength);
++
++        if (readonly && !needPrefix) {
++            needPrefix = (name[0] == '/' || strncmp(name, "../", 3) == 0);
++        }
++    }
++
++    // Detect filename encoding.
++    const std::string encoding = DetectEncoding(allNames);
++    allNames.clear();
++
++    // Prepare functor to convert filenames to UTF-8.
++    // By default, just rely on the conversion to UTF-8 provided by libzip.
++    std::function<const char *(const char *)> toUtf8 = [](const char *s) {
++        return s;
++    };
++    zip_flags_t zipFlags = ZIP_FL_ENC_GUESS;
++
++    // But if the filename encoding is one of the encodings we want to convert
++    // using ICU, prepare and use the ICU converter.
++    if (!encoding.empty()) {
++        try {
++            toUtf8 = [converter = std::make_shared<ConverterToUtf8>(
++                          encoding.c_str(), maxNameLength)](const char *s) {
++                return (*converter)(s);
++            };
++            zipFlags = ZIP_FL_ENC_RAW;
++        } catch (const std::exception &e) {
++            printf("Cannot create converter for %s: %s\n", encoding.c_str(),
++                   e.what());
++            syslog(LOG_ERR, "Cannot create converter for %s: %s",
++                   encoding.c_str(), e.what());
+         }
+     }
+ 
+@@ -115,13 +273,16 @@ void FuseZipData::build_tree(bool readonly) {
+         zip_uint64_t id = static_cast<zip_uint64_t>(i);
+         bool isHardlink;
+ 
+-        if (zip_stat_index(m_zip, id, ZIP_FL_ENC_GUESS, &sb) < 0)
++        if (zip_stat_index(m_zip, id, zipFlags, &sb) < 0)
+             throw ZipError("Cannot read file entry", m_zip);
+ 
+         if ((sb.valid & ZIP_STAT_NAME) == 0)
+             continue;
+ 
+-        const char *const name = sb.name;
++        const char *name = toUtf8(sb.name);
++        if (!name)
++            continue;
++
+         mode_t mode = getEntryAttributes(id, name, isHardlink);
+         if (S_ISLNK(mode))
+             continue;
+@@ -154,7 +315,11 @@ void FuseZipData::build_tree(bool readonly) {
+     for (zip_int64_t i = 0; i < n; ++i) {
+         zip_uint64_t id = static_cast<zip_uint64_t>(i);
+         bool isHardlink;
+-        const char *name = zip_get_name(m_zip, id, ZIP_FL_ENC_GUESS);
++
++        const char *name = toUtf8(zip_get_name(m_zip, id, zipFlags));
++        if (!name)
++            continue;
++
+         mode_t mode = getEntryAttributes(id, name, isHardlink);
+         if (S_ISLNK(mode))
+             continue;
+@@ -574,7 +739,7 @@ void FuseZipData::save () {
+             if (node->isTemporaryDir()) {
+                 // persist temporary directory
+                 zip_int64_t idx = zip_dir_add(m_zip,
+-                        node->full_name.c_str(), ZIP_FL_ENC_GUESS);
++                        node->full_name.c_str(), ZIP_FL_ENC_UTF_8);
+                 if (idx < 0) {
+                     fprintf(stderr, "Cannot save directory '%s'\n",
+                             node->full_name.c_str());
+-- 
+2.29.2.576.ga3fc446d84-goog
+
diff --git a/sys-fs/fuse-zip/files/fuse-zip-0.7.0-lazy-caching.patch b/sys-fs/fuse-zip/files/fuse-zip-0.7.0-lazy-caching.patch
index 325bdac..ab62abd 100644
--- a/sys-fs/fuse-zip/files/fuse-zip-0.7.0-lazy-caching.patch
+++ b/sys-fs/fuse-zip/files/fuse-zip-0.7.0-lazy-caching.patch
@@ -1,19 +1,25 @@
-From 69b7010995534bef058d2a7e2b2c7e18bb760222 Mon Sep 17 00:00:00 2001
+From a99828c075003eaf08b078d904f4b001af772571 Mon Sep 17 00:00:00 2001
 From: =?UTF-8?q?Fran=C3=A7ois=20Degros?= <fdegros@chromium.org>
 Date: Thu, 18 Jun 2020 23:35:55 +1000
 Subject: [PATCH] Lazy caching of files
 
-Only cache a file in memory if it needs to be cached and if it is less than 1GB.
+Only cache a file in memory if it needs to be cached and if it is less
+than 1GB.
+
+Keep cached uncompressed data in memory, even after the matching file
+has been closed. Some applications keep closing and reopening the same
+file, and we don't want to keep decompressing the same file over and
+over again.
 ---
  lib/Makefile      |   4 +-
  lib/bigBuffer.cpp | 362 ++++++++++++++++++++++++----------------------
- lib/bigBuffer.h   |  89 +++++++-----
- lib/dataNode.cpp  |   7 +-
+ lib/bigBuffer.h   |  91 +++++++-----
+ lib/dataNode.cpp  |  11 +-
  lib/dataNode.h    |   3 +-
  lib/fileNode.cpp  |   2 +-
  lib/fileNode.h    |   2 +-
  lib/fuse-zip.cpp  |   4 +-
- 8 files changed, 254 insertions(+), 219 deletions(-)
+ 8 files changed, 259 insertions(+), 220 deletions(-)
 
 diff --git a/lib/Makefile b/lib/Makefile
 index d092e0e..af2df55 100644
@@ -519,10 +525,10 @@
      return 0;
  }
 diff --git a/lib/bigBuffer.h b/lib/bigBuffer.h
-index 2ec92d6..b5ad3fc 100644
+index 2ec92d6..82fe303 100644
 --- a/lib/bigBuffer.h
 +++ b/lib/bigBuffer.h
-@@ -20,60 +20,84 @@
+@@ -20,60 +20,86 @@
  #ifndef BIG_BUFFER_H
  #define BIG_BUFFER_H
  
@@ -568,62 +574,62 @@
 -            zip_uint64_t len, enum zip_source_cmd cmd);
 +                                               zip_uint64_t len,
 +                                               enum zip_source_cmd cmd);
- 
-     /**
--     * Return number of chunks needed to keep 'size' bytes.
++
++    /**
 +     * Opens the file at index nodeId_ in archive_.
 +     * @throws std::runtime_error on error.
-      */
--    inline static size_t chunksCount(size_t size) {
--        return (size + chunkSize - 1) / chunkSize;
--    }
++     */
 +    ZipFile OpenFile() const;
- 
-     /**
--     * Return number of chunk where 'offset'-th byte is located.
++
++    /**
 +     * Cache file in memory if it isn't cached yet.
 +     * @throws
 +     *      std::bad_alloc if there is not enough memory.
 +     *      std::runtime_error on file read error.
-      */
--    inline static size_t chunkNumber(size_t offset) {
--        return offset / chunkSize;
--    }
++     */
 +    void CacheInMemory();
 +
 +    class Chunk;
 +    using Chunks = std::vector<Chunk>;
++
++    /**
++     * Pointer to the ZIP archive.
++     * Becomes null when file is cached in memory.
++     */
++    zip *archive_ = nullptr;
+ 
+     /**
+-     * Return number of chunks needed to keep 'size' bytes.
++     * Index of the file in the ZIP archive.
+      */
+-    inline static size_t chunksCount(size_t size) {
+-        return (size + chunkSize - 1) / chunkSize;
+-    }
++    const zip_uint64_t nodeId_ = 0;
+ 
+     /**
+-     * Return number of chunk where 'offset'-th byte is located.
++     * File being streamed.
++     * Becomes null when file is cached in memory.
+      */
+-    inline static size_t chunkNumber(size_t offset) {
+-        return offset / chunkSize;
+-    }
++    ZipFile file_ = nullptr;
  
      /**
 -     * Return offset inside chunk to 'offset'-th byte.
-+     * Pointer to the ZIP archive.
-+     * Becomes null when file is cached in memory.
++     * Current position of the file being streamed.
++     * Not used when file is cached in memory.
       */
 -    inline static unsigned int chunkOffset(size_t offset) {
 -        return offset % chunkSize;
 -    }
-+    zip *archive_ = nullptr;
++    off_t pos_ = 0;
  
 -public:
 -    size_t len;
 +    /**
-+     * Index of the file in the ZIP archive.
-+     */
-+    const zip_uint64_t nodeId_ = 0;
-+
-+    /**
-+     * File being streamed.
-+     * Becomes null when file is cached in memory.
-+     */
-+    ZipFile file_ = nullptr;
-+
-+    /**
-+     * Current position of the file being streamed.
-+     * Not used when file is cached in memory.
-+     */
-+    off_t pos_ = 0;
-+
-+    /**
 +     * Cached file in memory.
 +     * Used only when archive_ is null.
 +     */
@@ -631,10 +637,12 @@
 +
 +  public:
 +    off_t len = 0;
++
++    bool IsCachedInMemory() const { return !archive_; }
  
      /**
       * Create new file buffer without mapping to file in a zip archive
-@@ -86,11 +110,11 @@ public:
+@@ -86,11 +112,11 @@ public:
       * @param z         Zip file
       * @param nodeId    Node index inside zip file
       * @param length    File length
@@ -648,7 +656,7 @@
  
      ~BigBuffer();
  
-@@ -105,7 +129,7 @@ public:
+@@ -105,7 +131,7 @@ public:
       * @param offset    offset to start reading from
       * @return number of bytes read
       */
@@ -657,7 +665,7 @@
  
      /**
       * Dispatch write request to chunks of a file and grow 'chunks' vector if
-@@ -135,8 +159,8 @@ public:
+@@ -135,8 +161,8 @@ public:
       *      0       If successfull
       *      -ENOMEM If there are no memory
       */
@@ -668,16 +676,16 @@
  
      /**
       * Truncate buffer at position offset.
-@@ -151,4 +175,3 @@ public:
+@@ -151,4 +177,3 @@ public:
  };
  
  #endif
 -
 diff --git a/lib/dataNode.cpp b/lib/dataNode.cpp
-index 0efd7bc..07f0f84 100644
+index 0efd7bc..86566cd 100644
 --- a/lib/dataNode.cpp
 +++ b/lib/dataNode.cpp
-@@ -116,17 +116,14 @@ int DataNode::open(struct zip *zip) {
+@@ -116,17 +116,15 @@ int DataNode::open(struct zip *zip) {
      if (_state == NodeState::CLOSED) {
          _open_count = 1;
          assert(zip != NULL);
@@ -686,7 +694,8 @@
 -        }
          assert(_id != FAKE_ID);
 -        _buffer.reset(new BigBuffer(zip, _id, static_cast<size_t>(_size)));
-+        _buffer.reset(new BigBuffer(zip, _id, _size));
++        if (!_buffer)
++            _buffer.reset(new BigBuffer(zip, _id, _size));
          _state = NodeState::OPENED;
      }
      return 0;
@@ -697,6 +706,16 @@
      _atime = currentTime();
      return _buffer->read(buf, sz, offset);
  }
+@@ -144,7 +142,8 @@ int DataNode::write(const char *buf, size_t sz, size_t offset) {
+ int DataNode::close() {
+     _size = _buffer->len;
+     if (_state == NodeState::OPENED && --_open_count == 0) {
+-        _buffer.reset();
++        if (!_buffer->IsCachedInMemory())
++            _buffer.reset();
+         _state = NodeState::CLOSED;
+     }
+     return 0;
 diff --git a/lib/dataNode.h b/lib/dataNode.h
 index 7489ec9..550593c 100644
 --- a/lib/dataNode.h
@@ -761,5 +780,5 @@
  }
 -
 -- 
-2.29.1.341.ge80a0c044ae-goog
+2.31.1.498.g6c1eba8ee3d-goog
 
diff --git a/sys-fs/fuse-zip/fuse-zip-0.7.0-r12.ebuild b/sys-fs/fuse-zip/fuse-zip-0.7.0-r12.ebuild
deleted file mode 100644
index 6e71c05..0000000
--- a/sys-fs/fuse-zip/fuse-zip-0.7.0-r12.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit toolchain-funcs
-
-DESCRIPTION="FUSE file system to navigate, extract, create and modify ZIP archives"
-HOMEPAGE="https://bitbucket.org/agalanin/fuse-zip"
-SRC_URI="https://bitbucket.org/agalanin/${PN}/downloads/${P}.tar.gz"
-
-LICENSE="GPL-3"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="
-	dev-libs/libzip:=
-	sys-fs/fuse:0
-"
-RDEPEND="${DEPEND}"
-
-RESTRICT="test"
-
-DOCS=( changelog README.md )
-
-PATCHES=(
-	"${FILESDIR}/${PN}-0.4.5-makefile.patch"
-	"${FILESDIR}/${PN}-0.7.0-makefile.patch"
-	"${FILESDIR}/${PN}-0.7.0-fix-unknown-file-types.patch"
-	"${FILESDIR}/${PN}-0.7.0-fix-utf8-filenames.patch"
-	"${FILESDIR}/${PN}-0.7.0-error-reporting.patch"
-	"${FILESDIR}/${PN}-0.7.0-lazy-caching.patch"
-	"${FILESDIR}/${PN}-0.7.0-password.patch"
-	"${FILESDIR}/${PN}-0.7.0-no-symlinks.patch"
-	"${FILESDIR}/${PN}-0.7.0-deduplicate-filenames.patch"
-)
-
-src_compile() {
-	tc-export PKG_CONFIG
-	emake CXX="$(tc-getCXX)" CXXFLAGS="${CXXFLAGS} ${LDFLAGS}"
-}
-
-src_install() {
-	default
-	doman fuse-zip.1
-}
diff --git a/sys-fs/fuse-zip/fuse-zip-0.7.0-r15.ebuild b/sys-fs/fuse-zip/fuse-zip-0.7.0-r15.ebuild
new file mode 100644
index 0000000..e34022b
--- /dev/null
+++ b/sys-fs/fuse-zip/fuse-zip-0.7.0-r15.ebuild
@@ -0,0 +1,51 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit toolchain-funcs cros-sanitizers
+
+DESCRIPTION="FUSE file system to navigate, extract, create and modify ZIP archives"
+HOMEPAGE="https://bitbucket.org/agalanin/fuse-zip"
+SRC_URI="https://bitbucket.org/agalanin/${PN}/downloads/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	chromeos-base/chrome-icu
+	dev-libs/libzip:=
+	sys-fs/fuse:0
+"
+RDEPEND="${DEPEND}"
+
+RESTRICT="test"
+
+DOCS=( changelog README.md )
+
+PATCHES=(
+	"${FILESDIR}/${PN}-0.4.5-makefile.patch"
+	"${FILESDIR}/${PN}-0.7.0-makefile.patch"
+	"${FILESDIR}/${PN}-0.7.0-fix-unknown-file-types.patch"
+	"${FILESDIR}/${PN}-0.7.0-fix-utf8-filenames.patch"
+	"${FILESDIR}/${PN}-0.7.0-error-reporting.patch"
+	"${FILESDIR}/${PN}-0.7.0-lazy-caching.patch"
+	"${FILESDIR}/${PN}-0.7.0-password.patch"
+	"${FILESDIR}/${PN}-0.7.0-no-symlinks.patch"
+	"${FILESDIR}/${PN}-0.7.0-deduplicate-filenames.patch"
+	"${FILESDIR}/${PN}-0.7.0-guess-encoding.patch"
+	"${FILESDIR}/${PN}-0.7.0-chrome-icu.patch"
+)
+
+src_compile() {
+	sanitizers-setup-env
+	tc-export PKG_CONFIG
+	emake CXX="$(tc-getCXX)" CXXFLAGS="${CXXFLAGS} ${LDFLAGS}"
+}
+
+src_install() {
+	default
+	doman fuse-zip.1
+}
diff --git a/sys-fs/fuse/files/fuse-2.9.7-pass-fuse-fd.patch b/sys-fs/fuse/files/fuse-2.9.7-pass-fuse-fd.patch
index 1ca3f3e..d6d506a4 100644
--- a/sys-fs/fuse/files/fuse-2.9.7-pass-fuse-fd.patch
+++ b/sys-fs/fuse/files/fuse-2.9.7-pass-fuse-fd.patch
@@ -102,9 +102,9 @@
 +			fprintf(stderr,
 +				"fuse: Invalid file descriptor /dev/fd/%u\n",
 +				res);
-+			return NULL;
++			res = -1;
 +		}
-+		return res;
++		goto out;
 +	}
 +
  	if (mo.allow_other && mo.allow_root) {
diff --git a/sys-fs/fuse/fuse-2.9.8-r3.ebuild b/sys-fs/fuse/fuse-2.9.8-r4.ebuild
similarity index 100%
rename from sys-fs/fuse/fuse-2.9.8-r3.ebuild
rename to sys-fs/fuse/fuse-2.9.8-r4.ebuild
diff --git a/sys-fs/lxcfs/Manifest b/sys-fs/lxcfs/Manifest
new file mode 100644
index 0000000..641404b
--- /dev/null
+++ b/sys-fs/lxcfs/Manifest
@@ -0,0 +1,2 @@
+DIST lxcfs-4.0.8.tar.gz 458975 BLAKE2B 19ac81c36c3aad0ee3301eda73aa29399304dff1c827041678be73c4134181667a4d92b3efa37a44b2853b825031fef2e07e7cbfcaf552676a01f5f9faedf9c3 SHA512 830a4a25583a645b59c75327701af24c239323bfe822180c2cb7cb7cc284f50e8bb7c38e771ea869b4449370af1ab1a4fed9611c6495883d193f5a0f6f71380e
+DIST lxcfs-4.0.8.tar.gz.asc 833 BLAKE2B da4ef0f8d6dea59d83f708b6aa7c1835773537e3111d8e9aaf4a7c111d21a0b57486cc9828919bea55ea06ee6bf3e03eeae89eb26199e287066b309d6d798c8d SHA512 f8fc10e52472fff599df7e008d34346489754d64347d005794a4b280949130bb0370ade0d65c9eb182914cae3a6c55f9872bc38481b0b64ea1218c8d1640a74f
diff --git a/sys-fs/lxcfs/OWNERS b/sys-fs/lxcfs/OWNERS
new file mode 100644
index 0000000..717b1e0
--- /dev/null
+++ b/sys-fs/lxcfs/OWNERS
@@ -0,0 +1,3 @@
+sidereal@google.com
+davidmunro@google.com
+nverne@google.com
diff --git a/sys-fs/lxcfs/files/lxcfs-4.0.0.confd b/sys-fs/lxcfs/files/lxcfs-4.0.0.confd
new file mode 100644
index 0000000..ba443ee
--- /dev/null
+++ b/sys-fs/lxcfs/files/lxcfs-4.0.0.confd
@@ -0,0 +1,7 @@
+# /etc/conf.d/lxcfs: config file for /etc/init.d/lxcfs
+
+# lxcfs options:
+# -l == calculate container load average instead of displaying host load average
+# -u == don't display swap usage to containers
+
+LXCFS_OPTS="-l -u"
diff --git a/sys-fs/lxcfs/files/lxcfs-4.0.0.initd b/sys-fs/lxcfs/files/lxcfs-4.0.0.initd
new file mode 100644
index 0000000..d9368e4
--- /dev/null
+++ b/sys-fs/lxcfs/files/lxcfs-4.0.0.initd
@@ -0,0 +1,26 @@
+#!/sbin/openrc-run
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+DAEMON=/usr/bin/lxcfs
+PIDFILE=/run/lxcfs.pid
+
+start() {
+	ebegin "Starting lxcfs."
+	/sbin/modprobe -q fuse
+	install -d /var/lib/lxcfs
+	start-stop-daemon --start \
+			--pidfile ${PIDFILE} \
+			--exec ${DAEMON} \
+			--background \
+			--make-pidfile \
+			-- ${LXCFS_OPTS} \
+			/var/lib/lxcfs
+	eend ${?}
+}
+
+stop() {
+	ebegin "Stopping lxcfs."
+	start-stop-daemon --stop --quiet -R TERM/45 -p ${PIDFILE}
+	eend ${?}
+}
diff --git a/sys-fs/lxcfs/lxcfs-4.0.8.ebuild b/sys-fs/lxcfs/lxcfs-4.0.8.ebuild
new file mode 100644
index 0000000..fe36d48
--- /dev/null
+++ b/sys-fs/lxcfs/lxcfs-4.0.8.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# TODO(crbug.com/1097610) Once stabilized, this can go back to
+# portage-stable
+
+EAPI=7
+
+inherit autotools systemd verify-sig
+
+DESCRIPTION="FUSE filesystem for LXC"
+HOMEPAGE="https://linuxcontainers.org/lxcfs/introduction/ https://github.com/lxc/lxcfs/"
+SRC_URI="https://linuxcontainers.org/downloads/lxcfs/${P}.tar.gz
+	verify-sig? ( https://linuxcontainers.org/downloads/lxcfs/${P}.tar.gz.asc )"
+
+LICENSE="Apache-2.0"
+SLOT="4"
+KEYWORDS="*"
+
+# TODO(crbug.com/1097610) Upstream gentoo has lxcfs depending on fuse:3, but the
+# actual configure script prefers fuse:0. This saves us from having to update
+# fuse at least.
+RDEPEND="dev-libs/glib:2
+	sys-fs/fuse:0"
+DEPEND="${RDEPEND}"
+BDEPEND="sys-apps/help2man
+	verify-sig? ( app-crypt/openpgp-keys-linuxcontainers )"
+
+# Test files need to be updated to fuse:3, #764620
+RESTRICT="test"
+
+VERIFY_SIG_OPENPGP_KEY_PATH=${BROOT}/usr/share/openpgp-keys/linuxcontainers.asc
+
+src_prepare() {
+	default
+	eautoreconf
+}
+
+src_configure() {
+	# Without the localstatedir the filesystem isn't mounted correctly
+	# Without with-distro ./configure will fail when cross-compiling
+	econf --localstatedir=/var --with-distro=gentoo --disable-static \
+		--prefix="${EPREFIX}"/opt/google/lxd-next
+}
+
+src_test() {
+	cd tests/ || die
+	emake tests
+	./main.sh || die "Tests failed"
+}
+
+src_install() {
+	default
+
+	newconfd "${FILESDIR}"/lxcfs-4.0.0.confd lxcfs
+	newinitd "${FILESDIR}"/lxcfs-4.0.0.initd lxcfs
+
+	find "${ED}" -name '*.la' -delete || die
+}
diff --git a/sys-fs/lxcfs/metadata.xml b/sys-fs/lxcfs/metadata.xml
new file mode 100644
index 0000000..baf5a82
--- /dev/null
+++ b/sys-fs/lxcfs/metadata.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer type="person">
+		<email>juippis@gentoo.org</email>
+		<name>Joonas Niilola</name>
+	</maintainer>
+	<maintainer type="project">
+		<email>virtualization@gentoo.org</email>
+		<name>Gentoo Virtualization Project</name>
+	</maintainer>
+	<longdescription>
+		LXCFS is a simple userspace filesystem designed to
+		provide a cgroupfs-like tree which is container aware
+		and a set of files which can be bind-mounted over
+		their /proc originals to provide cgroup-aware values.
+	</longdescription>
+	<upstream>
+		<remote-id type="github">lxc/lxfs</remote-id>
+	</upstream>
+</pkgmetadata>
diff --git a/sys-fs/mtd-utils/Manifest b/sys-fs/mtd-utils/Manifest
deleted file mode 100644
index 177b91c..0000000
--- a/sys-fs/mtd-utils/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST mtd-utils-1.5.0.tar.gz 336791 SHA256 37c660830010910c75baf4bb92697b99bdef1a63be31630882f9ebdb9347c420 SHA512 d5be5fdf4e34b553b37486c36c786e1eb8f472660c35a6adfd1305045530a270388aae4da8df34d65138469ccb576d72f2791234a4c00d1fdbacdf680d361c5a WHIRLPOOL 0c66f31baa4e54b0e1430632270425ecba0da9a0e61ff09a90a8c2a668a9194c71ab2e775da29b597aac398d6e6e1069d13524f05d121c8a480184cc7687ec11
diff --git a/sys-fs/mtd-utils/files/0005-move-_GNU_SOURCE-to-the-main-makefile.patch b/sys-fs/mtd-utils/files/0005-move-_GNU_SOURCE-to-the-main-makefile.patch
deleted file mode 100644
index 231ed45..0000000
--- a/sys-fs/mtd-utils/files/0005-move-_GNU_SOURCE-to-the-main-makefile.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From d3585169ebb7ec8d7172260d015ac486872e730a Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Wed, 8 May 2013 12:08:18 -0400
-Subject: [PATCH [mtd-utils] 05/12] move _GNU_SOURCE to the main makefile
-
-A bunch of utils are relying on _GNU_SOURCE already.  The new prompt code
-uses getline() which is now part of POSIX, but in older versions of glibc,
-it was behind _GNU_SOURCE as it was a GNU extension.
-
-This change doesn't actually tie us to glibc.  Only code that uses GNU
-extensions does that.  It just kills warning when using older versions of
-glibc.
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- Makefile                | 2 +-
- include/xalloc.h        | 2 +-
- mkfs.jffs2.c            | 1 -
- mkfs.ubifs/mkfs.ubifs.h | 2 --
- nanddump.c              | 1 -
- nandtest.c              | 1 -
- nandwrite.c             | 1 -
- 7 files changed, 2 insertions(+), 8 deletions(-)
-
-diff --git a/Makefile b/Makefile
-index c8d25f2..bf57a13 100644
---- a/Makefile
-+++ b/Makefile
-@@ -3,7 +3,7 @@
- 
- VERSION = 1.5.0
- 
--CPPFLAGS += -I./include -I$(BUILDDIR)/include -I./ubi-utils/include $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)
-+CPPFLAGS += -D_GNU_SOURCE -I./include -I$(BUILDDIR)/include -I./ubi-utils/include $(ZLIBCPPFLAGS) $(LZOCPPFLAGS)
- 
- ifeq ($(WITHOUT_XATTR), 1)
-   CPPFLAGS += -DWITHOUT_XATTR
-diff --git a/include/xalloc.h b/include/xalloc.h
-index f1cc8d4..532b80f 100644
---- a/include/xalloc.h
-+++ b/include/xalloc.h
-@@ -27,6 +27,7 @@
- #ifndef __MTD_UTILS_XALLOC_H__
- #define __MTD_UTILS_XALLOC_H__
- 
-+#include <stdarg.h>
- #include <stdlib.h>
- #include <string.h>
- 
-@@ -84,7 +85,6 @@ static char *xstrdup(const char *s)
- }
- 
- #ifdef _GNU_SOURCE
--#include <stdarg.h>
- 
- __attribute__((unused))
- static int xasprintf(char **strp, const char *fmt, ...)
-diff --git a/mkfs.jffs2.c b/mkfs.jffs2.c
-index 7ade078..c1b0f0d 100644
---- a/mkfs.jffs2.c
-+++ b/mkfs.jffs2.c
-@@ -49,7 +49,6 @@
- 
- #define PROGRAM_NAME "mkfs.jffs2"
- 
--#define _GNU_SOURCE
- #include <sys/types.h>
- #include <stdio.h>
- #include <sys/stat.h>
-diff --git a/mkfs.ubifs/mkfs.ubifs.h b/mkfs.ubifs/mkfs.ubifs.h
-index 01161ef..6030c48 100644
---- a/mkfs.ubifs/mkfs.ubifs.h
-+++ b/mkfs.ubifs/mkfs.ubifs.h
-@@ -23,8 +23,6 @@
- #ifndef __MKFS_UBIFS_H__
- #define __MKFS_UBIFS_H__
- 
--#define _GNU_SOURCE
--#define _LARGEFILE64_SOURCE
- #include <unistd.h>
- #include <stdlib.h>
- #include <stdio.h>
-diff --git a/nanddump.c b/nanddump.c
-index be458c6..85ccd5d 100644
---- a/nanddump.c
-+++ b/nanddump.c
-@@ -15,7 +15,6 @@
- 
- #define PROGRAM_NAME "nanddump"
- 
--#define _GNU_SOURCE
- #include <ctype.h>
- #include <errno.h>
- #include <fcntl.h>
-diff --git a/nandtest.c b/nandtest.c
-index 0187b87..3437b57 100644
---- a/nandtest.c
-+++ b/nandtest.c
-@@ -1,6 +1,5 @@
- #define PROGRAM_NAME "nandtest"
- 
--#define _GNU_SOURCE
- #include <ctype.h>
- #include <errno.h>
- #include <fcntl.h>
-diff --git a/nandwrite.c b/nandwrite.c
-index de8e7d2..a6b6581 100644
---- a/nandwrite.c
-+++ b/nandwrite.c
-@@ -21,7 +21,6 @@
- 
- #define PROGRAM_NAME "nandwrite"
- 
--#define _GNU_SOURCE
- #include <ctype.h>
- #include <errno.h>
- #include <fcntl.h>
--- 
-1.8.2.1
-
diff --git a/sys-fs/mtd-utils/files/0006-mtd-utils-new-prompt-helper-for-talking-to-the-user.patch b/sys-fs/mtd-utils/files/0006-mtd-utils-new-prompt-helper-for-talking-to-the-user.patch
deleted file mode 100644
index 6e86872..0000000
--- a/sys-fs/mtd-utils/files/0006-mtd-utils-new-prompt-helper-for-talking-to-the-user.patch
+++ /dev/null
@@ -1,149 +0,0 @@
-From b5584b0235bc0cb98e63e1b338cfd9cd09d29978 Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Tue, 7 May 2013 18:14:22 -0400
-Subject: [PATCH [mtd-utils] 06/12] mtd-utils: new prompt() helper for talking
- to the user
-
-We've got a few tools that prompt the user for "yes/no" questions.
-Add a common helper to simplify the various implementations.
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- flash_otp_lock.c      |  6 +++---
- ftl_format.c          | 11 +++--------
- include/common.h      | 39 ++++++++++++++++++++++++++++++++++++++-
- ubi-utils/ubiformat.c | 39 +++++++--------------------------------
- 4 files changed, 51 insertions(+), 44 deletions(-)
-
-diff --git a/include/common.h b/include/common.h
-index d0c4146..4ffccea 100644
---- a/include/common.h
-+++ b/include/common.h
-@@ -19,6 +19,7 @@
- #ifndef __MTD_UTILS_COMMON_H__
- #define __MTD_UTILS_COMMON_H__
- 
-+#include <stdbool.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <ctype.h>
-@@ -101,9 +102,45 @@ extern "C" {
- 	fprintf(stderr, "%s: warning!: " fmt "\n", PROGRAM_NAME, ##__VA_ARGS__); \
- } while(0)
- 
-+/**
-+ * prompt the user for confirmation
-+ */
-+static inline bool prompt(const char *msg, bool def)
-+{
-+	char *line = NULL;
-+	size_t len;
-+	bool ret = def;
-+
-+	do {
-+		normsg_cont("%s (%c/%c) ", msg, def ? 'Y' : 'y', def ? 'n' : 'N');
-+		fflush(stdout);
-+
-+		while (getline(&line, &len, stdin) == -1) {
-+			printf("failed to read prompt; assuming '%s'\n",
-+				def ? "yes" : "no");
-+			break;
-+		}
-+
-+		if (strcmp("\n", line) != 0) {
-+			switch (rpmatch(line)) {
-+			case 0: ret = false; break;
-+			case 1: ret = true; break;
-+			case -1:
-+				puts("unknown response; please try again");
-+				continue;
-+			}
-+		}
-+		break;
-+	} while (1);
-+
-+	free(line);
-+
-+	return ret;
-+}
-+
- static inline int is_power_of_2(unsigned long long n)
- {
--	        return (n != 0 && ((n & (n - 1)) == 0));
-+	return (n != 0 && ((n & (n - 1)) == 0));
- }
- 
- /**
-diff --git a/ubi-utils/ubiformat.c b/ubi-utils/ubiformat.c
-index 899f9fc..97a4eab 100644
---- a/ubi-utils/ubiformat.c
-+++ b/ubi-utils/ubiformat.c
-@@ -243,35 +243,12 @@ static int parse_opt(int argc, char * const argv[])
- 
- static int want_exit(void)
- {
--	char buf[4];
--
--	while (1) {
--		normsg_cont("continue? (yes/no)  ");
--		if (scanf("%3s", buf) == EOF) {
--			sys_errmsg("scanf returned unexpected EOF, assume \"yes\"");
--			return 1;
--		}
--		if (!strncmp(buf, "yes", 3) || !strncmp(buf, "y", 1))
--			return 0;
--		if (!strncmp(buf, "no", 2) || !strncmp(buf, "n", 1))
--			return 1;
--	}
-+	return prompt("continue?", false) == true ? 0 : 1;
- }
- 
--static int answer_is_yes(void)
-+static int answer_is_yes(const char *msg)
- {
--	char buf[4];
--
--	while (1) {
--		if (scanf("%3s", buf) == EOF) {
--			sys_errmsg("scanf returned unexpected EOF, assume \"no\"");
--			return 0;
--		}
--		if (!strncmp(buf, "yes", 3) || !strncmp(buf, "y", 1))
--			return 1;
--		if (!strncmp(buf, "no", 2) || !strncmp(buf, "n", 1))
--			return 0;
--	}
-+	return prompt(msg ? : "continue?", false);
- }
- 
- static void print_bad_eraseblocks(const struct mtd_dev_info *mtd,
-@@ -412,11 +389,9 @@ static int mark_bad(const struct mtd_dev_info *mtd, struct ubi_scan_info *si, in
- {
- 	int err;
- 
--	if (!args.yes) {
--		normsg_cont("mark it as bad? Continue (yes/no) ");
--		if (!answer_is_yes())
-+	if (!args.yes)
-+		if (!answer_is_yes("mark it as bad?"))
- 			return -1;
--	}
- 
- 	if (!args.quiet)
- 		normsg_cont("marking block %d bad", eb);
-@@ -922,10 +897,10 @@ int main(int argc, char * const argv[])
- 				"which is different to requested offsets %d and %d",
- 				si->vid_hdr_offs, si->data_offs, ui.vid_hdr_offs,
- 				ui.data_offs);
--			normsg_cont("use new offsets %d and %d? (yes/no)  ",
-+			normsg_cont("use new offsets %d and %d? ",
- 				    ui.vid_hdr_offs, ui.data_offs);
- 		}
--		if (args.yes || answer_is_yes()) {
-+		if (args.yes || answer_is_yes(NULL)) {
- 			if (args.yes && !args.quiet)
- 				printf("yes\n");
- 		} else
--- 
-1.8.2.1
-
diff --git a/sys-fs/mtd-utils/files/0007-mkfs.ubifs-allow-reformatting-of-devices.patch b/sys-fs/mtd-utils/files/0007-mkfs.ubifs-allow-reformatting-of-devices.patch
deleted file mode 100644
index b6de90e..0000000
--- a/sys-fs/mtd-utils/files/0007-mkfs.ubifs-allow-reformatting-of-devices.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-From 352d1aa609d6fbf9d4ad1e2f1009c053bd0f949c Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Wed, 8 May 2013 11:56:31 -0400
-Subject: [PATCH [mtd-utils] 07/12] mkfs.ubifs: allow reformatting of devices
-
-Sometimes I want to re-initialize an existing ubifs, but the tool
-currently bails out if the volume is already formatted.  Prompt the
-user instead so they can decide.
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- mkfs.ubifs/mkfs.ubifs.c | 14 +++++++++++---
- 1 file changed, 11 insertions(+), 3 deletions(-)
-
-diff --git a/mkfs.ubifs/mkfs.ubifs.c b/mkfs.ubifs/mkfs.ubifs.c
-index 2bb819e..427e37d 100644
---- a/mkfs.ubifs/mkfs.ubifs.c
-+++ b/mkfs.ubifs/mkfs.ubifs.c
-@@ -103,6 +103,7 @@ static libubi_t ubi;
- /* Debug levels are: 0 (none), 1 (statistics), 2 (files) ,3 (more details) */
- int debug_level;
- int verbose;
-+int yes;
- 
- static char *root;
- static int root_len;
-@@ -133,7 +134,7 @@ static struct inum_mapping **hash_table;
- /* Inode creation sequence number */
- static unsigned long long creat_sqnum;
- 
--static const char *optstring = "d:r:m:o:D:h?vVe:c:g:f:Fp:k:x:X:j:R:l:j:UQq";
-+static const char *optstring = "d:r:m:o:D:yh?vVe:c:g:f:Fp:k:x:X:j:R:l:j:UQq";
- 
- static const struct option longopts[] = {
- 	{"root",               1, NULL, 'r'},
-@@ -142,6 +143,7 @@ static const struct option longopts[] = {
- 	{"max-leb-cnt",        1, NULL, 'c'},
- 	{"output",             1, NULL, 'o'},
- 	{"devtable",           1, NULL, 'D'},
-+	{"yes",                0, NULL, 'y'},
- 	{"help",               0, NULL, 'h'},
- 	{"verbose",            0, NULL, 'v'},
- 	{"version",            0, NULL, 'V'},
-@@ -191,6 +193,7 @@ static const char *helptext =
- "-U, --squash-uids        squash owners making all files owned by root\n"
- "-l, --log-lebs=COUNT     count of erase blocks for the log (used only for\n"
- "                         debugging)\n"
-+"-y, --yes                assume the answer is \"yes\" for all questions\n"
- "-v, --verbose            verbose operation\n"
- "-V, --version            display version information\n"
- "-g, --debug=LEVEL        display debug information (0 - none, 1 - statistics,\n"
-@@ -539,6 +542,9 @@ static int get_options(int argc, char**argv)
- 				return sys_err_msg("bad device table file '%s'",
- 						   tbl_file);
- 			break;
-+		case 'y':
-+			yes = 1;
-+			break;
- 		case 'h':
- 		case '?':
- 			printf("%s", helptext);
-@@ -2098,8 +2104,10 @@ static int open_target(void)
- 		if (ubi_set_property(out_fd, UBI_VOL_PROP_DIRECT_WRITE, 1))
- 			return sys_err_msg("ubi_set_property failed");
- 
--		if (check_volume_empty())
--			return err_msg("UBI volume is not empty");
-+		if (!yes && check_volume_empty()) {
-+			if (!prompt("UBI volume is not empty.  Format anyways?", false))
-+				return err_msg("UBI volume is not empty");
-+		}
- 	} else {
- 		out_fd = open(output, O_CREAT | O_RDWR | O_TRUNC,
- 			      S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH);
--- 
-1.8.2.1
-
diff --git a/sys-fs/mtd-utils/files/0008-fix-build-errors-w-newer-kernel-headers-glibc.patch b/sys-fs/mtd-utils/files/0008-fix-build-errors-w-newer-kernel-headers-glibc.patch
deleted file mode 100644
index 52fcc95..0000000
--- a/sys-fs/mtd-utils/files/0008-fix-build-errors-w-newer-kernel-headers-glibc.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From e143a7e6220e0ce740840c36278955fd640d2439 Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Wed, 8 May 2013 12:22:59 -0400
-Subject: [PATCH [mtd-utils] 08/12] fix build errors w/newer kernel headers &
- glibc
-
-Building with linux-headers-3.9 and glibc-2.17 fails like so:
-In file included from summary.h:15:0,
-                 from jffs2dump.c:37:
-/usr/include/linux/uio.h:16:8: error: redefinition of 'struct iovec'
- struct iovec
-        ^
-In file included from /usr/include/bits/fcntl-linux.h:38:0,
-                 from /usr/include/bits/fcntl.h:61,
-                 from /usr/include/fcntl.h:35,
-                 from jffs2dump.c:25:
-/usr/include/bits/uio.h:43:8: note: originally defined here
- struct iovec
-        ^
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- summary.h | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/summary.h b/summary.h
-index 95f25c6..e9d95a5 100644
---- a/summary.h
-+++ b/summary.h
-@@ -12,7 +12,6 @@
- #ifndef JFFS2_SUMMARY_H
- #define JFFS2_SUMMARY_H
- 
--#include <linux/uio.h>
- #include <linux/jffs2.h>
- 
- #define DIRTY_SPACE(x) do { typeof(x) _x = (x); \
--- 
-1.8.2.1
-
diff --git a/sys-fs/mtd-utils/files/0009-nand-dump-test-write-clean-up-help-handling.patch b/sys-fs/mtd-utils/files/0009-nand-dump-test-write-clean-up-help-handling.patch
deleted file mode 100644
index 03981a0..0000000
--- a/sys-fs/mtd-utils/files/0009-nand-dump-test-write-clean-up-help-handling.patch
+++ /dev/null
@@ -1,241 +0,0 @@
-From 13136162a073c90b24b61ac9919c785bb9ea65e2 Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Wed, 8 May 2013 16:56:35 -0400
-Subject: [PATCH [mtd-utils] 09/12] nand{dump,test,write}: clean up --help
- handling
-
-We should send the output to stdout when the user passes -h/--help
-and then exit(0), but otherwise the output should go to stderr and
-then exit(1).
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- nanddump.c  | 24 ++++++++++++------------
- nandtest.c  | 16 ++++++++++------
- nandwrite.c | 26 +++++++++++++-------------
- 3 files changed, 35 insertions(+), 31 deletions(-)
-
-diff --git a/nanddump.c b/nanddump.c
-index 85ccd5d..c72d12b 100644
---- a/nanddump.c
-+++ b/nanddump.c
-@@ -33,13 +33,13 @@
- #include "common.h"
- #include <libmtd.h>
- 
--static void display_help(void)
-+static void display_help(int status)
- {
--	printf(
-+	fprintf(status == EXIT_SUCCESS ? stdout : stderr,
- "Usage: %s [OPTIONS] MTD-device\n"
- "Dumps the contents of a nand mtd partition.\n"
- "\n"
--"           --help               Display this help and exit\n"
-+"-h         --help               Display this help and exit\n"
- "           --version            Output version information and exit\n"
- "           --bb=METHOD          Choose bad block handling method (see below).\n"
- "-a         --forcebinary        Force printing of binary data to tty\n"
-@@ -58,7 +58,7 @@ static void display_help(void)
- "    dumpbad: dump flash data, including any bad blocks\n"
- "    skipbad: dump good data, completely skipping any bad blocks (default)\n",
- 	PROGRAM_NAME);
--	exit(EXIT_SUCCESS);
-+	exit(status);
- }
- 
- static void display_version(void)
-@@ -101,12 +101,12 @@ static void process_options(int argc, char * const argv[])
- 
- 	for (;;) {
- 		int option_index = 0;
--		static const char *short_options = "s:f:l:opqnca";
-+		static const char short_options[] = "hs:f:l:opqnca";
- 		static const struct option long_options[] = {
--			{"help", no_argument, 0, 0},
- 			{"version", no_argument, 0, 0},
- 			{"bb", required_argument, 0, 0},
- 			{"omitoob", no_argument, 0, 0},
-+			{"help", no_argument, 0, 'h'},
- 			{"forcebinary", no_argument, 0, 'a'},
- 			{"canonicalprint", no_argument, 0, 'c'},
- 			{"file", required_argument, 0, 'f'},
-@@ -129,12 +129,9 @@ static void process_options(int argc, char * const argv[])
- 			case 0:
- 				switch (option_index) {
- 					case 0:
--						display_help();
--						break;
--					case 1:
- 						display_version();
- 						break;
--					case 2:
-+					case 1:
- 						/* Handle --bb=METHOD */
- 						if (!strcmp(optarg, "padbad"))
- 							bb_method = padbad;
-@@ -145,7 +142,7 @@ static void process_options(int argc, char * const argv[])
- 						else
- 							error++;
- 						break;
--					case 3: /* --omitoob */
-+					case 2: /* --omitoob */
- 						if (oob_default) {
- 							oob_default = false;
- 							omitoob = true;
-@@ -189,6 +186,9 @@ static void process_options(int argc, char * const argv[])
- 			case 'n':
- 				noecc = true;
- 				break;
-+			case 'h':
-+				display_help(EXIT_SUCCESS);
-+				break;
- 			case '?':
- 				error++;
- 				break;
-@@ -216,7 +216,7 @@ static void process_options(int argc, char * const argv[])
- 	}
- 
- 	if ((argc - optind) != 1 || error)
--		display_help();
-+		display_help(EXIT_FAILURE);
- 
- 	mtddev = argv[optind];
- }
-diff --git a/nandtest.c b/nandtest.c
-index 3437b57..1876bb2 100644
---- a/nandtest.c
-+++ b/nandtest.c
-@@ -16,9 +16,10 @@
- #include <asm/types.h>
- #include "mtd/mtd-user.h"
- 
--void usage(void)
-+void usage(int status)
- {
--	fprintf(stderr, "usage: %s [OPTIONS] <device>\n\n"
-+	fprintf(status ? stderr : stdout,
-+		"usage: %s [OPTIONS] <device>\n\n"
- 		"  -h, --help           Display this help output\n"
- 		"  -m, --markbad        Mark blocks bad if they appear so\n"
- 		"  -s, --seed           Supply random seed\n"
-@@ -27,7 +28,7 @@ void usage(void)
- 		"  -l, --length         Length of flash to test\n"
- 		"  -k, --keep           Restore existing contents after test\n",
- 		PROGRAM_NAME);
--	exit(1);
-+	exit(status);
- }
- 
- struct mtd_info_user meminfo;
-@@ -142,7 +143,7 @@ int main(int argc, char **argv)
- 	seed = time(NULL);
- 
- 	for (;;) {
--		static const char *short_options="hkl:mo:p:s:";
-+		static const char short_options[] = "hkl:mo:p:s:";
- 		static const struct option long_options[] = {
- 			{ "help", no_argument, 0, 'h' },
- 			{ "markbad", no_argument, 0, 'm' },
-@@ -160,8 +161,11 @@ int main(int argc, char **argv)
- 
- 		switch (c) {
- 		case 'h':
-+			usage(0);
-+			break;
-+
- 		case '?':
--			usage();
-+			usage(1);
- 			break;
- 
- 		case 'm':
-@@ -191,7 +195,7 @@ int main(int argc, char **argv)
- 		}
- 	}
- 	if (argc - optind != 1)
--		usage();
-+		usage(1);
- 
- 	fd = open(argv[optind], O_RDWR);
- 	if (fd < 0) {
-diff --git a/nandwrite.c b/nandwrite.c
-index a6b6581..edf9f83 100644
---- a/nandwrite.c
-+++ b/nandwrite.c
-@@ -42,9 +42,9 @@
- #include "common.h"
- #include <libmtd.h>
- 
--static void display_help(void)
-+static void display_help(int status)
- {
--	printf(
-+	fprintf(status == EXIT_SUCCESS ? stdout : stderr,
- "Usage: nandwrite [OPTION] MTD_DEVICE [INPUTFILE|-]\n"
- "Writes to the specified MTD device.\n"
- "\n"
-@@ -58,10 +58,10 @@ static void display_help(void)
- "  -p, --pad               Pad to page size\n"
- "  -b, --blockalign=1|2|4  Set multiple of eraseblocks to align to\n"
- "  -q, --quiet             Don't display progress messages\n"
--"      --help              Display this help and exit\n"
-+"  -h, --help              Display this help and exit\n"
- "      --version           Output version information and exit\n"
- 	);
--	exit(EXIT_SUCCESS);
-+	exit(status);
- }
- 
- static void display_version(void)
-@@ -99,10 +99,10 @@ static void process_options(int argc, char * const argv[])
- 
- 	for (;;) {
- 		int option_index = 0;
--		static const char *short_options = "b:mnNoOpqs:a";
-+		static const char short_options[] = "hb:mnNoOpqs:a";
- 		static const struct option long_options[] = {
--			{"help", no_argument, 0, 0},
- 			{"version", no_argument, 0, 0},
-+			{"help", no_argument, 0, 'h'},
- 			{"blockalign", required_argument, 0, 'b'},
- 			{"markbad", no_argument, 0, 'm'},
- 			{"noecc", no_argument, 0, 'n'},
-@@ -124,12 +124,9 @@ static void process_options(int argc, char * const argv[])
- 		switch (c) {
- 			case 0:
- 				switch (option_index) {
--					case 0:
--						display_help();
--						break;
--					case 1:
--						display_version();
--						break;
-+					case 0: /* --version */
-+						display_version();
-+						break;
- 				}
- 				break;
- 			case 'q':
-@@ -163,6 +160,9 @@ static void process_options(int argc, char * const argv[])
- 			case 'a':
- 				autoplace = true;
- 				break;
-+			case 'h':
-+				display_help(EXIT_SUCCESS);
-+				break;
- 			case '?':
- 				error++;
- 				break;
-@@ -192,7 +192,7 @@ static void process_options(int argc, char * const argv[])
- 	 */
- 
- 	if (argc < 1 || argc > 2 || error)
--		display_help();
-+		display_help(EXIT_FAILURE);
- 
- 	mtd_device = argv[0];
- 
--- 
-1.8.2.1
-
diff --git a/sys-fs/mtd-utils/files/0010-use-xstrdup-in-a-few-more-places.patch b/sys-fs/mtd-utils/files/0010-use-xstrdup-in-a-few-more-places.patch
deleted file mode 100644
index b4702e3..0000000
--- a/sys-fs/mtd-utils/files/0010-use-xstrdup-in-a-few-more-places.patch
+++ /dev/null
@@ -1,83 +0,0 @@
-From 8b9a95e55a099e89ace56a6e30504e0173f074c3 Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Wed, 8 May 2013 17:00:00 -0400
-Subject: [PATCH [mtd-utils] 10/12] use xstrdup in a few more places
-
-These call sites either assume there is no failure (they deref the
-pointer right away), or the exit themselves.  Use xstrdup() instead.
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- jffs2reader.c           | 2 +-
- mkfs.jffs2.c            | 2 +-
- mkfs.ubifs/mkfs.ubifs.c | 4 ++--
- nanddump.c              | 5 +----
- 4 files changed, 5 insertions(+), 8 deletions(-)
-
-diff --git a/jffs2reader.c b/jffs2reader.c
-index 5231ff0..a62da9a 100644
---- a/jffs2reader.c
-+++ b/jffs2reader.c
-@@ -694,7 +694,7 @@ struct jffs2_raw_dirent *resolvepath0(char *o, size_t size, uint32_t ino,
- 		return NULL;
- 	}
- 
--	pp = path = strdup(p);
-+	pp = path = xstrdup(p);
- 
- 	if (*path == '/') {
- 		path++;
-diff --git a/mkfs.jffs2.c b/mkfs.jffs2.c
-index c1b0f0d..f09c0b2 100644
---- a/mkfs.jffs2.c
-+++ b/mkfs.jffs2.c
-@@ -469,7 +469,7 @@ static int interpret_table_entry(struct filesystem_entry *root, char *line)
- 	} else {
- 		/* If parent is NULL (happens with device table entries),
- 		 * try and find our parent now) */
--		tmp = strdup(name);
-+		tmp = xstrdup(name);
- 		dir = dirname(tmp);
- 		parent = find_filesystem_entry(root, dir, S_IFDIR);
- 		free(tmp);
-diff --git a/mkfs.ubifs/mkfs.ubifs.c b/mkfs.ubifs/mkfs.ubifs.c
-index 427e37d..f9977bc 100644
---- a/mkfs.ubifs/mkfs.ubifs.c
-+++ b/mkfs.ubifs/mkfs.ubifs.c
-@@ -534,7 +534,7 @@ static int get_options(int argc, char**argv)
- 				return err_msg("bad maximum LEB count");
- 			break;
- 		case 'o':
--			output = strdup(optarg);
-+			output = xstrdup(optarg);
- 			break;
- 		case 'D':
- 			tbl_file = optarg;
-@@ -627,7 +627,7 @@ static int get_options(int argc, char**argv)
- 	}
- 
- 	if (optind != argc && !output)
--		output = strdup(argv[optind]);
-+		output = xstrdup(argv[optind]);
- 
- 	if (!output)
- 		return err_msg("not output device or file specified");
-diff --git a/nanddump.c b/nanddump.c
-index c72d12b..4ee7ed4 100644
---- a/nanddump.c
-+++ b/nanddump.c
-@@ -156,10 +156,7 @@ static void process_options(int argc, char * const argv[])
- 				start_addr = simple_strtoll(optarg, &error);
- 				break;
- 			case 'f':
--				if (!(dumpfile = strdup(optarg))) {
--					perror("stddup");
--					exit(EXIT_FAILURE);
--				}
-+				dumpfile = xstrdup(optarg);
- 				break;
- 			case 'l':
- 				length = simple_strtoll(optarg, &error);
--- 
-1.8.2.1
-
diff --git a/sys-fs/mtd-utils/files/0011-nandwrite-clean-up-length-types.patch b/sys-fs/mtd-utils/files/0011-nandwrite-clean-up-length-types.patch
deleted file mode 100644
index 14dfea0..0000000
--- a/sys-fs/mtd-utils/files/0011-nandwrite-clean-up-length-types.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From 8b62f806233a99642d8d06bcdcceb44edf851f1e Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Wed, 8 May 2013 17:16:58 -0400
-Subject: [PATCH [mtd-utils] 11/12] nandwrite: clean up length types
-
-We use 'int' in many places to represent offsets/sizes.  That obviously
-does not play well with larger NAND devices on 32bit systems.  Instead,
-use the right type as needed:
- - long long to represent the length of the image
- - use fstat() rather than lseek();lseek(); to get the length of the image
- - use size_t/ssize_t when working with read()
- - tweak the printf formats as needed
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- nandwrite.c | 37 +++++++++++++++++++++----------------
- 1 file changed, 21 insertions(+), 16 deletions(-)
-
-diff --git a/nandwrite.c b/nandwrite.c
-index edf9f83..14414b6 100644
---- a/nandwrite.c
-+++ b/nandwrite.c
-@@ -218,10 +218,10 @@ static void erase_buffer(void *buffer, size_t size)
-  */
- int main(int argc, char * const argv[])
- {
--	int cnt = 0;
- 	int fd = -1;
- 	int ifd = -1;
--	int imglen = 0, pagelen;
-+	int pagelen;
-+	long long imglen = 0;
- 	bool baderaseblock = false;
- 	long long blockstart = -1;
- 	struct mtd_dev_info mtd;
-@@ -313,8 +313,12 @@ int main(int argc, char * const argv[])
- 	if (ifd == STDIN_FILENO) {
- 	    imglen = pagelen;
- 	} else {
--	    imglen = lseek(ifd, 0, SEEK_END);
--	    lseek(ifd, 0, SEEK_SET);
-+		struct stat st;
-+		if (fstat(ifd, &st)) {
-+			sys_errmsg("unable to stat input image");
-+			goto closeall;
-+		}
-+	    imglen = st.st_size;
- 	}
- 
- 	/* Check, if file is page-aligned */
-@@ -326,7 +330,7 @@ int main(int argc, char * const argv[])
- 
- 	/* Check, if length fits into device */
- 	if (((imglen / pagelen) * mtd.min_io_size) > (mtd.size - mtdoffset)) {
--		fprintf(stderr, "Image %d bytes, NAND page %d bytes, OOB area %d"
-+		fprintf(stderr, "Image %lld bytes, NAND page %d bytes, OOB area %d"
- 				" bytes, device size %lld bytes\n",
- 				imglen, pagelen, mtd.oob_size, mtd.size);
- 		sys_errmsg("Input file does not fit into device");
-@@ -412,10 +416,10 @@ int main(int argc, char * const argv[])
- 
- 		/* Read more data from the input if there isn't enough in the buffer */
- 		if ((writebuf + mtd.min_io_size) > (filebuf + filebuf_len)) {
--			int readlen = mtd.min_io_size;
--
--			int alreadyread = (filebuf + filebuf_len) - writebuf;
--			int tinycnt = alreadyread;
-+			size_t readlen = mtd.min_io_size;
-+			size_t alreadyread = (filebuf + filebuf_len) - writebuf;
-+			size_t tinycnt = alreadyread;
-+			ssize_t cnt = 0;
- 
- 			while (tinycnt < readlen) {
- 				cnt = read(ifd, writebuf + tinycnt, readlen - tinycnt);
-@@ -444,7 +449,7 @@ int main(int argc, char * const argv[])
- 			if (tinycnt < readlen) {
- 				if (!pad) {
- 					fprintf(stderr, "Unexpected EOF. Expecting at least "
--							"%d more bytes. Use the padding option.\n",
-+							"%zu more bytes. Use the padding option.\n",
- 							readlen - tinycnt);
- 					goto closeall;
- 				}
-@@ -465,9 +470,10 @@ int main(int argc, char * const argv[])
- 
- 			/* Read more data for the OOB from the input if there isn't enough in the buffer */
- 			if ((oobbuf + mtd.oob_size) > (filebuf + filebuf_len)) {
--				int readlen = mtd.oob_size;
--				int alreadyread = (filebuf + filebuf_len) - oobbuf;
--				int tinycnt = alreadyread;
-+				size_t readlen = mtd.oob_size;
-+				size_t alreadyread = (filebuf + filebuf_len) - oobbuf;
-+				size_t tinycnt = alreadyread;
-+				ssize_t cnt;
- 
- 				while (tinycnt < readlen) {
- 					cnt = read(ifd, oobbuf + tinycnt, readlen - tinycnt);
-@@ -482,7 +488,7 @@ int main(int argc, char * const argv[])
- 
- 				if (tinycnt < readlen) {
- 					fprintf(stderr, "Unexpected EOF. Expecting at least "
--							"%d more bytes for OOB\n", readlen - tinycnt);
-+							"%zu more bytes for OOB\n", readlen - tinycnt);
- 					goto closeall;
- 				}
- 
-@@ -505,7 +511,7 @@ int main(int argc, char * const argv[])
- 				writeoob ? mtd.oob_size : 0,
- 				write_mode);
- 		if (ret) {
--			int i;
-+			long long i;
- 			if (errno != EIO) {
- 				sys_errmsg("%s: MTD write failure", mtd_device);
- 				goto closeall;
-@@ -520,9 +526,8 @@ int main(int argc, char * const argv[])
- 				if (mtd_erase(mtd_desc, &mtd, fd, i / mtd.eb_size)) {
- 					int errno_tmp = errno;
- 					sys_errmsg("%s: MTD Erase failure", mtd_device);
--					if (errno_tmp != EIO) {
-+					if (errno_tmp != EIO)
- 						goto closeall;
--					}
- 				}
- 			}
- 
--- 
-1.8.2.1
-
diff --git a/sys-fs/mtd-utils/files/0012-nandwrite-add-input-skip-size-options.patch b/sys-fs/mtd-utils/files/0012-nandwrite-add-input-skip-size-options.patch
deleted file mode 100644
index 7c05767..0000000
--- a/sys-fs/mtd-utils/files/0012-nandwrite-add-input-skip-size-options.patch
+++ /dev/null
@@ -1,120 +0,0 @@
-From b716fec62f7e8e6a077e5cdf5a1e744f1c388a8c Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Wed, 8 May 2013 18:44:06 -0400
-Subject: [PATCH [mtd-utils] 12/12] nandwrite: add --input-{skip,size} options
-
-If you have a file image and want to copy sub-portions out and into
-NAND, there's no easy way to do that.  You can use dd to extract it
-to a temp file, or pipe it to nandwrite 1 page at a time.  Both suck.
-
-Add two new flags to explicitly set the size and offset of the input
-file.  Seeking stdin isn't currently supported as I'm not sure it's
-necessary.  It wouldn't be hard to add though...
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- nandwrite.c | 54 ++++++++++++++++++++++++++++++++++--------------------
- 1 file changed, 34 insertions(+), 20 deletions(-)
-
-diff --git a/nandwrite.c b/nandwrite.c
-index 14414b6..70579a3 100644
---- a/nandwrite.c
-+++ b/nandwrite.c
-@@ -52,11 +52,13 @@ static void display_help(int status)
- "  -m, --markbad           Mark blocks bad if write fails\n"
- "  -n, --noecc             Write without ecc\n"
- "  -N, --noskipbad         Write without bad block skipping\n"
--"  -o, --oob               Image contains oob data\n"
--"  -O, --onlyoob           Image contains oob data and only write the oob part\n"
--"  -s addr, --start=addr   Set start address (default is 0)\n"
--"  -p, --pad               Pad to page size\n"
-+"  -o, --oob               Input contains oob data\n"
-+"  -O, --onlyoob           Input contains oob data and only write the oob part\n"
-+"  -s addr, --start=addr   Set output start address (default is 0)\n"
-+"  -p, --pad               Pad writes to page size\n"
- "  -b, --blockalign=1|2|4  Set multiple of eraseblocks to align to\n"
-+"      --input-skip=length Skip |length| bytes of the input file\n"
-+"      --input-size=length Only read |length| bytes of the input file\n"
- "  -q, --quiet             Don't display progress messages\n"
- "  -h, --help              Display this help and exit\n"
- "      --version           Output version information and exit\n"
-@@ -83,6 +85,8 @@ static void display_version(void)
- static const char	*standard_input = "-";
- static const char	*mtd_device, *img;
- static long long	mtdoffset = 0;
-+static long long	inputskip = 0;
-+static long long	inputsize = 0;
- static bool		quiet = false;
- static bool		writeoob = false;
- static bool		onlyoob = false;
-@@ -101,7 +105,10 @@ static void process_options(int argc, char * const argv[])
- 		int option_index = 0;
- 		static const char short_options[] = "hb:mnNoOpqs:a";
- 		static const struct option long_options[] = {
-+			/* Order of these args with val==0 matters; see option_index. */
- 			{"version", no_argument, 0, 0},
-+			{"input-skip", required_argument, 0, 0},
-+			{"input-size", required_argument, 0, 0},
- 			{"help", no_argument, 0, 'h'},
- 			{"blockalign", required_argument, 0, 'b'},
- 			{"markbad", no_argument, 0, 'm'},
-@@ -127,6 +134,12 @@ static void process_options(int argc, char * const argv[])
- 					case 0: /* --version */
- 						display_version();
- 						break;
-+					case 1: /* --input-skip */
-+						inputskip = simple_strtoll(optarg, &error);
-+						break;
-+					case 2: /* --input-size */
-+						inputsize = simple_strtoll(optarg, &error);
-+						break;
- 				}
- 				break;
- 			case 'q':
-@@ -299,26 +312,27 @@ int main(int argc, char * const argv[])
- 
- 	pagelen = mtd.min_io_size + ((writeoob) ? mtd.oob_size : 0);
- 
--	/*
--	 * For the standard input case, the input size is merely an
--	 * invariant placeholder and is set to the write page
--	 * size. Otherwise, just use the input file size.
--	 *
--	 * TODO: Add support for the -l,--length=length option (see
--	 * previous discussion by Tommi Airikka <tommi.airikka@ericsson.com> at
--	 * <http://lists.infradead.org/pipermail/linux-mtd/2008-September/
--	 * 022913.html>
--	 */
--
- 	if (ifd == STDIN_FILENO) {
--	    imglen = pagelen;
-+		imglen = inputsize ? : pagelen;
-+		if (inputskip) {
-+			errmsg("seeking stdin not supported");
-+			goto closeall;
-+		}
- 	} else {
--		struct stat st;
--		if (fstat(ifd, &st)) {
--			sys_errmsg("unable to stat input image");
-+		if (!inputsize) {
-+			struct stat st;
-+			if (fstat(ifd, &st)) {
-+				sys_errmsg("unable to stat input image");
-+				goto closeall;
-+			}
-+			imglen = st.st_size - inputskip;
-+		} else
-+			imglen = inputsize;
-+
-+		if (inputskip && lseek(ifd, inputskip, SEEK_CUR) == -1) {
-+			sys_errmsg("lseek input by %lld failed", inputskip);
- 			goto closeall;
- 		}
--	    imglen = st.st_size;
- 	}
- 
- 	/* Check, if file is page-aligned */
--- 
-1.8.2.1
-
diff --git a/sys-fs/mtd-utils/files/0013-ubiupdatevol-add-a-skip-option.patch b/sys-fs/mtd-utils/files/0013-ubiupdatevol-add-a-skip-option.patch
deleted file mode 100644
index 741667d..0000000
--- a/sys-fs/mtd-utils/files/0013-ubiupdatevol-add-a-skip-option.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 4c4998004882f14170879655526657ea93a288f5 Mon Sep 17 00:00:00 2001
-From: Mike Frysinger <vapier@gentoo.org>
-Date: Thu, 9 May 2013 13:43:46 -0400
-Subject: [PATCH [mtd-utils] 2/2] ubiupdatevol: add a --skip option
-
-This already has a --size option for controlling how many bytes to read
-from the input.  Add a --skip option to control the offset into the input
-too.  This way people don't have to do `dd | ubiupdatevol`.
-
-Signed-off-by: Mike Frysinger <vapier@gentoo.org>
----
- ubi-utils/ubiupdatevol.c | 44 ++++++++++++++++++++++++++++++++------------
- 1 file changed, 32 insertions(+), 12 deletions(-)
-
-diff --git a/ubi-utils/ubiupdatevol.c b/ubi-utils/ubiupdatevol.c
-index 7fedb3c..84d5fbb 100644
---- a/ubi-utils/ubiupdatevol.c
-+++ b/ubi-utils/ubiupdatevol.c
-@@ -45,7 +45,8 @@ struct args {
- 	const char *img;
- 	/* For deprecated -d and -B options handling */
- 	char dev_name[256];
--	int size;
-+	long long size;
-+	long long skip;
- 	int use_stdin;
- };
- 
-@@ -56,7 +57,8 @@ static const char doc[] = PROGRAM_NAME " version " VERSION
- 
- static const char optionsstr[] =
- "-t, --truncate             truncate volume (wipe it out)\n"
--"-s, --size=<bytes>         bytes in input, if not reading from file\n"
-+"-s, --size=<bytes>         bytes to read from input\n"
-+"    --skip=<bytes>         leading bytes to skip from input\n"
- "-h, --help                 print help message\n"
- "-V, --version              print program version";
- 
-@@ -67,6 +69,8 @@ static const char usage[] =
- "Example 2: " PROGRAM_NAME " /dev/ubi0_1 -t - wipe out UBI volume /dev/ubi0_1";
- 
- static const struct option long_options[] = {
-+	/* Order matters for opts w/val=0; see option_index below. */
-+	{ .name = "skip",     .has_arg = 1, .flag = NULL, .val = 0 },
- 	{ .name = "truncate", .has_arg = 0, .flag = NULL, .val = 't' },
- 	{ .name = "help",     .has_arg = 0, .flag = NULL, .val = 'h' },
- 	{ .name = "version",  .has_arg = 0, .flag = NULL, .val = 'V' },
-@@ -77,19 +81,29 @@ static const struct option long_options[] = {
- static int parse_opt(int argc, char * const argv[])
- {
- 	while (1) {
--		int key, error = 0;
-+		int option_index, key, error = 0;
- 
--		key = getopt_long(argc, argv, "ts:h?V", long_options, NULL);
-+		key = getopt_long(argc, argv, "ts:h?V", long_options, &option_index);
- 		if (key == -1)
- 			break;
- 
- 		switch (key) {
-+		case 0:
-+			switch (option_index) {
-+			case 0: /* --skip */
-+				args.skip = simple_strtoull(optarg, &error);
-+				if (error || args.skip < 0)
-+					return errmsg("bad skip: " "\"%s\"", optarg);
-+				break;
-+			}
-+			break;
-+
- 		case 't':
- 			args.truncate = 1;
- 			break;
- 
- 		case 's':
--			args.size = simple_strtoul(optarg, &error);
-+			args.size = simple_strtoull(optarg, &error);
- 			if (error || args.size < 0)
- 				return errmsg("bad size: " "\"%s\"", optarg);
- 			break;
-@@ -198,7 +211,7 @@ static int update_volume(libubi_t libubi, struct ubi_vol_info *vol_info)
- 			goto out_free;
- 		}
- 
--		bytes = st.st_size;
-+		bytes = st.st_size - args.skip;
- 	} else
- 		bytes = args.size;
- 
-@@ -214,14 +227,23 @@ static int update_volume(libubi_t libubi, struct ubi_vol_info *vol_info)
- 		goto out_free;
- 	}
- 
--	if (args.use_stdin)
-+	if (args.use_stdin) {
- 		ifd = STDIN_FILENO;
--	else {
-+		if (args.skip) {
-+			errmsg("seeking stdin not supported");
-+			goto out_close1;
-+		}
-+	} else {
- 		ifd = open(args.img, O_RDONLY);
- 		if (ifd == -1) {
- 			sys_errmsg("cannot open \"%s\"", args.img);
- 			goto out_close1;
- 		}
-+
-+		if (args.skip && lseek(ifd, args.skip, SEEK_CUR) == -1) {
-+			sys_errmsg("lseek input by %lld failed", args.skip);
-+			goto out_close;
-+		}
- 	}
- 
- 	err = ubi_update_start(libubi, fd, bytes);
-@@ -231,10 +253,8 @@ static int update_volume(libubi_t libubi, struct ubi_vol_info *vol_info)
- 	}
- 
- 	while (bytes) {
--		int ret, to_copy = vol_info->leb_size;
--
--		if (to_copy > bytes)
--			to_copy = bytes;
-+		ssize_t ret;
-+		int to_copy = min(vol_info->leb_size, bytes);
- 
- 		ret = read(ifd, buf, to_copy);
- 		if (ret <= 0) {
--- 
-1.8.2.1
-
diff --git a/sys-fs/mtd-utils/files/0014-ubi-utils-Add-ubiblkvol-tool.patch b/sys-fs/mtd-utils/files/0014-ubi-utils-Add-ubiblkvol-tool.patch
deleted file mode 100644
index e0abb12a..0000000
--- a/sys-fs/mtd-utils/files/0014-ubi-utils-Add-ubiblkvol-tool.patch
+++ /dev/null
@@ -1,314 +0,0 @@
-From: Ezequiel Garcia
-Subject: [PATCH] ubi-utils: Add ubiblkvol tool
-Date: Sat, 18 May 2013 11:31:55 -0300
-
-With the addition of block device access to UBI volumes, we now
-add a simple userspace tool to access the new ioctls.
-
-Since the ioctls have no arguments, usage of this tool is as simple
-as it gets:
-
-  $ ubiblkvol --attach /dev/ubi0_0
-
-will make a new device /dev/ubiblock0_0 available, and
-
-  $ ubiblkvol --detach /dev/ubi0_0
-
-will remove the device.
-
-Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
----
- Makefile                   |   2 +-
- include/mtd/ubi-user.h     |  11 +++
- ubi-utils/.gitignore       |   1 +
- ubi-utils/include/libubi.h |  16 +++++
- ubi-utils/libubi.c         |  10 +++
- ubi-utils/ubiblkvol.c      | 176 +++++++++++++++++++++++++++++++++++++++++++++
- 6 files changed, 215 insertions(+), 1 deletion(-)
- create mode 100644 ubi-utils/ubiblkvol.c
-
-diff --git a/Makefile b/Makefile
-index c8d25f2..9ccda38 100644
---- a/Makefile
-+++ b/Makefile
-@@ -28,7 +28,7 @@ MTD_BINS = \
- 	sumtool jffs2reader
- UBI_BINS = \
- 	ubiupdatevol ubimkvol ubirmvol ubicrc32 ubinfo ubiattach \
--	ubidetach ubinize ubiformat ubirename mtdinfo ubirsvol
-+	ubidetach ubinize ubiformat ubirename mtdinfo ubirsvol ubiblkvol
- 
- BINS = $(MTD_BINS)
- BINS += mkfs.ubifs/mkfs.ubifs
-diff --git a/include/mtd/ubi-user.h b/include/mtd/ubi-user.h
-index 1c06d88..922d484 100644
---- a/include/mtd/ubi-user.h
-+++ b/include/mtd/ubi-user.h
-@@ -132,6 +132,13 @@
-  * used. A pointer to a &struct ubi_set_vol_prop_req object is expected to be
-  * passed. The object describes which property should be set, and to which value
-  * it should be set.
-+ *
-+ * Block device access to UBI volumes
-+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-+ *
-+ * To attach or detach a block device from an UBI volume the %UBI_IOCVOLATTBLK
-+ * and %UBI_IOCVOLDETBLK ioctl commands should be used, respectively.
-+ * These commands take no arguments.
-  */
- 
- /*
-@@ -186,6 +193,10 @@
- #define UBI_IOCEBISMAP _IOR(UBI_VOL_IOC_MAGIC, 5, int32_t)
- /* Set an UBI volume property */
- #define UBI_IOCSETPROP _IOW(UBI_VOL_IOC_MAGIC, 6, struct ubi_set_prop_req)
-+/* Attach a block device to an UBI volume */
-+#define UBI_IOCVOLATTBLK _IO(UBI_VOL_IOC_MAGIC, 7)
-+/* Detach a block device from an UBI volume */
-+#define UBI_IOCVOLDETBLK _IO(UBI_VOL_IOC_MAGIC, 8)
- 
- /* Maximum MTD device name length supported by UBI */
- #define MAX_UBI_MTD_NAME_LEN 127
-diff --git a/ubi-utils/.gitignore b/ubi-utils/.gitignore
-index c035c97..5c9cbd9 100644
---- a/ubi-utils/.gitignore
-+++ b/ubi-utils/.gitignore
-@@ -9,4 +9,5 @@
- /ubirmvol
- /ubiupdatevol
- /ubirsvol
-+/ubiblkvol
- /mtdinfo
-diff --git a/ubi-utils/include/libubi.h b/ubi-utils/include/libubi.h
-index 47f40e2..3759aa8 100644
---- a/ubi-utils/include/libubi.h
-+++ b/ubi-utils/include/libubi.h
-@@ -400,6 +400,22 @@ int ubi_get_vol_info1_nm(libubi_t desc, int dev_num, const char *name,
- 			 struct ubi_vol_info *info);
- 
- /**
-+ * ubi_vol_block_add - attach a block device to an UBI volume.
-+ * @fd: volume character device file descriptor
-+ *
-+ * Returns %0 in case of success and %-1 in case of failure.
-+ */
-+int ubi_vol_block_add(int fd);
-+
-+/**
-+ * ubi_vol_block_del - detach a block device from an UBI volume.
-+ * @fd: volume character device file descriptor
-+ *
-+ * Returns %0 in case of success and %-1 in case of failure.
-+ */
-+int ubi_vol_block_del(int fd);
-+
-+/**
-  * ubi_update_start - start UBI volume update.
-  * @desc: UBI library descriptor
-  * @fd: volume character device file descriptor
-diff --git a/ubi-utils/libubi.c b/ubi-utils/libubi.c
-index a7463e8..cb631f9 100644
---- a/ubi-utils/libubi.c
-+++ b/ubi-utils/libubi.c
-@@ -1109,6 +1109,16 @@ int ubi_rsvol(libubi_t desc, const char *node, int vol_id, long long bytes)
- 	return ret;
- }
- 
-+int ubi_vol_block_add(int fd)
-+{
-+	return ioctl(fd, UBI_IOCVOLATTBLK);
-+}
-+
-+int ubi_vol_block_del(int fd)
-+{
-+	return ioctl(fd, UBI_IOCVOLDETBLK);
-+}
-+
- int ubi_update_start(libubi_t desc, int fd, long long bytes)
- {
- 	desc = desc;
-diff --git a/ubi-utils/ubiblkvol.c b/ubi-utils/ubiblkvol.c
-new file mode 100644
-index 0000000..4d023cc
---- /dev/null
-+++ b/ubi-utils/ubiblkvol.c
-@@ -0,0 +1,176 @@
-+/*
-+ * ubiblkvol:
-+ *   An utility to attach block devices to UBI volumes.
-+ *
-+ * Copyright (c) Ezequiel Garcia, 2013
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
-+ * the GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ * Usage
-+ * -----
-+ * Since the ioctls have no arguments, usage of this tool is as simple
-+ * as it gets:
-+ *
-+ *   $ ubiblkvol --attach /dev/ubi0_0
-+ *
-+ * will make a new device /dev/ubiblock0_0 available, and
-+ *
-+ *   $ ubiblkvol --detach /dev/ubi0_0
-+ *
-+ * will remove the device.
-+ */
-+
-+#define PROGRAM_NAME    "ubiblkvol"
-+
-+#include <fcntl.h>
-+#include <stdio.h>
-+#include <stdint.h>
-+#include <getopt.h>
-+#include <stdarg.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
-+#include <sys/stat.h>
-+
-+#include <libubi.h>
-+#include "common.h"
-+
-+struct args {
-+	const char *node;
-+	int attach;
-+};
-+
-+static struct args args;
-+
-+static const char doc[] = PROGRAM_NAME " version " VERSION
-+			 " - a tool to add/remove block device interface from UBI volumes.";
-+
-+static const char optionsstr[] =
-+"-a, --attach               attach block to volume\n"
-+"-d, --detach               detach block from volume\n"
-+"-h, --help                 print help message\n"
-+"-V, --version              print program version";
-+
-+static const char usage[] =
-+"Usage: " PROGRAM_NAME " [-a,-d] <UBI volume node file name>\n"
-+"Example: " PROGRAM_NAME " --attach /dev/ubi0_0";
-+
-+static const struct option long_options[] = {
-+	{ .name = "attach",   .has_arg = 1, .flag = NULL, .val = 'a' },
-+	{ .name = "detach",   .has_arg = 1, .flag = NULL, .val = 'd' },
-+	{ .name = "help",     .has_arg = 0, .flag = NULL, .val = 'h' },
-+	{ .name = "version",  .has_arg = 0, .flag = NULL, .val = 'V' },
-+	{ NULL, 0, NULL, 0}
-+};
-+
-+static int parse_opt(int argc, char * const argv[])
-+{
-+	while (1) {
-+		int key;
-+
-+		key = getopt_long(argc, argv, "a:d:h?V", long_options, NULL);
-+		if (key == -1)
-+			break;
-+
-+		switch (key) {
-+		case 'a':
-+			args.attach = 1;
-+		case 'd':
-+			args.node = optarg;
-+			break;
-+		case 'h':
-+		case '?':
-+			printf("%s\n\n", doc);
-+			printf("%s\n\n", usage);
-+			printf("%s\n", optionsstr);
-+			exit(EXIT_SUCCESS);
-+
-+		case 'V':
-+			common_print_version();
-+			exit(EXIT_SUCCESS);
-+
-+		default:
-+			fprintf(stderr, "Use -h for help\n");
-+			return -1;
-+		}
-+	}
-+
-+	if (!args.node)
-+		return errmsg("invalid arguments (use -h for help)");
-+
-+	return 0;
-+}
-+
-+int main(int argc, char * const argv[])
-+{
-+	int err, fd;
-+	libubi_t libubi;
-+
-+	err = parse_opt(argc, argv);
-+	if (err)
-+		return -1;
-+
-+	libubi = libubi_open();
-+	if (!libubi) {
-+		if (errno == 0)
-+			errmsg("UBI is not present in the system");
-+		else
-+			sys_errmsg("cannot open libubi");
-+		goto out_libubi;
-+	}
-+
-+	err = ubi_probe_node(libubi, args.node);
-+	if (err == 1) {
-+		errmsg("\"%s\" is an UBI device node, not an UBI volume node",
-+		       args.node);
-+		goto out_libubi;
-+	} else if (err < 0) {
-+		if (errno == ENODEV)
-+			errmsg("\"%s\" is not an UBI volume node", args.node);
-+		else
-+			sys_errmsg("error while probing \"%s\"", args.node);
-+		goto out_libubi;
-+	}
-+
-+	fd = open(args.node, O_RDWR);
-+	if (fd == -1) {
-+		sys_errmsg("cannot open UBI volume \"%s\"", args.node);
-+		goto out_libubi;
-+	}
-+
-+	if (args.attach) {
-+		err = ubi_vol_block_add(fd);
-+		if (err) {
-+			sys_errmsg("cannot attach block device");
-+			goto out_close;
-+		}
-+	} else {
-+		err = ubi_vol_block_del(fd);
-+		if (err) {
-+			sys_errmsg("cannot detach block device");
-+			goto out_close;
-+		}
-+	}
-+
-+	close(fd);
-+	libubi_close(libubi);
-+	return 0;
-+
-+out_close:
-+	close(fd);
-+out_libubi:
-+	libubi_close(libubi);
-+	return -1;
-+}
--- 
-1.8.1.5
-
diff --git a/sys-fs/mtd-utils/metadata.xml b/sys-fs/mtd-utils/metadata.xml
deleted file mode 100644
index 4d86693..0000000
--- a/sys-fs/mtd-utils/metadata.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>embedded</herd>
-<maintainer>
-	<email>robbat2@gentoo.org</email>
-</maintainer>
-<upstream>
-	<remote-id type="cpe">cpe:/a:mtd-utils_project:mtd-utils</remote-id>
-</upstream>
-</pkgmetadata>
-
diff --git a/sys-fs/mtd-utils/mtd-utils-1.5.0.ebuild b/sys-fs/mtd-utils/mtd-utils-1.5.0.ebuild
deleted file mode 100644
index 7ad88a7..0000000
--- a/sys-fs/mtd-utils/mtd-utils-1.5.0.ebuild
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-fs/mtd-utils/mtd-utils-1.5.0.ebuild,v 1.7 2013/02/21 00:03:43 zmedico Exp $
-
-EAPI="3"
-
-inherit eutils vcs-snapshot
-
-if [[ ${PV} == "99999999" ]] ; then
-	EGIT_REPO_URI="git://git.infradead.org/mtd-utils.git"
-
-	inherit git-2
-	SRC_URI=""
-	#KEYWORDS=""
-else
-	if [[ ${PV} == *.*.* ]] ; then
-		MY_PV="${PV}-*"
-		SRC_URI="http://git.infradead.org/mtd-utils.git/snapshot/v${PV}.tar.gz -> ${P}.tar.gz"
-	else
-		MY_PV="${PV}-02ae0aac87576d07202a62d11294ea55b56f450b"
-		SRC_URI="mirror://gentoo/${PN}-snapshot-${MY_PV}.tar.xz"
-	fi
-	KEYWORDS="amd64 arm ~mips ppc x86 ~amd64-linux ~arm-linux ~x86-linux"
-fi
-
-DESCRIPTION="MTD userspace tools (NFTL, JFFS2, NAND, FTL, UBI)"
-HOMEPAGE="http://git.infradead.org/?p=mtd-utils.git;a=summary"
-
-LICENSE="GPL-2"
-SLOT="0"
-IUSE="xattr"
-
-# We need libuuid
-RDEPEND="!sys-fs/mtd
-	dev-libs/lzo
-	sys-libs/zlib
-	>=sys-apps/util-linux-2.16"
-# ACL is only required for the <sys/acl.h> header file to build mkfs.jffs2
-# And ACL brings in Attr as well.
-DEPEND="${RDEPEND}
-	xattr? ( sys-apps/acl )"
-
-makeopts() {
-	# These affect build output, so keep it common between compile & install.
-	echo CROSS=${CHOST}- V=1
-	use xattr || echo WITHOUT_XATTR=1
-}
-
-src_prepare() {
-	epatch "${FILESDIR}"/*.patch
-}
-
-src_compile() {
-	tc-export AR CC RANLIB
-	local compileopts=(
-		AR="${AR}" CC="${CC}" RANLIB="${RANLIB}"
-	)
-	emake $(makeopts) "${compileopts[@]}"
-}
-
-src_install() {
-	emake $(makeopts) install DESTDIR="${ED}"
-	dodoc *.txt
-	newdoc mkfs.ubifs/README README.mkfs.ubifs
-	# TODO: check ubi-utils for docs+scripts
-}
diff --git a/sys-fs/rar2fs/Manifest b/sys-fs/rar2fs/Manifest
index 9976d659..4b33dbf 100644
--- a/sys-fs/rar2fs/Manifest
+++ b/sys-fs/rar2fs/Manifest
@@ -1 +1 @@
-DIST rar2fs-1.29.1.tar.gz 267860 BLAKE2B 2129dcfb860e56ea91dcea9d5af5e9a5c4513b7153673e366bfe3259ad12e1750507ffdd422ee6bad79afda950e5b08ee91a27012126d16c244dc146aee15a36 SHA512 c0cb4cca59e6adb450350a9730500bf9c569bb9ad835af0726ff05876a7a02c43e905293cc5582239b7a2564bf46bd02e6122934e0ad8c1785c326dbeff9c096
+DIST rar2fs-1.29.5.tar.gz 268706 BLAKE2B cdc88672976c99868dedb65d772d6ad76bad7b1891845d09f575701005ab58cf79b5b19cb5de79d81bf1ef6ea8a734cd9755e002b6bf141f4166fdb73a667e2e SHA512 78962d614d66eeb09c013212d8bd373907d8a55489d9bc544f43ba1f34989cd777bba38a6af5899fea0b01e4cfdc0ee18462776e2d4cc529e05d5c6d30a899bf
diff --git a/sys-fs/rar2fs/files/rar2fs-1.29.1-password-from-stdin.patch b/sys-fs/rar2fs/files/rar2fs-1.29.1-password-from-stdin.patch
deleted file mode 100644
index 22ff95e..0000000
--- a/sys-fs/rar2fs/files/rar2fs-1.29.1-password-from-stdin.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 4999ea8dc7d6c967bdb01484f1c9c91b1dfe09dd Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Fran=C3=A7ois=20Degros?= <fdegros@chromium.org>
-Date: Thu, 23 Jul 2020 18:15:29 +1000
-Subject: [PATCH] Read password from stdin
-
----
- src/rar2fs.c | 27 +++++++++++++++++++++++++++
- 1 file changed, 27 insertions(+)
-
-diff --git a/src/rar2fs.c b/src/rar2fs.c
-index 1378e41..30fea04 100644
---- a/src/rar2fs.c
-+++ b/src/rar2fs.c
-@@ -463,6 +463,33 @@ static wchar_t *get_password(const char *file, wchar_t *buf, size_t len)
- static char *get_password(const char *file, char *buf, size_t len)
- #endif
- {
-+#define GPASSWORD_SIZE 256
-+  
-+        static char gpassword[GPASSWORD_SIZE];
-+
-+        if (!gpassword[0]) {
-+                /* Read password from stdin. */
-+                printf("Password?\n");
-+                if (!fgets(gpassword, GPASSWORD_SIZE, stdin))
-+                        return NULL;
-+
-+                /* Remove newline at the end of password. */
-+                const size_t n = strlen(gpassword);
-+                if (n > 0) {
-+                        char *const last = &gpassword[n - 1];
-+                        if (*last == '\n')
-+                                *last = '\0';
-+                }
-+        }
-+
-+        if (!gpassword[0])
-+                return NULL;
-+
-+        if (mbstowcs(buf, gpassword, len) < len)
-+                return buf;
-+
-+        return NULL;
-+
-         char *f[2] = {NULL, NULL};
-         int l[2] = {0, 0};
-         int i;
--- 
-2.29.2.222.g5d2a92d10f8-goog
-
diff --git a/sys-fs/rar2fs/files/rar2fs-1.29.4-no-archive-path-on-stdout.patch b/sys-fs/rar2fs/files/rar2fs-1.29.4-no-archive-path-on-stdout.patch
new file mode 100644
index 0000000..be3dd9b
--- /dev/null
+++ b/sys-fs/rar2fs/files/rar2fs-1.29.4-no-archive-path-on-stdout.patch
@@ -0,0 +1,43 @@
+From a23a3cbcf9c888d8bd9453f6ddbffd095604734c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fran=C3=A7ois=20Degros?= <fdegros@chromium.org>
+Date: Wed, 20 Jan 2021 14:39:58 +1100
+Subject: [PATCH] Don't print archive file path on stdout
+
+Messages printed by rar2fs on stdout or stderr can be logged in system
+logs by the calling system. The file path can contain PII and should not
+be logged in system logs readable by everyone on the system.
+---
+ src/rar2fs.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/rar2fs.c b/src/rar2fs.c
+index f28493d..e1a1a20 100644
+--- a/src/rar2fs.c
++++ b/src/rar2fs.c
+@@ -5728,18 +5728,18 @@ int main(int argc, char *argv[])
+                 const int ret = collect_files(src_path_full);
+                 if (ret < 0) {
+                         const int err = -ret;
+-                        printf("%s: cannot open '%s': %s\n", argv[0],
+-                               src_path_full, error_to_string(err));
++                        printf("%s: cannot open RAR: %s\n", argv[0],
++                               error_to_string(err));
+                         return err;
+                 }
+                 if (ret == 0) {
+-                        printf("%s: cannot find primary file for multipart archive '%s'\n",
+-                               argv[0], src_path_full);
++                        printf(
++                            "%s: cannot find primary file for multipart RAR\n",
++                            argv[0]);
+                         return 1;
+                 }
+         }
+ 
+-
+         /* Check I/O buffer and history size */
+         if (check_iob(argv[0], 1))
+                 return -1;
+-- 
+2.30.0.284.gd98b1dd5eaa7-goog
+
diff --git a/sys-fs/rar2fs/files/rar2fs-1.29.4-password-from-stdin.patch b/sys-fs/rar2fs/files/rar2fs-1.29.4-password-from-stdin.patch
new file mode 100644
index 0000000..2637f1d
--- /dev/null
+++ b/sys-fs/rar2fs/files/rar2fs-1.29.4-password-from-stdin.patch
@@ -0,0 +1,50 @@
+From 498e195ca77cd43d2dc281aae6219ff2b8e8b35f Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Fran=C3=A7ois=20Degros?= <fdegros@chromium.org>
+Date: Thu, 23 Jul 2020 18:15:29 +1000
+Subject: [PATCH] Read password from stdin
+
+---
+ src/rar2fs.c | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+diff --git a/src/rar2fs.c b/src/rar2fs.c
+index 1e6f23b..f28493d 100644
+--- a/src/rar2fs.c
++++ b/src/rar2fs.c
+@@ -463,6 +463,33 @@ static wchar_t *get_password(const char *file, wchar_t *buf, size_t len)
+ static char *get_password(const char *file, char *buf, size_t len)
+ #endif
+ {
++#define GPASSWORD_SIZE 256
++  
++        static char gpassword[GPASSWORD_SIZE];
++
++        if (!gpassword[0]) {
++                /* Read password from stdin. */
++                printf("Password?\n");
++                if (!fgets(gpassword, GPASSWORD_SIZE, stdin))
++                        return NULL;
++
++                /* Remove newline at the end of password. */
++                const size_t n = strlen(gpassword);
++                if (n > 0) {
++                        char *const last = &gpassword[n - 1];
++                        if (*last == '\n')
++                                *last = '\0';
++                }
++        }
++
++        if (!gpassword[0])
++                return NULL;
++
++        if (mbstowcs(buf, gpassword, len) < len)
++                return buf;
++
++        return NULL;
++
+         char *f[2] = {NULL, NULL};
+         int l[2] = {0, 0};
+         int i;
+-- 
+2.30.0.284.gd98b1dd5eaa7-goog
+
diff --git a/sys-fs/rar2fs/rar2fs-1.29.1-r1.ebuild b/sys-fs/rar2fs/rar2fs-1.29.1-r1.ebuild
deleted file mode 100644
index 7638d64..0000000
--- a/sys-fs/rar2fs/rar2fs-1.29.1-r1.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit autotools
-
-DESCRIPTION="A FUSE based filesystem that can mount one or multiple RAR archive(s)"
-HOMEPAGE="https://hasse69.github.io/rar2fs/ https://github.com/hasse69/rar2fs"
-SRC_URI="https://github.com/hasse69/${PN}/releases/download/v${PV}/${P}.tar.gz"
-
-LICENSE="GPL-3"
-SLOT="0"
-KEYWORDS="*"
-IUSE="debug"
-
-# Note that upstream unrar sometimes breaks ABI without updating the SONAME
-# version so try rebuilding rar2fs if it doesn't work following an unrar
-# upgrade.
-RDEPEND=">=app-arch/unrar-5:=
-	sys-fs/fuse:0"
-DEPEND="${RDEPEND}"
-
-PATCHES=(
-	"${FILESDIR}/${PN}-1.29.1-password-from-stdin.patch"
-)
-
-src_prepare() {
-	default
-	eautoreconf
-}
-
-src_configure() {
-	export USER_CFLAGS="${CFLAGS}"
-
-	econf \
-		--with-unrar="${ESYSROOT}"/usr/include/libunrar \
-		--disable-static-unrar \
-		$(use_enable debug)
-}
diff --git a/sys-fs/rar2fs/rar2fs-1.29.5-r1.ebuild b/sys-fs/rar2fs/rar2fs-1.29.5-r1.ebuild
new file mode 100644
index 0000000..c880e90
--- /dev/null
+++ b/sys-fs/rar2fs/rar2fs-1.29.5-r1.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools
+
+DESCRIPTION="A FUSE based filesystem that can mount one or multiple RAR archive(s)"
+HOMEPAGE="https://hasse69.github.io/rar2fs/ https://github.com/hasse69/rar2fs"
+SRC_URI="https://github.com/hasse69/${PN}/releases/download/v${PV}/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="*"
+IUSE="debug"
+
+# Note that upstream unrar sometimes breaks ABI without updating the SONAME
+# version so try rebuilding rar2fs if it doesn't work following an unrar
+# upgrade.
+RDEPEND=">=app-arch/unrar-5:=
+	sys-fs/fuse:0"
+DEPEND="${RDEPEND}"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-1.29.4-password-from-stdin.patch"
+	"${FILESDIR}/${PN}-1.29.4-no-archive-path-on-stdout.patch"
+)
+
+src_prepare() {
+	default
+	eautoreconf
+}
+
+src_configure() {
+	export USER_CFLAGS="${CFLAGS}"
+
+	econf \
+		--with-unrar="${ESYSROOT}"/usr/include/libunrar \
+		--disable-static-unrar \
+		$(use_enable debug)
+}
diff --git a/sys-fs/squashfs-tools/Manifest b/sys-fs/squashfs-tools/Manifest
index c2049606..5df865b 100644
--- a/sys-fs/squashfs-tools/Manifest
+++ b/sys-fs/squashfs-tools/Manifest
@@ -1,2 +1 @@
-DIST squashfs-tools_4.3-3.debian.tar.xz 15252 SHA256 1c296cc147e322e7124bf23a3c242ac83f6a986e6d6f64829ad2424b33914fc4 SHA512 ab1a707e04e92697549f7e7c667c5da835d39d5e2cb791e47bf549b232e7173e6981c33a87cd373c4a7a4815e4af1b7294fe13e54422a5ccdcff90904bfc51ae WHIRLPOOL 4f5a12a3371f2adced8f3a50b1d25db4420c2ff63856bbe74489e945c4698eb0e327ce677e442678849118f45351d01b14aef075ed78e6c09acb83ce56c99c3d
-DIST squashfs4.3.tar.gz 182550 SHA256 0d605512437b1eb800b4736791559295ee5f60177e102e4d4ccd0ee241a5f3f6 SHA512 854ed7acc99920f24ecf11e0da807e5a2a162eeda55db971aba63a03f0da2c13b20ec0564a906c4b0e415bd8258b273a10208c7abc0704f2ceea773aa6148a79 WHIRLPOOL c819f416b34cc46a232b8bc385017774603f81b4a865e6b97208004c183ebad5de7d0f726be444f8cb4e1d450abed9340dab730aec0762407f034e99b39bdc06
+DIST squashfs-tools-4.4-git.1.tar.gz 241963 BLAKE2B 7a80c353efbbca851b2eb44e742f20b4cf59e91058b53b77c74d879dc18d882e3bb6de8a010a4469c0a53384ccf2968bba4cd1d6f10cfcede70fe07eebbf2409 SHA512 8d8cc3da7cbfc7b94d070021383413f3d1ef1261ba3fd9924dde4453558a8f8f14812c2f5614f87bef719496b0a023897de8d087c32a7344fa2eb9c1624563a0
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-2gb.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-2gb.patch
deleted file mode 100644
index 467448f..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-2gb.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 9c1db6d13a51a2e009f0027ef336ce03624eac0d Mon Sep 17 00:00:00 2001
-From: "Guan, Xin" <guanx.bac@gmail.com>
-Date: Sat, 13 Sep 2014 13:15:26 +0200
-Subject: [PATCH] Fix 2GB-limit of the is_fragment(...) function.
-
-Applies to squashfs-tools 4.3.
-
-Reported-by: Bruno Wolff III <bruno@wolff.to>
-Signed-off-by: Guan, Xin <guanx.bac@gmail.com>
-Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
----
- squashfs-tools/mksquashfs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
-index f1fcff1cc284..d221c35865a0 100644
---- a/squashfs-tools/mksquashfs.c
-+++ b/squashfs-tools/mksquashfs.c
-@@ -2029,7 +2029,7 @@ struct file_info *duplicate(long long file_size, long long bytes,
- 
- inline int is_fragment(struct inode_info *inode)
- {
--	int file_size = inode->buf.st_size;
-+	off_t file_size = inode->buf.st_size;
- 
- 	/*
- 	 * If this block is to be compressed differently to the
--- 
-2.8.2
-
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-4k-align.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-4k-align.patch
deleted file mode 100644
index 4d01690..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-4k-align.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 7bda7c75748f36b0a50f93e46144d5a4de4974ad Mon Sep 17 00:00:00 2001
-From: Amin Hassani <ahassani@google.com>
-Date: Thu, 15 Dec 2016 10:43:15 -0800
-Subject: [PATCH] mksquashfs 4K aligns the files inside the squashfs image
-
-Files inside a squashfs image are not necessarily 4k (4096)
-aligned. This patch starts each file in a 4k aligned address and pads
-zero to the end of the file until it reaches the next 4k aligned
-address. This will not change the size of the compressed
-blocks (especially the last one) and hence it will not change how the
-files are being loaded in kernel or unsquashfs. However on average this
-increases the size of the squashfs image which can be calculated by the
-following formula:
-
-increased_size = (number_of_unfragmented_files_in_image + number of fragments) * 2048
-
-The 4k alignment can be enabled by flag '-4k-align'
----
- squashfs-tools/mksquashfs.c | 16 ++++++++++++++++
- 1 file changed, 16 insertions(+)
-
-diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
-index 8b1376f..683973d 100644
---- a/squashfs-tools/mksquashfs.c
-+++ b/squashfs-tools/mksquashfs.c
-@@ -99,6 +99,8 @@ int old_exclude = TRUE;
- int use_regex = FALSE;
- int nopad = FALSE;
- int exit_on_error = FALSE;
-+int do_4k_align = FALSE;
-+#define ALIGN_UP(bytes, size) (bytes = (bytes + size - 1) & ~(size - 1))
- 
- long long global_uid = -1, global_gid = -1;
- 
-@@ -1513,6 +1515,9 @@ void unlock_fragments()
- 	 * queue at this time.
- 	 */
- 	while(!queue_empty(locked_fragment)) {
-+		// 4k align the start of remaining queued fragments.
-+		if(do_4k_align)
-+			ALIGN_UP(bytes, 4096);
- 		write_buffer = queue_get(locked_fragment);
- 		frg = write_buffer->block;	
- 		size = SQUASHFS_COMPRESSED_SIZE_BLOCK(fragment_table[frg].size);
-@@ -2441,6 +2446,9 @@ void *frag_deflator(void *arg)
- 		write_buffer->size = compressed_size;
- 		pthread_mutex_lock(&fragment_mutex);
- 		if(fragments_locked == FALSE) {
-+			// 4k align the start of each fragment.
-+			if(do_4k_align)
-+				ALIGN_UP(bytes, 4096);
- 			fragment_table[file_buffer->block].size = c_byte;
- 			fragment_table[file_buffer->block].start_block = bytes;
- 			write_buffer->block = bytes;
-@@ -2761,6 +2769,10 @@ int write_file_blocks(squashfs_inode *inode, struct dir_ent *dir_ent,
- 	long long sparse = 0;
- 	struct file_buffer *fragment_buffer = NULL;
- 
-+	// 4k align the start of each file.
-+	if(do_4k_align)
-+		ALIGN_UP(bytes, 4096);
-+
- 	if(pre_duplicate(read_size))
- 		return write_file_blocks_dup(inode, dir_ent, read_buffer, dup);
- 
-@@ -4692,6 +4704,7 @@ void write_filesystem_tables(struct squashfs_super_block *sBlk, int nopad)
- 		"compressed", no_fragments ? "no" : noF ? "uncompressed" :
- 		"compressed", no_xattrs ? "no" : noX ? "uncompressed" :
- 		"compressed");
-+	printf("\t4k %saligned\n", do_4k_align ? "" : "un");
- 	printf("\tduplicates are %sremoved\n", duplicate_checking ? "" :
- 		"not ");
- 	printf("Filesystem size %.2f Kbytes (%.2f Mbytes)\n", bytes / 1024.0,
-@@ -5346,6 +5359,8 @@ print_compressor_options:
- 			root_name = argv[i];
- 		} else if(strcmp(argv[i], "-version") == 0) {
- 			VERSION();
-+		} else if(strcmp(argv[i], "-4k-align") == 0) {
-+			do_4k_align = TRUE;
- 		} else {
- 			ERROR("%s: invalid option\n\n", argv[0]);
- printOptions:
-@@ -5387,6 +5402,7 @@ printOptions:
- 			ERROR("\t\t\tdirectory containing that directory, "
- 				"rather than the\n");
- 			ERROR("\t\t\tcontents of the directory\n");
-+			ERROR("-4k-align\t\tenables 4k alignment of all files\n");
- 			ERROR("\nFilesystem filter options:\n");
- 			ERROR("-p <pseudo-definition>\tAdd pseudo file "
- 				"definition\n");
--- 
-2.14.1.480.gb18f417b89-goog
-
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-aligned-data.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-aligned-data.patch
deleted file mode 100644
index 024129f..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-aligned-data.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-the mksquashfs code has an all_zeros func that does:
-	long *p = (long *) file_buffer->data;
-
-make sure we force the data field to be aligned so that still works.
-
---- a/squashfs-tools/caches-queues-lists.h
-+++ b/squashfs-tools/caches-queues-lists.h
-@@ -123,6 +123,7 @@ struct file_buffer {
- 	char locked;
- 	char wait_on_unlock;
- 	char noD;
-+	long _pad;
- 	char data[0];
- };
- 
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-file-map.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-file-map.patch
deleted file mode 100644
index 6a10c25..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-file-map.patch
+++ /dev/null
@@ -1,158 +0,0 @@
-From 6145c2b7fe0b06991ee0748c69e3ebb454959ed9 Mon Sep 17 00:00:00 2001
-From: Amin Hassani <ahassani@google.com>
-Date: Fri, 11 Aug 2017 11:20:02 -0700
-Subject: [PATCH] Generate squashfs image file map using unsquashfs
-
-This CL modifies unsquashfs to generate a file map when given the flag
--m or -map. The structure of the file map is a list of per-line of the
-following:
-
-path start compressed_block_size_1 ... compressed_block_size_N
-
-where:
-- 'path' is the full path to the file.
-- 'start' is the start byte address of the file.
-- 'compressed_block_size_i' is a the length of the i'th compressed block
-in bytes. If the block is uncompressed its 25th LSB is set.
-
-It also first prints the list of all fragments along with their address
-and block sizes at the beginning of the aforementioned list. The path
-for each fragment is '<fragment_i>' with 'i' be the i'th fragment.
-
-The usage:
-unsquashfs -m(ap) <path_to_file_map> <squashfs_image>
----
- squashfs-tools/unsquashfs.c | 62 ++++++++++++++++++++++++++++++++++++++++++---
- 1 file changed, 59 insertions(+), 3 deletions(-)
-
-diff --git a/squashfs-tools/unsquashfs.c b/squashfs-tools/unsquashfs.c
-index 77c3c07..c3d0c08 100644
---- a/squashfs-tools/unsquashfs.c
-+++ b/squashfs-tools/unsquashfs.c
-@@ -79,6 +79,9 @@ unsigned int cur_blocks = 0;
- int inode_number = 1;
- int no_xattrs = XATTR_DEF;
- int user_xattrs = FALSE;
-+int lsfilemap = FALSE;
-+char* file_map_path = NULL;
-+FILE* file_map_file = NULL;
- 
- int lookup_type[] = {
- 	0,
-@@ -514,6 +517,15 @@ char *modestr(char *str, int mode)
- 	return str;
- }
- 
-+void print_file_map(char* pathname, long long start, int block_count,
-+					unsigned int* block_list)
-+{
-+	fprintf(file_map_file, "%s %lld", pathname, start);
-+	int i;
-+	for(i = 0; i < block_count; i++)
-+		fprintf(file_map_file, " %u", block_list[i]);
-+	fprintf(file_map_file, "\n");
-+}
- 
- #define TOTALCHARS  25
- int print_filename(char *pathname, struct inode *inode)
-@@ -526,7 +538,20 @@ int print_filename(char *pathname, struct inode *inode)
- 	struct tm *t;
- 
- 	if(short_ls) {
--		printf("%s\n", pathname);
-+		if(!lsfilemap)
-+			printf("%s\n", pathname);
-+		else if((SQUASHFS_FILE_TYPE == inode->type ||
-+				SQUASHFS_LREG_TYPE == inode->type) &&
-+				inode->fragment < 0) {
-+			unsigned int* block_list =
-+				malloc(inode->blocks * sizeof(unsigned int));
-+			if(block_list == NULL)
-+				EXIT_UNSQUASH("print_filename: unable to malloc block list\n");
-+			s_ops.read_block_list(block_list, inode->block_ptr, inode->blocks);
-+			print_file_map(pathname, inode->start, inode->blocks,
-+							   block_list);
-+			free(block_list);
-+		}
- 		return 1;
- 	}
- 
-@@ -1545,7 +1570,7 @@ void dir_scan(char *parent_name, unsigned int start_block, unsigned int offset,
- 		return;
- 	}
- 
--	if(lsonly || info)
-+	if(!lsfilemap && (lsonly || info))
- 		print_filename(parent_name, i);
- 
- 	if(!lsonly) {
-@@ -1604,7 +1629,7 @@ void dir_scan(char *parent_name, unsigned int start_block, unsigned int offset,
- 
- 			i = s_ops.read_inode(start_block, offset);
- 
--			if(lsonly || info)
-+			if(lsfilemap || lsonly || info)
- 				print_filename(pathname, i);
- 
- 			if(!lsonly)
-@@ -2627,6 +2652,17 @@ int main(int argc, char *argv[])
- 		} else if(strcmp(argv[i], "-regex") == 0 ||
- 				strcmp(argv[i], "-r") == 0)
- 			use_regex = TRUE;
-+		else if(strcmp(argv[i], "-map") == 0 ||
-+				strcmp(argv[i], "-m") == 0) {
-+			if(++i == argc) {
-+				fprintf(stderr, "%s: -map missing filename\n",
-+					argv[0]);
-+				exit(1);
-+			}
-+			file_map_path = argv[i];
-+			lsonly = TRUE;
-+			lsfilemap = TRUE;
-+		}
- 		else
- 			goto options;
- 	}
-@@ -2690,6 +2726,8 @@ options:
- 				"regular expressions\n");
- 			ERROR("\t\t\t\trather than use the default shell "
- 				"wildcard\n\t\t\t\texpansion (globbing)\n");
-+			ERROR("\t-m[ap] <file>\tcreates file map"
-+				", but doesn't unsquash\n");
- 			ERROR("\nDecompressors available:\n");
- 			display_compressors("", "");
- 		}
-@@ -2809,12 +2847,30 @@ options:
- 
- 	enable_progress_bar();
- 
-+	if(lsfilemap) {
-+		int i, size;
-+		long long start;
-+		char tmp[20];
-+		file_map_file = fopen(file_map_path, "w");
-+		if(file_map_file == NULL)
-+			EXIT_UNSQUASH("Failed to open file map \"%s\" because %s\n",
-+				file_map_path, strerror(errno));
-+		for(i = 0; i < sBlk.s.fragments; i++) {
-+			s_ops.read_fragment(i, &start, &size);
-+			snprintf(tmp, 20, "<fragment-%d>", i);
-+			print_file_map(tmp, start, 1, (unsigned int*)&size);
-+		}
-+	}
-+
- 	dir_scan(dest, SQUASHFS_INODE_BLK(sBlk.s.root_inode),
- 		SQUASHFS_INODE_OFFSET(sBlk.s.root_inode), paths);
- 
- 	queue_put(to_writer, NULL);
- 	queue_get(from_writer);
- 
-+	if(lsfilemap)
-+		fclose(file_map_file);
-+
- 	disable_progress_bar();
- 
- 	if(!lsonly) {
--- 
-2.14.1.480.gb18f417b89-goog
-
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-fix-inline.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-fix-inline.patch
deleted file mode 100644
index aae543d..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-fix-inline.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-diff --git a/mksquashfs.c b/mksquashfs.c
-index a76b4bb..4b84fa1 100644
---- a/mksquashfs.c
-+++ b/mksquashfs.c
-@@ -833,13 +833,13 @@ char *subpathname(struct dir_ent *dir_ent)
- }
- 
- 
--inline unsigned int get_inode_no(struct inode_info *inode)
-+static inline unsigned int get_inode_no(struct inode_info *inode)
- {
- 	return inode->inode_number;
- }
- 
- 
--inline unsigned int get_parent_no(struct dir_info *dir)
-+static inline unsigned int get_parent_no(struct dir_info *dir)
- {
- 	return dir->depth ? get_inode_no(dir->dir_ent->inode) : inode_no;
- }
-@@ -2065,7 +2065,7 @@ struct file_info *duplicate(long long file_size, long long bytes,
- }
- 
- 
--inline int is_fragment(struct inode_info *inode)
-+static inline int is_fragment(struct inode_info *inode)
- {
- 	off_t file_size = inode->buf.st_size;
- 
-@@ -3035,20 +3035,20 @@ struct inode_info *lookup_inode2(struct stat *buf, int pseudo, int id)
- }
- 
- 
--inline struct inode_info *lookup_inode(struct stat *buf)
-+static inline struct inode_info *lookup_inode(struct stat *buf)
- {
- 	return lookup_inode2(buf, 0, 0);
- }
- 
- 
--inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this)
-+static inline void alloc_inode_no(struct inode_info *inode, unsigned int use_this)
- {
- 	if (inode->inode_number == 0)
- 		inode->inode_number = use_this ? : inode_no ++;
- }
- 
- 
--inline struct dir_ent *create_dir_entry(char *name, char *source_name,
-+static inline struct dir_ent *create_dir_entry(char *name, char *source_name,
- 	char *nonstandard_pathname, struct dir_info *dir)
- {
- 	struct dir_ent *dir_ent = malloc(sizeof(struct dir_ent));
-@@ -3065,7 +3065,7 @@ inline struct dir_ent *create_dir_entry(char *name, char *source_name,
- }
- 
- 
--inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir,
-+static inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir,
- 	struct inode_info *inode_info)
- {
- 	struct dir_info *dir = dir_ent->our_dir;
-@@ -3081,7 +3081,7 @@ inline void add_dir_entry(struct dir_ent *dir_ent, struct dir_info *sub_dir,
- }
- 
- 
--inline void add_dir_entry2(char *name, char *source_name,
-+static inline void add_dir_entry2(char *name, char *source_name,
- 	char *nonstandard_pathname, struct dir_info *sub_dir,
- 	struct inode_info *inode_info, struct dir_info *dir)
- {
-@@ -3093,7 +3093,7 @@ inline void add_dir_entry2(char *name, char *source_name,
- }
- 
- 
--inline void free_dir_entry(struct dir_ent *dir_ent)
-+static inline void free_dir_entry(struct dir_ent *dir_ent)
- {
- 	if(dir_ent->name)
- 		free(dir_ent->name);
-@@ -3105,7 +3105,7 @@ inline void free_dir_entry(struct dir_ent *dir_ent)
- }
- 
- 
--inline void add_excluded(struct dir_info *dir)
-+static inline void add_excluded(struct dir_info *dir)
- {
- 	dir->excluded ++;
- }
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-local-cve-fix.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-local-cve-fix.patch
deleted file mode 100644
index 7637f67..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-local-cve-fix.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-taken from Fedora
-
-commit af393379e34c5677f95bbec11645b6c3028195b4
-Author: Bruno Wolff III <bruno@wolff.to>
-Date:   Wed Jun 24 14:27:31 2015 -0500
-
-Update printf formats to match datatypes after CVE patch
-
---- squashfs-tools/unsquash-4.c
-+++ squashfs-tools/unsquash-4.c
-@@ -35,7 +35,7 @@
- 	size_t indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments);
- 	long long *fragment_table_index;
- 
--	TRACE("read_fragment_table: %d fragments, reading %d fragment indexes "
-+	TRACE("read_fragment_table: %u fragments, reading %zu fragment indexes "
- 		"from 0x%llx\n", sBlk.s.fragments, indexes,
- 		sBlk.s.fragment_table_start);
- 
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-mem-overflow.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-mem-overflow.patch
deleted file mode 100644
index a9b0001..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-mem-overflow.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-taken from Fedora
-
-From 604b607d8ac91eb8afc0b6e3d917d5c073096103 Mon Sep 17 00:00:00 2001
-From: Phillip Lougher <phillip@squashfs.org.uk>
-Date: Wed, 11 Jun 2014 04:51:37 +0100
-Subject: mksquashfs: ensure value does not overflow a signed int in -mem
- option
-
-Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
-
-diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
-index 5370ecf..9676dc8 100644
---- a/squashfs-tools/mksquashfs.c
-+++ b/squashfs-tools/mksquashfs.c
-@@ -5193,7 +5193,16 @@ print_compressor_options:
- 					 argv[0]);
- 				exit(1);
- 			}
--			/* convert from bytes to Mbytes */
-+
-+			/*
-+			 * convert from bytes to Mbytes, ensuring the value
-+			 * does not overflow a signed int
-+			 */
-+			if(number >= (1LL << 51)) {
-+				ERROR("%s: -mem invalid mem size\n", argv[0]);
-+				exit(1);
-+			}
-+
- 			total_mem = number / 1048576;
- 			if(total_mem < (SQUASHFS_LOWMEM / SQUASHFS_TAKE)) {
- 				ERROR("%s: -mem should be %d Mbytes or "
--- 
-cgit v0.10.1
-
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-rare-race-in-frag-wait.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-rare-race-in-frag-wait.patch
deleted file mode 100644
index f72a93a..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-rare-race-in-frag-wait.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From de03266983ceb62e5365aac84fcd3b2fd4d16e6f Mon Sep 17 00:00:00 2001
-From: Phillip Lougher <phillip@squashfs.org.uk>
-Date: Thu, 18 Sep 2014 01:28:11 +0100
-Subject: [PATCH] mksquashfs: fix rare race in fragment waiting in filesystem
- finalisation
-
-Fix a rare race condition in fragment waiting when finalising the
-filesystem.  This is a race condition that was initially fixed in 2009,
-but inadvertantly re-introduced in the latest release when the code
-was rewritten.
-
-Background:
-
-When finalising the filesystem, the main control thread needs to ensure
-all the in-flight fragments have been queued to the writer thread before
-asking the writer thread to finish, and then writing the metadata.
-
-It does this by waiting on the fragments_outstanding counter.  Once this
-counter reaches 0, it synchronises with the writer thread, waiting until
-the writer thread reports no outstanding data to be written.
-
-However, the main thread can race with the fragment deflator thread(s)
-because the fragment deflator thread(s) decrement the fragments_outstanding
-counter and release the mutex before queueing the compressed fragment
-to the writer thread, i.e. the offending code is:
-
-                        fragments_outstanding --;
-                        pthread_mutex_unlock(&fragment_mutex);
-                        queue_put(to_writer, write_buffer);
-
-In extremely rare circumstances, the main thread may see the
-fragments_outstanding counter is zero before the fragment
-deflator sends the fragment buffer to the writer thread, and synchronise
-with the writer thread, and finalise before the fragment has been written.
-
-The fix is to ensure the fragment is queued to the writer thread
-before releasing the mutex.
-
-Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
----
- squashfs-tools/mksquashfs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
-index 87b7d86d30c9..f1fcff1cc284 100644
---- a/squashfs-tools/mksquashfs.c
-+++ b/squashfs-tools/mksquashfs.c
-@@ -2419,8 +2419,8 @@ void *frag_deflator(void *arg)
- 			write_buffer->block = bytes;
- 			bytes += compressed_size;
- 			fragments_outstanding --;
--			pthread_mutex_unlock(&fragment_mutex);
- 			queue_put(to_writer, write_buffer);
-+			pthread_mutex_unlock(&fragment_mutex);
- 			TRACE("Writing fragment %lld, uncompressed size %d, "
- 				"compressed size %d\n", file_buffer->block,
- 				file_buffer->size, compressed_size);
--- 
-2.21.0
-
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-root-mode.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-root-mode.patch
deleted file mode 100644
index 01384c6..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-root-mode.patch
+++ /dev/null
@@ -1,167 +0,0 @@
-From c823262013500cd027c9088980510202b6e30c0c Mon Sep 17 00:00:00 2001
-From: Phillip Lougher <phillip@squashfs.org.uk>
-Date: Tue, 2 Jul 2019 02:32:37 +0100
-Subject: [PATCH] mksquashfs: Add new -root-mode <mode> option
-
-The impetus for adding yet another build tweak option, is
-a bug report raised on Github back in 2017.
-
-Simply put, when Mksquashfs is run with multiple sources on
-the command line, it constructs a root directory containing
-all the sources listed.  So far so good.
-
-But, this containing root directory is conjured out of thin-air,
-it is not read from the source(s).  So what permissions and
-ownership should this root directory have?  I choose to have the
-directory owned and group owned by the user running Mksquashfs, with
-the permissions set to octal 0777.
-
-This is ancient behaviour, which dates back to even before Squashfs 1.0
-was released in October 2002.
-
-Fast forward to this bug report in 2017.  It appears the reporter
-is constructing Mksquashfs images using multiple sources on the
-command line, and thus getting a root directory constructed above.
-
-Their installer is then copying the filesystem, and getting a
-root filesystem that is by default (due to the above 0777 permissions),
-writable by anyone.  They would like the permissions to be set to
-0755.
-
-Now, it can be argued that is not a fault of Squashfs.  If they
-want 0755 permissions, then it should not be beyond the wit of man
-to alter them later.
-
-But there again setting to 0777 was a completely arbitary choice on
-my behalf many years ago.  I see no point in trying to argue this
-is the correct setting.
-
-But I can't change the default behaviour of Mksquashfs now, given
-it's been like that way for 17 years since the beginning, and who
-knows how many things rely on that behaviour.
-
-So perhaps the obvious way forward is to add another build option,
-which allows people to change the default permissions if necesssary.
-
-As implemented, the new option allows the permissions on the root
-directory to be changed for all scenarios, irrespective of the
-origin of the permissions, whether 0777 in the above case or
-read from the filesystem (in the case where a single directory
-is specified on the Mksquashfs command line, and where the permissions
-of the root directory is copied from that source directory).
-
-Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
----
- squashfs-tools/mksquashfs.c | 44 +++++++++++++++++++++++++++++++++----
- 1 file changed, 40 insertions(+), 4 deletions(-)
-
-diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
-index 68a2277..b713d64 100644
---- a/squashfs-tools/mksquashfs.c
-+++ b/squashfs-tools/mksquashfs.c
-@@ -265,6 +265,10 @@ pthread_mutex_t	fragment_mutex = PTHREAD_MUTEX_INITIALIZER;
- pthread_mutex_t	pos_mutex = PTHREAD_MUTEX_INITIALIZER;
- pthread_mutex_t	dup_mutex = PTHREAD_MUTEX_INITIALIZER;
- 
-+/* Root mode option */
-+int root_mode_opt = FALSE;
-+mode_t root_mode;
-+
- /* user options that control parallelisation */
- int processors = -1;
- int bwriter_size;
-@@ -3136,7 +3140,7 @@ void dir_scan(squashfs_inode *inode, char *pathname,
- 		 * command line
- 		 */
- 		memset(&buf, 0, sizeof(buf));
--		buf.st_mode = S_IRWXU | S_IRWXG | S_IRWXO | S_IFDIR;
-+		buf.st_mode = (root_mode_opt) ? root_mode | S_IFDIR : S_IRWXU | S_IRWXG | S_IRWXO | S_IFDIR;
- 		buf.st_uid = getuid();
- 		buf.st_gid = getgid();
- 		buf.st_mtime = time(NULL);
-@@ -3148,6 +3152,9 @@ void dir_scan(squashfs_inode *inode, char *pathname,
- 			/* source directory has disappeared? */
- 			BAD_ERROR("Cannot stat source directory %s because %s\n",
- 				pathname, strerror(errno));
-+		if(root_mode_opt)
-+			buf.st_mode = root_mode | S_IFDIR;
-+
- 		dir_ent->inode = lookup_inode(&buf);
- 	}
- 
-@@ -4755,14 +4762,14 @@ void write_filesystem_tables(struct squashfs_super_block *sBlk, int nopad)
- }
- 
- 
--int parse_numberll(char *start, long long *res, int size)
-+int _parse_numberll(char *start, long long *res, int size, int base)
- {
- 	char *end;
- 	long long number;
- 
- 	errno = 0; /* To distinguish success/failure after call */
- 
--	number = strtoll(start, &end, 10);
-+	number = strtoll(start, &end, base);
- 
- 	/*
- 	 * check for strtoll underflow or overflow in conversion, and other
-@@ -4840,6 +4847,12 @@ int parse_numberll(char *start, long long *res, int size)
- }
- 
- 
-+int parse_numberll(char *start, long long *res, int size)
-+{
-+	return _parse_numberll(start, res, size, 10);
-+}
-+
-+
- int parse_number(char *start, int *res, int size)
- {
- 	long long number;
-@@ -4862,6 +4875,21 @@ int parse_num(char *arg, int *res)
- }
- 
- 
-+int parse_mode(char *arg, mode_t *res)
-+{
-+	long long number;
-+
-+	if(!_parse_numberll(arg, &number, 0, 8))
-+		return 0;
-+
-+	if(number > 07777)
-+		return 0;
-+
-+	*res = (mode_t) number;
-+	return 1;
-+}
-+
-+
- int get_physical_memory()
- {
- 	/* Long longs are used here because with PAE, a 32-bit
-@@ -4987,7 +5015,14 @@ int main(int argc, char *argv[])
- 		comp = lookup_compressor(COMP_DEFAULT);
- 
- 	for(i = source + 2; i < argc; i++) {
--		if(strcmp(argv[i], "-action") == 0 ||
-+		if(strcmp(argv[i], "-root-mode") == 0) {
-+			if((++i == argc) || !parse_mode(argv[i], &root_mode)) {
-+				ERROR("%s: -root-mode missing or invalid mode,"
-+					" octal number <= 07777 expected\n", argv[0]);
-+				exit(1);
-+			}
-+			root_mode_opt = TRUE;
-+		} else if(strcmp(argv[i], "-action") == 0 ||
- 				strcmp(argv[i], "-a") ==0) {
- 			if(++i == argc) {
- 				ERROR("%s: %s missing action\n",
-@@ -5306,6 +5341,7 @@ printOptions:
- 			ERROR("-no-duplicates\t\tdo not perform duplicate "
- 				"checking\n");
- 			ERROR("-all-root\t\tmake all files owned by root\n");
-+			ERROR("-root-mode <mode>\tset root directory permissions to octal <mode>\n");
- 			ERROR("-force-uid uid\t\tset all file uids to uid\n");
- 			ERROR("-force-gid gid\t\tset all file gids to gid\n");
- 			ERROR("-nopad\t\t\tdo not pad filesystem to a multiple "
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-selinux.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-selinux.patch
deleted file mode 100644
index 85131af..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-selinux.patch
+++ /dev/null
@@ -1,526 +0,0 @@
-From: Kenny Root <kroot@google.com>
-Date: Tue, 29 Nov 2017 10:37:09 +0900
-Subject: squashfs-tools: Allow setting selinux xattrs through
- file_context
-
- Add a context-file flag that allows passing an selinux security context
- file to set security.selinux xattrs rather than reading xattrs from
- filesystem's source directory.
-
- Based on the original change to allow the use of SELinux file_contexts
- directly from the source file which was committed to Android's copy
- of squashfs-tools and written by Mohamad Ayyash <mkayyash@google.com>
- ---
-diff -urN squashfs-tools/Makefile squashfs-tools/Makefile
---- a/squashfs-tools/Makefile	2017-12-06 15:59:56.569288884 +0900
-+++ b/squashfs-tools/Makefile	2017-12-06 16:00:58.104681646 +0900
-@@ -102,6 +102,22 @@
- # default.  Users can enable xattrs by using the -xattrs option.
- XATTR_DEFAULT = 1
- 
-+###############################################
-+#  SELinux labelling support build options    #
-+###############################################
-+#
-+# Building SELinux labelling support for Mksquashfs. This provides an
-+# alternative to reading SELinux labels from the filesystem with XATTR
-+# support. It is possible to label the files in the Squashfs filesystem
-+# differently than the source filesystem with this option.
-+#
-+# Note that SELinux labelling support requries that XATTR is also
-+# supported.
-+#
-+# If your build/target environment does not have support for SELinux then
-+# comment out the next line to build Mksquashfs without SELinux labelling
-+# support.
-+SELINUX_SUPPORT = 1
- 
- ###############################################
- #        End of BUILD options section         #
-@@ -117,7 +133,7 @@
- UNSQUASHFS_OBJS = unsquashfs.o unsquash-1.o unsquash-2.o unsquash-3.o \
- 	unsquash-4.o swap.o compressor.o unsquashfs_info.o
- 
--CFLAGS ?= -O2
-+CFLAGS ?= -O2 -ggdb
- CFLAGS += $(EXTRA_CFLAGS) $(INCLUDEDIR) -D_FILE_OFFSET_BITS=64 \
- 	-D_LARGEFILE_SOURCE -D_GNU_SOURCE -DCOMP_DEFAULT=\"$(COMP_DEFAULT)\" \
- 	-Wall
-@@ -185,6 +201,14 @@
- endif
- MKSQUASHFS_OBJS += xattr.o read_xattrs.o
- UNSQUASHFS_OBJS += read_xattrs.o unsquashfs_xattr.o
-+
-+# SELinux support is only available if XATTR support is available
-+ifeq ($(SELINUX_SUPPORT),1)
-+CFLAGS += -DSELINUX_SUPPORT
-+MKSQUASHFS_OBJS += selinux.o
-+LIBS += -lselinux
-+endif
-+
- endif
- 
- #
-diff -urN --exclude compile_commands.json a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
---- a/squashfs-tools/mksquashfs.c	2017-12-06 15:59:56.569288884 +0900
-+++ b/squashfs-tools/mksquashfs.c	2017-12-06 16:02:03.028041005 +0900
-@@ -77,6 +77,7 @@
- #include "read_fs.h"
- #include "restore.h"
- #include "process_fragments.h"
-+#include "selinux.h"
- 
- int delete = FALSE;
- int fd;
-@@ -284,6 +285,11 @@
- int append_fragments = 0;
- struct append_file **file_mapping;
- 
-+/* selinux label */
-+squashfs_selinux_handle *sehnd = NULL;
-+char *context_file = NULL;
-+char *mount_point = NULL;
-+
- static char *read_from_disk(long long start, unsigned int avail_bytes);
- void add_old_root_entry(char *name, squashfs_inode inode, int inode_number,
- 	int type);
-@@ -5332,6 +5338,15 @@
- 		else if(strcmp(argv[i], "-xattrs") == 0)
- 			no_xattrs = FALSE;
- 
-+		else if(strcmp(argv[i], "-context-file") == 0) {
-+			if(++i == argc) {
-+				ERROR("%s: -context-file: missing filename\n",
-+					argv[0]);
-+				exit(1);
-+			}
-+			context_file = argv[i];
-+		}
-+
- 		else if(strcmp(argv[i], "-nopad") == 0)
- 			nopad = TRUE;
- 
-@@ -5347,6 +5362,15 @@
- 		else if(strcmp(argv[i], "-keep-as-directory") == 0)
- 			keep_as_directory = TRUE;
- 
-+		else if(strcmp(argv[i], "-mount-point") == 0) {
-+			if(++i == argc) {
-+				ERROR("%s: -mount-point: missing mount point name\n",
-+					argv[0]);
-+				exit(1);
-+			}
-+			mount_point = argv[i];
-+		}
-+
- 		else if(strcmp(argv[i], "-exit-on-error") == 0)
- 			exit_on_error = TRUE;
- 
-@@ -5382,6 +5406,9 @@
- 				NOXOPT_STR "\n");
- 			ERROR("-xattrs\t\t\tstore extended attributes" XOPT_STR
- 				"\n");
-+			ERROR("-context-file <file>\tApply SELinux context "
-+				"xattr from <file> instead\n\t\t\t"
-+				"of reading xattr from filesystem\n");
- 			ERROR("-noI\t\t\tdo not compress inode table\n");
- 			ERROR("-noD\t\t\tdo not compress data blocks\n");
- 			ERROR("-noF\t\t\tdo not compress fragment blocks\n");
-@@ -5402,6 +5429,9 @@
- 			ERROR("\t\t\tdirectory containing that directory, "
- 				"rather than the\n");
- 			ERROR("\t\t\tcontents of the directory\n");
-+			ERROR("-mount-point <name>\tWhen applying attributes such "
-+				"as SELinux context, treat\n\t\t\t"
-+				"the filesystem as mounted at <name>\n");
- 			ERROR("-4k-align\t\tenables 4k alignment of all files\n");
- 			ERROR("\nFilesystem filter options:\n");
- 			ERROR("-p <pseudo-definition>\tAdd pseudo file "
-diff -urN --exclude compile_commands.json a/squashfs-tools/selinux.c b/squashfs-tools/selinux.c
---- a/squashfs-tools/selinux.c	1970-01-01 09:00:00.000000000 +0900
-+++ b/squashfs-tools/selinux.c	2017-12-06 15:59:36.481487118 +0900
-@@ -0,0 +1,61 @@
-+/* Copyright 2015 The Android Open Source Project */
-+
-+#include <errno.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <selinux/label.h>
-+
-+#include "error.h"
-+#include "selinux.h"
-+#include "xattr.h"
-+
-+
-+#define ARRAY_SIZE(a)	(sizeof(a) / sizeof((a)[0]))
-+
-+
-+squashfs_selinux_handle *get_sehnd(const char *context_file) {
-+	struct selinux_opt seopts[] = {
-+		{
-+			.type = SELABEL_OPT_PATH,
-+			.value = context_file
-+		}
-+	};
-+	struct selabel_handle *sehnd =
-+		selabel_open(SELABEL_CTX_FILE, seopts, ARRAY_SIZE(seopts));
-+
-+	if(sehnd == NULL)
-+		BAD_ERROR("Failure calling selabel_open: %s\n", strerror(errno));
-+
-+	return sehnd;
-+}
-+
-+static char *set_selabel(const char *path, unsigned int mode, struct selabel_handle *sehnd) {
-+	char *secontext;
-+	if(sehnd == NULL)
-+		BAD_ERROR("selabel handle is NULL\n");
-+
-+	int full_name_size = strlen(path) + 2;
-+	char* full_name = (char*) malloc(full_name_size);
-+	if(full_name == NULL)
-+		MEM_ERROR();
-+
-+	full_name[0] = '/';
-+	strncpy(full_name + 1, path, full_name_size - 1);
-+
-+	if(selabel_lookup(sehnd, &secontext, full_name, mode))
-+		secontext = strdup("u:object_r:unlabeled:s0");
-+
-+	free(full_name);
-+	return secontext;
-+}
-+
-+void read_selinux_xattr_from_context_file(char *filename, int mode,
-+	squashfs_selinux_handle *sehnd, struct xattr_list *xattrs) {
-+	char *attr_val;
-+
-+	xattrs->type = get_prefix(xattrs, "security.selinux");
-+	attr_val = set_selabel(filename, mode, sehnd);
-+	xattrs->value = (void *)attr_val;
-+	xattrs->vsize = strlen(attr_val);
-+}
-+
-diff -urN --exclude compile_commands.json a/squashfs-tools/selinux.h b/squashfs-tools/selinux.h
---- a/squashfs-tools/selinux.h	1970-01-01 09:00:00.000000000 +0900
-+++ b/squashfs-tools/selinux.h	2017-12-04 17:11:59.999931242 +0900
-@@ -0,0 +1,27 @@
-+/* Copyright 2015 The Android Open Source Project */
-+
-+#ifndef SELINUX_H
-+#define SELINUX_H
-+
-+#include "xattr.h"
-+
-+#ifdef SELINUX_SUPPORT
-+typedef struct selabel_handle squashfs_selinux_handle;
-+extern squashfs_selinux_handle *get_sehnd(const char *context_file);
-+extern void read_selinux_xattr_from_context_file(char *filename, int mode,
-+	struct selabel_handle *sehnd, struct xattr_list *xattrs);
-+#else
-+typedef void squashfs_selinux_handle;
-+
-+
-+static squashfs_selinux_handle *get_sehnd(const char *context_file) {
-+	return NULL;
-+}
-+
-+
-+static void read_selinux_xattr_from_context_file(char *filename, int mode,
-+	squashfs_selinux_handle *sehnd, struct xattr_list *xattrs) {
-+}
-+#endif
-+
-+#endif
-diff -urN --exclude compile_commands.json a/squashfs-tools/xattr.c b/squashfs-tools/xattr.c
---- a/squashfs-tools/xattr.c	2017-12-06 15:59:56.569288884 +0900
-+++ b/squashfs-tools/xattr.c	2017-12-06 15:59:24.473605618 +0900
-@@ -33,6 +33,7 @@
- #include <errno.h>
- #include <dirent.h>
- #include <string.h>
-+#include <stdint.h>
- #include <stdlib.h>
- #include <sys/xattr.h>
- 
-@@ -40,6 +41,7 @@
- #include "squashfs_swap.h"
- #include "mksquashfs.h"
- #include "xattr.h"
-+#include "selinux.h"
- #include "error.h"
- #include "progressbar.h"
- 
-@@ -76,6 +78,8 @@
- extern long long bytes;
- extern int fd;
- extern unsigned int xattr_bytes, total_xattr_bytes;
-+extern char *context_file;
-+extern char *mount_point;
- 
- /* helper functions from mksquashfs.c */
- extern unsigned short get_checksum(char *, int, unsigned short);
-@@ -83,14 +87,35 @@
- extern long long generic_write_table(int, void *, int, void *, int);
- extern int mangle(char *, char *, int, int, int, int);
- extern char *pathname(struct dir_ent *);
-+extern char *subpathname(struct dir_ent *);
- 
- /* helper functions and definitions from read_xattrs.c */
- extern int read_xattrs_from_disk(int, struct squashfs_super_block *);
- extern struct xattr_list *get_xattr(int, unsigned int *, int);
- extern struct prefix prefix_table[];
- 
-+/* selinux label */
-+extern squashfs_selinux_handle *sehnd;
- 
--static int get_prefix(struct xattr_list *xattr, char *name)
-+
-+void alloc_mounted_path(const char *mount_point, const char *subpath, char **new_path) {
-+	size_t mount_point_len = strlen(mount_point);
-+	size_t subpath_len = strlen(subpath);
-+	size_t new_path_len = mount_point_len + subpath_len + 1;
-+
-+	if(new_path_len < mount_point_len || new_path_len < subpath_len)
-+		BAD_ERROR("Cannot allocate mounted path length; it is over %d\n",
-+			SIZE_MAX);
-+
-+	*new_path = malloc(new_path_len);
-+	if (*new_path == NULL)
-+		MEM_ERROR();
-+
-+	strcpy(*new_path, mount_point);
-+	strcat(*new_path, subpath);
-+}
-+
-+int get_prefix(struct xattr_list *xattr, char *name)
- {
- 	int i;
- 
-@@ -110,13 +135,49 @@
- 	return prefix_table[i].type;
- }
- 
--	
--static int read_xattrs_from_system(char *filename, struct xattr_list **xattrs)
-+static struct xattr_list *xattr_list_add(int *xattr_count, struct xattr_list **xattrs) {
-+	struct xattr_list *x, *next_xattr;
-+
-+	x = realloc(*xattrs, ++*xattr_count * sizeof(struct xattr_list));
-+	if(x == NULL)
-+		MEM_ERROR();
-+
-+	next_xattr = &x[*xattr_count - 1];
-+	memset(next_xattr, 0, sizeof(struct xattr_list));
-+
-+	*xattrs = x;
-+	return next_xattr;
-+}
-+
-+static struct xattr_list *xattr_list_trim(int *xattr_count, struct xattr_list **xattrs) {
-+	struct xattr_list *x, *last_xattr;
-+
-+	if (*xattr_count == 0 || *xattrs == NULL)
-+		return NULL;
-+	x = *xattrs;
-+
-+	last_xattr = &x[*xattr_count - 1];
-+	free(last_xattr->full_name);
-+	free(last_xattr->value);
-+
-+	if (--*xattr_count == 0) {
-+		free(*xattrs);
-+		*xattrs = NULL;
-+		return NULL;
-+	}
-+
-+	x = realloc(*xattrs, *xattr_count * sizeof(struct xattr_list));
-+	if(x == NULL)
-+		MEM_ERROR();
-+
-+	*xattrs = x;
-+	return &x[*xattr_count - 1];
-+}
-+
-+static int read_xattrs_from_system(char *filename, int *xattr_count, struct xattr_list **xattrs)
- {
- 	ssize_t size, vsize;
- 	char *xattr_names, *p;
--	int i;
--	struct xattr_list *xattr_list = NULL;
- 
- 	while(1) {
- 		size = llistxattr(filename, NULL, 0);
-@@ -152,74 +213,69 @@
- 		break;
- 	}
- 
--	for(i = 0, p = xattr_names; p < xattr_names + size; i++) {
--		struct xattr_list *x = realloc(xattr_list, (i + 1) *
--						sizeof(struct xattr_list));
--		if(x == NULL)
--			MEM_ERROR();
--		xattr_list = x;
-+	for(p = xattr_names; p < xattr_names + size; ) {
-+		struct xattr_list *next_xattr = xattr_list_add(xattr_count, xattrs);
- 
--		xattr_list[i].type = get_prefix(&xattr_list[i], p);
-+		next_xattr->type = get_prefix(next_xattr, p);
- 		p += strlen(p) + 1;
--		if(xattr_list[i].type == -1) {
-+		if(next_xattr->type == -1) {
- 			ERROR("Unrecognised xattr prefix %s\n",
--				xattr_list[i].full_name);
--			free(xattr_list[i].full_name);
--			i--;
-+				next_xattr->full_name);
-+			xattr_list_trim(xattr_count, xattrs);
- 			continue;
- 		}
- 
- 		while(1) {
--			vsize = lgetxattr(filename, xattr_list[i].full_name,
-+			errno = 0;
-+			vsize = lgetxattr(filename, next_xattr->full_name,
- 								NULL, 0);
- 			if(vsize < 0) {
--				ERROR_START("lgetxattr failed for %s in "
--					"read_attrs, because %s", filename,
--					strerror(errno));
-+				ERROR_START("lgetxattr failed for %s attrib %s "
-+					"in read_attrs, because %s", filename,
-+					next_xattr->full_name, strerror(errno));
- 				ERROR_EXIT(".  Ignoring");
--				free(xattr_list[i].full_name);
-+				xattr_list_trim(xattr_count, xattrs);
- 				goto failed;
- 			}
- 
--			xattr_list[i].value = malloc(vsize);
--			if(xattr_list[i].value == NULL)
-+			next_xattr->value = malloc(vsize);
-+			if(next_xattr->value == NULL)
- 				MEM_ERROR();
- 
--			vsize = lgetxattr(filename, xattr_list[i].full_name,
--						xattr_list[i].value, vsize);
-+			errno = 0;
-+			vsize = lgetxattr(filename, next_xattr->full_name,
-+						next_xattr->value, vsize);
- 			if(vsize < 0) {
--				free(xattr_list[i].value);
-+				free(next_xattr->value);
-+				next_xattr->value = NULL;
- 				if(errno == ERANGE)
- 					/* xattr grew?  Try again */
- 					continue;
- 				else {
- 					ERROR_START("lgetxattr failed for %s "
--						"in read_attrs, because %s",
--						filename, strerror(errno));
-+						"attrib %s in read_attrs, "
-+						"because %s", filename,
-+						next_xattr->full_name,
-+						strerror(errno));
- 					ERROR_EXIT(".  Ignoring");
--					free(xattr_list[i].full_name);
-+					xattr_list_trim(xattr_count, xattrs);
- 					goto failed;
- 				}
- 			}
--			
-+
- 			break;
- 		}
--		xattr_list[i].vsize = vsize;
-+		next_xattr->vsize = vsize;
- 
- 		TRACE("read_xattrs_from_system: filename %s, xattr name %s,"
--			" vsize %d\n", filename, xattr_list[i].full_name,
--			xattr_list[i].vsize);
-+			" vsize %d\n", filename, next_xattr->full_name,
-+			next_xattr->vsize);
- 	}
- 	free(xattr_names);
--	*xattrs = xattr_list;
--	return i;
-+	return 1;
- 
- failed:
--	while(--i >= 0) {
--		free(xattr_list[i].full_name);
--		free(xattr_list[i].value);
--	}
--	free(xattr_list);
-+	while(xattr_list_trim(xattr_count, xattrs) != NULL);
- 	free(xattr_names);
- 	return 0;
- }
-@@ -608,13 +664,31 @@
- 	struct dir_ent *dir_ent = d;
- 	struct inode_info *inode = dir_ent->inode;
- 	char *filename = pathname(dir_ent);
--	struct xattr_list *xattr_list;
--	int xattrs;
-+	struct xattr_list *xattr_list = NULL, *next_xattr = NULL;
-+	int xattrs = 0;
- 
- 	if(no_xattrs || IS_PSEUDO(inode) || inode->root_entry)
- 		return SQUASHFS_INVALID_XATTR;
- 
--	xattrs = read_xattrs_from_system(filename, &xattr_list);
-+	read_xattrs_from_system(filename, &xattrs, &xattr_list);
-+
-+	if(context_file) {
-+		if(sehnd == NULL)
-+			sehnd = get_sehnd(context_file);
-+		if(mount_point) {
-+			char *mounted_path;
-+			alloc_mounted_path(mount_point, subpathname(dir_ent), &mounted_path);
-+			next_xattr = xattr_list_add(&xattrs, &xattr_list);
-+			read_selinux_xattr_from_context_file(mounted_path, inode->buf.st_mode,
-+					sehnd, next_xattr);
-+			free(mounted_path);
-+		} else {
-+			next_xattr = xattr_list_add(&xattrs, &xattr_list);
-+			read_selinux_xattr_from_context_file(filename, inode->buf.st_mode,
-+					sehnd, next_xattr);
-+		}
-+	}
-+
- 	if(xattrs == 0)
- 		return SQUASHFS_INVALID_XATTR;
- 
-diff -urN --exclude compile_commands.json a/squashfs-tools/xattr.h b/squashfs-tools/xattr.h
---- a/squashfs-tools/xattr.h	2017-12-06 15:59:56.569288884 +0900
-+++ b/squashfs-tools/xattr.h	2017-12-04 14:31:39.653943076 +0900
-@@ -24,6 +24,8 @@
-  * xattr.h
-  */
- 
-+#include "squashfs_fs.h"
-+
- #define XATTR_VALUE_OOL		SQUASHFS_XATTR_VALUE_OOL
- #define XATTR_PREFIX_MASK	SQUASHFS_XATTR_PREFIX_MASK
- 
-@@ -66,6 +68,7 @@
- extern int generate_xattrs(int, struct xattr_list *);
- 
- #ifdef XATTR_SUPPORT
-+extern int get_prefix(struct xattr_list *xattr, char *name);
- extern int get_xattrs(int, struct squashfs_super_block *);
- extern int read_xattrs(void *);
- extern long long write_xattrs();
-@@ -77,6 +80,12 @@
- extern struct xattr_list *get_xattr(int, unsigned int *, int);
- extern void free_xattr(struct xattr_list *, int);
- #else
-+static inline int get_prefix(struct xattr_list *xattr, char *name)
-+{
-+	return -1;
-+}
-+
-+
- static inline int get_xattrs(int fd, struct squashfs_super_block *sBlk)
- {
- 	if(sBlk->xattr_id_table_start != SQUASHFS_INVALID_BLK) {
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-sysmacros.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-sysmacros.patch
deleted file mode 100644
index 1430b1a..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-sysmacros.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-sys/types.h might not always include sys/sysmacros.h for major/minor/makedev
-
---- a/squashfs-tools/mksquashfs.c
-+++ b/squashfs-tools/mksquashfs.c
-@@ -59,6 +59,7 @@
- #else
- #include <endian.h>
- #include <sys/sysinfo.h>
-+#include <sys/sysmacros.h>
- #endif
- 
- #include "squashfs_fs.h"
---- a/squashfs-tools/unsquashfs.c
-+++ b/squashfs-tools/unsquashfs.c
-@@ -38,6 +38,10 @@
- #include <limits.h>
- #include <ctype.h>
- 
-+#ifdef linux
-+#include <sys/sysmacros.h>
-+#endif
-+
- struct cache *fragment_cache, *data_cache;
- struct queue *to_reader, *to_inflate, *to_writer, *from_writer;
- pthread_t *thread, *inflator_thread;
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-xattrs.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.3-xattrs.patch
deleted file mode 100644
index 47b0ea5..0000000
--- a/sys-fs/squashfs-tools/files/squashfs-tools-4.3-xattrs.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From ffe9e55c4993422ce36213fa86d4fc29c22646ea Mon Sep 17 00:00:00 2001
-From: Wessel Dankers <wsl-debian-804194@fruit.je>
-Date: Fri, 17 Jun 2016 09:46:42 +0800
-Subject: [PATCH] unsquashfs: Correctly set file capabilities
-
-As posted on https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=804194.
----
- squashfs-tools/unsquashfs.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/squashfs-tools/unsquashfs.c b/squashfs-tools/unsquashfs.c
-index 1323dd6..a5f0117 100644
---- a/squashfs-tools/unsquashfs.c
-+++ b/squashfs-tools/unsquashfs.c
-@@ -821,8 +821,6 @@ int set_attributes(char *pathname, int mode, uid_t uid, gid_t guid, time_t time,
- {
- 	struct utimbuf times = { time, time };
- 
--	write_xattr(pathname, xattr);
--
- 	if(utime(pathname, &times) == -1) {
- 		ERROR("set_attributes: failed to set time on %s, because %s\n",
- 			pathname, strerror(errno));
-@@ -845,6 +843,8 @@ int set_attributes(char *pathname, int mode, uid_t uid, gid_t guid, time_t time,
- 		return FALSE;
- 	}
- 
-+	write_xattr(pathname, xattr);
-+
- 	return TRUE;
- }
- 
--- 
-2.8.0.rc3.226.g39d4020
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.4_p1-4k-align.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.4_p1-4k-align.patch
new file mode 100644
index 0000000..cf75441
--- /dev/null
+++ b/sys-fs/squashfs-tools/files/squashfs-tools-4.4_p1-4k-align.patch
@@ -0,0 +1,93 @@
+From 81649621864c9c008301b74b234d5ae99243eefb Mon Sep 17 00:00:00 2001
+From: Amin Hassani <ahassani@google.com>
+Date: Thu, 15 Dec 2016 10:43:15 -0800
+Subject: [PATCH 2/3] mksquashfs 4K aligns the files inside the squashfs image
+
+Files inside a squashfs image are not necessarily 4k (4096)
+aligned. This patch starts each file in a 4k aligned address and pads
+zero to the end of the file until it reaches the next 4k aligned
+address. This will not change the size of the compressed
+blocks (especially the last one) and hence it will not change how the
+files are being loaded in kernel or unsquashfs. However on average this
+increases the size of the squashfs image which can be calculated by the
+following formula:
+
+increased_size = (number_of_unfragmented_files_in_image + number of fragments) * 2048
+
+The 4k alignment can be enabled by flag '-4k-align'
+---
+ squashfs-tools/mksquashfs.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
+index a09ebf6..dfbbc00 100644
+--- a/squashfs-tools/mksquashfs.c
++++ b/squashfs-tools/mksquashfs.c
+@@ -103,6 +103,8 @@ int use_regex = FALSE;
+ int nopad = FALSE;
+ int exit_on_error = FALSE;
+ long long start_offset = 0;
++int do_4k_align = FALSE;
++#define ALIGN_UP(bytes, size) (bytes = (bytes + size - 1) & ~(size - 1))
+ 
+ long long global_uid = -1, global_gid = -1;
+ 
+@@ -1546,6 +1548,9 @@ void unlock_fragments()
+ 	 * queue at this time.
+ 	 */
+ 	while(!queue_empty(locked_fragment)) {
++		// 4k align the start of remaining queued fragments.
++		if(do_4k_align)
++			ALIGN_UP(bytes, 4096);
+ 		write_buffer = queue_get(locked_fragment);
+ 		frg = write_buffer->block;	
+ 		size = SQUASHFS_COMPRESSED_SIZE_BLOCK(fragment_table[frg].size);
+@@ -2478,6 +2483,9 @@ void *frag_deflator(void *arg)
+ 		write_buffer->size = compressed_size;
+ 		pthread_mutex_lock(&fragment_mutex);
+ 		if(fragments_locked == FALSE) {
++			// 4k align the start of each fragment.
++			if(do_4k_align)
++				ALIGN_UP(bytes, 4096);
+ 			fragment_table[file_buffer->block].size = c_byte;
+ 			fragment_table[file_buffer->block].start_block = bytes;
+ 			write_buffer->block = bytes;
+@@ -2877,6 +2885,10 @@ int write_file_blocks(squashfs_inode *inode, struct dir_ent *dir_ent,
+ 	long long sparse = 0;
+ 	struct file_buffer *fragment_buffer = NULL;
+ 
++	// 4k align the start of each file.
++	if(do_4k_align)
++		ALIGN_UP(bytes, 4096);
++
+ 	if(pre_duplicate(read_size))
+ 		return write_file_blocks_dup(inode, dir_ent, read_buffer, dup);
+ 
+@@ -4972,6 +4984,7 @@ void write_filesystem_tables(struct squashfs_super_block *sBlk, int nopad)
+ 		"compressed", no_fragments ? "no" : noF ? "uncompressed" :
+ 		"compressed", no_xattrs ? "no" : noX ? "uncompressed" :
+ 		"compressed", noI || noId ? "uncompressed" : "compressed");
++	printf("\t4k %saligned\n", do_4k_align ? "" : "un");
+ 	printf("\tduplicates are %sremoved\n", duplicate_checking ? "" :
+ 		"not ");
+ 	printf("Filesystem size %.2f Kbytes (%.2f Mbytes)\n", bytes / 1024.0,
+@@ -5853,6 +5866,8 @@ print_compressor_options:
+ 			root_name = argv[i];
+ 		} else if(strcmp(argv[i], "-version") == 0) {
+ 			VERSION();
++		} else if(strcmp(argv[i], "-4k-align") == 0) {
++			do_4k_align = TRUE;
+ 		} else {
+ 			ERROR("%s: invalid option\n\n", argv[0]);
+ printOptions:
+@@ -5904,6 +5919,7 @@ printOptions:
+ 			ERROR("\t\t\tdirectory containing that directory, "
+ 				"rather than the\n");
+ 			ERROR("\t\t\tcontents of the directory\n");
++			ERROR("-4k-align\t\tenables 4k alignment of all files\n");
+ 			ERROR("\nFilesystem filter options:\n");
+ 			ERROR("-p <pseudo-definition>\tAdd pseudo file "
+ 				"definition\n");
+-- 
+2.31.1.527.g47e6f16901-goog
+
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.4_p1-file-map.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.4_p1-file-map.patch
new file mode 100644
index 0000000..01a6374
--- /dev/null
+++ b/sys-fs/squashfs-tools/files/squashfs-tools-4.4_p1-file-map.patch
@@ -0,0 +1,170 @@
+From dc1463c684932fbdab47b203b67d8b6f075da254 Mon Sep 17 00:00:00 2001
+From: Amin Hassani <ahassani@google.com>
+Date: Fri, 11 Aug 2017 11:20:02 -0700
+Subject: [PATCH 1/3] Generate squashfs image file map using unsquashfs
+
+This CL modifies unsquashfs to generate a file map when given the flag
+-m or -map. The structure of the file map is a list of per-line of the
+following:
+
+path start compressed_block_size_1 ... compressed_block_size_N
+
+where:
+- 'path' is the full path to the file.
+- 'start' is the start byte address of the file.
+- 'compressed_block_size_i' is a the length of the i'th compressed block
+in bytes. If the block is uncompressed its 25th LSB is set.
+
+It also first prints the list of all fragments along with their address
+and block sizes at the beginning of the aforementioned list. The path
+for each fragment is '<fragment_i>' with 'i' be the i'th fragment.
+
+The usage:
+unsquashfs -m(ap) <path_to_file_map> <squashfs_image>
+---
+ squashfs-tools/unsquashfs.c | 63 ++++++++++++++++++++++++++++++++++---
+ 1 file changed, 58 insertions(+), 5 deletions(-)
+
+diff --git a/squashfs-tools/unsquashfs.c b/squashfs-tools/unsquashfs.c
+index 65f208d..f82f197 100644
+--- a/squashfs-tools/unsquashfs.c
++++ b/squashfs-tools/unsquashfs.c
+@@ -78,6 +78,9 @@ int user_xattrs = FALSE;
+ int ignore_errors = FALSE;
+ int strict_errors = FALSE;
+ int use_localtime = TRUE;
++int lsfilemap = FALSE;
++char* file_map_path = NULL;
++FILE* file_map_file = NULL;
+ 
+ int lookup_type[] = {
+ 	0,
+@@ -498,7 +501,6 @@ void dump_cache(struct cache *cache)
+ 	pthread_mutex_unlock(&cache->mutex);
+ }
+ 
+-
+ char *modestr(char *str, int mode)
+ {
+ 	int i;
+@@ -513,6 +515,15 @@ char *modestr(char *str, int mode)
+ 	return str;
+ }
+ 
++void print_file_map(char* pathname, long long start, int block_count,
++					unsigned int* block_list)
++{
++	fprintf(file_map_file, "%s %lld", pathname, start);
++	int i;
++	for(i = 0; i < block_count; i++)
++		fprintf(file_map_file, " %u", block_list[i]);
++	fprintf(file_map_file, "\n");
++}
+ 
+ #define TOTALCHARS  25
+ int print_filename(char *pathname, struct inode *inode)
+@@ -525,7 +536,20 @@ int print_filename(char *pathname, struct inode *inode)
+ 	struct tm *t;
+ 
+ 	if(short_ls) {
+-		printf("%s\n", pathname);
++		if(!lsfilemap)
++			printf("%s\n", pathname);
++		else if((SQUASHFS_FILE_TYPE == inode->type ||
++				SQUASHFS_LREG_TYPE == inode->type) &&
++				inode->fragment < 0) {
++			unsigned int* block_list =
++				malloc(inode->blocks * sizeof(unsigned int));
++			if(block_list == NULL)
++				EXIT_UNSQUASH("print_filename: unable to malloc block list\n");
++			s_ops->read_block_list(block_list, inode->block_ptr, inode->blocks);
++			print_file_map(pathname, inode->start, inode->blocks,
++							   block_list);
++			free(block_list);
++		}
+ 		return 1;
+ 	}
+ 
+@@ -1604,7 +1628,7 @@ int dir_scan(char *parent_name, unsigned int start_block, unsigned int offset,
+ 		return FALSE;
+ 	}
+ 
+-	if((lsonly || info) && (!concise || dir->dir_count ==0))
++	if(!lsfilemap && (lsonly || info) && (!concise || dir->dir_count ==0))
+ 		print_filename(parent_name, i);
+ 
+ 	if(!lsonly) {
+@@ -1668,7 +1692,7 @@ int dir_scan(char *parent_name, unsigned int start_block, unsigned int offset,
+ 
+ 			i = s_ops->read_inode(start_block, offset);
+ 
+-			if(lsonly || info)
++			if(lsfilemap || lsonly || info)
+ 				print_filename(pathname, i);
+ 
+ 			if(!lsonly) {
+@@ -2786,6 +2810,16 @@ int main(int argc, char *argv[])
+ 				ERROR("%s: %s missing or invalid offset size\n", argv[0], argv[i - 1]);
+ 				exit(1);
+ 			}
++		} else if(strcmp(argv[i], "-map") == 0 ||
++				strcmp(argv[i], "-m") == 0) {
++			if(++i == argc) {
++				ERROR("%s: -map missing filename\n",
++					argv[0]);
++				exit(1);
++			}
++			file_map_path = argv[i];
++			lsonly = TRUE;
++			lsfilemap = TRUE;
+ 		} else
+ 			goto options;
+ 	}
+@@ -2869,6 +2903,8 @@ options:
+ 				"regular expressions\n");
+ 			ERROR("\t\t\t\trather than use the default shell "
+ 				"wildcard\n\t\t\t\texpansion (globbing)\n");
++			ERROR("\t-m[ap] <file>\tcreates file map"
++				", but doesn't unsquash\n");
+ 			ERROR("\nDecompressors available:\n");
+ 			display_compressors("", "");
+ 		}
+@@ -2970,10 +3006,24 @@ options:
+ 			printf("%d inodes (%d blocks) to write\n\n", total_inodes,
+ 					total_inodes - total_files + total_blocks);
+ 		}
+-
+ 		enable_progress_bar();
+ 	}
+ 
++	if(lsfilemap) {
++		int i, size;
++		long long start;
++		char tmp[22];
++		file_map_file = fopen(file_map_path, "w");
++		if(file_map_file == NULL)
++			EXIT_UNSQUASH("Failed to open file map \"%s\" because %s\n",
++				file_map_path, strerror(errno));
++		for(i = 0; i < sBlk.s.fragments; i++) {
++			s_ops->read_fragment(i, &start, &size);
++			snprintf(tmp, 22, "<fragment-%d>", i);
++			print_file_map(tmp, start, 1, (unsigned int*)&size);
++		}
++	}
++
+ 	res = dir_scan(dest, SQUASHFS_INODE_BLK(sBlk.s.root_inode),
+ 		SQUASHFS_INODE_OFFSET(sBlk.s.root_inode), paths);
+ 	if(res == FALSE)
+@@ -2984,6 +3034,9 @@ options:
+ 	if(res == TRUE)
+ 		exit_code = 1;
+ 
++	if(lsfilemap)
++		fclose(file_map_file);
++
+ 	disable_progress_bar();
+ 
+ 	if(!quiet && !lsonly) {
+-- 
+2.31.1.527.g47e6f16901-goog
+
diff --git a/sys-fs/squashfs-tools/files/squashfs-tools-4.4_p1-selinux.patch b/sys-fs/squashfs-tools/files/squashfs-tools-4.4_p1-selinux.patch
new file mode 100644
index 0000000..b38430e
--- /dev/null
+++ b/sys-fs/squashfs-tools/files/squashfs-tools-4.4_p1-selinux.patch
@@ -0,0 +1,554 @@
+From cf84436d19018c09ff5acf3a552c297acb0b72ab Mon Sep 17 00:00:00 2001
+From: Gwendal Grignou <gwendal@google.com>
+Date: Fri, 30 Apr 2021 13:34:23 -0700
+Subject: [PATCH 3/3] squashfs-tools: Allow setting selinux xattrs through
+ file_context
+
+ Add a context-file flag that allows passing an selinux security context
+ file to set security.selinux xattrs rather than reading xattrs from
+ filesystem's source directory.
+
+ Based on the original change to allow the use of SELinux file_contexts
+ directly from the source file which was committed to Android's copy
+ of squashfs-tools and written by Mohamad Ayyash <mkayyash@google.com>
+ ---
+---
+ squashfs-tools/Makefile     |  26 +++++-
+ squashfs-tools/mksquashfs.c |  30 +++++++
+ squashfs-tools/selinux.c    |  61 +++++++++++++
+ squashfs-tools/selinux.h    |  27 ++++++
+ squashfs-tools/xattr.c      | 167 +++++++++++++++++++++++++-----------
+ squashfs-tools/xattr.h      |   9 ++
+ 6 files changed, 271 insertions(+), 49 deletions(-)
+ create mode 100644 squashfs-tools/selinux.c
+ create mode 100644 squashfs-tools/selinux.h
+
+diff --git a/squashfs-tools/Makefile b/squashfs-tools/Makefile
+index aee4b96..a0bc5db 100644
+--- a/squashfs-tools/Makefile
++++ b/squashfs-tools/Makefile
+@@ -107,6 +107,22 @@ XATTR_SUPPORT = 1
+ # default.  Users can enable xattrs by using the -xattrs option.
+ XATTR_DEFAULT = 1
+ 
++###############################################
++#  SELinux labelling support build options    #
++###############################################
++#
++# Building SELinux labelling support for Mksquashfs. This provides an
++# alternative to reading SELinux labels from the filesystem with XATTR
++# support. It is possible to label the files in the Squashfs filesystem
++# differently than the source filesystem with this option.
++#
++# Note that SELinux labelling support requries that XATTR is also
++# supported.
++#
++# If your build/target environment does not have support for SELinux then
++# comment out the next line to build Mksquashfs without SELinux labelling
++# support.
++SELINUX_SUPPORT = 1
+ 
+ ###############################################
+ #          Reproducible Image options         #
+@@ -158,7 +174,7 @@ MKSQUASHFS_OBJS = mksquashfs.o read_fs.o action.o swap.o pseudo.o compressor.o \
+ UNSQUASHFS_OBJS = unsquashfs.o unsquash-1.o unsquash-2.o unsquash-3.o \
+ 	unsquash-4.o unsquash-123.o unsquash-34.o swap.o compressor.o unsquashfs_info.o
+ 
+-CFLAGS ?= -O2
++CFLAGS ?= -O2 -ggdb
+ CFLAGS += $(EXTRA_CFLAGS) $(INCLUDEDIR) -D_FILE_OFFSET_BITS=64 \
+ 	-D_LARGEFILE_SOURCE -D_GNU_SOURCE -DCOMP_DEFAULT=\"$(COMP_DEFAULT)\" \
+ 	-Wall
+@@ -230,6 +246,14 @@ CFLAGS += -DXATTR_SUPPORT
+ endif
+ MKSQUASHFS_OBJS += xattr.o read_xattrs.o
+ UNSQUASHFS_OBJS += read_xattrs.o unsquashfs_xattr.o
++
++# SELinux support is only available if XATTR support is available
++ifeq ($(SELINUX_SUPPORT),1)
++CFLAGS += -DSELINUX_SUPPORT
++MKSQUASHFS_OBJS += selinux.o
++LIBS += -lselinux
++endif
++
+ endif
+ 
+ ifeq ($(REPRODUCIBLE_DEFAULT),1)
+diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
+index dfbbc00..702b7cb 100644
+--- a/squashfs-tools/mksquashfs.c
++++ b/squashfs-tools/mksquashfs.c
+@@ -78,6 +78,7 @@
+ #include "restore.h"
+ #include "process_fragments.h"
+ #include "fnmatch_compat.h"
++#include "selinux.h"
+ 
+ int delete = FALSE;
+ int quiet = FALSE;
+@@ -314,6 +315,11 @@ struct dir_info *root_dir;
+ FILE *log_fd;
+ int logging=FALSE;
+ 
++/* selinux label */
++squashfs_selinux_handle *sehnd = NULL;
++char *context_file = NULL;
++char *mount_point = NULL;
++
+ static char *read_from_disk(long long start, unsigned int avail_bytes);
+ void add_old_root_entry(char *name, squashfs_inode inode, int inode_number,
+ 	int type);
+@@ -5836,6 +5842,15 @@ print_compressor_options:
+ 		else if(strcmp(argv[i], "-xattrs") == 0)
+ 			no_xattrs = FALSE;
+ 
++		else if(strcmp(argv[i], "-context-file") == 0) {
++			if(++i == argc) {
++				ERROR("%s: -context-file: missing filename\n",
++					argv[0]);
++				exit(1);
++			}
++			context_file = argv[i];
++		}
++
+ 		else if(strcmp(argv[i], "-nopad") == 0)
+ 			nopad = TRUE;
+ 
+@@ -5854,6 +5869,15 @@ print_compressor_options:
+ 		else if(strcmp(argv[i], "-keep-as-directory") == 0)
+ 			keep_as_directory = TRUE;
+ 
++		else if(strcmp(argv[i], "-mount-point") == 0) {
++			if(++i == argc) {
++				ERROR("%s: -mount-point: missing mount point name\n",
++					argv[0]);
++				exit(1);
++			}
++			mount_point = argv[i];
++		}
++
+ 		else if(strcmp(argv[i], "-exit-on-error") == 0)
+ 			exit_on_error = TRUE;
+ 
+@@ -5896,6 +5920,9 @@ printOptions:
+ 				NOXOPT_STR "\n");
+ 			ERROR("-xattrs\t\t\tstore extended attributes" XOPT_STR
+ 				"\n");
++			ERROR("-context-file <file>\tApply SELinux context "
++				"xattr from <file> instead\n\t\t\t"
++				"of reading xattr from filesystem\n");
+ 			ERROR("-noI\t\t\tdo not compress inode table\n");
+ 			ERROR("-noId\t\t\tdo not compress the uid/gid table"
+ 				" (implied by -noI)\n");
+@@ -5919,6 +5946,9 @@ printOptions:
+ 			ERROR("\t\t\tdirectory containing that directory, "
+ 				"rather than the\n");
+ 			ERROR("\t\t\tcontents of the directory\n");
++			ERROR("-mount-point <name>\tWhen applying attributes such "
++				"as SELinux context, treat\n\t\t\t"
++				"the filesystem as mounted at <name>\n");
+ 			ERROR("-4k-align\t\tenables 4k alignment of all files\n");
+ 			ERROR("\nFilesystem filter options:\n");
+ 			ERROR("-p <pseudo-definition>\tAdd pseudo file "
+diff --git a/squashfs-tools/selinux.c b/squashfs-tools/selinux.c
+new file mode 100644
+index 0000000..7154212
+--- /dev/null
++++ b/squashfs-tools/selinux.c
+@@ -0,0 +1,61 @@
++/* Copyright 2015 The Android Open Source Project */
++
++#include <errno.h>
++#include <stdlib.h>
++#include <string.h>
++#include <selinux/label.h>
++
++#include "error.h"
++#include "selinux.h"
++#include "xattr.h"
++
++
++#define ARRAY_SIZE(a)	(sizeof(a) / sizeof((a)[0]))
++
++
++squashfs_selinux_handle *get_sehnd(const char *context_file) {
++	struct selinux_opt seopts[] = {
++		{
++			.type = SELABEL_OPT_PATH,
++			.value = context_file
++		}
++	};
++	struct selabel_handle *sehnd =
++		selabel_open(SELABEL_CTX_FILE, seopts, ARRAY_SIZE(seopts));
++
++	if(sehnd == NULL)
++		BAD_ERROR("Failure calling selabel_open: %s\n", strerror(errno));
++
++	return sehnd;
++}
++
++static char *set_selabel(const char *path, unsigned int mode, struct selabel_handle *sehnd) {
++	char *secontext;
++	if(sehnd == NULL)
++		BAD_ERROR("selabel handle is NULL\n");
++
++	int full_name_size = strlen(path) + 2;
++	char* full_name = (char*) malloc(full_name_size);
++	if(full_name == NULL)
++		MEM_ERROR();
++
++	full_name[0] = '/';
++	strncpy(full_name + 1, path, full_name_size - 1);
++
++	if(selabel_lookup(sehnd, &secontext, full_name, mode))
++		secontext = strdup("u:object_r:unlabeled:s0");
++
++	free(full_name);
++	return secontext;
++}
++
++void read_selinux_xattr_from_context_file(char *filename, int mode,
++	squashfs_selinux_handle *sehnd, struct xattr_list *xattrs) {
++	char *attr_val;
++
++	xattrs->type = get_prefix(xattrs, "security.selinux");
++	attr_val = set_selabel(filename, mode, sehnd);
++	xattrs->value = (void *)attr_val;
++	xattrs->vsize = strlen(attr_val);
++}
++
+diff --git a/squashfs-tools/selinux.h b/squashfs-tools/selinux.h
+new file mode 100644
+index 0000000..f29b679
+--- /dev/null
++++ b/squashfs-tools/selinux.h
+@@ -0,0 +1,27 @@
++/* Copyright 2015 The Android Open Source Project */
++
++#ifndef SELINUX_H
++#define SELINUX_H
++
++#include "xattr.h"
++
++#ifdef SELINUX_SUPPORT
++typedef struct selabel_handle squashfs_selinux_handle;
++extern squashfs_selinux_handle *get_sehnd(const char *context_file);
++extern void read_selinux_xattr_from_context_file(char *filename, int mode,
++	struct selabel_handle *sehnd, struct xattr_list *xattrs);
++#else
++typedef void squashfs_selinux_handle;
++
++
++static squashfs_selinux_handle *get_sehnd(const char *context_file) {
++	return NULL;
++}
++
++
++static void read_selinux_xattr_from_context_file(char *filename, int mode,
++	squashfs_selinux_handle *sehnd, struct xattr_list *xattrs) {
++}
++#endif
++
++#endif
+diff --git a/squashfs-tools/xattr.c b/squashfs-tools/xattr.c
+index d26e278..b756a27 100644
+--- a/squashfs-tools/xattr.c
++++ b/squashfs-tools/xattr.c
+@@ -33,6 +33,7 @@
+ #include <errno.h>
+ #include <dirent.h>
+ #include <string.h>
++#include <stdint.h>
+ #include <stdlib.h>
+ #include <sys/xattr.h>
+ 
+@@ -41,6 +42,7 @@
+ #include "mksquashfs.h"
+ #include "xattr.h"
+ #include "error.h"
++#include "selinux.h"
+ #include "progressbar.h"
+ 
+ /* compressed xattr table */
+@@ -76,6 +78,8 @@ extern int no_xattrs, noX;
+ extern long long bytes;
+ extern int fd;
+ extern unsigned int xattr_bytes, total_xattr_bytes;
++extern char *context_file;
++extern char *mount_point;
+ 
+ /* helper functions from mksquashfs.c */
+ extern unsigned short get_checksum(char *, int, unsigned short);
+@@ -83,14 +87,35 @@ extern void write_destination(int, long long, int, void *);
+ extern long long generic_write_table(int, void *, int, void *, int);
+ extern int mangle(char *, char *, int, int, int, int);
+ extern char *pathname(struct dir_ent *);
++extern char *pathname(struct dir_ent *);
++extern char *subpathname(struct dir_ent *);
+ 
+ /* helper functions and definitions from read_xattrs.c */
+ extern int read_xattrs_from_disk(int, struct squashfs_super_block *, int, long long *);
+ extern struct xattr_list *get_xattr(int, unsigned int *, int *);
+ extern struct prefix prefix_table[];
+ 
++/* selinux label */
++extern squashfs_selinux_handle *sehnd;
++
++void alloc_mounted_path(const char *mount_point, const char *subpath, char **new_path) {
++	size_t mount_point_len = strlen(mount_point);
++	size_t subpath_len = strlen(subpath);
++	size_t new_path_len = mount_point_len + subpath_len + 1;
++
++	if(new_path_len < mount_point_len || new_path_len < subpath_len)
++		BAD_ERROR("Cannot allocate mounted path length; it is over %d\n",
++			SIZE_MAX);
++
++	*new_path = malloc(new_path_len);
++	if (*new_path == NULL)
++		MEM_ERROR();
+ 
+-static int get_prefix(struct xattr_list *xattr, char *name)
++	strcpy(*new_path, mount_point);
++	strcat(*new_path, subpath);
++}
++
++int get_prefix(struct xattr_list *xattr, char *name)
+ {
+ 	int i;
+ 
+@@ -110,13 +135,49 @@ static int get_prefix(struct xattr_list *xattr, char *name)
+ 	return prefix_table[i].type;
+ }
+ 
+-	
+-static int read_xattrs_from_system(char *filename, struct xattr_list **xattrs)
++static struct xattr_list *xattr_list_add(int *xattr_count, struct xattr_list **xattrs) {
++	struct xattr_list *x, *next_xattr;
++
++	x = realloc(*xattrs, ++*xattr_count * sizeof(struct xattr_list));
++	if(x == NULL)
++		MEM_ERROR();
++
++	next_xattr = &x[*xattr_count - 1];
++	memset(next_xattr, 0, sizeof(struct xattr_list));
++
++	*xattrs = x;
++	return next_xattr;
++}
++
++static struct xattr_list *xattr_list_trim(int *xattr_count, struct xattr_list **xattrs) {
++	struct xattr_list *x, *last_xattr;
++
++	if (*xattr_count == 0 || *xattrs == NULL)
++		return NULL;
++	x = *xattrs;
++
++	last_xattr = &x[*xattr_count - 1];
++	free(last_xattr->full_name);
++	free(last_xattr->value);
++
++	if (--*xattr_count == 0) {
++		free(*xattrs);
++		*xattrs = NULL;
++		return NULL;
++	}
++
++	x = realloc(*xattrs, *xattr_count * sizeof(struct xattr_list));
++	if(x == NULL)
++		MEM_ERROR();
++
++	*xattrs = x;
++	return &x[*xattr_count - 1];
++}
++
++static int read_xattrs_from_system(char *filename, int *xattr_count, struct xattr_list **xattrs)
+ {
+ 	ssize_t size, vsize;
+ 	char *xattr_names, *p;
+-	int i;
+-	struct xattr_list *xattr_list = NULL;
+ 
+ 	while(1) {
+ 		size = llistxattr(filename, NULL, 0);
+@@ -152,77 +213,69 @@ static int read_xattrs_from_system(char *filename, struct xattr_list **xattrs)
+ 		break;
+ 	}
+ 
+-	for(i = 0, p = xattr_names; p < xattr_names + size; i++) {
+-		struct xattr_list *x = realloc(xattr_list, (i + 1) *
+-						sizeof(struct xattr_list));
+-		if(x == NULL)
+-			MEM_ERROR();
+-		xattr_list = x;
++	for(p = xattr_names; p < xattr_names + size; ) {
++		struct xattr_list *next_xattr = xattr_list_add(xattr_count, xattrs);
+ 
+-		xattr_list[i].type = get_prefix(&xattr_list[i], p);
++		next_xattr->type = get_prefix(next_xattr, p);
+ 		p += strlen(p) + 1;
+-		if(xattr_list[i].type == -1) {
++		if(next_xattr->type == -1) {
+ 			ERROR("Unrecognised xattr prefix %s\n",
+-				xattr_list[i].full_name);
+-			free(xattr_list[i].full_name);
+-			i--;
++				next_xattr->full_name);
++			xattr_list_trim(xattr_count, xattrs);
+ 			continue;
+ 		}
+ 
+ 		while(1) {
+-			vsize = lgetxattr(filename, xattr_list[i].full_name,
++			errno = 0;
++			vsize = lgetxattr(filename, next_xattr->full_name,
+ 								NULL, 0);
+ 			if(vsize < 0) {
+-				ERROR_START("lgetxattr failed for %s in "
+-					"read_attrs, because %s", filename,
+-					strerror(errno));
+-				ERROR_EXIT(".  Ignoring");
+-				free(xattr_list[i].full_name);
++				ERROR_START("lgetxattr failed for %s attrib %s "
++					"in read_attrs, because %s", filename,
++					next_xattr->full_name, strerror(errno));
++				ERROR_EXIT(".  Ignoring\n");
++				xattr_list_trim(xattr_count, xattrs);
+ 				goto failed;
+ 			}
+ 
+-			xattr_list[i].value = malloc(vsize);
+-			if(xattr_list[i].value == NULL)
++			next_xattr->value = malloc(vsize);
++			if(next_xattr->value == NULL)
+ 				MEM_ERROR();
+ 
+-			vsize = lgetxattr(filename, xattr_list[i].full_name,
+-						xattr_list[i].value, vsize);
++			errno = 0;
++			vsize = lgetxattr(filename, next_xattr->full_name,
++						next_xattr->value, vsize);
+ 			if(vsize < 0) {
+-				free(xattr_list[i].value);
++				free(next_xattr->value);
++				next_xattr->value = NULL;
+ 				if(errno == ERANGE)
+ 					/* xattr grew?  Try again */
+ 					continue;
+ 				else {
+ 					ERROR_START("lgetxattr failed for %s "
+-						"in read_attrs, because %s",
+-						filename, strerror(errno));
+-					ERROR_EXIT(".  Ignoring");
+-					free(xattr_list[i].full_name);
++						"attrib %s in read_attrs, "
++						"because %s", filename,
++						next_xattr->full_name,
++						strerror(errno));
++					ERROR_EXIT(".  Ignoring\n");
++					xattr_list_trim(xattr_count, xattrs);
+ 					goto failed;
+ 				}
+ 			}
+-			
++
+ 			break;
+ 		}
+-		xattr_list[i].vsize = vsize;
++		next_xattr->vsize = vsize;
+ 
+ 		TRACE("read_xattrs_from_system: filename %s, xattr name %s,"
+-			" vsize %d\n", filename, xattr_list[i].full_name,
+-			xattr_list[i].vsize);
++			" vsize %d\n", filename, next_xattr->full_name,
++			next_xattr->vsize);
+ 	}
+ 	free(xattr_names);
+-	if(i > 0)
+-		*xattrs = xattr_list;
+-	else
+-		free(xattr_list);
+-	return i;
++	return 1;
+ 
+ failed:
+-	while(--i >= 0) {
+-		free(xattr_list[i].full_name);
+-		free(xattr_list[i].value);
+-	}
+-	free(xattr_list);
++	while(xattr_list_trim(xattr_count, xattrs) != NULL);
+ 	free(xattr_names);
+ 	return 0;
+ }
+@@ -614,13 +667,31 @@ int read_xattrs(void *d)
+ 	struct dir_ent *dir_ent = d;
+ 	struct inode_info *inode = dir_ent->inode;
+ 	char *filename = pathname(dir_ent);
+-	struct xattr_list *xattr_list;
+-	int xattrs;
++	struct xattr_list *xattr_list = NULL, *next_xattr = NULL;
++	int xattrs = 0;
+ 
+ 	if(no_xattrs || IS_PSEUDO(inode) || inode->root_entry)
+ 		return SQUASHFS_INVALID_XATTR;
+ 
+-	xattrs = read_xattrs_from_system(filename, &xattr_list);
++	read_xattrs_from_system(filename, &xattrs, &xattr_list);
++
++	if(context_file) {
++		if(sehnd == NULL)
++			sehnd = get_sehnd(context_file);
++		if(mount_point) {
++			char *mounted_path;
++			alloc_mounted_path(mount_point, subpathname(dir_ent), &mounted_path);
++			next_xattr = xattr_list_add(&xattrs, &xattr_list);
++			read_selinux_xattr_from_context_file(mounted_path, inode->buf.st_mode,
++					sehnd, next_xattr);
++			free(mounted_path);
++		} else {
++			next_xattr = xattr_list_add(&xattrs, &xattr_list);
++			read_selinux_xattr_from_context_file(filename, inode->buf.st_mode,
++					sehnd, next_xattr);
++		}
++	}
++
+ 	if(xattrs == 0)
+ 		return SQUASHFS_INVALID_XATTR;
+ 
+diff --git a/squashfs-tools/xattr.h b/squashfs-tools/xattr.h
+index 1499bcb..4956257 100644
+--- a/squashfs-tools/xattr.h
++++ b/squashfs-tools/xattr.h
+@@ -24,6 +24,8 @@
+  * xattr.h
+  */
+ 
++#include "squashfs_fs.h"
++
+ #define XATTR_VALUE_OOL		SQUASHFS_XATTR_VALUE_OOL
+ #define XATTR_PREFIX_MASK	SQUASHFS_XATTR_PREFIX_MASK
+ 
+@@ -66,6 +68,7 @@ struct prefix {
+ extern int generate_xattrs(int, struct xattr_list *);
+ 
+ #ifdef XATTR_SUPPORT
++extern int get_prefix(struct xattr_list *xattr, char *name);
+ extern int get_xattrs(int, struct squashfs_super_block *);
+ extern int read_xattrs(void *);
+ extern long long write_xattrs();
+@@ -77,6 +80,12 @@ extern int read_xattrs_from_disk(int, struct squashfs_super_block *, int, long l
+ extern struct xattr_list *get_xattr(int, unsigned int *, int *);
+ extern void free_xattr(struct xattr_list *, int);
+ #else
++static inline int get_prefix(struct xattr_list *xattr, char *name)
++{
++	return -1;
++}
++
++
+ static inline int get_xattrs(int fd, struct squashfs_super_block *sBlk)
+ {
+ 	if(sBlk->xattr_id_table_start != SQUASHFS_INVALID_BLK) {
+-- 
+2.31.1.527.g47e6f16901-goog
+
diff --git a/sys-fs/squashfs-tools/metadata.xml b/sys-fs/squashfs-tools/metadata.xml
index 9edcb3d..a017cec 100644
--- a/sys-fs/squashfs-tools/metadata.xml
+++ b/sys-fs/squashfs-tools/metadata.xml
@@ -1,15 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
-  <maintainer type="project">
-    <email>livecd@gentoo.org</email>
-    <name>Gentoo LiveCD Project</name>
-  </maintainer>
-  <use>
-    <flag name="xz">Enable support for XZ ("LZMA2") compression using <pkg>app-arch/xz-utils</pkg></flag>
-    <flag name="lz4">Enable support for LZ4 compression using <pkg>app-arch/lz4</pkg></flag>
-  </use>
-  <upstream>
-    <remote-id type="sourceforge">squashfs</remote-id>
-  </upstream>
+	<maintainer type="person">
+		<email>mgorny@gentoo.org</email>
+		<name>Michał Górny</name>
+	</maintainer>
+	<upstream>
+		<remote-id type="sourceforge">squashfs</remote-id>
+	</upstream>
 </pkgmetadata>
diff --git a/sys-fs/squashfs-tools/squashfs-tools-4.3-r11.ebuild b/sys-fs/squashfs-tools/squashfs-tools-4.3-r11.ebuild
deleted file mode 120000
index 180595b..0000000
--- a/sys-fs/squashfs-tools/squashfs-tools-4.3-r11.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-squashfs-tools-4.3.ebuild
\ No newline at end of file
diff --git a/sys-fs/squashfs-tools/squashfs-tools-4.3.ebuild b/sys-fs/squashfs-tools/squashfs-tools-4.3.ebuild
deleted file mode 100644
index b39962f..0000000
--- a/sys-fs/squashfs-tools/squashfs-tools-4.3.ebuild
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-inherit eutils toolchain-funcs
-
-DEB_VER="3"
-
-DESCRIPTION="Tool for creating compressed filesystem type squashfs"
-HOMEPAGE="http://squashfs.sourceforge.net"
-SRC_URI="mirror://sourceforge/squashfs/squashfs${PV}.tar.gz
-	mirror://debian/pool/main/${PN:0:1}/${PN}/${PN}_${PV}-${DEB_VER}.debian.tar.xz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="lz4 lzma lzo selinux xattr +xz"
-REQUIRED_USE="selinux? ( xattr )"
-
-RDEPEND="
-	sys-libs/zlib
-	!xz? ( !lzo? ( sys-libs/zlib ) )
-	lz4? ( app-arch/lz4 )
-	lzma? ( app-arch/xz-utils )
-	lzo? ( dev-libs/lzo )
-	xattr? (
-		selinux? ( sys-libs/libselinux )
-		sys-apps/attr
-	)
-	xz? ( app-arch/xz-utils )
-"
-DEPEND="${RDEPEND}"
-
-S="${WORKDIR}/squashfs${PV}/${PN}"
-
-src_prepare() {
-	epatch "${WORKDIR}"/debian/patches/*.patch
-	epatch "${FILESDIR}"/${P}-sysmacros.patch
-	epatch "${FILESDIR}"/${P}-aligned-data.patch
-	epatch "${FILESDIR}"/${P}-2gb.patch
-	epatch "${FILESDIR}"/${P}-local-cve-fix.patch
-	epatch "${FILESDIR}"/${P}-mem-overflow.patch
-	epatch "${FILESDIR}"/${P}-xattrs.patch
-	epatch "${FILESDIR}"/${P}-file-map.patch
-	epatch "${FILESDIR}"/${P}-4k-align.patch
-	epatch "${FILESDIR}"/${P}-selinux.patch
-	epatch "${FILESDIR}"/${P}-fix-inline.patch
-	epatch "${FILESDIR}"/${P}-rare-race-in-frag-wait.patch
-	epatch "${FILESDIR}"/${P}-root-mode.patch
-}
-
-use10() { usex $1 1 0 ; }
-
-src_configure() {
-	# set up make command line variables in EMAKE_SQUASHFS_CONF
-	EMAKE_SQUASHFS_CONF=(
-		LZMA_XZ_SUPPORT=$(use10 lzma)
-		LZO_SUPPORT=$(use10 lzo)
-		LZ4_SUPPORT=$(use10 lz4)
-		SELINUX_SUPPORT=$(use10 selinux)
-		XATTR_SUPPORT=$(use10 xattr)
-		XZ_SUPPORT=$(use10 xz)
-	)
-
-	tc-export CC
-}
-
-src_compile() {
-	emake "${EMAKE_SQUASHFS_CONF[@]}"
-}
-
-src_install() {
-	dobin mksquashfs unsquashfs
-	cd ..
-	dodoc CHANGES PERFORMANCE.README pseudo-file.example README* OLD-READMEs/*
-	doman "${WORKDIR}"/debian/manpages/*.[0-9]
-}
diff --git a/sys-fs/squashfs-tools/squashfs-tools-4.4_p1-r2.ebuild b/sys-fs/squashfs-tools/squashfs-tools-4.4_p1-r2.ebuild
new file mode 120000
index 0000000..e8cd1fb
--- /dev/null
+++ b/sys-fs/squashfs-tools/squashfs-tools-4.4_p1-r2.ebuild
@@ -0,0 +1 @@
+squashfs-tools-4.4_p1.ebuild
\ No newline at end of file
diff --git a/sys-fs/squashfs-tools/squashfs-tools-4.4_p1.ebuild b/sys-fs/squashfs-tools/squashfs-tools-4.4_p1.ebuild
new file mode 100644
index 0000000..a331d00
--- /dev/null
+++ b/sys-fs/squashfs-tools/squashfs-tools-4.4_p1.ebuild
@@ -0,0 +1,69 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit flag-o-matic toolchain-funcs
+
+MY_P=${P/_p/-git.}
+DESCRIPTION="tools to create and extract Squashfs filesystems"
+HOMEPAGE="https://github.com/plougher/squashfs-tools/"
+SRC_URI="
+	https://github.com/plougher/squashfs-tools/archive/${PV/_p/-git.}.tar.gz
+		-> ${MY_P}.tar.gz"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="debug lz4 lzma lzo selinux xattr zstd"
+REQUIRED_USE="selinux? ( xattr )"
+
+RDEPEND="
+	sys-libs/zlib
+	lz4? ( app-arch/lz4 )
+	lzma? ( app-arch/xz-utils )
+	lzo? ( dev-libs/lzo )
+	xattr? (
+		selinux? ( sys-libs/libselinux )
+		sys-apps/attr
+	)
+	zstd? ( app-arch/zstd )
+"
+DEPEND="${RDEPEND}"
+
+#S="${WORKDIR}/squashfs${PV}/${PN}"
+
+src_prepare() {
+	eapply "${FILESDIR}"/${P}-file-map.patch
+	eapply "${FILESDIR}"/${P}-4k-align.patch
+	eapply "${FILESDIR}"/${P}-selinux.patch
+	eapply_user
+}
+
+use10() { usex "${1}" 1 0; }
+
+src_configure() {
+	# set up make command line variables in EMAKE_SQUASHFS_CONF
+	EMAKE_SQUASHFS_CONF=(
+		LZMA_XZ_SUPPORT=$(use10 lzma)
+		LZO_SUPPORT=$(use10 lzo)
+		LZ4_SUPPORT=$(use10 lz4)
+		SELINUX_SUPPORT=$(use10 selinux)
+		XATTR_SUPPORT=$(use10 xattr)
+		XZ_SUPPORT=$(use10 lzma)
+		ZSTD_SUPPORT=$(use10 zstd)
+	)
+
+	tc-export CC
+	use debug && append-cppflags -DSQUASHFS_TRACE
+}
+
+src_compile() {
+	emake "${EMAKE_SQUASHFS_CONF[@]}" -C squashfs-tools
+}
+
+src_install() {
+	dobin squashfs-tools/{mksquashfs,unsquashfs}
+	dodoc ACKNOWLEDGEMENTS CHANGES README*
+	dodoc -r RELEASE-READMEs
+}
diff --git a/sys-fs/udev/files/91-chromeos-keyboard.rules b/sys-fs/udev/files/91-chromeos-keyboard.rules
index 533fbe2..bdb0f2c 100644
--- a/sys-fs/udev/files/91-chromeos-keyboard.rules
+++ b/sys-fs/udev/files/91-chromeos-keyboard.rules
@@ -52,6 +52,12 @@
   ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4e05", \
   ENV{CROS_KEYBOARD_TOP_ROW_LAYOUT}="1"
 
+# Acer USB Keyboard for Chrome OS (KB69211).
+# This keyboard has original top row layout.
+SUBSYSTEM=="input", ENV{ID_INPUT_KEYBOARD}=="1", \
+  ATTRS{idVendor}=="0461", ATTRS{idProduct}=="4e17", \
+  ENV{CROS_KEYBOARD_TOP_ROW_LAYOUT}="1"
+
 # Belkin USB C Keyboard for Chrome OS (B2B190).
 # This keyboard has original sequence of top row keys.
 SUBSYSTEM=="input", ENV{ID_INPUT_KEYBOARD}=="1", \
diff --git a/sys-fs/udev/files/91-kmsg-syslog-group.rules b/sys-fs/udev/files/91-kmsg-syslog-group.rules
deleted file mode 100644
index f586fa5..0000000
--- a/sys-fs/udev/files/91-kmsg-syslog-group.rules
+++ /dev/null
@@ -1,5 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-# Allow journald to write to /dev/kmsg
-SUBSYSTEM=="mem", KERNEL=="kmsg", GROUP="syslog", MODE="0664"
diff --git a/sys-fs/udev/files/udev-225-fix-joystick-with-mouse-identification.patch b/sys-fs/udev/files/udev-225-fix-joystick-with-mouse-identification.patch
new file mode 100644
index 0000000..e7274d8
--- /dev/null
+++ b/sys-fs/udev/files/udev-225-fix-joystick-with-mouse-identification.patch
@@ -0,0 +1,36 @@
+From c4306a7e7f4ac28696b90171e971f56ccb0fcc4f Mon Sep 17 00:00:00 2001
+From: Harry Cutts <hcutts@chromium.org>
+Date: Mon, 3 May 2021 12:05:48 -0700
+Subject: [PATCH] udev: Drop VMware USB mouse workaround
+
+This was preventing the SteelSeries Stratus Duo (a gamepad which also
+identifies as a mouse) from being given the `ID_INPUT_JOYSTICK` property
+on Kernel 4.4.
+
+BUG=b:186885455
+TEST=Connect the Stratus Duo by Bluetooth, check it shows up in a
+     gamepad tester like gamepadviewer.com
+
+Change-Id: I3e6c2da521f95b14ca11a9e26ca72248f16ba8d6
+---
+ src/udev/udev-builtin-input_id.c | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/src/udev/udev-builtin-input_id.c b/src/udev/udev-builtin-input_id.c
+index e3fa4bc162..2bfc75992d 100644
+--- a/src/udev/udev-builtin-input_id.c
++++ b/src/udev/udev-builtin-input_id.c
+@@ -197,10 +197,6 @@ static bool test_pointers(struct udev_device *dev,
+                         is_tablet = true;
+                 else if (finger_but_no_pen && !is_direct)
+                         is_touchpad = true;
+-                else if (has_mouse_button)
+-                        /* This path is taken by VMware's USB mouse, which has
+-                         * absolute axes, but no touch/pressure button. */
+-                        is_mouse = true;
+                 else if (has_touch)
+                         is_touchscreen = true;
+                 else if (has_joystick_axes_or_buttons)
+-- 
+2.31.1.527.g47e6f16901-goog
+
diff --git a/sys-fs/udev/files/udev-225-udevadm-add-ping-option-to-control-command.patch b/sys-fs/udev/files/udev-225-udevadm-add-ping-option-to-control-command.patch
new file mode 100644
index 0000000..1b81c3e5
--- /dev/null
+++ b/sys-fs/udev/files/udev-225-udevadm-add-ping-option-to-control-command.patch
@@ -0,0 +1,101 @@
+From: Yu Watanabe <watanabe.yu+github@gmail.com>
+Date: Sun, 13 Jan 2019 07:44:38 +0900
+Subject: [PATCH] udevadm: add --ping option to 'control' command
+
+This exposes `udev_ctrl_send_ping()`.
+---
+Ported from upstream commit a82340cc0312e2a946ac5c797fa57e98fe613ce7:
+https://github.com/systemd/systemd/commit/a82340cc0312e2a946ac5c797fa57e98fe613ce7
+
+ * Minor changes required to match context that changed in between
+   v225 and the upstream commit.
+ * using 'rc' vs. 'r' variable, plus different return/break conventions
+
+ man/udevadm.xml            |  7 +++++++
+ src/udev/udevadm-control.c | 35 ++++++++++++++++++++++++-----------
+ 2 files changed, 31 insertions(+), 11 deletions(-)
+
+diff --git a/man/udevadm.xml b/man/udevadm.xml
+index 484cbac84dc4..f3c62fba6b1d 100644
+--- a/man/udevadm.xml
++++ b/man/udevadm.xml
+@@ -450,6 +450,13 @@
+             same time.</para>
+           </listitem>
+         </varlistentry>
++        <varlistentry>
++          <term><option>--ping</option></term>
++          <listitem>
++            <para>Send a ping message to systemd-udevd and wait for the reply. This may be useful to check that
++            systemd-udevd daemon is running.</para>
++          </listitem>
++        </varlistentry>
+         <varlistentry>
+           <term><option>--timeout=</option><replaceable>seconds</replaceable></term>
+           <listitem>
+diff --git a/src/udev/udevadm-control.c b/src/udev/udevadm-control.c
+index 78170463b653..edda91d2906d 100644
+--- a/src/udev/udevadm-control.c
++++ b/src/udev/udevadm-control.c
+@@ -35,6 +35,7 @@ static void print_help(void) {
+                "  -R --reload              Reload rules and databases\n"
+                "  -p --property=KEY=VALUE  Set a global property for all events\n"
+                "  -m --children-max=N      Maximum number of children\n"
++               "     --ping                Wait for udev to respond to a ping message\n"
+                "     --timeout=SECONDS     Maximum time to block for a reply\n"
+                , program_invocation_short_name);
+ }
+@@ -44,18 +45,23 @@ static int adm_control(struct udev *udev, int argc, char *argv[]) {
+         int timeout = 60;
+         int rc = 1, c;
+ 
++        enum {
++                ARG_PING = 0x100,
++        };
++
+         static const struct option options[] = {
+-                { "exit",             no_argument,       NULL, 'e' },
+-                { "log-priority",     required_argument, NULL, 'l' },
+-                { "stop-exec-queue",  no_argument,       NULL, 's' },
+-                { "start-exec-queue", no_argument,       NULL, 'S' },
+-                { "reload",           no_argument,       NULL, 'R' },
+-                { "reload-rules",     no_argument,       NULL, 'R' }, /* alias for -R */
+-                { "property",         required_argument, NULL, 'p' },
+-                { "env",              required_argument, NULL, 'p' }, /* alias for -p */
+-                { "children-max",     required_argument, NULL, 'm' },
+-                { "timeout",          required_argument, NULL, 't' },
+-                { "help",             no_argument,       NULL, 'h' },
++                { "exit",             no_argument,       NULL, 'e'      },
++                { "log-priority",     required_argument, NULL, 'l'      },
++                { "stop-exec-queue",  no_argument,       NULL, 's'      },
++                { "start-exec-queue", no_argument,       NULL, 'S'      },
++                { "reload",           no_argument,       NULL, 'R'      },
++                { "reload-rules",     no_argument,       NULL, 'R'      }, /* alias for -R */
++                { "property",         required_argument, NULL, 'p'      },
++                { "env",              required_argument, NULL, 'p'      }, /* alias for -p */
++                { "children-max",     required_argument, NULL, 'm'      },
++                { "ping",             no_argument,       NULL, ARG_PING },
++                { "timeout",          required_argument, NULL, 't'      },
++                { "help",             no_argument,       NULL, 'h'      },
+                 {}
+         };
+ 
+@@ -133,6 +139,15 @@ static int adm_control(struct udev *udev, int argc, char *argv[]) {
+                                 rc = 0;
+                         break;
+                 }
++                case ARG_PING:
++                        rc = udev_ctrl_send_ping(uctrl, timeout);
++                        if (rc < 0) {
++                                log_error_errno(rc, "Failed to connect to udev daemon: %m");
++                                rc = 2;
++                        } else {
++                                rc = 0;
++                        }
++                        break;
+                 case 't': {
+                         int seconds;
+ 
+-- 
+2.29.2
+
diff --git a/sys-fs/udev/files/udev-225-workaround-renameat-syscall-wrapper-misdetection.patch b/sys-fs/udev/files/udev-225-workaround-renameat-syscall-wrapper-misdetection.patch
new file mode 100644
index 0000000..8cd60db
--- /dev/null
+++ b/sys-fs/udev/files/udev-225-workaround-renameat-syscall-wrapper-misdetection.patch
@@ -0,0 +1,45 @@
+From 4097f57573bc5d7a705e5de09ec148d86e5fd925 Mon Sep 17 00:00:00 2001
+From: Adrian Ratiu <adrian.ratiu@collabora.com>
+Date: Tue, 16 Feb 2021 20:21:21 +0200
+Subject: [PATCH] missing.h: workaround autotools renameat2 glibc 2.28
+ misdetection
+
+When building udev/systemd v225 on top of glibc 2.28 or newer,
+the following error occurs:
+
+error: static declaration of 'renameat2' follows non-static declaration
+
+This is because the old autotools infrastructure incorrectly
+detects the presence of the glibc renameat2 wrapper and tries to
+replace it with a compatible systemd-internal one. We avoid this
+situation by guarding the systemd wrapper with a __GLIBC__ macro.
+
+This patch should be dropped once systemd/udev is upgraded past
+the move to meson upstream which also has heavy syscall wrapper
+tree-wide refactorings.
+
+Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
+---
+ src/basic/missing.h | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/basic/missing.h b/src/basic/missing.h
+index 34ab0254dd..87bce481ec 100644
+--- a/src/basic/missing.h
++++ b/src/basic/missing.h
+@@ -984,7 +984,11 @@ static inline pid_t raw_getpid(void) {
+ #endif
+ }
+ 
+-#if !HAVE_DECL_RENAMEAT2
++/* autotools detection is broken for this path with newer glibc and in the
++ * meantime systemd dropped autotools in favor of meson, so autotools bugs are
++ * not fixed anymore; systemd needs upgrading to be able to drop this #if hack.
++ */
++#if !HAVE_DECL_RENAMEAT2 && !(__GLIBC__ >= 2 && __GLIBC_MINOR__ >= 28)
+ 
+ #ifndef __NR_renameat2
+ #  if defined __x86_64__
+-- 
+2.30.1
+
diff --git a/sys-fs/udev/udev-225-r30.ebuild b/sys-fs/udev/udev-225-r30.ebuild
deleted file mode 100644
index c8928d0..0000000
--- a/sys-fs/udev/udev-225-r30.ebuild
+++ /dev/null
@@ -1,440 +0,0 @@
-# Copyright 1999-2016 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=5
-
-inherit autotools bash-completion-r1 eutils multilib multilib-minimal toolchain-funcs udev user versionator
-
-if [[ ${PV} = 9999* ]]; then
-	EGIT_REPO_URI="git://anongit.freedesktop.org/systemd/systemd"
-	inherit git-r3
-else
-	patchset=
-	SRC_URI="https://github.com/systemd/systemd/archive/v${PV}.tar.gz -> systemd-${PV}.tar.gz"
-	if [[ -n "${patchset}" ]]; then
-		SRC_URI+="
-			https://dev.gentoo.org/~ssuominen/${P}-patches-${patchset}.tar.xz
-			https://dev.gentoo.org/~williamh/dist/${P}-patches-${patchset}.tar.xz"
-	fi
-	KEYWORDS="*"
-fi
-
-DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)"
-HOMEPAGE="https://www.freedesktop.org/wiki/Software/systemd"
-
-LICENSE="LGPL-2.1 MIT GPL-2"
-SLOT="0"
-IUSE="acl +kmod openrc selinux static-libs"
-
-RESTRICT="test"
-
-COMMON_DEPEND=">=sys-apps/util-linux-2.24
-	sys-libs/libcap[${MULTILIB_USEDEP}]
-	acl? ( sys-apps/acl )
-	kmod? ( >=sys-apps/kmod-16 )
-	selinux? ( >=sys-libs/libselinux-2.1.9 )
-	!<sys-libs/glibc-2.11
-	!sys-apps/gentoo-systemd-integration
-	!sys-apps/systemd
-	abi_x86_32? (
-		!<=app-emulation/emul-linux-x86-baselibs-20130224-r7
-		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
-	)"
-# Force new make >= -r4 to skip some parallel build issues
-DEPEND="${COMMON_DEPEND}
-	dev-util/gperf
-	>=dev-util/intltool-0.50
-	>=sys-apps/coreutils-8.16
-	virtual/os-headers
-	virtual/pkgconfig
-	>=sys-devel/make-3.82-r4
-	>=sys-kernel/linux-headers-3.9
-	app-text/docbook-xml-dtd:4.2
-	app-text/docbook-xml-dtd:4.5
-	app-text/docbook-xsl-stylesheets
-	dev-libs/libxslt"
-RDEPEND="${COMMON_DEPEND}
-	!<sec-policy/selinux-base-2.20120725-r10"
-PDEPEND=">=sys-apps/hwids-20140304[udev]
-	openrc? ( >=sys-fs/udev-init-scripts-26 )"
-
-S=${WORKDIR}/systemd-${PV}
-
-PATCHES=(
-	"${FILESDIR}"/${PN}-225-50-udev-default.rules-set-default-group-for-mediaX.patch
-	"${FILESDIR}"/${PN}-225-60-persistent-storage.rules-add-nvme-symlinks.patch
-	"${FILESDIR}"/${PN}-225-libudev-util-change-util_replace_whitespace.patch
-	"${FILESDIR}"/${PN}-225-udev-event-add-replace_whitespace-param.patch
-	"${FILESDIR}"/${PN}-225-udev-rules-perform-whitespace-replacement.patch
-	"${FILESDIR}"/${PN}-225-60-persistent-storage.rules-add-nvme-id-model.patch
-	"${FILESDIR}"/${PN}-225-udev-rules-all-values-can-contain-escaped-double-quotes-now.patch
-	"${FILESDIR}"/${PN}-225-udevadm-trigger-add-settle.patch
-	"${FILESDIR}"/${PN}-225-v4l_id-check-mplane-video-capture-and-output-capaili.patch
-	"${FILESDIR}"/${PN}-225-udevadm-hwdb-Return-non-zero-exit-code-on-error.patch
-	"${FILESDIR}"/${PN}-225-sysmacros.patch
-	"${FILESDIR}"/${PN}-225-50-udev-default.rules-set-default-group-for-udmabuf.patch
-	"${FILESDIR}"/${PN}-225-50-udev-default.rules-disable-REMOVE_CMD-support.patch
-	"${FILESDIR}"/${PN}-225-udev-rules-no-slash-run.patch
-	"${FILESDIR}"/${PN}-225-udev-use-interface-before-the-string-that-interface-.patch
-	"${FILESDIR}"/${PN}-225-udev-stop-freeing-value-after-using-it-for-setting-s.patch
-)
-
-check_default_rules() {
-	# Make sure there are no sudden changes to upstream rules file
-	# (more for my own needs than anything else ...)
-	local udev_rules_md5=b8ad860dccae0ca51656b33c405ea2ca
-	MD5=$(md5sum < "${S}"/rules/50-udev-default.rules)
-	MD5=${MD5/  -/}
-	if [[ ${MD5} != ${udev_rules_md5} ]]; then
-		eerror "50-udev-default.rules has been updated, please validate!"
-		eerror "md5sum: ${MD5}"
-		die "50-udev-default.rules has been updated, please validate!"
-	fi
-}
-
-src_prepare() {
-	if ! [[ ${PV} = 9999* ]]; then
-		# secure_getenv() disable for non-glibc systems wrt bug #443030
-		if ! [[ $(grep -r secure_getenv * | wc -l) -eq 25 ]]; then
-			eerror "The line count for secure_getenv() failed, see bug #443030"
-			die
-		fi
-	fi
-
-	# backport some patches
-	if [[ -n "${patchset}" ]]; then
-		EPATCH_SUFFIX=patch EPATCH_FORCE=yes epatch
-	fi
-
-	cat <<-EOF > "${T}"/40-gentoo.rules
-	# Gentoo specific floppy and usb groups
-	SUBSYSTEM=="block", KERNEL=="fd[0-9]", GROUP="floppy"
-	SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="usb"
-	EOF
-
-	# change rules back to group uucp instead of dialout for now wrt #454556
-	sed -i -e 's/GROUP="dialout"/GROUP="uucp"/' rules/*.rules || die
-
-	# stub out the am_path_libcrypt function
-	echo 'AC_DEFUN([AM_PATH_LIBGCRYPT],[:])' > m4/gcrypt.m4
-
-	# apply user patches
-	epatch_user
-
-	eautoreconf
-
-	if ! [[ ${PV} = 9999* ]]; then
-		check_default_rules
-	fi
-
-	# Restore possibility of running --enable-static wrt #472608
-	sed -i \
-		-e '/--enable-static is not supported by systemd/s:as_fn_error:echo:' \
-		configure || die
-
-	if ! use elibc_glibc; then #443030
-		echo '#define secure_getenv(x) NULL' >> config.h.in
-		sed -i -e '/error.*secure_getenv/s:.*:#define secure_getenv(x) NULL:' src/shared/missing.h || die
-	fi
-
-	epatch "${PATCHES[@]}"
-}
-
-src_configure() {
-	cros_optimize_package_for_speed
-
-	# Prevent conflicts with i686 cross toolchain, bug 559726
-	tc-export AR CC NM OBJCOPY RANLIB
-	multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-	tc-export CC #463846
-	export cc_cv_CFLAGS__flto=no #502950
-	export cc_cv_CFLAGS__Werror_shadow=no #554454
-
-	# Keep sorted by ./configure --help and only pass --disable flags
-	# when *required* to avoid external deps or unnecessary compile
-	local econf_args
-	econf_args=(
-		--libdir=/usr/$(get_libdir)
-		--docdir=/usr/share/doc/${PF}
-		$(multilib_native_use_enable static-libs static)
-		--disable-nls
-		--disable-dbus
-		$(multilib_native_use_enable kmod)
-		--disable-xkbcommon
-		--disable-seccomp
-		$(multilib_native_use_enable selinux)
-		--disable-xz
-		--disable-lz4
-		--disable-pam
-		$(multilib_native_use_enable acl)
-		--disable-gcrypt
-		--disable-audit
-		--disable-libcryptsetup
-		--disable-qrencode
-		--disable-microhttpd
-		--disable-gnuefi
-		--disable-gnutls
-		--disable-libcurl
-		--disable-libidn
-		--disable-quotacheck
-		--disable-logind
-		--disable-polkit
-		--disable-myhostname
-		$(multilib_is_native_abi || echo "--disable-manpages")
-		--enable-split-usr
-		--without-python
-		--with-bashcompletiondir="$(get_bashcompdir)"
-		--with-rootprefix=
-		$(multilib_is_native_abi && echo "--with-rootlibdir=/$(get_libdir)")
-		--disable-elfutils
-	)
-
-	if ! multilib_is_native_abi; then
-		econf_args+=(
-			MOUNT_{CFLAGS,LIBS}=' '
-		)
-	fi
-
-	ECONF_SOURCE=${S} econf "${econf_args[@]}"
-}
-
-multilib_src_compile() {
-	echo 'BUILT_SOURCES: $(BUILT_SOURCES)' > "${T}"/Makefile.extra
-	emake -f Makefile -f "${T}"/Makefile.extra BUILT_SOURCES
-
-	# Most of the parallel build problems were solved by >=sys-devel/make-3.82-r4,
-	# but not everything -- separate building of the binaries as a workaround,
-	# which will force internal libraries required for the helpers to be built
-	# early enough, like eg. libsystemd-shared.la
-	if multilib_is_native_abi; then
-		local lib_targets=( libudev.la )
-		emake "${lib_targets[@]}"
-
-		local exec_targets=(
-			systemd-udevd
-			udevadm
-		)
-		emake "${exec_targets[@]}"
-
-		local helper_targets=(
-			ata_id
-			cdrom_id
-			collect
-			scsi_id
-			v4l_id
-			mtd_probe
-		)
-		emake "${helper_targets[@]}"
-
-		local man_targets=(
-			man/udev.conf.5
-			man/systemd.link.5
-			man/udev.7
-			man/systemd-udevd.service.8
-			man/udevadm.8
-		)
-		emake "${man_targets[@]}"
-	else
-		local lib_targets=( libudev.la )
-		emake "${lib_targets[@]}"
-	fi
-}
-
-multilib_src_install() {
-	if multilib_is_native_abi; then
-		local lib_LTLIBRARIES="libudev.la"
-		local pkgconfiglib_DATA="src/libudev/libudev.pc"
-
-		local targets=(
-			install-libLTLIBRARIES
-			install-includeHEADERS
-			install-rootbinPROGRAMS
-			install-rootlibexecPROGRAMS
-			install-udevlibexecPROGRAMS
-			install-dist_udevconfDATA
-			install-dist_udevrulesDATA
-			install-pkgconfiglibDATA
-			install-pkgconfigdataDATA
-			install-dist_docDATA
-			libudev-install-hook
-			install-directories-hook
-			install-dist_bashcompletionDATA
-			install-dist_networkDATA
-		)
-
-		# add final values of variables:
-		targets+=(
-			rootlibexec_PROGRAMS=systemd-udevd
-			rootbin_PROGRAMS=udevadm
-			lib_LTLIBRARIES="${lib_LTLIBRARIES}"
-			pkgconfiglib_DATA="${pkgconfiglib_DATA}"
-			pkgconfigdata_DATA="src/udev/udev.pc"
-			INSTALL_DIRS='$(sysconfdir)/udev/rules.d $(sysconfdir)/udev/hwdb.d $(sysconfdir)/systemd/network'
-			dist_bashcompletion_DATA="shell-completion/bash/udevadm"
-			dist_network_DATA="network/99-default.link"
-		)
-		emake -j1 DESTDIR="${D}" "${targets[@]}"
-		doman man/{udev.conf.5,systemd.link.5,udev.7,systemd-udevd.service.8,udevadm.8}
-	else
-		local lib_LTLIBRARIES="libudev.la"
-		local pkgconfiglib_DATA="src/libudev/libudev.pc"
-		local include_HEADERS="src/libudev/libudev.h"
-
-		local targets=(
-			install-libLTLIBRARIES
-			install-includeHEADERS
-			install-pkgconfiglibDATA
-		)
-
-		targets+=(
-			lib_LTLIBRARIES="${lib_LTLIBRARIES}"
-			pkgconfiglib_DATA="${pkgconfiglib_DATA}"
-			include_HEADERS="${include_HEADERS}"
-			)
-		emake -j1 DESTDIR="${D}" "${targets[@]}"
-	fi
-
-	# Move back to the old path since we filter out */systemd/* from images.
-	dodir /sbin
-	mv "${ED}"/lib/systemd/systemd-udevd "${ED}"/sbin/udevd || die
-}
-
-multilib_src_install_all() {
-	dodoc TODO
-
-	prune_libtool_files --all
-	rm -f "${D}"/lib/udev/rules.d/99-systemd.rules
-	rm -f "${D}"/usr/share/doc/${PF}/{LICENSE.*,GVARIANT-SERIALIZATION,DIFFERENCES,PORTING-DBUS1,sd-shutdown.h}
-
-	# see src_prepare() for content of 40-gentoo.rules
-	insinto /lib/udev/rules.d
-	doins "${T}"/40-gentoo.rules
-
-	# Install ChromeOS-specific rules
-	doins "${FILESDIR}"/91-chromeos-keyboard.rules
-	doins "${FILESDIR}"/91-kmsg-syslog-group.rules
-
-	# maintainer note: by not letting the upstream build-sys create the .so
-	# link, you also avoid a parallel make problem
-	mv "${D}"/usr/share/man/man8/systemd-udevd{.service,}.8
-}
-
-pkg_postinst() {
-	mkdir -p "${ROOT%/}"/run
-
-	# "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766
-	# So try to remove it here (will only work if empty).
-	rmdir "${ROOT%/}"/dev/loop 2>/dev/null
-	if [[ -d ${ROOT%/}/dev/loop ]]; then
-		ewarn "Please make sure your remove /dev/loop,"
-		ewarn "else losetup may be confused when looking for unused devices."
-	fi
-
-	local fstab="${ROOT%/}"/etc/fstab dev path fstype rest
-	while read -r dev path fstype rest; do
-		if [[ ${path} == /dev && ${fstype} != devtmpfs ]]; then
-			ewarn "You need to edit your /dev line in ${fstab} to have devtmpfs"
-			ewarn "filesystem. Otherwise udev won't be able to boot."
-			ewarn "See, https://bugs.gentoo.org/453186"
-		fi
-	done < "${fstab}"
-
-	if [[ -d ${ROOT%/}/usr/lib/udev ]]; then
-		ewarn
-		ewarn "Please re-emerge all packages on your system which install"
-		ewarn "rules and helpers in /usr/lib/udev. They should now be in"
-		ewarn "/lib/udev."
-		ewarn
-		ewarn "One way to do this is to run the following command:"
-		ewarn "emerge -av1 \$(qfile -q -S -C /usr/lib/udev)"
-		ewarn "Note that qfile can be found in app-portage/portage-utils"
-	fi
-
-	local old_cd_rules="${ROOT%/}"/etc/udev/rules.d/70-persistent-cd.rules
-	local old_net_rules="${ROOT%/}"/etc/udev/rules.d/70-persistent-net.rules
-	for old_rules in "${old_cd_rules}" "${old_net_rules}"; do
-		if [[ -f ${old_rules} ]]; then
-			ewarn
-			ewarn "File ${old_rules} is from old udev installation but if you still use it,"
-			ewarn "rename it to something else starting with 70- to silence this deprecation"
-			ewarn "warning."
-		fi
-	done
-
-	elog
-	elog "Starting from version >= 197 the new predictable network interface names are"
-	elog "used by default, see:"
-	elog "https://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames"
-	elog "https://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c"
-	elog
-	elog "Example command to get the information for the new interface name before booting"
-	elog "(replace <ifname> with, for example, eth0):"
-	elog "# udevadm test-builtin net_id /sys/class/net/<ifname> 2> /dev/null"
-	elog
-	elog "You can use either kernel parameter \"net.ifnames=0\", create empty"
-	elog "file /etc/systemd/network/99-default.link, or symlink it to /dev/null"
-	elog "to disable the feature."
-
-	if has_version 'sys-apps/biosdevname'; then
-		ewarn
-		ewarn "You can replace the functionality of sys-apps/biosdevname which has been"
-		ewarn "detected to be installed with the new predictable network interface names."
-	fi
-
-	ewarn
-	ewarn "You need to restart udev as soon as possible to make the upgrade go"
-	ewarn "into effect."
-	ewarn "The method you use to do this depends on your init system."
-	if has_version 'sys-apps/openrc'; then
-		ewarn "For sys-apps/openrc users it is:"
-		ewarn "# /etc/init.d/udev --nodeps restart"
-	fi
-
-	elog
-	elog "For more information on udev on Gentoo, upgrading, writing udev rules, and"
-	elog "fixing known issues visit:"
-	elog "https://wiki.gentoo.org/wiki/Udev"
-	elog "https://wiki.gentoo.org/wiki/Udev/upgrade"
-
-	# If user has disabled 80-net-name-slot.rules using a empty file or a symlink to /dev/null,
-	# do the same for 80-net-setup-link.rules to keep the old behavior
-	local net_move=no
-	local net_name_slot_sym=no
-	local net_rules_path="${ROOT%/}"/etc/udev/rules.d
-	local net_name_slot="${net_rules_path}"/80-net-name-slot.rules
-	local net_setup_link="${net_rules_path}"/80-net-setup-link.rules
-	if [[ ! -e ${net_setup_link} ]]; then
-		[[ -f ${net_name_slot} && $(sed -e "/^#/d" -e "/^\W*$/d" ${net_name_slot} | wc -l) == 0 ]] && net_move=yes
-		if [[ -L ${net_name_slot} && $(readlink ${net_name_slot}) == /dev/null ]]; then
-			net_move=yes
-			net_name_slot_sym=yes
-		fi
-	fi
-	if [[ ${net_move} == yes ]]; then
-		ebegin "Copying ${net_name_slot} to ${net_setup_link}"
-
-		if [[ ${net_name_slot_sym} == yes ]]; then
-			ln -nfs /dev/null "${net_setup_link}"
-		else
-			cp "${net_name_slot}" "${net_setup_link}"
-		fi
-		eend $?
-	fi
-
-	# https://cgit.freedesktop.org/systemd/systemd/commit/rules/50-udev-default.rules?id=3dff3e00e044e2d53c76fa842b9a4759d4a50e69
-	# https://bugs.gentoo.org/246847
-	# https://bugs.gentoo.org/514174
-	enewgroup input
-
-	# Update hwdb database in case the format is changed by udev version.
-	if has_version 'sys-apps/hwids[udev]'; then
-		udevadm hwdb --update --root="${ROOT%/}"
-		# Only reload when we are not upgrading to avoid potential race w/ incompatible hwdb.bin and the running udevd
-		# https://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda
-		[[ -z ${REPLACING_VERSIONS} ]] && udev_reload
-	fi
-}
diff --git a/sys-fs/udev/udev-225-r35.ebuild b/sys-fs/udev/udev-225-r35.ebuild
new file mode 100644
index 0000000..b3dcd36
--- /dev/null
+++ b/sys-fs/udev/udev-225-r35.ebuild
@@ -0,0 +1,407 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit autotools bash-completion-r1 eutils multilib multilib-minimal toolchain-funcs udev user versionator
+
+if [[ ${PV} = 9999* ]]; then
+	EGIT_REPO_URI="git://anongit.freedesktop.org/systemd/systemd"
+	inherit git-r3
+else
+	patchset=
+	SRC_URI="https://github.com/systemd/systemd/archive/v${PV}.tar.gz -> systemd-${PV}.tar.gz"
+	if [[ -n "${patchset}" ]]; then
+		SRC_URI+="
+			https://dev.gentoo.org/~ssuominen/${P}-patches-${patchset}.tar.xz
+			https://dev.gentoo.org/~williamh/dist/${P}-patches-${patchset}.tar.xz"
+	fi
+	KEYWORDS="*"
+fi
+
+DESCRIPTION="Linux dynamic and persistent device naming support (aka userspace devfs)"
+HOMEPAGE="https://www.freedesktop.org/wiki/Software/systemd"
+
+LICENSE="LGPL-2.1 MIT GPL-2"
+SLOT="0"
+IUSE="acl +kmod openrc selinux static-libs"
+
+RESTRICT="test"
+
+COMMON_DEPEND=">=sys-apps/util-linux-2.24
+	sys-libs/libcap[${MULTILIB_USEDEP}]
+	acl? ( sys-apps/acl )
+	kmod? ( >=sys-apps/kmod-16 )
+	selinux? ( >=sys-libs/libselinux-2.1.9 )
+	!<sys-libs/glibc-2.11
+	!sys-apps/gentoo-systemd-integration
+	!sys-apps/systemd
+	abi_x86_32? (
+		!<=app-emulation/emul-linux-x86-baselibs-20130224-r7
+		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
+	)"
+# Force new make >= -r4 to skip some parallel build issues
+DEPEND="${COMMON_DEPEND}
+	dev-util/gperf
+	>=dev-util/intltool-0.50
+	>=sys-apps/coreutils-8.16
+	virtual/os-headers
+	virtual/pkgconfig
+	>=sys-devel/make-3.82-r4
+	>=sys-kernel/linux-headers-3.9
+	app-text/docbook-xml-dtd:4.2
+	app-text/docbook-xml-dtd:4.5
+	app-text/docbook-xsl-stylesheets
+	dev-libs/libxslt"
+RDEPEND="${COMMON_DEPEND}
+	!<sec-policy/selinux-base-2.20120725-r10"
+PDEPEND=">=sys-apps/hwids-20140304[udev]
+	openrc? ( >=sys-fs/udev-init-scripts-26 )"
+
+S=${WORKDIR}/systemd-${PV}
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-225-50-udev-default.rules-set-default-group-for-mediaX.patch
+	"${FILESDIR}"/${PN}-225-60-persistent-storage.rules-add-nvme-symlinks.patch
+	"${FILESDIR}"/${PN}-225-libudev-util-change-util_replace_whitespace.patch
+	"${FILESDIR}"/${PN}-225-udev-event-add-replace_whitespace-param.patch
+	"${FILESDIR}"/${PN}-225-udev-rules-perform-whitespace-replacement.patch
+	"${FILESDIR}"/${PN}-225-60-persistent-storage.rules-add-nvme-id-model.patch
+	"${FILESDIR}"/${PN}-225-udev-rules-all-values-can-contain-escaped-double-quotes-now.patch
+	"${FILESDIR}"/${PN}-225-udevadm-trigger-add-settle.patch
+	"${FILESDIR}"/${PN}-225-v4l_id-check-mplane-video-capture-and-output-capaili.patch
+	"${FILESDIR}"/${PN}-225-udevadm-hwdb-Return-non-zero-exit-code-on-error.patch
+	"${FILESDIR}"/${PN}-225-sysmacros.patch
+	"${FILESDIR}"/${PN}-225-50-udev-default.rules-set-default-group-for-udmabuf.patch
+	"${FILESDIR}"/${PN}-225-50-udev-default.rules-disable-REMOVE_CMD-support.patch
+	"${FILESDIR}"/${PN}-225-udev-rules-no-slash-run.patch
+	"${FILESDIR}"/${PN}-225-udev-use-interface-before-the-string-that-interface-.patch
+	"${FILESDIR}"/${PN}-225-udev-stop-freeing-value-after-using-it-for-setting-s.patch
+	"${FILESDIR}"/${PN}-225-workaround-renameat-syscall-wrapper-misdetection.patch
+	"${FILESDIR}"/${PN}-225-udevadm-add-ping-option-to-control-command.patch
+	"${FILESDIR}"/${PN}-225-fix-joystick-with-mouse-identification.patch
+)
+
+check_default_rules() {
+	# Make sure there are no sudden changes to upstream rules file
+	# (more for my own needs than anything else ...)
+	local udev_rules_md5=b8ad860dccae0ca51656b33c405ea2ca
+	MD5=$(md5sum < "${S}"/rules/50-udev-default.rules)
+	MD5=${MD5/  -/}
+	if [[ ${MD5} != ${udev_rules_md5} ]]; then
+		eerror "50-udev-default.rules has been updated, please validate!"
+		eerror "md5sum: ${MD5}"
+		die "50-udev-default.rules has been updated, please validate!"
+	fi
+}
+
+src_prepare() {
+	if ! [[ ${PV} = 9999* ]]; then
+		# secure_getenv() disable for non-glibc systems wrt bug #443030
+		if ! [[ $(grep -r secure_getenv * | wc -l) -eq 25 ]]; then
+			eerror "The line count for secure_getenv() failed, see bug #443030"
+			die
+		fi
+	fi
+
+	# backport some patches
+	if [[ -n "${patchset}" ]]; then
+		EPATCH_SUFFIX=patch EPATCH_FORCE=yes epatch
+	fi
+
+	cat <<-EOF > "${T}"/40-gentoo.rules
+	# Gentoo specific floppy and usb groups
+	SUBSYSTEM=="block", KERNEL=="fd[0-9]", GROUP="floppy"
+	SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="usb"
+	EOF
+
+	# change rules back to group uucp instead of dialout for now wrt #454556
+	sed -i -e 's/GROUP="dialout"/GROUP="uucp"/' rules/*.rules || die
+
+	# stub out the am_path_libcrypt function
+	echo 'AC_DEFUN([AM_PATH_LIBGCRYPT],[:])' > m4/gcrypt.m4
+
+	# apply user patches
+	epatch_user
+
+	eautoreconf
+
+	if ! [[ ${PV} = 9999* ]]; then
+		check_default_rules
+	fi
+
+	# Restore possibility of running --enable-static wrt #472608
+	sed -i \
+		-e '/--enable-static is not supported by systemd/s:as_fn_error:echo:' \
+		configure || die
+
+	if ! use elibc_glibc; then #443030
+		echo '#define secure_getenv(x) NULL' >> config.h.in
+		sed -i -e '/error.*secure_getenv/s:.*:#define secure_getenv(x) NULL:' src/shared/missing.h || die
+	fi
+
+	epatch "${PATCHES[@]}"
+}
+
+src_configure() {
+	cros_optimize_package_for_speed
+
+	# Prevent conflicts with i686 cross toolchain, bug 559726
+	tc-export AR CC NM OBJCOPY RANLIB
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	tc-export CC #463846
+	export cc_cv_CFLAGS__flto=no #502950
+	export cc_cv_CFLAGS__Werror_shadow=no #554454
+
+	# Keep sorted by ./configure --help and only pass --disable flags
+	# when *required* to avoid external deps or unnecessary compile
+	local econf_args
+	econf_args=(
+		--libdir=/usr/$(get_libdir)
+		--docdir=/usr/share/doc/${PF}
+		$(multilib_native_use_enable static-libs static)
+		--disable-nls
+		--disable-dbus
+		$(multilib_native_use_enable kmod)
+		--disable-xkbcommon
+		--disable-seccomp
+		$(multilib_native_use_enable selinux)
+		--disable-xz
+		--disable-lz4
+		--disable-pam
+		$(multilib_native_use_enable acl)
+		--disable-gcrypt
+		--disable-audit
+		--disable-libcryptsetup
+		--disable-qrencode
+		--disable-microhttpd
+		--disable-gnuefi
+		--disable-gnutls
+		--disable-libcurl
+		--disable-libidn
+		--disable-quotacheck
+		--disable-logind
+		--disable-polkit
+		--disable-myhostname
+		$(multilib_is_native_abi || echo "--disable-manpages")
+		--enable-split-usr
+		--without-python
+		--with-bashcompletiondir="$(get_bashcompdir)"
+		--with-rootprefix=
+		$(multilib_is_native_abi && echo "--with-rootlibdir=/$(get_libdir)")
+		--disable-elfutils
+	)
+
+	if ! multilib_is_native_abi; then
+		econf_args+=(
+			MOUNT_{CFLAGS,LIBS}=' '
+		)
+	fi
+
+	ECONF_SOURCE=${S} econf "${econf_args[@]}"
+}
+
+multilib_src_compile() {
+	echo 'BUILT_SOURCES: $(BUILT_SOURCES)' > "${T}"/Makefile.extra
+	emake -f Makefile -f "${T}"/Makefile.extra BUILT_SOURCES
+
+	# Most of the parallel build problems were solved by >=sys-devel/make-3.82-r4,
+	# but not everything -- separate building of the binaries as a workaround,
+	# which will force internal libraries required for the helpers to be built
+	# early enough, like eg. libsystemd-shared.la
+	if multilib_is_native_abi; then
+		local lib_targets=( libudev.la )
+		emake "${lib_targets[@]}"
+
+		local exec_targets=(
+			systemd-udevd
+			udevadm
+		)
+		emake "${exec_targets[@]}"
+
+		local helper_targets=(
+			ata_id
+			cdrom_id
+			collect
+			scsi_id
+			v4l_id
+			mtd_probe
+		)
+		emake "${helper_targets[@]}"
+
+		local man_targets=(
+			man/udev.conf.5
+			man/systemd.link.5
+			man/udev.7
+			man/systemd-udevd.service.8
+			man/udevadm.8
+		)
+		emake "${man_targets[@]}"
+	else
+		local lib_targets=( libudev.la )
+		emake "${lib_targets[@]}"
+	fi
+}
+
+multilib_src_install() {
+	if multilib_is_native_abi; then
+		local lib_LTLIBRARIES="libudev.la"
+		local pkgconfiglib_DATA="src/libudev/libudev.pc"
+
+		local targets=(
+			install-libLTLIBRARIES
+			install-includeHEADERS
+			install-rootbinPROGRAMS
+			install-rootlibexecPROGRAMS
+			install-udevlibexecPROGRAMS
+			install-dist_udevconfDATA
+			install-dist_udevrulesDATA
+			install-pkgconfiglibDATA
+			install-pkgconfigdataDATA
+			install-dist_docDATA
+			libudev-install-hook
+			install-directories-hook
+			install-dist_bashcompletionDATA
+			install-dist_networkDATA
+		)
+
+		# add final values of variables:
+		targets+=(
+			rootlibexec_PROGRAMS=systemd-udevd
+			rootbin_PROGRAMS=udevadm
+			lib_LTLIBRARIES="${lib_LTLIBRARIES}"
+			pkgconfiglib_DATA="${pkgconfiglib_DATA}"
+			pkgconfigdata_DATA="src/udev/udev.pc"
+			INSTALL_DIRS='$(sysconfdir)/udev/rules.d $(sysconfdir)/udev/hwdb.d $(sysconfdir)/systemd/network'
+			dist_bashcompletion_DATA="shell-completion/bash/udevadm"
+			dist_network_DATA="network/99-default.link"
+		)
+		emake -j1 DESTDIR="${D}" "${targets[@]}"
+		doman man/{udev.conf.5,systemd.link.5,udev.7,systemd-udevd.service.8,udevadm.8}
+	else
+		local lib_LTLIBRARIES="libudev.la"
+		local pkgconfiglib_DATA="src/libudev/libudev.pc"
+		local include_HEADERS="src/libudev/libudev.h"
+
+		local targets=(
+			install-libLTLIBRARIES
+			install-includeHEADERS
+			install-pkgconfiglibDATA
+		)
+
+		targets+=(
+			lib_LTLIBRARIES="${lib_LTLIBRARIES}"
+			pkgconfiglib_DATA="${pkgconfiglib_DATA}"
+			include_HEADERS="${include_HEADERS}"
+			)
+		emake -j1 DESTDIR="${D}" "${targets[@]}"
+	fi
+
+	# Move back to the old path since we filter out */systemd/* from images.
+	dodir /sbin
+	mv "${ED}"/lib/systemd/systemd-udevd "${ED}"/sbin/udevd || die
+}
+
+multilib_src_install_all() {
+	dodoc TODO
+
+	prune_libtool_files --all
+	rm -f "${D}"/lib/udev/rules.d/99-systemd.rules
+	rm -f "${D}"/usr/share/doc/${PF}/{LICENSE.*,GVARIANT-SERIALIZATION,DIFFERENCES,PORTING-DBUS1,sd-shutdown.h}
+
+	# see src_prepare() for content of 40-gentoo.rules
+	insinto /lib/udev/rules.d
+	doins "${T}"/40-gentoo.rules
+
+	# Install ChromeOS-specific rules
+	doins "${FILESDIR}"/91-chromeos-keyboard.rules
+
+	# maintainer note: by not letting the upstream build-sys create the .so
+	# link, you also avoid a parallel make problem
+	mv "${D}"/usr/share/man/man8/systemd-udevd{.service,}.8
+}
+
+pkg_postinst() {
+	mkdir -p "${ROOT%/}"/run
+
+	# "losetup -f" is confused if there is an empty /dev/loop/, Bug #338766
+	# So try to remove it here (will only work if empty).
+	rmdir "${ROOT%/}"/dev/loop 2>/dev/null
+	if [[ -d ${ROOT%/}/dev/loop ]]; then
+		ewarn "Please make sure your remove /dev/loop,"
+		ewarn "else losetup may be confused when looking for unused devices."
+	fi
+
+	local fstab="${ROOT%/}"/etc/fstab dev path fstype rest
+	while read -r dev path fstype rest; do
+		if [[ ${path} == /dev && ${fstype} != devtmpfs ]]; then
+			ewarn "You need to edit your /dev line in ${fstab} to have devtmpfs"
+			ewarn "filesystem. Otherwise udev won't be able to boot."
+			ewarn "See, https://bugs.gentoo.org/453186"
+		fi
+	done < "${fstab}"
+
+	if [[ -d ${ROOT%/}/usr/lib/udev ]]; then
+		ewarn
+		ewarn "Please re-emerge all packages on your system which install"
+		ewarn "rules and helpers in /usr/lib/udev. They should now be in"
+		ewarn "/lib/udev."
+		ewarn
+		ewarn "One way to do this is to run the following command:"
+		ewarn "emerge -av1 \$(qfile -q -S -C /usr/lib/udev)"
+		ewarn "Note that qfile can be found in app-portage/portage-utils"
+	fi
+
+	local old_cd_rules="${ROOT%/}"/etc/udev/rules.d/70-persistent-cd.rules
+	local old_net_rules="${ROOT%/}"/etc/udev/rules.d/70-persistent-net.rules
+	for old_rules in "${old_cd_rules}" "${old_net_rules}"; do
+		if [[ -f ${old_rules} ]]; then
+			ewarn
+			ewarn "File ${old_rules} is from old udev installation but if you still use it,"
+			ewarn "rename it to something else starting with 70- to silence this deprecation"
+			ewarn "warning."
+		fi
+	done
+
+	# If user has disabled 80-net-name-slot.rules using a empty file or a symlink to /dev/null,
+	# do the same for 80-net-setup-link.rules to keep the old behavior
+	local net_move=no
+	local net_name_slot_sym=no
+	local net_rules_path="${ROOT%/}"/etc/udev/rules.d
+	local net_name_slot="${net_rules_path}"/80-net-name-slot.rules
+	local net_setup_link="${net_rules_path}"/80-net-setup-link.rules
+	if [[ ! -e ${net_setup_link} ]]; then
+		[[ -f ${net_name_slot} && $(sed -e "/^#/d" -e "/^\W*$/d" ${net_name_slot} | wc -l) == 0 ]] && net_move=yes
+		if [[ -L ${net_name_slot} && $(readlink ${net_name_slot}) == /dev/null ]]; then
+			net_move=yes
+			net_name_slot_sym=yes
+		fi
+	fi
+	if [[ ${net_move} == yes ]]; then
+		ebegin "Copying ${net_name_slot} to ${net_setup_link}"
+
+		if [[ ${net_name_slot_sym} == yes ]]; then
+			ln -nfs /dev/null "${net_setup_link}"
+		else
+			cp "${net_name_slot}" "${net_setup_link}"
+		fi
+		eend $?
+	fi
+
+	# https://cgit.freedesktop.org/systemd/systemd/commit/rules/50-udev-default.rules?id=3dff3e00e044e2d53c76fa842b9a4759d4a50e69
+	# https://bugs.gentoo.org/246847
+	# https://bugs.gentoo.org/514174
+	enewgroup input
+
+	# Update hwdb database in case the format is changed by udev version.
+	if has_version 'sys-apps/hwids[udev]'; then
+		udevadm hwdb --update --root="${ROOT%/}"
+		# Only reload when we are not upgrading to avoid potential race w/ incompatible hwdb.bin and the running udevd
+		# https://cgit.freedesktop.org/systemd/systemd/commit/?id=1fab57c209035f7e66198343074e9cee06718bda
+		[[ -z ${REPLACING_VERSIONS} ]] && udev_reload
+	fi
+}
diff --git a/sys-kernel/OWNERS b/sys-kernel/OWNERS
index 497a58f..e465da8 100644
--- a/sys-kernel/OWNERS
+++ b/sys-kernel/OWNERS
@@ -1 +1,2 @@
 include /OWNERS.kernel
+chromeos-ci-prod@chromeos-bot.iam.gserviceaccount.com
diff --git a/sys-kernel/chromeos-kernel-3_10/chromeos-kernel-3_10-3.10.18-r1239.ebuild b/sys-kernel/chromeos-kernel-3_10/chromeos-kernel-3_10-3.10.18-r1239.ebuild
deleted file mode 100644
index d66ec7a..0000000
--- a/sys-kernel/chromeos-kernel-3_10/chromeos-kernel-3_10-3.10.18-r1239.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (c) 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="8cf05d5bb96ff832f9d258726a3a49f8bc6075e2"
-CROS_WORKON_TREE="09982d06f7bc4b015f73479d1cf6e2c345e3df37"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v3.10"
-CROS_WORKON_EGIT_BRANCH="chromeos-3.10"
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 3.10"
-KEYWORDS="*"
-RDEPEND="!sys-kernel/kernel-freon"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-3_10/chromeos-kernel-3_10-9999.ebuild b/sys-kernel/chromeos-kernel-3_10/chromeos-kernel-3_10-9999.ebuild
deleted file mode 100644
index b4f72b9..0000000
--- a/sys-kernel/chromeos-kernel-3_10/chromeos-kernel-3_10-9999.ebuild
+++ /dev/null
@@ -1,26 +0,0 @@
-# Copyright (c) 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v3.10"
-CROS_WORKON_EGIT_BRANCH="chromeos-3.10"
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 3.10"
-KEYWORDS="~*"
-RDEPEND="!sys-kernel/kernel-freon"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-3_10/files/chromeos-version.sh b/sys-kernel/chromeos-kernel-3_10/files/chromeos-version.sh
deleted file mode 100755
index 31f4fe2..0000000
--- a/sys-kernel/chromeos-kernel-3_10/files/chromeos-version.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012 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.
-#
-# This script is given one argument: the base of the source directory of
-# the package, and it prints a string on stdout with the numerical version
-# number for said repo.
-
-# If the script runs from a board overlay, add "_p1" to returned kernel version.
-SCRIPT=$(realpath "$0")
-OVERLAY_ROOT="$(dirname "${SCRIPT}")/../../.."
-OVERLAY_NAME=$(sed -n '/^repo-name *=/s:[^=]*= *::p' "${OVERLAY_ROOT}"/metadata/layout.conf)
-
-# Only after we've parsed $0 change directory in case $0 is relative.
-cd "$1" || exit
-
-suffix=""
-if [[ "${OVERLAY_NAME}" != "chromiumos" ]]; then
-    suffix="_p1"
-fi
-
-# Strip any .0 fix level from the version string.
-version=$(make kernelversion | sed -Ee 's/([0-9]*\.[0-9]*)\.0/\1/' -e s/-/_/g)
-
-if [[ -n "${version}" ]]; then
-    echo "${version}${suffix}"
-fi
diff --git a/sys-kernel/chromeos-kernel-3_10/metadata.xml b/sys-kernel/chromeos-kernel-3_10/metadata.xml
deleted file mode 100644
index e3b088a..0000000
--- a/sys-kernel/chromeos-kernel-3_10/metadata.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>kernel</herd>
-<upstream>
-  <remote-id type="cpe">cpe:/o:linux:linux_kernel</remote-id>
-</upstream>
-</pkgmetadata>
diff --git a/sys-kernel/chromeos-kernel-3_14/Manifest b/sys-kernel/chromeos-kernel-3_14/Manifest
deleted file mode 100644
index c4118f3..0000000
--- a/sys-kernel/chromeos-kernel-3_14/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromeos-kernel-3_14-R81-12607.58-1578524353.gcov.xz 1015612 BLAKE2B 5061b61a22a422b1e1ff6b152811e0fb06844f55accbe4f5dc9b240edfebb2ce64448c901b67701d5d0ec9ea59bec7ca9c4991c151bc5e3bfafde298f4998311 SHA512 41037890950c1b427218820e4164b6609f6d754f20cea0f33925103a3eae95e02c9890d6c057a1abfa997bde0ab8abe09a9bb32e7e61039a849aa7422084b63d
diff --git a/sys-kernel/chromeos-kernel-3_14/chromeos-kernel-3_14-3.14-r2260.ebuild b/sys-kernel/chromeos-kernel-3_14/chromeos-kernel-3_14-3.14-r2260.ebuild
deleted file mode 100644
index 21dbaed..0000000
--- a/sys-kernel/chromeos-kernel-3_14/chromeos-kernel-3_14-3.14-r2260.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (c) 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="808653487533bc82cfaedfe92e6ec099a0c8d869"
-CROS_WORKON_TREE="4d1ab54b0473d6c760bba04769b3bc89aef9a32f"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v3.14"
-CROS_WORKON_EGIT_BRANCH="chromeos-3.14"
-
-# AFDO_PROFILE_VERSION is the build on which the profile is collected.
-# This is required by kernel_afdo.
-#
-# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
-
-# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
-# kernel AFDO verify jobs to specify the location.
-AFDO_LOCATION=""
-
-# Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R81-12607.58-1578524353"
-
-# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
-# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
-# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
-# Manifest file.
-AFDO_FROZEN_PROFILE_VERSION=""
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 3.14"
-KEYWORDS="*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-3_14/chromeos-kernel-3_14-9999.ebuild b/sys-kernel/chromeos-kernel-3_14/chromeos-kernel-3_14-9999.ebuild
deleted file mode 100644
index 095d00a..0000000
--- a/sys-kernel/chromeos-kernel-3_14/chromeos-kernel-3_14-9999.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (c) 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v3.14"
-CROS_WORKON_EGIT_BRANCH="chromeos-3.14"
-
-# AFDO_PROFILE_VERSION is the build on which the profile is collected.
-# This is required by kernel_afdo.
-#
-# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
-
-# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
-# kernel AFDO verify jobs to specify the location.
-AFDO_LOCATION=""
-
-# Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R81-12607.58-1578524353"
-
-# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
-# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
-# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
-# Manifest file.
-AFDO_FROZEN_PROFILE_VERSION=""
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 3.14"
-KEYWORDS="~*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-3_14/files/chromeos-version.sh b/sys-kernel/chromeos-kernel-3_14/files/chromeos-version.sh
deleted file mode 100755
index 31f4fe2..0000000
--- a/sys-kernel/chromeos-kernel-3_14/files/chromeos-version.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012 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.
-#
-# This script is given one argument: the base of the source directory of
-# the package, and it prints a string on stdout with the numerical version
-# number for said repo.
-
-# If the script runs from a board overlay, add "_p1" to returned kernel version.
-SCRIPT=$(realpath "$0")
-OVERLAY_ROOT="$(dirname "${SCRIPT}")/../../.."
-OVERLAY_NAME=$(sed -n '/^repo-name *=/s:[^=]*= *::p' "${OVERLAY_ROOT}"/metadata/layout.conf)
-
-# Only after we've parsed $0 change directory in case $0 is relative.
-cd "$1" || exit
-
-suffix=""
-if [[ "${OVERLAY_NAME}" != "chromiumos" ]]; then
-    suffix="_p1"
-fi
-
-# Strip any .0 fix level from the version string.
-version=$(make kernelversion | sed -Ee 's/([0-9]*\.[0-9]*)\.0/\1/' -e s/-/_/g)
-
-if [[ -n "${version}" ]]; then
-    echo "${version}${suffix}"
-fi
diff --git a/sys-kernel/chromeos-kernel-3_14/metadata.xml b/sys-kernel/chromeos-kernel-3_14/metadata.xml
deleted file mode 100644
index e3b088a..0000000
--- a/sys-kernel/chromeos-kernel-3_14/metadata.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>kernel</herd>
-<upstream>
-  <remote-id type="cpe">cpe:/o:linux:linux_kernel</remote-id>
-</upstream>
-</pkgmetadata>
diff --git a/sys-kernel/chromeos-kernel-3_18/Manifest b/sys-kernel/chromeos-kernel-3_18/Manifest
index da0ff3c..98684d5 100644
--- a/sys-kernel/chromeos-kernel-3_18/Manifest
+++ b/sys-kernel/chromeos-kernel-3_18/Manifest
@@ -1,2 +1,2 @@
-DIST chromeos-kernel-3_18-R89-13638.0-1607337469.gcov.xz 815316 BLAKE2B 32ae6c7b62bb01c7ee148cb81a128bc93c6d43d3e90e27b16d2cd94eac91f131fc9d06361a2fa572a03dc8c3952477a09b7894328dd8f150bf7f0a438c6acde0 SHA512 4b693247df2600e3d9d5759163af31b9c42893ecb7199181050ae66b2e4388a24fb84cc30a74c71a9b08d73e2a674034f539e22fb5374a81afcf4d53c18b58cc
-DIST chromeos-kernel-3_18-R89-13660.0-1609151716.gcov.xz 750112 BLAKE2B 9c6e5cb54507cee75cd0f591793cce149c80d259589abd3861818528f3b8bc2b7bba23b92025a9580199f954af05ed055028a86cab483dc2c95d6c63a93c1cfb SHA512 87c339d5760ffb0fc7b9a21b8b73b815d277ce919f674848cc84fabf0da8e4094b8da7e68020a987ace605500ff8685aace2dd9c8ecd9d112e29c8b73b9c90fd
+DIST chromeos-kernel-3_18-R93-13982.4-1622453520.gcov.xz 678796 BLAKE2B a3b8fbe19882113ee9d0d5e22ae1b6122732370d38be409f4e2607d44020808e097a6e11f7f4b07f9aeb9c18eb0950908f750d0c9c245ca2c6b336e85255521f SHA512 1fdabc239abb5f7345a9f6c66b3e6df482ea08829ced209157a3ea085dad3e6e56357733656c6bdaea199b582acee7158639d010ab47a85b15512b7f09fc1a12
+DIST chromeos-kernel-3_18-R93-14010.0-1623663215.gcov.xz 503852 BLAKE2B da6553254cf4d9467040e9fc2f949c6e8909ce71c6e53292d5ed42b6167bd949030a6cf33076db3b55aee32b1f2ba65d7293ad87d264fc1544557426ee971a3d SHA512 a6bc1620c5f84526ca21884d287a586898d9db665bf4d1ba657f8109af4586fc08020dbae8fdf236770861c6efec09f58bbdf6375ebb6f14e6d46c4dad051460
diff --git a/sys-kernel/chromeos-kernel-3_18/chromeos-kernel-3_18-3.18-r2620.ebuild b/sys-kernel/chromeos-kernel-3_18/chromeos-kernel-3_18-3.18-r2620.ebuild
deleted file mode 100644
index 18361b6..0000000
--- a/sys-kernel/chromeos-kernel-3_18/chromeos-kernel-3_18-3.18-r2620.ebuild
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="acaaeea661220539d8e98b237e59991f067d741c"
-CROS_WORKON_TREE="112619411f476cebba19aa10288f5d9ec3bc9790"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v3.18"
-CROS_WORKON_EGIT_BRANCH="chromeos-3.18"
-
-# AFDO_PROFILE_VERSION is the build on which the profile is collected.
-# This is required by kernel_afdo.
-#
-# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
-
-# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
-# kernel AFDO verify jobs to specify the location.
-AFDO_LOCATION=""
-
-# Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R89-13660.0-1609151716"
-
-# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
-# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
-# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
-# Manifest file.
-AFDO_FROZEN_PROFILE_VERSION=""
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 3.18"
-KEYWORDS="*"
-
-RDEPEND="!!sys-kernel/gale-kernel-3_18"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-3_18/chromeos-kernel-3_18-3.18-r2668.ebuild b/sys-kernel/chromeos-kernel-3_18/chromeos-kernel-3_18-3.18-r2668.ebuild
new file mode 100644
index 0000000..132175d
--- /dev/null
+++ b/sys-kernel/chromeos-kernel-3_18/chromeos-kernel-3_18-3.18-r2668.ebuild
@@ -0,0 +1,47 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="3ae30eac2507ebbeffc66284c0ffb892cbe753ee"
+CROS_WORKON_TREE="584f5e2f76ae08f52c5abfaeaa1dba472471bb83"
+CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
+CROS_WORKON_LOCALNAME="kernel/v3.18"
+CROS_WORKON_EGIT_BRANCH="chromeos-3.18"
+
+# AFDO_PROFILE_VERSION is the build on which the profile is collected.
+# This is required by kernel_afdo.
+#
+# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
+
+# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
+# kernel AFDO verify jobs to specify the location.
+AFDO_LOCATION=""
+
+# Auto-generated by PFQ, don't modify.
+AFDO_PROFILE_VERSION="R93-14010.0-1623663215"
+
+# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
+# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
+# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
+# Manifest file.
+AFDO_FROZEN_PROFILE_VERSION=""
+
+# This must be inherited *after* EGIT/CROS_WORKON variables defined
+inherit cros-workon cros-kernel2
+
+HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
+DESCRIPTION="Chrome OS Linux Kernel 3.18"
+KEYWORDS="*"
+
+RDEPEND="!!sys-kernel/gale-kernel-3_18"
+
+# Change the following (commented out) number to the next prime number
+# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
+#
+# NOTE: There's nothing magic keeping this number prime but you just need to
+# make _any_ change to this file.  ...so why not keep it prime?
+#
+# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
+# files (!!!)
+#
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-3_18/chromeos-kernel-3_18-9999.ebuild b/sys-kernel/chromeos-kernel-3_18/chromeos-kernel-3_18-9999.ebuild
index c1098b5..1770de4 100644
--- a/sys-kernel/chromeos-kernel-3_18/chromeos-kernel-3_18-9999.ebuild
+++ b/sys-kernel/chromeos-kernel-3_18/chromeos-kernel-3_18-9999.ebuild
@@ -16,7 +16,7 @@
 AFDO_LOCATION=""
 
 # Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R89-13660.0-1609151716"
+AFDO_PROFILE_VERSION="R93-14010.0-1623663215"
 
 # Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
 # If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
@@ -42,4 +42,4 @@
 # Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
 # files (!!!)
 #
-# The coolest prime number is: 157
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-3_8/Manifest b/sys-kernel/chromeos-kernel-3_8/Manifest
deleted file mode 100644
index 6087bea..0000000
--- a/sys-kernel/chromeos-kernel-3_8/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST chromeos-kernel-3_8-R77-12240.0-1563788154.gcov.xz 347708 BLAKE2B 235e6fe15a5bb8c40b43315af7dcab3c7139af7b34d4d4e5e75061be4749331c7dec55415820cb3e36427911c3584e65a0294466b319cd84a9eb3cfb6de0c3ff SHA512 ff3137406e57ca776bae2e54c0d61b08abc5bf67cbf9add55cd5cabb4e16293168e26febaf5f3b1d8b62d9b1769f712cdbe59b1c9ee8564f773a848b41c0b2c1
diff --git a/sys-kernel/chromeos-kernel-3_8/chromeos-kernel-3_8-3.8.11-r860.ebuild b/sys-kernel/chromeos-kernel-3_8/chromeos-kernel-3_8-3.8.11-r860.ebuild
deleted file mode 100644
index 169c3ef..0000000
--- a/sys-kernel/chromeos-kernel-3_8/chromeos-kernel-3_8-3.8.11-r860.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (c) 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="278fb8920fdf9a2c896287e3f5b721c65504e5c9"
-CROS_WORKON_TREE="384327298544dbbeacfb00d82c68ad7825dcb7cc"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v3.8"
-CROS_WORKON_EGIT_BRANCH="chromeos-3.8"
-
-# AFDO_PROFILE_VERSION is the build on which the profile is collected.
-# This is required by kernel_afdo.
-
-# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
-# kernel AFDO verify jobs to specify the location.
-AFDO_LOCATION=""
-
-# Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R77-12240.0-1563788154"
-
-# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
-# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
-# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
-# Manifest file.
-AFDO_FROZEN_PROFILE_VERSION=""
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 3.8"
-KEYWORDS="*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-3_8/chromeos-kernel-3_8-9999.ebuild b/sys-kernel/chromeos-kernel-3_8/chromeos-kernel-3_8-9999.ebuild
deleted file mode 100644
index 518e9f0..0000000
--- a/sys-kernel/chromeos-kernel-3_8/chromeos-kernel-3_8-9999.ebuild
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (c) 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v3.8"
-CROS_WORKON_EGIT_BRANCH="chromeos-3.8"
-
-# AFDO_PROFILE_VERSION is the build on which the profile is collected.
-# This is required by kernel_afdo.
-
-# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
-# kernel AFDO verify jobs to specify the location.
-AFDO_LOCATION=""
-
-# Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R77-12240.0-1563788154"
-
-# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
-# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
-# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
-# Manifest file.
-AFDO_FROZEN_PROFILE_VERSION=""
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 3.8"
-KEYWORDS="~*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-3_8/files/chromeos-version.sh b/sys-kernel/chromeos-kernel-3_8/files/chromeos-version.sh
deleted file mode 100755
index 31f4fe2..0000000
--- a/sys-kernel/chromeos-kernel-3_8/files/chromeos-version.sh
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/bin/bash
-#
-# Copyright (c) 2012 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.
-#
-# This script is given one argument: the base of the source directory of
-# the package, and it prints a string on stdout with the numerical version
-# number for said repo.
-
-# If the script runs from a board overlay, add "_p1" to returned kernel version.
-SCRIPT=$(realpath "$0")
-OVERLAY_ROOT="$(dirname "${SCRIPT}")/../../.."
-OVERLAY_NAME=$(sed -n '/^repo-name *=/s:[^=]*= *::p' "${OVERLAY_ROOT}"/metadata/layout.conf)
-
-# Only after we've parsed $0 change directory in case $0 is relative.
-cd "$1" || exit
-
-suffix=""
-if [[ "${OVERLAY_NAME}" != "chromiumos" ]]; then
-    suffix="_p1"
-fi
-
-# Strip any .0 fix level from the version string.
-version=$(make kernelversion | sed -Ee 's/([0-9]*\.[0-9]*)\.0/\1/' -e s/-/_/g)
-
-if [[ -n "${version}" ]]; then
-    echo "${version}${suffix}"
-fi
diff --git a/sys-kernel/chromeos-kernel-3_8/metadata.xml b/sys-kernel/chromeos-kernel-3_8/metadata.xml
deleted file mode 100644
index e3b088a..0000000
--- a/sys-kernel/chromeos-kernel-3_8/metadata.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<herd>kernel</herd>
-<upstream>
-  <remote-id type="cpe">cpe:/o:linux:linux_kernel</remote-id>
-</upstream>
-</pkgmetadata>
diff --git a/sys-kernel/chromeos-kernel-4_14/Manifest b/sys-kernel/chromeos-kernel-4_14/Manifest
index 1253bc6..63363b9 100644
--- a/sys-kernel/chromeos-kernel-4_14/Manifest
+++ b/sys-kernel/chromeos-kernel-4_14/Manifest
@@ -1,2 +1,2 @@
-DIST chromeos-kernel-4_14-R89-13638.0-1607337215.gcov.xz 734944 BLAKE2B dd0b28ab0fe0cd38d43fa0091f20c1ba222e3a63d2fe68d5c705fd4a8efb1a8b78218b51cdc3c0bb2ccc37ea87d546857e860b79676424289d5f50668f82dc6b SHA512 03843c2bc4fb8ff62b813208b783412ef32fcdc06e6955ac19f4d6a98cd5ed09e883a7d7ae8b749976e19bfd796bf71c2edef18c4c1690c0ac12fb6dd2d53179
-DIST chromeos-kernel-4_14-R89-13662.0-1609152087.gcov.xz 1064724 BLAKE2B 67ebdc43ad8759191da2f1fa2c1d26637b5f637c9d9dcf5ded807fa3d63d7702eb7b3e3c792135e243e1f248685876a0c5153e961a3549164e5a72f6e5a0e916 SHA512 f5562222a93ddcb67ff8c34432b662955cd85034284d55525dcc2fb6c7b0808cb721f6f409c47c60a4a03ee56ed84c352bd3f07ca001c93fac88adfaaaf58b74
+DIST chromeos-kernel-4_14-R93-13982.4-1622453960.gcov.xz 1012740 BLAKE2B 7739213406647f9daf43f809c90732f398a03e55f2314025aef251f37bb4f18d12062c5bf35a95bf7eec9bd5a4f707ae61476a5ca90796261ea7c629da6eccff SHA512 78b8b3192b6f808c62ee3b479d39a2fd1553427a2d667ca4a3d939986d3932312568cade8654545bd40a31e7c1c099c8dd3237f76d30773e4ad944d4c8433152
+DIST chromeos-kernel-4_14-R93-14023.0-1623663563.gcov.xz 1116728 BLAKE2B c3462dee34067221997ba16fff16949b139c4a076ec235fd7c6fe77e342aff59c45fe88306766e13aec46d911baf1f34c3b000b6b537bc3a8cf9587715760d70 SHA512 8c81cb3ccfd730ca3e2f71920b3cc40126d0eae0bdc6119275ac05d712f6f33206cd50a413f9a985c0a08fa958fc035446d9cd6e4b155656f8efe7e4ff8ccb2a
diff --git a/sys-kernel/chromeos-kernel-4_14/chromeos-kernel-4_14-4.14.214-r1474.ebuild b/sys-kernel/chromeos-kernel-4_14/chromeos-kernel-4_14-4.14.214-r1474.ebuild
deleted file mode 100644
index 1e5756d..0000000
--- a/sys-kernel/chromeos-kernel-4_14/chromeos-kernel-4_14-4.14.214-r1474.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="d1f23ea09fbdfee1cc64feef060deb86e8db77b9"
-CROS_WORKON_TREE="d8d063ecc1d3b05bc4d74de525c815abce4d91be"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v4.14"
-CROS_WORKON_EGIT_BRANCH="chromeos-4.14"
-
-# AFDO_PROFILE_VERSION is the build on which the profile is collected.
-# This is required by kernel_afdo.
-#
-# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
-
-# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
-# kernel AFDO verify jobs to specify the location.
-AFDO_LOCATION=""
-
-# Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R89-13662.0-1609152087"
-
-# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
-# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
-# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
-# Manifest file.
-AFDO_FROZEN_PROFILE_VERSION=""
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 4.14"
-KEYWORDS="*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-4_14/chromeos-kernel-4_14-4.14.237-r1641.ebuild b/sys-kernel/chromeos-kernel-4_14/chromeos-kernel-4_14-4.14.237-r1641.ebuild
new file mode 100644
index 0000000..8ea8e4f
--- /dev/null
+++ b/sys-kernel/chromeos-kernel-4_14/chromeos-kernel-4_14-4.14.237-r1641.ebuild
@@ -0,0 +1,46 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="1cb1949d80a8fbf201c98279804d1d46dd1812e4"
+CROS_WORKON_TREE="66e638dfefa1448cbb74e4aa39634a314ab106a4"
+CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
+CROS_WORKON_LOCALNAME="kernel/v4.14"
+CROS_WORKON_EGIT_BRANCH="chromeos-4.14"
+
+# AFDO_PROFILE_VERSION is the build on which the profile is collected.
+# This is required by kernel_afdo.
+#
+# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
+
+# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
+# kernel AFDO verify jobs to specify the location.
+AFDO_LOCATION=""
+
+# Auto-generated by PFQ, don't modify.
+AFDO_PROFILE_VERSION="R93-14023.0-1623663563"
+
+# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
+# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
+# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
+# Manifest file.
+AFDO_FROZEN_PROFILE_VERSION=""
+
+# This must be inherited *after* EGIT/CROS_WORKON variables defined
+inherit cros-workon cros-kernel2
+
+HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
+DESCRIPTION="Chrome OS Linux Kernel 4.14"
+KEYWORDS="*"
+
+# Change the following (commented out) number to the next prime number
+# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
+#
+# NOTE: There's nothing magic keeping this number prime but you just need to
+# make _any_ change to this file.  ...so why not keep it prime?
+#
+# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
+# files (!!!)
+#
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-4_14/chromeos-kernel-4_14-9999.ebuild b/sys-kernel/chromeos-kernel-4_14/chromeos-kernel-4_14-9999.ebuild
index ee6c0ca..f8a6d48 100644
--- a/sys-kernel/chromeos-kernel-4_14/chromeos-kernel-4_14-9999.ebuild
+++ b/sys-kernel/chromeos-kernel-4_14/chromeos-kernel-4_14-9999.ebuild
@@ -17,7 +17,7 @@
 AFDO_LOCATION=""
 
 # Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R89-13662.0-1609152087"
+AFDO_PROFILE_VERSION="R93-14023.0-1623663563"
 
 # Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
 # If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
@@ -41,4 +41,4 @@
 # Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
 # files (!!!)
 #
-# The coolest prime number is: 157
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-4_19-ht/chromeos-kernel-4_19-ht-4.19.115-r10.ebuild b/sys-kernel/chromeos-kernel-4_19-ht/chromeos-kernel-4_19-ht-4.19.115-r10.ebuild
new file mode 100644
index 0000000..1f0d0d1
--- /dev/null
+++ b/sys-kernel/chromeos-kernel-4_19-ht/chromeos-kernel-4_19-ht-4.19.115-r10.ebuild
@@ -0,0 +1,44 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="32c067a0e895f8d2e65c56ef4c43da87f00394dd"
+CROS_WORKON_TREE="fa55a46690cd73594e89eb9b5066e99177dabc8e"
+CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
+CROS_WORKON_LOCALNAME="kernel/v4.19-ht"
+CROS_WORKON_EGIT_BRANCH="chromeos-4.19-ht"
+
+
+# AFDO_PROFILE_VERSION is the build on which the profile is collected.
+# This is required by kernel_afdo.
+#
+# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
+
+# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
+# kernel AFDO verify jobs to specify the location.
+AFDO_LOCATION=""
+
+# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
+# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
+# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
+# Manifest file.
+AFDO_FROZEN_PROFILE_VERSION=""
+
+# This must be inherited *after* EGIT/CROS_WORKON variables defined
+inherit cros-workon cros-kernel2
+
+HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
+DESCRIPTION="Chrome OS Linux Kernel 4.19-ht"
+KEYWORDS="*"
+
+# Change the following (commented out) number to the next prime number
+# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
+#
+# NOTE: There's nothing magic keeping this number prime but you just need to
+# make _any_ change to this file.  ...so why not keep it prime?
+#
+# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
+# files (!!!)
+#
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-4_19-ht/chromeos-kernel-4_19-ht-4.19.115-r8.ebuild b/sys-kernel/chromeos-kernel-4_19-ht/chromeos-kernel-4_19-ht-4.19.115-r8.ebuild
deleted file mode 100644
index 804602f..0000000
--- a/sys-kernel/chromeos-kernel-4_19-ht/chromeos-kernel-4_19-ht-4.19.115-r8.ebuild
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="32c067a0e895f8d2e65c56ef4c43da87f00394dd"
-CROS_WORKON_TREE="fa55a46690cd73594e89eb9b5066e99177dabc8e"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v4.19-ht"
-CROS_WORKON_EGIT_BRANCH="chromeos-4.19-ht"
-
-
-# AFDO_PROFILE_VERSION is the build on which the profile is collected.
-# This is required by kernel_afdo.
-#
-# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
-
-# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
-# kernel AFDO verify jobs to specify the location.
-AFDO_LOCATION=""
-
-# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
-# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
-# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
-# Manifest file.
-AFDO_FROZEN_PROFILE_VERSION=""
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 4.19-ht"
-KEYWORDS="*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-4_19-ht/chromeos-kernel-4_19-ht-9999.ebuild b/sys-kernel/chromeos-kernel-4_19-ht/chromeos-kernel-4_19-ht-9999.ebuild
index 69ce439..e3d4caa 100644
--- a/sys-kernel/chromeos-kernel-4_19-ht/chromeos-kernel-4_19-ht-9999.ebuild
+++ b/sys-kernel/chromeos-kernel-4_19-ht/chromeos-kernel-4_19-ht-9999.ebuild
@@ -39,4 +39,4 @@
 # Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
 # files (!!!)
 #
-# The coolest prime number is: 157
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-4_19/Manifest b/sys-kernel/chromeos-kernel-4_19/Manifest
index 3be19ad..992ec6a 100644
--- a/sys-kernel/chromeos-kernel-4_19/Manifest
+++ b/sys-kernel/chromeos-kernel-4_19/Manifest
@@ -1,2 +1,2 @@
-DIST chromeos-kernel-4_19-R89-13638.0-1607337429.gcov.xz 771520 BLAKE2B 2e044e132c77e6c76c89f73dff8f2a9d58c43f918545ba26f6371a7259b168dcecde2e9e260d2730ddf0d6233024ac0c2f4f09c1c3860b24d04ef821a744731e SHA512 e8902b86508059fa1af718e8908eaf819d9c603ecec90d63c4a15bd5bd81f52a3f4ff2954febe7471ef7a7b50e6f03a01ac10873d180cc83fb29cb395f2eb287
-DIST chromeos-kernel-4_19-R89-13660.0-1609151538.gcov.xz 963372 BLAKE2B 7bdd33e984a6de0639ba2f1b8386048a4df8e5f5597e3ad9324dfefd58cef4c4f35c642bb74b183d06c57c9d459d3c0309759a1dff692f4f46e9d84daa55764c SHA512 4d4e076fb229ca2f48f3c22d0e346c1764ee6f8e0a87b1fe3d337424d93aa81e52f26fa7ddadac0ba5fce2f90736a0c355e5d84f26427ac9143922bd3fa9058f
+DIST chromeos-kernel-4_19-R93-13982.4-1622453578.gcov.xz 775008 BLAKE2B 21a00aa2335486b7c755e58d50547eca90fd512ad3f635076cf1a2ab527848c7faacc8ff19946b998987f9e73d8aefab4a3b02cfbcdc90a7b1da1dad66e38760 SHA512 53d837cec0f0daaffd2a263b3291776d3a091f2e2c618d259d8b927cac6c49321c5dc15e94ab5749f7f6b580bd622193792c09b8c1f2a4522457c13c82ef48ec
+DIST chromeos-kernel-4_19-R93-14021.0-1623663098.gcov.xz 765556 BLAKE2B 47907a90c31f2e7ea83a831abb76b172833882b7e2b25456596a1053d3171dfbc197823b4d63f7c42bc57922bc4500e9a9feceb079c51ae4c79af6a991ca2c2b SHA512 c4a6f7003ea3530dc26665bd036336c258b5ada9f97d48bdac088088a7db15626ae44645b7934386cda9f8abda5fbd8c5dc699895dacd63e08126d6eac438dc3
diff --git a/sys-kernel/chromeos-kernel-4_19/chromeos-kernel-4_19-4.19.166-r1789.ebuild b/sys-kernel/chromeos-kernel-4_19/chromeos-kernel-4_19-4.19.166-r1789.ebuild
deleted file mode 100644
index 2f36e1a..0000000
--- a/sys-kernel/chromeos-kernel-4_19/chromeos-kernel-4_19-4.19.166-r1789.ebuild
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="6f7cf59e55eef9f60c68e171859ca08b403bab5f"
-CROS_WORKON_TREE="a871c03db88776276394472f840cda1f065c0f9e"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v4.19"
-CROS_WORKON_EGIT_BRANCH="chromeos-4.19"
-
-# AFDO_PROFILE_VERSION is the build on which the profile is collected.
-# This is required by kernel_afdo.
-#
-# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
-
-# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
-# kernel AFDO verify jobs to specify the location.
-AFDO_LOCATION=""
-
-# Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R89-13660.0-1609151538"
-
-# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
-# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
-# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
-# Manifest file.
-AFDO_FROZEN_PROFILE_VERSION=""
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 4.19"
-KEYWORDS="*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-4_19/chromeos-kernel-4_19-4.19.195-r2048.ebuild b/sys-kernel/chromeos-kernel-4_19/chromeos-kernel-4_19-4.19.195-r2048.ebuild
new file mode 100644
index 0000000..2592214
--- /dev/null
+++ b/sys-kernel/chromeos-kernel-4_19/chromeos-kernel-4_19-4.19.195-r2048.ebuild
@@ -0,0 +1,46 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="73c0563326069fb2a47d15484d37aa3e37aaab23"
+CROS_WORKON_TREE="0ea0bfa48fd873d3f53398e55979de8ea14ed1a1"
+CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
+CROS_WORKON_LOCALNAME="kernel/v4.19"
+CROS_WORKON_EGIT_BRANCH="chromeos-4.19"
+
+# AFDO_PROFILE_VERSION is the build on which the profile is collected.
+# This is required by kernel_afdo.
+#
+# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
+
+# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
+# kernel AFDO verify jobs to specify the location.
+AFDO_LOCATION=""
+
+# Auto-generated by PFQ, don't modify.
+AFDO_PROFILE_VERSION="R93-14021.0-1623663098"
+
+# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
+# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
+# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
+# Manifest file.
+AFDO_FROZEN_PROFILE_VERSION=""
+
+# This must be inherited *after* EGIT/CROS_WORKON variables defined
+inherit cros-workon cros-kernel2
+
+HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
+DESCRIPTION="Chrome OS Linux Kernel 4.19"
+KEYWORDS="*"
+
+# Change the following (commented out) number to the next prime number
+# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
+#
+# NOTE: There's nothing magic keeping this number prime but you just need to
+# make _any_ change to this file.  ...so why not keep it prime?
+#
+# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
+# files (!!!)
+#
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-4_19/chromeos-kernel-4_19-9999.ebuild b/sys-kernel/chromeos-kernel-4_19/chromeos-kernel-4_19-9999.ebuild
index 5630678..ae5abd6 100644
--- a/sys-kernel/chromeos-kernel-4_19/chromeos-kernel-4_19-9999.ebuild
+++ b/sys-kernel/chromeos-kernel-4_19/chromeos-kernel-4_19-9999.ebuild
@@ -17,7 +17,7 @@
 AFDO_LOCATION=""
 
 # Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R89-13660.0-1609151538"
+AFDO_PROFILE_VERSION="R93-14021.0-1623663098"
 
 # Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
 # If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
@@ -41,4 +41,4 @@
 # Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
 # files (!!!)
 #
-# The coolest prime number is: 157
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-4_4/Manifest b/sys-kernel/chromeos-kernel-4_4/Manifest
index 11db39f..6f6a61d 100644
--- a/sys-kernel/chromeos-kernel-4_4/Manifest
+++ b/sys-kernel/chromeos-kernel-4_4/Manifest
@@ -1,2 +1,2 @@
-DIST chromeos-kernel-4_4-R89-13638.0-1607337135.gcov.xz 574628 BLAKE2B 3c0892e14c0a2da7d1a946c817bed8ce7547b7ae1e21d662ff65b4cf350d74cde7e68be12ee75986f3deef65c07bfbd7182caae3d852e12e88301ea0c5d2a053 SHA512 99f9387b07ef89658310116a464aa9f69ee82cdb7ea19442c918dbe925518b769b4f3c4fdba82ab47d734c518babf80cadb29b8f3173564d839c45299bbca4b2
-DIST chromeos-kernel-4_4-R89-13671.0-1609151607.gcov.xz 469188 BLAKE2B d393c53b31c533c0395a072ee4d244e5bb8edcaa7853bee3fd0fb4dd5e7e7c066e7126671ce4eaec40a15416a8b7dcde1163f61d2d42ae5d5f305806511daa68 SHA512 a003560f6392b5f1c7e0617bf06df24b60fa1e95604349f1666e5e7e8d67d37808cab9aa5e5de96456d56573253836e18c0f68c5d87873c4ada781b55f5a2c9a
+DIST chromeos-kernel-4_4-R93-13982.4-1622453587.gcov.xz 783180 BLAKE2B a5bb70f806d19a71dd2fa7b1e88a5308e264cf4510e0758cdd8139591e3cbb87d0bd480459f5f419df9e7b547bb1feb5abb388e9463e9a20591e10a614ab3d36 SHA512 e7985f80bb4d99a862b10c503302fd3b22877d0fb39c901f2133d34ac0a3da83f8a1d9f5164fa14077457e85d2c02c8effa9d1aa856c597d7aab632b12f44c61
+DIST chromeos-kernel-4_4-R93-14021.0-1623663147.gcov.xz 779648 BLAKE2B 8ac03d5287e93509a5ad053ac84b5ac650ecaa0c687b8ad73e1f0ec356214b39b164b15a9a08d437f8cbc7c815389dc09d366f0b29ebbba44fe02501ae1ee4e1 SHA512 71af8cf41844a4dc0c7fdb79d0cfe0abef8c54cc478b47aa62aee0bba70ab5bf6050cb6133ae4eb4d28d08a4508563e6ddfb1f1295a6afcd534a170e70336370
diff --git a/sys-kernel/chromeos-kernel-4_4/chromeos-kernel-4_4-4.4.250-r2540.ebuild b/sys-kernel/chromeos-kernel-4_4/chromeos-kernel-4_4-4.4.250-r2540.ebuild
deleted file mode 100644
index c930a75..0000000
--- a/sys-kernel/chromeos-kernel-4_4/chromeos-kernel-4_4-4.4.250-r2540.ebuild
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="aba6006a503ef60ba2d485a97322e235060d701b"
-CROS_WORKON_TREE="61318ff26971ef4dd69d07df230568aaa72cff04"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v4.4"
-CROS_WORKON_EGIT_BRANCH="chromeos-4.4"
-
-# AFDO_PROFILE_VERSION is the build on which the profile is collected.
-# This is required by kernel_afdo.
-#
-# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
-
-# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
-# kernel AFDO verify jobs to specify the location.
-AFDO_LOCATION=""
-
-# Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R89-13671.0-1609151607"
-
-# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
-# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
-# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
-# Manifest file.
-AFDO_FROZEN_PROFILE_VERSION=""
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 4.4"
-KEYWORDS="*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-4_4/chromeos-kernel-4_4-4.4.273-r2681.ebuild b/sys-kernel/chromeos-kernel-4_4/chromeos-kernel-4_4-4.4.273-r2681.ebuild
new file mode 100644
index 0000000..4671be3
--- /dev/null
+++ b/sys-kernel/chromeos-kernel-4_4/chromeos-kernel-4_4-4.4.273-r2681.ebuild
@@ -0,0 +1,45 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="f4303b2117000a234e959c0f69286c219d3ab1b4"
+CROS_WORKON_TREE="e3252c59b87ed40c9ff881fe2f97048605e0a3bf"
+CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
+CROS_WORKON_LOCALNAME="kernel/v4.4"
+CROS_WORKON_EGIT_BRANCH="chromeos-4.4"
+
+# AFDO_PROFILE_VERSION is the build on which the profile is collected.
+# This is required by kernel_afdo.
+#
+# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
+
+# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
+# kernel AFDO verify jobs to specify the location.
+AFDO_LOCATION=""
+
+# Auto-generated by PFQ, don't modify.
+AFDO_PROFILE_VERSION="R93-14021.0-1623663147"
+
+# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
+# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
+# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
+# Manifest file.
+AFDO_FROZEN_PROFILE_VERSION=""
+
+# This must be inherited *after* EGIT/CROS_WORKON variables defined
+inherit cros-workon cros-kernel2
+
+HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
+DESCRIPTION="Chrome OS Linux Kernel 4.4"
+KEYWORDS="*"
+
+# Change the following (commented out) number to the next prime number
+# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
+#
+# NOTE: There's nothing magic keeping this number prime but you just need to
+# make _any_ change to this file.  ...so why not keep it prime?
+#
+# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
+# files (!!!)
+#
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-4_4/chromeos-kernel-4_4-9999.ebuild b/sys-kernel/chromeos-kernel-4_4/chromeos-kernel-4_4-9999.ebuild
index 7c3a408..e511c8c 100644
--- a/sys-kernel/chromeos-kernel-4_4/chromeos-kernel-4_4-9999.ebuild
+++ b/sys-kernel/chromeos-kernel-4_4/chromeos-kernel-4_4-9999.ebuild
@@ -16,7 +16,7 @@
 AFDO_LOCATION=""
 
 # Auto-generated by PFQ, don't modify.
-AFDO_PROFILE_VERSION="R89-13671.0-1609151607"
+AFDO_PROFILE_VERSION="R93-14021.0-1623663147"
 
 # Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
 # If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
@@ -40,4 +40,4 @@
 # Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
 # files (!!!)
 #
-# The coolest prime number is: 157
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-5_10/chromeos-kernel-5_10-5.10.46-r477.ebuild b/sys-kernel/chromeos-kernel-5_10/chromeos-kernel-5_10-5.10.46-r477.ebuild
new file mode 100644
index 0000000..aae99e6
--- /dev/null
+++ b/sys-kernel/chromeos-kernel-5_10/chromeos-kernel-5_10-5.10.46-r477.ebuild
@@ -0,0 +1,28 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="6edc6175aeacd80e1b1a432284ca2be14cdf1dd5"
+CROS_WORKON_TREE="9a3e6b51afa8764e98a98e805c1ecd7ec2f041b2"
+CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
+CROS_WORKON_LOCALNAME="kernel/v5.10"
+CROS_WORKON_EGIT_BRANCH="chromeos-5.10"
+
+# This must be inherited *after* EGIT/CROS_WORKON variables defined
+inherit cros-workon cros-kernel2
+
+HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
+DESCRIPTION="Chrome OS Linux Kernel 5.10"
+KEYWORDS="*"
+
+# Change the following (commented out) number to the next prime number
+# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
+#
+# NOTE: There's nothing magic keeping this number prime but you just need to
+# make _any_ change to this file.  ...so why not keep it prime?
+#
+# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
+# files (!!!)
+#
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-5_10/chromeos-kernel-5_10-5.10.6-r45.ebuild b/sys-kernel/chromeos-kernel-5_10/chromeos-kernel-5_10-5.10.6-r45.ebuild
deleted file mode 100644
index f026106..0000000
--- a/sys-kernel/chromeos-kernel-5_10/chromeos-kernel-5_10-5.10.6-r45.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="a82ae77c18fd06cee67f2d7fca2b33f303b682a3"
-CROS_WORKON_TREE="fc459ba5798aadc9326424d22e78af869d1ed11c"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v5.10"
-CROS_WORKON_EGIT_BRANCH="chromeos-5.10"
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 5.10"
-KEYWORDS="*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-5_10/chromeos-kernel-5_10-9999.ebuild b/sys-kernel/chromeos-kernel-5_10/chromeos-kernel-5_10-9999.ebuild
index 2a19802..01ba42f 100644
--- a/sys-kernel/chromeos-kernel-5_10/chromeos-kernel-5_10-9999.ebuild
+++ b/sys-kernel/chromeos-kernel-5_10/chromeos-kernel-5_10-9999.ebuild
@@ -23,4 +23,4 @@
 # Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
 # files (!!!)
 #
-# The coolest prime number is: 157
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-5_4/Manifest b/sys-kernel/chromeos-kernel-5_4/Manifest
new file mode 100644
index 0000000..9840e28
--- /dev/null
+++ b/sys-kernel/chromeos-kernel-5_4/Manifest
@@ -0,0 +1,2 @@
+DIST chromeos-kernel-5_4-R93-13982.4-1622453744.gcov.xz 757040 BLAKE2B bfffdee869cb4fdd2f8f50dddbf1e2a127354f2a0a407f134b2a423ba939634d1491b45923f2ca8088518084fe298953cb5554a60cf8718a980bf37513891246 SHA512 fad271e01ef8ea351fe8be44a14bd8c9deebc225e6f22151c710166b744e943987f735989f69a5e016b539f04ff56d2e6ca7f202d56d944676143dcda0893114
+DIST chromeos-kernel-5_4-R93-14021.0-1623663354.gcov.xz 783700 BLAKE2B ebef8b5dfaf66c349b62bb53f407a16339f394029d76c01845578a229bcb1f47fd70fe6c3b8669fb5c8403e6388ab4ce7864cff5e07702bade6e934c43d604db SHA512 f9f94f3256edc85a6e666b34ca0fe952b3e4a8dbaaff3fe8cd7f06ab88be46d9d7a4b97e6964c47f3b56d28b69c5c0722c3da3aff57f7fa4ac7eb02cb216bfe6
diff --git a/sys-kernel/chromeos-kernel-5_4/chromeos-kernel-5_4-5.4.128-r2362.ebuild b/sys-kernel/chromeos-kernel-5_4/chromeos-kernel-5_4-5.4.128-r2362.ebuild
new file mode 100644
index 0000000..254e919
--- /dev/null
+++ b/sys-kernel/chromeos-kernel-5_4/chromeos-kernel-5_4-5.4.128-r2362.ebuild
@@ -0,0 +1,46 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="686e2baf4c9b63cf85be71074565b76bb95b9b67"
+CROS_WORKON_TREE="d2088f2a2ad01abfc14810345aa1f171011ad20a"
+CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
+CROS_WORKON_LOCALNAME="kernel/v5.4"
+CROS_WORKON_EGIT_BRANCH="chromeos-5.4"
+
+# AFDO_PROFILE_VERSION is the build on which the profile is collected.
+# This is required by kernel_afdo.
+#
+# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
+
+# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
+# kernel AFDO verify jobs to specify the location.
+AFDO_LOCATION=""
+
+# Auto-generated by PFQ, don't modify.
+AFDO_PROFILE_VERSION="R93-14021.0-1623663354"
+
+# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
+# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
+# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
+# Manifest file.
+AFDO_FROZEN_PROFILE_VERSION=""
+
+# This must be inherited *after* EGIT/CROS_WORKON variables defined
+inherit cros-workon cros-kernel2
+
+HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
+DESCRIPTION="Chrome OS Linux Kernel 5.4"
+KEYWORDS="*"
+
+# Change the following (commented out) number to the next prime number
+# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
+#
+# NOTE: There's nothing magic keeping this number prime but you just need to
+# make _any_ change to this file.  ...so why not keep it prime?
+#
+# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
+# files (!!!)
+#
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-5_4/chromeos-kernel-5_4-5.4.88-r1713.ebuild b/sys-kernel/chromeos-kernel-5_4/chromeos-kernel-5_4-5.4.88-r1713.ebuild
deleted file mode 100644
index dc276f5..0000000
--- a/sys-kernel/chromeos-kernel-5_4/chromeos-kernel-5_4-5.4.88-r1713.ebuild
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="a1684bb380c69c3afb82a7d9039384e5e7e6c34e"
-CROS_WORKON_TREE="32bcf594b030f38c0ef196da2d84de7856bc3ba3"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/v5.4"
-CROS_WORKON_EGIT_BRANCH="chromeos-5.4"
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel 5.4"
-KEYWORDS="*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-5_4/chromeos-kernel-5_4-9999.ebuild b/sys-kernel/chromeos-kernel-5_4/chromeos-kernel-5_4-9999.ebuild
index 16c7897..20e6d0c 100644
--- a/sys-kernel/chromeos-kernel-5_4/chromeos-kernel-5_4-9999.ebuild
+++ b/sys-kernel/chromeos-kernel-5_4/chromeos-kernel-5_4-9999.ebuild
@@ -7,6 +7,24 @@
 CROS_WORKON_LOCALNAME="kernel/v5.4"
 CROS_WORKON_EGIT_BRANCH="chromeos-5.4"
 
+# AFDO_PROFILE_VERSION is the build on which the profile is collected.
+# This is required by kernel_afdo.
+#
+# TODO: Allow different versions for different CHROMEOS_KERNEL_SPLITCONFIGs
+
+# By default, let cros-kernel2 define AFDO_LOCATION.  This is used in the
+# kernel AFDO verify jobs to specify the location.
+AFDO_LOCATION=""
+
+# Auto-generated by PFQ, don't modify.
+AFDO_PROFILE_VERSION="R93-14021.0-1623663354"
+
+# Set AFDO_FROZEN_PROFILE_VERSION to freeze the afdo profiles.
+# If non-empty, it overrides the value set by AFDO_PROFILE_VERSION.
+# Note: Run "ebuild-<board> /path/to/ebuild manifest" afterwards to create new
+# Manifest file.
+AFDO_FROZEN_PROFILE_VERSION=""
+
 # This must be inherited *after* EGIT/CROS_WORKON variables defined
 inherit cros-workon cros-kernel2
 
@@ -23,4 +41,4 @@
 # Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
 # files (!!!)
 #
-# The coolest prime number is: 157
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-experimental/chromeos-kernel-experimental-9999.ebuild b/sys-kernel/chromeos-kernel-experimental/chromeos-kernel-experimental-9999.ebuild
index 6225502..e408c92 100644
--- a/sys-kernel/chromeos-kernel-experimental/chromeos-kernel-experimental-9999.ebuild
+++ b/sys-kernel/chromeos-kernel-experimental/chromeos-kernel-experimental-9999.ebuild
@@ -22,4 +22,4 @@
 # Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
 # files (!!!)
 #
-# The coolest prime number is: 157
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-next/chromeos-kernel-next-9999.ebuild b/sys-kernel/chromeos-kernel-next/chromeos-kernel-next-9999.ebuild
index fa288f68..2f06466 100644
--- a/sys-kernel/chromeos-kernel-next/chromeos-kernel-next-9999.ebuild
+++ b/sys-kernel/chromeos-kernel-next/chromeos-kernel-next-9999.ebuild
@@ -23,4 +23,4 @@
 # Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
 # files (!!!)
 #
-# The coolest prime number is: 157
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-upstream/chromeos-kernel-upstream-5.10-r18.ebuild b/sys-kernel/chromeos-kernel-upstream/chromeos-kernel-upstream-5.10-r18.ebuild
deleted file mode 100644
index e71cba6..0000000
--- a/sys-kernel/chromeos-kernel-upstream/chromeos-kernel-upstream-5.10-r18.ebuild
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="d7f4cbe6c1b3bfee27ccfe1873e4834c8bdc7596"
-CROS_WORKON_TREE="9bc339d3af6c2510a2a01bb7cd542fd3ffaf6cb2"
-CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
-CROS_WORKON_LOCALNAME="kernel/upstream"
-
-# This must be inherited *after* EGIT/CROS_WORKON variables defined
-inherit cros-workon cros-kernel2
-
-HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
-DESCRIPTION="Chrome OS Linux Kernel latest upstream rc"
-KEYWORDS="*"
-
-# Change the following (commented out) number to the next prime number
-# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
-#
-# NOTE: There's nothing magic keeping this number prime but you just need to
-# make _any_ change to this file.  ...so why not keep it prime?
-#
-# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
-# files (!!!)
-#
-# The coolest prime number is: 157
diff --git a/sys-kernel/chromeos-kernel-upstream/chromeos-kernel-upstream-5.13_rc7-r28.ebuild b/sys-kernel/chromeos-kernel-upstream/chromeos-kernel-upstream-5.13_rc7-r28.ebuild
new file mode 100644
index 0000000..f30cbc0
--- /dev/null
+++ b/sys-kernel/chromeos-kernel-upstream/chromeos-kernel-upstream-5.13_rc7-r28.ebuild
@@ -0,0 +1,27 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="5df47c2e333151487e18a391cb2e3ff04d9a4b57"
+CROS_WORKON_TREE="05cff5472871455d25debb0f398a4fa861e5a5c3"
+CROS_WORKON_PROJECT="chromiumos/third_party/kernel"
+CROS_WORKON_LOCALNAME="kernel/upstream"
+
+# This must be inherited *after* EGIT/CROS_WORKON variables defined
+inherit cros-workon cros-kernel2
+
+HOMEPAGE="https://www.chromium.org/chromium-os/chromiumos-design-docs/chromium-os-kernel"
+DESCRIPTION="Chrome OS Linux Kernel latest upstream rc"
+KEYWORDS="*"
+
+# Change the following (commented out) number to the next prime number
+# when you change "cros-kernel2.eclass" to work around http://crbug.com/220902
+#
+# NOTE: There's nothing magic keeping this number prime but you just need to
+# make _any_ change to this file.  ...so why not keep it prime?
+#
+# Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
+# files (!!!)
+#
+# The coolest prime number is: 173
diff --git a/sys-kernel/chromeos-kernel-upstream/chromeos-kernel-upstream-9999.ebuild b/sys-kernel/chromeos-kernel-upstream/chromeos-kernel-upstream-9999.ebuild
index d629ef5..8774bc0 100644
--- a/sys-kernel/chromeos-kernel-upstream/chromeos-kernel-upstream-9999.ebuild
+++ b/sys-kernel/chromeos-kernel-upstream/chromeos-kernel-upstream-9999.ebuild
@@ -22,4 +22,4 @@
 # Don't forget to update the comment in _all_ chromeos-kernel-x_x-9999.ebuild
 # files (!!!)
 #
-# The coolest prime number is: 157
+# The coolest prime number is: 173
diff --git a/sys-kernel/linux-firmware/linux-firmware-0.0.1-r416.ebuild b/sys-kernel/linux-firmware/linux-firmware-0.0.1-r416.ebuild
deleted file mode 100644
index c294258..0000000
--- a/sys-kernel/linux-firmware/linux-firmware-0.0.1-r416.ebuild
+++ /dev/null
@@ -1,444 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-CROS_WORKON_COMMIT="df0b34b6ada013cf0a09b8000d416096b8bc87ff"
-CROS_WORKON_TREE="787fa668bcaf34da636007c3b85fb7741f57852b"
-CROS_WORKON_PROJECT="chromiumos/third_party/linux-firmware"
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit cros-workon
-
-DESCRIPTION="Firmware images from the upstream linux-fimware package"
-HOMEPAGE="https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/"
-
-SLOT="0"
-KEYWORDS="*"
-
-
-IUSE_KERNEL_VERS=(
-	kernel-4_19
-	kernel-5_4
-	kernel-upstream
-)
-IUSE_ATH3K=(
-	ath3k-all
-	ath3k-ar3011
-	ath3k-ar3012
-)
-IUSE_IWLWIFI=(
-	iwlwifi-all
-	iwlwifi-100
-	iwlwifi-105
-	iwlwifi-135
-	iwlwifi-1000
-	iwlwifi-1000
-	iwlwifi-2000
-	iwlwifi-2030
-	iwlwifi-3160
-	iwlwifi-3945
-	iwlwifi-4965
-	iwlwifi-5000
-	iwlwifi-5150
-	iwlwifi-6000
-	iwlwifi-6005
-	iwlwifi-6030
-	iwlwifi-6050
-	iwlwifi-7260
-	iwlwifi-7265
-	iwlwifi-7265D
-	iwlwifi-9000
-	iwlwifi-9260
-	iwlwifi-cc
-	iwlwifi-QuZ
-)
-IUSE_BRCMWIFI=(
-	brcmfmac-all
-	brcmfmac4354-sdio
-	brcmfmac4356-pcie
-	brcmfmac4371-pcie
-)
-IUSE_LINUX_FIRMWARE=(
-	adreno-630
-	adsp_apl
-	adsp_cnl
-	adsp_glk
-	adsp_kbl
-	adsp_skl
-	ath9k_htc
-	ath10k_qca6174a-5
-	ath10k_qca6174a-3
-	ath10k_wcn3990
-	amdgpu_carrizo
-	amdgpu_picasso
-	amdgpu_raven2
-	amdgpu_renoir
-	amdgpu_stoney
-	amdgpu_vega12
-	bcm4354-bt
-	cros-pd
-	fw_sst
-	fw_sst2
-	i915_bxt
-	i915_cnl
-	i915_glk
-	i915_jsl
-	i915_kbl
-	i915_skl
-	i915_tgl
-	ibt_9260
-	ibt_9560
-	ibt_ax200
-	ibt_ax201
-	ibt-hw
-	ipu3_fw
-	keyspan_usb
-	marvell-mwlwifi
-	marvell-pcie8897
-	marvell-pcie8997
-	mt8173-vpu
-	nvidia-xusb
-	qca6174a-3-bt
-	qca6174a-5-bt
-	qca-wcn3990-bt
-	qca-wcn3991-bt
-	rockchip-dptx
-	rt2870
-	rtl8107e-1
-	rtl8107e-2
-	rtl8125a-3
-	rtl8153
-	rtl8168fp-3
-	rtl8168g-1
-	rtl8168g-2
-	rtl8168h-1
-	rtl8168h-2
-	rtl_bt-8822ce-uart
-	rtl_bt-8822ce-usb
-	rtw8822c
-	venus-52
-	venus-54
-	"${IUSE_ATH3K[@]}"
-	"${IUSE_IWLWIFI[@]}"
-	"${IUSE_BRCMWIFI[@]}"
-)
-IUSE="
-	${IUSE_KERNEL_VERS[*]}
-	${IUSE_LINUX_FIRMWARE[@]/#/linux_firmware_}
-	video_cards_radeon
-	video_cards_amdgpu"
-REQUIRED_USE="?? ( ${IUSE_KERNEL_VERS[*]} )"
-LICENSE="
-	linux_firmware_adreno-630? ( LICENSE.qcom )
-	linux_firmware_adsp_apl? ( LICENCE.adsp_sst )
-	linux_firmware_adsp_cnl? ( LICENCE.adsp_sst )
-	linux_firmware_adsp_glk? ( LICENCE.adsp_sst )
-	linux_firmware_adsp_kbl? ( LICENCE.adsp_sst )
-	linux_firmware_adsp_skl? ( LICENCE.adsp_sst )
-	linux_firmware_amdgpu_carrizo? ( LICENSE.amdgpu )
-	linux_firmware_amdgpu_picasso? ( LICENSE.amdgpu )
-	linux_firmware_amdgpu_raven2? ( LICENSE.amdgpu )
-	linux_firmware_amdgpu_renoir? ( LICENSE.amdgpu )
-	linux_firmware_amdgpu_stoney? ( LICENSE.amdgpu )
-	linux_firmware_amdgpu_vega12? ( LICENSE.amdgpu )
-	linux_firmware_ath3k-all? ( LICENCE.atheros_firmware )
-	linux_firmware_ath3k-ar3011? ( LICENCE.atheros_firmware )
-	linux_firmware_ath3k-ar3012? ( LICENCE.atheros_firmware )
-	linux_firmware_ath9k_htc? ( LICENCE.atheros_firmware )
-	linux_firmware_ath10k_qca6174a-5? ( LICENSE.QualcommAtheros_ath10k )
-	linux_firmware_ath10k_qca6174a-3? ( LICENSE.QualcommAtheros_ath10k )
-	linux_firmware_ath10k_wcn3990? ( LICENCE.atheros_firmware )
-	linux_firmware_bcm4354-bt? ( LICENCE.broadcom_bcm43xx )
-	linux_firmware_cros-pd? ( BSD-Google )
-	linux_firmware_fw_sst? ( LICENCE.fw_sst )
-	linux_firmware_fw_sst2? ( LICENCE.IntcSST2 )
-	linux_firmware_i915_bxt? ( LICENSE.i915 )
-	linux_firmware_i915_cnl? ( LICENSE.i915 )
-	linux_firmware_i915_glk? ( LICENSE.i915 )
-	linux_firmware_i915_jsl? ( LICENSE.i915 )
-	linux_firmware_i915_kbl? ( LICENSE.i915 )
-	linux_firmware_i915_skl? ( LICENSE.i915 )
-	linux_firmware_i915_tgl? ( LICENSE.i915 )
-	linux_firmware_ipu3_fw? ( LICENSE.ipu3_firmware )
-	linux_firmware_ibt_9260? ( LICENCE.ibt_firmware )
-	linux_firmware_ibt_9560? ( LICENCE.ibt_firmware )
-	linux_firmware_ibt_ax200? ( LICENCE.ibt_firmware )
-	linux_firmware_ibt_ax201? ( LICENCE.ibt_firmware )
-	linux_firmware_ibt-hw? ( LICENCE.ibt_firmware )
-	linux_firmware_keyspan_usb? ( LICENSE.keyspan_usb )
-	linux_firmware_marvell-mwlwifi? ( LICENCE.Marvell )
-	linux_firmware_marvell-pcie8897? ( LICENCE.Marvell )
-	linux_firmware_marvell-pcie8997? ( LICENCE.Marvell )
-	linux_firmware_mt8173-vpu? ( LICENCE.mediatek-vpu )
-	linux_firmware_nvidia-xusb? ( LICENCE.nvidia )
-	linux_firmware_qca6174a-3-bt? ( LICENSE.QualcommAtheros_ath10k )
-	linux_firmware_qca6174a-5-bt? ( LICENSE.QualcommAtheros_ath10k )
-	linux_firmware_qca-wcn3990-bt? ( LICENSE.QualcommAtheros_ath10k )
-	linux_firmware_qca-wcn3991-bt? ( LICENSE.QualcommAtheros_ath10k )
-	linux_firmware_rockchip-dptx? ( LICENCE.rockchip )
-	linux_firmware_rt2870? ( LICENCE.ralink-firmware.txt LICENCE.ralink_a_mediatek_company_firmware )
-	linux_firmware_rtl8107e-1? ( LICENCE.rtl_nic )
-	linux_firmware_rtl8107e-2? ( LICENCE.rtl_nic )
-	linux_firmware_rtl8125a-3? ( LICENCE.rtl_nic )
-	linux_firmware_rtl8153? ( LICENCE.rtlwifi_firmware )
-	linux_firmware_rtl8168fp-3? ( LICENCE.rtl_nic )
-	linux_firmware_rtl8168g-1? ( LICENCE.rtl_nic )
-	linux_firmware_rtl8168g-2? ( LICENCE.rtl_nic )
-	linux_firmware_rtl8168h-1? ( LICENCE.rtl_nic )
-	linux_firmware_rtl8168h-2? ( LICENCE.rtl_nic )
-	linux_firmware_rtl_bt-8822ce-uart? ( LICENCE.rtlwifi_firmware )
-	linux_firmware_rtl_bt-8822ce-usb? ( LICENCE.rtlwifi_firmware )
-	linux_firmware_rtw8822c? ( LICENCE.rtlwifi_firmware )
-	linux_firmware_venus-52? ( LICENSE.qcom )
-	linux_firmware_venus-54? ( LICENSE.qcom )
-	$(printf 'linux_firmware_%s? ( LICENCE.iwlwifi_firmware ) ' "${IUSE_IWLWIFI[@]}")
-	$(printf 'linux_firmware_%s? ( LICENCE.broadcom_bcm43xx ) ' "${IUSE_BRCMWIFI[@]}")
-	video_cards_radeon? ( LICENSE.radeon )
-	video_cards_amdgpu? ( LICENSE.amdgpu )
-"
-
-BDEPEND="
-	dev-lang/python
-	dev-vcs/git
-"
-
-RDEPEND="
-	linux_firmware_adreno-630? ( !media-libs/a630-fw )
-	linux_firmware_ath3k-all? ( !net-wireless/ath3k )
-	linux_firmware_ath3k-ar3011? ( !net-wireless/ath3k )
-	linux_firmware_ath3k-ar3012? ( !net-wireless/ath3k )
-	linux_firmware_keyspan_usb? (
-		!sys-kernel/chromeos-kernel-3_8[firmware_install]
-		!sys-kernel/chromeos-kernel-3_10[firmware_install]
-		!sys-kernel/chromeos-kernel-3_14[firmware_install]
-		!sys-kernel/chromeos-kernel-3_18[firmware_install]
-		!sys-kernel/chromeos-kernel-4_4[firmware_install]
-	)
-	linux_firmware_marvell-pcie8897? ( !net-wireless/marvell_sd8787[pcie] )
-	linux_firmware_marvell-pcie8997? ( !net-wireless/marvell_sd8787[pcie] )
-	linux_firmware_mt8173-vpu? ( !media-libs/vpu-fw )
-	linux_firmware_nvidia-xusb? ( !sys-kernel/xhci-firmware )
-	linux_firmware_rt2870? ( !net-wireless/realtek-rt2800-firmware )
-	!net-wireless/ath6k
-	!net-wireless/ath10k
-	!net-wireless/iwl1000-ucode
-	!net-wireless/iwl2000-ucode
-	!net-wireless/iwl2030-ucode
-	!net-wireless/iwl3945-ucode
-	!net-wireless/iwl4965-ucode
-	!net-wireless/iwl5000-ucode
-	!net-wireless/iwl6000-ucode
-	!net-wireless/iwl6005-ucode
-	!net-wireless/iwl6030-ucode
-	!net-wireless/iwl6050-ucode
-"
-
-RESTRICT="binchecks strip"
-
-FIRMWARE_INSTALL_ROOT="/lib/firmware"
-
-use_fw() {
-	use linux_firmware_$1
-}
-
-doins_subdir() {
-	# Avoid having this insinto command affecting later doins calls.
-	local file
-	for file in "${@}"; do
-		(
-		insinto "${FIRMWARE_INSTALL_ROOT}/${file%/*}"
-		doins "${file}"
-		)
-	done
-}
-
-install_iwlwifi() {
-	# We do not always need to detect the kernel version when all kernels
-	# have the same iwlwifi firmware version. However, this changes every so
-	# often for the 2 most recent kernels during bring up, where we can
-	# typically use a more recent firmware on the in-development board but
-	# keep the previous version for stable boards to avoid regressions.
-	# Keep the logic around to avoid having to rewrite it every single time.
-	local kernel=""
-	local k
-	for k in "${IUSE_KERNEL_VERS[@]}"; do
-		if use "${k}"; then
-			kernel="${k}"
-			break
-		fi
-	done
-	if [[ -z "${kernel}" ]]; then
-		einfo "No kernel USE flag set."
-		einfo "Expected if all kernels have the same iwlwifi firmware."
-	fi
-
-	for x in "${IUSE_IWLWIFI[@]}"; do
-		use_fw "${x}" || continue
-		case "${x}" in
-		iwlwifi-all)   doins iwlwifi-*.ucode ;;
-		iwlwifi-6005)  doins iwlwifi-6000g2a-*.ucode ;;
-		iwlwifi-6030)  doins iwlwifi-6000g2b-*.ucode ;;
-		iwlwifi-7260)  doins "${x}-17.ucode" ;;
-		iwlwifi-7265D) doins "${x}-29.ucode" ;;
-		iwlwifi-9000)  doins "${x}-pu-b0-jf-b0-46.ucode" ;;
-		iwlwifi-9260)  doins "${x}-th-b0-jf-b0-46.ucode" ;;
-		iwlwifi-cc)    doins "${x}-a0-61.ucode" ;;
-		iwlwifi-QuZ)
-			case "${kernel}" in
-			kernel-4_19) doins "${x}-a0-hr-b0-61.ucode" ;;
-			kernel-5_4)  doins "${x}-a0-hr-b0-61.ucode" ;;
-			kernel-upstream)  doins "${x}-a0-hr-b0-61.ucode" ;;
-			*)
-				ewarn "Unexpected kernel version '${kernel}'."
-				ewarn "Installing all '${x}' files."
-				doins "${x}"-*.ucode
-				;;
-			esac
-			;;
-		iwlwifi-*) doins "${x}"-*.ucode ;;
-		esac
-		# At least with EAPI 7, it's ok to call 'doins' with the same
-		# file multiple times. So an overlay declaring multiple
-		# 'iwlwifi-*' USE flags (e.g. volteer) won't break the build.
-		doins "iwl-dbg-cfg.ini"
-	done
-}
-
-src_install() {
-	local x
-	insinto "${FIRMWARE_INSTALL_ROOT}"
-	use_fw adreno-630 && doins_subdir qcom/a630*
-	use_fw adsp_apl && doins_subdir intel/dsp_fw_bxtn*
-	use_fw adsp_cnl && doins_subdir intel/dsp_fw_cnl*
-	use_fw adsp_glk && doins_subdir intel/dsp_fw_glk*
-	use_fw adsp_kbl && doins_subdir intel/dsp_fw_kbl*
-	use_fw adsp_skl && doins_subdir intel/dsp_fw_*
-	use_fw ath9k_htc && doins htc_*.fw
-	use_fw ath10k_qca6174a-5 && doins_subdir ath10k/QCA6174/hw3.0/{firmware-6,board-2}.bin
-	use_fw ath10k_qca6174a-3 && doins_subdir ath10k/QCA6174/hw3.0/{firmware-sdio-6,board-2}.bin
-	use_fw ath10k_wcn3990 && doins_subdir ath10k/WCN3990/hw1.0/*
-	use_fw bcm4354-bt && doins_subdir brcm/BCM4354_*.hcd
-	use_fw cros-pd && doins_subdir cros-pd/*
-	use_fw fw_sst && doins_subdir intel/fw_sst*
-	use_fw fw_sst2 && doins_subdir intel/IntcSST2.bin
-	use_fw i915_bxt && doins_subdir i915/bxt*
-	use_fw i915_cnl && doins_subdir i915/cnl*
-	use_fw i915_glk && doins_subdir i915/glk*
-	use_fw i915_jsl && doins_subdir i915/icl_dmc_ver1_09.bin && doins_subdir i915/ehl*
-	use_fw i915_kbl && doins_subdir i915/kbl*
-	use_fw i915_skl && doins_subdir i915/skl*
-	use_fw i915_tgl && doins_subdir i915/tgl*
-	use_fw ipu3_fw && doins_subdir intel/irci_*
-	use_fw ibt_9260 && doins_subdir intel/ibt-18-16-1.*
-	use_fw ibt_9560 && doins_subdir intel/ibt-17-16-1.*
-	use_fw ibt_ax200 && doins_subdir intel/ibt-20-*.*
-	use_fw ibt_ax201 && doins_subdir intel/ibt-19-*.*
-	use_fw ibt-hw && doins_subdir intel/ibt-hw-*.bseq
-	use_fw keyspan_usb && doins_subdir keyspan/*
-	use_fw marvell-mwlwifi && doins_subdir mwlwifi/*.bin
-	use_fw marvell-pcie8897 && doins_subdir mrvl/pcie8897_uapsta.bin
-	use_fw marvell-pcie8997 && doins_subdir mrvl/pcieusb8997_combo_v4.bin
-	use_fw mt8173-vpu && doins vpu_{d,p}.bin
-	use_fw nvidia-xusb && doins_subdir nvidia/tegra*/xusb.bin
-	use_fw qca6174a-3-bt && doins_subdir qca/{nvm,rampatch}_0044*.bin
-	use_fw qca6174a-5-bt && doins_subdir qca/{nvm,rampatch}_usb_*.bin
-	use_fw qca-wcn3990-bt && doins_subdir qca/{crbtfw21.tlv,crnv21.bin}
-	use_fw qca-wcn3991-bt && doins_subdir qca/{crbtfw32.tlv,crnv32.bin,crnv32u.bin}
-	use_fw rockchip-dptx && doins_subdir rockchip/dptx.bin
-	use_fw rtl8107e-1 && doins_subdir rtl_nic/rtl8107e-1.fw
-	use_fw rtl8107e-2 && doins_subdir rtl_nic/rtl8107e-2.fw
-	use_fw rtl8125a-3 && doins_subdir rtl_nic/rtl8125a-3.fw
-	use_fw rtl8153 && doins_subdir rtl_nic/rtl8153*.fw
-	use_fw rtl8168fp-3 && doins_subdir rtl_nic/rtl8168fp-3.fw
-	use_fw rtl8168g-1 && doins_subdir rtl_nic/rtl8168g-1.fw
-	use_fw rtl8168g-2 && doins_subdir rtl_nic/rtl8168g-2.fw
-	use_fw rtl8168h-1 && doins_subdir rtl_nic/rtl8168h-1.fw
-	use_fw rtl8168h-2 && doins_subdir rtl_nic/rtl8168h-2.fw
-	use_fw rtl_bt-8822ce-uart && doins_subdir rtl_bt/rtl8822cs*.bin
-	use_fw rtl_bt-8822ce-usb && doins_subdir rtl_bt/rtl8822cu*.bin
-	use_fw rtw8822c && doins_subdir rtw88/rtw8822c*.bin
-	use_fw venus-52 && doins_subdir qcom/venus-5.2/*
-	use_fw venus-54 && doins_subdir qcom/venus-5.4/*
-	use video_cards_radeon && doins_subdir radeon/*
-
-	local ignore_legacy_amdgpu=0
-
-	if use_fw amdgpu_carrizo; then
-		doins_subdir amdgpu/carrizo*
-		ignore_legacy_amdgpu=1
-	fi
-
-	if use_fw amdgpu_picasso; then
-		doins_subdir amdgpu/picasso*
-		ignore_legacy_amdgpu=1
-	fi
-
-	if use_fw amdgpu_raven2; then
-		doins_subdir amdgpu/raven_dmcu*
-		doins_subdir amdgpu/raven2*
-		ignore_legacy_amdgpu=1
-	fi
-
-	if use_fw amdgpu_renoir; then
-		doins_subdir amdgpu/renoir*
-		ignore_legacy_amdgpu=1
-	fi
-
-	if use_fw amdgpu_stoney; then
-		doins_subdir amdgpu/stoney*
-		ignore_legacy_amdgpu=1
-	fi
-
-	if use_fw amdgpu_vega12; then
-		doins_subdir amdgpu/vega12*
-		ignore_legacy_amdgpu=1
-	fi
-
-	# This use flag is deprecated and being removed
-	if [[ "${ignore_legacy_amdgpu}" -eq 0 ]] && use video_cards_amdgpu; then
-		doins_subdir amdgpu/{carrizo,picasso,raven_dmcu,raven2,stoney,vega12}*
-	fi
-
-	use_fw rt2870 && doins rt2870.bin
-
-	# The firmware here is a mess; install specific files by hand.
-	if use linux_firmware_ath3k-all || use linux_firmware_ath3k-ar3011; then
-		doins ath3k-1.fw
-	fi
-	if use linux_firmware_ath3k-all || use linux_firmware_ath3k-ar3012; then
-		(
-		insinto "${FIRMWARE_INSTALL_ROOT}/ar3k"
-		doins ar3k/*.dfu
-		)
-	fi
-
-	install_iwlwifi
-
-	for x in "${IUSE_BRCMWIFI[@]}"; do
-		use_fw ${x} || continue
-		case ${x} in
-		brcmfmac-all)      doins_subdir brcm/brcmfmac* ;;
-		brcmfmac4354-sdio) doins_subdir brcm/brcmfmac4354-sdio.* ;;
-		brcmfmac4356-pcie) doins_subdir brcm/brcmfmac4356-pcie.* ;;
-		brcmfmac4371-pcie) doins_subdir brcm/brcmfmac4371-pcie.* ;;
-		esac
-	done
-
-	# Hanle 'Link:' directives in WHENCE. The Makefile's copy-firmware.sh
-	# does this too, but we trim down the install list a lot, so we don't
-	# use that script.
-	local link target
-	while read -r link target; do
-		# ${target} is link-relative, so we need to construct a full path.
-		local install_target="${D}/${FIRMWARE_INSTALL_ROOT}/$(dirname "${link}")/${target}"
-		# Skip 'Link' directives for files we didn't install already.
-		[[ -f "${install_target}" ]] || continue
-		einfo "Creating link ${link} (${target})"
-		dodir "${FIRMWARE_INSTALL_ROOT}/$(dirname "${link}")"
-		dosym "${target}" "${FIRMWARE_INSTALL_ROOT}/${link}"
-	done < <(grep -E '^Link:' WHENCE | sed -e's/^Link: *//g' -e's/-> //g')
-}
-
-src_test() {
-	emake check
-}
diff --git a/sys-kernel/linux-firmware/linux-firmware-0.0.1-r467.ebuild b/sys-kernel/linux-firmware/linux-firmware-0.0.1-r467.ebuild
new file mode 100644
index 0000000..0287495
--- /dev/null
+++ b/sys-kernel/linux-firmware/linux-firmware-0.0.1-r467.ebuild
@@ -0,0 +1,473 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+CROS_WORKON_COMMIT="2e2a084dadf1acbe1dbf6abc54de66c8941fa561"
+CROS_WORKON_TREE="88bba44e96f96f30758702983502712897feeafa"
+CROS_WORKON_PROJECT="chromiumos/third_party/linux-firmware"
+CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_EGIT_BRANCH="master"
+
+inherit cros-workon
+
+DESCRIPTION="Firmware images from the upstream linux-fimware package"
+HOMEPAGE="https://git.kernel.org/cgit/linux/kernel/git/firmware/linux-firmware.git/"
+
+SLOT="0"
+KEYWORDS="*"
+
+
+IUSE_KERNEL_VERS=(
+	kernel-4_19
+	kernel-5_4
+	kernel-upstream
+)
+IUSE_ATH3K=(
+	ath3k-all
+	ath3k-ar3011
+	ath3k-ar3012
+)
+IUSE_IWLWIFI=(
+	iwlwifi-all
+	iwlwifi-100
+	iwlwifi-105
+	iwlwifi-135
+	iwlwifi-1000
+	iwlwifi-1000
+	iwlwifi-2000
+	iwlwifi-2030
+	iwlwifi-3160
+	iwlwifi-3945
+	iwlwifi-4965
+	iwlwifi-5000
+	iwlwifi-5150
+	iwlwifi-6000
+	iwlwifi-6005
+	iwlwifi-6030
+	iwlwifi-6050
+	iwlwifi-7260
+	iwlwifi-7265
+	iwlwifi-7265D
+	iwlwifi-9000
+	iwlwifi-9260
+	iwlwifi-cc
+	iwlwifi-QuZ
+)
+IUSE_BRCMWIFI=(
+	brcmfmac-all
+	brcmfmac4354-sdio
+	brcmfmac4356-pcie
+	brcmfmac4371-pcie
+)
+IUSE_LINUX_FIRMWARE=(
+	adreno-630
+	adreno-660
+	adsp_apl
+	adsp_cnl
+	adsp_glk
+	adsp_kbl
+	adsp_skl
+	ath9k_htc
+	ath10k_qca6174a-5
+	ath10k_qca6174a-3
+	ath10k_wcn3990
+	amdgpu_carrizo
+	amdgpu_green_sardine
+	amdgpu_picasso
+	amdgpu_raven2
+	amdgpu_renoir
+	amdgpu_stoney
+	amdgpu_vega12
+	bcm4354-bt
+	cros-pd
+	fw_sst
+	fw_sst2
+	i915_adl
+	i915_bxt
+	i915_cnl
+	i915_glk
+	i915_jsl
+	i915_kbl
+	i915_skl
+	i915_tgl
+	ibt_9260
+	ibt_9560
+	ibt_ax200
+	ibt_ax201
+	ibt-hw
+	ipu3_fw
+	keyspan_usb
+	marvell-mwlwifi
+	marvell-pcie8897
+	marvell-pcie8997
+	mt7921e
+	mt7921e-bt
+	mt8173-vpu
+	nvidia-xusb
+	qca6174a-3-bt
+	qca6174a-5-bt
+	qca-wcn3990-bt
+	qca-wcn3991-bt
+	rockchip-dptx
+	rt2870
+	rtl8107e-1
+	rtl8107e-2
+	rtl8125a-3
+	rtl8153
+	rtl8168fp-3
+	rtl8168g-1
+	rtl8168g-2
+	rtl8168h-1
+	rtl8168h-2
+	rtl_bt-8822ce-uart
+	rtl_bt-8822ce-usb
+	rtl_bt-8852ae-usb
+	rtw8822c
+	rtw8852a
+	venus-52
+	venus-54
+	"${IUSE_ATH3K[@]}"
+	"${IUSE_IWLWIFI[@]}"
+	"${IUSE_BRCMWIFI[@]}"
+)
+IUSE="
+	${IUSE_KERNEL_VERS[*]}
+	${IUSE_LINUX_FIRMWARE[@]/#/linux_firmware_}
+	video_cards_radeon
+	video_cards_amdgpu"
+REQUIRED_USE="?? ( ${IUSE_KERNEL_VERS[*]} )"
+LICENSE="
+	linux_firmware_adreno-630? ( LICENSE.qcom )
+	linux_firmware_adreno-660? ( LICENSE.qcom )
+	linux_firmware_adsp_apl? ( LICENCE.adsp_sst )
+	linux_firmware_adsp_cnl? ( LICENCE.adsp_sst )
+	linux_firmware_adsp_glk? ( LICENCE.adsp_sst )
+	linux_firmware_adsp_kbl? ( LICENCE.adsp_sst )
+	linux_firmware_adsp_skl? ( LICENCE.adsp_sst )
+	linux_firmware_amdgpu_carrizo? ( LICENSE.amdgpu )
+	linux_firmware_amdgpu_green_sardine? ( LICENSE.amdgpu )
+	linux_firmware_amdgpu_picasso? ( LICENSE.amdgpu )
+	linux_firmware_amdgpu_raven2? ( LICENSE.amdgpu )
+	linux_firmware_amdgpu_renoir? ( LICENSE.amdgpu )
+	linux_firmware_amdgpu_stoney? ( LICENSE.amdgpu )
+	linux_firmware_amdgpu_vega12? ( LICENSE.amdgpu )
+	linux_firmware_ath3k-all? ( LICENCE.atheros_firmware )
+	linux_firmware_ath3k-ar3011? ( LICENCE.atheros_firmware )
+	linux_firmware_ath3k-ar3012? ( LICENCE.atheros_firmware )
+	linux_firmware_ath9k_htc? ( LICENCE.atheros_firmware )
+	linux_firmware_ath10k_qca6174a-5? ( LICENSE.QualcommAtheros_ath10k )
+	linux_firmware_ath10k_qca6174a-3? ( LICENSE.QualcommAtheros_ath10k )
+	linux_firmware_ath10k_wcn3990? ( LICENCE.atheros_firmware )
+	linux_firmware_bcm4354-bt? ( LICENCE.broadcom_bcm43xx )
+	linux_firmware_cros-pd? ( BSD-Google )
+	linux_firmware_fw_sst? ( LICENCE.fw_sst )
+	linux_firmware_fw_sst2? ( LICENCE.IntcSST2 )
+	linux_firmware_i915_adl? ( LICENSE.i915 )
+	linux_firmware_i915_bxt? ( LICENSE.i915 )
+	linux_firmware_i915_cnl? ( LICENSE.i915 )
+	linux_firmware_i915_glk? ( LICENSE.i915 )
+	linux_firmware_i915_jsl? ( LICENSE.i915 )
+	linux_firmware_i915_kbl? ( LICENSE.i915 )
+	linux_firmware_i915_skl? ( LICENSE.i915 )
+	linux_firmware_i915_tgl? ( LICENSE.i915 )
+	linux_firmware_ipu3_fw? ( LICENSE.ipu3_firmware )
+	linux_firmware_ibt_9260? ( LICENCE.ibt_firmware )
+	linux_firmware_ibt_9560? ( LICENCE.ibt_firmware )
+	linux_firmware_ibt_ax200? ( LICENCE.ibt_firmware )
+	linux_firmware_ibt_ax201? ( LICENCE.ibt_firmware )
+	linux_firmware_ibt-hw? ( LICENCE.ibt_firmware )
+	linux_firmware_keyspan_usb? ( LICENSE.keyspan_usb )
+	linux_firmware_marvell-mwlwifi? ( LICENCE.Marvell )
+	linux_firmware_marvell-pcie8897? ( LICENCE.Marvell )
+	linux_firmware_marvell-pcie8997? ( LICENCE.Marvell )
+	linux_firmware_mt7921e? ( LICENCE.mediatek-nic )
+	linux_firmware_mt7921e-bt? ( LICENCE.mediatek-nic )
+	linux_firmware_mt8173-vpu? ( LICENCE.mediatek-vpu )
+	linux_firmware_nvidia-xusb? ( LICENCE.nvidia )
+	linux_firmware_qca6174a-3-bt? ( LICENSE.QualcommAtheros_ath10k )
+	linux_firmware_qca6174a-5-bt? ( LICENSE.QualcommAtheros_ath10k )
+	linux_firmware_qca-wcn3990-bt? ( LICENSE.QualcommAtheros_ath10k )
+	linux_firmware_qca-wcn3991-bt? ( LICENSE.QualcommAtheros_ath10k )
+	linux_firmware_rockchip-dptx? ( LICENCE.rockchip )
+	linux_firmware_rt2870? ( LICENCE.ralink-firmware.txt LICENCE.ralink_a_mediatek_company_firmware )
+	linux_firmware_rtl8107e-1? ( LICENCE.rtl_nic )
+	linux_firmware_rtl8107e-2? ( LICENCE.rtl_nic )
+	linux_firmware_rtl8125a-3? ( LICENCE.rtl_nic )
+	linux_firmware_rtl8153? ( LICENCE.rtlwifi_firmware )
+	linux_firmware_rtl8168fp-3? ( LICENCE.rtl_nic )
+	linux_firmware_rtl8168g-1? ( LICENCE.rtl_nic )
+	linux_firmware_rtl8168g-2? ( LICENCE.rtl_nic )
+	linux_firmware_rtl8168h-1? ( LICENCE.rtl_nic )
+	linux_firmware_rtl8168h-2? ( LICENCE.rtl_nic )
+	linux_firmware_rtl_bt-8822ce-uart? ( LICENCE.rtlwifi_firmware )
+	linux_firmware_rtl_bt-8822ce-usb? ( LICENCE.rtlwifi_firmware )
+	linux_firmware_rtl_bt-8852ae-usb? ( LICENCE.rtlwifi_firmware )
+	linux_firmware_rtw8822c? ( LICENCE.rtlwifi_firmware )
+	linux_firmware_rtw8852a? ( LICENCE.rtlwifi_firmware )
+	linux_firmware_venus-52? ( LICENSE.qcom )
+	linux_firmware_venus-54? ( LICENSE.qcom )
+	$(printf 'linux_firmware_%s? ( LICENCE.iwlwifi_firmware ) ' "${IUSE_IWLWIFI[@]}")
+	$(printf 'linux_firmware_%s? ( LICENCE.broadcom_bcm43xx ) ' "${IUSE_BRCMWIFI[@]}")
+	video_cards_radeon? ( LICENSE.radeon )
+	video_cards_amdgpu? ( LICENSE.amdgpu )
+"
+
+BDEPEND="
+	dev-lang/python
+	dev-vcs/git
+"
+
+RDEPEND="
+	linux_firmware_adreno-630? ( !media-libs/a630-fw )
+	linux_firmware_adreno-630? ( !media-libs/a660-fw )
+	linux_firmware_ath3k-all? ( !net-wireless/ath3k )
+	linux_firmware_ath3k-ar3011? ( !net-wireless/ath3k )
+	linux_firmware_ath3k-ar3012? ( !net-wireless/ath3k )
+	linux_firmware_keyspan_usb? (
+		!sys-kernel/chromeos-kernel-3_18[firmware_install]
+		!sys-kernel/chromeos-kernel-4_4[firmware_install]
+	)
+	linux_firmware_marvell-pcie8897? ( !net-wireless/marvell_sd8787[pcie] )
+	linux_firmware_marvell-pcie8997? ( !net-wireless/marvell_sd8787[pcie] )
+	linux_firmware_mt8173-vpu? ( !media-libs/vpu-fw )
+	linux_firmware_nvidia-xusb? ( !sys-kernel/xhci-firmware )
+	linux_firmware_rt2870? ( !net-wireless/realtek-rt2800-firmware )
+	!net-wireless/ath6k
+	!net-wireless/ath10k
+	!net-wireless/iwl1000-ucode
+	!net-wireless/iwl2000-ucode
+	!net-wireless/iwl2030-ucode
+	!net-wireless/iwl3945-ucode
+	!net-wireless/iwl4965-ucode
+	!net-wireless/iwl5000-ucode
+	!net-wireless/iwl6000-ucode
+	!net-wireless/iwl6005-ucode
+	!net-wireless/iwl6030-ucode
+	!net-wireless/iwl6050-ucode
+"
+
+RESTRICT="binchecks strip"
+
+FIRMWARE_INSTALL_ROOT="/lib/firmware"
+
+use_fw() {
+	use linux_firmware_$1
+}
+
+doins_subdir() {
+	# Avoid having this insinto command affecting later doins calls.
+	local file
+	for file in "${@}"; do
+		(
+		insinto "${FIRMWARE_INSTALL_ROOT}/${file%/*}"
+		doins "${file}"
+		)
+	done
+}
+
+install_iwlwifi() {
+	# We do not always need to detect the kernel version when all kernels
+	# have the same iwlwifi firmware version. However, this changes every so
+	# often for the 2 most recent kernels during bring up, where we can
+	# typically use a more recent firmware on the in-development board but
+	# keep the previous version for stable boards to avoid regressions.
+	# Keep the logic around to avoid having to rewrite it every single time.
+	local kernel=""
+	local k
+	for k in "${IUSE_KERNEL_VERS[@]}"; do
+		if use "${k}"; then
+			kernel="${k}"
+			break
+		fi
+	done
+	if [[ -z "${kernel}" ]]; then
+		einfo "No kernel USE flag set."
+		einfo "Expected if all kernels have the same iwlwifi firmware."
+	fi
+
+	for x in "${IUSE_IWLWIFI[@]}"; do
+		use_fw "${x}" || continue
+		case "${x}" in
+		iwlwifi-all)   doins iwlwifi-*.ucode ;;
+		iwlwifi-6005)  doins iwlwifi-6000g2a-*.ucode ;;
+		iwlwifi-6030)  doins iwlwifi-6000g2b-*.ucode ;;
+		iwlwifi-7260)  doins "${x}-17.ucode" ;;
+		iwlwifi-7265D) doins "${x}-29.ucode" ;;
+		iwlwifi-9000)  doins "${x}-pu-b0-jf-b0-46.ucode" ;;
+		iwlwifi-9260)  doins "${x}-th-b0-jf-b0-46.ucode" ;;
+		iwlwifi-cc)
+			case "${kernel}" in
+			kernel-upstream) doins "${x}-a0-62.ucode" ;;
+			*)               doins "${x}-a0-65.ucode" ;;
+			esac
+			;;
+		iwlwifi-QuZ)
+			case "${kernel}" in
+			kernel-4_19) doins "${x}-a0-hr-b0-65.ucode" ;;
+			kernel-5_4)  doins "${x}-a0-hr-b0-65.ucode" ;;
+			kernel-upstream)  doins "${x}-a0-hr-b0-62.ucode" ;;
+			*)
+				ewarn "Unexpected kernel version '${kernel}'."
+				ewarn "Installing all '${x}' files."
+				doins "${x}"-*.ucode
+				;;
+			esac
+			;;
+		iwlwifi-*) doins "${x}"-*.ucode ;;
+		esac
+		# At least with EAPI 7, it's ok to call 'doins' with the same
+		# file multiple times. So an overlay declaring multiple
+		# 'iwlwifi-*' USE flags (e.g. volteer) won't break the build.
+		doins "iwl-dbg-cfg.ini"
+	done
+}
+
+src_install() {
+	local x
+	insinto "${FIRMWARE_INSTALL_ROOT}"
+	use_fw adreno-630 && doins_subdir qcom/a630*
+	use_fw adreno-660 && doins_subdir qcom/a660*
+	use_fw adsp_apl && doins_subdir intel/dsp_fw_bxtn*
+	use_fw adsp_cnl && doins_subdir intel/dsp_fw_cnl*
+	use_fw adsp_glk && doins_subdir intel/dsp_fw_glk*
+	use_fw adsp_kbl && doins_subdir intel/dsp_fw_kbl*
+	use_fw adsp_skl && doins_subdir intel/dsp_fw_*
+	use_fw ath9k_htc && doins htc_*.fw
+	use_fw ath10k_qca6174a-5 && doins_subdir ath10k/QCA6174/hw3.0/{firmware-6,board-2}.bin
+	use_fw ath10k_qca6174a-3 && doins_subdir ath10k/QCA6174/hw3.0/{firmware-sdio-6,board-2}.bin
+	use_fw ath10k_wcn3990 && doins_subdir ath10k/WCN3990/hw1.0/*
+	use_fw bcm4354-bt && doins_subdir brcm/BCM4354_*.hcd
+	use_fw cros-pd && doins_subdir cros-pd/*
+	use_fw fw_sst && doins_subdir intel/fw_sst*
+	use_fw fw_sst2 && doins_subdir intel/IntcSST2.bin
+	use_fw i915_adl && doins_subdir i915/adl*
+	use_fw i915_bxt && doins_subdir i915/bxt*
+	use_fw i915_cnl && doins_subdir i915/cnl*
+	use_fw i915_glk && doins_subdir i915/glk*
+	use_fw i915_jsl && doins_subdir i915/icl_dmc_ver1_09.bin && doins_subdir i915/ehl*
+	use_fw i915_kbl && doins_subdir i915/kbl*
+	use_fw i915_skl && doins_subdir i915/skl*
+	use_fw i915_tgl && doins_subdir i915/tgl*
+	use_fw ipu3_fw && doins_subdir intel/irci_*
+	use_fw ibt_9260 && doins_subdir intel/ibt-18-16-1.*
+	use_fw ibt_9560 && doins_subdir intel/ibt-17-16-1.*
+	use_fw ibt_ax200 && doins_subdir intel/ibt-20-*.*
+	use_fw ibt_ax201 && doins_subdir intel/ibt-19-*.*
+	use_fw ibt-hw && doins_subdir intel/ibt-hw-*.bseq
+	use_fw keyspan_usb && doins_subdir keyspan/*
+	use_fw marvell-mwlwifi && doins_subdir mwlwifi/*.bin
+	use_fw marvell-pcie8897 && doins_subdir mrvl/pcie8897_uapsta.bin
+	use_fw marvell-pcie8997 && doins_subdir mrvl/pcieusb8997_combo_v4.bin
+	use_fw mt7921e && doins_subdir mediatek/WIFI_{MT7961_patch_mcu_1_2_hdr,RAM_CODE_MT7961_1}.bin
+	use_fw mt7921e-bt && doins_subdir mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin
+	use_fw mt8173-vpu && doins vpu_{d,p}.bin
+	use_fw nvidia-xusb && doins_subdir nvidia/tegra*/xusb.bin
+	use_fw qca6174a-3-bt && doins_subdir qca/{nvm,rampatch}_0044*.bin
+	use_fw qca6174a-5-bt && doins_subdir qca/{nvm,rampatch}_usb_*.bin
+	use_fw qca-wcn3990-bt && doins_subdir qca/{crbtfw21.tlv,crnv21.bin}
+	use_fw qca-wcn3991-bt && doins_subdir qca/{crbtfw32.tlv,crnv32.bin,crnv32u.bin}
+	use_fw rockchip-dptx && doins_subdir rockchip/dptx.bin
+	use_fw rtl8107e-1 && doins_subdir rtl_nic/rtl8107e-1.fw
+	use_fw rtl8107e-2 && doins_subdir rtl_nic/rtl8107e-2.fw
+	use_fw rtl8125a-3 && doins_subdir rtl_nic/rtl8125a-3.fw
+	use_fw rtl8153 && doins_subdir rtl_nic/rtl8153*.fw
+	use_fw rtl8168fp-3 && doins_subdir rtl_nic/rtl8168fp-3.fw
+	use_fw rtl8168g-1 && doins_subdir rtl_nic/rtl8168g-1.fw
+	use_fw rtl8168g-2 && doins_subdir rtl_nic/rtl8168g-2.fw
+	use_fw rtl8168h-1 && doins_subdir rtl_nic/rtl8168h-1.fw
+	use_fw rtl8168h-2 && doins_subdir rtl_nic/rtl8168h-2.fw
+	use_fw rtl_bt-8822ce-uart && doins_subdir rtl_bt/rtl8822cs*.bin
+	use_fw rtl_bt-8822ce-usb && doins_subdir rtl_bt/rtl8822cu*.bin
+	use_fw rtl_bt-8852ae-usb && doins_subdir rtl_bt/rtl8852au*.bin
+	use_fw rtw8822c && doins_subdir rtw88/rtw8822c*.bin
+	use_fw rtw8852a && doins_subdir rtw89/rtw8852a*.bin
+	use_fw venus-52 && doins_subdir qcom/venus-5.2/*
+	use_fw venus-54 && doins_subdir qcom/venus-5.4/*
+	use video_cards_radeon && doins_subdir radeon/*
+
+	local ignore_legacy_amdgpu=0
+
+	if use_fw amdgpu_carrizo; then
+		doins_subdir amdgpu/carrizo*
+		ignore_legacy_amdgpu=1
+	fi
+
+	if use_fw amdgpu_green_sardine; then
+		doins_subdir amdgpu/green_sardine*
+		ignore_legacy_amdgpu=1
+	fi
+
+	if use_fw amdgpu_picasso; then
+		doins_subdir amdgpu/picasso*
+		ignore_legacy_amdgpu=1
+	fi
+
+	if use_fw amdgpu_raven2; then
+		doins_subdir amdgpu/raven_dmcu*
+		doins_subdir amdgpu/raven2*
+		ignore_legacy_amdgpu=1
+	fi
+
+	if use_fw amdgpu_renoir; then
+		doins_subdir amdgpu/renoir*
+		ignore_legacy_amdgpu=1
+	fi
+
+	if use_fw amdgpu_stoney; then
+		doins_subdir amdgpu/stoney*
+		ignore_legacy_amdgpu=1
+	fi
+
+	if use_fw amdgpu_vega12; then
+		doins_subdir amdgpu/vega12*
+		ignore_legacy_amdgpu=1
+	fi
+
+	# This use flag is deprecated and being removed
+	if [[ "${ignore_legacy_amdgpu}" -eq 0 ]] && use video_cards_amdgpu; then
+		doins_subdir amdgpu/{carrizo,picasso,raven_dmcu,raven2,stoney,vega12}*
+	fi
+
+	use_fw rt2870 && doins rt2870.bin
+
+	# The firmware here is a mess; install specific files by hand.
+	if use linux_firmware_ath3k-all || use linux_firmware_ath3k-ar3011; then
+		doins ath3k-1.fw
+	fi
+	if use linux_firmware_ath3k-all || use linux_firmware_ath3k-ar3012; then
+		(
+		insinto "${FIRMWARE_INSTALL_ROOT}/ar3k"
+		doins ar3k/*.dfu
+		)
+	fi
+
+	install_iwlwifi
+
+	for x in "${IUSE_BRCMWIFI[@]}"; do
+		use_fw ${x} || continue
+		case ${x} in
+		brcmfmac-all)      doins_subdir brcm/brcmfmac* ;;
+		brcmfmac4354-sdio) doins_subdir brcm/brcmfmac4354-sdio.* ;;
+		brcmfmac4356-pcie) doins_subdir brcm/brcmfmac4356-pcie.* ;;
+		brcmfmac4371-pcie) doins_subdir brcm/brcmfmac4371-pcie.* ;;
+		esac
+	done
+
+	# Hanle 'Link:' directives in WHENCE. The Makefile's copy-firmware.sh
+	# does this too, but we trim down the install list a lot, so we don't
+	# use that script.
+	local link target
+	while read -r link target; do
+		# ${target} is link-relative, so we need to construct a full path.
+		local install_target="${D}/${FIRMWARE_INSTALL_ROOT}/$(dirname "${link}")/${target}"
+		# Skip 'Link' directives for files we didn't install already.
+		[[ -f "${install_target}" ]] || continue
+		einfo "Creating link ${link} (${target})"
+		dodir "${FIRMWARE_INSTALL_ROOT}/$(dirname "${link}")"
+		dosym "${target}" "${FIRMWARE_INSTALL_ROOT}/${link}"
+	done < <(grep -E '^Link:' WHENCE | sed -e's/^Link: *//g' -e's/-> //g')
+}
+
+src_test() {
+	emake check
+}
diff --git a/sys-kernel/linux-firmware/linux-firmware-9999.ebuild b/sys-kernel/linux-firmware/linux-firmware-9999.ebuild
index 39747b5..2ac89f2 100644
--- a/sys-kernel/linux-firmware/linux-firmware-9999.ebuild
+++ b/sys-kernel/linux-firmware/linux-firmware-9999.ebuild
@@ -4,6 +4,7 @@
 EAPI="7"
 CROS_WORKON_PROJECT="chromiumos/third_party/linux-firmware"
 CROS_WORKON_OUTOFTREE_BUILD=1
+CROS_WORKON_EGIT_BRANCH="master"
 
 inherit cros-workon
 
@@ -58,6 +59,7 @@
 )
 IUSE_LINUX_FIRMWARE=(
 	adreno-630
+	adreno-660
 	adsp_apl
 	adsp_cnl
 	adsp_glk
@@ -68,6 +70,7 @@
 	ath10k_qca6174a-3
 	ath10k_wcn3990
 	amdgpu_carrizo
+	amdgpu_green_sardine
 	amdgpu_picasso
 	amdgpu_raven2
 	amdgpu_renoir
@@ -77,6 +80,7 @@
 	cros-pd
 	fw_sst
 	fw_sst2
+	i915_adl
 	i915_bxt
 	i915_cnl
 	i915_glk
@@ -94,6 +98,8 @@
 	marvell-mwlwifi
 	marvell-pcie8897
 	marvell-pcie8997
+	mt7921e
+	mt7921e-bt
 	mt8173-vpu
 	nvidia-xusb
 	qca6174a-3-bt
@@ -113,7 +119,9 @@
 	rtl8168h-2
 	rtl_bt-8822ce-uart
 	rtl_bt-8822ce-usb
+	rtl_bt-8852ae-usb
 	rtw8822c
+	rtw8852a
 	venus-52
 	venus-54
 	"${IUSE_ATH3K[@]}"
@@ -128,12 +136,14 @@
 REQUIRED_USE="?? ( ${IUSE_KERNEL_VERS[*]} )"
 LICENSE="
 	linux_firmware_adreno-630? ( LICENSE.qcom )
+	linux_firmware_adreno-660? ( LICENSE.qcom )
 	linux_firmware_adsp_apl? ( LICENCE.adsp_sst )
 	linux_firmware_adsp_cnl? ( LICENCE.adsp_sst )
 	linux_firmware_adsp_glk? ( LICENCE.adsp_sst )
 	linux_firmware_adsp_kbl? ( LICENCE.adsp_sst )
 	linux_firmware_adsp_skl? ( LICENCE.adsp_sst )
 	linux_firmware_amdgpu_carrizo? ( LICENSE.amdgpu )
+	linux_firmware_amdgpu_green_sardine? ( LICENSE.amdgpu )
 	linux_firmware_amdgpu_picasso? ( LICENSE.amdgpu )
 	linux_firmware_amdgpu_raven2? ( LICENSE.amdgpu )
 	linux_firmware_amdgpu_renoir? ( LICENSE.amdgpu )
@@ -150,6 +160,7 @@
 	linux_firmware_cros-pd? ( BSD-Google )
 	linux_firmware_fw_sst? ( LICENCE.fw_sst )
 	linux_firmware_fw_sst2? ( LICENCE.IntcSST2 )
+	linux_firmware_i915_adl? ( LICENSE.i915 )
 	linux_firmware_i915_bxt? ( LICENSE.i915 )
 	linux_firmware_i915_cnl? ( LICENSE.i915 )
 	linux_firmware_i915_glk? ( LICENSE.i915 )
@@ -167,6 +178,8 @@
 	linux_firmware_marvell-mwlwifi? ( LICENCE.Marvell )
 	linux_firmware_marvell-pcie8897? ( LICENCE.Marvell )
 	linux_firmware_marvell-pcie8997? ( LICENCE.Marvell )
+	linux_firmware_mt7921e? ( LICENCE.mediatek-nic )
+	linux_firmware_mt7921e-bt? ( LICENCE.mediatek-nic )
 	linux_firmware_mt8173-vpu? ( LICENCE.mediatek-vpu )
 	linux_firmware_nvidia-xusb? ( LICENCE.nvidia )
 	linux_firmware_qca6174a-3-bt? ( LICENSE.QualcommAtheros_ath10k )
@@ -186,7 +199,9 @@
 	linux_firmware_rtl8168h-2? ( LICENCE.rtl_nic )
 	linux_firmware_rtl_bt-8822ce-uart? ( LICENCE.rtlwifi_firmware )
 	linux_firmware_rtl_bt-8822ce-usb? ( LICENCE.rtlwifi_firmware )
+	linux_firmware_rtl_bt-8852ae-usb? ( LICENCE.rtlwifi_firmware )
 	linux_firmware_rtw8822c? ( LICENCE.rtlwifi_firmware )
+	linux_firmware_rtw8852a? ( LICENCE.rtlwifi_firmware )
 	linux_firmware_venus-52? ( LICENSE.qcom )
 	linux_firmware_venus-54? ( LICENSE.qcom )
 	$(printf 'linux_firmware_%s? ( LICENCE.iwlwifi_firmware ) ' "${IUSE_IWLWIFI[@]}")
@@ -202,13 +217,11 @@
 
 RDEPEND="
 	linux_firmware_adreno-630? ( !media-libs/a630-fw )
+	linux_firmware_adreno-630? ( !media-libs/a660-fw )
 	linux_firmware_ath3k-all? ( !net-wireless/ath3k )
 	linux_firmware_ath3k-ar3011? ( !net-wireless/ath3k )
 	linux_firmware_ath3k-ar3012? ( !net-wireless/ath3k )
 	linux_firmware_keyspan_usb? (
-		!sys-kernel/chromeos-kernel-3_8[firmware_install]
-		!sys-kernel/chromeos-kernel-3_10[firmware_install]
-		!sys-kernel/chromeos-kernel-3_14[firmware_install]
 		!sys-kernel/chromeos-kernel-3_18[firmware_install]
 		!sys-kernel/chromeos-kernel-4_4[firmware_install]
 	)
@@ -280,12 +293,17 @@
 		iwlwifi-7265D) doins "${x}-29.ucode" ;;
 		iwlwifi-9000)  doins "${x}-pu-b0-jf-b0-46.ucode" ;;
 		iwlwifi-9260)  doins "${x}-th-b0-jf-b0-46.ucode" ;;
-		iwlwifi-cc)    doins "${x}-a0-61.ucode" ;;
+		iwlwifi-cc)
+			case "${kernel}" in
+			kernel-upstream) doins "${x}-a0-62.ucode" ;;
+			*)               doins "${x}-a0-65.ucode" ;;
+			esac
+			;;
 		iwlwifi-QuZ)
 			case "${kernel}" in
-			kernel-4_19) doins "${x}-a0-hr-b0-61.ucode" ;;
-			kernel-5_4)  doins "${x}-a0-hr-b0-61.ucode" ;;
-			kernel-upstream)  doins "${x}-a0-hr-b0-61.ucode" ;;
+			kernel-4_19) doins "${x}-a0-hr-b0-65.ucode" ;;
+			kernel-5_4)  doins "${x}-a0-hr-b0-65.ucode" ;;
+			kernel-upstream)  doins "${x}-a0-hr-b0-62.ucode" ;;
 			*)
 				ewarn "Unexpected kernel version '${kernel}'."
 				ewarn "Installing all '${x}' files."
@@ -306,6 +324,7 @@
 	local x
 	insinto "${FIRMWARE_INSTALL_ROOT}"
 	use_fw adreno-630 && doins_subdir qcom/a630*
+	use_fw adreno-660 && doins_subdir qcom/a660*
 	use_fw adsp_apl && doins_subdir intel/dsp_fw_bxtn*
 	use_fw adsp_cnl && doins_subdir intel/dsp_fw_cnl*
 	use_fw adsp_glk && doins_subdir intel/dsp_fw_glk*
@@ -319,6 +338,7 @@
 	use_fw cros-pd && doins_subdir cros-pd/*
 	use_fw fw_sst && doins_subdir intel/fw_sst*
 	use_fw fw_sst2 && doins_subdir intel/IntcSST2.bin
+	use_fw i915_adl && doins_subdir i915/adl*
 	use_fw i915_bxt && doins_subdir i915/bxt*
 	use_fw i915_cnl && doins_subdir i915/cnl*
 	use_fw i915_glk && doins_subdir i915/glk*
@@ -336,6 +356,8 @@
 	use_fw marvell-mwlwifi && doins_subdir mwlwifi/*.bin
 	use_fw marvell-pcie8897 && doins_subdir mrvl/pcie8897_uapsta.bin
 	use_fw marvell-pcie8997 && doins_subdir mrvl/pcieusb8997_combo_v4.bin
+	use_fw mt7921e && doins_subdir mediatek/WIFI_{MT7961_patch_mcu_1_2_hdr,RAM_CODE_MT7961_1}.bin
+	use_fw mt7921e-bt && doins_subdir mediatek/BT_RAM_CODE_MT7961_1_2_hdr.bin
 	use_fw mt8173-vpu && doins vpu_{d,p}.bin
 	use_fw nvidia-xusb && doins_subdir nvidia/tegra*/xusb.bin
 	use_fw qca6174a-3-bt && doins_subdir qca/{nvm,rampatch}_0044*.bin
@@ -354,7 +376,9 @@
 	use_fw rtl8168h-2 && doins_subdir rtl_nic/rtl8168h-2.fw
 	use_fw rtl_bt-8822ce-uart && doins_subdir rtl_bt/rtl8822cs*.bin
 	use_fw rtl_bt-8822ce-usb && doins_subdir rtl_bt/rtl8822cu*.bin
+	use_fw rtl_bt-8852ae-usb && doins_subdir rtl_bt/rtl8852au*.bin
 	use_fw rtw8822c && doins_subdir rtw88/rtw8822c*.bin
+	use_fw rtw8852a && doins_subdir rtw89/rtw8852a*.bin
 	use_fw venus-52 && doins_subdir qcom/venus-5.2/*
 	use_fw venus-54 && doins_subdir qcom/venus-5.4/*
 	use video_cards_radeon && doins_subdir radeon/*
@@ -366,6 +390,11 @@
 		ignore_legacy_amdgpu=1
 	fi
 
+	if use_fw amdgpu_green_sardine; then
+		doins_subdir amdgpu/green_sardine*
+		ignore_legacy_amdgpu=1
+	fi
+
 	if use_fw amdgpu_picasso; then
 		doins_subdir amdgpu/picasso*
 		ignore_legacy_amdgpu=1
diff --git a/sys-kernel/linux-headers/files/0012-FROMLIST-media-rkisp1-Add-user-space-ABI-definitions.patch b/sys-kernel/linux-headers/files/0012-FROMLIST-media-rkisp1-Add-user-space-ABI-definitions.patch
index 18fca33..032acbc 100644
--- a/sys-kernel/linux-headers/files/0012-FROMLIST-media-rkisp1-Add-user-space-ABI-definitions.patch
+++ b/sys-kernel/linux-headers/files/0012-FROMLIST-media-rkisp1-Add-user-space-ABI-definitions.patch
@@ -1,32 +1,27 @@
-From 0e069f663beddca2d3652393b57e91a281e9d426 Mon Sep 17 00:00:00 2001
-From: Jeffy Chen <jeffy.chen@rock-chips.com>
-Date: Mon, 18 Dec 2017 20:03:07 +0800
-Subject: [PATCH] FROMLIST: media: rkisp1: Add user space ABI definitions
+From 5d11d26bfcfb6b418f22107e6d04761172152b91 Mon Sep 17 00:00:00 2001
+From: Ricardo Ribalda <ribalda@chromium.org>
+Date: Thu, 21 Jan 2021 18:53:53 +0100
+Subject: [PATCH] BACKPORT: add rkisp1 header file
 
-Add the header for userspace
+This is the userspace interface for Rockchip RKISP1 camera ISP. File
+copied from upstream at v5.11rc5.
 
-Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
-Signed-off-by: Jacob Chen <jacob2.chen@rock-chips.com>
-
-BUG=b:36227021
-TEST=Camera works on Scarlet with the whole series
-(am from https://patchwork.linuxtv.org/patch/46245/)
-
-Change-Id: I2ae3db2f719c4a5de2dc631a5692b333effe5ea3
+Last commit modifying the file:
+media: rockchip: rkisp1: extend uapi array sizes
 ---
- include/uapi/linux/rkisp1-config.h | 757 +++++++++++++++++++++++++++++
- 1 file changed, 757 insertions(+)
+ include/uapi/linux/rkisp1-config.h | 950 +++++++++++++++++++++++++++++
+ 1 file changed, 950 insertions(+)
  create mode 100644 include/uapi/linux/rkisp1-config.h
 
 diff --git a/include/uapi/linux/rkisp1-config.h b/include/uapi/linux/rkisp1-config.h
 new file mode 100644
-index 000000000000..0f9f42265a7a
+index 000000000000..36e3efb81b01
 --- /dev/null
 +++ b/include/uapi/linux/rkisp1-config.h
-@@ -0,0 +1,757 @@
-+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+@@ -0,0 +1,950 @@
++/* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR MIT) */
 +/*
-+ * Rockchip isp1 driver
++ * Rockchip ISP1 userspace API
 + * Copyright (C) 2017 Rockchip Electronics Co., Ltd.
 + */
 +
@@ -34,157 +29,208 @@
 +#define _UAPI_RKISP1_CONFIG_H
 +
 +#include <linux/types.h>
-+#include <linux/v4l2-controls.h>
 +
-+#define CIFISP_MODULE_DPCC              (1 << 0)
-+#define CIFISP_MODULE_BLS               (1 << 1)
-+#define CIFISP_MODULE_SDG               (1 << 2)
-+#define CIFISP_MODULE_HST               (1 << 3)
-+#define CIFISP_MODULE_LSC               (1 << 4)
-+#define CIFISP_MODULE_AWB_GAIN          (1 << 5)
-+#define CIFISP_MODULE_FLT               (1 << 6)
-+#define CIFISP_MODULE_BDM               (1 << 7)
-+#define CIFISP_MODULE_CTK               (1 << 8)
-+#define CIFISP_MODULE_GOC               (1 << 9)
-+#define CIFISP_MODULE_CPROC             (1 << 10)
-+#define CIFISP_MODULE_AFC               (1 << 11)
-+#define CIFISP_MODULE_AWB               (1 << 12)
-+#define CIFISP_MODULE_IE                (1 << 13)
-+#define CIFISP_MODULE_AEC               (1 << 14)
-+#define CIFISP_MODULE_WDR               (1 << 15)
-+#define CIFISP_MODULE_DPF               (1 << 16)
-+#define CIFISP_MODULE_DPF_STRENGTH      (1 << 17)
++/* Defect Pixel Cluster Detection */
++#define RKISP1_CIF_ISP_MODULE_DPCC		(1U << 0)
++/* Black Level Subtraction */
++#define RKISP1_CIF_ISP_MODULE_BLS		(1U << 1)
++/* Sensor De-gamma */
++#define RKISP1_CIF_ISP_MODULE_SDG		(1U << 2)
++/* Histogram */
++#define RKISP1_CIF_ISP_MODULE_HST		(1U << 3)
++/* Lens Shade Control */
++#define RKISP1_CIF_ISP_MODULE_LSC		(1U << 4)
++/* Auto White Balance Gain */
++#define RKISP1_CIF_ISP_MODULE_AWB_GAIN		(1U << 5)
++/* Filter */
++#define RKISP1_CIF_ISP_MODULE_FLT		(1U << 6)
++/* Bayer Demosaic */
++#define RKISP1_CIF_ISP_MODULE_BDM		(1U << 7)
++/* Cross Talk */
++#define RKISP1_CIF_ISP_MODULE_CTK		(1U << 8)
++/* Gamma Out Curve */
++#define RKISP1_CIF_ISP_MODULE_GOC		(1U << 9)
++/* Color Processing */
++#define RKISP1_CIF_ISP_MODULE_CPROC		(1U << 10)
++/* Auto Focus Control */
++#define RKISP1_CIF_ISP_MODULE_AFC		(1U << 11)
++/* Auto White Balancing */
++#define RKISP1_CIF_ISP_MODULE_AWB		(1U << 12)
++/* Image Effect */
++#define RKISP1_CIF_ISP_MODULE_IE		(1U << 13)
++/* Auto Exposure Control */
++#define RKISP1_CIF_ISP_MODULE_AEC		(1U << 14)
++/* Wide Dynamic Range */
++#define RKISP1_CIF_ISP_MODULE_WDR		(1U << 15)
++/* Denoise Pre-Filter */
++#define RKISP1_CIF_ISP_MODULE_DPF		(1U << 16)
++/* Denoise Pre-Filter Strength */
++#define RKISP1_CIF_ISP_MODULE_DPF_STRENGTH	(1U << 17)
 +
-+#define CIFISP_CTK_COEFF_MAX            0x100
-+#define CIFISP_CTK_OFFSET_MAX           0x800
++#define RKISP1_CIF_ISP_CTK_COEFF_MAX            0x100
++#define RKISP1_CIF_ISP_CTK_OFFSET_MAX           0x800
 +
-+#define CIFISP_AE_MEAN_MAX              25
-+#define CIFISP_HIST_BIN_N_MAX           16
-+#define CIFISP_AFM_MAX_WINDOWS          3
-+#define CIFISP_DEGAMMA_CURVE_SIZE       17
++#define RKISP1_CIF_ISP_AE_MEAN_MAX_V10		25
++#define RKISP1_CIF_ISP_AE_MEAN_MAX_V12		81
++#define RKISP1_CIF_ISP_AE_MEAN_MAX		RKISP1_CIF_ISP_AE_MEAN_MAX_V12
 +
-+#define CIFISP_BDM_MAX_TH               0xFF
++#define RKISP1_CIF_ISP_HIST_BIN_N_MAX_V10	16
++#define RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12	32
++#define RKISP1_CIF_ISP_HIST_BIN_N_MAX		RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12
++
++#define RKISP1_CIF_ISP_AFM_MAX_WINDOWS          3
++#define RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE       17
++
++#define RKISP1_CIF_ISP_BDM_MAX_TH               0xff
 +
 +/*
 + * Black level compensation
 + */
 +/* maximum value for horizontal start address */
-+#define CIFISP_BLS_START_H_MAX             0x00000FFF
++#define RKISP1_CIF_ISP_BLS_START_H_MAX             0x00000fff
 +/* maximum value for horizontal stop address */
-+#define CIFISP_BLS_STOP_H_MAX              0x00000FFF
++#define RKISP1_CIF_ISP_BLS_STOP_H_MAX              0x00000fff
 +/* maximum value for vertical start address */
-+#define CIFISP_BLS_START_V_MAX             0x00000FFF
++#define RKISP1_CIF_ISP_BLS_START_V_MAX             0x00000fff
 +/* maximum value for vertical stop address */
-+#define CIFISP_BLS_STOP_V_MAX              0x00000FFF
++#define RKISP1_CIF_ISP_BLS_STOP_V_MAX              0x00000fff
 +/* maximum is 2^18 = 262144*/
-+#define CIFISP_BLS_SAMPLES_MAX             0x00000012
++#define RKISP1_CIF_ISP_BLS_SAMPLES_MAX             0x00000012
 +/* maximum value for fixed black level */
-+#define CIFISP_BLS_FIX_SUB_MAX             0x00000FFF
++#define RKISP1_CIF_ISP_BLS_FIX_SUB_MAX             0x00000fff
 +/* minimum value for fixed black level */
-+#define CIFISP_BLS_FIX_SUB_MIN             0xFFFFF000
++#define RKISP1_CIF_ISP_BLS_FIX_SUB_MIN             0xfffff000
 +/* 13 bit range (signed)*/
-+#define CIFISP_BLS_FIX_MASK                0x00001FFF
++#define RKISP1_CIF_ISP_BLS_FIX_MASK                0x00001fff
 +
 +/*
-+ * Automatic white balance measurments
++ * Automatic white balance measurements
 + */
-+#define CIFISP_AWB_MAX_GRID                1
-+#define CIFISP_AWB_MAX_FRAMES              7
++#define RKISP1_CIF_ISP_AWB_MAX_GRID                1
++#define RKISP1_CIF_ISP_AWB_MAX_FRAMES              7
 +
 +/*
 + * Gamma out
 + */
 +/* Maximum number of color samples supported */
-+#define CIFISP_GAMMA_OUT_MAX_SAMPLES       17
++#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V10   17
++#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12   34
++#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES       RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12
 +
 +/*
 + * Lens shade correction
 + */
-+#define CIFISP_LSC_GRAD_TBL_SIZE           8
-+#define CIFISP_LSC_SIZE_TBL_SIZE           8
++#define RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE        8
++
 +/*
 + * The following matches the tuning process,
 + * not the max capabilities of the chip.
-+ * Last value unused.
 + */
-+#define	CIFISP_LSC_DATA_TBL_SIZE           290
++#define RKISP1_CIF_ISP_LSC_SAMPLES_MAX             17
 +
 +/*
 + * Histogram calculation
 + */
-+/* Last 3 values unused. */
-+#define CIFISP_HISTOGRAM_WEIGHT_GRIDS_SIZE 28
++#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V10 25
++#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
++#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE     RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
 +
 +/*
 + * Defect Pixel Cluster Correction
 + */
-+#define CIFISP_DPCC_METHODS_MAX       3
++#define RKISP1_CIF_ISP_DPCC_METHODS_MAX       3
 +
 +/*
 + * Denoising pre filter
 + */
-+#define CIFISP_DPF_MAX_NLF_COEFFS      17
-+#define CIFISP_DPF_MAX_SPATIAL_COEFFS  6
++#define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS      17
++#define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS  6
 +
 +/*
 + * Measurement types
 + */
-+#define CIFISP_STAT_AWB           (1 << 0)
-+#define CIFISP_STAT_AUTOEXP       (1 << 1)
-+#define CIFISP_STAT_AFM_FIN       (1 << 2)
-+#define CIFISP_STAT_HIST          (1 << 3)
++#define RKISP1_CIF_ISP_STAT_AWB           (1U << 0)
++#define RKISP1_CIF_ISP_STAT_AUTOEXP       (1U << 1)
++#define RKISP1_CIF_ISP_STAT_AFM           (1U << 2)
++#define RKISP1_CIF_ISP_STAT_HIST          (1U << 3)
 +
-+enum cifisp_histogram_mode {
-+	CIFISP_HISTOGRAM_MODE_DISABLE,
-+	CIFISP_HISTOGRAM_MODE_RGB_COMBINED,
-+	CIFISP_HISTOGRAM_MODE_R_HISTOGRAM,
-+	CIFISP_HISTOGRAM_MODE_G_HISTOGRAM,
-+	CIFISP_HISTOGRAM_MODE_B_HISTOGRAM,
-+	CIFISP_HISTOGRAM_MODE_Y_HISTOGRAM
++/**
++ * enum rkisp1_cif_isp_version - ISP variants
++ *
++ * @RKISP1_V10: used at least in rk3288 and rk3399
++ * @RKISP1_V11: declared in the original vendor code, but not used
++ * @RKISP1_V12: used at least in rk3326 and px30
++ * @RKISP1_V13: used at least in rk1808
++ */
++enum rkisp1_cif_isp_version {
++	RKISP1_V10 = 10,
++	RKISP1_V11,
++	RKISP1_V12,
++	RKISP1_V13,
 +};
 +
-+enum cifisp_awb_mode_type {
-+	CIFISP_AWB_MODE_MANUAL,
-+	CIFISP_AWB_MODE_RGB,
-+	CIFISP_AWB_MODE_YCBCR
++enum rkisp1_cif_isp_histogram_mode {
++	RKISP1_CIF_ISP_HISTOGRAM_MODE_DISABLE,
++	RKISP1_CIF_ISP_HISTOGRAM_MODE_RGB_COMBINED,
++	RKISP1_CIF_ISP_HISTOGRAM_MODE_R_HISTOGRAM,
++	RKISP1_CIF_ISP_HISTOGRAM_MODE_G_HISTOGRAM,
++	RKISP1_CIF_ISP_HISTOGRAM_MODE_B_HISTOGRAM,
++	RKISP1_CIF_ISP_HISTOGRAM_MODE_Y_HISTOGRAM
 +};
 +
-+enum cifisp_flt_mode {
-+	CIFISP_FLT_STATIC_MODE,
-+	CIFISP_FLT_DYNAMIC_MODE
++enum rkisp1_cif_isp_awb_mode_type {
++	RKISP1_CIF_ISP_AWB_MODE_MANUAL,
++	RKISP1_CIF_ISP_AWB_MODE_RGB,
++	RKISP1_CIF_ISP_AWB_MODE_YCBCR
++};
++
++enum rkisp1_cif_isp_flt_mode {
++	RKISP1_CIF_ISP_FLT_STATIC_MODE,
++	RKISP1_CIF_ISP_FLT_DYNAMIC_MODE
 +};
 +
 +/**
-+ * enum cifisp_exp_ctrl_auotostop - stop modes
-+ * @CIFISP_EXP_CTRL_AUTOSTOP_0: continous measurement
-+ * @CIFISP_EXP_CTRL_AUTOSTOP_1: stop measuring after a complete frame
++ * enum rkisp1_cif_isp_exp_ctrl_autostop - stop modes
++ * @RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_0: continuous measurement
++ * @RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_1: stop measuring after a complete frame
 + */
-+enum cifisp_exp_ctrl_auotostop {
-+	CIFISP_EXP_CTRL_AUTOSTOP_0 = 0,
-+	CIFISP_EXP_CTRL_AUTOSTOP_1 = 1,
++enum rkisp1_cif_isp_exp_ctrl_autostop {
++	RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_0 = 0,
++	RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_1 = 1,
 +};
 +
 +/**
-+ * enum cifisp_exp_meas_mode - Exposure measure mode
-+ * @CIFISP_EXP_MEASURING_MODE_0: Y = 16 + 0.25R + 0.5G + 0.1094B
-+ * @CIFISP_EXP_MEASURING_MODE_1: Y = (R + G + B) x (85/256)
++ * enum rkisp1_cif_isp_exp_meas_mode - Exposure measure mode
++ * @RKISP1_CIF_ISP_EXP_MEASURING_MODE_0: Y = 16 + 0.25R + 0.5G + 0.1094B
++ * @RKISP1_CIF_ISP_EXP_MEASURING_MODE_1: Y = (R + G + B) x (85/256)
 + */
-+enum cifisp_exp_meas_mode {
-+	CIFISP_EXP_MEASURING_MODE_0,
-+	CIFISP_EXP_MEASURING_MODE_1,
++enum rkisp1_cif_isp_exp_meas_mode {
++	RKISP1_CIF_ISP_EXP_MEASURING_MODE_0,
++	RKISP1_CIF_ISP_EXP_MEASURING_MODE_1,
 +};
 +
 +/*---------- PART1: Input Parameters ------------*/
 +
-+struct cifisp_window {
-+	unsigned short h_offs;
-+	unsigned short v_offs;
-+	unsigned short h_size;
-+	unsigned short v_size;
-+} __attribute__ ((packed));
++/**
++ * struct rkisp1_cif_isp_window -  measurement window.
++ *
++ * Measurements are calculated per window inside the frame.
++ * This struct represents a window for a measurement.
++ *
++ * @h_offs: the horizontal offset of the window from the left of the frame in pixels.
++ * @v_offs: the vertical offset of the window from the top of the frame in pixels.
++ * @h_size: the horizontal size of the window in pixels
++ * @v_size: the vertical size of the window in pixels.
++ */
++struct rkisp1_cif_isp_window {
++	__u16 h_offs;
++	__u16 v_offs;
++	__u16 h_size;
++	__u16 v_size;
++};
 +
 +/**
-+ * struct cifisp_bls_fixed_val - BLS fixed subtraction values
++ * struct rkisp1_cif_isp_bls_fixed_val - BLS fixed subtraction values
 + *
 + * The values will be subtracted from the sensor
 + * values. Therefore a negative value means addition instead of subtraction!
@@ -194,56 +240,60 @@
 + * @gb: Fixed (signed!) subtraction value for Bayer pattern Gb
 + * @b: Fixed (signed!) subtraction value for Bayer pattern B
 + */
-+struct cifisp_bls_fixed_val {
-+	signed short r;
-+	signed short gr;
-+	signed short gb;
-+	signed short b;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_bls_fixed_val {
++	__s16 r;
++	__s16 gr;
++	__s16 gb;
++	__s16 b;
++};
 +
 +/**
-+ * struct cifisp_bls_config - Configuration used by black level subtraction
++ * struct rkisp1_cif_isp_bls_config - Configuration used by black level subtraction
 + *
 + * @enable_auto: Automatic mode activated means that the measured values
-+ * are subtracted.Otherwise the fixed subtraction
-+ * values will be subtracted.
++ *		 are subtracted. Otherwise the fixed subtraction
++ *		 values will be subtracted.
 + * @en_windows: enabled window
 + * @bls_window1: Measurement window 1 size
 + * @bls_window2: Measurement window 2 size
 + * @bls_samples: Set amount of measured pixels for each Bayer position
-+ * (A, B,C and D) to 2^bls_samples.
-+ * @cifisp_bls_fixed_val: Fixed subtraction values
++ *		 (A, B,C and D) to 2^bls_samples.
++ * @fixed_val: Fixed subtraction values
 + */
-+struct cifisp_bls_config {
-+	unsigned char enable_auto;
-+	unsigned char en_windows;
-+	struct cifisp_window bls_window1;
-+	struct cifisp_window bls_window2;
-+	unsigned char bls_samples;
-+	struct cifisp_bls_fixed_val fixed_val;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_bls_config {
++	__u8 enable_auto;
++	__u8 en_windows;
++	struct rkisp1_cif_isp_window bls_window1;
++	struct rkisp1_cif_isp_window bls_window2;
++	__u8 bls_samples;
++	struct rkisp1_cif_isp_bls_fixed_val fixed_val;
++};
 +
 +/**
-+ * struct cifisp_dpcc_methods_config - Methods Configuration used by Defect Pixel Cluster Correction
++ * struct rkisp1_cif_isp_dpcc_methods_config - Methods Configuration used by DPCC
 + *
-+ * @method:
-+ * @line_thresh:
-+ * @line_mad_fac:
-+ * @pg_fac:
-+ * @rnd_thresh:
-+ * @rg_fac:
++ * Methods Configuration used by Defect Pixel Cluster Correction
++ *
++ * @method: Method enable bits
++ * @line_thresh: Line threshold
++ * @line_mad_fac: Line MAD factor
++ * @pg_fac: Peak gradient factor
++ * @rnd_thresh: Rank Neighbor Difference threshold
++ * @rg_fac: Rank gradient factor
 + */
-+struct cifisp_dpcc_methods_config {
-+	unsigned int method;
-+	unsigned int line_thresh;
-+	unsigned int line_mad_fac;
-+	unsigned int pg_fac;
-+	unsigned int rnd_thresh;
-+	unsigned int rg_fac;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_dpcc_methods_config {
++	__u32 method;
++	__u32 line_thresh;
++	__u32 line_mad_fac;
++	__u32 pg_fac;
++	__u32 rnd_thresh;
++	__u32 rg_fac;
++};
 +
 +/**
-+ * struct cifisp_dpcc_methods_config - Configuration used by Defect Pixel Cluster Correction
++ * struct rkisp1_cif_isp_dpcc_config - Configuration used by DPCC
++ *
++ * Configuration used by Defect Pixel Cluster Correction
 + *
 + * @mode: dpcc output mode
 + * @output_mode: whether use hard coded methods
@@ -252,60 +302,95 @@
 + * @ro_limits: rank order limits
 + * @rnd_offs: differential rank offsets for rank neighbor difference
 + */
-+struct cifisp_dpcc_config {
-+	unsigned int mode;
-+	unsigned int output_mode;
-+	unsigned int set_use;
-+	struct cifisp_dpcc_methods_config methods[CIFISP_DPCC_METHODS_MAX];
-+	unsigned int ro_limits;
-+	unsigned int rnd_offs;
-+} __attribute__ ((packed));
-+
-+struct cifisp_gamma_corr_curve {
-+	unsigned short gamma_y[CIFISP_DEGAMMA_CURVE_SIZE];
-+} __attribute__ ((packed));
-+
-+struct cifisp_gamma_curve_x_axis_pnts {
-+	unsigned int gamma_dx0;
-+	unsigned int gamma_dx1;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_dpcc_config {
++	__u32 mode;
++	__u32 output_mode;
++	__u32 set_use;
++	struct rkisp1_cif_isp_dpcc_methods_config methods[RKISP1_CIF_ISP_DPCC_METHODS_MAX];
++	__u32 ro_limits;
++	__u32 rnd_offs;
++};
 +
 +/**
-+ * struct cifisp_gamma_corr_curve - Configuration used by sensor degamma
++ * struct rkisp1_cif_isp_gamma_corr_curve - gamma curve point definition y-axis (output).
 + *
-+ * @curve_x: gamma curve point definition axis for x
-+ * @xa_pnts: x increments
++ * The reset values define a linear curve which has the same effect as bypass. Reset values are:
++ * gamma_y[0] = 0x0000, gamma_y[1] = 0x0100, ... gamma_y[15] = 0x0f00, gamma_y[16] = 0xfff
++ *
++ * @gamma_y: the values for the y-axis of gamma curve points. Each value is 12 bit.
 + */
-+struct cifisp_sdg_config {
-+	struct cifisp_gamma_corr_curve curve_r;
-+	struct cifisp_gamma_corr_curve curve_g;
-+	struct cifisp_gamma_corr_curve curve_b;
-+	struct cifisp_gamma_curve_x_axis_pnts xa_pnts;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_gamma_corr_curve {
++	__u16 gamma_y[RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE];
++};
 +
 +/**
-+ * struct cifisp_lsc_config - Configuration used by Lens shading correction
++ * struct rkisp1_cif_isp_gamma_curve_x_axis_pnts - De-Gamma Curve definition x increments
++ *		(sampling points). gamma_dx0 is for the lower samples (1-8), gamma_dx1 is for the
++ *		higher samples (9-16). The reset values for both fields is 0x44444444. This means
++ *		that each sample is 4 units away from the previous one on the x-axis.
 + *
-+ * refer to datasheet for details
++ * @gamma_dx0: gamma curve sample points definitions. Bits 0:2 for sample 1. Bit 3 unused.
++ *		Bits 4:6 for sample 2. bit 7 unused ... Bits 28:30 for sample 8. Bit 31 unused
++ * @gamma_dx1: gamma curve sample points definitions. Bits 0:2 for sample 9. Bit 3 unused.
++ *		Bits 4:6 for sample 10. bit 7 unused ... Bits 28:30 for sample 16. Bit 31 unused
 + */
-+struct cifisp_lsc_config {
-+	unsigned int r_data_tbl[CIFISP_LSC_DATA_TBL_SIZE];
-+	unsigned int gr_data_tbl[CIFISP_LSC_DATA_TBL_SIZE];
-+	unsigned int gb_data_tbl[CIFISP_LSC_DATA_TBL_SIZE];
-+	unsigned int b_data_tbl[CIFISP_LSC_DATA_TBL_SIZE];
-+
-+	unsigned int x_grad_tbl[CIFISP_LSC_GRAD_TBL_SIZE];
-+	unsigned int y_grad_tbl[CIFISP_LSC_GRAD_TBL_SIZE];
-+
-+	unsigned int x_size_tbl[CIFISP_LSC_SIZE_TBL_SIZE];
-+	unsigned int y_size_tbl[CIFISP_LSC_SIZE_TBL_SIZE];
-+	unsigned short config_width;
-+	unsigned short config_height;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_gamma_curve_x_axis_pnts {
++	__u32 gamma_dx0;
++	__u32 gamma_dx1;
++};
 +
 +/**
-+ * struct cifisp_ie_config - Configuration used by image effects
++ * struct rkisp1_cif_isp_sdg_config - Configuration used by sensor degamma
 + *
++ * @curve_r: gamma curve point definition axis for red
++ * @curve_g: gamma curve point definition axis for green
++ * @curve_b: gamma curve point definition axis for blue
++ * @xa_pnts: x axis increments
++ */
++struct rkisp1_cif_isp_sdg_config {
++	struct rkisp1_cif_isp_gamma_corr_curve curve_r;
++	struct rkisp1_cif_isp_gamma_corr_curve curve_g;
++	struct rkisp1_cif_isp_gamma_corr_curve curve_b;
++	struct rkisp1_cif_isp_gamma_curve_x_axis_pnts xa_pnts;
++};
++
++/**
++ * struct rkisp1_cif_isp_lsc_config - Configuration used by Lens shading correction
++ *
++ * @r_data_tbl: sample table red
++ * @gr_data_tbl: sample table green (red)
++ * @gb_data_tbl: sample table green (blue)
++ * @b_data_tbl: sample table blue
++ * @x_grad_tbl: gradient table x
++ * @y_grad_tbl: gradient table y
++ * @x_size_tbl: size table x
++ * @y_size_tbl: size table y
++ * @config_width: not used at the moment
++ * @config_height: not used at the moment
++ */
++struct rkisp1_cif_isp_lsc_config {
++	__u16 r_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
++	__u16 gr_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
++	__u16 gb_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
++	__u16 b_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
++
++	__u16 x_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
++	__u16 y_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
++
++	__u16 x_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
++	__u16 y_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
++	__u16 config_width;
++	__u16 config_height;
++};
++
++/**
++ * struct rkisp1_cif_isp_ie_config - Configuration used by image effects
++ *
++ * @effect: values from 'enum v4l2_colorfx'. Possible values are: V4L2_COLORFX_SEPIA,
++ *		V4L2_COLORFX_SET_CBCR, V4L2_COLORFX_AQUA, V4L2_COLORFX_EMBOSS,
++ *		V4L2_COLORFX_SKETCH,   V4L2_COLORFX_BW,   V4L2_COLORFX_NEGATIVE
++ * @color_sel: bits 0:2 - colors bitmask (001 - blue, 010 - green, 100 - red).
++ *		bits 8:15 - Threshold value of the RGB colors for the color selection effect.
 + * @eff_mat_1: 3x3 Matrix Coefficients for Emboss Effect 1
 + * @eff_mat_2: 3x3 Matrix Coefficients for Emboss Effect 2
 + * @eff_mat_3: 3x3 Matrix Coefficients for Emboss 3/Sketch 1
@@ -313,21 +398,22 @@
 + * @eff_mat_5: 3x3 Matrix Coefficients for Sketch Effect 3
 + * @eff_tint: Chrominance increment values of tint (used for sepia effect)
 + */
-+struct cifisp_ie_config {
-+	unsigned short effect;
-+	unsigned short color_sel;
-+	unsigned short eff_mat_1;
-+	unsigned short eff_mat_2;
-+	unsigned short eff_mat_3;
-+	unsigned short eff_mat_4;
-+	unsigned short eff_mat_5;
-+	unsigned short eff_tint;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_ie_config {
++	__u16 effect;
++	__u16 color_sel;
++	__u16 eff_mat_1;
++	__u16 eff_mat_2;
++	__u16 eff_mat_3;
++	__u16 eff_mat_4;
++	__u16 eff_mat_5;
++	__u16 eff_tint;
++};
 +
 +/**
-+ * struct cifisp_cproc_config - Configuration used by Color Processing
++ * struct rkisp1_cif_isp_cproc_config - Configuration used by Color Processing
 + *
-+ * @c_out_range: Chrominance pixel clipping range at output. (0 for limit, 1 for full)
++ * @c_out_range: Chrominance pixel clipping range at output.
++ *		 (0 for limit, 1 for full)
 + * @y_in_range: Luminance pixel clipping range at output.
 + * @y_out_range: Luminance pixel clipping range at output.
 + * @contrast: 00~ff, 0.0~1.992
@@ -335,268 +421,342 @@
 + * @sat: saturation, 00~FF, 0.0~1.992
 + * @hue: 80~7F, -90~+87.188
 + */
-+struct cifisp_cproc_config {
-+	unsigned char c_out_range;
-+	unsigned char y_in_range;
-+	unsigned char y_out_range;
-+	unsigned char contrast;
-+	unsigned char brightness;
-+	unsigned char sat;
-+	unsigned char hue;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_cproc_config {
++	__u8 c_out_range;
++	__u8 y_in_range;
++	__u8 y_out_range;
++	__u8 contrast;
++	__u8 brightness;
++	__u8 sat;
++	__u8 hue;
++};
 +
 +/**
-+ * struct cifisp_awb_meas_config - Configuration used by auto white balance
++ * struct rkisp1_cif_isp_awb_meas_config - Configuration used by auto white balance
 + *
++ * @awb_mode: the awb meas mode. From enum rkisp1_cif_isp_awb_mode_type.
 + * @awb_wnd: white balance measurement window (in pixels)
-+ * @max_y: only pixels values < max_y contribute to awb measurement, set to 0 to disable this feature
++ * @max_y: only pixels values < max_y contribute to awb measurement, set to 0
++ *	   to disable this feature
 + * @min_y: only pixels values > min_y contribute to awb measurement
-+ * @max_csum: Chrominance sum maximum value, only consider pixels with Cb+Cr, smaller than threshold for awb measurements
-+ * @min_c: Chrominance minimum value, only consider pixels with Cb/Cr each greater than threshold value for awb measurements
-+ * @frames: number of frames - 1 used for mean value calculation(ucFrames=0 means 1 Frame)
++ * @max_csum: Chrominance sum maximum value, only consider pixels with Cb+Cr,
++ *	      smaller than threshold for awb measurements
++ * @min_c: Chrominance minimum value, only consider pixels with Cb/Cr
++ *	   each greater than threshold value for awb measurements
++ * @frames: number of frames - 1 used for mean value calculation
++ *	    (ucFrames=0 means 1 Frame)
 + * @awb_ref_cr: reference Cr value for AWB regulation, target for AWB
 + * @awb_ref_cb: reference Cb value for AWB regulation, target for AWB
++ * @enable_ymax_cmp: enable Y_MAX compare (Not valid in RGB measurement mode.)
 + */
-+struct cifisp_awb_meas_config {
++struct rkisp1_cif_isp_awb_meas_config {
 +	/*
 +	 * Note: currently the h and v offsets are mapped to grid offsets
 +	 */
-+	struct cifisp_window awb_wnd;
-+	enum cifisp_awb_mode_type awb_mode;
-+	unsigned char max_y;
-+	unsigned char min_y;
-+	unsigned char max_csum;
-+	unsigned char min_c;
-+	unsigned char frames;
-+	unsigned char awb_ref_cr;
-+	unsigned char awb_ref_cb;
-+	bool enable_ymax_cmp;
-+} __attribute__ ((packed));
-+
-+/**
-+ * struct cifisp_awb_gain_config - Configuration used by auto white balance gain
-+ *
-+ * out_data_x = ( AWB_GEAIN_X * in_data + 128) >> 8
-+ */
-+struct cifisp_awb_gain_config {
-+	unsigned short gain_red;
-+	unsigned short gain_green_r;
-+	unsigned short gain_blue;
-+	unsigned short gain_green_b;
-+} __attribute__ ((packed));
-+
-+/**
-+ * struct cifisp_flt_config - Configuration used by ISP filtering
-+ *
-+ * @mode: ISP_FILT_MODE register fields
-+ * @grn_stage1: ISP_FILT_MODE register fields
-+ * @chr_h_mode: ISP_FILT_MODE register fields
-+ * @chr_v_mode: ISP_FILT_MODE register fields
-+ *
-+ * refer to datasheet for details.
-+ */
-+struct cifisp_flt_config {
-+	enum cifisp_flt_mode mode;
-+	unsigned char grn_stage1;
-+	unsigned char chr_h_mode;
-+	unsigned char chr_v_mode;
-+	unsigned int thresh_bl0;
-+	unsigned int thresh_bl1;
-+	unsigned int thresh_sh0;
-+	unsigned int thresh_sh1;
-+	unsigned int lum_weight;
-+	unsigned int fac_sh1;
-+	unsigned int fac_sh0;
-+	unsigned int fac_mid;
-+	unsigned int fac_bl0;
-+	unsigned int fac_bl1;
-+} __attribute__ ((packed));
-+
-+/**
-+ * struct cifisp_bdm_config - Configuration used by Bayer DeMosaic
-+ *
-+ * @demosaic_th: threshod for bayer demosaicing texture detection
-+ */
-+struct cifisp_bdm_config {
-+	unsigned char demosaic_th;
-+} __attribute__ ((packed));
-+
-+/**
-+ * struct cifisp_ctk_config - Configuration used by Cross Talk correction
-+ *
-+ * @coeff: color correction matrix
-+ * @ct_offset_b: offset for the crosstalk correction matrix
-+ */
-+struct cifisp_ctk_config {
-+	unsigned short coeff0;
-+	unsigned short coeff1;
-+	unsigned short coeff2;
-+	unsigned short coeff3;
-+	unsigned short coeff4;
-+	unsigned short coeff5;
-+	unsigned short coeff6;
-+	unsigned short coeff7;
-+	unsigned short coeff8;
-+	unsigned short ct_offset_r;
-+	unsigned short ct_offset_g;
-+	unsigned short ct_offset_b;
-+} __attribute__ ((packed));
-+
-+enum cifisp_goc_mode {
-+	CIFISP_GOC_MODE_LOGARITHMIC,
-+	CIFISP_GOC_MODE_EQUIDISTANT
++	struct rkisp1_cif_isp_window awb_wnd;
++	__u32 awb_mode;
++	__u8 max_y;
++	__u8 min_y;
++	__u8 max_csum;
++	__u8 min_c;
++	__u8 frames;
++	__u8 awb_ref_cr;
++	__u8 awb_ref_cb;
++	__u8 enable_ymax_cmp;
 +};
 +
 +/**
-+ * struct cifisp_goc_config - Configuration used by Gamma Out correction
++ * struct rkisp1_cif_isp_awb_gain_config - Configuration used by auto white balance gain
 + *
-+ * @mode: goc mode
++ * All fields in this struct are 10 bit, where:
++ * 0x100h = 1, unsigned integer value, range 0 to 4 with 8 bit fractional part.
++ *
++ * out_data_x = ( AWB_GAIN_X * in_data + 128) >> 8
++ *
++ * @gain_red: gain value for red component.
++ * @gain_green_r: gain value for green component in red line.
++ * @gain_blue: gain value for blue component.
++ * @gain_green_b: gain value for green component in blue line.
++ */
++struct rkisp1_cif_isp_awb_gain_config {
++	__u16 gain_red;
++	__u16 gain_green_r;
++	__u16 gain_blue;
++	__u16 gain_green_b;
++};
++
++/**
++ * struct rkisp1_cif_isp_flt_config - Configuration used by ISP filtering
++ *
++ * All 4 threshold fields (thresh_*) are 10 bits.
++ * All 6 factor fields (fac_*) are 6 bits.
++ *
++ * @mode: ISP_FILT_MODE register fields (from enum rkisp1_cif_isp_flt_mode)
++ * @grn_stage1: Green filter stage 1 select (range 0x0...0x8)
++ * @chr_h_mode: Chroma filter horizontal mode
++ * @chr_v_mode: Chroma filter vertical mode
++ * @thresh_bl0: If thresh_bl1 < sum_grad < thresh_bl0 then fac_bl0 is selected (blurring th)
++ * @thresh_bl1: If sum_grad < thresh_bl1 then fac_bl1 is selected (blurring th)
++ * @thresh_sh0: If thresh_sh0 < sum_grad < thresh_sh1 then thresh_sh0 is selected (sharpening th)
++ * @thresh_sh1: If thresh_sh1 < sum_grad then thresh_sh1 is selected (sharpening th)
++ * @lum_weight: Parameters for luminance weight function.
++ * @fac_sh1: filter factor for sharp1 level
++ * @fac_sh0: filter factor for sharp0 level
++ * @fac_mid: filter factor for mid level and for static filter mode
++ * @fac_bl0: filter factor for blur 0 level
++ * @fac_bl1: filter factor for blur 1 level (max blur)
++ */
++struct rkisp1_cif_isp_flt_config {
++	__u32 mode;
++	__u8 grn_stage1;
++	__u8 chr_h_mode;
++	__u8 chr_v_mode;
++	__u32 thresh_bl0;
++	__u32 thresh_bl1;
++	__u32 thresh_sh0;
++	__u32 thresh_sh1;
++	__u32 lum_weight;
++	__u32 fac_sh1;
++	__u32 fac_sh0;
++	__u32 fac_mid;
++	__u32 fac_bl0;
++	__u32 fac_bl1;
++};
++
++/**
++ * struct rkisp1_cif_isp_bdm_config - Configuration used by Bayer DeMosaic
++ *
++ * @demosaic_th: threshold for bayer demosaicing texture detection
++ */
++struct rkisp1_cif_isp_bdm_config {
++	__u8 demosaic_th;
++};
++
++/**
++ * struct rkisp1_cif_isp_ctk_config - Configuration used by Cross Talk correction
++ *
++ * @coeff: color correction matrix. Values are 11-bit signed fixed-point numbers with 4 bit integer
++ *		and 7 bit fractional part, ranging from -8 (0x400) to +7.992 (0x3FF). 0 is
++ *		represented by 0x000 and a coefficient value of 1 as 0x080.
++ * @ct_offset: Red, Green, Blue offsets for the crosstalk correction matrix
++ */
++struct rkisp1_cif_isp_ctk_config {
++	__u16 coeff[3][3];
++	__u16 ct_offset[3];
++};
++
++enum rkisp1_cif_isp_goc_mode {
++	RKISP1_CIF_ISP_GOC_MODE_LOGARITHMIC,
++	RKISP1_CIF_ISP_GOC_MODE_EQUIDISTANT
++};
++
++/**
++ * struct rkisp1_cif_isp_goc_config - Configuration used by Gamma Out correction
++ *
++ * @mode: goc mode (from enum rkisp1_cif_isp_goc_mode)
 + * @gamma_y: gamma out curve y-axis for all color components
++ *
++ * The number of entries of @gamma_y depends on the hardware revision
++ * as is reported by the hw_revision field of the struct media_device_info
++ * that is returned by ioctl MEDIA_IOC_DEVICE_INFO.
++ *
++ * Versions <= V11 have RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V10
++ * entries, versions >= V12 have RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12
++ * entries. RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES is equal to the maximum
++ * of the two.
 + */
-+struct cifisp_goc_config {
-+	enum cifisp_goc_mode mode;
-+	unsigned short gamma_y[CIFISP_GAMMA_OUT_MAX_SAMPLES];
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_goc_config {
++	__u32 mode;
++	__u16 gamma_y[RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES];
++};
 +
 +/**
-+ * struct cifisp_hst_config - Configuration used by Histogram
++ * struct rkisp1_cif_isp_hst_config - Configuration used by Histogram
 + *
-+ * @mode: histogram mode
-+ * @histogram_predivider: process every stepsize pixel, all other pixels are skipped
-+ * @meas_window: coordinates of the meas window
++ * @mode: histogram mode (from enum rkisp1_cif_isp_histogram_mode)
++ * @histogram_predivider: process every stepsize pixel, all other pixels are
++ *			  skipped
++ * @meas_window: coordinates of the measure window
 + * @hist_weight: weighting factor for sub-windows
++ *
++ * The number of entries of @hist_weight depends on the hardware revision
++ * as is reported by the hw_revision field of the struct media_device_info
++ * that is returned by ioctl MEDIA_IOC_DEVICE_INFO.
++ *
++ * Versions <= V11 have RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V10
++ * entries, versions >= V12 have RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
++ * entries. RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE is equal to the maximum
++ * of the two.
 + */
-+struct cifisp_hst_config {
-+	enum cifisp_histogram_mode mode;
-+	unsigned char histogram_predivider;
-+	struct cifisp_window meas_window;
-+	unsigned char hist_weight[CIFISP_HISTOGRAM_WEIGHT_GRIDS_SIZE];
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_hst_config {
++	__u32 mode;
++	__u8 histogram_predivider;
++	struct rkisp1_cif_isp_window meas_window;
++	__u8 hist_weight[RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE];
++};
 +
 +/**
-+ * struct cifisp_aec_config - Configuration used by Auto Exposure Control
++ * struct rkisp1_cif_isp_aec_config - Configuration used by Auto Exposure Control
 + *
-+ * @mode: Exposure measure mode
-+ * @autostop: stop mode (from enum cifisp_exp_ctrl_auotostop)
-+ * @meas_window: coordinates of the meas window
++ * @mode: Exposure measure mode (from enum rkisp1_cif_isp_exp_meas_mode)
++ * @autostop: stop mode (from enum rkisp1_cif_isp_exp_ctrl_autostop)
++ * @meas_window: coordinates of the measure window
 + */
-+struct cifisp_aec_config {
-+	enum cifisp_exp_meas_mode mode;
++struct rkisp1_cif_isp_aec_config {
++	__u32 mode;
 +	__u32 autostop;
-+	struct cifisp_window meas_window;
-+} __attribute__ ((packed));
++	struct rkisp1_cif_isp_window meas_window;
++};
 +
 +/**
-+ * struct cifisp_afc_config - Configuration used by Auto Focus Control
++ * struct rkisp1_cif_isp_afc_config - Configuration used by Auto Focus Control
 + *
-+ * @num_afm_win: max CIFISP_AFM_MAX_WINDOWS
++ * @num_afm_win: max RKISP1_CIF_ISP_AFM_MAX_WINDOWS
 + * @afm_win: coordinates of the meas window
 + * @thres: threshold used for minimizing the influence of noise
-+ * @var_shift: the number of bits for the shift operation at the end of the calculation chain.
++ * @var_shift: the number of bits for the shift operation at the end of the
++ *	       calculation chain.
 + */
-+struct cifisp_afc_config {
-+	unsigned char num_afm_win;
-+	struct cifisp_window afm_win[CIFISP_AFM_MAX_WINDOWS];
-+	unsigned int thres;
-+	unsigned int var_shift;
-+} __attribute__ ((packed));
-+
-+/**
-+ * enum cifisp_dpf_gain_usage - dpf gain usage
-+ * @CIFISP_DPF_GAIN_USAGE_DISABLED: don't use any gains in preprocessing stage
-+ * @CIFISP_DPF_GAIN_USAGE_NF_GAINS: use only the noise function gains from registers DPF_NF_GAIN_R, ...
-+ * @CIFISP_DPF_GAIN_USAGE_LSC_GAINS:  use only the gains from LSC module
-+ * @CIFISP_DPF_GAIN_USAGE_NF_LSC_GAINS: use the noise function gains and the gains from LSC module
-+ * @CIFISP_DPF_GAIN_USAGE_AWB_GAINS: use only the gains from AWB module
-+ * @CIFISP_DPF_GAIN_USAGE_AWB_LSC_GAINS: use the gains from AWB and LSC module
-+ * @CIFISP_DPF_GAIN_USAGE_MAX: upper border (only for an internal evaluation)
-+ */
-+enum cifisp_dpf_gain_usage {
-+	CIFISP_DPF_GAIN_USAGE_DISABLED,
-+	CIFISP_DPF_GAIN_USAGE_NF_GAINS,
-+	CIFISP_DPF_GAIN_USAGE_LSC_GAINS,
-+	CIFISP_DPF_GAIN_USAGE_NF_LSC_GAINS,
-+	CIFISP_DPF_GAIN_USAGE_AWB_GAINS,
-+	CIFISP_DPF_GAIN_USAGE_AWB_LSC_GAINS,
-+	CIFISP_DPF_GAIN_USAGE_MAX
++struct rkisp1_cif_isp_afc_config {
++	__u8 num_afm_win;
++	struct rkisp1_cif_isp_window afm_win[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
++	__u32 thres;
++	__u32 var_shift;
 +};
 +
 +/**
-+ * enum cifisp_dpf_gain_usage - dpf gain usage
-+ * @CIFISP_DPF_RB_FILTERSIZE_13x9: red and blue filter kernel size 13x9 (means 7x5 active pixel)
-+ * @CIFISP_DPF_RB_FILTERSIZE_9x9: red and blue filter kernel size 9x9 (means 5x5 active pixel)
++ * enum rkisp1_cif_isp_dpf_gain_usage - dpf gain usage
++ * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_DISABLED: don't use any gains in preprocessing stage
++ * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_GAINS: use only the noise function gains from
++ *				    registers DPF_NF_GAIN_R, ...
++ * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_LSC_GAINS:  use only the gains from LSC module
++ * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_LSC_GAINS: use the noise function gains and the
++ *					gains from LSC module
++ * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_GAINS: use only the gains from AWB module
++ * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_LSC_GAINS: use the gains from AWB and LSC module
++ * @RKISP1_CIF_ISP_DPF_GAIN_USAGE_MAX: upper border (only for an internal evaluation)
 + */
-+enum cifisp_dpf_rb_filtersize {
-+	CIFISP_DPF_RB_FILTERSIZE_13x9,
-+	CIFISP_DPF_RB_FILTERSIZE_9x9,
++enum rkisp1_cif_isp_dpf_gain_usage {
++	RKISP1_CIF_ISP_DPF_GAIN_USAGE_DISABLED,
++	RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_GAINS,
++	RKISP1_CIF_ISP_DPF_GAIN_USAGE_LSC_GAINS,
++	RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_LSC_GAINS,
++	RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_GAINS,
++	RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_LSC_GAINS,
++	RKISP1_CIF_ISP_DPF_GAIN_USAGE_MAX
 +};
 +
 +/**
-+ * enum cifisp_dpf_nll_scale_mode - dpf noise level scale mode
-+ * @CIFISP_NLL_SCALE_LINEAR: use a linear scaling
-+ * @CIFISP_NLL_SCALE_LOGARITHMIC: use a logarithmic scaling
++ * enum rkisp1_cif_isp_dpf_rb_filtersize - Red and blue filter sizes
++ * @RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9: red and blue filter kernel size 13x9
++ *				   (means 7x5 active pixel)
++ * @RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_9x9: red and blue filter kernel size 9x9
++ *				   (means 5x5 active pixel)
 + */
-+enum cifisp_dpf_nll_scale_mode {
-+	CIFISP_NLL_SCALE_LINEAR,
-+	CIFISP_NLL_SCALE_LOGARITHMIC,
++enum rkisp1_cif_isp_dpf_rb_filtersize {
++	RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9,
++	RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_9x9,
 +};
 +
-+struct cifisp_dpf_nll {
-+	unsigned short coeff[CIFISP_DPF_MAX_NLF_COEFFS];
-+	enum cifisp_dpf_nll_scale_mode scale_mode;
-+} __attribute__ ((packed));
-+
-+struct cifisp_dpf_rb_flt {
-+	enum cifisp_dpf_rb_filtersize fltsize;
-+	unsigned char spatial_coeff[CIFISP_DPF_MAX_SPATIAL_COEFFS];
-+	bool r_enable;
-+	bool b_enable;
-+} __attribute__ ((packed));
-+
-+struct cifisp_dpf_g_flt {
-+	unsigned char spatial_coeff[CIFISP_DPF_MAX_SPATIAL_COEFFS];
-+	bool gr_enable;
-+	bool gb_enable;
-+} __attribute__ ((packed));
-+
-+struct cifisp_dpf_gain {
-+	enum cifisp_dpf_gain_usage mode;
-+	unsigned short nf_r_gain;
-+	unsigned short nf_b_gain;
-+	unsigned short nf_gr_gain;
-+	unsigned short nf_gb_gain;
-+} __attribute__ ((packed));
++/**
++ * enum rkisp1_cif_isp_dpf_nll_scale_mode - dpf noise level scale mode
++ * @RKISP1_CIF_ISP_NLL_SCALE_LINEAR: use a linear scaling
++ * @RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC: use a logarithmic scaling
++ */
++enum rkisp1_cif_isp_dpf_nll_scale_mode {
++	RKISP1_CIF_ISP_NLL_SCALE_LINEAR,
++	RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC,
++};
 +
 +/**
-+ * struct cifisp_dpf_config - Configuration used by De-noising pre-filter
++ * struct rkisp1_cif_isp_dpf_nll - Noise level lookup
++ *
++ * @coeff: Noise level Lookup coefficient
++ * @scale_mode: dpf noise level scale mode (from enum rkisp1_cif_isp_dpf_nll_scale_mode)
++ */
++struct rkisp1_cif_isp_dpf_nll {
++	__u16 coeff[RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS];
++	__u32 scale_mode;
++};
++
++/**
++ * struct rkisp1_cif_isp_dpf_rb_flt - Red blue filter config
++ *
++ * @fltsize: The filter size for the red and blue pixels
++ *	     (from enum rkisp1_cif_isp_dpf_rb_filtersize)
++ * @spatial_coeff: Spatial weights
++ * @r_enable: enable filter processing for red pixels
++ * @b_enable: enable filter processing for blue pixels
++ */
++struct rkisp1_cif_isp_dpf_rb_flt {
++	__u32 fltsize;
++	__u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS];
++	__u8 r_enable;
++	__u8 b_enable;
++};
++
++/**
++ * struct rkisp1_cif_isp_dpf_g_flt - Green filter Configuration
++ *
++ * @spatial_coeff: Spatial weights
++ * @gr_enable: enable filter processing for green pixels in green/red lines
++ * @gb_enable: enable filter processing for green pixels in green/blue lines
++ */
++struct rkisp1_cif_isp_dpf_g_flt {
++	__u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS];
++	__u8 gr_enable;
++	__u8 gb_enable;
++};
++
++/**
++ * struct rkisp1_cif_isp_dpf_gain - Noise function Configuration
++ *
++ * @mode: dpf gain usage  (from enum rkisp1_cif_isp_dpf_gain_usage)
++ * @nf_r_gain: Noise function Gain that replaces the AWB gain for red pixels
++ * @nf_b_gain: Noise function Gain that replaces the AWB gain for blue pixels
++ * @nf_gr_gain: Noise function Gain that replaces the AWB gain
++ *		for green pixels in a red line
++ * @nf_gb_gain: Noise function Gain that replaces the AWB gain
++ *		for green pixels in a blue line
++ */
++struct rkisp1_cif_isp_dpf_gain {
++	__u32 mode;
++	__u16 nf_r_gain;
++	__u16 nf_b_gain;
++	__u16 nf_gr_gain;
++	__u16 nf_gb_gain;
++};
++
++/**
++ * struct rkisp1_cif_isp_dpf_config - Configuration used by De-noising pre-filter
 + *
 + * @gain: noise function gain
 + * @g_flt: green filter config
 + * @rb_flt: red blue filter config
 + * @nll: noise level lookup
 + */
-+struct cifisp_dpf_config {
-+	struct cifisp_dpf_gain gain;
-+	struct cifisp_dpf_g_flt g_flt;
-+	struct cifisp_dpf_rb_flt rb_flt;
-+	struct cifisp_dpf_nll nll;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_dpf_config {
++	struct rkisp1_cif_isp_dpf_gain gain;
++	struct rkisp1_cif_isp_dpf_g_flt g_flt;
++	struct rkisp1_cif_isp_dpf_rb_flt rb_flt;
++	struct rkisp1_cif_isp_dpf_nll nll;
++};
 +
 +/**
-+ * struct cifisp_dpf_strength_config - strength of the filter
++ * struct rkisp1_cif_isp_dpf_strength_config - strength of the filter
 + *
 + * @r: filter strength of the RED filter
 + * @g: filter strength of the GREEN filter
 + * @b: filter strength of the BLUE filter
 + */
-+struct cifisp_dpf_strength_config {
-+	unsigned char r;
-+	unsigned char g;
-+	unsigned char b;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_dpf_strength_config {
++	__u8 r;
++	__u8 g;
++	__u8 b;
++};
 +
 +/**
-+ * struct cifisp_isp_other_cfg - Parameters for some blocks in rockchip isp1
++ * struct rkisp1_cif_isp_isp_other_cfg - Parameters for some blocks in rockchip isp1
 + *
 + * @dpcc_config: Defect Pixel Cluster Correction config
 + * @bls_config: Black Level Subtraction config
@@ -607,180 +767,208 @@
 + * @bdm_config: demosaic config
 + * @ctk_config: cross talk config
 + * @goc_config: gamma out config
-+ * @bls_config: black level suntraction config
++ * @bls_config: black level subtraction config
 + * @dpf_config: De-noising pre-filter config
 + * @dpf_strength_config: dpf strength config
 + * @cproc_config: color process config
 + * @ie_config: image effects config
 + */
-+struct cifisp_isp_other_cfg {
-+	struct cifisp_dpcc_config dpcc_config;
-+	struct cifisp_bls_config bls_config;
-+	struct cifisp_sdg_config sdg_config;
-+	struct cifisp_lsc_config lsc_config;
-+	struct cifisp_awb_gain_config awb_gain_config;
-+	struct cifisp_flt_config flt_config;
-+	struct cifisp_bdm_config bdm_config;
-+	struct cifisp_ctk_config ctk_config;
-+	struct cifisp_goc_config goc_config;
-+	struct cifisp_dpf_config dpf_config;
-+	struct cifisp_dpf_strength_config dpf_strength_config;
-+	struct cifisp_cproc_config cproc_config;
-+	struct cifisp_ie_config ie_config;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_isp_other_cfg {
++	struct rkisp1_cif_isp_dpcc_config dpcc_config;
++	struct rkisp1_cif_isp_bls_config bls_config;
++	struct rkisp1_cif_isp_sdg_config sdg_config;
++	struct rkisp1_cif_isp_lsc_config lsc_config;
++	struct rkisp1_cif_isp_awb_gain_config awb_gain_config;
++	struct rkisp1_cif_isp_flt_config flt_config;
++	struct rkisp1_cif_isp_bdm_config bdm_config;
++	struct rkisp1_cif_isp_ctk_config ctk_config;
++	struct rkisp1_cif_isp_goc_config goc_config;
++	struct rkisp1_cif_isp_dpf_config dpf_config;
++	struct rkisp1_cif_isp_dpf_strength_config dpf_strength_config;
++	struct rkisp1_cif_isp_cproc_config cproc_config;
++	struct rkisp1_cif_isp_ie_config ie_config;
++};
 +
 +/**
-+ * struct cifisp_isp_meas_cfg - Rockchip ISP1 Measure Parameters
++ * struct rkisp1_cif_isp_isp_meas_cfg - Rockchip ISP1 Measure Parameters
 + *
 + * @awb_meas_config: auto white balance config
 + * @hst_config: histogram config
 + * @aec_config: auto exposure config
 + * @afc_config: auto focus config
 + */
-+struct cifisp_isp_meas_cfg {
-+	struct cifisp_awb_meas_config awb_meas_config;
-+	struct cifisp_hst_config hst_config;
-+	struct cifisp_aec_config aec_config;
-+	struct cifisp_afc_config afc_config;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_isp_meas_cfg {
++	struct rkisp1_cif_isp_awb_meas_config awb_meas_config;
++	struct rkisp1_cif_isp_hst_config hst_config;
++	struct rkisp1_cif_isp_aec_config aec_config;
++	struct rkisp1_cif_isp_afc_config afc_config;
++};
 +
 +/**
-+ * struct rkisp1_isp_params_cfg - Rockchip ISP1 Input Parameters Meta Data
++ * struct rkisp1_params_cfg - Rockchip ISP1 Input Parameters Meta Data
 + *
-+ * @module_en_update: mask the enable bits of which module  should be updated
++ * @module_en_update: mask the enable bits of which module should be updated
 + * @module_ens: mask the enable value of each module, only update the module
-+ * which correspond bit was set in module_en_update
-+ * @module_cfg_update: mask the config bits of which module  should be updated
++ *		which correspond bit was set in module_en_update
++ * @module_cfg_update: mask the config bits of which module should be updated
 + * @meas: measurement config
 + * @others: other config
 + */
-+struct rkisp1_isp_params_cfg {
-+	unsigned int module_en_update;
-+	unsigned int module_ens;
-+	unsigned int module_cfg_update;
++struct rkisp1_params_cfg {
++	__u32 module_en_update;
++	__u32 module_ens;
++	__u32 module_cfg_update;
 +
-+	struct cifisp_isp_meas_cfg meas;
-+	struct cifisp_isp_other_cfg others;
-+} __attribute__ ((packed));
++	struct rkisp1_cif_isp_isp_meas_cfg meas;
++	struct rkisp1_cif_isp_isp_other_cfg others;
++};
 +
 +/*---------- PART2: Measurement Statistics ------------*/
 +
 +/**
-+ * struct cifisp_bls_meas_val - AWB measured values
++ * struct rkisp1_cif_isp_awb_meas - AWB measured values
 + *
-+ * @cnt: White pixel count, number of "white pixels" found during laster measurement
-+ * @mean_y_or_g: Mean value of Y within window and frames, Green if RGB is selected.
-+ * @mean_cb_or_b: Mean value of Cb within window and frames, Blue if RGB is selected.
-+ * @mean_cr_or_r: Mean value of Cr within window and frames, Red if RGB is selected.
++ * @cnt: White pixel count, number of "white pixels" found during last
++ *	 measurement
++ * @mean_y_or_g: Mean value of Y within window and frames,
++ *		 Green if RGB is selected.
++ * @mean_cb_or_b: Mean value of Cb within window and frames,
++ *		  Blue if RGB is selected.
++ * @mean_cr_or_r: Mean value of Cr within window and frames,
++ *		  Red if RGB is selected.
 + */
-+struct cifisp_awb_meas {
-+	unsigned int cnt;
-+	unsigned char mean_y_or_g;
-+	unsigned char mean_cb_or_b;
-+	unsigned char mean_cr_or_r;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_awb_meas {
++	__u32 cnt;
++	__u8 mean_y_or_g;
++	__u8 mean_cb_or_b;
++	__u8 mean_cr_or_r;
++};
 +
 +/**
-+ * struct cifisp_awb_stat - statistics automatic white balance data
++ * struct rkisp1_cif_isp_awb_stat - statistics automatic white balance data
 + *
 + * @awb_mean: Mean measured data
 + */
-+struct cifisp_awb_stat {
-+	struct cifisp_awb_meas awb_mean[CIFISP_AWB_MAX_GRID];
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_awb_stat {
++	struct rkisp1_cif_isp_awb_meas awb_mean[RKISP1_CIF_ISP_AWB_MAX_GRID];
++};
 +
 +/**
-+ * struct cifisp_bls_meas_val - BLS measured values
++ * struct rkisp1_cif_isp_bls_meas_val - BLS measured values
 + *
 + * @meas_r: Mean measured value for Bayer pattern R
 + * @meas_gr: Mean measured value for Bayer pattern Gr
 + * @meas_gb: Mean measured value for Bayer pattern Gb
 + * @meas_b: Mean measured value for Bayer pattern B
 + */
-+struct cifisp_bls_meas_val {
-+	unsigned short meas_r;
-+	unsigned short meas_gr;
-+	unsigned short meas_gb;
-+	unsigned short meas_b;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_bls_meas_val {
++	__u16 meas_r;
++	__u16 meas_gr;
++	__u16 meas_gb;
++	__u16 meas_b;
++};
 +
 +/**
-+ * struct cifisp_ae_stat - statistics auto exposure data
++ * struct rkisp1_cif_isp_ae_stat - statistics auto exposure data
 + *
 + * @exp_mean: Mean luminance value of block xx
-+ * @bls_val: available wit exposure results
++ * @bls_val:  BLS measured values
 + *
-+ * Image is divided into 5x5 blocks.
++ * The number of entries of @exp_mean depends on the hardware revision
++ * as is reported by the hw_revision field of the struct media_device_info
++ * that is returned by ioctl MEDIA_IOC_DEVICE_INFO.
++ *
++ * Versions <= V11 have RKISP1_CIF_ISP_AE_MEAN_MAX_V10 entries,
++ * versions >= V12 have RKISP1_CIF_ISP_AE_MEAN_MAX_V12 entries.
++ * RKISP1_CIF_ISP_AE_MEAN_MAX is equal to the maximum of the two.
++ *
++ * Image is divided into 5x5 blocks on V10 and 9x9 blocks on V12.
 + */
-+struct cifisp_ae_stat {
-+	unsigned char exp_mean[CIFISP_AE_MEAN_MAX];
-+	struct cifisp_bls_meas_val bls_val;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_ae_stat {
++	__u8 exp_mean[RKISP1_CIF_ISP_AE_MEAN_MAX];
++	struct rkisp1_cif_isp_bls_meas_val bls_val;
++};
 +
 +/**
-+ * struct cifisp_af_meas_val - AF measured values
++ * struct rkisp1_cif_isp_af_meas_val - AF measured values
 + *
-+ * @sum: sharpness, refer to datasheet for definition
-+ * @lum: luminance, refer to datasheet for definition
++ * @sum: sharpness value
++ * @lum: luminance value
 + */
-+struct cifisp_af_meas_val {
-+	unsigned int sum;
-+	unsigned int lum;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_af_meas_val {
++	__u32 sum;
++	__u32 lum;
++};
 +
 +/**
-+ * struct cifisp_af_stat - statistics auto focus data
++ * struct rkisp1_cif_isp_af_stat - statistics auto focus data
 + *
 + * @window: AF measured value of window x
 + *
 + * The module measures the sharpness in 3 windows of selectable size via
 + * register settings(ISP_AFM_*_A/B/C)
 + */
-+struct cifisp_af_stat {
-+	struct cifisp_af_meas_val window[CIFISP_AFM_MAX_WINDOWS];
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_af_stat {
++	struct rkisp1_cif_isp_af_meas_val window[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
++};
 +
 +/**
-+ * struct cifisp_hist_stat - statistics histogram data
++ * struct rkisp1_cif_isp_hist_stat - statistics histogram data
 + *
-+ * @hist_bins: measured bin counters
++ * @hist_bins: measured bin counters. Each bin is a 20 bits unsigned fixed point
++ *	       type. Bits 0-4 are the fractional part and bits 5-19 are the
++ *	       integer part.
 + *
-+ * Measurement window divided into 25 sub-windows, set
-+ * with ISP_HIST_XXX
++ * The window of the measurements area is divided to 5x5 sub-windows for
++ * V10/V11 and to 9x9 sub-windows for V12. The histogram is then computed for
++ * each sub-window independently and the final result is a weighted average of
++ * the histogram measurements on all sub-windows. The window of the
++ * measurements area and the weight of each sub-window are configurable using
++ * struct @rkisp1_cif_isp_hst_config.
++ *
++ * The histogram contains 16 bins in V10/V11 and 32 bins in V12/V13.
++ *
++ * The number of entries of @hist_bins depends on the hardware revision
++ * as is reported by the hw_revision field of the struct media_device_info
++ * that is returned by ioctl MEDIA_IOC_DEVICE_INFO.
++ *
++ * Versions <= V11 have RKISP1_CIF_ISP_HIST_BIN_N_MAX_V10 entries,
++ * versions >= V12 have RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12 entries.
++ * RKISP1_CIF_ISP_HIST_BIN_N_MAX is equal to the maximum of the two.
 + */
-+struct cifisp_hist_stat {
-+	unsigned short hist_bins[CIFISP_HIST_BIN_N_MAX];
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_hist_stat {
++	__u32 hist_bins[RKISP1_CIF_ISP_HIST_BIN_N_MAX];
++};
 +
 +/**
-+ * struct rkisp1_stat_buffer - Rockchip ISP1 Statistics Data
++ * struct rkisp1_cif_isp_stat - Rockchip ISP1 Statistics Data
 + *
-+ * @cifisp_awb_stat: statistics data for automatic white balance
-+ * @cifisp_ae_stat: statistics data for auto exposure
-+ * @cifisp_af_stat: statistics data for auto focus
-+ * @cifisp_hist_stat: statistics histogram data
++ * @awb: statistics data for automatic white balance
++ * @ae: statistics data for auto exposure
++ * @af: statistics data for auto focus
++ * @hist: statistics histogram data
 + */
-+struct cifisp_stat {
-+	struct cifisp_awb_stat awb;
-+	struct cifisp_ae_stat ae;
-+	struct cifisp_af_stat af;
-+	struct cifisp_hist_stat hist;
-+} __attribute__ ((packed));
++struct rkisp1_cif_isp_stat {
++	struct rkisp1_cif_isp_awb_stat awb;
++	struct rkisp1_cif_isp_ae_stat ae;
++	struct rkisp1_cif_isp_af_stat af;
++	struct rkisp1_cif_isp_hist_stat hist;
++};
 +
 +/**
 + * struct rkisp1_stat_buffer - Rockchip ISP1 Statistics Meta Data
 + *
-+ * @meas_type: measurement types (CIFISP_STAT_ definitions)
++ * @meas_type: measurement types (RKISP1_CIF_ISP_STAT_* definitions)
 + * @frame_id: frame ID for sync
 + * @params: statistics data
 + */
 +struct rkisp1_stat_buffer {
-+	unsigned int meas_type;
-+	unsigned int frame_id;
-+	struct cifisp_stat params;
-+} __attribute__ ((packed));
++	__u32 meas_type;
++	__u32 frame_id;
++	struct rkisp1_cif_isp_stat params;
++};
 +
 +#endif /* _UAPI_RKISP1_CONFIG_H */
 -- 
-2.22.0.657.g960e92d24f-goog
+2.30.0.296.g2bfb1c46d8-goog
 
diff --git a/sys-kernel/linux-headers/files/0040-BACKPORT-y2038-add-64-bit-time_t-syscalls-to-all-32-.patch b/sys-kernel/linux-headers/files/0040-BACKPORT-y2038-add-64-bit-time_t-syscalls-to-all-32-.patch
new file mode 100644
index 0000000..5879cce
--- /dev/null
+++ b/sys-kernel/linux-headers/files/0040-BACKPORT-y2038-add-64-bit-time_t-syscalls-to-all-32-.patch
@@ -0,0 +1,266 @@
+From 6aa2f6aaca0afba79b362b40cea9501260a7e9ba Mon Sep 17 00:00:00 2001
+From: Arnd Bergmann <arnd@arndb.de>
+Date: Thu, 10 Jan 2019 12:45:11 +0100
+Subject: [PATCH] BACKPORT: y2038: add 64-bit time_t syscalls to all 32-bit
+ architectures
+
+This adds 21 new system calls on each ABI that has 32-bit time_t
+today. All of these have the exact same semantics as their existing
+counterparts, and the new ones all have macro names that end in 'time64'
+for clarification.
+
+This gets us to the point of being able to safely use a C library
+that has 64-bit time_t in user space. There are still a couple of
+loose ends to tie up in various areas of the code, but this is the
+big one, and should be entirely uncontroversial at this point.
+
+In particular, there are four system calls (getitimer, setitimer,
+waitid, and getrusage) that don't have a 64-bit counterpart yet,
+but these can all be safely implemented in the C library by wrapping
+around the existing system calls because the 32-bit time_t they
+pass only counts elapsed time, not time since the epoch. They
+will be dealt with later.
+
+Signed-off-by: Arnd Bergmann <arnd@arndb.de>
+Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
+Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
+Acked-by: Catalin Marinas <catalin.marinas@arm.com>
+---
+ arch/arm/tools/syscall.tbl             | 21 ++++++++++++
+ arch/arm64/include/asm/unistd32.h      | 42 ++++++++++++++++++++++++
+ arch/x86/entry/syscalls/syscall_32.tbl | 21 ++++++++++++
+ include/uapi/asm-generic/unistd.h      | 44 ++++++++++++++++++++++++++
+ scripts/checksyscalls.sh               | 40 +++++++++++++++++++++++
+ 5 files changed, 168 insertions(+)
+
+diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl
+index f58885d46d8f..9d87127f33e8 100644
+--- a/arch/arm/tools/syscall.tbl
++++ b/arch/arm/tools/syscall.tbl
+@@ -412,5 +412,26 @@
+ 395	common	pkey_alloc		sys_pkey_alloc
+ 396	common	pkey_free		sys_pkey_free
+ 397	common	statx			sys_statx
++# 398-402 unused
++403	common	clock_gettime64			sys_clock_gettime
++404	common	clock_settime64			sys_clock_settime
++405	common	clock_adjtime64			sys_clock_adjtime
++406	common	clock_getres_time64		sys_clock_getres
++407	common	clock_nanosleep_time64		sys_clock_nanosleep
++408	common	timer_gettime64			sys_timer_gettime
++409	common	timer_settime64			sys_timer_settime
++410	common	timerfd_gettime64		sys_timerfd_gettime
++411	common	timerfd_settime64		sys_timerfd_settime
++412	common	utimensat_time64		sys_utimensat
++413	common	pselect6_time64			sys_pselect6
++414	common	ppoll_time64			sys_ppoll
++416	common	io_pgetevents_time64		sys_io_pgetevents
++417	common	recvmmsg_time64			sys_recvmmsg
++418	common	mq_timedsend_time64		sys_mq_timedsend
++419	common	mq_timedreceive_time64		sys_mq_timedreceive
++420	common	semtimedop_time64		sys_semtimedop
++421	common	rt_sigtimedwait_time64		sys_rt_sigtimedwait
++422	common	futex_time64			sys_futex
++423	common	sched_rr_get_interval_time64	sys_sched_rr_get_interval
+ 425	common	io_uring_setup		sys_io_uring_setup
+ 426	common	io_uring_enter		sys_io_uring_enter
+diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h
+index 39c43e6c0350..ba9554572592 100644
+--- a/arch/arm64/include/asm/unistd32.h
++++ b/arch/arm64/include/asm/unistd32.h
+@@ -817,6 +817,48 @@ __SYSCALL(__NR_pkey_alloc, sys_pkey_alloc)
+ __SYSCALL(__NR_pkey_free, sys_pkey_free)
+ #define __NR_statx 397
+ __SYSCALL(__NR_statx, sys_statx)
++/* 398-402 is unused */
++#define __NR_clock_gettime64 403
++__SYSCALL(__NR_clock_gettime64, sys_clock_gettime)
++#define __NR_clock_settime64 404
++__SYSCALL(__NR_clock_settime64, sys_clock_settime)
++#define __NR_clock_adjtime64 405
++__SYSCALL(__NR_clock_adjtime64, sys_clock_adjtime)
++#define __NR_clock_getres_time64 406
++__SYSCALL(__NR_clock_getres_time64, sys_clock_getres)
++#define __NR_clock_nanosleep_time64 407
++__SYSCALL(__NR_clock_nanosleep_time64, sys_clock_nanosleep)
++#define __NR_timer_gettime64 408
++__SYSCALL(__NR_timer_gettime64, sys_timer_gettime)
++#define __NR_timer_settime64 409
++__SYSCALL(__NR_timer_settime64, sys_timer_settime)
++#define __NR_timerfd_gettime64 410
++__SYSCALL(__NR_timerfd_gettime64, sys_timerfd_gettime)
++#define __NR_timerfd_settime64 411
++__SYSCALL(__NR_timerfd_settime64, sys_timerfd_settime)
++#define __NR_utimensat_time64 412
++__SYSCALL(__NR_utimensat_time64, sys_utimensat)
++#define __NR_pselect6_time64 413
++__SYSCALL(__NR_pselect6_time64, compat_sys_pselect6_time64)
++#define __NR_ppoll_time64 414
++__SYSCALL(__NR_ppoll_time64, compat_sys_ppoll_time64)
++#define __NR_io_pgetevents_time64 416
++__SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents)
++#define __NR_recvmmsg_time64 417
++__SYSCALL(__NR_recvmmsg_time64, compat_sys_recvmmsg_time64)
++#define __NR_mq_timedsend_time64 418
++__SYSCALL(__NR_mq_timedsend_time64, sys_mq_timedsend)
++#define __NR_mq_timedreceive_time64 419
++__SYSCALL(__NR_mq_timedreceive_time64, sys_mq_timedreceive)
++#define __NR_semtimedop_time64 420
++__SYSCALL(__NR_semtimedop_time64, sys_semtimedop)
++#define __NR_rt_sigtimedwait_time64 421
++__SYSCALL(__NR_rt_sigtimedwait_time64, compat_sys_rt_sigtimedwait_time64)
++#define __NR_futex_time64 422
++__SYSCALL(__NR_futex_time64, sys_futex)
++#define __NR_sched_rr_get_interval_time64 423
++__SYSCALL(__NR_sched_rr_get_interval_time64, sys_sched_rr_get_interval)
++/* 424 is unused */
+ #define __NR_io_uring_setup 425
+ __SYSCALL(__NR_io_uring_setup, sys_io_uring_setup)
+ #define __NR_io_uring_enter 426
+diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl
+index 8f09b3d99eca..b056050a44ba 100644
+--- a/arch/x86/entry/syscalls/syscall_32.tbl
++++ b/arch/x86/entry/syscalls/syscall_32.tbl
+@@ -391,5 +391,26 @@
+ 382	i386	pkey_free		sys_pkey_free
+ 383	i386	statx			sys_statx
+ 384	i386	arch_prctl		sys_arch_prctl			compat_sys_arch_prctl
++# don't use numbers 387 through 392, add new calls at the end
++403	i386	clock_gettime64		sys_clock_gettime		__ia32_sys_clock_gettime
++404	i386	clock_settime64		sys_clock_settime		__ia32_sys_clock_settime
++405	i386	clock_adjtime64		sys_clock_adjtime		__ia32_sys_clock_adjtime
++406	i386	clock_getres_time64	sys_clock_getres		__ia32_sys_clock_getres
++407	i386	clock_nanosleep_time64	sys_clock_nanosleep		__ia32_sys_clock_nanosleep
++408	i386	timer_gettime64		sys_timer_gettime		__ia32_sys_timer_gettime
++409	i386	timer_settime64		sys_timer_settime		__ia32_sys_timer_settime
++410	i386	timerfd_gettime64	sys_timerfd_gettime		__ia32_sys_timerfd_gettime
++411	i386	timerfd_settime64	sys_timerfd_settime		__ia32_sys_timerfd_settime
++412	i386	utimensat_time64	sys_utimensat			__ia32_sys_utimensat
++413	i386	pselect6_time64		sys_pselect6			__ia32_compat_sys_pselect6_time64
++414	i386	ppoll_time64		sys_ppoll			__ia32_compat_sys_ppoll_time64
++416	i386	io_pgetevents_time64	sys_io_pgetevents		__ia32_sys_io_pgetevents
++417	i386	recvmmsg_time64		sys_recvmmsg			__ia32_compat_sys_recvmmsg_time64
++418	i386	mq_timedsend_time64	sys_mq_timedsend		__ia32_sys_mq_timedsend
++419	i386	mq_timedreceive_time64	sys_mq_timedreceive		__ia32_sys_mq_timedreceive
++420	i386	semtimedop_time64	sys_semtimedop			__ia32_sys_semtimedop
++421	i386	rt_sigtimedwait_time64	sys_rt_sigtimedwait		__ia32_compat_sys_rt_sigtimedwait_time64
++422	i386	futex_time64		sys_futex			__ia32_sys_futex
++423	i386	sched_rr_get_interval_time64	sys_sched_rr_get_interval	__ia32_sys_sched_rr_get_interval
+ 425	i386	io_uring_setup		sys_io_uring_setup		__ia32_sys_io_uring_setup
+ 426	i386	io_uring_enter		sys_io_uring_enter		__ia32_sys_io_uring_enter
+diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
+index cd1b40f29c5f..fb577f978ddb 100644
+--- a/include/uapi/asm-generic/unistd.h
++++ b/include/uapi/asm-generic/unistd.h
+@@ -732,6 +732,50 @@ __SYSCALL(__NR_pkey_alloc,    sys_pkey_alloc)
+ __SYSCALL(__NR_pkey_free,     sys_pkey_free)
+ #define __NR_kexec_file_load 291
+ __SYSCALL(__NR_statx,     sys_statx)
++/* 292 through 402 are unassigned to sync up with generic numbers, don't use */
++#if __BITS_PER_LONG == 32
++#define __NR_clock_gettime64 403
++__SYSCALL(__NR_clock_gettime64, sys_clock_gettime)
++#define __NR_clock_settime64 404
++__SYSCALL(__NR_clock_settime64, sys_clock_settime)
++#define __NR_clock_adjtime64 405
++__SYSCALL(__NR_clock_adjtime64, sys_clock_adjtime)
++#define __NR_clock_getres_time64 406
++__SYSCALL(__NR_clock_getres_time64, sys_clock_getres)
++#define __NR_clock_nanosleep_time64 407
++__SYSCALL(__NR_clock_nanosleep_time64, sys_clock_nanosleep)
++#define __NR_timer_gettime64 408
++__SYSCALL(__NR_timer_gettime64, sys_timer_gettime)
++#define __NR_timer_settime64 409
++__SYSCALL(__NR_timer_settime64, sys_timer_settime)
++#define __NR_timerfd_gettime64 410
++__SYSCALL(__NR_timerfd_gettime64, sys_timerfd_gettime)
++#define __NR_timerfd_settime64 411
++__SYSCALL(__NR_timerfd_settime64, sys_timerfd_settime)
++#define __NR_utimensat_time64 412
++__SYSCALL(__NR_utimensat_time64, sys_utimensat)
++#define __NR_pselect6_time64 413
++__SC_COMP(__NR_pselect6_time64, sys_pselect6, compat_sys_pselect6_time64)
++#define __NR_ppoll_time64 414
++__SC_COMP(__NR_ppoll_time64, sys_ppoll, compat_sys_ppoll_time64)
++#define __NR_io_pgetevents_time64 416
++__SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents)
++#define __NR_recvmmsg_time64 417
++__SC_COMP(__NR_recvmmsg_time64, sys_recvmmsg, compat_sys_recvmmsg_time64)
++#define __NR_mq_timedsend_time64 418
++__SYSCALL(__NR_mq_timedsend_time64, sys_mq_timedsend)
++#define __NR_mq_timedreceive_time64 419
++__SYSCALL(__NR_mq_timedreceive_time64, sys_mq_timedreceive)
++#define __NR_semtimedop_time64 420
++__SYSCALL(__NR_semtimedop_time64, sys_semtimedop)
++#define __NR_rt_sigtimedwait_time64 421
++__SC_COMP(__NR_rt_sigtimedwait_time64, sys_rt_sigtimedwait, compat_sys_rt_sigtimedwait_time64)
++#define __NR_futex_time64 422
++__SYSCALL(__NR_futex_time64, sys_futex)
++#define __NR_sched_rr_get_interval_time64 423
++__SYSCALL(__NR_sched_rr_get_interval_time64, sys_sched_rr_get_interval)
++#endif
++/* 424 is unused */
+ #define __NR_io_uring_setup 425
+ __SYSCALL(__NR_io_uring_setup, sys_io_uring_setup)
+ #define __NR_io_uring_enter 426
+diff --git a/scripts/checksyscalls.sh b/scripts/checksyscalls.sh
+index ee3dfb5be6cd..b7f01867bf7e 100755
+--- a/scripts/checksyscalls.sh
++++ b/scripts/checksyscalls.sh
+@@ -84,6 +84,26 @@ cat << EOF
+ #define __IGNORE_statfs64
+ #define __IGNORE_llseek
+ #define __IGNORE_mmap2
++#define __IGNORE_clock_gettime64
++#define __IGNORE_clock_settime64
++#define __IGNORE_clock_adjtime64
++#define __IGNORE_clock_getres_time64
++#define __IGNORE_clock_nanosleep_time64
++#define __IGNORE_timer_gettime64
++#define __IGNORE_timer_settime64
++#define __IGNORE_timerfd_gettime64
++#define __IGNORE_timerfd_settime64
++#define __IGNORE_utimensat_time64
++#define __IGNORE_pselect6_time64
++#define __IGNORE_ppoll_time64
++#define __IGNORE_io_pgetevents_time64
++#define __IGNORE_recvmmsg_time64
++#define __IGNORE_mq_timedsend_time64
++#define __IGNORE_mq_timedreceive_time64
++#define __IGNORE_semtimedop_time64
++#define __IGNORE_rt_sigtimedwait_time64
++#define __IGNORE_futex_time64
++#define __IGNORE_sched_rr_get_interval_time64
+ #else
+ #define __IGNORE_sendfile
+ #define __IGNORE_ftruncate
+@@ -98,6 +118,26 @@ cat << EOF
+ #define __IGNORE_statfs
+ #define __IGNORE_lseek
+ #define __IGNORE_mmap
++#define __IGNORE_clock_gettime
++#define __IGNORE_clock_settime
++#define __IGNORE_clock_adjtime
++#define __IGNORE_clock_getres
++#define __IGNORE_clock_nanosleep
++#define __IGNORE_timer_gettime
++#define __IGNORE_timer_settime
++#define __IGNORE_timerfd_gettime
++#define __IGNORE_timerfd_settime
++#define __IGNORE_utimensat
++#define __IGNORE_pselect6
++#define __IGNORE_ppoll
++#define __IGNORE_io_pgetevents
++#define __IGNORE_recvmmsg
++#define __IGNORE_mq_timedsend
++#define __IGNORE_mq_timedreceiv
++#define __IGNORE_semtimedop
++#define __IGNORE_rt_sigtimedwait
++#define __IGNORE_futex
++#define __IGNORE_sched_rr_get_interval
+ #endif
+ 
+ /* i386-specific or historical system calls */
+-- 
+2.30.1
+
diff --git a/sys-kernel/linux-headers/files/0040-CHROMIUM-v4l2-add-upstream-V4L2-H.264-stateless-cont.patch b/sys-kernel/linux-headers/files/0040-CHROMIUM-v4l2-add-upstream-V4L2-H.264-stateless-cont.patch
new file mode 100644
index 0000000..d4a950d
--- /dev/null
+++ b/sys-kernel/linux-headers/files/0040-CHROMIUM-v4l2-add-upstream-V4L2-H.264-stateless-cont.patch
@@ -0,0 +1,430 @@
+From 8bb22c70316884c5fba31025b63189badffad71c Mon Sep 17 00:00:00 2001
+From: Alexandre Courbot <acourbot@chromium.org>
+Date: Wed, 24 Feb 2021 16:50:53 +0900
+Subject: [PATCH] CHROMIUM: v4l2: add upstream V4L2 H.264 stateless controls
+
+Add the official stable H.264 controls so Chromium can use them. The
+controls are up-to-date as to commit 8f202f8e9ff3.
+
+BUG=b:149437087
+
+Change-Id: I4f3f96fe3252db25bb55a94673767428f76bf544
+---
+ include/uapi/linux/media/h264-ctrls-upstream.h | 405 ++++++++++++++++++++++++++++
+ 1 file changed, 405 insertions(+)
+ create mode 100644 include/media/h264-ctrls-upstream.h
+
+diff --git a/include/uapi/linux/media/h264-ctrls-upstream.h b/include/uapi/linux/media/h264-ctrls-upstream.h
+new file mode 100644
+index 000000000000..64f6d78a8a82
+--- /dev/null
++++ b/include/uapi/linux/media/h264-ctrls-upstream.h
+@@ -0,0 +1,405 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++/*
++ * These are the H.264 state controls for use with stateless H.264
++ * codec drivers.
++ *
++ * It turns out that these structs are not stable yet and will undergo
++ * more changes. So keep them private until they are stable and ready to
++ * become part of the official public API.
++ */
++
++#ifndef _H264_CTRLS_UPSTREAM_H_
++#define _H264_CTRLS_UPSTREAM_H_
++
++#include <linux/videodev2.h>
++
++#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
++
++#define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000	/* Stateless codecs controls */
++
++/*  Stateless CODECs controls */
++#define V4L2_CID_CODEC_STATELESS_BASE          (V4L2_CTRL_CLASS_CODEC_STATELESS | 0x900)
++#define V4L2_CID_CODEC_STATELESS_CLASS         (V4L2_CTRL_CLASS_CODEC_STATELESS | 1)
++
++#define V4L2_CID_STATELESS_H264_DECODE_MODE	(V4L2_CID_CODEC_STATELESS_BASE + 0)
++/**
++ * enum v4l2_stateless_h264_decode_mode - Decoding mode
++ *
++ * @V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED: indicates that decoding
++ * is performed one slice at a time. In this mode,
++ * V4L2_CID_STATELESS_H264_SLICE_PARAMS must contain the parsed slice
++ * parameters and the OUTPUT buffer must contain a single slice.
++ * V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF feature is used
++ * in order to support multislice frames.
++ * @V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED: indicates that
++ * decoding is performed per frame. The OUTPUT buffer must contain
++ * all slices and also both fields. This mode is typically supported
++ * by device drivers that are able to parse the slice(s) header(s)
++ * in hardware. When this mode is selected,
++ * V4L2_CID_STATELESS_H264_SLICE_PARAMS is not used.
++ */
++enum v4l2_stateless_h264_decode_mode {
++	V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED,
++	V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
++};
++
++#define V4L2_CID_STATELESS_H264_START_CODE	(V4L2_CID_CODEC_STATELESS_BASE + 1)
++/**
++ * enum v4l2_stateless_h264_start_code - Start code
++ *
++ * @V4L2_STATELESS_H264_START_CODE_NONE: slices are passed
++ * to the driver without any start code.
++ * @V4L2_STATELESS_H264_START_CODE_ANNEX_B: slices are passed
++ * to the driver with an Annex B start code prefix
++ * (legal start codes can be 3-bytes 0x000001 or 4-bytes 0x00000001).
++ * This mode is typically supported by device drivers that parse
++ * the start code in hardware.
++ */
++enum v4l2_stateless_h264_start_code {
++	V4L2_STATELESS_H264_START_CODE_NONE,
++	V4L2_STATELESS_H264_START_CODE_ANNEX_B,
++};
++
++#define V4L2_H264_SPS_CONSTRAINT_SET0_FLAG			0x01
++#define V4L2_H264_SPS_CONSTRAINT_SET1_FLAG			0x02
++#define V4L2_H264_SPS_CONSTRAINT_SET2_FLAG			0x04
++#define V4L2_H264_SPS_CONSTRAINT_SET3_FLAG			0x08
++#define V4L2_H264_SPS_CONSTRAINT_SET4_FLAG			0x10
++#define V4L2_H264_SPS_CONSTRAINT_SET5_FLAG			0x20
++
++#define V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE		0x01
++#define V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS	0x02
++#define V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO		0x04
++#define V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED	0x08
++#define V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY			0x10
++#define V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD		0x20
++#define V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE			0x40
++
++#define V4L2_H264_SPS_HAS_CHROMA_FORMAT(sps) \
++	((sps)->profile_idc == 100 || (sps)->profile_idc == 110 || \
++	 (sps)->profile_idc == 122 || (sps)->profile_idc == 244 || \
++	 (sps)->profile_idc == 44  || (sps)->profile_idc == 83  || \
++	 (sps)->profile_idc == 86  || (sps)->profile_idc == 118 || \
++	 (sps)->profile_idc == 128 || (sps)->profile_idc == 138 || \
++	 (sps)->profile_idc == 139 || (sps)->profile_idc == 134 || \
++	 (sps)->profile_idc == 135)
++
++#define V4L2_CID_STATELESS_H264_SPS		(V4L2_CID_CODEC_STATELESS_BASE + 2)
++/**
++ * struct v4l2_ctrl_h264_sps - H264 sequence parameter set
++ *
++ * All the members on this sequence parameter set structure match the
++ * sequence parameter set syntax as specified by the H264 specification.
++ *
++ * @profile_idc: see H264 specification.
++ * @constraint_set_flags: see H264 specification.
++ * @level_idc: see H264 specification.
++ * @seq_parameter_set_id: see H264 specification.
++ * @chroma_format_idc: see H264 specification.
++ * @bit_depth_luma_minus8: see H264 specification.
++ * @bit_depth_chroma_minus8: see H264 specification.
++ * @log2_max_frame_num_minus4: see H264 specification.
++ * @pic_order_cnt_type: see H264 specification.
++ * @log2_max_pic_order_cnt_lsb_minus4: see H264 specification.
++ * @max_num_ref_frames: see H264 specification.
++ * @num_ref_frames_in_pic_order_cnt_cycle: see H264 specification.
++ * @offset_for_ref_frame: see H264 specification.
++ * @offset_for_non_ref_pic: see H264 specification.
++ * @offset_for_top_to_bottom_field: see H264 specification.
++ * @pic_width_in_mbs_minus1: see H264 specification.
++ * @pic_height_in_map_units_minus1: see H264 specification.
++ * @flags: see V4L2_H264_SPS_FLAG_{}.
++ */
++struct v4l2_ctrl_h264_sps {
++	__u8 profile_idc;
++	__u8 constraint_set_flags;
++	__u8 level_idc;
++	__u8 seq_parameter_set_id;
++	__u8 chroma_format_idc;
++	__u8 bit_depth_luma_minus8;
++	__u8 bit_depth_chroma_minus8;
++	__u8 log2_max_frame_num_minus4;
++	__u8 pic_order_cnt_type;
++	__u8 log2_max_pic_order_cnt_lsb_minus4;
++	__u8 max_num_ref_frames;
++	__u8 num_ref_frames_in_pic_order_cnt_cycle;
++	__s32 offset_for_ref_frame[255];
++	__s32 offset_for_non_ref_pic;
++	__s32 offset_for_top_to_bottom_field;
++	__u16 pic_width_in_mbs_minus1;
++	__u16 pic_height_in_map_units_minus1;
++	__u32 flags;
++};
++
++#define V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE				0x0001
++#define V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT	0x0002
++#define V4L2_H264_PPS_FLAG_WEIGHTED_PRED				0x0004
++#define V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT		0x0008
++#define V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED			0x0010
++#define V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT			0x0020
++#define V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE				0x0040
++#define V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT			0x0080
++
++#define V4L2_CID_STATELESS_H264_PPS		(V4L2_CID_CODEC_STATELESS_BASE + 3)
++/**
++ * struct v4l2_ctrl_h264_pps - H264 picture parameter set
++ *
++ * Except where noted, all the members on this picture parameter set
++ * structure match the sequence parameter set syntax as specified
++ * by the H264 specification.
++ *
++ * In particular, V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT flag
++ * has a specific meaning. This flag should be set if a non-flat
++ * scaling matrix applies to the picture. In this case, applications
++ * are expected to use V4L2_CID_STATELESS_H264_SCALING_MATRIX,
++ * to pass the values of the non-flat matrices.
++ *
++ * @pic_parameter_set_id: see H264 specification.
++ * @seq_parameter_set_id: see H264 specification.
++ * @num_slice_groups_minus1: see H264 specification.
++ * @num_ref_idx_l0_default_active_minus1: see H264 specification.
++ * @num_ref_idx_l1_default_active_minus1: see H264 specification.
++ * @weighted_bipred_idc: see H264 specification.
++ * @pic_init_qp_minus26: see H264 specification.
++ * @pic_init_qs_minus26: see H264 specification.
++ * @chroma_qp_index_offset: see H264 specification.
++ * @second_chroma_qp_index_offset: see H264 specification.
++ * @flags: see V4L2_H264_PPS_FLAG_{}.
++ */
++struct v4l2_ctrl_h264_pps {
++	__u8 pic_parameter_set_id;
++	__u8 seq_parameter_set_id;
++	__u8 num_slice_groups_minus1;
++	__u8 num_ref_idx_l0_default_active_minus1;
++	__u8 num_ref_idx_l1_default_active_minus1;
++	__u8 weighted_bipred_idc;
++	__s8 pic_init_qp_minus26;
++	__s8 pic_init_qs_minus26;
++	__s8 chroma_qp_index_offset;
++	__s8 second_chroma_qp_index_offset;
++	__u16 flags;
++};
++
++#define V4L2_CID_STATELESS_H264_SCALING_MATRIX	(V4L2_CID_CODEC_STATELESS_BASE + 4)
++/**
++ * struct v4l2_ctrl_h264_scaling_matrix - H264 scaling matrices
++ *
++ * @scaling_list_4x4: scaling matrix after applying the inverse
++ * scanning process. Expected list order is Intra Y, Intra Cb,
++ * Intra Cr, Inter Y, Inter Cb, Inter Cr. The values on each
++ * scaling list are expected in raster scan order.
++ * @scaling_list_8x8: scaling matrix after applying the inverse
++ * scanning process. Expected list order is Intra Y, Inter Y,
++ * Intra Cb, Inter Cb, Intra Cr, Inter Cr. The values on each
++ * scaling list are expected in raster scan order.
++ *
++ * Note that the list order is different for the 4x4 and 8x8
++ * matrices as per the H264 specification, see table 7-2 "Assignment
++ * of mnemonic names to scaling list indices and specification of
++ * fall-back rule".
++ */
++struct v4l2_ctrl_h264_scaling_matrix {
++	__u8 scaling_list_4x4[6][16];
++	__u8 scaling_list_8x8[6][64];
++};
++
++struct v4l2_h264_weight_factors {
++	__s16 luma_weight[32];
++	__s16 luma_offset[32];
++	__s16 chroma_weight[32][2];
++	__s16 chroma_offset[32][2];
++};
++
++#define V4L2_H264_CTRL_PRED_WEIGHTS_REQUIRED(pps, slice) \
++	((((pps)->flags & V4L2_H264_PPS_FLAG_WEIGHTED_PRED) && \
++	 ((slice)->slice_type == V4L2_H264_SLICE_TYPE_P || \
++	  (slice)->slice_type == V4L2_H264_SLICE_TYPE_SP)) || \
++	 ((pps)->weighted_bipred_idc == 1 && \
++	  (slice)->slice_type == V4L2_H264_SLICE_TYPE_B))
++
++#define V4L2_CID_STATELESS_H264_PRED_WEIGHTS	(V4L2_CID_CODEC_STATELESS_BASE + 5)
++/**
++ * struct v4l2_ctrl_h264_pred_weights - Prediction weight table
++ *
++ * Prediction weight table, which matches the syntax specified
++ * by the H264 specification.
++ *
++ * @luma_log2_weight_denom: see H264 specification.
++ * @chroma_log2_weight_denom: see H264 specification.
++ * @weight_factors: luma and chroma weight factors.
++ */
++struct v4l2_ctrl_h264_pred_weights {
++	__u16 luma_log2_weight_denom;
++	__u16 chroma_log2_weight_denom;
++	struct v4l2_h264_weight_factors weight_factors[2];
++};
++
++#define V4L2_H264_SLICE_TYPE_P				0
++#define V4L2_H264_SLICE_TYPE_B				1
++#define V4L2_H264_SLICE_TYPE_I				2
++#define V4L2_H264_SLICE_TYPE_SP				3
++#define V4L2_H264_SLICE_TYPE_SI				4
++
++#define V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED	0x01
++#define V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH		0x02
++
++#define V4L2_H264_TOP_FIELD_REF				0x1
++#define V4L2_H264_BOTTOM_FIELD_REF			0x2
++#define V4L2_H264_FRAME_REF				0x3
++
++/**
++ * struct v4l2_h264_reference - H264 picture reference
++ *
++ * @fields: indicates how the picture is referenced.
++ * Valid values are V4L2_H264_{}_REF.
++ * @index: index into v4l2_ctrl_h264_decode_params.dpb[].
++ */
++struct v4l2_h264_reference {
++	__u8 fields;
++	__u8 index;
++};
++
++/*
++ * Maximum DPB size, as specified by section 'A.3.1 Level limits
++ * common to the Baseline, Main, and Extended profiles'.
++ */
++#define V4L2_H264_NUM_DPB_ENTRIES 16
++#define V4L2_H264_REF_LIST_LEN (2 * V4L2_H264_NUM_DPB_ENTRIES)
++
++#define V4L2_CID_STATELESS_H264_SLICE_PARAMS	(V4L2_CID_CODEC_STATELESS_BASE + 6)
++/**
++ * struct v4l2_ctrl_h264_slice_params - H264 slice parameters
++ *
++ * This structure holds the H264 syntax elements that are specified
++ * as non-invariant for the slices in a given frame.
++ *
++ * Slice invariant syntax elements are contained in struct
++ * v4l2_ctrl_h264_decode_params. This is done to reduce the API surface
++ * on frame-based decoders, where slice header parsing is done by the
++ * hardware.
++ *
++ * Slice invariant syntax elements are specified in specification section
++ * "7.4.3 Slice header semantics".
++ *
++ * Except where noted, the members on this struct match the slice header syntax.
++ *
++ * @header_bit_size: offset in bits to slice_data() from the beginning of this slice.
++ * @first_mb_in_slice: see H264 specification.
++ * @slice_type: see H264 specification.
++ * @colour_plane_id: see H264 specification.
++ * @redundant_pic_cnt: see H264 specification.
++ * @cabac_init_idc: see H264 specification.
++ * @slice_qp_delta: see H264 specification.
++ * @slice_qs_delta: see H264 specification.
++ * @disable_deblocking_filter_idc: see H264 specification.
++ * @slice_alpha_c0_offset_div2: see H264 specification.
++ * @slice_beta_offset_div2: see H264 specification.
++ * @num_ref_idx_l0_active_minus1: see H264 specification.
++ * @num_ref_idx_l1_active_minus1: see H264 specification.
++ * @reserved: padding field. Should be zeroed by applications.
++ * @ref_pic_list0: reference picture list 0 after applying the per-slice modifications.
++ * @ref_pic_list1: reference picture list 1 after applying the per-slice modifications.
++ * @flags: see V4L2_H264_SLICE_FLAG_{}.
++ */
++struct v4l2_ctrl_h264_slice_params {
++	__u32 header_bit_size;
++	__u32 first_mb_in_slice;
++	__u8 slice_type;
++	__u8 colour_plane_id;
++	__u8 redundant_pic_cnt;
++	__u8 cabac_init_idc;
++	__s8 slice_qp_delta;
++	__s8 slice_qs_delta;
++	__u8 disable_deblocking_filter_idc;
++	__s8 slice_alpha_c0_offset_div2;
++	__s8 slice_beta_offset_div2;
++	__u8 num_ref_idx_l0_active_minus1;
++	__u8 num_ref_idx_l1_active_minus1;
++
++	__u8 reserved;
++
++	struct v4l2_h264_reference ref_pic_list0[V4L2_H264_REF_LIST_LEN];
++	struct v4l2_h264_reference ref_pic_list1[V4L2_H264_REF_LIST_LEN];
++
++	__u32 flags;
++};
++
++#define V4L2_H264_DPB_ENTRY_FLAG_VALID		0x01
++#define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE		0x02
++#define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM	0x04
++#define V4L2_H264_DPB_ENTRY_FLAG_FIELD		0x08
++
++/**
++ * struct v4l2_h264_dpb_entry - H264 decoded picture buffer entry
++ *
++ * @reference_ts: timestamp of the V4L2 capture buffer to use as reference.
++ * The timestamp refers to the timestamp field in struct v4l2_buffer.
++ * Use v4l2_timeval_to_ns() to convert the struct timeval to a __u64.
++ * @pic_num: matches PicNum variable assigned during the reference
++ * picture lists construction process.
++ * @frame_num: frame identifier which matches frame_num syntax element.
++ * @fields: indicates how the DPB entry is referenced. Valid values are
++ * V4L2_H264_{}_REF.
++ * @reserved: padding field. Should be zeroed by applications.
++ * @top_field_order_cnt: matches TopFieldOrderCnt picture value.
++ * @bottom_field_order_cnt: matches BottomFieldOrderCnt picture value.
++ * Note that picture field is indicated by v4l2_buffer.field.
++ * @flags: see V4L2_H264_DPB_ENTRY_FLAG_{}.
++ */
++struct v4l2_h264_dpb_entry {
++	__u64 reference_ts;
++	__u32 pic_num;
++	__u16 frame_num;
++	__u8 fields;
++	__u8 reserved[5];
++	__s32 top_field_order_cnt;
++	__s32 bottom_field_order_cnt;
++	__u32 flags;
++};
++
++#define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC		0x01
++#define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC		0x02
++#define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD	0x04
++
++#define V4L2_CID_STATELESS_H264_DECODE_PARAMS	(V4L2_CID_CODEC_STATELESS_BASE + 7)
++/**
++ * struct v4l2_ctrl_h264_decode_params - H264 decoding parameters
++ *
++ * @dpb: decoded picture buffer.
++ * @nal_ref_idc: slice header syntax element.
++ * @frame_num: slice header syntax element.
++ * @top_field_order_cnt: matches TopFieldOrderCnt picture value.
++ * @bottom_field_order_cnt: matches BottomFieldOrderCnt picture value.
++ * Note that picture field is indicated by v4l2_buffer.field.
++ * @idr_pic_id: slice header syntax element.
++ * @pic_order_cnt_lsb: slice header syntax element.
++ * @delta_pic_order_cnt_bottom: slice header syntax element.
++ * @delta_pic_order_cnt0: slice header syntax element.
++ * @delta_pic_order_cnt1: slice header syntax element.
++ * @dec_ref_pic_marking_bit_size: size in bits of dec_ref_pic_marking()
++ * syntax element.
++ * @pic_order_cnt_bit_size: size in bits of pic order count syntax.
++ * @slice_group_change_cycle: slice header syntax element.
++ * @reserved: padding field. Should be zeroed by applications.
++ * @flags: see V4L2_H264_DECODE_PARAM_FLAG_{}.
++ */
++struct v4l2_ctrl_h264_decode_params {
++	struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
++	__u16 nal_ref_idc;
++	__u16 frame_num;
++	__s32 top_field_order_cnt;
++	__s32 bottom_field_order_cnt;
++	__u16 idr_pic_id;
++	__u16 pic_order_cnt_lsb;
++	__s32 delta_pic_order_cnt_bottom;
++	__s32 delta_pic_order_cnt0;
++	__s32 delta_pic_order_cnt1;
++	__u32 dec_ref_pic_marking_bit_size;
++	__u32 pic_order_cnt_bit_size;
++	__u32 slice_group_change_cycle;
++
++	__u32 reserved;
++	__u32 flags;
++};
++
++#endif /* _H264_CTRLS_UPSTREAM_H_ */
+-- 
+2.30.0.617.g56c4b15f3c-goog
+
diff --git a/sys-kernel/linux-headers/files/0041-CHROMIUM-v4l-add-request-based-VP9-stateless-control.patch b/sys-kernel/linux-headers/files/0041-CHROMIUM-v4l-add-request-based-VP9-stateless-control.patch
new file mode 100644
index 0000000..1a9a375
--- /dev/null
+++ b/sys-kernel/linux-headers/files/0041-CHROMIUM-v4l-add-request-based-VP9-stateless-control.patch
@@ -0,0 +1,516 @@
+From 516109a6e3a4533346718a94061aa4ff172a5ec2 Mon Sep 17 00:00:00 2001
+From: Alexandre Courbot <acourbot@chromium.org>
+Date: Thu, 25 Mar 2021 22:02:03 +0900
+Subject: [PATCH] CHROMIUM: v4l: add request-based VP9 stateless controls
+
+Add the VP9 controls that Chromium is currently using along with the
+request API.
+
+Signed-off-by: Alexandre Courbot <acourbot@chromium.org>
+Change-Id: Iad4a25aaa076a6e6e159add501d256f8e0bd6af3
+---
+ include/uapi/linux/media/vp9-ctrls.h | 492 +++++++++++++++++++++++++++
+ 1 file changed, 492 insertions(+)
+ create mode 100644 include/uapi/linux/media/vp9-ctrls.h
+
+diff --git a/include/uapi/linux/media/vp9-ctrls.h b/include/uapi/linux/media/vp9-ctrls.h
+new file mode 100644
+index 000000000000..c71e36e121e3
+--- /dev/null
++++ b/include/uapi/linux/media/vp9-ctrls.h
+@@ -0,0 +1,492 @@
++/* SPDX-License-Identifier: GPL-2.0 */
++/*
++ * These are the VP9 state controls for use with stateless VP9
++ * codec drivers.
++ *
++ * It turns out that these structs are not stable yet and will undergo
++ * more changes. So keep them private until they are stable and ready to
++ * become part of the official public API.
++ */
++
++#ifndef _VP9_CTRLS_H_
++#define _VP9_CTRLS_H_
++
++#include <linux/types.h>
++
++#define V4L2_PIX_FMT_VP9_FRAME v4l2_fourcc('V', 'P', '9', 'F')
++
++#define V4L2_CID_MPEG_VIDEO_VP9_FRAME_CONTEXT(i)	(V4L2_CID_MPEG_BASE + 4000 + (i))
++#define V4L2_CID_MPEG_VIDEO_VP9_FRAME_DECODE_PARAMS	(V4L2_CID_MPEG_BASE + 4004)
++#define V4L2_CTRL_TYPE_VP9_FRAME_CONTEXT		0x400
++#define V4L2_CTRL_TYPE_VP9_FRAME_DECODE_PARAMS		0x404
++
++/**
++ * enum v4l2_vp9_loop_filter_flags - VP9 loop filter flags
++ *
++ * @V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED: the filter level depends on
++ *					     the mode and reference frame used
++ *					     to predict a block
++ * @V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE: the bitstream contains additional
++ *					    syntax elements that specify which
++ *					    mode and reference frame deltas
++ *					    are to be updated
++ *
++ * Those are the flags you should pass to &v4l2_vp9_loop_filter.flags. See
++ * section '7.2.8 Loop filter semantics' of the VP9 specification for more
++ * details.
++ */
++enum v4l2_vp9_loop_filter_flags {
++	V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED = 1 << 0,
++	V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE = 1 << 1,
++};
++
++/**
++ * struct v4l2_vp9_loop_filter - VP9 loop filter parameters
++ *
++ * @flags: combination of V4L2_VP9_LOOP_FILTER_FLAG_* flags
++ * @level: indicates the loop filter strength
++ * @sharpness: indicates the sharpness level
++ * @ref_deltas: contains the adjustment needed for the filter level based on
++ *		the chosen reference frame
++ * @mode_deltas: contains the adjustment needed for the filter level based on
++ *		 the chosen mode
++ * @level_lookup: level lookup table
++ *
++ * This structure contains all loop filter related parameters. See sections
++ * '7.2.8 Loop filter semantics' and '8.8.1 Loop filter frame init process'
++ * of the VP9 specification for more details.
++ */
++struct v4l2_vp9_loop_filter {
++	__u8 flags;
++	__u8 level;
++	__u8 sharpness;
++	__s8 ref_deltas[4];
++	__s8 mode_deltas[2];
++	__u8 level_lookup[8][4][2];
++};
++
++/**
++ * struct v4l2_vp9_quantization - VP9 quantization parameters
++ *
++ * @base_q_idx: indicates the base frame qindex
++ * @delta_q_y_dc: indicates the Y DC quantizer relative to base_q_idx
++ * @delta_q_uv_dc: indicates the UV DC quantizer relative to base_q_idx
++ * @delta_q_uv_ac indicates the UV AC quantizer relative to base_q_idx
++ * @padding: padding bytes to align things on 64 bits. Must be set to 0
++ *
++ * Encodes the quantization parameters. See section '7.2.9 Quantization params
++ * syntax' of the VP9 specification for more details.
++ */
++struct v4l2_vp9_quantization {
++	/* TODO LOSSLESS flag missing? */
++	__u8 base_q_idx;
++	__s8 delta_q_y_dc;
++	__s8 delta_q_uv_dc;
++	__s8 delta_q_uv_ac;
++	__u8 padding[4];
++};
++
++/**
++ * enum v4l2_vp9_segmentation_flags - VP9 segmentation flags
++ *
++ * @V4L2_VP9_SEGMENTATION_FLAG_ENABLED: indicates that this frame makes use of
++ *					the segmentation tool
++ * @V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP: indicates that the segmentation map
++ *					   should be updated during the
++ *					   decoding of this frame
++ * @V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE: indicates that the updates to
++ *						the segmentation map are coded
++ *						relative to the existing
++ *						segmentation map
++ * @V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA: indicates that new parameters are
++ *					    about to be specified for each
++ *					    segment
++ * @V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE: indicates that the
++ *						    segmentation parameters
++ *						    represent the actual values
++ *						    to be used
++ *
++ * Those are the flags you should pass to &v4l2_vp9_segmentation.flags. See
++ * section '7.2.10 Segmentation params syntax' of the VP9 specification for
++ * more details.
++ */
++enum v4l2_vp9_segmentation_flags {
++	V4L2_VP9_SEGMENTATION_FLAG_ENABLED = 1 << 0,
++	V4L2_VP9_SEGMENTATION_FLAG_UPDATE_MAP = 1 << 1,
++	V4L2_VP9_SEGMENTATION_FLAG_TEMPORAL_UPDATE = 1 << 2,
++	V4L2_VP9_SEGMENTATION_FLAG_UPDATE_DATA = 1 << 3,
++	V4L2_VP9_SEGMENTATION_FLAG_ABS_OR_DELTA_UPDATE = 1 << 4,
++};
++
++#define V4L2_VP9_SEGMENT_FEATURE_ENABLED(id)	(1 << (id))
++#define V4L2_VP9_SEGMENT_FEATURE_ENABLED_MASK	0xf
++
++/**
++ * enum v4l2_vp9_segment_feature - VP9 segment feature IDs
++ *
++ * @V4L2_VP9_SEGMENT_FEATURE_QP_DELTA: QP delta segment feature
++ * @V4L2_VP9_SEGMENT_FEATURE_LF: loop filter segment feature
++ * @V4L2_VP9_SEGMENT_FEATURE_REF_FRAME: reference frame segment feature
++ * @V4L2_VP9_SEGMENT_FEATURE_SKIP: skip segment feature
++ * @V4L2_VP9_SEGMENT_FEATURE_CNT: number of segment features
++ *
++ * Segment feature IDs. See section '7.2.10 Segmentation params syntax' of the
++ * VP9 specification for more details.
++ */
++enum v4l2_vp9_segment_feature {
++	V4L2_VP9_SEGMENT_FEATURE_QP_DELTA,
++	V4L2_VP9_SEGMENT_FEATURE_LF,
++	V4L2_VP9_SEGMENT_FEATURE_REF_FRAME,
++	V4L2_VP9_SEGMENT_FEATURE_SKIP,
++	V4L2_VP9_SEGMENT_FEATURE_CNT,
++};
++
++/**
++ * struct v4l2_vp9_segmentation - VP9 segmentation parameters
++ *
++ * @flags: combination of V4L2_VP9_SEGMENTATION_FLAG_* flags
++ * @tree_probs: specifies the probability values to be used when
++ *              decoding a Segment-ID. See '5.15. Segmentation map'
++ *              section of the VP9 specification for more details.
++ * @pred_prob: specifies the probability values to be used when decoding a
++ *	       Predicted-Segment-ID. See '6.4.14. Get segment id syntax'
++ *	       section of :ref:`vp9` for more details..
++ * @padding: padding used to make things aligned on 64 bits. Shall be zero
++ *	     filled
++ * @feature_enabled: bitmask defining which features are enabled in each
++ *		     segment
++ * @feature_data: data attached to each feature. Data entry is only valid if
++ *		  the feature is enabled
++ *
++ * Encodes the quantization parameters. See section '7.2.10 Segmentation
++ * params syntax' of the VP9 specification for more details.
++ */
++struct v4l2_vp9_segmentation {
++	__u8 flags;
++	__u8 tree_probs[7];
++	__u8 pred_probs[3];
++	__u8 padding[5];
++	__u8 feature_enabled[8];
++	__s16 feature_data[8][4];
++};
++
++/**
++ * enum v4l2_vp9_intra_prediction_mode - VP9 Intra prediction modes
++ *
++ * @V4L2_VP9_INTRA_PRED_DC: DC intra prediction
++ * @V4L2_VP9_INTRA_PRED_MODE_V: vertical intra prediction
++ * @V4L2_VP9_INTRA_PRED_MODE_H: horizontal intra prediction
++ * @V4L2_VP9_INTRA_PRED_MODE_D45: D45 intra prediction
++ * @V4L2_VP9_INTRA_PRED_MODE_D135: D135 intra prediction
++ * @V4L2_VP9_INTRA_PRED_MODE_D117: D117 intra prediction
++ * @V4L2_VP9_INTRA_PRED_MODE_D153: D153 intra prediction
++ * @V4L2_VP9_INTRA_PRED_MODE_D207: D207 intra prediction
++ * @V4L2_VP9_INTRA_PRED_MODE_D63: D63 intra prediction
++ * @V4L2_VP9_INTRA_PRED_MODE_TM: True Motion intra prediction
++ *
++ * See section '7.4.5 Intra frame mode info semantics' for more details.
++ */
++// TODO where is this used??
++enum v4l2_vp9_intra_prediction_mode {
++	V4L2_VP9_INTRA_PRED_MODE_DC,
++	V4L2_VP9_INTRA_PRED_MODE_V,
++	V4L2_VP9_INTRA_PRED_MODE_H,
++	V4L2_VP9_INTRA_PRED_MODE_D45,
++	V4L2_VP9_INTRA_PRED_MODE_D135,
++	V4L2_VP9_INTRA_PRED_MODE_D117,
++	V4L2_VP9_INTRA_PRED_MODE_D153,
++	V4L2_VP9_INTRA_PRED_MODE_D207,
++	V4L2_VP9_INTRA_PRED_MODE_D63,
++	V4L2_VP9_INTRA_PRED_MODE_TM,
++};
++
++/**
++ * struct v4l2_vp9_mv_probabilities - VP9 Motion vector probabilities
++ * @joint: motion vector joint probabilities
++ * @sign: motion vector sign probabilities
++ * @class_: motion vector class probabilities
++ * @class0_bit: motion vector class0 bit probabilities
++ * @bits: motion vector bits probabilities
++ * @class0_fr: motion vector class0 fractional bit probabilities
++ * @fr: motion vector fractional bit probabilities
++ * @class0_hp: motion vector class0 high precision fractional bit probabilities
++ * @hp: motion vector high precision fractional bit probabilities
++ */
++struct v4l2_vp9_mv_probabilities {
++	__u8 joint[3];
++	__u8 sign[2];
++	__u8 class_[2][10];
++	__u8 class0_bit[2];
++	__u8 bits[2][10];
++	__u8 class0_fr[2][2][3];
++	__u8 fr[2][3];
++	__u8 class0_hp[2];
++	__u8 hp[2];
++};
++
++/**
++ * struct v4l2_vp9_probabilities - VP9 Probabilities
++ *
++ * @tx8: TX 8x8 probabilities
++ * @tx16: TX 16x16 probabilities
++ * @tx32: TX 32x32 probabilities
++ * @coef: coefficient probabilities
++ * @skip: skip probabilities
++ * @inter_mode: inter mode probabilities
++ * @interp_filter: interpolation filter probabilities
++ * @is_inter: is inter-block probabilities
++ * @comp_mode: compound prediction mode probabilities
++ * @single_ref: single ref probabilities
++ * @comp_ref: compound ref probabilities
++ * @y_mode: Y prediction mode probabilities
++ * @uv_mode: UV prediction mode probabilities
++ * @partition: partition probabilities
++ * @mv: motion vector probabilities
++ *
++ * Structure containing most VP9 probabilities. See the VP9 specification
++ * for more details.
++ */
++struct v4l2_vp9_probabilities {
++	__u8 tx8[2][1];
++	__u8 tx16[2][2];
++	__u8 tx32[2][3];
++	__u8 coef[4][2][2][6][6][3];
++	__u8 skip[3];
++	__u8 inter_mode[7][3];
++	__u8 interp_filter[4][2];
++	__u8 is_inter[4];
++	__u8 comp_mode[5];
++	__u8 single_ref[5][2];
++	__u8 comp_ref[5];
++	__u8 y_mode[4][9];
++	__u8 uv_mode[10][9];
++	__u8 partition[16][3];
++
++	struct v4l2_vp9_mv_probabilities mv;
++};
++
++/**
++ * enum v4l2_vp9_reset_frame_context - Valid values for
++ *			&v4l2_ctrl_vp9_frame_decode_params->reset_frame_context
++ *
++ * @V4L2_VP9_RESET_FRAME_CTX_NONE: don't reset any frame context
++ * @V4L2_VP9_RESET_FRAME_CTX_SPEC: reset the frame context pointed by
++ *			&v4l2_ctrl_vp9_frame_decode_params.frame_context_idx
++ * @V4L2_VP9_RESET_FRAME_CTX_ALL: reset all frame contexts
++ *
++ * See section '7.2 Uncompressed header semantics' of the VP9 specification
++ * for more details.
++ */
++enum v4l2_vp9_reset_frame_context {
++	V4L2_VP9_RESET_FRAME_CTX_NONE,
++	V4L2_VP9_RESET_FRAME_CTX_SPEC,
++	V4L2_VP9_RESET_FRAME_CTX_ALL,
++};
++
++/**
++ * enum v4l2_vp9_interpolation_filter - VP9 interpolation filter types
++ *
++ * @V4L2_VP9_INTERP_FILTER_8TAP: height tap filter
++ * @V4L2_VP9_INTERP_FILTER_8TAP_SMOOTH: height tap smooth filter
++ * @V4L2_VP9_INTERP_FILTER_8TAP_SHARP: height tap sharp filter
++ * @V4L2_VP9_INTERP_FILTER_BILINEAR: bilinear filter
++ * @V4L2_VP9_INTERP_FILTER_SWITCHABLE: filter selection is signaled at the
++ *				       block level
++ *
++ * See section '7.2.7 Interpolation filter semantics' of the VP9 specification
++ * for more details.
++ */
++enum v4l2_vp9_interpolation_filter {
++	V4L2_VP9_INTERP_FILTER_8TAP,
++	V4L2_VP9_INTERP_FILTER_8TAP_SMOOTH,
++	V4L2_VP9_INTERP_FILTER_8TAP_SHARP,
++	V4L2_VP9_INTERP_FILTER_BILINEAR,
++	V4L2_VP9_INTERP_FILTER_SWITCHABLE,
++};
++
++/**
++ * enum v4l2_vp9_reference_mode - VP9 reference modes
++ *
++ * @V4L2_VP9_REF_MODE_SINGLE: indicates that all the inter blocks use only a
++ *			      single reference frame to generate motion
++ *			      compensated prediction
++ * @V4L2_VP9_REF_MODE_COMPOUND: requires all the inter blocks to use compound
++ *				mode. Single reference frame prediction is not
++ *				allowed
++ * @V4L2_VP9_REF_MODE_SELECT: allows each individual inter block to select
++ *			      between single and compound prediction modes
++ *
++ * See section '7.3.6 Frame reference mode semantics' of the VP9 specification
++ * for more details.
++ */
++enum v4l2_vp9_reference_mode {
++	V4L2_VP9_REF_MODE_SINGLE,
++	V4L2_VP9_REF_MODE_COMPOUND,
++	V4L2_VP9_REF_MODE_SELECT,
++};
++
++/**
++ * enum v4l2_vp9_tx_mode - VP9 TX modes
++ *
++ * @V4L2_VP9_TX_MODE_ONLY_4X4: transform size is 4x4
++ * @V4L2_VP9_TX_MODE_ALLOW_8X8: transform size can be up to 8x8
++ * @V4L2_VP9_TX_MODE_ALLOW_16X16: transform size can be up to 16x16
++ * @V4L2_VP9_TX_MODE_ALLOW_32X32: transform size can be up to 32x32
++ * @V4L2_VP9_TX_MODE_SELECT: bitstream contains transform size for each block
++ *
++ * See section '7.3.1 Tx mode semantics' of the VP9 specification for more
++ * details.
++ */
++enum v4l2_vp9_tx_mode {
++	V4L2_VP9_TX_MODE_ONLY_4X4,
++	V4L2_VP9_TX_MODE_ALLOW_8X8,
++	V4L2_VP9_TX_MODE_ALLOW_16X16,
++	V4L2_VP9_TX_MODE_ALLOW_32X32,
++	V4L2_VP9_TX_MODE_SELECT,
++};
++
++/**
++ * enum v4l2_vp9_ref_id - VP9 Reference frame IDs
++ *
++ * @V4L2_REF_ID_LAST: last reference frame
++ * @V4L2_REF_ID_GOLDEN: golden reference frame
++ * @V4L2_REF_ID_ALTREF: alternative reference frame
++ * @V4L2_REF_ID_CNT: number of reference frames
++ *
++ * See section '7.4.12 Ref frames semantics' of the VP9 specification for more
++ * details.
++ */
++enum v4l2_vp9_ref_id {
++	V4L2_REF_ID_LAST,
++	V4L2_REF_ID_GOLDEN,
++	V4L2_REF_ID_ALTREF,
++	V4L2_REF_ID_CNT,
++};
++
++/**
++ * enum v4l2_vp9_frame_flags - VP9 frame flags
++ * @V4L2_VP9_FRAME_FLAG_KEY_FRAME: the frame is a key frame
++ * @V4L2_VP9_FRAME_FLAG_SHOW_FRAME: the frame should be displayed
++ * @V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT: the decoding should be error resilient
++ * @V4L2_VP9_FRAME_FLAG_INTRA_ONLY: the frame does not reference other frames
++ * @V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV: the frame might can high precision
++ *					    motion vectors
++ * @V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX: frame context should be updated
++ *					   after decoding
++ * @V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE: parallel decoding is used
++ * @V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING: vertical subsampling is enabled
++ * @V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING: horizontal subsampling is enabled
++ * @V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING: full UV range is used
++ *
++ * Check the VP9 specification for more details.
++ */
++enum v4l2_vp9_frame_flags {
++	V4L2_VP9_FRAME_FLAG_KEY_FRAME = 1 << 0,
++	V4L2_VP9_FRAME_FLAG_SHOW_FRAME = 1 << 1,
++	V4L2_VP9_FRAME_FLAG_ERROR_RESILIENT = 1 << 2,
++	V4L2_VP9_FRAME_FLAG_INTRA_ONLY = 1 << 3,
++	V4L2_VP9_FRAME_FLAG_ALLOW_HIGH_PREC_MV = 1 << 4,
++	V4L2_VP9_FRAME_FLAG_REFRESH_FRAME_CTX = 1 << 5,
++	V4L2_VP9_FRAME_FLAG_PARALLEL_DEC_MODE = 1 << 6,
++	V4L2_VP9_FRAME_FLAG_X_SUBSAMPLING = 1 << 7,
++	V4L2_VP9_FRAME_FLAG_Y_SUBSAMPLING = 1 << 8,
++	V4L2_VP9_FRAME_FLAG_COLOR_RANGE_FULL_SWING = 1 << 9,
++};
++
++#define V4L2_VP9_PROFILE_MAX		3
++
++/**
++ * struct v4l2_ctrl_vp9_frame_decode_params - VP9 frame decoding control
++ *
++ * @flags: combination of V4L2_VP9_FRAME_FLAG_* flags
++ * @compressed_header_size: compressed header size in bytes
++ * @uncompressed_header_size: uncompressed header size in bytes
++ * @profile: VP9 profile. Can be 0, 1, 2 or 3
++ * @reset_frame_context: specifies whether the frame context should be reset
++ *			 to default values. See &v4l2_vp9_reset_frame_context
++ *			 for more details
++ * @frame_context_idx: frame context that should be used/updated
++ * @bit_depth: bits per components. Can be 8, 10 or 12. Note that not all
++ *	       profiles support 10 and/or 12 bits depths
++ * @interpolation_filter: specifies the filter selection used for performing
++ *			  inter prediction. See &v4l2_vp9_interpolation_filter
++ *			  for more details
++ * @tile_cols_log2: specifies the base 2 logarithm of the width of each tile
++ *		    (where the width is measured in units of 8x8 blocks).
++ *		    Shall be less than or equal to 6
++ * @tile_rows_log2: specifies the base 2 logarithm of the height of each tile
++ *		    (where the height is measured in units of 8x8 blocks)
++ * @tx_mode: specifies the TX mode. See &v4l2_vp9_tx_mode for more details
++ * @reference_mode: specifies the type of inter prediction to be used. See
++ *		    &v4l2_vp9_reference_mode for more details
++ * @ref_frame_sign_biases: intended direction in time of the motion vector for
++ *                         each reference frame (0: backward, 1: forward).
++ *                         Only the first V4L2_REF_ID_CNT are used.
++ * @padding: needed to make this struct 64 bit aligned. Shall be filled with
++ *	     zeros
++ * @frame_width_minus_1: add 1 to it and you'll get the frame width expressed
++ *			 in pixels
++ * @frame_height_minus_1: add 1 to it and you'll get the frame height expressed
++ *			  in pixels
++ * @frame_width_minus_1: add 1 to it and you'll get the expected render width
++ *			 expressed in pixels. This is not used during the
++ *			 decoding process but might be used by HW scalers to
++ *			 prepare a frame that's ready for scanout
++ * @frame_height_minus_1: add 1 to it and you'll get the expected render height
++ *			 expressed in pixels. This is not used during the
++ *			 decoding process but might be used by HW scalers to
++ *			 prepare a frame that's ready for scanout
++ * @refs: array of reference frames, identified by timestamp. See
++          &v4l2_vp9_ref_id for more details
++ * @lf: loop filter parameters. See &v4l2_vp9_loop_filter for more details
++ * @quant: quantization parameters. See &v4l2_vp9_quantization for more details
++ * @seg: segmentation parameters. See &v4l2_vp9_segmentation for more details
++ * @probs: probabilities. See &v4l2_vp9_probabilities for more details
++ */
++struct v4l2_ctrl_vp9_frame_decode_params {
++	__u32 flags;
++	__u16 compressed_header_size;
++	__u16 uncompressed_header_size;
++	__u8 profile;
++	__u8 reset_frame_context;
++	__u8 frame_context_idx;
++	__u8 bit_depth;
++	__u8 interpolation_filter;
++	__u8 tile_cols_log2;
++	__u8 tile_rows_log2;
++	__u8 tx_mode;
++	__u8 reference_mode;
++	__u8 ref_frame_sign_biases;
++	__u8 padding[5];
++	__u16 frame_width_minus_1;
++	__u16 frame_height_minus_1;
++	__u16 render_width_minus_1;
++	__u16 render_height_minus_1;
++	__u64 refs[V4L2_REF_ID_CNT];
++	struct v4l2_vp9_loop_filter lf;
++	struct v4l2_vp9_quantization quant;
++	struct v4l2_vp9_segmentation seg;
++	struct v4l2_vp9_probabilities probs;
++};
++
++#define V4L2_VP9_NUM_FRAME_CTX	4
++
++/**
++ * struct v4l2_ctrl_vp9_frame_ctx - VP9 frame context control
++ *
++ * @probs: VP9 probabilities
++ *
++ * This control is accessed in both direction. The user should initialize the
++ * 4 contexts with default values just after starting the stream. Then before
++ * decoding a frame it should query the current frame context (the one passed
++ * through &v4l2_ctrl_vp9_frame_decode_params.frame_context_idx) to initialize
++ * &v4l2_ctrl_vp9_frame_decode_params.probs. The probs are then adjusted based
++ * on the bitstream info and passed to the kernel. The codec should update
++ * the frame context after the frame has been decoded, so that next time
++ * userspace query this context it contains the updated probabilities.
++ */
++struct v4l2_ctrl_vp9_frame_ctx {
++	struct v4l2_vp9_probabilities probs;
++};
++
++#endif /* _VP9_CTRLS_H_ */
+-- 
+2.31.0.291.g576ba9dcdaf-goog
+
diff --git a/sys-kernel/linux-headers/files/0042-CHROMIUM-linux-headers-update-headers-with-UVC-1.5-R.patch b/sys-kernel/linux-headers/files/0042-CHROMIUM-linux-headers-update-headers-with-UVC-1.5-R.patch
new file mode 100644
index 0000000..351f24f
--- /dev/null
+++ b/sys-kernel/linux-headers/files/0042-CHROMIUM-linux-headers-update-headers-with-UVC-1.5-R.patch
@@ -0,0 +1,70 @@
+From 7fea1c3d52816732a250b66833e915e92e277180 Mon Sep 17 00:00:00 2001
+From: Sergey Senozhatsky <senozhatsky@chromium.org>
+Date: Fri, 30 Apr 2021 21:10:12 +0900
+Subject: [PATCH] CHROMIUM: linux-headers: update headers with UVC 1.5 ROI
+ defines
+
+Add defines needed for UVC 1.5 ROI support.
+
+BUG=b:186835892
+TEST=emerge-hatch linux-headers and check headers
+---
+ include/uapi/linux/usb/video.h     | 1 +
+ include/uapi/linux/v4l2-common.h   | 8 ++++++++
+ include/uapi/linux/v4l2-controls.h | 9 +++++++++
+ 3 files changed, 18 insertions(+)
+
+diff --git a/include/uapi/linux/usb/video.h b/include/uapi/linux/usb/video.h
+index ff6cc6cb4227..56259cc023da 100644
+--- a/include/uapi/linux/usb/video.h
++++ b/include/uapi/linux/usb/video.h
+@@ -104,6 +104,7 @@
+ #define UVC_CT_ROLL_ABSOLUTE_CONTROL			0x0f
+ #define UVC_CT_ROLL_RELATIVE_CONTROL			0x10
+ #define UVC_CT_PRIVACY_CONTROL				0x11
++#define UVC_CT_REGION_OF_INTEREST_CONTROL		0x14
+ 
+ /* A.9.5. Processing Unit Control Selectors */
+ #define UVC_PU_CONTROL_UNDEFINED			0x00
+diff --git a/include/uapi/linux/v4l2-common.h b/include/uapi/linux/v4l2-common.h
+index 4f7b892377cd..64154b575e71 100644
+--- a/include/uapi/linux/v4l2-common.h
++++ b/include/uapi/linux/v4l2-common.h
+@@ -78,6 +78,14 @@
+ #define V4L2_SEL_TGT_COMPOSE_BOUNDS	0x0102
+ /* Current composing area plus all padding pixels */
+ #define V4L2_SEL_TGT_COMPOSE_PADDED	0x0103
++/* Current Region of Interest area */
++#define V4L2_SEL_TGT_ROI		0x0200
++/* Default Region of Interest area */
++#define V4L2_SEL_TGT_ROI_DEFAULT	0x0201
++/* Region of Interest minimum values */
++#define V4L2_SEL_TGT_ROI_BOUNDS_MIN	0x0202
++/* Region of Interest maximum values */
++#define V4L2_SEL_TGT_ROI_BOUNDS_MAX	0x0203
+ 
+ /* Backward compatibility target definitions --- to be removed. */
+ #define V4L2_SEL_TGT_CROP_ACTIVE	V4L2_SEL_TGT_CROP
+diff --git a/include/uapi/linux/v4l2-controls.h b/include/uapi/linux/v4l2-controls.h
+index e4ee10ee917d..53dcf5e6d6fb 100644
+--- a/include/uapi/linux/v4l2-controls.h
++++ b/include/uapi/linux/v4l2-controls.h
+@@ -876,6 +876,15 @@ enum v4l2_auto_focus_range {
+ 
+ #define V4L2_CID_PAN_SPEED			(V4L2_CID_CAMERA_CLASS_BASE+32)
+ #define V4L2_CID_TILT_SPEED			(V4L2_CID_CAMERA_CLASS_BASE+33)
++#define V4L2_CID_REGION_OF_INTEREST_AUTO	(V4L2_CID_CAMERA_CLASS_BASE+34)
++#define V4L2_CID_REGION_OF_INTEREST_AUTO_EXPOSURE		(1 << 0)
++#define V4L2_CID_REGION_OF_INTEREST_AUTO_IRIS			(1 << 1)
++#define V4L2_CID_REGION_OF_INTEREST_AUTO_WHITE_BALANCE		(1 << 2)
++#define V4L2_CID_REGION_OF_INTEREST_AUTO_FOCUS			(1 << 3)
++#define V4L2_CID_REGION_OF_INTEREST_AUTO_FACE_DETECT		(1 << 4)
++#define V4L2_CID_REGION_OF_INTEREST_AUTO_DETECT_AND_TRACK	(1 << 5)
++#define V4L2_CID_REGION_OF_INTEREST_AUTO_IMAGE_STABILIZATION	(1 << 6)
++#define V4L2_CID_REGION_OF_INTEREST_AUTO_HIGHER_QUALITY	(1 << 7)
+ 
+ /* FM Modulator class control IDs */
+ 
+-- 
+2.31.1.527.g47e6f16901-goog
+
diff --git a/sys-kernel/linux-headers/files/0043-BACKPORT-vfs-add-faccessat2-syscall.patch b/sys-kernel/linux-headers/files/0043-BACKPORT-vfs-add-faccessat2-syscall.patch
new file mode 100644
index 0000000..242e4f7
--- /dev/null
+++ b/sys-kernel/linux-headers/files/0043-BACKPORT-vfs-add-faccessat2-syscall.patch
@@ -0,0 +1,120 @@
+From ab1cbd8bcec15b016c96134abbf145cfbeca83ca Mon Sep 17 00:00:00 2001
+From: Miklos Szeredi <mszeredi@redhat.com>
+Date: Thu, 14 May 2020 16:44:25 +0200
+Subject: [PATCH] BACKPORT: vfs: add faccessat2 syscall
+
+POSIX defines faccessat() as having a fourth "flags" argument, while the
+linux syscall doesn't have it.  Glibc tries to emulate AT_EACCESS and
+AT_SYMLINK_NOFOLLOW, but AT_EACCESS emulation is broken.
+
+Add a new faccessat(2) syscall with the added flags argument and implement
+both flags.
+
+The value of AT_EACCESS is defined in glibc headers to be the same as
+AT_REMOVEDIR.  Use this value for the kernel interface as well, together
+with the explanatory comment.
+
+Also add AT_EMPTY_PATH support, which is not documented by POSIX, but can
+be useful and is trivial to implement.
+
+Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
+[Adrian Ratiu: 4.14 linux-headers backport]
+---
+ arch/arm/tools/syscall.tbl             | 1 +
+ arch/arm64/include/asm/unistd.h        | 2 +-
+ arch/arm64/include/asm/unistd32.h      | 2 ++
+ arch/x86/entry/syscalls/syscall_32.tbl | 1 +
+ arch/x86/entry/syscalls/syscall_64.tbl | 1 +
+ include/linux/syscalls.h               | 2 ++
+ include/uapi/asm-generic/unistd.h      | 5 ++++-
+ 7 files changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl
+index 9d87127f33e8..ea8846b73445 100644
+--- a/arch/arm/tools/syscall.tbl
++++ b/arch/arm/tools/syscall.tbl
+@@ -435,3 +435,4 @@
+ 423	common	sched_rr_get_interval_time64	sys_sched_rr_get_interval
+ 425	common	io_uring_setup		sys_io_uring_setup
+ 426	common	io_uring_enter		sys_io_uring_enter
++439	common	faccessat2			sys_faccessat2
+diff --git a/arch/arm64/include/asm/unistd.h b/arch/arm64/include/asm/unistd.h
+index 718b1962a1b8..0dd4a8025c08 100644
+--- a/arch/arm64/include/asm/unistd.h
++++ b/arch/arm64/include/asm/unistd.h
+@@ -43,7 +43,7 @@
+ #define __ARM_NR_compat_cacheflush	(__ARM_NR_COMPAT_BASE+2)
+ #define __ARM_NR_compat_set_tls		(__ARM_NR_COMPAT_BASE+5)
+ 
+-#define __NR_compat_syscalls		427
++#define __NR_compat_syscalls		440
+ #endif
+ 
+ #define __ARCH_WANT_SYS_CLONE
+diff --git a/arch/arm64/include/asm/unistd32.h b/arch/arm64/include/asm/unistd32.h
+index ba9554572592..27179bd921ff 100644
+--- a/arch/arm64/include/asm/unistd32.h
++++ b/arch/arm64/include/asm/unistd32.h
+@@ -863,6 +863,8 @@ __SYSCALL(__NR_sched_rr_get_interval_time64, sys_sched_rr_get_interval)
+ __SYSCALL(__NR_io_uring_setup, sys_io_uring_setup)
+ #define __NR_io_uring_enter 426
+ __SYSCALL(__NR_io_uring_enter, sys_io_uring_enter)
++#define __NR_faccessat2 439
++__SYSCALL(__NR_faccessat2, sys_faccessat2)
+ 
+ /*
+  * Please add new compat syscalls above this comment and update
+diff --git a/arch/x86/entry/syscalls/syscall_32.tbl b/arch/x86/entry/syscalls/syscall_32.tbl
+index b056050a44ba..7455df86745b 100644
+--- a/arch/x86/entry/syscalls/syscall_32.tbl
++++ b/arch/x86/entry/syscalls/syscall_32.tbl
+@@ -414,3 +414,4 @@
+ 423	i386	sched_rr_get_interval_time64	sys_sched_rr_get_interval	__ia32_sys_sched_rr_get_interval
+ 425	i386	io_uring_setup		sys_io_uring_setup		__ia32_sys_io_uring_setup
+ 426	i386	io_uring_enter		sys_io_uring_enter		__ia32_sys_io_uring_enter
++439	i386	faccessat2		sys_faccessat2
+diff --git a/arch/x86/entry/syscalls/syscall_64.tbl b/arch/x86/entry/syscalls/syscall_64.tbl
+index 9e69bd2fd081..74a44ceb3e94 100644
+--- a/arch/x86/entry/syscalls/syscall_64.tbl
++++ b/arch/x86/entry/syscalls/syscall_64.tbl
+@@ -341,6 +341,7 @@
+ 332	common	statx			sys_statx
+ 425	common	io_uring_setup		__x64_sys_io_uring_setup
+ 426	common	io_uring_enter		__x64_sys_io_uring_enter
++439	common	faccessat2		sys_faccessat2
+ 
+ #
+ # x32-specific system call numbers start at 512 to avoid cache impact
+diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
+index a78186d826d7..4437b0dc619d 100644
+--- a/include/linux/syscalls.h
++++ b/include/linux/syscalls.h
+@@ -809,6 +809,8 @@ asmlinkage long sys_renameat2(int olddfd, const char __user *oldname,
+ asmlinkage long sys_futimesat(int dfd, const char __user *filename,
+ 			      struct timeval __user *utimes);
+ asmlinkage long sys_faccessat(int dfd, const char __user *filename, int mode);
++asmlinkage long sys_faccessat2(int dfd, const char __user *filename, int mode,
++			       int flags);
+ asmlinkage long sys_fchmodat(int dfd, const char __user * filename,
+ 			     umode_t mode);
+ asmlinkage long sys_fchownat(int dfd, const char __user *filename, uid_t user,
+diff --git a/include/uapi/asm-generic/unistd.h b/include/uapi/asm-generic/unistd.h
+index d97d59ebf682..e1c762e2baa6 100644
+--- a/include/uapi/asm-generic/unistd.h
++++ b/include/uapi/asm-generic/unistd.h
+@@ -781,8 +781,11 @@ __SYSCALL(__NR_io_uring_setup, sys_io_uring_setup)
+ #define __NR_io_uring_enter 426
+ __SYSCALL(__NR_io_uring_enter, sys_io_uring_enter)
+ 
++#define __NR_faccessat2 439
++__SYSCALL(__NR_faccessat2, sys_faccessat2)
++
+ #undef __NR_syscalls
+-#define __NR_syscalls 427
++#define __NR_syscalls 440
+ 
+ /*
+  * All syscalls below here should go away really,
+-- 
+2.31.1
+
diff --git a/sys-kernel/linux-headers/linux-headers-4.14-r31.ebuild b/sys-kernel/linux-headers/linux-headers-4.14-r37.ebuild
similarity index 100%
rename from sys-kernel/linux-headers/linux-headers-4.14-r31.ebuild
rename to sys-kernel/linux-headers/linux-headers-4.14-r37.ebuild
diff --git a/sys-kernel/linux-headers/linux-headers-4.14.ebuild b/sys-kernel/linux-headers/linux-headers-4.14.ebuild
index 7a33cf6..8e3585d 100644
--- a/sys-kernel/linux-headers/linux-headers-4.14.ebuild
+++ b/sys-kernel/linux-headers/linux-headers-4.14.ebuild
@@ -60,6 +60,11 @@
 	"${FILESDIR}/0037-BACKPORT-v4l2-add-V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS.patch"
 	"${FILESDIR}/0038-BACKPORT-Add-io_uring-IO-interface.patch"
 	"${FILESDIR}/0039-BACKPORT-net-qualcomm-rmnet-Export-mux_id-and-flags-to-netlink.patch"
+	"${FILESDIR}/0040-CHROMIUM-v4l2-add-upstream-V4L2-H.264-stateless-cont.patch"
+	"${FILESDIR}/0040-BACKPORT-y2038-add-64-bit-time_t-syscalls-to-all-32-.patch"
+	"${FILESDIR}/0041-CHROMIUM-v4l-add-request-based-VP9-stateless-control.patch"
+	"${FILESDIR}/0042-CHROMIUM-linux-headers-update-headers-with-UVC-1.5-R.patch"
+	"${FILESDIR}/0043-BACKPORT-vfs-add-faccessat2-syscall.patch"
 )
 
 src_unpack() {
diff --git a/sys-kernel/tegra_lp0_resume-t132/tegra_lp0_resume-t132-0.0.1-r2505.ebuild b/sys-kernel/tegra_lp0_resume-t132/tegra_lp0_resume-t132-0.0.1-r2505.ebuild
deleted file mode 100644
index 36ac037..0000000
--- a/sys-kernel/tegra_lp0_resume-t132/tegra_lp0_resume-t132-0.0.1-r2505.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2014 The Chromium OS Authors.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="1cf1d1ceda64e0b81170f8454fd5ecca311667d5"
-CROS_WORKON_TREE="2e32d2a5a79f8e88be91b44b40a65211c6ea4dae"
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-
-DESCRIPTION="lp0 resume blob for Tegra"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="-* arm arm64"
-IUSE=""
-
-RDEPEND=""
-DEPEND=""
-
-CROS_WORKON_LOCALNAME="coreboot"
-
-inherit cros-workon
-
-src_compile() {
-	emake -C src/soc/nvidia/tegra132/lp0 \
-		GCC_PREFIX="${CHOST}-" || \
-		die "tegra_lp0_resume build failed"
-}
-
-src_install() {
-	insinto /lib/firmware/tegra13x/
-	doins src/soc/nvidia/tegra132/lp0/tegra_lp0_resume.fw
-}
diff --git a/sys-kernel/tegra_lp0_resume-t132/tegra_lp0_resume-t132-9999.ebuild b/sys-kernel/tegra_lp0_resume-t132/tegra_lp0_resume-t132-9999.ebuild
deleted file mode 100644
index 4cf731b..0000000
--- a/sys-kernel/tegra_lp0_resume-t132/tegra_lp0_resume-t132-9999.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2014 The Chromium OS Authors.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-
-DESCRIPTION="lp0 resume blob for Tegra"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="-* ~arm ~arm64"
-IUSE=""
-
-RDEPEND=""
-DEPEND=""
-
-CROS_WORKON_LOCALNAME="coreboot"
-
-inherit cros-workon
-
-src_compile() {
-	emake -C src/soc/nvidia/tegra132/lp0 \
-		GCC_PREFIX="${CHOST}-" || \
-		die "tegra_lp0_resume build failed"
-}
-
-src_install() {
-	insinto /lib/firmware/tegra13x/
-	doins src/soc/nvidia/tegra132/lp0/tegra_lp0_resume.fw
-}
diff --git a/sys-kernel/tegra_lp0_resume-t210/tegra_lp0_resume-t210-0.0.1-r2004.ebuild b/sys-kernel/tegra_lp0_resume-t210/tegra_lp0_resume-t210-0.0.1-r2004.ebuild
deleted file mode 100644
index f0f4448..0000000
--- a/sys-kernel/tegra_lp0_resume-t210/tegra_lp0_resume-t210-0.0.1-r2004.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2014 The Chromium OS Authors.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="1cf1d1ceda64e0b81170f8454fd5ecca311667d5"
-CROS_WORKON_TREE="2e32d2a5a79f8e88be91b44b40a65211c6ea4dae"
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-
-DESCRIPTION="lp0 resume blob for Tegra"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="-* arm arm64"
-IUSE=""
-
-RDEPEND=""
-DEPEND=""
-
-CROS_WORKON_LOCALNAME="coreboot"
-
-inherit cros-workon
-
-src_compile() {
-	emake -C src/soc/nvidia/tegra210/lp0 \
-		GCC_PREFIX="${CHOST}-" || \
-		die "tegra_lp0_resume build failed"
-}
-
-src_install() {
-	insinto /lib/firmware/nvidia/tegra210/
-	doins src/soc/nvidia/tegra210/lp0/tegra_lp0_resume.fw
-
-	# Also install into /firmware so it can be picked up for signing
-	insinto /firmware
-	doins src/soc/nvidia/tegra210/lp0/tegra_lp0_resume.fw
-}
diff --git a/sys-kernel/tegra_lp0_resume-t210/tegra_lp0_resume-t210-9999.ebuild b/sys-kernel/tegra_lp0_resume-t210/tegra_lp0_resume-t210-9999.ebuild
deleted file mode 100644
index cfcba51..0000000
--- a/sys-kernel/tegra_lp0_resume-t210/tegra_lp0_resume-t210-9999.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2014 The Chromium OS Authors.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-
-DESCRIPTION="lp0 resume blob for Tegra"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="-* ~arm ~arm64"
-IUSE=""
-
-RDEPEND=""
-DEPEND=""
-
-CROS_WORKON_LOCALNAME="coreboot"
-
-inherit cros-workon
-
-src_compile() {
-	emake -C src/soc/nvidia/tegra210/lp0 \
-		GCC_PREFIX="${CHOST}-" || \
-		die "tegra_lp0_resume build failed"
-}
-
-src_install() {
-	insinto /lib/firmware/nvidia/tegra210/
-	doins src/soc/nvidia/tegra210/lp0/tegra_lp0_resume.fw
-
-	# Also install into /firmware so it can be picked up for signing
-	insinto /firmware
-	doins src/soc/nvidia/tegra210/lp0/tegra_lp0_resume.fw
-}
diff --git a/sys-kernel/tegra_lp0_resume/tegra_lp0_resume-0.0.1-r2937.ebuild b/sys-kernel/tegra_lp0_resume/tegra_lp0_resume-0.0.1-r2937.ebuild
deleted file mode 100644
index 2c5919d..0000000
--- a/sys-kernel/tegra_lp0_resume/tegra_lp0_resume-0.0.1-r2937.ebuild
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2014 The Chromium OS Authors.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="1cf1d1ceda64e0b81170f8454fd5ecca311667d5"
-CROS_WORKON_TREE="2e32d2a5a79f8e88be91b44b40a65211c6ea4dae"
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-
-DESCRIPTION="lp0 resume blob for Tegra"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="-* arm arm64"
-IUSE=""
-
-RDEPEND=""
-DEPEND=""
-
-CROS_WORKON_LOCALNAME="coreboot"
-
-inherit cros-workon
-
-src_compile() {
-	emake -C src/soc/nvidia/tegra124/lp0 \
-		GCC_PREFIX="${CHOST}-" || \
-		die "tegra_lp0_resume build failed"
-}
-
-src_install() {
-	insinto /lib/firmware/tegra12x/
-	doins src/soc/nvidia/tegra124/lp0/tegra_lp0_resume.fw
-}
diff --git a/sys-kernel/tegra_lp0_resume/tegra_lp0_resume-9999.ebuild b/sys-kernel/tegra_lp0_resume/tegra_lp0_resume-9999.ebuild
deleted file mode 100644
index ea96655..0000000
--- a/sys-kernel/tegra_lp0_resume/tegra_lp0_resume-9999.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2014 The Chromium OS Authors.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_PROJECT="chromiumos/third_party/coreboot"
-
-DESCRIPTION="lp0 resume blob for Tegra"
-HOMEPAGE="http://www.coreboot.org"
-LICENSE="GPL-2"
-KEYWORDS="-* ~arm ~arm64"
-IUSE=""
-
-RDEPEND=""
-DEPEND=""
-
-CROS_WORKON_LOCALNAME="coreboot"
-
-inherit cros-workon
-
-src_compile() {
-	emake -C src/soc/nvidia/tegra124/lp0 \
-		GCC_PREFIX="${CHOST}-" || \
-		die "tegra_lp0_resume build failed"
-}
-
-src_install() {
-	insinto /lib/firmware/tegra12x/
-	doins src/soc/nvidia/tegra124/lp0/tegra_lp0_resume.fw
-}
diff --git a/sys-libs/compiler-rt/compiler-rt-12.0_pre408248-r3.ebuild b/sys-libs/compiler-rt/compiler-rt-12.0_pre408248-r3.ebuild
deleted file mode 120000
index 03daf83..0000000
--- a/sys-libs/compiler-rt/compiler-rt-12.0_pre408248-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-compiler-rt-12.0_pre408248.ebuild
\ No newline at end of file
diff --git a/sys-libs/compiler-rt/compiler-rt-12.0_pre408248.ebuild b/sys-libs/compiler-rt/compiler-rt-12.0_pre408248.ebuild
deleted file mode 100644
index 3fa0abd..0000000
--- a/sys-libs/compiler-rt/compiler-rt-12.0_pre408248.ebuild
+++ /dev/null
@@ -1,126 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Id$
-
-EAPI=6
-
-inherit eutils toolchain-funcs cros-constants cmake-utils git-2 cros-llvm
-
-EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project
-	${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project"
-
-LLVM_HASH="f402e682d0ef5598eeffc9a21a691b03e602ff58" # r408248
-LLVM_NEXT_HASH="7f6f9f4cf966c78a315d15d6e913c43cfa45c47c" # r412851
-
-DESCRIPTION="Compiler runtime library for clang"
-HOMEPAGE="http://compiler-rt.llvm.org/"
-
-LICENSE="UoI-NCSA"
-SLOT="0"
-KEYWORDS="*"
-IUSE="+llvm-crt llvm-next llvm-tot"
-DEPEND="sys-devel/llvm"
-if [[ ${CATEGORY} == cross-* ]] ; then
-	DEPEND+="
-		${CATEGORY}/binutils
-		${CATEGORY}/gcc
-		"
-fi
-
-pkg_setup() {
-	export CMAKE_USE_DIR="${S}/compiler-rt"
-}
-
-src_unpack() {
-	if use llvm-next || use llvm-tot; then
-		export EGIT_COMMIT="${LLVM_NEXT_HASH}"
-	else
-		export EGIT_COMMIT="${LLVM_HASH}"
-	fi
-	git-2_src_unpack
-}
-
-src_prepare() {
-	"${FILESDIR}"/patch_manager/patch_manager.py \
-		--svn_version "$(get_most_recent_revision)" \
-		--patch_metadata_file "${FILESDIR}"/PATCHES.json \
-		--filesdir_path "${FILESDIR}" \
-		--src_path "${S}" || die
-	eapply_user
-}
-
-src_configure() {
-	setup_cross_toolchain
-	append-flags "-fomit-frame-pointer"
-	if [[ ${CTARGET} == armv7a* ]]; then
-		# Use vfpv3 to be able to target non-neon targets
-		append-flags -mfpu=vfpv3
-	elif [[ ${CTARGET} == armv7m* ]]; then
-		# Some of the arm32 assembly builtins in compiler-rt need vfpv2.
-		# Passing this flag should not be required but currently
-		# upstream compiler-rt's cmake config does not provide a way to
-		# exclude these asm files.
-		append-flags -Wa,-mfpu=vfpv2
-	fi
-	BUILD_DIR=${WORKDIR}/${P}_build
-
-	local mycmakeargs=(
-		"-DLLVM_ENABLE_PROJECTS=compiler-rt"
-		"-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY"
-		# crbug/855759
-		"-DCOMPILER_RT_BUILD_CRT=$(usex llvm-crt)"
-		"-DCOMPILER_RT_USE_LIBCXX=yes"
-		"-DCOMPILER_RT_LIBCXXABI_PATH=${S}/libcxxabi"
-		"-DCOMPILER_RT_LIBCXX_PATH=${S}/libcxx"
-		"-DCOMPILER_RT_HAS_GNU_VERSION_SCRIPT_COMPAT=no"
-		"-DCOMPILER_RT_BUILD_LIBFUZZER=no"
-	)
-
-	if [[ ${CTARGET} == *-eabi ]]; then
-		mycmakeargs+=(
-			"-DCOMPILER_RT_OS_DIR=baremetal"
-			"-DCOMPILER_RT_BAREMETAL_BUILD=yes"
-			"-DCMAKE_C_COMPILER_TARGET=${CTARGET}"
-			"-DCOMPILER_RT_DEFAULT_TARGET_ONLY=yes"
-		)
-	else
-		mycmakeargs+=(
-			"-DCOMPILER_RT_TEST_TARGET_TRIPLE=${CTARGET}"
-		)
-	fi
-	mycmakeargs+=(
-		"-DCOMPILER_RT_INSTALL_PATH=${EPREFIX}$(${CC} --print-resource-dir)"
-	)
-	cmake-utils_src_configure
-}
-
-src_install() {
-	# There is install conflict between cross-armv7a-cros-linux-gnueabihf
-	# and cross-armv7a-cros-linux-gnueabi. Remove this once we are ready to
-	# move to cross-armv7a-cros-linux-gnueabihf.
-	if [[ ${CTARGET} == armv7a-cros-linux-gnueabi ]] ; then
-		return
-	fi
-	cmake-utils_src_install
-
-	# includes and docs are installed for all sanitizers and xray
-	# These files conflict with files provided in llvm ebuild
-	local libdir=$(llvm-config --libdir)
-	rm -rf "${ED}"usr/share || die
-	rm -rf "${ED}${libdir}"/clang/*/include || die
-	rm -f "${ED}${libdir}"/clang/*/*_blacklist.txt || die
-	rm -f "${ED}${libdir}"/clang/*/*/*_blacklist.txt || die
-	rm -f "${ED}${libdir}"/clang/*/dfsan_abilist.txt || die
-	rm -f "${ED}${libdir}"/clang/*/*/dfsan_abilist.txt || die
-	rm -f "${ED}${libdir}"/clang/*/bin/* || die
-
-	# Copy compiler-rt files to a new clang version to handle llvm updates gracefully.
-	local llvm_version=$(llvm-config --version)
-	local clang_version=${llvm_version%svn*}
-	clang_version=${clang_version%git*}
-	local compiler_rt_version=${clang_version%%.*}
-	new_version="$((compiler_rt_version + 1)).0.0"
-	old_version="$((compiler_rt_version - 1)).0.0"
-	cp -r  "${D}${libdir}/clang/${clang_version}" "${D}${libdir}/clang/${new_version}"
-	cp -r  "${D}${libdir}/clang/${clang_version}" "${D}${libdir}/clang/${old_version}"
-}
diff --git a/sys-libs/compiler-rt/compiler-rt-12.0_pre422132-r4.ebuild b/sys-libs/compiler-rt/compiler-rt-12.0_pre422132-r4.ebuild
new file mode 120000
index 0000000..3098b4b
--- /dev/null
+++ b/sys-libs/compiler-rt/compiler-rt-12.0_pre422132-r4.ebuild
@@ -0,0 +1 @@
+compiler-rt-12.0_pre422132.ebuild
\ No newline at end of file
diff --git a/sys-libs/compiler-rt/compiler-rt-12.0_pre422132.ebuild b/sys-libs/compiler-rt/compiler-rt-12.0_pre422132.ebuild
new file mode 100644
index 0000000..0781125
--- /dev/null
+++ b/sys-libs/compiler-rt/compiler-rt-12.0_pre422132.ebuild
@@ -0,0 +1,129 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit eutils toolchain-funcs cros-constants cmake-utils git-2 cros-llvm
+
+EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project
+	${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project"
+EGIT_BRANCH=main
+
+LLVM_HASH="cd442157cff4aad209ae532cbf031abbe10bc1df" # r422132
+LLVM_NEXT_HASH="cd442157cff4aad209ae532cbf031abbe10bc1df" # r422132
+
+DESCRIPTION="Compiler runtime library for clang"
+HOMEPAGE="http://compiler-rt.llvm.org/"
+
+LICENSE="UoI-NCSA"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+llvm-crt llvm-next llvm-tot"
+DEPEND="sys-devel/llvm"
+if [[ ${CATEGORY} == cross-* ]] ; then
+	DEPEND+="
+		${CATEGORY}/binutils
+		${CATEGORY}/gcc
+		"
+fi
+
+pkg_setup() {
+	export CMAKE_USE_DIR="${S}/compiler-rt"
+}
+
+src_unpack() {
+	if use llvm-next || use llvm-tot; then
+		export EGIT_COMMIT="${LLVM_NEXT_HASH}"
+	else
+		export EGIT_COMMIT="${LLVM_HASH}"
+	fi
+	git-2_src_unpack
+}
+
+src_prepare() {
+	"${FILESDIR}"/patch_manager/patch_manager.py \
+		--svn_version "$(get_most_recent_revision)" \
+		--patch_metadata_file "${FILESDIR}"/PATCHES.json \
+		--filesdir_path "${FILESDIR}" \
+		--src_path "${S}" || die
+	eapply_user
+}
+
+src_configure() {
+	setup_cross_toolchain
+	append-flags "-fomit-frame-pointer"
+	if [[ ${CTARGET} == armv7a* ]]; then
+		# Use vfpv3 to be able to target non-neon targets
+		append-flags -mfpu=vfpv3
+	elif [[ ${CTARGET} == armv7m* ]]; then
+		# Some of the arm32 assembly builtins in compiler-rt need vfpv2.
+		# Passing this flag should not be required but currently
+		# upstream compiler-rt's cmake config does not provide a way to
+		# exclude these asm files.
+		append-flags -Wa,-mfpu=vfpv2
+	fi
+	BUILD_DIR=${WORKDIR}/${P}_build
+
+	local mycmakeargs=(
+		"-DLLVM_ENABLE_PROJECTS=compiler-rt"
+		"-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY"
+		# crbug/855759
+		"-DCOMPILER_RT_BUILD_CRT=$(usex llvm-crt)"
+		"-DCOMPILER_RT_USE_LIBCXX=yes"
+		"-DCOMPILER_RT_LIBCXXABI_PATH=${S}/libcxxabi"
+		"-DCOMPILER_RT_LIBCXX_PATH=${S}/libcxx"
+		"-DCOMPILER_RT_HAS_GNU_VERSION_SCRIPT_COMPAT=no"
+		"-DCOMPILER_RT_BUILD_LIBFUZZER=no"
+		"-DCOMPILER_RT_BUILTINS_HIDE_SYMBOLS=OFF"
+		"-DCOMPILER_RT_SANITIZERS_TO_BUILD=asan;msan;hwasan;tsan;cfi;ubsan_minimal;gwp_asan"
+	)
+
+	if [[ ${CTARGET} == *-eabi ]]; then
+		mycmakeargs+=(
+			"-DCOMPILER_RT_OS_DIR=baremetal"
+			"-DCOMPILER_RT_BAREMETAL_BUILD=yes"
+			"-DCMAKE_C_COMPILER_TARGET=${CTARGET}"
+			"-DCOMPILER_RT_DEFAULT_TARGET_ONLY=yes"
+		)
+	else
+		mycmakeargs+=(
+			"-DCOMPILER_RT_TEST_TARGET_TRIPLE=${CTARGET}"
+		)
+	fi
+	mycmakeargs+=(
+		"-DCOMPILER_RT_INSTALL_PATH=${EPREFIX}$(${CC} --print-resource-dir)"
+	)
+	cmake-utils_src_configure
+}
+
+src_install() {
+	# There is install conflict between cross-armv7a-cros-linux-gnueabihf
+	# and cross-armv7a-cros-linux-gnueabi. Remove this once we are ready to
+	# move to cross-armv7a-cros-linux-gnueabihf.
+	if [[ ${CTARGET} == armv7a-cros-linux-gnueabi ]] ; then
+		return
+	fi
+	cmake-utils_src_install
+
+	# includes and docs are installed for all sanitizers and xray
+	# These files conflict with files provided in llvm ebuild
+	local libdir=$(llvm-config --libdir)
+	rm -rf "${ED}"usr/share || die
+	rm -rf "${ED}${libdir}"/clang/*/include || die
+	rm -f "${ED}${libdir}"/clang/*/*list.txt || die
+	rm -f "${ED}${libdir}"/clang/*/*/*list.txt || die
+	rm -f "${ED}${libdir}"/clang/*/dfsan_abilist.txt || die
+	rm -f "${ED}${libdir}"/clang/*/*/dfsan_abilist.txt || die
+	rm -f "${ED}${libdir}"/clang/*/bin/* || die
+
+	# Copy compiler-rt files to a new clang version to handle llvm updates gracefully.
+	local llvm_version=$(llvm-config --version)
+	local clang_version=${llvm_version%svn*}
+	clang_version=${clang_version%git*}
+	local compiler_rt_version=${clang_version%%.*}
+	new_version="$((compiler_rt_version + 1)).0.0"
+	old_version="$((compiler_rt_version - 1)).0.0"
+	cp -r  "${D}${libdir}/clang/${clang_version}" "${D}${libdir}/clang/${new_version}"
+	cp -r  "${D}${libdir}/clang/${clang_version}" "${D}${libdir}/clang/${old_version}"
+}
diff --git a/sys-libs/compiler-rt/files/PATCHES.json b/sys-libs/compiler-rt/files/PATCHES.json
index eb09f54..19e8067 100644
--- a/sys-libs/compiler-rt/files/PATCHES.json
+++ b/sys-libs/compiler-rt/files/PATCHES.json
@@ -1,8 +1,14 @@
 [
     {
-        "comment": "Adds a whitelist of packages that have known memory leaks",
+        "comment": "Adds a allowlist of packages that have known memory leaks",
         "rel_patch_path": "llvm-next-leak-allowlist.v2.patch",
-        "start_version": 370808
+        "start_version": 370808,
+        "end_version": 414798
+    },
+    {
+        "comment": "Adds a allowlist of packages that have known memory leaks",
+        "rel_patch_path": "llvm-leak-allowlist.v3.patch",
+        "start_version": 414798
     },
     {
         "comment": "Sets the ASAN message to go to /va/log/asan${pid} by\ndefault",
@@ -31,5 +37,11 @@
         "rel_patch_path": "7ecd60bb7022bb681b9dc01a9c232fd93b4b169c.patch",
         "start_version": 408224,
         "end_version": 408400
+    },
+    {
+        "comment": "[clang] accept -fsanitize-ignorelist= in addition to -fsanitize-blacklist=",
+        "rel_patch_path": "d7ec48d71bd67118e7996c45e9c7fb1b09d4f59a.patch",
+        "start_version": 422132,
+        "end_version": 426368
     }
-]
+]
\ No newline at end of file
diff --git a/sys-libs/compiler-rt/files/d7ec48d71bd67118e7996c45e9c7fb1b09d4f59a.patch b/sys-libs/compiler-rt/files/d7ec48d71bd67118e7996c45e9c7fb1b09d4f59a.patch
new file mode 100644
index 0000000..6bf3f97b
--- /dev/null
+++ b/sys-libs/compiler-rt/files/d7ec48d71bd67118e7996c45e9c7fb1b09d4f59a.patch
@@ -0,0 +1,991 @@
+commit d7ec48d71bd67118e7996c45e9c7fb1b09d4f59a
+Author: Nico Weber <thakis@chromium.org>
+Date:   Tue May 4 09:50:43 2021 -0400
+
+    [clang] accept -fsanitize-ignorelist= in addition to -fsanitize-blacklist=
+    
+    Use that for internal names (including the default ignorelists of the
+    sanitizers).
+    
+    Differential Revision: https://reviews.llvm.org/D101832
+
+diff --git a/compiler-rt/lib/asan/CMakeLists.txt b/compiler-rt/lib/asan/CMakeLists.txt
+index 17214e3f95cb..5500747a5739 100644
+--- a/compiler-rt/lib/asan/CMakeLists.txt
++++ b/compiler-rt/lib/asan/CMakeLists.txt
+@@ -327,7 +327,7 @@ else()
+   endforeach()
+ endif()
+ 
+-add_compiler_rt_resource_file(asan_blacklist asan_blacklist.txt asan)
++add_compiler_rt_resource_file(asan_ignorelist asan_ignorelist.txt asan)
+ 
+ add_subdirectory(scripts)
+ 
+diff --git a/compiler-rt/lib/asan/asan_blacklist.txt b/compiler-rt/lib/asan/asan_ignorelist.txt
+similarity index 59%
+rename from compiler-rt/lib/asan/asan_blacklist.txt
+rename to compiler-rt/lib/asan/asan_ignorelist.txt
+index c25921fd5fe7..5ce59926ce2f 100644
+--- a/compiler-rt/lib/asan/asan_blacklist.txt
++++ b/compiler-rt/lib/asan/asan_ignorelist.txt
+@@ -1,6 +1,6 @@
+-# Blacklist for AddressSanitizer. Turns off instrumentation of particular
+-# functions or sources. Use with care. You may set location of blacklist
+-# at compile-time using -fsanitize-blacklist=<path> flag.
++# Ignorelist for AddressSanitizer. Turns off instrumentation of particular
++# functions or sources. Use with care. You may set location of ignorelist
++# at compile-time using -fsanitize-ignorelist=<path> flag.
+ 
+ # Example usage:
+ # fun:*bad_function_name*
+diff --git a/compiler-rt/lib/asan/tests/CMakeLists.txt b/compiler-rt/lib/asan/tests/CMakeLists.txt
+index e56ae16288ca..d7caf4c861bb 100644
+--- a/compiler-rt/lib/asan/tests/CMakeLists.txt
++++ b/compiler-rt/lib/asan/tests/CMakeLists.txt
+@@ -53,7 +53,7 @@ list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS -g)
+ # Use -D instead of definitions to please custom compile command.
+ list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
+   ${COMPILER_RT_ASAN_SHADOW_SCALE_FLAG}
+-  -DASAN_HAS_BLACKLIST=1
++  -DASAN_HAS_IGNORELIST=1
+   -DASAN_HAS_EXCEPTIONS=1
+   -DASAN_UAR=0
+   )
+@@ -68,11 +68,11 @@ if(APPLE)
+   list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS})
+ endif()
+ 
+-set(ASAN_BLACKLIST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/asan_test.ignore")
++set(ASAN_IGNORELIST_FILE "${CMAKE_CURRENT_SOURCE_DIR}/asan_test.ignore")
+ set(ASAN_UNITTEST_INSTRUMENTED_CFLAGS
+   ${ASAN_UNITTEST_COMMON_CFLAGS}
+   -fsanitize=address
+-  "-fsanitize-blacklist=${ASAN_BLACKLIST_FILE}"
++  "-fsanitize-ignorelist=${ASAN_IGNORELIST_FILE}"
+ )
+ if(NOT MSVC)
+   list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS --driver-mode=g++)
+@@ -166,7 +166,7 @@ function(add_asan_tests arch test_runtime)
+   # Closure to keep the values.
+   function(generate_asan_tests test_objects test_suite testname)
+     generate_compiler_rt_tests(${test_objects} ${test_suite} ${testname} ${arch}
+-      COMPILE_DEPS ${ASAN_UNITTEST_HEADERS} ${ASAN_BLACKLIST_FILE}
++      COMPILE_DEPS ${ASAN_UNITTEST_HEADERS} ${ASAN_IGNORELIST_FILE}
+       DEPS gtest asan
+       KIND ${TEST_KIND}
+       ${ARGN}
+diff --git a/compiler-rt/lib/asan/tests/asan_test.cpp b/compiler-rt/lib/asan/tests/asan_test.cpp
+index c0b79bba48ff..eb61410d768f 100644
+--- a/compiler-rt/lib/asan/tests/asan_test.cpp
++++ b/compiler-rt/lib/asan/tests/asan_test.cpp
+@@ -230,13 +230,13 @@ TEST(AddressSanitizer, UAF_Packed5) {
+   delete [] Ident(p);
+ }
+ 
+-#if ASAN_HAS_BLACKLIST
++#if ASAN_HAS_IGNORELIST
+ TEST(AddressSanitizer, IgnoreTest) {
+   int *x = Ident(new int);
+   delete Ident(x);
+   *x = 0;
+ }
+-#endif  // ASAN_HAS_BLACKLIST
++#endif  // ASAN_HAS_IGNORELIST
+ 
+ struct StructWithBitField {
+   int bf1:1;
+diff --git a/compiler-rt/lib/asan/tests/asan_test.ignore b/compiler-rt/lib/asan/tests/asan_test.ignore
+index ea5c26099e75..ed65adf1c487 100644
+--- a/compiler-rt/lib/asan/tests/asan_test.ignore
++++ b/compiler-rt/lib/asan/tests/asan_test.ignore
+@@ -1,3 +1,3 @@
+-# blacklisted functions for instrumented ASan unit test
++# ignorelisted functions for instrumented ASan unit test
+ fun:*IgnoreTest*
+ fun:*SomeOtherFunc*
+diff --git a/compiler-rt/lib/asan/tests/asan_test_config.h b/compiler-rt/lib/asan/tests/asan_test_config.h
+index a0fadf8af9cb..9aac0875987a 100644
+--- a/compiler-rt/lib/asan/tests/asan_test_config.h
++++ b/compiler-rt/lib/asan/tests/asan_test_config.h
+@@ -28,8 +28,8 @@ using std::string;
+ # error "please define ASAN_HAS_EXCEPTIONS"
+ #endif
+ 
+-#ifndef ASAN_HAS_BLACKLIST
+-# error "please define ASAN_HAS_BLACKLIST"
++#ifndef ASAN_HAS_IGNORELIST
++# error "please define ASAN_HAS_IGNORELIST"
+ #endif
+ 
+ #ifndef ASAN_NEEDS_SEGV
+diff --git a/compiler-rt/lib/cfi/CMakeLists.txt b/compiler-rt/lib/cfi/CMakeLists.txt
+index 9a641d33ac48..cfd523778144 100644
+--- a/compiler-rt/lib/cfi/CMakeLists.txt
++++ b/compiler-rt/lib/cfi/CMakeLists.txt
+@@ -40,4 +40,4 @@ if(OS_NAME MATCHES "Linux" OR OS_NAME MATCHES "FreeBSD" OR OS_NAME MATCHES "NetB
+   endforeach()
+ endif()
+ 
+-add_compiler_rt_resource_file(cfi_blacklist cfi_blacklist.txt cfi)
++add_compiler_rt_resource_file(cfi_ignorelist cfi_ignorelist.txt cfi)
+diff --git a/compiler-rt/lib/cfi/cfi_blacklist.txt b/compiler-rt/lib/cfi/cfi_ignorelist.txt
+similarity index 100%
+rename from compiler-rt/lib/cfi/cfi_blacklist.txt
+rename to compiler-rt/lib/cfi/cfi_ignorelist.txt
+diff --git a/compiler-rt/lib/hwasan/CMakeLists.txt b/compiler-rt/lib/hwasan/CMakeLists.txt
+index b20bb441c820..707cbb44233f 100644
+--- a/compiler-rt/lib/hwasan/CMakeLists.txt
++++ b/compiler-rt/lib/hwasan/CMakeLists.txt
+@@ -173,7 +173,7 @@ foreach(arch ${HWASAN_SUPPORTED_ARCH})
+   endif()
+ endforeach()
+ 
+-add_compiler_rt_resource_file(hwasan_blacklist hwasan_blacklist.txt hwasan)
++add_compiler_rt_resource_file(hwasan_ignorelist hwasan_ignorelist.txt hwasan)
+ 
+ add_subdirectory("scripts")
+ 
+diff --git a/compiler-rt/lib/hwasan/hwasan_blacklist.txt b/compiler-rt/lib/hwasan/hwasan_blacklist.txt
+deleted file mode 100644
+index 395ba28f0212..000000000000
+--- a/compiler-rt/lib/hwasan/hwasan_blacklist.txt
++++ /dev/null
+@@ -1,7 +0,0 @@
+-# Blacklist for HWAddressSanitizer. Turns off instrumentation of particular
+-# functions or sources. Use with care. You may set location of blacklist
+-# at compile-time using -fsanitize-blacklist=<path> flag.
+-
+-# Example usage:
+-# fun:*bad_function_name*
+-# src:file_with_tricky_code.cc
+diff --git a/compiler-rt/lib/hwasan/hwasan_ignorelist.txt b/compiler-rt/lib/hwasan/hwasan_ignorelist.txt
+new file mode 100644
+index 000000000000..70590c970f55
+--- /dev/null
++++ b/compiler-rt/lib/hwasan/hwasan_ignorelist.txt
+@@ -0,0 +1,7 @@
++# Ignorelist for HWAddressSanitizer. Turns off instrumentation of particular
++# functions or sources. Use with care. You may set location of ignorelist
++# at compile-time using -fsanitize-ignorelist=<path> flag.
++
++# Example usage:
++# fun:*bad_function_name*
++# src:file_with_tricky_code.cc
+diff --git a/compiler-rt/lib/msan/CMakeLists.txt b/compiler-rt/lib/msan/CMakeLists.txt
+index 86e96a01a118..cb1a784eee8b 100644
+--- a/compiler-rt/lib/msan/CMakeLists.txt
++++ b/compiler-rt/lib/msan/CMakeLists.txt
+@@ -80,8 +80,8 @@ foreach(arch ${MSAN_SUPPORTED_ARCH})
+   endif()
+ endforeach()
+ 
+-add_compiler_rt_resource_file(msan_blacklist msan_blacklist.txt msan)
+-list(APPEND MSAN_RUNTIME_LIBRARIES msan_blacklist)
++add_compiler_rt_resource_file(msan_ignorelist msan_ignorelist.txt msan)
++list(APPEND MSAN_RUNTIME_LIBRARIES msan_ignorelist)
+ 
+ if(COMPILER_RT_INCLUDE_TESTS)
+   add_subdirectory(tests)
+diff --git a/compiler-rt/lib/msan/msan_blacklist.txt b/compiler-rt/lib/msan/msan_blacklist.txt
+deleted file mode 100644
+index 3efef5712185..000000000000
+--- a/compiler-rt/lib/msan/msan_blacklist.txt
++++ /dev/null
+@@ -1,10 +0,0 @@
+-# Blacklist for MemorySanitizer. Turns off instrumentation of particular
+-# functions or sources. Use with care. You may set location of blacklist
+-# at compile-time using -fsanitize-blacklist=<path> flag.
+-
+-# Example usage:
+-# fun:*bad_function_name*
+-# src:file_with_tricky_code.cc
+-
+-# https://bugs.llvm.org/show_bug.cgi?id=31877
+-fun:__gxx_personality_*
+diff --git a/compiler-rt/lib/msan/msan_ignorelist.txt b/compiler-rt/lib/msan/msan_ignorelist.txt
+new file mode 100644
+index 000000000000..1fae64d880bc
+--- /dev/null
++++ b/compiler-rt/lib/msan/msan_ignorelist.txt
+@@ -0,0 +1,10 @@
++# Ignorelist for MemorySanitizer. Turns off instrumentation of particular
++# functions or sources. Use with care. You may set location of ignorelist
++# at compile-time using -fsanitize-ignorelist=<path> flag.
++
++# Example usage:
++# fun:*bad_function_name*
++# src:file_with_tricky_code.cc
++
++# https://bugs.llvm.org/show_bug.cgi?id=31877
++fun:__gxx_personality_*
+diff --git a/compiler-rt/lib/msan/tests/CMakeLists.txt b/compiler-rt/lib/msan/tests/CMakeLists.txt
+index de3d95094848..de2b582281ba 100644
+--- a/compiler-rt/lib/msan/tests/CMakeLists.txt
++++ b/compiler-rt/lib/msan/tests/CMakeLists.txt
+@@ -9,7 +9,7 @@ set(MSAN_LIBCXX_CFLAGS
+   -fsanitize=memory
+   -fsanitize-memory-track-origins
+   -Wno-pedantic
+-  -Xclang -fdepfile-entry=${COMPILER_RT_OUTPUT_DIR}/share/msan_blacklist.txt
++  -Xclang -fdepfile-entry=${COMPILER_RT_OUTPUT_DIR}/share/msan_ignorelist.txt
+   )
+ 
+ # Unittest sources and build flags.
+diff --git a/compiler-rt/lib/msan/tests/msan_test.cpp b/compiler-rt/lib/msan/tests/msan_test.cpp
+index daf80bb23efe..552f7b9eb9d0 100644
+--- a/compiler-rt/lib/msan/tests/msan_test.cpp
++++ b/compiler-rt/lib/msan/tests/msan_test.cpp
+@@ -4832,7 +4832,7 @@ TEST(MemorySanitizer, throw_catch) {
+     // __gxx_personality_v0 is instrumented, libgcc_s is not; as a result,
+     // __msan_param_tls is not updated and __gxx_personality_v0 can find
+     // leftover poison from the previous call.
+-    // A suppression in msan_blacklist.txt makes it work.
++    // A suppression in msan_ignorelist.txt makes it work.
+     throw_stuff();
+   } catch (const int &e) {
+     // pass
+diff --git a/compiler-rt/test/asan/TestCases/Helpers/blacklist-extra.cpp b/compiler-rt/test/asan/TestCases/Helpers/ignorelist-extra.cpp
+similarity index 61%
+rename from compiler-rt/test/asan/TestCases/Helpers/blacklist-extra.cpp
+rename to compiler-rt/test/asan/TestCases/Helpers/ignorelist-extra.cpp
+index 627115cdda2b..1d99df5ae33e 100644
+--- a/compiler-rt/test/asan/TestCases/Helpers/blacklist-extra.cpp
++++ b/compiler-rt/test/asan/TestCases/Helpers/ignorelist-extra.cpp
+@@ -1,4 +1,4 @@
+-// This function is broken, but this file is blacklisted
++// This function is broken, but this file is ignorelisted
+ int externalBrokenFunction(int argc) {
+   char x[10] = {0};
+   return x[argc * 10];  // BOOM
+diff --git a/compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist-extra.cpp b/compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist-extra.cpp
+similarity index 100%
+rename from compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist-extra.cpp
+rename to compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist-extra.cpp
+diff --git a/compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist-extra2.cpp b/compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist-extra2.cpp
+similarity index 100%
+rename from compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist-extra2.cpp
+rename to compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist-extra2.cpp
+diff --git a/compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist.txt b/compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist.txt
+similarity index 55%
+rename from compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist.txt
+rename to compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist.txt
+index 27e49e25f67a..f9201b21f2cb 100644
+--- a/compiler-rt/test/asan/TestCases/Helpers/initialization-blacklist.txt
++++ b/compiler-rt/test/asan/TestCases/Helpers/initialization-ignorelist.txt
+@@ -1,3 +1,3 @@
+ global:*badGlobal*=init
+ type:*badNamespace::BadClass*=init
+-src:*initialization-blacklist-extra2.cpp=init
++src:*initialization-ignorelist-extra2.cpp=init
+diff --git a/compiler-rt/test/asan/TestCases/Windows/iostream_sbo.cpp b/compiler-rt/test/asan/TestCases/Windows/iostream_sbo.cpp
+index 46f452a32522..8c7570f3c7d8 100644
+--- a/compiler-rt/test/asan/TestCases/Windows/iostream_sbo.cpp
++++ b/compiler-rt/test/asan/TestCases/Windows/iostream_sbo.cpp
+@@ -1,9 +1,9 @@
+-// First, check this works with the default blacklist:
++// First, check this works with the default ignorelist:
+ // RUN: %clang_cl_asan -Od %s -Fe%t
+ // RUN: echo "42" | %run %t 2>&1 | FileCheck %s
+ //
+-// Then, make sure it still works when a user uses his own blacklist file:
+-// RUN: %clang_cl_asan -Od %s -fsanitize-blacklist=%p/../Helpers/initialization-blacklist.txt -Fe%t2
++// Then, make sure it still works when a user uses their own ignorelist file:
++// RUN: %clang_cl_asan -Od %s -fsanitize-ignorelist=%p/../Helpers/initialization-ignorelist.txt -Fe%t2
+ // RUN: echo "42" | %run %t2 2>&1 | FileCheck %s
+ 
+ #include <iostream>
+diff --git a/compiler-rt/test/asan/TestCases/blacklist.cpp b/compiler-rt/test/asan/TestCases/blacklist.cpp
+deleted file mode 100644
+index 9508f6f4d971..000000000000
+--- a/compiler-rt/test/asan/TestCases/blacklist.cpp
++++ /dev/null
+@@ -1,38 +0,0 @@
+-// Test the blacklist functionality of ASan
+-
+-// RUN: echo "fun:*brokenFunction*" > %tmp
+-// RUN: echo "global:*badGlobal*" >> %tmp
+-// RUN: echo "src:*blacklist-extra.cpp" >> %tmp
+-// RUN: %clangxx_asan -fsanitize-blacklist=%tmp -O0 %s -o %t \
+-// RUN: %p/Helpers/blacklist-extra.cpp && %run %t 2>&1
+-// RUN: %clangxx_asan -fsanitize-blacklist=%tmp -O1 %s -o %t \
+-// RUN: %p/Helpers/blacklist-extra.cpp && %run %t 2>&1
+-// RUN: %clangxx_asan -fsanitize-blacklist=%tmp -O2 %s -o %t \
+-// RUN: %p/Helpers/blacklist-extra.cpp && %run %t 2>&1
+-// RUN: %clangxx_asan -fsanitize-blacklist=%tmp -O3 %s -o %t \
+-// RUN: %p/Helpers/blacklist-extra.cpp && %run %t 2>&1
+-
+-// badGlobal is accessed improperly, but we blacklisted it. Align
+-// it to make sure memory past the end of badGlobal will be in
+-// the same page.
+-__attribute__((aligned(16))) int badGlobal;
+-int readBadGlobal() {
+-  return (&badGlobal)[1];
+-}
+-
+-// A function which is broken, but excluded in the blacklist.
+-int brokenFunction(int argc) {
+-  char x[10] = {0};
+-  return x[argc * 10];  // BOOM
+-}
+-
+-// This function is defined in Helpers/blacklist-extra.cpp, a source file which
+-// is blacklisted by name
+-int externalBrokenFunction(int x);
+-
+-int main(int argc, char **argv) {
+-  brokenFunction(argc);
+-  int x = readBadGlobal();
+-  externalBrokenFunction(argc);
+-  return 0;
+-}
+diff --git a/compiler-rt/test/asan/TestCases/default_blacklist.cpp b/compiler-rt/test/asan/TestCases/default_ignorelist.cpp
+similarity index 55%
+rename from compiler-rt/test/asan/TestCases/default_blacklist.cpp
+rename to compiler-rt/test/asan/TestCases/default_ignorelist.cpp
+index 4de851ae73fe..8297b51e7680 100644
+--- a/compiler-rt/test/asan/TestCases/default_blacklist.cpp
++++ b/compiler-rt/test/asan/TestCases/default_ignorelist.cpp
+@@ -2,6 +2,6 @@
+ // XFAIL: android
+ // UNSUPPORTED: ios
+ //
+-// Test that ASan uses the default blacklist from resource directory.
++// Test that ASan uses the default ignorelist from resource directory.
+ // RUN: %clangxx_asan -### %s 2>&1 | FileCheck %s
+-// CHECK: fsanitize-system-blacklist={{.*}}asan_blacklist.txt
++// CHECK: fsanitize-system-ignorelist={{.*}}asan_ignorelist.txt
+diff --git a/compiler-rt/test/asan/TestCases/ignorelist.cpp b/compiler-rt/test/asan/TestCases/ignorelist.cpp
+new file mode 100644
+index 000000000000..348ea5d350bf
+--- /dev/null
++++ b/compiler-rt/test/asan/TestCases/ignorelist.cpp
+@@ -0,0 +1,38 @@
++// Test the ignorelist functionality of ASan
++
++// RUN: echo "fun:*brokenFunction*" > %tmp
++// RUN: echo "global:*badGlobal*" >> %tmp
++// RUN: echo "src:*ignorelist-extra.cpp" >> %tmp
++// RUN: %clangxx_asan -fsanitize-ignorelist=%tmp -O0 %s -o %t \
++// RUN: %p/Helpers/ignorelist-extra.cpp && %run %t 2>&1
++// RUN: %clangxx_asan -fsanitize-ignorelist=%tmp -O1 %s -o %t \
++// RUN: %p/Helpers/ignorelist-extra.cpp && %run %t 2>&1
++// RUN: %clangxx_asan -fsanitize-ignorelist=%tmp -O2 %s -o %t \
++// RUN: %p/Helpers/ignorelist-extra.cpp && %run %t 2>&1
++// RUN: %clangxx_asan -fsanitize-ignorelist=%tmp -O3 %s -o %t \
++// RUN: %p/Helpers/ignorelist-extra.cpp && %run %t 2>&1
++
++// badGlobal is accessed improperly, but we ignorelisted it. Align
++// it to make sure memory past the end of badGlobal will be in
++// the same page.
++__attribute__((aligned(16))) int badGlobal;
++int readBadGlobal() {
++  return (&badGlobal)[1];
++}
++
++// A function which is broken, but excluded in the ignorelist.
++int brokenFunction(int argc) {
++  char x[10] = {0};
++  return x[argc * 10];  // BOOM
++}
++
++// This function is defined in Helpers/ignorelist-extra.cpp, a source file which
++// is ignorelisted by name
++int externalBrokenFunction(int x);
++
++int main(int argc, char **argv) {
++  brokenFunction(argc);
++  int x = readBadGlobal();
++  externalBrokenFunction(argc);
++  return 0;
++}
+diff --git a/compiler-rt/test/asan/TestCases/initialization-blacklist.cpp b/compiler-rt/test/asan/TestCases/initialization-blacklist.cpp
+deleted file mode 100644
+index f0b86e57a8c3..000000000000
+--- a/compiler-rt/test/asan/TestCases/initialization-blacklist.cpp
++++ /dev/null
+@@ -1,29 +0,0 @@
+-// Test for blacklist functionality of initialization-order checker.
+-
+-// RUN: %clangxx_asan -O0 %s %p/Helpers/initialization-blacklist-extra.cpp\
+-// RUN:   %p/Helpers/initialization-blacklist-extra2.cpp \
+-// RUN:   -fsanitize-blacklist=%p/Helpers/initialization-blacklist.txt -o %t
+-// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
+-// RUN: %clangxx_asan -O1 %s %p/Helpers/initialization-blacklist-extra.cpp\
+-// RUN:   %p/Helpers/initialization-blacklist-extra2.cpp \
+-// RUN:   -fsanitize-blacklist=%p/Helpers/initialization-blacklist.txt -o %t
+-// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
+-// RUN: %clangxx_asan -O2 %s %p/Helpers/initialization-blacklist-extra.cpp\
+-// RUN:   %p/Helpers/initialization-blacklist-extra2.cpp \
+-// RUN:   -fsanitize-blacklist=%p/Helpers/initialization-blacklist.txt -o %t
+-// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
+-
+-// Function is defined in another TU.
+-int readBadGlobal();
+-int x = readBadGlobal();  // init-order bug.
+-
+-// Function is defined in another TU.
+-int accessBadObject();
+-int y = accessBadObject();  // init-order bug.
+-
+-int readBadSrcGlobal();
+-int z = readBadSrcGlobal();  // init-order bug.
+-
+-int main(int argc, char **argv) {
+-  return argc + x + y + z - 1;
+-}
+diff --git a/compiler-rt/test/asan/TestCases/initialization-ignorelist.cpp b/compiler-rt/test/asan/TestCases/initialization-ignorelist.cpp
+new file mode 100644
+index 000000000000..4ca126dc98e7
+--- /dev/null
++++ b/compiler-rt/test/asan/TestCases/initialization-ignorelist.cpp
+@@ -0,0 +1,29 @@
++// Test for ignorelist functionality of initialization-order checker.
++
++// RUN: %clangxx_asan -O0 %s %p/Helpers/initialization-ignorelist-extra.cpp\
++// RUN:   %p/Helpers/initialization-ignorelist-extra2.cpp \
++// RUN:   -fsanitize-ignorelist=%p/Helpers/initialization-ignorelist.txt -o %t
++// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
++// RUN: %clangxx_asan -O1 %s %p/Helpers/initialization-ignorelist-extra.cpp\
++// RUN:   %p/Helpers/initialization-ignorelist-extra2.cpp \
++// RUN:   -fsanitize-ignorelist=%p/Helpers/initialization-ignorelist.txt -o %t
++// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
++// RUN: %clangxx_asan -O2 %s %p/Helpers/initialization-ignorelist-extra.cpp\
++// RUN:   %p/Helpers/initialization-ignorelist-extra2.cpp \
++// RUN:   -fsanitize-ignorelist=%p/Helpers/initialization-ignorelist.txt -o %t
++// RUN: %env_asan_opts=check_initialization_order=true %run %t 2>&1
++
++// Function is defined in another TU.
++int readBadGlobal();
++int x = readBadGlobal();  // init-order bug.
++
++// Function is defined in another TU.
++int accessBadObject();
++int y = accessBadObject();  // init-order bug.
++
++int readBadSrcGlobal();
++int z = readBadSrcGlobal();  // init-order bug.
++
++int main(int argc, char **argv) {
++  return argc + x + y + z - 1;
++}
+diff --git a/compiler-rt/test/dfsan/flags.c b/compiler-rt/test/dfsan/flags.c
+index 914f54f42b6c..9ac61a2b6d8c 100644
+--- a/compiler-rt/test/dfsan/flags.c
++++ b/compiler-rt/test/dfsan/flags.c
+@@ -1,6 +1,6 @@
+-// RUN: %clang_dfsan %s -fsanitize-blacklist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang_dfsan %s -fsanitize-blacklist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && DFSAN_OPTIONS=warn_unimplemented=0 %run %t 2>&1 | count 0
+-// RUN: %clang_dfsan %s -fsanitize-blacklist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && DFSAN_OPTIONS=warn_nonzero_labels=1 %run %t 2>&1 | FileCheck --check-prefix=CHECK-NONZERO %s
++// RUN: %clang_dfsan %s -fsanitize-ignorelist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang_dfsan %s -fsanitize-ignorelist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && DFSAN_OPTIONS=warn_unimplemented=0 %run %t 2>&1 | count 0
++// RUN: %clang_dfsan %s -fsanitize-ignorelist=%S/Inputs/flags_abilist.txt -mllvm -dfsan-debug-nonzero-labels -o %t && DFSAN_OPTIONS=warn_nonzero_labels=1 %run %t 2>&1 | FileCheck --check-prefix=CHECK-NONZERO %s
+ 
+ // Tests that flags work correctly.
+ 
+diff --git a/compiler-rt/test/msan/default_blacklist.cpp b/compiler-rt/test/msan/default_blacklist.cpp
+deleted file mode 100644
+index ea67f942a2d0..000000000000
+--- a/compiler-rt/test/msan/default_blacklist.cpp
++++ /dev/null
+@@ -1,3 +0,0 @@
+-// Test that MSan uses the default blacklist from resource directory.
+-// RUN: %clangxx_msan -### %s 2>&1 | FileCheck %s
+-// CHECK: fsanitize-system-blacklist={{.*}}msan_blacklist.txt
+diff --git a/compiler-rt/test/msan/default_ignorelist.cpp b/compiler-rt/test/msan/default_ignorelist.cpp
+new file mode 100644
+index 000000000000..6def0cb20ab5
+--- /dev/null
++++ b/compiler-rt/test/msan/default_ignorelist.cpp
+@@ -0,0 +1,3 @@
++// Test that MSan uses the default ignorelist from resource directory.
++// RUN: %clangxx_msan -### %s 2>&1 | FileCheck %s
++// CHECK: fsanitize-system-ignorelist={{.*}}msan_ignorelist.txt
+diff --git a/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_blocklist.cpp b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_ignorelist.cpp
+similarity index 71%
+rename from compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_blocklist.cpp
+rename to compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_ignorelist.cpp
+index 728c0e8e6fbb..02d6f05816c2 100644
+--- a/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_blocklist.cpp
++++ b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_ignorelist.cpp
+@@ -1,5 +1,5 @@
+ // Tests -fsanitize-coverage-allowlist=allowlist.txt and
+-// -fsanitize-coverage-blocklist=blocklist.txt with libFuzzer-like coverage
++// -fsanitize-coverage-ignorelist=ignorelist.txt with libFuzzer-like coverage
+ // options
+ 
+ // REQUIRES: has_sancovcc,stable-runtime
+@@ -44,50 +44,50 @@
+ // RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt                                             2>&1 |     grep -f patterns.txt | count 9
+ // RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt                                             2>&1 |     grep -f patterns.txt | count 5
+ 
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager                                           -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_all.txt   2>&1 | not grep -f patterns.txt
+-
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-blocklist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_none.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 9
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 5
+-
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_file.txt  2>&1 | not grep -f patterns.txt
+-
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
+-
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 | not grep -f patterns.txt
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-blocklist=bl_bar.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager                                           -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fexperimental-new-pass-manager -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_all.txt   2>&1 | not grep -f patterns.txt
++
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 14
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 9
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_none.txt  2>&1 |     grep -f patterns.txt | count 5
++
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_file.txt  2>&1 | not grep -f patterns.txt
++
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_foo.txt   2>&1 |     grep -f patterns.txt | count 5
++
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table                                           -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_all.txt  -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_none.txt -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_file.txt -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_foo.txt  -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 |     grep -f patterns.txt | count 9
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-allowlist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 | not grep -f patterns.txt
+ 
+ /// The options below are deprecated and will be removed.
+-// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-whitelist=al_bar.txt  -fsanitize-coverage-blacklist=bl_bar.txt   2>&1 | not grep -f patterns.txt
++// RUN: %clangxx -O0 %s -S -o - -emit-llvm -fsanitize-coverage=inline-8bit-counters,indirect-calls,trace-cmp,pc-table -fsanitize-coverage-whitelist=al_bar.txt  -fsanitize-coverage-ignorelist=bl_bar.txt   2>&1 | not grep -f patterns.txt
+ 
+ // RUN: cd -
+ // RUN: rm -rf $DIR
+diff --git a/compiler-rt/test/tsan/blacklist.cpp b/compiler-rt/test/tsan/ignorelist.cpp
+similarity index 54%
+rename from compiler-rt/test/tsan/blacklist.cpp
+rename to compiler-rt/test/tsan/ignorelist.cpp
+index c1bcca60d505..dc7ed6d9f34c 100644
+--- a/compiler-rt/test/tsan/blacklist.cpp
++++ b/compiler-rt/test/tsan/ignorelist.cpp
+@@ -1,7 +1,7 @@
+-// Test blacklist functionality for TSan.
++// Test ignorelist functionality for TSan.
+ 
+-// RUN: echo "fun:*Blacklisted_Thread2*" > %t.blacklist
+-// RUN: %clangxx_tsan -O1 %s -fsanitize-blacklist=%t.blacklist -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: echo "fun:*Ignorelisted_Thread2*" > %t.ignorelist
++// RUN: %clangxx_tsan -O1 %s -fsanitize-ignorelist=%t.ignorelist -o %t && %run %t 2>&1 | FileCheck %s
+ #include <pthread.h>
+ #include <stdio.h>
+ 
+@@ -12,7 +12,7 @@ void *Thread1(void *x) {
+   return NULL;
+ }
+ 
+-void *Blacklisted_Thread2(void *x) {
++void *Ignorelisted_Thread2(void *x) {
+   Global--;
+   return NULL;
+ }
+@@ -20,7 +20,7 @@ void *Blacklisted_Thread2(void *x) {
+ int main() {
+   pthread_t t[2];
+   pthread_create(&t[0], NULL, Thread1, NULL);
+-  pthread_create(&t[1], NULL, Blacklisted_Thread2, NULL);
++  pthread_create(&t[1], NULL, Ignorelisted_Thread2, NULL);
+   pthread_join(t[0], NULL);
+   pthread_join(t[1], NULL);
+   fprintf(stderr, "PASS\n");
+diff --git a/compiler-rt/test/tsan/blacklist2.cpp b/compiler-rt/test/tsan/ignorelist2.cpp
+similarity index 52%
+rename from compiler-rt/test/tsan/blacklist2.cpp
+rename to compiler-rt/test/tsan/ignorelist2.cpp
+index 6442eb0e789d..e2e835819b99 100644
+--- a/compiler-rt/test/tsan/blacklist2.cpp
++++ b/compiler-rt/test/tsan/ignorelist2.cpp
+@@ -1,9 +1,9 @@
+-// Test that blacklisted functions are still contained in the stack trace.
++// Test that ignorelisted functions are still contained in the stack trace.
+ 
+-// RUN: echo "fun:*Blacklisted_Thread2*" > %t.blacklist
+-// RUN: echo "fun:*CallTouchGlobal*" >> %t.blacklist
++// RUN: echo "fun:*Ignorelisted_Thread2*" > %t.ignorelist
++// RUN: echo "fun:*CallTouchGlobal*" >> %t.ignorelist
+ 
+-// RUN: %clangxx_tsan -O1 %s -fsanitize-blacklist=%t.blacklist -o %t
++// RUN: %clangxx_tsan -O1 %s -fsanitize-ignorelist=%t.ignorelist -o %t
+ // RUN: %deflake %run %t 2>&1 | FileCheck %s
+ #include "test.h"
+ 
+@@ -13,25 +13,25 @@ void *Thread1(void *x) {
+   barrier_wait(&barrier);
+   // CHECK: ThreadSanitizer: data race
+   // CHECK: Write of size 4
+-  // CHECK: #0 Thread1{{.*}}blacklist2.cpp:[[@LINE+1]]
++  // CHECK: #0 Thread1{{.*}}ignorelist2.cpp:[[@LINE+1]]
+   Global++;
+   return NULL;
+ }
+ 
+ void TouchGlobal() __attribute__((noinline)) {
+   // CHECK: Previous write of size 4
+-  // CHECK: #0 TouchGlobal{{.*}}blacklist2.cpp:[[@LINE+1]]
++  // CHECK: #0 TouchGlobal{{.*}}ignorelist2.cpp:[[@LINE+1]]
+   Global--;
+ }
+ 
+ void CallTouchGlobal() __attribute__((noinline)) {
+-  // CHECK: #1 CallTouchGlobal{{.*}}blacklist2.cpp:[[@LINE+1]]
++  // CHECK: #1 CallTouchGlobal{{.*}}ignorelist2.cpp:[[@LINE+1]]
+   TouchGlobal();
+ }
+ 
+-void *Blacklisted_Thread2(void *x) {
++void *Ignorelisted_Thread2(void *x) {
+   Global--;
+-  // CHECK: #2 Blacklisted_Thread2{{.*}}blacklist2.cpp:[[@LINE+1]]
++  // CHECK: #2 Ignorelisted_Thread2{{.*}}ignorelist2.cpp:[[@LINE+1]]
+   CallTouchGlobal();
+   barrier_wait(&barrier);
+   return NULL;
+@@ -41,7 +41,7 @@ int main() {
+   barrier_init(&barrier, 2);
+   pthread_t t[2];
+   pthread_create(&t[0], NULL, Thread1, NULL);
+-  pthread_create(&t[1], NULL, Blacklisted_Thread2, NULL);
++  pthread_create(&t[1], NULL, Ignorelisted_Thread2, NULL);
+   pthread_join(t[0], NULL);
+   pthread_join(t[1], NULL);
+   fprintf(stderr, "PASS\n");
+diff --git a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-blacklist.c b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-ignorelist.c
+similarity index 67%
+rename from compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-blacklist.c
+rename to compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-ignorelist.c
+index e77b94e5e692..23e73a36cd30 100644
+--- a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-blacklist.c
++++ b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/integer-sign-change-ignorelist.c
+@@ -6,10 +6,10 @@
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-integer-sign-change]" >> %tmp
+ // RUN: echo "fun:implicitSignChange" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-sign-change -fno-sanitize-recover=implicit-integer-sign-change -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ #include <stdint.h>
+ #include <stdio.h>
+@@ -19,7 +19,7 @@ int32_t implicitSignChange(uint32_t argc) {
+   // CHECK-NOT: runtime error
+   // CHECK-LABEL: TEST
+   return argc; // BOOM
+-  // ERROR: {{.*}}integer-sign-change-blacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'int') changed the value to -1 (32-bit, signed)
++  // ERROR: {{.*}}integer-sign-change-ignorelacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'int') changed the value to -1 (32-bit, signed)
+   // CHECK-NOT: runtime error
+ }
+ 
+diff --git a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-blacklist.c b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-ignorelist.c
+similarity index 53%
+rename from compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-blacklist.c
+rename to compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-ignorelist.c
+index 144c3b9376d7..5e914b4c6316 100644
+--- a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-blacklist.c
++++ b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-ignorelist.c
+@@ -6,42 +6,42 @@
+ // RUN: rm -f %tmp
+ // RUN: echo "[integer]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-conversion]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-signed-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-unsigned-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelacklist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+ 
+ #include <stdint.h>
+ #include <stdio.h>
+@@ -51,7 +51,7 @@ uint8_t implicitUnsignedTruncation(int32_t argc) {
+   // CHECK-NOT: runtime error
+   // CHECK-LABEL: TEST
+   return argc; // BOOM
+-  // ERROR: {{.*}}signed-integer-truncation-blacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}} (aka 'int') of value -1 (32-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)
++  // ERROR: {{.*}}signed-integer-truncation-ignorelacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}} (aka 'int') of value -1 (32-bit, signed) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)
+   // CHECK-NOT: runtime error
+ }
+ 
+diff --git a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-ignorelist.c
+similarity index 62%
+rename from compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c
+rename to compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-ignorelist.c
+index 34a75707a314..8937676669b0 100644
+--- a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-blacklist.c
++++ b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/signed-integer-truncation-or-sign-change-ignorelist.c
+@@ -8,37 +8,37 @@
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-signed-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitConversion" >> %tmp
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-signed-integer-truncation,implicit-integer-sign-change]" >> %tmp
+ // RUN: echo "fun:implicitConversion" >> %tmp
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+ 
+ // The only two way it works:
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-integer-sign-change]" >> %tmp
+ // RUN: echo "fun:implicitConversion" >> %tmp
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-signed-integer-truncation]" >> %tmp
+ // RUN: echo "[implicit-integer-sign-change]" >> %tmp
+ // RUN: echo "fun:implicitConversion" >> %tmp
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-signed-integer-truncation,implicit-integer-sign-change -fno-sanitize-recover=implicit-signed-integer-truncation,implicit-integer-sign-change -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ #include <stdint.h>
+ #include <stdio.h>
+@@ -48,7 +48,7 @@ int8_t implicitConversion(uint32_t argc) {
+   // CHECK-NOT: runtime error
+   // CHECK-LABEL: TEST
+   return argc; // BOOM
+-  // ERROR: {{.*}}signed-integer-truncation-or-sign-change-blacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)
++  // ERROR: {{.*}}signed-integer-truncation-or-sign-change-ignorelist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka '{{(signed )?}}char') changed the value to -1 (8-bit, signed)
+   // CHECK-NOT: runtime error
+ }
+ 
+diff --git a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-blacklist.c b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-ignorelist.c
+similarity index 53%
+rename from compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-blacklist.c
+rename to compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-ignorelist.c
+index 374c4c2c91cb..a2b1cc1cc177 100644
+--- a/compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-blacklist.c
++++ b/compiler-rt/test/ubsan/TestCases/ImplicitConversion/unsigned-integer-truncation-ignorelist.c
+@@ -6,42 +6,42 @@
+ // RUN: rm -f %tmp
+ // RUN: echo "[integer]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-conversion]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-unsigned-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O1 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O2 %s -o %t && %run %t 2>&1 | FileCheck %s
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O3 %s -o %t && %run %t 2>&1 | FileCheck %s
+ 
+ // RUN: rm -f %tmp
+ // RUN: echo "[implicit-signed-integer-truncation]" >> %tmp
+ // RUN: echo "fun:implicitUnsignedTruncation" >> %tmp
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+-// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-blacklist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
++// RUN: %clang -fsanitize=implicit-integer-truncation -fno-sanitize-recover=implicit-integer-truncation -fsanitize-ignorelist=%tmp -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK,ERROR
+ 
+ #include <stdint.h>
+ #include <stdio.h>
+@@ -51,7 +51,7 @@ uint8_t implicitUnsignedTruncation(uint32_t argc) {
+   // CHECK-NOT: runtime error
+   // CHECK-LABEL: TEST
+   return argc; // BOOM
+-  // ERROR: {{.*}}unsigned-integer-truncation-blacklist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)
++  // ERROR: {{.*}}unsigned-integer-truncation-ignorelist.c:[[@LINE-1]]:10: runtime error: implicit conversion from type '{{.*}}' (aka 'unsigned int') of value 4294967295 (32-bit, unsigned) to type '{{.*}}' (aka 'unsigned char') changed the value to 255 (8-bit, unsigned)
+   // CHECK-NOT: runtime error
+ }
+ 
+diff --git a/compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-blacklist.cpp b/compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-ignorelist.cppp
+similarity index 73%
+rename from compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-blacklist.cpp
+rename to compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-ignorelist.cppp
+index c0c7b373f623..e5c166497dcf 100644
+--- a/compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-blacklist.cpp
++++ b/compiler-rt/test/ubsan/TestCases/Pointer/alignment-assumption-ignorelist.cppp
+@@ -3,7 +3,7 @@
+ // RUN: rm -f %tmp
+ // RUN: echo "[alignment]" >> %tmp
+ // RUN: echo "fun:main" >> %tmp
+-// RUN: %clang -fsanitize=alignment -fno-sanitize-recover=alignment -fsanitize-blacklist=%tmp -O0 %s -o %t && %run %t 2>&1
++// RUN: %clang -fsanitize=alignment -fno-sanitize-recover=alignment -fsanitize-ignorelist=%tmp -O0 %s -o %t && %run %t 2>&1
+ 
+ #include <stdlib.h>
+ 
+@@ -11,7 +11,7 @@ int main(int argc, char* argv[]) {
+   char *ptr = (char *)malloc(2);
+ 
+   __builtin_assume_aligned(ptr + 1, 0x8000);
+-  // CHECK: {{.*}}alignment-assumption-blacklist.cpp:[[@LINE-1]]:32: runtime error: assumption of 32768 byte alignment for pointer of type 'char *' failed
++  // CHECK: {{.*}}alignment-assumption-ignorelist.cpp:[[@LINE-1]]:32: runtime error: assumption of 32768 byte alignment for pointer of type 'char *' failed
+   // CHECK: 0x{{.*}}: note: address is {{.*}} aligned, misalignment offset is {{.*}} byte
+ 
+   free(ptr);
diff --git a/sys-libs/compiler-rt/files/llvm-leak-allowlist.v3.patch b/sys-libs/compiler-rt/files/llvm-leak-allowlist.v3.patch
new file mode 100644
index 0000000..fb03196
--- /dev/null
+++ b/sys-libs/compiler-rt/files/llvm-leak-allowlist.v3.patch
@@ -0,0 +1,77 @@
+This adds an allowlist of packages that have known memory leaks.
+So that the leak detector will not report memory leaks from these packages.
+diff --git a/lib/sanitizer_common/sanitizer_flags.inc b/lib/sanitizer_common/sanitizer_flags.inc
+index 58f7f37..bf97783 100644
+--- a/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc
++++ b/compiler-rt/lib/sanitizer_common/sanitizer_flags.inc
+@@ -152,7 +152,7 @@ COMMON_FLAG(const char *, coverage_dir, ".",
+ COMMON_FLAG(bool, full_address_space, false,
+             "Sanitize complete address space; "
+             "by default kernel area on 32-bit platforms will not be sanitized")
+-COMMON_FLAG(bool, print_suppressions, true,
++COMMON_FLAG(bool, print_suppressions, false,
+             "Print matched suppressions at exit.")
+ COMMON_FLAG(
+     bool, disable_coredump, (SANITIZER_WORDSIZE == 64),
+
+diff --git a/lib/lsan/lsan_default_suppression.h b/lib/lsan/lsan_default_suppression.h
+new file mode 100644
+index 0000000..91aa484
+--- /dev/null
++++ b/compiler-rt/lib/lsan/lsan_default_suppression.h
+@@ -0,0 +1,34 @@
++namespace __lsan {
++
++char kLSanDefaultSuppressions[] =
++// ================ Leaks in third-party code ================
++
++// False positives in libfontconfig. http://crbug.com/39050
++"leak:libfontconfig\n"
++
++// Leaks in Nvidia's libGL.
++"leak:libGL.so\n"
++
++"leak:libnssutil3\n"
++"leak:libnspr4\n"
++"leak:libnss3\n"
++"leak:libplds4\n"
++"leak:libnssckbi\n"
++
++// XRandR has several one time leaks.
++"leak:libxrandr\n"
++
++// xrandr leak. http://crbug.com/119677
++"leak:XRRFindDisplay\n"
++
++// leak on session_manager. http://crbug.com/378805
++"leak:/sbin/session_manager\n"
++
++// leak on cryptohome. http://crbug.com/508281
++"leak:/usr/sbin/cryptohome\n"
++
++// leak on buffet. http://crbug.com/473700
++//"leak:/usr/bin/buffet\n"
++// End of suppressions.
++;  // Please keep this semicolon.
++}
+
+diff --git a/compiler-rt/lib/lsan/lsan_common.cpp b/compiler-rt/lib/lsan/lsan_common.cpp
+index ac7536757743..bb4b5c5a6169 100644
+--- a/compiler-rt/lib/lsan/lsan_common.cpp
++++ b/compiler-rt/lib/lsan/lsan_common.cpp
+@@ -12,6 +12,7 @@
+ //===----------------------------------------------------------------------===//
+ 
+ #include "lsan_common.h"
++#include "lsan_default_suppression.h"
+ 
+ #include "sanitizer_common/sanitizer_common.h"
+ #include "sanitizer_common/sanitizer_flag_parser.h"
+@@ -112,6 +113,7 @@ void LeakSuppressionContext::LazyParse() {
+     if (&__lsan_default_suppressions)
+       context.Parse(__lsan_default_suppressions());
+     context.Parse(kStdSuppressions);
++    context.Parse(kLSanDefaultSuppressions);
+   }
+ }
+ 
diff --git a/sys-libs/gcc-libs/Manifest b/sys-libs/gcc-libs/Manifest
new file mode 100644
index 0000000..c24e4e8
--- /dev/null
+++ b/sys-libs/gcc-libs/Manifest
@@ -0,0 +1 @@
+DIST gcc-10.2.0.tar.xz 75004144 BLAKE2B 1d79397330354e61439283cac96a109bf78ffc726265442e6d3ec131f107589ab7349d6612836edd8c8512f7bcc1d901a65a0d5d925d28a5bf3ef5cc3f9787ee SHA512 42ae38928bd2e8183af445da34220964eb690b675b1892bbeb7cd5bb62be499011ec9a93397dba5e2fb681afadfc6f2767d03b9035b44ba9be807187ae6dc65e
diff --git a/sys-libs/gcc-libs/gcc-libs-10.2.0-r1.ebuild b/sys-libs/gcc-libs/gcc-libs-10.2.0-r1.ebuild
new file mode 120000
index 0000000..8cb3f53
--- /dev/null
+++ b/sys-libs/gcc-libs/gcc-libs-10.2.0-r1.ebuild
@@ -0,0 +1 @@
+gcc-libs-10.2.0.ebuild
\ No newline at end of file
diff --git a/sys-libs/gcc-libs/gcc-libs-10.2.0.ebuild b/sys-libs/gcc-libs/gcc-libs-10.2.0.ebuild
new file mode 100644
index 0000000..57d85f5
--- /dev/null
+++ b/sys-libs/gcc-libs/gcc-libs-10.2.0.ebuild
@@ -0,0 +1,217 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-4.4.3-r3.ebuild,v 1.1 2010/06/19 01:53:09 zorry Exp $
+
+# TODO(toolchain): This should not be building the compiler just to build
+# the target libs.  It should re-use the existing system cross compiler.
+
+EAPI=7
+
+inherit eutils binutils-funcs
+
+DESCRIPTION="The GNU Compiler Collection. This builds and installs the libgcc, libstdc++, and libgo libraries.  It is board-specific."
+
+LICENSE="GPL-3 LGPL-3 FDL-1.2"
+KEYWORDS="*"
+IUSE="go hardened hardfp libatomic +thumb vtable_verify"
+REQUIRED_USE="go? ( libatomic )"
+
+: ${CTARGET:=${CHOST}}
+
+SLOT="0"
+
+PREFIX="/usr"
+
+SRC_URI="mirror://gnu/gcc/gcc-${PV}/gcc-${PV}.tar.xz"
+
+S="${WORKDIR}/gcc-${PV}"
+MY_BUILDDIR="${WORKDIR}/build"
+
+src_configure() {
+	if [[ -f ${MY_BUILDDIR}/Makefile ]]; then
+		ewarn "Skipping configure due to existing build output"
+		return
+	fi
+	cros_use_gcc
+
+	# Unset CC and CXX to let gcc-libs select the right compiler.
+	unset CC CXX
+
+	local confgcc=(
+		--prefix=/usr
+		--bindir=/delete-me
+		--datadir=/delete-me
+		--includedir=/delete-me
+		--with-gxx-include-dir=/delete-me
+		--libdir="/usr/$(get_libdir)"
+		--with-slibdir="/usr/$(get_libdir)"
+		# Disable install of python helpers in the target.
+		--without-python-dir
+
+		--build=${CBUILD}
+		--host=${CBUILD}
+		--target=${CHOST}
+		--with-sysroot=/usr/${CTARGET}
+		--enable-__cxa_atexit
+		--disable-bootstrap
+		--enable-checking=release
+		--enable-linker-build-id
+		--disable-libstdcxx-pch
+		--enable-libgomp
+		$(use_enable libatomic)
+
+		# Disable libs we do not care about.
+		--disable-libitm
+		--disable-libmudflap
+		--disable-libquadmath
+		--disable-libssp
+		--disable-lto
+		--disable-multilib
+		--disable-openmp
+		--disable-libcilkrts
+		--with-system-zlib
+		--disable-libsanitizer
+	)
+
+	GCC_LANG="c,c++"
+	use go && GCC_LANG+=",go"
+	confgcc+=( --enable-languages=${GCC_LANG} )
+
+	if use vtable_verify; then
+		confgcc+=(
+			--enable-cxx-flags=-Wl,-L../libsupc++/.libs
+			--enable-vtable-verify
+		)
+	fi
+
+	# Handle target-specific options.
+	case ${CTARGET} in
+	arm*)	#264534
+		local arm_arch="${CTARGET%%-*}"
+		# Only do this if arm_arch is armv*
+		if [[ ${arm_arch} == armv* ]]; then
+			# Convert armv7{a,r,m} to armv7-{a,r,m}
+			[[ ${arm_arch} == armv7? ]] && arm_arch=${arm_arch/7/7-}
+			# Remove endian ('l' / 'eb')
+			[[ ${arm_arch} == *l ]] && arm_arch=${arm_arch%l}
+			[[ ${arm_arch} == *eb ]] && arm_arch=${arm_arch%eb}
+			confgcc+=(
+				--with-arch=${arm_arch}
+				--disable-esp
+			)
+			if use hardfp; then
+				confgcc+=( --with-float=hard )
+				case ${CTARGET} in
+					armv6*) confgcc+=( --with-fpu=vfp ) ;;
+					armv7a*) confgcc+=( --with-fpu=vfpv3 ) ;;
+					armv7m*) confgcc+=( --with-fpu=vfpv2 ) ;;
+				esac
+			fi
+			use thumb && confgcc+=( --with-mode=thumb )
+		fi
+		;;
+	i?86*)
+		# Hardened is enabled for x86, but disabled for ARM.
+		confgcc+=(
+			--enable-esp
+			--with-arch=atom
+			--with-tune=atom
+			# Remove this once crash2 supports larger symbols.
+			# http://code.google.com/p/chromium-os/issues/detail?id=23321
+			--enable-frame-pointer
+		)
+		;;
+	x86_64*-gnux32)
+		confgcc+=( --with-abi=x32 --with-multilib-list=mx32 )
+		;;
+	esac
+
+	# Finally add the user options (if any).
+	confgcc+=( ${EXTRA_ECONF} )
+
+	# Build in a separate build tree.
+	mkdir -p "${MY_BUILDDIR}" || die
+	cd "${MY_BUILDDIR}" || die
+
+	# This is necessary because the emerge-${BOARD} machinery sometimes
+	# adds machine-specific options to thsee flags that are not
+	# appropriate for configuring and building the compiler libraries.
+	export CFLAGS='-g -O2 -pipe'
+	export CXXFLAGS='-g -O2 -pipe'
+	export LDFLAGS="-Wl,-O2 -Wl,--as-needed"
+
+	# and now to do the actual configuration
+	addwrite /dev/zero
+	echo "Running this:"
+	echo "${S}"/configure "${confgcc[@]}"
+	"${S}"/configure "${confgcc[@]}" || die
+}
+
+src_compile() {
+	cd "${MY_BUILDDIR}"
+	GCC_CFLAGS="${CFLAGS}"
+	local target_flags=()
+	local target_go_flags=()
+
+	if use hardened; then
+		target_flags+=( -fstack-protector-strong -D_FORTIFY_SOURCE=2 )
+	fi
+
+	EXTRA_CFLAGS_FOR_TARGET="${target_flags[*]} ${CFLAGS_FOR_TARGET}"
+	EXTRA_CXXFLAGS_FOR_TARGET="${target_flags[*]} ${CXXFLAGS_FOR_TARGET}"
+
+	if use vtable_verify; then
+		EXTRA_CXXFLAGS_FOR_TARGET+=" -fvtable-verify=std"
+	fi
+
+	# libgo on arm must be compiled with -marm. Go's panic/recover functionality
+	# is broken in thumb mode.
+	if [[ ${CTARGET} == arm* ]]; then
+		target_go_flags+=( -marm )
+	fi
+	EXTRA_GOCFLAGS_FOR_TARGET="${target_go_flags[*]} ${GOCFLAGS_FOR_TARGET}"
+
+	# Do not link libgcc with gold. That is known to fail on internal linker
+	# errors. See crosbug.com/16719
+	local LD_NON_GOLD="$(get_binutils_path_ld ${CTARGET})/ld"
+
+	# TODO(toolchain): This should not be needed.
+	export CHOST="${CBUILD}"
+
+	emake CFLAGS="${GCC_CFLAGS}" \
+		LDFLAGS="-Wl,-O1" \
+		CFLAGS_FOR_TARGET="$(get_make_var CFLAGS_FOR_TARGET) ${EXTRA_CFLAGS_FOR_TARGET}" \
+		CXXFLAGS_FOR_TARGET="$(get_make_var CXXFLAGS_FOR_TARGET) ${EXTRA_CXXFLAGS_FOR_TARGET}" \
+		GOCFLAGS_FOR_TARGET="$(get_make_var GOCFLAGS_FOR_TARGET) ${EXTRA_GOCFLAGS_FOR_TARGET}" \
+		LD_FOR_TARGET="${LD_NON_GOLD}" \
+		all-target
+}
+
+src_install() {
+	cd "${MY_BUILDDIR}"
+	emake -C "${CTARGET}"/libstdc++-v3/src DESTDIR="${D}" install
+	emake -C "${CTARGET}"/libgcc DESTDIR="${D}" install-shared
+	if use libatomic; then
+		emake -C "${CTARGET}"/libatomic DESTDIR="${D}" install
+	fi
+	if use go; then
+		emake -C "${CTARGET}"/libgo DESTDIR="${D}" install
+	fi
+
+	# Delete everything we don't care about (headers/etc...).
+	rm -rf "${D}"/delete-me "${D}"/usr/$(get_libdir)/gcc/${CTARGET}/
+	find "${D}" -name '*.py' -delete
+
+	# Move the libraries to the proper location.  Many target libs do not
+	# make this a configure option but hardcode the toolexeclibdir when
+	# they're being cross-compiled.
+	dolib.so "${D}"/usr/${CTARGET}/$(get_libdir)/lib*.so*
+	rm -rf "${D}"/usr/${CTARGET}
+}
+
+# Grab a variable from the build system (taken from linux-info.eclass)
+get_make_var() {
+	local var=$1 makefile=${2:-${MY_BUILDDIR}/Makefile}
+	echo -e "e:\\n\\t@echo \$(${var})\\ninclude ${makefile}" | \
+		r=${makefile%/*} emake --no-print-directory -s -f - 2>/dev/null
+}
diff --git a/sys-libs/gcc-libs/gcc-libs-4.9.2-r50.ebuild b/sys-libs/gcc-libs/gcc-libs-4.9.2-r50.ebuild
deleted file mode 100644
index 442ae27..0000000
--- a/sys-libs/gcc-libs/gcc-libs-4.9.2-r50.ebuild
+++ /dev/null
@@ -1,254 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-4.4.3-r3.ebuild,v 1.1 2010/06/19 01:53:09 zorry Exp $
-
-# TODO(toolchain): This should not be building the compiler just to build
-# the target libs.  It should re-use the existing system cross compiler.
-
-EAPI=7
-
-# These are used to find the project sources. Since the gcc-libs sources are
-# within the gcc source tree, we leave these "gcc" rather than "gcc-libs".
-CROS_WORKON_COMMIT="ac6128e0a17a52f011797f33ac3e7d6273a9368d"
-CROS_WORKON_TREE="aff2e49c815be09f20e4346cc98144b604388cb7"
-CROS_WORKON_REPO="https://android.googlesource.com"
-CROS_WORKON_PROJECT="toolchain/gcc"
-CROS_WORKON_LOCALNAME=../aosp/toolchain/gcc
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit eutils cros-workon binutils-funcs
-
-DESCRIPTION="The GNU Compiler Collection.  This builds and installs the libgcc, libstdc++, and libgo libraries.  It is board-specific."
-
-LICENSE="GPL-3 LGPL-3 FDL-1.2"
-KEYWORDS="*"
-IUSE="go hardened hardfp libatomic mounted_gcc +thumb vtable_verify"
-REQUIRED_USE="go? ( libatomic )"
-
-: ${CTARGET:=${CHOST}}
-
-update_location_for_aosp() {
-	# For aosp gcc repository, the actual gcc directory is 1 more
-	# level down, eg. gcc/gcc-4.9, pick up the newest one in this
-	# case.
-	local gccsub=$(find "${S}" -maxdepth 1 -type d -name "gcc-*" | sort -r | head -1)
-	if [[ -d "${gccsub}" ]] && [[ -d "${gccsub}/gcc/config/arm/" ]]; then
-		S="${gccsub}"
-	fi
-	cd "${S}"
-}
-
-src_unpack() {
-	if use mounted_gcc; then
-		if [[ ! -d "$(get_gcc_dir)" ]]; then
-			die "gcc dir not mounted/present at: $(get_gcc_dir)"
-		fi
-	else
-		cros-workon_src_unpack
-		update_location_for_aosp
-	fi
-
-	# Hack around http://crbug.com/284838
-	local sb=${SANDBOX_ON}
-	export SANDBOX_ON="0"
-	touch "${S}"/gcc/config/arm/arm-{tables.opt,tune.md} || die
-	export SANDBOX_ON="${sb}"
-}
-
-src_configure() {
-	if use mounted_gcc && [[ -f $(get_gcc_build_dir)/Makefile ]]; then
-		ewarn "Skipping configure due to existing build output"
-		return
-	fi
-	cros_use_gcc
-
-	# Unset CC and CXX to let gcc-libs select the right compiler.
-	unset CC CXX
-
-	local confgcc=(
-		--prefix=/usr
-		--bindir=/delete-me
-		--datadir=/delete-me
-		--includedir=/delete-me
-		--with-gxx-include-dir=/delete-me
-		--libdir="/usr/$(get_libdir)"
-		--with-slibdir="/usr/$(get_libdir)"
-		# Disable install of python helpers in the target.
-		--without-python-dir
-
-		--build=${CBUILD}
-		--host=${CBUILD}
-		--target=${CHOST}
-		--with-sysroot=/usr/${CTARGET}
-		--enable-__cxa_atexit
-		--disable-bootstrap
-		--enable-checking=release
-		--enable-linker-build-id
-		--disable-libstdcxx-pch
-		--enable-libgomp
-		$(use_enable libatomic)
-
-		# Disable libs we do not care about.
-		--disable-libitm
-		--disable-libmudflap
-		--disable-libquadmath
-		--disable-libssp
-		--disable-lto
-		--disable-multilib
-		--disable-openmp
-		--disable-libcilkrts
-		--with-system-zlib
-		--disable-libsanitizer
-	)
-
-	GCC_LANG="c,c++"
-	use go && GCC_LANG+=",go"
-	confgcc+=( --enable-languages=${GCC_LANG} )
-
-	if use vtable_verify; then
-		confgcc+=(
-			--enable-cxx-flags=-Wl,-L../libsupc++/.libs
-			--enable-vtable-verify
-		)
-	fi
-
-	# Handle target-specific options.
-	case ${CTARGET} in
-	arm*)	#264534
-		local arm_arch="${CTARGET%%-*}"
-		# Only do this if arm_arch is armv*
-		if [[ ${arm_arch} == armv* ]]; then
-			# Convert armv7{a,r,m} to armv7-{a,r,m}
-			[[ ${arm_arch} == armv7? ]] && arm_arch=${arm_arch/7/7-}
-			# Remove endian ('l' / 'eb')
-			[[ ${arm_arch} == *l ]] && arm_arch=${arm_arch%l}
-			[[ ${arm_arch} == *eb ]] && arm_arch=${arm_arch%eb}
-			confgcc+=(
-				--with-arch=${arm_arch}
-				--disable-esp
-			)
-			use hardfp && confgcc+=( --with-float=hard )
-			use thumb && confgcc+=( --with-mode=thumb )
-		fi
-		;;
-	i?86*)
-		# Hardened is enabled for x86, but disabled for ARM.
-		confgcc+=(
-			--enable-esp
-			--with-arch=atom
-			--with-tune=atom
-			# Remove this once crash2 supports larger symbols.
-			# http://code.google.com/p/chromium-os/issues/detail?id=23321
-			--enable-frame-pointer
-		)
-		;;
-	x86_64*-gnux32)
-		confgcc+=( --with-abi=x32 --with-multilib-list=mx32 )
-		;;
-	esac
-
-	# Finally add the user options (if any).
-	confgcc+=( ${EXTRA_ECONF} )
-
-	# Build in a separate build tree.
-	mkdir -p "$(get_gcc_build_dir)" || die
-	cd "$(get_gcc_build_dir)" || die
-
-	# This is necessary because the emerge-${BOARD} machinery sometimes
-	# adds machine-specific options to thsee flags that are not
-	# appropriate for configuring and building the compiler libraries.
-	export CFLAGS='-g -O2 -pipe'
-	export CXXFLAGS='-g -O2 -pipe'
-	export LDFLAGS="-Wl,-O2 -Wl,--as-needed"
-
-	# and now to do the actual configuration
-	addwrite /dev/zero
-	echo "Running this:"
-	echo "$(get_gcc_dir)"/configure "${confgcc[@]}"
-	"$(get_gcc_dir)"/configure "${confgcc[@]}" || die
-}
-
-src_compile() {
-	cd "$(get_gcc_build_dir)"
-	GCC_CFLAGS="${CFLAGS}"
-	local target_flags=()
-	local target_go_flags=()
-
-	if use hardened; then
-		target_flags+=( -fstack-protector-strong -D_FORTIFY_SOURCE=2 )
-	fi
-
-	EXTRA_CFLAGS_FOR_TARGET="${target_flags[*]} ${CFLAGS_FOR_TARGET}"
-	EXTRA_CXXFLAGS_FOR_TARGET="${target_flags[*]} ${CXXFLAGS_FOR_TARGET}"
-
-	if use vtable_verify; then
-		EXTRA_CXXFLAGS_FOR_TARGET+=" -fvtable-verify=std"
-	fi
-
-	# libgo on arm must be compiled with -marm. Go's panic/recover functionality
-	# is broken in thumb mode.
-	if [[ ${CTARGET} == arm* ]]; then
-		target_go_flags+=( -marm )
-	fi
-	EXTRA_GOCFLAGS_FOR_TARGET="${target_go_flags[*]} ${GOCFLAGS_FOR_TARGET}"
-
-	# Do not link libgcc with gold. That is known to fail on internal linker
-	# errors. See crosbug.com/16719
-	local LD_NON_GOLD="$(get_binutils_path_ld ${CTARGET})/ld"
-
-	# TODO(toolchain): This should not be needed.
-	export CHOST="${CBUILD}"
-
-	emake CFLAGS="${GCC_CFLAGS}" \
-		LDFLAGS="-Wl,-O1" \
-		CFLAGS_FOR_TARGET="$(get_make_var CFLAGS_FOR_TARGET) ${EXTRA_CFLAGS_FOR_TARGET}" \
-		CXXFLAGS_FOR_TARGET="$(get_make_var CXXFLAGS_FOR_TARGET) ${EXTRA_CXXFLAGS_FOR_TARGET}" \
-		GOCFLAGS_FOR_TARGET="$(get_make_var GOCFLAGS_FOR_TARGET) ${EXTRA_GOCFLAGS_FOR_TARGET}" \
-		LD_FOR_TARGET="${LD_NON_GOLD}" \
-		all-target
-}
-
-src_install() {
-	cd "$(get_gcc_build_dir)"
-	emake -C "${CTARGET}"/libstdc++-v3/src DESTDIR="${D}" install
-	emake -C "${CTARGET}"/libgcc DESTDIR="${D}" install-shared
-	if use libatomic; then
-		emake -C "${CTARGET}"/libatomic DESTDIR="${D}" install
-	fi
-	if use go; then
-		emake -C "${CTARGET}"/libgo DESTDIR="${D}" install
-	fi
-
-	# Delete everything we don't care about (headers/etc...).
-	rm -rf "${D}"/delete-me "${D}"/usr/$(get_libdir)/gcc/${CTARGET}/
-	find "${D}" -name '*.py' -delete
-
-	# Move the libraries to the proper location.  Many target libs do not
-	# make this a configure option but hardcode the toolexeclibdir when
-	# they're being cross-compiled.
-	dolib.so "${D}"/usr/${CTARGET}/$(get_libdir)/lib*.so*
-	rm -rf "${D}"/usr/${CTARGET}
-}
-
-get_gcc_dir() {
-	if use mounted_gcc; then
-		echo "${GCC_SOURCE_PATH:=/usr/local/toolchain_root/gcc}"
-	else
-		echo "${S}"
-	fi
-}
-
-get_gcc_build_dir() {
-	if use mounted_gcc; then
-		echo "$(get_gcc_dir)-build-${CTARGET}"
-	else
-		echo "${WORKDIR}/build"
-	fi
-}
-
-# Grab a variable from the build system (taken from linux-info.eclass)
-get_make_var() {
-	local var=$1 makefile=${2:-$(get_gcc_build_dir)/Makefile}
-	echo -e "e:\\n\\t@echo \$(${var})\\ninclude ${makefile}" | \
-		r=${makefile%/*} emake --no-print-directory -s -f - 2>/dev/null
-}
diff --git a/sys-libs/gcc-libs/gcc-libs-9999.ebuild b/sys-libs/gcc-libs/gcc-libs-9999.ebuild
deleted file mode 100644
index 7f81d1d..0000000
--- a/sys-libs/gcc-libs/gcc-libs-9999.ebuild
+++ /dev/null
@@ -1,252 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-4.4.3-r3.ebuild,v 1.1 2010/06/19 01:53:09 zorry Exp $
-
-# TODO(toolchain): This should not be building the compiler just to build
-# the target libs.  It should re-use the existing system cross compiler.
-
-EAPI=7
-
-# These are used to find the project sources. Since the gcc-libs sources are
-# within the gcc source tree, we leave these "gcc" rather than "gcc-libs".
-CROS_WORKON_REPO="https://android.googlesource.com"
-CROS_WORKON_PROJECT="toolchain/gcc"
-CROS_WORKON_LOCALNAME=../aosp/toolchain/gcc
-CROS_WORKON_OUTOFTREE_BUILD=1
-
-inherit eutils cros-workon binutils-funcs
-
-DESCRIPTION="The GNU Compiler Collection.  This builds and installs the libgcc, libstdc++, and libgo libraries.  It is board-specific."
-
-LICENSE="GPL-3 LGPL-3 FDL-1.2"
-KEYWORDS="~*"
-IUSE="go hardened hardfp libatomic mounted_gcc +thumb vtable_verify"
-REQUIRED_USE="go? ( libatomic )"
-
-: ${CTARGET:=${CHOST}}
-
-update_location_for_aosp() {
-	# For aosp gcc repository, the actual gcc directory is 1 more
-	# level down, eg. gcc/gcc-4.9, pick up the newest one in this
-	# case.
-	local gccsub=$(find "${S}" -maxdepth 1 -type d -name "gcc-*" | sort -r | head -1)
-	if [[ -d "${gccsub}" ]] && [[ -d "${gccsub}/gcc/config/arm/" ]]; then
-		S="${gccsub}"
-	fi
-	cd "${S}"
-}
-
-src_unpack() {
-	if use mounted_gcc; then
-		if [[ ! -d "$(get_gcc_dir)" ]]; then
-			die "gcc dir not mounted/present at: $(get_gcc_dir)"
-		fi
-	else
-		cros-workon_src_unpack
-		update_location_for_aosp
-	fi
-
-	# Hack around http://crbug.com/284838
-	local sb=${SANDBOX_ON}
-	export SANDBOX_ON="0"
-	touch "${S}"/gcc/config/arm/arm-{tables.opt,tune.md} || die
-	export SANDBOX_ON="${sb}"
-}
-
-src_configure() {
-	if use mounted_gcc && [[ -f $(get_gcc_build_dir)/Makefile ]]; then
-		ewarn "Skipping configure due to existing build output"
-		return
-	fi
-	cros_use_gcc
-
-	# Unset CC and CXX to let gcc-libs select the right compiler.
-	unset CC CXX
-
-	local confgcc=(
-		--prefix=/usr
-		--bindir=/delete-me
-		--datadir=/delete-me
-		--includedir=/delete-me
-		--with-gxx-include-dir=/delete-me
-		--libdir="/usr/$(get_libdir)"
-		--with-slibdir="/usr/$(get_libdir)"
-		# Disable install of python helpers in the target.
-		--without-python-dir
-
-		--build=${CBUILD}
-		--host=${CBUILD}
-		--target=${CHOST}
-		--with-sysroot=/usr/${CTARGET}
-		--enable-__cxa_atexit
-		--disable-bootstrap
-		--enable-checking=release
-		--enable-linker-build-id
-		--disable-libstdcxx-pch
-		--enable-libgomp
-		$(use_enable libatomic)
-
-		# Disable libs we do not care about.
-		--disable-libitm
-		--disable-libmudflap
-		--disable-libquadmath
-		--disable-libssp
-		--disable-lto
-		--disable-multilib
-		--disable-openmp
-		--disable-libcilkrts
-		--with-system-zlib
-		--disable-libsanitizer
-	)
-
-	GCC_LANG="c,c++"
-	use go && GCC_LANG+=",go"
-	confgcc+=( --enable-languages=${GCC_LANG} )
-
-	if use vtable_verify; then
-		confgcc+=(
-			--enable-cxx-flags=-Wl,-L../libsupc++/.libs
-			--enable-vtable-verify
-		)
-	fi
-
-	# Handle target-specific options.
-	case ${CTARGET} in
-	arm*)	#264534
-		local arm_arch="${CTARGET%%-*}"
-		# Only do this if arm_arch is armv*
-		if [[ ${arm_arch} == armv* ]]; then
-			# Convert armv7{a,r,m} to armv7-{a,r,m}
-			[[ ${arm_arch} == armv7? ]] && arm_arch=${arm_arch/7/7-}
-			# Remove endian ('l' / 'eb')
-			[[ ${arm_arch} == *l ]] && arm_arch=${arm_arch%l}
-			[[ ${arm_arch} == *eb ]] && arm_arch=${arm_arch%eb}
-			confgcc+=(
-				--with-arch=${arm_arch}
-				--disable-esp
-			)
-			use hardfp && confgcc+=( --with-float=hard )
-			use thumb && confgcc+=( --with-mode=thumb )
-		fi
-		;;
-	i?86*)
-		# Hardened is enabled for x86, but disabled for ARM.
-		confgcc+=(
-			--enable-esp
-			--with-arch=atom
-			--with-tune=atom
-			# Remove this once crash2 supports larger symbols.
-			# http://code.google.com/p/chromium-os/issues/detail?id=23321
-			--enable-frame-pointer
-		)
-		;;
-	x86_64*-gnux32)
-		confgcc+=( --with-abi=x32 --with-multilib-list=mx32 )
-		;;
-	esac
-
-	# Finally add the user options (if any).
-	confgcc+=( ${EXTRA_ECONF} )
-
-	# Build in a separate build tree.
-	mkdir -p "$(get_gcc_build_dir)" || die
-	cd "$(get_gcc_build_dir)" || die
-
-	# This is necessary because the emerge-${BOARD} machinery sometimes
-	# adds machine-specific options to thsee flags that are not
-	# appropriate for configuring and building the compiler libraries.
-	export CFLAGS='-g -O2 -pipe'
-	export CXXFLAGS='-g -O2 -pipe'
-	export LDFLAGS="-Wl,-O2 -Wl,--as-needed"
-
-	# and now to do the actual configuration
-	addwrite /dev/zero
-	echo "Running this:"
-	echo "$(get_gcc_dir)"/configure "${confgcc[@]}"
-	"$(get_gcc_dir)"/configure "${confgcc[@]}" || die
-}
-
-src_compile() {
-	cd "$(get_gcc_build_dir)"
-	GCC_CFLAGS="${CFLAGS}"
-	local target_flags=()
-	local target_go_flags=()
-
-	if use hardened; then
-		target_flags+=( -fstack-protector-strong -D_FORTIFY_SOURCE=2 )
-	fi
-
-	EXTRA_CFLAGS_FOR_TARGET="${target_flags[*]} ${CFLAGS_FOR_TARGET}"
-	EXTRA_CXXFLAGS_FOR_TARGET="${target_flags[*]} ${CXXFLAGS_FOR_TARGET}"
-
-	if use vtable_verify; then
-		EXTRA_CXXFLAGS_FOR_TARGET+=" -fvtable-verify=std"
-	fi
-
-	# libgo on arm must be compiled with -marm. Go's panic/recover functionality
-	# is broken in thumb mode.
-	if [[ ${CTARGET} == arm* ]]; then
-		target_go_flags+=( -marm )
-	fi
-	EXTRA_GOCFLAGS_FOR_TARGET="${target_go_flags[*]} ${GOCFLAGS_FOR_TARGET}"
-
-	# Do not link libgcc with gold. That is known to fail on internal linker
-	# errors. See crosbug.com/16719
-	local LD_NON_GOLD="$(get_binutils_path_ld ${CTARGET})/ld"
-
-	# TODO(toolchain): This should not be needed.
-	export CHOST="${CBUILD}"
-
-	emake CFLAGS="${GCC_CFLAGS}" \
-		LDFLAGS="-Wl,-O1" \
-		CFLAGS_FOR_TARGET="$(get_make_var CFLAGS_FOR_TARGET) ${EXTRA_CFLAGS_FOR_TARGET}" \
-		CXXFLAGS_FOR_TARGET="$(get_make_var CXXFLAGS_FOR_TARGET) ${EXTRA_CXXFLAGS_FOR_TARGET}" \
-		GOCFLAGS_FOR_TARGET="$(get_make_var GOCFLAGS_FOR_TARGET) ${EXTRA_GOCFLAGS_FOR_TARGET}" \
-		LD_FOR_TARGET="${LD_NON_GOLD}" \
-		all-target
-}
-
-src_install() {
-	cd "$(get_gcc_build_dir)"
-	emake -C "${CTARGET}"/libstdc++-v3/src DESTDIR="${D}" install
-	emake -C "${CTARGET}"/libgcc DESTDIR="${D}" install-shared
-	if use libatomic; then
-		emake -C "${CTARGET}"/libatomic DESTDIR="${D}" install
-	fi
-	if use go; then
-		emake -C "${CTARGET}"/libgo DESTDIR="${D}" install
-	fi
-
-	# Delete everything we don't care about (headers/etc...).
-	rm -rf "${D}"/delete-me "${D}"/usr/$(get_libdir)/gcc/${CTARGET}/
-	find "${D}" -name '*.py' -delete
-
-	# Move the libraries to the proper location.  Many target libs do not
-	# make this a configure option but hardcode the toolexeclibdir when
-	# they're being cross-compiled.
-	dolib.so "${D}"/usr/${CTARGET}/$(get_libdir)/lib*.so*
-	rm -rf "${D}"/usr/${CTARGET}
-}
-
-get_gcc_dir() {
-	if use mounted_gcc; then
-		echo "${GCC_SOURCE_PATH:=/usr/local/toolchain_root/gcc}"
-	else
-		echo "${S}"
-	fi
-}
-
-get_gcc_build_dir() {
-	if use mounted_gcc; then
-		echo "$(get_gcc_dir)-build-${CTARGET}"
-	else
-		echo "${WORKDIR}/build"
-	fi
-}
-
-# Grab a variable from the build system (taken from linux-info.eclass)
-get_make_var() {
-	local var=$1 makefile=${2:-$(get_gcc_build_dir)/Makefile}
-	echo -e "e:\\n\\t@echo \$(${var})\\ninclude ${makefile}" | \
-		r=${makefile%/*} emake --no-print-directory -s -f - 2>/dev/null
-}
diff --git a/sys-libs/glibc/Manifest b/sys-libs/glibc/Manifest
index 1342c1cb..1abacff 100644
--- a/sys-libs/glibc/Manifest
+++ b/sys-libs/glibc/Manifest
@@ -2,3 +2,8 @@
 DIST gcc-multilib-bootstrap-20180511.tar.xz 2392908 BLAKE2B f3cf614399368acd8908f60d894c6344a2fa09383b30c1633a0682bc668367c8a2f8c6fec2d41b6e2178d709a2bd8db57e8b2ab56ba263c7d56f819c15acd061 SHA512 98c766e913693ab42ff790557acde2a36a8001e2648046a685b21964200df8d4d52d8452d499c0068c6648284d086ce062c2d36e2c6c2fd8aacd232d193f2853
 DIST glibc-2.27-patches-3.tar.bz2 166511 BLAKE2B 1dc54bef6e82112935c7411f7a5cd07c1edb24c3edaa1e0243b846b3832a40af1ba3a7b77aef04c54a173388156b464ea442fa8310a02e6f44e2ed5b78994286 SHA512 12496e9b0c60630dbec4c2febdd6d20df1f3d7a2c243cc55b595202b27f682b9208e16cd8c387687c0cc9e18b36c3caeef8d1b1148eb3ee8081431997270db5e
 DIST glibc-2.27.tar.xz 15395316 BLAKE2B ea206d304c8c9aa86d69db981a14bea008602cea06a6c151c4971a8df059949ffe5632b42a67ab0ffcd7c4d7ce1ec02ac48815dac4dade1c4dd41eaee8a6ed33 SHA512 7c5581154487d38d173ce1feb944e60207139cca148bccf066eaae322c0c2d219423bdcfa15c7f9be1b5e45dfc43c641cc5d80d3c3c65837d08a83cdb4e2a147
+DIST backport-rv32.txz 26416 BLAKE2B 7a6b593859f88a3c040f06324dace4cc6137d14d4580fad9ea285829666d761c3dd01c190746e86846c219423124c77a55bc57b6e56efe6401a9c99d7fa445cd SHA512 d08dc02c4f0a3c5a15c57fbb5190588121c0e0728e6ab2119483407a98625efe58b3c83b44d750b0146171e63dcf8a6dbb6d1a057d042f794eed9adbd1f0293e
+DIST gcc-multilib-bootstrap-20201208.tar.xz 5528452 BLAKE2B 16699a6e4df5b2f28a21776ae9e3728b26a9ea251f5580aa5349545ad7c9f6145b9cb6a12ca8f5f96b9cb2a3c70b7e66ca702e4c6f083ac00408e0a20a69e613 SHA512 a243f505e17d0a7e144e8713c077582412f61d6cf7f79baa846de4fb77f5e0f27e11c9a785e14624e04ac52287b32164e7995323aa11caef59113ac438254347
+DIST glibc-2.32-patches-8.tar.xz 65532 BLAKE2B 00c572cff396e52313d0324f7bc28192a65f06b22fc5a04aa631b76b3016842365006399715531ee693f3519720edcebef7884247f2f8c19e3518c1ddafab7cc SHA512 5240bc3a6df46d12c03ea4ce7b1a0df85301256ae3bd003fd04c61dadaaec34998873bf20544d891f6eedf896302bb916010aebc1d8d646a3cce09a93b533d0b
+DIST glibc-2.32.tar.xz 16744512 BLAKE2B a56b4afbb35315c5cd6dca0f62e44455dceae3e6e88a8453621f9a5394a60ddf10ca9309b2db0911830c7fd77e3faa5d94694eb94d5b2c05fc5285cef52255da SHA512 8460c155b7003e04f18dabece4ed9ad77445fa2288a7dc08e80a8fc4c418828af29e0649951bd71a54ea2ad2d4da7570aafd9bdfe4a37e9951b772b442afe50b
+DIST locale-gen-2.10.tar.gz 7747 BLAKE2B 49f569c5ae5260fca128503bc6f22d6f6f1cda817920c41fdadadf1527bbb4f3eb161f79fa729830666a4673e9092f99f4685ec8fcac8ddea0b8242bca9c1f4f SHA512 e350e60d458d67638e3090711fca05af6fafac06c51b97648244549f8a0621dab7543f09dc7ad4c62392f13bdae8e5875dc6d0b6c3d83efc29d116bc2eef92db
diff --git a/sys-libs/glibc/files/glibc-locale-gen-omit-spam-when-in-quiet-mode.patch b/sys-libs/glibc/files/glibc-locale-gen-omit-spam-when-in-quiet-mode.patch
new file mode 100644
index 0000000..27e92ddc
--- /dev/null
+++ b/sys-libs/glibc/files/glibc-locale-gen-omit-spam-when-in-quiet-mode.patch
@@ -0,0 +1,26 @@
+From 92c3c0492056f25062780302317429d0792e5ed8 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@chromium.org>
+Date: Fri, 12 Mar 2021 11:28:27 -0500
+Subject: omit spam when in quiet mode
+
+Signed-off-by: Mike Frysinger <vapier@gentoo.org>
+---
+ locale-gen | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/extra/locale/locale-gen b/extra/locale/locale-gen
+index f0dc40e..b41258f 100755
+--- a/extra/locale/locale-gen
++++ b/extra/locale/locale-gen
+@@ -416,7 +416,7 @@ if ${LOCALE_ARCHIVE} && [[ -z ${JUST_LIST} ]] ; then
+ 			)
+ 		done
+ 		eend $ret
+-	else
++	elif [[ ${QUIET} -eq 0 ]] ; then
+ 		einfo "No locales are to be added to the archive."
+ 	fi
+ fi
+-- 
+cgit v1.2.3
+
diff --git a/sys-libs/glibc/files/glibc-locale-gen.patch b/sys-libs/glibc/files/glibc-locale-gen.patch
deleted file mode 100644
index 9ce0043..0000000
--- a/sys-libs/glibc/files/glibc-locale-gen.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-Do not regenerate locale archives.
-See crbug.com/899377
---- a/extra/locale/locale-gen
-+++ b/extra/locale/locale-gen
-@@ -339,33 +339,6 @@
- [[ ${QUIET} -eq 0 ]] && [[ -z ${JUST_LIST} ]] && \
- einfo "Generation complete"
- 
--if ${LOCALE_ARCHIVE} ; then
--	ebegin "Adding locales to archive"
--	# The pattern ends with / on purpose: we don't care about files (like
--	# locale-archive) in the locale subdir, and we definitely don't want to
--	# delete them!
--	for LOC in "${LOCALEDIR}"/*/; do 
--		LOC=${LOC%/} # Strip trailing /, since localedef doesn't like it
--		x=$(
--			"${DESTDIR}"usr/bin/localedef \
--				--add-to-archive "${LOC}" \
--				--replace \
--				--prefix "${DESTDIR%${EPREFIX}/}/"
--			ret=$?
--			if [[ -n ${output} ]] ; then
--				echo "${x}"
--			elif [[ ${ret} -ne 0 ]] ; then
--				eerror "${disp}: ${x}"
--			fi
--			if [[ $ret -eq 0 ]]; then
--				rm -r "${LOC}"
--			fi
--			exit ${ret}
--		)
--	done
--	eend $ret
--fi
--
- # Remove locales that existed but were not requested
- if [[ -n ${UPDATE} ]] ; then
- 	# Ignore these pseudo locales
diff --git a/sys-libs/glibc/files/host.conf-1 b/sys-libs/glibc/files/host.conf-1
new file mode 100644
index 0000000..4c58e52
--- /dev/null
+++ b/sys-libs/glibc/files/host.conf-1
@@ -0,0 +1,24 @@
+# /etc/host.conf:
+# $Header: /var/cvsroot/gentoo/src/patchsets/glibc/extra/etc/host.conf,v 1.1 2006/09/29 23:52:23 vapier Exp $
+
+# The  file /etc/host.conf contains configuration information specific to
+# the resolver library.  It should contain one configuration keyword  per
+# line,  followed by appropriate configuration information.  The keywords
+# recognized are order, trim, mdns, multi, nospoof, spoof, and reorder.
+
+
+
+# This keyword specifies how host lookups are to be performed. It
+# should be followed by one or more lookup methods, separated by
+# commas.  Valid methods are bind, hosts, and nis.
+#
+order hosts, bind
+
+
+# Valid  values are on and off.  If set to on, the resolv+ library
+# will return all valid addresses for a host that appears  in  the
+# /etc/hosts  file,  instead  of  only  the first.  This is off by
+# default, as it may cause a substantial performance loss at sites
+# with large hosts files.
+#
+multi off
diff --git a/sys-libs/glibc/files/local/glibc-2.19-arm-memcpy.patch b/sys-libs/glibc/files/local/glibc-2.19-arm-memcpy.patch
deleted file mode 100644
index da68cf9..0000000
--- a/sys-libs/glibc/files/local/glibc-2.19-arm-memcpy.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-libc: Speed up large memcpy() on Cortex-A7/A15
-
-Details please see crbug://331427
-
-Experimentally it's been found that the "unaligned" memcpy() is
-actually faster for sufficiently large memory copies.  It appears that
-the changeover point is a little different for different processors,
-though.  For A15 there's a lot more run-to-run variance for
-medium-sized memcpy() but the changeover appears to be at ~16K.  For
-A7 (and maybe A9) the changeover seems to be a little further out.
-We think the variance in A15 memcpy() is is due to different physical
-addresses for the chunks of memory given to us by the kernel.  It is
-certain that the "aligned" code works faster at 4K and less and that
-the "unaligned" code works faster with very large chunks of memory.
-Since we care most about A15 performance and the A7 performance is not
-that much worse (and actually better for SDRAM transfers), we'll pick
-the number that's best for the A15.
-Tests on snow (A15 only):
-* Large (12M) aligned copies go from ~2350 MiB/s to ~2900 MiB/s.
-* Medium (96K) aligned copies go from ~5900 MiB/s to ~6300 MiB/s.
-* Medium (16K) aligned copies seem to be better but there's a lot of
-  noise (old=8151.8, 8736.6, 8168.7; new=9364.9, 9829.5, 9639.0)
-* Small (4K, 8K) algined copies are unchanged.
-For A7-only on pit:
-* Large (12M) aligned copies go from 440 MiB/s to 930 MiB/s.
-* Medium (96K) aligned copies regress from ~2650 MiB/s to ~2400 MiB/s.
-* Medium (16K) aligned copies regress from ~3000 MiB/s to ~2800 MiB/s.
-* Small (4K, 8K) aligned copies are unchanged.
-See punybench changes at
-<https://chromium-review.googlesource.com/#/c/182168/3> for how this
-was tested.  For A15 changes I ran 3 times and averaged (there wasn't
-lots of variance except for 16K).  For A7 changes I ran 2 times.
-
---- a/glibc-2.19/ports/sysdeps/arm/armv7/multiarch/memcpy_impl.S
-+++ b/glibc-2.19/ports/sysdeps/arm/armv7/multiarch/memcpy_impl.S
-@@ -374,6 +374,10 @@ ENTRY(memcpy)
- 	cmp	tmp1, tmp2
- 	bne	.Lcpy_notaligned
- 
-+	/* Use the non-aligned code for >=16K; faster on A7/A15 (A9 too?) */
-+	cmp	count, #0x4000
-+	bge	.Lcpy_notaligned
-+
- #ifdef USE_VFP
- 	/* Magic dust alert!  Force VFP on Cortex-A9.  Experiments show
- 	   that the FP pipeline is much better at streaming loads and
diff --git a/sys-libs/glibc/files/local/glibc-2.23-dlopen.patch b/sys-libs/glibc/files/local/glibc-2.23-dlopen.patch
deleted file mode 100644
index c1831c6..0000000
--- a/sys-libs/glibc/files/local/glibc-2.23-dlopen.patch
+++ /dev/null
@@ -1,244 +0,0 @@
-This patch is not necessary for the bug fix, just makes concurrency
-code review easier (removes a data race and overflow from a broken
-code path).
-
-dlopen can oom crash anyway in _dl_resize_dtv and it's probably
-better to crash than leave half setup modules around.
-
-2016-11-30  Szabolcs Nagy  <szabolcs.nagy@arm.com>
-
-	* elf/dl-tls.c (_dl_add_to_slotinfo): OOM crash.
-diff --git a/elf/dl-tls.c b/elf/dl-tls.c
-index 60f4c1d..2feee67 100644
---- a/elf/dl-tls.c
-+++ b/elf/dl-tls.c
-@@ -959,18 +959,10 @@  _dl_add_to_slotinfo (struct link_map *l)
- 		+ TLS_SLOTINFO_SURPLUS * sizeof (struct dtv_slotinfo));
-       if (listp == NULL)
- 	{
--	  /* We ran out of memory.  We will simply fail this
--	     call but don't undo anything we did so far.  The
--	     application will crash or be terminated anyway very
--	     soon.  */
--
--	  /* We have to do this since some entries in the dtv
--	     slotinfo array might already point to this
--	     generation.  */
--	  ++GL(dl_tls_generation);
--
--	  _dl_signal_error (ENOMEM, "dlopen", NULL, N_("\
--cannot create TLS data structures"));
-+	  /* We ran out of memory in dlopen while updating tls structures.
-+	     TODO: side-effects should be rolled back and the failure should
-+	     be reported to the caller, but that's hard.  */
-+	  oom ();
- 	}
- 
-       listp->len = TLS_SLOTINFO_SURPLUS;
-
-
-This fixes a subset of the issues described in
-https://sourceware.org/ml/libc-alpha/2016-11/msg01026.html
-without adding locks to pthread_create.
-
-Only races between dlopen and pthread_create were considered,
-and the asserts got removed that tried to check for concurrency
-issues.
-
-The patch is incomplete because dlclose, tls access and
-dl_iterate_phdr related code paths are not modified.
-
-dlclose should be updated in a similar fashion to dlopen
-to make the patch complete alternatively pthread_create
-may take the GL(dl_load_write_lock) to sync with dlclose
-or the GL(dl_load_lock) to sync with dlopen and dlclose
-(that would simplify the concurrency design, but increase
-lock contention on the locks).
-
-2016-11-30  Szabolcs Nagy  <szabolcs.nagy@arm.com>
-
-	[BZ #19329]
-	* elf/dl-open.c (dl_open_worker): Write GL(dl_tls_generation)
-	atomically.
-	* elf/dl-tls.c (_dl_allocate_tls_init): Read GL(dl_tls_generation),
-	GL(dl_tls_max_dtv_idx), slotinfo entries and listp->next atomically.
-	Remove assertions that cannot be guaranteed.
-	(_dl_add_to_slotinfo): Write the slotinfo entries and listp->next
-	atomically.
-diff --git a/elf/dl-open.c b/elf/dl-open.c
-index f5ca261..e6f6e0b 100644
---- a/elf/dl-open.c
-+++ b/elf/dl-open.c
-@@ -524,9 +524,17 @@  dl_open_worker (void *a)
-     }
- 
-   /* Bump the generation number if necessary.  */
--  if (any_tls && __builtin_expect (++GL(dl_tls_generation) == 0, 0))
--    _dl_fatal_printf (N_("\
-+  if (any_tls)
-+    {
-+      /* This cannot be in a data-race so non-atomic load is valid too.  */
-+      size_t newgen = atomic_load_relaxed (&GL(dl_tls_generation)) + 1;
-+      /* Synchronize with _dl_allocate_tls_init (see notes there) and
-+	 avoid storing an overflowed counter.  */
-+      if (__builtin_expect (newgen == 0, 0))
-+	_dl_fatal_printf (N_("\
- TLS generation counter wrapped!  Please report this."));
-+      atomic_store_release (&GL(dl_tls_generation), newgen);
-+    }
- 
-   /* We need a second pass for static tls data, because _dl_update_slotinfo
-      must not be run while calls to _dl_add_to_slotinfo are still pending.  */
-diff --git a/elf/dl-tls.c b/elf/dl-tls.c
-index 2feee67..7dbee0d 100644
---- a/elf/dl-tls.c
-+++ b/elf/dl-tls.c
-@@ -470,6 +470,36 @@  _dl_resize_dtv (dtv_t *dtv)
- }
- 
- 
-+/*
-+CONCURRENCY NOTES
-+
-+dlopen (and dlclose) holds the GL(dl_load_lock) while writing shared state,
-+which may be concurrently read by pthread_create and tls access without taking
-+the lock, so atomic access should be used.  The shared state:
-+
-+  GL(dl_tls_max_dtv_idx) - max modid assigned, (modid can be reused).
-+  GL(dl_tls_generation) - generation count, incremented by dlopen and dlclose.
-+  GL(dl_tls_dtv_slotinfo_list) - list of entries, contains generation count
-+                                 and link_map for each module with a modid.
-+
-+A module gets a modid assigned if it has tls, a modid identifies a slotinfo
-+entry and it is the index of the corresponding dtv slot.  The generation count
-+is assigned to slotinfo entries of a newly loaded or unloaded module and its
-+newly loaded or unloaded dependencies.
-+
-+TODO: dlclose may free memory read by a concurrent pthread_create or tls
-+access.  This is broken now, so it is assumed that dlclose does not free
-+link_map structures while pthread_create or __tls_get_addr is reading them.
-+
-+pthread_create calls _dl_allocate_tls_init (before creating the new thread),
-+which should guarantee that the dtv is in a consistent state at the end:
-+
-+All slotinfo updates with generation <= dtv[0].counter are reflected in the
-+dtv and arbitrary later module unloads may also be reflected as unallocated
-+entries. (Note: a modid reuse implies a module unload and accessing tls in
-+an unloaded module is undefined.)
-+*/
-+
- void *
- internal_function
- _dl_allocate_tls_init (void *result)
-@@ -482,12 +512,24 @@  _dl_allocate_tls_init (void *result)
-   struct dtv_slotinfo_list *listp;
-   size_t total = 0;
-   size_t maxgen = 0;
-+  /* Synchronizes with the increments in dl_{open,close}_worker.
-+     Slotinfo updates of this generation are sequenced before the
-+     write we read from here.  */
-+  size_t gen_count = atomic_load_acquire (&GL(dl_tls_generation));
-+  /* Either reads from the last write that is sequenced before the
-+     generation counter increment we synchronized with or a write
-+     made by a later dlopen/dlclose.  dlclose may decrement this,
-+     but only if related modules are unloaded.  So it is an upper
-+     bound on non-unloaded modids up to gen_count generation.  */
-+  size_t dtv_slots = atomic_load_relaxed (&GL(dl_tls_max_dtv_idx));
- 
-   /* Check if the current dtv is big enough.   */
--  if (dtv[-1].counter < GL(dl_tls_max_dtv_idx))
-+  if (dtv[-1].counter < dtv_slots)
-     {
-       /* Resize the dtv.  */
-       dtv = _dl_resize_dtv (dtv);
-+      /* _dl_resize_dtv rereads GL(dl_tls_max_dtv_idx) which may decrease.  */
-+      dtv_slots = dtv[-1].counter;
- 
-       /* Install this new dtv in the thread data structures.  */
-       INSTALL_DTV (result, &dtv[-1]);
-@@ -504,22 +546,33 @@  _dl_allocate_tls_init (void *result)
-       for (cnt = total == 0 ? 1 : 0; cnt < listp->len; ++cnt)
- 	{
- 	  struct link_map *map;
-+	  size_t gen;
- 	  void *dest;
- 
- 	  /* Check for the total number of used slots.  */
--	  if (total + cnt > GL(dl_tls_max_dtv_idx))
-+	  if (total + cnt > dtv_slots)
- 	    break;
- 
--	  map = listp->slotinfo[cnt].map;
-+	  /* Synchronize with dl_add_to_slotinfo and remove_slotinfo.  */
-+	  map = atomic_load_acquire (&listp->slotinfo[cnt].map);
- 	  if (map == NULL)
- 	    /* Unused entry.  */
- 	    continue;
- 
-+	  /* Consistent generation count with the map read above.
-+	     Inconsistent gen may be read if the entry is being reused,
-+	     in which case it is larger than gen_count and we skip it.  */
-+	  gen = atomic_load_relaxed (&listp->slotinfo[cnt].gen);
-+	  if (gen > gen_count)
-+	    /* New entry.  */
-+	    continue;
-+
- 	  /* Keep track of the maximum generation number.  This might
- 	     not be the generation counter.  */
--	  assert (listp->slotinfo[cnt].gen <= GL(dl_tls_generation));
--	  maxgen = MAX (maxgen, listp->slotinfo[cnt].gen);
-+	  maxgen = MAX (maxgen, gen);
- 
-+	  /* TODO: concurrent dlclose may free map which would break
-+	     the rest of the code below.  */
- 	  dtv[map->l_tls_modid].pointer.val = TLS_DTV_UNALLOCATED;
- 	  dtv[map->l_tls_modid].pointer.to_free = NULL;
- 
-@@ -549,11 +602,15 @@  _dl_allocate_tls_init (void *result)
- 	}
- 
-       total += cnt;
--      if (total >= GL(dl_tls_max_dtv_idx))
-+      if (total > dtv_slots)
- 	break;
- 
--      listp = listp->next;
--      assert (listp != NULL);
-+      /* Synchronize with dl_add_to_slotinfo.  */
-+      listp = atomic_load_acquire (&listp->next);
-+      /* dtv_slots is an upper bound on the number of entries we care
-+	 about, the list may end sooner.  */
-+      if (listp == NULL)
-+	break;
-     }
- 
-   /* The DTV version is up-to-date now.  */
-@@ -954,7 +1011,7 @@  _dl_add_to_slotinfo (struct link_map *l)
- 	 the first slot.  */
-       assert (idx == 0);
- 
--      listp = prevp->next = (struct dtv_slotinfo_list *)
-+      listp = (struct dtv_slotinfo_list *)
- 	malloc (sizeof (struct dtv_slotinfo_list)
- 		+ TLS_SLOTINFO_SURPLUS * sizeof (struct dtv_slotinfo));
-       if (listp == NULL)
-@@ -969,9 +1026,17 @@  _dl_add_to_slotinfo (struct link_map *l)
-       listp->next = NULL;
-       memset (listp->slotinfo, '\0',
- 	      TLS_SLOTINFO_SURPLUS * sizeof (struct dtv_slotinfo));
-+      /* Add the new list item and synchronize with _dl_allocate_tls_init.  */
-+      atomic_store_release (&prevp->next, listp);
-     }
- 
-   /* Add the information into the slotinfo data structure.  */
--  listp->slotinfo[idx].map = l;
--  listp->slotinfo[idx].gen = GL(dl_tls_generation) + 1;
-+
-+  /* This cannot be in a data-race so non-atomic load would be valid too.  */
-+  size_t newgen = atomic_load_relaxed (&GL(dl_tls_generation)) + 1;
-+  /* TODO: Concurrent readers may see an overflowed gen, which is bad,
-+     but overflow is guaranteed to crash the dlopen that is executing.  */
-+  atomic_store_relaxed (&listp->slotinfo[idx].gen, newgen);
-+  /* Synchronize with _dl_allocate_tls_init (see notes there).  */
-+  atomic_store_release (&listp->slotinfo[idx].map, l);
- }
diff --git a/sys-libs/glibc/files/local/glibc-2.23-fortify-warning.patch b/sys-libs/glibc/files/local/glibc-2.23-fortify-warning.patch
deleted file mode 100644
index af760fc..0000000
--- a/sys-libs/glibc/files/local/glibc-2.23-fortify-warning.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-This reverts the upstream patch.
-
-Warn if user requests __FORTIFY_SOURCE but it is disabled
-author	Roland Mc Grath <roland@hack.frob.com>	
-Tue, 8 May 2012 17:44:57 +0000 (19:44 +0200)
-committer	Andreas Jaeger <jaegerandi@gmail.com>	
-Tue, 8 May 2012 17:44:57 +0000 (19:44 +0200)
-commit	05c2c9618f583ea4acd69b3fe5ae2a2922dd2ddc
-tree	cf5cd345bf757fd5296ff7e0b8dcd7f142fc3d37
-parent	4b30f61a1ea78de9b0e84a54fc6ee96ea70e6ed5
-
-The reason to revert it is that some packages that use
-autoconf to detect system headers, the warning will give the
-wrong result.
-
---- include/features.h	2016-06-01 16:26:04.534295058 -0700
-+++ include/features.h	2016-06-01 16:27:48.485859977 -0700
-@@ -326,18 +326,14 @@
- # define __USE_REENTRANT	1
- #endif
- 
--#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0
--# if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
--#  warning _FORTIFY_SOURCE requires compiling with optimization (-O)
--# elif !__GNUC_PREREQ (4, 1)
--#  warning _FORTIFY_SOURCE requires GCC 4.1 or later
--# elif _FORTIFY_SOURCE > 1
-+#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
-+    && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
-+# if _FORTIFY_SOURCE > 1
- #  define __USE_FORTIFY_LEVEL 2
- # else
- #  define __USE_FORTIFY_LEVEL 1
- # endif
--#endif
--#ifndef __USE_FORTIFY_LEVEL
-+#else
- # define __USE_FORTIFY_LEVEL 0
- #endif
- 
diff --git a/sys-libs/glibc/files/local/glibc-2.23-set-ld.patch b/sys-libs/glibc/files/local/glibc-2.23-set-ld.patch
deleted file mode 100644
index cdb0d62..0000000
--- a/sys-libs/glibc/files/local/glibc-2.23-set-ld.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-At configure time, it sets LD=`$CC -print-prog-name=ld`. In our case,
-it sets LD to gold linker, which causes the configure fail. This patch
-remove the settings and glibc builds.
-
-The configuration is suspicious though.
-
- * Configuring glibc for nptl
- *             ABI:   default
- *          CBUILD:   x86_64-pc-linux-gnu
- *           CHOST:   x86_64-pc-linux-gnu
- *         CTARGET:   armv7a-cros-linux-gnueabi
- *      CBUILD_OPT:
- *     CTARGET_OPT:
- *              CC:   armv7a-cros-linux-gnueabi-gcc
- *              LD:   x86_64-pc-linux-gnu-ld.bfd
- *         ASFLAGS:
- *          CFLAGS:   -pipe -ggdb -O2 -fno-strict-aliasing
- *        CPPFLAGS:
- *        CXXFLAGS:   -pipe -O2 -fno-strict-aliasing
- *         LDFLAGS:   -Wl,-O2 -Wl,--as-needed -Wl,-O2 -Wl,--as-needed -fuse-ld=bfd
- *       Manual CC:   armv7a-cros-linux-gnueabi-gcc  -Wl,-O2 -Wl,--as-needed -Wl,-O2 -Wl,--as-needed -fuse-ld=bfd
-
-The LD probably should be armv7a-cros-linux-gnueabi-ld.bfd
---- glibc-2.23/configure	2016-05-12 15:35:53.760853518 -0700
-+++ glibc-2.23/configure	2016-05-12 15:36:00.568831110 -0700
-@@ -4323,7 +4323,7 @@
-     CC="$CC -B$path_binutils"
- fi
- AS=`$CC -print-prog-name=as`
--LD=`$CC -print-prog-name=ld`
-+LD=`$CC -print-prog-name=ld.bfd`
- AR=`$CC -print-prog-name=ar`
- 
- OBJDUMP=`$CC -print-prog-name=objdump`
diff --git a/sys-libs/glibc/files/local/glibc-2.23-sht_relr.patch b/sys-libs/glibc/files/local/glibc-2.23-sht_relr.patch
deleted file mode 100644
index 78a695e..0000000
--- a/sys-libs/glibc/files/local/glibc-2.23-sht_relr.patch
+++ /dev/null
@@ -1,313 +0,0 @@
-This patch adds experimental support for SHT_RELR sections, proposed
-here: https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
-
-SHT_RELR sections are supported for arm, aarch64, and x86_64 targets.
-To enable them, pass '--experimental-use-relr' flag to gold.
-
-Definitions for the new ELF section type and dynamic array tags, as well
-as the encoding used in the new section are all under discussion and are
-subject to change. We plan to send the patch upstream after the gABI has
-been updated to include the new definitions.
-
---- elf/do-rel.h
-+++ elf/do-rel.h
-@@ -26,6 +26,12 @@
- # define elf_machine_rel_relative	elf_machine_rela_relative
- #endif
- 
-+#ifdef DO_RELR
-+# define elf_dynamic_do_Rel		elf_dynamic_do_Relr
-+# define Rel				Relr
-+# define elf_machine_rel_relative	elf_machine_relr_relative
-+#endif
-+
- #ifndef DO_ELF_MACHINE_REL_RELATIVE
- # define DO_ELF_MACHINE_REL_RELATIVE(map, l_addr, relative) \
-   elf_machine_rel_relative (l_addr, relative,				      \
-@@ -46,12 +52,12 @@ elf_dynamic_do_Rel (struct link_map *map,
-   const ElfW(Rel) *r = (const void *) reladdr;
-   const ElfW(Rel) *end = (const void *) (reladdr + relsize);
-   ElfW(Addr) l_addr = map->l_addr;
--# if defined ELF_MACHINE_IRELATIVE && !defined RTLD_BOOTSTRAP
-+# if defined ELF_MACHINE_IRELATIVE && !defined RTLD_BOOTSTRAP && !defined DO_RELR
-   const ElfW(Rel) *r2 = NULL;
-   const ElfW(Rel) *end2 = NULL;
- # endif
- 
--#if (!defined DO_RELA || !defined ELF_MACHINE_PLT_REL) && !defined RTLD_BOOTSTRAP
-+#if (!defined DO_RELA || !defined ELF_MACHINE_PLT_REL) && !defined RTLD_BOOTSTRAP && !defined DO_RELR
-   /* We never bind lazily during ld.so bootstrap.  Unfortunately gcc is
-      not clever enough to see through all the function calls to realize
-      that.  */
-@@ -80,8 +86,10 @@ elf_dynamic_do_Rel (struct link_map *map,
-   else
- #endif
-     {
-+# if !defined DO_RELR
-       const ElfW(Sym) *const symtab =
- 	(const void *) D_PTR (map, l_info[DT_SYMTAB]);
-+# endif
-       const ElfW(Rel) *relative = r;
-       r += nrelative;
- 
-@@ -108,9 +116,36 @@ elf_dynamic_do_Rel (struct link_map *map,
- 	if (l_addr != 0 || ! map->l_info[VALIDX(DT_GNU_PRELINKED)])
- # endif
- #endif
-+
-+#ifdef DO_RELR
-+	  {
-+	    ElfW(Addr) base = 0;
-+	    for (; relative < end; ++relative)
-+	      {
-+		ElfW(Relr) entry = *relative;
-+		if ((entry&1) == 0)
-+		  {
-+		    elf_machine_relr_relative (l_addr, (void *) (l_addr + entry));
-+		    base = entry + sizeof(ElfW(Addr));
-+		    continue;
-+		  }
-+		ElfW(Addr) offset = base;
-+		while (entry != 0)
-+		  {
-+		    entry >>= 1;
-+		    if ((entry&1) != 0)
-+		      elf_machine_relr_relative (l_addr, (void *) (l_addr + offset));
-+		    offset += sizeof(ElfW(Addr));
-+		  }
-+		base += (8*sizeof(ElfW(Addr)) - 1) * sizeof(ElfW(Addr));
-+	      }
-+	  }
-+#else
- 	  for (; relative < r; ++relative)
- 	    DO_ELF_MACHINE_REL_RELATIVE (map, l_addr, relative);
-+#endif
- 
-+#if !defined DO_RELR
- #ifdef RTLD_BOOTSTRAP
-       /* The dynamic linker always uses versioning.  */
-       assert (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL);
-@@ -180,6 +215,7 @@ elf_dynamic_do_Rel (struct link_map *map,
- # endif
- 	}
- #endif
-+#endif
-     }
- }
- 
-@@ -189,3 +225,4 @@ elf_dynamic_do_Rel (struct link_map *map,
- #undef elf_machine_rel_relative
- #undef DO_ELF_MACHINE_REL_RELATIVE
- #undef DO_RELA
-+#undef DO_RELR
---- elf/dynamic-link.h
-+++ elf/dynamic-link.h
-@@ -76,6 +76,11 @@ auto inline void __attribute__((always_inline))
- elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
- 			   void *const reloc_addr);
- # endif
-+# if ! ELF_MACHINE_NO_RELR
-+auto inline void __attribute__((always_inline))
-+elf_machine_relr_relative (ElfW(Addr) l_addr,
-+			    void *const reloc_addr);
-+# endif
- # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
- auto inline void __attribute__((always_inline))
- elf_machine_lazy_rel (struct link_map *map,
-@@ -190,6 +195,15 @@ elf_machine_lazy_rel (struct link_map *map,
- #  define ELF_DYNAMIC_DO_RELA(map, lazy, skip_ifunc) /* Nothing to do.  */
- # endif
- 
-+# if ! ELF_MACHINE_NO_RELR
-+#  define DO_RELR
-+#  include "do-rel.h"
-+#  define ELF_DYNAMIC_DO_RELR(map, lazy, skip_ifunc) \
-+  _ELF_DYNAMIC_DO_RELOC (RELR, Relr, map, lazy, skip_ifunc, 1)
-+# else
-+#  define ELF_DYNAMIC_DO_RELR(map, lazy, skip_ifunc) /* Nothing to do.  */
-+# endif
-+
- /* This can't just be an inline function because GCC is too dumb
-    to inline functions containing inlines themselves.  */
- # define ELF_DYNAMIC_RELOCATE(map, lazy, consider_profile, skip_ifunc) \
-@@ -198,6 +212,7 @@ elf_machine_lazy_rel (struct link_map *map,
- 					      (consider_profile));	      \
-     ELF_DYNAMIC_DO_REL ((map), edr_lazy, skip_ifunc);			      \
-     ELF_DYNAMIC_DO_RELA ((map), edr_lazy, skip_ifunc);			      \
-+    ELF_DYNAMIC_DO_RELR ((map), edr_lazy, skip_ifunc);			      \
-   } while (0)
- 
- #endif
---- elf/elf.h
-+++ elf/elf.h
-@@ -334,7 +334,8 @@ typedef struct
- #define SHT_PREINIT_ARRAY 16		/* Array of pre-constructors */
- #define SHT_GROUP	  17		/* Section group */
- #define SHT_SYMTAB_SHNDX  18		/* Extended section indeces */
--#define	SHT_NUM		  19		/* Number of defined types.  */
-+#define SHT_RELR	  19            /* Relative relocation, only offsets */
-+#define	SHT_NUM		  20		/* Number of defined types.  */
- #define SHT_LOOS	  0x60000000	/* Start OS-specific.  */
- #define SHT_GNU_ATTRIBUTES 0x6ffffff5	/* Object attributes.  */
- #define SHT_GNU_HASH	  0x6ffffff6	/* GNU-style hash table.  */
-@@ -552,6 +553,12 @@ typedef struct
-   Elf64_Sxword	r_addend;		/* Addend */
- } Elf64_Rela;
- 
-+/* Relocation table entry for relative (in section of type SHT_RELR).  */
-+
-+typedef Elf32_Word	Elf32_Relr;	/* offset/bitmap for relative relocations */
-+
-+typedef Elf64_Xword	Elf64_Relr;	/* offset/bitmap for relative relocations */
-+
- /* How to extract and insert information held in the r_info field.  */
- 
- #define ELF32_R_SYM(val)		((val) >> 8)
-@@ -731,7 +738,11 @@ typedef struct
- #define DT_ENCODING	32		/* Start of encoded range */
- #define DT_PREINIT_ARRAY 32		/* Array with addresses of preinit fct*/
- #define DT_PREINIT_ARRAYSZ 33		/* size in bytes of DT_PREINIT_ARRAY */
--#define	DT_NUM		34		/* Number used */
-+#define DT_SYMTAB_SHNDX 34
-+#define DT_RELRSZ	35
-+#define DT_RELR		36
-+#define DT_RELRENT	37
-+#define	DT_NUM		38		/* Number used */
- #define DT_LOOS		0x6000000d	/* Start of OS-specific */
- #define DT_HIOS		0x6ffff000	/* End of OS-specific */
- #define DT_LOPROC	0x70000000	/* Start of processor-specific */
-@@ -783,6 +794,7 @@ typedef struct
-    GNU extension.  */
- #define DT_VERSYM	0x6ffffff0
- 
-+#define DT_RELRCOUNT	0x6ffffff8
- #define DT_RELACOUNT	0x6ffffff9
- #define DT_RELCOUNT	0x6ffffffa
- 
---- elf/get-dynamic-info.h
-+++ elf/get-dynamic-info.h
-@@ -105,6 +105,9 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
- # if ! ELF_MACHINE_NO_REL
-       ADJUST_DYN_INFO (DT_REL);
- # endif
-+# if ! ELF_MACHINE_NO_RELR
-+      ADJUST_DYN_INFO (DT_RELR);
-+#endif
-       ADJUST_DYN_INFO (DT_JMPREL);
-       ADJUST_DYN_INFO (VERSYMIDX (DT_VERSYM));
-       ADJUST_DYN_INFO (DT_ADDRTAGIDX (DT_GNU_HASH) + DT_NUM + DT_THISPROCNUM
-@@ -132,6 +135,10 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
-   if (info[DT_REL] != NULL)
-     assert (info[DT_RELENT]->d_un.d_val == sizeof (ElfW(Rel)));
- #endif
-+#if ! ELF_MACHINE_NO_RELR
-+  if (info[DT_RELR] != NULL)
-+    assert (info[DT_RELRENT]->d_un.d_val == sizeof (ElfW(Relr)));
-+# endif
- #ifdef RTLD_BOOTSTRAP
-   /* Only the bind now flags are allowed.  */
-   assert (info[VERSYMIDX (DT_FLAGS_1)] == NULL
---- sysdeps/aarch64/dl-machine.h
-+++ sysdeps/aarch64/dl-machine.h
-@@ -203,6 +203,7 @@ _dl_start_user:							\n\
- /* AArch64 uses RELA not REL */
- #define ELF_MACHINE_NO_REL 1
- #define ELF_MACHINE_NO_RELA 0
-+#define ELF_MACHINE_NO_RELR 0
- 
- static inline ElfW(Addr)
- elf_machine_fixup_plt (struct link_map *map, lookup_t t,
-@@ -368,6 +369,15 @@ elf_machine_rela_relative (ElfW(Addr) l_addr,
- 
- inline void
- __attribute__ ((always_inline))
-+elf_machine_relr_relative (ElfW(Addr) l_addr,
-+			   void *const reloc_addr_arg)
-+{
-+  ElfW(Addr) *const reloc_addr = reloc_addr_arg;
-+  *reloc_addr += l_addr;
-+}
-+
-+inline void
-+__attribute__ ((always_inline))
- elf_machine_lazy_rel (struct link_map *map,
- 		      ElfW(Addr) l_addr,
- 		      const ElfW(Rela) *reloc,
---- sysdeps/arm/dl-machine.h
-+++ sysdeps/arm/dl-machine.h
-@@ -284,6 +284,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
-    Prelinked libraries may use Elf32_Rela though.  */
- #define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
- #define ELF_MACHINE_NO_REL 0
-+#define ELF_MACHINE_NO_RELR 0
- 
- /* Names of the architecture-specific auditing callback functions.  */
- #define ARCH_LA_PLTENTER arm_gnu_pltenter
-@@ -650,6 +651,15 @@ elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
-   *reloc_addr += l_addr;
- }
- 
-+auto inline void
-+__attribute ((always_inline))
-+elf_machine_relr_relative (ElfW(Addr) l_addr,
-+			   void *const reloc_addr_arg)
-+{
-+  ElfW(Addr) *const reloc_addr = reloc_addr_arg;
-+  *reloc_addr += l_addr;
-+}
-+
- # ifndef RTLD_BOOTSTRAP
- auto inline void
- __attribute__ ((always_inline))
---- sysdeps/i386/dl-machine.h
-+++ sysdeps/i386/dl-machine.h
-@@ -267,6 +267,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
-    Prelinked libraries may use Elf32_Rela though.  */
- #define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
- #define ELF_MACHINE_NO_REL 0
-+#define ELF_MACHINE_NO_RELR 0
- 
- #ifdef RESOLVE_MAP
- 
-@@ -616,6 +616,15 @@
-   *reloc_addr += l_addr;
- }
- 
-+auto inline void
-+__attribute ((always_inline))
-+elf_machine_relr_relative (ElfW(Addr) l_addr,
-+			   void *const reloc_addr_arg)
-+{
-+  ElfW(Addr) *const reloc_addr = reloc_addr_arg;
-+  *reloc_addr += l_addr;
-+}
-+
- # ifndef RTLD_BOOTSTRAP
- auto inline void
- __attribute__ ((always_inline))
---- sysdeps/x86_64/dl-machine.h
-+++ sysdeps/x86_64/dl-machine.h
-@@ -212,6 +212,7 @@ _dl_start_user:\n\
- /* The x86-64 never uses Elf64_Rel/Elf32_Rel relocations.  */
- #define ELF_MACHINE_NO_REL 1
- #define ELF_MACHINE_NO_RELA 0
-+#define ELF_MACHINE_NO_RELR 0
- 
- /* We define an initialization function.  This is called very early in
-    _dl_sysdep_start.  */
-@@ -521,6 +522,15 @@ elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
- 
- auto inline void
- __attribute ((always_inline))
-+elf_machine_relr_relative (ElfW(Addr) l_addr,
-+			   void *const reloc_addr_arg)
-+{
-+  ElfW(Addr) *const reloc_addr = reloc_addr_arg;
-+  *reloc_addr += l_addr;
-+}
-+
-+auto inline void
-+__attribute ((always_inline))
- elf_machine_lazy_rel (struct link_map *map,
- 		      ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
- 		      int skip_ifunc)
diff --git a/sys-libs/glibc/files/local/glibc-2.27-check-libc-enable-secure.patch b/sys-libs/glibc/files/local/glibc-2.27-check-libc-enable-secure.patch
deleted file mode 100644
index bb1b351..0000000
--- a/sys-libs/glibc/files/local/glibc-2.27-check-libc-enable-secure.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 378397fc612b96d9cd6731db2725aa927d6331ad Mon Sep 17 00:00:00 2001
-From: Marcin Kościelnicki <mwk@0x04.net>
-Date: Mon, 9 Dec 2019 12:28:41 -0800
-Subject: [PATCH] rtld: Check __libc_enable_secure before honoring
- LD_PREFER_MAP_32BIT_EXEC (CVE-2019-19126)
-
-The problem was introduced in glibc 2.23, in commit
-b9eb92ab05204df772eb4929eccd018637c9f3e9
-("Add Prefer_MAP_32BIT_EXEC to map executable pages with MAP_32BIT").
-
-(cherry picked from commit d5dfad4326fc683c813df1e37bbf5cf920591c8e)
----
- sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h b/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
-index 194369174d..e7f0373a70 100644
---- a/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
-+++ b/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h
-@@ -31,7 +31,8 @@
-    environment variable, LD_PREFER_MAP_32BIT_EXEC.  */
- #define EXTRA_LD_ENVVARS \
-   case 21:								  \
--    if (memcmp (envline, "PREFER_MAP_32BIT_EXEC", 21) == 0)		  \
-+    if (!__libc_enable_secure                                            \
-+        && memcmp (envline, "PREFER_MAP_32BIT_EXEC", 21) == 0)           \
-       GLRO(dl_x86_cpu_features).feature[index_arch_Prefer_MAP_32BIT_EXEC] \
- 	|= bit_arch_Prefer_MAP_32BIT_EXEC;				  \
-     break;
--- 
-2.24.0.393.g34dc348eaf-goog
-
diff --git a/sys-libs/glibc/files/local/glibc-2.27-clang-fortify.patch b/sys-libs/glibc/files/local/glibc-2.27-clang-fortify.patch
deleted file mode 100644
index ef3c366..0000000
--- a/sys-libs/glibc/files/local/glibc-2.27-clang-fortify.patch
+++ /dev/null
@@ -1,2766 +0,0 @@
-This patch is from
-https://sourceware.org/ml/libc-alpha/2017-09/msg00434.html
-commit 6259c783b44c876329bb174327b8956cd074e5cb
-Author: George Burgess IV <gbiv@google.com>
-Date:   Sun Sep 10 20:51:51 2017 -0700
-
-    Refactor FORTIFY in glibc.
-
-    This is intended to be a preview.  ChangeLog entry + sane commit
-    messages will be added.
-
-diff --git a/io/bits/fcntl2.h b/io/bits/fcntl2.h
-index 38a18b27a1..1aaaf9ab79 100644
---- a/io/bits/fcntl2.h
-+++ b/io/bits/fcntl2.h
-@@ -32,10 +32,28 @@ extern int __REDIRECT (__open_2, (const char *__path, int __oflag),
- extern int __REDIRECT (__open_alias, (const char *__path, int __oflag, ...),
- 		       open64) __nonnull ((1));
- #endif
--__errordecl (__open_too_many_args,
--	     "open can be called either with 2 or 3 arguments, not more");
--__errordecl (__open_missing_mode,
--	     "open with O_CREAT or O_TMPFILE in second argument needs 3 arguments");
-+
-+#define __warn_open_too_many_args \
-+  "open can be called either with 2 or 3 arguments, not more"
-+#define __warn_open_missing_mode \
-+  "open with O_CREAT in second argument needs 3 arguments"
-+#ifdef __use_clang_fortify
-+__fortify_overload __clang_prefer_this_overload int
-+open (const char *const __clang_pass_object_size __path, int __oflag)
-+     __clang_error_if (__OPEN_NEEDS_MODE (__oflag), __warn_open_missing_mode)
-+{
-+  return __open_2 (__path, __oflag);
-+}
-+
-+__fortify_overload int
-+open (const char *const __clang_pass_object_size __path, int __oflag,
-+      mode_t __mode)
-+{
-+  return __open_alias (__path, __oflag, __mode);
-+}
-+#else
-+__errordecl (__open_too_many_args, __warn_open_too_many_args);
-+__errordecl (__open_missing_mode, __warn_open_missing_mode);
- 
- __fortify_function int
- open (const char *__path, int __oflag, ...)
-@@ -58,16 +76,37 @@ open (const char *__path, int __oflag, ...)
- 
-   return __open_alias (__path, __oflag, __va_arg_pack ());
- }
-+#endif
-+#undef __warn_open_too_many_args
-+#undef __warn_open_missing_mode
- 
- 
- #ifdef __USE_LARGEFILE64
- extern int __open64_2 (const char *__path, int __oflag) __nonnull ((1));
- extern int __REDIRECT (__open64_alias, (const char *__path, int __oflag,
- 					...), open64) __nonnull ((1));
--__errordecl (__open64_too_many_args,
--	     "open64 can be called either with 2 or 3 arguments, not more");
--__errordecl (__open64_missing_mode,
--	     "open64 with O_CREAT or O_TMPFILE in second argument needs 3 arguments");
-+
-+# define __warn_open64_too_many_args \
-+  "open64 can be called either with 2 or 3 arguments, not more"
-+# define __warn_open64_missing_mode \
-+  "open64 with O_CREAT in second argument needs 3 arguments"
-+# ifdef __use_clang_fortify
-+__fortify_overload __clang_prefer_this_overload int
-+open64 (const char *const __clang_pass_object_size __path, int __oflag)
-+     __clang_error_if (__OPEN_NEEDS_MODE (__oflag), __warn_open64_missing_mode)
-+{
-+  return __open64_2 (__path, __oflag);
-+}
-+
-+__fortify_overload __clang_prefer_this_overload int
-+open64 (const char *const __clang_pass_object_size __path, int __oflag,
-+	int __mode)
-+{
-+  return __open64_alias (__path, __oflag, __mode);
-+}
-+# else
-+__errordecl (__open64_too_many_args, __warn_open64_too_many_args);
-+__errordecl (__open64_missing_mode, __warn_open64_missing_mode);
- 
- __fortify_function int
- open64 (const char *__path, int __oflag, ...)
-@@ -90,6 +129,9 @@ open64 (const char *__path, int __oflag, ...)
- 
-   return __open64_alias (__path, __oflag, __va_arg_pack ());
- }
-+# endif
-+# undef __warn_open64_too_many_args
-+# undef __warn_open64_missing_mode
- #endif
- 
- 
-@@ -108,10 +150,32 @@ extern int __REDIRECT (__openat_alias, (int __fd, const char *__path,
- 					int __oflag, ...), openat64)
-      __nonnull ((2));
- # endif
--__errordecl (__openat_too_many_args,
--	     "openat can be called either with 3 or 4 arguments, not more");
--__errordecl (__openat_missing_mode,
--	     "openat with O_CREAT or O_TMPFILE in third argument needs 4 arguments");
-+
-+# define __warn_openat_too_many_args "openat can be called either with 3 or " \
-+       "4 arguments, not more"
-+# define __warn_openat_missing_mode "openat with O_CREAT in third argument " \
-+       "needs 4 arguments"
-+# ifdef __use_clang_fortify
-+__fortify_error_function __clang_error (__warn_openat_too_many_args) int
-+openat (int __fd, const char *__path, int __oflag, int __mode, ...);
-+
-+__fortify_overload __clang_prefer_this_overload int
-+openat (int __fd, const char *const __clang_pass_object_size __path,
-+	int __oflag)
-+     __clang_error_if (__OPEN_NEEDS_MODE (__oflag), __warn_openat_missing_mode)
-+{
-+  return __openat_2 (__fd, __path, __oflag);
-+}
-+
-+__fortify_overload __clang_prefer_this_overload int
-+openat (int __fd, const char *const __clang_pass_object_size __path,
-+	int __oflag, int __mode)
-+{
-+  return __openat_alias (__fd, __path, __oflag, __mode);
-+}
-+# else
-+__errordecl (__openat_too_many_args, __warn_openat_too_many_args);
-+__errordecl (__openat_missing_mode, __warn_openat_missing_mode);
- 
- __fortify_function int
- openat (int __fd, const char *__path, int __oflag, ...)
-@@ -134,6 +198,9 @@ openat (int __fd, const char *__path, int __oflag, ...)
- 
-   return __openat_alias (__fd, __path, __oflag, __va_arg_pack ());
- }
-+# endif
-+# undef __warn_openat_too_many_args
-+# undef __warn_openat_missing_mode
- 
- 
- # ifdef __USE_LARGEFILE64
-@@ -142,11 +209,34 @@ extern int __openat64_2 (int __fd, const char *__path, int __oflag)
- extern int __REDIRECT (__openat64_alias, (int __fd, const char *__path,
- 					  int __oflag, ...), openat64)
-      __nonnull ((2));
--__errordecl (__openat64_too_many_args,
--	     "openat64 can be called either with 3 or 4 arguments, not more");
--__errordecl (__openat64_missing_mode,
--	     "openat64 with O_CREAT or O_TMPFILE in third argument needs 4 arguments");
- 
-+#  define __warn_openat64_too_many_args "openat64 can be called either with " \
-+       "3 or 4 arguments, not more"
-+#  define __warn_openat64_missing_mode "openat64 with O_CREAT in third " \
-+       "argument needs 4 arguments"
-+
-+#  ifdef __use_clang_fortify
-+__fortify_error_function __clang_error (__warn_openat64_too_many_args) int
-+openat64 (int __fd, const char *__path, int __oflag, int __mode, ...);
-+
-+__fortify_overload __clang_prefer_this_overload int
-+openat64 (int __fd, const char *const __clang_pass_object_size __path,
-+	  int __oflag)
-+     __clang_error_if (__OPEN_NEEDS_MODE (__oflag),
-+                       __warn_openat64_missing_mode)
-+{
-+  return __openat64_2 (__fd, __path, __oflag);
-+}
-+
-+__fortify_overload __clang_prefer_this_overload int
-+openat64 (int __fd, const char *const __clang_pass_object_size __path,
-+	  int __oflag, int __mode)
-+{
-+  return __openat64_alias (__fd, __path, __oflag, __mode);
-+}
-+#  else
-+__errordecl (__openat64_too_many_args, __warn_openat64_too_many_args);
-+__errordecl (__openat64_missing_mode, __warn_openat64_missing_mode);
- __fortify_function int
- openat64 (int __fd, const char *__path, int __oflag, ...)
- {
-@@ -168,5 +258,8 @@ openat64 (int __fd, const char *__path, int __oflag, ...)
- 
-   return __openat64_alias (__fd, __path, __oflag, __va_arg_pack ());
- }
-+#  endif
-+#  undef __warn_openat64_too_many_args
-+#  undef __warn_openat64_missing_mode
- # endif
- #endif
-diff --git a/io/bits/poll2.h b/io/bits/poll2.h
-index 7e8406b87d..cc420dfedd 100644
---- a/io/bits/poll2.h
-+++ b/io/bits/poll2.h
-@@ -27,25 +27,20 @@ extern int __REDIRECT (__poll_alias, (struct pollfd *__fds, nfds_t __nfds,
- 				      int __timeout), poll);
- extern int __poll_chk (struct pollfd *__fds, nfds_t __nfds, int __timeout,
- 		       __SIZE_TYPE__ __fdslen);
--extern int __REDIRECT (__poll_chk_warn, (struct pollfd *__fds, nfds_t __nfds,
--					 int __timeout, __SIZE_TYPE__ __fdslen),
--		       __poll_chk)
--  __warnattr ("poll called with fds buffer too small file nfds entries");
- 
--__fortify_function int
--poll (struct pollfd *__fds, nfds_t __nfds, int __timeout)
-+__fortify_potential_overload int
-+poll (struct pollfd *const __clang_pass_object_size __fds, nfds_t __nfds,
-+      int __timeout)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__poll_warn, __nfds, __fds,
-+					sizeof (*__fds),
-+					"poll called with fds buffer too small")
- {
--  if (__bos (__fds) != (__SIZE_TYPE__) -1)
--    {
--      if (! __builtin_constant_p (__nfds))
--	return __poll_chk (__fds, __nfds, __timeout, __bos (__fds));
--      else if (__bos (__fds) / sizeof (*__fds) < __nfds)
--	return __poll_chk_warn (__fds, __nfds, __timeout, __bos (__fds));
--    }
--
-+  if (__FORTIFY_CALL_CHK && __bos (__fds) != (__SIZE_TYPE__) -1)
-+    return __poll_chk (__fds, __nfds, __timeout, __bos (__fds));
-   return __poll_alias (__fds, __nfds, __timeout);
- }
--
-+__FORTIFY_FUNCTION_END
- 
- #ifdef __USE_GNU
- extern int __REDIRECT (__ppoll_alias, (struct pollfd *__fds, nfds_t __nfds,
-@@ -54,28 +49,21 @@ extern int __REDIRECT (__ppoll_alias, (struct pollfd *__fds, nfds_t __nfds,
- extern int __ppoll_chk (struct pollfd *__fds, nfds_t __nfds,
- 			const struct timespec *__timeout,
- 			const __sigset_t *__ss, __SIZE_TYPE__ __fdslen);
--extern int __REDIRECT (__ppoll_chk_warn, (struct pollfd *__fds, nfds_t __nfds,
--					  const struct timespec *__timeout,
--					  const __sigset_t *__ss,
--					  __SIZE_TYPE__ __fdslen),
--		       __ppoll_chk)
--  __warnattr ("ppoll called with fds buffer too small file nfds entries");
- 
--__fortify_function int
--ppoll (struct pollfd *__fds, nfds_t __nfds, const struct timespec *__timeout,
--       const __sigset_t *__ss)
-+__fortify_potential_overload int
-+ppoll (struct pollfd *const __clang_pass_object_size __fds, nfds_t __nfds,
-+       const struct timespec *__timeout, const __sigset_t *__ss)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__ppoll_warn, __nfds, __fds,
-+					sizeof (*__fds),
-+					"ppoll called with fds buffer too "
-+					"small file nfds entries")
- {
--  if (__bos (__fds) != (__SIZE_TYPE__) -1)
--    {
--      if (! __builtin_constant_p (__nfds))
--	return __ppoll_chk (__fds, __nfds, __timeout, __ss, __bos (__fds));
--      else if (__bos (__fds) / sizeof (*__fds) < __nfds)
--	return __ppoll_chk_warn (__fds, __nfds, __timeout, __ss,
--				 __bos (__fds));
--    }
--
-+  if (__FORTIFY_CALL_CHK && __bos (__fds) != (__SIZE_TYPE__) -1)
-+    return __ppoll_chk (__fds, __nfds, __timeout, __ss, __bos (__fds));
-   return __ppoll_alias (__fds, __nfds, __timeout, __ss);
- }
-+__FORTIFY_FUNCTION_END
- #endif
- 
- __END_DECLS
-diff --git a/io/fcntl.h b/io/fcntl.h
-index 69a4394191..70b543dade 100644
---- a/io/fcntl.h
-+++ b/io/fcntl.h
-@@ -309,7 +309,7 @@ extern int posix_fallocate64 (int __fd, off64_t __offset, off64_t __len);
- 
- /* Define some inlines helping to catch common problems.  */
- #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function \
--    && defined __va_arg_pack_len
-+    && (defined __va_arg_pack_len || defined __use_clang_fortify)
- # include <bits/fcntl2.h>
- #endif
- 
-diff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h
-index 55302e91d0..513d60a8c4 100644
---- a/libio/bits/stdio2.h
-+++ b/libio/bits/stdio2.h
-@@ -26,12 +26,23 @@ extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
- 			   const char *__restrict __format,
- 			   _G_va_list __ap) __THROW;
- 
--#ifdef __va_arg_pack
--__fortify_function int
--__NTH (sprintf (char *__restrict __s, const char *__restrict __fmt, ...))
-+#define __mul_may_overflow(size, n) \
-+  ((size | n) >= (((size_t)1) << (8 * sizeof (size_t) / 2)))
-+
-+#ifdef __FORTIFY_ARG_PACK_OK
-+/* clang doesn't have __va_arg_pack, so we need to defer to the va_arg versions
-+   of these functions.  */
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3))) int
-+__NTH (sprintf (char *__restrict const __clang_pass_object_size __s,
-+		const char *__restrict __fmt, ...))
- {
--  return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
--				  __bos (__s), __fmt, __va_arg_pack ());
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __result = __FORTIFY_CALL_VA_BUILTIN (sprintf, __s,
-+					    __USE_FORTIFY_LEVEL - 1,
-+					    __bos (__s), __fmt,
-+					    __FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __result;
- }
- #elif !defined __cplusplus
- # define sprintf(str, ...) \
-@@ -39,9 +50,9 @@ __NTH (sprintf (char *__restrict __s, const char *__restrict __fmt, ...))
- 			   __VA_ARGS__)
- #endif
- 
--__fortify_function int
--__NTH (vsprintf (char *__restrict __s, const char *__restrict __fmt,
--		 _G_va_list __ap))
-+__fortify_potential_overload int
-+__NTH (vsprintf (char *__restrict const __clang_pass_object_size __s,
-+		 const char *__restrict __fmt, _G_va_list __ap))
- {
-   return __builtin___vsprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
- 				   __bos (__s), __fmt, __ap);
-@@ -56,13 +67,21 @@ extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
- 			    size_t __slen, const char *__restrict __format,
- 			    _G_va_list __ap) __THROW;
- 
--# ifdef __va_arg_pack
--__fortify_function int
--__NTH (snprintf (char *__restrict __s, size_t __n,
--		 const char *__restrict __fmt, ...))
-+# ifdef __FORTIFY_ARG_PACK_OK
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 3, 4))) int
-+__NTH (snprintf (char *__restrict const __clang_pass_object_size __s,
-+		 size_t __n, const char *__restrict __fmt, ...))
-+     /* GCC's builtin will catch this, so we just need to cover clang here.  */
-+     __clang_warning_if (__bos_static_lt (__n, __s),
-+			 "call to snprintf may overflow the destination buffer")
- {
--  return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
--				   __bos (__s), __fmt, __va_arg_pack ());
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __result = __FORTIFY_CALL_VA_BUILTIN (snprintf, __s, __n,
-+					    __USE_FORTIFY_LEVEL - 1,
-+					    __bos (__s), __fmt,
-+					    __FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __result;
- }
- # elif !defined __cplusplus
- #  define snprintf(str, len, ...) \
-@@ -70,9 +89,12 @@ __NTH (snprintf (char *__restrict __s, size_t __n,
- 			    __VA_ARGS__)
- # endif
- 
--__fortify_function int
--__NTH (vsnprintf (char *__restrict __s, size_t __n,
--		  const char *__restrict __fmt, _G_va_list __ap))
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 3, 0))) int
-+__NTH (vsnprintf (char *__restrict const __clang_pass_object_size __s,
-+		  size_t __n, const char *__restrict __fmt, _G_va_list __ap))
-+     __clang_warning_if (__bos_static_lt (__n, __s),
-+                         "call to vsnprintf may overflow the destination "
-+                         "buffer")
- {
-   return __builtin___vsnprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
- 				    __bos (__s), __fmt, __ap);
-@@ -90,18 +112,27 @@ extern int __vfprintf_chk (FILE *__restrict __stream, int __flag,
- extern int __vprintf_chk (int __flag, const char *__restrict __format,
- 			  _G_va_list __ap);
- 
--# ifdef __va_arg_pack
--__fortify_function int
--fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...)
-+# ifdef __FORTIFY_ARG_PACK_OK
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3))) int
-+fprintf (FILE *__restrict const __clang_pass_object_size __stream,
-+	 const char *__restrict __fmt, ...)
- {
--  return __fprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt,
--			__va_arg_pack ());
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __result = __FORTIFY_CALL_VA_CHK (fprintf, __stream,
-+					__USE_FORTIFY_LEVEL - 1, __fmt,
-+					__FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __result;
- }
- 
--__fortify_function int
--printf (const char *__restrict __fmt, ...)
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 1, 2))) int
-+printf (const char *__restrict const __clang_pass_object_size __fmt, ...)
- {
--  return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __result = __FORTIFY_CALL_VA_CHK (printf, __USE_FORTIFY_LEVEL - 1, __fmt,
-+					__FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __result;
- }
- # elif !defined __cplusplus
- #  define printf(...) \
-@@ -110,18 +141,19 @@ printf (const char *__restrict __fmt, ...)
-   __fprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
- # endif
- 
--__fortify_function int
--vprintf (const char *__restrict __fmt, _G_va_list __ap)
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 1, 0))) int
-+vprintf (const char *__restrict const __clang_pass_object_size __fmt,
-+	 _G_va_list __ap)
- {
--#ifdef __USE_EXTERN_INLINES
-+# ifdef __USE_EXTERN_INLINES
-   return __vfprintf_chk (stdout, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
--#else
-+# else
-   return __vprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __ap);
--#endif
-+# endif
- }
- 
--__fortify_function int
--vfprintf (FILE *__restrict __stream,
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 0))) int
-+vfprintf (FILE *__restrict const __clang_pass_object_size __stream,
- 	  const char *__restrict __fmt, _G_va_list __ap)
- {
-   return __vfprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
-@@ -134,20 +166,26 @@ extern int __vdprintf_chk (int __fd, int __flag,
- 			   const char *__restrict __fmt, _G_va_list __arg)
-      __attribute__ ((__format__ (__printf__, 3, 0)));
- 
--#  ifdef __va_arg_pack
--__fortify_function int
--dprintf (int __fd, const char *__restrict __fmt, ...)
-+#  ifdef __FORTIFY_ARG_PACK_OK
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3))) int
-+dprintf (int __fd, const char *__restrict const __clang_pass_object_size __fmt,
-+	 ...)
- {
--  return __dprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt,
--			__va_arg_pack ());
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __result = __FORTIFY_CALL_VA_CHK (dprintf, __fd, __USE_FORTIFY_LEVEL - 1,
-+					__fmt, __FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __result;
- }
- #  elif !defined __cplusplus
- #   define dprintf(fd, ...) \
-   __dprintf_chk (fd, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
- #  endif
- 
--__fortify_function int
--vdprintf (int __fd, const char *__restrict __fmt, _G_va_list __ap)
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 0))) int
-+vdprintf (int __fd,
-+	  const char *__restrict const __clang_pass_object_size __fmt,
-+	  _G_va_list __ap)
- {
-   return __vdprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
- }
-@@ -171,28 +209,49 @@ extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack,
- 				  _G_va_list __args)
-      __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
- 
--#  ifdef __va_arg_pack
--__fortify_function int
--__NTH (asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...))
-+#  ifdef __FORTIFY_ARG_PACK_OK
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3)))
-+__wur int
-+__NTH (asprintf (char **__restrict const __clang_pass_object_size __ptr,
-+		 const char *__restrict __fmt, ...))
- {
--  return __asprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt,
--			 __va_arg_pack ());
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __result = __FORTIFY_CALL_VA_CHK (asprintf, __ptr,
-+					__USE_FORTIFY_LEVEL - 1, __fmt,
-+					__FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __result;
- }
- 
--__fortify_function int
--__NTH (__asprintf (char **__restrict __ptr, const char *__restrict __fmt,
--		   ...))
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3)))
-+__wur int
-+__NTH (__asprintf (char **__restrict const __clang_pass_object_size __ptr,
-+		   const char *__restrict __fmt, ...))
- {
--  return __asprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt,
--			 __va_arg_pack ());
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __result = __FORTIFY_CALL_VA_CHK (asprintf, __ptr,
-+					__USE_FORTIFY_LEVEL - 1, __fmt,
-+					__FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __result;
- }
- 
--__fortify_function int
--__NTH (obstack_printf (struct obstack *__restrict __obstack,
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3))) int
-+__NTH (obstack_printf (struct obstack *
-+			 __restrict const __clang_pass_object_size __obstack,
- 		       const char *__restrict __fmt, ...))
- {
--  return __obstack_printf_chk (__obstack, __USE_FORTIFY_LEVEL - 1, __fmt,
--			       __va_arg_pack ());
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __result =
-+#   ifdef __use_clang_fortify
-+    __obstack_vprintf_chk
-+#   else
-+    __obstack_printf_chk
-+#   endif
-+      (__obstack, __USE_FORTIFY_LEVEL - 1, __fmt,
-+			     __FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __result;
- }
- #  elif !defined __cplusplus
- #   define asprintf(ptr, ...) \
-@@ -203,15 +262,17 @@ __NTH (obstack_printf (struct obstack *__restrict __obstack,
-   __obstack_printf_chk (obstack, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
- #  endif
- 
--__fortify_function int
--__NTH (vasprintf (char **__restrict __ptr, const char *__restrict __fmt,
--		  _G_va_list __ap))
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 0)))
-+__wur int
-+__NTH (vasprintf (char **__restrict const __clang_pass_object_size __ptr,
-+		  const char *__restrict __fmt, _G_va_list __ap))
- {
-   return __vasprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
- }
- 
--__fortify_function int
--__NTH (obstack_vprintf (struct obstack *__restrict __obstack,
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 0))) int
-+__NTH (obstack_vprintf (struct obstack *
-+			  __restrict const __clang_pass_object_size __obstack,
- 			const char *__restrict __fmt, _G_va_list __ap))
- {
-   return __obstack_vprintf_chk (__obstack, __USE_FORTIFY_LEVEL - 1, __fmt,
-@@ -224,17 +285,20 @@ __NTH (obstack_vprintf (struct obstack *__restrict __obstack,
- 
- #if __GLIBC_USE (DEPRECATED_GETS)
- extern char *__gets_chk (char *__str, size_t) __wur;
--extern char *__REDIRECT (__gets_warn, (char *__str), gets)
--     __wur __warnattr ("please use fgets or getline instead, gets can't "
--		       "specify buffer size");
--
--__fortify_function __wur char *
--gets (char *__str)
-+extern char *__REDIRECT_NTH (__gets_alias, (char *__buf), gets) __wur;
-+
-+__fortify_potential_overload __wur char *
-+gets (char *const __clang_pass_object_size __str)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_IF (__gets_warn, __bos (__str) == (size_t) -1,
-+			   "please use fgets or getline instead, gets can't "
-+			   "specify buffer size")
- {
-   if (__bos (__str) != (size_t) -1)
-     return __gets_chk (__str, __bos (__str));
--  return __gets_warn (__str);
-+  return __gets_alias (__str);
- }
-+__FORTIFY_FUNCTION_END
- #endif
- 
- extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
-@@ -242,25 +306,20 @@ extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
- extern char *__REDIRECT (__fgets_alias,
- 			 (char *__restrict __s, int __n,
- 			  FILE *__restrict __stream), fgets) __wur;
--extern char *__REDIRECT (__fgets_chk_warn,
--			 (char *__restrict __s, size_t __size, int __n,
--			  FILE *__restrict __stream), __fgets_chk)
--     __wur __warnattr ("fgets called with bigger size than length "
--		       "of destination buffer");
--
--__fortify_function __wur char *
--fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
-+
-+__fortify_potential_overload __wur char *
-+fgets (char *__restrict const __clang_pass_object_size __s, int __n,
-+       FILE *__restrict __stream)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_IF (__fgets_warn, __bos_static_lt (__n, __s) && __n > 0,
-+			   "fgets called with bigger size than length of "
-+			   "destination buffer")
- {
-   if (__bos (__s) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n) || __n <= 0)
--	return __fgets_chk (__s, __bos (__s), __n, __stream);
--
--      if ((size_t) __n > __bos (__s))
--	return __fgets_chk_warn (__s, __bos (__s), __n, __stream);
--    }
-+    return __fgets_chk (__s, __bos (__s), __n, __stream);
-   return __fgets_alias (__s, __n, __stream);
- }
-+__FORTIFY_FUNCTION_END
- 
- extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen,
- 			   size_t __size, size_t __n,
-@@ -269,30 +328,21 @@ extern size_t __REDIRECT (__fread_alias,
- 			  (void *__restrict __ptr, size_t __size,
- 			   size_t __n, FILE *__restrict __stream),
- 			  fread) __wur;
--extern size_t __REDIRECT (__fread_chk_warn,
--			  (void *__restrict __ptr, size_t __ptrlen,
--			   size_t __size, size_t __n,
--			   FILE *__restrict __stream),
--			  __fread_chk)
--     __wur __warnattr ("fread called with bigger size * nmemb than length "
--		       "of destination buffer");
- 
--__fortify_function __wur size_t
--fread (void *__restrict __ptr, size_t __size, size_t __n,
--       FILE *__restrict __stream)
-+__fortify_potential_overload __wur size_t
-+fread (void *__restrict const __clang_pass_object_size0 __ptr, size_t __size,
-+       size_t __n, FILE *__restrict __stream)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_IF (__fread_warn, __bos0_static_lt (__size * __n, __ptr)
-+			    && !__mul_may_overflow (__size, __n),
-+			   "fread called with bigger size * nmemb than length "
-+			   "of destination buffer")
- {
-   if (__bos0 (__ptr) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__size)
--	  || !__builtin_constant_p (__n)
--	  || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
--	return __fread_chk (__ptr, __bos0 (__ptr), __size, __n, __stream);
--
--      if (__size * __n > __bos0 (__ptr))
--	return __fread_chk_warn (__ptr, __bos0 (__ptr), __size, __n, __stream);
--    }
-+    return __fread_chk (__ptr, __bos0 (__ptr), __size, __n, __stream);
-   return __fread_alias (__ptr, __size, __n, __stream);
- }
-+__FORTIFY_FUNCTION_END
- 
- #ifdef __USE_GNU
- extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
-@@ -300,25 +350,21 @@ extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
- extern char *__REDIRECT (__fgets_unlocked_alias,
- 			 (char *__restrict __s, int __n,
- 			  FILE *__restrict __stream), fgets_unlocked) __wur;
--extern char *__REDIRECT (__fgets_unlocked_chk_warn,
--			 (char *__restrict __s, size_t __size, int __n,
--			  FILE *__restrict __stream), __fgets_unlocked_chk)
--     __wur __warnattr ("fgets_unlocked called with bigger size than length "
--		       "of destination buffer");
--
--__fortify_function __wur char *
--fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
-+
-+__fortify_potential_overload __wur char *
-+fgets_unlocked (char *__restrict const __clang_pass_object_size __s, int __n,
-+		FILE *__restrict __stream)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_IF (__fgets_unlocked_warn,
-+			   __bos_static_lt (__n, __s) && __n > 0,
-+			   "fgets_unlocked called with bigger size than length "
-+			   "of destination buffer")
- {
-   if (__bos (__s) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n) || __n <= 0)
--	return __fgets_unlocked_chk (__s, __bos (__s), __n, __stream);
--
--      if ((size_t) __n > __bos (__s))
--	return __fgets_unlocked_chk_warn (__s, __bos (__s), __n, __stream);
--    }
-+    return __fgets_unlocked_chk (__s, __bos (__s), __n, __stream);
-   return __fgets_unlocked_alias (__s, __n, __stream);
- }
-+__FORTIFY_FUNCTION_END
- #endif
- 
- #ifdef __USE_MISC
-@@ -330,30 +376,19 @@ extern size_t __REDIRECT (__fread_unlocked_alias,
- 			  (void *__restrict __ptr, size_t __size,
- 			   size_t __n, FILE *__restrict __stream),
- 			  fread_unlocked) __wur;
--extern size_t __REDIRECT (__fread_unlocked_chk_warn,
--			  (void *__restrict __ptr, size_t __ptrlen,
--			   size_t __size, size_t __n,
--			   FILE *__restrict __stream),
--			  __fread_unlocked_chk)
--     __wur __warnattr ("fread_unlocked called with bigger size * nmemb than "
--		       "length of destination buffer");
- 
--__fortify_function __wur size_t
--fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
--		FILE *__restrict __stream)
-+__fortify_potential_overload __wur size_t
-+fread_unlocked (void *__restrict const __clang_pass_object_size0 __ptr,
-+		size_t __size, size_t __n, FILE *__restrict __stream)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_IF (__fread_unlocked_warn,
-+			   __bos0_static_lt (__size * __n, __ptr)
-+			    && !__mul_may_overflow(__size, __n),
-+			   "fread_unlocked called with bigger size * n than "
-+			   "length of destination buffer")
- {
-   if (__bos0 (__ptr) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__size)
--	  || !__builtin_constant_p (__n)
--	  || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
--	return __fread_unlocked_chk (__ptr, __bos0 (__ptr), __size, __n,
--				     __stream);
--
--      if (__size * __n > __bos0 (__ptr))
--	return __fread_unlocked_chk_warn (__ptr, __bos0 (__ptr), __size, __n,
--					  __stream);
--    }
-+    return __fread_unlocked_chk (__ptr, __bos0 (__ptr), __size, __n, __stream);
- 
- # ifdef __USE_EXTERN_INLINES
-   if (__builtin_constant_p (__size)
-@@ -378,4 +413,6 @@ fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
- # endif
-   return __fread_unlocked_alias (__ptr, __size, __n, __stream);
- }
-+__FORTIFY_FUNCTION_END
- #endif
-+#undef __mul_may_overflow
-diff --git a/misc/bits/syslog.h b/misc/bits/syslog.h
-index 6719fbe795..ef58020f40 100644
---- a/misc/bits/syslog.h
-+++ b/misc/bits/syslog.h
-@@ -20,11 +20,34 @@
- # error "Never include <bits/syslog.h> directly; use <sys/syslog.h> instead."
- #endif
- 
-+#ifdef __USE_MISC
-+extern void __vsyslog_chk (int __pri, int __flag, const char *__fmt,
-+			   __gnuc_va_list __ap)
-+     __attribute__ ((__format__ (__printf__, 3, 0)));
-+
-+__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 0))) void
-+vsyslog (int __pri, const char *const __clang_pass_object_size __fmt,
-+	 __gnuc_va_list __ap)
-+{
-+  __vsyslog_chk (__pri,  __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
-+}
-+#endif
- 
- extern void __syslog_chk (int __pri, int __flag, const char *__fmt, ...)
-      __attribute__ ((__format__ (__printf__, 3, 4)));
- 
--#ifdef __va_arg_pack
-+#if defined __use_clang_fortify && __USE_MISC
-+/* clang doesn't support __va_arg_pack, so this is only possible if we have
-+   vsyslog.  */
-+__fortify_overload __attribute__ ((__format__ (__printf__, 2, 3))) void
-+syslog (int __pri, const char *const __clang_pass_object_size __fmt, ...)
-+{
-+  __gnuc_va_list __ap;
-+  va_start (__ap, __fmt);
-+  __vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
-+  va_end (__ap);
-+}
-+#elif defined __va_arg_pack
- __fortify_function void
- syslog (int __pri, const char *__fmt, ...)
- {
-@@ -34,16 +57,3 @@ syslog (int __pri, const char *__fmt, ...)
- # define syslog(pri, ...) \
-   __syslog_chk (pri, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
- #endif
--
--
--#ifdef __USE_MISC
--extern void __vsyslog_chk (int __pri, int __flag, const char *__fmt,
--			   __gnuc_va_list __ap)
--     __attribute__ ((__format__ (__printf__, 3, 0)));
--
--__fortify_function void
--vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
--{
--  __vsyslog_chk (__pri,  __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
--}
--#endif
-diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
-index af103fdb8a..8cff5ac9f3 100644
---- a/misc/sys/cdefs.h
-+++ b/misc/sys/cdefs.h
-@@ -113,11 +113,150 @@
- # define __END_DECLS
- #endif
- 
-+#if defined __clang__ && defined __has_extension
-+# define __clang_has_extension(x) __has_extension (x)
-+#else
-+# define __clang_has_extension(x) 0
-+#endif
- 
- /* Fortify support.  */
--#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
-+#define __fortify_function __extern_always_inline __attribute_artificial__
-+#if defined __clang__ && __USE_FORTIFY_LEVEL > 0 \
-+    && !defined _CLANG_FORTIFY_DISABLE \
-+    && __clang_has_extension(overloadable_unmarked)
-+# define __use_clang_fortify 1
-+/* Clang-style FORTIFY creates a different symbol for each FORTIFY'ed function,
-+   whereas GCC-style doesn't.  Thus, GCC can assume that the FORTIFY'ed
-+   function is always available externally, but clang can't.  */
-+# define __attribute_overloadable__ __attribute__ ((__overloadable__))
-+# define __attribute_transparent_overload__ \
-+  __attribute__ ((__overloadable__("transparent")))
-+# define __fortify_overload static __always_inline __attribute_overloadable__
-+/* For FORTIFY functions that exist only as decls.  */
-+# define __fortify_error_function static __attribute_overloadable__
-+# define __clang_pass_object_size_n(n) __attribute__ ((pass_object_size (n)))
-+# define __clang_warning(what) __attribute__ ((deprecated(what)))
-+# define __clang_prefer_this_overload __attribute__ ((enable_if (1, "")))
-+# define __clang_warning_if(c, m) \
-+  __attribute__ ((__diagnose_if__ ((c), (m), "warning")))
-+# define __clang_error(what) __attribute__ ((unavailable(what)))
-+# define __clang_error_if(c, m) \
-+  __attribute__ ((__diagnose_if__ ((c), (m), "error")))
-+# define __fortify_potential_overload __fortify_overload
-+#else
-+# define __fortify_potential_overload __fortify_function
-+/* Some functions/decls can be shared between clang and non-clang FORTIFY.
-+   Turning these into nops makes that possible.  */
-+# define __clang_pass_object_size_n(n)
-+# define __attribute_overloadable__
-+# define __bos_n(ptr, n) __builtin_object_size (ptr, n)
-+# define __clang_warning_if(c, m)
-+# define __clang_error_if(c, m)
-+#endif
-+
-+#define __bos_level (__USE_FORTIFY_LEVEL > 1)
-+#define __bos(ptr) __builtin_object_size (ptr, __bos_level)
- #define __bos0(ptr) __builtin_object_size (ptr, 0)
- 
-+#define __clang_pass_object_size0 __clang_pass_object_size_n (0)
-+#define __clang_pass_object_size __clang_pass_object_size_n (__bos_level)
-+
-+/* Some of these macros are awkwardly written, and more repetitive than they'd
-+   ideally need to be.  This is because both clang and gcc will emit 'note's
-+   about where these warnings originate from. For every macro that's expanded,
-+   the user sees a note that ultimately doesn't matter to them...  */
-+#ifdef __use_clang_fortify
-+# define __FORTIFY_PRECONDITIONS
-+# define __FORTIFY_FUNCTION_END
-+# define __FORTIFY_WARNING_IF(_, c, msg) __clang_warning_if(c, msg)
-+/* __builtin_constant_p isn't needed: this is only used in constructs that
-+   must be fully evaluated at compile-time.  */
-+# define __bos_static_lt_impl(bos_val, n, s) \
-+  ((bos_val) != -1ULL && (n) > (bos_val) / (s))
-+# define __FORTIFY_CALL_CHK 1
-+
-+# define __FORTIFY_BOSN_ARGS(bos_fn, n, buf, div, complaint) \
-+  (__bos_static_lt_impl (bos_fn (buf), n, div)), (complaint), "warning"
-+
-+#define __FORTIFY_WARNING_ONLY_IF_BOS0_LT2(fn_name, n, buf, div, complaint) \
-+  __attribute__ ((__diagnose_if__ \
-+	(__FORTIFY_BOSN_ARGS (__bos0, n, buf, div, complaint))))
-+#define __FORTIFY_WARNING_ONLY_IF_BOS0_LT(fn_name, n, buf, complaint) \
-+  __attribute__ ((__diagnose_if__ \
-+	(__FORTIFY_BOSN_ARGS (__bos0, n, buf, 1, complaint))))
-+#define __FORTIFY_WARNING_ONLY_IF_BOS_LT2(fn_name, n, buf, div, complaint) \
-+  __attribute__ ((__diagnose_if__ \
-+	(__FORTIFY_BOSN_ARGS (__bos, n, buf, div, complaint))))
-+#define __FORTIFY_WARNING_ONLY_IF_BOS_LT(fn_name, n, buf, complaint) \
-+  __attribute__ ((__diagnose_if__ \
-+	(__FORTIFY_BOSN_ARGS (__bos, n, buf, 1, complaint))))
-+#else
-+# define __FORTIFY_PRECONDITIONS {
-+# define __FORTIFY_FUNCTION_END }
-+/* __chk_fail was chosen arbitrarily. The function should never be called
-+   anyway; it just exists to be reachable after optimizations.  */
-+# define __FORTIFY_DECLARE_WARNING_FUNCTION(name, msg) \
-+  __attribute ((__warning__(msg))) \
-+  extern void __REDIRECT_NTH (name, (void), __chk_fail)
-+
-+# define __FORTIFY_WARNING_IF_BEGIN(fn_name, cond, complaint, if_cond_true) \
-+  { \
-+    if (cond) { \
-+      if_cond_true; \
-+      __FORTIFY_DECLARE_WARNING_FUNCTION (fn_name, complaint); \
-+      volatile char __t = 0; \
-+      if (__glibc_unlikely (__t)) \
-+      {
-+
-+# define __FORTIFY_WARNING_IF_END \
-+      } \
-+    } \
-+  }
-+
-+# define __FORTIFY_WARNING_IF(err_fn, cond, complaint) \
-+  __FORTIFY_WARNING_IF_BEGIN (err_fn, cond, complaint, (void)0) \
-+    err_fn (); \
-+  __FORTIFY_WARNING_IF_END
-+
-+# define __bos_static_lt_impl(bos_val, n, s) \
-+  (__builtin_constant_p (n) && (bos_val) != -1ULL && (n) > (bos_val) / (s))
-+
-+#define __FORTIFY_BOS_WARNING_BEGIN(fn_name, bos_fn, n, buf, div, complaint) \
-+  char __need_dynamic_check = !__builtin_constant_p (n); \
-+  __FORTIFY_WARNING_IF_BEGIN (fn_name, \
-+			      __bos_static_lt_impl (bos_fn (buf), n, div), \
-+			      complaint, (__need_dynamic_check = 1))
-+
-+/* Duplicate this so that the fn_name call happens with the smallest possible
-+   macro "call stack". This minimizes diagnostics about expanding macros.  */
-+#define __FORTIFY_WARNING_ONLY_IF_BOS0_LT2(err_fn, n, buf, div, complaint) \
-+  __FORTIFY_BOS_WARNING_BEGIN (err_fn, __bos0, n, buf, div, complaint) \
-+    err_fn (); \
-+  __FORTIFY_WARNING_IF_END
-+
-+#define __FORTIFY_WARNING_ONLY_IF_BOS0_LT(err_fn, n, buf, complaint) \
-+  __FORTIFY_BOS_WARNING_BEGIN (err_fn, __bos0, n, buf, 1, complaint) \
-+    err_fn (); \
-+  __FORTIFY_WARNING_IF_END
-+
-+#define __FORTIFY_WARNING_ONLY_IF_BOS_LT2(err_fn, n, buf, div, complaint) \
-+  __FORTIFY_BOS_WARNING_BEGIN (err_fn, __bos, n, buf, div, complaint) \
-+    err_fn (); \
-+  __FORTIFY_WARNING_IF_END
-+
-+#define __FORTIFY_WARNING_ONLY_IF_BOS_LT(err_fn, n, buf, complaint) \
-+  __FORTIFY_BOS_WARNING_BEGIN (err_fn, __bos, n, buf, 1, complaint) \
-+    err_fn (); \
-+  __FORTIFY_WARNING_IF_END
-+
-+# define __FORTIFY_CALL_CHK (__need_dynamic_check)
-+#endif
-+
-+#define __bos_static_lt2(n, e, s) __bos_static_lt_impl (__bos (e), n, s)
-+#define __bos_static_lt(n, e) __bos_static_lt2 (n, e, 1)
-+#define __bos0_static_lt2(n, e, s) __bos_static_lt_impl (__bos0 (e), n, s)
-+#define __bos0_static_lt(n, e) __bos0_static_lt2 (n, e, 1)
-+
- #if __GNUC_PREREQ (4,3)
- # define __warndecl(name, msg) \
-   extern void name (void) __attribute__((__warning__ (msg)))
-@@ -358,6 +497,29 @@
- # define __va_arg_pack_len() __builtin_va_arg_pack_len ()
- #endif
- 
-+#if defined(__use_clang_fortify)
-+/* clang doesn't support __va_arg_pack, so we need to call the v* version of
-+   FORTIFY'ed functions.  */
-+#define __FORTIFY_ARG_PACK __fortify_ap
-+#define __FORTIFY_INIT_ARG_PACK(va_arg) \
-+  __gnuc_va_list __FORTIFY_ARG_PACK; \
-+  va_start (__FORTIFY_ARG_PACK, va_arg)
-+#define __FORTIFY_CALL_VA_ALIAS(fn, ...) __v##fn##_alias (__VA_ARGS__)
-+#define __FORTIFY_CALL_VA_CHK(fn, ...) __v##fn##_chk (__VA_ARGS__)
-+#define __FORTIFY_CALL_VA_BUILTIN(fn, ...) \
-+  __builtin___v##fn##_chk (__VA_ARGS__)
-+#define __FORTIFY_FREE_ARG_PACK() va_end (__FORTIFY_ARG_PACK)
-+#define __FORTIFY_ARG_PACK_OK 1
-+#elif defined(__va_arg_pack)
-+#define __FORTIFY_ARG_PACK __va_arg_pack ()
-+#define __FORTIFY_INIT_ARG_PACK(va_arg)
-+#define __FORTIFY_CALL_VA_ALIAS(fn, ...) __##fn##_alias (__VA_ARGS__)
-+#define __FORTIFY_CALL_VA_CHK(fn, ...) __##fn##_chk (__VA_ARGS__)
-+#define __FORTIFY_CALL_VA_BUILTIN(fn, ...) __builtin___##fn##_chk (__VA_ARGS__)
-+#define __FORTIFY_FREE_ARG_PACK()
-+#define __FORTIFY_ARG_PACK_OK 1
-+#endif
-+
- /* It is possible to compile containing GCC extensions even if GCC is
-    run in pedantic mode if the uses are carefully marked using the
-    `__extension__' keyword.  But this is not generally available before
-diff --git a/posix/bits/unistd.h b/posix/bits/unistd.h
-index 9a749dccf8..4304966812 100644
---- a/posix/bits/unistd.h
-+++ b/posix/bits/unistd.h
-@@ -24,25 +24,19 @@ extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,
- 			   size_t __buflen) __wur;
- extern ssize_t __REDIRECT (__read_alias, (int __fd, void *__buf,
- 					  size_t __nbytes), read) __wur;
--extern ssize_t __REDIRECT (__read_chk_warn,
--			   (int __fd, void *__buf, size_t __nbytes,
--			    size_t __buflen), __read_chk)
--     __wur __warnattr ("read called with bigger length than size of "
--		       "the destination buffer");
- 
--__fortify_function __wur ssize_t
--read (int __fd, void *__buf, size_t __nbytes)
-+__fortify_potential_overload __wur ssize_t
-+read (int __fd, void *const __clang_pass_object_size0 __buf, size_t __nbytes)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS0_LT (__read_warn, __nbytes, __buf,
-+					"read called with bigger length than "
-+					"size of the destination buffer")
- {
--  if (__bos0 (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__nbytes))
--	return __read_chk (__fd, __buf, __nbytes, __bos0 (__buf));
--
--      if (__nbytes > __bos0 (__buf))
--	return __read_chk_warn (__fd, __buf, __nbytes, __bos0 (__buf));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos0 (__buf) != (size_t) -1)
-+    return __read_chk (__fd, __buf, __nbytes, __bos0 (__buf));
-   return __read_alias (__fd, __buf, __nbytes);
- }
-+__FORTIFY_FUNCTION_END
- 
- #ifdef __USE_UNIX98
- extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,
-@@ -55,67 +49,49 @@ extern ssize_t __REDIRECT (__pread_alias,
- extern ssize_t __REDIRECT (__pread64_alias,
- 			   (int __fd, void *__buf, size_t __nbytes,
- 			    __off64_t __offset), pread64) __wur;
--extern ssize_t __REDIRECT (__pread_chk_warn,
--			   (int __fd, void *__buf, size_t __nbytes,
--			    __off_t __offset, size_t __bufsize), __pread_chk)
--     __wur __warnattr ("pread called with bigger length than size of "
--		       "the destination buffer");
--extern ssize_t __REDIRECT (__pread64_chk_warn,
--			   (int __fd, void *__buf, size_t __nbytes,
--			    __off64_t __offset, size_t __bufsize),
--			    __pread64_chk)
--     __wur __warnattr ("pread64 called with bigger length than size of "
--		       "the destination buffer");
- 
- # ifndef __USE_FILE_OFFSET64
--__fortify_function __wur ssize_t
--pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
--{
--  if (__bos0 (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__nbytes))
--	return __pread_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
--
--      if ( __nbytes > __bos0 (__buf))
--	return __pread_chk_warn (__fd, __buf, __nbytes, __offset,
--				 __bos0 (__buf));
--    }
--  return __pread_alias (__fd, __buf, __nbytes, __offset);
--}
-+#  define __fo_pread_chk __pread_chk
-+#  define __fo_pread_alias __pread_alias
-+#  define __fo_off_t __off_t
- # else
--__fortify_function __wur ssize_t
--pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
--{
--  if (__bos0 (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__nbytes))
--	return __pread64_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
--
--      if ( __nbytes > __bos0 (__buf))
--	return __pread64_chk_warn (__fd, __buf, __nbytes, __offset,
--				   __bos0 (__buf));
--    }
--
--  return __pread64_alias (__fd, __buf, __nbytes, __offset);
--}
-+#  define __fo_pread_chk __pread64_chk
-+#  define __fo_pread_alias __pread64_alias
-+#  define __fo_off_t __off64_t
- # endif
- 
--# ifdef __USE_LARGEFILE64
--__fortify_function __wur ssize_t
--pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
-+__fortify_potential_overload __wur ssize_t
-+pread (int __fd, void *const __clang_pass_object_size0 __buf, size_t __nbytes,
-+       __fo_off_t __offset)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS0_LT (__pread_chk_warn, __nbytes, __buf,
-+					"pread called with bigger length than "
-+					"size of the destination buffer")
- {
--  if (__bos0 (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__nbytes))
--	return __pread64_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
-+  if (__FORTIFY_CALL_CHK && __bos0 (__buf) != (size_t) -1)
-+    return __fo_pread_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
-+  return __fo_pread_alias (__fd, __buf, __nbytes, __offset);
-+}
-+__FORTIFY_FUNCTION_END
- 
--      if ( __nbytes > __bos0 (__buf))
--	return __pread64_chk_warn (__fd, __buf, __nbytes, __offset,
--				   __bos0 (__buf));
--    }
-+#undef __fo_pread_chk
-+#undef __fo_pread_alias
-+#undef __fo_off_t
- 
-+# ifdef __USE_LARGEFILE64
-+__fortify_potential_overload __wur ssize_t
-+pread64 (int __fd, void *const __clang_pass_object_size0 __buf,
-+	  size_t __nbytes, __off64_t __offset)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS0_LT (__pread64_warn, __nbytes, __buf,
-+					"pread64 called with bigger length "
-+					"than size of the destination buffer")
-+{
-+  if (__FORTIFY_CALL_CHK && __bos0 (__buf) != (size_t) -1)
-+    return __pread64_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
-   return __pread64_alias (__fd, __buf, __nbytes, __offset);
- }
-+__FORTIFY_FUNCTION_END
- # endif
- #endif
- 
-@@ -128,27 +104,21 @@ extern ssize_t __REDIRECT_NTH (__readlink_alias,
- 			       (const char *__restrict __path,
- 				char *__restrict __buf, size_t __len), readlink)
-      __nonnull ((1, 2)) __wur;
--extern ssize_t __REDIRECT_NTH (__readlink_chk_warn,
--			       (const char *__restrict __path,
--				char *__restrict __buf, size_t __len,
--				size_t __buflen), __readlink_chk)
--     __nonnull ((1, 2)) __wur __warnattr ("readlink called with bigger length "
--					  "than size of destination buffer");
- 
--__fortify_function __nonnull ((1, 2)) __wur ssize_t
--__NTH (readlink (const char *__restrict __path, char *__restrict __buf,
-+__fortify_potential_overload __nonnull ((1, 2)) __wur ssize_t
-+__NTH (readlink (const char *__restrict __path,
-+		 char *__restrict const __clang_pass_object_size __buf,
- 		 size_t __len))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__readlink_warn, __len, __buf,
-+				       "readlink called with bigger length "
-+				       "than size of destination buffer")
- {
--  if (__bos (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__len))
--	return __readlink_chk (__path, __buf, __len, __bos (__buf));
--
--      if ( __len > __bos (__buf))
--	return __readlink_chk_warn (__path, __buf, __len, __bos (__buf));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
-+    return __readlink_chk (__path, __buf, __len, __bos (__buf));
-   return __readlink_alias (__path, __buf, __len);
- }
-+__FORTIFY_FUNCTION_END
- #endif
- 
- #ifdef __USE_ATFILE
-@@ -161,119 +131,104 @@ extern ssize_t __REDIRECT_NTH (__readlinkat_alias,
- 				char *__restrict __buf, size_t __len),
- 			       readlinkat)
-      __nonnull ((2, 3)) __wur;
--extern ssize_t __REDIRECT_NTH (__readlinkat_chk_warn,
--			       (int __fd, const char *__restrict __path,
--				char *__restrict __buf, size_t __len,
--				size_t __buflen), __readlinkat_chk)
--     __nonnull ((2, 3)) __wur __warnattr ("readlinkat called with bigger "
--					  "length than size of destination "
--					  "buffer");
--
--__fortify_function __nonnull ((2, 3)) __wur ssize_t
--__NTH (readlinkat (int __fd, const char *__restrict __path,
--		   char *__restrict __buf, size_t __len))
-+
-+__fortify_potential_overload __nonnull ((2, 3)) __wur ssize_t
-+__NTH (readlinkat (int __fd,
-+		   const char *__restrict __path,
-+		   char *__restrict const __clang_pass_object_size __buf,
-+		   size_t __len))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__readlinkat_warn, __len, __buf,
-+				       "readlinkat called with bigger length "
-+				       "than size of destination buffer")
- {
--  if (__bos (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__len))
--	return __readlinkat_chk (__fd, __path, __buf, __len, __bos (__buf));
--
--      if (__len > __bos (__buf))
--	return __readlinkat_chk_warn (__fd, __path, __buf, __len,
--				      __bos (__buf));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
-+    return __readlinkat_chk (__fd, __path, __buf, __len, __bos (__buf));
-   return __readlinkat_alias (__fd, __path, __buf, __len);
- }
-+__FORTIFY_FUNCTION_END
- #endif
- 
- extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
-      __THROW __wur;
- extern char *__REDIRECT_NTH (__getcwd_alias,
- 			     (char *__buf, size_t __size), getcwd) __wur;
--extern char *__REDIRECT_NTH (__getcwd_chk_warn,
--			     (char *__buf, size_t __size, size_t __buflen),
--			     __getcwd_chk)
--     __wur __warnattr ("getcwd caller with bigger length than size of "
--		       "destination buffer");
--
--__fortify_function __wur char *
--__NTH (getcwd (char *__buf, size_t __size))
--{
--  if (__bos (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__size))
--	return __getcwd_chk (__buf, __size, __bos (__buf));
- 
--      if (__size > __bos (__buf))
--	return __getcwd_chk_warn (__buf, __size, __bos (__buf));
--    }
-+__fortify_potential_overload __wur char *
-+__NTH (getcwd (char *const __clang_pass_object_size __buf, size_t __size))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__getcwd_warn, __size, __buf,
-+				       "getcwd called with bigger length than "
-+				       "size of destination buffer")
-+{
-+  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
-+    return __getcwd_chk (__buf, __size, __bos (__buf));
-   return __getcwd_alias (__buf, __size);
- }
-+__FORTIFY_FUNCTION_END
- 
- #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
-+# define __warn_getwd_use_something_else \
-+  "please use getcwd instead, as getwd doesn't specify buffer size"
-+
- extern char *__getwd_chk (char *__buf, size_t buflen)
-      __THROW __nonnull ((1)) __wur;
- extern char *__REDIRECT_NTH (__getwd_warn, (char *__buf), getwd)
--     __nonnull ((1)) __wur __warnattr ("please use getcwd instead, as getwd "
--				       "doesn't specify buffer size");
-+     __nonnull ((1)) __wur __warnattr (__warn_getwd_use_something_else);
- 
--__fortify_function __nonnull ((1)) __attribute_deprecated__ __wur char *
--__NTH (getwd (char *__buf))
-+extern char *__REDIRECT (__getwd_alias, (char *__str), getwd) __wur;
-+
-+__fortify_potential_overload __nonnull ((1)) __attribute_deprecated__ __wur
-+char *
-+__NTH (getwd (char *const __clang_pass_object_size __buf))
-+     __clang_warning_if (__bos (__buf) == (size_t) -1,
-+			 __warn_getwd_use_something_else)
- {
-   if (__bos (__buf) != (size_t) -1)
-     return __getwd_chk (__buf, __bos (__buf));
-   return __getwd_warn (__buf);
- }
-+# undef __warn_getwd_use_something_else
- #endif
- 
- extern size_t __confstr_chk (int __name, char *__buf, size_t __len,
- 			     size_t __buflen) __THROW;
- extern size_t __REDIRECT_NTH (__confstr_alias, (int __name, char *__buf,
- 						size_t __len), confstr);
--extern size_t __REDIRECT_NTH (__confstr_chk_warn,
--			      (int __name, char *__buf, size_t __len,
--			       size_t __buflen), __confstr_chk)
--     __warnattr ("confstr called with bigger length than size of destination "
--		 "buffer");
--
--__fortify_function size_t
--__NTH (confstr (int __name, char *__buf, size_t __len))
--{
--  if (__bos (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__len))
--	return __confstr_chk (__name, __buf, __len, __bos (__buf));
- 
--      if (__bos (__buf) < __len)
--	return __confstr_chk_warn (__name, __buf, __len, __bos (__buf));
--    }
-+__fortify_potential_overload size_t
-+__NTH (confstr (int __name, char *const __clang_pass_object_size __buf,
-+		size_t __len))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__confstr_warn, __len, __buf,
-+				       "confstr called with bigger length than "
-+				       "size of destination buffer")
-+{
-+  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
-+    return __confstr_chk (__name, __buf, __len, __bos (__buf));
-   return __confstr_alias (__name, __buf, __len);
- }
--
-+__FORTIFY_FUNCTION_END
- 
- extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen)
-      __THROW __wur;
- extern int __REDIRECT_NTH (__getgroups_alias, (int __size, __gid_t __list[]),
- 			   getgroups) __wur;
--extern int __REDIRECT_NTH (__getgroups_chk_warn,
--			   (int __size, __gid_t __list[], size_t __listlen),
--			   __getgroups_chk)
--     __wur __warnattr ("getgroups called with bigger group count than what "
--		       "can fit into destination buffer");
--
--__fortify_function int
--__NTH (getgroups (int __size, __gid_t __list[]))
-+
-+__fortify_potential_overload int
-+__NTH (getgroups (int __size, __gid_t *const __clang_pass_object_size __list))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__getgroups_warn,
-+				       __size * sizeof (__gid_t), __list,
-+				       "getgroups called with bigger group "
-+				       "count than what can fit into "
-+				       "destination buffer")
- {
--  if (__bos (__list) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__size) || __size < 0)
--	return __getgroups_chk (__size, __list, __bos (__list));
--
--      if (__size * sizeof (__gid_t) > __bos (__list))
--	return __getgroups_chk_warn (__size, __list, __bos (__list));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__list) != (size_t) -1)
-+    return __getgroups_chk (__size, __list, __bos (__list));
-   return __getgroups_alias (__size, __list);
- }
-+__FORTIFY_FUNCTION_END
- 
- 
- extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen,
-@@ -287,19 +242,19 @@ extern int __REDIRECT_NTH (__ttyname_r_chk_warn,
-      __nonnull ((2)) __warnattr ("ttyname_r called with bigger buflen than "
- 				 "size of destination buffer");
- 
--__fortify_function int
--__NTH (ttyname_r (int __fd, char *__buf, size_t __buflen))
-+__fortify_potential_overload int
-+__NTH (ttyname_r (int __fd, char *const __clang_pass_object_size __buf,
-+		  size_t __buflen))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__ttyname_r_warn, __buflen, __buf,
-+				       "ttyname_r called with bigger buflen "
-+				       "than size of destination buffer")
- {
--  if (__bos (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__buflen))
--	return __ttyname_r_chk (__fd, __buf, __buflen, __bos (__buf));
--
--      if (__buflen > __bos (__buf))
--	return __ttyname_r_chk_warn (__fd, __buf, __buflen, __bos (__buf));
--    }
--  return __ttyname_r_alias (__fd, __buf, __buflen);
--}
-+  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
-+    return __ttyname_r_chk (__fd, __buf, __buflen, __bos (__buf));
-+   return __ttyname_r_alias (__fd, __buf, __buflen);
-+ }
-+__FORTIFY_FUNCTION_END
- 
- 
- #ifdef __USE_POSIX199506
-@@ -307,25 +262,19 @@ extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)
-      __nonnull ((1));
- extern int __REDIRECT (__getlogin_r_alias, (char *__buf, size_t __buflen),
- 		       getlogin_r) __nonnull ((1));
--extern int __REDIRECT (__getlogin_r_chk_warn,
--		       (char *__buf, size_t __buflen, size_t __nreal),
--		       __getlogin_r_chk)
--     __nonnull ((1)) __warnattr ("getlogin_r called with bigger buflen than "
--				 "size of destination buffer");
- 
--__fortify_function int
--getlogin_r (char *__buf, size_t __buflen)
-+__fortify_potential_overload int
-+getlogin_r (char *const __clang_pass_object_size __buf, size_t __buflen)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__getlogin_r_warn, __buflen, __buf,
-+				       "getlogin_r called with bigger buflen "
-+				       "than size of destination buffer")
- {
--  if (__bos (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__buflen))
--	return __getlogin_r_chk (__buf, __buflen, __bos (__buf));
--
--      if (__buflen > __bos (__buf))
--	return __getlogin_r_chk_warn (__buf, __buflen, __bos (__buf));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
-+    return __getlogin_r_chk (__buf, __buflen, __bos (__buf));
-   return __getlogin_r_alias (__buf, __buflen);
- }
-+__FORTIFY_FUNCTION_END
- #endif
- 
- 
-@@ -334,25 +283,20 @@ extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal)
-      __THROW __nonnull ((1));
- extern int __REDIRECT_NTH (__gethostname_alias, (char *__buf, size_t __buflen),
- 			   gethostname) __nonnull ((1));
--extern int __REDIRECT_NTH (__gethostname_chk_warn,
--			   (char *__buf, size_t __buflen, size_t __nreal),
--			   __gethostname_chk)
--     __nonnull ((1)) __warnattr ("gethostname called with bigger buflen than "
--				 "size of destination buffer");
- 
--__fortify_function int
--__NTH (gethostname (char *__buf, size_t __buflen))
-+__fortify_potential_overload int
-+__NTH (gethostname (char *const __clang_pass_object_size __buf,
-+		    size_t __buflen))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__gethostname_warn, __buflen, __buf,
-+				       "gethostname called with bigger buflen "
-+				       "than size of destination buffer")
- {
--  if (__bos (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__buflen))
--	return __gethostname_chk (__buf, __buflen, __bos (__buf));
--
--      if (__buflen > __bos (__buf))
--	return __gethostname_chk_warn (__buf, __buflen, __bos (__buf));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
-+    return __gethostname_chk (__buf, __buflen, __bos (__buf));
-   return __gethostname_alias (__buf, __buflen);
- }
-+__FORTIFY_FUNCTION_END
- #endif
- 
- 
-@@ -362,24 +306,18 @@ extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal)
- extern int __REDIRECT_NTH (__getdomainname_alias, (char *__buf,
- 						   size_t __buflen),
- 			   getdomainname) __nonnull ((1)) __wur;
--extern int __REDIRECT_NTH (__getdomainname_chk_warn,
--			   (char *__buf, size_t __buflen, size_t __nreal),
--			   __getdomainname_chk)
--     __nonnull ((1)) __wur __warnattr ("getdomainname called with bigger "
--				       "buflen than size of destination "
--				       "buffer");
--
--__fortify_function int
--__NTH (getdomainname (char *__buf, size_t __buflen))
--{
--  if (__bos (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__buflen))
--	return __getdomainname_chk (__buf, __buflen, __bos (__buf));
- 
--      if (__buflen > __bos (__buf))
--	return __getdomainname_chk_warn (__buf, __buflen, __bos (__buf));
--    }
-+__fortify_potential_overload int
-+__NTH (getdomainname (char *const __clang_pass_object_size __buf,
-+		      size_t __buflen))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__getdomainname_warn, __buflen, __buf,
-+				       "getdomainname called with bigger "
-+				       "buflen than size of destination buffer")
-+{
-+  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
-+    return __getdomainname_chk (__buf, __buflen, __bos (__buf));
-   return __getdomainname_alias (__buf, __buflen);
- }
-+__FORTIFY_FUNCTION_END
- #endif
-diff --git a/rt/bits/mqueue2.h b/rt/bits/mqueue2.h
-index 7d84bda6af..95bf8d2c59 100644
---- a/rt/bits/mqueue2.h
-+++ b/rt/bits/mqueue2.h
-@@ -29,10 +29,47 @@ extern mqd_t __mq_open_2 (const char *__name, int __oflag)
- extern mqd_t __REDIRECT_NTH (__mq_open_alias, (const char *__name,
- 					       int __oflag, ...), mq_open)
-      __nonnull ((1));
-+
-+#define __warn_mq_open_wrong_number_of_args "mq_open can be called either " \
-+  "with 2 or 4 arguments"
-+#define __warn_mq_open_missing_mode_and_attr "mq_open with O_CREAT in " \
-+  "second argument needs 4 arguments"
-+#ifdef __use_clang_fortify
-+__fortify_overload __clang_error (__warn_mq_open_wrong_number_of_args) mqd_t
-+__NTH (mq_open (const char *const __clang_pass_object_size __name, int __oflag,
-+		int __mode))
-+{
-+  return __mq_open_alias (__name, __oflag, __mode);
-+}
-+
-+__fortify_overload __clang_error (__warn_mq_open_wrong_number_of_args)
-+mqd_t
-+__NTH (mq_open (const char *const __clang_pass_object_size __name, int __oflag,
-+		int __mode, struct mq_attr *__attr, ...))
-+{
-+  return __mq_open_alias (__name, __oflag, __mode, __attr);
-+}
-+
-+__fortify_overload __clang_prefer_this_overload mqd_t
-+__NTH (mq_open (const char *const __clang_pass_object_size __name,
-+		int __oflag))
-+     __clang_error_if ((__oflag & O_CREAT),
-+                       __warn_mq_open_missing_mode_and_attr)
-+{
-+  return __mq_open_alias (__name, __oflag);
-+}
-+
-+__fortify_overload __clang_prefer_this_overload mqd_t
-+__NTH (mq_open (const char *const __clang_pass_object_size __name, int __oflag,
-+		int __mode, struct mq_attr *__attr))
-+{
-+  return __mq_open_alias (__name, __oflag, __mode, __attr);
-+}
-+#else
- __errordecl (__mq_open_wrong_number_of_args,
--	     "mq_open can be called either with 2 or 4 arguments");
-+  __warn_mq_open_wrong_number_of_args);
- __errordecl (__mq_open_missing_mode_and_attr,
--	     "mq_open with O_CREAT in second argument needs 4 arguments");
-+  __warn_mq_open_missing_mode_and_attr);
- 
- __fortify_function mqd_t
- __NTH (mq_open (const char *__name, int __oflag, ...))
-@@ -55,3 +92,6 @@ __NTH (mq_open (const char *__name, int __oflag, ...))
- 
-   return __mq_open_alias (__name, __oflag, __va_arg_pack ());
- }
-+#endif
-+#undef __warn_mq_open_wrong_number_of_args
-+#undef __warn_mq_open_missing_mode_and_attr
-diff --git a/rt/mqueue.h b/rt/mqueue.h
-index 5f354b4d76..ecac01c407 100644
---- a/rt/mqueue.h
-+++ b/rt/mqueue.h
-@@ -89,7 +89,7 @@ extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
- 
- /* Define some inlines helping to catch common problems.  */
- #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function \
--    && defined __va_arg_pack_len
-+    && (defined __va_arg_pack_len || defined __use_clang_fortify)
- # include <bits/mqueue2.h>
- #endif
- 
-diff --git a/socket/bits/socket2.h b/socket/bits/socket2.h
-index a129e69735..f2063dd6d2 100644
---- a/socket/bits/socket2.h
-+++ b/socket/bits/socket2.h
-@@ -24,25 +24,20 @@ extern ssize_t __recv_chk (int __fd, void *__buf, size_t __n, size_t __buflen,
- 			   int __flags);
- extern ssize_t __REDIRECT (__recv_alias, (int __fd, void *__buf, size_t __n,
- 					  int __flags), recv);
--extern ssize_t __REDIRECT (__recv_chk_warn,
--			   (int __fd, void *__buf, size_t __n, size_t __buflen,
--			    int __flags), __recv_chk)
--     __warnattr ("recv called with bigger length than size of destination "
--		 "buffer");
- 
--__fortify_function ssize_t
--recv (int __fd, void *__buf, size_t __n, int __flags)
-+__fortify_potential_overload ssize_t
-+recv (int __fd, void *const __clang_pass_object_size0 __buf, size_t __n,
-+      int __flags)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS0_LT (__recv_warn, __n, __buf,
-+					"recv called with bigger length than "
-+					"size of destination buffer")
- {
--  if (__bos0 (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n))
--	return __recv_chk (__fd, __buf, __n, __bos0 (__buf), __flags);
--
--      if (__n > __bos0 (__buf))
--	return __recv_chk_warn (__fd, __buf, __n, __bos0 (__buf), __flags);
--    }
-+  if (__FORTIFY_CALL_CHK && __bos0 (__buf) != (size_t) -1)
-+    return __recv_chk (__fd, __buf, __n, __bos0 (__buf), __flags);
-   return __recv_alias (__fd, __buf, __n, __flags);
- }
-+__FORTIFY_FUNCTION_END
- 
- extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n,
- 			       size_t __buflen, int __flags,
-@@ -52,26 +47,19 @@ extern ssize_t __REDIRECT (__recvfrom_alias,
- 			   (int __fd, void *__restrict __buf, size_t __n,
- 			    int __flags, __SOCKADDR_ARG __addr,
- 			    socklen_t *__restrict __addr_len), recvfrom);
--extern ssize_t __REDIRECT (__recvfrom_chk_warn,
--			   (int __fd, void *__restrict __buf, size_t __n,
--			    size_t __buflen, int __flags,
--			    __SOCKADDR_ARG __addr,
--			    socklen_t *__restrict __addr_len), __recvfrom_chk)
--     __warnattr ("recvfrom called with bigger length than size of "
--		 "destination buffer");
- 
--__fortify_function ssize_t
--recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags,
--	  __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len)
-+__fortify_potential_overload ssize_t
-+recvfrom (int __fd, void *__restrict const __clang_pass_object_size0 __buf,
-+	  size_t __n, int __flags, __SOCKADDR_ARG __addr,
-+	  socklen_t *__restrict __addr_len)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS0_LT (__recvfrom_warn, __n, __buf,
-+					"recvfrom called with bigger length "
-+					"than size of destination buffer")
- {
--  if (__bos0 (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n))
--	return __recvfrom_chk (__fd, __buf, __n, __bos0 (__buf), __flags,
--			       __addr, __addr_len);
--      if (__n > __bos0 (__buf))
--	return __recvfrom_chk_warn (__fd, __buf, __n, __bos0 (__buf), __flags,
--				    __addr, __addr_len);
--    }
-+  if (__FORTIFY_CALL_CHK && __bos0 (__buf) != (size_t) -1)
-+    return __recvfrom_chk (__fd, __buf, __n, __bos0 (__buf), __flags, __addr,
-+			   __addr_len);
-   return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len);
- }
-+__FORTIFY_FUNCTION_END
-diff --git a/stdlib/bits/stdlib.h b/stdlib/bits/stdlib.h
-index 53c379b99a..3c54273171 100644
---- a/stdlib/bits/stdlib.h
-+++ b/stdlib/bits/stdlib.h
-@@ -26,27 +26,27 @@ extern char *__realpath_chk (const char *__restrict __name,
- extern char *__REDIRECT_NTH (__realpath_alias,
- 			     (const char *__restrict __name,
- 			      char *__restrict __resolved), realpath) __wur;
--extern char *__REDIRECT_NTH (__realpath_chk_warn,
--			     (const char *__restrict __name,
--			      char *__restrict __resolved,
--			      size_t __resolvedlen), __realpath_chk) __wur
--     __warnattr ("second argument of realpath must be either NULL or at "
--		 "least PATH_MAX bytes long buffer");
- 
--__fortify_function __wur char *
--__NTH (realpath (const char *__restrict __name, char *__restrict __resolved))
-+__fortify_potential_overload __wur char *
-+__NTH (realpath (const char *__restrict __name,
-+		 char *__restrict const __clang_pass_object_size __resolved))
-+__FORTIFY_PRECONDITIONS
-+#if defined _LIBC_LIMITS_H_ && defined PATH_MAX
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__realpath_warn, PATH_MAX, __resolved,
-+				       "second argument of realpath must be "
-+				       "either NULL or at least PATH_MAX "
-+				       "bytes long buffer")
-+#endif
- {
--  if (__bos (__resolved) != (size_t) -1)
--    {
-+  if (
- #if defined _LIBC_LIMITS_H_ && defined PATH_MAX
--      if (__bos (__resolved) < PATH_MAX)
--	return __realpath_chk_warn (__name, __resolved, __bos (__resolved));
-+      __FORTIFY_CALL_CHK &&
- #endif
--      return __realpath_chk (__name, __resolved, __bos (__resolved));
--    }
--
-+      __bos (__resolved) != (size_t) -1)
-+    return __realpath_chk (__name, __resolved, __bos (__resolved));
-   return __realpath_alias (__name, __resolved);
- }
-+__FORTIFY_FUNCTION_END
- 
- 
- extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
-@@ -54,33 +54,28 @@ extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
- extern int __REDIRECT_NTH (__ptsname_r_alias, (int __fd, char *__buf,
- 					       size_t __buflen), ptsname_r)
-      __nonnull ((2));
--extern int __REDIRECT_NTH (__ptsname_r_chk_warn,
--			   (int __fd, char *__buf, size_t __buflen,
--			    size_t __nreal), __ptsname_r_chk)
--     __nonnull ((2)) __warnattr ("ptsname_r called with buflen bigger than "
--				 "size of buf");
--
--__fortify_function int
--__NTH (ptsname_r (int __fd, char *__buf, size_t __buflen))
-+
-+__fortify_potential_overload int
-+__NTH (ptsname_r (int __fd, char *const __clang_pass_object_size __buf,
-+		  size_t __buflen))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__ptsname_r_warn, __buflen, __buf,
-+				       "ptsname_r called with buflen "
-+				       "bigger than size of buf")
- {
--  if (__bos (__buf) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__buflen))
--	return __ptsname_r_chk (__fd, __buf, __buflen, __bos (__buf));
--      if (__buflen > __bos (__buf))
--	return __ptsname_r_chk_warn (__fd, __buf, __buflen, __bos (__buf));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
-+    return __ptsname_r_chk (__fd, __buf, __buflen, __bos (__buf));
-   return __ptsname_r_alias (__fd, __buf, __buflen);
- }
--
-+__FORTIFY_FUNCTION_END
- 
- extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
-   __THROW __wur;
- extern int __REDIRECT_NTH (__wctomb_alias, (char *__s, wchar_t __wchar),
- 			   wctomb) __wur;
- 
--__fortify_function __wur int
--__NTH (wctomb (char *__s, wchar_t __wchar))
-+__fortify_potential_overload __wur int
-+__NTH (wctomb (char *const __clang_pass_object_size __s, wchar_t __wchar))
- {
-   /* We would have to include <limits.h> to get a definition of MB_LEN_MAX.
-      But this would only disturb the namespace.  So we define our own
-@@ -102,29 +97,22 @@ extern size_t __REDIRECT_NTH (__mbstowcs_alias,
- 			      (wchar_t *__restrict __dst,
- 			       const char *__restrict __src,
- 			       size_t __len), mbstowcs);
--extern size_t __REDIRECT_NTH (__mbstowcs_chk_warn,
--			      (wchar_t *__restrict __dst,
--			       const char *__restrict __src,
--			       size_t __len, size_t __dstlen), __mbstowcs_chk)
--     __warnattr ("mbstowcs called with dst buffer smaller than len "
--		 "* sizeof (wchar_t)");
- 
--__fortify_function size_t
--__NTH (mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src,
--		 size_t __len))
-+__fortify_potential_overload size_t
-+__NTH (mbstowcs (wchar_t *__restrict const __clang_pass_object_size __dst,
-+		 const char *__restrict __src, size_t __len))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__mbstowcs_warn, __len, __dst,
-+					sizeof (wchar_t),
-+					"mbstowcs called with dst buffer "
-+					"smaller than len * sizeof (wchar_t)")
- {
--  if (__bos (__dst) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__len))
--	return __mbstowcs_chk (__dst, __src, __len,
--			       __bos (__dst) / sizeof (wchar_t));
--
--      if (__len > __bos (__dst) / sizeof (wchar_t))
--	return __mbstowcs_chk_warn (__dst, __src, __len,
--				     __bos (__dst) / sizeof (wchar_t));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
-+    return __mbstowcs_chk (__dst, __src, __len,
-+			   __bos (__dst) / sizeof (wchar_t));
-   return __mbstowcs_alias (__dst, __src, __len);
- }
-+__FORTIFY_FUNCTION_END
- 
- 
- extern size_t __wcstombs_chk (char *__restrict __dst,
-@@ -134,22 +122,17 @@ extern size_t __REDIRECT_NTH (__wcstombs_alias,
- 			      (char *__restrict __dst,
- 			       const wchar_t *__restrict __src,
- 			       size_t __len), wcstombs);
--extern size_t __REDIRECT_NTH (__wcstombs_chk_warn,
--			      (char *__restrict __dst,
--			       const wchar_t *__restrict __src,
--			       size_t __len, size_t __dstlen), __wcstombs_chk)
--     __warnattr ("wcstombs called with dst buffer smaller than len");
- 
--__fortify_function size_t
--__NTH (wcstombs (char *__restrict __dst, const wchar_t *__restrict __src,
--		 size_t __len))
-+__fortify_potential_overload size_t
-+__NTH (wcstombs (char *__restrict const __clang_pass_object_size __dst,
-+		 const wchar_t *__restrict __src, size_t __len))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__wcstombs_warn, __len, __dst,
-+				       "wcstombs called with dst buffer "
-+				       "smaller than len")
- {
--  if (__bos (__dst) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__len))
--	return __wcstombs_chk (__dst, __src, __len, __bos (__dst));
--      if (__len > __bos (__dst))
--	return __wcstombs_chk_warn (__dst, __src, __len, __bos (__dst));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
-+    return __wcstombs_chk (__dst, __src, __len, __bos (__dst));
-   return __wcstombs_alias (__dst, __src, __len);
- }
-+__FORTIFY_FUNCTION_END
-diff --git a/string/bits/string_fortified.h b/string/bits/string_fortified.h
-index a07ab0dbc8..7b16afafe7 100644
---- a/string/bits/string_fortified.h
-+++ b/string/bits/string_fortified.h
-@@ -22,45 +22,82 @@
- # error "Never use <bits/string_fortified.h> directly; include <string.h> instead."
- #endif
- 
--#if !__GNUC_PREREQ (5,0)
--__warndecl (__warn_memset_zero_len,
--	    "memset used with constant zero length parameter; this could be due to transposed parameters");
--#endif
--
--__fortify_function void *
--__NTH (memcpy (void *__restrict __dest, const void *__restrict __src,
--	       size_t __len))
-+#define __warn_len_too_large \
-+  "function called with bigger length than the destination buffer"
-+/* Repeat bodies here to reduce 'note's if we detect a problem.  */
-+#define __size_too_small(bos, dest, len) \
-+  (bos (dest) != (size_t) -1 && bos (dest) < len)
-+#define __warn_if_dest_too_small(dest, len) \
-+  __clang_warning_if (__size_too_small (__bos, dest, len), \
-+					__warn_len_too_large)
-+#define __warn_if_dest_too_small0(dest, len) \
-+  __clang_warning_if (__size_too_small (__bos0, dest, len), \
-+					__warn_len_too_large)
-+
-+#define __warn_input_str_too_large \
-+  "destination buffer will always be overflown by source"
-+#define __warn_if_src_too_large(dest, src) \
-+  __clang_warning_if (__size_too_small (__bos, dest, __builtin_strlen (src) + 1), \
-+		      __warn_input_str_too_large)
-+
-+__fortify_potential_overload void *
-+__NTH (memcpy (void *__restrict const __clang_pass_object_size0 __dest,
-+	       const void *__restrict __src, size_t __len))
-+     __warn_if_dest_too_small0 (__dest, __len)
- {
--  return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
-+  size_t __bos_dst = __bos0 (__dest);
-+  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
-+				   && __bos_dst >= __len))
-+    return __builtin_memcpy (__dest, __src, __len);
-+  return __builtin___memcpy_chk (__dest, __src, __len, __bos_dst);
- }
- 
--__fortify_function void *
--__NTH (memmove (void *__dest, const void *__src, size_t __len))
-+__fortify_potential_overload void *
-+__NTH (memmove (void *const __clang_pass_object_size0 __dest,
-+		const void *__src, size_t __len))
-+     __warn_if_dest_too_small0 (__dest, __len)
- {
--  return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
-+  size_t __bos_dst = __bos0 (__dest);
-+  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
-+				   && __bos_dst >= __len))
-+    return __builtin_memmove (__dest, __src, __len);
-+  return __builtin___memmove_chk (__dest, __src, __len, __bos_dst);
- }
- 
- #ifdef __USE_GNU
--__fortify_function void *
--__NTH (mempcpy (void *__restrict __dest, const void *__restrict __src,
--		size_t __len))
-+__fortify_potential_overload void *
-+__NTH (mempcpy (void *__restrict const __clang_pass_object_size0 __dest,
-+		const void *__restrict __src, size_t __len))
-+     __warn_if_dest_too_small0 (__dest, __len)
- {
--  return __builtin___mempcpy_chk (__dest, __src, __len, __bos0 (__dest));
-+  size_t __bos_dst = __bos0 (__dest);
-+  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
-+				   && __bos_dst >= __len))
-+    return __builtin_mempcpy (__dest, __src, __len);
-+  return __builtin___mempcpy_chk (__dest, __src, __len, __bos_dst);
- }
- #endif
- 
--
- /* The first two tests here help to catch a somewhat common problem
-    where the second and third parameter are transposed.  This is
-    especially problematic if the intended fill value is zero.  In this
-    case no work is done at all.  We detect these problems by referring
-    non-existing functions.  */
--__fortify_function void *
--__NTH (memset (void *__dest, int __ch, size_t __len))
-+#define __warn_memset_zero_len_msg \
-+  "memset used with constant zero length parameter; this could be due to " \
-+  "transposed parameters"
-+#if !__GNUC_PREREQ (5,0)
-+__warndecl (__warn_memset_zero_len, __warn_memset_zero_len_msg);
-+#endif
-+__fortify_potential_overload void *
-+__NTH (memset (void *const __clang_pass_object_size0 __dest, int __ch,
-+	       size_t __len))
-+     __warn_if_dest_too_small0 (__dest, __len)
-+     __clang_warning_if (__len == 0 && __ch != 0, __warn_memset_zero_len_msg)
- {
-   /* GCC-5.0 and newer implements these checks in the compiler, so we don't
-      need them here.  */
--#if !__GNUC_PREREQ (5,0)
-+#if !__GNUC_PREREQ (5,0) && !defined __use_clang_fortify
-   if (__builtin_constant_p (__len) && __len == 0
-       && (!__builtin_constant_p (__ch) || __ch != 0))
-     {
-@@ -68,8 +105,13 @@ __NTH (memset (void *__dest, int __ch, size_t __len))
-       return __dest;
-     }
- #endif
--  return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
-+  size_t __bos_dst = __bos0 (__dest);
-+  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
-+				   && __bos_dst >= __len))
-+    return __builtin_memset (__dest, __ch, __len);
-+  return __builtin___memset_chk (__dest, __ch, __len, __bos_dst);
- }
-+#undef __warn_memset_zero_len_msg
- 
- #ifdef __USE_MISC
- # include <bits/strings_fortified.h>
-@@ -84,24 +126,30 @@ __NTH (explicit_bzero (void *__dest, size_t __len))
- }
- #endif
- 
--__fortify_function char *
--__NTH (strcpy (char *__restrict __dest, const char *__restrict __src))
-+__fortify_potential_overload char *
-+__NTH (strcpy (char *__restrict const __clang_pass_object_size __dest,
-+	       const char *__restrict __src))
-+     __warn_if_src_too_large (__dest, __src)
- {
-   return __builtin___strcpy_chk (__dest, __src, __bos (__dest));
- }
- 
- #ifdef __USE_GNU
--__fortify_function char *
--__NTH (stpcpy (char *__restrict __dest, const char *__restrict __src))
-+__fortify_potential_overload char *
-+__NTH (stpcpy (char *__restrict const __clang_pass_object_size __dest,
-+	       const char *__restrict __src))
-+     __warn_if_src_too_large (__dest, __src)
- {
-   return __builtin___stpcpy_chk (__dest, __src, __bos (__dest));
- }
- #endif
- 
--
--__fortify_function char *
--__NTH (strncpy (char *__restrict __dest, const char *__restrict __src,
--		size_t __len))
-+__fortify_potential_overload char *
-+__NTH (strncpy (char *__restrict const __clang_pass_object_size __dest,
-+		const char *__restrict __src, size_t __len))
-+/* clang: Don't warn when __builtin_strlen (__src) < __bos (__dest),
-+   but __len > __bos (__dest).  The user should fix their code instead.  */
-+     __warn_if_dest_too_small (__dest, __len)
- {
-   return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
- }
-@@ -112,28 +160,36 @@ extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n,
- extern char *__REDIRECT_NTH (__stpncpy_alias, (char *__dest, const char *__src,
- 					       size_t __n), stpncpy);
- 
--__fortify_function char *
--__NTH (stpncpy (char *__dest, const char *__src, size_t __n))
-+__fortify_potential_overload char *
-+__NTH (stpncpy (char *const __clang_pass_object_size __dest, const char *__src,
-+		size_t __n))
-+     __warn_if_dest_too_small (__dest, __n)
- {
--  if (__bos (__dest) != (size_t) -1
--      && (!__builtin_constant_p (__n) || __n > __bos (__dest)))
-+  if (__bos (__dest) != (size_t) -1)
-     return __stpncpy_chk (__dest, __src, __n, __bos (__dest));
-   return __stpncpy_alias (__dest, __src, __n);
- }
- 
--
--__fortify_function char *
--__NTH (strcat (char *__restrict __dest, const char *__restrict __src))
-+__fortify_potential_overload char *
-+__NTH (strcat (char *__restrict const __clang_pass_object_size __dest,
-+	       const char *__restrict __src))
-+     __warn_if_src_too_large (__dest, __src)
- {
-   return __builtin___strcat_chk (__dest, __src, __bos (__dest));
- }
- 
--
--__fortify_function char *
--__NTH (strncat (char *__restrict __dest, const char *__restrict __src,
--		size_t __len))
-+__fortify_potential_overload char *
-+__NTH (strncat (char *__restrict const __clang_pass_object_size __dest,
-+		const char *__restrict __src, size_t __len))
-+     __warn_if_src_too_large (__dest, __src)
- {
-   return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
- }
- 
-+#undef __warn_len_too_large
-+#undef __size_too_small
-+#undef __warn_if_dest_too_small
-+#undef __warn_if_dest_too_small0
-+#undef __warn_input_str_too_large
-+#undef __warn_if_src_too_large
- #endif /* bits/string_fortified.h */
-diff --git a/string/bits/strings_fortified.h b/string/bits/strings_fortified.h
-index d9b2804525..e910d289aa 100644
---- a/string/bits/strings_fortified.h
-+++ b/string/bits/strings_fortified.h
-@@ -19,16 +19,40 @@
- #ifndef __STRINGS_FORTIFIED
- # define __STRINGS_FORTIFIED 1
- 
--__fortify_function void
--__NTH (bcopy (const void *__src, void *__dest, size_t __len))
-+#define __strings_warn_len_too_large \
-+  "function called with bigger length than the destination buffer"
-+
-+#define __strings_size_too_small(dest, len) \
-+  (__bos0 (dest) != (size_t) -1 && __bos0 (dest) < len)
-+
-+__fortify_potential_overload void
-+__NTH (bcopy (const void *__src, void *const __clang_pass_object_size0 __dest,
-+	      size_t __len))
-+     __clang_warning_if (__strings_size_too_small (__dest, __len),
-+			 __strings_warn_len_too_large)
- {
--  (void) __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
-+  size_t __bos_dst = __bos0 (__dest);
-+  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
-+				   && __bos_dst >= __len))
-+    (void) __builtin_memmove (__dest, __src, __len);
-+  else
-+    (void) __builtin___memmove_chk (__dest, __src, __len, __bos_dst);
- }
- 
--__fortify_function void
--__NTH (bzero (void *__dest, size_t __len))
-+__fortify_potential_overload void
-+__NTH (bzero (void *const __clang_pass_object_size0 __dest, size_t __len))
-+     __clang_warning_if (__strings_size_too_small (__dest, __len),
-+			 __strings_warn_len_too_large)
- {
--  (void) __builtin___memset_chk (__dest, '\0', __len, __bos0 (__dest));
-+  size_t __bos_dst = __bos0 (__dest);
-+  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
-+				   && __bos_dst >= __len))
-+    (void) __builtin_memset (__dest, '\0', __len);
-+  else
-+    (void) __builtin___memset_chk (__dest, '\0', __len, __bos_dst);
- }
- 
-+
-+#undef __strings_size_too_small
-+#undef __strings_warn_len_too_large
- #endif
-diff --git a/wcsmbs/bits/wchar2.h b/wcsmbs/bits/wchar2.h
-index d62b86de3e..d1d9ecc6a8 100644
---- a/wcsmbs/bits/wchar2.h
-+++ b/wcsmbs/bits/wchar2.h
-@@ -20,7 +20,6 @@
- # error "Never include <bits/wchar2.h> directly; use <wchar.h> instead."
- #endif
- 
--
- extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1,
- 			       const wchar_t *__restrict __s2, size_t __n,
- 			       size_t __ns1) __THROW;
-@@ -28,57 +27,42 @@ extern wchar_t *__REDIRECT_NTH (__wmemcpy_alias,
- 				(wchar_t *__restrict __s1,
- 				 const wchar_t *__restrict __s2, size_t __n),
- 				wmemcpy);
--extern wchar_t *__REDIRECT_NTH (__wmemcpy_chk_warn,
--				(wchar_t *__restrict __s1,
--				 const wchar_t *__restrict __s2, size_t __n,
--				 size_t __ns1), __wmemcpy_chk)
--     __warnattr ("wmemcpy called with length bigger than size of destination "
--		 "buffer");
- 
--__fortify_function wchar_t *
--__NTH (wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2,
--		size_t __n))
-+__fortify_potential_overload wchar_t *
-+__NTH (wmemcpy (wchar_t *__restrict const __clang_pass_object_size0 __s1,
-+	      const wchar_t *__restrict __s2, size_t __n))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS0_LT2 (__wmemcpy_warn, __n, __s1,
-+					 sizeof (wchar_t),
-+					 "wmemcpy called with length bigger "
-+					 "than size of destination buffer")
- {
--  if (__bos0 (__s1) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n))
--	return __wmemcpy_chk (__s1, __s2, __n,
--			      __bos0 (__s1) / sizeof (wchar_t));
--
--      if (__n > __bos0 (__s1) / sizeof (wchar_t))
--	return __wmemcpy_chk_warn (__s1, __s2, __n,
--				   __bos0 (__s1) / sizeof (wchar_t));
--    }
--  return __wmemcpy_alias (__s1, __s2, __n);
-+  if (__FORTIFY_CALL_CHK && __bos0 (__s1) != (size_t)-1)
-+    return __wmemcpy_chk(__s1, __s2, __n, __bos0(__s1) / sizeof (wchar_t));
-+  return __wmemcpy_alias(__s1, __s2, __n);
- }
--
-+__FORTIFY_FUNCTION_END
- 
- extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2,
- 				size_t __n, size_t __ns1) __THROW;
- extern wchar_t *__REDIRECT_NTH (__wmemmove_alias, (wchar_t *__s1,
- 						   const wchar_t *__s2,
- 						   size_t __n), wmemmove);
--extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn,
--				(wchar_t *__s1, const wchar_t *__s2,
--				 size_t __n, size_t __ns1), __wmemmove_chk)
--     __warnattr ("wmemmove called with length bigger than size of destination "
--		 "buffer");
--
--__fortify_function wchar_t *
--__NTH (wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n))
-+
-+__fortify_potential_overload wchar_t *
-+__NTH (wmemmove (wchar_t *const __clang_pass_object_size0 __s1,
-+		 const wchar_t *__s2, size_t __n))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS0_LT2 (__wmemmove_warn, __n, __s1,
-+					 sizeof (wchar_t),
-+					 "wmemmove called with length bigger "
-+					 "than size of destination buffer")
- {
--  if (__bos0 (__s1) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n))
--	return __wmemmove_chk (__s1, __s2, __n,
--			       __bos0 (__s1) / sizeof (wchar_t));
--
--      if (__n > __bos0 (__s1) / sizeof (wchar_t))
--	return __wmemmove_chk_warn (__s1, __s2, __n,
--				    __bos0 (__s1) / sizeof (wchar_t));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos0 (__s1) != (size_t) -1)
-+    return __wmemmove_chk (__s1, __s2, __n, __bos0 (__s1) / sizeof (wchar_t));
-   return __wmemmove_alias (__s1, __s2, __n);
- }
-+__FORTIFY_FUNCTION_END
- 
- 
- #ifdef __USE_GNU
-@@ -89,29 +73,21 @@ extern wchar_t *__REDIRECT_NTH (__wmempcpy_alias,
- 				(wchar_t *__restrict __s1,
- 				 const wchar_t *__restrict __s2,
- 				 size_t __n), wmempcpy);
--extern wchar_t *__REDIRECT_NTH (__wmempcpy_chk_warn,
--				(wchar_t *__restrict __s1,
--				 const wchar_t *__restrict __s2, size_t __n,
--				 size_t __ns1), __wmempcpy_chk)
--     __warnattr ("wmempcpy called with length bigger than size of destination "
--		 "buffer");
--
--__fortify_function wchar_t *
--__NTH (wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2,
--		 size_t __n))
-+
-+__fortify_potential_overload wchar_t *
-+__NTH(wmempcpy(wchar_t *__restrict const __clang_pass_object_size0 __s1,
-+               const wchar_t *__restrict __s2, size_t __n))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS0_LT2 (__wmempcpy_warn, __n, __s1,
-+					 sizeof (wchar_t),
-+					 "wmempcpy called with length bigger "
-+					 "than size of destination buffer")
- {
--  if (__bos0 (__s1) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n))
--	return __wmempcpy_chk (__s1, __s2, __n,
--			       __bos0 (__s1) / sizeof (wchar_t));
--
--      if (__n > __bos0 (__s1) / sizeof (wchar_t))
--	return __wmempcpy_chk_warn (__s1, __s2, __n,
--				    __bos0 (__s1) / sizeof (wchar_t));
--    }
--  return __wmempcpy_alias (__s1, __s2, __n);
-+  if (__FORTIFY_CALL_CHK && __bos0 (__s1) != (size_t)-1)
-+    return __wmempcpy_chk(__s1, __s2, __n, __bos0(__s1) / sizeof (wchar_t));
-+  return __wmempcpy_alias(__s1, __s2, __n);
- }
-+__FORTIFY_FUNCTION_END
- #endif
- 
- 
-@@ -119,26 +95,21 @@ extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n,
- 			       size_t __ns) __THROW;
- extern wchar_t *__REDIRECT_NTH (__wmemset_alias, (wchar_t *__s, wchar_t __c,
- 						  size_t __n), wmemset);
--extern wchar_t *__REDIRECT_NTH (__wmemset_chk_warn,
--				(wchar_t *__s, wchar_t __c, size_t __n,
--				 size_t __ns), __wmemset_chk)
--     __warnattr ("wmemset called with length bigger than size of destination "
--		 "buffer");
--
--__fortify_function wchar_t *
--__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n))
-+
-+__fortify_potential_overload wchar_t *
-+__NTH (wmemset (wchar_t *const __clang_pass_object_size0 __s, wchar_t __c,
-+		size_t __n))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS0_LT2 (__wmemset_warn, __n, __s,
-+					 sizeof (wchar_t),
-+					 "wmemset called with length bigger "
-+					 "than size of destination buffer")
- {
--  if (__bos0 (__s) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n))
--	return __wmemset_chk (__s, __c, __n, __bos0 (__s) / sizeof (wchar_t));
--
--      if (__n > __bos0 (__s) / sizeof (wchar_t))
--	return __wmemset_chk_warn (__s, __c, __n,
--				   __bos0 (__s) / sizeof (wchar_t));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos0 (__s) != (size_t) -1)
-+    return __wmemset_chk (__s, __c, __n, __bos0 (__s) / sizeof (wchar_t));
-   return __wmemset_alias (__s, __c, __n);
- }
-+__FORTIFY_FUNCTION_END
- 
- 
- extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest,
-@@ -148,8 +119,9 @@ extern wchar_t *__REDIRECT_NTH (__wcscpy_alias,
- 				(wchar_t *__restrict __dest,
- 				 const wchar_t *__restrict __src), wcscpy);
- 
--__fortify_function wchar_t *
--__NTH (wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
-+__fortify_potential_overload wchar_t *
-+__NTH (wcscpy (wchar_t *__restrict const __clang_pass_object_size __dest,
-+	       const wchar_t *__restrict __src))
- {
-   if (__bos (__dest) != (size_t) -1)
-     return __wcscpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t));
-@@ -164,8 +136,9 @@ extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias,
- 				(wchar_t *__restrict __dest,
- 				 const wchar_t *__restrict __src), wcpcpy);
- 
--__fortify_function wchar_t *
--__NTH (wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
-+__fortify_potential_overload wchar_t *
-+__NTH (wcpcpy (wchar_t *__restrict const __clang_pass_object_size __dest,
-+	       const wchar_t *__restrict __src))
- {
-   if (__bos (__dest) != (size_t) -1)
-     return __wcpcpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t));
-@@ -180,28 +153,22 @@ extern wchar_t *__REDIRECT_NTH (__wcsncpy_alias,
- 				(wchar_t *__restrict __dest,
- 				 const wchar_t *__restrict __src,
- 				 size_t __n), wcsncpy);
--extern wchar_t *__REDIRECT_NTH (__wcsncpy_chk_warn,
--				(wchar_t *__restrict __dest,
--				 const wchar_t *__restrict __src,
--				 size_t __n, size_t __destlen), __wcsncpy_chk)
--     __warnattr ("wcsncpy called with length bigger than size of destination "
--		 "buffer");
- 
--__fortify_function wchar_t *
--__NTH (wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
--		size_t __n))
-+__fortify_potential_overload wchar_t *
-+__NTH (wcsncpy (wchar_t *__restrict const __clang_pass_object_size __dest,
-+		const wchar_t *__restrict __src, size_t __n))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__wcsncpy_warn, __n, __dest,
-+					sizeof (wchar_t),
-+					"wcsncpy called with length bigger "
-+					"than size of destination buffer")
- {
--  if (__bos (__dest) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n))
--	return __wcsncpy_chk (__dest, __src, __n,
--			      __bos (__dest) / sizeof (wchar_t));
--      if (__n > __bos (__dest) / sizeof (wchar_t))
--	return __wcsncpy_chk_warn (__dest, __src, __n,
--				   __bos (__dest) / sizeof (wchar_t));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__dest) != (size_t) -1)
-+    return __wcsncpy_chk (__dest, __src, __n,
-+			  __bos (__dest) / sizeof (wchar_t));
-   return __wcsncpy_alias (__dest, __src, __n);
- }
-+__FORTIFY_FUNCTION_END
- 
- 
- extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest,
-@@ -211,29 +178,22 @@ extern wchar_t *__REDIRECT_NTH (__wcpncpy_alias,
- 				(wchar_t *__restrict __dest,
- 				 const wchar_t *__restrict __src,
- 				 size_t __n), wcpncpy);
--extern wchar_t *__REDIRECT_NTH (__wcpncpy_chk_warn,
--				(wchar_t *__restrict __dest,
--				 const wchar_t *__restrict __src,
--				 size_t __n, size_t __destlen), __wcpncpy_chk)
--     __warnattr ("wcpncpy called with length bigger than size of destination "
--		 "buffer");
- 
--__fortify_function wchar_t *
--__NTH (wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
--		size_t __n))
-+__fortify_potential_overload wchar_t *
-+__NTH (wcpncpy (wchar_t *__restrict const __clang_pass_object_size __dest,
-+		const wchar_t *__restrict __src, size_t __n))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__wcpncpy_warn, __n, __dest,
-+					sizeof (wchar_t),
-+					"wcpncpy called with length bigger "
-+					"than size of destination buffer")
- {
--  if (__bos (__dest) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n))
--	return __wcpncpy_chk (__dest, __src, __n,
--			      __bos (__dest) / sizeof (wchar_t));
--      if (__n > __bos (__dest) / sizeof (wchar_t))
--	return __wcpncpy_chk_warn (__dest, __src, __n,
--				   __bos (__dest) / sizeof (wchar_t));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__dest) != (size_t) -1)
-+    return __wcpncpy_chk (__dest, __src, __n,
-+			  __bos (__dest) / sizeof (wchar_t));
-   return __wcpncpy_alias (__dest, __src, __n);
- }
--
-+__FORTIFY_FUNCTION_END
- 
- extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest,
- 			      const wchar_t *__restrict __src,
-@@ -242,8 +202,9 @@ extern wchar_t *__REDIRECT_NTH (__wcscat_alias,
- 				(wchar_t *__restrict __dest,
- 				 const wchar_t *__restrict __src), wcscat);
- 
--__fortify_function wchar_t *
--__NTH (wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
-+__fortify_potential_overload wchar_t *
-+__NTH (wcscat (wchar_t *__restrict const __clang_pass_object_size __dest,
-+	       const wchar_t *__restrict __src))
- {
-   if (__bos (__dest) != (size_t) -1)
-     return __wcscat_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t));
-@@ -259,9 +220,9 @@ extern wchar_t *__REDIRECT_NTH (__wcsncat_alias,
- 				 const wchar_t *__restrict __src,
- 				 size_t __n), wcsncat);
- 
--__fortify_function wchar_t *
--__NTH (wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
--		size_t __n))
-+__fortify_potential_overload wchar_t *
-+__NTH (wcsncat (wchar_t *__restrict const __clang_pass_object_size __dest,
-+		const wchar_t *__restrict __src, size_t __n))
- {
-   if (__bos (__dest) != (size_t) -1)
-     return __wcsncat_chk (__dest, __src, __n,
-@@ -280,16 +241,34 @@ extern int __REDIRECT_NTH_LDBL (__swprintf_alias,
- 				 const wchar_t *__restrict __fmt, ...),
- 				swprintf);
- 
--#ifdef __va_arg_pack
--__fortify_function int
--__NTH (swprintf (wchar_t *__restrict __s, size_t __n,
--		 const wchar_t *__restrict __fmt, ...))
-+extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
-+			    int __flag, size_t __s_len,
-+			    const wchar_t *__restrict __format,
-+			    __gnuc_va_list __arg)
-+     __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 0))) */;
-+
-+extern int __REDIRECT_NTH_LDBL (__vswprintf_alias,
-+				(wchar_t *__restrict __s, size_t __n,
-+				 const wchar_t *__restrict __fmt,
-+				 __gnuc_va_list __ap), vswprintf);
-+
-+#ifdef __FORTIFY_ARG_PACK_OK
-+__fortify_potential_overload int
-+__NTH (swprintf (wchar_t *__restrict const __clang_pass_object_size __s,
-+		 size_t __n, const wchar_t *__restrict __fmt, ...))
- {
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __result;
-   if (__bos (__s) != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
--    return __swprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
--			   __bos (__s) / sizeof (wchar_t),
--			   __fmt, __va_arg_pack ());
--  return __swprintf_alias (__s, __n, __fmt, __va_arg_pack ());
-+    __result = __FORTIFY_CALL_VA_CHK(swprintf, __s, __n,
-+				     __USE_FORTIFY_LEVEL - 1,
-+				     __bos (__s) / sizeof (wchar_t), __fmt,
-+				     __FORTIFY_ARG_PACK);
-+  else
-+    __result = __FORTIFY_CALL_VA_ALIAS(swprintf, __s, __n, __fmt,
-+				       __FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __result;
- }
- #elif !defined __cplusplus
- /* XXX We might want to have support in gcc for swprintf.  */
-@@ -300,20 +279,10 @@ __NTH (swprintf (wchar_t *__restrict __s, size_t __n,
-    : swprintf (s, n, __VA_ARGS__))
- #endif
- 
--extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
--			    int __flag, size_t __s_len,
--			    const wchar_t *__restrict __format,
--			    __gnuc_va_list __arg)
--     __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 0))) */;
--
--extern int __REDIRECT_NTH_LDBL (__vswprintf_alias,
--				(wchar_t *__restrict __s, size_t __n,
--				 const wchar_t *__restrict __fmt,
--				 __gnuc_va_list __ap), vswprintf);
--
--__fortify_function int
--__NTH (vswprintf (wchar_t *__restrict __s, size_t __n,
--		  const wchar_t *__restrict __fmt, __gnuc_va_list __ap))
-+__fortify_potential_overload int
-+__NTH (vswprintf (wchar_t *__restrict const __clang_pass_object_size __s,
-+		  size_t __n, const wchar_t *__restrict __fmt,
-+		  __gnuc_va_list __ap))
- {
-   if (__bos (__s) != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
-     return __vswprintf_chk (__s, __n,  __USE_FORTIFY_LEVEL - 1,
-@@ -334,18 +303,27 @@ extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag,
- extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format,
- 			   __gnuc_va_list __ap);
- 
--# ifdef __va_arg_pack
--__fortify_function int
--wprintf (const wchar_t *__restrict __fmt, ...)
-+
-+#ifdef __FORTIFY_ARG_PACK_OK
-+__fortify_potential_overload int
-+wprintf (const wchar_t *__restrict const __clang_pass_object_size __fmt, ...)
- {
--  return __wprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __r = __FORTIFY_CALL_VA_CHK (wprintf, __USE_FORTIFY_LEVEL - 1, __fmt,
-+				   __FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __r;
- }
- 
--__fortify_function int
--fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...)
-+__fortify_potential_overload int
-+fwprintf (__FILE *__restrict const __clang_pass_object_size __stream,
-+	  const wchar_t *__restrict __fmt, ...)
- {
--  return __fwprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt,
--			 __va_arg_pack ());
-+  __FORTIFY_INIT_ARG_PACK(__fmt);
-+  int __r = __FORTIFY_CALL_VA_CHK (fwprintf, __stream, __USE_FORTIFY_LEVEL - 1,
-+				   __fmt, __FORTIFY_ARG_PACK);
-+  __FORTIFY_FREE_ARG_PACK();
-+  return __r;
- }
- # elif !defined __cplusplus
- #  define wprintf(...) \
-@@ -354,14 +332,15 @@ fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...)
-   __fwprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
- # endif
- 
--__fortify_function int
--vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
-+__fortify_potential_overload int
-+vwprintf (const wchar_t *__restrict const __clang_pass_object_size __fmt,
-+	  __gnuc_va_list __ap)
- {
-   return __vwprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __ap);
- }
- 
--__fortify_function int
--vfwprintf (__FILE *__restrict __stream,
-+__fortify_potential_overload int
-+vfwprintf (__FILE *__restrict const __clang_pass_object_size __stream,
- 	   const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
- {
-   return __vfwprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
-@@ -374,27 +353,21 @@ extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n,
- extern wchar_t *__REDIRECT (__fgetws_alias,
- 			    (wchar_t *__restrict __s, int __n,
- 			     __FILE *__restrict __stream), fgetws) __wur;
--extern wchar_t *__REDIRECT (__fgetws_chk_warn,
--			    (wchar_t *__restrict __s, size_t __size, int __n,
--			     __FILE *__restrict __stream), __fgetws_chk)
--     __wur __warnattr ("fgetws called with bigger size than length "
--		       "of destination buffer");
--
--__fortify_function __wur wchar_t *
--fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
--{
--  if (__bos (__s) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n) || __n <= 0)
--	return __fgetws_chk (__s, __bos (__s) / sizeof (wchar_t),
--			     __n, __stream);
- 
--      if ((size_t) __n > __bos (__s) / sizeof (wchar_t))
--	return __fgetws_chk_warn (__s, __bos (__s) / sizeof (wchar_t),
--				  __n, __stream);
--    }
-+__fortify_potential_overload __wur wchar_t *
-+fgetws (wchar_t *__restrict const __clang_pass_object_size __s, int __n,
-+	__FILE *__restrict __stream)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__fgetws_warn, __n, __s,
-+					sizeof (wchar_t),
-+					"fgetws called with length bigger "
-+					"than size of destination buffer")
-+{
-+  if (__FORTIFY_CALL_CHK && __bos (__s) != (size_t) -1)
-+    return __fgetws_chk (__s, __bos (__s) / sizeof (wchar_t), __n, __stream);
-   return __fgetws_alias (__s, __n, __stream);
- }
-+__FORTIFY_FUNCTION_END
- 
- #ifdef __USE_GNU
- extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size,
-@@ -404,28 +377,23 @@ extern wchar_t *__REDIRECT (__fgetws_unlocked_alias,
- 			    (wchar_t *__restrict __s, int __n,
- 			     __FILE *__restrict __stream), fgetws_unlocked)
-   __wur;
--extern wchar_t *__REDIRECT (__fgetws_unlocked_chk_warn,
--			    (wchar_t *__restrict __s, size_t __size, int __n,
--			     __FILE *__restrict __stream),
--			    __fgetws_unlocked_chk)
--     __wur __warnattr ("fgetws_unlocked called with bigger size than length "
--		       "of destination buffer");
--
--__fortify_function __wur wchar_t *
--fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
-+
-+__fortify_potential_overload __wur wchar_t *
-+fgetws_unlocked (wchar_t *__restrict const __clang_pass_object_size __s,
-+		 int __n, __FILE *__restrict __stream)
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_IF (__fgetws_unlocked_warn,
-+			   __n > 0
-+			    && __bos_static_lt2 (__n, __s, sizeof (wchar_t)),
-+			   "fgetws_unlocked called with bigger size than "
-+			   "length of destination buffer")
- {
-   if (__bos (__s) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__n) || __n <= 0)
--	return __fgetws_unlocked_chk (__s, __bos (__s) / sizeof (wchar_t),
--				      __n, __stream);
--
--      if ((size_t) __n > __bos (__s) / sizeof (wchar_t))
--	return __fgetws_unlocked_chk_warn (__s, __bos (__s) / sizeof (wchar_t),
--					   __n, __stream);
--    }
-+    return __fgetws_unlocked_chk (__s, __bos (__s) / sizeof (wchar_t),
-+				  __n, __stream);
-   return __fgetws_unlocked_alias (__s, __n, __stream);
- }
-+__FORTIFY_FUNCTION_END
- #endif
- 
- 
-@@ -436,9 +404,9 @@ extern size_t __REDIRECT_NTH (__wcrtomb_alias,
- 			      (char *__restrict __s, wchar_t __wchar,
- 			       mbstate_t *__restrict __ps), wcrtomb) __wur;
- 
--__fortify_function __wur size_t
--__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar,
--		mbstate_t *__restrict __ps))
-+__fortify_potential_overload __wur size_t
-+__NTH (wcrtomb (char *__restrict const __clang_pass_object_size __s,
-+		wchar_t __wchar, mbstate_t *__restrict __ps))
- {
-   /* We would have to include <limits.h> to get a definition of MB_LEN_MAX.
-      But this would only disturb the namespace.  So we define our own
-@@ -462,30 +430,23 @@ extern size_t __REDIRECT_NTH (__mbsrtowcs_alias,
- 			       const char **__restrict __src,
- 			       size_t __len, mbstate_t *__restrict __ps),
- 			      mbsrtowcs);
--extern size_t __REDIRECT_NTH (__mbsrtowcs_chk_warn,
--			      (wchar_t *__restrict __dst,
--			       const char **__restrict __src,
--			       size_t __len, mbstate_t *__restrict __ps,
--			       size_t __dstlen), __mbsrtowcs_chk)
--     __warnattr ("mbsrtowcs called with dst buffer smaller than len "
--		 "* sizeof (wchar_t)");
- 
--__fortify_function size_t
--__NTH (mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src,
--		  size_t __len, mbstate_t *__restrict __ps))
-+__fortify_potential_overload size_t
-+__NTH (mbsrtowcs (wchar_t *__restrict const __clang_pass_object_size __dst,
-+		  const char **__restrict __src, size_t __len,
-+		  mbstate_t *__restrict __ps))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__mbsrtowcs_warn, __len, __dst,
-+					sizeof (wchar_t),
-+					"mbsrtowcs called with dst buffer "
-+					"smaller than len * sizeof (wchar_t)")
- {
--  if (__bos (__dst) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__len))
--	return __mbsrtowcs_chk (__dst, __src, __len, __ps,
--				__bos (__dst) / sizeof (wchar_t));
--
--      if (__len > __bos (__dst) / sizeof (wchar_t))
--	return __mbsrtowcs_chk_warn (__dst, __src, __len, __ps,
--				     __bos (__dst) / sizeof (wchar_t));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
-+    return __mbsrtowcs_chk (__dst, __src, __len, __ps,
-+			    __bos (__dst) / sizeof (wchar_t));
-   return __mbsrtowcs_alias (__dst, __src, __len, __ps);
- }
-+__FORTIFY_FUNCTION_END
- 
- 
- extern size_t __wcsrtombs_chk (char *__restrict __dst,
-@@ -497,27 +458,21 @@ extern size_t __REDIRECT_NTH (__wcsrtombs_alias,
- 			       const wchar_t **__restrict __src,
- 			       size_t __len, mbstate_t *__restrict __ps),
- 			      wcsrtombs);
--extern size_t __REDIRECT_NTH (__wcsrtombs_chk_warn,
--			      (char *__restrict __dst,
--			       const wchar_t **__restrict __src,
--			       size_t __len, mbstate_t *__restrict __ps,
--			       size_t __dstlen), __wcsrtombs_chk)
--    __warnattr ("wcsrtombs called with dst buffer smaller than len");
- 
--__fortify_function size_t
--__NTH (wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src,
--		  size_t __len, mbstate_t *__restrict __ps))
-+__fortify_potential_overload size_t
-+__NTH (wcsrtombs (char *__restrict const __clang_pass_object_size __dst,
-+		  const wchar_t **__restrict __src, size_t __len,
-+		  mbstate_t *__restrict __ps))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__wcsrtombs_warn, __len, __dst,
-+				       "wcsrtombs called with dst buffer "
-+				       "smaller than len")
- {
--  if (__bos (__dst) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__len))
--	return __wcsrtombs_chk (__dst, __src, __len, __ps, __bos (__dst));
--
--      if (__len > __bos (__dst))
--	return __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __bos (__dst));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
-+    return __wcsrtombs_chk (__dst, __src, __len, __ps, __bos (__dst));
-   return __wcsrtombs_alias (__dst, __src, __len, __ps);
- }
-+__FORTIFY_FUNCTION_END
- 
- 
- #ifdef __USE_GNU
-@@ -530,30 +485,23 @@ extern size_t __REDIRECT_NTH (__mbsnrtowcs_alias,
- 			       const char **__restrict __src, size_t __nmc,
- 			       size_t __len, mbstate_t *__restrict __ps),
- 			      mbsnrtowcs);
--extern size_t __REDIRECT_NTH (__mbsnrtowcs_chk_warn,
--			      (wchar_t *__restrict __dst,
--			       const char **__restrict __src, size_t __nmc,
--			       size_t __len, mbstate_t *__restrict __ps,
--			       size_t __dstlen), __mbsnrtowcs_chk)
--     __warnattr ("mbsnrtowcs called with dst buffer smaller than len "
--		 "* sizeof (wchar_t)");
- 
--__fortify_function size_t
--__NTH (mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src,
--		   size_t __nmc, size_t __len, mbstate_t *__restrict __ps))
-+__fortify_potential_overload size_t
-+__NTH (mbsnrtowcs (wchar_t *__restrict const __clang_pass_object_size __dst,
-+		   const char **__restrict __src, size_t __nmc, size_t __len,
-+		   mbstate_t *__restrict __ps))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__mbsnrtowcs_warn,
-+				       sizeof (wchar_t) * __len, __dst,
-+				       "mbsnrtowcs called with dst buffer "
-+				       "smaller than len * sizeof (wchar_t)")
- {
--  if (__bos (__dst) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__len))
--	return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps,
--				 __bos (__dst) / sizeof (wchar_t));
--
--      if (__len > __bos (__dst) / sizeof (wchar_t))
--	return __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps,
--				      __bos (__dst) / sizeof (wchar_t));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
-+    return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps,
-+			     __bos (__dst) / sizeof (wchar_t));
-   return __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps);
- }
-+__FORTIFY_FUNCTION_END
- 
- 
- extern size_t __wcsnrtombs_chk (char *__restrict __dst,
-@@ -566,28 +514,19 @@ extern size_t __REDIRECT_NTH (__wcsnrtombs_alias,
- 			       const wchar_t **__restrict __src,
- 			       size_t __nwc, size_t __len,
- 			       mbstate_t *__restrict __ps), wcsnrtombs);
--extern size_t __REDIRECT_NTH (__wcsnrtombs_chk_warn,
--			      (char *__restrict __dst,
--			       const wchar_t **__restrict __src,
--			       size_t __nwc, size_t __len,
--			       mbstate_t *__restrict __ps,
--			       size_t __dstlen), __wcsnrtombs_chk)
--     __warnattr ("wcsnrtombs called with dst buffer smaller than len");
- 
--__fortify_function size_t
--__NTH (wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src,
--		   size_t __nwc, size_t __len, mbstate_t *__restrict __ps))
-+__fortify_potential_overload size_t
-+__NTH (wcsnrtombs (char *__restrict const __clang_pass_object_size __dst,
-+		   const wchar_t **__restrict __src, size_t __nwc, size_t __len,
-+		   mbstate_t *__restrict __ps))
-+__FORTIFY_PRECONDITIONS
-+     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__wcsnrtombs_warn, __len, __dst,
-+				       "wcsnrtombs called with dst buffer "
-+				       "smaller than len")
- {
--  if (__bos (__dst) != (size_t) -1)
--    {
--      if (!__builtin_constant_p (__len))
--	return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps,
--				 __bos (__dst));
--
--      if (__len > __bos (__dst))
--	return __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps,
--				      __bos (__dst));
--    }
-+  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
-+    return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, __bos (__dst));
-   return __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps);
- }
-+__FORTIFY_FUNCTION_END
- #endif
diff --git a/sys-libs/glibc/files/local/glibc-2.27-disable-float128.patch b/sys-libs/glibc/files/local/glibc-2.27-disable-float128.patch
deleted file mode 100644
index d13886b..0000000
--- a/sys-libs/glibc/files/local/glibc-2.27-disable-float128.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-This disabled float128 support for x86_64, x86. This is a simplied
-revert of commit c86ed71d633c22d6f638576f7660c52a5f783d66
-
-
-Author: Joseph Myers <joseph@codesourcery.com>
-Date:   Mon Jun 26 22:01:27 2017 +0000
-
-    Add float128 support for x86_64, x86.
-
-The reason to revert it is we are using compiler-rt instead of libgcc.
-Some builtins are not ready in compiler-rt, as a result, we hit
-some problems like crbug.com/843822    
-diff --git a/sysdeps/x86/bits/floatn.h b/sysdeps/x86/bits/floatn.h
-index 49c75f26c5..94ee275b34 100644
---- a/sysdeps/x86/bits/floatn.h
-+++ b/sysdeps/x86/bits/floatn.h
-@@ -37,7 +37,7 @@
- /* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
-    from the default float, double and long double types in this glibc.  */
- #if __HAVE_FLOAT128
--# define __HAVE_DISTINCT_FLOAT128 1
-+# define __HAVE_DISTINCT_FLOAT128 0
- #else
- # define __HAVE_DISTINCT_FLOAT128 0
- #endif
-diff --git a/sysdeps/i386/Implies b/sysdeps/i386/Implies
-index 76cb207173..20b2dffc29 100644
---- a/sysdeps/i386/Implies
-+++ b/sysdeps/i386/Implies
-@@ -1,6 +1,5 @@
- x86
- wordsize-32
--ieee754/float128
- ieee754/ldbl-96
- ieee754/dbl-64
- ieee754/flt-32
-diff --git a/sysdeps/i386/fpu/fenv_private.h b/sysdeps/i386/fpu/fenv_private.h
-index 38fd0b92b5..e20e1f1662 100644
---- a/sysdeps/i386/fpu/fenv_private.h
-+++ b/sysdeps/i386/fpu/fenv_private.h
-@@ -1,46 +1,36 @@
- #ifndef FENV_PRIVATE_H
- #define FENV_PRIVATE_H 1
- 
--#include <bits/floatn.h>
- #include <fenv.h>
- #include <fpu_control.h>
- 
- #ifdef __SSE2_MATH__
--# define math_opt_barrier(x)						\
--  ({ __typeof(x) __x;							\
--     if (sizeof (x) <= sizeof (double)					\
--	|| __builtin_types_compatible_p (__typeof (x), _Float128))	\
--       __asm ("" : "=x" (__x) : "0" (x));				\
--     else								\
--       __asm ("" : "=t" (__x) : "0" (x));				\
-+# define math_opt_barrier(x) \
-+  ({ __typeof(x) __x;					\
-+     if (sizeof (x) <= sizeof (double))			\
-+       __asm ("" : "=x" (__x) : "0" (x));		\
-+     else						\
-+       __asm ("" : "=t" (__x) : "0" (x));		\
-      __x; })
--# define math_force_eval(x)						\
--  do {									\
--    if (sizeof (x) <= sizeof (double)					\
--	|| __builtin_types_compatible_p (__typeof (x), _Float128))	\
--      __asm __volatile ("" : : "x" (x));				\
--    else								\
--      __asm __volatile ("" : : "f" (x));				\
-+# define math_force_eval(x) \
-+  do {							\
-+    if (sizeof (x) <= sizeof (double))			\
-+      __asm __volatile ("" : : "x" (x));		\
-+    else						\
-+      __asm __volatile ("" : : "f" (x));		\
-   } while (0)
- #else
--# define math_opt_barrier(x)						\
--  ({ __typeof (x) __x;							\
--     if (__builtin_types_compatible_p (__typeof (x), _Float128))	\
--       {								\
--	 __x = (x);							\
--	 __asm ("" : "+m" (__x));					\
--       }								\
--     else								\
--       __asm ("" : "=t" (__x) : "0" (x));				\
-+# define math_opt_barrier(x) \
-+  ({ __typeof (x) __x;					\
-+     __asm ("" : "=t" (__x) : "0" (x));			\
-      __x; })
--# define math_force_eval(x)						\
--  do {									\
--    __typeof (x) __x = (x);						\
--    if (sizeof (x) <= sizeof (double)					\
--	|| __builtin_types_compatible_p (__typeof (x), _Float128))	\
--      __asm __volatile ("" : : "m" (__x));				\
--    else								\
--      __asm __volatile ("" : : "f" (__x));				\
-+# define math_force_eval(x) \
-+  do {							\
-+    __typeof (x) __x = (x);				\
-+    if (sizeof (x) <= sizeof (double))			\
-+      __asm __volatile ("" : : "m" (__x));		\
-+    else						\
-+      __asm __volatile ("" : : "f" (__x));		\
-   } while (0)
- #endif
- 
-@@ -332,13 +322,6 @@ libc_feresetround_387 (fenv_t *e)
- # define libc_feholdsetround_53bit	libc_feholdsetround_387_53bit
- #endif
- 
--#ifdef __x86_64__
--/* The SSE rounding mode is used by soft-fp (libgcc and glibc) on
--   x86_64, so that must be set for float128 computations.  */
--# define SET_RESTORE_ROUNDF128(RM) \
--  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_sse, libc_feresetround_sse)
--#endif
--
- /* We have support for rounding mode context.  */
- #define HAVE_RM_CTX 1
- 
-diff --git a/sysdeps/x86_64/Implies b/sysdeps/x86_64/Implies
-index 3d7ded70d2..811c19a8f2 100644
---- a/sysdeps/x86_64/Implies
-+++ b/sysdeps/x86_64/Implies
-@@ -1,5 +1,4 @@
- x86
--ieee754/float128
- ieee754/ldbl-96
- ieee754/dbl-64/wordsize-64
- ieee754/dbl-64diff --git a/sysdeps/x86/fpu/Makefile b/sysdeps/x86/fpu/Makefile
-index 600e42c3db..a8047a4504 100644
---- a/sysdeps/x86/fpu/Makefile
-+++ b/sysdeps/x86/fpu/Makefile
-@@ -1,7 +1,4 @@
- ifeq ($(subdir),math)
--# sqrtf128 requires soft-fp.
--CPPFLAGS += -I../soft-fp
--
- libm-support += powl_helper
- tests += test-fenv-sse test-fenv-clear-sse test-fenv-x87 test-fenv-sse-2 \
- 	 test-flt-eval-method-387 test-flt-eval-method-sse
-
diff --git a/sys-libs/glibc/files/local/glibc-2.27-dlopen-with-offset.patch b/sys-libs/glibc/files/local/glibc-2.27-dlopen-with-offset.patch
deleted file mode 100644
index 5a4ee77..0000000
--- a/sys-libs/glibc/files/local/glibc-2.27-dlopen-with-offset.patch
+++ /dev/null
@@ -1,719 +0,0 @@
-From: Paul Pluzhnikov <ppluzhnikov@google.com>
-Subject: Add dlopen_with_offset to glibc.
-
-This patchset is used in Google internal and is needed for
-Loonix, https://crbug.com/1015890.
-
-The patch is a squashed diff of following commits:
-https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=0010a400dcb13304c9081b0f9ad156ce88178320
-https://sourceware.org/git/?p=glibc.git;a=commit;h=024f0eb409268e704a83cae2c1511d31167c6f49
-https://sourceware.org/git/?p=glibc.git;a=commit;h=295883290d7f26f483e574e80a851cea2d639d12
-https://sourceware.org/git/?p=glibc.git;a=commit;h=771d3bf7065f6c25219cf206816b695a628a4618
-https://sourceware.org/git/?p=glibc.git;a=commit;h=a6241b657547f0f708629bc254ebcaafb6f25074
-https://sourceware.org/git/?p=glibc.git;a=commit;h=c0342bb26e0251dc2d7ca00a884ea831705e32b4
-
-diff -ruB a/dlfcn/dlfcn.h b/dlfcn/dlfcn.h
---- a/dlfcn/dlfcn.h	2020-01-31 18:58:26.005144594 -0800
-+++ b/dlfcn/dlfcn.h	2020-01-31 19:10:10.569416564 -0800
-@@ -22,6 +22,7 @@
- #include <features.h>
- #define __need_size_t
- #include <stddef.h>
-+#include <sys/types.h>
- 
- /* Collect various system dependent definitions and declarations.  */
- #include <bits/dlfcn.h>
-@@ -55,6 +56,26 @@
-    passed to `dlsym' to get symbol values from it.  */
- extern void *dlopen (const char *__file, int __mode) __THROWNL;
- 
-+/* Same as above, but ELF header is at OFF from the start of file.  */
-+#ifndef __USE_FILE_OFFSET64
-+extern void *__google_dlopen_with_offset (__const char *__file,
-+					  __off_t offset,
-+					  int __mode) __THROW;
-+#else
-+# ifdef __REDIRECT_NTH
-+extern void *__REDIRECT_NTH (__google_dlopen_with_offset,
-+			(__const char *__file, __off64_t offset, int __mode),
-+			__google_dlopen_with_offset64);
-+# else
-+#define __google_dlopen_with_offset __google_dlopen_with_offset64
-+# endif
-+#endif  /* not __USE_FILE_OFFSET64 */
-+#ifdef __USE_LARGEFILE64
-+extern void *__google_dlopen_with_offset64 (__const char *__file,
-+					    __off64_t offset,
-+					    int __mode) __THROW;
-+#endif
-+
- /* Unmap and close a shared object opened by `dlopen'.
-    The handle cannot be used again after calling `dlclose'.  */
- extern int dlclose (void *__handle) __THROWNL __nonnull ((1));
-@@ -68,6 +89,12 @@
- /* Like `dlopen', but request object to be allocated in a new namespace.  */
- extern void *dlmopen (Lmid_t __nsid, const char *__file, int __mode) __THROWNL;
- 
-+/* Same as above, but ELF header is at OFF from the start of file.  */
-+extern void *__google_dlmopen_with_offset (Lmid_t __nsid,
-+					   __const char *__file,
-+					   off_t offset,
-+					   int __mode) __THROW;
-+
- /* Find the run-time address in the shared object HANDLE refers to
-    of the symbol called NAME with VERSION.  */
- extern void *dlvsym (void *__restrict __handle,
-diff -ruB a/dlfcn/dlmopen.c b/dlfcn/dlmopen.c
---- a/dlfcn/dlmopen.c	2020-01-31 18:58:26.005144594 -0800
-+++ b/dlfcn/dlmopen.c	2020-01-31 18:58:37.493214204 -0800
-@@ -38,6 +38,8 @@
- {
-   /* Namespace ID.  */
-   Lmid_t nsid;
-+  /* ELF header at offset in file.  */
-+  off_t offset;
-   /* The arguments for dlopen_doit.  */
-   const char *file;
-   int mode;
-@@ -68,13 +70,52 @@
- 	_dl_signal_error (EINVAL, NULL, NULL, N_("invalid mode"));
-     }
- 
--  args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
-+  args->new = GLRO(dl_open) (args->file ?: "", args->offset, args->mode | __RTLD_DLOPEN,
- 			     args->caller,
- 			     args->nsid, __dlfcn_argc, __dlfcn_argv,
- 			     __environ);
- }
- 
- 
-+static void *
-+__dlmopen_common (struct dlmopen_args *args)
-+{
-+
-+# ifdef SHARED
-+  return _dlerror_run (dlmopen_doit, args) ? NULL : args->new;
-+# else
-+  if (_dlerror_run (dlmopen_doit, args))
-+    return NULL;
-+
-+  __libc_register_dl_open_hook ((struct link_map *) args->new);
-+  __libc_register_dlfcn_hook ((struct link_map *) args->new);
-+
-+  return args->new;
-+# endif
-+}
-+
-+void *
-+__dlmopen_with_offset (Lmid_t nsid, const char *file, off_t offset,
-+		       int mode DL_CALLER_DECL)
-+{
-+# ifdef SHARED
-+  if (!rtld_active ())
-+    return _dlfcn_hook->dlmopen_with_offset (nsid, file, offset, mode, RETURN_ADDRESS (0));
-+# endif
-+
-+  struct dlmopen_args oargs;
-+  oargs.nsid = nsid;
-+  oargs.file = file;
-+  oargs.offset = offset;
-+  oargs.mode = mode;
-+  oargs.caller = DL_CALLER;
-+
-+  return __dlmopen_common (&oargs);
-+}
-+# ifdef SHARED
-+strong_alias (__dlmopen_with_offset, __google_dlmopen_with_offset)
-+# endif
-+
- void *
- __dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
- {
-@@ -86,20 +127,11 @@
-   struct dlmopen_args args;
-   args.nsid = nsid;
-   args.file = file;
-+  args.offset = 0;
-   args.mode = mode;
-   args.caller = DL_CALLER;
- 
--# ifdef SHARED
--  return _dlerror_run (dlmopen_doit, &args) ? NULL : args.new;
--# else
--  if (_dlerror_run (dlmopen_doit, &args))
--    return NULL;
--
--  __libc_register_dl_open_hook ((struct link_map *) args.new);
--  __libc_register_dlfcn_hook ((struct link_map *) args.new);
--
--  return args.new;
--# endif
-+  return __dlmopen_common (&args);
- }
- # ifdef SHARED
- strong_alias (__dlmopen, dlmopen)
-diff -ruB a/dlfcn/dlopen.c b/dlfcn/dlopen.c
---- a/dlfcn/dlopen.c	2020-01-31 18:58:26.005144594 -0800
-+++ b/dlfcn/dlopen.c	2020-02-03 10:27:39.539613901 -0800
-@@ -21,6 +21,7 @@
- #include <stddef.h>
- #include <unistd.h>
- #include <ldsodefs.h>
-+#include <errno.h>
- 
- #if !defined SHARED && IS_IN (libdl)
- 
-@@ -37,6 +38,8 @@
- {
-   /* The arguments for dlopen_doit.  */
-   const char *file;
-+  /* ELF header at offset in file.  */
-+  off_t offset;
-   int mode;
-   /* The return value of dlopen_doit.  */
-   void *new;
-@@ -63,13 +66,61 @@
- 		     | __RTLD_SPROF))
-     _dl_signal_error (0, NULL, NULL, _("invalid mode parameter"));
- 
--  args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
-+  args->new = GLRO(dl_open) (args->file ?: "", args->offset, args->mode | __RTLD_DLOPEN,
- 			     args->caller,
- 			     args->file == NULL ? LM_ID_BASE : NS,
- 			     __dlfcn_argc, __dlfcn_argv, __environ);
- }
- 
- 
-+static void *
-+__dlopen_common (struct dlopen_args *args)
-+{
-+# ifdef SHARED
-+  return _dlerror_run (dlopen_doit, args) ? NULL : args->new;
-+# else
-+  if (_dlerror_run (dlopen_doit, args))
-+    return NULL;
-+
-+  __libc_register_dl_open_hook ((struct link_map *) args->new);
-+  __libc_register_dlfcn_hook ((struct link_map *) args->new);
-+
-+  return args->new;
-+# endif
-+}
-+
-+# ifdef SHARED
-+void *
-+__dlopen_with_offset (const char *file, off_t offset, int mode DL_CALLER_DECL)
-+{
-+  if (!rtld_active ())
-+    return _dlfcn_hook->dlopen_with_offset (file, offset, mode, DL_CALLER);
-+
-+  struct dlopen_args oargs;
-+  oargs.file = file;
-+  oargs.offset = offset;
-+  oargs.mode = mode;
-+  oargs.caller = DL_CALLER;
-+
-+  return __dlopen_common (&oargs);
-+}
-+strong_alias (__dlopen_with_offset, __google_dlopen_with_offset)
-+
-+void *
-+__dlopen_with_offset64 (const char *file, off64_t offset, int mode DL_CALLER_DECL)
-+{
-+#ifndef __OFF_T_MATCHES_OFF64_T
-+  if (offset > 0xFFFFFFFF) {
-+    _dl_signal_error(EFBIG, "__dlopen_with_offset64", NULL,
-+		     N_("File offset too large. Only 32 bit ELF supported."));
-+    return NULL;
-+  }
-+#endif
-+  return __dlopen_with_offset(file, offset, mode);
-+}
-+strong_alias (__dlopen_with_offset64, __google_dlopen_with_offset64)
-+# endif
-+
- void *
- __dlopen (const char *file, int mode DL_CALLER_DECL)
- {
-@@ -80,20 +131,11 @@
- 
-   struct dlopen_args args;
-   args.file = file;
-+  args.offset = 0;
-   args.mode = mode;
-   args.caller = DL_CALLER;
- 
--# ifdef SHARED
--  return _dlerror_run (dlopen_doit, &args) ? NULL : args.new;
--# else
--  if (_dlerror_run (dlopen_doit, &args))
--    return NULL;
--
--  __libc_register_dl_open_hook ((struct link_map *) args.new);
--  __libc_register_dlfcn_hook ((struct link_map *) args.new);
--
--  return args.new;
--# endif
-+  return __dlopen_common (&args);
- }
- # ifdef SHARED
- #  include <shlib-compat.h>
-diff -ruB a/dlfcn/dlopenold.c b/dlfcn/dlopenold.c
---- a/dlfcn/dlopenold.c	2020-01-31 18:58:26.005144594 -0800
-+++ b/dlfcn/dlopenold.c	2020-01-31 18:58:37.493214204 -0800
-@@ -51,7 +51,7 @@
- {
-   struct dlopen_args *args = (struct dlopen_args *) a;
- 
--  args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
-+  args->new = GLRO(dl_open) (args->file ?: "", 0, args->mode | __RTLD_DLOPEN,
- 			     args->caller,
- 			     args->file == NULL ? LM_ID_BASE : NS,
- 			     __dlfcn_argc, __dlfcn_argv, __environ);
-diff -ruB a/dlfcn/Versions b/dlfcn/Versions
---- a/dlfcn/Versions	2020-01-31 18:58:26.005144594 -0800
-+++ b/dlfcn/Versions	2020-01-31 20:14:57.708927157 -0800
-@@ -11,6 +11,12 @@
-   GLIBC_2.3.4 {
-     dlmopen;
-   }
-+  GLIBC_2.15 {
-+    __google_dlopen_with_offset; __google_dlmopen_with_offset;
-+  }
-+  GLIBC_2.27 {
-+    __google_dlopen_with_offset64;
-+  }
-   GLIBC_PRIVATE {
-     _dlfcn_hook;
-   }
-diff -ruB a/elf/dl-deps.c b/elf/dl-deps.c
---- a/elf/dl-deps.c	2020-01-31 18:58:26.017144667 -0800
-+++ b/elf/dl-deps.c	2020-01-31 18:58:37.493214204 -0800
-@@ -60,7 +60,7 @@
- {
-   struct openaux_args *args = (struct openaux_args *) a;
- 
--  args->aux = _dl_map_object (args->map, args->name,
-+  args->aux = _dl_map_object (args->map, args->name, 0,
- 			      (args->map->l_type == lt_executable
- 			       ? lt_library : args->map->l_type),
- 			      args->trace_mode, args->open_mode,
-diff -ruB a/elf/dl-libc.c b/elf/dl-libc.c
---- a/elf/dl-libc.c	2020-01-31 18:58:26.005144594 -0800
-+++ b/elf/dl-libc.c	2020-01-31 18:58:37.493214204 -0800
-@@ -59,6 +59,7 @@
- {
-   /* Argument to do_dlopen.  */
-   const char *name;
-+  off_t offset;
-   /* Opening mode.  */
-   int mode;
-   /* This is the caller of the dlopen() function.  */
-@@ -93,7 +94,7 @@
- {
-   struct do_dlopen_args *args = (struct do_dlopen_args *) ptr;
-   /* Open and relocate the shared object.  */
--  args->map = GLRO(dl_open) (args->name, args->mode, args->caller_dlopen,
-+  args->map = GLRO(dl_open) (args->name, args->offset, args->mode, args->caller_dlopen,
- 			     __LM_ID_CALLER, __libc_argc, __libc_argv,
- 			     __environ);
- }
-@@ -186,6 +187,7 @@
- {
-   struct do_dlopen_args args;
-   args.name = name;
-+  args.offset = 0;
-   args.mode = mode;
-   args.caller_dlopen = RETURN_ADDRESS (0);
- 
-diff -ruB a/elf/dl-load.c b/elf/dl-load.c
---- a/elf/dl-load.c	2020-01-31 18:58:26.017144667 -0800
-+++ b/elf/dl-load.c	2020-01-31 19:17:00.667895111 -0800
-@@ -35,6 +35,7 @@
- #include <stackinfo.h>
- #include <caller.h>
- #include <sysdep.h>
-+#include <_itoa.h>
- #include <stap-probe.h>
- #include <libc-pointer-arith.h>
- #include <array_length.h>
-@@ -856,7 +857,7 @@
- static
- #endif
- struct link_map *
--_dl_map_object_from_fd (const char *name, const char *origname, int fd,
-+_dl_map_object_from_fd (const char *name, const char *origname, int fd, off_t offset,
- 			struct filebuf *fbp, char *realname,
- 			struct link_map *loader, int l_type, int mode,
- 			void **stack_endp, Lmid_t nsid)
-@@ -887,7 +888,8 @@
- 
-   /* Look again to see if the real name matched another already loaded.  */
-   for (l = GL(dl_ns)[nsid]._ns_loaded; l != NULL; l = l->l_next)
--    if (!l->l_removed && _dl_file_id_match_p (&l->l_file_id, &id))
-+    if (!l->l_removed && _dl_file_id_match_p (&l->l_file_id, &id)
-+        && l->l_off == offset)
-       {
- 	/* The object is already loaded.
- 	   Just bump its reference count and return it.  */
-@@ -896,7 +898,10 @@
- 	/* If the name is not in the list of names for this object add
- 	   it.  */
- 	free (realname);
--	add_name_to_object (l, name);
-+	if (offset == 0)
-+	  /* If offset!=0, foo.so/@0x<offset> should be the *only*
-+	     name for this object. b/20141439.  */
-+	  add_name_to_object (l, name);
- 
- 	return l;
-       }
-@@ -994,8 +999,29 @@
-   else
-     assert (r->r_state == RT_ADD);
- 
-+#ifdef SHARED
-+  // This code could be linked into 'sln', which does not have _itoa.
-+  // We only care about this when this is linked into ld-linux.
-+  if (offset != 0)
-+    {
-+      /* Google-specific: to help GDB, and for b/18243822, turn realname
-+         into "realname/@0x<offset>"  */
-+      realname = realloc (realname, strlen(realname) + 16 + 4 /* "/@0x" */);
-+      if (realname == NULL)
-+	{
-+	  errstring = N_("unable to realloc");
-+	  goto call_lose_errno;
-+	}
-+      strcat(realname, "/@0x");
-+
-+      char tmp[20];
-+      tmp[19] = '\0';
-+      strcat(realname, _itoa(offset, &tmp[19], 16, 0));
-+    }
-+#endif
-+
-   /* Enter the new object in the list of loaded objects.  */
--  l = _dl_new_object (realname, name, l_type, loader, mode, nsid);
-+  l = _dl_new_object (realname, (offset ? realname : name), l_type, loader, mode, nsid);
-   if (__glibc_unlikely (l == NULL))
-     {
- #ifdef SHARED
-@@ -1082,7 +1108,12 @@
- 	  c->mapend = ALIGN_UP (ph->p_vaddr + ph->p_filesz, GLRO(dl_pagesize));
- 	  c->dataend = ph->p_vaddr + ph->p_filesz;
- 	  c->allocend = ph->p_vaddr + ph->p_memsz;
--	  c->mapoff = ALIGN_DOWN (ph->p_offset, GLRO(dl_pagesize));
-+	  if (offset & (GLRO(dl_pagesize) - 1))
-+	    {
-+	      errstring = N_("invalid offset");
-+	      goto call_lose;
-+	    }
-+	  c->mapoff = ALIGN_DOWN(offset + ph->p_offset, GLRO(dl_pagesize));
- 
- 	  /* Determine whether there is a gap between the last segment
- 	     and this one.  */
-@@ -1362,6 +1393,8 @@
-   assert (origname == NULL);
- #endif
- 
-+  l->l_off = offset;
-+
-   /* When we profile the SONAME might be needed for something else but
-      loading.  Add it right away.  */
-   if (__glibc_unlikely (GLRO(dl_profile) != NULL)
-@@ -1447,7 +1480,7 @@
-    If FD is not -1, then the file is already open and FD refers to it.
-    In that case, FD is consumed for both successful and error returns.  */
- static int
--open_verify (const char *name, int fd,
-+open_verify (const char *name, int fd, off_t offset,
-              struct filebuf *fbp, struct link_map *loader,
- 	     int whatcode, int mode, bool *found_other_class, bool free_name)
- {
-@@ -1528,6 +1561,9 @@
-       unsigned int osversion;
-       size_t maplength;
- 
-+      if (offset > 0 && __lseek (fd, offset, SEEK_SET) == -1)
-+	goto close_and_out;
-+
-       /* We successfully opened the file.  Now verify it is a file
- 	 we can use.  */
-       __set_errno (0);
-@@ -1763,7 +1799,7 @@
-    if MAY_FREE_DIRS is true.  */
- 
- static int
--open_path (const char *name, size_t namelen, int mode,
-+open_path (const char *name, size_t namelen, off_t offset, int mode,
- 	   struct r_search_path_struct *sps, char **realname,
- 	   struct filebuf *fbp, struct link_map *loader, int whatcode,
- 	   bool *found_other_class)
-@@ -1815,7 +1851,7 @@
- 	  if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
- 	    _dl_debug_printf ("  trying file=%s\n", buf);
- 
--	  fd = open_verify (buf, -1, fbp, loader, whatcode, mode,
-+	  fd = open_verify (buf, -1, offset, fbp, loader, whatcode, mode,
- 			    found_other_class, false);
- 	  if (this_dir->status[cnt] == unknown)
- 	    {
-@@ -1913,7 +1949,7 @@
- /* Map in the shared object file NAME.  */
- 
- struct link_map *
--_dl_map_object (struct link_map *loader, const char *name,
-+_dl_map_object (struct link_map *loader, const char *name, off_t offset,
- 		int type, int trace_mode, int mode, Lmid_t nsid)
- {
-   int fd;
-@@ -2028,7 +2064,7 @@
- 	  for (l = loader; l; l = l->l_loader)
- 	    if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
- 	      {
--		fd = open_path (name, namelen, mode,
-+		fd = open_path (name, namelen, offset, mode,
- 				&l->l_rpath_dirs,
- 				&realname, &fb, loader, LA_SER_RUNPATH,
- 				&found_other_class);
-@@ -2044,7 +2080,7 @@
- 	      && main_map != NULL && main_map->l_type != lt_loaded
- 	      && cache_rpath (main_map, &main_map->l_rpath_dirs, DT_RPATH,
- 			      "RPATH"))
--	    fd = open_path (name, namelen, mode,
-+	    fd = open_path (name, namelen, offset, mode,
- 			    &main_map->l_rpath_dirs,
- 			    &realname, &fb, loader ?: main_map, LA_SER_RUNPATH,
- 			    &found_other_class);
-@@ -2052,7 +2088,7 @@
- 
-       /* Try the LD_LIBRARY_PATH environment variable.  */
-       if (fd == -1 && env_path_list.dirs != (void *) -1)
--	fd = open_path (name, namelen, mode, &env_path_list,
-+	fd = open_path (name, namelen, offset, mode, &env_path_list,
- 			&realname, &fb,
- 			loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded,
- 			LA_SER_LIBPATH, &found_other_class);
-@@ -2061,7 +2097,7 @@
-       if (fd == -1 && loader != NULL
- 	  && cache_rpath (loader, &loader->l_runpath_dirs,
- 			  DT_RUNPATH, "RUNPATH"))
--	fd = open_path (name, namelen, mode,
-+	fd = open_path (name, namelen, offset, mode,
- 			&loader->l_runpath_dirs, &realname, &fb, loader,
- 			LA_SER_RUNPATH, &found_other_class);
- 
-@@ -2070,7 +2106,7 @@
-           realname = _dl_sysdep_open_object (name, namelen, &fd);
-           if (realname != NULL)
-             {
--              fd = open_verify (realname, fd,
-+              fd = open_verify (realname, fd, offset,
-                                 &fb, loader ?: GL(dl_ns)[nsid]._ns_loaded,
-                                 LA_SER_CONFIG, mode, &found_other_class,
-                                 false);
-@@ -2124,7 +2160,7 @@
- 
- 	      if (cached != NULL)
- 		{
--		  fd = open_verify (cached, -1,
-+		  fd = open_verify (cached, -1, 0,
- 				    &fb, loader ?: GL(dl_ns)[nsid]._ns_loaded,
- 				    LA_SER_CONFIG, mode, &found_other_class,
- 				    false);
-@@ -2142,7 +2178,7 @@
- 	  && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL
- 	      || __glibc_likely (!(l->l_flags_1 & DF_1_NODEFLIB)))
- 	  && rtld_search_dirs.dirs != (void *) -1)
--	fd = open_path (name, namelen, mode, &rtld_search_dirs,
-+	fd = open_path (name, namelen, offset, mode, &rtld_search_dirs,
- 			&realname, &fb, l, LA_SER_DEFAULT, &found_other_class);
- 
-       /* Add another newline when we are tracing the library loading.  */
-@@ -2159,7 +2195,7 @@
- 	fd = -1;
-       else
- 	{
--	  fd = open_verify (realname, -1, &fb,
-+	  fd = open_verify (realname, -1, offset, &fb,
- 			    loader ?: GL(dl_ns)[nsid]._ns_loaded, 0, mode,
- 			    &found_other_class, true);
- 	  if (__glibc_unlikely (fd == -1))
-@@ -2221,7 +2257,7 @@
-     }
- 
-   void *stack_end = __libc_stack_end;
--  return _dl_map_object_from_fd (name, origname, fd, &fb, realname, loader,
-+  return _dl_map_object_from_fd (name, origname, fd, offset, &fb, realname, loader,
- 				 type, mode, &stack_end, nsid);
- }
- 
-diff -ruB a/elf/dl-open.c b/elf/dl-open.c
---- a/elf/dl-open.c	2020-01-31 18:58:26.017144667 -0800
-+++ b/elf/dl-open.c	2020-01-31 18:58:37.493214204 -0800
-@@ -44,6 +44,8 @@
- struct dl_open_args
- {
-   const char *file;
-+  /* ELF header at offset in file.  */
-+  off_t offset;
-   int mode;
-   /* This is the caller of the dlopen() function.  */
-   const void *caller_dlopen;
-@@ -221,7 +223,7 @@
- 
-   /* Load the named object.  */
-   struct link_map *new;
--  args->map = new = _dl_map_object (call_map, file, lt_loaded, 0,
-+  args->map = new = _dl_map_object (call_map, file, args->offset, lt_loaded, 0,
- 				    mode | __RTLD_CALLMAP, args->nsid);
- 
-   /* If the pointer returned is NULL this means the RTLD_NOLOAD flag is
-@@ -539,7 +541,7 @@
- 
- 
- void *
--_dl_open (const char *file, int mode, const void *caller_dlopen, Lmid_t nsid,
-+_dl_open (const char *file, off_t offset, int mode, const void *caller_dlopen, Lmid_t nsid,
- 	  int argc, char *argv[], char *env[])
- {
-   if ((mode & RTLD_BINDING_MASK) == 0)
-@@ -589,6 +591,7 @@
- 
-   struct dl_open_args args;
-   args.file = file;
-+  args.offset = offset;
-   args.mode = mode;
-   args.caller_dlopen = caller_dlopen;
-   args.caller_dl_open = RETURN_ADDRESS (0);
-diff -ruB a/elf/rtld.c b/elf/rtld.c
---- a/elf/rtld.c	2020-01-31 18:58:26.009144618 -0800
-+++ b/elf/rtld.c	2020-01-31 18:58:37.493214204 -0800
-@@ -588,7 +588,7 @@
- {
-   struct map_args *args = (struct map_args *) a;
-   int type = (args->mode == __RTLD_OPENEXEC) ? lt_executable : lt_library;
--  args->map = _dl_map_object (args->loader, args->str, type, 0,
-+  args->map = _dl_map_object (args->loader, args->str, 0, type, 0,
- 			      args->mode, LM_ID_BASE);
- }
- 
-@@ -596,7 +596,7 @@
- dlmopen_doit (void *a)
- {
-   struct dlmopen_args *args = (struct dlmopen_args *) a;
--  args->map = _dl_open (args->fname,
-+  args->map = _dl_open (args->fname, 0,
- 			(RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT
- 			 | __RTLD_SECURE),
- 			dl_main, LM_ID_NEWLM, _dl_argc, _dl_argv,
-@@ -1050,7 +1050,7 @@
-       else
- 	{
- 	  HP_TIMING_NOW (start);
--	  _dl_map_object (NULL, rtld_progname, lt_executable, 0,
-+	  _dl_map_object (NULL, rtld_progname, 0, lt_executable, 0,
- 			  __RTLD_OPENEXEC, LM_ID_BASE);
- 	  HP_TIMING_NOW (stop);
- 
-Only in a/: glibc-2-27-dlopen-with-offset.patch
-diff -ruB a/include/dlfcn.h b/include/dlfcn.h
---- a/include/dlfcn.h	2020-01-31 18:58:26.057144909 -0800
-+++ b/include/dlfcn.h	2020-01-31 18:58:37.493214204 -0800
-@@ -1,5 +1,6 @@
- #ifndef _DLFCN_H
- #include <dlfcn/dlfcn.h>
-+#include <sys/types.h>
- #ifndef _ISOMAC
- #include <link.h>		/* For ElfW.  */
- #include <stdbool.h>
-@@ -88,6 +89,8 @@
- struct dlfcn_hook
- {
-   void *(*dlopen) (const char *file, int mode, void *dl_caller);
-+  void *(*dlopen_with_offset) (const char *file, off_t offset,
-+			       int mode, void *dl_caller);
-   int (*dlclose) (void *handle);
-   void *(*dlsym) (void *handle, const char *name, void *dl_caller);
-   void *(*dlvsym) (void *handle, const char *name, const char *version,
-@@ -98,6 +101,8 @@
- 		  void **extra_info, int flags);
-   int (*dlinfo) (void *handle, int request, void *arg, void *dl_caller);
-   void *(*dlmopen) (Lmid_t nsid, const char *file, int mode, void *dl_caller);
-+  void *(*dlmopen_with_offset) (Lmid_t nsid, const char *file, off_t offset,
-+				int mode, void *dl_caller);
-   void *pad[4];
- };
- 
-@@ -106,8 +111,14 @@
- 
- extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
-      attribute_hidden;
-+extern void *__dlopen_with_offset (const char *file, off_t offset,
-+				   int mode DL_CALLER_DECL)
-+     attribute_hidden;
- extern void *__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
-      attribute_hidden;
-+extern void *__dlmopen_with_offset (Lmid_t nsid, const char *file, off_t offset,
-+				    int mode DL_CALLER_DECL)
-+     attribute_hidden;
- extern int __dlclose (void *handle)
-      attribute_hidden;
- extern void *__dlsym (void *handle, const char *name DL_CALLER_DECL)
-diff -ruB a/include/link.h b/include/link.h
---- a/include/link.h	2020-01-31 18:58:26.057144909 -0800
-+++ b/include/link.h	2020-01-31 18:58:37.493214204 -0800
-@@ -246,6 +246,12 @@
-        object is the same as one already loaded.  */
-     struct r_file_id l_file_id;
- 
-+    /* Google-specific extension, intended to be part of public interface
-+       to the debugger.  As such, it belongs right after l_prev... except
-+       putting it there causes Google libunwind to crash due to its own
-+       peeking into glibc internals (see grte_v1_glibc_link_map).  */
-+    size_t l_off;  /* File offset to Elf_Ehdr.  */
-+
-     /* Collected information about own RUNPATH directories.  */
-     struct r_search_path_struct l_runpath_dirs;
- 
-diff -ruB a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
---- a/sysdeps/generic/ldsodefs.h	2020-01-31 18:58:26.261146146 -0800
-+++ b/sysdeps/generic/ldsodefs.h	2020-01-31 18:58:37.497214228 -0800
-@@ -597,8 +597,9 @@
- 				   const struct r_found_version *, int, int,
- 				   struct link_map *);
-   int (*_dl_check_caller) (const void *, enum allowmask);
--  void *(*_dl_open) (const char *file, int mode, const void *caller_dlopen,
--		     Lmid_t nsid, int argc, char *argv[], char *env[]);
-+  void *(*_dl_open) (const char *file, off_t offset, int mode,
-+		     const void *caller_dlopen, Lmid_t nsid,
-+		     int argc, char *argv[], char *env[]);
-   void (*_dl_close) (void *map);
-   void *(*_dl_tls_get_addr_soft) (struct link_map *);
- #ifdef HAVE_DL_DISCOVER_OSVERSION
-@@ -849,10 +850,12 @@
- libc_hidden_proto (_dl_catch_exception)
- 
- /* Open the shared object NAME and map in its segments.
-+   ELF header is at OFFSET into the file.
-    LOADER's DT_RPATH is used in searching for NAME.
-    If the object is already opened, returns its existing map.  */
- extern struct link_map *_dl_map_object (struct link_map *loader,
- 					const char *name,
-+					off_t offset,
- 					int type, int trace_mode, int mode,
- 					Lmid_t nsid) attribute_hidden;
- 
-@@ -1109,8 +1112,9 @@
- /* Open the shared object NAME, relocate it, and run its initializer if it
-    hasn't already been run.  MODE is as for `dlopen' (see <dlfcn.h>).  If
-    the object is already opened, returns its existing map.  */
--extern void *_dl_open (const char *name, int mode, const void *caller,
--		       Lmid_t nsid, int argc, char *argv[], char *env[])
-+extern void *_dl_open (const char *name, off_t offset, int mode,
-+		       const void *caller, Lmid_t nsid,
-+		       int argc, char *argv[], char *env[])
-      attribute_hidden;
- 
- /* Free or queue for freeing scope OLD.  If other threads might be
diff --git a/sys-libs/glibc/files/local/glibc-2.27-regex-fix-read-overrun.patch b/sys-libs/glibc/files/local/glibc-2.27-regex-fix-read-overrun.patch
deleted file mode 100644
index 4406ef5..0000000
--- a/sys-libs/glibc/files/local/glibc-2.27-regex-fix-read-overrun.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 7839f70dc125c067ac53e8d89c2028d2b816c9e7 Mon Sep 17 00:00:00 2001
-From: Vaibhav Rustagi <vaibhavrustagi@google.com>
-Date: Thu, 18 Jun 2020 10:59:32 -0700
-Subject: [PATCH] regex: fix read overrun [BZ #24114]
-
-Problem found by AddressSanitizer, reported by Hongxu Chen in:
-https://debbugs.gnu.org/34140
-* posix/regexec.c (proceed_next_node):
-Do not read past end of input buffer.
----
- posix/regexec.c | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/posix/regexec.c b/posix/regexec.c
-index 4b1ab4ecff..1fd10df6c7 100644
---- a/posix/regexec.c
-+++ b/posix/regexec.c
-@@ -1272,8 +1272,10 @@ proceed_next_node (const re_match_context_t *mctx, int nregs, regmatch_t *regs,
- 	      else if (naccepted)
- 		{
- 		  char *buf = (char *) re_string_get_buffer (&mctx->input);
--		  if (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
--			      naccepted) != 0)
-+		  if (mctx->input.valid_len - *pidx < naccepted
-+		      || (memcmp (buf + regs[subexp_idx].rm_so, buf + *pidx,
-+		                  naccepted)
-+		          != 0))
- 		    return -1;
- 		}
- 	    }
--- 
-2.27.0.290.gba653c62da-goog
-
diff --git a/sys-libs/glibc/files/local/glibc-2.28-optimize-strcmp.patch b/sys-libs/glibc/files/local/glibc-2.28-optimize-strcmp.patch
deleted file mode 100644
index 30050f6..0000000
--- a/sys-libs/glibc/files/local/glibc-2.28-optimize-strcmp.patch
+++ /dev/null
@@ -1,1246 +0,0 @@
-From e6a2dbc6a980bf5889cb1340a270ee5ae329d028 Mon Sep 17 00:00:00 2001
-From: Leonardo Sandoval <leonardo.sandoval.gonzalez@linux.intel.com>
-Date: Thu, 3 May 2018 11:09:30 -0500
-Subject: [PATCH] x86-64: Optimize strcmp/wcscmp and strncmp/wcsncmp with AVX2
-
-Optimize x86-64 strcmp/wcscmp and strncmp/wcsncmp with AVX2. It uses vector
-comparison as much as possible. Peak performance observed on a SkyLake
-machine: 9x, 3x, 2.5x and 5.5x for strcmp, strncmp, wcscmp and wcsncmp,
-respectively. The larger the comparison length, the more benefit using
-avx2 functions, except on the strcmp, where peak is observed at length
-== 32 bytes. Select AVX2 strcmp/wcscmp on AVX2 machines where vzeroupper
-is preferred and AVX unaligned load is fast.
-
-NB: It uses TZCNT instead of BSF since TZCNT produces the same result
-as BSF for non-zero input.  TZCNT is faster than BSF and is executed
-as BSF if machine doesn't support TZCNT.
-
-	* sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
-	strcmp-avx2, strncmp-avx2, wcscmp-avx2, wcscmp-sse2, wcsncmp-avx2 and
-	wcsncmp-sse2.
-	* sysdeps/x86_64/multiarch/ifunc-impl-list.c
-	(__libc_ifunc_impl_list): Add tests for __strcmp_avx2,
-	__strncmp_avx2,	__wcscmp_avx2, __wcsncmp_avx2, __wcscmp_sse2
-	and __wcsncmp_sse2.
-	* sysdeps/x86_64/multiarch/strcmp.c (OPTIMIZE (avx2)):
-	(IFUNC_SELECTOR): Return OPTIMIZE (avx2) on AVX 2 machines if
-	AVX unaligned load is fast and vzeroupper is preferred.
-	* sysdeps/x86_64/multiarch/strncmp.c: Likewise.
-	* sysdeps/x86_64/multiarch/strcmp-avx2.S: New file.
-	* sysdeps/x86_64/multiarch/strncmp-avx2.S: Likewise.
-	* sysdeps/x86_64/multiarch/wcscmp-avx2.S: Likewise.
-	* sysdeps/x86_64/multiarch/wcscmp-sse2.S: Likewise.
-	* sysdeps/x86_64/multiarch/wcscmp.c: Likewise.
-	* sysdeps/x86_64/multiarch/wcsncmp-avx2.S: Likewise.
-	* sysdeps/x86_64/multiarch/wcsncmp-sse2.c: Likewise.
-	* sysdeps/x86_64/multiarch/wcsncmp.c: Likewise.
-	* sysdeps/x86_64/wcscmp.S (__wcscmp): Add alias only if __wcscmp
-	is undefined.
-
-Conflicts:
-	ChangeLog
----
- ChangeLog                                  |  24 +
- sysdeps/x86_64/multiarch/Makefile          |   6 +-
- sysdeps/x86_64/multiarch/ifunc-impl-list.c |  20 +
- sysdeps/x86_64/multiarch/strcmp-avx2.S     | 847 +++++++++++++++++++++
- sysdeps/x86_64/multiarch/strcmp.c          |   6 +
- sysdeps/x86_64/multiarch/strncmp-avx2.S    |   3 +
- sysdeps/x86_64/multiarch/strncmp.c         |   6 +
- sysdeps/x86_64/multiarch/wcscmp-avx2.S     |   4 +
- sysdeps/x86_64/multiarch/wcscmp-sse2.S     |  23 +
- sysdeps/x86_64/multiarch/wcscmp.c          |  37 +
- sysdeps/x86_64/multiarch/wcsncmp-avx2.S    |   5 +
- sysdeps/x86_64/multiarch/wcsncmp-sse2.c    |  20 +
- sysdeps/x86_64/multiarch/wcsncmp.c         |  31 +
- sysdeps/x86_64/wcscmp.S                    |   2 +
- 14 files changed, 1032 insertions(+), 2 deletions(-)
- create mode 100644 sysdeps/x86_64/multiarch/strcmp-avx2.S
- create mode 100644 sysdeps/x86_64/multiarch/strncmp-avx2.S
- create mode 100644 sysdeps/x86_64/multiarch/wcscmp-avx2.S
- create mode 100644 sysdeps/x86_64/multiarch/wcscmp-sse2.S
- create mode 100644 sysdeps/x86_64/multiarch/wcscmp.c
- create mode 100644 sysdeps/x86_64/multiarch/wcsncmp-avx2.S
- create mode 100644 sysdeps/x86_64/multiarch/wcsncmp-sse2.c
- create mode 100644 sysdeps/x86_64/multiarch/wcsncmp.c
-
-diff --git a/ChangeLog b/ChangeLog
-index 7fcb7d5981..4c34ebd4cc 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,27 @@
-+2018-06-01  Leonardo Sandoval  <leonardo.sandoval.gonzalez@intel.com>
-+
-+	* sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add
-+	strcmp-avx2, strncmp-avx2, wcscmp-avx2, wcscmp-sse2, wcsncmp-avx2 and
-+	wcsncmp-sse2.
-+	* sysdeps/x86_64/multiarch/ifunc-impl-list.c
-+	(__libc_ifunc_impl_list): Add tests for __strcmp_avx2,
-+	__strncmp_avx2,	__wcscmp_avx2, __wcsncmp_avx2, __wcscmp_sse2
-+	and __wcsncmp_sse2.
-+	* sysdeps/x86_64/multiarch/strcmp.c (OPTIMIZE (avx2)):
-+	(IFUNC_SELECTOR): Return OPTIMIZE (avx2) on AVX 2 machines if
-+	AVX unaligned load is fast and vzeroupper is preferred.
-+	* sysdeps/x86_64/multiarch/strncmp.c: Likewise.
-+	* sysdeps/x86_64/multiarch/strcmp-avx2.S: New file.
-+	* sysdeps/x86_64/multiarch/strncmp-avx2.S: Likewise.
-+	* sysdeps/x86_64/multiarch/wcscmp-avx2.S: Likewise.
-+	* sysdeps/x86_64/multiarch/wcscmp-sse2.S: Likewise.
-+	* sysdeps/x86_64/multiarch/wcscmp.c: Likewise.
-+	* sysdeps/x86_64/multiarch/wcsncmp-avx2.S: Likewise.
-+	* sysdeps/x86_64/multiarch/wcsncmp-sse2.c: Likewise.
-+	* sysdeps/x86_64/multiarch/wcsncmp.c: Likewise.
-+	* sysdeps/x86_64/wcscmp.S (__wcscmp): Add alias only if __wcscmp
-+	is undefined.
-+
- 2018-07-29  H.J. Lu  <hongjiu.lu@intel.com>
- 
- 	[BZ #23459]
-diff --git a/sysdeps/x86_64/multiarch/Makefile b/sysdeps/x86_64/multiarch/Makefile
-index 68257c4017..bb5e970735 100644
---- a/sysdeps/x86_64/multiarch/Makefile
-+++ b/sysdeps/x86_64/multiarch/Makefile
-@@ -6,8 +6,8 @@ ifeq ($(subdir),string)
- 
- sysdep_routines += strncat-c stpncpy-c strncpy-c \
- 		   strcmp-sse2 strcmp-sse2-unaligned strcmp-ssse3  \
--		   strcmp-sse4_2 \
--		   strncmp-sse2 strncmp-ssse3 strncmp-sse4_2 \
-+		   strcmp-sse4_2 strcmp-avx2 \
-+		   strncmp-sse2 strncmp-ssse3 strncmp-sse4_2 strncmp-avx2 \
- 		   memchr-sse2 rawmemchr-sse2 memchr-avx2 rawmemchr-avx2 \
- 		   memrchr-sse2 memrchr-avx2 \
- 		   memcmp-sse2 \
-@@ -51,6 +51,8 @@ ifeq ($(subdir),wcsmbs)
- sysdep_routines += wmemcmp-sse4 wmemcmp-ssse3 wmemcmp-c \
- 		   wmemcmp-avx2-movbe \
- 		   wmemchr-sse2 wmemchr-avx2 \
-+		   wcscmp-sse2 wcscmp-avx2 \
-+		   wcsncmp-sse2 wcsncmp-avx2 \
- 		   wcscpy-ssse3 wcscpy-c \
- 		   wcschr-sse2 wcschr-avx2 \
- 		   wcsrchr-sse2 wcsrchr-avx2 \
-diff --git a/sysdeps/x86_64/multiarch/ifunc-impl-list.c b/sysdeps/x86_64/multiarch/ifunc-impl-list.c
-index 7afd674b81..9aaaef7251 100644
---- a/sysdeps/x86_64/multiarch/ifunc-impl-list.c
-+++ b/sysdeps/x86_64/multiarch/ifunc-impl-list.c
-@@ -268,6 +268,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
- 
-   /* Support sysdeps/x86_64/multiarch/strcmp.c.  */
-   IFUNC_IMPL (i, name, strcmp,
-+	      IFUNC_IMPL_ADD (array, i, strcmp,
-+			      HAS_ARCH_FEATURE (AVX2_Usable),
-+			      __strcmp_avx2)
- 	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_CPU_FEATURE (SSE4_2),
- 			      __strcmp_sse42)
- 	      IFUNC_IMPL_ADD (array, i, strcmp, HAS_CPU_FEATURE (SSSE3),
-@@ -364,6 +367,20 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
- 			      __wcsrchr_avx2)
- 	      IFUNC_IMPL_ADD (array, i, wcsrchr, 1, __wcsrchr_sse2))
- 
-+  /* Support sysdeps/x86_64/multiarch/wcscmp.c.  */
-+  IFUNC_IMPL (i, name, wcscmp,
-+	      IFUNC_IMPL_ADD (array, i, wcscmp,
-+			      HAS_ARCH_FEATURE (AVX2_Usable),
-+			      __wcscmp_avx2)
-+	      IFUNC_IMPL_ADD (array, i, wcscmp, 1, __wcscmp_sse2))
-+
-+  /* Support sysdeps/x86_64/multiarch/wcsncmp.c.  */
-+  IFUNC_IMPL (i, name, wcsncmp,
-+	      IFUNC_IMPL_ADD (array, i, wcsncmp,
-+			      HAS_ARCH_FEATURE (AVX2_Usable),
-+			      __wcsncmp_avx2)
-+	      IFUNC_IMPL_ADD (array, i, wcsncmp, 1, __wcsncmp_sse2))
-+
-   /* Support sysdeps/x86_64/multiarch/wcscpy.c.  */
-   IFUNC_IMPL (i, name, wcscpy,
- 	      IFUNC_IMPL_ADD (array, i, wcscpy, HAS_CPU_FEATURE (SSSE3),
-@@ -536,6 +553,9 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array,
- 
-   /* Support sysdeps/x86_64/multiarch/strncmp.c.  */
-   IFUNC_IMPL (i, name, strncmp,
-+	      IFUNC_IMPL_ADD (array, i, strncmp,
-+			      HAS_ARCH_FEATURE (AVX2_Usable),
-+			      __strncmp_avx2)
- 	      IFUNC_IMPL_ADD (array, i, strncmp, HAS_CPU_FEATURE (SSE4_2),
- 			      __strncmp_sse42)
- 	      IFUNC_IMPL_ADD (array, i, strncmp, HAS_CPU_FEATURE (SSSE3),
-diff --git a/sysdeps/x86_64/multiarch/strcmp-avx2.S b/sysdeps/x86_64/multiarch/strcmp-avx2.S
-new file mode 100644
-index 0000000000..e8397f3b05
---- /dev/null
-+++ b/sysdeps/x86_64/multiarch/strcmp-avx2.S
-@@ -0,0 +1,847 @@
-+/* strcmp/wcscmp/strncmp/wcsncmp optimized with AVX2.
-+   Copyright (C) 2018 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+
-+   The GNU C Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Lesser General Public
-+   License as published by the Free Software Foundation; either
-+   version 2.1 of the License, or (at your option) any later version.
-+
-+   The GNU C Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public
-+   License along with the GNU C Library; if not, see
-+   <http://www.gnu.org/licenses/>.  */
-+
-+#if IS_IN (libc)
-+
-+# include <sysdep.h>
-+
-+# ifndef STRCMP
-+#  define STRCMP	__strcmp_avx2
-+# endif
-+
-+# define PAGE_SIZE	4096
-+
-+/* VEC_SIZE = Number of bytes in a ymm register */
-+# define VEC_SIZE	32
-+
-+/* Shift for dividing by (VEC_SIZE * 4).  */
-+# define DIVIDE_BY_VEC_4_SHIFT	7
-+# if (VEC_SIZE * 4) != (1 << DIVIDE_BY_VEC_4_SHIFT)
-+#  error (VEC_SIZE * 4) != (1 << DIVIDE_BY_VEC_4_SHIFT)
-+# endif
-+
-+# ifdef USE_AS_WCSCMP
-+/* Compare packed dwords.  */
-+#  define VPCMPEQ	vpcmpeqd
-+/* Compare packed dwords and store minimum.  */
-+#  define VPMINU	vpminud
-+/* 1 dword char == 4 bytes.  */
-+#  define SIZE_OF_CHAR	4
-+# else
-+/* Compare packed bytes.  */
-+#  define VPCMPEQ	vpcmpeqb
-+/* Compare packed bytes and store minimum.  */
-+#  define VPMINU	vpminub
-+/* 1 byte char == 1 byte.  */
-+#  define SIZE_OF_CHAR	1
-+# endif
-+
-+# ifndef VZEROUPPER
-+#  define VZEROUPPER	vzeroupper
-+# endif
-+
-+/* Warning!
-+           wcscmp/wcsncmp have to use SIGNED comparison for elements.
-+           strcmp/strncmp have to use UNSIGNED comparison for elements.
-+*/
-+
-+/* The main idea of the string comparison (byte or dword) using AVX2
-+   consists of comparing (VPCMPEQ) two ymm vectors. The latter can be on
-+   either packed bytes or dwords depending on USE_AS_WCSCMP. In order
-+   to check the null char, algorithm keeps the matched bytes/dwords,
-+   requiring two more AVX2 instructions (VPMINU and VPCMPEQ). In general,
-+   the costs of comparing VEC_SIZE bytes (32-bytes) are two VPCMPEQ and
-+   one VPMINU instructions, together with movdqu and testl instructions.
-+   Main loop (away from from page boundary) compares 4 vectors are a time,
-+   effectively comparing 4 x VEC_SIZE bytes (128 bytes) on each loop.
-+
-+   The routine strncmp/wcsncmp (enabled by defining USE_AS_STRNCMP) logic
-+   is the same as strcmp, except that an a maximum offset is tracked.  If
-+   the maximum offset is reached before a difference is found, zero is
-+   returned.  */
-+
-+	.section .text.avx,"ax",@progbits
-+ENTRY (STRCMP)
-+# ifdef USE_AS_STRNCMP
-+	/* Check for simple cases (0 or 1) in offset.  */
-+	cmp	$1, %rdx
-+	je	L(char0)
-+	jb	L(zero)
-+#  ifdef USE_AS_WCSCMP
-+	/* Convert units: from wide to byte char.  */
-+	shl	$2, %rdx
-+#  endif
-+	/* Register %r11 tracks the maximum offset.  */
-+	movq	%rdx, %r11
-+# endif
-+	movl	%edi, %eax
-+	xorl	%edx, %edx
-+	/* Make %ymm7 all zeros in this function.  */
-+	vpxor	%ymm7, %ymm7, %ymm7
-+	orl	%esi, %eax
-+	andl	$(PAGE_SIZE - 1), %eax
-+	cmpl	$(PAGE_SIZE - (VEC_SIZE * 4)), %eax
-+	jg	L(cross_page)
-+	/* Start comparing 4 vectors.  */
-+	vmovdqu	(%rdi), %ymm1
-+	VPCMPEQ	(%rsi), %ymm1, %ymm0
-+	VPMINU	%ymm1, %ymm0, %ymm0
-+	VPCMPEQ	%ymm7, %ymm0, %ymm0
-+	vpmovmskb %ymm0, %ecx
-+	testl	%ecx, %ecx
-+	je	L(next_3_vectors)
-+	tzcntl	%ecx, %edx
-+# ifdef USE_AS_STRNCMP
-+	/* Return 0 if the mismatched index (%rdx) is after the maximum
-+	   offset (%r11).   */
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+# endif
-+# ifdef USE_AS_WCSCMP
-+	xorl	%eax, %eax
-+	movl	(%rdi, %rdx), %ecx
-+	cmpl	(%rsi, %rdx), %ecx
-+	je	L(return)
-+L(wcscmp_return):
-+	setl	%al
-+	negl	%eax
-+	orl	$1, %eax
-+L(return):
-+# else
-+	movzbl	(%rdi, %rdx), %eax
-+	movzbl	(%rsi, %rdx), %edx
-+	subl	%edx, %eax
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(return_vec_size):
-+	tzcntl	%ecx, %edx
-+# ifdef USE_AS_STRNCMP
-+	/* Return 0 if the mismatched index (%rdx + VEC_SIZE) is after
-+	   the maximum offset (%r11).  */
-+	addq	$VEC_SIZE, %rdx
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+#  ifdef USE_AS_WCSCMP
-+	xorl	%eax, %eax
-+	movl	(%rdi, %rdx), %ecx
-+	cmpl	(%rsi, %rdx), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rdi, %rdx), %eax
-+	movzbl	(%rsi, %rdx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# else
-+#  ifdef USE_AS_WCSCMP
-+	xorl	%eax, %eax
-+	movl	VEC_SIZE(%rdi, %rdx), %ecx
-+	cmpl	VEC_SIZE(%rsi, %rdx), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	VEC_SIZE(%rdi, %rdx), %eax
-+	movzbl	VEC_SIZE(%rsi, %rdx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(return_2_vec_size):
-+	tzcntl	%ecx, %edx
-+# ifdef USE_AS_STRNCMP
-+	/* Return 0 if the mismatched index (%rdx + 2 * VEC_SIZE) is
-+	   after the maximum offset (%r11).  */
-+	addq	$(VEC_SIZE * 2), %rdx
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+#  ifdef USE_AS_WCSCMP
-+	xorl	%eax, %eax
-+	movl	(%rdi, %rdx), %ecx
-+	cmpl	(%rsi, %rdx), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rdi, %rdx), %eax
-+	movzbl	(%rsi, %rdx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# else
-+#  ifdef USE_AS_WCSCMP
-+	xorl	%eax, %eax
-+	movl	(VEC_SIZE * 2)(%rdi, %rdx), %ecx
-+	cmpl	(VEC_SIZE * 2)(%rsi, %rdx), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(VEC_SIZE * 2)(%rdi, %rdx), %eax
-+	movzbl	(VEC_SIZE * 2)(%rsi, %rdx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(return_3_vec_size):
-+	tzcntl	%ecx, %edx
-+# ifdef USE_AS_STRNCMP
-+	/* Return 0 if the mismatched index (%rdx + 3 * VEC_SIZE) is
-+	   after the maximum offset (%r11).  */
-+	addq	$(VEC_SIZE * 3), %rdx
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+#  ifdef USE_AS_WCSCMP
-+	xorl	%eax, %eax
-+	movl	(%rdi, %rdx), %ecx
-+	cmpl	(%rsi, %rdx), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rdi, %rdx), %eax
-+	movzbl	(%rsi, %rdx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# else
-+#  ifdef USE_AS_WCSCMP
-+	xorl	%eax, %eax
-+	movl	(VEC_SIZE * 3)(%rdi, %rdx), %ecx
-+	cmpl	(VEC_SIZE * 3)(%rsi, %rdx), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(VEC_SIZE * 3)(%rdi, %rdx), %eax
-+	movzbl	(VEC_SIZE * 3)(%rsi, %rdx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(next_3_vectors):
-+	vmovdqu	VEC_SIZE(%rdi), %ymm6
-+	VPCMPEQ	VEC_SIZE(%rsi), %ymm6, %ymm3
-+	VPMINU	%ymm6, %ymm3, %ymm3
-+	VPCMPEQ	%ymm7, %ymm3, %ymm3
-+	vpmovmskb %ymm3, %ecx
-+	testl	%ecx, %ecx
-+	jne	L(return_vec_size)
-+	vmovdqu	(VEC_SIZE * 2)(%rdi), %ymm5
-+	vmovdqu	(VEC_SIZE * 3)(%rdi), %ymm4
-+	vmovdqu	(VEC_SIZE * 3)(%rsi), %ymm0
-+	VPCMPEQ	(VEC_SIZE * 2)(%rsi), %ymm5, %ymm2
-+	VPMINU	%ymm5, %ymm2, %ymm2
-+	VPCMPEQ	%ymm4, %ymm0, %ymm0
-+	VPCMPEQ	%ymm7, %ymm2, %ymm2
-+	vpmovmskb %ymm2, %ecx
-+	testl	%ecx, %ecx
-+	jne	L(return_2_vec_size)
-+	VPMINU	%ymm4, %ymm0, %ymm0
-+	VPCMPEQ	%ymm7, %ymm0, %ymm0
-+	vpmovmskb %ymm0, %ecx
-+	testl	%ecx, %ecx
-+	jne	L(return_3_vec_size)
-+L(main_loop_header):
-+	leaq	(VEC_SIZE * 4)(%rdi), %rdx
-+	movl	$PAGE_SIZE, %ecx
-+	/* Align load via RAX.  */
-+	andq	$-(VEC_SIZE * 4), %rdx
-+	subq	%rdi, %rdx
-+	leaq	(%rdi, %rdx), %rax
-+# ifdef USE_AS_STRNCMP
-+	/* Starting from this point, the maximum offset, or simply the
-+	   'offset', DECREASES by the same amount when base pointers are
-+	   moved forward.  Return 0 when:
-+	     1) On match: offset <= the matched vector index.
-+	     2) On mistmach, offset is before the mistmatched index.
-+	 */
-+	subq	%rdx, %r11
-+	jbe	L(zero)
-+# endif
-+	addq	%rsi, %rdx
-+	movq	%rdx, %rsi
-+	andl	$(PAGE_SIZE - 1), %esi
-+	/* Number of bytes before page crossing.  */
-+	subq	%rsi, %rcx
-+	/* Number of VEC_SIZE * 4 blocks before page crossing.  */
-+	shrq	$DIVIDE_BY_VEC_4_SHIFT, %rcx
-+	/* ESI: Number of VEC_SIZE * 4 blocks before page crossing.   */
-+	movl	%ecx, %esi
-+	jmp	L(loop_start)
-+
-+	.p2align 4
-+L(loop):
-+# ifdef USE_AS_STRNCMP
-+	/* Base pointers are moved forward by 4 * VEC_SIZE.  Decrease
-+	   the maximum offset (%r11) by the same amount.  */
-+	subq	$(VEC_SIZE * 4), %r11
-+	jbe	L(zero)
-+# endif
-+	addq	$(VEC_SIZE * 4), %rax
-+	addq	$(VEC_SIZE * 4), %rdx
-+L(loop_start):
-+	testl	%esi, %esi
-+	leal	-1(%esi), %esi
-+	je	L(loop_cross_page)
-+L(back_to_loop):
-+	/* Main loop, comparing 4 vectors are a time.  */
-+	vmovdqa	(%rax), %ymm0
-+	vmovdqa	VEC_SIZE(%rax), %ymm3
-+	VPCMPEQ	(%rdx), %ymm0, %ymm4
-+	VPCMPEQ	VEC_SIZE(%rdx), %ymm3, %ymm1
-+	VPMINU	%ymm0, %ymm4, %ymm4
-+	VPMINU	%ymm3, %ymm1, %ymm1
-+	vmovdqa	(VEC_SIZE * 2)(%rax), %ymm2
-+	VPMINU	%ymm1, %ymm4, %ymm0
-+	vmovdqa	(VEC_SIZE * 3)(%rax), %ymm3
-+	VPCMPEQ	(VEC_SIZE * 2)(%rdx), %ymm2, %ymm5
-+	VPCMPEQ	(VEC_SIZE * 3)(%rdx), %ymm3, %ymm6
-+	VPMINU	%ymm2, %ymm5, %ymm5
-+	VPMINU	%ymm3, %ymm6, %ymm6
-+	VPMINU	%ymm5, %ymm0, %ymm0
-+	VPMINU	%ymm6, %ymm0, %ymm0
-+	VPCMPEQ	%ymm7, %ymm0, %ymm0
-+
-+	/* Test each mask (32 bits) individually because for VEC_SIZE
-+	   == 32 is not possible to OR the four masks and keep all bits
-+	   in a 64-bit integer register, differing from SSE2 strcmp
-+	   where ORing is possible.  */
-+	vpmovmskb %ymm0, %ecx
-+	testl	%ecx, %ecx
-+	je	L(loop)
-+	VPCMPEQ	%ymm7, %ymm4, %ymm0
-+	vpmovmskb %ymm0, %edi
-+	testl	%edi, %edi
-+	je	L(test_vec)
-+	tzcntl	%edi, %ecx
-+# ifdef USE_AS_STRNCMP
-+	cmpq	%rcx, %r11
-+	jbe	L(zero)
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(%rsi, %rcx), %edi
-+	cmpl	(%rdx, %rcx), %edi
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rax, %rcx), %eax
-+	movzbl	(%rdx, %rcx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# else
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(%rsi, %rcx), %edi
-+	cmpl	(%rdx, %rcx), %edi
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rax, %rcx), %eax
-+	movzbl	(%rdx, %rcx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(test_vec):
-+# ifdef USE_AS_STRNCMP
-+	/* The first vector matched.  Return 0 if the maximum offset
-+	   (%r11) <= VEC_SIZE.  */
-+	cmpq	$VEC_SIZE, %r11
-+	jbe	L(zero)
-+# endif
-+	VPCMPEQ	%ymm7, %ymm1, %ymm1
-+	vpmovmskb %ymm1, %ecx
-+	testl	%ecx, %ecx
-+	je	L(test_2_vec)
-+	tzcntl	%ecx, %edi
-+# ifdef USE_AS_STRNCMP
-+	addq	$VEC_SIZE, %rdi
-+	cmpq	%rdi, %r11
-+	jbe	L(zero)
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(%rsi, %rdi), %ecx
-+	cmpl	(%rdx, %rdi), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rax, %rdi), %eax
-+	movzbl	(%rdx, %rdi), %edx
-+	subl	%edx, %eax
-+#  endif
-+# else
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	VEC_SIZE(%rsi, %rdi), %ecx
-+	cmpl	VEC_SIZE(%rdx, %rdi), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	VEC_SIZE(%rax, %rdi), %eax
-+	movzbl	VEC_SIZE(%rdx, %rdi), %edx
-+	subl	%edx, %eax
-+#  endif
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(test_2_vec):
-+# ifdef USE_AS_STRNCMP
-+	/* The first 2 vectors matched.  Return 0 if the maximum offset
-+	   (%r11) <= 2 * VEC_SIZE.  */
-+	cmpq	$(VEC_SIZE * 2), %r11
-+	jbe	L(zero)
-+# endif
-+	VPCMPEQ	%ymm7, %ymm5, %ymm5
-+	vpmovmskb %ymm5, %ecx
-+	testl	%ecx, %ecx
-+	je	L(test_3_vec)
-+	tzcntl	%ecx, %edi
-+# ifdef USE_AS_STRNCMP
-+	addq	$(VEC_SIZE * 2), %rdi
-+	cmpq	%rdi, %r11
-+	jbe	L(zero)
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(%rsi, %rdi), %ecx
-+	cmpl	(%rdx, %rdi), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rax, %rdi), %eax
-+	movzbl	(%rdx, %rdi), %edx
-+	subl	%edx, %eax
-+#  endif
-+# else
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(VEC_SIZE * 2)(%rsi, %rdi), %ecx
-+	cmpl	(VEC_SIZE * 2)(%rdx, %rdi), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(VEC_SIZE * 2)(%rax, %rdi), %eax
-+	movzbl	(VEC_SIZE * 2)(%rdx, %rdi), %edx
-+	subl	%edx, %eax
-+#  endif
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(test_3_vec):
-+# ifdef USE_AS_STRNCMP
-+	/* The first 3 vectors matched.  Return 0 if the maximum offset
-+	   (%r11) <= 3 * VEC_SIZE.  */
-+	cmpq	$(VEC_SIZE * 3), %r11
-+	jbe	L(zero)
-+# endif
-+	VPCMPEQ	%ymm7, %ymm6, %ymm6
-+	vpmovmskb %ymm6, %esi
-+	tzcntl	%esi, %ecx
-+# ifdef USE_AS_STRNCMP
-+	addq	$(VEC_SIZE * 3), %rcx
-+	cmpq	%rcx, %r11
-+	jbe	L(zero)
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(%rsi, %rcx), %esi
-+	cmpl	(%rdx, %rcx), %esi
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rax, %rcx), %eax
-+	movzbl	(%rdx, %rcx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# else
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(VEC_SIZE * 3)(%rsi, %rcx), %esi
-+	cmpl	(VEC_SIZE * 3)(%rdx, %rcx), %esi
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(VEC_SIZE * 3)(%rax, %rcx), %eax
-+	movzbl	(VEC_SIZE * 3)(%rdx, %rcx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(loop_cross_page):
-+	xorl	%r10d, %r10d
-+	movq	%rdx, %rcx
-+	/* Align load via RDX.  We load the extra ECX bytes which should
-+	   be ignored.  */
-+	andl	$((VEC_SIZE * 4) - 1), %ecx
-+	/* R10 is -RCX.  */
-+	subq	%rcx, %r10
-+
-+	/* This works only if VEC_SIZE * 2 == 64. */
-+# if (VEC_SIZE * 2) != 64
-+#  error (VEC_SIZE * 2) != 64
-+# endif
-+
-+	/* Check if the first VEC_SIZE * 2 bytes should be ignored.  */
-+	cmpl	$(VEC_SIZE * 2), %ecx
-+	jge	L(loop_cross_page_2_vec)
-+
-+	vmovdqu	(%rax, %r10), %ymm2
-+	vmovdqu	VEC_SIZE(%rax, %r10), %ymm3
-+	VPCMPEQ	(%rdx, %r10), %ymm2, %ymm0
-+	VPCMPEQ	VEC_SIZE(%rdx, %r10), %ymm3, %ymm1
-+	VPMINU	%ymm2, %ymm0, %ymm0
-+	VPMINU	%ymm3, %ymm1, %ymm1
-+	VPCMPEQ	%ymm7, %ymm0, %ymm0
-+	VPCMPEQ	%ymm7, %ymm1, %ymm1
-+
-+	vpmovmskb %ymm0, %edi
-+	vpmovmskb %ymm1, %esi
-+
-+	salq	$32, %rsi
-+	xorq	%rsi, %rdi
-+
-+	/* Since ECX < VEC_SIZE * 2, simply skip the first ECX bytes.  */
-+	shrq	%cl, %rdi
-+
-+	testq	%rdi, %rdi
-+	je	L(loop_cross_page_2_vec)
-+	tzcntq	%rdi, %rcx
-+# ifdef USE_AS_STRNCMP
-+	cmpq	%rcx, %r11
-+	jbe	L(zero)
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(%rsi, %rcx), %edi
-+	cmpl	(%rdx, %rcx), %edi
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rax, %rcx), %eax
-+	movzbl	(%rdx, %rcx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# else
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(%rsi, %rcx), %edi
-+	cmpl	(%rdx, %rcx), %edi
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rax, %rcx), %eax
-+	movzbl	(%rdx, %rcx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(loop_cross_page_2_vec):
-+	/* The first VEC_SIZE * 2 bytes match or are ignored.  */
-+	vmovdqu	(VEC_SIZE * 2)(%rax, %r10), %ymm2
-+	vmovdqu	(VEC_SIZE * 3)(%rax, %r10), %ymm3
-+	VPCMPEQ	(VEC_SIZE * 2)(%rdx, %r10), %ymm2, %ymm5
-+	VPMINU	%ymm2, %ymm5, %ymm5
-+	VPCMPEQ	(VEC_SIZE * 3)(%rdx, %r10), %ymm3, %ymm6
-+	VPCMPEQ	%ymm7, %ymm5, %ymm5
-+	VPMINU	%ymm3, %ymm6, %ymm6
-+	VPCMPEQ	%ymm7, %ymm6, %ymm6
-+
-+	vpmovmskb %ymm5, %edi
-+	vpmovmskb %ymm6, %esi
-+
-+	salq	$32, %rsi
-+	xorq	%rsi, %rdi
-+
-+	xorl	%r8d, %r8d
-+	/* If ECX > VEC_SIZE * 2, skip ECX - (VEC_SIZE * 2) bytes.  */
-+	subl	$(VEC_SIZE * 2), %ecx
-+	jle	1f
-+	/* Skip ECX bytes.  */
-+	shrq	%cl, %rdi
-+	/* R8 has number of bytes skipped.  */
-+	movl	%ecx, %r8d
-+1:
-+	/* Before jumping back to the loop, set ESI to the number of
-+	   VEC_SIZE * 4 blocks before page crossing.  */
-+	movl	$(PAGE_SIZE / (VEC_SIZE * 4) - 1), %esi
-+
-+	testq	%rdi, %rdi
-+	je	L(back_to_loop)
-+	tzcntq	%rdi, %rcx
-+	addq	%r10, %rcx
-+	/* Adjust for number of bytes skipped.  */
-+	addq	%r8, %rcx
-+# ifdef USE_AS_STRNCMP
-+	addq	$(VEC_SIZE * 2), %rcx
-+	subq	%rcx, %r11
-+	jbe	L(zero)
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(%rsi, %rcx), %edi
-+	cmpl	(%rdx, %rcx), %edi
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rax, %rcx), %eax
-+	movzbl	(%rdx, %rcx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# else
-+#  ifdef USE_AS_WCSCMP
-+	movq	%rax, %rsi
-+	xorl	%eax, %eax
-+	movl	(VEC_SIZE * 2)(%rsi, %rcx), %edi
-+	cmpl	(VEC_SIZE * 2)(%rdx, %rcx), %edi
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(VEC_SIZE * 2)(%rax, %rcx), %eax
-+	movzbl	(VEC_SIZE * 2)(%rdx, %rcx), %edx
-+	subl	%edx, %eax
-+#  endif
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(cross_page_loop):
-+	/* Check one byte/dword at a time.  */
-+# ifdef USE_AS_WCSCMP
-+	cmpl	%ecx, %eax
-+# else
-+	subl	%ecx, %eax
-+# endif
-+	jne	L(different)
-+	addl	$SIZE_OF_CHAR, %edx
-+	cmpl	$(VEC_SIZE * 4), %edx
-+	je	L(main_loop_header)
-+# ifdef USE_AS_STRNCMP
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+# endif
-+# ifdef USE_AS_WCSCMP
-+	movl	(%rdi, %rdx), %eax
-+	movl	(%rsi, %rdx), %ecx
-+# else
-+	movzbl	(%rdi, %rdx), %eax
-+	movzbl	(%rsi, %rdx), %ecx
-+# endif
-+	/* Check null char.  */
-+	testl	%eax, %eax
-+	jne	L(cross_page_loop)
-+	/* Since %eax == 0, subtract is OK for both SIGNED and UNSIGNED
-+	   comparisons.  */
-+	subl	%ecx, %eax
-+# ifndef USE_AS_WCSCMP
-+L(different):
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+# ifdef USE_AS_WCSCMP
-+	.p2align 4
-+L(different):
-+	/* Use movl to avoid modifying EFLAGS.  */
-+	movl	$0, %eax
-+	setl	%al
-+	negl	%eax
-+	orl	$1, %eax
-+	VZEROUPPER
-+	ret
-+# endif
-+
-+# ifdef USE_AS_STRNCMP
-+	.p2align 4
-+L(zero):
-+	xorl	%eax, %eax
-+	VZEROUPPER
-+	ret
-+
-+	.p2align 4
-+L(char0):
-+#  ifdef USE_AS_WCSCMP
-+	xorl	%eax, %eax
-+	movl	(%rdi), %ecx
-+	cmpl	(%rsi), %ecx
-+	jne	L(wcscmp_return)
-+#  else
-+	movzbl	(%rsi), %ecx
-+	movzbl	(%rdi), %eax
-+	subl	%ecx, %eax
-+#  endif
-+	VZEROUPPER
-+	ret
-+# endif
-+
-+	.p2align 4
-+L(last_vector):
-+	addq	%rdx, %rdi
-+	addq	%rdx, %rsi
-+# ifdef USE_AS_STRNCMP
-+	subq	%rdx, %r11
-+# endif
-+	tzcntl	%ecx, %edx
-+# ifdef USE_AS_STRNCMP
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+# endif
-+# ifdef USE_AS_WCSCMP
-+	xorl	%eax, %eax
-+	movl	(%rdi, %rdx), %ecx
-+	cmpl	(%rsi, %rdx), %ecx
-+	jne	L(wcscmp_return)
-+# else
-+	movzbl	(%rdi, %rdx), %eax
-+	movzbl	(%rsi, %rdx), %edx
-+	subl	%edx, %eax
-+# endif
-+	VZEROUPPER
-+	ret
-+
-+	/* Comparing on page boundary region requires special treatment:
-+	   It must done one vector at the time, starting with the wider
-+	   ymm vector if possible, if not, with xmm. If fetching 16 bytes
-+	   (xmm) still passes the boundary, byte comparison must be done.
-+	 */
-+	.p2align 4
-+L(cross_page):
-+	/* Try one ymm vector at a time.  */
-+	cmpl	$(PAGE_SIZE - VEC_SIZE), %eax
-+	jg	L(cross_page_1_vector)
-+L(loop_1_vector):
-+	vmovdqu	(%rdi, %rdx), %ymm1
-+	VPCMPEQ	(%rsi, %rdx), %ymm1, %ymm0
-+	VPMINU	%ymm1, %ymm0, %ymm0
-+	VPCMPEQ	%ymm7, %ymm0, %ymm0
-+	vpmovmskb %ymm0, %ecx
-+	testl	%ecx, %ecx
-+	jne	L(last_vector)
-+
-+	addl	$VEC_SIZE, %edx
-+
-+	addl	$VEC_SIZE, %eax
-+# ifdef USE_AS_STRNCMP
-+	/* Return 0 if the current offset (%rdx) >= the maximum offset
-+	   (%r11).  */
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+# endif
-+	cmpl	$(PAGE_SIZE - VEC_SIZE), %eax
-+	jle	L(loop_1_vector)
-+L(cross_page_1_vector):
-+	/* Less than 32 bytes to check, try one xmm vector.  */
-+	cmpl	$(PAGE_SIZE - 16), %eax
-+	jg	L(cross_page_1_xmm)
-+	vmovdqu	(%rdi, %rdx), %xmm1
-+	VPCMPEQ	(%rsi, %rdx), %xmm1, %xmm0
-+	VPMINU	%xmm1, %xmm0, %xmm0
-+	VPCMPEQ	%xmm7, %xmm0, %xmm0
-+	vpmovmskb %xmm0, %ecx
-+	testl	%ecx, %ecx
-+	jne	L(last_vector)
-+
-+	addl	$16, %edx
-+# ifndef USE_AS_WCSCMP
-+	addl	$16, %eax
-+# endif
-+# ifdef USE_AS_STRNCMP
-+	/* Return 0 if the current offset (%rdx) >= the maximum offset
-+	   (%r11).  */
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+# endif
-+
-+L(cross_page_1_xmm):
-+# ifndef USE_AS_WCSCMP
-+	/* Less than 16 bytes to check, try 8 byte vector.  NB: No need
-+	   for wcscmp nor wcsncmp since wide char is 4 bytes.   */
-+	cmpl	$(PAGE_SIZE - 8), %eax
-+	jg	L(cross_page_8bytes)
-+	vmovq	(%rdi, %rdx), %xmm1
-+	vmovq	(%rsi, %rdx), %xmm0
-+	VPCMPEQ	%xmm0, %xmm1, %xmm0
-+	VPMINU	%xmm1, %xmm0, %xmm0
-+	VPCMPEQ	%xmm7, %xmm0, %xmm0
-+	vpmovmskb %xmm0, %ecx
-+	/* Only last 8 bits are valid.  */
-+	andl	$0xff, %ecx
-+	testl	%ecx, %ecx
-+	jne	L(last_vector)
-+
-+	addl	$8, %edx
-+	addl	$8, %eax
-+#  ifdef USE_AS_STRNCMP
-+	/* Return 0 if the current offset (%rdx) >= the maximum offset
-+	   (%r11).  */
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+#  endif
-+
-+L(cross_page_8bytes):
-+	/* Less than 8 bytes to check, try 4 byte vector.  */
-+	cmpl	$(PAGE_SIZE - 4), %eax
-+	jg	L(cross_page_4bytes)
-+	vmovd	(%rdi, %rdx), %xmm1
-+	vmovd	(%rsi, %rdx), %xmm0
-+	VPCMPEQ	%xmm0, %xmm1, %xmm0
-+	VPMINU	%xmm1, %xmm0, %xmm0
-+	VPCMPEQ	%xmm7, %xmm0, %xmm0
-+	vpmovmskb %xmm0, %ecx
-+	/* Only last 4 bits are valid.  */
-+	andl	$0xf, %ecx
-+	testl	%ecx, %ecx
-+	jne	L(last_vector)
-+
-+	addl	$4, %edx
-+#  ifdef USE_AS_STRNCMP
-+	/* Return 0 if the current offset (%rdx) >= the maximum offset
-+	   (%r11).  */
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+#  endif
-+
-+L(cross_page_4bytes):
-+# endif
-+	/* Less than 4 bytes to check, try one byte/dword at a time.  */
-+# ifdef USE_AS_STRNCMP
-+	cmpq	%r11, %rdx
-+	jae	L(zero)
-+# endif
-+# ifdef USE_AS_WCSCMP
-+	movl	(%rdi, %rdx), %eax
-+	movl	(%rsi, %rdx), %ecx
-+# else
-+	movzbl	(%rdi, %rdx), %eax
-+	movzbl	(%rsi, %rdx), %ecx
-+# endif
-+	testl	%eax, %eax
-+	jne	L(cross_page_loop)
-+	subl	%ecx, %eax
-+	VZEROUPPER
-+	ret
-+END (STRCMP)
-+#endif
-diff --git a/sysdeps/x86_64/multiarch/strcmp.c b/sysdeps/x86_64/multiarch/strcmp.c
-index 0335f96b09..b903e418df 100644
---- a/sysdeps/x86_64/multiarch/strcmp.c
-+++ b/sysdeps/x86_64/multiarch/strcmp.c
-@@ -29,12 +29,18 @@
- extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2) attribute_hidden;
- extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2_unaligned) attribute_hidden;
- extern __typeof (REDIRECT_NAME) OPTIMIZE (ssse3) attribute_hidden;
-+extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2) attribute_hidden;
- 
- static inline void *
- IFUNC_SELECTOR (void)
- {
-   const struct cpu_features* cpu_features = __get_cpu_features ();
- 
-+  if (!CPU_FEATURES_ARCH_P (cpu_features, Prefer_No_VZEROUPPER)
-+      && CPU_FEATURES_ARCH_P (cpu_features, AVX2_Usable)
-+      && CPU_FEATURES_ARCH_P (cpu_features, AVX_Fast_Unaligned_Load))
-+    return OPTIMIZE (avx2);
-+
-   if (CPU_FEATURES_ARCH_P (cpu_features, Fast_Unaligned_Load))
-     return OPTIMIZE (sse2_unaligned);
- 
-diff --git a/sysdeps/x86_64/multiarch/strncmp-avx2.S b/sysdeps/x86_64/multiarch/strncmp-avx2.S
-new file mode 100644
-index 0000000000..1678bcc235
---- /dev/null
-+++ b/sysdeps/x86_64/multiarch/strncmp-avx2.S
-@@ -0,0 +1,3 @@
-+#define STRCMP	__strncmp_avx2
-+#define USE_AS_STRNCMP 1
-+#include "strcmp-avx2.S"
-diff --git a/sysdeps/x86_64/multiarch/strncmp.c b/sysdeps/x86_64/multiarch/strncmp.c
-index 0d2d657a36..02b6d0b6f5 100644
---- a/sysdeps/x86_64/multiarch/strncmp.c
-+++ b/sysdeps/x86_64/multiarch/strncmp.c
-@@ -29,12 +29,18 @@
- extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2) attribute_hidden;
- extern __typeof (REDIRECT_NAME) OPTIMIZE (ssse3) attribute_hidden;
- extern __typeof (REDIRECT_NAME) OPTIMIZE (sse42) attribute_hidden;
-+extern __typeof (REDIRECT_NAME) OPTIMIZE (avx2) attribute_hidden;
- 
- static inline void *
- IFUNC_SELECTOR (void)
- {
-   const struct cpu_features* cpu_features = __get_cpu_features ();
- 
-+  if (!CPU_FEATURES_ARCH_P (cpu_features, Prefer_No_VZEROUPPER)
-+      && CPU_FEATURES_ARCH_P (cpu_features, AVX2_Usable)
-+      && CPU_FEATURES_ARCH_P (cpu_features, AVX_Fast_Unaligned_Load))
-+    return OPTIMIZE (avx2);
-+
-   if (CPU_FEATURES_CPU_P (cpu_features, SSE4_2)
-       && !CPU_FEATURES_ARCH_P (cpu_features, Slow_SSE4_2))
-     return OPTIMIZE (sse42);
-diff --git a/sysdeps/x86_64/multiarch/wcscmp-avx2.S b/sysdeps/x86_64/multiarch/wcscmp-avx2.S
-new file mode 100644
-index 0000000000..e5da4da689
---- /dev/null
-+++ b/sysdeps/x86_64/multiarch/wcscmp-avx2.S
-@@ -0,0 +1,4 @@
-+#define STRCMP __wcscmp_avx2
-+#define USE_AS_WCSCMP 1
-+
-+#include "strcmp-avx2.S"
-diff --git a/sysdeps/x86_64/multiarch/wcscmp-sse2.S b/sysdeps/x86_64/multiarch/wcscmp-sse2.S
-new file mode 100644
-index 0000000000..b129d1c073
---- /dev/null
-+++ b/sysdeps/x86_64/multiarch/wcscmp-sse2.S
-@@ -0,0 +1,23 @@
-+/* wcscmp optimized with SSE2.
-+   Copyright (C) 2018 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+
-+   The GNU C Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Lesser General Public
-+   License as published by the Free Software Foundation; either
-+   version 2.1 of the License, or (at your option) any later version.
-+
-+   The GNU C Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public
-+   License along with the GNU C Library; if not, see
-+   <http://www.gnu.org/licenses/>.  */
-+
-+#if IS_IN (libc)
-+# define __wcscmp __wcscmp_sse2
-+#endif
-+
-+#include "../wcscmp.S"
-diff --git a/sysdeps/x86_64/multiarch/wcscmp.c b/sysdeps/x86_64/multiarch/wcscmp.c
-new file mode 100644
-index 0000000000..74d92cf0f9
---- /dev/null
-+++ b/sysdeps/x86_64/multiarch/wcscmp.c
-@@ -0,0 +1,37 @@
-+/* Multiple versions of wcscmp.
-+   Copyright (C) 2017-2018 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+
-+   The GNU C Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Lesser General Public
-+   License as published by the Free Software Foundation; either
-+   version 2.1 of the License, or (at your option) any later version.
-+
-+   The GNU C Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public
-+   License along with the GNU C Library; if not, see
-+   <http://www.gnu.org/licenses/>.  */
-+
-+/* Define multiple versions only for the definition in libc.  */
-+#if IS_IN (libc)
-+# define wcscmp __redirect_wcscmp
-+# define __wcscmp __redirect___wcscmp
-+# include <wchar.h>
-+# undef wcscmp
-+# undef __wcscmp
-+
-+# define SYMBOL_NAME wcscmp
-+# include "ifunc-avx2.h"
-+
-+libc_ifunc_redirected (__redirect_wcscmp, __wcscmp, IFUNC_SELECTOR ());
-+weak_alias (__wcscmp, wcscmp)
-+
-+# ifdef SHARED
-+__hidden_ver1 (__wcscmp, __GI___wcscmp, __redirect_wcscmp)
-+  __attribute__ ((visibility ("hidden")));
-+# endif
-+#endif
-diff --git a/sysdeps/x86_64/multiarch/wcsncmp-avx2.S b/sysdeps/x86_64/multiarch/wcsncmp-avx2.S
-new file mode 100644
-index 0000000000..4fa1de4d3f
---- /dev/null
-+++ b/sysdeps/x86_64/multiarch/wcsncmp-avx2.S
-@@ -0,0 +1,5 @@
-+#define STRCMP __wcsncmp_avx2
-+#define USE_AS_STRNCMP 1
-+#define USE_AS_WCSCMP 1
-+
-+#include "strcmp-avx2.S"
-diff --git a/sysdeps/x86_64/multiarch/wcsncmp-sse2.c b/sysdeps/x86_64/multiarch/wcsncmp-sse2.c
-new file mode 100644
-index 0000000000..2bc7b4f693
---- /dev/null
-+++ b/sysdeps/x86_64/multiarch/wcsncmp-sse2.c
-@@ -0,0 +1,20 @@
-+/* wcsncmp optimized with SSE2.
-+   Copyright (C) 2018 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+
-+   The GNU C Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Lesser General Public
-+   License as published by the Free Software Foundation; either
-+   version 2.1 of the License, or (at your option) any later version.
-+
-+   The GNU C Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public
-+   License along with the GNU C Library; if not, see
-+   <http://www.gnu.org/licenses/>.  */
-+
-+#define WCSNCMP __wcsncmp_sse2
-+#include <wcsmbs/wcsncmp.c>
-diff --git a/sysdeps/x86_64/multiarch/wcsncmp.c b/sysdeps/x86_64/multiarch/wcsncmp.c
-new file mode 100644
-index 0000000000..90e9a352d9
---- /dev/null
-+++ b/sysdeps/x86_64/multiarch/wcsncmp.c
-@@ -0,0 +1,31 @@
-+/* Multiple versions of wcsncmp.
-+   Copyright (C) 2018 Free Software Foundation, Inc.
-+   This file is part of the GNU C Library.
-+
-+   The GNU C Library is free software; you can redistribute it and/or
-+   modify it under the terms of the GNU Lesser General Public
-+   License as published by the Free Software Foundation; either
-+   version 2.1 of the License, or (at your option) any later version.
-+
-+   The GNU C Library is distributed in the hope that it will be useful,
-+   but WITHOUT ANY WARRANTY; without even the implied warranty of
-+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+   Lesser General Public License for more details.
-+
-+   You should have received a copy of the GNU Lesser General Public
-+   License along with the GNU C Library; if not, see
-+   <http://www.gnu.org/licenses/>.  */
-+
-+/* Define multiple versions only for the definition in libc.  */
-+#if IS_IN (libc)
-+# define wcsncmp __redirect_wcsncmp
-+# define __wcsncmp __redirect___wcsncmp
-+# include <wchar.h>
-+# undef wcsncmp
-+# undef __wcsncmp
-+
-+# define SYMBOL_NAME wcsncmp
-+# include "ifunc-avx2.h"
-+
-+libc_ifunc_redirected (__redirect_wcsncmp, wcsncmp, IFUNC_SELECTOR ());
-+#endif
-diff --git a/sysdeps/x86_64/wcscmp.S b/sysdeps/x86_64/wcscmp.S
-index 1b9f81f54c..0d506c8b5c 100644
---- a/sysdeps/x86_64/wcscmp.S
-+++ b/sysdeps/x86_64/wcscmp.S
-@@ -946,5 +946,7 @@ L(equal):
- 	ret
- 
- END (__wcscmp)
-+#ifndef __wcscmp
- libc_hidden_def (__wcscmp)
- weak_alias (__wcscmp, wcscmp)
-+#endif
--- 
-2.19.1
-
diff --git a/sys-libs/glibc/files/local/glibc-2.30-i386-comdat.patch b/sys-libs/glibc/files/local/glibc-2.30-i386-comdat.patch
deleted file mode 100644
index 6da7d3b..0000000
--- a/sys-libs/glibc/files/local/glibc-2.30-i386-comdat.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-Patch modified from upstream to drop changes to NEWS that do not
-apply cleanly.
-
-From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
-Date: Fri, 28 Feb 2020 10:46:14 -0300
-Subject: [PATCH] i386: Use comdat instead of .gnu.linkonce for i386 setup pic
- register (BZ #20543)
-
-GCC has moved from using .gnu.linkonce for i386 setup pic register with
-minimum current version (as for binutils minimum binutils that support
-comdat).
-
-Trying to pinpoint when binutils has added comdat support for i686, it
-seems it was around 2004 [1].  I also checking with some ancient
-binutils older than 2.16 I see:
-
-test.o: In function `__x86.get_pc_thunk.bx':
-test.o(.text.__x86.get_pc_thunk.bx+0x0): multiple definition of `__x86.get_pc_thunk.bx'
-/usr/lib/gcc/x86_64-linux-gnu/5/../../../i386-linux-gnu/crti.o(.gnu.linkonce.t.__x86.get_pc_thunk.bx+0x0): first defined here
-
-Which seems that such version can not handle either comdat at all or
-a mix of linkonce and comdat.  For binutils 2.16.1 I am getting a
-different issue trying to link a binary with and more recent
-ctri.o (unrecognized relocation (0x2b) in section `.init', which is
-R_386_GOT32X and old binutils won't generate it anyway).
-
-So I think that either unlikely someone will use an older binutils than
-the one used to glibc and even this scenario may fail with some issue
-as the R_386_GOT32X.  Also, 2.16.1 is quite old and not really supported
-(glibc itself required 2.25).
-
-Checked on i686-linux-gnu.
-
-[1] https://gcc.gnu.org/ml/gcc/2004-05/msg00030.html
-
-(cherry picked from commit 35200fd3892f6caf867bf89bc8048e553906af28)
----
- NEWS                  | 1 +
- sysdeps/i386/sysdep.h | 5 +++--
- 2 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h
-index 749b55b077..eee6d586c1 100644
---- a/sysdeps/i386/sysdep.h
-+++ b/sysdeps/i386/sysdep.h
-@@ -61,7 +61,7 @@ lose: SYSCALL_PIC_SETUP							      \
- 
- # define SETUP_PIC_REG(reg) \
-   .ifndef GET_PC_THUNK(reg);						      \
--  .section .gnu.linkonce.t.GET_PC_THUNK(reg),"ax",@progbits;		      \
-+  .section .text.GET_PC_THUNK(reg),"axG",@progbits,GET_PC_THUNK(reg),comdat;  \
-   .globl GET_PC_THUNK(reg);						      \
-   .hidden GET_PC_THUNK(reg);						      \
-   .p2align 4;								      \
-@@ -97,7 +97,8 @@ GET_PC_THUNK(reg):							      \
- 
- # define SETUP_PIC_REG_STR(reg)						\
-   ".ifndef " GET_PC_THUNK_STR (reg) "\n"				\
--  ".section .gnu.linkonce.t." GET_PC_THUNK_STR (reg) ",\"ax\",@progbits\n" \
-+  ".section .text." GET_PC_THUNK_STR (reg) ",\"axG\",@progbits,"	\
-+    GET_PC_THUNK_STR (reg) ",comdat\n"					\
-   ".globl " GET_PC_THUNK_STR (reg) "\n"					\
-   ".hidden " GET_PC_THUNK_STR (reg) "\n"				\
-   ".p2align 4\n"							\
--- 
-2.18.4
-
diff --git a/sys-libs/glibc/files/local/glibc-2.30-optimize-strstr-memmem.patch b/sys-libs/glibc/files/local/glibc-2.30-optimize-strstr-memmem.patch
deleted file mode 100644
index aafc0e0..0000000
--- a/sys-libs/glibc/files/local/glibc-2.30-optimize-strstr-memmem.patch
+++ /dev/null
@@ -1,728 +0,0 @@
-Backport performance improvements of memmem and strstr from glibc 2.30.
-
-Changes come from the following commits w/o midifications:
-680942b016 Improve performance of memmem
- string/memmem.c | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------
- 1 file changed, 85 insertions(+), 42 deletions(-)
-5e0a7ecb66 Improve performance of strstr
- string/str-two-way.h |   9 +++++---
- string/strstr.c      | 165 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------
- 2 files changed, 123 insertions(+), 51 deletions(-)
-
-Additional commits were included in the patch to resolve the conflicts.
-No modifications were added.
-
-34a5a1460e Break some lines before not after operators.
- string/test-memmem.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-04277e02d7 Update copyright dates with scripts/update-copyrights.
- string/memmem.c      | 2 +-
- string/str-two-way.h | 2 +-
- string/strcasestr.c  | 2 +-
- string/strstr.c      | 2 +-
- string/test-memmem.c | 2 +-
- string/test-strstr.c | 2 +-
-83a552b0bb Fix strstr bug with huge needles (bug 23637)
- string/strcasestr.c  |  5 +++--
- string/strstr.c      |  5 +++--
- string/test-strstr.c | 30 ++++++++++++++++++++++++++++++
- 3 files changed, 36 insertions(+), 4 deletions(-)
-c8dd67e7c9 Speedup first memmem match
- string/memmem.c | 4 ++++
- 1 file changed, 4 insertions(+)
-284f42bc77 Simplify and speedup strstr/strcasestr first match
- string/strcasestr.c | 37 ++++++++++++++-----------------------
- string/strstr.c     | 43 +++++++++++++++++++++----------------------
- 2 files changed, 35 insertions(+), 45 deletions(-)
-3ae725dfb6 Improve strstr performance
- string/memmem.c      |  1 +
- string/str-two-way.h | 56 +++++++++++++++++++++++++++-----------------------------
- string/strcasestr.c  |  4 ++--
- string/strstr.c      |  5 +++--
- string/test-strstr.c |  1 +
- 5 files changed, 34 insertions(+), 33 deletions(-)
-
-diff --git a/string/memmem.c b/string/memmem.c
-index c17e1cf6a6..83ee75e8c7 100644
---- a/string/memmem.c
-+++ b/string/memmem.c
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1991-2018 Free Software Foundation, Inc.
-+/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
-@@ -15,67 +15,115 @@
-    License along with the GNU C Library; if not, see
-    <http://www.gnu.org/licenses/>.  */
- 
--/* This particular implementation was written by Eric Blake, 2008.  */
--
- #ifndef _LIBC
- # include <config.h>
- #endif
- 
--/* Specification of memmem.  */
- #include <string.h>
- 
- #ifndef _LIBC
--# define __builtin_expect(expr, val)   (expr)
- # define __memmem	memmem
- #endif
- 
- #define RETURN_TYPE void *
- #define AVAILABLE(h, h_l, j, n_l) ((j) <= (h_l) - (n_l))
-+#define FASTSEARCH(S,C,N) (void*) memchr ((void *)(S), (C), (N))
- #include "str-two-way.h"
- 
- #undef memmem
- 
--/* Return the first occurrence of NEEDLE in HAYSTACK.  Return HAYSTACK
--   if NEEDLE_LEN is 0, otherwise NULL if NEEDLE is not found in
--   HAYSTACK.  */
-+/* Hash character pairs so a small shift table can be used.  All bits of
-+   p[0] are included, but not all bits from p[-1].  So if two equal hashes
-+   match on p[-1], p[0] matches too.  Hash collisions are harmless and result
-+   in smaller shifts.  */
-+#define hash2(p) (((size_t)(p)[0] - ((size_t)(p)[-1] << 3)) % sizeof (shift))
-+
-+/* Fast memmem algorithm with guaranteed linear-time performance.
-+   Small needles up to size 2 use a dedicated linear search.  Longer needles
-+   up to size 256 use a novel modified Horspool algorithm.  It hashes pairs
-+   of characters to quickly skip past mismatches.  The main search loop only
-+   exits if the last 2 characters match, avoiding unnecessary calls to memcmp
-+   and allowing for a larger skip if there is no match.  A self-adapting
-+   filtering check is used to quickly detect mismatches in long needles.
-+   By limiting the needle length to 256, the shift table can be reduced to 8
-+   bits per entry, lowering preprocessing overhead and minimizing cache effects.
-+   The limit also implies worst-case performance is linear.
-+   Needles larger than 256 characters use the linear-time Two-Way algorithm.  */
- void *
--__memmem (const void *haystack_start, size_t haystack_len,
--	  const void *needle_start, size_t needle_len)
-+__memmem (const void *haystack, size_t hs_len,
-+	  const void *needle, size_t ne_len)
- {
--  /* Abstract memory is considered to be an array of 'unsigned char' values,
--     not an array of 'char' values.  See ISO C 99 section 6.2.6.1.  */
--  const unsigned char *haystack = (const unsigned char *) haystack_start;
--  const unsigned char *needle = (const unsigned char *) needle_start;
--
--  if (needle_len == 0)
--    /* The first occurrence of the empty string is deemed to occur at
--       the beginning of the string.  */
--    return (void *) haystack;
--
--  /* Sanity check, otherwise the loop might search through the whole
--     memory.  */
--  if (__glibc_unlikely (haystack_len < needle_len))
-+  const unsigned char *hs = (const unsigned char *) haystack;
-+  const unsigned char *ne = (const unsigned char *) needle;
-+
-+  if (ne_len == 0)
-+    return (void *) hs;
-+  if (ne_len == 1)
-+    return (void *) memchr (hs, ne[0], hs_len);
-+
-+  /* Ensure haystack length is >= needle length.  */
-+  if (hs_len < ne_len)
-     return NULL;
- 
--  /* Use optimizations in memchr when possible, to reduce the search
--     size of haystack using a linear algorithm with a smaller
--     coefficient.  However, avoid memchr for long needles, since we
--     can often achieve sublinear performance.  */
--  if (needle_len < LONG_NEEDLE_THRESHOLD)
-+  const unsigned char *end = hs + hs_len - ne_len;
-+
-+  if (ne_len == 2)
-+    {
-+      uint32_t nw = ne[0] << 16 | ne[1], hw = hs[0] << 16 | hs[1];
-+      for (hs++; hs <= end && hw != nw; )
-+	hw = hw << 16 | *++hs;
-+      return hw == nw ? (void *)hs - 1 : NULL;
-+    }
-+
-+  /* Use Two-Way algorithm for very long needles.  */
-+  if (__builtin_expect (ne_len > 256, 0))
-+    return two_way_long_needle (hs, hs_len, ne, ne_len);
-+
-+  uint8_t shift[256];
-+  size_t tmp, shift1;
-+  size_t m1 = ne_len - 1;
-+  size_t offset = 0;
-+
-+  memset (shift, 0, sizeof (shift));
-+  for (int i = 1; i < m1; i++)
-+    shift[hash2 (ne + i)] = i;
-+  /* Shift1 is the amount we can skip after matching the hash of the
-+     needle end but not the full needle.  */
-+  shift1 = m1 - shift[hash2 (ne + m1)];
-+  shift[hash2 (ne + m1)] = m1;
-+
-+  for ( ; hs <= end; )
-     {
--      haystack = memchr (haystack, *needle, haystack_len);
--      if (!haystack || __builtin_expect (needle_len == 1, 0))
--	return (void *) haystack;
--      haystack_len -= haystack - (const unsigned char *) haystack_start;
--      if (haystack_len < needle_len)
--	return NULL;
--      return two_way_short_needle (haystack, haystack_len, needle, needle_len);
-+      /* Skip past character pairs not in the needle.  */
-+      do
-+	{
-+	  hs += m1;
-+	  tmp = shift[hash2 (hs)];
-+	}
-+      while (tmp == 0 && hs <= end);
-+
-+      /* If the match is not at the end of the needle, shift to the end
-+	 and continue until we match the hash of the needle end.  */
-+      hs -= tmp;
-+      if (tmp < m1)
-+	continue;
-+
-+      /* Hash of the last 2 characters matches.  If the needle is long,
-+	 try to quickly filter out mismatches.  */
-+      if (m1 < 15 || memcmp (hs + offset, ne + offset, 8) == 0)
-+	{
-+	  if (memcmp (hs, ne, m1) == 0)
-+	    return (void *) hs;
-+
-+	  /* Adjust filter offset when it doesn't find the mismatch.  */
-+	  offset = (offset >= 8 ? offset : m1) - 8;
-+	}
-+
-+      /* Skip based on matching the hash of the needle end.  */
-+      hs += shift1;
-     }
--  else
--    return two_way_long_needle (haystack, haystack_len, needle, needle_len);
-+  return NULL;
- }
- libc_hidden_def (__memmem)
- weak_alias (__memmem, memmem)
- libc_hidden_weak (memmem)
--
--#undef LONG_NEEDLE_THRESHOLD
-diff --git a/string/str-two-way.h b/string/str-two-way.h
-index cd2605857d..f43c613f5a 100644
---- a/string/str-two-way.h
-+++ b/string/str-two-way.h
-@@ -1,5 +1,5 @@
- /* Byte-wise substring search, using the Two-Way algorithm.
--   Copyright (C) 2008-2018 Free Software Foundation, Inc.
-+   Copyright (C) 2008-2019 Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
-    Written by Eric Blake <ebb9@byu.net>, 2008.
- 
-@@ -221,7 +221,7 @@ critical_factorization (const unsigned char *needle, size_t needle_len,
-    most 2 * HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching.
-    If AVAILABLE modifies HAYSTACK_LEN (as in strstr), then at most 3 *
-    HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching.  */
--static RETURN_TYPE
-+static inline RETURN_TYPE
- two_way_short_needle (const unsigned char *haystack, size_t haystack_len,
- 		      const unsigned char *needle, size_t needle_len)
- {
-@@ -281,50 +281,50 @@ two_way_short_needle (const unsigned char *haystack, size_t haystack_len,
-     }
-   else
-     {
--      const unsigned char *phaystack = &haystack[suffix];
-+      const unsigned char *phaystack;
-       /* The comparison always starts from needle[suffix], so cache it
- 	 and use an optimized first-character loop.  */
-       unsigned char needle_suffix = CANON_ELEMENT (needle[suffix]);
- 
--#if CHECK_EOL
--      /* We start matching from the SUFFIX'th element, so make sure we
--	 don't hit '\0' before that.  */
--      if (haystack_len < suffix + 1
--	  && !AVAILABLE (haystack, haystack_len, 0, suffix + 1))
--	return NULL;
--#endif
--
-       /* The two halves of needle are distinct; no extra memory is
- 	 required, and any mismatch results in a maximal shift.  */
-       period = MAX (suffix, needle_len - suffix) + 1;
-       j = 0;
--      while (1
--#if !CHECK_EOL
--	     && AVAILABLE (haystack, haystack_len, j, needle_len)
--#endif
--	     )
-+      while (AVAILABLE (haystack, haystack_len, j, needle_len))
- 	{
- 	  unsigned char haystack_char;
- 	  const unsigned char *pneedle;
- 
--	  /* TODO: The first-character loop can be sped up by adapting
--	     longword-at-a-time implementation of memchr/strchr.  */
--	  if (needle_suffix
-+	  phaystack = &haystack[suffix + j];
-+
-+#ifdef FASTSEARCH
-+	  if (*phaystack++ != needle_suffix)
-+	    {
-+	      phaystack = FASTSEARCH (phaystack, needle_suffix,
-+				      haystack_len - needle_len - j);
-+	      if (phaystack == NULL)
-+		goto ret0;
-+	      j = phaystack - &haystack[suffix];
-+	      phaystack++;
-+	    }
-+#else
-+	  while (needle_suffix
- 	      != (haystack_char = CANON_ELEMENT (*phaystack++)))
- 	    {
- 	      RET0_IF_0 (haystack_char);
--#if !CHECK_EOL
-+# if !CHECK_EOL
- 	      ++j;
--#endif
--	      continue;
-+	      if (!AVAILABLE (haystack, haystack_len, j, needle_len))
-+		goto ret0;
-+# endif
- 	    }
- 
--#if CHECK_EOL
-+# if CHECK_EOL
- 	  /* Calculate J if it wasn't kept up-to-date in the first-character
- 	     loop.  */
- 	  j = phaystack - &haystack[suffix] - 1;
-+# endif
- #endif
--
- 	  /* Scan for matches in right half.  */
- 	  i = suffix + 1;
- 	  pneedle = &needle[i];
-@@ -338,6 +338,11 @@ two_way_short_needle (const unsigned char *haystack, size_t haystack_len,
- 		}
- 	      ++i;
- 	    }
-+#if CHECK_EOL
-+	  /* Update minimal length of haystack.  */
-+	  if (phaystack > haystack + haystack_len)
-+	    haystack_len = phaystack - haystack;
-+#endif
- 	  if (needle_len <= i)
- 	    {
- 	      /* Scan for matches in left half.  */
-@@ -360,13 +365,6 @@ two_way_short_needle (const unsigned char *haystack, size_t haystack_len,
- 	    }
- 	  else
- 	    j += i - suffix + 1;
--
--#if CHECK_EOL
--	  if (!AVAILABLE (haystack, haystack_len, j, needle_len))
--	    break;
--#endif
--
--	  phaystack = &haystack[suffix + j];
- 	}
-     }
-  ret0: __attribute__ ((unused))
-@@ -384,8 +382,11 @@ two_way_short_needle (const unsigned char *haystack, size_t haystack_len,
-    and sublinear performance O(HAYSTACK_LEN / NEEDLE_LEN) is possible.
-    If AVAILABLE modifies HAYSTACK_LEN (as in strstr), then at most 3 *
-    HAYSTACK_LEN - NEEDLE_LEN comparisons occur in searching, and
--   sublinear performance is not possible.  */
--static RETURN_TYPE
-+   sublinear performance is not possible.
-+
-+   Since this function is large and complex, block inlining to avoid
-+   slowing down the common case of small needles.  */
-+__attribute__((noinline)) static RETURN_TYPE
- two_way_long_needle (const unsigned char *haystack, size_t haystack_len,
- 		     const unsigned char *needle, size_t needle_len)
- {
-diff --git a/string/strcasestr.c b/string/strcasestr.c
-index 90ba189790..a2aba000b1 100644
---- a/string/strcasestr.c
-+++ b/string/strcasestr.c
-@@ -1,5 +1,5 @@
- /* Return the offset of one string within another.
--   Copyright (C) 1994-2018 Free Software Foundation, Inc.
-+   Copyright (C) 1994-2019 Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
-@@ -37,8 +37,9 @@
- /* Two-Way algorithm.  */
- #define RETURN_TYPE char *
- #define AVAILABLE(h, h_l, j, n_l)			\
--  (!memchr ((h) + (h_l), '\0', (j) + (n_l) - (h_l))	\
--   && ((h_l) = (j) + (n_l)))
-+  (((j) + (n_l) <= (h_l)) \
-+   || ((h_l) += __strnlen ((void*)((h) + (h_l)), (n_l) + 512), \
-+       (j) + (n_l) <= (h_l)))
- #define CHECK_EOL (1)
- #define RET0_IF_0(a) if (!a) goto ret0
- #define CANON_ELEMENT(c) TOLOWER (c)
-@@ -58,31 +59,22 @@
-    case-insensitive comparison.  This function gives unspecified
-    results in multibyte locales.  */
- char *
--STRCASESTR (const char *haystack_start, const char *needle_start)
-+STRCASESTR (const char *haystack, const char *needle)
- {
--  const char *haystack = haystack_start;
--  const char *needle = needle_start;
-   size_t needle_len; /* Length of NEEDLE.  */
-   size_t haystack_len; /* Known minimum length of HAYSTACK.  */
--  bool ok = true; /* True if NEEDLE is prefix of HAYSTACK.  */
--
--  /* Determine length of NEEDLE, and in the process, make sure
--     HAYSTACK is at least as long (no point processing all of a long
--     NEEDLE if HAYSTACK is too short).  */
--  while (*haystack && *needle)
--    {
--      ok &= (TOLOWER ((unsigned char) *haystack)
--	     == TOLOWER ((unsigned char) *needle));
--      haystack++;
--      needle++;
--    }
--  if (*needle)
-+
-+  /* Handle empty NEEDLE special case.  */
-+  if (needle[0] == '\0')
-+    return (char *) haystack;
-+
-+  /* Ensure HAYSTACK length is at least as long as NEEDLE length.
-+     Since a match may occur early on in a huge HAYSTACK, use strnlen
-+     and read ahead a few cachelines for improved performance.  */
-+  needle_len = strlen (needle);
-+  haystack_len = __strnlen (haystack, needle_len + 256);
-+  if (haystack_len < needle_len)
-     return NULL;
--  if (ok)
--    return (char *) haystack_start;
--  needle_len = needle - needle_start;
--  haystack = haystack_start + 1;
--  haystack_len = needle_len - 1;
- 
-   /* Perform the search.  Abstract memory is considered to be an array
-      of 'unsigned char' values, not an array of 'char' values.  See
-@@ -90,10 +82,10 @@ STRCASESTR (const char *haystack_start, const char *needle_start)
-   if (needle_len < LONG_NEEDLE_THRESHOLD)
-     return two_way_short_needle ((const unsigned char *) haystack,
- 				 haystack_len,
--				 (const unsigned char *) needle_start,
-+				 (const unsigned char *) needle,
- 				 needle_len);
-   return two_way_long_needle ((const unsigned char *) haystack, haystack_len,
--			      (const unsigned char *) needle_start,
-+			      (const unsigned char *) needle,
- 			      needle_len);
- }
- 
-diff --git a/string/strstr.c b/string/strstr.c
-index b3b5deb673..408cce8ed5 100644
---- a/string/strstr.c
-+++ b/string/strstr.c
-@@ -1,5 +1,5 @@
- /* Return the offset of one string within another.
--   Copyright (C) 1994-2018 Free Software Foundation, Inc.
-+   Copyright (C) 1994-2019 Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
- 
-    The GNU C Library is free software; you can redistribute it and/or
-@@ -16,27 +16,17 @@
-    License along with the GNU C Library; if not, see
-    <http://www.gnu.org/licenses/>.  */
- 
--/* This particular implementation was written by Eric Blake, 2008.  */
--
- #ifndef _LIBC
- # include <config.h>
- #endif
- 
--/* Specification of strstr.  */
- #include <string.h>
- 
--#include <stdbool.h>
--
--#ifndef _LIBC
--# define __builtin_expect(expr, val)   (expr)
--#endif
--
- #define RETURN_TYPE char *
- #define AVAILABLE(h, h_l, j, n_l)			\
--  (!memchr ((h) + (h_l), '\0', (j) + (n_l) - (h_l))	\
--   && ((h_l) = (j) + (n_l)))
--#define CHECK_EOL (1)
--#define RET0_IF_0(a) if (!a) goto ret0
-+  (((j) + (n_l) <= (h_l)) \
-+   || ((h_l) += __strnlen ((void*)((h) + (h_l)), (n_l) + 512), \
-+       (j) + (n_l) <= (h_l)))
- #include "str-two-way.h"
- 
- #undef strstr
-@@ -45,48 +35,128 @@
- #define STRSTR strstr
- #endif
- 
--/* Return the first occurrence of NEEDLE in HAYSTACK.  Return HAYSTACK
--   if NEEDLE is empty, otherwise NULL if NEEDLE is not found in
--   HAYSTACK.  */
-+static inline char *
-+strstr2 (const unsigned char *hs, const unsigned char *ne)
-+{
-+  uint32_t h1 = (ne[0] << 16) | ne[1];
-+  uint32_t h2 = 0;
-+  for (int c = hs[0]; h1 != h2 && c != 0; c = *++hs)
-+      h2 = (h2 << 16) | c;
-+  return h1 == h2 ? (char *)hs - 2 : NULL;
-+}
-+
-+static inline char *
-+strstr3 (const unsigned char *hs, const unsigned char *ne)
-+{
-+  uint32_t h1 = ((uint32_t)ne[0] << 24) | (ne[1] << 16) | (ne[2] << 8);
-+  uint32_t h2 = 0;
-+  for (int c = hs[0]; h1 != h2 && c != 0; c = *++hs)
-+      h2 = (h2 | c) << 8;
-+  return h1 == h2 ? (char *)hs - 3 : NULL;
-+}
-+
-+/* Hash character pairs so a small shift table can be used.  All bits of
-+   p[0] are included, but not all bits from p[-1].  So if two equal hashes
-+   match on p[-1], p[0] matches too.  Hash collisions are harmless and result
-+   in smaller shifts.  */
-+#define hash2(p) (((size_t)(p)[0] - ((size_t)(p)[-1] << 3)) % sizeof (shift))
-+
-+/* Fast strstr algorithm with guaranteed linear-time performance.
-+   Small needles up to size 3 use a dedicated linear search.  Longer needles
-+   up to size 256 use a novel modified Horspool algorithm.  It hashes pairs
-+   of characters to quickly skip past mismatches.  The main search loop only
-+   exits if the last 2 characters match, avoiding unnecessary calls to memcmp
-+   and allowing for a larger skip if there is no match.  A self-adapting
-+   filtering check is used to quickly detect mismatches in long needles.
-+   By limiting the needle length to 256, the shift table can be reduced to 8
-+   bits per entry, lowering preprocessing overhead and minimizing cache effects.
-+   The limit also implies worst-case performance is linear.
-+   Needles larger than 256 characters use the linear-time Two-Way algorithm.  */
- char *
--STRSTR (const char *haystack_start, const char *needle_start)
-+STRSTR (const char *haystack, const char *needle)
- {
--  const char *haystack = haystack_start;
--  const char *needle = needle_start;
--  size_t needle_len; /* Length of NEEDLE.  */
--  size_t haystack_len; /* Known minimum length of HAYSTACK.  */
--  bool ok = true; /* True if NEEDLE is prefix of HAYSTACK.  */
--
--  /* Determine length of NEEDLE, and in the process, make sure
--     HAYSTACK is at least as long (no point processing all of a long
--     NEEDLE if HAYSTACK is too short).  */
--  while (*haystack && *needle)
--    ok &= *haystack++ == *needle++;
--  if (*needle)
-+  const unsigned char *hs = (const unsigned char *) haystack;
-+  const unsigned char *ne = (const unsigned char *) needle;
-+
-+  /* Handle short needle special cases first.  */
-+  if (ne[0] == '\0')
-+    return (char *)hs;
-+  hs = (const unsigned char *)strchr ((const char*)hs, ne[0]);
-+  if (hs == NULL || ne[1] == '\0')
-+    return (char*)hs;
-+  if (ne[2] == '\0')
-+    return strstr2 (hs, ne);
-+  if (ne[3] == '\0')
-+    return strstr3 (hs, ne);
-+
-+  /* Ensure haystack length is at least as long as needle length.
-+     Since a match may occur early on in a huge haystack, use strnlen
-+     and read ahead a few cachelines for improved performance.  */
-+  size_t ne_len = strlen ((const char*)ne);
-+  size_t hs_len = __strnlen ((const char*)hs, ne_len | 512);
-+  if (hs_len < ne_len)
-     return NULL;
--  if (ok)
--    return (char *) haystack_start;
--
--  /* Reduce the size of haystack using strchr, since it has a smaller
--     linear coefficient than the Two-Way algorithm.  */
--  needle_len = needle - needle_start;
--  haystack = strchr (haystack_start + 1, *needle_start);
--  if (!haystack || __builtin_expect (needle_len == 1, 0))
--    return (char *) haystack;
--  needle -= needle_len;
--  haystack_len = (haystack > haystack_start + needle_len ? 1
--		  : needle_len + haystack_start - haystack);
--
--  /* Perform the search.  Abstract memory is considered to be an array
--     of 'unsigned char' values, not an array of 'char' values.  See
--     ISO C 99 section 6.2.6.1.  */
--  if (needle_len < LONG_NEEDLE_THRESHOLD)
--    return two_way_short_needle ((const unsigned char *) haystack,
--				 haystack_len,
--				 (const unsigned char *) needle, needle_len);
--  return two_way_long_needle ((const unsigned char *) haystack, haystack_len,
--			      (const unsigned char *) needle, needle_len);
-+
-+  /* Check whether we have a match.  This improves performance since we
-+     avoid initialization overheads.  */
-+  if (memcmp (hs, ne, ne_len) == 0)
-+    return (char *) hs;
-+
-+  /* Use Two-Way algorithm for very long needles.  */
-+  if (__glibc_unlikely (ne_len > 256))
-+    return two_way_long_needle (hs, hs_len, ne, ne_len);
-+
-+  const unsigned char *end = hs + hs_len - ne_len;
-+  uint8_t shift[256];
-+  size_t tmp, shift1;
-+  size_t m1 = ne_len - 1;
-+  size_t offset = 0;
-+
-+  /* Initialize bad character shift hash table.  */
-+  memset (shift, 0, sizeof (shift));
-+  for (int i = 1; i < m1; i++)
-+    shift[hash2 (ne + i)] = i;
-+  /* Shift1 is the amount we can skip after matching the hash of the
-+     needle end but not the full needle.  */
-+  shift1 = m1 - shift[hash2 (ne + m1)];
-+  shift[hash2 (ne + m1)] = m1;
-+
-+  while (1)
-+    {
-+      if (__glibc_unlikely (hs > end))
-+	{
-+	  end += __strnlen ((const char*)end + m1 + 1, 2048);
-+	  if (hs > end)
-+	    return NULL;
-+	}
-+
-+      /* Skip past character pairs not in the needle.  */
-+      do
-+	{
-+	  hs += m1;
-+	  tmp = shift[hash2 (hs)];
-+	}
-+      while (tmp == 0 && hs <= end);
-+
-+      /* If the match is not at the end of the needle, shift to the end
-+	 and continue until we match the hash of the needle end.  */
-+      hs -= tmp;
-+      if (tmp < m1)
-+	continue;
-+
-+      /* Hash of the last 2 characters matches.  If the needle is long,
-+	 try to quickly filter out mismatches.  */
-+      if (m1 < 15 || memcmp (hs + offset, ne + offset, 8) == 0)
-+	{
-+	  if (memcmp (hs, ne, m1) == 0)
-+	    return (void *) hs;
-+
-+	  /* Adjust filter offset when it doesn't find the mismatch.  */
-+	  offset = (offset >= 8 ? offset : m1) - 8;
-+	}
-+
-+      /* Skip based on matching the hash of the needle end.  */
-+      hs += shift1;
-+    }
- }
- libc_hidden_builtin_def (strstr)
--
--#undef LONG_NEEDLE_THRESHOLD
-diff --git a/string/test-memmem.c b/string/test-memmem.c
-index 51f58d1eda..2ac7f18c71 100644
---- a/string/test-memmem.c
-+++ b/string/test-memmem.c
-@@ -1,5 +1,5 @@
- /* Test and measure memmem functions.
--   Copyright (C) 2008-2018 Free Software Foundation, Inc.
-+   Copyright (C) 2008-2019 Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
-    Written by Ulrich Drepper <drepper@redhat.com>, 2008.
- 
-@@ -48,10 +48,10 @@ simple_memmem (const void *haystack, size_t haystack_len, const void *needle,
-     return NULL;
- 
-   for (begin = (const char *) haystack; begin <= last_possible; ++begin)
--    if (begin[0] == ((const char *) needle)[0] &&
--        !memcmp ((const void *) &begin[1],
--                 (const void *) ((const char *) needle + 1),
--                 needle_len - 1))
-+    if (begin[0] == ((const char *) needle)[0]
-+        && !memcmp ((const void *) &begin[1],
-+		    (const void *) ((const char *) needle + 1),
-+		    needle_len - 1))
-       return (void *) begin;
- 
-   return NULL;
-diff --git a/string/test-strstr.c b/string/test-strstr.c
-index acf6ff8224..031aff5534 100644
---- a/string/test-strstr.c
-+++ b/string/test-strstr.c
-@@ -1,5 +1,5 @@
- /* Test and measure strstr functions.
--   Copyright (C) 2010-2018 Free Software Foundation, Inc.
-+   Copyright (C) 2010-2019 Free Software Foundation, Inc.
-    This file is part of the GNU C Library.
-    Written by Ulrich Drepper <drepper@redhat.com>, 2010.
- 
-@@ -24,6 +24,7 @@
- 
- #define STRSTR simple_strstr
- #define libc_hidden_builtin_def(arg) /* nothing */
-+#define __strnlen strnlen
- #include "strstr.c"
- 
- 
-@@ -150,6 +151,32 @@ check2 (void)
-     }
- }
- 
-+#define N 1024
-+
-+static void
-+pr23637 (void)
-+{
-+  char *h = (char*) buf1;
-+  char *n = (char*) buf2;
-+
-+  for (int i = 0; i < N; i++)
-+    {
-+      n[i] = 'x';
-+      h[i] = ' ';
-+      h[i + N] = 'x';
-+    }
-+
-+  n[N] = '\0';
-+  h[N * 2] = '\0';
-+
-+  /* Ensure we don't match at the first 'x'.  */
-+  h[0] = 'x';
-+
-+  char *exp_result = stupid_strstr (h, n);
-+  FOR_EACH_IMPL (impl, 0)
-+    check_result (impl, h, n, exp_result);
-+}
-+
- static int
- test_main (void)
- {
-@@ -157,6 +184,7 @@ test_main (void)
- 
-   check1 ();
-   check2 ();
-+  pr23637 ();
- 
-   printf ("%23s", "");
-   FOR_EACH_IMPL (impl, 0)
-@@ -201,6 +229,9 @@ test_main (void)
- 	do_test (15, 9, hlen, klen, 1);
- 	do_test (15, 15, hlen, klen, 0);
- 	do_test (15, 15, hlen, klen, 1);
-+
-+	do_test (15, 15, hlen + klen * 4, klen * 4, 0);
-+	do_test (15, 15, hlen + klen * 4, klen * 4, 1);
-       }
- 
-   do_test (0, 0, page_size - 1, 16, 0);
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0001-libc-Speed-up-large-memcpy-on-Cortex-A7-A15.patch b/sys-libs/glibc/files/local/glibc-2.32/0001-libc-Speed-up-large-memcpy-on-Cortex-A7-A15.patch
new file mode 100644
index 0000000..a1fc36a
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0001-libc-Speed-up-large-memcpy-on-Cortex-A7-A15.patch
@@ -0,0 +1,58 @@
+From a591d5008952bb00bbafa592f0132930b115217c Mon Sep 17 00:00:00 2001
+From: Yunlian Jiang <yunlian@google.com>
+Date: Fri, 1 Aug 2014 15:19:34 -0700
+Subject: [PATCH 1/8] libc: Speed up large memcpy() on Cortex-A7/A15
+
+Details please see crbug://331427
+
+Experimentally it's been found that the "unaligned" memcpy() is
+actually faster for sufficiently large memory copies.  It appears that
+the changeover point is a little different for different processors,
+though.  For A15 there's a lot more run-to-run variance for
+medium-sized memcpy() but the changeover appears to be at ~16K.  For
+A7 (and maybe A9) the changeover seems to be a little further out.
+We think the variance in A15 memcpy() is is due to different physical
+addresses for the chunks of memory given to us by the kernel.  It is
+certain that the "aligned" code works faster at 4K and less and that
+the "unaligned" code works faster with very large chunks of memory.
+Since we care most about A15 performance and the A7 performance is not
+that much worse (and actually better for SDRAM transfers), we'll pick
+the number that's best for the A15.
+Tests on snow (A15 only):
+* Large (12M) aligned copies go from ~2350 MiB/s to ~2900 MiB/s.
+* Medium (96K) aligned copies go from ~5900 MiB/s to ~6300 MiB/s.
+* Medium (16K) aligned copies seem to be better but there's a lot of
+  noise (old=8151.8, 8736.6, 8168.7; new=9364.9, 9829.5, 9639.0)
+* Small (4K, 8K) algined copies are unchanged.
+For A7-only on pit:
+* Large (12M) aligned copies go from 440 MiB/s to 930 MiB/s.
+* Medium (96K) aligned copies regress from ~2650 MiB/s to ~2400 MiB/s.
+* Medium (16K) aligned copies regress from ~3000 MiB/s to ~2800 MiB/s.
+* Small (4K, 8K) aligned copies are unchanged.
+See punybench changes at
+ <https://chromium-review.googlesource.com/#/c/182168/3> for how this
+was tested.  For A15 changes I ran 3 times and averaged (there wasn't
+lots of variance except for 16K).  For A7 changes I ran 2 times.
+[Adrian: forward-ported to glibc 2.32]
+---
+ sysdeps/arm/armv7/multiarch/memcpy_impl.S | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/sysdeps/arm/armv7/multiarch/memcpy_impl.S b/sysdeps/arm/armv7/multiarch/memcpy_impl.S
+index 379bb56fc9..78d8f64a91 100644
+--- a/sysdeps/arm/armv7/multiarch/memcpy_impl.S
++++ b/sysdeps/arm/armv7/multiarch/memcpy_impl.S
+@@ -327,6 +327,10 @@ ENTRY(memcpy)
+ 	cmp	tmp1, tmp2
+ 	bne	.Lcpy_notaligned
+ 
++	/* Use the non-aligned code for >=16K; faster on A7/A15 (A9 too?) */
++	cmp	count, #0x4000
++	bge	.Lcpy_notaligned
++
+ #ifdef USE_VFP
+ 	/* Magic dust alert!  Force VFP on Cortex-A9.  Experiments show
+ 	   that the FP pipeline is much better at streaming loads and
+-- 
+2.30.2
+
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0002-glibc-add-dlopen-patch-to-fix-BZ-19329.patch b/sys-libs/glibc/files/local/glibc-2.32/0002-glibc-add-dlopen-patch-to-fix-BZ-19329.patch
new file mode 100644
index 0000000..e27bb2f
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0002-glibc-add-dlopen-patch-to-fix-BZ-19329.patch
@@ -0,0 +1,237 @@
+From 255996e07c0f24a14a99e84c01488e515526f1a5 Mon Sep 17 00:00:00 2001
+From: Yunlian Jiang <yunlian@chromium.org>
+Date: Wed, 24 Jan 2018 10:35:25 -0800
+Subject: [PATCH 2/8] glibc: add dlopen patch to fix [BZ 19329]
+
+This fixes a subset of the issues described in
+https://sourceware.org/ml/libc-alpha/2016-11/msg01026.html
+without adding locks to pthread_create.
+
+Only races between dlopen and pthread_create were considered,
+and the asserts got removed that tried to check for concurrency
+issues.
+
+The patch is incomplete because dlclose, tls access and
+dl_iterate_phdr related code paths are not modified.
+
+dlclose should be updated in a similar fashion to dlopen
+to make the patch complete alternatively pthread_create
+may take the GL(dl_load_write_lock) to sync with dlclose
+or the GL(dl_load_lock) to sync with dlopen and dlclose
+(that would simplify the concurrency design, but increase
+lock contention on the locks).
+
+2016-11-30  Szabolcs Nagy  <szabolcs.nagy@arm.com>
+
+	[BZ #19329]
+	* elf/dl-open.c (dl_open_worker): Write GL(dl_tls_generation)
+	atomically.
+	* elf/dl-tls.c (_dl_allocate_tls_init): Read GL(dl_tls_generation),
+	GL(dl_tls_max_dtv_idx), slotinfo entries and listp->next atomically.
+	Remove assertions that cannot be guaranteed.
+	(_dl_add_to_slotinfo): Write the slotinfo entries and listp->next
+	atomically.
+
+[Adrian: forward-ported to glibc 2.32]
+---
+ elf/dl-open.c |   7 +++-
+ elf/dl-tls.c  | 102 ++++++++++++++++++++++++++++++++++++++------------
+ 2 files changed, 85 insertions(+), 24 deletions(-)
+
+diff --git a/elf/dl-open.c b/elf/dl-open.c
+index 8769e47051..4bc5e3b6f1 100644
+--- a/elf/dl-open.c
++++ b/elf/dl-open.c
+@@ -395,9 +395,14 @@ update_tls_slotinfo (struct link_map *new)
+ 	}
+     }
+ 
+-  if (__builtin_expect (++GL(dl_tls_generation) == 0, 0))
++  /* This cannot be in a data-race so non-atomic load is valid too.  */
++  size_t newgen = atomic_load_relaxed (&GL(dl_tls_generation)) + 1;
++  /* Synchronize with _dl_allocate_tls_init (see notes there) and
++     avoid storing an overflowed counter.  */
++  if (__builtin_expect (newgen == 0, 0))
+     _dl_fatal_printf (N_("\
+ TLS generation counter wrapped!  Please report this."));
++  atomic_store_release (&GL(dl_tls_generation), newgen);
+ 
+   /* We need a second pass for static tls data, because
+      _dl_update_slotinfo must not be run while calls to
+diff --git a/elf/dl-tls.c b/elf/dl-tls.c
+index 9fa62f5d22..0a5ed80e48 100644
+--- a/elf/dl-tls.c
++++ b/elf/dl-tls.c
+@@ -512,6 +512,36 @@ _dl_resize_dtv (dtv_t *dtv)
+ }
+ 
+ 
++/*
++CONCURRENCY NOTES
++
++dlopen (and dlclose) holds the GL(dl_load_lock) while writing shared state,
++which may be concurrently read by pthread_create and tls access without taking
++the lock, so atomic access should be used.  The shared state:
++
++  GL(dl_tls_max_dtv_idx) - max modid assigned, (modid can be reused).
++  GL(dl_tls_generation) - generation count, incremented by dlopen and dlclose.
++  GL(dl_tls_dtv_slotinfo_list) - list of entries, contains generation count
++                                 and link_map for each module with a modid.
++
++A module gets a modid assigned if it has tls, a modid identifies a slotinfo
++entry and it is the index of the corresponding dtv slot.  The generation count
++is assigned to slotinfo entries of a newly loaded or unloaded module and its
++newly loaded or unloaded dependencies.
++
++TODO: dlclose may free memory read by a concurrent pthread_create or tls
++access.  This is broken now, so it is assumed that dlclose does not free
++link_map structures while pthread_create or __tls_get_addr is reading them.
++
++pthread_create calls _dl_allocate_tls_init (before creating the new thread),
++which should guarantee that the dtv is in a consistent state at the end:
++
++All slotinfo updates with generation <= dtv[0].counter are reflected in the
++dtv and arbitrary later module unloads may also be reflected as unallocated
++entries. (Note: a modid reuse implies a module unload and accessing tls in
++an unloaded module is undefined.)
++*/
++
+ void *
+ _dl_allocate_tls_init (void *result)
+ {
+@@ -523,12 +553,24 @@ _dl_allocate_tls_init (void *result)
+   struct dtv_slotinfo_list *listp;
+   size_t total = 0;
+   size_t maxgen = 0;
++  /* Synchronizes with the increments in dl_{open,close}_worker.
++     Slotinfo updates of this generation are sequenced before the
++     write we read from here.  */
++  size_t gen_count = atomic_load_acquire (&GL(dl_tls_generation));
++  /* Either reads from the last write that is sequenced before the
++     generation counter increment we synchronized with or a write
++     made by a later dlopen/dlclose.  dlclose may decrement this,
++     but only if related modules are unloaded.  So it is an upper
++     bound on non-unloaded modids up to gen_count generation.  */
++  size_t dtv_slots = atomic_load_relaxed (&GL(dl_tls_max_dtv_idx));
+ 
+   /* Check if the current dtv is big enough.   */
+-  if (dtv[-1].counter < GL(dl_tls_max_dtv_idx))
++  if (dtv[-1].counter < dtv_slots)
+     {
+       /* Resize the dtv.  */
+       dtv = _dl_resize_dtv (dtv);
++      /* _dl_resize_dtv rereads GL(dl_tls_max_dtv_idx) which may decrease.  */
++      dtv_slots = dtv[-1].counter;
+ 
+       /* Install this new dtv in the thread data structures.  */
+       INSTALL_DTV (result, &dtv[-1]);
+@@ -545,22 +587,33 @@ _dl_allocate_tls_init (void *result)
+       for (cnt = total == 0 ? 1 : 0; cnt < listp->len; ++cnt)
+ 	{
+ 	  struct link_map *map;
++	  size_t gen;
+ 	  void *dest;
+ 
+ 	  /* Check for the total number of used slots.  */
+-	  if (total + cnt > GL(dl_tls_max_dtv_idx))
++	  if (total + cnt > dtv_slots)
+ 	    break;
+ 
+-	  map = listp->slotinfo[cnt].map;
++	  /* Synchronize with dl_add_to_slotinfo and remove_slotinfo.  */
++	  map = atomic_load_acquire (&listp->slotinfo[cnt].map);
+ 	  if (map == NULL)
+ 	    /* Unused entry.  */
+ 	    continue;
+ 
++	  /* Consistent generation count with the map read above.
++	     Inconsistent gen may be read if the entry is being reused,
++	     in which case it is larger than gen_count and we skip it.  */
++	  gen = atomic_load_relaxed (&listp->slotinfo[cnt].gen);
++	  if (gen > gen_count)
++	    /* New entry.  */
++	    continue;
++
+ 	  /* Keep track of the maximum generation number.  This might
+ 	     not be the generation counter.  */
+-	  assert (listp->slotinfo[cnt].gen <= GL(dl_tls_generation));
+-	  maxgen = MAX (maxgen, listp->slotinfo[cnt].gen);
++	  maxgen = MAX (maxgen, gen);
+ 
++	  /* TODO: concurrent dlclose may free map which would break
++	     the rest of the code below.  */
+ 	  dtv[map->l_tls_modid].pointer.val = TLS_DTV_UNALLOCATED;
+ 	  dtv[map->l_tls_modid].pointer.to_free = NULL;
+ 
+@@ -590,11 +643,15 @@ _dl_allocate_tls_init (void *result)
+ 	}
+ 
+       total += cnt;
+-      if (total >= GL(dl_tls_max_dtv_idx))
++      if (total > dtv_slots)
+ 	break;
+ 
+-      listp = listp->next;
+-      assert (listp != NULL);
++      /* Synchronize with dl_add_to_slotinfo.  */
++      listp = atomic_load_acquire (&listp->next);
++      /* dtv_slots is an upper bound on the number of entries we care
++	 about, the list may end sooner.  */
++      if (listp == NULL)
++	break;
+     }
+ 
+   /* The DTV version is up-to-date now.  */
+@@ -993,35 +1050,34 @@ _dl_add_to_slotinfo (struct link_map *l, bool do_add)
+ 	 the first slot.  */
+       assert (idx == 0);
+ 
+-      listp = prevp->next = (struct dtv_slotinfo_list *)
++      listp = (struct dtv_slotinfo_list *)
+ 	malloc (sizeof (struct dtv_slotinfo_list)
+ 		+ TLS_SLOTINFO_SURPLUS * sizeof (struct dtv_slotinfo));
+       if (listp == NULL)
+ 	{
+-	  /* We ran out of memory.  We will simply fail this
+-	     call but don't undo anything we did so far.  The
+-	     application will crash or be terminated anyway very
+-	     soon.  */
+-
+-	  /* We have to do this since some entries in the dtv
+-	     slotinfo array might already point to this
+-	     generation.  */
+-	  ++GL(dl_tls_generation);
+-
+-	  _dl_signal_error (ENOMEM, "dlopen", NULL, N_("\
+-cannot create TLS data structures"));
++	  /* We ran out of memory in dlopen while updating tls structures.
++	     TODO: side-effects should be rolled back and the failure should
++	     be reported to the caller, but that's hard.  */
++	  oom ();
+ 	}
+ 
+       listp->len = TLS_SLOTINFO_SURPLUS;
+       listp->next = NULL;
+       memset (listp->slotinfo, '\0',
+ 	      TLS_SLOTINFO_SURPLUS * sizeof (struct dtv_slotinfo));
++      /* Add the new list item and synchronize with _dl_allocate_tls_init.  */
++      atomic_store_release (&prevp->next, listp);
+     }
+ 
+   /* Add the information into the slotinfo data structure.  */
+   if (do_add)
+     {
+-      listp->slotinfo[idx].map = l;
+-      listp->slotinfo[idx].gen = GL(dl_tls_generation) + 1;
++      /* This cannot be in a data-race so non-atomic load would be valid too.  */
++      size_t newgen = atomic_load_relaxed (&GL(dl_tls_generation)) + 1;
++      /* TODO: Concurrent readers may see an overflowed gen, which is bad,
++         but overflow is guaranteed to crash the dlopen that is executing.  */
++      atomic_store_relaxed (&listp->slotinfo[idx].gen, newgen);
++      /* Synchronize with _dl_allocate_tls_init (see notes there).  */
++      atomic_store_release (&listp->slotinfo[idx].map, l);
+     }
+ }
+-- 
+2.30.2
+
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0003-Reverts-fortify_source-warning.patch b/sys-libs/glibc/files/local/glibc-2.32/0003-Reverts-fortify_source-warning.patch
new file mode 100644
index 0000000..c05f12b
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0003-Reverts-fortify_source-warning.patch
@@ -0,0 +1,53 @@
+From d0cac19f6840ab9c79ae879a241d686457c342b7 Mon Sep 17 00:00:00 2001
+From: Yunlian Jiang <yunlian@google.com>
+Date: Tue, 27 Dec 2016 15:17:21 -0800
+Subject: [PATCH 3/8] Reverts fortify_source warning
+
+Warn if user requests __FORTIFY_SOURCE but it is disabled
+author	Roland Mc Grath <roland@hack.frob.com>
+Tue, 8 May 2012 17:44:57 +0000 (19:44 +0200)
+committer	Andreas Jaeger <jaegerandi@gmail.com>
+Tue, 8 May 2012 17:44:57 +0000 (19:44 +0200)
+commit	05c2c9618f583ea4acd69b3fe5ae2a2922dd2ddc
+tree	cf5cd345bf757fd5296ff7e0b8dcd7f142fc3d37
+parent	4b30f61a1ea78de9b0e84a54fc6ee96ea70e6ed5
+
+The reason to revert it is that some packages that use
+autoconf to detect system headers, the warning will give the
+wrong result.
+
+[Adrian: forward-ported to glibc 2.32]
+---
+ include/features.h | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
+diff --git a/include/features.h b/include/features.h
+index f3e62d3362..ee9f67c2af 100644
+--- a/include/features.h
++++ b/include/features.h
+@@ -392,18 +392,14 @@
+ # define __USE_GNU	1
+ #endif
+ 
+-#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0
+-# if !defined __OPTIMIZE__ || __OPTIMIZE__ <= 0
+-#  warning _FORTIFY_SOURCE requires compiling with optimization (-O)
+-# elif !__GNUC_PREREQ (4, 1)
+-#  warning _FORTIFY_SOURCE requires GCC 4.1 or later
+-# elif _FORTIFY_SOURCE > 1
++#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
++    && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
++# if _FORTIFY_SOURCE > 1
+ #  define __USE_FORTIFY_LEVEL 2
+ # else
+ #  define __USE_FORTIFY_LEVEL 1
+ # endif
+-#endif
+-#ifndef __USE_FORTIFY_LEVEL
++#else
+ # define __USE_FORTIFY_LEVEL 0
+ #endif
+ 
+-- 
+2.30.2
+
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0004-sys-libs-glibc-add-support-for-SHT_RELR-sections.patch b/sys-libs/glibc/files/local/glibc-2.32/0004-sys-libs-glibc-add-support-for-SHT_RELR-sections.patch
new file mode 100644
index 0000000..00b3156
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0004-sys-libs-glibc-add-support-for-SHT_RELR-sections.patch
@@ -0,0 +1,348 @@
+From 6676e967dba405ca31d57b63e096becd13d4a200 Mon Sep 17 00:00:00 2001
+From: Rahul Chaudhry <rahulchaudhry@chromium.org>
+Date: Thu, 15 Mar 2018 14:30:17 -0700
+Subject: [PATCH 4/8] sys-libs/glibc: add support for SHT_RELR sections.
+
+This patch adds experimental support for SHT_RELR sections, proposed
+here: https://groups.google.com/forum/#!topic/generic-abi/bX460iggiKg
+
+SHT_RELR sections are supported for arm, aarch64, and x86_64 targets.
+To enable them, pass '--experimental-use-relr' flag to gold.
+
+Definitions for the new ELF section type and dynamic array tags, as well
+as the encoding used in the new section are all under discussion and are
+subject to change. We plan to send the patch upstream after the gABI has
+been updated to include the new definitions.
+
+[Adrian: forward-ported to glibc 2.32]
+---
+ elf/do-rel.h                 | 41 ++++++++++++++++++++++++++++++++++--
+ elf/dynamic-link.h           | 15 +++++++++++++
+ elf/elf.h                    | 15 +++++++++++--
+ elf/get-dynamic-info.h       |  7 ++++++
+ sysdeps/aarch64/dl-machine.h | 10 +++++++++
+ sysdeps/arm/dl-machine.h     | 10 +++++++++
+ sysdeps/i386/dl-machine.h    | 10 +++++++++
+ sysdeps/x86_64/dl-machine.h  | 10 +++++++++
+ 8 files changed, 114 insertions(+), 4 deletions(-)
+
+diff --git a/elf/do-rel.h b/elf/do-rel.h
+index 1d0a1f2c5d..25babef6e1 100644
+--- a/elf/do-rel.h
++++ b/elf/do-rel.h
+@@ -26,6 +26,12 @@
+ # define elf_machine_rel_relative	elf_machine_rela_relative
+ #endif
+ 
++#ifdef DO_RELR
++# define elf_dynamic_do_Rel		elf_dynamic_do_Relr
++# define Rel				Relr
++# define elf_machine_rel_relative	elf_machine_relr_relative
++#endif
++
+ #ifndef DO_ELF_MACHINE_REL_RELATIVE
+ # define DO_ELF_MACHINE_REL_RELATIVE(map, l_addr, relative) \
+   elf_machine_rel_relative (l_addr, relative,				      \
+@@ -46,12 +52,12 @@ elf_dynamic_do_Rel (struct link_map *map,
+   const ElfW(Rel) *r = (const void *) reladdr;
+   const ElfW(Rel) *end = (const void *) (reladdr + relsize);
+   ElfW(Addr) l_addr = map->l_addr;
+-# if defined ELF_MACHINE_IRELATIVE && !defined RTLD_BOOTSTRAP
++# if defined ELF_MACHINE_IRELATIVE && !defined RTLD_BOOTSTRAP && !defined DO_RELR
+   const ElfW(Rel) *r2 = NULL;
+   const ElfW(Rel) *end2 = NULL;
+ # endif
+ 
+-#if (!defined DO_RELA || !defined ELF_MACHINE_PLT_REL) && !defined RTLD_BOOTSTRAP
++#if (!defined DO_RELA || !defined ELF_MACHINE_PLT_REL) && !defined RTLD_BOOTSTRAP && !defined DO_RELR
+   /* We never bind lazily during ld.so bootstrap.  Unfortunately gcc is
+      not clever enough to see through all the function calls to realize
+      that.  */
+@@ -80,8 +86,10 @@ elf_dynamic_do_Rel (struct link_map *map,
+   else
+ #endif
+     {
++# if !defined DO_RELR
+       const ElfW(Sym) *const symtab =
+ 	(const void *) D_PTR (map, l_info[DT_SYMTAB]);
++# endif
+       const ElfW(Rel) *relative = r;
+       r += nrelative;
+ 
+@@ -108,9 +116,36 @@ elf_dynamic_do_Rel (struct link_map *map,
+ 	if (l_addr != 0 || ! map->l_info[VALIDX(DT_GNU_PRELINKED)])
+ # endif
+ #endif
++
++#ifdef DO_RELR
++	  {
++	    ElfW(Addr) base = 0;
++	    for (; relative < end; ++relative)
++	      {
++		ElfW(Relr) entry = *relative;
++		if ((entry&1) == 0)
++		  {
++		    elf_machine_relr_relative (l_addr, (void *) (l_addr + entry));
++		    base = entry + sizeof(ElfW(Addr));
++		    continue;
++		  }
++		ElfW(Addr) offset = base;
++		while (entry != 0)
++		  {
++		    entry >>= 1;
++		    if ((entry&1) != 0)
++		      elf_machine_relr_relative (l_addr, (void *) (l_addr + offset));
++		    offset += sizeof(ElfW(Addr));
++		  }
++		base += (8*sizeof(ElfW(Addr)) - 1) * sizeof(ElfW(Addr));
++	      }
++	  }
++#else
+ 	  for (; relative < r; ++relative)
+ 	    DO_ELF_MACHINE_REL_RELATIVE (map, l_addr, relative);
++#endif
+ 
++#if !defined DO_RELR
+ #ifdef RTLD_BOOTSTRAP
+       /* The dynamic linker always uses versioning.  */
+       assert (map->l_info[VERSYMIDX (DT_VERSYM)] != NULL);
+@@ -179,6 +214,7 @@ elf_dynamic_do_Rel (struct link_map *map,
+ 				 skip_ifunc);
+ # endif
+ 	}
++#endif
+ #endif
+     }
+ }
+@@ -189,3 +225,4 @@ elf_dynamic_do_Rel (struct link_map *map,
+ #undef elf_machine_rel_relative
+ #undef DO_ELF_MACHINE_REL_RELATIVE
+ #undef DO_RELA
++#undef DO_RELR
+diff --git a/elf/dynamic-link.h b/elf/dynamic-link.h
+index 6727233e1a..4345df9949 100644
+--- a/elf/dynamic-link.h
++++ b/elf/dynamic-link.h
+@@ -76,6 +76,11 @@ auto inline void __attribute__((always_inline))
+ elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
+ 			   void *const reloc_addr);
+ # endif
++# if ! ELF_MACHINE_NO_RELR
++auto inline void __attribute__((always_inline))
++elf_machine_relr_relative (ElfW(Addr) l_addr,
++			    void *const reloc_addr);
++# endif
+ # if ELF_MACHINE_NO_RELA || defined ELF_MACHINE_PLT_REL
+ auto inline void __attribute__((always_inline))
+ elf_machine_lazy_rel (struct link_map *map,
+@@ -190,6 +195,15 @@ elf_machine_lazy_rel (struct link_map *map,
+ #  define ELF_DYNAMIC_DO_RELA(map, lazy, skip_ifunc) /* Nothing to do.  */
+ # endif
+ 
++# if ! ELF_MACHINE_NO_RELR
++#  define DO_RELR
++#  include "do-rel.h"
++#  define ELF_DYNAMIC_DO_RELR(map, lazy, skip_ifunc) \
++  _ELF_DYNAMIC_DO_RELOC (RELR, Relr, map, lazy, skip_ifunc, 1)
++# else
++#  define ELF_DYNAMIC_DO_RELR(map, lazy, skip_ifunc) /* Nothing to do.  */
++# endif
++
+ /* This can't just be an inline function because GCC is too dumb
+    to inline functions containing inlines themselves.  */
+ # define ELF_DYNAMIC_RELOCATE(map, lazy, consider_profile, skip_ifunc) \
+@@ -198,6 +212,7 @@ elf_machine_lazy_rel (struct link_map *map,
+ 					      (consider_profile));	      \
+     ELF_DYNAMIC_DO_REL ((map), edr_lazy, skip_ifunc);			      \
+     ELF_DYNAMIC_DO_RELA ((map), edr_lazy, skip_ifunc);			      \
++    ELF_DYNAMIC_DO_RELR ((map), edr_lazy, skip_ifunc);			      \
+   } while (0)
+ 
+ #endif
+diff --git a/elf/elf.h b/elf/elf.h
+index 197b557d15..5b6da8e8ae 100644
+--- a/elf/elf.h
++++ b/elf/elf.h
+@@ -446,7 +446,8 @@ typedef struct
+ #define SHT_PREINIT_ARRAY 16		/* Array of pre-constructors */
+ #define SHT_GROUP	  17		/* Section group */
+ #define SHT_SYMTAB_SHNDX  18		/* Extended section indeces */
+-#define	SHT_NUM		  19		/* Number of defined types.  */
++#define SHT_RELR	  19            /* Relative relocation, only offsets */
++#define	SHT_NUM		  20		/* Number of defined types.  */
+ #define SHT_LOOS	  0x60000000	/* Start OS-specific.  */
+ #define SHT_GNU_ATTRIBUTES 0x6ffffff5	/* Object attributes.  */
+ #define SHT_GNU_HASH	  0x6ffffff6	/* GNU-style hash table.  */
+@@ -664,6 +665,12 @@ typedef struct
+   Elf64_Sxword	r_addend;		/* Addend */
+ } Elf64_Rela;
+ 
++/* Relocation table entry for relative (in section of type SHT_RELR).  */
++
++typedef Elf32_Word	Elf32_Relr;	/* offset/bitmap for relative relocations */
++
++typedef Elf64_Xword	Elf64_Relr;	/* offset/bitmap for relative relocations */
++
+ /* How to extract and insert information held in the r_info field.  */
+ 
+ #define ELF32_R_SYM(val)		((val) >> 8)
+@@ -885,7 +892,10 @@ typedef struct
+ #define DT_PREINIT_ARRAY 32		/* Array with addresses of preinit fct*/
+ #define DT_PREINIT_ARRAYSZ 33		/* size in bytes of DT_PREINIT_ARRAY */
+ #define DT_SYMTAB_SHNDX	34		/* Address of SYMTAB_SHNDX section */
+-#define	DT_NUM		35		/* Number used */
++#define DT_RELRSZ	35
++#define DT_RELR		36
++#define DT_RELRENT	37
++#define	DT_NUM		38		/* Number used */
+ #define DT_LOOS		0x6000000d	/* Start of OS-specific */
+ #define DT_HIOS		0x6ffff000	/* End of OS-specific */
+ #define DT_LOPROC	0x70000000	/* Start of processor-specific */
+@@ -937,6 +947,7 @@ typedef struct
+    GNU extension.  */
+ #define DT_VERSYM	0x6ffffff0
+ 
++#define DT_RELRCOUNT	0x6ffffff8
+ #define DT_RELACOUNT	0x6ffffff9
+ #define DT_RELCOUNT	0x6ffffffa
+ 
+diff --git a/elf/get-dynamic-info.h b/elf/get-dynamic-info.h
+index 4f6a86ef37..79ff22f0c0 100644
+--- a/elf/get-dynamic-info.h
++++ b/elf/get-dynamic-info.h
+@@ -108,6 +108,9 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
+ # if ! ELF_MACHINE_NO_REL
+       ADJUST_DYN_INFO (DT_REL);
+ # endif
++# if ! ELF_MACHINE_NO_RELR
++      ADJUST_DYN_INFO (DT_RELR);
++#endif
+       ADJUST_DYN_INFO (DT_JMPREL);
+       ADJUST_DYN_INFO (VERSYMIDX (DT_VERSYM));
+       ADJUST_DYN_INFO (ADDRIDX (DT_GNU_HASH));
+@@ -134,6 +137,10 @@ elf_get_dynamic_info (struct link_map *l, ElfW(Dyn) *temp)
+   if (info[DT_REL] != NULL)
+     assert (info[DT_RELENT]->d_un.d_val == sizeof (ElfW(Rel)));
+ #endif
++#if ! ELF_MACHINE_NO_RELR
++  if (info[DT_RELR] != NULL)
++    assert (info[DT_RELRENT]->d_un.d_val == sizeof (ElfW(Relr)));
++# endif
+ #ifdef RTLD_BOOTSTRAP
+   /* Only the bind now flags are allowed.  */
+   assert (info[VERSYMIDX (DT_FLAGS_1)] == NULL
+diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h
+index fde7cfd9e2..eaff6dbc6d 100644
+--- a/sysdeps/aarch64/dl-machine.h
++++ b/sysdeps/aarch64/dl-machine.h
+@@ -198,6 +198,7 @@ _dl_start_user:								\n\
+ /* AArch64 uses RELA not REL */
+ #define ELF_MACHINE_NO_REL 1
+ #define ELF_MACHINE_NO_RELA 0
++#define ELF_MACHINE_NO_RELR 0
+ 
+ #define DL_PLATFORM_INIT dl_platform_init ()
+ 
+@@ -383,6 +384,15 @@ elf_machine_rela_relative (ElfW(Addr) l_addr,
+   *reloc_addr = l_addr + reloc->r_addend;
+ }
+ 
++inline void
++__attribute__ ((always_inline))
++elf_machine_relr_relative (ElfW(Addr) l_addr,
++			   void *const reloc_addr_arg)
++{
++  ElfW(Addr) *const reloc_addr = reloc_addr_arg;
++  *reloc_addr += l_addr;
++}
++
+ inline void
+ __attribute__ ((always_inline))
+ elf_machine_lazy_rel (struct link_map *map,
+diff --git a/sysdeps/arm/dl-machine.h b/sysdeps/arm/dl-machine.h
+index 90856779b1..c586232c9d 100644
+--- a/sysdeps/arm/dl-machine.h
++++ b/sysdeps/arm/dl-machine.h
+@@ -296,6 +296,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
+    Prelinked libraries may use Elf32_Rela though.  */
+ #define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
+ #define ELF_MACHINE_NO_REL 0
++#define ELF_MACHINE_NO_RELR 0
+ 
+ /* Names of the architecture-specific auditing callback functions.  */
+ #define ARCH_LA_PLTENTER arm_gnu_pltenter
+@@ -637,6 +638,15 @@ elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
+   *reloc_addr += l_addr;
+ }
+ 
++auto inline void
++__attribute ((always_inline))
++elf_machine_relr_relative (ElfW(Addr) l_addr,
++			   void *const reloc_addr_arg)
++{
++  ElfW(Addr) *const reloc_addr = reloc_addr_arg;
++  *reloc_addr += l_addr;
++}
++
+ # ifndef RTLD_BOOTSTRAP
+ auto inline void
+ __attribute__ ((always_inline))
+diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h
+index 672d8f27ce..7c09608913 100644
+--- a/sysdeps/i386/dl-machine.h
++++ b/sysdeps/i386/dl-machine.h
+@@ -286,6 +286,7 @@ elf_machine_plt_value (struct link_map *map, const Elf32_Rel *reloc,
+    Prelinked libraries may use Elf32_Rela though.  */
+ #define ELF_MACHINE_NO_RELA defined RTLD_BOOTSTRAP
+ #define ELF_MACHINE_NO_REL 0
++#define ELF_MACHINE_NO_RELR 0
+ 
+ #ifdef RESOLVE_MAP
+ 
+@@ -658,6 +659,15 @@ elf_machine_rel_relative (Elf32_Addr l_addr, const Elf32_Rel *reloc,
+   *reloc_addr += l_addr;
+ }
+ 
++auto inline void
++__attribute ((always_inline))
++elf_machine_relr_relative (ElfW(Addr) l_addr,
++			   void *const reloc_addr_arg)
++{
++  ElfW(Addr) *const reloc_addr = reloc_addr_arg;
++  *reloc_addr += l_addr;
++}
++
+ # ifndef RTLD_BOOTSTRAP
+ auto inline void
+ __attribute__ ((always_inline))
+diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h
+index 363a749cb2..10a200ba67 100644
+--- a/sysdeps/x86_64/dl-machine.h
++++ b/sysdeps/x86_64/dl-machine.h
+@@ -214,6 +214,7 @@ _dl_start_user:\n\
+ /* The x86-64 never uses Elf64_Rel/Elf32_Rel relocations.  */
+ #define ELF_MACHINE_NO_REL 1
+ #define ELF_MACHINE_NO_RELA 0
++#define ELF_MACHINE_NO_RELR 0
+ 
+ /* We define an initialization function.  This is called very early in
+    _dl_sysdep_start.  */
+@@ -549,6 +550,15 @@ elf_machine_rela_relative (ElfW(Addr) l_addr, const ElfW(Rela) *reloc,
+     }
+ }
+ 
++auto inline void
++__attribute ((always_inline))
++elf_machine_relr_relative (ElfW(Addr) l_addr,
++			   void *const reloc_addr_arg)
++{
++  ElfW(Addr) *const reloc_addr = reloc_addr_arg;
++  *reloc_addr += l_addr;
++}
++
+ auto inline void
+ __attribute ((always_inline))
+ elf_machine_lazy_rel (struct link_map *map,
+-- 
+2.30.2
+
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0005-Disable-float128-support-for-x86_64-x86.patch b/sys-libs/glibc/files/local/glibc-2.32/0005-Disable-float128-support-for-x86_64-x86.patch
new file mode 100644
index 0000000..2358107
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0005-Disable-float128-support-for-x86_64-x86.patch
@@ -0,0 +1,178 @@
+From d852dbfc7fa23e45ffc81823395cc9a6326b1acc Mon Sep 17 00:00:00 2001
+From: Yunlian Jiang <yunlian@google.com>
+Date: Tue, 23 Oct 2018 16:32:58 -0700
+Subject: [PATCH 5/8] Disable float128 support for x86_64, x86
+
+This disabled float128 support for x86_64, x86. This is a simplied
+revert of commit c86ed71d633c22d6f638576f7660c52a5f783d66
+
+Author: Joseph Myers <joseph@codesourcery.com>
+Date:   Mon Jun 26 22:01:27 2017 +0000
+
+    Add float128 support for x86_64, x86.
+
+The reason to revert it is we are using compiler-rt instead of libgcc.
+Some builtins are not ready in compiler-rt, as a result, we hit
+some problems like crbug.com/843822
+
+[Adrian: forward-ported to glibc 2.32]
+---
+ sysdeps/generic/math-use-builtins-copysign.h |  2 +-
+ sysdeps/i386/Implies                         |  1 -
+ sysdeps/x86/bits/floatn.h                    |  4 ++--
+ sysdeps/x86/fpu/Makefile                     |  3 ---
+ sysdeps/x86/fpu/fenv_private.h               | 16 ----------------
+ sysdeps/x86/fpu/math-barriers.h              | 17 ++++-------------
+ sysdeps/x86_64/Implies                       |  1 -
+ 7 files changed, 7 insertions(+), 37 deletions(-)
+
+diff --git a/sysdeps/generic/math-use-builtins-copysign.h b/sysdeps/generic/math-use-builtins-copysign.h
+index b774931f43..a0b4ff6940 100644
+--- a/sysdeps/generic/math-use-builtins-copysign.h
++++ b/sysdeps/generic/math-use-builtins-copysign.h
+@@ -1,7 +1,7 @@
+ /* Generic implementations for float and double always use the builtin.  */
+ #define USE_COPYSIGNL_BUILTIN 1
+ #if __GNUC_PREREQ (7, 0)
+-# define USE_COPYSIGNF128_BUILTIN 1
++# define USE_COPYSIGNF128_BUILTIN 0
+ #else
+ # define USE_COPYSIGNF128_BUILTIN 0
+ #endif
+diff --git a/sysdeps/i386/Implies b/sysdeps/i386/Implies
+index 76cb207173..20b2dffc29 100644
+--- a/sysdeps/i386/Implies
++++ b/sysdeps/i386/Implies
+@@ -1,6 +1,5 @@
+ x86
+ wordsize-32
+-ieee754/float128
+ ieee754/ldbl-96
+ ieee754/dbl-64
+ ieee754/flt-32
+diff --git a/sysdeps/x86/bits/floatn.h b/sysdeps/x86/bits/floatn.h
+index 8c7a1f4c29..d854953515 100644
+--- a/sysdeps/x86/bits/floatn.h
++++ b/sysdeps/x86/bits/floatn.h
+@@ -29,7 +29,7 @@
+ #if (defined __x86_64__							\
+      ? __GNUC_PREREQ (4, 3)						\
+      : (defined __GNU__ ? __GNUC_PREREQ (4, 5) : __GNUC_PREREQ (4, 4)))
+-# define __HAVE_FLOAT128 1
++# define __HAVE_FLOAT128 0
+ #else
+ # define __HAVE_FLOAT128 0
+ #endif
+@@ -37,7 +37,7 @@
+ /* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
+    from the default float, double and long double types in this glibc.  */
+ #if __HAVE_FLOAT128
+-# define __HAVE_DISTINCT_FLOAT128 1
++# define __HAVE_DISTINCT_FLOAT128 0
+ #else
+ # define __HAVE_DISTINCT_FLOAT128 0
+ #endif
+diff --git a/sysdeps/x86/fpu/Makefile b/sysdeps/x86/fpu/Makefile
+index 600e42c3db..a8047a4504 100644
+--- a/sysdeps/x86/fpu/Makefile
++++ b/sysdeps/x86/fpu/Makefile
+@@ -1,7 +1,4 @@
+ ifeq ($(subdir),math)
+-# sqrtf128 requires soft-fp.
+-CPPFLAGS += -I../soft-fp
+-
+ libm-support += powl_helper
+ tests += test-fenv-sse test-fenv-clear-sse test-fenv-x87 test-fenv-sse-2 \
+ 	 test-flt-eval-method-387 test-flt-eval-method-sse
+diff --git a/sysdeps/x86/fpu/fenv_private.h b/sysdeps/x86/fpu/fenv_private.h
+index 4b081e015b..2831632c79 100644
+--- a/sysdeps/x86/fpu/fenv_private.h
++++ b/sysdeps/x86/fpu/fenv_private.h
+@@ -1,7 +1,6 @@
+ #ifndef X86_FENV_PRIVATE_H
+ #define X86_FENV_PRIVATE_H 1
+ 
+-#include <bits/floatn.h>
+ #include <fenv.h>
+ #include <fpu_control.h>
+ 
+@@ -293,21 +292,6 @@ libc_feresetround_387 (fenv_t *e)
+ # define libc_feholdsetround_53bit	libc_feholdsetround_387_53bit
+ #endif
+ 
+-#ifdef __x86_64__
+-/* The SSE rounding mode is used by soft-fp (libgcc and glibc) on
+-   x86_64, so that must be set for float128 computations.  */
+-# define SET_RESTORE_ROUNDF128(RM) \
+-  SET_RESTORE_ROUND_GENERIC (RM, libc_feholdsetround_sse, libc_feresetround_sse)
+-# define libc_feholdexcept_setroundf128	libc_feholdexcept_setround_sse
+-# define libc_feupdateenv_testf128	libc_feupdateenv_test_sse
+-#else
+-/* The 387 rounding mode is used by soft-fp for 32-bit, but whether
+-   387 or SSE exceptions are used depends on whether libgcc was built
+-   for SSE math, which is not known when glibc is being built.  */
+-# define libc_feholdexcept_setroundf128	default_libc_feholdexcept_setround
+-# define libc_feupdateenv_testf128	default_libc_feupdateenv_test
+-#endif
+-
+ /* We have support for rounding mode context.  */
+ #define HAVE_RM_CTX 1
+ 
+diff --git a/sysdeps/x86/fpu/math-barriers.h b/sysdeps/x86/fpu/math-barriers.h
+index d5f27764ff..eba63a2a06 100644
+--- a/sysdeps/x86/fpu/math-barriers.h
++++ b/sysdeps/x86/fpu/math-barriers.h
+@@ -22,16 +22,14 @@
+ #ifdef __SSE2_MATH__
+ # define math_opt_barrier(x)						\
+   ({ __typeof(x) __x;							\
+-     if (sizeof (x) <= sizeof (double)					\
+-	|| __builtin_types_compatible_p (__typeof (x), _Float128))	\
++     if (sizeof (x) <= sizeof (double))					\
+        __asm ("" : "=x" (__x) : "0" (x));				\
+      else								\
+        __asm ("" : "=t" (__x) : "0" (x));				\
+      __x; })
+ # define math_force_eval(x)						\
+   do {									\
+-    if (sizeof (x) <= sizeof (double)					\
+-	|| __builtin_types_compatible_p (__typeof (x), _Float128))	\
++    if (sizeof (x) <= sizeof (double))					\
+       __asm __volatile ("" : : "x" (x));				\
+     else								\
+       __asm __volatile ("" : : "f" (x));				\
+@@ -39,19 +37,12 @@
+ #else
+ # define math_opt_barrier(x)						\
+   ({ __typeof (x) __x;							\
+-     if (__builtin_types_compatible_p (__typeof (x), _Float128))	\
+-       {								\
+-	 __x = (x);							\
+-	 __asm ("" : "+m" (__x));					\
+-       }								\
+-     else								\
+-       __asm ("" : "=t" (__x) : "0" (x));				\
++     __asm ("" : "=t" (__x) : "0" (x));					\
+      __x; })
+ # define math_force_eval(x)						\
+   do {									\
+     __typeof (x) __x = (x);						\
+-    if (sizeof (x) <= sizeof (double)					\
+-	|| __builtin_types_compatible_p (__typeof (x), _Float128))	\
++    if (sizeof (x) <= sizeof (double))					\
+       __asm __volatile ("" : : "m" (__x));				\
+     else								\
+       __asm __volatile ("" : : "f" (__x));				\
+diff --git a/sysdeps/x86_64/Implies b/sysdeps/x86_64/Implies
+index 3d7ded70d2..811c19a8f2 100644
+--- a/sysdeps/x86_64/Implies
++++ b/sysdeps/x86_64/Implies
+@@ -1,5 +1,4 @@
+ x86
+-ieee754/float128
+ ieee754/ldbl-96
+ ieee754/dbl-64/wordsize-64
+ ieee754/dbl-64
+-- 
+2.30.2
+
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0006-Add-dlopen_with_offset-to-glibc.patch b/sys-libs/glibc/files/local/glibc-2.32/0006-Add-dlopen_with_offset-to-glibc.patch
new file mode 100644
index 0000000..c039d83
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0006-Add-dlopen_with_offset-to-glibc.patch
@@ -0,0 +1,758 @@
+From 609b2bdc67cca4ee584547966567fc8ee512acea Mon Sep 17 00:00:00 2001
+From: Paul Pluzhnikov <ppluzhnikov@google.com>
+Date: Fri, 31 Jan 2020 20:36:09 -0800
+Subject: [PATCH 6/8] Add dlopen_with_offset to glibc.
+
+This patchset is used in Google internal and is needed for
+Loonix, https://crbug.com/1015890.
+
+The patch is a squashed diff of following commits:
+https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=0010a400dcb13304c9081b0f9ad156ce88178320
+https://sourceware.org/git/?p=glibc.git;a=commit;h=024f0eb409268e704a83cae2c1511d31167c6f49
+https://sourceware.org/git/?p=glibc.git;a=commit;h=295883290d7f26f483e574e80a851cea2d639d12
+https://sourceware.org/git/?p=glibc.git;a=commit;h=771d3bf7065f6c25219cf206816b695a628a4618
+https://sourceware.org/git/?p=glibc.git;a=commit;h=a6241b657547f0f708629bc254ebcaafb6f25074
+https://sourceware.org/git/?p=glibc.git;a=commit;h=c0342bb26e0251dc2d7ca00a884ea831705e32b4
+
+Then modified to support LARGEFILE 32 bit builds and to only call lseek
+if the offset is larger than 0 (to avoid irritating sandbox policy).
+
+This is requested by Loonix for use in Google internal.
+
+[Adrian: forward ported to glibc 2.32]
+---
+ dlfcn/Versions             |  6 ++++
+ dlfcn/dlfcn.h              | 27 ++++++++++++++
+ dlfcn/dlmopen.c            | 56 ++++++++++++++++++++++-------
+ dlfcn/dlopen.c             | 66 +++++++++++++++++++++++++++-------
+ dlfcn/dlopenold.c          |  2 +-
+ elf/dl-deps.c              |  2 +-
+ elf/dl-libc.c              |  4 ++-
+ elf/dl-load.c              | 72 ++++++++++++++++++++++++++++----------
+ elf/dl-open.c              |  7 ++--
+ elf/rtld.c                 |  6 ++--
+ include/dlfcn.h            | 11 ++++++
+ include/link.h             |  6 ++++
+ sysdeps/generic/ldsodefs.h | 12 ++++---
+ 13 files changed, 223 insertions(+), 54 deletions(-)
+
+diff --git a/dlfcn/Versions b/dlfcn/Versions
+index 1df6925a92..6032584242 100644
+--- a/dlfcn/Versions
++++ b/dlfcn/Versions
+@@ -11,6 +11,12 @@ libdl {
+   GLIBC_2.3.4 {
+     dlmopen;
+   }
++  GLIBC_2.15 {
++    __google_dlopen_with_offset; __google_dlmopen_with_offset;
++  }
++  GLIBC_2.27 {
++    __google_dlopen_with_offset64;
++  }
+   GLIBC_PRIVATE {
+     _dlfcn_hook;
+     __libdl_freeres;
+diff --git a/dlfcn/dlfcn.h b/dlfcn/dlfcn.h
+index c629fc7f42..880c72e614 100644
+--- a/dlfcn/dlfcn.h
++++ b/dlfcn/dlfcn.h
+@@ -22,6 +22,7 @@
+ #include <features.h>
+ #define __need_size_t
+ #include <stddef.h>
++#include <sys/types.h>
+ 
+ /* Collect various system dependent definitions and declarations.  */
+ #include <bits/dlfcn.h>
+@@ -55,6 +56,26 @@ __BEGIN_DECLS
+    passed to `dlsym' to get symbol values from it.  */
+ extern void *dlopen (const char *__file, int __mode) __THROWNL;
+ 
++/* Same as above, but ELF header is at OFF from the start of file.  */
++#ifndef __USE_FILE_OFFSET64
++extern void *__google_dlopen_with_offset (__const char *__file,
++					  __off_t offset,
++					  int __mode) __THROW;
++#else
++# ifdef __REDIRECT_NTH
++extern void *__REDIRECT_NTH (__google_dlopen_with_offset,
++			(__const char *__file, __off64_t offset, int __mode),
++			__google_dlopen_with_offset64);
++# else
++#define __google_dlopen_with_offset __google_dlopen_with_offset64
++# endif
++#endif  /* not __USE_FILE_OFFSET64 */
++#ifdef __USE_LARGEFILE64
++extern void *__google_dlopen_with_offset64 (__const char *__file,
++					    __off64_t offset,
++					    int __mode) __THROW;
++#endif
++
+ /* Unmap and close a shared object opened by `dlopen'.
+    The handle cannot be used again after calling `dlclose'.  */
+ extern int dlclose (void *__handle) __THROWNL __nonnull ((1));
+@@ -68,6 +89,12 @@ extern void *dlsym (void *__restrict __handle,
+ /* Like `dlopen', but request object to be allocated in a new namespace.  */
+ extern void *dlmopen (Lmid_t __nsid, const char *__file, int __mode) __THROWNL;
+ 
++/* Same as above, but ELF header is at OFF from the start of file.  */
++extern void *__google_dlmopen_with_offset (Lmid_t __nsid,
++					   __const char *__file,
++					   off_t offset,
++					   int __mode) __THROW;
++
+ /* Find the run-time address in the shared object HANDLE refers to
+    of the symbol called NAME with VERSION.  */
+ extern void *dlvsym (void *__restrict __handle,
+diff --git a/dlfcn/dlmopen.c b/dlfcn/dlmopen.c
+index 1396c818ac..141b0b769b 100644
+--- a/dlfcn/dlmopen.c
++++ b/dlfcn/dlmopen.c
+@@ -38,6 +38,8 @@ struct dlmopen_args
+ {
+   /* Namespace ID.  */
+   Lmid_t nsid;
++  /* ELF header at offset in file.  */
++  off_t offset;
+   /* The arguments for dlopen_doit.  */
+   const char *file;
+   int mode;
+@@ -68,13 +70,52 @@ dlmopen_doit (void *a)
+ 	_dl_signal_error (EINVAL, NULL, NULL, N_("invalid mode"));
+     }
+ 
+-  args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
++  args->new = GLRO(dl_open) (args->file ?: "", args->offset, args->mode | __RTLD_DLOPEN,
+ 			     args->caller,
+ 			     args->nsid, __dlfcn_argc, __dlfcn_argv,
+ 			     __environ);
+ }
+ 
+ 
++static void *
++__dlmopen_common (struct dlmopen_args *args)
++{
++
++# ifdef SHARED
++  return _dlerror_run (dlmopen_doit, args) ? NULL : args->new;
++# else
++  if (_dlerror_run (dlmopen_doit, args))
++    return NULL;
++
++  __libc_register_dl_open_hook ((struct link_map *) args->new);
++  __libc_register_dlfcn_hook ((struct link_map *) args->new);
++
++  return args->new;
++# endif
++}
++
++void *
++__dlmopen_with_offset (Lmid_t nsid, const char *file, off_t offset,
++		       int mode DL_CALLER_DECL)
++{
++# ifdef SHARED
++  if (!rtld_active ())
++    return _dlfcn_hook->dlmopen_with_offset (nsid, file, offset, mode, RETURN_ADDRESS (0));
++# endif
++
++  struct dlmopen_args oargs;
++  oargs.nsid = nsid;
++  oargs.file = file;
++  oargs.offset = offset;
++  oargs.mode = mode;
++  oargs.caller = DL_CALLER;
++
++  return __dlmopen_common (&oargs);
++}
++# ifdef SHARED
++strong_alias (__dlmopen_with_offset, __google_dlmopen_with_offset)
++# endif
++
+ void *
+ __dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
+ {
+@@ -86,20 +127,11 @@ __dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
+   struct dlmopen_args args;
+   args.nsid = nsid;
+   args.file = file;
++  args.offset = 0;
+   args.mode = mode;
+   args.caller = DL_CALLER;
+ 
+-# ifdef SHARED
+-  return _dlerror_run (dlmopen_doit, &args) ? NULL : args.new;
+-# else
+-  if (_dlerror_run (dlmopen_doit, &args))
+-    return NULL;
+-
+-  __libc_register_dl_open_hook ((struct link_map *) args.new);
+-  __libc_register_dlfcn_hook ((struct link_map *) args.new);
+-
+-  return args.new;
+-# endif
++  return __dlmopen_common (&args);
+ }
+ # ifdef SHARED
+ strong_alias (__dlmopen, dlmopen)
+diff --git a/dlfcn/dlopen.c b/dlfcn/dlopen.c
+index 5b4ed6798a..bb43674b9c 100644
+--- a/dlfcn/dlopen.c
++++ b/dlfcn/dlopen.c
+@@ -21,6 +21,7 @@
+ #include <stddef.h>
+ #include <unistd.h>
+ #include <ldsodefs.h>
++#include <errno.h>
+ 
+ #if !defined SHARED && IS_IN (libdl)
+ 
+@@ -37,6 +38,8 @@ struct dlopen_args
+ {
+   /* The arguments for dlopen_doit.  */
+   const char *file;
++  /* ELF header at offset in file.  */
++  off_t offset;
+   int mode;
+   /* The return value of dlopen_doit.  */
+   void *new;
+@@ -63,13 +66,61 @@ dlopen_doit (void *a)
+ 		     | __RTLD_SPROF))
+     _dl_signal_error (0, NULL, NULL, _("invalid mode parameter"));
+ 
+-  args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
++  args->new = GLRO(dl_open) (args->file ?: "", args->offset, args->mode | __RTLD_DLOPEN,
+ 			     args->caller,
+ 			     args->file == NULL ? LM_ID_BASE : NS,
+ 			     __dlfcn_argc, __dlfcn_argv, __environ);
+ }
+ 
+ 
++static void *
++__dlopen_common (struct dlopen_args *args)
++{
++# ifdef SHARED
++  return _dlerror_run (dlopen_doit, args) ? NULL : args->new;
++# else
++  if (_dlerror_run (dlopen_doit, args))
++    return NULL;
++
++  __libc_register_dl_open_hook ((struct link_map *) args->new);
++  __libc_register_dlfcn_hook ((struct link_map *) args->new);
++
++  return args->new;
++# endif
++}
++
++# ifdef SHARED
++void *
++__dlopen_with_offset (const char *file, off_t offset, int mode DL_CALLER_DECL)
++{
++  if (!rtld_active ())
++    return _dlfcn_hook->dlopen_with_offset (file, offset, mode, DL_CALLER);
++
++  struct dlopen_args oargs;
++  oargs.file = file;
++  oargs.offset = offset;
++  oargs.mode = mode;
++  oargs.caller = DL_CALLER;
++
++  return __dlopen_common (&oargs);
++}
++strong_alias (__dlopen_with_offset, __google_dlopen_with_offset)
++
++void *
++__dlopen_with_offset64 (const char *file, off64_t offset, int mode DL_CALLER_DECL)
++{
++#ifndef __OFF_T_MATCHES_OFF64_T
++  if (offset > 0xFFFFFFFF) {
++    _dl_signal_error(EFBIG, "__dlopen_with_offset64", NULL,
++		     N_("File offset too large. Only 32 bit ELF supported."));
++    return NULL;
++  }
++#endif
++  return __dlopen_with_offset(file, offset, mode);
++}
++strong_alias (__dlopen_with_offset64, __google_dlopen_with_offset64)
++# endif
++
+ void *
+ __dlopen (const char *file, int mode DL_CALLER_DECL)
+ {
+@@ -80,20 +131,11 @@ __dlopen (const char *file, int mode DL_CALLER_DECL)
+ 
+   struct dlopen_args args;
+   args.file = file;
++  args.offset = 0;
+   args.mode = mode;
+   args.caller = DL_CALLER;
+ 
+-# ifdef SHARED
+-  return _dlerror_run (dlopen_doit, &args) ? NULL : args.new;
+-# else
+-  if (_dlerror_run (dlopen_doit, &args))
+-    return NULL;
+-
+-  __libc_register_dl_open_hook ((struct link_map *) args.new);
+-  __libc_register_dlfcn_hook ((struct link_map *) args.new);
+-
+-  return args.new;
+-# endif
++  return __dlopen_common (&args);
+ }
+ # ifdef SHARED
+ #  include <shlib-compat.h>
+diff --git a/dlfcn/dlopenold.c b/dlfcn/dlopenold.c
+index f06deec639..1082d087b9 100644
+--- a/dlfcn/dlopenold.c
++++ b/dlfcn/dlopenold.c
+@@ -51,7 +51,7 @@ dlopen_doit (void *a)
+ {
+   struct dlopen_args *args = (struct dlopen_args *) a;
+ 
+-  args->new = GLRO(dl_open) (args->file ?: "", args->mode | __RTLD_DLOPEN,
++  args->new = GLRO(dl_open) (args->file ?: "", 0, args->mode | __RTLD_DLOPEN,
+ 			     args->caller,
+ 			     args->file == NULL ? LM_ID_BASE : NS,
+ 			     __dlfcn_argc, __dlfcn_argv, __environ);
+diff --git a/elf/dl-deps.c b/elf/dl-deps.c
+index b5a43232a7..c2d008fb63 100644
+--- a/elf/dl-deps.c
++++ b/elf/dl-deps.c
+@@ -61,7 +61,7 @@ openaux (void *a)
+ {
+   struct openaux_args *args = (struct openaux_args *) a;
+ 
+-  args->aux = _dl_map_object (args->map, args->name,
++  args->aux = _dl_map_object (args->map, args->name, 0,
+ 			      (args->map->l_type == lt_executable
+ 			       ? lt_library : args->map->l_type),
+ 			      args->trace_mode, args->open_mode,
+diff --git a/elf/dl-libc.c b/elf/dl-libc.c
+index 24a715511a..51c167d4a3 100644
+--- a/elf/dl-libc.c
++++ b/elf/dl-libc.c
+@@ -59,6 +59,7 @@ struct do_dlopen_args
+ {
+   /* Argument to do_dlopen.  */
+   const char *name;
++  off_t offset;
+   /* Opening mode.  */
+   int mode;
+   /* This is the caller of the dlopen() function.  */
+@@ -93,7 +94,7 @@ do_dlopen (void *ptr)
+ {
+   struct do_dlopen_args *args = (struct do_dlopen_args *) ptr;
+   /* Open and relocate the shared object.  */
+-  args->map = GLRO(dl_open) (args->name, args->mode, args->caller_dlopen,
++  args->map = GLRO(dl_open) (args->name, args->offset, args->mode, args->caller_dlopen,
+ 			     __LM_ID_CALLER, __libc_argc, __libc_argv,
+ 			     __environ);
+ }
+@@ -186,6 +187,7 @@ __libc_dlopen_mode (const char *name, int mode)
+ {
+   struct do_dlopen_args args;
+   args.name = name;
++  args.offset = 0;
+   args.mode = mode;
+   args.caller_dlopen = RETURN_ADDRESS (0);
+ 
+diff --git a/elf/dl-load.c b/elf/dl-load.c
+index 71867e7c1a..54f6b7b032 100644
+--- a/elf/dl-load.c
++++ b/elf/dl-load.c
+@@ -61,6 +61,7 @@ struct filebuf
+ #include <abi-tag.h>
+ #include <stackinfo.h>
+ #include <sysdep.h>
++#include <_itoa.h>
+ #include <stap-probe.h>
+ #include <libc-pointer-arith.h>
+ #include <array_length.h>
+@@ -933,7 +934,7 @@ _dl_process_pt_gnu_property (struct link_map *l, int fd, const ElfW(Phdr) *ph)
+ static
+ #endif
+ struct link_map *
+-_dl_map_object_from_fd (const char *name, const char *origname, int fd,
++_dl_map_object_from_fd (const char *name, const char *origname, int fd, off_t offset,
+ 			struct filebuf *fbp, char *realname,
+ 			struct link_map *loader, int l_type, int mode,
+ 			void **stack_endp, Lmid_t nsid)
+@@ -973,7 +974,8 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd,
+ 
+       /* Look again to see if the real name matched another already loaded.  */
+       for (l = GL(dl_ns)[nsid]._ns_loaded; l != NULL; l = l->l_next)
+-	if (!l->l_removed && _dl_file_id_match_p (&l->l_file_id, &id))
++	if (!l->l_removed && _dl_file_id_match_p (&l->l_file_id, &id)
++	    && l->l_off == offset)
+ 	  {
+ 	    /* The object is already loaded.
+ 	       Just bump its reference count and return it.  */
+@@ -982,7 +984,10 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd,
+ 	    /* If the name is not in the list of names for this object add
+ 	       it.  */
+ 	    free (realname);
+-	    add_name_to_object (l, name);
++	    if (offset == 0)
++	      /* If offset!=0, foo.so/@0x<offset> should be the *only*
++	         name for this object. b/20141439.  */
++	      add_name_to_object (l, name);
+ 
+ 	    return l;
+ 	  }
+@@ -1067,8 +1072,29 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd,
+   else
+     assert (r->r_state == RT_ADD);
+ 
++#ifdef SHARED
++  // This code could be linked into 'sln', which does not have _itoa.
++  // We only care about this when this is linked into ld-linux.
++  if (offset != 0)
++    {
++      /* Google-specific: to help GDB, and for b/18243822, turn realname
++         into "realname/@0x<offset>"  */
++      realname = realloc (realname, strlen(realname) + 16 + 4 /* "/@0x" */);
++      if (realname == NULL)
++	{
++	  errstring = N_("unable to realloc");
++	  goto call_lose_errno;
++	}
++      strcat(realname, "/@0x");
++
++      char tmp[20];
++      tmp[19] = '\0';
++      strcat(realname, _itoa(offset, &tmp[19], 16, 0));
++    }
++#endif
++
+   /* Enter the new object in the list of loaded objects.  */
+-  l = _dl_new_object (realname, name, l_type, loader, mode, nsid);
++  l = _dl_new_object (realname, (offset ? realname : name), l_type, loader, mode, nsid);
+   if (__glibc_unlikely (l == NULL))
+     {
+ #ifdef SHARED
+@@ -1155,7 +1181,12 @@ _dl_map_object_from_fd (const char *name, const char *origname, int fd,
+ 	  c->mapend = ALIGN_UP (ph->p_vaddr + ph->p_filesz, GLRO(dl_pagesize));
+ 	  c->dataend = ph->p_vaddr + ph->p_filesz;
+ 	  c->allocend = ph->p_vaddr + ph->p_memsz;
+-	  c->mapoff = ALIGN_DOWN (ph->p_offset, GLRO(dl_pagesize));
++	  if (offset & (GLRO(dl_pagesize) - 1))
++	    {
++	      errstring = N_("invalid offset");
++	      goto call_lose;
++	    }
++	  c->mapoff = ALIGN_DOWN(offset + ph->p_offset, GLRO(dl_pagesize));
+ 
+ 	  /* Determine whether there is a gap between the last segment
+ 	     and this one.  */
+@@ -1448,6 +1479,8 @@ cannot enable executable stack as shared object requires");
+   assert (origname == NULL);
+ #endif
+ 
++  l->l_off = offset;
++
+   /* When we profile the SONAME might be needed for something else but
+      loading.  Add it right away.  */
+   if (__glibc_unlikely (GLRO(dl_profile) != NULL)
+@@ -1552,7 +1585,7 @@ print_search_path (struct r_search_path_elem **list,
+    If FD is not -1, then the file is already open and FD refers to it.
+    In that case, FD is consumed for both successful and error returns.  */
+ static int
+-open_verify (const char *name, int fd,
++open_verify (const char *name, int fd, off_t offset,
+              struct filebuf *fbp, struct link_map *loader,
+ 	     int whatcode, int mode, bool *found_other_class, bool free_name)
+ {
+@@ -1633,6 +1666,9 @@ open_verify (const char *name, int fd,
+       unsigned int osversion;
+       size_t maplength;
+ 
++      if (offset > 0 && __lseek (fd, offset, SEEK_SET) == -1)
++	goto close_and_out;
++
+       /* We successfully opened the file.  Now verify it is a file
+ 	 we can use.  */
+       __set_errno (0);
+@@ -1846,7 +1882,7 @@ open_verify (const char *name, int fd,
+    if MAY_FREE_DIRS is true.  */
+ 
+ static int
+-open_path (const char *name, size_t namelen, int mode,
++open_path (const char *name, size_t namelen, off_t offset, int mode,
+ 	   struct r_search_path_struct *sps, char **realname,
+ 	   struct filebuf *fbp, struct link_map *loader, int whatcode,
+ 	   bool *found_other_class)
+@@ -1898,7 +1934,7 @@ open_path (const char *name, size_t namelen, int mode,
+ 	  if (__glibc_unlikely (GLRO(dl_debug_mask) & DL_DEBUG_LIBS))
+ 	    _dl_debug_printf ("  trying file=%s\n", buf);
+ 
+-	  fd = open_verify (buf, -1, fbp, loader, whatcode, mode,
++	  fd = open_verify (buf, -1, offset, fbp, loader, whatcode, mode,
+ 			    found_other_class, false);
+ 	  if (this_dir->status[cnt] == unknown)
+ 	    {
+@@ -1996,7 +2032,7 @@ open_path (const char *name, size_t namelen, int mode,
+ /* Map in the shared object file NAME.  */
+ 
+ struct link_map *
+-_dl_map_object (struct link_map *loader, const char *name,
++_dl_map_object (struct link_map *loader, const char *name, off_t offset,
+ 		int type, int trace_mode, int mode, Lmid_t nsid)
+ {
+   int fd;
+@@ -2111,7 +2147,7 @@ _dl_map_object (struct link_map *loader, const char *name,
+ 	  for (l = loader; l; l = l->l_loader)
+ 	    if (cache_rpath (l, &l->l_rpath_dirs, DT_RPATH, "RPATH"))
+ 	      {
+-		fd = open_path (name, namelen, mode,
++		fd = open_path (name, namelen, offset, mode,
+ 				&l->l_rpath_dirs,
+ 				&realname, &fb, loader, LA_SER_RUNPATH,
+ 				&found_other_class);
+@@ -2127,7 +2163,7 @@ _dl_map_object (struct link_map *loader, const char *name,
+ 	      && main_map != NULL && main_map->l_type != lt_loaded
+ 	      && cache_rpath (main_map, &main_map->l_rpath_dirs, DT_RPATH,
+ 			      "RPATH"))
+-	    fd = open_path (name, namelen, mode,
++	    fd = open_path (name, namelen, offset, mode,
+ 			    &main_map->l_rpath_dirs,
+ 			    &realname, &fb, loader ?: main_map, LA_SER_RUNPATH,
+ 			    &found_other_class);
+@@ -2135,7 +2171,7 @@ _dl_map_object (struct link_map *loader, const char *name,
+ 
+       /* Try the LD_LIBRARY_PATH environment variable.  */
+       if (fd == -1 && env_path_list.dirs != (void *) -1)
+-	fd = open_path (name, namelen, mode, &env_path_list,
++	fd = open_path (name, namelen, offset, mode, &env_path_list,
+ 			&realname, &fb,
+ 			loader ?: GL(dl_ns)[LM_ID_BASE]._ns_loaded,
+ 			LA_SER_LIBPATH, &found_other_class);
+@@ -2144,7 +2180,7 @@ _dl_map_object (struct link_map *loader, const char *name,
+       if (fd == -1 && loader != NULL
+ 	  && cache_rpath (loader, &loader->l_runpath_dirs,
+ 			  DT_RUNPATH, "RUNPATH"))
+-	fd = open_path (name, namelen, mode,
++	fd = open_path (name, namelen, offset, mode,
+ 			&loader->l_runpath_dirs, &realname, &fb, loader,
+ 			LA_SER_RUNPATH, &found_other_class);
+ 
+@@ -2153,7 +2189,7 @@ _dl_map_object (struct link_map *loader, const char *name,
+           realname = _dl_sysdep_open_object (name, namelen, &fd);
+           if (realname != NULL)
+             {
+-              fd = open_verify (realname, fd,
++              fd = open_verify (realname, fd, offset,
+                                 &fb, loader ?: GL(dl_ns)[nsid]._ns_loaded,
+                                 LA_SER_CONFIG, mode, &found_other_class,
+                                 false);
+@@ -2207,7 +2243,7 @@ _dl_map_object (struct link_map *loader, const char *name,
+ 
+ 	      if (cached != NULL)
+ 		{
+-		  fd = open_verify (cached, -1,
++		  fd = open_verify (cached, -1, 0,
+ 				    &fb, loader ?: GL(dl_ns)[nsid]._ns_loaded,
+ 				    LA_SER_CONFIG, mode, &found_other_class,
+ 				    false);
+@@ -2225,7 +2261,7 @@ _dl_map_object (struct link_map *loader, const char *name,
+ 	  && ((l = loader ?: GL(dl_ns)[nsid]._ns_loaded) == NULL
+ 	      || __glibc_likely (!(l->l_flags_1 & DF_1_NODEFLIB)))
+ 	  && rtld_search_dirs.dirs != (void *) -1)
+-	fd = open_path (name, namelen, mode, &rtld_search_dirs,
++	fd = open_path (name, namelen, offset, mode, &rtld_search_dirs,
+ 			&realname, &fb, l, LA_SER_DEFAULT, &found_other_class);
+ 
+       /* Add another newline when we are tracing the library loading.  */
+@@ -2242,7 +2278,7 @@ _dl_map_object (struct link_map *loader, const char *name,
+ 	fd = -1;
+       else
+ 	{
+-	  fd = open_verify (realname, -1, &fb,
++	  fd = open_verify (realname, -1, offset, &fb,
+ 			    loader ?: GL(dl_ns)[nsid]._ns_loaded, 0, mode,
+ 			    &found_other_class, true);
+ 	  if (__glibc_unlikely (fd == -1))
+@@ -2304,7 +2340,7 @@ _dl_map_object (struct link_map *loader, const char *name,
+     }
+ 
+   void *stack_end = __libc_stack_end;
+-  return _dl_map_object_from_fd (name, origname, fd, &fb, realname, loader,
++  return _dl_map_object_from_fd (name, origname, fd, offset, &fb, realname, loader,
+ 				 type, mode, &stack_end, nsid);
+ }
+ 
+diff --git a/elf/dl-open.c b/elf/dl-open.c
+index 4bc5e3b6f1..2773ef2364 100644
+--- a/elf/dl-open.c
++++ b/elf/dl-open.c
+@@ -46,6 +46,8 @@
+ struct dl_open_args
+ {
+   const char *file;
++  /* ELF header at offset in file.  */
++  off_t offset;
+   int mode;
+   /* This is the caller of the dlopen() function.  */
+   const void *caller_dlopen;
+@@ -528,7 +530,7 @@ dl_open_worker (void *a)
+ 
+   /* Load the named object.  */
+   struct link_map *new;
+-  args->map = new = _dl_map_object (call_map, file, lt_loaded, 0,
++  args->map = new = _dl_map_object (call_map, file, args->offset, lt_loaded, 0,
+ 				    mode | __RTLD_CALLMAP, args->nsid);
+ 
+   /* If the pointer returned is NULL this means the RTLD_NOLOAD flag is
+@@ -805,7 +807,7 @@ dl_open_worker (void *a)
+ }
+ 
+ void *
+-_dl_open (const char *file, int mode, const void *caller_dlopen, Lmid_t nsid,
++_dl_open (const char *file, off_t offset, int mode, const void *caller_dlopen, Lmid_t nsid,
+ 	  int argc, char *argv[], char *env[])
+ {
+   if ((mode & RTLD_BINDING_MASK) == 0)
+@@ -855,6 +857,7 @@ no more namespaces available for dlmopen()"));
+ 
+   struct dl_open_args args;
+   args.file = file;
++  args.offset = offset;
+   args.mode = mode;
+   args.caller_dlopen = caller_dlopen;
+   args.map = NULL;
+diff --git a/elf/rtld.c b/elf/rtld.c
+index 14a42ed00a..a829895b48 100644
+--- a/elf/rtld.c
++++ b/elf/rtld.c
+@@ -666,7 +666,7 @@ map_doit (void *a)
+ {
+   struct map_args *args = (struct map_args *) a;
+   int type = (args->mode == __RTLD_OPENEXEC) ? lt_executable : lt_library;
+-  args->map = _dl_map_object (args->loader, args->str, type, 0,
++  args->map = _dl_map_object (args->loader, args->str, 0, type, 0,
+ 			      args->mode, LM_ID_BASE);
+ }
+ 
+@@ -674,7 +674,7 @@ static void
+ dlmopen_doit (void *a)
+ {
+   struct dlmopen_args *args = (struct dlmopen_args *) a;
+-  args->map = _dl_open (args->fname,
++  args->map = _dl_open (args->fname, 0,
+ 			(RTLD_LAZY | __RTLD_DLOPEN | __RTLD_AUDIT
+ 			 | __RTLD_SECURE),
+ 			dl_main, LM_ID_NEWLM, _dl_argc, _dl_argv,
+@@ -1338,7 +1338,7 @@ of this helper program; chances are you did not intend to run this program.\n\
+ 	{
+ 	  RTLD_TIMING_VAR (start);
+ 	  rtld_timer_start (&start);
+-	  _dl_map_object (NULL, rtld_progname, lt_executable, 0,
++	  _dl_map_object (NULL, rtld_progname, 0, lt_executable, 0,
+ 			  __RTLD_OPENEXEC, LM_ID_BASE);
+ 	  rtld_timer_stop (&load_time, start);
+ 	}
+diff --git a/include/dlfcn.h b/include/dlfcn.h
+index a1816e4991..eea8de1e1a 100644
+--- a/include/dlfcn.h
++++ b/include/dlfcn.h
+@@ -1,5 +1,6 @@
+ #ifndef _DLFCN_H
+ #include <dlfcn/dlfcn.h>
++#include <sys/types.h>
+ #ifndef _ISOMAC
+ #include <link.h>		/* For ElfW.  */
+ #include <stdbool.h>
+@@ -110,6 +111,8 @@ extern int _dlerror_run (void (*operate) (void *), void *args)
+ struct dlfcn_hook
+ {
+   void *(*dlopen) (const char *file, int mode, void *dl_caller);
++  void *(*dlopen_with_offset) (const char *file, off_t offset,
++			       int mode, void *dl_caller);
+   int (*dlclose) (void *handle);
+   void *(*dlsym) (void *handle, const char *name, void *dl_caller);
+   void *(*dlvsym) (void *handle, const char *name, const char *version,
+@@ -120,6 +123,8 @@ struct dlfcn_hook
+ 		  void **extra_info, int flags);
+   int (*dlinfo) (void *handle, int request, void *arg);
+   void *(*dlmopen) (Lmid_t nsid, const char *file, int mode, void *dl_caller);
++  void *(*dlmopen_with_offset) (Lmid_t nsid, const char *file, off_t offset,
++				int mode, void *dl_caller);
+   void *pad[4];
+ };
+ 
+@@ -128,8 +133,14 @@ libdl_hidden_proto (_dlfcn_hook)
+ 
+ extern void *__dlopen (const char *file, int mode DL_CALLER_DECL)
+      attribute_hidden;
++extern void *__dlopen_with_offset (const char *file, off_t offset,
++				   int mode DL_CALLER_DECL)
++     attribute_hidden;
+ extern void *__dlmopen (Lmid_t nsid, const char *file, int mode DL_CALLER_DECL)
+      attribute_hidden;
++extern void *__dlmopen_with_offset (Lmid_t nsid, const char *file, off_t offset,
++				    int mode DL_CALLER_DECL)
++     attribute_hidden;
+ extern int __dlclose (void *handle)
+      attribute_hidden;
+ extern void *__dlsym (void *handle, const char *name DL_CALLER_DECL)
+diff --git a/include/link.h b/include/link.h
+index aea268439c..a9431cdd35 100644
+--- a/include/link.h
++++ b/include/link.h
+@@ -261,6 +261,12 @@ struct link_map
+        object is the same as one already loaded.  */
+     struct r_file_id l_file_id;
+ 
++    /* Google-specific extension, intended to be part of public interface
++       to the debugger.  As such, it belongs right after l_prev... except
++       putting it there causes Google libunwind to crash due to its own
++       peeking into glibc internals (see grte_v1_glibc_link_map).  */
++    size_t l_off;  /* File offset to Elf_Ehdr.  */
++
+     /* Collected information about own RUNPATH directories.  */
+     struct r_search_path_struct l_runpath_dirs;
+ 
+diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h
+index 62ac40d81b..8a0e8e3802 100644
+--- a/sysdeps/generic/ldsodefs.h
++++ b/sysdeps/generic/ldsodefs.h
+@@ -644,8 +644,9 @@ struct rtld_global_ro
+ 				   const ElfW(Sym) **, struct r_scope_elem *[],
+ 				   const struct r_found_version *, int, int,
+ 				   struct link_map *);
+-  void *(*_dl_open) (const char *file, int mode, const void *caller_dlopen,
+-		     Lmid_t nsid, int argc, char *argv[], char *env[]);
++  void *(*_dl_open) (const char *file, off_t offset, int mode,
++		     const void *caller_dlopen, Lmid_t nsid,
++		     int argc, char *argv[], char *env[]);
+   void (*_dl_close) (void *map);
+   void *(*_dl_tls_get_addr_soft) (struct link_map *);
+ #ifdef HAVE_DL_DISCOVER_OSVERSION
+@@ -889,10 +890,12 @@ int _dl_catch_exception (struct dl_exception *exception,
+ libc_hidden_proto (_dl_catch_exception)
+ 
+ /* Open the shared object NAME and map in its segments.
++   ELF header is at OFFSET into the file.
+    LOADER's DT_RPATH is used in searching for NAME.
+    If the object is already opened, returns its existing map.  */
+ extern struct link_map *_dl_map_object (struct link_map *loader,
+ 					const char *name,
++					off_t offset,
+ 					int type, int trace_mode, int mode,
+ 					Lmid_t nsid) attribute_hidden;
+ 
+@@ -1170,8 +1173,9 @@ extern char *_dl_dst_substitute (struct link_map *l, const char *name,
+ /* Open the shared object NAME, relocate it, and run its initializer if it
+    hasn't already been run.  MODE is as for `dlopen' (see <dlfcn.h>).  If
+    the object is already opened, returns its existing map.  */
+-extern void *_dl_open (const char *name, int mode, const void *caller,
+-		       Lmid_t nsid, int argc, char *argv[], char *env[])
++extern void *_dl_open (const char *name, off_t offset, int mode,
++		       const void *caller, Lmid_t nsid,
++		       int argc, char *argv[], char *env[])
+      attribute_hidden;
+ 
+ /* Free or queue for freeing scope OLD.  If other threads might be
+-- 
+2.30.2
+
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0007-glibc-add-clang-style-FORTIFY.patch b/sys-libs/glibc/files/local/glibc-2.32/0007-glibc-add-clang-style-FORTIFY.patch
new file mode 100644
index 0000000..cfbf6fd
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0007-glibc-add-clang-style-FORTIFY.patch
@@ -0,0 +1,2783 @@
+From 593b5d6988cc306f74d7f9999f5be5f2d8608d40 Mon Sep 17 00:00:00 2001
+From: George Burgess IV <gbiv@google.com>
+Date: Wed, 10 Aug 2016 17:34:09 -0700
+Subject: [PATCH 7/8] glibc: add clang-style FORTIFY.
+
+This patch adds support for a clang-style FORTIFY to ChromeOS's glibc.
+
+Without this, when we swap to clang as the default compiler for
+ChromeOS, our FORTIFY story will get *way* worse. When given a gcc-style
+FORTIFY, clang is unable to emit just about any compile-time
+diagnostics, and the dynamic checks that clang emits is a (small) subset
+of gcc's.
+
+This patch makes clang's diagnostic story nearly on-par with gcc's, and
+should allow clang to dynamically catch just about any bug that gcc can
+(either statically or dynamically). Due to differences in how the
+compilers work (e.g. how they optimize code, etc.), there may be cases
+where clang detects errors at run-time where gcc can't and vice-versa.
+
+This patch is from
+https://sourceware.org/ml/libc-alpha/2017-09/msg00434.html
+
+[Adrian: forward-ported to glibc 2.32]
+---
+ io/bits/fcntl2.h                | 125 ++++++--
+ io/bits/poll2.h                 |  54 ++--
+ io/fcntl.h                      |   2 +-
+ libio/bits/stdio2.h             | 307 +++++++++++---------
+ misc/bits/syslog.h              |  38 ++-
+ misc/sys/cdefs.h                | 164 ++++++++++-
+ posix/bits/unistd.h             | 366 ++++++++++--------------
+ rt/bits/mqueue2.h               |  44 ++-
+ rt/mqueue.h                     |   2 +-
+ socket/bits/socket2.h           |  56 ++--
+ stdlib/bits/stdlib.h            | 117 ++++----
+ string/bits/string_fortified.h  | 126 ++++++---
+ string/bits/strings_fortified.h |  36 ++-
+ wcsmbs/bits/wchar2.h            | 487 ++++++++++++++------------------
+ 14 files changed, 1092 insertions(+), 832 deletions(-)
+
+diff --git a/io/bits/fcntl2.h b/io/bits/fcntl2.h
+index 85b922dab8..04cc377040 100644
+--- a/io/bits/fcntl2.h
++++ b/io/bits/fcntl2.h
+@@ -32,10 +32,28 @@ extern int __REDIRECT (__open_2, (const char *__path, int __oflag),
+ extern int __REDIRECT (__open_alias, (const char *__path, int __oflag, ...),
+ 		       open64) __nonnull ((1));
+ #endif
+-__errordecl (__open_too_many_args,
+-	     "open can be called either with 2 or 3 arguments, not more");
+-__errordecl (__open_missing_mode,
+-	     "open with O_CREAT or O_TMPFILE in second argument needs 3 arguments");
++
++#define __warn_open_too_many_args \
++  "open can be called either with 2 or 3 arguments, not more"
++#define __warn_open_missing_mode \
++  "open with O_CREAT in second argument needs 3 arguments"
++#ifdef __use_clang_fortify
++__fortify_overload __clang_prefer_this_overload int
++open (const char *const __clang_pass_object_size __path, int __oflag)
++     __clang_error_if (__OPEN_NEEDS_MODE (__oflag), __warn_open_missing_mode)
++{
++  return __open_2 (__path, __oflag);
++}
++
++__fortify_overload int
++open (const char *const __clang_pass_object_size __path, int __oflag,
++      mode_t __mode)
++{
++  return __open_alias (__path, __oflag, __mode);
++}
++#else
++__errordecl (__open_too_many_args, __warn_open_too_many_args);
++__errordecl (__open_missing_mode, __warn_open_missing_mode);
+ 
+ __fortify_function int
+ open (const char *__path, int __oflag, ...)
+@@ -58,16 +76,37 @@ open (const char *__path, int __oflag, ...)
+ 
+   return __open_alias (__path, __oflag, __va_arg_pack ());
+ }
++#endif
++#undef __warn_open_too_many_args
++#undef __warn_open_missing_mode
+ 
+ 
+ #ifdef __USE_LARGEFILE64
+ extern int __open64_2 (const char *__path, int __oflag) __nonnull ((1));
+ extern int __REDIRECT (__open64_alias, (const char *__path, int __oflag,
+ 					...), open64) __nonnull ((1));
+-__errordecl (__open64_too_many_args,
+-	     "open64 can be called either with 2 or 3 arguments, not more");
+-__errordecl (__open64_missing_mode,
+-	     "open64 with O_CREAT or O_TMPFILE in second argument needs 3 arguments");
++
++# define __warn_open64_too_many_args \
++  "open64 can be called either with 2 or 3 arguments, not more"
++# define __warn_open64_missing_mode \
++  "open64 with O_CREAT in second argument needs 3 arguments"
++# ifdef __use_clang_fortify
++__fortify_overload __clang_prefer_this_overload int
++open64 (const char *const __clang_pass_object_size __path, int __oflag)
++     __clang_error_if (__OPEN_NEEDS_MODE (__oflag), __warn_open64_missing_mode)
++{
++  return __open64_2 (__path, __oflag);
++}
++
++__fortify_overload __clang_prefer_this_overload int
++open64 (const char *const __clang_pass_object_size __path, int __oflag,
++	int __mode)
++{
++  return __open64_alias (__path, __oflag, __mode);
++}
++# else
++__errordecl (__open64_too_many_args, __warn_open64_too_many_args);
++__errordecl (__open64_missing_mode, __warn_open64_missing_mode);
+ 
+ __fortify_function int
+ open64 (const char *__path, int __oflag, ...)
+@@ -90,6 +129,9 @@ open64 (const char *__path, int __oflag, ...)
+ 
+   return __open64_alias (__path, __oflag, __va_arg_pack ());
+ }
++# endif
++# undef __warn_open64_too_many_args
++# undef __warn_open64_missing_mode
+ #endif
+ 
+ 
+@@ -108,10 +150,32 @@ extern int __REDIRECT (__openat_alias, (int __fd, const char *__path,
+ 					int __oflag, ...), openat64)
+      __nonnull ((2));
+ # endif
+-__errordecl (__openat_too_many_args,
+-	     "openat can be called either with 3 or 4 arguments, not more");
+-__errordecl (__openat_missing_mode,
+-	     "openat with O_CREAT or O_TMPFILE in third argument needs 4 arguments");
++
++# define __warn_openat_too_many_args "openat can be called either with 3 or " \
++       "4 arguments, not more"
++# define __warn_openat_missing_mode "openat with O_CREAT in third argument " \
++       "needs 4 arguments"
++# ifdef __use_clang_fortify
++__fortify_error_function __clang_error (__warn_openat_too_many_args) int
++openat (int __fd, const char *__path, int __oflag, int __mode, ...);
++
++__fortify_overload __clang_prefer_this_overload int
++openat (int __fd, const char *const __clang_pass_object_size __path,
++	int __oflag)
++     __clang_error_if (__OPEN_NEEDS_MODE (__oflag), __warn_openat_missing_mode)
++{
++  return __openat_2 (__fd, __path, __oflag);
++}
++
++__fortify_overload __clang_prefer_this_overload int
++openat (int __fd, const char *const __clang_pass_object_size __path,
++	int __oflag, int __mode)
++{
++  return __openat_alias (__fd, __path, __oflag, __mode);
++}
++# else
++__errordecl (__openat_too_many_args, __warn_openat_too_many_args);
++__errordecl (__openat_missing_mode, __warn_openat_missing_mode);
+ 
+ __fortify_function int
+ openat (int __fd, const char *__path, int __oflag, ...)
+@@ -134,6 +198,9 @@ openat (int __fd, const char *__path, int __oflag, ...)
+ 
+   return __openat_alias (__fd, __path, __oflag, __va_arg_pack ());
+ }
++# endif
++# undef __warn_openat_too_many_args
++# undef __warn_openat_missing_mode
+ 
+ 
+ # ifdef __USE_LARGEFILE64
+@@ -142,11 +209,34 @@ extern int __openat64_2 (int __fd, const char *__path, int __oflag)
+ extern int __REDIRECT (__openat64_alias, (int __fd, const char *__path,
+ 					  int __oflag, ...), openat64)
+      __nonnull ((2));
+-__errordecl (__openat64_too_many_args,
+-	     "openat64 can be called either with 3 or 4 arguments, not more");
+-__errordecl (__openat64_missing_mode,
+-	     "openat64 with O_CREAT or O_TMPFILE in third argument needs 4 arguments");
+ 
++#  define __warn_openat64_too_many_args "openat64 can be called either with " \
++       "3 or 4 arguments, not more"
++#  define __warn_openat64_missing_mode "openat64 with O_CREAT in third " \
++       "argument needs 4 arguments"
++
++#  ifdef __use_clang_fortify
++__fortify_error_function __clang_error (__warn_openat64_too_many_args) int
++openat64 (int __fd, const char *__path, int __oflag, int __mode, ...);
++
++__fortify_overload __clang_prefer_this_overload int
++openat64 (int __fd, const char *const __clang_pass_object_size __path,
++	  int __oflag)
++     __clang_error_if (__OPEN_NEEDS_MODE (__oflag),
++                       __warn_openat64_missing_mode)
++{
++  return __openat64_2 (__fd, __path, __oflag);
++}
++
++__fortify_overload __clang_prefer_this_overload int
++openat64 (int __fd, const char *const __clang_pass_object_size __path,
++	  int __oflag, int __mode)
++{
++  return __openat64_alias (__fd, __path, __oflag, __mode);
++}
++#  else
++__errordecl (__openat64_too_many_args, __warn_openat64_too_many_args);
++__errordecl (__openat64_missing_mode, __warn_openat64_missing_mode);
+ __fortify_function int
+ openat64 (int __fd, const char *__path, int __oflag, ...)
+ {
+@@ -168,5 +258,8 @@ openat64 (int __fd, const char *__path, int __oflag, ...)
+ 
+   return __openat64_alias (__fd, __path, __oflag, __va_arg_pack ());
+ }
++#  endif
++#  undef __warn_openat64_too_many_args
++#  undef __warn_openat64_missing_mode
+ # endif
+ #endif
+diff --git a/io/bits/poll2.h b/io/bits/poll2.h
+index dca49717db..cc149711af 100644
+--- a/io/bits/poll2.h
++++ b/io/bits/poll2.h
+@@ -27,25 +27,20 @@ extern int __REDIRECT (__poll_alias, (struct pollfd *__fds, nfds_t __nfds,
+ 				      int __timeout), poll);
+ extern int __poll_chk (struct pollfd *__fds, nfds_t __nfds, int __timeout,
+ 		       __SIZE_TYPE__ __fdslen);
+-extern int __REDIRECT (__poll_chk_warn, (struct pollfd *__fds, nfds_t __nfds,
+-					 int __timeout, __SIZE_TYPE__ __fdslen),
+-		       __poll_chk)
+-  __warnattr ("poll called with fds buffer too small file nfds entries");
+ 
+-__fortify_function int
+-poll (struct pollfd *__fds, nfds_t __nfds, int __timeout)
++__fortify_potential_overload int
++poll (struct pollfd *const __clang_pass_object_size __fds, nfds_t __nfds,
++      int __timeout)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__poll_warn, __nfds, __fds,
++					sizeof (*__fds),
++					"poll called with fds buffer too small")
+ {
+-  if (__bos (__fds) != (__SIZE_TYPE__) -1)
+-    {
+-      if (! __builtin_constant_p (__nfds))
+-	return __poll_chk (__fds, __nfds, __timeout, __bos (__fds));
+-      else if (__bos (__fds) / sizeof (*__fds) < __nfds)
+-	return __poll_chk_warn (__fds, __nfds, __timeout, __bos (__fds));
+-    }
+-
++  if (__FORTIFY_CALL_CHK && __bos (__fds) != (__SIZE_TYPE__) -1)
++    return __poll_chk (__fds, __nfds, __timeout, __bos (__fds));
+   return __poll_alias (__fds, __nfds, __timeout);
+ }
+-
++__FORTIFY_FUNCTION_END
+ 
+ #ifdef __USE_GNU
+ extern int __REDIRECT (__ppoll_alias, (struct pollfd *__fds, nfds_t __nfds,
+@@ -54,28 +49,21 @@ extern int __REDIRECT (__ppoll_alias, (struct pollfd *__fds, nfds_t __nfds,
+ extern int __ppoll_chk (struct pollfd *__fds, nfds_t __nfds,
+ 			const struct timespec *__timeout,
+ 			const __sigset_t *__ss, __SIZE_TYPE__ __fdslen);
+-extern int __REDIRECT (__ppoll_chk_warn, (struct pollfd *__fds, nfds_t __nfds,
+-					  const struct timespec *__timeout,
+-					  const __sigset_t *__ss,
+-					  __SIZE_TYPE__ __fdslen),
+-		       __ppoll_chk)
+-  __warnattr ("ppoll called with fds buffer too small file nfds entries");
+ 
+-__fortify_function int
+-ppoll (struct pollfd *__fds, nfds_t __nfds, const struct timespec *__timeout,
+-       const __sigset_t *__ss)
++__fortify_potential_overload int
++ppoll (struct pollfd *const __clang_pass_object_size __fds, nfds_t __nfds,
++       const struct timespec *__timeout, const __sigset_t *__ss)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__ppoll_warn, __nfds, __fds,
++					sizeof (*__fds),
++					"ppoll called with fds buffer too "
++					"small file nfds entries")
+ {
+-  if (__bos (__fds) != (__SIZE_TYPE__) -1)
+-    {
+-      if (! __builtin_constant_p (__nfds))
+-	return __ppoll_chk (__fds, __nfds, __timeout, __ss, __bos (__fds));
+-      else if (__bos (__fds) / sizeof (*__fds) < __nfds)
+-	return __ppoll_chk_warn (__fds, __nfds, __timeout, __ss,
+-				 __bos (__fds));
+-    }
+-
++  if (__FORTIFY_CALL_CHK && __bos (__fds) != (__SIZE_TYPE__) -1)
++    return __ppoll_chk (__fds, __nfds, __timeout, __ss, __bos (__fds));
+   return __ppoll_alias (__fds, __nfds, __timeout, __ss);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+ 
+ __END_DECLS
+diff --git a/io/fcntl.h b/io/fcntl.h
+index 21b60c264d..83f2c8e117 100644
+--- a/io/fcntl.h
++++ b/io/fcntl.h
+@@ -325,7 +325,7 @@ extern int posix_fallocate64 (int __fd, off64_t __offset, off64_t __len);
+ 
+ /* Define some inlines helping to catch common problems.  */
+ #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function \
+-    && defined __va_arg_pack_len
++    && (defined __va_arg_pack_len || defined __use_clang_fortify)
+ # include <bits/fcntl2.h>
+ #endif
+ 
+diff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h
+index ff9202c2cb..b60eadd653 100644
+--- a/libio/bits/stdio2.h
++++ b/libio/bits/stdio2.h
+@@ -31,12 +31,23 @@ extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
+ 			   __gnuc_va_list __ap) __THROW
+     __attr_access ((__write_only__, 1, 3));
+ 
+-#ifdef __va_arg_pack
+-__fortify_function int
+-__NTH (sprintf (char *__restrict __s, const char *__restrict __fmt, ...))
++#define __mul_may_overflow(size, n) \
++  ((size | n) >= (((size_t)1) << (8 * sizeof (size_t) / 2)))
++
++#ifdef __FORTIFY_ARG_PACK_OK
++/* clang doesn't have __va_arg_pack, so we need to defer to the va_arg versions
++   of these functions.  */
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3))) int
++__NTH (sprintf (char *__restrict const __clang_pass_object_size __s,
++		const char *__restrict __fmt, ...))
+ {
+-  return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
+-				  __bos (__s), __fmt, __va_arg_pack ());
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __result = __FORTIFY_CALL_VA_BUILTIN (sprintf, __s,
++					    __USE_FORTIFY_LEVEL - 1,
++					    __bos (__s), __fmt,
++					    __FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __result;
+ }
+ #elif !defined __cplusplus
+ # define sprintf(str, ...) \
+@@ -44,9 +55,9 @@ __NTH (sprintf (char *__restrict __s, const char *__restrict __fmt, ...))
+ 			   __VA_ARGS__)
+ #endif
+ 
+-__fortify_function int
+-__NTH (vsprintf (char *__restrict __s, const char *__restrict __fmt,
+-		 __gnuc_va_list __ap))
++__fortify_potential_overload int
++__NTH (vsprintf (char *__restrict const __clang_pass_object_size __s,
++		 const char *__restrict __fmt, __gnuc_va_list __ap))
+ {
+   return __builtin___vsprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
+ 				   __bos (__s), __fmt, __ap);
+@@ -62,13 +73,21 @@ extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
+ 			    size_t __slen, const char *__restrict __format,
+ 			    __gnuc_va_list __ap) __THROW;
+ 
+-# ifdef __va_arg_pack
+-__fortify_function int
+-__NTH (snprintf (char *__restrict __s, size_t __n,
+-		 const char *__restrict __fmt, ...))
++# ifdef __FORTIFY_ARG_PACK_OK
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 3, 4))) int
++__NTH (snprintf (char *__restrict const __clang_pass_object_size __s,
++		 size_t __n, const char *__restrict __fmt, ...))
++     /* GCC's builtin will catch this, so we just need to cover clang here.  */
++     __clang_warning_if (__bos_static_lt (__n, __s),
++			 "call to snprintf may overflow the destination buffer")
+ {
+-  return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
+-				   __bos (__s), __fmt, __va_arg_pack ());
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __result = __FORTIFY_CALL_VA_BUILTIN (snprintf, __s, __n,
++					    __USE_FORTIFY_LEVEL - 1,
++					    __bos (__s), __fmt,
++					    __FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __result;
+ }
+ # elif !defined __cplusplus
+ #  define snprintf(str, len, ...) \
+@@ -76,9 +95,12 @@ __NTH (snprintf (char *__restrict __s, size_t __n,
+ 			    __VA_ARGS__)
+ # endif
+ 
+-__fortify_function int
+-__NTH (vsnprintf (char *__restrict __s, size_t __n,
+-		  const char *__restrict __fmt, __gnuc_va_list __ap))
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 3, 0))) int
++__NTH (vsnprintf (char *__restrict const __clang_pass_object_size __s,
++		  size_t __n, const char *__restrict __fmt, __gnuc_va_list __ap))
++     __clang_warning_if (__bos_static_lt (__n, __s),
++                         "call to vsnprintf may overflow the destination "
++                         "buffer")
+ {
+   return __builtin___vsnprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
+ 				    __bos (__s), __fmt, __ap);
+@@ -96,18 +118,27 @@ extern int __vfprintf_chk (FILE *__restrict __stream, int __flag,
+ extern int __vprintf_chk (int __flag, const char *__restrict __format,
+ 			  __gnuc_va_list __ap);
+ 
+-# ifdef __va_arg_pack
+-__fortify_function int
+-fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...)
++# ifdef __FORTIFY_ARG_PACK_OK
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3))) int
++fprintf (FILE *__restrict const __clang_pass_object_size __stream,
++	 const char *__restrict __fmt, ...)
+ {
+-  return __fprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt,
+-			__va_arg_pack ());
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __result = __FORTIFY_CALL_VA_CHK (fprintf, __stream,
++					__USE_FORTIFY_LEVEL - 1, __fmt,
++					__FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __result;
+ }
+ 
+-__fortify_function int
+-printf (const char *__restrict __fmt, ...)
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 1, 2))) int
++printf (const char *__restrict const __clang_pass_object_size __fmt, ...)
+ {
+-  return __printf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __result = __FORTIFY_CALL_VA_CHK (printf, __USE_FORTIFY_LEVEL - 1, __fmt,
++					__FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __result;
+ }
+ # elif !defined __cplusplus
+ #  define printf(...) \
+@@ -116,18 +147,19 @@ printf (const char *__restrict __fmt, ...)
+   __fprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
+ # endif
+ 
+-__fortify_function int
+-vprintf (const char *__restrict __fmt, __gnuc_va_list __ap)
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 1, 0))) int
++vprintf (const char *__restrict const __clang_pass_object_size __fmt,
++	 __gnuc_va_list __ap)
+ {
+-#ifdef __USE_EXTERN_INLINES
++# ifdef __USE_EXTERN_INLINES
+   return __vfprintf_chk (stdout, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+-#else
++# else
+   return __vprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+-#endif
++# endif
+ }
+ 
+-__fortify_function int
+-vfprintf (FILE *__restrict __stream,
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 0))) int
++vfprintf (FILE *__restrict const __clang_pass_object_size __stream,
+ 	  const char *__restrict __fmt, __gnuc_va_list __ap)
+ {
+   return __vfprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+@@ -140,20 +172,26 @@ extern int __vdprintf_chk (int __fd, int __flag,
+ 			   const char *__restrict __fmt, __gnuc_va_list __arg)
+      __attribute__ ((__format__ (__printf__, 3, 0)));
+ 
+-#  ifdef __va_arg_pack
+-__fortify_function int
+-dprintf (int __fd, const char *__restrict __fmt, ...)
++#  ifdef __FORTIFY_ARG_PACK_OK
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3))) int
++dprintf (int __fd, const char *__restrict const __clang_pass_object_size __fmt,
++	 ...)
+ {
+-  return __dprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt,
+-			__va_arg_pack ());
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __result = __FORTIFY_CALL_VA_CHK (dprintf, __fd, __USE_FORTIFY_LEVEL - 1,
++					__fmt, __FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __result;
+ }
+ #  elif !defined __cplusplus
+ #   define dprintf(fd, ...) \
+   __dprintf_chk (fd, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
+ #  endif
+ 
+-__fortify_function int
+-vdprintf (int __fd, const char *__restrict __fmt, __gnuc_va_list __ap)
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 0))) int
++vdprintf (int __fd,
++	  const char *__restrict const __clang_pass_object_size __fmt,
++	  __gnuc_va_list __ap)
+ {
+   return __vdprintf_chk (__fd, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+ }
+@@ -177,28 +215,49 @@ extern int __obstack_vprintf_chk (struct obstack *__restrict __obstack,
+ 				  __gnuc_va_list __args)
+      __THROW __attribute__ ((__format__ (__printf__, 3, 0)));
+ 
+-#  ifdef __va_arg_pack
+-__fortify_function int
+-__NTH (asprintf (char **__restrict __ptr, const char *__restrict __fmt, ...))
++#  ifdef __FORTIFY_ARG_PACK_OK
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3)))
++__wur int
++__NTH (asprintf (char **__restrict const __clang_pass_object_size __ptr,
++		 const char *__restrict __fmt, ...))
+ {
+-  return __asprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt,
+-			 __va_arg_pack ());
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __result = __FORTIFY_CALL_VA_CHK (asprintf, __ptr,
++					__USE_FORTIFY_LEVEL - 1, __fmt,
++					__FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __result;
+ }
+ 
+-__fortify_function int
+-__NTH (__asprintf (char **__restrict __ptr, const char *__restrict __fmt,
+-		   ...))
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3)))
++__wur int
++__NTH (__asprintf (char **__restrict const __clang_pass_object_size __ptr,
++		   const char *__restrict __fmt, ...))
+ {
+-  return __asprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt,
+-			 __va_arg_pack ());
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __result = __FORTIFY_CALL_VA_CHK (asprintf, __ptr,
++					__USE_FORTIFY_LEVEL - 1, __fmt,
++					__FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __result;
+ }
+ 
+-__fortify_function int
+-__NTH (obstack_printf (struct obstack *__restrict __obstack,
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 3))) int
++__NTH (obstack_printf (struct obstack *
++			 __restrict const __clang_pass_object_size __obstack,
+ 		       const char *__restrict __fmt, ...))
+ {
+-  return __obstack_printf_chk (__obstack, __USE_FORTIFY_LEVEL - 1, __fmt,
+-			       __va_arg_pack ());
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __result =
++#   ifdef __use_clang_fortify
++    __obstack_vprintf_chk
++#   else
++    __obstack_printf_chk
++#   endif
++      (__obstack, __USE_FORTIFY_LEVEL - 1, __fmt,
++			     __FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __result;
+ }
+ #  elif !defined __cplusplus
+ #   define asprintf(ptr, ...) \
+@@ -209,15 +268,17 @@ __NTH (obstack_printf (struct obstack *__restrict __obstack,
+   __obstack_printf_chk (obstack, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
+ #  endif
+ 
+-__fortify_function int
+-__NTH (vasprintf (char **__restrict __ptr, const char *__restrict __fmt,
+-		  __gnuc_va_list __ap))
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 0)))
++__wur int
++__NTH (vasprintf (char **__restrict const __clang_pass_object_size __ptr,
++		  const char *__restrict __fmt, __gnuc_va_list __ap))
+ {
+   return __vasprintf_chk (__ptr, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+ }
+ 
+-__fortify_function int
+-__NTH (obstack_vprintf (struct obstack *__restrict __obstack,
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 0))) int
++__NTH (obstack_vprintf (struct obstack *
++			__restrict const __clang_pass_object_size __obstack,
+ 			const char *__restrict __fmt, __gnuc_va_list __ap))
+ {
+   return __obstack_vprintf_chk (__obstack, __USE_FORTIFY_LEVEL - 1, __fmt,
+@@ -230,17 +291,20 @@ __NTH (obstack_vprintf (struct obstack *__restrict __obstack,
+ 
+ #if __GLIBC_USE (DEPRECATED_GETS)
+ extern char *__gets_chk (char *__str, size_t) __wur;
+-extern char *__REDIRECT (__gets_warn, (char *__str), gets)
+-     __wur __warnattr ("please use fgets or getline instead, gets can't "
+-		       "specify buffer size");
+-
+-__fortify_function __wur char *
+-gets (char *__str)
++extern char *__REDIRECT_NTH (__gets_alias, (char *__buf), gets) __wur;
++
++__fortify_potential_overload __wur char *
++gets (char *const __clang_pass_object_size __str)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_IF (__gets_warn, __bos (__str) == (size_t) -1,
++			   "please use fgets or getline instead, gets can't "
++			   "specify buffer size")
+ {
+   if (__bos (__str) != (size_t) -1)
+     return __gets_chk (__str, __bos (__str));
+-  return __gets_warn (__str);
++  return __gets_alias (__str);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+ 
+ extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
+@@ -250,25 +314,20 @@ extern char *__REDIRECT (__fgets_alias,
+ 			 (char *__restrict __s, int __n,
+ 			  FILE *__restrict __stream), fgets)
+     __wur __attr_access ((__write_only__, 1, 2));
+-extern char *__REDIRECT (__fgets_chk_warn,
+-			 (char *__restrict __s, size_t __size, int __n,
+-			  FILE *__restrict __stream), __fgets_chk)
+-     __wur __warnattr ("fgets called with bigger size than length "
+-		       "of destination buffer");
+-
+-__fortify_function __wur __attr_access ((__write_only__, 1, 2)) char *
+-fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
++
++__fortify_potential_overload __wur  __attr_access ((__write_only__, 1, 2)) char *
++fgets (char *__restrict const __clang_pass_object_size __s, int __n,
++       FILE *__restrict __stream)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_IF (__fgets_warn, __bos_static_lt (__n, __s) && __n > 0,
++			   "fgets called with bigger size than length of "
++			   "destination buffer")
+ {
+   if (__bos (__s) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n) || __n <= 0)
+-	return __fgets_chk (__s, __bos (__s), __n, __stream);
+-
+-      if ((size_t) __n > __bos (__s))
+-	return __fgets_chk_warn (__s, __bos (__s), __n, __stream);
+-    }
++    return __fgets_chk (__s, __bos (__s), __n, __stream);
+   return __fgets_alias (__s, __n, __stream);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ extern size_t __fread_chk (void *__restrict __ptr, size_t __ptrlen,
+ 			   size_t __size, size_t __n,
+@@ -277,30 +336,21 @@ extern size_t __REDIRECT (__fread_alias,
+ 			  (void *__restrict __ptr, size_t __size,
+ 			   size_t __n, FILE *__restrict __stream),
+ 			  fread) __wur;
+-extern size_t __REDIRECT (__fread_chk_warn,
+-			  (void *__restrict __ptr, size_t __ptrlen,
+-			   size_t __size, size_t __n,
+-			   FILE *__restrict __stream),
+-			  __fread_chk)
+-     __wur __warnattr ("fread called with bigger size * nmemb than length "
+-		       "of destination buffer");
+ 
+-__fortify_function __wur size_t
+-fread (void *__restrict __ptr, size_t __size, size_t __n,
+-       FILE *__restrict __stream)
++__fortify_potential_overload __wur size_t
++fread (void *__restrict const __clang_pass_object_size0 __ptr, size_t __size,
++       size_t __n, FILE *__restrict __stream)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_IF (__fread_warn, __bos0_static_lt (__size * __n, __ptr)
++			    && !__mul_may_overflow (__size, __n),
++			   "fread called with bigger size * nmemb than length "
++			   "of destination buffer")
+ {
+   if (__bos0 (__ptr) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__size)
+-	  || !__builtin_constant_p (__n)
+-	  || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
+-	return __fread_chk (__ptr, __bos0 (__ptr), __size, __n, __stream);
+-
+-      if (__size * __n > __bos0 (__ptr))
+-	return __fread_chk_warn (__ptr, __bos0 (__ptr), __size, __n, __stream);
+-    }
++    return __fread_chk (__ptr, __bos0 (__ptr), __size, __n, __stream);
+   return __fread_alias (__ptr, __size, __n, __stream);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ #ifdef __USE_GNU
+ extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
+@@ -310,25 +360,21 @@ extern char *__REDIRECT (__fgets_unlocked_alias,
+ 			 (char *__restrict __s, int __n,
+ 			  FILE *__restrict __stream), fgets_unlocked)
+     __wur __attr_access ((__write_only__, 1, 2));
+-extern char *__REDIRECT (__fgets_unlocked_chk_warn,
+-			 (char *__restrict __s, size_t __size, int __n,
+-			  FILE *__restrict __stream), __fgets_unlocked_chk)
+-     __wur __warnattr ("fgets_unlocked called with bigger size than length "
+-		       "of destination buffer");
+-
+-__fortify_function __wur __attr_access ((__write_only__, 1, 2)) char *
+-fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
++
++__fortify_potential_overload __wur __attr_access ((__write_only__, 1, 2)) char *
++fgets_unlocked (char *__restrict const __clang_pass_object_size __s, int __n,
++		FILE *__restrict __stream)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_IF (__fgets_unlocked_warn,
++			   __bos_static_lt (__n, __s) && __n > 0,
++			   "fgets_unlocked called with bigger size than length "
++			   "of destination buffer")
+ {
+   if (__bos (__s) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n) || __n <= 0)
+-	return __fgets_unlocked_chk (__s, __bos (__s), __n, __stream);
+-
+-      if ((size_t) __n > __bos (__s))
+-	return __fgets_unlocked_chk_warn (__s, __bos (__s), __n, __stream);
+-    }
++    return __fgets_unlocked_chk (__s, __bos (__s), __n, __stream);
+   return __fgets_unlocked_alias (__s, __n, __stream);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+ 
+ #ifdef __USE_MISC
+@@ -340,30 +386,19 @@ extern size_t __REDIRECT (__fread_unlocked_alias,
+ 			  (void *__restrict __ptr, size_t __size,
+ 			   size_t __n, FILE *__restrict __stream),
+ 			  fread_unlocked) __wur;
+-extern size_t __REDIRECT (__fread_unlocked_chk_warn,
+-			  (void *__restrict __ptr, size_t __ptrlen,
+-			   size_t __size, size_t __n,
+-			   FILE *__restrict __stream),
+-			  __fread_unlocked_chk)
+-     __wur __warnattr ("fread_unlocked called with bigger size * nmemb than "
+-		       "length of destination buffer");
+ 
+-__fortify_function __wur size_t
+-fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
+-		FILE *__restrict __stream)
++__fortify_potential_overload __wur size_t
++fread_unlocked (void *__restrict const __clang_pass_object_size0 __ptr,
++		size_t __size, size_t __n, FILE *__restrict __stream)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_IF (__fread_unlocked_warn,
++			   __bos0_static_lt (__size * __n, __ptr)
++			    && !__mul_may_overflow(__size, __n),
++			   "fread_unlocked called with bigger size * n than "
++			   "length of destination buffer")
+ {
+   if (__bos0 (__ptr) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__size)
+-	  || !__builtin_constant_p (__n)
+-	  || (__size | __n) >= (((size_t) 1) << (8 * sizeof (size_t) / 2)))
+-	return __fread_unlocked_chk (__ptr, __bos0 (__ptr), __size, __n,
+-				     __stream);
+-
+-      if (__size * __n > __bos0 (__ptr))
+-	return __fread_unlocked_chk_warn (__ptr, __bos0 (__ptr), __size, __n,
+-					  __stream);
+-    }
++    return __fread_unlocked_chk (__ptr, __bos0 (__ptr), __size, __n, __stream);
+ 
+ # ifdef __USE_EXTERN_INLINES
+   if (__builtin_constant_p (__size)
+@@ -388,6 +423,8 @@ fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n,
+ # endif
+   return __fread_unlocked_alias (__ptr, __size, __n, __stream);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+ 
++#undef __mul_may_overflow
+ #endif /* bits/stdio2.h.  */
+diff --git a/misc/bits/syslog.h b/misc/bits/syslog.h
+index 322192df21..68b90a5cb8 100644
+--- a/misc/bits/syslog.h
++++ b/misc/bits/syslog.h
+@@ -20,11 +20,34 @@
+ # error "Never include <bits/syslog.h> directly; use <sys/syslog.h> instead."
+ #endif
+ 
++#ifdef __USE_MISC
++extern void __vsyslog_chk (int __pri, int __flag, const char *__fmt,
++			   __gnuc_va_list __ap)
++     __attribute__ ((__format__ (__printf__, 3, 0)));
++
++__fortify_potential_overload __attribute__ ((__format__ (__printf__, 2, 0))) void
++vsyslog (int __pri, const char *const __clang_pass_object_size __fmt,
++	 __gnuc_va_list __ap)
++{
++  __vsyslog_chk (__pri,  __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
++}
++#endif
+ 
+ extern void __syslog_chk (int __pri, int __flag, const char *__fmt, ...)
+      __attribute__ ((__format__ (__printf__, 3, 4)));
+ 
+-#ifdef __va_arg_pack
++#if defined __use_clang_fortify && __USE_MISC
++/* clang doesn't support __va_arg_pack, so this is only possible if we have
++   vsyslog.  */
++__fortify_overload __attribute__ ((__format__ (__printf__, 2, 3))) void
++syslog (int __pri, const char *const __clang_pass_object_size __fmt, ...)
++{
++  __gnuc_va_list __ap;
++  va_start (__ap, __fmt);
++  __vsyslog_chk (__pri, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
++  va_end (__ap);
++}
++#elif defined __va_arg_pack
+ __fortify_function void
+ syslog (int __pri, const char *__fmt, ...)
+ {
+@@ -34,16 +57,3 @@ syslog (int __pri, const char *__fmt, ...)
+ # define syslog(pri, ...) \
+   __syslog_chk (pri, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
+ #endif
+-
+-
+-#ifdef __USE_MISC
+-extern void __vsyslog_chk (int __pri, int __flag, const char *__fmt,
+-			   __gnuc_va_list __ap)
+-     __attribute__ ((__format__ (__printf__, 3, 0)));
+-
+-__fortify_function void
+-vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
+-{
+-  __vsyslog_chk (__pri,  __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+-}
+-#endif
+diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
+index 38221d0b2a..739fd41a95 100644
+--- a/misc/sys/cdefs.h
++++ b/misc/sys/cdefs.h
+@@ -118,11 +118,150 @@
+ # define __END_DECLS
+ #endif
+ 
++#if defined __clang__ && defined __has_extension
++# define __clang_has_extension(x) __has_extension (x)
++#else
++# define __clang_has_extension(x) 0
++#endif
+ 
+ /* Fortify support.  */
+-#define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1)
++#define __fortify_function __extern_always_inline __attribute_artificial__
++#if defined __clang__ && __USE_FORTIFY_LEVEL > 0 \
++    && !defined _CLANG_FORTIFY_DISABLE \
++    && __clang_has_extension(overloadable_unmarked)
++# define __use_clang_fortify 1
++/* Clang-style FORTIFY creates a different symbol for each FORTIFY'ed function,
++   whereas GCC-style doesn't.  Thus, GCC can assume that the FORTIFY'ed
++   function is always available externally, but clang can't.  */
++# define __attribute_overloadable__ __attribute__ ((__overloadable__))
++# define __attribute_transparent_overload__ \
++  __attribute__ ((__overloadable__("transparent")))
++# define __fortify_overload static __always_inline __attribute_overloadable__
++/* For FORTIFY functions that exist only as decls.  */
++# define __fortify_error_function static __attribute_overloadable__
++# define __clang_pass_object_size_n(n) __attribute__ ((pass_object_size (n)))
++# define __clang_warning(what) __attribute__ ((deprecated(what)))
++# define __clang_prefer_this_overload __attribute__ ((enable_if (1, "")))
++# define __clang_warning_if(c, m) \
++  __attribute__ ((__diagnose_if__ ((c), (m), "warning")))
++# define __clang_error(what) __attribute__ ((unavailable(what)))
++# define __clang_error_if(c, m) \
++  __attribute__ ((__diagnose_if__ ((c), (m), "error")))
++# define __fortify_potential_overload __fortify_overload
++#else
++# define __fortify_potential_overload __fortify_function
++/* Some functions/decls can be shared between clang and non-clang FORTIFY.
++   Turning these into nops makes that possible.  */
++# define __clang_pass_object_size_n(n)
++# define __attribute_overloadable__
++# define __bos_n(ptr, n) __builtin_object_size (ptr, n)
++# define __clang_warning_if(c, m)
++# define __clang_error_if(c, m)
++#endif
++
++#define __bos_level (__USE_FORTIFY_LEVEL > 1)
++#define __bos(ptr) __builtin_object_size (ptr, __bos_level)
+ #define __bos0(ptr) __builtin_object_size (ptr, 0)
+ 
++#define __clang_pass_object_size0 __clang_pass_object_size_n (0)
++#define __clang_pass_object_size __clang_pass_object_size_n (__bos_level)
++
++/* Some of these macros are awkwardly written, and more repetitive than they'd
++   ideally need to be.  This is because both clang and gcc will emit 'note's
++   about where these warnings originate from. For every macro that's expanded,
++   the user sees a note that ultimately doesn't matter to them...  */
++#ifdef __use_clang_fortify
++# define __FORTIFY_PRECONDITIONS
++# define __FORTIFY_FUNCTION_END
++# define __FORTIFY_WARNING_IF(_, c, msg) __clang_warning_if(c, msg)
++/* __builtin_constant_p isn't needed: this is only used in constructs that
++   must be fully evaluated at compile-time.  */
++# define __bos_static_lt_impl(bos_val, n, s) \
++  ((bos_val) != -1ULL && (n) > (bos_val) / (s))
++# define __FORTIFY_CALL_CHK 1
++
++# define __FORTIFY_BOSN_ARGS(bos_fn, n, buf, div, complaint) \
++  (__bos_static_lt_impl (bos_fn (buf), n, div)), (complaint), "warning"
++
++#define __FORTIFY_WARNING_ONLY_IF_BOS0_LT2(fn_name, n, buf, div, complaint) \
++  __attribute__ ((__diagnose_if__ \
++	(__FORTIFY_BOSN_ARGS (__bos0, n, buf, div, complaint))))
++#define __FORTIFY_WARNING_ONLY_IF_BOS0_LT(fn_name, n, buf, complaint) \
++  __attribute__ ((__diagnose_if__ \
++	(__FORTIFY_BOSN_ARGS (__bos0, n, buf, 1, complaint))))
++#define __FORTIFY_WARNING_ONLY_IF_BOS_LT2(fn_name, n, buf, div, complaint) \
++  __attribute__ ((__diagnose_if__ \
++	(__FORTIFY_BOSN_ARGS (__bos, n, buf, div, complaint))))
++#define __FORTIFY_WARNING_ONLY_IF_BOS_LT(fn_name, n, buf, complaint) \
++  __attribute__ ((__diagnose_if__ \
++	(__FORTIFY_BOSN_ARGS (__bos, n, buf, 1, complaint))))
++#else
++# define __FORTIFY_PRECONDITIONS {
++# define __FORTIFY_FUNCTION_END }
++/* __chk_fail was chosen arbitrarily. The function should never be called
++   anyway; it just exists to be reachable after optimizations.  */
++# define __FORTIFY_DECLARE_WARNING_FUNCTION(name, msg) \
++  __attribute ((__warning__(msg))) \
++  extern void __REDIRECT_NTH (name, (void), __chk_fail)
++
++# define __FORTIFY_WARNING_IF_BEGIN(fn_name, cond, complaint, if_cond_true) \
++  { \
++    if (cond) { \
++      if_cond_true; \
++      __FORTIFY_DECLARE_WARNING_FUNCTION (fn_name, complaint); \
++      volatile char __t = 0; \
++      if (__glibc_unlikely (__t)) \
++      {
++
++# define __FORTIFY_WARNING_IF_END \
++      } \
++    } \
++  }
++
++# define __FORTIFY_WARNING_IF(err_fn, cond, complaint) \
++  __FORTIFY_WARNING_IF_BEGIN (err_fn, cond, complaint, (void)0) \
++    err_fn (); \
++  __FORTIFY_WARNING_IF_END
++
++# define __bos_static_lt_impl(bos_val, n, s) \
++  (__builtin_constant_p (n) && (bos_val) != -1ULL && (n) > (bos_val) / (s))
++
++#define __FORTIFY_BOS_WARNING_BEGIN(fn_name, bos_fn, n, buf, div, complaint) \
++  char __need_dynamic_check = !__builtin_constant_p (n); \
++  __FORTIFY_WARNING_IF_BEGIN (fn_name, \
++			      __bos_static_lt_impl (bos_fn (buf), n, div), \
++			      complaint, (__need_dynamic_check = 1))
++
++/* Duplicate this so that the fn_name call happens with the smallest possible
++   macro "call stack". This minimizes diagnostics about expanding macros.  */
++#define __FORTIFY_WARNING_ONLY_IF_BOS0_LT2(err_fn, n, buf, div, complaint) \
++  __FORTIFY_BOS_WARNING_BEGIN (err_fn, __bos0, n, buf, div, complaint) \
++    err_fn (); \
++  __FORTIFY_WARNING_IF_END
++
++#define __FORTIFY_WARNING_ONLY_IF_BOS0_LT(err_fn, n, buf, complaint) \
++  __FORTIFY_BOS_WARNING_BEGIN (err_fn, __bos0, n, buf, 1, complaint) \
++    err_fn (); \
++  __FORTIFY_WARNING_IF_END
++
++#define __FORTIFY_WARNING_ONLY_IF_BOS_LT2(err_fn, n, buf, div, complaint) \
++  __FORTIFY_BOS_WARNING_BEGIN (err_fn, __bos, n, buf, div, complaint) \
++    err_fn (); \
++  __FORTIFY_WARNING_IF_END
++
++#define __FORTIFY_WARNING_ONLY_IF_BOS_LT(err_fn, n, buf, complaint) \
++  __FORTIFY_BOS_WARNING_BEGIN (err_fn, __bos, n, buf, 1, complaint) \
++    err_fn (); \
++  __FORTIFY_WARNING_IF_END
++
++# define __FORTIFY_CALL_CHK (__need_dynamic_check)
++#endif
++
++#define __bos_static_lt2(n, e, s) __bos_static_lt_impl (__bos (e), n, s)
++#define __bos_static_lt(n, e) __bos_static_lt2 (n, e, 1)
++#define __bos0_static_lt2(n, e, s) __bos_static_lt_impl (__bos0 (e), n, s)
++#define __bos0_static_lt(n, e) __bos0_static_lt2 (n, e, 1)
++
+ #if __GNUC_PREREQ (4,3)
+ # define __warnattr(msg) __attribute__((__warning__ (msg)))
+ # define __errordecl(name, msg) \
+@@ -360,6 +499,29 @@
+ # define __va_arg_pack_len() __builtin_va_arg_pack_len ()
+ #endif
+ 
++#if defined(__use_clang_fortify)
++/* clang doesn't support __va_arg_pack, so we need to call the v* version of
++   FORTIFY'ed functions.  */
++#define __FORTIFY_ARG_PACK __fortify_ap
++#define __FORTIFY_INIT_ARG_PACK(va_arg) \
++  __gnuc_va_list __FORTIFY_ARG_PACK; \
++  va_start (__FORTIFY_ARG_PACK, va_arg)
++#define __FORTIFY_CALL_VA_ALIAS(fn, ...) __v##fn##_alias (__VA_ARGS__)
++#define __FORTIFY_CALL_VA_CHK(fn, ...) __v##fn##_chk (__VA_ARGS__)
++#define __FORTIFY_CALL_VA_BUILTIN(fn, ...) \
++  __builtin___v##fn##_chk (__VA_ARGS__)
++#define __FORTIFY_FREE_ARG_PACK() va_end (__FORTIFY_ARG_PACK)
++#define __FORTIFY_ARG_PACK_OK 1
++#elif defined(__va_arg_pack)
++#define __FORTIFY_ARG_PACK __va_arg_pack ()
++#define __FORTIFY_INIT_ARG_PACK(va_arg)
++#define __FORTIFY_CALL_VA_ALIAS(fn, ...) __##fn##_alias (__VA_ARGS__)
++#define __FORTIFY_CALL_VA_CHK(fn, ...) __##fn##_chk (__VA_ARGS__)
++#define __FORTIFY_CALL_VA_BUILTIN(fn, ...) __builtin___##fn##_chk (__VA_ARGS__)
++#define __FORTIFY_FREE_ARG_PACK()
++#define __FORTIFY_ARG_PACK_OK 1
++#endif
++
+ /* It is possible to compile containing GCC extensions even if GCC is
+    run in pedantic mode if the uses are carefully marked using the
+    `__extension__' keyword.  But this is not generally available before
+diff --git a/posix/bits/unistd.h b/posix/bits/unistd.h
+index 725a83eb0d..f3cb9fcce9 100644
+--- a/posix/bits/unistd.h
++++ b/posix/bits/unistd.h
+@@ -26,25 +26,19 @@ extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,
+ extern ssize_t __REDIRECT (__read_alias, (int __fd, void *__buf,
+ 					  size_t __nbytes), read)
+   __wur __attr_access ((__write_only__, 2, 3));
+-extern ssize_t __REDIRECT (__read_chk_warn,
+-			   (int __fd, void *__buf, size_t __nbytes,
+-			    size_t __buflen), __read_chk)
+-     __wur __warnattr ("read called with bigger length than size of "
+-		       "the destination buffer");
+ 
+-__fortify_function __wur ssize_t
+-read (int __fd, void *__buf, size_t __nbytes)
++__fortify_potential_overload __wur ssize_t
++read (int __fd, void *const __clang_pass_object_size0 __buf, size_t __nbytes)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS0_LT (__read_warn, __nbytes, __buf,
++					"read called with bigger length than "
++					"size of the destination buffer")
+ {
+-  if (__bos0 (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__nbytes))
+-	return __read_chk (__fd, __buf, __nbytes, __bos0 (__buf));
+-
+-      if (__nbytes > __bos0 (__buf))
+-	return __read_chk_warn (__fd, __buf, __nbytes, __bos0 (__buf));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos0 (__buf) != (size_t) -1)
++    return __read_chk (__fd, __buf, __nbytes, __bos0 (__buf));
+   return __read_alias (__fd, __buf, __nbytes);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ #ifdef __USE_UNIX98
+ extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,
+@@ -61,67 +55,49 @@ extern ssize_t __REDIRECT (__pread64_alias,
+ 			   (int __fd, void *__buf, size_t __nbytes,
+ 			    __off64_t __offset), pread64)
+   __wur __attr_access ((__write_only__, 2, 3));
+-extern ssize_t __REDIRECT (__pread_chk_warn,
+-			   (int __fd, void *__buf, size_t __nbytes,
+-			    __off_t __offset, size_t __bufsize), __pread_chk)
+-     __wur __warnattr ("pread called with bigger length than size of "
+-		       "the destination buffer");
+-extern ssize_t __REDIRECT (__pread64_chk_warn,
+-			   (int __fd, void *__buf, size_t __nbytes,
+-			    __off64_t __offset, size_t __bufsize),
+-			    __pread64_chk)
+-     __wur __warnattr ("pread64 called with bigger length than size of "
+-		       "the destination buffer");
+ 
+ # ifndef __USE_FILE_OFFSET64
+-__fortify_function __wur ssize_t
+-pread (int __fd, void *__buf, size_t __nbytes, __off_t __offset)
+-{
+-  if (__bos0 (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__nbytes))
+-	return __pread_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
+-
+-      if ( __nbytes > __bos0 (__buf))
+-	return __pread_chk_warn (__fd, __buf, __nbytes, __offset,
+-				 __bos0 (__buf));
+-    }
+-  return __pread_alias (__fd, __buf, __nbytes, __offset);
+-}
++#  define __fo_pread_chk __pread_chk
++#  define __fo_pread_alias __pread_alias
++#  define __fo_off_t __off_t
+ # else
+-__fortify_function __wur ssize_t
+-pread (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
+-{
+-  if (__bos0 (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__nbytes))
+-	return __pread64_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
+-
+-      if ( __nbytes > __bos0 (__buf))
+-	return __pread64_chk_warn (__fd, __buf, __nbytes, __offset,
+-				   __bos0 (__buf));
+-    }
+-
+-  return __pread64_alias (__fd, __buf, __nbytes, __offset);
+-}
++#  define __fo_pread_chk __pread64_chk
++#  define __fo_pread_alias __pread64_alias
++#  define __fo_off_t __off64_t
+ # endif
+ 
+-# ifdef __USE_LARGEFILE64
+-__fortify_function __wur ssize_t
+-pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
++__fortify_potential_overload __wur ssize_t
++pread (int __fd, void *const __clang_pass_object_size0 __buf, size_t __nbytes,
++       __fo_off_t __offset)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS0_LT (__pread_chk_warn, __nbytes, __buf,
++					"pread called with bigger length than "
++					"size of the destination buffer")
+ {
+-  if (__bos0 (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__nbytes))
+-	return __pread64_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
++  if (__FORTIFY_CALL_CHK && __bos0 (__buf) != (size_t) -1)
++    return __fo_pread_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
++  return __fo_pread_alias (__fd, __buf, __nbytes, __offset);
++}
++__FORTIFY_FUNCTION_END
+ 
+-      if ( __nbytes > __bos0 (__buf))
+-	return __pread64_chk_warn (__fd, __buf, __nbytes, __offset,
+-				   __bos0 (__buf));
+-    }
++#undef __fo_pread_chk
++#undef __fo_pread_alias
++#undef __fo_off_t
+ 
++# ifdef __USE_LARGEFILE64
++__fortify_potential_overload __wur ssize_t
++pread64 (int __fd, void *const __clang_pass_object_size0 __buf,
++	  size_t __nbytes, __off64_t __offset)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS0_LT (__pread64_warn, __nbytes, __buf,
++					"pread64 called with bigger length "
++					"than size of the destination buffer")
++{
++  if (__FORTIFY_CALL_CHK && __bos0 (__buf) != (size_t) -1)
++    return __pread64_chk (__fd, __buf, __nbytes, __offset, __bos0 (__buf));
+   return __pread64_alias (__fd, __buf, __nbytes, __offset);
+ }
++__FORTIFY_FUNCTION_END
+ # endif
+ #endif
+ 
+@@ -134,27 +110,21 @@ extern ssize_t __REDIRECT_NTH (__readlink_alias,
+ 			       (const char *__restrict __path,
+ 				char *__restrict __buf, size_t __len), readlink)
+      __nonnull ((1, 2)) __wur __attr_access ((__write_only__, 2, 3));
+-extern ssize_t __REDIRECT_NTH (__readlink_chk_warn,
+-			       (const char *__restrict __path,
+-				char *__restrict __buf, size_t __len,
+-				size_t __buflen), __readlink_chk)
+-     __nonnull ((1, 2)) __wur __warnattr ("readlink called with bigger length "
+-					  "than size of destination buffer");
+ 
+-__fortify_function __nonnull ((1, 2)) __wur ssize_t
+-__NTH (readlink (const char *__restrict __path, char *__restrict __buf,
++__fortify_potential_overload __nonnull ((1, 2)) __wur ssize_t
++__NTH (readlink (const char *__restrict __path,
++		 char *__restrict const __clang_pass_object_size __buf,
+ 		 size_t __len))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__readlink_warn, __len, __buf,
++				       "readlink called with bigger length "
++				       "than size of destination buffer")
+ {
+-  if (__bos (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__len))
+-	return __readlink_chk (__path, __buf, __len, __bos (__buf));
+-
+-      if ( __len > __bos (__buf))
+-	return __readlink_chk_warn (__path, __buf, __len, __bos (__buf));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
++    return __readlink_chk (__path, __buf, __len, __bos (__buf));
+   return __readlink_alias (__path, __buf, __len);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+ 
+ #ifdef __USE_ATFILE
+@@ -167,29 +137,22 @@ extern ssize_t __REDIRECT_NTH (__readlinkat_alias,
+ 				char *__restrict __buf, size_t __len),
+ 			       readlinkat)
+      __nonnull ((2, 3)) __wur __attr_access ((__write_only__, 3, 4));
+-extern ssize_t __REDIRECT_NTH (__readlinkat_chk_warn,
+-			       (int __fd, const char *__restrict __path,
+-				char *__restrict __buf, size_t __len,
+-				size_t __buflen), __readlinkat_chk)
+-     __nonnull ((2, 3)) __wur __warnattr ("readlinkat called with bigger "
+-					  "length than size of destination "
+-					  "buffer");
+-
+-__fortify_function __nonnull ((2, 3)) __wur ssize_t
+-__NTH (readlinkat (int __fd, const char *__restrict __path,
+-		   char *__restrict __buf, size_t __len))
++
++__fortify_potential_overload __nonnull ((2, 3)) __wur ssize_t
++__NTH (readlinkat (int __fd,
++		   const char *__restrict __path,
++		   char *__restrict const __clang_pass_object_size __buf,
++		   size_t __len))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__readlinkat_warn, __len, __buf,
++				       "readlinkat called with bigger length "
++				       "than size of destination buffer")
+ {
+-  if (__bos (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__len))
+-	return __readlinkat_chk (__fd, __path, __buf, __len, __bos (__buf));
+-
+-      if (__len > __bos (__buf))
+-	return __readlinkat_chk_warn (__fd, __path, __buf, __len,
+-				      __bos (__buf));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
++    return __readlinkat_chk (__fd, __path, __buf, __len, __bos (__buf));
+   return __readlinkat_alias (__fd, __path, __buf, __len);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+ 
+ extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
+@@ -197,40 +160,42 @@ extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
+ extern char *__REDIRECT_NTH (__getcwd_alias,
+ 			     (char *__buf, size_t __size), getcwd)
+   __wur __attr_access ((__write_only__, 1, 2));
+-extern char *__REDIRECT_NTH (__getcwd_chk_warn,
+-			     (char *__buf, size_t __size, size_t __buflen),
+-			     __getcwd_chk)
+-     __wur __warnattr ("getcwd caller with bigger length than size of "
+-		       "destination buffer");
+-
+-__fortify_function __wur char *
+-__NTH (getcwd (char *__buf, size_t __size))
+-{
+-  if (__bos (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__size))
+-	return __getcwd_chk (__buf, __size, __bos (__buf));
+ 
+-      if (__size > __bos (__buf))
+-	return __getcwd_chk_warn (__buf, __size, __bos (__buf));
+-    }
++__fortify_potential_overload __wur char *
++__NTH (getcwd (char *const __clang_pass_object_size __buf, size_t __size))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__getcwd_warn, __size, __buf,
++				       "getcwd called with bigger length than "
++				       "size of destination buffer")
++{
++  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
++    return __getcwd_chk (__buf, __size, __bos (__buf));
+   return __getcwd_alias (__buf, __size);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
++# define __warn_getwd_use_something_else \
++  "please use getcwd instead, as getwd doesn't specify buffer size"
++
+ extern char *__getwd_chk (char *__buf, size_t buflen)
+      __THROW __nonnull ((1)) __wur __attr_access ((__write_only__, 1, 2));
+ extern char *__REDIRECT_NTH (__getwd_warn, (char *__buf), getwd)
+-     __nonnull ((1)) __wur __warnattr ("please use getcwd instead, as getwd "
+-				       "doesn't specify buffer size");
++     __nonnull ((1)) __wur __warnattr (__warn_getwd_use_something_else);
+ 
+-__fortify_function __nonnull ((1)) __attribute_deprecated__ __wur char *
+-__NTH (getwd (char *__buf))
++extern char *__REDIRECT (__getwd_alias, (char *__str), getwd) __wur;
++
++__fortify_potential_overload __nonnull ((1)) __attribute_deprecated__ __wur
++char *
++__NTH (getwd (char *const __clang_pass_object_size __buf))
++     __clang_warning_if (__bos (__buf) == (size_t) -1,
++			 __warn_getwd_use_something_else)
+ {
+   if (__bos (__buf) != (size_t) -1)
+     return __getwd_chk (__buf, __bos (__buf));
+   return __getwd_warn (__buf);
+ }
++# undef __warn_getwd_use_something_else
+ #endif
+ 
+ extern size_t __confstr_chk (int __name, char *__buf, size_t __len,
+@@ -239,50 +204,40 @@ extern size_t __confstr_chk (int __name, char *__buf, size_t __len,
+ extern size_t __REDIRECT_NTH (__confstr_alias, (int __name, char *__buf,
+ 						size_t __len), confstr)
+    __attr_access ((__write_only__, 2, 3));
+-extern size_t __REDIRECT_NTH (__confstr_chk_warn,
+-			      (int __name, char *__buf, size_t __len,
+-			       size_t __buflen), __confstr_chk)
+-     __warnattr ("confstr called with bigger length than size of destination "
+-		 "buffer");
+-
+-__fortify_function size_t
+-__NTH (confstr (int __name, char *__buf, size_t __len))
+-{
+-  if (__bos (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__len))
+-	return __confstr_chk (__name, __buf, __len, __bos (__buf));
+ 
+-      if (__bos (__buf) < __len)
+-	return __confstr_chk_warn (__name, __buf, __len, __bos (__buf));
+-    }
++__fortify_potential_overload size_t
++__NTH (confstr (int __name, char *const __clang_pass_object_size __buf,
++		size_t __len))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__confstr_warn, __len, __buf,
++				       "confstr called with bigger length than "
++				       "size of destination buffer")
++{
++  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
++    return __confstr_chk (__name, __buf, __len, __bos (__buf));
+   return __confstr_alias (__name, __buf, __len);
+ }
+-
++__FORTIFY_FUNCTION_END
+ 
+ extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen)
+   __THROW __wur __attr_access ((__write_only__, 2, 1));
+ extern int __REDIRECT_NTH (__getgroups_alias, (int __size, __gid_t __list[]),
+ 			   getgroups) __wur __attr_access ((__write_only__, 2, 1));
+-extern int __REDIRECT_NTH (__getgroups_chk_warn,
+-			   (int __size, __gid_t __list[], size_t __listlen),
+-			   __getgroups_chk)
+-     __wur __warnattr ("getgroups called with bigger group count than what "
+-		       "can fit into destination buffer");
+-
+-__fortify_function int
+-__NTH (getgroups (int __size, __gid_t __list[]))
++
++__fortify_potential_overload int
++__NTH (getgroups (int __size, __gid_t *const __clang_pass_object_size __list))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__getgroups_warn,
++				       __size * sizeof (__gid_t), __list,
++				       "getgroups called with bigger group "
++				       "count than what can fit into "
++				       "destination buffer")
+ {
+-  if (__bos (__list) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__size) || __size < 0)
+-	return __getgroups_chk (__size, __list, __bos (__list));
+-
+-      if (__size * sizeof (__gid_t) > __bos (__list))
+-	return __getgroups_chk_warn (__size, __list, __bos (__list));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__list) != (size_t) -1)
++    return __getgroups_chk (__size, __list, __bos (__list));
+   return __getgroups_alias (__size, __list);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ 
+ extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen,
+@@ -297,19 +252,19 @@ extern int __REDIRECT_NTH (__ttyname_r_chk_warn,
+      __nonnull ((2)) __warnattr ("ttyname_r called with bigger buflen than "
+ 				 "size of destination buffer");
+ 
+-__fortify_function int
+-__NTH (ttyname_r (int __fd, char *__buf, size_t __buflen))
++__fortify_potential_overload int
++__NTH (ttyname_r (int __fd, char *const __clang_pass_object_size __buf,
++		  size_t __buflen))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__ttyname_r_warn, __buflen, __buf,
++				       "ttyname_r called with bigger buflen "
++				       "than size of destination buffer")
+ {
+-  if (__bos (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__buflen))
+-	return __ttyname_r_chk (__fd, __buf, __buflen, __bos (__buf));
+-
+-      if (__buflen > __bos (__buf))
+-	return __ttyname_r_chk_warn (__fd, __buf, __buflen, __bos (__buf));
+-    }
+-  return __ttyname_r_alias (__fd, __buf, __buflen);
+-}
++  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
++    return __ttyname_r_chk (__fd, __buf, __buflen, __bos (__buf));
++   return __ttyname_r_alias (__fd, __buf, __buflen);
++ }
++__FORTIFY_FUNCTION_END
+ 
+ 
+ #ifdef __USE_POSIX199506
+@@ -317,25 +272,19 @@ extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)
+      __nonnull ((1)) __attr_access ((__write_only__, 1, 2));
+ extern int __REDIRECT (__getlogin_r_alias, (char *__buf, size_t __buflen),
+ 		       getlogin_r) __nonnull ((1));
+-extern int __REDIRECT (__getlogin_r_chk_warn,
+-		       (char *__buf, size_t __buflen, size_t __nreal),
+-		       __getlogin_r_chk)
+-     __nonnull ((1)) __warnattr ("getlogin_r called with bigger buflen than "
+-				 "size of destination buffer");
+ 
+-__fortify_function int
+-getlogin_r (char *__buf, size_t __buflen)
++__fortify_potential_overload int
++getlogin_r (char *const __clang_pass_object_size __buf, size_t __buflen)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__getlogin_r_warn, __buflen, __buf,
++				       "getlogin_r called with bigger buflen "
++				       "than size of destination buffer")
+ {
+-  if (__bos (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__buflen))
+-	return __getlogin_r_chk (__buf, __buflen, __bos (__buf));
+-
+-      if (__buflen > __bos (__buf))
+-	return __getlogin_r_chk_warn (__buf, __buflen, __bos (__buf));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
++    return __getlogin_r_chk (__buf, __buflen, __bos (__buf));
+   return __getlogin_r_alias (__buf, __buflen);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+ 
+ 
+@@ -345,25 +294,20 @@ extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal)
+ extern int __REDIRECT_NTH (__gethostname_alias, (char *__buf, size_t __buflen),
+ 			   gethostname)
+   __nonnull ((1)) __attr_access ((__write_only__, 1, 2));
+-extern int __REDIRECT_NTH (__gethostname_chk_warn,
+-			   (char *__buf, size_t __buflen, size_t __nreal),
+-			   __gethostname_chk)
+-     __nonnull ((1)) __warnattr ("gethostname called with bigger buflen than "
+-				 "size of destination buffer");
+ 
+-__fortify_function int
+-__NTH (gethostname (char *__buf, size_t __buflen))
++__fortify_potential_overload int
++__NTH (gethostname (char *const __clang_pass_object_size __buf,
++		    size_t __buflen))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__gethostname_warn, __buflen, __buf,
++				       "gethostname called with bigger buflen "
++				       "than size of destination buffer")
+ {
+-  if (__bos (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__buflen))
+-	return __gethostname_chk (__buf, __buflen, __bos (__buf));
+-
+-      if (__buflen > __bos (__buf))
+-	return __gethostname_chk_warn (__buf, __buflen, __bos (__buf));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
++    return __gethostname_chk (__buf, __buflen, __bos (__buf));
+   return __gethostname_alias (__buf, __buflen);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+ 
+ 
+@@ -374,24 +318,18 @@ extern int __REDIRECT_NTH (__getdomainname_alias, (char *__buf,
+ 						   size_t __buflen),
+ 			   getdomainname) __nonnull ((1))
+   __wur __attr_access ((__write_only__, 1, 2));
+-extern int __REDIRECT_NTH (__getdomainname_chk_warn,
+-			   (char *__buf, size_t __buflen, size_t __nreal),
+-			   __getdomainname_chk)
+-     __nonnull ((1)) __wur __warnattr ("getdomainname called with bigger "
+-				       "buflen than size of destination "
+-				       "buffer");
+-
+-__fortify_function int
+-__NTH (getdomainname (char *__buf, size_t __buflen))
+-{
+-  if (__bos (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__buflen))
+-	return __getdomainname_chk (__buf, __buflen, __bos (__buf));
+ 
+-      if (__buflen > __bos (__buf))
+-	return __getdomainname_chk_warn (__buf, __buflen, __bos (__buf));
+-    }
++__fortify_potential_overload int
++__NTH (getdomainname (char *const __clang_pass_object_size __buf,
++		      size_t __buflen))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__getdomainname_warn, __buflen, __buf,
++				       "getdomainname called with bigger "
++				       "buflen than size of destination buffer")
++{
++  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
++    return __getdomainname_chk (__buf, __buflen, __bos (__buf));
+   return __getdomainname_alias (__buf, __buflen);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+diff --git a/rt/bits/mqueue2.h b/rt/bits/mqueue2.h
+index 354f0d53bf..388b63a4f8 100644
+--- a/rt/bits/mqueue2.h
++++ b/rt/bits/mqueue2.h
+@@ -29,10 +29,47 @@ extern mqd_t __mq_open_2 (const char *__name, int __oflag)
+ extern mqd_t __REDIRECT_NTH (__mq_open_alias, (const char *__name,
+ 					       int __oflag, ...), mq_open)
+      __nonnull ((1));
++
++#define __warn_mq_open_wrong_number_of_args "mq_open can be called either " \
++  "with 2 or 4 arguments"
++#define __warn_mq_open_missing_mode_and_attr "mq_open with O_CREAT in " \
++  "second argument needs 4 arguments"
++#ifdef __use_clang_fortify
++__fortify_overload __clang_error (__warn_mq_open_wrong_number_of_args) mqd_t
++__NTH (mq_open (const char *const __clang_pass_object_size __name, int __oflag,
++		int __mode))
++{
++  return __mq_open_alias (__name, __oflag, __mode);
++}
++
++__fortify_overload __clang_error (__warn_mq_open_wrong_number_of_args)
++mqd_t
++__NTH (mq_open (const char *const __clang_pass_object_size __name, int __oflag,
++		int __mode, struct mq_attr *__attr, ...))
++{
++  return __mq_open_alias (__name, __oflag, __mode, __attr);
++}
++
++__fortify_overload __clang_prefer_this_overload mqd_t
++__NTH (mq_open (const char *const __clang_pass_object_size __name,
++		int __oflag))
++     __clang_error_if ((__oflag & O_CREAT),
++                       __warn_mq_open_missing_mode_and_attr)
++{
++  return __mq_open_alias (__name, __oflag);
++}
++
++__fortify_overload __clang_prefer_this_overload mqd_t
++__NTH (mq_open (const char *const __clang_pass_object_size __name, int __oflag,
++		int __mode, struct mq_attr *__attr))
++{
++  return __mq_open_alias (__name, __oflag, __mode, __attr);
++}
++#else
+ __errordecl (__mq_open_wrong_number_of_args,
+-	     "mq_open can be called either with 2 or 4 arguments");
++  __warn_mq_open_wrong_number_of_args);
+ __errordecl (__mq_open_missing_mode_and_attr,
+-	     "mq_open with O_CREAT in second argument needs 4 arguments");
++  __warn_mq_open_missing_mode_and_attr);
+ 
+ __fortify_function mqd_t
+ __NTH (mq_open (const char *__name, int __oflag, ...))
+@@ -55,3 +92,6 @@ __NTH (mq_open (const char *__name, int __oflag, ...))
+ 
+   return __mq_open_alias (__name, __oflag, __va_arg_pack ());
+ }
++#endif
++#undef __warn_mq_open_wrong_number_of_args
++#undef __warn_mq_open_missing_mode_and_attr
+diff --git a/rt/mqueue.h b/rt/mqueue.h
+index a2a2aa1771..5a2976d1be 100644
+--- a/rt/mqueue.h
++++ b/rt/mqueue.h
+@@ -89,7 +89,7 @@ extern int mq_timedsend (mqd_t __mqdes, const char *__msg_ptr,
+ 
+ /* Define some inlines helping to catch common problems.  */
+ #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function \
+-    && defined __va_arg_pack_len
++    && (defined __va_arg_pack_len || defined __use_clang_fortify)
+ # include <bits/mqueue2.h>
+ #endif
+ 
+diff --git a/socket/bits/socket2.h b/socket/bits/socket2.h
+index c0421ce244..12d2e75f57 100644
+--- a/socket/bits/socket2.h
++++ b/socket/bits/socket2.h
+@@ -24,25 +24,20 @@ extern ssize_t __recv_chk (int __fd, void *__buf, size_t __n, size_t __buflen,
+ 			   int __flags);
+ extern ssize_t __REDIRECT (__recv_alias, (int __fd, void *__buf, size_t __n,
+ 					  int __flags), recv);
+-extern ssize_t __REDIRECT (__recv_chk_warn,
+-			   (int __fd, void *__buf, size_t __n, size_t __buflen,
+-			    int __flags), __recv_chk)
+-     __warnattr ("recv called with bigger length than size of destination "
+-		 "buffer");
+ 
+-__fortify_function ssize_t
+-recv (int __fd, void *__buf, size_t __n, int __flags)
++__fortify_potential_overload ssize_t
++recv (int __fd, void *const __clang_pass_object_size0 __buf, size_t __n,
++      int __flags)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS0_LT (__recv_warn, __n, __buf,
++					"recv called with bigger length than "
++					"size of destination buffer")
+ {
+-  if (__bos0 (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n))
+-	return __recv_chk (__fd, __buf, __n, __bos0 (__buf), __flags);
+-
+-      if (__n > __bos0 (__buf))
+-	return __recv_chk_warn (__fd, __buf, __n, __bos0 (__buf), __flags);
+-    }
++  if (__FORTIFY_CALL_CHK && __bos0 (__buf) != (size_t) -1)
++    return __recv_chk (__fd, __buf, __n, __bos0 (__buf), __flags);
+   return __recv_alias (__fd, __buf, __n, __flags);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n,
+ 			       size_t __buflen, int __flags,
+@@ -52,26 +47,19 @@ extern ssize_t __REDIRECT (__recvfrom_alias,
+ 			   (int __fd, void *__restrict __buf, size_t __n,
+ 			    int __flags, __SOCKADDR_ARG __addr,
+ 			    socklen_t *__restrict __addr_len), recvfrom);
+-extern ssize_t __REDIRECT (__recvfrom_chk_warn,
+-			   (int __fd, void *__restrict __buf, size_t __n,
+-			    size_t __buflen, int __flags,
+-			    __SOCKADDR_ARG __addr,
+-			    socklen_t *__restrict __addr_len), __recvfrom_chk)
+-     __warnattr ("recvfrom called with bigger length than size of "
+-		 "destination buffer");
+ 
+-__fortify_function ssize_t
+-recvfrom (int __fd, void *__restrict __buf, size_t __n, int __flags,
+-	  __SOCKADDR_ARG __addr, socklen_t *__restrict __addr_len)
++__fortify_potential_overload ssize_t
++recvfrom (int __fd, void *__restrict const __clang_pass_object_size0 __buf,
++	  size_t __n, int __flags, __SOCKADDR_ARG __addr,
++	  socklen_t *__restrict __addr_len)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS0_LT (__recvfrom_warn, __n, __buf,
++					"recvfrom called with bigger length "
++					"than size of destination buffer")
+ {
+-  if (__bos0 (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n))
+-	return __recvfrom_chk (__fd, __buf, __n, __bos0 (__buf), __flags,
+-			       __addr, __addr_len);
+-      if (__n > __bos0 (__buf))
+-	return __recvfrom_chk_warn (__fd, __buf, __n, __bos0 (__buf), __flags,
+-				    __addr, __addr_len);
+-    }
++  if (__FORTIFY_CALL_CHK && __bos0 (__buf) != (size_t) -1)
++    return __recvfrom_chk (__fd, __buf, __n, __bos0 (__buf), __flags, __addr,
++			   __addr_len);
+   return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len);
+ }
++__FORTIFY_FUNCTION_END
+diff --git a/stdlib/bits/stdlib.h b/stdlib/bits/stdlib.h
+index 9134d3f36b..b70e6f4215 100644
+--- a/stdlib/bits/stdlib.h
++++ b/stdlib/bits/stdlib.h
+@@ -26,27 +26,27 @@ extern char *__realpath_chk (const char *__restrict __name,
+ extern char *__REDIRECT_NTH (__realpath_alias,
+ 			     (const char *__restrict __name,
+ 			      char *__restrict __resolved), realpath) __wur;
+-extern char *__REDIRECT_NTH (__realpath_chk_warn,
+-			     (const char *__restrict __name,
+-			      char *__restrict __resolved,
+-			      size_t __resolvedlen), __realpath_chk) __wur
+-     __warnattr ("second argument of realpath must be either NULL or at "
+-		 "least PATH_MAX bytes long buffer");
+ 
+-__fortify_function __wur char *
+-__NTH (realpath (const char *__restrict __name, char *__restrict __resolved))
++__fortify_potential_overload __wur char *
++__NTH (realpath (const char *__restrict __name,
++		 char *__restrict const __clang_pass_object_size __resolved))
++__FORTIFY_PRECONDITIONS
++#if defined _LIBC_LIMITS_H_ && defined PATH_MAX
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__realpath_warn, PATH_MAX, __resolved,
++				       "second argument of realpath must be "
++				       "either NULL or at least PATH_MAX "
++				       "bytes long buffer")
++#endif
+ {
+-  if (__bos (__resolved) != (size_t) -1)
+-    {
++  if (
+ #if defined _LIBC_LIMITS_H_ && defined PATH_MAX
+-      if (__bos (__resolved) < PATH_MAX)
+-	return __realpath_chk_warn (__name, __resolved, __bos (__resolved));
++      __FORTIFY_CALL_CHK &&
+ #endif
+-      return __realpath_chk (__name, __resolved, __bos (__resolved));
+-    }
+-
++      __bos (__resolved) != (size_t) -1)
++    return __realpath_chk (__name, __resolved, __bos (__resolved));
+   return __realpath_alias (__name, __resolved);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ 
+ extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
+@@ -55,33 +55,28 @@ extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
+ extern int __REDIRECT_NTH (__ptsname_r_alias, (int __fd, char *__buf,
+ 					       size_t __buflen), ptsname_r)
+      __nonnull ((2)) __attr_access ((__write_only__, 2, 3));
+-extern int __REDIRECT_NTH (__ptsname_r_chk_warn,
+-			   (int __fd, char *__buf, size_t __buflen,
+-			    size_t __nreal), __ptsname_r_chk)
+-     __nonnull ((2)) __warnattr ("ptsname_r called with buflen bigger than "
+-				 "size of buf");
+-
+-__fortify_function int
+-__NTH (ptsname_r (int __fd, char *__buf, size_t __buflen))
++
++__fortify_potential_overload int
++__NTH (ptsname_r (int __fd, char *const __clang_pass_object_size __buf,
++		  size_t __buflen))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__ptsname_r_warn, __buflen, __buf,
++				       "ptsname_r called with buflen "
++				       "bigger than size of buf")
+ {
+-  if (__bos (__buf) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__buflen))
+-	return __ptsname_r_chk (__fd, __buf, __buflen, __bos (__buf));
+-      if (__buflen > __bos (__buf))
+-	return __ptsname_r_chk_warn (__fd, __buf, __buflen, __bos (__buf));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__buf) != (size_t) -1)
++    return __ptsname_r_chk (__fd, __buf, __buflen, __bos (__buf));
+   return __ptsname_r_alias (__fd, __buf, __buflen);
+ }
+-
++__FORTIFY_FUNCTION_END
+ 
+ extern int __wctomb_chk (char *__s, wchar_t __wchar, size_t __buflen)
+   __THROW __wur;
+ extern int __REDIRECT_NTH (__wctomb_alias, (char *__s, wchar_t __wchar),
+ 			   wctomb) __wur;
+ 
+-__fortify_function __wur int
+-__NTH (wctomb (char *__s, wchar_t __wchar))
++__fortify_potential_overload __wur int
++__NTH (wctomb (char *const __clang_pass_object_size __s, wchar_t __wchar))
+ {
+   /* We would have to include <limits.h> to get a definition of MB_LEN_MAX.
+      But this would only disturb the namespace.  So we define our own
+@@ -105,29 +100,22 @@ extern size_t __REDIRECT_NTH (__mbstowcs_alias,
+ 			       const char *__restrict __src,
+ 			       size_t __len), mbstowcs)
+     __attr_access ((__write_only__, 1, 3)) __attr_access ((__read_only__, 2));
+-extern size_t __REDIRECT_NTH (__mbstowcs_chk_warn,
+-			      (wchar_t *__restrict __dst,
+-			       const char *__restrict __src,
+-			       size_t __len, size_t __dstlen), __mbstowcs_chk)
+-     __warnattr ("mbstowcs called with dst buffer smaller than len "
+-		 "* sizeof (wchar_t)");
+ 
+-__fortify_function size_t
+-__NTH (mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src,
+-		 size_t __len))
++__fortify_potential_overload size_t
++__NTH (mbstowcs (wchar_t *__restrict const __clang_pass_object_size __dst,
++		 const char *__restrict __src, size_t __len))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__mbstowcs_warn, __len, __dst,
++					sizeof (wchar_t),
++					"mbstowcs called with dst buffer "
++					"smaller than len * sizeof (wchar_t)")
+ {
+-  if (__bos (__dst) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__len))
+-	return __mbstowcs_chk (__dst, __src, __len,
+-			       __bos (__dst) / sizeof (wchar_t));
+-
+-      if (__len > __bos (__dst) / sizeof (wchar_t))
+-	return __mbstowcs_chk_warn (__dst, __src, __len,
+-				     __bos (__dst) / sizeof (wchar_t));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
++    return __mbstowcs_chk (__dst, __src, __len,
++			   __bos (__dst) / sizeof (wchar_t));
+   return __mbstowcs_alias (__dst, __src, __len);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ 
+ extern size_t __wcstombs_chk (char *__restrict __dst,
+@@ -139,22 +127,17 @@ extern size_t __REDIRECT_NTH (__wcstombs_alias,
+ 			       const wchar_t *__restrict __src,
+ 			       size_t __len), wcstombs)
+   __attr_access ((__write_only__, 1, 3)) __attr_access ((__read_only__, 2));
+-extern size_t __REDIRECT_NTH (__wcstombs_chk_warn,
+-			      (char *__restrict __dst,
+-			       const wchar_t *__restrict __src,
+-			       size_t __len, size_t __dstlen), __wcstombs_chk)
+-     __warnattr ("wcstombs called with dst buffer smaller than len");
+ 
+-__fortify_function size_t
+-__NTH (wcstombs (char *__restrict __dst, const wchar_t *__restrict __src,
+-		 size_t __len))
++__fortify_potential_overload size_t
++__NTH (wcstombs (char *__restrict const __clang_pass_object_size __dst,
++		 const wchar_t *__restrict __src, size_t __len))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__wcstombs_warn, __len, __dst,
++				       "wcstombs called with dst buffer "
++				       "smaller than len")
+ {
+-  if (__bos (__dst) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__len))
+-	return __wcstombs_chk (__dst, __src, __len, __bos (__dst));
+-      if (__len > __bos (__dst))
+-	return __wcstombs_chk_warn (__dst, __src, __len, __bos (__dst));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
++    return __wcstombs_chk (__dst, __src, __len, __bos (__dst));
+   return __wcstombs_alias (__dst, __src, __len);
+ }
++__FORTIFY_FUNCTION_END
+diff --git a/string/bits/string_fortified.h b/string/bits/string_fortified.h
+index c8d3051af8..a9a5794c27 100644
+--- a/string/bits/string_fortified.h
++++ b/string/bits/string_fortified.h
+@@ -22,39 +22,83 @@
+ # error "Never use <bits/string_fortified.h> directly; include <string.h> instead."
+ #endif
+ 
+-__fortify_function void *
+-__NTH (memcpy (void *__restrict __dest, const void *__restrict __src,
+-	       size_t __len))
++#define __warn_len_too_large \
++  "function called with bigger length than the destination buffer"
++/* Repeat bodies here to reduce 'note's if we detect a problem.  */
++#define __size_too_small(bos, dest, len) \
++  (bos (dest) != (size_t) -1 && bos (dest) < len)
++#define __warn_if_dest_too_small(dest, len) \
++  __clang_warning_if (__size_too_small (__bos, dest, len), \
++					__warn_len_too_large)
++#define __warn_if_dest_too_small0(dest, len) \
++  __clang_warning_if (__size_too_small (__bos0, dest, len), \
++					__warn_len_too_large)
++
++#define __warn_input_str_too_large \
++  "destination buffer will always be overflown by source"
++#define __warn_if_src_too_large(dest, src) \
++  __clang_warning_if (__size_too_small (__bos, dest, __builtin_strlen (src) + 1), \
++		      __warn_input_str_too_large)
++
++__fortify_potential_overload void *
++__NTH (memcpy (void *__restrict const __clang_pass_object_size0 __dest,
++	       const void *__restrict __src, size_t __len))
++     __warn_if_dest_too_small0 (__dest, __len)
+ {
+-  return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
++  size_t __bos_dst = __bos0 (__dest);
++  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
++				   && __bos_dst >= __len))
++    return __builtin_memcpy (__dest, __src, __len);
++  return __builtin___memcpy_chk (__dest, __src, __len, __bos_dst);
+ }
+ 
+-__fortify_function void *
+-__NTH (memmove (void *__dest, const void *__src, size_t __len))
++__fortify_potential_overload void *
++__NTH (memmove (void *const __clang_pass_object_size0 __dest,
++		const void *__src, size_t __len))
++     __warn_if_dest_too_small0 (__dest, __len)
+ {
+-  return __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
++  size_t __bos_dst = __bos0 (__dest);
++  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
++				   && __bos_dst >= __len))
++    return __builtin_memmove (__dest, __src, __len);
++  return __builtin___memmove_chk (__dest, __src, __len, __bos_dst);
+ }
+ 
+ #ifdef __USE_GNU
+-__fortify_function void *
+-__NTH (mempcpy (void *__restrict __dest, const void *__restrict __src,
+-		size_t __len))
++__fortify_potential_overload void *
++__NTH (mempcpy (void *__restrict const __clang_pass_object_size0 __dest,
++		const void *__restrict __src, size_t __len))
++     __warn_if_dest_too_small0 (__dest, __len)
+ {
+-  return __builtin___mempcpy_chk (__dest, __src, __len, __bos0 (__dest));
++  size_t __bos_dst = __bos0 (__dest);
++  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
++				   && __bos_dst >= __len))
++    return __builtin_mempcpy (__dest, __src, __len);
++  return __builtin___mempcpy_chk (__dest, __src, __len, __bos_dst);
+ }
+ #endif
+ 
+-
+ /* The first two tests here help to catch a somewhat common problem
+    where the second and third parameter are transposed.  This is
+    especially problematic if the intended fill value is zero.  In this
+    case no work is done at all.  We detect these problems by referring
+    non-existing functions.  */
+-__fortify_function void *
+-__NTH (memset (void *__dest, int __ch, size_t __len))
++#define __warn_memset_zero_len_msg \
++  "memset used with constant zero length parameter; this could be due to " \
++  "transposed parameters"
++__fortify_potential_overload void *
++__NTH (memset (void *const __clang_pass_object_size0 __dest, int __ch,
++	       size_t __len))
++     __warn_if_dest_too_small0 (__dest, __len)
++     __clang_warning_if (__len == 0 && __ch != 0, __warn_memset_zero_len_msg)
+ {
+-  return __builtin___memset_chk (__dest, __ch, __len, __bos0 (__dest));
++  size_t __bos_dst = __bos0 (__dest);
++  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
++				   && __bos_dst >= __len))
++    return __builtin_memset (__dest, __ch, __len);
++  return __builtin___memset_chk (__dest, __ch, __len, __bos_dst);
+ }
++#undef __warn_memset_zero_len_msg
+ 
+ #ifdef __USE_MISC
+ # include <bits/strings_fortified.h>
+@@ -69,24 +113,30 @@ __NTH (explicit_bzero (void *__dest, size_t __len))
+ }
+ #endif
+ 
+-__fortify_function char *
+-__NTH (strcpy (char *__restrict __dest, const char *__restrict __src))
++__fortify_potential_overload char *
++__NTH (strcpy (char *__restrict const __clang_pass_object_size __dest,
++	       const char *__restrict __src))
++     __warn_if_src_too_large (__dest, __src)
+ {
+   return __builtin___strcpy_chk (__dest, __src, __bos (__dest));
+ }
+ 
+ #ifdef __USE_GNU
+-__fortify_function char *
+-__NTH (stpcpy (char *__restrict __dest, const char *__restrict __src))
++__fortify_potential_overload char *
++__NTH (stpcpy (char *__restrict const __clang_pass_object_size __dest,
++	       const char *__restrict __src))
++     __warn_if_src_too_large (__dest, __src)
+ {
+   return __builtin___stpcpy_chk (__dest, __src, __bos (__dest));
+ }
+ #endif
+ 
+-
+-__fortify_function char *
+-__NTH (strncpy (char *__restrict __dest, const char *__restrict __src,
+-		size_t __len))
++__fortify_potential_overload char *
++__NTH (strncpy (char *__restrict const __clang_pass_object_size __dest,
++		const char *__restrict __src, size_t __len))
++/* clang: Don't warn when __builtin_strlen (__src) < __bos (__dest),
++   but __len > __bos (__dest).  The user should fix their code instead.  */
++     __warn_if_dest_too_small (__dest, __len)
+ {
+   return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
+ }
+@@ -98,28 +148,36 @@ extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n,
+ extern char *__REDIRECT_NTH (__stpncpy_alias, (char *__dest, const char *__src,
+ 					       size_t __n), stpncpy);
+ 
+-__fortify_function char *
+-__NTH (stpncpy (char *__dest, const char *__src, size_t __n))
++__fortify_potential_overload char *
++__NTH (stpncpy (char *const __clang_pass_object_size __dest, const char *__src,
++		size_t __n))
++     __warn_if_dest_too_small (__dest, __n)
+ {
+-  if (__bos (__dest) != (size_t) -1
+-      && (!__builtin_constant_p (__n) || __n > __bos (__dest)))
++  if (__bos (__dest) != (size_t) -1)
+     return __stpncpy_chk (__dest, __src, __n, __bos (__dest));
+   return __stpncpy_alias (__dest, __src, __n);
+ }
+ 
+-
+-__fortify_function char *
+-__NTH (strcat (char *__restrict __dest, const char *__restrict __src))
++__fortify_potential_overload char *
++__NTH (strcat (char *__restrict const __clang_pass_object_size __dest,
++	       const char *__restrict __src))
++     __warn_if_src_too_large (__dest, __src)
+ {
+   return __builtin___strcat_chk (__dest, __src, __bos (__dest));
+ }
+ 
+-
+-__fortify_function char *
+-__NTH (strncat (char *__restrict __dest, const char *__restrict __src,
+-		size_t __len))
++__fortify_potential_overload char *
++__NTH (strncat (char *__restrict const __clang_pass_object_size __dest,
++		const char *__restrict __src, size_t __len))
++     __warn_if_src_too_large (__dest, __src)
+ {
+   return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
+ }
+ 
++#undef __warn_len_too_large
++#undef __size_too_small
++#undef __warn_if_dest_too_small
++#undef __warn_if_dest_too_small0
++#undef __warn_input_str_too_large
++#undef __warn_if_src_too_large
+ #endif /* bits/string_fortified.h */
+diff --git a/string/bits/strings_fortified.h b/string/bits/strings_fortified.h
+index d4091f4f69..4d0cd02612 100644
+--- a/string/bits/strings_fortified.h
++++ b/string/bits/strings_fortified.h
+@@ -19,16 +19,40 @@
+ #ifndef __STRINGS_FORTIFIED
+ # define __STRINGS_FORTIFIED 1
+ 
+-__fortify_function void
+-__NTH (bcopy (const void *__src, void *__dest, size_t __len))
++#define __strings_warn_len_too_large \
++  "function called with bigger length than the destination buffer"
++
++#define __strings_size_too_small(dest, len) \
++  (__bos0 (dest) != (size_t) -1 && __bos0 (dest) < len)
++
++__fortify_potential_overload void
++__NTH (bcopy (const void *__src, void *const __clang_pass_object_size0 __dest,
++	      size_t __len))
++     __clang_warning_if (__strings_size_too_small (__dest, __len),
++			 __strings_warn_len_too_large)
+ {
+-  (void) __builtin___memmove_chk (__dest, __src, __len, __bos0 (__dest));
++  size_t __bos_dst = __bos0 (__dest);
++  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
++				   && __bos_dst >= __len))
++    (void) __builtin_memmove (__dest, __src, __len);
++  else
++    (void) __builtin___memmove_chk (__dest, __src, __len, __bos_dst);
+ }
+ 
+-__fortify_function void
+-__NTH (bzero (void *__dest, size_t __len))
++__fortify_potential_overload void
++__NTH (bzero (void *const __clang_pass_object_size0 __dest, size_t __len))
++     __clang_warning_if (__strings_size_too_small (__dest, __len),
++			 __strings_warn_len_too_large)
+ {
+-  (void) __builtin___memset_chk (__dest, '\0', __len, __bos0 (__dest));
++  size_t __bos_dst = __bos0 (__dest);
++  if (__bos_dst == (size_t) -1 || (__builtin_constant_p (__len)
++				   && __bos_dst >= __len))
++    (void) __builtin_memset (__dest, '\0', __len);
++  else
++    (void) __builtin___memset_chk (__dest, '\0', __len, __bos_dst);
+ }
+ 
++
++#undef __strings_size_too_small
++#undef __strings_warn_len_too_large
+ #endif
+diff --git a/wcsmbs/bits/wchar2.h b/wcsmbs/bits/wchar2.h
+index 86e8e23e76..1b0718119a 100644
+--- a/wcsmbs/bits/wchar2.h
++++ b/wcsmbs/bits/wchar2.h
+@@ -20,7 +20,6 @@
+ # error "Never include <bits/wchar2.h> directly; use <wchar.h> instead."
+ #endif
+ 
+-
+ extern wchar_t *__wmemcpy_chk (wchar_t *__restrict __s1,
+ 			       const wchar_t *__restrict __s2, size_t __n,
+ 			       size_t __ns1) __THROW;
+@@ -28,57 +27,42 @@ extern wchar_t *__REDIRECT_NTH (__wmemcpy_alias,
+ 				(wchar_t *__restrict __s1,
+ 				 const wchar_t *__restrict __s2, size_t __n),
+ 				wmemcpy);
+-extern wchar_t *__REDIRECT_NTH (__wmemcpy_chk_warn,
+-				(wchar_t *__restrict __s1,
+-				 const wchar_t *__restrict __s2, size_t __n,
+-				 size_t __ns1), __wmemcpy_chk)
+-     __warnattr ("wmemcpy called with length bigger than size of destination "
+-		 "buffer");
+ 
+-__fortify_function wchar_t *
+-__NTH (wmemcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2,
+-		size_t __n))
++__fortify_potential_overload wchar_t *
++__NTH (wmemcpy (wchar_t *__restrict const __clang_pass_object_size0 __s1,
++	      const wchar_t *__restrict __s2, size_t __n))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS0_LT2 (__wmemcpy_warn, __n, __s1,
++					 sizeof (wchar_t),
++					 "wmemcpy called with length bigger "
++					 "than size of destination buffer")
+ {
+-  if (__bos0 (__s1) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n))
+-	return __wmemcpy_chk (__s1, __s2, __n,
+-			      __bos0 (__s1) / sizeof (wchar_t));
+-
+-      if (__n > __bos0 (__s1) / sizeof (wchar_t))
+-	return __wmemcpy_chk_warn (__s1, __s2, __n,
+-				   __bos0 (__s1) / sizeof (wchar_t));
+-    }
+-  return __wmemcpy_alias (__s1, __s2, __n);
++  if (__FORTIFY_CALL_CHK && __bos0 (__s1) != (size_t)-1)
++    return __wmemcpy_chk(__s1, __s2, __n, __bos0(__s1) / sizeof (wchar_t));
++  return __wmemcpy_alias(__s1, __s2, __n);
+ }
+-
++__FORTIFY_FUNCTION_END
+ 
+ extern wchar_t *__wmemmove_chk (wchar_t *__s1, const wchar_t *__s2,
+ 				size_t __n, size_t __ns1) __THROW;
+ extern wchar_t *__REDIRECT_NTH (__wmemmove_alias, (wchar_t *__s1,
+ 						   const wchar_t *__s2,
+ 						   size_t __n), wmemmove);
+-extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn,
+-				(wchar_t *__s1, const wchar_t *__s2,
+-				 size_t __n, size_t __ns1), __wmemmove_chk)
+-     __warnattr ("wmemmove called with length bigger than size of destination "
+-		 "buffer");
+-
+-__fortify_function wchar_t *
+-__NTH (wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n))
++
++__fortify_potential_overload wchar_t *
++__NTH (wmemmove (wchar_t *const __clang_pass_object_size0 __s1,
++		 const wchar_t *__s2, size_t __n))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS0_LT2 (__wmemmove_warn, __n, __s1,
++					 sizeof (wchar_t),
++					 "wmemmove called with length bigger "
++					 "than size of destination buffer")
+ {
+-  if (__bos0 (__s1) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n))
+-	return __wmemmove_chk (__s1, __s2, __n,
+-			       __bos0 (__s1) / sizeof (wchar_t));
+-
+-      if (__n > __bos0 (__s1) / sizeof (wchar_t))
+-	return __wmemmove_chk_warn (__s1, __s2, __n,
+-				    __bos0 (__s1) / sizeof (wchar_t));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos0 (__s1) != (size_t) -1)
++    return __wmemmove_chk (__s1, __s2, __n, __bos0 (__s1) / sizeof (wchar_t));
+   return __wmemmove_alias (__s1, __s2, __n);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ 
+ #ifdef __USE_GNU
+@@ -89,29 +73,21 @@ extern wchar_t *__REDIRECT_NTH (__wmempcpy_alias,
+ 				(wchar_t *__restrict __s1,
+ 				 const wchar_t *__restrict __s2,
+ 				 size_t __n), wmempcpy);
+-extern wchar_t *__REDIRECT_NTH (__wmempcpy_chk_warn,
+-				(wchar_t *__restrict __s1,
+-				 const wchar_t *__restrict __s2, size_t __n,
+-				 size_t __ns1), __wmempcpy_chk)
+-     __warnattr ("wmempcpy called with length bigger than size of destination "
+-		 "buffer");
+-
+-__fortify_function wchar_t *
+-__NTH (wmempcpy (wchar_t *__restrict __s1, const wchar_t *__restrict __s2,
+-		 size_t __n))
++
++__fortify_potential_overload wchar_t *
++__NTH(wmempcpy(wchar_t *__restrict const __clang_pass_object_size0 __s1,
++               const wchar_t *__restrict __s2, size_t __n))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS0_LT2 (__wmempcpy_warn, __n, __s1,
++					 sizeof (wchar_t),
++					 "wmempcpy called with length bigger "
++					 "than size of destination buffer")
+ {
+-  if (__bos0 (__s1) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n))
+-	return __wmempcpy_chk (__s1, __s2, __n,
+-			       __bos0 (__s1) / sizeof (wchar_t));
+-
+-      if (__n > __bos0 (__s1) / sizeof (wchar_t))
+-	return __wmempcpy_chk_warn (__s1, __s2, __n,
+-				    __bos0 (__s1) / sizeof (wchar_t));
+-    }
+-  return __wmempcpy_alias (__s1, __s2, __n);
++  if (__FORTIFY_CALL_CHK && __bos0 (__s1) != (size_t)-1)
++    return __wmempcpy_chk(__s1, __s2, __n, __bos0(__s1) / sizeof (wchar_t));
++  return __wmempcpy_alias(__s1, __s2, __n);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+ 
+ 
+@@ -119,26 +95,21 @@ extern wchar_t *__wmemset_chk (wchar_t *__s, wchar_t __c, size_t __n,
+ 			       size_t __ns) __THROW;
+ extern wchar_t *__REDIRECT_NTH (__wmemset_alias, (wchar_t *__s, wchar_t __c,
+ 						  size_t __n), wmemset);
+-extern wchar_t *__REDIRECT_NTH (__wmemset_chk_warn,
+-				(wchar_t *__s, wchar_t __c, size_t __n,
+-				 size_t __ns), __wmemset_chk)
+-     __warnattr ("wmemset called with length bigger than size of destination "
+-		 "buffer");
+-
+-__fortify_function wchar_t *
+-__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n))
++
++__fortify_potential_overload wchar_t *
++__NTH (wmemset (wchar_t *const __clang_pass_object_size0 __s, wchar_t __c,
++		size_t __n))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS0_LT2 (__wmemset_warn, __n, __s,
++					 sizeof (wchar_t),
++					 "wmemset called with length bigger "
++					 "than size of destination buffer")
+ {
+-  if (__bos0 (__s) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n))
+-	return __wmemset_chk (__s, __c, __n, __bos0 (__s) / sizeof (wchar_t));
+-
+-      if (__n > __bos0 (__s) / sizeof (wchar_t))
+-	return __wmemset_chk_warn (__s, __c, __n,
+-				   __bos0 (__s) / sizeof (wchar_t));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos0 (__s) != (size_t) -1)
++    return __wmemset_chk (__s, __c, __n, __bos0 (__s) / sizeof (wchar_t));
+   return __wmemset_alias (__s, __c, __n);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ 
+ extern wchar_t *__wcscpy_chk (wchar_t *__restrict __dest,
+@@ -148,8 +119,9 @@ extern wchar_t *__REDIRECT_NTH (__wcscpy_alias,
+ 				(wchar_t *__restrict __dest,
+ 				 const wchar_t *__restrict __src), wcscpy);
+ 
+-__fortify_function wchar_t *
+-__NTH (wcscpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
++__fortify_potential_overload wchar_t *
++__NTH (wcscpy (wchar_t *__restrict const __clang_pass_object_size __dest,
++	       const wchar_t *__restrict __src))
+ {
+   if (__bos (__dest) != (size_t) -1)
+     return __wcscpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t));
+@@ -164,8 +136,9 @@ extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias,
+ 				(wchar_t *__restrict __dest,
+ 				 const wchar_t *__restrict __src), wcpcpy);
+ 
+-__fortify_function wchar_t *
+-__NTH (wcpcpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
++__fortify_potential_overload wchar_t *
++__NTH (wcpcpy (wchar_t *__restrict const __clang_pass_object_size __dest,
++	       const wchar_t *__restrict __src))
+ {
+   if (__bos (__dest) != (size_t) -1)
+     return __wcpcpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t));
+@@ -180,28 +153,22 @@ extern wchar_t *__REDIRECT_NTH (__wcsncpy_alias,
+ 				(wchar_t *__restrict __dest,
+ 				 const wchar_t *__restrict __src,
+ 				 size_t __n), wcsncpy);
+-extern wchar_t *__REDIRECT_NTH (__wcsncpy_chk_warn,
+-				(wchar_t *__restrict __dest,
+-				 const wchar_t *__restrict __src,
+-				 size_t __n, size_t __destlen), __wcsncpy_chk)
+-     __warnattr ("wcsncpy called with length bigger than size of destination "
+-		 "buffer");
+ 
+-__fortify_function wchar_t *
+-__NTH (wcsncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
+-		size_t __n))
++__fortify_potential_overload wchar_t *
++__NTH (wcsncpy (wchar_t *__restrict const __clang_pass_object_size __dest,
++		const wchar_t *__restrict __src, size_t __n))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__wcsncpy_warn, __n, __dest,
++					sizeof (wchar_t),
++					"wcsncpy called with length bigger "
++					"than size of destination buffer")
+ {
+-  if (__bos (__dest) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n))
+-	return __wcsncpy_chk (__dest, __src, __n,
+-			      __bos (__dest) / sizeof (wchar_t));
+-      if (__n > __bos (__dest) / sizeof (wchar_t))
+-	return __wcsncpy_chk_warn (__dest, __src, __n,
+-				   __bos (__dest) / sizeof (wchar_t));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__dest) != (size_t) -1)
++    return __wcsncpy_chk (__dest, __src, __n,
++			  __bos (__dest) / sizeof (wchar_t));
+   return __wcsncpy_alias (__dest, __src, __n);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ 
+ extern wchar_t *__wcpncpy_chk (wchar_t *__restrict __dest,
+@@ -211,29 +178,22 @@ extern wchar_t *__REDIRECT_NTH (__wcpncpy_alias,
+ 				(wchar_t *__restrict __dest,
+ 				 const wchar_t *__restrict __src,
+ 				 size_t __n), wcpncpy);
+-extern wchar_t *__REDIRECT_NTH (__wcpncpy_chk_warn,
+-				(wchar_t *__restrict __dest,
+-				 const wchar_t *__restrict __src,
+-				 size_t __n, size_t __destlen), __wcpncpy_chk)
+-     __warnattr ("wcpncpy called with length bigger than size of destination "
+-		 "buffer");
+ 
+-__fortify_function wchar_t *
+-__NTH (wcpncpy (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
+-		size_t __n))
++__fortify_potential_overload wchar_t *
++__NTH (wcpncpy (wchar_t *__restrict const __clang_pass_object_size __dest,
++		const wchar_t *__restrict __src, size_t __n))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__wcpncpy_warn, __n, __dest,
++					sizeof (wchar_t),
++					"wcpncpy called with length bigger "
++					"than size of destination buffer")
+ {
+-  if (__bos (__dest) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n))
+-	return __wcpncpy_chk (__dest, __src, __n,
+-			      __bos (__dest) / sizeof (wchar_t));
+-      if (__n > __bos (__dest) / sizeof (wchar_t))
+-	return __wcpncpy_chk_warn (__dest, __src, __n,
+-				   __bos (__dest) / sizeof (wchar_t));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__dest) != (size_t) -1)
++    return __wcpncpy_chk (__dest, __src, __n,
++			  __bos (__dest) / sizeof (wchar_t));
+   return __wcpncpy_alias (__dest, __src, __n);
+ }
+-
++__FORTIFY_FUNCTION_END
+ 
+ extern wchar_t *__wcscat_chk (wchar_t *__restrict __dest,
+ 			      const wchar_t *__restrict __src,
+@@ -242,8 +202,9 @@ extern wchar_t *__REDIRECT_NTH (__wcscat_alias,
+ 				(wchar_t *__restrict __dest,
+ 				 const wchar_t *__restrict __src), wcscat);
+ 
+-__fortify_function wchar_t *
+-__NTH (wcscat (wchar_t *__restrict __dest, const wchar_t *__restrict __src))
++__fortify_potential_overload wchar_t *
++__NTH (wcscat (wchar_t *__restrict const __clang_pass_object_size __dest,
++	       const wchar_t *__restrict __src))
+ {
+   if (__bos (__dest) != (size_t) -1)
+     return __wcscat_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t));
+@@ -259,9 +220,9 @@ extern wchar_t *__REDIRECT_NTH (__wcsncat_alias,
+ 				 const wchar_t *__restrict __src,
+ 				 size_t __n), wcsncat);
+ 
+-__fortify_function wchar_t *
+-__NTH (wcsncat (wchar_t *__restrict __dest, const wchar_t *__restrict __src,
+-		size_t __n))
++__fortify_potential_overload wchar_t *
++__NTH (wcsncat (wchar_t *__restrict const __clang_pass_object_size __dest,
++		const wchar_t *__restrict __src, size_t __n))
+ {
+   if (__bos (__dest) != (size_t) -1)
+     return __wcsncat_chk (__dest, __src, __n,
+@@ -280,16 +241,34 @@ extern int __REDIRECT_NTH_LDBL (__swprintf_alias,
+ 				 const wchar_t *__restrict __fmt, ...),
+ 				swprintf);
+ 
+-#ifdef __va_arg_pack
+-__fortify_function int
+-__NTH (swprintf (wchar_t *__restrict __s, size_t __n,
+-		 const wchar_t *__restrict __fmt, ...))
++extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
++			    int __flag, size_t __s_len,
++			    const wchar_t *__restrict __format,
++			    __gnuc_va_list __arg)
++     __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 0))) */;
++
++extern int __REDIRECT_NTH_LDBL (__vswprintf_alias,
++				(wchar_t *__restrict __s, size_t __n,
++				 const wchar_t *__restrict __fmt,
++				 __gnuc_va_list __ap), vswprintf);
++
++#ifdef __FORTIFY_ARG_PACK_OK
++__fortify_potential_overload int
++__NTH (swprintf (wchar_t *__restrict const __clang_pass_object_size __s,
++		 size_t __n, const wchar_t *__restrict __fmt, ...))
+ {
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __result;
+   if (__bos (__s) != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
+-    return __swprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
+-			   __bos (__s) / sizeof (wchar_t),
+-			   __fmt, __va_arg_pack ());
+-  return __swprintf_alias (__s, __n, __fmt, __va_arg_pack ());
++    __result = __FORTIFY_CALL_VA_CHK(swprintf, __s, __n,
++				     __USE_FORTIFY_LEVEL - 1,
++				     __bos (__s) / sizeof (wchar_t), __fmt,
++				     __FORTIFY_ARG_PACK);
++  else
++    __result = __FORTIFY_CALL_VA_ALIAS(swprintf, __s, __n, __fmt,
++				       __FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __result;
+ }
+ #elif !defined __cplusplus
+ /* XXX We might want to have support in gcc for swprintf.  */
+@@ -300,20 +279,10 @@ __NTH (swprintf (wchar_t *__restrict __s, size_t __n,
+    : swprintf (s, n, __VA_ARGS__))
+ #endif
+ 
+-extern int __vswprintf_chk (wchar_t *__restrict __s, size_t __n,
+-			    int __flag, size_t __s_len,
+-			    const wchar_t *__restrict __format,
+-			    __gnuc_va_list __arg)
+-     __THROW /* __attribute__ ((__format__ (__wprintf__, 5, 0))) */;
+-
+-extern int __REDIRECT_NTH_LDBL (__vswprintf_alias,
+-				(wchar_t *__restrict __s, size_t __n,
+-				 const wchar_t *__restrict __fmt,
+-				 __gnuc_va_list __ap), vswprintf);
+-
+-__fortify_function int
+-__NTH (vswprintf (wchar_t *__restrict __s, size_t __n,
+-		  const wchar_t *__restrict __fmt, __gnuc_va_list __ap))
++__fortify_potential_overload int
++__NTH (vswprintf (wchar_t *__restrict const __clang_pass_object_size __s,
++		  size_t __n, const wchar_t *__restrict __fmt,
++		  __gnuc_va_list __ap))
+ {
+   if (__bos (__s) != (size_t) -1 || __USE_FORTIFY_LEVEL > 1)
+     return __vswprintf_chk (__s, __n,  __USE_FORTIFY_LEVEL - 1,
+@@ -334,18 +303,27 @@ extern int __vfwprintf_chk (__FILE *__restrict __stream, int __flag,
+ extern int __vwprintf_chk (int __flag, const wchar_t *__restrict __format,
+ 			   __gnuc_va_list __ap);
+ 
+-# ifdef __va_arg_pack
+-__fortify_function int
+-wprintf (const wchar_t *__restrict __fmt, ...)
++
++#ifdef __FORTIFY_ARG_PACK_OK
++__fortify_potential_overload int
++wprintf (const wchar_t *__restrict const __clang_pass_object_size __fmt, ...)
+ {
+-  return __wprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __va_arg_pack ());
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __r = __FORTIFY_CALL_VA_CHK (wprintf, __USE_FORTIFY_LEVEL - 1, __fmt,
++				   __FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __r;
+ }
+ 
+-__fortify_function int
+-fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...)
++__fortify_potential_overload int
++fwprintf (__FILE *__restrict const __clang_pass_object_size __stream,
++	  const wchar_t *__restrict __fmt, ...)
+ {
+-  return __fwprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt,
+-			 __va_arg_pack ());
++  __FORTIFY_INIT_ARG_PACK(__fmt);
++  int __r = __FORTIFY_CALL_VA_CHK (fwprintf, __stream, __USE_FORTIFY_LEVEL - 1,
++				   __fmt, __FORTIFY_ARG_PACK);
++  __FORTIFY_FREE_ARG_PACK();
++  return __r;
+ }
+ # elif !defined __cplusplus
+ #  define wprintf(...) \
+@@ -354,14 +332,15 @@ fwprintf (__FILE *__restrict __stream, const wchar_t *__restrict __fmt, ...)
+   __fwprintf_chk (stream, __USE_FORTIFY_LEVEL - 1, __VA_ARGS__)
+ # endif
+ 
+-__fortify_function int
+-vwprintf (const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
++__fortify_potential_overload int
++vwprintf (const wchar_t *__restrict const __clang_pass_object_size __fmt,
++	  __gnuc_va_list __ap)
+ {
+   return __vwprintf_chk (__USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+ }
+ 
+-__fortify_function int
+-vfwprintf (__FILE *__restrict __stream,
++__fortify_potential_overload int
++vfwprintf (__FILE *__restrict const __clang_pass_object_size __stream,
+ 	   const wchar_t *__restrict __fmt, __gnuc_va_list __ap)
+ {
+   return __vfwprintf_chk (__stream, __USE_FORTIFY_LEVEL - 1, __fmt, __ap);
+@@ -374,27 +353,21 @@ extern wchar_t *__fgetws_chk (wchar_t *__restrict __s, size_t __size, int __n,
+ extern wchar_t *__REDIRECT (__fgetws_alias,
+ 			    (wchar_t *__restrict __s, int __n,
+ 			     __FILE *__restrict __stream), fgetws) __wur;
+-extern wchar_t *__REDIRECT (__fgetws_chk_warn,
+-			    (wchar_t *__restrict __s, size_t __size, int __n,
+-			     __FILE *__restrict __stream), __fgetws_chk)
+-     __wur __warnattr ("fgetws called with bigger size than length "
+-		       "of destination buffer");
+-
+-__fortify_function __wur wchar_t *
+-fgetws (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
+-{
+-  if (__bos (__s) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n) || __n <= 0)
+-	return __fgetws_chk (__s, __bos (__s) / sizeof (wchar_t),
+-			     __n, __stream);
+ 
+-      if ((size_t) __n > __bos (__s) / sizeof (wchar_t))
+-	return __fgetws_chk_warn (__s, __bos (__s) / sizeof (wchar_t),
+-				  __n, __stream);
+-    }
++__fortify_potential_overload __wur wchar_t *
++fgetws (wchar_t *__restrict const __clang_pass_object_size __s, int __n,
++	__FILE *__restrict __stream)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__fgetws_warn, __n, __s,
++					sizeof (wchar_t),
++					"fgetws called with length bigger "
++					"than size of destination buffer")
++{
++  if (__FORTIFY_CALL_CHK && __bos (__s) != (size_t) -1)
++    return __fgetws_chk (__s, __bos (__s) / sizeof (wchar_t), __n, __stream);
+   return __fgetws_alias (__s, __n, __stream);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ #ifdef __USE_GNU
+ extern wchar_t *__fgetws_unlocked_chk (wchar_t *__restrict __s, size_t __size,
+@@ -404,28 +377,23 @@ extern wchar_t *__REDIRECT (__fgetws_unlocked_alias,
+ 			    (wchar_t *__restrict __s, int __n,
+ 			     __FILE *__restrict __stream), fgetws_unlocked)
+   __wur;
+-extern wchar_t *__REDIRECT (__fgetws_unlocked_chk_warn,
+-			    (wchar_t *__restrict __s, size_t __size, int __n,
+-			     __FILE *__restrict __stream),
+-			    __fgetws_unlocked_chk)
+-     __wur __warnattr ("fgetws_unlocked called with bigger size than length "
+-		       "of destination buffer");
+-
+-__fortify_function __wur wchar_t *
+-fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
++
++__fortify_potential_overload __wur wchar_t *
++fgetws_unlocked (wchar_t *__restrict const __clang_pass_object_size __s,
++		 int __n, __FILE *__restrict __stream)
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_IF (__fgetws_unlocked_warn,
++			   __n > 0
++			    && __bos_static_lt2 (__n, __s, sizeof (wchar_t)),
++			   "fgetws_unlocked called with bigger size than "
++			   "length of destination buffer")
+ {
+   if (__bos (__s) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__n) || __n <= 0)
+-	return __fgetws_unlocked_chk (__s, __bos (__s) / sizeof (wchar_t),
+-				      __n, __stream);
+-
+-      if ((size_t) __n > __bos (__s) / sizeof (wchar_t))
+-	return __fgetws_unlocked_chk_warn (__s, __bos (__s) / sizeof (wchar_t),
+-					   __n, __stream);
+-    }
++    return __fgetws_unlocked_chk (__s, __bos (__s) / sizeof (wchar_t),
++				  __n, __stream);
+   return __fgetws_unlocked_alias (__s, __n, __stream);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+ 
+ 
+@@ -436,9 +404,9 @@ extern size_t __REDIRECT_NTH (__wcrtomb_alias,
+ 			      (char *__restrict __s, wchar_t __wchar,
+ 			       mbstate_t *__restrict __ps), wcrtomb) __wur;
+ 
+-__fortify_function __wur size_t
+-__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar,
+-		mbstate_t *__restrict __ps))
++__fortify_potential_overload __wur size_t
++__NTH (wcrtomb (char *__restrict const __clang_pass_object_size __s,
++		wchar_t __wchar, mbstate_t *__restrict __ps))
+ {
+   /* We would have to include <limits.h> to get a definition of MB_LEN_MAX.
+      But this would only disturb the namespace.  So we define our own
+@@ -462,30 +430,23 @@ extern size_t __REDIRECT_NTH (__mbsrtowcs_alias,
+ 			       const char **__restrict __src,
+ 			       size_t __len, mbstate_t *__restrict __ps),
+ 			      mbsrtowcs);
+-extern size_t __REDIRECT_NTH (__mbsrtowcs_chk_warn,
+-			      (wchar_t *__restrict __dst,
+-			       const char **__restrict __src,
+-			       size_t __len, mbstate_t *__restrict __ps,
+-			       size_t __dstlen), __mbsrtowcs_chk)
+-     __warnattr ("mbsrtowcs called with dst buffer smaller than len "
+-		 "* sizeof (wchar_t)");
+ 
+-__fortify_function size_t
+-__NTH (mbsrtowcs (wchar_t *__restrict __dst, const char **__restrict __src,
+-		  size_t __len, mbstate_t *__restrict __ps))
++__fortify_potential_overload size_t
++__NTH (mbsrtowcs (wchar_t *__restrict const __clang_pass_object_size __dst,
++		  const char **__restrict __src, size_t __len,
++		  mbstate_t *__restrict __ps))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT2 (__mbsrtowcs_warn, __len, __dst,
++					sizeof (wchar_t),
++					"mbsrtowcs called with dst buffer "
++					"smaller than len * sizeof (wchar_t)")
+ {
+-  if (__bos (__dst) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__len))
+-	return __mbsrtowcs_chk (__dst, __src, __len, __ps,
+-				__bos (__dst) / sizeof (wchar_t));
+-
+-      if (__len > __bos (__dst) / sizeof (wchar_t))
+-	return __mbsrtowcs_chk_warn (__dst, __src, __len, __ps,
+-				     __bos (__dst) / sizeof (wchar_t));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
++    return __mbsrtowcs_chk (__dst, __src, __len, __ps,
++			    __bos (__dst) / sizeof (wchar_t));
+   return __mbsrtowcs_alias (__dst, __src, __len, __ps);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ 
+ extern size_t __wcsrtombs_chk (char *__restrict __dst,
+@@ -497,27 +458,21 @@ extern size_t __REDIRECT_NTH (__wcsrtombs_alias,
+ 			       const wchar_t **__restrict __src,
+ 			       size_t __len, mbstate_t *__restrict __ps),
+ 			      wcsrtombs);
+-extern size_t __REDIRECT_NTH (__wcsrtombs_chk_warn,
+-			      (char *__restrict __dst,
+-			       const wchar_t **__restrict __src,
+-			       size_t __len, mbstate_t *__restrict __ps,
+-			       size_t __dstlen), __wcsrtombs_chk)
+-    __warnattr ("wcsrtombs called with dst buffer smaller than len");
+ 
+-__fortify_function size_t
+-__NTH (wcsrtombs (char *__restrict __dst, const wchar_t **__restrict __src,
+-		  size_t __len, mbstate_t *__restrict __ps))
++__fortify_potential_overload size_t
++__NTH (wcsrtombs (char *__restrict const __clang_pass_object_size __dst,
++		  const wchar_t **__restrict __src, size_t __len,
++		  mbstate_t *__restrict __ps))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__wcsrtombs_warn, __len, __dst,
++				       "wcsrtombs called with dst buffer "
++				       "smaller than len")
+ {
+-  if (__bos (__dst) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__len))
+-	return __wcsrtombs_chk (__dst, __src, __len, __ps, __bos (__dst));
+-
+-      if (__len > __bos (__dst))
+-	return __wcsrtombs_chk_warn (__dst, __src, __len, __ps, __bos (__dst));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
++    return __wcsrtombs_chk (__dst, __src, __len, __ps, __bos (__dst));
+   return __wcsrtombs_alias (__dst, __src, __len, __ps);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ 
+ #ifdef __USE_GNU
+@@ -530,30 +485,23 @@ extern size_t __REDIRECT_NTH (__mbsnrtowcs_alias,
+ 			       const char **__restrict __src, size_t __nmc,
+ 			       size_t __len, mbstate_t *__restrict __ps),
+ 			      mbsnrtowcs);
+-extern size_t __REDIRECT_NTH (__mbsnrtowcs_chk_warn,
+-			      (wchar_t *__restrict __dst,
+-			       const char **__restrict __src, size_t __nmc,
+-			       size_t __len, mbstate_t *__restrict __ps,
+-			       size_t __dstlen), __mbsnrtowcs_chk)
+-     __warnattr ("mbsnrtowcs called with dst buffer smaller than len "
+-		 "* sizeof (wchar_t)");
+ 
+-__fortify_function size_t
+-__NTH (mbsnrtowcs (wchar_t *__restrict __dst, const char **__restrict __src,
+-		   size_t __nmc, size_t __len, mbstate_t *__restrict __ps))
++__fortify_potential_overload size_t
++__NTH (mbsnrtowcs (wchar_t *__restrict const __clang_pass_object_size __dst,
++		   const char **__restrict __src, size_t __nmc, size_t __len,
++		   mbstate_t *__restrict __ps))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__mbsnrtowcs_warn,
++				       sizeof (wchar_t) * __len, __dst,
++				       "mbsnrtowcs called with dst buffer "
++				       "smaller than len * sizeof (wchar_t)")
+ {
+-  if (__bos (__dst) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__len))
+-	return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps,
+-				 __bos (__dst) / sizeof (wchar_t));
+-
+-      if (__len > __bos (__dst) / sizeof (wchar_t))
+-	return __mbsnrtowcs_chk_warn (__dst, __src, __nmc, __len, __ps,
+-				      __bos (__dst) / sizeof (wchar_t));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
++    return __mbsnrtowcs_chk (__dst, __src, __nmc, __len, __ps,
++			     __bos (__dst) / sizeof (wchar_t));
+   return __mbsnrtowcs_alias (__dst, __src, __nmc, __len, __ps);
+ }
++__FORTIFY_FUNCTION_END
+ 
+ 
+ extern size_t __wcsnrtombs_chk (char *__restrict __dst,
+@@ -566,28 +514,19 @@ extern size_t __REDIRECT_NTH (__wcsnrtombs_alias,
+ 			       const wchar_t **__restrict __src,
+ 			       size_t __nwc, size_t __len,
+ 			       mbstate_t *__restrict __ps), wcsnrtombs);
+-extern size_t __REDIRECT_NTH (__wcsnrtombs_chk_warn,
+-			      (char *__restrict __dst,
+-			       const wchar_t **__restrict __src,
+-			       size_t __nwc, size_t __len,
+-			       mbstate_t *__restrict __ps,
+-			       size_t __dstlen), __wcsnrtombs_chk)
+-     __warnattr ("wcsnrtombs called with dst buffer smaller than len");
+ 
+-__fortify_function size_t
+-__NTH (wcsnrtombs (char *__restrict __dst, const wchar_t **__restrict __src,
+-		   size_t __nwc, size_t __len, mbstate_t *__restrict __ps))
++__fortify_potential_overload size_t
++__NTH (wcsnrtombs (char *__restrict const __clang_pass_object_size __dst,
++		   const wchar_t **__restrict __src, size_t __nwc, size_t __len,
++		   mbstate_t *__restrict __ps))
++__FORTIFY_PRECONDITIONS
++     __FORTIFY_WARNING_ONLY_IF_BOS_LT (__wcsnrtombs_warn, __len, __dst,
++				       "wcsnrtombs called with dst buffer "
++				       "smaller than len")
+ {
+-  if (__bos (__dst) != (size_t) -1)
+-    {
+-      if (!__builtin_constant_p (__len))
+-	return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps,
+-				 __bos (__dst));
+-
+-      if (__len > __bos (__dst))
+-	return __wcsnrtombs_chk_warn (__dst, __src, __nwc, __len, __ps,
+-				      __bos (__dst));
+-    }
++  if (__FORTIFY_CALL_CHK && __bos (__dst) != (size_t) -1)
++    return __wcsnrtombs_chk (__dst, __src, __nwc, __len, __ps, __bos (__dst));
+   return __wcsnrtombs_alias (__dst, __src, __nwc, __len, __ps);
+ }
++__FORTIFY_FUNCTION_END
+ #endif
+-- 
+2.30.2
+
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0008-ld.so-add-an-argv0-option-BZ-16124.patch b/sys-libs/glibc/files/local/glibc-2.32/0008-ld.so-add-an-argv0-option-BZ-16124.patch
new file mode 100644
index 0000000..6240175
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0008-ld.so-add-an-argv0-option-BZ-16124.patch
@@ -0,0 +1,180 @@
+From d4e66780d79ab8f45ef2bb4dd6efdd28b0d00b2e Mon Sep 17 00:00:00 2001
+From: Vincent Mihalkovic <vmihalko@redhat.com>
+Date: Tue, 29 Sep 2020 12:34:39 +0200
+Subject: [PATCH 8/8] ld.so: add an --argv0 option [BZ #16124]
+
+---
+ elf/Makefile          | 12 ++++++++++--
+ elf/argv0test.c       | 31 +++++++++++++++++++++++++++++++
+ elf/rtld.c            | 17 ++++++++++++++++-
+ elf/tst-rtld-argv0.sh | 37 +++++++++++++++++++++++++++++++++++++
+ 4 files changed, 94 insertions(+), 3 deletions(-)
+ create mode 100644 elf/argv0test.c
+ create mode 100755 elf/tst-rtld-argv0.sh
+
+diff --git a/elf/Makefile b/elf/Makefile
+index 355e70037b..4b728a7a7b 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -210,7 +210,8 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \
+ 	 tst-filterobj tst-filterobj-dlopen tst-auxobj tst-auxobj-dlopen \
+ 	 tst-audit14 tst-audit15 tst-audit16 \
+ 	 tst-single_threaded tst-single_threaded-pthread \
+-	 tst-tls-ie tst-tls-ie-dlmopen
++	 tst-tls-ie tst-tls-ie-dlmopen \
++	 argv0test
+ #	 reldep9
+ tests-internal += loadtest unload unload2 circleload1 \
+ 	 neededtest neededtest2 neededtest3 neededtest4 \
+@@ -414,7 +415,7 @@ endif
+ ifeq (yes,$(build-shared))
+ ifeq ($(run-built-tests),yes)
+ tests-special += $(objpfx)tst-pathopt.out $(objpfx)tst-rtld-load-self.out \
+-		 $(objpfx)tst-rtld-preload.out
++		 $(objpfx)tst-rtld-preload.out $(objpfx)argv0test.out
+ endif
+ tests-special += $(objpfx)check-textrel.out $(objpfx)check-execstack.out \
+ 		 $(objpfx)check-wx-segment.out \
+@@ -1798,3 +1799,10 @@ $(objpfx)tst-tls-ie-dlmopen.out: \
+   $(objpfx)tst-tls-ie-mod6.so
+ 
+ $(objpfx)tst-tls-surplus: $(libdl)
++
++$(objpfx)argv0test.out: tst-rtld-argv0.sh $(objpfx)ld.so \
++			$(objpfx)argv0test
++	$(SHELL) $< $(objpfx)ld.so $(objpfx)argv0test \
++            '$(test-wrapper-env)' '$(run_program_env)' \
++            '$(rpath-link)' 'test-argv0' > $@; \
++    $(evaluate-test)
+diff --git a/elf/argv0test.c b/elf/argv0test.c
+new file mode 100644
+index 0000000000..c22ba5ea70
+--- /dev/null
++++ b/elf/argv0test.c
+@@ -0,0 +1,31 @@
++/* Test for --argv0 option ld.so.
++
++   Copyright (C) 2020 Free Software Foundation, Inc.
++   This file is part of the GNU C Library.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <https://www.gnu.org/licenses/>.  */
++
++#include <string.h>
++#include <support/check.h>
++
++static int
++do_test (int argc, char **argv)
++{
++  TEST_COMPARE_STRING (argv[0], "test-argv0");
++  return 0;
++}
++
++#define TEST_FUNCTION_ARGV do_test
++#include <support/test-driver.c>
+diff --git a/elf/rtld.c b/elf/rtld.c
+index a829895b48..4b2e5bf15f 100644
+--- a/elf/rtld.c
++++ b/elf/rtld.c
+@@ -1202,6 +1202,8 @@ dl_main (const ElfW(Phdr) *phdr,
+ 	 installing it.  */
+       rtld_is_main = true;
+ 
++      char *argv0 = NULL;
++
+       /* Note the place where the dynamic linker actually came from.  */
+       GL(dl_rtld_map).l_name = rtld_progname;
+ 
+@@ -1259,6 +1261,14 @@ dl_main (const ElfW(Phdr) *phdr,
+ 	else if (! strcmp (_dl_argv[1], "--preload") && _dl_argc > 2)
+ 	  {
+ 	    preloadarg = _dl_argv[2];
++	    _dl_skip_args += 2;
++	    _dl_argc -= 2;
++	    _dl_argv += 2;
++	  }
++	else if (! strcmp (_dl_argv[1], "--argv0") && _dl_argc > 2)
++	  {
++	    argv0 = _dl_argv[2];
++
+ 	    _dl_skip_args += 2;
+ 	    _dl_argc -= 2;
+ 	    _dl_argv += 2;
+@@ -1292,7 +1302,8 @@ of this helper program; chances are you did not intend to run this program.\n\
+   --inhibit-rpath LIST  ignore RUNPATH and RPATH information in object names\n\
+ 			in LIST\n\
+   --audit LIST          use objects named in LIST as auditors\n\
+-  --preload LIST        preload objects named in LIST\n");
++  --preload LIST        preload objects named in LIST\n\
++  --argv0 STRING        set argv[0] to STRING before running\n");
+ 
+       ++_dl_skip_args;
+       --_dl_argc;
+@@ -1384,6 +1395,10 @@ of this helper program; chances are you did not intend to run this program.\n\
+ 	    break;
+ 	  }
+ #endif
++
++      /* Set the argv[0] string now that we've processed the executable.  */
++      if (argv0 != NULL)
++        _dl_argv[0] = argv0;
+     }
+   else
+     {
+diff --git a/elf/tst-rtld-argv0.sh b/elf/tst-rtld-argv0.sh
+new file mode 100755
+index 0000000000..14d97fb375
+--- /dev/null
++++ b/elf/tst-rtld-argv0.sh
+@@ -0,0 +1,37 @@
++#!/bin/sh
++# Test for --argv0 option ld.so.
++# Copyright (C) 2020 Free Software Foundation, Inc.
++# This file is part of the GNU C Library.
++#
++# The GNU C Library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License as published by the Free Software Foundation; either
++# version 2.1 of the License, or (at your option) any later version.
++#
++# The GNU C Library is distributed in the hope that it will be useful,
++# but WITHOUT ANY WARRANTY; without even the implied warranty of
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++# Lesser General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser General Public
++# License along with the GNU C Library; if not, see
++# <https://www.gnu.org/licenses/>.
++
++set -e
++
++rtld=$1
++test_program=$2
++test_wrapper_env=$3
++run_program_env=$4
++library_path=$5
++argv0=$6
++
++echo "# [${test_wrapper_env}] [${run_program_env}] [$rtld] [--library-path]" \
++     "[$library_path] [--argv0] [$argv0] [$test_program]"
++${test_wrapper_env} \
++${run_program_env} \
++$rtld --library-path "$library_path" \
++  --argv0 "$argv0" $test_program 2>&1 && rc=0 || rc=$?
++echo "# exit status $rc"
++
++exit $rc
+-- 
+2.30.2
+
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0009-Use-__pthread_attr_copy-in-mq_notify-bug-27896.patch b/sys-libs/glibc/files/local/glibc-2.32/0009-Use-__pthread_attr_copy-in-mq_notify-bug-27896.patch
new file mode 100644
index 0000000..cf04077
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0009-Use-__pthread_attr_copy-in-mq_notify-bug-27896.patch
@@ -0,0 +1,57 @@
+From 3ec8067a2fe5b4be94a045b92548dff7836b0cdd Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab@linux-m68k.org>
+Date: Thu, 27 May 2021 12:49:47 +0200
+Subject: [PATCH 09/10] Use __pthread_attr_copy in mq_notify (bug 27896)
+
+Make a deep copy of the pthread attribute object to remove a potential
+use-after-free issue.
+
+[Adrian: Backported CVE-2021-33574 to v2.33]
+Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
+---
+ sysdeps/unix/sysv/linux/mq_notify.c | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c
+index 61bbb03b64..f404acfdfe 100644
+--- a/sysdeps/unix/sysv/linux/mq_notify.c
++++ b/sysdeps/unix/sysv/linux/mq_notify.c
+@@ -133,8 +133,11 @@ helper_thread (void *arg)
+ 	    (void) __pthread_barrier_wait (&notify_barrier);
+ 	}
+       else if (data.raw[NOTIFY_COOKIE_LEN - 1] == NOTIFY_REMOVED)
+-	/* The only state we keep is the copy of the thread attributes.  */
+-	free (data.attr);
++	{
++	  /* The only state we keep is the copy of the thread attributes.  */
++	  pthread_attr_destroy (data.attr);
++	  free (data.attr);
++	}
+     }
+   return NULL;
+ }
+@@ -255,8 +258,7 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
+       if (data.attr == NULL)
+ 	return -1;
+ 
+-      memcpy (data.attr, notification->sigev_notify_attributes,
+-	      sizeof (pthread_attr_t));
++      __pthread_attr_copy (data.attr, notification->sigev_notify_attributes);
+     }
+ 
+   /* Construct the new request.  */
+@@ -270,7 +272,10 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
+ 
+   /* If it failed, free the allocated memory.  */
+   if (__glibc_unlikely (retval != 0))
+-    free (data.attr);
++    {
++      pthread_attr_destroy (data.attr);
++      free (data.attr);
++    }
+ 
+   return retval;
+ }
+-- 
+2.31.1
+
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0010-Fix-use-of-__pthread_attr_copy-in-mq_notify-bug-2789.patch b/sys-libs/glibc/files/local/glibc-2.32/0010-Fix-use-of-__pthread_attr_copy-in-mq_notify-bug-2789.patch
new file mode 100644
index 0000000..6f5c5c5
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0010-Fix-use-of-__pthread_attr_copy-in-mq_notify-bug-2789.patch
@@ -0,0 +1,54 @@
+From 4f1bd6ece7ebb7ae650ac13263321d31128bd4a6 Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Tue, 1 Jun 2021 17:51:41 +0200
+Subject: [PATCH 10/10] Fix use of __pthread_attr_copy in mq_notify (bug 27896)
+
+__pthread_attr_copy can fail and does not initialize the attribute
+structure in that case.
+
+If __pthread_attr_copy is never called and there is no allocated
+attribute, pthread_attr_destroy should not be called, otherwise
+there is a null pointer dereference in rt/tst-mqueue6.
+
+Fixes commit 42d359350510506b87101cf77202fefcbfc790cb
+("Use __pthread_attr_copy in mq_notify (bug 27896)").
+
+Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
+[Adrian: Backported CVE-2021-33574 to v2.33]
+Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
+---
+ sysdeps/unix/sysv/linux/mq_notify.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/sysdeps/unix/sysv/linux/mq_notify.c b/sysdeps/unix/sysv/linux/mq_notify.c
+index f404acfdfe..b5a903c3a2 100644
+--- a/sysdeps/unix/sysv/linux/mq_notify.c
++++ b/sysdeps/unix/sysv/linux/mq_notify.c
+@@ -258,7 +258,14 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
+       if (data.attr == NULL)
+ 	return -1;
+ 
+-      __pthread_attr_copy (data.attr, notification->sigev_notify_attributes);
++      int ret = __pthread_attr_copy (data.attr,
++				     notification->sigev_notify_attributes);
++      if (ret != 0)
++	{
++	  free (data.attr);
++	  __set_errno (ret);
++	  return -1;
++	}
+     }
+ 
+   /* Construct the new request.  */
+@@ -271,7 +278,7 @@ mq_notify (mqd_t mqdes, const struct sigevent *notification)
+   int retval = INLINE_SYSCALL (mq_notify, 2, mqdes, &se);
+ 
+   /* If it failed, free the allocated memory.  */
+-  if (__glibc_unlikely (retval != 0))
++  if (retval != 0 && data.attr != NULL)
+     {
+       pthread_attr_destroy (data.attr);
+       free (data.attr);
+-- 
+2.31.1
+
diff --git a/sys-libs/glibc/files/local/glibc-2.32/0011-linux-Require-dev-shm-as-the-shared-memory-file-syst.patch b/sys-libs/glibc/files/local/glibc-2.32/0011-linux-Require-dev-shm-as-the-shared-memory-file-syst.patch
new file mode 100644
index 0000000..2afb8d7
--- /dev/null
+++ b/sys-libs/glibc/files/local/glibc-2.32/0011-linux-Require-dev-shm-as-the-shared-memory-file-syst.patch
@@ -0,0 +1,710 @@
+From e50de21c6e58dd471a423dbcea360b897aeda51a Mon Sep 17 00:00:00 2001
+From: Florian Weimer <fweimer@redhat.com>
+Date: Wed, 3 Feb 2021 08:55:13 -0300
+Subject: [PATCH] linux: Require /dev/shm as the shared memory file system
+
+Previously, glibc would pick an arbitrary tmpfs file system from
+/proc/mounts if /dev/shm was not available.  This could lead to
+an unsuitable file system being picked for the backing storage for
+shm_open, sem_open, and related functions.
+
+This patch introduces a new function, __shm_get_name, which builds
+the file name under the appropriate (now hard-coded) directory.  It is
+called from the various shm_* and sem_* function.  Unlike the
+SHM_GET_NAME macro it replaces, the callers handle the return values
+and errno updates.  shm-directory.c is moved directly into the posix
+subdirectory because it can be implemented directly using POSIX
+functionality.  It resides in libc because it is needed by both
+librt and nptl/htl.
+
+In the sem_open implementation, tmpfname is initialized directly
+from a string constant.  This happens to remove one alloca call.
+
+Checked on x86_64-linux-gnu.
+
+[Adrian: backported to glibc v2.32]
+Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
+---
+ htl/Makefile                              |   2 -
+ htl/Versions                              |   1 -
+ {sysdeps/nptl => include}/shm-directory.h |  28 +++--
+ nptl/Makefile                             |   1 -
+ nptl/Versions                             |   1 -
+ nptl/nptlfreeres.c                        |   1 -
+ nptl/pthreadP.h                           |   1 -
+ nptl/sem_open.c                           |  34 ++---
+ nptl/sem_unlink.c                         |  10 +-
+ posix/Makefile                            |   3 +-
+ posix/Versions                            |   1 +
+ {sysdeps/posix => posix}/shm-directory.c  |  30 +++--
+ sysdeps/htl/shm-directory.h               |  30 -----
+ sysdeps/posix/Makefile                    |   6 -
+ sysdeps/posix/shm-directory.h             |  66 ----------
+ sysdeps/posix/shm_open.c                  |  10 +-
+ sysdeps/posix/shm_unlink.c                |  13 +-
+ sysdeps/unix/sysv/linux/shm-directory.c   | 147 ----------------------
+ 18 files changed, 84 insertions(+), 301 deletions(-)
+ rename {sysdeps/nptl => include}/shm-directory.h (59%)
+ rename {sysdeps/posix => posix}/shm-directory.c (60%)
+ delete mode 100644 sysdeps/htl/shm-directory.h
+ delete mode 100644 sysdeps/posix/shm-directory.h
+ delete mode 100644 sysdeps/unix/sysv/linux/shm-directory.c
+
+diff --git a/htl/Makefile b/htl/Makefile
+index 326a920fb3..86a1e731d1 100644
+--- a/htl/Makefile
++++ b/htl/Makefile
+@@ -132,8 +132,6 @@ libpthread-routines := pt-attr pt-attr-destroy pt-attr-getdetachstate	    \
+ 	sem-post sem-timedwait sem-trywait sem-unlink			    \
+ 	sem-wait							    \
+ 									    \
+-	shm-directory							    \
+-									    \
+ 	cancellation							    \
+ 	cthreads-compat							    \
+ 	herrno								    \
+diff --git a/htl/Versions b/htl/Versions
+index 832cc5d814..1d127266b3 100644
+--- a/htl/Versions
++++ b/htl/Versions
+@@ -168,7 +168,6 @@ libpthread {
+   }
+ 
+   GLIBC_PRIVATE {
+-    __shm_directory;
+     __pthread_threads;
+ 
+     __cthread_detach;
+diff --git a/sysdeps/nptl/shm-directory.h b/include/shm-directory.h
+similarity index 59%
+rename from sysdeps/nptl/shm-directory.h
+rename to include/shm-directory.h
+index 3021682fb3..59a5f89c06 100644
+--- a/sysdeps/nptl/shm-directory.h
++++ b/include/shm-directory.h
+@@ -18,14 +18,24 @@
+ 
+ #ifndef _SHM_DIRECTORY_H
+ 
+-#include <sysdeps/posix/shm-directory.h>
+-
+-/* For NPTL the __shm_directory function lives in libpthread.
+-   We don't want PLT calls from there.  But it's also used from
+-   librt, so it cannot just be declared hidden.  */
+-
+-#if IS_IN (libpthread)
+-hidden_proto (__shm_directory)
+-#endif
++#include <limits.h>
++#include <paths.h>
++#include <stdbool.h>
++
++/* The directory that contains shared POSIX objects.  */
++#define SHMDIR _PATH_DEV "shm/"
++
++struct shmdir_name
++{
++  /* The combined prefix/name.  The sizeof includes the terminating
++     NUL byte.  4 bytes are needed for the optional "sem." prefix.  */
++  char name[sizeof (SHMDIR) + 4 + NAME_MAX];
++};
++
++/* Sets RESULT->name to the constructed name and returns 0 on success,
++   or -1 on failure.  Includes the "sem." prefix in the name if
++   SEM_PREFIX is true.  */
++int __shm_get_name (struct shmdir_name *result, const char *name,
++		    bool sem_prefix);
+ 
+ #endif  /* shm-directory.h */
+diff --git a/nptl/Makefile b/nptl/Makefile
+index 89569c4f46..87fc6b6bc5 100644
+--- a/nptl/Makefile
++++ b/nptl/Makefile
+@@ -137,7 +137,6 @@ libpthread-routines = nptl-init nptlfreeres vars events version pt-interp \
+ 		      pthread_once \
+ 		      old_pthread_atfork \
+ 		      pthread_getcpuclockid \
+-		      shm-directory \
+ 		      sem_init sem_destroy \
+ 		      sem_open sem_close sem_unlink \
+ 		      sem_getvalue \
+diff --git a/nptl/Versions b/nptl/Versions
+index aed118e717..7d5644ada1 100644
+--- a/nptl/Versions
++++ b/nptl/Versions
+@@ -302,7 +302,6 @@ libpthread {
+     __pthread_clock_gettime; __pthread_clock_settime;
+     __pthread_unwind; __pthread_get_minstack;
+     __pthread_barrier_init; __pthread_barrier_wait;
+-    __shm_directory;
+     __libpthread_freeres;
+   }
+ }
+diff --git a/nptl/nptlfreeres.c b/nptl/nptlfreeres.c
+index 07aa34adfa..ef5b765af5 100644
+--- a/nptl/nptlfreeres.c
++++ b/nptl/nptlfreeres.c
+@@ -27,6 +27,5 @@ __libpthread_freeres (void)
+ {
+   call_function_static_weak (__default_pthread_attr_freeres);
+   call_function_static_weak (__nptl_stacks_freeres);
+-  call_function_static_weak (__shm_directory_freeres);
+   call_function_static_weak (__nptl_unwind_freeres);
+ }
+diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
+index 6f94d6be31..85dcaa7ec1 100644
+--- a/nptl/pthreadP.h
++++ b/nptl/pthreadP.h
+@@ -584,7 +584,6 @@ extern void __nptl_set_robust (struct pthread *self);
+ #endif
+ 
+ extern void __nptl_stacks_freeres (void) attribute_hidden;
+-extern void __shm_directory_freeres (void) attribute_hidden;
+ 
+ extern void __wait_lookup_done (void) attribute_hidden;
+ 
+diff --git a/nptl/sem_open.c b/nptl/sem_open.c
+index b022cbfd9a..bbc62f2e66 100644
+--- a/nptl/sem_open.c
++++ b/nptl/sem_open.c
+@@ -62,8 +62,9 @@ int __sem_mappings_lock attribute_hidden = LLL_LOCK_INITIALIZER;
+ 
+ /* Search for existing mapping and if possible add the one provided.  */
+ static sem_t *
+-check_add_mapping (const char *name, size_t namelen, int fd, sem_t *existing)
++check_add_mapping (const char *name, int fd, sem_t *existing)
+ {
++  size_t namelen = strlen (name);
+   sem_t *result = SEM_FAILED;
+ 
+   /* Get the information about the file.  */
+@@ -150,8 +151,12 @@ sem_open (const char *name, int oflag, ...)
+       return SEM_FAILED;
+     }
+ 
+-  /* Create the name of the final file in local variable SHM_NAME.  */
+-  SHM_GET_NAME (EINVAL, SEM_FAILED, SEM_SHM_PREFIX);
++  struct shmdir_name dirname;
++  if (__shm_get_name (&dirname, name, true) != 0)
++    {
++      __set_errno (EINVAL);
++      return SEM_FAILED;
++    }
+ 
+   /* Disable asynchronous cancellation.  */
+ #ifdef __libc_ptf_call
+@@ -164,7 +169,7 @@ sem_open (const char *name, int oflag, ...)
+   if ((oflag & O_CREAT) == 0 || (oflag & O_EXCL) == 0)
+     {
+     try_again:
+-      fd = __libc_open (shm_name,
++      fd = __libc_open (dirname.name,
+ 			(oflag & ~(O_CREAT|O_ACCMODE)) | O_NOFOLLOW | O_RDWR);
+ 
+       if (fd == -1)
+@@ -178,13 +183,12 @@ sem_open (const char *name, int oflag, ...)
+       else
+ 	/* Check whether we already have this semaphore mapped and
+ 	   create one if necessary.  */
+-	result = check_add_mapping (name, namelen, fd, SEM_FAILED);
++	result = check_add_mapping (name, fd, SEM_FAILED);
+     }
+   else
+     {
+       /* We have to open a temporary file first since it must have the
+ 	 correct form before we can start using it.  */
+-      char *tmpfname;
+       mode_t mode;
+       unsigned int value;
+       va_list ap;
+@@ -227,16 +231,11 @@ sem_open (const char *name, int oflag, ...)
+       memset ((char *) &sem.initsem + sizeof (struct new_sem), '\0',
+ 	      sizeof (sem_t) - sizeof (struct new_sem));
+ 
+-      tmpfname = __alloca (shm_dirlen + sizeof SEM_SHM_PREFIX + 6);
+-      char *xxxxxx = __mempcpy (tmpfname, shm_dir, shm_dirlen);
+-
++      char tmpfname[] = SHMDIR "sem.XXXXXX";
+       int retries = 0;
+ #define NRETRIES 50
+       while (1)
+ 	{
+-	  /* Add the suffix for mktemp.  */
+-	  strcpy (xxxxxx, "XXXXXX");
+-
+ 	  /* We really want to use mktemp here.  We cannot use mkstemp
+ 	     since the file must be opened with a specific mode.  The
+ 	     mode cannot later be set since then we cannot apply the
+@@ -254,7 +253,12 @@ sem_open (const char *name, int oflag, ...)
+ 	      if (errno == EEXIST)
+ 		{
+ 		  if (++retries < NRETRIES)
+-		    continue;
++		    {
++		      /* Restore the six placeholder bytes before the
++			 null terminator before the next attempt.  */
++		      memcpy (tmpfname + sizeof (tmpfname) - 7, "XXXXXX", 6);
++		      continue;
++		    }
+ 
+ 		  __set_errno (EAGAIN);
+ 		}
+@@ -275,7 +279,7 @@ sem_open (const char *name, int oflag, ...)
+ 				       fd, 0)) != MAP_FAILED)
+ 	{
+ 	  /* Create the file.  Don't overwrite an existing file.  */
+-	  if (link (tmpfname, shm_name) != 0)
++	  if (link (tmpfname, dirname.name) != 0)
+ 	    {
+ 	      /* Undo the mapping.  */
+ 	      (void) munmap (result, sizeof (sem_t));
+@@ -300,7 +304,7 @@ sem_open (const char *name, int oflag, ...)
+ 	    /* Insert the mapping into the search tree.  This also
+ 	       determines whether another thread sneaked by and already
+ 	       added such a mapping despite the fact that we created it.  */
+-	    result = check_add_mapping (name, namelen, fd, result);
++	    result = check_add_mapping (name, fd, result);
+ 	}
+ 
+       /* Now remove the temporary name.  This should never fail.  If
+diff --git a/nptl/sem_unlink.c b/nptl/sem_unlink.c
+index 41fbb2c7fd..e10fcf8f65 100644
+--- a/nptl/sem_unlink.c
++++ b/nptl/sem_unlink.c
+@@ -27,11 +27,15 @@
+ int
+ sem_unlink (const char *name)
+ {
+-  /* Construct the filename.  */
+-  SHM_GET_NAME (ENOENT, -1, SEM_SHM_PREFIX);
++  struct shmdir_name dirname;
++  if (__shm_get_name (&dirname, name, true) != 0)
++    {
++      __set_errno (ENOENT);
++      return -1;
++    }
+ 
+   /* Now try removing it.  */
+-  int ret = unlink (shm_name);
++  int ret = unlink (dirname.name);
+   if (ret < 0 && errno == EPERM)
+     __set_errno (EACCES);
+   return ret;
+diff --git a/posix/Makefile b/posix/Makefile
+index 605ddbade8..6f41a022d8 100644
+--- a/posix/Makefile
++++ b/posix/Makefile
+@@ -65,7 +65,8 @@ routines :=								      \
+ 	spawnattr_setsigmask spawnattr_setschedpolicy spawnattr_setschedparam \
+ 	posix_madvise							      \
+ 	get_child_max sched_cpucount sched_cpualloc sched_cpufree \
+-	streams-compat
++	streams-compat \
++	shm-directory
+ 
+ aux		:= init-posix environ
+ tests		:= test-errno tstgetopt testfnm runtests runptests \
+diff --git a/posix/Versions b/posix/Versions
+index 7d06a6d0c0..cfd3819966 100644
+--- a/posix/Versions
++++ b/posix/Versions
+@@ -150,5 +150,6 @@ libc {
+   GLIBC_PRIVATE {
+     __libc_fork; __libc_pread; __libc_pwrite;
+     __nanosleep_nocancel; __pause_nocancel;
++    __shm_get_name;
+   }
+ }
+diff --git a/sysdeps/posix/shm-directory.c b/posix/shm-directory.c
+similarity index 60%
+rename from sysdeps/posix/shm-directory.c
+rename to posix/shm-directory.c
+index 29314f06bb..b4d539d6c9 100644
+--- a/sysdeps/posix/shm-directory.c
++++ b/posix/shm-directory.c
+@@ -16,23 +16,31 @@
+    License along with the GNU C Library; if not, see
+    <https://www.gnu.org/licenses/>.  */
+ 
+-#include <shm-directory.h>
+ #include <unistd.h>
+ 
+ #if _POSIX_MAPPED_FILES
+ 
+-# include <paths.h>
+-
+-# define SHMDIR (_PATH_DEV "shm/")
++#include <alloc_buffer.h>
++#include <shm-directory.h>
++#include <string.h>
+ 
+-const char *
+-__shm_directory (size_t *len)
++int
++__shm_get_name (struct shmdir_name *result, const char *name, bool sem_prefix)
+ {
+-  *len = sizeof SHMDIR - 1;
+-  return SHMDIR;
++  while (name[0] == '/')
++    ++name;
++  size_t namelen = strlen (name);
++
++  struct alloc_buffer buffer
++    = alloc_buffer_create (result->name, sizeof (result->name));
++  alloc_buffer_copy_bytes (&buffer, SHMDIR, strlen (SHMDIR));
++  if (sem_prefix)
++    alloc_buffer_copy_bytes (&buffer, "sem.", strlen ("sem."));
++  alloc_buffer_copy_bytes (&buffer, name, namelen + 1);
++  if (namelen == 0 || memchr (name, '/', namelen) != NULL
++      || alloc_buffer_has_failed (&buffer))
++    return -1;
++  return 0;
+ }
+-# if IS_IN (libpthread)
+-hidden_def (__shm_directory)
+-# endif
+ 
+ #endif
+diff --git a/sysdeps/htl/shm-directory.h b/sysdeps/htl/shm-directory.h
+deleted file mode 100644
+index a9742b3fd2..0000000000
+--- a/sysdeps/htl/shm-directory.h
++++ /dev/null
+@@ -1,30 +0,0 @@
+-/* Header for directory for shm/sem files.  libpthread version.
+-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <https://www.gnu.org/licenses/>.  */
+-
+-#ifndef _SHM_DIRECTORY_H
+-
+-#include <sysdeps/posix/shm-directory.h>
+-
+-/* For libpthread the __shm_directory function lives in libpthread.
+-   We don't want PLT calls from there.  But it's also used from
+-   librt, so it cannot just be declared hidden.  */
+-
+-#if IS_IN (libpthread)
+-hidden_proto (__shm_directory)
+-#endif
+-#endif /* shm-directory.h */
+diff --git a/sysdeps/posix/Makefile b/sysdeps/posix/Makefile
+index 52f20f5d97..b58aa6aadb 100644
+--- a/sysdeps/posix/Makefile
++++ b/sysdeps/posix/Makefile
+@@ -3,9 +3,3 @@ L_tmpnam  = 20
+ TMP_MAX   = 238328
+ L_ctermid = 9
+ L_cuserid = 9
+-
+-ifeq ($(subdir)|$(have-thread-library),rt|no)
+-# With NPTL, this lives in libpthread so it can be used for sem_open too.
+-# Without NPTL, it's just private in librt.
+-librt-routines += shm-directory
+-endif
+diff --git a/sysdeps/posix/shm-directory.h b/sysdeps/posix/shm-directory.h
+deleted file mode 100644
+index 9172d9f637..0000000000
+--- a/sysdeps/posix/shm-directory.h
++++ /dev/null
+@@ -1,66 +0,0 @@
+-/* Header for directory for shm/sem files.
+-   Copyright (C) 2014-2020 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <https://www.gnu.org/licenses/>.  */
+-
+-#ifndef _SHM_DIRECTORY_H
+-
+-#include <errno.h>
+-#include <limits.h>
+-#include <stdbool.h>
+-#include <stdlib.h>
+-#include <string.h>
+-
+-extern const char *__shm_directory (size_t *len);
+-
+-/* This defines local variables SHM_DIR and SHM_DIRLEN, giving the
+-   directory prefix (with trailing slash) and length (not including '\0'
+-   terminator) of the directory used for shm files.  If that cannot be
+-   determined, it sets errno to ENOSYS and returns RETVAL_FOR_INVALID.
+-
+-   This uses the local variable NAME as an lvalue, and increments it past
+-   any leading slashes.  It then defines the local variable NAMELEN, giving
+-   strlen (NAME) + 1.  If NAME is invalid, it sets errno to
+-   ERRNO_FOR_INVALID and returns RETVAL_FOR_INVALID.  Finally, it defines
+-   the local variable SHM_NAME, giving the absolute file name of the shm
+-   file corresponding to NAME.  PREFIX is a string constant used as a
+-   prefix on NAME.  */
+-
+-#define SHM_GET_NAME(errno_for_invalid, retval_for_invalid, prefix)           \
+-  size_t shm_dirlen;							      \
+-  const char *shm_dir = __shm_directory (&shm_dirlen);			      \
+-  /* If we don't know what directory to use, there is nothing we can do.  */  \
+-  if (__glibc_unlikely (shm_dir == NULL))				      \
+-    {									      \
+-      __set_errno (ENOSYS);						      \
+-      return retval_for_invalid;					      \
+-    }									      \
+-  /* Construct the filename.  */					      \
+-  while (name[0] == '/')						      \
+-    ++name;								      \
+-  size_t namelen = strlen (name) + 1;					      \
+-  /* Validate the filename.  */						      \
+-  if (namelen == 1 || namelen >= NAME_MAX || strchr (name, '/') != NULL)      \
+-    {									      \
+-      __set_errno (errno_for_invalid);					      \
+-      return retval_for_invalid;					      \
+-    }									      \
+-  char *shm_name = __alloca (shm_dirlen + sizeof prefix - 1 + namelen);	      \
+-  __mempcpy (__mempcpy (__mempcpy (shm_name, shm_dir, shm_dirlen),	      \
+-                        prefix, sizeof prefix - 1),			      \
+-             name, namelen)
+-
+-#endif	/* shm-directory.h */
+diff --git a/sysdeps/posix/shm_open.c b/sysdeps/posix/shm_open.c
+index 6ca80cd4e4..d8881e6b82 100644
+--- a/sysdeps/posix/shm_open.c
++++ b/sysdeps/posix/shm_open.c
+@@ -24,6 +24,7 @@
+ 
+ #else
+ 
++# include <errno.h>
+ # include <fcntl.h>
+ # include <pthread.h>
+ # include <shm-directory.h>
+@@ -33,7 +34,12 @@
+ int
+ shm_open (const char *name, int oflag, mode_t mode)
+ {
+-  SHM_GET_NAME (EINVAL, -1, "");
++  struct shmdir_name dirname;
++  if (__shm_get_name (&dirname, name, false) != 0)
++    {
++      __set_errno (EINVAL);
++      return -1;
++    }
+ 
+   oflag |= O_NOFOLLOW | O_CLOEXEC;
+ 
+@@ -41,7 +47,7 @@ shm_open (const char *name, int oflag, mode_t mode)
+   int state;
+   pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
+ 
+-  int fd = open (shm_name, oflag, mode);
++  int fd = open (dirname.name, oflag, mode);
+   if (fd == -1 && __glibc_unlikely (errno == EISDIR))
+     /* It might be better to fold this error with EINVAL since
+        directory names are just another example for unsuitable shared
+diff --git a/sysdeps/posix/shm_unlink.c b/sysdeps/posix/shm_unlink.c
+index d95cad9d15..c7caebe74c 100644
+--- a/sysdeps/posix/shm_unlink.c
++++ b/sysdeps/posix/shm_unlink.c
+@@ -25,16 +25,21 @@
+ 
+ #include <errno.h>
+ #include <string.h>
+-#include "shm-directory.h"
++#include <shm-directory.h>
+ 
+ 
+ /* Remove shared memory object.  */
+ int
+ shm_unlink (const char *name)
+ {
+-  SHM_GET_NAME (ENOENT, -1, "");
+-
+-  int result = unlink (shm_name);
++  struct shmdir_name dirname;
++  if (__shm_get_name (&dirname, name, false) != 0)
++    {
++      __set_errno (ENOENT);
++      return -1;
++    }
++
++  int result = unlink (dirname.name);
+   if (result < 0 && errno == EPERM)
+     __set_errno (EACCES);
+   return result;
+diff --git a/sysdeps/unix/sysv/linux/shm-directory.c b/sysdeps/unix/sysv/linux/shm-directory.c
+deleted file mode 100644
+index 43f044d77c..0000000000
+--- a/sysdeps/unix/sysv/linux/shm-directory.c
++++ /dev/null
+@@ -1,147 +0,0 @@
+-/* Determine directory for shm/sem files.  Linux version.
+-   Copyright (C) 2000-2020 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-
+-   The GNU C Library is free software; you can redistribute it and/or
+-   modify it under the terms of the GNU Lesser General Public
+-   License as published by the Free Software Foundation; either
+-   version 2.1 of the License, or (at your option) any later version.
+-
+-   The GNU C Library is distributed in the hope that it will be useful,
+-   but WITHOUT ANY WARRANTY; without even the implied warranty of
+-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+-   Lesser General Public License for more details.
+-
+-   You should have received a copy of the GNU Lesser General Public
+-   License along with the GNU C Library; if not, see
+-   <https://www.gnu.org/licenses/>.  */
+-
+-#include "shm-directory.h"
+-
+-#include <errno.h>
+-#include <mntent.h>
+-#include <paths.h>
+-#include <stdio.h>
+-#include <string.h>
+-#include <sys/statfs.h>
+-#include <libc-lock.h>
+-#include "linux_fsinfo.h"
+-
+-
+-/* Mount point of the shared memory filesystem.  */
+-static struct
+-{
+-  char *dir;
+-  size_t dirlen;
+-} mountpoint;
+-
+-/* This is the default directory.  */
+-static const char defaultdir[] = "/dev/shm/";
+-
+-/* Protect the `mountpoint' variable above.  */
+-__libc_once_define (static, once);
+-
+-
+-/* Determine where the shmfs is mounted (if at all).  */
+-static void
+-where_is_shmfs (void)
+-{
+-  char buf[512];
+-  struct statfs f;
+-  struct mntent resmem;
+-  struct mntent *mp;
+-  FILE *fp;
+-
+-  /* The canonical place is /dev/shm.  This is at least what the
+-     documentation tells everybody to do.  */
+-  if (__statfs (defaultdir, &f) == 0 && (f.f_type == SHMFS_SUPER_MAGIC
+-                                         || f.f_type == RAMFS_MAGIC))
+-    {
+-      /* It is in the normal place.  */
+-      mountpoint.dir = (char *) defaultdir;
+-      mountpoint.dirlen = sizeof (defaultdir) - 1;
+-
+-      return;
+-    }
+-
+-  /* OK, do it the hard way.  Look through the /proc/mounts file and if
+-     this does not exist through /etc/fstab to find the mount point.  */
+-  fp = __setmntent ("/proc/mounts", "r");
+-  if (__glibc_unlikely (fp == NULL))
+-    {
+-      fp = __setmntent (_PATH_MNTTAB, "r");
+-      if (__glibc_unlikely (fp == NULL))
+-        /* There is nothing we can do.  Blind guesses are not helpful.  */
+-        return;
+-    }
+-
+-  /* Now read the entries.  */
+-  while ((mp = __getmntent_r (fp, &resmem, buf, sizeof buf)) != NULL)
+-    /* The original name is "shm" but this got changed in early Linux
+-       2.4.x to "tmpfs".  */
+-    if (strcmp (mp->mnt_type, "tmpfs") == 0
+-        || strcmp (mp->mnt_type, "shm") == 0)
+-      {
+-        /* Found it.  There might be more than one place where the
+-           filesystem is mounted but one is enough for us.  */
+-        size_t namelen;
+-
+-        /* First make sure this really is the correct entry.  At least
+-           some versions of the kernel give wrong information because
+-           of the implicit mount of the shmfs for SysV IPC.  */
+-        if (__statfs (mp->mnt_dir, &f) != 0 || (f.f_type != SHMFS_SUPER_MAGIC
+-                                                && f.f_type != RAMFS_MAGIC))
+-          continue;
+-
+-        namelen = strlen (mp->mnt_dir);
+-
+-        if (namelen == 0)
+-          /* Hum, maybe some crippled entry.  Keep on searching.  */
+-          continue;
+-
+-        mountpoint.dir = (char *) malloc (namelen + 2);
+-        if (mountpoint.dir != NULL)
+-          {
+-            char *cp = __mempcpy (mountpoint.dir, mp->mnt_dir, namelen);
+-            if (cp[-1] != '/')
+-              *cp++ = '/';
+-            *cp = '\0';
+-            mountpoint.dirlen = cp - mountpoint.dir;
+-          }
+-
+-        break;
+-      }
+-
+-  /* Close the stream.  */
+-  __endmntent (fp);
+-}
+-
+-
+-const char *
+-__shm_directory (size_t *len)
+-{
+-  /* Determine where the shmfs is mounted.  */
+-  __libc_once (once, where_is_shmfs);
+-
+-  /* If we don't know the mount points there is nothing we can do.  Ever.  */
+-  if (__glibc_unlikely (mountpoint.dir == NULL))
+-    {
+-      __set_errno (ENOSYS);
+-      return NULL;
+-    }
+-
+-  *len = mountpoint.dirlen;
+-  return mountpoint.dir;
+-}
+-#if IS_IN (libpthread)
+-hidden_def (__shm_directory)
+-
+-/* Make sure the table is freed if we want to free everything before
+-   exiting.  */
+-void
+-__shm_directory_freeres (void)
+-{
+-  if (mountpoint.dir != defaultdir)
+-    free (mountpoint.dir);
+-}
+-#endif
+-- 
+2.32.0
+
diff --git a/sys-libs/glibc/glibc-2.27-r20.ebuild b/sys-libs/glibc/glibc-2.27-r20.ebuild
deleted file mode 100644
index 254079a..0000000
--- a/sys-libs/glibc/glibc-2.27-r20.ebuild
+++ /dev/null
@@ -1,1478 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-inherit prefix eutils versionator toolchain-funcs flag-o-matic gnuconfig \
-	multilib systemd multiprocessing
-
-DESCRIPTION="GNU libc C library"
-HOMEPAGE="https://www.gnu.org/software/libc/"
-LICENSE="LGPL-2.1+ BSD HPND ISC inner-net rc PCRE"
-RESTRICT="strip" # Strip ourself #46186
-SLOT="2.2"
-
-EMULTILIB_PKG="true"
-
-if [[ ${PV} == 9999* ]]; then
-	EGIT_REPO_URI="https://sourceware.org/git/glibc.git"
-	inherit git-r3
-else
-	KEYWORDS="*"
-	SRC_URI="mirror://gnu/glibc/${P}.tar.xz"
-fi
-
-RELEASE_VER=${PV}
-
-GCC_BOOTSTRAP_VER=20180511
-
-# Gentoo patchset
-PATCH_VER=3
-
-SRC_URI+=" https://dev.gentoo.org/~dilfridge/distfiles/${P}-patches-${PATCH_VER}.tar.bz2"
-SRC_URI+=" multilib? ( https://dev.gentoo.org/~dilfridge/distfiles/gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz )"
-
-IUSE="audit caps compile-locales crosscompile_opts_headers-only doc gd hardened headers-only +multiarch multilib nscd profile selinux suid systemtap vanilla"
-
-# Minimum kernel version that glibc requires
-MIN_KERN_VER="3.2.0"
-
-# Here's how the cross-compile logic breaks down ...
-#  CTARGET - machine that will target the binaries
-#  CHOST   - machine that will host the binaries
-#  CBUILD  - machine that will build the binaries
-# If CTARGET != CHOST, it means you want a libc for cross-compiling.
-# If CHOST != CBUILD, it means you want to cross-compile the libc.
-#  CBUILD = CHOST = CTARGET    - native build/install
-#  CBUILD != (CHOST = CTARGET) - cross-compile a native build
-#  (CBUILD = CHOST) != CTARGET - libc for cross-compiler
-#  CBUILD != CHOST != CTARGET  - cross-compile a libc for a cross-compiler
-# For install paths:
-#  CHOST = CTARGET  - install into /
-#  CHOST != CTARGET - install into /usr/CTARGET/
-#
-export CBUILD=${CBUILD:-${CHOST}}
-export CTARGET=${CTARGET:-${CHOST}}
-if [[ ${CTARGET} == ${CHOST} ]] ; then
-	if [[ ${CATEGORY} == cross-* ]] ; then
-		export CTARGET=${CATEGORY#cross-}
-	fi
-fi
-
-# We need a new-enough binutils/gcc to match upstream baseline.
-# Also we need to make sure our binutils/gcc supports TLS.
-COMMON_DEPEND="
-	nscd? ( selinux? (
-		audit? ( sys-process/audit )
-		caps? ( sys-libs/libcap )
-	) )
-	suid? ( caps? ( sys-libs/libcap ) )
-	selinux? ( sys-libs/libselinux )
-	systemtap? ( dev-util/systemtap )
-"
-DEPEND="${COMMON_DEPEND}
-	>=app-misc/pax-utils-0.1.10
-	sys-devel/bison
-	!<sys-apps/sandbox-1.6
-	!<sys-apps/portage-2.1.2
-	!<sys-devel/bison-2.7
-	doc? ( sys-apps/texinfo )
-"
-RDEPEND="${COMMON_DEPEND}
-	sys-apps/gentoo-functions
-	!sys-kernel/ps3-sources
-	!sys-libs/nss-db
-"
-
-if [[ ${CATEGORY} == cross-* ]] ; then
-	DEPEND+=" !headers-only? (
-			!crosscompile_opts_headers-only? (
-			>=${CATEGORY}/binutils-2.24
-			>=${CATEGORY}/gcc-4.9
-			)
-		)"
-
-	[[ ${CATEGORY} == *-linux* ]] && DEPEND+=" ${CATEGORY}/linux-headers"
-else
-	DEPEND+="
-		>=sys-devel/binutils-2.24
-		>=sys-devel/gcc-4.9
-		virtual/os-headers
-	"
-	RDEPEND+=" vanilla? ( !sys-libs/timezone-data )"
-	PDEPEND+=" !vanilla? ( sys-libs/timezone-data )"
-fi
-
-#
-# Small helper functions
-#
-
-is_crosscompile() {
-	[[ ${CHOST} != ${CTARGET} ]]
-}
-
-just_headers() {
-	is_crosscompile && ( use headers-only || use crosscompile_opts_headers-only )
-}
-
-alt_prefix() {
-	is_crosscompile && echo /usr/${CTARGET}
-}
-
-# We need to be able to set alternative headers for compiling for non-native
-# platform. Will also become useful for testing kernel-headers without screwing
-# up the whole system.
-alt_headers() {
-	echo ${ALT_HEADERS:=$(alt_prefix)/usr/include}
-}
-
-alt_build_headers() {
-	if [[ -z ${ALT_BUILD_HEADERS} ]] ; then
-		ALT_BUILD_HEADERS="${EPREFIX}$(alt_headers)"
-		if tc-is-cross-compiler ; then
-			ALT_BUILD_HEADERS=${SYSROOT}$(alt_headers)
-			if [[ ! -e ${ALT_BUILD_HEADERS}/linux/version.h ]] ; then
-				local header_path=$(echo '#include <linux/version.h>' | $(tc-getCPP ${CTARGET}) ${CFLAGS} 2>&1 | grep -o '[^"]*linux/version.h')
-				ALT_BUILD_HEADERS=${header_path%/linux/version.h}
-			fi
-		fi
-	fi
-	echo "${ALT_BUILD_HEADERS}"
-}
-
-alt_libdir() {
-	echo $(alt_prefix)/$(get_libdir)
-}
-alt_usrlibdir() {
-	echo $(alt_prefix)/usr/$(get_libdir)
-}
-
-builddir() {
-	echo "${WORKDIR}/build-${ABI}-${CTARGET}-$1"
-}
-
-do_compile_test() {
-	local ret save_cflags=${CFLAGS}
-	CFLAGS+=" $1"
-	shift
-
-	pushd "${T}" >/dev/null
-
-	rm -f glibc-test*
-	printf '%b' "$*" > glibc-test.c
-
-	nonfatal emake -s glibc-test CC="${CC}"
-	ret=$?
-
-	popd >/dev/null
-
-	CFLAGS=${save_cflags}
-	return ${ret}
-}
-
-do_run_test() {
-	local ret
-
-	if [[ ${MERGE_TYPE} == "binary" ]] ; then
-		# ignore build failures when installing a binary package #324685
-		do_compile_test "" "$@" 2>/dev/null || return 0
-	else
-		if ! do_compile_test "" "$@" ; then
-			ewarn "Simple build failed ... assuming this is desired #324685"
-			return 0
-		fi
-	fi
-
-	pushd "${T}" >/dev/null
-
-	./glibc-test
-	ret=$?
-	rm -f glibc-test*
-
-	popd >/dev/null
-
-	return ${ret}
-}
-
-setup_target_flags() {
-	# This largely mucks with compiler flags.  None of which should matter
-	# when building up just the headers.
-	just_headers && return 0
-
-	# Needed as workaround to fix:
-	# http://code.google.com/p/chromium-os/issues/detail?id=22373
-	# Can be removed when we emerge glibc to the target:
-	# http://code.google.com/p/chromium-os/issues/detail?id=20792
-	append-cflags "-ggdb"
-
-	# ChromiumOS: Need to unset the SYSROOT value so that the
-	# compiler uses the default sysroot when building glibc. This
-	# is because the glibc startup objects are needed to configure
-	# glibc. We don't want to bootstrap libc again.
-	export SYSROOT=""
-
-	case $(tc-arch) in
-		x86)
-			# -march needed for #185404 #199334
-			# TODO: When creating the first glibc cross-compile, this test will
-			# always fail as it does a full link which in turn requires glibc.
-			# Probably also applies when changing multilib profile settings (e.g.
-			# enabling x86 when the profile was amd64-only previously).
-			# We could change main to _start and pass -nostdlib here so that we
-			# only test the gcc code compilation.  Or we could do a compile and
-			# then look for the symbol via scanelf.
-			if ! do_compile_test "" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n' 2>/dev/null ; then
-				local t=${CTARGET_OPT:-${CTARGET}}
-				t=${t%%-*}
-				filter-flags '-march=*'
-				export CFLAGS="-march=${t} ${CFLAGS}"
-				einfo "Auto adding -march=${t} to CFLAGS #185404"
-			fi
-		;;
-		amd64)
-			# -march needed for #185404 #199334
-			# Note: This test only matters when the x86 ABI is enabled, so we could
-			# optimize a bit and elide it.
-			# TODO: See cross-compile issues listed above for x86.
-			if ! do_compile_test "${CFLAGS_x86}" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n' 2>/dev/null ; then
-				local t=${CTARGET_OPT:-${CTARGET}}
-				t=${t%%-*}
-				# Normally the target is x86_64-xxx, so turn that into the -march that
-				# gcc actually accepts. #528708
-				[[ ${t} == "x86_64" ]] && t="x86-64"
-				filter-flags '-march=*'
-				# ugly, ugly, ugly.  ugly.
-				CFLAGS_x86=$(CFLAGS=${CFLAGS_x86} filter-flags '-march=*'; echo "${CFLAGS}")
-				export CFLAGS_x86="${CFLAGS_x86} -march=${t}"
-				einfo "Auto adding -march=${t} to CFLAGS_x86 #185404"
-			fi
-		;;
-		mips)
-			# The mips abi cannot support the GNU style hashes. #233233
-			filter-ldflags -Wl,--hash-style=gnu -Wl,--hash-style=both
-		;;
-		sparc)
-			# Both sparc and sparc64 can use -fcall-used-g6.  -g7 is bad, though.
-			filter-flags "-fcall-used-g7"
-			append-flags "-fcall-used-g6"
-
-			# If the CHOST is the basic one (e.g. not sparcv9-xxx already),
-			# try to pick a better one so glibc can use cpu-specific .S files.
-			# We key off the CFLAGS to get a good value.  Also need to handle
-			# version skew.
-			# We can't force users to set their CHOST to their exact machine
-			# as many of these are not recognized by config.sub/gcc and such :(.
-			# Note: If the mcpu values don't scale, we might try probing CPP defines.
-			# Note: Should we factor in -Wa,-AvXXX flags too ?  Or -mvis/etc... ?
-
-			local cpu
-			case ${CTARGET} in
-			sparc64-*)
-				case $(get-flag mcpu) in
-				niagara[234])
-					if version_is_at_least 2.8 ; then
-						cpu="sparc64v2"
-					elif version_is_at_least 2.4 ; then
-						cpu="sparc64v"
-					elif version_is_at_least 2.2.3 ; then
-						cpu="sparc64b"
-					fi
-					;;
-				niagara)
-					if version_is_at_least 2.4 ; then
-						cpu="sparc64v"
-					elif version_is_at_least 2.2.3 ; then
-						cpu="sparc64b"
-					fi
-					;;
-				ultrasparc3)
-					cpu="sparc64b"
-					;;
-				*)
-					# We need to force at least v9a because the base build doesn't
-					# work with just v9.
-					# https://sourceware.org/bugzilla/show_bug.cgi?id=19477
-					[[ -z ${cpu} ]] && append-flags "-Wa,-xarch=v9a"
-					;;
-				esac
-				;;
-			sparc-*)
-				case $(get-flag mcpu) in
-				niagara[234])
-					if version_is_at_least 2.8 ; then
-						cpu="sparcv9v2"
-					elif version_is_at_least 2.4 ; then
-						cpu="sparcv9v"
-					elif version_is_at_least 2.2.3 ; then
-						cpu="sparcv9b"
-					else
-						cpu="sparcv9"
-					fi
-					;;
-				niagara)
-					if version_is_at_least 2.4 ; then
-						cpu="sparcv9v"
-					elif version_is_at_least 2.2.3 ; then
-						cpu="sparcv9b"
-					else
-						cpu="sparcv9"
-					fi
-					;;
-				ultrasparc3)
-					cpu="sparcv9b"
-					;;
-				v9|ultrasparc)
-					cpu="sparcv9"
-					;;
-				v8|supersparc|hypersparc|leon|leon3)
-					cpu="sparcv8"
-					;;
-				esac
-			;;
-			esac
-			[[ -n ${cpu} ]] && CTARGET_OPT="${cpu}-${CTARGET#*-}"
-		;;
-	esac
-}
-
-setup_flags() {
-	# Glibc controls its own optimization settings, so this would be a nop
-	# if we were to run it. Leave it here anyway as a grep-friendly marker.
-	# cros_optimize_package_for_speed
-
-	# Make sure host make.conf doesn't pollute us
-	if is_crosscompile || tc-is-cross-compiler ; then
-		CHOST=${CTARGET} strip-unsupported-flags
-	fi
-
-	# Store our CFLAGS because it's changed depending on which CTARGET
-	# we are building when pulling glibc on a multilib profile
-	CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}}
-	CFLAGS=${CFLAGS_BASE}
-	CXXFLAGS_BASE=${CXXFLAGS_BASE-${CXXFLAGS}}
-	CXXFLAGS=${CXXFLAGS_BASE}
-	ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}}
-	ASFLAGS=${ASFLAGS_BASE}
-
-	# Over-zealous CFLAGS can often cause problems.  What may work for one
-	# person may not work for another.  To avoid a large influx of bugs
-	# relating to failed builds, we strip most CFLAGS out to ensure as few
-	# problems as possible.
-	strip-flags
-	strip-unsupported-flags
-	filter-flags -m32 -m64 '-mabi=*'
-
-	# glibc aborts if rpath is set by LDFLAGS
-	filter-ldflags '-Wl,-rpath=*'
-
-	# #492892
-	filter-flags -frecord-gcc-switches
-
-	unset CBUILD_OPT CTARGET_OPT
-	if use multilib ; then
-		CTARGET_OPT=$(get_abi_CTARGET)
-		[[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST)
-	fi
-
-	setup_target_flags
-
-	if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then
-		CBUILD_OPT=${CTARGET_OPT}
-	fi
-
-	# Lock glibc at -O2; we want to be conservative here.
-	# -fno-strict-aliasing is to work around #155906.
-	filter-flags '-O?'
-	append-flags -O2 -fno-strict-aliasing
-
-	filter-flags '-fstack-protector*'
-
-	# Starting with gcc-6 (and fully upstreamed pie patches) we control
-	# default enabled/disabled pie via use flags. So nothing to do
-	# here then. #618160
-	if [[ $(gcc-major-version) -lt 6 ]]; then
-		if use hardened && tc-enables-pie ; then
-			# Force PIC macro definition for all compilations since they're all
-			# either -fPIC or -fPIE with the default-PIE compiler.
-			append-cppflags -DPIC
-		else
-			# Don't build -fPIE without the default-PIE compiler and the
-			# hardened-pie patch
-			filter-flags -fPIE
-		fi
-	fi
-}
-
-want_tls() {
-	# Archs that can use TLS (Thread Local Storage)
-	case $(tc-arch) in
-		x86)
-			# requires i486 or better #106556
-			[[ ${CTARGET} == i[4567]86* ]] && return 0
-			return 1
-		;;
-	esac
-	return 0
-}
-
-want__thread() {
-	want_tls || return 1
-
-	# For some reason --with-tls --with__thread is causing segfaults on sparc32.
-	[[ ${PROFILE_ARCH} == "sparc" ]] && return 1
-
-	[[ -n ${WANT__THREAD} ]] && return ${WANT__THREAD}
-
-	# only test gcc -- can't test linking yet
-	tc-has-tls -c ${CTARGET}
-	WANT__THREAD=$?
-
-	return ${WANT__THREAD}
-}
-
-use_multiarch() {
-	# Allow user to disable runtime arch detection in multilib.
-	use multiarch || return 1
-	# Make sure binutils is new enough to support indirect functions,
-	# #336792. This funky sed supports gold and bfd linkers.
-	local bver nver
-	bver=$($(tc-getLD ${CTARGET}) -v | sed -n -r '1{s:[^0-9]*::;s:^([0-9.]*).*:\1:;p}')
-	case $(tc-arch ${CTARGET}) in
-	amd64|x86) nver="2.20" ;;
-	arm)       nver="2.22" ;;
-	hppa)      nver="2.23" ;;
-	ppc|ppc64) nver="2.20" ;;
-	# ifunc support was added in 2.23, but glibc also needs
-	# machinemode which is in 2.24.
-	s390)      nver="2.24" ;;
-	sparc)     nver="2.21" ;;
-	*)         return 1 ;;
-	esac
-	version_is_at_least ${nver} ${bver}
-}
-
-# Setup toolchain variables that had historically been defined in the
-# profiles for these archs.
-setup_env() {
-	# silly users
-	unset LD_RUN_PATH
-	unset LD_ASSUME_KERNEL
-
-	if is_crosscompile || tc-is-cross-compiler ; then
-		multilib_env ${CTARGET_OPT:-${CTARGET}}
-
-		if ! use multilib ; then
-			MULTILIB_ABIS=${DEFAULT_ABI}
-		else
-			MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}}
-		fi
-
-		# If the user has CFLAGS_<CTARGET> in their make.conf, use that,
-		# and fall back on CFLAGS.
-		local VAR=CFLAGS_${CTARGET//[-.]/_}
-		CFLAGS=${!VAR-${CFLAGS}}
-		einfo " $(printf '%15s' 'Manual CFLAGS:')   ${CFLAGS}"
-	fi
-
-	setup_flags
-
-	export ABI=${ABI:-${DEFAULT_ABI:-default}}
-
-	if use headers-only || use crosscompile_opts_headers-only; then
-		# Avoid mixing host's CC and target's CFLAGS_${ABI}:
-		# At this bootstrap stage we have only binutils for
-		# target but not compiler yet.
-		einfo "Skip CC ABI injection. We can't use (cross-)compiler yet."
-		return 0
-	fi
-	local VAR=CFLAGS_${ABI}
-	# We need to export CFLAGS with abi information in them because glibc's
-	# configure script checks CFLAGS for some targets (like mips).  Keep
-	# around the original clean value to avoid appending multiple ABIs on
-	# top of each other.
-
-	# For ChromiumOS, the default compiler is clang, we need to set it to gcc.
-	: ${__GLIBC_CC:=$(tc-getCC ${CTARGET_OPT:-${CTARGET}})}
-	export __GLIBC_CC CC="${__GLIBC_CC}"
-	cros_use_gcc
-	export CC="${CC} ${!VAR}"
-	einfo " $(printf '%15s' 'Manual CC:')   ${CC}"
-}
-
-foreach_abi() {
-	# For ChromiumOS, we need to unset __GLIBC_CC CC here. Otherwise
-	# we could not run sudo emerge sys-libs/glibc inside chroot.
-	unset __GLIBC_CC CC
-	setup_env
-
-	local ret=0
-	local abilist=""
-	if use multilib ; then
-		abilist=$(get_install_abis)
-	else
-		abilist=${DEFAULT_ABI}
-	fi
-	local -x ABI
-	for ABI in ${abilist:-default} ; do
-		setup_env
-		einfo "Running $1 for ABI ${ABI}"
-		$1
-		: $(( ret |= $? ))
-	done
-	return ${ret}
-}
-
-glibc_banner() {
-	local b="Gentoo ${PVR}"
-	[[ -n ${PATCH_VER} ]] && ! use vanilla && b+=" p${PATCH_VER}"
-	echo "${b}"
-}
-
-check_devpts() {
-	# Make sure devpts is mounted correctly for use w/out setuid pt_chown.
-
-	# If merely building the binary package, then there's nothing to verify.
-	[[ ${MERGE_TYPE} == "buildonly" ]] && return
-
-	# Only sanity check when installing the native glibc.
-	[[ ${ROOT} != "/" ]] && return
-
-	# If they're opting in to the old suid code, then no need to check.
-	use suid && return
-
-	if awk '$3 == "devpts" && $4 ~ /[, ]gid=5[, ]/ { exit 1 }' /proc/mounts ; then
-		eerror "In order to use glibc with USE=-suid, you must make sure that"
-		eerror "you have devpts mounted at /dev/pts with the gid=5 option."
-		eerror "Openrc should do this for you, so you should check /etc/fstab"
-		eerror "and make sure you do not have any invalid settings there."
-		die "mount & fix your /dev/pts settings"
-	fi
-}
-
-# The following Kernel version handling functions are mostly copied from portage
-# source. It's better not to use linux-info.eclass here since a) it adds too
-# much magic, see bug 326693 for some of the arguments, and b) some of the
-# functions are just not provided.
-
-g_get_running_KV() {
-	uname -r
-	return $?
-}
-
-g_KV_major() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	echo "${KV%%.*}"
-}
-
-g_KV_minor() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	KV=${KV#*.}
-	echo "${KV%%.*}"
-}
-
-g_KV_micro() {
-	[[ -z $1 ]] && return 1
-	local KV=$@
-	KV=${KV#*.*.}
-	echo "${KV%%[^[:digit:]]*}"
-}
-
-g_KV_to_int() {
-	[[ -z $1 ]] && return 1
-	local KV_MAJOR=$(g_KV_major "$1")
-	local KV_MINOR=$(g_KV_minor "$1")
-	local KV_MICRO=$(g_KV_micro "$1")
-	local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ))
-
-	# We make version 2.2.0 the minimum version we will handle as
-	# a sanity check ... if its less, we fail ...
-	if [[ ${KV_int} -ge 131584 ]] ; then
-		echo "${KV_int}"
-		return 0
-	fi
-	return 1
-}
-
-g_int_to_KV() {
-	local version=$1 major minor micro
-	major=$((version / 65536))
-	minor=$(((version % 65536) / 256))
-	micro=$((version % 256))
-	echo ${major}.${minor}.${micro}
-}
-
-eend_KV() {
-	[[ $(g_KV_to_int $1) -ge $(g_KV_to_int $2) ]]
-	eend $?
-}
-
-get_kheader_version() {
-	printf '#include <linux/version.h>\nLINUX_VERSION_CODE\n' | \
-	$(tc-getCPP ${CTARGET}) -I "${EPREFIX}/$(alt_build_headers)" - | \
-	tail -n 1
-}
-
-# We collect all sanity checks here. Consistency is not guranteed between
-# pkg_ and src_ phases, so we call this function both in pkg_pretend and in
-# src_unpack.
-sanity_prechecks() {
-	# CrOS makes sure these checks all pass.
-	return
-
-	# Make sure devpts is mounted correctly for use w/out setuid pt_chown
-	check_devpts
-
-	# Prevent native builds from downgrading
-	if [[ ${MERGE_TYPE} != "buildonly" ]] && \
-		[[ ${ROOT} == "/" ]] && \
-		[[ ${CBUILD} == ${CHOST} ]] && \
-		[[ ${CHOST} == ${CTARGET} ]] ; then
-
-		# The high rev # is to allow people to downgrade between -r#
-		# versions. We want to block 2.20->2.19, but 2.20-r3->2.20-r2
-		# should be fine. Hopefully we never actually use a r# this
-		# high.
-		if has_version ">${CATEGORY}/${P}-r10000" ; then
-			eerror "Sanity check to keep you from breaking your system:"
-			eerror " Downgrading glibc is not supported and a sure way to destruction."
-			die "Aborting to save your system."
-		fi
-
-		if ! do_run_test '#include <unistd.h>\n#include <sys/syscall.h>\nint main(){return syscall(1000)!=-1;}\n' ; then
-			eerror "Your old kernel is broken. You need to update it to a newer"
-			eerror "version as syscall(<bignum>) will break. See bug 279260."
-			die "Old and broken kernel."
-		fi
-	fi
-
-	# Users have had a chance to phase themselves, time to give em the boot
-	if [[ -e ${EROOT}/etc/locale.gen ]] && [[ -e ${EROOT}/etc/locales.build ]] ; then
-		eerror "You still haven't deleted ${EROOT}/etc/locales.build."
-		eerror "Do so now after making sure ${EROOT}/etc/locale.gen is kosher."
-		die "Lazy upgrader detected"
-	fi
-
-	if [[ ${CTARGET} == i386-* ]] ; then
-		eerror "i386 CHOSTs are no longer supported."
-		eerror "Chances are you don't actually want/need i386."
-		eerror "Please read https://www.gentoo.org/doc/en/change-chost.xml"
-		die "Please fix your CHOST"
-	fi
-
-	if [[ -e /proc/xen ]] && [[ $(tc-arch) == "x86" ]] && ! is-flag -mno-tls-direct-seg-refs ; then
-		ewarn "You are using Xen but don't have -mno-tls-direct-seg-refs in your CFLAGS."
-		ewarn "This will result in a 50% performance penalty when running with a 32bit"
-		ewarn "hypervisor, which is probably not what you want."
-	fi
-
-	use hardened && ! tc-enables-pie && \
-		ewarn "PIE hardening not applied, as your compiler doesn't default to PIE"
-
-	# Check for sanity of /etc/nsswitch.conf
-	if [[ -e ${EROOT}/etc/nsswitch.conf ]] ; then
-		local entry
-		for entry in passwd group shadow; do
-			if ! egrep -q "^[ \t]*${entry}:.*files" "${EROOT}"/etc/nsswitch.conf; then
-				eerror "Your ${EROOT}/etc/nsswitch.conf is out of date."
-				eerror "Please make sure you have 'files' entries for"
-				eerror "'passwd:', 'group:' and 'shadow:' databases."
-				eerror "For more details see:"
-				eerror "  https://wiki.gentoo.org/wiki/Project:Toolchain/nsswitch.conf_in_glibc-2.26"
-				die "nsswitch.conf has no 'files' provider in '${entry}'."
-			fi
-		done
-	fi
-
-	# ABI-specific checks follow here. Hey, we have a lot more specific conditions that
-	# we test for...
-	if ! is_crosscompile ; then
-		if use amd64 && use multilib && [[ ${MERGE_TYPE} != "binary" ]] ; then
-			ebegin "Checking that IA32 emulation is enabled in the running kernel"
-			echo 'int main(){return 0;}' > "${T}/check-ia32-emulation.c"
-			local STAT
-			if "${CC-${CHOST}-gcc}" ${CFLAGS_x86} "${T}/check-ia32-emulation.c" -o "${T}/check-ia32-emulation.elf32"; then
-				"${T}/check-ia32-emulation.elf32"
-				STAT=$?
-			else
-				# Don't fail here to allow single->multi ABI switch
-				# or recover from breakage like bug #646424
-				ewarn "Failed to compile the ABI test. Broken host glibc?"
-				STAT=0
-			fi
-			rm -f "${T}/check-ia32-emulation.elf32"
-			eend $STAT
-			[[ $STAT -eq 0 ]] || die "CONFIG_IA32_EMULATION must be enabled in the kernel to compile a multilib glibc."
-		fi
-
-	fi
-
-	# When we actually have to compile something...
-	if ! just_headers ; then
-		local run_kv build_kv want_kv
-
-		run_kv=$(g_get_running_KV)
-		build_kv=$(g_int_to_KV $(get_kheader_version))
-		want_kv=${MIN_KERN_VER}
-
-		ebegin "Checking gcc for __thread support"
-		if ! eend $(want__thread ; echo $?) ; then
-			echo
-			eerror "Could not find a gcc that supports the __thread directive!"
-			eerror "Please update your binutils/gcc and try again."
-			die "No __thread support in gcc!"
-		fi
-
-		if ! is_crosscompile && ! tc-is-cross-compiler ; then
-			# Building fails on an non-supporting kernel
-			ebegin "Checking running kernel version (${run_kv} >= ${want_kv})"
-			if ! eend_KV ${run_kv} ${want_kv} ; then
-				echo
-				eerror "You need a kernel of at least ${want_kv}!"
-				die "Kernel version too low!"
-			fi
-		fi
-
-		ebegin "Checking linux-headers version (${build_kv} >= ${want_kv})"
-		if ! eend_KV ${build_kv} ${want_kv} ; then
-			echo
-			eerror "You need linux-headers of at least ${want_kv}!"
-			die "linux-headers version too low!"
-		fi
-	fi
-}
-
-#
-# the phases
-#
-
-# pkg_pretend
-
-# CrOS doesn't care about these checks.
-disabled_pkg_pretend() {
-	# All the checks...
-	einfo "Checking general environment sanity."
-	sanity_prechecks
-}
-
-# src_unpack
-
-src_unpack() {
-	# Consistency is not guaranteed between pkg_ and src_ ...
-	sanity_prechecks
-
-	use multilib && unpack gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz
-
-	setup_env
-
-	if [[ -n ${EGIT_REPO_URI} ]] ; then
-		git-r3_src_unpack
-	else
-		unpack ${P}.tar.xz
-	fi
-
-	cd "${S}" || die
-	touch locale/C-translit.h || die #185476 #218003
-
-	cd "${WORKDIR}" || die
-	unpack glibc-${RELEASE_VER}-patches-${PATCH_VER}.tar.bz2
-	epatch "${FILESDIR}"/glibc-locale-gen.patch  #crbug.com/899377
-}
-
-src_prepare() {
-	if ! use vanilla ; then
-		elog "Applying Gentoo Glibc Patchset ${RELEASE_VER}"
-		EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" epatch "${WORKDIR}"/patches
-		einfo "Done."
-	fi
-	EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" epatch "${FILESDIR}"/local
-
-	default
-
-	gnuconfig_update
-
-	cd "${WORKDIR}"
-	find . -name configure -exec touch {} +
-
-	eprefixify extra/locale/locale-gen
-
-	# Fix permissions on some of the scripts.
-	chmod u+x "${S}"/scripts/*.sh
-
-	cd "${S}"
-}
-
-glibc_do_configure() {
-	# Glibc does not work with gold (for various reasons) #269274.
-	tc-ld-disable-gold
-
-	# CXX isnt handled by the multilib system, so if we dont unset here
-	# we accumulate crap across abis
-	unset CXX
-
-	einfo "Configuring glibc for nptl"
-
-	if use doc ; then
-		export MAKEINFO=makeinfo
-	else
-		export MAKEINFO=/dev/null
-	fi
-
-	local v
-	for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX LD {AS,C,CPP,CXX,LD}FLAGS MAKEINFO ; do
-		einfo " $(printf '%15s' ${v}:)   ${!v}"
-	done
-
-	# CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
-	# To build .S (assembly) files with the same ABI-specific flags
-	# upstream currently recommends adding CFLAGS to CC/CXX:
-	#    https://sourceware.org/PR23273
-	# Note: Passing CFLAGS via CPPFLAGS overrides glibc's arch-specific CFLAGS
-	# and breaks multiarch support. See 659030#c3 for an example.
-
-	# The glibc configure script doesn't properly use LDFLAGS all the time.
-	export CC="$(tc-getCC ${CTARGET})"
-	export CXX="$(tc-getCXX ${CTARGET})"
-	cros_use_gcc
-	export CC="${CC} ${CFLAGS} ${LDFLAGS}"
-	export CXX="${CXX} $(get_abi_CFLAGS) ${CFLAGS}"
-
-	einfo " $(printf '%15s' 'Manual CC:')   ${CC}"
-
-	# Some of the tests are written in C++, so we need to force our multlib abis in, bug 623548
-	einfo " $(printf '%15s' 'Manual CXX:')   ${CXX}"
-
-	echo
-
-	local myconf=()
-
-	case ${CTARGET} in
-		powerpc-*)
-			# Currently gcc on powerpc32 generates invalid code for
-			# __builtin_return_address(0) calls. Normally programs
-			# don't do that but malloc hooks in glibc do:
-			# https://gcc.gnu.org/PR81996
-			# https://bugs.gentoo.org/629054
-			myconf+=( --enable-stack-protector=no )
-			;;
-		*)
-			myconf+=( --enable-stack-protector=strong )
-			;;
-	esac
-	myconf+=( --enable-stackguard-randomization )
-
-	# Keep an allowlist of targets supporing IFUNC. glibc's ./configure
-	# is not robust enough to detect proper support:
-	#    https://bugs.gentoo.org/641216
-	#    https://sourceware.org/PR22634#c0
-	case $(tc-arch ${CTARGET}) in
-		# Keep an allowlist of targets where autodetection mostly works.
-		amd64|x86|sparc|ppc|ppc64|arm|arm64|s390) ;;
-		# Denylist everywhere else
-		*) myconf+=( libc_cv_ld_gnu_indirect_function=no ) ;;
-	esac
-
-	[[ $(tc-is-softfloat) == "yes" ]] && myconf+=( --without-fp )
-
-	myconf+=( --enable-kernel=${MIN_KERN_VER} )
-
-	# Since SELinux support is only required for nscd, only enable it if:
-	# 1. USE selinux
-	# 2. only for the primary ABI on multilib systems
-	# 3. Not a crosscompile
-	if ! is_crosscompile && use selinux ; then
-		if use multilib ; then
-			if is_final_abi ; then
-				myconf+=( --with-selinux )
-			else
-				myconf+=( --without-selinux )
-			fi
-		else
-			myconf+=( --with-selinux )
-		fi
-	else
-		myconf+=( --without-selinux )
-	fi
-
-	# Force a few tests where we always know the answer but
-	# configure is incapable of finding it.
-	if is_crosscompile ; then
-		export \
-			libc_cv_c_cleanup=yes \
-			libc_cv_forced_unwind=yes
-	fi
-
-	myconf+=(
-		--without-cvs
-		--disable-werror
-		--enable-bind-now
-		--build=${CBUILD_OPT:-${CBUILD}}
-		--host=${CTARGET_OPT:-${CTARGET}}
-		$(use_enable profile)
-		$(use_with gd)
-		--with-headers=$(alt_build_headers)
-		--prefix="${EPREFIX}/usr"
-		--sysconfdir="${EPREFIX}/etc"
-		--localstatedir="${EPREFIX}/var"
-		--libdir='$(prefix)'/$(get_libdir)
-		--mandir='$(prefix)'/share/man
-		--infodir='$(prefix)'/share/info
-		--libexecdir='$(libdir)'/misc/glibc
-		--with-bugurl=https://bugs.gentoo.org/
-		--with-pkgversion="$(glibc_banner)"
-		$(use_multiarch || echo --disable-multi-arch)
-		$(use_enable systemtap)
-		$(use_enable nscd)
-		${EXTRA_ECONF}
-	)
-
-	# We rely on sys-libs/timezone-data for timezone tools normally.
-	myconf+=( $(use_enable vanilla timezone-tools) )
-
-	# These libs don't have configure flags.
-	ac_cv_lib_audit_audit_log_user_avc_message=$(usex audit || echo no)
-	ac_cv_lib_cap_cap_init=$(usex caps || echo no)
-
-	# There is no configure option for this and we need to export it
-	# since the glibc build will re-run configure on itself
-	export libc_cv_rootsbindir="${EPREFIX}/sbin"
-	export libc_cv_slibdir="${EPREFIX}/$(get_libdir)"
-
-	# We take care of patching our binutils to use both hash styles,
-	# and many people like to force gnu hash style only, so disable
-	# this overriding check.  #347761
-	export libc_cv_hashstyle=no
-
-	local builddir=$(builddir nptl)
-	mkdir -p "${builddir}"
-	cd "${builddir}"
-	set -- "${S}"/configure "${myconf[@]}"
-	echo "$@"
-	"$@" || die "failed to configure glibc"
-
-	# ia64 static cross-compilers are a pita in so much that they
-	# can't produce static ELFs (as the libgcc.a is broken).  so
-	# disable building of the programs for those targets if it
-	# doesn't work.
-	# XXX: We could turn this into a compiler test, but ia64 is
-	# the only one that matters, so this should be fine for now.
-	if is_crosscompile && [[ ${CTARGET} == ia64* ]] ; then
-		sed -i '1i+link-static = touch $@' config.make
-	fi
-
-	# If we're trying to migrate between ABI sets, we need
-	# to lie and use a local copy of gcc.  Like if the system
-	# is built with MULTILIB_ABIS="amd64 x86" but we want to
-	# add x32 to it, gcc/glibc don't yet support x32.
-	#
-	if [[ -n ${GCC_BOOTSTRAP_VER} ]] && use multilib ; then
-		echo 'main(){}' > "${T}"/test.c
-		if ! $(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS} "${T}"/test.c -Wl,-emain -lgcc 2>/dev/null ; then
-			sed -i -e '/^CC = /s:$: -B$(objdir)/../'"gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}/${ABI}:" config.make || die
-		fi
-	fi
-}
-
-glibc_headers_configure() {
-	export ABI=default
-	cros_use_gcc
-	local builddir=$(builddir "headers")
-	mkdir -p "${builddir}"
-	cd "${builddir}"
-
-	# if we don't have a compiler yet, we can't really test it now ...
-	# hopefully they don't affect header generation, so let's hope for
-	# the best here ...
-	local v vars=(
-		ac_cv_header_cpuid_h=yes
-		libc_cv_{386,390,alpha,arm,hppa,ia64,mips,{powerpc,sparc}{,32,64},sh,x86_64}_tls=yes
-		libc_cv_asm_cfi_directives=yes
-		libc_cv_broken_visibility_attribute=no
-		libc_cv_c_cleanup=yes
-		libc_cv_compiler_powerpc64le_binary128_ok=yes
-		libc_cv_forced_unwind=yes
-		libc_cv_gcc___thread=yes
-		libc_cv_mlong_double_128=yes
-		libc_cv_mlong_double_128ibm=yes
-		libc_cv_ppc_machine=yes
-		libc_cv_ppc_rel16=yes
-		libc_cv_predef_fortify_source=no
-		libc_cv_target_power8_ok=yes
-		libc_cv_visibility_attribute=yes
-		libc_cv_z_combreloc=yes
-		libc_cv_z_execstack=yes
-		libc_cv_z_initfirst=yes
-		libc_cv_z_nodelete=yes
-		libc_cv_z_nodlopen=yes
-		libc_cv_z_relro=yes
-		libc_mips_abi=${ABI}
-		libc_mips_float=$([[ $(tc-is-softfloat) == "yes" ]] && echo soft || echo hard)
-		# These libs don't have configure flags.
-		ac_cv_lib_audit_audit_log_user_avc_message=no
-		ac_cv_lib_cap_cap_init=no
-	)
-
-	einfo "Forcing cached settings:"
-	for v in "${vars[@]}" ; do
-		einfo " ${v}"
-		export ${v}
-	done
-
-	local headers_only_arch_CPPFLAGS=()
-
-	# Blow away some random CC settings that screw things up. #550192
-	if [[ -d ${S}/sysdeps/mips ]]; then
-		pushd "${S}"/sysdeps/mips >/dev/null
-		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=32:' mips32/Makefile mips64/n32/Makefile || die
-		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=64:' mips64/n64/Makefile || die
-
-		# Force the mips ABI to the default.  This is OK because the set of
-		# installed headers in this phase is the same between the 3 ABIs.
-		# If this ever changes, this hack will break, but that's unlikely
-		# as glibc discourages that behavior.
-		# https://crbug.com/647033
-		sed -i -e 's:abiflag=.*:abiflag=_ABIO32:' preconfigure || die
-
-		popd >/dev/null
-	fi
-
-	case ${CTARGET} in
-	riscv*)
-		# RISC-V interrogates the compiler to determine which target to
-		# build.  If building the headers then we don't strictly need a
-		# RISC-V compiler, so the built-in definitions that are provided
-		# along with all RISC-V compiler might not exist.  This causes
-		# glibc's RISC-V preconfigure script to blow up.  Since we're just
-		# building the headers any value will actually work here, so just
-		# pick the standard one (rv64g/lp64d) to make the build scripts
-		# happy for now -- the headers are all the same anyway so it
-		# doesn't matter.
-		headers_only_arch_CPPFLAGS+=(
-			-D__riscv_xlen=64
-			-D__riscv_flen=64
-			-D__riscv_float_abi_double=1
-			-D__riscv_atomic=1
-		) ;;
-	esac
-
-	local myconf=()
-	myconf+=(
-		--disable-sanity-checks
-		--enable-hacker-mode
-		--without-cvs
-		--disable-werror
-		--enable-bind-now
-		--build=${CBUILD_OPT:-${CBUILD}}
-		--host=${CTARGET_OPT:-${CTARGET}}
-		--with-headers=$(alt_build_headers)
-		--prefix="${EPREFIX}/usr"
-		${EXTRA_ECONF}
-	)
-
-	# Nothing is compiled here which would affect the headers for the target.
-	# So forcing CC/CFLAGS is sane.
-	local headers_only_CC=$(tc-getBUILD_CC)
-	local headers_only_CFLAGS="-O1 -pipe"
-	local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE ${headers_only_arch_CPPFLAGS[*]}"
-	local headers_only_LDFLAGS=""
-	set -- "${S}"/configure "${myconf[@]}"
-	echo \
-		"CC=${headers_only_CC}" \
-		"CFLAGS=${headers_only_CFLAGS}" \
-		"CPPFLAGS=${headers_only_CPPFLAGS}" \
-		"LDFLAGS=${headers_only_LDFLAGS}" \
-		"$@"
-	CC=${headers_only_CC} \
-	CFLAGS=${headers_only_CFLAGS} \
-	CPPFLAGS=${headers_only_CPPFLAGS} \
-	LDFLAGS="" \
-	"$@" || die "failed to configure glibc"
-}
-
-do_src_configure() {
-	if just_headers ; then
-		glibc_headers_configure
-	else
-		glibc_do_configure nptl
-	fi
-}
-
-src_configure() {
-	EXTRA_ECONF+=" --with-bugurl=http://crbug.com/new"
-	foreach_abi do_src_configure
-}
-
-do_src_compile() {
-	emake -C "$(builddir nptl)" || die "make nptl for ${ABI} failed"
-}
-
-src_compile() {
-	if just_headers ; then
-		return
-	fi
-
-	foreach_abi do_src_compile
-}
-
-glibc_src_test() {
-	cd "$(builddir nptl)"
-	emake check
-}
-
-do_src_test() {
-	local ret=0
-
-	glibc_src_test
-	: $(( ret |= $? ))
-
-	return ${ret}
-}
-
-src_test() {
-	if just_headers ; then
-		return
-	fi
-
-	# Give tests more time to complete.
-	export TIMEOUTFACTOR=5
-
-	foreach_abi do_src_test || die "tests failed"
-}
-
-run_locale_gen() {
-	# if the host locales.gen contains no entries, we'll install everything
-	local root="$1"
-	local locale_list="${root}/etc/locale.gen"
-	if [[ -z $(locale-gen --list --config "${locale_list}") ]] ; then
-		ewarn "Generating all locales; edit /etc/locale.gen to save time/space"
-		locale_list="${root}/usr/share/i18n/SUPPORTED"
-	fi
-
-	locale-gen --jobs $(makeopts_jobs) --config "${locale_list}" \
-		--destdir "${root}"
-}
-
-glibc_do_src_install() {
-	local builddir=$(builddir nptl)
-	cd "${builddir}"
-
-	emake install_root="${D}$(alt_prefix)" install || die
-
-	# This version (2.26) provides some compatibility libraries for the NIS/NIS+ support
-	# which come without headers etc. Only needed for binary packages since the
-	# external net-libs/libnsl has increased soversion. Keep only versioned libraries.
-	find "${D}" -name "libnsl.a" -delete
-	find "${D}" -name "libnsl.so" -delete
-
-	# Normally upstream_pv is ${PV}. Live ebuilds are exception, there we need
-	# to infer upstream version:
-	# '#define VERSION "2.26.90"' -> '2.26.90'
-	local upstream_pv=$(sed -n -r 's/#define VERSION "(.*)"/\1/p' "${S}"/version.h)
-
-	if [[ -e ${ED}$(alt_usrlibdir)/libm-${upstream_pv}.a ]] ; then
-		# Move versioned .a file out of libdir to evade portage QA checks
-		# instead of using gen_usr_ldscript(). We fix ldscript as:
-		# "GROUP ( /usr/lib64/libm-<pv>.a ..." -> "GROUP ( /usr/lib64/glibc-<pv>/libm-<pv>.a ..."
-		sed -i "s@\(libm-${upstream_pv}.a\)@${P}/\1@" "${ED}"$(alt_usrlibdir)/libm.a || die
-		dodir $(alt_usrlibdir)/${P}
-		mv "${ED}"$(alt_usrlibdir)/libm-${upstream_pv}.a "${ED}"$(alt_usrlibdir)/${P}/libm-${upstream_pv}.a || die
-	fi
-
-	if is_crosscompile ; then
-		# punt all the junk not needed by a cross-compiler
-		cd "${D}"/usr/${CTARGET} || die
-		rm -rf ./{,usr/}{etc,share} ./{,usr/}*/misc
-
-		# Remove all executables except getent, ldd, and ldconfig.
-		# See http://crosbug.com/1570
-		find ./usr/bin -name getent -o -name ldd -o -type f -exec rm {} ';'
-		find ./sbin -name ldconfig -o -type f -exec rm {} ';'
-		rm -rf ./usr/sbin
-	fi
-
-	# We'll take care of the cache ourselves
-	rm -f "${ED}"/etc/ld.so.cache
-
-	# Everything past this point just needs to be done once ...
-	is_final_abi || return 0
-
-	# Make sure the non-native interp can be found on multilib systems even
-	# if the main library set isn't installed into the right place.  Maybe
-	# we should query the active gcc for info instead of hardcoding it ?
-	local i ldso_abi ldso_name
-	local ldso_abi_list=(
-		# x86
-		amd64   /lib64/ld-linux-x86-64.so.2
-		x32     /libx32/ld-linux-x32.so.2
-		x86     /lib/ld-linux.so.2
-		# mips
-		o32     /lib/ld.so.1
-		n32     /lib32/ld.so.1
-		n64     /lib64/ld.so.1
-		# powerpc
-		ppc     /lib/ld.so.1
-		ppc64   /lib64/ld64.so.1
-		# s390
-		s390    /lib/ld.so.1
-		s390x   /lib/ld64.so.1
-		# sparc
-		sparc32 /lib/ld-linux.so.2
-		sparc64 /lib64/ld-linux.so.2
-	)
-	case $(tc-endian) in
-	little)
-		ldso_abi_list+=(
-			# arm
-			arm64   /lib/ld-linux-aarch64.so.1
-		)
-		;;
-	big)
-		ldso_abi_list+=(
-			# arm
-			arm64   /lib/ld-linux-aarch64_be.so.1
-		)
-		;;
-	esac
-	if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
-		dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
-	fi
-	for (( i = 0; i < ${#ldso_abi_list[@]}; i += 2 )) ; do
-		ldso_abi=${ldso_abi_list[i]}
-		has ${ldso_abi} $(get_install_abis) || continue
-
-		ldso_name="$(alt_prefix)${ldso_abi_list[i+1]}"
-		if [[ ! -L ${ED}/${ldso_name} && ! -e ${ED}/${ldso_name} ]] ; then
-			dosym ../$(get_abi_LIBDIR ${ldso_abi})/${ldso_name##*/} ${ldso_name}
-		fi
-	done
-
-	# With devpts under Linux mounted properly, we do not need the pt_chown
-	# binary to be setuid.  This is because the default owners/perms will be
-	# exactly what we want.
-	if ! use suid ; then
-		find "${ED}" -name pt_chown -exec chmod -s {} +
-	fi
-
-	#################################################################
-	# EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY #
-	# Make sure we install some symlink hacks so that when we build
-	# a 2nd stage cross-compiler, gcc finds the target system
-	# headers correctly.  See gcc/doc/gccinstall.info
-	if is_crosscompile ; then
-		# We need to make sure that /lib and /usr/lib always exists.
-		# gcc likes to use relative paths to get to its multilibs like
-		# /usr/lib/../lib64/.  So while we don't install any files into
-		# /usr/lib/, we do need it to exist.
-		cd "${ED}"$(alt_libdir)/..
-		[[ -e lib ]] || mkdir lib
-		cd "${ED}"$(alt_usrlibdir)/..
-		[[ -e lib ]] || mkdir lib
-
-		cd "${ED}"${alt_libdir} || die
-		rm -rf ./{,usr/}{etc,share} ./{,usr/}*/misc
-
-		# Remove all executables except getent, ldd, and ldconfig.
-		# See http://crosbug.com/1570
-		find ./usr/bin -name getent -o -name ldd -o -type f -exec rm {} ';'
-		find ./sbin -name ldconfig -o -type f -exec rm {} ';'
-		rm -rf ./usr/sbin
-
-		dosym usr/include $(alt_prefix)/sys-include
-		return 0
-	fi
-
-	# Files for Debian-style locale updating
-	dodir /usr/share/i18n
-	sed \
-		-e "/^#/d" \
-		-e "/SUPPORTED-LOCALES=/d" \
-		-e "s: \\\\::g" -e "s:/: :g" \
-		"${S}"/localedata/SUPPORTED > "${ED}"/usr/share/i18n/SUPPORTED \
-		|| die "generating /usr/share/i18n/SUPPORTED failed"
-	cd "${WORKDIR}"/extra/locale
-	dosbin locale-gen
-	doman *.[0-8]
-	insinto /etc
-	doins locale.gen
-
-	# Make sure all the ABI's can find the locales and so we only
-	# have to generate one set
-	local a
-	keepdir /usr/$(get_libdir)/locale
-	for a in $(get_install_abis) ; do
-		if [[ ! -e ${ED}/usr/$(get_abi_LIBDIR ${a})/locale ]] ; then
-			dosym ../$(get_libdir)/locale /usr/$(get_abi_LIBDIR ${a})/locale
-		fi
-	done
-
-	cd "${S}"
-
-	# Install misc network config files
-	insinto /etc
-	doins nscd/nscd.conf posix/gai.conf nss/nsswitch.conf
-	doins "${WORKDIR}"/extra/etc/*.conf
-
-	if use nscd ; then
-		doinitd "$(prefixify_ro "${WORKDIR}"/extra/etc/nscd)"
-
-		local nscd_args=(
-			-e "s:@PIDFILE@:$(strings "${ED}"/usr/sbin/nscd | grep nscd.pid):"
-		)
-
-		sed -i "${nscd_args[@]}" "${ED}"/etc/init.d/nscd
-
-		systemd_dounit nscd/nscd.service
-		systemd_newtmpfilesd nscd/nscd.tmpfiles nscd.conf
-	else
-		# Do this since extra/etc/*.conf above might have nscd.conf.
-		rm -f "${ED}"/etc/nscd.conf
-	fi
-
-	echo 'LDPATH="include ld.so.conf.d/*.conf"' > "${T}"/00glibc
-	doenvd "${T}"/00glibc
-
-	for d in BUGS ChangeLog CONFORMANCE FAQ NEWS NOTES PROJECTS README* ; do
-		[[ -s ${d} ]] && dodoc ${d}
-	done
-	dodoc -r ChangeLog.old
-
-	# Prevent overwriting of the /etc/localtime symlink.  We'll handle the
-	# creation of the "factory" symlink in pkg_postinst().
-	rm -f "${ED}"/etc/localtime
-
-	# Generate all locales if this is a native build as locale generation
-	if use compile-locales && ! is_crosscompile ; then
-		run_locale_gen "${ED}"
-	fi
-}
-
-glibc_headers_install() {
-	local builddir=$(builddir "headers")
-	cd "${builddir}"
-	emake install_root="${D}$(alt_prefix)" install-headers
-
-	insinto $(alt_headers)/gnu
-	doins "${S}"/include/gnu/stubs.h
-
-	# Make sure we install the sys-include symlink so that when
-	# we build a 2nd stage cross-compiler, gcc finds the target
-	# system headers correctly.  See gcc/doc/gccinstall.info
-	dosym usr/include $(alt_prefix)/sys-include
-}
-
-src_strip() {
-	# gdb is lame and requires some debugging information to remain in
-	# libpthread, so we need to strip it by hand.  libthread_db makes no
-	# sense stripped as it is only used when debugging.
-	local pthread=$(has splitdebug ${FEATURES} && echo "libthread_db" || echo "lib{pthread,thread_db}")
-	env \
-		-uRESTRICT \
-		CHOST=${CTARGET} \
-		STRIP_MASK="/*/{,tls/}${pthread}*" \
-		prepallstrip
-	# if user has stripping enabled and does not have split debug turned on,
-	# then leave the debugging sections in libpthread.
-	if ! has nostrip ${FEATURES} && ! has splitdebug ${FEATURES} ; then
-		${STRIP:-${CTARGET}-strip} --strip-debug "${ED}"$(alt_prefix)/*/libpthread-*.so
-	fi
-}
-
-src_install() {
-	if just_headers ; then
-		export ABI=default
-		glibc_headers_install
-		return
-	fi
-
-	foreach_abi glibc_do_src_install
-	src_strip
-}
-
-# Simple test to make sure our new glibc isn't completely broken.
-# Make sure we don't test with statically built binaries since
-# they will fail.  Also, skip if this glibc is a cross compiler.
-#
-# If coreutils is built with USE=multicall, some of these files
-# will just be wrapper scripts, not actual ELFs we can test.
-glibc_sanity_check() {
-	cd / #228809
-
-	# We enter ${ED} so to avoid trouble if the path contains
-	# special characters; for instance if the path contains the
-	# colon character (:), then the linker will try to split it
-	# and look for the libraries in an unexpected place. This can
-	# lead to unsafe code execution if the generated prefix is
-	# within a world-writable directory.
-	# (e.g. /var/tmp/portage:${HOSTNAME})
-	pushd "${ED}"/$(get_libdir) >/dev/null
-
-	local x striptest
-	for x in cal date env free ls true uname uptime ; do
-		x=$(type -p ${x})
-		[[ -z ${x} || ${x} != ${EPREFIX}/* ]] && continue
-		striptest=$(LC_ALL="C" file -L ${x} 2>/dev/null) || continue
-		case ${striptest} in
-		*"statically linked"*) continue;;
-		*"ASCII text"*) continue;;
-		esac
-		# We need to clear the locale settings as the upgrade might want
-		# incompatible locale data.  This test is not for verifying that.
-		LC_ALL=C \
-		./ld-*.so --library-path . ${x} > /dev/null \
-			|| die "simple run test (${x}) failed"
-	done
-
-	popd >/dev/null
-}
-
-pkg_preinst() {
-	# nothing to do if just installing headers
-	just_headers && return
-
-	# prepare /etc/ld.so.conf.d/ for files
-	mkdir -p "${EROOT}"/etc/ld.so.conf.d
-
-	# Default /etc/hosts.conf:multi to on for systems with small dbs.
-	if [[ $(wc -l < "${EROOT}"/etc/hosts) -lt 1000 ]] ; then
-		sed -i '/^multi off/s:off:on:' "${ED}"/etc/host.conf
-		einfo "Defaulting /etc/host.conf:multi to on"
-	fi
-
-	[[ ${ROOT} != "/" ]] && return 0
-	[[ -d ${ED}/$(get_libdir) ]] || return 0
-	[[ -z ${BOOTSTRAP_RAP} ]] && glibc_sanity_check
-}
-
-pkg_postinst() {
-	# nothing to do if just installing headers
-	just_headers && return
-
-	if ! tc-is-cross-compiler && [[ -x ${EROOT}/usr/sbin/iconvconfig ]] ; then
-		# Generate fastloading iconv module configuration file.
-		"${EROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}"
-	fi
-
-	if ! is_crosscompile && [[ ${ROOT} == "/" ]] ; then
-		# Reload init ... if in a chroot or a diff init package, ignore
-		# errors from this step #253697
-		/sbin/telinit U 2>/dev/null
-
-		use compile-locales || run_locale_gen "${EROOT}"
-	fi
-
-	# Check for sanity of /etc/nsswitch.conf, take 2
-	if [[ -e ${EROOT}/etc/nsswitch.conf ]] && ! has_version sys-auth/libnss-nis ; then
-		local entry
-		for entry in passwd group shadow; do
-			if egrep -q "^[ \t]*${entry}:.*nis" "${EROOT}"/etc/nsswitch.conf; then
-				ewarn ""
-				ewarn "Your ${EROOT}/etc/nsswitch.conf uses NIS. Support for that has been"
-				ewarn "removed from glibc and is now provided by the package"
-				ewarn "  sys-auth/libnss-nis"
-				ewarn "Install it now to keep your NIS setup working."
-				ewarn ""
-			fi
-		done
-	fi
-}
diff --git a/sys-libs/glibc/glibc-2.32-r14.ebuild b/sys-libs/glibc/glibc-2.32-r14.ebuild
new file mode 100644
index 0000000..b25e2fe
--- /dev/null
+++ b/sys-libs/glibc/glibc-2.32-r14.ebuild
@@ -0,0 +1,1551 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6,7,8,9} )
+
+inherit python-any-r1 prefix eutils toolchain-funcs flag-o-matic gnuconfig \
+	multilib systemd multiprocessing
+
+DESCRIPTION="GNU libc C library"
+HOMEPAGE="https://www.gnu.org/software/libc/"
+LICENSE="LGPL-2.1+ BSD HPND ISC inner-net rc PCRE"
+SLOT="2.2"
+
+EMULTILIB_PKG="true"
+
+# Gentoo patchset (ignored for live ebuilds)
+PATCH_VER=8
+PATCH_DEV=dilfridge
+
+if [[ ${PV} == 9999* ]]; then
+	inherit git-r3
+else
+	KEYWORDS="*"
+	SRC_URI="mirror://gnu/glibc/${P}.tar.xz"
+	SRC_URI+=" https://dev.gentoo.org/~${PATCH_DEV}/distfiles/${P}-patches-${PATCH_VER}.tar.xz"
+	SRC_URI+=" riscv? ( https://dev.gentoo.org/~dilfridge/distfiles/backport-rv32.txz )"
+fi
+
+RELEASE_VER=${PV}
+
+GCC_BOOTSTRAP_VER=20201208
+
+LOCALE_GEN_VER=2.10
+
+SRC_URI+=" https://gitweb.gentoo.org/proj/locale-gen.git/snapshot/locale-gen-${LOCALE_GEN_VER}.tar.gz"
+SRC_URI+=" multilib? ( https://dev.gentoo.org/~dilfridge/distfiles/gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz )"
+
+IUSE="audit caps cet compile-locales +crypt custom-cflags doc gd headers-only +multiarch multilib nscd profile selinux +ssp +static-libs static-pie suid systemtap test vanilla crosscompile_opts_headers-only"
+
+# Minimum kernel version that glibc requires
+MIN_KERN_VER="3.2.0"
+
+# Here's how the cross-compile logic breaks down ...
+#  CTARGET - machine that will target the binaries
+#  CHOST   - machine that will host the binaries
+#  CBUILD  - machine that will build the binaries
+# If CTARGET != CHOST, it means you want a libc for cross-compiling.
+# If CHOST != CBUILD, it means you want to cross-compile the libc.
+#  CBUILD = CHOST = CTARGET    - native build/install
+#  CBUILD != (CHOST = CTARGET) - cross-compile a native build
+#  (CBUILD = CHOST) != CTARGET - libc for cross-compiler
+#  CBUILD != CHOST != CTARGET  - cross-compile a libc for a cross-compiler
+# For install paths:
+#  CHOST = CTARGET  - install into /
+#  CHOST != CTARGET - install into /usr/CTARGET/
+#
+export CBUILD=${CBUILD:-${CHOST}}
+export CTARGET=${CTARGET:-${CHOST}}
+if [[ ${CTARGET} == ${CHOST} ]] ; then
+	if [[ ${CATEGORY} == cross-* ]] ; then
+		export CTARGET=${CATEGORY#cross-}
+	fi
+fi
+
+# We need a new-enough binutils/gcc to match upstream baseline.
+# Also we need to make sure our binutils/gcc supports TLS,
+# and that gcc already contains the hardened patches.
+# Lastly, let's avoid some openssh nastiness, bug 708224, as
+# convenience to our users.
+
+# gzip, grep, awk are needed by locale-gen, bug 740750
+
+BDEPEND="
+	${PYTHON_DEPS}
+	>=app-misc/pax-utils-0.1.10
+	sys-devel/bison
+	doc? ( sys-apps/texinfo )
+	!compile-locales? (
+		app-arch/gzip
+		sys-apps/grep
+		virtual/awk
+	)
+"
+COMMON_DEPEND="
+	gd? ( media-libs/gd:2= )
+	nscd? ( selinux? (
+		audit? ( sys-process/audit )
+		caps? ( sys-libs/libcap )
+	) )
+	suid? ( caps? ( sys-libs/libcap ) )
+	selinux? ( sys-libs/libselinux )
+	systemtap? ( dev-util/systemtap )
+	!<net-misc/openssh-8.1_p1-r2
+"
+DEPEND="${COMMON_DEPEND}
+	compile-locales? (
+		app-arch/gzip
+		sys-apps/grep
+		virtual/awk
+	)
+	test? ( >=net-dns/libidn2-2.3.0 )
+"
+PDEPEND="${COMMON_DEPEND}
+	app-arch/gzip
+	sys-apps/grep
+	virtual/awk
+	sys-apps/gentoo-functions
+"
+
+RESTRICT="!test? ( test )"
+
+if [[ ${CATEGORY} == cross-* ]] ; then
+	BDEPEND+=" !headers-only? (
+		!crosscompile_opts_headers-only? (
+			>=${CATEGORY}/binutils-2.24
+			>=${CATEGORY}/gcc-4.9
+			)
+	)"
+	[[ ${CATEGORY} == *-linux* ]] && DEPEND+=" ${CATEGORY}/linux-headers"
+else
+	BDEPEND+="
+		>=sys-devel/binutils-2.24
+		>=sys-devel/gcc-6
+	"
+	DEPEND+=" virtual/os-headers "
+	RDEPEND+="
+		>=net-dns/libidn2-2.3.0
+		vanilla? ( !sys-libs/timezone-data )
+	"
+	PDEPEND+=" !vanilla? ( sys-libs/timezone-data )"
+fi
+
+# Ignore tests allowlisted below
+GENTOO_GLIBC_XFAIL_TESTS="${GENTOO_GLIBC_XFAIL_TESTS:-yes}"
+
+# The following tests fail due to the Gentoo build system and are thus
+# executed but ignored:
+XFAIL_TEST_LIST=(
+	# 9) Failures of unknown origin
+	tst-latepthread
+
+	# buggy test, assumes /dev/ and /dev/null on a single filesystem
+	# 'mount --bind /dev/null /chroot/dev/null' breaks it.
+	# https://sourceware.org/PR25909
+	tst-support_descriptors
+
+	# Flaky test, known to fail occasionally:
+	# https://sourceware.org/PR19329
+	# https://bugs.gentoo.org/719674#c12
+	tst-stack4
+)
+
+#
+# Small helper functions
+#
+
+is_crosscompile() {
+	[[ ${CHOST} != ${CTARGET} ]]
+}
+
+just_headers() {
+	is_crosscompile && ( use headers-only || use crosscompile_opts_headers-only )
+}
+
+alt_prefix() {
+	is_crosscompile && echo /usr/${CTARGET}
+}
+
+# This prefix is applicable to CHOST when building against this
+# glibc. It is baked into the library at configure time.
+host_eprefix() {
+	is_crosscompile || echo "${EPREFIX}"
+}
+
+# This prefix is applicable to CBUILD when building against this
+# glibc. It determines the destination path at install time.
+build_eprefix() {
+	is_crosscompile && echo "${EPREFIX}"
+}
+
+# We need to be able to set alternative headers for compiling for non-native
+# platform. Will also become useful for testing kernel-headers without screwing
+# up the whole system.
+alt_headers() {
+	echo ${ALT_HEADERS:=$(alt_prefix)/usr/include}
+}
+
+alt_build_headers() {
+	if [[ -z ${ALT_BUILD_HEADERS} ]] ; then
+		ALT_BUILD_HEADERS="$(host_eprefix)$(alt_headers)"
+		if tc-is-cross-compiler ; then
+			ALT_BUILD_HEADERS=${SYSROOT}$(alt_headers)
+			if [[ ! -e ${ALT_BUILD_HEADERS}/linux/version.h ]] ; then
+				local header_path=$(echo '#include <linux/version.h>' | $(tc-getCPP ${CTARGET}) ${CFLAGS} 2>&1 | grep -o '[^"]*linux/version.h')
+				ALT_BUILD_HEADERS=${header_path%/linux/version.h}
+			fi
+		fi
+	fi
+	echo "${ALT_BUILD_HEADERS}"
+}
+
+alt_libdir() {
+	echo $(alt_prefix)/$(get_libdir)
+}
+alt_usrlibdir() {
+	echo $(alt_prefix)/usr/$(get_libdir)
+}
+
+builddir() {
+	echo "${WORKDIR}/build-${ABI}-${CTARGET}-$1"
+}
+
+do_compile_test() {
+	local ret save_cflags=${CFLAGS}
+	CFLAGS+=" $1"
+	shift
+
+	pushd "${T}" >/dev/null
+
+	rm -f glibc-test*
+	printf '%b' "$*" > glibc-test.c
+
+	# Most of the time CC is already set, but not in early sanity checks.
+	nonfatal emake glibc-test CC="${CC-$(tc-getCC ${CTARGET})}"
+	ret=$?
+
+	popd >/dev/null
+
+	CFLAGS=${save_cflags}
+	return ${ret}
+}
+
+do_run_test() {
+	local ret
+
+	if [[ ${MERGE_TYPE} == "binary" ]] ; then
+		# ignore build failures when installing a binary package #324685
+		do_compile_test "" "$@" 2>/dev/null || return 0
+	else
+		if ! do_compile_test "" "$@" ; then
+			ewarn "Simple build failed ... assuming this is desired #324685"
+			return 0
+		fi
+	fi
+
+	pushd "${T}" >/dev/null
+
+	./glibc-test
+	ret=$?
+	rm -f glibc-test*
+
+	popd >/dev/null
+
+	return ${ret}
+}
+
+setup_target_flags() {
+	# This largely mucks with compiler flags.  None of which should matter
+	# when building up just the headers.
+	just_headers && return 0
+
+	# Needed as workaround to fix:
+	# http://code.google.com/p/chromium-os/issues/detail?id=22373
+	# Can be removed when we emerge glibc to the target:
+	# http://code.google.com/p/chromium-os/issues/detail?id=20792
+	append-cflags "-ggdb"
+
+	# ChromiumOS: Need to unset the SYSROOT value so that the
+	# compiler uses the default sysroot when building glibc. This
+	# is because the glibc startup objects are needed to configure
+	# glibc. We don't want to bootstrap libc again.
+	export SYSROOT=""
+
+	case $(tc-arch) in
+		x86)
+			# -march needed for #185404 #199334
+			# TODO: When creating the first glibc cross-compile, this test will
+			# always fail as it does a full link which in turn requires glibc.
+			# Probably also applies when changing multilib profile settings (e.g.
+			# enabling x86 when the profile was amd64-only previously).
+			# We could change main to _start and pass -nostdlib here so that we
+			# only test the gcc code compilation.  Or we could do a compile and
+			# then look for the symbol via scanelf.
+			if ! do_compile_test "" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n'; then
+				local t=${CTARGET_OPT:-${CTARGET}}
+				t=${t%%-*}
+				filter-flags '-march=*'
+				export CFLAGS="-march=${t} ${CFLAGS}"
+				einfo "Auto adding -march=${t} to CFLAGS #185404"
+			fi
+		;;
+		amd64)
+			# -march needed for #185404 #199334
+			# TODO: See cross-compile issues listed above for x86.
+			[[ ${ABI} == x86 ]] &&
+			if ! do_compile_test "${CFLAGS_x86}" 'void f(int i, void *p) {if (__sync_fetch_and_add(&i, 1)) f(i, p);}\nint main(){return 0;}\n'; then
+				local t=${CTARGET_OPT:-${CTARGET}}
+				t=${t%%-*}
+				# Normally the target is x86_64-xxx, so turn that into the -march that
+				# gcc actually accepts. #528708
+				[[ ${t} == "x86_64" ]] && t="x86-64"
+				filter-flags '-march=*'
+				# ugly, ugly, ugly.  ugly.
+				CFLAGS_x86=$(CFLAGS=${CFLAGS_x86} filter-flags '-march=*'; echo "${CFLAGS}")
+				export CFLAGS_x86="${CFLAGS_x86} -march=${t}"
+				einfo "Auto adding -march=${t} to CFLAGS_x86 #185404 (ABI=${ABI})"
+			fi
+		;;
+		mips)
+			# The mips abi cannot support the GNU style hashes. #233233
+			filter-ldflags -Wl,--hash-style=gnu -Wl,--hash-style=both
+		;;
+		ppc|ppc64)
+			# Many arch-specific implementations do not work on ppc with
+			# cache-block not equal to 128 bytes. This breaks memset:
+			#   https://sourceware.org/PR26522
+			#   https://bugs.gentoo.org/737996
+			# Use default -mcpu=. For ppc it means non-multiarch setup.
+			filter-flags '-mcpu=*'
+		;;
+		sparc)
+			# Both sparc and sparc64 can use -fcall-used-g6.  -g7 is bad, though.
+			filter-flags "-fcall-used-g7"
+			append-flags "-fcall-used-g6"
+
+			local cpu
+			case ${CTARGET} in
+			sparc64-*)
+				cpu="sparc64"
+				case $(get-flag mcpu) in
+				v9)
+					# We need to force at least v9a because the base build doesn't
+					# work with just v9.
+					# https://sourceware.org/bugzilla/show_bug.cgi?id=19477
+					append-flags "-Wa,-xarch=v9a"
+					;;
+				esac
+				;;
+			sparc-*)
+				case $(get-flag mcpu) in
+				v8|supersparc|hypersparc|leon|leon3)
+					cpu="sparcv8"
+					;;
+				*)
+					cpu="sparcv9"
+					;;
+				esac
+			;;
+			esac
+			[[ -n ${cpu} ]] && CTARGET_OPT="${cpu}-${CTARGET#*-}"
+		;;
+	esac
+}
+
+setup_flags() {
+	# Glibc controls its own optimization settings, so this would be a nop
+	# if we were to run it. Leave it here anyway as a grep-friendly marker.
+	# cros_optimize_package_for_speed
+
+	# Make sure host make.conf doesn't pollute us
+	if is_crosscompile || tc-is-cross-compiler ; then
+		CHOST=${CTARGET} strip-unsupported-flags
+	fi
+
+	# Store our CFLAGS because it's changed depending on which CTARGET
+	# we are building when pulling glibc on a multilib profile
+	CFLAGS_BASE=${CFLAGS_BASE-${CFLAGS}}
+	CFLAGS=${CFLAGS_BASE}
+	CXXFLAGS_BASE=${CXXFLAGS_BASE-${CXXFLAGS}}
+	CXXFLAGS=${CXXFLAGS_BASE}
+	ASFLAGS_BASE=${ASFLAGS_BASE-${ASFLAGS}}
+	ASFLAGS=${ASFLAGS_BASE}
+
+	# Allow users to explicitly avoid flag sanitization via
+	# USE=custom-cflags.
+	if ! use custom-cflags; then
+		# Over-zealous CFLAGS can often cause problems.  What may work for one
+		# person may not work for another.  To avoid a large influx of bugs
+		# relating to failed builds, we strip most CFLAGS out to ensure as few
+		# problems as possible.
+		strip-flags
+		# Lock glibc at -O2; we want to be conservative here.
+		filter-flags '-O?'
+		append-flags -O2
+	fi
+	strip-unsupported-flags
+	filter-flags -m32 -m64 '-mabi=*'
+
+	# glibc aborts if rpath is set by LDFLAGS
+	filter-ldflags '-Wl,-rpath=*'
+
+	# #492892
+	filter-flags -frecord-gcc-switches
+
+	unset CBUILD_OPT CTARGET_OPT
+	if use multilib ; then
+		CTARGET_OPT=$(get_abi_CTARGET)
+		[[ -z ${CTARGET_OPT} ]] && CTARGET_OPT=$(get_abi_CHOST)
+	fi
+
+	setup_target_flags
+
+	if [[ -n ${CTARGET_OPT} && ${CBUILD} == ${CHOST} ]] && ! is_crosscompile; then
+		CBUILD_OPT=${CTARGET_OPT}
+	fi
+
+	# glibc's headers disallow -O0 and fail at build time:
+	#  include/libc-symbols.h:75:3: #error "glibc cannot be compiled without optimization"
+	replace-flags -O0 -O1
+
+	filter-flags '-fstack-protector*'
+}
+
+want_tls() {
+	# Archs that can use TLS (Thread Local Storage)
+	case $(tc-arch) in
+		x86)
+			# requires i486 or better #106556
+			[[ ${CTARGET} == i[4567]86* ]] && return 0
+			return 1
+		;;
+	esac
+	return 0
+}
+
+want__thread() {
+	want_tls || return 1
+
+	# For some reason --with-tls --with__thread is causing segfaults on sparc32.
+	[[ ${PROFILE_ARCH} == "sparc" ]] && return 1
+
+	[[ -n ${WANT__THREAD} ]] && return ${WANT__THREAD}
+
+	# only test gcc -- can't test linking yet
+	tc-has-tls -c ${CTARGET}
+	WANT__THREAD=$?
+
+	return ${WANT__THREAD}
+}
+
+use_multiarch() {
+	# Allow user to disable runtime arch detection in multilib.
+	use multiarch || return 1
+	# Make sure binutils is new enough to support indirect functions,
+	# #336792. This funky sed supports gold and bfd linkers.
+	local bver nver
+	bver=$($(tc-getLD ${CTARGET}) -v | sed -n -r '1{s:[^0-9]*::;s:^([0-9.]*).*:\1:;p}')
+	case $(tc-arch ${CTARGET}) in
+	amd64|x86) nver="2.20" ;;
+	arm)       nver="2.22" ;;
+	hppa)      nver="2.23" ;;
+	ppc|ppc64) nver="2.20" ;;
+	# ifunc support was added in 2.23, but glibc also needs
+	# machinemode which is in 2.24.
+	s390)      nver="2.24" ;;
+	sparc)     nver="2.21" ;;
+	*)         return 1 ;;
+	esac
+	ver_test ${bver} -ge ${nver}
+}
+
+# Setup toolchain variables that had historically been defined in the
+# profiles for these archs.
+setup_env() {
+	# silly users
+	unset LD_RUN_PATH
+	unset LD_ASSUME_KERNEL
+
+	if is_crosscompile || tc-is-cross-compiler ; then
+		multilib_env ${CTARGET_OPT:-${CTARGET}}
+
+		if ! use multilib ; then
+			MULTILIB_ABIS=${DEFAULT_ABI}
+		else
+			MULTILIB_ABIS=${MULTILIB_ABIS:-${DEFAULT_ABI}}
+		fi
+
+		# If the user has CFLAGS_<CTARGET> in their make.conf, use that,
+		# and fall back on CFLAGS.
+		local VAR=CFLAGS_${CTARGET//[-.]/_}
+		CFLAGS=${!VAR-${CFLAGS}}
+		einfo " $(printf '%15s' 'Manual CFLAGS:')   ${CFLAGS}"
+	fi
+
+	setup_flags
+
+	export ABI=${ABI:-${DEFAULT_ABI:-default}}
+
+	if just_headers ; then
+		# Avoid mixing host's CC and target's CFLAGS_${ABI}:
+		# At this bootstrap stage we have only binutils for
+		# target but not compiler yet.
+		einfo "Skip CC ABI injection. We can't use (cross-)compiler yet."
+		return 0
+	fi
+	local VAR=CFLAGS_${ABI}
+	# We need to export CFLAGS with abi information in them because glibc's
+	# configure script checks CFLAGS for some targets (like mips).  Keep
+	# around the original clean value to avoid appending multiple ABIs on
+	# top of each other.
+
+	# For ChromiumOS, the default compiler is clang, we need to set it to gcc.
+	: ${__GLIBC_CC:=$(tc-getCC ${CTARGET})}
+	export __GLIBC_CC CC="${__GLIBC_CC}"
+	cros_use_gcc
+	export CC="${CC} ${!VAR}"
+	einfo " $(printf '%15s' 'Manual CC:')   ${CC}"
+}
+
+foreach_abi() {
+	# For ChromiumOS, we need to unset __GLIBC_CC CC here. Otherwise
+	# we could not run sudo emerge sys-libs/glibc inside chroot.
+	unset __GLIBC_CC CC
+	setup_env
+
+	local ret=0
+	local abilist=""
+	if use multilib ; then
+		abilist=$(get_install_abis)
+	else
+		abilist=${DEFAULT_ABI}
+	fi
+	local -x ABI
+	for ABI in ${abilist:-default} ; do
+		setup_env
+		einfo "Running $1 for ABI ${ABI}"
+		$1
+		: $(( ret |= $? ))
+	done
+	return ${ret}
+}
+
+glibc_banner() {
+	local b="Gentoo ${PVR}"
+	[[ -n ${PATCH_VER} ]] && ! use vanilla && b+=" p${PATCH_VER}"
+	echo "${b}"
+}
+
+# The following Kernel version handling functions are mostly copied from portage
+# source. It's better not to use linux-info.eclass here since a) it adds too
+# much magic, see bug 326693 for some of the arguments, and b) some of the
+# functions are just not provided.
+
+g_get_running_KV() {
+	uname -r
+	return $?
+}
+
+g_KV_major() {
+	[[ -z $1 ]] && return 1
+	local KV=$@
+	echo "${KV%%.*}"
+}
+
+g_KV_minor() {
+	[[ -z $1 ]] && return 1
+	local KV=$@
+	KV=${KV#*.}
+	echo "${KV%%.*}"
+}
+
+g_KV_micro() {
+	[[ -z $1 ]] && return 1
+	local KV=$@
+	KV=${KV#*.*.}
+	echo "${KV%%[^[:digit:]]*}"
+}
+
+g_KV_to_int() {
+	[[ -z $1 ]] && return 1
+	local KV_MAJOR=$(g_KV_major "$1")
+	local KV_MINOR=$(g_KV_minor "$1")
+	local KV_MICRO=$(g_KV_micro "$1")
+	local KV_int=$(( KV_MAJOR * 65536 + KV_MINOR * 256 + KV_MICRO ))
+
+	# We make version 2.2.0 the minimum version we will handle as
+	# a sanity check ... if its less, we fail ...
+	if [[ ${KV_int} -ge 131584 ]] ; then
+		echo "${KV_int}"
+		return 0
+	fi
+	return 1
+}
+
+g_int_to_KV() {
+	local version=$1 major minor micro
+	major=$((version / 65536))
+	minor=$(((version % 65536) / 256))
+	micro=$((version % 256))
+	echo ${major}.${minor}.${micro}
+}
+
+eend_KV() {
+	[[ $(g_KV_to_int $1) -ge $(g_KV_to_int $2) ]]
+	eend $?
+}
+
+get_kheader_version() {
+	printf '#include <linux/version.h>\nLINUX_VERSION_CODE\n' | \
+	$(tc-getCPP ${CTARGET}) -I "$(build_eprefix)$(alt_build_headers)" - | \
+	tail -n 1
+}
+
+# We collect all sanity checks here. Consistency is not guranteed between
+# pkg_ and src_ phases, so we call this function both in pkg_pretend and in
+# src_unpack.
+sanity_prechecks() {
+	# CrOS makes sure these checks all pass.
+	return
+
+	# Prevent native builds from downgrading
+	if [[ ${MERGE_TYPE} != "buildonly" ]] && \
+		[[ -z ${ROOT} ]] && \
+		[[ ${CBUILD} == ${CHOST} ]] && \
+		[[ ${CHOST} == ${CTARGET} ]] ; then
+
+		# The high rev # is to allow people to downgrade between -r#
+		# versions. We want to block 2.20->2.19, but 2.20-r3->2.20-r2
+		# should be fine. Hopefully we never actually use a r# this
+		# high.
+		if has_version ">${CATEGORY}/${P}-r10000" ; then
+			eerror "Sanity check to keep you from breaking your system:"
+			eerror " Downgrading glibc is not supported and a sure way to destruction."
+			[[ ${I_ALLOW_TO_BREAK_MY_SYSTEM} = yes ]] || die "Aborting to save your system."
+		fi
+
+		if ! do_run_test '#include <unistd.h>\n#include <sys/syscall.h>\nint main(){return syscall(1000)!=-1;}\n' ; then
+			eerror "Your old kernel is broken. You need to update it to a newer"
+			eerror "version as syscall(<bignum>) will break. See bug 279260."
+			die "Old and broken kernel."
+		fi
+	fi
+
+	# Users have had a chance to phase themselves, time to give em the boot
+	if [[ -e ${EROOT}/etc/locale.gen ]] && [[ -e ${EROOT}/etc/locales.build ]] ; then
+		eerror "You still haven't deleted ${EROOT}/etc/locales.build."
+		eerror "Do so now after making sure ${EROOT}/etc/locale.gen is kosher."
+		die "Lazy upgrader detected"
+	fi
+
+	if [[ ${CTARGET} == i386-* ]] ; then
+		eerror "i386 CHOSTs are no longer supported."
+		eerror "Chances are you don't actually want/need i386."
+		eerror "Please read https://www.gentoo.org/doc/en/change-chost.xml"
+		die "Please fix your CHOST"
+	fi
+
+	if [[ -e /proc/xen ]] && [[ $(tc-arch) == "x86" ]] && ! is-flag -mno-tls-direct-seg-refs ; then
+		ewarn "You are using Xen but don't have -mno-tls-direct-seg-refs in your CFLAGS."
+		ewarn "This will result in a 50% performance penalty when running with a 32bit"
+		ewarn "hypervisor, which is probably not what you want."
+	fi
+
+	# Check for sanity of /etc/nsswitch.conf
+	if [[ -e ${EROOT}/etc/nsswitch.conf ]] ; then
+		local entry
+		for entry in passwd group shadow; do
+			if ! egrep -q "^[ \t]*${entry}:.*files" "${EROOT}"/etc/nsswitch.conf; then
+				eerror "Your ${EROOT}/etc/nsswitch.conf is out of date."
+				eerror "Please make sure you have 'files' entries for"
+				eerror "'passwd:', 'group:' and 'shadow:' databases."
+				eerror "For more details see:"
+				eerror "  https://wiki.gentoo.org/wiki/Project:Toolchain/nsswitch.conf_in_glibc-2.26"
+				die "nsswitch.conf has no 'files' provider in '${entry}'."
+			fi
+		done
+	fi
+
+	# ABI-specific checks follow here. Hey, we have a lot more specific conditions that
+	# we test for...
+	if ! is_crosscompile ; then
+		if use amd64 && use multilib && [[ ${MERGE_TYPE} != "binary" ]] ; then
+			ebegin "Checking that IA32 emulation is enabled in the running kernel"
+			echo 'int main(){return 0;}' > "${T}/check-ia32-emulation.c"
+			local STAT
+			if "${CC-${CHOST}-gcc}" ${CFLAGS_x86} "${T}/check-ia32-emulation.c" -o "${T}/check-ia32-emulation.elf32"; then
+				"${T}/check-ia32-emulation.elf32"
+				STAT=$?
+			else
+				# Don't fail here to allow single->multi ABI switch
+				# or recover from breakage like bug #646424
+				ewarn "Failed to compile the ABI test. Broken host glibc?"
+				STAT=0
+			fi
+			rm -f "${T}/check-ia32-emulation.elf32"
+			eend $STAT
+			[[ $STAT -eq 0 ]] || die "CONFIG_IA32_EMULATION must be enabled in the kernel to compile a multilib glibc."
+		fi
+
+	fi
+
+	# When we actually have to compile something...
+	if ! just_headers ; then
+		ebegin "Checking gcc for __thread support"
+		if ! eend $(want__thread ; echo $?) ; then
+			echo
+			eerror "Could not find a gcc that supports the __thread directive!"
+			eerror "Please update your binutils/gcc and try again."
+			die "No __thread support in gcc!"
+		fi
+
+		if [[ ${CTARGET} == *-linux* ]] ; then
+			local run_kv build_kv want_kv
+
+			run_kv=$(g_get_running_KV)
+			build_kv=$(g_int_to_KV $(get_kheader_version))
+			want_kv=${MIN_KERN_VER}
+
+			if ! is_crosscompile && ! tc-is-cross-compiler ; then
+				# Building fails on an non-supporting kernel
+				ebegin "Checking running kernel version (${run_kv} >= ${want_kv})"
+				if ! eend_KV ${run_kv} ${want_kv} ; then
+					echo
+					eerror "You need a kernel of at least ${want_kv}!"
+					die "Kernel version too low!"
+				fi
+			fi
+
+			ebegin "Checking linux-headers version (${build_kv} >= ${want_kv})"
+			if ! eend_KV ${build_kv} ${want_kv} ; then
+				echo
+				eerror "You need linux-headers of at least ${want_kv}!"
+				die "linux-headers version too low!"
+			fi
+		fi
+	fi
+}
+
+#
+# the phases
+#
+
+# pkg_pretend
+
+# CrOS doesn't care about these checks.
+disabled_pkg_pretend() {
+	# All the checks...
+	einfo "Checking general environment sanity."
+	sanity_prechecks
+}
+
+pkg_setup() {
+	# see bug 682570
+	[[ -z ${BOOTSTRAP_RAP} ]] && python-any-r1_pkg_setup
+}
+
+# src_unpack
+
+src_unpack() {
+	# Consistency is not guaranteed between pkg_ and src_ ...
+	sanity_prechecks
+
+	use multilib && unpack gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}.tar.xz
+
+	setup_env
+
+	if [[ ${PV} == 9999* ]] ; then
+		EGIT_REPO_URI="https://anongit.gentoo.org/git/proj/toolchain/glibc-patches.git"
+		EGIT_CHECKOUT_DIR=${WORKDIR}/patches-git
+		git-r3_src_unpack
+		mv patches-git/9999 patches || die
+
+		EGIT_REPO_URI="https://sourceware.org/git/glibc.git"
+		EGIT_CHECKOUT_DIR=${S}
+		git-r3_src_unpack
+	else
+		unpack ${P}.tar.xz
+
+		cd "${WORKDIR}" || die
+		unpack glibc-${RELEASE_VER}-patches-${PATCH_VER}.tar.xz
+	fi
+
+	cd "${WORKDIR}" || die
+	unpack locale-gen-${LOCALE_GEN_VER}.tar.gz
+	use riscv && unpack backport-rv32.txz
+}
+
+src_prepare() {
+	local patchsetname
+	if ! use vanilla ; then
+		if [[ ${PV} == 9999* ]] ; then
+			patchsetname="from git master"
+		else
+			patchsetname="${RELEASE_VER}-${PATCH_VER}"
+		fi
+		elog "Applying Gentoo Glibc Patchset ${RELEASE_VER}"
+		EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" eapply "${WORKDIR}"/patches
+		einfo "Done."
+
+		if use riscv ; then
+			elog "Adding rv32 backport patchset for glibc-2.32 (experimental)"
+			eapply "${WORKDIR}"/backport-rv32
+			einfo "Done."
+		fi
+	fi
+	EPATCH_SUFFIX="patch" EPATCH_FORCE="yes" eapply "${FILESDIR}"/local/${PN}-${PV}
+
+	default
+
+	gnuconfig_update
+
+	cd "${WORKDIR}"
+	find . -name configure -exec touch {} +
+
+	# move the external locale-gen to its old place
+	mkdir extra || die
+	mv locale-gen-${LOCALE_GEN_VER} extra/locale || die
+	EPATCH_FORCE="yes" eapply "${FILESDIR}"/glibc-locale-gen-omit-spam-when-in-quiet-mode.patch
+
+	eprefixify extra/locale/locale-gen
+
+	# Fix permissions on some of the scripts.
+	chmod u+x "${S}"/scripts/*.sh
+
+	cd "${S}"
+}
+
+glibc_do_configure() {
+	# Glibc does not work with gold (for various reasons) #269274.
+	tc-ld-disable-gold
+
+	# CXX isnt handled by the multilib system, so if we dont unset here
+	# we accumulate crap across abis
+	unset CXX
+
+	einfo "Configuring glibc for nptl"
+
+	if use doc ; then
+		export MAKEINFO=makeinfo
+	else
+		export MAKEINFO=/dev/null
+	fi
+
+	local v
+	for v in ABI CBUILD CHOST CTARGET CBUILD_OPT CTARGET_OPT CC CXX LD {AS,C,CPP,CXX,LD}FLAGS MAKEINFO NM READELF; do
+		einfo " $(printf '%15s' ${v}:)   ${!v}"
+	done
+
+	# CFLAGS can contain ABI-specific flags like -mfpu=neon, see bug #657760
+	# To build .S (assembly) files with the same ABI-specific flags
+	# upstream currently recommends adding CFLAGS to CC/CXX:
+	#    https://sourceware.org/PR23273
+	# Note: Passing CFLAGS via CPPFLAGS overrides glibc's arch-specific CFLAGS
+	# and breaks multiarch support. See 659030#c3 for an example.
+	# The glibc configure script doesn't properly use LDFLAGS all the time.
+	export CC="$(tc-getCC ${CTARGET})"
+	export CXX="$(tc-getCXX ${CTARGET})"
+	cros_use_gcc
+	export CC="${CC} ${CFLAGS} ${LDFLAGS}"
+	export CXX="${CXX} $(get_abi_CFLAGS) ${CFLAGS}"
+	einfo " $(printf '%15s' 'Manual CC:')   ${CC}"
+
+	if is_crosscompile; then
+		# Assume worst-case bootstrap: glibc is buil first time
+		# when ${CTARGET}-g++ is not available yet. We avoid
+		# building auxiliary programs that require C++: bug #683074
+		# It should not affect final result.
+		export libc_cv_cxx_link_ok=no
+	fi
+	einfo " $(printf '%15s' 'Manual CXX:')   ${CXX}"
+
+	# Always use tuple-prefixed toolchain. For non-native ABI glibc's configure
+	# can't detect them automatically due to ${CHOST} mismatch and fallbacks
+	# to unprefixed tools. Similar to multilib.eclass:multilib_toolchain_setup().
+	export NM="$(tc-getNM ${CTARGET})"
+	export READELF="$(tc-getREADELF ${CTARGET})"
+	einfo " $(printf '%15s' 'Manual NM:')   ${NM}"
+	einfo " $(printf '%15s' 'Manual READELF:')   ${READELF}"
+
+	echo
+
+	local myconf=()
+
+	case ${CTARGET} in
+		m68k*)
+			# setjmp() is not compatible with stack protection:
+			# https://sourceware.org/PR24202
+			myconf+=( --enable-stack-protector=no )
+			;;
+		powerpc-*)
+			# Currently gcc on powerpc32 generates invalid code for
+			# __builtin_return_address(0) calls. Normally programs
+			# don't do that but malloc hooks in glibc do:
+			# https://gcc.gnu.org/PR81996
+			# https://bugs.gentoo.org/629054
+			myconf+=( --enable-stack-protector=no )
+			;;
+		*)
+			# Use '=strong' instead of '=all' to protect only functions
+			# worth protecting from stack smashes.
+			# '=all' is also known to have a problem in IFUNC resolution
+			# tests: https://sourceware.org/PR25680, bug #712356.
+			myconf+=( --enable-stack-protector=strong )
+			;;
+	esac
+	myconf+=( --enable-stackguard-randomization )
+
+	# Keep an allowlist of targets supporing IFUNC. glibc's ./configure
+	# is not robust enough to detect proper support:
+	#    https://bugs.gentoo.org/641216
+	#    https://sourceware.org/PR22634#c0
+	case $(tc-arch ${CTARGET}) in
+		# Keep an allowlist of targets where autodetection mostly works.
+		amd64|x86|sparc|ppc|ppc64|arm|arm64|s390) ;;
+		# Denylist everywhere else
+		*) myconf+=( libc_cv_ld_gnu_indirect_function=no ) ;;
+	esac
+
+	# Enable Intel Control-flow Enforcement Technology on amd64 if requested
+	case ${CTARGET} in
+		x86_64-*) myconf+=( $(use_enable cet) ) ;;
+		*) ;;
+	esac
+
+	[[ $(tc-is-softfloat) == "yes" ]] && myconf+=( --without-fp )
+
+	myconf+=( --enable-kernel=${MIN_KERN_VER} )
+
+	# Since SELinux support is only required for nscd, only enable it if:
+	# 1. USE selinux
+	# 2. only for the primary ABI on multilib systems
+	# 3. Not a crosscompile
+	if ! is_crosscompile && use selinux ; then
+		if use multilib ; then
+			if is_final_abi ; then
+				myconf+=( --with-selinux )
+			else
+				myconf+=( --without-selinux )
+			fi
+		else
+			myconf+=( --with-selinux )
+		fi
+	else
+		myconf+=( --without-selinux )
+	fi
+
+	# Force a few tests where we always know the answer but
+	# configure is incapable of finding it.
+	if is_crosscompile ; then
+		export \
+			libc_cv_c_cleanup=yes \
+			libc_cv_forced_unwind=yes
+	fi
+
+	myconf+=(
+		--without-cvs
+		--disable-werror
+		--enable-bind-now
+		--build=${CBUILD_OPT:-${CBUILD}}
+		--host=${CTARGET_OPT:-${CTARGET}}
+		$(use_enable profile)
+		$(use_with gd)
+		--with-headers=$(build_eprefix)$(alt_build_headers)
+		--prefix="$(host_eprefix)/usr"
+		--sysconfdir="$(host_eprefix)/etc"
+		--localstatedir="$(host_eprefix)/var"
+		--libdir='$(prefix)'/$(get_libdir)
+		--mandir='$(prefix)'/share/man
+		--infodir='$(prefix)'/share/info
+		--libexecdir='$(libdir)'/misc/glibc
+		--with-bugurl=https://bugs.gentoo.org/
+		--with-pkgversion="$(glibc_banner)"
+		$(use_enable crypt)
+		$(use_multiarch || echo --disable-multi-arch)
+		$(use_enable static-pie)
+		$(use_enable systemtap)
+		$(use_enable nscd)
+
+		# locale data is arch-independent
+		# https://bugs.gentoo.org/753740
+		libc_cv_complocaledir='${exec_prefix}/lib/locale'
+
+		${EXTRA_ECONF}
+	)
+
+	# We rely on sys-libs/timezone-data for timezone tools normally.
+	myconf+=( $(use_enable vanilla timezone-tools) )
+
+	# These libs don't have configure flags.
+	ac_cv_lib_audit_audit_log_user_avc_message=$(usex audit || echo no)
+	ac_cv_lib_cap_cap_init=$(usex caps || echo no)
+
+	# There is no configure option for this and we need to export it
+	# since the glibc build will re-run configure on itself
+	export libc_cv_rootsbindir="$(host_eprefix)/sbin"
+	export libc_cv_slibdir="$(host_eprefix)/$(get_libdir)"
+
+	# We take care of patching our binutils to use both hash styles,
+	# and many people like to force gnu hash style only, so disable
+	# this overriding check.  #347761
+	export libc_cv_hashstyle=no
+
+	local builddir=$(builddir nptl)
+	mkdir -p "${builddir}"
+	cd "${builddir}"
+	set -- "${S}"/configure "${myconf[@]}"
+	echo "$@"
+	"$@" || die "failed to configure glibc"
+
+	# ia64 static cross-compilers are a pita in so much that they
+	# can't produce static ELFs (as the libgcc.a is broken).  so
+	# disable building of the programs for those targets if it
+	# doesn't work.
+	# XXX: We could turn this into a compiler test, but ia64 is
+	# the only one that matters, so this should be fine for now.
+	if is_crosscompile && [[ ${CTARGET} == ia64* ]] ; then
+		sed -i '1i+link-static = touch $@' config.make
+	fi
+
+	# If we're trying to migrate between ABI sets, we need
+	# to lie and use a local copy of gcc.  Like if the system
+	# is built with MULTILIB_ABIS="amd64 x86" but we want to
+	# add x32 to it, gcc/glibc don't yet support x32.
+	#
+	if [[ -n ${GCC_BOOTSTRAP_VER} ]] && use multilib ; then
+		echo 'main(){}' > "${T}"/test.c
+		if ! $(tc-getCC ${CTARGET}) ${CFLAGS} ${LDFLAGS} "${T}"/test.c -Wl,-emain -lgcc 2>/dev/null ; then
+			sed -i -e '/^CC = /s:$: -B$(objdir)/../'"gcc-multilib-bootstrap-${GCC_BOOTSTRAP_VER}/${ABI}:" config.make || die
+		fi
+	fi
+}
+
+glibc_headers_configure() {
+	export ABI=default
+
+	cros_use_gcc
+
+	local builddir=$(builddir "headers")
+	mkdir -p "${builddir}"
+	cd "${builddir}"
+
+	# if we don't have a compiler yet, we can't really test it now ...
+	# hopefully they don't affect header generation, so let's hope for
+	# the best here ...
+	local v vars=(
+		ac_cv_header_cpuid_h=yes
+		libc_cv_{386,390,alpha,arm,hppa,ia64,mips,{powerpc,sparc}{,32,64},sh,x86_64}_tls=yes
+		libc_cv_asm_cfi_directives=yes
+		libc_cv_broken_visibility_attribute=no
+		libc_cv_c_cleanup=yes
+		libc_cv_compiler_powerpc64le_binary128_ok=yes
+		libc_cv_forced_unwind=yes
+		libc_cv_gcc___thread=yes
+		libc_cv_mlong_double_128=yes
+		libc_cv_mlong_double_128ibm=yes
+		libc_cv_ppc_machine=yes
+		libc_cv_ppc_rel16=yes
+		libc_cv_predef_fortify_source=no
+		libc_cv_target_power8_ok=yes
+		libc_cv_visibility_attribute=yes
+		libc_cv_z_combreloc=yes
+		libc_cv_z_execstack=yes
+		libc_cv_z_initfirst=yes
+		libc_cv_z_nodelete=yes
+		libc_cv_z_nodlopen=yes
+		libc_cv_z_relro=yes
+		libc_mips_abi=${ABI}
+		libc_mips_float=$([[ $(tc-is-softfloat) == "yes" ]] && echo soft || echo hard)
+		# These libs don't have configure flags.
+		ac_cv_lib_audit_audit_log_user_avc_message=no
+		ac_cv_lib_cap_cap_init=no
+	)
+
+	einfo "Forcing cached settings:"
+	for v in "${vars[@]}" ; do
+		einfo " ${v}"
+		export ${v}
+	done
+
+	local headers_only_arch_CPPFLAGS=()
+
+	# Blow away some random CC settings that screw things up. #550192
+	if [[ -d ${S}/sysdeps/mips ]]; then
+		pushd "${S}"/sysdeps/mips >/dev/null
+		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=32:' mips32/Makefile mips64/n32/Makefile || die
+		sed -i -e '/^CC +=/s:=.*:= -D_MIPS_SZPTR=64:' mips64/n64/Makefile || die
+
+		# Force the mips ABI to the default.  This is OK because the set of
+		# installed headers in this phase is the same between the 3 ABIs.
+		# If this ever changes, this hack will break, but that's unlikely
+		# as glibc discourages that behavior.
+		# https://crbug.com/647033
+		sed -i -e 's:abiflag=.*:abiflag=_ABIO32:' preconfigure || die
+
+		popd >/dev/null
+	fi
+
+	case ${CTARGET} in
+	riscv*)
+		# RISC-V interrogates the compiler to determine which target to
+		# build.  If building the headers then we don't strictly need a
+		# RISC-V compiler, so the built-in definitions that are provided
+		# along with all RISC-V compiler might not exist.  This causes
+		# glibc's RISC-V preconfigure script to blow up.  Since we're just
+		# building the headers any value will actually work here, so just
+		# pick the standard one (rv64g/lp64d) to make the build scripts
+		# happy for now -- the headers are all the same anyway so it
+		# doesn't matter.
+		headers_only_arch_CPPFLAGS+=(
+			-D__riscv_xlen=64
+			-D__riscv_flen=64
+			-D__riscv_float_abi_double=1
+			-D__riscv_atomic=1
+		) ;;
+	esac
+
+	local myconf=()
+	myconf+=(
+		--disable-sanity-checks
+		--enable-hacker-mode
+		--without-cvs
+		--disable-werror
+		--enable-bind-now
+		--build=${CBUILD_OPT:-${CBUILD}}
+		--host=${CTARGET_OPT:-${CTARGET}}
+		--with-headers=$(build_eprefix)$(alt_build_headers)
+		--prefix="$(host_eprefix)/usr"
+		${EXTRA_ECONF}
+	)
+
+	# Nothing is compiled here which would affect the headers for the target.
+	# So forcing CC/CFLAGS is sane.
+	local headers_only_CC=$(tc-getBUILD_CC)
+	local headers_only_CFLAGS="-O1 -pipe"
+	local headers_only_CPPFLAGS="-U_FORTIFY_SOURCE ${headers_only_arch_CPPFLAGS[*]}"
+	local headers_only_LDFLAGS=""
+	set -- "${S}"/configure "${myconf[@]}"
+	echo \
+		"CC=${headers_only_CC}" \
+		"CFLAGS=${headers_only_CFLAGS}" \
+		"CPPFLAGS=${headers_only_CPPFLAGS}" \
+		"LDFLAGS=${headers_only_LDFLAGS}" \
+		"$@"
+	CC=${headers_only_CC} \
+	CFLAGS=${headers_only_CFLAGS} \
+	CPPFLAGS=${headers_only_CPPFLAGS} \
+	LDFLAGS="" \
+	"$@" || die "failed to configure glibc"
+}
+
+do_src_configure() {
+	if just_headers ; then
+		glibc_headers_configure
+	else
+		glibc_do_configure nptl
+	fi
+}
+
+src_configure() {
+	EXTRA_ECONF+=" --with-bugurl=http://crbug.com/new"
+	foreach_abi do_src_configure
+}
+
+do_src_compile() {
+	emake -C "$(builddir nptl)"
+}
+
+src_compile() {
+	if just_headers ; then
+		return
+	fi
+
+	foreach_abi do_src_compile
+}
+
+glibc_src_test() {
+	cd "$(builddir nptl)"
+
+	local myxfailparams=""
+	if [[ "${GENTOO_GLIBC_XFAIL_TESTS}" == "yes" ]] ; then
+		for myt in ${XFAIL_TEST_LIST[@]} ; do
+			myxfailparams+="test-xfail-${myt}=yes "
+		done
+	fi
+
+	# sandbox does not understand unshare() and prevents
+	# writes to /proc/, which makes many tests fail
+
+	SANDBOX_ON=0 LD_PRELOAD= emake ${myxfailparams} check
+}
+
+do_src_test() {
+	local ret=0
+
+	glibc_src_test
+	: $(( ret |= $? ))
+
+	return ${ret}
+}
+
+src_test() {
+	if just_headers ; then
+		return
+	fi
+
+	# Give tests more time to complete.
+	export TIMEOUTFACTOR=5
+
+	foreach_abi do_src_test || die "tests failed"
+}
+
+run_locale_gen() {
+	# if the host locales.gen contains no entries, we'll install everything
+	local root="$1"
+	local inplace=""
+
+	if [[ "${root}" == "--inplace-glibc" ]] ; then
+		inplace="--inplace-glibc"
+		root="$2"
+	fi
+
+	local locale_list="${root}/etc/locale.gen"
+
+	pushd "${ED}"/$(get_libdir) >/dev/null
+
+	if [[ -z $(locale-gen --list --config "${locale_list}") ]] ; then
+		[[ -z ${inplace} ]] && ewarn "Generating all locales; edit /etc/locale.gen to save time/space"
+		locale_list="${root}/usr/share/i18n/SUPPORTED"
+	fi
+
+	set -- locale-gen ${inplace} --jobs $(makeopts_jobs) --config "${locale_list}" \
+		--destdir "${root}"
+	echo "$@"
+	"$@"
+
+	popd >/dev/null
+}
+
+glibc_do_src_install() {
+	# Chrome OS: Use strip-debug to keep ".symtab" inside the stripped files.
+	# This matches the suggestion at: https://sourceware.org/gdb/wiki/FAQ under heading:
+	# GDB does not see any threads besides the thread in which crash occurred; or SIGTRAP kills my program when I set a breakpoint.
+	# Therefore, Chrome OS glibc can strip all files including libpthread.so even though Gentoo
+	# disables it.
+	# To reproduce: Use `gdb -q -ex run -ex q --args perf --version` where perf --version
+	# is simply a binary that links with libpthread. gdb will produce the message:
+	# warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.
+	# Also see Note [Disable automatic stripping] in Gentoo's glibc ebuild.
+	export PORTAGE_STRIP_FLAGS="--strip-debug -N __gentoo_check_ldflags__ -R .comment"
+
+	local builddir=$(builddir nptl)
+	cd "${builddir}"
+
+	emake install_root="${D}/$(build_eprefix)$(alt_prefix)" install
+
+	# This version (2.26) provides some compatibility libraries for the NIS/NIS+ support
+	# which come without headers etc. Only needed for binary packages since the
+	# external net-libs/libnsl has increased soversion. Keep only versioned libraries.
+	find "${D}" -name "libnsl.a" -delete
+	find "${D}" -name "libnsl.so" -delete
+
+	# Normally upstream_pv is ${PV}. Live ebuilds are exception, there we need
+	# to infer upstream version:
+	# '#define VERSION "2.26.90"' -> '2.26.90'
+	local upstream_pv=$(sed -n -r 's/#define VERSION "(.*)"/\1/p' "${S}"/version.h)
+	if [[ -e ${ED}/$(alt_usrlibdir)/libm-${upstream_pv}.a ]] ; then
+		# Move versioned .a file out of libdir to evade portage QA checks
+		# instead of using gen_usr_ldscript(). We fix ldscript as:
+		# "GROUP ( /usr/lib64/libm-<pv>.a ..." -> "GROUP ( /usr/lib64/glibc-<pv>/libm-<pv>.a ..."
+		sed -i "s@\(libm-${upstream_pv}.a\)@${P}/\1@" "${ED}"/$(alt_usrlibdir)/libm.a || die
+		dodir $(alt_usrlibdir)/${P}
+		mv "${ED}"/$(alt_usrlibdir)/libm-${upstream_pv}.a "${ED}"/$(alt_usrlibdir)/${P}/libm-${upstream_pv}.a || die
+	fi
+
+	if is_crosscompile ; then
+		# punt all the junk not needed by a cross-compiler
+		cd "${D}"/usr/${CTARGET} || die
+		rm -rf ./{,usr/}{etc,share} ./{,usr/}*/misc
+
+		# Remove all executables except getent, ldd, and ldconfig.
+		# See http://crosbug.com/1570
+		find ./usr/bin -name getent -o -name ldd -o -type f -exec rm {} ';'
+		find ./sbin -name ldconfig -o -type f -exec rm {} ';'
+		rm -rf ./usr/sbin
+	fi
+
+	# We'll take care of the cache ourselves
+	rm -f "${ED}"/etc/ld.so.cache
+
+	# Everything past this point just needs to be done once ...
+	is_final_abi || return 0
+
+	# Make sure the non-native interp can be found on multilib systems even
+	# if the main library set isn't installed into the right place.  Maybe
+	# we should query the active gcc for info instead of hardcoding it ?
+	local i ldso_abi ldso_name
+	local ldso_abi_list=(
+		# x86
+		amd64   /lib64/ld-linux-x86-64.so.2
+		x32     /libx32/ld-linux-x32.so.2
+		x86     /lib/ld-linux.so.2
+		# mips
+		o32     /lib/ld.so.1
+		n32     /lib32/ld.so.1
+		n64     /lib64/ld.so.1
+		# powerpc
+		ppc     /lib/ld.so.1
+		ppc64   /lib64/ld64.so.1
+		# riscv
+		ilp32d  /lib/ld-linux-riscv32-ilp32d.so.1
+		ilp32   /lib/ld-linux-riscv32-ilp32.so.1
+		lp64d   /lib/ld-linux-riscv64-lp64d.so.1
+		lp64    /lib/ld-linux-riscv64-lp64.so.1
+		# s390
+		s390    /lib/ld.so.1
+		s390x   /lib/ld64.so.1
+		# sparc
+		sparc32 /lib/ld-linux.so.2
+		sparc64 /lib64/ld-linux.so.2
+	)
+	case $(tc-endian) in
+	little)
+		ldso_abi_list+=(
+			# arm
+			arm64   /lib/ld-linux-aarch64.so.1
+		)
+		;;
+	big)
+		ldso_abi_list+=(
+			# arm
+			arm64   /lib/ld-linux-aarch64_be.so.1
+		)
+		;;
+	esac
+	if [[ ${SYMLINK_LIB} == "yes" ]] && [[ ! -e ${ED}/$(alt_prefix)/lib ]] ; then
+		dosym $(get_abi_LIBDIR ${DEFAULT_ABI}) $(alt_prefix)/lib
+	fi
+	for (( i = 0; i < ${#ldso_abi_list[@]}; i += 2 )) ; do
+		ldso_abi=${ldso_abi_list[i]}
+		has ${ldso_abi} $(get_install_abis) || continue
+
+		ldso_name="$(alt_prefix)${ldso_abi_list[i+1]}"
+		if [[ ! -L ${ED}/${ldso_name} && ! -e ${ED}/${ldso_name} ]] ; then
+			dosym ../$(get_abi_LIBDIR ${ldso_abi})/${ldso_name##*/} ${ldso_name}
+		fi
+	done
+
+	# With devpts under Linux mounted properly, we do not need the pt_chown
+	# binary to be setuid.  This is because the default owners/perms will be
+	# exactly what we want.
+	if ! use suid ; then
+		find "${ED}" -name pt_chown -exec chmod -s {} +
+	fi
+
+	#################################################################
+	# EVERYTHING AFTER THIS POINT IS FOR NATIVE GLIBC INSTALLS ONLY #
+	# Make sure we install some symlink hacks so that when we build
+	# a 2nd stage cross-compiler, gcc finds the target system
+	# headers correctly.  See gcc/doc/gccinstall.info
+	if is_crosscompile ; then
+		# We need to make sure that /lib and /usr/lib always exists.
+		# gcc likes to use relative paths to get to its multilibs like
+		# /usr/lib/../lib64/.  So while we don't install any files into
+		# /usr/lib/, we do need it to exist.
+		cd "${ED}"$(alt_libdir)/..
+		[[ -e lib ]] || mkdir lib
+		cd "${ED}"$(alt_usrlibdir)/..
+		[[ -e lib ]] || mkdir lib
+
+		cd "${ED}"${alt_libdir} || die
+		rm -rf ./{,usr/}{etc,share} ./{,usr/}*/misc
+
+		# Remove all executables except getent, ldd, and ldconfig.
+		# See http://crosbug.com/1570
+		find ./usr/bin -name getent -o -name ldd -o -type f -exec rm {} ';'
+		find ./sbin -name ldconfig -o -type f -exec rm {} ';'
+		rm -rf ./usr/sbin
+
+		dosym usr/include $(alt_prefix)/sys-include
+		return 0
+	fi
+
+	# Files for Debian-style locale updating
+	dodir /usr/share/i18n
+	sed \
+		-e "/^#/d" \
+		-e "/SUPPORTED-LOCALES=/d" \
+		-e "s: \\\\::g" -e "s:/: :g" \
+		"${S}"/localedata/SUPPORTED > "${ED}"/usr/share/i18n/SUPPORTED \
+		|| die "generating /usr/share/i18n/SUPPORTED failed"
+	cd "${WORKDIR}"/extra/locale
+	dosbin locale-gen
+	doman *.[0-8]
+	insinto /etc
+	doins locale.gen
+
+	keepdir /usr/lib/locale
+
+	cd "${S}"
+
+	# Install misc network config files
+	insinto /etc
+	doins posix/gai.conf nss/nsswitch.conf
+
+	# Gentoo-specific
+	newins "${FILESDIR}"/host.conf-1 host.conf
+
+	if use nscd ; then
+		doins nscd/nscd.conf
+
+		newinitd "$(prefixify_ro "${FILESDIR}"/nscd-1)" nscd
+
+		local nscd_args=(
+			-e "s:@PIDFILE@:$(strings "${ED}"/usr/sbin/nscd | grep nscd.pid):"
+		)
+
+		sed -i "${nscd_args[@]}" "${ED}"/etc/init.d/nscd
+
+		systemd_dounit nscd/nscd.service
+		systemd_newtmpfilesd nscd/nscd.tmpfiles nscd.conf
+	fi
+
+	echo 'LDPATH="include ld.so.conf.d/*.conf"' > "${T}"/00glibc
+	doenvd "${T}"/00glibc
+
+	for d in BUGS ChangeLog CONFORMANCE FAQ NEWS NOTES PROJECTS README* ; do
+		[[ -s ${d} ]] && dodoc ${d}
+	done
+	dodoc -r ChangeLog.old
+
+	# Prevent overwriting of the /etc/localtime symlink.  We'll handle the
+	# creation of the "factory" symlink in pkg_postinst().
+	rm -f "${ED}"/etc/localtime
+
+	# Generate all locales if this is a native build as locale generation
+	if use compile-locales && ! is_crosscompile ; then
+		run_locale_gen --inplace-glibc "${ED}/"
+		sed -e 's:COMPILED_LOCALES="":COMPILED_LOCALES="1":' -i "${ED}"/usr/sbin/locale-gen || die
+	fi
+}
+
+glibc_headers_install() {
+	local builddir=$(builddir "headers")
+	cd "${builddir}"
+	emake install_root="${D}/$(build_eprefix)$(alt_prefix)" install-headers
+
+	insinto $(alt_headers)/gnu
+	doins "${S}"/include/gnu/stubs.h
+
+	# Make sure we install the sys-include symlink so that when
+	# we build a 2nd stage cross-compiler, gcc finds the target
+	# system headers correctly.  See gcc/doc/gccinstall.info
+	dosym usr/include $(alt_prefix)/sys-include
+}
+
+src_install() {
+	if just_headers ; then
+		export ABI=default
+		glibc_headers_install
+		return
+	fi
+
+	foreach_abi glibc_do_src_install
+
+	if ! use static-libs ; then
+		elog "Not installing static glibc libraries"
+		find "${ED}" -name "*.a" -and -not -name "*_nonshared.a" -delete
+	fi
+}
+
+# Simple test to make sure our new glibc isn't completely broken.
+# Make sure we don't test with statically built binaries since
+# they will fail.  Also, skip if this glibc is a cross compiler.
+#
+# If coreutils is built with USE=multicall, some of these files
+# will just be wrapper scripts, not actual ELFs we can test.
+glibc_sanity_check() {
+	cd / #228809
+
+	# We enter ${ED} so to avoid trouble if the path contains
+	# special characters; for instance if the path contains the
+	# colon character (:), then the linker will try to split it
+	# and look for the libraries in an unexpected place. This can
+	# lead to unsafe code execution if the generated prefix is
+	# within a world-writable directory.
+	# (e.g. /var/tmp/portage:${HOSTNAME})
+	pushd "${ED}"/$(get_libdir) >/dev/null
+
+	local x striptest
+	for x in cal date env free ls true uname uptime ; do
+		x=$(type -p ${x})
+		[[ -z ${x} || ${x} != ${EPREFIX}/* ]] && continue
+		striptest=$(LC_ALL="C" file -L ${x} 2>/dev/null) || continue
+		case ${striptest} in
+		*"statically linked"*) continue;;
+		*"ASCII text"*) continue;;
+		esac
+		# We need to clear the locale settings as the upgrade might want
+		# incompatible locale data.  This test is not for verifying that.
+		LC_ALL=C \
+		./ld-*.so --library-path . ${x} > /dev/null \
+			|| die "simple run test (${x}) failed"
+	done
+
+	popd >/dev/null
+}
+
+pkg_preinst() {
+	# nothing to do if just installing headers
+	just_headers && return
+
+	# prepare /etc/ld.so.conf.d/ for files
+	mkdir -p "${EROOT}"/etc/ld.so.conf.d
+
+	# Default /etc/hosts.conf:multi to on for systems with small dbs.
+	if [[ $(wc -l < "${EROOT}"/etc/hosts) -lt 1000 ]] ; then
+		sed -i '/^multi off/s:off:on:' "${ED}"/etc/host.conf
+		einfo "Defaulting /etc/host.conf:multi to on"
+	fi
+
+	[[ -n ${ROOT} ]] && return 0
+	[[ -d ${ED}/$(get_libdir) ]] || return 0
+	[[ -z ${BOOTSTRAP_RAP} ]] && glibc_sanity_check
+
+	if [[ -L ${EROOT}/usr/lib/locale ]]; then
+		# Help portage migrate this to a directory
+		# https://bugs.gentoo.org/753740
+		rm "${EROOT}"/usr/lib/locale || die
+	fi
+}
+
+pkg_postinst() {
+	# nothing to do if just installing headers
+	just_headers && return
+
+	if ! tc-is-cross-compiler && [[ -x ${EROOT}/usr/sbin/iconvconfig ]] ; then
+		# Generate fastloading iconv module configuration file.
+		"${EROOT}"/usr/sbin/iconvconfig --prefix="${ROOT}/"
+	fi
+
+	if ! is_crosscompile && [[ -z ${ROOT} ]] ; then
+		use compile-locales || run_locale_gen "${EROOT}/"
+	fi
+
+	# Check for sanity of /etc/nsswitch.conf, take 2
+	if [[ -e ${EROOT}/etc/nsswitch.conf ]] && ! has_version sys-auth/libnss-nis ; then
+		local entry
+		for entry in passwd group shadow; do
+			if egrep -q "^[ \t]*${entry}:.*nis" "${EROOT}"/etc/nsswitch.conf; then
+				ewarn ""
+				ewarn "Your ${EROOT}/etc/nsswitch.conf uses NIS. Support for that has been"
+				ewarn "removed from glibc and is now provided by the package"
+				ewarn "  sys-auth/libnss-nis"
+				ewarn "Install it now to keep your NIS setup working."
+				ewarn ""
+			fi
+		done
+	fi
+}
diff --git a/sys-libs/ldb/Manifest b/sys-libs/ldb/Manifest
new file mode 100644
index 0000000..b1e94cc
--- /dev/null
+++ b/sys-libs/ldb/Manifest
@@ -0,0 +1 @@
+DIST ldb-2.0.12.tar.gz 1680114 BLAKE2B 44d7b8f9ff0c1d2adc59378b9da814fb280043c8bbf5ea59920a23448db5abdd53b69c93002e2d621268610ee202377a35676ecf6bd6601d2a2ef9269e71dd6c SHA512 9f26dadee16c50844b28edf03a05ad11067bfb7678cc3e8baf278709a813498a620db3dad463bfe54adb6a44cb5b551cf1224bc30316be5fc8d29ef17295bdd8
diff --git a/sys-libs/ldb/OWNERS b/sys-libs/ldb/OWNERS
new file mode 100644
index 0000000..1261db2
--- /dev/null
+++ b/sys-libs/ldb/OWNERS
@@ -0,0 +1 @@
+include chromiumos/platform2:/smbfs/OWNERS
diff --git a/sys-libs/ldb/README.md b/sys-libs/ldb/README.md
new file mode 100644
index 0000000..298b6d2
--- /dev/null
+++ b/sys-libs/ldb/README.md
@@ -0,0 +1,6 @@
+This package is modified from upstream Gentoo to patch against CVE-2020-27840 and CVE-2021-20277. It is impractical
+to update to the latest upstream package as this version (2.0.12) is required by Samba, and uprevving Samba is a
+major task that would block patching ldb against these security vulnerabilities.
+
+An upgrade of Samba from 4.11.13 to 4.14.4 is in progress, this will allow us to remove these ldb patches and move
+ldb back to portage-stable. It is expected that this will be completed by Jun 30 2021.
diff --git a/sys-libs/ldb/files/ldb-1.1.31-fix_PKGCONFIGDIR-when-python-disabled.patch b/sys-libs/ldb/files/ldb-1.1.31-fix_PKGCONFIGDIR-when-python-disabled.patch
new file mode 100644
index 0000000..c45b13f
--- /dev/null
+++ b/sys-libs/ldb/files/ldb-1.1.31-fix_PKGCONFIGDIR-when-python-disabled.patch
@@ -0,0 +1,17 @@
+--- a/wscript	2017-07-05 15:35:52.178964698 -0400
++++ b/wscript	2017-07-05 15:49:20.137977649 -0400
+@@ -208,6 +208,14 @@
+         ldb_headers = ('include/ldb.h include/ldb_errors.h '
+                        'include/ldb_module.h include/ldb_handlers.h')
+ 
++        # we're not currently linking against the ldap libs, but ldb.pc.in
++        # has @LDAP_LIBS@
++        bld.env.LDAP_LIBS = ''
++
++        if not 'PACKAGE_VERSION' in bld.env:
++            bld.env.PACKAGE_VERSION = VERSION
++            bld.env.PKGCONFIGDIR = '${LIBDIR}/pkgconfig'
++
+         bld.SAMBA_LIBRARY('ldb',
+                           COMMON_SRC + ' ' + LDB_MAP_SRC,
+                           deps='tevent LIBLDB_MAIN replace',
diff --git a/sys-libs/ldb/files/ldb-1.5.2-optional_packages.patch b/sys-libs/ldb/files/ldb-1.5.2-optional_packages.patch
new file mode 100644
index 0000000..bdceeb3
--- /dev/null
+++ b/sys-libs/ldb/files/ldb-1.5.2-optional_packages.patch
@@ -0,0 +1,40 @@
+--- ldb-1.5.2/wscript
++++ ldb-1.5.2/wscript
+@@ -33,6 +33,10 @@
+     opt.RECURSE('lib/tevent')
+     opt.RECURSE('lib/replace')
+     opt.load('python') # options for disabling pyc or pyo compilation
++    if opt.IN_LAUNCH_DIR():
++        opt.add_option('--disable-ldap',
++        help=("disable ldap support"),
++        action="store_true", dest='disable_ldap', default=False)
+ 
+     opt.add_option('--without-ldb-lmdb',
+                    help='disable new LMDB backend for LDB',
+@@ -40,6 +44,10 @@
+ 
+ 
+ def configure(conf):
++    conf.env.standalone_ldb = conf.IN_LAUNCH_DIR()
++
++    conf.env.disable_ldap = getattr(Options.options, 'disable_ldap', False)
++
+     conf.RECURSE('lib/tdb')
+     conf.RECURSE('lib/tevent')
+ 
+@@ -157,9 +165,12 @@
+     if conf.env.standalone_ldb:
+         conf.CHECK_XSLTPROC_MANPAGES()
+ 
+-        # we need this for the ldap backend
+-        if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'):
+-            conf.env.ENABLE_LDAP_BACKEND = True
++        if not conf.env.disable_ldap:
++    	    # we need this for the ldap backend
++            if conf.CHECK_FUNCS_IN('ber_flush ldap_open ldap_initialize', 'lber ldap', headers='lber.h ldap.h'):
++                conf.env.ENABLE_LDAP_BACKEND = True
++        else:
++            conf.env.ENABLE_LDAP_BACKEND = False
+ 
+         # we don't want any libraries or modules to rely on runtime
+         # resolution of symbols
diff --git a/sys-libs/ldb/files/ldb-2.3.0-CVE-2020-27840.patch b/sys-libs/ldb/files/ldb-2.3.0-CVE-2020-27840.patch
new file mode 100644
index 0000000..1380a1b
--- /dev/null
+++ b/sys-libs/ldb/files/ldb-2.3.0-CVE-2020-27840.patch
@@ -0,0 +1,105 @@
+From dbb3e65f7e382adf5fa6a6afb3d8684aca3f201a Mon Sep 17 00:00:00 2001
+From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+Date: Fri, 11 Dec 2020 16:32:25 +1300
+Subject: [PATCH 1/1] CVE-2020-27840 ldb_dn: avoid head corruption in
+ ldb_dn_explode
+
+A DN string with lots of trailing space can cause ldb_dn_explode() to
+put a zero byte in the wrong place in the heap.
+
+When a DN string has a value represented with trailing spaces,
+like this
+
+     "CN=foo   ,DC=bar"
+
+the whitespace is supposed to be ignored. We keep track of this in the
+`t` pointer, which is NULL when we are not walking through trailing
+spaces, and points to the first space when we are. We are walking with
+the `p` pointer, writing the value to `d`, and keeping the length in
+`l`.
+
+     "CN=foo   ,DC= "       ==>       "foo   "
+            ^  ^                             ^
+            t  p                             d
+                                       --l---
+
+The value is finished when we encounter a comma or the end of the
+string. If `t` is not NULL at that point, we assume there are trailing
+spaces and wind `d and `l` back by the correct amount. Then we switch
+to expecting an attribute name (e.g. "CN"), until we get to an "=",
+which puts us back into looking for a value.
+
+Unfortunately, we forget to immediately tell `t` that we'd finished
+the last value, we can end up like this:
+
+     "CN=foo   ,DC= "       ==>        ""
+            ^      ^                    ^
+            t      p                    d
+                                        l=0
+
+where `p` is pointing to a new value that contains only spaces, while
+`t` is still referring to the old value. `p` notices the value ends,
+and we subtract `p - t` from `d`:
+
+     "CN=foo   ,DC= "       ==>  ?     ""
+            ^       ^            ^
+            t       p            d
+                                      l ~= SIZE_MAX - 8
+
+At that point `d` wants to terminate its string with a '\0', but
+instead it terminates someone else's byte. This does not crash if the
+number of trailing spaces is small, as `d` will point into a previous
+value (a copy of "foo" in this example). Corrupting that value will
+ultimately not matter, as we will soon try to allocate a buffer `l`
+long, which will be greater than the available memory and the whole
+operation will fail properly.
+
+However, with more spaces, `d` will point into memory before the
+beginning of the allocated buffer, with the exact offset depending on
+the length of the earlier attributes and the number of spaces.
+
+What about a longer DN with more attributes? For example,
+"CN=foo     ,DC= ,DC=example,DC=com" -- since `d` has moved out of
+bounds, won't we continue to use it and write more DN values into
+mystery memory? Fortunately not, because the aforementioned allocation
+of `l` bytes must happen first, and `l` is now huge. The allocation
+happens in a talloc_memdup(), which is by default restricted to
+allocating 256MB.
+
+So this allows a person who controls a string parsed by ldb_dn_explode
+to corrupt heap memory by placing a single zero byte at a chosen
+offset before the allocated buffer.
+
+An LDAP bind request can send a string DN as a username. This DN is
+necessarily parsed before the password is checked, so an attacker does
+not need proper credentials. The attacker can easily cause a denial of
+service and we cannot rule out more subtle attacks.
+
+The immediate solution is to reset `t` to NULL when a comma is
+encountered, indicating that we are no longer looking at trailing
+whitespace.
+
+Found with the help of Honggfuzz.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=14595
+
+Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+Reviewed-by: Andrew Bartlett <abartlet@samba.org>
+---
+ common/ldb_dn.c               | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/common/ldb_dn.c b/common/ldb_dn.c
+index 001fcad621f..cce5ad5b2ff 100644
+--- a/common/ldb_dn.c
++++ b/common/ldb_dn.c
+@@ -570,6 +570,7 @@ static bool ldb_dn_explode(struct ldb_dn *dn)
+ 					/* trim back */
+ 					d -= (p - t);
+ 					l -= (p - t);
++					t = NULL;
+ 				}
+ 
+ 				in_attr = true;
+--
+2.25.1
diff --git a/sys-libs/ldb/files/ldb-2.3.0-CVE-2021-20277.patch b/sys-libs/ldb/files/ldb-2.3.0-CVE-2021-20277.patch
new file mode 100644
index 0000000..3b65501
--- /dev/null
+++ b/sys-libs/ldb/files/ldb-2.3.0-CVE-2021-20277.patch
@@ -0,0 +1,32 @@
+From 1fe8c790b2294fd10fe9c9c6254ecf2b6c00b709 Mon Sep 17 00:00:00 2001
+From: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+Date: Tue, 8 Dec 2020 21:32:09 +1300
+Subject: [PATCH] CVE-2021-20277 ldb/attrib_handlers casefold: stay in bounds
+
+For a string that had N spaces at the beginning, we would
+try to move N bytes beyond the end of the string.
+
+BUG: https://bugzilla.samba.org/show_bug.cgi?id=14655
+
+Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
+Reviewed-by: Andrew Bartlett <abartlet@samba.org>
+---
+ common/attrib_handlers.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/common/attrib_handlers.c b/common/attrib_handlers.c
+index 11921ca429c..81a74584bcb 100644
+--- a/common/attrib_handlers.c
++++ b/common/attrib_handlers.c
+@@ -76,7 +76,7 @@ int ldb_handler_fold(struct ldb_context *ldb, void *mem_ctx,
+ 	
+ 	/* remove leading spaces if any */
+ 	if (*s == ' ') {
+-		for (t = s; *s == ' '; s++) ;
++		for (t = s; *s == ' '; s++, l--) ;
+ 
+ 		/* remove leading spaces by moving down the string */
+ 		memmove(t, s, l);
+-- 
+2.25.1
+
diff --git a/sys-libs/ldb/ldb-2.0.12-r1.ebuild b/sys-libs/ldb/ldb-2.0.12-r1.ebuild
new file mode 120000
index 0000000..5391cb9
--- /dev/null
+++ b/sys-libs/ldb/ldb-2.0.12-r1.ebuild
@@ -0,0 +1 @@
+ldb-2.0.12.ebuild
\ No newline at end of file
diff --git a/sys-libs/ldb/ldb-2.0.12.ebuild b/sys-libs/ldb/ldb-2.0.12.ebuild
new file mode 100644
index 0000000..7dbae5c
--- /dev/null
+++ b/sys-libs/ldb/ldb-2.0.12.ebuild
@@ -0,0 +1,110 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+PYTHON_COMPAT=( python3_{6,7,8} )
+PYTHON_REQ_USE="threads(+)"
+
+inherit python-single-r1 waf-utils multilib-minimal eutils
+
+DESCRIPTION="An LDAP-like embedded database"
+HOMEPAGE="https://ldb.samba.org"
+SRC_URI="https://www.samba.org/ftp/pub/${PN}/${P}.tar.gz"
+
+LICENSE="LGPL-3"
+SLOT="0/${PV}"
+KEYWORDS="*"
+IUSE="doc +ldap +lmdb python test"
+
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+	!elibc_FreeBSD? ( dev-libs/libbsd[${MULTILIB_USEDEP}] )
+	dev-libs/popt[${MULTILIB_USEDEP}]
+	>=dev-util/cmocka-1.1.3[${MULTILIB_USEDEP}]
+	>=sys-libs/talloc-2.2.0[python?,${MULTILIB_USEDEP}]
+	>=sys-libs/tdb-1.4.2[python?,${MULTILIB_USEDEP}]
+	>=sys-libs/tevent-0.10.0[python(+)?,${MULTILIB_USEDEP}]
+	ldap? ( net-nds/openldap )
+	lmdb? ( >=dev-db/lmdb-0.9.16[${MULTILIB_USEDEP}] )
+	python? ( ${PYTHON_DEPS} )
+"
+
+DEPEND="dev-libs/libxslt
+	doc? ( app-doc/doxygen )
+	virtual/pkgconfig
+	${PYTHON_DEPS}
+	${RDEPEND}
+"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )
+	test? ( python )"
+
+WAF_BINARY="${S}/buildtools/bin/waf"
+
+MULTILIB_WRAPPED_HEADERS=( /usr/include/pyldb.h )
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-1.5.2-optional_packages.patch
+	"${FILESDIR}"/${PN}-1.1.31-fix_PKGCONFIGDIR-when-python-disabled.patch
+	"${FILESDIR}"/${PN}-2.3.0-CVE-2021-20277.patch
+	"${FILESDIR}"/${PN}-2.3.0-CVE-2020-27840.patch
+)
+
+pkg_setup() {
+	python-single-r1_pkg_setup
+}
+
+src_prepare() {
+	default
+	multilib_copy_sources
+}
+
+multilib_src_configure() {
+	local myconf=(
+		$(usex ldap '' --disable-ldap)
+		$(usex lmdb '' --without-ldb-lmdb)
+		--disable-rpath
+		--disable-rpath-install --bundled-libraries=NONE
+		--with-modulesdir="${EPREFIX}"/usr/$(get_libdir)/samba
+		--builtin-libraries=NONE
+	)
+	if ! multilib_is_native_abi; then
+		myconf+=( --disable-python )
+	else
+		use python || myconf+=( --disable-python )
+	fi
+	waf-utils_src_configure "${myconf[@]}"
+}
+
+multilib_src_compile() {
+	waf-utils_src_compile
+	multilib_is_native_abi && use doc && doxygen Doxyfile
+}
+
+multilib_src_test() {
+	if multilib_is_native_abi; then
+		WAF_MAKE=1 \
+		PATH=buildtools/bin:../../../buildtools/bin:$PATH:"${BUILD_DIR}"/bin/shared/private/ \
+		LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"${BUILD_DIR}"/bin/shared/private/:"${BUILD_DIR}"/bin/shared \
+		waf test || die
+	fi
+}
+
+multilib_src_install() {
+	waf-utils_src_install
+
+	if multilib_is_native_abi && use doc; then
+		doman  apidocs/man/man3/*.3
+		docinto html
+		dodoc -r apidocs/html/*
+	fi
+}
+
+pkg_postinst() {
+	if has_version sys-auth/sssd; then
+		ewarn "You have sssd installed. It is known to break after ldb upgrades,"
+		ewarn "so please try to rebuild it before reporting bugs."
+		ewarn "See https://bugs.gentoo.org/404281"
+	fi
+}
diff --git a/sys-libs/ldb/metadata.xml b/sys-libs/ldb/metadata.xml
new file mode 100644
index 0000000..5970784
--- /dev/null
+++ b/sys-libs/ldb/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer type="project">
+		<email>samba@gentoo.org</email>
+		<name>Samba</name>
+	</maintainer>
+	<upstream>
+		<remote-id type="cpe">cpe:/a:samba:samba</remote-id>
+	</upstream>
+	<use>
+		<flag name="doc">Builds documentation</flag>
+		<flag name="ldap">Enable LDAP support</flag>
+		<flag name="lmdb">Enable LMDB backend</flag>
+		<flag name="python">Enable Python support</flag>
+	</use>
+</pkgmetadata>
diff --git a/sys-libs/libcxx/files/493f1407927cdf6db2e08f150ed9f9b8abe4ac45.patch b/sys-libs/libcxx/files/493f1407927cdf6db2e08f150ed9f9b8abe4ac45.patch
new file mode 100644
index 0000000..04c6d48
--- /dev/null
+++ b/sys-libs/libcxx/files/493f1407927cdf6db2e08f150ed9f9b8abe4ac45.patch
@@ -0,0 +1,502 @@
+commit 493f1407927cdf6db2e08f150ed9f9b8abe4ac45
+Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
+Date:   Sun Dec 20 15:21:42 2020 -0500
+
+    [libc++] [P0879] constexpr std::sort
+    
+    This completes libc++'s implementation of
+    P0879 "Constexpr for swap and swap related functions."
+    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0879r0.html
+    
+    For the feature-macro adjustment, see
+    https://cplusplus.github.io/LWG/issue3256
+    
+    Differential Revision: https://reviews.llvm.org/D93661
+
+diff --git a/libcxx/docs/Cxx2aStatusIssuesStatus.csv b/libcxx/docs/Cxx2aStatusIssuesStatus.csv
+index 859c52ae2b21..d2adde69d9d2 100644
+--- a/libcxx/docs/Cxx2aStatusIssuesStatus.csv
++++ b/libcxx/docs/Cxx2aStatusIssuesStatus.csv
+@@ -176,7 +176,7 @@
+ "`3244 <https://wg21.link/LWG3244>`__","Constraints for ``Source``\  in |sect|\ [fs.path.req] insufficiently constrainty","Belfast","",""
+ "`3241 <https://wg21.link/LWG3241>`__","``chrono-spec``\  grammar ambiguity in |sect|\ [time.format]","Belfast","",""
+ "`3257 <https://wg21.link/LWG3257>`__","Missing feature testing macro update from P0858","Belfast","",""
+-"`3256 <https://wg21.link/LWG3256>`__","Feature testing macro for ``constexpr``\  algorithms","Belfast","",""
++"`3256 <https://wg21.link/LWG3256>`__","Feature testing macro for ``constexpr``\  algorithms","Belfast","|Complete|","13.0"
+ "`3273 <https://wg21.link/LWG3273>`__","Specify ``weekday_indexed``\  to range of ``[0, 7]``\ ","Belfast","",""
+ "`3070 <https://wg21.link/LWG3070>`__","``path::lexically_relative``\  causes surprising results if a filename can also be a  *root-name*","Belfast","",""
+ "`3266 <https://wg21.link/LWG3266>`__","``to_chars(bool)``\  should be deleted","Belfast","",""
+diff --git a/libcxx/docs/Cxx2aStatusPaperStatus.csv b/libcxx/docs/Cxx2aStatusPaperStatus.csv
+index b3b60d2ca730..d3819a83fa43 100644
+--- a/libcxx/docs/Cxx2aStatusPaperStatus.csv
++++ b/libcxx/docs/Cxx2aStatusPaperStatus.csv
+@@ -40,7 +40,7 @@
+ "`P0759R1 <https://wg21.link/P0759R1>`__","LWG","fpos Requirements","Rapperswil","|Complete|","11.0"
+ "`P0769R2 <https://wg21.link/P0769R2>`__","LWG","Add shift to <algorithm>","Rapperswil","|Complete|","12.0"
+ "`P0788R3 <https://wg21.link/P0788R3>`__","LWG","Standard Library Specification in a Concepts and Contracts World","Rapperswil","*Removed in Cologne*","n/a"
+-"`P0879R0 <https://wg21.link/P0879R0>`__","LWG","Constexpr for swap and swap related functions Also resolves LWG issue 2800.","Rapperswil","",""
++"`P0879R0 <https://wg21.link/P0879R0>`__","LWG","Constexpr for swap and swap related functions Also resolves LWG issue 2800.","Rapperswil","|Complete|","13.0"
+ "`P0887R1 <https://wg21.link/P0887R1>`__","LWG","The identity metafunction","Rapperswil","|Complete|","8.0"
+ "`P0892R2 <https://wg21.link/P0892R2>`__","CWG","explicit(bool)","Rapperswil","",""
+ "`P0898R3 <https://wg21.link/P0898R3>`__","LWG","Standard Library Concepts","Rapperswil","|In Progress|",""
+diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst
+index 5fe7005c19c2..7028ff0d83f1 100644
+--- a/libcxx/docs/FeatureTestMacroTable.rst
++++ b/libcxx/docs/FeatureTestMacroTable.rst
+@@ -200,7 +200,7 @@ Status
+     ------------------------------------------------- -----------------
+     ``__cpp_lib_concepts``                            *unimplemented*
+     ------------------------------------------------- -----------------
+-    ``__cpp_lib_constexpr_algorithms``                *unimplemented*
++    ``__cpp_lib_constexpr_algorithms``                ``201806L``
+     ------------------------------------------------- -----------------
+     ``__cpp_lib_constexpr_complex``                   *unimplemented*
+     ------------------------------------------------- -----------------
+diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm
+index d8fbac731b19..7220585d15a3 100644
+--- a/libcxx/include/algorithm
++++ b/libcxx/include/algorithm
+@@ -351,11 +351,11 @@ template <class ForwardIterator, class Compare>
+     is_sorted_until(ForwardIterator first, ForwardIterator last, Compare comp);
+ 
+ template <class RandomAccessIterator>
+-    void
++    constexpr void               // constexpr in C++20
+     sort(RandomAccessIterator first, RandomAccessIterator last);
+ 
+ template <class RandomAccessIterator, class Compare>
+-    void
++    constexpr void               // constexpr in C++20
+     sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp);
+ 
+ template <class RandomAccessIterator>
+@@ -4047,7 +4047,6 @@ template <class _Compare, class _RandomAccessIterator>
+ void
+ __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
+ {
+-    // _Compare is known to be a reference type
+     typedef typename iterator_traits<_RandomAccessIterator>::difference_type difference_type;
+     typedef typename iterator_traits<_RandomAccessIterator>::value_type value_type;
+     const difference_type __limit = is_trivially_copy_constructible<value_type>::value &&
+@@ -4236,47 +4235,13 @@ __sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __c
+     }
+ }
+ 
+-// This forwarder keeps the top call and the recursive calls using the same instantiation, forcing a reference _Compare
+-template <class _RandomAccessIterator, class _Compare>
+-inline _LIBCPP_INLINE_VISIBILITY
+-void
+-sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
+-{
+-    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
+-    _VSTD::__sort<_Comp_ref>(__first, __last, _Comp_ref(__comp));
+-}
+-
+-template <class _RandomAccessIterator>
+-inline _LIBCPP_INLINE_VISIBILITY
+-void
+-sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
+-{
+-    _VSTD::sort(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
+-}
+-
+-template <class _Tp>
+-inline _LIBCPP_INLINE_VISIBILITY
+-void
+-sort(_Tp** __first, _Tp** __last)
+-{
+-    _VSTD::sort((uintptr_t*)__first, (uintptr_t*)__last, __less<uintptr_t>());
+-}
+-
+-template <class _Tp>
+-inline _LIBCPP_INLINE_VISIBILITY
+-void
+-sort(__wrap_iter<_Tp*> __first, __wrap_iter<_Tp*> __last)
+-{
+-    _VSTD::sort(__first.base(), __last.base());
+-}
+-
+-template <class _Tp, class _Compare>
++template <class _Compare, class _Tp>
+ inline _LIBCPP_INLINE_VISIBILITY
+ void
+-sort(__wrap_iter<_Tp*> __first, __wrap_iter<_Tp*> __last, _Compare __comp)
++__sort(_Tp** __first, _Tp** __last, __less<_Tp*>&)
+ {
+-    typedef typename add_lvalue_reference<_Compare>::type _Comp_ref;
+-    _VSTD::sort<_Tp*, _Comp_ref>(__first.base(), __last.base(), __comp);
++    __less<uintptr_t> __comp;
++    _VSTD::__sort<__less<uintptr_t>&, uintptr_t*>((uintptr_t*)__first, (uintptr_t*)__last, __comp);
+ }
+ 
+ _LIBCPP_EXTERN_TEMPLATE(_LIBCPP_FUNC_VIS void __sort<__less<char>&, char*>(char*, char*, __less<char>&))
+@@ -5478,6 +5443,29 @@ nth_element(_RandomAccessIterator __first, _RandomAccessIterator __nth, _RandomA
+     _VSTD::nth_element(__first, __nth, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
+ }
+ 
++// sort
++
++template <class _RandomAccessIterator, class _Compare>
++inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
++void
++sort(_RandomAccessIterator __first, _RandomAccessIterator __last, _Compare __comp)
++{
++    typedef typename __comp_ref_type<_Compare>::type _Comp_ref;
++    if (__libcpp_is_constant_evaluated()) {
++        _VSTD::__partial_sort<_Comp_ref>(__first, __last, __last, _Comp_ref(__comp));
++    } else {
++        _VSTD::__sort<_Comp_ref>(_VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _Comp_ref(__comp));
++    }
++}
++
++template <class _RandomAccessIterator>
++inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
++void
++sort(_RandomAccessIterator __first, _RandomAccessIterator __last)
++{
++    _VSTD::sort(__first, __last, __less<typename iterator_traits<_RandomAccessIterator>::value_type>());
++}
++
+ // includes
+ 
+ template <class _Compare, class _InputIterator1, class _InputIterator2>
+diff --git a/libcxx/include/version b/libcxx/include/version
+index 77183e54fcfd..9b37c30d2acd 100644
+--- a/libcxx/include/version
++++ b/libcxx/include/version
+@@ -294,7 +294,7 @@ __cpp_lib_void_t                                        201411L <type_traits>
+ #   define __cpp_lib_char8_t                            201811L
+ # endif
+ // # define __cpp_lib_concepts                             202002L
+-// # define __cpp_lib_constexpr_algorithms                 201806L
++# define __cpp_lib_constexpr_algorithms                 201806L
+ // # define __cpp_lib_constexpr_complex                    201711L
+ # define __cpp_lib_constexpr_dynamic_alloc              201907L
+ # define __cpp_lib_constexpr_functional                 201907L
+diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp
+new file mode 100644
+index 000000000000..41ea82cc4845
+--- /dev/null
++++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp
+@@ -0,0 +1,101 @@
++//===----------------------------------------------------------------------===//
++//
++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
++// See https://llvm.org/LICENSE.txt for license information.
++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
++//
++//===----------------------------------------------------------------------===//
++
++// <algorithm>
++
++// template<RandomAccessIterator Iter>
++//   requires ShuffleIterator<Iter>
++//         && LessThanComparable<Iter::value_type>
++//   void
++//   sort(Iter first, Iter last);
++
++#include <algorithm>
++#include <cassert>
++
++#include "test_macros.h"
++#include "test_iterators.h"
++#include "MoveOnly.h"
++
++template<int N, class T, class Iter>
++TEST_CONSTEXPR_CXX20 bool test()
++{
++    int orig[N] = {};
++    unsigned x = 1;
++    for (int i=0; i < N; ++i) {
++        x = (x * 1664525) + 1013904223;
++        orig[i] = x % 1000;
++    }
++    T work[N] = {};
++    std::copy(orig, orig+N, work);
++    std::sort(Iter(work), Iter(work+N));
++    assert(std::is_sorted(work, work+N));
++    assert(std::is_permutation(work, work+N, orig));
++
++    return true;
++}
++
++template<int N, class T, class Iter>
++TEST_CONSTEXPR_CXX20 bool test_pointers()
++{
++    T data[N] = {};
++    T *orig[N] = {};
++    unsigned x = 1;
++    for (int i=0; i < N; ++i) {
++        orig[i] = &data[x % 258];
++    }
++    T *work[N] = {};
++    std::copy(orig, orig+N, work);
++    std::sort(Iter(work), Iter(work+N));
++    assert(std::is_sorted(work, work+N));
++    assert(std::is_permutation(work, work+N, orig));
++
++    return true;
++}
++
++int main(int, char**)
++{
++    test<7, int, int*>();
++    test<7, int, random_access_iterator<int*> >();
++    test<257, int, int*>();
++    test<257, int, random_access_iterator<int*> >();
++
++#if TEST_STD_VER >= 11
++    test<7, MoveOnly, MoveOnly*>();
++    test<7, MoveOnly, random_access_iterator<MoveOnly*> >();
++    test<257, MoveOnly, MoveOnly*>();
++    test<257, MoveOnly, random_access_iterator<MoveOnly*> >();
++#endif
++
++    test_pointers<17, char, char**>();
++    test_pointers<17, char, random_access_iterator<char**> >();
++    test_pointers<17, const char, const char**>();
++    test_pointers<17, const char, random_access_iterator<const char**> >();
++    test_pointers<17, int, int**>();
++    test_pointers<17, int, random_access_iterator<int**> >();
++
++#if TEST_STD_VER >= 20
++    static_assert(test<7, int, int*>());
++    static_assert(test<7, int, random_access_iterator<int*>>());
++    static_assert(test<257, int, int*>());
++    static_assert(test<257, int, random_access_iterator<int*>>());
++
++    static_assert(test<7, MoveOnly, MoveOnly*>());
++    static_assert(test<7, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<257, MoveOnly, MoveOnly*>());
++    static_assert(test<257, MoveOnly, random_access_iterator<MoveOnly*>>());
++
++    static_assert(test_pointers<17, char, char**>());
++    static_assert(test_pointers<17, char, random_access_iterator<char**>>());
++    static_assert(test_pointers<17, const char, const char**>());
++    static_assert(test_pointers<17, const char, random_access_iterator<const char**>>());
++    static_assert(test_pointers<17, int, int**>());
++    static_assert(test_pointers<17, int, random_access_iterator<int**>>());
++#endif
++
++    return 0;
++}
+diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp
+new file mode 100644
+index 000000000000..48f057ab8a7f
+--- /dev/null
++++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp
+@@ -0,0 +1,102 @@
++//===----------------------------------------------------------------------===//
++//
++// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
++// See https://llvm.org/LICENSE.txt for license information.
++// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
++//
++//===----------------------------------------------------------------------===//
++
++// <algorithm>
++
++// template<RandomAccessIterator Iter, StrictWeakOrder<auto, Iter::value_type> Compare>
++//   requires ShuffleIterator<Iter>
++//         && CopyConstructible<Compare>
++//   void
++//   sort(Iter first, Iter last, Compare comp);
++
++#include <algorithm>
++#include <cassert>
++#include <functional>
++
++#include "test_macros.h"
++#include "test_iterators.h"
++#include "MoveOnly.h"
++
++template<int N, class T, class Iter>
++TEST_CONSTEXPR_CXX20 bool test()
++{
++    int orig[N] = {};
++    unsigned x = 1;
++    for (int i=0; i < N; ++i) {
++        x = (x * 1664525) + 1013904223;
++        orig[i] = x % 1000;
++    }
++    T work[N] = {};
++    std::copy(orig, orig+N, work);
++    std::sort(Iter(work), Iter(work+N), std::greater<T>());
++    assert(std::is_sorted(work, work+N, std::greater<T>()));
++    assert(std::is_permutation(work, work+N, orig));
++
++    return true;
++}
++
++template<int N, class T, class Iter>
++TEST_CONSTEXPR_CXX20 bool test_pointers()
++{
++    T data[N] = {};
++    T *orig[N] = {};
++    unsigned x = 1;
++    for (int i=0; i < N; ++i) {
++        orig[i] = &data[x % 258];
++    }
++    T *work[N] = {};
++    std::copy(orig, orig+N, work);
++    std::sort(Iter(work), Iter(work+N), std::greater<T*>());
++    assert(std::is_sorted(work, work+N, std::greater<T*>()));
++    assert(std::is_permutation(work, work+N, orig));
++
++    return true;
++}
++
++int main(int, char**)
++{
++    test<7, int, int*>();
++    test<7, int, random_access_iterator<int*> >();
++    test<257, int, int*>();
++    test<257, int, random_access_iterator<int*> >();
++
++#if TEST_STD_VER >= 11
++    test<7, MoveOnly, MoveOnly*>();
++    test<7, MoveOnly, random_access_iterator<MoveOnly*> >();
++    test<257, MoveOnly, MoveOnly*>();
++    test<257, MoveOnly, random_access_iterator<MoveOnly*> >();
++#endif
++
++    test_pointers<17, char, char**>();
++    test_pointers<17, char, random_access_iterator<char**> >();
++    test_pointers<17, const char, const char**>();
++    test_pointers<17, const char, random_access_iterator<const char**> >();
++    test_pointers<17, int, int**>();
++    test_pointers<17, int, random_access_iterator<int**> >();
++
++#if TEST_STD_VER >= 20
++    static_assert(test<7, int, int*>());
++    static_assert(test<7, int, random_access_iterator<int*>>());
++    static_assert(test<257, int, int*>());
++    static_assert(test<257, int, random_access_iterator<int*>>());
++
++    static_assert(test<7, MoveOnly, MoveOnly*>());
++    static_assert(test<7, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<257, MoveOnly, MoveOnly*>());
++    static_assert(test<257, MoveOnly, random_access_iterator<MoveOnly*>>());
++
++    static_assert(test_pointers<17, char, char**>());
++    static_assert(test_pointers<17, char, random_access_iterator<char**>>());
++    static_assert(test_pointers<17, const char, const char**>());
++    static_assert(test_pointers<17, const char, random_access_iterator<const char**>>());
++    static_assert(test_pointers<17, int, int**>());
++    static_assert(test_pointers<17, int, random_access_iterator<int**>>());
++#endif
++
++    return 0;
++}
+diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp
+index e081ca79f6f0..eb7591540eac 100644
+--- a/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp
++++ b/libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.pass.cpp
+@@ -148,17 +148,11 @@
+ #   error "__cpp_lib_clamp should have the value 201603L in c++20"
+ # endif
+ 
+-# if !defined(_LIBCPP_VERSION)
+-#   ifndef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should be defined in c++20"
+-#   endif
+-#   if __cpp_lib_constexpr_algorithms != 201806L
+-#     error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
+-#   endif
+-# else // _LIBCPP_VERSION
+-#   ifdef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should not be defined because it is unimplemented in libc++!"
+-#   endif
++# ifndef __cpp_lib_constexpr_algorithms
++#   error "__cpp_lib_constexpr_algorithms should be defined in c++20"
++# endif
++# if __cpp_lib_constexpr_algorithms != 201806L
++#   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
+ # endif
+ 
+ # if !defined(_LIBCPP_VERSION)
+@@ -217,17 +211,11 @@
+ #   error "__cpp_lib_clamp should have the value 201603L in c++2b"
+ # endif
+ 
+-# if !defined(_LIBCPP_VERSION)
+-#   ifndef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should be defined in c++2b"
+-#   endif
+-#   if __cpp_lib_constexpr_algorithms != 201806L
+-#     error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++2b"
+-#   endif
+-# else // _LIBCPP_VERSION
+-#   ifdef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should not be defined because it is unimplemented in libc++!"
+-#   endif
++# ifndef __cpp_lib_constexpr_algorithms
++#   error "__cpp_lib_constexpr_algorithms should be defined in c++2b"
++# endif
++# if __cpp_lib_constexpr_algorithms != 201806L
++#   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++2b"
+ # endif
+ 
+ # if !defined(_LIBCPP_VERSION)
+diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
+index 2fe0dfc264f7..1bb4928bd552 100644
+--- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
++++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.pass.cpp
+@@ -2389,17 +2389,11 @@
+ #   endif
+ # endif
+ 
+-# if !defined(_LIBCPP_VERSION)
+-#   ifndef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should be defined in c++20"
+-#   endif
+-#   if __cpp_lib_constexpr_algorithms != 201806L
+-#     error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
+-#   endif
+-# else // _LIBCPP_VERSION
+-#   ifdef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should not be defined because it is unimplemented in libc++!"
+-#   endif
++# ifndef __cpp_lib_constexpr_algorithms
++#   error "__cpp_lib_constexpr_algorithms should be defined in c++20"
++# endif
++# if __cpp_lib_constexpr_algorithms != 201806L
++#   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
+ # endif
+ 
+ # if !defined(_LIBCPP_VERSION)
+@@ -3608,17 +3602,11 @@
+ #   endif
+ # endif
+ 
+-# if !defined(_LIBCPP_VERSION)
+-#   ifndef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should be defined in c++2b"
+-#   endif
+-#   if __cpp_lib_constexpr_algorithms != 201806L
+-#     error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++2b"
+-#   endif
+-# else // _LIBCPP_VERSION
+-#   ifdef __cpp_lib_constexpr_algorithms
+-#     error "__cpp_lib_constexpr_algorithms should not be defined because it is unimplemented in libc++!"
+-#   endif
++# ifndef __cpp_lib_constexpr_algorithms
++#   error "__cpp_lib_constexpr_algorithms should be defined in c++2b"
++# endif
++# if __cpp_lib_constexpr_algorithms != 201806L
++#   error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++2b"
+ # endif
+ 
+ # if !defined(_LIBCPP_VERSION)
+diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py
+index 6abc13208538..5537d9b9f1cc 100755
+--- a/libcxx/utils/generate_feature_test_macro_components.py
++++ b/libcxx/utils/generate_feature_test_macro_components.py
+@@ -182,7 +182,6 @@ feature_test_macros = [ add_version_header(x) for x in [
+     "name": "__cpp_lib_constexpr_algorithms",
+     "values": { "c++20": 201806 },
+     "headers": ["algorithm"],
+-    "unimplemented": True,
+   }, {
+     "name": "__cpp_lib_constexpr_complex",
+     "values": { "c++20": 201711 },
diff --git a/sys-libs/libcxx/files/85167fb7c2920ca8874b197ef397e8e6b9d87c73.patch b/sys-libs/libcxx/files/85167fb7c2920ca8874b197ef397e8e6b9d87c73.patch
new file mode 100644
index 0000000..4dac019
--- /dev/null
+++ b/sys-libs/libcxx/files/85167fb7c2920ca8874b197ef397e8e6b9d87c73.patch
@@ -0,0 +1,562 @@
+commit 85167fb7c2920ca8874b197ef397e8e6b9d87c73
+Author: Arthur O'Dwyer <arthur.j.odwyer@gmail.com>
+Date:   Wed Feb 3 17:54:13 2021 -0500
+
+    [libc++] Further improve the contiguous-iterator story, and fix some bugs.
+    
+    - Quality-of-implementation: Avoid calling __unwrap_iter in constexpr contexts.
+        The user might conceivably write a contiguous iterator where normal iterator
+        arithmetic is constexpr-friendly but `std::to_address(it)` isn't.
+    
+    - Bugfix: When you pass contiguous iterators to `std::copy`, you should get
+        back your contiguous iterator type, not a raw pointer. That means that
+        libc++ can't `__unwrap_iter` unless it also does `__rewrap_iter`.
+        Fortunately, this is implementable.
+    
+    - Improve test coverage of the new `contiguous_iterator` test iterator.
+        This catches the bug described above.
+    
+    - Tests: Stop testing that we can `std::copy` //into// an `input_iterator`.
+        Our test iterators may currently support that, but it seems nonsensical to me.
+    
+    Differential Revision: https://reviews.llvm.org/D95983
+
+diff --git a/libcxx/include/algorithm b/libcxx/include/algorithm
+index 04126a1f4836..4c139296a816 100644
+--- a/libcxx/include/algorithm
++++ b/libcxx/include/algorithm
+@@ -1639,12 +1639,22 @@ search_n(_ForwardIterator __first, _ForwardIterator __last, _Size __count, const
+                            __value_, __equal_to<__v, _Tp>());
+ }
+ 
+-// __unwrap_iter
++// __unwrap_iter, __rewrap_iter
+ 
+-// The job of __unwrap_iter is to lower iterators-that-are-tantamount-to-pointers
+-// (such as vector<T>::iterator) into pointers, to reduce the number of template
++// The job of __unwrap_iter is to lower contiguous iterators (such as
++// vector<T>::iterator) into pointers, to reduce the number of template
+ // instantiations and to enable pointer-based optimizations e.g. in std::copy.
++// For iterators that are not contiguous, it must be a no-op.
+ // In debug mode, we don't do this.
++//
++// __unwrap_iter is non-constexpr for user-defined iterators whose
++// `to_address` and/or `operator->` is non-constexpr. This is okay; but we
++// try to avoid doing __unwrap_iter in constant-evaluated contexts anyway.
++//
++// Some algorithms (e.g. std::copy, but not std::sort) need to convert an
++// "unwrapped" result back into a contiguous iterator. Since contiguous iterators
++// are random-access, we can do this portably using iterator arithmetic; this
++// is the job of __rewrap_iter.
+ 
+ template <class _Iter, bool = __is_cpp17_contiguous_iterator<_Iter>::value>
+ struct __unwrap_iter_impl {
+@@ -1674,6 +1684,20 @@ __unwrap_iter(_Iter __i) _NOEXCEPT
+     return _Impl::__apply(__i);
+ }
+ 
++template<class _OrigIter>
++_OrigIter __rewrap_iter(_OrigIter, _OrigIter __result)
++{
++    return __result;
++}
++
++template<class _OrigIter, class _UnwrappedIter>
++_OrigIter __rewrap_iter(_OrigIter __first, _UnwrappedIter __result)
++{
++    // Precondition: __result is reachable from __first
++    // Precondition: _OrigIter is a contiguous iterator
++    return __first + (__result - _VSTD::__unwrap_iter(__first));
++}
++
+ // copy
+ 
+ template <class _InputIterator, class _OutputIterator>
+@@ -1716,11 +1740,12 @@ _OutputIterator
+ copy(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
+ {
+     if (__libcpp_is_constant_evaluated()) {
+-        return _VSTD::__copy_constexpr(
+-            _VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _VSTD::__unwrap_iter(__result));
++        return _VSTD::__copy_constexpr(__first, __last, __result);
+     } else {
+-        return _VSTD::__copy(
+-            _VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _VSTD::__unwrap_iter(__result));
++        return _VSTD::__rewrap_iter(__result,
++            _VSTD::__copy(_VSTD::__unwrap_iter(__first),
++                          _VSTD::__unwrap_iter(__last),
++                          _VSTD::__unwrap_iter(__result)));
+     }
+ }
+ 
+@@ -1770,13 +1795,12 @@ copy_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last,
+               _BidirectionalIterator2 __result)
+ {
+     if (__libcpp_is_constant_evaluated()) {
+-        return _VSTD::__copy_backward_constexpr(_VSTD::__unwrap_iter(__first),
+-                                                _VSTD::__unwrap_iter(__last),
+-                                                _VSTD::__unwrap_iter(__result));
++        return _VSTD::__copy_backward_constexpr(__first, __last, __result);
+     } else {
+-        return _VSTD::__copy_backward(_VSTD::__unwrap_iter(__first),
+-                                      _VSTD::__unwrap_iter(__last),
+-                                      _VSTD::__unwrap_iter(__result));
++        return _VSTD::__rewrap_iter(__result,
++            _VSTD::__copy_backward(_VSTD::__unwrap_iter(__first),
++                                   _VSTD::__unwrap_iter(__last),
++                                   _VSTD::__unwrap_iter(__result)));
+     }
+ }
+ 
+@@ -1843,8 +1867,6 @@ copy_n(_InputIterator __first, _Size __orig_n, _OutputIterator __result)
+ 
+ // move
+ 
+-// __move_constexpr exists so that __move doesn't call itself when delegating to the constexpr
+-// version of __move.
+ template <class _InputIterator, class _OutputIterator>
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
+ _OutputIterator
+@@ -1873,8 +1895,6 @@ typename enable_if
+ >::type
+ __move(_Tp* __first, _Tp* __last, _Up* __result)
+ {
+-    if (__libcpp_is_constant_evaluated())
+-        return _VSTD::__move_constexpr(__first, __last, __result);
+     const size_t __n = static_cast<size_t>(__last - __first);
+     if (__n > 0)
+         _VSTD::memmove(__result, __first, __n * sizeof(_Up));
+@@ -1886,13 +1906,18 @@ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17
+ _OutputIterator
+ move(_InputIterator __first, _InputIterator __last, _OutputIterator __result)
+ {
+-    return _VSTD::__move(_VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _VSTD::__unwrap_iter(__result));
++    if (__libcpp_is_constant_evaluated()) {
++        return _VSTD::__move_constexpr(__first, __last, __result);
++    } else {
++        return _VSTD::__rewrap_iter(__result,
++            _VSTD::__move(_VSTD::__unwrap_iter(__first),
++                          _VSTD::__unwrap_iter(__last),
++                          _VSTD::__unwrap_iter(__result)));
++    }
+ }
+ 
+ // move_backward
+ 
+-// __move_backward_constexpr exists so that __move_backward doesn't call itself when delegating to
+-// the constexpr version of __move_backward.
+ template <class _InputIterator, class _OutputIterator>
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX14
+ _OutputIterator
+@@ -1921,8 +1946,6 @@ typename enable_if
+ >::type
+ __move_backward(_Tp* __first, _Tp* __last, _Up* __result)
+ {
+-    if (__libcpp_is_constant_evaluated())
+-        return _VSTD::__move_backward_constexpr(__first, __last, __result);
+     const size_t __n = static_cast<size_t>(__last - __first);
+     if (__n > 0)
+     {
+@@ -1938,7 +1961,14 @@ _BidirectionalIterator2
+ move_backward(_BidirectionalIterator1 __first, _BidirectionalIterator1 __last,
+               _BidirectionalIterator2 __result)
+ {
+-    return _VSTD::__move_backward(_VSTD::__unwrap_iter(__first), _VSTD::__unwrap_iter(__last), _VSTD::__unwrap_iter(__result));
++    if (__libcpp_is_constant_evaluated()) {
++        return _VSTD::__move_backward_constexpr(__first, __last, __result);
++    } else {
++        return _VSTD::__rewrap_iter(__result,
++            _VSTD::__move_backward(_VSTD::__unwrap_iter(__first),
++                                   _VSTD::__unwrap_iter(__last),
++                                   _VSTD::__unwrap_iter(__result)));
++    }
+ }
+ 
+ // iter_swap
+diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
+index 32c42b6caf3a..b8d880d09526 100644
+--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy.pass.cpp
+@@ -40,40 +40,49 @@ TEST_CONSTEXPR_CXX20 bool
+ test()
+ {
+     test_copy<input_iterator<const int*>, output_iterator<int*> >();
+-    test_copy<input_iterator<const int*>, input_iterator<int*> >();
+     test_copy<input_iterator<const int*>, forward_iterator<int*> >();
+     test_copy<input_iterator<const int*>, bidirectional_iterator<int*> >();
+     test_copy<input_iterator<const int*>, random_access_iterator<int*> >();
+     test_copy<input_iterator<const int*>, int*>();
+ 
+     test_copy<forward_iterator<const int*>, output_iterator<int*> >();
+-    test_copy<forward_iterator<const int*>, input_iterator<int*> >();
+     test_copy<forward_iterator<const int*>, forward_iterator<int*> >();
+     test_copy<forward_iterator<const int*>, bidirectional_iterator<int*> >();
+     test_copy<forward_iterator<const int*>, random_access_iterator<int*> >();
+     test_copy<forward_iterator<const int*>, int*>();
+ 
+     test_copy<bidirectional_iterator<const int*>, output_iterator<int*> >();
+-    test_copy<bidirectional_iterator<const int*>, input_iterator<int*> >();
+     test_copy<bidirectional_iterator<const int*>, forward_iterator<int*> >();
+     test_copy<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
+     test_copy<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
+     test_copy<bidirectional_iterator<const int*>, int*>();
+ 
+     test_copy<random_access_iterator<const int*>, output_iterator<int*> >();
+-    test_copy<random_access_iterator<const int*>, input_iterator<int*> >();
+     test_copy<random_access_iterator<const int*>, forward_iterator<int*> >();
+     test_copy<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
+     test_copy<random_access_iterator<const int*>, random_access_iterator<int*> >();
+     test_copy<random_access_iterator<const int*>, int*>();
+ 
+     test_copy<const int*, output_iterator<int*> >();
+-    test_copy<const int*, input_iterator<int*> >();
+     test_copy<const int*, forward_iterator<int*> >();
+     test_copy<const int*, bidirectional_iterator<int*> >();
+     test_copy<const int*, random_access_iterator<int*> >();
+     test_copy<const int*, int*>();
+ 
++#if TEST_STD_VER > 17
++    test_copy<input_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy<forward_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy<bidirectional_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy<random_access_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy<const int*, contiguous_iterator<int*>>();
++
++    test_copy<contiguous_iterator<const int*>, output_iterator<int*>>();
++    test_copy<contiguous_iterator<const int*>, forward_iterator<int*>>();
++    test_copy<contiguous_iterator<const int*>, bidirectional_iterator<int*>>();
++    test_copy<contiguous_iterator<const int*>, random_access_iterator<int*>>();
++    test_copy<contiguous_iterator<const int*>, int*>();
++#endif
++
+   return true;
+ }
+ 
+diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
+index 6f1743cb221a..78dda56b8b94 100644
+--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.copy/copy_backward.pass.cpp
+@@ -53,6 +53,17 @@ test()
+     test_copy_backward<const int*, random_access_iterator<int*> >();
+     test_copy_backward<const int*, int*>();
+ 
++#if TEST_STD_VER > 17
++    test_copy_backward<contiguous_iterator<const int*>, bidirectional_iterator<int*>>();
++    test_copy_backward<contiguous_iterator<const int*>, random_access_iterator<int*>>();
++    test_copy_backward<contiguous_iterator<const int*>, int*>();
++
++    test_copy_backward<bidirectional_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy_backward<random_access_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy_backward<contiguous_iterator<const int*>, contiguous_iterator<int*>>();
++    test_copy_backward<const int*, contiguous_iterator<int*>>();
++#endif
++
+     return true;
+ }
+ 
+diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
+index 44a075f5306c..ca65631956b3 100644
+--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move.pass.cpp
+@@ -64,35 +64,30 @@ test1()
+ int main(int, char**)
+ {
+     test<input_iterator<const int*>, output_iterator<int*> >();
+-    test<input_iterator<const int*>, input_iterator<int*> >();
+     test<input_iterator<const int*>, forward_iterator<int*> >();
+     test<input_iterator<const int*>, bidirectional_iterator<int*> >();
+     test<input_iterator<const int*>, random_access_iterator<int*> >();
+     test<input_iterator<const int*>, int*>();
+ 
+     test<forward_iterator<const int*>, output_iterator<int*> >();
+-    test<forward_iterator<const int*>, input_iterator<int*> >();
+     test<forward_iterator<const int*>, forward_iterator<int*> >();
+     test<forward_iterator<const int*>, bidirectional_iterator<int*> >();
+     test<forward_iterator<const int*>, random_access_iterator<int*> >();
+     test<forward_iterator<const int*>, int*>();
+ 
+     test<bidirectional_iterator<const int*>, output_iterator<int*> >();
+-    test<bidirectional_iterator<const int*>, input_iterator<int*> >();
+     test<bidirectional_iterator<const int*>, forward_iterator<int*> >();
+     test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >();
+     test<bidirectional_iterator<const int*>, random_access_iterator<int*> >();
+     test<bidirectional_iterator<const int*>, int*>();
+ 
+     test<random_access_iterator<const int*>, output_iterator<int*> >();
+-    test<random_access_iterator<const int*>, input_iterator<int*> >();
+     test<random_access_iterator<const int*>, forward_iterator<int*> >();
+     test<random_access_iterator<const int*>, bidirectional_iterator<int*> >();
+     test<random_access_iterator<const int*>, random_access_iterator<int*> >();
+     test<random_access_iterator<const int*>, int*>();
+ 
+     test<const int*, output_iterator<int*> >();
+-    test<const int*, input_iterator<int*> >();
+     test<const int*, forward_iterator<int*> >();
+     test<const int*, bidirectional_iterator<int*> >();
+     test<const int*, random_access_iterator<int*> >();
+@@ -100,35 +95,30 @@ int main(int, char**)
+ 
+ #if TEST_STD_VER >= 11
+     test1<input_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+-    test1<input_iterator<std::unique_ptr<int>*>, input_iterator<std::unique_ptr<int>*> >();
+     test1<input_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
+     test1<input_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
+     test1<input_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
+     test1<input_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
+ 
+     test1<forward_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+-    test1<forward_iterator<std::unique_ptr<int>*>, input_iterator<std::unique_ptr<int>*> >();
+     test1<forward_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
+     test1<forward_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
+     test1<forward_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
+     test1<forward_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
+ 
+     test1<bidirectional_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+-    test1<bidirectional_iterator<std::unique_ptr<int>*>, input_iterator<std::unique_ptr<int>*> >();
+     test1<bidirectional_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
+     test1<bidirectional_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
+     test1<bidirectional_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
+     test1<bidirectional_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
+ 
+     test1<random_access_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*> >();
+-    test1<random_access_iterator<std::unique_ptr<int>*>, input_iterator<std::unique_ptr<int>*> >();
+     test1<random_access_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*> >();
+     test1<random_access_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*> >();
+     test1<random_access_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*> >();
+     test1<random_access_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
+ 
+     test1<std::unique_ptr<int>*, output_iterator<std::unique_ptr<int>*> >();
+-    test1<std::unique_ptr<int>*, input_iterator<std::unique_ptr<int>*> >();
+     test1<std::unique_ptr<int>*, forward_iterator<std::unique_ptr<int>*> >();
+     test1<std::unique_ptr<int>*, bidirectional_iterator<std::unique_ptr<int>*> >();
+     test1<std::unique_ptr<int>*, random_access_iterator<std::unique_ptr<int>*> >();
+@@ -136,34 +126,70 @@ int main(int, char**)
+ #endif // TEST_STD_VER >= 11
+ 
+ #if TEST_STD_VER > 17
++    test<input_iterator<const int*>, contiguous_iterator<int*>>();
++    test<forward_iterator<const int*>, contiguous_iterator<int*>>();
++    test<bidirectional_iterator<const int*>, contiguous_iterator<int*>>();
++    test<random_access_iterator<const int*>, contiguous_iterator<int*>>();
++    test<const int*, contiguous_iterator<int*>>();
++    test<contiguous_iterator<const int*>, output_iterator<int*>>();
++    test<contiguous_iterator<const int*>, forward_iterator<int*>>();
++    test<contiguous_iterator<const int*>, bidirectional_iterator<int*>>();
++    test<contiguous_iterator<const int*>, random_access_iterator<int*>>();
++    test<contiguous_iterator<const int*>, int*>();
++    test<contiguous_iterator<const int*>, contiguous_iterator<int*>>();
++
++    test1<input_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<forward_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<bidirectional_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<random_access_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<std::unique_ptr<int>*, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, output_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, forward_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++
+     static_assert(test<input_iterator<const int*>, input_iterator<int*> >());
+     static_assert(test<input_iterator<const int*>, forward_iterator<int*> >());
+     static_assert(test<input_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<input_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<input_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<input_iterator<const int*>, int*>());
+ 
+     static_assert(test<forward_iterator<const int*>, input_iterator<int*> >());
+     static_assert(test<forward_iterator<const int*>, forward_iterator<int*> >());
+     static_assert(test<forward_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<forward_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<forward_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<forward_iterator<const int*>, int*>());
+ 
+     static_assert(test<bidirectional_iterator<const int*>, input_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, forward_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<bidirectional_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, int*>());
+ 
+     static_assert(test<random_access_iterator<const int*>, input_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, forward_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<random_access_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, int*>());
+ 
++    static_assert(test<contiguous_iterator<const int*>, input_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, forward_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, bidirectional_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, contiguous_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, int*>());
++
+     static_assert(test<const int*, input_iterator<int*> >());
+     static_assert(test<const int*, forward_iterator<int*> >());
+     static_assert(test<const int*, bidirectional_iterator<int*> >());
+     static_assert(test<const int*, random_access_iterator<int*> >());
++    static_assert(test<const int*, contiguous_iterator<int*> >());
+     static_assert(test<const int*, int*>());
+ #endif  // TEST_STD_VER > 17
+ 
+diff --git a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
+index ec7371c6d24c..2e43cd20b148 100644
+--- a/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.modifying.operations/alg.move/move_backward.pass.cpp
+@@ -89,16 +89,40 @@ int main(int, char**)
+ #endif // TEST_STD_VER >= 11
+ 
+ #if TEST_STD_VER > 17
++    test<bidirectional_iterator<const int*>, contiguous_iterator<int*>>();
++    test<random_access_iterator<const int*>, contiguous_iterator<int*>>();
++    test<const int*, contiguous_iterator<int*>>();
++    test<contiguous_iterator<const int*>, bidirectional_iterator<int*>>();
++    test<contiguous_iterator<const int*>, random_access_iterator<int*>>();
++    test<contiguous_iterator<const int*>, int*>();
++    test<contiguous_iterator<const int*>, contiguous_iterator<int*>>();
++
++    test1<bidirectional_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<random_access_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<std::unique_ptr<int>*, contiguous_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, bidirectional_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, random_access_iterator<std::unique_ptr<int>*>>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, std::unique_ptr<int>*>();
++    test1<contiguous_iterator<std::unique_ptr<int>*>, contiguous_iterator<std::unique_ptr<int>*>>();
++
+     static_assert(test<bidirectional_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<bidirectional_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<bidirectional_iterator<const int*>, int*>());
+ 
+     static_assert(test<random_access_iterator<const int*>, bidirectional_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<random_access_iterator<const int*>, contiguous_iterator<int*> >());
+     static_assert(test<random_access_iterator<const int*>, int*>());
+ 
++    static_assert(test<contiguous_iterator<const int*>, bidirectional_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, random_access_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, contiguous_iterator<int*> >());
++    static_assert(test<contiguous_iterator<const int*>, int*>());
++
+     static_assert(test<const int*, bidirectional_iterator<int*> >());
+     static_assert(test<const int*, random_access_iterator<int*> >());
++    static_assert(test<const int*, contiguous_iterator<int*> >());
+     static_assert(test<const int*, int*>());
+ #endif  // TEST_STD_VER > 17
+ 
+diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp
+index 41ea82cc4845..d719f002351d 100644
+--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr.pass.cpp
+@@ -79,22 +79,37 @@ int main(int, char**)
+     test_pointers<17, int, random_access_iterator<int**> >();
+ 
+ #if TEST_STD_VER >= 20
++    test<7, int, contiguous_iterator<int*>>();
++    test<257, int, contiguous_iterator<int*>>();
++    test<7, MoveOnly, contiguous_iterator<MoveOnly*>>();
++    test<257, MoveOnly, contiguous_iterator<MoveOnly*>>();
++    test_pointers<17, char, contiguous_iterator<char**>>();
++    test_pointers<17, const char, contiguous_iterator<const char**>>();
++    test_pointers<17, int, contiguous_iterator<int**>>();
++
+     static_assert(test<7, int, int*>());
+     static_assert(test<7, int, random_access_iterator<int*>>());
++    static_assert(test<7, int, contiguous_iterator<int*>>());
+     static_assert(test<257, int, int*>());
+     static_assert(test<257, int, random_access_iterator<int*>>());
++    static_assert(test<257, int, contiguous_iterator<int*>>());
+ 
+     static_assert(test<7, MoveOnly, MoveOnly*>());
+     static_assert(test<7, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<7, MoveOnly, contiguous_iterator<MoveOnly*>>());
+     static_assert(test<257, MoveOnly, MoveOnly*>());
+     static_assert(test<257, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<257, MoveOnly, contiguous_iterator<MoveOnly*>>());
+ 
+     static_assert(test_pointers<17, char, char**>());
+     static_assert(test_pointers<17, char, random_access_iterator<char**>>());
++    static_assert(test_pointers<17, char, contiguous_iterator<char**>>());
+     static_assert(test_pointers<17, const char, const char**>());
+     static_assert(test_pointers<17, const char, random_access_iterator<const char**>>());
++    static_assert(test_pointers<17, const char, contiguous_iterator<const char**>>());
+     static_assert(test_pointers<17, int, int**>());
+     static_assert(test_pointers<17, int, random_access_iterator<int**>>());
++    static_assert(test_pointers<17, int, contiguous_iterator<int**>>());
+ #endif
+ 
+     return 0;
+diff --git a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp
+index 48f057ab8a7f..bfdefedb7f34 100644
+--- a/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp
++++ b/libcxx/test/std/algorithms/alg.sorting/alg.sort/sort/sort_constexpr_comp.pass.cpp
+@@ -80,22 +80,37 @@ int main(int, char**)
+     test_pointers<17, int, random_access_iterator<int**> >();
+ 
+ #if TEST_STD_VER >= 20
++    test<7, int, contiguous_iterator<int*>>();
++    test<257, int, contiguous_iterator<int*>>();
++    test<7, MoveOnly, contiguous_iterator<MoveOnly*>>();
++    test<257, MoveOnly, contiguous_iterator<MoveOnly*>>();
++    test_pointers<17, char, contiguous_iterator<char**>>();
++    test_pointers<17, const char, contiguous_iterator<const char**>>();
++    test_pointers<17, int, contiguous_iterator<int**>>();
++
+     static_assert(test<7, int, int*>());
+     static_assert(test<7, int, random_access_iterator<int*>>());
++    static_assert(test<7, int, contiguous_iterator<int*>>());
+     static_assert(test<257, int, int*>());
+     static_assert(test<257, int, random_access_iterator<int*>>());
++    static_assert(test<257, int, contiguous_iterator<int*>>());
+ 
+     static_assert(test<7, MoveOnly, MoveOnly*>());
+     static_assert(test<7, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<7, MoveOnly, contiguous_iterator<MoveOnly*>>());
+     static_assert(test<257, MoveOnly, MoveOnly*>());
+     static_assert(test<257, MoveOnly, random_access_iterator<MoveOnly*>>());
++    static_assert(test<257, MoveOnly, contiguous_iterator<MoveOnly*>>());
+ 
+     static_assert(test_pointers<17, char, char**>());
+     static_assert(test_pointers<17, char, random_access_iterator<char**>>());
++    static_assert(test_pointers<17, char, contiguous_iterator<char**>>());
+     static_assert(test_pointers<17, const char, const char**>());
+     static_assert(test_pointers<17, const char, random_access_iterator<const char**>>());
++    static_assert(test_pointers<17, const char, contiguous_iterator<const char**>>());
+     static_assert(test_pointers<17, int, int**>());
+     static_assert(test_pointers<17, int, random_access_iterator<int**>>());
++    static_assert(test_pointers<17, int, contiguous_iterator<int**>>());
+ #endif
+ 
+     return 0;
+diff --git a/libcxx/test/support/test_iterators.h b/libcxx/test/support/test_iterators.h
+index 71ef2d58628b..7ada4bb36553 100644
+--- a/libcxx/test/support/test_iterators.h
++++ b/libcxx/test/support/test_iterators.h
+@@ -315,6 +315,8 @@ operator-(const random_access_iterator<T>& x, const random_access_iterator<U>& y
+ template <class It>
+ class contiguous_iterator
+ {
++    static_assert(std::is_pointer_v<It>, "Things probably break in this case");
++
+     It it_;
+ 
+     template <class U> friend class contiguous_iterator;
+@@ -324,14 +326,14 @@ public:
+     typedef typename std::iterator_traits<It>::difference_type difference_type;
+     typedef It                                                 pointer;
+     typedef typename std::iterator_traits<It>::reference       reference;
+-    typedef typename std::iterator_traits<It>::value_type      element_type;
++    typedef typename std::remove_pointer<It>::type             element_type;
+ 
+     TEST_CONSTEXPR_CXX14 It base() const {return it_;}
+ 
+     TEST_CONSTEXPR_CXX14 contiguous_iterator() : it_() {}
+     explicit TEST_CONSTEXPR_CXX14 contiguous_iterator(It it) : it_(it) {}
+     template <class U>
+-        TEST_CONSTEXPR_CXX14 contiguous_iterator(const contiguous_iterator<U>& u) :it_(u.it_) {}
++        TEST_CONSTEXPR_CXX14 contiguous_iterator(const contiguous_iterator<U>& u) : it_(u.it_) {}
+ 
+     TEST_CONSTEXPR_CXX14 reference operator*() const {return *it_;}
+     TEST_CONSTEXPR_CXX14 pointer operator->() const {return it_;}
diff --git a/sys-libs/libcxx/files/PATCHES.json b/sys-libs/libcxx/files/PATCHES.json
index 11084bd..c91ac1a 100644
--- a/sys-libs/libcxx/files/PATCHES.json
+++ b/sys-libs/libcxx/files/PATCHES.json
@@ -8,11 +8,30 @@
     {
         "comment": "Link libcxx with gcc_eh when linking with gcc_s is not desired",
         "rel_patch_path": "libcxx-11-use-libgcc_eh.patch",
-        "start_version": 392069
+        "start_version": 392069,
+        "end_version": 419078
     },
     {
-         "comment": "[libc++] Add missing visibility annotation for __base",
-         "rel_patch_path": "cherry/30ccc2e8d24b53273aae9cc21740f02ffb3018dc.patch",
-         "end_version": 387601
+        "comment": "[libc++] Add missing visibility annotation for __base",
+        "rel_patch_path": "cherry/30ccc2e8d24b53273aae9cc21740f02ffb3018dc.patch",
+        "end_version": 387601
+    },
+    {
+        "comment": "[libc++] [P0879] constexpr std::sort",
+        "rel_patch_path": "493f1407927cdf6db2e08f150ed9f9b8abe4ac45.patch",
+        "start_version": 417943,
+        "end_version": 417956
+    },
+    {
+        "comment": "[libc++] Further improve the contiguous-iterator story, and fix some bugs.",
+        "rel_patch_path": "85167fb7c2920ca8874b197ef397e8e6b9d87c73.patch",
+        "start_version": 417943,
+        "end_version": 418174
+    },
+    {
+        "comment": "Disable CFI in __get_elem to allow casting a pointer to uninitialized memory",
+        "rel_patch_path": "bab74864168bb5e28ecbc0294fe1095d8da7f569.patch",
+        "start_version": 415517,
+        "end_version": 417837
     }
-]
+]
\ No newline at end of file
diff --git a/sys-libs/libcxx/files/bab74864168bb5e28ecbc0294fe1095d8da7f569.patch b/sys-libs/libcxx/files/bab74864168bb5e28ecbc0294fe1095d8da7f569.patch
new file mode 100644
index 0000000..c72a74c
--- /dev/null
+++ b/sys-libs/libcxx/files/bab74864168bb5e28ecbc0294fe1095d8da7f569.patch
@@ -0,0 +1,23 @@
+commit bab74864168bb5e28ecbc0294fe1095d8da7f569
+Author: Reid Kleckner <rnk@google.com>
+Date:   Mon Feb 1 15:18:42 2021 -0800
+
+    Disable CFI in __get_elem to allow casting a pointer to uninitialized memory
+    
+    Fixes usage of shared_ptr with CFI enabled, which is llvm.org/pr48993.
+    
+    Differential Revision: https://reviews.llvm.org/D95827
+
+diff --git a/libcxx/include/memory b/libcxx/include/memory
+index a00916c8c03f..39d0f5bee6a5 100644
+--- a/libcxx/include/memory
++++ b/libcxx/include/memory
+@@ -2647,7 +2647,7 @@ private:
+             _Alloc *__alloc = reinterpret_cast<_Alloc*>(__first);
+             return __alloc;
+         }
+-        _Tp* __get_elem() _NOEXCEPT {
++        _LIBCPP_NO_CFI _Tp* __get_elem() _NOEXCEPT {
+             _CompressedPair *__as_pair = reinterpret_cast<_CompressedPair*>(__blob_);
+             typename _CompressedPair::_Base2* __second = _CompressedPair::__get_second_base(__as_pair);
+             _Tp *__elem = reinterpret_cast<_Tp*>(__second);
diff --git a/sys-libs/libcxx/libcxx-12.0_pre408248-r3.ebuild b/sys-libs/libcxx/libcxx-12.0_pre408248-r3.ebuild
deleted file mode 120000
index 1875b44..0000000
--- a/sys-libs/libcxx/libcxx-12.0_pre408248-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-libcxx-12.0_pre408248.ebuild
\ No newline at end of file
diff --git a/sys-libs/libcxx/libcxx-12.0_pre408248.ebuild b/sys-libs/libcxx/libcxx-12.0_pre408248.ebuild
deleted file mode 100644
index c61ad2b..0000000
--- a/sys-libs/libcxx/libcxx-12.0_pre408248.ebuild
+++ /dev/null
@@ -1,207 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-# Ninja provides better scalability and cleaner verbose output, and is used
-# throughout all LLVM projects.
-: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
-PYTHON_COMPAT=( python3_6 )
-
-inherit cmake-multilib cros-constants cros-llvm git-2 llvm python-any-r1 toolchain-funcs
-
-DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
-HOMEPAGE="http://libcxx.llvm.org/"
-SRC_URI=""
-
-EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project
-	${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project"
-
-LLVM_HASH="f402e682d0ef5598eeffc9a21a691b03e602ff58" # r408248
-LLVM_NEXT_HASH="7f6f9f4cf966c78a315d15d6e913c43cfa45c47c" # r412851
-
-LICENSE="|| ( UoI-NCSA MIT )"
-SLOT="0"
-KEYWORDS="*"
-IUSE="+compiler-rt cros_host elibc_glibc elibc_musl +libcxxabi libcxxrt libunwind llvm-next llvm-tot msan +static-libs"
-REQUIRED_USE="libunwind? ( || ( libcxxabi libcxxrt ) )
-	?? ( libcxxabi libcxxrt )"
-
-RDEPEND="
-	libcxxabi? ( ${CATEGORY}/libcxxabi[libunwind=,static-libs?,${MULTILIB_USEDEP}] )
-	libcxxrt? ( ${CATEGORY}/libcxxrt[libunwind=,static-libs?,${MULTILIB_USEDEP}] )
-	!libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) )
-	!cros_host? ( sys-libs/gcc-libs )"
-DEPEND="${RDEPEND}
-	cros_host? ( sys-devel/llvm )
-	app-arch/xz-utils"
-
-python_check_deps() {
-	has_version "dev-python/lit[${PYTHON_USEDEP}]"
-}
-
-src_unpack() {
-	if use llvm-next || use llvm-tot; then
-		export EGIT_COMMIT="${LLVM_NEXT_HASH}"
-	else
-		export EGIT_COMMIT="${LLVM_HASH}"
-	fi
-	git-2_src_unpack
-}
-
-src_prepare() {
-	"${FILESDIR}"/patch_manager/patch_manager.py \
-		--svn_version "$(get_most_recent_revision)" \
-		--patch_metadata_file "${FILESDIR}"/PATCHES.json \
-		--filesdir_path "${FILESDIR}" \
-		--src_path "${S}" || die
-
-	eapply_user
-}
-
-pkg_setup() {
-	setup_cross_toolchain
-	llvm_pkg_setup
-
-	if ! use libcxxabi && ! use libcxxrt && ! tc-is-gcc ; then
-		eerror "To build ${PN} against libsupc++, you have to use gcc. Other"
-		eerror "compilers are not supported. Please set CC=gcc and CXX=g++"
-		eerror "and try again."
-		die
-	fi
-	if tc-is-gcc && [[ $(gcc-version) < 4.7 ]] ; then
-		eerror "${PN} needs to be built with gcc-4.7 or later (or other"
-		eerror "conformant compilers). Please use gcc-config to switch to"
-		eerror "gcc-4.7 or later version."
-		die
-	fi
-	export CMAKE_USE_DIR="${S}/libcxx"
-}
-
-multilib_src_configure() {
-	# Filter sanitzers flags.
-	filter_sanitizers
-
-	cros_optimize_package_for_speed
-
-	local cxxabi cxxabi_incs
-	if use libcxxabi; then
-		cxxabi=libcxxabi
-		cxxabi_incs="${SYSROOT}/${PREFIX}/include/libcxxabi"
-	elif use libcxxrt; then
-		cxxabi=libcxxrt
-		cxxabi_incs="${EPREFIX}/usr/include/libcxxrt"
-	else
-		local gcc_inc="${EPREFIX}/usr/lib/gcc/${CHOST}/$(gcc-fullversion)/include/g++-v$(gcc-major-version)"
-		cxxabi=libsupc++
-		cxxabi_incs="${gcc_inc};${gcc_inc}/${CHOST}"
-	fi
-	# Use vfpv3 to be able to target non-neon targets.
-	if [[ $(tc-arch) == "arm" ]] ; then
-		append-flags -mfpu=vfpv3
-	fi
-
-	# we want -lgcc_s for unwinder, and for compiler runtime when using
-	# gcc, clang with gcc runtime (or any unknown compiler)
-	local extra_libs=() want_gcc_s=ON
-	if use libunwind || use compiler-rt; then
-		# work-around missing -lunwind upstream
-		use libunwind && extra_libs+=( -lunwind )
-		# if we're using libunwind and clang with compiler-rt, we want
-		# to link to compiler-rt instead of -lgcc_s
-		if tc-is-clang; then
-			# get the full library list out of 'pretend mode'
-			# and grep it for libclang_rt references
-			local args=( $($(tc-getCC) -### -x c - 2>&1 | tail -n 1) )
-			local i
-			for i in "${args[@]}"; do
-				if [[ ${i} == *libclang_rt* ]]; then
-					want_gcc_s=OFF
-					extra_libs+=( "${i}" )
-				fi
-			done
-		fi
-	fi
-
-	local libdir=$(get_libdir)
-	local mycmakeargs=(
-		"-DLLVM_ENABLE_PROJECTS=libcxx"
-		"-DLIBCXX_LIBDIR_SUFFIX=${libdir#lib}"
-		"-DCMAKE_C_COMPILER_WORKS=yes"
-		"-DCMAKE_CXX_COMPILER_WORKS=yes"
-		"-DLIBCXX_ENABLE_SHARED=ON"
-		"-DLIBCXX_ENABLE_STATIC=$(usex static-libs)"
-		"-DLIBCXX_CXX_ABI=${cxxabi}"
-		"-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${cxxabi_incs}"
-		# we're using our own mechanism for generating linker scripts
-		"-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF"
-		"-DLIBCXX_HAS_MUSL_LIBC=$(usex elibc_musl)"
-		"-DLIBCXX_HAS_GCC_S_LIB=${want_gcc_s}"
-		"-DLIBCXX_USE_COMPILER_RT=$(usex compiler-rt)"
-		"-DLIBCXX_INCLUDE_TESTS=OFF"
-		"-DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind)"
-		"-DCMAKE_INSTALL_PREFIX=${PREFIX}"
-		"-DCMAKE_SHARED_LINKER_FLAGS=${extra_libs[*]} ${LDFLAGS}"
-	)
-
-	if use msan; then
-		mycmakeargs+=(
-			"-DLLVM_USE_SANITIZER=Memory"
-		)
-	fi
-
-	cmake-utils_src_configure
-}
-
-# Usage: deps
-gen_ldscript() {
-	local output_format
-	output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p')
-	[[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"
-
-	cat <<-END_LDSCRIPT
-/* GNU ld script
-	Include missing dependencies
-*/
-${output_format}
-GROUP ( $@ )
-END_LDSCRIPT
-}
-
-gen_static_ldscript() {
-	local libdir=$(get_libdir)
-	local cxxabi_lib=$(usex libcxxabi "libc++abi.a" "$(usex libcxxrt "libcxxrt.a" "libsupc++.a")")
-
-	# Move it first.
-	mv "${ED}/${PREFIX}/${libdir}/libc++.a" "${ED}/${PREFIX}/${libdir}/libc++_static.a" || die
-	# Generate libc++.a ldscript for inclusion of its dependencies so that
-	# clang++ -stdlib=libc++ -static works out of the box.
-	local deps="libc++_static.a ${cxxabi_lib} $(usex libunwind libunwind.a libgcc_eh.a)"
-	# On Linux/glibc it does not link without libpthread or libdl. It is
-	# fine on FreeBSD.
-	use elibc_glibc && deps+=" libpthread.a libdl.a"
-
-	gen_ldscript "${deps}" > "${ED}/${PREFIX}/${libdir}/libc++.a" || die
-}
-
-gen_shared_ldscript() {
-	local libdir=$(get_libdir)
-	# libsupc++ doesn't have a shared version
-	local cxxabi_lib=$(usex libcxxabi "libc++abi.so" "$(usex libcxxrt "libcxxrt.so" "libsupc++.a")")
-	mv "${ED}/${PREFIX}/${libdir}/libc++.so" "${ED}/${PREFIX}/${libdir}/libc++_shared.so" || die
-	local deps="libc++_shared.so ${cxxabi_lib} $(usex compiler-rt '' $(usex libunwind libunwind.so libgcc_s.so))"
-
-	gen_ldscript "${deps}" > "${ED}/${PREFIX}/${libdir}/libc++.so" || die
-}
-
-multilib_src_install() {
-	cmake-utils_src_install
-	gen_shared_ldscript
-	use static-libs && gen_static_ldscript
-}
-
-multilib_src_install_all() {
-	if [[ ${CATEGORY} == cross-* ]]; then
-		rm -r "${ED}/usr/share/doc"
-	fi
-}
diff --git a/sys-libs/libcxx/libcxx-12.0_pre422132-r1.ebuild b/sys-libs/libcxx/libcxx-12.0_pre422132-r1.ebuild
new file mode 120000
index 0000000..01965b8
--- /dev/null
+++ b/sys-libs/libcxx/libcxx-12.0_pre422132-r1.ebuild
@@ -0,0 +1 @@
+libcxx-12.0_pre422132.ebuild
\ No newline at end of file
diff --git a/sys-libs/libcxx/libcxx-12.0_pre422132.ebuild b/sys-libs/libcxx/libcxx-12.0_pre422132.ebuild
new file mode 100644
index 0000000..8ce3d65
--- /dev/null
+++ b/sys-libs/libcxx/libcxx-12.0_pre422132.ebuild
@@ -0,0 +1,206 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+# Ninja provides better scalability and cleaner verbose output, and is used
+# throughout all LLVM projects.
+: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
+PYTHON_COMPAT=( python3_6 )
+
+inherit cmake-multilib cros-constants cros-llvm git-2 llvm python-any-r1 toolchain-funcs
+
+DESCRIPTION="New implementation of the C++ standard library, targeting C++11"
+HOMEPAGE="http://libcxx.llvm.org/"
+SRC_URI=""
+
+EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project
+	${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project"
+EGIT_BRANCH=main
+
+LLVM_HASH="cd442157cff4aad209ae532cbf031abbe10bc1df" # r422132
+LLVM_NEXT_HASH="cd442157cff4aad209ae532cbf031abbe10bc1df" # r422132
+
+LICENSE="|| ( UoI-NCSA MIT )"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+compiler-rt cros_host elibc_glibc elibc_musl +libcxxabi libcxxrt libunwind llvm-next llvm-tot msan +static-libs"
+REQUIRED_USE="libunwind? ( || ( libcxxabi libcxxrt ) )
+	?? ( libcxxabi libcxxrt )"
+
+RDEPEND="
+	libcxxabi? ( ${CATEGORY}/libcxxabi[libunwind=,static-libs?,${MULTILIB_USEDEP}] )
+	libcxxrt? ( ${CATEGORY}/libcxxrt[libunwind=,static-libs?,${MULTILIB_USEDEP}] )
+	!libcxxabi? ( !libcxxrt? ( >=sys-devel/gcc-4.7:=[cxx] ) )
+	!cros_host? ( sys-libs/gcc-libs )"
+DEPEND="${RDEPEND}
+	cros_host? ( sys-devel/llvm )
+	app-arch/xz-utils"
+
+python_check_deps() {
+	has_version "dev-python/lit[${PYTHON_USEDEP}]"
+}
+
+src_unpack() {
+	if use llvm-next || use llvm-tot; then
+		export EGIT_COMMIT="${LLVM_NEXT_HASH}"
+	else
+		export EGIT_COMMIT="${LLVM_HASH}"
+	fi
+	git-2_src_unpack
+}
+
+src_prepare() {
+	"${FILESDIR}"/patch_manager/patch_manager.py \
+		--svn_version "$(get_most_recent_revision)" \
+		--patch_metadata_file "${FILESDIR}"/PATCHES.json \
+		--filesdir_path "${FILESDIR}" \
+		--src_path "${S}" || die
+
+	eapply_user
+}
+
+pkg_setup() {
+	setup_cross_toolchain
+	llvm_pkg_setup
+	export CMAKE_USE_DIR="${S}/libcxx"
+}
+
+multilib_src_configure() {
+	# Filter sanitzers flags.
+	filter_sanitizers
+
+	cros_optimize_package_for_speed
+
+	local cxxabi cxxabi_incs
+	if use libcxxabi; then
+		cxxabi=libcxxabi
+		cxxabi_incs="${SYSROOT}/${PREFIX}/include/libcxxabi"
+	elif use libcxxrt; then
+		cxxabi=libcxxrt
+		cxxabi_incs="${EPREFIX}/usr/include/libcxxrt"
+	else
+		local gcc_inc="${EPREFIX}/usr/lib/gcc/${CHOST}/$(gcc-fullversion)/include/g++-v$(gcc-major-version)"
+		cxxabi=libsupc++
+		cxxabi_incs="${gcc_inc};${gcc_inc}/${CHOST}"
+	fi
+	# Use vfpv3 to be able to target non-neon targets.
+	if [[ $(tc-arch) == "arm" ]] ; then
+		append-flags -mfpu=vfpv3
+	fi
+
+	# we want -lgcc_s for unwinder, and for compiler runtime when using
+	# gcc, clang with gcc runtime (or any unknown compiler)
+	local extra_libs=() want_gcc_s=ON
+	if use libunwind || use compiler-rt; then
+		# work-around missing -lunwind upstream
+		use libunwind && extra_libs+=( -lunwind )
+		# if we're using libunwind and clang with compiler-rt, we want
+		# to link to compiler-rt instead of -lgcc_s
+		if tc-is-clang; then
+			# get the full library list out of 'pretend mode'
+			# and grep it for libclang_rt references
+			local args=( $($(tc-getCC) -### -x c - 2>&1 | tail -n 1) )
+			local i
+			for i in "${args[@]}"; do
+				if [[ ${i} == *libclang_rt* ]]; then
+					want_gcc_s=OFF
+					extra_libs+=( "${i}" )
+				fi
+			done
+		fi
+	fi
+
+	local libdir=$(get_libdir)
+	local mycmakeargs=(
+		"-DLLVM_ENABLE_PROJECTS=libcxx"
+		"-DLIBCXX_LIBDIR_SUFFIX=${libdir#lib}"
+		"-DCMAKE_C_COMPILER_WORKS=yes"
+		"-DCMAKE_CXX_COMPILER_WORKS=yes"
+		"-DLIBCXX_ENABLE_SHARED=ON"
+		"-DLIBCXX_ENABLE_STATIC=$(usex static-libs)"
+		"-DLIBCXX_CXX_ABI=${cxxabi}"
+		"-DLIBCXX_CXX_ABI_INCLUDE_PATHS=${cxxabi_incs}"
+		# we're using our own mechanism for generating linker scripts
+		"-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF"
+		"-DLIBCXX_HAS_MUSL_LIBC=$(usex elibc_musl)"
+		"-DLIBCXX_HAS_GCC_S_LIB=${want_gcc_s}"
+		"-DLIBCXX_USE_COMPILER_RT=$(usex compiler-rt)"
+		"-DLIBCXX_INCLUDE_TESTS=OFF"
+		"-DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind)"
+		"-DCMAKE_INSTALL_PREFIX=${PREFIX}"
+		"-DCMAKE_SHARED_LINKER_FLAGS=${extra_libs[*]} ${LDFLAGS}"
+	)
+
+	# Building 32-bit libc++ on host requires using host compiler
+	# with LIBCXX_BUILD_32_BITS flag enabled.
+	if use cros_host; then
+		if [[ "${CATEGORY}" != "cross-*" && "$(get_abi_CTARGET)" == "i686"* ]]; then
+			CC="$(tc-getBUILD_CC)"
+			CXX="$(tc-getBUILD_CXX)"
+			mycmakeargs+=(
+				"-DLIBCXX_BUILD_32_BITS=ON"
+			)
+		fi
+	fi
+	if use msan; then
+		mycmakeargs+=(
+			"-DLLVM_USE_SANITIZER=Memory"
+		)
+	fi
+
+	cmake-utils_src_configure
+}
+
+# Usage: deps
+gen_ldscript() {
+	local output_format
+	output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p')
+	[[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )"
+
+	cat <<-END_LDSCRIPT
+/* GNU ld script
+	Include missing dependencies
+*/
+${output_format}
+GROUP ( $@ )
+END_LDSCRIPT
+}
+
+gen_static_ldscript() {
+	local libdir=$(get_libdir)
+	local cxxabi_lib=$(usex libcxxabi "libc++abi.a" "$(usex libcxxrt "libcxxrt.a" "libsupc++.a")")
+
+	# Move it first.
+	mv "${ED}/${PREFIX}/${libdir}/libc++.a" "${ED}/${PREFIX}/${libdir}/libc++_static.a" || die
+	# Generate libc++.a ldscript for inclusion of its dependencies so that
+	# clang++ -stdlib=libc++ -static works out of the box.
+	local deps="libc++_static.a ${cxxabi_lib} $(usex libunwind libunwind.a libgcc_eh.a)"
+	# On Linux/glibc it does not link without libpthread or libdl. It is
+	# fine on FreeBSD.
+	use elibc_glibc && deps+=" libpthread.a libdl.a"
+
+	gen_ldscript "${deps}" > "${ED}/${PREFIX}/${libdir}/libc++.a" || die
+}
+
+gen_shared_ldscript() {
+	local libdir=$(get_libdir)
+	# libsupc++ doesn't have a shared version
+	local cxxabi_lib=$(usex libcxxabi "libc++abi.so" "$(usex libcxxrt "libcxxrt.so" "libsupc++.a")")
+	mv "${ED}/${PREFIX}/${libdir}/libc++.so" "${ED}/${PREFIX}/${libdir}/libc++_shared.so" || die
+	local deps="libc++_shared.so ${cxxabi_lib} $(usex compiler-rt '' $(usex libunwind libunwind.so libgcc_s.so))"
+
+	gen_ldscript "${deps}" > "${ED}/${PREFIX}/${libdir}/libc++.so" || die
+}
+
+multilib_src_install() {
+	cmake-utils_src_install
+	gen_shared_ldscript
+	use static-libs && gen_static_ldscript
+}
+
+multilib_src_install_all() {
+	if [[ ${CATEGORY} == cross-* ]]; then
+		rm -r "${ED}/usr/share/doc"
+	fi
+}
diff --git a/sys-libs/libcxxabi/files/PATCHES.json b/sys-libs/libcxxabi/files/PATCHES.json
index dd3361a..b6b46c2 100644
--- a/sys-libs/libcxxabi/files/PATCHES.json
+++ b/sys-libs/libcxxabi/files/PATCHES.json
@@ -1,6 +1,7 @@
 [
     {
         "comment": "Link libcxx with gcc_eh when linking with gcc_s is not desired",
-        "rel_patch_path": "libcxxabi-7-use-libgcc_eh.patch"
+        "rel_patch_path": "libcxxabi-7-use-libgcc_eh.patch",
+	"end_version": 419078
     }
-]
\ No newline at end of file
+]
diff --git a/sys-libs/libcxxabi/libcxxabi-12.0_pre408248-r3.ebuild b/sys-libs/libcxxabi/libcxxabi-12.0_pre408248-r3.ebuild
deleted file mode 120000
index 081ad74..0000000
--- a/sys-libs/libcxxabi/libcxxabi-12.0_pre408248-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-libcxxabi-12.0_pre408248.ebuild
\ No newline at end of file
diff --git a/sys-libs/libcxxabi/libcxxabi-12.0_pre408248.ebuild b/sys-libs/libcxxabi/libcxxabi-12.0_pre408248.ebuild
deleted file mode 100644
index a526338..0000000
--- a/sys-libs/libcxxabi/libcxxabi-12.0_pre408248.ebuild
+++ /dev/null
@@ -1,114 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
-PYTHON_COMPAT=( python3_6 )
-
-inherit cmake-multilib cros-constants cros-llvm flag-o-matic git-2 llvm python-any-r1
-
-DESCRIPTION="Low level support for a standard C++ library"
-HOMEPAGE="http://libcxxabi.llvm.org/"
-
-SRC_URI=""
-EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project
-	${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project"
-
-LLVM_HASH="f402e682d0ef5598eeffc9a21a691b03e602ff58" # r408248
-LLVM_NEXT_HASH="7f6f9f4cf966c78a315d15d6e913c43cfa45c47c" # r412851
-
-LICENSE="|| ( UoI-NCSA MIT )"
-SLOT="0"
-KEYWORDS="*"
-IUSE="+compiler-rt cros_host libunwind msan llvm-next llvm-tot +static-libs"
-
-RDEPEND="
-	libunwind? (
-			|| (
-				>=${CATEGORY}/libunwind-1[static-libs?,${MULTILIB_USEDEP}]
-				>=${CATEGORY}/llvm-libunwind-3.9.0-r1[static-libs?,${MULTILIB_USEDEP}]
-			)
-	)
-	!cros_host? ( sys-libs/gcc-libs )"
-
-DEPEND="${RDEPEND}
-	cros_host? ( sys-devel/llvm )"
-
-python_check_deps() {
-	has_version "dev-python/lit[${PYTHON_USEDEP}]"
-}
-
-pkg_setup() {
-	setup_cross_toolchain
-	llvm_pkg_setup
-	export CMAKE_USE_DIR="${S}/libcxxabi"
-}
-
-src_unpack() {
-	if use llvm-next || use llvm-tot; then
-		export EGIT_COMMIT="${LLVM_NEXT_HASH}"
-	else
-		export EGIT_COMMIT="${LLVM_HASH}"
-	fi
-	git-2_src_unpack
-}
-
-src_prepare() {
-	"${FILESDIR}"/patch_manager/patch_manager.py \
-		--svn_version "$(get_most_recent_revision)" \
-		--patch_metadata_file "${FILESDIR}"/PATCHES.json \
-		--filesdir_path "${FILESDIR}" \
-		--src_path "${S}" || die
-
-	eapply_user
-}
-
-multilib_src_configure() {
-	# Filter sanitzers flags.
-	filter_sanitizers
-	# Use vpfv3 fpu to be able to target non-neon targets.
-	if [[ $(tc-arch) == "arm" ]] ; then
-		append-flags -mfpu=vfpv3
-	fi
-	append-flags -I"${S}/libunwind/include"
-	# Enable futex in libc++abi to match prod toolchain.
-	append-cppflags -D_LIBCXXABI_USE_FUTEX
-	local libdir=$(get_libdir)
-	local mycmakeargs=(
-		"-DLLVM_ENABLE_PROJECTS=libcxxabi"
-		"-DCMAKE_C_COMPILER_WORKS=yes"
-		"-DCMAKE_CXX_COMPILER_WORKS=yes"
-		"-DLIBCXXABI_LIBDIR_SUFFIX=${libdir#lib}"
-		"-DLIBCXXABI_ENABLE_SHARED=ON"
-		"-DLIBCXXABI_ENABLE_STATIC=$(usex static-libs)"
-		"-DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind)"
-		"-DLIBCXXABI_INCLUDE_TESTS=OFF"
-		"-DCMAKE_INSTALL_PREFIX=${PREFIX}"
-		"-DLIBCXXABI_LIBCXX_INCLUDES=${S}/libcxx/include"
-		"-DLIBCXXABI_USE_COMPILER_RT=$(usex compiler-rt)"
-	)
-
-	# Update LLVM to 9.0 will cause LLVM to complain
-	# libstdc++ version is old. Add this flag as suggested in the error
-	# message.
-	mycmakeargs+=(
-		"-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=1"
-	)
-
-	if use msan; then
-		mycmakeargs+=(
-			"-DLLVM_USE_SANITIZER=Memory"
-		)
-	fi
-
-	cmake-utils_src_configure
-}
-
-multilib_src_install_all() {
-	if [[ ${CATEGORY} == cross-* ]]; then
-		rm -r "${ED}/usr/share/doc"
-	fi
-	insinto "${PREFIX}"/include/libcxxabi
-	doins -r "${S}"/libcxxabi/include/.
-}
diff --git a/sys-libs/libcxxabi/libcxxabi-12.0_pre422132-r1.ebuild b/sys-libs/libcxxabi/libcxxabi-12.0_pre422132-r1.ebuild
new file mode 120000
index 0000000..7848deb
--- /dev/null
+++ b/sys-libs/libcxxabi/libcxxabi-12.0_pre422132-r1.ebuild
@@ -0,0 +1 @@
+libcxxabi-12.0_pre422132.ebuild
\ No newline at end of file
diff --git a/sys-libs/libcxxabi/libcxxabi-12.0_pre422132.ebuild b/sys-libs/libcxxabi/libcxxabi-12.0_pre422132.ebuild
new file mode 100644
index 0000000..ba0c902
--- /dev/null
+++ b/sys-libs/libcxxabi/libcxxabi-12.0_pre422132.ebuild
@@ -0,0 +1,158 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+: ${CMAKE_MAKEFILE_GENERATOR:=ninja}
+PYTHON_COMPAT=( python3_6 )
+
+inherit cmake-multilib cros-constants cros-llvm flag-o-matic git-2 llvm python-any-r1
+
+DESCRIPTION="Low level support for a standard C++ library"
+HOMEPAGE="http://libcxxabi.llvm.org/"
+
+SRC_URI=""
+EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project
+	${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project"
+EGIT_BRANCH=main
+
+LLVM_HASH="cd442157cff4aad209ae532cbf031abbe10bc1df" # r422132
+LLVM_NEXT_HASH="cd442157cff4aad209ae532cbf031abbe10bc1df" # r422132
+
+LICENSE="|| ( UoI-NCSA MIT )"
+SLOT="0"
+KEYWORDS="*"
+IUSE="+compiler-rt cros_host libunwind msan llvm-next llvm-tot +static-libs"
+
+RDEPEND="
+	libunwind? (
+			|| (
+				>=${CATEGORY}/libunwind-1[static-libs?,${MULTILIB_USEDEP}]
+				>=${CATEGORY}/llvm-libunwind-3.9.0-r1[static-libs?,${MULTILIB_USEDEP}]
+			)
+	)
+	!cros_host? ( sys-libs/gcc-libs )"
+
+DEPEND="${RDEPEND}
+	cros_host? ( sys-devel/llvm )"
+
+python_check_deps() {
+	has_version "dev-python/lit[${PYTHON_USEDEP}]"
+}
+
+pkg_setup() {
+	setup_cross_toolchain
+	llvm_pkg_setup
+	export CMAKE_USE_DIR="${S}/libcxxabi"
+}
+
+src_unpack() {
+	if use llvm-next || use llvm-tot; then
+		export EGIT_COMMIT="${LLVM_NEXT_HASH}"
+	else
+		export EGIT_COMMIT="${LLVM_HASH}"
+	fi
+	git-2_src_unpack
+}
+
+src_prepare() {
+	"${FILESDIR}"/patch_manager/patch_manager.py \
+		--svn_version "$(get_most_recent_revision)" \
+		--patch_metadata_file "${FILESDIR}"/PATCHES.json \
+		--filesdir_path "${FILESDIR}" \
+		--src_path "${S}" || die
+
+	eapply_user
+}
+
+multilib_src_configure() {
+	# Filter sanitzers flags.
+	filter_sanitizers
+	# Use vpfv3 fpu to be able to target non-neon targets.
+	if [[ $(tc-arch) == "arm" ]] ; then
+		append-flags -mfpu=vfpv3
+	fi
+	append-flags -I"${S}/libunwind/include"
+	# Enable futex in libc++abi to match prod toolchain.
+	append-cppflags -D_LIBCXXABI_USE_FUTEX
+	local libdir=$(get_libdir)
+	local mycmakeargs=(
+		"-DLLVM_ENABLE_PROJECTS=libcxxabi"
+		"-DCMAKE_C_COMPILER_WORKS=yes"
+		"-DCMAKE_CXX_COMPILER_WORKS=yes"
+		"-DLIBCXXABI_LIBDIR_SUFFIX=${libdir#lib}"
+		"-DLIBCXXABI_ENABLE_SHARED=ON"
+		"-DLIBCXXABI_ENABLE_STATIC=$(usex static-libs)"
+		"-DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind)"
+		"-DLIBCXXABI_INCLUDE_TESTS=OFF"
+		"-DCMAKE_INSTALL_PREFIX=${PREFIX}"
+		"-DLIBCXXABI_LIBCXX_INCLUDES=libcxx_build/include/c++/v1"
+		"-DLIBCXXABI_USE_COMPILER_RT=$(usex compiler-rt)"
+	)
+
+	# Update LLVM to 9.0 will cause LLVM to complain
+	# libstdc++ version is old. Add this flag as suggested in the error
+	# message.
+	mycmakeargs+=(
+		"-DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=1"
+	)
+
+	# Building 32-bit libc++abi on host requires using host compiler
+	# with LIBCXXABI_BUILD_32_BITS flag enabled.
+	if use cros_host; then
+		if [[ "${CATEGORY}" != "cross-*" && "$(get_abi_CTARGET)" == "i686"* ]]; then
+			CC="$(tc-getBUILD_CC)"
+			CXX="$(tc-getBUILD_CXX)"
+			mycmakeargs+=(
+				"-DLIBCXXABI_BUILD_32_BITS=ON"
+			)
+		fi
+	fi
+
+	if use msan; then
+		mycmakeargs+=(
+			"-DLLVM_USE_SANITIZER=Memory"
+		)
+	fi
+
+	libcxx_configure
+	cmake-utils_src_configure
+}
+
+# Works around libcxx/libcxxabi cyclic dependency where libcxx needs libcxxabi,
+# but libcxxabi needs libcxx headers by generating the libcxx headers for
+# libcxxabi.
+libcxx_configure() {
+	mkdir -p libcxx_build
+	cd libcxx_build || die
+	local libdir=$(get_libdir)
+	local mycmakeargs=(
+		"-DLLVM_ENABLE_PROJECTS=libcxx"
+		"-DLIBCXX_LIBDIR_SUFFIX=${libdir#lib}"
+		"-DCMAKE_C_COMPILER_WORKS=yes"
+		"-DCMAKE_CXX_COMPILER_WORKS=yes"
+		"-DLIBCXX_ENABLE_SHARED=ON"
+		"-DLIBCXX_ENABLE_STATIC=yes"
+		"-DLIBCXX_CXX_ABI=libcxxabi"
+		# we're using our own mechanism for generating linker scripts
+		"-DLIBCXX_ENABLE_ABI_LINKER_SCRIPT=OFF"
+		"-DLIBCXX_HAS_MUSL_LIBC=off"
+		"-DLIBCXX_HAS_GCC_S_LIB=no"
+		"-DLIBCXX_USE_COMPILER_RT=yes"
+		"-DLIBCXX_INCLUDE_TESTS=OFF"
+		"-DLIBCXXABI_USE_LLVM_UNWINDER=$(usex libunwind)"
+		"-DCMAKE_INSTALL_PREFIX=${PREFIX}"
+	)
+	cmake -GNinja "${S}/libcxx" "${mycmakeargs[@]}"
+	ninja generate-cxx-headers
+	cd .. || die
+}
+
+multilib_src_install_all() {
+	if [[ ${CATEGORY} == cross-* ]]; then
+		rm -r "${ED}/usr/share/doc"
+	fi
+	insinto "${PREFIX}"/include/libcxxabi
+	doins -r "${S}"/libcxxabi/include/.
+}
+
diff --git a/sys-libs/llvm-libunwind/files/5c3fc5093aaf7d9422459d295eb4eb769abcbaa4.patch b/sys-libs/llvm-libunwind/files/5c3fc5093aaf7d9422459d295eb4eb769abcbaa4.patch
new file mode 100644
index 0000000..90bc8cf
--- /dev/null
+++ b/sys-libs/llvm-libunwind/files/5c3fc5093aaf7d9422459d295eb4eb769abcbaa4.patch
@@ -0,0 +1,61 @@
+commit 5c3fc5093aaf7d9422459d295eb4eb769abcbaa4
+Author: Kamlesh Kumar <kamleshbhalui@gmail.com>
+Date:   Wed Mar 3 04:32:47 2021 +0530
+
+    [libunwind] [risc-v] This patch is for fixing
+    immediate build failure when Cross Unwinding enabled.
+    Follow up patch will cleanup some Macros handling.
+    
+    Differential Revision: https://reviews.llvm.org/D97762
+
+diff --git a/libunwind/src/Registers.hpp b/libunwind/src/Registers.hpp
+index 1d23f97aedfb..aea84cc22721 100644
+--- a/libunwind/src/Registers.hpp
++++ b/libunwind/src/Registers.hpp
+@@ -3731,26 +3731,35 @@ inline const char *Registers_hexagon::getRegisterName(int regNum) {
+ /// Registers_riscv holds the register state of a thread in a RISC-V
+ /// process.
+ 
+-# if __riscv_xlen == 32
++// This check makes it safe when LIBUNWIND_ENABLE_CROSS_UNWINDING enabled.
++# ifdef __riscv
++#  if __riscv_xlen == 32
+ typedef uint32_t reg_t;
+-# elif __riscv_xlen == 64
++#  elif __riscv_xlen == 64
+ typedef uint64_t reg_t;
+-# else
+-#  error "Unsupported __riscv_xlen"
+-# endif
++#  else
++#   error "Unsupported __riscv_xlen"
++#  endif
+ 
+-# if defined(__riscv_flen)
+-#  if __riscv_flen == 64
++#  if defined(__riscv_flen)
++#   if __riscv_flen == 64
+ typedef double fp_t;
+-#  elif __riscv_flen == 32
++#   elif __riscv_flen == 32
+ typedef float fp_t;
++#   else
++#    error "Unsupported __riscv_flen"
++#   endif
+ #  else
+-#   error "Unsupported __riscv_flen"
++// This is just for supressing undeclared error of fp_t.
++typedef double fp_t;
+ #  endif
+ # else
+-// This is just for supressing undeclared error of fp_t.
++// Use Max possible width when cross unwinding
++typedef uint64_t reg_t;
+ typedef double fp_t;
+-# endif
++# define __riscv_xlen 64
++# define __riscv_flen 64
++#endif
+ 
+ /// Registers_riscv holds the register state of a thread.
+ class _LIBUNWIND_HIDDEN Registers_riscv {
diff --git a/sys-libs/llvm-libunwind/files/PATCHES.json b/sys-libs/llvm-libunwind/files/PATCHES.json
index 0637a08..a90f907 100644
--- a/sys-libs/llvm-libunwind/files/PATCHES.json
+++ b/sys-libs/llvm-libunwind/files/PATCHES.json
@@ -1 +1,8 @@
-[]
\ No newline at end of file
+[
+    {
+        "comment": "[libunwind] [risc-v] This patch is for fixing immediate build failure when Cross Unwinding enabled. Follow up patch will cleanup some Macros handling.",
+        "rel_patch_path": "5c3fc5093aaf7d9422459d295eb4eb769abcbaa4.patch",
+        "start_version": 420365,
+        "end_version": 420477
+    }
+]
\ No newline at end of file
diff --git a/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre408248-r2.ebuild b/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre408248-r2.ebuild
deleted file mode 120000
index 4b71d5a..0000000
--- a/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre408248-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-llvm-libunwind-12.0_pre408248.ebuild
\ No newline at end of file
diff --git a/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre408248.ebuild b/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre408248.ebuild
deleted file mode 100644
index 2c5caab..0000000
--- a/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre408248.ebuild
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright 1999-2017 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-inherit cros-constants cmake-multilib cmake-utils git-2 cros-llvm
-
-DESCRIPTION="C++ runtime stack unwinder from LLVM"
-HOMEPAGE="https://github.com/llvm-mirror/libunwind"
-SRC_URI=""
-EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project
-	${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project"
-
-LLVM_HASH="f402e682d0ef5598eeffc9a21a691b03e602ff58" # r408248
-LLVM_NEXT_HASH="7f6f9f4cf966c78a315d15d6e913c43cfa45c47c" # r412851
-
-LICENSE="|| ( UoI-NCSA MIT )"
-SLOT="0"
-KEYWORDS="*"
-IUSE="cros_host debug llvm-next llvm-tot +static-libs +shared-libs"
-RDEPEND="!${CATEGORY}/libunwind"
-
-DEPEND="${RDEPEND}
-	cros_host? ( sys-devel/llvm )"
-
-pkg_setup() {
-	# Setup llvm toolchain for cross-compilation
-	setup_cross_toolchain
-	export CMAKE_USE_DIR="${S}/libunwind"
-}
-
-src_unpack() {
-	if use llvm-next || use llvm-tot; then
-		export EGIT_COMMIT="${LLVM_NEXT_HASH}"
-	else
-		export EGIT_COMMIT="${LLVM_HASH}"
-	fi
-	git-2_src_unpack
-}
-
-src_prepare() {
-	"${FILESDIR}"/patch_manager/patch_manager.py \
-		--svn_version "$(get_most_recent_revision)" \
-		--patch_metadata_file "${FILESDIR}"/PATCHES.json \
-		--filesdir_path "${FILESDIR}" \
-		--src_path "${S}" || die
-
-	eapply_user
-}
-
-should_enable_asserts() {
-	if use debug || use llvm-tot; then
-		echo yes
-	else
-		echo no
-	fi
-}
-
-multilib_src_configure() {
-	# Allow targeting non-neon targets for armv7a.
-	if [[ ${CATEGORY} == cross-armv7a* ]] ; then
-		append-flags -mfpu=vfpv3
-	fi
-	local libdir=$(get_libdir)
-	local mycmakeargs=(
-		"${mycmakeargs[@]}"
-		"-DLLVM_ENABLE_PROJECTS=libunwind"
-		"-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY"
-		"-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
-		"-DLLVM_LIBDIR_SUFFIX=${libdir#lib}"
-		"-DLIBUNWIND_ENABLE_ASSERTIONS=$(should_enable_asserts)"
-		"-DLIBUNWIND_ENABLE_STATIC=$(usex static-libs)"
-		"-DLIBUNWIND_ENABLE_SHARED=$(usex shared-libs)"
-		"-DLIBUNWIND_TARGET_TRIPLE=${CTARGET}"
-		"-DLIBUNWIND_ENABLE_THREADS=OFF"
-		"-DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON"
-		"-DCMAKE_INSTALL_PREFIX=${PREFIX}"
-		# Avoid old libstdc++ errors when bootstrapping.
-		"-DLLVM_ENABLE_LIBCXX=ON"
-	)
-
-	cmake-utils_src_configure
-}
-
-multilib_src_install_all() {
-	# Remove files that are installed by sys-libs/llvm-libunwind
-	# to avoid collision when installing cross-${TARGET}/llvm-libunwind.
-	if [[ ${CATEGORY} == cross-* ]]; then
-		rm -rf "${ED}"usr/share || die
-	fi
-
-	# Install headers.
-	insinto "${PREFIX}"/include
-	doins -r "${S}"/libunwind/include/.
-}
diff --git a/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre422132-r1.ebuild b/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre422132-r1.ebuild
new file mode 120000
index 0000000..c0c1a20a
--- /dev/null
+++ b/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre422132-r1.ebuild
@@ -0,0 +1 @@
+llvm-libunwind-12.0_pre422132.ebuild
\ No newline at end of file
diff --git a/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre422132.ebuild b/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre422132.ebuild
new file mode 100644
index 0000000..fcef50f
--- /dev/null
+++ b/sys-libs/llvm-libunwind/llvm-libunwind-12.0_pre422132.ebuild
@@ -0,0 +1,96 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit cros-constants cmake-multilib cmake-utils git-2 cros-llvm
+
+DESCRIPTION="C++ runtime stack unwinder from LLVM"
+HOMEPAGE="https://github.com/llvm-mirror/libunwind"
+SRC_URI=""
+EGIT_REPO_URI="${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project
+	${CROS_GIT_HOST_URL}/external/github.com/llvm/llvm-project"
+EGIT_BRANCH=main
+
+LLVM_HASH="cd442157cff4aad209ae532cbf031abbe10bc1df" # r422132
+LLVM_NEXT_HASH="cd442157cff4aad209ae532cbf031abbe10bc1df" # r422132
+
+LICENSE="|| ( UoI-NCSA MIT )"
+SLOT="0"
+KEYWORDS="*"
+IUSE="cros_host debug llvm-next llvm-tot +static-libs +shared-libs"
+RDEPEND="!${CATEGORY}/libunwind"
+
+DEPEND="${RDEPEND}
+	cros_host? ( sys-devel/llvm )"
+
+pkg_setup() {
+	# Setup llvm toolchain for cross-compilation
+	setup_cross_toolchain
+	export CMAKE_USE_DIR="${S}/libunwind"
+}
+
+src_unpack() {
+	if use llvm-next || use llvm-tot; then
+		export EGIT_COMMIT="${LLVM_NEXT_HASH}"
+	else
+		export EGIT_COMMIT="${LLVM_HASH}"
+	fi
+	git-2_src_unpack
+}
+
+src_prepare() {
+	"${FILESDIR}"/patch_manager/patch_manager.py \
+		--svn_version "$(get_most_recent_revision)" \
+		--patch_metadata_file "${FILESDIR}"/PATCHES.json \
+		--filesdir_path "${FILESDIR}" \
+		--src_path "${S}" || die
+
+	eapply_user
+}
+
+should_enable_asserts() {
+	if use debug || use llvm-tot; then
+		echo yes
+	else
+		echo no
+	fi
+}
+
+multilib_src_configure() {
+	# Allow targeting non-neon targets for armv7a.
+	if [[ ${CATEGORY} == cross-armv7a* ]] ; then
+		append-flags -mfpu=vfpv3
+	fi
+	local libdir=$(get_libdir)
+	local mycmakeargs=(
+		"${mycmakeargs[@]}"
+		"-DLLVM_ENABLE_PROJECTS=libunwind"
+		"-DCMAKE_TRY_COMPILE_TARGET_TYPE=STATIC_LIBRARY"
+		"-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
+		"-DLLVM_LIBDIR_SUFFIX=${libdir#lib}"
+		"-DLIBUNWIND_ENABLE_ASSERTIONS=$(should_enable_asserts)"
+		"-DLIBUNWIND_ENABLE_STATIC=$(usex static-libs)"
+		"-DLIBUNWIND_ENABLE_SHARED=$(usex shared-libs)"
+		"-DLIBUNWIND_TARGET_TRIPLE=${CTARGET}"
+		"-DLIBUNWIND_ENABLE_THREADS=OFF"
+		"-DLIBUNWIND_ENABLE_CROSS_UNWINDING=ON"
+		"-DCMAKE_INSTALL_PREFIX=${PREFIX}"
+		# Avoid old libstdc++ errors when bootstrapping.
+		"-DLLVM_ENABLE_LIBCXX=ON"
+	)
+
+	cmake-utils_src_configure
+}
+
+multilib_src_install_all() {
+	# Remove files that are installed by sys-libs/llvm-libunwind
+	# to avoid collision when installing cross-${TARGET}/llvm-libunwind.
+	if [[ ${CATEGORY} == cross-* ]]; then
+		rm -rf "${ED}"usr/share || die
+	fi
+
+	# Install headers.
+	insinto "${PREFIX}"/include
+	doins -r "${S}"/libunwind/include/.
+}
diff --git a/sys-power/dptf-3_10/Manifest b/sys-power/dptf-3_10/Manifest
deleted file mode 100644
index 72a761d..0000000
--- a/sys-power/dptf-3_10/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST dptf-8.0.10001.tar.gz 687315 SHA256 274d51ab37982459024b2fbfc67ee661e568d43f5d6129a57b2d55496d192eab SHA512 0fc63e8977ad718eac4aed7d5159685934eff4bef2c5fa6f548bd631acaecc5c94fd65dae2e18d6c7d4efdf78b463cb16b4d8ff14414f24f72071ceb35398d06 WHIRLPOOL 3421b3929ff410d4a4af3fdfe66020c8feda06325ea50b704409a6c44098da42060ae2bd2c563a189b345fd7b7dc6b875afe132e0d38c4669f8d1aeeb0131e83
diff --git a/sys-power/dptf-3_10/dptf-3_10-8.0.10001-r2.ebuild b/sys-power/dptf-3_10/dptf-3_10-8.0.10001-r2.ebuild
deleted file mode 100644
index 68d9708..0000000
--- a/sys-power/dptf-3_10/dptf-3_10-8.0.10001-r2.ebuild
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-# $Header: $
-
-EAPI=6
-
-inherit cmake-utils
-
-DESCRIPTION="Intel(R) Dynamic Platform & Thermal Framework"
-HOMEPAGE="https://01.org/dptf/"
-MY_PN="dptf"
-SRC_URI="https://github.com/01org/dptf/archive/${PV}.tar.gz -> ${MY_PN}-${PV}.tar.gz"
-
-LICENSE="Apache-2.0 GPL-2 BSD"
-SLOT="0"
-KEYWORDS="-* amd64 x86"
-IUSE="debug"
-
-S="${WORKDIR}/${MY_PN}-${PV}"
-CMAKE_USE_DIR="${S}/DPTF/Linux"
-ESIF_BUILD_DIR="ESIF/Products/ESIF_UF/Chrome"
-
-src_configure() {
-	# cmake configuration for DPTF policy shared libraries
-	local mycmakeargs=( -DCHROMIUM_BUILD=YES )
-	use x86 && mycmakeargs+=( -DBUILD_ARCH=32bit )
-	use amd64 && mycmakeargs+=( -DBUILD_ARCH=64bit )
-	cmake-utils_src_configure
-}
-
-src_compile() {
-	# Build ESIF daemon
-	local extra_cflags=""
-	use debug && extra_cflags="-DESIF_ATTR_DEBUG -DESIF_ATTR_MEMTRACE"
-	emake \
-		-C "${ESIF_BUILD_DIR}" \
-		CC="$(tc-getCC)" \
-		EXTRA_CFLAGS="${extra_cflags}"
-
-	# Build DPTF policy shared libraries
-	cmake-utils_src_compile
-}
-
-src_install() {
-	# Install ESIF daemon and configuration files
-	local startcmd_src_dir="ESIF/Packages/Installers/chrome"
-	dobin "${ESIF_BUILD_DIR}/esif_ufd"
-	insinto "/etc/dptf"
-	doins ESIF/Packages/DSP/dsp.dv
-	insinto "/etc/init"
-	doins "${startcmd_src_dir}/dptf.conf"
-
-	# Install DPTF policy shared libraries
-	local policy_build_dir="${BUILD_DIR}"/$(usex amd64 x64 x32)
-	dolib.so "${policy_build_dir}/Dptf.so"
-	insinto "/usr/share/dptf"
-	doins ${policy_build_dir}/DptfPolicy*.so
-	doins "DPTF/Sources/combined.xsl"
-}
diff --git a/sys-power/dptf-3_10/metadata.xml b/sys-power/dptf-3_10/metadata.xml
deleted file mode 100644
index a808bfd..0000000
--- a/sys-power/dptf-3_10/metadata.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<maintainer>
-<email>dptf@lists.01.org</email>
-</maintainer>
-</pkgmetadata>
diff --git a/sys-power/dptf-policy-ap/Manifest b/sys-power/dptf-policy-ap/Manifest
index f49b28a..37b97ad 100644
--- a/sys-power/dptf-policy-ap/Manifest
+++ b/sys-power/dptf-policy-ap/Manifest
@@ -1 +1 @@
-DIST DptfPolicyAdaptivePerformance-8.8.10300.tbz2 292752 BLAKE2B 8f47421c2ecaf5977342f70329e5f0abe16b95aea5971477a1a6e787871632287d0fa74ad39d85f07810e119c57e87189da1a58fe4361175d3b340d88169fd0c SHA512 50d1b349bda3b8619c5de7f6eecce9cd10297e4ea777bf73263249f4f72176c6f2b4a7f6b2e98ca1162473e7d12abb50b434ff4134a1ddbd99ef4f04681337ad
+DIST DptfPolicyAdaptivePerformance-9.0.10500.tbz2 279203 BLAKE2B 591873a8d822435b5cd3e50de39a09c15f21792c3eb38f3e246349da15cce2110e7dc40d5b85597e86930029eb6ff1c705b68c495db03adb4a363b2859059847 SHA512 183b7c1ed7d0a0f318e073936a94d57d865b7e4854a521307224e449c985ec5bda2b3c03e001f5090163ecccdac3c02d229f7593253a01f4001bfbd68bb351f5
diff --git a/sys-power/dptf-policy-ap/dptf-policy-ap-8.8.10300-r2.ebuild b/sys-power/dptf-policy-ap/dptf-policy-ap-8.8.10300-r2.ebuild
deleted file mode 100644
index 55b2484..0000000
--- a/sys-power/dptf-policy-ap/dptf-policy-ap-8.8.10300-r2.ebuild
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=5
-
-inherit cros-binary
-
-DESCRIPTION="Adaptive Performance Policy for Intel(R) Dynamic Platform & Thermal Framework"
-
-LICENSE="LICENSE.intel-dptf-private"
-SLOT="0"
-KEYWORDS="*"
-S="${WORKDIR}"
-
-CROS_BINARY_URI="dptf/DptfPolicyAdaptivePerformance-${PV}.tbz2"
-
-# Need dependency blockers because DPTF binaries moved from dptf-private ebuild.
-RDEPEND="
-	!sys-power/dptf-atlas-private
-	!sys-power/dptf-dedede-private
-	!sys-power/dptf-drallion-private
-	!sys-power/dptf-hatch-private
-	!sys-power/dptf-volteer-private"
-
-# chipset-kbl binary can be used for all Intel platform.
-cros-binary_add_gs_uri bcs-chipset-kbl-private chipset-kbl-private \
-	"${CROS_BINARY_URI}"
-
-src_install() {
-	# Install DPTF policy add-on library.
-	dolib.so DptfPolicyAdaptivePerformance.so
-}
diff --git a/sys-power/dptf-policy-ap/dptf-policy-ap-9.0.10500-r1.ebuild b/sys-power/dptf-policy-ap/dptf-policy-ap-9.0.10500-r1.ebuild
new file mode 100644
index 0000000..b0f458c
--- /dev/null
+++ b/sys-power/dptf-policy-ap/dptf-policy-ap-9.0.10500-r1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2020 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.
+
+EAPI=5
+
+inherit cros-binary
+
+DESCRIPTION="Adaptive Performance Policy for Intel(R) Dynamic Platform & Thermal Framework"
+
+LICENSE="LICENSE.intel-dptf-private"
+SLOT="0"
+KEYWORDS="*"
+S="${WORKDIR}"
+
+CROS_BINARY_URI="dptf/DptfPolicyAdaptivePerformance-${PV}.tbz2"
+
+# chipset-kbl binary can be used for all Intel platform.
+cros-binary_add_gs_uri bcs-chipset-kbl-private chipset-kbl-private \
+	"${CROS_BINARY_URI}"
+
+src_install() {
+	# Install DPTF policy add-on library.
+	dolib.so DptfPolicyAdaptivePerformance.so
+}
diff --git a/sys-power/dptf-policy-passive2/Manifest b/sys-power/dptf-policy-passive2/Manifest
index 016c9b2..36bdcca 100644
--- a/sys-power/dptf-policy-passive2/Manifest
+++ b/sys-power/dptf-policy-passive2/Manifest
@@ -1 +1 @@
-DIST DptfPolicyPassive2-8.8.10300.tbz2 233224 BLAKE2B 2b5c51167d62108e27d760ad81ed2924679de874c8cad12cbb3b392a22125e39e99220c55b8e523ff4b6b304d2973c64db8eba90481de5efd6f613c2bed29f65 SHA512 28c87434e3ce2127a87d9a4a1d2c0a65f8f0ee04b467df2c7732264e9dc0a9330cd35f8891811e465207e6416e7cb822139a699e47e19729850a02a03e8cb8d1
+DIST DptfPolicyPassive2-9.0.10500.tbz2 228301 BLAKE2B b75797cd229efbcb8bfca31030fc2d15111edcec6fcf8e679c28ea0c32adc2746d50528f21f328122ef48ca8c6cea4f7c2ec37d136337eceb218cb8034866457 SHA512 53accebf7ad2bf3bd062c02e58143e34f850c45bb454f42055251fa33f65a59368e12235d8001b197963af85169d8575a81f3fd78a36ff2c8caa3544291786ca
diff --git a/sys-power/dptf-policy-passive2/dptf-policy-passive2-8.8.10300-r2.ebuild b/sys-power/dptf-policy-passive2/dptf-policy-passive2-8.8.10300-r2.ebuild
deleted file mode 100644
index caad66d..0000000
--- a/sys-power/dptf-policy-passive2/dptf-policy-passive2-8.8.10300-r2.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=5
-
-inherit cros-binary
-
-DESCRIPTION="Passive2 Policy for Intel(R) Dynamic Platform & Thermal Framework"
-
-LICENSE="LICENSE.intel-dptf-private"
-SLOT="0"
-KEYWORDS="*"
-S="${WORKDIR}"
-
-CROS_BINARY_URI="dptf/DptfPolicyPassive2-${PV}.tbz2"
-
-# Need dependency blockers because DPTF binaries moved from dptf-private ebuild.
-RDEPEND="
-	!sys-power/dptf-dedede-private
-	!sys-power/dptf-volteer-private"
-
-# chipset-kbl binary can be used for all Intel platform.
-cros-binary_add_gs_uri bcs-chipset-kbl-private chipset-kbl-private \
-	"${CROS_BINARY_URI}"
-
-src_install() {
-	# Install DPTF policy add-on library.
-	dolib.so DptfPolicyPassive2.so
-}
diff --git a/sys-power/dptf-policy-passive2/dptf-policy-passive2-9.0.10500-r1.ebuild b/sys-power/dptf-policy-passive2/dptf-policy-passive2-9.0.10500-r1.ebuild
new file mode 100644
index 0000000..5c01e7b
--- /dev/null
+++ b/sys-power/dptf-policy-passive2/dptf-policy-passive2-9.0.10500-r1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2020 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.
+
+EAPI=5
+
+inherit cros-binary
+
+DESCRIPTION="Passive2 Policy for Intel(R) Dynamic Platform & Thermal Framework"
+
+LICENSE="LICENSE.intel-dptf-private"
+SLOT="0"
+KEYWORDS="*"
+S="${WORKDIR}"
+
+CROS_BINARY_URI="dptf/DptfPolicyPassive2-${PV}.tbz2"
+
+# chipset-kbl binary can be used for all Intel platform.
+cros-binary_add_gs_uri bcs-chipset-kbl-private chipset-kbl-private \
+	"${CROS_BINARY_URI}"
+
+src_install() {
+	# Install DPTF policy add-on library.
+	dolib.so DptfPolicyPassive2.so
+}
diff --git a/sys-power/dptf-policy-vs/Manifest b/sys-power/dptf-policy-vs/Manifest
index a7144f9..66c2c22 100644
--- a/sys-power/dptf-policy-vs/Manifest
+++ b/sys-power/dptf-policy-vs/Manifest
@@ -1 +1 @@
-DIST DptfPolicyVirtualSensor-8.8.10300.tbz2 205898 BLAKE2B ca43129ec3b200287530aec1943942450a252fa5131783643931811f5e9cf54e1b17a81eb0cedbf2243b6b9433edca4367443ac7c1bdad0faccaf65afd70514c SHA512 ad3d7092bd8906a488e55aab0560c6013502e25c4471635b4cdfd54a8011f093c7f93500401cae2638573fc750bc58fedb05c6fa299bd2c8080a0c0ed6e40b17
+DIST DptfPolicyVirtualSensor-9.0.10500.tbz2 204679 BLAKE2B 236f7adac3e7537a4bd6e7775f92e4329cd1c9779bb184054722f4a710abcf82f9dbb23cc6693665b7686528fb1c90fe903fe8aa8e0dad8b98f11c65c94c0d0c SHA512 f429c886ca1e2bde150396a28d4b922ea4a9e4c0d3ce951ada0f06d4d990e7195fc126e9496b2d66415ee8e4134c4a9cc050492630fe2089236dc530c519760a
diff --git a/sys-power/dptf-policy-vs/dptf-policy-vs-8.8.10300-r2.ebuild b/sys-power/dptf-policy-vs/dptf-policy-vs-8.8.10300-r2.ebuild
deleted file mode 100644
index 8bf93aa..0000000
--- a/sys-power/dptf-policy-vs/dptf-policy-vs-8.8.10300-r2.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2020 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.
-
-EAPI=5
-
-inherit cros-binary
-
-DESCRIPTION="Virtual Sensor Policy for Intel(R) Dynamic Platform & Thermal Framework"
-
-LICENSE="LICENSE.intel-dptf-private"
-SLOT="0"
-KEYWORDS="*"
-S="${WORKDIR}"
-
-CROS_BINARY_URI="dptf/DptfPolicyVirtualSensor-${PV}.tbz2"
-
-# Need dependency blockers because DPTF binaries moved from dptf-private ebuild.
-RDEPEND="
-	!sys-power/dptf-dedede-private
-	!sys-power/dptf-volteer-private"
-
-# chipset-kbl binary can be used for all Intel platform.
-cros-binary_add_gs_uri bcs-chipset-kbl-private chipset-kbl-private \
-	"${CROS_BINARY_URI}"
-
-src_install() {
-	# Install DPTF policy add-on library.
-	dolib.so DptfPolicyVirtualSensor.so
-}
diff --git a/sys-power/dptf-policy-vs/dptf-policy-vs-9.0.10500-r1.ebuild b/sys-power/dptf-policy-vs/dptf-policy-vs-9.0.10500-r1.ebuild
new file mode 100644
index 0000000..1120b68
--- /dev/null
+++ b/sys-power/dptf-policy-vs/dptf-policy-vs-9.0.10500-r1.ebuild
@@ -0,0 +1,25 @@
+# Copyright 2020 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.
+
+EAPI=5
+
+inherit cros-binary
+
+DESCRIPTION="Virtual Sensor Policy for Intel(R) Dynamic Platform & Thermal Framework"
+
+LICENSE="LICENSE.intel-dptf-private"
+SLOT="0"
+KEYWORDS="*"
+S="${WORKDIR}"
+
+CROS_BINARY_URI="dptf/DptfPolicyVirtualSensor-${PV}.tbz2"
+
+# chipset-kbl binary can be used for all Intel platform.
+cros-binary_add_gs_uri bcs-chipset-kbl-private chipset-kbl-private \
+	"${CROS_BINARY_URI}"
+
+src_install() {
+	# Install DPTF policy add-on library.
+	dolib.so DptfPolicyVirtualSensor.so
+}
diff --git a/sys-power/dptf/Manifest b/sys-power/dptf/Manifest
index f735b34..1f3f46e 100644
--- a/sys-power/dptf/Manifest
+++ b/sys-power/dptf/Manifest
@@ -1 +1 @@
-DIST dptf-8.8.10300.tar.gz 1002167 BLAKE2B 4f600405dd4e5c7d5a6de55406d2a4f190b37d87b52a9ade683718242c9a7f6754aa8f3d943e7e1f47332fff625c54170f5f14727a2bb55d19bbecda9eb7eb27 SHA512 313e6dfe3043e69fa8907427b04e6f98b8932b2da9c82999a9f23ad6ad34e1bb3149715e0d32f6f8b502ba70bea9d4405549f2c1adda17a128cb60efbca759f3
+DIST dptf-9.0.10500.tar.gz 1001105 BLAKE2B a7ccd7a95e430259055ad0f3715e38f41eb1c8b6c25ad96f6e9ab12f1aa550bbba0ead6c087c6e35767df3a81a05f275f1b4cf54d46a1d29f2f942475cdb227d SHA512 0aa470ac8110a4ec19f7b275c2f3af8c12d7fbf6e0afc640d5edeefb09a40ba6dc14bc8b46a601091caa0e721802c31aa9fea708b4329ba9b2d70c8fc894ca46
diff --git a/sys-power/dptf/dptf-8.8.10300-r1.ebuild b/sys-power/dptf/dptf-9.0.10500-r1.ebuild
similarity index 100%
rename from sys-power/dptf/dptf-8.8.10300-r1.ebuild
rename to sys-power/dptf/dptf-9.0.10500-r1.ebuild
diff --git a/sys-power/pm-utils/Manifest b/sys-power/pm-utils/Manifest
deleted file mode 100644
index 1fc4162..0000000
--- a/sys-power/pm-utils/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST pm-utils-1.4.1.tar.gz 208687 RMD160 04798d6d3aa3bbbfbca6dc48037916b425714108 SHA1 9aacb9b4a5f11f751d94f5257c6c54460f106197 SHA256 8ed899032866d88b2933a1d34cc75e8ae42dcde20e1cc21836baaae3d4370c0b
diff --git a/sys-power/pm-utils/files/1.4.1-bluetooth-sync.patch b/sys-power/pm-utils/files/1.4.1-bluetooth-sync.patch
deleted file mode 100644
index b41f32c..0000000
--- a/sys-power/pm-utils/files/1.4.1-bluetooth-sync.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 640b53438c20818b3e344343b58b1f1765606a85 Mon Sep 17 00:00:00 2001
-From: Martin Pitt <martin.pitt@ubuntu.com>
-Date: Mon, 31 Jan 2011 15:30:01 +0100
-Subject: [PATCH] 49bluetooth: Wait for btusb module to get unused
-
-The 49bluetooth hook disables /proc/acpi/ibm/bluetooth but this isn't
-synchronous, i. e. it doesn't wait until the module usage count actually drops
-to 0. Due to that, it's impossible to add btusb to SUSPEND_MODULES (on some
-models/older kernels you need to do that to fix suspend problems), as at that
-point the module is still in use.
-
-On my system (ThinkPad X201) the module takes between 0.3 and 0.5 seconds to
-unload, so use 100 ms wait steps with a timeout of 2 seconds.
-
-Bug: https://bugs.freedesktop.org//show_bug.cgi?id=33759
-Bug-Ubuntu: https://launchpad.net/bugs/698331
----
- pm/sleep.d/49bluetooth |    9 +++++++++
- 1 files changed, 9 insertions(+), 0 deletions(-)
-
-diff --git a/pm/sleep.d/49bluetooth b/pm/sleep.d/49bluetooth
-index d46ba49..0dc1909 100755
---- a/pm/sleep.d/49bluetooth
-+++ b/pm/sleep.d/49bluetooth
-@@ -12,6 +12,15 @@ suspend_bluetooth()
- 	if grep -q enabled /proc/acpi/ibm/bluetooth; then
- 		savestate ibm_bluetooth enable
- 		echo disable > /proc/acpi/ibm/bluetooth
-+
-+		# wait for up to 2 seconds for the module to actually get
-+		# unused
-+		TIMEOUT=20
-+		while [ $TIMEOUT -ge 0 ]; do
-+		    [ `cat /sys/module/btusb/refcnt` = 0 ] && break
-+		    TIMEOUT=$((TIMEOUT-1))
-+		    sleep 0.1
-+		done
- 	else
- 		savestate ibm_bluetooth disable
- 	fi
--- 
-1.7.2.3
-
diff --git a/sys-power/pm-utils/files/1.4.1-disable-sata-alpm.patch b/sys-power/pm-utils/files/1.4.1-disable-sata-alpm.patch
deleted file mode 100644
index 7b54949..0000000
--- a/sys-power/pm-utils/files/1.4.1-disable-sata-alpm.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-Description: Disable SATA link power management by default, as it still causes disk errors and corruptions on many hardware.
-Author: Martin Pitt <martin.pitt@ubuntu.com>
-Bug-Ubuntu: https://launchpad.net/bugs/539467
-
-Index: pm-utils/pm/power.d/sata_alpm
-===================================================================
---- pm-utils.orig/pm/power.d/sata_alpm	2011-02-01 15:53:09.164867778 +0100
-+++ pm-utils/pm/power.d/sata_alpm	2011-02-01 15:53:28.954867786 +0100
-@@ -2,7 +2,7 @@
- 
- . "${PM_FUNCTIONS}"
- 
--SATA_ALPM_ENABLE=${SATA_ALPM_ENABLE:-true}
-+SATA_ALPM_ENABLE=${SATA_ALPM_ENABLE:-false}
- 
- help() {
- cat <<EOF
-@@ -16,7 +16,7 @@
- 
- This hook has 1 parameter:
- SATA_ALPM_ENABLE = whether to use SATA ALPM on battery.
--Defaults to "true".
-+Defaults to "false".
- 
- EOF
- }
diff --git a/sys-power/pm-utils/files/1.4.1-fix-intel-audio-powersave-hook.patch b/sys-power/pm-utils/files/1.4.1-fix-intel-audio-powersave-hook.patch
deleted file mode 100644
index 2d884da..0000000
--- a/sys-power/pm-utils/files/1.4.1-fix-intel-audio-powersave-hook.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From: Florian Kriener <florian@kriener.org>
-To: submit@bugs.debian.org
-Subject: [pm-utils] wrong path in intel-audio-powersave (and a small bug)
-Date: Sat, 25 Sep 2010 11:27:30 +0200
-
-In the script intel-audio-powersave is this loop
-
-for dev in /sys/module/snd_*/parameters/power_save; do
-	[ -w "$dev/parameters/power_save" ] || continue
-     printf "Setting power savings for $s to %d..." "$dev##*/" "$1"
-	echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed.
-done
-
-I think it should be
-
-for dev in /sys/module/snd_*; do
-	[ -w "$dev/parameters/power_save" ] || continue
-     printf "Setting power savings for %s to %d..." "${dev##*/}" "$1"
-	echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed.
-done
-
-
-This fixes the two bugs.
-
-diff --git a/pm/power.d/intel-audio-powersave b/pm/power.d/intel-audio-powersave
-index 36675a8..da63e40 100644
---- a/pm/power.d/intel-audio-powersave
-+++ b/pm/power.d/intel-audio-powersave
-@@ -20,9 +20,9 @@ EOF
- 
- audio_powersave() {
-     [ "$INTEL_AUDIO_POWERSAVE" = "true" ] || exit $NA
--    for dev in /sys/module/snd_*/parameters/power_save; do
-+    for dev in /sys/module/snd_*; do
- 	[ -w "$dev/parameters/power_save" ] || continue
--	printf "Setting power savings for $s to %d..." "$dev##*/" "$1"
-+	printf "Setting power savings for %s to %d..." "${dev##*/}" "$1"
- 	echo $1 > "$dev/parameters/power_save" && echo Done. || echo Failed.
-     done
- }
diff --git a/sys-power/pm-utils/files/1.4.1-logging-append.patch b/sys-power/pm-utils/files/1.4.1-logging-append.patch
deleted file mode 100644
index 987e057..0000000
--- a/sys-power/pm-utils/files/1.4.1-logging-append.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-Author: James Westby <james.westby@ubuntu.com>
-Description: Do not clear the log file on each operation, but instead append to it.
- This makes debugging of several suspends much easier.
-Bug: https://bugs.freedesktop.org/show_bug.cgi?id=25255
-Bug-Ubuntu: https://launchpad.net/bugs/410352
-
-Index: pm-utils/pm/pm-functions.in
-===================================================================
---- pm-utils.orig/pm/pm-functions.in	2010-07-05 18:41:21.118322244 +0200
-+++ pm-utils/pm/pm-functions.in	2010-07-05 18:41:24.126325221 +0200
-@@ -271,7 +271,7 @@
- 		return 1
- 	fi
- 	export LOGGING=true
--	exec > "$1" 2>&1
-+	exec >> "$1" 2>&1
- }
- 
- check_suspend() { [ -n "$SUSPEND_MODULE" ]; }
diff --git a/sys-power/pm-utils/metadata.xml b/sys-power/pm-utils/metadata.xml
deleted file mode 100644
index e1f7c98..0000000
--- a/sys-power/pm-utils/metadata.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-  <herd>freedesktop</herd>
-  <maintainer>
-    <email>freedesktop-bugs@gentoo.org</email>
-  </maintainer>
-  <use>
-    <flag name="ntp">Install support for <pkg>net-misc/ntp</pkg></flag>
-  </use>
-</pkgmetadata>
diff --git a/sys-power/pm-utils/pm-utils-1.4.1-r3.ebuild b/sys-power/pm-utils/pm-utils-1.4.1-r3.ebuild
deleted file mode 100644
index d9a5c8b..0000000
--- a/sys-power/pm-utils/pm-utils-1.4.1-r3.ebuild
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright 1999-2010 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-power/pm-utils/pm-utils-1.4.1.ebuild,v 1.10 2010/12/12 16:50:12 armin76 Exp $
-
-EAPI=2
-inherit multilib
-
-DESCRIPTION="Suspend and hibernation utilities"
-HOMEPAGE="http://pm-utils.freedesktop.org/"
-SRC_URI="http://pm-utils.freedesktop.org/releases/${P}.tar.gz"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="alsa debug networkmanager ntp video_cards_intel video_cards_radeon"
-
-vbetool="!video_cards_intel? ( sys-apps/vbetool )"
-DEPEND="!<sys-power/powermgmt-base-1.31
-	!>=sys-power/powermgmt-base-1.31[-pm-utils]"
-RDEPEND="${DEPEND}
-	sys-apps/dbus
-	>=sys-apps/util-linux-2.13
-	sys-power/pm-quirks
-	alsa? ( media-sound/alsa-utils )
-	networkmanager? ( net-misc/networkmanager )
-	ntp? ( || ( net-misc/ntp net-misc/openntpd ) )
-	amd64? ( ${vbetool} )
-	x86? ( ${vbetool} )
-	video_cards_radeon? ( app-laptop/radeontool )"
-
-src_prepare() {
-	local ignore="01grub"
-	use networkmanager || ignore+=" 55NetworkManager"
-	use ntp || ignore+=" 90clock"
-
-	# this kills our usb ethernet devices
-	ignore+=" disable_wol"
-
-	# don't touch vm settings
-	ignore+=" laptop-mode"
-
-	use debug && echo 'PM_DEBUG="true"' > "${T}"/gentoo
-	echo "HOOK_BLACKLIST=\"${ignore}\"" >> "${T}"/gentoo
-}
-
-src_configure() {
-	econf \
-		--docdir=/usr/share/doc/${PF} \
-		--disable-dependency-tracking \
-		--disable-doc
-}
-
-src_install() {
-	emake DESTDIR="${D}" install || die
-	dodoc AUTHORS ChangeLog NEWS pm/HOWTO* README* TODO || die
-	doman man/*.{1,8} || die
-
-	insinto /etc/pm/config.d
-	doins "${T}"/gentoo || die
-}
diff --git a/sys-process/audit/audit-2.8.4-r5.ebuild b/sys-process/audit/audit-2.8.4-r6.ebuild
similarity index 100%
rename from sys-process/audit/audit-2.8.4-r5.ebuild
rename to sys-process/audit/audit-2.8.4-r6.ebuild
diff --git a/sys-process/audit/audit-2.8.4.ebuild b/sys-process/audit/audit-2.8.4.ebuild
index a3c0987..3640264 100644
--- a/sys-process/audit/audit-2.8.4.ebuild
+++ b/sys-process/audit/audit-2.8.4.ebuild
@@ -14,7 +14,7 @@
 LICENSE="GPL-2+ LGPL-2.1+"
 SLOT="0"
 KEYWORDS="*"
-IUSE="gssapi ldap python static-libs"
+IUSE="cros_host gssapi ldap python static-libs"
 REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
 # Testcases are pretty useless as they are built for RedHat users/groups and kernels.
 RESTRICT="test"
@@ -73,12 +73,15 @@
 multilib_src_configure() {
 	local ECONF_SOURCE=${S}
 	local _with_arm_eabi=
+	# Enable ARM support when building ARM targets OR building for cros_host
+	# irrespective of target architecture. The latter is useful when
+	# processing audit logs in the Chrome OS SDK chroot.
 	# We want to support both 32-bit and 64-bit EABIs for now due to the mixed
 	# use on Chrome OS. This can be changed to a simpler
 	# $(use_with arm64 aarch64) if and when we drop 32-bit userspace support.
 	# Nevertheless, vestigial 32-bit EABI support here would likely just be
 	# superfluous and harmless.
-	if [[ "${ARCH}" == "arm"* ]]; then
+	if [[ "${ARCH}" == "arm"* ]] || use cros_host; then
 		_with_arm_eabi=(--with-arm --with-aarch64)
 	fi
 	econf \
diff --git a/sys-process/criu/Manifest b/sys-process/criu/Manifest
index fc1ef2b..8433220 100644
--- a/sys-process/criu/Manifest
+++ b/sys-process/criu/Manifest
@@ -1 +1,2 @@
-DIST criu-3.7.tar.bz2 749499 SHA256 d88143909dba02d8156f97a4152dc767d5f1a91b6751d4ce26434fbbeff93763 SHA512 8feb9e2579c04b67a7fe9631bb662504a7eb78550c3951cbe29252d87d9258fd6994533f6e60b0017b6a6e21bbdd5e7cd7e8a255be53b77b57efacec4e50140f WHIRLPOOL 35dbe1b9a00170173e47f3fdd18382439b9f534343dfc8de63a62f735cd748788024d95c98b38109b10632d68a2659c87ac21c134c0eddf9704ea1c56083c2b8
+DIST criu-3.14.tar.bz2 881407 BLAKE2B 418412681baf7ec9d3a03afe3860590c857bffcb6c57d01e60b77e85dd5ba2b30deee280c884ba1574665be5fcfd03f3cc058a4b7ae08f66aabe63a80373089b SHA512 97d064c5ffc41daf6e89edd6208b30e4198f313afc6d621d0dc74dadf94c303be70ba448d4e1ced9500f1c65f1bd12206eb88883be398911cc2c995310b17cc6
+DIST criu-3.15.tar.bz2 913904 BLAKE2B 2a3c7ad7ac32a407493e8908886d2929606e1dd0a1dd499be75cb954c1c4d60d0c59f0524d173dcdd89fa638e1edcc0c31886262069e3478173648ef09b4c159 SHA512 7bfd32053e47b95d10cdd5e99494bff6a21aa3179518179f8c72e870f0aab960dd76c9f6cb6982e5b881472cf6962eefee3cf7d8ae9128b3379bcaecc937ebbc
diff --git a/sys-process/criu/OWNERS b/sys-process/criu/OWNERS
new file mode 100644
index 0000000..eb2075e
--- /dev/null
+++ b/sys-process/criu/OWNERS
@@ -0,0 +1 @@
+rajatja@google.com
diff --git a/sys-process/criu/criu-3.15-r1.ebuild b/sys-process/criu/criu-3.15-r1.ebuild
new file mode 120000
index 0000000..75a5ce1
--- /dev/null
+++ b/sys-process/criu/criu-3.15-r1.ebuild
@@ -0,0 +1 @@
+criu-3.15.ebuild
\ No newline at end of file
diff --git a/sys-process/criu/criu-3.15.ebuild b/sys-process/criu/criu-3.15.ebuild
new file mode 100644
index 0000000..4a5fc5c
--- /dev/null
+++ b/sys-process/criu/criu-3.15.ebuild
@@ -0,0 +1,139 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+PYTHON_COMPAT=( python3_{6..9} )
+
+inherit toolchain-funcs linux-info flag-o-matic python-r1
+
+DESCRIPTION="utility to checkpoint/restore a process tree"
+HOMEPAGE="https://criu.org/"
+SRC_URI="https://download.openvz.org/criu/${P}.tar.bz2"
+
+LICENSE="GPL-2"
+SLOT="0"
+KEYWORDS="*"
+IUSE="doc selinux setproctitle static-libs"
+
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+RDEPEND="
+	${PYTHON_DEPS}
+	dev-libs/protobuf-c
+	dev-libs/libnl:3
+	net-libs/libnet:1.1
+	sys-libs/libcap
+	selinux? ( sys-libs/libselinux )
+	setproctitle? ( dev-libs/libbsd )"
+DEPEND="${RDEPEND}
+	doc? (
+		app-text/asciidoc
+		app-text/xmlto
+	)"
+RDEPEND="${RDEPEND}
+	dev-python/protobuf-python[${PYTHON_USEDEP}]
+"
+
+CONFIG_CHECK="~CHECKPOINT_RESTORE ~NAMESPACES ~PID_NS ~FHANDLE ~EVENTFD ~EPOLL ~INOTIFY_USER
+	~UNIX_DIAG ~INET_DIAG ~INET_UDP_DIAG ~PACKET_DIAG ~NETLINK_DIAG ~TUN ~NETFILTER_XT_MARK"
+
+# root access required for tests
+RESTRICT="test"
+
+PATCHES=(
+	"${FILESDIR}"/2.2/${PN}-2.2-flags.patch
+	"${FILESDIR}"/2.3/${PN}-2.3-no-git.patch
+	"${FILESDIR}"/${PN}-3.12-automagic-libbsd.patch
+	"${FILESDIR}"/${PN}-3.15-pkg-config.patch
+)
+
+criu_arch() {
+	# criu infers the arch from $(uname -m).  We never want this to happen.
+	case ${ARCH} in
+		amd64) echo "x86";;
+		arm64) echo "aarch64";;
+		ppc64*) echo "ppc64";;
+		*)     echo "${ARCH}";;
+	esac
+}
+
+pkg_setup() {
+	use amd64 && CONFIG_CHECK+=" ~IA32_EMULATION"
+	linux-info_pkg_setup
+}
+
+src_prepare() {
+	default
+
+	if ! use selinux; then
+		sed \
+			-e 's:libselinux:no_libselinux:g' \
+			-i Makefile.config || die
+	fi
+
+	use doc || sed -i 's_\(install: \)install-man _\1_g' Makefile.install
+}
+
+src_configure() {
+	# Gold linker generates invalid object file when used with criu's custom
+	# linker script.  Use the bfd linker instead. See https://crbug.com/839665#c3
+	tc-ld-disable-gold
+
+	# Build system uses this variable as a trigger to append coverage flags
+	# we'd like to avoid it. https://bugs.gentoo.org/744244
+	unset GCOV
+
+	python_setup
+}
+
+src_compile() {
+	local target="all $(usex doc 'docs' '')"
+	emake \
+		HOSTCC="$(tc-getBUILD_CC)" \
+		CC="$(tc-getCC)" \
+		LD="$(tc-getLD)" \
+		AR="$(tc-getAR)" \
+		PKG_CONFIG="$(tc-getPKG_CONFIG)" \
+		PYTHON="${EPYTHON%.?}" \
+		FULL_PYTHON="${PYTHON%.?}" \
+		OBJCOPY="$(tc-getOBJCOPY)" \
+		LIBDIR="${EPREFIX}/usr/$(get_libdir)" \
+		ARCH="$(criu_arch)" \
+		V=1 WERROR=0 DEBUG=0 \
+		SETPROCTITLE=$(usex setproctitle) \
+		${target}
+}
+
+src_test() {
+	# root privileges are required to dump all necessary info
+	if [[ ${EUID} -eq 0 ]] ; then
+		emake -j1 CC="$(tc-getCC)" ARCH="$(criu_arch)" V=1 WERROR=0 test
+	fi
+}
+
+install_crit() {
+	"${EPYTHON}" scripts/crit-setup.py install --root="${D}" --prefix="${EPREFIX}/usr/" || die
+	python_optimize
+}
+
+src_install() {
+	emake \
+		ARCH="$(criu_arch)" \
+		PREFIX="${EPREFIX}"/usr \
+		PYTHON="${EPYTHON%.?}" \
+		FULL_PYTHON="${PYTHON%.?}" \
+		LOGROTATEDIR="${EPREFIX}"/etc/logrotate.d \
+		DESTDIR="${D}" \
+		LIBDIR="${EPREFIX}/usr/$(get_libdir)" \
+		V=1 WERROR=0 DEBUG=0 \
+		install
+
+	use doc && dodoc CREDITS README.md
+
+	python_foreach_impl install_crit
+
+	if ! use static-libs; then
+		find "${D}" -name "*.a" -delete || die
+	fi
+}
diff --git a/sys-process/criu/criu-3.7-r2.ebuild b/sys-process/criu/criu-3.7-r2.ebuild
deleted file mode 120000
index 9f41cf8..0000000
--- a/sys-process/criu/criu-3.7-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-criu-3.7.ebuild
\ No newline at end of file
diff --git a/sys-process/criu/criu-3.7.ebuild b/sys-process/criu/criu-3.7.ebuild
deleted file mode 100644
index 7816130..0000000
--- a/sys-process/criu/criu-3.7.ebuild
+++ /dev/null
@@ -1,119 +0,0 @@
-# Copyright 1999-2018 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-PYTHON_COMPAT=( python2_7 )
-
-inherit eutils toolchain-funcs linux-info flag-o-matic python-r1 python-utils-r1
-
-DESCRIPTION="utility to checkpoint/restore a process tree"
-HOMEPAGE="http://criu.org/"
-SRC_URI="http://download.openvz.org/criu/${P}.tar.bz2"
-
-LICENSE="GPL-2"
-SLOT="0"
-KEYWORDS="*"
-IUSE="python selinux setproctitle static-libs"
-
-REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
-
-RDEPEND="
-	dev-libs/protobuf-c
-	python? ( dev-python/protobuf-python[${PYTHON_USEDEP}] )
-	dev-libs/libnl:3
-	net-libs/libnet:1.1
-	sys-libs/libcap
-	python? ( ${PYTHON_DEPS} )
-	selinux? ( sys-libs/libselinux )
-	setproctitle? ( dev-libs/libbsd )"
-DEPEND="${RDEPEND}
-	app-text/asciidoc
-	app-text/xmlto
-	"
-
-RDEPEND="${RDEPEND}
-	python? (
-		|| (
-			dev-python/protobuf-python[${PYTHON_USEDEP}]
-			dev-libs/protobuf[python,${PYTHON_USEDEP}]
-		)
-		dev-python/ipaddr[${PYTHON_USEDEP}]
-	)"
-
-
-PATCHES=(
-	"${FILESDIR}"/2.2/${PN}-2.2-flags.patch
-	"${FILESDIR}"/2.3/${PN}-2.3-no-git.patch
-	"${FILESDIR}"/${PN}-2.8-automagic-libbsd.patch
-	"${FILESDIR}"/2.0/${PN}-2.0-sysroot.patch
-)
-
-CONFIG_CHECK="~CHECKPOINT_RESTORE ~NAMESPACES ~PID_NS ~FHANDLE ~EVENTFD ~EPOLL ~INOTIFY_USER ~IA32_EMULATION ~UNIX_DIAG ~INET_DIAG ~INET_UDP_DIAG ~PACKET_DIAG ~NETLINK_DIAG"
-
-criu_arch() {
-	# criu infers the arch from $(uname -m).  We never want this to happen.
-	case ${ARCH} in
-	amd64) echo "x86";;
-	arm64) echo "aarch64";;
-	*)     echo "${ARCH}";;
-	esac
-}
-
-src_prepare() {
-	default
-
-	if ! use selinux; then
-		sed \
-			-e 's:libselinux:no_libselinux:g' \
-			-i Makefile.config || die
-	fi
-}
-
-src_configure() {
-	# Gold linker generates invalid object file when used with criu's custom
-	# linker script.  Use the bfd linker instead. See https://crbug.com/839665#c3
-	tc-ld-disable-gold
-}
-
-src_compile() {
-	RAW_LDFLAGS="$(raw-ldflags)" emake \
-		HOSTCC="$(tc-getCC)" \
-		CC="$(tc-getCC)" \
-		LD="$(tc-getLD)" \
-		OBJCOPY="$(tc-getOBJCOPY)" \
-		LIBDIR="${EPREFIX}/usr/$(get_libdir)" \
-		ARCH="$(criu_arch)" \
-		V=1 WERROR=0 DEBUG=0 \
-		SETPROCTITLE=$(usex setproctitle) \
-		PYCRIU=$(usex python) \
-		all docs
-}
-
-
-install_crit() {
-	"${PYTHON:-python}" ../scripts/crit-setup.py install --root="${D}" --prefix="${EPREFIX}/usr/"
-}
-
-src_install() {
-	sed -e "s#-lnet#-L${EROOT}/usr/$(get_libdir) -lnet#g" -i criu/Makefile.packages
-	emake \
-		ARCH="$(criu_arch)" \
-		CC="$(tc-getCC)" \
-		PREFIX="${EPREFIX}"/usr \
-		LOGROTATEDIR="${EPREFIX}"/etc/logrotate.d \
-		DESTDIR="${D}" \
-		LIBDIR="${EPREFIX}/usr/$(get_libdir)" \
-		install
-
-	dodoc CREDITS README.md
-
-	if use python ; then
-		cd lib
-		python_foreach_impl install_crit
-	fi
-
-	if ! use static-libs; then
-		find "${D}" -name "*.a" -delete || die
-	fi
-}
diff --git a/sys-process/criu/files/2.0/criu-2.0-automagic-libbsd.patch b/sys-process/criu/files/2.0/criu-2.0-automagic-libbsd.patch
deleted file mode 100644
index 3f39ef6..0000000
--- a/sys-process/criu/files/2.0/criu-2.0-automagic-libbsd.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/criu/Makefile.config b/criu/Makefile.config
-index aaaca1f..e977bcd 100644
---- a/criu/Makefile.config
-+++ b/criu/Makefile.config
-@@ -4,10 +4,12 @@ include ../scripts/feature-tests.mak
- 
- CONFIG_HEADER := include/config.h
- 
-+ifeq ($(SETPROCTITLE),yes)
- ifeq ($(call try-cc,$(FEATURE_TEST_LIBBSD_DEV),-lbsd),y)
-         LIBS	+= -lbsd
-         DEFINES	+= -DCONFIG_HAS_LIBBSD
- endif
-+endif
- 
- ifeq ($(call pkg-config-check,libselinux),y)
-         LIBS	+= -lselinux
diff --git a/sys-process/criu/files/2.0/criu-2.0-sysroot.patch b/sys-process/criu/files/2.0/criu-2.0-sysroot.patch
deleted file mode 100644
index 4dcb0fb..0000000
--- a/sys-process/criu/files/2.0/criu-2.0-sysroot.patch
+++ /dev/null
@@ -1,9 +0,0 @@
-Using host headers when cross compiling is not a great idea.
-
-Index: criu-2.0/criu/Makefile
-===================================================================
---- criu-2.0.orig/criu/Makefile
-+++ criu-2.0/criu/Makefile
-@@ -51,1 +51,1 @@ ccflags-y		+= -iquote $(SRC_DIR)/criu/pi
--ccflags-y		+= -I/usr/include/libnl3
-+ccflags-y		+= -I${SYSROOT}/usr/include/libnl3
diff --git a/sys-process/criu/files/2.2/criu-2.2-makefile.patch b/sys-process/criu/files/2.2/criu-2.2-makefile.patch
deleted file mode 100644
index e4e856d..0000000
--- a/sys-process/criu/files/2.2/criu-2.2-makefile.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-diff --git a/Makefile.install b/Makefile.install
-index b3f5551..2349107 100644
---- a/Makefile.install
-+++ b/Makefile.install
-@@ -6,23 +6,10 @@ BINDIR		?= $(PREFIX)/bin
- SBINDIR		?= $(PREFIX)/sbin
- MANDIR		?= $(PREFIX)/share/man
- SYSTEMDUNITDIR	?= $(PREFIX)/lib/systemd/system/
--LOGROTATEDIR	?= $(PREFIX)/etc/logrotate.d/
-+LOGROTATEDIR	?= $(SYSCONFDIR)/etc/logrotate.d/
- LIBDIR		?= $(PREFIX)/lib
- INCLUDEDIR	?= $(PREFIX)/include/criu
- 
--#
--# For recent Debian/Ubuntu with multiarch support.
--DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null)
--ifneq "$(DEB_HOST_MULTIARCH)" ""
--        LIBDIR			?= $(PREFIX)/lib/$(DEB_HOST_MULTIARCH)
--else
--        #
--        # For most other systems
--        ifeq "$(shell uname -m)" "x86_64"
--                LIBDIR		?= $(PREFIX)/lib64
--        endif
--endif
--
- export BINDIR SBINDIR MANDIR SYSTEMDUNITDIR LOGROTATEDIR
- export INCLUDEDIR LIBDIR DESTDIR PREFIX
- 
-diff --git a/lib/Makefile b/lib/Makefile
-index f1c0821..3bef265 100644
---- a/lib/Makefile
-+++ b/lib/Makefile
-@@ -25,8 +25,12 @@ lib-c: c/$(CRIU_SO)
- #
- # Python bindings.
- lib-py:
-+ifeq ($(PYCRIU),yes)
- 	$(call msg-gen, $@)
- 	$(Q) $(MAKE) -C py all
-+else
-+	$(Q) echo "no py criu"
-+endif
- .PHONY: lib-py
- 
- all: lib-c lib-py
-@@ -43,7 +47,7 @@ clean:
- 	$(Q) $(RM) -r build usr
- .PHONY: clean
- 
--install: lib-c lib-py ../crit/crit c/criu.pc.in
-+install: lib-c ../crit/crit c/criu.pc.in
- 	$(E) "  INSTALL " $(CRIU_SO)
- 	$(Q) mkdir -p $(DESTDIR)$(LIBDIR)
- 	$(Q) install -m 755 c/$(CRIU_SO) $(DESTDIR)$(LIBDIR)/$(CRIU_SO).$(CRIU_SO_VERSION_MAJOR).$(CRIU_SO_VERSION_MINOR)
-@@ -55,8 +59,6 @@ install: lib-c lib-py ../crit/crit c/criu.pc.in
- 	$(Q) mkdir -p $(DESTDIR)$(LIBDIR)/pkgconfig
- 	$(Q) sed -e 's,@version@,$(CRIU_VERSION),' -e 's,@libdir@,$(LIBDIR),' -e 's,@includedir@,$(dir $(INCLUDEDIR)),' c/criu.pc.in > c/criu.pc
- 	$(Q) install -m 644 c/criu.pc $(DESTDIR)$(LIBDIR)/pkgconfig
--	$(E) "  INSTALL " crit
--	$(Q) python ../scripts/crit-setup.py install --root=$(DESTDIR) --prefix=$(PREFIX) --record $(CRIT_SETUP_FILES)
- .PHONY: install
- 
- uninstall:
-diff --git a/scripts/nmk/scripts/build.mk b/scripts/nmk/scripts/build.mk
-index bd40944..3cfbffa 100644
---- a/scripts/nmk/scripts/build.mk
-+++ b/scripts/nmk/scripts/build.mk
-@@ -87,7 +87,7 @@ builtin-name	:= $(strip $(builtin-name))
- 
- #
- # Link flags.
--ld_flags	:= $(strip $(LDFLAGS) $(ldflags-y))
-+ld_flags	:= $(strip $(RAW_LDFLAGS) $(ldflags-y))
- 
- #
- # $(obj) related rules.
diff --git a/sys-process/criu/files/2.2/criu-2.2-no-git.patch b/sys-process/criu/files/2.2/criu-2.2-no-git.patch
deleted file mode 100644
index 0622225..0000000
--- a/sys-process/criu/files/2.2/criu-2.2-no-git.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/Makefile b/Makefile
-index 7c85403..20992ed 100644
---- a/Makefile
-+++ b/Makefile
-@@ -179,9 +179,9 @@ test: zdtm
- # Generating tar requires tag matched CRIU_VERSION.
- # If not found then simply use GIT's describe with
- # "v" prefix stripped.
--head-name := $(shell git tag -l v$(CRIU_VERSION))
-+head-name := $(shell if [ -d ".git" ]; then git tag -l v$(CRIU_VERSION); fi)
- ifeq ($(head-name),)
--        head-name := $(shell git describe)
-+        head-name := $(shell if [ -d ".git" ]; then git describe; fi)
- endif
- tar-name := $(shell echo $(head-name) | sed -e 's/^v//g')
- criu-$(tar-name).tar.bz2:
diff --git a/sys-process/criu/files/2.3/criu-2.3-aarch64.patch b/sys-process/criu/files/2.3/criu-2.3-aarch64.patch
deleted file mode 100644
index e857b6a..0000000
--- a/sys-process/criu/files/2.3/criu-2.3-aarch64.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/Makefile b/Makefile
-index 0e2636b..ef8f78b 100644
---- a/Makefile
-+++ b/Makefile
-@@ -25,7 +25,7 @@ export SRC_DIR
- 
- #
- # Architecture specific options.
--ifneq ($(filter-out x86 arm arm64 ppc64,$(ARCH)),)
-+ifneq ($(filter-out x86 arm aarch64 ppc64,$(ARCH)),)
-         $(error "The architecture $(ARCH) isn't supported")
- endif
- 
-@@ -39,7 +39,7 @@ ifeq ($(ARCH),arm)
-         SRCARCH		:= arm
- endif
- 
--ifeq ($(ARCH),arm64)
-+ifeq ($(ARCH),aarch64)
-         ARCH		:= aarch64
-         SRCARCH		:= aarch64
-         VDSO		:= y
diff --git a/sys-process/criu/files/2.4/criu-2.4-makefile.patch b/sys-process/criu/files/2.4/criu-2.4-makefile.patch
deleted file mode 100644
index 8a0fb6d..0000000
--- a/sys-process/criu/files/2.4/criu-2.4-makefile.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-diff --git a/Makefile.install b/Makefile.install
-index e3dd551..495ad39 100644
---- a/Makefile.install
-+++ b/Makefile.install
-@@ -6,24 +6,11 @@ BINDIR		?= $(PREFIX)/bin
- SBINDIR		?= $(PREFIX)/sbin
- MANDIR		?= $(PREFIX)/share/man
- SYSTEMDUNITDIR	?= $(PREFIX)/lib/systemd/system/
--LOGROTATEDIR	?= $(PREFIX)/etc/logrotate.d/
-+LOGROTATEDIR	?= $(SYSCONFDIR)/etc/logrotate.d/
- LIBDIR		?= $(PREFIX)/lib
- INCLUDEDIR	?= $(PREFIX)/include/criu
- LIBEXECDIR	?= $(PREFIX)/libexec
- 
--#
--# For recent Debian/Ubuntu with multiarch support.
--DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null)
--ifneq "$(DEB_HOST_MULTIARCH)" ""
--        LIBDIR			?= $(PREFIX)/lib/$(DEB_HOST_MULTIARCH)
--else
--        #
--        # For most other systems
--        ifeq "$(shell uname -m)" "x86_64"
--                LIBDIR		?= $(PREFIX)/lib64
--        endif
--endif
--
- export BINDIR SBINDIR MANDIR SYSTEMDUNITDIR LOGROTATEDIR
- export INCLUDEDIR LIBDIR DESTDIR PREFIX LIBEXECDIR
- 
-diff --git a/lib/Makefile b/lib/Makefile
-index f1c0821..3bef265 100644
---- a/lib/Makefile
-+++ b/lib/Makefile
-@@ -25,8 +25,12 @@ lib-c: c/$(CRIU_SO)
- #
- # Python bindings.
- lib-py:
-+ifeq ($(PYCRIU),yes)
- 	$(call msg-gen, $@)
- 	$(Q) $(MAKE) -C py all
-+else
-+	$(Q) echo "no py criu"
-+endif
- .PHONY: lib-py
- 
- all: lib-c lib-py
-@@ -43,7 +47,7 @@ clean:
- 	$(Q) $(RM) -r build usr
- .PHONY: clean
- 
--install: lib-c lib-py ../crit/crit c/criu.pc.in
-+install: lib-c ../crit/crit c/criu.pc.in
- 	$(E) "  INSTALL " $(CRIU_SO)
- 	$(Q) mkdir -p $(DESTDIR)$(LIBDIR)
- 	$(Q) install -m 755 c/$(CRIU_SO) $(DESTDIR)$(LIBDIR)/$(CRIU_SO).$(CRIU_SO_VERSION_MAJOR).$(CRIU_SO_VERSION_MINOR)
-@@ -55,8 +59,6 @@ install: lib-c lib-py ../crit/crit c/criu.pc.in
- 	$(Q) mkdir -p $(DESTDIR)$(LIBDIR)/pkgconfig
- 	$(Q) sed -e 's,@version@,$(CRIU_VERSION),' -e 's,@libdir@,$(LIBDIR),' -e 's,@includedir@,$(dir $(INCLUDEDIR)),' c/criu.pc.in > c/criu.pc
- 	$(Q) install -m 644 c/criu.pc $(DESTDIR)$(LIBDIR)/pkgconfig
--	$(E) "  INSTALL " crit
--	$(Q) python ../scripts/crit-setup.py install --root=$(DESTDIR) --prefix=$(PREFIX) --record $(CRIT_SETUP_FILES)
- .PHONY: install
- 
- uninstall:
-diff --git a/scripts/nmk/scripts/build.mk b/scripts/nmk/scripts/build.mk
-index bd40944..3cfbffa 100644
---- a/scripts/nmk/scripts/build.mk
-+++ b/scripts/nmk/scripts/build.mk
-@@ -87,7 +87,7 @@ builtin-name	:= $(strip $(builtin-name))
- 
- #
- # Link flags.
--ld_flags	:= $(strip $(LDFLAGS) $(ldflags-y))
-+ld_flags	:= $(strip $(RAW_LDFLAGS) $(ldflags-y))
- 
- #
- # $(obj) related rules.
diff --git a/sys-process/criu/files/2.5/criu-2.5-automagic-libbsd.patch b/sys-process/criu/files/2.5/criu-2.5-automagic-libbsd.patch
deleted file mode 100644
index de6509a..0000000
--- a/sys-process/criu/files/2.5/criu-2.5-automagic-libbsd.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/criu/Makefile.config b/criu/Makefile.config
-index f531b3b..23a3b23 100644
---- a/criu/Makefile.config
-+++ b/criu/Makefile.config
-@@ -2,10 +2,12 @@ include $(__nmk_dir)/utils.mk
- include $(__nmk_dir)msg.mk
- include $(SRC_DIR)/scripts/feature-tests.mak
- 
-+ifeq ($(SETPROCTITLE),yes)
- ifeq ($(call try-cc,$(FEATURE_TEST_LIBBSD_DEV),-lbsd),true)
-         LIBS		+= -lbsd
-         FEATURE_DEFINES	+= -DCONFIG_HAS_LIBBSD
- endif
-+endif
- 
- ifeq ($(call pkg-config-check,libselinux),y)
-         LIBS		+= -lselinux
diff --git a/sys-process/criu/files/2.9/criu-2.9-makefile.patch b/sys-process/criu/files/2.9/criu-2.9-makefile.patch
deleted file mode 100644
index 7ec91ee..0000000
--- a/sys-process/criu/files/2.9/criu-2.9-makefile.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-diff --git a/Makefile.install b/Makefile.install
-index dbc22e1..23fd1ae 100644
---- a/Makefile.install
-+++ b/Makefile.install
-@@ -6,24 +6,11 @@ BINDIR		?= $(PREFIX)/bin
- SBINDIR		?= $(PREFIX)/sbin
- MANDIR		?= $(PREFIX)/share/man
- SYSTEMDUNITDIR	?= $(PREFIX)/lib/systemd/system/
--LOGROTATEDIR	?= $(PREFIX)/etc/logrotate.d/
-+LOGROTATEDIR	?= $(SYSCONFDIR)/etc/logrotate.d/
- LIBDIR		?= $(PREFIX)/lib
- INCLUDEDIR	?= $(PREFIX)/include/criu
- LIBEXECDIR	?= $(PREFIX)/libexec
- 
--#
--# For recent Debian/Ubuntu with multiarch support.
--DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null)
--ifneq "$(DEB_HOST_MULTIARCH)" ""
--        LIBDIR			?= $(PREFIX)/lib/$(DEB_HOST_MULTIARCH)
--else
--        #
--        # For most other systems
--        ifeq "$(shell uname -m)" "x86_64"
--                LIBDIR		?= $(PREFIX)/lib64
--        endif
--endif
--
- export BINDIR SBINDIR MANDIR SYSTEMDUNITDIR LOGROTATEDIR
- export INCLUDEDIR LIBDIR DESTDIR PREFIX LIBEXECDIR
- 
-diff --git a/lib/Makefile b/lib/Makefile
-index 616f089..aab3189 100644
---- a/lib/Makefile
-+++ b/lib/Makefile
-@@ -25,8 +25,12 @@ lib-c: c/$(CRIU_SO)
- #
- # Python bindings.
- lib-py:
-+ifeq ($(PYCRIU),yes)
- 	$(call msg-gen, $@)
- 	$(Q) $(MAKE) -C py all
-+else
-+	$(Q) echo "no py criu"
-+endif
- .PHONY: lib-py
- 
- all: lib-c lib-py
-@@ -43,7 +47,7 @@ clean:
- 	$(Q) $(RM) -r build usr
- .PHONY: clean
- 
--install: lib-c lib-py ../crit/crit c/criu.pc.in
-+install: lib-c ../crit/crit c/criu.pc.in
- 	$(E) "  INSTALL " $(CRIU_SO)
- 	$(Q) mkdir -p $(DESTDIR)$(LIBDIR)
- 	$(Q) install -m 755 c/$(CRIU_SO) $(DESTDIR)$(LIBDIR)/$(CRIU_SO).$(CRIU_SO_VERSION_MAJOR).$(CRIU_SO_VERSION_MINOR)
-@@ -55,8 +59,6 @@ install: lib-c lib-py ../crit/crit c/criu.pc.in
- 	$(Q) mkdir -p $(DESTDIR)$(LIBDIR)/pkgconfig
- 	$(Q) sed -e 's,@version@,$(CRIU_VERSION),' -e 's,@libdir@,$(LIBDIR),' -e 's,@includedir@,$(dir $(INCLUDEDIR)),' c/criu.pc.in > c/criu.pc
- 	$(Q) install -m 644 c/criu.pc $(DESTDIR)$(LIBDIR)/pkgconfig
--	$(E) "  INSTALL " crit
--	$(Q) $(PYTHON_BIN) ../scripts/crit-setup.py install --root=$(DESTDIR) --prefix=$(PREFIX) --record $(CRIT_SETUP_FILES)
- .PHONY: install
- 
- uninstall:
-diff --git a/scripts/nmk/scripts/build.mk b/scripts/nmk/scripts/build.mk
-index 1860d58..e169b0c 100644
---- a/scripts/nmk/scripts/build.mk
-+++ b/scripts/nmk/scripts/build.mk
-@@ -87,7 +87,7 @@ builtin-name	:= $(strip $(builtin-name))
- 
- #
- # Link flags.
--ld_flags	:= $(strip $(LDFLAGS) $(ldflags-y))
-+ld_flags	:= $(strip $(RAW_LDFLAGS) $(ldflags-y))
- 
- #
- # $(obj) related rules.
diff --git a/sys-process/criu/files/criu-2.8-automagic-libbsd.patch b/sys-process/criu/files/criu-2.8-automagic-libbsd.patch
deleted file mode 100644
index 54781ea..0000000
--- a/sys-process/criu/files/criu-2.8-automagic-libbsd.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/Makefile.config b/Makefile.config
-index e0d49d2..d1b2b9d 100644
---- a/Makefile.config
-+++ b/Makefile.config
-@@ -2,10 +2,12 @@ include $(__nmk_dir)utils.mk
- include $(__nmk_dir)msg.mk
- include $(SRC_DIR)/scripts/feature-tests.mak
- 
-+ifeq ($(SETPROCTITLE),yes)
- ifeq ($(call try-cc,$(FEATURE_TEST_LIBBSD_DEV),-lbsd),true)
-         LIBS_FEATURES	+= -lbsd
-         FEATURE_DEFINES	+= -DCONFIG_HAS_LIBBSD
- endif
-+endif
- 
- ifeq ($(call pkg-config-check,libselinux),y)
-         LIBS_FEATURES	+= -lselinux
diff --git a/sys-process/criu/files/criu-3.12-automagic-libbsd.patch b/sys-process/criu/files/criu-3.12-automagic-libbsd.patch
new file mode 100644
index 0000000..7794f82
--- /dev/null
+++ b/sys-process/criu/files/criu-3.12-automagic-libbsd.patch
@@ -0,0 +1,13 @@
+diff --git a/Makefile.config b/Makefile.config
+index a853705..27bb91f 100644
+--- a/Makefile.config
++++ b/Makefile.config
+@@ -2,7 +2,7 @@ include $(__nmk_dir)utils.mk
+ include $(__nmk_dir)msg.mk
+ include scripts/feature-tests.mak
+ 
+-ifeq ($(call try-cc,$(FEATURE_TEST_LIBBSD_DEV),-lbsd),true)
++ifeq ($(SETPROCTITLE)$(call try-cc,$(FEATURE_TEST_LIBBSD_DEV),-lbsd),yestrue)
+         LIBS_FEATURES	+= -lbsd
+         FEATURE_DEFINES	+= -DCONFIG_HAS_LIBBSD
+ else
diff --git a/sys-process/criu/files/criu-3.15-pkg-config.patch b/sys-process/criu/files/criu-3.15-pkg-config.patch
new file mode 100644
index 0000000..69d83bf
--- /dev/null
+++ b/sys-process/criu/files/criu-3.15-pkg-config.patch
@@ -0,0 +1,141 @@
+https://github.com/checkpoint-restore/criu/pull/1517
+
+From d72536d9a821f9ff64f5dd62c9f8a282e3e5ec85 Mon Sep 17 00:00:00 2001
+From: Mike Frysinger <vapier@chromium.org>
+Date: Wed, 16 Jun 2021 15:43:04 -0400
+Subject: [PATCH] build: respect $PKG_CONFIG settings
+
+The build needs to respect $PKG_CONFIG env var like other standard
+build systems and the the upstream pkg-config project itself.  This
+allows the package builder to point it to the right tool when doing
+a cross-compile build.  Otherwise the host pkg-config tool is used
+which won't have access to the packages in the cross sysroot.
+
+Signed-off-by: Mike Frysinger <vapier@chromium.org>
+---
+ Makefile.config              | 2 +-
+ criu/Makefile                | 2 +-
+ scripts/nmk/scripts/tools.mk | 1 +
+ scripts/nmk/scripts/utils.mk | 2 +-
+ test/zdtm/Makefile.inc       | 8 +++++---
+ test/zdtm/lib/Makefile       | 2 +-
+ test/zdtm/static/Makefile    | 2 +-
+ 7 files changed, 11 insertions(+), 8 deletions(-)
+
+diff --git a/Makefile.config b/Makefile.config
+index 3d99e680be7f..6e3e1b062256 100644
+--- a/Makefile.config
++++ b/Makefile.config
+@@ -30,7 +30,7 @@ else
+ endif
+ 
+ ifeq ($(call pkg-config-check,libnftables),y)
+-        LIB_NFTABLES	:= $(shell pkg-config --libs libnftables)
++        LIB_NFTABLES	:= $(shell $(PKG_CONFIG) --libs libnftables)
+         ifeq ($(call try-cc,$(FEATURE_TEST_NFTABLES_LIB_API_0),$(LIB_NFTABLES)),true)
+                 LIBS_FEATURES	+= $(LIB_NFTABLES)
+                 FEATURE_DEFINES	+= -DCONFIG_HAS_NFTABLES_LIB_API_0
+diff --git a/criu/Makefile b/criu/Makefile
+index ceb49ce09925..11d454c81026 100644
+--- a/criu/Makefile
++++ b/criu/Makefile
+@@ -27,7 +27,7 @@ CFLAGS			+= -iquote include
+ CFLAGS			+= -iquote images
+ CFLAGS			+= -iquote $(ARCH_DIR)/include
+ CFLAGS			+= -iquote .
+-CFLAGS			+= $(shell pkg-config --cflags libnl-3.0)
++CFLAGS			+= $(shell $(PKG_CONFIG) --cflags libnl-3.0)
+ CFLAGS			+= $(CONFIG-DEFINES)
+ 
+ ifeq ($(GMON),1)
+diff --git a/scripts/nmk/scripts/tools.mk b/scripts/nmk/scripts/tools.mk
+index c5794401c734..1681d4e9092b 100644
+--- a/scripts/nmk/scripts/tools.mk
++++ b/scripts/nmk/scripts/tools.mk
+@@ -17,6 +17,7 @@ AR		:= $(CROSS_COMPILE)ar
+ STRIP		:= $(CROSS_COMPILE)strip
+ OBJCOPY		:= $(CROSS_COMPILE)objcopy
+ OBJDUMP		:= $(CROSS_COMPILE)objdump
++PKG_CONFIG	?= pkg-config
+ NM		:= $(CROSS_COMPILE)nm
+ MAKE		:= make
+ MKDIR		:= mkdir -p
+diff --git a/scripts/nmk/scripts/utils.mk b/scripts/nmk/scripts/utils.mk
+index b9790615ca7f..f93fdf911cef 100644
+--- a/scripts/nmk/scripts/utils.mk
++++ b/scripts/nmk/scripts/utils.mk
+@@ -16,7 +16,7 @@ try-asm = $(call try-compile,assembler-with-cpp,$(1),$(2),$(3))
+ 
+ # pkg-config-check
+ # Usage: ifeq ($(call pkg-config-check, library),y)
+-pkg-config-check = $(shell sh -c 'pkg-config $(1) && echo y')
++pkg-config-check = $(shell sh -c '$(PKG_CONFIG) $(1) && echo y')
+ 
+ #
+ # Remove duplicates.
+diff --git a/test/zdtm/Makefile.inc b/test/zdtm/Makefile.inc
+index 43763321f956..e4af9c51e9e4 100644
+--- a/test/zdtm/Makefile.inc
++++ b/test/zdtm/Makefile.inc
+@@ -37,6 +37,7 @@ HOSTCC	?= gcc
+ ifeq ($(origin CC), default)
+         CC := $(CROSS_COMPILE)$(HOSTCC)
+ endif
++PKG_CONFIG ?= pkg-config
+ CFLAGS	+= -g -O2 -Wall -Werror -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
+ CFLAGS	+= -Wdeclaration-after-statement -Wstrict-prototypes
+ CFLAGS	+= $(USERCFLAGS)
+@@ -54,8 +55,9 @@ endif
+ RM := rm -f --one-file-system
+ 
+ ifeq ($(COMPAT_TEST),y)
++$(error bad juju)
+         # Firstly look for 32-bit libs and then in standard path.
+-        PKG_CONFIG_PATH := $(shell pkg-config --variable pc_path pkg-config)
++        PKG_CONFIG_PATH := $(shell $(PKG_CONFIG) --variable pc_path pkg-config)
+         PKG_CONFIG_PATH := /usr/lib32/pkgconfig:$(PKG_CONFIG_PATH)
+ ifeq ($(ARCH),x86)
+         export CFLAGS += -m32
+@@ -66,11 +68,11 @@ endif
+ endif
+ 
+ define pkg-libs
+-        $(shell PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" pkg-config --libs $(1))
++        $(shell PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" $(PKG_CONFIG) --libs $(1))
+ endef
+ 
+ define pkg-cflags
+-        $(shell PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" pkg-config --cflags $(1))
++        $(shell PKG_CONFIG_PATH="$(PKG_CONFIG_PATH)" $(PKG_CONFIG) --cflags $(1))
+ endef
+ 
+ %.d: %.c
+diff --git a/test/zdtm/lib/Makefile b/test/zdtm/lib/Makefile
+index 05fe64e91703..5ecf8bccf27b 100644
+--- a/test/zdtm/lib/Makefile
++++ b/test/zdtm/lib/Makefile
+@@ -6,7 +6,7 @@ LIB	:= libzdtmtst.a
+ 
+ LIBSRC	:= datagen.c msg.c parseargs.c test.c streamutil.c lock.c ns.c tcp.c unix.c fs.c sysctl.c
+ 
+-pkg-config-check = $(shell sh -c 'pkg-config $(1) && echo y')
++pkg-config-check = $(shell sh -c '$(PKG_CONFIG) $(1) && echo y')
+ ifeq ($(call pkg-config-check,libbpf),y)
+ LIBSRC	+= bpfmap_zdtm.c
+ endif
+diff --git a/test/zdtm/static/Makefile b/test/zdtm/static/Makefile
+index e60fe6dc2d66..c5f3c98be3ed 100644
+--- a/test/zdtm/static/Makefile
++++ b/test/zdtm/static/Makefile
+@@ -241,7 +241,7 @@ TST_NOFILE	:=				\
+ 		sigtrap01			\
+ #		jobctl00			\
+ 
+-pkg-config-check = $(shell sh -c 'pkg-config $(1) && echo y')
++pkg-config-check = $(shell sh -c '$(PKG_CONFIG) $(1) && echo y')
+ ifeq ($(call pkg-config-check,libbpf),y)
+ TST_NOFILE	+=				\
+ 		bpf_hash			\
+-- 
+2.31.1
+
diff --git a/sys-process/criu/metadata.xml b/sys-process/criu/metadata.xml
index 1a67980..fe7c191 100644
--- a/sys-process/criu/metadata.xml
+++ b/sys-process/criu/metadata.xml
@@ -2,8 +2,8 @@
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
 	<maintainer type="person">
-		<email>dlan@gentoo.org</email>
-		<name>Yixun Lan</name>
+		<email>chutzpah@gentoo.org</email>
+		<name>Patrick McLean</name>
 	</maintainer>
 	<maintainer type="project">
 		<email>virtualization@gentoo.org</email>
diff --git a/virtual/arc-codec/arc-codec-1-r2.ebuild b/virtual/arc-codec/arc-codec-1-r2.ebuild
new file mode 120000
index 0000000..fb7abee
--- /dev/null
+++ b/virtual/arc-codec/arc-codec-1-r2.ebuild
@@ -0,0 +1 @@
+arc-codec-1.ebuild
\ No newline at end of file
diff --git a/virtual/arc-codec/arc-codec-1.ebuild b/virtual/arc-codec/arc-codec-1.ebuild
index dbf86a50..d8721ce 100644
--- a/virtual/arc-codec/arc-codec-1.ebuild
+++ b/virtual/arc-codec/arc-codec-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright 2016 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=4
+EAPI=7
 
 DESCRIPTION="Chrome OS ArcCodec virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/arc-hardware-features/arc-hardware-features-1-r2.ebuild b/virtual/arc-hardware-features/arc-hardware-features-1-r2.ebuild
new file mode 120000
index 0000000..e170216
--- /dev/null
+++ b/virtual/arc-hardware-features/arc-hardware-features-1-r2.ebuild
@@ -0,0 +1 @@
+arc-hardware-features-1.ebuild
\ No newline at end of file
diff --git a/virtual/arc-hardware-features/arc-hardware-features-1.ebuild b/virtual/arc-hardware-features/arc-hardware-features-1.ebuild
index 0345f5f..d13120f 100644
--- a/virtual/arc-hardware-features/arc-hardware-features-1.ebuild
+++ b/virtual/arc-hardware-features/arc-hardware-features-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI=7
 
 DESCRIPTION="Chrome OS ARC++ hardware features virtual package."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/arc-media-profiles/arc-media-profiles-1-r2.ebuild b/virtual/arc-media-profiles/arc-media-profiles-1-r2.ebuild
new file mode 120000
index 0000000..fe1e277
--- /dev/null
+++ b/virtual/arc-media-profiles/arc-media-profiles-1-r2.ebuild
@@ -0,0 +1 @@
+arc-media-profiles-1.ebuild
\ No newline at end of file
diff --git a/virtual/arc-media-profiles/arc-media-profiles-1.ebuild b/virtual/arc-media-profiles/arc-media-profiles-1.ebuild
index 1142b3a..1a3e7cb 100644
--- a/virtual/arc-media-profiles/arc-media-profiles-1.ebuild
+++ b/virtual/arc-media-profiles/arc-media-profiles-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright 2017 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=4
+EAPI=7
 
 DESCRIPTION="Chrome OS Arc media profiles virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/arc-opengles/arc-opengles-1-r2.ebuild b/virtual/arc-opengles/arc-opengles-1-r2.ebuild
new file mode 120000
index 0000000..8894800
--- /dev/null
+++ b/virtual/arc-opengles/arc-opengles-1-r2.ebuild
@@ -0,0 +1 @@
+arc-opengles-1.ebuild
\ No newline at end of file
diff --git a/virtual/arc-opengles/arc-opengles-1.ebuild b/virtual/arc-opengles/arc-opengles-1.ebuild
index b5d92d3..49643dc 100644
--- a/virtual/arc-opengles/arc-opengles-1.ebuild
+++ b/virtual/arc-opengles/arc-opengles-1.ebuild
@@ -1,11 +1,12 @@
 # Copyright 2016 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Virtual for ARC OpenGLES implementations"
 SRC_URI=""
 
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/arcvm-codec/arcvm-codec-1-r2.ebuild b/virtual/arcvm-codec/arcvm-codec-1-r2.ebuild
new file mode 120000
index 0000000..c2124cc
--- /dev/null
+++ b/virtual/arcvm-codec/arcvm-codec-1-r2.ebuild
@@ -0,0 +1 @@
+arcvm-codec-1.ebuild
\ No newline at end of file
diff --git a/virtual/arcvm-codec/arcvm-codec-1.ebuild b/virtual/arcvm-codec/arcvm-codec-1.ebuild
index 8ff5e53..723185ea3 100644
--- a/virtual/arcvm-codec/arcvm-codec-1.ebuild
+++ b/virtual/arcvm-codec/arcvm-codec-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Chrome OS ARCVM codec virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/assets/assets-1-r1.ebuild b/virtual/assets/assets-1-r3.ebuild
similarity index 100%
rename from virtual/assets/assets-1-r1.ebuild
rename to virtual/assets/assets-1-r3.ebuild
diff --git a/virtual/assets/assets-1.ebuild b/virtual/assets/assets-1.ebuild
index 49dcb4b..036d748 100644
--- a/virtual/assets/assets-1.ebuild
+++ b/virtual/assets/assets-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="Additional assets for a given target; common assets should go in
 chromeos-assets."
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/autotest-assistant-libs/autotest-assistant-libs-1-r2.ebuild b/virtual/autotest-assistant-libs/autotest-assistant-libs-1-r2.ebuild
new file mode 120000
index 0000000..ad49b42
--- /dev/null
+++ b/virtual/autotest-assistant-libs/autotest-assistant-libs-1-r2.ebuild
@@ -0,0 +1 @@
+autotest-assistant-libs-1.ebuild
\ No newline at end of file
diff --git a/virtual/autotest-assistant-libs/autotest-assistant-libs-1.ebuild b/virtual/autotest-assistant-libs/autotest-assistant-libs-1.ebuild
index 096c617..1dac5bd 100644
--- a/virtual/autotest-assistant-libs/autotest-assistant-libs-1.ebuild
+++ b/virtual/autotest-assistant-libs/autotest-assistant-libs-1.ebuild
@@ -1,11 +1,11 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI=7
 
 DESCRIPTION="This package can be overriden to bring in additional
 assistant autotest libraries"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
diff --git a/virtual/autotest-capability/autotest-capability-1-r2.ebuild b/virtual/autotest-capability/autotest-capability-1-r2.ebuild
new file mode 120000
index 0000000..dfc457a
--- /dev/null
+++ b/virtual/autotest-capability/autotest-capability-1-r2.ebuild
@@ -0,0 +1 @@
+autotest-capability-1.ebuild
\ No newline at end of file
diff --git a/virtual/autotest-capability/autotest-capability-1.ebuild b/virtual/autotest-capability/autotest-capability-1.ebuild
index b390c12..2e47220 100644
--- a/virtual/autotest-capability/autotest-capability-1.ebuild
+++ b/virtual/autotest-capability/autotest-capability-1.ebuild
@@ -1,11 +1,11 @@
 # Copyright 2018 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Virtual package installing files define the capability of DUTs. We
 run or skip test cases base on those capabilities. See README.md for details."
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/autotest-libs/autotest-libs-1-r1.ebuild b/virtual/autotest-libs/autotest-libs-1-r3.ebuild
similarity index 100%
rename from virtual/autotest-libs/autotest-libs-1-r1.ebuild
rename to virtual/autotest-libs/autotest-libs-1-r3.ebuild
diff --git a/virtual/autotest-libs/autotest-libs-1.ebuild b/virtual/autotest-libs/autotest-libs-1.ebuild
index 70ad4bd..1093552 100644
--- a/virtual/autotest-libs/autotest-libs-1.ebuild
+++ b/virtual/autotest-libs/autotest-libs-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright 2015 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=4
+EAPI=7
 
 DESCRIPTION="This package can be overriden to bring in additional
 (e.g. board-specific) autotest infrastructure."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
diff --git a/virtual/autotest-private-libs/autotest-private-libs-1-r2.ebuild b/virtual/autotest-private-libs/autotest-private-libs-1-r2.ebuild
new file mode 120000
index 0000000..b23e821
--- /dev/null
+++ b/virtual/autotest-private-libs/autotest-private-libs-1-r2.ebuild
@@ -0,0 +1 @@
+autotest-private-libs-1.ebuild
\ No newline at end of file
diff --git a/virtual/autotest-private-libs/autotest-private-libs-1.ebuild b/virtual/autotest-private-libs/autotest-private-libs-1.ebuild
index c701374..45e9104 100644
--- a/virtual/autotest-private-libs/autotest-private-libs-1.ebuild
+++ b/virtual/autotest-private-libs/autotest-private-libs-1.ebuild
@@ -1,11 +1,11 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI=7
 
 DESCRIPTION="This package can be overriden to bring in additional
 autotest libraries"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
\ No newline at end of file
diff --git a/virtual/autotest-tests/autotest-tests-1-r1.ebuild b/virtual/autotest-tests/autotest-tests-1-r3.ebuild
similarity index 100%
rename from virtual/autotest-tests/autotest-tests-1-r1.ebuild
rename to virtual/autotest-tests/autotest-tests-1-r3.ebuild
diff --git a/virtual/autotest-tests/autotest-tests-1.ebuild b/virtual/autotest-tests/autotest-tests-1.ebuild
index 23c20fb..bf64c6a 100644
--- a/virtual/autotest-tests/autotest-tests-1.ebuild
+++ b/virtual/autotest-tests/autotest-tests-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright 2015 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=4
+EAPI=7
 
 DESCRIPTION="Autotest tests virtual package. This package can be overriden by
 an overlay to bring in Autotest tests."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
diff --git a/virtual/bindgen/bindgen-0.0.1.ebuild b/virtual/bindgen/bindgen-0.0.1.ebuild
new file mode 100644
index 0000000..762a9c39
--- /dev/null
+++ b/virtual/bindgen/bindgen-0.0.1.ebuild
@@ -0,0 +1,19 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Prevent needing to build dev-rust/bindgen for each board."
+# For ebuilds that need to BDEPEND on dev-rust/bindgen, add:
+#     DEPEND="virtual/bindgen:="
+# This will trigger a rebuild when the slot of dev-rust/bindgen changes
+# without requiring the package to DEPEND on dev-rust/bindgen directly.
+
+LICENSE="metapackage"
+KEYWORDS="*"
+
+SLOT="0/${PVR}"
+
+# The versions of this ebuild needs to closely match the versions of
+# dev-rust/bindgen.
+BDEPEND="=dev-rust/bindgen-${PVR}"
diff --git a/virtual/bindgen/bindgen-0.56.0-r1.ebuild b/virtual/bindgen/bindgen-0.56.0-r1.ebuild
new file mode 120000
index 0000000..eeef4a4
--- /dev/null
+++ b/virtual/bindgen/bindgen-0.56.0-r1.ebuild
@@ -0,0 +1 @@
+bindgen-0.0.1.ebuild
\ No newline at end of file
diff --git a/virtual/bindgen/bindgen-0.56.0-r2.ebuild b/virtual/bindgen/bindgen-0.56.0-r2.ebuild
new file mode 120000
index 0000000..eeef4a4
--- /dev/null
+++ b/virtual/bindgen/bindgen-0.56.0-r2.ebuild
@@ -0,0 +1 @@
+bindgen-0.0.1.ebuild
\ No newline at end of file
diff --git a/virtual/bindgen/bindgen-0.56.0.ebuild b/virtual/bindgen/bindgen-0.56.0.ebuild
deleted file mode 100644
index eaf0b43..0000000
--- a/virtual/bindgen/bindgen-0.56.0.ebuild
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-DESCRIPTION="Prevent needing to build dev-rust/bindgen for each board."
-# For ebuilds that need to BDEPEND on dev-rust/bindgen, add:
-#     DEPEND="virtual/bindgen:="
-# This will trigger a rebuild when the slot of dev-rust/bindgen changes
-# without requiring the package to DEPEND on dev-rust/bindgen directly.
-
-LICENSE="BSD-Google"
-KEYWORDS="*"
-
-SLOT="0/${PVR}"
-
-# The versions of this ebuild needs to closely match the versions of
-# dev-rust/bindgen.
-BDEPEND="=dev-rust/bindgen-${PVR}"
diff --git a/virtual/bindgen/bindgen-0.56.0.ebuild b/virtual/bindgen/bindgen-0.56.0.ebuild
new file mode 120000
index 0000000..eeef4a4
--- /dev/null
+++ b/virtual/bindgen/bindgen-0.56.0.ebuild
@@ -0,0 +1 @@
+bindgen-0.0.1.ebuild
\ No newline at end of file
diff --git a/virtual/cheets/cheets-1-r1.ebuild b/virtual/cheets/cheets-1-r3.ebuild
similarity index 100%
rename from virtual/cheets/cheets-1-r1.ebuild
rename to virtual/cheets/cheets-1-r3.ebuild
diff --git a/virtual/cheets/cheets-1.ebuild b/virtual/cheets/cheets-1.ebuild
index 608f7b6..d0bed4e 100644
--- a/virtual/cheets/cheets-1.ebuild
+++ b/virtual/cheets/cheets-1.ebuild
@@ -1,14 +1,14 @@
 # Copyright 2017 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 
 DESCRIPTION="Generic ebuild which satisifies virtual/cheets, the project which
 enables the Play Store on Chrome OS. This is a direct dependency of
 virtual/target-chromium-os, but is expected to be overridden in other overlays,
 so today this depends on nothing."
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/chromeos-activate-date/chromeos-activate-date-1-r1.ebuild b/virtual/chromeos-activate-date/chromeos-activate-date-1-r3.ebuild
similarity index 100%
rename from virtual/chromeos-activate-date/chromeos-activate-date-1-r1.ebuild
rename to virtual/chromeos-activate-date/chromeos-activate-date-1-r3.ebuild
diff --git a/virtual/chromeos-activate-date/chromeos-activate-date-1.ebuild b/virtual/chromeos-activate-date/chromeos-activate-date-1.ebuild
index ab6970d..c48c4d0 100644
--- a/virtual/chromeos-activate-date/chromeos-activate-date-1.ebuild
+++ b/virtual/chromeos-activate-date/chromeos-activate-date-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=4
+EAPI=7
 
 DESCRIPTION="Chrome OS Activate Date virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/chromeos-auth-config/chromeos-auth-config-1-r1.ebuild b/virtual/chromeos-auth-config/chromeos-auth-config-1-r3.ebuild
similarity index 100%
rename from virtual/chromeos-auth-config/chromeos-auth-config-1-r1.ebuild
rename to virtual/chromeos-auth-config/chromeos-auth-config-1-r3.ebuild
diff --git a/virtual/chromeos-auth-config/chromeos-auth-config-1.ebuild b/virtual/chromeos-auth-config/chromeos-auth-config-1.ebuild
index ea4d92d..fab6396 100644
--- a/virtual/chromeos-auth-config/chromeos-auth-config-1.ebuild
+++ b/virtual/chromeos-auth-config/chromeos-auth-config-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2015 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=4
+EAPI=7
 
 DESCRIPTION="ChromeOS auth virtual package. This package will RDEPEND
 on the actual package that installs the ChromeOS PAM configs."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/chromeos-bootcomplete/chromeos-bootcomplete-1-r1.ebuild b/virtual/chromeos-bootcomplete/chromeos-bootcomplete-1-r3.ebuild
similarity index 100%
rename from virtual/chromeos-bootcomplete/chromeos-bootcomplete-1-r1.ebuild
rename to virtual/chromeos-bootcomplete/chromeos-bootcomplete-1-r3.ebuild
diff --git a/virtual/chromeos-bootcomplete/chromeos-bootcomplete-1.ebuild b/virtual/chromeos-bootcomplete/chromeos-bootcomplete-1.ebuild
index aa37f8b..92a6032 100644
--- a/virtual/chromeos-bootcomplete/chromeos-bootcomplete-1.ebuild
+++ b/virtual/chromeos-bootcomplete/chromeos-bootcomplete-1.ebuild
@@ -1,14 +1,14 @@
 # Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="Virtual package installing the boot-complete boot marker that
 represents the system being operationnal and ready to use.
 Boards should override it to define their own boot-complete."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE="cros_embedded"
diff --git a/virtual/chromeos-bsp-dev-root/chromeos-bsp-dev-root-1-r1.ebuild b/virtual/chromeos-bsp-dev-root/chromeos-bsp-dev-root-1-r3.ebuild
similarity index 100%
rename from virtual/chromeos-bsp-dev-root/chromeos-bsp-dev-root-1-r1.ebuild
rename to virtual/chromeos-bsp-dev-root/chromeos-bsp-dev-root-1-r3.ebuild
diff --git a/virtual/chromeos-bsp-dev-root/chromeos-bsp-dev-root-1.ebuild b/virtual/chromeos-bsp-dev-root/chromeos-bsp-dev-root-1.ebuild
index dd9b9de..6ded910 100644
--- a/virtual/chromeos-bsp-dev-root/chromeos-bsp-dev-root-1.ebuild
+++ b/virtual/chromeos-bsp-dev-root/chromeos-bsp-dev-root-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="Generic ebuild which satisfies virtual/chromeos-bsp-dev-root.
 This is a direct dependency of chromeos-base/chromeos-dev-root, but is expected
@@ -11,7 +11,7 @@
 generic board overlay."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/chromeos-bsp-dev/chromeos-bsp-dev-1-r1.ebuild b/virtual/chromeos-bsp-dev/chromeos-bsp-dev-1-r3.ebuild
similarity index 100%
rename from virtual/chromeos-bsp-dev/chromeos-bsp-dev-1-r1.ebuild
rename to virtual/chromeos-bsp-dev/chromeos-bsp-dev-1-r3.ebuild
diff --git a/virtual/chromeos-bsp-dev/chromeos-bsp-dev-1.ebuild b/virtual/chromeos-bsp-dev/chromeos-bsp-dev-1.ebuild
index 946cd48..1b3253f 100644
--- a/virtual/chromeos-bsp-dev/chromeos-bsp-dev-1.ebuild
+++ b/virtual/chromeos-bsp-dev/chromeos-bsp-dev-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="Generic ebuild which satisifies virtual/chromeos-bsp-dev.
 This is a direct dependency of virtual/target-chromium-os-dev, but is expected
@@ -11,7 +11,7 @@
 overlay."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/chromeos-bsp-factory/chromeos-bsp-factory-1-r1.ebuild b/virtual/chromeos-bsp-factory/chromeos-bsp-factory-1-r2.ebuild
similarity index 100%
rename from virtual/chromeos-bsp-factory/chromeos-bsp-factory-1-r1.ebuild
rename to virtual/chromeos-bsp-factory/chromeos-bsp-factory-1-r2.ebuild
diff --git a/virtual/chromeos-bsp-factory/chromeos-bsp-factory-1.ebuild b/virtual/chromeos-bsp-factory/chromeos-bsp-factory-1.ebuild
index f50c70e..0e6d9b0 100644
--- a/virtual/chromeos-bsp-factory/chromeos-bsp-factory-1.ebuild
+++ b/virtual/chromeos-bsp-factory/chromeos-bsp-factory-1.ebuild
@@ -11,7 +11,7 @@
 overlay."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/chromeos-bsp-initramfs/chromeos-bsp-initramfs-1-r2.ebuild b/virtual/chromeos-bsp-initramfs/chromeos-bsp-initramfs-1-r2.ebuild
new file mode 120000
index 0000000..873c8a5
--- /dev/null
+++ b/virtual/chromeos-bsp-initramfs/chromeos-bsp-initramfs-1-r2.ebuild
@@ -0,0 +1 @@
+chromeos-bsp-initramfs-1.ebuild
\ No newline at end of file
diff --git a/virtual/chromeos-bsp-initramfs/chromeos-bsp-initramfs-1.ebuild b/virtual/chromeos-bsp-initramfs/chromeos-bsp-initramfs-1.ebuild
index 8b6676b..26f44d7 100644
--- a/virtual/chromeos-bsp-initramfs/chromeos-bsp-initramfs-1.ebuild
+++ b/virtual/chromeos-bsp-initramfs/chromeos-bsp-initramfs-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2015 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="This package can be overriden to bring in additional configurations
 for initramfs. See platform/initramfs/recovery/README for details."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/chromeos-bsp-test-root/chromeos-bsp-test-root-1-r1.ebuild b/virtual/chromeos-bsp-test-root/chromeos-bsp-test-root-1-r3.ebuild
similarity index 100%
rename from virtual/chromeos-bsp-test-root/chromeos-bsp-test-root-1-r1.ebuild
rename to virtual/chromeos-bsp-test-root/chromeos-bsp-test-root-1-r3.ebuild
diff --git a/virtual/chromeos-bsp-test-root/chromeos-bsp-test-root-1.ebuild b/virtual/chromeos-bsp-test-root/chromeos-bsp-test-root-1.ebuild
index 4f50d9c..322fa3f 100644
--- a/virtual/chromeos-bsp-test-root/chromeos-bsp-test-root-1.ebuild
+++ b/virtual/chromeos-bsp-test-root/chromeos-bsp-test-root-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="Generic ebuild which satisfies virtual/chromeos-bsp-test-root.
 This package is merged onto the rootfs when an image is modified for test.  A
@@ -10,7 +10,7 @@
 suitable for inclusion in a generic board overlay."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/chromeos-bsp-test/chromeos-bsp-test-1-r1.ebuild b/virtual/chromeos-bsp-test/chromeos-bsp-test-1-r3.ebuild
similarity index 100%
rename from virtual/chromeos-bsp-test/chromeos-bsp-test-1-r1.ebuild
rename to virtual/chromeos-bsp-test/chromeos-bsp-test-1-r3.ebuild
diff --git a/virtual/chromeos-bsp-test/chromeos-bsp-test-1.ebuild b/virtual/chromeos-bsp-test/chromeos-bsp-test-1.ebuild
index 34bbdb4..e71ba27 100644
--- a/virtual/chromeos-bsp-test/chromeos-bsp-test-1.ebuild
+++ b/virtual/chromeos-bsp-test/chromeos-bsp-test-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="Generic ebuild which satisifies virtual/chromeos-bsp-test.
 This is a direct dependency of virtual/target-chromium-os-test, but is expected
@@ -11,7 +11,7 @@
 overlay."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/chromeos-bsp/chromeos-bsp-1-r2.ebuild b/virtual/chromeos-bsp/chromeos-bsp-1-r4.ebuild
similarity index 100%
rename from virtual/chromeos-bsp/chromeos-bsp-1-r2.ebuild
rename to virtual/chromeos-bsp/chromeos-bsp-1-r4.ebuild
diff --git a/virtual/chromeos-bsp/chromeos-bsp-1.ebuild b/virtual/chromeos-bsp/chromeos-bsp-1.ebuild
index d5f27a3..b668a81 100644
--- a/virtual/chromeos-bsp/chromeos-bsp-1.ebuild
+++ b/virtual/chromeos-bsp/chromeos-bsp-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="Generic ebuild which satisifies virtual/chromeos-bsp.
 This is a direct dependency of virtual/target-chromium-os, but is expected
@@ -11,7 +11,7 @@
 overlay."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/chromeos-config-bsp/chromeos-config-bsp-1-r2.ebuild b/virtual/chromeos-config-bsp/chromeos-config-bsp-1-r4.ebuild
similarity index 100%
rename from virtual/chromeos-config-bsp/chromeos-config-bsp-1-r2.ebuild
rename to virtual/chromeos-config-bsp/chromeos-config-bsp-1-r4.ebuild
diff --git a/virtual/chromeos-config-bsp/chromeos-config-bsp-1.ebuild b/virtual/chromeos-config-bsp/chromeos-config-bsp-1.ebuild
index a29e1aa..ff3299e 100644
--- a/virtual/chromeos-config-bsp/chromeos-config-bsp-1.ebuild
+++ b/virtual/chromeos-config-bsp/chromeos-config-bsp-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright (c) 2018 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Chrome OS BSP config virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/chromeos-ec-driver-init/chromeos-ec-driver-init-1-r2.ebuild b/virtual/chromeos-ec-driver-init/chromeos-ec-driver-init-1-r2.ebuild
new file mode 120000
index 0000000..87c8273
--- /dev/null
+++ b/virtual/chromeos-ec-driver-init/chromeos-ec-driver-init-1-r2.ebuild
@@ -0,0 +1 @@
+chromeos-ec-driver-init-1.ebuild
\ No newline at end of file
diff --git a/virtual/chromeos-ec-driver-init/chromeos-ec-driver-init-1.ebuild b/virtual/chromeos-ec-driver-init/chromeos-ec-driver-init-1.ebuild
index c51b9da..8d2d399 100644
--- a/virtual/chromeos-ec-driver-init/chromeos-ec-driver-init-1.ebuild
+++ b/virtual/chromeos-ec-driver-init/chromeos-ec-driver-init-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI=7
 
 DESCRIPTION="Generic ebuild which satisfies virtual/chromeos-ec-driver
 This is a direct dependency of chromeos-base/chromeos-accelerometer-init,
 and it is overridden in private overlay to load cros-ec stack for special ECs."
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
diff --git a/virtual/chromeos-ec-private-files/chromeos-ec-private-files-1-r1.ebuild b/virtual/chromeos-ec-private-files/chromeos-ec-private-files-1-r1.ebuild
deleted file mode 100644
index 9c6c538..0000000
--- a/virtual/chromeos-ec-private-files/chromeos-ec-private-files-1-r1.ebuild
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-DESCRIPTION="Generic ebuild which satisfies virtual/chromeos-ec-private-files.
-This is a direct dependency of chromeos-base/chromeos-ec, and it is overridden
-in private overlay to retrieve the private sources for the EC build."
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/"
-
-LICENSE="BSD"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="chromeos-base/chromeos-ec-private-files-null"
diff --git a/virtual/chromeos-ec-private-files/chromeos-ec-private-files-1-r3.ebuild b/virtual/chromeos-ec-private-files/chromeos-ec-private-files-1-r3.ebuild
new file mode 120000
index 0000000..70b23fb
--- /dev/null
+++ b/virtual/chromeos-ec-private-files/chromeos-ec-private-files-1-r3.ebuild
@@ -0,0 +1 @@
+chromeos-ec-private-files-1.ebuild
\ No newline at end of file
diff --git a/virtual/chromeos-ec-private-files/chromeos-ec-private-files-1.ebuild b/virtual/chromeos-ec-private-files/chromeos-ec-private-files-1.ebuild
new file mode 100644
index 0000000..980dd016
--- /dev/null
+++ b/virtual/chromeos-ec-private-files/chromeos-ec-private-files-1.ebuild
@@ -0,0 +1,16 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+DESCRIPTION="Generic ebuild which satisfies virtual/chromeos-ec-private-files.
+This is a direct dependency of chromeos-base/chromeos-ec, and it is overridden
+in private overlay to retrieve the private sources for the EC build."
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="chromeos-base/chromeos-ec-private-files-null"
diff --git a/virtual/chromeos-ec-touch-firmware/chromeos-ec-touch-firmware-1-r2.ebuild b/virtual/chromeos-ec-touch-firmware/chromeos-ec-touch-firmware-1-r2.ebuild
new file mode 120000
index 0000000..7ab1172
--- /dev/null
+++ b/virtual/chromeos-ec-touch-firmware/chromeos-ec-touch-firmware-1-r2.ebuild
@@ -0,0 +1 @@
+chromeos-ec-touch-firmware-1.ebuild
\ No newline at end of file
diff --git a/virtual/chromeos-ec-touch-firmware/chromeos-ec-touch-firmware-1.ebuild b/virtual/chromeos-ec-touch-firmware/chromeos-ec-touch-firmware-1.ebuild
index d16ddde..3e55775 100644
--- a/virtual/chromeos-ec-touch-firmware/chromeos-ec-touch-firmware-1.ebuild
+++ b/virtual/chromeos-ec-touch-firmware/chromeos-ec-touch-firmware-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2017 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 
 DESCRIPTION="Generic ebuild which satisfies virtual/chromeos-ec-touch-firmware.
 This is a direct dependency of chromeos-base/chromeos-ec, and can be overridden
@@ -10,7 +10,7 @@
 in RW section)."
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/ec/"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/chromeos-firewall/chromeos-firewall-1-r1.ebuild b/virtual/chromeos-firewall/chromeos-firewall-1-r3.ebuild
similarity index 100%
rename from virtual/chromeos-firewall/chromeos-firewall-1-r1.ebuild
rename to virtual/chromeos-firewall/chromeos-firewall-1-r3.ebuild
diff --git a/virtual/chromeos-firewall/chromeos-firewall-1.ebuild b/virtual/chromeos-firewall/chromeos-firewall-1.ebuild
index eb434a1..646fa15 100644
--- a/virtual/chromeos-firewall/chromeos-firewall-1.ebuild
+++ b/virtual/chromeos-firewall/chromeos-firewall-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=4
+EAPI=7
 
 DESCRIPTION="Chrome OS Firewall virtual package. This package will RDEPEND
 on the actual package that installs the upstart scripts to configure the
@@ -9,7 +9,7 @@
 do so with their own virtual package and corresponding ebuild."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-1-r1.ebuild b/virtual/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-1-r1.ebuild
deleted file mode 100644
index 5192f6d5..0000000
--- a/virtual/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-1-r1.ebuild
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-DESCRIPTION="Generic ebuild which satisfies virtual/chromeos-firmware-fpmcu.
-Overridden in the private overlay."
-
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
diff --git a/virtual/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-1-r3.ebuild b/virtual/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-1-r3.ebuild
new file mode 120000
index 0000000..9846eb8
--- /dev/null
+++ b/virtual/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-1-r3.ebuild
@@ -0,0 +1 @@
+chromeos-firmware-fpmcu-1.ebuild
\ No newline at end of file
diff --git a/virtual/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-1.ebuild b/virtual/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-1.ebuild
new file mode 100644
index 0000000..24a83cb
--- /dev/null
+++ b/virtual/chromeos-firmware-fpmcu/chromeos-firmware-fpmcu-1.ebuild
@@ -0,0 +1,12 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Generic ebuild which satisfies virtual/chromeos-firmware-fpmcu.
+Overridden in the private overlay."
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
diff --git a/virtual/chromeos-firmware/chromeos-firmware-1-r4.ebuild b/virtual/chromeos-firmware/chromeos-firmware-1-r6.ebuild
similarity index 100%
rename from virtual/chromeos-firmware/chromeos-firmware-1-r4.ebuild
rename to virtual/chromeos-firmware/chromeos-firmware-1-r6.ebuild
diff --git a/virtual/chromeos-firmware/chromeos-firmware-1.ebuild b/virtual/chromeos-firmware/chromeos-firmware-1.ebuild
index fc29524..e6700d9 100644
--- a/virtual/chromeos-firmware/chromeos-firmware-1.ebuild
+++ b/virtual/chromeos-firmware/chromeos-firmware-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Chrome OS Firmware virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/chromeos-fpmcu-test/chromeos-fpmcu-test-1-r1.ebuild b/virtual/chromeos-fpmcu-test/chromeos-fpmcu-test-1-r1.ebuild
deleted file mode 100644
index 66c5557..0000000
--- a/virtual/chromeos-fpmcu-test/chromeos-fpmcu-test-1-r1.ebuild
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-
-DESCRIPTION="Generic ebuild which satisfies virtual/chromeos-fpmcu-test.
-Overridden in the private overlay."
-
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
diff --git a/virtual/chromeos-fpmcu-test/chromeos-fpmcu-test-1-r3.ebuild b/virtual/chromeos-fpmcu-test/chromeos-fpmcu-test-1-r3.ebuild
new file mode 120000
index 0000000..5462677
--- /dev/null
+++ b/virtual/chromeos-fpmcu-test/chromeos-fpmcu-test-1-r3.ebuild
@@ -0,0 +1 @@
+chromeos-fpmcu-test-1.ebuild
\ No newline at end of file
diff --git a/virtual/chromeos-fpmcu-test/chromeos-fpmcu-test-1.ebuild b/virtual/chromeos-fpmcu-test/chromeos-fpmcu-test-1.ebuild
new file mode 100644
index 0000000..d4b9d9d
--- /dev/null
+++ b/virtual/chromeos-fpmcu-test/chromeos-fpmcu-test-1.ebuild
@@ -0,0 +1,12 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Generic ebuild which satisfies virtual/chromeos-fpmcu-test.
+Overridden in the private overlay."
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
diff --git a/virtual/chromeos-interface/chromeos-interface-1-r5.ebuild b/virtual/chromeos-interface/chromeos-interface-1-r7.ebuild
similarity index 100%
rename from virtual/chromeos-interface/chromeos-interface-1-r5.ebuild
rename to virtual/chromeos-interface/chromeos-interface-1-r7.ebuild
diff --git a/virtual/chromeos-interface/chromeos-interface-1.ebuild b/virtual/chromeos-interface/chromeos-interface-1.ebuild
index 37e8d55..c5f37af 100644
--- a/virtual/chromeos-interface/chromeos-interface-1.ebuild
+++ b/virtual/chromeos-interface/chromeos-interface-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="Generic ebuild which satisifies virtual/chromeos-interface.
 This is a direct dependency of chromeos-base/chromeos, but can
@@ -11,7 +11,7 @@
 a user would need to interact with the system locally."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE="-chromeless_tty"
diff --git a/virtual/chromeos-oobe-assets/chromeos-oobe-assets-1-r2.ebuild b/virtual/chromeos-oobe-assets/chromeos-oobe-assets-1-r2.ebuild
new file mode 120000
index 0000000..a8303b1
--- /dev/null
+++ b/virtual/chromeos-oobe-assets/chromeos-oobe-assets-1-r2.ebuild
@@ -0,0 +1 @@
+chromeos-oobe-assets-1.ebuild
\ No newline at end of file
diff --git a/virtual/chromeos-oobe-assets/chromeos-oobe-assets-1.ebuild b/virtual/chromeos-oobe-assets/chromeos-oobe-assets-1.ebuild
index 4e566dd..293cada 100644
--- a/virtual/chromeos-oobe-assets/chromeos-oobe-assets-1.ebuild
+++ b/virtual/chromeos-oobe-assets/chromeos-oobe-assets-1.ebuild
@@ -1,11 +1,11 @@
 # Copyright 2018 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Chrome OS OOBE assets virtual package"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/chromeos-regions/chromeos-regions-1-r2.ebuild b/virtual/chromeos-regions/chromeos-regions-1-r2.ebuild
new file mode 120000
index 0000000..4b0d59f
--- /dev/null
+++ b/virtual/chromeos-regions/chromeos-regions-1-r2.ebuild
@@ -0,0 +1 @@
+chromeos-regions-1.ebuild
\ No newline at end of file
diff --git a/virtual/chromeos-regions/chromeos-regions-1.ebuild b/virtual/chromeos-regions/chromeos-regions-1.ebuild
index 59db2a2..0c3cb4c 100644
--- a/virtual/chromeos-regions/chromeos-regions-1.ebuild
+++ b/virtual/chromeos-regions/chromeos-regions-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright 2015 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=4
+EAPI=7
 
 DESCRIPTION="Chrome OS Regions virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/chromeos-test-testauthkeys/chromeos-test-testauthkeys-1-r1.ebuild b/virtual/chromeos-test-testauthkeys/chromeos-test-testauthkeys-1-r3.ebuild
similarity index 100%
rename from virtual/chromeos-test-testauthkeys/chromeos-test-testauthkeys-1-r1.ebuild
rename to virtual/chromeos-test-testauthkeys/chromeos-test-testauthkeys-1-r3.ebuild
diff --git a/virtual/chromeos-test-testauthkeys/chromeos-test-testauthkeys-1.ebuild b/virtual/chromeos-test-testauthkeys/chromeos-test-testauthkeys-1.ebuild
index 09b88e3..dcec382 100644
--- a/virtual/chromeos-test-testauthkeys/chromeos-test-testauthkeys-1.ebuild
+++ b/virtual/chromeos-test-testauthkeys/chromeos-test-testauthkeys-1.ebuild
@@ -1,14 +1,14 @@
 # Copyright (c) 2015 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="Generic ebuild that satisifies virtual/chromeos-test-testauthkeys.
 This is a direct dependency of chromeos-base/chromeos-test-testauthkeys, but is
 expected to be overridden in an overlay for some specialized board."
 HOMEPAGE="http://www.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/chromeos-vendor-strings/chromeos-vendor-strings-1.ebuild b/virtual/chromeos-vendor-strings/chromeos-vendor-strings-1.ebuild
deleted file mode 100644
index 978aee9..0000000
--- a/virtual/chromeos-vendor-strings/chromeos-vendor-strings-1.ebuild
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-
-DESCRIPTION="Vendor firmware strings virtual package"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-
-DEPEND="sys-boot/chromeos-vendor-strings-null"
-RDEPEND="${DEPEND}"
diff --git a/virtual/chromium-os-fuzzers/chromium-os-fuzzers-1-r55.ebuild b/virtual/chromium-os-fuzzers/chromium-os-fuzzers-1-r55.ebuild
deleted file mode 100644
index 342e1d2..0000000
--- a/virtual/chromium-os-fuzzers/chromium-os-fuzzers-1-r55.ebuild
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
-# the canonical empty project.
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="../platform/empty-project"
-
-inherit cros-workon
-
-DESCRIPTION="List of packages that should be fuzzed"
-HOMEPAGE="https://dev.chromium.org/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE="asan msan"
-
-RDEPEND="
-	chromeos-base/arc-adbd[fuzzer]
-	asan? ( chromeos-base/arc-keymaster[fuzzer] )
-	chromeos-base/arc-obb-mounter[fuzzer]
-	chromeos-base/arc-setup[fuzzer]
-	chromeos-base/authpolicy[fuzzer]
-	chromeos-base/biod[fuzzer]
-	chromeos-base/bluetooth[fuzzer]
-	chromeos-base/chaps[fuzzer]
-	chromeos-base/chromeos-ec[fuzzer]
-	chromeos-base/chromeos-login[fuzzer]
-	chromeos-base/crash-reporter[fuzzer]
-	chromeos-base/cros-disks[fuzzer]
-	chromeos-base/crosdns[fuzzer]
-	chromeos-base/cryptohome[fuzzer]
-	chromeos-base/cups-fuzz[fuzzer]
-	chromeos-base/diagnostics[fuzzer]
-	chromeos-base/dlcservice[fuzzer]
-	chromeos-base/foomatic_shell[fuzzer]
-	chromeos-base/ghostscript-fuzz[fuzzer]
-	chromeos-base/hammerd[fuzzer]
-	chromeos-base/imageloader[fuzzer]
-	chromeos-base/ippusb_manager[fuzzer]
-	chromeos-base/kerberos[fuzzer]
-	chromeos-base/libbrillo[fuzzer]
-	chromeos-base/libipp[fuzzer]
-	asan? ( chromeos-base/libvda[fuzzer] )
-	chromeos-base/metrics[fuzzer]
-	chromeos-base/ml[fuzzer]
-	chromeos-base/modemfwd[fuzzer]
-	chromeos-base/p2p[fuzzer]
-	chromeos-base/patchpanel[fuzzer]
-	chromeos-base/patchpanel-client[fuzzer]
-	chromeos-base/permission_broker[fuzzer]
-	chromeos-base/power_manager[fuzzer]
-	chromeos-base/runtime_probe[fuzzer]
-	>=chromeos-base/shill-0.0.1-r2205[fuzzer]
-	chromeos-base/smbprovider[fuzzer]
-	chromeos-base/system-proxy[fuzzer]
-	chromeos-base/trunks[fuzzer]
-	chromeos-base/u2fd[fuzzer]
-	chromeos-base/update_engine[fuzzer]
-	chromeos-base/usb_bouncer[fuzzer]
-	chromeos-base/vboot_reference[fuzzer]
-	chromeos-base/vm_guest_tools[fuzzer]
-	chromeos-base/vpn-manager[fuzzer]
-	asan? ( chromeos-base/vm_host_tools[fuzzer] )
-	dev-libs/modp_b64[fuzzer]
-	asan? ( dev-rust/p9[fuzzer] )
-	dev-util/bsdiff[fuzzer]
-	dev-util/puffin[fuzzer]
-	media-gfx/sane-airscan[fuzzer]
-	media-libs/virglrenderer[fuzzer]
-	media-sound/adhd[fuzzer]
-	net-dns/avahi[fuzzer]
-"
diff --git a/virtual/chromium-os-fuzzers/chromium-os-fuzzers-1-r59.ebuild b/virtual/chromium-os-fuzzers/chromium-os-fuzzers-1-r59.ebuild
new file mode 100644
index 0000000..6b2618b
--- /dev/null
+++ b/virtual/chromium-os-fuzzers/chromium-os-fuzzers-1-r59.ebuild
@@ -0,0 +1,77 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="List of packages that should be fuzzed"
+HOMEPAGE="https://dev.chromium.org/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+IUSE="asan msan"
+
+RDEPEND="
+	chromeos-base/arc-adbd[fuzzer]
+	asan? ( chromeos-base/arc-keymaster[fuzzer] )
+	chromeos-base/arc-obb-mounter[fuzzer]
+	chromeos-base/arc-setup[fuzzer]
+	chromeos-base/authpolicy[fuzzer]
+	chromeos-base/biod[fuzzer]
+	chromeos-base/chaps[fuzzer]
+	chromeos-base/chromeos-ec[fuzzer]
+	chromeos-base/chromeos-login[fuzzer]
+	chromeos-base/crash-reporter[fuzzer]
+	chromeos-base/cros-disks[fuzzer]
+	chromeos-base/crosdns[fuzzer]
+	chromeos-base/cryptohome[fuzzer]
+	chromeos-base/cups-fuzz[fuzzer]
+	chromeos-base/diagnostics[fuzzer]
+	chromeos-base/dlcservice[fuzzer]
+	chromeos-base/foomatic_shell[fuzzer]
+	chromeos-base/ghostscript-fuzz[fuzzer]
+	chromeos-base/hammerd[fuzzer]
+	chromeos-base/imageloader[fuzzer]
+	chromeos-base/kerberos[fuzzer]
+	chromeos-base/libbrillo[fuzzer]
+	chromeos-base/libipp[fuzzer]
+	asan? ( chromeos-base/libvda[fuzzer] )
+	chromeos-base/metrics[fuzzer]
+	chromeos-base/ml[fuzzer]
+	chromeos-base/modemfwd[fuzzer]
+	chromeos-base/p2p[fuzzer]
+	chromeos-base/patchpanel[fuzzer]
+	chromeos-base/patchpanel-client[fuzzer]
+	chromeos-base/permission_broker[fuzzer]
+	chromeos-base/power_manager[fuzzer]
+	chromeos-base/runtime_probe[fuzzer]
+	>=chromeos-base/shill-0.0.1-r2205[fuzzer]
+	chromeos-base/smbprovider[fuzzer]
+	chromeos-base/system-proxy[fuzzer]
+	chromeos-base/trunks[fuzzer]
+	chromeos-base/u2fd[fuzzer]
+	chromeos-base/update_engine[fuzzer]
+	chromeos-base/usb_bouncer[fuzzer]
+	chromeos-base/vboot_reference[fuzzer]
+	chromeos-base/vm_guest_tools[fuzzer]
+	chromeos-base/vpn-manager[fuzzer]
+	asan? ( chromeos-base/vm_host_tools[fuzzer] )
+	dev-libs/modp_b64[fuzzer]
+	asan? ( dev-rust/p9[fuzzer] )
+	dev-util/bsdiff[fuzzer]
+	dev-util/puffin[fuzzer]
+	media-gfx/sane-airscan[fuzzer]
+	media-libs/virglrenderer[fuzzer]
+	media-sound/adhd[fuzzer]
+	net-dns/avahi[fuzzer]
+	net-wireless/bluez[fuzzer]
+"
diff --git a/virtual/chromium-os-fuzzers/chromium-os-fuzzers-9999.ebuild b/virtual/chromium-os-fuzzers/chromium-os-fuzzers-9999.ebuild
index 3609c6a..da8ca41 100644
--- a/virtual/chromium-os-fuzzers/chromium-os-fuzzers-9999.ebuild
+++ b/virtual/chromium-os-fuzzers/chromium-os-fuzzers-9999.ebuild
@@ -13,7 +13,7 @@
 DESCRIPTION="List of packages that should be fuzzed"
 HOMEPAGE="https://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="~*"
 IUSE="asan msan"
@@ -25,7 +25,6 @@
 	chromeos-base/arc-setup[fuzzer]
 	chromeos-base/authpolicy[fuzzer]
 	chromeos-base/biod[fuzzer]
-	chromeos-base/bluetooth[fuzzer]
 	chromeos-base/chaps[fuzzer]
 	chromeos-base/chromeos-ec[fuzzer]
 	chromeos-base/chromeos-login[fuzzer]
@@ -40,7 +39,6 @@
 	chromeos-base/ghostscript-fuzz[fuzzer]
 	chromeos-base/hammerd[fuzzer]
 	chromeos-base/imageloader[fuzzer]
-	chromeos-base/ippusb_manager[fuzzer]
 	chromeos-base/kerberos[fuzzer]
 	chromeos-base/libbrillo[fuzzer]
 	chromeos-base/libipp[fuzzer]
@@ -73,4 +71,5 @@
 	media-libs/virglrenderer[fuzzer]
 	media-sound/adhd[fuzzer]
 	net-dns/avahi[fuzzer]
+	net-wireless/bluez[fuzzer]
 "
diff --git a/virtual/chromium-os-fuzzers/files/chromeos-version.sh b/virtual/chromium-os-fuzzers/files/chromeos-version.sh
new file mode 100644
index 0000000..42b36a2
--- /dev/null
+++ b/virtual/chromium-os-fuzzers/files/chromeos-version.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Copyright 2021 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.
+
+echo "1"
\ No newline at end of file
diff --git a/virtual/chromium-os-printing/chromium-os-printing-1-r10.ebuild b/virtual/chromium-os-printing/chromium-os-printing-1-r13.ebuild
similarity index 100%
rename from virtual/chromium-os-printing/chromium-os-printing-1-r10.ebuild
rename to virtual/chromium-os-printing/chromium-os-printing-1-r13.ebuild
diff --git a/virtual/chromium-os-printing/chromium-os-printing-1.ebuild b/virtual/chromium-os-printing/chromium-os-printing-1.ebuild
index 3559bf7..be64c1f 100644
--- a/virtual/chromium-os-printing/chromium-os-printing-1.ebuild
+++ b/virtual/chromium-os-printing/chromium-os-printing-1.ebuild
@@ -1,19 +1,19 @@
 # Copyright 2018 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 
 DESCRIPTION="List of packages required for the Chromium OS Printing subsystem"
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
 IUSE="internal postscript"
 
 RDEPEND="
-	chromeos-base/ippusb_manager
+	chromeos-base/ippusb_bridge
 	chromeos-base/lexmark-fax-pnh
 	net-print/cups
 	net-print/cups-filters
diff --git a/virtual/coreboot-private-files/coreboot-private-files-1-r1.ebuild b/virtual/coreboot-private-files/coreboot-private-files-1-r1.ebuild
deleted file mode 100644
index 95360f4..0000000
--- a/virtual/coreboot-private-files/coreboot-private-files-1-r1.ebuild
+++ /dev/null
@@ -1,11 +0,0 @@
-# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=4
-
-DESCRIPTION="Coreboot private files virtual package"
-
-SLOT="0"
-KEYWORDS="*"
-
-RDEPEND="sys-boot/coreboot-private-files-null"
diff --git a/virtual/coreboot-private-files/coreboot-private-files-1-r3.ebuild b/virtual/coreboot-private-files/coreboot-private-files-1-r3.ebuild
new file mode 120000
index 0000000..d9ada00
--- /dev/null
+++ b/virtual/coreboot-private-files/coreboot-private-files-1-r3.ebuild
@@ -0,0 +1 @@
+coreboot-private-files-1.ebuild
\ No newline at end of file
diff --git a/virtual/coreboot-private-files/coreboot-private-files-1.ebuild b/virtual/coreboot-private-files/coreboot-private-files-1.ebuild
new file mode 100644
index 0000000..f09a7e7
--- /dev/null
+++ b/virtual/coreboot-private-files/coreboot-private-files-1.ebuild
@@ -0,0 +1,12 @@
+# Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Coreboot private files virtual package"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+
+RDEPEND="sys-boot/coreboot-private-files-null"
diff --git a/virtual/cros-camera-hal-configs/cros-camera-hal-configs-1-r2.ebuild b/virtual/cros-camera-hal-configs/cros-camera-hal-configs-1-r2.ebuild
new file mode 120000
index 0000000..7e6d88d
--- /dev/null
+++ b/virtual/cros-camera-hal-configs/cros-camera-hal-configs-1-r2.ebuild
@@ -0,0 +1 @@
+cros-camera-hal-configs-1.ebuild
\ No newline at end of file
diff --git a/virtual/cros-camera-hal-configs/cros-camera-hal-configs-1.ebuild b/virtual/cros-camera-hal-configs/cros-camera-hal-configs-1.ebuild
index c6dfda1..c768a8c 100644
--- a/virtual/cros-camera-hal-configs/cros-camera-hal-configs-1.ebuild
+++ b/virtual/cros-camera-hal-configs/cros-camera-hal-configs-1.ebuild
@@ -1,11 +1,11 @@
 # Copyright 2017 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Chrome OS camera HAL configs virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
diff --git a/virtual/cros-camera-hal/cros-camera-hal-1-r2.ebuild b/virtual/cros-camera-hal/cros-camera-hal-1-r2.ebuild
new file mode 120000
index 0000000..91ae772
--- /dev/null
+++ b/virtual/cros-camera-hal/cros-camera-hal-1-r2.ebuild
@@ -0,0 +1 @@
+cros-camera-hal-1.ebuild
\ No newline at end of file
diff --git a/virtual/cros-camera-hal/cros-camera-hal-1.ebuild b/virtual/cros-camera-hal/cros-camera-hal-1.ebuild
index 5b6a4fc..a1736b6 100644
--- a/virtual/cros-camera-hal/cros-camera-hal-1.ebuild
+++ b/virtual/cros-camera-hal/cros-camera-hal-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright 2017 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Chrome OS camera HAL virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/dptf/dptf-1-r1.ebuild b/virtual/dptf/dptf-1-r1.ebuild
deleted file mode 100644
index 55590b9..0000000
--- a/virtual/dptf/dptf-1-r1.ebuild
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2015 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-
-DESCRIPTION="Intel(R) Dynamic Platform & Thermal Framework"
-HOMEPAGE="https://01.org/dptf/"
-
-LICENSE="Apache-2.0 GPL-2 BSD"
-SLOT="0"
-KEYWORDS="-* amd64 x86"
-
-IUSE_KERNEL_VERS=(
-	kernel-3_10
-)
-IUSE="${IUSE_KERNEL_VERS[*]}"
-REQUIRED_USE="?? ( ${IUSE_KERNEL_VERS[*]} )"
-
-RDEPEND="
-	kernel-3_10? ( sys-power/dptf-3_10 )
-	!kernel-3_10? ( sys-power/dptf )
-"
-
-# Add blockers so when migrating between USE flags, the old version gets
-# unmerged automatically.
-RDEPEND+="
-	kernel-3_10? ( !sys-power/dptf )
-	!kernel-3_10? ( !sys-power/dptf-3_10 )
-"
-
-# Default to verison of DPTF that uses upstream drivers if none has been selected
-RDEPEND_DEFAULT="sys-power/dptf"
diff --git a/virtual/dptf/dptf-1-r2.ebuild b/virtual/dptf/dptf-1-r2.ebuild
new file mode 120000
index 0000000..0b0776e
--- /dev/null
+++ b/virtual/dptf/dptf-1-r2.ebuild
@@ -0,0 +1 @@
+dptf-1.ebuild
\ No newline at end of file
diff --git a/virtual/dptf/dptf-1.ebuild b/virtual/dptf/dptf-1.ebuild
new file mode 100644
index 0000000..90f41bd
--- /dev/null
+++ b/virtual/dptf/dptf-1.ebuild
@@ -0,0 +1,15 @@
+# Copyright 2015 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+DESCRIPTION="Intel(R) Dynamic Platform & Thermal Framework"
+HOMEPAGE="https://01.org/dptf/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="-* amd64 x86"
+
+RDEPEND="
+	sys-power/dptf
+"
diff --git a/virtual/glu/glu-1-r3.ebuild b/virtual/glu/glu-1-r3.ebuild
new file mode 120000
index 0000000..777c8a0
--- /dev/null
+++ b/virtual/glu/glu-1-r3.ebuild
@@ -0,0 +1 @@
+glu-1.ebuild
\ No newline at end of file
diff --git a/virtual/glu/glu-1.ebuild b/virtual/glu/glu-1.ebuild
new file mode 100644
index 0000000..05936e9
--- /dev/null
+++ b/virtual/glu/glu-1.ebuild
@@ -0,0 +1,14 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+DESCRIPTION="Virtual for OpenGL utility library"
+HOMEPAGE=""
+SRC_URI=""
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+RDEPEND="|| ( media-libs/glu media-libs/opengl-apple )"
+DEPEND=""
diff --git a/virtual/glu/glu-9.0-r1.ebuild b/virtual/glu/glu-9.0-r1.ebuild
deleted file mode 120000
index 84fc064..0000000
--- a/virtual/glu/glu-9.0-r1.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-glu-9.0.ebuild
\ No newline at end of file
diff --git a/virtual/glu/glu-9.0.ebuild b/virtual/glu/glu-9.0.ebuild
deleted file mode 100644
index ed21cd9..0000000
--- a/virtual/glu/glu-9.0.ebuild
+++ /dev/null
@@ -1,13 +0,0 @@
-# Copyright 1999-2012 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/virtual/glu/glu-9.0.ebuild,v 1.1 2012/09/18 23:45:34 chithanh Exp $
-
-DESCRIPTION="Virtual for OpenGL utility library"
-HOMEPAGE=""
-SRC_URI=""
-LICENSE=""
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-RDEPEND="|| ( media-libs/glu media-libs/opengl-apple )"
-DEPEND=""
diff --git a/virtual/implicit-system/implicit-system-1-r4.ebuild b/virtual/implicit-system/implicit-system-1-r6.ebuild
similarity index 100%
rename from virtual/implicit-system/implicit-system-1-r4.ebuild
rename to virtual/implicit-system/implicit-system-1-r6.ebuild
diff --git a/virtual/implicit-system/implicit-system-1.ebuild b/virtual/implicit-system/implicit-system-1.ebuild
index cdc30b4..67980d6 100644
--- a/virtual/implicit-system/implicit-system-1.ebuild
+++ b/virtual/implicit-system/implicit-system-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 
 DESCRIPTION="Metapackage that provides the implicit system
 dependencies of anything CrOS-ish. These are things like 'mv', 'ls',
@@ -31,7 +31,7 @@
 
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE=""
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/libfp/libfp-1-r2.ebuild b/virtual/libfp/libfp-1-r2.ebuild
new file mode 120000
index 0000000..17d0211
--- /dev/null
+++ b/virtual/libfp/libfp-1-r2.ebuild
@@ -0,0 +1 @@
+libfp-1.ebuild
\ No newline at end of file
diff --git a/virtual/libfp/libfp-1.ebuild b/virtual/libfp/libfp-1.ebuild
index a363abc..3ea46d7 100644
--- a/virtual/libfp/libfp-1.ebuild
+++ b/virtual/libfp/libfp-1.ebuild
@@ -1,11 +1,12 @@
 # Copyright 2017 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Virtual for fingerprint support libraries"
 SRC_URI=""
 
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/linux-sources/linux-sources-1-r24.ebuild b/virtual/linux-sources/linux-sources-1-r27.ebuild
similarity index 100%
rename from virtual/linux-sources/linux-sources-1-r24.ebuild
rename to virtual/linux-sources/linux-sources-1-r27.ebuild
diff --git a/virtual/linux-sources/linux-sources-1.ebuild b/virtual/linux-sources/linux-sources-1.ebuild
index f26f69b..b867d00 100644
--- a/virtual/linux-sources/linux-sources-1.ebuild
+++ b/virtual/linux-sources/linux-sources-1.ebuild
@@ -1,19 +1,16 @@
 # Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 
 DESCRIPTION="Chrome OS Kernel virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="GPL-2"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
 IUSE_KERNEL_VERS=(
-	kernel-3_8
-	kernel-3_10
-	kernel-3_14
 	kernel-3_18
 	kernel-4_4
 	kernel-4_14
@@ -32,9 +29,6 @@
 REQUIRED_USE="^^ ( ${IUSE_KERNEL_VERS[*]} )"
 
 RDEPEND="
-	kernel-3_8? ( sys-kernel/chromeos-kernel-3_8 )
-	kernel-3_10? ( sys-kernel/chromeos-kernel-3_10 )
-	kernel-3_14? ( sys-kernel/chromeos-kernel-3_14 )
 	kernel-3_18? ( sys-kernel/chromeos-kernel-3_18 )
 	kernel-4_4? ( sys-kernel/chromeos-kernel-4_4 )
 	kernel-4_14? ( sys-kernel/chromeos-kernel-4_14 )
diff --git a/virtual/lpe-support/lpe-support-0.0.1-r5.ebuild b/virtual/lpe-support/lpe-support-0.0.1-r5.ebuild
deleted file mode 120000
index 32cdbf8..0000000
--- a/virtual/lpe-support/lpe-support-0.0.1-r5.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-lpe-support-0.0.1.ebuild
\ No newline at end of file
diff --git a/virtual/lpe-support/lpe-support-0.0.1.ebuild b/virtual/lpe-support/lpe-support-0.0.1.ebuild
deleted file mode 100644
index 7611fbb..0000000
--- a/virtual/lpe-support/lpe-support-0.0.1.ebuild
+++ /dev/null
@@ -1,23 +0,0 @@
-# Copyright 2016 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=4
-
-DESCRIPTION="Ebuild which pulls in any necessary ebuilds as dependencies
-or portage actions."
-
-SLOT="0"
-KEYWORDS="-* amd64 x86"
-S="${WORKDIR}"
-IUSE="skl_lpe apl_lpe kbl_lpe cnl_lpe glk_lpe"
-# Add dependencies on other ebuilds from within this board overlay
-RDEPEND="
-	apl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_apl] )
-	cnl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_cnl] )
-	glk_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_glk] )
-	kbl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_kbl] )
-        media-libs/lpe-support-topology
-	media-libs/lpe-support-blacklist
-	skl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_skl] )
-"
-DEPEND="${RDEPEND}"
diff --git a/virtual/lpe-support/lpe-support-1-r7.ebuild b/virtual/lpe-support/lpe-support-1-r7.ebuild
new file mode 120000
index 0000000..4088358
--- /dev/null
+++ b/virtual/lpe-support/lpe-support-1-r7.ebuild
@@ -0,0 +1 @@
+lpe-support-1.ebuild
\ No newline at end of file
diff --git a/virtual/lpe-support/lpe-support-1.ebuild b/virtual/lpe-support/lpe-support-1.ebuild
new file mode 100644
index 0000000..c71e569
--- /dev/null
+++ b/virtual/lpe-support/lpe-support-1.ebuild
@@ -0,0 +1,24 @@
+# Copyright 2016 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Ebuild which pulls in any necessary ebuilds as dependencies
+or portage actions."
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="-* amd64 x86"
+S="${WORKDIR}"
+IUSE="skl_lpe apl_lpe kbl_lpe cnl_lpe glk_lpe"
+# Add dependencies on other ebuilds from within this board overlay
+RDEPEND="
+	apl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_apl] )
+	cnl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_cnl] )
+	glk_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_glk] )
+	kbl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_kbl] )
+	media-libs/lpe-support-topology
+	media-libs/lpe-support-blacklist
+	skl_lpe? ( sys-kernel/linux-firmware[linux_firmware_adsp_skl] )
+"
+DEPEND="${RDEPEND}"
diff --git a/virtual/opengles/opengles-1-r2.ebuild b/virtual/opengles/opengles-1-r4.ebuild
similarity index 100%
rename from virtual/opengles/opengles-1-r2.ebuild
rename to virtual/opengles/opengles-1-r4.ebuild
diff --git a/virtual/opengles/opengles-1.ebuild b/virtual/opengles/opengles-1.ebuild
index 09d2443..691c18f 100644
--- a/virtual/opengles/opengles-1.ebuild
+++ b/virtual/opengles/opengles-1.ebuild
@@ -1,11 +1,12 @@
 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Virtual for OpenGLES implementations"
 SRC_URI=""
 
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/rust/OWNERS b/virtual/rust/OWNERS
new file mode 100644
index 0000000..4f007df
--- /dev/null
+++ b/virtual/rust/OWNERS
@@ -0,0 +1 @@
+include /dev-lang/rust/OWNERS
diff --git a/virtual/rust/rust-1.46.0.ebuild b/virtual/rust/rust-1.46.0.ebuild
deleted file mode 100644
index 625bd64..0000000
--- a/virtual/rust/rust-1.46.0.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-DESCRIPTION="Virtual for the Rust language compiler"
-HOMEPAGE=""
-
-LICENSE=""
-SLOT="0/${PV}"
-KEYWORDS="*"
-
-DEPEND="
-	~dev-lang/rust-${PV}:=
-"
diff --git a/virtual/rust/rust-1.47.0-r5.ebuild b/virtual/rust/rust-1.47.0-r5.ebuild
deleted file mode 100644
index 625bd64..0000000
--- a/virtual/rust/rust-1.47.0-r5.ebuild
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2018 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-DESCRIPTION="Virtual for the Rust language compiler"
-HOMEPAGE=""
-
-LICENSE=""
-SLOT="0/${PV}"
-KEYWORDS="*"
-
-DEPEND="
-	~dev-lang/rust-${PV}:=
-"
diff --git a/virtual/rust/rust-1.47.0-r7.ebuild b/virtual/rust/rust-1.47.0-r7.ebuild
new file mode 120000
index 0000000..d8aa9da
--- /dev/null
+++ b/virtual/rust/rust-1.47.0-r7.ebuild
@@ -0,0 +1 @@
+rust-1.47.0.ebuild
\ No newline at end of file
diff --git a/virtual/rust/rust-1.47.0.ebuild b/virtual/rust/rust-1.47.0.ebuild
new file mode 100644
index 0000000..6f680ad
--- /dev/null
+++ b/virtual/rust/rust-1.47.0.ebuild
@@ -0,0 +1,15 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+DESCRIPTION="Virtual for the Rust language compiler"
+HOMEPAGE=""
+
+LICENSE="metapackage"
+SLOT="0/${PV}"
+KEYWORDS="*"
+
+DEPEND="
+	~dev-lang/rust-${PV}:=
+"
diff --git a/virtual/rust/rust-1.51.0-r1.ebuild b/virtual/rust/rust-1.51.0-r1.ebuild
new file mode 120000
index 0000000..47e6435
--- /dev/null
+++ b/virtual/rust/rust-1.51.0-r1.ebuild
@@ -0,0 +1 @@
+rust-1.51.0.ebuild
\ No newline at end of file
diff --git a/virtual/rust/rust-1.51.0.ebuild b/virtual/rust/rust-1.51.0.ebuild
new file mode 100644
index 0000000..6f680ad
--- /dev/null
+++ b/virtual/rust/rust-1.51.0.ebuild
@@ -0,0 +1,15 @@
+# Copyright 2018 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+DESCRIPTION="Virtual for the Rust language compiler"
+HOMEPAGE=""
+
+LICENSE="metapackage"
+SLOT="0/${PV}"
+KEYWORDS="*"
+
+DEPEND="
+	~dev-lang/rust-${PV}:=
+"
diff --git a/virtual/service-manager/service-manager-1-r1.ebuild b/virtual/service-manager/service-manager-1-r3.ebuild
similarity index 100%
rename from virtual/service-manager/service-manager-1-r1.ebuild
rename to virtual/service-manager/service-manager-1-r3.ebuild
diff --git a/virtual/service-manager/service-manager-1.ebuild b/virtual/service-manager/service-manager-1.ebuild
index 9ae536c..e745e83 100644
--- a/virtual/service-manager/service-manager-1.ebuild
+++ b/virtual/service-manager/service-manager-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Generic ebuild which satisifies virtual/service-manager.
 This is a direct dependency of chromeos-base/chromeos, but can
@@ -11,7 +11,7 @@
 required to bring the system up and start managing system services."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE=""
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/servo-config-dut-usb3/servo-config-dut-usb3-1-r1.ebuild b/virtual/servo-config-dut-usb3/servo-config-dut-usb3-1-r1.ebuild
deleted file mode 100644
index 92764dd..0000000
--- a/virtual/servo-config-dut-usb3/servo-config-dut-usb3-1-r1.ebuild
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the BSD license.
-#
-# This virtual package wraps:
-#
-#   dev-util/servo-config-dut-usb3-public
-#   dev-util/servo-config-dut-usb3-private
-#
-# ...to hide the dependency awkwardness of selecting which to install.
-
-EAPI="7"
-
-DESCRIPTION="List DUT USB 3 capability of Servo devices (virtual)."
-LICENSE="BSD-Google"
-KEYWORDS="*"
-IUSE="internal"
-SLOT="0/${PVR}"
-
-RDEPEND="
-	dev-util/servo-config-dut-usb3-public:=
-	internal? ( dev-util/servo-config-dut-usb3-private:= )
-"
diff --git a/virtual/servo-config-dut-usb3/servo-config-dut-usb3-1-r2.ebuild b/virtual/servo-config-dut-usb3/servo-config-dut-usb3-1-r2.ebuild
new file mode 120000
index 0000000..68e2369
--- /dev/null
+++ b/virtual/servo-config-dut-usb3/servo-config-dut-usb3-1-r2.ebuild
@@ -0,0 +1 @@
+servo-config-dut-usb3-1.ebuild
\ No newline at end of file
diff --git a/virtual/servo-config-dut-usb3/servo-config-dut-usb3-1.ebuild b/virtual/servo-config-dut-usb3/servo-config-dut-usb3-1.ebuild
new file mode 100644
index 0000000..bb73338
--- /dev/null
+++ b/virtual/servo-config-dut-usb3/servo-config-dut-usb3-1.ebuild
@@ -0,0 +1,22 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the BSD license.
+#
+# This virtual package wraps:
+#
+#   dev-util/servo-config-dut-usb3-public
+#   dev-util/servo-config-dut-usb3-private
+#
+# ...to hide the dependency awkwardness of selecting which to install.
+
+EAPI="7"
+
+DESCRIPTION="List DUT USB 3 capability of Servo devices (virtual)."
+LICENSE="metapackage"
+KEYWORDS="*"
+IUSE="internal"
+SLOT="0/${PVR}"
+
+RDEPEND="
+	dev-util/servo-config-dut-usb3-public:=
+	internal? ( dev-util/servo-config-dut-usb3-private:= )
+"
diff --git a/virtual/target-chromium-os-dev/target-chromium-os-dev-1-r64.ebuild b/virtual/target-chromium-os-dev/target-chromium-os-dev-1-r64.ebuild
deleted file mode 100644
index b5e010c..0000000
--- a/virtual/target-chromium-os-dev/target-chromium-os-dev-1-r64.ebuild
+++ /dev/null
@@ -1,182 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
-# the canonical empty project.
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="../platform/empty-project"
-
-inherit cros-workon
-
-DESCRIPTION="List of packages that are needed inside the Chromium OS dev image"
-HOMEPAGE="https://dev.chromium.org/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-# Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os-dev.
-IUSE="
-	chromeless_tty
-	cras
-	nvme
-	opengl
-	pam
-	+power_management
-	+profile
-	python_targets_python2_7
-	+shill
-	tpm
-	tpm2
-	usb
-	vaapi
-	video_cards_amdgpu
-	video_cards_intel
-"
-
-# The dependencies here are meant to capture "all the packages
-# developers want to use for development, test, or debug".  This
-# category is meant to include all developer use cases, including
-# software test and debug, performance tuning, hardware validation,
-# and debugging failures running autotest.
-#
-# To protect developer images from changes in other ebuilds you
-# should include any package with a user constituency, regardless of
-# whether that package is included in the base Chromium OS image or
-# any other ebuild.
-#
-# Don't include packages that are indirect dependencies: only
-# include a package if a file *in that package* is expected to be
-# useful.
-
-################################################################################
-#
-# CROS_* : Dependencies for CrOS devices (coreutils, etc.)
-#
-################################################################################
-CROS_X86_RDEPEND="
-	app-benchmarks/i7z
-	power_management? ( dev-util/turbostat )
-	sys-apps/dmidecode
-	sys-apps/pciutils
-	sys-boot/syslinux
-	vaapi? (
-		chromeos-base/libva-fake-driver
-		media-gfx/vadumpcaps
-		media-video/libva-utils
-	)
-	video_cards_amdgpu? ( x11-apps/igt-gpu-tools )
-	video_cards_intel? ( x11-apps/igt-gpu-tools )
-"
-
-RDEPEND="
-	x86? ( ${CROS_X86_RDEPEND} )
-	amd64? ( ${CROS_X86_RDEPEND} )
-"
-
-RDEPEND="${RDEPEND}
-	pam? ( app-admin/sudo )
-	app-admin/sysstat
-	app-arch/bzip2
-	app-arch/gzip
-	app-arch/tar
-	app-arch/unzip
-	app-arch/xz-utils
-	app-arch/zip
-	profile? (
-		chromeos-base/quipper
-		app-benchmarks/libc-bench
-		net-analyzer/netperf
-		dev-util/perf
-	)
-	app-benchmarks/stress-ng
-	app-crypt/nss
-	tpm? ( app-crypt/tpm-tools )
-	app-editors/nano
-	app-editors/qemacs
-	app-editors/vim
-	app-misc/edid-decode
-	app-misc/evtest
-	app-misc/pax-utils
-	app-misc/screen
-	app-portage/portage-utils
-	app-shells/bash
-	app-text/tree
-	cras? (
-		chromeos-base/audiotest
-		media-sound/sox
-	)
-	chromeos-base/avtest_label_detect
-	chromeos-base/chromeos-dev-root
-	chromeos-base/cros-config-test
-	chromeos-base/cryptohome-dev-utils
-	tpm2? ( chromeos-base/g2f_tools )
-	!chromeless_tty? ( chromeos-base/graphics-utils-go )
-	chromeos-base/update-utils
-	chromeos-base/policy_utils
-	chromeos-base/protofiles
-	!chromeless_tty? ( chromeos-base/screen-capture-utils )
-	shill? ( chromeos-base/shill-test-scripts )
-	python_targets_python2_7? ( chromeos-base/touch_firmware_test )
-	chromeos-base/usi-test
-	dev-vcs/git
-	net-analyzer/tcpdump
-	net-analyzer/traceroute
-	net-dialup/minicom
-	net-dns/bind-tools
-	net-misc/dhcp
-	net-misc/iperf:2
-	net-misc/iputils
-	net-misc/openssh
-	net-misc/rsync
-	net-wireless/iw
-	net-wireless/wireless-tools
-	python_targets_python2_7? ( dev-lang/python:2.7 )
-	dev-lang/python:3.6
-	dev-libs/libgpiod
-	dev-python/protobuf-python
-	dev-python/cherrypy
-	dev-python/dbus-python
-	dev-python/hid-tools
-	python_targets_python2_7? ( dev-util/hdctools )
-	dev-util/mem
-	dev-util/strace
-	media-libs/openh264
-	media-tv/v4l-utils
-	media-video/yavta
-	net-dialup/lrzsz
-	net-fs/sshfs
-	net-misc/curl
-	net-misc/wget
-	sys-apps/coreboot-utils
-	sys-apps/coreutils
-	sys-apps/diffutils
-	sys-apps/file
-	sys-apps/findutils
-	sys-apps/flashrom-tester
-	sys-apps/gawk
-	sys-apps/i2c-tools
-	sys-apps/iotools
-	sys-apps/kbd
-	sys-apps/less
-	sys-apps/mmc-utils
-	nvme? ( sys-apps/nvme-cli )
-	sys-apps/portage
-	sys-apps/smartmontools
-	usb? ( sys-apps/usbutils )
-	sys-apps/which
-	sys-block/fio
-	sys-devel/gdb
-	sys-fs/fuse
-	sys-fs/lvm2
-	sys-fs/mtd-utils
-	power_management? ( sys-power/powertop )
-	sys-process/procps
-	sys-process/psmisc
-	sys-process/time
-	virtual/autotest-capability
-	virtual/chromeos-bsp-dev
-"
diff --git a/virtual/target-chromium-os-dev/target-chromium-os-dev-1-r69.ebuild b/virtual/target-chromium-os-dev/target-chromium-os-dev-1-r69.ebuild
new file mode 100644
index 0000000..bc62ec3
--- /dev/null
+++ b/virtual/target-chromium-os-dev/target-chromium-os-dev-1-r69.ebuild
@@ -0,0 +1,186 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="List of packages that are needed inside the Chromium OS dev image"
+HOMEPAGE="https://dev.chromium.org/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+# Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os-dev.
+IUSE="
+	chromeless_tty
+	cras
+	diag
+	nvme
+	opengl
+	pam
+	+power_management
+	+profile
+	python_targets_python2_7
+	+shill
+	tpm
+	tpm2
+	usb
+	vaapi
+	video_cards_amdgpu
+	video_cards_intel
+	vulkan
+"
+
+# The dependencies here are meant to capture "all the packages
+# developers want to use for development, test, or debug".  This
+# category is meant to include all developer use cases, including
+# software test and debug, performance tuning, hardware validation,
+# and debugging failures running autotest.
+#
+# To protect developer images from changes in other ebuilds you
+# should include any package with a user constituency, regardless of
+# whether that package is included in the base Chromium OS image or
+# any other ebuild.
+#
+# Don't include packages that are indirect dependencies: only
+# include a package if a file *in that package* is expected to be
+# useful.
+
+################################################################################
+#
+# CROS_* : Dependencies for CrOS devices (coreutils, etc.)
+#
+################################################################################
+CROS_X86_RDEPEND="
+	app-benchmarks/i7z
+	power_management? ( dev-util/turbostat )
+	sys-apps/dmidecode
+	sys-apps/pciutils
+	sys-boot/syslinux
+	vaapi? (
+		chromeos-base/libva-fake-driver
+		media-gfx/vadumpcaps
+		media-video/libva-utils
+	)
+	video_cards_amdgpu? ( x11-apps/igt-gpu-tools )
+	video_cards_intel? ( x11-apps/igt-gpu-tools )
+"
+
+RDEPEND="
+	x86? ( ${CROS_X86_RDEPEND} )
+	amd64? ( ${CROS_X86_RDEPEND} )
+"
+
+RDEPEND="${RDEPEND}
+	pam? ( app-admin/sudo )
+	app-admin/sysstat
+	app-arch/bzip2
+	app-arch/gzip
+	app-arch/tar
+	app-arch/unzip
+	app-arch/xz-utils
+	app-arch/zip
+	profile? (
+		chromeos-base/quipper
+		app-benchmarks/libc-bench
+		net-analyzer/netperf
+		dev-util/perf
+	)
+	app-benchmarks/stress-ng
+	app-crypt/nss
+	tpm? ( app-crypt/tpm-tools )
+	app-editors/nano
+	app-editors/qemacs
+	app-editors/vim
+	app-misc/edid-decode
+	app-misc/evtest
+	app-misc/pax-utils
+	app-misc/screen
+	app-portage/portage-utils
+	app-shells/bash
+	app-text/tree
+	cras? (
+		chromeos-base/audiotest
+		media-sound/sox
+	)
+	chromeos-base/avtest_label_detect
+	chromeos-base/chromeos-dev-root
+	chromeos-base/cros-config-test
+	chromeos-base/cryptohome-dev-utils
+	tpm2? ( chromeos-base/g2f_tools )
+	!chromeless_tty? ( chromeos-base/graphics-utils-go )
+	chromeos-base/policy_utils
+	chromeos-base/protofiles
+	!chromeless_tty? ( chromeos-base/screen-capture-utils )
+	shill? ( chromeos-base/shill-test-scripts )
+	python_targets_python2_7? ( chromeos-base/touch_firmware_test )
+	chromeos-base/usi-test
+	dev-vcs/git
+	net-analyzer/tcpdump
+	net-analyzer/traceroute
+	net-dialup/minicom
+	net-dns/bind-tools
+	net-misc/dhcp
+	diag? ( net-misc/diag )
+	net-misc/iperf:2
+	net-misc/iputils
+	net-misc/openssh
+	net-misc/rsync
+	net-wireless/iw
+	net-wireless/wireless-tools
+	python_targets_python2_7? ( dev-lang/python:2.7 )
+	dev-lang/python:3.6
+	dev-libs/libgpiod
+	dev-python/protobuf-python
+	dev-python/cherrypy
+	dev-python/dbus-python
+	dev-python/hid-tools
+	python_targets_python2_7? ( dev-util/hdctools )
+	dev-util/mem
+	dev-util/strace
+	media-libs/libyuv-test
+	media-libs/openh264
+	vulkan? ( media-libs/vulkan-layers )
+	media-tv/v4l-utils
+	media-video/yavta
+	net-dialup/lrzsz
+	net-fs/sshfs
+	net-misc/curl
+	net-misc/wget
+	sys-apps/coreboot-utils
+	sys-apps/coreutils
+	sys-apps/diffutils
+	sys-apps/file
+	sys-apps/findutils
+	sys-apps/flashrom-tester
+	sys-apps/gawk
+	sys-apps/i2c-tools
+	sys-apps/iotools
+	sys-apps/kbd
+	sys-apps/less
+	sys-apps/mmc-utils
+	nvme? ( sys-apps/nvme-cli )
+	sys-apps/portage
+	sys-apps/smartmontools
+	usb? ( sys-apps/usbutils )
+	sys-apps/which
+	sys-block/fio
+	sys-devel/gdb
+	sys-fs/fuse
+	sys-fs/lvm2
+	sys-fs/mtd-utils
+	power_management? ( sys-power/powertop )
+	sys-process/procps
+	sys-process/psmisc
+	sys-process/time
+	virtual/autotest-capability
+	virtual/chromeos-bsp-dev
+"
diff --git a/virtual/target-chromium-os-dev/target-chromium-os-dev-9999.ebuild b/virtual/target-chromium-os-dev/target-chromium-os-dev-9999.ebuild
index 3e0e2e9..f083a3d 100644
--- a/virtual/target-chromium-os-dev/target-chromium-os-dev-9999.ebuild
+++ b/virtual/target-chromium-os-dev/target-chromium-os-dev-9999.ebuild
@@ -13,13 +13,14 @@
 DESCRIPTION="List of packages that are needed inside the Chromium OS dev image"
 HOMEPAGE="https://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="~*"
 # Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os-dev.
 IUSE="
 	chromeless_tty
 	cras
+	diag
 	nvme
 	opengl
 	pam
@@ -33,6 +34,7 @@
 	vaapi
 	video_cards_amdgpu
 	video_cards_intel
+	vulkan
 "
 
 # The dependencies here are meant to capture "all the packages
@@ -113,7 +115,6 @@
 	chromeos-base/cryptohome-dev-utils
 	tpm2? ( chromeos-base/g2f_tools )
 	!chromeless_tty? ( chromeos-base/graphics-utils-go )
-	chromeos-base/update-utils
 	chromeos-base/policy_utils
 	chromeos-base/protofiles
 	!chromeless_tty? ( chromeos-base/screen-capture-utils )
@@ -126,6 +127,7 @@
 	net-dialup/minicom
 	net-dns/bind-tools
 	net-misc/dhcp
+	diag? ( net-misc/diag )
 	net-misc/iperf:2
 	net-misc/iputils
 	net-misc/openssh
@@ -142,7 +144,9 @@
 	python_targets_python2_7? ( dev-util/hdctools )
 	dev-util/mem
 	dev-util/strace
+	media-libs/libyuv-test
 	media-libs/openh264
+	vulkan? ( media-libs/vulkan-layers )
 	media-tv/v4l-utils
 	media-video/yavta
 	net-dialup/lrzsz
diff --git a/virtual/target-chromium-os-factory-shim/target-chromium-os-factory-shim-1-r1.ebuild b/virtual/target-chromium-os-factory-shim/target-chromium-os-factory-shim-1-r3.ebuild
similarity index 100%
rename from virtual/target-chromium-os-factory-shim/target-chromium-os-factory-shim-1-r1.ebuild
rename to virtual/target-chromium-os-factory-shim/target-chromium-os-factory-shim-1-r3.ebuild
diff --git a/virtual/target-chromium-os-factory-shim/target-chromium-os-factory-shim-1.ebuild b/virtual/target-chromium-os-factory-shim/target-chromium-os-factory-shim-1.ebuild
index 4ae64e9..eca367c 100644
--- a/virtual/target-chromium-os-factory-shim/target-chromium-os-factory-shim-1.ebuild
+++ b/virtual/target-chromium-os-factory-shim/target-chromium-os-factory-shim-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2016 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="List of packages that are needed inside the Chromium OS factory
 shim image."
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/target-chromium-os-factory/target-chromium-os-factory-1-r5.ebuild b/virtual/target-chromium-os-factory/target-chromium-os-factory-1-r7.ebuild
similarity index 100%
rename from virtual/target-chromium-os-factory/target-chromium-os-factory-1-r5.ebuild
rename to virtual/target-chromium-os-factory/target-chromium-os-factory-1-r7.ebuild
diff --git a/virtual/target-chromium-os-factory/target-chromium-os-factory-1.ebuild b/virtual/target-chromium-os-factory/target-chromium-os-factory-1.ebuild
index 85cb487..4d31ffb 100644
--- a/virtual/target-chromium-os-factory/target-chromium-os-factory-1.ebuild
+++ b/virtual/target-chromium-os-factory/target-chromium-os-factory-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2016 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="List of packages that are needed inside the Chromium OS factory
 image."
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/target-chromium-os-initramfs/OWNERS b/virtual/target-chromium-os-initramfs/OWNERS
new file mode 100644
index 0000000..a06af34
--- /dev/null
+++ b/virtual/target-chromium-os-initramfs/OWNERS
@@ -0,0 +1,2 @@
+include chromiumos/platform/initramfs:/OWNERS
+include chromiumos/chromite:/OWNERS.au
diff --git a/virtual/target-chromium-os-initramfs/files/chromeos-version.sh b/virtual/target-chromium-os-initramfs/files/chromeos-version.sh
new file mode 100644
index 0000000..42b36a2
--- /dev/null
+++ b/virtual/target-chromium-os-initramfs/files/chromeos-version.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Copyright 2021 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.
+
+echo "1"
\ No newline at end of file
diff --git a/virtual/target-chromium-os-initramfs/target-chromium-os-initramfs-1-r1.ebuild b/virtual/target-chromium-os-initramfs/target-chromium-os-initramfs-1-r1.ebuild
new file mode 100644
index 0000000..9b571e1
--- /dev/null
+++ b/virtual/target-chromium-os-initramfs/target-chromium-os-initramfs-1-r1.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="List of packages that are needed inside the Chromium OS initramfs"
+HOMEPAGE="https://dev.chromium.org/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+
+IUSE="
+	minios
+	minios_ramfs
+"
+
+REQUIRED_USE="
+	minios? ( minios_ramfs )
+	minios_ramfs? ( minios )
+"
+
+RDEPEND="
+	minios? ( chromeos-base/minios )
+	chromeos-base/chromeos-initramfs
+"
diff --git a/virtual/target-chromium-os-initramfs/target-chromium-os-initramfs-9999.ebuild b/virtual/target-chromium-os-initramfs/target-chromium-os-initramfs-9999.ebuild
new file mode 100644
index 0000000..571f351
--- /dev/null
+++ b/virtual/target-chromium-os-initramfs/target-chromium-os-initramfs-9999.ebuild
@@ -0,0 +1,33 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="List of packages that are needed inside the Chromium OS initramfs"
+HOMEPAGE="https://dev.chromium.org/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="~*"
+
+IUSE="
+	minios
+	minios_ramfs
+"
+
+REQUIRED_USE="
+	minios? ( minios_ramfs )
+	minios_ramfs? ( minios )
+"
+
+RDEPEND="
+	minios? ( chromeos-base/minios )
+	chromeos-base/chromeos-initramfs
+"
diff --git a/virtual/target-chromium-os-sdk-nobdeps/target-chromium-os-sdk-nobdeps-1-r4.ebuild b/virtual/target-chromium-os-sdk-nobdeps/target-chromium-os-sdk-nobdeps-1-r6.ebuild
similarity index 100%
rename from virtual/target-chromium-os-sdk-nobdeps/target-chromium-os-sdk-nobdeps-1-r4.ebuild
rename to virtual/target-chromium-os-sdk-nobdeps/target-chromium-os-sdk-nobdeps-1-r6.ebuild
diff --git a/virtual/target-chromium-os-sdk-nobdeps/target-chromium-os-sdk-nobdeps-1.ebuild b/virtual/target-chromium-os-sdk-nobdeps/target-chromium-os-sdk-nobdeps-1.ebuild
index 42db78a7..ab88d48 100644
--- a/virtual/target-chromium-os-sdk-nobdeps/target-chromium-os-sdk-nobdeps-1.ebuild
+++ b/virtual/target-chromium-os-sdk-nobdeps/target-chromium-os-sdk-nobdeps-1.ebuild
@@ -1,14 +1,14 @@
 # Copyright 2018 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 DESCRIPTION="List of packages that are needed inside the SDK, but where we only
 want to install a binpkg.  We never want to install build-time deps or recompile
 from source unless the user explicitly requests it."
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/target-chromium-os-sdk-post-cross/target-chromium-os-sdk-post-cross-1-r1.ebuild b/virtual/target-chromium-os-sdk-post-cross/target-chromium-os-sdk-post-cross-1-r1.ebuild
deleted file mode 100644
index 647fcfc..0000000
--- a/virtual/target-chromium-os-sdk-post-cross/target-chromium-os-sdk-post-cross-1-r1.ebuild
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2017 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="../platform/empty-project"
-
-inherit cros-workon
-
-DESCRIPTION="List of packages that are needed inside the SDK, but after we've
-built all the toolchain packages that we install separately via binpkgs.  This
-avoids circular dependencies when bootstrapping."
-HOMEPAGE="http://dev.chromium.org/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-# The vast majority of packages should not be listed here!  You most likely
-# want to update virtual/target-chromium-os-sdk instead.  Only list packages
-# here that need the cross-compiler toolchains installed first.
-RDEPEND="
-	dev-lang/rust
-	dev-rust/bindgen
-	dev-rust/dbus-codegen
-	dev-rust/protobuf-codegen
-	sys-apps/mosys
-	sys-apps/ripgrep
-	dev-embedded/coreboot-sdk
-"
diff --git a/virtual/target-chromium-os-sdk-post-cross/target-chromium-os-sdk-post-cross-1-r5.ebuild b/virtual/target-chromium-os-sdk-post-cross/target-chromium-os-sdk-post-cross-1-r5.ebuild
new file mode 100644
index 0000000..956dc67
--- /dev/null
+++ b/virtual/target-chromium-os-sdk-post-cross/target-chromium-os-sdk-post-cross-1-r5.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2017 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="List of packages that are needed inside the SDK, but after we've
+built all the toolchain packages that we install separately via binpkgs.  This
+avoids circular dependencies when bootstrapping."
+HOMEPAGE="http://dev.chromium.org/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+# The vast majority of packages should not be listed here!  You most likely
+# want to update virtual/target-chromium-os-sdk instead.  Only list packages
+# here that need the cross-compiler toolchains installed first.
+RDEPEND="
+	dev-lang/rust
+	dev-rust/bindgen
+	dev-rust/dbus-codegen
+	dev-rust/protobuf-codegen
+	dev-util/cxxbridge-cmd
+	sys-apps/mosys
+	sys-apps/ripgrep
+	dev-embedded/coreboot-sdk
+"
diff --git a/virtual/target-chromium-os-sdk-post-cross/target-chromium-os-sdk-post-cross-9999.ebuild b/virtual/target-chromium-os-sdk-post-cross/target-chromium-os-sdk-post-cross-9999.ebuild
index 21cac9c..f306b13 100644
--- a/virtual/target-chromium-os-sdk-post-cross/target-chromium-os-sdk-post-cross-9999.ebuild
+++ b/virtual/target-chromium-os-sdk-post-cross/target-chromium-os-sdk-post-cross-9999.ebuild
@@ -13,7 +13,7 @@
 avoids circular dependencies when bootstrapping."
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="~*"
 IUSE=""
@@ -26,6 +26,7 @@
 	dev-rust/bindgen
 	dev-rust/dbus-codegen
 	dev-rust/protobuf-codegen
+	dev-util/cxxbridge-cmd
 	sys-apps/mosys
 	sys-apps/ripgrep
 	dev-embedded/coreboot-sdk
diff --git a/virtual/target-chromium-os-sdk/target-chromium-os-sdk-1-r196.ebuild b/virtual/target-chromium-os-sdk/target-chromium-os-sdk-1-r196.ebuild
deleted file mode 100644
index 326deb8..0000000
--- a/virtual/target-chromium-os-sdk/target-chromium-os-sdk-1-r196.ebuild
+++ /dev/null
@@ -1,545 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
-# the canonical empty project.
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="../platform/empty-project"
-
-inherit cros-workon
-
-DESCRIPTION="List of packages that are needed inside the Chromium OS SDK"
-HOMEPAGE="https://dev.chromium.org/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-# Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os-sdk.
-IUSE=""
-
-# Block the old package to force people to clean up.
-RDEPEND="
-	!chromeos-base/hard-host-depends
-	!virtual/hard-host-depends-bsp
-"
-
-# Basic utilities
-RDEPEND="${RDEPEND}
-	app-arch/bzip2
-	app-arch/cpio
-	app-arch/gcab
-	app-arch/gzip
-	app-arch/p7zip
-	app-arch/tar
-	app-shells/bash
-	net-misc/iputils
-	net-misc/rsync
-	sys-apps/baselayout
-	sys-apps/coreutils
-	sys-apps/diffutils
-	sys-apps/dtc
-	sys-apps/file
-	sys-apps/findutils
-	sys-apps/gawk
-	sys-apps/grep
-	sys-apps/sed
-	sys-apps/shadow
-	sys-apps/texinfo
-	sys-apps/util-linux
-	sys-apps/which
-	sys-devel/autoconf
-	sys-devel/automake:1.10
-	sys-devel/automake:1.11
-	sys-devel/automake:1.15
-	sys-devel/binutils
-	sys-devel/bison
-	sys-devel/flex
-	sys-devel/gcc
-	sys-devel/gnuconfig
-	sys-devel/grit-i18n
-	sys-devel/libtool
-	sys-devel/m4
-	sys-devel/make
-	sys-devel/patch
-	sys-fs/e2fsprogs
-	sys-fs/f2fs-tools
-	sys-libs/ncurses
-	sys-libs/readline
-	sys-libs/zlib
-	sys-process/procps
-	sys-process/psmisc
-	virtual/editor
-	virtual/libc
-	virtual/man
-	virtual/os-headers
-	virtual/package-manager
-	virtual/pager
-	"
-
-# Needed to run setup crossdev, run build scripts, and make a bootable image.
-RDEPEND="${RDEPEND}
-	app-arch/lbzip2
-	app-arch/lz4
-	app-arch/lzop
-	app-arch/pigz
-	app-arch/pixz
-	app-admin/sudo
-	app-crypt/efitools
-	app-crypt/sbsigntools
-	chromeos-base/zephyr-build-tools
-	dev-embedded/binman
-	dev-embedded/cbootimage
-	dev-embedded/tegrarcm
-	dev-embedded/u-boot-tools
-	dev-util/ccache
-	media-gfx/pngcrush
-	>=sys-apps/dtc-1.3.0-r5
-	sys-boot/bootstub
-	sys-boot/grub
-	sys-boot/syslinux
-	sys-devel/crossdev
-	sys-fs/dosfstools
-	sys-fs/squashfs-tools
-	sys-fs/mtd-utils
-	"
-
-# Needed to build Android/ARC userland code.
-RDEPEND="${RDEPEND}
-	app-misc/jq
-	sys-devel/aapt
-	sys-devel/arc-toolchain-master
-	sys-devel/arc-toolchain-p
-	sys-devel/arc-toolchain-r
-	sys-devel/dex2oatds
-	"
-
-# Needed to run 'repo selfupdate'
-RDEPEND="${RDEPEND}
-	app-crypt/gnupg
-	"
-
-# Host dependencies for building cross-compiled packages.
-RDEPEND="${RDEPEND}
-	app-admin/eselect-opengl
-	app-admin/eselect-mesa
-	app-arch/cabextract
-	app-arch/makeself
-	>=app-arch/pbzip2-1.1.1-r1
-	app-arch/rpm2targz
-	app-arch/sharutils
-	app-arch/unzip
-	app-crypt/nss
-	app-doc/xmltoman
-	app-emulation/qemu
-	app-emulation/qemu-binfmt-wrapper
-	!app-emulation/qemu-kvm
-	!app-emulation/qemu-user
-	app-text/asciidoc
-	app-text/docbook-xml-dtd:4.2
-	app-text/docbook-xml-dtd:4.5
-	app-text/docbook-xsl-stylesheets
-	app-text/texi2html
-	app-text/xmlto
-	chromeos-base/google-breakpad
-	chromeos-base/chromeos-base
-	chromeos-base/chromeos-common-script
-	>=chromeos-base/chromeos-config-host-0.0.2-r491
-	chromeos-base/chromite-sdk
-	chromeos-base/cros-devutils[cros_host]
-	chromeos-base/cros-testutils
-	chromeos-base/ec-devutils
-	chromeos-base/minijail
-	dev-db/m17n-contrib
-	dev-db/m17n-db
-	dev-go/protobuf
-	dev-lang/closure-compiler-bin
-	dev-lang/nasm
-	dev-lang/python:2.7
-	dev-lang/python:3.6
-	dev-lang/swig
-	dev-lang/tcl
-	dev-lang/yasm
-	dev-libs/dbus-glib
-	dev-libs/flatbuffers
-	>=dev-libs/glib-2.26.1
-	net-libs/grpc
-	dev-libs/libgcrypt
-	dev-libs/libxslt
-	dev-libs/libyaml
-	dev-libs/m17n-lib
-	dev-libs/protobuf
-	dev-libs/protobuf-c
-	dev-libs/wayland
-	dev-python/cffi
-	dev-python/cherrypy
-	dev-python/ctypesgen
-	dev-python/dbus-python
-	dev-python/dpkt
-	dev-python/ecdsa
-	dev-python/future
-	dev-python/imaging
-	dev-python/intelhex
-	dev-python/kconfiglib
-	dev-python/m2crypto
-	dev-python/mako
-	dev-python/netifaces
-	dev-python/pexpect
-	dev-python/pillow
-	dev-python/psutil
-	dev-python/py
-	dev-python/pycairo
-	dev-python/pycparser
-	dev-python/pygobject
-	dev-python/pyopenssl
-	dev-python/pytest
-	dev-python/python-evdev
-	dev-python/pyudev
-	dev-python/pyusb
-	dev-python/setproctitle
-	!dev-python/socksipy
-	dev-python/tempita
-	dev-python/ws4py
-	dev-util/bazel
-	dev-util/cmake
-	dev-util/dwarves
-	dev-util/gob
-	dev-util/gdbus-codegen
-	dev-util/gperf
-	dev-util/gtk-doc
-	dev-util/hdctools
-	>=dev-util/gtk-doc-am-1.13
-	>=dev-util/intltool-0.30
-	dev-util/scons
-	dev-util/vulkan-headers
-	>=dev-vcs/git-1.7.2
-	>=media-libs/freetype-2.2.1
-	>=media-libs/lcms-2.6:2
-	net-fs/sshfs
-	net-libs/rpcsvc-proto
-	net-misc/gsutil
-	sys-apps/usbutils
-	!sys-apps/nih-dbus-tool
-	sys-devel/autofdo
-	sys-devel/bc
-	>=sys-libs/glibc-2.27
-	sys-libs/libcxxabi
-	sys-libs/libcxx
-	sys-libs/llvm-libunwind
-	virtual/udev
-	sys-libs/libnih
-	sys-power/iasl
-	virtual/modutils
-	x11-apps/mkfontscale
-	x11-apps/xcursorgen
-	x11-apps/xkbcomp
-	>=x11-misc/util-macros-1.2
-	"
-
-# Various fonts are needed in order to generate messages for the
-# chromeos-initramfs package.
-RDEPEND="${RDEPEND}
-	chromeos-base/chromeos-fonts
-	"
-
-# Host dependencies for bitmap block (chromeos-bmpblk) to to render messages.
-RDEPEND="${RDEPEND}
-	gnome-base/librsvg
-	"
-
-# Host dependencies for building chromium.
-# Intermediate executables built for the host, then run to generate data baked
-# into chromium, need these packages to be present in the host environment in
-# order to successfully build.
-# See: http://codereview.chromium.org/7550002/
-RDEPEND="${RDEPEND}
-	dev-libs/atk
-	dev-libs/glib
-	media-libs/fontconfig
-	media-libs/freetype
-	x11-libs/cairo
-	x11-libs/libX11
-	x11-libs/libXi
-	x11-libs/libXrandr
-	x11-libs/libXtst
-	x11-libs/pango
-	"
-
-# Host dependencies that create usernames/groups we need to pull over to target.
-RDEPEND="${RDEPEND}
-	sys-apps/dbus
-	"
-
-# Host dependencies that are needed by mod_image_for_test.
-RDEPEND="${RDEPEND}
-	sys-process/lsof
-	"
-
-# Useful utilities for developers.
-RDEPEND="${RDEPEND}
-	app-arch/zip
-	app-editors/nano
-	app-editors/qemacs
-	app-editors/vim
-	app-portage/eclass-manpages
-	app-portage/gentoolkit
-	app-portage/portage-utils
-	app-shells/bash-completion
-	dev-go/go-tools
-	dev-go/golint
-	dev-lang/go
-	dev-python/ipython
-	dev-util/codespell
-	dev-util/patchutils
-	dev-util/perf
-	dev-util/shfmt
-	net-analyzer/netperf
-	sys-apps/less
-	sys-apps/man-pages
-	sys-apps/pv
-	sys-devel/smatch
-	"
-
-# Host dependencies used by chromite on build servers
-RDEPEND="${RDEPEND}
-	dev-python/google-cloud-logging
-	dev-python/mysqlclient
-	dev-python/sqlalchemy
-	dev-python/pyparsing
-	dev-python/virtualenv
-	"
-
-# Host dependencies that are needed for unit tests
-RDEPEND="${RDEPEND}
-	x11-misc/xkeyboard-config
-	"
-
-# Host dependencies that are needed to build the autotest server components.
-RDEPEND="${RDEPEND}
-	dev-util/google-web-toolkit
-	"
-
-# Host dependencies that are needed for autotests.
-RDEPEND="${RDEPEND}
-	dev-python/btsocket
-	dev-python/selenium
-	sys-apps/iproute2
-	sys-apps/net-tools
-	"
-
-# Host dependencies that are needed for media applications (ex, mplayer) used in
-# factory.
-RDEPEND="${RDEPEND}
-	media-video/ffmpeg
-	"
-
-# Host dependencies that are needed to create and sign images
-RDEPEND="${RDEPEND}
-	>=chromeos-base/vboot_reference-1.0-r174
-	chromeos-base/verity
-	!dev-python/ahocorasick
-	dev-python/pyahocorasick
-	sys-fs/libfat
-	"
-
-# Host dependencies that are needed for cros_generate_update_payload.
-RDEPEND="${RDEPEND}
-	chromeos-base/update_engine
-	sys-fs/e2tools
-	"
-
-# Host dependencies to run unit tests within the chroot
-RDEPEND="${RDEPEND}
-	dev-cpp/gflags
-	dev-go/mock
-	dev-python/mock
-	dev-python/mox
-	dev-python/unittest2
-	"
-# Host dependencies to run autotest's unit tests within the chroot.
-RDEPEND="${RDEPEND}
-	dev-python/httplib2
-	dev-python/pyshark
-	dev-python/python-dateutil
-	dev-python/six
-	"
-
-# Host dependencies for running pylint within the chroot
-RDEPEND="${RDEPEND}
-	dev-python/pylint
-	"
-
-# Host dependencies to scp binaries from the binary component server
-RDEPEND="${RDEPEND}
-	net-misc/openssh
-	net-misc/socat
-	net-misc/wget
-	"
-
-# Host dependencies for HWID processing
-RDEPEND="${RDEPEND}
-	dev-python/pyyaml
-	"
-
-# Tools for working with compiler generated profile information
-# (such as coverage analysis in common.mk)
-RDEPEND="${RDEPEND}
-	dev-util/lcov
-	"
-
-# Host dependencies for building Platform2
-RDEPEND="${RDEPEND}
-	chromeos-base/chromeos-dbus-bindings
-	dev-util/meson
-	dev-util/ninja
-	"
-
-# Host dependencies for converting sparse into raw images (simg2img).
-RDEPEND="${RDEPEND}
-	brillo-base/libsparse
-	"
-
-# Host dependencies for building Chromium code (libmojo)
-RDEPEND="${RDEPEND}
-	dev-python/ply
-	dev-util/gn
-	"
-
-# Host dependencies for building
-RDEPEND="${RDEPEND}
-	dev-util/tclint
-	"
-
-# Uninstall these packages.
-RDEPEND="${RDEPEND}
-	!net-misc/dhcpcd
-	"
-
-# Host dependencies for building/testing factory software
-RDEPEND="${RDEPEND}
-	dev-libs/closure-library
-	dev-libs/closure_linter
-	dev-python/autopep8
-	dev-python/django
-	dev-python/enum34
-	dev-python/jsonrpclib
-	dev-python/jsonschema
-	dev-python/python-gnupg
-	dev-python/requests
-	dev-python/sphinx
-	dev-python/twisted
-	!dev-python/twisted-core
-	!dev-python/twisted-web
-	www-servers/nginx
-	"
-
-# Host dependencies for running integration tests
-RDEPEND="${RDEPEND}
-	chromeos-base/tast-cmd
-	chromeos-base/tast-remote-tests-cros
-	"
-
-# Host dependencies for building harfbuzz
-RDEPEND="${RDEPEND}
-	dev-util/ragel
-	"
-
-# Host dependencies for building chromeos-bootimage
-RDEPEND="${RDEPEND}
-	sys-apps/coreboot-utils
-	"
-
-# Host dependencies for building chromeos-firmware-*
-RDEPEND="${RDEPEND}
-	chromeos-base/ec-utils
-	"
-
-# Host dependencies for the chromeos-ec workflow
-RDEPEND="${RDEPEND}
-	dev-libs/libprotobuf-mutator
-	dev-libs/openssl
-	dev-util/unifdef
-	"
-
-# Host dependencies for the AP/EC/GSC firmware release testing workflow
-RDEPEND="${RDEPEND}
-	sys-firmware/fw-engprod-tools
-	"
-
-# Host dependencies for audio topology generation
-RDEPEND="${RDEPEND}
-	media-sound/alsa-utils"
-
-# Host dependency for dev-libs/boost package
-RDEPEND="${RDEPEND}
-	dev-util/boost-build"
-
-# Host dependency for managing SELinux
-RDEPEND="${RDEPEND}
-	chromeos-base/sepolicy-analyze
-	sys-apps/checkpolicy
-	sys-apps/restorecon
-	sys-apps/secilc
-	sys-apps/selinux-python"
-
-# Host dependencies that are needed for chromite/bin/cros_generate_android_breakpad_symbols
-RDEPEND="${RDEPEND}
-	chromeos-base/android-relocation-packer"
-
-# Host dependencies for generating and testing update payloads
-RDEPEND="${RDEPEND}
-	chromeos-base/update_payload"
-
-# Needed to compile moblab mobmonitor ui
-RDEPEND="${RDEPEND}
-	net-libs/nodejs"
-
-# Needed to compile img-ddk
-RDEPEND="${RDEPEND}
-	dev-python/clang-python"
-
-# Moblab's new RPC server backend will use grpc
-RDEPEND="${RDEPEND}
-	dev-python/grpcio-tools
-	net-libs/grpc-web"
-
-# Autotest's new RPC server will use grpc
-RDEPEND="${RDEPEND}
-	dev-python/grpcio"
-
-# Needed for unit tests of tast-local-tests-cros
-RDEPEND="${RDEPEND}
-	dev-util/strace"
-
-# Host dependencies for termina_build_image
-RDEPEND="${RDEPEND}
-	app-misc/fdupes"
-
-# Host dependencies that lets us boost to performance governor
-# to speed up builds.  https://crbug.com/1008932
-RDEPEND="${RDEPEND}
-	sys-power/cpupower"
-
-# Base layout for java that installs cacerts
-RDEPEND="${RDEPEND}
-	sys-apps/baselayout-java"
-
-# CTS P depends on Java 8 or 9, CTS R depends on Java 9 or later.
-# Include android-sdk to contain both JDK8 and JDK11 in the chroot.
-RDEPEND="${RDEPEND}
-	chromeos-base/android-sdk"
-
-# Needed to optimise Android APKs shipped in demo_mode_resources.
-RDEPEND="${RDEPEND}
-	sys-devel/zipalign"
-
-# Needed to build IPA interface in libcamera.
-RDEPEND="${RDEPEND}
-	dev-python/jinja"
-
-# Needed for packages that need older 4.9.2 GCC.
-RDEPEND="${RDEPEND}
-	sys-devel/gcc-bin"
diff --git a/virtual/target-chromium-os-sdk/target-chromium-os-sdk-1-r205.ebuild b/virtual/target-chromium-os-sdk/target-chromium-os-sdk-1-r205.ebuild
new file mode 100644
index 0000000..8701e98
--- /dev/null
+++ b/virtual/target-chromium-os-sdk/target-chromium-os-sdk-1-r205.ebuild
@@ -0,0 +1,548 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="List of packages that are needed inside the Chromium OS SDK"
+HOMEPAGE="https://dev.chromium.org/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+# Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os-sdk.
+IUSE=""
+
+# Block the old package to force people to clean up.
+RDEPEND="
+	!chromeos-base/hard-host-depends
+	!virtual/hard-host-depends-bsp
+"
+
+# Basic utilities
+RDEPEND="${RDEPEND}
+	app-arch/bzip2
+	app-arch/cpio
+	app-arch/gcab
+	app-arch/gzip
+	app-arch/p7zip
+	app-arch/tar
+	app-shells/bash
+	net-misc/iputils
+	net-misc/rsync
+	sys-apps/baselayout
+	sys-apps/coreutils
+	sys-apps/diffutils
+	sys-apps/dtc
+	sys-apps/file
+	sys-apps/findutils
+	sys-apps/gawk
+	sys-apps/grep
+	sys-apps/sed
+	sys-apps/shadow
+	sys-apps/texinfo
+	sys-apps/util-linux
+	sys-apps/which
+	sys-devel/autoconf
+	sys-devel/autoconf-archive
+	sys-devel/automake:1.10
+	sys-devel/automake:1.11
+	sys-devel/automake:1.15
+	sys-devel/binutils
+	sys-devel/bison
+	sys-devel/flex
+	sys-devel/gcc
+	sys-devel/gnuconfig
+	sys-devel/grit-i18n
+	sys-devel/libtool
+	sys-devel/m4
+	sys-devel/make
+	sys-devel/patch
+	sys-fs/e2fsprogs
+	sys-fs/f2fs-tools
+	sys-libs/ncurses
+	sys-libs/readline
+	sys-libs/zlib
+	sys-process/procps
+	sys-process/psmisc
+	virtual/editor
+	virtual/libc
+	virtual/man
+	virtual/os-headers
+	virtual/package-manager
+	virtual/pager
+	"
+
+# Needed to run setup crossdev, run build scripts, and make a bootable image.
+RDEPEND="${RDEPEND}
+	app-arch/lbzip2
+	app-arch/lz4
+	app-arch/lzop
+	app-arch/pigz
+	app-arch/pixz
+	app-admin/sudo
+	app-crypt/efitools
+	app-crypt/sbsigntools
+	chromeos-base/zephyr-build-tools
+	dev-embedded/binman
+	dev-embedded/cbootimage
+	dev-embedded/tegrarcm
+	dev-embedded/u-boot-tools
+	dev-util/ccache
+	media-gfx/pngcrush
+	>=sys-apps/dtc-1.3.0-r5
+	sys-boot/bootstub
+	sys-boot/grub
+	sys-boot/syslinux
+	sys-devel/crossdev
+	sys-fs/dosfstools
+	sys-fs/squashfs-tools
+	sys-fs/mtd-utils
+	"
+
+# Needed to build Android/ARC userland code.
+RDEPEND="${RDEPEND}
+	app-misc/jq
+	sys-devel/aapt
+	sys-devel/arc-toolchain-master
+	sys-devel/arc-toolchain-p
+	sys-devel/arc-toolchain-r
+	sys-devel/dex2oatds
+	"
+
+# Needed to run 'repo selfupdate'
+RDEPEND="${RDEPEND}
+	app-crypt/gnupg
+	"
+
+# Host dependencies for building cross-compiled packages.
+RDEPEND="${RDEPEND}
+	app-admin/eselect-opengl
+	app-admin/eselect-mesa
+	app-arch/cabextract
+	app-arch/makeself
+	>=app-arch/pbzip2-1.1.1-r1
+	app-arch/rpm2targz
+	app-arch/sharutils
+	app-arch/unzip
+	app-crypt/nss
+	app-doc/xmltoman
+	app-emulation/qemu
+	app-emulation/qemu-binfmt-wrapper
+	!app-emulation/qemu-kvm
+	!app-emulation/qemu-user
+	app-text/asciidoc
+	app-text/docbook-xml-dtd:4.2
+	app-text/docbook-xml-dtd:4.5
+	app-text/docbook-xsl-stylesheets
+	app-text/texi2html
+	app-text/xmlto
+	chromeos-base/google-breakpad
+	chromeos-base/chromeos-base
+	chromeos-base/chromeos-common-script
+	>=chromeos-base/chromeos-config-host-0.0.2-r491
+	chromeos-base/chromite-sdk
+	chromeos-base/cros-devutils[cros_host]
+	chromeos-base/cros-testutils
+	chromeos-base/ec-devutils
+	chromeos-base/minijail
+	chromeos-base/test-server
+	dev-db/m17n-contrib
+	dev-db/m17n-db
+	dev-go/protobuf
+	dev-lang/closure-compiler-bin
+	dev-lang/nasm
+	dev-lang/python:2.7
+	dev-lang/python:3.6
+	dev-lang/swig
+	dev-lang/tcl
+	dev-lang/yasm
+	dev-libs/dbus-glib
+	dev-libs/flatbuffers
+	>=dev-libs/glib-2.26.1
+	net-libs/grpc
+	dev-libs/libgcrypt
+	dev-libs/libxslt
+	dev-libs/libyaml
+	dev-libs/m17n-lib
+	dev-libs/protobuf
+	dev-libs/protobuf-c
+	dev-libs/wayland
+	dev-python/cffi
+	dev-python/cherrypy
+	dev-python/dbus-python
+	dev-python/dpkt
+	dev-python/ecdsa
+	dev-python/future
+	dev-python/intelhex
+	dev-python/kconfiglib
+	dev-python/m2crypto
+	dev-python/mako
+	dev-python/netifaces
+	dev-python/pexpect
+	dev-python/pillow
+	dev-python/psutil
+	dev-python/py
+	dev-python/pycairo
+	dev-python/pycparser
+	dev-python/pygobject
+	dev-python/pyopenssl
+	dev-python/pytest
+	dev-python/python-evdev
+	dev-python/pyudev
+	dev-python/pyusb
+	dev-python/setproctitle
+	!dev-python/socksipy
+	dev-python/tempita
+	dev-python/ws4py
+	dev-util/bazel
+	dev-util/cmake
+	dev-util/dwarves
+	dev-util/gob
+	dev-util/gdbus-codegen
+	dev-util/gperf
+	dev-util/gtk-doc
+	dev-util/hdctools
+	>=dev-util/gtk-doc-am-1.13
+	>=dev-util/intltool-0.30
+	dev-util/scons
+	dev-util/vulkan-headers
+	>=dev-vcs/git-1.7.2
+	>=media-libs/freetype-2.2.1
+	>=media-libs/lcms-2.6:2
+	net-fs/sshfs
+	net-libs/rpcsvc-proto
+	net-misc/gsutil
+	sys-apps/usbutils
+	!sys-apps/nih-dbus-tool
+	sys-devel/autofdo
+	sys-devel/bc
+	>=sys-libs/glibc-2.27
+	sys-libs/libcxxabi
+	sys-libs/libcxx
+	sys-libs/llvm-libunwind
+	virtual/udev
+	sys-libs/libnih
+	sys-power/iasl
+	virtual/modutils
+	x11-apps/mkfontscale
+	x11-apps/xcursorgen
+	x11-apps/xkbcomp
+	>=x11-misc/util-macros-1.2
+	"
+
+# Various fonts are needed in order to generate messages for the
+# chromeos-initramfs package.
+RDEPEND="${RDEPEND}
+	chromeos-base/chromeos-fonts
+	"
+
+# Host dependencies for bitmap block (chromeos-bmpblk) to to render messages.
+RDEPEND="${RDEPEND}
+	gnome-base/librsvg
+	"
+
+# Host dependencies for building chromium.
+# Intermediate executables built for the host, then run to generate data baked
+# into chromium, need these packages to be present in the host environment in
+# order to successfully build.
+# See: http://codereview.chromium.org/7550002/
+RDEPEND="${RDEPEND}
+	dev-libs/atk
+	dev-libs/glib
+	media-libs/fontconfig
+	media-libs/freetype
+	x11-libs/cairo
+	x11-libs/libX11
+	x11-libs/libXi
+	x11-libs/libXrandr
+	x11-libs/libXtst
+	x11-libs/pango
+	"
+
+# Host dependencies that create usernames/groups we need to pull over to target.
+RDEPEND="${RDEPEND}
+	sys-apps/dbus
+	"
+
+# Host dependencies that are needed by mod_image_for_test.
+RDEPEND="${RDEPEND}
+	sys-process/lsof
+	"
+
+# Useful utilities for developers.
+RDEPEND="${RDEPEND}
+	app-arch/zip
+	app-editors/nano
+	app-editors/qemacs
+	app-editors/vim
+	app-portage/eclass-manpages
+	app-portage/gentoolkit
+	app-portage/portage-utils
+	app-shells/bash-completion
+	dev-go/go-tools
+	dev-go/golint
+	dev-lang/go
+	dev-python/ipython
+	dev-util/codespell
+	dev-util/patchutils
+	dev-util/perf
+	dev-util/shfmt
+	net-analyzer/netperf
+	sys-apps/less
+	sys-apps/man-pages
+	sys-apps/pv
+	sys-devel/smatch
+	"
+
+# Host dependencies used by chromite on build servers
+RDEPEND="${RDEPEND}
+	dev-python/google-cloud-logging
+	dev-python/mysqlclient
+	dev-python/pyparsing
+	dev-python/virtualenv
+	"
+
+# Host dependencies that are needed for unit tests
+RDEPEND="${RDEPEND}
+	x11-misc/xkeyboard-config
+	"
+
+# Host dependencies that are needed to build the autotest server components.
+RDEPEND="${RDEPEND}
+	dev-util/google-web-toolkit
+	"
+
+# Host dependencies that are needed for autotests.
+RDEPEND="${RDEPEND}
+	dev-python/btsocket
+	dev-python/selenium
+	sys-apps/iproute2
+	sys-apps/net-tools
+	"
+
+# Host dependencies that are needed for media applications (ex, mplayer) used in
+# factory.
+RDEPEND="${RDEPEND}
+	media-video/ffmpeg
+	"
+
+# Host dependencies that are needed to create and sign images
+RDEPEND="${RDEPEND}
+	>=chromeos-base/vboot_reference-1.0-r174
+	chromeos-base/verity
+	!dev-python/ahocorasick
+	dev-python/pyahocorasick
+	sys-fs/libfat
+	"
+
+# Host dependencies that are needed for cros_generate_update_payload.
+RDEPEND="${RDEPEND}
+	chromeos-base/update_engine
+	sys-fs/e2tools
+	"
+
+# Host dependencies to run unit tests within the chroot
+RDEPEND="${RDEPEND}
+	dev-cpp/gflags
+	dev-go/mock
+	dev-python/mock
+	dev-python/mox
+	dev-python/unittest2
+	"
+# Host dependencies to run autotest's unit tests within the chroot.
+RDEPEND="${RDEPEND}
+	dev-python/httplib2
+	dev-python/pyshark
+	dev-python/python-dateutil
+	dev-python/six
+	"
+
+# Host dependencies for running pylint within the chroot
+RDEPEND="${RDEPEND}
+	dev-python/pylint
+	"
+
+# Host dependencies to scp binaries from the binary component server
+RDEPEND="${RDEPEND}
+	net-misc/openssh
+	net-misc/socat
+	net-misc/wget
+	"
+
+# Host dependencies for HWID processing
+RDEPEND="${RDEPEND}
+	dev-python/pyyaml
+	"
+
+# Tools for working with compiler generated profile information
+# (such as coverage analysis in common.mk)
+RDEPEND="${RDEPEND}
+	dev-util/lcov
+	"
+
+# Host dependencies for building Platform2
+RDEPEND="${RDEPEND}
+	chromeos-base/chromeos-dbus-bindings
+	dev-util/meson
+	dev-util/ninja
+	"
+
+# Host dependencies for converting sparse into raw images (simg2img).
+RDEPEND="${RDEPEND}
+	brillo-base/libsparse
+	"
+
+# Host dependencies for building Chromium code (libmojo)
+RDEPEND="${RDEPEND}
+	dev-python/ply
+	dev-util/gn
+	"
+
+# Host dependencies for building
+RDEPEND="${RDEPEND}
+	dev-util/tclint
+	"
+
+# Uninstall these packages.
+RDEPEND="${RDEPEND}
+	!net-misc/dhcpcd
+	"
+
+# Host dependencies for building/testing factory software
+RDEPEND="${RDEPEND}
+	dev-libs/closure-library
+	dev-libs/closure_linter
+	dev-python/autopep8
+	dev-python/django
+	dev-python/enum34
+	dev-python/jsonrpclib
+	dev-python/jsonschema
+	dev-python/python-gnupg
+	dev-python/requests
+	dev-python/sphinx
+	dev-python/twisted
+	!dev-python/twisted-core
+	!dev-python/twisted-web
+	www-servers/nginx
+	"
+
+# Host dependencies for running integration tests
+RDEPEND="${RDEPEND}
+	chromeos-base/tast-cmd
+	chromeos-base/tast-remote-tests-cros
+	"
+
+# Host dependencies for building harfbuzz
+RDEPEND="${RDEPEND}
+	dev-util/ragel
+	"
+
+# Host dependencies for building chromeos-bootimage
+RDEPEND="${RDEPEND}
+	sys-apps/coreboot-utils
+	"
+
+# Host dependencies for building chromeos-firmware-*
+RDEPEND="${RDEPEND}
+	chromeos-base/ec-utils
+	"
+
+# Host dependencies for the chromeos-ec workflow
+RDEPEND="${RDEPEND}
+	dev-libs/libprotobuf-mutator
+	dev-libs/openssl
+	dev-util/unifdef
+	"
+
+# Host dependencies for the AP/EC/GSC firmware release testing workflow
+RDEPEND="${RDEPEND}
+	sys-firmware/fw-engprod-tools
+	"
+
+# Host dependencies for audio topology generation
+RDEPEND="${RDEPEND}
+	media-sound/alsa-utils"
+
+# Host dependency for dev-libs/boost package
+RDEPEND="${RDEPEND}
+	dev-util/boost-build"
+
+# Host dependency for managing SELinux
+RDEPEND="${RDEPEND}
+	chromeos-base/sepolicy-analyze
+	sys-apps/checkpolicy
+	sys-apps/restorecon
+	sys-apps/secilc
+	sys-apps/selinux-python"
+
+# Host dependencies that are needed for chromite/bin/cros_generate_android_breakpad_symbols
+RDEPEND="${RDEPEND}
+	chromeos-base/android-relocation-packer"
+
+# Host dependencies for generating and testing update payloads
+RDEPEND="${RDEPEND}
+	chromeos-base/update_payload"
+
+# Needed to compile moblab mobmonitor ui
+RDEPEND="${RDEPEND}
+	net-libs/nodejs"
+
+# Needed to compile img-ddk
+RDEPEND="${RDEPEND}
+	dev-python/clang-python"
+
+# Moblab's new RPC server backend will use grpc
+RDEPEND="${RDEPEND}
+	dev-python/grpcio-tools
+	net-libs/grpc-web"
+
+# Autotest's new RPC server will use grpc
+RDEPEND="${RDEPEND}
+	dev-python/grpcio"
+
+# Needed for unit tests of tast-local-tests-cros
+RDEPEND="${RDEPEND}
+	dev-util/strace"
+
+# Host dependencies for termina_build_image
+RDEPEND="${RDEPEND}
+	app-misc/fdupes"
+
+# Host dependencies that lets us boost to performance governor
+# to speed up builds.  https://crbug.com/1008932
+RDEPEND="${RDEPEND}
+	sys-power/cpupower"
+
+# Base layout for java that installs cacerts
+RDEPEND="${RDEPEND}
+	sys-apps/baselayout-java"
+
+# CTS P depends on Java 8 or 9, CTS R depends on Java 9 or later.
+# Include android-sdk to contain both JDK8 and JDK11 in the chroot.
+RDEPEND="${RDEPEND}
+	chromeos-base/android-sdk"
+
+# Needed to optimise Android APKs shipped in demo_mode_resources.
+RDEPEND="${RDEPEND}
+	sys-devel/zipalign"
+
+# Needed to build IPA interface in libcamera.
+RDEPEND="${RDEPEND}
+	dev-python/jinja"
+
+# Needed for packages that need older 4.9.2 GCC.
+RDEPEND="${RDEPEND}
+	sys-devel/gcc-bin"
+
+# Needed to build crosvm without ebuild in chroot.
+RDEPEND="${RDEPEND}
+	dev-libs/wayland-protocols"
diff --git a/virtual/target-chromium-os-sdk/target-chromium-os-sdk-9999.ebuild b/virtual/target-chromium-os-sdk/target-chromium-os-sdk-9999.ebuild
index 5d74f04..1948b92 100644
--- a/virtual/target-chromium-os-sdk/target-chromium-os-sdk-9999.ebuild
+++ b/virtual/target-chromium-os-sdk/target-chromium-os-sdk-9999.ebuild
@@ -13,7 +13,7 @@
 DESCRIPTION="List of packages that are needed inside the Chromium OS SDK"
 HOMEPAGE="https://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="~*"
 # Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os-sdk.
@@ -50,6 +50,7 @@
 	sys-apps/util-linux
 	sys-apps/which
 	sys-devel/autoconf
+	sys-devel/autoconf-archive
 	sys-devel/automake:1.10
 	sys-devel/automake:1.11
 	sys-devel/automake:1.15
@@ -151,6 +152,7 @@
 	chromeos-base/cros-testutils
 	chromeos-base/ec-devutils
 	chromeos-base/minijail
+	chromeos-base/test-server
 	dev-db/m17n-contrib
 	dev-db/m17n-db
 	dev-go/protobuf
@@ -174,12 +176,10 @@
 	dev-libs/wayland
 	dev-python/cffi
 	dev-python/cherrypy
-	dev-python/ctypesgen
 	dev-python/dbus-python
 	dev-python/dpkt
 	dev-python/ecdsa
 	dev-python/future
-	dev-python/imaging
 	dev-python/intelhex
 	dev-python/kconfiglib
 	dev-python/m2crypto
@@ -305,7 +305,6 @@
 RDEPEND="${RDEPEND}
 	dev-python/google-cloud-logging
 	dev-python/mysqlclient
-	dev-python/sqlalchemy
 	dev-python/pyparsing
 	dev-python/virtualenv
 	"
@@ -541,3 +540,7 @@
 # Needed for packages that need older 4.9.2 GCC.
 RDEPEND="${RDEPEND}
 	sys-devel/gcc-bin"
+
+# Needed to build crosvm without ebuild in chroot.
+RDEPEND="${RDEPEND}
+	dev-libs/wayland-protocols"
diff --git a/virtual/target-chromium-os-test/target-chromium-os-test-1-r138.ebuild b/virtual/target-chromium-os-test/target-chromium-os-test-1-r138.ebuild
deleted file mode 100644
index 20a8392..0000000
--- a/virtual/target-chromium-os-test/target-chromium-os-test-1-r138.ebuild
+++ /dev/null
@@ -1,288 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
-# the canonical empty project.
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="../platform/empty-project"
-
-inherit cros-workon
-
-DESCRIPTION="List of packages that are needed inside the Chromium OS test image;
-Note: test images are a superset of dev images."
-HOMEPAGE="https://dev.chromium.org/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-# Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os-test.
-IUSE="
-	arc-camera3
-	biod
-	-chromeless_tests
-	cheets
-	chromeless_tty
-	cr50_onboard
-	+cras
-	cros_ec
-	cros_embedded
-	dlc
-	kvm_host
-	hammerd
-	iioservice
-	ml_service
-	nnapi
-	opengl
-	opengles
-	p2p
-	+perfetto
-	python_targets_python2_7
-	scanner
-	+shill
-	+tpm
-	tpm2
-	unibuild
-	vaapi
-	vulkan
-	wifi_hostap_test
-	wifi_testbed_ap
-	+wired_8021x
-"
-
-# Packages required to support autotest images.  Dependencies here
-# are for packages that must be present on a local device and that
-# are not downloaded by the autotest server.  This includes both
-# packages relied on by the server, as well as packages relied on by
-# specific tests.
-#
-# This package is not meant to capture tools useful for test debug;
-# use the chromeos-dev package for that purpose.
-#
-# Note that some packages used by autotest are actually built by the
-# autotest package and downloaded by the server, regardless of
-# whether the package is present on the target device; those
-# packages aren't listed here.
-#
-# Developers should be aware that packages installed by this ebuild
-# are rooted in /usr/local.  This means that libraries are installed
-# in /usr/local/lib, executables in /usr/local/bin, etc.
-#
-# TODO(jrbarnette):  It's not known definitively that the list
-# below contains no unneeded dependencies.  More work is needed to
-# determine for sure that every package listed is actually used.
-
-
-################################################################################
-#
-# CROS_COMMON_* : Dependencies common to all CrOS flavors (embedded, regular)
-#
-################################################################################
-
-CROS_COMMON_RDEPEND="
-	tpm? (
-		app-crypt/tpm-tools
-		chromeos-base/hwsec-test-utils
-		chromeos-base/tpm_softclear_utils
-	)
-	tpm2? (
-		chromeos-base/hwsec-test-utils
-		chromeos-base/tpm_softclear_utils
-	)
-	chromeos-base/chromeos-test-root
-	chromeos-base/ec-utils
-	chromeos-base/ec-utils-test
-	chromeos-base/factory-deps
-	biod? (
-		virtual/chromeos-fpmcu-test
-		chromeos-base/chromeos-fpmcu-unittests
-	)
-	hammerd? ( chromeos-base/hammerd-test-utils )
-	iioservice? ( chromeos-base/iioservice_simpleclient )
-	scanner? (
-		chromeos-base/lorgnette_cli
-		chromeos-base/sane-backends-test
-	)
-	ml_service? ( chromeos-base/ml-cmdline )
-	nnapi? ( chromeos-base/ml-test-assets )
-	chromeos-base/recover-duts
-	chromeos-base/tast-local-test-runner
-	chromeos-base/tast-local-tests
-	chromeos-base/tast-use-flags
-	chromeos-base/verity
-	chromeos-base/vpd
-	cros_ec? ( chromeos-base/ec-devutils )
-	!chromeless_tty? (
-		!chromeless_tests? (
-			>=dev-cpp/gflags-2.0
-		)
-	)
-	wifi_testbed_ap? (
-		dev-python/btsocket
-	)
-	python_targets_python2_7? ( dev-lang/python:2.7 )
-	dev-lang/python:3.6
-	dev-libs/opensc
-	p2p? ( dev-python/dpkt )
-	perfetto? ( chromeos-base/perfetto )
-	cr50_onboard? ( dev-util/u2f-ref-code )
-	net-misc/rsync
-	sys-apps/memtester
-	virtual/autotest-capability
-	virtual/chromeos-bsp-test
-"
-
-# Packages needed by FAFT.
-CROS_COMMON_RDEPEND+="
-	sys-apps/hdparm
-	sys-apps/mmc-utils
-"
-
-################################################################################
-#
-# CROS_* : Dependencies for "regular" CrOS devices (coreutils, etc.)
-#
-################################################################################
-CROS_X86_RDEPEND="
-	app-benchmarks/sysbench
-	sys-apps/pciutils
-	sys-power/iasl
-	vaapi? ( media-gfx/vadumpcaps media-video/libva-utils )
-	x11-misc/read-edid
-"
-
-CROS_RDEPEND="
-	x86? ( ${CROS_X86_RDEPEND} )
-	amd64? ( ${CROS_X86_RDEPEND} )
-"
-
-CROS_RDEPEND="${CROS_RDEPEND}
-	app-admin/sudo
-	app-arch/gzip
-	app-arch/tar
-	app-benchmarks/blktests
-	app-benchmarks/blogbench
-	app-benchmarks/lmbench
-	app-benchmarks/microbenchmarks
-	app-benchmarks/pjdfstest
-	app-benchmarks/xfstests
-	app-misc/ckermit
-	opengles? ( app-misc/eglinfo )
-	app-misc/tmux
-	app-misc/utouch-evemu
-	app-mobilephone/dfu-util
-	chromeos-base/autotest-client
-	cras? ( chromeos-base/audiotest )
-	chromeos-base/avtest_label_detect
-	chromeos-base/chrome-binary-tests
-	chromeos-base/cros-camera-tool
-	chromeos-base/cros-config-test
-	!chromeless_tty? ( !chromeless_tests? ( chromeos-base/drm-tests ) )
-	chromeos-base/factory-mini
-	chromeos-base/glbench
-	chromeos-base/graphics-utils-python
-	chromeos-base/libvda-gpu-tests
-	chromeos-base/modem-diagnostics
-	chromeos-base/policy_utils
-	chromeos-base/protofiles
-	chromeos-base/pywalt
-	!chromeless_tty? ( chromeos-base/screen-capture-utils )
-	chromeos-base/secure-wipe
-	shill? (
-		chromeos-base/shill-test-scripts
-		wired_8021x? ( net-wireless/hostapd )
-	)
-	!chromeless_tests? ( chromeos-base/telemetry )
-	chromeos-base/toolchain-tests
-	vulkan? (
-		chromeos-base/vkbench
-	)
-	dev-embedded/dfu-programmer
-	dev-go/syzkaller
-	dev-libs/re2
-	dev-python/protobuf-python
-	dev-python/btsocket
-	dev-python/contextlib2
-	dev-python/dbus-python
-	dev-python/dpkt
-	dev-python/httplib2
-	dev-python/imaging
-	dev-python/jsonrpclib
-	dev-python/mkvparse
-	dev-python/netifaces
-	dev-python/pygobject
-	dev-python/pyserial
-	dev-python/pytest
-	dev-python/python-evdev
-	dev-python/python-uinput
-	dev-python/pyudev
-	dev-python/pyxattr
-	dev-python/pyyaml
-	dev-python/selenium
-	dev-python/setproctitle
-	dev-python/setuptools
-	dev-python/ws4py
-	dev-util/stressapptest
-	dev-util/trace-cmd
-	dlc? ( sys-fs/squashfs-tools )
-	games-util/joystick
-	media-gfx/imagemagick[jpeg,png,svg,tiff]
-	media-gfx/perceptualdiff
-	media-gfx/zbar
-	arc-camera3? ( media-libs/cros-camera-libcamera_connector_test )
-	arc-camera3? ( media-libs/cros-camera-libjea_test )
-	arc-camera3? ( media-libs/cros-camera-test )
-	media-libs/cros-camera-v4l2_test
-	media-libs/libexif
-	media-libs/libvpx
-	media-libs/opencv
-	media-libs/openh264
-	!chromeless_tty? ( !chromeless_tests? (
-		media-gfx/deqp
-		media-gfx/deqp-runner
-	) )
-	media-libs/tiff
-	opengles? ( media-libs/waffle )
-	opengl? ( media-libs/waffle )
-	media-sound/sox
-	net-analyzer/netperf
-	net-dialup/minicom
-	net-dns/dnsmasq
-	net-misc/dhcp
-	net-misc/iperf:2
-	net-misc/iputils
-	net-misc/openssh
-	net-misc/radvd
-	net-proxy/tinyproxy
-	wifi_hostap_test? ( net-wireless/hostap-test )
-	sci-geosciences/gpsd
-	sys-apps/coreutils
-	sys-apps/dtc
-	sys-apps/ethtool
-	sys-apps/file
-	sys-apps/findutils
-	sys-apps/kbd
-	sys-apps/shadow
-	sys-devel/binutils
-	sys-process/iotop
-	sys-process/procps
-	sys-process/psmisc
-	sys-process/time
-	x11-libs/libdrm
-	"
-
-################################################################################
-# Assemble the final RDEPEND and DEPEND variables for portage
-################################################################################
-RDEPEND="${CROS_COMMON_RDEPEND}
-	!cros_embedded? ( ${CROS_RDEPEND} )
-"
-
-# Packages that are only installed into the sysroot and are needed for running
-# unit tests
-DEPEND="
-	chromeos-base/chromite
-"
diff --git a/virtual/target-chromium-os-test/target-chromium-os-test-1-r151.ebuild b/virtual/target-chromium-os-test/target-chromium-os-test-1-r151.ebuild
new file mode 100644
index 0000000..ab62319
--- /dev/null
+++ b/virtual/target-chromium-os-test/target-chromium-os-test-1-r151.ebuild
@@ -0,0 +1,292 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="List of packages that are needed inside the Chromium OS test image;
+Note: test images are a superset of dev images."
+HOMEPAGE="https://dev.chromium.org/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+# Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os-test.
+IUSE="
+	arc-camera3
+	biod
+	-chromeless_tests
+	cheets
+	chromeless_tty
+	cr50_onboard
+	+cras
+	cros_ec
+	cros_embedded
+	dlc
+	hammerd
+	iioservice
+	ml_service
+	hps
+	nnapi
+	opengl
+	opengles
+	p2p
+	+perfetto
+	python_targets_python2_7
+	scanner
+	+shill
+	+tpm
+	tpm2
+	unibuild
+	vaapi
+	vulkan
+	wifi_hostap_test
+	wifi_testbed_ap
+	+wired_8021x
+"
+
+# Packages required to support autotest images.  Dependencies here
+# are for packages that must be present on a local device and that
+# are not downloaded by the autotest server.  This includes both
+# packages relied on by the server, as well as packages relied on by
+# specific tests.
+#
+# This package is not meant to capture tools useful for test debug;
+# use the chromeos-dev package for that purpose.
+#
+# Note that some packages used by autotest are actually built by the
+# autotest package and downloaded by the server, regardless of
+# whether the package is present on the target device; those
+# packages aren't listed here.
+#
+# Developers should be aware that packages installed by this ebuild
+# are rooted in /usr/local.  This means that libraries are installed
+# in /usr/local/lib, executables in /usr/local/bin, etc.
+#
+# TODO(jrbarnette):  It's not known definitively that the list
+# below contains no unneeded dependencies.  More work is needed to
+# determine for sure that every package listed is actually used.
+
+
+################################################################################
+#
+# CROS_COMMON_* : Dependencies common to all CrOS flavors (embedded, regular)
+#
+################################################################################
+
+CROS_COMMON_RDEPEND="
+	tpm? (
+		app-crypt/tpm-tools
+		chromeos-base/hwsec-test-utils
+		chromeos-base/tpm_softclear_utils
+	)
+	tpm2? (
+		chromeos-base/hwsec-test-utils
+		chromeos-base/tpm_softclear_utils
+	)
+	chromeos-base/chromeos-test-root
+	chromeos-base/ec-utils
+	chromeos-base/ec-utils-test
+	chromeos-base/factory-deps
+	biod? (
+		virtual/chromeos-fpmcu-test
+		chromeos-base/chromeos-fpmcu-unittests
+	)
+	hammerd? ( chromeos-base/hammerd-test-utils )
+	iioservice? ( chromeos-base/iioservice_simpleclient )
+	scanner? (
+		chromeos-base/lorgnette_cli
+		chromeos-base/sane-backends-test
+	)
+	ml_service? ( chromeos-base/ml-cmdline )
+	hps? ( chromeos-base/hps-tool )
+	nnapi? (
+		chromeos-base/aosp-frameworks-ml-nn-vts
+		chromeos-base/ml-test-assets
+	)
+	chromeos-base/recover-duts
+	chromeos-base/tast-local-test-runner
+	chromeos-base/tast-local-tests
+	chromeos-base/tast-use-flags
+	chromeos-base/verity
+	chromeos-base/vpd
+	cros_ec? ( chromeos-base/ec-devutils )
+	!chromeless_tty? (
+		!chromeless_tests? (
+			>=dev-cpp/gflags-2.0
+		)
+	)
+	wifi_testbed_ap? (
+		dev-python/btsocket
+	)
+	python_targets_python2_7? ( dev-lang/python:2.7 )
+	dev-lang/python:3.6
+	dev-libs/opensc
+	p2p? ( dev-python/dpkt )
+	perfetto? (
+		chromeos-base/perfetto
+		chromeos-base/perfetto_simple_producer
+	)
+	cr50_onboard? ( dev-util/u2f-ref-code )
+	net-misc/rsync
+	sys-apps/memtester
+	virtual/autotest-capability
+	virtual/chromeos-bsp-test
+"
+
+# Packages needed by FAFT.
+CROS_COMMON_RDEPEND+="
+	sys-apps/hdparm
+	sys-apps/mmc-utils
+"
+
+################################################################################
+#
+# CROS_* : Dependencies for "regular" CrOS devices (coreutils, etc.)
+#
+################################################################################
+CROS_X86_RDEPEND="
+	app-benchmarks/sysbench
+	sys-apps/pciutils
+	sys-power/iasl
+	vaapi? ( media-gfx/vadumpcaps media-video/libva-utils )
+	x11-misc/read-edid
+"
+
+CROS_RDEPEND="
+	x86? ( ${CROS_X86_RDEPEND} )
+	amd64? ( ${CROS_X86_RDEPEND} )
+"
+
+CROS_RDEPEND="${CROS_RDEPEND}
+	app-admin/sudo
+	app-arch/gzip
+	app-arch/tar
+	app-benchmarks/blktests
+	app-benchmarks/blogbench
+	app-benchmarks/lmbench
+	app-benchmarks/microbenchmarks
+	app-benchmarks/pjdfstest
+	app-benchmarks/xfstests
+	app-misc/ckermit
+	opengles? ( app-misc/eglinfo )
+	app-misc/tmux
+	app-misc/utouch-evemu
+	app-mobilephone/dfu-util
+	chromeos-base/autotest-client
+	cras? (
+		chromeos-base/audiotest
+		media-sound/cras_bench
+	)
+	chromeos-base/avtest_label_detect
+	chromeos-base/chrome-binary-tests
+	chromeos-base/cros-camera-tool
+	chromeos-base/cros-config-test
+	!chromeless_tty? ( !chromeless_tests? ( chromeos-base/drm-tests ) )
+	chromeos-base/factory-mini
+	chromeos-base/glbench
+	chromeos-base/graphics-utils-python
+	chromeos-base/libvda-gpu-tests
+	chromeos-base/modem-diagnostics
+	chromeos-base/policy_utils
+	chromeos-base/protofiles
+	chromeos-base/pywalt
+	!chromeless_tty? ( chromeos-base/screen-capture-utils )
+	chromeos-base/secure-wipe
+	shill? (
+		chromeos-base/shill-test-scripts
+		wired_8021x? ( net-wireless/hostapd )
+	)
+	!chromeless_tests? ( chromeos-base/telemetry )
+	chromeos-base/toolchain-tests
+	vulkan? (
+		chromeos-base/vkbench
+	)
+	dev-embedded/dfu-programmer
+	dev-go/syzkaller
+	dev-libs/re2
+	dev-python/protobuf-python
+	dev-python/btsocket
+	dev-python/contextlib2
+	dev-python/dbus-python
+	dev-python/dpkt
+	dev-python/httplib2
+	dev-python/jsonrpclib
+	dev-python/mkvparse
+	dev-python/netifaces
+	dev-python/pygobject
+	dev-python/pyserial
+	dev-python/pytest
+	dev-python/python-evdev
+	dev-python/python-uinput
+	dev-python/pyudev
+	dev-python/pyxattr
+	dev-python/pyyaml
+	dev-python/selenium
+	dev-python/setproctitle
+	dev-python/setuptools
+	dev-python/ws4py
+	!chromeless_tty? ( !chromeless_tests? ( dev-util/apitrace ) )
+	dev-util/stressapptest
+	dev-util/trace-cmd
+	dlc? ( sys-fs/squashfs-tools )
+	games-util/joystick
+	media-gfx/imagemagick[jpeg,png,svg,tiff]
+	media-gfx/perceptualdiff
+	media-gfx/zbar
+	arc-camera3? ( media-libs/cros-camera-libcamera_connector_test )
+	arc-camera3? ( media-libs/cros-camera-libjea_test )
+	arc-camera3? ( media-libs/cros-camera-test )
+	media-libs/cros-camera-v4l2_test
+	media-libs/libexif
+	media-libs/libvpx
+	media-libs/opencv
+	media-libs/openh264
+	!chromeless_tty? ( !chromeless_tests? (
+		media-gfx/deqp
+		media-gfx/deqp-runner
+	) )
+	media-libs/tiff
+	opengles? ( media-libs/waffle )
+	opengl? ( media-libs/waffle )
+	media-sound/sox
+	net-analyzer/netperf
+	net-dialup/minicom
+	net-dns/dnsmasq
+	net-misc/dhcp
+	net-misc/iperf:2
+	net-misc/iputils
+	net-misc/openssh
+	net-misc/radvd
+	net-proxy/tinyproxy
+	wifi_hostap_test? ( net-wireless/hostap-test )
+	sci-geosciences/gpsd
+	sys-apps/coreutils
+	sys-apps/dtc
+	sys-apps/ethtool
+	sys-apps/file
+	sys-apps/findutils
+	sys-apps/kbd
+	sys-apps/shadow
+	sys-devel/binutils
+	sys-process/iotop
+	sys-process/procps
+	sys-process/psmisc
+	sys-process/time
+	x11-libs/libdrm
+	"
+
+################################################################################
+# Assemble the final RDEPEND and DEPEND variables for portage
+################################################################################
+RDEPEND="${CROS_COMMON_RDEPEND}
+	!cros_embedded? ( ${CROS_RDEPEND} )
+"
diff --git a/virtual/target-chromium-os-test/target-chromium-os-test-9999.ebuild b/virtual/target-chromium-os-test/target-chromium-os-test-9999.ebuild
index 3096205..924520f 100644
--- a/virtual/target-chromium-os-test/target-chromium-os-test-9999.ebuild
+++ b/virtual/target-chromium-os-test/target-chromium-os-test-9999.ebuild
@@ -14,7 +14,7 @@
 Note: test images are a superset of dev images."
 HOMEPAGE="https://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="~*"
 # Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os-test.
@@ -29,10 +29,10 @@
 	cros_ec
 	cros_embedded
 	dlc
-	kvm_host
 	hammerd
 	iioservice
 	ml_service
+	hps
 	nnapi
 	opengl
 	opengles
@@ -105,7 +105,11 @@
 		chromeos-base/sane-backends-test
 	)
 	ml_service? ( chromeos-base/ml-cmdline )
-	nnapi? ( chromeos-base/ml-test-assets )
+	hps? ( chromeos-base/hps-tool )
+	nnapi? (
+		chromeos-base/aosp-frameworks-ml-nn-vts
+		chromeos-base/ml-test-assets
+	)
 	chromeos-base/recover-duts
 	chromeos-base/tast-local-test-runner
 	chromeos-base/tast-local-tests
@@ -125,7 +129,10 @@
 	dev-lang/python:3.6
 	dev-libs/opensc
 	p2p? ( dev-python/dpkt )
-	perfetto? ( chromeos-base/perfetto )
+	perfetto? (
+		chromeos-base/perfetto
+		chromeos-base/perfetto_simple_producer
+	)
 	cr50_onboard? ( dev-util/u2f-ref-code )
 	net-misc/rsync
 	sys-apps/memtester
@@ -173,7 +180,10 @@
 	app-misc/utouch-evemu
 	app-mobilephone/dfu-util
 	chromeos-base/autotest-client
-	cras? ( chromeos-base/audiotest )
+	cras? (
+		chromeos-base/audiotest
+		media-sound/cras_bench
+	)
 	chromeos-base/avtest_label_detect
 	chromeos-base/chrome-binary-tests
 	chromeos-base/cros-camera-tool
@@ -207,7 +217,6 @@
 	dev-python/dbus-python
 	dev-python/dpkt
 	dev-python/httplib2
-	dev-python/imaging
 	dev-python/jsonrpclib
 	dev-python/mkvparse
 	dev-python/netifaces
@@ -223,6 +232,7 @@
 	dev-python/setproctitle
 	dev-python/setuptools
 	dev-python/ws4py
+	!chromeless_tty? ( !chromeless_tests? ( dev-util/apitrace ) )
 	dev-util/stressapptest
 	dev-util/trace-cmd
 	dlc? ( sys-fs/squashfs-tools )
@@ -278,9 +288,3 @@
 RDEPEND="${CROS_COMMON_RDEPEND}
 	!cros_embedded? ( ${CROS_RDEPEND} )
 "
-
-# Packages that are only installed into the sysroot and are needed for running
-# unit tests
-DEPEND="
-	chromeos-base/chromite
-"
diff --git a/virtual/target-chromium-os/metadata.xml b/virtual/target-chromium-os/metadata.xml
index c5db02f..0c46446 100644
--- a/virtual/target-chromium-os/metadata.xml
+++ b/virtual/target-chromium-os/metadata.xml
@@ -13,6 +13,7 @@
 	<flag name='bootchart'>Enables bootchart.</flag>
 	<flag name='bootimage'>Enables firmware bootimage dependencies.</flag>
 	<flag name='compupdates'>Enable component updates.</flag>
+	<flag name="dlp">Enable Data Leak Prevention daemon</flag>
 	<flag name='cros_ec'>Enables CrOS Embedded Controller.</flag>
 	<flag name='gdmwimax'>Enables WiMax dependencies.</flag>
 	<flag name='iioservice'>Enable Chrome OS IIO sensor service daemon.</flag>
diff --git a/virtual/target-chromium-os/target-chromium-os-1-r152.ebuild b/virtual/target-chromium-os/target-chromium-os-1-r152.ebuild
deleted file mode 100644
index 6cfe64b..0000000
--- a/virtual/target-chromium-os/target-chromium-os-1-r152.ebuild
+++ /dev/null
@@ -1,341 +0,0 @@
-# Copyright 2014 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
-# the canonical empty project.
-CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
-CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
-CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
-CROS_WORKON_LOCALNAME="../platform/empty-project"
-
-inherit cros-workon
-
-DESCRIPTION="List of packages that are needed inside the Chromium OS base (release)"
-HOMEPAGE="https://dev.chromium.org/"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-# Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os instead.
-IUSE="
-	arc-camera1
-	arc-camera3
-	biod
-	bluetooth
-	bootchart
-	buffet
-	cellular
-	compupdates
-	containers
-	cr50_onboard
-	+cras
-	+crash_reporting
-	+cros_disks
-	cros_embedded
-	cups
-	+debugd
-	diagnostics
-	dlc
-	dlc_test
-	dptf
-	eclog
-	+fonts
-	fpstudy
-	fuzzer
-	fwupd
-	hammerd
-	iioservice
-	ime
-	input_devices_evdev
-	intel_lpe
-	iwlwifi_rescan
-	kerberos_daemon
-	kernel-3_8
-	kvm_host
-	manatee
-	media_perception
-	memd
-	mist
-	minios
-	modemfwd
-	ml_service
-	mtd
-	+network_time
-	nfc
-	pam
-	pciguard
-	perfetto
-	postscript
-	+power_management
-	+profile
-	racc
-	+readahead
-	scanner
-	selinux
-	+shill
-	smbprovider
-	+syslog
-	+system_locales
-	system_proxy
-	systemd
-	touchview
-	+tpm
-	-tpm2
-	+trim_supported
-	typecd
-	usb_bouncer
-	usbguard
-	+vpn
-	watchdog
-"
-
-REQUIRED_USE="
-	cellular? ( shill )
-	modemfwd? ( cellular )
-"
-
-################################################################################
-#
-# READ THIS BEFORE ADDING PACKAGES TO THIS EBUILD!
-#
-################################################################################
-#
-# Every chromeos dependency (along with its dependencies) is included in the
-# release image -- more packages contribute to longer build times, a larger
-# image, slower and bigger auto-updates, increased security risks, etc. Consider
-# the following before adding a new package:
-#
-# 1. Does the package really need to be part of the release image?
-#
-# Some packages can be included only in the developer or test images, i.e., the
-# target-os-dev or chromeos-test ebuilds. If the package will eventually be used
-# in the release but it's still under development, consider adding it to
-# target-os-dev initially until it's ready for production.
-#
-# 2. Why is the package a direct dependency of the chromeos ebuild?
-#
-# It makes sense for some packages to be included as a direct dependency of the
-# chromeos ebuild but for most it doesn't. The package should be added as a
-# direct dependency of the ebuilds for all packages that actually use it -- in
-# time, this ensures correct builds and allows easier cleanup of obsolete
-# packages. For example, if a utility will be invoked by the session manager,
-# its package should be added as a dependency in the chromeos-login ebuild. If
-# the package really needs to be a direct dependency of the chromeos ebuild,
-# consider adding a comment why the package is needed and how it's used.
-#
-# 3. Are all default package features and dependent packages needed?
-#
-# The release image should include only packages and features that are needed in
-# the production system. Often packages pull in features and additional packages
-# that are never used. Review these and consider pruning them (e.g., through USE
-# flags).
-#
-# 4. What is the impact on the image size?
-#
-# Before adding a package, evaluate the impact on the image size. If the package
-# and its dependencies increase the image size significantly, consider
-# alternative packages or approaches.
-#
-# 5. Is the package needed on all targets?
-#
-# If the package is needed only on some target boards, consider making it
-# conditional through USE flags in the board overlays.
-#
-# Variable Naming Convention:
-# ---------------------------
-# CROS_COMMON_* : Dependencies common to all CrOS flavors
-# CROS_* : Dependencies for "regular" CrOS devices (coreutils, etc.)
-################################################################################
-
-################################################################################
-#
-# Per Package Comments:
-# --------------------
-# Please add any comments specific to why certain packages are
-# pulled into the dependecy here. This is optional and required only when
-# the dependency isn't obvious
-#
-################################################################################
-
-################################################################################
-#
-# Dependencies common to all CrOS flavors (embedded, regular).
-# Everything in here should be behind a USE flag.
-#
-################################################################################
-RDEPEND="
-	input_devices_evdev? ( app-misc/evtest )
-	syslog? ( app-admin/rsyslog chromeos-base/croslog sys-apps/journald )
-	biod? ( chromeos-base/biod )
-	fpstudy? ( chromeos-base/fingerprint_study )
-	compupdates? ( chromeos-base/imageloader )
-	dlc? ( chromeos-base/dlcservice )
-	dlc_test? (
-		chromeos-base/sample-dlc
-		chromeos-base/test-dlc
-	)
-	bluetooth? ( chromeos-base/bluetooth )
-	bootchart? ( app-benchmarks/bootchart )
-	tpm? (
-		!tpm2? ( app-crypt/trousers )
-		chromeos-base/chaps
-	)
-	tpm2? ( chromeos-base/trunks )
-	pam? ( virtual/chromeos-auth-config )
-	fonts? ( chromeos-base/chromeos-fonts )
-	chromeos-base/chromeos-installer
-	chromeos-base/dev-install
-	perfetto? ( chromeos-base/perfetto )
-	crash_reporting? ( chromeos-base/crash-reporter )
-	mist? ( chromeos-base/mist )
-	modemfwd? ( chromeos-base/modemfwd )
-	buffet? ( chromeos-base/buffet )
-	containers? ( chromeos-base/run_oci )
-	cros_disks? ( chromeos-base/cros-disks )
-	debugd? ( chromeos-base/debugd )
-	diagnostics? ( chromeos-base/diagnostics )
-	kerberos_daemon? ( chromeos-base/kerberos )
-	scanner? ( chromeos-base/lorgnette )
-	ml_service? ( chromeos-base/ml )
-	hammerd? ( chromeos-base/hammerd )
-	racc? (
-		chromeos-base/hardware_verifier
-		chromeos-base/runtime_probe
-	)
-	iioservice? ( chromeos-base/iioservice )
-	media_perception? ( chromeos-base/mri_package )
-	memd? ( chromeos-base/memd )
-	power_management? ( chromeos-base/power_manager )
-	!chromeos-base/platform2
-	profile? ( chromeos-base/quipper )
-	selinux? ( chromeos-base/selinux-policy )
-	shill? ( >=chromeos-base/shill-0.0.1-r2205 )
-	manatee? ( chromeos-base/sirenia )
-	usb_bouncer? ( chromeos-base/usb_bouncer )
-	chromeos-base/update_engine
-	vpn? ( chromeos-base/vpn-manager )
-	cras? (
-		media-sound/adhd
-		media-sound/cras_tests
-	)
-	trim_supported? ( chromeos-base/chromeos-trim )
-	network_time? ( net-misc/tlsdate )
-	iwlwifi_rescan? ( net-wireless/iwlwifi_rescan )
-	nfc? ( net-wireless/neard chromeos-base/neard-configs )
-	readahead? ( sys-apps/ureadahead )
-	pam? ( sys-auth/pam_pwdfile )
-	watchdog? ( sys-apps/daisydog )
-	mtd? ( sys-fs/mtd-utils )
-	cups? ( virtual/chromium-os-printing )
-	touchview? ( chromeos-base/chromeos-accelerometer-init )
-	system_locales? ( chromeos-base/system-locales )
-	system_proxy? ( chromeos-base/system-proxy )
-	eclog? ( chromeos-base/timberslide )
-	chromeos-base/chromeos-machine-id-regen
-	systemd? ( sys-apps/systemd )
-	usbguard? ( sys-apps/usbguard )
-	kvm_host? (
-		chromeos-base/crosdns
-		chromeos-base/crostini_client
-		chromeos-base/vm_host_tools
-		dlc? (
-			chromeos-base/termina-dlc
-		)
-	)
-	sys-kernel/linux-firmware
-	virtual/chromeos-bsp
-	virtual/chromeos-firewall
-	virtual/chromeos-firmware
-	virtual/chromeos-interface
-	virtual/chromeos-regions
-	virtual/implicit-system
-	virtual/linux-sources
-	virtual/modutils
-	virtual/service-manager
-	cr50_onboard? (
-		chromeos-base/chromeos-cr50
-		chromeos-base/u2fd
-	)
-	ime? (
-		app-i18n/chinese-input
-		app-i18n/keyboard-input
-		app-i18n/japanese-input
-		app-i18n/hangul-input
-	)
-	fuzzer? ( virtual/target-fuzzers )
-	!dev-python/socksipy
-	arc-camera1? ( chromeos-base/cros-camera )
-	arc-camera3? ( chromeos-base/cros-camera )
-	fwupd? ( sys-apps/fwupd )
-	smbprovider? (
-		chromeos-base/smbfs
-		chromeos-base/smbprovider
-	)
-	typecd? ( chromeos-base/typecd )
-	pciguard? ( chromeos-base/pciguard )
-	minios? ( chromeos-base/minios )
-"
-
-################################################################################
-#
-# CROS_* : Dependencies for "regular" CrOS devices (coreutils, X etc)
-#
-# Comments on individual packages:
-# --------------------------------
-# app-editors/vim:
-# Specifically include the editor we want to appear in chromeos images, so that
-# it is deterministic which editor is chosen by 'virtual/editor' dependencies
-# (such as in the 'sudo' package).  See crosbug.com/5777.
-#
-# app-shells/bash:
-# We depend on dash for the /bin/sh shell for runtime speeds, but we also
-# depend on bash to make the dev mode experience better.  We do not enable
-# things like line editing in dash, so its interactive mode is very bare.
-################################################################################
-
-CROS_X86_RDEPEND="
-	dptf? ( virtual/dptf )
-	intel_lpe? ( virtual/lpe-support )
-"
-
-CROS_RDEPEND="
-	x86? ( ${CROS_X86_RDEPEND} )
-	amd64? ( ${CROS_X86_RDEPEND} )
-"
-
-# Anything behind a USE flag belongs in the main RDEPEND list above.
-# New packages usually should be behind a USE flag.
-CROS_RDEPEND="${CROS_RDEPEND}
-	app-arch/tar
-	app-editors/vim
-	app-shells/bash
-	chromeos-base/common-assets
-	chromeos-base/chromeos-imageburner
-	chromeos-base/crosh
-	chromeos-base/crosh-extension
-	chromeos-base/inputcontrol
-	chromeos-base/mtpd
-	chromeos-base/permission_broker
-	chromeos-base/userfeedback
-	chromeos-base/vboot_reference
-	chromeos-base/vpd
-	bluetooth? ( kernel-3_8? ( net-wireless/ath3k ) )
-	net-wireless/crda
-	sys-apps/dbus
-	sys-apps/flashrom
-	sys-apps/iproute2
-	sys-apps/pv
-	sys-apps/rootdev
-	!systemd? (
-		sys-apps/systemd-tmpfiles
-		sys-apps/upstart
-	)
-	sys-fs/e2fsprogs
-	virtual/assets
-	virtual/cheets
-	virtual/udev
-"
-
-RDEPEND+="!cros_embedded? ( ${CROS_RDEPEND} )"
diff --git a/virtual/target-chromium-os/target-chromium-os-1-r172.ebuild b/virtual/target-chromium-os/target-chromium-os-1-r172.ebuild
new file mode 100644
index 0000000..ed5e384
--- /dev/null
+++ b/virtual/target-chromium-os/target-chromium-os-1-r172.ebuild
@@ -0,0 +1,363 @@
+# Copyright 2014 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+# This ebuild only cares about its own FILESDIR and ebuild file, so it tracks
+# the canonical empty project.
+CROS_WORKON_COMMIT="3a01873e59ec25ecb10d1b07ff9816e69f3bbfee"
+CROS_WORKON_TREE="8ce164efd78fcb4a68e898d8c92c7579657a49b1"
+CROS_WORKON_PROJECT="chromiumos/infra/build/empty-project"
+CROS_WORKON_LOCALNAME="../platform/empty-project"
+
+inherit cros-workon
+
+DESCRIPTION="List of packages that are needed inside the Chromium OS base (release)"
+HOMEPAGE="https://dev.chromium.org/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+# Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os instead.
+# Note: You almost never want to use + here to enable settings by default.
+# Please see https://crrev.com/c/2776455 as an example instead.
+IUSE="
+	arc-camera1
+	arc-camera3
+	biod
+	bluetooth
+	bootchart
+	buffet
+	cellular
+	compupdates
+	containers
+	cr50_onboard
+	+cras
+	+crash_reporting
+	+cros_disks
+	cros_embedded
+	cups
+	+debugd
+	diagnostics
+	dlc
+	dlc_test
+	dlp
+	dns-proxy
+	dptf
+	eclog
+	+fonts
+	fpstudy
+	fuzzer
+	fwupd
+	hammerd
+	iioservice
+	ime
+	input_devices_evdev
+	intel_lpe
+	iwlwifi_rescan
+	kerberos_daemon
+	kvm_host
+	lacros_rootfs
+	manatee
+	media_perception
+	memd
+	missive
+	mist
+	minios
+	secanomalyd
+	modemfwd
+	ml_service
+	hps
+	mtd
+	+network_time
+	nfc
+	os_install_service
+	pam
+	pciguard
+	perfetto
+	postscript
+	+power_management
+	+profile
+	racc
+	+readahead
+	resourced
+	rmad
+	scanner
+	selinux
+	+shill
+	sirenia
+	smbprovider
+	+syslog
+	+system_locales
+	system_proxy
+	systemd
+	ti50_onboard
+	touchview
+	+tpm
+	-tpm2
+	+trim_supported
+	typecd
+	usb_bouncer
+	usbguard
+	+vpn
+	watchdog
+"
+
+REQUIRED_USE="
+	cellular? ( shill )
+	modemfwd? ( cellular )
+"
+
+################################################################################
+#
+# READ THIS BEFORE ADDING PACKAGES TO THIS EBUILD!
+#
+################################################################################
+#
+# Every chromeos dependency (along with its dependencies) is included in the
+# release image -- more packages contribute to longer build times, a larger
+# image, slower and bigger auto-updates, increased security risks, etc. Consider
+# the following before adding a new package:
+#
+# 1. Does the package really need to be part of the release image?
+#
+# Some packages can be included only in the developer or test images, i.e., the
+# target-os-dev or chromeos-test ebuilds. If the package will eventually be used
+# in the release but it's still under development, consider adding it to
+# target-os-dev initially until it's ready for production.
+#
+# 2. Why is the package a direct dependency of the chromeos ebuild?
+#
+# It makes sense for some packages to be included as a direct dependency of the
+# chromeos ebuild but for most it doesn't. The package should be added as a
+# direct dependency of the ebuilds for all packages that actually use it -- in
+# time, this ensures correct builds and allows easier cleanup of obsolete
+# packages. For example, if a utility will be invoked by the session manager,
+# its package should be added as a dependency in the chromeos-login ebuild. If
+# the package really needs to be a direct dependency of the chromeos ebuild,
+# consider adding a comment why the package is needed and how it's used.
+#
+# 3. Are all default package features and dependent packages needed?
+#
+# The release image should include only packages and features that are needed in
+# the production system. Often packages pull in features and additional packages
+# that are never used. Review these and consider pruning them (e.g., through USE
+# flags).
+#
+# 4. What is the impact on the image size?
+#
+# Before adding a package, evaluate the impact on the image size. If the package
+# and its dependencies increase the image size significantly, consider
+# alternative packages or approaches.
+#
+# 5. Is the package needed on all targets?
+#
+# If the package is needed only on some target boards, consider making it
+# conditional through USE flags in the board overlays.
+#
+# Variable Naming Convention:
+# ---------------------------
+# CROS_COMMON_* : Dependencies common to all CrOS flavors
+# CROS_* : Dependencies for "regular" CrOS devices (coreutils, etc.)
+################################################################################
+
+################################################################################
+#
+# Per Package Comments:
+# --------------------
+# Please add any comments specific to why certain packages are
+# pulled into the dependecy here. This is optional and required only when
+# the dependency isn't obvious
+#
+################################################################################
+
+################################################################################
+#
+# Dependencies common to all CrOS flavors (embedded, regular).
+# Everything in here should be behind a USE flag.
+#
+################################################################################
+RDEPEND="
+	input_devices_evdev? ( app-misc/evtest )
+	syslog? ( app-admin/rsyslog chromeos-base/croslog )
+	biod? ( chromeos-base/biod )
+	fpstudy? ( chromeos-base/fingerprint_study )
+	compupdates? ( chromeos-base/imageloader )
+	dlc? ( chromeos-base/dlcservice )
+	dlc_test? (
+		chromeos-base/sample-dlc
+		chromeos-base/test-dlc
+	)
+	bluetooth? ( net-wireless/bluez )
+	bootchart? ( app-benchmarks/bootchart )
+	tpm? (
+		!tpm2? ( app-crypt/trousers )
+		chromeos-base/chaps
+	)
+	tpm2? ( chromeos-base/trunks )
+	pam? ( virtual/chromeos-auth-config )
+	fonts? ( chromeos-base/chromeos-fonts )
+	chromeos-base/chromeos-installer
+	chromeos-base/dev-install
+	os_install_service? ( chromeos-base/os_install_service )
+	perfetto? ( chromeos-base/perfetto )
+	crash_reporting? ( chromeos-base/crash-reporter )
+	missive? ( chromeos-base/missive )
+	mist? ( chromeos-base/mist )
+	modemfwd? ( chromeos-base/modemfwd )
+	buffet? ( chromeos-base/buffet )
+	containers? ( chromeos-base/run_oci )
+	cros_disks? ( chromeos-base/cros-disks )
+	debugd? ( chromeos-base/debugd )
+	diagnostics? ( chromeos-base/diagnostics )
+	dlp? ( chromeos-base/dlp )
+	kerberos_daemon? ( chromeos-base/kerberos )
+	scanner? ( chromeos-base/lorgnette )
+	ml_service? ( chromeos-base/ml )
+	hps? ( chromeos-base/hpsd )
+	hammerd? ( chromeos-base/hammerd )
+	racc? (
+		chromeos-base/hardware_verifier
+		chromeos-base/runtime_probe
+	)
+	rmad? ( chromeos-base/rmad )
+	iioservice? ( chromeos-base/iioservice )
+	media_perception? ( chromeos-base/mri_package )
+	memd? ( chromeos-base/memd )
+	power_management? ( chromeos-base/power_manager )
+	!chromeos-base/platform2
+	profile? ( chromeos-base/quipper )
+	resourced? ( chromeos-base/resourced )
+	selinux? ( chromeos-base/selinux-policy )
+	shill? ( >=chromeos-base/shill-0.0.1-r2205 )
+	manatee? ( chromeos-base/sirenia )
+	sirenia? ( chromeos-base/sirenia )
+	usb_bouncer? ( chromeos-base/usb_bouncer )
+	chromeos-base/update_engine
+	vpn? ( chromeos-base/vpn-manager )
+	cras? (
+		media-sound/adhd
+		media-sound/cras_tests
+	)
+	trim_supported? ( chromeos-base/chromeos-trim )
+	network_time? ( net-misc/tlsdate )
+	iwlwifi_rescan? ( net-wireless/iwlwifi_rescan )
+	nfc? ( net-wireless/neard chromeos-base/neard-configs )
+	readahead? ( sys-apps/ureadahead )
+	pam? ( sys-auth/pam_pwdfile )
+	watchdog? ( sys-apps/daisydog )
+	mtd? ( sys-fs/mtd-utils )
+	cups? ( virtual/chromium-os-printing )
+	touchview? (
+		!iioservice? ( chromeos-base/chromeos-accelerometer-init )
+	)
+	system_locales? ( chromeos-base/system-locales )
+	system_proxy? ( chromeos-base/system-proxy )
+	eclog? ( chromeos-base/timberslide )
+	chromeos-base/chromeos-machine-id-regen
+	systemd? ( sys-apps/systemd )
+	!systemd? ( sys-apps/systemd-tmpfiles )
+	usbguard? ( sys-apps/usbguard )
+	kvm_host? (
+		chromeos-base/crosdns
+		chromeos-base/crostini_client
+		chromeos-base/vm_host_tools
+		chromeos-base/termina-dlc
+	)
+	sys-kernel/linux-firmware
+	virtual/chromeos-bsp
+	virtual/chromeos-firewall
+	virtual/chromeos-firmware
+	virtual/chromeos-interface
+	virtual/chromeos-regions
+	virtual/implicit-system
+	virtual/linux-sources
+	virtual/modutils
+	virtual/service-manager
+	cr50_onboard? (
+		chromeos-base/chromeos-cr50
+		chromeos-base/u2fd
+	)
+	ti50_onboard? (
+		chromeos-base/chromeos-ti50
+		chromeos-base/u2fd
+	)
+	ime? (
+		app-i18n/chinese-input
+		app-i18n/keyboard-input
+		app-i18n/japanese-input
+		app-i18n/hangul-input
+	)
+	fuzzer? ( virtual/target-fuzzers )
+	!dev-python/socksipy
+	arc-camera1? ( chromeos-base/cros-camera )
+	arc-camera3? ( chromeos-base/cros-camera )
+	fwupd? ( sys-apps/fwupd )
+	smbprovider? (
+		chromeos-base/smbfs
+		chromeos-base/smbprovider
+	)
+	typecd? ( chromeos-base/typecd )
+	pciguard? ( chromeos-base/pciguard )
+	minios? ( chromeos-base/minios )
+	secanomalyd? ( chromeos-base/secanomalyd )
+	lacros_rootfs? ( chromeos-base/chromeos-lacros )
+	dns-proxy? ( chromeos-base/dns-proxy )
+"
+
+################################################################################
+#
+# CROS_* : Dependencies for "regular" CrOS devices (coreutils, X etc)
+#
+# Comments on individual packages:
+# --------------------------------
+# app-editors/vim:
+# Specifically include the editor we want to appear in chromeos images, so that
+# it is deterministic which editor is chosen by 'virtual/editor' dependencies
+# (such as in the 'sudo' package).  See crosbug.com/5777.
+#
+# app-shells/bash:
+# We depend on dash for the /bin/sh shell for runtime speeds, but we also
+# depend on bash to make the dev mode experience better.  We do not enable
+# things like line editing in dash, so its interactive mode is very bare.
+################################################################################
+
+CROS_X86_RDEPEND="
+	dptf? ( virtual/dptf )
+	intel_lpe? ( virtual/lpe-support )
+"
+
+CROS_RDEPEND="
+	x86? ( ${CROS_X86_RDEPEND} )
+	amd64? ( ${CROS_X86_RDEPEND} )
+"
+
+# Anything behind a USE flag belongs in the main RDEPEND list above.
+# New packages usually should be behind a USE flag.
+CROS_RDEPEND="${CROS_RDEPEND}
+	app-arch/tar
+	app-editors/vim
+	app-shells/bash
+	chromeos-base/common-assets
+	chromeos-base/chromeos-imageburner
+	chromeos-base/crosh
+	chromeos-base/crosh-extension
+	chromeos-base/inputcontrol
+	chromeos-base/mtpd
+	chromeos-base/permission_broker
+	chromeos-base/userfeedback
+	chromeos-base/vboot_reference
+	chromeos-base/vpd
+	net-wireless/crda
+	sys-apps/dbus
+	sys-apps/flashrom
+	sys-apps/iproute2
+	sys-apps/rootdev
+	!systemd? ( sys-apps/upstart )
+	sys-fs/e2fsprogs
+	virtual/assets
+	virtual/cheets
+	virtual/udev
+"
+
+RDEPEND+="!cros_embedded? ( ${CROS_RDEPEND} )"
diff --git a/virtual/target-chromium-os/target-chromium-os-9999.ebuild b/virtual/target-chromium-os/target-chromium-os-9999.ebuild
index 6786a10..70e4321 100644
--- a/virtual/target-chromium-os/target-chromium-os-9999.ebuild
+++ b/virtual/target-chromium-os/target-chromium-os-9999.ebuild
@@ -13,10 +13,12 @@
 DESCRIPTION="List of packages that are needed inside the Chromium OS base (release)"
 HOMEPAGE="https://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="~*"
 # Note: Do not utilize USE=internal here.  Update virtual/target-chrome-os instead.
+# Note: You almost never want to use + here to enable settings by default.
+# Please see https://crrev.com/c/2776455 as an example instead.
 IUSE="
 	arc-camera1
 	arc-camera3
@@ -37,6 +39,8 @@
 	diagnostics
 	dlc
 	dlc_test
+	dlp
+	dns-proxy
 	dptf
 	eclog
 	+fonts
@@ -50,18 +54,22 @@
 	intel_lpe
 	iwlwifi_rescan
 	kerberos_daemon
-	kernel-3_8
 	kvm_host
+	lacros_rootfs
 	manatee
 	media_perception
 	memd
+	missive
 	mist
 	minios
+	secanomalyd
 	modemfwd
 	ml_service
+	hps
 	mtd
 	+network_time
 	nfc
+	os_install_service
 	pam
 	pciguard
 	perfetto
@@ -70,14 +78,18 @@
 	+profile
 	racc
 	+readahead
+	resourced
+	rmad
 	scanner
 	selinux
 	+shill
+	sirenia
 	smbprovider
 	+syslog
 	+system_locales
 	system_proxy
 	systemd
+	ti50_onboard
 	touchview
 	+tpm
 	-tpm2
@@ -165,7 +177,7 @@
 ################################################################################
 RDEPEND="
 	input_devices_evdev? ( app-misc/evtest )
-	syslog? ( app-admin/rsyslog chromeos-base/croslog sys-apps/journald )
+	syslog? ( app-admin/rsyslog chromeos-base/croslog )
 	biod? ( chromeos-base/biod )
 	fpstudy? ( chromeos-base/fingerprint_study )
 	compupdates? ( chromeos-base/imageloader )
@@ -174,7 +186,7 @@
 		chromeos-base/sample-dlc
 		chromeos-base/test-dlc
 	)
-	bluetooth? ( chromeos-base/bluetooth )
+	bluetooth? ( net-wireless/bluez )
 	bootchart? ( app-benchmarks/bootchart )
 	tpm? (
 		!tpm2? ( app-crypt/trousers )
@@ -185,8 +197,10 @@
 	fonts? ( chromeos-base/chromeos-fonts )
 	chromeos-base/chromeos-installer
 	chromeos-base/dev-install
+	os_install_service? ( chromeos-base/os_install_service )
 	perfetto? ( chromeos-base/perfetto )
 	crash_reporting? ( chromeos-base/crash-reporter )
+	missive? ( chromeos-base/missive )
 	mist? ( chromeos-base/mist )
 	modemfwd? ( chromeos-base/modemfwd )
 	buffet? ( chromeos-base/buffet )
@@ -194,23 +208,28 @@
 	cros_disks? ( chromeos-base/cros-disks )
 	debugd? ( chromeos-base/debugd )
 	diagnostics? ( chromeos-base/diagnostics )
+	dlp? ( chromeos-base/dlp )
 	kerberos_daemon? ( chromeos-base/kerberos )
 	scanner? ( chromeos-base/lorgnette )
 	ml_service? ( chromeos-base/ml )
+	hps? ( chromeos-base/hpsd )
 	hammerd? ( chromeos-base/hammerd )
 	racc? (
 		chromeos-base/hardware_verifier
 		chromeos-base/runtime_probe
 	)
+	rmad? ( chromeos-base/rmad )
 	iioservice? ( chromeos-base/iioservice )
 	media_perception? ( chromeos-base/mri_package )
 	memd? ( chromeos-base/memd )
 	power_management? ( chromeos-base/power_manager )
 	!chromeos-base/platform2
 	profile? ( chromeos-base/quipper )
+	resourced? ( chromeos-base/resourced )
 	selinux? ( chromeos-base/selinux-policy )
 	shill? ( >=chromeos-base/shill-0.0.1-r2205 )
 	manatee? ( chromeos-base/sirenia )
+	sirenia? ( chromeos-base/sirenia )
 	usb_bouncer? ( chromeos-base/usb_bouncer )
 	chromeos-base/update_engine
 	vpn? ( chromeos-base/vpn-manager )
@@ -227,20 +246,21 @@
 	watchdog? ( sys-apps/daisydog )
 	mtd? ( sys-fs/mtd-utils )
 	cups? ( virtual/chromium-os-printing )
-	touchview? ( chromeos-base/chromeos-accelerometer-init )
+	touchview? (
+		!iioservice? ( chromeos-base/chromeos-accelerometer-init )
+	)
 	system_locales? ( chromeos-base/system-locales )
 	system_proxy? ( chromeos-base/system-proxy )
 	eclog? ( chromeos-base/timberslide )
 	chromeos-base/chromeos-machine-id-regen
 	systemd? ( sys-apps/systemd )
+	!systemd? ( sys-apps/systemd-tmpfiles )
 	usbguard? ( sys-apps/usbguard )
 	kvm_host? (
 		chromeos-base/crosdns
 		chromeos-base/crostini_client
 		chromeos-base/vm_host_tools
-		dlc? (
-			chromeos-base/termina-dlc
-		)
+		chromeos-base/termina-dlc
 	)
 	sys-kernel/linux-firmware
 	virtual/chromeos-bsp
@@ -256,6 +276,10 @@
 		chromeos-base/chromeos-cr50
 		chromeos-base/u2fd
 	)
+	ti50_onboard? (
+		chromeos-base/chromeos-ti50
+		chromeos-base/u2fd
+	)
 	ime? (
 		app-i18n/chinese-input
 		app-i18n/keyboard-input
@@ -274,6 +298,9 @@
 	typecd? ( chromeos-base/typecd )
 	pciguard? ( chromeos-base/pciguard )
 	minios? ( chromeos-base/minios )
+	secanomalyd? ( chromeos-base/secanomalyd )
+	lacros_rootfs? ( chromeos-base/chromeos-lacros )
+	dns-proxy? ( chromeos-base/dns-proxy )
 "
 
 ################################################################################
@@ -319,17 +346,12 @@
 	chromeos-base/userfeedback
 	chromeos-base/vboot_reference
 	chromeos-base/vpd
-	bluetooth? ( kernel-3_8? ( net-wireless/ath3k ) )
 	net-wireless/crda
 	sys-apps/dbus
 	sys-apps/flashrom
 	sys-apps/iproute2
-	sys-apps/pv
 	sys-apps/rootdev
-	!systemd? (
-		sys-apps/systemd-tmpfiles
-		sys-apps/upstart
-	)
+	!systemd? ( sys-apps/upstart )
 	sys-fs/e2fsprogs
 	virtual/assets
 	virtual/cheets
diff --git a/virtual/target-fuzzers/target-fuzzers-1-r2.ebuild b/virtual/target-fuzzers/target-fuzzers-1-r4.ebuild
similarity index 100%
rename from virtual/target-fuzzers/target-fuzzers-1-r2.ebuild
rename to virtual/target-fuzzers/target-fuzzers-1-r4.ebuild
diff --git a/virtual/target-fuzzers/target-fuzzers-1.ebuild b/virtual/target-fuzzers/target-fuzzers-1.ebuild
index 48eac20..c0c66e1 100644
--- a/virtual/target-fuzzers/target-fuzzers-1.ebuild
+++ b/virtual/target-fuzzers/target-fuzzers-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright 2018 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 
 DESCRIPTION="List of packages that should be fuzzed"
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 
diff --git a/virtual/target-initramfs/OWNERS b/virtual/target-initramfs/OWNERS
new file mode 100644
index 0000000..a06af34
--- /dev/null
+++ b/virtual/target-initramfs/OWNERS
@@ -0,0 +1,2 @@
+include chromiumos/platform/initramfs:/OWNERS
+include chromiumos/chromite:/OWNERS.au
diff --git a/virtual/target-initramfs/target-initramfs-1-r1.ebuild b/virtual/target-initramfs/target-initramfs-1-r1.ebuild
new file mode 120000
index 0000000..aff2d9e
--- /dev/null
+++ b/virtual/target-initramfs/target-initramfs-1-r1.ebuild
@@ -0,0 +1 @@
+target-initramfs-1.ebuild
\ No newline at end of file
diff --git a/virtual/target-initramfs/target-initramfs-1.ebuild b/virtual/target-initramfs/target-initramfs-1.ebuild
new file mode 100644
index 0000000..06d2e54
--- /dev/null
+++ b/virtual/target-initramfs/target-initramfs-1.ebuild
@@ -0,0 +1,14 @@
+# Copyright 2021 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="7"
+
+DESCRIPTION="List of packages that make up the initramfs."
+HOMEPAGE="http://dev.chromium.org/"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="virtual/target-chromium-os-initramfs"
diff --git a/virtual/target-os-dev/target-os-dev-1-r4.ebuild b/virtual/target-os-dev/target-os-dev-1-r6.ebuild
similarity index 100%
rename from virtual/target-os-dev/target-os-dev-1-r4.ebuild
rename to virtual/target-os-dev/target-os-dev-1-r6.ebuild
diff --git a/virtual/target-os-dev/target-os-dev-1.ebuild b/virtual/target-os-dev/target-os-dev-1.ebuild
index 68c5f25..a76e04d 100644
--- a/virtual/target-os-dev/target-os-dev-1.ebuild
+++ b/virtual/target-os-dev/target-os-dev-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 DESCRIPTION="List of additional packages for the developer OS image;
 by default, we build a Chromium OS dev image.
@@ -9,7 +9,7 @@
 base image as well."
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/target-os-factory-shim/target-os-factory-shim-1-r1.ebuild b/virtual/target-os-factory-shim/target-os-factory-shim-1-r3.ebuild
similarity index 100%
rename from virtual/target-os-factory-shim/target-os-factory-shim-1-r1.ebuild
rename to virtual/target-os-factory-shim/target-os-factory-shim-1-r3.ebuild
diff --git a/virtual/target-os-factory-shim/target-os-factory-shim-1.ebuild b/virtual/target-os-factory-shim/target-os-factory-shim-1.ebuild
index 39db6ff..ae22649 100644
--- a/virtual/target-os-factory-shim/target-os-factory-shim-1.ebuild
+++ b/virtual/target-os-factory-shim/target-os-factory-shim-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2016 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="List of packages that make up the factory shim OS image;
 by default, we build a Chromium OS factory shim image"
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/target-os-factory/target-os-factory-1-r1.ebuild b/virtual/target-os-factory/target-os-factory-1-r3.ebuild
similarity index 100%
rename from virtual/target-os-factory/target-os-factory-1-r1.ebuild
rename to virtual/target-os-factory/target-os-factory-1-r3.ebuild
diff --git a/virtual/target-os-factory/target-os-factory-1.ebuild b/virtual/target-os-factory/target-os-factory-1.ebuild
index 64cc362..183bc3b 100644
--- a/virtual/target-os-factory/target-os-factory-1.ebuild
+++ b/virtual/target-os-factory/target-os-factory-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2016 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="List of packages that make up the factory test OS image;
 by default, we build a Chromium OS factory test image"
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/target-os-test/target-os-test-1-r3.ebuild b/virtual/target-os-test/target-os-test-1-r5.ebuild
similarity index 100%
rename from virtual/target-os-test/target-os-test-1-r3.ebuild
rename to virtual/target-os-test/target-os-test-1-r5.ebuild
diff --git a/virtual/target-os-test/target-os-test-1.ebuild b/virtual/target-os-test/target-os-test-1.ebuild
index 107379c..91f4d2d 100644
--- a/virtual/target-os-test/target-os-test-1.ebuild
+++ b/virtual/target-os-test/target-os-test-1.ebuild
@@ -1,7 +1,7 @@
 # Copyright 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 DESCRIPTION="List of additional packages for the test OS image;
 by default, we build a Chromium OS test image.
@@ -9,7 +9,7 @@
 the dev image (and by extension the base image) as well."
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/target-os/target-os-1-r3.ebuild b/virtual/target-os/target-os-1-r5.ebuild
similarity index 100%
rename from virtual/target-os/target-os-1-r3.ebuild
rename to virtual/target-os/target-os-1-r5.ebuild
diff --git a/virtual/target-os/target-os-1.ebuild b/virtual/target-os/target-os-1.ebuild
index 8427a30..7f43fe9 100644
--- a/virtual/target-os/target-os-1.ebuild
+++ b/virtual/target-os/target-os-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="List of packages that make up the base OS image;
 by default, we build a Chromium OS image"
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/target-sdk-nobdeps/target-sdk-nobdeps-1-r1.ebuild b/virtual/target-sdk-nobdeps/target-sdk-nobdeps-1-r3.ebuild
similarity index 100%
rename from virtual/target-sdk-nobdeps/target-sdk-nobdeps-1-r1.ebuild
rename to virtual/target-sdk-nobdeps/target-sdk-nobdeps-1-r3.ebuild
diff --git a/virtual/target-sdk-nobdeps/target-sdk-nobdeps-1.ebuild b/virtual/target-sdk-nobdeps/target-sdk-nobdeps-1.ebuild
index c31e519..f638489 100644
--- a/virtual/target-sdk-nobdeps/target-sdk-nobdeps-1.ebuild
+++ b/virtual/target-sdk-nobdeps/target-sdk-nobdeps-1.ebuild
@@ -1,14 +1,14 @@
 # Copyright 2018 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="6"
+EAPI="7"
 
 DESCRIPTION="List of packages that are needed inside the SDK, but where we only
 want to install a binpkg.  We never want to install build-time deps or recompile
 from source unless the user explicitly requests it."
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/target-sdk-post-cross/target-sdk-post-cross-1-r1.ebuild b/virtual/target-sdk-post-cross/target-sdk-post-cross-1-r3.ebuild
similarity index 100%
rename from virtual/target-sdk-post-cross/target-sdk-post-cross-1-r1.ebuild
rename to virtual/target-sdk-post-cross/target-sdk-post-cross-1-r3.ebuild
diff --git a/virtual/target-sdk-post-cross/target-sdk-post-cross-1.ebuild b/virtual/target-sdk-post-cross/target-sdk-post-cross-1.ebuild
index d772c76..ced8d34 100644
--- a/virtual/target-sdk-post-cross/target-sdk-post-cross-1.ebuild
+++ b/virtual/target-sdk-post-cross/target-sdk-post-cross-1.ebuild
@@ -1,14 +1,14 @@
 # Copyright 2017 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 
 DESCRIPTION="List of packages that are needed inside the SDK, but after we've
 built all the toolchain packages that we install separately via binpkgs.  This
 avoids circular dependencies when bootstrapping."
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/target-sdk/target-sdk-1-r1.ebuild b/virtual/target-sdk/target-sdk-1-r3.ebuild
similarity index 100%
rename from virtual/target-sdk/target-sdk-1-r1.ebuild
rename to virtual/target-sdk/target-sdk-1-r3.ebuild
diff --git a/virtual/target-sdk/target-sdk-1.ebuild b/virtual/target-sdk/target-sdk-1.ebuild
index 98c3ab7..2fac871 100644
--- a/virtual/target-sdk/target-sdk-1.ebuild
+++ b/virtual/target-sdk/target-sdk-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="List of packages that are needed inside the sdk to build everything;
 by default, we build a Chromium OS SDK"
 HOMEPAGE="http://dev.chromium.org/"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/tast-local-tests/tast-local-tests-1-r2.ebuild b/virtual/tast-local-tests/tast-local-tests-1-r2.ebuild
new file mode 120000
index 0000000..c6ce97b
--- /dev/null
+++ b/virtual/tast-local-tests/tast-local-tests-1-r2.ebuild
@@ -0,0 +1 @@
+tast-local-tests-1.ebuild
\ No newline at end of file
diff --git a/virtual/tast-local-tests/tast-local-tests-1.ebuild b/virtual/tast-local-tests/tast-local-tests-1.ebuild
index d94d45c..7de16e0 100644
--- a/virtual/tast-local-tests/tast-local-tests-1.ebuild
+++ b/virtual/tast-local-tests/tast-local-tests-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI=7
 
 DESCRIPTION="Virtual package for private Tast local test bundles.
 This package can be overridden by overlays to bring in private tests."
 HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/tast/"
 
-LICENSE="Apache-2.0 BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/tast-vars/tast-vars-1-r2.ebuild b/virtual/tast-vars/tast-vars-1-r2.ebuild
new file mode 120000
index 0000000..da32750
--- /dev/null
+++ b/virtual/tast-vars/tast-vars-1-r2.ebuild
@@ -0,0 +1 @@
+tast-vars-1.ebuild
\ No newline at end of file
diff --git a/virtual/tast-vars/tast-vars-1.ebuild b/virtual/tast-vars/tast-vars-1.ebuild
index 5bbcd6b..684dd2f 100644
--- a/virtual/tast-vars/tast-vars-1.ebuild
+++ b/virtual/tast-vars/tast-vars-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright 2019 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=6
+EAPI=7
 
 DESCRIPTION="Virtual package for private Tast variables.
 This package can be overridden by overlays to bring in private variables."
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/toolchain-packages/toolchain-packages-1-r2.ebuild b/virtual/toolchain-packages/toolchain-packages-1-r2.ebuild
deleted file mode 100644
index 37ebdd3..0000000
--- a/virtual/toolchain-packages/toolchain-packages-1-r2.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 2020 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-DESCRIPTION="Virtual package for listing toolchain packages.
-All packages which should be considered part of the toolchain must be directly
-listed as dependencies of this package. The common features of packages that
-should be in this virtual are packages that consumed by many other packages (to
-the point of needing to rebuild a significant chunk of the world to properly
-test changes) and that don't fit nicely in to Portage's dependency model (for
-bootstrap problems/circular dependencies/other reasons)."
-HOMEPAGE="http://dev.chromium.org/chromium-os"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND="
-	dev-lang/go
-	dev-lang/rust
-	dev-libs/elfutils
-	sys-devel/binutils
-	sys-devel/gcc
-	sys-devel/llvm
-	sys-kernel/linux-headers
-	sys-libs/compiler-rt
-	sys-libs/glibc
-	sys-libs/libcxx
-	sys-libs/libcxxabi
-	sys-libs/llvm-libunwind
-"
-
-
-src_compile() {
-	die "This package is for information only and should never be installed."
-}
\ No newline at end of file
diff --git a/virtual/toolchain-packages/toolchain-packages-1-r3.ebuild b/virtual/toolchain-packages/toolchain-packages-1-r3.ebuild
new file mode 120000
index 0000000..1f666e48
--- /dev/null
+++ b/virtual/toolchain-packages/toolchain-packages-1-r3.ebuild
@@ -0,0 +1 @@
+toolchain-packages-1.ebuild
\ No newline at end of file
diff --git a/virtual/toolchain-packages/toolchain-packages-1.ebuild b/virtual/toolchain-packages/toolchain-packages-1.ebuild
new file mode 100644
index 0000000..8dd6f05
--- /dev/null
+++ b/virtual/toolchain-packages/toolchain-packages-1.ebuild
@@ -0,0 +1,38 @@
+# Copyright 2020 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+DESCRIPTION="Virtual package for listing toolchain packages.
+All packages which should be considered part of the toolchain must be directly
+listed as dependencies of this package. The common features of packages that
+should be in this virtual are packages that consumed by many other packages (to
+the point of needing to rebuild a significant chunk of the world to properly
+test changes) and that don't fit nicely in to Portage's dependency model (for
+bootstrap problems/circular dependencies/other reasons)."
+HOMEPAGE="http://dev.chromium.org/chromium-os"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="
+	dev-lang/go
+	dev-lang/rust
+	dev-libs/elfutils
+	sys-devel/binutils
+	sys-devel/gcc
+	sys-devel/llvm
+	sys-kernel/linux-headers
+	sys-libs/compiler-rt
+	sys-libs/glibc
+	sys-libs/libcxx
+	sys-libs/libcxxabi
+	sys-libs/llvm-libunwind
+"
+
+
+src_compile() {
+	die "This package is for information only and should never be installed."
+}
\ No newline at end of file
diff --git a/virtual/ttf-fonts/ttf-fonts-1-r1.ebuild b/virtual/ttf-fonts/ttf-fonts-1-r1.ebuild
deleted file mode 100644
index 92d67e5..0000000
--- a/virtual/ttf-fonts/ttf-fonts-1-r1.ebuild
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2019 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-DESCRIPTION="True and opentype fonts for Chromium OS"
-HOMEPAGE="http://src.chromium.org"
-
-LICENSE=""
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-DEPEND=""
-RDEPEND="chromeos-base/chromeos-fonts"
diff --git a/virtual/ttf-fonts/ttf-fonts-1-r3.ebuild b/virtual/ttf-fonts/ttf-fonts-1-r3.ebuild
new file mode 120000
index 0000000..ccd00a7
--- /dev/null
+++ b/virtual/ttf-fonts/ttf-fonts-1-r3.ebuild
@@ -0,0 +1 @@
+ttf-fonts-1.ebuild
\ No newline at end of file
diff --git a/virtual/ttf-fonts/ttf-fonts-1.ebuild b/virtual/ttf-fonts/ttf-fonts-1.ebuild
new file mode 100644
index 0000000..df26ddd
--- /dev/null
+++ b/virtual/ttf-fonts/ttf-fonts-1.ebuild
@@ -0,0 +1,14 @@
+# Copyright 2019 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+DESCRIPTION="True and opentype fonts for Chromium OS"
+HOMEPAGE="http://src.chromium.org"
+
+LICENSE="metapackage"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND=""
+RDEPEND="chromeos-base/chromeos-fonts"
diff --git a/virtual/u-boot/OWNERS b/virtual/u-boot/OWNERS
index afc58cf..891015e 100644
--- a/virtual/u-boot/OWNERS
+++ b/virtual/u-boot/OWNERS
@@ -1,2 +1 @@
-set noparent
 include /sys-boot/u-boot/OWNERS
diff --git a/virtual/u-boot/u-boot-1-r1.ebuild b/virtual/u-boot/u-boot-1-r3.ebuild
similarity index 100%
rename from virtual/u-boot/u-boot-1-r1.ebuild
rename to virtual/u-boot/u-boot-1-r3.ebuild
diff --git a/virtual/u-boot/u-boot-1.ebuild b/virtual/u-boot/u-boot-1.ebuild
index 2404417..aa0a576 100644
--- a/virtual/u-boot/u-boot-1.ebuild
+++ b/virtual/u-boot/u-boot-1.ebuild
@@ -1,12 +1,12 @@
 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=4
+EAPI=7
 
 DESCRIPTION="Chrome OS u-boot virtual package"
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="GPL-2"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/update-policy/update-policy-1-r2.ebuild b/virtual/update-policy/update-policy-1-r2.ebuild
new file mode 120000
index 0000000..5431b39
--- /dev/null
+++ b/virtual/update-policy/update-policy-1-r2.ebuild
@@ -0,0 +1 @@
+update-policy-1.ebuild
\ No newline at end of file
diff --git a/virtual/update-policy/update-policy-1.ebuild b/virtual/update-policy/update-policy-1.ebuild
index cd35ea7..aa11bbb 100644
--- a/virtual/update-policy/update-policy-1.ebuild
+++ b/virtual/update-policy/update-policy-1.ebuild
@@ -1,13 +1,13 @@
 # Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="4"
+EAPI="7"
 
 DESCRIPTION="Virtual package installing the update engine's policy manager
 configuration. Boards can override it to install their own configuration."
 HOMEPAGE="http://src.chromium.org"
 
-LICENSE="BSD-Google"
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE="cros_embedded"
diff --git a/virtual/vulkan-icd/vulkan-icd-1-r2.ebuild b/virtual/vulkan-icd/vulkan-icd-1-r2.ebuild
new file mode 120000
index 0000000..d68de30
--- /dev/null
+++ b/virtual/vulkan-icd/vulkan-icd-1-r2.ebuild
@@ -0,0 +1 @@
+vulkan-icd-1.ebuild
\ No newline at end of file
diff --git a/virtual/vulkan-icd/vulkan-icd-1.ebuild b/virtual/vulkan-icd/vulkan-icd-1.ebuild
index d26af07..b75f04b 100644
--- a/virtual/vulkan-icd/vulkan-icd-1.ebuild
+++ b/virtual/vulkan-icd/vulkan-icd-1.ebuild
@@ -6,11 +6,12 @@
 # a Vulkan implementation. It is merely a loader library for the ICDs, which
 # provide the actual implementation.
 
-EAPI=5
+EAPI=7
 
 DESCRIPTION="Virtual for presence of a Vulkan ICD (Installable Client Driver)"
 SRC_URI=""
 
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/virtual/wpa_supplicant/wpa_supplicant-1-r2.ebuild b/virtual/wpa_supplicant/wpa_supplicant-1-r3.ebuild
similarity index 100%
rename from virtual/wpa_supplicant/wpa_supplicant-1-r2.ebuild
rename to virtual/wpa_supplicant/wpa_supplicant-1-r3.ebuild
diff --git a/virtual/wpa_supplicant/wpa_supplicant-1.ebuild b/virtual/wpa_supplicant/wpa_supplicant-1.ebuild
index f54dc65..bfefd8d 100644
--- a/virtual/wpa_supplicant/wpa_supplicant-1.ebuild
+++ b/virtual/wpa_supplicant/wpa_supplicant-1.ebuild
@@ -7,7 +7,7 @@
 HOMEPAGE=""
 SRC_URI=""
 
-LICENSE=""
+LICENSE="metapackage"
 SLOT="0"
 KEYWORDS="*"
 IUSE=""
diff --git a/x11-apps/igt-gpu-tools/igt-gpu-tools-1.25-r2.ebuild b/x11-apps/igt-gpu-tools/igt-gpu-tools-1.25-r7.ebuild
similarity index 100%
rename from x11-apps/igt-gpu-tools/igt-gpu-tools-1.25-r2.ebuild
rename to x11-apps/igt-gpu-tools/igt-gpu-tools-1.25-r7.ebuild
diff --git a/x11-apps/igt-gpu-tools/igt-gpu-tools-9999.ebuild b/x11-apps/igt-gpu-tools/igt-gpu-tools-9999.ebuild
index 77f28455..224e86d 100644
--- a/x11-apps/igt-gpu-tools/igt-gpu-tools-9999.ebuild
+++ b/x11-apps/igt-gpu-tools/igt-gpu-tools-9999.ebuild
@@ -8,8 +8,8 @@
 fi
 
 if [[ ${PV} != *9999* ]]; then
-	CROS_WORKON_COMMIT=f49ebeee9f54d6f23c60a842f75f65561d452ab0
-	CROS_WORKON_TREE=3aff21700e194b385c800f63c88e8a381763ecce
+	CROS_WORKON_COMMIT=138a29e30277b1039e9934fca5c782dc1e7a9f99
+	CROS_WORKON_TREE=79e9b31715154f1cfb9bc5e1a2bbc8ec4d5af188
 fi
 
 CROS_WORKON_PROJECT=chromiumos/third_party/igt-gpu-tools
@@ -29,9 +29,9 @@
 fi
 LICENSE="MIT"
 SLOT="0"
-IUSE="chamelium doc man overlay runner tests unwind valgrind video_cards_amdgpu video_cards_intel video_cards_nouveau X xv"
+IUSE="chamelium doc man overlay runner tests unwind valgrind video_cards_amdgpu video_cards_intel video_cards_nouveau video_cards_msm X xv"
 REQUIRED_USE="
-	|| ( video_cards_amdgpu video_cards_intel video_cards_nouveau )
+	|| ( video_cards_amdgpu video_cards_intel video_cards_nouveau video_cards_msm )
 	overlay? (
 		video_cards_intel
 		|| ( X xv )
diff --git a/x11-drivers/opengles-headers/opengles-headers-0.0.1-r34.ebuild b/x11-drivers/opengles-headers/opengles-headers-0.0.1-r34.ebuild
deleted file mode 100644
index 28dbe7b..0000000
--- a/x11-drivers/opengles-headers/opengles-headers-0.0.1-r34.ebuild
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-CROS_WORKON_COMMIT="4a356c345ed897adfe2936ae2e6119a46bcd43b8"
-CROS_WORKON_TREE="e9f61c485eaea8f4658b885e17c2117cc56831e2"
-CROS_WORKON_PROJECT="chromiumos/third_party/khronos"
-CROS_WORKON_LOCALNAME="khronos"
-
-inherit cros-workon
-
-DESCRIPTION="OpenGL|ES headers."
-HOMEPAGE="http://www.khronos.org/opengles/2_X/"
-SRC_URI=""
-LICENSE="SGI-B-2.0"
-KEYWORDS="*"
-IUSE=""
-
-# libX11 needs to be in RDEPEND because we depend on the header being present
-RDEPEND="x11-libs/libX11:="
-DEPEND="${RDEPEND}"
-
-src_install() {
-	# headers
-	insinto /usr/include/EGL
-	doins "${S}/include/EGL/egl.h"
-	doins "${S}/include/EGL/eglplatform.h"
-	doins "${S}/include/EGL/eglext.h"
-	insinto /usr/include/KHR
-	doins "${S}/include/KHR/khrplatform.h"
-	insinto /usr/include/GLES
-	doins "${S}/include/GLES/gl.h"
-	doins "${S}/include/GLES/glext.h"
-	doins "${S}/include/GLES/glplatform.h"
-	insinto /usr/include/GLES2
-	doins "${S}/include/GLES2/gl2.h"
-	doins "${S}/include/GLES2/gl2ext.h"
-	doins "${S}/include/GLES2/gl2platform.h"
-	insinto /usr/include/GLES3
-	doins "${S}/include/GLES3/gl3.h"
-	doins "${S}/include/GLES3/gl31.h"
-	doins "${S}/include/GLES3/gl32.h"
-	doins "${S}/include/GLES3/gl3platform.h"
-	insinto /usr/include/CL
-	doins "${S}/include/CL/cl.h"
-	doins "${S}/include/CL/cl_egl.h"
-	doins "${S}/include/CL/cl_ext.h"
-	doins "${S}/include/CL/cl_gl.h"
-	doins "${S}/include/CL/cl_gl_ext.h"
-	doins "${S}/include/CL/cl_platform.h"
-	doins "${S}/include/CL/opencl.h"
-	insinto /usr/include/spirv/unified1
-	doins "${S}/include/spirv/unified1/spirv.h"
-	doins "${S}/include/spirv/unified1/spirv.hpp"
-	doins "${S}/include/spirv/unified1/spirv.hpp11"
-}
diff --git a/x11-drivers/opengles-headers/opengles-headers-0.0.1-r36.ebuild b/x11-drivers/opengles-headers/opengles-headers-0.0.1-r36.ebuild
new file mode 100644
index 0000000..1975d6d
--- /dev/null
+++ b/x11-drivers/opengles-headers/opengles-headers-0.0.1-r36.ebuild
@@ -0,0 +1,55 @@
+# Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+CROS_WORKON_COMMIT="ed9a04037053347e4ad2fd779a73ea615fd2e513"
+CROS_WORKON_TREE="1de25b0683139e5255fcf749bc31bcb20dbc6533"
+CROS_WORKON_PROJECT="chromiumos/third_party/khronos"
+CROS_WORKON_LOCALNAME="khronos"
+
+inherit cros-workon
+
+DESCRIPTION="OpenGL|ES headers."
+HOMEPAGE="http://www.khronos.org/opengles/2_X/"
+SRC_URI=""
+LICENSE="SGI-B-2.0"
+KEYWORDS="*"
+IUSE=""
+
+# libX11 needs to be in RDEPEND because we depend on the header being present
+RDEPEND="x11-libs/libX11:="
+DEPEND="
+	${RDEPEND}
+	>=dev-util/spirv-headers-1.5.4.1
+"
+
+src_install() {
+	# headers
+	insinto /usr/include/EGL
+	doins "${S}/include/EGL/egl.h"
+	doins "${S}/include/EGL/eglplatform.h"
+	doins "${S}/include/EGL/eglext.h"
+	insinto /usr/include/KHR
+	doins "${S}/include/KHR/khrplatform.h"
+	insinto /usr/include/GLES
+	doins "${S}/include/GLES/gl.h"
+	doins "${S}/include/GLES/glext.h"
+	doins "${S}/include/GLES/glplatform.h"
+	insinto /usr/include/GLES2
+	doins "${S}/include/GLES2/gl2.h"
+	doins "${S}/include/GLES2/gl2ext.h"
+	doins "${S}/include/GLES2/gl2platform.h"
+	insinto /usr/include/GLES3
+	doins "${S}/include/GLES3/gl3.h"
+	doins "${S}/include/GLES3/gl31.h"
+	doins "${S}/include/GLES3/gl32.h"
+	doins "${S}/include/GLES3/gl3platform.h"
+	insinto /usr/include/CL
+	doins "${S}/include/CL/cl.h"
+	doins "${S}/include/CL/cl_egl.h"
+	doins "${S}/include/CL/cl_ext.h"
+	doins "${S}/include/CL/cl_gl.h"
+	doins "${S}/include/CL/cl_gl_ext.h"
+	doins "${S}/include/CL/cl_platform.h"
+	doins "${S}/include/CL/opencl.h"
+}
diff --git a/x11-drivers/opengles-headers/opengles-headers-9999.ebuild b/x11-drivers/opengles-headers/opengles-headers-9999.ebuild
index b41e255..e50600b 100644
--- a/x11-drivers/opengles-headers/opengles-headers-9999.ebuild
+++ b/x11-drivers/opengles-headers/opengles-headers-9999.ebuild
@@ -16,7 +16,10 @@
 
 # libX11 needs to be in RDEPEND because we depend on the header being present
 RDEPEND="x11-libs/libX11:="
-DEPEND="${RDEPEND}"
+DEPEND="
+	${RDEPEND}
+	>=dev-util/spirv-headers-1.5.4.1
+"
 
 src_install() {
 	# headers
@@ -47,8 +50,4 @@
 	doins "${S}/include/CL/cl_gl_ext.h"
 	doins "${S}/include/CL/cl_platform.h"
 	doins "${S}/include/CL/opencl.h"
-	insinto /usr/include/spirv/unified1
-	doins "${S}/include/spirv/unified1/spirv.h"
-	doins "${S}/include/spirv/unified1/spirv.hpp"
-	doins "${S}/include/spirv/unified1/spirv.hpp11"
 }
diff --git a/x11-drivers/touchpad-tests/touchpad-tests-0.0.1-r190.ebuild b/x11-drivers/touchpad-tests/touchpad-tests-0.0.1-r190.ebuild
deleted file mode 100644
index 2e341a2..0000000
--- a/x11-drivers/touchpad-tests/touchpad-tests-0.0.1-r190.ebuild
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="6"
-
-CROS_WORKON_COMMIT="d289d9fdb0aceb7c6f753806871f68d19211d9af"
-CROS_WORKON_TREE="8352ad90ea57e4909e6e8aa48a42aefff863a50b"
-CROS_WORKON_PROJECT="chromiumos/platform/touchpad-tests"
-CROS_WORKON_LOCALNAME="../platform/touchpad-tests"
-
-inherit cros-workon cros-constants
-
-DESCRIPTION="Chromium OS multitouch driver regression tests"
-HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/touchpad-tests"
-
-LICENSE="BSD-Google"
-SLOT="0"
-KEYWORDS="*"
-IUSE=""
-
-RDEPEND="chromeos-base/gestures
-	chromeos-base/libevdev
-	app-misc/utouch-evemu
-	x11-base/xorg-proto"
-DEPEND=${RDEPEND}
-
-src_install() {
-	# install to autotest deps directory for dependency
-	emake DESTDIR="${D}${AUTOTEST_BASE}/client/deps/touchpad-tests" install
-}
diff --git a/x11-drivers/touchpad-tests/touchpad-tests-0.0.1-r192.ebuild b/x11-drivers/touchpad-tests/touchpad-tests-0.0.1-r192.ebuild
new file mode 100644
index 0000000..d6142dc
--- /dev/null
+++ b/x11-drivers/touchpad-tests/touchpad-tests-0.0.1-r192.ebuild
@@ -0,0 +1,30 @@
+# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+
+CROS_WORKON_COMMIT="4c32bef9592024fe76fb0b8c913add3b1421e2d6"
+CROS_WORKON_TREE="abc8b7fceeeae9a07ef3825b2b026543956d2a47"
+CROS_WORKON_PROJECT="chromiumos/platform/touchpad-tests"
+CROS_WORKON_LOCALNAME="../platform/touchpad-tests"
+
+inherit cros-workon cros-constants
+
+DESCRIPTION="Chromium OS multitouch driver regression tests"
+HOMEPAGE="https://chromium.googlesource.com/chromiumos/platform/touchpad-tests"
+
+LICENSE="BSD-Google"
+SLOT="0"
+KEYWORDS="*"
+IUSE=""
+
+RDEPEND="chromeos-base/gestures
+	chromeos-base/libevdev:=
+	app-misc/utouch-evemu
+	x11-base/xorg-proto"
+DEPEND=${RDEPEND}
+
+src_install() {
+	# install to autotest deps directory for dependency
+	emake DESTDIR="${D}${AUTOTEST_BASE}/client/deps/touchpad-tests" install
+}
diff --git a/x11-drivers/touchpad-tests/touchpad-tests-9999.ebuild b/x11-drivers/touchpad-tests/touchpad-tests-9999.ebuild
index b76ac04..b04b53f 100644
--- a/x11-drivers/touchpad-tests/touchpad-tests-9999.ebuild
+++ b/x11-drivers/touchpad-tests/touchpad-tests-9999.ebuild
@@ -17,7 +17,7 @@
 IUSE=""
 
 RDEPEND="chromeos-base/gestures
-	chromeos-base/libevdev
+	chromeos-base/libevdev:=
 	app-misc/utouch-evemu
 	x11-base/xorg-proto"
 DEPEND=${RDEPEND}
diff --git a/x11-libs/arc-libdrm/arc-libdrm-2.4.100-r1.ebuild b/x11-libs/arc-libdrm/arc-libdrm-2.4.100-r1.ebuild
deleted file mode 100644
index 9b16662..0000000
--- a/x11-libs/arc-libdrm/arc-libdrm-2.4.100-r1.ebuild
+++ /dev/null
@@ -1,76 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-EGIT_REPO_URI="https://gitlab.freedesktop.org/mesa/drm.git"
-CROS_WORKON_COMMIT="0190f49a139e7069d7cad6a6890832831da1aa8b"
-CROS_WORKON_TREE="f691fb10ddd5ffefb25682ff89f6f978fe91ec02"
-CROS_WORKON_PROJECT="chromiumos/third_party/libdrm"
-CROS_WORKON_LOCALNAME="libdrm"
-CROS_WORKON_MANUAL_UPREV="1"
-
-P=${P#"arc-"}
-PN=${PN#"arc-"}
-S="${WORKDIR}/${P}"
-
-XORG_MULTILIB=yes
-inherit xorg-2 cros-workon arc-build
-
-DESCRIPTION="X.Org libdrm library"
-HOMEPAGE="http://dri.freedesktop.org/"
-SRC_URI=""
-
-# This package uses the MIT license inherited from Xorg but fails to provide
-# any license file in its source, so we add X as a license, which lists all
-# the Xorg copyright holders and allows license generation to pick them up.
-LICENSE="|| ( MIT X )"
-SLOT="0"
-KEYWORDS="*"
-VIDEO_CARDS="amdgpu exynos freedreno nouveau omap radeon vc4 vmware"
-for card in ${VIDEO_CARDS}; do
-	IUSE_VIDEO_CARDS+=" video_cards_${card}"
-done
-
-IUSE="${IUSE_VIDEO_CARDS} libkms manpages +udev"
-RESTRICT="test" # see bug #236845
-
-RDEPEND=""
-DEPEND="${RDEPEND}"
-
-XORG_EAUTORECONF=yes
-
-src_prepare() {
-	epatch "${FILESDIR}"/Add-header-for-Rockchip-DRM-userspace.patch
-	epatch "${FILESDIR}"/Add-header-for-Mediatek-DRM-userspace.patch
-	epatch "${FILESDIR}"/Add-Evdi-module-userspace-api-file.patch
-	epatch "${FILESDIR}"/Add-Rockchip-AFBC-modifier.patch
-	epatch "${FILESDIR}"/Add-back-VENDOR_NV-name.patch
-	epatch "${FILESDIR}"/CHROMIUM-add-resource-info-header.patch
-
-	xorg-2_src_prepare
-}
-
-src_configure() {
-	# FIXME(tfiga): Could inherit arc-build invoke this implicitly?
-	arc-build-select-clang
-
-	XORG_CONFIGURE_OPTIONS=(
-		--disable-install-test-programs
-		$(use_enable video_cards_amdgpu amdgpu)
-		$(use_enable video_cards_exynos exynos-experimental-api)
-		$(use_enable video_cards_freedreno freedreno)
-		$(use_enable video_cards_nouveau nouveau)
-		$(use_enable video_cards_omap omap-experimental-api)
-		$(use_enable video_cards_radeon radeon)
-		$(use_enable video_cards_vc4 vc4)
-		$(use_enable video_cards_vmware vmwgfx)
-		$(use_enable libkms)
-		$(use_enable manpages)
-		$(use_enable udev)
-		--disable-cairo-tests
-		--disable-intel
-		"--prefix=${ARC_PREFIX}/vendor"
-		"--datadir=${ARC_PREFIX}/vendor/usr/share"
-	)
-	xorg-2_src_configure
-}
diff --git a/x11-libs/arc-libdrm/arc-libdrm-2.4.105-r1.ebuild b/x11-libs/arc-libdrm/arc-libdrm-2.4.105-r1.ebuild
new file mode 120000
index 0000000..e908f63
--- /dev/null
+++ b/x11-libs/arc-libdrm/arc-libdrm-2.4.105-r1.ebuild
@@ -0,0 +1 @@
+arc-libdrm-9999.ebuild
\ No newline at end of file
diff --git a/x11-libs/arc-libdrm/arc-libdrm-9999.ebuild b/x11-libs/arc-libdrm/arc-libdrm-9999.ebuild
index 8bed42e..ca42a3a 100644
--- a/x11-libs/arc-libdrm/arc-libdrm-9999.ebuild
+++ b/x11-libs/arc-libdrm/arc-libdrm-9999.ebuild
@@ -1,18 +1,22 @@
 # Copyright 1999-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 EGIT_REPO_URI="https://gitlab.freedesktop.org/mesa/drm.git"
+if [[ ${PV} != *9999* ]]; then
+	CROS_WORKON_COMMIT="40f73d0b0b3936ccadc693edc25aad70c1225766"
+	CROS_WORKON_TREE="7d7f7823d7a6c217122b4402ed8c8b77bdec4952"
+fi
 CROS_WORKON_PROJECT="chromiumos/third_party/libdrm"
 CROS_WORKON_LOCALNAME="libdrm"
+CROS_WORKON_EGIT_BRANCH="chromeos-2.4.106"
 CROS_WORKON_MANUAL_UPREV="1"
 
 P=${P#"arc-"}
 PN=${PN#"arc-"}
 S="${WORKDIR}/${P}"
 
-XORG_MULTILIB=yes
-inherit xorg-2 cros-workon arc-build
+inherit cros-workon arc-build meson multilib-minimal
 
 DESCRIPTION="X.Org libdrm library"
 HOMEPAGE="http://dri.freedesktop.org/"
@@ -23,8 +27,12 @@
 # the Xorg copyright holders and allows license generation to pick them up.
 LICENSE="|| ( MIT X )"
 SLOT="0"
-KEYWORDS="~*"
-VIDEO_CARDS="amdgpu exynos nouveau omap radeon vc4 vmware"
+if [[ ${PV} = *9999* ]]; then
+	KEYWORDS="~*"
+else
+	KEYWORDS="*"
+fi
+VIDEO_CARDS="amdgpu exynos freedreno nouveau omap radeon vc4 vmware"
 for card in ${VIDEO_CARDS}; do
 	IUSE_VIDEO_CARDS+=" video_cards_${card}"
 done
@@ -35,39 +43,47 @@
 RDEPEND=""
 DEPEND="${RDEPEND}"
 
-XORG_EAUTORECONF=yes
-
-src_prepare() {
-	epatch "${FILESDIR}"/Add-header-for-Rockchip-DRM-userspace.patch
-	epatch "${FILESDIR}"/Add-header-for-Mediatek-DRM-userspace.patch
-	epatch "${FILESDIR}"/Add-Evdi-module-userspace-api-file.patch
-	epatch "${FILESDIR}"/Add-Rockchip-AFBC-modifier.patch
-	epatch "${FILESDIR}"/Add-back-VENDOR_NV-name.patch
-	epatch "${FILESDIR}"/CHROMIUM-add-resource-info-header.patch
-
-	xorg-2_src_prepare
-}
+PATCHES=(
+	"${FILESDIR}/Add-header-for-Rockchip-DRM-userspace.patch"
+	"${FILESDIR}/Add-header-for-Mediatek-DRM-userspace.patch"
+	"${FILESDIR}/Add-Evdi-module-userspace-api-file.patch"
+	"${FILESDIR}/Add-Rockchip-AFBC-modifier.patch"
+	"${FILESDIR}/Add-back-VENDOR_NV-name.patch"
+	"${FILESDIR}/CHROMIUM-add-resource-info-header.patch"
+)
 
 src_configure() {
 	# FIXME(tfiga): Could inherit arc-build invoke this implicitly?
 	arc-build-select-clang
+	multilib-minimal_src_configure
+}
 
-	XORG_CONFIGURE_OPTIONS=(
-		--disable-install-test-programs
-		$(use_enable video_cards_amdgpu amdgpu)
-		$(use_enable video_cards_exynos exynos-experimental-api)
-		$(use_enable video_cards_nouveau nouveau)
-		$(use_enable video_cards_omap omap-experimental-api)
-		$(use_enable video_cards_radeon radeon)
-		$(use_enable video_cards_vc4 vc4)
-		$(use_enable video_cards_vmware vmwgfx)
-		$(use_enable libkms)
-		$(use_enable manpages)
-		$(use_enable udev)
-		--disable-cairo-tests
-		--disable-intel
-		"--prefix=${ARC_PREFIX}/vendor"
-		"--datadir=${ARC_PREFIX}/vendor/usr/share"
+multilib_src_configure() {
+	local emesonargs=(
+		-Dinstall-test-programs=false
+		$(meson_use video_cards_amdgpu amdgpu)
+		$(meson_use video_cards_exynos exynos-experimental-api)
+		$(meson_use video_cards_freedreno freedreno)
+		$(meson_use video_cards_nouveau nouveau)
+		$(meson_use video_cards_omap omap-experimental-api)
+		$(meson_use video_cards_radeon radeon)
+		$(meson_use video_cards_vc4 vc4)
+		$(meson_use video_cards_vmware vmwgfx)
+		$(meson_use libkms)
+		$(meson_use manpages man-pages)
+		$(meson_use udev)
+		-Dcairo-tests=false
+		-Dintel=false
+		--prefix="${ARC_PREFIX}/vendor"
+		--datadir="${ARC_PREFIX}/vendor/usr/share"
 	)
-	xorg-2_src_configure
+	meson_src_configure
+}
+
+multilib_src_compile() {
+	meson_src_compile
+}
+
+multilib_src_install() {
+	meson_src_install
 }
diff --git a/x11-libs/cairo/Manifest b/x11-libs/cairo/Manifest
new file mode 100644
index 0000000..c92c721
--- /dev/null
+++ b/x11-libs/cairo/Manifest
@@ -0,0 +1 @@
+DIST cairo-1.17.4.tar.xz 41834076 BLAKE2B c4d53012b1629e463486203a559fbbde05cbf3d2ab26b9685ac858a38a3156a9d4a07b1f271020b07362d0cf3170c1afe8a8bfd685a42c37c7f7ae3153c77c22 SHA512 843dce4f1cb5d9fb0c33240dff658ba2723bf04697045d16669e4b7674a5287ef0eb3d960a688a129902fb714230263e35d085186dc220b65307b5ad7fa09d23
diff --git a/x11-libs/cairo/OWNERS b/x11-libs/cairo/OWNERS
new file mode 100644
index 0000000..9883120
--- /dev/null
+++ b/x11-libs/cairo/OWNERS
@@ -0,0 +1,2 @@
+davidriley@chromium.org
+sidereal@google.com
diff --git a/x11-libs/cairo/cairo-1.17.4-r2.ebuild b/x11-libs/cairo/cairo-1.17.4-r2.ebuild
new file mode 120000
index 0000000..9a153c4
--- /dev/null
+++ b/x11-libs/cairo/cairo-1.17.4-r2.ebuild
@@ -0,0 +1 @@
+cairo-1.17.4.ebuild
\ No newline at end of file
diff --git a/x11-libs/cairo/cairo-1.17.4.ebuild b/x11-libs/cairo/cairo-1.17.4.ebuild
new file mode 100644
index 0000000..737e17b
--- /dev/null
+++ b/x11-libs/cairo/cairo-1.17.4.ebuild
@@ -0,0 +1,129 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit flag-o-matic autotools multilib-minimal
+
+if [[ ${PV} == *9999* ]]; then
+	inherit git-r3
+	EGIT_REPO_URI="https://gitlab.freedesktop.org/cairo/cairo.git"
+	SRC_URI="~*"
+else
+	SRC_URI="https://www.cairographics.org/releases/${P}.tar.xz"
+	KEYWORDS="*"
+fi
+
+DESCRIPTION="A vector graphics library with cross-device output support"
+HOMEPAGE="https://www.cairographics.org/ https://gitlab.freedesktop.org/cairo/cairo"
+LICENSE="|| ( LGPL-2.1 MPL-1.1 )"
+SLOT="0"
+IUSE="X aqua debug gles2-only +glib opengl static-libs +svg utils valgrind"
+# gtk-doc regeneration doesn't seem to work with out-of-source builds
+#[[ ${PV} == *9999* ]] && IUSE="${IUSE} doc" # API docs are provided in tarball, no need to regenerate
+
+# Test causes a circular depend on gtk+... since gtk+ needs cairo but test needs gtk+ so we need to block it
+RESTRICT="test"
+
+BDEPEND="
+	virtual/pkgconfig
+	>=sys-devel/libtool-2"
+RDEPEND="
+	>=dev-libs/lzo-2.06-r1[${MULTILIB_USEDEP}]
+	>=media-libs/fontconfig-2.10.92[${MULTILIB_USEDEP}]
+	>=media-libs/freetype-2.5.0.1:2[png,${MULTILIB_USEDEP}]
+	>=media-libs/libpng-1.6.10:0=[${MULTILIB_USEDEP}]
+	sys-libs/binutils-libs:0=[${MULTILIB_USEDEP}]
+	>=sys-libs/zlib-1.2.8-r1[${MULTILIB_USEDEP}]
+	>=x11-libs/pixman-0.32.4[${MULTILIB_USEDEP}]
+	gles2-only? ( >=media-libs/mesa-9.1.6[gles2,${MULTILIB_USEDEP}] )
+	glib? ( >=dev-libs/glib-2.34.3:2[${MULTILIB_USEDEP}] )
+	opengl? ( >=media-libs/mesa-9.1.6[egl,X(+),${MULTILIB_USEDEP}] )
+	X? (
+		>=x11-libs/libXrender-0.9.8[${MULTILIB_USEDEP}]
+		>=x11-libs/libXext-1.3.2[${MULTILIB_USEDEP}]
+		>=x11-libs/libX11-1.6.2[${MULTILIB_USEDEP}]
+		>=x11-libs/libxcb-1.9.1[${MULTILIB_USEDEP}]
+	)"
+DEPEND="${RDEPEND}
+	X? ( x11-base/xorg-proto )"
+#[[ ${PV} == *9999* ]] && DEPEND="${DEPEND}
+#	doc? (
+#		>=dev-util/gtk-doc-1.6
+#		~app-text/docbook-xml-dtd-4.2
+#	)"
+
+REQUIRED_USE="
+	gles2-only? ( !opengl )
+"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-1.12.18-disable-test-suite.patch
+	"${FILESDIR}"/${PN}-respect-fontconfig.patch
+	"${FILESDIR}"/${P}-Fix-mask-usage-in-image-compositor.patch # crbug.com/1194021
+)
+
+src_prepare() {
+	default
+
+	# tests and perf tools require X, bug #483574
+	if ! use X; then
+		sed -e '/^SUBDIRS/ s#boilerplate test perf# #' -i Makefile.am || die
+	fi
+
+	# Slightly messed build system YAY
+	if [[ ${PV} == *9999* ]]; then
+		touch boilerplate/Makefile.am.features
+		touch src/Makefile.am.features
+		touch ChangeLog
+	fi
+
+	eautoreconf
+}
+
+multilib_src_configure() {
+	local myopts
+
+	[[ ${CHOST} == *-interix* ]] && append-flags -D_REENTRANT
+
+	use elibc_FreeBSD && myopts+=" --disable-symbol-lookup"
+
+	# [[ ${PV} == *9999* ]] && myopts+=" $(use_enable doc gtk-doc)"
+
+	ECONF_SOURCE="${S}" \
+	econf \
+		$(use_with X x) \
+		$(use_enable X tee) \
+		$(use_enable X xlib) \
+		$(use_enable X xlib-xrender) \
+		$(use_enable X xcb) \
+		$(use_enable X xcb-shm) \
+		$(use_enable aqua quartz) \
+		$(use_enable aqua quartz-image) \
+		$(use_enable debug test-surfaces) \
+		$(use_enable gles2-only glesv2) \
+		$(use_enable glib gobject) \
+		$(use_enable opengl gl) \
+		$(use_enable static-libs static) \
+		$(use_enable svg) \
+		$(use_enable utils trace) \
+		$(use_enable valgrind) \
+		--enable-ft \
+		--enable-interpreter \
+		--enable-pdf \
+		--enable-png \
+		--enable-ps \
+		--enable-script \
+		--disable-drm \
+		--disable-directfb \
+		--disable-gallium \
+		--disable-qt \
+		--disable-vg \
+		--disable-xlib-xcb \
+		${myopts}
+}
+
+multilib_src_install_all() {
+	find "${D}" -name '*.la' -delete || die
+	einstalldocs
+}
diff --git a/x11-libs/cairo/files/cairo-1.12.18-disable-test-suite.patch b/x11-libs/cairo/files/cairo-1.12.18-disable-test-suite.patch
new file mode 100644
index 0000000..6822121
--- /dev/null
+++ b/x11-libs/cairo/files/cairo-1.12.18-disable-test-suite.patch
@@ -0,0 +1,15 @@
+diff --git a/Makefile.am b/Makefile.am
+index 03fa352..7e11d24 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -18,10 +18,6 @@ ACLOCAL_AMFLAGS = -I build ${ACLOCAL_FLAGS}
+ 
+ DIST_SUBDIRS = src doc util boilerplate test perf
+ SUBDIRS = src doc util
+-# libpng is required for our test programs
+-if CAIRO_HAS_PNG_FUNCTIONS
+-SUBDIRS += boilerplate test perf
+-endif
+ 
+ configure: cairo-version.h
+ 
diff --git a/x11-libs/cairo/files/cairo-1.17.4-Fix-mask-usage-in-image-compositor.patch b/x11-libs/cairo/files/cairo-1.17.4-Fix-mask-usage-in-image-compositor.patch
new file mode 100644
index 0000000..cf72196
--- /dev/null
+++ b/x11-libs/cairo/files/cairo-1.17.4-Fix-mask-usage-in-image-compositor.patch
@@ -0,0 +1,54 @@
+From 6001949eab2891ef564d7bee0fe0f80ffc917811 Mon Sep 17 00:00:00 2001
+From: Heiko Lewin <heiko.lewin@worldiety.de>
+Date: Tue, 15 Dec 2020 16:48:19 +0100
+Subject: [PATCH] Fix mask usage in image-compositor
+
+---
+ src/cairo-image-compositor.c                |   8 +--
+ test/Makefile.sources                       |   1 +
+ test/bug-image-compositor.c                 |  66 ++++++++++++++++++++
+ test/meson.build                            |   1 +
+ test/reference/bug-image-compositor.ref.png | Bin 0 -> 185 bytes
+ 5 files changed, 72 insertions(+), 4 deletions(-)
+ create mode 100644 test/bug-image-compositor.c
+ create mode 100644 test/reference/bug-image-compositor.ref.png
+
+diff --git a/src/cairo-image-compositor.c b/src/cairo-image-compositor.c
+index 79ad69f68..4f8aaed99 100644
+--- a/src/cairo-image-compositor.c
++++ b/src/cairo-image-compositor.c
+@@ -2610,14 +2610,14 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
+ 		    unsigned num_spans)
+ {
+     cairo_image_span_renderer_t *r = abstract_renderer;
+-    uint8_t *m;
++    uint8_t *m, *base = (uint8_t*)pixman_image_get_data(r->mask);
+     int x0;
+ 
+     if (num_spans == 0)
+ 	return CAIRO_STATUS_SUCCESS;
+ 
+     x0 = spans[0].x;
+-    m = r->_buf;
++    m = base;
+     do {
+ 	int len = spans[1].x - spans[0].x;
+ 	if (len >= r->u.composite.run_length && spans[0].coverage == 0xff) {
+@@ -2655,7 +2655,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
+ 				      spans[0].x, y,
+ 				      spans[1].x - spans[0].x, h);
+ 
+-	    m = r->_buf;
++	    m = base;
+ 	    x0 = spans[1].x;
+ 	} else if (spans[0].coverage == 0x0) {
+ 	    if (spans[0].x != x0) {
+@@ -2684,7 +2684,7 @@ _inplace_src_spans (void *abstract_renderer, int y, int h,
+ #endif
+ 	    }
+ 
+-	    m = r->_buf;
++	    m = base;
+ 	    x0 = spans[1].x;
+ 	} else {
+ 	    *m++ = spans[0].coverage;
diff --git a/x11-libs/cairo/files/cairo-respect-fontconfig.patch b/x11-libs/cairo/files/cairo-respect-fontconfig.patch
new file mode 100644
index 0000000..b0a1b29
--- /dev/null
+++ b/x11-libs/cairo/files/cairo-respect-fontconfig.patch
@@ -0,0 +1,13 @@
+--- cairo-1.7.6-orig/src/cairo-ft-font.c	2008-09-29 21:43:13.000000000 +0100
++++ cairo-1.7.6/src/cairo-ft-font.c	2008-09-29 21:52:19.000000000 +0100
+@@ -1705,7 +1705,9 @@
+ 	options->base.subpixel_order = other->base.subpixel_order;
+     }
+ 
+-    if (options->base.hint_style == CAIRO_HINT_STYLE_DEFAULT)
++    options->base.hint_style = CAIRO_HINT_STYLE_DEFAULT;
++
++    if (other->base.hint_style != CAIRO_HINT_STYLE_DEFAULT)
+ 	options->base.hint_style = other->base.hint_style;
+ 
+     if (other->base.hint_style == CAIRO_HINT_STYLE_NONE)
diff --git a/x11-libs/cairo/metadata.xml b/x11-libs/cairo/metadata.xml
new file mode 100644
index 0000000..4d03eec
--- /dev/null
+++ b/x11-libs/cairo/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer type="project">
+		<email>x11@gentoo.org</email>
+		<name>X11</name>
+	</maintainer>
+	<use>
+		<flag name="opengl" restrict="&gt;=x11-libs/cairo-1.10.0">Build the OpenGL backend</flag>
+		<flag name="gles2-only">Build the OpenGL ES 2 backend</flag>
+		<flag name="glib">Compile with GLib Object System support</flag>
+		<flag name="utils">Build support for Cairo script and trace utilities</flag>
+		<flag name="valgrind">Built-in support to mark memory regions</flag>
+	</use>
+	<upstream>
+		<remote-id type="cpe">cpe:/a:cairographics:cairo</remote-id>
+	</upstream>
+</pkgmetadata>
diff --git a/x11-libs/gdk-pixbuf/Manifest b/x11-libs/gdk-pixbuf/Manifest
deleted file mode 100644
index 3e4ce22..0000000
--- a/x11-libs/gdk-pixbuf/Manifest
+++ /dev/null
@@ -1,2 +0,0 @@
-DIST gdk-pixbuf-2.36.12-bug753605-atsize.jpg 80850 BLAKE2B 17e414ca097b7aaf513241eacae97c5bc582f7ebd8870e8b67ce4af4e57134b8b4ae0ed579eb4cf0f57db2891e95a673d2129a1bafefe5ab8e2a8dd5f66da271 SHA512 d27197d2395446cd3c970841381958f7eb1b8df78913f7da70bec5f09af6edfc5dd74cd809c37ec8cf69f0eba504e0cc6354f1ec6ce3ec2192ad316cb64b69c9
-DIST gdk-pixbuf-2.36.12.tar.xz 5675768 BLAKE2B da9e18b5dc55ad13a1bdab76d9c63a6233da1b45235ae5eb620e6e3f83888a0cc846f1ba17f72cb3b5af1ccd59a69631b3403bf09e262c53e0149e6f26896a33 SHA512 5d3bd620cf464bf92079b15c78f8400db48c427053c6eeedc4ea9652a4c290a09a26310100cc7eb487daf4b565df9f7e3a6edf14685f81ddbff6a0652fb6b41b
diff --git a/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.32.3-fix-lowmem-uclibc.patch b/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.32.3-fix-lowmem-uclibc.patch
deleted file mode 100644
index 77ea7e7..0000000
--- a/x11-libs/gdk-pixbuf/files/gdk-pixbuf-2.32.3-fix-lowmem-uclibc.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From 21b8eb73d9272e06707ad6d0357f3034b8d9a46f Mon Sep 17 00:00:00 2001
-From: "Anthony G. Basile" <blueness@gentoo.org>
-Date: Wed, 14 Oct 2015 16:18:19 -0400
-Subject: [PATCH] tests/pixbuf-lowmem.c: Do not run pixbuf-lowmem test on
- uClibc
-
-pixbuf-lowmem.c depends on GNU libc internals and does not build
-on musl or uClibc.  Commit e1fd25a fixes this issue for musl by
-testing if __GLIBC__ is set.  However, uClibc sets __GLIBC__ and
-so this check is insufficient there.  We expand the check so that
-we run pixbuf-lowmem on glibc, while avoiding it on both musl and
-uClibc.
-
-Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
----
- tests/pixbuf-lowmem.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/tests/pixbuf-lowmem.c b/tests/pixbuf-lowmem.c
-index 9e9571f..ec7504f 100644
---- a/tests/pixbuf-lowmem.c
-+++ b/tests/pixbuf-lowmem.c
-@@ -24,7 +24,7 @@
- #include <time.h>
- #include <string.h>
- 
--#ifdef __GLIBC__
-+#if defined(__GLIBC__) && !defined(__UCLIBC__)
- #define PRETEND_MEM_SIZE (16 * 1024 * 1024)
- #define REMAINING_MEM_SIZE 100000
- 
--- 
-2.4.9
-
diff --git a/x11-libs/gdk-pixbuf/files/thumbnailer-cross-compile.patch b/x11-libs/gdk-pixbuf/files/thumbnailer-cross-compile.patch
deleted file mode 100644
index 8d9162a..0000000
--- a/x11-libs/gdk-pixbuf/files/thumbnailer-cross-compile.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-From 6646e8aadc4030d891ac27c25494e5793d59dc85 Mon Sep 17 00:00:00 2001
-From: Jussi Kukkonen <jussi.kukkonen@intel.com>
-Date: Wed, 22 Feb 2017 11:24:39 +0200
-Subject: [PATCH] Work-around thumbnailer cross-compile failure
-
-Install gdk-pixbuf-print-mime-types that's needed for thumbnail
-metadata generation.
-
-Use native gdk-pixbuf-print-mime-types when generating the thumbnail
-metadata. This works but the mime types will come from native
-loader.cache (which will only contain in-tree loaders), not from the
-target loader.cache.
-
-The upstream issue is https://bugzilla.gnome.org/show_bug.cgi?id=779057
-
-Upstream-Status: Inappropriate [workaround]
-Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
----
- thumbnailer/Makefile.am | 7 +++----
- 1 file changed, 3 insertions(+), 4 deletions(-)
-
-diff --git a/thumbnailer/Makefile.am b/thumbnailer/Makefile.am
-index c9fe123..b0c6c70 100644
---- a/thumbnailer/Makefile.am
-+++ b/thumbnailer/Makefile.am
-@@ -1,5 +1,4 @@
--bin_PROGRAMS = gdk-pixbuf-thumbnailer
--noinst_PROGRAMS = gdk-pixbuf-print-mime-types
-+bin_PROGRAMS = gdk-pixbuf-thumbnailer gdk-pixbuf-print-mime-types
- 
- gdk_pixbuf_thumbnailer_SOURCES = gdk-pixbuf-thumbnailer.c gnome-thumbnailer-skeleton.c gnome-thumbnailer-skeleton.h
- gdk_pixbuf_thumbnailer_CPPFLAGS =			\
-@@ -25,9 +24,9 @@ gdk_pixbuf_print_mime_types_LDADD =			\
- 
- thumbnailerdir = $(datadir)/thumbnailers/
- thumbnailer_DATA = gdk-pixbuf-thumbnailer.thumbnailer
--gdk-pixbuf-thumbnailer.thumbnailer: gdk-pixbuf-thumbnailer.thumbnailer.in Makefile gdk-pixbuf-print-mime-types$(EXEEXT) $(top_builddir)/gdk-pixbuf/loaders.cache
-+gdk-pixbuf-thumbnailer.thumbnailer: gdk-pixbuf-thumbnailer.thumbnailer.in Makefile gdk-pixbuf-print-mime-types$(EXEEXT)
- 	$(AM_V_GEN) $(SED) -e "s|\@bindir\@|$(bindir)|"						\
--	-e "s|\@mimetypes\@|`GDK_PIXBUF_MODULE_FILE=$(top_builddir)/gdk-pixbuf/loaders.cache GDK_PIXBUF_PIXDATA=$(top_builddir)/gdk-pixbuf/gdk-pixbuf-pixdata $(builddir)/gdk-pixbuf-print-mime-types`|" \
-+	-e "s|\@mimetypes\@|`gdk-pixbuf-print-mime-types`|" \
- 	$< > $@
- 
- EXTRA_DIST = gdk-pixbuf-thumbnailer.thumbnailer.in
--- 
-2.1.4
diff --git a/x11-libs/gdk-pixbuf/gdk-pixbuf-2.36.12-r2.ebuild b/x11-libs/gdk-pixbuf/gdk-pixbuf-2.36.12-r2.ebuild
deleted file mode 120000
index feab956..0000000
--- a/x11-libs/gdk-pixbuf/gdk-pixbuf-2.36.12-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-gdk-pixbuf-2.36.12.ebuild
\ No newline at end of file
diff --git a/x11-libs/gdk-pixbuf/gdk-pixbuf-2.36.12.ebuild b/x11-libs/gdk-pixbuf/gdk-pixbuf-2.36.12.ebuild
deleted file mode 100644
index de254bf..0000000
--- a/x11-libs/gdk-pixbuf/gdk-pixbuf-2.36.12.ebuild
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright 1999-2018 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=6
-GNOME2_LA_PUNT="yes"
-
-inherit flag-o-matic gnome2 multilib multilib-minimal autotools cros-sanitizers
-
-DESCRIPTION="Image loading library for GTK+"
-HOMEPAGE="https://git.gnome.org/browse/gdk-pixbuf"
-
-LICENSE="LGPL-2+"
-SLOT="2"
-KEYWORDS="*"
-IUSE="X debug +introspection jpeg jpeg2k tiff test"
-
-# Remove SRC_URI when gnome bug #795069 is fixed
-SRC_URI="${SRC_URI} test? ( https://git.gnome.org/browse/gdk-pixbuf/plain/tests/bug753605-atsize.jpg?h=2.36.12 -> ${PN}-2.36.12-bug753605-atsize.jpg )"
-
-COMMON_DEPEND="
-	>=dev-libs/glib-2.48.0:2[${MULTILIB_USEDEP}]
-	>=media-libs/libpng-1.4:0=[${MULTILIB_USEDEP}]
-	introspection? ( >=dev-libs/gobject-introspection-0.9.3:= )
-	jpeg? ( virtual/jpeg:0=[${MULTILIB_USEDEP}] )
-	jpeg2k? ( media-libs/jasper:=[${MULTILIB_USEDEP}] )
-	tiff? ( >=media-libs/tiff-3.9.2:0=[${MULTILIB_USEDEP}] )
-	X? ( x11-libs/libX11[${MULTILIB_USEDEP}] )
-"
-DEPEND="${COMMON_DEPEND}
-	dev-util/glib-utils
-	>=dev-util/gtk-doc-am-1.20
-	>=sys-devel/gettext-0.19
-	virtual/pkgconfig
-"
-# librsvg blocker is for the new pixbuf loader API, you lose icons otherwise
-RDEPEND="${COMMON_DEPEND}
-	!<gnome-base/gail-1000
-	!<gnome-base/librsvg-2.31.0
-	!<x11-libs/gtk+-2.21.3:2
-	!<x11-libs/gtk+-2.90.4:3
-"
-
-MULTILIB_CHOST_TOOLS=(
-	/usr/bin/gdk-pixbuf-query-loaders$(get_exeext)
-)
-
-PATCHES=(
-	# Do not run lowmem test on uclibc
-	# See https://bugzilla.gnome.org/show_bug.cgi?id=756590
-	"${FILESDIR}"/${PN}-2.32.3-fix-lowmem-uclibc.patch
-	"${FILESDIR}"/thumbnailer-cross-compile.patch
-)
-
-src_prepare() {
-	# https://bugzilla.gnome.org/show_bug.cgi?id=795069
-	if use test ; then
-		cp -v "${DISTDIR}"/${P}-bug753605-atsize.jpg "${S}"/tests/bug753605-atsize.jpg || die
-	fi
-
-	# This will avoid polluting the pkg-config file with versioned libpng,
-	# which is causing problems with libpng14 -> libpng15 upgrade
-	# See upstream bug #667068
-	# First check that the pattern is present, to catch upstream changes on bumps,
-	# because sed doesn't return failure code if it doesn't do any replacements
-	grep -q  'l in libpng16' configure || die "libpng check order has changed upstream"
-	sed -e 's:l in libpng16:l in libpng libpng16:' -i configure || die
-	[[ ${CHOST} == *-solaris* ]] && append-libs intl
-
-	gnome2_src_prepare
-	eautoreconf
-}
-
-multilib_src_configure() {
-	sanitizers-setup-env
-	# png always on to display icons
-	ECONF_SOURCE="${S}" \
-	gnome2_src_configure \
-		$(usex debug --enable-debug=yes "") \
-		$(use_with jpeg libjpeg) \
-		$(use_with jpeg2k libjasper) \
-		$(use_with tiff libtiff) \
-		$(multilib_native_use_enable introspection) \
-		$(use_with X x11) \
-		--with-libpng
-
-	# work-around gtk-doc out-of-source brokedness
-	if multilib_is_native_abi; then
-		ln -s "${S}"/docs/reference/${PN}/html docs/reference/${PN}/html || die
-	fi
-}
-
-multilib_src_install() {
-	# Parallel install fails when no gdk-pixbuf is already installed, bug #481372
-	MAKEOPTS="${MAKEOPTS} -j1" gnome2_src_install
-}
-
-pkg_preinst() {
-	gnome2_pkg_preinst
-
-	multilib_pkg_preinst() {
-		# Make sure loaders.cache belongs to gdk-pixbuf alone
-		local cache="usr/$(get_libdir)/${PN}-2.0/2.10.0/loaders.cache"
-
-		if [[ -e ${EROOT}${cache} ]]; then
-			cp "${EROOT}"${cache} "${ED}"/${cache} || die
-		else
-			touch "${ED}"/${cache} || die
-		fi
-	}
-
-	multilib_foreach_abi multilib_pkg_preinst
-}
-
-pkg_postinst() {
-	# causes segfault if set, see bug 375615
-	unset __GL_NO_DSO_FINALIZER
-
-	multilib_foreach_abi gnome2_pkg_postinst
-
-	# Migration snippet for when this was handled by gtk+
-	if [ -e "${EROOT}"usr/lib/gtk-2.0/2.*/loaders ]; then
-		elog "You need to rebuild ebuilds that installed into" "${EROOT}"usr/lib/gtk-2.0/2.*/loaders
-		elog "to do that you can use qfile from portage-utils:"
-		elog "emerge -va1 \$(qfile -qC ${EPREFIX}/usr/lib/gtk-2.0/2.*/loaders)"
-	fi
-}
-
-pkg_postrm() {
-	gnome2_pkg_postrm
-
-	if [[ -z ${REPLACED_BY_VERSION} ]]; then
-		rm -f "${EROOT}"usr/lib*/${PN}-2.0/2.10.0/loaders.cache
-	fi
-}
diff --git a/x11-libs/gdk-pixbuf/metadata.xml b/x11-libs/gdk-pixbuf/metadata.xml
deleted file mode 100644
index 8901219..0000000
--- a/x11-libs/gdk-pixbuf/metadata.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
-<pkgmetadata>
-<maintainer type="project">
-	<email>gnome@gentoo.org</email>
-	<name>Gentoo GNOME Desktop</name>
-</maintainer>
-<use>
-	<flag name="X">Build and install the legacy gdk_pixbuf_xlib-2.0 library</flag>
-</use>
-<upstream>
-	<remote-id type="cpe">cpe:/a:gnome:gdk-pixbuf</remote-id>
-</upstream>
-</pkgmetadata>
diff --git a/x11-libs/libdrm/files/Add-Evdi-module-userspace-api-file.patch b/x11-libs/libdrm/files/Add-Evdi-module-userspace-api-file.patch
index 5ffb4ff..a44a57c 100644
--- a/x11-libs/libdrm/files/Add-Evdi-module-userspace-api-file.patch
+++ b/x11-libs/libdrm/files/Add-Evdi-module-userspace-api-file.patch
@@ -1,8 +1,7 @@
-From 82d90af9075b81eee524b3f04d4163f36f3062c9 Mon Sep 17 00:00:00 2001
+From 8a8d3afaacd56b8115c8c5d61d61566d4da51fb1 Mon Sep 17 00:00:00 2001
 From: Lukasz Spintzyk <lukasz.spintzyk@displaylink.com>
 Date: Wed, 10 Feb 2016 12:55:44 +0100
-Subject: [PATCH libdrm 5/7] CHROMIUM: drm/evdi: Add Evdi module userspace api
- file.
+Subject: [PATCH] CHROMIUM: drm/evdi: Add Evdi module userspace api file.
 MIME-Version: 1.0
 Content-Type: text/plain; charset=UTF-8
 Content-Transfer-Encoding: 8bit
@@ -27,12 +26,13 @@
 Change-Id: I355eb33d9953b1157888e4699ceb749865d8bb19
 ---
  Makefile.sources       |  1 +
- include/drm/evdi_drm.h | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 86 insertions(+)
+ include/drm/evdi_drm.h | 85 ++++++++++++++++++++++++++++++++++++++++++
+ meson.build            |  1 +
+ 3 files changed, 87 insertions(+)
  create mode 100644 include/drm/evdi_drm.h
 
 diff --git a/Makefile.sources b/Makefile.sources
-index 19b62619..bd00db46 100644
+index 55290fe9..1cb0fa35 100644
 --- a/Makefile.sources
 +++ b/Makefile.sources
 @@ -22,6 +22,7 @@ LIBDRM_INCLUDE_H_FILES := \
@@ -42,7 +42,7 @@
 +	include/drm/evdi_drm.h \
  	include/drm/i915_drm.h \
  	include/drm/mach64_drm.h \
- 	include/drm/mediatek_drm.h \
+ 	include/drm/mga_drm.h \
 diff --git a/include/drm/evdi_drm.h b/include/drm/evdi_drm.h
 new file mode 100644
 index 00000000..3a00c7fc
@@ -134,6 +134,18 @@
 +
 +#endif /* __EVDI_UAPI_DRM_H__ */
 +
+diff --git a/meson.build b/meson.build
+index fc02f552..b10fdad4 100644
+--- a/meson.build
++++ b/meson.build
+@@ -317,6 +317,7 @@ install_headers(
+   'include/drm/savage_drm.h', 'include/drm/sis_drm.h',
+   'include/drm/tegra_drm.h', 'include/drm/vc4_drm.h',
+   'include/drm/via_drm.h', 'include/drm/virtgpu_drm.h',
++  'include/drm/evdi_drm.h',
+   subdir : 'libdrm',
+ )
+ if with_vmwgfx
 -- 
-2.16.4
+2.30.0.365.g02bc693789-goog
 
diff --git a/x11-libs/libdrm/files/Add-header-for-Mediatek-DRM-userspace.patch b/x11-libs/libdrm/files/Add-header-for-Mediatek-DRM-userspace.patch
index 300dc94..1cc948b 100644
--- a/x11-libs/libdrm/files/Add-header-for-Mediatek-DRM-userspace.patch
+++ b/x11-libs/libdrm/files/Add-header-for-Mediatek-DRM-userspace.patch
@@ -1,8 +1,8 @@
-From 70408f7a678c0cb3396e312e5b3c47c39bff9209 Mon Sep 17 00:00:00 2001
+From 7ff43477e7a0193691dade3a3ceb2bc90f9282a7 Mon Sep 17 00:00:00 2001
 From: JB Tsai <jb.tsai@mediatek.com>
 Date: Wed, 25 Mar 2015 09:04:16 +0800
-Subject: [PATCH libdrm 4/7] CHROMIUM: libdrm: Add header for Mediatek DRM
- userspace interface
+Subject: [PATCH] CHROMIUM: libdrm: Add header for Mediatek DRM userspace
+ interface
 
 Add a header defining the userspace interface exposed by Mediatek DRM
 driver.
@@ -21,12 +21,13 @@
 Change-Id: Idcbe76bbc710c4ee5b08af640fd3ccaadf9d33a0
 ---
  Makefile.sources           |  1 +
- include/drm/mediatek_drm.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 60 insertions(+)
+ include/drm/mediatek_drm.h | 59 ++++++++++++++++++++++++++++++++++++++
+ meson.build                |  2 +-
+ 3 files changed, 61 insertions(+), 1 deletion(-)
  create mode 100644 include/drm/mediatek_drm.h
 
 diff --git a/Makefile.sources b/Makefile.sources
-index fcfa651c..19b62619 100644
+index 55290fe9..cf39acfb 100644
 --- a/Makefile.sources
 +++ b/Makefile.sources
 @@ -24,6 +24,7 @@ LIBDRM_INCLUDE_H_FILES := \
@@ -102,6 +103,19 @@
 +
 +
 +#endif /* _UAPI_MEDIATEK_DRM_H */
+diff --git a/meson.build b/meson.build
+index fc02f552..2b21a318 100644
+--- a/meson.build
++++ b/meson.build
+@@ -310,7 +310,7 @@ install_headers('libsync.h', 'xf86drm.h', 'xf86drmMode.h')
+ install_headers(
+   'include/drm/drm.h', 'include/drm/drm_fourcc.h', 'include/drm/drm_mode.h',
+   'include/drm/drm_sarea.h', 'include/drm/i915_drm.h',
+-  'include/drm/mach64_drm.h', 'include/drm/mga_drm.h',
++  'include/drm/mach64_drm.h', 'include/drm/mediatek_drm.h', 'include/drm/mga_drm.h',
+   'include/drm/msm_drm.h', 'include/drm/nouveau_drm.h',
+   'include/drm/qxl_drm.h', 'include/drm/r128_drm.h',
+   'include/drm/radeon_drm.h', 'include/drm/amdgpu_drm.h',
 -- 
-2.16.4
+2.30.0.365.g02bc693789-goog
 
diff --git a/x11-libs/libdrm/files/Add-header-for-Rockchip-DRM-userspace.patch b/x11-libs/libdrm/files/Add-header-for-Rockchip-DRM-userspace.patch
index 765d7ca..90b4c0d 100644
--- a/x11-libs/libdrm/files/Add-header-for-Rockchip-DRM-userspace.patch
+++ b/x11-libs/libdrm/files/Add-header-for-Rockchip-DRM-userspace.patch
@@ -1,8 +1,8 @@
-From 9580499d1f8ee67842fee86ec564ab8b6de22a16 Mon Sep 17 00:00:00 2001
+From 2850a2ddaa202ffe1fbf421a2f007453773e6e29 Mon Sep 17 00:00:00 2001
 From: Mark Yao <mark.yao@rock-chips.com>
 Date: Wed, 8 Oct 2014 14:38:23 +0800
-Subject: [PATCH libdrm 3/7] CHROMIUM: libdrm: Add header for Rockchip DRM
- userspace interface
+Subject: [PATCH] CHROMIUM: libdrm: Add header for Rockchip DRM userspace
+ interface
 
 Add the header defining the interface exposed by Rockchip DRM.
 
@@ -20,12 +20,13 @@
 Change-Id: Ic3b128a2a22833e5af6b6188c20890fdd9cd564a
 ---
  Makefile.sources           |  1 +
- include/drm/rockchip_drm.h | 73 ++++++++++++++++++++++++++++++++++++++++++++++
- 2 files changed, 74 insertions(+)
+ include/drm/rockchip_drm.h | 73 ++++++++++++++++++++++++++++++++++++++
+ meson.build                |  2 +-
+ 3 files changed, 75 insertions(+), 1 deletion(-)
  create mode 100644 include/drm/rockchip_drm.h
 
 diff --git a/Makefile.sources b/Makefile.sources
-index 499fbd81..fcfa651c 100644
+index 55290fe9..9fa2e7db 100644
 --- a/Makefile.sources
 +++ b/Makefile.sources
 @@ -30,6 +30,7 @@ LIBDRM_INCLUDE_H_FILES := \
@@ -115,6 +116,19 @@
 +		DRM_ROCKCHIP_GEM_MAP_OFFSET, struct drm_rockchip_gem_map_off)
 +
 +#endif
+diff --git a/meson.build b/meson.build
+index fc02f552..e5734b27 100644
+--- a/meson.build
++++ b/meson.build
+@@ -313,7 +313,7 @@ install_headers(
+   'include/drm/mach64_drm.h', 'include/drm/mga_drm.h',
+   'include/drm/msm_drm.h', 'include/drm/nouveau_drm.h',
+   'include/drm/qxl_drm.h', 'include/drm/r128_drm.h',
+-  'include/drm/radeon_drm.h', 'include/drm/amdgpu_drm.h',
++  'include/drm/radeon_drm.h', 'include/drm/rockchip_drm.h', 'include/drm/amdgpu_drm.h',
+   'include/drm/savage_drm.h', 'include/drm/sis_drm.h',
+   'include/drm/tegra_drm.h', 'include/drm/vc4_drm.h',
+   'include/drm/via_drm.h', 'include/drm/virtgpu_drm.h',
 -- 
-2.16.4
+2.30.0.365.g02bc693789-goog
 
diff --git a/x11-libs/libdrm/files/FROMLIST-Add-drmModeGetFB2.patch b/x11-libs/libdrm/files/FROMLIST-Add-drmModeGetFB2.patch
deleted file mode 100644
index c7790bf..0000000
--- a/x11-libs/libdrm/files/FROMLIST-Add-drmModeGetFB2.patch
+++ /dev/null
@@ -1,135 +0,0 @@
-From patchwork Thu Oct  3 18:39:17 2019
-Content-Type: text/plain; charset="utf-8"
-MIME-Version: 1.0
-Content-Transfer-Encoding: 7bit
-Subject: [RESEND,libdrm,v2] NOMERGE: Add drmModeGetFB2
-From: Juston Li <juston.li@intel.com>
-X-Patchwork-Id: 334265
-Message-Id: <20191003183917.5817-1-juston.li@intel.com>
-To: dri-devel@lists.freedesktop.org
-Cc: Juston Li <juston.li@intel.com>, Daniel Stone <daniels@collabora.com>
-Date: Thu,  3 Oct 2019 11:39:17 -0700
-
-From: Daniel Stone <daniels@collabora.com>
-
-Add a wrapper around the getfb2 ioctl, which returns extended
-framebuffer information mirroring addfb2, including multiple planes and
-modifiers.
-
-This depends on unmerged kernel API so should not be merged.
-
-Changes since v1:
- - functions should be drm_public
- - modifier for should 64 bits
- - update ioctl number
-
-Signed-off-by: Juston Li <juston.li@intel.com>
----
- include/drm/drm.h |  2 ++
- xf86drmMode.c     | 40 ++++++++++++++++++++++++++++++++++++++++
- xf86drmMode.h     | 15 +++++++++++++++
- 3 files changed, 57 insertions(+)
-
-diff --git a/include/drm/drm.h b/include/drm/drm.h
-index 85c685a2..4380d711 100644
---- a/include/drm/drm.h
-+++ b/include/drm/drm.h
-@@ -903,6 +903,8 @@ extern "C" {
- #define DRM_IOCTL_MODE_GET_LEASE	DRM_IOWR(0xC8, struct drm_mode_get_lease)
- #define DRM_IOCTL_MODE_REVOKE_LEASE	DRM_IOWR(0xC9, struct drm_mode_revoke_lease)
- 
-+#define DRM_IOCTL_MODE_GETFB2		DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
-+
- /**
-  * Device specific ioctls should only be in their respective headers
-  * The device specific ioctl range is from 0x40 to 0x9f.
-diff --git a/xf86drmMode.c b/xf86drmMode.c
-index 8f8633ed..1dca974b 100644
---- a/xf86drmMode.c
-+++ b/xf86drmMode.c
-@@ -1593,3 +1593,44 @@ drmModeRevokeLease(int fd, uint32_t lessee_id)
- 		return 0;
- 	return -errno;
- }
-+
-+
-+drm_public drmModeFB2Ptr
-+drmModeGetFB2(int fd, uint32_t fb_id)
-+{
-+	struct drm_mode_fb_cmd2 get;
-+	drmModeFB2Ptr ret;
-+	int err;
-+
-+	memclear(get);
-+	get.fb_id = fb_id;
-+
-+	err = DRM_IOCTL(fd, DRM_IOCTL_MODE_GETFB2, &get);
-+	if (err != 0)
-+		return NULL;
-+
-+	ret = drmMalloc(sizeof(drmModeFB2));
-+	if (!ret)
-+		return NULL;
-+
-+	ret->fb_id = fb_id;
-+	ret->width = get.width;
-+	ret->height = get.height;
-+	ret->pixel_format = get.pixel_format;
-+	ret->flags = get.flags;
-+	ret->modifier = get.modifier[0];
-+	memcpy(ret->handles, get.handles, sizeof(uint32_t) * 4);
-+	memcpy(ret->pitches, get.pitches, sizeof(uint32_t) * 4);
-+	memcpy(ret->offsets, get.offsets, sizeof(uint32_t) * 4);
-+
-+	return ret;
-+}
-+
-+drm_public void drmModeFreeFB2(drmModeFB2Ptr ptr)
-+{
-+	if (!ptr)
-+		return;
-+
-+	/* we might add more frees later. */
-+	drmFree(ptr);
-+}
-diff --git a/xf86drmMode.h b/xf86drmMode.h
-index 3cd27aee..c1472270 100644
---- a/xf86drmMode.h
-+++ b/xf86drmMode.h
-@@ -223,6 +223,19 @@ typedef struct _drmModeFB {
- 	uint32_t handle;
- } drmModeFB, *drmModeFBPtr;
- 
-+typedef struct _drmModeFB2 {
-+	uint32_t fb_id;
-+	uint32_t width, height;
-+	uint32_t pixel_format; /* fourcc code from drm_fourcc.h */
-+	uint64_t modifier; /* applies to all buffers */
-+	uint32_t flags;
-+
-+	/* per-plane GEM handle; may be duplicate entries for multiple planes */
-+	uint32_t handles[4];
-+	uint32_t pitches[4]; /* bytes */
-+	uint32_t offsets[4]; /* bytes */
-+} drmModeFB2, *drmModeFB2Ptr;
-+
- typedef struct drm_clip_rect drmModeClip, *drmModeClipPtr;
- 
- typedef struct _drmModePropertyBlob {
-@@ -341,6 +354,7 @@ typedef struct _drmModePlaneRes {
- extern void drmModeFreeModeInfo( drmModeModeInfoPtr ptr );
- extern void drmModeFreeResources( drmModeResPtr ptr );
- extern void drmModeFreeFB( drmModeFBPtr ptr );
-+extern void drmModeFreeFB2( drmModeFB2Ptr ptr );
- extern void drmModeFreeCrtc( drmModeCrtcPtr ptr );
- extern void drmModeFreeConnector( drmModeConnectorPtr ptr );
- extern void drmModeFreeEncoder( drmModeEncoderPtr ptr );
-@@ -360,7 +374,7 @@ extern drmModeResPtr drmModeGetResources(int fd);
-  * Retrive information about framebuffer bufferId
-  */
- extern drmModeFBPtr drmModeGetFB(int fd, uint32_t bufferId);
--
-+extern drmModeFB2Ptr drmModeGetFB2(int fd, uint32_t bufferId);
- /**
-  * Creates a new framebuffer with an buffer object as its scanout buffer.
-  */
diff --git a/x11-libs/libdrm/files/chromeos-version.sh b/x11-libs/libdrm/files/chromeos-version.sh
deleted file mode 100755
index 9681e7a..0000000
--- a/x11-libs/libdrm/files/chromeos-version.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-# Copyright 2016 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.
-
-awk -F',' '
-  BEGIN { RS=")" }
-  $0 ~ /AC_INIT.*/ {
-    sub(/^[^0-9]*/, "", $2)
-    sub(/[^0-9]*$/, "", $2)
-    print $2
-    exit
-  }
-' "$1/configure.ac"
diff --git a/x11-libs/libdrm/files/intel-sync-i915_pciids.h-with-kernel.patch b/x11-libs/libdrm/files/intel-sync-i915_pciids.h-with-kernel.patch
deleted file mode 100644
index a485940..0000000
--- a/x11-libs/libdrm/files/intel-sync-i915_pciids.h-with-kernel.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-From 4c31d1181bf474c37dfea5500dd69db897e02996 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= <jose.souza@intel.com>
-Date: Tue, 10 Dec 2019 12:04:54 -0800
-Subject: [PATCH] intel: sync i915_pciids.h with kernel
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Changes:
-651cc835d5f6 ("drm/i915: Add new EHL/JSL PCI ids")
-b6a8781a447c ("drm/i915/cml: Remove unsupport PCI ID")
-8717c6b7414f ("drm/i915/cml: Separate U series pci id from origianl list.")
-
-v2: added the latest CML changes
-
-Cc: James Ausmus <james.ausmus@intel.com>
-Cc: Matt Roper <matthew.d.roper@intel.com>
-Cc: Lucas De Marchi <lucas.demarchi@intel.com>
-Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
-Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
-Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
----
- intel/i915_pciids.h | 31 ++++++++++++++++++-------------
- 1 file changed, 18 insertions(+), 13 deletions(-)
-
-diff --git a/intel/i915_pciids.h b/intel/i915_pciids.h
-index b1f66b117c74..1d2c12219f44 100644
---- a/intel/i915_pciids.h
-+++ b/intel/i915_pciids.h
-@@ -446,23 +446,18 @@
- 
- /* CML GT1 */
- #define INTEL_CML_GT1_IDS(info)	\
--	INTEL_VGA_DEVICE(0x9B21, info), \
--	INTEL_VGA_DEVICE(0x9BAA, info), \
--	INTEL_VGA_DEVICE(0x9BAB, info), \
--	INTEL_VGA_DEVICE(0x9BAC, info), \
--	INTEL_VGA_DEVICE(0x9BA0, info), \
- 	INTEL_VGA_DEVICE(0x9BA5, info), \
- 	INTEL_VGA_DEVICE(0x9BA8, info), \
- 	INTEL_VGA_DEVICE(0x9BA4, info), \
- 	INTEL_VGA_DEVICE(0x9BA2, info)
- 
-+#define INTEL_CML_U_GT1_IDS(info) \
-+	INTEL_VGA_DEVICE(0x9B21, info), \
-+	INTEL_VGA_DEVICE(0x9BAA, info), \
-+	INTEL_VGA_DEVICE(0x9BAC, info)
-+
- /* CML GT2 */
- #define INTEL_CML_GT2_IDS(info)	\
--	INTEL_VGA_DEVICE(0x9B41, info), \
--	INTEL_VGA_DEVICE(0x9BCA, info), \
--	INTEL_VGA_DEVICE(0x9BCB, info), \
--	INTEL_VGA_DEVICE(0x9BCC, info), \
--	INTEL_VGA_DEVICE(0x9BC0, info), \
- 	INTEL_VGA_DEVICE(0x9BC5, info), \
- 	INTEL_VGA_DEVICE(0x9BC8, info), \
- 	INTEL_VGA_DEVICE(0x9BC4, info), \
-@@ -471,6 +466,11 @@
- 	INTEL_VGA_DEVICE(0x9BE6, info), \
- 	INTEL_VGA_DEVICE(0x9BF6, info)
- 
-+#define INTEL_CML_U_GT2_IDS(info) \
-+	INTEL_VGA_DEVICE(0x9B41, info), \
-+	INTEL_VGA_DEVICE(0x9BCA, info), \
-+	INTEL_VGA_DEVICE(0x9BCC, info)
-+
- #define INTEL_KBL_IDS(info) \
- 	INTEL_KBL_GT1_IDS(info), \
- 	INTEL_KBL_GT2_IDS(info), \
-@@ -536,7 +536,9 @@
- 	INTEL_WHL_U_GT3_IDS(info), \
- 	INTEL_AML_CFL_GT2_IDS(info), \
- 	INTEL_CML_GT1_IDS(info), \
--	INTEL_CML_GT2_IDS(info)
-+	INTEL_CML_GT2_IDS(info), \
-+	INTEL_CML_U_GT1_IDS(info), \
-+	INTEL_CML_U_GT2_IDS(info)
- 
- /* CNL */
- #define INTEL_CNL_PORT_F_IDS(info) \
-@@ -579,12 +581,15 @@
- 	INTEL_VGA_DEVICE(0x8A51, info), \
- 	INTEL_VGA_DEVICE(0x8A5D, info)
- 
--/* EHL */
-+/* EHL/JSL */
- #define INTEL_EHL_IDS(info) \
- 	INTEL_VGA_DEVICE(0x4500, info),	\
- 	INTEL_VGA_DEVICE(0x4571, info), \
- 	INTEL_VGA_DEVICE(0x4551, info), \
--	INTEL_VGA_DEVICE(0x4541, info)
-+	INTEL_VGA_DEVICE(0x4541, info), \
-+	INTEL_VGA_DEVICE(0x4E71, info), \
-+	INTEL_VGA_DEVICE(0x4E61, info), \
-+	INTEL_VGA_DEVICE(0x4E51, info)
- 
- /* TGL */
- #define INTEL_TGL_12_IDS(info) \
--- 
-2.7.4
-
diff --git a/x11-libs/libdrm/files/new-intel-sync-i915_pciids.h-with-kernel.patch b/x11-libs/libdrm/files/new-intel-sync-i915_pciids.h-with-kernel.patch
deleted file mode 100644
index 25f0223..0000000
--- a/x11-libs/libdrm/files/new-intel-sync-i915_pciids.h-with-kernel.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 669e1087ab60637744ae0f3f15b8c1608d2a8653 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= <jose.souza@intel.com>
-Date: Wed, 8 Jul 2020 10:44:53 -0700
-Subject: [PATCH] intel: sync i915_pciids.h with kernel
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Two new patches landed in kernel adding new PCI ids:
-123f62de419f ("drm/i915/rkl: Add RKL platform info and PCI ids")
-52797a8e8529 ("drm/i915/ehl: Add new PCI ids")
-
-Cc: Matt Roper <matthew.d.roper@intel.com>
-Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
----
- intel/i915_pciids.h | 13 +++++++++++++
- 1 file changed, 13 insertions(+)
-
-diff --git a/intel/i915_pciids.h b/intel/i915_pciids.h
-index 662d8351c87a..d6cb28992ba0 100644
---- a/intel/i915_pciids.h
-+++ b/intel/i915_pciids.h
-@@ -588,7 +588,11 @@
- 	INTEL_VGA_DEVICE(0x4551, info), \
- 	INTEL_VGA_DEVICE(0x4541, info), \
- 	INTEL_VGA_DEVICE(0x4E71, info), \
-+	INTEL_VGA_DEVICE(0x4557, info), \
-+	INTEL_VGA_DEVICE(0x4555, info), \
- 	INTEL_VGA_DEVICE(0x4E61, info), \
-+	INTEL_VGA_DEVICE(0x4E57, info), \
-+	INTEL_VGA_DEVICE(0x4E55, info), \
- 	INTEL_VGA_DEVICE(0x4E51, info)
- 
- /* TGL */
-@@ -605,4 +609,13 @@
- 	INTEL_VGA_DEVICE(0x9AD9, info), \
- 	INTEL_VGA_DEVICE(0x9AF8, info)
- 
-+/* RKL */
-+#define INTEL_RKL_IDS(info) \
-+	INTEL_VGA_DEVICE(0x4C80, info), \
-+	INTEL_VGA_DEVICE(0x4C8A, info), \
-+	INTEL_VGA_DEVICE(0x4C8B, info), \
-+	INTEL_VGA_DEVICE(0x4C8C, info), \
-+	INTEL_VGA_DEVICE(0x4C90, info), \
-+	INTEL_VGA_DEVICE(0x4C9A, info)
-+
- #endif /* _I915_PCIIDS_H */
--- 
-2.7.4
-
diff --git a/x11-libs/libdrm/libdrm-2.4.100-r4.ebuild b/x11-libs/libdrm/libdrm-2.4.100-r4.ebuild
deleted file mode 100644
index 8332755..0000000
--- a/x11-libs/libdrm/libdrm-2.4.100-r4.ebuild
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright 1999-2013 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="5"
-EGIT_REPO_URI="https://gitlab.freedesktop.org/mesa/drm.git"
-CROS_WORKON_COMMIT="0190f49a139e7069d7cad6a6890832831da1aa8b"
-CROS_WORKON_TREE="f691fb10ddd5ffefb25682ff89f6f978fe91ec02"
-CROS_WORKON_PROJECT="chromiumos/third_party/libdrm"
-CROS_WORKON_MANUAL_UPREV="1"
-
-inherit xorg-2 cros-workon
-
-DESCRIPTION="X.Org libdrm library"
-HOMEPAGE="http://dri.freedesktop.org/"
-SRC_URI=""
-
-# This package uses the MIT license inherited from Xorg but fails to provide
-# any license file in its source, so we add X as a license, which lists all
-# the Xorg copyright holders and allows license generation to pick them up.
-LICENSE="|| ( MIT X )"
-SLOT="0"
-KEYWORDS="*"
-VIDEO_CARDS="amdgpu exynos freedreno intel nouveau omap radeon vc4 vmware"
-for card in ${VIDEO_CARDS}; do
-	IUSE_VIDEO_CARDS+=" video_cards_${card}"
-done
-
-IUSE="${IUSE_VIDEO_CARDS} libkms manpages +udev"
-REQUIRED_USE="video_cards_exynos? ( libkms )"
-RESTRICT="test" # see bug #236845
-
-RDEPEND="dev-libs/libpthread-stubs
-	udev? ( virtual/udev )
-	video_cards_amdgpu? ( dev-util/cunit )
-	video_cards_intel? ( >=x11-libs/libpciaccess-0.10 )
-	!<x11-libs/libdrm-tests-2.4.58-r3
-"
-
-DEPEND="${RDEPEND}"
-
-XORG_EAUTORECONF=yes
-
-src_prepare() {
-	epatch "${FILESDIR}"/Add-header-for-Rockchip-DRM-userspace.patch
-	epatch "${FILESDIR}"/Add-header-for-Mediatek-DRM-userspace.patch
-	epatch "${FILESDIR}"/Add-Evdi-module-userspace-api-file.patch
-	epatch "${FILESDIR}"/Add-Rockchip-AFBC-modifier.patch
-	epatch "${FILESDIR}"/Add-back-VENDOR_NV-name.patch
-	epatch "${FILESDIR}"/CHROMIUM-add-resource-info-header.patch
-	epatch "${FILESDIR}"/FROMLIST-Add-drmModeGetFB2.patch
-	epatch "${FILESDIR}"/intel-sync-i915_pciids.h-with-kernel.patch
-	epatch "${FILESDIR}"/new-intel-sync-i915_pciids.h-with-kernel.patch
-
-	xorg-2_src_prepare
-}
-
-src_configure() {
-	XORG_CONFIGURE_OPTIONS=(
-		--enable-install-test-programs
-		$(use_enable video_cards_amdgpu amdgpu)
-		$(use_enable video_cards_exynos exynos-experimental-api)
-		$(use_enable video_cards_freedreno freedreno)
-		$(use_enable video_cards_intel intel)
-		$(use_enable video_cards_nouveau nouveau)
-		$(use_enable video_cards_omap omap-experimental-api)
-		$(use_enable video_cards_radeon radeon)
-		$(use_enable video_cards_vc4 vc4)
-		$(use_enable video_cards_vmware vmwgfx)
-		$(use_enable libkms)
-		$(use_enable manpages)
-		$(use_enable udev)
-		--disable-cairo-tests
-	)
-	xorg-2_src_configure
-}
diff --git a/x11-libs/libdrm/libdrm-2.4.105-r2.ebuild b/x11-libs/libdrm/libdrm-2.4.105-r2.ebuild
new file mode 120000
index 0000000..a4443fee
--- /dev/null
+++ b/x11-libs/libdrm/libdrm-2.4.105-r2.ebuild
@@ -0,0 +1 @@
+libdrm-9999.ebuild
\ No newline at end of file
diff --git a/x11-libs/libdrm/libdrm-9999.ebuild b/x11-libs/libdrm/libdrm-9999.ebuild
index 2c071d3..109ad94 100644
--- a/x11-libs/libdrm/libdrm-9999.ebuild
+++ b/x11-libs/libdrm/libdrm-9999.ebuild
@@ -1,12 +1,17 @@
 # Copyright 1999-2013 Gentoo Foundation
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI="5"
+EAPI="7"
 EGIT_REPO_URI="https://gitlab.freedesktop.org/mesa/drm.git"
+if [[ ${PV} != *9999* ]]; then
+	CROS_WORKON_COMMIT="40f73d0b0b3936ccadc693edc25aad70c1225766"
+	CROS_WORKON_TREE="7d7f7823d7a6c217122b4402ed8c8b77bdec4952"
+fi
 CROS_WORKON_PROJECT="chromiumos/third_party/libdrm"
+CROS_WORKON_EGIT_BRANCH="upstream/master"
 CROS_WORKON_MANUAL_UPREV="1"
 
-inherit xorg-2 cros-workon
+inherit meson cros-workon
 
 DESCRIPTION="X.Org libdrm library"
 HOMEPAGE="http://dri.freedesktop.org/"
@@ -17,7 +22,11 @@
 # the Xorg copyright holders and allows license generation to pick them up.
 LICENSE="|| ( MIT X )"
 SLOT="0"
-KEYWORDS="~*"
+if [[ ${PV} = *9999* ]]; then
+	KEYWORDS="~*"
+else
+	KEYWORDS="*"
+fi
 VIDEO_CARDS="amdgpu exynos freedreno intel nouveau omap radeon vc4 vmware"
 for card in ${VIDEO_CARDS}; do
 	IUSE_VIDEO_CARDS+=" video_cards_${card}"
@@ -36,40 +45,35 @@
 
 DEPEND="${RDEPEND}"
 
-XORG_EAUTORECONF=yes
-
 src_prepare() {
-	epatch "${FILESDIR}"/Add-header-for-Rockchip-DRM-userspace.patch
-	epatch "${FILESDIR}"/Add-header-for-Mediatek-DRM-userspace.patch
-	epatch "${FILESDIR}"/Add-Evdi-module-userspace-api-file.patch
-	epatch "${FILESDIR}"/Add-Rockchip-AFBC-modifier.patch
-	epatch "${FILESDIR}"/Add-back-VENDOR_NV-name.patch
-	epatch "${FILESDIR}"/CHROMIUM-add-resource-info-header.patch
-	epatch "${FILESDIR}"/FROMLIST-Add-drmModeGetFB2.patch
-	epatch "${FILESDIR}"/intel-sync-i915_pciids.h-with-kernel.patch
-	epatch "${FILESDIR}"/new-intel-sync-i915_pciids.h-with-kernel.patch
+	eapply "${FILESDIR}"/Add-header-for-Rockchip-DRM-userspace.patch
+	eapply "${FILESDIR}"/Add-header-for-Mediatek-DRM-userspace.patch
+	eapply "${FILESDIR}"/Add-Evdi-module-userspace-api-file.patch
+	eapply "${FILESDIR}"/Add-Rockchip-AFBC-modifier.patch
+	eapply "${FILESDIR}"/Add-back-VENDOR_NV-name.patch
+	eapply "${FILESDIR}"/CHROMIUM-add-resource-info-header.patch
 
-	xorg-2_src_prepare
+	eapply_user
 }
 
 src_configure() {
 	cros_optimize_package_for_speed
 
-	XORG_CONFIGURE_OPTIONS=(
-		--enable-install-test-programs
-		$(use_enable video_cards_amdgpu amdgpu)
-		$(use_enable video_cards_exynos exynos-experimental-api)
-		$(use_enable video_cards_freedreno freedreno)
-		$(use_enable video_cards_intel intel)
-		$(use_enable video_cards_nouveau nouveau)
-		$(use_enable video_cards_omap omap-experimental-api)
-		$(use_enable video_cards_radeon radeon)
-		$(use_enable video_cards_vc4 vc4)
-		$(use_enable video_cards_vmware vmwgfx)
-		$(use_enable libkms)
-		$(use_enable manpages)
-		$(use_enable udev)
-		--disable-cairo-tests
+	local emesonargs=(
+		-Dinstall-test-programs=true
+		$(meson_use video_cards_amdgpu amdgpu)
+		$(meson_use video_cards_exynos exynos-experimental-api)
+		$(meson_use video_cards_freedreno freedreno)
+		$(meson_use video_cards_intel intel)
+		$(meson_use video_cards_nouveau nouveau)
+		$(meson_use video_cards_omap omap-experimental-api)
+		$(meson_use video_cards_radeon radeon)
+		$(meson_use video_cards_vc4 vc4)
+		$(meson_use video_cards_vmware vmwgfx)
+		$(meson_use libkms)
+		$(meson_use manpages man-pages)
+		$(meson_use udev)
+		-Dcairo-tests=false
 	)
-	xorg-2_src_configure
+	meson_src_configure
 }
diff --git a/x11-libs/libpciaccess/files/nodevport-3.patch b/x11-libs/libpciaccess/files/nodevport-3.patch
new file mode 100644
index 0000000..ce35ee8
--- /dev/null
+++ b/x11-libs/libpciaccess/files/nodevport-3.patch
@@ -0,0 +1,27 @@
+From 1d71669e577f5f2eb02542851696d3bcb722a80b Mon Sep 17 00:00:00 2001
+From: Adam Jackson <ajax@redhat.com>
+Date: Thu, 11 Jul 2019 12:56:40 -0400
+Subject: [PATCH] linux: Don't try to include <sys/io.h> on arm
+
+It no longer exists in newer glibc, and didn't work like you'd have
+hoped on anything but strongarm anyway.
+---
+ src/linux_sysfs.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/linux_sysfs.c b/src/linux_sysfs.c
+index e74ad72c9859..d02264412f05 100644
+--- a/src/linux_sysfs.c
++++ b/src/linux_sysfs.c
+@@ -50,7 +50,7 @@
+ #include <dirent.h>
+ #include <errno.h>
+ 
+-#if defined(__i386__) || defined(__x86_64__) || defined(__arm__)
++#if defined(__i386__) || defined(__x86_64__)
+ #include <sys/io.h>
+ #else
+ #define inb(x) -1
+-- 
+2.32.0.272.g935e593368-goog
+
diff --git a/x11-libs/libpciaccess/libpciaccess-0.12.902-r2.ebuild b/x11-libs/libpciaccess/libpciaccess-0.12.902-r2.ebuild
deleted file mode 100644
index 369d7bf..0000000
--- a/x11-libs/libpciaccess/libpciaccess-0.12.902-r2.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright 1999-2011 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/x11-libs/libpciaccess/libpciaccess-0.12.902.ebuild,v 1.1 2011/12/19 01:39:15 chithanh Exp $
-
-EAPI=4
-inherit xorg-2
-
-DESCRIPTION="Library providing generic access to the PCI bus and devices"
-KEYWORDS="*"
-IUSE="minimal zlib"
-
-DEPEND="!<x11-base/xorg-server-1.5
-	zlib? ( sys-libs/zlib )"
-RDEPEND="${DEPEND}"
-
-PATCHES=(
-	"${FILESDIR}/nodevport.patch"
-	"${FILESDIR}/nodevport-2.patch"
-)
-
-pkg_setup() {
-	xorg-2_pkg_setup
-
-	XORG_CONFIGURE_OPTIONS=(
-		"$(use_with zlib)"
-		"--with-pciids-path=${EPREFIX}/usr/share/misc"
-	)
-}
-
-src_install() {
-	xorg-2_src_install
-	if ! use minimal; then
-		dodir /usr/bin || die
-		${BASH} "${AUTOTOOLS_BUILD_DIR:-${S}}/libtool" --mode=install "$(type -P install)" -c "${AUTOTOOLS_BUILD_DIR:-${S}}/scanpci/scanpci" "${ED}"/usr/bin || die
-	fi
-}
diff --git a/x11-libs/libpciaccess/libpciaccess-0.12.902-r3.ebuild b/x11-libs/libpciaccess/libpciaccess-0.12.902-r3.ebuild
new file mode 100644
index 0000000..6b1e892
--- /dev/null
+++ b/x11-libs/libpciaccess/libpciaccess-0.12.902-r3.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-libs/libpciaccess/libpciaccess-0.12.902.ebuild,v 1.1 2011/12/19 01:39:15 chithanh Exp $
+
+EAPI=4
+inherit xorg-2
+
+DESCRIPTION="Library providing generic access to the PCI bus and devices"
+KEYWORDS="*"
+IUSE="minimal zlib"
+
+DEPEND="!<x11-base/xorg-server-1.5
+	zlib? ( sys-libs/zlib )"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+	"${FILESDIR}/nodevport.patch"
+	"${FILESDIR}/nodevport-2.patch"
+	"${FILESDIR}/nodevport-3.patch"
+)
+
+pkg_setup() {
+	xorg-2_pkg_setup
+
+	XORG_CONFIGURE_OPTIONS=(
+		"$(use_with zlib)"
+		"--with-pciids-path=${EPREFIX}/usr/share/misc"
+	)
+}
+
+src_install() {
+	xorg-2_src_install
+	if ! use minimal; then
+		dodir /usr/bin || die
+		${BASH} "${AUTOTOOLS_BUILD_DIR:-${S}}/libtool" --mode=install "$(type -P install)" -c "${AUTOTOOLS_BUILD_DIR:-${S}}/scanpci/scanpci" "${ED}"/usr/bin || die
+	fi
+}
diff --git a/x11-libs/libva-intel-driver/files/Disable-VP8-decoder-on-BDW.patch b/x11-libs/libva-intel-driver/files/Disable-VP8-decoder-on-BDW.patch
deleted file mode 100644
index 2676381..0000000
--- a/x11-libs/libva-intel-driver/files/Disable-VP8-decoder-on-BDW.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 71a4da94f964e5b5be084bd80e2db3aa6ec2fb62 Mon Sep 17 00:00:00 2001
-From: Pawel Osciak <posciak@chromium.org>
-Date: Thu, 30 Nov 2017 13:39:02 +0900
-Subject: [PATCH] Disable VP8 decoder on BDW.
-
-Disable VP8 decoder on BDW to workaround GPU hangs on older kernels.
----
- src/i965_device_info.c | 1 -
- 1 file changed, 1 deletion(-)
-
-diff --git a/src/i965_device_info.c b/src/i965_device_info.c
-index a6adcf5..07243fe 100644
---- a/src/i965_device_info.c
-+++ b/src/i965_device_info.c
-@@ -265,7 +265,6 @@ static struct hw_codec_info bdw_hw_codec_info = {
-     .has_tiled_surface = 1,
-     .has_di_motion_adptive = 1,
-     .has_di_motion_compensated = 1,
--    .has_vp8_decoding = 1,
-     .has_h264_mvc_encoding = 1,
- 
-     .h264_brc_mode = VA_RC_CQP | VA_RC_CBR | VA_RC_VBR,
--- 
-2.29.2.729.g45daf8777d-goog
-
diff --git a/x11-libs/libva-intel-driver/libva-intel-driver-2.4.1-r7.ebuild b/x11-libs/libva-intel-driver/libva-intel-driver-2.4.1-r9.ebuild
similarity index 100%
rename from x11-libs/libva-intel-driver/libva-intel-driver-2.4.1-r7.ebuild
rename to x11-libs/libva-intel-driver/libva-intel-driver-2.4.1-r9.ebuild
diff --git a/x11-libs/libva-intel-driver/libva-intel-driver-2.4.1.ebuild b/x11-libs/libva-intel-driver/libva-intel-driver-2.4.1.ebuild
index aed5ce0..08d061b 100644
--- a/x11-libs/libva-intel-driver/libva-intel-driver-2.4.1.ebuild
+++ b/x11-libs/libva-intel-driver/libva-intel-driver-2.4.1.ebuild
@@ -1,64 +1,50 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2020 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
-EAPI=5
+EAPI=7
 
-SCM=""
-if [ "${PV%9999}" != "${PV}" ] ; then # Live ebuild
-	SCM=git-r3
-	EGIT_BRANCH=master
-	EGIT_REPO_URI="https://github.com/intel/intel-vaapi-driver"
-fi
+MY_PN="intel-vaapi-driver"
 
-AUTOTOOLS_AUTORECONF="yes"
-inherit autotools-multilib ${SCM}
+inherit autotools multilib-minimal
 
 DESCRIPTION="HW video decode support for Intel integrated graphics"
 HOMEPAGE="https://github.com/intel/intel-vaapi-driver"
-if [ "${PV%9999}" != "${PV}" ] ; then # Live ebuild
-	SRC_URI=""
-	S="${WORKDIR}/${PN}"
-else
-	SRC_URI="https://github.com/intel/intel-vaapi-driver/releases/download/${PV}/intel-vaapi-driver-${PV}.tar.bz2"
-	S="${WORKDIR}/intel-vaapi-driver-${PV}"
-fi
-
+SRC_URI="https://github.com/intel/${MY_PN}/releases/download/${PV}/${MY_PN}-${PV}.tar.bz2"
+S="${WORKDIR}/${MY_PN}-${PV}"
+KEYWORDS="*"
 LICENSE="MIT"
 SLOT="0"
-if [ "${PV%9999}" = "${PV}" ] ; then
-	KEYWORDS="*"
-else
-	KEYWORDS=""
-fi
 IUSE="hybrid_codec"
+RESTRICT="test" # No tests
 
-RDEPEND=">=x11-libs/libva-2.4.0
-	>=x11-libs/libdrm-2.4.52[video_cards_intel]
-	hybrid_codec? ( media-libs/intel-hybrid-driver )"
-
-DEPEND="${RDEPEND}
-	virtual/pkgconfig"
-
-DOCS=( AUTHORS NEWS README )
-AUTOTOOLS_PRUNE_LIBTOOL_FILES="all"
+RDEPEND="
+	>=x11-libs/libdrm-2.4.52[video_cards_intel,${MULTILIB_USEDEP}]
+	>=x11-libs/libva-2.4.0:=[${MULTILIB_USEDEP}]
+	hybrid_codec? ( media-libs/intel-hybrid-driver[${MULTILIB_USEDEP}] )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="virtual/pkgconfig"
 
 src_prepare() {
-	epatch "${FILESDIR}"/no_explicit_sync_in_va_sync_surface.patch
-	epatch "${FILESDIR}"/Avoid-GPU-crash-with-malformed-streams.patch
-	epatch "${FILESDIR}"/set_multisample_state_for_gen6.patch
-	epatch "${FILESDIR}"/Disable-VP8-decoder-on-BDW.patch
-	epatch "${FILESDIR}"/0001-Remove-blitter-usage-from-driver.patch
-	epatch "${FILESDIR}"/Handle-the-odd-resolution.patch
-
+	eapply "${FILESDIR}"/no_explicit_sync_in_va_sync_surface.patch
+	eapply "${FILESDIR}"/Avoid-GPU-crash-with-malformed-streams.patch
+	eapply "${FILESDIR}"/set_multisample_state_for_gen6.patch
+	eapply "${FILESDIR}"/0001-Remove-blitter-usage-from-driver.patch
+	eapply "${FILESDIR}"/Handle-the-odd-resolution.patch
+	eapply_user
 	sed -e 's/intel-gen4asm/\0diSaBlEd/g' -i configure.ac || die
-	autotools-multilib_src_prepare
+	eautoreconf
 }
 
 multilib_src_configure() {
-	local myeconfargs=(
+	local myconf=(
 		--disable-wayland
 		--disable-x11
 		"$(use_enable hybrid_codec)"
 	)
-	autotools-utils_src_configure
+	ECONF_SOURCE="${S}" econf "${myconf[@]}"
+}
+
+multilib_src_install_all() {
+	find "${D}" -name "*.la" -delete || die
 }
diff --git a/x11-libs/libva-intel-driver/metadata.xml b/x11-libs/libva-intel-driver/metadata.xml
new file mode 100644
index 0000000..7949b9c
--- /dev/null
+++ b/x11-libs/libva-intel-driver/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+  <maintainer type="person">
+    <email>aballier@gentoo.org</email>
+    <name>Alexis Ballier</name>
+  </maintainer>
+  <upstream>
+    <remote-id type="github">intel/intel-vaapi-driver</remote-id>
+  </upstream>
+</pkgmetadata>
diff --git a/x11-libs/libva-intel-media-driver/Manifest b/x11-libs/libva-intel-media-driver/Manifest
index 3ad61a2..29def13 100644
--- a/x11-libs/libva-intel-media-driver/Manifest
+++ b/x11-libs/libva-intel-media-driver/Manifest
@@ -1 +1 @@
-DIST intel-media-20.3.0.tar.gz 22478010 BLAKE2B 5dc531804d779d44bcecb90b0d4590e29ef380fa064a98ddc1c6cdcf0c691bdb62b38ff36a33f1a43c39582d0efa41c55c7ad1b6e9cc533dc19f70f414f42d5f SHA512 59fa8c5db268491f0ae41de85d6e65ad7811f89dbc787f63b7378138952ba742b480a6b3cd21758c8d3b73fec2ab8d9854d8dda1a3d7f1b07e81df0c1c745f78
+DIST intel-media-21.1.3.tar.gz 22507169 BLAKE2B 68962db57d6f4c11e50b5d44584adf0458d08a118234a091aa55734885ee9fab6449658a8736c4a23233be38b58311953492482c3d9b258dd2cf8008cf363f20 SHA512 a5a4c26d86191138245e0cc62304aeeccfb6627b04310e4b1d35cc2050b909d9b856b6176d868562336dd6342f93b1909b46fb481eb353ef02cc188eea5da121
diff --git a/x11-libs/libva-intel-media-driver/files/0001-Disable-IPC-usage.patch b/x11-libs/libva-intel-media-driver/files/0001-Disable-IPC-usage.patch
index e078e90..d840abd 100644
--- a/x11-libs/libva-intel-media-driver/files/0001-Disable-IPC-usage.patch
+++ b/x11-libs/libva-intel-media-driver/files/0001-Disable-IPC-usage.patch
@@ -1,7 +1,7 @@
-From 916244e4bb3c43b91a848c15e3e3bca30f549822 Mon Sep 17 00:00:00 2001
+From 59aab46720785e76b73f19f282a486d79071eb0e Mon Sep 17 00:00:00 2001
 From: Yu Kang Ku <yu.kang.ku@intel.com>
 Date: Thu, 8 Oct 2020 09:41:24 -0700
-Subject: [PATCH] Disable IPC usage
+Subject: [PATCH 1/2] Disable IPC usage
 
 This allows iHD to be used within the Chrome OS sandbox.
 
@@ -13,7 +13,7 @@
  2 files changed, 4 insertions(+)
 
 diff --git a/media_driver/linux/common/os/mos_context_specific.cpp b/media_driver/linux/common/os/mos_context_specific.cpp
-index 0b00e407..babdbdea 100644
+index f2fd437e7e83..21d161d893f5 100644
 --- a/media_driver/linux/common/os/mos_context_specific.cpp
 +++ b/media_driver/linux/common/os/mos_context_specific.cpp
 @@ -32,6 +32,8 @@
@@ -26,7 +26,7 @@
  #include <sys/ipc.h>
  #include <sys/shm.h>
 diff --git a/media_driver/linux/common/os/mos_os_specific.c b/media_driver/linux/common/os/mos_os_specific.c
-index 6228d06d..882b5b50 100644
+index b6251e7c27bf..d1c05079b84b 100644
 --- a/media_driver/linux/common/os/mos_os_specific.c
 +++ b/media_driver/linux/common/os/mos_os_specific.c
 @@ -50,6 +50,8 @@
@@ -39,5 +39,5 @@
  #include <sys/ipc.h>
  #include <sys/shm.h>
 -- 
-2.17.1
+2.29.0
 
diff --git a/x11-libs/libva-intel-media-driver/files/0002-ENCODE-change-slice-header-prefix-for-AVC-Vdenc.patch b/x11-libs/libva-intel-media-driver/files/0002-ENCODE-change-slice-header-prefix-for-AVC-Vdenc.patch
deleted file mode 100644
index 6336622..0000000
--- a/x11-libs/libva-intel-media-driver/files/0002-ENCODE-change-slice-header-prefix-for-AVC-Vdenc.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From d1622d02a15c56a169948ff3f7ed2e66d33b7076 Mon Sep 17 00:00:00 2001
-From: Abhishek Kumar <abhishek4.kumar@intel.com>
-Date: Fri, 12 Jun 2020 11:29:18 +0530
-Subject: [PATCH] [ENCODE] change slice header prefix for AVC Vdenc
-
-Currently in case of Vdenc slice header prefix is 0x000001 (3bytes)
-and in case of VME it is 0x00000001 (4 bytes) , so change slice header
-prefix to 4 bytes for vdenc(same as i965 driver).
----
- .../agnostic/common/codec/hal/codechal_encode_avc_base.cpp     | 3 +--
- 1 file changed, 1 insertion(+), 2 deletions(-)
-
-diff --git a/media_driver/agnostic/common/codec/hal/codechal_encode_avc_base.cpp b/media_driver/agnostic/common/codec/hal/codechal_encode_avc_base.cpp
-index b3e5d007..47e40beb 100644
---- a/media_driver/agnostic/common/codec/hal/codechal_encode_avc_base.cpp
-+++ b/media_driver/agnostic/common/codec/hal/codechal_encode_avc_base.cpp
-@@ -1762,8 +1762,7 @@ MOS_STATUS CodecHalAvcEncode_PackSliceHeader(
- 
-     // zero byte shall exist when the byte stream NAL unit syntax structure contains the first
-     // NAL unit of an access unit in decoding order, as specified by subclause 7.4.1.2.3.
--    // VDEnc Slice header packing handled by PAK does not need the 0 byte inserted
--    if (params->UserFlags.bDisableAcceleratorHeaderPacking && (!params->bVdencEnabled))
-+    if (params->UserFlags.bDisableAcceleratorHeaderPacking)
-     {
-         *bsbuffer->pCurrent = 0;
-         bsbuffer->pCurrent++;
--- 
-2.17.1
-
diff --git a/x11-libs/libva-intel-media-driver/files/0002-change-slice-header-prefix-for-AVC-Vdenc.patch b/x11-libs/libva-intel-media-driver/files/0002-change-slice-header-prefix-for-AVC-Vdenc.patch
new file mode 100644
index 0000000..149bf3b
--- /dev/null
+++ b/x11-libs/libva-intel-media-driver/files/0002-change-slice-header-prefix-for-AVC-Vdenc.patch
@@ -0,0 +1,29 @@
+From c88a628295a4458820bbb793cbc361a90971f38f Mon Sep 17 00:00:00 2001
+From: Abhishek Kumar <abhishek4.kumar@intel.com>
+Date: Fri, 12 Jun 2020 11:29:18 +0530
+Subject: [PATCH 2/2] change slice header prefix for AVC Vdenc
+
+Currently in case of Vdenc slice header prefix is 0x000001 (3bytes)
+and in case of VME it is 0x00000001 (4 bytes) , so change slice header
+prefix to 4 bytes for vdenc(same as i965 driver).
+---
+ .../agnostic/common/codec/hal/codechal_encode_avc_base.cpp     | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/media_driver/agnostic/common/codec/hal/codechal_encode_avc_base.cpp b/media_driver/agnostic/common/codec/hal/codechal_encode_avc_base.cpp
+index c80773a51c4f..7f6170a7d8c1 100644
+--- a/media_driver/agnostic/common/codec/hal/codechal_encode_avc_base.cpp
++++ b/media_driver/agnostic/common/codec/hal/codechal_encode_avc_base.cpp
+@@ -1762,8 +1762,7 @@ MOS_STATUS CodecHalAvcEncode_PackSliceHeader(
+ 
+     // zero byte shall exist when the byte stream NAL unit syntax structure contains the first
+     // NAL unit of an access unit in decoding order, as specified by subclause 7.4.1.2.3.
+-    // VDEnc Slice header packing handled by PAK does not need the 0 byte inserted
+-    if (params->UserFlags.bDisableAcceleratorHeaderPacking && (!params->bVdencEnabled))
++    if (params->UserFlags.bDisableAcceleratorHeaderPacking)
+     {
+         *bsbuffer->pCurrent = 0;
+         bsbuffer->pCurrent++;
+-- 
+2.29.0
+
diff --git a/x11-libs/libva-intel-media-driver/files/0003-Explicitly-disable-media-compression.patch b/x11-libs/libva-intel-media-driver/files/0003-Explicitly-disable-media-compression.patch
deleted file mode 100644
index 50ef270..0000000
--- a/x11-libs/libva-intel-media-driver/files/0003-Explicitly-disable-media-compression.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-From bf7d70eaf2bf737cb82b331f3b8141dc098e69d9 Mon Sep 17 00:00:00 2001
-From: Yu Kang Ku <yu.kang.ku@intel.com>
-Date: Thu, 8 Oct 2020 10:00:23 -0700
-Subject: [PATCH] Explicitly disable media compression
-
-Disable media compression until decompression is available.
----
- media_driver/linux/gen12/ddi/media_sku_wa_g12.cpp  | 3 +++
- media_driver/linux/gen12/ddi/media_sysinfo_g12.cpp | 3 +++
- 2 files changed, 6 insertions(+)
-
-diff --git a/media_driver/linux/gen12/ddi/media_sku_wa_g12.cpp b/media_driver/linux/gen12/ddi/media_sku_wa_g12.cpp
-index 66549bbc..f7de4263 100644
---- a/media_driver/linux/gen12/ddi/media_sku_wa_g12.cpp
-+++ b/media_driver/linux/gen12/ddi/media_sku_wa_g12.cpp
-@@ -249,6 +249,9 @@ static bool InitTglMediaSku(struct GfxDeviceInfo *devInfo,
-         disableMMC = true;
-     }
- 
-+    // Explicitly disable media compression until decompression is available
-+    disableMMC = true;
-+
-     if (disableMMC)
-     {
-         MEDIA_WR_SKU(skuTable, FtrE2ECompression, 0);
-diff --git a/media_driver/linux/gen12/ddi/media_sysinfo_g12.cpp b/media_driver/linux/gen12/ddi/media_sysinfo_g12.cpp
-index d5b4164c..1ab16095 100644
---- a/media_driver/linux/gen12/ddi/media_sysinfo_g12.cpp
-+++ b/media_driver/linux/gen12/ddi/media_sysinfo_g12.cpp
-@@ -134,6 +134,9 @@ static bool InitTglShadowSku(struct GfxDeviceInfo *devInfo,
-         disableMMC = true;
-     }
- 
-+    // Explicitly disable media compression until decompression is available
-+    disableMMC = true;
-+
-     if (disableMMC)
-     {
-         skuTable->FtrE2ECompression = 0;
--- 
-2.17.1
-
diff --git a/x11-libs/libva-intel-media-driver/files/0003-Stop-using-mos_bo_subdata.patch b/x11-libs/libva-intel-media-driver/files/0003-Stop-using-mos_bo_subdata.patch
new file mode 100644
index 0000000..c099fb3
--- /dev/null
+++ b/x11-libs/libva-intel-media-driver/files/0003-Stop-using-mos_bo_subdata.patch
@@ -0,0 +1,71 @@
+From 77b5f37181243bb2b471419335e3a8dbae27bc25 Mon Sep 17 00:00:00 2001
+From: Jason Ekstrand <jason@jlekstrand.net>
+Date: Thu, 11 Mar 2021 13:59:12 -0600
+Subject: [PATCH 3/3] Stop using mos_bo_subdata
+
+This maps to the kernel's PWRITE ioctl but there's no real advantage in
+using it since the first thing the kernel does is i915_gem_object_wait().
+We may as well do the wait in userspace and just write to it through a
+map.  We're attempting to remove PWRITE support from i915 for future
+platforms and this prepares the media driver for the move.
+---
+ .../codec/ddi/media_ddi_decode_base.cpp       |  9 +++-----
+ .../common/codec/ddi/media_ddi_decode_vp8.cpp | 21 ++++++-------------
+ 2 files changed, 9 insertions(+), 21 deletions(-)
+
+diff --git a/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp b/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp
+index 5807066d90a8..3b8307d3ece4 100644
+--- a/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp
++++ b/media_driver/linux/common/codec/ddi/media_ddi_decode_base.cpp
+@@ -1096,13 +1096,10 @@ VAStatus DdiMediaDecode::CreateBuffer(
+ 
+     if( true == buf->bCFlushReq )
+     {
+-        mos_bo_subdata(buf->bo, buf->uiOffset, size * numElements, data);
+-    }
+-    else
+-    {
+-        status = MOS_SecureMemcpy((void *)(buf->pData + buf->uiOffset), size * numElements, data, size * numElements);
+-        DDI_CHK_CONDITION((status != MOS_STATUS_SUCCESS), "DDI:Failed to copy buffer data!", VA_STATUS_ERROR_OPERATION_FAILED);
++        mos_bo_wait_rendering(buf->bo);
+     }
++    status = MOS_SecureMemcpy((void *)(buf->pData + buf->uiOffset), size * numElements, data, size * numElements);
++    DDI_CHK_CONDITION((status != MOS_STATUS_SUCCESS), "DDI:Failed to copy buffer data!", VA_STATUS_ERROR_OPERATION_FAILED);
+     return va;
+ 
+ CleanUpandReturn:
+diff --git a/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp b/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp
+index 02c677ae2add..72891d584334 100644
+--- a/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp
++++ b/media_driver/linux/common/codec/ddi/media_ddi_decode_vp8.cpp
+@@ -264,21 +264,12 @@ VAStatus DdiDecodeVP8::ParseProbabilityData(
+ {
+     if (vp8ProbDataBuff->pData && probInputBuf)
+     {
+-        MOS_LINUX_BO *boDes = nullptr;
+-        boDes               = vp8ProbDataBuff->bo;
+-
+-        mos_bo_wait_rendering(boDes);
+-        if (0 == mos_bo_subdata(boDes,
+-                     0,
+-                     sizeof(CODECHAL_VP8_COEFFPROB_DATA),
+-                     probInputBuf))
+-        {
+-            return VA_STATUS_SUCCESS;
+-        }
+-        else
+-        {
+-            return VA_STATUS_ERROR_INVALID_PARAMETER;
+-        }
++        mos_bo_wait_rendering(vp8ProbDataBuff->bo);
++        MOS_SecureMemcpy(vp8ProbDataBuff->pData,
++                         sizeof(CODECHAL_VP8_COEFFPROB_DATA),
++                         probInputBuf,
++                         sizeof(CODECHAL_VP8_COEFFPROB_DATA));
++        return VA_STATUS_SUCCESS;
+     }
+     else
+     {
+-- 
+2.29.0
+
diff --git a/x11-libs/libva-intel-media-driver/files/0004-Decode-Driver-will-derive-width-height_in_sbs_minus_.patch b/x11-libs/libva-intel-media-driver/files/0004-Decode-Driver-will-derive-width-height_in_sbs_minus_.patch
deleted file mode 100644
index 2a2559e..0000000
--- a/x11-libs/libva-intel-media-driver/files/0004-Decode-Driver-will-derive-width-height_in_sbs_minus_.patch
+++ /dev/null
@@ -1,94 +0,0 @@
-From ec5a5a95686536ff08e9d8b62530985ccd95fd7c Mon Sep 17 00:00:00 2001
-From: LiZefu <zefu.li@intel.com>
-Date: Thu, 15 Oct 2020 16:36:54 +0800
-Subject: [PATCH] Driver will derive width/height_in_sbs_minus_1 when
- uniform_tile_spacing_flag=1 for AV1d
-
-[Decode] Driver will derive width/height_in_sbs_minus_1 when uniform_tile_spacing_flag=1 for AV1d
-Driver should derive these params per libva definition
-
-Change-Id: I8023d7378bb61bba0b6821513f11a60ab2f9de9b
----
- .../codec/ddi/media_ddi_decode_av1_g12.cpp    | 49 ++++++++++++++++---
- 1 file changed, 42 insertions(+), 7 deletions(-)
-
-diff --git a/media_driver/linux/gen12/codec/ddi/media_ddi_decode_av1_g12.cpp b/media_driver/linux/gen12/codec/ddi/media_ddi_decode_av1_g12.cpp
-index 6b9a5c4f3fe2..8244644a2e26 100644
---- a/media_driver/linux/gen12/codec/ddi/media_ddi_decode_av1_g12.cpp
-+++ b/media_driver/linux/gen12/codec/ddi/media_ddi_decode_av1_g12.cpp
-@@ -94,6 +94,12 @@ VAStatus DdiDecodeAV1::ParseTileParams(
-     return VA_STATUS_SUCCESS;
- }
- 
-+static uint32_t CalcAv1TileLog2(uint32_t blockSize, uint32_t target)
-+{
-+    uint32_t k;
-+    for (k = 0; (blockSize << k) < target; k++) {}
-+    return k;
-+}
- 
- /**
-  * @brief AV1 Picture paramter parser
-@@ -337,12 +343,6 @@ VAStatus DdiDecodeAV1::ParsePicParams(
- 
-     //Frame level lossless flag is set to true when all segments are lossless
-     picAV1Params->m_losslessMode = allLossless;
--    picAV1Params->m_tileCols     = picParam->tile_cols;
--    MOS_SecureMemcpy(picAV1Params->m_widthInSbsMinus1, 63 * sizeof(uint16_t),
--                     picParam->width_in_sbs_minus_1,   63 * sizeof(uint16_t));
--    picAV1Params->m_tileRows     = picParam->tile_rows;
--    MOS_SecureMemcpy(picAV1Params->m_heightInSbsMinus1, 63 * sizeof(uint16_t),
--                     picParam->height_in_sbs_minus_1,   63 * sizeof(uint16_t));
- 
-     picAV1Params->m_tileCountMinus1 = picParam->tile_count_minus_1;
-     picAV1Params->m_contextUpdateTileId = picParam->context_update_tile_id;
-@@ -407,10 +407,45 @@ VAStatus DdiDecodeAV1::ParsePicParams(
- 
-     picAV1Params->m_frameHeightMinus1 = picParam->frame_height_minus1;
- 
-+    picAV1Params->m_tileCols     = picParam->tile_cols;
-+    picAV1Params->m_tileRows     = picParam->tile_rows;
-+
-+    if (picParam->pic_info_fields.bits.uniform_tile_spacing_flag)
-+    {
-+        const uint32_t maxMibSizeLog2   = 5;
-+        const uint32_t minMibSizeLog2   = 4;
-+        const uint32_t miSizeLog2       = 2;
-+        int32_t mibSizeLog2 = picParam->seq_info_fields.fields.use_128x128_superblock ? maxMibSizeLog2 : minMibSizeLog2;
-+        int32_t miCols = MOS_ALIGN_CEIL(MOS_ALIGN_CEIL(picAV1Params->m_frameWidthMinus1 + 1, 8) >> miSizeLog2, 1 << mibSizeLog2);
-+        int32_t miRows = MOS_ALIGN_CEIL(MOS_ALIGN_CEIL(picAV1Params->m_frameHeightMinus1 + 1, 8) >> miSizeLog2, 1 << mibSizeLog2);
-+        int32_t sbCols = miCols >> mibSizeLog2;
-+        int32_t sbRows = miRows >> mibSizeLog2;
-+
-+        for (auto i = 0; i < picParam->tile_cols - 1; i++)
-+        {
-+            uint32_t tileColsLog2 = CalcAv1TileLog2(1, picParam->tile_cols);
-+            uint32_t sizeSb = MOS_ALIGN_CEIL(sbCols, 1 << tileColsLog2);
-+            sizeSb >>= tileColsLog2;
-+            picParam->width_in_sbs_minus_1[i] = sizeSb - 1;
-+        }
-+
-+        for (auto i = 0; i < picParam->tile_rows - 1; i++)
-+        {
-+            uint32_t tileRowsLog2 = CalcAv1TileLog2(1, picParam->tile_rows);
-+            uint32_t sizeSb = MOS_ALIGN_CEIL(sbRows, 1 << tileRowsLog2);
-+            sizeSb >>= tileRowsLog2;
-+            picParam->height_in_sbs_minus_1[i] = sizeSb - 1;
-+        }
-+    }
-+
-+    MOS_SecureMemcpy(picAV1Params->m_widthInSbsMinus1, 63 * sizeof(uint16_t),
-+                     picParam->width_in_sbs_minus_1,   63 * sizeof(uint16_t));
-+    MOS_SecureMemcpy(picAV1Params->m_heightInSbsMinus1, 63 * sizeof(uint16_t),
-+                     picParam->height_in_sbs_minus_1,   63 * sizeof(uint16_t));
-+
-     return VA_STATUS_SUCCESS;
- }
- 
--
- VAStatus DdiDecodeAV1::SetDecodeParams()
- {
-      DDI_CHK_RET(DdiMediaDecode::SetDecodeParams(),"SetDecodeParams failed!");
--- 
-2.25.1
-
diff --git a/x11-libs/libva-intel-media-driver/files/0004-set-the-picture-flag-to-be-invalid-frame-if-the-ref-.patch b/x11-libs/libva-intel-media-driver/files/0004-set-the-picture-flag-to-be-invalid-frame-if-the-ref-.patch
new file mode 100644
index 0000000..1a13a69
--- /dev/null
+++ b/x11-libs/libva-intel-media-driver/files/0004-set-the-picture-flag-to-be-invalid-frame-if-the-ref-.patch
@@ -0,0 +1,28 @@
+From f14fd05d1a010b23e62ceb6e1dfff7908afde55d Mon Sep 17 00:00:00 2001
+From: XinfengZhang <carl.zhang@intel.com>
+Date: Tue, 15 Jun 2021 18:07:24 -0400
+Subject: [PATCH] set the picture flag to be invalid frame if the ref frame is
+ invalid
+
+fixes #1189
+
+Signed-off-by: XinfengZhang <carl.zhang@intel.com>
+---
+ media_driver/linux/common/codec/ddi/media_ddi_encode_avc.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/media_driver/linux/common/codec/ddi/media_ddi_encode_avc.cpp b/media_driver/linux/common/codec/ddi/media_ddi_encode_avc.cpp
+index f398467e..02453ab0 100644
+--- a/media_driver/linux/common/codec/ddi/media_ddi_encode_avc.cpp
++++ b/media_driver/linux/common/codec/ddi/media_ddi_encode_avc.cpp
+@@ -2201,6 +2201,7 @@ void DdiEncodeAvc::GetSlcRefIdx(CODEC_PICTURE *picReference, CODEC_PICTURE *slcR
+         if (i == CODEC_MAX_NUM_REF_FRAME)
+         {
+             slcReference->FrameIdx = CODEC_AVC_NUM_UNCOMPRESSED_SURFACE;
++            slcReference->PicFlags = PICTURE_INVALID;
+         }
+     }
+ }
+-- 
+2.25.1
+
diff --git a/x11-libs/libva-intel-media-driver/files/0005-Decode-Add-robustness-check-for-superresScaleDenomin.patch b/x11-libs/libva-intel-media-driver/files/0005-Decode-Add-robustness-check-for-superresScaleDenomin.patch
deleted file mode 100644
index 50d7ad5d..0000000
--- a/x11-libs/libva-intel-media-driver/files/0005-Decode-Add-robustness-check-for-superresScaleDenomin.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 87473995b4628e7dde4715db7cd86d1cb559972f Mon Sep 17 00:00:00 2001
-From: ArseniyObolenskiy <arseniy.obolenskiy@intel.com>
-Date: Fri, 9 Oct 2020 17:07:39 +0800
-Subject: [PATCH] Add robustness check for superresScaleDenominator in
- ParsePicParams
-
-[Decode] Add robustness check for superresScaleDenominator in ParsePicParams
-
-Change-Id: Iaf9f08694149a606c3e4530ce8a1ba77a86478a7
----
- .../linux/gen12/codec/ddi/media_ddi_decode_av1_g12.cpp         | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/media_driver/linux/gen12/codec/ddi/media_ddi_decode_av1_g12.cpp b/media_driver/linux/gen12/codec/ddi/media_ddi_decode_av1_g12.cpp
-index 8244644a2e26..4d169954857c 100644
---- a/media_driver/linux/gen12/codec/ddi/media_ddi_decode_av1_g12.cpp
-+++ b/media_driver/linux/gen12/codec/ddi/media_ddi_decode_av1_g12.cpp
-@@ -396,6 +396,9 @@ VAStatus DdiDecodeAV1::ParsePicParams(
-     // calculate down scaled width
-     if (picAV1Params->m_picInfoFlags.m_fields.m_useSuperres &&
-         (picAV1Params->m_superresScaleDenominator != av1ScaleNumerator)) {
-+        if (picAV1Params->m_superresScaleDenominator == 0) {
-+            return VA_STATUS_ERROR_INVALID_PARAMETER;
-+        }
-         uint32_t dsWidth = ((picParam->frame_width_minus1 + 1 ) *
-                             av1ScaleNumerator + picAV1Params->m_superresScaleDenominator / 2) /
-             picAV1Params->m_superresScaleDenominator;
--- 
-2.25.1
-
diff --git a/x11-libs/libva-intel-media-driver/files/0006-Encode-Fix-for-flags-in-PAK_OBJECT_INSERT-command.patch b/x11-libs/libva-intel-media-driver/files/0006-Encode-Fix-for-flags-in-PAK_OBJECT_INSERT-command.patch
deleted file mode 100644
index a69b6fb..0000000
--- a/x11-libs/libva-intel-media-driver/files/0006-Encode-Fix-for-flags-in-PAK_OBJECT_INSERT-command.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-From 3a36cb9ce094dbab76ff6239959d5c73c4c20ea1 Mon Sep 17 00:00:00 2001
-From: AlexeiLeonenko <alexei.leonenko@intel.com>
-Date: Wed, 25 Nov 2020 22:45:34 +0800
-Subject: [PATCH] Fix for flags in PAK_OBJECT_INSERT command
-
-If app_data is split into several payloads for PAK_OBJECT_INSERT
-command only last one should be marked as last header/end of slice.
----
- .../agnostic/common/codec/hal/codechal_encode_jpeg.cpp        | 4 ++--
- .../agnostic/gen11/codec/hal/codechal_encode_jpeg_g11.cpp     | 3 ++-
- 2 files changed, 4 insertions(+), 3 deletions(-)
-
-diff --git a/media_driver/agnostic/common/codec/hal/codechal_encode_jpeg.cpp b/media_driver/agnostic/common/codec/hal/codechal_encode_jpeg.cpp
-index 031c43e692ac..5c94f7376221 100644
---- a/media_driver/agnostic/common/codec/hal/codechal_encode_jpeg.cpp
-+++ b/media_driver/agnostic/common/codec/hal/codechal_encode_jpeg.cpp
-@@ -966,8 +966,8 @@ MOS_STATUS CodechalEncodeJpegState::ExecuteSliceLevel()
-                 }
-                 pakInsertObjectParams.dwOffset                      = 0;
-                 pakInsertObjectParams.dwBitSize                     = pakInsertObjectParams.pBsBuffer->BufferSize;
--                //if full header is included in application data, it will be the last insert headers
--                if((appDataCmdSizeResidue == 0) && m_fullHeaderInAppData)
-+                //if full header is included in application data, it will be the last header to insert and last chunk of it should be marked with EndOfSlice
-+                if((appDataCmdSizeResidue == 0) && m_fullHeaderInAppData && (i == numAppDataCmdsNeeded - 1))
-                 {
-                     pakInsertObjectParams.bLastHeader                   = true;
-                     pakInsertObjectParams.bEndOfSlice                   = true;
-diff --git a/media_driver/agnostic/gen11/codec/hal/codechal_encode_jpeg_g11.cpp b/media_driver/agnostic/gen11/codec/hal/codechal_encode_jpeg_g11.cpp
-index 6195243deb3d..8a8b63da9819 100644
---- a/media_driver/agnostic/gen11/codec/hal/codechal_encode_jpeg_g11.cpp
-+++ b/media_driver/agnostic/gen11/codec/hal/codechal_encode_jpeg_g11.cpp
-@@ -420,7 +420,8 @@ MOS_STATUS CodechalEncodeJpegStateG11::ExecuteSliceLevel()
-                 }
-                 pakInsertObjectParams.dwOffset = 0;
-                 pakInsertObjectParams.dwBitSize = pakInsertObjectParams.pBsBuffer->BufferSize;
--                if((appDataCmdSizeResidue == 0) && m_fullHeaderInAppData)
-+                //if full header is included in application data, it will be the last header to insert and last chunk of it should be marked with EndOfSlice
-+                if ((appDataCmdSizeResidue == 0) && m_fullHeaderInAppData && (i == numAppDataCmdsNeeded - 1))
-                 {
-                     pakInsertObjectParams.bLastHeader = true;
-                     pakInsertObjectParams.bEndOfSlice = true;
--- 
-2.25.1
-
diff --git a/x11-libs/libva-intel-media-driver/libva-intel-media-driver-20.3.0-r7.ebuild b/x11-libs/libva-intel-media-driver/libva-intel-media-driver-20.3.0-r7.ebuild
deleted file mode 120000
index 265000e..0000000
--- a/x11-libs/libva-intel-media-driver/libva-intel-media-driver-20.3.0-r7.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-libva-intel-media-driver-20.3.0.ebuild
\ No newline at end of file
diff --git a/x11-libs/libva-intel-media-driver/libva-intel-media-driver-20.3.0.ebuild b/x11-libs/libva-intel-media-driver/libva-intel-media-driver-20.3.0.ebuild
deleted file mode 100644
index 8c81954..0000000
--- a/x11-libs/libva-intel-media-driver/libva-intel-media-driver-20.3.0.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit cmake-utils
-
-SRC_URI="https://github.com/intel/media-driver/archive/intel-media-${PV}.tar.gz"
-S="${WORKDIR}/media-driver-intel-media-${PV}"
-KEYWORDS="*"
-DESCRIPTION="Intel Media Driver for VAAPI (iHD)"
-HOMEPAGE="https://github.com/intel/media-driver"
-
-LICENSE="MIT BSD"
-SLOT="0"
-IUSE="ihd_cmrtlib"
-
-DEPEND=">=media-libs/gmmlib-20.3.2
-	>=x11-libs/libva-2.9.0
-"
-RDEPEND="${DEPEND}"
-
-PATCHES=(
-	"${FILESDIR}"/0001-Disable-IPC-usage.patch
-	"${FILESDIR}"/0002-ENCODE-change-slice-header-prefix-for-AVC-Vdenc.patch
-	"${FILESDIR}"/0003-Explicitly-disable-media-compression.patch
-	"${FILESDIR}"/0004-Decode-Driver-will-derive-width-height_in_sbs_minus_.patch
-	"${FILESDIR}"/0005-Decode-Add-robustness-check-for-superresScaleDenomin.patch
-	"${FILESDIR}"/0006-Encode-Fix-for-flags-in-PAK_OBJECT_INSERT-command.patch
-)
-
-src_configure() {
-	local mycmakeargs=(
-		-DMEDIA_RUN_TEST_SUITE=OFF
-		-DBUILD_CMRTLIB="$(usex ihd_cmrtlib ON OFF)"
-		-DCMAKE_DISABLE_FIND_PACKAGE_X11=TRUE
-	)
-
-	cmake-utils_src_configure
-}
diff --git a/x11-libs/libva-intel-media-driver/libva-intel-media-driver-21.1.3-r5.ebuild b/x11-libs/libva-intel-media-driver/libva-intel-media-driver-21.1.3-r5.ebuild
new file mode 120000
index 0000000..d24f936
--- /dev/null
+++ b/x11-libs/libva-intel-media-driver/libva-intel-media-driver-21.1.3-r5.ebuild
@@ -0,0 +1 @@
+libva-intel-media-driver-21.1.3.ebuild
\ No newline at end of file
diff --git a/x11-libs/libva-intel-media-driver/libva-intel-media-driver-21.1.3.ebuild b/x11-libs/libva-intel-media-driver/libva-intel-media-driver-21.1.3.ebuild
new file mode 100644
index 0000000..56083b4
--- /dev/null
+++ b/x11-libs/libva-intel-media-driver/libva-intel-media-driver-21.1.3.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+RESTRICT="nomirror"
+
+inherit cmake
+
+SRC_URI="https://github.com/intel/media-driver/archive/intel-media-${PV}.tar.gz"
+S="${WORKDIR}/media-driver-intel-media-${PV}"
+KEYWORDS="*"
+DESCRIPTION="Intel Media Driver for VAAPI (iHD)"
+HOMEPAGE="https://github.com/intel/media-driver"
+
+LICENSE="MIT BSD"
+SLOT="0"
+IUSE="ihd_cmrtlib"
+
+DEPEND=">=media-libs/gmmlib-21.1.1
+	>=x11-libs/libva-2.11.0
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+	"${FILESDIR}"/0001-Disable-IPC-usage.patch
+	"${FILESDIR}"/0002-change-slice-header-prefix-for-AVC-Vdenc.patch
+	"${FILESDIR}"/0003-Stop-using-mos_bo_subdata.patch
+	"${FILESDIR}"/0004-set-the-picture-flag-to-be-invalid-frame-if-the-ref-.patch
+)
+
+src_configure() {
+	local mycmakeargs=(
+		-DMEDIA_RUN_TEST_SUITE=OFF
+		-DBUILD_TYPE=Release
+		-DPLATFORM=linux
+		-DBUILD_CMRTLIB="$(usex ihd_cmrtlib ON OFF)"
+		-DCMAKE_DISABLE_FIND_PACKAGE_X11=TRUE
+	)
+
+	cmake_src_configure
+}
diff --git a/x11-libs/libva-intel-media-driver/metadata.xml b/x11-libs/libva-intel-media-driver/metadata.xml
index 80088c2..c2bbfa2 100644
--- a/x11-libs/libva-intel-media-driver/metadata.xml
+++ b/x11-libs/libva-intel-media-driver/metadata.xml
@@ -1,7 +1,11 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
 <pkgmetadata>
-<maintainer type="project">
-	<email>media-video@gentoo.org</email>
-</maintainer>
+	<maintainer type="project">
+		<email>media-video@gentoo.org</email>
+	</maintainer>
+	<maintainer type="person">
+		<email>k2k@narod.ru</email>
+		<name>Evgeny Grin</name>
+	</maintainer>
 </pkgmetadata>
diff --git a/x11-libs/libva/Manifest b/x11-libs/libva/Manifest
index 94fae3a..cf79390 100644
--- a/x11-libs/libva/Manifest
+++ b/x11-libs/libva/Manifest
@@ -1 +1 @@
-DIST libva-2.9.0.tar.bz2 481556 BLAKE2B 5509f3d7df11a11602331a3b6bb78d3a5d3dfbeff024eaa77594918c49cd48ec9e8ee017d8ac7b4aa1dbd3252a23caecce9a10a8a9e12ef4c483a8a34e028b20 SHA512 496358b73cd525d8c9dc1fcf3dbf992ec997ecc8f7be31f0e226ded173aecf29d8d4b60cc7cc5ee7beac538061659841145f67f449a03a04236a6ee7ae6f8323
+DIST libva-2.11.0.tar.gz 252204 BLAKE2B b56c47296493a9ecce7758661386d98d9a47082d8f16ab3b352f84591291e85aefc336a209433a901f7c4be1f54570221e9955666b22125740cc060542099394 SHA512 592df16bca06c93d252d27b2105032f020b0ca30f7937533918a497f385ec59b8a1e19c5d89047c197ddc1aab056128ab114b9ec29de3e968cb96bfa8d85f02a
diff --git a/x11-libs/libva/files/0001-Protected-content-patches.patch b/x11-libs/libva/files/0001-Protected-content-patches.patch
deleted file mode 100644
index 3f673ab..0000000
--- a/x11-libs/libva/files/0001-Protected-content-patches.patch
+++ /dev/null
@@ -1,930 +0,0 @@
-From ca71e59446e970c1c5fc1b1d3634cd81a1a52896 Mon Sep 17 00:00:00 2001
-From: Jeffrey Kardatzke <jkardatzke@google.com>
-Date: Wed, 11 Nov 2020 12:26:03 -0800
-Subject: [PATCH] Protected content patches
-
-Rebased onto 2.9.0 from upstream pull request:
-https://github.com/intel/libva/pull/457
-
----
- doc/Makefile.am      |   1 +
- doc/meson.build      |   1 +
- va/Makefile.am       |   2 +
- va/meson.build       |   2 +
- va/va.c              | 145 ++++++++++++++++
- va/va.h              |  44 ++++-
- va/va_backend.h      |   9 +-
- va/va_backend_prot.h |  88 ++++++++++
- va/va_prot.h         | 404 +++++++++++++++++++++++++++++++++++++++++++
- va/va_str.c          |   6 +
- 10 files changed, 700 insertions(+), 2 deletions(-)
- create mode 100644 va/va_backend_prot.h
- create mode 100644 va/va_prot.h
-
-diff --git a/doc/Makefile.am b/doc/Makefile.am
-index 85c012c..2ff3323 100644
---- a/doc/Makefile.am
-+++ b/doc/Makefile.am
-@@ -44,6 +44,7 @@ VA_HEADER_FILES = \
- 	$(VA_HEADER_DIR)/va_dec_jpeg.h	\
- 	$(VA_HEADER_DIR)/va_dec_vp8.h	\
- 	$(VA_HEADER_DIR)/va_dec_vp9.h	\
-+	$(VA_HEADER_DIR)/va_prot.h	\
- 	$(VA_HEADER_DIR)/va_vpp.h	\
- 	$(NULL)
- 
-diff --git a/doc/meson.build b/doc/meson.build
-index 3c1b8f9..bc15e2b 100644
---- a/doc/meson.build
-+++ b/doc/meson.build
-@@ -16,6 +16,7 @@ libva_headers_doc = [
-   'va_dec_jpeg.h',
-   'va_dec_vp8.h',
-   'va_dec_vp9.h',
-+  'va_prot.h',
-   'va_vpp.h'
- ]
- 
-diff --git a/va/Makefile.am b/va/Makefile.am
-index e67c588..4a655e6 100644
---- a/va/Makefile.am
-+++ b/va/Makefile.am
-@@ -40,6 +40,7 @@ libva_source_c = \
- libva_source_h = \
- 	va.h			\
- 	va_backend.h		\
-+	va_backend_prot.h	\
- 	va_backend_vpp.h	\
- 	va_compat.h		\
- 	va_dec_av1.h		\
-@@ -61,6 +62,7 @@ libva_source_h = \
- 	va_str.h		\
- 	va_tpi.h		\
- 	va_version.h		\
-+	va_prot.h		\
- 	va_vpp.h		\
- 	$(NULL)
- 
-diff --git a/va/meson.build b/va/meson.build
-index 45707b6..dcf2220 100644
---- a/va/meson.build
-+++ b/va/meson.build
-@@ -20,6 +20,7 @@ libva_sources = [
- libva_headers = [
-   'va.h',
-   'va_backend.h',
-+  'va_backend_prot.h',
-   'va_backend_vpp.h',
-   'va_compat.h',
-   'va_dec_hevc.h',
-@@ -40,6 +41,7 @@ libva_headers = [
-   'va_enc_vp9.h',
-   'va_str.h',
-   'va_tpi.h',
-+  'va_prot.h',
-   'va_vpp.h',
-   version_file,
- ]
-diff --git a/va/va.c b/va/va.c
-index 4f06a34..15436e7 100644
---- a/va/va.c
-+++ b/va/va.c
-@@ -26,6 +26,7 @@
- #include "sysdeps.h"
- #include "va.h"
- #include "va_backend.h"
-+#include "va_backend_prot.h"
- #include "va_backend_vpp.h"
- #include "va_internal.h"
- #include "va_trace.h"
-@@ -495,6 +496,7 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
-             } else {
-                 struct VADriverVTable *vtable = ctx->vtable;
-                 struct VADriverVTableVPP *vtable_vpp = ctx->vtable_vpp;
-+                struct VADriverVTableProt *vtable_prot = ctx->vtable_prot;
- 
-                 vaStatus = VA_STATUS_SUCCESS;
-                 if (!vtable) {
-@@ -513,6 +515,15 @@ static VAStatus va_openDriver(VADisplay dpy, char *driver_name)
-                 }
-                 ctx->vtable_vpp = vtable_vpp;
- 
-+                if (!vtable_prot) {
-+                    vtable_prot = calloc(1, sizeof(*vtable_prot));
-+                    if (vtable_prot)
-+                        vtable_prot->version = VA_DRIVER_VTABLE_PROT_VERSION;
-+                    else
-+                        vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
-+                }
-+                ctx->vtable_prot = vtable_prot;
-+
-                 if (init_func && VA_STATUS_SUCCESS == vaStatus)
-                     vaStatus = (*init_func)(ctx);
- 
-@@ -778,6 +789,8 @@ VAStatus vaTerminate (
-   old_ctx->vtable = NULL;
-   free(old_ctx->vtable_vpp);
-   old_ctx->vtable_vpp = NULL;
-+  free(old_ctx->vtable_prot);
-+  old_ctx->vtable_prot = NULL;
- 
-   if (old_ctx->override_driver_name) {
-       free(old_ctx->override_driver_name);
-@@ -2286,3 +2299,135 @@ vaQueryVideoProcPipelineCaps(
-     VA_TRACE_RET(dpy, status);
-     return status;
- }
-+
-+/* Protection */
-+#define VA_PROT_INIT_CONTEXT(ctx, dpy) do {              \
-+        CHECK_DISPLAY(dpy);                             \
-+        ctx = CTX(dpy);                                 \
-+        if (!ctx)                                       \
-+            return VA_STATUS_ERROR_INVALID_DISPLAY;     \
-+    } while (0)
-+
-+#define VA_PROT_INVOKE(dpy, func, args) do {             \
-+        if (!ctx->vtable_prot->va##func)                 \
-+            return VA_STATUS_ERROR_UNIMPLEMENTED;       \
-+        status = ctx->vtable_prot->va##func args;        \
-+    } while (0)
-+
-+VAStatus vaCreateProtectedSession(
-+    VADisplay dpy,
-+    VAConfigID config_id,
-+    VAProtectedSessionID *protected_session
-+)
-+{
-+    VADriverContextP ctx;
-+    VAStatus status;
-+
-+    VA_PROT_INIT_CONTEXT(ctx, dpy);
-+    VA_PROT_INVOKE(
-+        ctx,
-+        CreateProtectedSession,
-+        (ctx, config_id, protected_session)
-+    );
-+    VA_TRACE_RET(dpy, status);
-+
-+    return status;
-+}
-+
-+VAStatus vaDestroyProtectedSession(
-+    VADisplay dpy,
-+    VAProtectedSessionID protected_session
-+)
-+{
-+    VADriverContextP ctx;
-+    VAStatus status;
-+
-+    VA_PROT_INIT_CONTEXT(ctx, dpy);
-+    VA_PROT_INVOKE(
-+        ctx,
-+        DestroyProtectedSession,
-+        (ctx, protected_session)
-+    );
-+    VA_TRACE_RET(dpy, status);
-+
-+    return status;
-+}
-+
-+VAStatus vaAttachProtectedSession(
-+    VADisplay dpy,
-+    VAContextID context,
-+    VAProtectedSessionID protected_session
-+)
-+{
-+    VADriverContextP ctx;
-+    VAStatus status;
-+
-+    VA_PROT_INIT_CONTEXT(ctx, dpy);
-+    VA_PROT_INVOKE(
-+        ctx,
-+        AttachProtectedSession,
-+        (ctx, context, protected_session)
-+    );
-+    VA_TRACE_RET(dpy, status);
-+
-+    return status;
-+}
-+
-+VAStatus vaDetachProtectedSession(
-+    VADisplay dpy,
-+    VAContextID context
-+)
-+{
-+    VADriverContextP ctx;
-+    VAStatus status;
-+
-+    VA_PROT_INIT_CONTEXT(ctx, dpy);
-+    VA_PROT_INVOKE(
-+        ctx,
-+        DetachProtectedSession,
-+        (ctx, context)
-+    );
-+    VA_TRACE_RET(dpy, status);
-+
-+    return status;
-+}
-+
-+VAStatus vaProtectedSessionExecute(
-+    VADisplay dpy,
-+    VAProtectedSessionID protected_session,
-+    VABufferID data
-+)
-+{
-+    VADriverContextP ctx;
-+    VAStatus status;
-+
-+    VA_PROT_INIT_CONTEXT(ctx, dpy);
-+    VA_PROT_INVOKE(
-+        ctx,
-+        ProtectedSessionExecute,
-+        (ctx, protected_session, data)
-+    );
-+    VA_TRACE_RET(dpy, status);
-+
-+    return status;
-+}
-+
-+VAStatus vaProtectedSessionHwUpdate(
-+    VADisplay dpy,
-+    VAProtectedSessionID protected_session,
-+    VABufferID data
-+)
-+{
-+    VADriverContextP ctx;
-+    VAStatus status;
-+
-+    VA_PROT_INIT_CONTEXT(ctx, dpy);
-+    VA_PROT_INVOKE(
-+        ctx,
-+        ProtectedSessionHwUpdate,
-+        (ctx, protected_session, data)
-+    );
-+    VA_TRACE_RET(dpy, status);
-+
-+    return status;
-+}
-diff --git a/va/va.h b/va/va.h
-index 6577cf5..2525dec 100644
---- a/va/va.h
-+++ b/va/va.h
-@@ -126,6 +126,7 @@ extern "C" {
-  *      - \ref api_dec_vp9
-  *      - \ref api_dec_av1
-  * - \ref api_vpp
-+ * - \ref api_prot
-  * - FEI (H264, HEVC)
-  * 	- \ref api_fei
-  * 	- \ref api_fei_h264
-@@ -405,7 +406,8 @@ typedef enum
-     VAProfileHEVCSccMain444             = 31,
-     VAProfileAV1Profile0                = 32,
-     VAProfileAV1Profile1                = 33,
--    VAProfileHEVCSccMain444_10          = 34
-+    VAProfileHEVCSccMain444_10          = 34,
-+    VAProfileProtected                  = 35
- } VAProfile;
- 
- /**
-@@ -464,6 +466,21 @@ typedef enum
-      * and VAStatsMVBufferType) are needed for this entry point.
-      **/
-     VAEntrypointStats       = 12,
-+    /**
-+     * \brief VAEntrypointProtectedTEEComm
-+     * 
-+     * A function for communicating with TEE (Trusted Execution Environment) directly if application does not
-+     * want to operate on protected display link.
-+     * 
-+     **/
-+    VAEntrypointProtectedTEEComm       = 13,
-+    /**
-+     * \brief VAEntrypointProtectedDisplayLink
-+     *
-+     * A display link protection function for establishing protected display link.
-+     * 
-+     **/
-+    VAEntrypointProtectedDisplayLink   = 14
- } VAEntrypoint;
- 
- /** Currently defined configuration attribute types */
-@@ -794,6 +811,13 @@ typedef enum
-      *  attribute value is \c VAConfigAttribValContextPriority
-      */
-     VAConfigAttribContextPriority       = 41,
-+    /**
-+     * \brief TEE firmware version. Read-only
-+     * This attribute is for TEE firmware version. The value will be an integer.
-+     * [31-16] Major version, [15-0] Minor version.
-+     **/
-+    VAConfigAttribProtectedTeeFwVersion = 42,
-+
-     /**@}*/
-     VAConfigAttribTypeMax
- } VAConfigAttribType;
-@@ -1776,6 +1800,22 @@ typedef enum
-      */
-     VASubsetsParameterBufferType        = 57,
- 
-+    /**
-+     * \brief Protected session execution buffer type
-+     * 
-+     * It's for TEE execution usage (vaProtectedSessionExecute()). The buffer structure is in
-+     * \c VAProtectedSessionExecuteBuffer
-+     */
-+    VAProtectedSessionExecuteBufferType = 58,
-+
-+    /**
-+     * \brief Update protected session status buffer type
-+     * 
-+     * The buffer allows the driver to update IHV specific hardware status of the protected session.
-+     * The buffer structure is in \c VAProtectedSessionHwUpdateBuffer
-+     */
-+    VAProtectedSessionHwUpdateBufferType = 59,
-+
-     VABufferTypeMax
- } VABufferType;
- 
-@@ -2547,6 +2587,7 @@ typedef struct _VAEncMiscParameterCustomRoundingControl
-         uint32_t    value;
-     }   rounding_offset_setting;
- } VAEncMiscParameterCustomRoundingControl;
-+
- /**
-  * There will be cases where the bitstream buffer will not have enough room to hold
-  * the data for the entire slice, and the following flags will be used in the slice
-@@ -4757,6 +4798,7 @@ typedef struct _VAPictureHEVC
- #include <va/va_fei.h>
- #include <va/va_fei_h264.h>
- #include <va/va_vpp.h>
-+#include <va/va_prot.h>
- 
- /**@}*/
- 
-diff --git a/va/va_backend.h b/va/va_backend.h
-index 5ab8f6a..eda1de0 100644
---- a/va/va_backend.h
-+++ b/va/va_backend.h
-@@ -631,7 +631,14 @@ struct VADriverContext
-     void (*info_callback)(VADriverContextP pDriverContext,
-                           const char *message);
- 
--    unsigned long reserved[38];         /* reserve for future add-ins, decrease the subscript accordingly */
-+    /**
-+     * \brief The VA/Protected implementation hooks.
-+     *
-+     * This structure is allocated from libva with calloc().
-+     */
-+    struct VADriverVTableProt *vtable_prot;
-+
-+    unsigned long reserved[37];         /* reserve for future add-ins, decrease the subscript accordingly */
- };
- 
- #define VA_DISPLAY_MAGIC 0x56414430 /* VAD0 */
-diff --git a/va/va_backend_prot.h b/va/va_backend_prot.h
-new file mode 100644
-index 0000000..b89a1b7
---- /dev/null
-+++ b/va/va_backend_prot.h
-@@ -0,0 +1,88 @@
-+/*
-+ * Copyright (c) 2020 Intel Corporation. All Rights Reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sub license, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the
-+ * next paragraph) shall be included in all copies or substantial portions
-+ * of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-+ * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR
-+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+#ifndef VA_BACKEND_PROT_H
-+#define VA_BACKEND_PROT_H
-+
-+#include <va/va_prot.h>
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/** \brief VTable version for VA/PROTECTION hooks. */
-+#define VA_DRIVER_VTABLE_PROT_VERSION 1
-+
-+struct VADriverVTableProt {
-+    unsigned int            version;
-+
-+    VAStatus
-+    (*vaCreateProtectedSession)(
-+        VADriverContextP ctx,
-+        VAConfigID config_id,
-+        VAProtectedSessionID *protected_session
-+    );
-+
-+    VAStatus
-+    (*vaDestroyProtectedSession)(
-+        VADriverContextP ctx,
-+        VAProtectedSessionID protected_session
-+    );
-+
-+    VAStatus
-+    (*vaAttachProtectedSession)(
-+        VADriverContextP ctx,
-+        VAContextID context,
-+        VAProtectedSessionID protected_session
-+    );
-+
-+    VAStatus
-+    (*vaDetachProtectedSession)(
-+        VADriverContextP ctx,
-+        VAContextID context
-+    );
-+
-+    VAStatus
-+    (*vaProtectedSessionExecute)(
-+        VADriverContextP ctx,
-+        VAProtectedSessionID protected_session,
-+        VABufferID buf_id
-+    );
-+
-+    VAStatus
-+    (*vaProtectedSessionHwUpdate)(
-+        VADriverContextP ctx,
-+        VAProtectedSessionID protected_session,
-+        VABufferID buf_id
-+    );
-+
-+    /** \brief Reserved bytes for future use, must be zero */
-+    unsigned long reserved[VA_PADDING_MEDIUM];
-+};
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* VA_BACKEND_PROT_H */
-diff --git a/va/va_prot.h b/va/va_prot.h
-new file mode 100644
-index 0000000..c53ce25
---- /dev/null
-+++ b/va/va_prot.h
-@@ -0,0 +1,404 @@
-+/*
-+ * Copyright (c) 2020 Intel Corporation. All Rights Reserved.
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a
-+ * copy of this software and associated documentation files (the
-+ * "Software"), to deal in the Software without restriction, including
-+ * without limitation the rights to use, copy, modify, merge, publish,
-+ * distribute, sub license, and/or sell copies of the Software, and to
-+ * permit persons to whom the Software is furnished to do so, subject to
-+ * the following conditions:
-+ *
-+ * The above copyright notice and this permission notice (including the
-+ * next paragraph) shall be included in all copies or substantial portions
-+ * of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
-+ * IN NO EVENT SHALL INTEL AND/OR ITS SUPPLIERS BE LIABLE FOR
-+ * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-+ */
-+
-+/**
-+ * \file va_prot.h
-+ * \brief Protected Session API.
-+ *
-+ * This file contains the \ref api_prot "Protected Session API".
-+ */
-+
-+#ifndef VA_PROT_H
-+#define VA_PROT_H
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/**
-+ * \defgroup api_prot Protected Session API
-+ *
-+ * @{
-+ *
-+ * The Protected Session API. uses the following paradigm:
-+ * - \ref api_prot_caps
-+ * - \ref api_prot_create
-+ * - \ref api_prot_exec
-+ * - \ref api_prot_update
-+ * - \ref api_prot_attach
-+ *
-+ * \section api_prot_caps Query for capabilities of the protected session
-+ *
-+ * Checking whether specific protected session is supported or not via
-+ * performing with vaQueryConfigEntrypoints() and the profile argument set to
-+ * #VAProfileProtected. If the protected display link is supported, then the
-+ * list of returned entry-points will include #VAEntrypointProtectedDisplayLink.
-+ * If the protected TEE session is supported, then #VAEntrypointProtectedTEEComm
-+ * will be included.
-+ *
-+ * \code
-+ * VAEntrypoint *entrypoints;
-+ * int i, max_num_entrypoints, supportsProtectedDisplayLink = 0;
-+ *
-+ * max_num_entrypoints = vaMaxNumEntrypoints();
-+ * entrypoints = malloc(max_num_entrypoints * sizeof(entrypoints[0]);
-+ * vaQueryConfigEntrypoints(va_dpy, VAProfileProtected, entrypoints,
-+ *     &num_entrypoints);
-+ *
-+ * for (i = 0; i < max_num_entrypoints; i++) {
-+ *     if (entrypoints[i] == VAEntrypointProtectedDisplayLink) {
-+ *         supportsProtectedDisplayLink = 1;
-+ *         break;
-+ *     }
-+ * }
-+ * \endcode
-+ *
-+ * After that, vaGetConfigAttributes() function is used to query the protected
-+ * session capabilities.
-+ *
-+ * \code
-+ * VAConfigAttrib attrib_prot[2];
-+ * VAConfigAttribValProtectedDisplayLink wired;
-+ * VAConfigAttribValProtectedDisplayLink wireless
-+ * attrib_prot[0].type = VAConfigAttribDisplayLinkHdcpWired;
-+ * attrib_prot[1].type = VAConfigAttribDisplayLinkHdcpWireless;
-+ * vaGetConfigAttributes(va_dpy, VAProfileProtected, VAEntrypointProtectedDisplayLink, attrib_prot, 2);
-+ * wired = attrib_prot[0].value;
-+ * VAConfigAttribDisplayLinkHdcpWireless = attrib_prot[0].value;
-+ * if ((wired.bits.session_type & VA_PROTECTED_DISPLAY_LINK_SESSION_TYPE0) == 0) {
-+ *     // not find desired mode
-+ *     assert(0);
-+ * }
-+ * \endcode
-+ *
-+ * \section api_prot_create Create a protected session
-+ *
-+ * A protected session is a session between application and GPU hardware.
-+ * This protected session can be attached to the display. Also with protected session,
-+ * application can do specific TEE execution functionality with TEE inside GPU, but it depends
-+ * on IHV's implementation.
-+ * Before creating a protected session, it needs to create a config first via
-+ * vaCreateConfig(). Then using this config id to create a protected session via
-+ * vaCreateProtectedSession().
-+ *
-+ * The general control flow is demonstrated by the following pseudo-code:
-+ * \code
-+ * // Create config
-+ * VAConfigID config_id;
-+ *
-+ * wired.bits.session_type = VA_PROTECTED_DISPLAY_LINK_SESSION_TYPE0;
-+ * wired.bits.protocol_version = VA_PROTECTED_DISPLAY_LINK_HDCP_VERSION_22;
-+ * attrib_prot[0].value = wired.value;
-+ * va_status = vaCreateConfig(va_dpy, VAProfileProtected, VAEntrypointProtectedDisplayLink, attrib_prot, 1, &config_id);
-+ * CHECK_VASTATUS(va_status, "vaCreateConfig");
-+ * \endcode
-+ *
-+ * Once the config is set up, we can create protected session via vaCreateProtectedSession().
-+ * \code
-+ * // Create a protected session
-+ * VAProtectedSessionID protected_session;
-+ *
-+ * va_status = vaCreateProtectedSession(
-+ *     va_dpy,
-+ *     config_id,
-+ *     &protected_session);
-+ * CHECK_VASTATUS(va_status, "vaCreateProtectedSession");
-+ * \endcode
-+ *
-+ * \section api_prot_exec TEE communication via vaProtectedSessionExecute()
-+ *
-+ * A function for communicating with TEE (Trusted Execution Environment)
-+ * directly . It needs to create a VA buffer first with type
-+ * #VAProtectedSessionExecuteBufferType. It has a function_id to specify which
-+ * function to execute. The following pseudo-code demonstrates getting TEE
-+ * version via vaProtectedSessionExecute() as an example.
-+ * 
-+ * If the protected session is for protected content, we may need to use
-+ * vaProtectedSessionExecute to do handshaking with TEE to retrieve some
-+ * information and this information will be used later in
-+ * vaProtectedSessionHwUpdate().
-+ *
-+ * \code
-+ * uint16_t version = 0xFF;
-+ * VABufferID buffer;
-+ * VAProtectedSessionExecuteBuffer exec_buff = {0};
-+ *
-+ * exec_buff.function_id = GET_TEE_VERSION
-+ * exec_buff.input.data = nullptr;
-+ * exec_buff.input.data_size = 0;
-+ * exec_buff.output.data = &version;
-+ * exec_buff.output.max_data_size = (uint16_t);
-+ * va_status = vaCreateBuffer(
-+ *                 va_dpy,
-+ *                 protected_session,
-+ *                 (VABufferType) VAProtectedSessionExecuteBufferType,
-+ *                 sizeof(exec_buff),
-+ *                 1,
-+ *                 &exec_buff,
-+ *                 &buffer);
-+ *
-+ * va_status = vaProtectedSessionExecute(va_dpy, protected_session, buffer);
-+ *
-+ * vaDestroyBuffer(va_dpy, buffer);
-+ * \endcode
-+ *
-+ * \section api_prot_update Updating protected session status
-+ *
-+ * A function for updating protected session status related to hardware.
-+ * Sometimes the status is in init when protected session created. Then
-+ * information is gathered from TEE via vaProtectedSessionExecute(). After some
-+ * information gathered, we can use the information to update the protected
-+ * session status with vaProtectedSessionHwUpdate().
-+
-+ * For example, if the protected session is for protected content, we will get
-+ * policy blobs from TEE and then pass these infomation with
-+ * vaProtectedSessionHwUpdate to create hardware session.
-+ *
-+ * \code
-+ * INFO *info = &oem_policy_blobs;
-+ * VABufferID buffer;
-+ * VAProtectedSessionHwUpdateBuffer update_buff = {0};
-+ *
-+ * update_buff.input.data = info;
-+ * update_buff.input.data_size = sizeof(info);
-+ * va_status = vaCreateBuffer(
-+ *                 va_dpy,
-+ *                 protected_session,
-+ *                 (VABufferType) VAProtectedSessionHwUpdateBufferType,
-+ *                 sizeof(update_buff),
-+ *                 1,
-+ *                 &update_buff,
-+ *                 &buffer);
-+ *
-+ * va_status = vaProtectedSessionHwUpdate(va_dpy, protected_session, buffer);
-+ *
-+ * vaDestroyBuffer(va_dpy, buffer);
-+ * \endcode
-+ *
-+ * \section api_prot_attach Attach/Detach to enable/disable protection
-+ *
-+ * After hardware session is created, we can attach the protected session to
-+ * the decode/encode/vp context to enable decryption/encryption.
-+ *
-+ * We can attach/detach at frame level.
-+ *
-+ * \code
-+ * foreach (iteration) {
-+ *     if (frame_encrypted) {
-+ *         vaAttachProtectedSession(va_dpy, decode_ctx, protected_session);
-+ *     }
-+ *     vaBeginPicture(va_dpy, decode_ctx, surface);
-+ *     ...
-+ *     vaRenderPicture(va_dpy, decode_ctx, &buf_id1, 1);
-+ *     vaRenderPicture(va_dpy, decode_ctx, &buf_id2, 1);
-+ *     ...
-+ *     vaEndPicture(va_dpy, decode_ctx);
-+ *     if (frame_encrypted) {
-+ *         vaDetachProtectedSession(va_dpy, decode_ctx);
-+ *     }
-+ * }
-+ * \endcode
-+ *
-+ * Or we can attach/detach for every frame
-+ * \code
-+ * vaAttachProtectedSession(va_dpy, decode_ctx, protected_session);
-+ * foreach (iteration) {
-+ *     vaBeginPicture(va_dpy, decode_ctx, surface);
-+ *     ...
-+ *     vaRenderPicture(va_dpy, decode_ctx, &buf_id1, 1);
-+ *     vaRenderPicture(va_dpy, decode_ctx, &buf_id2, 1);
-+ *     ...
-+ *     vaEndPicture(va_dpy, decode_ctx);
-+ * }
-+ * vaDetachProtectedSession(va_dpy, decode_ctx);
-+ * \endcode
-+ */
-+
-+/**
-+ * ProtectedSessions and Contexts
-+ *
-+ * Context represents a "virtual" video decode, encode or video processing
-+ * pipeline. Surfaces are render targets for a given context. The data in the
-+ * surfaces are not accessible to the client except if derived image is supported
-+ * and the internal data format of the surface is implementation specific.
-+ *
-+ * A protected session is a session between application and GPU hardware.
-+ * Protected sessions can be attached to display to enable protection in the pipeline.
-+ *
-+ * Both contexts and protected sessions are identified by unique IDs and its
-+ * implementation specific internals are kept opaque to the clients
-+ */
-+typedef VAContextID VAProtectedSessionID;
-+
-+/** \brief Input/Output buffer of VAProtectedSessionExecuteBuffer or VAProtectedSessionHwUpdateBuffer */
-+typedef struct _VAProtectedSessionBuffer
-+{
-+    /*
-+     * This is used when this buffer refer to output buffer. The maximum size of data that the driver
-+     * can return in the output buffer. It is not used for input buffer.
-+     */
-+    uint32_t    max_data_size;
-+    /*
-+     * If it is used for input buffer, it is the size of the input data. If it is used for output buffer,
-+     * it is the returns size of the output data written by the driver.
-+     */
-+    uint32_t    data_size;
-+    /*
-+     * data pointer of this buffer
-+     */
-+    void        *data;
-+    uint32_t    va_reserved[VA_PADDING_LOW];
-+} VAProtectedSessionBuffer;
-+
-+/** \brief Buffer for vaProtectedSessionExecute() */
-+typedef struct _VAProtectedSessionExecuteBuffer {
-+    /** \brief Specify the function to execute. It is IHV's implementation specific */
-+    uint32_t                    function_id;
-+    /** \brief Input buffer */
-+    VAProtectedSessionBuffer    input;
-+    /** \brief Output buffer */
-+    VAProtectedSessionBuffer    output;
-+    /** \brief Return the result of this function. It is IHV's implementation specific */
-+    uint32_t                    status;
-+    uint32_t                    va_reserved[VA_PADDING_LOW];
-+} VAProtectedSessionExecuteBuffer;
-+
-+/** \brief Buffer for vaProtectedSessionHwUpdate() */
-+typedef struct _VAProtectedSessionHwUpdateBuffer {
-+    /** \brief Input buffer */
-+    VAProtectedSessionBuffer    input;
-+    /** \brief Output buffer */
-+    VAProtectedSessionBuffer    output;
-+    /** \brief Return the result of this function. It is IHV's implementation specific */
-+    uint32_t                    status;
-+    uint32_t                    va_reserved[VA_PADDING_LOW];
-+} VAProtectedSessionHwUpdateBuffer;
-+
-+/**
-+ * \brief Create a protected session
-+ *
-+ * Create a protected session
-+ *
-+ * @param[in] dpy                   the VA display
-+ * @param[in] config_id             configuration for the protected session
-+ * @param[out] protected_session    created protected session id upon return
-+ */
-+VAStatus vaCreateProtectedSession(
-+    VADisplay dpy,
-+    VAConfigID config_id,
-+    VAProtectedSessionID *protected_session
-+);
-+
-+/**
-+ * \brief Destroy a protected session
-+ *
-+ * Destroy a protected session
-+ *
-+ * @param[in] dpy                   the VA display
-+ * @param[in] protected_session     protected session to be destroyed
-+ */
-+VAStatus vaDestroyProtectedSession(
-+    VADisplay dpy,
-+    VAProtectedSessionID protected_session
-+);
-+
-+/**
-+ * \brief Attach a protected session to the context
-+ *
-+ * Attach a protected session to the context to enable protected function.
-+ * For example, if the protected session is for protected content, attaching
-+ * will help decode context to do decrypt+decode.
-+ *
-+ * @param[in] dpy                   the VA display
-+ * @param[in] context               the decode/encode/vp context
-+ * @param[in] protected_session     the protected session to attach
-+ */
-+VAStatus vaAttachProtectedSession(
-+    VADisplay dpy,
-+    VAContextID context,
-+    VAProtectedSessionID protected_session
-+);
-+
-+/**
-+ * \brief  Detach the protected session of the context
-+ *
-+ * Detach protected session of the context to disable protected function.
-+ * For example, if the protected session is for protected content, detaching
-+ * will end the decode context to do decrypt.
-+ *
-+ * @param[in] dpy                   the VA display
-+ * @param[in] context               the decode/encode/vp context
-+ */
-+VAStatus vaDetachProtectedSession(
-+    VADisplay dpy,
-+    VAContextID context
-+);
-+
-+/**
-+ * \brief TEE execution for the particular protected session
-+ *
-+ * TEE execution for the particular protected session. For example, if this
-+ * protected session is TEE session, this function is to invoke TEE command.
-+ * If it is protected content session, this function is to invoke specific GPU
-+ * command like decryptionblt.
-+ * The implementation may differ between IHVs.
-+ * This is a synchronous API.
-+ *
-+ * @param[in] dpy                   the VA display
-+ * @param[in] protected_session     the protected session
-+ * @param[in,out] buf_id            the VA buffer
-+ */
-+VAStatus vaProtectedSessionExecute(
-+    VADisplay dpy,
-+    VAProtectedSessionID protected_session,
-+    VABufferID buf_id
-+);
-+
-+/**
-+ * \brief Update protected hardware settings
-+ *
-+ * Allows the application to change protected session status which is related
-+ * to hardware. For example, if the protected session is for protected content,
-+ * this function is used to create the hardware session based on input policy
-+ * blobs.
-+ * The implementation may differ between IHVs.
-+ * This is a synchronous API.
-+ *
-+ * @param[in] dpy                   the VA display
-+ * @param[in] protected_session     the protected session
-+ * @param[in,out] buf_id            the VA buffer
-+ */
-+VAStatus vaProtectedSessionHwUpdate(
-+    VADisplay dpy,
-+    VAProtectedSessionID protected_session,
-+    VABufferID buf_id
-+);
-+
-+/**@}*/
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* VA_PROT_H */
-diff --git a/va/va_str.c b/va/va_str.c
-index 4b631ca..5dfed6e 100644
---- a/va/va_str.c
-+++ b/va/va_str.c
-@@ -64,6 +64,7 @@ const char *vaProfileStr(VAProfile profile)
-     TOSTR(VAProfileAV1Profile0);
-     TOSTR(VAProfileAV1Profile1);
-     TOSTR(VAProfileHEVCSccMain444_10);
-+    TOSTR(VAProfileProtected);
-     default: break;
-     }
-     return "<unknown profile>";
-@@ -84,6 +85,8 @@ const char *vaEntrypointStr(VAEntrypoint entrypoint)
-     TOSTR(VAEntrypointVideoProc);
-     TOSTR(VAEntrypointFEI);
-     TOSTR(VAEntrypointStats);
-+    TOSTR(VAEntrypointProtectedTEEComm);
-+    TOSTR(VAEntrypointProtectedDisplayLink);
-     }
-     return "<unknown entrypoint>";
- }
-@@ -130,6 +133,7 @@ const char *vaConfigAttribTypeStr(VAConfigAttribType configAttribType)
-     TOSTR(VAConfigAttribPredictionDirection);
-     TOSTR(VAConfigAttribMultipleFrame);
-     TOSTR(VAConfigAttribContextPriority);
-+    TOSTR(VAConfigAttribProtectedTeeFwVersion);
-     case VAConfigAttribTypeMax: break;
-     }
-     return "<unknown config attribute type>";
-@@ -179,6 +183,8 @@ const char *vaBufferTypeStr(VABufferType bufferType)
-     TOSTR(VAEncFEICTBCmdBufferType);
-     TOSTR(VAEncFEICURecordBufferType);
-     TOSTR(VASubsetsParameterBufferType);
-+    TOSTR(VAProtectedSessionExecuteBufferType);
-+    TOSTR(VAProtectedSessionHwUpdateBufferType);
-     case VABufferTypeMax: break;
-     }
-     return "<unknown buffer type>";
--- 
-2.29.2.222.g5d2a92d10f8-goog
-
diff --git a/x11-libs/libva/libva-2.11.0-r1.ebuild b/x11-libs/libva/libva-2.11.0-r1.ebuild
new file mode 120000
index 0000000..cebc34e
--- /dev/null
+++ b/x11-libs/libva/libva-2.11.0-r1.ebuild
@@ -0,0 +1 @@
+libva-2.11.0.ebuild
\ No newline at end of file
diff --git a/x11-libs/libva/libva-2.11.0.ebuild b/x11-libs/libva/libva-2.11.0.ebuild
new file mode 100644
index 0000000..6e9a0cc
--- /dev/null
+++ b/x11-libs/libva/libva-2.11.0.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools multilib-minimal
+
+DESCRIPTION="Video Acceleration (VA) API for Linux"
+HOMEPAGE="https://01.org/linuxmedia/vaapi"
+SRC_URI="https://github.com/intel/libva/releases/download/${PV}/${P}.tar.gz"
+KEYWORDS="*"
+LICENSE="MIT"
+SLOT="0/$(ver_cut 1)"
+IUSE="utils beanstalk internal intel_ihd_pavp"
+
+VIDEO_CARDS="i965 amdgpu iHD"
+for x in ${VIDEO_CARDS}; do
+	IUSE+=" video_cards_${x}"
+done
+
+RDEPEND="
+	>=x11-libs/libdrm-2.4.46[${MULTILIB_USEDEP}]
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+	virtual/pkgconfig
+"
+PDEPEND="
+	video_cards_i965? ( >=x11-libs/libva-intel-driver-2.0.0[${MULTILIB_USEDEP}] )
+	video_cards_iHD? (
+		beanstalk? (
+			internal? ( x11-libs/libva-intel-media-driver-pavp[${MULTILIB_USEDEP}] )
+			!internal? (
+				intel_ihd_pavp? ( x11-libs/libva-intel-media-driver-pavp[${MULTILIB_USEDEP}] )
+				!intel_ihd_pavp? ( ~x11-libs/libva-intel-media-driver-21.1.3[${MULTILIB_USEDEP}] )
+			)
+		)
+		!beanstalk? ( ~x11-libs/libva-intel-media-driver-21.1.3[${MULTILIB_USEDEP}] )
+	)
+	video_cards_amdgpu? ( virtual/opengles[${MULTILIB_USEDEP}] )
+	utils? ( media-video/libva-utils )
+"
+
+DOCS=( NEWS )
+
+MULTILIB_WRAPPED_HEADERS=(
+/usr/include/va/va_backend_glx.h
+/usr/include/va/va_x11.h
+/usr/include/va/va_dri2.h
+/usr/include/va/va_dricommon.h
+/usr/include/va/va_glx.h
+)
+
+src_prepare() {
+	default
+	eautoreconf
+}
+
+multilib_src_configure() {
+	local myeconfargs=(
+		--with-drivers-path="${EPREFIX}/usr/$(get_libdir)/va/drivers"
+		--enable-drm
+		--disable-x11
+		--disable-glx
+		--disable-wayland
+		--enable-va-messaging
+	)
+	ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+}
+
+multilib_src_install_all() {
+	default
+	find "${ED}" -type f -name "*.la" -delete || die
+}
diff --git a/x11-libs/libva/libva-2.9.0-r3.ebuild b/x11-libs/libva/libva-2.9.0-r3.ebuild
deleted file mode 120000
index b6c9463..0000000
--- a/x11-libs/libva/libva-2.9.0-r3.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-libva-2.9.0.ebuild
\ No newline at end of file
diff --git a/x11-libs/libva/libva-2.9.0.ebuild b/x11-libs/libva/libva-2.9.0.ebuild
deleted file mode 100644
index 74ffdc6..0000000
--- a/x11-libs/libva/libva-2.9.0.ebuild
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit multilib-minimal
-
-DESCRIPTION="Video Acceleration (VA) API for Linux"
-HOMEPAGE="https://01.org/linuxmedia/vaapi"
-SRC_URI="https://github.com/intel/libva/releases/download/${PV}/${P}.tar.bz2"
-KEYWORDS="*"
-LICENSE="MIT"
-SLOT="0/$(ver_cut 1)"
-IUSE="utils beanstalk internal intel_ihd_pavp"
-
-VIDEO_CARDS="intel amdgpu iHD"
-for x in ${VIDEO_CARDS}; do
-	IUSE+=" video_cards_${x}"
-done
-
-RDEPEND="
-	>=x11-libs/libdrm-2.4.46[${MULTILIB_USEDEP}]
-"
-DEPEND="${RDEPEND}"
-BDEPEND="
-	virtual/pkgconfig
-"
-PDEPEND="
-	video_cards_intel? ( !video_cards_iHD? ( >=x11-libs/libva-intel-driver-2.0.0[${MULTILIB_USEDEP}] ) )
-	video_cards_iHD? (
-		beanstalk? (
-			internal? ( x11-libs/libva-intel-media-driver-pavp[${MULTILIB_USEDEP}] )
-			!internal? (
-				intel_ihd_pavp? ( x11-libs/libva-intel-media-driver-pavp[${MULTILIB_USEDEP}] )
-				!intel_ihd_pavp? ( ~x11-libs/libva-intel-media-driver-20.3.0[${MULTILIB_USEDEP}] )
-			)
-		)
-		!beanstalk? ( ~x11-libs/libva-intel-media-driver-20.3.0[${MULTILIB_USEDEP}] )
-	)
-	video_cards_amdgpu? ( virtual/opengles[${MULTILIB_USEDEP}] )
-	utils? ( media-video/libva-utils )
-"
-
-DOCS=( NEWS )
-
-MULTILIB_WRAPPED_HEADERS=(
-/usr/include/va/va_backend_glx.h
-/usr/include/va/va_x11.h
-/usr/include/va/va_dri2.h
-/usr/include/va/va_dricommon.h
-/usr/include/va/va_glx.h
-)
-
-# TODO(jkardatzke): Remove this patch file when it is merged upstream. If libva
-# needs to be uprev'd before this is removed, please contact me for assistance.
-PATCHES=(
-	"${FILESDIR}"/0001-Protected-content-patches.patch
-)
-
-multilib_src_configure() {
-	local myeconfargs=(
-		--with-drivers-path="${EPREFIX}/usr/$(get_libdir)/va/drivers"
-		--enable-drm
-		--disable-x11
-		--disable-glx
-		--disable-wayland
-	)
-	ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
-}
-
-multilib_src_install_all() {
-	find "${ED}" -type f -name "*.la" -delete || die
-}
diff --git a/x11-libs/libxkbcommon/Manifest b/x11-libs/libxkbcommon/Manifest
index e883fd6..96172c2e 100644
--- a/x11-libs/libxkbcommon/Manifest
+++ b/x11-libs/libxkbcommon/Manifest
@@ -1 +1,3 @@
-DIST libxkbcommon-0.8.2.tar.xz 644040 BLAKE2B c323384308d9730924d6f1cb7ad55fdb3d1a37289f648b981c54dc5997c67c857d33f8ad872fc7646b462ebc97252dca30efe2a2e12d1f1f08a8a1604a5de23f SHA512 b714240ec6120bbe44b5da7a4f89b1c2f24cfd6e5ebbe81e5290d135c8f2e5a68f89ac256b73430a446167345f8db309b35dcf74f3d3840e20897cd91eccc172
+DIST libxkbcommon-1.0.3.tar.xz 432944 BLAKE2B 49dcefcc17cbbfe5623728e9852e700a623e07ad7e6df78c8d7c39784948eb230f9e141d8aaa1de94305cb552244fe54d384abbc8e57f5ec5846915b5ae484e3 SHA512 b05a2db0acd6628427baad1967979a161019dec90a078a926d41f4dfeffb84eab63e627803df1a401e42c8e48953d6c434ce08d7206eae21e890890f29b03d3c
+DIST libxkbcommon-1.1.0.tar.xz 439488 BLAKE2B ddccb9942af5f5d80b750bf8f02289e073615c99bed2a8f7ff1d03ca70bffdbe3b1fe15daef2346819887efe10a308d00f671fc2ae50e0fe33e76e4b748f6d01 SHA512 6137329653ada711abc0e093532627111ab1fb53e6b2b0d05ec4d77709cfc4368f094ebbf68b23c8e9af9a69826351b64466e81c11e6593eafa7e43cd3e7bf75
+DIST libxkbcommon-1.2.1.tar.xz 453172 BLAKE2B f8846befae348287032601f589607a9c899826135b325245824650d77435050fe7e300514cc9f16bd0f3c37693c9f8f08d78aa738c160676019338d72addcd80 SHA512 28de91166a289586a78068b725b904da46fca144936ea0677ec9234c7f0499b9ae321d79c57f15782b63c6e7a37b074fe44648673a2294bbde13110195567e3b
diff --git a/x11-libs/libxkbcommon/libxkbcommon-0.8.2-r2.ebuild b/x11-libs/libxkbcommon/libxkbcommon-0.8.2-r2.ebuild
deleted file mode 120000
index 91a16bf..0000000
--- a/x11-libs/libxkbcommon/libxkbcommon-0.8.2-r2.ebuild
+++ /dev/null
@@ -1 +0,0 @@
-libxkbcommon-0.8.2.ebuild
\ No newline at end of file
diff --git a/x11-libs/libxkbcommon/libxkbcommon-0.8.2.ebuild b/x11-libs/libxkbcommon/libxkbcommon-0.8.2.ebuild
deleted file mode 100644
index 8f1002f..0000000
--- a/x11-libs/libxkbcommon/libxkbcommon-0.8.2.ebuild
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright 1999-2019 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=5
-XORG_MULTILIB="yes"
-
-if [[ ${PV} = *9999* ]]; then
-	GIT_ECLASS="git-r3"
-	EXPERIMENTAL="true"
-	EGIT_REPO_URI="https://github.com/xkbcommon/${PN}"
-else
-	XORG_BASE_INDIVIDUAL_URI=""
-	SRC_URI="https://xkbcommon.org/download/${P}.tar.xz"
-fi
-
-inherit xorg-2 ${GIT_ECLASS}
-
-DESCRIPTION="X.Org xkbcommon library"
-HOMEPAGE="https://xkbcommon.org/"
-KEYWORDS="*"
-IUSE="X doc test"
-
-DEPEND="sys-devel/bison
-	X? (
-		x11-base/xorg-proto
-		>=x11-libs/libxcb-1.10[${MULTILIB_USEDEP},xkb]
-	)
-	doc? ( app-doc/doxygen )"
-RDEPEND="X? ( >=x11-libs/libxcb-1.10[${MULTILIB_USEDEP},xkb] )"
-
-pkg_setup() {
-	XORG_CONFIGURE_OPTIONS=(
-		--with-xkb-config-root="${EPREFIX}/usr/share/X11/xkb"
-		$(use X || use_enable X x11)
-		$(use_with doc doxygen)
-	)
-	xorg-2_pkg_setup
-}
diff --git a/x11-libs/libxkbcommon/libxkbcommon-1.0.3.ebuild b/x11-libs/libxkbcommon/libxkbcommon-1.0.3.ebuild
new file mode 100644
index 0000000..7322616
--- /dev/null
+++ b/x11-libs/libxkbcommon/libxkbcommon-1.0.3.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+if [[ ${PV} = *9999* ]]; then
+	GIT_ECLASS="git-r3"
+	EGIT_REPO_URI="https://github.com/xkbcommon/${PN}"
+else
+	SRC_URI="https://xkbcommon.org/download/${P}.tar.xz"
+	KEYWORDS="*"
+fi
+
+PYTHON_COMPAT=( python3_{6..8} )
+
+inherit meson multilib-minimal ${GIT_ECLASS} python-any-r1
+
+DESCRIPTION="keymap handling library for toolkits and window systems"
+HOMEPAGE="https://xkbcommon.org/ https://github.com/xkbcommon/libxkbcommon/"
+LICENSE="MIT"
+IUSE="X doc static-libs test"
+RESTRICT="!test? ( test )"
+SLOT="0"
+
+BDEPEND="
+	sys-devel/bison
+	doc? ( app-doc/doxygen )
+	test? ( ${PYTHON_DEPS} )
+"
+RDEPEND="
+	X? ( >=x11-libs/libxcb-1.10:=[${MULTILIB_USEDEP},xkb] )
+	dev-libs/libxml2[${MULTILIB_USEDEP}]
+	x11-misc/compose-tables
+"
+DEPEND="${RDEPEND}
+	X? ( x11-base/xorg-proto )"
+
+pkg_setup() {
+	if use test; then
+		python-any-r1_pkg_setup
+	fi
+}
+
+multilib_src_configure() {
+	local emesonargs=(
+		-Ddefault_library="$(usex static-libs both shared)"
+		-Dxkb-config-root="${EPREFIX}/usr/share/X11/xkb"
+		-Denable-wayland=false # Demo applications
+		$(meson_use X enable-x11)
+		$(meson_use doc enable-docs)
+	)
+	meson_src_configure
+}
+
+multilib_src_compile() {
+	meson_src_compile
+}
+
+multilib_src_test() {
+	meson_src_test
+}
+
+multilib_src_install() {
+	meson_src_install
+}
diff --git a/x11-libs/libxkbcommon/metadata.xml b/x11-libs/libxkbcommon/metadata.xml
index 7a7bbf8..720e8a2 100644
--- a/x11-libs/libxkbcommon/metadata.xml
+++ b/x11-libs/libxkbcommon/metadata.xml
@@ -5,4 +5,7 @@
 		<email>x11@gentoo.org</email>
 		<name>X11</name>
 	</maintainer>
+	<upstream>
+		<remote-id type="cpe">cpe:/a:xkbcommon:libxkbcommon</remote-id>
+	</upstream>
 </pkgmetadata>
diff --git a/x11-misc/xkeyboard-config/files/xkeyboard-config-2.27-ch.patch b/x11-misc/xkeyboard-config/files/xkeyboard-config-2.27-ch.patch
new file mode 100644
index 0000000..df82d58
--- /dev/null
+++ b/x11-misc/xkeyboard-config/files/xkeyboard-config-2.27-ch.patch
@@ -0,0 +1,13 @@
+diff --git a/symbols/ch b/symbols/ch
+index b18e7ec..ef180f5 100644
+--- a/symbols/ch
++++ b/symbols/ch
+@@ -5,7 +5,7 @@ xkb_symbols "basic" {
+     name[Group1]= "German (Switzerland)";
+ 
+     key <TLDE> { [    section,     degree                           ] };
+-    key <AE01> { [          1,       plus,          bar, exclamdown ] };
++    key <AE01> { [          1,       plus,    brokenbar, exclamdown ] };
+     key <AE02> { [          2,   quotedbl,           at, oneeighth  ] };
+     key <AE03> { [          3,   asterisk,   numbersign             ] };
+     key <AE04> { [          4,   ccedilla                           ] };
diff --git a/x11-misc/xkeyboard-config/xkeyboard-config-2.27-r10.ebuild b/x11-misc/xkeyboard-config/xkeyboard-config-2.27-r11.ebuild
similarity index 100%
rename from x11-misc/xkeyboard-config/xkeyboard-config-2.27-r10.ebuild
rename to x11-misc/xkeyboard-config/xkeyboard-config-2.27-r11.ebuild
diff --git a/x11-misc/xkeyboard-config/xkeyboard-config-2.27.ebuild b/x11-misc/xkeyboard-config/xkeyboard-config-2.27.ebuild
index 5f2ad1d..8f375f6 100644
--- a/x11-misc/xkeyboard-config/xkeyboard-config-2.27.ebuild
+++ b/x11-misc/xkeyboard-config/xkeyboard-config-2.27.ebuild
@@ -46,6 +46,7 @@
 	"${FILESDIR}"/${P}-hr.patch
 	"${FILESDIR}"/${P}-ee.patch
 	"${FILESDIR}"/${P}-latam.patch
+	"${FILESDIR}"/${P}-ch.patch
 )
 
 src_prepare() {